function Kk(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function yN(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Wk(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){if(this instanceof r){var i=[null];i.push.apply(i,arguments);var o=Function.bind.apply(t,i);return new o}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var Uf={},zk={get exports(){return Uf},set exports(e){Uf=e}},Bg={},g={},Vk={get exports(){return g},set exports(e){g=e}},je={};/** * @license React * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var _v=Symbol.for("react.element"),Gk=Symbol.for("react.portal"),Yk=Symbol.for("react.fragment"),Qk=Symbol.for("react.strict_mode"),Zk=Symbol.for("react.profiler"),Xk=Symbol.for("react.provider"),qk=Symbol.for("react.context"),Jk=Symbol.for("react.forward_ref"),$k=Symbol.for("react.suspense"),e3=Symbol.for("react.memo"),t3=Symbol.for("react.lazy"),HE=Symbol.iterator;function n3(e){return e===null||typeof e!="object"?null:(e=HE&&e[HE]||e["@@iterator"],typeof e=="function"?e:null)}var bN={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},CN=Object.assign,wN={};function $u(e,t,n){this.props=e,this.context=t,this.refs=wN,this.updater=n||bN}$u.prototype.isReactComponent={};$u.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};$u.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function EN(){}EN.prototype=$u.prototype;function wC(e,t,n){this.props=e,this.context=t,this.refs=wN,this.updater=n||bN}var EC=wC.prototype=new EN;EC.constructor=wC;CN(EC,$u.prototype);EC.isPureReactComponent=!0;var KE=Array.isArray,SN=Object.prototype.hasOwnProperty,SC={current:null},IN={key:!0,ref:!0,__self:!0,__source:!0};function DN(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)SN.call(t,r)&&!IN.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,W=O[j];if(0>>1;ji(x,T))Li(V,x)?(O[j]=V,O[L]=T,j=L):(O[j]=x,O[Y]=T,j=Y);else if(Li(V,T))O[j]=V,O[L]=T,j=L;else break e}}return R}function i(O,R){var T=O.sortIndex-R.sortIndex;return T!==0?T:O.id-R.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],c=[],d=1,u=null,f=3,v=!1,A=!1,p=!1,C=typeof setTimeout=="function"?setTimeout:null,y=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function b(O){for(var R=n(c);R!==null;){if(R.callback===null)r(c);else if(R.startTime<=O)r(c),R.sortIndex=R.expirationTime,t(l,R);else break;R=n(c)}}function w(O){if(p=!1,b(O),!A)if(n(l)!==null)A=!0,K(S);else{var R=n(c);R!==null&&Q(w,R.startTime-O)}}function S(O,R){A=!1,p&&(p=!1,y(F),F=-1),v=!0;var T=f;try{for(b(R),u=n(l);u!==null&&(!(u.expirationTime>R)||O&&!P());){var j=u.callback;if(typeof j=="function"){u.callback=null,f=u.priorityLevel;var W=j(u.expirationTime<=R);R=e.unstable_now(),typeof W=="function"?u.callback=W:u===n(l)&&r(l),b(R)}else r(l);u=n(l)}if(u!==null)var U=!0;else{var Y=n(c);Y!==null&&Q(w,Y.startTime-R),U=!1}return U}finally{u=null,f=T,v=!1}}var E=!1,I=null,F=-1,k=5,D=-1;function P(){return!(e.unstable_now()-DO||125j?(O.sortIndex=T,t(c,O),n(l)===null&&O===n(c)&&(p?(y(F),F=-1):p=!0,Q(w,T-j))):(O.sortIndex=W,t(l,O),A||v||(A=!0,K(S))),O},e.unstable_shouldYield=P,e.unstable_wrapCallback=function(O){var R=f;return function(){var T=f;f=R;try{return O.apply(this,arguments)}finally{f=T}}}})(NN);(function(e){e.exports=NN})(p3);/** * @license React * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var MN=g,ni=Yy;function ae(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Qy=Object.prototype.hasOwnProperty,h3=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,zE={},VE={};function g3(e){return Qy.call(VE,e)?!0:Qy.call(zE,e)?!1:h3.test(e)?VE[e]=!0:(zE[e]=!0,!1)}function A3(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function y3(e,t,n,r){if(t===null||typeof t>"u"||A3(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function br(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Hn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Hn[e]=new br(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Hn[t]=new br(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Hn[e]=new br(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Hn[e]=new br(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Hn[e]=new br(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Hn[e]=new br(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Hn[e]=new br(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Hn[e]=new br(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Hn[e]=new br(e,5,!1,e.toLowerCase(),null,!1,!1)});var DC=/[\-:]([a-z])/g;function FC(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(DC,FC);Hn[t]=new br(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(DC,FC);Hn[t]=new br(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(DC,FC);Hn[t]=new br(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Hn[e]=new br(e,1,!1,e.toLowerCase(),null,!1,!1)});Hn.xlinkHref=new br("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Hn[e]=new br(e,1,!1,e.toLowerCase(),null,!0,!0)});function NC(e,t,n,r){var i=Hn.hasOwnProperty(t)?Hn[t]:null;(i!==null?i.type!==0:r||!(2s||i[a]!==o[s]){var l=` `+i[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=a&&0<=s);break}}}finally{Y0=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Qd(e):""}function b3(e){switch(e.tag){case 5:return Qd(e.type);case 16:return Qd("Lazy");case 13:return Qd("Suspense");case 19:return Qd("SuspenseList");case 0:case 2:case 15:return e=Q0(e.type,!1),e;case 11:return e=Q0(e.type.render,!1),e;case 1:return e=Q0(e.type,!0),e;default:return""}}function Jy(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Hc:return"Fragment";case jc:return"Portal";case Zy:return"Profiler";case MC:return"StrictMode";case Xy:return"Suspense";case qy:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case PN:return(e.displayName||"Context")+".Consumer";case RN:return(e._context.displayName||"Context")+".Provider";case TC:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case RC:return t=e.displayName||null,t!==null?t:Jy(e.type)||"Memo";case Ka:t=e._payload,e=e._init;try{return Jy(e(t))}catch{}}return null}function C3(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Jy(t);case 8:return t===MC?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Fs(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function xN(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function w3(e){var t=xN(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ym(e){e._valueTracker||(e._valueTracker=w3(e))}function _N(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=xN(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function fh(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function $y(e,t){var n=t.checked;return Wt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function YE(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Fs(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function BN(e,t){t=t.checked,t!=null&&NC(e,"checked",t,!1)}function eb(e,t){BN(e,t);var n=Fs(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?tb(e,t.type,n):t.hasOwnProperty("defaultValue")&&tb(e,t.type,Fs(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function QE(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function tb(e,t,n){(t!=="number"||fh(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Zd=Array.isArray;function su(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=bm.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Kf(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ff={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},E3=["Webkit","ms","Moz","O"];Object.keys(ff).forEach(function(e){E3.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ff[t]=ff[e]})});function jN(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ff.hasOwnProperty(e)&&ff[e]?(""+t).trim():t+"px"}function HN(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=jN(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var S3=Wt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ib(e,t){if(t){if(S3[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ae(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ae(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(ae(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ae(62))}}function ob(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ab=null;function PC(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var sb=null,lu=null,cu=null;function qE(e){if(e=Ov(e)){if(typeof sb!="function")throw Error(ae(280));var t=e.stateNode;t&&(t=Hg(t),sb(e.stateNode,e.type,t))}}function KN(e){lu?cu?cu.push(e):cu=[e]:lu=e}function WN(){if(lu){var e=lu,t=cu;if(cu=lu=null,qE(e),t)for(e=0;e>>=0,e===0?32:31-(_3(e)/B3|0)|0}var Cm=64,wm=4194304;function Xd(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function hh(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~i;s!==0?r=Xd(s):(o&=a,o!==0&&(r=Xd(o)))}else a=n&~i,a!==0?r=Xd(a):o!==0&&(r=Xd(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Bv(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Zi(t),e[t]=n}function j3(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=mf),aS=String.fromCharCode(32),sS=!1;function c2(e,t){switch(e){case"keyup":return mx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function u2(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kc=!1;function hx(e,t){switch(e){case"compositionend":return u2(t);case"keypress":return t.which!==32?null:(sS=!0,aS);case"textInput":return e=t.data,e===aS&&sS?null:e;default:return null}}function gx(e,t){if(Kc)return e==="compositionend"||!jC&&c2(e,t)?(e=s2(),Np=LC=$a=null,Kc=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=dS(n)}}function m2(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?m2(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function p2(){for(var e=window,t=fh();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=fh(e.document)}return t}function HC(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Dx(e){var t=p2(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&m2(n.ownerDocument.documentElement,n)){if(r!==null&&HC(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=fS(n,o);var a=fS(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Wc=null,vb=null,hf=null,mb=!1;function vS(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;mb||Wc==null||Wc!==fh(r)||(r=Wc,"selectionStart"in r&&HC(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),hf&&Qf(hf,r)||(hf=r,r=yh(vb,"onSelect"),0Gc||(e.current=bb[Gc],bb[Gc]=null,Gc--)}function wt(e,t){Gc++,bb[Gc]=e.current,e.current=t}var Ns={},Xn=Ls(Ns),xr=Ls(!1),Bl=Ns;function Nu(e,t){var n=e.type.contextTypes;if(!n)return Ns;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function _r(e){return e=e.childContextTypes,e!=null}function Ch(){Tt(xr),Tt(Xn)}function bS(e,t,n){if(Xn.current!==Ns)throw Error(ae(168));wt(Xn,t),wt(xr,n)}function S2(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(ae(108,C3(e)||"Unknown",i));return Wt({},n,r)}function wh(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ns,Bl=Xn.current,wt(Xn,e),wt(xr,xr.current),!0}function CS(e,t,n){var r=e.stateNode;if(!r)throw Error(ae(169));n?(e=S2(e,t,Bl),r.__reactInternalMemoizedMergedChildContext=e,Tt(xr),Tt(Xn),wt(Xn,e)):Tt(xr),wt(xr,n)}var Vo=null,Kg=!1,lA=!1;function I2(e){Vo===null?Vo=[e]:Vo.push(e)}function Ox(e){Kg=!0,I2(e)}function Os(){if(!lA&&Vo!==null){lA=!0;var e=0,t=lt;try{var n=Vo;for(lt=1;e>=a,i-=a,qo=1<<32-Zi(t)+i|n<F?(k=I,I=null):k=I.sibling;var D=f(y,I,b[F],w);if(D===null){I===null&&(I=k);break}e&&I&&D.alternate===null&&t(y,I),h=o(D,h,F),E===null?S=D:E.sibling=D,E=D,I=k}if(F===b.length)return n(y,I),kt&&ol(y,F),S;if(I===null){for(;FF?(k=I,I=null):k=I.sibling;var P=f(y,I,D.value,w);if(P===null){I===null&&(I=k);break}e&&I&&P.alternate===null&&t(y,I),h=o(P,h,F),E===null?S=P:E.sibling=P,E=P,I=k}if(D.done)return n(y,I),kt&&ol(y,F),S;if(I===null){for(;!D.done;F++,D=b.next())D=u(y,D.value,w),D!==null&&(h=o(D,h,F),E===null?S=D:E.sibling=D,E=D);return kt&&ol(y,F),S}for(I=r(y,I);!D.done;F++,D=b.next())D=v(I,y,F,D.value,w),D!==null&&(e&&D.alternate!==null&&I.delete(D.key===null?F:D.key),h=o(D,h,F),E===null?S=D:E.sibling=D,E=D);return e&&I.forEach(function(H){return t(y,H)}),kt&&ol(y,F),S}function C(y,h,b,w){if(typeof b=="object"&&b!==null&&b.type===Hc&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case Am:e:{for(var S=b.key,E=h;E!==null;){if(E.key===S){if(S=b.type,S===Hc){if(E.tag===7){n(y,E.sibling),h=i(E,b.props.children),h.return=y,y=h;break e}}else if(E.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Ka&&NS(S)===E.type){n(y,E.sibling),h=i(E,b.props),h.ref=Cd(y,E,b),h.return=y,y=h;break e}n(y,E);break}else t(y,E);E=E.sibling}b.type===Hc?(h=Fl(b.props.children,y.mode,w,b.key),h.return=y,y=h):(w=Bp(b.type,b.key,b.props,null,y.mode,w),w.ref=Cd(y,h,b),w.return=y,y=w)}return a(y);case jc:e:{for(E=b.key;h!==null;){if(h.key===E)if(h.tag===4&&h.stateNode.containerInfo===b.containerInfo&&h.stateNode.implementation===b.implementation){n(y,h.sibling),h=i(h,b.children||[]),h.return=y,y=h;break e}else{n(y,h);break}else t(y,h);h=h.sibling}h=hA(b,y.mode,w),h.return=y,y=h}return a(y);case Ka:return E=b._init,C(y,h,E(b._payload),w)}if(Zd(b))return A(y,h,b,w);if(hd(b))return p(y,h,b,w);Mm(y,b)}return typeof b=="string"&&b!==""||typeof b=="number"?(b=""+b,h!==null&&h.tag===6?(n(y,h.sibling),h=i(h,b),h.return=y,y=h):(n(y,h),h=pA(b,y.mode,w),h.return=y,y=h),a(y)):n(y,h)}return C}var Tu=k2(!0),x2=k2(!1),Uv={},Fo=Ls(Uv),Jf=Ls(Uv),$f=Ls(Uv);function Al(e){if(e===Uv)throw Error(ae(174));return e}function XC(e,t){switch(wt($f,t),wt(Jf,e),wt(Fo,Uv),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:rb(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=rb(t,e)}Tt(Fo),wt(Fo,t)}function Ru(){Tt(Fo),Tt(Jf),Tt($f)}function _2(e){Al($f.current);var t=Al(Fo.current),n=rb(t,e.type);t!==n&&(wt(Jf,e),wt(Fo,n))}function qC(e){Jf.current===e&&(Tt(Fo),Tt(Jf))}var Ht=Ls(0);function Nh(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var cA=[];function JC(){for(var e=0;en?n:4,e(!0);var r=uA.transition;uA.transition={};try{e(!1),t()}finally{lt=n,uA.transition=r}}function q2(){return Ti().memoizedState}function Kx(e,t,n){var r=ms(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},J2(e))$2(t,n);else if(n=M2(e,t,n,r),n!==null){var i=pr();Xi(n,e,r,i),eM(n,t,r)}}function Wx(e,t,n){var r=ms(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(J2(e))$2(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,Ji(s,a)){var l=t.interleaved;l===null?(i.next=i,QC(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=M2(e,t,i,r),n!==null&&(i=pr(),Xi(n,e,r,i),eM(n,t,r))}}function J2(e){var t=e.alternate;return e===Kt||t!==null&&t===Kt}function $2(e,t){gf=Mh=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function eM(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,xC(e,n)}}var Th={readContext:Mi,useCallback:Kn,useContext:Kn,useEffect:Kn,useImperativeHandle:Kn,useInsertionEffect:Kn,useLayoutEffect:Kn,useMemo:Kn,useReducer:Kn,useRef:Kn,useState:Kn,useDebugValue:Kn,useDeferredValue:Kn,useTransition:Kn,useMutableSource:Kn,useSyncExternalStore:Kn,useId:Kn,unstable_isNewReconciler:!1},zx={readContext:Mi,useCallback:function(e,t){return fo().memoizedState=[e,t===void 0?null:t],e},useContext:Mi,useEffect:TS,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Pp(4194308,4,G2.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Pp(4194308,4,e,t)},useInsertionEffect:function(e,t){return Pp(4,2,e,t)},useMemo:function(e,t){var n=fo();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=fo();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Kx.bind(null,Kt,e),[r.memoizedState,e]},useRef:function(e){var t=fo();return e={current:e},t.memoizedState=e},useState:MS,useDebugValue:rw,useDeferredValue:function(e){return fo().memoizedState=e},useTransition:function(){var e=MS(!1),t=e[0];return e=Hx.bind(null,e[1]),fo().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Kt,i=fo();if(kt){if(n===void 0)throw Error(ae(407));n=n()}else{if(n=t(),In===null)throw Error(ae(349));Ol&30||O2(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,TS(j2.bind(null,r,o,e),[e]),r.flags|=2048,nv(9,U2.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=fo(),t=In.identifierPrefix;if(kt){var n=Jo,r=qo;n=(r&~(1<<32-Zi(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ev++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Co]=t,e[qf]=r,cM(e,t,!1,!1),t.stateNode=e;e:{switch(a=ob(n,r),n){case"dialog":Dt("cancel",e),Dt("close",e),i=r;break;case"iframe":case"object":case"embed":Dt("load",e),i=r;break;case"video":case"audio":for(i=0;iku&&(t.flags|=128,r=!0,wd(o,!1),t.lanes=4194304)}else{if(!r)if(e=Nh(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),wd(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!kt)return Wn(t),null}else 2*en()-o.renderingStartTime>ku&&n!==1073741824&&(t.flags|=128,r=!0,wd(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=en(),t.sibling=null,n=Ht.current,wt(Ht,r?n&1|2:n&1),t):(Wn(t),null);case 22:case 23:return cw(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Zr&1073741824&&(Wn(t),t.subtreeFlags&6&&(t.flags|=8192)):Wn(t),null;case 24:return null;case 25:return null}throw Error(ae(156,t.tag))}function Jx(e,t){switch(WC(t),t.tag){case 1:return _r(t.type)&&Ch(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ru(),Tt(xr),Tt(Xn),JC(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return qC(t),null;case 13:if(Tt(Ht),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ae(340));Mu()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Tt(Ht),null;case 4:return Ru(),null;case 10:return YC(t.type._context),null;case 22:case 23:return cw(),null;case 24:return null;default:return null}}var Rm=!1,Yn=!1,$x=typeof WeakSet=="function"?WeakSet:Set,pe=null;function Xc(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Zt(e,t,r)}else n.current=null}function Pb(e,t,n){try{n()}catch(r){Zt(e,t,r)}}var US=!1;function e_(e,t){if(pb=gh,e=p2(),HC(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,s=-1,l=-1,c=0,d=0,u=e,f=null;t:for(;;){for(var v;u!==n||i!==0&&u.nodeType!==3||(s=a+i),u!==o||r!==0&&u.nodeType!==3||(l=a+r),u.nodeType===3&&(a+=u.nodeValue.length),(v=u.firstChild)!==null;)f=u,u=v;for(;;){if(u===e)break t;if(f===n&&++c===i&&(s=a),f===o&&++d===r&&(l=a),(v=u.nextSibling)!==null)break;u=f,f=u.parentNode}u=v}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(hb={focusedElem:e,selectionRange:n},gh=!1,pe=t;pe!==null;)if(t=pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,pe=e;else for(;pe!==null;){t=pe;try{var A=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(A!==null){var p=A.memoizedProps,C=A.memoizedState,y=t.stateNode,h=y.getSnapshotBeforeUpdate(t.elementType===t.type?p:zi(t.type,p),C);y.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var b=t.stateNode.containerInfo;b.nodeType===1?b.textContent="":b.nodeType===9&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ae(163))}}catch(w){Zt(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,pe=e;break}pe=t.return}return A=US,US=!1,A}function Af(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Pb(t,n,o)}i=i.next}while(i!==r)}}function Vg(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function kb(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function fM(e){var t=e.alternate;t!==null&&(e.alternate=null,fM(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Co],delete t[qf],delete t[yb],delete t[Bx],delete t[Lx])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function vM(e){return e.tag===5||e.tag===3||e.tag===4}function jS(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||vM(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function xb(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=bh));else if(r!==4&&(e=e.child,e!==null))for(xb(e,t,n),e=e.sibling;e!==null;)xb(e,t,n),e=e.sibling}function _b(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(_b(e,t,n),e=e.sibling;e!==null;)_b(e,t,n),e=e.sibling}var kn=null,Vi=!1;function Fa(e,t,n){for(n=n.child;n!==null;)mM(e,t,n),n=n.sibling}function mM(e,t,n){if(Do&&typeof Do.onCommitFiberUnmount=="function")try{Do.onCommitFiberUnmount(Lg,n)}catch{}switch(n.tag){case 5:Yn||Xc(n,t);case 6:var r=kn,i=Vi;kn=null,Fa(e,t,n),kn=r,Vi=i,kn!==null&&(Vi?(e=kn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):kn.removeChild(n.stateNode));break;case 18:kn!==null&&(Vi?(e=kn,n=n.stateNode,e.nodeType===8?sA(e.parentNode,n):e.nodeType===1&&sA(e,n),Gf(e)):sA(kn,n.stateNode));break;case 4:r=kn,i=Vi,kn=n.stateNode.containerInfo,Vi=!0,Fa(e,t,n),kn=r,Vi=i;break;case 0:case 11:case 14:case 15:if(!Yn&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&(o&2||o&4)&&Pb(n,t,a),i=i.next}while(i!==r)}Fa(e,t,n);break;case 1:if(!Yn&&(Xc(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Zt(n,t,s)}Fa(e,t,n);break;case 21:Fa(e,t,n);break;case 22:n.mode&1?(Yn=(r=Yn)||n.memoizedState!==null,Fa(e,t,n),Yn=r):Fa(e,t,n);break;default:Fa(e,t,n)}}function HS(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new $x),t.forEach(function(r){var i=c_.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Bi(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=en()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*n_(r/1960))-r,10e?16:e,es===null)var r=!1;else{if(e=es,es=null,kh=0,Ye&6)throw Error(ae(331));var i=Ye;for(Ye|=4,pe=e.current;pe!==null;){var o=pe,a=o.child;if(pe.flags&16){var s=o.deletions;if(s!==null){for(var l=0;len()-sw?Dl(e,0):aw|=n),Br(e,t)}function wM(e,t){t===0&&(e.mode&1?(t=wm,wm<<=1,!(wm&130023424)&&(wm=4194304)):t=1);var n=pr();e=ca(e,t),e!==null&&(Bv(e,t,n),Br(e,n))}function l_(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),wM(e,n)}function c_(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(ae(314))}r!==null&&r.delete(t),wM(e,n)}var EM;EM=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||xr.current)Pr=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Pr=!1,Xx(e,t,n);Pr=!!(e.flags&131072)}else Pr=!1,kt&&t.flags&1048576&&D2(t,Sh,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;kp(e,t),e=t.pendingProps;var i=Nu(t,Xn.current);du(t,n),i=ew(null,t,r,e,i,n);var o=tw();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,_r(r)?(o=!0,wh(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,ZC(t),i.updater=Wg,t.stateNode=i,i._reactInternals=t,Ib(t,r,e,n),t=Nb(null,t,r,!0,o,n)):(t.tag=0,kt&&o&&KC(t),sr(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(kp(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=d_(r),e=zi(r,e),i){case 0:t=Fb(null,t,r,e,n);break e;case 1:t=BS(null,t,r,e,n);break e;case 11:t=xS(null,t,r,e,n);break e;case 14:t=_S(null,t,r,zi(r.type,e),n);break e}throw Error(ae(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:zi(r,i),Fb(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:zi(r,i),BS(e,t,r,i,n);case 3:e:{if(aM(t),e===null)throw Error(ae(387));r=t.pendingProps,o=t.memoizedState,i=o.element,T2(e,t),Fh(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=Pu(Error(ae(423)),t),t=LS(e,t,r,n,i);break e}else if(r!==i){i=Pu(Error(ae(424)),t),t=LS(e,t,r,n,i);break e}else for(qr=ds(t.stateNode.containerInfo.firstChild),ti=t,kt=!0,Yi=null,n=x2(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Mu(),r===i){t=ua(e,t,n);break e}sr(e,t,r,n)}t=t.child}return t;case 5:return _2(t),e===null&&wb(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,gb(r,i)?a=null:o!==null&&gb(r,o)&&(t.flags|=32),oM(e,t),sr(e,t,a,n),t.child;case 6:return e===null&&wb(t),null;case 13:return sM(e,t,n);case 4:return XC(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Tu(t,null,r,n):sr(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:zi(r,i),xS(e,t,r,i,n);case 7:return sr(e,t,t.pendingProps,n),t.child;case 8:return sr(e,t,t.pendingProps.children,n),t.child;case 12:return sr(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,wt(Ih,r._currentValue),r._currentValue=a,o!==null)if(Ji(o.value,a)){if(o.children===i.children&&!xr.current){t=ua(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=ra(-1,n&-n),l.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?l.next=l:(l.next=d.next,d.next=l),c.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Eb(o.return,n,t),s.lanes|=n;break}l=l.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(ae(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),Eb(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}sr(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,du(t,n),i=Mi(i),r=r(i),t.flags|=1,sr(e,t,r,n),t.child;case 14:return r=t.type,i=zi(r,t.pendingProps),i=zi(r.type,i),_S(e,t,r,i,n);case 15:return rM(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:zi(r,i),kp(e,t),t.tag=1,_r(r)?(e=!0,wh(t)):e=!1,du(t,n),P2(t,r,i),Ib(t,r,i,n),Nb(null,t,r,!0,e,n);case 19:return lM(e,t,n);case 22:return iM(e,t,n)}throw Error(ae(156,t.tag))};function SM(e,t){return XN(e,t)}function u_(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Di(e,t,n,r){return new u_(e,t,n,r)}function dw(e){return e=e.prototype,!(!e||!e.isReactComponent)}function d_(e){if(typeof e=="function")return dw(e)?1:0;if(e!=null){if(e=e.$$typeof,e===TC)return 11;if(e===RC)return 14}return 2}function ps(e,t){var n=e.alternate;return n===null?(n=Di(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Bp(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")dw(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Hc:return Fl(n.children,i,o,t);case MC:a=8,i|=8;break;case Zy:return e=Di(12,n,t,i|2),e.elementType=Zy,e.lanes=o,e;case Xy:return e=Di(13,n,t,i),e.elementType=Xy,e.lanes=o,e;case qy:return e=Di(19,n,t,i),e.elementType=qy,e.lanes=o,e;case kN:return Yg(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case RN:a=10;break e;case PN:a=9;break e;case TC:a=11;break e;case RC:a=14;break e;case Ka:a=16,r=null;break e}throw Error(ae(130,e==null?e:typeof e,""))}return t=Di(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Fl(e,t,n,r){return e=Di(7,e,r,t),e.lanes=n,e}function Yg(e,t,n,r){return e=Di(22,e,r,t),e.elementType=kN,e.lanes=n,e.stateNode={isHidden:!1},e}function pA(e,t,n){return e=Di(6,e,null,t),e.lanes=n,e}function hA(e,t,n){return t=Di(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function f_(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=X0(0),this.expirationTimes=X0(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=X0(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function fw(e,t,n,r,i,o,a,s,l){return e=new f_(e,t,n,s,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Di(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ZC(o),e}function v_(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=ai})(m3);var ZS=jf;Gy.createRoot=ZS.createRoot,Gy.hydrateRoot=ZS.hydrateRoot;function Ms(){return Ms=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}/** * React Router v6.3.0 * * Copyright (c) Remix Software Inc. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */const Jg=g.createContext(null),jv=g.createContext(null),tc=g.createContext({outlet:null,matches:[]});function ri(e,t){if(!e)throw new Error(t)}function w_(e,t){return t===void 0&&(t={}),e.replace(/:(\w+)/g,(n,r)=>(t[r]==null&&ri(!1),t[r])).replace(/\/*\*$/,n=>t["*"]==null?"":t["*"].replace(/^\/*/,"/"))}function MM(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?Ri(t):t,i=kM(r.pathname||"/",n);if(i==null)return null;let o=TM(e);E_(o);let a=null;for(let s=0;a==null&&s{let a={relativePath:i.path||"",caseSensitive:i.caseSensitive===!0,childrenIndex:o,route:i};a.relativePath.startsWith("/")&&(a.relativePath.startsWith(r)||ri(!1),a.relativePath=a.relativePath.slice(r.length));let s=gs([r,a.relativePath]),l=n.concat(a);i.children&&i.children.length>0&&(i.index===!0&&ri(!1),TM(i.children,t,l,s)),!(i.path==null&&!i.index)&&t.push({path:s,score:T_(s,i.index),routesMeta:l})}),t}function E_(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:R_(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const S_=/^:\w+$/,I_=3,D_=2,F_=1,N_=10,M_=-2,qS=e=>e==="*";function T_(e,t){let n=e.split("/"),r=n.length;return n.some(qS)&&(r+=M_),t&&(r+=D_),n.filter(i=>!qS(i)).reduce((i,o)=>i+(S_.test(o)?I_:o===""?F_:N_),r)}function R_(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function P_(e,t){let{routesMeta:n}=e,r={},i="/",o=[];for(let a=0;a{if(d==="*"){let f=s[u]||"";a=o.slice(0,o.length-f.length).replace(/(.)\/+$/,"$1")}return c[d]=x_(s[u]||""),c},{}),pathname:o,pathnameBase:a,pattern:e}}function k_(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0);let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^$?{}|()[\]]/g,"\\$&").replace(/:(\w+)/g,(a,s)=>(r.push(s),"([^\\/]+)"));return e.endsWith("*")?(r.push("*"),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i+=n?"\\/*$":"(?:(?=[.~-]|%[0-9A-F]{2})|\\b|\\/|$)",[new RegExp(i,t?void 0:"i"),r]}function x_(e,t){try{return decodeURIComponent(e)}catch{return e}}function RM(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?Ri(e):e;return{pathname:n?n.startsWith("/")?n:__(n,t):t,search:L_(r),hash:O_(i)}}function __(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function PM(e,t,n){let r=typeof e=="string"?Ri(e):e,i=e===""||r.pathname===""?"/":r.pathname,o;if(i==null)o=n;else{let s=t.length-1;if(i.startsWith("..")){let l=i.split("/");for(;l[0]==="..";)l.shift(),s-=1;r.pathname=l.join("/")}o=s>=0?t[s]:"/"}let a=RM(r,o);return i&&i!=="/"&&i.endsWith("/")&&!a.pathname.endsWith("/")&&(a.pathname+="/"),a}function B_(e){return e===""||e.pathname===""?"/":typeof e=="string"?Ri(e).pathname:e.pathname}function kM(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=e.charAt(t.length);return n&&n!=="/"?null:e.slice(t.length)||"/"}const gs=e=>e.join("/").replace(/\/\/+/g,"/"),xM=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),L_=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,O_=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function _M(e){Us()||ri(!1);let{basename:t,navigator:n}=g.useContext(Jg),{hash:r,pathname:i,search:o}=$g(e),a=i;if(t!=="/"){let s=B_(e),l=s!=null&&s.endsWith("/");a=i==="/"?t+(l?"/":""):gs([t,i])}return n.createHref({pathname:a,search:o,hash:r})}function Us(){return g.useContext(jv)!=null}function li(){return Us()||ri(!1),g.useContext(jv).location}function U_(){return g.useContext(jv).navigationType}function j_(e){Us()||ri(!1);let{pathname:t}=li();return g.useMemo(()=>hw(e,t),[t,e])}function nc(){Us()||ri(!1);let{basename:e,navigator:t}=g.useContext(Jg),{matches:n}=g.useContext(tc),{pathname:r}=li(),i=JSON.stringify(n.map(s=>s.pathnameBase)),o=g.useRef(!1);return g.useEffect(()=>{o.current=!0}),g.useCallback(function(s,l){if(l===void 0&&(l={}),!o.current)return;if(typeof s=="number"){t.go(s);return}let c=PM(s,JSON.parse(i),r);e!=="/"&&(c.pathname=gs([e,c.pathname])),(l.replace?t.replace:t.push)(c,l.state)},[e,t,i,r])}const BM=g.createContext(null);function H_(){return g.useContext(BM)}function LM(e){let t=g.useContext(tc).outlet;return t&&g.createElement(BM.Provider,{value:e},t)}function K_(){let{matches:e}=g.useContext(tc),t=e[e.length-1];return t?t.params:{}}function $g(e){let{matches:t}=g.useContext(tc),{pathname:n}=li(),r=JSON.stringify(t.map(i=>i.pathnameBase));return g.useMemo(()=>PM(e,JSON.parse(r),n),[e,r,n])}function OM(e,t){Us()||ri(!1);let{matches:n}=g.useContext(tc),r=n[n.length-1],i=r?r.params:{};r&&r.pathname;let o=r?r.pathnameBase:"/";r&&r.route;let a=li(),s;if(t){var l;let f=typeof t=="string"?Ri(t):t;o==="/"||(l=f.pathname)!=null&&l.startsWith(o)||ri(!1),s=f}else s=a;let c=s.pathname||"/",d=o==="/"?c:c.slice(o.length)||"/",u=MM(e,{pathname:d});return UM(u&&u.map(f=>Object.assign({},f,{params:Object.assign({},i,f.params),pathname:gs([o,f.pathname]),pathnameBase:f.pathnameBase==="/"?o:gs([o,f.pathnameBase])})),n)}function UM(e,t){return t===void 0&&(t=[]),e==null?null:e.reduceRight((n,r,i)=>g.createElement(tc.Provider,{children:r.route.element!==void 0?r.route.element:n,value:{outlet:n,matches:t.concat(e.slice(0,i+1))}}),null)}function W_(e){let{basename:t,children:n,initialEntries:r,initialIndex:i}=e,o=g.useRef();o.current==null&&(o.current=C_({initialEntries:r,initialIndex:i}));let a=o.current,[s,l]=g.useState({action:a.action,location:a.location});return g.useLayoutEffect(()=>a.listen(l),[a]),g.createElement(Hv,{basename:t,children:n,location:s.location,navigationType:s.action,navigator:a})}function z_(e){let{to:t,replace:n,state:r}=e;Us()||ri(!1);let i=nc();return g.useEffect(()=>{i(t,{replace:n,state:r})}),null}function V_(e){return LM(e.context)}function gw(e){ri(!1)}function Hv(e){let{basename:t="/",children:n=null,location:r,navigationType:i=Qn.Pop,navigator:o,static:a=!1}=e;Us()&&ri(!1);let s=xM(t),l=g.useMemo(()=>({basename:s,navigator:o,static:a}),[s,o,a]);typeof r=="string"&&(r=Ri(r));let{pathname:c="/",search:d="",hash:u="",state:f=null,key:v="default"}=r,A=g.useMemo(()=>{let p=kM(c,s);return p==null?null:{pathname:p,search:d,hash:u,state:f,key:v}},[s,c,d,u,f,v]);return A==null?null:g.createElement(Jg.Provider,{value:l},g.createElement(jv.Provider,{children:n,value:{location:A,navigationType:i}}))}function jM(e){let{children:t,location:n}=e;return OM(Uh(t),n)}function Uh(e){let t=[];return g.Children.forEach(e,n=>{if(!g.isValidElement(n))return;if(n.type===g.Fragment){t.push.apply(t,Uh(n.props.children));return}n.type!==gw&&ri(!1);let r={caseSensitive:n.props.caseSensitive,element:n.props.element,index:n.props.index,path:n.props.path};n.props.children&&(r.children=Uh(n.props.children)),t.push(r)}),t}function G_(e){return UM(e)}/** * React Router DOM v6.3.0 * * Copyright (c) Remix Software Inc. * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */function jh(){return jh=Object.assign||function(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}const Y_=["onClick","reloadDocument","replace","state","target","to"],Q_=["aria-current","caseSensitive","className","end","style","to","children"];function KM(e){let{basename:t,children:n,window:r}=e,i=g.useRef();i.current==null&&(i.current=y_({window:r}));let o=i.current,[a,s]=g.useState({action:o.action,location:o.location});return g.useLayoutEffect(()=>o.listen(s),[o]),g.createElement(Hv,{basename:t,children:n,location:a.location,navigationType:a.action,navigator:o})}function Z_(e){let{basename:t,children:n,window:r}=e,i=g.useRef();i.current==null&&(i.current=b_({window:r}));let o=i.current,[a,s]=g.useState({action:o.action,location:o.location});return g.useLayoutEffect(()=>o.listen(s),[o]),g.createElement(Hv,{basename:t,children:n,location:a.location,navigationType:a.action,navigator:o})}function X_(e){let{basename:t,children:n,history:r}=e;const[i,o]=g.useState({action:r.action,location:r.location});return g.useLayoutEffect(()=>r.listen(o),[r]),g.createElement(Hv,{basename:t,children:n,location:i.location,navigationType:i.action,navigator:r})}function q_(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}const qt=g.forwardRef(function(t,n){let{onClick:r,reloadDocument:i,replace:o=!1,state:a,target:s,to:l}=t,c=HM(t,Y_),d=_M(l),u=WM(l,{replace:o,state:a,target:s});function f(v){r&&r(v),!v.defaultPrevented&&!i&&u(v)}return g.createElement("a",jh({},c,{href:d,onClick:f,ref:n,target:s}))}),J_=g.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:i=!1,className:o="",end:a=!1,style:s,to:l,children:c}=t,d=HM(t,Q_),u=li(),f=$g(l),v=u.pathname,A=f.pathname;i||(v=v.toLowerCase(),A=A.toLowerCase());let p=v===A||!a&&v.startsWith(A)&&v.charAt(A.length)==="/",C=p?r:void 0,y;typeof o=="function"?y=o({isActive:p}):y=[o,p?"active":null].filter(Boolean).join(" ");let h=typeof s=="function"?s({isActive:p}):s;return g.createElement(qt,jh({},d,{"aria-current":C,className:y,ref:n,style:h,to:l}),typeof c=="function"?c({isActive:p}):c)});function WM(e,t){let{target:n,replace:r,state:i}=t===void 0?{}:t,o=nc(),a=li(),s=$g(e);return g.useCallback(l=>{if(l.button===0&&(!n||n==="_self")&&!q_(l)){l.preventDefault();let c=!!r||hs(a)===hs(s);o(e,{replace:c,state:i})}},[a,o,s,r,i,n,e])}function nd(e){let t=g.useRef(Lp(e)),n=li(),r=g.useMemo(()=>{let a=Lp(n.search);for(let s of t.current.keys())a.has(s)||t.current.getAll(s).forEach(l=>{a.append(s,l)});return a},[n.search]),i=nc(),o=g.useCallback((a,s)=>{i("?"+Lp(a),s)},[i]);return[r,o]}function Lp(e){return e===void 0&&(e=""),new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(i=>[n,i]):[[n,r]])},[]))}const $_=Object.freeze(Object.defineProperty({__proto__:null,BrowserRouter:KM,HashRouter:Z_,Link:qt,MemoryRouter:W_,NavLink:J_,Navigate:z_,get NavigationType(){return Qn},Outlet:V_,Route:gw,Router:Hv,Routes:jM,UNSAFE_LocationContext:jv,UNSAFE_NavigationContext:Jg,UNSAFE_RouteContext:tc,createPath:hs,createRoutesFromChildren:Uh,createSearchParams:Lp,generatePath:w_,matchPath:hw,matchRoutes:MM,parsePath:Ri,renderMatches:G_,resolvePath:RM,unstable_HistoryRouter:X_,useHref:_M,useInRouterContext:Us,useLinkClickHandler:WM,useLocation:li,useMatch:j_,useNavigate:nc,useNavigationType:U_,useOutlet:LM,useOutletContext:H_,useParams:K_,useResolvedPath:$g,useRoutes:OM,useSearchParams:nd},Symbol.toStringTag,{value:"Module"}));var jb={},e8={get exports(){return jb},set exports(e){jb=e}},Aw={};const t8=Wk($_);Object.defineProperty(Aw,"__esModule",{value:!0});var Sd,Wi=g,iv=(Sd=Wi)&&typeof Sd=="object"&&"default"in Sd?Sd.default:Sd,n8=t8;function sl(){sl=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=typeof Symbol=="function"?Symbol:{},i=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function s(D,P,H){return Object.defineProperty(D,P,{value:H,enumerable:!0,configurable:!0,writable:!0}),D[P]}try{s({},"")}catch{s=function(P,H,G){return P[H]=G}}function l(D,P,H,G){var _=Object.create((P&&P.prototype instanceof u?P:u).prototype),M=new I(G||[]);return _._invoke=function(K,Q,O){var R="suspendedStart";return function(T,j){if(R==="executing")throw new Error("Generator is already running");if(R==="completed"){if(T==="throw")throw j;return{value:void 0,done:!0}}for(O.method=T,O.arg=j;;){var W=O.delegate;if(W){var U=w(W,O);if(U){if(U===d)continue;return U}}if(O.method==="next")O.sent=O._sent=O.arg;else if(O.method==="throw"){if(R==="suspendedStart")throw R="completed",O.arg;O.dispatchException(O.arg)}else O.method==="return"&&O.abrupt("return",O.arg);R="executing";var Y=c(K,Q,O);if(Y.type==="normal"){if(R=O.done?"completed":"suspendedYield",Y.arg===d)continue;return{value:Y.arg,done:O.done}}Y.type==="throw"&&(R="completed",O.method="throw",O.arg=Y.arg)}}}(D,H,M),_}function c(D,P,H){try{return{type:"normal",arg:D.call(P,H)}}catch(G){return{type:"throw",arg:G}}}e.wrap=l;var d={};function u(){}function f(){}function v(){}var A={};s(A,i,function(){return this});var p=Object.getPrototypeOf,C=p&&p(p(F([])));C&&C!==t&&n.call(C,i)&&(A=C);var y=v.prototype=u.prototype=Object.create(A);function h(D){["next","throw","return"].forEach(function(P){s(D,P,function(H){return this._invoke(P,H)})})}function b(D,P){var H;this._invoke=function(G,_){function M(){return new P(function(K,Q){(function O(R,T,j,W){var U=c(D[R],D,T);if(U.type!=="throw"){var Y=U.arg,x=Y.value;return x&&typeof x=="object"&&n.call(x,"__await")?P.resolve(x.__await).then(function(L){O("next",L,j,W)},function(L){O("throw",L,j,W)}):P.resolve(x).then(function(L){Y.value=L,j(Y)},function(L){return O("throw",L,j,W)})}W(U.arg)})(G,_,K,Q)})}return H=H?H.then(M,M):M()}}function w(D,P){var H=D.iterator[P.method];if(H===void 0){if(P.delegate=null,P.method==="throw"){if(D.iterator.return&&(P.method="return",P.arg=void 0,w(D,P),P.method==="throw"))return d;P.method="throw",P.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var G=c(H,D.iterator,P.arg);if(G.type==="throw")return P.method="throw",P.arg=G.arg,P.delegate=null,d;var _=G.arg;return _?_.done?(P[D.resultName]=_.value,P.next=D.nextLoc,P.method!=="return"&&(P.method="next",P.arg=void 0),P.delegate=null,d):_:(P.method="throw",P.arg=new TypeError("iterator result is not an object"),P.delegate=null,d)}function S(D){var P={tryLoc:D[0]};1 in D&&(P.catchLoc=D[1]),2 in D&&(P.finallyLoc=D[2],P.afterLoc=D[3]),this.tryEntries.push(P)}function E(D){var P=D.completion||{};P.type="normal",delete P.arg,D.completion=P}function I(D){this.tryEntries=[{tryLoc:"root"}],D.forEach(S,this),this.reset(!0)}function F(D){if(D){var P=D[i];if(P)return P.call(D);if(typeof D.next=="function")return D;if(!isNaN(D.length)){var H=-1,G=function _(){for(;++H=0;--G){var _=this.tryEntries[G],M=_.completion;if(_.tryLoc==="root")return H("end");if(_.tryLoc<=this.prev){var K=n.call(_,"catchLoc"),Q=n.call(_,"finallyLoc");if(K&&Q){if(this.prev<_.catchLoc)return H(_.catchLoc,!0);if(this.prev<_.finallyLoc)return H(_.finallyLoc)}else if(K){if(this.prev<_.catchLoc)return H(_.catchLoc,!0)}else{if(!Q)throw new Error("try statement without catch or finally");if(this.prev<_.finallyLoc)return H(_.finallyLoc)}}}},abrupt:function(D,P){for(var H=this.tryEntries.length-1;H>=0;--H){var G=this.tryEntries[H];if(G.tryLoc<=this.prev&&n.call(G,"finallyLoc")&&this.prev=0;--P){var H=this.tryEntries[P];if(H.finallyLoc===D)return this.complete(H.completion,H.afterLoc),E(H),d}},catch:function(D){for(var P=this.tryEntries.length-1;P>=0;--P){var H=this.tryEntries[P];if(H.tryLoc===D){var G=H.completion;if(G.type==="throw"){var _=G.arg;E(H)}return _}}throw new Error("illegal catch attempt")},delegateYield:function(D,P,H){return this.delegate={iterator:F(D),resultName:P,nextLoc:H},this.method==="next"&&(this.arg=void 0),d}},e}function JS(e,t,n,r,i,o,a){try{var s=e[o](a),l=s.value}catch(c){return void n(c)}s.done?t(l):Promise.resolve(l).then(r,i)}function gA(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(l){JS(o,r,i,a,s,"next",l)}function s(l){JS(o,r,i,a,s,"throw",l)}a(void 0)})}}function kc(){return(kc=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?m8:v8;zM.useSyncExternalStore=Bu.useSyncExternalStore!==void 0?Bu.useSyncExternalStore:p8;(function(e){e.exports=zM})(a8);var Wb={},h8={get exports(){return Wb},set exports(e){Wb=e}},VM={};/** * @license React * use-sync-external-store-shim/with-selector.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var e0=g,g8=Kb;function A8(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var y8=typeof Object.is=="function"?Object.is:A8,b8=g8.useSyncExternalStore,C8=e0.useRef,w8=e0.useEffect,E8=e0.useMemo,S8=e0.useDebugValue;VM.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=C8(null);if(o.current===null){var a={hasValue:!1,value:null};o.current=a}else a=o.current;o=E8(function(){function l(v){if(!c){if(c=!0,d=v,v=r(v),i!==void 0&&a.hasValue){var A=a.value;if(i(A,v))return u=A}return u=v}if(A=u,y8(d,v))return A;var p=r(v);return i!==void 0&&i(A,p)?A:(d=v,u=p)}var c=!1,d,u,f=n===void 0?null:n;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,n,r,i]);var s=b8(e,o[0],o[1]);return w8(function(){a.hasValue=!0,a.value=s},[s]),S8(s),s};(function(e){e.exports=VM})(h8);function I8(e){e()}let GM=I8;const D8=e=>GM=e,F8=()=>GM,Ts=Sn.createContext(null);function YM(){return g.useContext(Ts)}const N8=()=>{throw new Error("uSES not initialized!")};let QM=N8;const M8=e=>{QM=e},T8=(e,t)=>e===t;function R8(e=Ts){const t=e===Ts?YM:()=>g.useContext(e);return function(r,i=T8){const{store:o,subscription:a,getServerState:s}=t(),l=QM(a.addNestedSub,o.getState,s||o.getState,r,i);return g.useDebugValue(l),l}}const ve=R8();var zb={},P8={get exports(){return zb},set exports(e){zb=e}},ct={};/** @license React v16.13.1 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var Fn=typeof Symbol=="function"&&Symbol.for,yw=Fn?Symbol.for("react.element"):60103,bw=Fn?Symbol.for("react.portal"):60106,t0=Fn?Symbol.for("react.fragment"):60107,n0=Fn?Symbol.for("react.strict_mode"):60108,r0=Fn?Symbol.for("react.profiler"):60114,i0=Fn?Symbol.for("react.provider"):60109,o0=Fn?Symbol.for("react.context"):60110,Cw=Fn?Symbol.for("react.async_mode"):60111,a0=Fn?Symbol.for("react.concurrent_mode"):60111,s0=Fn?Symbol.for("react.forward_ref"):60112,l0=Fn?Symbol.for("react.suspense"):60113,k8=Fn?Symbol.for("react.suspense_list"):60120,c0=Fn?Symbol.for("react.memo"):60115,u0=Fn?Symbol.for("react.lazy"):60116,x8=Fn?Symbol.for("react.block"):60121,_8=Fn?Symbol.for("react.fundamental"):60117,B8=Fn?Symbol.for("react.responder"):60118,L8=Fn?Symbol.for("react.scope"):60119;function ci(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case yw:switch(e=e.type,e){case Cw:case a0:case t0:case r0:case n0:case l0:return e;default:switch(e=e&&e.$$typeof,e){case o0:case s0:case u0:case c0:case i0:return e;default:return t}}case bw:return t}}}function ZM(e){return ci(e)===a0}ct.AsyncMode=Cw;ct.ConcurrentMode=a0;ct.ContextConsumer=o0;ct.ContextProvider=i0;ct.Element=yw;ct.ForwardRef=s0;ct.Fragment=t0;ct.Lazy=u0;ct.Memo=c0;ct.Portal=bw;ct.Profiler=r0;ct.StrictMode=n0;ct.Suspense=l0;ct.isAsyncMode=function(e){return ZM(e)||ci(e)===Cw};ct.isConcurrentMode=ZM;ct.isContextConsumer=function(e){return ci(e)===o0};ct.isContextProvider=function(e){return ci(e)===i0};ct.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===yw};ct.isForwardRef=function(e){return ci(e)===s0};ct.isFragment=function(e){return ci(e)===t0};ct.isLazy=function(e){return ci(e)===u0};ct.isMemo=function(e){return ci(e)===c0};ct.isPortal=function(e){return ci(e)===bw};ct.isProfiler=function(e){return ci(e)===r0};ct.isStrictMode=function(e){return ci(e)===n0};ct.isSuspense=function(e){return ci(e)===l0};ct.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===t0||e===a0||e===r0||e===n0||e===l0||e===k8||typeof e=="object"&&e!==null&&(e.$$typeof===u0||e.$$typeof===c0||e.$$typeof===i0||e.$$typeof===o0||e.$$typeof===s0||e.$$typeof===_8||e.$$typeof===B8||e.$$typeof===L8||e.$$typeof===x8)};ct.typeOf=ci;(function(e){e.exports=ct})(P8);var XM=zb,O8={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},U8={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},qM={};qM[XM.ForwardRef]=O8;qM[XM.Memo]=U8;var tI={},j8={get exports(){return tI},set exports(e){tI=e}},ut={};/** * @license React * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var ww=Symbol.for("react.element"),Ew=Symbol.for("react.portal"),d0=Symbol.for("react.fragment"),f0=Symbol.for("react.strict_mode"),v0=Symbol.for("react.profiler"),m0=Symbol.for("react.provider"),p0=Symbol.for("react.context"),H8=Symbol.for("react.server_context"),h0=Symbol.for("react.forward_ref"),g0=Symbol.for("react.suspense"),A0=Symbol.for("react.suspense_list"),y0=Symbol.for("react.memo"),b0=Symbol.for("react.lazy"),K8=Symbol.for("react.offscreen"),JM;JM=Symbol.for("react.module.reference");function ki(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case ww:switch(e=e.type,e){case d0:case v0:case f0:case g0:case A0:return e;default:switch(e=e&&e.$$typeof,e){case H8:case p0:case h0:case b0:case y0:case m0:return e;default:return t}}case Ew:return t}}}ut.ContextConsumer=p0;ut.ContextProvider=m0;ut.Element=ww;ut.ForwardRef=h0;ut.Fragment=d0;ut.Lazy=b0;ut.Memo=y0;ut.Portal=Ew;ut.Profiler=v0;ut.StrictMode=f0;ut.Suspense=g0;ut.SuspenseList=A0;ut.isAsyncMode=function(){return!1};ut.isConcurrentMode=function(){return!1};ut.isContextConsumer=function(e){return ki(e)===p0};ut.isContextProvider=function(e){return ki(e)===m0};ut.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===ww};ut.isForwardRef=function(e){return ki(e)===h0};ut.isFragment=function(e){return ki(e)===d0};ut.isLazy=function(e){return ki(e)===b0};ut.isMemo=function(e){return ki(e)===y0};ut.isPortal=function(e){return ki(e)===Ew};ut.isProfiler=function(e){return ki(e)===v0};ut.isStrictMode=function(e){return ki(e)===f0};ut.isSuspense=function(e){return ki(e)===g0};ut.isSuspenseList=function(e){return ki(e)===A0};ut.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===d0||e===v0||e===f0||e===g0||e===A0||e===K8||typeof e=="object"&&e!==null&&(e.$$typeof===b0||e.$$typeof===y0||e.$$typeof===m0||e.$$typeof===p0||e.$$typeof===h0||e.$$typeof===JM||e.getModuleId!==void 0)};ut.typeOf=ki;(function(e){e.exports=ut})(j8);function W8(){const e=F8();let t=null,n=null;return{clear(){t=null,n=null},notify(){e(()=>{let r=t;for(;r;)r.callback(),r=r.next})},get(){let r=[],i=t;for(;i;)r.push(i),i=i.next;return r},subscribe(r){let i=!0,o=n={callback:r,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){!i||t===null||(i=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}const nI={notify(){},get:()=>[]};function z8(e,t){let n,r=nI;function i(u){return l(),r.subscribe(u)}function o(){r.notify()}function a(){d.onStateChange&&d.onStateChange()}function s(){return Boolean(n)}function l(){n||(n=t?t.addNestedSub(a):e.subscribe(a),r=W8())}function c(){n&&(n(),n=void 0,r.clear(),r=nI)}const d={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:a,isSubscribed:s,trySubscribe:l,tryUnsubscribe:c,getListeners:()=>r};return d}const V8=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",G8=V8?g.useLayoutEffect:g.useEffect;function Y8({store:e,context:t,children:n,serverState:r}){const i=g.useMemo(()=>{const s=z8(e);return{store:e,subscription:s,getServerState:r?()=>r:void 0}},[e,r]),o=g.useMemo(()=>e.getState(),[e]);G8(()=>{const{subscription:s}=i;return s.onStateChange=s.notifyNestedSubs,s.trySubscribe(),o!==e.getState()&&s.notifyNestedSubs(),()=>{s.tryUnsubscribe(),s.onStateChange=void 0}},[i,o]);const a=t||Ts;return Sn.createElement(a.Provider,{value:i},n)}function $M(e=Ts){const t=e===Ts?YM:()=>g.useContext(e);return function(){const{store:r}=t();return r}}const Q8=$M();function Z8(e=Ts){const t=e===Ts?Q8:$M(e);return function(){return t().dispatch}}const Nn=Z8();M8(Wb.useSyncExternalStoreWithSelector);D8(jf.unstable_batchedUpdates);var Ue=(e=>(e[e.Custom=100000001]="Custom",e[e["No Access"]=16496e4]="No Access",e[e.Administrator=164960003]="Administrator",e))(Ue||{}),Fe=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(Fe||{}),Qt=(e=>(e[e.IndividualContact=16496e4]="IndividualContact",e[e.TeamContact=164960001]="TeamContact",e))(Qt||{}),$o=(e=>(e[e["Legal Entity"]=1]="Legal Entity",e[e["Head Office"]=2]="Head Office",e[e.Site=3]="Site",e[e["Home Worker"]=4]="Home Worker",e[e["Billing Only"]=5]="Billing Only",e[e["Data Centre"]=6]="Data Centre",e))($o||{}),yl=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(yl||{});const Re=[{accountid:"fd7fba82-1d87-4f31-b987-1ff5c502890c",name:"Vegetable Castle",bistech_sitetype:$o["Data Centre"],_primarycontactid_value:null,statecode:yl.Active},{accountid:"d0a4d1f1-bae9-37e3-9b36-a31e80783e05",name:"Fruit Farm",bistech_sitetype:$o["Head Office"],_primarycontactid_value:null,statecode:yl.Active},{accountid:"eb6c79f4-ba03-4210-9fb5-939a5eef93f7",name:"Apple Village",bistech_sitetype:$o.Site,_primarycontactid_value:null,statecode:yl.Inactive},{accountid:"c0a4d1f0-aae9-47e3-9b36-a31e80783e06",name:"Test Account 2",bistech_sitetype:$o["Legal Entity"],_primarycontactid_value:"e0c091b5-84cb-4617-befd-e100b7d6df70",statecode:yl.Active}];var Pe=(e=>(e[e["No Access"]=1e8]="No Access",e[e["Owned Cases"]=100000001]="Owned Cases",e[e["All Cases"]=100000002]="All Cases",e))(Pe||{}),Qe=(e=>(e[e["No Access"]=1e8]="No Access",e[e["All Contacts"]=100000002]="All Contacts",e))(Qe||{}),ze=(e=>(e[e["No Access"]=1e8]="No Access",e[e["Owned Orders"]=100000001]="Owned Orders",e[e["All Orders"]=100000002]="All Orders",e))(ze||{}),gt=(e=>(e[e["No Access"]=1e8]="No Access",e[e["All Invoices"]=100000001]="All Invoices",e))(gt||{});const te={tonyStark:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"df1f9f5e-ee7b-4315-b14f-b44d552b6b62",firstname:"Tony",lastname:"Stark",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue.Custom,bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],emailaddress1:"tony@starkindustries.com",msdyn_portaltermsagreementdate:"2022-02-06 12:33:11Z",jobtitle:"Chief Technology Officer",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!0,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!0,bistech_isshowninportal:!0},thor:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"b629a8a0-b0f7-4df2-95e7-4706efe1f01c",firstname:"Thor",lastname:"Odinson",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue.Administrator,bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],emailaddress1:"point.break@avengers.com",msdyn_portaltermsagreementdate:"2022-02-06 07:05:32Z",jobtitle:"Ikea Salesman",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!0,bistech_isshowninportal:!0},bruceBanner:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"cbca9b74-962a-4d88-9f3a-7f173c86424d",firstname:"Bruce",lastname:"Banner",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],emailaddress1:"test@email.com",msdyn_portaltermsagreementdate:"2022-02-06 09:22:41Z",jobtitle:"Biologist",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!1,bistech_isshowninportal:!0},steveRogers:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"24b96101-2a51-496c-8965-ead5dd89cb29",firstname:"Steve",lastname:"Rogers",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],emailaddress1:"capsicle@avengers.com",msdyn_portaltermsagreementdate:"2022-02-06 12:17:48Z",jobtitle:"War Veteran",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!0,bistech_isshowninportal:!0},nickFury:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"7a32fdf6-ce69-4031-9f3c-dc697b2e5ccc",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:"Nicholas",lastname:"Fury",emailaddress1:"fury.nj@shield.com",msdyn_portaltermsagreementdate:"2022-06-01 09:13:29Z",jobtitle:"Shield Director",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!1,bistech_isshowninportal:!0},scottLang:{bistech_portalcontacttype:Qt.IndividualContact,contactid:"5e4e6152-9810-4569-931d-87bfa777a27a",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:"Scott",lastname:"Lang",emailaddress1:"scott@baskin-robbins.com",msdyn_portaltermsagreementdate:"2022-09-22 11:33:16Z",jobtitle:"Doughnut Salesman",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!0,bistech_isshowninportal:!0},peterQuill:{bistech_portalcontacttype:Qt.TeamContact,contactid:"eda84f4d-3459-44f6-8572-af644e4ed623",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:null,lastname:"Peter Quill",emailaddress1:"starlord@guardians.gal",msdyn_portaltermsagreementdate:"2022-02-28 15:25:11Z",jobtitle:"Intergalactic Trader",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Inactive,adx_identity_logonenabled:!1,bistech_isshowninportal:!0},tchalla:{bistech_portalcontacttype:Qt.TeamContact,contactid:"c5a05ed4-48d7-406f-bac2-7fe8cd85aa28",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:null,lastname:"King T'Challa",emailaddress1:"black.panther@wakander.forever",msdyn_portaltermsagreementdate:"2022-02-12 09:31:24Z",jobtitle:"Precious Metal Tradesman",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Inactive,adx_identity_logonenabled:!0,bistech_isshowninportal:!0},stephenstrange:{bistech_portalcontacttype:Qt.TeamContact,contactid:"83527cbb-6c4e-4f7c-901d-70ef57194ab4",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:null,lastname:"Stephen Strange",emailaddress1:"sorcerer.supreme@kamartaj.np",msdyn_portaltermsagreementdate:"2022-04-06 15:02:52Z",jobtitle:"Medical Professional",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Inactive,adx_identity_logonenabled:!1,bistech_isshowninportal:!0},peterParker:{bistech_portalcontacttype:Qt.TeamContact,contactid:"e0c091b5-84cb-4617-befd-e100b7d6df70",_parentcustomerid_value:Re[0].accountid,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"],firstname:null,lastname:"Peter Parker",emailaddress1:"peter.parker@midtown-high.nyc.edu",msdyn_portaltermsagreementdate:"2022-03-09 18:17:44Z",jobtitle:"Photography Consultant",_bistech_primarysite_value:null,telephone1:"07904399888",mobilephone:"07787787788",bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,statecode:Fe.Active,adx_identity_logonenabled:!0,bistech_isshowninportal:!0}},pi={...te.tonyStark};function Zo(){const[e,t,n,r,i,o,a,s,l,c]=["contactid","contactname","parentcustomerid","parentcustomername","bistech_permissionlevel","bistech_portalcasepermissionlevel","bistech_portalcontactpermissionlevel","bistech_portalorderpermissionlevel","bistech_portalinvoicepermissionlevel","msdyn_portaltermsagreementdate"].map(d=>{const u=document.querySelector(`ul#metadata li[data-key='${d}'][data-value]`);return u&&u.getAttribute("data-value")});return{contactId:e,contactName:t,accountId:n,accountName:r,basePermissionLevel:i?Ue[i]:null,portalCasePermissionLevel:o?Pe[o]:null,portalContactPermissionLevel:a?Qe[a]:null,portalOrderPermissionLevel:s?ze[s]:null,portalInvoicePermissionLevel:l?gt[l]:null,termsAndConditionsAcceptanceDate:c?new Date(c):null}}const dn=()=>{const e=ve(n=>n.isLocalMode),t=g.useMemo(Zo,[Zo]);return e?{contactId:pi.contactid,contactName:[pi.firstname,pi.lastname].filter(n=>n).join(" "),accountId:pi._parentcustomerid_value,accountName:"Pete's Test Customer",basePermissionLevel:pi.bistech_permissionlevel,portalCasePermissionLevel:pi.bistech_portalcasepermissionlevel,portalContactPermissionLevel:pi.bistech_portalcontactpermissionlevel,portalOrderPermissionLevel:pi.bistech_portalorderpermissionlevel,portalInvoicePermissionLevel:pi.bistech_portalinvoicepermissionlevel}:t},En=({src:e,height:t,width:n,className:r})=>{const i=`/${e.replace(/^\//g,"")}`;return m("img",{height:t,width:n,src:i,alt:`${e.replaceAll("-"," ").substring(0,e.lastIndexOf("."))}`,className:r})},X8=e=>{const{contactName:t}=dn(),n=ve(o=>o.feedbackPaneIsShown),r=Nn();return N("div",{className:"header",children:[N("button",{type:"button",className:"navbar-toggle-button",title:"Toggle navigation",onClick:()=>e.setNavigationPanelExpanded(!e.isNavigationPanelExpanded),children:[m("span",{className:"icon-bar"}),m("span",{className:"icon-bar"}),m("span",{className:"icon-bar"})]}),m("div",{id:"bistech-logo",children:m(qt,{to:"/",children:m(En,{src:"bistech-logo.png",height:54})})}),m("button",{className:"feedback-button",onClick:()=>{r({type:"SetFeedbackPaneIsShown",feedbackPaneIsShown:!n})},children:m(En,{src:"feedback-main-icon.svg",height:24,width:24})}),m("div",{className:"divider"}),m(qt,{to:"Profile",className:"profile-link",replace:!0,children:t})]})};var Ge=(e=>(e[e._8x8=164960011]="_8x8",e[e.NMS=16496e4]="NMS",e[e.Solarwinds=164960001]="Solarwinds",e[e.MicrosoftLicensing=164960002]="MicrosoftLicensing",e[e.NinjaRMM=164960003]="NinjaRMM",e[e.Meraki=164960004]="Meraki",e[e.Mimecast=164960005]="Mimecast",e[e.FortiMail=164960006]="FortiMail",e[e.FortiGate=164960007]="FortiGate",e[e.FortiAnalyzer=164960008]="FortiAnalyzer",e[e.VMWare=164960009]="VMWare",e[e.WebAbility=164960010]="WebAbility",e[e.Azure=164960012]="Azure",e[e.M365AdminCentre=164960013]="M365AdminCentre",e))(Ge||{}),he=(e=>(e[e.Incident=1]="Incident",e[e["Major Incident"]=2]="Major Incident",e[e["Support Request"]=3]="Support Request",e[e.Problem=4]="Problem",e[e.Change=5]="Change",e))(he||{}),ie=(e=>(e[e.Open=16496e4]="Open",e[e["In Progress"]=1]="In Progress",e[e["On Hold"]=2]="On Hold",e[e["Pending Feedback"]=3]="Pending Feedback",e[e.Resolved=4]="Resolved",e[e["Closure Requested"]=164960002]="Closure Requested",e[e.Closed=5]="Closed",e[e.Cancelled=6]="Cancelled",e[e.Merged=2e3]="Merged",e))(ie||{}),xe=(e=>(e[e["Priority 1"]=1]="Priority 1",e[e["Priority 2"]=2]="Priority 2",e[e["Priority 3"]=3]="Priority 3",e[e["Priority 4"]=4]="Priority 4",e))(xe||{});const eT=()=>{const{pathname:e}=li(),t=e.replace(/\/$/g,""),n=Object.values(Xe).filter(r=>t.includes(r.path));return m("div",{className:"breadcrumb-trail",children:n.map((r,i)=>{const o=i{const e=dn();return{contactId:e.contactId,accountId:e.accountId,permissionLevel:e.basePermissionLevel?Ue[e.basePermissionLevel]:null,portalContactPermissionLevel:e.portalContactPermissionLevel?e.portalContactPermissionLevel:null,portalCasePermissionLevel:e.portalCasePermissionLevel?e.portalCasePermissionLevel:null,portalOrderPermissionLevel:e.portalOrderPermissionLevel?e.portalOrderPermissionLevel:null}},Mn=()=>{const e=rT(),t=ve(o=>o.appInsights);if(!t)return{appInsights:null,trackExceptionWithBistechMetadata:null,trackRenderExceptionWithBistechMetadata:null,trackEventWithBistechMetadata:null};function n(o){console.error(o),t==null||t.trackException({exception:o instanceof Error?o:new Error((o==null?void 0:o.toString())||"Unknown error")},{errorType:"Error",...e})}function r(o){console.warn(o),t==null||t.trackEvent({name:o.type},{event:o,...e})}function i(o,a){console.error(o),t==null||t.trackException({exception:o},{errorType:"RenderError",...e,reactComponentStack:a.componentStack})}return{appInsights:t,trackExceptionWithBistechMetadata:n,trackRenderExceptionWithBistechMetadata:i,trackEventWithBistechMetadata:r}},iT=e=>N("span",{className:"info-card",children:[N("span",{className:"info-card-header",children:[m("span",{className:"info-card-icon",children:e.info.icon}),N("span",{className:"info-card-heading",children:[m("p",{className:"info-card-primary-text",children:e.info.primaryText}),m("p",{className:"info-card-secondary-text",children:e.info.secondaryText})]})]}),m("span",{className:"info-card-additional-fields",children:e.info.additionalFields.map(t=>N("p",{children:[m("strong",{children:t.name}),": ",m("span",{children:t.value})]},t.name))})]}),yt=e=>{const t=Mn();return m(r5,{...e,onError:(n,r)=>{var i;return(i=t.trackRenderExceptionWithBistechMetadata)==null?void 0:i.call(t,n,r)},children:e.children})};class r5 extends Sn.Component{constructor(t){super(t),this.state={latestError:void 0}}componentDidCatch(t,n){this.setState({latestError:{error:t,errorInfo:n}}),this.props.onError(t,n)}render(){var t,n;return this.state.latestError?this.props.customErrorFallbackRender?(n=(t=this.props).customErrorFallbackRender)==null?void 0:n.call(t,this.state.latestError):m(i5,{error:this.state.latestError.error,errorInfo:this.state.latestError.errorInfo}):this.props.children}}const i5=e=>{var r,i,o,a,s,l;const[t,n]=g.useState(!1);return N("span",{className:"error-fallback",onMouseOver:()=>n(!0),onMouseLeave:()=>n(!1),children:[m(iI,{})," Error occurred",t&&m(iT,{info:{icon:m(iI,{}),primaryText:"Error",secondaryText:((r=e.error)==null?void 0:r.name)||"Error",additionalFields:[{name:"Message",value:((i=e.error)==null?void 0:i.message)||"null"},{name:"Stack",value:((o=e.error)==null?void 0:o.stack)||"null"},{name:"Component Stack",value:((a=e.errorInfo)==null?void 0:a.componentStack)||"null"},{name:"Cause",value:((l=(s=e.error)==null?void 0:s.cause)==null?void 0:l.toString())||"null"}]}})]})};var oI={},Op=void 0;try{Op=window}catch{}function Sw(e,t){if(typeof Op<"u"){var n=Op.__packages__=Op.__packages__||{};if(!n[e]||!oI[e]){oI[e]=t;var r=n[e]=n[e]||[];r.push(t)}}}Sw("@fluentui/set-version","6.0.0");var Vb=function(e,t){return Vb=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},Vb(e,t)};function fn(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Vb(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var B=function(){return B=Object.assign||function(t){for(var n,r=1,i=arguments.length;r=0;s--)(a=e[s])&&(o=(i<3?a(o):i>3?a(t,n,o):a(t,n))||o);return i>3&&o&&Object.defineProperty(t,n,o),o}function Bn(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,o;r"u"?Id.none:Id.insertNode,defaultPrefix:"css",namespace:void 0,cspSettings:void 0},t),this._classNameToArgs=(r=n==null?void 0:n.classNameToArgs)!==null&&r!==void 0?r:this._classNameToArgs,this._counter=(i=n==null?void 0:n.counter)!==null&&i!==void 0?i:this._counter,this._keyToClassName=(a=(o=this._config.classNameCache)!==null&&o!==void 0?o:n==null?void 0:n.keyToClassName)!==null&&a!==void 0?a:this._keyToClassName,this._preservedRules=(s=n==null?void 0:n.preservedRules)!==null&&s!==void 0?s:this._preservedRules,this._rules=(l=n==null?void 0:n.rules)!==null&&l!==void 0?l:this._rules}return e.getInstance=function(){if(mc=xc[aI],!mc||mc._lastStyleElement&&mc._lastStyleElement.ownerDocument!==document){var t=(xc==null?void 0:xc.FabricConfig)||{},n=new e(t.mergeStyles,t.serializedStylesheet);mc=n,xc[aI]=n}return mc},e.prototype.serialize=function(){return JSON.stringify({classNameToArgs:this._classNameToArgs,counter:this._counter,keyToClassName:this._keyToClassName,preservedRules:this._preservedRules,rules:this._rules})},e.prototype.setConfig=function(t){this._config=B(B({},this._config),t)},e.prototype.onReset=function(t){var n=this;return this._onResetCallbacks.push(t),function(){n._onResetCallbacks=n._onResetCallbacks.filter(function(r){return r!==t})}},e.prototype.onInsertRule=function(t){var n=this;return this._onInsertRuleCallbacks.push(t),function(){n._onInsertRuleCallbacks=n._onInsertRuleCallbacks.filter(function(r){return r!==t})}},e.prototype.getClassName=function(t){var n=this._config.namespace,r=t||this._config.defaultPrefix;return"".concat(n?n+"-":"").concat(r,"-").concat(this._counter++)},e.prototype.cacheClassName=function(t,n,r,i){this._keyToClassName[n]=t,this._classNameToArgs[t]={args:r,rules:i}},e.prototype.classNameFromKey=function(t){return this._keyToClassName[t]},e.prototype.getClassNameCache=function(){return this._keyToClassName},e.prototype.argsFromClassName=function(t){var n=this._classNameToArgs[t];return n&&n.args},e.prototype.insertedRulesFromClassName=function(t){var n=this._classNameToArgs[t];return n&&n.rules},e.prototype.insertRule=function(t,n){var r=this._config.injectionMode,i=r!==Id.none?this._getStyleElement():void 0;if(n&&this._preservedRules.push(t),i)switch(r){case Id.insertNode:var o=i.sheet;try{o.insertRule(t,o.cssRules.length)}catch{}break;case Id.appendChild:i.appendChild(document.createTextNode(t));break}else this._rules.push(t);this._config.onInsertRule&&this._config.onInsertRule(t),this._onInsertRuleCallbacks.forEach(function(a){return a()})},e.prototype.getRules=function(t){return(t?this._preservedRules.join(""):"")+this._rules.join("")},e.prototype.reset=function(){this._rules=[],this._counter=0,this._classNameToArgs={},this._keyToClassName={},this._onResetCallbacks.forEach(function(t){return t()})},e.prototype.resetKeys=function(){this._keyToClassName={}},e.prototype._getStyleElement=function(){var t=this;return!this._styleElement&&typeof document<"u"&&(this._styleElement=this._createStyleElement(),o5||window.requestAnimationFrame(function(){t._styleElement=void 0})),this._styleElement},e.prototype._createStyleElement=function(){var t=document.head,n=document.createElement("style"),r=null;n.setAttribute("data-merge-styles","true");var i=this._config.cspSettings;if(i&&i.nonce&&n.setAttribute("nonce",i.nonce),this._lastStyleElement)r=this._lastStyleElement.nextElementSibling;else{var o=this._findPlaceholderStyleTag();o?r=o.nextElementSibling:r=t.childNodes[0]}return t.insertBefore(n,t.contains(r)?r:null),this._lastStyleElement=n,n},e.prototype._findPlaceholderStyleTag=function(){var t=document.head;return t?t.querySelector("style[data-merge-styles]"):null},e}();function oT(){for(var e=[],t=0;t=0)o(c.split(" "));else{var d=i.argsFromClassName(c);d?o(d):n.indexOf(c)===-1&&n.push(c)}else Array.isArray(c)?o(c):typeof c=="object"&&r.push(c)}}return o(e),{classes:n,objects:r}}function aT(e){vu!==e&&(vu=e)}function sT(){return vu===void 0&&(vu=typeof document<"u"&&!!document.documentElement&&document.documentElement.getAttribute("dir")==="rtl"),vu}var vu;vu=sT();function C0(){return{rtl:sT()}}var sI={};function a5(e,t){var n=e[t];n.charAt(0)!=="-"&&(e[t]=sI[n]=sI[n]||n.replace(/([A-Z])/g,"-$1").toLowerCase())}var xm;function s5(){var e;if(!xm){var t=typeof document<"u"?document:void 0,n=typeof navigator<"u"?navigator:void 0,r=(e=n==null?void 0:n.userAgent)===null||e===void 0?void 0:e.toLowerCase();t?xm={isWebkit:!!(t&&"WebkitAppearance"in t.documentElement.style),isMoz:!!(r&&r.indexOf("firefox")>-1),isOpera:!!(r&&r.indexOf("opera")>-1),isMs:!!(n&&(/rv:11.0/i.test(n.userAgent)||/Edge\/\d./i.test(navigator.userAgent)))}:xm={isWebkit:!0,isMoz:!0,isOpera:!0,isMs:!0}}return xm}var lI={"user-select":1};function l5(e,t){var n=s5(),r=e[t];if(lI[r]){var i=e[t+1];lI[r]&&(n.isWebkit&&e.push("-webkit-"+r,i),n.isMoz&&e.push("-moz-"+r,i),n.isMs&&e.push("-ms-"+r,i),n.isOpera&&e.push("-o-"+r,i))}}var c5=["column-count","font-weight","flex","flex-grow","flex-shrink","fill-opacity","opacity","order","z-index","zoom"];function u5(e,t){var n=e[t],r=e[t+1];if(typeof r=="number"){var i=c5.indexOf(n)>-1,o=n.indexOf("--")>-1,a=i||o?"":"px";e[t+1]="".concat(r).concat(a)}}var _m,za="left",Va="right",d5="@noflip",cI=(_m={},_m[za]=Va,_m[Va]=za,_m),uI={"w-resize":"e-resize","sw-resize":"se-resize","nw-resize":"ne-resize"};function f5(e,t,n){if(e.rtl){var r=t[n];if(!r)return;var i=t[n+1];if(typeof i=="string"&&i.indexOf(d5)>=0)t[n+1]=i.replace(/\s*(?:\/\*\s*)?\@noflip\b(?:\s*\*\/)?\s*?/g,"");else if(r.indexOf(za)>=0)t[n]=r.replace(za,Va);else if(r.indexOf(Va)>=0)t[n]=r.replace(Va,za);else if(String(i).indexOf(za)>=0)t[n+1]=i.replace(za,Va);else if(String(i).indexOf(Va)>=0)t[n+1]=i.replace(Va,za);else if(cI[r])t[n]=cI[r];else if(uI[i])t[n+1]=uI[i];else switch(r){case"margin":case"padding":t[n+1]=m5(i);break;case"box-shadow":t[n+1]=v5(i,0);break}}}function v5(e,t){var n=e.split(" "),r=parseInt(n[t],10);return n[0]=n[0].replace(String(r),String(r*-1)),n.join(" ")}function m5(e){if(typeof e=="string"){var t=e.split(" ");if(t.length===4)return"".concat(t[0]," ").concat(t[3]," ").concat(t[2]," ").concat(t[1])}return e}function p5(e){for(var t=[],n=0,r=0,i=0;in&&t.push(e.substring(n,i)),n=i+1);break}return n-1&&t.push([r.index,r.index+r[0].length,r[1].split(",").map(function(i){return":global(".concat(i.trim(),")")}).join(", ")]);return t.reverse().reduce(function(i,o){var a=o[0],s=o[1],l=o[2],c=i.slice(0,a),d=i.slice(s);return c+l+d},e)}function dI(e,t){return e.indexOf(":global(")>=0?e.replace(lT,"$1"):e.indexOf(":")===0?t+e:e.indexOf("&")<0?t+" "+e:e}function fI(e,t,n,r){t===void 0&&(t={__order:[]}),n.indexOf("@")===0?(n=n+"{"+e,mu([r],t,n)):n.indexOf(",")>-1?A5(n).split(",").map(function(i){return i.trim()}).forEach(function(i){return mu([r],t,dI(i,e))}):mu([r],t,dI(n,e))}function mu(e,t,n){t===void 0&&(t={__order:[]}),n===void 0&&(n="&");var r=Pi.getInstance(),i=t[n];i||(i={},t[n]=i,t.__order.push(n));for(var o=0,a=e;o0){n.subComponentStyles={};var f=n.subComponentStyles,v=function(A){if(r.hasOwnProperty(A)){var p=r[A];f[A]=function(C){return ga.apply(void 0,p.map(function(y){return typeof y=="function"?y(C):y}))}}};for(var c in r)v(c)}return n}function rd(){for(var e=[],t=0;t"u")){var t=e;return t&&t.ownerDocument&&t.ownerDocument.defaultView?t.ownerDocument.defaultView:Gb}}var Kv=function(){function e(t,n){this._timeoutIds=null,this._immediateIds=null,this._intervalIds=null,this._animationFrameIds=null,this._isDisposed=!1,this._parent=t||null,this._onErrorHandler=n,this._noop=function(){}}return e.prototype.dispose=function(){var t;if(this._isDisposed=!0,this._parent=null,this._timeoutIds){for(t in this._timeoutIds)this._timeoutIds.hasOwnProperty(t)&&this.clearTimeout(parseInt(t,10));this._timeoutIds=null}if(this._immediateIds){for(t in this._immediateIds)this._immediateIds.hasOwnProperty(t)&&this.clearImmediate(parseInt(t,10));this._immediateIds=null}if(this._intervalIds){for(t in this._intervalIds)this._intervalIds.hasOwnProperty(t)&&this.clearInterval(parseInt(t,10));this._intervalIds=null}if(this._animationFrameIds){for(t in this._animationFrameIds)this._animationFrameIds.hasOwnProperty(t)&&this.cancelAnimationFrame(parseInt(t,10));this._animationFrameIds=null}},e.prototype.setTimeout=function(t,n){var r=this,i=0;return this._isDisposed||(this._timeoutIds||(this._timeoutIds={}),i=setTimeout(function(){try{r._timeoutIds&&delete r._timeoutIds[i],t.apply(r._parent)}catch(o){r._logError(o)}},n),this._timeoutIds[i]=!0),i},e.prototype.clearTimeout=function(t){this._timeoutIds&&this._timeoutIds[t]&&(clearTimeout(t),delete this._timeoutIds[t])},e.prototype.setImmediate=function(t,n){var r=this,i=0,o=_t(n);if(!this._isDisposed){this._immediateIds||(this._immediateIds={});var a=function(){try{r._immediateIds&&delete r._immediateIds[i],t.apply(r._parent)}catch(s){r._logError(s)}};i=o.setTimeout(a,0),this._immediateIds[i]=!0}return i},e.prototype.clearImmediate=function(t,n){var r=_t(n);this._immediateIds&&this._immediateIds[t]&&(r.clearTimeout(t),delete this._immediateIds[t])},e.prototype.setInterval=function(t,n){var r=this,i=0;return this._isDisposed||(this._intervalIds||(this._intervalIds={}),i=setInterval(function(){try{t.apply(r._parent)}catch(o){r._logError(o)}},n),this._intervalIds[i]=!0),i},e.prototype.clearInterval=function(t){this._intervalIds&&this._intervalIds[t]&&(clearInterval(t),delete this._intervalIds[t])},e.prototype.throttle=function(t,n,r){var i=this;if(this._isDisposed)return this._noop;var o=n||0,a=!0,s=!0,l=0,c,d,u=null;r&&typeof r.leading=="boolean"&&(a=r.leading),r&&typeof r.trailing=="boolean"&&(s=r.trailing);var f=function(A){var p=Date.now(),C=p-l,y=a?o-C:o;return C>=o&&(!A||a)?(l=p,u&&(i.clearTimeout(u),u=null),c=t.apply(i._parent,d)):u===null&&s&&(u=i.setTimeout(f,y)),c},v=function(){for(var A=[],p=0;p=a&&(F=!0),d=I);var k=I-d,D=a-k,P=I-u,H=!1;return c!==null&&(P>=c&&A?H=!0:D=Math.min(D,c-P)),k>=a||H||F?C(I):(A===null||!E)&&l&&(A=i.setTimeout(y,D)),f},h=function(){return!!A},b=function(){h()&&p(Date.now())},w=function(){return h()&&C(Date.now()),f},S=function(){for(var E=[],I=0;I-1)for(var a=n.split(/[ ,]+/),s=0;s"u")){var t=e;return t&&t.ownerDocument?t.ownerDocument:document}}var yA,Cf=0,hT=wo({overflow:"hidden !important"}),vI="data-is-scrollable",S5=function(e,t){if(e){var n=0,r=null,i=function(a){a.targetTouches.length===1&&(n=a.targetTouches[0].clientY)},o=function(a){if(a.targetTouches.length===1&&(a.stopPropagation(),!!r)){var s=a.targetTouches[0].clientY-n,l=AT(a.target);l&&(r=l),r.scrollTop===0&&s>0&&a.preventDefault(),r.scrollHeight-Math.ceil(r.scrollTop)<=r.clientHeight&&s<0&&a.preventDefault()}};t.on(e,"touchstart",i,{passive:!1}),t.on(e,"touchmove",o,{passive:!1}),r=e}},I5=function(e,t){if(e){var n=function(r){r.stopPropagation()};t.on(e,"touchmove",n,{passive:!1})}},gT=function(e){e.preventDefault()};function D5(){var e=gr();e&&e.body&&!Cf&&(e.body.classList.add(hT),e.body.addEventListener("touchmove",gT,{passive:!1,capture:!1})),Cf++}function F5(){if(Cf>0){var e=gr();e&&e.body&&Cf===1&&(e.body.classList.remove(hT),e.body.removeEventListener("touchmove",gT)),Cf--}}function N5(){if(yA===void 0){var e=document.createElement("div");e.style.setProperty("width","100px"),e.style.setProperty("height","100px"),e.style.setProperty("overflow","scroll"),e.style.setProperty("position","absolute"),e.style.setProperty("top","-9999px"),document.body.appendChild(e),yA=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return yA}function AT(e){for(var t=e,n=gr(e);t&&t!==n.body;){if(t.getAttribute(vI)==="true")return t;t=t.parentElement}for(t=e;t&&t!==n.body;){if(t.getAttribute(vI)!=="false"){var r=getComputedStyle(t),i=r?r.getPropertyValue("overflow-y"):"";if(i&&(i==="scroll"||i==="auto"))return t}t=t.parentElement}return(!t||t===n.body)&&(t=_t(e)),t}var M5=void 0;function Mw(e){console&&console.warn&&console.warn(e)}function yT(e,t,n,r,i){if(i===!0&&!1)for(var o,a;o1?r[1]:""}return this.__className},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_disposables",{get:function(){return this.__disposables||(this.__disposables=[]),this.__disposables},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_async",{get:function(){return this.__async||(this.__async=new Kv(this),this._disposables.push(this.__async)),this.__async},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_events",{get:function(){return this.__events||(this.__events=new Ao(this),this._disposables.push(this.__events)),this.__events},enumerable:!1,configurable:!0}),t.prototype._resolveRef=function(n){var r=this;return this.__resolves||(this.__resolves={}),this.__resolves[n]||(this.__resolves[n]=function(i){return r[n]=i}),this.__resolves[n]},t.prototype._updateComponentRef=function(n,r){r===void 0&&(r={}),n&&r&&n.componentRef!==r.componentRef&&(this._setComponentRef(n.componentRef,null),this._setComponentRef(r.componentRef,this))},t.prototype._warnDeprecations=function(n){this.className,this.props},t.prototype._warnMutuallyExclusive=function(n){this.className,this.props},t.prototype._warnConditionallyRequiredProps=function(n,r,i){yT(this.className,this.props,n,r,i)},t.prototype._setComponentRef=function(n,r){!this._skipComponentRefResolution&&n&&(typeof n=="function"&&n(r),typeof n=="object"&&(n.current=r))},t})(g.Component);function T5(e,t,n){for(var r=0,i=n.length;r-1&&i._virtual.children.splice(o,1)}n._virtual.parent=r||void 0,r&&(r._virtual||(r._virtual={children:[]}),r._virtual.children.push(n))}var W5="data-is-focusable",z5="data-is-visible",V5="data-focuszone-id",G5="data-is-sub-focuszone";function Y5(e,t,n){return lr(e,t,!0,!1,!1,n)}function Q5(e,t,n){return Mr(e,t,!0,!1,!0,n)}function Z5(e,t,n,r){return r===void 0&&(r=!0),lr(e,t,r,!1,!1,n,!1,!0)}function X5(e,t,n,r){return r===void 0&&(r=!0),Mr(e,t,r,!1,!0,n,!1,!0)}function q5(e,t){var n=lr(e,e,!0,!1,!1,!0,void 0,void 0,t);return n?(FT(n),!0):!1}function Mr(e,t,n,r,i,o,a,s){if(!t||!a&&t===e)return null;var l=w0(t);if(i&&l&&(o||!(zo(t)||Pw(t)))){var c=Mr(e,t.lastElementChild,!0,!0,!0,o,a,s);if(c){if(s&&yo(c,!0)||!s)return c;var d=Mr(e,c.previousElementSibling,!0,!0,!0,o,a,s);if(d)return d;for(var u=c.parentElement;u&&u!==t;){var f=Mr(e,u.previousElementSibling,!0,!0,!0,o,a,s);if(f)return f;u=u.parentElement}}}if(n&&l&&yo(t,s))return t;var v=Mr(e,t.previousElementSibling,!0,!0,!0,o,a,s);return v||(r?null:Mr(e,t.parentElement,!0,!1,!1,o,a,s))}function lr(e,t,n,r,i,o,a,s,l){if(!t||t===e&&i&&!a)return null;var c=l?IT:w0,d=c(t);if(n&&d&&yo(t,s))return t;if(!i&&d&&(o||!(zo(t)||Pw(t)))){var u=lr(e,t.firstElementChild,!0,!0,!1,o,a,s,l);if(u)return u}if(t===e)return null;var f=lr(e,t.nextElementSibling,!0,!0,!1,o,a,s,l);return f||(r?null:lr(e,t.parentElement,!1,!1,!0,o,a,s,l))}function w0(e){if(!e||!e.getAttribute)return!1;var t=e.getAttribute(z5);return t!=null?t==="true":e.offsetHeight!==0||e.offsetParent!==null||e.isVisible===!0}function IT(e){return!!e&&w0(e)&&!e.hidden&&window.getComputedStyle(e).visibility!=="hidden"}function yo(e,t){if(!e||e.disabled)return!1;var n=0,r=null;e&&e.getAttribute&&(r=e.getAttribute("tabIndex"),r&&(n=parseInt(r,10)));var i=e.getAttribute?e.getAttribute(W5):null,o=r!==null&&n>=0,a=!!e&&i!=="false"&&(e.tagName==="A"||e.tagName==="BUTTON"||e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.tagName==="SELECT"||i==="true"||o);return t?n!==-1&&a:a}function zo(e){return!!(e&&e.getAttribute&&e.getAttribute(V5))}function Pw(e){return!!(e&&e.getAttribute&&e.getAttribute(G5)==="true")}function J5(e){var t=gr(e),n=t&&t.activeElement;return!!(n&&Rr(e,n))}function DT(e,t){return j5(e,t)!=="true"}var pc=void 0;function FT(e){if(e){if(pc){pc=e;return}pc=e;var t=_t(e);t&&t.requestAnimationFrame(function(){pc&&pc.focus(),pc=void 0})}}function $5(e,t){for(var n=e,r=0,i=t;r(e.cacheSize||t9)){var v=_t();!((l=v==null?void 0:v.FabricConfig)===null||l===void 0)&&l.enableClassNameCacheFullWarning&&(console.warn("Styles are being recalculated too frequently. Cache miss rate is ".concat(n,"/").concat(r,".")),console.trace()),t.clear(),n=0,e.disableCaching=!0}return c[Bm]};return o}function wA(e,t){return t=r9(t),e.has(t)||e.set(t,new Map),e.get(t)}function pI(e,t){if(typeof t=="function"){var n=t.__cachedInputs__;if(n)for(var r=0,i=t.__cachedInputs__;r"u"?null:WeakMap;function o9(){jp++}function Jt(e,t,n){if(t===void 0&&(t=100),n===void 0&&(n=!1),!av)return e;if(!hI){var r=Pi.getInstance();r&&r.onReset&&Pi.getInstance().onReset(o9),hI=!0}var i,o=0,a=jp;return function(){for(var l=[],c=0;c0&&o>t)&&(i=gI(),o=0,a=jp),d=i;for(var u=0;u=0||l.indexOf("data-")===0||l.indexOf("aria-")===0;c&&(!n||(n==null?void 0:n.indexOf(l))===-1)&&(i[l]=e[l])}return i}function id(e){w9(e,{componentDidMount:R9,componentDidUpdate:P9,componentWillUnmount:k9})}function R9(){Wh(this.props.componentRef,this)}function P9(e){e.componentRef!==this.props.componentRef&&(Wh(e.componentRef,null),Wh(this.props.componentRef,this))}function k9(){Wh(this.props.componentRef,null)}function Wh(e,t){e&&(typeof e=="object"?e.current=t:typeof e=="function"&&e(t))}var Li,x9=(Li={},Li[ge.up]=1,Li[ge.down]=1,Li[ge.left]=1,Li[ge.right]=1,Li[ge.home]=1,Li[ge.end]=1,Li[ge.tab]=1,Li[ge.pageUp]=1,Li[ge.pageDown]=1,Li);function TT(e){return!!x9[e]}var xn="ms-Fabric--isFocusVisible",yI="ms-Fabric--isFocusHidden";function bI(e,t){e&&(e.classList.add(t?xn:yI),e.classList.remove(t?yI:xn))}function Nl(e,t,n){var r;n?n.forEach(function(i){return bI(i.current,e)}):bI((r=_t(t))===null||r===void 0?void 0:r.document.body,e)}var CI=new WeakMap,wI=new WeakMap;function EI(e,t){var n,r=CI.get(e);return r?n=r+t:n=1,CI.set(e,n),n}function _9(e){var t=wI.get(e);if(t)return t;var n=function(a){return PT(a,e.registeredProviders)},r=function(a){return kT(a,e.registeredProviders)},i=function(a){return xT(a,e.registeredProviders)},o=function(a){return _T(a,e.registeredProviders)};return t={onMouseDown:n,onPointerDown:r,onKeyDown:i,onKeyUp:o},wI.set(e,t),t}var lv=g.createContext(void 0);function B9(e){var t=g.useContext(lv);g.useEffect(function(){var n,r,i,o,a=_t(e==null?void 0:e.current);if(!(!a||((n=a.FabricConfig)===null||n===void 0?void 0:n.disableFocusRects)===!0)){var s=a,l,c,d,u;if(!((r=t==null?void 0:t.providerRef)===null||r===void 0)&&r.current&&(!((o=(i=t==null?void 0:t.providerRef)===null||i===void 0?void 0:i.current)===null||o===void 0)&&o.addEventListener)){s=t.providerRef.current;var f=_9(t);l=f.onMouseDown,c=f.onPointerDown,d=f.onKeyDown,u=f.onKeyUp}else l=PT,c=kT,d=xT,u=_T;var v=EI(s,1);return v<=1&&(s.addEventListener("mousedown",l,!0),s.addEventListener("pointerdown",c,!0),s.addEventListener("keydown",d,!0),s.addEventListener("keyup",u,!0)),function(){var A;!a||((A=a.FabricConfig)===null||A===void 0?void 0:A.disableFocusRects)===!0||(v=EI(s,-1),v===0&&(s.removeEventListener("mousedown",l,!0),s.removeEventListener("pointerdown",c,!0),s.removeEventListener("keydown",d,!0),s.removeEventListener("keyup",u,!0)))}}},[t,e])}var RT=function(e){return B9(e.rootRef),null};function PT(e,t){Nl(!1,e.target,t)}function kT(e,t){e.pointerType!=="mouse"&&Nl(!1,e.target,t)}function xT(e,t){TT(e.which)&&Nl(!0,e.target,t)}function _T(e,t){TT(e.which)&&Nl(!0,e.target,t)}var BT=function(e){var t=e.providerRef,n=e.layerRoot,r=g.useState([])[0],i=g.useContext(lv),o=i!==void 0&&!n,a=g.useMemo(function(){return o?void 0:{providerRef:t,registeredProviders:r,registerProvider:function(s){r.push(s),i==null||i.registerProvider(s)},unregisterProvider:function(s){i==null||i.unregisterProvider(s);var l=r.indexOf(s);l>=0&&r.splice(l,1)}}},[t,r,i,o]);return g.useEffect(function(){if(a)return a.registerProvider(a.providerRef),function(){return a.unregisterProvider(a.providerRef)}},[a]),a?g.createElement(lv.Provider,{value:a},e.children):g.createElement(g.Fragment,null,e.children)};function L9(e){var t=null;try{var n=_t();t=n?n.localStorage.getItem(e):null}catch{}return t}var Ys,SI="language";function O9(e){if(e===void 0&&(e="sessionStorage"),Ys===void 0){var t=gr(),n=e==="localStorage"?L9(SI):e==="sessionStorage"?wT(SI):void 0;n&&(Ys=n),Ys===void 0&&t&&(Ys=t.documentElement.getAttribute("lang")),Ys===void 0&&(Ys="en")}return Ys}function II(e){for(var t=[],n=1;n-1;e[r]=o?i:LT(e[r]||{},i,n)}else e[r]=i}return n.pop(),e}var DI=function(){return!window||!window.navigator||!window.navigator.userAgent?!1:/iPad|iPhone|iPod/i.test(window.navigator.userAgent)},U9=["TEMPLATE","STYLE","SCRIPT"];function OT(e){var t=gr(e);if(!t)return function(){};for(var n=[];e!==t.body&&e.parentElement;){for(var r=0,i=e.parentElement.children;r"u"||e){var n=_t(),r=(t=n==null?void 0:n.navigator)===null||t===void 0?void 0:t.userAgent;SA=!!r&&r.indexOf("Macintosh")!==-1}return!!SA}function H9(e){var t=Lu(function(n){var r=Lu(function(i){return function(o){return n(o,i)}});return function(i,o){return e(i,o?r(o):n)}});return t}var K9=Lu(H9);function W9(e,t){return K9(e)(t)}var z9=["theme","styles"];function wr(e,t,n,r,i){r=r||{scope:"",fields:void 0};var o=r.scope,a=r.fields,s=a===void 0?z9:a,l=g.forwardRef(function(d,u){var f=g.useRef(),v=b9(s,o),A=v.styles;v.dir;var p=js(v,["styles","dir"]),C=n?n(d):void 0,y=f.current&&f.current.__cachedInputs__||[],h=d.styles;if(!f.current||A!==y[1]||h!==y[2]){var b=function(w){return mT(w,t,A,h)};b.__cachedInputs__=[t,A,h],b.__noStyleOverride__=!A&&!h,f.current=b}return g.createElement(e,B({ref:u},p,C,d,{styles:f.current}))});l.displayName="Styled".concat(e.displayName||e.name);var c=i?g.memo(l):l;return l.displayName&&(c.displayName=l.displayName),c}var V9=function(){var e,t=_t();return!((e=t==null?void 0:t.navigator)===null||e===void 0)&&e.userAgent?t.navigator.userAgent.indexOf("rv:11.0")>-1:!1};function zv(e,t){for(var n=B({},t),r=0,i=Object.keys(e);rr?" (+ ".concat(Dd.length-r," more)"):"")),DA=void 0,Dd=[]},n)))}function X9(e,t,n,r,i){i===void 0&&(i=!1);var o=B({primaryButtonBorder:"transparent",errorText:r?"#F1707B":"#a4262c",messageText:r?"#F3F2F1":"#323130",messageLink:r?"#6CB8F6":"#005A9E",messageLinkHovered:r?"#82C7FF":"#004578",infoIcon:r?"#C8C6C4":"#605e5c",errorIcon:r?"#F1707B":"#A80000",blockingIcon:r?"#442726":"#FDE7E9",warningIcon:r?"#C8C6C4":"#797775",severeWarningIcon:r?"#FCE100":"#D83B01",successIcon:r?"#92C353":"#107C10",infoBackground:r?"#323130":"#f3f2f1",errorBackground:r?"#442726":"#FDE7E9",blockingBackground:r?"#442726":"#FDE7E9",warningBackground:r?"#433519":"#FFF4CE",severeWarningBackground:r?"#4F2A0F":"#FED9CC",successBackground:r?"#393D1B":"#DFF6DD",warningHighlight:r?"#fff100":"#ffb900",successText:r?"#92c353":"#107C10"},n),a=jT(e,t,o,r);return q9(a,i)}function jT(e,t,n,r,i){var o={},a=e||{},s=a.white,l=a.black,c=a.themePrimary,d=a.themeDark,u=a.themeDarker,f=a.themeDarkAlt,v=a.themeLighter,A=a.neutralLight,p=a.neutralLighter,C=a.neutralDark,y=a.neutralQuaternary,h=a.neutralQuaternaryAlt,b=a.neutralPrimary,w=a.neutralSecondary,S=a.neutralSecondaryAlt,E=a.neutralTertiary,I=a.neutralTertiaryAlt,F=a.neutralLighterAlt,k=a.accent;return s&&(o.bodyBackground=s,o.bodyFrameBackground=s,o.accentButtonText=s,o.buttonBackground=s,o.primaryButtonText=s,o.primaryButtonTextHovered=s,o.primaryButtonTextPressed=s,o.inputBackground=s,o.inputForegroundChecked=s,o.listBackground=s,o.menuBackground=s,o.cardStandoutBackground=s),l&&(o.bodyTextChecked=l,o.buttonTextCheckedHovered=l),c&&(o.link=c,o.primaryButtonBackground=c,o.inputBackgroundChecked=c,o.inputIcon=c,o.inputFocusBorderAlt=c,o.menuIcon=c,o.menuHeader=c,o.accentButtonBackground=c),d&&(o.primaryButtonBackgroundPressed=d,o.inputBackgroundCheckedHovered=d,o.inputIconHovered=d),u&&(o.linkHovered=u),f&&(o.primaryButtonBackgroundHovered=f),v&&(o.inputPlaceholderBackgroundChecked=v),A&&(o.bodyBackgroundChecked=A,o.bodyFrameDivider=A,o.bodyDivider=A,o.variantBorder=A,o.buttonBackgroundCheckedHovered=A,o.buttonBackgroundPressed=A,o.listItemBackgroundChecked=A,o.listHeaderBackgroundPressed=A,o.menuItemBackgroundPressed=A,o.menuItemBackgroundChecked=A),p&&(o.bodyBackgroundHovered=p,o.buttonBackgroundHovered=p,o.buttonBackgroundDisabled=p,o.buttonBorderDisabled=p,o.primaryButtonBackgroundDisabled=p,o.disabledBackground=p,o.listItemBackgroundHovered=p,o.listHeaderBackgroundHovered=p,o.menuItemBackgroundHovered=p),y&&(o.primaryButtonTextDisabled=y,o.disabledSubtext=y),h&&(o.listItemBackgroundCheckedHovered=h),E&&(o.disabledBodyText=E,o.variantBorderHovered=(n==null?void 0:n.variantBorderHovered)||E,o.buttonTextDisabled=E,o.inputIconDisabled=E,o.disabledText=E),b&&(o.bodyText=b,o.actionLink=b,o.buttonText=b,o.inputBorderHovered=b,o.inputText=b,o.listText=b,o.menuItemText=b),F&&(o.bodyStandoutBackground=F,o.defaultStateBackground=F),C&&(o.actionLinkHovered=C,o.buttonTextHovered=C,o.buttonTextChecked=C,o.buttonTextPressed=C,o.inputTextHovered=C,o.menuItemTextHovered=C),w&&(o.bodySubtext=w,o.focusBorder=w,o.inputBorder=w,o.smallInputBorder=w,o.inputPlaceholderText=w),S&&(o.buttonBorder=S),I&&(o.disabledBodySubtext=I,o.disabledBorder=I,o.buttonBackgroundChecked=I,o.menuDivider=I),k&&(o.accentButtonBackground=k),t!=null&&t.elevation4&&(o.cardShadow=t.elevation4),!r&&(t!=null&&t.elevation8)?o.cardShadowHovered=t.elevation8:o.variantBorderHovered&&(o.cardShadowHovered="0 0 1px "+o.variantBorderHovered),o=B(B({},o),n),o}function q9(e,t){var n="";return t===!0&&(n=" /* @deprecated */"),e.listTextColor=e.listText+n,e.menuItemBackgroundChecked+=n,e.warningHighlight+=n,e.warningText=e.messageText+n,e.successText+=n,e}function J9(e,t){var n,r,i;t===void 0&&(t={});var o=II({},e,t,{semanticColors:jT(t.palette,t.effects,t.semanticColors,t.isInverted===void 0?e.isInverted:t.isInverted)});if(!((n=t.palette)===null||n===void 0)&&n.themePrimary&&!(!((r=t.palette)===null||r===void 0)&&r.accent)&&(o.palette.accent=t.palette.themePrimary),t.defaultFontStyle)for(var a=0,s=Object.keys(o.fonts);a"u"?global:window,PI=wf&&wf.CSPSettings&&wf.CSPSettings.nonce,$r=GB();function GB(){var e=wf.__themeState__||{theme:void 0,lastStyleElement:void 0,registeredStyles:[]};return e.runState||(e=$c($c({},e),{perf:{count:0,duration:0},runState:{flushTimer:0,mode:0,buffer:[]}})),e.registeredThemableStyles||(e=$c($c({},e),{registeredThemableStyles:[]})),wf.__themeState__=e,e}function YB(e,t){$r.loadStyles?$r.loadStyles(zT(e).styleString,e):qB(e)}function QB(e){$r.theme=e,XB()}function ZB(e){e===void 0&&(e=3),(e===3||e===2)&&(kI($r.registeredStyles),$r.registeredStyles=[]),(e===3||e===1)&&(kI($r.registeredThemableStyles),$r.registeredThemableStyles=[])}function kI(e){e.forEach(function(t){var n=t&&t.styleElement;n&&n.parentElement&&n.parentElement.removeChild(n)})}function XB(){if($r.theme){for(var e=[],t=0,n=$r.registeredThemableStyles;t0&&(ZB(1),YB([].concat.apply([],e)))}}function zT(e){var t=$r.theme,n=!1,r=(e||[]).map(function(i){var o=i.theme;if(o){n=!0;var a=t?t[o]:void 0,s=i.defaultValue||"inherit";return t&&!a&&console&&!(o in t)&&typeof DEBUG<"u"&&DEBUG&&console.warn('Theming value not provided for "'.concat(o,'". Falling back to "').concat(s,'".')),a||s}else return i.rawString});return{styleString:r.join(""),themable:n}}function qB(e){if(!(typeof document>"u")){var t=document.getElementsByTagName("head")[0],n=document.createElement("style"),r=zT(e),i=r.styleString,o=r.themable;n.setAttribute("data-load-themed-styles","true"),PI&&n.setAttribute("nonce",PI),n.appendChild(document.createTextNode(i)),$r.perf.count++,t.appendChild(n);var a=document.createEvent("HTMLEvents");a.initEvent("styleinsert",!0,!1),a.args={newStyle:n},document.dispatchEvent(a);var s={styleElement:n,themableStyle:e};o?$r.registeredThemableStyles.push(s):$r.registeredStyles.push(s)}}var gi=Vv({}),JB=[],qb="theme";function VT(){var e,t,n,r=_t();!((t=r==null?void 0:r.FabricConfig)===null||t===void 0)&&t.legacyTheme?$B(r.FabricConfig.legacyTheme):Ni.getSettings([qb]).theme||(!((n=r==null?void 0:r.FabricConfig)===null||n===void 0)&&n.theme&&(gi=Vv(r.FabricConfig.theme)),Ni.applySettings((e={},e[qb]=gi,e)))}VT();function GT(e){return e===void 0&&(e=!1),e===!0&&(gi=Vv({},e)),gi}function $B(e,t){var n;return t===void 0&&(t=!1),gi=Vv(e,t),QB(B(B(B(B({},gi.palette),gi.semanticColors),gi.effects),e6(gi))),Ni.applySettings((n={},n[qb]=gi,n)),JB.forEach(function(r){try{r(gi)}catch{}}),gi}function e6(e){for(var t={},n=0,r=Object.keys(e.fonts);nt.bottom||e.leftt.right)}function Vh(e,t){var n=[];return e.topt.bottom&&n.push(we.bottom),e.leftt.right&&n.push(we.right),n}function qn(e,t){return e[we[t]]}function LI(e,t,n){return e[we[t]]=n,e}function cv(e,t){var n=od(t);return(qn(e,n.positiveEdge)+qn(e,n.negativeEdge))/2}function I0(e,t){return e>0?t:t*-1}function Jb(e,t){return I0(e,qn(t,e))}function ea(e,t,n){var r=qn(e,n)-qn(t,n);return I0(n,r)}function ju(e,t,n,r){r===void 0&&(r=!0);var i=qn(e,t)-n,o=LI(e,t,n);return r&&(o=LI(e,t*-1,qn(e,t*-1)-i)),o}function uv(e,t,n,r){return r===void 0&&(r=0),ju(e,n,qn(t,n)+I0(n,r))}function n6(e,t,n,r){r===void 0&&(r=0);var i=n*-1,o=I0(i,r);return ju(e,n*-1,qn(t,n)+o)}function Gh(e,t,n){var r=Jb(n,e);return r>Jb(n,t)}function r6(e,t){for(var n=Vh(e,t),r=0,i=0,o=n;i0&&(o.indexOf(s*-1)>-1?s=s*-1:(l=s,s=o.slice(-1)[0]),a=Yh(e,t,{targetEdge:s,alignmentEdge:l},i))}return a=Yh(e,t,{targetEdge:d,alignmentEdge:u},i),{elementRectangle:a,targetEdge:d,alignmentEdge:u}}function o6(e,t,n,r){var i=e.alignmentEdge,o=e.targetEdge,a=e.elementRectangle,s=i*-1,l=Yh(a,t,{targetEdge:o,alignmentEdge:s},n,r);return{elementRectangle:l,targetEdge:o,alignmentEdge:s}}function a6(e,t,n,r,i,o,a){i===void 0&&(i=0);var s=r.alignmentEdge,l=r.alignTargetEdge,c={elementRectangle:e,targetEdge:r.targetEdge,alignmentEdge:s};!o&&!a&&(c=i6(e,t,n,r,i));var d=Vh(c.elementRectangle,n),u=o?-c.targetEdge:void 0;if(d.length>0)if(l)if(c.alignmentEdge&&d.indexOf(c.alignmentEdge*-1)>-1){var f=o6(c,t,i,a);if(_w(f.elementRectangle,n))return f;c=MA(Vh(f.elementRectangle,n),c,n,u)}else c=MA(d,c,n,u);else c=MA(d,c,n,u);return c}function MA(e,t,n,r){for(var i=0,o=e;iMath.abs(ea(e,n,t*-1))?t*-1:t}function s6(e,t,n){return n!==void 0&&qn(e,t)===qn(n,t)}function l6(e,t,n,r,i,o,a,s){var l={},c=Bw(t),d=o?n:n*-1,u=i||od(n).positiveEdge;return(!a||s6(e,w6(u),r))&&(u=QT(e,u,r)),l[we[d]]=ea(e,c,d),l[we[u]]=ea(e,c,u),s&&(l[we[d*-1]]=ea(e,c,d*-1),l[we[u*-1]]=ea(e,c,u*-1)),l}function c6(e){return Math.sqrt(e*e*2)}function u6(e,t,n){if(e===void 0&&(e=Yt.bottomAutoEdge),n)return{alignmentEdge:n.alignmentEdge,isAuto:n.isAuto,targetEdge:n.targetEdge};var r=B({},BI[e]);return dr()?(r.alignmentEdge&&r.alignmentEdge%2===0&&(r.alignmentEdge=r.alignmentEdge*-1),t!==void 0?BI[t]:r):r}function d6(e,t,n,r,i){return e.isAuto&&(e.alignmentEdge=ZT(e.targetEdge,t,n)),e.alignTargetEdge=i,e}function ZT(e,t,n){var r=cv(t,e),i=cv(n,e),o=od(e),a=o.positiveEdge,s=o.negativeEdge;return r<=i?a:s}function f6(e,t,n,r,i,o,a){var s=Yh(e,t,r,i,a);return _w(s,n)?{elementRectangle:s,targetEdge:r.targetEdge,alignmentEdge:r.alignmentEdge}:a6(s,t,n,r,i,o,a)}function v6(e,t,n){var r=e.targetEdge*-1,i=new No(0,e.elementRectangle.width,0,e.elementRectangle.height),o={},a=QT(e.elementRectangle,e.alignmentEdge?e.alignmentEdge:od(r).positiveEdge,n),s=ea(e.elementRectangle,e.targetRectangle,r),l=s>Math.abs(qn(t,r));return o[we[r]]=qn(t,r),o[we[a]]=ea(t,i,a),{elementPosition:B({},o),closestEdge:ZT(e.targetEdge,t,i),targetEdge:r,hideBeak:!l}}function m6(e,t){var n=t.targetRectangle,r=od(t.targetEdge),i=r.positiveEdge,o=r.negativeEdge,a=cv(n,t.targetEdge),s=new No(e/2,t.elementRectangle.width-e/2,e/2,t.elementRectangle.height-e/2),l=new No(0,e,0,e);return l=ju(l,t.targetEdge*-1,-e/2),l=YT(l,t.targetEdge*-1,a-Jb(i,t.elementRectangle)),Gh(l,s,i)?Gh(l,s,o)||(l=uv(l,s,o)):l=uv(l,s,i),l}function Bw(e){var t=e.getBoundingClientRect();return new No(t.left,t.right,t.top,t.bottom)}function p6(e){return new No(e.left,e.right,e.top,e.bottom)}function h6(e,t){var n;if(t){if(t.preventDefault){var r=t;n=new No(r.clientX,r.clientX,r.clientY,r.clientY)}else if(t.getBoundingClientRect)n=Bw(t);else{var i=t,o=i.left||i.x,a=i.top||i.y,s=i.right||o,l=i.bottom||a;n=new No(o,s,a,l)}if(!_w(n,e))for(var c=Vh(n,e),d=0,u=c;d=r&&i&&c.top<=i&&c.bottom>=i&&(a={top:c.top,left:c.left,right:c.right,bottom:c.bottom,width:c.width,height:c.height})}return a}function S6(e,t){return E6(e,t)}function ad(){var e=g.useRef();return e.current||(e.current=new Kv),g.useEffect(function(){return function(){var t;(t=e.current)===null||t===void 0||t.dispose(),e.current=void 0}},[]),e.current}function Mo(e){var t=g.useRef();return t.current===void 0&&(t.current={value:typeof e=="function"?e():e}),t.current.value}function qT(e){var t=g.useState(e),n=t[0],r=t[1],i=Mo(function(){return function(){r(!0)}}),o=Mo(function(){return function(){r(!1)}}),a=Mo(function(){return function(){r(function(s){return!s})}});return[n,{setTrue:i,setFalse:o,toggle:a}]}function TA(e){var t=g.useRef(function(){throw new Error("Cannot call an event handler while rendering")});return Ou(function(){t.current=e},[e]),Mo(function(){return function(){for(var n=[],r=0;r0&&c>l&&(s=c-l>1)}i!==s&&o(s)}}),function(){return n.dispose()}}),i}function F6(e){var t=e.originalElement,n=e.containsFocus;t&&n&&t!==_t()&&setTimeout(function(){var r;(r=t.focus)===null||r===void 0||r.call(t)},0)}function N6(e,t){var n=e.onRestoreFocus,r=n===void 0?F6:n,i=g.useRef(),o=g.useRef(!1);g.useEffect(function(){return i.current=gr().activeElement,J5(t.current)&&(o.current=!0),function(){var a;r==null||r({originalElement:i.current,containsFocus:o.current,documentContainsFocus:((a=gr())===null||a===void 0?void 0:a.hasFocus())||!1}),i.current=void 0}},[]),Hu(t,"focus",g.useCallback(function(){o.current=!0},[]),!0),Hu(t,"blur",g.useCallback(function(a){t.current&&a.relatedTarget&&!t.current.contains(a.relatedTarget)&&(o.current=!1)},[]),!0)}function M6(e,t){var n=String(e["aria-modal"]).toLowerCase()==="true"&&e.enableAriaHiddenSiblings;g.useEffect(function(){if(n&&t.current){var r=OT(t.current);return r}},[t,n])}var Ow=g.forwardRef(function(e,t){var n=zv({shouldRestoreFocus:!0,enableAriaHiddenSiblings:!0},e),r=g.useRef(),i=$i(r,t);M6(n,r),N6(n,r);var o=n.role,a=n.className,s=n.ariaLabel,l=n.ariaLabelledBy,c=n.ariaDescribedBy,d=n.style,u=n.children,f=n.onDismiss,v=D6(n,r),A=g.useCallback(function(C){switch(C.which){case ge.escape:f&&(f(C),C.preventDefault(),C.stopPropagation());break}},[f]),p=D0();return Hu(p,"keydown",A),g.createElement("div",B({ref:i},Bt(n,rc),{className:a,role:o,"aria-label":s,"aria-labelledby":l,"aria-describedby":c,onKeyDown:A,style:B({overflowY:v?"scroll":void 0,outline:"none"},d)}),u)});Ow.displayName="Popup";var hc,T6="CalloutContentBase",R6=(hc={},hc[we.top]=eu.slideUpIn10,hc[we.bottom]=eu.slideDownIn10,hc[we.left]=eu.slideLeftIn10,hc[we.right]=eu.slideRightIn10,hc),OI={top:0,left:0},P6={opacity:0,filter:"opacity(0)",pointerEvents:"none"},k6=["role","aria-roledescription"],n4={preventDismissOnLostFocus:!1,preventDismissOnScroll:!1,preventDismissOnResize:!1,isBeakVisible:!0,beakWidth:16,gapSpace:0,minPagePadding:8,directionalHint:Yt.bottomAutoEdge},x6=Cr({disableCaching:!0});function _6(e,t,n){var r=e.bounds,i=e.minPagePadding,o=i===void 0?n4.minPagePadding:i,a=e.target,s=g.useState(!1),l=s[0],c=s[1],d=g.useRef(),u=g.useCallback(function(){if(!d.current||l){var v=typeof r=="function"?n?r(a,n):void 0:r;!v&&n&&(v=S6(t.current,n),v={top:v.top+o,left:v.left+o,right:v.right-o,bottom:v.bottom-o,width:v.width-o*2,height:v.height-o*2}),d.current=v,l&&c(!1)}return d.current},[r,o,a,t,n,l]),f=ad();return Hu(n,"resize",f.debounce(function(){c(!0)},500,{leading:!0})),u}function B6(e,t,n){var r,i=e.calloutMaxHeight,o=e.finalHeight,a=e.directionalHint,s=e.directionalHintFixed,l=e.hidden,c=g.useState(),d=c[0],u=c[1],f=(r=n==null?void 0:n.elementPosition)!==null&&r!==void 0?r:{},v=f.top,A=f.bottom;return g.useEffect(function(){var p,C=(p=t())!==null&&p!==void 0?p:{},y=C.top,h=C.bottom,b;typeof v=="number"&&h?b=h-v:typeof A=="number"&&typeof y=="number"&&h&&(b=h-y-A),!i&&!l||i&&b&&i>b?u(b):u(i||void 0)},[A,i,o,a,s,t,l,n,v]),d}function L6(e,t,n,r,i){var o=g.useState(),a=o[0],s=o[1],l=g.useRef(0),c=g.useRef(),d=ad(),u=e.hidden,f=e.target,v=e.finalHeight,A=e.calloutMaxHeight,p=e.onPositioned,C=e.directionalHint;return g.useEffect(function(){if(u)s(void 0),l.current=0;else{var y=d.requestAnimationFrame(function(){var h,b;if(t.current&&n){var w=B(B({},e),{target:r.current,bounds:i()}),S=n.cloneNode(!0);S.style.maxHeight=A?"".concat(A):"",S.style.visibility="hidden",(h=n.parentElement)===null||h===void 0||h.appendChild(S);var E=c.current===f?a:void 0,I=v?C6(w,t.current,S,E):b6(w,t.current,S,E);(b=n.parentElement)===null||b===void 0||b.removeChild(S),!a&&I||a&&I&&!H6(a,I)&&l.current<5?(l.current++,s(I)):l.current>0&&(l.current=0,p==null||p(a))}},n);return c.current=f,function(){d.cancelAnimationFrame(y),c.current=void 0}}},[u,C,d,n,A,t,r,v,i,p,a,e,f]),a}function O6(e,t,n){var r=e.hidden,i=e.setInitialFocus,o=ad(),a=!!t;g.useEffect(function(){if(!r&&i&&a&&n){var s=o.requestAnimationFrame(function(){return q5(n)},n);return function(){return o.cancelAnimationFrame(s)}}},[r,a,o,n,i])}function U6(e,t,n,r,i){var o=e.hidden,a=e.onDismiss,s=e.preventDismissOnScroll,l=e.preventDismissOnResize,c=e.preventDismissOnLostFocus,d=e.dismissOnTargetClick,u=e.shouldDismissOnWindowFocus,f=e.preventDismissOnEvent,v=g.useRef(!1),A=ad(),p=Mo([function(){v.current=!0},function(){v.current=!1}]),C=!!t;return g.useEffect(function(){var y=function(I){C&&!s&&w(I)},h=function(I){!l&&!(f&&f(I))&&(a==null||a(I))},b=function(I){c||w(I)},w=function(I){var F=I.composedPath?I.composedPath():[],k=F.length>0?F[0]:I.target,D=n.current&&!Rr(n.current,k);if(D&&v.current){v.current=!1;return}if(!r.current&&D||I.target!==i&&D&&(!r.current||"stopPropagation"in r.current||d||k!==r.current&&!Rr(r.current,k))){if(f&&f(I))return;a==null||a(I)}},S=function(I){u&&(f&&!f(I)||!f&&!c)&&!(i!=null&&i.document.hasFocus())&&I.relatedTarget===null&&(a==null||a(I))},E=new Promise(function(I){A.setTimeout(function(){if(!o&&i){var F=[Eo(i,"scroll",y,!0),Eo(i,"resize",h,!0),Eo(i.document.documentElement,"focus",b,!0),Eo(i.document.documentElement,"click",b,!0),Eo(i,"blur",S,!0)];I(function(){F.forEach(function(k){return k()})})}},0)});return function(){E.then(function(I){return I()})}},[o,A,n,r,i,a,u,d,c,l,s,C,f]),p}var r4=g.memo(g.forwardRef(function(e,t){var n=zv(n4,e),r=n.styles,i=n.style,o=n.ariaLabel,a=n.ariaDescribedBy,s=n.ariaLabelledBy,l=n.className,c=n.isBeakVisible,d=n.children,u=n.beakWidth,f=n.calloutWidth,v=n.calloutMaxWidth,A=n.calloutMinWidth,p=n.doNotLayer,C=n.finalHeight,y=n.hideOverflow,h=y===void 0?!!C:y,b=n.backgroundColor,w=n.calloutMaxHeight,S=n.onScroll,E=n.shouldRestoreFocus,I=E===void 0?!0:E,F=n.target,k=n.hidden,D=n.onLayerMounted,P=n.popupProps,H=g.useRef(null),G=g.useState(null),_=G[0],M=G[1],K=g.useCallback(function(Te){M(Te)},[]),Q=$i(H,t),O=e4(n.target,{current:_}),R=O[0],T=O[1],j=_6(n,R,T),W=L6(n,H,_,R,j),U=B6(n,j,W),Y=U6(n,W,H,R,T),x=Y[0],L=Y[1],V=(W==null?void 0:W.elementPosition.top)&&(W==null?void 0:W.elementPosition.bottom),ee=B(B({},W==null?void 0:W.elementPosition),{maxHeight:U});if(V&&(ee.bottom=void 0),O6(n,W,_),g.useEffect(function(){k||D==null||D()},[k]),!T)return null;var J=h,$=c&&!!F,ne=x6(r,{theme:n.theme,className:l,overflowYHidden:J,calloutWidth:f,positions:W,beakWidth:u,backgroundColor:b,calloutMaxWidth:v,calloutMinWidth:A,doNotLayer:p}),le=B(B({maxHeight:w||"100%"},i),J&&{overflowY:"hidden"}),Me=n.hidden?{visibility:"hidden"}:void 0;return g.createElement("div",{ref:Q,className:ne.container,style:Me},g.createElement("div",B({},Bt(n,rc,k6),{className:kr(ne.root,W&&W.targetEdge&&R6[W.targetEdge]),style:W?B({},ee):P6,tabIndex:-1,ref:K}),$&&g.createElement("div",{className:ne.beak,style:j6(W)}),$&&g.createElement("div",{className:ne.beakCurtain}),g.createElement(Ow,B({role:n.role,"aria-roledescription":n["aria-roledescription"],ariaDescribedBy:a,ariaLabel:o,ariaLabelledBy:s,className:ne.calloutMain,onDismiss:n.onDismiss,onMouseDown:x,onMouseUp:L,onRestoreFocus:n.onRestoreFocus,onScroll:S,shouldRestoreFocus:I,style:le},P),d)))}),function(e,t){return!t.shouldUpdateWhenHidden&&e.hidden&&t.hidden?!0:Nw(e,t)});function j6(e){var t,n,r=B(B({},(t=e==null?void 0:e.beakPosition)===null||t===void 0?void 0:t.elementPosition),{display:!((n=e==null?void 0:e.beakPosition)===null||n===void 0)&&n.hideBeak?"none":void 0});return!r.top&&!r.bottom&&!r.left&&!r.right&&(r.left=OI.left,r.top=OI.top),r}function H6(e,t){return UI(e.elementPosition,t.elementPosition)&&UI(e.beakPosition.elementPosition,t.beakPosition.elementPosition)}function UI(e,t){for(var n in t)if(t.hasOwnProperty(n)){var r=e[n],i=t[n];if(r!==void 0&&i!==void 0){if(r.toFixed(2)!==i.toFixed(2))return!1}else return!1}return!0}r4.displayName=T6;function K6(e){return{height:e,width:e}}var W6={container:"ms-Callout-container",root:"ms-Callout",beak:"ms-Callout-beak",beakCurtain:"ms-Callout-beakCurtain",calloutMain:"ms-Callout-main"},z6=function(e){var t,n=e.theme,r=e.className,i=e.overflowYHidden,o=e.calloutWidth,a=e.beakWidth,s=e.backgroundColor,l=e.calloutMaxWidth,c=e.calloutMinWidth,d=e.doNotLayer,u=Lr(W6,n),f=n.semanticColors,v=n.effects;return{container:[u.container,{position:"relative"}],root:[u.root,n.fonts.medium,{position:"absolute",display:"flex",zIndex:d?Uu.Layer:void 0,boxSizing:"border-box",borderRadius:v.roundedCorner2,boxShadow:v.elevation16,selectors:(t={},t[Ae]={borderWidth:1,borderStyle:"solid",borderColor:"WindowText"},t)},zB(),r,!!o&&{width:o},!!l&&{maxWidth:l},!!c&&{minWidth:c}],beak:[u.beak,{position:"absolute",backgroundColor:f.menuBackground,boxShadow:"inherit",border:"inherit",boxSizing:"border-box",transform:"rotate(45deg)"},K6(a),s&&{backgroundColor:s}],beakCurtain:[u.beakCurtain,{position:"absolute",top:0,right:0,bottom:0,left:0,backgroundColor:f.menuBackground,borderRadius:v.roundedCorner2}],calloutMain:[u.calloutMain,{backgroundColor:f.menuBackground,overflowX:"hidden",overflowY:"auto",position:"relative",width:"100%",borderRadius:v.roundedCorner2},i&&{overflowY:"hidden"},s&&{backgroundColor:s}]}},V6=wr(r4,z6,void 0,{scope:"CalloutContent"});const i4=g.createContext(void 0),G6=()=>()=>{};i4.Provider;function Y6(){var e;return(e=g.useContext(i4))!==null&&e!==void 0?e:G6}var Q6=Cr(),Z6=Jt(function(e,t){return Vv(B(B({},e),{rtl:t}))}),X6=function(e){var t=e.theme,n=e.dir,r=dr(t)?"rtl":"ltr",i=dr()?"rtl":"ltr",o=n||r;return{rootDir:o!==r||o!==i?o:n,needsTheme:o!==r}},o4=g.forwardRef(function(e,t){var n=e.className,r=e.theme,i=e.applyTheme,o=e.applyThemeToBody,a=e.styles,s=Q6(a,{theme:r,applyTheme:i,className:n}),l=g.useRef(null);return J6(o,s,l),g.createElement(g.Fragment,null,q6(e,s,l,t))});o4.displayName="FabricBase";function q6(e,t,n,r){var i=t.root,o=e.as,a=o===void 0?"div":o,s=e.dir,l=e.theme,c=Bt(e,rc,["dir"]),d=X6(e),u=d.rootDir,f=d.needsTheme,v=g.createElement(BT,{providerRef:n},g.createElement(a,B({dir:u},c,{className:i,ref:$i(n,r)})));return f&&(v=g.createElement(A9,{settings:{theme:Z6(l,s==="rtl")}},v)),v}function J6(e,t,n){var r=t.bodyThemed;return g.useEffect(function(){if(e){var i=gr(n.current);if(i)return i.body.classList.add(r),function(){i.body.classList.remove(r)}}},[r,e,n]),n}var RA={fontFamily:"inherit"},$6={root:"ms-Fabric",bodyThemed:"ms-Fabric-bodyThemed"},eL=function(e){var t=e.applyTheme,n=e.className,r=e.preventBlanketFontInheritance,i=e.theme,o=Lr($6,i);return{root:[o.root,i.fonts.medium,{color:i.palette.neutralPrimary},!r&&{"& button":RA,"& input":RA,"& textarea":RA},t&&{color:i.semanticColors.bodyText,backgroundColor:i.semanticColors.bodyBackground},n],bodyThemed:[{backgroundColor:i.semanticColors.bodyBackground}]}},tL=wr(o4,eL,void 0,{scope:"Fabric"}),Ef={},Uw={},a4="fluent-default-layer-host",nL="#".concat(a4);function rL(e,t){Ef[e]||(Ef[e]=[]),Ef[e].push(t);var n=Uw[e];if(n)for(var r=0,i=n;r=0&&(n.splice(r,1),n.length===0&&delete Ef[e])}var i=Uw[e];if(i)for(var o=0,a=i;o0&&t.current.naturalHeight>0||t.current.complete&&AL.test(o):!1;u&&l(ur.loaded)}}),g.useEffect(function(){n==null||n(s)},[s]);var c=g.useCallback(function(u){r==null||r(u),o&&l(ur.loaded)},[o,r]),d=g.useCallback(function(u){i==null||i(u),l(ur.error)},[i]);return[s,c,d]}var c4=g.forwardRef(function(e,t){var n=g.useRef(),r=g.useRef(),i=bL(e,r),o=i[0],a=i[1],s=i[2],l=Bt(e,T9,["width","height"]),c=e.src,d=e.alt,u=e.width,f=e.height,v=e.shouldFadeIn,A=v===void 0?!0:v,p=e.shouldStartVisible,C=e.className,y=e.imageFit,h=e.role,b=e.maximizeFrame,w=e.styles,S=e.theme,E=e.loading,I=CL(e,o,r,n),F=gL(w,{theme:S,className:C,width:u,height:f,maximizeFrame:b,shouldFadeIn:A,shouldStartVisible:p,isLoaded:o===ur.loaded||o===ur.notLoaded&&e.shouldStartVisible,isLandscape:I===dv.landscape,isCenter:y===Tr.center,isCenterContain:y===Tr.centerContain,isCenterCover:y===Tr.centerCover,isContain:y===Tr.contain,isCover:y===Tr.cover,isNone:y===Tr.none,isError:o===ur.error,isNotImageFit:y===void 0});return g.createElement("div",{className:F.root,style:{width:u,height:f},ref:n},g.createElement("img",B({},l,{onLoad:a,onError:s,key:yL+e.src||"",className:F.image,ref:$i(r,t),src:c,alt:d,role:h,loading:E})))});c4.displayName="ImageBase";function CL(e,t,n,r){var i=g.useRef(t),o=g.useRef();return(o===void 0||i.current===ur.notLoaded&&t===ur.loaded)&&(o.current=wL(e,t,n,r)),i.current=t,o.current}function wL(e,t,n,r){var i=e.imageFit,o=e.width,a=e.height;if(e.coverStyle!==void 0)return e.coverStyle;if(t===ur.loaded&&(i===Tr.cover||i===Tr.contain||i===Tr.centerContain||i===Tr.centerCover)&&n.current&&r.current){var s=void 0;typeof o=="number"&&typeof a=="number"&&i!==Tr.centerContain&&i!==Tr.centerCover?s=o/a:s=r.current.clientWidth/r.current.clientHeight;var l=n.current.naturalWidth/n.current.naturalHeight;if(l>s)return dv.landscape}return dv.portrait}var EL={root:"ms-Image",rootMaximizeFrame:"ms-Image--maximizeFrame",image:"ms-Image-image",imageCenter:"ms-Image-image--center",imageContain:"ms-Image-image--contain",imageCover:"ms-Image-image--cover",imageCenterContain:"ms-Image-image--centerContain",imageCenterCover:"ms-Image-image--centerCover",imageNone:"ms-Image-image--none",imageLandscape:"ms-Image-image--landscape",imagePortrait:"ms-Image-image--portrait"},SL=function(e){var t=e.className,n=e.width,r=e.height,i=e.maximizeFrame,o=e.isLoaded,a=e.shouldFadeIn,s=e.shouldStartVisible,l=e.isLandscape,c=e.isCenter,d=e.isContain,u=e.isCover,f=e.isCenterContain,v=e.isCenterCover,A=e.isNone,p=e.isError,C=e.isNotImageFit,y=e.theme,h=Lr(EL,y),b={position:"absolute",left:"50% /* @noflip */",top:"50%",transform:"translate(-50%,-50%)"},w=_t(),S=w!==void 0&&w.navigator.msMaxTouchPoints===void 0,E=d&&l||u&&!l?{width:"100%",height:"auto"}:{width:"auto",height:"100%"};return{root:[h.root,y.fonts.medium,{overflow:"hidden"},i&&[h.rootMaximizeFrame,{height:"100%",width:"100%"}],o&&a&&!s&&eu.fadeIn400,(c||d||u||f||v)&&{position:"relative"},t],image:[h.image,{display:"block",opacity:0},o&&["is-loaded",{opacity:1}],c&&[h.imageCenter,b],d&&[h.imageContain,S&&{width:"100%",height:"100%",objectFit:"contain"},!S&&E,!S&&b],u&&[h.imageCover,S&&{width:"100%",height:"100%",objectFit:"cover"},!S&&E,!S&&b],f&&[h.imageCenterContain,l&&{maxWidth:"100%"},!l&&{maxHeight:"100%"},b],v&&[h.imageCenterCover,l&&{maxHeight:"100%"},!l&&{maxWidth:"100%"},b],A&&[h.imageNone,{width:"auto",height:"auto"}],C&&[!!n&&!r&&{height:"auto",width:"100%"},!n&&!!r&&{height:"100%",width:"auto"},!!n&&!!r&&{height:"100%",width:"100%"}],l&&h.imageLandscape,!l&&h.imagePortrait,!o&&"is-notLoaded",a&&"is-fadeIn",p&&"is-error"]}},N0=wr(c4,SL,void 0,{scope:"Image"},!0);N0.displayName="Image";var Ml=rd({root:{display:"inline-block"},placeholder:["ms-Icon-placeHolder",{width:"1em"}],image:["ms-Icon-imageContainer",{overflow:"hidden"}]}),u4="ms-Icon",IL=function(e){var t=e.className,n=e.iconClassName,r=e.isPlaceholder,i=e.isImage,o=e.styles;return{root:[r&&Ml.placeholder,Ml.root,i&&Ml.image,n,t,o&&o.root,o&&o.imageContainer]}},d4=Jt(function(e){var t=Q9(e)||{subset:{},code:void 0},n=t.code,r=t.subset;return n?{children:n,iconClassName:r.className,fontFamily:r.fontFace&&r.fontFace.fontFamily,mergeImageProps:r.mergeImageProps}:null},void 0,!0),$b=function(e){var t=e.iconName,n=e.className,r=e.style,i=r===void 0?{}:r,o=d4(t)||{},a=o.iconClassName,s=o.children,l=o.fontFamily,c=o.mergeImageProps,d=Bt(e,Ot),u=e["aria-label"]||e.title,f=e["aria-label"]||e["aria-labelledby"]||e.title?{role:c?void 0:"img"}:{"aria-hidden":!0},v=s;return c&&typeof s=="object"&&typeof s.props=="object"&&u&&(v=g.cloneElement(s,{alt:u})),g.createElement("i",B({"data-icon-name":t},f,d,c?{title:void 0,"aria-label":void 0}:{},{className:kr(u4,Ml.root,a,!t&&Ml.placeholder,n),style:B({fontFamily:l},i)}),v)};Jt(function(e,t,n){return $b({iconName:e,className:t,"aria-label":n})});var DL=Cr({cacheSize:100}),FL=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;return r._onImageLoadingStateChange=function(i){r.props.imageProps&&r.props.imageProps.onLoadingStateChange&&r.props.imageProps.onLoadingStateChange(i),i===ur.error&&r.setState({imageLoadError:!0})},r.state={imageLoadError:!1},r}return t.prototype.render=function(){var n=this.props,r=n.children,i=n.className,o=n.styles,a=n.iconName,s=n.imageErrorAs,l=n.theme,c=typeof a=="string"&&a.length===0,d=!!this.props.imageProps||this.props.iconType===Qh.image||this.props.iconType===Qh.Image,u=d4(a)||{},f=u.iconClassName,v=u.children,A=u.mergeImageProps,p=DL(o,{theme:l,className:i,iconClassName:f,isImage:d,isPlaceholder:c}),C=d?"span":"i",y=Bt(this.props,Ot,["aria-label"]),h=this.state.imageLoadError,b=B(B({},this.props.imageProps),{onLoadingStateChange:this._onImageLoadingStateChange}),w=h&&s||N0,S=this.props["aria-label"]||this.props.ariaLabel,E=b.alt||S||this.props.title,I=!!(E||this.props["aria-labelledby"]||b["aria-label"]||b["aria-labelledby"]),F=I?{role:d||A?void 0:"img","aria-label":d||A?void 0:E}:{"aria-hidden":!0},k=v;return A&&v&&typeof v=="object"&&E&&(k=g.cloneElement(v,{alt:E})),g.createElement(C,B({"data-icon-name":a},F,y,A?{title:void 0,"aria-label":void 0}:{},{className:p.root}),d?g.createElement(w,B({},b)):r||k)},t}(g.Component),eo=wr(FL,IL,void 0,{scope:"Icon"},!0);eo.displayName="Icon";var NL=function(e){var t=e.className,n=e.imageProps,r=Bt(e,Ot,["aria-label","aria-labelledby","title","aria-describedby"]),i=n.alt||e["aria-label"],o=i||e["aria-labelledby"]||e.title||n["aria-label"]||n["aria-labelledby"]||n.title,a={"aria-labelledby":e["aria-labelledby"],"aria-describedby":e["aria-describedby"],title:e.title},s=o?{}:{"aria-hidden":!0};return g.createElement("div",B({},s,r,{className:kr(u4,Ml.root,Ml.image,t)}),g.createElement(N0,B({},a,n,{alt:o?i:""})))},e1={none:0,all:1,inputOnly:2},ar;(function(e){e[e.vertical=0]="vertical",e[e.horizontal=1]="horizontal",e[e.bidirectional=2]="bidirectional",e[e.domOrder=3]="domOrder"})(ar||(ar={}));var Um="data-is-focusable",ML="data-disable-click-on-enter",PA="data-focuszone-id",lo="tabindex",kA="data-no-vertical-wrap",xA="data-no-horizontal-wrap",_A=999999999,Fd=-999999999,BA,TL="ms-FocusZone";function RL(e,t){var n;typeof MouseEvent=="function"?n=new MouseEvent("click",{ctrlKey:t==null?void 0:t.ctrlKey,metaKey:t==null?void 0:t.metaKey,shiftKey:t==null?void 0:t.shiftKey,altKey:t==null?void 0:t.altKey,bubbles:t==null?void 0:t.bubbles,cancelable:t==null?void 0:t.cancelable}):(n=document.createEvent("MouseEvents"),n.initMouseEvent("click",t?t.bubbles:!1,t?t.cancelable:!1,window,0,0,0,0,0,t?t.ctrlKey:!1,t?t.altKey:!1,t?t.shiftKey:!1,t?t.metaKey:!1,0,null)),e.dispatchEvent(n)}function PL(){return BA||(BA=wo({selectors:{":focus":{outline:"none"}}},TL)),BA}var Nd={},jm=new Set,kL=["text","number","password","email","tel","url","search","textarea"],Oo=!1,xL=function(e){fn(t,e);function t(n){var r=this,i,o,a,s;r=e.call(this,n)||this,r._root=g.createRef(),r._mergedRef=UT(),r._onFocus=function(c){if(!r._portalContainsElement(c.target)){var d=r.props,u=d.onActiveElementChanged,f=d.doNotAllowFocusEventToPropagate,v=d.stopFocusPropagation,A=d.onFocusNotification,p=d.onFocus,C=d.shouldFocusInnerElementWhenReceivedFocus,y=d.defaultTabbableElement,h=r._isImmediateDescendantOfZone(c.target),b;if(h)b=c.target;else for(var w=c.target;w&&w!==r._root.current;){if(yo(w)&&r._isImmediateDescendantOfZone(w)){b=w;break}w=ho(w,Oo)}if(C&&c.target===r._root.current){var S=y&&typeof y=="function"&&r._root.current&&y(r._root.current);S&&yo(S)?(b=S,S.focus()):(r.focus(!0),r._activeElement&&(b=null))}var E=!r._activeElement;b&&b!==r._activeElement&&((h||E)&&r._setFocusAlignment(b,!0,!0),r._activeElement=b,E&&r._updateTabIndexes()),u&&u(r._activeElement,c),(v||f)&&c.stopPropagation(),p?p(c):A&&A()}},r._onBlur=function(){r._setParkedFocus(!1)},r._onMouseDown=function(c){if(!r._portalContainsElement(c.target)){var d=r.props.disabled;if(!d){for(var u=c.target,f=[];u&&u!==r._root.current;)f.push(u),u=ho(u,Oo);for(;f.length&&(u=f.pop(),u&&yo(u)&&r._setActiveElement(u,!0),!zo(u)););}}},r._onKeyDown=function(c,d){if(!r._portalContainsElement(c.target)){var u=r.props,f=u.direction,v=u.disabled,A=u.isInnerZoneKeystroke,p=u.pagingSupportDisabled,C=u.shouldEnterInnerZone;if(!v&&(r.props.onKeyDown&&r.props.onKeyDown(c),!c.isDefaultPrevented()&&!(r._getDocument().activeElement===r._root.current&&r._isInnerZone))){if((C&&C(c)||A&&A(c))&&r._isImmediateDescendantOfZone(c.target)){var y=r._getFirstInnerZone();if(y){if(!y.focus(!0))return}else if(Pw(c.target)){if(!r.focusElement(lr(c.target,c.target.firstChild,!0)))return}else return}else{if(c.altKey)return;switch(c.which){case ge.space:if(r._shouldRaiseClicksOnSpace&&r._tryInvokeClickForFocusable(c.target,c))break;return;case ge.left:if(f!==ar.vertical&&(r._preventDefaultWhenHandled(c),r._moveFocusLeft(d)))break;return;case ge.right:if(f!==ar.vertical&&(r._preventDefaultWhenHandled(c),r._moveFocusRight(d)))break;return;case ge.up:if(f!==ar.horizontal&&(r._preventDefaultWhenHandled(c),r._moveFocusUp()))break;return;case ge.down:if(f!==ar.horizontal&&(r._preventDefaultWhenHandled(c),r._moveFocusDown()))break;return;case ge.pageDown:if(!p&&r._moveFocusPaging(!0))break;return;case ge.pageUp:if(!p&&r._moveFocusPaging(!1))break;return;case ge.tab:if(r.props.allowTabKey||r.props.handleTabKey===e1.all||r.props.handleTabKey===e1.inputOnly&&r._isElementInput(c.target)){var h=!1;if(r._processingTabKey=!0,f===ar.vertical||!r._shouldWrapFocus(r._activeElement,xA))h=c.shiftKey?r._moveFocusUp():r._moveFocusDown();else{var b=dr(d)?!c.shiftKey:c.shiftKey;h=b?r._moveFocusLeft(d):r._moveFocusRight(d)}if(r._processingTabKey=!1,h)break;r.props.shouldResetActiveElementWhenTabFromZone&&(r._activeElement=null)}return;case ge.home:if(r._isContentEditableElement(c.target)||r._isElementInput(c.target)&&!r._shouldInputLoseFocus(c.target,!1))return!1;var w=r._root.current&&r._root.current.firstChild;if(r._root.current&&w&&r.focusElement(lr(r._root.current,w,!0)))break;return;case ge.end:if(r._isContentEditableElement(c.target)||r._isElementInput(c.target)&&!r._shouldInputLoseFocus(c.target,!0))return!1;var S=r._root.current&&r._root.current.lastChild;if(r._root.current&&r.focusElement(Mr(r._root.current,S,!0,!0,!0)))break;return;case ge.enter:if(r._shouldRaiseClicksOnEnter&&r._tryInvokeClickForFocusable(c.target,c))break;return;default:return}}c.preventDefault(),c.stopPropagation()}}},r._getHorizontalDistanceFromCenter=function(c,d,u){var f=r._focusAlignment.left||r._focusAlignment.x||0,v=Math.floor(u.top),A=Math.floor(d.bottom),p=Math.floor(u.bottom),C=Math.floor(d.top),y=c&&v>A,h=!c&&p=u.left&&f<=u.left+u.width?0:Math.abs(u.left+u.width/2-f):r._shouldWrapFocus(r._activeElement,kA)?_A:Fd},id(r),r._id=fr("FocusZone"),r._focusAlignment={left:0,top:0},r._processingTabKey=!1;var l=(o=(i=n.shouldRaiseClicks)!==null&&i!==void 0?i:t.defaultProps.shouldRaiseClicks)!==null&&o!==void 0?o:!0;return r._shouldRaiseClicksOnEnter=(a=n.shouldRaiseClicksOnEnter)!==null&&a!==void 0?a:l,r._shouldRaiseClicksOnSpace=(s=n.shouldRaiseClicksOnSpace)!==null&&s!==void 0?s:l,r}return t.getOuterZones=function(){return jm.size},t._onKeyDownCapture=function(n){n.which===ge.tab&&jm.forEach(function(r){return r._updateTabIndexes()})},t.prototype.componentDidMount=function(){var n=this._root.current;if(Nd[this._id]=this,n){for(var r=ho(n,Oo);r&&r!==this._getDocument().body&&r.nodeType===1;){if(zo(r)){this._isInnerZone=!0;break}r=ho(r,Oo)}this._isInnerZone||(jm.add(this),this._root.current&&this._root.current.addEventListener("keydown",t._onKeyDownCapture,!0)),this._root.current&&this._root.current.addEventListener("blur",this._onBlur,!0),this._updateTabIndexes(),this.props.defaultTabbableElement&&typeof this.props.defaultTabbableElement=="string"?this._activeElement=this._getDocument().querySelector(this.props.defaultTabbableElement):this.props.defaultActiveElement&&(this._activeElement=this._getDocument().querySelector(this.props.defaultActiveElement)),this.props.shouldFocusOnMount&&this.focus()}},t.prototype.componentDidUpdate=function(){var n=this._root.current,r=this._getDocument();if((this._activeElement&&!Rr(this._root.current,this._activeElement,Oo)||this._defaultFocusElement&&!Rr(this._root.current,this._defaultFocusElement,Oo))&&(this._activeElement=null,this._defaultFocusElement=null,this._updateTabIndexes()),!this.props.preventFocusRestoration&&r&&this._lastIndexPath&&(r.activeElement===r.body||r.activeElement===null||r.activeElement===n)){var i=$5(n,this._lastIndexPath);i?(this._setActiveElement(i,!0),i.focus(),this._setParkedFocus(!1)):this._setParkedFocus(!0)}},t.prototype.componentWillUnmount=function(){delete Nd[this._id],this._isInnerZone||(jm.delete(this),this._root.current&&this._root.current.removeEventListener("keydown",t._onKeyDownCapture,!0)),this._root.current&&this._root.current.removeEventListener("blur",this._onBlur,!0),this._activeElement=null,this._defaultFocusElement=null},t.prototype.render=function(){var n=this,r=this.props,i=r.as,o=r.elementType,a=r.rootProps,s=r.ariaDescribedBy,l=r.ariaLabelledBy,c=r.className,d=Bt(this.props,Ot),u=i||o||"div";this._evaluateFocusBeforeRender();var f=GT();return g.createElement(u,B({"aria-labelledby":l,"aria-describedby":s},d,a,{className:kr(PL(),c),ref:this._mergedRef(this.props.elementRef,this._root),"data-focuszone-id":this._id,onKeyDown:function(v){return n._onKeyDown(v,f)},onFocus:this._onFocus,onMouseDownCapture:this._onMouseDown}),this.props.children)},t.prototype.focus=function(n,r){if(n===void 0&&(n=!1),r===void 0&&(r=!1),this._root.current)if(!n&&this._root.current.getAttribute(Um)==="true"&&this._isInnerZone){var i=this._getOwnerZone(this._root.current);if(i!==this._root.current){var o=Nd[i.getAttribute(PA)];return!!o&&o.focusElement(this._root.current)}return!1}else{if(!n&&this._activeElement&&Rr(this._root.current,this._activeElement)&&yo(this._activeElement)&&(!r||IT(this._activeElement)))return this._activeElement.focus(),!0;var a=this._root.current.firstChild;return this.focusElement(lr(this._root.current,a,!0,void 0,void 0,void 0,void 0,void 0,r))}return!1},t.prototype.focusLast=function(){if(this._root.current){var n=this._root.current&&this._root.current.lastChild;return this.focusElement(Mr(this._root.current,n,!0,!0,!0))}return!1},t.prototype.focusElement=function(n,r){var i=this.props,o=i.onBeforeFocus,a=i.shouldReceiveFocus;return a&&!a(n)||o&&!o(n)?!1:n?(this._setActiveElement(n,r),this._activeElement&&this._activeElement.focus(),!0):!1},t.prototype.setFocusAlignment=function(n){this._focusAlignment=n},Object.defineProperty(t.prototype,"defaultFocusElement",{get:function(){return this._defaultFocusElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"activeElement",{get:function(){return this._activeElement},enumerable:!1,configurable:!0}),t.prototype._evaluateFocusBeforeRender=function(){var n=this._root.current,r=this._getDocument();if(r){var i=r.activeElement;if(i!==n){var o=Rr(n,i,!1);this._lastIndexPath=o?e9(n,i):void 0}}},t.prototype._setParkedFocus=function(n){var r=this._root.current;r&&this._isParked!==n&&(this._isParked=n,n?(this.props.allowFocusRoot||(this._parkedTabIndex=r.getAttribute("tabindex"),r.setAttribute("tabindex","-1")),r.focus()):this.props.allowFocusRoot||(this._parkedTabIndex?(r.setAttribute("tabindex",this._parkedTabIndex),this._parkedTabIndex=void 0):r.removeAttribute("tabindex")))},t.prototype._setActiveElement=function(n,r){var i=this._activeElement;this._activeElement=n,i&&(zo(i)&&this._updateTabIndexes(i),i.tabIndex=-1),this._activeElement&&((!this._focusAlignment||r)&&this._setFocusAlignment(n,!0,!0),this._activeElement.tabIndex=0)},t.prototype._preventDefaultWhenHandled=function(n){this.props.preventDefaultWhenHandled&&n.preventDefault()},t.prototype._tryInvokeClickForFocusable=function(n,r){var i=n;if(i===this._root.current)return!1;do{if(i.tagName==="BUTTON"||i.tagName==="A"||i.tagName==="INPUT"||i.tagName==="TEXTAREA"||i.tagName==="SUMMARY")return!1;if(this._isImmediateDescendantOfZone(i)&&i.getAttribute(Um)==="true"&&i.getAttribute(ML)!=="true")return RL(i,r),!0;i=ho(i,Oo)}while(i!==this._root.current);return!1},t.prototype._getFirstInnerZone=function(n){if(n=n||this._activeElement||this._root.current,!n)return null;if(zo(n))return Nd[n.getAttribute(PA)];for(var r=n.firstElementChild;r;){if(zo(r))return Nd[r.getAttribute(PA)];var i=this._getFirstInnerZone(r);if(i)return i;r=r.nextElementSibling}return null},t.prototype._moveFocus=function(n,r,i,o){o===void 0&&(o=!0);var a=this._activeElement,s=-1,l=void 0,c=!1,d=this.props.direction===ar.bidirectional;if(!a||!this._root.current||this._isElementInput(a)&&!this._shouldInputLoseFocus(a,n))return!1;var u=d?a.getBoundingClientRect():null;do if(a=n?lr(this._root.current,a):Mr(this._root.current,a),d){if(a){var f=a.getBoundingClientRect(),v=r(u,f);if(v===-1&&s===-1){l=a;break}if(v>-1&&(s===-1||v=0&&v<0)break}}else{l=a;break}while(a);if(l&&l!==this._activeElement)c=!0,this.focusElement(l);else if(this.props.isCircularNavigation&&o)return n?this.focusElement(lr(this._root.current,this._root.current.firstElementChild,!0)):this.focusElement(Mr(this._root.current,this._root.current.lastElementChild,!0,!0,!0));return c},t.prototype._moveFocusDown=function(){var n=this,r=-1,i=this._focusAlignment.left||this._focusAlignment.x||0;return this._moveFocus(!0,function(o,a){var s=-1,l=Math.floor(a.top),c=Math.floor(o.bottom);return l=c||l===r)&&(r=l,i>=a.left&&i<=a.left+a.width?s=0:s=Math.abs(a.left+a.width/2-i)),s)})?(this._setFocusAlignment(this._activeElement,!1,!0),!0):!1},t.prototype._moveFocusUp=function(){var n=this,r=-1,i=this._focusAlignment.left||this._focusAlignment.x||0;return this._moveFocus(!1,function(o,a){var s=-1,l=Math.floor(a.bottom),c=Math.floor(a.top),d=Math.floor(o.top);return l>d?n._shouldWrapFocus(n._activeElement,kA)?_A:Fd:((r===-1&&l<=d||c===r)&&(r=c,i>=a.left&&i<=a.left+a.width?s=0:s=Math.abs(a.left+a.width/2-i)),s)})?(this._setFocusAlignment(this._activeElement,!1,!0),!0):!1},t.prototype._moveFocusLeft=function(n){var r=this,i=this._shouldWrapFocus(this._activeElement,xA);return this._moveFocus(dr(n),function(o,a){var s=-1,l;return dr(n)?l=parseFloat(a.top.toFixed(3))parseFloat(o.top.toFixed(3)),l&&a.right<=o.right&&r.props.direction!==ar.vertical?s=o.right-a.right:i||(s=Fd),s},void 0,i)?(this._setFocusAlignment(this._activeElement,!0,!1),!0):!1},t.prototype._moveFocusRight=function(n){var r=this,i=this._shouldWrapFocus(this._activeElement,xA);return this._moveFocus(!dr(n),function(o,a){var s=-1,l;return dr(n)?l=parseFloat(a.bottom.toFixed(3))>parseFloat(o.top.toFixed(3)):l=parseFloat(a.top.toFixed(3))=o.left&&r.props.direction!==ar.vertical?s=a.left-o.left:i||(s=Fd),s},void 0,i)?(this._setFocusAlignment(this._activeElement,!0,!1),!0):!1},t.prototype._moveFocusPaging=function(n,r){r===void 0&&(r=!0);var i=this._activeElement;if(!i||!this._root.current||this._isElementInput(i)&&!this._shouldInputLoseFocus(i,n))return!1;var o=AT(i);if(!o)return!1;var a=-1,s=void 0,l=-1,c=-1,d=o.clientHeight,u=i.getBoundingClientRect();do if(i=n?lr(this._root.current,i):Mr(this._root.current,i),i){var f=i.getBoundingClientRect(),v=Math.floor(f.top),A=Math.floor(u.bottom),p=Math.floor(f.bottom),C=Math.floor(u.top),y=this._getHorizontalDistanceFromCenter(n,u,f),h=n&&v>A+d,b=!n&&p-1&&(n&&v>l?(l=v,a=y,s=i):!n&&p-1){var i=n.selectionStart,o=n.selectionEnd,a=i!==o,s=n.value,l=n.readOnly;if(a||i>0&&!r&&!l||i!==s.length&&r&&!l||this.props.handleTabKey&&!(this.props.shouldInputLoseFocusOnArrowKey&&this.props.shouldInputLoseFocusOnArrowKey(n)))return!1}return!0},t.prototype._shouldWrapFocus=function(n,r){return this.props.checkForNoWrap?DT(n,r):!0},t.prototype._portalContainsElement=function(n){return n&&!!this._root.current&&ST(n,this._root.current)},t.prototype._getDocument=function(){return gr(this._root.current)},t.defaultProps={isCircularNavigation:!1,direction:ar.bidirectional,shouldRaiseClicks:!0},t}(g.Component),Gn;(function(e){e[e.Normal=0]="Normal",e[e.Divider=1]="Divider",e[e.Header=2]="Header",e[e.Section=3]="Section"})(Gn||(Gn={}));function Ku(e){return e.canCheck?!!(e.isChecked||e.checked):typeof e.isChecked=="boolean"?e.isChecked:typeof e.checked=="boolean"?e.checked:null}function fa(e){return!!(e.subMenuProps||e.items)}function Io(e){return!!(e.isDisabled||e.disabled)}function f4(e){var t=Ku(e),n=t!==null;return n?"menuitemcheckbox":"menuitem"}var jI=function(e){var t=e.item,n=e.classNames,r=t.iconProps;return g.createElement(eo,B({},r,{className:n.icon}))},_L=function(e){var t=e.item,n=e.hasIcons;return n?t.onRenderIcon?t.onRenderIcon(e,jI):jI(e):null},BL=function(e){var t=e.onCheckmarkClick,n=e.item,r=e.classNames,i=Ku(n);if(t){var o=function(a){return t(n,a)};return g.createElement(eo,{iconName:n.canCheck!==!1&&i?"CheckMark":"",className:r.checkmarkIcon,onClick:o})}return null},LL=function(e){var t=e.item,n=e.classNames;return t.text||t.name?g.createElement("span",{className:n.label},t.text||t.name):null},OL=function(e){var t=e.item,n=e.classNames;return t.secondaryText?g.createElement("span",{className:n.secondaryText},t.secondaryText):null},UL=function(e){var t=e.item,n=e.classNames,r=e.theme;return fa(t)?g.createElement(eo,B({iconName:dr(r)?"ChevronLeft":"ChevronRight"},t.submenuIconProps,{className:n.subMenuIcon})):null},jL=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;return r.openSubMenu=function(){var i=r.props,o=i.item,a=i.openSubMenu,s=i.getSubmenuTarget;if(s){var l=s();fa(o)&&a&&l&&a(o,l)}},r.dismissSubMenu=function(){var i=r.props,o=i.item,a=i.dismissSubMenu;fa(o)&&a&&a()},r.dismissMenu=function(i){var o=r.props.dismissMenu;o&&o(void 0,i)},id(r),r}return t.prototype.render=function(){var n=this.props,r=n.item,i=n.classNames,o=r.onRenderContent||this._renderLayout;return g.createElement("div",{className:r.split?i.linkContentMenu:i.linkContent},o(this.props,{renderCheckMarkIcon:BL,renderItemIcon:_L,renderItemName:LL,renderSecondaryText:OL,renderSubMenuIcon:UL}))},t.prototype._renderLayout=function(n,r){return g.createElement(g.Fragment,null,r.renderCheckMarkIcon(n),r.renderItemIcon(n),r.renderItemName(n),r.renderSecondaryText(n),r.renderSubMenuIcon(n))},t}(g.Component),HL=Jt(function(e){return rd({wrapper:{display:"inline-flex",height:"100%",alignItems:"center"},divider:{width:1,height:"100%",backgroundColor:e.palette.neutralTertiaryAlt}})}),Ga=36,HI=xw(0,KT),KL=Jt(function(e){var t,n,r,i,o,a=e.semanticColors,s=e.fonts,l=e.palette,c=a.menuItemBackgroundHovered,d=a.menuItemTextHovered,u=a.menuItemBackgroundPressed,f=a.bodyDivider,v={item:[s.medium,{color:a.bodyText,position:"relative",boxSizing:"border-box"}],divider:{display:"block",height:"1px",backgroundColor:f,position:"relative"},root:[da(e),s.medium,{color:a.bodyText,backgroundColor:"transparent",border:"none",width:"100%",height:Ga,lineHeight:Ga,display:"block",cursor:"pointer",padding:"0px 8px 0 4px",textAlign:"left"}],rootDisabled:{color:a.disabledBodyText,cursor:"default",pointerEvents:"none",selectors:(t={},t[Ae]={color:"GrayText",opacity:1},t)},rootHovered:{backgroundColor:c,color:d,selectors:{".ms-ContextualMenu-icon":{color:l.themeDarkAlt},".ms-ContextualMenu-submenuIcon":{color:l.neutralPrimary}}},rootFocused:{backgroundColor:l.white},rootChecked:{selectors:{".ms-ContextualMenu-checkmarkIcon":{color:l.neutralPrimary}}},rootPressed:{backgroundColor:u,selectors:{".ms-ContextualMenu-icon":{color:l.themeDark},".ms-ContextualMenu-submenuIcon":{color:l.neutralPrimary}}},rootExpanded:{backgroundColor:u,color:a.bodyTextChecked,selectors:(n={".ms-ContextualMenu-submenuIcon":(r={},r[Ae]={color:"inherit"},r)},n[Ae]=B({},Zn()),n)},linkContent:{whiteSpace:"nowrap",height:"inherit",display:"flex",alignItems:"center",maxWidth:"100%"},anchorLink:{padding:"0px 8px 0 4px",textRendering:"auto",color:"inherit",letterSpacing:"normal",wordSpacing:"normal",textTransform:"none",textIndent:"0px",textShadow:"none",textDecoration:"none",boxSizing:"border-box"},label:{margin:"0 4px",verticalAlign:"middle",display:"inline-block",flexGrow:"1",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},secondaryText:{color:e.palette.neutralSecondary,paddingLeft:"20px",textAlign:"right"},icon:{display:"inline-block",minHeight:"1px",maxHeight:Ga,fontSize:wi.medium,width:wi.medium,margin:"0 4px",verticalAlign:"middle",flexShrink:"0",selectors:(i={},i[HI]={fontSize:wi.large,width:wi.large},i)},iconColor:{color:a.menuIcon},iconDisabled:{color:a.disabledBodyText},checkmarkIcon:{color:a.bodySubtext},subMenuIcon:{height:Ga,lineHeight:Ga,color:l.neutralSecondary,textAlign:"center",display:"inline-block",verticalAlign:"middle",flexShrink:"0",fontSize:wi.small,selectors:(o={":hover":{color:l.neutralPrimary},":active":{color:l.neutralPrimary}},o[HI]={fontSize:wi.medium},o)},splitButtonFlexContainer:[da(e),{display:"flex",height:Ga,flexWrap:"nowrap",justifyContent:"center",alignItems:"flex-start"}]};return ga(v)}),KI="28px",WL=xw(0,KT),zL=Jt(function(e){var t;return rd(HL(e),{wrapper:{position:"absolute",right:28,selectors:(t={},t[WL]={right:32},t)},divider:{height:16,width:1}})}),VL={item:"ms-ContextualMenu-item",divider:"ms-ContextualMenu-divider",root:"ms-ContextualMenu-link",isChecked:"is-checked",isExpanded:"is-expanded",isDisabled:"is-disabled",linkContent:"ms-ContextualMenu-linkContent",linkContentMenu:"ms-ContextualMenu-linkContent",icon:"ms-ContextualMenu-icon",iconColor:"ms-ContextualMenu-iconColor",checkmarkIcon:"ms-ContextualMenu-checkmarkIcon",subMenuIcon:"ms-ContextualMenu-submenuIcon",label:"ms-ContextualMenu-itemText",secondaryText:"ms-ContextualMenu-secondaryText",splitMenu:"ms-ContextualMenu-splitMenu",screenReaderText:"ms-ContextualMenu-screenReaderText"},GL=Jt(function(e,t,n,r,i,o,a,s,l,c,d,u){var f,v,A,p,C=KL(e),y=Lr(VL,e);return rd({item:[y.item,C.item,a],divider:[y.divider,C.divider,s],root:[y.root,C.root,r&&[y.isChecked,C.rootChecked],i&&C.anchorLink,n&&[y.isExpanded,C.rootExpanded],t&&[y.isDisabled,C.rootDisabled],!t&&!n&&[{selectors:(f={":hover":C.rootHovered,":active":C.rootPressed},f[".".concat(xn," &:focus, .").concat(xn," &:focus:hover")]=C.rootFocused,f[".".concat(xn," &:hover")]={background:"inherit;"},f)}],u],splitPrimary:[C.root,{width:"calc(100% - ".concat(KI,")")},r&&["is-checked",C.rootChecked],(t||d)&&["is-disabled",C.rootDisabled],!(t||d)&&!r&&[{selectors:(v={":hover":C.rootHovered},v[":hover ~ .".concat(y.splitMenu)]=C.rootHovered,v[":active"]=C.rootPressed,v[".".concat(xn," &:focus, .").concat(xn," &:focus:hover")]=C.rootFocused,v[".".concat(xn," &:hover")]={background:"inherit;"},v)}]],splitMenu:[y.splitMenu,C.root,{flexBasis:"0",padding:"0 8px",minWidth:KI},n&&["is-expanded",C.rootExpanded],t&&["is-disabled",C.rootDisabled],!t&&!n&&[{selectors:(A={":hover":C.rootHovered,":active":C.rootPressed},A[".".concat(xn," &:focus, .").concat(xn," &:focus:hover")]=C.rootFocused,A[".".concat(xn," &:hover")]={background:"inherit;"},A)}]],anchorLink:C.anchorLink,linkContent:[y.linkContent,C.linkContent],linkContentMenu:[y.linkContentMenu,C.linkContent,{justifyContent:"center"}],icon:[y.icon,o&&C.iconColor,C.icon,l,t&&[y.isDisabled,C.iconDisabled]],iconColor:C.iconColor,checkmarkIcon:[y.checkmarkIcon,o&&C.checkmarkIcon,C.icon,l],subMenuIcon:[y.subMenuIcon,C.subMenuIcon,c,n&&{color:e.palette.neutralPrimary},t&&[C.iconDisabled]],label:[y.label,C.label],secondaryText:[y.secondaryText,C.secondaryText],splitContainer:[C.splitButtonFlexContainer,!t&&!r&&[{selectors:(p={},p[".".concat(xn," &:focus, .").concat(xn," &:focus:hover")]=C.rootFocused,p)}]],screenReaderText:[y.screenReaderText,C.screenReaderText,WT,{visibility:"hidden"}]})}),v4=function(e){var t=e.theme,n=e.disabled,r=e.expanded,i=e.checked,o=e.isAnchorLink,a=e.knownIcon,s=e.itemClassName,l=e.dividerClassName,c=e.iconClassName,d=e.subMenuClassName,u=e.primaryDisabled,f=e.className;return GL(t,n,r,i,o,a,s,l,c,d,u,f)},fv=wr(jL,v4,void 0,{scope:"ContextualMenuItem"}),jw=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;return r._onItemMouseEnter=function(i){var o=r.props,a=o.item,s=o.onItemMouseEnter;s&&s(a,i,i.currentTarget)},r._onItemClick=function(i){var o=r.props,a=o.item,s=o.onItemClickBase;s&&s(a,i,i.currentTarget)},r._onItemMouseLeave=function(i){var o=r.props,a=o.item,s=o.onItemMouseLeave;s&&s(a,i)},r._onItemKeyDown=function(i){var o=r.props,a=o.item,s=o.onItemKeyDown;s&&s(a,i)},r._onItemMouseMove=function(i){var o=r.props,a=o.item,s=o.onItemMouseMove;s&&s(a,i,i.currentTarget)},r._getSubmenuTarget=function(){},id(r),r}return t.prototype.shouldComponentUpdate=function(n){return!Nw(n,this.props)},t}(g.Component),YL="ktp",WI="-",QL="data-ktp-target",ZL="data-ktp-execute-target",XL="ktp-layer-id",vo;(function(e){e.KEYTIP_ADDED="keytipAdded",e.KEYTIP_REMOVED="keytipRemoved",e.KEYTIP_UPDATED="keytipUpdated",e.PERSISTED_KEYTIP_ADDED="persistedKeytipAdded",e.PERSISTED_KEYTIP_REMOVED="persistedKeytipRemoved",e.PERSISTED_KEYTIP_EXECUTE="persistedKeytipExecute",e.ENTER_KEYTIP_MODE="enterKeytipMode",e.EXIT_KEYTIP_MODE="exitKeytipMode"})(vo||(vo={}));var qL=function(){function e(){this.keytips={},this.persistedKeytips={},this.sequenceMapping={},this.inKeytipMode=!1,this.shouldEnterKeytipMode=!0,this.delayUpdatingKeytipChange=!1}return e.getInstance=function(){return this._instance},e.prototype.init=function(t){this.delayUpdatingKeytipChange=t},e.prototype.register=function(t,n){n===void 0&&(n=!1);var r=t;n||(r=this.addParentOverflow(t),this.sequenceMapping[r.keySequences.toString()]=r);var i=this._getUniqueKtp(r);if(n?this.persistedKeytips[i.uniqueID]=i:this.keytips[i.uniqueID]=i,this.inKeytipMode||!this.delayUpdatingKeytipChange){var o=n?vo.PERSISTED_KEYTIP_ADDED:vo.KEYTIP_ADDED;Ao.raise(this,o,{keytip:r,uniqueID:i.uniqueID})}return i.uniqueID},e.prototype.update=function(t,n){var r=this.addParentOverflow(t),i=this._getUniqueKtp(r,n),o=this.keytips[n];o&&(i.keytip.visible=o.keytip.visible,this.keytips[n]=i,delete this.sequenceMapping[o.keytip.keySequences.toString()],this.sequenceMapping[i.keytip.keySequences.toString()]=i.keytip,(this.inKeytipMode||!this.delayUpdatingKeytipChange)&&Ao.raise(this,vo.KEYTIP_UPDATED,{keytip:i.keytip,uniqueID:i.uniqueID}))},e.prototype.unregister=function(t,n,r){r===void 0&&(r=!1),r?delete this.persistedKeytips[n]:delete this.keytips[n],!r&&delete this.sequenceMapping[t.keySequences.toString()];var i=r?vo.PERSISTED_KEYTIP_REMOVED:vo.KEYTIP_REMOVED;(this.inKeytipMode||!this.delayUpdatingKeytipChange)&&Ao.raise(this,i,{keytip:t,uniqueID:n})},e.prototype.enterKeytipMode=function(){Ao.raise(this,vo.ENTER_KEYTIP_MODE)},e.prototype.exitKeytipMode=function(){Ao.raise(this,vo.EXIT_KEYTIP_MODE)},e.prototype.getKeytips=function(){var t=this;return Object.keys(this.keytips).map(function(n){return t.keytips[n].keytip})},e.prototype.addParentOverflow=function(t){var n=Bn([],t.keySequences,!0);if(n.pop(),n.length!==0){var r=this.sequenceMapping[n.toString()];if(r&&r.overflowSetSequence)return B(B({},t),{overflowSetSequence:r.overflowSetSequence})}return t},e.prototype.menuExecute=function(t,n){Ao.raise(this,vo.PERSISTED_KEYTIP_EXECUTE,{overflowButtonSequences:t,keytipSequences:n})},e.prototype._getUniqueKtp=function(t,n){return n===void 0&&(n=fr()),{keytip:B({},t),uniqueID:n}},e._instance=new e,e}();function m4(e){return e.reduce(function(t,n){return t+WI+n.split("").join(WI)},YL)}function JL(e,t){var n=t.length,r=Bn([],t,!0).pop(),i=Bn([],e,!0);return x5(i,n-1,r)}function $L(e){var t=" "+XL;return e.length?t+" "+m4(e):t}function eO(e){var t=g.useRef(),n=e.keytipProps?B({disabled:e.disabled},e.keytipProps):void 0,r=Mo(qL.getInstance()),i=Lw(e);Ou(function(){t.current&&n&&((i==null?void 0:i.keytipProps)!==e.keytipProps||(i==null?void 0:i.disabled)!==e.disabled)&&r.update(n,t.current)}),Ou(function(){return n&&(t.current=r.register(n)),function(){n&&r.unregister(n,t.current)}},[]);var o={ariaDescribedBy:void 0,keytipId:void 0};return n&&(o=tO(r,n,e.ariaDescribedBy)),o}function tO(e,t,n){var r=e.addParentOverflow(t),i=Wv(n,$L(r.keySequences)),o=Bn([],r.keySequences,!0);r.overflowSetSequence&&(o=JL(o,r.overflowSetSequence));var a=m4(o);return{ariaDescribedBy:i,keytipId:a}}var vv=function(e){var t,n=e.children,r=js(e,["children"]),i=eO(r),o=i.keytipId,a=i.ariaDescribedBy;return n((t={},t[QL]=o,t[ZL]=o,t["aria-describedby"]=a,t))},nO=function(e){fn(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n._anchor=g.createRef(),n._getMemoizedMenuButtonKeytipProps=Jt(function(r){return B(B({},r),{hasMenu:!0})}),n._getSubmenuTarget=function(){return n._anchor.current?n._anchor.current:void 0},n._onItemClick=function(r){var i=n.props,o=i.item,a=i.onItemClick;a&&a(o,r)},n._renderAriaDescription=function(r,i){return r?g.createElement("span",{id:n._ariaDescriptionId,className:i},r):null},n}return t.prototype.render=function(){var n=this,r=this.props,i=r.item,o=r.classNames,a=r.index,s=r.focusableElementIndex,l=r.totalItemCount,c=r.hasCheckmarks,d=r.hasIcons,u=r.contextualMenuItemAs,f=u===void 0?fv:u,v=r.expandedMenuItemKey,A=r.onItemClick,p=r.openSubMenu,C=r.dismissSubMenu,y=r.dismissMenu,h=i.rel;i.target&&i.target.toLowerCase()==="_blank"&&(h=h||"nofollow noopener noreferrer");var b=fa(i),w=Bt(i,MT),S=Io(i),E=i.itemProps,I=i.ariaDescription,F=i.keytipProps;F&&b&&(F=this._getMemoizedMenuButtonKeytipProps(F)),I&&(this._ariaDescriptionId=fr());var k=Wv(i.ariaDescribedBy,I?this._ariaDescriptionId:void 0,w["aria-describedby"]),D={"aria-describedby":k};return g.createElement("div",null,g.createElement(vv,{keytipProps:i.keytipProps,ariaDescribedBy:k,disabled:S},function(P){return g.createElement("a",B({},D,w,P,{ref:n._anchor,href:i.href,target:i.target,rel:h,className:o.root,role:"menuitem","aria-haspopup":b||void 0,"aria-expanded":b?i.key===v:void 0,"aria-posinset":s+1,"aria-setsize":l,"aria-disabled":Io(i),style:i.style,onClick:n._onItemClick,onMouseEnter:n._onItemMouseEnter,onMouseLeave:n._onItemMouseLeave,onMouseMove:n._onItemMouseMove,onKeyDown:b?n._onItemKeyDown:void 0}),g.createElement(f,B({componentRef:i.componentRef,item:i,classNames:o,index:a,onCheckmarkClick:c&&A?A:void 0,hasIcons:d,openSubMenu:p,dismissSubMenu:C,dismissMenu:y,getSubmenuTarget:n._getSubmenuTarget},E)),n._renderAriaDescription(I,o.screenReaderText))}))},t}(jw),rO=function(e){fn(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n._btn=g.createRef(),n._getMemoizedMenuButtonKeytipProps=Jt(function(r){return B(B({},r),{hasMenu:!0})}),n._renderAriaDescription=function(r,i){return r?g.createElement("span",{id:n._ariaDescriptionId,className:i},r):null},n._getSubmenuTarget=function(){return n._btn.current?n._btn.current:void 0},n}return t.prototype.render=function(){var n=this,r=this.props,i=r.item,o=r.classNames,a=r.index,s=r.focusableElementIndex,l=r.totalItemCount,c=r.hasCheckmarks,d=r.hasIcons,u=r.contextualMenuItemAs,f=u===void 0?fv:u,v=r.expandedMenuItemKey,A=r.onItemMouseDown,p=r.onItemClick,C=r.openSubMenu,y=r.dismissSubMenu,h=r.dismissMenu,b=Ku(i),w=b!==null,S=f4(i),E=fa(i),I=i.itemProps,F=i.ariaLabel,k=i.ariaDescription,D=Bt(i,Hl);delete D.disabled;var P=i.role||S;k&&(this._ariaDescriptionId=fr());var H=Wv(i.ariaDescribedBy,k?this._ariaDescriptionId:void 0,D["aria-describedby"]),G={className:o.root,onClick:this._onItemClick,onKeyDown:E?this._onItemKeyDown:void 0,onMouseEnter:this._onItemMouseEnter,onMouseLeave:this._onItemMouseLeave,onMouseDown:function(M){return A?A(i,M):void 0},onMouseMove:this._onItemMouseMove,href:i.href,title:i.title,"aria-label":F,"aria-describedby":H,"aria-haspopup":E||void 0,"aria-expanded":E?i.key===v:void 0,"aria-posinset":s+1,"aria-setsize":l,"aria-disabled":Io(i),"aria-checked":(P==="menuitemcheckbox"||P==="menuitemradio")&&w?!!b:void 0,"aria-selected":P==="menuitem"&&w?!!b:void 0,role:P,style:i.style},_=i.keytipProps;return _&&E&&(_=this._getMemoizedMenuButtonKeytipProps(_)),g.createElement(vv,{keytipProps:_,ariaDescribedBy:H,disabled:Io(i)},function(M){return g.createElement("button",B({ref:n._btn},D,G,M),g.createElement(f,B({componentRef:i.componentRef,item:i,classNames:o,index:a,onCheckmarkClick:c&&p?p:void 0,hasIcons:d,openSubMenu:C,dismissSubMenu:y,dismissMenu:h,getSubmenuTarget:n._getSubmenuTarget},I)),n._renderAriaDescription(k,o.screenReaderText))})},t}(jw),iO=function(e){var t=e.theme,n=e.getClassNames,r=e.className;if(!t)throw new Error("Theme is undefined or null.");if(n){var i=n(t);return{wrapper:[i.wrapper],divider:[i.divider]}}return{wrapper:[{display:"inline-flex",height:"100%",alignItems:"center"},r],divider:[{width:1,height:"100%",backgroundColor:t.palette.neutralTertiaryAlt}]}},oO=Cr(),p4=g.forwardRef(function(e,t){var n=e.styles,r=e.theme,i=e.getClassNames,o=e.className,a=oO(n,{theme:r,getClassNames:i,className:o});return g.createElement("span",{className:a.wrapper,ref:t},g.createElement("span",{className:a.divider}))});p4.displayName="VerticalDividerBase";var aO=wr(p4,iO,void 0,{scope:"VerticalDivider"}),sO=500,lO=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;return r._getMemoizedMenuButtonKeytipProps=Jt(function(i){return B(B({},i),{hasMenu:!0})}),r._onItemKeyDown=function(i){var o=r.props,a=o.item,s=o.onItemKeyDown;i.which===ge.enter?(r._executeItemClick(i),i.preventDefault(),i.stopPropagation()):s&&s(a,i)},r._getSubmenuTarget=function(){return r._splitButton},r._renderAriaDescription=function(i,o){return i?g.createElement("span",{id:r._ariaDescriptionId,className:o},i):null},r._onItemMouseEnterPrimary=function(i){var o=r.props,a=o.item,s=o.onItemMouseEnter;s&&s(B(B({},a),{subMenuProps:void 0,items:void 0}),i,r._splitButton)},r._onItemMouseEnterIcon=function(i){var o=r.props,a=o.item,s=o.onItemMouseEnter;s&&s(a,i,r._splitButton)},r._onItemMouseMovePrimary=function(i){var o=r.props,a=o.item,s=o.onItemMouseMove;s&&s(B(B({},a),{subMenuProps:void 0,items:void 0}),i,r._splitButton)},r._onItemMouseMoveIcon=function(i){var o=r.props,a=o.item,s=o.onItemMouseMove;s&&s(a,i,r._splitButton)},r._onIconItemClick=function(i){var o=r.props,a=o.item,s=o.onItemClickBase;s&&s(a,i,r._splitButton?r._splitButton:i.currentTarget)},r._executeItemClick=function(i){var o=r.props,a=o.item,s=o.executeItemClick,l=o.onItemClick;if(!(a.disabled||a.isDisabled)){if(r._processingTouch&&!a.canCheck&&l)return l(a,i);s&&s(a,i)}},r._onTouchStart=function(i){r._splitButton&&!("onpointerdown"in r._splitButton)&&r._handleTouchAndPointerEvent(i)},r._onPointerDown=function(i){i.pointerType==="touch"&&(r._handleTouchAndPointerEvent(i),i.preventDefault(),i.stopImmediatePropagation())},r._async=new Kv(r),r._events=new Ao(r),r._dismissLabelId=fr(),r}return t.prototype.componentDidMount=function(){this._splitButton&&"onpointerdown"in this._splitButton&&this._events.on(this._splitButton,"pointerdown",this._onPointerDown,!0)},t.prototype.componentWillUnmount=function(){this._async.dispose(),this._events.dispose()},t.prototype.render=function(){var n=this,r,i=this.props,o=i.item,a=i.classNames,s=i.index,l=i.focusableElementIndex,c=i.totalItemCount,d=i.hasCheckmarks,u=i.hasIcons,f=i.onItemMouseLeave,v=i.expandedMenuItemKey,A=fa(o),p=o.keytipProps;p&&(p=this._getMemoizedMenuButtonKeytipProps(p));var C=o.ariaDescription;C&&(this._ariaDescriptionId=fr());var y=(r=Ku(o))!==null&&r!==void 0?r:void 0;return g.createElement(vv,{keytipProps:p,disabled:Io(o)},function(h){return g.createElement("div",{"data-ktp-target":h["data-ktp-target"],ref:function(b){return n._splitButton=b},role:f4(o),"aria-label":o.ariaLabel,className:a.splitContainer,"aria-disabled":Io(o),"aria-expanded":A?o.key===v:void 0,"aria-haspopup":!0,"aria-describedby":Wv(o.ariaDescribedBy,C?n._ariaDescriptionId:void 0,h["aria-describedby"]),"aria-checked":y,"aria-posinset":l+1,"aria-setsize":c,onMouseEnter:n._onItemMouseEnterPrimary,onMouseLeave:f?f.bind(n,B(B({},o),{subMenuProps:null,items:null})):void 0,onMouseMove:n._onItemMouseMovePrimary,onKeyDown:n._onItemKeyDown,onClick:n._executeItemClick,onTouchStart:n._onTouchStart,tabIndex:0,"data-is-focusable":!0,"aria-roledescription":o["aria-roledescription"]},n._renderSplitPrimaryButton(o,a,s,d,u),n._renderSplitDivider(o),n._renderSplitIconButton(o,a,s,h),n._renderAriaDescription(C,a.screenReaderText))})},t.prototype._renderSplitPrimaryButton=function(n,r,i,o,a){var s=this.props,l=s.contextualMenuItemAs,c=l===void 0?fv:l,d=s.onItemClick,u={key:n.key,disabled:Io(n)||n.primaryDisabled,name:n.name,text:n.text||n.name,secondaryText:n.secondaryText,className:r.splitPrimary,canCheck:n.canCheck,isChecked:n.isChecked,checked:n.checked,iconProps:n.iconProps,id:this._dismissLabelId,onRenderIcon:n.onRenderIcon,data:n.data,"data-is-focusable":!1},f=n.itemProps;return g.createElement("button",B({},Bt(u,Hl)),g.createElement(c,B({"data-is-focusable":!1,item:u,classNames:r,index:i,onCheckmarkClick:o&&d?d:void 0,hasIcons:a},f)))},t.prototype._renderSplitDivider=function(n){var r=n.getSplitButtonVerticalDividerClassNames||zL;return g.createElement(aO,{getClassNames:r})},t.prototype._renderSplitIconButton=function(n,r,i,o){var a=this.props,s=a.contextualMenuItemAs,l=s===void 0?fv:s,c=a.onItemMouseLeave,d=a.onItemMouseDown,u=a.openSubMenu,f=a.dismissSubMenu,v=a.dismissMenu,A={onClick:this._onIconItemClick,disabled:Io(n),className:r.splitMenu,subMenuProps:n.subMenuProps,submenuIconProps:n.submenuIconProps,split:!0,key:n.key,"aria-labelledby":this._dismissLabelId},p=B(B({},Bt(A,Hl)),{onMouseEnter:this._onItemMouseEnterIcon,onMouseLeave:c?c.bind(this,n):void 0,onMouseDown:function(y){return d?d(n,y):void 0},onMouseMove:this._onItemMouseMoveIcon,"data-is-focusable":!1,"data-ktp-execute-target":o["data-ktp-execute-target"],"aria-haspopup":!0}),C=n.itemProps;return g.createElement("button",B({},p),g.createElement(l,B({componentRef:n.componentRef,item:A,classNames:r,index:i,hasIcons:!1,openSubMenu:u,dismissSubMenu:f,dismissMenu:v,getSubmenuTarget:this._getSubmenuTarget},C)))},t.prototype._handleTouchAndPointerEvent=function(n){var r=this,i=this.props.onTap;i&&i(n),this._lastTouchTimeoutId&&(this._async.clearTimeout(this._lastTouchTimeoutId),this._lastTouchTimeoutId=void 0),this._processingTouch=!0,this._lastTouchTimeoutId=this._async.setTimeout(function(){r._processingTouch=!1,r._lastTouchTimeoutId=void 0},sO)},t}(jw),Wu;(function(e){e[e.small=0]="small",e[e.medium=1]="medium",e[e.large=2]="large",e[e.xLarge=3]="xLarge",e[e.xxLarge=4]="xxLarge",e[e.xxxLarge=5]="xxxLarge",e[e.unknown=999]="unknown"})(Wu||(Wu={}));var cO=[479,639,1023,1365,1919,99999999],LA,h4;function g4(){var e;return(e=LA??h4)!==null&&e!==void 0?e:Wu.large}function uO(e){try{return e.document.documentElement.clientWidth}catch{return e.innerWidth}}function dO(e){var t=Wu.small;if(e){try{for(;uO(e)>cO[t];)t++}catch{t=g4()}h4=t}else throw new Error("Content was rendered in a server environment without providing a default responsive mode. Call setResponsiveMode to define what the responsive mode is.");return t}var A4=function(e,t){var n=g.useState(g4()),r=n[0],i=n[1],o=g.useCallback(function(){var s=dO(_t(e.current));r!==s&&i(s)},[e,r]),a=D0();return Hu(a,"resize",o),g.useEffect(function(){t===void 0&&o()},[t]),t??r},fO=g.createContext({}),vO=Cr(),mO=Cr(),pO={items:[],shouldFocusOnMount:!0,gapSpace:0,directionalHint:Yt.bottomAutoEdge,beakWidth:16};function zI(e){for(var t=0,n=0,r=e;n0){var pd=0;return g.createElement("li",{role:"presentation",key:it.key||fe.key||"section-".concat(ft)},g.createElement("div",B({},Ut),g.createElement("ul",{className:dt.list,role:"presentation"},it.topDivider&&Me(ft,_e,!0,!0),Kr&&le(Kr,fe.key||ft,_e,fe.title),it.items.map(function(Da,_i){var W0=J(Da,_i,pd,zI(it.items),tr,Er,dt);if(Da.itemType!==Gn.Divider&&Da.itemType!==Gn.Header){var z0=Da.customOnRenderListLength?Da.customOnRenderListLength:1;pd+=z0}return W0}),it.bottomDivider&&Me(ft,_e,!1,!0))))}}},le=function(fe,_e,dt,ft){return g.createElement("li",{role:"presentation",title:ft,key:_e,className:dt.item},fe)},Me=function(fe,_e,dt,ft){return ft||fe>0?g.createElement("li",{role:"separator",key:"separator-"+fe+(dt===void 0?"":dt?"-top":"-bottom"),className:_e.divider,"aria-hidden":"true"}):null},Te=function(fe,_e,dt,ft,tr,Er,it){if(fe.onRender)return fe.onRender(B({"aria-posinset":ft+1,"aria-setsize":tr},fe),l);var Kr=i.contextualMenuItemAs,Ut={item:fe,classNames:_e,index:dt,focusableElementIndex:ft,totalItemCount:tr,hasCheckmarks:Er,hasIcons:it,contextualMenuItemAs:Kr,onItemMouseEnter:T,onItemMouseLeave:W,onItemMouseMove:j,onItemMouseDown:FO,executeItemClick:x,onItemKeyDown:O,expandedMenuItemKey:A,openSubMenu:p,dismissSubMenu:y,dismissMenu:l};return fe.href?g.createElement(nO,B({},Ut,{onItemClick:Y})):fe.split&&fa(fe)?g.createElement(lO,B({},Ut,{onItemClick:U,onItemClickBase:L,onTap:D})):g.createElement(rO,B({},Ut,{onItemClick:U,onItemClickBase:L}))},z=function(fe,_e,dt,ft,tr,Er){var it=i.contextualMenuItemAs,Kr=it===void 0?fv:it,Ut=fe.itemProps,Wr=fe.id,ao=Ut&&Bt(Ut,rc);return g.createElement("div",B({id:Wr,className:dt.header},ao,{style:fe.style}),g.createElement(Kr,B({item:fe,classNames:_e,index:ft,onCheckmarkClick:tr?U:void 0,hasIcons:Er},Ut)))},X=i.isBeakVisible,q=i.items,oe=i.labelElementId,ce=i.id,Z=i.className,ue=i.beakWidth,ye=i.directionalHint,be=i.directionalHintForRTL,qe=i.alignTargetEdge,mn=i.gapSpace,Vt=i.coverTarget,$n=i.ariaLabel,jr=i.doNotLayer,Tn=i.target,fi=i.bounds,Ce=i.useTargetWidth,Ea=i.useTargetAsMinWidth,vd=i.directionalHintFixed,Ct=i.shouldFocusOnMount,St=i.shouldFocusOnContainer,Lo=i.title,vi=i.styles,fm=i.theme,xi=i.calloutProps,md=i.onRenderSubMenu,j0=md===void 0?GI:md,vm=i.onRenderMenuList,H0=vm===void 0?function(fe,_e){return V(fe,oo)}:vm,K0=i.focusZoneProps,mm=i.getMenuClassNames,oo=mm?mm(fm,Z):vO(vi,{theme:fm,className:Z}),pm=mt(q);function mt(fe){for(var _e=0,dt=fe;_e0){var Uk=zI(q),jk=oo.subComponentStyles?oo.subComponentStyles.callout:void 0;return g.createElement(fO.Consumer,null,function(fe){return g.createElement(F0,B({styles:jk,onRestoreFocus:f},xi,{target:Tn||fe.target,isBeakVisible:X,beakWidth:ue,directionalHint:ye,directionalHintForRTL:be,gapSpace:mn,coverTarget:Vt,doNotLayer:jr,className:kr("ms-ContextualMenu-Callout",xi&&xi.className),setInitialFocus:Ct,onDismiss:i.onDismiss||fe.onDismiss,onScroll:I,bounds:fi,directionalHintFixed:vd,alignTargetEdge:qe,hidden:i.hidden||fe.hidden,ref:t}),g.createElement("div",{style:Ia,ref:o,id:ce,className:oo.container,tabIndex:St?0:-1,onKeyDown:Q,onKeyUp:K,onFocusCapture:S,"aria-label":$n,"aria-labelledby":oe,role:"menu"},Lo&&g.createElement("div",{className:oo.title}," ",Lo," "),q&&q.length?ee(H0({ariaLabel:$n,items:q,totalItemCount:Uk,hasCheckmarks:Hr,hasIcons:pm,defaultMenuItemRenderer:function(_e){return $(_e,oo)},labelElementId:oe},function(_e,dt){return V(_e,oo)}),De):null,Sa&&j0(Sa,GI)),g.createElement(RT,null))})}else return null}),function(e,t){return!t.shouldUpdateWhenHidden&&e.hidden&&t.hidden?!0:Nw(e,t)});w4.displayName="ContextualMenuBase";function VI(e){return e.which===ge.alt||e.key==="Meta"}function FO(e,t){var n;(n=e.onMouseDown)===null||n===void 0||n.call(e,e,t)}function GI(e,t){throw Error("ContextualMenuBase: onRenderSubMenu callback is null or undefined. Please ensure to set `onRenderSubMenu` property either manually or with `styled` helper.")}function E4(e,t){for(var n=0,r=t;n span":{position:"relative",left:0,top:0}}}],rootDisabled:[da(e,{inset:1,highContrastStyle:c,borderColor:"transparent"}),{backgroundColor:s,borderColor:s,color:l,cursor:"default",selectors:{":hover":ZI,":focus":ZI}}],iconDisabled:{color:l,selectors:(t={},t[Ae]={color:"GrayText"},t)},menuIconDisabled:{color:l,selectors:(n={},n[Ae]={color:"GrayText"},n)},flexContainer:{display:"flex",height:"100%",flexWrap:"nowrap",justifyContent:"center",alignItems:"center"},description:{display:"block"},textContainer:{flexGrow:1,display:"block"},icon:XI(o.mediumPlus.fontSize),menuIcon:XI(o.small.fontSize),label:{margin:"0 4px",lineHeight:"100%",display:"block"},screenReaderText:WT}}),M4=Jt(function(e,t){var n,r,i,o,a,s,l,c,d,u,f,v,A,p=e.effects,C=e.palette,y=e.semanticColors,h={left:-2,top:-2,bottom:-2,right:-2,border:"none"},b={position:"absolute",width:1,right:31,top:8,bottom:8},w={splitButtonContainer:[da(e,{highContrastStyle:h,inset:2,pointerEvents:"none"}),{display:"inline-flex",selectors:{".ms-Button--default":{borderTopRightRadius:"0",borderBottomRightRadius:"0",borderRight:"none",flexGrow:"1"},".ms-Button--primary":{borderTopRightRadius:"0",borderBottomRightRadius:"0",border:"none",flexGrow:"1",selectors:(n={},n[Ae]=B({color:"WindowText",backgroundColor:"Window",border:"1px solid WindowText",borderRightWidth:"0"},Zn()),n[":hover"]={border:"none"},n[":active"]={border:"none"},n)},".ms-Button--primary + .ms-Button":{border:"none",selectors:(r={},r[Ae]={border:"1px solid WindowText",borderLeftWidth:"0"},r)}}}],splitButtonContainerHovered:{selectors:{".ms-Button--primary":{selectors:(i={},i[Ae]={color:"Window",backgroundColor:"Highlight"},i)},".ms-Button.is-disabled":{color:y.buttonTextDisabled,selectors:(o={},o[Ae]={color:"GrayText",borderColor:"GrayText",backgroundColor:"Window"},o)}}},splitButtonContainerChecked:{selectors:{".ms-Button--primary":{selectors:(a={},a[Ae]=B({color:"Window",backgroundColor:"WindowText"},Zn()),a)}}},splitButtonContainerCheckedHovered:{selectors:{".ms-Button--primary":{selectors:(s={},s[Ae]=B({color:"Window",backgroundColor:"WindowText"},Zn()),s)}}},splitButtonContainerFocused:{outline:"none!important"},splitButtonMenuButton:(l={padding:6,height:"auto",boxSizing:"border-box",borderRadius:0,borderTopRightRadius:p.roundedCorner2,borderBottomRightRadius:p.roundedCorner2,border:"1px solid ".concat(C.neutralSecondaryAlt),borderLeft:"none",outline:"transparent",userSelect:"none",display:"inline-block",textDecoration:"none",textAlign:"center",cursor:"pointer",verticalAlign:"top",width:32,marginLeft:-1,marginTop:0,marginRight:0,marginBottom:0},l[Ae]={".ms-Button-menuIcon":{color:"WindowText"}},l),splitButtonDivider:B(B({},b),{selectors:(c={},c[Ae]={backgroundColor:"WindowText"},c)}),splitButtonDividerDisabled:B(B({},b),{selectors:(d={},d[Ae]={backgroundColor:"GrayText"},d)}),splitButtonMenuButtonDisabled:{pointerEvents:"none",border:"none",selectors:(u={":hover":{cursor:"default"},".ms-Button--primary":{selectors:(f={},f[Ae]={color:"GrayText",borderColor:"GrayText",backgroundColor:"Window"},f)},".ms-Button-menuIcon":{selectors:(v={},v[Ae]={color:"GrayText"},v)}},u[Ae]={color:"GrayText",border:"1px solid GrayText",backgroundColor:"Window"},u)},splitButtonFlexContainer:{display:"flex",height:"100%",flexWrap:"nowrap",justifyContent:"center",alignItems:"center"},splitButtonContainerDisabled:{outline:"none",border:"none",selectors:(A={},A[Ae]=B({color:"GrayText",borderColor:"GrayText",backgroundColor:"Window"},Zn()),A)},splitButtonMenuFocused:B({},da(e,{highContrastStyle:h,inset:2}))};return ga(w,t)}),T4=function(){return{position:"absolute",width:1,right:31,top:8,bottom:8}};function xO(e){var t,n,r,i,o,a=e.semanticColors,s=e.palette,l=a.buttonBackground,c=a.buttonBackgroundPressed,d=a.buttonBackgroundHovered,u=a.buttonBackgroundDisabled,f=a.buttonText,v=a.buttonTextHovered,A=a.buttonTextDisabled,p=a.buttonTextChecked,C=a.buttonTextCheckedHovered;return{root:{backgroundColor:l,color:f},rootHovered:{backgroundColor:d,color:v,selectors:(t={},t[Ae]={borderColor:"Highlight",color:"Highlight"},t)},rootPressed:{backgroundColor:c,color:p},rootExpanded:{backgroundColor:c,color:p},rootChecked:{backgroundColor:c,color:p},rootCheckedHovered:{backgroundColor:c,color:C},rootDisabled:{color:A,backgroundColor:u,selectors:(n={},n[Ae]={color:"GrayText",borderColor:"GrayText",backgroundColor:"Window"},n)},splitButtonContainer:{selectors:(r={},r[Ae]={border:"none"},r)},splitButtonMenuButton:{color:s.white,backgroundColor:"transparent",selectors:{":hover":{backgroundColor:s.neutralLight,selectors:(i={},i[Ae]={color:"Highlight"},i)}}},splitButtonMenuButtonDisabled:{backgroundColor:a.buttonBackgroundDisabled,selectors:{":hover":{backgroundColor:a.buttonBackgroundDisabled}}},splitButtonDivider:B(B({},T4()),{backgroundColor:s.neutralTertiaryAlt,selectors:(o={},o[Ae]={backgroundColor:"WindowText"},o)}),splitButtonDividerDisabled:{backgroundColor:e.palette.neutralTertiaryAlt},splitButtonMenuButtonChecked:{backgroundColor:s.neutralQuaternaryAlt,selectors:{":hover":{backgroundColor:s.neutralQuaternaryAlt}}},splitButtonMenuButtonExpanded:{backgroundColor:s.neutralQuaternaryAlt,selectors:{":hover":{backgroundColor:s.neutralQuaternaryAlt}}},splitButtonMenuIcon:{color:a.buttonText},splitButtonMenuIconDisabled:{color:a.buttonTextDisabled}}}function _O(e){var t,n,r,i,o,a,s,l,c,d=e.palette,u=e.semanticColors;return{root:{backgroundColor:u.primaryButtonBackground,border:"1px solid ".concat(u.primaryButtonBackground),color:u.primaryButtonText,selectors:(t={},t[Ae]=B({color:"Window",backgroundColor:"WindowText",borderColor:"WindowText"},Zn()),t[".".concat(xn," &:focus")]={selectors:{":after":{border:"none",outlineColor:d.white}}},t)},rootHovered:{backgroundColor:u.primaryButtonBackgroundHovered,border:"1px solid ".concat(u.primaryButtonBackgroundHovered),color:u.primaryButtonTextHovered,selectors:(n={},n[Ae]={color:"Window",backgroundColor:"Highlight",borderColor:"Highlight"},n)},rootPressed:{backgroundColor:u.primaryButtonBackgroundPressed,border:"1px solid ".concat(u.primaryButtonBackgroundPressed),color:u.primaryButtonTextPressed,selectors:(r={},r[Ae]=B({color:"Window",backgroundColor:"WindowText",borderColor:"WindowText"},Zn()),r)},rootExpanded:{backgroundColor:u.primaryButtonBackgroundPressed,color:u.primaryButtonTextPressed},rootChecked:{backgroundColor:u.primaryButtonBackgroundPressed,color:u.primaryButtonTextPressed},rootCheckedHovered:{backgroundColor:u.primaryButtonBackgroundPressed,color:u.primaryButtonTextPressed},rootDisabled:{color:u.primaryButtonTextDisabled,backgroundColor:u.primaryButtonBackgroundDisabled,selectors:(i={},i[Ae]={color:"GrayText",borderColor:"GrayText",backgroundColor:"Window"},i)},splitButtonContainer:{selectors:(o={},o[Ae]={border:"none"},o)},splitButtonDivider:B(B({},T4()),{backgroundColor:d.white,selectors:(a={},a[Ae]={backgroundColor:"Window"},a)}),splitButtonMenuButton:{backgroundColor:u.primaryButtonBackground,color:u.primaryButtonText,selectors:(s={},s[Ae]={backgroundColor:"Canvas"},s[":hover"]={backgroundColor:u.primaryButtonBackgroundHovered,selectors:(l={},l[Ae]={color:"Highlight"},l)},s)},splitButtonMenuButtonDisabled:{backgroundColor:u.primaryButtonBackgroundDisabled,selectors:{":hover":{backgroundColor:u.primaryButtonBackgroundDisabled}}},splitButtonMenuButtonChecked:{backgroundColor:u.primaryButtonBackgroundPressed,selectors:{":hover":{backgroundColor:u.primaryButtonBackgroundPressed}}},splitButtonMenuButtonExpanded:{backgroundColor:u.primaryButtonBackgroundPressed,selectors:{":hover":{backgroundColor:u.primaryButtonBackgroundPressed}}},splitButtonMenuIcon:{color:u.primaryButtonText},splitButtonMenuIconDisabled:{color:d.neutralTertiary,selectors:(c={},c[Ae]={color:"GrayText"},c)}}}var BO="32px",LO="80px",OO=Jt(function(e,t,n){var r=N4(e),i=M4(e),o={root:{minWidth:LO,height:BO},label:{fontWeight:We.semibold}};return ga(r,o,n?_O(e):xO(e),i,t)}),R4=function(e){fn(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){var n=this.props,r=n.primary,i=r===void 0?!1:r,o=n.styles,a=n.theme;return g.createElement(F4,B({},this.props,{variantClassName:i?"ms-Button--primary":"ms-Button--default",styles:OO(a,o,i),onRenderDescription:ov}))},t=Iw([kw("DefaultButton",["theme","styles"],!0)],t),t}(g.Component),UO=Jt(function(e,t){var n,r=N4(e),i=M4(e),o=e.palette,a=e.semanticColors,s={root:{padding:"0 4px",width:"32px",height:"32px",backgroundColor:"transparent",border:"none",color:a.link},rootHovered:{color:o.themeDarkAlt,backgroundColor:o.neutralLighter,selectors:(n={},n[Ae]={borderColor:"Highlight",color:"Highlight"},n)},rootHasMenu:{width:"auto"},rootPressed:{color:o.themeDark,backgroundColor:o.neutralLight},rootExpanded:{color:o.themeDark,backgroundColor:o.neutralLight},rootChecked:{color:o.themeDark,backgroundColor:o.neutralLight},rootCheckedHovered:{color:o.themeDark,backgroundColor:o.neutralQuaternaryAlt},rootDisabled:{color:o.neutralTertiaryAlt}};return ga(r,s,i,t)}),mv=function(e){fn(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){var n=this.props,r=n.styles,i=n.theme;return g.createElement(F4,B({},this.props,{variantClassName:"ms-Button--icon",styles:UO(i,r),onRenderText:ov,onRenderDescription:ov}))},t=Iw([kw("IconButton",["theme","styles"],!0)],t),t}(g.Component),jO=function(e){fn(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){return g.createElement(R4,B({},this.props,{primary:!0,onRenderDescription:ov}))},t=Iw([kw("PrimaryButton",["theme","styles"],!0)],t),t}(g.Component),HO=Cr({cacheSize:100}),KO=function(e){fn(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.render=function(){var n=this.props,r=n.as,i=r===void 0?"label":r,o=n.children,a=n.className,s=n.disabled,l=n.styles,c=n.required,d=n.theme,u=HO(l,{className:a,disabled:s,required:c,theme:d});return g.createElement(i,B({},Bt(this.props,rc),{className:u.root}),o)},t}(g.Component),WO=function(e){var t,n=e.theme,r=e.className,i=e.disabled,o=e.required,a=n.semanticColors,s=We.semibold,l=a.bodyText,c=a.disabledBodyText,d=a.errorText;return{root:["ms-Label",n.fonts.medium,{fontWeight:s,color:l,boxSizing:"border-box",boxShadow:"none",margin:0,display:"block",padding:"5px 0",wordWrap:"break-word",overflowWrap:"break-word"},i&&{color:c,selectors:(t={},t[Ae]=B({color:"GrayText"},Zn()),t)},o&&{selectors:{"::after":{content:"' *'",color:d,paddingRight:12}}},r]}},zO=wr(KO,WO,void 0,{scope:"Label"}),VO=Cr(),GO="",Zs="TextField",YO="RedEye",QO="Hide",ZO=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;r._textElement=g.createRef(),r._onFocus=function(a){r.props.onFocus&&r.props.onFocus(a),r.setState({isFocused:!0},function(){r.props.validateOnFocusIn&&r._validate(r.value)})},r._onBlur=function(a){r.props.onBlur&&r.props.onBlur(a),r.setState({isFocused:!1},function(){r.props.validateOnFocusOut&&r._validate(r.value)})},r._onRenderLabel=function(a){var s=a.label,l=a.required,c=r._classNames.subComponentStyles?r._classNames.subComponentStyles.label:void 0;return s?g.createElement(zO,{required:l,htmlFor:r._id,styles:c,disabled:a.disabled,id:r._labelId},a.label):null},r._onRenderDescription=function(a){return a.description?g.createElement("span",{className:r._classNames.description},a.description):null},r._onRevealButtonClick=function(a){r.setState(function(s){return{isRevealingPassword:!s.isRevealingPassword}})},r._onInputChange=function(a){var s,l,c=a.target,d=c.value,u=OA(r.props,r.state)||"";if(d===void 0||d===r._lastChangeValue||d===u){r._lastChangeValue=void 0;return}r._lastChangeValue=d,(l=(s=r.props).onChange)===null||l===void 0||l.call(s,a,d),r._isControlled||r.setState({uncontrolledValue:d})},id(r),r._async=new Kv(r),r._fallbackId=fr(Zs),r._descriptionId=fr(Zs+"Description"),r._labelId=fr(Zs+"Label"),r._prefixId=fr(Zs+"Prefix"),r._suffixId=fr(Zs+"Suffix"),r._warnControlledUsage();var i=n.defaultValue,o=i===void 0?GO:i;return typeof o=="number"&&(o=String(o)),r.state={uncontrolledValue:r._isControlled?void 0:o,isFocused:!1,errorMessage:""},r._delayedValidate=r._async.debounce(r._validate,r.props.deferredValidationTime),r._lastValidation=0,r}return Object.defineProperty(t.prototype,"value",{get:function(){return OA(this.props,this.state)},enumerable:!1,configurable:!0}),t.prototype.componentDidMount=function(){this._adjustInputHeight(),this.props.validateOnLoad&&this._validate(this.value)},t.prototype.componentWillUnmount=function(){this._async.dispose()},t.prototype.getSnapshotBeforeUpdate=function(n,r){return{selection:[this.selectionStart,this.selectionEnd]}},t.prototype.componentDidUpdate=function(n,r,i){var o=this.props,a=(i||{}).selection,s=a===void 0?[null,null]:a,l=s[0],c=s[1];!!n.multiline!=!!o.multiline&&r.isFocused&&(this.focus(),l!==null&&c!==null&&l>=0&&c>=0&&this.setSelectionRange(l,c)),n.value!==o.value&&(this._lastChangeValue=void 0);var d=OA(n,r),u=this.value;d!==u&&(this._warnControlledUsage(n),this.state.errorMessage&&!o.errorMessage&&this.setState({errorMessage:""}),this._adjustInputHeight(),qI(o)&&this._delayedValidate(u))},t.prototype.render=function(){var n=this.props,r=n.borderless,i=n.className,o=n.disabled,a=n.invalid,s=n.iconProps,l=n.inputClassName,c=n.label,d=n.multiline,u=n.required,f=n.underlined,v=n.prefix,A=n.resizable,p=n.suffix,C=n.theme,y=n.styles,h=n.autoAdjustHeight,b=n.canRevealPassword,w=n.revealPasswordAriaLabel,S=n.type,E=n.onRenderPrefix,I=E===void 0?this._onRenderPrefix:E,F=n.onRenderSuffix,k=F===void 0?this._onRenderSuffix:F,D=n.onRenderLabel,P=D===void 0?this._onRenderLabel:D,H=n.onRenderDescription,G=H===void 0?this._onRenderDescription:H,_=this.state,M=_.isFocused,K=_.isRevealingPassword,Q=this._errorMessage,O=typeof a=="boolean"?a:!!Q,R=!!b&&S==="password"&&XO(),T=this._classNames=VO(y,{theme:C,className:i,disabled:o,focused:M,required:u,multiline:d,hasLabel:!!c,hasErrorMessage:O,borderless:r,resizable:A,hasIcon:!!s,underlined:f,inputClassName:l,autoAdjustHeight:h,hasRevealButton:R});return g.createElement("div",{ref:this.props.elementRef,className:T.root},g.createElement("div",{className:T.wrapper},P(this.props,this._onRenderLabel),g.createElement("div",{className:T.fieldGroup},(v!==void 0||this.props.onRenderPrefix)&&g.createElement("div",{className:T.prefix,id:this._prefixId},I(this.props,this._onRenderPrefix)),d?this._renderTextArea():this._renderInput(),s&&g.createElement(eo,B({className:T.icon},s)),R&&g.createElement("button",{"aria-label":w,className:T.revealButton,onClick:this._onRevealButtonClick,"aria-pressed":!!K,type:"button"},g.createElement("span",{className:T.revealSpan},g.createElement(eo,{className:T.revealIcon,iconName:K?QO:YO}))),(p!==void 0||this.props.onRenderSuffix)&&g.createElement("div",{className:T.suffix,id:this._suffixId},k(this.props,this._onRenderSuffix)))),this._isDescriptionAvailable&&g.createElement("span",{id:this._descriptionId},G(this.props,this._onRenderDescription),Q&&g.createElement("div",{role:"alert"},g.createElement(bT,null,this._renderErrorMessage()))))},t.prototype.focus=function(){this._textElement.current&&this._textElement.current.focus()},t.prototype.blur=function(){this._textElement.current&&this._textElement.current.blur()},t.prototype.select=function(){this._textElement.current&&this._textElement.current.select()},t.prototype.setSelectionStart=function(n){this._textElement.current&&(this._textElement.current.selectionStart=n)},t.prototype.setSelectionEnd=function(n){this._textElement.current&&(this._textElement.current.selectionEnd=n)},Object.defineProperty(t.prototype,"selectionStart",{get:function(){return this._textElement.current?this._textElement.current.selectionStart:-1},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"selectionEnd",{get:function(){return this._textElement.current?this._textElement.current.selectionEnd:-1},enumerable:!1,configurable:!0}),t.prototype.setSelectionRange=function(n,r){this._textElement.current&&this._textElement.current.setSelectionRange(n,r)},t.prototype._warnControlledUsage=function(n){this._id,this.props,this.props.value===null&&!this._hasWarnedNullValue&&(this._hasWarnedNullValue=!0,Mw("Warning: 'value' prop on '".concat(Zs,"' should not be null. Consider using an ")+"empty string to clear the component or undefined to indicate an uncontrolled component."))},Object.defineProperty(t.prototype,"_id",{get:function(){return this.props.id||this._fallbackId},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_isControlled",{get:function(){return u9(this.props,"value")},enumerable:!1,configurable:!0}),t.prototype._onRenderPrefix=function(n){var r=n.prefix;return g.createElement("span",{style:{paddingBottom:"1px"}},r)},t.prototype._onRenderSuffix=function(n){var r=n.suffix;return g.createElement("span",{style:{paddingBottom:"1px"}},r)},Object.defineProperty(t.prototype,"_errorMessage",{get:function(){var n=this.props.errorMessage,r=n===void 0?this.state.errorMessage:n;return r||""},enumerable:!1,configurable:!0}),t.prototype._renderErrorMessage=function(){var n=this._errorMessage;return n?typeof n=="string"?g.createElement("p",{className:this._classNames.errorMessage},g.createElement("span",{"data-automation-id":"error-message"},n)):g.createElement("div",{className:this._classNames.errorMessage,"data-automation-id":"error-message"},n):null},Object.defineProperty(t.prototype,"_isDescriptionAvailable",{get:function(){var n=this.props;return!!(n.onRenderDescription||n.description||this._errorMessage)},enumerable:!1,configurable:!0}),t.prototype._renderTextArea=function(){var n=this.props.invalid,r=n===void 0?!!this._errorMessage:n,i=Bt(this.props,M9,["defaultValue"]),o=this.props["aria-labelledby"]||(this.props.label?this._labelId:void 0);return g.createElement("textarea",B({id:this._id},i,{ref:this._textElement,value:this.value||"",onInput:this._onInputChange,onChange:this._onInputChange,className:this._classNames.field,"aria-labelledby":o,"aria-describedby":this._isDescriptionAvailable?this._descriptionId:this.props["aria-describedby"],"aria-invalid":r,"aria-label":this.props.ariaLabel,readOnly:this.props.readOnly,onFocus:this._onFocus,onBlur:this._onBlur}))},t.prototype._renderInput=function(){var n=this.props,r=n.ariaLabel,i=n.invalid,o=i===void 0?!!this._errorMessage:i,a=n.onRenderPrefix,s=n.onRenderSuffix,l=n.prefix,c=n.suffix,d=n.type,u=d===void 0?"text":d,f=n.label,v=[];f&&v.push(this._labelId),(l!==void 0||a)&&v.push(this._prefixId),(c!==void 0||s)&&v.push(this._suffixId);var A=B(B({type:this.state.isRevealingPassword?"text":u,id:this._id},Bt(this.props,N9,["defaultValue","type"])),{"aria-labelledby":this.props["aria-labelledby"]||(v.length>0?v.join(" "):void 0),ref:this._textElement,value:this.value||"",onInput:this._onInputChange,onChange:this._onInputChange,className:this._classNames.field,"aria-label":r,"aria-describedby":this._isDescriptionAvailable?this._descriptionId:this.props["aria-describedby"],"aria-invalid":o,onFocus:this._onFocus,onBlur:this._onBlur}),p=function(y){return g.createElement("input",B({},y))},C=this.props.onRenderInput||p;return C(A,p)},t.prototype._validate=function(n){var r=this;if(!(this._latestValidateValue===n&&qI(this.props))){this._latestValidateValue=n;var i=this.props.onGetErrorMessage,o=i&&i(n||"");if(o!==void 0)if(typeof o=="string"||!("then"in o))this.setState({errorMessage:o}),this._notifyAfterValidate(n,o);else{var a=++this._lastValidation;o.then(function(s){a===r._lastValidation&&r.setState({errorMessage:s}),r._notifyAfterValidate(n,s)})}else this._notifyAfterValidate(n,"")}},t.prototype._notifyAfterValidate=function(n,r){n===this.value&&this.props.onNotifyValidationResult&&this.props.onNotifyValidationResult(r,n)},t.prototype._adjustInputHeight=function(){if(this._textElement.current&&this.props.autoAdjustHeight&&this.props.multiline){var n=this._textElement.current;n.style.height="",n.style.height=n.scrollHeight+"px"}},t.defaultProps={resizable:!0,deferredValidationTime:200,validateOnLoad:!0},t}(g.Component);function OA(e,t){var n=e.value,r=n===void 0?t.uncontrolledValue:n;return typeof r=="number"?String(r):r}function qI(e){return!(e.validateOnFocusIn||e.validateOnFocusOut)}var Hm;function XO(){if(typeof Hm!="boolean"){var e=_t();if(e!=null&&e.navigator){var t=/Edg/.test(e.navigator.userAgent||"");Hm=!(V9()||t)}else Hm=!0}return Hm}var qO={root:"ms-TextField",description:"ms-TextField-description",errorMessage:"ms-TextField-errorMessage",field:"ms-TextField-field",fieldGroup:"ms-TextField-fieldGroup",prefix:"ms-TextField-prefix",suffix:"ms-TextField-suffix",wrapper:"ms-TextField-wrapper",revealButton:"ms-TextField-reveal",multiline:"ms-TextField--multiline",borderless:"ms-TextField--borderless",underlined:"ms-TextField--underlined",unresizable:"ms-TextField--unresizable",required:"is-required",disabled:"is-disabled",active:"is-active"};function JO(e){var t=e.underlined,n=e.disabled,r=e.focused,i=e.theme,o=i.palette,a=i.fonts;return function(){var s;return{root:[t&&n&&{color:o.neutralTertiary},t&&{fontSize:a.medium.fontSize,marginRight:8,paddingLeft:12,paddingRight:0,lineHeight:"22px",height:32},t&&r&&{selectors:(s={},s[Ae]={height:31},s)}]}}}function $O(e){var t,n,r,i,o,a,s,l,c,d,u,f,v=e.theme,A=e.className,p=e.disabled,C=e.focused,y=e.required,h=e.multiline,b=e.hasLabel,w=e.borderless,S=e.underlined,E=e.hasIcon,I=e.resizable,F=e.hasErrorMessage,k=e.inputClassName,D=e.autoAdjustHeight,P=e.hasRevealButton,H=v.semanticColors,G=v.effects,_=v.fonts,M=Lr(qO,v),K={background:H.disabledBackground,color:p?H.disabledText:H.inputPlaceholderText,display:"flex",alignItems:"center",padding:"0 10px",lineHeight:1,whiteSpace:"nowrap",flexShrink:0,selectors:(t={},t[Ae]={background:"Window",color:p?"GrayText":"WindowText"},t)},Q=[{color:H.inputPlaceholderText,opacity:1,selectors:(n={},n[Ae]={color:"GrayText"},n)}],O={color:H.disabledText,selectors:(r={},r[Ae]={color:"GrayText"},r)};return{root:[M.root,_.medium,y&&M.required,p&&M.disabled,C&&M.active,h&&M.multiline,w&&M.borderless,S&&M.underlined,NA,{position:"relative"},A],wrapper:[M.wrapper,S&&[{display:"flex",borderBottom:"1px solid ".concat(F?H.errorText:H.inputBorder),width:"100%"},p&&{borderBottomColor:H.disabledBackground,selectors:(i={},i[Ae]=B({borderColor:"GrayText"},Zn()),i)},!p&&{selectors:{":hover":{borderBottomColor:F?H.errorText:H.inputBorderHovered,selectors:(o={},o[Ae]=B({borderBottomColor:"Highlight"},Zn()),o)}}},C&&[{position:"relative"},RI(F?H.errorText:H.inputFocusBorderAlt,0,"borderBottom")]]],fieldGroup:[M.fieldGroup,NA,{border:"1px solid ".concat(H.inputBorder),borderRadius:G.roundedCorner2,background:H.inputBackground,cursor:"text",height:32,display:"flex",flexDirection:"row",alignItems:"stretch",position:"relative"},h&&{minHeight:"60px",height:"auto",display:"flex"},!C&&!p&&{selectors:{":hover":{borderColor:H.inputBorderHovered,selectors:(a={},a[Ae]=B({borderColor:"Highlight"},Zn()),a)}}},C&&!S&&RI(F?H.errorText:H.inputFocusBorderAlt,G.roundedCorner2),p&&{borderColor:H.disabledBackground,selectors:(s={},s[Ae]=B({borderColor:"GrayText"},Zn()),s),cursor:"default"},w&&{border:"none"},w&&C&&{border:"none",selectors:{":after":{border:"none"}}},S&&{flex:"1 1 0px",border:"none",textAlign:"left"},S&&p&&{backgroundColor:"transparent"},F&&!S&&{borderColor:H.errorText,selectors:{"&:hover":{borderColor:H.errorText}}},!b&&y&&{selectors:(l={":before":{content:"'*'",color:H.errorText,position:"absolute",top:-5,right:-10}},l[Ae]={selectors:{":before":{color:"WindowText",right:-14}}},l)}],field:[_.medium,M.field,NA,{borderRadius:0,border:"none",background:"none",backgroundColor:"transparent",color:H.inputText,padding:"0 8px",width:"100%",minWidth:0,textOverflow:"ellipsis",outline:0,selectors:(c={"&:active, &:focus, &:hover":{outline:0},"::-ms-clear":{display:"none"}},c[Ae]={background:"Window",color:p?"GrayText":"WindowText"},c)},xI(Q),h&&!I&&[M.unresizable,{resize:"none"}],h&&{minHeight:"inherit",lineHeight:17,flexGrow:1,paddingTop:6,paddingBottom:6,overflow:"auto",width:"100%"},h&&D&&{overflow:"hidden"},E&&!P&&{paddingRight:24},h&&E&&{paddingRight:40},p&&[{backgroundColor:H.disabledBackground,color:H.disabledText,borderColor:H.disabledBackground},xI(O)],S&&{textAlign:"left"},C&&!w&&{selectors:(d={},d[Ae]={paddingLeft:11,paddingRight:11},d)},C&&h&&!w&&{selectors:(u={},u[Ae]={paddingTop:4},u)},k],icon:[h&&{paddingRight:24,alignItems:"flex-end"},{pointerEvents:"none",position:"absolute",bottom:6,right:8,top:"auto",fontSize:wi.medium,lineHeight:18},p&&{color:H.disabledText}],description:[M.description,{color:H.bodySubtext,fontSize:_.xSmall.fontSize}],errorMessage:[M.errorMessage,eu.slideDownIn20,_.small,{color:H.errorText,margin:0,paddingTop:5,display:"flex",alignItems:"center"}],prefix:[M.prefix,K],suffix:[M.suffix,K],revealButton:[M.revealButton,"ms-Button","ms-Button--icon",da(v,{inset:1}),{height:30,width:32,border:"none",padding:"0px 4px",backgroundColor:"transparent",color:H.link,selectors:{":hover":{outline:0,color:H.primaryButtonBackgroundHovered,backgroundColor:H.buttonBackgroundHovered,selectors:(f={},f[Ae]={borderColor:"Highlight",color:"Highlight"},f)},":focus":{outline:0}}},E&&{marginRight:28}],revealSpan:{display:"flex",height:"100%",alignItems:"center"},revealIcon:{margin:"0px 4px",pointerEvents:"none",bottom:6,right:8,top:"auto",fontSize:wi.medium,lineHeight:18},subComponentStyles:{label:JO(e)}}}var UA=wr(ZO,$O,void 0,{scope:"TextField"}),P4=HT.durationValue2,eU={root:"ms-Modal",main:"ms-Dialog-main",scrollableContent:"ms-Modal-scrollableContent",isOpen:"is-open",layer:"ms-Modal-Layer"},tU=function(e){var t,n=e.className,r=e.containerClassName,i=e.scrollableContentClassName,o=e.isOpen,a=e.isVisible,s=e.hasBeenOpened,l=e.modalRectangleTop,c=e.theme,d=e.topOffsetFixed,u=e.isModeless,f=e.layerClassName,v=e.isDefaultDragHandle,A=e.windowInnerHeight,p=c.palette,C=c.effects,y=c.fonts,h=Lr(eU,c);return{root:[h.root,y.medium,{backgroundColor:"transparent",position:"fixed",height:"100%",width:"100%",display:"flex",alignItems:"center",justifyContent:"center",opacity:0,pointerEvents:"none",transition:"opacity ".concat(P4)},d&&typeof l=="number"&&s&&{alignItems:"flex-start"},o&&h.isOpen,a&&{opacity:1},a&&!u&&{pointerEvents:"auto"},n],main:[h.main,{boxShadow:C.elevation64,borderRadius:C.roundedCorner2,backgroundColor:p.white,boxSizing:"border-box",position:"relative",textAlign:"left",outline:"3px solid transparent",maxHeight:"calc(100% - 32px)",maxWidth:"calc(100% - 32px)",minHeight:"176px",minWidth:"288px",overflowY:"auto",zIndex:u?Uu.Layer:void 0},u&&{pointerEvents:"auto"},d&&typeof l=="number"&&s&&{top:l},v&&{cursor:"move"},r],scrollableContent:[h.scrollableContent,{overflowY:"auto",flexGrow:1,maxHeight:"100vh",selectors:(t={},t["@supports (-webkit-overflow-scrolling: touch)"]={maxHeight:A},t)},i],layer:u&&[f,h.layer,{pointerEvents:"none"}],keyboardMoveIconContainer:{position:"absolute",display:"flex",justifyContent:"center",width:"100%",padding:"3px 0px"},keyboardMoveIcon:{fontSize:y.xLargePlus.fontSize,width:"24px"}}},nU=Cr(),rU=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;id(r);var i=r.props.allowTouchBodyScroll,o=i===void 0?!1:i;return r._allowTouchBodyScroll=o,r}return t.prototype.componentDidMount=function(){!this._allowTouchBodyScroll&&D5()},t.prototype.componentWillUnmount=function(){!this._allowTouchBodyScroll&&F5()},t.prototype.render=function(){var n=this.props,r=n.isDarkThemed,i=n.className,o=n.theme,a=n.styles,s=Bt(this.props,rc),l=nU(a,{theme:o,className:i,isDark:r});return g.createElement("div",B({},s,{className:l.root}))},t}(g.Component),iU={root:"ms-Overlay",rootDark:"ms-Overlay--dark"},oU=function(e){var t,n=e.className,r=e.theme,i=e.isNone,o=e.isDark,a=r.palette,s=Lr(iU,r);return{root:[s.root,r.fonts.medium,{backgroundColor:a.whiteTranslucent40,top:0,right:0,bottom:0,left:0,position:"absolute",selectors:(t={},t[Ae]={border:"1px solid WindowText",opacity:0},t)},i&&{visibility:"hidden"},o&&[s.rootDark,{backgroundColor:a.blackTranslucent40}],n]}},aU=wr(rU,oU,void 0,{scope:"Overlay"}),sU=Jt(function(e,t){return{root:wo(e,t&&{touchAction:"none",selectors:{"& *":{userSelect:"none"}}})}}),Md={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}},lU=function(e){fn(t,e);function t(n){var r=e.call(this,n)||this;return r._currentEventType=Md.mouse,r._events=[],r._onMouseDown=function(i){var o=g.Children.only(r.props.children).props.onMouseDown;return o&&o(i),r._currentEventType=Md.mouse,r._onDragStart(i)},r._onMouseUp=function(i){var o=g.Children.only(r.props.children).props.onMouseUp;return o&&o(i),r._currentEventType=Md.mouse,r._onDragStop(i)},r._onTouchStart=function(i){var o=g.Children.only(r.props.children).props.onTouchStart;return o&&o(i),r._currentEventType=Md.touch,r._onDragStart(i)},r._onTouchEnd=function(i){var o=g.Children.only(r.props.children).props.onTouchEnd;o&&o(i),r._currentEventType=Md.touch,r._onDragStop(i)},r._onDragStart=function(i){if(typeof i.button=="number"&&i.button!==0)return!1;if(!(r.props.handleSelector&&!r._matchesSelector(i.target,r.props.handleSelector)||r.props.preventDragSelector&&r._matchesSelector(i.target,r.props.preventDragSelector))){r._touchId=r._getTouchId(i);var o=r._getControlPosition(i);if(o!==void 0){var a=r._createDragDataFromPosition(o);r.props.onStart&&r.props.onStart(i,a),r.setState({isDragging:!0,lastPosition:o}),r._events=[Eo(document.body,r._currentEventType.move,r._onDrag,!0),Eo(document.body,r._currentEventType.stop,r._onDragStop,!0)]}}},r._onDrag=function(i){i.type==="touchmove"&&i.preventDefault();var o=r._getControlPosition(i);if(o){var a=r._createUpdatedDragData(r._createDragDataFromPosition(o)),s=a.position;r.props.onDragChange&&r.props.onDragChange(i,a),r.setState({position:s,lastPosition:o})}},r._onDragStop=function(i){if(r.state.isDragging){var o=r._getControlPosition(i);if(o){var a=r._createDragDataFromPosition(o);r.setState({isDragging:!1,lastPosition:void 0}),r.props.onStop&&r.props.onStop(i,a),r.props.position&&r.setState({position:r.props.position}),r._events.forEach(function(s){return s()})}}},r.state={isDragging:!1,position:r.props.position||{x:0,y:0},lastPosition:void 0},r}return t.prototype.componentDidUpdate=function(n){this.props.position&&(!n.position||this.props.position!==n.position)&&this.setState({position:this.props.position})},t.prototype.componentWillUnmount=function(){this._events.forEach(function(n){return n()})},t.prototype.render=function(){var n=g.Children.only(this.props.children),r=n.props,i=this.props.position,o=this.state,a=o.position,s=o.isDragging,l=a.x,c=a.y;return i&&!s&&(l=i.x,c=i.y),g.cloneElement(n,{style:B(B({},r.style),{transform:"translate(".concat(l,"px, ").concat(c,"px)")}),className:sU(r.className,this.state.isDragging).root,onMouseDown:this._onMouseDown,onMouseUp:this._onMouseUp,onTouchStart:this._onTouchStart,onTouchEnd:this._onTouchEnd})},t.prototype._getControlPosition=function(n){var r=this._getActiveTouch(n);if(!(this._touchId!==void 0&&!r)){var i=r||n;return{x:i.clientX,y:i.clientY}}},t.prototype._getActiveTouch=function(n){return n.targetTouches&&this._findTouchInTouchList(n.targetTouches)||n.changedTouches&&this._findTouchInTouchList(n.changedTouches)},t.prototype._getTouchId=function(n){var r=n.targetTouches&&n.targetTouches[0]||n.changedTouches&&n.changedTouches[0];if(r)return r.identifier},t.prototype._matchesSelector=function(n,r){if(!n||n===document.body)return!1;var i=n.matches||n.webkitMatchesSelector||n.msMatchesSelector;return i?i.call(n,r)||this._matchesSelector(n.parentElement,r):!1},t.prototype._findTouchInTouchList=function(n){if(this._touchId!==void 0){for(var r=0;r=(K||Wu.small)&&g.createElement(l4,B({ref:V},Lo),g.createElement(Ow,B({role:vd?"alertdialog":"dialog",ariaLabelledBy:P,ariaDescribedBy:G,onDismiss:I,shouldRestoreFocus:!h,enableAriaHiddenSiblings:j,"aria-modal":!O},W),g.createElement("div",{className:St.root,role:O?void 0:"document"},!O&&g.createElement(aU,B({"aria-hidden":!0,isDarkThemed:E,onClick:b?void 0:I,allowTouchBodyScroll:l},k)),R?g.createElement(lU,{handleSelector:R.dragHandleSelector||"#".concat(J),preventDragSelector:"button",onStart:j0,onDragChange:vm,onStop:H0,position:ue},pm):pm)))||null});k4.displayName="Modal";var Hw=wr(k4,tU,void 0,{scope:"Modal",fields:["theme","styles","enableAriaHiddenSiblings"]});Hw.displayName="Modal";function vU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons"',src:"url('".concat(e,"fabric-icons-a13498cf.woff') format('woff')")},icons:{GlobalNavButton:"",ChevronDown:"",ChevronUp:"",Edit:"",Add:"",Cancel:"",More:"",Settings:"",Mail:"",Filter:"",Search:"",Share:"",BlockedSite:"",FavoriteStar:"",FavoriteStarFill:"",CheckMark:"",Delete:"",ChevronLeft:"",ChevronRight:"",Calendar:"",Megaphone:"",Undo:"",Flag:"",Page:"",Pinned:"",View:"",Clear:"",Download:"",Upload:"",Folder:"",Sort:"",AlignRight:"",AlignLeft:"",Tag:"",AddFriend:"",Info:"",SortLines:"",List:"",CircleRing:"",Heart:"",HeartFill:"",Tiles:"",Embed:"",Glimmer:"",Ascending:"",Descending:"",SortUp:"",SortDown:"",SyncToPC:"",LargeGrid:"",SkypeCheck:"",SkypeClock:"",SkypeMinus:"",ClearFilter:"",Flow:"",StatusCircleCheckmark:"",MoreVertical:""}};vn(n,t)}function mU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-0"',src:"url('".concat(e,"fabric-icons-0-467ee27f.woff') format('woff')")},icons:{PageLink:"",CommentSolid:"",ChangeEntitlements:"",Installation:"",WebAppBuilderModule:"",WebAppBuilderFragment:"",WebAppBuilderSlot:"",BullseyeTargetEdit:"",WebAppBuilderFragmentCreate:"",PageData:"",PageHeaderEdit:"",ProductList:"",UnpublishContent:"",DependencyAdd:"",DependencyRemove:"",EntitlementPolicy:"",EntitlementRedemption:"",SchoolDataSyncLogo:"",PinSolid12:"",PinSolidOff12:"",AddLink:"",SharepointAppIcon16:"",DataflowsLink:"",TimePicker:"",UserWarning:"",ComplianceAudit:"",InternetSharing:"",Brightness:"",MapPin:"",Airplane:"",Tablet:"",QuickNote:"",Video:"",People:"",Phone:"",Pin:"",Shop:"",Stop:"",Link:"",AllApps:"",Zoom:"",ZoomOut:"",Microphone:"",Camera:"",Attach:"",Send:"",FavoriteList:"",PageSolid:"",Forward:"",Back:"",Refresh:"",Lock:"",ReportHacked:"",EMI:"",MiniLink:"",Blocked:"",ReadingMode:"",Favicon:"",Remove:"",Checkbox:"",CheckboxComposite:"",CheckboxFill:"",CheckboxIndeterminate:"",CheckboxCompositeReversed:"",BackToWindow:"",FullScreen:"",Print:"",Up:"",Down:"",OEM:"",Save:"",ReturnKey:"",Cloud:"",Flashlight:"",CommandPrompt:"",Sad:"",RealEstate:"",SIPMove:"",EraseTool:"",GripperTool:"",Dialpad:"",PageLeft:"",PageRight:"",MultiSelect:"",KeyboardClassic:"",Play:"",Pause:"",InkingTool:"",Emoji2:"",GripperBarHorizontal:"",System:"",Personalize:"",SearchAndApps:"",Globe:"",EaseOfAccess:"",ContactInfo:"",Unpin:"",Contact:"",Memo:"",IncomingCall:""}};vn(n,t)}function pU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-1"',src:"url('".concat(e,"fabric-icons-1-4d521695.woff') format('woff')")},icons:{Paste:"",WindowsLogo:"",Error:"",GripperBarVertical:"",Unlock:"",Slideshow:"",Trim:"",AutoEnhanceOn:"",AutoEnhanceOff:"",Color:"",SaveAs:"",Light:"",Filters:"",AspectRatio:"",Contrast:"",Redo:"",Crop:"",PhotoCollection:"",Album:"",Rotate:"",PanoIndicator:"",Translate:"",RedEye:"",ViewOriginal:"",ThumbnailView:"",Package:"",Telemarketer:"",Warning:"",Financial:"",Education:"",ShoppingCart:"",Train:"",Move:"",TouchPointer:"",Merge:"",TurnRight:"",Ferry:"",Highlight:"",PowerButton:"",Tab:"",Admin:"",TVMonitor:"",Speakers:"",Game:"",HorizontalTabKey:"",UnstackSelected:"",StackIndicator:"",Nav2DMapView:"",StreetsideSplitMinimize:"",Car:"",Bus:"",EatDrink:"",SeeDo:"",LocationCircle:"",Home:"",SwitcherStartEnd:"",ParkingLocation:"",IncidentTriangle:"",Touch:"",MapDirections:"",CaretHollow:"",CaretSolid:"",History:"",Location:"",MapLayers:"",SearchNearby:"",Work:"",Recent:"",Hotel:"",Bank:"",LocationDot:"",Dictionary:"",ChromeBack:"",FolderOpen:"",PinnedFill:"",RevToggleKey:"",USB:"",Previous:"",Next:"",Sync:"",Help:"",Emoji:"",MailForward:"",ClosePane:"",OpenPane:"",PreviewLink:"",ZoomIn:"",Bookmarks:"",Document:"",ProtectedDocument:"",OpenInNewWindow:"",MailFill:"",ViewAll:"",Switch:"",Rename:"",Go:"",Remote:"",SelectAll:"",Orientation:"",Import:""}};vn(n,t)}function hU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-2"',src:"url('".concat(e,"fabric-icons-2-63c99abf.woff') format('woff')")},icons:{Picture:"",ChromeClose:"",ShowResults:"",Message:"",CalendarDay:"",CalendarWeek:"",MailReplyAll:"",Read:"",Cut:"",PaymentCard:"",Copy:"",Important:"",MailReply:"",GotoToday:"",Font:"",FontColor:"",FolderFill:"",Permissions:"",DisableUpdates:"",Unfavorite:"",Italic:"",Underline:"",Bold:"",MoveToFolder:"",Dislike:"",Like:"",AlignCenter:"",OpenFile:"",ClearSelection:"",FontDecrease:"",FontIncrease:"",FontSize:"",CellPhone:"",RepeatOne:"",RepeatAll:"",Calculator:"",Library:"",PostUpdate:"",NewFolder:"",CalendarReply:"",UnsyncFolder:"",SyncFolder:"",BlockContact:"",Accept:"",BulletedList:"",Preview:"",News:"",Chat:"",Group:"",World:"",Comment:"",DockLeft:"",DockRight:"",Repair:"",Accounts:"",Street:"",RadioBullet:"",Stopwatch:"",Clock:"",WorldClock:"",AlarmClock:"",Photo:"",ActionCenter:"",Hospital:"",Timer:"",FullCircleMask:"",LocationFill:"",ChromeMinimize:"",ChromeRestore:"",Annotation:"",Fingerprint:"",Handwriting:"",ChromeFullScreen:"",Completed:"",Label:"",FlickDown:"",FlickUp:"",FlickLeft:"",FlickRight:"",MiniExpand:"",MiniContract:"",Streaming:"",MusicInCollection:"",OneDriveLogo:"",CompassNW:"",Code:"",LightningBolt:"",CalculatorMultiply:"",CalculatorAddition:"",CalculatorSubtract:"",CalculatorPercentage:"",CalculatorEqualTo:"",PrintfaxPrinterFile:"",StorageOptical:"",Communications:"",Headset:"",Health:"",Webcam2:"",FrontCamera:"",ChevronUpSmall:""}};vn(n,t)}function gU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-3"',src:"url('".concat(e,"fabric-icons-3-089e217a.woff') format('woff')")},icons:{ChevronDownSmall:"",ChevronLeftSmall:"",ChevronRightSmall:"",ChevronUpMed:"",ChevronDownMed:"",ChevronLeftMed:"",ChevronRightMed:"",Devices2:"",PC1:"",PresenceChickletVideo:"",Reply:"",HalfAlpha:"",ConstructionCone:"",DoubleChevronLeftMed:"",Volume0:"",Volume1:"",Volume2:"",Volume3:"",Chart:"",Robot:"",Manufacturing:"",LockSolid:"",FitPage:"",FitWidth:"",BidiLtr:"",BidiRtl:"",RightDoubleQuote:"",Sunny:"",CloudWeather:"",Cloudy:"",PartlyCloudyDay:"",PartlyCloudyNight:"",ClearNight:"",RainShowersDay:"",Rain:"",Thunderstorms:"",RainSnow:"",Snow:"",BlowingSnow:"",Frigid:"",Fog:"",Squalls:"",Duststorm:"",Unknown:"",Precipitation:"",Ribbon:"",AreaChart:"",Assign:"",FlowChart:"",CheckList:"",Diagnostic:"",Generate:"",LineChart:"",Equalizer:"",BarChartHorizontal:"",BarChartVertical:"",Freezing:"",FunnelChart:"",Processing:"",Quantity:"",ReportDocument:"",StackColumnChart:"",SnowShowerDay:"",HailDay:"",WorkFlow:"",HourGlass:"",StoreLogoMed20:"",TimeSheet:"",TriangleSolid:"",UpgradeAnalysis:"",VideoSolid:"",RainShowersNight:"",SnowShowerNight:"",Teamwork:"",HailNight:"",PeopleAdd:"",Glasses:"",DateTime2:"",Shield:"",Header1:"",PageAdd:"",NumberedList:"",PowerBILogo:"",Info2:"",MusicInCollectionFill:"",Asterisk:"",ErrorBadge:"",CircleFill:"",Record2:"",AllAppsMirrored:"",BookmarksMirrored:"",BulletedListMirrored:"",CaretHollowMirrored:"",CaretSolidMirrored:"",ChromeBackMirrored:"",ClearSelectionMirrored:"",ClosePaneMirrored:"",DockLeftMirrored:"",DoubleChevronLeftMedMirrored:"",GoMirrored:""}};vn(n,t)}function AU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-4"',src:"url('".concat(e,"fabric-icons-4-a656cc0a.woff') format('woff')")},icons:{HelpMirrored:"",ImportMirrored:"",ImportAllMirrored:"",ListMirrored:"",MailForwardMirrored:"",MailReplyMirrored:"",MailReplyAllMirrored:"",MiniContractMirrored:"",MiniExpandMirrored:"",OpenPaneMirrored:"",ParkingLocationMirrored:"",SendMirrored:"",ShowResultsMirrored:"",ThumbnailViewMirrored:"",Media:"",Devices3:"",Focus:"",VideoLightOff:"",Lightbulb:"",StatusTriangle:"",VolumeDisabled:"",Puzzle:"",EmojiNeutral:"",EmojiDisappointed:"",HomeSolid:"",Ringer:"",PDF:"",HeartBroken:"",StoreLogo16:"",MultiSelectMirrored:"",Broom:"",AddToShoppingList:"",Cocktails:"",Wines:"",Articles:"",Cycling:"",DietPlanNotebook:"",Pill:"",ExerciseTracker:"",HandsFree:"",Medical:"",Running:"",Weights:"",Trackers:"",AddNotes:"",AllCurrency:"",BarChart4:"",CirclePlus:"",Coffee:"",Cotton:"",Market:"",Money:"",PieDouble:"",PieSingle:"",RemoveFilter:"",Savings:"",Sell:"",StockDown:"",StockUp:"",Lamp:"",Source:"",MSNVideos:"",Cricket:"",Golf:"",Baseball:"",Soccer:"",MoreSports:"",AutoRacing:"",CollegeHoops:"",CollegeFootball:"",ProFootball:"",ProHockey:"",Rugby:"",SubstitutionsIn:"",Tennis:"",Arrivals:"",Design:"",Website:"",Drop:"",HistoricalWeather:"",SkiResorts:"",Snowflake:"",BusSolid:"",FerrySolid:"",AirplaneSolid:"",TrainSolid:"",Ticket:"",WifiWarning4:"",Devices4:"",AzureLogo:"",BingLogo:"",MSNLogo:"",OutlookLogoInverse:"",OfficeLogo:"",SkypeLogo:"",Door:"",EditMirrored:"",GiftCard:"",DoubleBookmark:"",StatusErrorFull:""}};vn(n,t)}function yU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-5"',src:"url('".concat(e,"fabric-icons-5-f95ba260.woff') format('woff')")},icons:{Certificate:"",FastForward:"",Rewind:"",Photo2:"",OpenSource:"",Movers:"",CloudDownload:"",Family:"",WindDirection:"",Bug:"",SiteScan:"",BrowserScreenShot:"",F12DevTools:"",CSS:"",JS:"",DeliveryTruck:"",ReminderPerson:"",ReminderGroup:"",ReminderTime:"",TabletMode:"",Umbrella:"",NetworkTower:"",CityNext:"",CityNext2:"",Section:"",OneNoteLogoInverse:"",ToggleFilled:"",ToggleBorder:"",SliderThumb:"",ToggleThumb:"",Documentation:"",Badge:"",Giftbox:"",VisualStudioLogo:"",HomeGroup:"",ExcelLogoInverse:"",WordLogoInverse:"",PowerPointLogoInverse:"",Cafe:"",SpeedHigh:"",Commitments:"",ThisPC:"",MusicNote:"",MicOff:"",PlaybackRate1x:"",EdgeLogo:"",CompletedSolid:"",AlbumRemove:"",MessageFill:"",TabletSelected:"",MobileSelected:"",LaptopSelected:"",TVMonitorSelected:"",DeveloperTools:"",Shapes:"",InsertTextBox:"",LowerBrightness:"",WebComponents:"",OfflineStorage:"",DOM:"",CloudUpload:"",ScrollUpDown:"",DateTime:"",Event:"",Cake:"",Org:"",PartyLeader:"",DRM:"",CloudAdd:"",AppIconDefault:"",Photo2Add:"",Photo2Remove:"",Calories:"",POI:"",AddTo:"",RadioBtnOff:"",RadioBtnOn:"",ExploreContent:"",Product:"",ProgressLoopInner:"",ProgressLoopOuter:"",Blocked2:"",FangBody:"",Toolbox:"",PageHeader:"",ChatInviteFriend:"",Brush:"",Shirt:"",Crown:"",Diamond:"",ScaleUp:"",QRCode:"",Feedback:"",SharepointLogoInverse:"",YammerLogo:"",Hide:"",Uneditable:"",ReturnToSession:"",OpenFolderHorizontal:"",CalendarMirrored:""}};vn(n,t)}function bU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-6"',src:"url('".concat(e,"fabric-icons-6-ef6fd590.woff') format('woff')")},icons:{SwayLogoInverse:"",OutOfOffice:"",Trophy:"",ReopenPages:"",EmojiTabSymbols:"",AADLogo:"",AccessLogo:"",AdminALogoInverse32:"",AdminCLogoInverse32:"",AdminDLogoInverse32:"",AdminELogoInverse32:"",AdminLLogoInverse32:"",AdminMLogoInverse32:"",AdminOLogoInverse32:"",AdminPLogoInverse32:"",AdminSLogoInverse32:"",AdminYLogoInverse32:"",DelveLogoInverse:"",ExchangeLogoInverse:"",LyncLogo:"",OfficeVideoLogoInverse:"",SocialListeningLogo:"",VisioLogoInverse:"",Balloons:"",Cat:"",MailAlert:"",MailCheck:"",MailLowImportance:"",MailPause:"",MailRepeat:"",SecurityGroup:"",Table:"",VoicemailForward:"",VoicemailReply:"",Waffle:"",RemoveEvent:"",EventInfo:"",ForwardEvent:"",WipePhone:"",AddOnlineMeeting:"",JoinOnlineMeeting:"",RemoveLink:"",PeopleBlock:"",PeopleRepeat:"",PeopleAlert:"",PeoplePause:"",TransferCall:"",AddPhone:"",UnknownCall:"",NoteReply:"",NoteForward:"",NotePinned:"",RemoveOccurrence:"",Timeline:"",EditNote:"",CircleHalfFull:"",Room:"",Unsubscribe:"",Subscribe:"",HardDrive:"",RecurringTask:"",TaskManager:"",TaskManagerMirrored:"",Combine:"",Split:"",DoubleChevronUp:"",DoubleChevronLeft:"",DoubleChevronRight:"",TextBox:"",TextField:"",NumberField:"",Dropdown:"",PenWorkspace:"",BookingsLogo:"",ClassNotebookLogoInverse:"",DelveAnalyticsLogo:"",DocsLogoInverse:"",Dynamics365Logo:"",DynamicSMBLogo:"",OfficeAssistantLogo:"",OfficeStoreLogo:"",OneNoteEduLogoInverse:"",PlannerLogo:"",PowerApps:"",Suitcase:"",ProjectLogoInverse:"",CaretLeft8:"",CaretRight8:"",CaretUp8:"",CaretDown8:"",CaretLeftSolid8:"",CaretRightSolid8:"",CaretUpSolid8:"",CaretDownSolid8:"",ClearFormatting:"",Superscript:"",Subscript:"",Strikethrough:"",Export:"",ExportMirrored:""}};vn(n,t)}function CU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-7"',src:"url('".concat(e,"fabric-icons-7-2b97bb99.woff') format('woff')")},icons:{SingleBookmark:"",SingleBookmarkSolid:"",DoubleChevronDown:"",FollowUser:"",ReplyAll:"",WorkforceManagement:"",RecruitmentManagement:"",Questionnaire:"",ManagerSelfService:"",ProductionFloorManagement:"",ProductRelease:"",ProductVariant:"",ReplyMirrored:"",ReplyAllMirrored:"",Medal:"",AddGroup:"",QuestionnaireMirrored:"",CloudImportExport:"",TemporaryUser:"",CaretSolid16:"",GroupedDescending:"",GroupedAscending:"",AwayStatus:"",MyMoviesTV:"",GenericScan:"",AustralianRules:"",WifiEthernet:"",TrackersMirrored:"",DateTimeMirrored:"",StopSolid:"",DoubleChevronUp12:"",DoubleChevronDown12:"",DoubleChevronLeft12:"",DoubleChevronRight12:"",CalendarAgenda:"",ConnectVirtualMachine:"",AddEvent:"",AssetLibrary:"",DataConnectionLibrary:"",DocLibrary:"",FormLibrary:"",FormLibraryMirrored:"",ReportLibrary:"",ReportLibraryMirrored:"",ContactCard:"",CustomList:"",CustomListMirrored:"",IssueTracking:"",IssueTrackingMirrored:"",PictureLibrary:"",OfficeAddinsLogo:"",OfflineOneDriveParachute:"",OfflineOneDriveParachuteDisabled:"",TriangleSolidUp12:"",TriangleSolidDown12:"",TriangleSolidLeft12:"",TriangleSolidRight12:"",TriangleUp12:"",TriangleDown12:"",TriangleLeft12:"",TriangleRight12:"",ArrowUpRight8:"",ArrowDownRight8:"",DocumentSet:"",GoToDashboard:"",DelveAnalytics:"",ArrowUpRightMirrored8:"",ArrowDownRightMirrored8:"",CompanyDirectory:"",OpenEnrollment:"",CompanyDirectoryMirrored:"",OneDriveAdd:"",ProfileSearch:"",Header2:"",Header3:"",Header4:"",RingerSolid:"",Eyedropper:"",MarketDown:"",CalendarWorkWeek:"",SidePanel:"",GlobeFavorite:"",CaretTopLeftSolid8:"",CaretTopRightSolid8:"",ViewAll2:"",DocumentReply:"",PlayerSettings:"",ReceiptForward:"",ReceiptReply:"",ReceiptCheck:"",Fax:"",RecurringEvent:"",ReplyAlt:"",ReplyAllAlt:"",EditStyle:"",EditMail:"",Lifesaver:"",LifesaverLock:"",InboxCheck:"",FolderSearch:""}};vn(n,t)}function wU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-8"',src:"url('".concat(e,"fabric-icons-8-6fdf1528.woff') format('woff')")},icons:{CollapseMenu:"",ExpandMenu:"",Boards:"",SunAdd:"",SunQuestionMark:"",LandscapeOrientation:"",DocumentSearch:"",PublicCalendar:"",PublicContactCard:"",PublicEmail:"",PublicFolder:"",WordDocument:"",PowerPointDocument:"",ExcelDocument:"",GroupedList:"",ClassroomLogo:"",Sections:"",EditPhoto:"",Starburst:"",ShareiOS:"",AirTickets:"",PencilReply:"",Tiles2:"",SkypeCircleCheck:"",SkypeCircleClock:"",SkypeCircleMinus:"",SkypeMessage:"",ClosedCaption:"",ATPLogo:"",OfficeFormsLogoInverse:"",RecycleBin:"",EmptyRecycleBin:"",Hide2:"",Breadcrumb:"",BirthdayCake:"",TimeEntry:"",CRMProcesses:"",PageEdit:"",PageArrowRight:"",PageRemove:"",Database:"",DataManagementSettings:"",CRMServices:"",EditContact:"",ConnectContacts:"",AppIconDefaultAdd:"",AppIconDefaultList:"",ActivateOrders:"",DeactivateOrders:"",ProductCatalog:"",ScatterChart:"",AccountActivity:"",DocumentManagement:"",CRMReport:"",KnowledgeArticle:"",Relationship:"",HomeVerify:"",ZipFolder:"",SurveyQuestions:"",TextDocument:"",TextDocumentShared:"",PageCheckedOut:"",PageShared:"",SaveAndClose:"",Script:"",Archive:"",ActivityFeed:"",Compare:"",EventDate:"",ArrowUpRight:"",CaretRight:"",SetAction:"",ChatBot:"",CaretSolidLeft:"",CaretSolidDown:"",CaretSolidRight:"",CaretSolidUp:"",PowerAppsLogo:"",PowerApps2Logo:"",SearchIssue:"",SearchIssueMirrored:"",FabricAssetLibrary:"",FabricDataConnectionLibrary:"",FabricDocLibrary:"",FabricFormLibrary:"",FabricFormLibraryMirrored:"",FabricReportLibrary:"",FabricReportLibraryMirrored:"",FabricPublicFolder:"",FabricFolderSearch:"",FabricMovetoFolder:"",FabricUnsyncFolder:"",FabricSyncFolder:"",FabricOpenFolderHorizontal:"",FabricFolder:"",FabricFolderFill:"",FabricNewFolder:"",FabricPictureLibrary:"",PhotoVideoMedia:"",AddFavorite:""}};vn(n,t)}function EU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-9"',src:"url('".concat(e,"fabric-icons-9-c6162b42.woff') format('woff')")},icons:{AddFavoriteFill:"",BufferTimeBefore:"",BufferTimeAfter:"",BufferTimeBoth:"",PublishContent:"",ClipboardList:"",ClipboardListMirrored:"",CannedChat:"",SkypeForBusinessLogo:"",TabCenter:"",PageCheckedin:"",PageList:"",ReadOutLoud:"",CaretBottomLeftSolid8:"",CaretBottomRightSolid8:"",FolderHorizontal:"",MicrosoftStaffhubLogo:"",GiftboxOpen:"",StatusCircleOuter:"",StatusCircleInner:"",StatusCircleRing:"",StatusTriangleOuter:"",StatusTriangleInner:"",StatusTriangleExclamation:"",StatusCircleExclamation:"",StatusCircleErrorX:"",StatusCircleInfo:"",StatusCircleBlock:"",StatusCircleBlock2:"",StatusCircleQuestionMark:"",StatusCircleSync:"",Toll:"",ExploreContentSingle:"",CollapseContent:"",CollapseContentSingle:"",InfoSolid:"",GroupList:"",ProgressRingDots:"",CaloriesAdd:"",BranchFork:"",MuteChat:"",AddHome:"",AddWork:"",MobileReport:"",ScaleVolume:"",HardDriveGroup:"",FastMode:"",ToggleLeft:"",ToggleRight:"",TriangleShape:"",RectangleShape:"",CubeShape:"",Trophy2:"",BucketColor:"",BucketColorFill:"",Taskboard:"",SingleColumn:"",DoubleColumn:"",TripleColumn:"",ColumnLeftTwoThirds:"",ColumnRightTwoThirds:"",AccessLogoFill:"",AnalyticsLogo:"",AnalyticsQuery:"",NewAnalyticsQuery:"",AnalyticsReport:"",WordLogo:"",WordLogoFill:"",ExcelLogo:"",ExcelLogoFill:"",OneNoteLogo:"",OneNoteLogoFill:"",OutlookLogo:"",OutlookLogoFill:"",PowerPointLogo:"",PowerPointLogoFill:"",PublisherLogo:"",PublisherLogoFill:"",ScheduleEventAction:"",FlameSolid:"",ServerProcesses:"",Server:"",SaveAll:"",LinkedInLogo:"",Decimals:"",SidePanelMirrored:"",ProtectRestrict:"",Blog:"",UnknownMirrored:"",PublicContactCardMirrored:"",GridViewSmall:"",GridViewMedium:"",GridViewLarge:"",Step:"",StepInsert:"",StepShared:"",StepSharedAdd:"",StepSharedInsert:"",ViewDashboard:"",ViewList:""}};vn(n,t)}function SU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-10"',src:"url('".concat(e,"fabric-icons-10-c4ded8e4.woff') format('woff')")},icons:{ViewListGroup:"",ViewListTree:"",TriggerAuto:"",TriggerUser:"",PivotChart:"",StackedBarChart:"",StackedLineChart:"",BuildQueue:"",BuildQueueNew:"",UserFollowed:"",ContactLink:"",Stack:"",Bullseye:"",VennDiagram:"",FiveTileGrid:"",FocalPoint:"",Insert:"",RingerRemove:"",TeamsLogoInverse:"",TeamsLogo:"",TeamsLogoFill:"",SkypeForBusinessLogoFill:"",SharepointLogo:"",SharepointLogoFill:"",DelveLogo:"",DelveLogoFill:"",OfficeVideoLogo:"",OfficeVideoLogoFill:"",ExchangeLogo:"",ExchangeLogoFill:"",Signin:"",DocumentApproval:"",CloneToDesktop:"",InstallToDrive:"",Blur:"",Build:"",ProcessMetaTask:"",BranchFork2:"",BranchLocked:"",BranchCommit:"",BranchCompare:"",BranchMerge:"",BranchPullRequest:"",BranchSearch:"",BranchShelveset:"",RawSource:"",MergeDuplicate:"",RowsGroup:"",RowsChild:"",Deploy:"",Redeploy:"",ServerEnviroment:"",VisioDiagram:"",HighlightMappedShapes:"",TextCallout:"",IconSetsFlag:"",VisioLogo:"",VisioLogoFill:"",VisioDocument:"",TimelineProgress:"",TimelineDelivery:"",Backlog:"",TeamFavorite:"",TaskGroup:"",TaskGroupMirrored:"",ScopeTemplate:"",AssessmentGroupTemplate:"",NewTeamProject:"",CommentAdd:"",CommentNext:"",CommentPrevious:"",ShopServer:"",LocaleLanguage:"",QueryList:"",UserSync:"",UserPause:"",StreamingOff:"",ArrowTallUpLeft:"",ArrowTallUpRight:"",ArrowTallDownLeft:"",ArrowTallDownRight:"",FieldEmpty:"",FieldFilled:"",FieldChanged:"",FieldNotChanged:"",RingerOff:"",PlayResume:"",BulletedList2:"",BulletedList2Mirrored:"",ImageCrosshair:"",GitGraph:"",Repo:"",RepoSolid:"",FolderQuery:"",FolderList:"",FolderListMirrored:"",LocationOutline:"",POISolid:"",CalculatorNotEqualTo:"",BoxSubtractSolid:""}};vn(n,t)}function IU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-11"',src:"url('".concat(e,"fabric-icons-11-2a8393d6.woff') format('woff')")},icons:{BoxAdditionSolid:"",BoxMultiplySolid:"",BoxPlaySolid:"",BoxCheckmarkSolid:"",CirclePauseSolid:"",CirclePause:"",MSNVideosSolid:"",CircleStopSolid:"",CircleStop:"",NavigateBack:"",NavigateBackMirrored:"",NavigateForward:"",NavigateForwardMirrored:"",UnknownSolid:"",UnknownMirroredSolid:"",CircleAddition:"",CircleAdditionSolid:"",FilePDB:"",FileTemplate:"",FileSQL:"",FileJAVA:"",FileASPX:"",FileCSS:"",FileSass:"",FileLess:"",FileHTML:"",JavaScriptLanguage:"",CSharpLanguage:"",CSharp:"",VisualBasicLanguage:"",VB:"",CPlusPlusLanguage:"",CPlusPlus:"",FSharpLanguage:"",FSharp:"",TypeScriptLanguage:"",PythonLanguage:"",PY:"",CoffeeScript:"",MarkDownLanguage:"",FullWidth:"",FullWidthEdit:"",Plug:"",PlugSolid:"",PlugConnected:"",PlugDisconnected:"",UnlockSolid:"",Variable:"",Parameter:"",CommentUrgent:"",Storyboard:"",DiffInline:"",DiffSideBySide:"",ImageDiff:"",ImagePixel:"",FileBug:"",FileCode:"",FileComment:"",BusinessHoursSign:"",FileImage:"",FileSymlink:"",AutoFillTemplate:"",WorkItem:"",WorkItemBug:"",LogRemove:"",ColumnOptions:"",Packages:"",BuildIssue:"",AssessmentGroup:"",VariableGroup:"",FullHistory:"",Wheelchair:"",SingleColumnEdit:"",DoubleColumnEdit:"",TripleColumnEdit:"",ColumnLeftTwoThirdsEdit:"",ColumnRightTwoThirdsEdit:"",StreamLogo:"",PassiveAuthentication:"",AlertSolid:"",MegaphoneSolid:"",TaskSolid:"",ConfigurationSolid:"",BugSolid:"",CrownSolid:"",Trophy2Solid:"",QuickNoteSolid:"",ConstructionConeSolid:"",PageListSolid:"",PageListMirroredSolid:"",StarburstSolid:"",ReadingModeSolid:"",SadSolid:"",HealthSolid:"",ShieldSolid:"",GiftBoxSolid:"",ShoppingCartSolid:"",MailSolid:"",ChatSolid:"",RibbonSolid:""}};vn(n,t)}function DU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-12"',src:"url('".concat(e,"fabric-icons-12-7e945a1e.woff') format('woff')")},icons:{FinancialSolid:"",FinancialMirroredSolid:"",HeadsetSolid:"",PermissionsSolid:"",ParkingSolid:"",ParkingMirroredSolid:"",DiamondSolid:"",AsteriskSolid:"",OfflineStorageSolid:"",BankSolid:"",DecisionSolid:"",Parachute:"",ParachuteSolid:"",FiltersSolid:"",ColorSolid:"",ReviewSolid:"",ReviewRequestSolid:"",ReviewRequestMirroredSolid:"",ReviewResponseSolid:"",FeedbackRequestSolid:"",FeedbackRequestMirroredSolid:"",FeedbackResponseSolid:"",WorkItemBar:"",WorkItemBarSolid:"",Separator:"",NavigateExternalInline:"",PlanView:"",TimelineMatrixView:"",EngineeringGroup:"",ProjectCollection:"",CaretBottomRightCenter8:"",CaretBottomLeftCenter8:"",CaretTopRightCenter8:"",CaretTopLeftCenter8:"",DonutChart:"",ChevronUnfold10:"",ChevronFold10:"",DoubleChevronDown8:"",DoubleChevronUp8:"",DoubleChevronLeft8:"",DoubleChevronRight8:"",ChevronDownEnd6:"",ChevronUpEnd6:"",ChevronLeftEnd6:"",ChevronRightEnd6:"",ContextMenu:"",AzureAPIManagement:"",AzureServiceEndpoint:"",VSTSLogo:"",VSTSAltLogo1:"",VSTSAltLogo2:"",FileTypeSolution:"",WordLogoInverse16:"",WordLogo16:"",WordLogoFill16:"",PowerPointLogoInverse16:"",PowerPointLogo16:"",PowerPointLogoFill16:"",ExcelLogoInverse16:"",ExcelLogo16:"",ExcelLogoFill16:"",OneNoteLogoInverse16:"",OneNoteLogo16:"",OneNoteLogoFill16:"",OutlookLogoInverse16:"",OutlookLogo16:"",OutlookLogoFill16:"",PublisherLogoInverse16:"",PublisherLogo16:"",PublisherLogoFill16:"",VisioLogoInverse16:"",VisioLogo16:"",VisioLogoFill16:"",TestBeaker:"",TestBeakerSolid:"",TestExploreSolid:"",TestAutoSolid:"",TestUserSolid:"",TestImpactSolid:"",TestPlan:"",TestStep:"",TestParameter:"",TestSuite:"",TestCase:"",Sprint:"",SignOut:"",TriggerApproval:"",Rocket:"",AzureKeyVault:"",Onboarding:"",Transition:"",LikeSolid:"",DislikeSolid:"",CRMCustomerInsightsApp:"",EditCreate:"",PlayReverseResume:"",PlayReverse:"",SearchData:"",UnSetColor:"",DeclineCall:""}};vn(n,t)}function FU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-13"',src:"url('".concat(e,"fabric-icons-13-c3989a02.woff') format('woff')")},icons:{RectangularClipping:"",TeamsLogo16:"",TeamsLogoFill16:"",Spacer:"",SkypeLogo16:"",SkypeForBusinessLogo16:"",SkypeForBusinessLogoFill16:"",FilterSolid:"",MailUndelivered:"",MailTentative:"",MailTentativeMirrored:"",MailReminder:"",ReceiptUndelivered:"",ReceiptTentative:"",ReceiptTentativeMirrored:"",Inbox:"",IRMReply:"",IRMReplyMirrored:"",IRMForward:"",IRMForwardMirrored:"",VoicemailIRM:"",EventAccepted:"",EventTentative:"",EventTentativeMirrored:"",EventDeclined:"",IDBadge:"",BackgroundColor:"",OfficeFormsLogoInverse16:"",OfficeFormsLogo:"",OfficeFormsLogoFill:"",OfficeFormsLogo16:"",OfficeFormsLogoFill16:"",OfficeFormsLogoInverse24:"",OfficeFormsLogo24:"",OfficeFormsLogoFill24:"",PageLock:"",NotExecuted:"",NotImpactedSolid:"",FieldReadOnly:"",FieldRequired:"",BacklogBoard:"",ExternalBuild:"",ExternalTFVC:"",ExternalXAML:"",IssueSolid:"",DefectSolid:"",LadybugSolid:"",NugetLogo:"",TFVCLogo:"",ProjectLogo32:"",ProjectLogoFill32:"",ProjectLogo16:"",ProjectLogoFill16:"",SwayLogo32:"",SwayLogoFill32:"",SwayLogo16:"",SwayLogoFill16:"",ClassNotebookLogo32:"",ClassNotebookLogoFill32:"",ClassNotebookLogo16:"",ClassNotebookLogoFill16:"",ClassNotebookLogoInverse32:"",ClassNotebookLogoInverse16:"",StaffNotebookLogo32:"",StaffNotebookLogoFill32:"",StaffNotebookLogo16:"",StaffNotebookLogoFill16:"",StaffNotebookLogoInverted32:"",StaffNotebookLogoInverted16:"",KaizalaLogo:"",TaskLogo:"",ProtectionCenterLogo32:"",GallatinLogo:"",Globe2:"",Guitar:"",Breakfast:"",Brunch:"",BeerMug:"",Vacation:"",Teeth:"",Taxi:"",Chopsticks:"",SyncOccurence:"",UnsyncOccurence:"",GIF:"",PrimaryCalendar:"",SearchCalendar:"",VideoOff:"",MicrosoftFlowLogo:"",BusinessCenterLogo:"",ToDoLogoBottom:"",ToDoLogoTop:"",EditSolid12:"",EditSolidMirrored12:"",UneditableSolid12:"",UneditableSolidMirrored12:"",UneditableMirrored:"",AdminALogo32:"",AdminALogoFill32:"",ToDoLogoInverse:""}};vn(n,t)}function NU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-14"',src:"url('".concat(e,"fabric-icons-14-5cf58db8.woff') format('woff')")},icons:{Snooze:"",WaffleOffice365:"",ImageSearch:"",NewsSearch:"",VideoSearch:"",R:"",FontColorA:"",FontColorSwatch:"",LightWeight:"",NormalWeight:"",SemiboldWeight:"",GroupObject:"",UngroupObject:"",AlignHorizontalLeft:"",AlignHorizontalCenter:"",AlignHorizontalRight:"",AlignVerticalTop:"",AlignVerticalCenter:"",AlignVerticalBottom:"",HorizontalDistributeCenter:"",VerticalDistributeCenter:"",Ellipse:"",Line:"",Octagon:"",Hexagon:"",Pentagon:"",RightTriangle:"",HalfCircle:"",QuarterCircle:"",ThreeQuarterCircle:"","6PointStar":"","12PointStar":"",ArrangeBringToFront:"",ArrangeSendToBack:"",ArrangeSendBackward:"",ArrangeBringForward:"",BorderDash:"",BorderDot:"",LineStyle:"",LineThickness:"",WindowEdit:"",HintText:"",MediaAdd:"",AnchorLock:"",AutoHeight:"",ChartSeries:"",ChartXAngle:"",ChartYAngle:"",Combobox:"",LineSpacing:"",Padding:"",PaddingTop:"",PaddingBottom:"",PaddingLeft:"",PaddingRight:"",NavigationFlipper:"",AlignJustify:"",TextOverflow:"",VisualsFolder:"",VisualsStore:"",PictureCenter:"",PictureFill:"",PicturePosition:"",PictureStretch:"",PictureTile:"",Slider:"",SliderHandleSize:"",DefaultRatio:"",NumberSequence:"",GUID:"",ReportAdd:"",DashboardAdd:"",MapPinSolid:"",WebPublish:"",PieSingleSolid:"",BlockedSolid:"",DrillDown:"",DrillDownSolid:"",DrillExpand:"",DrillShow:"",SpecialEvent:"",OneDriveFolder16:"",FunctionalManagerDashboard:"",BIDashboard:"",CodeEdit:"",RenewalCurrent:"",RenewalFuture:"",SplitObject:"",BulkUpload:"",DownloadDocument:"",GreetingCard:"",Flower:"",WaitlistConfirm:"",WaitlistConfirmMirrored:"",LaptopSecure:"",DragObject:"",EntryView:"",EntryDecline:"",ContactCardSettings:"",ContactCardSettingsMirrored:""}};vn(n,t)}function MU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-15"',src:"url('".concat(e,"fabric-icons-15-3807251b.woff') format('woff')")},icons:{CalendarSettings:"",CalendarSettingsMirrored:"",HardDriveLock:"",HardDriveUnlock:"",AccountManagement:"",ReportWarning:"",TransitionPop:"",TransitionPush:"",TransitionEffect:"",LookupEntities:"",ExploreData:"",AddBookmark:"",SearchBookmark:"",DrillThrough:"",MasterDatabase:"",CertifiedDatabase:"",MaximumValue:"",MinimumValue:"",VisualStudioIDELogo32:"",PasteAsText:"",PasteAsCode:"",BrowserTab:"",BrowserTabScreenshot:"",DesktopScreenshot:"",FileYML:"",ClipboardSolid:"",FabricUserFolder:"",FabricNetworkFolder:"",BullseyeTarget:"",AnalyticsView:"",Video360Generic:"",Untag:"",Leave:"",Trending12:"",Blocked12:"",Warning12:"",CheckedOutByOther12:"",CheckedOutByYou12:"",CircleShapeSolid:"",SquareShapeSolid:"",TriangleShapeSolid:"",DropShapeSolid:"",RectangleShapeSolid:"",ZoomToFit:"",InsertColumnsLeft:"",InsertColumnsRight:"",InsertRowsAbove:"",InsertRowsBelow:"",DeleteColumns:"",DeleteRows:"",DeleteRowsMirrored:"",DeleteTable:"",AccountBrowser:"",VersionControlPush:"",StackedColumnChart2:"",TripleColumnWide:"",QuadColumn:"",WhiteBoardApp16:"",WhiteBoardApp32:"",PinnedSolid:"",InsertSignatureLine:"",ArrangeByFrom:"",Phishing:"",CreateMailRule:"",PublishCourse:"",DictionaryRemove:"",UserRemove:"",UserEvent:"",Encryption:"",PasswordField:"",OpenInNewTab:"",Hide3:"",VerifiedBrandSolid:"",MarkAsProtected:"",AuthenticatorApp:"",WebTemplate:"",DefenderTVM:"",MedalSolid:"",D365TalentLearn:"",D365TalentInsight:"",D365TalentHRCore:"",BacklogList:"",ButtonControl:"",TableGroup:"",MountainClimbing:"",TagUnknown:"",TagUnknownMirror:"",TagUnknown12:"",TagUnknown12Mirror:"",Link12:"",Presentation:"",Presentation12:"",Lock12:"",BuildDefinition:"",ReleaseDefinition:"",SaveTemplate:"",UserGauge:"",BlockedSiteSolid12:"",TagSolid:"",OfficeChat:""}};vn(n,t)}function TU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-16"',src:"url('".concat(e,"fabric-icons-16-9cf93f3b.woff') format('woff')")},icons:{OfficeChatSolid:"",MailSchedule:"",WarningSolid:"",Blocked2Solid:"",SkypeCircleArrow:"",SkypeArrow:"",SyncStatus:"",SyncStatusSolid:"",ProjectDocument:"",ToDoLogoOutline:"",VisioOnlineLogoFill32:"",VisioOnlineLogo32:"",VisioOnlineLogoCloud32:"",VisioDiagramSync:"",Event12:"",EventDateMissed12:"",UserOptional:"",ResponsesMenu:"",DoubleDownArrow:"",DistributeDown:"",BookmarkReport:"",FilterSettings:"",GripperDotsVertical:"",MailAttached:"",AddIn:"",LinkedDatabase:"",TableLink:"",PromotedDatabase:"",BarChartVerticalFilter:"",BarChartVerticalFilterSolid:"",MicOff2:"",MicrosoftTranslatorLogo:"",ShowTimeAs:"",FileRequest:"",WorkItemAlert:"",PowerBILogo16:"",PowerBILogoBackplate16:"",BulletedListText:"",BulletedListBullet:"",BulletedListTextMirrored:"",BulletedListBulletMirrored:"",NumberedListText:"",NumberedListNumber:"",NumberedListTextMirrored:"",NumberedListNumberMirrored:"",RemoveLinkChain:"",RemoveLinkX:"",FabricTextHighlight:"",ClearFormattingA:"",ClearFormattingEraser:"",Photo2Fill:"",IncreaseIndentText:"",IncreaseIndentArrow:"",DecreaseIndentText:"",DecreaseIndentArrow:"",IncreaseIndentTextMirrored:"",IncreaseIndentArrowMirrored:"",DecreaseIndentTextMirrored:"",DecreaseIndentArrowMirrored:"",CheckListText:"",CheckListCheck:"",CheckListTextMirrored:"",CheckListCheckMirrored:"",NumberSymbol:"",Coupon:"",VerifiedBrand:"",ReleaseGate:"",ReleaseGateCheck:"",ReleaseGateError:"",M365InvoicingLogo:"",RemoveFromShoppingList:"",ShieldAlert:"",FabricTextHighlightComposite:"",Dataflows:"",GenericScanFilled:"",DiagnosticDataBarTooltip:"",SaveToMobile:"",Orientation2:"",ScreenCast:"",ShowGrid:"",SnapToGrid:"",ContactList:"",NewMail:"",EyeShadow:"",FabricFolderConfirm:"",InformationBarriers:"",CommentActive:"",ColumnVerticalSectionEdit:"",WavingHand:"",ShakeDevice:"",SmartGlassRemote:"",Rotate90Clockwise:"",Rotate90CounterClockwise:"",CampaignTemplate:"",ChartTemplate:"",PageListFilter:"",SecondaryNav:"",ColumnVerticalSection:"",SkypeCircleSlash:"",SkypeSlash:""}};vn(n,t)}function RU(e,t){e===void 0&&(e="");var n={style:{MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",fontStyle:"normal",fontWeight:"normal",speak:"none"},fontFace:{fontFamily:'"FabricMDL2Icons-17"',src:"url('".concat(e,"fabric-icons-17-0c4ed701.woff') format('woff')")},icons:{CustomizeToolbar:"",DuplicateRow:"",RemoveFromTrash:"",MailOptions:"",Childof:"",Footer:"",Header:"",BarChartVerticalFill:"",StackedColumnChart2Fill:"",PlainText:"",AccessibiltyChecker:"",DatabaseSync:"",ReservationOrders:"",TabOneColumn:"",TabTwoColumn:"",TabThreeColumn:"",BulletedTreeList:"",MicrosoftTranslatorLogoGreen:"",MicrosoftTranslatorLogoBlue:"",InternalInvestigation:"",AddReaction:"",ContactHeart:"",VisuallyImpaired:"",EventToDoLogo:"",Variable2:"",ModelingView:"",DisconnectVirtualMachine:"",ReportLock:"",Uneditable2:"",Uneditable2Mirrored:"",BarChartVerticalEdit:"",GlobalNavButtonActive:"",PollResults:"",Rerun:"",QandA:"",QandAMirror:"",BookAnswers:"",AlertSettings:"",TrimStart:"",TrimEnd:"",TableComputed:"",DecreaseIndentLegacy:"",IncreaseIndentLegacy:"",SizeLegacy:""}};vn(n,t)}var PU=function(){Qs("trash","delete"),Qs("onedrive","onedrivelogo"),Qs("alertsolid12","eventdatemissed12"),Qs("sixpointstar","6pointstar"),Qs("twelvepointstar","12pointstar"),Qs("toggleon","toggleleft"),Qs("toggleoff","toggleright")};Sw("@fluentui/font-icons-mdl2","8.5.24");var kU="".concat(t6,"/assets/icons/"),Ac=_t();function x4(e,t){var n,r;e===void 0&&(e=((n=Ac==null?void 0:Ac.FabricConfig)===null||n===void 0?void 0:n.iconBaseUrl)||((r=Ac==null?void 0:Ac.FabricConfig)===null||r===void 0?void 0:r.fontBaseUrl)||kU),[vU,mU,pU,hU,gU,AU,yU,bU,CU,wU,EU,SU,IU,DU,FU,NU,MU,TU,RU].forEach(function(i){return i(e,t)}),PU()}var Ie;(function(e){e[e.info=0]="info",e[e.error=1]="error",e[e.blocked=2]="blocked",e[e.severeWarning=3]="severeWarning",e[e.success=4]="success",e[e.warning=5]="warning"})(Ie||(Ie={}));var Ma,xU=(Ma={},Ma[Ie.info]="Info",Ma[Ie.warning]="Info",Ma[Ie.error]="ErrorBadge",Ma[Ie.blocked]="Blocked2",Ma[Ie.severeWarning]="Warning",Ma[Ie.success]="Completed",Ma),_U="MessageBar",BU=Cr(),LU=function(e){switch(e){case Ie.blocked:case Ie.error:case Ie.severeWarning:return"assertive"}return"polite"},OU=function(e){switch(e){case Ie.blocked:case Ie.error:case Ie.severeWarning:return"alert"}return"status"},_4=g.forwardRef(function(e,t){var n=qT(!1),r=n[0],i=n[1].toggle,o=Kl("MessageBar"),a=e.actions,s=e.className,l=e.children,c=e.overflowButtonAriaLabel,d=e.dismissIconProps,u=e.styles,f=e.theme,v=e.messageBarType,A=v===void 0?Ie.info:v,p=e.onDismiss,C=p===void 0?void 0:p,y=e.isMultiline,h=y===void 0?!0:y,b=e.truncated,w=e.dismissButtonAriaLabel,S=e.messageBarIconProps,E=e.role,I=e.delayedRender,F=I===void 0?!0:I,k=e.expandButtonProps,D=Bt(e,Ot,["className","role"]),P=BU(u,{theme:f,messageBarType:A||Ie.info,onDismiss:C!==void 0,actions:a!==void 0,truncated:b,isMultiline:h,expandSingleLine:r,className:s}),H={iconName:r?"DoubleChevronUp":"DoubleChevronDown"},G=a||C?{"aria-describedby":o,role:"region"}:{},_=a?g.createElement("div",{className:P.actions},a):null,M=C?g.createElement(mv,{disabled:!1,className:P.dismissal,onClick:C,iconProps:d||{iconName:"Clear"},title:w,ariaLabel:w}):null;return g.createElement("div",B({ref:t,className:P.root},G),g.createElement("div",{className:P.content},g.createElement("div",{className:P.iconContainer,"aria-hidden":!0},S?g.createElement(eo,B({},S,{className:kr(P.icon,S.className)})):g.createElement(eo,{iconName:xU[A],className:P.icon})),g.createElement("div",{className:P.text,id:o,role:E||OU(A),"aria-live":LU(A)},g.createElement("span",B({className:P.innerText},D),F?g.createElement(bT,null,g.createElement("span",null,l)):g.createElement("span",null,l))),!h&&!_&&b&&g.createElement("div",{className:P.expandSingleLine},g.createElement(mv,B({disabled:!1,className:P.expand,onClick:i,iconProps:H,ariaLabel:c,"aria-expanded":r},k))),!h&&_,!h&&M&&g.createElement("div",{className:P.dismissSingleLine},M),h&&M),h&&_)});_4.displayName=_U;var Ta,Ra,Pa,ka,UU={root:"ms-MessageBar",error:"ms-MessageBar--error",blocked:"ms-MessageBar--blocked",severeWarning:"ms-MessageBar--severeWarning",success:"ms-MessageBar--success",warning:"ms-MessageBar--warning",multiline:"ms-MessageBar-multiline",singleline:"ms-MessageBar-singleline",dismissalSingleLine:"ms-MessageBar-dismissalSingleLine",expandingSingleLine:"ms-MessageBar-expandingSingleLine",content:"ms-MessageBar-content",iconContainer:"ms-MessageBar-icon",text:"ms-MessageBar-text",innerText:"ms-MessageBar-innerText",dismissSingleLine:"ms-MessageBar-dismissSingleLine",expandSingleLine:"ms-MessageBar-expandSingleLine",dismissal:"ms-MessageBar-dismissal",expand:"ms-MessageBar-expand",actions:"ms-MessageBar-actions",actionsSingleline:"ms-MessageBar-actionsSingleLine"},jU=(Ta={},Ta[Ie.error]="errorBackground",Ta[Ie.blocked]="errorBackground",Ta[Ie.success]="successBackground",Ta[Ie.warning]="warningBackground",Ta[Ie.severeWarning]="severeWarningBackground",Ta[Ie.info]="infoBackground",Ta),HU=(Ra={},Ra[Ie.error]="errorIcon",Ra[Ie.blocked]="errorIcon",Ra[Ie.success]="successIcon",Ra[Ie.warning]="warningIcon",Ra[Ie.severeWarning]="severeWarningIcon",Ra[Ie.info]="infoIcon",Ra),KU=(Pa={},Pa[Ie.error]="#ff0000",Pa[Ie.blocked]="#ff0000",Pa[Ie.success]="#bad80a",Pa[Ie.warning]="#fff100",Pa[Ie.severeWarning]="#ff0000",Pa[Ie.info]="WindowText",Pa),WU=(ka={},ka[Ie.error]="#e81123",ka[Ie.blocked]="#e81123",ka[Ie.success]="#107c10",ka[Ie.warning]="#966400",ka[Ie.severeWarning]="#d83b01",ka[Ie.info]="WindowText",ka),zU=function(e){var t,n,r,i,o,a,s,l,c,d,u,f=e.theme,v=e.className,A=e.onDismiss,p=e.truncated,C=e.isMultiline,y=e.expandSingleLine,h=e.messageBarType,b=h===void 0?Ie.info:h,w=f.semanticColors,S=f.fonts,E=xw(0,WB),I=Lr(UU,f),F={fontSize:wi.xSmall,height:10,lineHeight:"10px",color:w.messageText,selectors:(t={},t[Ae]=B(B({},Zn()),{color:"WindowText"}),t)},k=[da(f,{inset:1,highContrastStyle:{outlineOffset:"-6px",outline:"1px solid Highlight"},borderColor:"transparent"}),{flexShrink:0,width:32,height:32,padding:"8px 12px",selectors:{"& .ms-Button-icon":F,":hover":{backgroundColor:"transparent"},":active":{backgroundColor:"transparent"}}}];return{root:[I.root,S.medium,b===Ie.error&&I.error,b===Ie.blocked&&I.blocked,b===Ie.severeWarning&&I.severeWarning,b===Ie.success&&I.success,b===Ie.warning&&I.warning,C?I.multiline:I.singleline,!C&&A&&I.dismissalSingleLine,!C&&p&&I.expandingSingleLine,{background:w[jU[b]],boxSizing:"border-box",color:w.messageText,minHeight:32,width:"100%",display:"flex",wordBreak:"break-word",selectors:(n={".ms-Link":{color:w.messageLink,selectors:{":hover":{color:w.messageLinkHovered}}}},n[Ae]=B(B({},Zn()),{background:"transparent",border:"1px solid ".concat(KU[b]),color:"WindowText"}),n[jB]={border:"1px solid ".concat(WU[b])},n)},C&&{flexDirection:"column"},v],content:[I.content,(r={display:"flex",width:"100%",lineHeight:"normal"},r[E]={display:"grid",gridTemplateColumns:"auto 1fr auto",gridTemplateRows:"1fr auto",gridTemplateAreas:` "icon text close" "action action action" `},r)],iconContainer:[I.iconContainer,(i={fontSize:wi.medium,minWidth:16,minHeight:16,display:"flex",flexShrink:0,margin:"8px 0 8px 12px"},i[E]={gridArea:"icon"},i)],icon:{color:w[HU[b]],selectors:(o={},o[Ae]=B(B({},Zn()),{color:"WindowText"}),o)},text:[I.text,B(B({minWidth:0,display:"flex",flexGrow:1,margin:8},S.small),(a={},a[E]={gridArea:"text"},a.selectors=(s={},s[Ae]=B({},Zn()),s),a)),!A&&{marginRight:12}],innerText:[I.innerText,{lineHeight:16,selectors:{"& span a:last-child":{paddingLeft:4}}},p&&{overflow:"visible",whiteSpace:"pre-wrap"},!C&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},!C&&!p&&{selectors:(l={},l[E]={overflow:"visible",whiteSpace:"pre-wrap"},l)},y&&{overflow:"visible",whiteSpace:"pre-wrap"}],dismissSingleLine:[I.dismissSingleLine,(c={},c[E]={gridArea:"close"},c)],expandSingleLine:I.expandSingleLine,dismissal:[I.dismissal,k],expand:[I.expand,k],actions:[C?I.actions:I.actionsSingleline,(d={display:"flex",flexGrow:0,flexShrink:0,flexBasis:"auto",flexDirection:"row-reverse",alignItems:"center",margin:"0 12px 0 8px",forcedColorAdjust:"auto",MsHighContrastAdjust:"auto"},d[E]={gridArea:"action",marginRight:8,marginBottom:8},d.selectors={"& button:nth-child(n+2)":(u={marginLeft:8},u[E]={marginBottom:0},u)},d),C&&{marginBottom:8},A&&!C&&{marginRight:0}]}},jA=wr(_4,zU,void 0,{scope:"MessageBar"}),Kw=B;function Sf(e,t){for(var n=[],r=2;r0)throw new Error("Any module using getSlots must use withSlots. Please see withSlots javadoc for more info.");return QU(t[a],l,r[a],r.slots&&r.slots[a],r._defaultStyles&&r._defaultStyles[a],r.theme)};s.isSlot=!0,n[a]=s}};for(var o in t)i(o);return n}function GU(e,t){var n,r;return typeof t=="string"||typeof t=="number"||typeof t=="boolean"?r=(n={},n[e]=t,n):r=t,r}function YU(e,t){for(var n=[],r=2;r2)return{rowGap:{value:0,unit:"px"},columnGap:{value:0,unit:"px"}};if(n.length===2)return{rowGap:HA(pu(n[0],t)),columnGap:HA(pu(n[1],t))};var r=HA(pu(e,t));return{rowGap:r,columnGap:r}},JI=function(e,t){if(e===void 0||typeof e=="number"||e==="")return e;var n=e.split(" ");return n.length<2?pu(e,t):n.reduce(function(r,i){return pu(r,t)+" "+pu(i,t)})},yc={start:"flex-start",end:"flex-end"},n1={root:"ms-Stack",inner:"ms-Stack-inner",child:"ms-Stack-child"},t7=function(e,t,n){var r,i,o,a,s,l,c,d,u,f,v,A,p,C=e.className,y=e.disableShrink,h=e.enableScopedSelectors,b=e.grow,w=e.horizontal,S=e.horizontalAlign,E=e.reversed,I=e.verticalAlign,F=e.verticalFill,k=e.wrap,D=Lr(n1,t),P=n&&n.childrenGap?n.childrenGap:e.gap,H=n&&n.maxHeight?n.maxHeight:e.maxHeight,G=n&&n.maxWidth?n.maxWidth:e.maxWidth,_=n&&n.padding?n.padding:e.padding,M=e7(P,t),K=M.rowGap,Q=M.columnGap,O="".concat(-.5*Q.value).concat(Q.unit),R="".concat(-.5*K.value).concat(K.unit),T={textOverflow:"ellipsis"},j="> "+(h?"."+n1.child:"*"),W=(r={},r["".concat(j,":not(.").concat(O4.root,")")]={flexShrink:0},r);return k?{root:[D.root,{flexWrap:"wrap",maxWidth:G,maxHeight:H,width:"auto",overflow:"visible",height:"100%"},S&&(i={},i[w?"justifyContent":"alignItems"]=yc[S]||S,i),I&&(o={},o[w?"alignItems":"justifyContent"]=yc[I]||I,o),C,{display:"flex"},w&&{height:F?"100%":"auto"}],inner:[D.inner,(a={display:"flex",flexWrap:"wrap",marginLeft:O,marginRight:O,marginTop:R,marginBottom:R,overflow:"visible",boxSizing:"border-box",padding:JI(_,t),width:Q.value===0?"100%":"calc(100% + ".concat(Q.value).concat(Q.unit,")"),maxWidth:"100vw"},a[j]=B({margin:"".concat(.5*K.value).concat(K.unit," ").concat(.5*Q.value).concat(Q.unit)},T),a),y&&W,S&&(s={},s[w?"justifyContent":"alignItems"]=yc[S]||S,s),I&&(l={},l[w?"alignItems":"justifyContent"]=yc[I]||I,l),w&&(c={flexDirection:E?"row-reverse":"row",height:K.value===0?"100%":"calc(100% + ".concat(K.value).concat(K.unit,")")},c[j]={maxWidth:Q.value===0?"100%":"calc(100% - ".concat(Q.value).concat(Q.unit,")")},c),!w&&(d={flexDirection:E?"column-reverse":"column",height:"calc(100% + ".concat(K.value).concat(K.unit,")")},d[j]={maxHeight:K.value===0?"100%":"calc(100% - ".concat(K.value).concat(K.unit,")")},d)]}:{root:[D.root,(u={display:"flex",flexDirection:w?E?"row-reverse":"row":E?"column-reverse":"column",flexWrap:"nowrap",width:"auto",height:F?"100%":"auto",maxWidth:G,maxHeight:H,padding:JI(_,t),boxSizing:"border-box"},u[j]=T,u),y&&W,b&&{flexGrow:b===!0?1:b},S&&(f={},f[w?"justifyContent":"alignItems"]=yc[S]||S,f),I&&(v={},v[w?"alignItems":"justifyContent"]=yc[I]||I,v),w&&Q.value>0&&(A={},A[E?"".concat(j,":not(:last-child)"):"".concat(j,":not(:first-child)")]={marginLeft:"".concat(Q.value).concat(Q.unit)},A),!w&&K.value>0&&(p={},p[E?"".concat(j,":not(:last-child)"):"".concat(j,":not(:first-child)")]={marginTop:"".concat(K.value).concat(K.unit)},p),C]}},n7=function(e){var t=e.as,n=t===void 0?"div":t,r=e.disableShrink,i=r===void 0?!1:r,o=e.doNotRenderFalsyValues,a=o===void 0?!1:o,s=e.enableScopedSelectors,l=s===void 0?!1:s,c=e.wrap,d=js(e,["as","disableShrink","doNotRenderFalsyValues","enableScopedSelectors","wrap"]),u=j4(e.children,{disableShrink:i,enableScopedSelectors:l,doNotRenderFalsyValues:a}),f=Bt(d,Ot),v=Ww(e,{root:n,inner:"div"});return c?Sf(v.root,B({},f),Sf(v.inner,null,u)):Sf(v.root,B({},f),u)};function j4(e,t){var n=t.disableShrink,r=t.enableScopedSelectors,i=t.doNotRenderFalsyValues,o=g.Children.toArray(e);return o=g.Children.map(o,function(a){if(!a||!g.isValidElement(a))return i?null:a;if(a.type===g.Fragment)return a.props.children?j4(a.props.children,{disableShrink:n,enableScopedSelectors:r,doNotRenderFalsyValues:i}):null;var s=a,l={};r7(a)&&(l={shrink:!n});var c=s.props.className;return g.cloneElement(s,B(B(B(B({},l),s.props),c&&{className:c}),r&&{className:kr(n1.child,c)}))}),o}function r7(e){return!!e&&typeof e=="object"&&!!e.type&&e.type.displayName===U4.displayName}var i7={Item:U4},KA=zw(n7,{displayName:"Stack",styles:t7,statics:i7}),o7=Cr(),a7=function(e,t){g.useImperativeHandle(e,function(){return{focus:function(){var n;return(n=t.current)===null||n===void 0?void 0:n.focus()}}},[t])},s7=g.forwardRef(function(e,t){var n,r,i=g.useRef(null),o=$T(),a=$i(i,t),s=Kl("teaching-bubble-content-"),l=Kl("teaching-bubble-title-"),c=(n=e.ariaDescribedBy)!==null&&n!==void 0?n:s,d=(r=e.ariaLabelledBy)!==null&&r!==void 0?r:l,u=e.illustrationImage,f=e.primaryButtonProps,v=e.secondaryButtonProps,A=e.headline,p=e.hasCondensedHeadline,C=e.hasCloseButton,y=C===void 0?e.hasCloseIcon:C,h=e.onDismiss,b=e.closeButtonAriaLabel,w=e.hasSmallHeadline,S=e.isWide,E=e.styles,I=e.theme,F=e.footerContent,k=e.focusTrapZoneProps,D=o7(E,{theme:I,hasCondensedHeadline:p,hasSmallHeadline:w,hasCloseButton:y,hasHeadline:!!A,isWide:S,primaryButtonClassName:f?f.className:void 0,secondaryButtonClassName:v?v.className:void 0}),P=g.useCallback(function(R){h&&R.which===ge.escape&&h(R)},[h]);Hu(o,"keydown",P);var H,G,_,M,K;if(u&&u.src&&(H=g.createElement("div",{className:D.imageContent},g.createElement(N0,B({},u)))),A){var Q=typeof A=="string"?"p":"div";G=g.createElement("div",{className:D.header},g.createElement(Q,{role:"heading","aria-level":3,className:D.headline,id:d},A))}if(e.children){var O=typeof e.children=="string"?"p":"div";_=g.createElement("div",{className:D.body},g.createElement(O,{className:D.subText,id:c},e.children))}return(f||v||F)&&(M=g.createElement(KA,{className:D.footer,horizontal:!0,horizontalAlign:F?"space-between":"end"},g.createElement(KA.Item,{align:"center"},g.createElement("span",null,F)),g.createElement(KA.Item,null,f&&g.createElement(jO,B({},f,{className:D.primaryButton})),v&&g.createElement(R4,B({},v,{className:D.secondaryButton}))))),y&&(K=g.createElement(mv,{className:D.closeButton,iconProps:{iconName:"Cancel"},ariaLabel:b,onClick:h})),a7(e.componentRef,i),g.createElement("div",{className:D.content,ref:a,role:"dialog",tabIndex:-1,"aria-labelledby":d,"aria-describedby":c,"data-is-focusable":!0},H,g.createElement(ts,B({isClickableOutsideFocusTrap:!0},k),g.createElement("div",{className:D.bodyContent},G,_,M,K)))}),l7={root:"ms-TeachingBubble",body:"ms-TeachingBubble-body",bodyContent:"ms-TeachingBubble-bodycontent",closeButton:"ms-TeachingBubble-closebutton",content:"ms-TeachingBubble-content",footer:"ms-TeachingBubble-footer",header:"ms-TeachingBubble-header",headerIsCondensed:"ms-TeachingBubble-header--condensed",headerIsSmall:"ms-TeachingBubble-header--small",headerIsLarge:"ms-TeachingBubble-header--large",headline:"ms-TeachingBubble-headline",image:"ms-TeachingBubble-image",primaryButton:"ms-TeachingBubble-primaryButton",secondaryButton:"ms-TeachingBubble-secondaryButton",subText:"ms-TeachingBubble-subText",button:"ms-Button",buttonLabel:"ms-Button-label"},c7=Jt(function(){return ui({"0%":{opacity:0,animationTimingFunction:HT.easeFunction1,transform:"scale3d(.90,.90,.90)"},"100%":{opacity:1,transform:"scale3d(1,1,1)"}})}),$I=function(e,t){var n=t||{},r=n.calloutWidth,i=n.calloutMaxWidth;return[{display:"block",maxWidth:364,border:0,outline:"transparent",width:r||"calc(100% + 1px)",animationName:"".concat(c7()),animationDuration:"300ms",animationTimingFunction:"linear",animationFillMode:"both"},e&&{maxWidth:i||456}]},u7=function(e,t,n){return t?[e.headerIsCondensed,{marginBottom:14}]:[n&&e.headerIsSmall,!n&&e.headerIsLarge,{selectors:{":not(:last-child)":{marginBottom:14}}}]},H4=function(e){var t,n,r,i=e.hasCondensedHeadline,o=e.hasSmallHeadline,a=e.hasCloseButton,s=e.hasHeadline,l=e.isWide,c=e.primaryButtonClassName,d=e.secondaryButtonClassName,u=e.theme,f=e.calloutProps,v=f===void 0?{className:void 0,theme:u}:f,A=!i&&!o,p=u.palette,C=u.semanticColors,y=u.fonts,h=Lr(l7,u),b=da(u,{outlineColor:"transparent",borderColor:"transparent"});return{root:[h.root,y.medium,v.className],body:[h.body,a&&!s&&{marginRight:24},{selectors:{":not(:last-child)":{marginBottom:20}}}],bodyContent:[h.bodyContent,{padding:"20px 24px 20px 24px"}],closeButton:[h.closeButton,{position:"absolute",right:0,top:0,margin:"15px 15px 0 0",borderRadius:0,color:p.white,fontSize:y.small.fontSize,selectors:{":hover":{background:p.themeDarkAlt,color:p.white},":active":{background:p.themeDark,color:p.white},":focus":{border:"1px solid ".concat(C.variantBorder)}}}],content:Bn(Bn([h.content],$I(l),!0),[l&&{display:"flex"}],!1),footer:[h.footer,{display:"flex",flex:"auto",alignItems:"center",color:p.white,selectors:(t={},t[".".concat(h.button,":not(:first-child)")]={marginLeft:10},t)}],header:Bn(Bn([h.header],u7(h,i,o),!0),[a&&{marginRight:24},(i||o)&&[y.medium,{fontWeight:We.semibold}]],!1),headline:[h.headline,{margin:0,color:p.white,fontWeight:We.semibold,overflowWrap:"break-word"},A&&[{fontSize:y.xLarge.fontSize}]],imageContent:[h.header,h.image,l&&{display:"flex",alignItems:"center",maxWidth:154}],primaryButton:[h.primaryButton,c,b,{backgroundColor:p.white,borderColor:p.white,color:p.themePrimary,whiteSpace:"nowrap",selectors:(n={},n[".".concat(h.buttonLabel)]=y.medium,n[":hover"]={backgroundColor:p.themeLighter,borderColor:p.themeLighter,color:p.themeDark},n[":focus"]={backgroundColor:p.themeLighter,border:"1px solid ".concat(p.black),color:p.themeDark,outline:"1px solid ".concat(p.white),outlineOffset:"-2px"},n[":active"]={backgroundColor:p.white,borderColor:p.white,color:p.themePrimary},n)}],secondaryButton:[h.secondaryButton,d,b,{backgroundColor:p.themePrimary,borderColor:p.white,whiteSpace:"nowrap",selectors:(r={},r[".".concat(h.buttonLabel)]=[y.medium,{color:p.white}],r[":hover"]={backgroundColor:p.themeDarkAlt,borderColor:p.white},r[":focus"]={backgroundColor:p.themeDark,border:"1px solid ".concat(p.black),outline:"1px solid ".concat(p.white),outlineOffset:"-2px"},r[":active"]={backgroundColor:p.themePrimary,borderColor:p.white},r)}],subText:[h.subText,{margin:0,fontSize:y.medium.fontSize,color:p.white,fontWeight:We.regular}],subComponentStyles:{callout:{root:Bn(Bn([],$I(l,v),!0),[y.medium],!1),beak:[{background:p.themePrimary}],calloutMain:[{background:p.themePrimary}]}}}},d7=wr(s7,H4,void 0,{scope:"TeachingBubbleContent"}),f7="TeachingBubble",v7={beakWidth:16,gapSpace:0,setInitialFocus:!0,doNotLayer:!1,directionalHint:Yt.rightCenter},m7=Cr(),p7=function(e,t){g.useImperativeHandle(e,function(){return{focus:function(){var n;return(n=t.current)===null||n===void 0?void 0:n.focus()}}},[t])},K4=g.forwardRef(function(e,t){var n=g.useRef(null),r=$i(n,t),i=e.calloutProps,o=e.targetElement,a=e.onDismiss,s=e.hasCloseButton,l=s===void 0?e.hasCloseIcon:s,c=e.isWide,d=e.styles,u=e.theme,f=e.target,v=g.useMemo(function(){return B(B(B({},v7),i),{theme:u})},[i,u]),A={theme:u,isWide:c,calloutProps:v,hasCloseButton:l},p=m7(d,A),C=p.subComponentStyles?p.subComponentStyles.callout:void 0;return p7(e.componentRef,n),g.createElement(F0,B({target:f||o,onDismiss:a},v,{className:p.root,styles:C,hideOverflow:!0}),g.createElement("div",{ref:r},g.createElement(d7,B({},e))))});K4.displayName=f7;var h7=wr(K4,H4,void 0,{scope:"TeachingBubble"}),g7=function(e){if(e.children==null)return null;e.block,e.className;var t=e.as,n=t===void 0?"span":t;e.variant,e.nowrap;var r=js(e,["block","className","as","variant","nowrap"]),i=Ww(e,{root:n});return Sf(i.root,B({},Bt(r,Ot)))},A7=function(e,t){var n=e.as,r=e.className,i=e.block,o=e.nowrap,a=e.variant,s=t.fonts,l=t.semanticColors,c=s[a||"medium"];return{root:[c,{color:c.color||l.bodyText,display:i?n==="td"?"table-cell":"block":"inline",mozOsxFontSmoothing:c.MozOsxFontSmoothing,webkitFontSmoothing:c.WebkitFontSmoothing},o&&{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},r]}},eD=zw(g7,{displayName:"Text",styles:A7});function di(e){return zt({tag:"svg",attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M16 8c-0.020-1.045-0.247-2.086-0.665-3.038-0.417-0.953-1.023-1.817-1.766-2.53s-1.624-1.278-2.578-1.651c-0.953-0.374-1.978-0.552-2.991-0.531-1.013 0.020-2.021 0.24-2.943 0.646-0.923 0.405-1.758 0.992-2.449 1.712s-1.237 1.574-1.597 2.497c-0.361 0.923-0.533 1.914-0.512 2.895 0.020 0.981 0.234 1.955 0.627 2.847 0.392 0.892 0.961 1.7 1.658 2.368s1.523 1.195 2.416 1.543c0.892 0.348 1.851 0.514 2.799 0.493 0.949-0.020 1.89-0.227 2.751-0.608 0.862-0.379 1.642-0.929 2.287-1.604s1.154-1.472 1.488-2.335c0.204-0.523 0.342-1.069 0.415-1.622 0.019 0.001 0.039 0.002 0.059 0.002 0.552 0 1-0.448 1-1 0-0.028-0.001-0.056-0.004-0.083h0.004zM14.411 10.655c-0.367 0.831-0.898 1.584-1.55 2.206s-1.422 1.112-2.254 1.434c-0.832 0.323-1.723 0.476-2.608 0.454-0.884-0.020-1.759-0.215-2.56-0.57-0.801-0.354-1.526-0.867-2.125-1.495s-1.071-1.371-1.38-2.173c-0.31-0.801-0.457-1.66-0.435-2.512s0.208-1.694 0.551-2.464c0.342-0.77 0.836-1.468 1.441-2.044s1.321-1.029 2.092-1.326c0.771-0.298 1.596-0.438 2.416-0.416s1.629 0.202 2.368 0.532c0.74 0.329 1.41 0.805 1.963 1.387s0.988 1.27 1.272 2.011c0.285 0.74 0.418 1.532 0.397 2.32h0.004c-0.002 0.027-0.004 0.055-0.004 0.083 0 0.516 0.39 0.94 0.892 0.994-0.097 0.544-0.258 1.075-0.481 1.578z"}}]})(e)}function y7(e){return zt({tag:"svg",attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M13.5 2l-7.5 7.5-3.5-3.5-2.5 2.5 6 6 10-10z"}}]})(e)}function b7(e){return zt({tag:"svg",attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.707 13.707l5-5c0.391-0.39 0.391-1.024 0-1.414l-5-5c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l3.293 3.293h-9.586c-0.552 0-1 0.448-1 1s0.448 1 1 1h9.586l-3.293 3.293c-0.195 0.195-0.293 0.451-0.293 0.707s0.098 0.512 0.293 0.707c0.391 0.391 1.024 0.391 1.414 0z"}}]})(e)}function C7(e){return zt({tag:"svg",attr:{version:"1.1",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M6.293 13.707l-5-5c-0.391-0.39-0.391-1.024 0-1.414l5-5c0.391-0.391 1.024-0.391 1.414 0s0.391 1.024 0 1.414l-3.293 3.293h9.586c0.552 0 1 0.448 1 1s-0.448 1-1 1h-9.586l3.293 3.293c0.195 0.195 0.293 0.451 0.293 0.707s-0.098 0.512-0.293 0.707c-0.391 0.391-1.024 0.391-1.414 0z"}}]})(e)}const w7=[{hostNameSegment:"localhost",label:"Localhost"},{hostNameSegment:"127",label:"Localhost"},{hostNameSegment:"dev",label:"Development"},{hostNameSegment:"stg",label:"Staging"},{hostNameSegment:"uat",label:"UAT"},{hostNameSegment:"temp",label:"Temp"}],wn=window.location.hostname==="portal.bistech.co.uk",E7=()=>{const e=w7.find(t=>window.location.hostname.includes(t.hostNameSegment));return e?m("div",{className:"environment-banner","data-environment-id":e.hostNameSegment,children:e.label}):null},Vw=()=>{var f;const e=Nn(),t=ve(v=>v.latestErrors),n=ve(v=>v.notifications),r=ve(v=>v.currentPage),i=ve(v=>v.isDirty),o=ve(v=>v.saveDirtyPage),[a,s]=g.useState({state:"idle"}),l=n.filter(v=>new Date!v.isValid());return N("div",{"data-has-banner":!wn,children:[t.length>0&&t.filter((v,A)=>Am(jA,{messageBarType:Ie.error,children:v.message},A)),l.length>0&&l.filter((v,A)=>Am(jA,{styles:{innerText:{width:"100%"}},messageBarType:Ie.success,children:N("span",{className:"notification",children:[m("span",{className:"message",children:v.message}),m("button",{className:"dismiss-button",onClick:()=>e({type:"RemoveNotification",id:v.id}),children:"x"})]})},A)),i&&o&&m(jA,{messageBarType:Ie.warning,styles:{innerText:{maxHeight:"32px"}},children:N("div",{style:{display:"flex"},children:["There are unsaved changes.",u!=null&&u.length?m("span",{className:"invalid-prerequisites",style:{marginLeft:"1em"},children:u[0].customerMessage}):a.state==="idle"?m("a",{href:"#",onClick:async()=>{s({state:"submitting"});try{await o.saveFunction(),e({type:"SetIsDirty",isDirty:!1}),e({type:"SetSaveDirtyPage",saveDirtyPage:void 0})}catch(v){e({type:"AddLatestError",error:v})}finally{s({state:"idle"})}},children:"Click here to save."}):m("div",{style:{display:"flex",alignItems:"center"},children:m(di,{className:"spin",style:{marginLeft:"1em"}})})]})},1)]})},tD=()=>window.innerWidth,Gv=()=>{const[e,t]=g.useState(tD());return g.useEffect(()=>{const n=()=>{t(tD())};return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),e},Dn=e=>{const n=Gv();return N(re,{children:[m(Vw,{}),N("div",{className:"page-content is-mobile-width","data-is-production":wn,style:n<1025?{paddingTop:"1em"}:{},children:[m(yt,{children:m(eT,{})}),m("div",{className:"base-page-header",children:m("h1",{children:e.title})}),m(yt,{children:e.children})]})]})};class Ze{static toDateString(t){return new Date(t).toLocaleString("en-GB",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"})}static getMidnightToday(){const t=new Date().toISOString().split("T")[0];return new Date(t)}static getMidnightTomorrow(){const t=Ze.getMidnightToday();return t.setDate(t.getDate()+1),t}static toDateOnlyString(t){return new Date(t).toLocaleString("en-GB",{day:"2-digit",month:"2-digit",year:"numeric"})}static toTimeOnlyString(t){return new Date(t).toLocaleString("en-GB",{hour:"2-digit",minute:"2-digit"})}static addSeconds(t,n){return new Date(Number(t)+1e3*n)}}function Km(e){return zt({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"}}]})(e)}function S7(e){return zt({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"}}]})(e)}function I7(e){return zt({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"}}]})(e)}function W4(e){return zt({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"}}]})(e)}function D7(e){return zt({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"}}]})(e)}function F7(e){return zt({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"}}]})(e)}function pv(e){return zt({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"}}]})(e)}function N7(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.496 6.033h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286a.237.237 0 0 0 .241.247zm2.325 6.443c.61 0 1.029-.394 1.029-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94 0 .533.425.927 1.01.927z"}}]})(e)}function Wl(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M8 0a1 1 0 0 1 1 1v5.268l4.562-2.634a1 1 0 1 1 1 1.732L10 8l4.562 2.634a1 1 0 1 1-1 1.732L9 9.732V15a1 1 0 1 1-2 0V9.732l-4.562 2.634a1 1 0 1 1-1-1.732L6 8 1.438 5.366a1 1 0 0 1 1-1.732L7 6.268V1a1 1 0 0 1 1-1z"}}]})(e)}function Yv(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M13.485 1.431a1.473 1.473 0 0 1 2.104 2.062l-7.84 9.801a1.473 1.473 0 0 1-2.12.04L.431 8.138a1.473 1.473 0 0 1 2.084-2.083l4.111 4.112 6.82-8.69a.486.486 0 0 1 .04-.045z"}}]})(e)}function M7(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"}}]})(e)}function T7(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z"}}]})(e)}function R7(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M3.5 2.5a.5.5 0 0 0-1 0v8.793l-1.146-1.147a.5.5 0 0 0-.708.708l2 1.999.007.007a.497.497 0 0 0 .7-.006l2-2a.5.5 0 0 0-.707-.708L3.5 11.293V2.5zm3.5 1a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z"}}]})(e)}function P7(e){return zt({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M3.5 12.5a.5.5 0 0 1-1 0V3.707L1.354 4.854a.5.5 0 1 1-.708-.708l2-1.999.007-.007a.498.498 0 0 1 .7.006l2 2a.5.5 0 1 1-.707.708L3.5 3.707V12.5zm3.5-9a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zM7.5 6a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zm0 3a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zm0 3a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1h-1z"}}]})(e)}const ic=e=>N("div",{className:"tooltip",children:[m(N7,{className:"tooltip-icon"}),m("div",{className:"tooltip-content",children:m(yt,{children:e.overlayContent})})]});var se={},k7={get exports(){return se},set exports(e){se=e}},x7="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",_7=x7,B7=_7;function z4(){}function V4(){}V4.resetWarningCache=z4;var L7=function(){function e(r,i,o,a,s,l){if(l!==B7){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:V4,resetWarningCache:z4};return n.PropTypes=n,n};k7.exports=L7();var nD={},O7={get exports(){return nD},set exports(e){nD=e}},bt={};/** @license React v17.0.2 * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var M0=60103,T0=60106,Qv=60107,Zv=60108,Xv=60114,qv=60109,Jv=60110,$v=60112,em=60113,Gw=60120,tm=60115,nm=60116,G4=60121,Y4=60122,Q4=60117,Z4=60129,X4=60131;if(typeof Symbol=="function"&&Symbol.for){var Rn=Symbol.for;M0=Rn("react.element"),T0=Rn("react.portal"),Qv=Rn("react.fragment"),Zv=Rn("react.strict_mode"),Xv=Rn("react.profiler"),qv=Rn("react.provider"),Jv=Rn("react.context"),$v=Rn("react.forward_ref"),em=Rn("react.suspense"),Gw=Rn("react.suspense_list"),tm=Rn("react.memo"),nm=Rn("react.lazy"),G4=Rn("react.block"),Y4=Rn("react.server.block"),Q4=Rn("react.fundamental"),Z4=Rn("react.debug_trace_mode"),X4=Rn("react.legacy_hidden")}function io(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case M0:switch(e=e.type,e){case Qv:case Xv:case Zv:case em:case Gw:return e;default:switch(e=e&&e.$$typeof,e){case Jv:case $v:case nm:case tm:case qv:return e;default:return t}}case T0:return t}}}var U7=qv,j7=M0,H7=$v,K7=Qv,W7=nm,z7=tm,V7=T0,G7=Xv,Y7=Zv,Q7=em;bt.ContextConsumer=Jv;bt.ContextProvider=U7;bt.Element=j7;bt.ForwardRef=H7;bt.Fragment=K7;bt.Lazy=W7;bt.Memo=z7;bt.Portal=V7;bt.Profiler=G7;bt.StrictMode=Y7;bt.Suspense=Q7;bt.isAsyncMode=function(){return!1};bt.isConcurrentMode=function(){return!1};bt.isContextConsumer=function(e){return io(e)===Jv};bt.isContextProvider=function(e){return io(e)===qv};bt.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===M0};bt.isForwardRef=function(e){return io(e)===$v};bt.isFragment=function(e){return io(e)===Qv};bt.isLazy=function(e){return io(e)===nm};bt.isMemo=function(e){return io(e)===tm};bt.isPortal=function(e){return io(e)===T0};bt.isProfiler=function(e){return io(e)===Xv};bt.isStrictMode=function(e){return io(e)===Zv};bt.isSuspense=function(e){return io(e)===em};bt.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===Qv||e===Xv||e===Z4||e===Zv||e===em||e===Gw||e===X4||typeof e=="object"&&e!==null&&(e.$$typeof===nm||e.$$typeof===tm||e.$$typeof===qv||e.$$typeof===Jv||e.$$typeof===$v||e.$$typeof===Q4||e.$$typeof===G4||e[0]===Y4)};bt.typeOf=io;(function(e){e.exports=bt})(O7);function rD(e){return typeof e=="object"&&e!=null&&e.nodeType===1}function iD(e,t){return(!t||e!=="hidden")&&e!=="visible"&&e!=="clip"}function WA(e,t){if(e.clientHeightt||o>e&&a=t&&s>=n?o-e-r:a>t&&sn?a-t+i:0}var Z7=function(e,t){var n=window,r=t.scrollMode,i=t.block,o=t.inline,a=t.boundary,s=t.skipOverflowHiddenElements,l=typeof a=="function"?a:function(Te){return Te!==a};if(!rD(e))throw new TypeError("Invalid target");for(var c,d,u=document.scrollingElement||document.documentElement,f=[],v=e;rD(v)&&l(v);){if((v=(d=(c=v).parentElement)==null?c.getRootNode().host||null:d)===u){f.push(v);break}v!=null&&v===document.body&&WA(v)&&!WA(document.documentElement)||v!=null&&WA(v,s)&&f.push(v)}for(var A=n.visualViewport?n.visualViewport.width:innerWidth,p=n.visualViewport?n.visualViewport.height:innerHeight,C=window.scrollX||pageXOffset,y=window.scrollY||pageYOffset,h=e.getBoundingClientRect(),b=h.height,w=h.width,S=h.top,E=h.right,I=h.bottom,F=h.left,k=i==="start"||i==="nearest"?S:i==="end"?I:S+b/2,D=o==="center"?F+w/2:o==="end"?E:F,P=[],H=0;H=0&&F>=0&&I<=p&&E<=A&&S>=Q&&I<=R&&F>=T&&E<=O)return P;var j=getComputedStyle(G),W=parseInt(j.borderLeftWidth,10),U=parseInt(j.borderTopWidth,10),Y=parseInt(j.borderRightWidth,10),x=parseInt(j.borderBottomWidth,10),L=0,V=0,ee="offsetWidth"in G?G.offsetWidth-G.clientWidth-W-Y:0,J="offsetHeight"in G?G.offsetHeight-G.clientHeight-U-x:0,$="offsetWidth"in G?G.offsetWidth===0?0:K/G.offsetWidth:0,ne="offsetHeight"in G?G.offsetHeight===0?0:M/G.offsetHeight:0;if(u===G)L=i==="start"?k:i==="end"?k-p:i==="nearest"?Wm(y,y+p,p,U,x,y+k,y+k+b,b):k-p/2,V=o==="start"?D:o==="center"?D-A/2:o==="end"?D-A:Wm(C,C+A,A,W,Y,C+D,C+D+w,w),L=Math.max(0,L+y),V=Math.max(0,V+C);else{L=i==="start"?k-Q-U:i==="end"?k-R+x+J:i==="nearest"?Wm(Q,R,M,U,x+J,k,k+b,b):k-(Q+M/2)+J/2,V=o==="start"?D-T-W:o==="center"?D-(T+K/2)+ee/2:o==="end"?D-O+Y+ee:Wm(T,O,K,W,Y+ee,D,D+w,w);var le=G.scrollLeft,Me=G.scrollTop;k+=Me-(L=Math.max(0,Math.min(Me+L/ne,G.scrollHeight-M/ne+J))),D+=le-(V=Math.max(0,Math.min(le+V/$,G.scrollWidth-K/$+ee)))}P.push({el:G,top:L,left:V})}return P};let X7=0;function oD(e){return typeof e=="function"?e:Oa}function Oa(){}function q4(e,t){if(!e)return;Z7(e,{boundary:t,block:"nearest",scrollMode:"if-needed"}).forEach(r=>{let{el:i,top:o,left:a}=r;i.scrollTop=o,i.scrollLeft=a})}function aD(e,t,n){return e===t||t instanceof n.Node&&e.contains&&e.contains(t)}function Yw(e,t){let n;function r(){n&&clearTimeout(n)}function i(){for(var o=arguments.length,a=new Array(o),s=0;s{n=null,e(...a)},t)}return i.cancel=r,i}function co(){for(var e=arguments.length,t=new Array(e),n=0;n1?i-1:0),a=1;a(s&&s(r,...o),r.preventDownshiftDefault||r.hasOwnProperty("nativeEvent")&&r.nativeEvent.preventDownshiftDefault))}}function sD(){for(var e=arguments.length,t=new Array(e),n=0;n{t.forEach(i=>{typeof i=="function"?i(r):i&&(i.current=r)})}}function q7(){return String(X7++)}function J4(e){let{isOpen:t,resultCount:n,previousResultCount:r}=e;return t?n?n!==r?`${n} result${n===1?" is":"s are"} available, use up and down arrow keys to navigate. Press Enter key to select.`:"":"No results are available.":""}function lD(e,t){return e=Array.isArray(e)?e[0]:e,!e&&t?t:e}function J7(e){return typeof e.type=="string"}function $7(e){return e.props}const ej=["highlightedIndex","inputValue","isOpen","selectedItem","type"];function zm(e){e===void 0&&(e={});const t={};return ej.forEach(n=>{e.hasOwnProperty(n)&&(t[n]=e[n])}),t}function tj(e,t){return Object.keys(e).reduce((n,r)=>(n[r]=r1(t,r)?t[r]:e[r],n),{})}function r1(e,t){return e[t]!==void 0}function cD(e){const{key:t,keyCode:n}=e;return n>=37&&n<=40&&t.indexOf("Arrow")!==0?`Arrow${t}`:t}function zA(e,t,n,r,i){if(i===void 0&&(i=!0),n===0)return-1;const o=n-1;(typeof t!="number"||t<0||t>=n)&&(t=e>0?-1:o+1);let a=t+e;a<0?a=i?o:0:a>o&&(a=i?0:o);const s=hv(e,a,n,r,i);return s===-1?t>=n?-1:t:s}function hv(e,t,n,r,i){const o=r(t);if(!o||!o.hasAttribute("disabled"))return t;if(e>0){for(let a=t+1;a=0;a--)if(!r(a).hasAttribute("disabled"))return a;return i?e>0?hv(1,0,n,r,!1):hv(-1,n-1,n,r,!1):-1}function uD(e,t,n,r){return r===void 0&&(r=!0),t.some(i=>i&&(aD(i,e,n)||r&&aD(i,n.document.activeElement,n)))}const nj=Yw(e=>{eR(e).textContent=""},500);function $4(e,t){const n=eR(t);e&&(n.textContent=e,nj(t))}function eR(e){e===void 0&&(e=document);let t=e.getElementById("a11y-status-message");return t||(t=e.createElement("div"),t.setAttribute("id","a11y-status-message"),t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-relevant","additions text"),Object.assign(t.style,{border:"0",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",position:"absolute",width:"1px"}),e.body.appendChild(t),t)}const tR=0,nR=1,rR=2,Hp=3,Kp=4,iR=5,oR=6,aR=7,sR=8,lR=9,cR=10,uR=11,dR=12,fR=13,vR=14,mR=15,pR=16;var rj=Object.freeze({__proto__:null,unknown:tR,mouseUp:nR,itemMouseEnter:rR,keyDownArrowUp:Hp,keyDownArrowDown:Kp,keyDownEscape:iR,keyDownEnter:oR,keyDownHome:aR,keyDownEnd:sR,clickItem:lR,blurInput:cR,changeInput:uR,keyDownSpaceButton:dR,clickButton:fR,blurButton:vR,controlledPropUpdatedSelectedItem:mR,touchEnd:pR});const ij=(()=>{class e extends g.Component{constructor(n){var r;super(n),r=this,this.id=this.props.id||`downshift-${q7()}`,this.menuId=this.props.menuId||`${this.id}-menu`,this.labelId=this.props.labelId||`${this.id}-label`,this.inputId=this.props.inputId||`${this.id}-input`,this.getItemId=this.props.getItemId||(u=>`${this.id}-item-${u}`),this.input=null,this.items=[],this.itemCount=null,this.previousResultCount=0,this.timeoutIds=[],this.internalSetTimeout=(u,f)=>{const v=setTimeout(()=>{this.timeoutIds=this.timeoutIds.filter(A=>A!==v),u()},f);this.timeoutIds.push(v)},this.setItemCount=u=>{this.itemCount=u},this.unsetItemCount=()=>{this.itemCount=null},this.setHighlightedIndex=function(u,f){u===void 0&&(u=r.props.defaultHighlightedIndex),f===void 0&&(f={}),f=zm(f),r.internalSetState({highlightedIndex:u,...f})},this.clearSelection=u=>{this.internalSetState({selectedItem:null,inputValue:"",highlightedIndex:this.props.defaultHighlightedIndex,isOpen:this.props.defaultIsOpen},u)},this.selectItem=(u,f,v)=>{f=zm(f),this.internalSetState({isOpen:this.props.defaultIsOpen,highlightedIndex:this.props.defaultHighlightedIndex,selectedItem:u,inputValue:this.props.itemToString(u),...f},v)},this.selectItemAtIndex=(u,f,v)=>{const A=this.items[u];A!=null&&this.selectItem(A,f,v)},this.selectHighlightedItem=(u,f)=>this.selectItemAtIndex(this.getState().highlightedIndex,u,f),this.internalSetState=(u,f)=>{let v,A;const p={},C=typeof u=="function";return!C&&u.hasOwnProperty("inputValue")&&this.props.onInputValueChange(u.inputValue,{...this.getStateAndHelpers(),...u}),this.setState(y=>{y=this.getState(y);let h=C?u(y):u;h=this.props.stateReducer(y,h),v=h.hasOwnProperty("selectedItem");const b={};return v&&h.selectedItem!==y.selectedItem&&(A=h.selectedItem),h.type=h.type||tR,Object.keys(h).forEach(w=>{y[w]!==h[w]&&(p[w]=h[w]),w!=="type"&&(h[w],r1(this.props,w)||(b[w]=h[w]))}),C&&h.hasOwnProperty("inputValue")&&this.props.onInputValueChange(h.inputValue,{...this.getStateAndHelpers(),...h}),b},()=>{oD(f)(),Object.keys(p).length>1&&this.props.onStateChange(p,this.getStateAndHelpers()),v&&this.props.onSelect(u.selectedItem,this.getStateAndHelpers()),A!==void 0&&this.props.onChange(A,this.getStateAndHelpers()),this.props.onUserAction(p,this.getStateAndHelpers())})},this.rootRef=u=>this._rootNode=u,this.getRootProps=function(u,f){let{refKey:v="ref",ref:A,...p}=u===void 0?{}:u,{suppressRefError:C=!1}=f===void 0?{}:f;r.getRootProps.called=!0,r.getRootProps.refKey=v,r.getRootProps.suppressRefError=C;const{isOpen:y}=r.getState();return{[v]:sD(A,r.rootRef),role:"combobox","aria-expanded":y,"aria-haspopup":"listbox","aria-owns":y?r.menuId:null,"aria-labelledby":r.labelId,...p}},this.keyDownHandlers={ArrowDown(u){if(u.preventDefault(),this.getState().isOpen){const f=u.shiftKey?5:1;this.moveHighlightedIndex(f,{type:Kp})}else this.internalSetState({isOpen:!0,type:Kp},()=>{const f=this.getItemCount();if(f>0){const{highlightedIndex:v}=this.getState(),A=zA(1,v,f,p=>this.getItemNodeFromIndex(p));this.setHighlightedIndex(A,{type:Kp})}})},ArrowUp(u){if(u.preventDefault(),this.getState().isOpen){const f=u.shiftKey?-5:-1;this.moveHighlightedIndex(f,{type:Hp})}else this.internalSetState({isOpen:!0,type:Hp},()=>{const f=this.getItemCount();if(f>0){const{highlightedIndex:v}=this.getState(),A=zA(-1,v,f,p=>this.getItemNodeFromIndex(p));this.setHighlightedIndex(A,{type:Hp})}})},Enter(u){if(u.which===229)return;const{isOpen:f,highlightedIndex:v}=this.getState();if(f&&v!=null){u.preventDefault();const A=this.items[v],p=this.getItemNodeFromIndex(v);if(A==null||p&&p.hasAttribute("disabled"))return;this.selectHighlightedItem({type:oR})}},Escape(u){u.preventDefault(),this.reset({type:iR,...!this.state.isOpen&&{selectedItem:null,inputValue:""}})}},this.buttonKeyDownHandlers={...this.keyDownHandlers," "(u){u.preventDefault(),this.toggleMenu({type:dR})}},this.inputKeyDownHandlers={...this.keyDownHandlers,Home(u){const{isOpen:f}=this.getState();if(!f)return;u.preventDefault();const v=this.getItemCount();if(v<=0||!f)return;const A=hv(1,0,v,p=>this.getItemNodeFromIndex(p),!1);this.setHighlightedIndex(A,{type:aR})},End(u){const{isOpen:f}=this.getState();if(!f)return;u.preventDefault();const v=this.getItemCount();if(v<=0||!f)return;const A=hv(-1,v-1,v,p=>this.getItemNodeFromIndex(p),!1);this.setHighlightedIndex(A,{type:sR})}},this.getToggleButtonProps=function(u){let{onClick:f,onPress:v,onKeyDown:A,onKeyUp:p,onBlur:C,...y}=u===void 0?{}:u;const{isOpen:h}=r.getState(),b={onClick:co(f,r.buttonHandleClick),onKeyDown:co(A,r.buttonHandleKeyDown),onKeyUp:co(p,r.buttonHandleKeyUp),onBlur:co(C,r.buttonHandleBlur)},w=y.disabled?{}:b;return{type:"button",role:"button","aria-label":h?"close menu":"open menu","aria-haspopup":!0,"data-toggle":!0,...w,...y}},this.buttonHandleKeyUp=u=>{u.preventDefault()},this.buttonHandleKeyDown=u=>{const f=cD(u);this.buttonKeyDownHandlers[f]&&this.buttonKeyDownHandlers[f].call(this,u)},this.buttonHandleClick=u=>{u.preventDefault(),this.props.environment.document.activeElement===this.props.environment.document.body&&u.target.focus(),this.internalSetTimeout(()=>this.toggleMenu({type:fR}))},this.buttonHandleBlur=u=>{const f=u.target;this.internalSetTimeout(()=>{!this.isMouseDown&&(this.props.environment.document.activeElement==null||this.props.environment.document.activeElement.id!==this.inputId)&&this.props.environment.document.activeElement!==f&&this.reset({type:vR})})},this.getLabelProps=u=>({htmlFor:this.inputId,id:this.labelId,...u}),this.getInputProps=function(u){let{onKeyDown:f,onBlur:v,onChange:A,onInput:p,onChangeText:C,...y}=u===void 0?{}:u,h,b={};h="onChange";const{inputValue:w,isOpen:S,highlightedIndex:E}=r.getState();return y.disabled||(b={[h]:co(A,p,r.inputHandleChange),onKeyDown:co(f,r.inputHandleKeyDown),onBlur:co(v,r.inputHandleBlur)}),{"aria-autocomplete":"list","aria-activedescendant":S&&typeof E=="number"&&E>=0?r.getItemId(E):null,"aria-controls":S?r.menuId:null,"aria-labelledby":r.labelId,autoComplete:"off",value:w,id:r.inputId,...b,...y}},this.inputHandleKeyDown=u=>{const f=cD(u);f&&this.inputKeyDownHandlers[f]&&this.inputKeyDownHandlers[f].call(this,u)},this.inputHandleChange=u=>{this.internalSetState({type:uR,isOpen:!0,inputValue:u.target.value,highlightedIndex:this.props.defaultHighlightedIndex})},this.inputHandleBlur=()=>{this.internalSetTimeout(()=>{const u=this.props.environment.document&&!!this.props.environment.document.activeElement&&!!this.props.environment.document.activeElement.dataset&&this.props.environment.document.activeElement.dataset.toggle&&this._rootNode&&this._rootNode.contains(this.props.environment.document.activeElement);!this.isMouseDown&&!u&&this.reset({type:cR})})},this.menuRef=u=>{this._menuNode=u},this.getMenuProps=function(u,f){let{refKey:v="ref",ref:A,...p}=u===void 0?{}:u,{suppressRefError:C=!1}=f===void 0?{}:f;return r.getMenuProps.called=!0,r.getMenuProps.refKey=v,r.getMenuProps.suppressRefError=C,{[v]:sD(A,r.menuRef),role:"listbox","aria-labelledby":p&&p["aria-label"]?null:r.labelId,id:r.menuId,...p}},this.getItemProps=function(u){let{onMouseMove:f,onMouseDown:v,onClick:A,onPress:p,index:C,item:y=void 0,...h}=u===void 0?{}:u;C===void 0?(r.items.push(y),C=r.items.indexOf(y)):r.items[C]=y;const b="onClick",w=A,S={onMouseMove:co(f,()=>{C!==r.getState().highlightedIndex&&(r.setHighlightedIndex(C,{type:rR}),r.avoidScrolling=!0,r.internalSetTimeout(()=>r.avoidScrolling=!1,250))}),onMouseDown:co(v,I=>{I.preventDefault()}),[b]:co(w,()=>{r.selectItemAtIndex(C,{type:lR})})},E=h.disabled?{onMouseDown:S.onMouseDown}:S;return{id:r.getItemId(C),role:"option","aria-selected":r.getState().highlightedIndex===C,...E,...h}},this.clearItems=()=>{this.items=[]},this.reset=function(u,f){u===void 0&&(u={}),u=zm(u),r.internalSetState(v=>{let{selectedItem:A}=v;return{isOpen:r.props.defaultIsOpen,highlightedIndex:r.props.defaultHighlightedIndex,inputValue:r.props.itemToString(A),...u}},f)},this.toggleMenu=function(u,f){u===void 0&&(u={}),u=zm(u),r.internalSetState(v=>{let{isOpen:A}=v;return{isOpen:!A,...A&&{highlightedIndex:r.props.defaultHighlightedIndex},...u}},()=>{const{isOpen:v,highlightedIndex:A}=r.getState();v&&r.getItemCount()>0&&typeof A=="number"&&r.setHighlightedIndex(A,u),oD(f)()})},this.openMenu=u=>{this.internalSetState({isOpen:!0},u)},this.closeMenu=u=>{this.internalSetState({isOpen:!1},u)},this.updateStatus=Yw(()=>{const u=this.getState(),f=this.items[u.highlightedIndex],v=this.getItemCount(),A=this.props.getA11yStatusMessage({itemToString:this.props.itemToString,previousResultCount:this.previousResultCount,resultCount:v,highlightedItem:f,...u});this.previousResultCount=v,$4(A,this.props.environment.document)},200);const{defaultHighlightedIndex:i,initialHighlightedIndex:o=i,defaultIsOpen:a,initialIsOpen:s=a,initialInputValue:l="",initialSelectedItem:c=null}=this.props,d=this.getState({highlightedIndex:o,isOpen:s,inputValue:l,selectedItem:c});d.selectedItem!=null&&this.props.initialInputValue===void 0&&(d.inputValue=this.props.itemToString(d.selectedItem)),this.state=d}internalClearTimeouts(){this.timeoutIds.forEach(n=>{clearTimeout(n)}),this.timeoutIds=[]}getState(n){return n===void 0&&(n=this.state),tj(n,this.props)}getItemCount(){let n=this.items.length;return this.itemCount!=null?n=this.itemCount:this.props.itemCount!==void 0&&(n=this.props.itemCount),n}getItemNodeFromIndex(n){return this.props.environment.document.getElementById(this.getItemId(n))}scrollHighlightedItemIntoView(){{const n=this.getItemNodeFromIndex(this.getState().highlightedIndex);this.props.scrollIntoView(n,this._menuNode)}}moveHighlightedIndex(n,r){const i=this.getItemCount(),{highlightedIndex:o}=this.getState();if(i>0){const a=zA(n,o,i,s=>this.getItemNodeFromIndex(s));this.setHighlightedIndex(a,r)}}getStateAndHelpers(){const{highlightedIndex:n,inputValue:r,selectedItem:i,isOpen:o}=this.getState(),{itemToString:a}=this.props,{id:s}=this,{getRootProps:l,getToggleButtonProps:c,getLabelProps:d,getMenuProps:u,getInputProps:f,getItemProps:v,openMenu:A,closeMenu:p,toggleMenu:C,selectItem:y,selectItemAtIndex:h,selectHighlightedItem:b,setHighlightedIndex:w,clearSelection:S,clearItems:E,reset:I,setItemCount:F,unsetItemCount:k,internalSetState:D}=this;return{getRootProps:l,getToggleButtonProps:c,getLabelProps:d,getMenuProps:u,getInputProps:f,getItemProps:v,reset:I,openMenu:A,closeMenu:p,toggleMenu:C,selectItem:y,selectItemAtIndex:h,selectHighlightedItem:b,setHighlightedIndex:w,clearSelection:S,clearItems:E,setItemCount:F,unsetItemCount:k,setState:D,itemToString:a,id:s,highlightedIndex:n,inputValue:r,isOpen:o,selectedItem:i}}componentDidMount(){{const n=()=>{this.isMouseDown=!0},r=l=>{this.isMouseDown=!1,!uD(l.target,[this._rootNode,this._menuNode],this.props.environment)&&this.getState().isOpen&&this.reset({type:nR},()=>this.props.onOuterClick(this.getStateAndHelpers()))},i=()=>{this.isTouchMove=!1},o=()=>{this.isTouchMove=!0},a=l=>{const c=uD(l.target,[this._rootNode,this._menuNode],this.props.environment,!1);!this.isTouchMove&&!c&&this.getState().isOpen&&this.reset({type:pR},()=>this.props.onOuterClick(this.getStateAndHelpers()))},{environment:s}=this.props;s.addEventListener("mousedown",n),s.addEventListener("mouseup",r),s.addEventListener("touchstart",i),s.addEventListener("touchmove",o),s.addEventListener("touchend",a),this.cleanup=()=>{this.internalClearTimeouts(),this.updateStatus.cancel(),s.removeEventListener("mousedown",n),s.removeEventListener("mouseup",r),s.removeEventListener("touchstart",i),s.removeEventListener("touchmove",o),s.removeEventListener("touchend",a)}}}shouldScroll(n,r){const{highlightedIndex:i}=this.props.highlightedIndex===void 0?this.getState():this.props,{highlightedIndex:o}=r.highlightedIndex===void 0?n:r;return i&&this.getState().isOpen&&!n.isOpen||i!==o}componentDidUpdate(n,r){r1(this.props,"selectedItem")&&this.props.selectedItemChanged(n.selectedItem,this.props.selectedItem)&&this.internalSetState({type:mR,inputValue:this.props.itemToString(this.props.selectedItem)}),!this.avoidScrolling&&this.shouldScroll(r,n)&&this.scrollHighlightedItemIntoView(),this.updateStatus()}componentWillUnmount(){this.cleanup()}render(){const n=lD(this.props.children,Oa);this.clearItems(),this.getRootProps.called=!1,this.getRootProps.refKey=void 0,this.getRootProps.suppressRefError=void 0,this.getMenuProps.called=!1,this.getMenuProps.refKey=void 0,this.getMenuProps.suppressRefError=void 0,this.getLabelProps.called=!1,this.getInputProps.called=!1;const r=lD(n(this.getStateAndHelpers()));if(!r)return null;if(this.getRootProps.called||this.props.suppressRefError)return r;if(J7(r))return g.cloneElement(r,this.getRootProps($7(r)))}}return e.defaultProps={defaultHighlightedIndex:null,defaultIsOpen:!1,getA11yStatusMessage:J4,itemToString:t=>t==null?"":String(t),onStateChange:Oa,onInputValueChange:Oa,onUserAction:Oa,onChange:Oa,onSelect:Oa,onOuterClick:Oa,selectedItemChanged:(t,n)=>t!==n,environment:typeof window>"u"?{}:window,stateReducer:(t,n)=>n,suppressRefError:!1,scrollIntoView:q4},e.stateChangeTypes=rj,e})();var oj=ij;function aj(e,t){return t.changes}function sj(e){const{selectedItem:t,itemToString:n}=e;return t?`${n(t)} has been selected.`:""}Yw((e,t)=>{$4(e(),t)},200);function lj(e){return e?String(e):""}const If={itemToString:lj,stateReducer:aj,getA11ySelectionMessage:sj,scrollIntoView:q4,environment:typeof window>"u"?{}:window};se.array.isRequired,se.func,se.func,se.func,se.number,se.number,se.number,se.bool,se.bool,se.bool,se.any,se.any,se.any,se.string,se.string,se.string,se.func,se.string,se.func,se.func,se.func,se.func,se.func,se.shape({addEventListener:se.func,removeEventListener:se.func,document:se.shape({getElementById:se.func,activeElement:se.any,body:se.any})});function cj(e){var t=e.isOpen,n=e.resultCount,r=e.previousResultCount;return t?n?n!==r?"".concat(n," result").concat(n===1?" is":"s are"," available, use up and down arrow keys to navigate. Press Enter or Space Bar keys to select."):"":"No results are available.":""}B(B({},If),{getA11yStatusMessage:cj});se.array.isRequired,se.func,se.func,se.func,se.number,se.number,se.number,se.bool,se.bool,se.bool,se.any,se.any,se.any,se.string,se.string,se.string,se.string,se.string,se.string,se.func,se.string,se.string,se.func,se.func,se.func,se.func,se.func,se.func,se.shape({addEventListener:se.func,removeEventListener:se.func,document:se.shape({getElementById:se.func,activeElement:se.any,body:se.any})});({...If});function uj(e){const{removedSelectedItem:t,itemToString:n}=e;return`${n(t)} has been removed.`}se.array,se.array,se.array,se.func,se.func,se.func,se.number,se.number,se.number,se.func,se.func,se.string,se.string,se.shape({addEventListener:se.func,removeEventListener:se.func,document:se.shape({getElementById:se.func,activeElement:se.any,body:se.any})});If.itemToString,If.stateReducer,If.environment;const oc=function(t){var A,p,C,y,h;const n=g.useRef(null),r=g.useRef(null);t.customValidity!==void 0&&((A=n.current)==null||A.setCustomValidity(t.customValidity(n.current.validity)));const i={...t.additionalInputProps,required:((p=t.additionalInputProps)==null?void 0:p.required)??!0,autoComplete:((C=t.additionalInputProps)==null?void 0:C.autoComplete)??"off"},[o,a]=g.useState(),[s,l]=g.useState(!1),[c,d]=g.useState(!1);g.useEffect(()=>{t.selectedOptionId||a("")},[t.selectedOptionId]),g.useEffect(()=>{var b,w,S;i.required&&(t.selectedOptionId?(w=n.current)==null||w.setCustomValidity(((b=t.customValidity)==null?void 0:b.call(t,n.current.validity))||""):(S=n.current)==null||S.setCustomValidity("Please select an option"))},[i,t.selectedOptionId,n]);const u=10,f=g.useMemo(()=>{if(t.options.loadingStatus!=="loaded")return[];const b=t.options.value.filter(w=>w.isPickable);return o?b.map(w=>({option:w,matchCount:o.trim().split(" ").filter((S,E)=>E===0||S.length>=3).filter(S=>{var E,I;return((E=w.primaryText)==null?void 0:E.toLowerCase().includes(S==null?void 0:S.toLowerCase()))||((I=w.secondaryText)==null?void 0:I.toLowerCase().includes(S==null?void 0:S.toLowerCase()))}).length})).filter(({matchCount:w})=>w>0).sort((w,S)=>(w.option.primaryText||"").localeCompare(S.option.primaryText||"")).sort((w,S)=>S.matchCount-w.matchCount).map(({option:w})=>w):b.sort((w,S)=>(w.primaryText||"").localeCompare(S.primaryText||""))},[o,t.options]);g.useEffect(()=>{const b=w=>{if(document.activeElement===r.current&&!i.disabled)switch(w.key){case"Enter":case"Backspace":t.setSelectedOptionId(null),w.preventDefault(),window.setTimeout(()=>{var S;return(S=n.current)==null?void 0:S.focus()},50);break}};return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[r,n,t.setSelectedOptionId]);const v=(()=>{if(!t.selectedOptionId||!t.selectedOptionCardInfo||!c)return null;if(t.options.loadingStatus!=="loaded")throw new Error("Expected `props.options.loadingStatus` to be 'loaded'");const b=t.options.value.find(S=>S.id===t.selectedOptionId);if(!b)return null;const w=t.selectedOptionCardInfo(b);return m(iT,{info:w})})();return m("label",{"data-name":t.name,className:"field lookup-field","aria-disabled":i.disabled,...t.additionalLabelProps,onFocus:()=>l(!0),onBlur:()=>l(!1),children:N(yt,{children:[N("span",{className:"field-label-header",children:[t.label,i.required&&(t.selectedOptionId?m(Yv,{className:"completed-icon"}):m(Wl,{className:"required-icon"})),t.tooltip&&m(ic,{overlayContent:t.tooltip})," "]}),((y=n.current)==null?void 0:y.validationMessage)&&m("span",{className:"validity-message",children:(h=n.current)==null?void 0:h.validationMessage}),t.options.loadingStatus!=="loaded"?N("span",{className:"loading-message",title:`Loading ${t.pluralOptionsName}`,children:[m(di,{className:"spin"})," Loading"]}):m(oj,{onChange:b=>{b&&t.setSelectedOptionId(b.id)},selectedItem:t.options.value.find(b=>b.id===t.selectedOptionId),selectedItemChanged:()=>!1,itemToString:b=>b&&b.primaryText||"",children:({getInputProps:b,getItemProps:w,getMenuProps:S,highlightedIndex:E,isOpen:I})=>{var F;return m("div",{className:"lookup-field-control-wrapper",children:t.selectedOptionId?N(yt,{children:[N("span",{className:"selected-option",children:[m("span",{className:"primary-text",children:m("span",{onMouseOver:()=>d(!0),onMouseLeave:()=>d(!1),children:t.options.loadingStatus==="loaded"&&((F=t.options.value.find(k=>k.id===t.selectedOptionId))==null?void 0:F.primaryText)||"(No name)"})}),!i.disabled&&m("span",{className:"button clear-button default",onClick:()=>t.setSelectedOptionId(null),ref:r,tabIndex:0,title:"Clear",children:"x"})]}),m(yt,{children:v})]}):N(re,{children:[m("input",{className:"field-control",type:"text",ref:n,...b(),...i,value:o,onChange:k=>a(k.target.value)}),(I||s)&&t.options.loadingStatus==="loaded"&&N("span",{className:"suggestions",...S(),children:[N("span",{className:"suggestions-header",children:[m("span",{className:"suggestions-header-title",children:t.pluralOptionsName}),m("span",{className:"suggestions-header-results-message",children:f.length>u?N(re,{children:["Showing top ",u," results"]}):N(re,{children:["Found ",f.length," result",f.length===1?"":"s"]})})]}),f.length===0?N("span",{className:"no-results-message",children:["No ",t.pluralOptionsName," found."]}):f.filter((k,D)=>DN("span",{className:"suggestion","data-is-focussed-option":E===D,...w({key:`${k.id}${D}`,item:k,index:D}),children:[m("span",{className:"primary-text",children:k.primaryText}),m("span",{className:"secondary-text",children:k.secondaryText})]},k.id)),f.length>u&&N("span",{className:"refinement-message",children:["Refine your search to see more ",t.pluralOptionsName]})]})]})})}})]})})},dj=e=>e>1600?"4:0":e>1353?"3:1":e>1115?"2:2":"1";function fj(e){const[t,n]=g.useState(1),r=()=>n(t+1),[i,o]=g.useState(""),a=Gv();g.useEffect(()=>{o(dj(a))},[a]);const s=()=>{e.filtersToDisplay.forEach(u=>u.onChange(null)),r(),e.onReset()},l=(u,f)=>{switch(u){case"optionSet":return c(f);case"lookup":return d(f)}},c=u=>{if(u.type!=="optionSet")throw Error(`Expected a filter type of 'optionSet' but was ${u.type} `);return N(re,{children:[N("div",{className:"advanced-filter-tile",children:[m("h3",{children:u.title}),m("ul",{className:u.styleClassName,children:u.options.map(f=>m("li",{className:`${u.inputType}-list`,children:N("label",{children:[m("input",{type:u.inputType,id:f.name,value:f.value,name:f.name,checked:u.associatedList.includes(f.value),onChange:v=>u.onChange(f.name)}),f.name]})},f.name))})]},u.name),i!=="1"&&m("div",{className:"border"},`${u.name}-border`)]})},d=u=>{if(u.type!=="lookup")throw Error(`Expected a filter type of 'lookup' but was ${u.type} `);const[f,v]=g.useState(null);return g.useEffect(()=>{v(null)},[t,v]),m(re,{children:N("div",{className:"advanced-filter-tile",children:[m("h3",{children:u.title}),m("form",{children:m(oc,{name:u.name,label:"",selectedOptionId:f,pluralOptionsName:u.pluralOptionsName,options:u.options,setSelectedOptionId:A=>{v(A),u.onChange(A)},additionalInputProps:{placeholder:u.placeholderText,required:!1}},t)})]},u.name)})};return m(re,{children:N("div",{className:"advanced-filters-panel",children:[m("div",{className:"advanced-filter-section-container",children:e.filtersToDisplay.map(u=>l(u.type,u))}),m("button",{className:"reset-filters default",onClick:s,children:"Reset Filters"})]})})}function vj(e){const t=()=>{e.selectedTileIds.includes(e.tile.id)?e.setSelectedTileIds([]):e.setSelectedTileIds([e.tile.id])};let n={};return e.selectedTileIds.length!==0&&(n={"data-selected":!!e.selectedTileIds.includes(e.tile.id)}),N("div",{className:"filter-tile",onClick:()=>t(),...n,title:e.onHoverMessage,children:[m("div",{className:"label",children:e.tile.label}),m("span",{className:"count",children:e.tile.value.loadingStatus==="loaded"?e.tile.value.data:"*"}),m(En,{className:"image",src:e.tile.imagePath,height:48})]})}function rm(e){const[t,n]=g.useState(""),[r,i]=g.useState(!1),o=g.useRef(e.filterGroups),{trackEventWithBistechMetadata:a}=Mn();g.useEffect(()=>{r&&(a==null||a({type:"Management Panel - Advanced Filter Panel opened"}))},[r]);function s(){return e.getSummarySections(r).map(c=>{switch(c.type){case"button-link":return N("div",{"data-type":c.type,className:"summary-section",children:[m("div",{className:"heading",children:c.label}),c.to.loadingStatus==="loaded"&&m(qt,{className:"button",to:c.to.data,children:c.buttonLabel})]},`${c.type} + ${c.label}`);case"count":return N("div",{"data-type":c.type,className:"summary-section",children:[m("div",{className:"heading",children:c.label}),m("div",{className:"content",children:c.value.loadingStatus==="loaded"?c.value.data:"*"})]},`${c.type} + ${c.label}`);case"string":return N("div",{"data-type":c.type,className:"summary-section",children:[m("div",{className:"heading",children:c.label}),m("div",{className:"content",children:c.value.loadingStatus==="loaded"?c.value.data:"*"})]},`${c.type} + ${c.label}`);case"link":return N("div",{"data-type":c.type,className:"summary-section",children:[m("div",{className:"heading",children:c.label}),c.to.loadingStatus==="loaded"&&m(qt,{to:c.to.data,children:c.buttonLabel})]},`${c.type} + ${c.label}`);default:throw new Error(`Unimplemented summary section type: '${c.type}'`)}})}return N("div",{className:"management-panel",children:[N("div",{className:"filter-section",children:[N("div",{className:"search-group",children:[m("div",{className:"label",children:"Search"}),N("form",{className:"search-bar-group",onSubmit:l=>{e.setSearchBarContent(t),l.preventDefault()},children:[m("input",{type:"text",id:"view-search",className:"search-bar",onChange:l=>{n(l.target.value)},value:t,placeholder:e.placeholderText,"aria-label":e.placeholderText}),m("button",{type:"submit",className:"search-button",title:"Search Results",onClick:()=>e.setSearchBarContent(t),"aria-label":"Search Results",children:m(F7,{})})]})]}),e.filterGroups!==null&&N("div",{className:"filter-groups",children:[e.filterGroups.map(l=>N("div",{className:"filter-group",children:[N("label",{className:"label-group",children:["Filter by ",l.labelElement,l.tooltipElement&&m(ic,{overlayContent:l.tooltipElement})]}),m("div",{className:"filter-tiles",children:l.tiles.map(c=>m(vj,{onHoverMessage:c.onHoverMessage,tile:c,selectedTileIds:c.selectedTileIds,setSelectedTileIds:d=>{c.setSelectedTileIds(d),a==null||a({type:"Management Panel - Filter Tile clicked",tileName:c.id})}},c.id))})]},l.attribute)),e.filtersToDisplay.length!==0&&N("div",{className:"advanced-filter-section",children:[N("div",{className:"advanced-filter-button-wrapper",children:[m("span",{className:"advanced-filter-button-icon","data-is-open":r,children:">"})," ",m("button",{className:"advanced-filter-button",onClick:()=>i(!r),children:"Advanced Filters"})]}),r&&m(fj,{filtersToDisplay:e.filtersToDisplay,onReset:()=>{n(""),e.filterGroups.forEach((l,c)=>l.tiles.forEach((d,u)=>d.setSelectedTileIds(o.current[c].tiles[u].selectedTileIds)))}})]})]})]}),m("div",{className:"summary-sections",children:s()})]})}function st(e,t){return e.loadingStatus!=="loaded"?{loadingStatus:e.loadingStatus}:{loadingStatus:"loaded",data:t(e.data)}}const mj=(e,t,n,r,i)=>[{labelElement:m(re,{children:"Status"}),attribute:"Status",tooltipElement:N(re,{children:[N("p",{children:[m("strong",{children:"With Bistech"})," - Cases in-progress and currently being worked on."]}),N("p",{children:[m("strong",{children:"With You"})," - Cases awaiting feedback or confirmation of resolution."]}),N("p",{children:[m("strong",{children:"On Hold"})," - Cases where the resolution of Case is on hold as agreed with you."]})]}),tiles:[{id:"case-type-with-bistech",setSelectedTileIds:n,selectedTileIds:t,filter:o=>[ie.Open,ie["In Progress"],ie["Closure Requested"]].includes(o.statuscode),label:N(re,{children:["With",m("br",{}),"Bistech"]}),value:st(e.casesWithBistech,o=>o.length),imagePath:"/case-management-status-with-bistech.svg"},{id:"case-type-with-you",setSelectedTileIds:n,selectedTileIds:t,filter:o=>[ie["Pending Feedback"],ie.Resolved].includes(o.statuscode),label:N(re,{children:["With",m("br",{}),"You"]}),value:st(e.casesWithYou,o=>o.length),imagePath:"/case-management-status-with-you.svg"},{id:"case-type-on-hold",setSelectedTileIds:n,selectedTileIds:t,filter:o=>o.statuscode===ie["On Hold"],label:N(re,{children:["On",m("br",{}),"Hold"]}),value:st(e.casesOnHold,o=>o.length),imagePath:"/case-management-status-on-hold.svg"}]},{labelElement:m(re,{children:"Type"}),attribute:"Type",tooltipElement:N(re,{children:[N("p",{children:[m("strong",{children:"Incident"})," - A fault or impairment causing a reduction in service."]}),N("p",{children:[m("strong",{children:"Support Request"})," - A formal request for something to be provided."]}),N("p",{children:[m("strong",{children:"Change"})," - An amendment to the functionality of a service."]}),N("p",{children:[m("strong",{children:"Problem"})," - An ongoing reduction in service, for which a resolution has yet to be determined."]})]}),tiles:[{id:"case-type-support-request",setSelectedTileIds:i,selectedTileIds:r,filter:o=>o.casetypecode===he["Support Request"],label:N(re,{children:["Support",m("br",{}),"Requests"]}),value:st(e.supportRequests,o=>o.length),imagePath:"/case-type-service-request.svg"},{id:"case-type-incident",setSelectedTileIds:i,selectedTileIds:r,filter:o=>o.casetypecode===he.Incident,label:"Incidents",value:st(e.incidents,o=>o.length),imagePath:"/case-type-incident.svg"},{id:"case-type-change",setSelectedTileIds:i,selectedTileIds:r,filter:o=>o.casetypecode===he.Change,label:"Changes",value:st(e.changes,o=>o.length),imagePath:"/case-type-change.svg"},{id:"case-type-problem",setSelectedTileIds:i,selectedTileIds:r,filter:o=>o.casetypecode===he.Problem,label:"Problems",value:st(e.problems,o=>o.length),imagePath:"/case-type-problem.svg"}]}],zl=e=>{const t=e.sortingProps;if((t==null?void 0:t.sortingEnabled)!==!0)return m("th",{className:e.fieldName,children:e.columnHeader});const n=e.fieldName===t.sortedColumn,r=()=>{n&&t.setIsSortedAscending(!t.isSortedAscending),t.setSortedColumn(e.fieldName)},i=t.isSortedAscending?m(P7,{size:20,className:"sort-icon"}):m(R7,{size:20,className:"sort-icon"});return N("th",{className:e.fieldName,onClick:r,children:[e.columnHeader," ",n&&i]})},hR=()=>[{id:0,columnHeader:"Case Number",fieldName:"ticketnumber",isSortable:!0},{id:1,columnHeader:"Case Title",fieldName:"title",isSortable:!0},{id:2,columnHeader:"Case Type",fieldName:"casetypecode",isSortable:!0},{id:3,columnHeader:"Created On",fieldName:"createdon",isSortable:!0},{id:4,columnHeader:"Primary Contact",fieldName:"_primarycontactid_value",isSortable:!0},{id:5,columnHeader:"Case Priority",fieldName:"prioritycode",isSortable:!0},{id:6,columnHeader:"Case Status",fieldName:"statuscode",isSortable:!0}];function pj(e,t){return[{type:"button-link",label:"New Case",buttonLabel:"Create",to:{loadingStatus:"loaded",data:Xe.CreateCase.path}},{type:"count",label:"Active Cases",value:e},...t?[{type:"button-link",label:"Closed Cases",buttonLabel:"Closed Cases",to:{loadingStatus:"loaded",data:Xe.ClosedCases.path}}]:[]]}var Mt=(e=>(e[e.Today=1]="Today",e[e.Yesterday=2]="Yesterday",e[e["This Week"]=3]="This Week",e[e["This Month"]=4]="This Month",e[e["This Year"]=5]="This Year",e))(Mt||{});const dD=e=>N("div",{className:e.styleClass,"data-incident-status":"active",children:[m(En,{src:"incident-warning-triangle.svg",height:53,width:64,className:"incident-warning-triangle"}),m("p",{className:"incident-warning-message",children:e.messageText}),m(qt,{to:Xe.MajorIncidents.path,className:"button default btn-incident-details",title:"View Details",children:"View Details"})]}),Or=()=>N("p",{className:"loading-spinner",children:[m(di,{className:"spin"})," Loading"]}),hj=()=>{const e=ve(_=>_.incidents),t=ve(_=>_.contacts),[n,r]=g.useState("createdon"),[i,o]=g.useState(!1),[a,s]=g.useState(""),[l,c]=g.useState([]),[d,u]=g.useState([]),[f,v]=g.useState({selectedCaseTypes:[],selectedIncidentStatuses:[],createdBy:"",dateRange:{value:null,from:null,to:null}}),A=_=>{if(!_){v(M=>({...M,createdBy:""}));return}v(M=>({...M,createdBy:_}))},p=_=>{if(_===null){v(K=>({...K,selectedIncidentStatuses:[]}));return}const M=ie[_];if(!M)throw new Error(`'${_}' filter value for the Case Status filter is not implemented`);if(f.selectedIncidentStatuses.includes(M)){v(K=>({...K,selectedIncidentStatuses:[...f.selectedIncidentStatuses].filter(Q=>Q!==M)}));return}v(K=>({...K,selectedIncidentStatuses:[...f.selectedIncidentStatuses,M]}))},C=_=>{if(_===null){v(K=>({...K,selectedCaseTypes:[]}));return}const M=he[_];if(!M)throw new Error(`'${_}' filter value for the Case Type filter is not implemented`);if(f.selectedCaseTypes.includes(M)){v(K=>({...K,selectedCaseTypes:[...f.selectedCaseTypes].filter(Q=>Q!==M)}));return}v(K=>({...K,selectedCaseTypes:[...f.selectedCaseTypes,M]}))},y=_=>{if(!_){v(Q=>({...Q,dateRange:{value:null,from:null,to:null}}));return}let M=new Date,K=new Date;switch(M.setHours(0,0,0,0),K.setHours(23,59,59,999),Mt[_]){case Mt.Today:break;case Mt.Yesterday:M.setDate(M.getDate()-1),K.setDate(K.getDate()-1);break;case Mt["This Week"]:M.setDate(M.getDate()-M.getDay());break;case Mt["This Month"]:M=new Date(M.getFullYear(),M.getMonth(),1);break;case Mt["This Year"]:M=new Date(M.getFullYear(),0,1);break;default:throw new Error(`'${_}' filter value for the Created On filter is not implemented`)}v(Q=>({...Q,dateRange:{value:Mt[_],from:M,to:K}}))},h=Sn.useMemo(()=>{if(e.activeIncidents.loadingStatus!=="loaded")return{loadingStatus:e.activeIncidents.loadingStatus};const _=e.activeIncidents.data.slice().sort((M,K)=>{var Q,O;return(((Q=M[n])==null?void 0:Q.toString())??"").localeCompare(((O=K[n])==null?void 0:O.toString())??"")});return i?{loadingStatus:"loaded",data:_}:{loadingStatus:"loaded",data:_.reverse()}},[e,n,i]),b={activeCases:h,casesWithBistech:st(h,_=>_.filter(M=>[ie.Open,ie["In Progress"],ie["Closure Requested"]].includes(M.statuscode))),casesWithYou:st(h,_=>_.filter(M=>[ie["Pending Feedback"],ie.Resolved].includes(M.statuscode))),casesOnHold:st(h,_=>_.filter(M=>M.statuscode===ie["On Hold"])),supportRequests:st(h,_=>_.filter(M=>M.casetypecode===he["Support Request"])),incidents:st(h,_=>_.filter(M=>M.casetypecode===he.Incident)),changes:st(h,_=>_.filter(M=>M.casetypecode===he.Change)),problems:st(h,_=>_.filter(M=>M.casetypecode===he.Problem))},w=mj(b,l,c,d,u),S=w.flatMap(_=>_.tiles.filter(M=>l.length>0?l.includes(M.id):!0).flatMap(M=>M.filter)),E=w.flatMap(_=>_.tiles.filter(M=>d.length>0?d.includes(M.id):!0).flatMap(M=>M.filter)),I=_=>pj(b.activeCases.loadingStatus==="loaded"?{loadingStatus:"loaded",data:b.activeCases.data.length}:{loadingStatus:"loading"},_),F="We are aware of an issue which may be affecting some customers. If you are experiencing any issues please create a case and we shall provide appropriate updates.",k="A previous issue which was affecting some customers has recently been resolved. If you are experiencing any further issues, please update your case.",D=hR(),P=_=>{var M;return(M=D.find(K=>K.fieldName===_))==null?void 0:M.columnHeader},H=st(h,_=>_.filter(M=>Object.entries(M).some(([K,Q])=>{let O=Q==null?void 0:Q.toString();switch(K){case"casetypecode":{O=(()=>!M||!M.casetypecode?null:he[M.casetypecode])();break}case"createdon":{O=Ze.toDateString(M.createdon);break}case"prioritycode":{O=(()=>!M||!M.prioritycode?null:xe[M.prioritycode])();break}case"statuscode":{O=(()=>!M||!M.casetypecode?null:ie[M.statuscode])();break}case"_primarycontactid_value":{O=(()=>{if(t.loadingStatus!=="loaded")return;const R=t.data.find(T=>T.contactid===M._primarycontactid_value);return R?[R.firstname,R.lastname].filter(T=>T).join(" "):null})();break}}return O==null?void 0:O.toString().toLowerCase().includes(a.toLowerCase())})).filter(M=>S.some(K=>K(M))).filter(M=>E.some(K=>K(M))).filter(M=>{var Q,O;const K=new Date(M.createdon);return(f.selectedIncidentStatuses.length?(Q=f.selectedIncidentStatuses)==null?void 0:Q.includes(M.statuscode):!0)&&(M.casetypecode&&f.selectedCaseTypes.length?(O=f.selectedCaseTypes)==null?void 0:O.includes(M.casetypecode):!0)&&(f.createdBy?f.createdBy===M._primarycontactid_value:!0)&&(f.dateRange.from&&f.dateRange.to?K>=f.dateRange.from&&K<=f.dateRange.to:!0)})),G=e.activeMajorIncidents.loadingStatus==="loaded"?e.activeMajorIncidents.data.filter(_=>_.statuscode!==ie.Resolved).length:0;return N(Dn,{title:"Cases",children:[e.activeMajorIncidents.loadingStatus==="loaded"&&G>0&&m(dD,{messageText:F,styleClass:"incident-warning"}),e.recentlyResolvedMajorIncidents.loadingStatus==="loaded"&&e.activeMajorIncidents.loadingStatus==="loaded"&&G===0&&e.recentlyResolvedMajorIncidents.data.length>0&&m(dD,{messageText:k,styleClass:"resolved-incident-warning"}),m(rm,{setSearchBarContent:s,filterGroups:w,placeholderText:"Search by Case Title or Reference",getSummarySections:I,filtersToDisplay:[{type:"optionSet",options:[{name:"Open",value:ie.Open},{name:"In Progress",value:ie["In Progress"]},{name:"On Hold",value:ie["On Hold"]},{name:"Pending Feedback",value:ie["Pending Feedback"]},{name:"Resolved",value:ie.Resolved},{name:"Closure Requested",value:ie["Closure Requested"]}],onChange:p,associatedList:f.selectedIncidentStatuses,name:"incident-types",inputType:"checkbox",styleClassName:"checkbox-section incident",title:"Status"},{type:"optionSet",options:[{name:"Incident",value:he.Incident},{name:"Support Request",value:he["Support Request"]},{name:"Problem",value:he.Problem},{name:"Change",value:he.Change}],onChange:C,associatedList:f.selectedCaseTypes,name:"case-types",inputType:"checkbox",styleClassName:"checkbox-section case",title:"Case Type"},{type:"optionSet",options:[{name:"Today",value:Mt.Today},{name:"Yesterday",value:Mt.Yesterday},{name:"This Week",value:Mt["This Week"]},{name:"This Month",value:Mt["This Month"]},{name:"This Year",value:Mt["This Year"]}],onChange:y,associatedList:[f.dateRange.value],name:"date-since",inputType:"radio",styleClassName:"checkbox-section case",title:"Created On"},{type:"lookup",name:"_primarycontactid_value",placeholderText:"Filter by contact",pluralOptionsName:"Contacts",title:"Created By",options:t.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:t.data.map(_=>({id:_.contactid,primaryText:[_.firstname,_.lastname].filter(M=>M).join(" "),secondaryText:Fe[_.statecode],isPickable:!0,contact:_}))},onChange:A}]}),H.loadingStatus!=="loaded"?m(Or,{}):H.data.length===0?m("div",{className:"no-results-message",children:"There are no records to display."}):N("table",{className:"entitylist cases-table",children:[m("thead",{children:m("tr",{children:D.map(_=>m(zl,{columnHeader:_.columnHeader,fieldName:_.fieldName,sortingProps:{sortingEnabled:_.isSortable,sortedColumn:n,setSortedColumn:()=>r(_.fieldName),isSortedAscending:i,setIsSortedAscending:o}},_.id))})}),m("tbody",{children:H.data.map(_=>N("tr",{"data-id":_.incidentid,"data-entity":"incident","data-name":_.title,children:[m("td",{className:"number",title:_.ticketnumber,"data-heading-title":P("ticketnumber"),children:m(qt,{to:`edit?caseId=${_.incidentid}`,children:`${_.ticketnumber}`},_.incidentid)}),m("td",{className:"title",title:_.title,"data-heading-title":P("title"),children:m(qt,{to:`edit?caseId=${_.incidentid}`,children:`${_.title}`},_.incidentid)}),m("td",{className:"type","data-heading-title":P("casetypecode"),children:_.casetypecode&&he[_.casetypecode]}),m("td",{className:"created-on","data-heading-title":P("createdon"),children:Ze.toDateString(_.createdon)}),m("td",{className:"contact","data-heading-title":P("_primarycontactid_value"),children:_._primarycontactid_value&&(()=>{if(t.loadingStatus!=="loaded")return;const M=t.data.find(K=>K.contactid===_._primarycontactid_value);return M?[M.firstname,M.lastname].filter(K=>K).join(" "):null})()}),m("td",{className:"priority","data-heading-title":P("prioritycode"),children:_.prioritycode&&xe[_.prioritycode]}),m("td",{className:"status","data-heading-title":P("statuscode"),children:ie[_.statuscode]})]},_.incidentid))})]})]})};let gj=class{constructor(){this.incidentid=void 0,this.title=void 0,this._customerid_value=void 0,this.ticketnumber=void 0,this.bistech_customerreference=void 0,this.description=void 0,this.casetypecode=void 0,this.caseorigincode=void 0,this.severitycode=void 0,this.bistech_urgency=void 0,this.prioritycode=void 0,this.statuscode=void 0,this.createdon=void 0,this._primarycontactid_value=void 0,this._bistech_createdbycontact_value=void 0,this.bistech_resolutiondate=void 0}};const Tl={titleColumnName:"title",columnNames:Object.keys(new gj),entityReferenceColumnMappings:[{columnName:"_customerid_value",navigationPropertyName:"customerid_account",pluralEntitySetName:"accounts"},{columnName:"_primarycontactid_value",navigationPropertyName:"primarycontactid",pluralEntitySetName:"contacts"},{columnName:"_bistech_createdbycontact_value",navigationPropertyName:"bistech_createdbycontact",pluralEntitySetName:"contacts"}],expandProperties:[]};function gR(){return"00000000-0000-0000-0000-000000000000".replace(/[0]/g,t=>Math.round(Math.random()*16).toString(16))}const Aj=()=>{async function e(c,d,u){var p;if(!((p=window.shell)!=null&&p.getTokenDeferred))throw new Error("`window.shell.getTokenDeferred` is not defined");const f=await window.shell.getTokenDeferred();let v,A;try{v=await fetch(`/_api/${c}`,{method:"POST",headers:{"content-type":"application/json",__RequestVerificationToken:f},body:JSON.stringify(gv(d,u))}),v.status!==204&&await Td(v,{statusCode:204,statusText:"No Content"});const C=v.headers.get("entityid");if(!C)throw new Error("Expected response from POST request to contain the 'entityid'");A=C}catch(C){throw new Error(`Failed to create a '${c}' record:\r ${C}`)}return{id:A}}async function t(c,d,u){var h;if(!((h=window.shell)!=null&&h.getTokenDeferred))throw new Error("`window.shell.getTokenDeferred` is not defined");const f=i1(d.columnNames),v=u?bj(u):"",A=d.expandProperties.length>0?fD(d):"",p=`${f}${v}${A}`,C=await window.shell.getTokenDeferred();let y;try{return y=await fetch(`/_api/${c}?${p}`,{method:"GET",headers:{"content-type":"application/json",__RequestVerificationToken:C}}),y.status!==200&&await Td(y,{statusCode:200,statusText:"OK"}),(await y.json()).value}catch(b){throw new Error(`Failed to retrieve multiple '${c}' records:\r ${b}`)}}async function n(c,d,u){var h;if(!((h=window.shell)!=null&&h.getTokenDeferred))throw new Error("`window.shell.getTokenDeferred` is not defined");const f=i1(u.columnNames),v=u.titleColumnName?`&$filter=${u.titleColumnName.toString()} ne 'cache-buster-${gR()}'`:"",A=u.expandProperties.length>0?fD(u):"",p=`${f}${v}${A}`,C=await window.shell.getTokenDeferred();let y;try{return y=await fetch(`/_api/${c}(${d})?${p}`,{method:"GET",headers:{"content-type":"application/json",__RequestVerificationToken:C}}),y.status!==200&&await Td(y,{statusCode:200,statusText:"OK"}),await y.json()}catch(b){throw new Error(`Failed to retrieve a singular '${c}' record:\r ${b}`)}}async function r(c,d,u,f){var A;if(!((A=window.shell)!=null&&A.getTokenDeferred))throw new Error("`window.shell.getTokenDeferred` is not defined");const v=await window.shell.getTokenDeferred();try{if(Object.keys(u).length>0){const p=await fetch(`/_api/${c}(${d})`,{method:"PATCH",headers:{"content-type":"application/json",__RequestVerificationToken:v},body:JSON.stringify(gv(u,f))});p.status!==204&&await Td(p,{statusCode:204,statusText:"No Content"})}}catch(p){throw new Error(`Failed to update ${Object.keys(u).map(C=>`'${C}'`).join(", ")} columns of a '${c}' record:\r ${p}`)}}async function i(c,d){await l({event:"Feedback",feedbackCategory:d,feedbackDescription:c})}async function o(c){return await l({event:"RequestClosure",incidentId:c}),await n("incidents",c,Tl)}async function a(c){return await l({event:"RequestReopen",incidentId:c}),await n("incidents",c,Tl)}async function s(c){await l({event:"SendPortalInvitation",contactId:c})}async function l(c){try{const d=JSON.stringify(c),u=encodeURIComponent(d),f=await fetch(`/portalactions/?params=${u}`);f.status!==200&&await Td(f,{statusCode:200,statusText:"OK"})}catch(d){throw new Error(`Failed to execute Portal Action '${c.event}': ${d}`)}}return{create:e,retrieveMultiple:t,retrieve:n,update:r,executeFeedbackPortalAction:i,executeRequestClosurePortalAction:o,executeRequestReopenPortalAction:a,executeSendInvitationPortalAction:s}};async function Td(e,t){const n=await(async()=>{var i,o,a,s;const r=`Expected HTTP Status Code to be '${t.statusCode} (${t.statusText})', but was '${e.status}'`;try{const l=await e.json();return yj(l)?`${Array.from(new Set([(i=l.error.innererror)==null?void 0:i.type,(o=l.error.innererror)==null?void 0:o.message,(a=l.error.innererror)!=null&&a.code?`(Error Code: ${(s=l.error.innererror)==null?void 0:s.code})`:"",l.error.message,`(Error Code: ${l.error.code})`])).filter(d=>d).join(" ")}. ${r}`:r}catch{return r}})();throw new Error(n)}function yj(e){const t=e;return typeof t.error=="object"&&typeof t.error.code=="string"&&typeof t.error.message=="string"}function i1(e){return`$select=${e.filter(t=>!t.includes("@OData")).map(t=>t.toLocaleString()).join(",")}`}function bj(e){const t=e.filter(n=>!n.attribute.includes("@OData")).map(n=>`${n.attribute} ${n.operator} ${n.value??""}`).join(" and ");return`&$filter=${encodeURIComponent(t)}`}function fD(e){return e.expandProperties.length>0?"&$expand="+e.expandProperties.map(n=>`${n.columnName.toString()}(${i1(n.entityMetadata.columnNames.filter(r=>!n.entityMetadata.expandProperties.map(i=>i.columnName).includes(r)))})`).join(","):""}function Cj(e,t,n){if(t.startsWith("_")&&t.endsWith("_value")){const r=e.entityReferenceColumnMappings.find(i=>i.columnName===t);if(!r)throw new Error(`\`entityReferenceColumnMappings\` does not contain a definition for the Entity Reference column '${t}'`);t=`${r.navigationPropertyName}@odata.bind`,n=n?`/${r.pluralEntitySetName}(${n})`:null}return[t,n]}function gv(e,t){return Object.fromEntries(Object.entries(e).filter(([n])=>!n.includes("@OData")).filter(([n,r])=>!(n.startsWith("_")&&n.endsWith("_value")&&!r)).map(([n,r])=>{[n,r]=Cj(t,n,r);const i=t.expandProperties.find(o=>o.columnName===n);return i&&(r=r.map(a=>gv(a,i.entityMetadata))),[n,r]}))}var Je=(e=>(e[e.Open=0]="Open",e[e.Completed=1]="Completed",e[e.Cancelled=2]="Cancelled",e[e.Scheduled=3]="Scheduled",e))(Je||{}),Ve=(e=>(e[e.Incoming=1]="Incoming",e[e.Outgoing=2]="Outgoing",e))(Ve||{}),$e=(e=>(e[e.Open=1]="Open",e[e.Sent=2]="Sent",e[e.Received=3]="Received",e[e.Cancelled=4]="Cancelled",e[e.Scheduled=5]="Scheduled",e))($e||{});const wj=[{activityid:"2fbhdfd7b-6961-40c0-acf4-e15ehkggmj2e1",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",adx_portalcommentdirectioncode:Ve.Incoming,description:"Im stuck in another country, in a cave.",createdon:"2020-07-07T08:48:00.000Z",modifiedon:"2020-07-07T08:48:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd11-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",adx_portalcommentdirectioncode:Ve.Incoming,description:"Gonna need your magic.",createdon:"2020-07-07T09:08:00.000Z",modifiedon:"2020-07-07T09:08:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd12-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"0ea9ee91-edc0-4dc2-898d-1e28bbafede5",adx_portalcommentdirectioncode:Ve.Incoming,description:"Stop breaking stuff please Hulk.",createdon:"2020-09-03T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd13-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"5a5700b2-1a7f-4b0f-b5bb-d422237c5a03",adx_portalcommentdirectioncode:Ve.Incoming,description:"He has set the servers on fire.",createdon:"2020-09-03T08:28:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd14-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"77c612c2-6170-4a30-80b5-bd5ee3a9bf16",adx_portalcommentdirectioncode:Ve.Incoming,description:"Can you help me get back to Asgard as I have been exiled to Midgard.",createdon:"2020-09-04T03:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd15-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"77c612c2-6170-4a30-80b5-bd5ee3a9bf16",adx_portalcommentdirectioncode:Ve.Incoming,description:"Going to need some Stark tech to put the fires out.",createdon:"2020-09-06T08:48:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd16-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"4f4ee320-9a50-438e-bf24-ffd786afc397",adx_portalcommentdirectioncode:Ve.Incoming,description:"Im not sure how to use a computer yet. I've been stuck in the ice.",createdon:"2020-10-04T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd17-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"eed5699c-4395-489e-853f-9e7a6d5ea0ea",adx_portalcommentdirectioncode:Ve.Incoming,description:"My magic tricks are better than yours.",createdon:"2020-10-05T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd18-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"1b26b94d-737b-451b-b89d-725bd25ff02e",adx_portalcommentdirectioncode:Ve.Incoming,description:"We need to get the team together. We need to stop Loki from setting the servers on fire.",createdon:"2020-10-06T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd19-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3d6c7411-1622-48f3-bd0b-509d6a39a562",adx_portalcommentdirectioncode:Ve.Incoming,description:"A.I.M has big aims for very fast network connections. Their servers are also fireproof!",createdon:"2020-10-07T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd21-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"d437dde0-c79d-41c6-b719-e2378269dc7b",adx_portalcommentdirectioncode:Ve.Incoming,description:"How are we going to resolve this? Is there a backup of a backup?",createdon:"2020-10-08T07:56:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd22-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"50990913-8ecf-4d6f-b806-b01278c68369",adx_portalcommentdirectioncode:Ve.Incoming,description:"He has used Hydra's servers and is using their broadband too.",createdon:"2020-10-11T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd23-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3f9df6ef-43ae-44da-b3aa-6876c6e68657",adx_portalcommentdirectioncode:Ve.Incoming,description:"I am Groot I am Groot I am Groot I am Groot I am Groot I am Groot I am Groot I am Groot I am Groot. I am Groot.",createdon:"2020-10-12T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd25-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3f9df6ef-43ae-44da-b3aa-6876c6e68657",adx_portalcommentdirectioncode:Ve.Incoming,description:"Im sorry about that, I think Groot got onto my email account.",createdon:"2020-10-13T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"e41f0c31-108e-4f3e-964c-2733kdgjso8",_regardingobjectid_value:"e41f0c8c-108e-4f3e-964c-273361425f48",adx_portalcommentdirectioncode:Ve.Incoming,description:"Do you see the flying city too?",createdon:"2020-10-14T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd32-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e41f0c8c-108e-4f3e-964c-273361425f48",adx_portalcommentdirectioncode:Ve.Incoming,description:"We haven't seen you in a while, how's the jet treating you?",createdon:"2020-10-15T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd33-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"585d45bc-34bb-4537-9ef7-ed66d69e54cb",adx_portalcommentdirectioncode:Ve.Incoming,description:"It's getting really boring, i've resorted to learning magic tricks.",createdon:"2020-10-16T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd34-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"585d45bc-34bb-4537-9ef7-ed66d69e54cb",adx_portalcommentdirectioncode:Ve.Incoming,description:"You have about 5 weeks left. Sorry.",createdon:"2020-10-25T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd35-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e5367559-36f0-4494-87bd-6cb8249c8d2c",adx_portalcommentdirectioncode:Ve.Incoming,description:"It's not his fault for the server fire. Hydra used him to set the Wakandan's servers on fire.",createdon:"2020-10-15T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd36-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e5367559-36f0-4494-87bd-6cb8249c8d2c",adx_portalcommentdirectioncode:Ve.Incoming,description:"He did all of it under his own influence.",createdon:"2020-10-02T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd41-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"c083ad34-69b2-4603-9358-522e56b3da29",adx_portalcommentdirectioncode:Ve.Incoming,description:"I has a server error and now i need an operation.",createdon:"2020-10-06T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd42-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"77e4a7a4-7037-41ed-8e8f-8a218fafb9a4",adx_portalcommentdirectioncode:Ve.Incoming,description:"This guy is a planet, its inflated his Ego so much. Also he is my father.",createdon:"2020-10-25T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd43-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"aa1313df-0590-46ae-ab9a-61c7d1a17b06",adx_portalcommentdirectioncode:Ve.Incoming,description:"Ned is busy fixing a server issue.",createdon:"2020-12-14T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd45-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"c348955f-ad48-43c3-88ab-423ff2bb8e28",adx_portalcommentdirectioncode:Ve.Incoming,description:"It turns out my sister is Hela, she is good at fixing servers.",createdon:"2020-12-16T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd47-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"864e4f6f-fac6-45b1-b720-b52153259fe3",adx_portalcommentdirectioncode:Ve.Incoming,description:"Wakanda is great, we have fireproof servers made from vibranium.",createdon:"2020-12-17T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd51-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",adx_portalcommentdirectioncode:Ve.Incoming,description:"I got into some trouble and need you doc.",createdon:"2020-12-19T07:18:00.000Z",modifiedon:"2020-09-12T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd52-9123-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",adx_portalcommentdirectioncode:Ve.Incoming,description:"I need this sorted ASAP.",createdon:"2020-12-13T07:18:00.000Z",modifiedon:"2020-10-13T09:01:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"2fbhdfd53-9123-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"eed5699c-4395-489e-853f-9e7a6d5ea0ea",adx_portalcommentdirectioncode:Ve.Incoming,description:"Antman shrunk the server and its only working with quantum processing, can we get a new one please?",createdon:"2020-11-14T07:18:00.000Z",modifiedon:"2020-10-13T09:01:00.000Z",statecode:Je.Completed,statuscode:$e.Sent},{activityid:"4hfhdfd47-6961-50d2-bbf4-e15e8er032a3",_regardingobjectid_value:"377e4652-e38d-4c0c-9768-b047a4a459c6",adx_portalcommentdirectioncode:Ve.Incoming,description:"I want SoGFast and I want it in all of Valhalla.",createdon:"2022-10-14T07:18:00.000Z",modifiedon:"2022-11-19T09:43:00.000Z",statecode:Je.Completed,statuscode:$e.Sent}],Ej=[{activityid:"2fbhdfd7b-6961-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",_createdby_value:te.nickFury.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"The 10 rings have a lot of weaponry.",description:"We need to try and stop them from using their missiles.",createdon:"2020-07-07T08:31:55.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4011-acf4-e15e8er032e2",_regardingobjectid_value:"20ea9ee91-edc0-4dc2-898d-1e28bbafede5",_createdby_value:te.nickFury.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Big green raging monster.",description:"There is a big green monster running rampant around the city. We need air support ASAP!",createdon:"2020-07-07T08:33:55.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4012-acf4-e15e8er032e3",_regardingobjectid_value:"5a5700b2-1a7f-4b0f-b5bb-d422237c5a03",_createdby_value:te.nickFury.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"There is a man on the Formula 1 track.",description:"There is a man on the F1 track, we need Iron Man now.",createdon:"2020-07-08T08:23:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4013-acf4-e15e8er032e4",_regardingobjectid_value:"5a5700b2-1a7f-4b0f-b5bb-d422237c5a03",_createdby_value:te.tonyStark.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"The stark expo has gone awry.",description:"We have remotely controlled machines attacking civilians. Iron Man and War Machine need to act fast.",createdon:"2020-07-08T08:27:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4014-acf4-e15e8er014af",_regardingobjectid_value:"77c612c2-6170-4a30-80b5-bd5ee3a9bf16",_createdby_value:te.thor.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Loki is taking over Asgard.",description:"I have been exiled to Midgard and Loki is trying trying to take the throne of Asgard.",createdon:"2020-07-08T08:32:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4015-acf4-e15e812312fs",_regardingobjectid_value:"4f4ee320-9a50-438e-bf24-ffd786afc397",_createdby_value:te.steveRogers.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Red Skull has the Tesseract.",description:"Red Skull has the Tesseract and could wreak havoc with it.",createdon:"2020-07-08T08:31:13.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4016-acf4-e15e812312fs",_regardingobjectid_value:"4f4ee320-9a50-438e-bf24-ffd786afc397",_createdby_value:te.steveRogers.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"I need to crash into the Ice.",description:"To stop these missiles reaching their destination I must crash this plane into the ice.",createdon:"2020-08-01T08:32:13.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4117-acf4-e15e812312fs",_regardingobjectid_value:"1b26b94d-737b-451b-b89d-725bd25ff02e",_createdby_value:te.nickFury.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Loki is attacking New York.",description:"We are going to need the Avengers to assemble to get out of this one.",createdon:"2020-08-11T11:32:13.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6ass-2318-acf4-e15e812312fs",_regardingobjectid_value:"3d6c7411-1622-48f3-bd0b-509d6a39a562",_createdby_value:te.tonyStark.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"A.I.M is up to something.",description:"Im going to sort this out, should be solved in a few days.",createdon:"2020-08-11T12:13:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4021-adfss4-e15e812312fs",_regardingobjectid_value:"d437dde0-c79d-41c6-b719-e2378269dc7b",_createdby_value:te.thor.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Malekith is up to something.",description:"He is causing havoc on Midgard.",createdon:"2020-08-11T13:16:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4022-adfss4-e15e812312fs",_regardingobjectid_value:"50990913-8ecf-4d6f-b806-b01278c68369",_createdby_value:te.steveRogers.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Bucky is up to something.",description:"He is breaking Wakanda's servers.",createdon:"2020-08-15T13:18:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4023-adfss4-e15e812312fs",_regardingobjectid_value:"3f9df6ef-43ae-44da-b3aa-6876c6e68657",_createdby_value:te.peterQuill.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Ronan is up to something.",description:"He has almost got his hands on the power stone.",createdon:"2020-08-15T13:18:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4024-adfss4-e15e812312fs",_regardingobjectid_value:"e41f0c8c-108e-4f3e-964c-273361425f48",_createdby_value:te.steveRogers.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Ultron is up to something.",description:"He has lifted Sokovia up into the sky, what is going on?",createdon:"2020-08-15T17:18:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-40c5-adfss4-e15e812312fs",_regardingobjectid_value:"585d45bc-34bb-4537-9ef7-ed66d69e54cb",_createdby_value:te.scottLang.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Yellow Jacket is up to something.",description:"He has stole Hank's Pym Particals and is going to shrink the server.",createdon:"2020-08-17T12:11:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4025-adfss4-e15e812312fs",_regardingobjectid_value:"e5367559-36f0-4494-87bd-6cb8249c8d2c",_createdby_value:te.tonyStark.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Steve is up to something.",description:"He is on the run with Bucky, we need to get them under control.",createdon:"2020-09-17T13:11:10.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4026-adfss4-e15e812312fs",_regardingobjectid_value:"c083ad34-69b2-4603-9358-522e56b3da29",_createdby_value:te.stephenstrange.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Dormammu is up to something.",description:"He and his disciples are breaking all the servers, we need to send them back to the Dark Dimension.",createdon:"2020-09-23T09:11:10.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4031-adfss4-e15e812312fs",_regardingobjectid_value:"77e4a7a4-7037-41ed-8e8f-8a218fafb9a4",_createdby_value:te.peterQuill.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Ego is up to something.",description:"He is trying to get me to take over servers with him.",createdon:"2020-10-03T10:11:10.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4032-adfss4-e15e812312fs",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",_createdby_value:te.tonyStark.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Thanos is up to something.",description:"He has just stole the Power Stone and is now trying to get the Mind Stone from Vision.",createdon:"2020-10-07T10:15:10.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-3232-adfss4-e15e812312fs",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",_createdby_value:te.tonyStark.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Thanos and the Stones.",description:"If Thanos gets his hands on all 6 Infinity Stones he will have the power to wipe out half of the internet.",createdon:"2020-10-03T11:18:10.000Z",modifiedon:"2020-07-07T09:35:00.000Z"},{activityid:"2fbhdfd7b-6961-4043-acf4-e15e8er03212",_regardingobjectid_value:"eed5699c-4395-489e-853f-9e7a6d5ea0ea",_createdby_value:te.steveRogers.contactid,actualend:"2020-07-07T09:58:00.000Z",prioritycode:"1",statecode:"1",statuscode:"1",subject:"Thanos just used the Infinity Gauntlet",description:"Fifty Percent of life in the universe is GONE!",createdon:"2020-10-09T10:12:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z"}],Sj=[{activityid:"2fbhdfd7b-0001-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",bistech_direction:!1,subject:"Iron Man",description:"We need you to come and help us fix these servers.",createdon:"2020-07-07T07:08:00.000Z",modifiedon:"2020-07-07T07:08:00.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-0001-40c0-acf4-e15e8er032e2",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",bistech_direction:!0,subject:"Tony Stark is Iron Man",description:"Did you see that Tony Stark is Iron Man? News to me!",createdon:"2020-07-07T12:06:00.000Z",modifiedon:"2020-07-07T12:06:00.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-0001-40c0-acf4-e15e8er032e3",_regardingobjectid_value:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",bistech_direction:!0,subject:"Tony Stark is obviously Iron Man",description:"Did you know Tony Stark is Iron Man? Super obvious to me!",createdon:"2020-07-07T13:16:00.000Z",modifiedon:"2020-07-07T13:16:00.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-0001-40c0-acss-e15e8er032e1",_regardingobjectid_value:"0ea9ee91-edc0-4dc2-898d-1e28bbafede5",bistech_direction:!1,subject:"Invoice: $100,000,000",description:"Hello Bruce, you have caused chaos in the city. I will be invoicing you for the damange caused.",createdon:"2020-07-07T14:06:31.000Z",modifiedon:"2020-07-07T14:06:31.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-0cc1-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"5a5700b2-1a7f-4b0f-b5bb-d422237c5a03",bistech_direction:!1,subject:"Whiplash need a new server.",description:"Hello Tony, would you be able to get Whiplash a new server? His old was was set on fire.",createdon:"2020-08-01T14:06:31.000Z",modifiedon:"2020-08-01T14:06:31.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-0111-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"77c612c2-6170-4a30-80b5-bd5ee3a9bf16",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Thor is causing chaos on Earth. We need to get rid of him! I hope we never see his brother Loki either.",createdon:"2020-09-02T11:09:37.000Z",modifiedon:"2020-09-02T11:09:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-3301-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"4f4ee320-9a50-438e-bf24-ffd786afc397",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Im going to need a new suit, can you make me one? Oh nevermind, you aren't born yet.",createdon:"2020-09-07T11:09:37.000Z",modifiedon:"2020-09-07T11:09:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4444-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"1b26b94d-737b-451b-b89d-725bd25ff02e",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Hello, can I become part of your Avengers team? I can fix your servers.",createdon:"2020-09-14T10:10:37.000Z",modifiedon:"2020-09-14T10:10:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-5555-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3d6c7411-1622-48f3-bd0b-509d6a39a562",bistech_direction:!1,subject:"In reference to: TEST-123",description:"A.I.M for better bandwith. We can offer you a much better deal on bandwith with much faster download speeds.",createdon:"2020-09-21T11:09:37.000Z",modifiedon:"2020-09-21T11:09:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-6666-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"d437dde0-c79d-41c6-b719-e2378269dc7b",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Malekith is causing alot of chaos with the servers.",createdon:"2020-09-28T11:23:37.000Z",modifiedon:"2020-09-28T11:23:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-7777-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"50990913-8ecf-4d6f-b806-b01278c68369",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Bucky is working on servers with Hydra.",createdon:"2020-10-02T11:09:37.000Z",modifiedon:"2020-10-02T11:09:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-8888-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3f9df6ef-43ae-44da-b3aa-6876c6e68657",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Ronan has got the most powerful server in the galaxy.",createdon:"2020-10-03T10:34:37.000Z",modifiedon:"2020-10-03T10:34:37.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-9999-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e41f0c8c-108e-4f3e-964c-273361425f48",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Ultron is working with Wanda and Pietro on some new servers.",createdon:"2020-10-05T10:22:12.000Z",modifiedon:"2020-10-05T10:22:12.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-8899-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e41f0c8c-108e-4f3e-964c-273361425f48",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Wanda and Pietro are now working on our servers.",createdon:"2020-10-05T11:11:11.000Z",modifiedon:"2020-10-05T11:11:11.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-7799-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"585d45bc-34bb-4537-9ef7-ed66d69e54cb",bistech_direction:!0,subject:"In reference to: TEST-123",description:"I can't wait to get out of my house, I need to fix some servers.",createdon:"2020-10-05T14:14:11.000Z",modifiedon:"2020-10-05T14:14:11.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-6699-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"e5367559-36f0-4494-87bd-6cb8249c8d2c",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Bucky is working on our servers now.",createdon:"2020-10-06T11:14:11.000Z",modifiedon:"2020-10-06T11:14:11.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-5599-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"c083ad34-69b2-4603-9358-522e56b3da29",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Dormammu loves dark mode, please can we get some support for that?",createdon:"2020-11-06T11:13:11.000Z",modifiedon:"2020-11-06T11:13:11.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4949-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"77e4a7a4-7037-41ed-8e8f-8a218fafb9a4",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Ego is trying to take over our servers. What can we do to prevent him from doing this?",createdon:"2020-11-08T13:11:11.000Z",modifiedon:"2020-11-08T13:11:11.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4499-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"aa1313df-0590-46ae-ab9a-61c7d1a17b06",bistech_direction:!0,subject:"In reference to: TEST-123",description:"I had a nice time at Homecoming, I fixed a few servers while I was there.",createdon:"2020-11-10T12:11:15.000Z",modifiedon:"2020-11-10T12:11:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-3399-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"",bistech_direction:!0,subject:"In reference to: TEST-123",description:"",createdon:"2020-11-14T15:12:15.000Z",modifiedon:"2020-11-14T15:12:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4411-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"864e4f6f-fac6-45b1-b720-b52153259fe3",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Wakanda has the best Vibranium servers, get yours here now.",createdon:"2020-11-14T18:12:15.000Z",modifiedon:"2020-11-14T18:12:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4422-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"864e4f6f-fac6-45b1-b720-b52153259fe3",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Shuri will be able to fix your server, no problems.",createdon:"2020-11-15T15:12:15.000Z",modifiedon:"2020-11-15T15:12:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4433-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",bistech_direction:!0,subject:"In reference to: TEST-123",description:"Thanos has got all the stones. This will be quite catastrophic.",createdon:"2021-11-15T13:12:15.000Z",modifiedon:"2021-11-15T13:12:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4455-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",bistech_direction:!1,subject:"In reference to: TEST-123",description:"Thanos has wiped out half of the internet.",createdon:"2021-11-17T11:11:15.000Z",modifiedon:"2021-11-17T11:11:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4466-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"eed5699c-4395-489e-853f-9e7a6d5ea0ea",bistech_direction:!0,subject:"In reference to: TEST-123",description:"The server is performing at quantum speeds.",createdon:"2021-12-11T14:13:15.000Z",modifiedon:"2021-12-11T14:13:15.000Z",_createdby_value:te.stephenstrange.contactid},{activityid:"2fbhdfd7b-4477-40c0-acf4-e15e8er032e1",_regardingobjectid_value:"3b5b1840-c978-476e-8697-149b16573f81",bistech_direction:!1,subject:"Time to change back to Banner, Hulk.",description:"The suns getting real low.",createdon:"2021-12-15T14:11:15.000Z",modifiedon:"2021-12-15T14:11:15.000Z",_createdby_value:te.stephenstrange.contactid}];var tt=(e=>(e[e.Low=1]="Low",e[e.Medium=2]="Medium",e[e.High=3]="High",e))(tt||{}),nt=(e=>(e[e.Low=1]="Low",e[e.Medium=2]="Medium",e[e.High=3]="High",e))(nt||{}),Gt=(e=>(e[e.Phone=1]="Phone",e[e.Email=2]="Email",e[e.Portal=3]="Portal",e[e.Event=4]="Event",e[e.Other=5]="Other",e))(Gt||{});const Hi=[{incidentid:"2fbc6d7b-6961-40c0-acf4-e15e8cb032e1",title:"Iron Man",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2008-09-07T07:48:00.000Z",ticketnumber:"CAS-1R0N-M4N-1",_primarycontactid_value:te.tonyStark.contactid,_bistech_createdbycontact_value:te.tonyStark.contactid,casetypecode:he.Incident,statuscode:ie.Open,prioritycode:xe["Priority 2"],bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"0ea9ee91-edc0-4dc2-898d-1e28bbafede5",title:"The Incredible Hulk",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.Low,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2008-06-13T16:45:00.000Z",_primarycontactid_value:te.bruceBanner.contactid,_bistech_createdbycontact_value:te.tonyStark.contactid,casetypecode:he.Incident,prioritycode:xe["Priority 3"],statuscode:ie.Open,ticketnumber:"CAS-HULK-1",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"5a5700b2-1a7f-4b0f-b5bb-d422237c5a03",title:"Iron Man 2",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.Low,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2010-05-07T19:12:00.000Z",_primarycontactid_value:te.tonyStark.contactid,_bistech_createdbycontact_value:null,casetypecode:he["Support Request"],prioritycode:xe["Priority 3"],statuscode:ie["Closure Requested"],ticketnumber:"CAS-1R0N-M4N-2",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"77c612c2-6170-4a30-80b5-bd5ee3a9bf16",title:"Thor",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2011-05-06T10:02:00.000Z",_primarycontactid_value:te.thor.contactid,_bistech_createdbycontact_value:null,casetypecode:he["Major Incident"],prioritycode:xe["Priority 2"],statuscode:ie["Pending Feedback"],ticketnumber:"CAS-TH0R-1",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"4f4ee320-9a50-438e-bf24-ffd786afc397",title:"Captain America",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.Low,severitycode:nt.Low,_customerid_value:Re[0].accountid,createdon:"2011-07-22T14:53:00.000Z",_primarycontactid_value:te.steveRogers.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Problem,prioritycode:xe["Priority 4"],statuscode:ie["On Hold"],ticketnumber:"CAS-F1R5T-4V3NG3R",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"1b26b94d-737b-451b-b89d-725bd25ff02e",title:"Avengers Assemble",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2012-05-04T18:51:00.000Z",_primarycontactid_value:te.nickFury.contactid,_bistech_createdbycontact_value:te.nickFury.contactid,casetypecode:he.Problem,prioritycode:xe["Priority 2"],statuscode:ie.Open,ticketnumber:"CAS-4553MBL3",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"3d6c7411-1622-48f3-bd0b-509d6a39a562",title:"Iron Man 3",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2013-06-03T09:19:00.000Z",_primarycontactid_value:te.tonyStark.contactid,_bistech_createdbycontact_value:te.tonyStark.contactid,casetypecode:he.Problem,prioritycode:xe["Priority 2"],statuscode:ie.Open,ticketnumber:"CAS-1R0N-M4N-3",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"d437dde0-c79d-41c6-b719-e2378269dc7b",title:"Thor: The Dark World",bistech_customerreference:"",description:"",caseorigincode:Gt.Phone,bistech_urgency:tt.Low,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2013-11-08T16:34:00.000Z",_primarycontactid_value:te.thor.contactid,_bistech_createdbycontact_value:null,casetypecode:he["Support Request"],prioritycode:xe["Priority 3"],statuscode:ie["In Progress"],ticketnumber:"CAS-D4RK-W0RLD",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"50990913-8ecf-4d6f-b806-b01278c68369",title:"Captain America: The Winter Soldier",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2014-04-04T06:49:00.000Z",_primarycontactid_value:te.steveRogers.contactid,_bistech_createdbycontact_value:te.steveRogers.contactid,casetypecode:he.Change,prioritycode:xe["Priority 2"],statuscode:ie["In Progress"],ticketnumber:"CAS-50LD13R",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"3f9df6ef-43ae-44da-b3aa-6876c6e68657",title:"Guardians of the Galaxy",bistech_customerreference:"",description:"",caseorigincode:Gt.Phone,bistech_urgency:tt.Low,severitycode:nt.Low,_customerid_value:Re[0].accountid,createdon:"2014-08-01T16:37:00.000Z",_primarycontactid_value:te.peterQuill.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Problem,prioritycode:xe["Priority 4"],statuscode:ie.Open,ticketnumber:"CAS-V0LUM3-1",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"e41f0c8c-108e-4f3e-964c-273361425f48",title:"Avengers: Age of Ultron",bistech_customerreference:"",description:"",caseorigincode:Gt.Event,bistech_urgency:tt.High,severitycode:nt.High,_customerid_value:Re[0].accountid,createdon:"2015-05-01T14:51:00.000Z",_primarycontactid_value:te.nickFury.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Incident,prioritycode:xe["Priority 1"],statuscode:ie.Resolved,ticketnumber:"CAS-4G3-0F-ULTR0N",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"585d45bc-34bb-4537-9ef7-ed66d69e54cb",title:"Ant-Man",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.High,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2015-07-17T12:03:00.000Z",_primarycontactid_value:te.scottLang.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Incident,prioritycode:xe["Priority 2"],statuscode:ie["Pending Feedback"],ticketnumber:"CAS-4NT-M4N-1",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"e5367559-36f0-4494-87bd-6cb8249c8d2c",title:"Captain America: Civil War",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.Low,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2016-05-06T17:39:00.000Z",_primarycontactid_value:te.steveRogers.contactid,_bistech_createdbycontact_value:te.steveRogers.contactid,casetypecode:he.Incident,prioritycode:xe["Priority 3"],statuscode:ie.Open,ticketnumber:"CAS-C1V1L-W4R",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"c083ad34-69b2-4603-9358-522e56b3da29",title:"Doctor Strange",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.Medium,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2016-11-04T17:39:00.000Z",_primarycontactid_value:te.stephenstrange.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Incident,prioritycode:xe["Priority 2"],statuscode:ie["On Hold"],ticketnumber:"CAS-K4M4R-T4J",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"77e4a7a4-7037-41ed-8e8f-8a218fafb9a4",title:"Guardians of the Galaxy Vol. 2",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.Medium,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2017-06-05T11:48:00.000Z",_primarycontactid_value:te.peterQuill.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Problem,prioritycode:xe["Priority 2"],statuscode:ie.Closed,ticketnumber:"CAS-V0LUM3-2",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"aa1313df-0590-46ae-ab9a-61c7d1a17b06",title:"Spider-Man: Homecoming",bistech_customerreference:"",description:"",caseorigincode:Gt.Email,bistech_urgency:tt.Low,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2017-07-07T12:20:00.000Z",_primarycontactid_value:te.peterParker.contactid,_bistech_createdbycontact_value:null,casetypecode:he.Incident,prioritycode:xe["Priority 3"],statuscode:ie["In Progress"],ticketnumber:"CAS-H0M3C0M1NG",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"c348955f-ad48-43c3-88ab-423ff2bb8e28",title:"Thor: Ragnarok",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.Low,severitycode:nt.Low,_customerid_value:Re[0].accountid,createdon:"2017-11-03T09:54:00.000Z",_primarycontactid_value:te.thor.contactid,_bistech_createdbycontact_value:te.thor.contactid,casetypecode:he.Incident,prioritycode:xe["Priority 4"],statuscode:ie["Closure Requested"],ticketnumber:"CAS-R4GN4R0K",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"864e4f6f-fac6-45b1-b720-b52153259fe3",title:"Black Panther",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.High,_customerid_value:Re[0].accountid,createdon:"2018-02-16T15:29:00.000Z",_primarycontactid_value:te.tchalla.contactid,_bistech_createdbycontact_value:te.tchalla.contactid,casetypecode:he.Incident,prioritycode:xe["Priority 1"],statuscode:ie.Closed,ticketnumber:"CAS-W4K4ND4",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"3b5b1840-c978-476e-8697-149b16573f81",title:"Avengers: Infinity War",bistech_customerreference:"",description:"",caseorigincode:Gt.Portal,bistech_urgency:tt.High,severitycode:nt.High,_customerid_value:Re[0].accountid,createdon:"2018-04-27T12:33:00.000Z",_primarycontactid_value:te.nickFury.contactid,_bistech_createdbycontact_value:te.nickFury.contactid,casetypecode:he["Major Incident"],prioritycode:xe["Priority 1"],statuscode:ie["In Progress"],ticketnumber:"CAS-G4NTL3T",bistech_resolutiondate:null,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]},{incidentid:"eed5699c-4395-489e-853f-9e7a6d5ea0ea",title:"Ant-Man and the Wasp",bistech_customerreference:"",description:"Marvel Reference",caseorigincode:Gt.Portal,bistech_urgency:tt.Medium,severitycode:nt.Medium,_customerid_value:Re[0].accountid,createdon:"2018-07-06T19:18:00.000Z",_primarycontactid_value:te.scottLang.contactid,_bistech_createdbycontact_value:te.scottLang.contactid,casetypecode:he["Major Incident"],prioritycode:xe["Priority 2"],statuscode:ie.Resolved,ticketnumber:"CAS-TTH3-W4SP",bistech_resolutiondate:new Date,incident_adx_portalcomments:[],incident_bistech_majorincidentupdates:[],incident_bistech_portalemails:[]}],o1=[{productid:"a4b1348b-e132-4b1c-827c-ded137104edb",bistech_tiletargeturl:"https://account.meraki.com/login/dashboard_login",bistech_portaltilemapping:Ge.Meraki},{productid:"064d5ab4-391f-4043-8cbd-ff662f9a834b",bistech_tiletargeturl:"https://login.mimecast.com/u/login/?gta=apps#/login",bistech_portaltilemapping:Ge.Mimecast},{productid:"147d1482-a8c8-40af-a851-5a8d341ab857",bistech_tiletargeturl:"https://utm.bistech.co.uk/login?redir=%2Fng",bistech_portaltilemapping:Ge.FortiGate},{productid:"082c9cae-01fb-4c56-924d-6519841f33ac",bistech_tiletargeturl:"https://csp.bistech.co.uk",bistech_portaltilemapping:Ge.MicrosoftLicensing}];var Gi=(e=>(e[e.Active=0]="Active",e[e.Submitted=1]="Submitted",e[e.Canceled=2]="Canceled",e[e.Fulfilled=3]="Fulfilled",e[e.Invoiced=4]="Invoiced",e))(Gi||{}),vt=(e=>(e[e.New=1]="New",e[e.Pending=2]="Pending",e[e["On Hold"]=69097e4]="On Hold",e[e.Signed=690970001]="Signed",e[e.Processing=690970002]="Processing",e[e["Pending Contract Review"]=690970004]="Pending Contract Review",e[e["In Progress"]=690970005]="In Progress",e[e["Processing Complete"]=690970006]="Processing Complete",e[e["In Progress*"]=3]="In Progress*",e[e.Complete=100001]="Complete",e[e.Partial=100002]="Partial",e[e.Invoiced=100003]="Invoiced",e[e.Cancelled=690970003]="Cancelled",e[e.Revised=100004]="Revised",e[e.NoMoney=4]="NoMoney",e))(vt||{});const Ua="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jEcSKiDoqjAH4UAOooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqK6uoLO2e5uZVihjGWdjgCgCWivONQ8S6x4pvH0zw5E8Vt0ef7rEepP8I9up/Suz8OaVJo2kR2c101zICWZ2J6nsM9hQB5V4igW68fXNu5ISW7VCR1AJAr0QeA/DgtzF9iYnH+sMrbvr1x+lcBrH/JSH/6/k/9CFeyUAeJqkvhfxssaSMfs1wBnu0Z9fqpp/iZxd+OrlL+Vo4ftKxu/wDcjBAyPw5p3jUi68c3ixnO6SOPI9Qqg/qK77xL4JstduTeJM1rdMAGdV3K+OmRxz+NAC23hPwjcwKlvbwzjH3kuGYn3yGqLVtCs9C8GaxDZeZ5cqmQh2zg8Dj8q5HWfAOo6TYy30d3DPHAN7BcqwA7j/8AXU2i63eX/g7XLC8mabyIA0bucsATggnv2xQBb+E3/Hzqf+5H/Nq77VNLstXsza30IliJDAZwQR3BHSuB+E3/AB86n/uR/wA2rtfEuky61pD2cN01tLkMrjOCR2OOxoAzf+EB8Of8+kn/AH+b/Gj/AIQHw5/z6Sf9/m/xrA07xPq/he8XTPEkTywdEn+8wHqD/EP1H6V6DbXEN3bpcW8qyxOMq6nIIoA53/hAfDn/AD6Sf9/m/wAaP+EB8Of8+kn/AH+b/GunooA5j/hAfDn/AD6Sf9/m/wAaP+EB8Of8+kn/AH+b/Gunqpquow6Tps1/cK7RQgFhGAWOSBxkj1oAw/8AhAfDn/PpJ/3+b/Gj/hAfDn/PpJ/3+b/Gp9Q8XWFm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UuJXkiZBGFzxkjqc44oA6GsfSz9t1i/1BuVib7LD7BeWP4sf0rYrJ8Lwyw6FCJ43jmdnd1dSDksTyD7YoATWfI03w9PBbxhfMVooox/E754H4kmtCwgNrp9tbE5MUSx5+gArAe9eXXXuLvT78w2pKWyJbOwJ7yH+Q9q6K3mE8CShJEDDO2RSrD6g9KAJKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK57xvrR0XQJGibbcznyoiOoz1b8B+uK6GvOddH/CSfEa20v71rZ/6wduPmf8+FoA3PAGhDSdFFzMuLu7Ads9VX+Ff6n6+1dVQBgYFFAEdzcQ2ltJcTyCOKNSzMegArx7xV4vvNcneGB3gsAcLEDguPVvX6dK6b4p6q8VtbaVE2PO/ey47qD8o/PJ/AVzPgbw6mvaozXIP2O3AaQDjeT0X9D+VAGbpXh7VtXG6xspJI+nmHCr+ZwKu3XgnxFaxGVtPMijr5Tq5/IHJ/CvaIo0hjWOJFRFGFVRgAewp1AHgOnajf6Ne+faTPBMpww7H2Yd/wAa9MT4g2B8OG/ZP9NB8v7MD1fHX/d9/wAKXx/4Zh1DTpdTtogt7Au9io/1qDrn3A6flXktAF7VNVv9avPPvJmmkJwqjovso7Vp2ngrxDdxCVNPaNT0811Q/kTmu0+HvhmGz0+LVrqINdzjdFuH+rQ9CPcjnPp+NdtQB4TqvhzWNITzL2xeOP8A56KQy/mM4/GtHwp4vu9CmSGZnn08nDRE5Ke6+n06H9a9kdEkRkdQyMMFWGQRXj/j3w5HomopParizuclV/uMOq/Tnj/61AHrttPFdW8dxA4eKRQysOhBqSuB+FmqNNZ3OlyNnyCJIs/3T1H58/8AAq76gDlPiDoQ1TRjeQr/AKXZ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FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFBAIweRRRQAigKoVQABwAO1LRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTZI0lQpIiup6hhkGnUUAVF0rTUfemn2qt6iFQf5VbAAAAGAKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuf8baL/bWgSJEm65g/ew+pI6r+I/XFdBRQBynw+1wapootJnzdWYCNnqyfwn+n4e9dXXnHiexufCniGPxFpiZtpWxNGOgJ6g+zdR6H8K7zStStdW0+K9tH3RSDp3U9wfcUAW6KKKACvIPiFoP9lax9rgTFrdksMdFf+If1H/1q9frN8Q6RFrejz2MmAzDdG5/gcdD/AJ7E0Aee+E/HZ0u1j0/Uonlto+I5E5ZB6EdxXWv4+8OLDvF3I7f881hbd+ox+teP3MEtrcSW86FJY2KMp7EVoHw9qw0z+0vsh+x7N/m71xj8/wBKAL3i7xRL4iukCxmG0hz5cZPJP94+/wDKrnw80H+1NX+2zpm1tCG56M/Yfh1/L1rlra3lu7mK2gQvLKwRFHcmvddA0mLRNIgsYsEoMuw/jc9T/ntigDRooooAKKKp6tqdtpGny3t2+2NB0HVj2A9zQBz3xD1waboxsoW/0q8BQAdVT+I/j0/E+lX/AAZov9iaBFFIuLmb97N6gnt+A4/OuX8K6fdeKPEEniTU1/cRv+5jPQkdAPZf1P416NQAVmeItYTQtIkvnj81gQqR5xuY9B/X8K065/xtpt1qfh9o7NN88UizKn97Hb8jQBW/tbxRbafc32oabZQRRQPIAHJbcBwCM1Faa54l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ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqnqepQ6dAHk+Zm4VB1Nc4/ie+Z8okSr6bc/1q4wctjmq4qnSfLJ6nX0Vhad4kiuHEV0ghc9GB+U/4Vu9alxa3NadWFVXgwooopGgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABQTjk0jusaF3YKqjJJ7VyWt6611ut7UlYehbu//ANaqjFyMK9eNGN5GtceI7GGfyxvkAOCyAYrTtriK6gWaF9yN0Nec12XheCWHTWaQECR9yg+mBzWk4KKuceFxdSrU5ZLQwfEVw0+rSqT8sfyAfT/6+azVRnztUtgZOB0FWtW/5Ct1/wBdW/nV3wrg6sQRn9239K1+GJ57j7Wu03uzGrf0PXTblba6YmHor90/+tUuuaFt3XVmvHV4x29xXN0tJobVTC1P61PSlIZQykEHkEd6WuO0TW3smEE5L25/NK6+ORJY1kjYMjDII6GueUXE9qhiI1o3W46iiipOgKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKjnnitoWlmcIi9SajvbyGygMszYHYdyfQVxeqanNqM2XO2MfdQdBWkIORyYnFRoq27JtY1iXUH8tMpbg8L/AHvc1lgEnApyI0jh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ZW5kb2JqCjE4IDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDMxMy45MjAwMSAwLjAgMzE1Ljg0IF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiAxNyAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjE5IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjIwIDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjIxIDAgb2JqCjw8Ci9DMCBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjIyIDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjMwNzY5IDAuMzA3NjkgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgMTkgMCBSIDIwIDAgUiAyMSAwIFIgXQo+PgplbmRvYmoKMjMgMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgMzQyLjA3OTk5IDAuMCAzNDQuMTYgXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDIyIDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKMjQgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKMjUgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKMjYgMCBvYmoKPDwKL0MwIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKMjcgMCBvYmoKPDwKL0JvdW5kcyBbIDAuMzMzMzMgMC4zMzMzMyBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyAyNCAwIFIgMjUgMCBSIDI2IDAgUiBdCj4+CmVuZG9iagoyOCAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCAzNzAuMzk5OTkgMC4wIDM3Mi4zMjAwMSBdCi9FeHRlbmQgWyB0cnVlIHRydWUgXQovRnVuY3Rpb24gMjcgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iagoyOSAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iagozMCAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iagozMSAwIG9iago8PAovQzAgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iagozMiAwIG9iago8PAovQm91bmRzIFsgMC4zMzMzMyAwLjMzMzMzIF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRW5jb2RlIFsgMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDMKL0Z1bmN0aW9ucyBbIDI5IDAgUiAzMCAwIFIgMzEgMCBSIF0KPj4KZW5kb2JqCjMzIDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDM5OC43MiAwLjAgNDAwLjY0MDAxIF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiAzMiAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjM0IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjM1IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjM2IDAgb2JqCjw8Ci9DMCBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjM3IDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjMzMzMzIDAuMzMzMzMgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgMzQgMCBSIDM1IDAgUiAzNiAwIFIgXQo+PgplbmRvYmoKMzggMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgNTA2LjM5OTk5IDAuMCA1MDguMzIwMDEgXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDM3IDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKMzkgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNDAgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNDEgMCBvYmoKPDwKL0MwIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNDIgMCBvYmoKPDwKL0JvdW5kcyBbIDAuMjUgMC4yNSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyAzOSAwIFIgNDAgMCBSIDQxIDAgUiBdCj4+CmVuZG9iago0MyAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCA1MjQuNjQwMDEgMC4wIDUyNi41NiBdCi9FeHRlbmQgWyB0cnVlIHRydWUgXQovRnVuY3Rpb24gNDIgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iago0NCAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago0NSAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago0NiAwIG9iago8PAovQzAgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago0NyAwIG9iago8PAovQm91bmRzIFsgMC4zMDc2OSAwLjMwNzY5IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRW5jb2RlIFsgMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDMKL0Z1bmN0aW9ucyBbIDQ0IDAgUiA0NSAwIFIgNDYgMCBSIF0KPj4KZW5kb2JqCjQ4IDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDU0Mi44OCAwLjAgNTQ0Ljk2MDAyIF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiA0NyAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjQ5IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjUwIDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjUxIDAgb2JqCjw8Ci9DMCBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjUyIDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjMzMzMzIDAuMzMzMzMgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgNDkgMCBSIDUwIDAgUiA1MSAwIFIgXQo+PgplbmRvYmoKNTMgMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgNTYxLjEyIDAuMCA1NjMuMDM5OTggXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDUyIDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKNTQgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNTUgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNTYgMCBvYmoKPDwKL0MwIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNTcgMCBvYmoKPDwKL0JvdW5kcyBbIDAuMjY2NjcgMC4yNjY2NyBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyA1NCAwIFIgNTUgMCBSIDU2IDAgUiBdCj4+CmVuZG9iago1OCAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCA4ODcuNTIwMDIgMC4wIDg4OS45MTk5OCBdCi9FeHRlbmQgWyB0cnVlIHRydWUgXQovRnVuY3Rpb24gNTcgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iago1OSAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago2MCAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago2MSAwIG9iago8PAovQzAgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago2MiAwIG9iago8PAovQm91bmRzIFsgMC4yNjY2NyAwLjI2NjY3IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRW5jb2RlIFsgMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDMKL0Z1bmN0aW9ucyBbIDU5IDAgUiA2MCAwIFIgNjEgMCBSIF0KPj4KZW5kb2JqCjYzIDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDg4Ny41MjAwMiAwLjAgODg5LjkxOTk4IF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiA2MiAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjY0IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjY1IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjY2IDAgb2JqCjw8Ci9DMCBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjY3IDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjI2NjY3IDAuMjY2NjcgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgNjQgMCBSIDY1IDAgUiA2NiAwIFIgXQo+PgplbmRvYmoKNjggMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgOTE0LjQwMDAyIDAuMCA5MTYuNzk5OTkgXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDY3IDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKNjkgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNzAgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNzEgMCBvYmoKPDwKL0MwIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovQzEgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKNzIgMCBvYmoKPDwKL0JvdW5kcyBbIDAuMjY2NjcgMC4yNjY2NyBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyA2OSAwIFIgNzAgMCBSIDcxIDAgUiBdCj4+CmVuZG9iago3MyAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCA5MTQuNDAwMDIgMC4wIDkxNi43OTk5OSBdCi9FeHRlbmQgWyB0cnVlIHRydWUgXQovRnVuY3Rpb24gNzIgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iago3NCAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago3NSAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago3NiAwIG9iago8PAovQzAgWyAwLjgzMTM3IDAuOTcyNTUgMC45NzI1NSBdCi9DMSBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago3NyAwIG9iago8PAovQm91bmRzIFsgMC4yNjY2NyAwLjI2NjY3IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRW5jb2RlIFsgMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDMKL0Z1bmN0aW9ucyBbIDc0IDAgUiA3NSAwIFIgNzYgMCBSIF0KPj4KZW5kb2JqCjc4IDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDkxNC40MDAwMiAwLjAgOTE2Ljc5OTk5IF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiA3NyAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjc5IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjgwIDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjgxIDAgb2JqCjw8Ci9DMCBbIDAuODMxMzcgMC45NzI1NSAwLjk3MjU1IF0KL0MxIFsgMC44MzEzNyAwLjk3MjU1IDAuOTcyNTUgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjgyIDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjI2NjY3IDAuMjY2NjcgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgNzkgMCBSIDgwIDAgUiA4MSAwIFIgXQo+PgplbmRvYmoKODMgMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgOTE0LjQwMDAyIDAuMCA5MTYuNzk5OTkgXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDgyIDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKODQgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKODUgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjAgMC4wIDAuMCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKODYgMCBvYmoKPDwKL0MwIFsgMC4wIDAuMCAwLjAgXQovQzEgWyAwLjAgMC4wIDAuMCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKODcgMCBvYmoKPDwKL0JvdW5kcyBbIDAuOTc3NzggMC45Nzc3OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyA4NCAwIFIgODUgMCBSIDg2IDAgUiBdCj4+CmVuZG9iago4OCAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCA5NDcuMjAwMDEgMC4wIDk3Ni4wIF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiA4NyAwIFIKL1NoYWRpbmdUeXBlIDIKPj4KL1R5cGUgL1BhdHRlcm4KPj4KZW5kb2JqCjg5IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjkwIDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC4wIDAuMCAwLjAgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjkxIDAgb2JqCjw8Ci9DMCBbIDAuMCAwLjAgMC4wIF0KL0MxIFsgMC4wIDAuMCAwLjAgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjkyIDAgb2JqCjw8Ci9Cb3VuZHMgWyAwLjk3Nzc4IDAuOTc3NzggXQovRG9tYWluIFsgMC4wIDEuMCBdCi9FbmNvZGUgWyAwLjAgMS4wIDAuMCAxLjAgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMwovRnVuY3Rpb25zIFsgODkgMCBSIDkwIDAgUiA5MSAwIFIgXQo+PgplbmRvYmoKOTMgMCBvYmoKPDwKL01hdHJpeCBbIDAuNzUgMC4wIDAuMCAtMC43NSAwLjAgNzkyLjAgXQovUGF0dGVyblR5cGUgMgovU2hhZGluZyA8PAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9Db29yZHMgWyAwLjAgOTQ3LjIwMDAxIDAuMCA5NzYuMCBdCi9FeHRlbmQgWyB0cnVlIHRydWUgXQovRnVuY3Rpb24gOTIgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iago5NCAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago5NSAwIG9iago8PAovQzAgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9DMSBbIDAuMCAwLjAgMC4wIF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago5NiAwIG9iago8PAovQzAgWyAwLjAgMC4wIDAuMCBdCi9DMSBbIDAuMCAwLjAgMC4wIF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iago5NyAwIG9iago8PAovQm91bmRzIFsgMC45Nzc3OCAwLjk3Nzc4IF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRW5jb2RlIFsgMC4wIDEuMCAwLjAgMS4wIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDMKL0Z1bmN0aW9ucyBbIDk0IDAgUiA5NSAwIFIgOTYgMCBSIF0KPj4KZW5kb2JqCjk4IDAgb2JqCjw8Ci9NYXRyaXggWyAwLjc1IDAuMCAwLjAgLTAuNzUgMC4wIDc5Mi4wIF0KL1BhdHRlcm5UeXBlIDIKL1NoYWRpbmcgPDwKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovQ29vcmRzIFsgMC4wIDk0Ny4yMDAwMSAwLjAgOTc2LjAgXQovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0KL0Z1bmN0aW9uIDk3IDAgUgovU2hhZGluZ1R5cGUgMgo+PgovVHlwZSAvUGF0dGVybgo+PgplbmRvYmoKOTkgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKMTAwIDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC4wIDAuMCAwLjAgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjEwMSAwIG9iago8PAovQzAgWyAwLjAgMC4wIDAuMCBdCi9DMSBbIDAuMCAwLjAgMC4wIF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iagoxMDIgMCBvYmoKPDwKL0JvdW5kcyBbIDAuOTc3NzggMC45Nzc3OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0VuY29kZSBbIDAuMCAxLjAgMC4wIDEuMCAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAzCi9GdW5jdGlvbnMgWyA5OSAwIFIgMTAwIDAgUiAxMDEgMCBSIF0KPj4KZW5kb2JqCjEwMyAwIG9iago8PAovTWF0cml4IFsgMC43NSAwLjAgMC4wIC0wLjc1IDAuMCA3OTIuMCBdCi9QYXR0ZXJuVHlwZSAyCi9TaGFkaW5nIDw8Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0Nvb3JkcyBbIDAuMCA5NDcuMjAwMDEgMC4wIDk3Ni4wIF0KL0V4dGVuZCBbIHRydWUgdHJ1ZSBdCi9GdW5jdGlvbiAxMDIgMCBSCi9TaGFkaW5nVHlwZSAyCj4+Ci9UeXBlIC9QYXR0ZXJuCj4+CmVuZG9iagoxMDQgMCBvYmoKPDwKL0MwIFsgMC42NTA5OCAwLjY1MDk4IDAuNjUwOTggXQovQzEgWyAwLjY1MDk4IDAuNjUwOTggMC42NTA5OCBdCi9Eb21haW4gWyAwLjAgMS4wIF0KL0Z1bmN0aW9uVHlwZSAyCi9OIDEuMAo+PgplbmRvYmoKMTA1IDAgb2JqCjw8Ci9DMCBbIDAuNjUwOTggMC42NTA5OCAwLjY1MDk4IF0KL0MxIFsgMC4wIDAuMCAwLjAgXQovRG9tYWluIFsgMC4wIDEuMCBdCi9GdW5jdGlvblR5cGUgMgovTiAxLjAKPj4KZW5kb2JqCjEwNiAwIG9iago8PAovQzAgWyAwLjAgMC4wIDAuMCBdCi9DMSBbIDAuMCAwLjAgMC4wIF0KL0RvbWFpbiBbIDAuMCAxLjAgXQovRnVuY3Rpb25UeXBlIDIKL04gMS4wCj4+CmVuZG9iagox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TWVkaWFCb3ggWyAwLjAgMC4wIDYxMi4wIDc5Mi4wIF0KL1BhcmVudCAyIDAgUgovUmVzb3VyY2VzIDExMCAwIFIKL1JvdGF0ZSAwCi9UeXBlIC9QYWdlCj4+CmVuZG9iagoxMCAwIG9iago8PAovTGVuZ3RoIDEyNDkKPj4Kc3RyZWFtCi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbiAxMiBkaWN0IGJlZ2luIGJlZ2luY21hcCAvQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKFVDUykgL1N1cHBsZW1lbnQgMCA+PiBkZWYgL0NNYXBOYW1lIC9BZG9iZS1JZGVudGl0eS1VQ1MgZGVmIC9DTWFwVHlwZSAyIGRlZiAxIGJlZ2luY29kZXNwYWNlcmFuZ2UgPDAwMDA+IDxGRkZGPiBlbmRjb2Rlc3BhY2VyYW5nZSA2NiBiZWdpbmJmY2hhciA8MDAwMz4gPDAwMjA+IDwwMDA5PiA8MDAyNj4gPDAwMEI+IDwwMDI4PiA8MDAwQz4gPDAwMjk+IDwwMDBGPiA8MDAyQz4gPDAwMTA+IDwwMDJEPiA8MDAxMT4gPDAwMkU+IDwwMDEyPiA8MDAyRj4gPDAwMTM+IDwwMDMwPiA8MDAxND4gPDAwMzE+IDwwMDE1PiA8MDAzMj4gPDAwMTY+IDwwMDMzPiA8MDAxOD4gPDAwMzU+IDwwMDFCPiA8MDAzOD4gPDAwMUM+IDwwMDM5PiA8MDAxRT4gPDAwM0I+IDwwMDFGPiA8MDAzQz4gPDAwMjA+IDwwMDNEPiA8MDAyMT4gPDAwM0U+IDwwMDI0PiA8MDA0MT4gPDAwMjU+IDwwMDQyPiA8MDAyNj4gPDAwNDM+IDwwMDI3PiA8MDA0ND4gPDAwMjg+IDwwMDQ1PiA8MDAyOT4gPDAwNDY+IDwwMDJBPiA8MDA0Nz4gPDAwMkI+IDwwMDQ4PiA8MDAyQz4gPDAwNDk+IDwwMDJEPiA8MDA0QT4gPDAwMkY+IDwwMDRDPiA8MDAzMD4gPDAwNEQ+IDwwMDMxPiA8MDA0RT4gPDAwMzI+IDwwMDRGPiA8MDAzMz4gPDAwNTA+IDwwMDM1PiA8MDA1Mj4gPDAwMzY+IDwwMDUzPiA8MDAzNz4gPDAwNTQ+IDwwMDM5PiA8MDA1Nj4gPDAwNDI+IDwwMDVGPiA8MDA0ND4gPDAwNjE+IDwwMDQ1PiA8MDA2Mj4gPDAwNDY+IDwwMDYzPiA8MDA0Nz4gPDAwNjQ+IDwwMDQ4PiA8MDA2NT4gPDAwNDk+IDwwMDY2PiA8MDA0QT4gPDAwNjc+IDwwMDRCPiA8MDA2OD4gPDAwNEM+IDwwMDY5PiA8MDA0RT4gPDAwNkI+IDwwMDRGPiA8MDA2Qz4gPDAwNTA+IDwwMDZEPiA8MDA1MT4gPDAwNkU+IDwwMDUyPiA8MDA2Rj4gPDAwNTM+IDwwMDcwPiA8MDA1ND4gPDAwNzE+IDwwMDU1PiA8MDA3Mj4gPDAwNTY+IDwwMDczPiA8MDA1Nz4gPDAwNzQ+IDwwMDU4PiA8MDA3NT4gPDAwNTk+IDwwMDc2PiA8MDA1QT4gPDAwNzc+IDwwMDVCPiA8MDA3OD4gPDAwNUM+IDwwMDc5PiA8MDBCMT4gPDIwMTM+IDwwMEI0PiA8MjAxRD4gPDAwQjY+IDwyMDE5PiBlbmRiZmNoYXIgZW5kY21hcCBDTWFwTmFtZSBjdXJyZW50ZGljdCAvQ01hcCBkZWZpbmVyZXNvdXJjZSBwb3AgZW5kIGVuZCAKZW5kc3RyZWFtCmVuZG9iago5IDAgb2JqClsgMyAzIDI2NSA5IDkgNjY2IDExIDExIDMzMyAxMiAxMiAzMzMgMTUgMTUgMjc3IDE2IDE2IDMzMyAxNyAxNyAyNzcgMTggMTggMjc3IDE5IDE5IDU1NiAyMCAyMCA1NTYgMjEgMjEgNTU2IDIyIDIyIDU1NiAyNCAyNCA1NTYgMjcgMjcgNTU2IDI4IDI4IDU1NiAzMCAzMCAyNzcgMzEgMzEgNTgzIDMyIDMyIDU4MyAzMyAzMyA1ODMgMzYgMzYgNjY2IDM3IDM3IDY2NiAzOCAzOCA3MjIgMzkgMzkgNzIyIDQwIDQwIDY2NiA0MSA0MSA2MTAgNDIgNDIgNzc3IDQzIDQzIDcyMiA0NCA0NCAyNzcgNDUgNDUgNTAwIDQ3IDQ3IDU1NiA0OCA0OCA4MzMgNDkgNDkgNzIyIDUwIDUwIDc3NyA1MSA1MSA2NjYgNTMgNTMgNzIyIDU0IDU0IDY2NiA1NSA1NSA2MTAgNTcgNTcgNjY2IDY2IDY2IDU1MSA2OCA2OCA1NTYgNjkgNjkgNTU2IDcwIDcwIDUwMCA3MSA3MSA1NTYgNzIgNzIgNTU2IDczIDczIDI3NyA3NCA3NCA1NTYgNzUgNzUgNTU2IDc2IDc2IDIyOCA3OCA3OCA1MDAgNzkgNzkgMjI4IDgwIDgwIDgzMyA4MSA4MSA1NTYgODIgODIgNTU2IDgzIDgzIDU1NiA4NCA4NCA1NTYgODUgODUgMzMzIDg2IDg2IDUwMCA4NyA4NyAyNzcgODggODggNTU2IDg5IDg5IDUwMCA5MCA5MCA3MjIgOTEgOTEgNTAwIDkyIDkyIDUwMCAxNzcgMTc3IDI5MiAxODAgMTgwIDMzMyAxODIgMTgyIDIyMiBdCmVuZG9iago2IDAgb2JqClsgLTgzMyAtMjA5IDgzMyA5MjEgXQplbmRvYmoKNyAwIG9iago4MzMKZW5kb2JqCjIgMCBvYmoKPDwKL0NvdW50IDEKL0tpZHMgWyAzIDAgUiBdCi9UeXBlIC9QYWdlcwo+PgplbmRvYmoKMSAwIG9iago8PAovUGFnZXMgMiAwIFIKL1R5cGUgL0NhdGFsb2cKPj4KZW5kb2JqCjExMSAwIG9iago8PAovQXV0aG9yIChSQ2FtcGJlbGwpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyMzA5MTgxMTE1MTMrMDEnMDAnKQovTW9kRGF0ZSAoRDoyMDIzMDkxODExMTUxMyswMScwMCcpCi9Qcm9kdWNlciAoTWljcm9zb2Z0OiBQcmludCBUbyBQREYpCi9UaXRsZSAoTWljcm9zb2Z0IFdvcmQgLSBCQzAxYSBDb250cmFjdC5kb2N4KQo+PgplbmRvYmoKeHJlZgowIDExMg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMTY3Nzk1IDAwMDAwIG4NCjAwMDAxNjc3MzYgMDAwMDAgbg0KMDAwMDE2NTUzMiAwMDAwMCBuDQowMDAwMDAwMDA5IDAwMDAwIG4NCjAwMDAwMDAwMzUgMDAwMDAgbg0KMDAwMDE2NzY4MCAwMDAwMCBuDQowMDAwMTY3NzE3IDAwMDAwIG4NCjAwMDAwMDAwNTggMDAwMDAgbg0KMDAwMDE2Njk5OSAwMDAwMCBuDQowMDAwMTY1Njk3IDAwMDAwIG4NCjAwMDAwNjg4MjcgMDAwMDAgbg0KMDAwMDA2OTI5OSAwMDAwMCBuDQowMDAwMTI2OTYxIDAwMDAwIG4NCjAwMDAxMzk4NjcgMDAwMDAgbg0KMDAwMDEzOTk5NiAwMDAwMCBuDQowMDAwMTQwMTI1IDAwMDAwIG4NCjAwMDAxNDAyNTQgMDAwMDAgbg0KMDAwMDE0MDQwNiAwMDAwMCBuDQowMDAwMTQwNjI4IDAwMDAwIG4NCjAwMDAxNDA3NTcgMDAwMDAgbg0KMDAwMDE0MDg4NiAwMDAwMCBuDQowMDAwMTQxMDE1IDAwMDAwIG4NCjAwMDAxNDExNzMgMDAwMDAgbg0KMDAwMDE0MTM5NSAwMDAwMCBuDQowMDAwMTQxNTI0IDAwMDAwIG4NCjAwMDAxNDE2NTMgMDAwMDAgbg0KMDAwMDE0MTc4MiAwMDAwMCBuDQowMDAwMTQxOTQwIDAwMDAwIG4NCjAwMDAxNDIxNjUgMDAwMDAgbg0KMDAwMDE0MjI5NCAwMDAwMCBuDQowMDAwMTQyNDIzIDAwMDAwIG4NCjAwMDAxNDI1NTIgMDAwMDAgbg0KMDAwMDE0MjcxMCAwMDAwMCBuDQowMDAwMTQyOTMyIDAwMDAwIG4NCjAwMDAxNDMwNjEgMDAwMDAgbg0KMDAwMDE0MzE5MCAwMDAwMCBuDQowMDAwMTQzMzE5IDAwMDAwIG4NCjAwMDAxNDM0NzcgMDAwMDAgbg0KMDAwMDE0MzcwMiAwMDAwMCBuDQowMDAwMTQzODMxIDAwMDAwIG4NCjAwMDAxNDM5NjAgMDAwMDAgbg0KMDAwMDE0NDA4OSAwMDAwMCBuDQowMDAwMTQ0MjQxIDAwMDAwIG4NCjAwMDAxNDQ0NjMgMDAwMDAgbg0KMDAwMDE0NDU5MiAwMDAwMCBuDQowMDAwMTQ0NzIxIDAwMDAwIG4NCjAwMDAxNDQ4NTAgMDAwMDAgbg0KMDAwMDE0NTAwOCAwMDAwMCBuDQowMDAwMTQ1MjMwIDAwMDAwIG4NCjAwMDAxNDUzNTkgMDAwMDAgbg0KMDAwMDE0NTQ4OCAwMDAwMCBuDQowMDAwMTQ1NjE3IDAwMDAwIG4NCjAwMDAxNDU3NzUgMDAwMDAgbg0KMDAwMDE0NTk5NyAwMDAwMCBuDQowMDAwMTQ2MTI2IDAwMDAwIG4NCjAwMDAxNDYyNTUgMDAwMDAgbg0KMDAwMDE0NjM4NCAwMDAwMCBuDQowMDAwMTQ2NTQyIDAwMDAwIG4NCjAwMDAxNDY3NjcgMDAwMDAgbg0KMDAwMDE0Njg5NiAwMDAwMCBuDQowMDAwMTQ3MDI1IDAwMDAwIG4NCjAwMDAxNDcxNTQgMDAwMDAgbg0KMDAwMDE0NzMxMiAwMDAwMCBuDQowMDAwMTQ3NTM3IDAwMDAwIG4NCjAwMDAxNDc2NjYgMDAwMDAgbg0KMDAwMDE0Nzc5NSAwMDAwMCBuDQowMDAwMTQ3OTI0IDAwMDAwIG4NCjAwMDAxNDgwODIgMDAwMDAgbg0KMDAwMDE0ODMwNyAwMDAwMCBuDQowMDAwMTQ4NDM2IDAwMDAwIG4NCjAwMDAxNDg1NjUgMDAwMDAgbg0KMDAwMDE0ODY5NCAwMDAwMCBuDQowMDAwMTQ4ODUyIDAwMDAwIG4NCjAwMDAxNDkwNzcgMDAwMDAgbg0KMDAwMDE0OTIwNiAwMDAwMCBuDQowMDAwMTQ5MzM1IDAwMDAwIG4NCjAwMDAxNDk0NjQgMDAwMDAgbg0KMDAwMDE0OTYyMiAwMDAwMCBuDQowMDAwMTQ5ODQ3IDAwMDAwIG4NCjAwMDAxNDk5NzYgMDAwMDAgbg0KMDAwMDE1MDEwNSAwMDAwMCBuDQowMDAwMTUwMjM0IDAwMDAwIG4NCjAwMDAxNTAzOTIgMDAwMDAgbg0KMDAwMDE1MDYxNyAwMDAwMCBuDQowMDAwMTUwNzQ2IDAwMDAwIG4NCjAwMDAxNTA4NjMgMDAwMDAgbg0KMDAwMDE1MDk2OCAwMDAwMCBuDQowMDAwMTUxMTI2IDAwMDAwIG4NCjAwMDAxNTEzNDcgMDAwMDAgbg0KMDAwMDE1MTQ3NiAwMDAwMCBuDQowMDAwMTUxNTkzIDAwMDAwIG4NCjAwMDAxNTE2OTggMDAwMDAgbg0KMDAwMDE1MTg1NiAwMDAwMCBuDQowMDAwMTUyMDc3IDAwMDAwIG4NCjAwMDAxNTIyMDYgMDAwMDAgbg0KMDAwMDE1MjMyMyAwMDAwMCBuDQowMDAwMTUyNDI4IDAwMDAwIG4NCjAwMDAxNTI1ODYgMDAwMDAgbg0KMDAwMDE1MjgwNyAwMDAwMCBuDQowMDAwMTUyOTM2IDAwMDAwIG4NCjAwMDAxNTMwNTQgMDAwMDAgbg0KMDAwMDE1MzE2MCAwMDAwMCBuDQowMDAwMTUzMzIxIDAwMDAwIG4NCjAwMDAxNTM1NDQgMDAwMDAgbg0KMDAwMDE1MzY3NCAwMDAwMCBuDQowMDAwMTUzNzkyIDAwMDAwIG4NCjAwMDAxNTM4OTggMDAwMDAgbg0KMDAwMDE1NDA2MCAwMDAwMCBuDQowMDAwMTU0MjgzIDAwMDAwIG4NCjAwMDAxNjUwOTEgMDAwMDAgbg0KMDAwMDE2Nzg0NCAwMDAwMCBuDQp0cmFpbGVyCjw8Ci9JbmZvIDExMSAwIFIKL1Jvb3QgMSAwIFIKL1NpemUgMTEyCj4+CnN0YXJ0eHJlZgoxNjgwNDUKJSVFT0YK",ll={Order1:{bistech_orderformid:"9363e790-43b0-47d7-85ab-2b45a0c86703",bistech_datesigned:"2022-05-07T07:08:56.010Z",bistech_orderform_Annotations:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}]},Order2:{bistech_orderformid:"bda74674-b4a1-4816-890c-56eb2c7048d6",bistech_datesigned:"2023-03-15T07:08:23.089Z",bistech_orderform_Annotations:[]},Order3:{bistech_orderformid:"ada74672-c4a7-3814-390d-86eb2c7048da",bistech_datesigned:"2023-09-01T09:08:11.123Z",bistech_orderform_Annotations:[]},Order4:{bistech_orderformid:"cda74671-d4a2-1814-390d-76eb2c7048dd",bistech_datesigned:null,bistech_orderform_Annotations:[]},Order5:{bistech_orderformid:"cda74671-d4a2-1814-390d-76eb2c7048dd",bistech_datesigned:"2024-09-01T09:08:11.123Z",bistech_orderform_Annotations:[]}};var _n=(e=>(e[e.Product=1]="Product",e[e["Project-Based Service"]=5]="Project-Based Service",e))(_n||{}),AR=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(AR||{}),Qw=(e=>(e[e.Active=1]="Active",e[e["In Quote"]=100000006]="In Quote",e[e["Project copying"]=192350001]="Project copying",e[e["Project copy failed"]=192350002]="Project copy failed",e[e["Project importing"]=192350011]="Project importing",e[e["Project import failed"]=192350012]="Project import failed",e[e["Project converting"]=192350021]="Project converting",e[e["Project convert failed"]=192350022]="Project convert failed",e[e["Project estimates copy failed"]=192350023]="Project estimates copy failed",e[e["Pending Contract Review"]=192350024]="Pending Contract Review",e[e["Ready to Triage"]=192350025]="Ready to Triage",e[e["In Progress"]=192350026]="In Progress",e[e.Blocked=192350027]="Blocked",e[e.Cancelled=192350003]="Cancelled",e[e["Inactive - Sets project to read only"]=2]="Inactive - Sets project to read only",e[e["Closed - Sets project to read only and cancels future bookings"]=19235e4]="Closed - Sets project to read only and cancels future bookings",e))(Qw||{});const yR={"Microsoft Defender for Endpoint/Business":{msdyn_projectid:"b9c5fe33-808f-47a0-8402-de9b2ee10a7d",msdyn_subject:"Microsoft Defender for Endpoint/Business",bistech_projectnumber:"PROJ-01044-G6Z1C4",statuscode:Qw.Active,statecode:AR.Active,msdyn_actualstart:new Date("2024-01-04"),_ownerid_value:"98220fcb-8af8-ec11-82e7-000d3ad5810e","_ownerid_value@OData.Community.Display.V1.FormattedValue":"Steven Coombs"}},Wp={Order1:[{salesorderdetailid:"c9348455-4693-44cb-ac99-13bb84fa6c04",salesorderdetailname:"Get the red suit",producttypecode:_n.Product,bistech_totalannualprice:200,priceperunit:100,quantity:3,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"b7d93ce9-bf7c-42d7-bded-668f30b09cc5",salesorderdetailname:"Paint it gray",producttypecode:_n.Product,bistech_totalannualprice:500,priceperunit:200,quantity:1,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-476ssa22f-f2ea1b0c5012",salesorderdetailname:"Cover it with titanium metal and other stuff too",producttypecode:_n.Product,bistech_totalannualprice:200,priceperunit:100,quantity:4,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-4769-552f-f2ea1b0c5012",salesorderdetailname:"Make it look cool",producttypecode:_n.Product,bistech_totalannualprice:10,priceperunit:60,quantity:2,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-4769-a22f-f1ea1b0c5012",salesorderdetailname:"Make it look super cool",producttypecode:_n.Product,bistech_totalannualprice:20,priceperunit:12,quantity:2,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-4769-a22f-f2ea2b0c5012",salesorderdetailname:"Update the software",producttypecode:_n.Product,bistech_totalannualprice:503,priceperunit:23,quantity:7,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-4769-a22f-f2ea1b0c5013",salesorderdetailname:"Smear it with butter",producttypecode:_n.Product,bistech_totalannualprice:34,priceperunit:4,quantity:9,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74c33-70ae-4769-a22f-f2ea1b0c5014",salesorderdetailname:"Make it smell nice",producttypecode:_n.Product,bistech_totalannualprice:67,priceperunit:9,quantity:1,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"90b74cd3-70ae-4769-a22f-f2ea1b0c5014",salesorderdetailname:"Look out for the bad guys",producttypecode:_n.Product,bistech_totalannualprice:9,priceperunit:34,quantity:7,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null}],Order2:[{salesorderdetailid:"a9348454-7791-34ca-bc92-33bb84fa6c09",salesorderdetailname:"Get the helmet",producttypecode:_n.Product,bistech_totalannualprice:200,priceperunit:100,quantity:4,bistech_productdescription:"This is a description of the product",_msdyn_project_value:null},{salesorderdetailid:"a9348454-7791-34ca-bc92-34bb84fc6c09",salesorderdetailname:"Install J.A.R.V.I.S.",producttypecode:_n["Project-Based Service"],bistech_totalannualprice:2e4,priceperunit:100,quantity:1,bistech_productdescription:"This is a description of the product",_msdyn_project_value:yR["Microsoft Defender for Endpoint/Business"].msdyn_projectid}],Order3:[]},bR=[{salesorderid:"2e73d45a-71e7-46b5-b448-ed2e43e7d76b",name:"A new sword for Iron Man",ordernumber:"ORD-543223-925-NO-ORDERFORM",_bistech_contact_value:null,totallineitemamount:120,bistech_totalannualprice:0,bistech_orderform:null,statecode:Gi.Active,statuscode:vt.Pending,bistech_customerreference:"CUST-12345",order_details:[]},{salesorderid:"fe1ed1d0-4cba-4aec-b5f3-f3ed12f9a060",name:"A New Suit for Iron Man",ordernumber:"ORD-012345-123",_bistech_contact_value:te.tonyStark.contactid,totallineitemamount:34260,bistech_totalannualprice:1200,bistech_orderform:ll.Order1,statecode:Gi.Active,statuscode:vt["In Progress"],bistech_customerreference:"CUST-54321",order_details:Wp.Order1},{salesorderid:"ae73d45b-11e4-46b5-a448-fd2e43e7d76c",name:"A new suit for his friend War Machine",ordernumber:"ORD-543210-421",_bistech_contact_value:te.tonyStark.contactid,totallineitemamount:2150,bistech_totalannualprice:100,bistech_orderform:ll.Order2,statecode:Gi.Active,statuscode:vt["Pending Contract Review"],bistech_customerreference:"CUST-34526",order_details:Wp.Order2},{salesorderid:"5e73d45b-21e3-a6b5-b448-6d2e43e7d76d",name:"A new helmet for Iron Man",ordernumber:"ORD-943271-618",_bistech_contact_value:te.nickFury.contactid,totallineitemamount:150,bistech_totalannualprice:0,bistech_orderform:ll.Order3,statecode:Gi.Active,statuscode:vt.Processing,bistech_customerreference:"CUST-90826",order_details:Wp.Order3},{salesorderid:"4e73d451-61e7-46b2-a448-ed2e43e7d76c",name:"A new rocket booster for Iron Man",ordernumber:"ORD-843283-429",_bistech_contact_value:te.peterParker.contactid,totallineitemamount:120,bistech_totalannualprice:0,bistech_orderform:ll.Order4,statecode:Gi.Active,statuscode:vt.Pending,bistech_customerreference:"CUST-90283",order_details:[]},{salesorderid:"4e73d451-61e7-46b2-a448-ed2e43e7d56c",name:"A brand new glove for Thanos",ordernumber:"ORD-843283-428",_bistech_contact_value:te.peterParker.contactid,totallineitemamount:120,bistech_totalannualprice:0,bistech_orderform:ll.Order4,statecode:Gi.Fulfilled,statuscode:vt.Complete,bistech_customerreference:"CUST-09283",order_details:[]},{salesorderid:"4e73d451-61e7-46b2-a448-ed2e43e7d56c",name:"A brand new glove for Thanos",ordernumber:"ORD-843283-428",_bistech_contact_value:te.peterParker.contactid,totallineitemamount:120,bistech_totalannualprice:0,bistech_orderform:ll.Order4,statecode:Gi.Fulfilled,statuscode:vt.Complete,bistech_customerreference:"CUST-09284",order_details:[]}];var An=(e=>(e[e.Local=16496e4]="Local",e[e.Microsoft=164960002]="Microsoft",e[e.AzureB2B=164960001]="AzureB2B",e))(An||{}),Nt=(e=>(e[e.New=1]="New",e[e["Pending Send"]=756150003]="Pending Send",e[e.Sent=75615e4]="Sent",e[e.Redeemed=756150001]="Redeemed",e[e.Expired=756150002]="Expired",e[e.Failed=756150004]="Failed",e[e.Inactive=2]="Inactive",e))(Nt||{});const Ij=[{adx_invitationid:"1160687ae8d84e3eb7849fca753880b6",_adx_invitecontact_value:te.nickFury.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt["Pending Send"]},{adx_invitationid:"24928ede-cfe4-4754-9152-5a1c3d53e789",_adx_invitecontact_value:te.peterParker.contactid,bistech_authenticationtype:An.Local,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"5a673e33-67aa-4ef9-acff-39ecae1ba920",_adx_invitecontact_value:te.peterQuill.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"7a211e27-92e4-4f86-9bfa-b899e366c263",_adx_invitecontact_value:te.scottLang.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"1fe59990-01d7-432d-afa3-4d6e8e3c3cdc",_adx_invitecontact_value:te.stephenstrange.contactid,bistech_authenticationtype:An.Local,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"349eda10-d9cd-460f-afae-1b92f2b1483f",_adx_invitecontact_value:te.nickFury.contactid,bistech_authenticationtype:An.Local,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"6582b9d5-3827-4e22-baab-e9d42b732933",_adx_invitecontact_value:te.tonyStark.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"fd68d5cc-1c05-4edd-bf95-8aa9eb3e96d6",_adx_invitecontact_value:te.tonyStark.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2021-07-06T09:08:00.000Z",statuscode:Nt.Expired},{adx_invitationid:"7d1b7896-2301-4207-9de4-799643c47ca3",_adx_invitecontact_value:te.steveRogers.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Redeemed},{adx_invitationid:"f2bd1990-9761-4d36-977b-cba933ca6e80",_adx_invitecontact_value:te.steveRogers.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-06T10:08:00.000Z",statuscode:Nt.Expired},{adx_invitationid:"72fde85e-8c4a-4df1-9986-ba3ee834c7af",_adx_invitecontact_value:te.thor.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.Failed},{adx_invitationid:"74af8887-3681-4b36-bfd8-fb9f4c8c603c",_adx_invitecontact_value:te.thor.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-09T09:08:00.000Z",statuscode:Nt.Expired},{adx_invitationid:"3d446d8a-15e3-4900-a974-8b00fb90a1a3",_adx_invitecontact_value:te.scottLang.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-07T09:02:00.000Z",statuscode:Nt.Failed},{adx_invitationid:"93f3795d-6b64-4834-89ef-dec9c892b290",_adx_invitecontact_value:te.scottLang.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-06T09:01:00.000Z",statuscode:Nt.Expired},{adx_invitationid:"f54be1bc-430c-49e8-90b5-802376a9ea90",_adx_invitecontact_value:te.tchalla.contactid,bistech_authenticationtype:null,createdon:"2020-07-07T09:08:00.000Z",statuscode:Nt.New},{adx_invitationid:"c2f83c6a-c458-48ef-a859-6f84ffb8c9dd",_adx_invitecontact_value:te.stephenstrange.contactid,bistech_authenticationtype:An.Microsoft,createdon:"2020-07-06T09:08:00.000Z",statuscode:Nt.Sent}],Dj=[{activityid:"ffd5699c-4395-489e-853f-9e7a6d5ea0ea",_regardingobjectid_value:Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].incidentid,subject:"Major Incident Resolved",description:`Major Incident ${Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].ticketnumber} has been marked as resolved.`,createdon:"2020-10-09T10:12:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z",bistech_casestatussnapshot:"Resolved"},{activityid:"ffd5699c-4395-489e-853f-9d7a6d5ea0ea",_regardingobjectid_value:Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].incidentid,subject:"Major Incident Re-Opened",description:`Major Incident ${Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].ticketnumber} has been re-opened.`,createdon:"2020-10-09T10:12:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z",bistech_casestatussnapshot:"In Progress"},{activityid:"ffd5699c-4395-489e-853f-9d7a6d5ea0ea",_regardingobjectid_value:Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].incidentid,subject:"Update",description:`Please be advised that Major Incident ${Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].ticketnumber} has now been resolved. Service was fully restored at 08:50. We believe that inbound calls should now be working as expected - please retest and contact the ServiceDesk on 01202 332299 if still experiencing issues.`,createdon:"2020-10-09T10:12:09.000Z",modifiedon:"2020-07-07T09:35:00.000Z",bistech_casestatussnapshot:"In Progress"},{activityid:"ffd5699c-4395-489e-903f-9e7a6d5ea0ea",_regardingobjectid_value:Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].incidentid,subject:"Major Incident Created",description:`Major Incident ${Hi.filter(e=>e.casetypecode===he["Major Incident"])[0].ticketnumber} created.`,createdon:"2020-10-09T10:12:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z",bistech_casestatussnapshot:"In Progress"},{activityid:"ffd5699c-4395-489e-903f-9e7a6d5ea0ea",_regardingobjectid_value:Hi.filter(e=>e.casetypecode===he["Major Incident"])[1].incidentid,subject:"Major Incident Created",description:`Major Incident ${Hi.filter(e=>e.casetypecode===he["Major Incident"])[1].ticketnumber} created.`,createdon:"2020-10-09T10:12:11.000Z",modifiedon:"2020-07-07T09:35:00.000Z",bistech_casestatussnapshot:"In Progress"}],Fj=[{bistech_blogpostid:"1",bistech_name:"Lorem Ipsum part 1",bistech_description:"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur",bistech_url:new URL("https://bistech.co.uk/blog-post/a-constant-threat-is-your-business-ready/"),bistech_imageurl:new URL("https://bistech.co.uk/wp-content/uploads/2023/02/chess-banner.jpg"),bistech_publishedby:"Tim Bamber",bistech_publishedon:Ze.getMidnightToday()},{bistech_blogpostid:"2",bistech_name:"Lorem Ipsum part 2",bistech_description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",bistech_url:new URL("https://bistech.co.uk/blog-post/cyber-due-diligence-the-role-of-security-in-ma-activity/"),bistech_imageurl:new URL("https://bistech.co.uk/wp-content/uploads/2022/11/dd.jpg"),bistech_publishedby:"Timothy Bamber",bistech_publishedon:Ze.getMidnightToday()},{bistech_blogpostid:"3",bistech_name:"Example title 3",bistech_description:"Something, something, something, Lorem Ipsum something.",bistech_url:new URL("https://bistech.co.uk/blog-post/grow-or-go-navigating-the-technology-speedbumps-in-the-motor-industry/"),bistech_imageurl:new URL("https://bistech.co.uk/wp-content/uploads/2022/10/motor-banner.jpg"),bistech_publishedby:"TSB",bistech_publishedon:Ze.getMidnightToday()},{bistech_blogpostid:"4",bistech_name:"Lorem Ipsum part 4",bistech_description:"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",bistech_url:new URL("https://bistech.co.uk/blog-post/towards-sustainability/"),bistech_imageurl:new URL("https://bistech.co.uk/wp-content/uploads/2022/08/Sustainability-Banner-scaled.jpg"),bistech_publishedby:"Jeff",bistech_publishedon:Ze.getMidnightToday()}];var CR=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(CR||{}),mo=(e=>(e[e["In Progress"]=1]="In Progress",e[e.Pending=100000001]="Pending",e[e.Rejected=100000002]="Rejected",e[e.Delayed=100000003]="Delayed",e[e.Confirmed=100000004]="Confirmed",e[e["Ready To Order"]=100000006]="Ready To Order",e[e.Completed=1e8]="Completed",e[e.Cancelled=100000005]="Cancelled",e))(mo||{}),Zw=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(Zw||{});const wR=[{msdyn_customerassetid:"377e4652-e38d-4c0c-9768-b047a4a459c6",msdyn_name:"EVA-002",_msdyn_product_value:o1[0].productid,msdyn_product:o1[0],statecode:Zw.Active,_bistech_site_value:Re[0].accountid}];var ir=(e=>(e[e.Active=0]="Active",e[e.Inactive=1]="Inactive",e))(ir||{}),an=(e=>(e[e.Identified=100000001]="Identified",e[e.Delayed=100000002]="Delayed",e[e.Scheduled=100000003]="Scheduled",e[e.Completed=2]="Completed",e[e.Cancelled=100000004]="Cancelled",e))(an||{}),ht=(e=>(e[e["Order Placed"]=1e3]="Order Placed",e[e.Survey=1e8]="Survey",e[e.Wayleave=100000010]="Wayleave",e[e["Civils Work"]=100000020]="Civils Work",e[e["Fibre Install"]=100000030]="Fibre Install",e[e["Fibre Splicing"]=100000040]="Fibre Splicing",e[e["Fit & Test"]=100000050]="Fit & Test",e[e["Connection Installed"]=100000060]="Connection Installed",e[e["CommsCare Site Visit"]=100000070]="CommsCare Site Visit",e))(ht||{});const Nj=[{bistech_networkorderstageid:"09bd096c-bf7f-ee11-8179-6045bd10f0f8",bistech_stage:ht["Order Placed"],bistech_datefrom:"2023-10-25T23:00:00Z",statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"5fb3f527-2182-ee11-8179-6045bd10f3ee",bistech_stage:ht["Fit & Test"],bistech_datefrom:"2023-11-13T00:00:00Z",statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"d7012fff-2c6f-ee11-9ae7-6045bd10f40d",bistech_stage:ht["Civils Work"],bistech_datefrom:"2023-10-20T00:00:00Z",statecode:ir.Inactive,statuscode:an.Identified},{bistech_networkorderstageid:"d7012fff-2c6f-ee11-9ae7-6045bd10f40d",bistech_stage:ht["Fibre Install"],bistech_datefrom:"2023-10-20T00:00:00Z",statecode:ir.Inactive,statuscode:an.Identified},{bistech_networkorderstageid:"463e457d-b666-ee11-9ae7-6045bd10fdaa",bistech_stage:ht["Connection Installed"],bistech_datefrom:"2023-10-09T00:00:00Z",statecode:ir.Active,statuscode:an.Identified},{bistech_networkorderstageid:"4d9ddbb3-097f-ee11-8179-6045bdd0b45d",bistech_stage:ht.Wayleave,bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"f266e538-0a7f-ee11-8179-6045bdd0b45d",bistech_stage:ht.Survey,bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"eda044d7-c961-ee11-8def-6045bdd0b45d",bistech_stage:ht["Connection Installed"],bistech_datefrom:"2023-10-03T00:00:00Z",statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"7326f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["Connection Installed"],bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"9526f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["Fibre Splicing"],bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"9526f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["Fibre Splicing"],bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"9526f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["Fibre Splicing"],bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Completed},{bistech_networkorderstageid:"9526f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["Fibre Splicing"],bistech_datefrom:null,statecode:ir.Inactive,statuscode:an.Identified},{bistech_networkorderstageid:"9526f8f5-087f-ee11-8179-6045bdd0bed0",bistech_stage:ht["CommsCare Site Visit"],bistech_datefrom:null,statecode:ir.Active,statuscode:an.Identified}],Mj=[{bistech_networkorderid:"377e4652-e38d-4c0c-9768-b047a4a459c6",bistech_name:"NO-137584",_bistech_contact_value:null,_bistech_customerasset_value:wR[0].msdyn_customerassetid,statecode:CR.Active,statuscode:mo.Pending,_bistech_salesorder_value:bR[1].salesorderid,_bistech_orderline_value:Wp.Order1[1].salesorderdetailid,bistech_bistech_networkorderstage_networkorder_bi:Nj,bistech_networkorder_adx_portalcomments:[],bistech_networkorder_bistech_majorincidentupdates:[],bistech_networkorder_bistech_portalemails:[]}],Tj=[{invoiceid:"11111111-1111-1111-1111-111111111111",invoicenumber:"60046754",duedate:"2024-03-15",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"DD",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-03-13"},{invoiceid:"22222222-2222-2222-2222-222222222222",invoicenumber:"60046755",duedate:"2024-03-20",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"DD",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-03-14"},{invoiceid:"33333333-3333-3333-3333-333333333333",invoicenumber:"60046756",duedate:"2024-03-25",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"DD",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-03-14"},{invoiceid:"44444444-4444-4444-4444-444444444444",invoicenumber:"60046757",duedate:"2024-03-30",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"DD",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-03-18"},{invoiceid:"55555555-5555-5555-5555-555555555555",invoicenumber:"60046758",duedate:"2024-04-05",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"BACS",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-03-28"},{invoiceid:"66666666-6666-6666-6666-666666666666",invoicenumber:"60046759",duedate:"2024-04-10",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"DD",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-04-03"},{invoiceid:"77777777-7777-7777-7777-777777777777",invoicenumber:"60046760",duedate:"2024-04-15",_customerid_value:Re[0].accountid,bistech_paymentmethodcode:"CC",Invoice_Annotation:[{annotationid:"9363e790-43b0-47d7-85ab-2b45a0c86703",documentbody:Ua,filename:"orderform1.pdf",modifiedon:"2022-05-07T07:08:56.010Z",mimetype:"application/pdf"}],msdyn_invoicedate:"2024-04-03"},{invoiceid:"88888888-8888-8888-8888-888888888888",invoicenumber:"60046761",duedate:"2024-04-20",_customerid_value:Re[1].accountid,bistech_paymentmethodcode:"DD",msdyn_invoicedate:"2024-04-12",Invoice_Annotation:[]}],Rj=()=>{const[e,t]=g.useState(wR),[n,r]=g.useState(Object.values(te)),[i,o]=g.useState(Hi),[a,s]=g.useState(o1),[l,c]=g.useState(Tj),[d,u]=g.useState(bR),[f,v]=g.useState(Mj),[A,p]=g.useState(Object.values(yR)),[C,y]=g.useState(Object.values(ll)),[h,b]=g.useState(Sj),[w,S]=g.useState(wj),[E,I]=g.useState(Ij),[F,k]=g.useState(Re),[D,P]=g.useState(Fj),[H,G]=g.useState(Ej),[_,M]=g.useState(Dj);async function K(J,$,ne){const{data:le,idColumnName:Me,setter:Te,mockCreationBehaviour:z}=Y(J);gv($,ne);const X=ee(),q=z({...$,[Me]:X});return Te(le.concat([q])),await V(1e3),{id:X}}async function Q(J,$,ne){const{data:le}=Y(J,ne);return await V(100*le.length),le}async function O(J,$,ne){const{data:le,idColumnName:Me}=Y(J),Te=le.find(z=>z[Me]===$);if(await V(500),!Te)throw new Error(`${J} record with ${Me.toString()} of '${$}' was not found`);return Te}async function R(J,$,ne,le){const{data:Me,idColumnName:Te,setter:z}=Y(J),X=await O(J,$);await V(1e3),gv(ne,le);const q={...X,...ne};z(Me.filter(oe=>oe[Te]!==q[Te]).concat([q])),await V(1e3)}async function T(J,$){await V(2e3)}async function j(J){const $=await O("incidents",J);return await R("incidents",J,{statuscode:$.statuscode===ie.Resolved?ie.Closed:ie["Closure Requested"]},Tl),await O("incidents",J)}async function W(J){return await R("incidents",J,{statuscode:ie["In Progress"]},Tl),await O("incidents",J)}async function U(J){await V(2e3)}function Y(J,$){switch(J){case"contacts":{const ne="contactid";return{data:x(n,$),idColumnName:ne,setter:r,mockCreationBehaviour:le=>(le.statecode=Fe.Active,le)}}case"incidents":{const ne="incidentid";return{data:x(i,$),idColumnName:ne,setter:o,mockCreationBehaviour:le=>(le.createdon=new Date().toISOString(),le.statuscode=ie.Open,le.casetypecode=he["Support Request"],le.ticketnumber=`CAS-${Math.random().toString(36).slice(2,8)}-${Math.random().toString(36).slice(2,8)}`.toUpperCase(),le)}}case"products":{const ne="productid";return{data:x(a,$),idColumnName:ne,setter:s,mockCreationBehaviour:le=>le}}case"invoices":{const ne="invoiceid";return{data:x(l,$),idColumnName:ne,setter:c,mockCreationBehaviour:le=>le}}case"salesorders":{const ne="salesorderid";return{data:x(d,$),idColumnName:ne,setter:u,mockCreationBehaviour:le=>le}}case"bistech_networkorders":{const ne="bistech_networkorderid";return{data:x(f,$),idColumnName:ne,setter:v,mockCreationBehaviour:le=>le}}case"msdyn_projects":{const ne="msdyn_projectid";return{data:x(A,$),idColumnName:ne,setter:p,mockCreationBehaviour:le=>le}}case"msdyn_customerassets":{const ne="msdyn_customerassetid";return{data:x(e,$),idColumnName:ne,setter:t,mockCreationBehaviour:le=>le}}case"bistech_portalemails":{const ne="activityid";return{data:x(h,$),idColumnName:ne,setter:b,mockCreationBehaviour:le=>le}}case"adx_portalcomments":{const ne="activityid";return{data:x(w,$),idColumnName:ne,setter:S,mockCreationBehaviour:le=>(le.createdon=new Date().toISOString(),le)}}case"bistech_majorincidentupdates":{const ne="activityid";return{data:x(H,$),idColumnName:ne,setter:G,mockCreationBehaviour:le=>le}}case"adx_invitations":{const ne="adx_invitationid";return{data:x(E,$),idColumnName:ne,setter:I,mockCreationBehaviour:le=>le}}case"bistech_portalmajorincidentupdates":{const ne="activityid";return{data:x(_,$),idColumnName:ne,setter:M,mockCreationBehaviour:le=>le}}case"accounts":{const ne="accountid";return{data:x(F,$),idColumnName:ne,setter:k,mockCreationBehaviour:le=>le}}case"bistech_orderforms":{const ne="bistech_orderformid";return{data:x(C,$),idColumnName:ne,setter:y,mockCreationBehaviour:le=>le}}case"bistech_blogposts":{const ne="bistech_blogpostid";return{data:x(D,$),idColumnName:ne,setter:P,mockCreationBehaviour:le=>le}}default:throw new Error(`Retrieving data for ${J} is not implemented.`)}}function x(J,$){return $?J.filter(ne=>$.every(le=>L(ne,le))):J}function L(J,$){switch($.operator){case"eq":return J[$.attribute]===$.value;case"ne":return J[$.attribute]!==$.value;case"ge":return J[$.attribute]>=$.value;case"gt":return J[$.attribute]>$.value;case"le":return J[$.attribute]<=$.value;case"lt":return J[$.attribute]<$.value;default:throw new Error(`Filter operator '${$.operator}' does not have a mock implementation defined`)}}async function V(J){await new Promise($=>setTimeout($,J))}function ee(){return"00000000-0000-0000-0000-000000000000".replace(/[0]/g,$=>Math.round(Math.random()*16).toString(16))}return{create:K,retrieveMultiple:Q,retrieve:O,update:R,executeFeedbackPortalAction:T,executeRequestReopenPortalAction:W,executeRequestClosurePortalAction:j,executeSendInvitationPortalAction:U}};let Pj=class{constructor(){this.productid=void 0,this.bistech_tiletargeturl=void 0,this.bistech_portaltilemapping=void 0}};const kj={titleColumnName:"bistech_portaltilemapping",columnNames:Object.keys(new Pj),entityReferenceColumnMappings:[],expandProperties:[]};let xj=class{constructor(){this.msdyn_customerassetid=void 0,this._msdyn_product_value=void 0,this.msdyn_name=void 0,this.statecode=void 0,this.msdyn_product=void 0,this._bistech_site_value=void 0}};const VA={titleColumnName:null,columnNames:Object.keys(new xj),entityReferenceColumnMappings:[{columnName:"_msdyn_product_value",navigationPropertyName:"msdyn_product",pluralEntitySetName:"products"},{columnName:"_bistech_site_value",navigationPropertyName:"bistech_site",pluralEntitySetName:"accounts"}],expandProperties:[{columnName:"msdyn_product",entityMetadata:kj}]};let _j=class{constructor(){this.contactid=void 0,this.bistech_portalcontacttype=void 0,this.firstname=void 0,this.lastname=void 0,this.telephone1=void 0,this._bistech_primarysite_value=void 0,this._parentcustomerid_value=void 0,this.bistech_permissionlevel=void 0,this.bistech_portalcasepermissionlevel=void 0,this.bistech_portalcontactpermissionlevel=void 0,this.bistech_portalorderpermissionlevel=void 0,this.bistech_portalinvoicepermissionlevel=void 0,this.emailaddress1=void 0,this.jobtitle=void 0,this.msdyn_portaltermsagreementdate=void 0,this.mobilephone=void 0,this.bistech_receivealertnotifications=void 0,this.bistech_receivemajorincidentupdates=void 0,this.bistech_receivepewnotifications=void 0,this.bistech_receivesecurityupdates=void 0,this.bistech_receivecustomernewsletter=void 0,this.bistech_receiveproductupdates=void 0,this.statecode=void 0,this.adx_identity_logonenabled=void 0,this.bistech_isshowninportal=void 0}};const Vm={titleColumnName:"firstname",columnNames:Object.keys(new _j),entityReferenceColumnMappings:[{columnName:"_parentcustomerid_value",navigationPropertyName:"parentcustomerid_account",pluralEntitySetName:"accounts"},{columnName:"_bistech_primarysite_value",navigationPropertyName:"bistech_primarysite",pluralEntitySetName:"accounts"}],expandProperties:[]};let Bj=class{constructor(){this.participationtypemask=void 0,this._partyid_value=void 0}};const ER={titleColumnName:null,columnNames:Object.keys(new Bj),entityReferenceColumnMappings:[{columnName:"_partyid_value",navigationPropertyName:"partyid_contact",pluralEntitySetName:"contacts"}],expandProperties:[]};let SR=class{constructor(){this._regardingobjectid_value=void 0,this.adx_portalcommentdirectioncode=void 0,this.description=void 0,this.adx_portalcomment_activity_parties=void 0}};const Lj={titleColumnName:"description",columnNames:Object.keys(new SR),entityReferenceColumnMappings:[{columnName:"_regardingobjectid_value",navigationPropertyName:"regardingobjectid_incident",pluralEntitySetName:"incidents"}],expandProperties:[{columnName:"adx_portalcomment_activity_parties",entityMetadata:ER}]},Oj={titleColumnName:"description",columnNames:Object.keys(new SR),entityReferenceColumnMappings:[{columnName:"_regardingobjectid_value",navigationPropertyName:"regardingobjectid_bistech_networkorder",pluralEntitySetName:"bistech_networkorders"}],expandProperties:[{columnName:"adx_portalcomment_activity_parties",entityMetadata:ER}]};let Uj=class{constructor(){this.statecode=void 0,this.statuscode=void 0}};const jj={titleColumnName:null,columnNames:Object.keys(new Uj),entityReferenceColumnMappings:[],expandProperties:[]};let IR=class{constructor(){this.activityid=void 0,this._regardingobjectid_value=void 0,this.adx_portalcommentdirectioncode=void 0,this.description=void 0,this.statecode=void 0,this.statuscode=void 0,this.createdon=void 0,this.modifiedon=void 0}};const DR={titleColumnName:"description",columnNames:Object.keys(new IR),entityReferenceColumnMappings:[{columnName:"_regardingobjectid_value",navigationPropertyName:"regardingobjectid_incident",pluralEntitySetName:"incidents"}],expandProperties:[]},FR={titleColumnName:"description",columnNames:Object.keys(new IR),entityReferenceColumnMappings:[{columnName:"_regardingobjectid_value",navigationPropertyName:"regardingobjectid_bistech_networkorder",pluralEntitySetName:"bistech_networkorders"}],expandProperties:[]};let Hj=class{constructor(){this.accountid=void 0,this.name=void 0,this.bistech_sitetype=void 0,this._primarycontactid_value=void 0,this.statecode=void 0}};const GA={titleColumnName:"name",columnNames:Object.keys(new Hj),entityReferenceColumnMappings:[{columnName:"_primarycontactid_value",navigationPropertyName:"primarycontactid",pluralEntitySetName:"contacts"}],expandProperties:[]};let Kj=class{constructor(){this.activityid=void 0,this._regardingobjectid_value=void 0,this.subject=void 0,this.description=void 0,this.createdon=void 0,this.modifiedon=void 0,this.bistech_casestatussnapshot=void 0}};const Wj={titleColumnName:"subject",columnNames:Object.keys(new Kj),entityReferenceColumnMappings:[],expandProperties:[]};let zj=class{constructor(){this.adx_invitationid=void 0,this._adx_invitecontact_value=void 0,this.bistech_authenticationtype=void 0,this.statuscode=void 0,this.createdon=void 0}};const Vj={titleColumnName:null,columnNames:Object.keys(new zj),entityReferenceColumnMappings:[{columnName:"_adx_invitecontact_value",navigationPropertyName:"adx_invitecontact_contact",pluralEntitySetName:"contacts"}],expandProperties:[]};let Gj=class{constructor(){this.bistech_blogpostid=void 0,this.bistech_name=void 0,this.bistech_description=void 0,this.bistech_url=void 0,this.bistech_imageurl=void 0,this.bistech_publishedby=void 0,this.bistech_publishedon=void 0}};const Yj={titleColumnName:null,columnNames:Object.keys(new Gj),entityReferenceColumnMappings:[],expandProperties:[]};let Qj=class{constructor(){this.annotationid=void 0,this.documentbody=void 0,this.filename=void 0,this.modifiedon=void 0,this.mimetype=void 0}};const NR={titleColumnName:null,columnNames:Object.keys(new Qj),entityReferenceColumnMappings:[],expandProperties:[]};let Zj=class{constructor(){this.bistech_orderformid=void 0,this.bistech_datesigned=void 0,this.bistech_orderform_Annotations=void 0}};const MR={titleColumnName:null,columnNames:Object.keys(new Zj),entityReferenceColumnMappings:[],expandProperties:[{columnName:"bistech_orderform_Annotations",entityMetadata:NR}]};let Xj=class{constructor(){this.salesorderdetailid=void 0,this.salesorderdetailname=void 0,this.producttypecode=void 0,this.bistech_totalannualprice=void 0,this.priceperunit=void 0,this.quantity=void 0,this.bistech_productdescription=void 0,this._msdyn_project_value=void 0}};const qj={titleColumnName:null,columnNames:Object.keys(new Xj),entityReferenceColumnMappings:[],expandProperties:[]};let Jj=class{constructor(){this.salesorderid=void 0,this.name=void 0,this.ordernumber=void 0,this.statecode=void 0,this.statuscode=void 0,this._bistech_contact_value=void 0,this.totallineitemamount=void 0,this.bistech_totalannualprice=void 0,this.bistech_orderform=void 0,this.bistech_customerreference=void 0,this.order_details=void 0}};const Gm={titleColumnName:"name",columnNames:Object.keys(new Jj),entityReferenceColumnMappings:[{columnName:"_bistech_contact_value",navigationPropertyName:"bistech_contact",pluralEntitySetName:"contacts"}],expandProperties:[{columnName:"order_details",entityMetadata:qj},{columnName:"bistech_orderform",entityMetadata:MR}]};let $j=class{constructor(){this.msdyn_projectid=void 0,this.bistech_projectnumber=void 0,this.msdyn_subject=void 0,this.statuscode=void 0,this.statecode=void 0,this.msdyn_actualstart=void 0,this._ownerid_value=void 0,this["_ownerid_value@OData.Community.Display.V1.FormattedValue"]=void 0}};const eH={titleColumnName:null,columnNames:Object.keys(new $j),entityReferenceColumnMappings:[],expandProperties:[]};let tH=class{constructor(){this.title=void 0,this._customerid_value=void 0,this.bistech_customerreference=void 0,this.description=void 0,this.caseorigincode=void 0,this.severitycode=void 0,this.bistech_urgency=void 0,this._primarycontactid_value=void 0,this._bistech_createdbycontact_value=void 0}};const nH={titleColumnName:"title",columnNames:Object.keys(new tH),entityReferenceColumnMappings:[{columnName:"_customerid_value",navigationPropertyName:"customerid_account",pluralEntitySetName:"accounts"},{columnName:"_primarycontactid_value",navigationPropertyName:"primarycontactid",pluralEntitySetName:"contacts"},{columnName:"_bistech_createdbycontact_value",navigationPropertyName:"bistech_createdbycontact",pluralEntitySetName:"contacts"}],expandProperties:[]};let rH=class{constructor(){this.activityid=void 0,this._regardingobjectid_value=void 0,this._createdby_value=void 0,this.statecode=void 0,this.statuscode=void 0,this.prioritycode=void 0,this.subject=void 0,this.description=void 0,this.createdon=void 0,this.modifiedon=void 0,this.actualend=void 0}};const TR={titleColumnName:"subject",columnNames:Object.keys(new rH),entityReferenceColumnMappings:[],expandProperties:[]};let iH=class{constructor(){this.activityid=void 0,this._regardingobjectid_value=void 0,this.bistech_direction=void 0,this._createdby_value=void 0,this.subject=void 0,this.description=void 0,this.createdon=void 0,this.modifiedon=void 0}};const RR={titleColumnName:"description",columnNames:Object.keys(new iH),entityReferenceColumnMappings:[],expandProperties:[]};let oH=class{constructor(){this.incidentid=void 0,this.title=void 0,this._customerid_value=void 0,this.ticketnumber=void 0,this.bistech_customerreference=void 0,this.description=void 0,this.casetypecode=void 0,this.caseorigincode=void 0,this.severitycode=void 0,this.bistech_urgency=void 0,this.prioritycode=void 0,this.statuscode=void 0,this.createdon=void 0,this._primarycontactid_value=void 0,this._bistech_createdbycontact_value=void 0,this.bistech_resolutiondate=void 0,this.incident_adx_portalcomments=void 0,this.incident_bistech_portalemails=void 0,this.incident_bistech_majorincidentupdates=void 0}};const YA={titleColumnName:"title",columnNames:Object.keys(new oH),entityReferenceColumnMappings:[{columnName:"_customerid_value",navigationPropertyName:"customerid_account",pluralEntitySetName:"accounts"},{columnName:"_primarycontactid_value",navigationPropertyName:"primarycontactid",pluralEntitySetName:"contacts"},{columnName:"_bistech_createdbycontact_value",navigationPropertyName:"bistech_createdbycontact",pluralEntitySetName:"contacts"}],expandProperties:[{columnName:"incident_adx_portalcomments",entityMetadata:DR},{columnName:"incident_bistech_portalemails",entityMetadata:RR},{columnName:"incident_bistech_majorincidentupdates",entityMetadata:TR}]};let aH=class{constructor(){this.bistech_customerreference=void 0,this._primarycontactid_value=void 0}};const sH={titleColumnName:null,columnNames:Object.keys(new aH),entityReferenceColumnMappings:[{columnName:"_primarycontactid_value",navigationPropertyName:"primarycontactid",pluralEntitySetName:"contacts"}],expandProperties:[]};let lH=class{constructor(){this.bistech_portalcontacttype=void 0,this.firstname=void 0,this.lastname=void 0,this.telephone1=void 0,this._bistech_primarysite_value=void 0,this._parentcustomerid_value=void 0,this.bistech_permissionlevel=void 0,this.bistech_portalcasepermissionlevel=void 0,this.bistech_portalcontactpermissionlevel=void 0,this.bistech_portalorderpermissionlevel=void 0,this.bistech_portalinvoicepermissionlevel=void 0,this.emailaddress1=void 0,this.jobtitle=void 0,this.mobilephone=void 0,this.bistech_receivealertnotifications=void 0,this.bistech_receivemajorincidentupdates=void 0,this.bistech_receivepewnotifications=void 0,this.bistech_receivesecurityupdates=void 0,this.bistech_receivecustomernewsletter=void 0,this.bistech_receiveproductupdates=void 0,this.bistech_isshowninportal=void 0}};const cH={titleColumnName:"firstname",columnNames:Object.keys(new lH),entityReferenceColumnMappings:[{columnName:"_parentcustomerid_value",navigationPropertyName:"parentcustomerid_account",pluralEntitySetName:"accounts"},{columnName:"_bistech_primarysite_value",navigationPropertyName:"bistech_primarysite",pluralEntitySetName:"accounts"}],expandProperties:[]};let uH=class{constructor(){this.bistech_portalcontacttype=void 0,this.firstname=void 0,this.lastname=void 0,this.telephone1=void 0,this._bistech_primarysite_value=void 0,this.bistech_permissionlevel=void 0,this.bistech_portalcasepermissionlevel=void 0,this.bistech_portalcontactpermissionlevel=void 0,this.bistech_portalorderpermissionlevel=void 0,this.bistech_portalinvoicepermissionlevel=void 0,this.emailaddress1=void 0,this.jobtitle=void 0,this.mobilephone=void 0,this.bistech_receivealertnotifications=void 0,this.bistech_receivemajorincidentupdates=void 0,this.bistech_receivepewnotifications=void 0,this.bistech_receivesecurityupdates=void 0,this.bistech_receivecustomernewsletter=void 0,this.bistech_receiveproductupdates=void 0,this.statecode=void 0}};const dH={titleColumnName:"firstname",columnNames:Object.keys(new uH),entityReferenceColumnMappings:[{columnName:"_bistech_primarysite_value",navigationPropertyName:"bistech_primarysite",pluralEntitySetName:"accounts"}],expandProperties:[]};let fH=class{constructor(){this.statuscode=void 0,this._bistech_contact_value=void 0}};const vH={titleColumnName:null,columnNames:Object.keys(new fH),entityReferenceColumnMappings:[{columnName:"_bistech_contact_value",navigationPropertyName:"bistech_contact",pluralEntitySetName:"contacts"}],expandProperties:[]};let mH=class{constructor(){this.bistech_networkorderstageid=void 0,this.bistech_stage=void 0,this.bistech_datefrom=void 0,this.statecode=void 0,this.statuscode=void 0}};const pH={titleColumnName:null,columnNames:Object.keys(new mH),entityReferenceColumnMappings:[],expandProperties:[]};let hH=class{constructor(){this.bistech_networkorderid=void 0,this.bistech_name=void 0,this.statecode=void 0,this.statuscode=void 0,this._bistech_orderline_value=void 0,this._bistech_salesorder_value=void 0,this._bistech_contact_value=void 0,this._bistech_customerasset_value=void 0,this.bistech_bistech_networkorderstage_networkorder_bi=void 0,this.bistech_networkorder_adx_portalcomments=void 0,this.bistech_networkorder_bistech_portalemails=void 0,this.bistech_networkorder_bistech_majorincidentupdates=void 0}};const vD={titleColumnName:"bistech_name",columnNames:Object.keys(new hH),entityReferenceColumnMappings:[{columnName:"_bistech_contact_value",navigationPropertyName:"bistech_contact",pluralEntitySetName:"contacts"},{columnName:"_bistech_customerasset_value",navigationPropertyName:"bistech_customerasset",pluralEntitySetName:"customerassets"},{columnName:"_bistech_salesorder_value",navigationPropertyName:"bistech_salesorder",pluralEntitySetName:"salesorders"},{columnName:"_bistech_orderline_value",navigationPropertyName:"bistech_OrderLine",pluralEntitySetName:"salesorderdetails"}],expandProperties:[{columnName:"bistech_bistech_networkorderstage_networkorder_bi",entityMetadata:pH},{columnName:"bistech_networkorder_adx_portalcomments",entityMetadata:FR},{columnName:"bistech_networkorder_bistech_portalemails",entityMetadata:RR},{columnName:"bistech_networkorder_bistech_majorincidentupdates",entityMetadata:TR}]};let gH=class{constructor(){this.bistech_networkorderid=void 0,this.bistech_name=void 0,this.statecode=void 0,this.statuscode=void 0,this._bistech_orderline_value=void 0,this._bistech_salesorder_value=void 0,this._bistech_contact_value=void 0,this._bistech_customerasset_value=void 0}};const AH={titleColumnName:"bistech_name",columnNames:Object.keys(new gH),entityReferenceColumnMappings:[{columnName:"_bistech_contact_value",navigationPropertyName:"bistech_contact",pluralEntitySetName:"contacts"},{columnName:"_bistech_customerasset_value",navigationPropertyName:"bistech_customerasset",pluralEntitySetName:"customerassets"},{columnName:"_bistech_salesorder_value",navigationPropertyName:"bistech_salesorder",pluralEntitySetName:"salesorders"},{columnName:"_bistech_orderline_value",navigationPropertyName:"bistech_OrderLine",pluralEntitySetName:"salesorderdetails"}],expandProperties:[]};let yH=class{constructor(){this.msdyn_portaltermsagreementdate=void 0}};const bH={titleColumnName:null,columnNames:Object.keys(new yH),entityReferenceColumnMappings:[],expandProperties:[]};class CH{constructor(){this.invoiceid=void 0,this.invoicenumber=void 0,this.duedate=void 0,this._customerid_value=void 0,this.Invoice_Annotation=void 0,this.bistech_paymentmethodcode=void 0,this.msdyn_invoicedate=void 0}}const mD={titleColumnName:"invoicenumber",columnNames:Object.keys(new CH),entityReferenceColumnMappings:[{columnName:"_customerid_value",navigationPropertyName:"customerid",pluralEntitySetName:"accounts"}],expandProperties:[{columnName:"Invoice_Annotation",entityMetadata:NR}]},Jn=()=>{const e=ve(U=>U.isLocalMode),t=ve(U=>U.userId),n=Aj(),r=Rj(),i=e?r:n;async function o(U){if(!t)throw new Error("Expected `userId` to not be null");const{id:Y}=await i.create("incidents",U,nH);return await i.retrieve("incidents",Y,YA)}async function a(U){if(!t)throw new Error("Expected `userId` to not be null");const{id:Y}=await i.create("contacts",U,cH);return await i.retrieve("contacts",Y,Vm)}async function s(U,Y){if(!U)throw new Error("Expected `incidentid` to not be null/empty");return await i.update("incidents",U,Y,sH),await i.retrieve("incidents",U,YA)}async function l(U,Y){if(!U)throw new Error("Expected `contactid` to not be null/empty");return await i.update("contacts",U,Y,dH),await i.retrieve("contacts",U,Vm)}async function c(U,Y){if(!U)throw new Error("Expected `accountid` to not be null/empty");return await i.update("accounts",U,Y,GA),await i.retrieve("accounts",U,GA)}async function d(U,Y){if(!U)throw new Error("Expected `orderid` to not be null/empty");return await i.update("salesorders",U,Y,Gm),await i.retrieve("salesorders",U,Gm)}async function u(U,Y){if(!U)throw new Error("Expected 'networkOrderId' to not be null/empty");return await i.update("bistech_networkorders",U,Y,vH),await i.retrieve("bistech_networkorders",U,vD)}async function f(U,Y){if(!t)throw new Error("Expected `userId` to not be null");const{id:x}=await i.create("adx_portalcomments",U,(()=>{switch(Y){case"incident":return Lj;case"bistech_networkorder":return Oj}})());return await i.update("adx_portalcomments",x,{statecode:Je.Completed,statuscode:$e.Sent},jj),await i.retrieve("adx_portalcomments",x,(()=>{switch(Y){case"incident":return DR;case"bistech_networkorder":return FR}})())}async function v(){if(!t)throw new Error("Expected `userId` to not be null");const U=new Date;return await i.update("contacts",t,{msdyn_portaltermsagreementdate:U.toISOString()},bH),{acceptedDate:U}}async function A(U){if(!U)throw new Error("Expected `orderformid` to not be null/empty");return await i.retrieve("bistech_orderforms",U,MR)}async function p(){const U=[{attribute:"statuscode",operator:"ne",value:ie.Closed},{attribute:"statuscode",operator:"ne",value:ie.Cancelled},{attribute:"statuscode",operator:"ne",value:ie.Merged}];return await i.retrieveMultiple("incidents",Tl,U)}async function C(U){return await i.retrieve("incidents",U,YA)}async function y(U){return await i.retrieve("contacts",U,Vm)}async function h(U){return await i.retrieve("salesorders",U,Gm)}async function b(U){return await i.retrieve("invoices",U,mD)}async function w(U){return await i.retrieve("bistech_networkorders",U,vD)}async function S(U){return await i.retrieve("msdyn_customerassets",U,VA)}async function E(){const U=[{attribute:"statuscode",operator:"eq",value:ie.Resolved},{attribute:"casetypecode",operator:"eq",value:he["Major Incident"]},{attribute:"bistech_resolutiondate",operator:"gt",value:Ze.getMidnightToday().toISOString()},{attribute:"bistech_resolutiondate",operator:"lt",value:Ze.getMidnightTomorrow().toISOString()}];return await i.retrieveMultiple("incidents",Tl,U)}async function I(){const U=[{attribute:"statuscode",operator:"ne",value:ie.Open},{attribute:"casetypecode",operator:"ne",value:he["Major Incident"]},{attribute:"statuscode",operator:"ne",value:ie["In Progress"]},{attribute:"statuscode",operator:"ne",value:ie["Pending Feedback"]},{attribute:"statuscode",operator:"ne",value:ie["On Hold"]},{attribute:"statuscode",operator:"ne",value:ie["Closure Requested"]},{attribute:"statuscode",operator:"ne",value:ie.Resolved}];return await i.retrieveMultiple("incidents",Tl,U)}async function F(){return await i.retrieveMultiple("accounts",GA)}async function k(){return await i.retrieveMultiple("contacts",Vm)}async function D(){const U=[{attribute:"statecode",operator:"eq",value:Zw.Active}];return(await i.retrieveMultiple("msdyn_customerassets",VA,U)).flatMap(x=>x.msdyn_product).filter(x=>x)}async function P(){return(await i.retrieveMultiple("salesorders",Gm)).map(Y=>Y.statuscode===vt.New||Y.statuscode===vt.Pending?{...Y,totallineitemamount:null,bistech_totalannualprice:null}:Y.order_details.length===0?{...Y,totallineitemamount:null,bistech_totalannualprice:null}:Y)}async function H(){return await i.retrieveMultiple("invoices",mD)}async function G(){return await i.retrieveMultiple("bistech_networkorders",AH)}async function _(){return await i.retrieveMultiple("msdyn_projects",eH)}async function M(){return await i.retrieveMultiple("msdyn_customerassets",VA)}async function K(){return await i.retrieveMultiple("bistech_portalmajorincidentupdates",Wj)}async function Q(U){const Y=[{attribute:"_adx_invitecontact_value",operator:"eq",value:U}];return await i.retrieveMultiple("adx_invitations",Vj,Y)}async function O(){return await i.retrieveMultiple("bistech_blogposts",Yj)}async function R(U,Y){await i.executeFeedbackPortalAction(U,Y)}async function T(U){return await i.executeRequestClosurePortalAction(U)}async function j(U){return await i.executeRequestReopenPortalAction(U)}async function W(U){return await i.executeSendInvitationPortalAction(U)}return{createIncident:o,updateIncident:s,createContact:a,updateContact:l,updateAccount:c,updateOrder:d,sendPortalComment:f,setPortalTermsOfAgreementDate:v,executeFeedbackPortalAction:R,executeRequestClosurePortalAction:T,executeRequestReopenPortalAction:j,executeSendInvitationPortalAction:W,retrieveOrderFormInfo:A,retrieveActiveIncidents:p,retrieveClosedIncidents:I,updateNetworkOrder:u,retrieveIncident:C,retrieveContact:y,retrieveOrder:h,retrieveInvoice:b,retrieveNetworkOrder:w,retrieveCustomerAsset:S,retrieveAccounts:F,retrieveContacts:k,retrieveProducts:D,retrieveOrders:P,retrieveInvoices:H,retrieveNetworkOrders:G,retrieveProjects:_,retrieveCustomerAssets:M,retrievePortalInvitations:Q,retrieveRecentlyResolvedMajorIncidents:E,retrievePortalMajorIncidentUpdatesRegardingActiveAndRecentlyResolvedMajorIncidents:K,retrieveBlogPostRecords:O}},wH=()=>{const e=dn(),t=ve(o=>o.incidents),n=Nn(),r=Jn(),{trackExceptionWithBistechMetadata:i}=Mn();g.useEffect(()=>{(async()=>{if(e.contactId&&!(t.closedIncidents.loadingStatus==="loaded"||t.closedIncidents.loadingStatus==="loading")){n({type:"SetClosedIncidents",closedIncidents:{loadingStatus:"loading"}});try{const o=await r.retrieveClosedIncidents();n({type:"SetClosedIncidents",closedIncidents:{loadingStatus:"loaded",data:o}})}catch(o){n({type:"AddLatestError",error:o}),i==null||i(o)}}})()},[r,n,t,e.contactId])},EH=()=>{wH();const e=ve(y=>y.incidents),t=ve(y=>y.contacts),[n,r]=g.useState("createdon"),[i,o]=g.useState(!1),[a,s]=g.useState(""),[l,c]=g.useState({selectedCaseTypes:[],selectedIncidentStatuses:[],createdBy:"",dateRange:{value:null,from:null,to:null}}),d=y=>{if(!y){c(h=>({...h,createdBy:""}));return}c(h=>({...h,createdBy:y}))},u=y=>{if(y===null){c(b=>({...b,selectedCaseTypes:[]}));return}const h=he[y];if(!h)throw new Error(`'${y}' filter value for the Case Type filter is not implemented`);if(l.selectedCaseTypes.includes(h)){c(b=>({...b,selectedCaseTypes:[...l.selectedCaseTypes].filter(w=>w!==h)}));return}c(b=>({...b,selectedCaseTypes:[...l.selectedCaseTypes,h]}))},f=y=>{if(!y){c(w=>({...w,dateRange:{value:null,from:null,to:null}}));return}let h=new Date,b=new Date;switch(h.setHours(0,0,0,0),b.setHours(23,59,59,999),Mt[y]){case Mt.Today:break;case Mt.Yesterday:h.setDate(h.getDate()-1),b.setDate(b.getDate()-1);break;case Mt["This Week"]:h.setDate(h.getDate()-h.getDay());break;case Mt["This Month"]:h=new Date(h.getFullYear(),h.getMonth(),1);break;case Mt["This Year"]:h=new Date(h.getFullYear(),0,1);break;default:throw new Error(`'${y}' filter value for the Created On filter is not implemented`)}c(w=>({...w,dateRange:{value:Mt[y],from:h,to:b}}))},v=Sn.useMemo(()=>{if(e.closedIncidents.loadingStatus!=="loaded")return{loadingStatus:e.closedIncidents.loadingStatus};const y=e.closedIncidents.data.slice().sort((h,b)=>{var w,S;return(((w=h[n])==null?void 0:w.toString())??"").localeCompare(((S=b[n])==null?void 0:S.toString())??"")});return i?{loadingStatus:"loaded",data:y}:{loadingStatus:"loaded",data:y.reverse()}},[e,n,i]),A=hR(),p=y=>{var h;return(h=A.find(b=>b.fieldName===y))==null?void 0:h.columnHeader},C=st(v,y=>y.filter(h=>Object.values(h).some(b=>b==null?void 0:b.toString().toLowerCase().includes(a.toLowerCase()))).filter(h=>{var w,S;const b=new Date(h.createdon);return(l.selectedIncidentStatuses.length?(w=l.selectedIncidentStatuses)==null?void 0:w.includes(h.statuscode):!0)&&(h.casetypecode&&l.selectedCaseTypes.length?(S=l.selectedCaseTypes)==null?void 0:S.includes(h.casetypecode):!0)&&(l.createdBy?l.createdBy===h._primarycontactid_value:!0)&&(l.dateRange.from&&l.dateRange.to?b>=l.dateRange.from&&b<=l.dateRange.to:!0)}));return N(Dn,{title:"Closed Cases",children:[m(rm,{setSearchBarContent:s,filterGroups:[],placeholderText:"Search by Case Title or Reference",getSummarySections:()=>[],filtersToDisplay:[{type:"optionSet",options:[{name:"Support Request",value:he["Support Request"]},{name:"Incident",value:he.Incident},{name:"Change",value:he.Change},{name:"Problem",value:he.Problem}],onChange:u,associatedList:l.selectedCaseTypes,name:"case-types",inputType:"checkbox",styleClassName:"checkbox-section case",title:"Case Type"},{type:"optionSet",options:[{name:"Today",value:Mt.Today},{name:"Yesterday",value:Mt.Yesterday},{name:"This Week",value:Mt["This Week"]},{name:"This Month",value:Mt["This Month"]},{name:"This Year",value:Mt["This Year"]}],onChange:f,associatedList:[l.dateRange.value],name:"date-since",inputType:"radio",styleClassName:"checkbox-section case",title:"Created On"},{type:"lookup",name:"_primarycontactid_value",placeholderText:"Filter by contact",pluralOptionsName:"Contacts",title:"Created By",options:t.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:t.data.map(y=>({id:y.contactid,primaryText:[y.firstname,y.lastname].filter(h=>h).join(" "),secondaryText:Fe[y.statecode],isPickable:!0,contact:y}))},onChange:d}]}),C.loadingStatus!=="loaded"?m(Or,{}):C.data.length===0?m("div",{className:"no-results-message",children:"There are no records to display."}):N("table",{className:"cases-table",children:[m("thead",{children:m("tr",{children:A.map(y=>m(zl,{columnHeader:y.columnHeader,fieldName:y.fieldName,sortingProps:{sortingEnabled:y.isSortable,sortedColumn:n,setSortedColumn:()=>r(y.fieldName),isSortedAscending:i,setIsSortedAscending:o}},y.id))})}),m("tbody",{children:C.data.map(y=>N("tr",{"data-id":y.incidentid,"data-entity":"incident","data-name":y.title,children:[m("td",{className:"number",title:y.ticketnumber,"data-heading-title":p("ticketnumber"),children:m(qt,{to:`${Xe.EditCase.path}?caseId=${y.incidentid}`,children:`${y.ticketnumber}`},y.incidentid)}),m("td",{className:"title",title:y.title,"data-heading-title":p("title"),children:m(qt,{to:`${Xe.EditCase.path}?caseId=${y.incidentid}`,children:`${y.title}`},y.incidentid)}),m("td",{className:"type","data-heading-title":p("casetypecode"),children:y.casetypecode&&he[y.casetypecode]}),m("td",{className:"created-on","data-heading-title":p("createdon"),children:Ze.toDateString(y.createdon)}),m("td",{className:"contact","data-heading-title":p("_primarycontactid_value"),children:y._primarycontactid_value&&(()=>{if(t.loadingStatus!=="loaded")return;const h=t.data.find(b=>b.contactid===y._primarycontactid_value);return h?[h.firstname,h.lastname].filter(b=>b).join(" "):null})()}),m("td",{className:"priority","data-heading-title":p("prioritycode"),children:y.prioritycode&&xe[y.prioritycode]}),m("td",{className:"status","data-heading-title":p("statuscode"),children:ie[y.statuscode]})]},y.incidentid))})]})]})},Zh=e=>{var r,i,o,a,s,l;const t=g.useRef(null);e.customValidity!==void 0&&((r=t.current)==null||r.setCustomValidity(e.customValidity(t.current.validity)));const n={...e.additionalSelectProps,required:((i=e.additionalSelectProps)==null?void 0:i.required)??!0,autoComplete:((o=e.additionalSelectProps)==null?void 0:o.autoComplete)??"off"};return g.useEffect(()=>{var c;(c=t.current)==null||c.checkValidity()},[t]),m("label",{"data-name":e.name,className:"field",...e.additionalLabelProps,children:N(yt,{children:[N("div",{className:"field-label-header",children:[e.label,n.required&&((a=t.current)!=null&&a.validity.valid?m(Yv,{className:"completed-icon"}):m(Wl,{className:"required-icon"})),e.tooltip&&m(ic,{overlayContent:e.tooltip})]}),((s=t.current)==null?void 0:s.validationMessage)&&m("span",{className:"validity-message",children:(l=t.current)==null?void 0:l.validationMessage}),N("select",{className:"field-control",name:e.name,value:e.selectedOptionId||void 0,onChange:c=>e.onChange(c.target.value===""?null:Number(c.target.value)),ref:t,...n,children:[m("option",{disabled:e.readonlyDropdown}),e.options.map(c=>m("option",{value:c.id,disabled:e.readonlyDropdown,children:c.label},c.id))]})]})})},zp=e=>{var r,i,o,a,s,l;const t=g.useRef(null);e.customValidity!==void 0&&((r=t.current)==null||r.setCustomValidity(e.customValidity(t.current.validity)));const n={...e.additionalTextAreaProps,required:((i=e.additionalTextAreaProps)==null?void 0:i.required)??!0,autoComplete:((o=e.additionalTextAreaProps)==null?void 0:o.autoComplete)??"off"};return m("label",{"data-name":e.name,className:"field",...e.additionalLabelProps,children:N(yt,{children:[N("div",{className:"field-label-header",children:[e.label,n.required&&((a=t.current)!=null&&a.validity.valid?m(Yv,{className:"completed-icon"}):m(Wl,{className:"required-icon"})),e.tooltip&&m(ic,{overlayContent:e.tooltip})]}),((s=t.current)==null?void 0:s.validationMessage)&&m("span",{className:"validity-message",children:(l=t.current)==null?void 0:l.validationMessage}),m("textarea",{className:"field-control",name:e.name,value:e.value,onChange:c=>e.onChange(c.target.value),ref:t,...n})]})})},Xt=e=>{var r,i,o,a,s,l;const t=g.useRef(null);e.customValidity!==void 0&&((r=t.current)==null||r.setCustomValidity(e.customValidity(t.current.validity)));const n={...e.additionalInputProps,required:((i=e.additionalInputProps)==null?void 0:i.required)??!0,autoComplete:((o=e.additionalInputProps)==null?void 0:o.autoComplete)??"off"};return m("label",{"data-name":e.name,className:"field",title:e.title||"",...e.additionalLabelProps,children:N(yt,{children:[N("div",{className:"field-label-header",children:[e.label,n.required&&((a=t.current)!=null&&a.validity.valid?m(Yv,{className:"completed-icon"}):m(Wl,{className:"required-icon"})),e.requiredGroup&&m(Wl,{className:"required-group-icon"}),e.tooltip&&m(ic,{overlayContent:e.tooltip})]}),((s=t.current)==null?void 0:s.validationMessage)&&m("span",{className:"validity-message",children:(l=t.current)==null?void 0:l.validationMessage}),m("input",{type:"text",className:"field-control",name:e.name,value:e.value,onChange:c=>e.onChange(c.target.value),ref:t,...n})]})})},SH=()=>{const e=dn(),t=nc(),n=Nn(),{trackExceptionWithBistechMetadata:r,trackEventWithBistechMetadata:i}=Mn(),o=ve(b=>b.contacts),a=ve(b=>b.incidents);if(!e.accountId)throw new Error("Expected `userMetadata.accountId` to be populated");const[s,l]=g.useState({title:"",_customerid_value:e.accountId,_primarycontactid_value:e.contactId,_bistech_createdbycontact_value:e.contactId,caseorigincode:Gt.Portal,bistech_customerreference:"",description:"",severitycode:null,bistech_urgency:null}),c=Jn(),d=DH(s.bistech_urgency,s.severitycode),[u,f]=g.useState(!1),[v,A]=g.useState(!1),[p,C]=g.useState({state:"idle"});g.useEffect(()=>{A(!0)},[]);async function y(b){if(b.preventDefault(),a.activeIncidents.loadingStatus!=="loaded")throw new Error("Expected `incidents` to have loaded before submission");C({state:"submitting"}),i==null||i({type:"Create Case - Case creation submitted"});let w;try{w=await c.createIncident(s)}catch(E){C({state:"errored",error:E}),r==null||r(E);return}i==null||i({type:"Create Case - Case created successfully",incidentId:w.incidentid}),n({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:a.activeIncidents.data.concat([w])}}),C({state:"completed"});const S=`${Xe.EditCase.path}?caseId=${w.incidentid}`;n({type:"AddNotification",notification:{message:"Case created successfully",displayedOnRelativeUrl:S,displayUntil:Ze.addSeconds(new Date,10)}}),t(S)}const h=[...e.portalCasePermissionLevel!==Pe["All Cases"]&&d===xe["Priority 1"]?["A Priority One Case poses a significant impact on a critical element of your business, and as such cannot be logged in the Portal"]:[]];return m(Dn,{title:"Create a Case",children:m("form",{className:"create-case","data-submit-attempted":u,onSubmit:y,onInvalid:()=>{v&&f(!0)},children:N(re,{children:[m("div",{className:"main-content",children:N("div",{className:"general-container",children:[m(Xt,{label:"Title",name:"title",tooltip:m(re,{children:"Please provide a quick title for the Case."}),value:s.title,onChange:b=>l({...s,title:b}),additionalInputProps:{autoFocus:!0}}),N("fieldset",{children:[m(Xt,{label:"Your Reference",name:"bistech_customerreference",tooltip:m(re,{children:"Your Case Reference (if needed) for our records."}),value:s.bistech_customerreference||"",onChange:b=>l({...s,bistech_customerreference:b}),additionalInputProps:{required:!1}}),m(oc,{name:"_primarycontactid_value",label:"Primary Contact",selectedOptionId:s._primarycontactid_value,tooltip:m(re,{children:"The nominated Contact to receive Case related correspondence."}),pluralOptionsName:"Active Contacts",options:o.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:o.data.map(b=>({id:b.contactid,primaryText:[b.firstname,b.lastname].filter(w=>w).join(" "),secondaryText:b.emailaddress1??"",isPickable:b.statecode===Fe.Active,contact:b}))},setSelectedOptionId:b=>l({...s,_primarycontactid_value:b}),selectedOptionCardInfo:b=>({icon:m(pv,{}),primaryText:b.primaryText,secondaryText:b.secondaryText,additionalFields:[{name:"Job Title",value:b.contact.jobtitle},{name:"Telephone",value:b.contact.telephone1||""},{name:"Mobile",value:b.contact.mobilephone||""},{name:"Permission Level",value:Ue[b.contact.bistech_permissionlevel]}]}),additionalInputProps:{placeholder:"Select a Contact"}})]}),N("fieldset",{children:[N("div",{children:[m(Zh,{label:"Urgency",name:"bistech_urgency",tooltip:N(re,{children:[N("p",{children:[m("strong",{children:"High"})," - Resolution of the Incident is time-critical."]}),N("p",{children:[m("strong",{children:"Medium"})," - The effect of the Incident increases considerably over time."]}),N("p",{children:[m("strong",{children:"Low"})," - The effect of the Incident increases marginally over time."]})]}),options:[{id:tt.Low,label:tt[tt.Low]},{id:tt.Medium,label:tt[tt.Medium]},{id:tt.High,label:tt[tt.High]}],selectedOptionId:s.bistech_urgency,onChange:b=>l({...s,bistech_urgency:b})}),m(Zh,{label:"Severity",name:"severitycode",tooltip:N(re,{children:[N("p",{children:[m("strong",{children:"High"})," - A large number of users are affected."]}),N("p",{children:[m("strong",{children:"Medium"})," - A moderate number of users are affected."]}),N("p",{children:[m("strong",{children:"Low"})," - A minimal number of users are affected."]})]}),options:[{id:nt.Low,label:nt[nt.Low]},{id:nt.Medium,label:nt[nt.Medium]},{id:nt.High,label:nt[nt.High]}],selectedOptionId:s.severitycode,onChange:b=>l({...s,severitycode:b})})]}),m("div",{className:"priority-describer-parent",children:d!==null&&m(IH,{priorityCode:d})})]}),m(zp,{label:"Description",name:"description",tooltip:m(re,{children:"Please provide a clear explanation of the issue / requirement."}),value:s.description||"",onChange:b=>l({...s,description:b}),additionalTextAreaProps:{maxLength:2e3}}),d===xe["Priority 1"]&&m("section",{className:"priority-one-case-warning",id:"priority-one-case-warning",children:N("div",{className:"priority-one-case-warning-container",children:[N("b",{className:"priority-one-case-warning-headline",children:["A Priority One Case poses a significant impact on a critical element of your business",e.portalCasePermissionLevel===Pe["All Cases"]?"":", and as such cannot be logged in the Portal","."]}),m("p",{className:"priority-one-case-warning-message",children:"We recommend you call us immediately to help resolve the issue as quickly as possible."}),N("ul",{className:"priority-one-case-warning-hours",children:[N("li",{className:"priority-one-case-warning-hour",children:[m("b",{children:"Office hours (09.00-17.00):"})," ",m("a",{href:"tel:01202332299",children:"01202 33 22 99"})]}),N("li",{className:"priority-one-case-warning-hour",children:[m("b",{children:"Out of hours (17.00-09.00):"})," ",m("a",{href:"tel:03301244448",children:"0330 124 4448"})]})]})]})})]})}),p.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to create Case"}),": ",p.error.message]}),N("fieldset",{className:"buttons",children:[N("button",{type:"submit",disabled:h.length>0||p.state==="submitting",title:h.length>0?h.join(`\r `):"",children:[p.state==="submitting"&&m(di,{className:"spin"}),"Submit"]}),m(qt,{className:"button default",to:Xe.Cases.path,children:"Cancel"})]})]})})})},IH=e=>{var i;const t=[{priority:xe["Priority 1"],description:"One or more services are inaccessible or unusable. There is a significant impact on a critical element of your business. Multiple users or a service is affected."},{priority:xe["Priority 2"],description:"A service is usable but impaired. The situation has moderate business impact and can be dealt with during business hours. Multiple users or a service is partially affected."},{priority:xe["Priority 3"],description:"The issue is important but is not currently causing you a significant impact. Users may be experiencing partial disruption, but an acceptable workaround exists."},{priority:xe["Priority 4"],description:"The issue is low impact and is not causing you a disruption. Users are unaffected. This may include cosmetic defects."}],{priorityCode:n}=e,r=(i=t.find(({priority:o})=>o===n))==null?void 0:i.description;return N("section",{className:"priority-describer","data-selected-level":xe[n],children:[m("div",{className:"priority-describer-levels-section",children:t.map(({priority:o})=>m("span",{className:"priority-describer-level","data-level":xe[o],"data-selected":n===o},o))}),m("div",{className:"priority-describer-details-section",children:N("div",{className:"priority-describer-details","data-level":xe[n],children:[m("h3",{className:"priority-describer-title",children:xe[n]}),m("p",{className:"priority-describer-description",children:r})]})})]})};function DH(e,t){if(e===null||t===null)return null;switch(t+e){case 2:return xe["Priority 4"];case 3:case 4:return xe["Priority 3"];case 5:return xe["Priority 2"];case 6:return xe["Priority 1"]}throw new Error("Unexpected urgency and severity")}const FH=(e,t,n)=>[{labelElement:m(re,{children:"Status"}),attribute:"Status",tiles:[{id:"active-contacts",setSelectedTileIds:n,selectedTileIds:t,filter:r=>[Fe.Active].includes(r.statecode),label:m(re,{children:"Active"}),value:st(e.activeContacts,r=>r.length),imagePath:"/contact-management-status-active.svg",onHoverMessage:"Count Of Active Contacts - Click To Filter"},{id:"inactive-contacts",setSelectedTileIds:n,selectedTileIds:t,filter:r=>[Fe.Inactive].includes(r.statecode),label:m(re,{children:"Inactive"}),value:st(e.inactiveContacts,r=>r.length),imagePath:"/contact-management-status-inactive.svg",onHoverMessage:"Count Of Inactive Contacts - Click To Filter"}]}],NH=(e,t)=>[{type:"button-link",label:"New Contact",buttonLabel:"Create",to:{loadingStatus:"loaded",data:Xe.CreateContact.path}},e.loadingStatus==="loaded"?t?{type:"link",label:"Key Service Contact",buttonLabel:[t.firstname,t.lastname].filter(n=>n).join(" "),to:{loadingStatus:"loaded",data:`${Xe.EditContact.path}?id=${t.contactid}`}}:{type:"string",label:"Key Service Contact",value:{loadingStatus:"loaded",data:"None Set"}}:{type:"string",label:"Key Service Contact",value:{loadingStatus:"loading"}}],MH=()=>[{id:0,columnHeader:"Full Name",fieldName:"firstname",isSortable:!0},{id:1,columnHeader:"Job Title",fieldName:"jobtitle",isSortable:!0},{id:2,columnHeader:"Email",fieldName:"emailaddress1",isSortable:!0},{id:3,columnHeader:"DDI",fieldName:"telephone1",isSortable:!0},{id:4,columnHeader:"Mobile Phone",fieldName:"mobilephone",isSortable:!0}],TH=()=>{const e=dn(),t=ve(S=>S.contacts),[n,r]=g.useState(""),[i,o]=g.useState(["active-contacts"]),[a,s]=g.useState("firstname"),[l,c]=g.useState(!0);if(!e.accountId)throw new Error("Expected `userMetadata.accountId` to be populated");const d=ve(S=>S.accounts),u=Sn.useMemo(()=>{if(t.loadingStatus!=="loaded")return{loadingStatus:t.loadingStatus};const S=t.data.slice().sort((E,I)=>{var F,k,D,P,H,G;return a==="firstname"?`${((F=E.firstname)==null?void 0:F.toString())??""}${((k=E.lastname)==null?void 0:k.toString())??""}`.localeCompare(`${((D=I.firstname)==null?void 0:D.toString())??""}${((P=I.lastname)==null?void 0:P.toString())??""}`):((G=E[a])==null?void 0:G.toString().localeCompare(((H=I[a])==null?void 0:H.toString())??""))??0});return l?{loadingStatus:"loaded",data:S}:{loadingStatus:"loaded",data:S.reverse()}},[t,a,l]),f={activeContacts:st(u,S=>S.filter(E=>E.statecode===Fe.Active)),inactiveContacts:st(u,S=>S.filter(E=>E.statecode===Fe.Inactive))},v=FH(f,i,o),A=v.flatMap(S=>S.tiles.filter(E=>i.length>0?i.includes(E.id):!0).flatMap(E=>E.filter)),p=d.loadingStatus!=="loaded"?void 0:d.data.find(S=>S.accountid===e.accountId),C=t.loadingStatus!=="loaded"?void 0:t.data.find(S=>S.contactid===(p==null?void 0:p._primarycontactid_value)),y=NH(t,C),h=MH(),b=S=>{var E;return(E=h.find(I=>I.fieldName===S))==null?void 0:E.columnHeader},w=st(u,S=>S.filter(E=>Object.entries(E).some(([I,F])=>{let k=F==null?void 0:F.toString();switch(I){case"contactid":{k=(()=>E?[E.firstname,E.lastname].filter(D=>D).join(" "):null)();break}}return k==null?void 0:k.toString().toLowerCase().includes(n.toLowerCase())})).filter(E=>A.some(I=>I(E))));return N(Dn,{title:"Contacts",children:[m(rm,{setSearchBarContent:r,filterGroups:v,placeholderText:"Search by Name or Job Title",getSummarySections:()=>y,filtersToDisplay:[]}),w.loadingStatus!=="loaded"?m(Or,{}):w.data.length===0?m("div",{className:"no-results-message",children:"There are no records to display."}):N("table",{className:"entitylist contacts-table",children:[m("thead",{children:m("tr",{children:h.map(S=>m(zl,{columnHeader:S.columnHeader,fieldName:S.fieldName,sortingProps:{sortingEnabled:S.isSortable,sortedColumn:a,setSortedColumn:()=>s(S.fieldName),isSortedAscending:l,setIsSortedAscending:c}},S.id))})}),m("tbody",{children:w.data.map(S=>N("tr",{"data-id":S.contactid,"data-entity":"contact","data-name":[S.firstname,S.lastname].filter(E=>E).join(" "),children:[m("td",{className:"full-name",title:[S.firstname,S.lastname].filter(E=>E).join(" "),"data-heading-title":b("firstname"),children:m(qt,{to:`${Xe.EditContact.path}?id=${S.contactid}`,children:[S.firstname,S.lastname].filter(E=>E).join(" ")},S.firstname+S.lastname)}),m("td",{className:"job-title","data-heading-title":b("jobtitle"),children:S.jobtitle}),m("td",{className:"email-address","data-heading-title":b("emailaddress1"),children:S.emailaddress1}),m("td",{className:"telephone-number","data-heading-title":b("telephone1"),children:S.telephone1}),m("td",{className:"mobile-number","data-heading-title":b("mobilephone"),children:S.mobilephone})]},S.contactid))})]})]})},RH=()=>{const e=ve(o=>o.portalMajorIncidentUpdates),t=ve(o=>o.incidents);if(e.loadingStatus!=="loaded"||t.recentlyResolvedMajorIncidents.loadingStatus!=="loaded"||t.activeMajorIncidents.loadingStatus!=="loaded")return m(Dn,{title:"Major Incidents",children:m(Or,{})});const n=t.activeMajorIncidents.data.concat(t.recentlyResolvedMajorIncidents.data),r=e.data.reduce((o,a)=>{const s=o.find(l=>l.incidentId===a._regardingobjectid_value);return s?o=[...o.filter(l=>l.incidentId!==a._regardingobjectid_value),{incidentId:a._regardingobjectid_value,childrenUpdates:[...s.childrenUpdates,a]}]:o.push({incidentId:a._regardingobjectid_value,childrenUpdates:[a]}),o},[]).map(({incidentId:o,childrenUpdates:a})=>({majorIncident:n.find(l=>l.incidentid===o),childrenUpdates:a})).filter(({majorIncident:o})=>o).map(({majorIncident:o,childrenUpdates:a})=>({majorIncident:o,childrenUpdates:a})).sort((o,a)=>a.majorIncident.createdon.localeCompare(o.majorIncident.createdon));return m(Dn,{title:"Major Incidents",children:r.map(({majorIncident:o,childrenUpdates:a})=>m("div",{className:"major-incident","data-incident-id":o.incidentid,children:N("div",{className:"major-incident-updates",children:[N("h2",{className:"major-incident-title",children:["Major Incident ",o.ticketnumber]}),a.sort((s,l)=>l.createdon.localeCompare(s.createdon)).map(s=>N("div",{className:"major-incident-update","data-type":i(s.subject),children:[N("h3",{className:"major-incident-update-heading",title:s.subject,"data-record-id":s.activityid,children:[m("span",{className:"major-incident-update-title",children:s.subject}),N("span",{className:"major-incident-update-status-snapshot",children:["Status: ",s.bistech_casestatussnapshot]}),N("span",{className:"major-incident-update-created-on",children:[m("span",{className:"major-incident-update-created-on-date",children:Ze.toDateOnlyString(s.createdon)}),m("span",{className:"major-incident-update-created-on-time",children:Ze.toTimeOnlyString(s.createdon)})]})]}),m("p",{className:"major-incident-update-description",children:s.description})]},s.activityid))]})}))});function i(o){switch(o){case"Major Incident Created":return"created";case"Update":return"updated";case"Major Incident Re-Opened":return"re-opened";case"Major Incident Resolved":return"resolved";default:throw new Error(`Unexpected Major Incident Update type provided, was '${o}' but expected either 'Major Incident Created', 'Update', 'Major Incident Re-Opened' or 'Major Incident Resolved'`)}}},Ei=e=>{var r,i,o,a,s,l;const t=g.useRef(null);e.customValidity!==void 0&&((r=t.current)==null||r.setCustomValidity(e.customValidity(t.current.validity)));const n={...e.additionalInputProps,required:((i=e.additionalInputProps)==null?void 0:i.required)??!0,autoComplete:((o=e.additionalInputProps)==null?void 0:o.autoComplete)??"off"};return m("label",{"data-name":e.name,className:"field radio-button-boolean-field",...e.additionalLabelProps,children:N(yt,{children:[N("div",{className:"field-label-header",children:[e.label,n.required&&((a=t.current)!=null&&a.validity.valid?m(Yv,{className:"completed-icon"}):m(Wl,{className:"required-icon"})),e.tooltip&&m(ic,{overlayContent:e.tooltip})]}),((s=t.current)==null?void 0:s.validationMessage)&&m("span",{className:"validity-message",children:(l=t.current)==null?void 0:l.validationMessage}),N("div",{className:"field-controls",children:[N("label",{children:[m("input",{type:"radio",value:"no",id:"no",className:"field-control",name:e.name,onChange:()=>e.onChange(!1),checked:!e.value,ref:t,...n}),"No"]}),N("label",{children:[m("input",{type:"radio",value:"yes",id:"yes",className:"field-control radio-button-spacing",name:e.name,onChange:()=>e.onChange(!0),ref:t,checked:e.value,...n}),"Yes"]})]})]})})},Xh=e=>{var t;return m(Xt,{...e,additionalInputProps:{...e.additionalInputProps,type:"tel",minLength:10,maxLength:16,pattern:"^\\+\\d{9,15}|\\d{10,16}$",placeholder:((t=e.additionalInputProps)==null?void 0:t.placeholder)||"Provide a telephone number"},customValidity:n=>{var r;return n.patternMismatch?"Please provide a valid telephone number (between 10 and 16 digits, with an optional '+' at the start).":((r=e.customValidity)==null?void 0:r.call(e,n))||""}})},PR=e=>{var t;return m("label",{"data-name":e.name,className:"field popup-field",title:e.title||"",...e.additionalLabelProps,children:N(yt,{children:[N("div",{className:"field-label-header",children:[e.label,e.requiredGroup&&m(Wl,{className:"required-group-icon"}),e.tooltip&&m(ic,{overlayContent:e.tooltip})]}),(t=e.additionalButtonProps)!=null&&t.disabled?m("span",{children:e.value}):m("button",{type:"button",className:"field-control",name:e.name,onClick:()=>e.onClick(),...e.additionalButtonProps,children:e.value}),e.subText&&m("span",{className:"subtext",children:e.subText})]})})},R0=e=>m("div",{children:e.isVisible&&m(h7,{target:e.refElement,primaryButtonProps:{children:e.stageProgress.stageNumber>=e.stageProgress.totalStageCount?"Finish":"Next",onClick:e.onNext},secondaryButtonProps:{children:"Close",onClick:e.onDismiss},hasCloseButton:!0,onDismiss:e.onDismiss,footerContent:`${e.stageProgress.stageNumber} of ${e.stageProgress.totalStageCount}`,headline:e.headline,children:e.content})}),im=e=>{const{trackExceptionWithBistechMetadata:t}=Mn(),[n,r]=g.useState(!1),[i,o]=g.useState({state:"idle"});if(!e.buttonInfo.hasModal)return m(re,{});function a(){o({state:"idle"}),e.setIsModalShown(!1)}return m(re,{children:e.isModalShown&&m("section",{className:"modal-section",children:m("div",{className:"modal-dialog",children:N("div",{className:"modal-content",children:[m("div",{className:"modal-header",children:N("div",{className:"modal-title",children:[m("h1",{children:e.buttonInfo.modalInfo.modalTitle}),m("button",{className:"button default modal-close",onClick:a,children:m("span",{children:"x"})})]})}),N("form",{onSubmit:async s=>{s.preventDefault(),r(!0);try{if(!e.buttonInfo.hasModal)throw new Error("Expected the `hasModal` to be 'true'.");if(e.buttonInfo.modalInfo.isErrorModal)throw new Error("Expected the `isErrorModal` to be 'false'.");await e.buttonInfo.modalInfo.onClick()}catch(l){o({state:"errored",error:l}),r(!1),t==null||t(l);return}r(!1),e.setIsModalShown(!e.isModalShown)},children:[N("div",{className:"modal-body",children:[e.buttonInfo.modalInfo.modalContent,i.state==="errored"&&N("p",{className:"error",children:[N("strong",{children:["The ",e.buttonInfo.label," action has failed"]}),":"," ",i.error.message]})]}),N("div",{className:"modal-footer",children:[!e.buttonInfo.modalInfo.isErrorModal&&m("button",{className:"modal-button",type:"submit",disabled:n||i.state==="errored",children:n?N("div",{children:[m(di,{className:"spin"})," Submitting..."]}):i.state==="errored"?m("div",{children:"Unsuccessful"}):e.buttonInfo.modalInfo.modalButtonLabel}),m("button",{className:"button default",type:"button",onClick:a,children:"Cancel"})]})]})]})})})})},PH=e=>{const[t,n]=g.useState(!1),[r,i]=g.useState(!1),{trackEventWithBistechMetadata:o}=Mn();return N(re,{children:[m("button",{className:"button",type:"button",disabled:t,onClick:async()=>{if(e.buttonInfo.hasModal){i(!r);return}n(!0),e.buttonInfo.appInsights&&(o==null||o({type:e.buttonInfo.appInsights.submissionEventType,buttonName:e.buttonInfo.label}));try{await e.buttonInfo.onClick(),e.buttonInfo.appInsights&&(o==null||o({type:e.buttonInfo.appInsights.completedSuccessfullyEventType,buttonName:e.buttonInfo.label}))}catch(a){const s=new Error(`Error occurred performing '${e.buttonInfo.label}' button behaviour: ${a}`);e.setSubmissionState({state:"errored",error:s})}n(!1)},children:t?N("div",{children:[m(di,{className:"spin"})," Submitting..."]}):e.buttonInfo.label}),e.buttonInfo.hasModal&&m(im,{buttonInfo:e.buttonInfo,isModalShown:r,setIsModalShown:i})]})},P0=e=>{var o,a;const i=Gv();return N(re,{children:[m(Vw,{}),N("div",{className:"page-content",style:i<991?{paddingTop:"1em"}:{},children:[m(yt,{children:m(eT,{})}),N("div",{className:"call-to-action-base-page",children:[N("div",{className:"base-page-header",children:[m("h1",{className:"call-to-action-base-page-title",children:e.title}),m("div",{className:"label-group",children:e.tags&&e.tags.filter(s=>s.value).map(s=>m("span",{className:"label",children:s.value},s.name))})]}),N("div",{className:"call-to-action-panel",children:[m("div",{className:"call-to-action-icon-panel",children:e.callToActionInformation.loadingStatus==="loaded"&&m(En,{className:"call-to-action-icon",width:40,height:40,src:e.callToActionInformation.data.icon})}),e.callToActionInformation.loadingStatus==="loaded"?N("div",{className:"call-to-action-information-panel",children:[N("div",{"data-info-panel-has-buttons":((o=e.callToActionInformation.data.buttons)==null?void 0:o.length)??!0,children:[m("div",{className:"call-to-action-information-panel-title",children:e.callToActionInformation.data.title}),m("div",{className:"call-to-action-information-panel-description",children:e.callToActionInformation.data.description})]}),m("div",{className:"call-to-action-button-panel",children:m("div",{className:"call-to-action-buttons",children:(a=e.callToActionInformation.data.buttons)==null?void 0:a.map(s=>m(PH,{buttonInfo:s,setSubmissionState:e.setSubmissionState},s.label))})})]}):m(Or,{})]})]}),m(yt,{children:e.children})]})]})},Ur=e=>{switch(e.type){case"page-not-found":return N(Dn,{title:"Page Not Found",children:[m("p",{children:"Sorry, but the page you were trying to view does not exist."}),m("p",{children:"It looks like this was the result of either:"}),N("ul",{children:[m("li",{children:"A mistyped address"}),m("li",{children:"An out-of-date link"})]})]});case"record-not-found":return N(Dn,{title:`${e.singularEntityName} Not Found`,children:[m("p",{children:"Sorry, but the record you were trying to view does not exist."}),m("p",{children:"It looks like this was the result of either:"}),N("ul",{children:[m("li",{children:"A mistyped address"}),m("li",{children:"An out-of-date link"})]})]})}};function Av(e,t){return Object.entries(t).reduce((r,[i,o])=>{const a=JSON.stringify(e[i]),s=JSON.stringify(o);return a!==s&&(r[i]=t[i]),r},{})}const Ym=m("svg",{fill:"currentColor",style:{color:"darkred"},width:"16",height:"16",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:m("path",{d:"M24 4a20 20 0 1 1 0 40 20 20 0 0 1 0-40Zm0 2.5a17.5 17.5 0 1 0 0 35 17.5 17.5 0 0 0 0-35Zm-6.22 9.52.1.1L24 22.23l6.12-6.11a1.25 1.25 0 0 1 1.66-.1l.1.1c.46.45.49 1.17.1 1.66l-.1.1L25.77 24l6.11 6.12c.46.45.49 1.17.1 1.66l-.1.1c-.45.46-1.17.49-1.66.1l-.1-.1L24 25.77l-6.12 6.11c-.45.46-1.17.49-1.66.1l-.1-.1a1.25 1.25 0 0 1-.1-1.66l.1-.1L22.23 24l-6.11-6.12a1.25 1.25 0 0 1-.1-1.66l.1-.1a1.25 1.25 0 0 1 1.66-.1Z",fill:"currentColor"})}),Qm=m("svg",{fill:"currentColor",width:"16",height:"16",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:m("path",{d:"M11.5 11a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM15 5a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm14.5 6a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM33 5a6 6 0 1 0 0 12 6 6 0 0 0 0-12ZM4 22.45C4 20.55 5.54 19 7.45 19h9.62c-.44.76-.76 1.6-.93 2.5h-8.7a.95.95 0 0 0-.94.95v.43c0 .27 0 1.93 1.02 3.5.9 1.39 2.72 2.92 6.68 3.1a5.47 5.47 0 0 0-2.46 2.22c-3.22-.63-5.18-2.2-6.32-3.96A9.18 9.18 0 0 1 4 22.88v-.43Zm29.8 7.03a5.47 5.47 0 0 1 2.46 2.22c3.22-.63 5.18-2.2 6.32-3.96C44 25.54 44 23.27 44 22.88v-.43c0-1.9-1.54-3.45-3.45-3.45h-9.62c.44.76.76 1.6.93 2.5h8.7c.52 0 .94.42.94.95v.43c0 .27 0 1.93-1.02 3.5-.9 1.39-2.72 2.92-6.68 3.1ZM24 19.5a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM18 23a6 6 0 1 1 12 0 6 6 0 0 1-12 0Zm-5 11.45c0-1.9 1.54-3.45 3.45-3.45h15.1c1.9 0 3.45 1.54 3.45 3.45v.43c0 .4 0 2.66-1.42 4.86C32.1 42.04 29.23 44 24 44s-8.1-1.97-9.58-4.26C13 37.54 13 35.27 13 34.88v-.43Zm3.45-.95a.95.95 0 0 0-.95.95v.42c0 .28 0 1.94 1.02 3.51.95 1.48 2.96 3.12 7.48 3.12 4.52 0 6.53-1.64 7.48-3.12a6.68 6.68 0 0 0 1.02-3.5v-.43a.95.95 0 0 0-.95-.95h-15.1Z",fill:"currentColor"})}),pD=m("svg",{fill:"currentColor",width:"16",height:"16",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:m("path",{d:"M24 4a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm-7.5 10a7.5 7.5 0 1 1 15 0 7.5 7.5 0 0 1-15 0Zm-4.25 14A4.25 4.25 0 0 0 8 32.25V33c0 3.76 1.94 6.57 4.92 8.38C15.85 43.16 19.79 44 24 44s8.15-.84 11.08-2.62C38.06 39.57 40 36.76 40 33v-.75C40 29.9 38.1 28 35.75 28h-23.5Zm-1.75 4.25c0-.97.78-1.75 1.75-1.75h23.5c.97 0 1.75.78 1.75 1.75V33c0 2.74-1.36 4.8-3.72 6.24-2.41 1.47-5.85 2.26-9.78 2.26-3.93 0-7.37-.79-9.78-2.26-2.36-1.43-3.72-3.5-3.72-6.24v-.75Z",fill:"currentColor"})}),kH=[{label:"No Access",description:"No access to any features of the Portal",fieldName:"bistech_permissionlevel",value:Ue["No Access"],additionalFields:{bistech_portalcasepermissionlevel:Pe["No Access"],bistech_portalcontactpermissionlevel:Qe["No Access"],bistech_portalorderpermissionlevel:ze["No Access"],bistech_portalinvoicepermissionlevel:gt["No Access"]}},{label:"Administrator",description:"Access to all features of the Portal",fieldName:"bistech_permissionlevel",value:Ue.Administrator,additionalFields:{bistech_portalcasepermissionlevel:Pe["All Cases"],bistech_portalcontactpermissionlevel:Qe["All Contacts"],bistech_portalorderpermissionlevel:ze["All Orders"],bistech_portalinvoicepermissionlevel:gt["All Invoices"]}},{label:"Custom",description:"",fieldName:"bistech_permissionlevel",value:Ue.Custom,additionalFields:{bistech_portalcasepermissionlevel:Pe["No Access"],bistech_portalcontactpermissionlevel:Qe["No Access"],bistech_portalorderpermissionlevel:ze["No Access"],bistech_portalinvoicepermissionlevel:gt["No Access"]},subCategories:[{label:"Cases",description:"",isVisible:!0,options:[{label:"No Access",description:"No access to any Cases",icon:Ym,fieldName:"bistech_portalcasepermissionlevel",value:Pe["No Access"]},{label:"Owned Cases",description:"Access to Cases where I am the Primary Contact",icon:pD,fieldName:"bistech_portalcasepermissionlevel",value:Pe["Owned Cases"]},{label:"All Cases",description:"Access to all Cases for my company",icon:Qm,fieldName:"bistech_portalcasepermissionlevel",value:Pe["All Cases"]}]},{label:"Contacts",description:"",isVisible:!0,options:[{label:"No Access",description:"No access to any Contacts",icon:Ym,fieldName:"bistech_portalcontactpermissionlevel",value:Qe["No Access"]},{label:"All Contacts",description:"Access to all Contacts for my company",icon:Qm,fieldName:"bistech_portalcontactpermissionlevel",value:Qe["All Contacts"]}]},{label:"Orders",description:"",isVisible:!wn,options:[{label:"No Access",description:"No access to any Orders",icon:Ym,fieldName:"bistech_portalorderpermissionlevel",value:ze["No Access"]},{label:"Owned Orders",description:"Access to Orders where I am the Primary Contact",icon:pD,fieldName:"bistech_portalorderpermissionlevel",value:ze["Owned Orders"]},{label:"All Orders",description:"Access to all Orders for my company",icon:Qm,fieldName:"bistech_portalorderpermissionlevel",value:ze["All Orders"]}]},{label:"Invoices",description:"",isVisible:!wn,options:[{label:"No Access",description:"No access to any Invoices",icon:Ym,fieldName:"bistech_portalinvoicepermissionlevel",value:gt["No Access"]},{label:"All Invoices",description:"Access to all Invoices for my company",icon:Qm,fieldName:"bistech_portalinvoicepermissionlevel",value:gt["All Invoices"]}]}]}],xH=e=>{const t=e.contact[e.permission.fieldName]===e.permission.value,n=g.useRef(null);return N(re,{children:[N("div",{className:"sub-category",ref:n,children:[m("h3",{className:"title",children:e.subCategory.label}),m("p",{className:"description",children:e.subCategory.description}),m("div",{className:"options",children:e.subCategory.options.map(r=>N("label",{className:"option","aria-disabled":!t,"aria-selected":e.contact[r.fieldName]===r.value,children:[m("input",{className:"radio-button",type:"radio",checked:e.contact[r.fieldName]===r.value,onChange:()=>e.onUpdateContact({[r.fieldName]:r.value}),name:e.subCategory.label,disabled:!t}),m("div",{className:"icon",children:r.icon}),N("div",{className:"content",children:[m("h5",{className:"title",children:r.label}),m("p",{className:"description",children:r.description})]})]}))})]}),e.teachingBubbleState.isEnabled&&e.teachingBubbleState.currentStageNumber===3&&e.index===0&&m(R0,{refElement:n.current,isVisible:!0,onDismiss:()=>{e.setTeachingBubbleState({isEnabled:!1}),localStorage.setItem(Vl,"false")},onNext:()=>{e.setTeachingBubbleState({isEnabled:!1}),localStorage.setItem(Vl,"false")},headline:"Custom Permissions",content:"We now give you access to provide specific feature level permissions to your contacts.",stageProgress:{stageNumber:3,totalStageCount:3}})]})},_H=e=>{var o;const t=()=>{e.onUpdateContact({[e.permission.fieldName]:e.permission.value,...e.permission.additionalFields})},n=g.useRef(null),[r,i]=g.useState(!1);return g.useEffect(()=>{const a=window.setTimeout(()=>{i(!0)},200);return()=>window.clearTimeout(a)},[]),N(re,{children:[N("div",{className:"top-level-permission",children:[N("label",{className:"label",ref:n,"aria-selected":e.contact[e.permission.fieldName]===e.permission.value,children:[m("input",{className:"radio-button",type:"radio",checked:e.contact[e.permission.fieldName]===e.permission.value,onChange:t,name:"top-level-permission"}),N("div",{className:"content",children:[m("h2",{className:"title",children:e.permission.label}),m("p",{className:"description",children:e.permission.description})]})]}),(((o=e.permission.subCategories)==null?void 0:o.length)??0)>0&&m("div",{className:"sub-categories",children:e.permission.subCategories.filter(a=>a.isVisible).map((a,s)=>m(xH,{subCategory:a,permission:e.permission,index:s,teachingBubbleState:e.teachingBubbleState,setTeachingBubbleState:e.setTeachingBubbleState,contact:e.contact,onUpdateContact:e.onUpdateContact}))})]}),e.teachingBubbleState.isEnabled&&e.teachingBubbleState.currentStageNumber===2&&e.index===0&&r&&m(R0,{refElement:n.current,isVisible:!0,onDismiss:()=>{e.setTeachingBubbleState({isEnabled:!1}),localStorage.setItem(Vl,"false")},onNext:()=>{e.setTeachingBubbleState({isEnabled:!0,currentStageNumber:3})},headline:"Base Permissions",content:`As before, you can select a base permission level for a contact which provides\r a pre-defined set of permissions for accessing features of the portal.`,stageProgress:{stageNumber:2,totalStageCount:3}})]})},kR=e=>{const[t,n]=g.useState({bistech_permissionlevel:e.contact.bistech_permissionlevel??Ue["No Access"],bistech_portalcasepermissionlevel:e.contact.bistech_portalcasepermissionlevel??Pe["No Access"],bistech_portalcontactpermissionlevel:e.contact.bistech_portalcontactpermissionlevel??Qe["No Access"],bistech_portalorderpermissionlevel:e.contact.bistech_portalorderpermissionlevel??ze["No Access"],bistech_portalinvoicepermissionlevel:e.contact.bistech_portalinvoicepermissionlevel??gt["No Access"]}),r=i=>{e.onSave(i),e.closePopup()};return m(re,{children:m(im,{buttonInfo:{hasModal:!0,label:"Permission Level",modalInfo:{isErrorModal:!1,modalButtonLabel:e.submitLabel,modalContent:m("div",{className:"popup-container",children:kH.map((i,o)=>m(_H,{permission:i,teachingBubbleState:e.teachingBubbleState,setTeachingBubbleState:e.setTeachingBubbleState,index:o,contact:t,onUpdateContact:a=>n({...t,...a})}))}),modalTitle:"Edit Permission Level",onClick:async()=>r(t)}},isModalShown:!0,setIsModalShown:i=>{i||e.closePopup()}})})},xR=e=>N("ul",{className:"permission-level-list",children:[N("li",{className:"case-permission-level-list-item",children:[m("strong",{className:"permission-level-list-item-name",children:"Cases"}),":"," ",m("span",{className:"permission-level-list-item-value",children:e.contact.bistech_portalcasepermissionlevel?Pe[e.contact.bistech_portalcasepermissionlevel]:"None"})]}),N("li",{className:"contact-permission-level-list-item",children:[m("strong",{className:"permission-level-list-item-name",children:"Contacts"}),":"," ",m("span",{className:"permission-level-list-item-value",children:e.contact.bistech_portalcontactpermissionlevel?Qe[e.contact.bistech_portalcontactpermissionlevel]:"None"})]}),!wn&&N("li",{className:"order-permission-level-list-item",children:[m("strong",{className:"permission-level-list-item-name",children:"Orders"}),":"," ",m("span",{className:"permission-level-list-item-value",children:e.contact.bistech_portalorderpermissionlevel?ze[e.contact.bistech_portalorderpermissionlevel]:"None"})]}),!wn&&N("li",{className:"invoice-permission-level-list-item",children:[m("strong",{className:"permission-level-list-item-name",children:"Invoices"}),":"," ",m("span",{className:"permission-level-list-item-value",children:e.contact.bistech_portalinvoicepermissionlevel?gt[e.contact.bistech_portalinvoicepermissionlevel]:"None"})]})]}),Vl="Bistech:TeachingBubble:PermissionLevel-2023-09",BH=e=>{var R,T,j,W,U,Y,x,L,V,ee,J,$,ne,le,Me,Te,z,X,q,oe,ce;const t=ve(Z=>Z.contacts),n=ve(Z=>Z.accounts),r=ve(Z=>Z.incidents),i=Nn(),o=Jn(),a=dn(),{trackExceptionWithBistechMetadata:s,trackEventWithBistechMetadata:l}=Mn(),[c,d]=g.useState({firstname:(R=e.initialContact)==null?void 0:R.firstname,lastname:(T=e.initialContact)==null?void 0:T.lastname,jobtitle:(j=e.initialContact)==null?void 0:j.jobtitle,telephone1:(W=e.initialContact)==null?void 0:W.telephone1,bistech_portalcontacttype:(U=e.initialContact)==null?void 0:U.bistech_portalcontacttype,_bistech_primarysite_value:(Y=e.initialContact)==null?void 0:Y._bistech_primarysite_value,bistech_permissionlevel:(x=e.initialContact)==null?void 0:x.bistech_permissionlevel,bistech_portalcasepermissionlevel:(L=e.initialContact)==null?void 0:L.bistech_portalcasepermissionlevel,bistech_portalcontactpermissionlevel:(V=e.initialContact)==null?void 0:V.bistech_portalcontactpermissionlevel,bistech_portalorderpermissionlevel:(ee=e.initialContact)==null?void 0:ee.bistech_portalorderpermissionlevel,bistech_portalinvoicepermissionlevel:(J=e.initialContact)==null?void 0:J.bistech_portalinvoicepermissionlevel,emailaddress1:($=e.initialContact)==null?void 0:$.emailaddress1,mobilephone:(ne=e.initialContact)==null?void 0:ne.mobilephone,bistech_receivealertnotifications:(le=e.initialContact)==null?void 0:le.bistech_receivealertnotifications,bistech_receivemajorincidentupdates:(Me=e.initialContact)==null?void 0:Me.bistech_receivemajorincidentupdates,bistech_receivepewnotifications:(Te=e.initialContact)==null?void 0:Te.bistech_receivepewnotifications,bistech_receivesecurityupdates:(z=e.initialContact)==null?void 0:z.bistech_receivesecurityupdates,bistech_receivecustomernewsletter:(X=e.initialContact)==null?void 0:X.bistech_receivecustomernewsletter,bistech_receiveproductupdates:(q=e.initialContact)==null?void 0:q.bistech_receiveproductupdates,statecode:(oe=e.initialContact)==null?void 0:oe.statecode}),u=[{description:"First Name is Populated.",isValid:()=>Boolean(c.firstname),customerMessage:"Please populate a 'First Name'."},{description:"Last Name is Populated.",isValid:()=>Boolean(c.lastname),customerMessage:"Please populate a 'Last Name'."},{description:"Job Title is Populated.",isValid:()=>Boolean(c.jobtitle),customerMessage:"Please populate a 'Job Title'."},{description:"Contact Type is not Populated.",isValid:()=>Boolean(e.initialContact.bistech_portalcontacttype),customerMessage:"'Contact Type' cannot be updated after creation."},{description:"Email Address is malformed.",isValid:()=>{var Z;return((Z=e.initialContact.emailaddress1)==null?void 0:Z.includes("@"))??!1},customerMessage:"Please include an '@' in the email address."},{description:"Ensure a contact type is populated",isValid:()=>Boolean(c.emailaddress1||c.telephone1||c.mobilephone),customerMessage:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone."}],[f,v]=g.useState({loadingStatus:"not-started"}),[A,p]=g.useState({loadingStatus:"not-started"}),[C,y]=g.useState(""),[h,b]=g.useState(""),[w,S]=g.useState(""),[E,I]=g.useState(!1),[F,k]=g.useState(localStorage.getItem(Vl)!=="false"?{isEnabled:!0,currentStageNumber:1}:{isEnabled:!1}),D=ve(Z=>Z.isDirty),[P,H]=g.useState(!1),[G,_]=g.useState(!1),[M,K]=g.useState({state:"idle"});if(g.useEffect(()=>{const{statecode:Z,...ue}=c,ye=Object.keys(Av(e.initialContact,ue)).length>0;i({type:"SetIsDirty",isDirty:ye}),i({type:"SetSaveDirtyPage",saveDirtyPage:{saveFunction:()=>Q(),submissionPrerequisites:u}})},[c,e.initialContact,M]),g.useEffect(()=>{if(!e.initialContact||A.loadingStatus!=="loaded"||n.loadingStatus!=="loaded")return;Z(e.initialContact,A.data),v(()=>{const ue={label:"Activate",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalTitle:"Activate",modalButtonLabel:"Activate",modalContent:"Are you sure you want to activate this record?",onClick:async()=>{if(t.loadingStatus!=="loaded")throw new Error("Expected `contacts` to have loaded before submission");const Ct=await o.updateContact(e.initialContact.contactid,{statecode:Fe.Active});i({type:"SetContacts",contacts:{loadingStatus:"loaded",data:t.data.filter(St=>St.contactid!==Ct.contactid).concat([Ct])}}),i({type:"AddNotification",notification:{message:"Contact activated successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},ye={label:"Deactivate",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalTitle:"Are you sure?",modalButtonLabel:"Deactivate",modalContent:(()=>{const Ct=n.data.find(vi=>vi.accountid===a.accountId);return Boolean((Ct==null?void 0:Ct._primarycontactid_value)===e.initialContact.contactid)?N(re,{children:[m("strong",{children:"Warning:"})," You are about to deactivate the Key Service Contact of your organisation. Are you sure you wish to continue?"]}):r.activeIncidents.loadingStatus==="loaded"&&r.activeIncidents.data.some(vi=>vi._primarycontactid_value===e.initialContact.contactid)?N(re,{children:[m("strong",{children:"Warning:"})," You are about to deactivate the Primary Contact of at least one case. Are you sure you wish to continue?"]}):m(re,{children:"You are about to deactivate this contact. Are you sure you wish to continue?"})})(),onClick:async()=>{if(t.loadingStatus!=="loaded")throw new Error("Expected `contacts` to have loaded before submission");const Ct=await o.updateContact(e.initialContact.contactid,{statecode:Fe.Inactive});i({type:"SetContacts",contacts:{loadingStatus:"loaded",data:t.data.filter(St=>St.contactid!==Ct.contactid).concat([Ct])}}),i({type:"AddNotification",notification:{message:"Contact deactivated successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},be={label:"Send Invite",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalTitle:"Send Invite?",modalButtonLabel:"Proceed",modalContent:N(re,{children:[N("p",{children:["Are you sure you would like to send an invitation with"," ",m("strong",{children:e.initialContact.bistech_permissionlevel?Ue[e.initialContact.bistech_permissionlevel]:"no"})," ","permissions?"]}),m("p",{children:"If you would like to change the contact's permissions, please save the form first."})]}),onClick:async()=>{await o.executeSendInvitationPortalAction(e.initialContact.contactid),p({loadingStatus:"loaded",data:{_adx_invitecontact_value:e.initialContact.contactid,adx_invitationid:"00000000-0000-0000-0000-000000000000",bistech_authenticationtype:null,createdon:new Date().toLocaleDateString(),statuscode:Nt.Sent}}),i({type:"AddNotification",notification:{message:"Contact Invitation sent successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},qe={label:"Set as Key Contact",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalTitle:"Are you sure?",modalButtonLabel:"Proceed",modalContent:"Are you sure you would like to set this user as your organisation's Key Service Contact?",onClick:async()=>{if(n.loadingStatus!=="loaded")throw new Error("Expected `accounts` to have loaded before submission");const Ct=await o.updateAccount(a.accountId,{_primarycontactid_value:e.initialContact.contactid});i({type:"SetAccounts",accounts:{loadingStatus:"loaded",data:n.data.filter(St=>St.accountid!==Ct.accountid).concat([{...Ct,_primarycontactid_value:e.initialContact.contactid}])}}),i({type:"AddNotification",notification:{message:"Key Contact updated successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},mn={label:"Send Invite",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!0,modalTitle:"Missing Email Address",modalButtonLabel:"",modalContent:N(re,{children:[m("p",{children:"This contact cannot be invited to the Bistech portal as they have no email address."}),m("p",{children:"Please update this information and save the contact before inviting them to the Bistech portal."})]})}},Vt={label:"Send Invite",hasModal:!0,appInsights:{submissionEventType:"Edit Contact - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Contact - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!0,modalTitle:"Missing Permission Level",modalButtonLabel:"",modalContent:N(re,{children:[N("p",{children:["This contact cannot be invited to the Bistech portal as they have"," ",m("strong",{children:"No Access"})," as their Permission Level."]}),m("p",{children:"Please update this information and save the contact before inviting them to the Bistech portal."})]})}},$n=(()=>{const Ct=e.initialContact.statecode===Fe.Active,St=a.contactId===e.initialContact.contactid;return Ct&&!St})(),jr=(()=>{const Ct=e.initialContact.statecode===Fe.Inactive,St=a.contactId===e.initialContact.contactid;return Ct&&!St})(),Tn=function(){if(!A.data)return!!$n;const Ct=A.data.statuscode===Nt["Pending Send"]||A.data.statuscode===Nt.Sent,St=a.contactId===e.initialContact.contactid;return $n&&!Ct&&!St}(),fi=function(){const Ct=e.initialContact.statecode===Fe.Active,St=a.portalContactPermissionLevel===Qe["All Contacts"],Lo=n.data.some(vi=>vi._primarycontactid_value===e.initialContact.contactid);return Ct&&St&&!Lo}(),Ce=(()=>{var vi;const Ct=a.contactId===e.initialContact.contactid,St=((vi=A.data)==null?void 0:vi.bistech_authenticationtype)===An.Local,Lo=e.initialContact.statecode===Fe.Active;return Ct&&St&&Lo})(),Ea=function(){return e.initialContact.emailaddress1?!e.initialContact.bistech_permissionlevel||e.initialContact.bistech_permissionlevel===Ue["No Access"]||e.initialContact.bistech_portalcontactpermissionlevel===Qe["No Access"]&&e.initialContact.bistech_portalcasepermissionlevel===Pe["No Access"]&&e.initialContact.bistech_portalorderpermissionlevel===ze["No Access"]?Vt:be:mn}(),vd={label:"Change Password",hasModal:!1,onClick:async()=>{window.location.href="/Account/Manage/ChangePassword"}};return{loadingStatus:"loaded",data:{title:C,description:h,icon:w,buttons:[...$n?[ye]:[],...jr?[ue]:[],...Tn?[Ea]:[],...fi?[qe]:[],...Ce?[vd]:[]]}}});function Z(ue,ye){if(ue.statecode===Fe.Inactive){y("Inactive"),b("Activate this contact to give access"),S("contact-status-inactive.svg");return}if(ue.adx_identity_logonenabled){y("Active"),ue.contactid===a.contactId?b("Update your profile information below"):b("Deactivate to revoke access"),S("contact-status-active.svg");return}if(!ye){y("No Access"),b("Send an invitation to give access"),S("contact-status-no-access.svg");return}switch(ye.statuscode){case Nt.New:y("No Access"),b("Send an invitation to give access"),S("contact-status-no-access.svg");return;case Nt["Pending Send"]:y("Awaiting Redemption"),b("Awaiting Invitation redemption"),S("contact-status-awaiting-redemption.svg");return;case Nt.Sent:y("Awaiting Redemption"),b("Awaiting Invitation redemption"),S("contact-status-awaiting-redemption.svg");return;case Nt.Redeemed:if(ue.adx_identity_logonenabled){y("Active"),b("Deactivate to revoke access"),S("contact-status-active.svg");return}else{y("No Access"),b("Send an invitation to give access"),S("contact-status-no-access.svg");return}case Nt.Expired:y("No Access"),b("Send an invitation to give access"),S("contact-status-no-access.svg");return;default:y("No Access"),b("Send an invitation to give access"),S("contact-status-no-access.svg");return}}},[e.initialContact,A,C,h,w,n,o,i,a,t]),g.useEffect(()=>{e.initialContact&&A.loadingStatus==="not-started"&&(v({loadingStatus:"loading"}),p({loadingStatus:"loading"}),o.retrievePortalInvitations(e.initialContact.contactid).then(Z=>{const ue=Z.sort((ye,be)=>new Date(be.createdon).getTime()-new Date(ye.createdon).getTime());p({loadingStatus:"loaded",data:ue[0]||null})}).catch(Z=>i({type:"AddLatestError",error:Z})))},[e.initialContact,o,i,A,v,p]),!a.contactId)throw new Error(`Expected the user contactID to be populated but was '${a.contactId}' `);if(g.useEffect(()=>{_(!0)},[]),!e.initialContact||!c)return m(Ur,{type:"record-not-found",singularEntityName:"Contact"});async function Q(){if(t.loadingStatus!=="loaded")throw new Error("Expected `contacts` to have loaded before submission");K({state:"submitting"}),l==null||l({type:"Edit Contact - Contact update submitted",contactId:e.initialContact.contactid});let Z;try{Z=await o.updateContact(e.initialContact.contactid,Av(e.initialContact,c))}catch(ue){K({state:"errored",error:ue}),s==null||s(ue);return}l==null||l({type:"Edit Contact - Contact updated successfully",contactId:e.initialContact.contactid}),i({type:"SetContacts",contacts:{loadingStatus:"loaded",data:t.data.map(ue=>ue.contactid===Z.contactid?Z:ue)}}),K({state:"completed"}),e.onSave(),i({type:"AddNotification",notification:{message:"Contact updated successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}g.useEffect(()=>{F.isEnabled||I(!1)},[F]);const O=g.useRef(null);return N(P0,{title:[e.initialContact.firstname,e.initialContact.lastname].filter(Z=>Z).join(" "),tags:[],callToActionInformation:f,setSubmissionState:K,children:[m("form",{className:"edit-contact","data-submit-attempted":P,onSubmit:async Z=>{Z.preventDefault(),await Q()},onInvalid:()=>{G&&H(!0)},children:N(re,{children:[N("div",{className:"main-content",children:[N("div",{className:"information-container",children:[m("h2",{className:"heading",children:"Information"}),N(re,{children:[m(Zh,{label:"Contact Type",name:"user_contact_type",options:[{id:Qt.IndividualContact,label:"Individual Contact"},{id:Qt.TeamContact,label:"Team Contact"}],selectedOptionId:e.initialContact.bistech_portalcontacttype,onChange:()=>{},additionalSelectProps:{required:!0,disabled:!0,title:"'Contact Type' cannot be updated after creation."}}),e.initialContact.bistech_portalcontacttype===Qt.IndividualContact?m(Xt,{label:"First Name",name:"firstname",value:c.firstname||"",onChange:Z=>d({...c,firstname:Z}),additionalInputProps:{required:!0,disabled:e.initialContact.statecode===Fe.Inactive}}):c.firstname!==""?d({...c,firstname:""}):null,m(Xt,{label:e.initialContact.bistech_portalcontacttype===Qt.IndividualContact?"Last Name":"Team Name",name:"lastname",value:c.lastname||"",onChange:Z=>d({...c,lastname:Z}),additionalInputProps:{required:!0,disabled:e.initialContact.statecode===Fe.Inactive}}),e.initialContact.bistech_portalcontacttype===Qt.IndividualContact?m(Xt,{label:"Job Title",name:"jobtitle",value:c.jobtitle||"",onChange:Z=>d({...c,jobtitle:Z}),additionalInputProps:{required:!0}}):c.jobtitle!==""?d({...c,jobtitle:""}):null]}),m(oc,{name:"_bistech_primarysite_value",label:"Primary Site",selectedOptionId:c._bistech_primarysite_value??null,pluralOptionsName:"Active Sites",options:n.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:n.data.map(Z=>({id:Z.accountid,primaryText:`${Z.name}`,secondaryText:$o[Z.bistech_sitetype],isPickable:Z.statecode===yl.Active&&Z.bistech_sitetype!==$o["Legal Entity"],account:Z}))},setSelectedOptionId:Z=>d({...c,_bistech_primarysite_value:Z}),additionalInputProps:{placeholder:"Select a Site",required:!1,disabled:e.initialContact.statecode===Fe.Inactive},selectedOptionCardInfo:Z=>({icon:m(W4,{}),primaryText:Z.primaryText,secondaryText:Z.secondaryText,additionalFields:[]})}),m(Xt,{label:"Email Address",name:"emailaddress",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:c.emailaddress1||"",onChange:Z=>d({...c,emailaddress1:Z}),additionalInputProps:{required:!0,type:"email",title:"'Email Address' cannot be updated. Contact Service Desk if an update is required.",disabled:A.loadingStatus!=="loaded"||((ce=A.data)==null?void 0:ce.bistech_authenticationtype)===An.Local},requiredGroup:!0,customValidity:()=>!c.emailaddress1&&!c.telephone1&&!c.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""}),m(Xh,{label:"Direct Dial",name:"directdial",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:c.telephone1||"",onChange:Z=>d({...c,telephone1:Z}),additionalInputProps:{required:!1,disabled:e.initialContact.statecode===Fe.Inactive},requiredGroup:!0,customValidity:()=>!c.emailaddress1&&!c.telephone1&&!c.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""}),m(Xh,{label:"Mobile Phone",name:"mobilephone",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:c.mobilephone||"",onChange:Z=>d({...c,mobilephone:Z}),additionalInputProps:{required:!1,disabled:e.initialContact.statecode===Fe.Inactive},requiredGroup:!0,customValidity:()=>!c.emailaddress1&&!c.telephone1&&!c.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""})]}),N("div",{className:"preferences-container",children:[m("h2",{className:"heading",children:"Preferences"}),m(PR,{name:"bistech_permissionlevel",label:"Permissions",tooltip:N(re,{children:[N("p",{children:[m("strong",{children:"No Access"})," - The user or team will have no access to the portal."]}),N("p",{children:[m("strong",{children:"Administrator"})," - The user or team will have access to all features of the portal."]}),N("p",{children:[m("strong",{children:"Custom"})," - The user or team will have customised access to certain features of the portal."]})]}),value:`${e.initialContact.bistech_permissionlevel?Ue[e.initialContact.bistech_permissionlevel]:"None"} (edit)`,subText:m(xR,{contact:c}),onClick:()=>I(!E),additionalLabelProps:{ref:O},additionalButtonProps:{title:a.portalContactPermissionLevel!==Qe["All Contacts"]?"Only a user with the 'All Contacts' Contact permission level can update this field.":e.initialContact.statecode===Fe.Inactive?"A deactivated Contact cannot be updated.":void 0,disabled:a.portalContactPermissionLevel!==Qe["All Contacts"]||e.initialContact.statecode===Fe.Inactive}}),m(R0,{refElement:O.current,isVisible:F.isEnabled&&F.currentStageNumber===1,onDismiss:()=>{k({isEnabled:!1}),localStorage.setItem(Vl,"false")},onNext:()=>{k({isEnabled:!0,currentStageNumber:2}),I(!0)},headline:"Permissions have changed",content:`We've added new features to the Portal, so you can now give users customised access to specific\r features`,stageProgress:{stageNumber:1,totalStageCount:3}}),m(Ei,{name:"receivealertnotifications",label:"Receive Alert Notifications?",tooltip:"Receive Network Alert Notifications if our proactive monitoring tool identifies issues with your Company's sites.",value:c.bistech_receivealertnotifications??!1,onChange:Z=>d({...c,bistech_receivealertnotifications:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}}),m(Ei,{name:"receiveplannedmaintenancenotifications",label:"Receive Planned Maintenance Notifications?",tooltip:"Receive Planned Maintenance Notifications if your Company's services are identified as affected.",value:c.bistech_receivepewnotifications??!1,onChange:Z=>d({...c,bistech_receivepewnotifications:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}}),m(Ei,{name:"receivemajorincidentupdates",label:"Receive Major Incident Updates?",tooltip:"Receive regular updates if your Company has a Case associated to a Major Incident.",value:c.bistech_receivemajorincidentupdates??!1,onChange:Z=>d({...c,bistech_receivemajorincidentupdates:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}}),m(Ei,{name:"receivesecurityupdates",label:"Receive Security Updates?",tooltip:"Receive Security Updates when known threats or vulnerabilities are reported in the marketplace.",value:c.bistech_receivesecurityupdates??!1,onChange:Z=>d({...c,bistech_receivesecurityupdates:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}}),m(Ei,{name:"receivecustomernewsletter",label:"Receive Customer Newsletter?",tooltip:"Receive the Bistech Customer Newsletter covering news, views and the latest IT industry development.",value:c.bistech_receivecustomernewsletter??!1,onChange:Z=>d({...c,bistech_receivecustomernewsletter:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}}),m(Ei,{name:"receiveproductupdates",label:"Receive Product Updates?",tooltip:"Receive Product Updates, roadmap information and end of life announcements.",value:c.bistech_receiveproductupdates??!1,onChange:Z=>d({...c,bistech_receiveproductupdates:Z}),additionalInputProps:{disabled:e.initialContact.statecode===Fe.Inactive}})]})]}),M.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to update Contact"}),": ",M.error.message]}),N("fieldset",{className:"buttons",children:[N("button",{type:"submit",disabled:M.state==="submitting"||e.initialContact.statecode===Fe.Inactive||!D,title:D?e.initialContact.statecode===Fe.Inactive?`Contact is read-only as it is ${Fe[e.initialContact.statecode]}. Activate the Contact to make changes.`:void 0:"No changes to save",children:[M.state==="submitting"&&m(di,{className:"spin"}),"Save"]}),m(qt,{className:"button default",to:Xe.Contacts.path,children:"Cancel"})]})]})}),E&&m(kR,{closePopup:()=>I(!1),contact:c,teachingBubbleState:F,setTeachingBubbleState:k,submitLabel:"Save",onSave:async Z=>{const ue={...c,...Z};d(ue),await Q()}})]})},LH=()=>{const e=nc(),t=Nn(),n=dn(),r=Jn(),{trackExceptionWithBistechMetadata:i,trackEventWithBistechMetadata:o}=Mn(),a=ve(E=>E.accounts),s=ve(E=>E.contacts),[l,c]=g.useState(!1),[d,u]=g.useState(localStorage.getItem(Vl)!=="false"?{isEnabled:!0,currentStageNumber:1}:{isEnabled:!1}),[f,v]=g.useState(!1),[A,p]=g.useState(!1),[C,y]=g.useState({state:"idle"}),[h,b]=g.useState({bistech_portalcontacttype:Qt.IndividualContact,firstname:"",lastname:"",jobtitle:"",telephone1:null,_bistech_primarysite_value:null,_parentcustomerid_value:n.accountId,bistech_permissionlevel:Ue["No Access"],bistech_portalcasepermissionlevel:Pe["No Access"],bistech_portalcontactpermissionlevel:Qe["No Access"],bistech_portalorderpermissionlevel:ze["No Access"],bistech_portalinvoicepermissionlevel:gt["No Access"],emailaddress1:"",mobilephone:null,bistech_receivealertnotifications:!1,bistech_receivemajorincidentupdates:!1,bistech_receivepewnotifications:!1,bistech_receivesecurityupdates:!1,bistech_receivecustomernewsletter:!1,bistech_receiveproductupdates:!1,bistech_isshowninportal:!0});async function w(E){if(E.preventDefault(),s.loadingStatus!=="loaded")throw new Error("Expected `incidents` to have loaded before submission");y({state:"submitting"}),o==null||o({type:"Create Contact - Contact creation submitted"});let I;try{I=await r.createContact(h)}catch(k){y({state:"errored",error:k}),i==null||i(k);return}o==null||o({type:"Create Contact - Contact created successfully",contactId:I.contactid}),t({type:"SetContacts",contacts:{loadingStatus:"loaded",data:s.data.concat([I])}}),y({state:"completed"});const F=`${Xe.EditContact.path}?id=${I.contactid}`;t({type:"AddNotification",notification:{message:"Contact created successfully",displayedOnRelativeUrl:F,displayUntil:Ze.addSeconds(new Date,10)}}),e(F)}g.useEffect(()=>{p(!0)},[]),g.useEffect(()=>{d.isEnabled||c(!1)},[d]);const S=g.useRef(null);return N(Dn,{title:"Create Contact",children:[m("form",{className:"create-contact","data-submit-attempted":f,onSubmit:w,onInvalid:()=>{A&&v(!0)},children:N(re,{children:[N("div",{className:"main-content",children:[N("div",{className:"information-container",children:[m("h2",{className:"heading",children:"Information"}),N(re,{children:[m(Zh,{label:"Contact Type",name:"user_contact_type",options:[{id:Qt.IndividualContact,label:"Individual Contact"},{id:Qt.TeamContact,label:"Team Contact"}],selectedOptionId:h.bistech_portalcontacttype,onChange:E=>b({...h,bistech_portalcontacttype:E})}),h.bistech_portalcontacttype===Qt.IndividualContact?m(Xt,{label:"First Name",name:"firstname",value:h.firstname||"",onChange:E=>b({...h,firstname:E}),additionalInputProps:{required:!0}}):h.firstname!==""?b({...h,firstname:""}):null,m(Xt,{label:h.bistech_portalcontacttype===Qt.IndividualContact?"Last Name":"Team Name",name:"lastname",value:h.lastname||"",onChange:E=>b({...h,lastname:E}),additionalInputProps:{required:!0}}),h.bistech_portalcontacttype===Qt.IndividualContact?m(Xt,{label:"Job Title",name:"jobtitle",value:h.jobtitle||"",onChange:E=>b({...h,jobtitle:E}),additionalInputProps:{required:!0}}):h.jobtitle!==""?b({...h,jobtitle:""}):null]}),m(oc,{name:"_bistech_primarysite_value",label:"Primary Site",selectedOptionId:h._bistech_primarysite_value,pluralOptionsName:"Active Sites",options:a.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:a.data.map(E=>({id:E.accountid,primaryText:`${E.name}`,secondaryText:$o[E.bistech_sitetype],isPickable:E.statecode===yl.Active&&E.bistech_sitetype!==$o["Legal Entity"],account:E}))},setSelectedOptionId:E=>b({...h,_bistech_primarysite_value:E}),selectedOptionCardInfo:E=>({icon:m(W4,{}),primaryText:E.primaryText,secondaryText:E.secondaryText,additionalFields:[]}),additionalInputProps:{placeholder:"Select a Site",required:!1}}),m(Xt,{label:"Email Address",name:"emailaddress",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:h.emailaddress1||"",onChange:E=>b({...h,emailaddress1:E}),additionalInputProps:{required:!1,type:"email"},requiredGroup:!0,customValidity:()=>!h.emailaddress1&&!h.telephone1&&!h.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""}),m(Xh,{label:"Direct Dial",name:"directdial",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:h.telephone1||"",onChange:E=>b({...h,telephone1:E}),additionalInputProps:{required:!1},requiredGroup:!0,customValidity:()=>!h.emailaddress1&&!h.telephone1&&!h.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""}),m(Xh,{label:"Mobile Phone",name:"mobilephone",title:"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.",value:h.mobilephone||"",onChange:E=>b({...h,mobilephone:E}),additionalInputProps:{required:!1},requiredGroup:!0,customValidity:()=>!h.emailaddress1&&!h.telephone1&&!h.mobilephone?"You must supply at least one of the following fields: Email, Direct Dial, Mobile Phone.":""})]}),N("div",{className:"preferences-container",children:[m("h2",{className:"heading",children:"Preferences"}),m(PR,{name:"bistech_permissionlevel",label:"Permissions",tooltip:N(re,{children:[N("p",{children:[m("strong",{children:"No Access"})," - The user or team will have no access to the portal."]}),N("p",{children:[m("strong",{children:"Administrator"})," - The user or team will have access to all features of the portal."]}),N("p",{children:[m("strong",{children:"Custom"})," - The user or team will have customised access to certain features of the portal."]})]}),value:`${h.bistech_permissionlevel?Ue[h.bistech_permissionlevel]:"None"} (edit)`,subText:m(xR,{contact:h}),onClick:()=>c(!l),additionalLabelProps:{ref:S}}),m(R0,{refElement:S.current,isVisible:d.isEnabled&&d.currentStageNumber===1,onDismiss:()=>{u({isEnabled:!1}),localStorage.setItem(Vl,"false")},onNext:()=>{u({isEnabled:!0,currentStageNumber:2}),c(!0)},headline:"Permissions have changed",content:`We've added new features to the Portal, so you can now give users customised access to specific\r features`,stageProgress:{stageNumber:1,totalStageCount:3}}),m(Ei,{name:"receivealertnotifications",label:"Receive Alert Notifications?",tooltip:"Receive Network Alert Notifications if our proactive monitoring tool identifies issues with your Company's sites.",value:h.bistech_receivealertnotifications,onChange:E=>b({...h,bistech_receivealertnotifications:E})}),m(Ei,{name:"receiveplannedmaintenancenotifications",label:"Receive Planned Maintenance Notifications?",tooltip:"Receive Planned Maintenance Notifications if your Company's services are identified as affected.",value:h.bistech_receivepewnotifications,onChange:E=>b({...h,bistech_receivepewnotifications:E})}),m(Ei,{name:"receivemajorincidentupdates",label:"Receive Major Incident Updates?",tooltip:"Receive regular updates if your Company has a Case associated to a Major Incident.",value:h.bistech_receivemajorincidentupdates,onChange:E=>b({...h,bistech_receivemajorincidentupdates:E})}),m(Ei,{name:"receivesecurityupdates",label:"Receive Security Updates?",tooltip:"Receive Security Updates when known threats or vulnerabilities are reported in the marketplace.",value:h.bistech_receivesecurityupdates,onChange:E=>b({...h,bistech_receivesecurityupdates:E})}),m(Ei,{name:"receivecustomernewsletter",label:"Receive Customer Newsletter?",tooltip:"Receive the Bistech Customer Newsletter covering news, views and the latest IT industry development.",value:h.bistech_receivecustomernewsletter,onChange:E=>b({...h,bistech_receivecustomernewsletter:E})}),m(Ei,{name:"receiveproductupdates",label:"Receive Product Updates?",tooltip:"Receive Product Updates, roadmap information and end of life announcements.",value:h.bistech_receiveproductupdates,onChange:E=>b({...h,bistech_receiveproductupdates:E})})]})]}),C.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to create Contact"}),": ",C.error.message]}),N("fieldset",{className:"buttons",children:[N("button",{type:"submit",disabled:C.state==="submitting",children:[C.state==="submitting"&&m(di,{className:"spin"}),"Submit"]}),m(qt,{className:"button default",to:Xe.Contacts.path,children:"Cancel"})]})]})}),l&&m(kR,{closePopup:()=>c(!1),contact:h,teachingBubbleState:d,setTeachingBubbleState:u,submitLabel:"Ok",onSave:E=>b({...h,...E})})]})},_R=e=>{const t=Nn(),n=Jn(),r=ve(c=>c.contacts),[i,o]=g.useState(1),[a,s]=g.useState({loadingStatus:"not-started"});g.useEffect(()=>{s({loadingStatus:"not-started"})},[r,i]);const l=g.useMemo(()=>{if(a.loadingStatus==="not-started"&&(s({loadingStatus:"loading"}),n.retrieveContact(e.contactid).then(d=>s({loadingStatus:"loaded",data:d})).catch(d=>{t({type:"AddLatestError",error:d}),s({loadingStatus:"errored",error:d})})),a.loadingStatus==="loaded")return{loadingStatus:"loaded",data:a.data};if(r.loadingStatus!=="loaded")return{loadingStatus:"loading"};const c=r.data.find(d=>d.contactid===e.contactid);return c?{loadingStatus:"loaded",data:c}:{loadingStatus:"loading"}},[r,a,n,e.contactid,t]);return a.loadingStatus==="errored"?m(Ur,{type:"record-not-found",singularEntityName:"Contact"}):l.loadingStatus!=="loaded"?m(Dn,{title:"",children:m(Or,{})}):m(BH,{initialContact:l.data,onSave:()=>o(i+1)})},OH=()=>{const[e]=nd(),t="id",n=e.get(t);return n?m(_R,{contactid:n}):m(Ur,{singularEntityName:"Contact",type:"record-not-found"})},gn=({imagePath:e,tile:t,modalMessage:n})=>{const{trackEventWithBistechMetadata:r}=Mn(),i=ve(v=>v.products),[o,a]=g.useState(""),[s,l]=g.useState(!1),c=dn(),d=ve(v=>v);g.useEffect(()=>{if(t.type=="page"){const A=Object.values(Xe).find(C=>C.path===t.link);(A==null?void 0:A.isPermitted(c,d))&&a(t.link)}if(i.loadingStatus!=="loaded"||t.type!=="customer-asset")return;const v=i.data.filter(A=>A.bistech_portaltilemapping===t.tileMapping);v.length>=1&&a(v[0].bistech_tiletargeturl)},[i,t]);const u=()=>{l(!0),window.scrollTo({top:0,behavior:"smooth"})},f={label:n||"",hasModal:!0,modalInfo:{isErrorModal:!1,modalButtonLabel:"Confirm",modalContent:m(re,{children:n}),modalTitle:t.label,onClick:async()=>{const v=window.open();v.opener=null,v.location=o,r==null||r({type:"Home - Customer Asset tile clicked",tileName:t.label})}}};return o?n?N(re,{children:[m("a",{"data-has-link":!0,onClick:()=>u(),target:"_blank",rel:"noreferrer",className:"tile",children:N(yt,{children:[m("div",{className:"tile-image-container",children:m(En,{className:"tile-image",src:e,width:40,height:40})}),m("p",{className:"tile-title",children:t.label})]})}),m(im,{buttonInfo:f,isModalShown:s,setIsModalShown:l})]}):o.startsWith("http://")||o.startsWith("https://")?m("a",{"data-has-link":!0,href:o,target:"_blank",rel:"noreferrer",className:"tile",onClick:()=>r==null?void 0:r({type:"Home - Customer Asset tile clicked",tileName:t.label}),children:N(yt,{children:[m("div",{className:"tile-image-container",children:m(En,{className:"tile-image",src:e,width:40,height:40})}),m("p",{className:"tile-title",children:t.label})]})}):m(qt,{"data-has-link":!0,to:o,className:"tile",onClick:()=>r==null?void 0:r({type:"Home - Customer Asset tile clicked",tileName:t.label}),children:N(yt,{children:[m("div",{className:"tile-image-container",children:m(En,{className:"tile-image",src:e,width:40,height:40})}),m("p",{className:"tile-title",children:t.label})]})}):m("div",{"data-has-link":!1,className:"tile",title:i.loadingStatus==="loading"?"Loading...":void 0,children:N(yt,{children:[m("div",{className:"tile-image-container",children:m(En,{className:"tile-image",src:e,width:40,height:40})}),m("p",{className:"tile-title",children:t.label})]})})},UH=e=>e>300*5?"5:0":e>300*4?"4:1":e>300*3?"3:2":e>300*2?"2:2":"1",jH=()=>{const[e,t]=g.useState(""),n=16,r=Gv(),i=r>=1025?288:0,o=r-n-i;return g.useEffect(()=>{t(UH(o))},[o]),N(re,{children:[m(Vw,{}),m("div",{className:"masthead",children:N("div",{className:"masthead-content",children:[m("div",{className:"branding",children:m(En,{src:"/bistech-logo.png",width:224,height:72})}),m("div",{children:m("h1",{className:"title",children:"Customer Portal"})})]})}),N("div",{className:"tiles",children:[N("section",{className:"tile-group",children:[m("span",{className:"tile-group-title",children:"Management"}),m(gn,{imagePath:"/home-icon-case-management.svg",tile:{type:"page",label:"Cases",link:Xe.Cases.path}}),m(gn,{imagePath:"/home-icon-contacts.svg",tile:{type:"page",label:"Contacts",link:Xe.Contacts.path}}),!wn&&m(gn,{imagePath:"/home-icon-order-management.svg",tile:{type:"page",label:"Orders",link:Xe.Orders.path}}),!wn&&m(gn,{imagePath:"/home-icon-invoices.svg",tile:{type:"page",label:"Invoices",link:Xe.Invoices.path}})]}),e!=="1"&&m("div",{className:"tile-group-seperator"}),N("section",{className:"tile-group",children:[m("span",{className:"tile-group-title",children:"Infrastructure"}),m(gn,{imagePath:"/home-icon-meraki.svg",tile:{type:"customer-asset",label:"Meraki",tileMapping:Ge.Meraki}}),m(gn,{imagePath:"/home-icon-ninja-rmm.svg",tile:{type:"customer-asset",label:"Ninja RMM",tileMapping:Ge.NinjaRMM}}),m(gn,{imagePath:"/home-icon-solarwinds.svg",tile:{type:"customer-asset",label:"Solarwinds",tileMapping:Ge.Solarwinds}}),m(gn,{imagePath:"/home-icon-v-cloud-director.svg",tile:{type:"customer-asset",label:"VMWare",tileMapping:Ge.VMWare}})]}),e!=="2:2"&&e!=="1"&&m("div",{className:"tile-group-seperator"}),N("section",{className:"tile-group",children:[m("span",{className:"tile-group-title",children:"Security"}),m(gn,{imagePath:"/home-icon-fortianalyzer.svg",tile:{type:"customer-asset",label:"FortiAnalyzer",tileMapping:Ge.FortiAnalyzer},modalMessage:"In order to access the FortiAnalyzer, you must be connected to your company VPN."}),m(gn,{imagePath:"/home-icon-fortigate.svg",tile:{type:"customer-asset",label:"FortiGate",tileMapping:Ge.FortiGate},modalMessage:"In order to access the FortiGate, you must be connected to your company VPN."}),m(gn,{imagePath:"/home-icon-fortimail.svg",tile:{type:"customer-asset",label:"FortiMail",tileMapping:Ge.FortiMail}}),m(gn,{imagePath:"/home-icon-mimecast.svg",tile:{type:"customer-asset",label:"Mimecast",tileMapping:Ge.Mimecast}})]}),e!=="3:2"&&e!=="1"&&m("div",{className:"tile-group-seperator"}),N("section",{className:"tile-group",children:[m("span",{className:"tile-group-title",children:"Cloud Admin"}),m(gn,{imagePath:"/home-icon-8x8.svg",tile:{type:"customer-asset",label:"8x8",tileMapping:Ge._8x8}}),m(gn,{imagePath:"/home-icon-azure.svg",tile:{type:"customer-asset",label:"Azure",tileMapping:Ge.Azure}}),m(gn,{imagePath:"/home-icon-microsoft.svg",tile:{type:"customer-asset",label:"M365 Admin Centre",tileMapping:Ge.M365AdminCentre}}),m(gn,{imagePath:"/home-icon-nms.svg",tile:{type:"customer-asset",label:"NMS",tileMapping:Ge.NMS}})]}),(e==="5:0"||e==="3:2")&&m("div",{className:"tile-group-seperator"}),N("section",{className:"tile-group",children:[m("span",{className:"tile-group-title",children:"Licensing and Billing"}),m(gn,{imagePath:"/home-icon-abillity.svg",tile:{type:"customer-asset",label:"aBILLity",tileMapping:Ge.WebAbility}}),m(gn,{imagePath:"/home-icon-microsoft.svg",tile:{type:"customer-asset",label:"Microsoft Licensing",tileMapping:Ge.MicrosoftLicensing}})]})]})]})},HH=()=>{const e=dn();return e.contactId?m(_R,{contactid:e.contactId}):m(Ur,{singularEntityName:"Contact",type:"record-not-found"})},Xw=e=>{const n=ve(r=>r.isLocalMode)?`${{}.PUBLIC_URL}/images/basic-background.jpg`:"/basic-background.jpg";return m("div",{className:"dialog-background",style:{backgroundImage:`url("${n}"), linear-gradient(30deg, #29aacd, #29aacd, #a6ce39)`},children:m("div",{className:"dialog-box-container",role:"dialog","data-dialog-title":e.title,children:N("div",{className:"dialog-box",children:[e.showIcon&&m(En,{src:"bistech-logo.png",height:75,width:232,className:"dialog-logo"}),m("h3",{className:"dialog-heading",children:e.title}),m(yt,{children:e.content})]})})})},BR=()=>{const e=Nn(),t=Jn(),n=nc(),{trackExceptionWithBistechMetadata:r,trackEventWithBistechMetadata:i}=Mn(),[o,a]=g.useState({state:"idle"}),s=ve(c=>c.currentPage);g.useEffect(()=>{i==null||i({type:"Terms and Conditions - Prompted"})},[]);async function l(){a({state:"submitting"}),i==null||i({type:"Terms and Conditions - Accepted"});try{const{acceptedDate:c}=await t.setPortalTermsOfAgreementDate();if(e({type:"SetTermsAndConditionsAcceptanceDate",termsAndConditionsAcceptanceDate:c}),a({state:"completed"}),s.path===Xe.TermsAndConditions.path)return n(Xe.Home.path)}catch(c){a({state:"errored",error:c}),r==null||r(c)}}return m(Xw,{showIcon:!0,title:"Terms and Conditions",content:N(re,{children:[N("p",{className:"terms-and-conditions-text",children:["Use of the Bistech Self-Service Portal is governed by the Terms and Conditions found"," ",m("a",{target:"_blank",rel:"noreferrer",href:"https://www.bistech.co.uk/site-services/global-pages/Customer-Portal-Terms-and-Conditions",children:"here"}),"."]}),o.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to accept Terms and Conditions"}),": ",o.error.message]}),m("div",{className:"terms-and-conditions-accept",children:N("button",{className:"accept-button",onClick:()=>l(),disabled:o.state==="submitting"||o.state==="completed",children:[o.state==="submitting"&&m(di,{className:"spin"})," Accept"]})}),m("div",{className:"terms-and-conditions-cancel",children:m("a",{className:"cancel-button",href:Xe.SignOut.path,children:"Cancel"})})]})})},hD=()=>{const e=li();return m(Xw,{showIcon:!1,title:"Dev Mode limitation",content:N(re,{children:[N("p",{children:["The page ",m("strong",{children:e.pathname})," is not expected to work in Dev Mode."]}),m("p",{children:"If you wish to test this functionality, you will need to deploy to a full Dynamics 365 Portal."}),m("p",{children:m("button",{onClick:()=>window.history.back(),children:"Back"})})]})})},QA=e=>{const t=Zo().basePermissionLevel,n=Zo().portalCasePermissionLevel,r=Zo().portalOrderPermissionLevel,i=Zo().portalContactPermissionLevel,o=Zo().portalInvoicePermissionLevel,{trackEventWithBistechMetadata:a}=Mn();return g.useEffect(()=>{a==null||a({type:"Access Denied"})},[]),N(Dn,{title:"Forbidden",children:[m("p",{children:"Sorry, but you do not have permission to view this page."}),N("p",{children:["If you believe you should have access to this page, contact your IT Administrator to review your"," ","'Permission Level'."]}),t&&N("p",{children:[e.permissionLevelMessage&&e.permissionLevelMessage,m("br",{}),N("p",{children:["Your current 'Base Permission Level' is"," ",m("strong",{children:Ue[t]})]}),m("br",{}),N("p",{children:["Your current 'Case Permission Level' is"," ",m("strong",{children:n?Pe[n]:"Unknown"})]}),m("br",{}),N("p",{children:["Your current 'Order Permission Level' is"," ",m("strong",{children:r?ze[r]:"Unknown"})]}),m("br",{}),N("p",{children:["Your current 'Contact Permission Level' is"," ",m("strong",{children:i?Qe[i]:"Unknown"}),"."]}),m("br",{}),N("p",{children:["Your current 'Invoice Permission Level' is"," ",m("strong",{children:o?gt[o]:"Unknown"}),"."]})]})]})},LR=e=>{const t=e.date.toLocaleString("en-GB",{month:"short",year:"numeric"}),n=e.date.toLocaleTimeString("en-GB",{hour:"numeric",minute:"numeric"});return m("div",{className:"timeline-card-date",children:N("div",{className:"timestamp",children:[m("span",{className:"date",children:e.date.getDate()}),m("span",{className:"month-year",children:t}),m("span",{className:"time",children:n})]})})},KH=e=>{const{accountName:t}=dn(),n=N(re,{children:[m(En,{className:"bistech-icon",width:16,height:16,src:"favicon.png"}),"Service Desk"]}),r=N(re,{children:[m(pv,{className:"activity-icon"}),t]});return N("div",{className:"timeline-card","data-activity-type":e.timelineRecord.type,"data-direction":e.timelineRecord.direction,children:[m(LR,{date:new Date(e.timelineRecord.date)}),N("div",{className:"timeline-card-content",children:[N("div",{className:"timeline-transaction-info",children:[e.timelineRecord.type==="MajorIncidentUpdate"&&N(re,{children:[m("div",{className:"timeline-sender",title:"From: Service Desk",children:n}),N("div",{className:"timeline-activity-type",title:"Major Incident Update for your case",children:[m(I7,{className:"activity-icon"}),"Major Incident Update"]})]}),e.timelineRecord.type==="Email"&&N(re,{children:[(()=>{switch(e.timelineRecord.direction){case"from-bistech":return m(re,{children:N("div",{className:"timeline-sender",title:`From: Service Desk, To: ${t}`,children:[n," ",m(Km,{className:"direction-icon"})," ",r]})});case"from-customer":return N("div",{className:"timeline-sender",title:`From: ${t}, To: Service Desk`,children:[r," ",m(Km,{className:"direction-icon"})," ",n]});default:return m(re,{})}})(),N("div",{className:"timeline-activity-type",title:"Sent via Email",children:[m(e5,{className:"activity-icon"}),"Email"]})]}),e.timelineRecord.type==="Comment"&&N(re,{children:[(()=>{switch(e.timelineRecord.direction){case"from-bistech":return m(re,{children:N("div",{className:"timeline-sender",title:`From: Service Desk, To: ${t}`,children:[n," ",m(Km,{className:"direction-icon"})," ",r]})});case"from-customer":return N("div",{className:"timeline-sender",title:`From: ${t}, To: Service Desk`,children:[r," ",m(Km,{className:"direction-icon"})," ",n]});default:return m(re,{})}})(),N("div",{className:"timeline-activity-type",title:"Sent via Portal",children:[m(pv,{className:"activity-icon"}),"Portal"]})]})]}),(e.timelineRecord.type==="MajorIncidentUpdate"||e.timelineRecord.type==="Email")&&m("div",{className:"timeline-card-header",children:m("div",{className:"timeline-subject",title:e.timelineRecord.subject,children:e.timelineRecord.subject})}),m("div",{className:"timeline-card-body",children:m("p",{children:e.timelineRecord.body})})]})]})},WH=e=>{var n;const t=g.useRef(null);return e.customValidity!==void 0&&((n=t.current)==null||n.setCustomValidity(e.customValidity(t.current.validity))),m("label",{"data-name":e.name,className:"field",children:m(yt,{children:m("textarea",{className:"comment-field",name:e.name,value:e.value,placeholder:"Add a comment.",rows:3,onChange:r=>e.onChange(r.target.value),ref:t,autoFocus:!0})})})};var qw=(e=>(e[e.Sender=1]="Sender",e[e.ToRecipient=2]="ToRecipient",e[e.CCRecipient=3]="CCRecipient",e[e.BCCRecipient=4]="BCCRecipient",e[e.RequiredAttendee=5]="RequiredAttendee",e[e.OptionalAttendee=6]="OptionalAttendee",e[e.Organizer=7]="Organizer",e[e.Regarding=8]="Regarding",e[e.Owner=9]="Owner",e[e.Resource=10]="Resource",e[e.Customer=11]="Customer",e))(qw||{});const zH=e=>{const t=e.entityId,n=dn(),r=Jn(),{trackExceptionWithBistechMetadata:i}=Mn();if(!n.contactId)throw new Error("Expected `userMetadata.contactId` to be populated");const[o,a]=g.useState(!1),[s,l]=g.useState({_regardingobjectid_value:t,adx_portalcommentdirectioncode:Ve.Incoming,description:"",adx_portalcomment_activity_parties:[{participationtypemask:qw.Sender,_partyid_value:n.contactId}]}),[c,d]=g.useState({state:"idle"});async function u(){if(s.description===""){d({state:"errored",error:new Error("The comment can not be empty.")});return}d({state:"submitting"});const v=e.currentEntity.incidentid?"incident":"bistech_networkorder";let A;try{A=await r.sendPortalComment(s,v)}catch(p){d({state:"errored",error:p}),i==null||i(p);return}d({state:"completed"}),e.setPortalComments([...e.portalComments,A]),l({...s,description:""}),a(!1)}return o?N("div",{className:"timeline-card",children:[m(LR,{date:new Date}),N("div",{className:"timeline-card-content",children:[m("div",{className:"timeline-card-header",children:m("div",{className:"timeline-subject",children:"Add a Comment..."})}),N("div",{className:"timeline-card-body",children:[m(WH,{name:"Comment",value:s.description||"",onChange:f=>l({...s,description:f})}),N("div",{className:"timeline-submission",children:[c.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to create Comment"}),": ",c.error.message]}),m("button",{className:"cancel-comment default",type:"submit",onClick:()=>a(!o),children:"Cancel"}),N("button",{className:"submit-comment",type:"submit",onClick:()=>u(),disabled:c.state==="submitting",children:[c.state==="submitting"&&m(di,{className:"spin"}),"Submit"]})]})]})]})]}):m("div",{className:"timeline-comment-section",children:N("button",{type:"button",className:"timeline-comment-content",onClick:()=>a(!o),disabled:e.disabled,title:e.disabled?"A Portal Comment cannot be created as the Case is read-only":void 0,children:[m("div",{className:"comment-image",children:m("div",{className:"comment-pencil",children:m(n5,{size:"1.3em"})})}),N("div",{className:"comment-title",children:[m("div",{className:"comment-text",children:m("p",{children:"Add a Comment..."})}),m("div",{className:"chevron",children:m($8,{size:"1.3em"})})]})]})})},OR=e=>{const t=e.portalEmails.map(a=>({id:a.activityid,type:"Email",subject:a.subject,body:a.description,date:a.createdon,direction:a.bistech_direction?"from-bistech":"from-customer"})),n=e.portalComments.map(a=>({id:a.activityid,type:"Comment",body:a.description,date:a.createdon,direction:a.adx_portalcommentdirectioncode===Ve.Outgoing?"from-bistech":"from-customer"})),r=e.majorIncidentUpdates.map(a=>({id:a.activityid,type:"MajorIncidentUpdate",subject:`In reference to: ${e.ticketNumber}`,body:a.description,date:a.createdon,direction:"from-bistech"})),o=t.concat(n).concat(r).slice().sort((a,s)=>new Date(s.date).getTime()-new Date(a.date).getTime());return N("div",{className:"timeline-container",children:[m("h2",{className:"heading",children:"Timeline"}),m(zH,{currentEntity:e.currentEntity,setPortalComments:e.setPortalComments,portalComments:e.portalComments,disabled:e.disabled,entityId:e.entityId}),o.map(a=>m(KH,{timelineRecord:a},a.id))]})},VH=e=>{const t=ve(P=>P.incidents),n=ve(P=>P.contacts),r=Nn(),i=Jn(),o=dn(),{trackExceptionWithBistechMetadata:a,trackEventWithBistechMetadata:s}=Mn(),l=ve(P=>P.isDirty),[c,d]=g.useState({_primarycontactid_value:e.initialIncident._primarycontactid_value,bistech_customerreference:e.initialIncident.bistech_customerreference}),u=[{description:"Primary Contact field is not Populated.",isValid:()=>Boolean(c._primarycontactid_value),customerMessage:"Please populate a 'Primary Contact'"}],[f,v]=g.useState(!1),[A,p]=g.useState(""),[C,y]=g.useState(!1),[h,b]=g.useState({state:"idle"}),[w,S]=g.useState(e.initialIncident.incident_adx_portalcomments??[]);if(!o.contactId)throw new Error(`Expected the user contactID to be populated but was ${o.contactId} `);if(g.useEffect(()=>{const P=Object.keys(Av(e.initialIncident,c)).length>0;r({type:"SetIsDirty",isDirty:P}),r({type:"SetSaveDirtyPage",saveDirtyPage:{saveFunction:E,submissionPrerequisites:u}})},[c,e.initialIncident]),g.useEffect(()=>{y(!0)},[]),!e.initialIncident||!c)return m(Ur,{type:"record-not-found",singularEntityName:"Case"});async function E(){if(t.activeIncidents.loadingStatus!=="loaded")throw new Error("Expected `incidents` to have loaded before submission");b({state:"submitting"}),s==null||s({type:"Edit Case - Case update submitted",incidentId:e.initialIncident.incidentid});let P;try{P=await i.updateIncident(e.initialIncident.incidentid,Av(e.initialIncident,c))}catch(H){b({state:"errored",error:H}),a==null||a(H);return}s==null||s({type:"Edit Case - Case updated successfully",incidentId:e.initialIncident.incidentid}),r({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:t.activeIncidents.data.concat([P])}}),b({state:"completed"}),e.onSave(),r({type:"AddNotification",notification:{message:"Case updated successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}function I(){async function P(O){const R={_regardingobjectid_value:e.initialIncident.incidentid,adx_portalcommentdirectioncode:Ve.Incoming,description:O,adx_portalcomment_activity_parties:[{participationtypemask:qw.Sender,_partyid_value:o.contactId}]};s==null||s({type:"Edit Case - Portal Comment submitted",incidentId:e.initialIncident.incidentid});const T=await i.sendPortalComment(R,"incident");s==null||s({type:"Edit Case - Portal Comment created successfully",incidentId:e.initialIncident.incidentid,activityId:T.activityid}),S([...w,T])}const H={label:"Request Closure",hasModal:!0,appInsights:{submissionEventType:"Edit Case - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Case - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalButtonLabel:"Submit",modalContent:m(re,{children:m(zp,{name:"Reason",label:"Reason",onChange:p,value:A})}),modalTitle:"Request Closure",onClick:async()=>{const O=await i.executeRequestClosurePortalAction(e.initialIncident.incidentid);if(t.activeIncidents.loadingStatus!=="loaded")throw new Error(`Expected active Incidents to be loaded but was ${t.activeIncidents.loadingStatus}`);await P(`Case closure requested: ${A}`),r({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:[...t.activeIncidents.data.filter(R=>R.incidentid!==O.incidentid),{...O,statuscode:ie["Closure Requested"]}]}}),r({type:"AddNotification",notification:{message:"Case closure requested successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},G={label:"Request Reopen",hasModal:!0,appInsights:{submissionEventType:"Edit Case - Call-to-Action submitted",completedSuccessfullyEventType:"Edit Case - Call-to-Action completed successfully"},modalInfo:{isErrorModal:!1,modalButtonLabel:"Submit",modalContent:m(re,{children:m(zp,{name:"Reason",label:"Reason",onChange:p,value:A})}),modalTitle:"Request Closure",onClick:async()=>{const O=await i.executeRequestReopenPortalAction(e.initialIncident.incidentid);if(t.activeIncidents.loadingStatus!=="loaded")throw new Error(`Expected active Incidents to be loaded but was ${t.activeIncidents.loadingStatus}`);await P(`Case reopen requested: ${A}`),r({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:[...t.activeIncidents.data.filter(R=>R.incidentid!==O.incidentid),{...O,statuscode:ie["In Progress"]}]}}),r({type:"AddNotification",notification:{message:"Case reopened successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}}},_={label:"Confirm Closure",hasModal:!1,onClick:async()=>{const O=await i.executeRequestClosurePortalAction(e.initialIncident.incidentid);if(t.activeIncidents.loadingStatus!=="loaded")throw new Error(`Expected active Incidents to be loaded but was ${t.activeIncidents.loadingStatus}`);await P("Case closed by customer"),r({type:"SetClosedIncidents",closedIncidents:{loadingStatus:"loaded",data:[...t.closedIncidents.loadingStatus==="loaded"?t.closedIncidents.data.filter(R=>R.incidentid!==O.incidentid):[],{...O,statuscode:ie.Closed}]}}),r({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:t.activeIncidents.data.filter(R=>R.incidentid!==O.incidentid)}}),r({type:"AddNotification",notification:{message:"Case closed successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),window.scrollTo({top:0,behavior:"smooth"})}},M=e.initialIncident.statuscode===ie.Open||e.initialIncident.statuscode===ie["In Progress"]||e.initialIncident.statuscode===ie["On Hold"]||e.initialIncident.statuscode===ie["Pending Feedback"],K=e.initialIncident.statuscode===ie.Resolved,Q=e.initialIncident.statuscode===ie.Resolved;return{loadingStatus:"loaded",data:{title:ie[e.initialIncident.statuscode],description:k(e.initialIncident.statuscode),icon:F(e.initialIncident.statuscode),buttons:[...M?[H]:[],...K?[G]:[],...Q?[_]:[]]}}}function F(P){switch(P){case ie.Cancelled:return"case-status-cancelled.svg";case ie.Closed:return"case-status-closed.svg";case ie["Closure Requested"]:return"case-status-closure-requested.svg";case ie["In Progress"]:return"case-status-in-progress.svg";case ie.Merged:return"case-status-merged.svg";case ie["On Hold"]:return"case-status-on-hold.svg";case ie.Open:return"case-status-open.svg";case ie["Pending Feedback"]:return"case-status-pending-customer-feedback.svg";case ie.Resolved:return"case-status-resolved.svg"}}function k(P){switch(P){case ie.Cancelled:return"Case cancelled";case ie.Closed:return"Solution implemented";case ie["Closure Requested"]:return"Validating closure";case ie["In Progress"]:return"Implementing the solution";case ie.Merged:return"Merged into another case";case ie["On Hold"]:return"Case On Hold until later date";case ie.Open:return"Triaging the Case";case ie["Pending Feedback"]:return"Provide further information";case ie.Resolved:return"Confirm closure to close the Case"}}const D=e.initialIncident.statuscode===ie.Cancelled||e.initialIncident.statuscode===ie.Closed||e.initialIncident.statuscode===ie.Merged;return m(P0,{title:e.initialIncident.title,tags:[{name:"case-reference",value:e.initialIncident.ticketnumber},{name:"case-type",value:e.initialIncident.casetypecode?he[e.initialIncident.casetypecode]:null}],callToActionInformation:I(),setSubmissionState:b,children:m("form",{className:"edit-case","data-submit-attempted":f,onSubmit:P=>{P.preventDefault(),E()},onInvalid:()=>{C&&v(!0)},children:N(re,{children:[N("div",{className:"main-content",children:[N("div",{className:"general-container",children:[m("h2",{className:"heading",children:"Information"}),m(oc,{name:"_primarycontactid_value",label:"Primary Contact",selectedOptionId:c._primarycontactid_value,tooltip:m(re,{children:"The nominated Contact to receive Case related correspondence."}),pluralOptionsName:"Active Contacts",options:n.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:n.data.map(P=>({id:P.contactid,primaryText:[P.firstname,P.lastname].filter(H=>H).join(" "),secondaryText:P.emailaddress1??"",isPickable:P.statecode===Fe.Active,contact:P}))},setSelectedOptionId:P=>d({...c,_primarycontactid_value:P}),selectedOptionCardInfo:P=>({icon:m(pv,{}),primaryText:P.primaryText,secondaryText:P.secondaryText,additionalFields:[{name:"Job Title",value:P.contact.jobtitle},{name:"Telephone",value:P.contact.telephone1||""},{name:"Mobile",value:P.contact.mobilephone||""},{name:"Permission Level",value:Ue[P.contact.bistech_permissionlevel]}]}),additionalInputProps:{placeholder:"Select a Contact",disabled:D}}),m(Xt,{label:"Your Reference",name:"bistech_customerreference",tooltip:m(re,{children:"Your Case Reference (if needed) for our records."}),value:c.bistech_customerreference||"",onChange:P=>d({...c,bistech_customerreference:P}),additionalInputProps:{required:!1,disabled:D}}),m(Xt,{label:"Priority",name:"prioritycode",value:e.initialIncident.prioritycode?xe[e.initialIncident.prioritycode]:"",onChange:()=>{},additionalInputProps:{required:!1,disabled:!0}}),m(zp,{label:"Description",name:"description",tooltip:m(re,{children:"Please provide a clear explanation of the issue / requirement."}),value:e.initialIncident.description||"",onChange:()=>{},additionalTextAreaProps:{maxLength:2e3,disabled:!0}})]}),m(OR,{currentEntity:e.initialIncident,ticketNumber:e.initialIncident.ticketnumber,portalComments:w,portalEmails:e.initialIncident.incident_bistech_portalemails??[],majorIncidentUpdates:e.initialIncident.incident_bistech_majorincidentupdates??[],setPortalComments:S,disabled:D,entityId:e.initialIncident.incidentid})]}),h.state==="errored"&&N("p",{className:"error",children:[m("strong",{children:"Failed to update Case"}),": ",h.error.message]}),N("fieldset",{className:"buttons",children:[N("button",{type:"submit",disabled:!l||h.state==="submitting"||D,title:l?D?`Case is read-only as it is ${ie[e.initialIncident.statuscode]}`:void 0:"No changes to save",children:[h.state==="submitting"&&m(di,{className:"spin"}),"Save"]}),m(qt,{className:"button default",to:Xe.Cases.path,children:"Cancel"})]})]})})})},GH=e=>{const t=Nn(),n=dn(),r=Jn(),i=ve(u=>u.incidents.activeIncidents),o=ve(u=>u.incidents.closedIncidents),[a,s]=g.useState(1),[l,c]=g.useState({loadingStatus:"not-started"});g.useEffect(()=>{c({loadingStatus:"not-started"})},[i,o,a]);const d=g.useMemo(()=>(l.loadingStatus==="not-started"&&n.contactId&&(c({loadingStatus:"loading"}),r.retrieveIncident(e.incidentid).then(u=>c({loadingStatus:"loaded",data:u})).catch(u=>{t({type:"AddLatestError",error:u}),c({loadingStatus:"errored",error:u})})),l.loadingStatus==="loaded"?{loadingStatus:"loaded",data:l.data}:i.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loading"}),[i,o,l,r,e.incidentid,n.contactId,t]);return l.loadingStatus==="errored"?m(Ur,{type:"record-not-found",singularEntityName:"Case"}):d.loadingStatus!=="loaded"?m(Dn,{title:"",children:m(Or,{})}):m(VH,{initialIncident:d.data,onSave:()=>s(a+1)})},YH=()=>{const[e]=nd(),t="caseId",n=e.get(t);return n?m(GH,{incidentid:n}):m(Ur,{singularEntityName:"Case",type:"record-not-found"})},QH=()=>[{id:0,columnHeader:"Order ID",fieldName:"ordernumber",isSortable:!0},{id:1,columnHeader:"Date Signed",fieldName:"bistech_orderform",isSortable:!0},{id:2,columnHeader:"Customer Reference",fieldName:"bistech_customerreference",isSortable:!0},{id:3,columnHeader:"Contact",fieldName:"_bistech_contact_value",isSortable:!0},{id:4,columnHeader:"Status",fieldName:"statuscode",isSortable:!0}],ZH=(e,t,n)=>[{labelElement:m(re,{children:"Status"}),attribute:"Status",tooltipElement:N(re,{children:[N("p",{children:[m("strong",{children:"Pending Signature"})," - Orders which need to be signed by you."]}),N("p",{children:[m("strong",{children:"Processing"})," - Orders being processed by our Team, pending fulfilment."]}),N("p",{children:[m("strong",{children:"In Progress"})," - Orders in the process of being fulfilled."]}),N("p",{children:[m("strong",{children:"Fulfilled"})," - Orders which are considered fulfilled by Bistech."]})]}),tiles:[{id:"processing",setSelectedTileIds:n,selectedTileIds:t,filter:r=>[vt.Signed,vt["On Hold"],vt.Processing,vt["Processing Complete"],vt["Pending Contract Review"]].includes(r.statuscode),label:m(re,{children:"Processing"}),value:st(e.processing,r=>r.length),imagePath:"/order-management-status-processing.svg",onHoverMessage:"Orders being processed by our Team, pending fulfilment."},{id:"in-progress",setSelectedTileIds:n,selectedTileIds:t,filter:r=>[vt["In Progress"]].includes(r.statuscode),label:m(re,{children:"In Progress"}),value:st(e.inProgress,r=>r.length),imagePath:"/order-management-status-in-progress.svg",onHoverMessage:"Orders in the process of being fulfilled."},{id:"fulfilled",setSelectedTileIds:n,selectedTileIds:t,filter:r=>[Gi.Fulfilled].includes(r.statecode),label:m(re,{children:"Fulfilled"}),value:st(e.fulfilled,r=>r.length),imagePath:"/order-management-status-fulfilled.svg",onHoverMessage:"Orders which are considered fulfilled by Bistech."}]}],XH=()=>{var w;const e=dn(),t=ve(S=>S.orders),n=ve(S=>S.contacts),[r,i]=g.useState("bistech_orderform"),[o,a]=g.useState(!1),[s,l]=g.useState(""),[c,d]=g.useState([]);if(!e.accountId)throw new Error("Expected `userMetadata.accountId` to be populated");const u=QH(),f=S=>{var E;return(E=u.find(I=>I.fieldName===S))==null?void 0:E.columnHeader},v=S=>o?{loadingStatus:"loaded",data:S}:{loadingStatus:"loaded",data:S.reverse()},A=Sn.useMemo(()=>{if(t.loadingStatus!=="loaded")return{loadingStatus:t.loadingStatus};const S=t.data.slice();switch(r){case"_bistech_contact_value":return v(S.sort((E,I)=>{if(n.loadingStatus!=="loaded")return 0;const F=n.data.find(D=>D.contactid===E._bistech_contact_value),k=n.data.find(D=>D.contactid===I._bistech_contact_value);return`${F==null?void 0:F.firstname} ${F==null?void 0:F.lastname}`.localeCompare(`${k==null?void 0:k.firstname} ${k==null?void 0:k.lastname}`)??0}));case"bistech_orderform":return v(S.sort((E,I)=>{var F,k;return(((F=E.bistech_orderform)==null?void 0:F.bistech_datesigned)||"Z").localeCompare(((k=I.bistech_orderform)==null?void 0:k.bistech_datesigned)||"Z")}));default:return v(S.sort((E,I)=>{var F,k;return(((F=E[r])==null?void 0:F.toString())??"").localeCompare(((k=I[r])==null?void 0:k.toString())??"")}))}},[t,r,o]),p={processing:st(A,S=>S.filter(E=>[vt.Signed,vt["On Hold"],vt.Processing,vt["Processing Complete"],vt["Pending Contract Review"]].includes(E.statuscode))),inProgress:st(A,S=>S.filter(E=>[vt["In Progress"]].includes(E.statuscode))),fulfilled:st(A,S=>S.filter(E=>[Gi.Fulfilled].includes(E.statecode)))},C=ZH(p,c,d),y=C.flatMap(S=>S.tiles.filter(E=>c.length>0?c.includes(E.id):!0).flatMap(E=>E.filter)),h=st(A,S=>S.filter(E=>Object.entries(E).some(([I,F])=>{let k=F==null?void 0:F.toString();return k==null?void 0:k.toString().toLowerCase().includes(s.toLowerCase())})).filter(E=>y.some(I=>I(E)))),b=(w=C.find(S=>S.attribute==="Status"))==null?void 0:w.tiles;return N(Dn,{title:"Orders",children:[m(rm,{setSearchBarContent:l,filterGroups:C,placeholderText:"Search by Order Reference",getSummarySections:()=>[],filtersToDisplay:[]}),h.loadingStatus!=="loaded"?m(Or,{}):h.data.length===0?m("div",{className:"no-results-message",children:"There are no records to display."}):N("table",{className:"entitylist orders-table",children:[m("thead",{children:m("tr",{children:u.map(S=>m(zl,{columnHeader:S.columnHeader,fieldName:S.fieldName,sortingProps:{sortingEnabled:S.isSortable,sortedColumn:r,setSortedColumn:()=>i(S.fieldName),isSortedAscending:o,setIsSortedAscending:a}},S.id))})}),m("tbody",{children:h.data.map(S=>{var I,F;const E=((I=b==null?void 0:b.find(k=>k.filter(S)))==null?void 0:I.label)??vt[S.statuscode];return N("tr",{"data-id":S.salesorderid,"data-entity":"salesorder",children:[m("td",{className:"order-id",title:S.salesorderid,"data-heading-title":f("salesorderid"),children:m(qt,{to:`edit?orderId=${S.salesorderid}`,children:S.ordernumber},S.salesorderid)}),m("td",{className:"order-signed","data-heading-title":f("bistech_orderform"),children:(F=S.bistech_orderform)!=null&&F.bistech_datesigned?Ze.toDateOnlyString(S.bistech_orderform.bistech_datesigned):""}),m("td",{className:"order-customer-reference","data-heading-title":f("bistech_customerreference"),children:S.bistech_customerreference}),m("td",{className:"order-contact","data-heading-title":f("_bistech_contact_value"),children:(()=>{if(n.loadingStatus!=="loaded")return;const k=n.data.find(D=>D.contactid===S._bistech_contact_value);return k?[k.firstname,k.lastname].filter(D=>D).join(" "):null})()}),m("td",{className:"order-status","data-heading-title":f("statuscode"),children:E})]},S.salesorderid)})})]})]})};class tu{static toMoneyString(t){return t===null?"":new Intl.NumberFormat("en-GB",{style:"currency",currency:"GBP"}).format(t)}static getPaymentMethodCodeString(t){switch(t){case"CHEQUE":return"Cheque";case"CC":return"Credit Card";case"BACS":return"BACS";case"PAYPAL":return"PayPal";case"MANUAL":return"Manual Payment";case"WORLDPAY":return"WorldPay";case"DD":return"Direct Debit";default:return null}}}const qH=()=>[{id:0,columnHeader:"Description",fieldName:"salesorderdetailname",isSortable:!0},{id:0,columnHeader:"Description",fieldName:"bistech_productdescription",isSortable:!0},{id:1,columnHeader:"Quantity",fieldName:"quantity",isSortable:!0},{id:2,columnHeader:"Non-Recurring Amount",fieldName:"priceperunit",isSortable:!0},{id:3,columnHeader:"Total Annual Amount",fieldName:"bistech_totalannualprice",isSortable:!0}],JH=e=>N("div",{className:"placeholder",children:[m(En,{src:"/bistech.svg",height:75,width:232,className:"placeholder-img"}),e.children]}),gD=GT(),$H={root:{color:"gray",marginLeft:"0",padding:"auto"},rootHovered:{color:"darkgray"}},bc=rd({container:{display:"flex",flexFlow:"column nowrap",alignItems:"stretch",alignContent:"center"},header:[gD.fonts.xLarge,{flex:"1 1 auto",color:gD.palette.neutralPrimary,display:"flex",alignItems:"center",fontWeight:We.semibold,padding:"12px 12px 14px 24px"}],heading:{fontWeight:We.semibold,fontSize:"inherit",margin:"0"},statusContainer:{fontWeight:We.semibold,fontSize:"15pt",margin:"0",marginLeft:"auto",marginRight:"24px",display:"flex",flexDirection:"column",alignItems:"left"},status:{fontWeight:We.semibold,fontSize:"14px",lineHeight:"20px",margin:"0"},statusLabel:{fontWeight:We.regular,fontSize:"12px",lineHeight:"16px",margin:"0"},textField:{color:"#777",backgroundColor:"#f2f2f2",cursor:"not-allowed"},body:{flex:"4 4 auto",padding:"0 24px 24px 24px",overflowY:"hidden",selectors:{p:{margin:"14px 0"},"p:first-child":{marginTop:0},"p:last-child":{marginBottom:0}}}}),eK=({project:e,projectDetailsIsShown:t,setProjectDetailsIsShown:n})=>N(Hw,{isOpen:t,styles:{scrollableContent:{height:"100%",overflowY:"hidden"},main:{height:"fit-content",width:"500px"}},onDismiss:()=>n(!t),children:[N("div",{className:bc.header,children:[m("h2",{className:bc.heading,id:e.msdyn_projectid,children:e.bistech_projectnumber}),N("div",{className:bc.statusContainer,children:[m("p",{className:bc.status,children:e.statuscode!==null?Qw[e.statuscode]:""}),m("p",{className:bc.statusLabel,children:"Project Status"})]}),m(mv,{styles:$H,iconProps:{iconName:"Cancel"},ariaLabel:"Close popup modal",onClick:()=>n(!t)})]}),N("div",{className:bc.body,children:[m(UA,{label:"Project Name",name:"project-name",value:e.msdyn_subject,style:{color:"#777",backgroundColor:"#f2f2f2",cursor:"not-allowed"}}),m("br",{}),m(UA,{label:"Project Manager",name:"project-manager",value:e["_ownerid_value@OData.Community.Display.V1.FormattedValue"],style:{color:"#777",backgroundColor:"#f2f2f2",cursor:"not-allowed"}}),m("br",{}),m(UA,{label:"Actual Start Date",name:"project-start-date",value:e.msdyn_actualstart?Ze.toDateOnlyString(e.msdyn_actualstart):"",style:{color:"#777",backgroundColor:"#f2f2f2",cursor:"not-allowed"}})]})]}),tK={iconName:"Cancel"},nK={root:{color:"gray",marginLeft:"auto",paddingTop:"4px",paddingRight:"10px"},rootHovered:{color:"darkgray"}},rK=e=>{var Y,x;const n=e.initialOrder,r=ve(L=>L.contacts),i=ve(L=>L.networkOrders),o=ve(L=>L.projects),[a,s]=g.useState("salesorderdetailname"),[l,c]=g.useState(!1),[d,u]=g.useState(void 0),[f,v]=g.useState(void 0),[A,p]=g.useState(),C=Math.ceil(n.order_details.length/25),[y,h]=g.useState(0),[b,w]=g.useState(!1),[S,E]=g.useState(!1),[I,F]=g.useState(!1),[k,D]=g.useState(!1),[P,H]=g.useState([]),G=Jn(),_=L=>{var V;return((V=L[a])==null?void 0:V.toString())??""},M=n.order_details.filter(L=>L.producttypecode===_n.Product),K=n.order_details.filter(L=>L.producttypecode===_n["Project-Based Service"]),Q=(L,V)=>{const[ee,J]=[L[a],V[a]];return typeof ee=="number"&&typeof J=="number"?l?parseFloat(_(V))-parseFloat(_(L)):parseFloat(_(L))-parseFloat(_(V)):l?_(V).localeCompare(_(L)):_(L).localeCompare(_(V))},O=[...M,...K];g.useEffect(()=>{H(O.sort((L,V)=>Q(L,V)).slice(y*25,(y+1)*25>O.length?O.length:(y+1)*25))},[a,l,y]);const R=qH();g.useEffect(()=>{w(!0)},[]),g.useEffect(()=>{if(r.loadingStatus!=="loaded")return;const L=r.data.find(V=>V.contactid===n._bistech_contact_value);L&&u(L)},[r.loadingStatus]),g.useEffect(()=>{var L,V;(L=n.bistech_orderform)!=null&&L.bistech_orderformid&&G.retrieveOrderFormInfo((V=n.bistech_orderform)==null?void 0:V.bistech_orderformid).then(ee=>{var $;if(!(($=ee.bistech_orderform_Annotations)!=null&&$.length))return;const J=ee.bistech_orderform_Annotations.sort((ne,le)=>Date.parse(ne.modifiedon??"")-Date.parse(le.modifiedon??""))[0];v(J)})},[b]),g.useEffect(()=>{switch(n.statuscode){case vt.Pending:p({title:"Pending Signature",description:"The Order is awaiting signature from you in Docu-Sign and will be processed upon signing.",icon:"/order-call-to-action-pending.svg"});break;case vt.Processing:case vt["Processing Complete"]:case vt["Pending Contract Review"]:p({title:"Processing",description:"Our team is currently processing the order. Updates will be provided accordingly.",icon:"/order-call-to-action-processing.svg"});break;case vt["In Progress"]:p({title:"In Progress",description:"The Order is in the process of being fulfilled.",icon:"/order-call-to-action-in-progress.svg"})}if((n==null?void 0:n.statecode)===Gi.Fulfilled){p({title:"Fulfilled",description:"This Order is considered fulfilled by Bistech.",icon:"/order-call-to-action-fulfilled.svg"});return}},[n]);const T=()=>{var L;return(f&&((L=f.filename)==null?void 0:L.endsWith(".pdf")))??!1},j=L=>{var V;return(V=R.find(ee=>ee.fieldName===L))==null?void 0:V.columnHeader},W=()=>{y+1>=25||h(y+1)},U=()=>{y-1<0||h(y-1)};return m(P0,{title:((Y=e.initialOrder)==null?void 0:Y.ordernumber)??"",tags:[],callToActionInformation:A?{loadingStatus:"loaded",data:{title:A.title,description:A.description,icon:A.icon}}:{loadingStatus:"loading"},setSubmissionState:()=>{},children:N("form",{className:"edit-order","data-submit-attempted":S,onInvalid:()=>{b&&E(!0)},children:[N("div",{className:"main-content",children:[N("div",{className:"general-container",children:[m("h2",{className:"heading",children:"Information"}),m(oc,{label:"Contact",name:d?`${d==null?void 0:d.firstname}-${d==null?void 0:d.lastname}`:"",selectedOptionId:r.loadingStatus==="loaded"?((x=r.data.find(L=>L.contactid===(d==null?void 0:d.contactid)))==null?void 0:x.contactid)??null:null,options:r.loadingStatus==="loaded"?{loadingStatus:"loaded",value:r.data.map(L=>({id:L.contactid,isPickable:!1,primaryText:`${(L==null?void 0:L.firstname)||""} ${(L==null?void 0:L.lastname)||""}`,secondaryText:""}))}:{loadingStatus:"loading"},additionalInputProps:{required:!1,disabled:!0},pluralOptionsName:"Contacts",setSelectedOptionId:()=>{}}),m(Xt,{label:"Your Reference",name:"customer-reference",onChange:()=>{},value:n.bistech_customerreference??"",requiredGroup:!1,additionalInputProps:{disabled:!0}}),m(Xt,{label:"Total Non-Recurring Amount",name:"total-non-recurring-amount",onChange:()=>{},value:tu.toMoneyString(n.totallineitemamount),requiredGroup:!1,additionalInputProps:{disabled:!0}}),m(Xt,{label:"Total Annual Amount",name:"total-annual-Amount",onChange:()=>{},value:tu.toMoneyString(n.bistech_totalannualprice),requiredGroup:!1,additionalInputProps:{disabled:!0}}),m("div",{className:"order-form-link",children:T()&&N(re,{children:[m("a",{href:`data:application/pdf;base64,${f.documentbody}`,download:f.filename,className:"download-order-form",children:"Download Order Form"}),m(re,{children:m("a",{href:"#",onClick:()=>F(!0),className:"view-order-form",children:"View Order Form"})})]})})]}),P.length>0?N("div",{className:"orderlines",children:[m("h2",{className:"details-heading",children:"Details"}),N("table",{className:"entitylist orderline-table",children:[N("tr",{children:[R.filter((L,V,ee)=>ee.findIndex(J=>J.id===L.id)===V).map(L=>m(zl,{columnHeader:L.columnHeader,fieldName:L.fieldName,sortingProps:{sortingEnabled:L.isSortable,sortedColumn:a,setSortedColumn:()=>s(L.fieldName),isSortedAscending:l,setIsSortedAscending:c}},L.id)),i.loadingStatus==="loaded"&&o.loadingStatus==="loaded"&&m(zl,{columnHeader:"Details",fieldName:"bistech_networkorderid"},R[R.length-1].id+1)]}),m("tbody",{children:P.map(L=>{const V=L.producttypecode===_n.Product&&i.loadingStatus==="loaded"?i.data.find(J=>J._bistech_orderline_value===L.salesorderdetailid):void 0,ee=L.producttypecode===_n["Project-Based Service"]&&o.loadingStatus==="loaded"?o.data.find(J=>J.msdyn_projectid===L._msdyn_project_value):void 0;return N("tr",{"data-id":L.salesorderdetailid,"data-entity":"salesorderdetail",children:[L.producttypecode===_n["Project-Based Service"]?m("td",{className:"orderline-name","data-heading-title":j("bistech_productdescription"),children:L.bistech_productdescription}):m("td",{className:"orderline-name","data-heading-title":j("salesorderdetailname"),children:L.salesorderdetailname}),m("td",{className:"orderline-quantity","data-heading-title":j("quantity"),children:L.quantity}),m("td",{className:"orderline-priceperunit","data-heading-title":j("priceperunit"),children:tu.toMoneyString(L.priceperunit)}),m("td",{className:"orderline-annual-price","data-heading-title":j("bistech_totalannualprice"),children:tu.toMoneyString(L.bistech_totalannualprice)}),N("td",{className:"orderline-network-order","data-heading-title":j("bistech_networkorderid"),children:[V&&m(qt,{to:`/networkorders/edit?networkorderId=${V.bistech_networkorderid}`,children:"View"},V.bistech_networkorderid),ee&&N(re,{children:[m("a",{onClick:()=>D(!0),children:"View"},ee.msdyn_projectid),m(eK,{project:ee,projectDetailsIsShown:k,setProjectDetailsIsShown:D})]})]})]},L.salesorderdetailid)})})]}),C>1&&N("div",{className:"pagination-section",children:[m("div",{children:Array.from(Array(C).keys()).map(L=>m("span",{className:"pagination-navigator pagination-number",onClick:()=>h(L),"data-is-selected":L===y,children:L+1}))}),m(C7,{className:"pagination-navigator pagination-arrow",onClick:U}),m(b7,{className:"pagination-navigator pagination-arrow",onClick:W})]})]}):m(JH,{children:m("span",{className:"placeholder-content",children:m("i",{children:"There are no Details for this Order yet."})})})]}),N(Hw,{isOpen:I,styles:{scrollableContent:{height:"100%",overflowY:"hidden"},main:{height:"90vh",width:"764px"}},onDismiss:()=>F(!I),children:[m("nav",{style:{height:"4.2%",display:"flex",justifyContent:"flex-end"},children:m(mv,{styles:nK,iconProps:tK,ariaLabel:"Close popup modal",onClick:()=>F(!I)})}),T()?m("iframe",{style:{width:"100%",minHeight:"96%"},src:`data:application/pdf;base64,${f.documentbody}`,allowFullScreen:!0,children:m("object",{data:`data:application/pdf;base64,${f.documentbody}`})}):m("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"90%"},children:m(di,{style:{height:30,width:30},className:"spin"})})]})]})})},iK=e=>{const t=Nn(),n=Jn(),r=ve(c=>c.orders),[i,o]=g.useState(1),[a,s]=g.useState({loadingStatus:"not-started"});g.useEffect(()=>{s({loadingStatus:"not-started"})},[r,i]);const l=g.useMemo(()=>{if(a.loadingStatus==="not-started"&&(s({loadingStatus:"loading"}),n.retrieveOrder(e.salesorderid).then(d=>s({loadingStatus:"loaded",data:d})).catch(d=>{t({type:"AddLatestError",error:d}),s({loadingStatus:"errored",error:d})})),a.loadingStatus==="loaded")return{loadingStatus:"loaded",data:a.data};if(r.loadingStatus!=="loaded")return{loadingStatus:"loading"};const c=r.data.find(d=>d.salesorderid===e.salesorderid);return c?{loadingStatus:"loaded",data:c}:{loadingStatus:"loading"}},[r,a,n,e.salesorderid,t]);return a.loadingStatus==="errored"?m(Ur,{type:"record-not-found",singularEntityName:"Order"}):l.loadingStatus!=="loaded"?m(Dn,{title:"",children:m(Or,{})}):m(rK,{initialOrder:l.data,onSave:()=>o(i+1)})},oK=()=>{const[e]=nd(),t="orderId",n=e.get(t);return n?m(iK,{salesorderid:n}):m(Ur,{singularEntityName:"Order",type:"record-not-found"})};function bl(e){if(!e||e.basePermissionLevel===Ue["No Access"])return!1;const t=e.portalCasePermissionLevel?e.portalCasePermissionLevel!==Pe["No Access"]:!1,n=e.portalContactPermissionLevel?e.portalContactPermissionLevel!==Qe["No Access"]:!1,r=e.portalOrderPermissionLevel?e.portalOrderPermissionLevel!==ze["No Access"]:!1,i=e.portalInvoicePermissionLevel?e.portalInvoicePermissionLevel!==gt["No Access"]:!1;return t||n||r||i}const aK=e=>m(re,{children:e.isVisible&&e.refElement&&N(F0,{target:e.refElement,role:"dialog",style:{width:320,padding:"20px 24px"},dismissOnTargetClick:!0,onDismiss:e.onDismiss,setInitialFocus:!0,children:[m(eD,{variant:"xLarge",style:{marginBottom:12,fontWeight:We.regular},block:!0,children:e.headline}),m(eD,{children:e.content})]})}),AD=({networkOrderStage:e})=>{var a,s;const[t,n]=g.useState(!1),r=g.useRef(null),i=l=>e.bistech_datefrom?`The ${l} has been scheduled for ${new Date(e.bistech_datefrom).toLocaleDateString("en-GB")}. Please ensure access is available and that someone is able to receive the engineer. If this date is not suitable, please comment on the Network Order below and we shall contact the Carrier to find an alternative suitable date.`:"The Installation Date is as yet undecided, more information will be provided as soon as the date is confirmed.",o=[{stageType:ht["Order Placed"],title:"Your Network Order has been placed",description:`A Network Order has been placed, Updates regarding the progress of the Order will be provided as supplied by the Carrier.`},{stageType:ht.Survey,title:"A Site Survey is required",description:`The Vendor has confirmed that a Site Survey is required in order to fulfil the Order.${e.bistech_datefrom?` The Survey has been scheduled for ${new Date(e.bistech_datefrom).toLocaleDateString("en-GB")}.`:""}`},{stageType:ht["Civils Work"],title:"Civils Work is required",description:`Civil Works typically involve the preparation of physical infrastructure such as trenching, conduit installation, and cable routing in order to install the connection. As a result, Civil Works can take time to complete.`},{stageType:ht.Wayleave,title:"A Wayleave approval is required",description:`Wayleaves are typically required when the installation requires access over privately owned properties or areas with specific access restrictions. As a result this process is dependant upon the approval of the Wayleave by the relevant interested parties.`},{stageType:ht["Fibre Install"],title:"A Fibre Install is required",description:i("Fibre Install")},{stageType:ht["Fibre Splicing"],title:"A Fibre Splice is required",description:i("Fibre Splice")},{stageType:ht["Fit & Test"],title:"A Fit and Test is required",description:i("Fit and Test")},{stageType:ht["Connection Installed"],title:"Your Connection has been Installed",description:"If there are any issues with this installation, please contact us on 01202 33 22 00 or leave a comment on the timeline below."},{stageType:ht["CommsCare Site Visit"],title:"A CommsCare Site Visit is required",description:"A CommsCare Site Visit is required."}];return N("div",{className:"card",ref:r,"data-card-status":e.statuscode,onClick:()=>n(!t),children:[m("div",{className:"circle","data-stage-type":ht[e.bistech_stage],"data-card-status":an[e.statuscode]}),N("div",{className:"rect","data-card-status":an[e.statuscode],children:[m("h3",{className:"stage-title",children:ht[e.bistech_stage]}),e.bistech_datefrom&&m("h3",{className:"stage-date",children:new Date(e.bistech_datefrom).toLocaleDateString("en-GB")})]}),r&&m(aK,{content:((a=o.find(l=>l.stageType===e.bistech_stage))==null?void 0:a.description)||"",headline:`${((s=o.find(l=>l.stageType===e.bistech_stage))==null?void 0:s.title)||ht[e.bistech_stage]} - ${an[e.statuscode]}`,isVisible:t,onDismiss:()=>n(!1),refElement:r.current})]})},Jw=e=>{const{ref:n,onSwipe:r}=e,[i,o]=g.useState(null);g.useEffect(()=>{if(!n.current)return;const a=c=>o(c.changedTouches[0]),s=c=>{if(i===null)throw new Error("Expected the startTouch to be non-null as a 'touchend' event had occurred");const d=c.changedTouches[0],u=d.pageX-i.pageX;if(u===0||!(Math.abs(u)>15))return;const v=d.pageY-i.pageY;if(!(Math.abs(v/u)<.5))return;const p=u<0?"horizontal-left":"horizontal-right";r(p),o(null)};n.current.addEventListener("touchstart",a),n.current.addEventListener("touchend",s);const l=n.current;return()=>{l.removeEventListener("touchstart",a),l.removeEventListener("touchend",s)}},[n,r,i])},sK=({children:e,on:t,swipeDirection:n})=>t===void 0?m("div",{style:{height:"100%"},children:e}):m("div",{className:"fade-in",style:{height:"100%"},"data-swipe-direction":n,children:e},t),lK=({items:e,currentIndex:t,updateIndex:n})=>{const r=g.useRef(null),[i,o]=g.useState(null);Jw({ref:r,onSwipe:s=>{if(s==="horizontal-right"){if(t===0)return;o("right"),n(t-1)}if(s==="horizontal-left"){if(t+1===e.length)return;o("left"),n(t+1)}}});const a=s=>{sm(S7,{className:"selector",color:l===t?"black":"gray",style:{cursor:"pointer"},onClick:()=>a(l)},l))})]})})},cK=e=>{var _;const t=e.initialNetworkOrder,n=t.bistech_bistech_networkorderstage_networkorder_bi;dn();const r=Jn(),i=Nn(),o=ve(M=>M.networkOrders),a=ve(M=>M.contacts),s=ve(M=>M.orders),l=ve(M=>M.customerAssets),c=ve(M=>M.accounts),[d,u]=g.useState(0),{trackExceptionWithBistechMetadata:f,trackEventWithBistechMetadata:v}=Mn(),A=s.loadingStatus==="loaded"?s.data.find(M=>M.salesorderid===t._bistech_salesorder_value):void 0,p=l.loadingStatus==="loaded"?l.data.find(M=>M.msdyn_customerassetid===t._bistech_customerasset_value):void 0,[C,y]=g.useState({accountid:"",name:""}),[h,b]=g.useState(n.length-1),[w,S]=g.useState({_bistech_contact_value:t._bistech_contact_value??"",statuscode:t.statuscode}),[E,I]=g.useState(e.initialNetworkOrder.bistech_networkorder_adx_portalcomments??[]),[F,k]=g.useState({state:"idle"}),D=g.useRef(null),P=Gv();function H(){const M=t.statuscode===mo.Pending,K={label:"Request Order",hasModal:!1,onClick:async()=>{if(o.loadingStatus==="loaded"){k({state:"submitting"}),v==null||v({type:"Edit Network Order - Call-to-Action submitted",buttonName:"Request Order"});try{const O=await r.updateNetworkOrder(t.bistech_networkorderid,Av(t,w));i({type:"AddNotification",notification:{message:"Thank you, the Order will now be placed by our team for the next available date. A confirmation email will be sent once the Order has been placed.",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),i({type:"SetNetworkOrders",networkOrders:{loadingStatus:"loaded",data:o.data.map(R=>R.bistech_networkorderid===t.bistech_networkorderid?O:R)}}),i({type:"SetIsDirty",isDirty:!1})}catch(O){f==null||f(O),i({type:"AddLatestError",error:O})}finally{k({state:"idle"})}}}},Q=G();return{loadingStatus:"loaded",data:{title:(Q==null?void 0:Q.title)??"",description:(Q==null?void 0:Q.description)??"",icon:(Q==null?void 0:Q.icon)??"",buttons:M?[K]:[]}}}g.useEffect(()=>{if(s.loadingStatus!=="loaded"||l.loadingStatus!=="loaded"||c.loadingStatus!=="loaded")return;const M=c.data.find(K=>K.accountid===(p==null?void 0:p._bistech_site_value));M&&y(M)},[t,s]),g.useEffect(()=>{var R;const K=175*n.length,Q=(R=D.current)==null?void 0:R.clientWidth;if(!Q)return;const O=(Q-K)/(n.length-1);u(O<=30?30:O)},[P]);function G(){switch(t.statuscode){case mo.Pending:return{title:"Pending",description:"The Order for the Connection has yet to be placed.",icon:"/networkorder-call-to-action-pending.svg"};case mo["Ready To Order"]:return{title:"Processing",description:"The Order for the Connection is being processed by the Bistech Team.",icon:"/networkorder-call-to-action-processing.svg"};case mo["In Progress"]:case mo.Rejected:case mo.Delayed:case mo.Confirmed:return{title:"In Progress",description:"The Order is in progress with the Carrier. Updates will be provided as appropriate.",icon:"/networkorder-call-to-action-in-progress.svg"};case mo.Completed:return{title:"Fulfilled",description:"The Order for the Connection has been fulfilled by the Carrier.",icon:"/networkorder-call-to-action-fulfilled.svg"}}}return m(P0,{title:((A==null?void 0:A.ordernumber)??"")+" - "+(t==null?void 0:t.bistech_name),tags:[],callToActionInformation:H(),setSubmissionState:k,children:m("form",{className:"edit-networkorder",children:N(re,{children:[n.length>0&&N(re,{children:[m("div",{className:"network-order-stage-info",children:m("div",{className:"network-order-stage-container",ref:D,children:m("div",{className:"network-order-stages",children:(_=[...n].sort((M,K)=>M.bistech_stage-K.bistech_stage))==null?void 0:_.map((M,K)=>N(Sn.Fragment,{children:[K!==0&&m("div",{className:"lb-container",children:m("div",{className:"line","data-card-status":an[M.statuscode],style:{minWidth:`${d}px`}})}),m(AD,{networkOrderStage:M})]},K))})})},d),N("div",{className:"latest-network-order-stage",children:[m("h4",{children:m("u",{children:h+1!==n.length?`Current Stage (${h+1}/ ${n.length})`:"Latest Stage"})}),m("div",{className:"stage-container",children:m(lK,{items:[...n].sort((M,K)=>M.bistech_stage-K.bistech_stage).map(M=>m(AD,{networkOrderStage:M},M.bistech_networkorderstageid)),currentIndex:h,updateIndex:b})})]})]}),N("div",{className:"main-content",children:[N("div",{className:"general-container",children:[m("h2",{className:"heading",children:"Information"}),m(Xt,{label:"Connection Type",name:"msdyn_customerasset",tooltip:"The type of connection on the Network Order.",value:(p==null?void 0:p.msdyn_name)??"",onChange:()=>{},additionalInputProps:{required:!1,disabled:!0}}),m(Xt,{label:"Installation Site",name:"msdyn_customerassetsitename",tooltip:"The name of the site where the connection is being installed.",value:(C==null?void 0:C.name)??"",onChange:()=>{},additionalInputProps:{required:!1,disabled:!0}}),m(oc,{name:"_primarycontactid_value",label:"Primary Contact",selectedOptionId:w._bistech_contact_value,tooltip:m(re,{children:"The nominated Contact to receive Case related correspondence."}),pluralOptionsName:"Active Contacts",options:a.loadingStatus!=="loaded"?{loadingStatus:"loading"}:{loadingStatus:"loaded",value:a.data.map(M=>({id:M.contactid,primaryText:[M.firstname,M.lastname].filter(K=>K).join(" "),secondaryText:M.emailaddress1??"",isPickable:M.statecode===Fe.Active,contact:M}))},setSelectedOptionId:M=>S({...w,_bistech_contact_value:M}),selectedOptionCardInfo:M=>({icon:m(pv,{}),primaryText:M.primaryText,secondaryText:M.secondaryText,additionalFields:[{name:"Job Title",value:M.contact.jobtitle},{name:"Telephone",value:M.contact.telephone1||""},{name:"Mobile",value:M.contact.mobilephone||""},{name:"Permission Level",value:Ue[M.contact.bistech_permissionlevel]}]}),additionalInputProps:{placeholder:"Select a Contact",disabled:!1}})]}),m(OR,{currentEntity:e.initialNetworkOrder,ticketNumber:e.initialNetworkOrder.bistech_networkorderid,portalComments:E,portalEmails:e.initialNetworkOrder.bistech_networkorder_bistech_portalemails??[],majorIncidentUpdates:e.initialNetworkOrder.bistech_networkorder_bistech_majorincidentupdates??[],setPortalComments:I,disabled:!1,entityId:e.initialNetworkOrder.bistech_networkorderid})]})]})})})},uK=e=>{const t=Nn(),n=Jn(),r=ve(c=>c.networkOrders),[i,o]=g.useState(1),[a,s]=g.useState({loadingStatus:"not-started"});g.useEffect(()=>{s({loadingStatus:"not-started"})},[r,i]);const l=g.useMemo(()=>{if(a.loadingStatus==="not-started"&&(s({loadingStatus:"loading"}),n.retrieveNetworkOrder(e.networkorderid).then(d=>s({loadingStatus:"loaded",data:d})).catch(d=>{t({type:"AddLatestError",error:d}),s({loadingStatus:"errored",error:d})})),a.loadingStatus==="loaded")return{loadingStatus:"loaded",data:a.data};if(r.loadingStatus!=="loaded")return{loadingStatus:"loading"};const c=r.data.find(d=>d.bistech_networkorderid===e.networkorderid);return c?{loadingStatus:"loaded",data:{...c,bistech_bistech_networkorderstage_networkorder_bi:[],bistech_networkorder_adx_portalcomments:[],bistech_networkorder_bistech_portalemails:[],bistech_networkorder_bistech_majorincidentupdates:[]}}:{loadingStatus:"loading"}},[r,a,n,e.networkorderid,t]);return a.loadingStatus==="errored"?m(Ur,{type:"record-not-found",singularEntityName:"Order"}):l.loadingStatus!=="loaded"?m(Dn,{title:"",children:m(Or,{})}):m(cK,{initialNetworkOrder:l.data,onSave:()=>o(i+1)})},dK=()=>{const[e]=nd(),t="networkorderId",n=e.get(t);return n?m(uK,{networkorderid:n}):m(Ur,{singularEntityName:"Network Order",type:"record-not-found"})},fK=()=>[{id:0,columnHeader:"Invoice ID",fieldName:"invoicenumber",isSortable:!0},{id:1,columnHeader:"Payment Method",fieldName:"bistech_paymentmethodcode",isSortable:!0},{id:2,columnHeader:"Due Date",fieldName:"duedate",isSortable:!0},{id:3,columnHeader:"Invoice Date",fieldName:"msdyn_invoicedate",isSortable:!0}],vK=()=>{const e=dn(),t=ve(v=>v.invoices),[n,r]=g.useState("duedate"),[i,o]=g.useState(!1),[a,s]=g.useState("");if(!e.accountId)throw new Error("Expected `userMetadata.accountId` to be populated");const l=fK(),c=v=>{var A;return(A=l.find(p=>p.fieldName===v))==null?void 0:A.columnHeader},d=v=>i?{loadingStatus:"loaded",data:v}:{loadingStatus:"loaded",data:v.reverse()},u=Sn.useMemo(()=>{if(t.loadingStatus!=="loaded")return{loadingStatus:t.loadingStatus};const v=t.data.slice();return d(v.sort((A,p)=>{var C,y;return(((C=A[n])==null?void 0:C.toString())??"").localeCompare(((y=p[n])==null?void 0:y.toString())??"")}))},[t,n,i]),f=st(u,v=>v.filter(A=>Object.entries(A).some(([p,C])=>{const y=C==null?void 0:C.toString();return y==null?void 0:y.toString().toLowerCase().includes(a.toLowerCase())})));return N(Dn,{title:"Invoices",children:[m(rm,{setSearchBarContent:s,filterGroups:null,placeholderText:"Search by Invoice ID",getSummarySections:()=>[],filtersToDisplay:[]}),f.loadingStatus!=="loaded"?m(Or,{}):f.data.length===0?m("div",{className:"no-results-message",children:"There are no Invoices to display."}):N("table",{className:"entitylist invoices-table",children:[m("thead",{children:m("tr",{children:l.map(v=>m(zl,{columnHeader:v.columnHeader,fieldName:v.fieldName,sortingProps:{sortingEnabled:v.isSortable,sortedColumn:n,setSortedColumn:()=>r(v.fieldName),isSortedAscending:i,setIsSortedAscending:o}},v.id))})}),m("tbody",{children:f.data.map(v=>m(yt,{children:N("tr",{"data-id":v.invoiceid,"data-entity":"invoice",children:[m("td",{className:"invoice-id",title:v.invoicenumber,"data-heading-title":c("invoicenumber"),children:m(qt,{to:`view?invoiceid=${v.invoiceid}`,children:v.invoicenumber},v.invoicenumber)}),m("td",{className:"invoice-payment-method","data-heading-title":c("bistech_paymentmethodcode"),children:tu.getPaymentMethodCodeString(v.bistech_paymentmethodcode)}),m("td",{className:"invoice-due-date","data-heading-title":c("duedate"),children:v.duedate?Ze.toDateOnlyString(v.duedate):""}),m("td",{className:"invoice-date","data-heading-title":c("msdyn_invoicedate"),children:v.msdyn_invoicedate?Ze.toDateOnlyString(v.msdyn_invoicedate):""})]},v.invoiceid)},v.invoiceid))})]})]})},mK=({initialInvoice:e})=>{const t=ve(r=>r.accounts);t.loadingStatus==="loaded"&&t.data.find(r=>r.accountid===e._customerid_value);const n=e.Invoice_Annotation.filter(r=>r.documentbody&&r.mimetype==="application/pdf").sort((r,i)=>Date.parse(r.modifiedon??"")-Date.parse(i.modifiedon??""))[0];return m(Dn,{title:(e==null?void 0:e.invoicenumber)??"",children:m("div",{className:"view-invoice",children:N("div",{className:"main-content",children:[m("div",{className:"general-container",children:N("form",{children:[m("h2",{className:"heading",children:"Information"}),m(Xt,{label:"Invoice ID",name:"invoice-id",onChange:()=>{},value:e.invoicenumber??"",requiredGroup:!1,additionalInputProps:{disabled:!0}}),m(Xt,{label:"Due Date",name:"due-date",onChange:()=>{},value:e.duedate?Ze.toDateOnlyString(e.duedate):"",requiredGroup:!1,additionalInputProps:{disabled:!0}}),m(Xt,{label:"Payment Method",name:"payment-method",onChange:()=>{},value:tu.getPaymentMethodCodeString(e.bistech_paymentmethodcode)??"",requiredGroup:!1,additionalInputProps:{disabled:!0}}),m(Xt,{label:"Invoice Date",name:"invoice-date",onChange:()=>{},value:e.msdyn_invoicedate?Ze.toDateOnlyString(e.msdyn_invoicedate):"",requiredGroup:!1,additionalInputProps:{disabled:!0}}),n&&m("div",{className:"invoice-link",children:m("a",{href:`data:application/pdf;base64,${n.documentbody}`,download:n.filename,className:"download-invoice",children:"Download Invoice"})})]})}),n&&m("div",{className:"iframe-container",children:m("iframe",{style:{minHeight:"100%",width:"100%"},src:`data:application/pdf;base64,${n.documentbody}`,allowFullScreen:!0,children:m("object",{data:`data:application/pdf;base64,${n.documentbody}`})})})]})})})},pK=e=>{const t=Nn(),n=Jn(),r=ve(s=>s.invoices),[i,o]=g.useState({loadingStatus:"not-started"});g.useEffect(()=>{o({loadingStatus:"not-started"})},[r]);const a=g.useMemo(()=>{if(i.loadingStatus==="not-started"&&(o({loadingStatus:"loading"}),n.retrieveInvoice(e.invoiceid).then(l=>o({loadingStatus:"loaded",data:l})).catch(l=>{t({type:"AddLatestError",error:l}),o({loadingStatus:"errored",error:l})})),i.loadingStatus==="loaded")return{loadingStatus:"loaded",data:i.data};if(r.loadingStatus!=="loaded")return{loadingStatus:"loading"};const s=r.data.find(l=>l.invoiceid===e.invoiceid);return s?{loadingStatus:"loaded",data:s}:{loadingStatus:"loading"}},[r,i,n,e.invoiceid,t]);return i.loadingStatus==="errored"?m(Ur,{type:"record-not-found",singularEntityName:"Invoice"}):a.loadingStatus!=="loaded"?m(Dn,{title:"",children:m(Or,{})}):m(mK,{initialInvoice:a.data})},hK=()=>{const[e]=nd(),t="invoiceid",n=e.get(t);return n?m(pK,{invoiceid:n}):m(Ur,{singularEntityName:"Invoice",type:"record-not-found"})},Xe={Home:{path:"/",title:"Home",pageConfig:{type:"internal",element:m(jH,{})},forbiddenPageErrorMessage:({basePermissionLevel:e})=>e?nr("Your current 'Permission Level' is: ",Ue[e]):m(re,{}),isPermitted:e=>bl(e),navigationPanelConfig:{isVisible:!0,iconPath:"/navigation-icon-home.svg"}},Cases:{path:"/cases",title:"Cases",pageConfig:{type:"internal",element:m(hj,{})},forbiddenPageErrorMessage:({portalCasePermissionLevel:e})=>e?nr("Your current Case 'Permission Level' is: ",Pe[e]):m(re,{}),isPermitted:({portalCasePermissionLevel:e})=>Boolean(e&&e!==Pe["No Access"]),navigationPanelConfig:{isVisible:!0,iconPath:"/navigation-icon-case-management.svg"}},CreateCase:{path:"/cases/create",title:"Create a Case",pageConfig:{type:"internal",element:m(SH,{})},forbiddenPageErrorMessage:({portalCasePermissionLevel:e})=>e?nr("Your current Case 'Permission Level' is: ",Pe[e]):m(re,{}),isPermitted:({portalCasePermissionLevel:e})=>Boolean(e&&(e===Pe["Owned Cases"]||e===Pe["All Cases"])),navigationPanelConfig:{isVisible:!1}},EditCase:{path:"/cases/edit",title:"Edit a Case",pageConfig:{type:"internal",element:m(YH,{})},forbiddenPageErrorMessage:({portalCasePermissionLevel:e})=>e?nr("Your current Case 'Permission Level' is: ",Pe[e]):m(re,{}),isPermitted:({portalCasePermissionLevel:e})=>Boolean(e&&(e===Pe["All Cases"]||e===Pe["Owned Cases"])),navigationPanelConfig:{isVisible:!1}},ClosedCases:{path:"/cases/closed-cases",title:"Closed Cases",pageConfig:{type:"internal",element:m(EH,{})},forbiddenPageErrorMessage:({portalCasePermissionLevel:e})=>e?nr("Your current Case 'Permission Level' is: ",Pe[e]):m(re,{}),isPermitted:({portalCasePermissionLevel:e})=>Boolean(e&&e!==Pe["No Access"]),navigationPanelConfig:{isVisible:!1}},MajorIncidents:{path:"/cases/major-incidents",title:"Major Incidents",pageConfig:{type:"internal",element:m(RH,{})},forbiddenPageErrorMessage:({portalCasePermissionLevel:e})=>e?nr("Your current Case 'Permission Level' is: ",Pe[e]):m(re,{}),isPermitted:({portalCasePermissionLevel:e})=>Boolean(e&&e!==Pe["No Access"]),navigationPanelConfig:{isVisible:!1}},Contacts:{path:"/contacts",title:"Contacts",pageConfig:{type:"internal",element:m(TH,{})},forbiddenPageErrorMessage:({portalContactPermissionLevel:e})=>e?nr("Your current Contact 'Permission Level' is: ",Qe[e]):m(re,{}),isPermitted:({portalContactPermissionLevel:e})=>Boolean(e&&e!==Qe["No Access"]),navigationPanelConfig:{isVisible:!0,iconPath:"/navigation-icon-contacts.svg"}},CreateContact:{path:"/contacts/create",title:"Create a Contact",pageConfig:{type:"internal",element:m(LH,{})},forbiddenPageErrorMessage:({portalContactPermissionLevel:e})=>e?nr("Your current Contact 'Permission Level' is: ",Qe[e]):m(re,{}),isPermitted:({portalContactPermissionLevel:e})=>Boolean(e&&e===Qe["All Contacts"]),navigationPanelConfig:{isVisible:!1}},EditContact:{path:"/contacts/edit",title:"Edit a Contact",pageConfig:{type:"internal",element:m(OH,{})},forbiddenPageErrorMessage:({portalContactPermissionLevel:e})=>e?nr("Your current Contact 'Permission Level' is: ",Qe[e]):m(re,{}),isPermitted:({portalContactPermissionLevel:e})=>Boolean(e&&e===Qe["All Contacts"]),navigationPanelConfig:{isVisible:!1}},Orders:{path:"/orders",title:"Orders",pageConfig:{type:"internal",element:m(XH,{})},forbiddenPageErrorMessage:({portalOrderPermissionLevel:e})=>e?nr("Your current Order 'Permission Level' is: ",ze[e]):m(re,{}),isPermitted:({portalOrderPermissionLevel:e})=>!wn&&Boolean(e&&e!==ze["No Access"]),navigationPanelConfig:{isVisible:!wn,iconPath:"/navigation-icon-order-management.svg"}},EditOrder:{path:"/orders/edit",title:"Edit an Order",pageConfig:{type:"internal",element:m(oK,{})},forbiddenPageErrorMessage:({portalOrderPermissionLevel:e})=>e?nr("Your current Order 'Permission Level' is: ",ze[e]):m(re,{}),isPermitted:({portalOrderPermissionLevel:e})=>Boolean(e&&e!==ze["No Access"]),navigationPanelConfig:{isVisible:!1}},Invoices:{path:"/invoices",title:"Invoices",pageConfig:{type:"internal",element:m(vK,{})},forbiddenPageErrorMessage:({portalInvoicePermissionLevel:e})=>e?nr("Your current Invoice 'Permission Level' is: ",gt[e]):m(re,{}),isPermitted:({portalInvoicePermissionLevel:e})=>!wn&&Boolean(e&&e!==gt["No Access"]),navigationPanelConfig:{isVisible:!wn,iconPath:"/navigation-icon-invoices.svg"}},ViewInvoice:{path:"/invoices/view",title:"View an Invoice",pageConfig:{type:"internal",element:m(hK,{})},forbiddenPageErrorMessage:({portalInvoicePermissionLevel:e})=>e?nr("Your current Invoice 'Permission Level' is: ",gt[e]):m(re,{}),isPermitted:({portalInvoicePermissionLevel:e})=>Boolean(e&&e!==gt["No Access"]),navigationPanelConfig:{isVisible:!1}},EditNetworkOrder:{path:"/networkorders/edit",title:"Edit a Network Order",pageConfig:{type:"internal",element:m(dK,{})},forbiddenPageErrorMessage:({portalOrderPermissionLevel:e})=>e?nr("Your current Order 'Permission Level' is: ",ze[e]):m(re,{}),isPermitted:({portalOrderPermissionLevel:e})=>!wn&&Boolean(e&&e!==ze["No Access"]),navigationPanelConfig:{isVisible:!1}},Profile:{path:"/Profile",title:"Profile",pageConfig:{type:"internal",element:m(HH,{})},forbiddenPageErrorMessage:({basePermissionLevel:e})=>e?nr("Your current 'Permission Level' is: ",Ue[e]):m(re,{}),isPermitted:e=>Boolean(bl(e)),navigationPanelConfig:{isVisible:!0,iconPath:"/navigation-icon-my-profile.svg"}},SignOut:{path:"/Account/Login/LogOff",title:"Sign out",pageConfig:{type:"external"},isPermitted:()=>!0,navigationPanelConfig:{isVisible:!0,iconPath:"/navigation-icon-sign-out.svg"}},SignIn:{path:"/SignIn",title:"Sign in",pageConfig:{type:"external"},isPermitted:()=>!0,navigationPanelConfig:{isVisible:!1}},TermsAndConditions:{path:"/terms-and-conditions",title:"Terms and Conditions",pageConfig:{type:"internal",element:m(BR,{})},isPermitted:()=>!0,navigationPanelConfig:{isVisible:!1}},NotFound:{path:"*",title:"Not Found",pageConfig:{type:"internal",element:m(Ur,{type:"page-not-found"})},isPermitted:()=>!0,navigationPanelConfig:{isVisible:!1}}},nr=(e,t)=>N("p",{children:[e,m("strong",{children:t})]});function gK(){const e=li(),t=Nn(),n=ve(u=>u),r=ve(u=>u.userId),i=ve(u=>u.currentPage),o=ve(u=>u.isLocalMode),a=ve(u=>u.termsAndConditionsAcceptanceDate),s=dn(),{appInsights:l}=Mn(),c=rT(),d=(()=>r?i.pageConfig.type==="external"?m(hD,{}):bl(s)?!a&&i.path!==Xe.TermsAndConditions.path?m(BR,{}):m(jM,{children:Object.values(Xe).map(f=>m(gw,{path:f.path,element:(()=>{if(!f.isPermitted(s,n))return f.forbiddenPageErrorMessage?m(QA,{permissionLevelMessage:f.forbiddenPageErrorMessage(s)}):m(QA,{});if(f.pageConfig.type==="internal")return m("div",{"data-page-title":f.title,children:m(yt,{children:f.pageConfig.element})});if(o)return m(hD,{})})()},f.path))}):m(QA,{}):m(Xw,{showIcon:!1,title:"Loading",content:m(Or,{})}))();return g.useEffect(()=>{const u=f=>f.replace(/\/$/g,"");t({type:"SetCurrentPage",currentPage:Object.values(Xe).find(f=>u(f.path.toLowerCase())===u(e.pathname.toLowerCase()))||Xe.NotFound})},[e,t]),g.useEffect(()=>{window.document.title=`${i.title} | Bistech Customer Portal`,window.scrollTo({top:0,behavior:"smooth"})},[i]),g.useEffect(()=>{t({type:"ClearLatestErrors"})},[i,t]),g.useEffect(()=>{l==null||l.trackPageView({name:i.title,uri:i.path,properties:c})},[i]),{routes:d}}const AK=({iconPath:e,displayName:t,url:n,isSinglePageAppLink:r})=>{const i=li(),{trackEventWithBistechMetadata:o}=Mn(),s=i.pathname.replace(/^\//,"").split("/")[0].toLowerCase()===n.replace(/\//g,"").toLowerCase();return r?m(qt,{to:n,"aria-current":s,onClick:()=>o==null?void 0:o({type:"Navigation Panel - Customer Asset tile clicked",tileName:t}),children:N(yt,{children:[m(En,{width:18,height:18,src:e}),t]})}):m("a",{href:n,"aria-current":s,onClick:()=>o==null?void 0:o({type:"Navigation Panel - Customer Asset tile clicked",tileName:t}),children:N(yt,{children:[m(En,{width:18,height:18,src:e}),t]})})},yK=e=>{const{navigationMenuGroup:t}=e,[n,r]=g.useState(!1),[i,o]=g.useState(!1),[a,s]=g.useState(null),l=ve(u=>u.products),c=g.useMemo(()=>l.loadingStatus!=="loaded"?{loadingStatus:l.loadingStatus}:{loadingStatus:"loaded",links:t.productLinks.map(f=>{var A;const v=(A=l.data.find(p=>p.bistech_portaltilemapping===f.tileMapping))==null?void 0:A.bistech_tiletargeturl;return{...f,url:v}}).filter(({url:f})=>f)},[l,t]),d=u=>{o(!0),window.scrollTo({top:0,behavior:"smooth"}),s(u)};return N("li",{className:"navigation-menu-group",children:[N(yt,{children:[N("button",{className:"navigation-menu-group-header",onClick:()=>r(!n),children:[m(En,{src:t.iconPath,width:18,height:18}),m("span",{className:"navigation-menu-group-header-label",children:t.title}),n?m(T7,{}):m(M7,{})]}),n&&m("div",{className:"navigation-menu-group-items",children:m(yt,{children:(()=>{var u;switch(c.loadingStatus){case"loading":return m(Or,{});case"loaded":return c.links.length===0?m("p",{children:"No products found"}):(u=c.links)==null?void 0:u.map(({label:f,url:v,modalMessage:A})=>{const p=N(re,{children:[m("span",{className:"navigation-menu-group-item-label",children:f}),m(t5,{style:{color:"#777"}})]});if(A){const C={label:A,hasModal:!0,modalInfo:{isErrorModal:!1,modalButtonLabel:"Confirm",modalContent:m(re,{children:A}),modalTitle:f,onClick:async()=>{const y=window.open();y.opener=null,y.location=v}}};return m("a",{onClick:()=>d(C),target:"_blank",rel:"noreferrer",className:"navigation-menu-group-item",children:p},f)}else return m("a",{href:v,target:"_blank",rel:"noreferrer",className:"navigation-menu-group-item",children:p},f)})}})()})})]}),a&&m(im,{buttonInfo:a,isModalShown:i,setIsModalShown:o})]},t.title)},bK=e=>{const t=dn(),n=ve(a=>a),r=g.useRef(null);Jw({ref:r,onSwipe:a=>{a==="horizontal-left"&&e.setIsNavigationPanelExpanded(!1)}});const i=[{title:"Infrastructure",iconPath:"/navigation-menu-icon-dropdown-infrastructure.svg",productLinks:[{label:"Meraki",tileMapping:Ge.Meraki},{label:"Ninja RMM",tileMapping:Ge.NinjaRMM},{label:"Solarwinds",tileMapping:Ge.Solarwinds},{label:"VMWare",tileMapping:Ge.VMWare}]},{title:"Security",iconPath:"/navigation-menu-icon-dropdown-security.svg",productLinks:[{label:"FortiAnalyzer",tileMapping:Ge.FortiAnalyzer,modalMessage:"In order to access the FortiAnalyzer, you must be connected to your company VPN."},{label:"FortiGate",tileMapping:Ge.FortiGate,modalMessage:"In order to access the FortiGate, you must be connected to your company VPN."},{label:"FortiMail",tileMapping:Ge.FortiMail},{label:"Mimecast",tileMapping:Ge.Mimecast}]},{title:"Cloud Admin",iconPath:"/navigation-menu-icon-dropdown-cloud.svg",productLinks:[{label:"8x8",tileMapping:Ge._8x8},{label:"Azure",tileMapping:Ge.Azure},{label:"M365 Admin Centre",tileMapping:Ge.M365AdminCentre},{label:"NMS",tileMapping:Ge.NMS}]},{title:"Licensing & Billing",iconPath:"/navigation-menu-icon-dropdown-licensing-billing.svg",productLinks:[{label:"aBILLity",tileMapping:Ge.WebAbility},{label:"Microsoft Licensing",tileMapping:Ge.MicrosoftLicensing}]}],o=Xe.Profile.title;return m("nav",{className:"navigation-panel","data-is-shown":e.isNavigationPanelExpanded,ref:r,children:m("ul",{className:"navigation-panel-items",children:Object.values(Xe).filter(a=>a.navigationPanelConfig.isVisible&&a.isPermitted(t,n)).map(a=>m("div",{children:N(yt,{children:[a.title===o&&i.map(s=>m(yK,{navigationMenuGroup:s},s.title)),m("li",{className:"navigation-panel-item",children:m(AK,{iconPath:a.navigationPanelConfig.isVisible&&a.navigationPanelConfig.iconPath||"",displayName:a.title,url:a.path,isSinglePageAppLink:a.pageConfig.type==="internal"})},a.path)]})},a.title))})})},CK=()=>{const e=Nn(),t=Jn(),{trackExceptionWithBistechMetadata:n,trackEventWithBistechMetadata:r}=Mn(),i=ve(y=>y.feedbackPaneIsShown),[o,a]=g.useState(""),[s,l]=g.useState("not-shown"),[c,d]=g.useState(null),[u,f]=g.useState("");g.useEffect(()=>{i&&(r==null||r({type:"Feedback Pane - Opened"}))},[i]);const v=g.useRef(null);Jw({ref:v,onSwipe:y=>{y==="horizontal-right"&&e({type:"SetFeedbackPaneIsShown",feedbackPaneIsShown:!1})}});const A=y=>{d(y),l("shown")};g.useEffect(()=>{s==="complete"&&(f(""),d(null),l("not-shown"),a(""))},[i,s]);const p=y=>{f(y.target.value)};async function C(){if(u===""){a("Description Required");return}a.length&&a(""),l("submitting");try{r==null||r({type:"Feedback Pane - Feedback creation submitted",feedbackCategory:c}),await t.executeFeedbackPortalAction(u,c),l("complete"),f(""),e({type:"AddNotification",notification:{message:"Feedback submitted successfully",displayedOnRelativeUrl:`${window.location.pathname}${window.location.search}`,displayUntil:Ze.addSeconds(new Date,10)}}),e({type:"SetFeedbackPaneIsShown",feedbackPaneIsShown:!1}),r==null||r({type:"Feedback Pane - Feedback created successfully",feedbackCategory:c})}catch(y){l("error"),a("Unable to submit your feedback. Please verify your connection, refresh the page, and try again."),n==null||n(y)}}return m("div",{className:"feedback-pane","data-is-shown":`${i}`,ref:v,children:N(yt,{children:[m("h3",{className:"feedback-title",children:"Please provide any feedback about the portal"}),N("div",{id:"feedback-form",children:[m("input",{className:"feedback-button-selector",type:"radio",name:"feedback-type",value:"not-working",id:"feedback-type-not-working",onClick:()=>A("not-working")}),N("label",{className:`feedback-button-label ${c==="not-working"&&"selected"}`,htmlFor:"feedback-type-not-working",children:[m(En,{src:"/feedback-not-working-icon.svg",width:24,height:24}),m("span",{className:"feedback-button-text",children:"Something isn't working"})]}),m("input",{className:"feedback-button-selector",type:"radio",name:"feedback-type",value:"suggestion",id:"feedback-type-suggestion",onClick:()=>A("suggestion")}),N("label",{className:`feedback-button-label ${c==="suggestion"&&"selected"}`,htmlFor:"feedback-type-suggestion",children:[m(En,{src:"/feedback-suggestion-icon.svg",width:24,height:24}),m("span",{className:"feedback-button-text",children:"I have a suggestion"})]}),o.length>0&&m("div",{className:"description-required",role:"alert",children:N("p",{className:"validation-header",children:[m(D7,{className:"info-circle"}),o]})}),s!=="not-shown"&&N(re,{children:[m("textarea",{className:"feedback-description",name:"message",maxLength:500,cols:30,rows:10,value:u,placeholder:"Please provide any feedback here",onChange:p}),m("button",{id:"feedback-submit",onClick:()=>C(),disabled:s==="submitting"||s==="complete","data-is-submitted":`${s}`,children:N("div",{className:"button-content",children:[s==="submitting"&&m(di,{className:"spin"}),s==="complete"&&m(y7,{}),m("span",{children:s==="complete"?"Submitted":"Submit"})]})})]})]})]})})},wK=()=>{const e=Jn(),t=dn(),n=Nn(),r=ve(p=>p.incidents),i=ve(p=>p.contacts),o=ve(p=>p.products),a=ve(p=>p.orders),s=ve(p=>p.invoices),l=ve(p=>p.networkOrders),c=ve(p=>p.projects),d=ve(p=>p.customerAssets),u=ve(p=>p.accounts),f=ve(p=>p.portalMajorIncidentUpdates),v=ve(p=>p.blogPosts),{trackExceptionWithBistechMetadata:A}=Mn();g.useEffect(()=>{t.contactId&&(u.loadingStatus==="loaded"||u.loadingStatus==="loading"||bl(t)&&(n({type:"SetAccounts",accounts:{loadingStatus:"loading"}}),e.retrieveAccounts().then(p=>n({type:"SetAccounts",accounts:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,u,t.contactId]),g.useEffect(()=>{t.contactId&&(i.loadingStatus==="loaded"||i.loadingStatus==="loading"||bl(t)&&(n({type:"SetContacts",contacts:{loadingStatus:"loading"}}),e.retrieveContacts().then(p=>n({type:"SetContacts",contacts:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,i,t.contactId]),g.useEffect(()=>{(async()=>{if(t.contactId&&!(r.activeIncidents.loadingStatus==="loaded"||r.activeIncidents.loadingStatus==="loading")&&!(t.basePermissionLevel===Ue["No Access"]||t.portalCasePermissionLevel===Pe["No Access"])){n({type:"SetMajorIncidents",activeMajorIncidents:{loadingStatus:"loading"},recentlyResolvedMajorIncidents:{loadingStatus:"loading"}}),n({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loading"}});try{const p=await e.retrieveActiveIncidents(),C=p.filter(b=>b.casetypecode===he["Major Incident"]&&(b.statuscode===ie["In Progress"]||b.statuscode===ie["On Hold"]||b.statuscode===ie["Pending Feedback"])),y=p.filter(b=>b.casetypecode!==he["Major Incident"]),h=await e.retrieveRecentlyResolvedMajorIncidents();n({type:"SetMajorIncidents",activeMajorIncidents:{loadingStatus:"loaded",data:C},recentlyResolvedMajorIncidents:{loadingStatus:"loaded",data:h}}),n({type:"SetActiveIncidents",activeIncidents:{loadingStatus:"loaded",data:y}})}catch(p){n({type:"AddLatestError",error:p}),A==null||A(p)}}})()},[e,n,r,t.contactId]),g.useEffect(()=>{t.contactId&&(o.loadingStatus==="loaded"||o.loadingStatus==="loading"||bl(t)&&(n({type:"SetProducts",products:{loadingStatus:"loading"}}),e.retrieveProducts().then(p=>n({type:"SetProducts",products:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,o,t.contactId]),g.useEffect(()=>{t.contactId&&(f.loadingStatus==="loaded"||f.loadingStatus==="loading"||t.basePermissionLevel===Ue["No Access"]||t.portalCasePermissionLevel===Pe["No Access"]||(n({type:"SetPortalMajorIncidentUpdates",portalMajorIncidentUpdates:{loadingStatus:"loading"}}),e.retrievePortalMajorIncidentUpdatesRegardingActiveAndRecentlyResolvedMajorIncidents().then(p=>n({type:"SetPortalMajorIncidentUpdates",portalMajorIncidentUpdates:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,f,t.contactId]),g.useEffect(()=>{v.loadingStatus==="loaded"||v.loadingStatus==="loading"||bl(t)&&e.retrieveBlogPostRecords().then(p=>n({type:"SetBlogPosts",blogPosts:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})},[e,n,v]),g.useEffect(()=>{t.contactId&&(l.loadingStatus==="loaded"||l.loadingStatus==="loading"||t.basePermissionLevel===Ue["No Access"]||t.portalOrderPermissionLevel===ze["No Access"]||wn||(n({type:"SetNetworkOrders",networkOrders:{loadingStatus:"loading"}}),e.retrieveNetworkOrders().then(p=>n({type:"SetNetworkOrders",networkOrders:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,l,t.contactId]),g.useEffect(()=>{t.contactId&&(c.loadingStatus==="loaded"||c.loadingStatus==="loading"||t.basePermissionLevel===Ue["No Access"]||t.portalOrderPermissionLevel===ze["No Access"]||wn||(n({type:"SetProjects",projects:{loadingStatus:"loading"}}),e.retrieveProjects().then(p=>n({type:"SetProjects",projects:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,c,t.contactId]),g.useEffect(()=>{t.contactId&&(a.loadingStatus==="loaded"||a.loadingStatus==="loading"||wn||t.basePermissionLevel===Ue["No Access"]||t.portalOrderPermissionLevel===ze["No Access"]||(n({type:"SetOrders",orders:{loadingStatus:"loading"}}),e.retrieveOrders().then(p=>n({type:"SetOrders",orders:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,a,t.contactId]),g.useEffect(()=>{t.contactId&&(d.loadingStatus==="loaded"||d.loadingStatus==="loading"||t.basePermissionLevel===Ue["No Access"]||t.portalOrderPermissionLevel===ze["No Access"]||wn||(n({type:"SetCustomerAssets",customerAssets:{loadingStatus:"loading"}}),e.retrieveCustomerAssets().then(p=>n({type:"SetCustomerAssets",customerAssets:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,d,t.contactId]),g.useEffect(()=>{t.contactId&&(s.loadingStatus==="loaded"||s.loadingStatus==="loading"||wn||t.basePermissionLevel===Ue["No Access"]||t.portalInvoicePermissionLevel===gt["No Access"]||(n({type:"SetInvoices",invoices:{loadingStatus:"loading"}}),e.retrieveInvoices().then(p=>n({type:"SetInvoices",invoices:{loadingStatus:"loaded",data:p}})).catch(p=>{n({type:"AddLatestError",error:p}),A==null||A(p)})))},[e,n,s,t.contactId])},EK=()=>{const{routes:e}=gK(),t=li(),n=Nn(),[r,i]=g.useState(!1),o=ve(l=>l.isDirty),[a,s]=g.useState(1);return wK(),x4(),g.useEffect(()=>{i(!1)},[t]),N("div",{className:"App",children:[m(X8,{setNavigationPanelExpanded:i,isNavigationPanelExpanded:r}),m(E7,{}),N("div",{className:"single-page-application-body",children:[m(bK,{isNavigationPanelExpanded:r,setIsNavigationPanelExpanded:i}),e,m(o8,{when:o,children:({isActive:l,onConfirm:c,onCancel:d})=>m(im,{isModalShown:l,setIsModalShown:()=>d(null),buttonInfo:{hasModal:!0,label:"Unsaved changes",modalInfo:{isErrorModal:!1,modalContent:m(re,{children:"You have unsaved changes. Are you sure you want to leave without saving?"}),modalButtonLabel:"Leave",modalTitle:"Unsaved changes",onClick:async()=>{n({type:"SetIsDirty",isDirty:!1}),n({type:"SetSaveDirtyPage",saveDirtyPage:void 0}),c(null),s(a+1)}}}})},a),m(CK,{})]})]})};function mi(e){return"Minified Redux error #"+e+"; visit https://redux.js.org/Errors?code="+e+" for the full message or use the non-minified dev environment for full errors. "}var yD=function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"}(),ZA=function(){return Math.random().toString(36).substring(7).split("").join(".")},bD={INIT:"@@redux/INIT"+ZA(),REPLACE:"@@redux/REPLACE"+ZA(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+ZA()}};function SK(e){if(typeof e!="object"||e===null)return!1;for(var t=e;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function UR(e,t,n){var r;if(typeof t=="function"&&typeof n=="function"||typeof n=="function"&&typeof arguments[3]=="function")throw new Error(mi(0));if(typeof t=="function"&&typeof n>"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(mi(1));return n(UR)(e,t)}if(typeof e!="function")throw new Error(mi(2));var i=e,o=t,a=[],s=a,l=!1;function c(){s===a&&(s=a.slice())}function d(){if(l)throw new Error(mi(3));return o}function u(p){if(typeof p!="function")throw new Error(mi(4));if(l)throw new Error(mi(5));var C=!0;return c(),s.push(p),function(){if(C){if(l)throw new Error(mi(6));C=!1,c();var h=s.indexOf(p);s.splice(h,1),a=null}}}function f(p){if(!SK(p))throw new Error(mi(7));if(typeof p.type>"u")throw new Error(mi(8));if(l)throw new Error(mi(9));try{l=!0,o=i(o,p)}finally{l=!1}for(var C=a=s,y=0;y1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:$w(e)?2:eE(e)?3:0}function a1(e,t){return sd(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function IK(e,t){return sd(e)===2?e.get(t):e[t]}function jR(e,t,n){var r=sd(e);r===2?e.set(t,n):r===3?(e.delete(t),e.add(n)):e[t]=n}function DK(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function $w(e){return TK&&e instanceof Map}function eE(e){return RK&&e instanceof Set}function cl(e){return e.o||e.t}function tE(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=kK(e);delete t[ii];for(var n=oE(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=FK),Object.freeze(e),t&&yv(e,function(n,r){return nE(r,!0)},!0)),e}function FK(){Qi(2)}function rE(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function To(e){var t=xK[e];return t||Qi(18,e),t}function CD(){return bv}function XA(e,t){t&&(To("Patches"),e.u=[],e.s=[],e.v=t)}function qh(e){s1(e),e.p.forEach(NK),e.p=null}function s1(e){e===bv&&(bv=e.l)}function wD(e){return bv={p:[],l:bv,h:e,m:!0,_:0}}function NK(e){var t=e[ii];t.i===0||t.i===1?t.j():t.O=!0}function qA(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.g||To("ES5").S(t,e,r),r?(n[ii].P&&(qh(t),Qi(4)),Gl(e)&&(e=Jh(t,e),t.l||$h(t,e)),t.u&&To("Patches").M(n[ii].t,e,t.u,t.s)):e=Jh(t,n,[]),qh(t),t.u&&t.v(t.u,t.s),e!==HR?e:void 0}function Jh(e,t,n){if(rE(t))return t;var r=t[ii];if(!r)return yv(t,function(o,a){return ED(e,r,t,o,a,n)},!0),t;if(r.A!==e)return t;if(!r.P)return $h(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=tE(r.k):r.o;yv(r.i===3?new Set(i):i,function(o,a){return ED(e,r,i,o,a,n)}),$h(e,i,!1),n&&e.u&&To("Patches").R(r,n,e.u,e.s)}return r.o}function ED(e,t,n,r,i,o){if(zu(i)){var a=Jh(e,i,o&&t&&t.i!==3&&!a1(t.D,r)?o.concat(r):void 0);if(jR(n,r,a),!zu(a))return;e.m=!1}if(Gl(i)&&!rE(i)){if(!e.h.F&&e._<1)return;Jh(e,i),t&&t.A.l||$h(e,i)}}function $h(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&nE(t,n)}function JA(e,t){var n=e[ii];return(n?cl(n):e)[t]}function SD(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function l1(e){e.P||(e.P=!0,e.l&&l1(e.l))}function $A(e){e.o||(e.o=tE(e.t))}function c1(e,t,n){var r=$w(t)?To("MapSet").N(t,n):eE(t)?To("MapSet").T(t,n):e.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:CD(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=s,c=u1;a&&(l=[s],c=$d);var d=Proxy.revocable(l,c),u=d.revoke,f=d.proxy;return s.k=f,s.j=u,f}(t,n):To("ES5").J(t,n);return(n?n.A:CD()).p.push(r),r}function MK(e){return zu(e)||Qi(22,e),function t(n){if(!Gl(n))return n;var r,i=n[ii],o=sd(n);if(i){if(!i.P&&(i.i<4||!To("ES5").K(i)))return i.t;i.I=!0,r=ID(n,o),i.I=!1}else r=ID(n,o);return yv(r,function(a,s){i&&IK(i.t,a)===s||jR(r,a,t(s))}),o===3?new Set(r):r}(e)}function ID(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return tE(e)}var DD,bv,iE=typeof Symbol<"u"&&typeof Symbol("x")=="symbol",TK=typeof Map<"u",RK=typeof Set<"u",FD=typeof Proxy<"u"&&Proxy.revocable!==void 0&&typeof Reflect<"u",HR=iE?Symbol.for("immer-nothing"):((DD={})["immer-nothing"]=!0,DD),ND=iE?Symbol.for("immer-draftable"):"__$immer_draftable",ii=iE?Symbol.for("immer-state"):"__$immer_state",PK=""+Object.prototype.constructor,oE=typeof Reflect<"u"&&Reflect.ownKeys?Reflect.ownKeys:Object.getOwnPropertySymbols!==void 0?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames,kK=Object.getOwnPropertyDescriptors||function(e){var t={};return oE(e).forEach(function(n){t[n]=Object.getOwnPropertyDescriptor(e,n)}),t},xK={},u1={get:function(e,t){if(t===ii)return e;var n=cl(e);if(!a1(n,t))return function(i,o,a){var s,l=SD(o,a);return l?"value"in l?l.value:(s=l.get)===null||s===void 0?void 0:s.call(i.k):void 0}(e,n,t);var r=n[t];return e.I||!Gl(r)?r:r===JA(e.t,t)?($A(e),e.o[t]=c1(e.A.h,r,e)):r},has:function(e,t){return t in cl(e)},ownKeys:function(e){return Reflect.ownKeys(cl(e))},set:function(e,t,n){var r=SD(cl(e),t);if(r!=null&&r.set)return r.set.call(e.k,n),!0;if(!e.P){var i=JA(cl(e),t),o=i==null?void 0:i[ii];if(o&&o.t===n)return e.o[t]=n,e.D[t]=!1,!0;if(DK(n,i)&&(n!==void 0||a1(e.t,t)))return!0;$A(e),l1(e)}return e.o[t]===n&&typeof n!="number"&&(n!==void 0||t in e.o)||(e.o[t]=n,e.D[t]=!0,!0)},deleteProperty:function(e,t){return JA(e.t,t)!==void 0||t in e.t?(e.D[t]=!1,$A(e),l1(e)):delete e.D[t],e.o&&delete e.o[t],!0},getOwnPropertyDescriptor:function(e,t){var n=cl(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.i!==1||t!=="length",enumerable:r.enumerable,value:n[t]}},defineProperty:function(){Qi(11)},getPrototypeOf:function(e){return Object.getPrototypeOf(e.t)},setPrototypeOf:function(){Qi(12)}},$d={};yv(u1,function(e,t){$d[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),$d.deleteProperty=function(e,t){return $d.set.call(this,e,t,void 0)},$d.set=function(e,t,n){return u1.set.call(this,e[0],t,n,e[0])};var _K=function(){function e(n){var r=this;this.g=FD,this.F=!0,this.produce=function(i,o,a){if(typeof i=="function"&&typeof o!="function"){var s=o;o=i;var l=r;return function(p){var C=this;p===void 0&&(p=s);for(var y=arguments.length,h=Array(y>1?y-1:0),b=1;b1?d-1:0),f=1;f=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=To("Patches").$;return zu(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},e}(),oi=new _K,BK=oi.produce;oi.produceWithPatches.bind(oi);oi.setAutoFreeze.bind(oi);oi.setUseProxies.bind(oi);oi.applyPatches.bind(oi);oi.createDraft.bind(oi);oi.finishDraft.bind(oi);const LK=BK;/*! * Microsoft Dynamic Proto Utility, 1.1.7 * Copyright (c) Microsoft and contributors. All rights reserved. */var Zm,Xm="undefined",eg="constructor",va="prototype",tg="function",ng="_dynInstFuncs",d1="_isDynProxy",hu="_dynClass",OK="_dynCls$",f1="_dynInstChk",Cv=f1,KR="_dfOpts",MD="_unknown_",WR="__proto__",qm="_dyn"+WR,TD="__dynProto$Gbl",ey="_dynInstProto",Vp="useBaseInst",v1="setInstFuncs",k0=Object,wv=k0.getPrototypeOf,RD=k0.getOwnPropertyNames;function UK(){var e;return typeof globalThis!==Xm&&(e=globalThis),!e&&typeof self!==Xm&&(e=self),!e&&typeof window!==Xm&&(e=window),!e&&typeof global!==Xm&&(e=global),e||{}}var PD=UK(),m1=PD[TD]||(PD[TD]={o:(Zm={},Zm[v1]=!0,Zm[Vp]=!0,Zm),n:1e3});function ma(e,t){return e&&k0[va].hasOwnProperty.call(e,t)}function zR(e){return e&&(e===k0[va]||e===Array[va])}function aE(e){return zR(e)||e===Function[va]}function Yl(e){var t;if(e){if(wv)return wv(e);var n=e[WR]||e[va]||(e[eg]?e[eg][va]:null);t=e[qm]||n,ma(e,qm)||(delete e[ey],t=e[qm]=e[ey]||e[qm],e[ey]=n)}return t}function rg(e,t){var n=[];if(RD)n=RD(e);else for(var r in e)typeof r=="string"&&ma(e,r)&&n.push(r);if(n&&n.length>0)for(var i=0;i=0;n--)if(e[n]===t)return!0;return!1}function HK(e,t,n,r){function i(l,c,d){var u=c[d];if(u[d1]&&r){var f=l[ng]||{};f[Cv]!==!1&&(u=(f[c[hu]]||{})[d]||u)}return function(){return u.apply(l,arguments)}}var o={};rg(n,function(l){o[l]=i(t,n,l)});for(var a=Yl(e),s=[];a&&!aE(a)&&!lE(s,a);)rg(a,function(l){!o[l]&&sE(a,l,!wv)&&(o[l]=i(t,a,l))}),s.push(a),a=Yl(a);return o}function KK(e,t,n,r){var i=null;if(e&&ma(n,hu)){var o=e[ng]||{};if(i=(o[n[hu]]||{})[t],i||ig("Missing ["+t+"] "+tg),!i[f1]&&o[Cv]!==!1){for(var a=!ma(e,t),s=Yl(e),l=[];a&&s&&!aE(s)&&!lE(l,s);){var c=s[t];if(c){a=c===r;break}l.push(s),s=Yl(s)}try{a&&(e[t]=i),i[f1]=1}catch{o[Cv]=!1}}}return i}function WK(e,t,n){var r=t[e];return r===n&&(r=Yl(t)[e]),typeof r!==tg&&ig("["+e+"] is not a "+tg),r}function zK(e,t,n,r,i){function o(l,c){var d=function(){var u=KK(this,c,l,d)||WK(c,l,d);return u.apply(this,arguments)};return d[d1]=1,d}if(!zR(e)){var a=n[ng]=n[ng]||{},s=a[t]=a[t]||{};a[Cv]!==!1&&(a[Cv]=!!i),rg(n,function(l){sE(n,l,!1)&&n[l]!==r[l]&&(s[l]=n[l],delete n[l],(!ma(e,l)||e[l]&&!e[l][d1])&&(e[l]=o(e,l)))})}}function VK(e,t){if(wv){for(var n=[],r=Yl(t);r&&!aE(r)&&!lE(n,r);){if(r===e)return!0;n.push(r),r=Yl(r)}return!1}return!0}function ty(e,t){return ma(e,va)?e.name||t||MD:((e||{})[eg]||{}).name||t||MD}function Rt(e,t,n,r){ma(e,va)||ig("theClass is an invalid class definition.");var i=e[va];VK(i,t)||ig("["+ty(e)+"] not in hierarchy of ["+ty(t)+"]");var o=null;ma(i,hu)?o=i[hu]:(o=OK+ty(e,"_")+"$"+m1.n,m1.n++,i[hu]=o);var a=Rt[KR],s=!!a[Vp];s&&r&&r[Vp]!==void 0&&(s=!!r[Vp]);var l=jK(t),c=HK(i,t,l,s);n(t,c);var d=!!wv&&!!a[v1];d&&r&&(d=!!r[v1]),zK(i,o,t,l,d!==!1)}Rt[KR]=m1.o;var ld="function",Aa="object",ns="undefined",hr="prototype",cE="hasOwnProperty",ya=Object,uE=ya[hr],p1=ya.assign,GK=ya.create,VR=ya.defineProperty,Ql=uE[cE],kD=null;function cd(e){e===void 0&&(e=!0);var t=e===!1?null:kD;return t||(typeof globalThis!==ns&&(t=globalThis),!t&&typeof self!==ns&&(t=self),!t&&typeof window!==ns&&(t=window),!t&&typeof global!==ns&&(t=global),kD=t),t}function dE(e){throw new TypeError(e)}function GR(e){var t=GK;if(t)return t(e);if(e==null)return{};var n=typeof e;n!==Aa&&n!==ld&&dE("Object prototype may only be an Object:"+e);function r(){}return r[hr]=e,new r}(cd()||{}).Symbol;(cd()||{}).Reflect;var YK=function(e){for(var t,n=1,r=arguments.length;n=r&&!(n=e===t)){for(var o=i-1,a=r-1;a>=0;a--){if(e[o]!=t[a])return!1;o--}n=!0}return n}function Vn(e,t){return e&&t?e[om](t)!==-1:!1}var Et=eW||lW;function lW(e){return!!(e&&tP[Ar](e)==="[object Array]")}function oP(e){return!!(e&&tP[Ar](e)==="[object Error]")}function Ne(e){return typeof e=="string"}function aP(e){return typeof e=="number"}function cW(e){return typeof e=="boolean"}function VD(e){var t=!1;if(e&&typeof e=="object"){var n=ug?ug(e):rP(e);n?(n[Zp]&&Ql[Ar](n,Zp)&&(n=n[Zp]),t=typeof n===ld&&nP[Ar](n)===tW):t=!0}return t}function Zu(e){if(e)return $K?e[qR]():uW(e)}function uW(e){if(e&&e.getUTCFullYear){var t=function(n){var r=String(n);return r[Ke]===1&&(r="0"+r),r};return e.getUTCFullYear()+"-"+t(e.getUTCMonth()+1)+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+String((e.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}}function Se(e,t,n){var r=e[Ke];try{for(var i=0;i=0?i:r-Math.abs(i),0);o=3)r=arguments[2];else{for(;o0&&cW(s)&&(c=s,s=a[d]||{},d++),to(s)||(s={});d=v&&(l[b](h[gu]),r[w]=!0)}else i>=v&&l[b](h[gu]);c(v,h)}},l[Qp]=function(v){XD("warn",v),f("warning",v)},l[iy]=function(v){XD("error",v),f("error",v)},l.resetInternalMessageCount=function(){n=0,r={}},l[ZR]=c;function c(v,A){if(!u()){var p=!0,C=LW+A[ag];if(r[C]?p=!1:r[C]=!0,p&&(v<=o&&(l.queue[At](A),n++,f(v===1?"error":"warn",A)),n===a)){var y="Internal events throttle limit per PageView reached for this app.",h=new Dv(23,y,!1);l.queue[At](h),v===1?l[iy](y):l[Qp](y)}}}function d(v){i=bo(v.loggingLevelConsole,0),o=bo(v.loggingLevelTelemetry,1),a=bo(v.maxMessageLimit,25),s=bo(v[BD],!1)}function u(){return n>=a}function f(v,A){var p=AP(t||{});p&&p[ql]&&p[ql](v,A)}})}return e.__ieDyn=1,e}();function gE(e){return e||new _0}function me(e,t,n,r,i,o){o===void 0&&(o=!1),gE(e).throwInternal(t,n,r,i,o)}function Cl(e,t){gE(e)[Qp](t)}function OW(e,t,n){gE(e)[ZR](t,n)}var bu="ctx",k1="ParentContextKey",Tf="ChildrenContextKey",UW=null,Xp=function(){function e(t,n,r){var i=this,o=!1;if(i.start=xo(),i[Rs]=t,i[Gu]=r,i[w1]=function(){return!1},Le(n)){var a;o=rs(i,"payload",function(){return!a&&Le(n)&&(a=n(),n=null),a})}i[Au]=function(s){return s?s===e[k1]||s===e[Tf]?i[s]:(i[bu]||{})[s]:null},i[po]=function(s,l){if(s)if(s===e[k1])i[s]||(i[w1]=function(){return!0}),i[s]=l;else if(s===e[Tf])i[s]=l;else{var c=i[bu]=i[bu]||{};c[s]=l}},i[E1]=function(){var s=0,l=i[Au](e[Tf]);if(Et(l))for(var c=0;c>>=0),tf=123456789+e&Rl,nf=987654321-e&Rl,bP=!0}function WW(){try{var e=xo()&2147483647;KW((Math.random()*yP^e)+e)}catch{}}function hg(e){var t=0,n=MW()||TW();return n&&n.getRandomValues&&(t=n.getRandomValues(new Uint32Array(1))[0]&Rl),t===0&&P1()&&(bP||WW(),t=zW()&Rl),t===0&&(t=Math.floor(yP*Math.random()|0)),e||(t>>>=0),t}function zW(e){nf=36969*(nf&65535)+(nf>>16)&Rl,tf=18e3*(tf&65535)+(tf>>16)&Rl;var t=(nf<<16)+(tf&65535)>>>0&Rl|0;return e||(t>>>=0),t}function AE(e){e===void 0&&(e=22);for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=hg()>>>0,r=0,i=He;i[Ke]>>=6,r===5&&(n=(hg()<<2&4294967295|n&3)>>>0,r=0);return i}var qD=VR,CP="2.8.9",VW="."+AE(6),GW=0;function YW(e,t,n){if(qD)try{return qD(e,t,{value:n,enumerable:!1,configurable:!0}),!0}catch{}return!1}function wP(e){return e[ry]===1||e[ry]===9||!+e[ry]}function QW(e,t){var n=t[e.id];if(!n){n={};try{wP(t)&&(YW(t,e.id,n)||(t[e.id]=n))}catch{}}return n}function wa(e,t){return t===void 0&&(t=!1),dg(e+GW+++(t?"."+CP:He)+VW)}function EP(e){var t={id:wa("_aiData-"+(e||He)+"."+CP),accept:function(n){return wP(n)},get:function(n,r,i,o){var a=n[t.id];return a?a[dg(r)]:(o&&(a=QW(t,n),a[dg(r)]=i),i)},kill:function(n,r){if(n&&n[r])try{delete n[r]}catch{}}};return t}var JD="toGMTString",$D="toUTCString",yE="cookie",dy="expires",x1="enabled",eF="isCookieUseDisabled",tF="disableCookiesUsage",os="_ckMgr",tp=null,fy=null,nF=null,Fv=ei(),rF={},gg={};function ZW(e,t){var n=Rf[os]||gg[os];return n||(n=Rf[os]=Rf(e,t),gg[os]=n),n}function np(e){return e?e.isEnabled():!0}function XW(e){var t=e[b1]=e[b1]||{};if(rt(t,"domain",e.cookieDomain,oW,de),rt(t,"path",e.cookiePath||"/",null,de),de(t[x1])){var n=void 0;Ln(e[eF])||(n=!e[eF]),Ln(e[tF])||(n=!e[tF]),t[x1]=n}return t}function SP(e,t){return t&&e&&Et(e.ignoreCookies)?e.ignoreCookies[om](t)!==-1:!1}function qW(e,t){return t&&e&&Et(e.blockedCookies)&&e.blockedCookies[om](t)!==-1?!0:SP(e,t)}function bE(e,t){var n;if(e)n=e.getCookieMgr();else if(t){var r=t[b1];r[os]?n=r[os]:n=Rf(t)}return n||(n=ZW(t,(e||{})[go])),n}function Rf(e,t){var n,r=XW(e||gg),i=r.path||"/",o=r.domain,a=r[x1]!==!1,s=(n={isEnabled:function(){var l=a&&iF(t),c=gg[os];return l&&c&&s!==c&&(l=np(c)),l}},n[QR]=function(l){a=l!==!1},n.set=function(l,c,d,u,f){var v=!1;if(np(s)&&!qW(r,l)){var A={},p=mr(c||He),C=p[om](";");if(C!==-1&&(p=mr(c[sg](0,C)),A=IP(c[sg](C+1))),rt(A,"domain",u||o,M1,Ln),!de(d)){var y=P1();if(Ln(A[dy])){var h=xo(),b=h+d*1e3;if(b>0){var w=new Date;w.setTime(b),rt(A,dy,oF(w,y?JD:$D)||oF(w,y?JD:$D)||He,M1)}}y||rt(A,"max-age",He+d,null,Ln)}var S=is();S&&S.protocol==="https:"&&(rt(A,"secure",null,null,Ln),fy===null&&(fy=!$W((Ca()||{})[lg])),fy&&rt(A,"SameSite","None",null,Ln)),rt(A,"path",f||i,null,Ln);var E=r.setCookie||sF;E(l,aF(p,A)),v=!0}return v},n.get=function(l){var c=He;return np(s)&&!SP(r,l)&&(c=(r.getCookie||JW)(l)),c},n.del=function(l,c){var d=!1;return np(s)&&(d=s.purge(l,c)),d},n.purge=function(l,c){var d,u=!1;if(iF(t)){var f=(d={},d.path=c||"/",d[dy]="Thu, 01 Jan 1970 00:00:01 GMT",d);P1()||(f["max-age"]="0");var v=r.delCookie||sF;v(l,aF(He,f)),u=!0}return u},n);return s[os]=s,s}function iF(e){if(tp===null){tp=!1;try{var t=Fv||{};tp=t[yE]!==void 0}catch(n){me(e,2,68,"Cannot access document.cookie - "+et(n),{exception:Ee(n)})}}return tp}function IP(e){var t={};if(e&&e[Ke]){var n=mr(e)[Iv](";");Se(n,function(r){if(r=mr(r||He),r){var i=r[om]("=");i===-1?t[r]=null:t[mr(r[sg](0,i))]=mr(r[sg](i+1))}})}return t}function oF(e,t){return Le(e[t])?e[t]():null}function aF(e,t){var n=e||He;return Lt(t,function(r,i){n+="; "+r+(de(i)?He:"="+i)}),n}function JW(e){var t=He;if(Fv){var n=Fv[yE]||He;nF!==n&&(rF=IP(n),nF=n),t=mr(rF[e]||He)}return t}function sF(e,t){Fv&&(Fv[yE]=e+"="+t)}function $W(e){return Ne(e)?!!(Vn(e,"CPU iPhone OS 12")||Vn(e,"iPad; CPU OS 12")||Vn(e,"Macintosh; Intel Mac OS X 10_14")&&Vn(e,"Version/")&&Vn(e,"Safari")||Vn(e,"Macintosh; Intel Mac OS X 10_14")&&aW(e,"AppleWebKit/605.1.15 (KHTML, like Gecko)")||Vn(e,"Chrome/5")||Vn(e,"Chrome/6")||Vn(e,"UnrealEngine")&&!Vn(e,"Chrome")||Vn(e,"UCBrowser/12")||Vn(e,"UCBrowser/11")):!1}var DP="on",lF="attachEvent",cF="addEventListener",uF="detachEvent",dF="removeEventListener",_1="events",B1="visibilitychange",B0="pagehide",FP="unload",NP="beforeunload",MP=wa("aiEvtPageHide");wa("aiEvtPageShow");var ez=/\.[\.]+/g,tz=/[\.]+$/,nz=1,Ag=EP("events"),rz=/^([^.]*)(?:\.(.+)|)/;function fF(e){return e&&e[bs]?e[bs](/^[\s\.]+|(?=[\s\.])[\.\s]+$/g,He):e}function CE(e,t){var n;if(t){var r=He;Et(t)?(r=He,Se(t,function(o){o=fF(o),o&&(o[0]!=="."&&(o="."+o),r+=o)})):r=fF(t),r&&(r[0]!=="."&&(r="."+r),e=(e||He)+r)}var i=rz.exec(e||He)||[];return n={},n[ia]=i[1],n.ns=(i[2]||He).replace(ez,".").replace(tz,He)[Iv](".").sort().join("."),n}function TP(e,t,n){n===void 0&&(n=!0);var r=Ag.get(e,_1,{},n),i=r[t];return i||(i=r[t]=[]),i}function RP(e,t,n,r){e&&t&&t[ia]&&(e[dF]?e[dF](t[ia],n,r):e[uF]&&e[uF](DP+t[ia],n))}function iz(e,t,n,r){var i=!1;return e&&t&&t[ia]&&n&&(e[cF]?(e[cF](t[ia],n,r),i=!0):e[lF]&&(e[lF](DP+t[ia],n),i=!0)),i}function vF(e,t,n,r){for(var i=t[Ke];i--;){var o=t[i];o&&(!n.ns||n.ns===o.evtName.ns)&&(!r||r(o))&&(RP(e,o.evtName,o[fE],o.capture),t[Vu](i,1))}}function oz(e,t,n){if(t[ia])vF(e,TP(e,t[ia]),t,n);else{var r=Ag.get(e,_1,{});Lt(r,function(i,o){vF(e,o,t,n)}),Jl(r)[Ke]===0&&Ag.kill(e,_1)}}function ac(e,t){var n;return t?(Et(t)?n=[e].concat(t):n=[e,t],n=CE("xx",n).ns[Iv](".")):n=e,n}function Es(e,t,n,r,i){var o;i===void 0&&(i=!1);var a=!1;if(e)try{var s=CE(t,r);if(a=iz(e,s,n,i),a&&Ag.accept(e)){var l=(o={guid:nz++,evtName:s},o[fE]=n,o.capture=i,o);TP(e,s.type)[At](l)}}catch{}return a}function Pf(e,t,n,r,i){if(i===void 0&&(i=!1),e)try{var o=CE(t,r),a=!1;oz(e,o,function(s){return o.ns&&!n||s[fE]===n?(a=!0,!0):!1}),a||RP(e,o,n,i)}catch{}}function az(e,t,n){var r=!1,i=ws();i&&(r=Es(i,e,t,n),r=Es(i.body,e,t,n)||r);var o=ei();return o&&(r=Es(o,e,t,n)||r),r}function sz(e,t,n){var r=ws();r&&(Pf(r,e,t,n),Pf(r.body,e,t,n));var i=ei();i&&Pf(i,e,t,n)}function yg(e,t,n,r){var i=!1;return t&&e&&e[Ke]>0&&Se(e,function(o){o&&(!n||qi(n,o)===-1)&&(i=az(o,t,r)||i)}),i}function lz(e,t,n,r){var i=!1;return t&&e&&Et(e)&&(i=yg(e,t,n,r),!i&&n&&n[Ke]>0&&(i=yg(e,t,null,r))),i}function L1(e,t,n){e&&Et(e)&&Se(e,function(r){r&&sz(r,t,n)})}function cz(e,t,n){return lz([NP,FP,B0],e,t,n)}function uz(e,t){L1([NP,FP,B0],e,t)}function O1(e,t,n){function r(a){var s=ei();e&&s&&s.visibilityState==="hidden"&&e(a)}var i=ac(MP,n),o=yg([B0],e,t,i);return(!t||qi(t,B1)===-1)&&(o=yg([B1],r,t,i)||o),!o&&t&&(o=O1(e,null,n)),o}function dz(e,t){var n=ac(MP,t);L1([B0],e,n),L1([B1],null,n)}function as(){for(var e=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"],t=He,n,r=0;r<4;r++)n=hg(),t+=e[n&15]+e[n>>4&15]+e[n>>8&15]+e[n>>12&15]+e[n>>16&15]+e[n>>20&15]+e[n>>24&15]+e[n>>28&15];var i=e[8+(hg()&3)|0];return t[_c](0,8)+t[_c](9,4)+"4"+t[_c](13,3)+i+t[_c](16,3)+t[_c](19,12)}var U1="00",fz="ff",PP="00000000000000000000000000000000",kP="0000000000000000";function lm(e,t,n){return e&&e[Ke]===t&&e!==n?!!e.match(/^[\da-f]*$/):!1}function mF(e,t,n){return lm(e,t)?e:n}function vz(e){(isNaN(e)||e<0||e>255)&&(e=1);for(var t=e.toString(16);t[Ke]<2;)t="0"+t;return t}function pF(e,t,n,r){var i;return i={},i[XR]=lm(r,2,fz)?r:U1,i[S1]=wE(e)?e:as(),i.spanId=EE(t)?t:as()[_c](0,16),i.traceFlags=n>=0&&n<=255?n:1,i}function wE(e){return lm(e,32,PP)}function EE(e){return lm(e,16,kP)}function hF(e){if(e){var t=vz(e[I1]);lm(t,2)||(t="01");var n=e[XR]||U1;return n!=="00"&&n!=="ff"&&(n=U1),"".concat(n,"-").concat(mF(e.traceId,32,PP),"-").concat(mF(e.spanId,16,kP),"-").concat(t)}return""}var mz=EP("plugin");function Pl(e){return mz.get(e,"state",{},!0)}function xP(e,t){for(var n=[],r=null,i=e[Ro](),o;i;){var a=i[x0]();if(a){r&&Le(r[Sv])&&Le(a[ko])&&r[Sv](a);var s=!1;Le(a[ta])?s=a[ta]():(o=Pl(a),s=o[ta]),s||n[At](a),r=a,i=i[Ro]()}}Se(n,function(l){var c=e[ln]();l[Zl](e.getCfg(),c,t,e[Ro]()),o=Pl(l),!l[ln]&&!o[ln]&&(o[ln]=c),o[ta]=!0,delete o[Go]})}function vy(e){return e.sort(function(t,n){var r=0;if(n){var i=Le(n[ko]);Le(t[ko])?r=i?t[Cs]-n[Cs]:1:i&&(r=-1)}else r=t?1:-1;return r})}function pz(e){var t={};return{getName:function(){return t[Rs]},setName:function(n){e&&e.setName(n),t[Rs]=n},getTraceId:function(){return t[S1]},setTraceId:function(n){e&&e.setTraceId(n),wE(n)&&(t[S1]=n)},getSpanId:function(){return t[LD]},setSpanId:function(n){e&&e.setSpanId(n),EE(n)&&(t[LD]=n)},getTraceFlags:function(){return t[I1]},setTraceFlags:function(n){e&&e.setTraceFlags(n),t[I1]=n}}}var hz="TelemetryPluginChain",gF="_hasRun",AF="_getTelCtx",yF=0;function gz(e,t,n){for(;e;){if(e[x0]()===n)return e;e=e[Ro]()}return ks([n],t[Xl]||{},t)}function SE(e,t,n,r){var i=null,o=[];r!==null&&(i=r?gz(e,n,r):e);var a={_next:l,ctx:{core:function(){return n},diagLog:function(){return sm(n,t)},getCfg:function(){return t},getExtCfg:c,getConfig:d,hasNext:function(){return!!i},getNext:function(){return i},setNext:function(f){i=f},iterate:u,onComplete:s}};function s(f,v){for(var A=[],p=2;p0&&(Se(v,function(A){try{A.func[Ar](A.self,A.args)}catch(p){me(n[go],2,73,"Unexpected Exception during onComplete - "+Ee(p))}}),o=[])}return f}function c(f,v,A){v===void 0&&(v={}),A===void 0&&(A=0);var p;if(t){var C=t[vE];C&&f&&(p=C[f])}if(!p)p=v;else if(to(v)&&A!==0){var y=hE(!0,v,p);t&&A===2&&Lt(v,function(h){if(de(y[h])){var b=t[h];de(b)||(y[h]=b)}}),p=y}return p}function d(f,v,A){A===void 0&&(A=!1);var p,C=c(f,null);return C&&!de(C[v])?p=C[v]:t&&!de(t[v])&&(p=t[v]),de(p)?A:p}function u(f){for(var v;v=a._next();){var A=v[x0]();A&&f(A)}}return a}function _o(e,t,n,r){var i=SE(e,t,n,r),o=i.ctx;function a(l){var c=i._next();return c&&c[ko](l,o),!c}function s(l,c){return l===void 0&&(l=null),Et(l)&&(l=ks(l,t,n,c)),_o(l||o[Ro](),t,n,c)}return o[tn]=a,o[Yu]=s,o}function bg(e,t,n){var r=t[Xl]||{},i=SE(e,r,t,n),o=i.ctx;function a(l){var c=i._next();return c&&c.unload(o,l),!c}function s(l,c){return l===void 0&&(l=null),Et(l)&&(l=ks(l,r,t,c)),bg(l||o[Ro](),t,c)}return o[tn]=a,o[Yu]=s,o}function IE(e,t,n){var r=t[Xl]||{},i=SE(e,r,t,n),o=i.ctx;function a(l){return o.iterate(function(c){Le(c[Ev])&&c[Ev](o,l)})}function s(l,c){return l===void 0&&(l=null),Et(l)&&(l=ks(l,r,t,c)),IE(l||o[Ro](),t,c)}return o[tn]=a,o[Yu]=s,o}function ks(e,t,n,r){var i=null,o=!r;if(Et(e)&&e[Ke]>0){var a=null;Se(e,function(s){if(!o&&r===s&&(o=!0),o&&s&&Le(s[ko])){var l=Az(s,t,n);i||(i=l),a&&a._setNext(l),a=l}})}return r&&!i?ks([r],t,n):i}function Az(e,t,n){var r=null,i=Le(e[ko]),o=Le(e[Sv]),a;e?a=e[ys]+"-"+e[Cs]+"-"+yF++:a="Unknown-0-"+yF++;var s={getPlugin:function(){return e},getNext:function(){return r},processTelemetry:d,unload:u,update:f,_id:a,_setNext:function(v){r=v}};function l(){var v;return e&&Le(e[AF])&&(v=e[AF]()),v||(v=_o(s,t,n)),v}function c(v,A,p,C,y){var h=!1,b=e?e[ys]:hz,w=v[gF];return w||(w=v[gF]={}),v.setNext(r),e&&pg(v[ln](),function(){return b+":"+p},function(){w[a]=!0;try{var S=r?r._id:He;S&&(w[S]=!1),h=A(v)}catch(I){var E=r?w[r._id]:!0;E&&(h=!0),(!r||!E)&&me(v[ql](),1,73,"Plugin ["+b+"] failed during "+p+" - "+Ee(I)+", run flags: "+Ee(w))}},C,y),h}function d(v,A){A=A||l();function p(C){if(!e||!i)return!1;var y=Pl(e);return y[Go]||y[D1]?!1:(o&&e[Sv](r),e[ko](v,C),!0)}c(A,p,"processTelemetry",function(){return{item:v}},!v.sync)||A[tn](v)}function u(v,A){function p(){var C=!1;if(e){var y=Pl(e),h=e[ln]||y[ln];e&&(!h||h===v.core())&&!y[Go]&&(y[ln]=null,y[Go]=!0,y[ta]=!1,e[Go]&&e[Go](v,A)===!0&&(C=!0))}return C}c(v,p,"unload",function(){},A[Gu])||v[tn](A)}function f(v,A){function p(){var C=!1;if(e){var y=Pl(e),h=e[ln]||y[ln];e&&(!h||h===v.core())&&!y[Go]&&e[Ev]&&e[Ev](v,A)===!0&&(C=!0)}return C}c(v,p,"update",function(){},!1)||v[tn](A)}return yu(s)}var L0=500,yz="Channel has invalid priority - ";function bF(e,t,n){t&&Et(t)&&t[Ke]>0&&(t=t.sort(function(r,i){return r[Cs]-i[Cs]}),Se(t,function(r){r[Cs]0&&Se(c,function(p){if(p&&p.queue[Ke]>0){var C=p.chain,y=d[Yu](C);y[A1](A),u(y)}else v--}),A()}function i(c,d){var u=d||{reason:0};return r(e,c,function(f){f[tn](u)},function(){c[tn](u)}),!0}function o(c,d){var u=d||{reason:0,isAsync:!1};return r(e,c,function(f){f[tn](u)},function(){c[tn](u),s=!1}),!0}function a(c){var d=null;return e&&e[Ke]>0&&Se(e,function(u){if(u&&u.queue[Ke]>0&&(Se(u.queue,function(f){if(f[ys]===c)return d=f,-1}),d))return-1}),d}var s=!1,l={identifier:"ChannelControllerPlugin",priority:L0,initialize:function(c,d,u,f){s=!0,Se(e,function(v){v&&v.queue[Ke]>0&&xP(_o(v.chain,c,d),u)})},isInitialized:function(){return s},processTelemetry:function(c,d){r(e,d||n(),function(u){u[tn](c)},function(){d[tn](c)})},update:i,pause:function(){r(e,n(),function(c){c.iterate(function(d){d.pause&&d.pause()})},null)},resume:function(){r(e,n(),function(c){c.iterate(function(d){d.resume&&d.resume()})},null)},teardown:o,getChannel:a,flush:function(c,d,u,f){var v=1,A=!1,p=null;f=f||5e3;function C(){v--,A&&v===0&&(p&&(clearTimeout(p),p=null),d&&d(A),d=null)}return r(e,n(),function(y){y.iterate(function(h){if(h[og]){v++;var b=!1;h[og](c,function(){b=!0,C()},u)||b||(c&&p==null?p=setTimeout(function(){p=null,C()},f):C())}})},function(){A=!0,C()}),!0},_setQueue:function(c){e=c}};return l}function Cz(e,t,n){var r=[];if(e&&Se(e,function(o){return bF(r,o,n)}),t){var i=[];Se(t,function(o){o[Cs]>L0&&i[At](o)}),bF(r,i,n)}return r}function _P(){var e=[];function t(r){r&&e[At](r)}function n(r,i){Se(e,function(o){try{o(r,i)}catch(a){me(r[ql](),2,73,"Unexpected error calling unload handler - "+Ee(a))}}),e=[]}return{add:t,run:n}}var xa="getPlugin",cm=function(){function e(){var t=this,n,r,i,o,a;c(),Rt(e,t,function(d){d[Zl]=function(u,f,v,A){l(u,f,A),n=!0},d[Go]=function(u,f){var v,A=d[ln];if(!A||u&&A!==u[ln]())return;var p,C=!1,y=u||bg(null,A,i&&i[xa]?i[xa]():i),h=f||(v={reason:0},v[Gu]=!1,v);function b(){if(!C){C=!0,o.run(y,f);var w=a;a=[],Se(w,function(S){S.rm()}),p===!0&&y[tn](h),c()}}return!d[y1]||d[y1](y,h,b)!==!0?b():p=!0,p},d[Ev]=function(u,f){var v=d[ln];if(!v||u&&v!==u[ln]())return;var A,p=!1,C=u||IE(null,v,i&&i[xa]?i[xa]():i),y=f||{reason:0};function h(){p||(p=!0,l(C.getCfg(),C.core(),C[Ro]()))}return!d._doUpdate||d._doUpdate(C,y,h)!==!0?h():A=!0,A},d._addHook=function(u){u&&(Et(u)?a=a.concat(u):a[At](u))},pE(d,"_addUnloadCb",function(){return o},"add")}),t[ql]=function(d){return s(d)[ql]()},t[ta]=function(){return n},t.setInitialized=function(d){n=d},t[Sv]=function(d){i=d},t[tn]=function(d,u){u?u[tn](d):i&&Le(i[ko])&&i[ko](d,null)},t._getTelCtx=s;function s(d){d===void 0&&(d=null);var u=d;if(!u){var f=r||_o(null,{},t[ln]);i&&i[xa]?u=f[Yu](null,i[xa]):u=f[Yu](null,i)}return u}function l(d,u,f){d&&rt(d,vE,[],null,de),!f&&u&&(f=u[YR]()[Ro]());var v=i;i&&i[xa]&&(v=i[xa]()),t[ln]=u,r=_o(f,d,u,v)}function c(){n=!1,t[ln]=null,r=null,i=null,a=[],o=_P()}}return e.__ieDyn=1,e}(),wz=function(e){ba(t,e);function t(){var n=e.call(this)||this;n.identifier="TelemetryInitializerPlugin",n.priority=199;var r,i;o(),Rt(t,n,function(a,s){a.addTelemetryInitializer=function(l){var c={id:r++,fn:l};i[At](c);var d={remove:function(){Se(i,function(u,f){if(u.id===c.id)return i[Vu](f,1),-1})}};return d},a[ko]=function(l,c){for(var d=!1,u=i[Ke],f=0;f0){var T=r;r=[],Se(T,function(j){F()[tn](j)})}},E.pollInternalLogs=function(T){C=T||null;var j=bo(t.diagnosticLogInterval);return(!j||!(j>0))&&(j=1e4),S&&clearInterval(S),S=setInterval(function(){G()},j),S},E[_D]=function(){S&&(clearInterval(S),S=0,G())},ef(E,function(){return p},["addTelemetryInitializer"]),E.unload=function(T,j,W){var U;T===void 0&&(T=!0),n||cr(Ez),A&&cr(wF);var Y=(U={reason:50},U[Gu]=T,U.flushComplete=!1,U),x=bg(P(),E);x[A1](function(){I(),j&&j(Y)},E);function L(V){Y.flushComplete=V,A=!0,h.run(x,Y),E[_D](),x[tn](Y)}_(T,L,6,W)||L(!1)},E[x0]=D,E.addPlugin=function(T,j,W,U){if(!T){U&&U(!1),R(BP);return}var Y=D(T[ys]);if(Y&&!j){U&&U(!1),R("Plugin ["+T[ys]+"] is already loaded!");return}var x={reason:16};function L(J){c[At](T),x.added=[T],k(x),U&&U(!0)}if(Y){var V=[Y.plugin],ee={reason:2,isAsync:!!W};H(V,ee,function(J){J?(x.removed=V,x.reason|=32,L()):U&&U(!1)})}else L()},E.evtNamespace=function(){return y},E[og]=_,E.getTraceCtx=function(T){return w||(w=pz()),w},E.setTraceCtx=function(T){w=T||null},pE(E,"addUnloadCb",function(){return h},"add");function I(){n=!1,t=hE(!0,{},Sz),E[Xl]=t,E[go]=new _0(t),E[Jm]=[],p=new wz,r=[],i=null,o=null,a=null,s=null,l=null,d=null,c=[],u=null,f=null,v=null,A=!1,C=null,y=wa("AIBaseCore",!0),h=_P(),w=null}function F(){return _o(P(),t,E)}function k(T){var j=Dz(E[go],L0,c);d=j[ln],l=null;var W=j.all;if(v=yu(Cz(f,W,E)),u){var U=qi(W,u);U!==-1&&W[Vu](U,1),U=qi(d,u),U!==-1&&d[Vu](U,1),u._setQueue(v)}else u=bz(v,E);W[At](u),d[At](u),E[Jm]=vy(W),u[Zl](t,E,W),xP(F(),W),E[Jm]=yu(vy(d||[])).slice(),T&&O(T)}function D(T){var j,W=null,U=null;return Se(E[Jm],function(Y){if(Y[ys]===T&&Y!==u&&Y!==p)return U=Y,-1}),!U&&u&&(U=u.getChannel(T)),U&&(W=(j={plugin:U},j[QR]=function(Y){Pl(U)[D1]=!Y},j.isEnabled=function(){var Y=Pl(U);return!Y[Go]&&!Y[D1]},j.remove=function(Y,x){var L;Y===void 0&&(Y=!0);var V=[U],ee=(L={reason:1},L[Gu]=Y,L);H(V,ee,function(J){J&&k({reason:32,removed:V}),x&&x(J)})},j)),W}function P(){if(!l){var T=(d||[]).slice();qi(T,p)===-1&&T[At](p),l=ks(vy(T),t,E)}return l}function H(T,j,W){if(T&&T[Ke]>0){var U=ks(T,t,E),Y=bg(U,E);Y[A1](function(){var x=!1,L=[];Se(c,function(ee,J){EF(ee,T)?x=!0:L[At](ee)}),c=L;var V=[];f&&(Se(f,function(ee,J){var $=[];Se(ee,function(ne){EF(ne,T)?x=!0:$[At](ne)}),V[At]($)}),f=V),W&&W(x)}),Y[tn](j)}else W(!1)}function G(){var T=E[go]?E[go].queue:[];T&&(Se(T,function(j){var W,U=(W={},W[Rs]=C||"InternalMessageId: "+j[ag],W.iKey=bo(t[ny]),W.time=Zu(new Date),W.baseType=Dv.dataType,W.baseData={message:j[gu]},W);E.track(U)}),T[Ke]=0)}function _(T,j,W,U){return u?u[og](T,j,W||6,U):(j&&j(!1),!0)}function M(){var T=bo(t.disableDbgExt);T===!0&&b&&(i[Nf](b),b=null),i&&!b&&T!==!0&&(b=xW(t),i[Ff](b))}function K(){var T=bo(t.enablePerfMgr);!T&&a&&(a=null),T&&yn(t,UD,Iz)}function Q(){var T=yn(t,vE,{});T.NotificationManager=i}function O(T){var j=IE(P(),E);(!E._updateHook||E._updateHook(j,T)!==!0)&&j[tn](T)}function R(T){var j=E[go];j?me(j,2,73,T):cr(T)}})}return e.__ieDyn=1,e}();function rp(e,t,n,r){Se(e,function(i){if(i&&i[t])if(n)setTimeout(function(){return r(i)},0);else try{r(i)}catch{}})}var Mz=function(){function e(t){this.listeners=[];var n=!!(t||{}).perfEvtsSendAll;Rt(e,this,function(r){r[Ff]=function(i){r.listeners[At](i)},r[Nf]=function(i){for(var o=qi(r[Cc],i);o>-1;)r.listeners[Vu](o,1),o=qi(r[Cc],i)},r[Gp]=function(i){rp(r[Cc],Gp,!0,function(o){o[Gp](i)})},r[Mf]=function(i,o){rp(r[Cc],Mf,!0,function(a){a[Mf](i,o)})},r[Yp]=function(i,o){rp(r[Cc],Yp,o,function(a){a[Yp](i,o)})},r[nu]=function(i){i&&(n||!i[w1]())&&rp(r[Cc],nu,!1,function(o){i[Gu]?setTimeout(function(){return o[nu](i)},0):o[nu](i)})}})}return e.__ieDyn=1,e}(),Tz=function(e){ba(t,e);function t(){var n=e.call(this)||this;return Rt(t,n,function(r,i){r[Zl]=function(s,l,c,d){i[Zl](s,l,c||new _0(s),d||new Mz(s))},r.track=function(s){pg(r[cg](),function(){return"AppInsightsCore:track"},function(){s===null&&(a(s),cr("Invalid telemetry item")),o(s),i.track(s)},function(){return{item:s}},!s.sync)};function o(s){de(s[Rs])&&(a(s),cr("telemetry name required"))}function a(s){var l=r[g1]();l&&l[Mf]([s],2)}}),n}return t.__ieDyn=1,t}(Nz),SF="_aiHooks",IF=["req","rsp","hkErr","fnErr"];function DE(e,t){if(e)for(var n=0;n=0&&i<=2&&DE(e,function(o,a){var s=o.cbks,l=s[IF[i]];if(l){t.ctx=function(){var u=r[a]=r[a]||{};return u};try{l[Qu](t.inst,n)}catch(u){var c=t.err;try{var d=s[IF[2]];d&&(t.err=u,d[Qu](t.inst,n))}catch{}finally{t.err=c}}}})}function Rz(e){return function(){var t,n=this,r=arguments,i=e.h,o=(t={},t[Rs]=e.n,t.inst=n,t.ctx=null,t.set=c,t),a=[],s=l([o],r);o.evt=un("event");function l(u,f){return DE(f,function(v){u[At](v)}),u}function c(u,f){r=l([],r),r[u]=f,s=l([o],r)}my(i,o,s,a,0);var d=e.f;if(d)try{o.rslt=d[Qu](n,r)}catch(u){throw o.err=u,my(i,o,s,a,3),u}return my(i,o,s,a,1),o.rslt}}function FE(e,t,n){var r=null;return e&&(iP(e,t)?r=e:n&&(r=FE(rP(e),t,!1))),r}function Pz(e,t,n){return e?j1(e[hr],t,n,!1):null}function LP(e,t,n,r){var i=n&&n[SF];if(!i){i={i:0,n:t,f:n,h:[]};var o=Rz(i);o[SF]=i,e[t]=o}var a={id:i.i,cbks:r,rm:function(){var s=this.id;DE(i.h,function(l,c){if(l.id===s)return i.h[Vu](c,1),1})}};return i.i++,i.h[At](a),a}function j1(e,t,n,r){if(r===void 0&&(r=!0),e&&t&&n){var i=FE(e,t,r);if(i){var o=i[t];if(typeof o===ld)return LP(i,t,o,n)}}return null}function ip(e,t,n,r){if(e&&t&&n){var i=FE(e,t,r)||e;if(i)return LP(i,t,i[t],n)}return null}var wl="Microsoft_ApplicationInsights_BypassAjaxInstrumentation",OP="sampleRate",py="ProcessLegacy",DF="http.method",NE="https://dc.services.visualstudio.com",kf="/v2/track",Bo="not_specified",hy="iKey";function Rd(e){var t=null;if(Le(Event))t=new Event(e);else{var n=ei();n&&n.createEvent&&(t=n.createEvent("Event"),t.initEvent(e,!0,!0))}return t}var Xu="split",ke="length",qu="toLowerCase",op="ingestionendpoint",xs="toString",ME="removeItem",ro="name",El="message",kz="count",H1="stringify",gy="pathname",FF="correlationHeaderExcludePatterns",Cg="indexOf",Ec="exceptions",Uo="parsedStack",oa="properties",aa="measurements",Cu="sizeInBytes",Ho="typeName",rf="severityLevel",Ay="problemGroup",yy="isManual",UP="CreateFromInterface",qp="hasFullStack",ap="level",Sc="method",sp="assembly",Pd="fileName",kd="line",wg="duration",NF="receivedResponse",dd="substring",xz="sanitizeKeyAndAddUniqueness",_z="sanitizeException",Bz="sanitizeProperties",Lz="sanitizeMeasurements",xd="";function uo(e,t){return t===void 0&&(t=!1),e==null?t:e.toString()[qu]()==="true"}function qa(e){(isNaN(e)||e<0)&&(e=0),e=Math.round(e);var t=xd+e%1e3,n=xd+Math.floor(e/1e3)%60,r=xd+Math.floor(e/(1e3*60))%60,i=xd+Math.floor(e/(1e3*60*60))%24,o=Math.floor(e/(1e3*60*60*24));return t=t[ke]===1?"00"+t:t[ke]===2?"0"+t:t,n=n[ke]<2?"0"+n:n,r=r[ke]<2?"0"+r:r,i=i[ke]<2?"0"+i:i,(o>0?o+".":xd)+i+":"+r+":"+n+"."+t}function Oz(e,t,n,r,i){return!i&&Ne(e)&&(e==="Script error."||e==="Script error")}var Pt=pW({requestContextHeader:[0,"Request-Context"],requestContextTargetKey:[1,"appId"],requestContextAppIdFormat:[2,"appId=cid-v1:"],requestIdHeader:[3,"Request-Id"],traceParentHeader:[4,"traceparent"],traceStateHeader:[5,"tracestate"],sdkContextHeader:[6,"Sdk-Context"],sdkContextHeaderAppIdRequest:[7,"appId"],requestContextHeaderLowerCase:[8,"request-context"]}),um=cP({LocalStorage:0,SessionStorage:1});cP({AI:0,AI_AND_W3C:1,W3C:2});var Ss=void 0,Is=void 0;function TE(){return PE()?O0(um.LocalStorage):null}function O0(e){try{if(de(cd()))return null;var t=new Date()[xs](),n=un(e===um.LocalStorage?"localStorage":"sessionStorage");n.setItem(t,t);var r=n.getItem(t)!==t;if(n[ME](t),!r)return n}catch{}return null}function RE(){return Nv()?O0(um.SessionStorage):null}function Uz(){Ss=!1,Is=!1}function jz(){Ss=PE(!0),Is=Nv(!0)}function PE(e){return(e||Ss===void 0)&&(Ss=!!O0(um.LocalStorage)),Ss}function Hz(e,t){var n=TE();if(n!==null)try{return n.getItem(t)}catch(r){Ss=!1,me(e,2,1,"Browser failed read of local storage. "+et(r),{exception:Ee(r)})}return null}function Kz(e,t,n){var r=TE();if(r!==null)try{return r.setItem(t,n),!0}catch(i){Ss=!1,me(e,2,3,"Browser failed write to local storage. "+et(i),{exception:Ee(i)})}return!1}function Wz(e,t){var n=TE();if(n!==null)try{return n[ME](t),!0}catch(r){Ss=!1,me(e,2,5,"Browser failed removal of local storage item. "+et(r),{exception:Ee(r)})}return!1}function Nv(e){return(e||Is===void 0)&&(Is=!!O0(um.SessionStorage)),Is}function K1(e,t){var n=RE();if(n!==null)try{return n.getItem(t)}catch(r){Is=!1,me(e,2,2,"Browser failed read of session storage. "+et(r),{exception:Ee(r)})}return null}function W1(e,t,n){var r=RE();if(r!==null)try{return r.setItem(t,n),!0}catch(i){Is=!1,me(e,2,4,"Browser failed write to session storage. "+et(i),{exception:Ee(i)})}return!1}function zz(e,t){var n=RE();if(n!==null)try{return n[ME](t),!0}catch(r){Is=!1,me(e,2,6,"Browser failed removal of session storage item. "+et(r),{exception:Ee(r)})}return!1}var Ir;function kE(e,t,n){var r=t[ke],i=jP(e,t);if(i[ke]!==r){for(var o=0,a=i;n[a]!==void 0;)o++,a=i[dd](0,150-3)+WP(o);i=a}return i}function jP(e,t){var n;return t&&(t=mr(t[xs]()),t[ke]>150&&(n=t[dd](0,150),me(e,2,57,"name is too long. It has been truncated to "+150+" characters.",{name:t},!0))),n||t}function jn(e,t,n){n===void 0&&(n=1024);var r;return t&&(n=n||1024,t=mr(t),t.toString()[ke]>n&&(r=t[xs]()[dd](0,n),me(e,2,61,"string value is too long. It has been truncated to "+n+" characters.",{value:t},!0))),r||t}function dm(e,t){return _E(e,t,2048,66)}function xE(e,t){var n;return t&&t[ke]>32768&&(n=t[dd](0,32768),me(e,2,56,"message is too long, it has been truncated to "+32768+" characters.",{message:t},!0)),n||t}function HP(e,t){var n;if(t){var r=""+t;r[ke]>32768&&(n=r[dd](0,32768),me(e,2,52,"exception is too long, it has been truncated to "+32768+" characters.",{exception:t},!0))}return n||t}function Ws(e,t){if(t){var n={};Lt(t,function(r,i){if(to(i)&&ud())try{i=no()[H1](i)}catch(o){me(e,2,49,"custom property is not valid",{exception:o},!0)}i=jn(e,i,8192),r=kE(e,r,n),n[r]=i}),t=n}return t}function zs(e,t){if(t){var n={};Lt(t,function(r,i){r=kE(e,r,n),n[r]=i}),t=n}return t}function KP(e,t){return t&&_E(e,t,128,69)[xs]()}function _E(e,t,n,r){var i;return t&&(t=mr(t),t[ke]>n&&(i=t[dd](0,n),me(e,2,r,"input is too long, it has been truncated to "+n+" characters.",{data:t},!0))),i||t}function WP(e){var t="00"+e;return t.substr(t[ke]-3)}Ir={MAX_NAME_LENGTH:150,MAX_ID_LENGTH:128,MAX_PROPERTY_LENGTH:8192,MAX_STRING_LENGTH:1024,MAX_URL_LENGTH:2048,MAX_MESSAGE_LENGTH:32768,MAX_EXCEPTION_LENGTH:32768},Ir[xz]=kE,Ir.sanitizeKey=jP,Ir.sanitizeString=jn,Ir.sanitizeUrl=dm,Ir.sanitizeMessage=xE,Ir[_z]=HP,Ir[Bz]=Ws,Ir[Lz]=zs,Ir.sanitizeId=KP,Ir.sanitizeInput=_E,Ir.padNumber=WP,Ir.trim=mr;var MF=ei()||{},TF=0,Vz=[null,null,null,null,null];function BE(e){var t=TF,n=Vz,r=n[t];return MF.createElement?n[t]||(r=n[t]=MF.createElement("a")):r={host:Qz(e,!0)},r.href=e,t++,t>=n[ke]&&(t=0),TF=t,r}function Gz(e){var t,n=BE(e);return n&&(t=n.href),t}function Yz(e,t){return e?e.toUpperCase()+" "+t:t}function Qz(e,t){var n=zP(e,t)||"";if(n){var r=n.match(/(www\d{0,5}\.)?([^\/:]{1,256})(:\d{1,20})?/i);if(r!=null&&r[ke]>3&&Ne(r[2])&&r[2][ke]>0)return r[2]+(r[3]||"")}return n}function zP(e,t){var n=null;if(e){var r=e.match(/(\w{1,150}):\/\/([^\/:]{1,256})(:\d{1,20})?/i);if(r!=null&&r[ke]>2&&Ne(r[2])&&r[2][ke]>0&&(n=r[2]||"",t&&r[ke]>2)){var i=(r[1]||"")[qu](),o=r[3]||"";(i==="http"&&o===":80"||i==="https"&&o===":443")&&(o=""),n+=o}}return n}var Zz=[NE+kf,"https://breeze.aimon.applicationinsights.io"+kf,"https://dc-int.services.visualstudio.com"+kf];function Jp(e){return qi(Zz,e[qu]())!==-1}var ru={correlationIdPrefix:"cid-v1:",canIncludeCorrelationHeader:function(e,t,n){if(!t||e&&e.disableCorrelationHeaders)return!1;if(e&&e[FF]){for(var r=0;r0},getCorrelationContext:function(e){if(e){var t=ru.getCorrelationContextValue(e,Pt[1]);if(t&&t!==ru.correlationIdPrefix)return t}},getCorrelationContextValue:function(e,t){if(e)for(var n=e[Xu](","),r=0;r0){var s=BE(t);if(i=s.host,!o)if(s[gy]!=null){var l=s.pathname[ke]===0?"/":s[gy];l.charAt(0)!=="/"&&(l="/"+l),a=s[gy],o=jn(e,n?n+" "+l:l)}else o=jn(e,t)}else i=r,o=r;return{target:i,name:o,data:a}}function lp(){var e=Ps();if(e&&e.now&&e.timing){var t=e.now()+e.timing.navigationStart;if(t>0)return t}return xo()}function Dr(e,t){var n=null;return e!==0&&t!==0&&!de(e)&&!de(t)&&(n=t-e),n}function LE(e,t){var n=e||{};return{getName:function(){return n[ro]},setName:function(r){t&&t.setName(r),n[ro]=r},getTraceId:function(){return n.traceID},setTraceId:function(r){t&&t.setTraceId(r),wE(r)&&(n.traceID=r)},getSpanId:function(){return n.parentID},setSpanId:function(r){t&&t.setSpanId(r),EE(r)&&(n.parentID=r)},getTraceFlags:function(){return n.traceFlags},setTraceFlags:function(r){t&&t.setTraceFlags(r),n.traceFlags=r}}}var qz=";",Jz="=";function $z(e){if(!e)return{};var t=e[Xu](qz),n=dW(t,function(i,o){var a=o[Xu](Jz);if(a[ke]===2){var s=a[0][qu](),l=a[1];i[s]=l}return i},{});if(Jl(n)[ke]>0){if(n.endpointsuffix){var r=n.location?n.location+".":"";n[op]=n[op]||"https://"+r+"dc."+n.endpointsuffix}n[op]=n[op]||NE}return n}var eV=function(){function e(t,n,r){var i=this,o=this;o.ver=1,o.sampleRate=100,o.tags={},o[ro]=jn(t,r)||Bo,o.data=n,o.time=Zu(new Date),o.aiDataContract={time:1,iKey:1,name:1,sampleRate:function(){return i.sampleRate===100?4:1},tags:1,data:1}}return e}(),Ja=function(){function e(t,n,r,i){this.aiDataContract={ver:1,name:1,properties:0,measurements:0};var o=this;o.ver=2,o[ro]=jn(t,n)||Bo,o[oa]=Ws(t,r),o[aa]=zs(t,i)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.Event",e.dataType="EventData",e}(),tV="",wu="error",Fr="stack",z1="stackDetails",RF="errorSrc",V1="message",VP="description";function G1(e,t){var n=e;return n&&!Ne(n)&&(JSON&&JSON[H1]?(n=JSON[H1](e),t&&(!n||n==="{}")&&(Le(e[xs])?n=e[xs]():n=""+e)):n=""+e+" - (Missing JSON.stringify)"),n||""}function GP(e,t){var n=e;return e&&(n&&!Ne(n)&&(n=e[V1]||e[VP]||n),n&&!Ne(n)&&(n=G1(n,!0)),e.filename&&(n=n+" @"+(e.filename||"")+":"+(e.lineno||"?")+":"+(e.colno||"?"))),t&&t!=="String"&&t!=="Object"&&t!=="Error"&&(n||"")[Cg](t)===-1&&(n=t+": "+n),n||""}function nV(e){try{if(to(e))return"hasFullStack"in e&&"typeName"in e}catch{}return!1}function rV(e){try{if(to(e))return"ver"in e&&"exceptions"in e&&"properties"in e}catch{}return!1}function PF(e){return e&&e.src&&Ne(e.src)&&e.obj&&Et(e.obj)}function Xs(e){var t=e||"";Ne(t)||(Ne(t[Fr])?t=t[Fr]:t=""+t);var n=t[Xu](` `);return{src:t,obj:n}}function iV(e){for(var t=[],n=e[Xu](` `),r=0;r0){t=[];var r=0,i=0;Se(n,function(A){var p=A[xs]();if(Y1.regex.test(p)){var C=new Y1(p,r++);i+=C[Cu],t.push(C)}});var o=32*1024;if(i>o)for(var a=0,s=t[ke]-1,l=0,c=a,d=s;ao){var v=d-c+1;t.splice(c,v);break}c=a,d=s,a++,s--}}return t}function Eg(e){var t="";if(e&&(t=e.typeName||e[ro]||"",!t))try{var n=/function (.{1,200})\(/,r=n.exec(e.constructor[xs]());t=r&&r[ke]>1?r[1]:""}catch{}return t}function by(e){if(e)try{if(!Ne(e)){var t=Eg(e),n=G1(e,!1);return(!n||n==="{}")&&(e[wu]&&(e=e[wu],t=Eg(e)),n=G1(e,!0)),n[Cg](t)!==0&&t!=="String"?t+":"+n:n}}catch{}return""+(e||"")}var Ai=function(){function e(t,n,r,i,o,a){this.aiDataContract={ver:1,exceptions:1,severityLevel:0,properties:0,measurements:0};var s=this;s.ver=2,rV(n)?(s[Ec]=n[Ec]||[],s[oa]=n[oa],s[aa]=n[aa],n[rf]&&(s[rf]=n[rf]),n.id&&(s.id=n.id),n[Ay]&&(s[Ay]=n[Ay]),de(n[yy])||(s[yy]=n[yy])):(r||(r={}),s[Ec]=[new kF(t,n,r)],s[oa]=Ws(t,r),s[aa]=zs(t,i),o&&(s[rf]=o),a&&(s.id=a))}return e.CreateAutoException=function(t,n,r,i,o,a,s,l){var c,d=Eg(o||a||t);return c={},c[El]=GP(t,d),c.url=n,c.lineNumber=r,c.columnNumber=i,c.error=by(o||a||t),c.evt=by(a||t),c[Ho]=d,c.stackDetails=YP(s||o||a),c.errorSrc=l,c},e.CreateFromInterface=function(t,n,r,i){var o=n[Ec]&&fg(n[Ec],function(s){return kF[UP](t,s)}),a=new e(t,vr(vr({},n),{exceptions:o}),r,i);return a},e.prototype.toInterface=function(){var t,n=this,r=n.exceptions,i=n.properties,o=n.measurements,a=n.severityLevel,s=n.problemGroup,l=n.id,c=n.isManual,d=r instanceof Array&&fg(r,function(u){return u.toInterface()})||void 0;return t={ver:"4.0"},t[Ec]=d,t.severityLevel=a,t.properties=i,t.measurements=o,t.problemGroup=s,t.id=l,t.isManual=c,t},e.CreateSimpleException=function(t,n,r,i,o,a){var s;return{exceptions:[(s={},s[qp]=!0,s.message=t,s.stack=o,s.typeName=n,s)]}},e.envelopeType="Microsoft.ApplicationInsights.{0}.Exception",e.dataType="ExceptionData",e.formatError=by,e}(),kF=function(){function e(t,n,r){this.aiDataContract={id:0,outerId:0,typeName:1,message:1,hasFullStack:0,stack:0,parsedStack:2};var i=this;if(nV(n))i[Ho]=n[Ho],i[El]=n[El],i[Fr]=n[Fr],i[Uo]=n[Uo]||[],i[qp]=n[qp];else{var o=n,a=o&&o.evt;oP(o)||(o=o[wu]||a||o),i[Ho]=jn(t,Eg(o))||Bo,i[El]=xE(t,GP(n||o,i[Ho]))||Bo;var s=n[z1]||YP(n);i[Uo]=aV(s),i[Fr]=HP(t,oV(s)),i.hasFullStack=Et(i.parsedStack)&&i.parsedStack[ke]>0,r&&(r[Ho]=r[Ho]||i[Ho])}}return e.prototype.toInterface=function(){var t,n=this,r=n[Uo]instanceof Array&&fg(n[Uo],function(o){return o.toInterface()}),i=(t={id:n.id,outerId:n.outerId,typeName:n[Ho],message:n[El],hasFullStack:n[qp],stack:n[Fr]},t[Uo]=r||void 0,t);return i},e.CreateFromInterface=function(t,n){var r=n[Uo]instanceof Array&&fg(n[Uo],function(o){return Y1[UP](o)})||n[Uo],i=new e(t,vr(vr({},n),{parsedStack:r}));return i},e}(),Y1=function(){function e(t,n){this.aiDataContract={level:1,method:1,assembly:0,fileName:0,line:0};var r=this;if(r[Cu]=0,typeof t=="string"){var i=t;r[ap]=n,r[Sc]=tV,r[sp]=mr(i),r[Pd]="",r[kd]=0;var o=i.match(e.regex);o&&o[ke]>=5&&(r[Sc]=mr(o[2])||r[Sc],r[Pd]=mr(o[4]),r[kd]=parseInt(o[5])||0)}else r[ap]=t[ap],r[Sc]=t[Sc],r[sp]=t[sp],r[Pd]=t[Pd],r[kd]=t[kd],r[Cu]=0;r.sizeInBytes+=r.method[ke],r.sizeInBytes+=r.fileName[ke],r.sizeInBytes+=r.assembly[ke],r[Cu]+=e.baseSize,r.sizeInBytes+=r.level.toString()[ke],r.sizeInBytes+=r.line.toString()[ke]}return e.CreateFromInterface=function(t){return new e(t,null)},e.prototype.toInterface=function(){var t=this;return{level:t[ap],method:t[Sc],assembly:t[sp],fileName:t[Pd],line:t[kd]}},e.regex=/^([\s]+at)?[\s]{0,50}([^\@\()]+?)[\s]{0,50}(\@|\()([^\(\n]+):([0-9]+):([0-9]+)(\)?)$/,e.baseSize=58,e}(),sV=function(){function e(){this.aiDataContract={name:1,kind:0,value:1,count:0,min:0,max:0,stdDev:0},this.kind=0}return e}(),kl=function(){function e(t,n,r,i,o,a,s,l,c){this.aiDataContract={ver:1,metrics:1,properties:0};var d=this;d.ver=2;var u=new sV;u[kz]=i>0?i:void 0,u.max=isNaN(a)||a===null?void 0:a,u.min=isNaN(o)||o===null?void 0:o,u[ro]=jn(t,n)||Bo,u.value=r,u.stdDev=isNaN(s)||s===null?void 0:s,d.metrics=[u],d[oa]=Ws(t,l),d[aa]=zs(t,c)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.Metric",e.dataType="MetricData",e}(),Ds=function(){function e(t,n,r,i,o,a,s){this.aiDataContract={ver:1,name:0,url:0,duration:0,properties:0,measurements:0,id:0};var l=this;l.ver=2,l.id=KP(t,s),l.url=dm(t,r),l[ro]=jn(t,n)||Bo,isNaN(i)||(l[wg]=qa(i)),l[oa]=Ws(t,o),l[aa]=zs(t,a)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.Pageview",e.dataType="PageviewData",e}(),xl=function(){function e(t,n,r,i,o,a,s,l,c,d,u,f){c===void 0&&(c="Ajax"),this.aiDataContract={id:1,ver:1,name:0,resultCode:0,duration:0,success:0,data:0,target:0,type:0,properties:0,measurements:0,kind:0,value:0,count:0,min:0,max:0,stdDev:0,dependencyKind:0,dependencySource:0,commandName:0,dependencyTypeName:0};var v=this;v.ver=2,v.id=n,v[wg]=qa(o),v.success=a,v.resultCode=s+"",v.type=jn(t,c);var A=Xz(t,r,l,i);v.data=dm(t,i)||A.data,v.target=jn(t,A.target),d&&(v.target="".concat(v.target," | ").concat(d)),v[ro]=jn(t,A[ro]),v[oa]=Ws(t,u),v[aa]=zs(t,f)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.RemoteDependency",e.dataType="RemoteDependencyData",e}(),Eu=function(){function e(t,n,r,i,o){this.aiDataContract={ver:1,message:1,severityLevel:0,properties:0};var a=this;a.ver=2,n=n||Bo,a[El]=xE(t,n),a[oa]=Ws(t,i),a[aa]=zs(t,o),r&&(a[rf]=r)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.Message",e.dataType="MessageData",e}(),Su=function(){function e(t,n,r,i,o,a,s){this.aiDataContract={ver:1,name:0,url:0,duration:0,perfTotal:0,networkConnect:0,sentRequest:0,receivedResponse:0,domProcessing:0,properties:0,measurements:0};var l=this;l.ver=2,l.url=dm(t,r),l[ro]=jn(t,n)||Bo,l[oa]=Ws(t,o),l[aa]=zs(t,a),s&&(l.domProcessing=s.domProcessing,l[wg]=s[wg],l.networkConnect=s.networkConnect,l.perfTotal=s.perfTotal,l[NF]=s[NF],l.sentRequest=s.sentRequest)}return e.envelopeType="Microsoft.ApplicationInsights.{0}.PageviewPerformance",e.dataType="PageviewPerformanceData",e}(),sc=function(){function e(t,n){this.aiDataContract={baseType:1,baseData:1},this.baseType=t,this.baseData=n}return e}();function Vs(e){var t="ai."+e+".";return function(n){return t+n}}var _d=Vs("application"),on=Vs("device"),cp=Vs("location"),Ic=Vs("operation"),Cy=Vs("session"),_a=Vs("user"),qs=Vs("cloud"),Bd=Vs("internal"),QP=function(e){ba(t,e);function t(){return e.call(this)||this}return t}(mW({applicationVersion:_d("ver"),applicationBuild:_d("build"),applicationTypeId:_d("typeId"),applicationId:_d("applicationId"),applicationLayer:_d("layer"),deviceId:on("id"),deviceIp:on("ip"),deviceLanguage:on("language"),deviceLocale:on("locale"),deviceModel:on("model"),deviceFriendlyName:on("friendlyName"),deviceNetwork:on("network"),deviceNetworkName:on("networkName"),deviceOEMName:on("oemName"),deviceOS:on("os"),deviceOSVersion:on("osVersion"),deviceRoleInstance:on("roleInstance"),deviceRoleName:on("roleName"),deviceScreenResolution:on("screenResolution"),deviceType:on("type"),deviceMachineName:on("machineName"),deviceVMName:on("vmName"),deviceBrowser:on("browser"),deviceBrowserVersion:on("browserVersion"),locationIp:cp("ip"),locationCountry:cp("country"),locationProvince:cp("province"),locationCity:cp("city"),operationId:Ic("id"),operationName:Ic("name"),operationParentId:Ic("parentId"),operationRootId:Ic("rootId"),operationSyntheticSource:Ic("syntheticSource"),operationCorrelationVector:Ic("correlationVector"),sessionId:Cy("id"),sessionIsFirst:Cy("isFirst"),sessionIsNew:Cy("isNew"),userAccountAcquisitionDate:_a("accountAcquisitionDate"),userAccountId:_a("accountId"),userAgent:_a("userAgent"),userId:_a("id"),userStoreRegion:_a("storeRegion"),userAuthUserId:_a("authUserId"),userAnonymousUserAcquisitionDate:_a("anonUserAcquisitionDate"),userAuthenticatedUserAcquisitionDate:_a("authUserAcquisitionDate"),cloudName:qs("name"),cloudRole:qs("role"),cloudRoleVer:qs("roleVer"),cloudRoleInstance:qs("roleInstance"),cloudEnvironment:qs("environment"),cloudLocation:qs("location"),cloudDeploymentUnit:qs("deploymentUnit"),internalNodeName:Bd("nodeName"),internalSdkVersion:Bd("sdkVersion"),internalAgentVersion:Bd("agentVersion"),internalSnippet:Bd("snippet"),internalSdkSrc:Bd("sdkSrc")}));function ja(e,t,n,r,i,o){var a;n=jn(r,n)||Bo,(de(e)||de(t)||de(n))&&cr("Input doesn't contain all required fields");var s="";e[hy]&&(s=e[hy],delete e[hy]);var l=(a={},a[ro]=n,a.time=Zu(new Date),a.iKey=s,a.ext=o||{},a.tags=[],a.data={},a.baseType=t,a.baseData=e,a);return de(i)||Lt(i,function(c,d){l.data[c]=d}),l}var Yr={UserExt:"user",DeviceExt:"device",TraceExt:"trace",WebExt:"web",AppExt:"app",OSExt:"os",SessionExt:"ses",SDKExt:"sdk"},Ft=new QP,U0="AppInsightsPropertiesPlugin",ZP="AppInsightsChannelPlugin",lV="ApplicationInsightsAnalytics",Sg="toString",Q1="disableExceptionTracking",Ig="autoTrackPageVisitTime",Z1="overridePageViewDuration",X1="enableUnhandledPromiseRejectionTracking",up="samplingPercentage",Dg="isStorageUseDisabled",Fg="isBrowserLinkTrackingEnabled",q1="enableAutoRouteTracking",J1="namePrefix",wy="disableFlushOnBeforeUnload",Pn="core",Ba="dataType",Js="envelopeType",Vr="diagLog",$s="track",$p="trackPageView",$1="trackPreviousPageVisit",pl="sendPageViewInternal",eC="sendPageViewPerformanceInternal",OE="populatePageViewPerformanceEvent",Bc="href",xF="sendExceptionInternal",Ey="exception",Ld="error",Sy="_onerror",Iy="errorSrc",Dy="lineNumber",Fy="columnNumber",_F="message",Ny="CreateAutoException",dp="addTelemetryInitializer",Ya="duration",Mv="length",XP="isPerformanceTimingSupported",qP="getPerformanceTiming",Ng="navigationStart",tC="shouldCollectDuration",JP="isPerformanceTimingDataReady",cV="getEntriesByType",of="responseStart",uV="requestStart",eh="loadEventEnd",nC="responseEnd",th="connectEnd",$P="pageVisitStartTime",dV=function(){function e(t,n,r,i){Rt(e,this,function(o){var a=null,s=[],l=!1,c;r&&(c=r.logger);function d(f){r&&r.flush(f)}function u(f){s.push(f),a||(a=setInterval(function(){var v=s.slice(0),A=!1;s=[],Se(v,function(p){p()?A=!0:s.push(p)}),s[Mv]===0&&(clearInterval(a),a=null),A&&d(!0)},100))}o[$p]=function(f,v){var A=f.name;if(de(A)||typeof A!="string"){var p=ei();A=f.name=p&&p.title||""}var C=f.uri;if(de(C)||typeof C!="string"){var y=is();C=f.uri=y&&y[Bc]||""}if(!i[XP]()){t[pl](f,v),d(!0),me(c,2,25,"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.");return}var h=!1,b,w=i[qP]()[Ng];w>0&&(b=Dr(w,+new Date),i[tC](b)||(b=void 0));var S;!de(v)&&!de(v[Ya])&&(S=v[Ya]),(n||!isNaN(S))&&(isNaN(S)&&(v||(v={}),v[Ya]=b),t[pl](f,v),d(!0),h=!0);var E=6e4;v||(v={}),u(function(){var I=!1;try{if(i[JP]()){I=!0;var F={name:A,uri:C};i[OE](F),!F.isValid&&!h?(v[Ya]=b,t[pl](f,v)):(h||(v[Ya]=F.durationMs,t[pl](f,v)),l||(t[eC](F,v),l=!0))}else w>0&&Dr(w,+new Date)>E&&(I=!0,h||(v[Ya]=E,t[pl](f,v)))}catch(k){me(c,1,38,"trackPageView failed on page load calculation: "+et(k),{exception:Ee(k)})}return I})},o.teardown=function(f,v){if(a){clearInterval(a),a=null;var A=s.slice(0);s=[],Se(A,function(p){p()})}}})}return e.__ieDyn=1,e}(),fV=36e5,BF=["googlebot","adsbot-google","apis-google","mediapartners-google"];function ek(){var e=Ps();return e&&!!e.timing}function vV(){var e=Ps();return e&&e.getEntriesByType&&e.getEntriesByType("navigation")[Mv]>0}function mV(){var e=Ps(),t=e?e.timing:0;return t&&t.domainLookupStart>0&&t[Ng]>0&&t[of]>0&&t[uV]>0&&t[eh]>0&&t[nC]>0&&t[th]>0&&t.domLoading>0}function LF(){return ek()?Ps().timing:null}function pV(){return vV()?Ps()[cV]("navigation")[0]:null}function hV(){for(var e=[],t=0;t=fV)return!1;return!0}var gV=function(){function e(t){var n=this,r=sm(t);Rt(e,this,function(i){i[OE]=function(o){o.isValid=!1;var a=pV(),s=LF(),l=0,c=0,d=0,u=0,f=0;(a||s)&&(a?(l=a[Ya],c=a.startTime===0?a[th]:Dr(a.startTime,a[th]),d=Dr(a.requestStart,a[of]),u=Dr(a[of],a[nC]),f=Dr(a.responseEnd,a[eh])):(l=Dr(s[Ng],s[eh]),c=Dr(s[Ng],s[th]),d=Dr(s.requestStart,s[of]),u=Dr(s[of],s[nC]),f=Dr(s.responseEnd,s[eh])),l===0?me(r,2,10,"error calculating page view performance.",{total:l,network:c,request:d,response:u,dom:f}):n[tC](l,c,d,u,f)?l=100)&&(e[up]=100),e[Dg]=uo(e[Dg]),e[Fg]=uo(e[Fg]),e[q1]=uo(e[q1]),e[J1]=e[J1]||"",e.enableDebug=uo(e.enableDebug),e[wy]=uo(e[wy]),e.disableFlushOnUnload=uo(e.disableFlushOnUnload,e[wy]),e}function wV(e){Ln(e[Dg])||(e[Dg]?Uz():jz())}var EV=function(e){ba(t,e);function t(){var n=e.call(this)||this;n.identifier=lV,n.priority=180,n.autoRoutePVDelay=500;var r,i,o,a,s,l,c,d,u,f,v,A,p,C,y,h,b;return Rt(t,n,function(w,S){var E=S._addHook;O(),w.getCookieMgr=function(){return bE(w[Pn])},w.processTelemetry=function(R,T){w.processNext(R,T)},w.trackEvent=function(R,T){try{var j=ja(R,Ja[Ba],Ja[Js],w[Vr](),T);w[Pn][$s](j)}catch(W){Q(2,39,"trackTrace failed, trace will not be collected: "+et(W),{exception:Ee(W)})}},w.startTrackEvent=function(R){try{r.start(R)}catch(T){Q(1,29,"startTrackEvent failed, event will not be collected: "+et(T),{exception:Ee(T)})}},w.stopTrackEvent=function(R,T,j){try{r.stop(R,void 0,T,j)}catch(W){Q(1,30,"stopTrackEvent failed, event will not be collected: "+et(W),{exception:Ee(W)})}},w.trackTrace=function(R,T){try{var j=ja(R,Eu[Ba],Eu[Js],w[Vr](),T);w[Pn][$s](j)}catch(W){Q(2,39,"trackTrace failed, trace will not be collected: "+et(W),{exception:Ee(W)})}},w.trackMetric=function(R,T){try{var j=ja(R,kl[Ba],kl[Js],w[Vr](),T);w[Pn][$s](j)}catch(W){Q(1,36,"trackMetric failed, metric will not be collected: "+et(W),{exception:Ee(W)})}},w[$p]=function(R,T){try{var j=R||{};o[$p](j,vr(vr(vr({},j.properties),j.measurements),T)),w.config[Ig]&&s[$1](j.name,j.uri)}catch(W){Q(1,37,"trackPageView failed, page view will not be collected: "+et(W),{exception:Ee(W)})}},w[pl]=function(R,T,j){var W=ei();W&&(R.refUri=R.refUri===void 0?W.referrer:R.refUri);var U=ja(R,Ds[Ba],Ds[Js],w[Vr](),T,j);w[Pn][$s](U)},w[eC]=function(R,T,j){var W=ja(R,Su[Ba],Su[Js],w[Vr](),T,j);w[Pn][$s](W)},w.trackPageViewPerformance=function(R,T){var j=R||{};try{a[OE](j),w[eC](j,T)}catch(W){Q(1,37,"trackPageViewPerformance failed, page view will not be collected: "+et(W),{exception:Ee(W)})}},w.startTrackPage=function(R){try{if(typeof R!="string"){var T=ei();R=T&&T.title||""}i.start(R)}catch(j){Q(1,31,"startTrackPage failed, page view may not be collected: "+et(j),{exception:Ee(j)})}},w.stopTrackPage=function(R,T,j,W){try{if(typeof R!="string"){var U=ei();R=U&&U.title||""}if(typeof T!="string"){var Y=is();T=Y&&Y[Bc]||""}i.stop(R,T,j,W),w.config[Ig]&&s[$1](R,T)}catch(x){Q(1,32,"stopTrackPage failed, page view will not be collected: "+et(x),{exception:Ee(x)})}},w[xF]=function(R,T,j){var W=R[Ey]||R[Ld]||new Error(Bo),U=new Ai(w[Vr](),W,R.properties||T,R.measurements,R.severityLevel,R.id).toInterface(),Y=ja(U,Ai[Ba],Ai[Js],w[Vr](),T,j);w[Pn][$s](Y)},w.trackException=function(R,T){R&&!R[Ey]&&R[Ld]&&(R[Ey]=R[Ld]);try{w[xF](R,T)}catch(j){Q(1,35,"trackException failed, exception will not be collected: "+et(j),{exception:Ee(j)})}},w[Sy]=function(R){var T=R&&R[Ld],j=R&&R.evt;try{if(!j){var W=ws();W&&(j=W[bV])}var U=R&&R.url||(ei()||{}).URL,Y=R[Iy]||"window.onerror@"+U+":"+(R[Dy]||0)+":"+(R[Fy]||0),x={errorSrc:Y,url:U,lineNumber:R[Dy]||0,columnNumber:R[Fy]||0,message:R[_F]};Oz(R.message,R.url,R.lineNumber,R.columnNumber,R[Ld])?P(Ai[Ny]("Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.",U,R[Dy]||0,R[Fy]||0,T,j,null,Y),x):(R[Iy]||(R[Iy]=Y),w.trackException({exception:R,severityLevel:3},x))}catch(V){var L=T?T.name+", "+T[_F]:"null";Q(1,11,"_onError threw exception while logging error, error will not be collected: "+et(V),{exception:Ee(V),errorString:L})}},w[dp]=function(R){if(w[Pn])return w[Pn][dp](R);l||(l=[]),l.push(R)},w.initialize=function(R,T,j,W){if(!w.isInitialized()){de(T)&&cr("Error initializing"),S.initialize(R,T,j,W);try{b=ac(wa(w.identifier),T.evtNamespace&&T.evtNamespace()),l&&(Se(l,function(Y){T[dp](Y)}),l=null);var U=I(R);wV(U),a=new gV(w[Pn]),o=new dV(n,U[Z1],w[Pn],a),s=new AV(w[Vr](),function(Y,x,L){return k(Y,x,L)}),F(U,R),r=new OF(w[Vr](),"trackEvent"),r.action=function(Y,x,L,V,ee){V||(V={}),ee||(ee={}),V.duration=L[Sg](),w.trackEvent({name:Y,properties:V,measurements:ee})},i=new OF(w[Vr](),"trackPageView"),i.action=function(Y,x,L,V,ee){de(V)&&(V={}),V.duration=L[Sg]();var J={name:Y,uri:x,properties:V,measurements:ee};w[pl](J,V)},am()&&(H(U),G(U))}catch(Y){throw w.setInitialized(!1),Y}}},w._doTeardown=function(R,T){o&&o.teardown(R,T),Pf(window,null,null,b),O()};function I(R){var T=_o(null,R,w[Pn]),j=w.identifier,W=HF(R),U=w.config=T.getExtCfg(j);return W!==void 0&&Lt(W,function(Y,x){U[Y]=T.getConfig(j,Y,x),U[Y]===void 0&&(U=x)}),U}function F(R,T){c=R[Fg]||T[Fg],D()}function k(R,T,j){var W={PageName:R,PageUrl:T};w.trackMetric({name:"PageVisitTime",average:j,max:j,min:j,sampleCount:1},W)}function D(){if(!d&&c){var R=["/browserLinkSignalR/","/__browserLink/"],T=function(j){if(c&&j.baseType===xl[Ba]){var W=j.baseData;if(W){for(var U=0;U=0)return!1}}return!0};w[dp](T),d=!0}}function P(R,T){var j=ja(R,Ai[Ba],Ai[Js],w[Vr](),T);w[Pn][$s](j)}function H(R){var T=ws(),j=is(!0);v=R[Q1],!v&&!A&&!R.autoExceptionInstrumented&&(E(ip(T,"onerror",{ns:b,rsp:function(W,U,Y,x,L,V){!v&&W.rslt!==!0&&w[Sy](Ai[Ny](U,Y,x,L,V,W.evt))}},!1)),A=!0),K(R,T,j)}function G(R){var T=ws(),j=is(!0);if(u=R[q1]===!0,T&&u&&hP()){var W=FW();Le(W.pushState)&&Le(W.replaceState)&&typeof Event!==ns&&M(R,T,W,j)}}function _(){var R=null;if(w[Pn]&&w[Pn].getTraceCtx&&(R=w[Pn].getTraceCtx(!1)),!R){var T=w[Pn].getPlugin(U0);if(T){var j=T.plugin.context;j&&(R=LE(j.telemetryTrace))}}return R}function M(R,T,j,W){var U=R[J1]||"";function Y(){u&&Od(T,Rd(U+"locationchange"))}function x(){if(h&&(y=h),h=W&&W[Bc]||"",u){var L=_();if(L){L.setTraceId(as());var V="_unknown_";W&&W.pathname&&(V=W.pathname+(W.hash||"")),L.setName(jn(w[Vr](),V))}setTimeout(function(ee){w[$p]({refUri:ee,properties:{duration:0}})}.bind(this,y),w.autoRoutePVDelay)}}f||(E(ip(j,"pushState",{ns:b,rsp:function(){u&&(Od(T,Rd(U+"pushState")),Od(T,Rd(U+"locationchange")))}},!0)),E(ip(j,"replaceState",{ns:b,rsp:function(){u&&(Od(T,Rd(U+"replaceState")),Od(T,Rd(U+"locationchange")))}},!0)),Es(T,U+"popstate",Y,b),Es(T,U+"locationchange",x,b),f=!0)}function K(R,T,j){p=R[X1]===!0,p&&!C&&(E(ip(T,"onunhandledrejection",{ns:b,rsp:function(W,U){p&&W.rslt!==!0&&w[Sy](Ai[Ny](CV(U),j?j[Bc]:"",0,0,U,W.evt))}},!1)),C=!0,R.autoUnhandledPromiseInstrumented=C)}function Q(R,T,j,W,U){w[Vr]().throwInternal(R,T,j,W,U)}function O(){r=null,i=null,o=null,a=null,s=null,l=null,c=!1,d=!1,u=!1,f=!1,v=!1,A=!1,p=!1,C=!1;var R=is(!0);y=R&&R[Bc]||"",h=null,b=null}rs(w,"_pageViewManager",function(){return o}),rs(w,"_pageViewPerformanceManager",function(){return a}),rs(w,"_pageVisitTimeManager",function(){return s}),rs(w,"_evtNamespace",function(){return"."+b})}),n}return t.Version="2.8.9",t.getDefaultConfig=HF,t}(cm),ul="duration",On="tags",My="deviceType",Xr="data",pa="name",Tv="traceID",Oe="length",Rv="stringify",lc="measurements",Po="dataType",cc="envelopeType",dl="toString",fp="onLine",Pv="enqueue",Iu="count",Du="push",rC="emitLineDelimitedJson",Ju="clear",af="batchPayloads",iu="markAsSent",xf="clearSent",Ud="BUFFER_KEY",el="SENT_BUFFER_KEY",jd="MAX_BUFFER_SIZE",fl="namePrefix",iC="maxBatchSizeInBytes",Dc="triggerSend",rr="diagLog",tk="onunloadDisableBeacon",oC="isBeaconApiDisabled",Hd="_sender",It="_senderConfig",Fc="_buffer",nk="enableSessionStorageBuffer",rk="samplingPercentage",nh="instrumentationKey",tl="endpointUrl",ik="customHeaders",sf="disableXhr",ok="onunloadDisableFetch",aC="disableTelemetry",Ty="baseType",Mg="sampleRate",ak="convertUndefined",SV="_xhrReadyStateChange",Ui="_onError",Ry="_onPartialSuccess",vp="_onSuccess",mp="itemsAccepted",IV="itemsReceived",lf="isRetryDisabled",Py="setRequestHeader",sk="maxBatchInterval",KF="eventsSendRequest",WF="disableInstrumentationKeyValidation",lk="getSamplingScore",DV="getHashCodeScore",ky="baseType",xt="baseData",Cn="properties",zF="true";function nn(e,t,n){return rt(e,t,n,M1)}function FV(e,t,n){var r=n[On]=n[On]||{},i=t.ext=t.ext||{},o=t[On]=t[On]||[],a=i.user;a&&(nn(r,Ft.userAuthUserId,a.authId),nn(r,Ft.userId,a.id||a.localId));var s=i.app;s&&nn(r,Ft.sessionId,s.sesId);var l=i.device;l&&(nn(r,Ft.deviceId,l.id||l.localId),nn(r,Ft[My],l.deviceClass),nn(r,Ft.deviceIp,l.ip),nn(r,Ft.deviceModel,l.model),nn(r,Ft[My],l[My]));var c=t.ext.web;if(c){nn(r,Ft.deviceLanguage,c.browserLang),nn(r,Ft.deviceBrowserVersion,c.browserVer),nn(r,Ft.deviceBrowser,c.browser);var d=n[Xr]=n[Xr]||{},u=d[xt]=d[xt]||{},f=u[Cn]=u[Cn]||{};nn(f,"domain",c.domain),nn(f,"isManual",c.isManual?zF:null),nn(f,"screenRes",c.screenRes),nn(f,"userConsent",c.userConsent?zF:null)}var v=i.os;v&&nn(r,Ft.deviceOS,v[pa]);var A=i.trace;A&&(nn(r,Ft.operationParentId,A.parentID),nn(r,Ft.operationName,jn(e,A[pa])),nn(r,Ft.operationId,A[Tv]));for(var p={},C=o[Oe]-1;C>=0;C--){var y=o[C];Lt(y,function(b,w){p[b]=w}),o.splice(C,1)}Lt(o,function(b,w){p[b]=w});var h=vr(vr({},r),p);h[Ft.internalSdkVersion]||(h[Ft.internalSdkVersion]="javascript:".concat(NV.Version)),n[On]=lP(h)}function _s(e,t,n){de(e)||Lt(e,function(r,i){aP(i)?n[r]=i:Ne(i)?t[r]=i:ud()&&(t[r]=no()[Rv](i))})}function uc(e,t){de(e)||Lt(e,function(n,r){e[n]=r||t})}function dc(e,t,n,r){var i=new eV(e,r,t);nn(i,"sampleRate",n[OP]),(n[xt]||{}).startTime&&(i.time=Zu(n[xt].startTime)),i.iKey=n.iKey;var o=n.iKey.replace(/-/g,"");return i[pa]=i[pa].replace("{0}",o),FV(e,n,i),n[On]=n[On]||[],lP(i)}function fc(e,t){de(t[xt])&&me(e,1,46,"telemetryItem.baseData cannot be null.")}var NV={Version:"2.8.9"};function MV(e,t,n){fc(e,t);var r=t[xt][lc]||{},i=t[xt][Cn]||{};_s(t[Xr],i,r),de(n)||uc(i,n);var o=t[xt];if(de(o))return Cl(e,"Invalid input for dependency data"),null;var a=o[Cn]&&o[Cn][DF]?o[Cn][DF]:"GET",s=new xl(e,o.id,o.target,o[pa],o[ul],o.success,o.responseCode,a,o.type,o.correlationContext,i,r),l=new sc(xl[Po],s);return dc(e,xl[cc],t,l)}function ck(e,t,n){fc(e,t);var r={},i={};t[ky]!==Ja[Po]&&(r.baseTypeSource=t[ky]),t[ky]===Ja[Po]?(r=t[xt][Cn]||{},i=t[xt][lc]||{}):t[xt]&&_s(t[xt],r,i),_s(t[Xr],r,i),de(n)||uc(r,n);var o=t[xt][pa],a=new Ja(e,o,r,i),s=new sc(Ja[Po],a);return dc(e,Ja[cc],t,s)}function TV(e,t,n){fc(e,t);var r=t[xt][lc]||{},i=t[xt][Cn]||{};_s(t[Xr],i,r),de(n)||uc(i,n);var o=t[xt],a=Ai.CreateFromInterface(e,o,i,r),s=new sc(Ai[Po],a);return dc(e,Ai[cc],t,s)}function RV(e,t,n){fc(e,t);var r=t[xt],i=r[Cn]||{},o=r[lc]||{};_s(t[Xr],i,o),de(n)||uc(i,n);var a=new kl(e,r[pa],r.average,r.sampleCount,r.min,r.max,r.stdDev,i,o),s=new sc(kl[Po],a);return dc(e,kl[cc],t,s)}function PV(e,t,n){fc(e,t);var r,i=t[xt];!de(i)&&!de(i[Cn])&&!de(i[Cn][ul])?(r=i[Cn][ul],delete i[Cn][ul]):!de(t[Xr])&&!de(t[Xr][ul])&&(r=t[Xr][ul],delete t[Xr][ul]);var o=t[xt],a;((t.ext||{}).trace||{})[Tv]&&(a=t.ext.trace[Tv]);var s=o.id||a,l=o[pa],c=o.uri,d=o[Cn]||{},u=o[lc]||{};if(de(o.refUri)||(d.refUri=o.refUri),de(o.pageType)||(d.pageType=o.pageType),de(o.isLoggedIn)||(d.isLoggedIn=o.isLoggedIn[dl]()),!de(o[Cn])){var f=o[Cn];Lt(f,function(p,C){d[p]=C})}_s(t[Xr],d,u),de(n)||uc(d,n);var v=new Ds(e,l,c,r,d,u,s),A=new sc(Ds[Po],v);return dc(e,Ds[cc],t,A)}function kV(e,t,n){fc(e,t);var r=t[xt],i=r[pa],o=r.uri||r.url,a=r[Cn]||{},s=r[lc]||{};_s(t[Xr],a,s),de(n)||uc(a,n);var l=new Su(e,i,o,void 0,a,s,r),c=new sc(Su[Po],l);return dc(e,Su[cc],t,c)}function xV(e,t,n){fc(e,t);var r=t[xt].message,i=t[xt].severityLevel,o=t[xt][Cn]||{},a=t[xt][lc]||{};_s(t[Xr],o,a),de(n)||uc(o,n);var s=new Eu(e,r,i,o,a),l=new sc(Eu[Po],s);return dc(e,Eu[cc],t,l)}function VF(e,t){Pf(e,null,null,t)}function _V(e){var t=ei(),n=Ca(),r=!1,i=!0,o=ac(wa("OfflineListener"),e);try{if(s(ws())&&(r=!0),t){var a=t.body||t;a.ononline&&s(a)&&(r=!0)}r&&n&&!de(n[fp])&&(i=n[fp])}catch{r=!1}function s(f){var v=!1;return f&&(v=Es(f,"online",l,o),v&&Es(f,"offline",c,o)),v}function l(){i=!0}function c(){i=!1}function d(){var f=!0;return r?f=i:n&&!de(n[fp])&&(f=n[fp]),f}function u(){var f=ws();if(f&&r){if(VF(f,o),t){var v=t.body||t;Ln(v.ononline)||VF(v,o)}r=!1}}return{isOnline:d,isListening:function(){return r},unload:u}}var uk=function(){function e(t,n){var r=[],i=!1;this._get=function(){return r},this._set=function(o){return r=o,r},Rt(e,this,function(o){o[Pv]=function(a){if(o[Iu]()>=n.eventsLimitInMem()){i||(me(t,2,105,"Maximum in-memory buffer size reached: "+o[Iu](),!0),i=!0);return}r[Du](a)},o[Iu]=function(){return r[Oe]},o.size=function(){for(var a=r[Oe],s=0;s0){var s=n[rC]()?a.join(` `):"["+a.join(",")+"]";return s}return null}})}return e.__ieDyn=1,e}(),BV=function(e){ba(t,e);function t(n,r){var i=e.call(this,n,r)||this;return Rt(t,i,function(o,a){o[iu]=function(s){a[Ju]()},o[xf]=function(s){}}),i}return t.__ieDyn=1,t}(uk),LV=function(e){ba(t,e);function t(n,r){var i=e.call(this,n,r)||this,o=!1;return Rt(t,i,function(a,s){var l=f(t[Ud]),c=f(t[el]),d=a._set(l.concat(c));d[Oe]>t[jd]&&(d[Oe]=t[jd]),v(t[el],[]),v(t[Ud],d),a[Pv]=function(A){if(a[Iu]()>=t[jd]){o||(me(n,2,67,"Maximum buffer size reached: "+a[Iu](),!0),o=!0);return}s[Pv](A),v(t[Ud],a._get())},a[Ju]=function(){s[Ju](),v(t[Ud],a._get()),v(t[el],[]),o=!1},a[iu]=function(A){v(t[Ud],a._set(u(A,a._get())));var p=f(t[el]);p instanceof Array&&A instanceof Array&&(p=p.concat(A),p[Oe]>t[jd]&&(me(n,1,67,"Sent buffer reached its maximum size: "+p[Oe],!0),p[Oe]=t[jd]),v(t[el],p))},a[xf]=function(A){var p=f(t[el]);p=u(A,p),v(t[el],p)};function u(A,p){var C=[];return Se(p,function(y){!Le(y)&&qi(A,y)===-1&&C[Du](y)}),C}function f(A){var p=A;try{p=r[fl]&&r[fl]()?r[fl]()+"_"+p:p;var C=K1(n,p);if(C){var y=no().parse(C);if(Ne(y)&&(y=no().parse(y)),y&&Et(y))return y}}catch(h){me(n,1,42," storage key: "+p+", "+et(h),{exception:Ee(h)})}return[]}function v(A,p){var C=A;try{C=r[fl]&&r[fl]()?r[fl]()+"_"+C:C;var y=JSON[Rv](p);W1(n,C,y)}catch(h){W1(n,C,JSON[Rv]([])),me(n,2,41," storage key: "+C+", "+et(h)+". Buffer cleared",{exception:Ee(h)})}}}),i}return t.BUFFER_KEY="AI_buffer",t.SENT_BUFFER_KEY="AI_sentBuffer",t.MAX_BUFFER_SIZE=2e3,t}(uk),OV=function(){function e(t){Rt(e,this,function(n){n.serialize=function(a){var s=r(a,"root");try{return no()[Rv](s)}catch(l){me(t,1,48,l&&Le(l[dl])?l[dl]():"Error serializing object",null,!0)}};function r(a,s){var l="__aiCircularRefCheck",c={};if(!a)return me(t,1,48,"cannot serialize object because it is null or undefined",{name:s},!0),c;if(a[l])return me(t,2,50,"Circular reference detected while serializing object",{name:s},!0),c;if(!a.aiDataContract){if(s==="measurements")c=o(a,"number",s);else if(s==="properties")c=o(a,"string",s);else if(s==="tags")c=o(a,"string",s);else if(Et(a))c=i(a,s);else{me(t,2,49,"Attempting to serialize an object which does not implement ISerializable",{name:s},!0);try{no()[Rv](a),c=a}catch(d){me(t,1,48,d&&Le(d[dl])?d[dl]():"Error serializing object",null,!0)}}return c}return a[l]=!0,Lt(a.aiDataContract,function(d,u){var f=Le(u)?u()&1:u&1,v=Le(u)?u()&4:u&4,A=u&2,p=a[d]!==void 0,C=to(a[d])&&a[d]!==null;if(f&&!p&&!A)me(t,1,24,"Missing required field specification. The field is required but not present on source",{field:d,name:s});else if(!v){var y=void 0;C?A?y=i(a[d],d):y=r(a[d],d):y=a[d],y!==void 0&&(c[d]=y)}}),delete a[l],c}function i(a,s){var l;if(a)if(!Et(a))me(t,1,54,`This field was specified as an array in the contract but the item is not an array.\r `,{name:s},!0);else{l=[];for(var c=0;c100||t<0)&&(r.throwInternal(2,58,"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.",{samplingRate:t},!0),t=100),this[Mg]=t,this.samplingScoreGenerator=new HV}return e.prototype.isSampledIn=function(t){var n=this[Mg],r=!1;return n==null||n>=100||t.baseType===kl[Po]?!0:(r=this.samplingScoreGenerator[lk](t)C._senderConfig[iC]()&&C[Dc](!0,null,10),M())},C.flush=function(x,L,V){if(x===void 0&&(x=!0),!a){K();try{C[Dc](x,null,V||1)}catch(ee){me(C[rr](),1,22,"flush failed, telemetry will not be collected: "+et(ee),{exception:Ee(ee)})}}},C.onunloadFlush=function(){if(!a)if((C._senderConfig[tk]()===!1||C[It][oC]()===!1)&&$m())try{C[Dc](!0,S,2)}catch(x){me(C[rr](),1,20,"failed to flush with beacon sender on page unload, telemetry will not be collected: "+et(x),{exception:Ee(x)})}else C.flush()},C.addHeader=function(x,L){d[x]=L},C.initialize=function(x,L,V,ee){C.isInitialized()&&me(C[rr](),1,28,"Sender is already initialized"),y.initialize(x,L,V,ee);var J=C._getTelCtx(),$=C.identifier;l=new OV(L.logger),r=0,i=null,o=0,C[Hd]=null,c=0;var ne=C[rr]();p=ac(wa("Sender"),L.evtNamespace&&L.evtNamespace()),A=_V(p);var le=GF();Lt(le,function(z,X){C[It][z]=function(){var q=J.getConfig($,z,X());return!q&&z==="endpointUrl"&&(q=X()),q}}),C._buffer=C[It][nk]()&&Nv()?new LV(ne,C[It]):new BV(ne,C[It]),C._sample=new KV(C[It][rk](),ne),U(x)||me(ne,1,100,"Invalid Instrumentation key "+x[nh]),!Jp(C._senderConfig.endpointUrl())&&C._senderConfig.customHeaders()&&C._senderConfig.customHeaders()[Oe]>0&&Se(C[It][ik](),function(z){n.addHeader(z.header,z.value)});var Me=C[It],Te=null;!Me[sf]()&&QD()?Te=R:!Me[sf]()&&vg()&&(Te=F),!Te&&YD()&&(Te=D),f=Te||F,!Me[oC]()&&$m()&&(Te=I),C[Hd]=Te||F,!Me[ok]()&&YD(!0)?v=k:$m()?v=I:!Me[sf]()&&QD()?v=R:!Me[sf]()&&vg()?v=F:v=f},C.processTelemetry=function(x,L){L=C._getTelCtx(L);var V=L[rr]();try{if(C[It][aC]())return;if(!x){me(V,1,7,"Cannot send empty telemetry");return}if(x.baseData&&!x[Ty]){me(V,1,70,"Cannot send telemetry without baseData and baseType");return}if(x[Ty]||(x[Ty]="EventData"),!C[Hd]){me(V,1,28,"Sender was not initialized");return}if(h(x))x[OP]=C._sample[Mg];else{me(V,2,33,"Telemetry item was sampled out and not sent",{SampleRate:C._sample[Mg]});return}var ee=C[It][ak]()||void 0,J=x.iKey||C[It][nh](),$=t.constructEnvelope(x,J,V,ee);if(!$){me(V,1,47,"Unable to create an AppInsights envelope");return}var ne=!1;if(x[On]&&x[On][py]&&(Se(x[On][py],function(z){try{z&&z($)===!1&&(ne=!0,Cl(V,"Telemetry processor check returns false"))}catch(X){me(V,1,64,"One of telemetry initializers failed, telemetry item will not be sent: "+et(X),{exception:Ee(X)},!0)}}),delete x[On][py]),ne)return;var le=l.serialize($),Me=C[Fc],Te=Me.size();Te+le[Oe]>C[It][iC]()&&C[Dc](!0,null,10),Me[Pv](le),M()}catch(z){me(V,2,12,"Failed adding telemetry to the sender's buffer, some telemetry will be lost: "+et(z),{exception:Ee(z)})}C.processNext(x,L)},C[SV]=function(x,L,V){x.readyState===4&&b(x.status,L,x.responseURL,V,O(x),pp(x)||x.response)},C[Dc]=function(x,L,V){if(x===void 0&&(x=!0),!a)try{var ee=C[Fc];if(C[It][aC]())ee[Ju]();else{if(ee[Iu]()>0){var J=ee.getItems();W(V||0,x),L?L.call(n,J,x):C[Hd](J,x)}o=+new Date}K()}catch(ne){var $=gP();(!$||$>9)&&me(C[rr](),1,40,"Telemetry transmission failed, some telemetry will be lost: "+et(ne),{exception:Ee(ne)})}},C._doTeardown=function(x,L){C.onunloadFlush(),A.unload(),Y()},C[Ui]=function(x,L,V){me(C[rr](),2,26,"Failed to send telemetry.",{message:L}),C._buffer[xf](x)},C[Ry]=function(x,L){for(var V=[],ee=[],J=L.errors.reverse(),$=0,ne=J;$0&&C[vp](x,L[mp]),V[Oe]>0&&C[Ui](V,O(null,["partial success",L[mp],"of",L.itemsReceived].join(" "))),ee[Oe]>0&&(G(ee),me(C[rr](),2,40,"Partial success. Delivered: "+x[Oe]+", Failed: "+V[Oe]+". Will retry to send "+ee[Oe]+" our of "+L[IV]+" items"))},C[vp]=function(x,L){C._buffer[xf](x)},C._xdrOnLoad=function(x,L){var V=pp(x);if(x&&(V+""=="200"||V===""))r=0,C[vp](L,0);else{var ee=H(V);ee&&ee.itemsReceived&&ee.itemsReceived>ee[mp]&&!C[It][lf]()?C[Ry](L,ee):C[Ui](L,T(x))}};function h(x){return C._sample.isSampledIn(x)}function b(x,L,V,ee,J,$){var ne=null;if(C._appId||(ne=H($),ne&&ne.appId&&(C._appId=ne.appId)),(x<200||x>=300)&&x!==0){if((x===301||x===307||x===308)&&!w(V)){C[Ui](L,J);return}!C[It][lf]()&&Q(x)?(G(L),me(C[rr](),2,40,". Response code "+x+". Will retry to send "+L[Oe]+" items.")):C[Ui](L,J)}else if(A&&!A.isOnline()){if(!C[It][lf]()){var le=10;G(L,le),me(C[rr](),2,40,". Offline - Response Code: ".concat(x,". Offline status: ").concat(!A.isOnline(),". Will retry to send ").concat(L.length," items."))}}else w(V),x===206?(ne||(ne=H($)),ne&&!C[It][lf]()?C[Ry](L,ne):C[Ui](L,J)):(r=0,C[vp](L,ee))}function w(x){return c>=10?!1:!de(x)&&x!==""&&x!==C[It][tl]()?(C[It][tl]=function(){return x},++c,!0):!1}function S(x,L){v?v(x,!1):I(x)}function E(x){var L=Ca(),V=C[Fc],ee=C[It][tl](),J=C._buffer[af](x),$=new Blob([J],{type:"text/plain;charset=UTF-8"}),ne=L.sendBeacon(ee,$);return ne&&(V[iu](x),C._onSuccess(x,x[Oe])),ne}function I(x,L){if(Et(x)&&x[Oe]>0&&!E(x)){for(var V=[],ee=0;ee0&&(f&&f(V,!0),me(C[rr](),2,40,". Failed to send telemetry with Beacon API, retried with normal sender."))}}function F(x,L){var V=new XMLHttpRequest,ee=C[It][tl]();try{V[wl]=!0}catch{}V.open("POST",ee,L),V[Py]("Content-type","application/json"),Jp(ee)&&V[Py](Pt[6],Pt[7]),Se(Jl(d),function($){V[Py]($,d[$])}),V.onreadystatechange=function(){return C._xhrReadyStateChange(V,x,x[Oe])},V.onerror=function($){return C[Ui](x,O(V),$)};var J=C._buffer[af](x);V.send(J),C._buffer[iu](x)}function k(x,L){if(Et(x)){for(var V=x[Oe],ee=0;ee=L[mp]&&L.itemsReceived-L.itemsAccepted===L.errors[Oe])return L}}catch(V){me(C[rr](),1,43,"Cannot parse the response. "+et(V),{response:x})}return null}function G(x,L){if(L===void 0&&(L=1),!(!x||x[Oe]===0)){var V=C[Fc];V[xf](x),r++;for(var ee=0,J=x;ee=200&&+c[So]<400,v.responseCode=+c[So],v.method=c[Xo],v[yi]={HttpMethod:c[Xo]},v);if(c[Il]&&(A[Sl]=new Date,A[Sl].setTime(c[Il])),GV(c,A),u&&Jl(c.requestHeaders)[Yo]>0){var p=A[yi]=A[yi]||{};p[hi]=c[hi]}if(f){var C=f();if(C){var y=C[hC];if(y&&(A.correlationContext=y),C[au]&&Jl(C.headerMap)[Yo]>0){var p=A[yi]=A[yi]||{};p.responseHeaders=C[au]}if(c.errorStatusText&&c[So]>=400){var h=C.type,p=A[yi]=A[yi]||{};(h===""||h==="text")&&(p.responseText=C.responseText?C[ou]+" - "+C[l]:C[ou]),h==="json"&&(p.responseText=C.response?C[ou]+" - "+JSON.stringify(C[Ck]):C[ou])}}}return A},c[mC]=function(){var d,u=null,f=c[Oy];if(f&&(f[rh]||f[ih])){u={};var v=u[Yr.TraceExt]=(d={},d[na]=f[rh],d.parentID=f[ih],d);de(f[Ii])||(v[Ii]=f[Ii])}return u}})}return e.__ieDyn=1,e}(),nN="ai.ajxmn.",Bf="diagLog",Qr="ajaxData",Lf="fetch",Kd="Failed to monitor XMLHttpRequest",Sk=", monitoring data for this ajax call ",Mc=Sk+"may be incorrect.",rN=Sk+"won't be sent.",iN="Failed to get Request-Context correlation header as it may be not included in the response or not accessible.",oN="Failed to add custom defined request context as configured call back may missing a null check.",aN="Failed to calculate the duration of the ",sN=0;function QV(){var e=cd();return!e||de(e.Request)||de(e.Request[hr])||de(e[Lf])?null:e[Lf]}function ZV(e){var t=!1;if(vg()){var n=XMLHttpRequest[hr];t=!de(n)&&!de(n.open)&&!de(n.send)&&!de(n.abort)}var r=gP();if(r&&r<9&&(t=!1),t)try{var i=new XMLHttpRequest;i[Qr]={};var o=XMLHttpRequest[hr].open;XMLHttpRequest[hr].open=o}catch(a){t=!1,Of(e,15,"Failed to enable XMLHttpRequest monitoring, extension is not supported",{exception:Ee(a)})}return t}function oh(e){var t="";try{e&&e[Qr]&&e[Qr][Si]&&(t+="(url: '"+e[Qr][Si]+"')")}catch{}return t}function Of(e,t,n,r,i){me(e[Bf](),1,t,n,r,i)}function Tc(e,t,n,r,i){me(e[Bf](),2,t,n,r,i)}function Wd(e,t,n){return function(r){Of(e,t,n,{ajaxDiagnosticsMessage:oh(r[cf]),exception:Ee(r.err)})}}function Rc(e,t){return e&&t?e.indexOf(t):-1}function lN(e,t,n){var r={id:t,fn:n};return e.push(r),{remove:function(){Se(e,function(i,o){if(i.id===r.id)return e.splice(o,1),-1})}}}function Ik(e,t,n,r){var i=!0;return Se(t,function(o,a){try{o.fn.call(null,n)===!1&&(i=!1)}catch(s){me(e&&e.logger,1,64,"Dependency "+r+" [#"+a+"] failed: "+et(s),{exception:Ee(s)},!0)}}),i}function XV(e,t,n,r,i,o){var a,s=e[Yo];if(s>0){var l=(a={},a[Ki]=t,a.xhr=r,a.input=i,a.init=o,a.traceId=n[na],a.spanId=n[ss],a.traceFlags=n[Ii],a.context=n[_f]||{},a);Ik(t,e,l,"listener"),n[na]=l[rh],n[ss]=l[ih],n[Ii]=l[Ii],n[_f]=l[_f]}}var hp="*.blob.core.",qV=mE([hp+"windows.net",hp+"chinacloudapi.cn",hp+"cloudapi.de",hp+"usgovcloudapi.net"]),JV=[/https:\/\/[^\/]*(\.pipe\.aria|aria\.pipe|events\.data|collector\.azure)\.[^\/]+\/(OneCollector\/1|Collector\/3)\.0/i];function gC(){var e,t=(e={},e[mk]=500,e[Ak]=!1,e[yk]=!1,e[hk]=void 0,e.disableCorrelationHeaders=!1,e.distributedTracingMode=1,e.correlationHeaderExcludedDomains=qV,e.correlationHeaderDomains=void 0,e.correlationHeaderExcludePatterns=void 0,e[uf]=void 0,e.enableCorsCorrelation=!1,e[dk]=!1,e[pk]=!1,e[fk]=!1,e[vk]=!1,e.maxAjaxPerfLookupAttempts=3,e[wk]=25,e.ignoreHeaders=["Authorization","X-API-Key","WWW-Authenticate"],e[gk]=void 0,e.addIntEndpoints=!0,e);return t}function cN(){var e=gC();return Lt(e,function(t){e[t]=void 0}),e}var $V=function(e){ba(t,e);function t(){var n=e.call(this)||this;n.identifier=t.identifier,n.priority=120;var r,i,o,a,s,l,c,d,u,f,v,A,p,C,y,h,b,w,S,E,I,F,k;return Rt(t,n,function(D,P){var H=P._addHook;G(),D.initialize=function(z,X,q,oe){D.isInitialized()||(P.initialize(z,X,q,oe),E=ac(wa("ajax"),X&&X.evtNamespace&&X.evtNamespace()),_(z),R(),Q(),M())},D._doTeardown=function(){G()},D.trackDependencyData=function(z,X){Te(k,D[Ki],null,z,X)},D[xy]=function(z,X,q,oe){var ce=D._currentWindowHost||o;if(XV(F,D[Ki],z,oe,X,q),X){if(ru[QF](a,z[sC](),ce)){q||(q={});var Z=new Headers(q[nl]||(X instanceof Request?X[nl]||{}:{}));if(f){var ue="|"+z[na]+"."+z[ss];Z.set(Pt[3],ue),s&&(z[hi][Pt[3]]=ue)}var ye=a[uf]||d&&d[uf]();if(ye&&(Z.set(Pt[0],Pt[2]+ye),s&&(z[hi][Pt[0]]=Pt[2]+ye)),u){var be=z[Ii];de(be)&&(be=1);var qe=hF(pF(z[na],z[ss],be));Z.set(Pt[4],qe),s&&(z[hi][Pt[4]]=qe)}q[nl]=Z}return q}else if(oe){if(ru[QF](a,z[sC](),ce)){if(f){var ue="|"+z[na]+"."+z[ss];oe[_y](Pt[3],ue),s&&(z[hi][Pt[3]]=ue)}var ye=a[uf]||d&&d[uf]();if(ye&&(oe[_y](Pt[0],Pt[2]+ye),s&&(z[hi][Pt[0]]=Pt[2]+ye)),u){var be=z[Ii];de(be)&&(be=1);var qe=hF(pF(z[na],z[ss],be));oe[_y](Pt[4],qe),s&&(z[hi][Pt[4]]=qe)}}return oe}},D[ZF]=function(z,X,q){if(p===-1||c5?v=nN+ce.substring(ce[Yo]-5)+".":v=nN+ce+"."}h=!!a[Ak],b=!!a[yk]}function M(){var z=D[Ki].getPlugin(U0);z&&(d=z.plugin[_f])}function K(z){var X=!0;return(z||a.ignoreHeaders)&&Se(a.ignoreHeaders,function(q){if(q[Nc]()===z[Nc]())return X=!1,-1}),X}function Q(){var z=QV();if(z){var X=cd(),q=z.polyfill;!b&&!r?(H(j1(X,Lf,{ns:E,req:function(oe,ce,Z){var ue;if(!b&&r&&!T(null,ce,Z)&&!(q&&i)){var ye=oe.ctx();ue=$(ce,Z);var be=D[xy](ue,ce,Z);be!==Z&&oe.set(1,be),ye.data=ue}},rsp:function(oe,ce){if(!b){var Z=oe.ctx().data;Z&&(oe.rslt=oe.rslt.then(function(ue){return le(oe,(ue||{})[So],ce,ue,Z,function(){var ye,be=(ye={statusText:ue[ou]},ye[au]=null,ye[hC]=Me(ue),ye);if(C){var qe={};ue.headers.forEach(function(mn,Vt){K(Vt)&&(qe[Vt]=mn)}),be[au]=qe}return be}),ue}).catch(function(ue){throw le(oe,0,ce,null,Z,null,{error:ue.message}),ue}))}},hkErr:Wd(D,15,"Failed to monitor Window.fetch"+Mc)})),r=!0):q&&H(j1(X,Lf,{ns:E,req:function(oe,ce,Z){T(null,ce,Z)}})),q&&(X[Lf].polyfill=q)}}function O(z,X,q){H(Pz(z,X,q))}function R(){ZV(D)&&!h&&!i&&(O(XMLHttpRequest,"open",{ns:E,req:function(z,X,q,oe){if(!h){var ce=z[cf],Z=ce[Qr];!T(ce,q)&&j(ce,!0)&&((!Z||!Z.xhrMonitoringState[lC])&&U(ce,X,q,oe),Y(ce))}},hkErr:Wd(D,15,Kd+".open"+Mc)}),O(XMLHttpRequest,"send",{ns:E,req:function(z,X){if(!h){var q=z[cf],oe=q[Qr];j(q)&&!oe.xhrMonitoringState[cC]&&(ee("xhr",oe),oe[Il]=lp(),D[xy](oe,void 0,void 0,q),oe.xhrMonitoringState[cC]=!0)}},hkErr:Wd(D,17,Kd+Mc)}),O(XMLHttpRequest,"abort",{ns:E,req:function(z){if(!h){var X=z[cf],q=X[Qr];j(X)&&!q.xhrMonitoringState[uC]&&(q.aborted=1,q.xhrMonitoringState[uC]=!0)}},hkErr:Wd(D,13,Kd+".abort"+Mc)}),O(XMLHttpRequest,"setRequestHeader",{ns:E,req:function(z,X,q){if(!h&&s){var oe=z[cf];j(oe)&&K(X)&&(oe[Qr][hi][X]=q)}},hkErr:Wd(D,71,Kd+".setRequestHeader"+Mc)}),i=!0)}function T(z,X,q){var oe=!1,ce=((Ne(X)?X:(X||{}).url||"")||"")[Nc]();if(Se(w,function(ye){var be=ye;Ne(ye)&&(be=new RegExp(ye)),oe||(oe=be.test(ce))}),oe)return oe;var Z=Rc(ce,"?"),ue=Rc(ce,"#");return(Z===-1||ue!==-1&&ue=0;jr--){var Tn=$n[jr];if(Tn){if(Tn.entryType==="resource")Tn.initiatorType===z&&(Rc(Tn[Lc],be)!==-1||Rc(be,Tn[Lc])!==-1)&&(Vt=Tn);else if(Tn.entryType==="mark"&&Tn[Lc]===ce[Lc]){X[pC]=Vt;break}if(Tn[Sl]=ue||X.async===!1?(ce&&Le(Z.clearMarks)&&Z.clearMarks(ce[Lc]),X.perfAttempts=qe,q()):setTimeout(mn,ye)}catch(fi){oe(fi)}})()}function $(z,X){var q,oe=W(),ce=oe&&oe[dC]()||as(),Z=as().substr(0,16),ue=new tN(ce,Z,D[Bf](),(q=D.core)===null||q===void 0?void 0:q.getTraceCtx());ue[Ii]=oe&&oe[fC](),ue[Il]=lp(),ue[XF]=l,z instanceof Request?ue[Si]=z?z.url:"":ue[Si]=z;var ye="GET";X&&X[Xo]?ye=X[Xo]:z&&z instanceof Request&&(ye=z[Xo]),ue[Xo]=ye;var be={};if(s){var qe=new Headers((X?X[nl]:0)||(z instanceof Request?z[nl]||{}:{}));qe.forEach(function(mn,Vt){K(Vt)&&(be[Vt]=mn)})}return ue[hi]=be,ee("fetch",ue),ue}function ne(z){var X="";try{de(z)||(typeof z=="string"?X+="(url: '".concat(z,"')"):X+="(url: '".concat(z.url,"')"))}catch(q){Of(D,15,"Failed to grab failed fetch diagnostics message",{exception:Ee(q)})}return X}function le(z,X,q,oe,ce,Z,ue){if(!ce)return;function ye(be,qe,mn){var Vt=mn||{};Vt.fetchDiagnosticsMessage=ne(q),qe&&(Vt.exception=Ee(qe)),Tc(D,be,aN+"fetch call"+rN,Vt)}ce[df]=lp(),ce[So]=X,J("fetch",ce,function(){var be=ce[vC]("Fetch",s,Z),qe;try{S&&(qe=S({status:X,request:q,response:oe}))}catch{Tc(D,104,oN)}if(be){qe!==void 0&&(be[yi]=vr(vr({},be.properties),qe));var mn=ce[mC]();Te(k,D[Ki],ce,be,null,mn)}else ye(14,null,{requestSentTime:ce[Il],responseFinishedTime:ce[df]})},function(be){ye(18,be,null)})}function Me(z){if(z&&z[nl])try{var X=z[nl].get(Pt[0]);return ru[$F](X)}catch(q){Tc(D,18,iN,{fetchDiagnosticsMessage:ne(z),exception:Ee(q)})}}function Te(z,X,q,oe,ce,Z){var ue,ye=!0,be=z[Yo];if(be>0){var qe=(ue={item:oe},ue[yi]=ce,ue.sysProperties=Z,ue.context=q?q[_f]:null,ue);ye=Ik(X,z,qe,"initializer")}ye&&D[ZF](oe,ce,Z)}}),n}return t.prototype.processTelemetry=function(n,r){this.processNext(n,r)},t.prototype.addDependencyInitializer=function(n){return null},t.identifier="AjaxDependencyPlugin",t.getDefaultConfig=gC,t.getEmptyConfig=cN,t}(cm),eG=function(){function e(){}return e}(),tG=function(){function e(){this.id="browser",this.deviceClass="Browser"}return e}(),Rg="sessionManager",Pg="update",ah="isUserCookieSet",kg="isNewUser",Uy="getTraceCtx",AC="telemetryTrace",Dk="applySessionContext",Fk="applyApplicationContext",Nk="applyDeviceContext",Mk="applyOperationContext",Tk="applyUserContext",Rk="applyOperatingSystemContxt",Pk="applyLocationContext",kk="applyInternalContext",Qa="accountId",sh="sdkExtension",lh="getSessionId",_l="namePrefix",ch="sessionCookiePostfix",uh="userCookiePostfix",kv="idLength",xv="getNewId",xg="length",Oc="automaticSession",Uc="authenticatedId",zd="sessionExpirationMs",gp="sessionRenewalMs",Qo="config",Vd="acquisitionDate",Ap="renewalDate",yC="cookieDomain",dh="join",Gd="cookieSeparator",jy="authUserCookieName",nG="2.8.9",rG=function(){function e(t){this.sdkVersion=(t[sh]&&t[sh]()?t[sh]()+"_":"")+"javascript:"+nG}return e}(),iG=function(){function e(){}return e}(),oG="ai_session",xk=function(){function e(){}return e}(),aG=function(){function e(t,n){var r=this,i,o,a=sm(n),s=bE(n);Rt(e,r,function(l){t||(t={}),Le(t[zd])||(t[zd]=function(){return e.acquisitionSpan}),Le(t[gp])||(t[gp]=function(){return e.renewalSpan}),l[Qo]=t;var c=l.config[ch]&&l[Qo][ch]()?l.config[ch]():l.config[_l]&&l[Qo][_l]()?l[Qo][_l]():"";i=function(){return oG+c},l[Oc]=new xk,l[Pg]=function(){var p=xo(),C=!1,y=l[Oc];y.id||(C=!d(y));var h=l.config[zd]();if(!C&&h>0){var b=l.config[gp](),w=p-y[Vd],S=p-y[Ap];C=w<0||S<0,C=C||w>h,C=C||S>b}C?f(p):(!o||p-o>e.cookieUpdateInterval)&&v(y,p)},l.backup=function(){var p=l[Oc];A(p.id,p[Vd],p[Ap])};function d(p,C){var y=!1,h=s.get(i());if(h&&Le(h.split))y=u(p,h);else{var b=Hz(a,i());b&&(y=u(p,b))}return y||!!p.id}function u(p,C){var y=!1,h=", session will be reset",b=C.split("|");if(b[xg]>=2)try{var w=+b[1]||0,S=+b[2]||0;isNaN(w)||w<=0?me(a,2,27,"AI session acquisition date is 0"+h):isNaN(S)||S<=0?me(a,2,27,"AI session renewal date is 0"+h):b[0]&&(p.id=b[0],p[Vd]=w,p[Ap]=S,y=!0)}catch(E){me(a,1,9,"Error parsing ai_session value ["+(C||"")+"]"+h+" - "+et(E),{exception:Ee(E)})}return y}function f(p){var C=l[Qo]||{},y=(C[xv]?C[xv]():null)||AE;l.automaticSession.id=y(C[kv]?C[kv]():22),l[Oc][Vd]=p,v(l[Oc],p),PE()||me(a,2,0,"Browser does not support local storage. Session durations will be inaccurate.")}function v(p,C){var y=p[Vd];p[Ap]=C;var h=l[Qo],b=h[gp](),w=y+h[zd]()-C,S=[p.id,y,C],E=0;w0?E:null,I),o=C}function A(p,C,y){Kz(a,i(),[p,C,y][dh]("|"))}})}return e.acquisitionSpan=864e5,e.renewalSpan=18e5,e.cookieUpdateInterval=6e4,e}(),sG=function(){function e(t,n,r,i){var o=this;o.traceID=t||as(),o.parentID=n;var a=is();!r&&a&&a.pathname&&(r=a.pathname),o.name=jn(i,r)}return e}();function uN(e){return!(typeof e!="string"||!e||e.match(/,|;|=| |\|/))}var lG=function(){function e(t,n){this.isNewUser=!1,this.isUserCookieSet=!1;var r=sm(n),i=bE(n),o;Rt(e,this,function(a){a[Qo]=t;var s=a.config[uh]&&a[Qo][uh]()?a[Qo][uh]():"";o=function(){return e.userCookieName+s};var l=i.get(o());if(l){a[kg]=!1;var c=l.split(e[Gd]);c[xg]>0&&(a.id=c[0],a[ah]=!!a.id)}function d(){var y=t||{},h=(y[xv]?y[xv]():null)||AE,b=h(y[kv]?t[kv]():22);return b}function u(y){var h=Zu(new Date);a.accountAcquisitionDate=h,a[kg]=!0;var b=[y,h];return b}function f(y){var h=31536e3;a[ah]=i.set(o(),y,h)}if(!a.id){a.id=d();var v=u(a.id);f(v[dh](e[Gd]));var A=t[_l]&&t[_l]()?t[_l]()+"ai_session":"ai_session";Wz(r,A)}a[Qa]=t[Qa]?t[Qa]():void 0;var p=i.get(e[jy]);if(p){p=decodeURI(p);var C=p.split(e[Gd]);C[0]&&(a[Uc]=C[0]),C[xg]>1&&C[1]&&(a[Qa]=C[1])}a.setAuthenticatedUserContext=function(y,h,b){b===void 0&&(b=!1);var w=!uN(y)||h&&!uN(h);if(w){me(r,2,60,"Setting auth user context failed. User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.",!0);return}a[Uc]=y;var S=a[Uc];h&&(a[Qa]=h,S=[a[Uc],a.accountId][dh](e[Gd])),b&&i.set(e[jy],encodeURI(S))},a.clearAuthenticatedUserContext=function(){a[Uc]=null,a[Qa]=null,i.del(e[jy])},a[Pg]=function(y){if(a.id!==y||!a[ah]){var h=y||d(),b=u(h);f(b[dh](e[Gd]))}}})}return e.cookieSeparator="|",e.userCookieName="ai_user",e.authUserCookieName="ai_authUser",e}(),yp="ext",bp="tags";function Pc(e,t){e&&e[t]&&Jl(e[t])[xg]===0&&delete e[t]}var cG=function(){function e(t,n,r){var i=this,o=t.logger;this.appId=function(){return null},this[lh]=function(){return null},Rt(e,this,function(a){if(a.application=new eG,a.internal=new rG(n),am()){a[Rg]=new aG(n,t),a.device=new tG,a.location=new iG,a.user=new lG(n,t);var s=void 0,l=void 0,c;r&&(s=r.getTraceId(),l=r.getSpanId(),c=r.getName()),a[AC]=new sG(s,l,c,o),a.session=new xk}a[lh]=function(){var d=a.session,u=null;if(d&&Ne(d.id))u=d.id;else{var f=(a[Rg]||{})[Oc];u=f&&Ne(f.id)?f.id:null}return u},a[Dk]=function(d,u){rt(yn(d.ext,Yr.AppExt),"sesId",a[lh](),Ne)},a[Rk]=function(d,u){rt(d.ext,Yr.OSExt,a.os)},a[Fk]=function(d,u){var f=a.application;if(f){var v=yn(d,bp);rt(v,Ft.applicationVersion,f.ver,Ne),rt(v,Ft.applicationBuild,f.build,Ne)}},a[Nk]=function(d,u){var f=a.device;if(f){var v=yn(yn(d,yp),Yr.DeviceExt);rt(v,"localId",f.id,Ne),rt(v,"ip",f.ip,Ne),rt(v,"model",f.model,Ne),rt(v,"deviceClass",f.deviceClass,Ne)}},a[kk]=function(d,u){var f=a.internal;if(f){var v=yn(d,bp);rt(v,Ft.internalAgentVersion,f.agentVersion,Ne),rt(v,Ft.internalSdkVersion,f.sdkVersion,Ne),(d.baseType===Dv.dataType||d.baseType===Ds.dataType)&&(rt(v,Ft.internalSnippet,f.snippetVer,Ne),rt(v,Ft.internalSdkSrc,f.sdkSrc,Ne))}},a[Pk]=function(d,u){var f=i.location;f&&rt(yn(d,bp,[]),Ft.locationIp,f.ip,Ne)},a[Mk]=function(d,u){var f=a[AC];if(f){var v=yn(yn(d,yp),Yr.TraceExt,{traceID:void 0,parentID:void 0});rt(v,"traceID",f.traceID,Ne,de),rt(v,"name",f.name,Ne,de),rt(v,"parentID",f.parentID,Ne,de)}},a.applyWebContext=function(d,u){var f=i.web;f&&rt(yn(d,yp),Yr.WebExt,f)},a[Tk]=function(d,u){var f=a.user;if(f){var v=yn(d,bp,[]);rt(v,Ft.userAccountId,f[Qa],Ne);var A=yn(yn(d,yp),Yr.UserExt);rt(A,"id",f.id,Ne),rt(A,"authId",f[Uc],Ne)}},a.cleanUp=function(d,u){var f=d.ext;f&&(Pc(f,Yr.DeviceExt),Pc(f,Yr.UserExt),Pc(f,Yr.WebExt),Pc(f,Yr.OSExt),Pc(f,Yr.AppExt),Pc(f,Yr.TraceExt))}})}return e.__ieDyn=1,e}(),uG=function(e){ba(t,e);function t(){var n=e.call(this)||this;n.priority=110,n.identifier=U0;var r,i,o;return Rt(t,n,function(a,s){l(),a.initialize=function(u,f,v,A){s.initialize(u,f,v,A),c(u)},a.processTelemetry=function(u,f){if(!de(u)){f=a._getTelCtx(f),u.name===Ds.envelopeType&&f.diagLog().resetInternalMessageCount();var v=a.context||{};v.session&&typeof a.context.session.id!="string"&&v[Rg]&&v[Rg][Pg]();var A=v.user;if(A&&!A[ah]&&A[Pg](v.user.id),d(u,f),A&&A[kg]){A[kg]=!1;var p=new Dv(72,(Ca()||{}).userAgent||"");OW(f.diagLog(),1,p)}a.processNext(u,f)}},a._doTeardown=function(u,f){var v=(u||{}).core();if(v&&v[Uy]){var A=v[Uy](!1);A===i&&v.setTraceCtx(o)}l()};function l(){r=null,i=null,o=null}function c(u){var f=a.identifier,v=a.core,A=_o(null,u,v),p=t.getDefaultConfig();r=r||{},Lt(p,function(C,y){r[C]=function(){return A.getConfig(f,C,y())}}),o=v[Uy](!1),a.context=new cG(v,r,o),i=LE(a.context[AC],o),v.setTraceCtx(i),a.context.appId=function(){var C=v.getPlugin(ZP);return C?C.plugin._appId:null},a._extConfig=r}function d(u,f){yn(u,"tags",[]),yn(u,"ext",{});var v=a.context;v[Dk](u,f),v[Fk](u,f),v[Nk](u,f),v[Mk](u,f),v[Tk](u,f),v[Rk](u,f),v.applyWebContext(u,f),v[Pk](u,f),v[kk](u,f),v.cleanUp(u,f)}}),n}return t.getDefaultConfig=function(){var n,r,i=null,o=(n={instrumentationKey:function(){return r}},n[Qa]=function(){return i},n.sessionRenewalMs=function(){return 30*60*1e3},n.samplingPercentage=function(){return 100},n.sessionExpirationMs=function(){return 24*60*60*1e3},n[yC]=function(){return i},n[sh]=function(){return i},n.isBrowserLinkTrackingEnabled=function(){return!1},n.appId=function(){return i},n[lh]=function(){return i},n[_l]=function(){return r},n[ch]=function(){return r},n[uh]=function(){return r},n[kv]=function(){return 22},n[xv]=function(){return i},n);return o},t}(cm);const dG=uG;var _k="AuthenticatedUserContext",fd="track",bC="snippet",fG="getCookieMgr",vG="startTrackPage",mG="stopTrackPage",Hy="flush",pG="startTrackEvent",hG="stopTrackEvent",gG="addTelemetryInitializer",dN="pollInternalLogs",Ky="getPlugin",Wy="evtNamespace",AG=fd+"Event",yG=fd+"Trace",bG=fd+"Metric",CG=fd+"PageView",wG=fd+"Exception",EG=fd+"DependencyData",SG="set"+_k,IG="clear"+_k,DG="updateSnippetDefinitions",FG="loadAppInsights",fN="endpointUrl",Cp="diagnosticLogInterval",NG="disableFlushOnBeforeUnload",MG="disableFlushOnUnload",La="config",ji="context",wp="push",zy="version",il="queue",Vy="connectionString",vN="instrumentationKey",Ep="appInsights",mN="disableIkeyDeprecationMessage",pN="getTransmissionControls",Yd="onunloadFlush",hN="addHousekeepingBeforeUnload",Sp="indexOf",CC,gN=[bC,"dependencies","properties","_snippetVersion","appInsightsNew","getSKUDefaults"],TG=function(){function e(t){var n=this,r,i,o,a,s,l,c;Rt(e,this,function(d){y(),a=""+(t.sv||t[zy]||""),t[il]=t[il]||[],t[zy]=t[zy]||2;var u=t[La]||{};if(u[Vy]){var f=$z(u[Vy]),v=f.ingestionendpoint;u[fN]=v?v+kf:u[fN],u[vN]=f.instrumentationkey||u[vN]}d[Ep]=new EV,i=new dG,r=new $V,o=new VV,c=new Tz,d.core=c;var A=de(u[mN])?!0:u[mN];!u[Vy]&&!A&&me(c.logger,1,106,"Instrumentation key support will end soon, see aka.ms/IkeyMigrate"),d[bC]=t,d[La]=u,p(),d[Hy]=function(h){h===void 0&&(h=!0),pg(c,function(){return"AISKU.flush"},function(){Se(c[pN](),function(b){Se(b,function(w){w[Hy](h)})})},null,h)},d[Yd]=function(h){h===void 0&&(h=!0),Se(c[pN](),function(b){Se(b,function(w){w[Yd]?w[Yd]():w[Hy](h)})})},d[FG]=function(h,b,w){h===void 0&&(h=!1);function S(E){if(E){var I="";de(a)||(I+=a),h&&(I+=".lg"),d[ji]&&d[ji].internal&&(d[ji].internal.snippetVer=I||"-"),Lt(d,function(F,k){Ne(F)&&!Le(k)&&F&&F[0]!=="_"&&qi(gN,F)===-1&&(E[F]=k)})}}return h&&d[La].extensions&&d[La].extensions.length>0&&cr("Extensions not allowed in legacy mode"),pg(d.core,function(){return"AISKU.loadAppInsights"},function(){var E=[];E[wp](o),E[wp](i),E[wp](r),E[wp](d[Ep]),c.initialize(d[La],E,b,w),d[ji]=i[ji],CC&&d[ji]&&(d[ji].internal.sdkSrc=CC),S(d[bC]),d.emptyQueue(),d[dN](),d[hN](n)}),d},d[DG]=function(h){vW(h,d,function(b){return b&&qi(gN,b)===-1})},d.emptyQueue=function(){try{if(Et(d.snippet[il])){for(var h=d.snippet[il].length,b=0;b0?d[La][Cp]:1e4}function C(){return r}function y(){s=wa("AISKU"),l=null,r=null,i=null,o=null,a=null}})}return e.prototype.addDependencyInitializer=function(t){return null},e}();(function(){var e=null,t=!1,n=["://js.monitor.azure.com/","://az416426.vo.msecnd.net/"];try{var r=(document||{}).currentScript;r&&(e=r.src)}catch{}if(e)try{var i=e.toLowerCase();if(i){for(var o="",a=0;ae.path===window.location.pathname)||Xe.Home,appInsights:(()=>{if(_g)return null;if(!APP_INSIGHTS_INSTRUMENTATION_KEY)return console.warn("App Insights Instrumentation Key was not found"),null;const e=new TG({config:{instrumentationKey:APP_INSIGHTS_INSTRUMENTATION_KEY}});return e.loadAppInsights(),e})()},kG=(e,t)=>LK(e,n=>{switch(t.type){case"SetActiveIncidents":{n.incidents={...n.incidents,activeIncidents:t.activeIncidents};break}case"SetClosedIncidents":{n.incidents={...n.incidents,closedIncidents:t.closedIncidents};break}case"SetMajorIncidents":{n.incidents={...n.incidents,activeMajorIncidents:t.activeMajorIncidents,recentlyResolvedMajorIncidents:t.recentlyResolvedMajorIncidents};break}case"SetAccounts":{n.accounts=t.accounts;break}case"SetContacts":{n.contacts=t.contacts;break}case"SetProducts":{n.products=t.products;break}case"SetOrders":{n.orders=t.orders;break}case"SetNetworkOrders":{n.networkOrders=t.networkOrders;break}case"SetProjects":{n.projects=t.projects;break}case"SetCustomerAssets":{n.customerAssets=t.customerAssets;break}case"SetInvoices":{n.invoices=t.invoices;break}case"SetBlogPosts":{n.blogPosts=t.blogPosts;break}case"SetPortalMajorIncidentUpdates":{n.portalMajorIncidentUpdates=t.portalMajorIncidentUpdates;break}case"SetTermsAndConditionsAcceptanceDate":{n.termsAndConditionsAcceptanceDate=t.termsAndConditionsAcceptanceDate;break}case"SetFeedbackPaneIsShown":{n.feedbackPaneIsShown=t.feedbackPaneIsShown;break}case"SetCurrentPage":{n.currentPage=t.currentPage;break}case"SetIsDirty":{n.isDirty=t.isDirty;break}case"SetSaveDirtyPage":{n.saveDirtyPage=t.saveDirtyPage;break}case"AddLatestError":{n.latestErrors=[...n.latestErrors,t.error];break}case"AddNotification":{n.notifications=[...n.notifications,{...t.notification,id:gR()}];break}case"RemoveNotification":{n.notifications=n.notifications.filter(r=>r.id!==t.id);break}case"ClearLatestErrors":{n.latestErrors=[];break}default:throw new Error(`No behaviour for the action type '${t}' has been defined in the reducer`)}}),xG=Gy.createRoot(document.getElementById("root"));x4();var AN;const _G=UR((e,t)=>e?kG(e,t):PG,(AN=window.__REDUX_DEVTOOLS_EXTENSION__)==null?void 0:AN.call(window));xG.render(m(Y8,{store:_G,children:m(Sn.StrictMode,{children:m(KM,{window,children:m(EK,{})})})})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXBhZ2UtYXBwbGljYXRpb24tc2NyaXB0cy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCIuLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2xpZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCIuLi9ub2RlX21vZHVsZXMvaGlzdG9yeS9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yb3V0ZXIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3Qtcm91dGVyLWRvbS9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yb3V0ZXItcHJvbXB0L2Rpc3QvcmVhY3Qtcm91dGVyLXByb21wdC5janMucHJvZHVjdGlvbi5taW4uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3Qtcm91dGVyLXByb21wdC9kaXN0L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0vd2l0aC1zZWxlY3Rvci5wcm9kdWN0aW9uLm1pbi5qcyIsIi4uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL3dpdGgtc2VsZWN0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvYmF0Y2guanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Db250ZXh0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2hvb2tzL3VzZVJlZHV4Q29udGV4dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy91c2VTeW5jRXh0ZXJuYWxTdG9yZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VTZWxlY3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9kaXN0L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzLmNqcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvU3Vic2NyaXB0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Qcm92aWRlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VTdG9yZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VEaXNwYXRjaC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9pbmRleC5qcyIsIi4uL3NyYy9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsLnRzIiwiLi4vc3JjL0VudW1zL0NvbnRhY3RTdGF0ZUNvZGUudHMiLCIuLi9zcmMvRW51bXMvUG9ydGFsQ29udGFjdFR5cGUudHMiLCIuLi9zcmMvRW51bXMvQWNjb3VudFNpdGVUeXBlLnRzIiwiLi4vc3JjL0VudW1zL0FjY291bnRTdGF0ZUNvZGUudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja0FjY291bnREYXRhLnRzIiwiLi4vc3JjL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWwudHMiLCIuLi9zcmMvRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbC50cyIsIi4uL3NyYy9FbnVtcy9PcmRlclBlcm1pc3Npb25MZXZlbC50cyIsIi4uL3NyYy9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tDb250YWN0RGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrQXV0aGVudGljYXRlZFVzZXIudHMiLCIuLi9zcmMvSG9va3MvdXNlVXNlck1ldGFkYXRhLnRzIiwiLi4vc3JjL0NvbXBvbmVudHMvSW1hZ2UudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvSGVhZGVyLnRzeCIsIi4uL3NyYy9FbnVtcy9Qcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcudHMiLCIuLi9zcmMvRW51bXMvQ2FzZVR5cGUudHMiLCIuLi9zcmMvRW51bXMvSW5jaWRlbnRTdGF0dXNDb2RlLnRzIiwiLi4vc3JjL0VudW1zL0Nhc2VQcmlvcml0eUNvZGUudHMiLCIuLi9zcmMvQ29tcG9uZW50cy9CcmVhZGNydW1iLnRzeCIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9saWIvZXNtL2ljb25Db250ZXh0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2xpYi9lc20vaWNvbkJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvcmVhY3QtaWNvbnMvYmkvaW5kZXguZXNtLmpzIiwiLi4vc3JjL0hvb2tzL3VzZUFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcy50c3giLCIuLi9zcmMvSG9va3MvdXNlQXBwSW5zaWdodHMudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvSW5mb0NhcmQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvRXJyb3JCb3VuZGFyeS50c3giLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3NldC12ZXJzaW9uL2xpYi9zZXRWZXJzaW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9zZXQtdmVyc2lvbi9saWIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMvbGliL1N0eWxlc2hlZXQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvZXh0cmFjdFN0eWxlUGFydHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvU3R5bGVPcHRpb25zU3RhdGUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvdHJhbnNmb3Jtcy9rZWJhYlJ1bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMvbGliL2dldFZlbmRvclNldHRpbmdzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMvbGliL3RyYW5zZm9ybXMvcHJlZml4UnVsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvdHJhbnNmb3Jtcy9wcm92aWRlVW5pdHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvdHJhbnNmb3Jtcy9ydGxpZnlSdWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvbWVyZ2Utc3R5bGVzL2xpYi90b2tlbml6ZVdpdGhQYXJlbnRoZXNlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvbWVyZ2Utc3R5bGVzL2xpYi9zdHlsZVRvQ2xhc3NOYW1lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMvbGliL21lcmdlU3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMvbGliL2NvbmNhdFN0eWxlU2V0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvbWVyZ2Utc3R5bGVzL2xpYi9tZXJnZVN0eWxlU2V0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvbWVyZ2Utc3R5bGVzL2xpYi9jb25jYXRTdHlsZVNldHNXaXRoUHJvcHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIvZm9udEZhY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL21lcmdlLXN0eWxlcy9saWIva2V5ZnJhbWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMvbGliL3V0aWxpdGllcy9idWlsZENsYXNzTWFwLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2RvbS9jYW5Vc2VET00uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvZG9tL2dldFdpbmRvdy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9Bc3luYy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9vYmplY3QuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvRXZlbnRHcm91cC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9kb20vZ2V0RG9jdW1lbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvc2Nyb2xsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL3dhcm4vd2Fybi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi93YXJuL3dhcm5Db25kaXRpb25hbGx5UmVxdWlyZWRQcm9wcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9CYXNlQ29tcG9uZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL0RlbGF5ZWRSZW5kZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvR2xvYmFsU2V0dGluZ3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvS2V5Q29kZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvUmVjdGFuZ2xlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2FwcGVuZEZ1bmN0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2FyaWEuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvYXJyYXkuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvc2Vzc2lvblN0b3JhZ2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvcnRsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9kb20tdXRpbGl0aWVzL2xpYi9pc1ZpcnR1YWxFbGVtZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9kb20tdXRpbGl0aWVzL2xpYi9nZXRWaXJ0dWFsUGFyZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9kb20tdXRpbGl0aWVzL2xpYi9nZXRQYXJlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2RvbS11dGlsaXRpZXMvbGliL2VsZW1lbnRDb250YWlucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZG9tLXV0aWxpdGllcy9saWIvZmluZEVsZW1lbnRSZWN1cnNpdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2RvbS11dGlsaXRpZXMvbGliL2VsZW1lbnRDb250YWluc0F0dHJpYnV0ZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZG9tLXV0aWxpdGllcy9saWIvc2V0UG9ydGFsQXR0cmlidXRlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9kb20tdXRpbGl0aWVzL2xpYi9wb3J0YWxDb250YWluc0VsZW1lbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2RvbS11dGlsaXRpZXMvbGliL3NldFZpcnR1YWxQYXJlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvZm9jdXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvZG9tL29uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2NsYXNzTmFtZXNGdW5jdGlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9tZW1vaXplLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2NvbXBvbmVudEFzL2NvbXBvc2VDb21wb25lbnRBcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9jb250cm9sbGVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2Nzcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9jdXN0b21pemF0aW9ucy9DdXN0b21pemF0aW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9jdXN0b21pemF0aW9ucy9DdXN0b21pemVyQ29udGV4dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9jdXN0b21pemF0aW9ucy9tZXJnZVNldHRpbmdzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2N1c3RvbWl6YXRpb25zL21lcmdlQ3VzdG9taXphdGlvbnMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvY3VzdG9taXphdGlvbnMvQ3VzdG9taXplci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9ob2lzdFN0YXRpY3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvY3VzdG9taXphdGlvbnMvY3VzdG9taXphYmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2N1c3RvbWl6YXRpb25zL3VzZUN1c3RvbWl6YXRpb25TZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9leHRlbmRDb21wb25lbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvZ2V0SWQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvcHJvcGVydGllcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9pbml0aWFsaXplQ29tcG9uZW50UmVmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2tleWJvYXJkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL3NldEZvY3VzVmlzaWJpbGl0eS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi91c2VGb2N1c1JlY3RzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL0ZvY3VzUmVjdHNQcm92aWRlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9sb2NhbFN0b3JhZ2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvbGFuZ3VhZ2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvbWVyZ2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvbW9iaWxlRGV0ZWN0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvbW9kYWxpemUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvb3NEZXRlY3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9yZW5kZXJGdW5jdGlvbi9jb21wb3NlUmVuZGVyRnVuY3Rpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvc3R5bGVkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS91dGlsaXRpZXMvbGliL2llMTFEZXRlY3Rvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9nZXRQcm9wc1dpdGhEZWZhdWx0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdXRpbGl0aWVzL2xpYi9jcmVhdGVNZXJnZWRSZWYuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3V0aWxpdGllcy9saWIvdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi91dGlsaXRpZXMvaWNvbnMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3RoZW1lL2xpYi91dGlsaXRpZXMvbWFrZVNlbWFudGljQ29sb3JzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS90aGVtZS9saWIvbWVyZ2VUaGVtZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3RoZW1lL2xpYi9jb2xvcnMvRGVmYXVsdFBhbGV0dGUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3RoZW1lL2xpYi9lZmZlY3RzL0ZsdWVudERlcHRocy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdGhlbWUvbGliL2VmZmVjdHMvRGVmYXVsdEVmZmVjdHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3RoZW1lL2xpYi9zcGFjaW5nL0RlZmF1bHRTcGFjaW5nLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS90aGVtZS9saWIvbW90aW9uL0FuaW1hdGlvblN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdGhlbWUvbGliL2ZvbnRzL0ZsdWVudEZvbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS90aGVtZS9saWIvZm9udHMvY3JlYXRlRm9udFN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvdGhlbWUvbGliL2ZvbnRzL0RlZmF1bHRGb250U3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS90aGVtZS9saWIvY3JlYXRlVGhlbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcy9saWIvc3R5bGVzL0NvbW1vblN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi9zdHlsZXMvekluZGV4ZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcy9saWIvc3R5bGVzL2dldEZvY3VzU3R5bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcy9saWIvc3R5bGVzL2hpZGRlbkNvbnRlbnRTdHlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi9zdHlsZXMvZ2V0R2xvYmFsQ2xhc3NOYW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2xvYWQtdGhlbWVkLXN0eWxlcy9saWItZXM2L2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMvbGliL3N0eWxlcy90aGVtZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi9zdHlsZXMvR2VuZXJhbFN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi9zdHlsZXMvZ2V0UGxhY2Vob2xkZXJTdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcy9saWIvY2xhc3NOYW1lcy9BbmltYXRpb25DbGFzc05hbWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMvbGliL2Nkbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzL2xpYi92ZXJzaW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMvbGliL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tbW9uL0RpcmVjdGlvbmFsSGludC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL3V0aWxpdGllcy9wb3NpdGlvbmluZy9wb3NpdGlvbmluZy50eXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL3V0aWxpdGllcy9wb3NpdGlvbmluZy9wb3NpdGlvbmluZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtaG9va3MvbGliL3VzZUFzeW5jLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC1ob29rcy9saWIvdXNlQ29uc3QuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0LWhvb2tzL2xpYi91c2VCb29sZWFuLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC1ob29rcy9saWIvdXNlRXZlbnRDYWxsYmFjay5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtaG9va3MvbGliL3VzZUlkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC1ob29rcy9saWIvdXNlTWVyZ2VkUmVmcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtaG9va3MvbGliL3VzZU9uRXZlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0LWhvb2tzL2xpYi91c2VQcmV2aW91cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtaG9va3MvbGliL3VzZVNldFRpbWVvdXQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0LXdpbmRvdy1wcm92aWRlci9saWIvV2luZG93UHJvdmlkZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0LWhvb2tzL2xpYi91c2VUYXJnZXQuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0LWhvb2tzL2xpYi91c2VVbm1vdW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9Qb3B1cC9Qb3B1cC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ2FsbG91dC9DYWxsb3V0Q29udGVudC5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9DYWxsb3V0L0NhbGxvdXRDb250ZW50LnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ2FsbG91dC9DYWxsb3V0Q29udGVudC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtcG9ydGFsLWNvbXBhdC1jb250ZXh0L2xpYi9Qb3J0YWxDb21wYXRDb250ZXh0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9GYWJyaWMvRmFicmljLmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0ZhYnJpYy9GYWJyaWMuc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9GYWJyaWMvRmFicmljLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9MYXllci9MYXllci5ub3RpZmljYXRpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0xheWVyL0xheWVyLmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0xheWVyL0xheWVyLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvTGF5ZXIvTGF5ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0NhbGxvdXQvQ2FsbG91dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvRm9jdXNUcmFwWm9uZS9Gb2N1c1RyYXBab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JY29uL0ljb24udHlwZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0ltYWdlL0ltYWdlLnR5cGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JbWFnZS9JbWFnZS5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JbWFnZS9JbWFnZS5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0ltYWdlL0ltYWdlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JY29uL0ljb24uc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JY29uL0ZvbnRJY29uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JY29uL0ljb24uYmFzZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvSWNvbi9JY29uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9JY29uL0ltYWdlSWNvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtZm9jdXMvbGliL2NvbXBvbmVudHMvRm9jdXNab25lL0ZvY3VzWm9uZS50eXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QtZm9jdXMvbGliL2NvbXBvbmVudHMvRm9jdXNab25lL0ZvY3VzWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnUudHlwZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi91dGlsaXRpZXMvY29udGV4dHVhbE1lbnUvY29udGV4dHVhbE1lbnVVdGlsaXR5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9Db250ZXh0dWFsTWVudS9Db250ZXh0dWFsTWVudUl0ZW0uYmFzZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvRGl2aWRlci9WZXJ0aWNhbERpdmlkZXIuY2xhc3NOYW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnUuY25zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0NvbnRleHR1YWxNZW51L0NvbnRleHR1YWxNZW51LmNsYXNzTmFtZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0NvbnRleHR1YWxNZW51L0NvbnRleHR1YWxNZW51SXRlbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci9Db250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvdXRpbGl0aWVzL2tleXRpcHMvS2V5dGlwQ29uc3RhbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvdXRpbGl0aWVzL2tleXRpcHMvS2V5dGlwTWFuYWdlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL3V0aWxpdGllcy9rZXl0aXBzL0tleXRpcFV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9LZXl0aXBEYXRhL3VzZUtleXRpcERhdGEuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0tleXRpcERhdGEvS2V5dGlwRGF0YS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci9Db250ZXh0dWFsTWVudUFuY2hvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci9Db250ZXh0dWFsTWVudUJ1dHRvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvRGl2aWRlci9WZXJ0aWNhbERpdmlkZXIuc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9EaXZpZGVyL1ZlcnRpY2FsRGl2aWRlci5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9EaXZpZGVyL1ZlcnRpY2FsRGl2aWRlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQ29udGV4dHVhbE1lbnUvQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci9Db250ZXh0dWFsTWVudVNwbGl0QnV0dG9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvdXRpbGl0aWVzL2RlY29yYXRvcnMvd2l0aFJlc3BvbnNpdmVNb2RlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvdXRpbGl0aWVzL2hvb2tzL3VzZVJlc3BvbnNpdmVNb2RlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvdXRpbGl0aWVzL01lbnVDb250ZXh0L01lbnVDb250ZXh0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9Db250ZXh0dWFsTWVudS9Db250ZXh0dWFsTWVudS5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9Db250ZXh0dWFsTWVudS9Db250ZXh0dWFsTWVudS5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0NvbnRleHR1YWxNZW51L0NvbnRleHR1YWxNZW51LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9CdXR0b24vQmFzZUJ1dHRvbi5jbGFzc05hbWVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9CdXR0b24vU3BsaXRCdXR0b24vU3BsaXRCdXR0b24uY2xhc3NOYW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQnV0dG9uL0Jhc2VCdXR0b24uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0J1dHRvbi9CYXNlQnV0dG9uLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQnV0dG9uL1NwbGl0QnV0dG9uL1NwbGl0QnV0dG9uLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvblRoZW1lcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvQnV0dG9uL0RlZmF1bHRCdXR0b24vRGVmYXVsdEJ1dHRvbi5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0J1dHRvbi9EZWZhdWx0QnV0dG9uL0RlZmF1bHRCdXR0b24uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0J1dHRvbi9JY29uQnV0dG9uL0ljb25CdXR0b24uc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9CdXR0b24vSWNvbkJ1dHRvbi9JY29uQnV0dG9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9CdXR0b24vUHJpbWFyeUJ1dHRvbi9QcmltYXJ5QnV0dG9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9MYWJlbC9MYWJlbC5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9MYWJlbC9MYWJlbC5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL0xhYmVsL0xhYmVsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9UZXh0RmllbGQvVGV4dEZpZWxkLmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL1RleHRGaWVsZC9UZXh0RmllbGQuc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9UZXh0RmllbGQvVGV4dEZpZWxkLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL092ZXJsYXkvT3ZlcmxheS5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9PdmVybGF5L092ZXJsYXkuc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9PdmVybGF5L092ZXJsYXkuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi91dGlsaXRpZXMvRHJhZ2dhYmxlWm9uZS9EcmFnZ2FibGVab25lLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL3V0aWxpdGllcy9EcmFnZ2FibGVab25lL0RyYWdnYWJsZVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL01vZGFsL01vZGFsLmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL01vZGFsL01vZGFsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb250LWljb25zLW1kbDIvbGliL2ZhYnJpYy1pY29ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtNC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtNS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtNi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtNy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtOC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtOS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMTAuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2ZvbnQtaWNvbnMtbWRsMi9saWIvZmFicmljLWljb25zLTExLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb250LWljb25zLW1kbDIvbGliL2ZhYnJpYy1pY29ucy0xMi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMTMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2ZvbnQtaWNvbnMtbWRsMi9saWIvZmFicmljLWljb25zLTE0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb250LWljb25zLW1kbDIvbGliL2ZhYnJpYy1pY29ucy0xNS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyL2xpYi9mYWJyaWMtaWNvbnMtMTYuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2ZvbnQtaWNvbnMtbWRsMi9saWIvZmFicmljLWljb25zLTE3LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb250LWljb25zLW1kbDIvbGliL2ljb25BbGlhc2VzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb250LWljb25zLW1kbDIvbGliL3ZlcnNpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL2ZvbnQtaWNvbnMtbWRsMi9saWIvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL01lc3NhZ2VCYXIvTWVzc2FnZUJhci50eXBlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvTWVzc2FnZUJhci9NZXNzYWdlQmFyLmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL01lc3NhZ2VCYXIvTWVzc2FnZUJhci5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL01lc3NhZ2VCYXIvTWVzc2FnZUJhci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm91bmRhdGlvbi1sZWdhY3kvbGliL3V0aWxpdGllcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvZm91bmRhdGlvbi1sZWdhY3kvbGliL3Nsb3RzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9mb3VuZGF0aW9uLWxlZ2FjeS9saWIvY3JlYXRlQ29tcG9uZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9TdGFjay9TdGFja0l0ZW0vU3RhY2tJdGVtLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvU3RhY2svU3RhY2tJdGVtL1N0YWNrSXRlbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvU3RhY2svU3RhY2tVdGlscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvU3RhY2svU3RhY2suc3R5bGVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9TdGFjay9TdGFjay5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvVGVhY2hpbmdCdWJibGUvVGVhY2hpbmdCdWJibGVDb250ZW50LmJhc2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL1RlYWNoaW5nQnViYmxlL1RlYWNoaW5nQnViYmxlLnN0eWxlcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvVGVhY2hpbmdCdWJibGUvVGVhY2hpbmdCdWJibGVDb250ZW50LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9UZWFjaGluZ0J1YmJsZS9UZWFjaGluZ0J1YmJsZS5iYXNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbHVlbnR1aS9yZWFjdC9saWIvY29tcG9uZW50cy9UZWFjaGluZ0J1YmJsZS9UZWFjaGluZ0J1YmJsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmx1ZW50dWkvcmVhY3QvbGliL2NvbXBvbmVudHMvVGV4dC9UZXh0LnZpZXcuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL1RleHQvVGV4dC5zdHlsZXMuanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsdWVudHVpL3JlYWN0L2xpYi9jb21wb25lbnRzL1RleHQvVGV4dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9pbS9pbmRleC5lc20uanMiLCIuLi9zcmMvQ29tcG9uZW50cy9FbnZpcm9ubWVudEJhbm5lci50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9Ob3RpZmljYXRpb25zLnRzeCIsIi4uL3NyYy9Ib29rcy91c2VXaW5kb3dXaWR0aC50cyIsIi4uL3NyYy9QYWdlcy9CYXNlUGFnZS50c3giLCIuLi9zcmMvSGVscGVycy9EYXRlSGVscGVyLnRzIiwiLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWljb25zL2ZhL2luZGV4LmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9yZWFjdC1pY29ucy9icy9pbmRleC5lc20uanMiLCIuLi9zcmMvQ29tcG9uZW50cy9Ub29sdGlwLnRzeCIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Rvd25zaGlmdC9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Rvd25zaGlmdC9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvY29tcHV0ZS1zY3JvbGwtaW50by12aWV3L2Rpc3QvaW5kZXgubWpzIiwiLi4vbm9kZV9tb2R1bGVzL2Rvd25zaGlmdC9kaXN0L2Rvd25zaGlmdC5lc20uanMiLCIuLi9zcmMvQ29tcG9uZW50cy9GaWVsZHMvTG9va3VwRmllbGQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvQWR2YW5jZWRGaWx0ZXJQYW5lbC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9GaWx0ZXJUaWxlLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL01hbmFnZW1lbnRQYW5lbC50c3giLCIuLi9zcmMvSGVscGVycy90b0xvYWRpbmdEYXRhLnRzIiwiLi4vc3JjL0RhdGEvZ2V0Q2FzZXNGaWx0ZXJHcm91cHMudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvVGFibGVIZWFkZXJDZWxsLnRzeCIsIi4uL3NyYy9EYXRhL2dldENhc2VUYWJsZUhlYWRlckNlbGxzLnRzIiwiLi4vc3JjL0RhdGEvZ2V0Q2FzZXNTdW1tYXJ5U2VjdGlvbnMudHMiLCIuLi9zcmMvRW51bXMvRGF0ZVNpbmNlLnRzIiwiLi4vc3JjL0NvbXBvbmVudHMvTWFqb3JJbmNpZGVudEJhbm5lci50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lci50c3giLCIuLi9zcmMvUGFnZXMvQ2FzZXMudHN4IiwiLi4vc3JjL01vZGVscy9JbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUudHMiLCIuLi9zcmMvSGVscGVycy9uZXdHdWlkLnRzIiwiLi4vc3JjL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZS50cyIsIi4uL3NyYy9FbnVtcy9BY3Rpdml0eVN0YXRlQ29kZS50cyIsIi4uL3NyYy9FbnVtcy9EaXJlY3Rpb25Db2RlLnRzIiwiLi4vc3JjL0VudW1zL1BvcnRhbENvbW1lbnRTdGF0dXNDb2RlLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tQb3J0YWxDb21tZW50RGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrTWFqb3JJbmNpZGVudFVwZGF0ZURhdGEudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja1BvcnRhbEVtYWlsRGF0YS50cyIsIi4uL3NyYy9FbnVtcy9DYXNlVXJnZW5jeS50cyIsIi4uL3NyYy9FbnVtcy9DYXNlU2V2ZXJpdHlDb2RlLnRzIiwiLi4vc3JjL0VudW1zL0Nhc2VPcmlnaW5Db2RlLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tJbmNpZGVudERhdGEudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja1Byb2R1Y3REYXRhLnRzIiwiLi4vc3JjL0VudW1zL09yZGVyU3RhdGVDb2RlLnRzIiwiLi4vc3JjL0VudW1zL09yZGVyU3RhdHVzQ29kZS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrQmFzZTY0T3JkZXJGb3JtUERGLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tPcmRlckZvcm1EYXRhLnRzIiwiLi4vc3JjL0VudW1zL1Byb2R1Y3RUeXBlQ29kZS50cyIsIi4uL3NyYy9FbnVtcy9Qcm9qZWN0U3RhdGVDb2RlLnRzIiwiLi4vc3JjL0VudW1zL1Byb2plY3RTdGF0dXNDb2RlLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tQcm9qZWN0RGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrT3JkZXJMaW5lRGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrT3JkZXJEYXRhLnRzIiwiLi4vc3JjL0VudW1zL1BvcnRhbEludml0YXRpb25BdXRoZW50aWNhdGlvblR5cGUudHMiLCIuLi9zcmMvRW51bXMvUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGUudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja1BvcnRhbEludml0YXRpb25EYXRhLnRzIiwiLi4vc3JjL01vY2tEYXRhL01vY2tQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlRGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrQmxvZ1Bvc3REYXRhLnRzIiwiLi4vc3JjL0VudW1zL05ldHdvcmtPcmRlclN0YXRlQ29kZS50cyIsIi4uL3NyYy9FbnVtcy9OZXR3b3JrT3JkZXJTdGF0dXNDb2RlLnRzIiwiLi4vc3JjL0VudW1zL0N1c3RvbWVyQXNzZXRTdGF0ZUNvZGUudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja0N1c3RvbWVyQXNzZXREYXRhLnRzIiwiLi4vc3JjL0VudW1zL05ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlLnRzIiwiLi4vc3JjL0VudW1zL05ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZS50cyIsIi4uL3NyYy9FbnVtcy9OZXR3b3JrT3JkZXJTdGFnZVR5cGUudHMiLCIuLi9zcmMvTW9ja0RhdGEvTW9ja05ldHdvcmtPcmRlclN0YWdlRGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrTmV0d29ya09yZGVyRGF0YS50cyIsIi4uL3NyYy9Nb2NrRGF0YS9Nb2NrSW52b2ljZURhdGEudHMiLCIuLi9zcmMvSG9va3MvdXNlTW9ja0NydWRTZXJ2aWNlLnRzIiwiLi4vc3JjL01vZGVscy9Qcm9kdWN0LnRzIiwiLi4vc3JjL01vZGVscy9DdXN0b21lckFzc2V0LnRzIiwiLi4vc3JjL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsLnRzIiwiLi4vc3JjL01vZGVscy9BY3Rpdml0eVBhcnR5LnRzIiwiLi4vc3JjL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yQ3JlYXRlLnRzIiwiLi4vc3JjL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yVXBkYXRlLnRzIiwiLi4vc3JjL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsLnRzIiwiLi4vc3JjL01vZGVscy9BY2NvdW50LnRzIiwiLi4vc3JjL01vZGVscy9Qb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLnRzIiwiLi4vc3JjL01vZGVscy9Qb3J0YWxJbnZpdGF0aW9uLnRzIiwiLi4vc3JjL01vZGVscy9CbG9nUG9zdC50cyIsIi4uL3NyYy9Nb2RlbHMvQW5ub3RhdGlvbi50cyIsIi4uL3NyYy9Nb2RlbHMvT3JkZXJGb3JtLnRzIiwiLi4vc3JjL01vZGVscy9PcmRlcmxpbmUudHMiLCIuLi9zcmMvTW9kZWxzL09yZGVyLnRzIiwiLi4vc3JjL01vZGVscy9Qcm9qZWN0LnRzIiwiLi4vc3JjL01vZGVscy9JbmNpZGVudEZvckNyZWF0ZS50cyIsIi4uL3NyYy9Nb2RlbHMvTWFqb3JJbmNpZGVudFVwZGF0ZS50cyIsIi4uL3NyYy9Nb2RlbHMvUG9ydGFsRW1haWwudHMiLCIuLi9zcmMvTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmFsLnRzIiwiLi4vc3JjL01vZGVscy9JbmNpZGVudEZvclVwZGF0ZS50cyIsIi4uL3NyYy9Nb2RlbHMvQ29udGFjdEZvckNyZWF0ZS50cyIsIi4uL3NyYy9Nb2RlbHMvQ29udGFjdEZvclVwZGF0ZS50cyIsIi4uL3NyYy9Nb2RlbHMvTmV0d29ya09yZGVyRm9yVXBkYXRlLnRzIiwiLi4vc3JjL01vZGVscy9OZXR3b3JrT3JkZXJTdGFnZS50cyIsIi4uL3NyYy9Nb2RlbHMvTmV0d29ya09yZGVyRm9yUmV0cmlldmFsLnRzIiwiLi4vc3JjL01vZGVscy9OZXR3b3JrT3JkZXJGb3JSZXRyaWV2ZU11bHRpcGxlLnRzIiwiLi4vc3JjL01vZGVscy9Db250YWN0Rm9yVGVybXNBbmRDb25kaXRpb25zVXBkYXRlLnRzIiwiLi4vc3JjL01vZGVscy9JbnZvaWNlLnRzIiwiLi4vc3JjL0hvb2tzL3VzZURhdGFTZXJ2aWNlLnRzIiwiLi4vc3JjL0hvb2tzL3VzZUNsb3NlZENhc2VzLnRzeCIsIi4uL3NyYy9QYWdlcy9DYXNlc0Nsb3NlZC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9GaWVsZHMvRHJvcGRvd25GaWVsZC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9GaWVsZHMvTXVsdGlMaW5lU3RyaW5nRmllbGQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvRmllbGRzL1N0cmluZ0ZpZWxkLnRzeCIsIi4uL3NyYy9QYWdlcy9DYXNlc0NyZWF0ZS50c3giLCIuLi9zcmMvRGF0YS9nZXRDb250YWN0c0ZpbHRlckdyb3Vwcy50c3giLCIuLi9zcmMvRGF0YS9nZXRDb250YWN0c1N1bW1hcnlTZWN0aW9ucy50cyIsIi4uL3NyYy9EYXRhL2dldENvbnRhY3RUYWJsZUhlYWRlckNlbGxzLnRzIiwiLi4vc3JjL1BhZ2VzL0NvbnRhY3RzLnRzeCIsIi4uL3NyYy9QYWdlcy9DYXNlc01ham9ySW5jaWRlbnRzLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL0ZpZWxkcy9SYWRpb0J1dHRvbkJvb2xlYW5GaWVsZC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9GaWVsZHMvVGVsZXBob25lRmllbGQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvRmllbGRzL1BvcHVwTGlua0ZpZWxkLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL1RlYWNoaW5nQnViYmxlTXVsdGlTdGVwLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL01vZGFsLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL0J1dHRvbi50c3giLCIuLi9zcmMvUGFnZXMvQ2FsbFRvQWN0aW9uQmFzZVBhZ2UudHN4IiwiLi4vc3JjL1BhZ2VzL05vdEZvdW5kLnRzeCIsIi4uL3NyYy9IZWxwZXJzL3RvUGFydGlhbERpZmYudHMiLCIuLi9zcmMvSWNvbnMvRGlzbWlzc0NpcmNsZVJlZ3VsYXIudHN4IiwiLi4vc3JjL0ljb25zL1Blb3BsZUNvbW11bml0eVJlZ3VsYXIudHN4IiwiLi4vc3JjL0ljb25zL1BlcnNvblJlZ3VsYXIudHN4IiwiLi4vc3JjL0RhdGEvUGVybWlzc2lvbnMudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvU3ViTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnkudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvVG9wTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnkudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvUGVybWlzc2lvbnNQYW5lbC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9QZXJtaXNzaW9uTGV2ZWxTdW1tYXJ5LnRzeCIsIi4uL3NyYy9QYWdlcy9Db250YWN0c0VkaXQvQ29udGFjdHNFZGl0Q29udGVudC50c3giLCIuLi9zcmMvUGFnZXMvQ29udGFjdHNDcmVhdGUudHN4IiwiLi4vc3JjL1BhZ2VzL0NvbnRhY3RzRWRpdC9Db250YWN0c0VkaXRGcm9tSWQudHN4IiwiLi4vc3JjL1BhZ2VzL0NvbnRhY3RzRWRpdC9Db250YWN0c0VkaXQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvSG9tZVBhZ2VUaWxlLnRzeCIsIi4uL3NyYy9QYWdlcy9Ib21lLnRzeCIsIi4uL3NyYy9QYWdlcy9Qcm9maWxlLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL0RpYWxvZy50c3giLCIuLi9zcmMvUGFnZXMvVGVybXNBbmRDb25kaXRpb25zLnRzeCIsIi4uL3NyYy9QYWdlcy9EZXZNb2RlTGltaXRhdGlvbi50c3giLCIuLi9zcmMvUGFnZXMvRm9yYmlkZGVuLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL1RpbWVsaW5lQ2FyZERhdGUudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvVGltZWxpbmVDYXJkLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL0ZpZWxkcy9Db21tZW50RmllbGQudHN4IiwiLi4vc3JjL0VudW1zL1BhcnRpY2lwYXRpb25UeXBlTWFzay50cyIsIi4uL3NyYy9Db21wb25lbnRzL1RpbWVsaW5lQ29tbWVudENhcmQudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvVGltZWxpbmUudHN4IiwiLi4vc3JjL1BhZ2VzL0Nhc2VzRWRpdC9DYXNlc0VkaXRDb250ZW50LnRzeCIsIi4uL3NyYy9QYWdlcy9DYXNlc0VkaXQvQ2FzZXNFZGl0RnJvbUlkLnRzeCIsIi4uL3NyYy9QYWdlcy9DYXNlc0VkaXQvQ2FzZXNFZGl0LnRzeCIsIi4uL3NyYy9EYXRhL2dldE9yZGVyVGFibGVIZWFkZXJDZWxscy50c3giLCIuLi9zcmMvRGF0YS9nZXRPcmRlcnNGaWx0ZXJHcm91cC50c3giLCIuLi9zcmMvUGFnZXMvT3JkZXJzLnRzeCIsIi4uL3NyYy9IZWxwZXJzL0Zvcm1hdHRpbmdIZWxwZXIudHMiLCIuLi9zcmMvRGF0YS9nZXRPcmRlcmxpbmVUYWJsZUhlYWRlckNlbGxzLnRzIiwiLi4vc3JjL0NvbXBvbmVudHMvUGxhY2Vob2xkZXIudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvUHJvamVjdERldGFpbHNNb2RhbC50c3giLCIuLi9zcmMvUGFnZXMvT3JkZXJzRWRpdC9PcmRlcnNFZGl0Q29udGVudC50c3giLCIuLi9zcmMvUGFnZXMvT3JkZXJzRWRpdC9PcmRlcnNFZGl0RnJvbUlkLnRzeCIsIi4uL3NyYy9QYWdlcy9PcmRlcnNFZGl0L09yZGVyc0VkaXQudHN4IiwiLi4vc3JjL0hlbHBlcnMvdXNlckhhc1BvcnRhbEFjY2Vzcy50cyIsIi4uL3NyYy9Db21wb25lbnRzL1BvcHVwLnRzeCIsIi4uL3NyYy9Db21wb25lbnRzL05ldHdvcmtPcmRlclN0YWdlQ29tcG9uZW50LnRzeCIsIi4uL3NyYy9Ib29rcy91c2VTd2lwZUxpc3RlbmVyLnRzIiwiLi4vc3JjL0NvbXBvbmVudHMvQW5pbWF0ZS50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9Nb2JpbGVDYXJvdXNlbC50c3giLCIuLi9zcmMvUGFnZXMvTmV0d29ya09yZGVyc0VkaXQvTmV0d29ya09yZGVyc0VkaXRDb250ZW50LnRzeCIsIi4uL3NyYy9QYWdlcy9OZXR3b3JrT3JkZXJzRWRpdC9OZXR3b3JrT3JkZXJzRWRpdEZyb21JZC50c3giLCIuLi9zcmMvUGFnZXMvTmV0d29ya09yZGVyc0VkaXQvTmV0d29ya09yZGVyc0VkaXQudHN4IiwiLi4vc3JjL0RhdGEvZ2V0SW52b2ljZVRhYmxlSGVhZGVyQ2VsbHMudHN4IiwiLi4vc3JjL1BhZ2VzL0ludm9pY2VzLnRzeCIsIi4uL3NyYy9QYWdlcy9JbnZvaWNlc1ZpZXcvSW52b2ljZXNWaWV3Q29udGVudC50c3giLCIuLi9zcmMvUGFnZXMvSW52b2ljZXNWaWV3L0ludm9pY2VzVmlld0Zyb21JZC50c3giLCIuLi9zcmMvUGFnZXMvSW52b2ljZXNWaWV3L0ludm9pY2VzVmlldy50c3giLCIuLi9zcmMvSG9va3MvdXNlUGFnZU5hdmlnYXRpb24udHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvTmF2aWdhdGlvbkxpbmsudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvTmF2aWdhdGlvbk1lbnVHcm91cC50c3giLCIuLi9zcmMvQ29tcG9uZW50cy9OYXZpZ2F0aW9uUGFuZWwudHN4IiwiLi4vc3JjL0NvbXBvbmVudHMvRmVlZGJhY2tQYW5lLnRzeCIsIi4uL3NyYy9Ib29rcy91c2VEYXRhUmV0cmlldmFscy50c3giLCIuLi9zcmMvQXBwLnRzeCIsIi4uL25vZGVfbW9kdWxlcy9yZWR1eC9lcy9yZWR1eC5qcyIsIi4uL25vZGVfbW9kdWxlcy9pbW1lci9kaXN0L2ltbWVyLmVzbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanMvbGliL2Rpc3QvZXNtL2R5bmFtaWNwcm90by1qcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtc2hpbXMvZGlzdC1lc20vQ29uc3RhbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltcy9kaXN0LWVzbS9IZWxwZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltcy9kaXN0LWVzbS9Uc0xpYlNoaW1zLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL19fRHluYW1pY0NvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL0ludGVybmFsQ29uc3RhbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvSGVscGVyRnVuY3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy5FbnVtcy9FbnVtSGVscGVyRnVuY3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9FbnZVdGlscy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL0RiZ0V4dGVuc2lvblV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvRGlhZ25vc3RpY0xvZ2dlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL1BlcmZNYW5hZ2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvUmFuZG9tSGVscGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvRGF0YUNhY2hlSGVscGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvQ29va2llTWdyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvRXZlbnRIZWxwZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvQ29yZVV0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvVzNjVHJhY2VQYXJlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9UZWxlbWV0cnlIZWxwZXJzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9DaGFubmVsQ29udHJvbGxlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL1VubG9hZEhhbmRsZXJDb250YWluZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9CYXNlVGVsZW1ldHJ5UGx1Z2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4uanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9CYXNlQ29yZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL05vdGlmaWNhdGlvbk1hbmFnZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9BcHBJbnNpZ2h0c0NvcmUuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9JbnN0cnVtZW50SG9va3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9Db25zdGFudHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9Eb21IZWxwZXJGdW5jcy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uL2Rpc3QtZXNtL19fRHluYW1pY0NvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uL2Rpc3QtZXNtL0hlbHBlckZ1bmNzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vUmVxdWVzdFJlc3BvbnNlSGVhZGVycy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uL2Rpc3QtZXNtL0VudW1zLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vU3RvcmFnZUhlbHBlckZ1bmNzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L0NvbW1vbi9EYXRhU2FuaXRpemVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVXJsSGVscGVyRnVuY3MuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9VdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vQ29ubmVjdGlvblN0cmluZ1BhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uL2Rpc3QtZXNtL1RlbGVtZXRyeS9Db21tb24vRW52ZWxvcGUuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9UZWxlbWV0cnkvRXZlbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9UZWxlbWV0cnkvRXhjZXB0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L0NvbW1vbi9EYXRhUG9pbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9UZWxlbWV0cnkvTWV0cmljLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L1BhZ2VWaWV3LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L1JlbW90ZURlcGVuZGVuY3lEYXRhLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L1RyYWNlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vVGVsZW1ldHJ5L1BhZ2VWaWV3UGVyZm9ybWFuY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9UZWxlbWV0cnkvQ29tbW9uL0RhdGEuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9JbnRlcmZhY2VzL0NvbnRyYWN0cy9Db250ZXh0VGFnS2V5cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uL2Rpc3QtZXNtL1RlbGVtZXRyeUl0ZW1DcmVhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb24vZGlzdC1lc20vSW50ZXJmYWNlcy9QYXJ0QUV4dGVuc2lvbnMuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi9kaXN0LWVzbS9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzL2Rpc3QtZXNtL19fRHluYW1pY0NvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvVGVsZW1ldHJ5L1BhZ2VWaWV3TWFuYWdlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvVGVsZW1ldHJ5L1BhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1hbmFseXRpY3MtanMvZGlzdC1lc20vSmF2YVNjcmlwdFNESy9UZWxlbWV0cnkvUGFnZVZpc2l0VGltZU1hbmFnZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWFuYWx5dGljcy1qcy9kaXN0LWVzbS9KYXZhU2NyaXB0U0RLL1RpbWluZy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzL2Rpc3QtZXNtL0phdmFTY3JpcHRTREsvQW5hbHl0aWNzUGx1Z2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jaGFubmVsLWpzL2Rpc3QtZXNtL0ludGVybmFsQ29uc3RhbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jaGFubmVsLWpzL2Rpc3QtZXNtL19fRHluYW1pY0NvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY2hhbm5lbC1qcy9kaXN0LWVzbS9FbnZlbG9wZUNyZWF0b3IuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNoYW5uZWwtanMvZGlzdC1lc20vT2ZmbGluZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY2hhbm5lbC1qcy9kaXN0LWVzbS9TZW5kQnVmZmVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jaGFubmVsLWpzL2Rpc3QtZXNtL1NlcmlhbGl6ZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNoYW5uZWwtanMvZGlzdC1lc20vVGVsZW1ldHJ5UHJvY2Vzc29ycy9TYW1wbGluZ1Njb3JlR2VuZXJhdG9ycy9IYXNoQ29kZVNjb3JlR2VuZXJhdG9yLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jaGFubmVsLWpzL2Rpc3QtZXNtL1RlbGVtZXRyeVByb2Nlc3NvcnMvU2FtcGxpbmdTY29yZUdlbmVyYXRvcnMvU2FtcGxpbmdTY29yZUdlbmVyYXRvci5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY2hhbm5lbC1qcy9kaXN0LWVzbS9UZWxlbWV0cnlQcm9jZXNzb3JzL1NhbXBsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY2hhbm5lbC1qcy9kaXN0LWVzbS9TZW5kZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWRlcGVuZGVuY2llcy1qcy9kaXN0LWVzbS9JbnRlcm5hbENvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtZGVwZW5kZW5jaWVzLWpzL2Rpc3QtZXNtL19fRHluYW1pY0NvbnN0YW50cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtZGVwZW5kZW5jaWVzLWpzL2Rpc3QtZXNtL2FqYXhSZWNvcmQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWRlcGVuZGVuY2llcy1qcy9kaXN0LWVzbS9hamF4LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1wcm9wZXJ0aWVzLWpzL2Rpc3QtZXNtL0NvbnRleHQvQXBwbGljYXRpb24uanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMvZGlzdC1lc20vQ29udGV4dC9EZXZpY2UuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMvZGlzdC1lc20vX19EeW5hbWljQ29uc3RhbnRzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1wcm9wZXJ0aWVzLWpzL2Rpc3QtZXNtL0NvbnRleHQvSW50ZXJuYWwuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMvZGlzdC1lc20vQ29udGV4dC9Mb2NhdGlvbi5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qcy9kaXN0LWVzbS9Db250ZXh0L1Nlc3Npb24uanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMvZGlzdC1lc20vQ29udGV4dC9UZWxlbWV0cnlUcmFjZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qcy9kaXN0LWVzbS9Db250ZXh0L1VzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMvZGlzdC1lc20vVGVsZW1ldHJ5Q29udGV4dC5qcyIsIi4uL25vZGVfbW9kdWxlcy9AbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qcy9kaXN0LWVzbS9Qcm9wZXJ0aWVzUGx1Z2luLmpzIiwiLi4vbm9kZV9tb2R1bGVzL0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy13ZWIvZGlzdC1lc20vSW50ZXJuYWxDb25zdGFudHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXdlYi9kaXN0LWVzbS9fX0R5bmFtaWNDb25zdGFudHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXdlYi9kaXN0LWVzbS9Jbml0aWFsaXphdGlvbi5qcyIsIi4uL3NyYy9SZWR1Y2Vycy50cyIsIi4uL3NyYy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBsPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxwPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxyPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSx1PVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLHY9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHc9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLHg9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikseT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx6PVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBBKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT16JiZhW3pdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9XG52YXIgQj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQz1PYmplY3QuYXNzaWduLEQ9e307ZnVuY3Rpb24gRShhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfUUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e307XG5FLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihhLGIpe2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoXCJzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtFLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlPUUucHJvdG90eXBlO2Z1bmN0aW9uIEcoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn12YXIgSD1HLnByb3RvdHlwZT1uZXcgRjtcbkguY29uc3RydWN0b3I9RztDKEgsRS5wcm90b3R5cGUpO0guaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEk9QXJyYXkuaXNBcnJheSxKPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSz17Y3VycmVudDpudWxsfSxMPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBNKGEsYixlKXt2YXIgZCxjPXt9LGs9bnVsbCxoPW51bGw7aWYobnVsbCE9Yilmb3IoZCBpbiB2b2lkIDAhPT1iLnJlZiYmKGg9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoaz1cIlwiK2Iua2V5KSxiKUouY2FsbChiLGQpJiYhTC5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09YltkXSk7dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKWMuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zyl7Zm9yKHZhciBmPUFycmF5KGcpLG09MDttPGc7bSsrKWZbbV09YXJndW1lbnRzW20rMl07Yy5jaGlsZHJlbj1mfWlmKGEmJmEuZGVmYXVsdFByb3BzKWZvcihkIGluIGc9YS5kZWZhdWx0UHJvcHMsZyl2b2lkIDA9PT1jW2RdJiYoY1tkXT1nW2RdKTtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEsa2V5OmsscmVmOmgscHJvcHM6Yyxfb3duZXI6Sy5jdXJyZW50fX1cbmZ1bmN0aW9uIE4oYSxiKXtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YixyZWY6YS5yZWYscHJvcHM6YS5wcm9wcyxfb3duZXI6YS5fb3duZXJ9fWZ1bmN0aW9uIE8oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWx9ZnVuY3Rpb24gZXNjYXBlKGEpe3ZhciBiPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIithLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2c7ZnVuY3Rpb24gUShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShcIlwiK2Eua2V5KTpiLnRvU3RyaW5nKDM2KX1cbmZ1bmN0aW9uIFIoYSxiLGUsZCxjKXt2YXIgaz10eXBlb2YgYTtpZihcInVuZGVmaW5lZFwiPT09a3x8XCJib29sZWFuXCI9PT1rKWE9bnVsbDt2YXIgaD0hMTtpZihudWxsPT09YSloPSEwO2Vsc2Ugc3dpdGNoKGspe2Nhc2UgXCJzdHJpbmdcIjpjYXNlIFwibnVtYmVyXCI6aD0hMDticmVhaztjYXNlIFwib2JqZWN0XCI6c3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgbDpjYXNlIG46aD0hMH19aWYoaClyZXR1cm4gaD1hLGM9YyhoKSxhPVwiXCI9PT1kP1wiLlwiK1EoaCwwKTpkLEkoYyk/KGU9XCJcIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIiksUihjLGIsZSxcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfSkpOm51bGwhPWMmJihPKGMpJiYoYz1OKGMsZSsoIWMua2V5fHxoJiZoLmtleT09PWMua2V5P1wiXCI6KFwiXCIrYy5rZXkpLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIikrYSkpLGIucHVzaChjKSksMTtoPTA7ZD1cIlwiPT09ZD9cIi5cIjpkK1wiOlwiO2lmKEkoYSkpZm9yKHZhciBnPTA7ZzxhLmxlbmd0aDtnKyspe2s9XG5hW2ddO3ZhciBmPWQrUShrLGcpO2grPVIoayxiLGUsZixjKX1lbHNlIGlmKGY9QShhKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZilmb3IoYT1mLmNhbGwoYSksZz0wOyEoaz1hLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLGY9ZCtRKGssZysrKSxoKz1SKGssYixlLGYsYyk7ZWxzZSBpZihcIm9iamVjdFwiPT09ayl0aHJvdyBiPVN0cmluZyhhKSxFcnJvcihcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIrKFwiW29iamVjdCBPYmplY3RdXCI9PT1iP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmIpK1wiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIFMoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGQ9W10sYz0wO1IoYSxkLFwiXCIsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYi5jYWxsKGUsYSxjKyspfSk7cmV0dXJuIGR9ZnVuY3Rpb24gVChhKXtpZigtMT09PWEuX3N0YXR1cyl7dmFyIGI9YS5fcmVzdWx0O2I9YigpO2IudGhlbihmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yn0sZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTIsYS5fcmVzdWx0PWJ9KTstMT09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0wLGEuX3Jlc3VsdD1iKX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBhLl9yZXN1bHQ7fVxudmFyIFU9e2N1cnJlbnQ6bnVsbH0sVj17dHJhbnNpdGlvbjpudWxsfSxXPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOlUsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6VixSZWFjdEN1cnJlbnRPd25lcjpLfTtleHBvcnRzLkNoaWxkcmVuPXttYXA6Uyxmb3JFYWNoOmZ1bmN0aW9uKGEsYixlKXtTKGEsZnVuY3Rpb24oKXtiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZSl9LGNvdW50OmZ1bmN0aW9uKGEpe3ZhciBiPTA7UyhhLGZ1bmN0aW9uKCl7YisrfSk7cmV0dXJuIGJ9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIFMoYSxmdW5jdGlvbihhKXtyZXR1cm4gYX0pfHxbXX0sb25seTpmdW5jdGlvbihhKXtpZighTyhhKSl0aHJvdyBFcnJvcihcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiKTtyZXR1cm4gYX19O2V4cG9ydHMuQ29tcG9uZW50PUU7ZXhwb3J0cy5GcmFnbWVudD1wO1xuZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztleHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVc7XG5leHBvcnRzLmNsb25lRWxlbWVudD1mdW5jdGlvbihhLGIsZSl7aWYobnVsbD09PWF8fHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIithK1wiLlwiKTt2YXIgZD1DKHt9LGEucHJvcHMpLGM9YS5rZXksaz1hLnJlZixoPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZixoPUsuY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihjPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZz1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihmIGluIGIpSi5jYWxsKGIsZikmJiFMLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT12b2lkIDA9PT1iW2ZdJiZ2b2lkIDAhPT1nP2dbZl06YltmXSl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1mKWQuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zil7Zz1BcnJheShmKTtcbmZvcih2YXIgbT0wO208ZjttKyspZ1ttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWd9cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmMscmVmOmsscHJvcHM6ZCxfb3duZXI6aH19O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhKXthPXskJHR5cGVvZjp1LF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dCxfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O1xuZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp2LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO2V4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OlR9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eCx0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPVYudHJhbnNpdGlvbjtWLnRyYW5zaXRpb249e307dHJ5e2EoKX1maW5hbGx5e1YudHJhbnNpdGlvbj1ifX07ZXhwb3J0cy51bnN0YWJsZV9hY3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO307XG5leHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VDb250ZXh0KGEpfTtleHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtcbmV4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChhLGIpfTtleHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07XG5leHBvcnRzLnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZVRyYW5zaXRpb24oKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLGNhPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgZGE9bmV3IFNldCxlYT17fTtmdW5jdGlvbiBmYShhLGIpe2hhKGEsYik7aGEoYStcIkNhcHR1cmVcIixiKX1cbmZ1bmN0aW9uIGhhKGEsYil7ZWFbYV09Yjtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWRhLmFkZChiW2FdKX1cbnZhciBpYT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksamE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sbGE9XG57fSxtYT17fTtmdW5jdGlvbiBvYShhKXtpZihqYS5jYWxsKG1hLGEpKXJldHVybiEwO2lmKGphLmNhbGwobGEsYSkpcmV0dXJuITE7aWYoa2EudGVzdChhKSlyZXR1cm4gbWFbYV09ITA7bGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gcGEoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBxYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxwYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWY7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB6PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3pbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgcmE9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBzYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxcbnNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnoueGxpbmtIcmVmPW5ldyB2KFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbmZ1bmN0aW9uIHRhKGEsYixjLGQpe3ZhciBlPXouaGFzT3duUHJvcGVydHkoYik/eltiXTpudWxsO2lmKG51bGwhPT1lPzAhPT1lLnR5cGU6ZHx8ISgyPGIubGVuZ3RoKXx8XCJvXCIhPT1iWzBdJiZcIk9cIiE9PWJbMF18fFwiblwiIT09YlsxXSYmXCJOXCIhPT1iWzFdKXFhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9vYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSl9XG52YXIgdWE9YWEuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsdmE9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksd2E9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSx5YT1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksemE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLEFhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxCYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksQ2E9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksRGE9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLEVhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxGYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxHYT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7U3ltYm9sLmZvcihcInJlYWN0LmRlYnVnX3RyYWNlX21vZGVcIik7XG52YXIgSWE9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QuY2FjaGVcIik7U3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBKYT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gS2EoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPUphJiZhW0phXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfXZhciBBPU9iamVjdC5hc3NpZ24sTGE7ZnVuY3Rpb24gTWEoYSl7aWYodm9pZCAwPT09TGEpdHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGMpe3ZhciBiPWMuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TGE9YiYmYlsxXXx8XCJcIn1yZXR1cm5cIlxcblwiK0xhK2F9dmFyIE5hPSExO1xuZnVuY3Rpb24gT2EoYSxiKXtpZighYXx8TmEpcmV0dXJuXCJcIjtOYT0hMDt2YXIgYz1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKGIpaWYoYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO319KSxcIm9iamVjdFwiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2gobCl7dmFyIGQ9bH1SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGwpe2Q9bH1hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGwpe2Q9bH1hKCl9fWNhdGNoKGwpe2lmKGwmJmQmJlwic3RyaW5nXCI9PT10eXBlb2YgbC5zdGFjayl7Zm9yKHZhciBlPWwuc3RhY2suc3BsaXQoXCJcXG5cIiksXG5mPWQuc3RhY2suc3BsaXQoXCJcXG5cIiksZz1lLmxlbmd0aC0xLGg9Zi5sZW5ndGgtMTsxPD1nJiYwPD1oJiZlW2ddIT09ZltoXTspaC0tO2Zvcig7MTw9ZyYmMDw9aDtnLS0saC0tKWlmKGVbZ10hPT1mW2hdKXtpZigxIT09Z3x8MSE9PWgpe2RvIGlmKGctLSxoLS0sMD5ofHxlW2ddIT09ZltoXSl7dmFyIGs9XCJcXG5cIitlW2ddLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTthLmRpc3BsYXlOYW1lJiZrLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJihrPWsucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsYS5kaXNwbGF5TmFtZSkpO3JldHVybiBrfXdoaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtOYT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOlwiXCIpP01hKGEpOlwiXCJ9XG5mdW5jdGlvbiBQYShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gTWEoYS50eXBlKTtjYXNlIDE2OnJldHVybiBNYShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gTWEoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBNYShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGE9T2EoYS50eXBlLCExKSxhO2Nhc2UgMTE6cmV0dXJuIGE9T2EoYS50eXBlLnJlbmRlciwhMSksYTtjYXNlIDE6cmV0dXJuIGE9T2EoYS50eXBlLCEwKSxhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBRYShhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHlhOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHdhOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBYTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB6YTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIEVhOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEZhOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIENhOnJldHVybihhLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIEJhOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIERhOnZhciBiPWEucmVuZGVyO2E9YS5kaXNwbGF5TmFtZTthfHwoYT1iLmRpc3BsYXlOYW1lfHxcbmIubmFtZXx8XCJcIixhPVwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtyZXR1cm4gYTtjYXNlIEdhOnJldHVybiBiPWEuZGlzcGxheU5hbWV8fG51bGwsbnVsbCE9PWI/YjpRYShhLnR5cGUpfHxcIk1lbW9cIjtjYXNlIEhhOmI9YS5fcGF5bG9hZDthPWEuX2luaXQ7dHJ5e3JldHVybiBRYShhKGIpKX1jYXRjaChjKXt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS50eXBlO3N3aXRjaChhLnRhZyl7Y2FzZSAyNDpyZXR1cm5cIkNhY2hlXCI7Y2FzZSA5OnJldHVybihiLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIDEwOnJldHVybihiLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIDE4OnJldHVyblwiRGVoeWRyYXRlZEZyYWdtZW50XCI7Y2FzZSAxMTpyZXR1cm4gYT1iLnJlbmRlcixhPWEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJcIixiLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgNzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNDpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgMzpyZXR1cm5cIlJvb3RcIjtjYXNlIDY6cmV0dXJuXCJUZXh0XCI7Y2FzZSAxNjpyZXR1cm4gUWEoYik7Y2FzZSA4OnJldHVybiBiPT09emE/XCJTdHJpY3RNb2RlXCI6XCJNb2RlXCI7Y2FzZSAyMjpyZXR1cm5cIk9mZnNjcmVlblwiO1xuY2FzZSAxMjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSAyMTpyZXR1cm5cIlNjb3BlXCI7Y2FzZSAxMzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSAxOTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgMjU6cmV0dXJuXCJUcmFjaW5nTWFya2VyXCI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGIuZGlzcGxheU5hbWV8fGIubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2EoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2Nhc2UgXCJvYmplY3RcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gVGEoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFVhKGEpe3ZhciBiPVRhKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYShhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWEoYSkpfWZ1bmN0aW9uIFdhKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYShhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFhhKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1cbmZ1bmN0aW9uIFlhKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBBKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBaYShhLGIpe3ZhciBjPW51bGw9PWIuZGVmYXVsdFZhbHVlP1wiXCI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz1TYShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09Yi50eXBlfHxcInJhZGlvXCI9PT1iLnR5cGU/bnVsbCE9Yi5jaGVja2VkOm51bGwhPWIudmFsdWV9fWZ1bmN0aW9uIGFiKGEsYil7Yj1iLmNoZWNrZWQ7bnVsbCE9YiYmdGEoYSxcImNoZWNrZWRcIixiLCExKX1cbmZ1bmN0aW9uIGJiKGEsYil7YWIoYSxiKTt2YXIgYz1TYShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKFwibnVtYmVyXCI9PT1kKXtpZigwPT09YyYmXCJcIj09PWEudmFsdWV8fGEudmFsdWUhPWMpYS52YWx1ZT1cIlwiK2N9ZWxzZSBhLnZhbHVlIT09XCJcIitjJiYoYS52YWx1ZT1cIlwiK2MpO2Vsc2UgaWYoXCJzdWJtaXRcIj09PWR8fFwicmVzZXRcIj09PWQpe2EucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7cmV0dXJufWIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKT9jYihhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpJiZjYihhLGIudHlwZSxTYShiLmRlZmF1bHRWYWx1ZSkpO251bGw9PWIuY2hlY2tlZCYmbnVsbCE9Yi5kZWZhdWx0Q2hlY2tlZCYmKGEuZGVmYXVsdENoZWNrZWQ9ISFiLmRlZmF1bHRDaGVja2VkKX1cbmZ1bmN0aW9uIGRiKGEsYixjKXtpZihiLmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fGIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciBkPWIudHlwZTtpZighKFwic3VibWl0XCIhPT1kJiZcInJlc2V0XCIhPT1kfHx2b2lkIDAhPT1iLnZhbHVlJiZudWxsIT09Yi52YWx1ZSkpcmV0dXJuO2I9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lO1wiXCIhPT1jJiYoYS5uYW1lPVwiXCIpO2EuZGVmYXVsdENoZWNrZWQ9ISFhLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQ7XCJcIiE9PWMmJihhLm5hbWU9Yyl9XG5mdW5jdGlvbiBjYihhLGIsYyl7aWYoXCJudW1iZXJcIiE9PWJ8fFhhKGEub3duZXJEb2N1bWVudCkhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX12YXIgZWI9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIGZiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIitTYShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gZ2IoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHAoOTEpKTtyZXR1cm4gQSh7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcihwKDkyKSk7aWYoZWIoYykpe2lmKDE8Yy5sZW5ndGgpdGhyb3cgRXJyb3IocCg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOlNhKGMpfX1cbmZ1bmN0aW9uIGliKGEsYil7dmFyIGM9U2EoYi52YWx1ZSksZD1TYShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIGpiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24ga2IoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1cbmZ1bmN0aW9uIGxiKGEsYil7cmV0dXJuIG51bGw9PWF8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9rYihiKTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hJiZcImZvcmVpZ25PYmplY3RcIj09PWI/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6YX1cbnZhciBtYixuYj1mdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihiLGMsZCxlKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBhKGIsYyxkLGUpfSl9OmF9KGZ1bmN0aW9uKGEsYil7aWYoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkl8fFwiaW5uZXJIVE1MXCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXttYj1tYnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTttYi5pbm5lckhUTUw9XCI8c3ZnPlwiK2IudmFsdWVPZigpLnRvU3RyaW5nKCkrXCI8L3N2Zz5cIjtmb3IoYj1tYi5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSk7XG5mdW5jdGlvbiBvYihhLGIpe2lmKGIpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJjM9PT1jLm5vZGVUeXBlKXtjLm5vZGVWYWx1ZT1iO3JldHVybn19YS50ZXh0Q29udGVudD1ifVxudmFyIHBiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsXG56b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHFiPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyhwYikuZm9yRWFjaChmdW5jdGlvbihhKXtxYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO3BiW2JdPXBiW2FdfSl9KTtmdW5jdGlvbiByYihhLGIsYyl7cmV0dXJuIG51bGw9PWJ8fFwiYm9vbGVhblwiPT09dHlwZW9mIGJ8fFwiXCI9PT1iP1wiXCI6Y3x8XCJudW1iZXJcIiE9PXR5cGVvZiBifHwwPT09Ynx8cGIuaGFzT3duUHJvcGVydHkoYSkmJnBiW2FdPyhcIlwiK2IpLnRyaW0oKTpiK1wicHhcIn1cbmZ1bmN0aW9uIHNiKGEsYil7YT1hLnN0eWxlO2Zvcih2YXIgYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe3ZhciBkPTA9PT1jLmluZGV4T2YoXCItLVwiKSxlPXJiKGMsYltjXSxkKTtcImZsb2F0XCI9PT1jJiYoYz1cImNzc0Zsb2F0XCIpO2Q/YS5zZXRQcm9wZXJ0eShjLGUpOmFbY109ZX19dmFyIHRiPUEoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7XG5mdW5jdGlvbiB1YihhLGIpe2lmKGIpe2lmKHRiW2FdJiYobnVsbCE9Yi5jaGlsZHJlbnx8bnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCgxMzcsYSkpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IocCg2MCkpO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTHx8IShcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IocCg2MikpO319XG5mdW5jdGlvbiB2YihhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHdiPW51bGw7ZnVuY3Rpb24geGIoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfXZhciB5Yj1udWxsLHpiPW51bGwsQWI9bnVsbDtcbmZ1bmN0aW9uIEJiKGEpe2lmKGE9Q2IoYSkpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiB5Yil0aHJvdyBFcnJvcihwKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPURiKGIpLHliKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIEViKGEpe3piP0FiP0FiLnB1c2goYSk6QWI9W2FdOnpiPWF9ZnVuY3Rpb24gRmIoKXtpZih6Yil7dmFyIGE9emIsYj1BYjtBYj16Yj1udWxsO0JiKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylCYihiW2FdKX19ZnVuY3Rpb24gR2IoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBIYigpe312YXIgSWI9ITE7ZnVuY3Rpb24gSmIoYSxiLGMpe2lmKEliKXJldHVybiBhKGIsYyk7SWI9ITA7dHJ5e3JldHVybiBHYihhLGIsYyl9ZmluYWxseXtpZihJYj0hMSxudWxsIT09emJ8fG51bGwhPT1BYilIYigpLEZiKCl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZihudWxsPT09YylyZXR1cm4gbnVsbDt2YXIgZD1EYihjKTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09XG50eXBlb2YgYyl0aHJvdyBFcnJvcihwKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIExiPSExO2lmKGlhKXRyeXt2YXIgTWI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1iLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtMYj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpfWNhdGNoKGEpe0xiPSExfWZ1bmN0aW9uIE5iKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBPYj0hMSxQYj1udWxsLFFiPSExLFJiPW51bGwsU2I9e29uRXJyb3I6ZnVuY3Rpb24oYSl7T2I9ITA7UGI9YX19O2Z1bmN0aW9uIFRiKGEsYixjLGQsZSxmLGcsaCxrKXtPYj0hMTtQYj1udWxsO05iLmFwcGx5KFNiLGFyZ3VtZW50cyl9XG5mdW5jdGlvbiBVYihhLGIsYyxkLGUsZixnLGgsayl7VGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE9iKXtpZihPYil7dmFyIGw9UGI7T2I9ITE7UGI9bnVsbH1lbHNlIHRocm93IEVycm9yKHAoMTk4KSk7UWJ8fChRYj0hMCxSYj1sKX19ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmZsYWdzJjQwOTgpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBXYihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIFhiKGEpe2lmKFZiKGEpIT09YSl0aHJvdyBFcnJvcihwKDE4OCkpO31cbmZ1bmN0aW9uIFliKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPVZiKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIFhiKGUpLGE7aWYoZj09PWQpcmV0dXJuIFhiKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IocCgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcihwKDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHAoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gWmIoYSl7YT1ZYihhKTtyZXR1cm4gbnVsbCE9PWE/JGIoYSk6bnVsbH1mdW5jdGlvbiAkYihhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO251bGwhPT1hOyl7dmFyIGI9JGIoYSk7aWYobnVsbCE9PWIpcmV0dXJuIGI7YT1hLnNpYmxpbmd9cmV0dXJuIG51bGx9XG52YXIgYWM9Y2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxiYz1jYS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxjYz1jYS51bnN0YWJsZV9zaG91bGRZaWVsZCxkYz1jYS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsQj1jYS51bnN0YWJsZV9ub3csZWM9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZmM9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZ2M9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksaGM9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksaWM9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksamM9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGtjPW51bGwsbGM9bnVsbDtmdW5jdGlvbiBtYyhhKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJSb290KXRyeXtsYy5vbkNvbW1pdEZpYmVyUm9vdChrYyxhLHZvaWQgMCwxMjg9PT0oYS5jdXJyZW50LmZsYWdzJjEyOCkpfWNhdGNoKGIpe319XG52YXIgb2M9TWF0aC5jbHozMj9NYXRoLmNsejMyOm5jLHBjPU1hdGgubG9nLHFjPU1hdGguTE4yO2Z1bmN0aW9uIG5jKGEpe2E+Pj49MDtyZXR1cm4gMD09PWE/MzI6MzEtKHBjKGEpL3FjfDApfDB9dmFyIHJjPTY0LHNjPTQxOTQzMDQ7XG5mdW5jdGlvbiB0YyhhKXtzd2l0Y2goYSYtYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGEmNDE5NDI0MDtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiBhJjEzMDAyMzQyNDtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7XG5kZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB1YyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiAwO3ZhciBkPTAsZT1hLnN1c3BlbmRlZExhbmVzLGY9YS5waW5nZWRMYW5lcyxnPWMmMjY4NDM1NDU1O2lmKDAhPT1nKXt2YXIgaD1nJn5lOzAhPT1oP2Q9dGMoaCk6KGYmPWcsMCE9PWYmJihkPXRjKGYpKSl9ZWxzZSBnPWMmfmUsMCE9PWc/ZD10YyhnKTowIT09ZiYmKGQ9dGMoZikpO2lmKDA9PT1kKXJldHVybiAwO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmUpJiYoZT1kJi1kLGY9YiYtYixlPj1mfHwxNj09PWUmJjAhPT0oZiY0MTk0MjQwKSkpcmV0dXJuIGI7MCE9PShkJjQpJiYoZHw9YyYxNik7Yj1hLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1iKWZvcihhPWEuZW50YW5nbGVtZW50cyxiJj1kOzA8YjspYz0zMS1vYyhiKSxlPTE8PGMsZHw9YVtjXSxiJj1+ZTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZjKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBiKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGIrNUUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fVxuZnVuY3Rpb24gd2MoYSxiKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxkPWEucGluZ2VkTGFuZXMsZT1hLmV4cGlyYXRpb25UaW1lcyxmPWEucGVuZGluZ0xhbmVzOzA8Zjspe3ZhciBnPTMxLW9jKGYpLGg9MTw8ZyxrPWVbZ107aWYoLTE9PT1rKXtpZigwPT09KGgmYyl8fDAhPT0oaCZkKSllW2ddPXZjKGgsYil9ZWxzZSBrPD1iJiYoYS5leHBpcmVkTGFuZXN8PWgpO2YmPX5ofX1mdW5jdGlvbiB4YyhhKXthPWEucGVuZGluZ0xhbmVzJi0xMDczNzQxODI1O3JldHVybiAwIT09YT9hOmEmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24geWMoKXt2YXIgYT1yYztyYzw8PTE7MD09PShyYyY0MTk0MjQwKSYmKHJjPTY0KTtyZXR1cm4gYX1mdW5jdGlvbiB6YyhhKXtmb3IodmFyIGI9W10sYz0wOzMxPmM7YysrKWIucHVzaChhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFjKGEsYixjKXthLnBlbmRpbmdMYW5lc3w9Yjs1MzY4NzA5MTIhPT1iJiYoYS5zdXNwZW5kZWRMYW5lcz0wLGEucGluZ2VkTGFuZXM9MCk7YT1hLmV2ZW50VGltZXM7Yj0zMS1vYyhiKTthW2JdPWN9ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcyZ+YjthLnBlbmRpbmdMYW5lcz1iO2Euc3VzcGVuZGVkTGFuZXM9MDthLnBpbmdlZExhbmVzPTA7YS5leHBpcmVkTGFuZXMmPWI7YS5tdXRhYmxlUmVhZExhbmVzJj1iO2EuZW50YW5nbGVkTGFuZXMmPWI7Yj1hLmVudGFuZ2xlbWVudHM7dmFyIGQ9YS5ldmVudFRpbWVzO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yzspe3ZhciBlPTMxLW9jKGMpLGY9MTw8ZTtiW2VdPTA7ZFtlXT0tMTthW2VdPS0xO2MmPX5mfX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9YS5lbnRhbmdsZWRMYW5lc3w9Yjtmb3IoYT1hLmVudGFuZ2xlbWVudHM7Yzspe3ZhciBkPTMxLW9jKGMpLGU9MTw8ZDtlJmJ8YVtkXSZiJiYoYVtkXXw9Yik7YyY9fmV9fXZhciBDPTA7ZnVuY3Rpb24gRGMoYSl7YSY9LWE7cmV0dXJuIDE8YT80PGE/MCE9PShhJjI2ODQzNTQ1NSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgRWMsRmMsR2MsSGMsSWMsSmM9ITEsS2M9W10sTGM9bnVsbCxNYz1udWxsLE5jPW51bGwsT2M9bmV3IE1hcCxQYz1uZXcgTWFwLFFjPVtdLFJjPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIFNjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6TGM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOk1jPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOk5jPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpPYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpQYy5kZWxldGUoYi5wb2ludGVySWQpfX1cbmZ1bmN0aW9uIFRjKGEsYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9e2Jsb2NrZWRPbjpiLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6ZCxuYXRpdmVFdmVudDpmLHRhcmdldENvbnRhaW5lcnM6W2VdfSxudWxsIT09YiYmKGI9Q2IoYiksbnVsbCE9PWImJkZjKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7c3dpdGNoKGIpe2Nhc2UgXCJmb2N1c2luXCI6cmV0dXJuIExjPVRjKExjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBNYz1UYyhNYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gTmM9VGMoTmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtPYy5zZXQoZixUYyhPYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsUGMuc2V0KGYsVGMoUGMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gVmMoYSl7dmFyIGI9V2MoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYihiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1XYihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtJYyhhLnByaW9yaXR5LGZ1bmN0aW9uKCl7R2MoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfVxuZnVuY3Rpb24gWGMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPVljKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGw9PT1jKXtjPWEubmF0aXZlRXZlbnQ7dmFyIGQ9bmV3IGMuY29uc3RydWN0b3IoYy50eXBlLGMpO3diPWQ7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChkKTt3Yj1udWxsfWVsc2UgcmV0dXJuIGI9Q2IoYyksbnVsbCE9PWImJkZjKGIpLGEuYmxvY2tlZE9uPWMsITE7Yi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIFpjKGEsYixjKXtYYyhhKSYmYy5kZWxldGUoYil9ZnVuY3Rpb24gJGMoKXtKYz0hMTtudWxsIT09TGMmJlhjKExjKSYmKExjPW51bGwpO251bGwhPT1NYyYmWGMoTWMpJiYoTWM9bnVsbCk7bnVsbCE9PU5jJiZYYyhOYykmJihOYz1udWxsKTtPYy5mb3JFYWNoKFpjKTtQYy5mb3JFYWNoKFpjKX1cbmZ1bmN0aW9uIGFkKGEsYil7YS5ibG9ja2VkT249PT1iJiYoYS5ibG9ja2VkT249bnVsbCxKY3x8KEpjPSEwLGNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soY2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksJGMpKSl9XG5mdW5jdGlvbiBiZChhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhZChiLGEpfWlmKDA8S2MubGVuZ3RoKXthZChLY1swXSxhKTtmb3IodmFyIGM9MTtjPEtjLmxlbmd0aDtjKyspe3ZhciBkPUtjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09TGMmJmFkKExjLGEpO251bGwhPT1NYyYmYWQoTWMsYSk7bnVsbCE9PU5jJiZhZChOYyxhKTtPYy5mb3JFYWNoKGIpO1BjLmZvckVhY2goYik7Zm9yKGM9MDtjPFFjLmxlbmd0aDtjKyspZD1RY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8UWMubGVuZ3RoJiYoYz1RY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylWYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJlFjLnNoaWZ0KCl9dmFyIGNkPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGRkPSEwO1xuZnVuY3Rpb24gZWQoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTEsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1mdW5jdGlvbiBnZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9NCxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fVxuZnVuY3Rpb24gZmQoYSxiLGMsZCl7aWYoZGQpe3ZhciBlPVljKGEsYixjLGQpO2lmKG51bGw9PT1lKWhkKGEsYixkLGlkLGMpLFNjKGEsZCk7ZWxzZSBpZihVYyhlLGEsYixjLGQpKWQuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihTYyhhLGQpLGImNCYmLTE8UmMuaW5kZXhPZihhKSl7Zm9yKDtudWxsIT09ZTspe3ZhciBmPUNiKGUpO251bGwhPT1mJiZFYyhmKTtmPVljKGEsYixjLGQpO251bGw9PT1mJiZoZChhLGIsZCxpZCxjKTtpZihmPT09ZSlicmVhaztlPWZ9bnVsbCE9PWUmJmQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBoZChhLGIsZCxudWxsLGMpfX12YXIgaWQ9bnVsbDtcbmZ1bmN0aW9uIFljKGEsYixjLGQpe2lkPW51bGw7YT14YihkKTthPVdjKGEpO2lmKG51bGwhPT1hKWlmKGI9VmIoYSksbnVsbD09PWIpYT1udWxsO2Vsc2UgaWYoYz1iLnRhZywxMz09PWMpe2E9V2IoYik7aWYobnVsbCE9PWEpcmV0dXJuIGE7YT1udWxsfWVsc2UgaWYoMz09PWMpe2lmKGIuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1iLnRhZz9iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7YT1udWxsfWVsc2UgYiE9PWEmJihhPW51bGwpO2lkPWE7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBqZChhKXtzd2l0Y2goYSl7Y2FzZSBcImNhbmNlbFwiOmNhc2UgXCJjbGlja1wiOmNhc2UgXCJjbG9zZVwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcImtleXVwXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcInBhc3RlXCI6Y2FzZSBcInBhdXNlXCI6Y2FzZSBcInBsYXlcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVydXBcIjpjYXNlIFwicmF0ZWNoYW5nZVwiOmNhc2UgXCJyZXNldFwiOmNhc2UgXCJyZXNpemVcIjpjYXNlIFwic2Vla2VkXCI6Y2FzZSBcInN1Ym1pdFwiOmNhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6Y2FzZSBcInZvbHVtZWNoYW5nZVwiOmNhc2UgXCJjaGFuZ2VcIjpjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZSBcInRleHRJbnB1dFwiOmNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6Y2FzZSBcImJlZm9yZWlucHV0XCI6Y2FzZSBcImJsdXJcIjpjYXNlIFwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2UgXCJmb2N1c1wiOmNhc2UgXCJoYXNoY2hhbmdlXCI6Y2FzZSBcInBvcHN0YXRlXCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJzZWxlY3RzdGFydFwiOnJldHVybiAxO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInNjcm9sbFwiOmNhc2UgXCJ0b2dnbGVcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcIndoZWVsXCI6Y2FzZSBcIm1vdXNlZW50ZXJcIjpjYXNlIFwibW91c2VsZWF2ZVwiOmNhc2UgXCJwb2ludGVyZW50ZXJcIjpjYXNlIFwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDQ7XG5jYXNlIFwibWVzc2FnZVwiOnN3aXRjaChlYygpKXtjYXNlIGZjOnJldHVybiAxO2Nhc2UgZ2M6cmV0dXJuIDQ7Y2FzZSBoYzpjYXNlIGljOnJldHVybiAxNjtjYXNlIGpjOnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gMTZ9ZGVmYXVsdDpyZXR1cm4gMTZ9fXZhciBrZD1udWxsLGxkPW51bGwsbWQ9bnVsbDtmdW5jdGlvbiBuZCgpe2lmKG1kKXJldHVybiBtZDt2YXIgYSxiPWxkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIG1kPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9XG5mdW5jdGlvbiBvZChhKXt2YXIgYj1hLmtleUNvZGU7XCJjaGFyQ29kZVwiaW4gYT8oYT1hLmNoYXJDb2RlLDA9PT1hJiYxMz09PWImJihhPTEzKSk6YT1iOzEwPT09YSYmKGE9MTMpO3JldHVybiAzMjw9YXx8MTM9PT1hP2E6MH1mdW5jdGlvbiBwZCgpe3JldHVybiEwfWZ1bmN0aW9uIHFkKCl7cmV0dXJuITF9XG5mdW5jdGlvbiByZChhKXtmdW5jdGlvbiBiKGIsZCxlLGYsZyl7dGhpcy5fcmVhY3ROYW1lPWI7dGhpcy5fdGFyZ2V0SW5zdD1lO3RoaXMudHlwZT1kO3RoaXMubmF0aXZlRXZlbnQ9Zjt0aGlzLnRhcmdldD1nO3RoaXMuY3VycmVudFRhcmdldD1udWxsO2Zvcih2YXIgYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9wZDpxZDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXFkO3JldHVybiB0aGlzfUEoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJlxuKGEucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmKGEuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXBkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnBkfSk7cmV0dXJuIGJ9XG52YXIgc2Q9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdGQ9cmQoc2QpLHVkPUEoe30sc2Qse3ZpZXc6MCxkZXRhaWw6MH0pLHZkPXJkKHVkKSx3ZCx4ZCx5ZCxBZD1BKHt9LHVkLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnJlbGF0ZWRUYXJnZXQ/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpblxuYSlyZXR1cm4gYS5tb3ZlbWVudFg7YSE9PXlkJiYoeWQmJlwibW91c2Vtb3ZlXCI9PT1hLnR5cGU/KHdkPWEuc2NyZWVuWC15ZC5zY3JlZW5YLHhkPWEuc2NyZWVuWS15ZC5zY3JlZW5ZKTp4ZD13ZD0wLHlkPWEpO3JldHVybiB3ZH0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe3JldHVyblwibW92ZW1lbnRZXCJpbiBhP2EubW92ZW1lbnRZOnhkfX0pLEJkPXJkKEFkKSxDZD1BKHt9LEFkLHtkYXRhVHJhbnNmZXI6MH0pLERkPXJkKENkKSxFZD1BKHt9LHVkLHtyZWxhdGVkVGFyZ2V0OjB9KSxGZD1yZChFZCksR2Q9QSh7fSxzZCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksSGQ9cmQoR2QpLElkPUEoe30sc2Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxKZD1yZChJZCksS2Q9QSh7fSxzZCx7ZGF0YTowfSksTGQ9cmQoS2QpLE1kPXtFc2M6XCJFc2NhcGVcIixcblNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LE5kPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLFxuMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxPZD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gUGQoYSl7dmFyIGI9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gYi5nZXRNb2RpZmllclN0YXRlP2IuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1PZFthXSk/ISFiW2FdOiExfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIFBkfVxudmFyIFFkPUEoe30sdWQse2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9TWRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2QoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP05kW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6emQsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlP29kKGEpOjB9LGtleUNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2QoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxSZD1yZChRZCksU2Q9QSh7fSxBZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxUZD1yZChTZCksVWQ9QSh7fSx1ZCx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkfSksVmQ9cmQoVWQpLFdkPUEoe30sc2Qse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksWGQ9cmQoV2QpLFlkPUEoe30sQWQse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LFxuZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFZXCJpbiBhP2EuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGE/LWEud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBhPy1hLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxaZD1yZChZZCksJGQ9WzksMTMsMjcsMzJdLGFlPWlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxiZT1udWxsO2lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihiZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBjZT1pYSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIWJlLGRlPWlhJiYoIWFlfHxiZSYmODxiZSYmMTE+PWJlKSxlZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxmZT0hMTtcbmZ1bmN0aW9uIGdlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJrZXl1cFwiOnJldHVybi0xIT09JGQuaW5kZXhPZihiLmtleUNvZGUpO2Nhc2UgXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PWIua2V5Q29kZTtjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaGUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgaWU9ITE7ZnVuY3Rpb24gamUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGhlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtmZT0hMDtyZXR1cm4gZWU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09ZWUmJmZlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGtlKGEsYil7aWYoaWUpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWFlJiZnZShhLGIpPyhhPW5kKCksbWQ9bGQ9a2Q9bnVsbCxpZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gZGUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIGxlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG1lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhbGVbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfWZ1bmN0aW9uIG5lKGEsYixjLGQpe0ViKGQpO2I9b2UoYixcIm9uQ2hhbmdlXCIpOzA8Yi5sZW5ndGgmJihjPW5ldyB0ZChcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLGMsZCksYS5wdXNoKHtldmVudDpjLGxpc3RlbmVyczpifSkpfXZhciBwZT1udWxsLHFlPW51bGw7ZnVuY3Rpb24gcmUoYSl7c2UoYSwwKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj11ZShhKTtpZihXYShiKSlyZXR1cm4gYX1cbmZ1bmN0aW9uIHZlKGEsYil7aWYoXCJjaGFuZ2VcIj09PWEpcmV0dXJuIGJ9dmFyIHdlPSExO2lmKGlhKXt2YXIgeGU7aWYoaWEpe3ZhciB5ZT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCF5ZSl7dmFyIHplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7emUuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKTt5ZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgemUub25pbnB1dH14ZT15ZX1lbHNlIHhlPSExO3dlPXhlJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIEFlKCl7cGUmJihwZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkscWU9cGU9bnVsbCl9ZnVuY3Rpb24gQmUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJnRlKHFlKSl7dmFyIGI9W107bmUoYixxZSxhLHhiKGEpKTtKYihyZSxiKX19XG5mdW5jdGlvbiBDZShhLGIsYyl7XCJmb2N1c2luXCI9PT1hPyhBZSgpLHBlPWIscWU9YyxwZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkpOlwiZm9jdXNvdXRcIj09PWEmJkFlKCl9ZnVuY3Rpb24gRGUoYSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWF8fFwia2V5dXBcIj09PWF8fFwia2V5ZG93blwiPT09YSlyZXR1cm4gdGUocWUpfWZ1bmN0aW9uIEVlKGEsYil7aWYoXCJjbGlja1wiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gRmUoYSxiKXtpZihcImlucHV0XCI9PT1hfHxcImNoYW5nZVwiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBIZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpHZTtcbmZ1bmN0aW9uIEllKGEsYil7aWYoSGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2lmKCFqYS5jYWxsKGIsZSl8fCFIZShhW2VdLGJbZV0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEplKGEpe2Zvcig7YSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX1cbmZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9SmUoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9SmUoYyl9fWZ1bmN0aW9uIExlKGEsYil7cmV0dXJuIGEmJmI/YT09PWI/ITA6YSYmMz09PWEubm9kZVR5cGU/ITE6YiYmMz09PWIubm9kZVR5cGU/TGUoYSxiLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGE/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpOiExOiExfVxuZnVuY3Rpb24gTWUoKXtmb3IodmFyIGE9d2luZG93LGI9WGEoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9WGEoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gTmUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoXCJpbnB1dFwiPT09YiYmKFwidGV4dFwiPT09YS50eXBlfHxcInNlYXJjaFwiPT09YS50eXBlfHxcInRlbFwiPT09YS50eXBlfHxcInVybFwiPT09YS50eXBlfHxcInBhc3N3b3JkXCI9PT1hLnR5cGUpfHxcInRleHRhcmVhXCI9PT1ifHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKX1cbmZ1bmN0aW9uIE9lKGEpe3ZhciBiPU1lKCksYz1hLmZvY3VzZWRFbGVtLGQ9YS5zZWxlY3Rpb25SYW5nZTtpZihiIT09YyYmYyYmYy5vd25lckRvY3VtZW50JiZMZShjLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGMpKXtpZihudWxsIT09ZCYmTmUoYykpaWYoYj1kLnN0YXJ0LGE9ZC5lbmQsdm9pZCAwPT09YSYmKGE9YiksXCJzZWxlY3Rpb25TdGFydFwiaW4gYyljLnNlbGVjdGlvblN0YXJ0PWIsYy5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oYSxjLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihhPShiPWMub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZiLmRlZmF1bHRWaWV3fHx3aW5kb3csYS5nZXRTZWxlY3Rpb24pe2E9YS5nZXRTZWxlY3Rpb24oKTt2YXIgZT1jLnRleHRDb250ZW50Lmxlbmd0aCxmPU1hdGgubWluKGQuc3RhcnQsZSk7ZD12b2lkIDA9PT1kLmVuZD9mOk1hdGgubWluKGQuZW5kLGUpOyFhLmV4dGVuZCYmZj5kJiYoZT1kLGQ9ZixmPWUpO2U9S2UoYyxmKTt2YXIgZz1LZShjLFxuZCk7ZSYmZyYmKDEhPT1hLnJhbmdlQ291bnR8fGEuYW5jaG9yTm9kZSE9PWUubm9kZXx8YS5hbmNob3JPZmZzZXQhPT1lLm9mZnNldHx8YS5mb2N1c05vZGUhPT1nLm5vZGV8fGEuZm9jdXNPZmZzZXQhPT1nLm9mZnNldCkmJihiPWIuY3JlYXRlUmFuZ2UoKSxiLnNldFN0YXJ0KGUubm9kZSxlLm9mZnNldCksYS5yZW1vdmVBbGxSYW5nZXMoKSxmPmQ/KGEuYWRkUmFuZ2UoYiksYS5leHRlbmQoZy5ub2RlLGcub2Zmc2V0KSk6KGIuc2V0RW5kKGcubm9kZSxnLm9mZnNldCksYS5hZGRSYW5nZShiKSkpfWI9W107Zm9yKGE9YzthPWEucGFyZW50Tm9kZTspMT09PWEubm9kZVR5cGUmJmIucHVzaCh7ZWxlbWVudDphLGxlZnQ6YS5zY3JvbGxMZWZ0LHRvcDphLnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmZvY3VzJiZjLmZvY3VzKCk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhPWJbY10sYS5lbGVtZW50LnNjcm9sbExlZnQ9YS5sZWZ0LGEuZWxlbWVudC5zY3JvbGxUb3A9YS50b3B9fVxudmFyIFBlPWlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsUWU9bnVsbCxSZT1udWxsLFNlPW51bGwsVGU9ITE7XG5mdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9Yy53aW5kb3c9PT1jP2MuZG9jdW1lbnQ6OT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQ7VGV8fG51bGw9PVFlfHxRZSE9PVhhKGQpfHwoZD1RZSxcInNlbGVjdGlvblN0YXJ0XCJpbiBkJiZOZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGQ9e2FuY2hvck5vZGU6ZC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpkLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ZC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ZC5mb2N1c09mZnNldH0pLFNlJiZJZShTZSxkKXx8KFNlPWQsZD1vZShSZSxcIm9uU2VsZWN0XCIpLDA8ZC5sZW5ndGgmJihiPW5ldyB0ZChcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLGIsYyksYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpkfSksYi50YXJnZXQ9UWUpKSl9XG5mdW5jdGlvbiBWZShhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBXZT17YW5pbWF0aW9uZW5kOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6VmUoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxYZT17fSxZZT17fTtcbmlhJiYoWWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgV2UuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgV2UudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBaZShhKXtpZihYZVthXSlyZXR1cm4gWGVbYV07aWYoIVdlW2FdKXJldHVybiBhO3ZhciBiPVdlW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFllKXJldHVybiBYZVthXT1iW2NdO3JldHVybiBhfXZhciAkZT1aZShcImFuaW1hdGlvbmVuZFwiKSxhZj1aZShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxiZj1aZShcImFuaW1hdGlvbnN0YXJ0XCIpLGNmPVplKFwidHJhbnNpdGlvbmVuZFwiKSxkZj1uZXcgTWFwLGVmPVwiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBmZihhLGIpe2RmLnNldChhLGIpO2ZhKGIsW2FdKX1mb3IodmFyIGdmPTA7Z2Y8ZWYubGVuZ3RoO2dmKyspe3ZhciBoZj1lZltnZl0samY9aGYudG9Mb3dlckNhc2UoKSxrZj1oZlswXS50b1VwcGVyQ2FzZSgpK2hmLnNsaWNlKDEpO2ZmKGpmLFwib25cIitrZil9ZmYoJGUsXCJvbkFuaW1hdGlvbkVuZFwiKTtmZihhZixcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpO2ZmKGJmLFwib25BbmltYXRpb25TdGFydFwiKTtmZihcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpO2ZmKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKTtmZihcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIik7ZmYoY2YsXCJvblRyYW5zaXRpb25FbmRcIik7aGEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7XG5oYShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO2ZhKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSk7ZmEoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO1xuZmEoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIGxmPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksbWY9bmV3IFNldChcImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQobGYpKTtcbmZ1bmN0aW9uIG5mKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1jO1ViKGQsYix2b2lkIDAsYSk7YS5jdXJyZW50VGFyZ2V0PW51bGx9XG5mdW5jdGlvbiBzZShhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLGs9aC5pbnN0YW5jZSxsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXtoPWRbZ107az1oLmluc3RhbmNlO2w9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a319fWlmKFFiKXRocm93IGE9UmIsUWI9ITEsUmI9bnVsbCxhO31cbmZ1bmN0aW9uIEQoYSxiKXt2YXIgYz1iW29mXTt2b2lkIDA9PT1jJiYoYz1iW29mXT1uZXcgU2V0KTt2YXIgZD1hK1wiX19idWJibGVcIjtjLmhhcyhkKXx8KHBmKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gcWYoYSxiLGMpe3ZhciBkPTA7YiYmKGR8PTQpO3BmKGMsYSxkLGIpfXZhciByZj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHNmKGEpe2lmKCFhW3JmXSl7YVtyZl09ITA7ZGEuZm9yRWFjaChmdW5jdGlvbihiKXtcInNlbGVjdGlvbmNoYW5nZVwiIT09YiYmKG1mLmhhcyhiKXx8cWYoYiwhMSxhKSxxZihiLCEwLGEpKX0pO3ZhciBiPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50O251bGw9PT1ifHxiW3JmXXx8KGJbcmZdPSEwLHFmKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsYikpfX1cbmZ1bmN0aW9uIHBmKGEsYixjLGQpe3N3aXRjaChqZChiKSl7Y2FzZSAxOnZhciBlPWVkO2JyZWFrO2Nhc2UgNDplPWdkO2JyZWFrO2RlZmF1bHQ6ZT1mZH1jPWUuYmluZChudWxsLGIsYyxhKTtlPXZvaWQgMDshTGJ8fFwidG91Y2hzdGFydFwiIT09YiYmXCJ0b3VjaG1vdmVcIiE9PWImJlwid2hlZWxcIiE9PWJ8fChlPSEwKTtkP3ZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7Y2FwdHVyZTohMCxwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfVxuZnVuY3Rpb24gaGQoYSxiLGMsZCxlKXt2YXIgZj1kO2lmKDA9PT0oYiYxKSYmMD09PShiJjIpJiZudWxsIT09ZClhOmZvcig7Oyl7aWYobnVsbD09PWQpcmV0dXJuO3ZhciBnPWQudGFnO2lmKDM9PT1nfHw0PT09Zyl7dmFyIGg9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihoPT09ZXx8OD09PWgubm9kZVR5cGUmJmgucGFyZW50Tm9kZT09PWUpYnJlYWs7aWYoND09PWcpZm9yKGc9ZC5yZXR1cm47bnVsbCE9PWc7KXt2YXIgaz1nLnRhZztpZigzPT09a3x8ND09PWspaWYoaz1nLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGs9PT1lfHw4PT09ay5ub2RlVHlwZSYmay5wYXJlbnROb2RlPT09ZSlyZXR1cm47Zz1nLnJldHVybn1mb3IoO251bGwhPT1oOyl7Zz1XYyhoKTtpZihudWxsPT09ZylyZXR1cm47az1nLnRhZztpZig1PT09a3x8Nj09PWspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59SmIoZnVuY3Rpb24oKXt2YXIgZD1mLGU9eGIoYyksZz1bXTtcbmE6e3ZhciBoPWRmLmdldChhKTtpZih2b2lkIDAhPT1oKXt2YXIgaz10ZCxuPWE7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZChjKSlicmVhayBhO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6az1SZDticmVhaztjYXNlIFwiZm9jdXNpblwiOm49XCJmb2N1c1wiO2s9RmQ7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6bj1cImJsdXJcIjtrPUZkO2JyZWFrO2Nhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOms9RmQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKWJyZWFrIGE7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjprPUJkO2JyZWFrO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOms9XG5EZDticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjprPVZkO2JyZWFrO2Nhc2UgJGU6Y2FzZSBhZjpjYXNlIGJmOms9SGQ7YnJlYWs7Y2FzZSBjZjprPVhkO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjprPXZkO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOms9WmQ7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6az1KZDticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjprPVRkfXZhciB0PTAhPT0oYiY0KSxKPSF0JiZcInNjcm9sbFwiPT09YSx4PXQ/bnVsbCE9PWg/aCtcIkNhcHR1cmVcIjpudWxsOmg7dD1bXTtmb3IodmFyIHc9ZCx1O251bGwhPT1cbnc7KXt1PXc7dmFyIEY9dS5zdGF0ZU5vZGU7NT09PXUudGFnJiZudWxsIT09RiYmKHU9RixudWxsIT09eCYmKEY9S2Iodyx4KSxudWxsIT1GJiZ0LnB1c2godGYodyxGLHUpKSkpO2lmKEopYnJlYWs7dz13LnJldHVybn0wPHQubGVuZ3RoJiYoaD1uZXcgayhoLG4sbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6aCxsaXN0ZW5lcnM6dH0pKX19aWYoMD09PShiJjcpKXthOntoPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hO2s9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGgmJmMhPT13YiYmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdjKG4pfHxuW3VmXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGspe2lmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCxrPWQsbj1uP1djKG4pOm51bGwsbnVsbCE9PVxubiYmKEo9VmIobiksbiE9PUp8fDUhPT1uLnRhZyYmNiE9PW4udGFnKSluPW51bGx9ZWxzZSBrPW51bGwsbj1kO2lmKGshPT1uKXt0PUJkO0Y9XCJvbk1vdXNlTGVhdmVcIjt4PVwib25Nb3VzZUVudGVyXCI7dz1cIm1vdXNlXCI7aWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKXQ9VGQsRj1cIm9uUG9pbnRlckxlYXZlXCIseD1cIm9uUG9pbnRlckVudGVyXCIsdz1cInBvaW50ZXJcIjtKPW51bGw9PWs/aDp1ZShrKTt1PW51bGw9PW4/aDp1ZShuKTtoPW5ldyB0KEYsdytcImxlYXZlXCIsayxjLGUpO2gudGFyZ2V0PUo7aC5yZWxhdGVkVGFyZ2V0PXU7Rj1udWxsO1djKGUpPT09ZCYmKHQ9bmV3IHQoeCx3K1wiZW50ZXJcIixuLGMsZSksdC50YXJnZXQ9dSx0LnJlbGF0ZWRUYXJnZXQ9SixGPXQpO0o9RjtpZihrJiZuKWI6e3Q9azt4PW47dz0wO2Zvcih1PXQ7dTt1PXZmKHUpKXcrKzt1PTA7Zm9yKEY9eDtGO0Y9dmYoRikpdSsrO2Zvcig7MDx3LXU7KXQ9dmYodCksdy0tO2Zvcig7MDx1LXc7KXg9XG52Zih4KSx1LS07Zm9yKDt3LS07KXtpZih0PT09eHx8bnVsbCE9PXgmJnQ9PT14LmFsdGVybmF0ZSlicmVhayBiO3Q9dmYodCk7eD12Zih4KX10PW51bGx9ZWxzZSB0PW51bGw7bnVsbCE9PWsmJndmKGcsaCxrLHQsITEpO251bGwhPT1uJiZudWxsIT09SiYmd2YoZyxKLG4sdCwhMCl9fX1hOntoPWQ/dWUoZCk6d2luZG93O2s9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1rfHxcImlucHV0XCI9PT1rJiZcImZpbGVcIj09PWgudHlwZSl2YXIgbmE9dmU7ZWxzZSBpZihtZShoKSlpZih3ZSluYT1GZTtlbHNle25hPURlO3ZhciB4YT1DZX1lbHNlKGs9aC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWsudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWgudHlwZXx8XCJyYWRpb1wiPT09aC50eXBlKSYmKG5hPUVlKTtpZihuYSYmKG5hPW5hKGEsZCkpKXtuZShnLG5hLGMsZSk7YnJlYWsgYX14YSYmeGEoYSxoLGQpO1wiZm9jdXNvdXRcIj09PWEmJih4YT1oLl93cmFwcGVyU3RhdGUpJiZcbnhhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1oLnR5cGUmJmNiKGgsXCJudW1iZXJcIixoLnZhbHVlKX14YT1kP3VlKGQpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjppZihtZSh4YSl8fFwidHJ1ZVwiPT09eGEuY29udGVudEVkaXRhYmxlKVFlPXhhLFJlPWQsU2U9bnVsbDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpTZT1SZT1RZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpUZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6VGU9ITE7VWUoZyxjLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihQZSlicmVhaztjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOlVlKGcsYyxlKX12YXIgJGE7aWYoYWUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpiYT1cIm9uQ29tcG9zaXRpb25FbmRcIjtcbmJyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6YmE9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgYn1iYT12b2lkIDB9ZWxzZSBpZT9nZShhLGMpJiYoYmE9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7YmEmJihkZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihpZXx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PWJhP1wib25Db21wb3NpdGlvbkVuZFwiPT09YmEmJmllJiYoJGE9bmQoKSk6KGtkPWUsbGQ9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsaWU9ITApKSx4YT1vZShkLGJhKSwwPHhhLmxlbmd0aCYmKGJhPW5ldyBMZChiYSxhLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmJhLGxpc3RlbmVyczp4YX0pLCRhP2JhLmRhdGE9JGE6KCRhPWhlKGMpLG51bGwhPT0kYSYmKGJhLmRhdGE9JGEpKSkpO2lmKCRhPWNlP2plKGEsYyk6a2UoYSxjKSlkPW9lKGQsXCJvbkJlZm9yZUlucHV0XCIpLFxuMDxkLmxlbmd0aCYmKGU9bmV3IExkKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLGMsZSksZy5wdXNoKHtldmVudDplLGxpc3RlbmVyczpkfSksZS5kYXRhPSRhKX1zZShnLGIpfSl9ZnVuY3Rpb24gdGYoYSxiLGMpe3JldHVybntpbnN0YW5jZTphLGxpc3RlbmVyOmIsY3VycmVudFRhcmdldDpjfX1mdW5jdGlvbiBvZShhLGIpe2Zvcih2YXIgYz1iK1wiQ2FwdHVyZVwiLGQ9W107bnVsbCE9PWE7KXt2YXIgZT1hLGY9ZS5zdGF0ZU5vZGU7NT09PWUudGFnJiZudWxsIT09ZiYmKGU9ZixmPUtiKGEsYyksbnVsbCE9ZiYmZC51bnNoaWZ0KHRmKGEsZixlKSksZj1LYihhLGIpLG51bGwhPWYmJmQucHVzaCh0ZihhLGYsZSkpKTthPWEucmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIHZmKGEpe2lmKG51bGw9PT1hKXJldHVybiBudWxsO2RvIGE9YS5yZXR1cm47d2hpbGUoYSYmNSE9PWEudGFnKTtyZXR1cm4gYT9hOm51bGx9XG5mdW5jdGlvbiB3ZihhLGIsYyxkLGUpe2Zvcih2YXIgZj1iLl9yZWFjdE5hbWUsZz1bXTtudWxsIT09YyYmYyE9PWQ7KXt2YXIgaD1jLGs9aC5hbHRlcm5hdGUsbD1oLnN0YXRlTm9kZTtpZihudWxsIT09ayYmaz09PWQpYnJlYWs7NT09PWgudGFnJiZudWxsIT09bCYmKGg9bCxlPyhrPUtiKGMsZiksbnVsbCE9ayYmZy51bnNoaWZ0KHRmKGMsayxoKSkpOmV8fChrPUtiKGMsZiksbnVsbCE9ayYmZy5wdXNoKHRmKGMsayxoKSkpKTtjPWMucmV0dXJufTAhPT1nLmxlbmd0aCYmYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpnfSl9dmFyIHhmPS9cXHJcXG4/L2cseWY9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIHpmKGEpe3JldHVybihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpcIlwiK2EpLnJlcGxhY2UoeGYsXCJcXG5cIikucmVwbGFjZSh5ZixcIlwiKX1mdW5jdGlvbiBBZihhLGIsYyl7Yj16ZihiKTtpZih6ZihhKSE9PWImJmMpdGhyb3cgRXJyb3IocCg0MjUpKTt9ZnVuY3Rpb24gQmYoKXt9XG52YXIgQ2Y9bnVsbCxEZj1udWxsO2Z1bmN0aW9uIEVmKGEsYil7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfVxudmFyIEZmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLEdmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxIZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxKZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBIZj9mdW5jdGlvbihhKXtyZXR1cm4gSGYucmVzb2x2ZShudWxsKS50aGVuKGEpLmNhdGNoKElmKX06RmY7ZnVuY3Rpb24gSWYoYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9XG5mdW5jdGlvbiBLZihhLGIpe3ZhciBjPWIsZD0wO2Rve3ZhciBlPWMubmV4dFNpYmxpbmc7YS5yZW1vdmVDaGlsZChjKTtpZihlJiY4PT09ZS5ub2RlVHlwZSlpZihjPWUuZGF0YSxcIi8kXCI9PT1jKXtpZigwPT09ZCl7YS5yZW1vdmVDaGlsZChlKTtiZChiKTtyZXR1cm59ZC0tfWVsc2VcIiRcIiE9PWMmJlwiJD9cIiE9PWMmJlwiJCFcIiE9PWN8fGQrKztjPWV9d2hpbGUoYyk7YmQoYil9ZnVuY3Rpb24gTGYoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWs7aWYoOD09PWIpe2I9YS5kYXRhO2lmKFwiJFwiPT09Ynx8XCIkIVwiPT09Ynx8XCIkP1wiPT09YilicmVhaztpZihcIi8kXCI9PT1iKXJldHVybiBudWxsfX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1mKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIkXCI9PT1jfHxcIiQhXCI9PT1jfHxcIiQ/XCI9PT1jKXtpZigwPT09YilyZXR1cm4gYTtiLS19ZWxzZVwiLyRcIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBOZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxPZj1cIl9fcmVhY3RGaWJlciRcIitOZixQZj1cIl9fcmVhY3RQcm9wcyRcIitOZix1Zj1cIl9fcmVhY3RDb250YWluZXIkXCIrTmYsb2Y9XCJfX3JlYWN0RXZlbnRzJFwiK05mLFFmPVwiX19yZWFjdExpc3RlbmVycyRcIitOZixSZj1cIl9fcmVhY3RIYW5kbGVzJFwiK05mO1xuZnVuY3Rpb24gV2MoYSl7dmFyIGI9YVtPZl07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbdWZdfHxjW09mXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPU1mKGEpO251bGwhPT1hOyl7aWYoYz1hW09mXSlyZXR1cm4gYzthPU1mKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDYihhKXthPWFbT2ZdfHxhW3VmXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gdWUoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHAoMzMpKTt9ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIGFbUGZdfHxudWxsfXZhciBTZj1bXSxUZj0tMTtmdW5jdGlvbiBVZihhKXtyZXR1cm57Y3VycmVudDphfX1cbmZ1bmN0aW9uIEUoYSl7MD5UZnx8KGEuY3VycmVudD1TZltUZl0sU2ZbVGZdPW51bGwsVGYtLSl9ZnVuY3Rpb24gRyhhLGIpe1RmKys7U2ZbVGZdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgVmY9e30sSD1VZihWZiksV2Y9VWYoITEpLFhmPVZmO2Z1bmN0aW9uIFlmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gVmY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBaZihhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uICRmKCl7RShXZik7RShIKX1mdW5jdGlvbiBhZyhhLGIsYyl7aWYoSC5jdXJyZW50IT09VmYpdGhyb3cgRXJyb3IocCgxNjgpKTtHKEgsYik7RyhXZixjKX1mdW5jdGlvbiBiZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7Yj1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGIpKXRocm93IEVycm9yKHAoMTA4LFJhKGEpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIEEoe30sYyxkKX1cbmZ1bmN0aW9uIGNnKGEpe2E9KGE9YS5zdGF0ZU5vZGUpJiZhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxWZjtYZj1ILmN1cnJlbnQ7RyhILGEpO0coV2YsV2YuY3VycmVudCk7cmV0dXJuITB9ZnVuY3Rpb24gZGcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IEVycm9yKHAoMTY5KSk7Yz8oYT1iZyhhLGIsWGYpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YSxFKFdmKSxFKEgpLEcoSCxhKSk6RShXZik7RyhXZixjKX12YXIgZWc9bnVsbCxmZz0hMSxnZz0hMTtmdW5jdGlvbiBoZyhhKXtudWxsPT09ZWc/ZWc9W2FdOmVnLnB1c2goYSl9ZnVuY3Rpb24gaWcoYSl7Zmc9ITA7aGcoYSl9XG5mdW5jdGlvbiBqZygpe2lmKCFnZyYmbnVsbCE9PWVnKXtnZz0hMDt2YXIgYT0wLGI9Qzt0cnl7dmFyIGM9ZWc7Zm9yKEM9MTthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXTtkbyBkPWQoITApO3doaWxlKG51bGwhPT1kKX1lZz1udWxsO2ZnPSExfWNhdGNoKGUpe3Rocm93IG51bGwhPT1lZyYmKGVnPWVnLnNsaWNlKGErMSkpLGFjKGZjLGpnKSxlO31maW5hbGx5e0M9YixnZz0hMX19cmV0dXJuIG51bGx9dmFyIGtnPVtdLGxnPTAsbWc9bnVsbCxuZz0wLG9nPVtdLHBnPTAscWc9bnVsbCxyZz0xLHNnPVwiXCI7ZnVuY3Rpb24gdGcoYSxiKXtrZ1tsZysrXT1uZztrZ1tsZysrXT1tZzttZz1hO25nPWJ9XG5mdW5jdGlvbiB1ZyhhLGIsYyl7b2dbcGcrK109cmc7b2dbcGcrK109c2c7b2dbcGcrK109cWc7cWc9YTt2YXIgZD1yZzthPXNnO3ZhciBlPTMyLW9jKGQpLTE7ZCY9figxPDxlKTtjKz0xO3ZhciBmPTMyLW9jKGIpK2U7aWYoMzA8Zil7dmFyIGc9ZS1lJTU7Zj0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2UtPWc7cmc9MTw8MzItb2MoYikrZXxjPDxlfGQ7c2c9ZithfWVsc2Ugcmc9MTw8ZnxjPDxlfGQsc2c9YX1mdW5jdGlvbiB2ZyhhKXtudWxsIT09YS5yZXR1cm4mJih0ZyhhLDEpLHVnKGEsMSwwKSl9ZnVuY3Rpb24gd2coYSl7Zm9yKDthPT09bWc7KW1nPWtnWy0tbGddLGtnW2xnXT1udWxsLG5nPWtnWy0tbGddLGtnW2xnXT1udWxsO2Zvcig7YT09PXFnOylxZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxzZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxyZz1vZ1stLXBnXSxvZ1twZ109bnVsbH12YXIgeGc9bnVsbCx5Zz1udWxsLEk9ITEsemc9bnVsbDtcbmZ1bmN0aW9uIEFnKGEsYil7dmFyIGM9QmcoNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yj1hLmRlbGV0aW9ucztudWxsPT09Yj8oYS5kZWxldGlvbnM9W2NdLGEuZmxhZ3N8PTE2KTpiLnB1c2goYyl9XG5mdW5jdGlvbiBDZyhhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPUxmKGIuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gYj1cIlwiPT09YS5wZW5kaW5nUHJvcHN8fDMhPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIGI9OCE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhjPW51bGwhPT1xZz97aWQ6cmcsb3ZlcmZsb3c6c2d9Om51bGwsYS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmIsdHJlZUNvbnRleHQ6YyxyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sYz1CZygxOCxudWxsLG51bGwsMCksYy5zdGF0ZU5vZGU9YixjLnJldHVybj1hLGEuY2hpbGQ9Yyx4Zz1hLHlnPVxubnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGcoYSl7cmV0dXJuIDAhPT0oYS5tb2RlJjEpJiYwPT09KGEuZmxhZ3MmMTI4KX1mdW5jdGlvbiBFZyhhKXtpZihJKXt2YXIgYj15ZztpZihiKXt2YXIgYz1iO2lmKCFDZyhhLGIpKXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2I9TGYoYy5uZXh0U2libGluZyk7dmFyIGQ9eGc7YiYmQ2coYSxiKT9BZyhkLGMpOihhLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MixJPSExLHhnPWEpfX1lbHNle2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7YS5mbGFncz1hLmZsYWdzJi00MDk3fDI7ST0hMTt4Zz1hfX19ZnVuY3Rpb24gRmcoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO3hnPWF9XG5mdW5jdGlvbiBHZyhhKXtpZihhIT09eGcpcmV0dXJuITE7aWYoIUkpcmV0dXJuIEZnKGEpLEk9ITAsITE7dmFyIGI7KGI9MyE9PWEudGFnKSYmIShiPTUhPT1hLnRhZykmJihiPWEudHlwZSxiPVwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhRWYoYS50eXBlLGEubWVtb2l6ZWRQcm9wcykpO2lmKGImJihiPXlnKSl7aWYoRGcoYSkpdGhyb3cgSGcoKSxFcnJvcihwKDQxOCkpO2Zvcig7YjspQWcoYSxiKSxiPUxmKGIubmV4dFNpYmxpbmcpfUZnKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IocCgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIi8kXCI9PT1jKXtpZigwPT09Yil7eWc9TGYoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZVwiJFwiIT09YyYmXCIkIVwiIT09YyYmXCIkP1wiIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ315Zz1cbm51bGx9fWVsc2UgeWc9eGc/TGYoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gSGcoKXtmb3IodmFyIGE9eWc7YTspYT1MZihhLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBJZygpe3lnPXhnPW51bGw7ST0hMX1mdW5jdGlvbiBKZyhhKXtudWxsPT09emc/emc9W2FdOnpnLnB1c2goYSl9dmFyIEtnPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIExnKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9QSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifXZhciBNZz1VZihudWxsKSxOZz1udWxsLE9nPW51bGwsUGc9bnVsbDtmdW5jdGlvbiBRZygpe1BnPU9nPU5nPW51bGx9ZnVuY3Rpb24gUmcoYSl7dmFyIGI9TWcuY3VycmVudDtFKE1nKTthLl9jdXJyZW50VmFsdWU9Yn1cbmZ1bmN0aW9uIFNnKGEsYixjKXtmb3IoO251bGwhPT1hOyl7dmFyIGQ9YS5hbHRlcm5hdGU7KGEuY2hpbGRMYW5lcyZiKSE9PWI/KGEuY2hpbGRMYW5lc3w9YixudWxsIT09ZCYmKGQuY2hpbGRMYW5lc3w9YikpOm51bGwhPT1kJiYoZC5jaGlsZExhbmVzJmIpIT09YiYmKGQuY2hpbGRMYW5lc3w9Yik7aWYoYT09PWMpYnJlYWs7YT1hLnJldHVybn19ZnVuY3Rpb24gVGcoYSxiKXtOZz1hO1BnPU9nPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoVWc9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfVxuZnVuY3Rpb24gVmcoYSl7dmFyIGI9YS5fY3VycmVudFZhbHVlO2lmKFBnIT09YSlpZihhPXtjb250ZXh0OmEsbWVtb2l6ZWRWYWx1ZTpiLG5leHQ6bnVsbH0sbnVsbD09PU9nKXtpZihudWxsPT09TmcpdGhyb3cgRXJyb3IocCgzMDgpKTtPZz1hO05nLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6YX19ZWxzZSBPZz1PZy5uZXh0PWE7cmV0dXJuIGJ9dmFyIFdnPW51bGw7ZnVuY3Rpb24gWGcoYSl7bnVsbD09PVdnP1dnPVthXTpXZy5wdXNoKGEpfWZ1bmN0aW9uIFlnKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLFhnKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBaZyhhLGQpfVxuZnVuY3Rpb24gWmcoYSxiKXthLmxhbmVzfD1iO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiYoYy5sYW5lc3w9Yik7Yz1hO2ZvcihhPWEucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PWIsYz1hLmFsdGVybmF0ZSxudWxsIT09YyYmKGMuY2hpbGRMYW5lc3w9YiksYz1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1jLnRhZz9jLnN0YXRlTm9kZTpudWxsfXZhciAkZz0hMTtmdW5jdGlvbiBhaChhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gYmgoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmEuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmEubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmEuc2hhcmVkLGVmZmVjdHM6YS5lZmZlY3RzfSl9ZnVuY3Rpb24gY2goYSxiKXtyZXR1cm57ZXZlbnRUaW1lOmEsbGFuZTpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19XG5mdW5jdGlvbiBkaChhLGIsYyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtkPWQuc2hhcmVkO2lmKDAhPT0oSyYyKSl7dmFyIGU9ZC5wZW5kaW5nO251bGw9PT1lP2IubmV4dD1iOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLnBlbmRpbmc9YjtyZXR1cm4gWmcoYSxjKX1lPWQuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGIubmV4dD1iLFhnKGQpKTooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5pbnRlcmxlYXZlZD1iO3JldHVybiBaZyhhLGMpfWZ1bmN0aW9uIGVoKGEsYixjKXtiPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWImJihiPWIuc2hhcmVkLDAhPT0oYyY0MTk0MjQwKSkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG5mdW5jdGlvbiBmaChhLGIpe3ZhciBjPWEudXBkYXRlUXVldWUsZD1hLmFsdGVybmF0ZTtpZihudWxsIT09ZCYmKGQ9ZC51cGRhdGVRdWV1ZSxjPT09ZCkpe3ZhciBlPW51bGwsZj1udWxsO2M9Yy5maXJzdEJhc2VVcGRhdGU7aWYobnVsbCE9PWMpe2Rve3ZhciBnPXtldmVudFRpbWU6Yy5ldmVudFRpbWUsbGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOmMuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09Zj9lPWY9ZzpmPWYubmV4dD1nO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jKTtudWxsPT09Zj9lPWY9YjpmPWYubmV4dD1ifWVsc2UgZT1mPWI7Yz17YmFzZVN0YXRlOmQuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLGxhc3RCYXNlVXBkYXRlOmYsc2hhcmVkOmQuc2hhcmVkLGVmZmVjdHM6ZC5lZmZlY3RzfTthLnVwZGF0ZVF1ZXVlPWM7cmV0dXJufWE9Yy5sYXN0QmFzZVVwZGF0ZTtudWxsPT09YT9jLmZpcnN0QmFzZVVwZGF0ZT1iOmEubmV4dD1cbmI7Yy5sYXN0QmFzZVVwZGF0ZT1ifVxuZnVuY3Rpb24gZ2goYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTskZz0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCxsPWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPWw6Zy5uZXh0PWw7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO251bGwhPT1tJiYobT1tLnVwZGF0ZVF1ZXVlLGg9bS5sYXN0QmFzZVVwZGF0ZSxoIT09ZyYmKG51bGw9PT1oP20uZmlyc3RCYXNlVXBkYXRlPWw6aC5uZXh0PWwsbS5sYXN0QmFzZVVwZGF0ZT1rKSl9aWYobnVsbCE9PWYpe3ZhciBxPWUuYmFzZVN0YXRlO2c9MDttPWw9az1udWxsO2g9Zjtkb3t2YXIgcj1oLmxhbmUseT1oLmV2ZW50VGltZTtpZigoZCZyKT09PXIpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTp5LGxhbmU6MCx0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxcbm5leHQ6bnVsbH0pO2E6e3ZhciBuPWEsdD1oO3I9Yjt5PWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6bj10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4pe3E9bi5jYWxsKHkscSxyKTticmVhayBhfXE9bjticmVhayBhO2Nhc2UgMzpuLmZsYWdzPW4uZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6bj10LnBheWxvYWQ7cj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbj9uLmNhbGwoeSxxLHIpOm47aWYobnVsbD09PXJ8fHZvaWQgMD09PXIpYnJlYWsgYTtxPUEoe30scSxyKTticmVhayBhO2Nhc2UgMjokZz0hMH19bnVsbCE9PWguY2FsbGJhY2smJjAhPT1oLmxhbmUmJihhLmZsYWdzfD02NCxyPWUuZWZmZWN0cyxudWxsPT09cj9lLmVmZmVjdHM9W2hdOnIucHVzaChoKSl9ZWxzZSB5PXtldmVudFRpbWU6eSxsYW5lOnIsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8obD1tPXksaz1xKTptPW0ubmV4dD15LGd8PXI7XG5oPWgubmV4dDtpZihudWxsPT09aClpZihoPWUuc2hhcmVkLnBlbmRpbmcsbnVsbD09PWgpYnJlYWs7ZWxzZSByPWgsaD1yLm5leHQsci5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1yLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9cSk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT1sO2UubGFzdEJhc2VVcGRhdGU9bTtiPWUuc2hhcmVkLmludGVybGVhdmVkO2lmKG51bGwhPT1iKXtlPWI7ZG8gZ3w9ZS5sYW5lLGU9ZS5uZXh0O3doaWxlKGUhPT1iKX1lbHNlIG51bGw9PT1mJiYoZS5zaGFyZWQubGFuZXM9MCk7aGh8PWc7YS5sYW5lcz1nO2EubWVtb2l6ZWRTdGF0ZT1xfX1cbmZ1bmN0aW9uIGloKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihwKDE5MSxlKSk7ZS5jYWxsKGQpfX19dmFyIGpoPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGtoKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpBKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEubGFuZXMmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBuaD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYihhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi50YWc9MTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPUwoKSxkPVxubGgoYSksZT1jaChjLGQpO2UudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihlLmNhbGxiYWNrPWIpO2I9ZGgoYSxlLGQpO251bGwhPT1iJiYobWgoYixhLGQsYyksZWgoYixhLGQpKX19O2Z1bmN0aW9uIG9oKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixnKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IUllKGMsZCl8fCFJZShlLGYpOiEwfVxuZnVuY3Rpb24gcGgoYSxiLGMpe3ZhciBkPSExLGU9VmY7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9VmcoZik6KGU9WmYoYik/WGY6SC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/WWYoYSxlKTpWZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPW5oO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gcWgoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gcmgoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1qaDthaChhKTt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PVZnKGYpOihmPVpmKGIpP1hmOkguY3VycmVudCxlLmNvbnRleHQ9WWYoYSxmKSk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKGtoKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsXG5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGdoKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZmxhZ3N8PTQxOTQzMDgpfVxuZnVuY3Rpb24gc2goYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO2lmKGMpe2lmKDEhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKHAoMTQ3LGEpKTt2YXIgZT1kLGY9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWYpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZS5yZWZzO2I9PT1qaCYmKGI9ZS5yZWZzPXt9KTtudWxsPT09YT9kZWxldGUgYltmXTpiW2ZdPWF9O2IuX3N0cmluZ1JlZj1mO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihwKDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcihwKDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gdGgoYSxiKXthPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTt0aHJvdyBFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9ZnVuY3Rpb24gdWgoYSl7dmFyIGI9YS5faW5pdDtyZXR1cm4gYihhLl9wYXlsb2FkKX1cbmZ1bmN0aW9uIHZoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmRlbGV0aW9ucztudWxsPT09ZD8oYi5kZWxldGlvbnM9W2NdLGIuZmxhZ3N8PTE2KTpkLnB1c2goYyl9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPXdoKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYi5mbGFnc3w9MTA0ODU3NixjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM/KGIuZmxhZ3N8PTIsYyk6ZDtiLmZsYWdzfD0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmXG5udWxsPT09Yi5hbHRlcm5hdGUmJihiLmZsYWdzfD0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9eGgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZj1jLnR5cGU7aWYoZj09PXlhKXJldHVybiBtKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsYy5rZXkpO2lmKG51bGwhPT1iJiYoYi5lbGVtZW50VHlwZT09PWZ8fFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYuJCR0eXBlb2Y9PT1IYSYmdWgoZik9PT1iLnR5cGUpKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1zaChhLGIsYyksZC5yZXR1cm49YSxkO2Q9eWgoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9c2goYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxcbmIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Yy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj16aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9QWgoYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGImJlwiXCIhPT1ifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9eGgoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGM9eWgoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksXG5jLnJlZj1zaChhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2Ugd2E6cmV0dXJuIGI9emgoYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2Nhc2UgSGE6dmFyIGQ9Yi5faW5pdDtyZXR1cm4gcShhLGQoYi5fcGF5bG9hZCksYyl9aWYoZWIoYil8fEthKGIpKXJldHVybiBiPUFoKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO3RoKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmXCJcIiE9PWN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpoKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGMua2V5PT09ZT9rKGEsYixjLGQpOm51bGw7Y2FzZSB3YTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbDtjYXNlIEhhOnJldHVybiBlPWMuX2luaXQscihhLFxuYixlKGMuX3BheWxvYWQpLGQpfWlmKGViKGMpfHxLYShjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7dGgoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGgoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsayhiLGEsZCxlKTtjYXNlIHdhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpO2Nhc2UgSGE6dmFyIGY9ZC5faW5pdDtyZXR1cm4geShhLGIsYyxmKGQuX3BheWxvYWQpLGUpfWlmKGViKGQpfHxLYShkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7dGgoYixkKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG4oZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsbT1udWxsLHU9Zyx3PWc9MCx4PW51bGw7bnVsbCE9PXUmJnc8aC5sZW5ndGg7dysrKXt1LmluZGV4Pnc/KHg9dSx1PW51bGwpOng9dS5zaWJsaW5nO3ZhciBuPXIoZSx1LGhbd10sayk7aWYobnVsbD09PW4pe251bGw9PT11JiYodT14KTticmVha31hJiZ1JiZudWxsPT09bi5hbHRlcm5hdGUmJmIoZSx1KTtnPWYobixnLHcpO251bGw9PT1tP2w9bjptLnNpYmxpbmc9bjttPW47dT14fWlmKHc9PT1oLmxlbmd0aClyZXR1cm4gYyhlLHUpLEkmJnRnKGUsdyksbDtpZihudWxsPT09dSl7Zm9yKDt3PGgubGVuZ3RoO3crKyl1PXEoZSxoW3ddLGspLG51bGwhPT11JiYoZz1mKHUsZyx3KSxudWxsPT09bT9sPXU6bS5zaWJsaW5nPXUsbT11KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcih1PWQoZSx1KTt3PGgubGVuZ3RoO3crKyl4PXkodSxlLHcsaFt3XSxrKSxudWxsIT09eCYmKGEmJm51bGwhPT14LmFsdGVybmF0ZSYmdS5kZWxldGUobnVsbD09PVxueC5rZXk/dzp4LmtleSksZz1mKHgsZyx3KSxudWxsPT09bT9sPXg6bS5zaWJsaW5nPXgsbT14KTthJiZ1LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gdChlLGcsaCxrKXt2YXIgbD1LYShoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgbCl0aHJvdyBFcnJvcihwKDE1MCkpO2g9bC5jYWxsKGgpO2lmKG51bGw9PWgpdGhyb3cgRXJyb3IocCgxNTEpKTtmb3IodmFyIHU9bD1udWxsLG09Zyx3PWc9MCx4PW51bGwsbj1oLm5leHQoKTtudWxsIT09bSYmIW4uZG9uZTt3Kyssbj1oLm5leHQoKSl7bS5pbmRleD53Pyh4PW0sbT1udWxsKTp4PW0uc2libGluZzt2YXIgdD1yKGUsbSxuLnZhbHVlLGspO2lmKG51bGw9PT10KXtudWxsPT09bSYmKG09eCk7YnJlYWt9YSYmbSYmbnVsbD09PXQuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHQsZyx3KTtudWxsPT09dT9sPXQ6dS5zaWJsaW5nPXQ7dT10O209eH1pZihuLmRvbmUpcmV0dXJuIGMoZSxcbm0pLEkmJnRnKGUsdyksbDtpZihudWxsPT09bSl7Zm9yKDshbi5kb25lO3crKyxuPWgubmV4dCgpKW49cShlLG4udmFsdWUsayksbnVsbCE9PW4mJihnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKG09ZChlLG0pOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj15KG0sZSx3LG4udmFsdWUsayksbnVsbCE9PW4mJihhJiZudWxsIT09bi5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1uLmtleT93Om4ua2V5KSxnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiBKKGEsZCxmLGgpe1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXlhJiZudWxsPT09Zi5rZXkmJihmPWYucHJvcHMuY2hpbGRyZW4pO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYpe3N3aXRjaChmLiQkdHlwZW9mKXtjYXNlIHZhOmE6e2Zvcih2YXIgaz1cbmYua2V5LGw9ZDtudWxsIT09bDspe2lmKGwua2V5PT09ayl7az1mLnR5cGU7aWYoaz09PXlhKXtpZig3PT09bC50YWcpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWVsc2UgaWYobC5lbGVtZW50VHlwZT09PWt8fFwib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT1IYSYmdWgoayk9PT1sLnR5cGUpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMpO2QucmVmPXNoKGEsbCxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWMoYSxsKTticmVha31lbHNlIGIoYSxsKTtsPWwuc2libGluZ31mLnR5cGU9PT15YT8oZD1BaChmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9eWgoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9c2goYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIHdhOmE6e2ZvcihsPWYua2V5O251bGwhPT1cbmQ7KXtpZihkLmtleT09PWwpaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9ZC5zaWJsaW5nfWQ9emgoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSk7Y2FzZSBIYTpyZXR1cm4gbD1mLl9pbml0LEooYSxkLGwoZi5fcGF5bG9hZCksaCl9aWYoZWIoZikpcmV0dXJuIG4oYSxkLGYsaCk7aWYoS2EoZikpcmV0dXJuIHQoYSxkLGYsaCk7dGgoYSxmKX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGYmJlwiXCIhPT1mfHxcIm51bWJlclwiPT09dHlwZW9mIGY/KGY9XCJcIitmLG51bGwhPT1kJiY2PT09ZC50YWc/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTpcbihjKGEsZCksZD14aChmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKSk6YyhhLGQpfXJldHVybiBKfXZhciBCaD12aCghMCksQ2g9dmgoITEpLERoPXt9LEVoPVVmKERoKSxGaD1VZihEaCksR2g9VWYoRGgpO2Z1bmN0aW9uIEhoKGEpe2lmKGE9PT1EaCl0aHJvdyBFcnJvcihwKDE3NCkpO3JldHVybiBhfWZ1bmN0aW9uIEloKGEsYil7RyhHaCxiKTtHKEZoLGEpO0coRWgsRGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RShFaCk7RyhFaCxiKX1mdW5jdGlvbiBKaCgpe0UoRWgpO0UoRmgpO0UoR2gpfVxuZnVuY3Rpb24gS2goYSl7SGgoR2guY3VycmVudCk7dmFyIGI9SGgoRWguY3VycmVudCk7dmFyIGM9bGIoYixhLnR5cGUpO2IhPT1jJiYoRyhGaCxhKSxHKEVoLGMpKX1mdW5jdGlvbiBMaChhKXtGaC5jdXJyZW50PT09YSYmKEUoRWgpLEUoRmgpKX12YXIgTT1VZigwKTtcbmZ1bmN0aW9uIE1oKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7dmFyIGM9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiYoYz1jLmRlaHlkcmF0ZWQsbnVsbD09PWN8fFwiJD9cIj09PWMuZGF0YXx8XCIkIVwiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfXZhciBOaD1bXTtcbmZ1bmN0aW9uIE9oKCl7Zm9yKHZhciBhPTA7YTxOaC5sZW5ndGg7YSsrKU5oW2FdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7TmgubGVuZ3RoPTB9dmFyIFBoPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsUWg9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsUmg9MCxOPW51bGwsTz1udWxsLFA9bnVsbCxTaD0hMSxUaD0hMSxVaD0wLFZoPTA7ZnVuY3Rpb24gUSgpe3Rocm93IEVycm9yKHAoMzIxKSk7fWZ1bmN0aW9uIFdoKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aCYmYzxhLmxlbmd0aDtjKyspaWYoIUhlKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9XG5mdW5jdGlvbiBYaChhLGIsYyxkLGUsZil7Umg9ZjtOPWI7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2IubGFuZXM9MDtQaC5jdXJyZW50PW51bGw9PT1hfHxudWxsPT09YS5tZW1vaXplZFN0YXRlP1loOlpoO2E9YyhkLGUpO2lmKFRoKXtmPTA7ZG97VGg9ITE7VWg9MDtpZigyNTw9Zil0aHJvdyBFcnJvcihwKDMwMSkpO2YrPTE7UD1PPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO1BoLmN1cnJlbnQ9JGg7YT1jKGQsZSl9d2hpbGUoVGgpfVBoLmN1cnJlbnQ9YWk7Yj1udWxsIT09TyYmbnVsbCE9PU8ubmV4dDtSaD0wO1A9Tz1OPW51bGw7U2g9ITE7aWYoYil0aHJvdyBFcnJvcihwKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGJpKCl7dmFyIGE9MCE9PVVoO1VoPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBjaSgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YTtyZXR1cm4gUH1mdW5jdGlvbiBkaSgpe2lmKG51bGw9PT1PKXt2YXIgYT1OLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1PLm5leHQ7dmFyIGI9bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlOlAubmV4dDtpZihudWxsIT09YilQPWIsTz1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzMTApKTtPPWE7YT17bWVtb2l6ZWRTdGF0ZTpPLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk8uYmFzZVN0YXRlLGJhc2VRdWV1ZTpPLmJhc2VRdWV1ZSxxdWV1ZTpPLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hfXJldHVybiBQfVxuZnVuY3Rpb24gZWkoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBmaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU8sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7Zj1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPW51bGwsaz1udWxsLGw9Zjtkb3t2YXIgbT1sLmxhbmU7aWYoKFJoJm0pPT09bSludWxsIT09ayYmKGs9ay5uZXh0PXtsYW5lOjAsYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGQ9bC5oYXNFYWdlclN0YXRlP2wuZWFnZXJTdGF0ZTphKGQsbC5hY3Rpb24pO2Vsc2V7dmFyIHE9e2xhbmU6bSxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsXG5lYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1rPyhoPWs9cSxnPWQpOms9ay5uZXh0PXE7Ti5sYW5lc3w9bTtoaHw9bX1sPWwubmV4dH13aGlsZShudWxsIT09bCYmbCE9PWYpO251bGw9PT1rP2c9ZDprLm5leHQ9aDtIZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZztiLmJhc2VRdWV1ZT1rO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1hPWMuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWEpe2U9YTtkbyBmPWUubGFuZSxOLmxhbmVzfD1mLGhofD1mLGU9ZS5uZXh0O3doaWxlKGUhPT1hKX1lbHNlIG51bGw9PT1lJiYoYy5sYW5lcz0wKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24gZ2koYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO0hlKGYsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19ZnVuY3Rpb24gaGkoKXt9XG5mdW5jdGlvbiBpaShhLGIpe3ZhciBjPU4sZD1kaSgpLGU9YigpLGY9IUhlKGQubWVtb2l6ZWRTdGF0ZSxlKTtmJiYoZC5tZW1vaXplZFN0YXRlPWUsVWc9ITApO2Q9ZC5xdWV1ZTtqaShraS5iaW5kKG51bGwsYyxkLGEpLFthXSk7aWYoZC5nZXRTbmFwc2hvdCE9PWJ8fGZ8fG51bGwhPT1QJiZQLm1lbW9pemVkU3RhdGUudGFnJjEpe2MuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsYyxkLGUsYiksdm9pZCAwLG51bGwpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGMsYixlKX1yZXR1cm4gZX1mdW5jdGlvbiBuaShhLGIsYyl7YS5mbGFnc3w9MTYzODQ7YT17Z2V0U25hcHNob3Q6Yix2YWx1ZTpjfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIuc3RvcmVzPVthXSk6KGM9Yi5zdG9yZXMsbnVsbD09PWM/Yi5zdG9yZXM9W2FdOmMucHVzaChhKSl9XG5mdW5jdGlvbiBtaShhLGIsYyxkKXtiLnZhbHVlPWM7Yi5nZXRTbmFwc2hvdD1kO29pKGIpJiZwaShhKX1mdW5jdGlvbiBraShhLGIsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtvaShiKSYmcGkoYSl9KX1mdW5jdGlvbiBvaShhKXt2YXIgYj1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9YigpO3JldHVybiFIZShhLGMpfWNhdGNoKGQpe3JldHVybiEwfX1mdW5jdGlvbiBwaShhKXt2YXIgYj1aZyhhLDEpO251bGwhPT1iJiZtaChiLGEsMSwtMSl9XG5mdW5jdGlvbiBxaShhKXt2YXIgYj1jaSgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmVpLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2IucXVldWU9YTthPWEuZGlzcGF0Y2g9cmkuYmluZChudWxsLE4sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIubGFzdEVmZmVjdD1hLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBzaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gdGkoYSxiLGMsZCl7dmFyIGU9Y2koKTtOLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfVxuZnVuY3Rpb24gdWkoYSxiLGMsZCl7dmFyIGU9ZGkoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Tyl7dmFyIGc9Ty5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZXaChkLGcuZGVwcykpe2UubWVtb2l6ZWRTdGF0ZT1saShiLGMsZixkKTtyZXR1cm59fU4uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLGYsZCl9ZnVuY3Rpb24gdmkoYSxiKXtyZXR1cm4gdGkoODM5MDY1Niw4LGEsYil9ZnVuY3Rpb24gamkoYSxiKXtyZXR1cm4gdWkoMjA0OCw4LGEsYil9ZnVuY3Rpb24gd2koYSxiKXtyZXR1cm4gdWkoNCwyLGEsYil9ZnVuY3Rpb24geGkoYSxiKXtyZXR1cm4gdWkoNCw0LGEsYil9XG5mdW5jdGlvbiB5aShhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIHppKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdWkoNCw0LHlpLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIEFpKCl7fWZ1bmN0aW9uIEJpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfVxuZnVuY3Rpb24gQ2koYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gRGkoYSxiLGMpe2lmKDA9PT0oUmgmMjEpKXJldHVybiBhLmJhc2VTdGF0ZSYmKGEuYmFzZVN0YXRlPSExLFVnPSEwKSxhLm1lbW9pemVkU3RhdGU9YztIZShjLGIpfHwoYz15YygpLE4ubGFuZXN8PWMsaGh8PWMsYS5iYXNlU3RhdGU9ITApO3JldHVybiBifWZ1bmN0aW9uIEVpKGEsYil7dmFyIGM9QztDPTAhPT1jJiY0PmM/Yzo0O2EoITApO3ZhciBkPVFoLnRyYW5zaXRpb247UWgudHJhbnNpdGlvbj17fTt0cnl7YSghMSksYigpfWZpbmFsbHl7Qz1jLFFoLnRyYW5zaXRpb249ZH19ZnVuY3Rpb24gRmkoKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfVxuZnVuY3Rpb24gR2koYSxiLGMpe3ZhciBkPWxoKGEpO2M9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsYyk7ZWxzZSBpZihjPVlnKGEsYixjLGQpLG51bGwhPT1jKXt2YXIgZT1MKCk7bWgoYyxhLGQsZSk7SmkoYyxiLGQpfX1cbmZ1bmN0aW9uIHJpKGEsYixjKXt2YXIgZD1saChhKSxlPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGUpO2Vsc2V7dmFyIGY9YS5hbHRlcm5hdGU7aWYoMD09PWEubGFuZXMmJihudWxsPT09Znx8MD09PWYubGFuZXMpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuaGFzRWFnZXJTdGF0ZT0hMDtlLmVhZ2VyU3RhdGU9aDtpZihIZShoLGcpKXt2YXIgaz1iLmludGVybGVhdmVkO251bGw9PT1rPyhlLm5leHQ9ZSxYZyhiKSk6KGUubmV4dD1rLm5leHQsay5uZXh0PWUpO2IuaW50ZXJsZWF2ZWQ9ZTtyZXR1cm59fWNhdGNoKGwpe31maW5hbGx5e31jPVlnKGEsYixlLGQpO251bGwhPT1jJiYoZT1MKCksbWgoYyxhLGQsZSksSmkoYyxiLGQpKX19XG5mdW5jdGlvbiBIaShhKXt2YXIgYj1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PU58fG51bGwhPT1iJiZiPT09Tn1mdW5jdGlvbiBJaShhLGIpe1RoPVNoPSEwO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9ZnVuY3Rpb24gSmkoYSxiLGMpe2lmKDAhPT0oYyY0MTk0MjQwKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbnZhciBhaT17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6USx1c2VDb250ZXh0OlEsdXNlRWZmZWN0OlEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpRLHVzZUluc2VydGlvbkVmZmVjdDpRLHVzZUxheW91dEVmZmVjdDpRLHVzZU1lbW86USx1c2VSZWR1Y2VyOlEsdXNlUmVmOlEsdXNlU3RhdGU6USx1c2VEZWJ1Z1ZhbHVlOlEsdXNlRGVmZXJyZWRWYWx1ZTpRLHVzZVRyYW5zaXRpb246USx1c2VNdXRhYmxlU291cmNlOlEsdXNlU3luY0V4dGVybmFsU3RvcmU6USx1c2VJZDpRLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWWg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7Y2koKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6dmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHRpKDQxOTQzMDgsXG40LHlpLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNDE5NDMwOCw0LGEsYil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPWNpKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWNpKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2QucXVldWU9YTthPWEuZGlzcGF0Y2g9R2kuYmluZChudWxsLE4sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPVxuY2koKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6cWksdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBjaSgpLm1lbW9pemVkU3RhdGU9YX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXFpKCExKSxiPWFbMF07YT1FaS5iaW5kKG51bGwsYVsxXSk7Y2koKS5tZW1vaXplZFN0YXRlPWE7cmV0dXJuW2IsYV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1OLGU9Y2koKTtpZihJKXtpZih2b2lkIDA9PT1jKXRocm93IEVycm9yKHAoNDA3KSk7Yz1jKCl9ZWxzZXtjPWIoKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShkLGIsYyl9ZS5tZW1vaXplZFN0YXRlPWM7dmFyIGY9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6Yn07ZS5xdWV1ZT1mO3ZpKGtpLmJpbmQobnVsbCxkLFxuZixhKSxbYV0pO2QuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsZCxmLGMsYiksdm9pZCAwLG51bGwpO3JldHVybiBjfSx1c2VJZDpmdW5jdGlvbigpe3ZhciBhPWNpKCksYj1SLmlkZW50aWZpZXJQcmVmaXg7aWYoSSl7dmFyIGM9c2c7dmFyIGQ9cmc7Yz0oZCZ+KDE8PDMyLW9jKGQpLTEpKS50b1N0cmluZygzMikrYztiPVwiOlwiK2IrXCJSXCIrYztjPVVoKys7MDxjJiYoYis9XCJIXCIrYy50b1N0cmluZygzMikpO2IrPVwiOlwifWVsc2UgYz1WaCsrLGI9XCI6XCIrYitcInJcIitjLnRvU3RyaW5nKDMyKStcIjpcIjtyZXR1cm4gYS5tZW1vaXplZFN0YXRlPWJ9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWmg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6ZmksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGZpKGVpKX0sXG51c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gRGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1maShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSwkaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpnaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ2koZWkpfSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gbnVsbD09PVxuTz9iLm1lbW9pemVkU3RhdGU9YTpEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWdpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIEtpKGEsYil7dHJ5e3ZhciBjPVwiXCIsZD1iO2RvIGMrPVBhKGQpLGQ9ZC5yZXR1cm47d2hpbGUoZCk7dmFyIGU9Y31jYXRjaChmKXtlPVwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZi5tZXNzYWdlK1wiXFxuXCIrZi5zdGFja31yZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazplLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBMaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1cbmZ1bmN0aW9uIE1pKGEsYil7dHJ5e2NvbnNvbGUuZXJyb3IoYi52YWx1ZSl9Y2F0Y2goYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGM7fSl9fXZhciBOaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBPaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtQaXx8KFBpPSEwLFFpPWQpO01pKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gUmkoYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBkKGUpfTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYik7XCJmdW5jdGlvblwiIT09dHlwZW9mIGQmJihudWxsPT09U2k/U2k9bmV3IFNldChbdGhpc10pOlNpLmFkZCh0aGlzKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBUaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7aWYobnVsbD09PWQpe2Q9YS5waW5nQ2FjaGU9bmV3IE5pO3ZhciBlPW5ldyBTZXQ7ZC5zZXQoYixlKX1lbHNlIGU9ZC5nZXQoYiksdm9pZCAwPT09ZSYmKGU9bmV3IFNldCxkLnNldChiLGUpKTtlLmhhcyhjKXx8KGUuYWRkKGMpLGE9VWkuYmluZChudWxsLGEsYixjKSxiLnRoZW4oYSxhKSl9ZnVuY3Rpb24gVmkoYSl7ZG97dmFyIGI7aWYoYj0xMz09PWEudGFnKWI9YS5tZW1vaXplZFN0YXRlLGI9bnVsbCE9PWI/bnVsbCE9PWIuZGVoeWRyYXRlZD8hMDohMTohMDtpZihiKXJldHVybiBhO2E9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gV2koYSxiLGMsZCxlKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gYT09PWI/YS5mbGFnc3w9NjU1MzY6KGEuZmxhZ3N8PTEyOCxjLmZsYWdzfD0xMzEwNzIsYy5mbGFncyY9LTUyODA1LDE9PT1jLnRhZyYmKG51bGw9PT1jLmFsdGVybmF0ZT9jLnRhZz0xNzooYj1jaCgtMSwxKSxiLnRhZz0yLGRoKGMsYiwxKSkpLGMubGFuZXN8PTEpLGE7YS5mbGFnc3w9NjU1MzY7YS5sYW5lcz1lO3JldHVybiBhfXZhciBYaT11YS5SZWFjdEN1cnJlbnRPd25lcixVZz0hMTtmdW5jdGlvbiBZaShhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP0NoKGIsbnVsbCxjLGQpOkJoKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gWmkoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO1RnKGIsZSk7ZD1YaChhLGIsYyxkLGYsZSk7Yz1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmYyYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsZCxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGFqKGEsYixjLGQsZSl7aWYobnVsbD09PWEpe3ZhciBmPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmIWJqKGYpJiZ2b2lkIDA9PT1mLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1mLGNqKGEsYixmLGQsZSk7YT15aChjLnR5cGUsbnVsbCxkLGIsYi5tb2RlLGUpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mPWEuY2hpbGQ7aWYoMD09PShhLmxhbmVzJmUpKXt2YXIgZz1mLm1lbW9pemVkUHJvcHM7Yz1jLmNvbXBhcmU7Yz1udWxsIT09Yz9jOkllO2lmKGMoZyxkKSYmYS5yZWY9PT1iLnJlZilyZXR1cm4gJGkoYSxiLGUpfWIuZmxhZ3N8PTE7YT13aChmLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1cbmZ1bmN0aW9uIGNqKGEsYixjLGQsZSl7aWYobnVsbCE9PWEpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcztpZihJZShmLGQpJiZhLnJlZj09PWIucmVmKWlmKFVnPSExLGIucGVuZGluZ1Byb3BzPWQ9ZiwwIT09KGEubGFuZXMmZSkpMCE9PShhLmZsYWdzJjEzMTA3MikmJihVZz0hMCk7ZWxzZSByZXR1cm4gYi5sYW5lcz1hLmxhbmVzLCRpKGEsYixlKX1yZXR1cm4gZGooYSxiLGMsZCxlKX1cbmZ1bmN0aW9uIGVqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQuY2hpbGRyZW4sZj1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbDtpZihcImhpZGRlblwiPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sRyhmaixnaiksZ2p8PWM7ZWxzZXtpZigwPT09KGMmMTA3Mzc0MTgyNCkpcmV0dXJuIGE9bnVsbCE9PWY/Zi5iYXNlTGFuZXN8YzpjLGIubGFuZXM9Yi5jaGlsZExhbmVzPTEwNzM3NDE4MjQsYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiLnVwZGF0ZVF1ZXVlPW51bGwsRyhmaixnaiksZ2p8PWEsbnVsbDtiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9O2Q9bnVsbCE9PWY/Zi5iYXNlTGFuZXM6YztHKGZqLGdqKTtnanw9ZH1lbHNlIG51bGwhPT1cbmY/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLEcoZmosZ2opLGdqfD1kO1lpKGEsYixlLGMpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGhqKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyfWZ1bmN0aW9uIGRqKGEsYixjLGQsZSl7dmFyIGY9WmYoYyk/WGY6SC5jdXJyZW50O2Y9WWYoYixmKTtUZyhiLGUpO2M9WGgoYSxiLGMsZCxmLGUpO2Q9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmQmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBpaihhLGIsYyxkLGUpe2lmKFpmKGMpKXt2YXIgZj0hMDtjZyhiKX1lbHNlIGY9ITE7VGcoYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpamooYSxiKSxwaChiLGMsZCkscmgoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgZz1iLnN0YXRlTm9kZSxoPWIubWVtb2l6ZWRQcm9wcztnLnByb3BzPWg7dmFyIGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9VmcobCk6KGw9WmYoYyk/WGY6SC5jdXJyZW50LGw9WWYoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fFxuKGghPT1kfHxrIT09bCkmJnFoKGIsZyxkLGwpOyRnPSExO3ZhciByPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHIhPT1rfHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihraChiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9JGd8fG9oKGIsYyxoLGQscixrLGwpKT8ocXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpKTpcbihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxnLnByb3BzPWQsZy5zdGF0ZT1rLGcuY29udGV4dD1sLGQ9aCk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksZD0hMSl9ZWxzZXtnPWIuc3RhdGVOb2RlO2JoKGEsYik7aD1iLm1lbW9pemVkUHJvcHM7bD1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6TGcoYi50eXBlLGgpO2cucHJvcHM9bDtxPWIucGVuZGluZ1Byb3BzO3I9Zy5jb250ZXh0O2s9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9Vmcoayk6KGs9WmYoYyk/WGY6SC5jdXJyZW50LGs9WWYoYixrKSk7dmFyIHk9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KG09XCJmdW5jdGlvblwiPT09dHlwZW9mIHl8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1xfHxyIT09aykmJnFoKGIsZyxkLGspOyRnPSExO3I9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTt2YXIgbj1iLm1lbW9pemVkU3RhdGU7aCE9PXF8fHIhPT1ufHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIHkmJihraChiLGMseSxkKSxuPWIubWVtb2l6ZWRTdGF0ZSksKGw9JGd8fG9oKGIsYyxsLGQscixuLGspfHwhMSk/KG18fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXG5nLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPW4pLGcucHJvcHM9ZCxnLnN0YXRlPW4sZy5jb250ZXh0PWssZD1sKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09XG5hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGQ9ITEpfXJldHVybiBraihhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBraihhLGIsYyxkLGUsZil7aGooYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmMTI4KTtpZighZCYmIWcpcmV0dXJuIGUmJmRnKGIsYywhMSksJGkoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7WGkuY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1CaChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPUJoKGIsbnVsbCxoLGYpKTpZaShhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZkZyhiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGxqKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/YWcoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmYWcoYSxiLmNvbnRleHQsITEpO0loKGEsYi5jb250YWluZXJJbmZvKX1cbmZ1bmN0aW9uIG1qKGEsYixjLGQsZSl7SWcoKTtKZyhlKTtiLmZsYWdzfD0yNTY7WWkoYSxiLGMsZCk7cmV0dXJuIGIuY2hpbGR9dmFyIG5qPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gb2ooYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fVxuZnVuY3Rpb24gcGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9TS5jdXJyZW50LGY9ITEsZz0wIT09KGIuZmxhZ3MmMTI4KSxoOyhoPWcpfHwoaD1udWxsIT09YSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZT8hMTowIT09KGUmMikpO2lmKGgpZj0hMCxiLmZsYWdzJj0tMTI5O2Vsc2UgaWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpZXw9MTtHKE0sZSYxKTtpZihudWxsPT09YSl7RWcoYik7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJihhPWEuZGVoeWRyYXRlZCxudWxsIT09YSkpcmV0dXJuIDA9PT0oYi5tb2RlJjEpP2IubGFuZXM9MTpcIiQhXCI9PT1hLmRhdGE/Yi5sYW5lcz04OmIubGFuZXM9MTA3Mzc0MTgyNCxudWxsO2c9ZC5jaGlsZHJlbjthPWQuZmFsbGJhY2s7cmV0dXJuIGY/KGQ9Yi5tb2RlLGY9Yi5jaGlsZCxnPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46Z30sMD09PShkJjEpJiZudWxsIT09Zj8oZi5jaGlsZExhbmVzPTAsZi5wZW5kaW5nUHJvcHM9XG5nKTpmPXFqKGcsZCwwLG51bGwpLGE9QWgoYSxkLGMsbnVsbCksZi5yZXR1cm49YixhLnJldHVybj1iLGYuc2libGluZz1hLGIuY2hpbGQ9ZixiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooYyksYi5tZW1vaXplZFN0YXRlPW5qLGEpOnJqKGIsZyl9ZT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUmJihoPWUuZGVoeWRyYXRlZCxudWxsIT09aCkpcmV0dXJuIHNqKGEsYixnLGQsaCxlLGMpO2lmKGYpe2Y9ZC5mYWxsYmFjaztnPWIubW9kZTtlPWEuY2hpbGQ7aD1lLnNpYmxpbmc7dmFyIGs9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpkLmNoaWxkcmVufTswPT09KGcmMSkmJmIuY2hpbGQhPT1lPyhkPWIuY2hpbGQsZC5jaGlsZExhbmVzPTAsZC5wZW5kaW5nUHJvcHM9ayxiLmRlbGV0aW9ucz1udWxsKTooZD13aChlLGspLGQuc3VidHJlZUZsYWdzPWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0KTtudWxsIT09aD9mPXdoKGgsZik6KGY9QWgoZixnLGMsbnVsbCksZi5mbGFnc3w9Mik7Zi5yZXR1cm49XG5iO2QucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kO2Q9ZjtmPWIuY2hpbGQ7Zz1hLmNoaWxkLm1lbW9pemVkU3RhdGU7Zz1udWxsPT09Zz9vaihjKTp7YmFzZUxhbmVzOmcuYmFzZUxhbmVzfGMsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc307Zi5tZW1vaXplZFN0YXRlPWc7Zi5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcyZ+YztiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGR9Zj1hLmNoaWxkO2E9Zi5zaWJsaW5nO2Q9d2goZix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSk7MD09PShiLm1vZGUmMSkmJihkLmxhbmVzPWMpO2QucmV0dXJuPWI7ZC5zaWJsaW5nPW51bGw7bnVsbCE9PWEmJihjPWIuZGVsZXRpb25zLG51bGw9PT1jPyhiLmRlbGV0aW9ucz1bYV0sYi5mbGFnc3w9MTYpOmMucHVzaChhKSk7Yi5jaGlsZD1kO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBkfVxuZnVuY3Rpb24gcmooYSxiKXtiPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmJ9LGEubW9kZSwwLG51bGwpO2IucmV0dXJuPWE7cmV0dXJuIGEuY2hpbGQ9Yn1mdW5jdGlvbiB0aihhLGIsYyxkKXtudWxsIT09ZCYmSmcoZCk7QmgoYixhLmNoaWxkLG51bGwsYyk7YT1yaihiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuKTthLmZsYWdzfD0yO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBhfVxuZnVuY3Rpb24gc2ooYSxiLGMsZCxlLGYsZyl7aWYoYyl7aWYoYi5mbGFncyYyNTYpcmV0dXJuIGIuZmxhZ3MmPS0yNTcsZD1MaShFcnJvcihwKDQyMikpKSx0aihhLGIsZyxkKTtpZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXJldHVybiBiLmNoaWxkPWEuY2hpbGQsYi5mbGFnc3w9MTI4LG51bGw7Zj1kLmZhbGxiYWNrO2U9Yi5tb2RlO2Q9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0sZSwwLG51bGwpO2Y9QWgoZixlLGcsbnVsbCk7Zi5mbGFnc3w9MjtkLnJldHVybj1iO2YucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kOzAhPT0oYi5tb2RlJjEpJiZCaChiLGEuY2hpbGQsbnVsbCxnKTtiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooZyk7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBmfWlmKDA9PT0oYi5tb2RlJjEpKXJldHVybiB0aihhLGIsZyxudWxsKTtpZihcIiQhXCI9PT1lLmRhdGEpe2Q9ZS5uZXh0U2libGluZyYmZS5uZXh0U2libGluZy5kYXRhc2V0O1xuaWYoZCl2YXIgaD1kLmRnc3Q7ZD1oO2Y9RXJyb3IocCg0MTkpKTtkPUxpKGYsZCx2b2lkIDApO3JldHVybiB0aihhLGIsZyxkKX1oPTAhPT0oZyZhLmNoaWxkTGFuZXMpO2lmKFVnfHxoKXtkPVI7aWYobnVsbCE9PWQpe3N3aXRjaChnJi1nKXtjYXNlIDQ6ZT0yO2JyZWFrO2Nhc2UgMTY6ZT04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDplPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmU9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6ZT0wfWU9MCE9PShlJihkLnN1c3BlbmRlZExhbmVzfGcpKT8wOmU7XG4wIT09ZSYmZSE9PWYucmV0cnlMYW5lJiYoZi5yZXRyeUxhbmU9ZSxaZyhhLGUpLG1oKGQsYSxlLC0xKSl9dWooKTtkPUxpKEVycm9yKHAoNDIxKSkpO3JldHVybiB0aihhLGIsZyxkKX1pZihcIiQ/XCI9PT1lLmRhdGEpcmV0dXJuIGIuZmxhZ3N8PTEyOCxiLmNoaWxkPWEuY2hpbGQsYj12ai5iaW5kKG51bGwsYSksZS5fcmVhY3RSZXRyeT1iLG51bGw7YT1mLnRyZWVDb250ZXh0O3lnPUxmKGUubmV4dFNpYmxpbmcpO3hnPWI7ST0hMDt6Zz1udWxsO251bGwhPT1hJiYob2dbcGcrK109cmcsb2dbcGcrK109c2csb2dbcGcrK109cWcscmc9YS5pZCxzZz1hLm92ZXJmbG93LHFnPWIpO2I9cmooYixkLmNoaWxkcmVuKTtiLmZsYWdzfD00MDk2O3JldHVybiBifWZ1bmN0aW9uIHdqKGEsYixjKXthLmxhbmVzfD1iO3ZhciBkPWEuYWx0ZXJuYXRlO251bGwhPT1kJiYoZC5sYW5lc3w9Yik7U2coYS5yZXR1cm4sYixjKX1cbmZ1bmN0aW9uIHhqKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmV9OihmLmlzQmFja3dhcmRzPWIsZi5yZW5kZXJpbmc9bnVsbCxmLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbE1vZGU9ZSl9XG5mdW5jdGlvbiB5aihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1lpKGEsYixkLmNoaWxkcmVuLGMpO2Q9TS5jdXJyZW50O2lmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKW51bGwhPT1hLm1lbW9pemVkU3RhdGUmJndqKGEsYyxiKTtlbHNlIGlmKDE5PT09YS50YWcpd2ooYSxjLGIpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1HKE0sZCk7aWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PU1oKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7eGooYiwhMSxlLGMsZik7YnJlYWs7Y2FzZSBcImJhY2t3YXJkc1wiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1NaChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9eGooYiwhMCxjLG51bGwsZik7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6eGooYiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gamooYSxiKXswPT09KGIubW9kZSYxKSYmbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mil9ZnVuY3Rpb24gJGkoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO2hofD1iLmxhbmVzO2lmKDA9PT0oYyZiLmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcihwKDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz13aChhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9d2goYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIHpqKGEsYixjKXtzd2l0Y2goYi50YWcpe2Nhc2UgMzpsaihiKTtJZygpO2JyZWFrO2Nhc2UgNTpLaChiKTticmVhaztjYXNlIDE6WmYoYi50eXBlKSYmY2coYik7YnJlYWs7Y2FzZSA0OkloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgZD1iLnR5cGUuX2NvbnRleHQsZT1iLm1lbW9pemVkUHJvcHMudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1lO2JyZWFrO2Nhc2UgMTM6ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQpe2lmKG51bGwhPT1kLmRlaHlkcmF0ZWQpcmV0dXJuIEcoTSxNLmN1cnJlbnQmMSksYi5mbGFnc3w9MTI4LG51bGw7aWYoMCE9PShjJmIuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIHBqKGEsYixjKTtHKE0sTS5jdXJyZW50JjEpO2E9JGkoYSxiLGMpO3JldHVybiBudWxsIT09YT9hLnNpYmxpbmc6bnVsbH1HKE0sTS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD0wIT09KGMmXG5iLmNoaWxkTGFuZXMpO2lmKDAhPT0oYS5mbGFncyYxMjgpKXtpZihkKXJldHVybiB5aihhLGIsYyk7Yi5mbGFnc3w9MTI4fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7RyhNLE0uY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gYi5sYW5lcz0wLGVqKGEsYixjKX1yZXR1cm4gJGkoYSxiLGMpfXZhciBBaixCaixDaixEajtcbkFqPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIuY2hpbGQ7bnVsbCE9PWM7KXtpZig1PT09Yy50YWd8fDY9PT1jLnRhZylhLmFwcGVuZENoaWxkKGMuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1jLnRhZyYmbnVsbCE9PWMuY2hpbGQpe2MuY2hpbGQucmV0dXJuPWM7Yz1jLmNoaWxkO2NvbnRpbnVlfWlmKGM9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1iKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fTtCaj1mdW5jdGlvbigpe307XG5Daj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLm1lbW9pemVkUHJvcHM7aWYoZSE9PWQpe2E9Yi5zdGF0ZU5vZGU7SGgoRWguY3VycmVudCk7dmFyIGY9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6ZT1ZYShhLGUpO2Q9WWEoYSxkKTtmPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjplPUEoe30sZSx7dmFsdWU6dm9pZCAwfSk7ZD1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2Y9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6ZT1nYihhLGUpO2Q9Z2IoYSxkKTtmPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGUub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGEub25jbGljaz1CZil9dWIoYyxkKTt2YXIgZztjPW51bGw7Zm9yKGwgaW4gZSlpZighZC5oYXNPd25Qcm9wZXJ0eShsKSYmZS5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9ZVtsXSlpZihcInN0eWxlXCI9PT1sKXt2YXIgaD1lW2xdO2ZvcihnIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShnKSYmXG4oY3x8KGM9e30pLGNbZ109XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwmJlwiY2hpbGRyZW5cIiE9PWwmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmXCJhdXRvRm9jdXNcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT9mfHwoZj1bXSk6KGY9Znx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gZCl7dmFyIGs9ZFtsXTtoPW51bGwhPWU/ZVtsXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShsKSYmayE9PWgmJihudWxsIT1rfHxudWxsIT1oKSlpZihcInN0eWxlXCI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT1cIlwiKTtmb3IoZyBpbiBrKWsuaGFzT3duUHJvcGVydHkoZykmJmhbZ10hPT1rW2ddJiYoY3x8KGM9e30pLGNbZ109a1tnXSl9ZWxzZSBjfHwoZnx8KGY9W10pLGYucHVzaChsLFxuYykpLGM9aztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZj1mfHxbXSkucHVzaChsLGspKTpcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCIhPT10eXBlb2YgayYmXCJudW1iZXJcIiE9PXR5cGVvZiBrfHwoZj1mfHxbXSkucHVzaChsLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/KG51bGwhPWsmJlwib25TY3JvbGxcIj09PWwmJkQoXCJzY3JvbGxcIixhKSxmfHxoPT09a3x8KGY9W10pKTooZj1mfHxbXSkucHVzaChsLGspKX1jJiYoZj1mfHxbXSkucHVzaChcInN0eWxlXCIsYyk7dmFyIGw9ZjtpZihiLnVwZGF0ZVF1ZXVlPWwpYi5mbGFnc3w9NH19O0RqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O1xuZnVuY3Rpb24gRWooYSxiKXtpZighSSlzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gUyhhKXt2YXIgYj1udWxsIT09YS5hbHRlcm5hdGUmJmEuYWx0ZXJuYXRlLmNoaWxkPT09YS5jaGlsZCxjPTAsZD0wO2lmKGIpZm9yKHZhciBlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0LGR8PWUuZmxhZ3MmMTQ2ODAwNjQsZS5yZXR1cm49YSxlPWUuc2libGluZztlbHNlIGZvcihlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzLGR8PWUuZmxhZ3MsZS5yZXR1cm49YSxlPWUuc2libGluZzthLnN1YnRyZWVGbGFnc3w9ZDthLmNoaWxkTGFuZXM9YztyZXR1cm4gYn1cbmZ1bmN0aW9uIEZqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wczt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBTKGIpLG51bGw7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDM6ZD1iLnN0YXRlTm9kZTtKaCgpO0UoV2YpO0UoSCk7T2goKTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpR2coYik/Yi5mbGFnc3w9NDpudWxsPT09YXx8YS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PShiLmZsYWdzJjI1Nil8fChiLmZsYWdzfD0xMDI0LG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSk7QmooYSxiKTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNTpMaChiKTt2YXIgZT1IaChHaC5jdXJyZW50KTtcbmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7UyhiKTtyZXR1cm4gbnVsbH1hPUhoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2RbUGZdPWY7YT0wIT09KGIubW9kZSYxKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixkKTtEKFwiY2xvc2VcIixkKTticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5kKTtEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGQsZik7RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwic2VsZWN0XCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoZCxmKSxEKFwiaW52YWxpZFwiLGQpfXViKGMsZik7ZT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LGgsYSksZT1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmQudGV4dENvbnRlbnQhPT1cIlwiK2gmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LFxuaCxhKSxlPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6ZWEuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWgmJlwib25TY3JvbGxcIj09PWcmJkQoXCJzY3JvbGxcIixkKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoZCk7ZGIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShkKTtqYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmKGQub25jbGljaz1CZil9ZD1lO2IudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmKGIuZmxhZ3N8PTQpfWVsc2V7Zz05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWEmJihhPWtiKGMpKTtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/XCJzY3JpcHRcIj09PWM/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlxuXCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGMse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoYyksXCJzZWxlY3RcIj09PWMmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGMpO2FbT2ZdPWI7YVtQZl09ZDtBaihhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7YTp7Zz12YihjLGQpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGEpO0QoXCJjbG9zZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sYSk7ZT1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5hKTtEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoYSxkKTtlPVlhKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZT1kO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07ZT1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoYSxkKTtlPWdiKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztkZWZhdWx0OmU9ZH11YihjLGUpO2g9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07XCJzdHlsZVwiPT09Zj9zYihhLGspOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWY/KGs9az9rLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmbmIoYSxrKSk6XCJjaGlsZHJlblwiPT09Zj9cInN0cmluZ1wiPT09dHlwZW9mIGs/KFwidGV4dGFyZWFcIiE9PVxuY3x8XCJcIiE9PWspJiZvYihhLGspOlwibnVtYmVyXCI9PT10eXBlb2YgayYmb2IoYSxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJihlYS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1mJiZEKFwic2Nyb2xsXCIsYSk6bnVsbCE9ayYmdGEoYSxmLGssZykpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShhKTtkYihhLGQsITEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGEpO2piKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIitTYShkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2Y9ZC52YWx1ZTtudWxsIT1mP2ZiKGEsISFkLm11bHRpcGxlLGYsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZmYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSxcbiEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXN3aXRjaChjKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmQ9ISFkLmF1dG9Gb2N1czticmVhayBhO2Nhc2UgXCJpbWdcIjpkPSEwO2JyZWFrIGE7ZGVmYXVsdDpkPSExfX1kJiYoYi5mbGFnc3w9NCl9bnVsbCE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpfVMoYik7cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKURqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO2M9SGgoR2guY3VycmVudCk7SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtpZihmPWQubm9kZVZhbHVlIT09YylpZihhPVxueGcsbnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6QWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSk7YnJlYWs7Y2FzZSA1OiEwIT09YS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSl9ZiYmKGIuZmxhZ3N8PTQpfWVsc2UgZD0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGQpLGRbT2ZdPWIsYi5zdGF0ZU5vZGU9ZH1TKGIpO3JldHVybiBudWxsO2Nhc2UgMTM6RShNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihJJiZudWxsIT09eWcmJjAhPT0oYi5tb2RlJjEpJiYwPT09KGIuZmxhZ3MmMTI4KSlIZygpLElnKCksYi5mbGFnc3w9OTg1NjAsZj0hMTtlbHNlIGlmKGY9R2coYiksbnVsbCE9PWQmJm51bGwhPT1kLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1cbmEpe2lmKCFmKXRocm93IEVycm9yKHAoMzE4KSk7Zj1iLm1lbW9pemVkU3RhdGU7Zj1udWxsIT09Zj9mLmRlaHlkcmF0ZWQ6bnVsbDtpZighZil0aHJvdyBFcnJvcihwKDMxNykpO2ZbT2ZdPWJ9ZWxzZSBJZygpLDA9PT0oYi5mbGFncyYxMjgpJiYoYi5tZW1vaXplZFN0YXRlPW51bGwpLGIuZmxhZ3N8PTQ7UyhiKTtmPSExfWVsc2UgbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpLGY9ITA7aWYoIWYpcmV0dXJuIGIuZmxhZ3MmNjU1MzY/YjpudWxsfWlmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBiLmxhbmVzPWMsYjtkPW51bGwhPT1kO2QhPT0obnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUpJiZkJiYoYi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KGIubW9kZSYxKSYmKG51bGw9PT1hfHwwIT09KE0uY3VycmVudCYxKT8wPT09VCYmKFQ9Myk6dWooKSkpO251bGwhPT1iLnVwZGF0ZVF1ZXVlJiYoYi5mbGFnc3w9NCk7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksXG5CaihhLGIpLG51bGw9PT1hJiZzZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxTKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxTKGIpLG51bGw7Y2FzZSAxNzpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAxOTpFKE0pO2Y9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1mKXJldHVybiBTKGIpLG51bGw7ZD0wIT09KGIuZmxhZ3MmMTI4KTtnPWYucmVuZGVyaW5nO2lmKG51bGw9PT1nKWlmKGQpRWooZiwhMSk7ZWxzZXtpZigwIT09VHx8bnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPU1oKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD0xMjg7RWooZiwhMSk7ZD1nLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1kLGIuZmxhZ3N8PTQpO2Iuc3VidHJlZUZsYWdzPTA7ZD1jO2ZvcihjPWIuY2hpbGQ7bnVsbCE9PWM7KWY9YyxhPWQsZi5mbGFncyY9MTQ2ODAwNjYsXG5nPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYuc3VidHJlZUZsYWdzPTAsZi5tZW1vaXplZFByb3BzPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwsZi51cGRhdGVRdWV1ZT1udWxsLGYuZGVwZW5kZW5jaWVzPW51bGwsZi5zdGF0ZU5vZGU9bnVsbCk6KGYuY2hpbGRMYW5lcz1nLmNoaWxkTGFuZXMsZi5sYW5lcz1nLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLnN1YnRyZWVGbGFncz0wLGYuZGVsZXRpb25zPW51bGwsZi5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxmLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGYudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmLnR5cGU9Zy50eXBlLGE9Zy5kZXBlbmRlbmNpZXMsZi5kZXBlbmRlbmNpZXM9bnVsbD09PWE/bnVsbDp7bGFuZXM6YS5sYW5lcyxmaXJzdENvbnRleHQ6YS5maXJzdENvbnRleHR9KSxjPWMuc2libGluZztHKE0sTS5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9YT1cbmEuc2libGluZ31udWxsIT09Zi50YWlsJiZCKCk+SGomJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIWQpaWYoYT1NaChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9MTI4LGQ9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZmxhZ3N8PTQpLEVqKGYsITApLG51bGw9PT1mLnRhaWwmJlwiaGlkZGVuXCI9PT1mLnRhaWxNb2RlJiYhZy5hbHRlcm5hdGUmJiFJKXJldHVybiBTKGIpLG51bGx9ZWxzZSAyKkIoKS1mLnJlbmRlcmluZ1N0YXJ0VGltZT5IaiYmMTA3Mzc0MTgyNCE9PWMmJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpO2YuaXNCYWNrd2FyZHM/KGcuc2libGluZz1iLmNoaWxkLGIuY2hpbGQ9Zyk6KGM9Zi5sYXN0LG51bGwhPT1jP2Muc2libGluZz1nOmIuY2hpbGQ9ZyxmLmxhc3Q9Zyl9aWYobnVsbCE9PWYudGFpbClyZXR1cm4gYj1mLnRhaWwsZi5yZW5kZXJpbmc9XG5iLGYudGFpbD1iLnNpYmxpbmcsZi5yZW5kZXJpbmdTdGFydFRpbWU9QigpLGIuc2libGluZz1udWxsLGM9TS5jdXJyZW50LEcoTSxkP2MmMXwyOmMmMSksYjtTKGIpO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxkPW51bGwhPT1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUhPT1kJiYoYi5mbGFnc3w9ODE5MiksZCYmMCE9PShiLm1vZGUmMSk/MCE9PShnaiYxMDczNzQxODI0KSYmKFMoYiksYi5zdWJ0cmVlRmxhZ3MmNiYmKGIuZmxhZ3N8PTgxOTIpKTpTKGIpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fVxuZnVuY3Rpb24gSmooYSxiKXt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxhPWIuZmxhZ3MsYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDM6cmV0dXJuIEpoKCksRShXZiksRShIKSxPaCgpLGE9Yi5mbGFncywwIT09KGEmNjU1MzYpJiYwPT09KGEmMTI4KT8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDU6cmV0dXJuIExoKGIpLG51bGw7Y2FzZSAxMzpFKE0pO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXtpZihudWxsPT09Yi5hbHRlcm5hdGUpdGhyb3cgRXJyb3IocCgzNDApKTtJZygpfWE9Yi5mbGFncztyZXR1cm4gYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDE5OnJldHVybiBFKE0pLG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxcbm51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgS2o9ITEsVT0hMSxMaj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxWPW51bGw7ZnVuY3Rpb24gTWooYSxiKXt2YXIgYz1hLnJlZjtpZihudWxsIT09YylpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyl0cnl7YyhudWxsKX1jYXRjaChkKXtXKGEsYixkKX1lbHNlIGMuY3VycmVudD1udWxsfWZ1bmN0aW9uIE5qKGEsYixjKXt0cnl7YygpfWNhdGNoKGQpe1coYSxiLGQpfX12YXIgT2o9ITE7XG5mdW5jdGlvbiBQaihhLGIpe0NmPWRkO2E9TWUoKTtpZihOZShhKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGQ9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoZCYmMCE9PWQucmFuZ2VDb3VudCl7Yz1kLmFuY2hvck5vZGU7dmFyIGU9ZC5hbmNob3JPZmZzZXQsZj1kLmZvY3VzTm9kZTtkPWQuZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChGKXtjPW51bGw7YnJlYWsgYX12YXIgZz0wLGg9LTEsaz0tMSxsPTAsbT0wLHE9YSxyPW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgeTs7KXtxIT09Y3x8MCE9PWUmJjMhPT1xLm5vZGVUeXBlfHwoaD1nK2UpO3EhPT1mfHwwIT09ZCYmMyE9PXEubm9kZVR5cGV8fChrPWcrZCk7Mz09PXEubm9kZVR5cGUmJihnKz1cbnEubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh5PXEuZmlyc3RDaGlsZCkpYnJlYWs7cj1xO3E9eX1mb3IoOzspe2lmKHE9PT1hKWJyZWFrIGI7cj09PWMmJisrbD09PWUmJihoPWcpO3I9PT1mJiYrK209PT1kJiYoaz1nKTtpZihudWxsIT09KHk9cS5uZXh0U2libGluZykpYnJlYWs7cT1yO3I9cS5wYXJlbnROb2RlfXE9eX1jPS0xPT09aHx8LTE9PT1rP251bGw6e3N0YXJ0OmgsZW5kOmt9fWVsc2UgYz1udWxsfWM9Y3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgYz1udWxsO0RmPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9O2RkPSExO2ZvcihWPWI7bnVsbCE9PVY7KWlmKGI9VixhPWIuY2hpbGQsMCE9PShiLnN1YnRyZWVGbGFncyYxMDI4KSYmbnVsbCE9PWEpYS5yZXR1cm49YixWPWE7ZWxzZSBmb3IoO251bGwhPT1WOyl7Yj1WO3RyeXt2YXIgbj1iLmFsdGVybmF0ZTtpZigwIT09KGIuZmxhZ3MmMTAyNCkpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO1xuY2FzZSAxOmlmKG51bGwhPT1uKXt2YXIgdD1uLm1lbW9pemVkUHJvcHMsSj1uLm1lbW9pemVkU3RhdGUseD1iLnN0YXRlTm9kZSx3PXguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT90OkxnKGIudHlwZSx0KSxKKTt4Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXd9YnJlYWs7Y2FzZSAzOnZhciB1PWIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXUubm9kZVR5cGU/dS50ZXh0Q29udGVudD1cIlwiOjk9PT11Lm5vZGVUeXBlJiZ1LmRvY3VtZW50RWxlbWVudCYmdS5yZW1vdmVDaGlsZCh1LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fX1jYXRjaChGKXtXKGIsYi5yZXR1cm4sRil9YT1iLnNpYmxpbmc7aWYobnVsbCE9PWEpe2EucmV0dXJuPWIucmV0dXJuO1Y9YTticmVha31WPWIucmV0dXJufW49T2o7T2o9ITE7cmV0dXJuIG59XG5mdW5jdGlvbiBRaihhLGIsYyl7dmFyIGQ9Yi51cGRhdGVRdWV1ZTtkPW51bGwhPT1kP2QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1kKXt2YXIgZT1kPWQubmV4dDtkb3tpZigoZS50YWcmYSk9PT1hKXt2YXIgZj1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1mJiZOaihiLGMsZil9ZT1lLm5leHR9d2hpbGUoZSE9PWQpfX1mdW5jdGlvbiBSaihhLGIpe2I9Yi51cGRhdGVRdWV1ZTtiPW51bGwhPT1iP2IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1iKXt2YXIgYz1iPWIubmV4dDtkb3tpZigoYy50YWcmYSk9PT1hKXt2YXIgZD1jLmNyZWF0ZTtjLmRlc3Ryb3k9ZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gU2ooYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpe3ZhciBjPWEuc3RhdGVOb2RlO3N3aXRjaChhLnRhZyl7Y2FzZSA1OmE9YzticmVhaztkZWZhdWx0OmE9Y31cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmIuY3VycmVudD1hfX1cbmZ1bmN0aW9uIFRqKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO251bGwhPT1iJiYoYS5hbHRlcm5hdGU9bnVsbCxUaihiKSk7YS5jaGlsZD1udWxsO2EuZGVsZXRpb25zPW51bGw7YS5zaWJsaW5nPW51bGw7NT09PWEudGFnJiYoYj1hLnN0YXRlTm9kZSxudWxsIT09YiYmKGRlbGV0ZSBiW09mXSxkZWxldGUgYltQZl0sZGVsZXRlIGJbb2ZdLGRlbGV0ZSBiW1FmXSxkZWxldGUgYltSZl0pKTthLnN0YXRlTm9kZT1udWxsO2EucmV0dXJuPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIFVqKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gVmooYSl7YTpmb3IoOzspe2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8VWooYS5yZXR1cm4pKXJldHVybiBudWxsO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjtmb3IoYT1hLnNpYmxpbmc7NSE9PWEudGFnJiY2IT09YS50YWcmJjE4IT09YS50YWc7KXtpZihhLmZsYWdzJjIpY29udGludWUgYTtpZihudWxsPT09YS5jaGlsZHx8ND09PWEudGFnKWNvbnRpbnVlIGE7ZWxzZSBhLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZH1pZighKGEuZmxhZ3MmMikpcmV0dXJuIGEuc3RhdGVOb2RlfX1cbmZ1bmN0aW9uIFdqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1CZikpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihXaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVdqKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFhqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoWGooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylYaihhLGIsYyksYT1hLnNpYmxpbmd9dmFyIFg9bnVsbCxZaj0hMTtmdW5jdGlvbiBaaihhLGIsYyl7Zm9yKGM9Yy5jaGlsZDtudWxsIT09YzspYWsoYSxiLGMpLGM9Yy5zaWJsaW5nfVxuZnVuY3Rpb24gYWsoYSxiLGMpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclVubW91bnQpdHJ5e2xjLm9uQ29tbWl0RmliZXJVbm1vdW50KGtjLGMpfWNhdGNoKGgpe31zd2l0Y2goYy50YWcpe2Nhc2UgNTpVfHxNaihjLGIpO2Nhc2UgNjp2YXIgZD1YLGU9WWo7WD1udWxsO1pqKGEsYixjKTtYPWQ7WWo9ZTtudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyk6YS5yZW1vdmVDaGlsZChjKSk6WC5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/S2YoYS5wYXJlbnROb2RlLGMpOjE9PT1hLm5vZGVUeXBlJiZLZihhLGMpLGJkKGEpKTpLZihYLGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmQ9WDtlPVlqO1g9Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDtcblpqKGEsYixjKTtYPWQ7WWo9ZTticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVUmJihkPWMudXBkYXRlUXVldWUsbnVsbCE9PWQmJihkPWQubGFzdEVmZmVjdCxudWxsIT09ZCkpKXtlPWQ9ZC5uZXh0O2Rve3ZhciBmPWUsZz1mLmRlc3Ryb3k7Zj1mLnRhZzt2b2lkIDAhPT1nJiYoMCE9PShmJjIpP05qKGMsYixnKTowIT09KGYmNCkmJk5qKGMsYixnKSk7ZT1lLm5leHR9d2hpbGUoZSE9PWQpfVpqKGEsYixjKTticmVhaztjYXNlIDE6aWYoIVUmJihNaihjLGIpLGQ9Yy5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtkLnByb3BzPWMubWVtb2l6ZWRQcm9wcyxkLnN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxkLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goaCl7VyhjLGIsaCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjE6WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjI6Yy5tb2RlJjE/KFU9KGQ9VSl8fG51bGwhPT1cbmMubWVtb2l6ZWRTdGF0ZSxaaihhLGIsYyksVT1kKTpaaihhLGIsYyk7YnJlYWs7ZGVmYXVsdDpaaihhLGIsYyl9fWZ1bmN0aW9uIGJrKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IExqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9Y2suYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG5mdW5jdGlvbiBkayhhLGIpe3ZhciBjPWIuZGVsZXRpb25zO2lmKG51bGwhPT1jKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO3RyeXt2YXIgZj1hLGc9YixoPWc7YTpmb3IoO251bGwhPT1oOyl7c3dpdGNoKGgudGFnKXtjYXNlIDU6WD1oLnN0YXRlTm9kZTtZaj0hMTticmVhayBhO2Nhc2UgMzpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYTtjYXNlIDQ6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGF9aD1oLnJldHVybn1pZihudWxsPT09WCl0aHJvdyBFcnJvcihwKDE2MCkpO2FrKGYsZyxlKTtYPW51bGw7WWo9ITE7dmFyIGs9ZS5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLnJldHVybj1udWxsKTtlLnJldHVybj1udWxsfWNhdGNoKGwpe1coZSxiLGwpfX1pZihiLnN1YnRyZWVGbGFncyYxMjg1NClmb3IoYj1iLmNoaWxkO251bGwhPT1iOyllayhiLGEpLGI9Yi5zaWJsaW5nfVxuZnVuY3Rpb24gZWsoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZSxkPWEuZmxhZ3M7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6ZGsoYixhKTtmayhhKTtpZihkJjQpe3RyeXtRaigzLGEsYS5yZXR1cm4pLFJqKDMsYSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfXRyeXtRaig1LGEsYS5yZXR1cm4pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTticmVhaztjYXNlIDU6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2lmKGEuZmxhZ3MmMzIpe3ZhciBlPWEuc3RhdGVOb2RlO3RyeXtvYihlLFwiXCIpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19aWYoZCY0JiYoZT1hLnN0YXRlTm9kZSxudWxsIT1lKSl7dmFyIGY9YS5tZW1vaXplZFByb3BzLGc9bnVsbCE9PWM/Yy5tZW1vaXplZFByb3BzOmYsaD1hLnR5cGUsaz1hLnVwZGF0ZVF1ZXVlO1xuYS51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1rKXRyeXtcImlucHV0XCI9PT1oJiZcInJhZGlvXCI9PT1mLnR5cGUmJm51bGwhPWYubmFtZSYmYWIoZSxmKTt2YihoLGcpO3ZhciBsPXZiKGgsZik7Zm9yKGc9MDtnPGsubGVuZ3RoO2crPTIpe3ZhciBtPWtbZ10scT1rW2crMV07XCJzdHlsZVwiPT09bT9zYihlLHEpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PW0/bmIoZSxxKTpcImNoaWxkcmVuXCI9PT1tP29iKGUscSk6dGEoZSxtLHEsbCl9c3dpdGNoKGgpe2Nhc2UgXCJpbnB1dFwiOmJiKGUsZik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoZSxmKTticmVhaztjYXNlIFwic2VsZWN0XCI6dmFyIHI9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWYubXVsdGlwbGU7dmFyIHk9Zi52YWx1ZTtudWxsIT15P2ZiKGUsISFmLm11bHRpcGxlLHksITEpOnIhPT0hIWYubXVsdGlwbGUmJihudWxsIT1mLmRlZmF1bHRWYWx1ZT9mYihlLCEhZi5tdWx0aXBsZSxcbmYuZGVmYXVsdFZhbHVlLCEwKTpmYihlLCEhZi5tdWx0aXBsZSxmLm11bHRpcGxlP1tdOlwiXCIsITEpKX1lW1BmXT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXtpZihudWxsPT09YS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjIpKTtlPWEuc3RhdGVOb2RlO2Y9YS5tZW1vaXplZFByb3BzO3RyeXtlLm5vZGVWYWx1ZT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmRrKGIsYSk7ZmsoYSk7aWYoZCY0JiZudWxsIT09YyYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7YmQoYi5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9YnJlYWs7Y2FzZSA0OmRrKGIsYSk7ZmsoYSk7YnJlYWs7Y2FzZSAxMzpkayhiLGEpO2ZrKGEpO2U9YS5jaGlsZDtlLmZsYWdzJjgxOTImJihmPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsZS5zdGF0ZU5vZGUuaXNIaWRkZW49ZiwhZnx8XG5udWxsIT09ZS5hbHRlcm5hdGUmJm51bGwhPT1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoZ2s9QigpKSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIyOm09bnVsbCE9PWMmJm51bGwhPT1jLm1lbW9pemVkU3RhdGU7YS5tb2RlJjE/KFU9KGw9VSl8fG0sZGsoYixhKSxVPWwpOmRrKGIsYSk7ZmsoYSk7aWYoZCY4MTkyKXtsPW51bGwhPT1hLm1lbW9pemVkU3RhdGU7aWYoKGEuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhbSYmMCE9PShhLm1vZGUmMSkpZm9yKFY9YSxtPWEuY2hpbGQ7bnVsbCE9PW07KXtmb3IocT1WPW07bnVsbCE9PVY7KXtyPVY7eT1yLmNoaWxkO3N3aXRjaChyLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlFqKDQscixyLnJldHVybik7YnJlYWs7Y2FzZSAxOk1qKHIsci5yZXR1cm4pO3ZhciBuPXIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxVbm1vdW50KXtkPXI7Yz1yLnJldHVybjt0cnl7Yj1kLG4ucHJvcHM9XG5iLm1lbW9pemVkUHJvcHMsbi5zdGF0ZT1iLm1lbW9pemVkU3RhdGUsbi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe1coZCxjLHQpfX1icmVhaztjYXNlIDU6TWoocixyLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09ci5tZW1vaXplZFN0YXRlKXtoayhxKTtjb250aW51ZX19bnVsbCE9PXk/KHkucmV0dXJuPXIsVj15KTpoayhxKX1tPW0uc2libGluZ31hOmZvcihtPW51bGwscT1hOzspe2lmKDU9PT1xLnRhZyl7aWYobnVsbD09PW0pe209cTt0cnl7ZT1xLnN0YXRlTm9kZSxsPyhmPWUuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihoPXEuc3RhdGVOb2RlLGs9cS5tZW1vaXplZFByb3BzLnN0eWxlLGc9dm9pZCAwIT09ayYmbnVsbCE9PWsmJmsuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2suZGlzcGxheTpudWxsLGguc3R5bGUuZGlzcGxheT1cbnJiKFwiZGlzcGxheVwiLGcpKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fX1lbHNlIGlmKDY9PT1xLnRhZyl7aWYobnVsbD09PW0pdHJ5e3Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1sP1wiXCI6cS5tZW1vaXplZFByb3BzfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19ZWxzZSBpZigoMjIhPT1xLnRhZyYmMjMhPT1xLnRhZ3x8bnVsbD09PXEubWVtb2l6ZWRTdGF0ZXx8cT09PWEpJiZudWxsIT09cS5jaGlsZCl7cS5jaGlsZC5yZXR1cm49cTtxPXEuY2hpbGQ7Y29udGludWV9aWYocT09PWEpYnJlYWsgYTtmb3IoO251bGw9PT1xLnNpYmxpbmc7KXtpZihudWxsPT09cS5yZXR1cm58fHEucmV0dXJuPT09YSlicmVhayBhO209PT1xJiYobT1udWxsKTtxPXEucmV0dXJufW09PT1xJiYobT1udWxsKTtxLnNpYmxpbmcucmV0dXJuPXEucmV0dXJuO3E9cS5zaWJsaW5nfX1icmVhaztjYXNlIDE5OmRrKGIsYSk7ZmsoYSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6ZGsoYixcbmEpLGZrKGEpfX1mdW5jdGlvbiBmayhhKXt2YXIgYj1hLmZsYWdzO2lmKGImMil7dHJ5e2E6e2Zvcih2YXIgYz1hLnJldHVybjtudWxsIT09Yzspe2lmKFVqKGMpKXt2YXIgZD1jO2JyZWFrIGF9Yz1jLnJldHVybn10aHJvdyBFcnJvcihwKDE2MCkpO31zd2l0Y2goZC50YWcpe2Nhc2UgNTp2YXIgZT1kLnN0YXRlTm9kZTtkLmZsYWdzJjMyJiYob2IoZSxcIlwiKSxkLmZsYWdzJj0tMzMpO3ZhciBmPVZqKGEpO1hqKGEsZixlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBnPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saD1WaihhKTtXaihhLGgsZyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MSkpO319Y2F0Y2goayl7VyhhLGEucmV0dXJuLGspfWEuZmxhZ3MmPS0zfWImNDA5NiYmKGEuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBpayhhLGIsYyl7Vj1hO2prKGEsYixjKX1cbmZ1bmN0aW9uIGprKGEsYixjKXtmb3IodmFyIGQ9MCE9PShhLm1vZGUmMSk7bnVsbCE9PVY7KXt2YXIgZT1WLGY9ZS5jaGlsZDtpZigyMj09PWUudGFnJiZkKXt2YXIgZz1udWxsIT09ZS5tZW1vaXplZFN0YXRlfHxLajtpZighZyl7dmFyIGg9ZS5hbHRlcm5hdGUsaz1udWxsIT09aCYmbnVsbCE9PWgubWVtb2l6ZWRTdGF0ZXx8VTtoPUtqO3ZhciBsPVU7S2o9ZztpZigoVT1rKSYmIWwpZm9yKFY9ZTtudWxsIT09VjspZz1WLGs9Zy5jaGlsZCwyMj09PWcudGFnJiZudWxsIT09Zy5tZW1vaXplZFN0YXRlP2trKGUpOm51bGwhPT1rPyhrLnJldHVybj1nLFY9ayk6a2soZSk7Zm9yKDtudWxsIT09ZjspVj1mLGprKGYsYixjKSxmPWYuc2libGluZztWPWU7S2o9aDtVPWx9bGsoYSxiLGMpfWVsc2UgMCE9PShlLnN1YnRyZWVGbGFncyY4NzcyKSYmbnVsbCE9PWY/KGYucmV0dXJuPWUsVj1mKTpsayhhLGIsYyl9fVxuZnVuY3Rpb24gbGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXt2YXIgYz1iLmFsdGVybmF0ZTt0cnl7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpVfHxSaig1LGIpO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihiLmZsYWdzJjQmJiFVKWlmKG51bGw9PT1jKWQuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBlPWIuZWxlbWVudFR5cGU9PT1iLnR5cGU/Yy5tZW1vaXplZFByb3BzOkxnKGIudHlwZSxjLm1lbW9pemVkUHJvcHMpO2QuY29tcG9uZW50RGlkVXBkYXRlKGUsYy5tZW1vaXplZFN0YXRlLGQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBmPWIudXBkYXRlUXVldWU7bnVsbCE9PWYmJmloKGIsZixkKTticmVhaztjYXNlIDM6dmFyIGc9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09Zyl7Yz1udWxsO2lmKG51bGwhPT1iLmNoaWxkKXN3aXRjaChiLmNoaWxkLnRhZyl7Y2FzZSA1OmM9XG5iLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6Yz1iLmNoaWxkLnN0YXRlTm9kZX1paChiLGcsYyl9YnJlYWs7Y2FzZSA1OnZhciBoPWIuc3RhdGVOb2RlO2lmKG51bGw9PT1jJiZiLmZsYWdzJjQpe2M9aDt2YXIgaz1iLm1lbW9pemVkUHJvcHM7c3dpdGNoKGIudHlwZSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjprLmF1dG9Gb2N1cyYmYy5mb2N1cygpO2JyZWFrO2Nhc2UgXCJpbWdcIjprLnNyYyYmKGMuc3JjPWsuc3JjKX19YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PWIubWVtb2l6ZWRTdGF0ZSl7dmFyIGw9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWwpe3ZhciBtPWwubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bSl7dmFyIHE9bS5kZWh5ZHJhdGVkO251bGwhPT1xJiZiZChxKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI1OmJyZWFrO1xuZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO31VfHxiLmZsYWdzJjUxMiYmU2ooYil9Y2F0Y2gocil7VyhiLGIucmV0dXJuLHIpfX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfWM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19ZnVuY3Rpb24gaGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgYz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO3RyeXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIGM9Yi5yZXR1cm47dHJ5e1JqKDQsYil9Y2F0Y2goayl7VyhiLGMsayl9YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZE1vdW50KXt2YXIgZT1iLnJldHVybjt0cnl7ZC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGspe1coYixlLGspfX12YXIgZj1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGYsayl9YnJlYWs7Y2FzZSA1OnZhciBnPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZyxrKX19fWNhdGNoKGspe1coYixiLnJldHVybixrKX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBoPWIuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Yi5yZXR1cm47Vj1oO2JyZWFrfVY9Yi5yZXR1cm59fVxudmFyIG1rPU1hdGguY2VpbCxuaz11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLG9rPXVhLlJlYWN0Q3VycmVudE93bmVyLHBrPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEs9MCxSPW51bGwsWT1udWxsLFo9MCxnaj0wLGZqPVVmKDApLFQ9MCxxaz1udWxsLGhoPTAscms9MCxzaz0wLHRrPW51bGwsdWs9bnVsbCxnaz0wLEhqPUluZmluaXR5LHZrPW51bGwsUGk9ITEsUWk9bnVsbCxTaT1udWxsLHdrPSExLHhrPW51bGwseWs9MCx6az0wLEFrPW51bGwsQms9LTEsQ2s9MDtmdW5jdGlvbiBMKCl7cmV0dXJuIDAhPT0oSyY2KT9CKCk6LTEhPT1Caz9CazpCaz1CKCl9XG5mdW5jdGlvbiBsaChhKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gMTtpZigwIT09KEsmMikmJjAhPT1aKXJldHVybiBaJi1aO2lmKG51bGwhPT1LZy50cmFuc2l0aW9uKXJldHVybiAwPT09Q2smJihDaz15YygpKSxDazthPUM7aWYoMCE9PWEpcmV0dXJuIGE7YT13aW5kb3cuZXZlbnQ7YT12b2lkIDA9PT1hPzE2OmpkKGEudHlwZSk7cmV0dXJuIGF9ZnVuY3Rpb24gbWgoYSxiLGMsZCl7aWYoNTA8emspdGhyb3cgems9MCxBaz1udWxsLEVycm9yKHAoMTg1KSk7QWMoYSxjLGQpO2lmKDA9PT0oSyYyKXx8YSE9PVIpYT09PVImJigwPT09KEsmMikmJihya3w9YyksND09PVQmJkRrKGEsWikpLEVrKGEsZCksMT09PWMmJjA9PT1LJiYwPT09KGIubW9kZSYxKSYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfVxuZnVuY3Rpb24gRWsoYSxiKXt2YXIgYz1hLmNhbGxiYWNrTm9kZTt3YyhhLGIpO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZCludWxsIT09YyYmYmMoYyksYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKGI9ZCYtZCxhLmNhbGxiYWNrUHJpb3JpdHkhPT1iKXtudWxsIT1jJiZiYyhjKTtpZigxPT09YikwPT09YS50YWc/aWcoRmsuYmluZChudWxsLGEpKTpoZyhGay5iaW5kKG51bGwsYSkpLEpmKGZ1bmN0aW9uKCl7MD09PShLJjYpJiZqZygpfSksYz1udWxsO2Vsc2V7c3dpdGNoKERjKGQpKXtjYXNlIDE6Yz1mYzticmVhaztjYXNlIDQ6Yz1nYzticmVhaztjYXNlIDE2OmM9aGM7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6Yz1qYzticmVhaztkZWZhdWx0OmM9aGN9Yz1HayhjLEhrLmJpbmQobnVsbCxhKSl9YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319XG5mdW5jdGlvbiBIayhhLGIpe0JrPS0xO0NrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7dmFyIGM9YS5jYWxsYmFja05vZGU7aWYoSWsoKSYmYS5jYWxsYmFja05vZGUhPT1jKXJldHVybiBudWxsO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZClyZXR1cm4gbnVsbDtpZigwIT09KGQmMzApfHwwIT09KGQmYS5leHBpcmVkTGFuZXMpfHxiKWI9SmsoYSxkKTtlbHNle2I9ZDt2YXIgZT1LO0t8PTI7dmFyIGY9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxIaj1CKCkrNTAwLExrKGEsYik7ZG8gdHJ5e01rKCk7YnJlYWt9Y2F0Y2goaCl7TmsoYSxoKX13aGlsZSgxKTtRZygpO25rLmN1cnJlbnQ9ZjtLPWU7bnVsbCE9PVk/Yj0wOihSPW51bGwsWj0wLGI9VCl9aWYoMCE9PWIpezI9PT1iJiYoZT14YyhhKSwwIT09ZSYmKGQ9ZSxiPU9rKGEsZSkpKTtpZigxPT09Yil0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYztpZig2PT09YilEayhhLGQpO1xuZWxzZXtlPWEuY3VycmVudC5hbHRlcm5hdGU7aWYoMD09PShkJjMwKSYmIVBrKGUpJiYoYj1KayhhLGQpLDI9PT1iJiYoZj14YyhhKSwwIT09ZiYmKGQ9ZixiPU9rKGEsZikpKSwxPT09YikpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7YS5maW5pc2hlZFdvcms9ZTthLmZpbmlzaGVkTGFuZXM9ZDtzd2l0Y2goYil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihwKDM0NSkpO2Nhc2UgMjpRayhhLHVrLHZrKTticmVhaztjYXNlIDM6RGsoYSxkKTtpZigoZCYxMzAwMjM0MjQpPT09ZCYmKGI9Z2srNTAwLUIoKSwxMDxiKSl7aWYoMCE9PXVjKGEsMCkpYnJlYWs7ZT1hLnN1c3BlbmRlZExhbmVzO2lmKChlJmQpIT09ZCl7TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmZTticmVha31hLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGIpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNDpEayhhLGQpO2lmKChkJjQxOTQyNDApPT09XG5kKWJyZWFrO2I9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8ZDspe3ZhciBnPTMxLW9jKGQpO2Y9MTw8ZztnPWJbZ107Zz5lJiYoZT1nKTtkJj1+Zn1kPWU7ZD1CKCktZDtkPSgxMjA+ZD8xMjA6NDgwPmQ/NDgwOjEwODA+ZD8xMDgwOjE5MjA+ZD8xOTIwOjNFMz5kPzNFMzo0MzIwPmQ/NDMyMDoxOTYwKm1rKGQvMTk2MCkpLWQ7aWYoMTA8ZCl7YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxkKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDU6UWsoYSx1ayx2ayk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMyOSkpO319fUVrKGEsQigpKTtyZXR1cm4gYS5jYWxsYmFja05vZGU9PT1jP0hrLmJpbmQobnVsbCxhKTpudWxsfVxuZnVuY3Rpb24gT2soYSxiKXt2YXIgYz10azthLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihMayhhLGIpLmZsYWdzfD0yNTYpO2E9SmsoYSxiKTsyIT09YSYmKGI9dWssdWs9YyxudWxsIT09YiYmR2ooYikpO3JldHVybiBhfWZ1bmN0aW9uIEdqKGEpe251bGw9PT11az91az1hOnVrLnB1c2guYXBwbHkodWssYSl9XG5mdW5jdGlvbiBQayhhKXtmb3IodmFyIGI9YTs7KXtpZihiLmZsYWdzJjE2Mzg0KXt2YXIgYz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1jJiYoYz1jLnN0b3JlcyxudWxsIT09YykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7aWYoIUhlKGYoKSxlKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4hMX19fWM9Yi5jaGlsZDtpZihiLnN1YnRyZWVGbGFncyYxNjM4NCYmbnVsbCE9PWMpYy5yZXR1cm49YixiPWM7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4hMDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiEwfVxuZnVuY3Rpb24gRGsoYSxiKXtiJj1+c2s7YiY9fnJrO2Euc3VzcGVuZGVkTGFuZXN8PWI7YS5waW5nZWRMYW5lcyY9fmI7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxiOyl7dmFyIGM9MzEtb2MoYiksZD0xPDxjO2FbY109LTE7YiY9fmR9fWZ1bmN0aW9uIEZrKGEpe2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO0lrKCk7dmFyIGI9dWMoYSwwKTtpZigwPT09KGImMSkpcmV0dXJuIEVrKGEsQigpKSxudWxsO3ZhciBjPUprKGEsYik7aWYoMCE9PWEudGFnJiYyPT09Yyl7dmFyIGQ9eGMoYSk7MCE9PWQmJihiPWQsYz1PayhhLGQpKX1pZigxPT09Yyl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxiKSxFayhhLEIoKSksYztpZig2PT09Yyl0aHJvdyBFcnJvcihwKDM0NSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7UWsoYSx1ayx2ayk7RWsoYSxCKCkpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gUmsoYSxiKXt2YXIgYz1LO0t8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7Sz1jLDA9PT1LJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9fWZ1bmN0aW9uIFNrKGEpe251bGwhPT14ayYmMD09PXhrLnRhZyYmMD09PShLJjYpJiZJaygpO3ZhciBiPUs7S3w9MTt2YXIgYz1way50cmFuc2l0aW9uLGQ9Qzt0cnl7aWYocGsudHJhbnNpdGlvbj1udWxsLEM9MSxhKXJldHVybiBhKCl9ZmluYWxseXtDPWQscGsudHJhbnNpdGlvbj1jLEs9YiwwPT09KEsmNikmJmpnKCl9fWZ1bmN0aW9uIElqKCl7Z2o9ZmouY3VycmVudDtFKGZqKX1cbmZ1bmN0aW9uIExrKGEsYil7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7LTEhPT1jJiYoYS50aW1lb3V0SGFuZGxlPS0xLEdmKGMpKTtpZihudWxsIT09WSlmb3IoYz1ZLnJldHVybjtudWxsIT09Yzspe3ZhciBkPWM7d2coZCk7c3dpdGNoKGQudGFnKXtjYXNlIDE6ZD1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWQmJnZvaWQgMCE9PWQmJiRmKCk7YnJlYWs7Y2FzZSAzOkpoKCk7RShXZik7RShIKTtPaCgpO2JyZWFrO2Nhc2UgNTpMaChkKTticmVhaztjYXNlIDQ6SmgoKTticmVhaztjYXNlIDEzOkUoTSk7YnJlYWs7Y2FzZSAxOTpFKE0pO2JyZWFrO2Nhc2UgMTA6UmcoZC50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6SWooKX1jPWMucmV0dXJufVI9YTtZPWE9d2goYS5jdXJyZW50LG51bGwpO1o9Z2o9YjtUPTA7cWs9bnVsbDtzaz1yaz1oaD0wO3VrPXRrPW51bGw7aWYobnVsbCE9PVdnKXtmb3IoYj1cbjA7YjxXZy5sZW5ndGg7YisrKWlmKGM9V2dbYl0sZD1jLmludGVybGVhdmVkLG51bGwhPT1kKXtjLmludGVybGVhdmVkPW51bGw7dmFyIGU9ZC5uZXh0LGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXt2YXIgZz1mLm5leHQ7Zi5uZXh0PWU7ZC5uZXh0PWd9Yy5wZW5kaW5nPWR9V2c9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIE5rKGEsYil7ZG97dmFyIGM9WTt0cnl7UWcoKTtQaC5jdXJyZW50PWFpO2lmKFNoKXtmb3IodmFyIGQ9Ti5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1TaD0hMX1SaD0wO1A9Tz1OPW51bGw7VGg9ITE7VWg9MDtvay5jdXJyZW50PW51bGw7aWYobnVsbD09PWN8fG51bGw9PT1jLnJldHVybil7VD0xO3FrPWI7WT1udWxsO2JyZWFrfWE6e3ZhciBmPWEsZz1jLnJldHVybixoPWMsaz1iO2I9WjtoLmZsYWdzfD0zMjc2ODtpZihudWxsIT09ayYmXCJvYmplY3RcIj09PXR5cGVvZiBrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygay50aGVuKXt2YXIgbD1rLG09aCxxPW0udGFnO2lmKDA9PT0obS5tb2RlJjEpJiYoMD09PXF8fDExPT09cXx8MTU9PT1xKSl7dmFyIHI9bS5hbHRlcm5hdGU7cj8obS51cGRhdGVRdWV1ZT1yLnVwZGF0ZVF1ZXVlLG0ubWVtb2l6ZWRTdGF0ZT1yLm1lbW9pemVkU3RhdGUsXG5tLmxhbmVzPXIubGFuZXMpOihtLnVwZGF0ZVF1ZXVlPW51bGwsbS5tZW1vaXplZFN0YXRlPW51bGwpfXZhciB5PVZpKGcpO2lmKG51bGwhPT15KXt5LmZsYWdzJj0tMjU3O1dpKHksZyxoLGYsYik7eS5tb2RlJjEmJlRpKGYsbCxiKTtiPXk7az1sO3ZhciBuPWIudXBkYXRlUXVldWU7aWYobnVsbD09PW4pe3ZhciB0PW5ldyBTZXQ7dC5hZGQoayk7Yi51cGRhdGVRdWV1ZT10fWVsc2Ugbi5hZGQoayk7YnJlYWsgYX1lbHNle2lmKDA9PT0oYiYxKSl7VGkoZixsLGIpO3VqKCk7YnJlYWsgYX1rPUVycm9yKHAoNDI2KSl9fWVsc2UgaWYoSSYmaC5tb2RlJjEpe3ZhciBKPVZpKGcpO2lmKG51bGwhPT1KKXswPT09KEouZmxhZ3MmNjU1MzYpJiYoSi5mbGFnc3w9MjU2KTtXaShKLGcsaCxmLGIpO0pnKEtpKGssaCkpO2JyZWFrIGF9fWY9az1LaShrLGgpOzQhPT1UJiYoVD0yKTtudWxsPT09dGs/dGs9W2ZdOnRrLnB1c2goZik7Zj1nO2Rve3N3aXRjaChmLnRhZyl7Y2FzZSAzOmYuZmxhZ3N8PTY1NTM2O1xuYiY9LWI7Zi5sYW5lc3w9Yjt2YXIgeD1PaShmLGssYik7ZmgoZix4KTticmVhayBhO2Nhc2UgMTpoPWs7dmFyIHc9Zi50eXBlLHU9Zi5zdGF0ZU5vZGU7aWYoMD09PShmLmZsYWdzJjEyOCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyh1KSkpKXtmLmZsYWdzfD02NTUzNjtiJj0tYjtmLmxhbmVzfD1iO3ZhciBGPVJpKGYsaCxiKTtmaChmLEYpO2JyZWFrIGF9fWY9Zi5yZXR1cm59d2hpbGUobnVsbCE9PWYpfVRrKGMpfWNhdGNoKG5hKXtiPW5hO1k9PT1jJiZudWxsIT09YyYmKFk9Yz1jLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoMSl9ZnVuY3Rpb24gS2soKXt2YXIgYT1uay5jdXJyZW50O25rLmN1cnJlbnQ9YWk7cmV0dXJuIG51bGw9PT1hP2FpOmF9XG5mdW5jdGlvbiB1aigpe2lmKDA9PT1UfHwzPT09VHx8Mj09PVQpVD00O251bGw9PT1SfHwwPT09KGhoJjI2ODQzNTQ1NSkmJjA9PT0ocmsmMjY4NDM1NDU1KXx8RGsoUixaKX1mdW5jdGlvbiBKayhhLGIpe3ZhciBjPUs7S3w9Mjt2YXIgZD1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLExrKGEsYik7ZG8gdHJ5e1VrKCk7YnJlYWt9Y2F0Y2goZSl7TmsoYSxlKX13aGlsZSgxKTtRZygpO0s9Yztuay5jdXJyZW50PWQ7aWYobnVsbCE9PVkpdGhyb3cgRXJyb3IocCgyNjEpKTtSPW51bGw7Wj0wO3JldHVybiBUfWZ1bmN0aW9uIFVrKCl7Zm9yKDtudWxsIT09WTspVmsoWSl9ZnVuY3Rpb24gTWsoKXtmb3IoO251bGwhPT1ZJiYhY2MoKTspVmsoWSl9ZnVuY3Rpb24gVmsoYSl7dmFyIGI9V2soYS5hbHRlcm5hdGUsYSxnaik7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iP1RrKGEpOlk9Yjtvay5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBUayhhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjMyNzY4KSl7aWYoYz1GaihjLGIsZ2opLG51bGwhPT1jKXtZPWM7cmV0dXJufX1lbHNle2M9SmooYyxiKTtpZihudWxsIT09Yyl7Yy5mbGFncyY9MzI3Njc7WT1jO3JldHVybn1pZihudWxsIT09YSlhLmZsYWdzfD0zMjc2OCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGw7ZWxzZXtUPTY7WT1udWxsO3JldHVybn19Yj1iLnNpYmxpbmc7aWYobnVsbCE9PWIpe1k9YjtyZXR1cm59WT1iPWF9d2hpbGUobnVsbCE9PWIpOzA9PT1UJiYoVD01KX1mdW5jdGlvbiBRayhhLGIsYyl7dmFyIGQ9QyxlPXBrLnRyYW5zaXRpb247dHJ5e3BrLnRyYW5zaXRpb249bnVsbCxDPTEsWGsoYSxiLGMsZCl9ZmluYWxseXtway50cmFuc2l0aW9uPWUsQz1kfXJldHVybiBudWxsfVxuZnVuY3Rpb24gWGsoYSxiLGMsZCl7ZG8gSWsoKTt3aGlsZShudWxsIT09eGspO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO2M9YS5maW5pc2hlZFdvcms7dmFyIGU9YS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcihwKDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGY9Yy5sYW5lc3xjLmNoaWxkTGFuZXM7QmMoYSxmKTthPT09UiYmKFk9Uj1udWxsLFo9MCk7MD09PShjLnN1YnRyZWVGbGFncyYyMDY0KSYmMD09PShjLmZsYWdzJjIwNjQpfHx3a3x8KHdrPSEwLEdrKGhjLGZ1bmN0aW9uKCl7SWsoKTtyZXR1cm4gbnVsbH0pKTtmPTAhPT0oYy5mbGFncyYxNTk5MCk7aWYoMCE9PShjLnN1YnRyZWVGbGFncyYxNTk5MCl8fGYpe2Y9cGsudHJhbnNpdGlvbjtway50cmFuc2l0aW9uPW51bGw7XG52YXIgZz1DO0M9MTt2YXIgaD1LO0t8PTQ7b2suY3VycmVudD1udWxsO1BqKGEsYyk7ZWsoYyxhKTtPZShEZik7ZGQ9ISFDZjtEZj1DZj1udWxsO2EuY3VycmVudD1jO2lrKGMsYSxlKTtkYygpO0s9aDtDPWc7cGsudHJhbnNpdGlvbj1mfWVsc2UgYS5jdXJyZW50PWM7d2smJih3az0hMSx4az1hLHlrPWUpO2Y9YS5wZW5kaW5nTGFuZXM7MD09PWYmJihTaT1udWxsKTttYyhjLnN0YXRlTm9kZSxkKTtFayhhLEIoKSk7aWYobnVsbCE9PWIpZm9yKGQ9YS5vblJlY292ZXJhYmxlRXJyb3IsYz0wO2M8Yi5sZW5ndGg7YysrKWU9YltjXSxkKGUudmFsdWUse2NvbXBvbmVudFN0YWNrOmUuc3RhY2ssZGlnZXN0OmUuZGlnZXN0fSk7aWYoUGkpdGhyb3cgUGk9ITEsYT1RaSxRaT1udWxsLGE7MCE9PSh5ayYxKSYmMCE9PWEudGFnJiZJaygpO2Y9YS5wZW5kaW5nTGFuZXM7MCE9PShmJjEpP2E9PT1Baz96aysrOih6az0wLEFrPWEpOnprPTA7amcoKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIElrKCl7aWYobnVsbCE9PXhrKXt2YXIgYT1EYyh5ayksYj1way50cmFuc2l0aW9uLGM9Qzt0cnl7cGsudHJhbnNpdGlvbj1udWxsO0M9MTY+YT8xNjphO2lmKG51bGw9PT14ayl2YXIgZD0hMTtlbHNle2E9eGs7eGs9bnVsbDt5az0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMzMSkpO3ZhciBlPUs7S3w9NDtmb3IoVj1hLmN1cnJlbnQ7bnVsbCE9PVY7KXt2YXIgZj1WLGc9Zi5jaGlsZDtpZigwIT09KFYuZmxhZ3MmMTYpKXt2YXIgaD1mLmRlbGV0aW9ucztpZihudWxsIT09aCl7Zm9yKHZhciBrPTA7azxoLmxlbmd0aDtrKyspe3ZhciBsPWhba107Zm9yKFY9bDtudWxsIT09Vjspe3ZhciBtPVY7c3dpdGNoKG0udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDgsbSxmKX12YXIgcT1tLmNoaWxkO2lmKG51bGwhPT1xKXEucmV0dXJuPW0sVj1xO2Vsc2UgZm9yKDtudWxsIT09Vjspe209Vjt2YXIgcj1tLnNpYmxpbmcseT1tLnJldHVybjtUaihtKTtpZihtPT09XG5sKXtWPW51bGw7YnJlYWt9aWYobnVsbCE9PXIpe3IucmV0dXJuPXk7Vj1yO2JyZWFrfVY9eX19fXZhciBuPWYuYWx0ZXJuYXRlO2lmKG51bGwhPT1uKXt2YXIgdD1uLmNoaWxkO2lmKG51bGwhPT10KXtuLmNoaWxkPW51bGw7ZG97dmFyIEo9dC5zaWJsaW5nO3Quc2libGluZz1udWxsO3Q9Sn13aGlsZShudWxsIT09dCl9fVY9Zn19aWYoMCE9PShmLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PWcpZy5yZXR1cm49ZixWPWc7ZWxzZSBiOmZvcig7bnVsbCE9PVY7KXtmPVY7aWYoMCE9PShmLmZsYWdzJjIwNDgpKXN3aXRjaChmLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGYsZi5yZXR1cm4pfXZhciB4PWYuc2libGluZztpZihudWxsIT09eCl7eC5yZXR1cm49Zi5yZXR1cm47Vj14O2JyZWFrIGJ9Vj1mLnJldHVybn19dmFyIHc9YS5jdXJyZW50O2ZvcihWPXc7bnVsbCE9PVY7KXtnPVY7dmFyIHU9Zy5jaGlsZDtpZigwIT09KGcuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09XG51KXUucmV0dXJuPWcsVj11O2Vsc2UgYjpmb3IoZz13O251bGwhPT1WOyl7aD1WO2lmKDAhPT0oaC5mbGFncyYyMDQ4KSl0cnl7c3dpdGNoKGgudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlJqKDksaCl9fWNhdGNoKG5hKXtXKGgsaC5yZXR1cm4sbmEpfWlmKGg9PT1nKXtWPW51bGw7YnJlYWsgYn12YXIgRj1oLnNpYmxpbmc7aWYobnVsbCE9PUYpe0YucmV0dXJuPWgucmV0dXJuO1Y9RjticmVhayBifVY9aC5yZXR1cm59fUs9ZTtqZygpO2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtsYy5vblBvc3RDb21taXRGaWJlclJvb3Qoa2MsYSl9Y2F0Y2gobmEpe31kPSEwfXJldHVybiBkfWZpbmFsbHl7Qz1jLHBrLnRyYW5zaXRpb249Yn19cmV0dXJuITF9ZnVuY3Rpb24gWWsoYSxiLGMpe2I9S2koYyxiKTtiPU9pKGEsYiwxKTthPWRoKGEsYiwxKTtiPUwoKTtudWxsIT09YSYmKEFjKGEsMSxiKSxFayhhLGIpKX1cbmZ1bmN0aW9uIFcoYSxiLGMpe2lmKDM9PT1hLnRhZylZayhhLGEsYyk7ZWxzZSBmb3IoO251bGwhPT1iOyl7aWYoMz09PWIudGFnKXtZayhiLGEsYyk7YnJlYWt9ZWxzZSBpZigxPT09Yi50YWcpe3ZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyhkKSkpe2E9S2koYyxhKTthPVJpKGIsYSwxKTtiPWRoKGIsYSwxKTthPUwoKTtudWxsIT09YiYmKEFjKGIsMSxhKSxFayhiLGEpKTticmVha319Yj1iLnJldHVybn19XG5mdW5jdGlvbiBVaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKFomYyk9PT1jJiYoND09PVR8fDM9PT1UJiYoWiYxMzAwMjM0MjQpPT09WiYmNTAwPkIoKS1naz9MayhhLDApOnNrfD1jKTtFayhhLGIpfWZ1bmN0aW9uIFprKGEsYil7MD09PWImJigwPT09KGEubW9kZSYxKT9iPTE6KGI9c2Msc2M8PD0xLDA9PT0oc2MmMTMwMDIzNDI0KSYmKHNjPTQxOTQzMDQpKSk7dmFyIGM9TCgpO2E9WmcoYSxiKTtudWxsIT09YSYmKEFjKGEsYixjKSxFayhhLGMpKX1mdW5jdGlvbiB2aihhKXt2YXIgYj1hLm1lbW9pemVkU3RhdGUsYz0wO251bGwhPT1iJiYoYz1iLnJldHJ5TGFuZSk7WmsoYSxjKX1cbmZ1bmN0aW9uIGNrKGEsYil7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGQ9YS5zdGF0ZU5vZGU7dmFyIGU9YS5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoYz1lLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpkPWEuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMTQpKTt9bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1prKGEsYyl9dmFyIFdrO1xuV2s9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPT1hKWlmKGEubWVtb2l6ZWRQcm9wcyE9PWIucGVuZGluZ1Byb3BzfHxXZi5jdXJyZW50KVVnPSEwO2Vsc2V7aWYoMD09PShhLmxhbmVzJmMpJiYwPT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gVWc9ITEsemooYSxiLGMpO1VnPTAhPT0oYS5mbGFncyYxMzEwNzIpPyEwOiExfWVsc2UgVWc9ITEsSSYmMCE9PShiLmZsYWdzJjEwNDg1NzYpJiZ1ZyhiLG5nLGIuaW5kZXgpO2IubGFuZXM9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjp2YXIgZD1iLnR5cGU7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO3ZhciBlPVlmKGIsSC5jdXJyZW50KTtUZyhiLGMpO2U9WGgobnVsbCxiLGQsYSxlLGMpO3ZhciBmPWJpKCk7Yi5mbGFnc3w9MTtcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Y/KGIudGFnPTEsYi5tZW1vaXplZFN0YXRlPW51bGwsYi51cGRhdGVRdWV1ZT1cbm51bGwsWmYoZCk/KGY9ITAsY2coYikpOmY9ITEsYi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbCxhaChiKSxlLnVwZGF0ZXI9bmgsYi5zdGF0ZU5vZGU9ZSxlLl9yZWFjdEludGVybmFscz1iLHJoKGIsZCxhLGMpLGI9a2oobnVsbCxiLGQsITAsZixjKSk6KGIudGFnPTAsSSYmZiYmdmcoYiksWWkobnVsbCxiLGUsYyksYj1iLmNoaWxkKTtyZXR1cm4gYjtjYXNlIDE2OmQ9Yi5lbGVtZW50VHlwZTthOntqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1kLl9pbml0O2Q9ZShkLl9wYXlsb2FkKTtiLnR5cGU9ZDtlPWIudGFnPSRrKGQpO2E9TGcoZCxhKTtzd2l0Y2goZSl7Y2FzZSAwOmI9ZGoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTpiPWlqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WmkobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj1haihudWxsLGIsZCxMZyhkLnR5cGUsYSksYyk7YnJlYWsgYX10aHJvdyBFcnJvcihwKDMwNixcbmQsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksZGooYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksaWooYSxiLGQsZSxjKTtjYXNlIDM6YTp7bGooYik7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzODcpKTtkPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFN0YXRlO2U9Zi5lbGVtZW50O2JoKGEsYik7Z2goYixkLG51bGwsYyk7dmFyIGc9Yi5tZW1vaXplZFN0YXRlO2Q9Zy5lbGVtZW50O2lmKGYuaXNEZWh5ZHJhdGVkKWlmKGY9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zy5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmcucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfSxiLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1cbmYsYi5tZW1vaXplZFN0YXRlPWYsYi5mbGFncyYyNTYpe2U9S2koRXJyb3IocCg0MjMpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGlmKGQhPT1lKXtlPUtpKEVycm9yKHAoNDI0KSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBmb3IoeWc9TGYoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx4Zz1iLEk9ITAsemc9bnVsbCxjPUNoKGIsbnVsbCxkLGMpLGIuY2hpbGQ9YztjOyljLmZsYWdzPWMuZmxhZ3MmLTN8NDA5NixjPWMuc2libGluZztlbHNle0lnKCk7aWYoZD09PWUpe2I9JGkoYSxiLGMpO2JyZWFrIGF9WWkoYSxiLGQsYyl9Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gS2goYiksbnVsbD09PWEmJkVnKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxnPWUuY2hpbGRyZW4sRWYoZCxlKT9nPW51bGw6bnVsbCE9PWYmJkVmKGQsZikmJihiLmZsYWdzfD0zMiksXG5oaihhLGIpLFlpKGEsYixnLGMpLGIuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmRWcoYiksbnVsbDtjYXNlIDEzOnJldHVybiBwaihhLGIsYyk7Y2FzZSA0OnJldHVybiBJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1CaChiLG51bGwsZCxjKTpZaShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksWmkoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcyxjKSxiLmNoaWxkO2Nhc2UgODpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFByb3BzO1xuZz1lLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZztpZihudWxsIT09ZilpZihIZShmLnZhbHVlLGcpKXtpZihmLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIVdmLmN1cnJlbnQpe2I9JGkoYSxiLGMpO2JyZWFrIGF9fWVsc2UgZm9yKGY9Yi5jaGlsZCxudWxsIT09ZiYmKGYucmV0dXJuPWIpO251bGwhPT1mOyl7dmFyIGg9Zi5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWgpe2c9Zi5jaGlsZDtmb3IodmFyIGs9aC5maXJzdENvbnRleHQ7bnVsbCE9PWs7KXtpZihrLmNvbnRleHQ9PT1kKXtpZigxPT09Zi50YWcpe2s9Y2goLTEsYyYtYyk7ay50YWc9Mjt2YXIgbD1mLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1sKXtsPWwuc2hhcmVkO3ZhciBtPWwucGVuZGluZztudWxsPT09bT9rLm5leHQ9azooay5uZXh0PW0ubmV4dCxtLm5leHQ9ayk7bC5wZW5kaW5nPWt9fWYubGFuZXN8PWM7az1mLmFsdGVybmF0ZTtudWxsIT09ayYmKGsubGFuZXN8PWMpO1NnKGYucmV0dXJuLFxuYyxiKTtoLmxhbmVzfD1jO2JyZWFrfWs9ay5uZXh0fX1lbHNlIGlmKDEwPT09Zi50YWcpZz1mLnR5cGU9PT1iLnR5cGU/bnVsbDpmLmNoaWxkO2Vsc2UgaWYoMTg9PT1mLnRhZyl7Zz1mLnJldHVybjtpZihudWxsPT09Zyl0aHJvdyBFcnJvcihwKDM0MSkpO2cubGFuZXN8PWM7aD1nLmFsdGVybmF0ZTtudWxsIT09aCYmKGgubGFuZXN8PWMpO1NnKGcsYyxiKTtnPWYuc2libGluZ31lbHNlIGc9Zi5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1mO2Vsc2UgZm9yKGc9ZjtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9Zj1nLnNpYmxpbmc7aWYobnVsbCE9PWYpe2YucmV0dXJuPWcucmV0dXJuO2c9ZjticmVha31nPWcucmV0dXJufWY9Z31ZaShhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxkPWIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFRnKGIsYyksZT1WZyhlKSxkPWQoZSksYi5mbGFnc3w9MSxZaShhLGIsZCxjKSxcbmIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZD1iLnR5cGUsZT1MZyhkLGIucGVuZGluZ1Byb3BzKSxlPUxnKGQudHlwZSxlKSxhaihhLGIsZCxlLGMpO2Nhc2UgMTU6cmV0dXJuIGNqKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxqaihhLGIpLGIudGFnPTEsWmYoZCk/KGE9ITAsY2coYikpOmE9ITEsVGcoYixjKSxwaChiLGQsZSkscmgoYixkLGUsYyksa2oobnVsbCxiLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiB5aihhLGIsYyk7Y2FzZSAyMjpyZXR1cm4gZWooYSxiLGMpfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fTtmdW5jdGlvbiBHayhhLGIpe3JldHVybiBhYyhhLGIpfVxuZnVuY3Rpb24gYWwoYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTA7dGhpcy5kZWxldGlvbnM9bnVsbDt0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wO3RoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gQmcoYSxiLGMsZCl7cmV0dXJuIG5ldyBhbChhLGIsYyxkKX1mdW5jdGlvbiBiaihhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfVxuZnVuY3Rpb24gJGsoYSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGJqKGEpPzE6MDtpZih2b2lkIDAhPT1hJiZudWxsIT09YSl7YT1hLiQkdHlwZW9mO2lmKGE9PT1EYSlyZXR1cm4gMTE7aWYoYT09PUdhKXJldHVybiAxNH1yZXR1cm4gMn1cbmZ1bmN0aW9uIHdoKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbD09PWM/KGM9QmcoYS50YWcsYixhLmtleSxhLm1vZGUpLGMuZWxlbWVudFR5cGU9YS5lbGVtZW50VHlwZSxjLnR5cGU9YS50eXBlLGMuc3RhdGVOb2RlPWEuc3RhdGVOb2RlLGMuYWx0ZXJuYXRlPWEsYS5hbHRlcm5hdGU9Yyk6KGMucGVuZGluZ1Byb3BzPWIsYy50eXBlPWEudHlwZSxjLmZsYWdzPTAsYy5zdWJ0cmVlRmxhZ3M9MCxjLmRlbGV0aW9ucz1udWxsKTtjLmZsYWdzPWEuZmxhZ3MmMTQ2ODAwNjQ7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntsYW5lczpiLmxhbmVzLGZpcnN0Q29udGV4dDpiLmZpcnN0Q29udGV4dH07XG5jLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSliaihhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm4gQWgoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSB6YTpnPTg7ZXw9ODticmVhaztjYXNlIEFhOnJldHVybiBhPUJnKDEyLGMsYixlfDIpLGEuZWxlbWVudFR5cGU9QWEsYS5sYW5lcz1mLGE7Y2FzZSBFYTpyZXR1cm4gYT1CZygxMyxjLGIsZSksYS5lbGVtZW50VHlwZT1FYSxhLmxhbmVzPWYsYTtjYXNlIEZhOnJldHVybiBhPUJnKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPUZhLGEubGFuZXM9ZixhO2Nhc2UgSWE6cmV0dXJuIHFqKGMsZSxmLGIpO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBCYTpnPTEwO2JyZWFrIGE7Y2FzZSBDYTpnPTk7YnJlYWsgYTtjYXNlIERhOmc9MTE7XG5icmVhayBhO2Nhc2UgR2E6Zz0xNDticmVhayBhO2Nhc2UgSGE6Zz0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyBFcnJvcihwKDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPUJnKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmxhbmVzPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gQWgoYSxiLGMsZCl7YT1CZyg3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcWooYSxiLGMsZCl7YT1CZygyMixhLGQsYik7YS5lbGVtZW50VHlwZT1JYTthLmxhbmVzPWM7YS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfTtyZXR1cm4gYX1mdW5jdGlvbiB4aChhLGIsYyl7YT1CZyg2LGEsbnVsbCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiB6aChhLGIsYyl7Yj1CZyg0LG51bGwhPT1hLmNoaWxkcmVuP2EuY2hpbGRyZW46W10sYS5rZXksYik7Yi5sYW5lcz1jO2Iuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGJsKGEsYixjLGQsZSl7dGhpcy50YWc9Yjt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLnRpbWVvdXRIYW5kbGU9LTE7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MDt0aGlzLmV2ZW50VGltZXM9emMoMCk7dGhpcy5leHBpcmF0aW9uVGltZXM9emMoLTEpO3RoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MDt0aGlzLmVudGFuZ2xlbWVudHM9emMoMCk7dGhpcy5pZGVudGlmaWVyUHJlZml4PWQ7dGhpcy5vblJlY292ZXJhYmxlRXJyb3I9ZTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9XG5udWxsfWZ1bmN0aW9uIGNsKGEsYixjLGQsZSxmLGcsaCxrKXthPW5ldyBibChhLGIsYyxoLGspOzE9PT1iPyhiPTEsITA9PT1mJiYoYnw9OCkpOmI9MDtmPUJnKDMsbnVsbCxudWxsLGIpO2EuY3VycmVudD1mO2Yuc3RhdGVOb2RlPWE7Zi5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOmMsY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH07YWgoZik7cmV0dXJuIGF9ZnVuY3Rpb24gZGwoYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjp3YSxrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbmZ1bmN0aW9uIGVsKGEpe2lmKCFhKXJldHVybiBWZjthPWEuX3JlYWN0SW50ZXJuYWxzO2E6e2lmKFZiKGEpIT09YXx8MSE9PWEudGFnKXRocm93IEVycm9yKHAoMTcwKSk7dmFyIGI9YTtkb3tzd2l0Y2goYi50YWcpe2Nhc2UgMzpiPWIuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYTtjYXNlIDE6aWYoWmYoYi50eXBlKSl7Yj1iLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBhfX1iPWIucmV0dXJufXdoaWxlKG51bGwhPT1iKTt0aHJvdyBFcnJvcihwKDE3MSkpO31pZigxPT09YS50YWcpe3ZhciBjPWEudHlwZTtpZihaZihjKSlyZXR1cm4gYmcoYSxjLGIpfXJldHVybiBifVxuZnVuY3Rpb24gZmwoYSxiLGMsZCxlLGYsZyxoLGspe2E9Y2woYyxkLCEwLGEsZSxmLGcsaCxrKTthLmNvbnRleHQ9ZWwobnVsbCk7Yz1hLmN1cnJlbnQ7ZD1MKCk7ZT1saChjKTtmPWNoKGQsZSk7Zi5jYWxsYmFjaz12b2lkIDAhPT1iJiZudWxsIT09Yj9iOm51bGw7ZGgoYyxmLGUpO2EuY3VycmVudC5sYW5lcz1lO0FjKGEsZSxkKTtFayhhLGQpO3JldHVybiBhfWZ1bmN0aW9uIGdsKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPUwoKSxnPWxoKGUpO2M9ZWwoYyk7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj1jaChmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PWQ/bnVsbDpkO251bGwhPT1kJiYoYi5jYWxsYmFjaz1kKTthPWRoKGUsYixnKTtudWxsIT09YSYmKG1oKGEsZSxnLGYpLGVoKGEsZSxnKSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBobChhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGlsKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI/YzpifX1mdW5jdGlvbiBqbChhLGIpe2lsKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZpbChhLGIpfWZ1bmN0aW9uIGtsKCl7cmV0dXJuIG51bGx9dmFyIGxsPVwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKGEpfTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS5yZW5kZXI9bWwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCg0MDkpKTtnbChhLGIsbnVsbCxudWxsKX07bmwucHJvdG90eXBlLnVubW91bnQ9bWwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWEpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciBiPWEuY29udGFpbmVySW5mbztTayhmdW5jdGlvbigpe2dsKG51bGwsYSxudWxsLG51bGwpfSk7Ylt1Zl09bnVsbH19O2Z1bmN0aW9uIG5sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPUhjKCk7YT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmEscHJpb3JpdHk6Yn07Zm9yKHZhciBjPTA7YzxRYy5sZW5ndGgmJjAhPT1iJiZiPFFjW2NdLnByaW9yaXR5O2MrKyk7UWMuc3BsaWNlKGMsMCxhKTswPT09YyYmVmMoYSl9fTtmdW5jdGlvbiBvbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSl9ZnVuY3Rpb24gcGwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIHFsKCl7fVxuZnVuY3Rpb24gcmwoYSxiLGMsZCxlKXtpZihlKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGY9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7Zi5jYWxsKGEpfX12YXIgZz1mbChiLGQsYSwwLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWc7YVt1Zl09Zy5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTaygpO3JldHVybiBnfWZvcig7ZT1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChlKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGg9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoayk7aC5jYWxsKGEpfX12YXIgaz1jbChhLDAsITEsbnVsbCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1rO2FbdWZdPWsuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soZnVuY3Rpb24oKXtnbChiLGssYyxkKX0pO3JldHVybiBrfVxuZnVuY3Rpb24gc2woYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9ZjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7aC5jYWxsKGEpfX1nbChiLGcsYSxlKX1lbHNlIGc9cmwoYyxiLGEsZSxkKTtyZXR1cm4gaGwoZyl9RWM9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudGFnKXtjYXNlIDM6dmFyIGI9YS5zdGF0ZU5vZGU7aWYoYi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgYz10YyhiLnBlbmRpbmdMYW5lcyk7MCE9PWMmJihDYyhiLGN8MSksRWsoYixCKCkpLDA9PT0oSyY2KSYmKEhqPUIoKSs1MDAsamcoKSkpfWJyZWFrO2Nhc2UgMTM6U2soZnVuY3Rpb24oKXt2YXIgYj1aZyhhLDEpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEsYyl9fSksamwoYSwxKX19O1xuRmM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9WmcoYSwxMzQyMTc3MjgpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEzNDIxNzcyOCxjKX1qbChhLDEzNDIxNzcyOCl9fTtHYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1saChhKSxjPVpnKGEsYik7aWYobnVsbCE9PWMpe3ZhciBkPUwoKTttaChjLGEsYixkKX1qbChhLGIpfX07SGM9ZnVuY3Rpb24oKXtyZXR1cm4gQ307SWM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DO3RyeXtyZXR1cm4gQz1hLGIoKX1maW5hbGx5e0M9Y319O1xueWI9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpiYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9RGIoZCk7aWYoIWUpdGhyb3cgRXJyb3IocCg5MCkpO1dhKGQpO2JiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmZmIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtHYj1SaztIYj1TaztcbnZhciB0bD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbQ2IsdWUsRGIsRWIsRmIsUmtdfSx1bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2MsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxOC4yLjBcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9O1xudmFyIHZsPXtidW5kbGVUeXBlOnVsLmJ1bmRsZVR5cGUsdmVyc2lvbjp1bC52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dWwucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp1bC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp1YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9WmIoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnVsLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxcbmtsLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIn07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB3bD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXdsLmlzRGlzYWJsZWQmJndsLnN1cHBvcnRzRmliZXIpdHJ5e2tjPXdsLmluamVjdCh2bCksbGM9d2x9Y2F0Y2goYSl7fX1leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXRsO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gZGwoYSxiLG51bGwsYyl9O2V4cG9ydHMuY3JlYXRlUm9vdD1mdW5jdGlvbihhLGIpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDI5OSkpO3ZhciBjPSExLGQ9XCJcIixlPWxsO251bGwhPT1iJiZ2b2lkIDAhPT1iJiYoITA9PT1iLnVuc3RhYmxlX3N0cmljdE1vZGUmJihjPSEwKSx2b2lkIDAhPT1iLmlkZW50aWZpZXJQcmVmaXgmJihkPWIuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yi5vblJlY292ZXJhYmxlRXJyb3ImJihlPWIub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1jbChhLDEsITEsbnVsbCxudWxsLGMsITEsZCxlKTthW3VmXT1iLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO3JldHVybiBuZXcgbWwoYil9O1xuZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcihwKDE4OCkpO2E9T2JqZWN0LmtleXMoYSkuam9pbihcIixcIik7dGhyb3cgRXJyb3IocCgyNjgsYSkpO31hPVpiKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07ZXhwb3J0cy5mbHVzaFN5bmM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNrKGEpfTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMCxjKX07XG5leHBvcnRzLmh5ZHJhdGVSb290PWZ1bmN0aW9uKGEsYixjKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCg0MDUpKTt2YXIgZD1udWxsIT1jJiZjLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxlPSExLGY9XCJcIixnPWxsO251bGwhPT1jJiZ2b2lkIDAhPT1jJiYoITA9PT1jLnVuc3RhYmxlX3N0cmljdE1vZGUmJihlPSEwKSx2b2lkIDAhPT1jLmlkZW50aWZpZXJQcmVmaXgmJihmPWMuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yy5vblJlY292ZXJhYmxlRXJyb3ImJihnPWMub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1mbChiLG51bGwsYSwxLG51bGwhPWM/YzpudWxsLGUsITEsZixnKTthW3VmXT1iLmN1cnJlbnQ7c2YoYSk7aWYoZClmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWM9ZFthXSxlPWMuX2dldFZlcnNpb24sZT1lKGMuX3NvdXJjZSksbnVsbD09Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP2IubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bYyxlXTpiLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChjLFxuZSk7cmV0dXJuIG5ldyBubChiKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMSxjKX07ZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFwbChhKSl0aHJvdyBFcnJvcihwKDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oU2soZnVuY3Rpb24oKXtzbChudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbdWZdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1SaztcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXBsKGMpKXRocm93IEVycm9yKHAoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbHMpdGhyb3cgRXJyb3IocCgzOCkpO3JldHVybiBzbChhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5cbi8qKlxyXG4gKiBBY3Rpb25zIHJlcHJlc2VudCB0aGUgdHlwZSBvZiBjaGFuZ2UgdG8gYSBsb2NhdGlvbiB2YWx1ZS5cclxuICpcclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVtaXgtcnVuL2hpc3RvcnkvdHJlZS9tYWluL2RvY3MvYXBpLXJlZmVyZW5jZS5tZCNhY3Rpb25cclxuICovXG52YXIgQWN0aW9uO1xuXG4oZnVuY3Rpb24gKEFjdGlvbikge1xuICAvKipcclxuICAgKiBBIFBPUCBpbmRpY2F0ZXMgYSBjaGFuZ2UgdG8gYW4gYXJiaXRyYXJ5IGluZGV4IGluIHRoZSBoaXN0b3J5IHN0YWNrLCBzdWNoXHJcbiAgICogYXMgYSBiYWNrIG9yIGZvcndhcmQgbmF2aWdhdGlvbi4gSXQgZG9lcyBub3QgZGVzY3JpYmUgdGhlIGRpcmVjdGlvbiBvZiB0aGVcclxuICAgKiBuYXZpZ2F0aW9uLCBvbmx5IHRoYXQgdGhlIGN1cnJlbnQgaW5kZXggY2hhbmdlZC5cclxuICAgKlxyXG4gICAqIE5vdGU6IFRoaXMgaXMgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBuZXdseSBjcmVhdGVkIGhpc3Rvcnkgb2JqZWN0cy5cclxuICAgKi9cbiAgQWN0aW9uW1wiUG9wXCJdID0gXCJQT1BcIjtcbiAgLyoqXHJcbiAgICogQSBQVVNIIGluZGljYXRlcyBhIG5ldyBlbnRyeSBiZWluZyBhZGRlZCB0byB0aGUgaGlzdG9yeSBzdGFjaywgc3VjaCBhcyB3aGVuXHJcbiAgICogYSBsaW5rIGlzIGNsaWNrZWQgYW5kIGEgbmV3IHBhZ2UgbG9hZHMuIFdoZW4gdGhpcyBoYXBwZW5zLCBhbGwgc3Vic2VxdWVudFxyXG4gICAqIGVudHJpZXMgaW4gdGhlIHN0YWNrIGFyZSBsb3N0LlxyXG4gICAqL1xuXG4gIEFjdGlvbltcIlB1c2hcIl0gPSBcIlBVU0hcIjtcbiAgLyoqXHJcbiAgICogQSBSRVBMQUNFIGluZGljYXRlcyB0aGUgZW50cnkgYXQgdGhlIGN1cnJlbnQgaW5kZXggaW4gdGhlIGhpc3Rvcnkgc3RhY2tcclxuICAgKiBiZWluZyByZXBsYWNlZCBieSBhIG5ldyBvbmUuXHJcbiAgICovXG5cbiAgQWN0aW9uW1wiUmVwbGFjZVwiXSA9IFwiUkVQTEFDRVwiO1xufSkoQWN0aW9uIHx8IChBY3Rpb24gPSB7fSkpO1xuXG52YXIgcmVhZE9ubHkgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKG9iaik7XG59IDogZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqO1xufTtcblxuZnVuY3Rpb24gd2FybmluZyhjb25kLCBtZXNzYWdlKSB7XG4gIGlmICghY29uZCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdlbGNvbWUgdG8gZGVidWdnaW5nIGhpc3RvcnkhXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBlcnJvciBpcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB5b3UgY2FuIG1vcmUgZWFzaWx5XG4gICAgICAvLyBmaW5kIHRoZSBzb3VyY2UgZm9yIGEgd2FybmluZyB0aGF0IGFwcGVhcnMgaW4gdGhlIGNvbnNvbGUgYnlcbiAgICAgIC8vIGVuYWJsaW5nIFwicGF1c2Ugb24gZXhjZXB0aW9uc1wiIGluIHlvdXIgSmF2YVNjcmlwdCBkZWJ1Z2dlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxufVxuXG52YXIgQmVmb3JlVW5sb2FkRXZlbnRUeXBlID0gJ2JlZm9yZXVubG9hZCc7XG52YXIgSGFzaENoYW5nZUV2ZW50VHlwZSA9ICdoYXNoY2hhbmdlJztcbnZhciBQb3BTdGF0ZUV2ZW50VHlwZSA9ICdwb3BzdGF0ZSc7XG4vKipcclxuICogQnJvd3NlciBoaXN0b3J5IHN0b3JlcyB0aGUgbG9jYXRpb24gaW4gcmVndWxhciBVUkxzLiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBmb3JcclxuICogbW9zdCB3ZWIgYXBwcywgYnV0IGl0IHJlcXVpcmVzIHNvbWUgY29uZmlndXJhdGlvbiBvbiB0aGUgc2VydmVyIHRvIGVuc3VyZSB5b3VcclxuICogc2VydmUgdGhlIHNhbWUgYXBwIGF0IG11bHRpcGxlIFVSTHMuXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlbWl4LXJ1bi9oaXN0b3J5L3RyZWUvbWFpbi9kb2NzL2FwaS1yZWZlcmVuY2UubWQjY3JlYXRlYnJvd3Nlcmhpc3RvcnlcclxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJIaXN0b3J5KG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyR3aW5kb3cgPSBfb3B0aW9ucy53aW5kb3csXG4gICAgICB3aW5kb3cgPSBfb3B0aW9ucyR3aW5kb3cgPT09IHZvaWQgMCA/IGRvY3VtZW50LmRlZmF1bHRWaWV3IDogX29wdGlvbnMkd2luZG93O1xuICB2YXIgZ2xvYmFsSGlzdG9yeSA9IHdpbmRvdy5oaXN0b3J5O1xuXG4gIGZ1bmN0aW9uIGdldEluZGV4QW5kTG9jYXRpb24oKSB7XG4gICAgdmFyIF93aW5kb3ckbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lID0gX3dpbmRvdyRsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgc2VhcmNoID0gX3dpbmRvdyRsb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgIGhhc2ggPSBfd2luZG93JGxvY2F0aW9uLmhhc2g7XG4gICAgdmFyIHN0YXRlID0gZ2xvYmFsSGlzdG9yeS5zdGF0ZSB8fCB7fTtcbiAgICByZXR1cm4gW3N0YXRlLmlkeCwgcmVhZE9ubHkoe1xuICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lLFxuICAgICAgc2VhcmNoOiBzZWFyY2gsXG4gICAgICBoYXNoOiBoYXNoLFxuICAgICAgc3RhdGU6IHN0YXRlLnVzciB8fCBudWxsLFxuICAgICAga2V5OiBzdGF0ZS5rZXkgfHwgJ2RlZmF1bHQnXG4gICAgfSldO1xuICB9XG5cbiAgdmFyIGJsb2NrZWRQb3BUeCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wKCkge1xuICAgIGlmIChibG9ja2VkUG9wVHgpIHtcbiAgICAgIGJsb2NrZXJzLmNhbGwoYmxvY2tlZFBvcFR4KTtcbiAgICAgIGJsb2NrZWRQb3BUeCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXh0QWN0aW9uID0gQWN0aW9uLlBvcDtcblxuICAgICAgdmFyIF9nZXRJbmRleEFuZExvY2F0aW9uID0gZ2V0SW5kZXhBbmRMb2NhdGlvbigpLFxuICAgICAgICAgIG5leHRJbmRleCA9IF9nZXRJbmRleEFuZExvY2F0aW9uWzBdLFxuICAgICAgICAgIG5leHRMb2NhdGlvbiA9IF9nZXRJbmRleEFuZExvY2F0aW9uWzFdO1xuXG4gICAgICBpZiAoYmxvY2tlcnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChuZXh0SW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBkZWx0YSA9IGluZGV4IC0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgaWYgKGRlbHRhKSB7XG4gICAgICAgICAgICAvLyBSZXZlcnQgdGhlIFBPUFxuICAgICAgICAgICAgYmxvY2tlZFBvcFR4ID0ge1xuICAgICAgICAgICAgICBhY3Rpb246IG5leHRBY3Rpb24sXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb24sXG4gICAgICAgICAgICAgIHJldHJ5OiBmdW5jdGlvbiByZXRyeSgpIHtcbiAgICAgICAgICAgICAgICBnbyhkZWx0YSAqIC0xKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdvKGRlbHRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVHJ5aW5nIHRvIFBPUCB0byBhIGxvY2F0aW9uIHdpdGggbm8gaW5kZXguIFdlIGRpZCBub3QgY3JlYXRlXG4gICAgICAgICAgLy8gdGhpcyBsb2NhdGlvbiwgc28gd2UgY2FuJ3QgZWZmZWN0aXZlbHkgYmxvY2sgdGhlIG5hdmlnYXRpb24uXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgLy8gVE9ETzogV3JpdGUgdXAgYSBkb2MgdGhhdCBleHBsYWlucyBvdXIgYmxvY2tpbmcgc3RyYXRlZ3kgaW5cbiAgICAgICAgICAvLyBkZXRhaWwgYW5kIGxpbmsgdG8gaXQgaGVyZSBzbyBwZW9wbGUgY2FuIHVuZGVyc3RhbmQgYmV0dGVyIHdoYXRcbiAgICAgICAgICAvLyBpcyBnb2luZyBvbiBhbmQgaG93IHRvIGF2b2lkIGl0LlxuICAgICAgICAgIFwiWW91IGFyZSB0cnlpbmcgdG8gYmxvY2sgYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBcIiArIFwiY3JlYXRlZCBieSB0aGUgaGlzdG9yeSBsaWJyYXJ5LiBUaGUgYmxvY2sgd2lsbCBmYWlsIHNpbGVudGx5IGluIFwiICsgXCJwcm9kdWN0aW9uLCBidXQgaW4gZ2VuZXJhbCB5b3Ugc2hvdWxkIGRvIGFsbCBuYXZpZ2F0aW9uIHdpdGggdGhlIFwiICsgXCJoaXN0b3J5IGxpYnJhcnkgKGluc3RlYWQgb2YgdXNpbmcgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIGRpcmVjdGx5KSBcIiArIFwidG8gYXZvaWQgdGhpcyBzaXR1YXRpb24uXCIpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcHBseVR4KG5leHRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFBvcFN0YXRlRXZlbnRUeXBlLCBoYW5kbGVQb3ApO1xuICB2YXIgYWN0aW9uID0gQWN0aW9uLlBvcDtcblxuICB2YXIgX2dldEluZGV4QW5kTG9jYXRpb24yID0gZ2V0SW5kZXhBbmRMb2NhdGlvbigpLFxuICAgICAgaW5kZXggPSBfZ2V0SW5kZXhBbmRMb2NhdGlvbjJbMF0sXG4gICAgICBsb2NhdGlvbiA9IF9nZXRJbmRleEFuZExvY2F0aW9uMlsxXTtcblxuICB2YXIgbGlzdGVuZXJzID0gY3JlYXRlRXZlbnRzKCk7XG4gIHZhciBibG9ja2VycyA9IGNyZWF0ZUV2ZW50cygpO1xuXG4gIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgaW5kZXggPSAwO1xuICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKF9leHRlbmRzKHt9LCBnbG9iYWxIaXN0b3J5LnN0YXRlLCB7XG4gICAgICBpZHg6IGluZGV4XG4gICAgfSksICcnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYodG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gIH0gLy8gc3RhdGUgZGVmYXVsdHMgdG8gYG51bGxgIGJlY2F1c2UgYHdpbmRvdy5oaXN0b3J5LnN0YXRlYCBkb2VzXG5cblxuICBmdW5jdGlvbiBnZXROZXh0TG9jYXRpb24odG8sIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YXRlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVhZE9ubHkoX2V4dGVuZHMoe1xuICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgaGFzaDogJycsXG4gICAgICBzZWFyY2g6ICcnXG4gICAgfSwgdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHBhcnNlUGF0aCh0bykgOiB0bywge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAga2V5OiBjcmVhdGVLZXkoKVxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZUFuZFVybChuZXh0TG9jYXRpb24sIGluZGV4KSB7XG4gICAgcmV0dXJuIFt7XG4gICAgICB1c3I6IG5leHRMb2NhdGlvbi5zdGF0ZSxcbiAgICAgIGtleTogbmV4dExvY2F0aW9uLmtleSxcbiAgICAgIGlkeDogaW5kZXhcbiAgICB9LCBjcmVhdGVIcmVmKG5leHRMb2NhdGlvbildO1xuICB9XG5cbiAgZnVuY3Rpb24gYWxsb3dUeChhY3Rpb24sIGxvY2F0aW9uLCByZXRyeSkge1xuICAgIHJldHVybiAhYmxvY2tlcnMubGVuZ3RoIHx8IChibG9ja2Vycy5jYWxsKHtcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgcmV0cnk6IHJldHJ5XG4gICAgfSksIGZhbHNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFwcGx5VHgobmV4dEFjdGlvbikge1xuICAgIGFjdGlvbiA9IG5leHRBY3Rpb247XG5cbiAgICB2YXIgX2dldEluZGV4QW5kTG9jYXRpb24zID0gZ2V0SW5kZXhBbmRMb2NhdGlvbigpO1xuXG4gICAgaW5kZXggPSBfZ2V0SW5kZXhBbmRMb2NhdGlvbjNbMF07XG4gICAgbG9jYXRpb24gPSBfZ2V0SW5kZXhBbmRMb2NhdGlvbjNbMV07XG4gICAgbGlzdGVuZXJzLmNhbGwoe1xuICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2godG8sIHN0YXRlKSB7XG4gICAgdmFyIG5leHRBY3Rpb24gPSBBY3Rpb24uUHVzaDtcbiAgICB2YXIgbmV4dExvY2F0aW9uID0gZ2V0TmV4dExvY2F0aW9uKHRvLCBzdGF0ZSk7XG5cbiAgICBmdW5jdGlvbiByZXRyeSgpIHtcbiAgICAgIHB1c2godG8sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dUeChuZXh0QWN0aW9uLCBuZXh0TG9jYXRpb24sIHJldHJ5KSkge1xuICAgICAgdmFyIF9nZXRIaXN0b3J5U3RhdGVBbmRVciA9IGdldEhpc3RvcnlTdGF0ZUFuZFVybChuZXh0TG9jYXRpb24sIGluZGV4ICsgMSksXG4gICAgICAgICAgaGlzdG9yeVN0YXRlID0gX2dldEhpc3RvcnlTdGF0ZUFuZFVyWzBdLFxuICAgICAgICAgIHVybCA9IF9nZXRIaXN0b3J5U3RhdGVBbmRVclsxXTsgLy8gVE9ETzogU3VwcG9ydCBmb3JjZWQgcmVsb2FkaW5nXG4gICAgICAvLyB0cnkuLi5jYXRjaCBiZWNhdXNlIGlPUyBsaW1pdHMgdXMgdG8gMTAwIHB1c2hTdGF0ZSBjYWxscyA6L1xuXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGdsb2JhbEhpc3RvcnkucHVzaFN0YXRlKGhpc3RvcnlTdGF0ZSwgJycsIHVybCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGV5IGFyZSBnb2luZyB0byBsb3NlIHN0YXRlIGhlcmUsIGJ1dCB0aGVyZSBpcyBubyByZWFsXG4gICAgICAgIC8vIHdheSB0byB3YXJuIHRoZW0gYWJvdXQgaXQgc2luY2UgdGhlIHBhZ2Ugd2lsbCByZWZyZXNoLi4uXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgICAgIH1cblxuICAgICAgYXBwbHlUeChuZXh0QWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlKHRvLCBzdGF0ZSkge1xuICAgIHZhciBuZXh0QWN0aW9uID0gQWN0aW9uLlJlcGxhY2U7XG4gICAgdmFyIG5leHRMb2NhdGlvbiA9IGdldE5leHRMb2NhdGlvbih0bywgc3RhdGUpO1xuXG4gICAgZnVuY3Rpb24gcmV0cnkoKSB7XG4gICAgICByZXBsYWNlKHRvLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKGFsbG93VHgobmV4dEFjdGlvbiwgbmV4dExvY2F0aW9uLCByZXRyeSkpIHtcbiAgICAgIHZhciBfZ2V0SGlzdG9yeVN0YXRlQW5kVXIyID0gZ2V0SGlzdG9yeVN0YXRlQW5kVXJsKG5leHRMb2NhdGlvbiwgaW5kZXgpLFxuICAgICAgICAgIGhpc3RvcnlTdGF0ZSA9IF9nZXRIaXN0b3J5U3RhdGVBbmRVcjJbMF0sXG4gICAgICAgICAgdXJsID0gX2dldEhpc3RvcnlTdGF0ZUFuZFVyMlsxXTsgLy8gVE9ETzogU3VwcG9ydCBmb3JjZWQgcmVsb2FkaW5nXG5cblxuICAgICAgZ2xvYmFsSGlzdG9yeS5yZXBsYWNlU3RhdGUoaGlzdG9yeVN0YXRlLCAnJywgdXJsKTtcbiAgICAgIGFwcGx5VHgobmV4dEFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28oZGVsdGEpIHtcbiAgICBnbG9iYWxIaXN0b3J5LmdvKGRlbHRhKTtcbiAgfVxuXG4gIHZhciBoaXN0b3J5ID0ge1xuICAgIGdldCBhY3Rpb24oKSB7XG4gICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH0sXG5cbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgfSxcblxuICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWYsXG4gICAgcHVzaDogcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlLFxuICAgIGdvOiBnbyxcbiAgICBiYWNrOiBmdW5jdGlvbiBiYWNrKCkge1xuICAgICAgZ28oLTEpO1xuICAgIH0sXG4gICAgZm9yd2FyZDogZnVuY3Rpb24gZm9yd2FyZCgpIHtcbiAgICAgIGdvKDEpO1xuICAgIH0sXG4gICAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgfSxcbiAgICBibG9jazogZnVuY3Rpb24gYmxvY2soYmxvY2tlcikge1xuICAgICAgdmFyIHVuYmxvY2sgPSBibG9ja2Vycy5wdXNoKGJsb2NrZXIpO1xuXG4gICAgICBpZiAoYmxvY2tlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKEJlZm9yZVVubG9hZEV2ZW50VHlwZSwgcHJvbXB0QmVmb3JlVW5sb2FkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdW5ibG9jaygpOyAvLyBSZW1vdmUgdGhlIGJlZm9yZXVubG9hZCBsaXN0ZW5lciBzbyB0aGUgZG9jdW1lbnQgbWF5XG4gICAgICAgIC8vIHN0aWxsIGJlIHNhbHZhZ2VhYmxlIGluIHRoZSBwYWdlaGlkZSBldmVudC5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3VubG9hZGluZy1kb2N1bWVudHNcblxuICAgICAgICBpZiAoIWJsb2NrZXJzLmxlbmd0aCkge1xuICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKEJlZm9yZVVubG9hZEV2ZW50VHlwZSwgcHJvbXB0QmVmb3JlVW5sb2FkKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuLyoqXHJcbiAqIEhhc2ggaGlzdG9yeSBzdG9yZXMgdGhlIGxvY2F0aW9uIGluIHdpbmRvdy5sb2NhdGlvbi5oYXNoLiBUaGlzIG1ha2VzIGl0IGlkZWFsXHJcbiAqIGZvciBzaXR1YXRpb25zIHdoZXJlIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgdGhlIGxvY2F0aW9uIHRvIHRoZSBzZXJ2ZXIgZm9yXHJcbiAqIHNvbWUgcmVhc29uLCBlaXRoZXIgYmVjYXVzZSB5b3UgZG8gY2Fubm90IGNvbmZpZ3VyZSBpdCBvciB0aGUgVVJMIHNwYWNlIGlzXHJcbiAqIHJlc2VydmVkIGZvciBzb21ldGhpbmcgZWxzZS5cclxuICpcclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVtaXgtcnVuL2hpc3RvcnkvdHJlZS9tYWluL2RvY3MvYXBpLXJlZmVyZW5jZS5tZCNjcmVhdGVoYXNoaGlzdG9yeVxyXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlSGFzaEhpc3Rvcnkob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zMiA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9uczIkd2luZG93ID0gX29wdGlvbnMyLndpbmRvdyxcbiAgICAgIHdpbmRvdyA9IF9vcHRpb25zMiR3aW5kb3cgPT09IHZvaWQgMCA/IGRvY3VtZW50LmRlZmF1bHRWaWV3IDogX29wdGlvbnMyJHdpbmRvdztcbiAgdmFyIGdsb2JhbEhpc3RvcnkgPSB3aW5kb3cuaGlzdG9yeTtcblxuICBmdW5jdGlvbiBnZXRJbmRleEFuZExvY2F0aW9uKCkge1xuICAgIHZhciBfcGFyc2VQYXRoID0gcGFyc2VQYXRoKHdpbmRvdy5sb2NhdGlvbi5oYXNoLnN1YnN0cigxKSksXG4gICAgICAgIF9wYXJzZVBhdGgkcGF0aG5hbWUgPSBfcGFyc2VQYXRoLnBhdGhuYW1lLFxuICAgICAgICBwYXRobmFtZSA9IF9wYXJzZVBhdGgkcGF0aG5hbWUgPT09IHZvaWQgMCA/ICcvJyA6IF9wYXJzZVBhdGgkcGF0aG5hbWUsXG4gICAgICAgIF9wYXJzZVBhdGgkc2VhcmNoID0gX3BhcnNlUGF0aC5zZWFyY2gsXG4gICAgICAgIHNlYXJjaCA9IF9wYXJzZVBhdGgkc2VhcmNoID09PSB2b2lkIDAgPyAnJyA6IF9wYXJzZVBhdGgkc2VhcmNoLFxuICAgICAgICBfcGFyc2VQYXRoJGhhc2ggPSBfcGFyc2VQYXRoLmhhc2gsXG4gICAgICAgIGhhc2ggPSBfcGFyc2VQYXRoJGhhc2ggPT09IHZvaWQgMCA/ICcnIDogX3BhcnNlUGF0aCRoYXNoO1xuXG4gICAgdmFyIHN0YXRlID0gZ2xvYmFsSGlzdG9yeS5zdGF0ZSB8fCB7fTtcbiAgICByZXR1cm4gW3N0YXRlLmlkeCwgcmVhZE9ubHkoe1xuICAgICAgcGF0aG5hbWU6IHBhdGhuYW1lLFxuICAgICAgc2VhcmNoOiBzZWFyY2gsXG4gICAgICBoYXNoOiBoYXNoLFxuICAgICAgc3RhdGU6IHN0YXRlLnVzciB8fCBudWxsLFxuICAgICAga2V5OiBzdGF0ZS5rZXkgfHwgJ2RlZmF1bHQnXG4gICAgfSldO1xuICB9XG5cbiAgdmFyIGJsb2NrZWRQb3BUeCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wKCkge1xuICAgIGlmIChibG9ja2VkUG9wVHgpIHtcbiAgICAgIGJsb2NrZXJzLmNhbGwoYmxvY2tlZFBvcFR4KTtcbiAgICAgIGJsb2NrZWRQb3BUeCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBuZXh0QWN0aW9uID0gQWN0aW9uLlBvcDtcblxuICAgICAgdmFyIF9nZXRJbmRleEFuZExvY2F0aW9uNCA9IGdldEluZGV4QW5kTG9jYXRpb24oKSxcbiAgICAgICAgICBuZXh0SW5kZXggPSBfZ2V0SW5kZXhBbmRMb2NhdGlvbjRbMF0sXG4gICAgICAgICAgbmV4dExvY2F0aW9uID0gX2dldEluZGV4QW5kTG9jYXRpb240WzFdO1xuXG4gICAgICBpZiAoYmxvY2tlcnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChuZXh0SW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgIHZhciBkZWx0YSA9IGluZGV4IC0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgaWYgKGRlbHRhKSB7XG4gICAgICAgICAgICAvLyBSZXZlcnQgdGhlIFBPUFxuICAgICAgICAgICAgYmxvY2tlZFBvcFR4ID0ge1xuICAgICAgICAgICAgICBhY3Rpb246IG5leHRBY3Rpb24sXG4gICAgICAgICAgICAgIGxvY2F0aW9uOiBuZXh0TG9jYXRpb24sXG4gICAgICAgICAgICAgIHJldHJ5OiBmdW5jdGlvbiByZXRyeSgpIHtcbiAgICAgICAgICAgICAgICBnbyhkZWx0YSAqIC0xKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdvKGRlbHRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVHJ5aW5nIHRvIFBPUCB0byBhIGxvY2F0aW9uIHdpdGggbm8gaW5kZXguIFdlIGRpZCBub3QgY3JlYXRlXG4gICAgICAgICAgLy8gdGhpcyBsb2NhdGlvbiwgc28gd2UgY2FuJ3QgZWZmZWN0aXZlbHkgYmxvY2sgdGhlIG5hdmlnYXRpb24uXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgLy8gVE9ETzogV3JpdGUgdXAgYSBkb2MgdGhhdCBleHBsYWlucyBvdXIgYmxvY2tpbmcgc3RyYXRlZ3kgaW5cbiAgICAgICAgICAvLyBkZXRhaWwgYW5kIGxpbmsgdG8gaXQgaGVyZSBzbyBwZW9wbGUgY2FuIHVuZGVyc3RhbmQgYmV0dGVyXG4gICAgICAgICAgLy8gd2hhdCBpcyBnb2luZyBvbiBhbmQgaG93IHRvIGF2b2lkIGl0LlxuICAgICAgICAgIFwiWW91IGFyZSB0cnlpbmcgdG8gYmxvY2sgYSBQT1AgbmF2aWdhdGlvbiB0byBhIGxvY2F0aW9uIHRoYXQgd2FzIG5vdCBcIiArIFwiY3JlYXRlZCBieSB0aGUgaGlzdG9yeSBsaWJyYXJ5LiBUaGUgYmxvY2sgd2lsbCBmYWlsIHNpbGVudGx5IGluIFwiICsgXCJwcm9kdWN0aW9uLCBidXQgaW4gZ2VuZXJhbCB5b3Ugc2hvdWxkIGRvIGFsbCBuYXZpZ2F0aW9uIHdpdGggdGhlIFwiICsgXCJoaXN0b3J5IGxpYnJhcnkgKGluc3RlYWQgb2YgdXNpbmcgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIGRpcmVjdGx5KSBcIiArIFwidG8gYXZvaWQgdGhpcyBzaXR1YXRpb24uXCIpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcHBseVR4KG5leHRBY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFBvcFN0YXRlRXZlbnRUeXBlLCBoYW5kbGVQb3ApOyAvLyBwb3BzdGF0ZSBkb2VzIG5vdCBmaXJlIG9uIGhhc2hjaGFuZ2UgaW4gSUUgMTEgYW5kIG9sZCAodHJpZGVudCkgRWRnZVxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kZS9kb2NzL1dlYi9BUEkvV2luZG93L3BvcHN0YXRlX2V2ZW50XG5cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoSGFzaENoYW5nZUV2ZW50VHlwZSwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBfZ2V0SW5kZXhBbmRMb2NhdGlvbjUgPSBnZXRJbmRleEFuZExvY2F0aW9uKCksXG4gICAgICAgIG5leHRMb2NhdGlvbiA9IF9nZXRJbmRleEFuZExvY2F0aW9uNVsxXTsgLy8gSWdub3JlIGV4dHJhbmVvdXMgaGFzaGNoYW5nZSBldmVudHMuXG5cblxuICAgIGlmIChjcmVhdGVQYXRoKG5leHRMb2NhdGlvbikgIT09IGNyZWF0ZVBhdGgobG9jYXRpb24pKSB7XG4gICAgICBoYW5kbGVQb3AoKTtcbiAgICB9XG4gIH0pO1xuICB2YXIgYWN0aW9uID0gQWN0aW9uLlBvcDtcblxuICB2YXIgX2dldEluZGV4QW5kTG9jYXRpb242ID0gZ2V0SW5kZXhBbmRMb2NhdGlvbigpLFxuICAgICAgaW5kZXggPSBfZ2V0SW5kZXhBbmRMb2NhdGlvbjZbMF0sXG4gICAgICBsb2NhdGlvbiA9IF9nZXRJbmRleEFuZExvY2F0aW9uNlsxXTtcblxuICB2YXIgbGlzdGVuZXJzID0gY3JlYXRlRXZlbnRzKCk7XG4gIHZhciBibG9ja2VycyA9IGNyZWF0ZUV2ZW50cygpO1xuXG4gIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgaW5kZXggPSAwO1xuICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKF9leHRlbmRzKHt9LCBnbG9iYWxIaXN0b3J5LnN0YXRlLCB7XG4gICAgICBpZHg6IGluZGV4XG4gICAgfSksICcnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJhc2VIcmVmKCkge1xuICAgIHZhciBiYXNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYmFzZScpO1xuICAgIHZhciBocmVmID0gJyc7XG5cbiAgICBpZiAoYmFzZSAmJiBiYXNlLmdldEF0dHJpYnV0ZSgnaHJlZicpKSB7XG4gICAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICB2YXIgaGFzaEluZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcbiAgICAgIGhyZWYgPSBoYXNoSW5kZXggPT09IC0xID8gdXJsIDogdXJsLnNsaWNlKDAsIGhhc2hJbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhyZWY7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVIcmVmKHRvKSB7XG4gICAgcmV0dXJuIGdldEJhc2VIcmVmKCkgKyAnIycgKyAodHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHRvIDogY3JlYXRlUGF0aCh0bykpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dExvY2F0aW9uKHRvLCBzdGF0ZSkge1xuICAgIGlmIChzdGF0ZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzdGF0ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlYWRPbmx5KF9leHRlbmRzKHtcbiAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIGhhc2g6ICcnLFxuICAgICAgc2VhcmNoOiAnJ1xuICAgIH0sIHR5cGVvZiB0byA9PT0gJ3N0cmluZycgPyBwYXJzZVBhdGgodG8pIDogdG8sIHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIGtleTogY3JlYXRlS2V5KClcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRIaXN0b3J5U3RhdGVBbmRVcmwobmV4dExvY2F0aW9uLCBpbmRleCkge1xuICAgIHJldHVybiBbe1xuICAgICAgdXNyOiBuZXh0TG9jYXRpb24uc3RhdGUsXG4gICAgICBrZXk6IG5leHRMb2NhdGlvbi5rZXksXG4gICAgICBpZHg6IGluZGV4XG4gICAgfSwgY3JlYXRlSHJlZihuZXh0TG9jYXRpb24pXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFsbG93VHgoYWN0aW9uLCBsb2NhdGlvbiwgcmV0cnkpIHtcbiAgICByZXR1cm4gIWJsb2NrZXJzLmxlbmd0aCB8fCAoYmxvY2tlcnMuY2FsbCh7XG4gICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgIHJldHJ5OiByZXRyeVxuICAgIH0pLCBmYWxzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVR4KG5leHRBY3Rpb24pIHtcbiAgICBhY3Rpb24gPSBuZXh0QWN0aW9uO1xuXG4gICAgdmFyIF9nZXRJbmRleEFuZExvY2F0aW9uNyA9IGdldEluZGV4QW5kTG9jYXRpb24oKTtcblxuICAgIGluZGV4ID0gX2dldEluZGV4QW5kTG9jYXRpb243WzBdO1xuICAgIGxvY2F0aW9uID0gX2dldEluZGV4QW5kTG9jYXRpb243WzFdO1xuICAgIGxpc3RlbmVycy5jYWxsKHtcbiAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoKHRvLCBzdGF0ZSkge1xuICAgIHZhciBuZXh0QWN0aW9uID0gQWN0aW9uLlB1c2g7XG4gICAgdmFyIG5leHRMb2NhdGlvbiA9IGdldE5leHRMb2NhdGlvbih0bywgc3RhdGUpO1xuXG4gICAgZnVuY3Rpb24gcmV0cnkoKSB7XG4gICAgICBwdXNoKHRvLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhuZXh0TG9jYXRpb24ucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycsIFwiUmVsYXRpdmUgcGF0aG5hbWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGhhc2ggaGlzdG9yeS5wdXNoKFwiICsgSlNPTi5zdHJpbmdpZnkodG8pICsgXCIpXCIpIDogdm9pZCAwO1xuXG4gICAgaWYgKGFsbG93VHgobmV4dEFjdGlvbiwgbmV4dExvY2F0aW9uLCByZXRyeSkpIHtcbiAgICAgIHZhciBfZ2V0SGlzdG9yeVN0YXRlQW5kVXIzID0gZ2V0SGlzdG9yeVN0YXRlQW5kVXJsKG5leHRMb2NhdGlvbiwgaW5kZXggKyAxKSxcbiAgICAgICAgICBoaXN0b3J5U3RhdGUgPSBfZ2V0SGlzdG9yeVN0YXRlQW5kVXIzWzBdLFxuICAgICAgICAgIHVybCA9IF9nZXRIaXN0b3J5U3RhdGVBbmRVcjNbMV07IC8vIFRPRE86IFN1cHBvcnQgZm9yY2VkIHJlbG9hZGluZ1xuICAgICAgLy8gdHJ5Li4uY2F0Y2ggYmVjYXVzZSBpT1MgbGltaXRzIHVzIHRvIDEwMCBwdXNoU3RhdGUgY2FsbHMgOi9cblxuXG4gICAgICB0cnkge1xuICAgICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCB1cmwpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gVGhleSBhcmUgZ29pbmcgdG8gbG9zZSBzdGF0ZSBoZXJlLCBidXQgdGhlcmUgaXMgbm8gcmVhbFxuICAgICAgICAvLyB3YXkgdG8gd2FybiB0aGVtIGFib3V0IGl0IHNpbmNlIHRoZSBwYWdlIHdpbGwgcmVmcmVzaC4uLlxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHVybCk7XG4gICAgICB9XG5cbiAgICAgIGFwcGx5VHgobmV4dEFjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZSh0bywgc3RhdGUpIHtcbiAgICB2YXIgbmV4dEFjdGlvbiA9IEFjdGlvbi5SZXBsYWNlO1xuICAgIHZhciBuZXh0TG9jYXRpb24gPSBnZXROZXh0TG9jYXRpb24odG8sIHN0YXRlKTtcblxuICAgIGZ1bmN0aW9uIHJldHJ5KCkge1xuICAgICAgcmVwbGFjZSh0bywgc3RhdGUpO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcobmV4dExvY2F0aW9uLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nLCBcIlJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBoYXNoIGhpc3RvcnkucmVwbGFjZShcIiArIEpTT04uc3RyaW5naWZ5KHRvKSArIFwiKVwiKSA6IHZvaWQgMDtcblxuICAgIGlmIChhbGxvd1R4KG5leHRBY3Rpb24sIG5leHRMb2NhdGlvbiwgcmV0cnkpKSB7XG4gICAgICB2YXIgX2dldEhpc3RvcnlTdGF0ZUFuZFVyNCA9IGdldEhpc3RvcnlTdGF0ZUFuZFVybChuZXh0TG9jYXRpb24sIGluZGV4KSxcbiAgICAgICAgICBoaXN0b3J5U3RhdGUgPSBfZ2V0SGlzdG9yeVN0YXRlQW5kVXI0WzBdLFxuICAgICAgICAgIHVybCA9IF9nZXRIaXN0b3J5U3RhdGVBbmRVcjRbMV07IC8vIFRPRE86IFN1cHBvcnQgZm9yY2VkIHJlbG9hZGluZ1xuXG5cbiAgICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKGhpc3RvcnlTdGF0ZSwgJycsIHVybCk7XG4gICAgICBhcHBseVR4KG5leHRBY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKGRlbHRhKSB7XG4gICAgZ2xvYmFsSGlzdG9yeS5nbyhkZWx0YSk7XG4gIH1cblxuICB2YXIgaGlzdG9yeSA9IHtcbiAgICBnZXQgYWN0aW9uKCkge1xuICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICB9LFxuXG4gICAgZ2V0IGxvY2F0aW9uKCkge1xuICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgIH0sXG5cbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgIHB1c2g6IHB1c2gsXG4gICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICBnbzogZ28sXG4gICAgYmFjazogZnVuY3Rpb24gYmFjaygpIHtcbiAgICAgIGdvKC0xKTtcbiAgICB9LFxuICAgIGZvcndhcmQ6IGZ1bmN0aW9uIGZvcndhcmQoKSB7XG4gICAgICBnbygxKTtcbiAgICB9LFxuICAgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0sXG4gICAgYmxvY2s6IGZ1bmN0aW9uIGJsb2NrKGJsb2NrZXIpIHtcbiAgICAgIHZhciB1bmJsb2NrID0gYmxvY2tlcnMucHVzaChibG9ja2VyKTtcblxuICAgICAgaWYgKGJsb2NrZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihCZWZvcmVVbmxvYWRFdmVudFR5cGUsIHByb21wdEJlZm9yZVVubG9hZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVuYmxvY2soKTsgLy8gUmVtb3ZlIHRoZSBiZWZvcmV1bmxvYWQgbGlzdGVuZXIgc28gdGhlIGRvY3VtZW50IG1heVxuICAgICAgICAvLyBzdGlsbCBiZSBzYWx2YWdlYWJsZSBpbiB0aGUgcGFnZWhpZGUgZXZlbnQuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN1bmxvYWRpbmctZG9jdW1lbnRzXG5cbiAgICAgICAgaWYgKCFibG9ja2Vycy5sZW5ndGgpIHtcbiAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihCZWZvcmVVbmxvYWRFdmVudFR5cGUsIHByb21wdEJlZm9yZVVubG9hZCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGlzdG9yeTtcbn1cbi8qKlxyXG4gKiBNZW1vcnkgaGlzdG9yeSBzdG9yZXMgdGhlIGN1cnJlbnQgbG9jYXRpb24gaW4gbWVtb3J5LiBJdCBpcyBkZXNpZ25lZCBmb3IgdXNlXHJcbiAqIGluIHN0YXRlZnVsIG5vbi1icm93c2VyIGVudmlyb25tZW50cyBsaWtlIHRlc3RzIGFuZCBSZWFjdCBOYXRpdmUuXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlbWl4LXJ1bi9oaXN0b3J5L3RyZWUvbWFpbi9kb2NzL2FwaS1yZWZlcmVuY2UubWQjY3JlYXRlbWVtb3J5aGlzdG9yeVxyXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlTWVtb3J5SGlzdG9yeShvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMzID0gb3B0aW9ucyxcbiAgICAgIF9vcHRpb25zMyRpbml0aWFsRW50ciA9IF9vcHRpb25zMy5pbml0aWFsRW50cmllcyxcbiAgICAgIGluaXRpYWxFbnRyaWVzID0gX29wdGlvbnMzJGluaXRpYWxFbnRyID09PSB2b2lkIDAgPyBbJy8nXSA6IF9vcHRpb25zMyRpbml0aWFsRW50cixcbiAgICAgIGluaXRpYWxJbmRleCA9IF9vcHRpb25zMy5pbml0aWFsSW5kZXg7XG4gIHZhciBlbnRyaWVzID0gaW5pdGlhbEVudHJpZXMubWFwKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZhciBsb2NhdGlvbiA9IHJlYWRPbmx5KF9leHRlbmRzKHtcbiAgICAgIHBhdGhuYW1lOiAnLycsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgaGFzaDogJycsXG4gICAgICBzdGF0ZTogbnVsbCxcbiAgICAgIGtleTogY3JlYXRlS2V5KClcbiAgICB9LCB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnID8gcGFyc2VQYXRoKGVudHJ5KSA6IGVudHJ5KSk7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhsb2NhdGlvbi5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJywgXCJSZWxhdGl2ZSBwYXRobmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gY3JlYXRlTWVtb3J5SGlzdG9yeSh7IGluaXRpYWxFbnRyaWVzIH0pIChpbnZhbGlkIGVudHJ5OiBcIiArIEpTT04uc3RyaW5naWZ5KGVudHJ5KSArIFwiKVwiKSA6IHZvaWQgMDtcbiAgICByZXR1cm4gbG9jYXRpb247XG4gIH0pO1xuICB2YXIgaW5kZXggPSBjbGFtcChpbml0aWFsSW5kZXggPT0gbnVsbCA/IGVudHJpZXMubGVuZ3RoIC0gMSA6IGluaXRpYWxJbmRleCwgMCwgZW50cmllcy5sZW5ndGggLSAxKTtcbiAgdmFyIGFjdGlvbiA9IEFjdGlvbi5Qb3A7XG4gIHZhciBsb2NhdGlvbiA9IGVudHJpZXNbaW5kZXhdO1xuICB2YXIgbGlzdGVuZXJzID0gY3JlYXRlRXZlbnRzKCk7XG4gIHZhciBibG9ja2VycyA9IGNyZWF0ZUV2ZW50cygpO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYodG8pIHtcbiAgICByZXR1cm4gdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHRvIDogY3JlYXRlUGF0aCh0byk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0TG9jYXRpb24odG8sIHN0YXRlKSB7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YXRlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVhZE9ubHkoX2V4dGVuZHMoe1xuICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgc2VhcmNoOiAnJyxcbiAgICAgIGhhc2g6ICcnXG4gICAgfSwgdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHBhcnNlUGF0aCh0bykgOiB0bywge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAga2V5OiBjcmVhdGVLZXkoKVxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGFsbG93VHgoYWN0aW9uLCBsb2NhdGlvbiwgcmV0cnkpIHtcbiAgICByZXR1cm4gIWJsb2NrZXJzLmxlbmd0aCB8fCAoYmxvY2tlcnMuY2FsbCh7XG4gICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgIHJldHJ5OiByZXRyeVxuICAgIH0pLCBmYWxzZSk7XG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVR4KG5leHRBY3Rpb24sIG5leHRMb2NhdGlvbikge1xuICAgIGFjdGlvbiA9IG5leHRBY3Rpb247XG4gICAgbG9jYXRpb24gPSBuZXh0TG9jYXRpb247XG4gICAgbGlzdGVuZXJzLmNhbGwoe1xuICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2godG8sIHN0YXRlKSB7XG4gICAgdmFyIG5leHRBY3Rpb24gPSBBY3Rpb24uUHVzaDtcbiAgICB2YXIgbmV4dExvY2F0aW9uID0gZ2V0TmV4dExvY2F0aW9uKHRvLCBzdGF0ZSk7XG5cbiAgICBmdW5jdGlvbiByZXRyeSgpIHtcbiAgICAgIHB1c2godG8sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGxvY2F0aW9uLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nLCBcIlJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBtZW1vcnkgaGlzdG9yeS5wdXNoKFwiICsgSlNPTi5zdHJpbmdpZnkodG8pICsgXCIpXCIpIDogdm9pZCAwO1xuXG4gICAgaWYgKGFsbG93VHgobmV4dEFjdGlvbiwgbmV4dExvY2F0aW9uLCByZXRyeSkpIHtcbiAgICAgIGluZGV4ICs9IDE7XG4gICAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgZW50cmllcy5sZW5ndGgsIG5leHRMb2NhdGlvbik7XG4gICAgICBhcHBseVR4KG5leHRBY3Rpb24sIG5leHRMb2NhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZSh0bywgc3RhdGUpIHtcbiAgICB2YXIgbmV4dEFjdGlvbiA9IEFjdGlvbi5SZXBsYWNlO1xuICAgIHZhciBuZXh0TG9jYXRpb24gPSBnZXROZXh0TG9jYXRpb24odG8sIHN0YXRlKTtcblxuICAgIGZ1bmN0aW9uIHJldHJ5KCkge1xuICAgICAgcmVwbGFjZSh0bywgc3RhdGUpO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcobG9jYXRpb24ucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycsIFwiUmVsYXRpdmUgcGF0aG5hbWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIG1lbW9yeSBoaXN0b3J5LnJlcGxhY2UoXCIgKyBKU09OLnN0cmluZ2lmeSh0bykgKyBcIilcIikgOiB2b2lkIDA7XG5cbiAgICBpZiAoYWxsb3dUeChuZXh0QWN0aW9uLCBuZXh0TG9jYXRpb24sIHJldHJ5KSkge1xuICAgICAgZW50cmllc1tpbmRleF0gPSBuZXh0TG9jYXRpb247XG4gICAgICBhcHBseVR4KG5leHRBY3Rpb24sIG5leHRMb2NhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28oZGVsdGEpIHtcbiAgICB2YXIgbmV4dEluZGV4ID0gY2xhbXAoaW5kZXggKyBkZWx0YSwgMCwgZW50cmllcy5sZW5ndGggLSAxKTtcbiAgICB2YXIgbmV4dEFjdGlvbiA9IEFjdGlvbi5Qb3A7XG4gICAgdmFyIG5leHRMb2NhdGlvbiA9IGVudHJpZXNbbmV4dEluZGV4XTtcblxuICAgIGZ1bmN0aW9uIHJldHJ5KCkge1xuICAgICAgZ28oZGVsdGEpO1xuICAgIH1cblxuICAgIGlmIChhbGxvd1R4KG5leHRBY3Rpb24sIG5leHRMb2NhdGlvbiwgcmV0cnkpKSB7XG4gICAgICBpbmRleCA9IG5leHRJbmRleDtcbiAgICAgIGFwcGx5VHgobmV4dEFjdGlvbiwgbmV4dExvY2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaGlzdG9yeSA9IHtcbiAgICBnZXQgaW5kZXgoKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfSxcblxuICAgIGdldCBhY3Rpb24oKSB7XG4gICAgICByZXR1cm4gYWN0aW9uO1xuICAgIH0sXG5cbiAgICBnZXQgbG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgfSxcblxuICAgIGNyZWF0ZUhyZWY6IGNyZWF0ZUhyZWYsXG4gICAgcHVzaDogcHVzaCxcbiAgICByZXBsYWNlOiByZXBsYWNlLFxuICAgIGdvOiBnbyxcbiAgICBiYWNrOiBmdW5jdGlvbiBiYWNrKCkge1xuICAgICAgZ28oLTEpO1xuICAgIH0sXG4gICAgZm9yd2FyZDogZnVuY3Rpb24gZm9yd2FyZCgpIHtcbiAgICAgIGdvKDEpO1xuICAgIH0sXG4gICAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4obGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgfSxcbiAgICBibG9jazogZnVuY3Rpb24gYmxvY2soYmxvY2tlcikge1xuICAgICAgcmV0dXJuIGJsb2NrZXJzLnB1c2goYmxvY2tlcik7XG4gICAgfVxuICB9O1xuICByZXR1cm4gaGlzdG9yeTtcbn0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVUSUxTXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5mdW5jdGlvbiBjbGFtcChuLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChuLCBsb3dlckJvdW5kKSwgdXBwZXJCb3VuZCk7XG59XG5cbmZ1bmN0aW9uIHByb21wdEJlZm9yZVVubG9hZChldmVudCkge1xuICAvLyBDYW5jZWwgdGhlIGV2ZW50LlxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBDaHJvbWUgKGFuZCBsZWdhY3kgSUUpIHJlcXVpcmVzIHJldHVyblZhbHVlIHRvIGJlIHNldC5cblxuICBldmVudC5yZXR1cm5WYWx1ZSA9ICcnO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFdmVudHMoKSB7XG4gIHZhciBoYW5kbGVycyA9IFtdO1xuICByZXR1cm4ge1xuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICByZXR1cm4gaGFuZGxlcnMubGVuZ3RoO1xuICAgIH0sXG5cbiAgICBwdXNoOiBmdW5jdGlvbiBwdXNoKGZuKSB7XG4gICAgICBoYW5kbGVycy5wdXNoKGZuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhhbmRsZXJzID0gaGFuZGxlcnMuZmlsdGVyKGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZXIgIT09IGZuO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBjYWxsOiBmdW5jdGlvbiBjYWxsKGFyZykge1xuICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuICYmIGZuKGFyZyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleSgpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA4KTtcbn1cbi8qKlxyXG4gKiBDcmVhdGVzIGEgc3RyaW5nIFVSTCBwYXRoIGZyb20gdGhlIGdpdmVuIHBhdGhuYW1lLCBzZWFyY2gsIGFuZCBoYXNoIGNvbXBvbmVudHMuXHJcbiAqXHJcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlbWl4LXJ1bi9oaXN0b3J5L3RyZWUvbWFpbi9kb2NzL2FwaS1yZWZlcmVuY2UubWQjY3JlYXRlcGF0aFxyXG4gKi9cblxuXG5mdW5jdGlvbiBjcmVhdGVQYXRoKF9yZWYpIHtcbiAgdmFyIF9yZWYkcGF0aG5hbWUgPSBfcmVmLnBhdGhuYW1lLFxuICAgICAgcGF0aG5hbWUgPSBfcmVmJHBhdGhuYW1lID09PSB2b2lkIDAgPyAnLycgOiBfcmVmJHBhdGhuYW1lLFxuICAgICAgX3JlZiRzZWFyY2ggPSBfcmVmLnNlYXJjaCxcbiAgICAgIHNlYXJjaCA9IF9yZWYkc2VhcmNoID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkc2VhcmNoLFxuICAgICAgX3JlZiRoYXNoID0gX3JlZi5oYXNoLFxuICAgICAgaGFzaCA9IF9yZWYkaGFzaCA9PT0gdm9pZCAwID8gJycgOiBfcmVmJGhhc2g7XG4gIGlmIChzZWFyY2ggJiYgc2VhcmNoICE9PSAnPycpIHBhdGhuYW1lICs9IHNlYXJjaC5jaGFyQXQoMCkgPT09ICc/JyA/IHNlYXJjaCA6ICc/JyArIHNlYXJjaDtcbiAgaWYgKGhhc2ggJiYgaGFzaCAhPT0gJyMnKSBwYXRobmFtZSArPSBoYXNoLmNoYXJBdCgwKSA9PT0gJyMnID8gaGFzaCA6ICcjJyArIGhhc2g7XG4gIHJldHVybiBwYXRobmFtZTtcbn1cbi8qKlxyXG4gKiBQYXJzZXMgYSBzdHJpbmcgVVJMIHBhdGggaW50byBpdHMgc2VwYXJhdGUgcGF0aG5hbWUsIHNlYXJjaCwgYW5kIGhhc2ggY29tcG9uZW50cy5cclxuICpcclxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVtaXgtcnVuL2hpc3RvcnkvdHJlZS9tYWluL2RvY3MvYXBpLXJlZmVyZW5jZS5tZCNwYXJzZXBhdGhcclxuICovXG5cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIHZhciBwYXJzZWRQYXRoID0ge307XG5cbiAgaWYgKHBhdGgpIHtcbiAgICB2YXIgaGFzaEluZGV4ID0gcGF0aC5pbmRleE9mKCcjJyk7XG5cbiAgICBpZiAoaGFzaEluZGV4ID49IDApIHtcbiAgICAgIHBhcnNlZFBhdGguaGFzaCA9IHBhdGguc3Vic3RyKGhhc2hJbmRleCk7XG4gICAgICBwYXRoID0gcGF0aC5zdWJzdHIoMCwgaGFzaEluZGV4KTtcbiAgICB9XG5cbiAgICB2YXIgc2VhcmNoSW5kZXggPSBwYXRoLmluZGV4T2YoJz8nKTtcblxuICAgIGlmIChzZWFyY2hJbmRleCA+PSAwKSB7XG4gICAgICBwYXJzZWRQYXRoLnNlYXJjaCA9IHBhdGguc3Vic3RyKHNlYXJjaEluZGV4KTtcbiAgICAgIHBhdGggPSBwYXRoLnN1YnN0cigwLCBzZWFyY2hJbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHBhcnNlZFBhdGgucGF0aG5hbWUgPSBwYXRoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRQYXRoO1xufVxuXG5leHBvcnQgeyBBY3Rpb24sIGNyZWF0ZUJyb3dzZXJIaXN0b3J5LCBjcmVhdGVIYXNoSGlzdG9yeSwgY3JlYXRlTWVtb3J5SGlzdG9yeSwgY3JlYXRlUGF0aCwgcGFyc2VQYXRoIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsIi8qKlxuICogUmVhY3QgUm91dGVyIHY2LjMuMFxuICpcbiAqIENvcHlyaWdodCAoYykgUmVtaXggU29mdHdhcmUgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICovXG5pbXBvcnQgeyBwYXJzZVBhdGgsIGNyZWF0ZU1lbW9yeUhpc3RvcnksIEFjdGlvbiB9IGZyb20gJ2hpc3RvcnknO1xuZXhwb3J0IHsgQWN0aW9uIGFzIE5hdmlnYXRpb25UeXBlLCBjcmVhdGVQYXRoLCBwYXJzZVBhdGggfSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCwgQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50LCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgTmF2aWdhdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChudWxsKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBOYXZpZ2F0aW9uQ29udGV4dC5kaXNwbGF5TmFtZSA9IFwiTmF2aWdhdGlvblwiO1xufVxuXG5jb25zdCBMb2NhdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29udGV4dChudWxsKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBMb2NhdGlvbkNvbnRleHQuZGlzcGxheU5hbWUgPSBcIkxvY2F0aW9uXCI7XG59XG5cbmNvbnN0IFJvdXRlQ29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KHtcbiAgb3V0bGV0OiBudWxsLFxuICBtYXRjaGVzOiBbXVxufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgUm91dGVDb250ZXh0LmRpc3BsYXlOYW1lID0gXCJSb3V0ZVwiO1xufVxuXG5mdW5jdGlvbiBpbnZhcmlhbnQoY29uZCwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmQpIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbmZ1bmN0aW9uIHdhcm5pbmcoY29uZCwgbWVzc2FnZSkge1xuICBpZiAoIWNvbmQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIikgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IFJvdXRlciFcbiAgICAgIC8vXG4gICAgICAvLyBUaGlzIGVycm9yIGlzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHlvdSBjYW4gbW9yZSBlYXNpbHlcbiAgICAgIC8vIGZpbmQgdGhlIHNvdXJjZSBmb3IgYSB3YXJuaW5nIHRoYXQgYXBwZWFycyBpbiB0aGUgY29uc29sZSBieVxuICAgICAgLy8gZW5hYmxpbmcgXCJwYXVzZSBvbiBleGNlcHRpb25zXCIgaW4geW91ciBKYXZhU2NyaXB0IGRlYnVnZ2VyLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG59XG5jb25zdCBhbHJlYWR5V2FybmVkID0ge307XG5mdW5jdGlvbiB3YXJuaW5nT25jZShrZXksIGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kICYmICFhbHJlYWR5V2FybmVkW2tleV0pIHtcbiAgICBhbHJlYWR5V2FybmVkW2tleV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoZmFsc2UsIG1lc3NhZ2UpIDogdm9pZCAwO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHBhdGggd2l0aCBwYXJhbXMgaW50ZXJwb2xhdGVkLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZG9jcy9lbi92Ni9hcGkjZ2VuZXJhdGVwYXRoXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlUGF0aChwYXRoLCBwYXJhbXMpIHtcbiAgaWYgKHBhcmFtcyA9PT0gdm9pZCAwKSB7XG4gICAgcGFyYW1zID0ge307XG4gIH1cblxuICByZXR1cm4gcGF0aC5yZXBsYWNlKC86KFxcdyspL2csIChfLCBrZXkpID0+IHtcbiAgICAhKHBhcmFtc1trZXldICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIk1pc3NpbmcgXFxcIjpcIiArIGtleSArIFwiXFxcIiBwYXJhbVwiKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIHBhcmFtc1trZXldO1xuICB9KS5yZXBsYWNlKC9cXC8qXFwqJC8sIF8gPT4gcGFyYW1zW1wiKlwiXSA9PSBudWxsID8gXCJcIiA6IHBhcmFtc1tcIipcIl0ucmVwbGFjZSgvXlxcLyovLCBcIi9cIikpO1xufVxuLyoqXG4gKiBBIFJvdXRlTWF0Y2ggY29udGFpbnMgaW5mbyBhYm91dCBob3cgYSByb3V0ZSBtYXRjaGVkIGEgVVJMLlxuICovXG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgZ2l2ZW4gcm91dGVzIHRvIGEgbG9jYXRpb24gYW5kIHJldHVybnMgdGhlIG1hdGNoIGRhdGEuXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSNtYXRjaHJvdXRlc1xuICovXG5mdW5jdGlvbiBtYXRjaFJvdXRlcyhyb3V0ZXMsIGxvY2F0aW9uQXJnLCBiYXNlbmFtZSkge1xuICBpZiAoYmFzZW5hbWUgPT09IHZvaWQgMCkge1xuICAgIGJhc2VuYW1lID0gXCIvXCI7XG4gIH1cblxuICBsZXQgbG9jYXRpb24gPSB0eXBlb2YgbG9jYXRpb25BcmcgPT09IFwic3RyaW5nXCIgPyBwYXJzZVBhdGgobG9jYXRpb25BcmcpIDogbG9jYXRpb25Bcmc7XG4gIGxldCBwYXRobmFtZSA9IHN0cmlwQmFzZW5hbWUobG9jYXRpb24ucGF0aG5hbWUgfHwgXCIvXCIsIGJhc2VuYW1lKTtcblxuICBpZiAocGF0aG5hbWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IGJyYW5jaGVzID0gZmxhdHRlblJvdXRlcyhyb3V0ZXMpO1xuICByYW5rUm91dGVCcmFuY2hlcyhicmFuY2hlcyk7XG4gIGxldCBtYXRjaGVzID0gbnVsbDtcblxuICBmb3IgKGxldCBpID0gMDsgbWF0Y2hlcyA9PSBudWxsICYmIGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkge1xuICAgIG1hdGNoZXMgPSBtYXRjaFJvdXRlQnJhbmNoKGJyYW5jaGVzW2ldLCBwYXRobmFtZSk7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gZmxhdHRlblJvdXRlcyhyb3V0ZXMsIGJyYW5jaGVzLCBwYXJlbnRzTWV0YSwgcGFyZW50UGF0aCkge1xuICBpZiAoYnJhbmNoZXMgPT09IHZvaWQgMCkge1xuICAgIGJyYW5jaGVzID0gW107XG4gIH1cblxuICBpZiAocGFyZW50c01ldGEgPT09IHZvaWQgMCkge1xuICAgIHBhcmVudHNNZXRhID0gW107XG4gIH1cblxuICBpZiAocGFyZW50UGF0aCA9PT0gdm9pZCAwKSB7XG4gICAgcGFyZW50UGF0aCA9IFwiXCI7XG4gIH1cblxuICByb3V0ZXMuZm9yRWFjaCgocm91dGUsIGluZGV4KSA9PiB7XG4gICAgbGV0IG1ldGEgPSB7XG4gICAgICByZWxhdGl2ZVBhdGg6IHJvdXRlLnBhdGggfHwgXCJcIixcbiAgICAgIGNhc2VTZW5zaXRpdmU6IHJvdXRlLmNhc2VTZW5zaXRpdmUgPT09IHRydWUsXG4gICAgICBjaGlsZHJlbkluZGV4OiBpbmRleCxcbiAgICAgIHJvdXRlXG4gICAgfTtcblxuICAgIGlmIChtZXRhLnJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgIW1ldGEucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgocGFyZW50UGF0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwiQWJzb2x1dGUgcm91dGUgcGF0aCBcXFwiXCIgKyBtZXRhLnJlbGF0aXZlUGF0aCArIFwiXFxcIiBuZXN0ZWQgdW5kZXIgcGF0aCBcIiArIChcIlxcXCJcIiArIHBhcmVudFBhdGggKyBcIlxcXCIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIFwiKSArIFwibXVzdCBzdGFydCB3aXRoIHRoZSBjb21iaW5lZCBwYXRoIG9mIGFsbCBpdHMgcGFyZW50IHJvdXRlcy5cIikgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICAgbWV0YS5yZWxhdGl2ZVBhdGggPSBtZXRhLnJlbGF0aXZlUGF0aC5zbGljZShwYXJlbnRQYXRoLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgbGV0IHBhdGggPSBqb2luUGF0aHMoW3BhcmVudFBhdGgsIG1ldGEucmVsYXRpdmVQYXRoXSk7XG4gICAgbGV0IHJvdXRlc01ldGEgPSBwYXJlbnRzTWV0YS5jb25jYXQobWV0YSk7IC8vIEFkZCB0aGUgY2hpbGRyZW4gYmVmb3JlIGFkZGluZyB0aGlzIHJvdXRlIHRvIHRoZSBhcnJheSBzbyB3ZSB0cmF2ZXJzZSB0aGVcbiAgICAvLyByb3V0ZSB0cmVlIGRlcHRoLWZpcnN0IGFuZCBjaGlsZCByb3V0ZXMgYXBwZWFyIGJlZm9yZSB0aGVpciBwYXJlbnRzIGluXG4gICAgLy8gdGhlIFwiZmxhdHRlbmVkXCIgdmVyc2lvbi5cblxuICAgIGlmIChyb3V0ZS5jaGlsZHJlbiAmJiByb3V0ZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAhKHJvdXRlLmluZGV4ICE9PSB0cnVlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJJbmRleCByb3V0ZXMgbXVzdCBub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIFBsZWFzZSByZW1vdmUgXCIgKyAoXCJhbGwgY2hpbGQgcm91dGVzIGZyb20gcm91dGUgcGF0aCBcXFwiXCIgKyBwYXRoICsgXCJcXFwiLlwiKSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICAgZmxhdHRlblJvdXRlcyhyb3V0ZS5jaGlsZHJlbiwgYnJhbmNoZXMsIHJvdXRlc01ldGEsIHBhdGgpO1xuICAgIH0gLy8gUm91dGVzIHdpdGhvdXQgYSBwYXRoIHNob3VsZG4ndCBldmVyIG1hdGNoIGJ5IHRoZW1zZWx2ZXMgdW5sZXNzIHRoZXkgYXJlXG4gICAgLy8gaW5kZXggcm91dGVzLCBzbyBkb24ndCBhZGQgdGhlbSB0byB0aGUgbGlzdCBvZiBwb3NzaWJsZSBicmFuY2hlcy5cblxuXG4gICAgaWYgKHJvdXRlLnBhdGggPT0gbnVsbCAmJiAhcm91dGUuaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBicmFuY2hlcy5wdXNoKHtcbiAgICAgIHBhdGgsXG4gICAgICBzY29yZTogY29tcHV0ZVNjb3JlKHBhdGgsIHJvdXRlLmluZGV4KSxcbiAgICAgIHJvdXRlc01ldGFcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBicmFuY2hlcztcbn1cblxuZnVuY3Rpb24gcmFua1JvdXRlQnJhbmNoZXMoYnJhbmNoZXMpIHtcbiAgYnJhbmNoZXMuc29ydCgoYSwgYikgPT4gYS5zY29yZSAhPT0gYi5zY29yZSA/IGIuc2NvcmUgLSBhLnNjb3JlIC8vIEhpZ2hlciBzY29yZSBmaXJzdFxuICA6IGNvbXBhcmVJbmRleGVzKGEucm91dGVzTWV0YS5tYXAobWV0YSA9PiBtZXRhLmNoaWxkcmVuSW5kZXgpLCBiLnJvdXRlc01ldGEubWFwKG1ldGEgPT4gbWV0YS5jaGlsZHJlbkluZGV4KSkpO1xufVxuXG5jb25zdCBwYXJhbVJlID0gL146XFx3KyQvO1xuY29uc3QgZHluYW1pY1NlZ21lbnRWYWx1ZSA9IDM7XG5jb25zdCBpbmRleFJvdXRlVmFsdWUgPSAyO1xuY29uc3QgZW1wdHlTZWdtZW50VmFsdWUgPSAxO1xuY29uc3Qgc3RhdGljU2VnbWVudFZhbHVlID0gMTA7XG5jb25zdCBzcGxhdFBlbmFsdHkgPSAtMjtcblxuY29uc3QgaXNTcGxhdCA9IHMgPT4gcyA9PT0gXCIqXCI7XG5cbmZ1bmN0aW9uIGNvbXB1dGVTY29yZShwYXRoLCBpbmRleCkge1xuICBsZXQgc2VnbWVudHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgbGV0IGluaXRpYWxTY29yZSA9IHNlZ21lbnRzLmxlbmd0aDtcblxuICBpZiAoc2VnbWVudHMuc29tZShpc1NwbGF0KSkge1xuICAgIGluaXRpYWxTY29yZSArPSBzcGxhdFBlbmFsdHk7XG4gIH1cblxuICBpZiAoaW5kZXgpIHtcbiAgICBpbml0aWFsU2NvcmUgKz0gaW5kZXhSb3V0ZVZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHNlZ21lbnRzLmZpbHRlcihzID0+ICFpc1NwbGF0KHMpKS5yZWR1Y2UoKHNjb3JlLCBzZWdtZW50KSA9PiBzY29yZSArIChwYXJhbVJlLnRlc3Qoc2VnbWVudCkgPyBkeW5hbWljU2VnbWVudFZhbHVlIDogc2VnbWVudCA9PT0gXCJcIiA/IGVtcHR5U2VnbWVudFZhbHVlIDogc3RhdGljU2VnbWVudFZhbHVlKSwgaW5pdGlhbFNjb3JlKTtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUluZGV4ZXMoYSwgYikge1xuICBsZXQgc2libGluZ3MgPSBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5zbGljZSgwLCAtMSkuZXZlcnkoKG4sIGkpID0+IG4gPT09IGJbaV0pO1xuICByZXR1cm4gc2libGluZ3MgPyAvLyBJZiB0d28gcm91dGVzIGFyZSBzaWJsaW5ncywgd2Ugc2hvdWxkIHRyeSB0byBtYXRjaCB0aGUgZWFybGllciBzaWJsaW5nXG4gIC8vIGZpcnN0LiBUaGlzIGFsbG93cyBwZW9wbGUgdG8gaGF2ZSBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIHRoZSBtYXRjaGluZ1xuICAvLyBiZWhhdmlvciBieSBzaW1wbHkgcHV0dGluZyByb3V0ZXMgd2l0aCBpZGVudGljYWwgcGF0aHMgaW4gdGhlIG9yZGVyIHRoZXlcbiAgLy8gd2FudCB0aGVtIHRyaWVkLlxuICBhW2EubGVuZ3RoIC0gMV0gLSBiW2IubGVuZ3RoIC0gMV0gOiAvLyBPdGhlcndpc2UsIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gcmFuayBub24tc2libGluZ3MgYnkgaW5kZXgsXG4gIC8vIHNvIHRoZXkgc29ydCBlcXVhbGx5LlxuICAwO1xufVxuXG5mdW5jdGlvbiBtYXRjaFJvdXRlQnJhbmNoKGJyYW5jaCwgcGF0aG5hbWUpIHtcbiAgbGV0IHtcbiAgICByb3V0ZXNNZXRhXG4gIH0gPSBicmFuY2g7XG4gIGxldCBtYXRjaGVkUGFyYW1zID0ge307XG4gIGxldCBtYXRjaGVkUGF0aG5hbWUgPSBcIi9cIjtcbiAgbGV0IG1hdGNoZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdXRlc01ldGEubGVuZ3RoOyArK2kpIHtcbiAgICBsZXQgbWV0YSA9IHJvdXRlc01ldGFbaV07XG4gICAgbGV0IGVuZCA9IGkgPT09IHJvdXRlc01ldGEubGVuZ3RoIC0gMTtcbiAgICBsZXQgcmVtYWluaW5nUGF0aG5hbWUgPSBtYXRjaGVkUGF0aG5hbWUgPT09IFwiL1wiID8gcGF0aG5hbWUgOiBwYXRobmFtZS5zbGljZShtYXRjaGVkUGF0aG5hbWUubGVuZ3RoKSB8fCBcIi9cIjtcbiAgICBsZXQgbWF0Y2ggPSBtYXRjaFBhdGgoe1xuICAgICAgcGF0aDogbWV0YS5yZWxhdGl2ZVBhdGgsXG4gICAgICBjYXNlU2Vuc2l0aXZlOiBtZXRhLmNhc2VTZW5zaXRpdmUsXG4gICAgICBlbmRcbiAgICB9LCByZW1haW5pbmdQYXRobmFtZSk7XG4gICAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG4gICAgT2JqZWN0LmFzc2lnbihtYXRjaGVkUGFyYW1zLCBtYXRjaC5wYXJhbXMpO1xuICAgIGxldCByb3V0ZSA9IG1ldGEucm91dGU7XG4gICAgbWF0Y2hlcy5wdXNoKHtcbiAgICAgIHBhcmFtczogbWF0Y2hlZFBhcmFtcyxcbiAgICAgIHBhdGhuYW1lOiBqb2luUGF0aHMoW21hdGNoZWRQYXRobmFtZSwgbWF0Y2gucGF0aG5hbWVdKSxcbiAgICAgIHBhdGhuYW1lQmFzZTogbm9ybWFsaXplUGF0aG5hbWUoam9pblBhdGhzKFttYXRjaGVkUGF0aG5hbWUsIG1hdGNoLnBhdGhuYW1lQmFzZV0pKSxcbiAgICAgIHJvdXRlXG4gICAgfSk7XG5cbiAgICBpZiAobWF0Y2gucGF0aG5hbWVCYXNlICE9PSBcIi9cIikge1xuICAgICAgbWF0Y2hlZFBhdGhuYW1lID0gam9pblBhdGhzKFttYXRjaGVkUGF0aG5hbWUsIG1hdGNoLnBhdGhuYW1lQmFzZV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuLyoqXG4gKiBBIFBhdGhQYXR0ZXJuIGlzIHVzZWQgdG8gbWF0Y2ggb24gc29tZSBwb3J0aW9uIG9mIGEgVVJMIHBhdGhuYW1lLlxuICovXG5cblxuLyoqXG4gKiBQZXJmb3JtcyBwYXR0ZXJuIG1hdGNoaW5nIG9uIGEgVVJMIHBhdGhuYW1lIGFuZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0XG4gKiB0aGUgbWF0Y2guXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSNtYXRjaHBhdGhcbiAqL1xuZnVuY3Rpb24gbWF0Y2hQYXRoKHBhdHRlcm4sIHBhdGhuYW1lKSB7XG4gIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gXCJzdHJpbmdcIikge1xuICAgIHBhdHRlcm4gPSB7XG4gICAgICBwYXRoOiBwYXR0ZXJuLFxuICAgICAgY2FzZVNlbnNpdGl2ZTogZmFsc2UsXG4gICAgICBlbmQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgbGV0IFttYXRjaGVyLCBwYXJhbU5hbWVzXSA9IGNvbXBpbGVQYXRoKHBhdHRlcm4ucGF0aCwgcGF0dGVybi5jYXNlU2Vuc2l0aXZlLCBwYXR0ZXJuLmVuZCk7XG4gIGxldCBtYXRjaCA9IHBhdGhuYW1lLm1hdGNoKG1hdGNoZXIpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcbiAgbGV0IG1hdGNoZWRQYXRobmFtZSA9IG1hdGNoWzBdO1xuICBsZXQgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnJlcGxhY2UoLyguKVxcLyskLywgXCIkMVwiKTtcbiAgbGV0IGNhcHR1cmVHcm91cHMgPSBtYXRjaC5zbGljZSgxKTtcbiAgbGV0IHBhcmFtcyA9IHBhcmFtTmFtZXMucmVkdWNlKChtZW1vLCBwYXJhbU5hbWUsIGluZGV4KSA9PiB7XG4gICAgLy8gV2UgbmVlZCB0byBjb21wdXRlIHRoZSBwYXRobmFtZUJhc2UgaGVyZSB1c2luZyB0aGUgcmF3IHNwbGF0IHZhbHVlXG4gICAgLy8gaW5zdGVhZCBvZiB1c2luZyBwYXJhbXNbXCIqXCJdIGxhdGVyIGJlY2F1c2UgaXQgd2lsbCBiZSBkZWNvZGVkIHRoZW5cbiAgICBpZiAocGFyYW1OYW1lID09PSBcIipcIikge1xuICAgICAgbGV0IHNwbGF0VmFsdWUgPSBjYXB0dXJlR3JvdXBzW2luZGV4XSB8fCBcIlwiO1xuICAgICAgcGF0aG5hbWVCYXNlID0gbWF0Y2hlZFBhdGhuYW1lLnNsaWNlKDAsIG1hdGNoZWRQYXRobmFtZS5sZW5ndGggLSBzcGxhdFZhbHVlLmxlbmd0aCkucmVwbGFjZSgvKC4pXFwvKyQvLCBcIiQxXCIpO1xuICAgIH1cblxuICAgIG1lbW9bcGFyYW1OYW1lXSA9IHNhZmVseURlY29kZVVSSUNvbXBvbmVudChjYXB0dXJlR3JvdXBzW2luZGV4XSB8fCBcIlwiLCBwYXJhbU5hbWUpO1xuICAgIHJldHVybiBtZW1vO1xuICB9LCB7fSk7XG4gIHJldHVybiB7XG4gICAgcGFyYW1zLFxuICAgIHBhdGhuYW1lOiBtYXRjaGVkUGF0aG5hbWUsXG4gICAgcGF0aG5hbWVCYXNlLFxuICAgIHBhdHRlcm5cbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVBhdGgocGF0aCwgY2FzZVNlbnNpdGl2ZSwgZW5kKSB7XG4gIGlmIChjYXNlU2Vuc2l0aXZlID09PSB2b2lkIDApIHtcbiAgICBjYXNlU2Vuc2l0aXZlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoZW5kID09PSB2b2lkIDApIHtcbiAgICBlbmQgPSB0cnVlO1xuICB9XG5cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhwYXRoID09PSBcIipcIiB8fCAhcGF0aC5lbmRzV2l0aChcIipcIikgfHwgcGF0aC5lbmRzV2l0aChcIi8qXCIpLCBcIlJvdXRlIHBhdGggXFxcIlwiICsgcGF0aCArIFwiXFxcIiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBcIiArIChcIlxcXCJcIiArIHBhdGgucmVwbGFjZSgvXFwqJC8sIFwiLypcIikgKyBcIlxcXCIgYmVjYXVzZSB0aGUgYCpgIGNoYXJhY3RlciBtdXN0IFwiKSArIFwiYWx3YXlzIGZvbGxvdyBhIGAvYCBpbiB0aGUgcGF0dGVybi4gVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIFwiICsgKFwicGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcXFwiXCIgKyBwYXRoLnJlcGxhY2UoL1xcKiQvLCBcIi8qXCIpICsgXCJcXFwiLlwiKSkgOiB2b2lkIDA7XG4gIGxldCBwYXJhbU5hbWVzID0gW107XG4gIGxldCByZWdleHBTb3VyY2UgPSBcIl5cIiArIHBhdGgucmVwbGFjZSgvXFwvKlxcKj8kLywgXCJcIikgLy8gSWdub3JlIHRyYWlsaW5nIC8gYW5kIC8qLCB3ZSdsbCBoYW5kbGUgaXQgYmVsb3dcbiAgLnJlcGxhY2UoL15cXC8qLywgXCIvXCIpIC8vIE1ha2Ugc3VyZSBpdCBoYXMgYSBsZWFkaW5nIC9cbiAgLnJlcGxhY2UoL1tcXFxcLiorXiQ/e318KClbXFxdXS9nLCBcIlxcXFwkJlwiKSAvLyBFc2NhcGUgc3BlY2lhbCByZWdleCBjaGFyc1xuICAucmVwbGFjZSgvOihcXHcrKS9nLCAoXywgcGFyYW1OYW1lKSA9PiB7XG4gICAgcGFyYW1OYW1lcy5wdXNoKHBhcmFtTmFtZSk7XG4gICAgcmV0dXJuIFwiKFteXFxcXC9dKylcIjtcbiAgfSk7XG5cbiAgaWYgKHBhdGguZW5kc1dpdGgoXCIqXCIpKSB7XG4gICAgcGFyYW1OYW1lcy5wdXNoKFwiKlwiKTtcbiAgICByZWdleHBTb3VyY2UgKz0gcGF0aCA9PT0gXCIqXCIgfHwgcGF0aCA9PT0gXCIvKlwiID8gXCIoLiopJFwiIC8vIEFscmVhZHkgbWF0Y2hlZCB0aGUgaW5pdGlhbCAvLCBqdXN0IG1hdGNoIHRoZSByZXN0XG4gICAgOiBcIig/OlxcXFwvKC4rKXxcXFxcLyopJFwiOyAvLyBEb24ndCBpbmNsdWRlIHRoZSAvIGluIHBhcmFtc1tcIipcIl1cbiAgfSBlbHNlIHtcbiAgICByZWdleHBTb3VyY2UgKz0gZW5kID8gXCJcXFxcLyokXCIgLy8gV2hlbiBtYXRjaGluZyB0byB0aGUgZW5kLCBpZ25vcmUgdHJhaWxpbmcgc2xhc2hlc1xuICAgIDogLy8gT3RoZXJ3aXNlLCBtYXRjaCBhIHdvcmQgYm91bmRhcnkgb3IgYSBwcm9jZWVkaW5nIC8uIFRoZSB3b3JkIGJvdW5kYXJ5IHJlc3RyaWN0c1xuICAgIC8vIHBhcmVudCByb3V0ZXMgdG8gbWF0Y2hpbmcgb25seSB0aGVpciBvd24gd29yZHMgYW5kIG5vdGhpbmcgbW9yZSwgZS5nLiBwYXJlbnRcbiAgICAvLyByb3V0ZSBcIi9ob21lXCIgc2hvdWxkIG5vdCBtYXRjaCBcIi9ob21lMlwiLlxuICAgIC8vIEFkZGl0aW9uYWxseSwgYWxsb3cgcGF0aHMgc3RhcnRpbmcgd2l0aCBgLmAsIGAtYCwgYH5gLCBhbmQgdXJsLWVuY29kZWQgZW50aXRpZXMsXG4gICAgLy8gYnV0IGRvIG5vdCBjb25zdW1lIHRoZSBjaGFyYWN0ZXIgaW4gdGhlIG1hdGNoZWQgcGF0aCBzbyB0aGV5IGNhbiBtYXRjaCBhZ2FpbnN0XG4gICAgLy8gbmVzdGVkIHBhdGhzLlxuICAgIFwiKD86KD89Wy5+LV18JVswLTlBLUZdezJ9KXxcXFxcYnxcXFxcL3wkKVwiO1xuICB9XG5cbiAgbGV0IG1hdGNoZXIgPSBuZXcgUmVnRXhwKHJlZ2V4cFNvdXJjZSwgY2FzZVNlbnNpdGl2ZSA/IHVuZGVmaW5lZCA6IFwiaVwiKTtcbiAgcmV0dXJuIFttYXRjaGVyLCBwYXJhbU5hbWVzXTtcbn1cblxuZnVuY3Rpb24gc2FmZWx5RGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlLCBwYXJhbU5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGZhbHNlLCBcIlRoZSB2YWx1ZSBmb3IgdGhlIFVSTCBwYXJhbSBcXFwiXCIgKyBwYXJhbU5hbWUgKyBcIlxcXCIgd2lsbCBub3QgYmUgZGVjb2RlZCBiZWNhdXNlXCIgKyAoXCIgdGhlIHN0cmluZyBcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIiBpcyBhIG1hbGZvcm1lZCBVUkwgc2VnbWVudC4gVGhpcyBpcyBwcm9iYWJseVwiKSArIChcIiBkdWUgdG8gYSBiYWQgcGVyY2VudCBlbmNvZGluZyAoXCIgKyBlcnJvciArIFwiKS5cIikpIDogdm9pZCAwO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIGEgcmVzb2x2ZWQgcGF0aCBvYmplY3QgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIHBhdGhuYW1lLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZG9jcy9lbi92Ni9hcGkjcmVzb2x2ZXBhdGhcbiAqL1xuXG5cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHRvLCBmcm9tUGF0aG5hbWUpIHtcbiAgaWYgKGZyb21QYXRobmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgZnJvbVBhdGhuYW1lID0gXCIvXCI7XG4gIH1cblxuICBsZXQge1xuICAgIHBhdGhuYW1lOiB0b1BhdGhuYW1lLFxuICAgIHNlYXJjaCA9IFwiXCIsXG4gICAgaGFzaCA9IFwiXCJcbiAgfSA9IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0bykgOiB0bztcbiAgbGV0IHBhdGhuYW1lID0gdG9QYXRobmFtZSA/IHRvUGF0aG5hbWUuc3RhcnRzV2l0aChcIi9cIikgPyB0b1BhdGhuYW1lIDogcmVzb2x2ZVBhdGhuYW1lKHRvUGF0aG5hbWUsIGZyb21QYXRobmFtZSkgOiBmcm9tUGF0aG5hbWU7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2goc2VhcmNoKSxcbiAgICBoYXNoOiBub3JtYWxpemVIYXNoKGhhc2gpXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQYXRobmFtZShyZWxhdGl2ZVBhdGgsIGZyb21QYXRobmFtZSkge1xuICBsZXQgc2VnbWVudHMgPSBmcm9tUGF0aG5hbWUucmVwbGFjZSgvXFwvKyQvLCBcIlwiKS5zcGxpdChcIi9cIik7XG4gIGxldCByZWxhdGl2ZVNlZ21lbnRzID0gcmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKTtcbiAgcmVsYXRpdmVTZWdtZW50cy5mb3JFYWNoKHNlZ21lbnQgPT4ge1xuICAgIGlmIChzZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIC8vIEtlZXAgdGhlIHJvb3QgXCJcIiBzZWdtZW50IHNvIHRoZSBwYXRobmFtZSBzdGFydHMgYXQgL1xuICAgICAgaWYgKHNlZ21lbnRzLmxlbmd0aCA+IDEpIHNlZ21lbnRzLnBvcCgpO1xuICAgIH0gZWxzZSBpZiAoc2VnbWVudCAhPT0gXCIuXCIpIHtcbiAgICAgIHNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHNlZ21lbnRzLmxlbmd0aCA+IDEgPyBzZWdtZW50cy5qb2luKFwiL1wiKSA6IFwiL1wiO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVG8odG9BcmcsIHJvdXRlUGF0aG5hbWVzLCBsb2NhdGlvblBhdGhuYW1lKSB7XG4gIGxldCB0byA9IHR5cGVvZiB0b0FyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0b0FyZykgOiB0b0FyZztcbiAgbGV0IHRvUGF0aG5hbWUgPSB0b0FyZyA9PT0gXCJcIiB8fCB0by5wYXRobmFtZSA9PT0gXCJcIiA/IFwiL1wiIDogdG8ucGF0aG5hbWU7IC8vIElmIGEgcGF0aG5hbWUgaXMgZXhwbGljaXRseSBwcm92aWRlZCBpbiBgdG9gLCBpdCBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlXG4gIC8vIHJvdXRlIGNvbnRleHQuIFRoaXMgaXMgZXhwbGFpbmVkIGluIGBOb3RlIG9uIGA8TGluayB0bz5gIHZhbHVlc2AgaW4gb3VyXG4gIC8vIG1pZ3JhdGlvbiBndWlkZSBmcm9tIHY1IGFzIGEgbWVhbnMgb2YgZGlzYW1iaWd1YXRpb24gYmV0d2VlbiBgdG9gIHZhbHVlc1xuICAvLyB0aGF0IGJlZ2luIHdpdGggYC9gIGFuZCB0aG9zZSB0aGF0IGRvIG5vdC4gSG93ZXZlciwgdGhpcyBpcyBwcm9ibGVtYXRpYyBmb3JcbiAgLy8gYHRvYCB2YWx1ZXMgdGhhdCBkbyBub3QgcHJvdmlkZSBhIHBhdGhuYW1lLiBgdG9gIGNhbiBzaW1wbHkgYmUgYSBzZWFyY2ggb3JcbiAgLy8gaGFzaCBzdHJpbmcsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGFzc3VtZSB0aGF0IHRoZSBuYXZpZ2F0aW9uIGlzIHJlbGF0aXZlXG4gIC8vIHRvIHRoZSBjdXJyZW50IGxvY2F0aW9uJ3MgcGF0aG5hbWUgYW5kICpub3QqIHRoZSByb3V0ZSBwYXRobmFtZS5cblxuICBsZXQgZnJvbTtcblxuICBpZiAodG9QYXRobmFtZSA9PSBudWxsKSB7XG4gICAgZnJvbSA9IGxvY2F0aW9uUGF0aG5hbWU7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHJvdXRlUGF0aG5hbWVJbmRleCA9IHJvdXRlUGF0aG5hbWVzLmxlbmd0aCAtIDE7XG5cbiAgICBpZiAodG9QYXRobmFtZS5zdGFydHNXaXRoKFwiLi5cIikpIHtcbiAgICAgIGxldCB0b1NlZ21lbnRzID0gdG9QYXRobmFtZS5zcGxpdChcIi9cIik7IC8vIEVhY2ggbGVhZGluZyAuLiBzZWdtZW50IG1lYW5zIFwiZ28gdXAgb25lIHJvdXRlXCIgaW5zdGVhZCBvZiBcImdvIHVwIG9uZVxuICAgICAgLy8gVVJMIHNlZ21lbnRcIi4gIFRoaXMgaXMgYSBrZXkgZGlmZmVyZW5jZSBmcm9tIGhvdyA8YSBocmVmPiB3b3JrcyBhbmQgYVxuICAgICAgLy8gbWFqb3IgcmVhc29uIHdlIGNhbGwgdGhpcyBhIFwidG9cIiB2YWx1ZSBpbnN0ZWFkIG9mIGEgXCJocmVmXCIuXG5cbiAgICAgIHdoaWxlICh0b1NlZ21lbnRzWzBdID09PSBcIi4uXCIpIHtcbiAgICAgICAgdG9TZWdtZW50cy5zaGlmdCgpO1xuICAgICAgICByb3V0ZVBhdGhuYW1lSW5kZXggLT0gMTtcbiAgICAgIH1cblxuICAgICAgdG8ucGF0aG5hbWUgPSB0b1NlZ21lbnRzLmpvaW4oXCIvXCIpO1xuICAgIH0gLy8gSWYgdGhlcmUgYXJlIG1vcmUgXCIuLlwiIHNlZ21lbnRzIHRoYW4gcGFyZW50IHJvdXRlcywgcmVzb2x2ZSByZWxhdGl2ZSB0b1xuICAgIC8vIHRoZSByb290IC8gVVJMLlxuXG5cbiAgICBmcm9tID0gcm91dGVQYXRobmFtZUluZGV4ID49IDAgPyByb3V0ZVBhdGhuYW1lc1tyb3V0ZVBhdGhuYW1lSW5kZXhdIDogXCIvXCI7XG4gIH1cblxuICBsZXQgcGF0aCA9IHJlc29sdmVQYXRoKHRvLCBmcm9tKTsgLy8gRW5zdXJlIHRoZSBwYXRobmFtZSBoYXMgYSB0cmFpbGluZyBzbGFzaCBpZiB0aGUgb3JpZ2luYWwgdG8gdmFsdWUgaGFkIG9uZS5cblxuICBpZiAodG9QYXRobmFtZSAmJiB0b1BhdGhuYW1lICE9PSBcIi9cIiAmJiB0b1BhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSAmJiAhcGF0aC5wYXRobmFtZS5lbmRzV2l0aChcIi9cIikpIHtcbiAgICBwYXRoLnBhdGhuYW1lICs9IFwiL1wiO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBnZXRUb1BhdGhuYW1lKHRvKSB7XG4gIC8vIEVtcHR5IHN0cmluZ3Mgc2hvdWxkIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgLyBwYXRoc1xuICByZXR1cm4gdG8gPT09IFwiXCIgfHwgdG8ucGF0aG5hbWUgPT09IFwiXCIgPyBcIi9cIiA6IHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aCh0bykucGF0aG5hbWUgOiB0by5wYXRobmFtZTtcbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aG5hbWUsIGJhc2VuYW1lKSB7XG4gIGlmIChiYXNlbmFtZSA9PT0gXCIvXCIpIHJldHVybiBwYXRobmFtZTtcblxuICBpZiAoIXBhdGhuYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChiYXNlbmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IG5leHRDaGFyID0gcGF0aG5hbWUuY2hhckF0KGJhc2VuYW1lLmxlbmd0aCk7XG5cbiAgaWYgKG5leHRDaGFyICYmIG5leHRDaGFyICE9PSBcIi9cIikge1xuICAgIC8vIHBhdGhuYW1lIGRvZXMgbm90IHN0YXJ0IHdpdGggYmFzZW5hbWUvXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gcGF0aG5hbWUuc2xpY2UoYmFzZW5hbWUubGVuZ3RoKSB8fCBcIi9cIjtcbn1cbmNvbnN0IGpvaW5QYXRocyA9IHBhdGhzID0+IHBhdGhzLmpvaW4oXCIvXCIpLnJlcGxhY2UoL1xcL1xcLysvZywgXCIvXCIpO1xuY29uc3Qgbm9ybWFsaXplUGF0aG5hbWUgPSBwYXRobmFtZSA9PiBwYXRobmFtZS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpLnJlcGxhY2UoL15cXC8qLywgXCIvXCIpO1xuXG5jb25zdCBub3JtYWxpemVTZWFyY2ggPSBzZWFyY2ggPT4gIXNlYXJjaCB8fCBzZWFyY2ggPT09IFwiP1wiID8gXCJcIiA6IHNlYXJjaC5zdGFydHNXaXRoKFwiP1wiKSA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuXG5jb25zdCBub3JtYWxpemVIYXNoID0gaGFzaCA9PiAhaGFzaCB8fCBoYXNoID09PSBcIiNcIiA/IFwiXCIgOiBoYXNoLnN0YXJ0c1dpdGgoXCIjXCIpID8gaGFzaCA6IFwiI1wiICsgaGFzaDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdWxsIGhyZWYgZm9yIHRoZSBnaXZlbiBcInRvXCIgdmFsdWUuIFRoaXMgaXMgdXNlZnVsIGZvciBidWlsZGluZ1xuICogY3VzdG9tIGxpbmtzIHRoYXQgYXJlIGFsc28gYWNjZXNzaWJsZSBhbmQgcHJlc2VydmUgcmlnaHQtY2xpY2sgYmVoYXZpb3IuXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VocmVmXG4gKi9cblxuZnVuY3Rpb24gdXNlSHJlZih0bykge1xuICAhdXNlSW5Sb3V0ZXJDb250ZXh0KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gIFwidXNlSHJlZigpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuXCIpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgbGV0IHtcbiAgICBiYXNlbmFtZSxcbiAgICBuYXZpZ2F0b3JcbiAgfSA9IHVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpO1xuICBsZXQge1xuICAgIGhhc2gsXG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoXG4gIH0gPSB1c2VSZXNvbHZlZFBhdGgodG8pO1xuICBsZXQgam9pbmVkUGF0aG5hbWUgPSBwYXRobmFtZTtcblxuICBpZiAoYmFzZW5hbWUgIT09IFwiL1wiKSB7XG4gICAgbGV0IHRvUGF0aG5hbWUgPSBnZXRUb1BhdGhuYW1lKHRvKTtcbiAgICBsZXQgZW5kc1dpdGhTbGFzaCA9IHRvUGF0aG5hbWUgIT0gbnVsbCAmJiB0b1BhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKTtcbiAgICBqb2luZWRQYXRobmFtZSA9IHBhdGhuYW1lID09PSBcIi9cIiA/IGJhc2VuYW1lICsgKGVuZHNXaXRoU2xhc2ggPyBcIi9cIiA6IFwiXCIpIDogam9pblBhdGhzKFtiYXNlbmFtZSwgcGF0aG5hbWVdKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IuY3JlYXRlSHJlZih7XG4gICAgcGF0aG5hbWU6IGpvaW5lZFBhdGhuYW1lLFxuICAgIHNlYXJjaCxcbiAgICBoYXNoXG4gIH0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBjb21wb25lbnQgaXMgYSBkZXNjZW5kYW50IG9mIGEgPFJvdXRlcj4uXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VpbnJvdXRlcmNvbnRleHRcbiAqL1xuXG5mdW5jdGlvbiB1c2VJblJvdXRlckNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KExvY2F0aW9uQ29udGV4dCkgIT0gbnVsbDtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBsb2NhdGlvbiBvYmplY3QsIHdoaWNoIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgVVJMIGluIHdlYlxuICogYnJvd3NlcnMuXG4gKlxuICogTm90ZTogSWYgeW91J3JlIHVzaW5nIHRoaXMgaXQgbWF5IG1lYW4geW91J3JlIGRvaW5nIHNvbWUgb2YgeW91ciBvd25cbiAqIFwicm91dGluZ1wiIGluIHlvdXIgYXBwLCBhbmQgd2UnZCBsaWtlIHRvIGtub3cgd2hhdCB5b3VyIHVzZSBjYXNlIGlzLiBXZSBtYXlcbiAqIGJlIGFibGUgdG8gcHJvdmlkZSBzb21ldGhpbmcgaGlnaGVyLWxldmVsIHRvIGJldHRlciBzdWl0IHlvdXIgbmVlZHMuXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2Vsb2NhdGlvblxuICovXG5cbmZ1bmN0aW9uIHVzZUxvY2F0aW9uKCkge1xuICAhdXNlSW5Sb3V0ZXJDb250ZXh0KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gIFwidXNlTG9jYXRpb24oKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LlwiKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiB1c2VDb250ZXh0KExvY2F0aW9uQ29udGV4dCkubG9jYXRpb247XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbiBhY3Rpb24gd2hpY2ggZGVzY3JpYmVzIGhvdyB0aGUgcm91dGVyIGNhbWUgdG9cbiAqIHRoZSBjdXJyZW50IGxvY2F0aW9uLCBlaXRoZXIgYnkgYSBwb3AsIHB1c2gsIG9yIHJlcGxhY2Ugb24gdGhlIGhpc3Rvcnkgc3RhY2suXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VuYXZpZ2F0aW9udHlwZVxuICovXG5cbmZ1bmN0aW9uIHVzZU5hdmlnYXRpb25UeXBlKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChMb2NhdGlvbkNvbnRleHQpLm5hdmlnYXRpb25UeXBlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBmb3IgdGhlIGdpdmVuIFwidG9cIiB2YWx1ZSBtYXRjaGVzIHRoZSBjdXJyZW50IFVSTC5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBrbm93IFwiYWN0aXZlXCIgc3RhdGUsIGUuZy5cbiAqIDxOYXZMaW5rPi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI3VzZW1hdGNoXG4gKi9cblxuZnVuY3Rpb24gdXNlTWF0Y2gocGF0dGVybikge1xuICAhdXNlSW5Sb3V0ZXJDb250ZXh0KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mIHRoZVxuICAvLyByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gIFwidXNlTWF0Y2goKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LlwiKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGxldCB7XG4gICAgcGF0aG5hbWVcbiAgfSA9IHVzZUxvY2F0aW9uKCk7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IG1hdGNoUGF0aChwYXR0ZXJuLCBwYXRobmFtZSksIFtwYXRobmFtZSwgcGF0dGVybl0pO1xufVxuLyoqXG4gKiBUaGUgaW50ZXJmYWNlIGZvciB0aGUgbmF2aWdhdGUoKSBmdW5jdGlvbiByZXR1cm5lZCBmcm9tIHVzZU5hdmlnYXRlKCkuXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGltcGVyYXRpdmUgbWV0aG9kIGZvciBjaGFuZ2luZyB0aGUgbG9jYXRpb24uIFVzZWQgYnkgPExpbms+cywgYnV0XG4gKiBtYXkgYWxzbyBiZSB1c2VkIGJ5IG90aGVyIGVsZW1lbnRzIHRvIGNoYW5nZSB0aGUgbG9jYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VuYXZpZ2F0ZVxuICovXG5mdW5jdGlvbiB1c2VOYXZpZ2F0ZSgpIHtcbiAgIXVzZUluUm91dGVyQ29udGV4dCgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICBcInVzZU5hdmlnYXRlKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC5cIikgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBsZXQge1xuICAgIGJhc2VuYW1lLFxuICAgIG5hdmlnYXRvclxuICB9ID0gdXNlQ29udGV4dChOYXZpZ2F0aW9uQ29udGV4dCk7XG4gIGxldCB7XG4gICAgbWF0Y2hlc1xuICB9ID0gdXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQge1xuICAgIHBhdGhuYW1lOiBsb2NhdGlvblBhdGhuYW1lXG4gIH0gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgcm91dGVQYXRobmFtZXNKc29uID0gSlNPTi5zdHJpbmdpZnkobWF0Y2hlcy5tYXAobWF0Y2ggPT4gbWF0Y2gucGF0aG5hbWVCYXNlKSk7XG4gIGxldCBhY3RpdmVSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGFjdGl2ZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfSk7XG4gIGxldCBuYXZpZ2F0ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh0bywgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGFjdGl2ZVJlZi5jdXJyZW50LCBcIllvdSBzaG91bGQgY2FsbCBuYXZpZ2F0ZSgpIGluIGEgUmVhY3QudXNlRWZmZWN0KCksIG5vdCB3aGVuIFwiICsgXCJ5b3VyIGNvbXBvbmVudCBpcyBmaXJzdCByZW5kZXJlZC5cIikgOiB2b2lkIDA7XG4gICAgaWYgKCFhY3RpdmVSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiB0byA9PT0gXCJudW1iZXJcIikge1xuICAgICAgbmF2aWdhdG9yLmdvKHRvKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcGF0aCA9IHJlc29sdmVUbyh0bywgSlNPTi5wYXJzZShyb3V0ZVBhdGhuYW1lc0pzb24pLCBsb2NhdGlvblBhdGhuYW1lKTtcblxuICAgIGlmIChiYXNlbmFtZSAhPT0gXCIvXCIpIHtcbiAgICAgIHBhdGgucGF0aG5hbWUgPSBqb2luUGF0aHMoW2Jhc2VuYW1lLCBwYXRoLnBhdGhuYW1lXSk7XG4gICAgfVxuXG4gICAgKCEhb3B0aW9ucy5yZXBsYWNlID8gbmF2aWdhdG9yLnJlcGxhY2UgOiBuYXZpZ2F0b3IucHVzaCkocGF0aCwgb3B0aW9ucy5zdGF0ZSk7XG4gIH0sIFtiYXNlbmFtZSwgbmF2aWdhdG9yLCByb3V0ZVBhdGhuYW1lc0pzb24sIGxvY2F0aW9uUGF0aG5hbWVdKTtcbiAgcmV0dXJuIG5hdmlnYXRlO1xufVxuY29uc3QgT3V0bGV0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9jcmVhdGVDb250ZXh0KG51bGwpO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb250ZXh0IChpZiBwcm92aWRlZCkgZm9yIHRoZSBjaGlsZCByb3V0ZSBhdCB0aGlzIGxldmVsIG9mIHRoZSByb3V0ZVxuICogaGllcmFyY2h5LlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VvdXRsZXRjb250ZXh0XG4gKi9cblxuZnVuY3Rpb24gdXNlT3V0bGV0Q29udGV4dCgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoT3V0bGV0Q29udGV4dCk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGVsZW1lbnQgZm9yIHRoZSBjaGlsZCByb3V0ZSBhdCB0aGlzIGxldmVsIG9mIHRoZSByb3V0ZVxuICogaGllcmFyY2h5LiBVc2VkIGludGVybmFsbHkgYnkgPE91dGxldD4gdG8gcmVuZGVyIGNoaWxkIHJvdXRlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI3VzZW91dGxldFxuICovXG5cbmZ1bmN0aW9uIHVzZU91dGxldChjb250ZXh0KSB7XG4gIGxldCBvdXRsZXQgPSB1c2VDb250ZXh0KFJvdXRlQ29udGV4dCkub3V0bGV0O1xuXG4gIGlmIChvdXRsZXQpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoT3V0bGV0Q29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGNvbnRleHRcbiAgICB9LCBvdXRsZXQpO1xuICB9XG5cbiAgcmV0dXJuIG91dGxldDtcbn1cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3Qgb2Yga2V5L3ZhbHVlIHBhaXJzIG9mIHRoZSBkeW5hbWljIHBhcmFtcyBmcm9tIHRoZSBjdXJyZW50XG4gKiBVUkwgdGhhdCB3ZXJlIG1hdGNoZWQgYnkgdGhlIHJvdXRlIHBhdGguXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSN1c2VwYXJhbXNcbiAqL1xuXG5mdW5jdGlvbiB1c2VQYXJhbXMoKSB7XG4gIGxldCB7XG4gICAgbWF0Y2hlc1xuICB9ID0gdXNlQ29udGV4dChSb3V0ZUNvbnRleHQpO1xuICBsZXQgcm91dGVNYXRjaCA9IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhcmFtcyA6IHt9O1xufVxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGdpdmVuIGB0b2AgdmFsdWUgYWdhaW5zdCB0aGUgY3VycmVudCBsb2NhdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI3VzZXJlc29sdmVkcGF0aFxuICovXG5cbmZ1bmN0aW9uIHVzZVJlc29sdmVkUGF0aCh0bykge1xuICBsZXQge1xuICAgIG1hdGNoZXNcbiAgfSA9IHVzZUNvbnRleHQoUm91dGVDb250ZXh0KTtcbiAgbGV0IHtcbiAgICBwYXRobmFtZTogbG9jYXRpb25QYXRobmFtZVxuICB9ID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IHJvdXRlUGF0aG5hbWVzSnNvbiA9IEpTT04uc3RyaW5naWZ5KG1hdGNoZXMubWFwKG1hdGNoID0+IG1hdGNoLnBhdGhuYW1lQmFzZSkpO1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiByZXNvbHZlVG8odG8sIEpTT04ucGFyc2Uocm91dGVQYXRobmFtZXNKc29uKSwgbG9jYXRpb25QYXRobmFtZSksIFt0bywgcm91dGVQYXRobmFtZXNKc29uLCBsb2NhdGlvblBhdGhuYW1lXSk7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGVsZW1lbnQgb2YgdGhlIHJvdXRlIHRoYXQgbWF0Y2hlZCB0aGUgY3VycmVudCBsb2NhdGlvbiwgcHJlcGFyZWRcbiAqIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dCB0byByZW5kZXIgdGhlIHJlbWFpbmRlciBvZiB0aGUgcm91dGUgdHJlZS4gUm91dGVcbiAqIGVsZW1lbnRzIGluIHRoZSB0cmVlIG11c3QgcmVuZGVyIGFuIDxPdXRsZXQ+IHRvIHJlbmRlciB0aGVpciBjaGlsZCByb3V0ZSdzXG4gKiBlbGVtZW50LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZG9jcy9lbi92Ni9hcGkjdXNlcm91dGVzXG4gKi9cblxuZnVuY3Rpb24gdXNlUm91dGVzKHJvdXRlcywgbG9jYXRpb25BcmcpIHtcbiAgIXVzZUluUm91dGVyQ29udGV4dCgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAvLyBUT0RPOiBUaGlzIGVycm9yIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhleSBzb21laG93IGhhdmUgMiB2ZXJzaW9ucyBvZiB0aGVcbiAgLy8gcm91dGVyIGxvYWRlZC4gV2UgY2FuIGhlbHAgdGhlbSB1bmRlcnN0YW5kIGhvdyB0byBhdm9pZCB0aGF0LlxuICBcInVzZVJvdXRlcygpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuXCIpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgbGV0IHtcbiAgICBtYXRjaGVzOiBwYXJlbnRNYXRjaGVzXG4gIH0gPSB1c2VDb250ZXh0KFJvdXRlQ29udGV4dCk7XG4gIGxldCByb3V0ZU1hdGNoID0gcGFyZW50TWF0Y2hlc1twYXJlbnRNYXRjaGVzLmxlbmd0aCAtIDFdO1xuICBsZXQgcGFyZW50UGFyYW1zID0gcm91dGVNYXRjaCA/IHJvdXRlTWF0Y2gucGFyYW1zIDoge307XG4gIGxldCBwYXJlbnRQYXRobmFtZSA9IHJvdXRlTWF0Y2ggPyByb3V0ZU1hdGNoLnBhdGhuYW1lIDogXCIvXCI7XG4gIGxldCBwYXJlbnRQYXRobmFtZUJhc2UgPSByb3V0ZU1hdGNoID8gcm91dGVNYXRjaC5wYXRobmFtZUJhc2UgOiBcIi9cIjtcbiAgbGV0IHBhcmVudFJvdXRlID0gcm91dGVNYXRjaCAmJiByb3V0ZU1hdGNoLnJvdXRlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAvLyBZb3Ugd29uJ3QgZ2V0IGEgd2FybmluZyBhYm91dCAyIGRpZmZlcmVudCA8Um91dGVzPiB1bmRlciBhIDxSb3V0ZT5cbiAgICAvLyB3aXRob3V0IGEgdHJhaWxpbmcgKiwgYnV0IHRoaXMgaXMgYSBiZXN0LWVmZm9ydCB3YXJuaW5nIGFueXdheSBzaW5jZSB3ZVxuICAgIC8vIGNhbm5vdCBldmVuIGdpdmUgdGhlIHdhcm5pbmcgdW5sZXNzIHRoZXkgbGFuZCBhdCB0aGUgcGFyZW50IHJvdXRlLlxuICAgIC8vXG4gICAgLy8gRXhhbXBsZTpcbiAgICAvL1xuICAgIC8vIDxSb3V0ZXM+XG4gICAgLy8gICB7LyogVGhpcyByb3V0ZSBwYXRoIE1VU1QgZW5kIHdpdGggLyogYmVjYXVzZSBvdGhlcndpc2VcbiAgICAvLyAgICAgICBpdCB3aWxsIG5ldmVyIG1hdGNoIC9ibG9nL3Bvc3QvMTIzICovfVxuICAgIC8vICAgPFJvdXRlIHBhdGg9XCJibG9nXCIgZWxlbWVudD17PEJsb2cgLz59IC8+XG4gICAgLy8gICA8Um91dGUgcGF0aD1cImJsb2cvZmVlZFwiIGVsZW1lbnQ9ezxCbG9nRmVlZCAvPn0gLz5cbiAgICAvLyA8L1JvdXRlcz5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uIEJsb2coKSB7XG4gICAgLy8gICByZXR1cm4gKFxuICAgIC8vICAgICA8Um91dGVzPlxuICAgIC8vICAgICAgIDxSb3V0ZSBwYXRoPVwicG9zdC86aWRcIiBlbGVtZW50PXs8UG9zdCAvPn0gLz5cbiAgICAvLyAgICAgPC9Sb3V0ZXM+XG4gICAgLy8gICApO1xuICAgIC8vIH1cbiAgICBsZXQgcGFyZW50UGF0aCA9IHBhcmVudFJvdXRlICYmIHBhcmVudFJvdXRlLnBhdGggfHwgXCJcIjtcbiAgICB3YXJuaW5nT25jZShwYXJlbnRQYXRobmFtZSwgIXBhcmVudFJvdXRlIHx8IHBhcmVudFBhdGguZW5kc1dpdGgoXCIqXCIpLCBcIllvdSByZW5kZXJlZCBkZXNjZW5kYW50IDxSb3V0ZXM+IChvciBjYWxsZWQgYHVzZVJvdXRlcygpYCkgYXQgXCIgKyAoXCJcXFwiXCIgKyBwYXJlbnRQYXRobmFtZSArIFwiXFxcIiAodW5kZXIgPFJvdXRlIHBhdGg9XFxcIlwiICsgcGFyZW50UGF0aCArIFwiXFxcIj4pIGJ1dCB0aGUgXCIpICsgXCJwYXJlbnQgcm91dGUgcGF0aCBoYXMgbm8gdHJhaWxpbmcgXFxcIipcXFwiLiBUaGlzIG1lYW5zIGlmIHlvdSBuYXZpZ2F0ZSBcIiArIFwiZGVlcGVyLCB0aGUgcGFyZW50IHdvbid0IG1hdGNoIGFueW1vcmUgYW5kIHRoZXJlZm9yZSB0aGUgY2hpbGQgXCIgKyBcInJvdXRlcyB3aWxsIG5ldmVyIHJlbmRlci5cXG5cXG5cIiArIChcIlBsZWFzZSBjaGFuZ2UgdGhlIHBhcmVudCA8Um91dGUgcGF0aD1cXFwiXCIgKyBwYXJlbnRQYXRoICsgXCJcXFwiPiB0byA8Um91dGUgXCIpICsgKFwicGF0aD1cXFwiXCIgKyAocGFyZW50UGF0aCA9PT0gXCIvXCIgPyBcIipcIiA6IHBhcmVudFBhdGggKyBcIi8qXCIpICsgXCJcXFwiPi5cIikpO1xuICB9XG5cbiAgbGV0IGxvY2F0aW9uRnJvbUNvbnRleHQgPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgbG9jYXRpb247XG5cbiAgaWYgKGxvY2F0aW9uQXJnKSB7XG4gICAgdmFyIF9wYXJzZWRMb2NhdGlvbkFyZyRwYTtcblxuICAgIGxldCBwYXJzZWRMb2NhdGlvbkFyZyA9IHR5cGVvZiBsb2NhdGlvbkFyZyA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlUGF0aChsb2NhdGlvbkFyZykgOiBsb2NhdGlvbkFyZztcbiAgICAhKHBhcmVudFBhdGhuYW1lQmFzZSA9PT0gXCIvXCIgfHwgKChfcGFyc2VkTG9jYXRpb25BcmckcGEgPSBwYXJzZWRMb2NhdGlvbkFyZy5wYXRobmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYXJzZWRMb2NhdGlvbkFyZyRwYS5zdGFydHNXaXRoKHBhcmVudFBhdGhuYW1lQmFzZSkpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJXaGVuIG92ZXJyaWRpbmcgdGhlIGxvY2F0aW9uIHVzaW5nIGA8Um91dGVzIGxvY2F0aW9uPmAgb3IgYHVzZVJvdXRlcyhyb3V0ZXMsIGxvY2F0aW9uKWAsIFwiICsgXCJ0aGUgbG9jYXRpb24gcGF0aG5hbWUgbXVzdCBiZWdpbiB3aXRoIHRoZSBwb3J0aW9uIG9mIHRoZSBVUkwgcGF0aG5hbWUgdGhhdCB3YXMgXCIgKyAoXCJtYXRjaGVkIGJ5IGFsbCBwYXJlbnQgcm91dGVzLiBUaGUgY3VycmVudCBwYXRobmFtZSBiYXNlIGlzIFxcXCJcIiArIHBhcmVudFBhdGhuYW1lQmFzZSArIFwiXFxcIiBcIikgKyAoXCJidXQgcGF0aG5hbWUgXFxcIlwiICsgcGFyc2VkTG9jYXRpb25BcmcucGF0aG5hbWUgKyBcIlxcXCIgd2FzIGdpdmVuIGluIHRoZSBgbG9jYXRpb25gIHByb3AuXCIpKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgbG9jYXRpb24gPSBwYXJzZWRMb2NhdGlvbkFyZztcbiAgfSBlbHNlIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uRnJvbUNvbnRleHQ7XG4gIH1cblxuICBsZXQgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZSB8fCBcIi9cIjtcbiAgbGV0IHJlbWFpbmluZ1BhdGhuYW1lID0gcGFyZW50UGF0aG5hbWVCYXNlID09PSBcIi9cIiA/IHBhdGhuYW1lIDogcGF0aG5hbWUuc2xpY2UocGFyZW50UGF0aG5hbWVCYXNlLmxlbmd0aCkgfHwgXCIvXCI7XG4gIGxldCBtYXRjaGVzID0gbWF0Y2hSb3V0ZXMocm91dGVzLCB7XG4gICAgcGF0aG5hbWU6IHJlbWFpbmluZ1BhdGhuYW1lXG4gIH0pO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKHBhcmVudFJvdXRlIHx8IG1hdGNoZXMgIT0gbnVsbCwgXCJObyByb3V0ZXMgbWF0Y2hlZCBsb2NhdGlvbiBcXFwiXCIgKyBsb2NhdGlvbi5wYXRobmFtZSArIGxvY2F0aW9uLnNlYXJjaCArIGxvY2F0aW9uLmhhc2ggKyBcIlxcXCIgXCIpIDogdm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcobWF0Y2hlcyA9PSBudWxsIHx8IG1hdGNoZXNbbWF0Y2hlcy5sZW5ndGggLSAxXS5yb3V0ZS5lbGVtZW50ICE9PSB1bmRlZmluZWQsIFwiTWF0Y2hlZCBsZWFmIHJvdXRlIGF0IGxvY2F0aW9uIFxcXCJcIiArIGxvY2F0aW9uLnBhdGhuYW1lICsgbG9jYXRpb24uc2VhcmNoICsgbG9jYXRpb24uaGFzaCArIFwiXFxcIiBkb2VzIG5vdCBoYXZlIGFuIGVsZW1lbnQuIFwiICsgXCJUaGlzIG1lYW5zIGl0IHdpbGwgcmVuZGVyIGFuIDxPdXRsZXQgLz4gd2l0aCBhIG51bGwgdmFsdWUgYnkgZGVmYXVsdCByZXN1bHRpbmcgaW4gYW4gXFxcImVtcHR5XFxcIiBwYWdlLlwiKSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBfcmVuZGVyTWF0Y2hlcyhtYXRjaGVzICYmIG1hdGNoZXMubWFwKG1hdGNoID0+IE9iamVjdC5hc3NpZ24oe30sIG1hdGNoLCB7XG4gICAgcGFyYW1zOiBPYmplY3QuYXNzaWduKHt9LCBwYXJlbnRQYXJhbXMsIG1hdGNoLnBhcmFtcyksXG4gICAgcGF0aG5hbWU6IGpvaW5QYXRocyhbcGFyZW50UGF0aG5hbWVCYXNlLCBtYXRjaC5wYXRobmFtZV0pLFxuICAgIHBhdGhuYW1lQmFzZTogbWF0Y2gucGF0aG5hbWVCYXNlID09PSBcIi9cIiA/IHBhcmVudFBhdGhuYW1lQmFzZSA6IGpvaW5QYXRocyhbcGFyZW50UGF0aG5hbWVCYXNlLCBtYXRjaC5wYXRobmFtZUJhc2VdKVxuICB9KSksIHBhcmVudE1hdGNoZXMpO1xufVxuZnVuY3Rpb24gX3JlbmRlck1hdGNoZXMobWF0Y2hlcywgcGFyZW50TWF0Y2hlcykge1xuICBpZiAocGFyZW50TWF0Y2hlcyA9PT0gdm9pZCAwKSB7XG4gICAgcGFyZW50TWF0Y2hlcyA9IFtdO1xuICB9XG5cbiAgaWYgKG1hdGNoZXMgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBtYXRjaGVzLnJlZHVjZVJpZ2h0KChvdXRsZXQsIG1hdGNoLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovY3JlYXRlRWxlbWVudChSb3V0ZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIGNoaWxkcmVuOiBtYXRjaC5yb3V0ZS5lbGVtZW50ICE9PSB1bmRlZmluZWQgPyBtYXRjaC5yb3V0ZS5lbGVtZW50IDogb3V0bGV0LFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgb3V0bGV0LFxuICAgICAgICBtYXRjaGVzOiBwYXJlbnRNYXRjaGVzLmNvbmNhdChtYXRjaGVzLnNsaWNlKDAsIGluZGV4ICsgMSkpXG4gICAgICB9XG4gICAgfSk7XG4gIH0sIG51bGwpO1xufVxuXG4vKipcbiAqIEEgPFJvdXRlcj4gdGhhdCBzdG9yZXMgYWxsIGVudHJpZXMgaW4gbWVtb3J5LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZG9jcy9lbi92Ni9hcGkjbWVtb3J5cm91dGVyXG4gKi9cbmZ1bmN0aW9uIE1lbW9yeVJvdXRlcihfcmVmKSB7XG4gIGxldCB7XG4gICAgYmFzZW5hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgaW5pdGlhbEVudHJpZXMsXG4gICAgaW5pdGlhbEluZGV4XG4gIH0gPSBfcmVmO1xuICBsZXQgaGlzdG9yeVJlZiA9IHVzZVJlZigpO1xuXG4gIGlmIChoaXN0b3J5UmVmLmN1cnJlbnQgPT0gbnVsbCkge1xuICAgIGhpc3RvcnlSZWYuY3VycmVudCA9IGNyZWF0ZU1lbW9yeUhpc3Rvcnkoe1xuICAgICAgaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsSW5kZXhcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWN0aW9uOiBoaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvblxuICB9KTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnldKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9jcmVhdGVFbGVtZW50KFJvdXRlciwge1xuICAgIGJhc2VuYW1lOiBiYXNlbmFtZSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5hY3Rpb24sXG4gICAgbmF2aWdhdG9yOiBoaXN0b3J5XG4gIH0pO1xufVxuXG4vKipcbiAqIENoYW5nZXMgdGhlIGN1cnJlbnQgbG9jYXRpb24uXG4gKlxuICogTm90ZTogVGhpcyBBUEkgaXMgbW9zdGx5IHVzZWZ1bCBpbiBSZWFjdC5Db21wb25lbnQgc3ViY2xhc3NlcyB0aGF0IGFyZSBub3RcbiAqIGFibGUgdG8gdXNlIGhvb2tzLiBJbiBmdW5jdGlvbmFsIGNvbXBvbmVudHMsIHdlIHJlY29tbWVuZCB5b3UgdXNlIHRoZVxuICogYHVzZU5hdmlnYXRlYCBob29rIGluc3RlYWQuXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9kb2NzL2VuL3Y2L2FwaSNuYXZpZ2F0ZVxuICovXG5mdW5jdGlvbiBOYXZpZ2F0ZShfcmVmMikge1xuICBsZXQge1xuICAgIHRvLFxuICAgIHJlcGxhY2UsXG4gICAgc3RhdGVcbiAgfSA9IF9yZWYyO1xuICAhdXNlSW5Sb3V0ZXJDb250ZXh0KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIC8vIFRPRE86IFRoaXMgZXJyb3IgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGV5IHNvbWVob3cgaGF2ZSAyIHZlcnNpb25zIG9mXG4gIC8vIHRoZSByb3V0ZXIgbG9hZGVkLiBXZSBjYW4gaGVscCB0aGVtIHVuZGVyc3RhbmQgaG93IHRvIGF2b2lkIHRoYXQuXG4gIFwiPE5hdmlnYXRlPiBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LlwiKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoIXVzZUNvbnRleHQoTmF2aWdhdGlvbkNvbnRleHQpLnN0YXRpYywgXCI8TmF2aWdhdGU+IG11c3Qgbm90IGJlIHVzZWQgb24gdGhlIGluaXRpYWwgcmVuZGVyIGluIGEgPFN0YXRpY1JvdXRlcj4uIFwiICsgXCJUaGlzIGlzIGEgbm8tb3AsIGJ1dCB5b3Ugc2hvdWxkIG1vZGlmeSB5b3VyIGNvZGUgc28gdGhlIDxOYXZpZ2F0ZT4gaXMgXCIgKyBcIm9ubHkgZXZlciByZW5kZXJlZCBpbiByZXNwb25zZSB0byBzb21lIHVzZXIgaW50ZXJhY3Rpb24gb3Igc3RhdGUgY2hhbmdlLlwiKSA6IHZvaWQgMDtcbiAgbGV0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBuYXZpZ2F0ZSh0bywge1xuICAgICAgcmVwbGFjZSxcbiAgICAgIHN0YXRlXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBjaGlsZCByb3V0ZSdzIGVsZW1lbnQsIGlmIHRoZXJlIGlzIG9uZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI291dGxldFxuICovXG5mdW5jdGlvbiBPdXRsZXQocHJvcHMpIHtcbiAgcmV0dXJuIHVzZU91dGxldChwcm9wcy5jb250ZXh0KTtcbn1cblxuLyoqXG4gKiBEZWNsYXJlcyBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGF0IGEgY2VydGFpbiBVUkwgcGF0aC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI3JvdXRlXG4gKi9cbmZ1bmN0aW9uIFJvdXRlKF9wcm9wcykge1xuICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBcIkEgPFJvdXRlPiBpcyBvbmx5IGV2ZXIgdG8gYmUgdXNlZCBhcyB0aGUgY2hpbGQgb2YgPFJvdXRlcz4gZWxlbWVudCwgXCIgKyBcIm5ldmVyIHJlbmRlcmVkIGRpcmVjdGx5LiBQbGVhc2Ugd3JhcCB5b3VyIDxSb3V0ZT4gaW4gYSA8Um91dGVzPi5cIikgOiBpbnZhcmlhbnQoZmFsc2UpIDtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBsb2NhdGlvbiBjb250ZXh0IGZvciB0aGUgcmVzdCBvZiB0aGUgYXBwLlxuICpcbiAqIE5vdGU6IFlvdSB1c3VhbGx5IHdvbid0IHJlbmRlciBhIDxSb3V0ZXI+IGRpcmVjdGx5LiBJbnN0ZWFkLCB5b3UnbGwgcmVuZGVyIGFcbiAqIHJvdXRlciB0aGF0IGlzIG1vcmUgc3BlY2lmaWMgdG8geW91ciBlbnZpcm9ubWVudCBzdWNoIGFzIGEgPEJyb3dzZXJSb3V0ZXI+XG4gKiBpbiB3ZWIgYnJvd3NlcnMgb3IgYSA8U3RhdGljUm91dGVyPiBmb3Igc2VydmVyIHJlbmRlcmluZy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI3JvdXRlclxuICovXG5mdW5jdGlvbiBSb3V0ZXIoX3JlZjMpIHtcbiAgbGV0IHtcbiAgICBiYXNlbmFtZTogYmFzZW5hbWVQcm9wID0gXCIvXCIsXG4gICAgY2hpbGRyZW4gPSBudWxsLFxuICAgIGxvY2F0aW9uOiBsb2NhdGlvblByb3AsXG4gICAgbmF2aWdhdGlvblR5cGUgPSBBY3Rpb24uUG9wLFxuICAgIG5hdmlnYXRvcixcbiAgICBzdGF0aWM6IHN0YXRpY1Byb3AgPSBmYWxzZVxuICB9ID0gX3JlZjM7XG4gICEhdXNlSW5Sb3V0ZXJDb250ZXh0KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIFwiWW91IGNhbm5vdCByZW5kZXIgYSA8Um91dGVyPiBpbnNpZGUgYW5vdGhlciA8Um91dGVyPi5cIiArIFwiIFlvdSBzaG91bGQgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGluIHlvdXIgYXBwLlwiKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGxldCBiYXNlbmFtZSA9IG5vcm1hbGl6ZVBhdGhuYW1lKGJhc2VuYW1lUHJvcCk7XG4gIGxldCBuYXZpZ2F0aW9uQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBiYXNlbmFtZSxcbiAgICBuYXZpZ2F0b3IsXG4gICAgc3RhdGljOiBzdGF0aWNQcm9wXG4gIH0pLCBbYmFzZW5hbWUsIG5hdmlnYXRvciwgc3RhdGljUHJvcF0pO1xuXG4gIGlmICh0eXBlb2YgbG9jYXRpb25Qcm9wID09PSBcInN0cmluZ1wiKSB7XG4gICAgbG9jYXRpb25Qcm9wID0gcGFyc2VQYXRoKGxvY2F0aW9uUHJvcCk7XG4gIH1cblxuICBsZXQge1xuICAgIHBhdGhuYW1lID0gXCIvXCIsXG4gICAgc2VhcmNoID0gXCJcIixcbiAgICBoYXNoID0gXCJcIixcbiAgICBzdGF0ZSA9IG51bGwsXG4gICAga2V5ID0gXCJkZWZhdWx0XCJcbiAgfSA9IGxvY2F0aW9uUHJvcDtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgbGV0IHRyYWlsaW5nUGF0aG5hbWUgPSBzdHJpcEJhc2VuYW1lKHBhdGhuYW1lLCBiYXNlbmFtZSk7XG5cbiAgICBpZiAodHJhaWxpbmdQYXRobmFtZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aG5hbWU6IHRyYWlsaW5nUGF0aG5hbWUsXG4gICAgICBzZWFyY2gsXG4gICAgICBoYXNoLFxuICAgICAgc3RhdGUsXG4gICAgICBrZXlcbiAgICB9O1xuICB9LCBbYmFzZW5hbWUsIHBhdGhuYW1lLCBzZWFyY2gsIGhhc2gsIHN0YXRlLCBrZXldKTtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhsb2NhdGlvbiAhPSBudWxsLCBcIjxSb3V0ZXIgYmFzZW5hbWU9XFxcIlwiICsgYmFzZW5hbWUgKyBcIlxcXCI+IGlzIG5vdCBhYmxlIHRvIG1hdGNoIHRoZSBVUkwgXCIgKyAoXCJcXFwiXCIgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2ggKyBcIlxcXCIgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBcIikgKyBcImJhc2VuYW1lLCBzbyB0aGUgPFJvdXRlcj4gd29uJ3QgcmVuZGVyIGFueXRoaW5nLlwiKSA6IHZvaWQgMDtcblxuICBpZiAobG9jYXRpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9jcmVhdGVFbGVtZW50KE5hdmlnYXRpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IG5hdmlnYXRpb25Db250ZXh0XG4gIH0sIC8qI19fUFVSRV9fKi9jcmVhdGVFbGVtZW50KExvY2F0aW9uQ29udGV4dC5Qcm92aWRlciwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB2YWx1ZToge1xuICAgICAgbG9jYXRpb24sXG4gICAgICBuYXZpZ2F0aW9uVHlwZVxuICAgIH1cbiAgfSkpO1xufVxuXG4vKipcbiAqIEEgY29udGFpbmVyIGZvciBhIG5lc3RlZCB0cmVlIG9mIDxSb3V0ZT4gZWxlbWVudHMgdGhhdCByZW5kZXJzIHRoZSBicmFuY2hcbiAqIHRoYXQgYmVzdCBtYXRjaGVzIHRoZSBjdXJyZW50IGxvY2F0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZG9jcy9lbi92Ni9hcGkjcm91dGVzXG4gKi9cbmZ1bmN0aW9uIFJvdXRlcyhfcmVmNCkge1xuICBsZXQge1xuICAgIGNoaWxkcmVuLFxuICAgIGxvY2F0aW9uXG4gIH0gPSBfcmVmNDtcbiAgcmV0dXJuIHVzZVJvdXRlcyhjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oY2hpbGRyZW4pLCBsb2NhdGlvbik7XG59IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVUSUxTXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKlxuICogQ3JlYXRlcyBhIHJvdXRlIGNvbmZpZyBmcm9tIGEgUmVhY3QgXCJjaGlsZHJlblwiIG9iamVjdCwgd2hpY2ggaXMgdXN1YWxseVxuICogZWl0aGVyIGEgYDxSb3V0ZT5gIGVsZW1lbnQgb3IgYW4gYXJyYXkgb2YgdGhlbS4gVXNlZCBpbnRlcm5hbGx5IGJ5XG4gKiBgPFJvdXRlcz5gIHRvIGNyZWF0ZSBhIHJvdXRlIGNvbmZpZyBmcm9tIGl0cyBjaGlsZHJlbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2RvY3MvZW4vdjYvYXBpI2NyZWF0ZXJvdXRlc2Zyb21jaGlsZHJlblxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbihjaGlsZHJlbikge1xuICBsZXQgcm91dGVzID0gW107XG4gIENoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGVsZW1lbnQgPT4ge1xuICAgIGlmICghIC8qI19fUFVSRV9fKi9pc1ZhbGlkRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgLy8gSWdub3JlIG5vbi1lbGVtZW50cy4gVGhpcyBhbGxvd3MgcGVvcGxlIHRvIG1vcmUgZWFzaWx5IGlubGluZVxuICAgICAgLy8gY29uZGl0aW9uYWxzIGluIHRoZWlyIHJvdXRlIGNvbmZpZy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC50eXBlID09PSBGcmFnbWVudCkge1xuICAgICAgLy8gVHJhbnNwYXJlbnRseSBzdXBwb3J0IFJlYWN0LkZyYWdtZW50IGFuZCBpdHMgY2hpbGRyZW4uXG4gICAgICByb3V0ZXMucHVzaC5hcHBseShyb3V0ZXMsIGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbihlbGVtZW50LnByb3BzLmNoaWxkcmVuKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgIShlbGVtZW50LnR5cGUgPT09IFJvdXRlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJbXCIgKyAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gXCJzdHJpbmdcIiA/IGVsZW1lbnQudHlwZSA6IGVsZW1lbnQudHlwZS5uYW1lKSArIFwiXSBpcyBub3QgYSA8Um91dGU+IGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudCBjaGlsZHJlbiBvZiA8Um91dGVzPiBtdXN0IGJlIGEgPFJvdXRlPiBvciA8UmVhY3QuRnJhZ21lbnQ+XCIpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBsZXQgcm91dGUgPSB7XG4gICAgICBjYXNlU2Vuc2l0aXZlOiBlbGVtZW50LnByb3BzLmNhc2VTZW5zaXRpdmUsXG4gICAgICBlbGVtZW50OiBlbGVtZW50LnByb3BzLmVsZW1lbnQsXG4gICAgICBpbmRleDogZWxlbWVudC5wcm9wcy5pbmRleCxcbiAgICAgIHBhdGg6IGVsZW1lbnQucHJvcHMucGF0aFxuICAgIH07XG5cbiAgICBpZiAoZWxlbWVudC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgcm91dGUuY2hpbGRyZW4gPSBjcmVhdGVSb3V0ZXNGcm9tQ2hpbGRyZW4oZWxlbWVudC5wcm9wcy5jaGlsZHJlbik7XG4gICAgfVxuXG4gICAgcm91dGVzLnB1c2gocm91dGUpO1xuICB9KTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cbi8qKlxuICogUmVuZGVycyB0aGUgcmVzdWx0IG9mIGBtYXRjaFJvdXRlcygpYCBpbnRvIGEgUmVhY3QgZWxlbWVudC5cbiAqL1xuXG5mdW5jdGlvbiByZW5kZXJNYXRjaGVzKG1hdGNoZXMpIHtcbiAgcmV0dXJuIF9yZW5kZXJNYXRjaGVzKG1hdGNoZXMpO1xufVxuXG5leHBvcnQgeyBNZW1vcnlSb3V0ZXIsIE5hdmlnYXRlLCBPdXRsZXQsIFJvdXRlLCBSb3V0ZXIsIFJvdXRlcywgTG9jYXRpb25Db250ZXh0IGFzIFVOU0FGRV9Mb2NhdGlvbkNvbnRleHQsIE5hdmlnYXRpb25Db250ZXh0IGFzIFVOU0FGRV9OYXZpZ2F0aW9uQ29udGV4dCwgUm91dGVDb250ZXh0IGFzIFVOU0FGRV9Sb3V0ZUNvbnRleHQsIGNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbiwgZ2VuZXJhdGVQYXRoLCBtYXRjaFBhdGgsIG1hdGNoUm91dGVzLCByZW5kZXJNYXRjaGVzLCByZXNvbHZlUGF0aCwgdXNlSHJlZiwgdXNlSW5Sb3V0ZXJDb250ZXh0LCB1c2VMb2NhdGlvbiwgdXNlTWF0Y2gsIHVzZU5hdmlnYXRlLCB1c2VOYXZpZ2F0aW9uVHlwZSwgdXNlT3V0bGV0LCB1c2VPdXRsZXRDb250ZXh0LCB1c2VQYXJhbXMsIHVzZVJlc29sdmVkUGF0aCwgdXNlUm91dGVzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsIi8qKlxuICogUmVhY3QgUm91dGVyIERPTSB2Ni4zLjBcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIFJlbWl4IFNvZnR3YXJlIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UubWQgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlTGF5b3V0RWZmZWN0LCBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUJyb3dzZXJIaXN0b3J5LCBjcmVhdGVIYXNoSGlzdG9yeSB9IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IHsgUm91dGVyLCB1c2VIcmVmLCBjcmVhdGVQYXRoLCB1c2VMb2NhdGlvbiwgdXNlUmVzb2x2ZWRQYXRoLCB1c2VOYXZpZ2F0ZSB9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5leHBvcnQgeyBNZW1vcnlSb3V0ZXIsIE5hdmlnYXRlLCBOYXZpZ2F0aW9uVHlwZSwgT3V0bGV0LCBSb3V0ZSwgUm91dGVyLCBSb3V0ZXMsIFVOU0FGRV9Mb2NhdGlvbkNvbnRleHQsIFVOU0FGRV9OYXZpZ2F0aW9uQ29udGV4dCwgVU5TQUZFX1JvdXRlQ29udGV4dCwgY3JlYXRlUGF0aCwgY3JlYXRlUm91dGVzRnJvbUNoaWxkcmVuLCBnZW5lcmF0ZVBhdGgsIG1hdGNoUGF0aCwgbWF0Y2hSb3V0ZXMsIHBhcnNlUGF0aCwgcmVuZGVyTWF0Y2hlcywgcmVzb2x2ZVBhdGgsIHVzZUhyZWYsIHVzZUluUm91dGVyQ29udGV4dCwgdXNlTG9jYXRpb24sIHVzZU1hdGNoLCB1c2VOYXZpZ2F0ZSwgdXNlTmF2aWdhdGlvblR5cGUsIHVzZU91dGxldCwgdXNlT3V0bGV0Q29udGV4dCwgdXNlUGFyYW1zLCB1c2VSZXNvbHZlZFBhdGgsIHVzZVJvdXRlcyB9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5jb25zdCBfZXhjbHVkZWQgPSBbXCJvbkNsaWNrXCIsIFwicmVsb2FkRG9jdW1lbnRcIiwgXCJyZXBsYWNlXCIsIFwic3RhdGVcIiwgXCJ0YXJnZXRcIiwgXCJ0b1wiXSxcbiAgICAgIF9leGNsdWRlZDIgPSBbXCJhcmlhLWN1cnJlbnRcIiwgXCJjYXNlU2Vuc2l0aXZlXCIsIFwiY2xhc3NOYW1lXCIsIFwiZW5kXCIsIFwic3R5bGVcIiwgXCJ0b1wiLCBcImNoaWxkcmVuXCJdO1xuXG5mdW5jdGlvbiB3YXJuaW5nKGNvbmQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjb25kKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIpIGNvbnNvbGUud2FybihtZXNzYWdlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCBSb3V0ZXIhXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBlcnJvciBpcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB5b3UgY2FuIG1vcmUgZWFzaWx5XG4gICAgICAvLyBmaW5kIHRoZSBzb3VyY2UgZm9yIGEgd2FybmluZyB0aGF0IGFwcGVhcnMgaW4gdGhlIGNvbnNvbGUgYnlcbiAgICAgIC8vIGVuYWJsaW5nIFwicGF1c2Ugb24gZXhjZXB0aW9uc1wiIGluIHlvdXIgSmF2YVNjcmlwdCBkZWJ1Z2dlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxufSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ09NUE9ORU5UU1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBBIGA8Um91dGVyPmAgZm9yIHVzZSBpbiB3ZWIgYnJvd3NlcnMuIFByb3ZpZGVzIHRoZSBjbGVhbmVzdCBVUkxzLlxuICovXG5mdW5jdGlvbiBCcm93c2VyUm91dGVyKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBiYXNlbmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICB3aW5kb3dcbiAgfSA9IF9yZWY7XG4gIGxldCBoaXN0b3J5UmVmID0gdXNlUmVmKCk7XG5cbiAgaWYgKGhpc3RvcnlSZWYuY3VycmVudCA9PSBudWxsKSB7XG4gICAgaGlzdG9yeVJlZi5jdXJyZW50ID0gY3JlYXRlQnJvd3Nlckhpc3Rvcnkoe1xuICAgICAgd2luZG93XG4gICAgfSk7XG4gIH1cblxuICBsZXQgaGlzdG9yeSA9IGhpc3RvcnlSZWYuY3VycmVudDtcbiAgbGV0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5XSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovY3JlYXRlRWxlbWVudChSb3V0ZXIsIHtcbiAgICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuYWN0aW9uLFxuICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIGA8Um91dGVyPmAgZm9yIHVzZSBpbiB3ZWIgYnJvd3NlcnMuIFN0b3JlcyB0aGUgbG9jYXRpb24gaW4gdGhlIGhhc2hcbiAqIHBvcnRpb24gb2YgdGhlIFVSTCBzbyBpdCBpcyBub3Qgc2VudCB0byB0aGUgc2VydmVyLlxuICovXG5mdW5jdGlvbiBIYXNoUm91dGVyKF9yZWYyKSB7XG4gIGxldCB7XG4gICAgYmFzZW5hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgd2luZG93XG4gIH0gPSBfcmVmMjtcbiAgbGV0IGhpc3RvcnlSZWYgPSB1c2VSZWYoKTtcblxuICBpZiAoaGlzdG9yeVJlZi5jdXJyZW50ID09IG51bGwpIHtcbiAgICBoaXN0b3J5UmVmLmN1cnJlbnQgPSBjcmVhdGVIYXNoSGlzdG9yeSh7XG4gICAgICB3aW5kb3dcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBoaXN0b3J5ID0gaGlzdG9yeVJlZi5jdXJyZW50O1xuICBsZXQgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWN0aW9uOiBoaXN0b3J5LmFjdGlvbixcbiAgICBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvblxuICB9KTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IGhpc3RvcnkubGlzdGVuKHNldFN0YXRlKSwgW2hpc3RvcnldKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9jcmVhdGVFbGVtZW50KFJvdXRlciwge1xuICAgIGJhc2VuYW1lOiBiYXNlbmFtZSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4sXG4gICAgbG9jYXRpb246IHN0YXRlLmxvY2F0aW9uLFxuICAgIG5hdmlnYXRpb25UeXBlOiBzdGF0ZS5hY3Rpb24sXG4gICAgbmF2aWdhdG9yOiBoaXN0b3J5XG4gIH0pO1xufVxuXG4vKipcbiAqIEEgYDxSb3V0ZXI+YCB0aGF0IGFjY2VwdHMgYSBwcmUtaW5zdGFudGlhdGVkIGhpc3Rvcnkgb2JqZWN0LiBJdCdzIGltcG9ydGFudFxuICogdG8gbm90ZSB0aGF0IHVzaW5nIHlvdXIgb3duIGhpc3Rvcnkgb2JqZWN0IGlzIGhpZ2hseSBkaXNjb3VyYWdlZCBhbmQgbWF5IGFkZFxuICogdHdvIHZlcnNpb25zIG9mIHRoZSBoaXN0b3J5IGxpYnJhcnkgdG8geW91ciBidW5kbGVzIHVubGVzcyB5b3UgdXNlIHRoZSBzYW1lXG4gKiB2ZXJzaW9uIG9mIHRoZSBoaXN0b3J5IGxpYnJhcnkgdGhhdCBSZWFjdCBSb3V0ZXIgdXNlcyBpbnRlcm5hbGx5LlxuICovXG5mdW5jdGlvbiBIaXN0b3J5Um91dGVyKF9yZWYzKSB7XG4gIGxldCB7XG4gICAgYmFzZW5hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgaGlzdG9yeVxuICB9ID0gX3JlZjM7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVdID0gdXNlU3RhdGUoe1xuICAgIGFjdGlvbjogaGlzdG9yeS5hY3Rpb24sXG4gICAgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb25cbiAgfSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiBoaXN0b3J5Lmxpc3RlbihzZXRTdGF0ZSksIFtoaXN0b3J5XSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovY3JlYXRlRWxlbWVudChSb3V0ZXIsIHtcbiAgICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGxvY2F0aW9uOiBzdGF0ZS5sb2NhdGlvbixcbiAgICBuYXZpZ2F0aW9uVHlwZTogc3RhdGUuYWN0aW9uLFxuICAgIG5hdmlnYXRvcjogaGlzdG9yeVxuICB9KTtcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBIaXN0b3J5Um91dGVyLmRpc3BsYXlOYW1lID0gXCJ1bnN0YWJsZV9IaXN0b3J5Um91dGVyXCI7XG59XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudCkge1xuICByZXR1cm4gISEoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSk7XG59XG5cbi8qKlxuICogVGhlIHB1YmxpYyBBUEkgZm9yIHJlbmRlcmluZyBhIGhpc3RvcnktYXdhcmUgPGE+LlxuICovXG5jb25zdCBMaW5rID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gTGlua1dpdGhSZWYoX3JlZjQsIHJlZikge1xuICBsZXQge1xuICAgIG9uQ2xpY2ssXG4gICAgcmVsb2FkRG9jdW1lbnQsXG4gICAgcmVwbGFjZSA9IGZhbHNlLFxuICAgIHN0YXRlLFxuICAgIHRhcmdldCxcbiAgICB0b1xuICB9ID0gX3JlZjQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZjQsIF9leGNsdWRlZCk7XG5cbiAgbGV0IGhyZWYgPSB1c2VIcmVmKHRvKTtcbiAgbGV0IGludGVybmFsT25DbGljayA9IHVzZUxpbmtDbGlja0hhbmRsZXIodG8sIHtcbiAgICByZXBsYWNlLFxuICAgIHN0YXRlLFxuICAgIHRhcmdldFxuICB9KTtcblxuICBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xuICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGV2ZW50KTtcblxuICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiAhcmVsb2FkRG9jdW1lbnQpIHtcbiAgICAgIGludGVybmFsT25DbGljayhldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1oYXMtY29udGVudFxuICAgIGNyZWF0ZUVsZW1lbnQoXCJhXCIsIF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgICBocmVmOiBocmVmLFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2ssXG4gICAgICByZWY6IHJlZixcbiAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgfSkpXG4gICk7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICBMaW5rLmRpc3BsYXlOYW1lID0gXCJMaW5rXCI7XG59XG5cbi8qKlxuICogQSA8TGluaz4gd3JhcHBlciB0aGF0IGtub3dzIGlmIGl0J3MgXCJhY3RpdmVcIiBvciBub3QuXG4gKi9cbmNvbnN0IE5hdkxpbmsgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiBOYXZMaW5rV2l0aFJlZihfcmVmNSwgcmVmKSB7XG4gIGxldCB7XG4gICAgXCJhcmlhLWN1cnJlbnRcIjogYXJpYUN1cnJlbnRQcm9wID0gXCJwYWdlXCIsXG4gICAgY2FzZVNlbnNpdGl2ZSA9IGZhbHNlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lUHJvcCA9IFwiXCIsXG4gICAgZW5kID0gZmFsc2UsXG4gICAgc3R5bGU6IHN0eWxlUHJvcCxcbiAgICB0byxcbiAgICBjaGlsZHJlblxuICB9ID0gX3JlZjUsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZjUsIF9leGNsdWRlZDIpO1xuXG4gIGxldCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGxldCBwYXRoID0gdXNlUmVzb2x2ZWRQYXRoKHRvKTtcbiAgbGV0IGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcbiAgbGV0IHRvUGF0aG5hbWUgPSBwYXRoLnBhdGhuYW1lO1xuXG4gIGlmICghY2FzZVNlbnNpdGl2ZSkge1xuICAgIGxvY2F0aW9uUGF0aG5hbWUgPSBsb2NhdGlvblBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgdG9QYXRobmFtZSA9IHRvUGF0aG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgfVxuXG4gIGxldCBpc0FjdGl2ZSA9IGxvY2F0aW9uUGF0aG5hbWUgPT09IHRvUGF0aG5hbWUgfHwgIWVuZCAmJiBsb2NhdGlvblBhdGhuYW1lLnN0YXJ0c1dpdGgodG9QYXRobmFtZSkgJiYgbG9jYXRpb25QYXRobmFtZS5jaGFyQXQodG9QYXRobmFtZS5sZW5ndGgpID09PSBcIi9cIjtcbiAgbGV0IGFyaWFDdXJyZW50ID0gaXNBY3RpdmUgPyBhcmlhQ3VycmVudFByb3AgOiB1bmRlZmluZWQ7XG4gIGxldCBjbGFzc05hbWU7XG5cbiAgaWYgKHR5cGVvZiBjbGFzc05hbWVQcm9wID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjbGFzc05hbWUgPSBjbGFzc05hbWVQcm9wKHtcbiAgICAgIGlzQWN0aXZlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgdGhlIGNsYXNzTmFtZSBwcm9wIGlzIG5vdCBhIGZ1bmN0aW9uLCB3ZSB1c2UgYSBkZWZhdWx0IGBhY3RpdmVgXG4gICAgLy8gY2xhc3MgZm9yIDxOYXZMaW5rIC8+cyB0aGF0IGFyZSBhY3RpdmUuIEluIHY1IGBhY3RpdmVgIHdhcyB0aGUgZGVmYXVsdFxuICAgIC8vIHZhbHVlIGZvciBgYWN0aXZlQ2xhc3NOYW1lYCwgYnV0IHdlIGFyZSByZW1vdmluZyB0aGF0IEFQSSBhbmQgY2FuIHN0aWxsXG4gICAgLy8gdXNlIHRoZSBvbGQgZGVmYXVsdCBiZWhhdmlvciBmb3IgYSBjbGVhbmVyIHVwZ3JhZGUgcGF0aCBhbmQga2VlcCB0aGVcbiAgICAvLyBzaW1wbGUgc3R5bGluZyBydWxlcyB3b3JraW5nIGFzIHRoZXkgY3VycmVudGx5IGRvLlxuICAgIGNsYXNzTmFtZSA9IFtjbGFzc05hbWVQcm9wLCBpc0FjdGl2ZSA/IFwiYWN0aXZlXCIgOiBudWxsXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4gIH1cblxuICBsZXQgc3R5bGUgPSB0eXBlb2Ygc3R5bGVQcm9wID09PSBcImZ1bmN0aW9uXCIgPyBzdHlsZVByb3Aoe1xuICAgIGlzQWN0aXZlXG4gIH0pIDogc3R5bGVQcm9wO1xuICByZXR1cm4gLyojX19QVVJFX18qL2NyZWF0ZUVsZW1lbnQoTGluaywgX2V4dGVuZHMoe30sIHJlc3QsIHtcbiAgICBcImFyaWEtY3VycmVudFwiOiBhcmlhQ3VycmVudCxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICByZWY6IHJlZixcbiAgICBzdHlsZTogc3R5bGUsXG4gICAgdG86IHRvXG4gIH0pLCB0eXBlb2YgY2hpbGRyZW4gPT09IFwiZnVuY3Rpb25cIiA/IGNoaWxkcmVuKHtcbiAgICBpc0FjdGl2ZVxuICB9KSA6IGNoaWxkcmVuKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIE5hdkxpbmsuZGlzcGxheU5hbWUgPSBcIk5hdkxpbmtcIjtcbn0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhPT0tTXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKipcbiAqIEhhbmRsZXMgdGhlIGNsaWNrIGJlaGF2aW9yIGZvciByb3V0ZXIgYDxMaW5rPmAgY29tcG9uZW50cy4gVGhpcyBpcyB1c2VmdWwgaWZcbiAqIHlvdSBuZWVkIHRvIGNyZWF0ZSBjdXN0b20gYDxMaW5rPmAgY29tcG9uZW50cyB3aXRoIHRoZSBzYW1lIGNsaWNrIGJlaGF2aW9yIHdlXG4gKiB1c2UgaW4gb3VyIGV4cG9ydGVkIGA8TGluaz5gLlxuICovXG5cblxuZnVuY3Rpb24gdXNlTGlua0NsaWNrSGFuZGxlcih0bywgX3RlbXApIHtcbiAgbGV0IHtcbiAgICB0YXJnZXQsXG4gICAgcmVwbGFjZTogcmVwbGFjZVByb3AsXG4gICAgc3RhdGVcbiAgfSA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wO1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBsZXQgcGF0aCA9IHVzZVJlc29sdmVkUGF0aCh0byk7XG4gIHJldHVybiB1c2VDYWxsYmFjayhldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMCAmJiAoIC8vIElnbm9yZSBldmVyeXRoaW5nIGJ1dCBsZWZ0IGNsaWNrc1xuICAgICF0YXJnZXQgfHwgdGFyZ2V0ID09PSBcIl9zZWxmXCIpICYmIC8vIExldCBicm93c2VyIGhhbmRsZSBcInRhcmdldD1fYmxhbmtcIiBldGMuXG4gICAgIWlzTW9kaWZpZWRFdmVudChldmVudCkgLy8gSWdub3JlIGNsaWNrcyB3aXRoIG1vZGlmaWVyIGtleXNcbiAgICApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIElmIHRoZSBVUkwgaGFzbid0IGNoYW5nZWQsIGEgcmVndWxhciA8YT4gd2lsbCBkbyBhIHJlcGxhY2UgaW5zdGVhZCBvZlxuICAgICAgLy8gYSBwdXNoLCBzbyBkbyB0aGUgc2FtZSBoZXJlLlxuXG4gICAgICBsZXQgcmVwbGFjZSA9ICEhcmVwbGFjZVByb3AgfHwgY3JlYXRlUGF0aChsb2NhdGlvbikgPT09IGNyZWF0ZVBhdGgocGF0aCk7XG4gICAgICBuYXZpZ2F0ZSh0bywge1xuICAgICAgICByZXBsYWNlLFxuICAgICAgICBzdGF0ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbbG9jYXRpb24sIG5hdmlnYXRlLCBwYXRoLCByZXBsYWNlUHJvcCwgc3RhdGUsIHRhcmdldCwgdG9dKTtcbn1cbi8qKlxuICogQSBjb252ZW5pZW50IHdyYXBwZXIgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgc2VhcmNoIHBhcmFtZXRlcnMgdmlhIHRoZVxuICogVVJMU2VhcmNoUGFyYW1zIGludGVyZmFjZS5cbiAqL1xuXG5mdW5jdGlvbiB1c2VTZWFyY2hQYXJhbXMoZGVmYXVsdEluaXQpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyh0eXBlb2YgVVJMU2VhcmNoUGFyYW1zICE9PSBcInVuZGVmaW5lZFwiLCBcIllvdSBjYW5ub3QgdXNlIHRoZSBgdXNlU2VhcmNoUGFyYW1zYCBob29rIGluIGEgYnJvd3NlciB0aGF0IGRvZXMgbm90IFwiICsgXCJzdXBwb3J0IHRoZSBVUkxTZWFyY2hQYXJhbXMgQVBJLiBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEludGVybmV0IFwiICsgXCJFeHBsb3JlciAxMSwgd2UgcmVjb21tZW5kIHlvdSBsb2FkIGEgcG9seWZpbGwgc3VjaCBhcyBcIiArIFwiaHR0cHM6Ly9naXRodWIuY29tL3VuZ2FwL3VybC1zZWFyY2gtcGFyYW1zXFxuXFxuXCIgKyBcIklmIHlvdSdyZSB1bnN1cmUgaG93IHRvIGxvYWQgcG9seWZpbGxzLCB3ZSByZWNvbW1lbmQgeW91IGNoZWNrIG91dCBcIiArIFwiaHR0cHM6Ly9wb2x5ZmlsbC5pby92My8gd2hpY2ggcHJvdmlkZXMgc29tZSByZWNvbW1lbmRhdGlvbnMgYWJvdXQgaG93IFwiICsgXCJ0byBsb2FkIHBvbHlmaWxscyBvbmx5IGZvciB1c2VycyB0aGF0IG5lZWQgdGhlbSwgaW5zdGVhZCBvZiBmb3IgZXZlcnkgXCIgKyBcInVzZXIuXCIpIDogdm9pZCAwO1xuICBsZXQgZGVmYXVsdFNlYXJjaFBhcmFtc1JlZiA9IHVzZVJlZihjcmVhdGVTZWFyY2hQYXJhbXMoZGVmYXVsdEluaXQpKTtcbiAgbGV0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgbGV0IHNlYXJjaFBhcmFtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCBzZWFyY2hQYXJhbXMgPSBjcmVhdGVTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTtcblxuICAgIGZvciAobGV0IGtleSBvZiBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICBpZiAoIXNlYXJjaFBhcmFtcy5oYXMoa2V5KSkge1xuICAgICAgICBkZWZhdWx0U2VhcmNoUGFyYW1zUmVmLmN1cnJlbnQuZ2V0QWxsKGtleSkuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgc2VhcmNoUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlYXJjaFBhcmFtcztcbiAgfSwgW2xvY2F0aW9uLnNlYXJjaF0pO1xuICBsZXQgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xuICBsZXQgc2V0U2VhcmNoUGFyYW1zID0gdXNlQ2FsbGJhY2soKG5leHRJbml0LCBuYXZpZ2F0ZU9wdGlvbnMpID0+IHtcbiAgICBuYXZpZ2F0ZShcIj9cIiArIGNyZWF0ZVNlYXJjaFBhcmFtcyhuZXh0SW5pdCksIG5hdmlnYXRlT3B0aW9ucyk7XG4gIH0sIFtuYXZpZ2F0ZV0pO1xuICByZXR1cm4gW3NlYXJjaFBhcmFtcywgc2V0U2VhcmNoUGFyYW1zXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gaW5pdGlhbGl6ZXIuXG4gKlxuICogVGhpcyBpcyBpZGVudGljYWwgdG8gYG5ldyBVUkxTZWFyY2hQYXJhbXMoaW5pdClgIGV4Y2VwdCBpdCBhbHNvXG4gKiBzdXBwb3J0cyBhcnJheXMgYXMgdmFsdWVzIGluIHRoZSBvYmplY3QgZm9ybSBvZiB0aGUgaW5pdGlhbGl6ZXJcbiAqIGluc3RlYWQgb2YganVzdCBzdHJpbmdzLiBUaGlzIGlzIGNvbnZlbmllbnQgd2hlbiB5b3UgbmVlZCBtdWx0aXBsZVxuICogdmFsdWVzIGZvciBhIGdpdmVuIGtleSwgYnV0IGRvbid0IHdhbnQgdG8gdXNlIGFuIGFycmF5IGluaXRpYWxpemVyLlxuICpcbiAqIEZvciBleGFtcGxlLCBpbnN0ZWFkIG9mOlxuICpcbiAqICAgbGV0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoW1xuICogICAgIFsnc29ydCcsICduYW1lJ10sXG4gKiAgICAgWydzb3J0JywgJ3ByaWNlJ11cbiAqICAgXSk7XG4gKlxuICogeW91IGNhbiBkbzpcbiAqXG4gKiAgIGxldCBzZWFyY2hQYXJhbXMgPSBjcmVhdGVTZWFyY2hQYXJhbXMoe1xuICogICAgIHNvcnQ6IFsnbmFtZScsICdwcmljZSddXG4gKiAgIH0pO1xuICovXG5mdW5jdGlvbiBjcmVhdGVTZWFyY2hQYXJhbXMoaW5pdCkge1xuICBpZiAoaW5pdCA9PT0gdm9pZCAwKSB7XG4gICAgaW5pdCA9IFwiXCI7XG4gIH1cblxuICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyh0eXBlb2YgaW5pdCA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KGluaXQpIHx8IGluaXQgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMgPyBpbml0IDogT2JqZWN0LmtleXMoaW5pdCkucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcbiAgICBsZXQgdmFsdWUgPSBpbml0W2tleV07XG4gICAgcmV0dXJuIG1lbW8uY29uY2F0KEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKHYgPT4gW2tleSwgdl0pIDogW1trZXksIHZhbHVlXV0pO1xuICB9LCBbXSkpO1xufVxuXG5leHBvcnQgeyBCcm93c2VyUm91dGVyLCBIYXNoUm91dGVyLCBMaW5rLCBOYXZMaW5rLCBjcmVhdGVTZWFyY2hQYXJhbXMsIEhpc3RvcnlSb3V0ZXIgYXMgdW5zdGFibGVfSGlzdG9yeVJvdXRlciwgdXNlTGlua0NsaWNrSGFuZGxlciwgdXNlU2VhcmNoUGFyYW1zIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsIlwidXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciB0LGU9cmVxdWlyZShcInJlYWN0XCIpLHI9KHQ9ZSkmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZcImRlZmF1bHRcImluIHQ/dC5kZWZhdWx0OnQsbj1yZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTtmdW5jdGlvbiBvKCl7bz1mdW5jdGlvbigpe3JldHVybiB0fTt2YXIgdD17fSxlPU9iamVjdC5wcm90b3R5cGUscj1lLmhhc093blByb3BlcnR5LG49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPW4uaXRlcmF0b3J8fFwiQEBpdGVyYXRvclwiLGE9bi5hc3luY0l0ZXJhdG9yfHxcIkBAYXN5bmNJdGVyYXRvclwiLGM9bi50b1N0cmluZ1RhZ3x8XCJAQHRvU3RyaW5nVGFnXCI7ZnVuY3Rpb24gdSh0LGUscil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSx0W2VdfXRyeXt1KHt9LFwiXCIpfWNhdGNoKHQpe3U9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0W2VdPXJ9fWZ1bmN0aW9uIGYodCxlLHIsbil7dmFyIG89T2JqZWN0LmNyZWF0ZSgoZSYmZS5wcm90b3R5cGUgaW5zdGFuY2VvZiBoP2U6aCkucHJvdG90eXBlKSxpPW5ldyBPKG58fFtdKTtyZXR1cm4gby5faW52b2tlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1cInN1c3BlbmRlZFN0YXJ0XCI7cmV0dXJuIGZ1bmN0aW9uKG8saSl7aWYoXCJleGVjdXRpbmdcIj09PW4pdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtpZihcImNvbXBsZXRlZFwiPT09bil7aWYoXCJ0aHJvd1wiPT09byl0aHJvdyBpO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKHIubWV0aG9kPW8sci5hcmc9aTs7KXt2YXIgYT1yLmRlbGVnYXRlO2lmKGEpe3ZhciBjPWIoYSxyKTtpZihjKXtpZihjPT09bCljb250aW51ZTtyZXR1cm4gY319aWYoXCJuZXh0XCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKFwidGhyb3dcIj09PXIubWV0aG9kKXtpZihcInN1c3BlbmRlZFN0YXJ0XCI9PT1uKXRocm93IG49XCJjb21wbGV0ZWRcIixyLmFyZztyLmRpc3BhdGNoRXhjZXB0aW9uKHIuYXJnKX1lbHNlXCJyZXR1cm5cIj09PXIubWV0aG9kJiZyLmFicnVwdChcInJldHVyblwiLHIuYXJnKTtuPVwiZXhlY3V0aW5nXCI7dmFyIHU9cyh0LGUscik7aWYoXCJub3JtYWxcIj09PXUudHlwZSl7aWYobj1yLmRvbmU/XCJjb21wbGV0ZWRcIjpcInN1c3BlbmRlZFlpZWxkXCIsdS5hcmc9PT1sKWNvbnRpbnVlO3JldHVybnt2YWx1ZTp1LmFyZyxkb25lOnIuZG9uZX19XCJ0aHJvd1wiPT09dS50eXBlJiYobj1cImNvbXBsZXRlZFwiLHIubWV0aG9kPVwidGhyb3dcIixyLmFyZz11LmFyZyl9fX0odCxyLGkpLG99ZnVuY3Rpb24gcyh0LGUscil7dHJ5e3JldHVybnt0eXBlOlwibm9ybWFsXCIsYXJnOnQuY2FsbChlLHIpfX1jYXRjaCh0KXtyZXR1cm57dHlwZTpcInRocm93XCIsYXJnOnR9fX10LndyYXA9Zjt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gcCgpe312YXIgZD17fTt1KGQsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2YsbT15JiZ5KHkoXyhbXSkpKTttJiZtIT09ZSYmci5jYWxsKG0saSkmJihkPW0pO3ZhciBnPXAucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZCk7ZnVuY3Rpb24gdyh0KXtbXCJuZXh0XCIsXCJ0aHJvd1wiLFwicmV0dXJuXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3UodCxlLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9KSl9KSl9ZnVuY3Rpb24geCh0LGUpe3ZhciBuO3RoaXMuX2ludm9rZT1mdW5jdGlvbihvLGkpe2Z1bmN0aW9uIGEoKXtyZXR1cm4gbmV3IGUoKGZ1bmN0aW9uKG4sYSl7IWZ1bmN0aW9uIG4obyxpLGEsYyl7dmFyIHU9cyh0W29dLHQsaSk7aWYoXCJ0aHJvd1wiIT09dS50eXBlKXt2YXIgZj11LmFyZyxsPWYudmFsdWU7cmV0dXJuIGwmJlwib2JqZWN0XCI9PXR5cGVvZiBsJiZyLmNhbGwobCxcIl9fYXdhaXRcIik/ZS5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24odCl7bihcIm5leHRcIix0LGEsYyl9KSwoZnVuY3Rpb24odCl7bihcInRocm93XCIsdCxhLGMpfSkpOmUucmVzb2x2ZShsKS50aGVuKChmdW5jdGlvbih0KXtmLnZhbHVlPXQsYShmKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbihcInRocm93XCIsdCxhLGMpfSkpfWModS5hcmcpfShvLGksbixhKX0pKX1yZXR1cm4gbj1uP24udGhlbihhLGEpOmEoKX19ZnVuY3Rpb24gYih0LGUpe3ZhciByPXQuaXRlcmF0b3JbZS5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKGUuZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT1lLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihlLm1ldGhvZD1cInJldHVyblwiLGUuYXJnPXZvaWQgMCxiKHQsZSksXCJ0aHJvd1wiPT09ZS5tZXRob2QpKXJldHVybiBsO2UubWV0aG9kPVwidGhyb3dcIixlLmFyZz1uZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKX1yZXR1cm4gbH12YXIgbj1zKHIsdC5pdGVyYXRvcixlLmFyZyk7aWYoXCJ0aHJvd1wiPT09bi50eXBlKXJldHVybiBlLm1ldGhvZD1cInRocm93XCIsZS5hcmc9bi5hcmcsZS5kZWxlZ2F0ZT1udWxsLGw7dmFyIG89bi5hcmc7cmV0dXJuIG8/by5kb25lPyhlW3QucmVzdWx0TmFtZV09by52YWx1ZSxlLm5leHQ9dC5uZXh0TG9jLFwicmV0dXJuXCIhPT1lLm1ldGhvZCYmKGUubWV0aG9kPVwibmV4dFwiLGUuYXJnPXZvaWQgMCksZS5kZWxlZ2F0ZT1udWxsLGwpOm86KGUubWV0aG9kPVwidGhyb3dcIixlLmFyZz1uZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIiksZS5kZWxlZ2F0ZT1udWxsLGwpfWZ1bmN0aW9uIEUodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gTCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT1cIm5vcm1hbFwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBPKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzpcInJvb3RcIn1dLHQuZm9yRWFjaChFLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIF8odCl7aWYodCl7dmFyIGU9dFtpXTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciBuPS0xLG89ZnVuY3Rpb24gZSgpe2Zvcig7KytuPHQubGVuZ3RoOylpZihyLmNhbGwodCxuKSlyZXR1cm4gZS52YWx1ZT10W25dLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXZvaWQgMCxlLmRvbmU9ITAsZX07cmV0dXJuIG8ubmV4dD1vfX1yZXR1cm57bmV4dDpqfX1mdW5jdGlvbiBqKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gdi5wcm90b3R5cGU9cCx1KGcsXCJjb25zdHJ1Y3RvclwiLHApLHUocCxcImNvbnN0cnVjdG9yXCIsdiksdi5kaXNwbGF5TmFtZT11KHAsYyxcIkdlbmVyYXRvckZ1bmN0aW9uXCIpLHQuaXNHZW5lcmF0b3JGdW5jdGlvbj1mdW5jdGlvbih0KXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yO3JldHVybiEhZSYmKGU9PT12fHxcIkdlbmVyYXRvckZ1bmN0aW9uXCI9PT0oZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSl9LHQubWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LHApOih0Ll9fcHJvdG9fXz1wLHUodCxjLFwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZyksdH0sdC5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sdyh4LnByb3RvdHlwZSksdSh4LnByb3RvdHlwZSxhLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHQuQXN5bmNJdGVyYXRvcj14LHQuYXN5bmM9ZnVuY3Rpb24oZSxyLG4sbyxpKXt2b2lkIDA9PT1pJiYoaT1Qcm9taXNlKTt2YXIgYT1uZXcgeChmKGUscixuLG8pLGkpO3JldHVybiB0LmlzR2VuZXJhdG9yRnVuY3Rpb24ocik/YTphLm5leHQoKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6YS5uZXh0KCl9KSl9LHcoZyksdShnLGMsXCJHZW5lcmF0b3JcIiksdShnLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShnLFwidG9TdHJpbmdcIiwoZnVuY3Rpb24oKXtyZXR1cm5cIltvYmplY3QgR2VuZXJhdG9yXVwifSkpLHQua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2gocik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIHIoKXtmb3IoO2UubGVuZ3RoOyl7dmFyIG49ZS5wb3AoKTtpZihuIGluIHQpcmV0dXJuIHIudmFsdWU9bixyLmRvbmU9ITEscn1yZXR1cm4gci5kb25lPSEwLHJ9fSx0LnZhbHVlcz1fLE8ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpPLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChMKSwhdClmb3IodmFyIGUgaW4gdGhpcylcInRcIj09PWUuY2hhckF0KDApJiZyLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgdD10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZihcInRocm93XCI9PT10LnR5cGUpdGhyb3cgdC5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7aWYodGhpcy5kb25lKXRocm93IHQ7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHIsbil7cmV0dXJuIGEudHlwZT1cInRocm93XCIsYS5hcmc9dCxlLm5leHQ9cixuJiYoZS5tZXRob2Q9XCJuZXh0XCIsZS5hcmc9dm9pZCAwKSwhIW59Zm9yKHZhciBvPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtvPj0wOy0tbyl7dmFyIGk9dGhpcy50cnlFbnRyaWVzW29dLGE9aS5jb21wbGV0aW9uO2lmKFwicm9vdFwiPT09aS50cnlMb2MpcmV0dXJuIG4oXCJlbmRcIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIGM9ci5jYWxsKGksXCJjYXRjaExvY1wiKSx1PXIuY2FsbChpLFwiZmluYWxseUxvY1wiKTtpZihjJiZ1KXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZihjKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCF1KXRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIG89dGhpcy50cnlFbnRyaWVzW25dO2lmKG8udHJ5TG9jPD10aGlzLnByZXYmJnIuY2FsbChvLFwiZmluYWxseUxvY1wiKSYmdGhpcy5wcmV2PG8uZmluYWxseUxvYyl7dmFyIGk9bzticmVha319aSYmKFwiYnJlYWtcIj09PXR8fFwiY29udGludWVcIj09PXQpJiZpLnRyeUxvYzw9ZSYmZTw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPXQsYS5hcmc9ZSxpPyh0aGlzLm1ldGhvZD1cIm5leHRcIix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLGwpOnRoaXMuY29tcGxldGUoYSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsZSl7aWYoXCJ0aHJvd1wiPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVyblwiYnJlYWtcIj09PXQudHlwZXx8XCJjb250aW51ZVwiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzpcInJldHVyblwiPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9XCJyZXR1cm5cIix0aGlzLm5leHQ9XCJlbmRcIik6XCJub3JtYWxcIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKSxsfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEwociksbH19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLnRyeUxvYz09PXQpe3ZhciBuPXIuY29tcGxldGlvbjtpZihcInRocm93XCI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO0wocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOl8odCkscmVzdWx0TmFtZTplLG5leHRMb2M6cn0sXCJuZXh0XCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXZvaWQgMCksbH19LHR9ZnVuY3Rpb24gaSh0LGUscixuLG8saSxhKXt0cnl7dmFyIGM9dFtpXShhKSx1PWMudmFsdWV9Y2F0Y2godCl7cmV0dXJuIHZvaWQgcih0KX1jLmRvbmU/ZSh1KTpQcm9taXNlLnJlc29sdmUodSkudGhlbihuLG8pfWZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7dmFyIGE9dC5hcHBseShlLHIpO2Z1bmN0aW9uIGModCl7aShhLG4sbyxjLHUsXCJuZXh0XCIsdCl9ZnVuY3Rpb24gdSh0KXtpKGEsbixvLGMsdSxcInRocm93XCIsdCl9Yyh2b2lkIDApfSkpfX1mdW5jdGlvbiBjKCl7cmV0dXJuKGM9T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgcj1hcmd1bWVudHNbZV07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJih0W25dPXJbbl0pfXJldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciB1PXIuY3JlYXRlQ29udGV4dChudWxsKSxmPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY2hpbGRyZW4sbz1lLnVzZVN0YXRlKCExKTtyZXR1cm4gci5jcmVhdGVFbGVtZW50KHUuUHJvdmlkZXIse3ZhbHVlOntyZXNvbHZlOm9bMF0sc2V0UmVzb2x2ZTpvWzFdfX0sbil9LHM9ZnVuY3Rpb24oKXt9LGw9e2lzQWN0aXZlOiExLHByb2NlZWQ6cyxjYW5jZWw6c30saD1mdW5jdGlvbih0KXt2YXIgaT10LndoZW4sZj10LmNoaWxkcmVuLHM9ZnVuY3Rpb24odCl7dmFyIHI9ZS51c2VTdGF0ZShsKSxuPXJbMF0saT1yWzFdLGY9KGUudXNlQ29udGV4dCh1KXx8e30pLnNldFJlc29sdmU7ZS51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNBY3RpdmUmJih3aW5kb3cub25iZWZvcmV1bmxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0pLGZ1bmN0aW9uKCl7bi5pc0FjdGl2ZSYmKHdpbmRvdy5vbmJlZm9yZXVubG9hZD1udWxsKX19KSxbbl0pO3ZhciBzPWUudXNlQ2FsbGJhY2soKGZ1bmN0aW9uKCl7aShsKX0pLFtdKSxoPWUudXNlQ2FsbGJhY2soZnVuY3Rpb24oKXt2YXIgZT1hKG8oKS5tYXJrKChmdW5jdGlvbiBlKHIpe3ZhciB1O3JldHVybiBvKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9bmV3IFByb21pc2UoZnVuY3Rpb24oKXt2YXIgZT1hKG8oKS5tYXJrKChmdW5jdGlvbiBlKG4sYSl7cmV0dXJuIG8oKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihpKChmdW5jdGlvbih0KXtyZXR1cm4gYyh7fSx0LHtpc0FjdGl2ZTohMCxwcm9jZWVkOm4sY2FuY2VsOmF9KX0pKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXtlLm5leHQ9NjticmVha31yZXR1cm4gZS5uZXh0PTQsdChyLmxvY2F0aW9uLHIuYWN0aW9uKTtjYXNlIDQ6ZS5zZW50fHxuKCEwKTtjYXNlIDY6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKSxlLmFicnVwdChcInJldHVyblwiLHUudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09Znx8ZighMCksaShjKHt9LG4se2lzQWN0aXZlOiExfSkpLCEwfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGkoYyh7fSxuLHtpc0FjdGl2ZTohMX0pKSxudWxsPT1mfHxmKCExKSwhMX0pKSk7Y2FzZSAyOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksW24sZix0XSk7cmV0dXJuIGMoe30sbix7b25Db25maXJtOmgscmVzZXRDb25maXJtYXRpb246c30pfShpKSxoPXMub25Db25maXJtLHY9cy5yZXNldENvbmZpcm1hdGlvbixwPXMuaXNBY3RpdmUsZD1zLnByb2NlZWQseT1zLmNhbmNlbCxtPShlLnVzZUNvbnRleHQodSl8fHt9KS5yZXNvbHZlO3JldHVybiBmdW5jdGlvbih0LHIpe3ZvaWQgMD09PXImJihyPSEwKTt2YXIgbz1lLnVzZUNvbnRleHQobi5VTlNBRkVfTmF2aWdhdGlvbkNvbnRleHQpLm5hdmlnYXRvcjtlLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtpZihyKXt2YXIgZT1vLmJsb2NrKChmdW5jdGlvbihyKXt2YXIgbj1jKHt9LHIse3JldHJ5OmZ1bmN0aW9uKCl7ZSgpLHIucmV0cnkoKX19KTt0KG4pfSkpO3JldHVybiBlfX0pLFtvLHQscl0pfShlLnVzZUNhbGxiYWNrKGZ1bmN0aW9uKCl7dmFyIHQ9YShvKCkubWFyaygoZnVuY3Rpb24gdChlKXtyZXR1cm4gbygpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixoKGUpO2Nhc2UgMjp0LnNlbnQmJih2KCksZS5yZXRyeSgpKTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxbdixoXSksaSYmIW0pLHIuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwsZih7aXNBY3RpdmU6cCxvbkNvbmZpcm06ZCxvbkNhbmNlbDp5fSkpfTtleHBvcnRzLmRlZmF1bHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHIuY3JlYXRlRWxlbWVudChmLG51bGwsci5jcmVhdGVFbGVtZW50KGgsT2JqZWN0LmFzc2lnbih7fSx0KSkpfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LXJvdXRlci1wcm9tcHQuY2pzLnByb2R1Y3Rpb24ubWluLmpzLm1hcFxuIiwiXG4ndXNlIHN0cmljdCdcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3JlYWN0LXJvdXRlci1wcm9tcHQuY2pzLnByb2R1Y3Rpb24ubWluLmpzJylcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9yZWFjdC1yb3V0ZXItcHJvbXB0LmNqcy5kZXZlbG9wbWVudC5qcycpXG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiB1c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZT1yZXF1aXJlKFwicmVhY3RcIik7ZnVuY3Rpb24gaChhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIGs9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6aCxsPWUudXNlU3RhdGUsbT1lLnVzZUVmZmVjdCxuPWUudXNlTGF5b3V0RWZmZWN0LHA9ZS51c2VEZWJ1Z1ZhbHVlO2Z1bmN0aW9uIHEoYSxiKXt2YXIgZD1iKCksZj1sKHtpbnN0Ont2YWx1ZTpkLGdldFNuYXBzaG90OmJ9fSksYz1mWzBdLmluc3QsZz1mWzFdO24oZnVuY3Rpb24oKXtjLnZhbHVlPWQ7Yy5nZXRTbmFwc2hvdD1iO3IoYykmJmcoe2luc3Q6Y30pfSxbYSxkLGJdKTttKGZ1bmN0aW9uKCl7cihjKSYmZyh7aW5zdDpjfSk7cmV0dXJuIGEoZnVuY3Rpb24oKXtyKGMpJiZnKHtpbnN0OmN9KX0pfSxbYV0pO3AoZCk7cmV0dXJuIGR9XG5mdW5jdGlvbiByKGEpe3ZhciBiPWEuZ2V0U25hcHNob3Q7YT1hLnZhbHVlO3RyeXt2YXIgZD1iKCk7cmV0dXJuIWsoYSxkKX1jYXRjaChmKXtyZXR1cm4hMH19ZnVuY3Rpb24gdChhLGIpe3JldHVybiBiKCl9dmFyIHU9XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50P3Q6cTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPXZvaWQgMCE9PWUudXNlU3luY0V4dGVybmFsU3RvcmU/ZS51c2VTeW5jRXh0ZXJuYWxTdG9yZTp1O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiB1c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltL3dpdGgtc2VsZWN0b3IucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBoPXJlcXVpcmUoXCJyZWFjdFwiKSxuPXJlcXVpcmUoXCJ1c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltXCIpO2Z1bmN0aW9uIHAoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBxPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOnAscj1uLnVzZVN5bmNFeHRlcm5hbFN0b3JlLHQ9aC51c2VSZWYsdT1oLnVzZUVmZmVjdCx2PWgudXNlTWVtbyx3PWgudXNlRGVidWdWYWx1ZTtcbmV4cG9ydHMudXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3I9ZnVuY3Rpb24oYSxiLGUsbCxnKXt2YXIgYz10KG51bGwpO2lmKG51bGw9PT1jLmN1cnJlbnQpe3ZhciBmPXtoYXNWYWx1ZTohMSx2YWx1ZTpudWxsfTtjLmN1cnJlbnQ9Zn1lbHNlIGY9Yy5jdXJyZW50O2M9dihmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7aWYoIWMpe2M9ITA7ZD1hO2E9bChhKTtpZih2b2lkIDAhPT1nJiZmLmhhc1ZhbHVlKXt2YXIgYj1mLnZhbHVlO2lmKGcoYixhKSlyZXR1cm4gaz1ifXJldHVybiBrPWF9Yj1rO2lmKHEoZCxhKSlyZXR1cm4gYjt2YXIgZT1sKGEpO2lmKHZvaWQgMCE9PWcmJmcoYixlKSlyZXR1cm4gYjtkPWE7cmV0dXJuIGs9ZX12YXIgYz0hMSxkLGssbT12b2lkIDA9PT1lP251bGw6ZTtyZXR1cm5bZnVuY3Rpb24oKXtyZXR1cm4gYShiKCkpfSxudWxsPT09bT92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gYShtKCkpfV19LFtiLGUsbCxnXSk7dmFyIGQ9cihhLGNbMF0sY1sxXSk7XG51KGZ1bmN0aW9uKCl7Zi5oYXNWYWx1ZT0hMDtmLnZhbHVlPWR9LFtkXSk7dyhkKTtyZXR1cm4gZH07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0vd2l0aC1zZWxlY3Rvci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvLyBEZWZhdWx0IHRvIGEgZHVtbXkgXCJiYXRjaFwiIGltcGxlbWVudGF0aW9uIHRoYXQganVzdCBydW5zIHRoZSBjYWxsYmFja1xuZnVuY3Rpb24gZGVmYXVsdE5vb3BCYXRjaChjYWxsYmFjaykge1xuICBjYWxsYmFjaygpO1xufVxuXG5sZXQgYmF0Y2ggPSBkZWZhdWx0Tm9vcEJhdGNoOyAvLyBBbGxvdyBpbmplY3RpbmcgYW5vdGhlciBiYXRjaGluZyBmdW5jdGlvbiBsYXRlclxuXG5leHBvcnQgY29uc3Qgc2V0QmF0Y2ggPSBuZXdCYXRjaCA9PiBiYXRjaCA9IG5ld0JhdGNoOyAvLyBTdXBwbHkgYSBnZXR0ZXIganVzdCB0byBza2lwIGRlYWxpbmcgd2l0aCBFU00gYmluZGluZ3NcblxuZXhwb3J0IGNvbnN0IGdldEJhdGNoID0gKCkgPT4gYmF0Y2g7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjb25zdCBSZWFjdFJlZHV4Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBSZWFjdFJlZHV4Q29udGV4dC5kaXNwbGF5TmFtZSA9ICdSZWFjdFJlZHV4Jztcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVhY3RSZWR1eENvbnRleHQ7IiwiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcblxuLyoqXHJcbiAqIEEgaG9vayB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgLiBUaGlzIGlzIGEgbG93LWxldmVsXHJcbiAqIGhvb2sgdGhhdCB5b3Ugc2hvdWxkIHVzdWFsbHkgbm90IG5lZWQgdG8gY2FsbCBkaXJlY3RseS5cclxuICpcclxuICogQHJldHVybnMge2FueX0gdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuICogaW1wb3J0IHsgdXNlUmVkdXhDb250ZXh0IH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyQ29tcG9uZW50ID0gKCkgPT4ge1xyXG4gKiAgIGNvbnN0IHsgc3RvcmUgfSA9IHVzZVJlZHV4Q29udGV4dCgpXHJcbiAqICAgcmV0dXJuIDxkaXY+e3N0b3JlLmdldFN0YXRlKCl9PC9kaXY+XHJcbiAqIH1cclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdXhDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VDb250ZXh0KFJlYWN0UmVkdXhDb250ZXh0KTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29udGV4dFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCByZWFjdC1yZWR1eCBjb250ZXh0IHZhbHVlOyBwbGVhc2UgZW5zdXJlIHRoZSBjb21wb25lbnQgaXMgd3JhcHBlZCBpbiBhIDxQcm92aWRlcj4nKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0VmFsdWU7XG59IiwiZXhwb3J0IGNvbnN0IG5vdEluaXRpYWxpemVkID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3VTRVMgbm90IGluaXRpYWxpemVkIScpO1xufTsiLCJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VEZWJ1Z1ZhbHVlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUmVkdXhDb250ZXh0IGFzIHVzZURlZmF1bHRSZWR1eENvbnRleHQgfSBmcm9tICcuL3VzZVJlZHV4Q29udGV4dCc7XG5pbXBvcnQgeyBSZWFjdFJlZHV4Q29udGV4dCB9IGZyb20gJy4uL2NvbXBvbmVudHMvQ29udGV4dCc7XG5pbXBvcnQgeyBub3RJbml0aWFsaXplZCB9IGZyb20gJy4uL3V0aWxzL3VzZVN5bmNFeHRlcm5hbFN0b3JlJztcbmxldCB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciA9IG5vdEluaXRpYWxpemVkO1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVVc2VTZWxlY3RvciA9IGZuID0+IHtcbiAgdXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3IgPSBmbjtcbn07XG5cbmNvbnN0IHJlZkVxdWFsaXR5ID0gKGEsIGIpID0+IGEgPT09IGI7XG4vKipcclxuICogSG9vayBmYWN0b3J5LCB3aGljaCBjcmVhdGVzIGEgYHVzZVNlbGVjdG9yYCBob29rIGJvdW5kIHRvIGEgZ2l2ZW4gY29udGV4dC5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdC5Db250ZXh0fSBbY29udGV4dD1SZWFjdFJlZHV4Q29udGV4dF0gQ29udGV4dCBwYXNzZWQgdG8geW91ciBgPFByb3ZpZGVyPmAuXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBgdXNlU2VsZWN0b3JgIGhvb2sgYm91bmQgdG8gdGhlIHNwZWNpZmllZCBjb250ZXh0LlxyXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3JIb29rKGNvbnRleHQgPSBSZWFjdFJlZHV4Q29udGV4dCkge1xuICBjb25zdCB1c2VSZWR1eENvbnRleHQgPSBjb250ZXh0ID09PSBSZWFjdFJlZHV4Q29udGV4dCA/IHVzZURlZmF1bHRSZWR1eENvbnRleHQgOiAoKSA9PiB1c2VDb250ZXh0KGNvbnRleHQpO1xuICByZXR1cm4gZnVuY3Rpb24gdXNlU2VsZWN0b3Ioc2VsZWN0b3IsIGVxdWFsaXR5Rm4gPSByZWZFcXVhbGl0eSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIHNlbGVjdG9yIHRvIHVzZVNlbGVjdG9yYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgYSBzZWxlY3RvciB0byB1c2VTZWxlY3RvcmApO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGVxdWFsaXR5Rm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgZnVuY3Rpb24gYXMgYW4gZXF1YWxpdHkgZnVuY3Rpb24gdG8gdXNlU2VsZWN0b3JgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBzdG9yZSxcbiAgICAgIHN1YnNjcmlwdGlvbixcbiAgICAgIGdldFNlcnZlclN0YXRlXG4gICAgfSA9IHVzZVJlZHV4Q29udGV4dCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkU3RhdGUgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvcihzdWJzY3JpcHRpb24uYWRkTmVzdGVkU3ViLCBzdG9yZS5nZXRTdGF0ZSwgZ2V0U2VydmVyU3RhdGUgfHwgc3RvcmUuZ2V0U3RhdGUsIHNlbGVjdG9yLCBlcXVhbGl0eUZuKTtcbiAgICB1c2VEZWJ1Z1ZhbHVlKHNlbGVjdGVkU3RhdGUpO1xuICAgIHJldHVybiBzZWxlY3RlZFN0YXRlO1xuICB9O1xufVxuLyoqXHJcbiAqIEEgaG9vayB0byBhY2Nlc3MgdGhlIHJlZHV4IHN0b3JlJ3Mgc3RhdGUuIFRoaXMgaG9vayB0YWtlcyBhIHNlbGVjdG9yIGZ1bmN0aW9uXHJcbiAqIGFzIGFuIGFyZ3VtZW50LiBUaGUgc2VsZWN0b3IgaXMgY2FsbGVkIHdpdGggdGhlIHN0b3JlIHN0YXRlLlxyXG4gKlxyXG4gKiBUaGlzIGhvb2sgdGFrZXMgYW4gb3B0aW9uYWwgZXF1YWxpdHkgY29tcGFyaXNvbiBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlclxyXG4gKiB0aGF0IGFsbG93cyB5b3UgdG8gY3VzdG9taXplIHRoZSB3YXkgdGhlIHNlbGVjdGVkIHN0YXRlIGlzIGNvbXBhcmVkIHRvIGRldGVybWluZVxyXG4gKiB3aGV0aGVyIHRoZSBjb21wb25lbnQgbmVlZHMgdG8gYmUgcmUtcmVuZGVyZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHNlbGVjdG9yIHRoZSBzZWxlY3RvciBmdW5jdGlvblxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9uPX0gZXF1YWxpdHlGbiB0aGUgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGVxdWFsaXR5XHJcbiAqXHJcbiAqIEByZXR1cm5zIHthbnl9IHRoZSBzZWxlY3RlZCBzdGF0ZVxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiBpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcbiAqIGltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyQ29tcG9uZW50ID0gKCkgPT4ge1xyXG4gKiAgIGNvbnN0IGNvdW50ZXIgPSB1c2VTZWxlY3RvcihzdGF0ZSA9PiBzdGF0ZS5jb3VudGVyKVxyXG4gKiAgIHJldHVybiA8ZGl2Pntjb3VudGVyfTwvZGl2PlxyXG4gKiB9XHJcbiAqL1xuXG5leHBvcnQgY29uc3QgdXNlU2VsZWN0b3IgPSAvKiNfX1BVUkVfXyovY3JlYXRlU2VsZWN0b3JIb29rKCk7IiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGI9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksYz1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLGQ9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLGU9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLGY9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLGc9U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLGg9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksaz1TeW1ib2wuZm9yKFwicmVhY3Quc2VydmVyX2NvbnRleHRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksbT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksbj1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxwPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLHE9U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksdD1TeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpLHU7dT1TeW1ib2wuZm9yKFwicmVhY3QubW9kdWxlLnJlZmVyZW5jZVwiKTtcbmZ1bmN0aW9uIHYoYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHI9YS4kJHR5cGVvZjtzd2l0Y2gocil7Y2FzZSBiOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGQ6Y2FzZSBmOmNhc2UgZTpjYXNlIG06Y2FzZSBuOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBoOmNhc2UgbDpjYXNlIHE6Y2FzZSBwOmNhc2UgZzpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiByfX1jYXNlIGM6cmV0dXJuIHJ9fX1leHBvcnRzLkNvbnRleHRDb25zdW1lcj1oO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWc7ZXhwb3J0cy5FbGVtZW50PWI7ZXhwb3J0cy5Gb3J3YXJkUmVmPWw7ZXhwb3J0cy5GcmFnbWVudD1kO2V4cG9ydHMuTGF6eT1xO2V4cG9ydHMuTWVtbz1wO2V4cG9ydHMuUG9ydGFsPWM7ZXhwb3J0cy5Qcm9maWxlcj1mO2V4cG9ydHMuU3RyaWN0TW9kZT1lO2V4cG9ydHMuU3VzcGVuc2U9bTtcbmV4cG9ydHMuU3VzcGVuc2VMaXN0PW47ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbigpe3JldHVybiExfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWh9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1nfTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Yn07ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1sfTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1kfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PXF9O2V4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09cH07XG5leHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09Y307ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09Zn07ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1lfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1tfTtleHBvcnRzLmlzU3VzcGVuc2VMaXN0PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bn07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZHx8YT09PWZ8fGE9PT1lfHxhPT09bXx8YT09PW58fGE9PT10fHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXF8fGEuJCR0eXBlb2Y9PT1wfHxhLiQkdHlwZW9mPT09Z3x8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1sfHxhLiQkdHlwZW9mPT09dXx8dm9pZCAwIT09YS5nZXRNb2R1bGVJZCk/ITA6ITF9O2V4cG9ydHMudHlwZU9mPXY7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsImltcG9ydCB7IGdldEJhdGNoIH0gZnJvbSAnLi9iYXRjaCc7IC8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxvZ2ljIGZvciBjb25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcbi8vIHdlbGwgYXMgbmVzdGluZyBzdWJzY3JpcHRpb25zIG9mIGRlc2NlbmRhbnQgY29tcG9uZW50cywgc28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZVxuLy8gYW5jZXN0b3IgY29tcG9uZW50cyByZS1yZW5kZXIgYmVmb3JlIGRlc2NlbmRhbnRzXG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbigpIHtcbiAgY29uc3QgYmF0Y2ggPSBnZXRCYXRjaCgpO1xuICBsZXQgZmlyc3QgPSBudWxsO1xuICBsZXQgbGFzdCA9IG51bGw7XG4gIHJldHVybiB7XG4gICAgY2xlYXIoKSB7XG4gICAgICBmaXJzdCA9IG51bGw7XG4gICAgICBsYXN0ID0gbnVsbDtcbiAgICB9LFxuXG4gICAgbm90aWZ5KCkge1xuICAgICAgYmF0Y2goKCkgPT4ge1xuICAgICAgICBsZXQgbGlzdGVuZXIgPSBmaXJzdDtcblxuICAgICAgICB3aGlsZSAobGlzdGVuZXIpIHtcbiAgICAgICAgICBsaXN0ZW5lci5jYWxsYmFjaygpO1xuICAgICAgICAgIGxpc3RlbmVyID0gbGlzdGVuZXIubmV4dDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIGdldCgpIHtcbiAgICAgIGxldCBsaXN0ZW5lcnMgPSBbXTtcbiAgICAgIGxldCBsaXN0ZW5lciA9IGZpcnN0O1xuXG4gICAgICB3aGlsZSAobGlzdGVuZXIpIHtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsaXN0ZW5lcnM7XG4gICAgfSxcblxuICAgIHN1YnNjcmliZShjYWxsYmFjaykge1xuICAgICAgbGV0IGlzU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgICBsZXQgbGlzdGVuZXIgPSBsYXN0ID0ge1xuICAgICAgICBjYWxsYmFjayxcbiAgICAgICAgbmV4dDogbnVsbCxcbiAgICAgICAgcHJldjogbGFzdFxuICAgICAgfTtcblxuICAgICAgaWYgKGxpc3RlbmVyLnByZXYpIHtcbiAgICAgICAgbGlzdGVuZXIucHJldi5uZXh0ID0gbGlzdGVuZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXJzdCA9IGxpc3RlbmVyO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICghaXNTdWJzY3JpYmVkIHx8IGZpcnN0ID09PSBudWxsKSByZXR1cm47XG4gICAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChsaXN0ZW5lci5uZXh0KSB7XG4gICAgICAgICAgbGlzdGVuZXIubmV4dC5wcmV2ID0gbGlzdGVuZXIucHJldjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsYXN0ID0gbGlzdGVuZXIucHJldjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0ZW5lci5wcmV2KSB7XG4gICAgICAgICAgbGlzdGVuZXIucHJldi5uZXh0ID0gbGlzdGVuZXIubmV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaXJzdCA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gIH07XG59XG5cbmNvbnN0IG51bGxMaXN0ZW5lcnMgPSB7XG4gIG5vdGlmeSgpIHt9LFxuXG4gIGdldDogKCkgPT4gW11cbn07XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Vic2NyaXB0aW9uKHN0b3JlLCBwYXJlbnRTdWIpIHtcbiAgbGV0IHVuc3Vic2NyaWJlO1xuICBsZXQgbGlzdGVuZXJzID0gbnVsbExpc3RlbmVycztcblxuICBmdW5jdGlvbiBhZGROZXN0ZWRTdWIobGlzdGVuZXIpIHtcbiAgICB0cnlTdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gbGlzdGVuZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cblxuICBmdW5jdGlvbiBub3RpZnlOZXN0ZWRTdWJzKCkge1xuICAgIGxpc3RlbmVycy5ub3RpZnkoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVdyYXBwZXIoKSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbi5vblN0YXRlQ2hhbmdlKSB7XG4gICAgICBzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3Vic2NyaWJlZCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih1bnN1YnNjcmliZSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cnlTdWJzY3JpYmUoKSB7XG4gICAgaWYgKCF1bnN1YnNjcmliZSkge1xuICAgICAgdW5zdWJzY3JpYmUgPSBwYXJlbnRTdWIgPyBwYXJlbnRTdWIuYWRkTmVzdGVkU3ViKGhhbmRsZUNoYW5nZVdyYXBwZXIpIDogc3RvcmUuc3Vic2NyaWJlKGhhbmRsZUNoYW5nZVdyYXBwZXIpO1xuICAgICAgbGlzdGVuZXJzID0gY3JlYXRlTGlzdGVuZXJDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJ5VW5zdWJzY3JpYmUoKSB7XG4gICAgaWYgKHVuc3Vic2NyaWJlKSB7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgdW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgICBsaXN0ZW5lcnMuY2xlYXIoKTtcbiAgICAgIGxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3Vic2NyaXB0aW9uID0ge1xuICAgIGFkZE5lc3RlZFN1YixcbiAgICBub3RpZnlOZXN0ZWRTdWJzLFxuICAgIGhhbmRsZUNoYW5nZVdyYXBwZXIsXG4gICAgaXNTdWJzY3JpYmVkLFxuICAgIHRyeVN1YnNjcmliZSxcbiAgICB0cnlVbnN1YnNjcmliZSxcbiAgICBnZXRMaXN0ZW5lcnM6ICgpID0+IGxpc3RlbmVyc1xuICB9O1xuICByZXR1cm4gc3Vic2NyaXB0aW9uO1xufSIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnOyAvLyBSZWFjdCBjdXJyZW50bHkgdGhyb3dzIGEgd2FybmluZyB3aGVuIHVzaW5nIHVzZUxheW91dEVmZmVjdCBvbiB0aGUgc2VydmVyLlxuLy8gVG8gZ2V0IGFyb3VuZCBpdCwgd2UgY2FuIGNvbmRpdGlvbmFsbHkgdXNlRWZmZWN0IG9uIHRoZSBzZXJ2ZXIgKG5vLW9wKSBhbmRcbi8vIHVzZUxheW91dEVmZmVjdCBpbiB0aGUgYnJvd3Nlci4gV2UgbmVlZCB1c2VMYXlvdXRFZmZlY3QgdG8gZW5zdXJlIHRoZSBzdG9yZVxuLy8gc3Vic2NyaXB0aW9uIGNhbGxiYWNrIGFsd2F5cyBoYXMgdGhlIHNlbGVjdG9yIGZyb20gdGhlIGxhdGVzdCByZW5kZXIgY29tbWl0XG4vLyBhdmFpbGFibGUsIG90aGVyd2lzZSBhIHN0b3JlIHVwZGF0ZSBtYXkgaGFwcGVuIGJldHdlZW4gcmVuZGVyIGFuZCB0aGUgZWZmZWN0LFxuLy8gd2hpY2ggbWF5IGNhdXNlIG1pc3NlZCB1cGRhdGVzOyB3ZSBhbHNvIG11c3QgZW5zdXJlIHRoZSBzdG9yZSBzdWJzY3JpcHRpb25cbi8vIGlzIGNyZWF0ZWQgc3luY2hyb25vdXNseSwgb3RoZXJ3aXNlIGEgc3RvcmUgdXBkYXRlIG1heSBvY2N1ciBiZWZvcmUgdGhlXG4vLyBzdWJzY3JpcHRpb24gaXMgY3JlYXRlZCBhbmQgYW4gaW5jb25zaXN0ZW50IHN0YXRlIG1heSBiZSBvYnNlcnZlZFxuLy8gTWF0Y2hlcyBsb2dpYyBpbiBSZWFjdCdzIGBzaGFyZWQvRXhlY3V0aW9uRW52aXJvbm1lbnRgIGZpbGVcblxuZXhwb3J0IGNvbnN0IGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpO1xuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPSBjYW5Vc2VET00gPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWFjdFJlZHV4Q29udGV4dCB9IGZyb20gJy4vQ29udGV4dCc7XG5pbXBvcnQgeyBjcmVhdGVTdWJzY3JpcHRpb24gfSBmcm9tICcuLi91dGlscy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4uL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QnO1xuXG5mdW5jdGlvbiBQcm92aWRlcih7XG4gIHN0b3JlLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgc2VydmVyU3RhdGVcbn0pIHtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY3JlYXRlU3Vic2NyaXB0aW9uKHN0b3JlKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RvcmUsXG4gICAgICBzdWJzY3JpcHRpb24sXG4gICAgICBnZXRTZXJ2ZXJTdGF0ZTogc2VydmVyU3RhdGUgPyAoKSA9PiBzZXJ2ZXJTdGF0ZSA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH0sIFtzdG9yZSwgc2VydmVyU3RhdGVdKTtcbiAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IHVzZU1lbW8oKCkgPT4gc3RvcmUuZ2V0U3RhdGUoKSwgW3N0b3JlXSk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHN1YnNjcmlwdGlvblxuICAgIH0gPSBjb250ZXh0VmFsdWU7XG4gICAgc3Vic2NyaXB0aW9uLm9uU3RhdGVDaGFuZ2UgPSBzdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3VicztcbiAgICBzdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cbiAgICBpZiAocHJldmlvdXNTdGF0ZSAhPT0gc3RvcmUuZ2V0U3RhdGUoKSkge1xuICAgICAgc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICBzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbY29udGV4dFZhbHVlLCBwcmV2aW91c1N0YXRlXSk7XG4gIGNvbnN0IENvbnRleHQgPSBjb250ZXh0IHx8IFJlYWN0UmVkdXhDb250ZXh0OyAvLyBAdHMtaWdub3JlICdBbnlBY3Rpb24nIGlzIGFzc2lnbmFibGUgdG8gdGhlIGNvbnN0cmFpbnQgb2YgdHlwZSAnQScsIGJ1dCAnQScgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICB9LCBjaGlsZHJlbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb3ZpZGVyOyIsImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWFjdFJlZHV4Q29udGV4dCB9IGZyb20gJy4uL2NvbXBvbmVudHMvQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VSZWR1eENvbnRleHQgYXMgdXNlRGVmYXVsdFJlZHV4Q29udGV4dCB9IGZyb20gJy4vdXNlUmVkdXhDb250ZXh0Jztcbi8qKlxyXG4gKiBIb29rIGZhY3RvcnksIHdoaWNoIGNyZWF0ZXMgYSBgdXNlU3RvcmVgIGhvb2sgYm91bmQgdG8gYSBnaXZlbiBjb250ZXh0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge1JlYWN0LkNvbnRleHR9IFtjb250ZXh0PVJlYWN0UmVkdXhDb250ZXh0XSBDb250ZXh0IHBhc3NlZCB0byB5b3VyIGA8UHJvdmlkZXI+YC5cclxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGB1c2VTdG9yZWAgaG9vayBib3VuZCB0byB0aGUgc3BlY2lmaWVkIGNvbnRleHQuXHJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RvcmVIb29rKGNvbnRleHQgPSBSZWFjdFJlZHV4Q29udGV4dCkge1xuICBjb25zdCB1c2VSZWR1eENvbnRleHQgPSAvLyBAdHMtaWdub3JlXG4gIGNvbnRleHQgPT09IFJlYWN0UmVkdXhDb250ZXh0ID8gdXNlRGVmYXVsdFJlZHV4Q29udGV4dCA6ICgpID0+IHVzZUNvbnRleHQoY29udGV4dCk7XG4gIHJldHVybiBmdW5jdGlvbiB1c2VTdG9yZSgpIHtcbiAgICBjb25zdCB7XG4gICAgICBzdG9yZVxuICAgIH0gPSB1c2VSZWR1eENvbnRleHQoKTsgLy8gQHRzLWlnbm9yZVxuXG4gICAgcmV0dXJuIHN0b3JlO1xuICB9O1xufVxuLyoqXHJcbiAqIEEgaG9vayB0byBhY2Nlc3MgdGhlIHJlZHV4IHN0b3JlLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgcmVkdXggc3RvcmVcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG4gKiBpbXBvcnQgeyB1c2VTdG9yZSB9IGZyb20gJ3JlYWN0LXJlZHV4J1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgRXhhbXBsZUNvbXBvbmVudCA9ICgpID0+IHtcclxuICogICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKClcclxuICogICByZXR1cm4gPGRpdj57c3RvcmUuZ2V0U3RhdGUoKX08L2Rpdj5cclxuICogfVxyXG4gKi9cblxuZXhwb3J0IGNvbnN0IHVzZVN0b3JlID0gLyojX19QVVJFX18qL2NyZWF0ZVN0b3JlSG9vaygpOyIsImltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcbmltcG9ydCB7IHVzZVN0b3JlIGFzIHVzZURlZmF1bHRTdG9yZSwgY3JlYXRlU3RvcmVIb29rIH0gZnJvbSAnLi91c2VTdG9yZSc7XG4vKipcclxuICogSG9vayBmYWN0b3J5LCB3aGljaCBjcmVhdGVzIGEgYHVzZURpc3BhdGNoYCBob29rIGJvdW5kIHRvIGEgZ2l2ZW4gY29udGV4dC5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdC5Db250ZXh0fSBbY29udGV4dD1SZWFjdFJlZHV4Q29udGV4dF0gQ29udGV4dCBwYXNzZWQgdG8geW91ciBgPFByb3ZpZGVyPmAuXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBgdXNlRGlzcGF0Y2hgIGhvb2sgYm91bmQgdG8gdGhlIHNwZWNpZmllZCBjb250ZXh0LlxyXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpc3BhdGNoSG9vayhjb250ZXh0ID0gUmVhY3RSZWR1eENvbnRleHQpIHtcbiAgY29uc3QgdXNlU3RvcmUgPSAvLyBAdHMtaWdub3JlXG4gIGNvbnRleHQgPT09IFJlYWN0UmVkdXhDb250ZXh0ID8gdXNlRGVmYXVsdFN0b3JlIDogY3JlYXRlU3RvcmVIb29rKGNvbnRleHQpO1xuICByZXR1cm4gZnVuY3Rpb24gdXNlRGlzcGF0Y2goKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2g7XG4gIH07XG59XG4vKipcclxuICogQSBob29rIHRvIGFjY2VzcyB0aGUgcmVkdXggYGRpc3BhdGNoYCBmdW5jdGlvbi5cclxuICpcclxuICogQHJldHVybnMge2FueXxmdW5jdGlvbn0gcmVkdXggc3RvcmUncyBgZGlzcGF0Y2hgIGZ1bmN0aW9uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xyXG4gKiBpbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgQ291bnRlckNvbXBvbmVudCA9ICh7IHZhbHVlIH0pID0+IHtcclxuICogICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKClcclxuICogICBjb25zdCBpbmNyZWFzZUNvdW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiBkaXNwYXRjaCh7IHR5cGU6ICdpbmNyZWFzZS1jb3VudGVyJyB9KSwgW10pXHJcbiAqICAgcmV0dXJuIChcclxuICogICAgIDxkaXY+XHJcbiAqICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XHJcbiAqICAgICAgIDxidXR0b24gb25DbGljaz17aW5jcmVhc2VDb3VudGVyfT5JbmNyZWFzZSBjb3VudGVyPC9idXR0b24+XHJcbiAqICAgICA8L2Rpdj5cclxuICogICApXHJcbiAqIH1cclxuICovXG5cbmV4cG9ydCBjb25zdCB1c2VEaXNwYXRjaCA9IC8qI19fUFVSRV9fKi9jcmVhdGVEaXNwYXRjaEhvb2soKTsiLCIvLyBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBhc3N1bWVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBzdGFuZGFyZCBSZWFjdERPTS9STiwgYnV0XG4vLyBvbGRlciB2ZXJzaW9ucyB0aGF0IGRvIG5vdCBpbmNsdWRlIGB1c2VTeW5jRXh0ZXJuYWxTdG9yZWAgKFJlYWN0IDE2LjkgLSAxNy54KS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhlIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGNvbXBhdCBzaGltIGlzIG5lZWRlZC5cbmltcG9ydCB7IHVzZVN5bmNFeHRlcm5hbFN0b3JlIH0gZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbSc7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9IGZyb20gJ3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvcic7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyBhcyBiYXRjaCB9IGZyb20gJy4vdXRpbHMvcmVhY3RCYXRjaGVkVXBkYXRlcyc7XG5pbXBvcnQgeyBzZXRCYXRjaCB9IGZyb20gJy4vdXRpbHMvYmF0Y2gnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZVVzZVNlbGVjdG9yIH0gZnJvbSAnLi9ob29rcy91c2VTZWxlY3Rvcic7XG5pbXBvcnQgeyBpbml0aWFsaXplQ29ubmVjdCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0JztcbmluaXRpYWxpemVVc2VTZWxlY3Rvcih1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3Rvcik7XG5pbml0aWFsaXplQ29ubmVjdCh1c2VTeW5jRXh0ZXJuYWxTdG9yZSk7IC8vIEVuYWJsZSBiYXRjaGVkIHVwZGF0ZXMgaW4gb3VyIHN1YnNjcmlwdGlvbnMgZm9yIHVzZVxuLy8gd2l0aCBzdGFuZGFyZCBSZWFjdCByZW5kZXJlcnMgKFJlYWN0RE9NLCBSZWFjdCBOYXRpdmUpXG5cbnNldEJhdGNoKGJhdGNoKTtcbmV4cG9ydCB7IGJhdGNoIH07XG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydHMnOyIsIi8qKiBFbnVtZXJhdGlvbiBkZXNjcmliaW5nIHRoZSBCYXNlIFBlcm1pc3Npb24gTGV2ZWwgZm9yIGEgQ29udGFjdCwgbm90ZTogQWRtaW4gd2lsbCBwcm9wYWdhdGUgdG8gYWxsIG90aGVyIFBlcm1pc3Npb24gTGV2ZWxzIG9uIGEgY29udGFjdC4gKi9cclxuZXhwb3J0IGVudW0gQmFzZVBlcm1pc3Npb25MZXZlbCB7XHJcbiAgICAvKiogQ3VzdG9tICovXHJcbiAgICBDdXN0b20gPSAxMDBfMDAwXzAwMSxcclxuXHJcbiAgICAvKiogTm8gQWNjZXNzICovXHJcbiAgICBcIk5vIEFjY2Vzc1wiID0gMTY0Xzk2MF8wMDAsXHJcblxyXG4gICAgLyoqIEFkbWluaXN0cmF0b3IgKi9cclxuICAgIEFkbWluaXN0cmF0b3IgPSAxNjRfOTYwXzAwMyxcclxufVxyXG4iLCIvKiogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBzdGF0ZWNvZGUgb2YgYSBDb250YWN0ICovXHJcbmV4cG9ydCBlbnVtIENvbnRhY3RTdGF0ZUNvZGUge1xyXG4gICAgLyoqIEFjdGl2ZSAqL1xyXG4gICAgQWN0aXZlID0gMCxcclxuXHJcbiAgICAvKiogSW5hY3RpdmUgKi9cclxuICAgIEluYWN0aXZlID0gMSxcclxufVxyXG4iLCIvKiogRW51bWVyYXRpb24gZGVzY3JpYmluZyBwb3J0YWwgY29udGFjdCB0eXBlcyAqL1xyXG5leHBvcnQgZW51bSBQb3J0YWxDb250YWN0VHlwZSB7XHJcbiAgICAvKiogQ29udGFjdCBpcyBhbiBpbmRpdmlkdWFsICovXHJcbiAgICBJbmRpdmlkdWFsQ29udGFjdCA9IDE2NDk2MDAwMCxcclxuXHJcbiAgICAvKiogQ29udGFjdCBpcyBhIHRlYW0gKi9cclxuICAgIFRlYW1Db250YWN0ID0gMTY0OTYwMDAxXHJcbn1cclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgQWNjb3VudHMgc2l0ZSB0eXBlICovXHJcbmV4cG9ydCBlbnVtIEFjY291bnRTaXRlVHlwZSB7XHJcbiAgICAvKiogTGVnYWwgRW50aXR5ICovXHJcbiAgICBcIkxlZ2FsIEVudGl0eVwiID0gMSxcclxuXHJcbiAgICAvKiogSGVhZCBPZmZpY2UgKi9cclxuICAgIFwiSGVhZCBPZmZpY2VcIiA9IDIsXHJcblxyXG4gICAgLyoqIFNpdGUgKi9cclxuICAgIFNpdGUgPSAzLFxyXG5cclxuICAgIC8qKiBIb21lIFdvcmtlciAqL1xyXG4gICAgXCJIb21lIFdvcmtlclwiID0gNCxcclxuXHJcbiAgICAvKiogQmlsbGluZyBPbmx5ICovXHJcbiAgICBcIkJpbGxpbmcgT25seVwiID0gNSxcclxuXHJcbiAgICAvKiogRGF0YSBDZW50cmUgKi9cclxuICAgIFwiRGF0YSBDZW50cmVcIiA9IDYsXHJcbn1cclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhdGVjb2RlIG9mIGFuIEFjY291bnQgKi9cclxuZXhwb3J0IGVudW0gQWNjb3VudFN0YXRlQ29kZSB7XHJcbiAgICAvKiogQWN0aXZlICovXHJcbiAgICBBY3RpdmUgPSAwLFxyXG4gICAgXHJcbiAgICAvKiogSW5hY3RpdmUgKi9cclxuICAgIEluYWN0aXZlID0gMSxcclxufVxyXG4iLCJpbXBvcnQgeyBBY2NvdW50U2l0ZVR5cGUgfSBmcm9tIFwiLi4vRW51bXMvQWNjb3VudFNpdGVUeXBlXCI7XHJcbmltcG9ydCB7IEFjY291bnRTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQWNjb3VudFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIi4uL01vZGVscy9BY2NvdW50XCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciB0aGUgcG9ydGFsIHVzZXIncyBBY2NvdW50LiAqL1xyXG5leHBvcnQgY29uc3QgTW9ja0FjY291bnREYXRhOiBBY2NvdW50W10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgYWNjb3VudGlkOiBcImZkN2ZiYTgyLTFkODctNGYzMS1iOTg3LTFmZjVjNTAyODkwY1wiLFxyXG4gICAgICAgIG5hbWU6IFwiVmVnZXRhYmxlIENhc3RsZVwiLFxyXG4gICAgICAgIGJpc3RlY2hfc2l0ZXR5cGU6IEFjY291bnRTaXRlVHlwZVtcIkRhdGEgQ2VudHJlXCJdLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWNjb3VudFN0YXRlQ29kZVtcIkFjdGl2ZVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWNjb3VudGlkOiBcImQwYTRkMWYxLWJhZTktMzdlMy05YjM2LWEzMWU4MDc4M2UwNVwiLFxyXG4gICAgICAgIG5hbWU6IFwiRnJ1aXQgRmFybVwiLFxyXG4gICAgICAgIGJpc3RlY2hfc2l0ZXR5cGU6IEFjY291bnRTaXRlVHlwZVtcIkhlYWQgT2ZmaWNlXCJdLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWNjb3VudFN0YXRlQ29kZVtcIkFjdGl2ZVwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWNjb3VudGlkOiBcImViNmM3OWY0LWJhMDMtNDIxMC05ZmI1LTkzOWE1ZWVmOTNmN1wiLFxyXG4gICAgICAgIG5hbWU6IFwiQXBwbGUgVmlsbGFnZVwiLFxyXG4gICAgICAgIGJpc3RlY2hfc2l0ZXR5cGU6IEFjY291bnRTaXRlVHlwZVtcIlNpdGVcIl0sXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY2NvdW50U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjY291bnRpZDogXCJjMGE0ZDFmMC1hYWU5LTQ3ZTMtOWIzNi1hMzFlODA3ODNlMDZcIixcclxuICAgICAgICBuYW1lOiBcIlRlc3QgQWNjb3VudCAyXCIsXHJcbiAgICAgICAgYmlzdGVjaF9zaXRldHlwZTogQWNjb3VudFNpdGVUeXBlW1wiTGVnYWwgRW50aXR5XCJdLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBcImUwYzA5MWI1LTg0Y2ItNDYxNy1iZWZkLWUxMDBiN2Q2ZGY3MFwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWNjb3VudFN0YXRlQ29kZVtcIkFjdGl2ZVwiXSxcclxuICAgIH0sXHJcbl07XHJcbiIsIi8qKiBFbnVtIFJlcHJlc2VudGluZyBhIFBvcnRhbCBDb250YWN0cyBDYXNlIFBlcm1pc3Npb24gbGV2ZWwgZm9yIENhc2VzIGluIHRoZWlyIExlZ2FsIEVudGl0eS4gKi9cclxuZXhwb3J0IGVudW0gQ2FzZVBlcm1pc3Npb25MZXZlbCB7XHJcbiAgICAvKiogTm8gQWNjZXNzLiAqL1xyXG4gICAgXCJObyBBY2Nlc3NcIiA9IDEwMF8wMDBfMDAwLFxyXG5cclxuICAgIC8qKiBDYXNlcyB3aGVyZSB0aGUgQ29udGFjdCBpcyB0aGUgT3duZXIuICovXHJcbiAgICBcIk93bmVkIENhc2VzXCIgPSAxMDBfMDAwXzAwMSxcclxuXHJcbiAgICAvKiogQWxsIENhc2VzIGZvciB0aGUgQ29udGFjdCdzIExlZ2FsIEVudGl0eS4gKi9cclxuICAgIFwiQWxsIENhc2VzXCIgPSAxMDBfMDAwXzAwMixcclxufVxyXG4iLCIvKiogRW51bSBSZXByZXNlbnRpbmcgYSBQb3J0YWwgQ29udGFjdHMgQ29udGFjdCBQZXJtaXNzaW9uIGxldmVsIGZvciBDb250YWN0cyBpbiB0aGVpciBMZWdhbCBFbnRpdHkuICovXHJcbmV4cG9ydCBlbnVtIENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwge1xyXG4gICAgLyoqIE5vIEFjY2Vzcy4gKi9cclxuICAgIFwiTm8gQWNjZXNzXCIgPSAxMDBfMDAwXzAwMCxcclxuXHJcbiAgICAvKiogQWxsIENvbnRhY3RzIGZvciB0aGUgQ29udGFjdCdzIExlZ2FsIEVudGl0eS4gKi9cclxuICAgIFwiQWxsIENvbnRhY3RzXCIgPSAxMDBfMDAwXzAwMixcclxufVxyXG4iLCIvKiogRW51bSBSZXByZXNlbnRpbmcgYSBQb3J0YWwgQ29udGFjdHMgT3JkZXIgUGVybWlzc2lvbiBsZXZlbCBmb3IgT3JkZXJzIGluIHRoZWlyIExlZ2FsIEVudGl0eS4gKi9cclxuZXhwb3J0IGVudW0gT3JkZXJQZXJtaXNzaW9uTGV2ZWwge1xyXG4gICAgLyoqIE5vIEFjY2Vzcy4gKi9cclxuICAgIFwiTm8gQWNjZXNzXCIgPSAxMDBfMDAwXzAwMCxcclxuXHJcbiAgICAvKiogT3JkZXJzIHdoZXJlIHRoZSBDb250YWN0IGlzIHRoZSBPd25lci4gKi9cclxuICAgIFwiT3duZWQgT3JkZXJzXCIgPSAxMDBfMDAwXzAwMSxcclxuXHJcbiAgICAvKiogQWxsIE9yZGVycyBmb3IgdGhlIENvbnRhY3QncyBMZWdhbCBFbnRpdHkuICovXHJcbiAgICBcIkFsbCBPcmRlcnNcIiA9IDEwMF8wMDBfMDAyLFxyXG59XHJcbiIsIi8qKiBFbnVtIFJlcHJlc2VudGluZyBhIFBvcnRhbCBDb250YWN0cyBJbnZvaWNlIFBlcm1pc3Npb24gbGV2ZWwgZm9yIEludm9pY2VzIGluIHRoZWlyIExlZ2FsIEVudGl0eS4gKi9cclxuZXhwb3J0IGVudW0gSW52b2ljZVBlcm1pc3Npb25MZXZlbCB7XHJcbiAgICAvKiogTm8gQWNjZXNzLiAqL1xyXG4gICAgXCJObyBBY2Nlc3NcIiA9IDEwMF8wMDBfMDAwLFxyXG5cclxuICAgIC8qKiBBbGwgSW52b2ljZXMgZm9yIHRoZSBDb250YWN0J3MgTGVnYWwgRW50aXR5LiAqL1xyXG4gICAgXCJBbGwgSW52b2ljZXNcIiA9IDEwMF8wMDBfMDAxLFxyXG59XHJcbiIsImltcG9ydCB7IENvbnRhY3RTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29udGFjdFR5cGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29udGFjdFR5cGVcIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBNb2NrQWNjb3VudERhdGEgfSBmcm9tIFwiLi9Nb2NrQWNjb3VudERhdGFcIjtcclxuaW1wb3J0IHsgQ2FzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBPcmRlclBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBJbnZvaWNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0ludm9pY2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuXHJcbi8qKiBNb2NrIGRhdGEgZm9yIENvbnRhY3RzLiAqL1xyXG5leHBvcnQgY29uc3QgTW9ja0NvbnRhY3REYXRhOiB7XHJcbiAgICB0b255U3Rhcms6IENvbnRhY3RGb3JSZXRyaWV2YWw7XHJcbiAgICB0aG9yOiBDb250YWN0Rm9yUmV0cmlldmFsO1xyXG4gICAgYnJ1Y2VCYW5uZXI6IENvbnRhY3RGb3JSZXRyaWV2YWw7XHJcbiAgICBzdGV2ZVJvZ2VyczogQ29udGFjdEZvclJldHJpZXZhbDtcclxuICAgIG5pY2tGdXJ5OiBDb250YWN0Rm9yUmV0cmlldmFsO1xyXG4gICAgc2NvdHRMYW5nOiBDb250YWN0Rm9yUmV0cmlldmFsO1xyXG4gICAgcGV0ZXJRdWlsbDogQ29udGFjdEZvclJldHJpZXZhbDtcclxuICAgIHRjaGFsbGE6IENvbnRhY3RGb3JSZXRyaWV2YWw7XHJcbiAgICBzdGVwaGVuc3RyYW5nZTogQ29udGFjdEZvclJldHJpZXZhbDtcclxuICAgIHBldGVyUGFya2VyOiBDb250YWN0Rm9yUmV0cmlldmFsO1xyXG59ID0ge1xyXG4gICAgdG9ueVN0YXJrOiB7XHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZTogUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QsXHJcbiAgICAgICAgY29udGFjdGlkOiBcImRmMWY5ZjVlLWVlN2ItNDMxNS1iMTRmLWI0NGQ1NTJiNmI2MlwiLFxyXG4gICAgICAgIGZpcnN0bmFtZTogXCJUb255XCIsXHJcbiAgICAgICAgbGFzdG5hbWU6IFwiU3RhcmtcIixcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbC5DdXN0b20sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbDogQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIkFsbCBDb250YWN0c1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIkFsbCBPcmRlcnNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiQWxsIEludm9pY2VzXCJdLFxyXG4gICAgICAgIGVtYWlsYWRkcmVzczE6IFwidG9ueUBzdGFya2luZHVzdHJpZXMuY29tXCIsXHJcbiAgICAgICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlOiBcIjIwMjItMDItMDYgMTI6MzM6MTFaXCIsXHJcbiAgICAgICAgam9idGl0bGU6IFwiQ2hpZWYgVGVjaG5vbG9neSBPZmZpY2VyXCIsXHJcbiAgICAgICAgX2Jpc3RlY2hfcHJpbWFyeXNpdGVfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdGVsZXBob25lMTogXCIwNzkwNDM5OTg4OFwiLFxyXG4gICAgICAgIG1vYmlsZXBob25lOiBudWxsLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9uczogdHJ1ZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIGFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgdGhvcjoge1xyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGU6IFBvcnRhbENvbnRhY3RUeXBlLkluZGl2aWR1YWxDb250YWN0LFxyXG4gICAgICAgIGNvbnRhY3RpZDogXCJiNjI5YThhMC1iMGY3LTRkZjItOTVlNy00NzA2ZWZlMWYwMWNcIixcclxuICAgICAgICBmaXJzdG5hbWU6IFwiVGhvclwiLFxyXG4gICAgICAgIGxhc3RuYW1lOiBcIk9kaW5zb25cIixcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbC5BZG1pbmlzdHJhdG9yLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBDYXNlc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbDogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgT3JkZXJzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbDogSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBJbnZvaWNlc1wiXSxcclxuICAgICAgICBlbWFpbGFkZHJlc3MxOiBcInBvaW50LmJyZWFrQGF2ZW5nZXJzLmNvbVwiLFxyXG4gICAgICAgIG1zZHluX3BvcnRhbHRlcm1zYWdyZWVtZW50ZGF0ZTogXCIyMDIyLTAyLTA2IDA3OjA1OjMyWlwiLFxyXG4gICAgICAgIGpvYnRpdGxlOiBcIklrZWEgU2FsZXNtYW5cIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIGFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgYnJ1Y2VCYW5uZXI6IHtcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlOiBQb3J0YWxDb250YWN0VHlwZS5JbmRpdmlkdWFsQ29udGFjdCxcclxuICAgICAgICBjb250YWN0aWQ6IFwiY2JjYTliNzQtOTYyYS00ZDg4LTlmM2EtN2YxNzNjODY0MjRkXCIsXHJcbiAgICAgICAgZmlyc3RuYW1lOiBcIkJydWNlXCIsXHJcbiAgICAgICAgbGFzdG5hbWU6IFwiQmFubmVyXCIsXHJcbiAgICAgICAgX3BhcmVudGN1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWw6IEJhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbDogQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIkFsbCBDb250YWN0c1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIkFsbCBPcmRlcnNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiQWxsIEludm9pY2VzXCJdLFxyXG4gICAgICAgIGVtYWlsYWRkcmVzczE6IFwidGVzdEBlbWFpbC5jb21cIixcclxuICAgICAgICBtc2R5bl9wb3J0YWx0ZXJtc2FncmVlbWVudGRhdGU6IFwiMjAyMi0wMi0wNiAwOToyMjo0MVpcIixcclxuICAgICAgICBqb2J0aXRsZTogXCJCaW9sb2dpc3RcIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIGFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfaXNzaG93bmlucG9ydGFsOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHN0ZXZlUm9nZXJzOiB7XHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZTogUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QsXHJcbiAgICAgICAgY29udGFjdGlkOiBcIjI0Yjk2MTAxLTJhNTEtNDk2Yy04OTY1LWVhZDVkZDg5Y2IyOVwiLFxyXG4gICAgICAgIGZpcnN0bmFtZTogXCJTdGV2ZVwiLFxyXG4gICAgICAgIGxhc3RuYW1lOiBcIlJvZ2Vyc1wiLFxyXG4gICAgICAgIF9wYXJlbnRjdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsOiBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBDYXNlc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbDogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgT3JkZXJzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbDogSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBJbnZvaWNlc1wiXSxcclxuICAgICAgICBlbWFpbGFkZHJlc3MxOiBcImNhcHNpY2xlQGF2ZW5nZXJzLmNvbVwiLFxyXG4gICAgICAgIG1zZHluX3BvcnRhbHRlcm1zYWdyZWVtZW50ZGF0ZTogXCIyMDIyLTAyLTA2IDEyOjE3OjQ4WlwiLFxyXG4gICAgICAgIGpvYnRpdGxlOiBcIldhciBWZXRlcmFuXCIsXHJcbiAgICAgICAgX2Jpc3RlY2hfcHJpbWFyeXNpdGVfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgdGVsZXBob25lMTogXCIwNzkwNDM5OTg4OFwiLFxyXG4gICAgICAgIG1vYmlsZXBob25lOiBudWxsLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlbWFqb3JpbmNpZGVudHVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXBld25vdGlmaWNhdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXNlY3VyaXR5dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBDb250YWN0U3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBhZHhfaWRlbnRpdHlfbG9nb25lbmFibGVkOiB0cnVlLFxyXG4gICAgICAgIGJpc3RlY2hfaXNzaG93bmlucG9ydGFsOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5pY2tGdXJ5OiB7XHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZTogUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QsXHJcbiAgICAgICAgY29udGFjdGlkOiBcIjdhMzJmZGY2LWNlNjktNDAzMS05ZjNjLWRjNjk3YjJlNWNjY1wiLFxyXG4gICAgICAgIF9wYXJlbnRjdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsOiBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBDYXNlc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbDogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgT3JkZXJzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbDogSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBJbnZvaWNlc1wiXSxcclxuICAgICAgICBmaXJzdG5hbWU6IFwiTmljaG9sYXNcIixcclxuICAgICAgICBsYXN0bmFtZTogXCJGdXJ5XCIsXHJcbiAgICAgICAgZW1haWxhZGRyZXNzMTogXCJmdXJ5Lm5qQHNoaWVsZC5jb21cIixcclxuICAgICAgICBtc2R5bl9wb3J0YWx0ZXJtc2FncmVlbWVudGRhdGU6IFwiMjAyMi0wNi0wMSAwOToxMzoyOVpcIixcclxuICAgICAgICBqb2J0aXRsZTogXCJTaGllbGQgRGlyZWN0b3JcIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIGFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfaXNzaG93bmlucG9ydGFsOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHNjb3R0TGFuZzoge1xyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGU6IFBvcnRhbENvbnRhY3RUeXBlLkluZGl2aWR1YWxDb250YWN0LFxyXG4gICAgICAgIGNvbnRhY3RpZDogXCI1ZTRlNjE1Mi05ODEwLTQ1NjktOTMxZC04N2JmYTc3N2EyN2FcIixcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWw6IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ2FzZXNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiQWxsIENvbnRhY3RzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWw6IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiQWxsIE9yZGVyc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWw6IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgSW52b2ljZXNcIl0sXHJcbiAgICAgICAgZmlyc3RuYW1lOiBcIlNjb3R0XCIsXHJcbiAgICAgICAgbGFzdG5hbWU6IFwiTGFuZ1wiLFxyXG4gICAgICAgIGVtYWlsYWRkcmVzczE6IFwic2NvdHRAYmFza2luLXJvYmJpbnMuY29tXCIsXHJcbiAgICAgICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlOiBcIjIwMjItMDktMjIgMTE6MzM6MTZaXCIsXHJcbiAgICAgICAgam9idGl0bGU6IFwiRG91Z2hudXQgU2FsZXNtYW5cIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIGFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgcGV0ZXJRdWlsbDoge1xyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGU6IFBvcnRhbENvbnRhY3RUeXBlLlRlYW1Db250YWN0LFxyXG4gICAgICAgIGNvbnRhY3RpZDogXCJlZGE4NGY0ZC0zNDU5LTQ0ZjYtODU3Mi1hZjY0NGU0ZWQ2MjNcIixcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWw6IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ2FzZXNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiQWxsIENvbnRhY3RzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWw6IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiQWxsIE9yZGVyc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWw6IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgSW52b2ljZXNcIl0sXHJcbiAgICAgICAgZmlyc3RuYW1lOiBudWxsLFxyXG4gICAgICAgIGxhc3RuYW1lOiBcIlBldGVyIFF1aWxsXCIsXHJcbiAgICAgICAgZW1haWxhZGRyZXNzMTogXCJzdGFybG9yZEBndWFyZGlhbnMuZ2FsXCIsXHJcbiAgICAgICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlOiBcIjIwMjItMDItMjggMTU6MjU6MTFaXCIsXHJcbiAgICAgICAgam9idGl0bGU6IFwiSW50ZXJnYWxhY3RpYyBUcmFkZXJcIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgYWR4X2lkZW50aXR5X2xvZ29uZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgdGNoYWxsYToge1xyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGU6IFBvcnRhbENvbnRhY3RUeXBlLlRlYW1Db250YWN0LFxyXG4gICAgICAgIGNvbnRhY3RpZDogXCJjNWEwNWVkNC00OGQ3LTQwNmYtYmFjMi03ZmU4Y2Q4NWFhMjhcIixcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWw6IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ2FzZXNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiQWxsIENvbnRhY3RzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWw6IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiQWxsIE9yZGVyc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWw6IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgSW52b2ljZXNcIl0sXHJcbiAgICAgICAgZmlyc3RuYW1lOiBudWxsLFxyXG4gICAgICAgIGxhc3RuYW1lOiBcIktpbmcgVCdDaGFsbGFcIixcclxuICAgICAgICBlbWFpbGFkZHJlc3MxOiBcImJsYWNrLnBhbnRoZXJAd2FrYW5kZXIuZm9yZXZlclwiLFxyXG4gICAgICAgIG1zZHluX3BvcnRhbHRlcm1zYWdyZWVtZW50ZGF0ZTogXCIyMDIyLTAyLTEyIDA5OjMxOjI0WlwiLFxyXG4gICAgICAgIGpvYnRpdGxlOiBcIlByZWNpb3VzIE1ldGFsIFRyYWRlc21hblwiLFxyXG4gICAgICAgIF9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHRlbGVwaG9uZTE6IFwiMDc5MDQzOTk4ODhcIixcclxuICAgICAgICBtb2JpbGVwaG9uZTogbnVsbCxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVzZWN1cml0eXVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlcjogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIHN0YXRlY29kZTogQ29udGFjdFN0YXRlQ29kZS5JbmFjdGl2ZSxcclxuICAgICAgICBhZHhfaWRlbnRpdHlfbG9nb25lbmFibGVkOiB0cnVlLFxyXG4gICAgICAgIGJpc3RlY2hfaXNzaG93bmlucG9ydGFsOiB0cnVlLFxyXG4gICAgfSxcclxuICAgIHN0ZXBoZW5zdHJhbmdlOiB7XHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZTogUG9ydGFsQ29udGFjdFR5cGUuVGVhbUNvbnRhY3QsXHJcbiAgICAgICAgY29udGFjdGlkOiBcIjgzNTI3Y2JiLTZjNGUtNGY3Yy05MDFkLTcwZWY1NzE5NGFiNFwiLFxyXG4gICAgICAgIF9wYXJlbnRjdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsOiBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBDYXNlc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbDogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgT3JkZXJzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbDogSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBJbnZvaWNlc1wiXSxcclxuICAgICAgICBmaXJzdG5hbWU6IG51bGwsXHJcbiAgICAgICAgbGFzdG5hbWU6IFwiU3RlcGhlbiBTdHJhbmdlXCIsXHJcbiAgICAgICAgZW1haWxhZGRyZXNzMTogXCJzb3JjZXJlci5zdXByZW1lQGthbWFydGFqLm5wXCIsXHJcbiAgICAgICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlOiBcIjIwMjItMDQtMDYgMTU6MDI6NTJaXCIsXHJcbiAgICAgICAgam9idGl0bGU6IFwiTWVkaWNhbCBQcm9mZXNzaW9uYWxcIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IG51bGwsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uczogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBzdGF0ZWNvZGU6IENvbnRhY3RTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgYWR4X2lkZW50aXR5X2xvZ29uZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgcGV0ZXJQYXJrZXI6IHtcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlOiBQb3J0YWxDb250YWN0VHlwZS5UZWFtQ29udGFjdCxcclxuICAgICAgICBjb250YWN0aWQ6IFwiZTBjMDkxYjUtODRjYi00NjE3LWJlZmQtZTEwMGI3ZDZkZjcwXCIsXHJcbiAgICAgICAgX3BhcmVudGN1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWw6IEJhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbDogQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIkFsbCBDb250YWN0c1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIkFsbCBPcmRlcnNcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiQWxsIEludm9pY2VzXCJdLFxyXG4gICAgICAgIGZpcnN0bmFtZTogbnVsbCxcclxuICAgICAgICBsYXN0bmFtZTogXCJQZXRlciBQYXJrZXJcIixcclxuICAgICAgICBlbWFpbGFkZHJlc3MxOiBcInBldGVyLnBhcmtlckBtaWR0b3duLWhpZ2gubnljLmVkdVwiLFxyXG4gICAgICAgIG1zZHluX3BvcnRhbHRlcm1zYWdyZWVtZW50ZGF0ZTogXCIyMDIyLTAzLTA5IDE4OjE3OjQ0WlwiLFxyXG4gICAgICAgIGpvYnRpdGxlOiBcIlBob3RvZ3JhcGh5IENvbnN1bHRhbnRcIixcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBcIjA3OTA0Mzk5ODg4XCIsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IFwiMDc3ODc3ODc3ODhcIixcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVzZWN1cml0eXVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlcjogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIHN0YXRlY29kZTogQ29udGFjdFN0YXRlQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgYWR4X2lkZW50aXR5X2xvZ29uZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICBiaXN0ZWNoX2lzc2hvd25pbnBvcnRhbDogdHJ1ZSxcclxuICAgIH0sXHJcbn07XHJcbiIsImltcG9ydCB7IENvbnRhY3RGb3JSZXRyaWV2YWwgfSBmcm9tIFwiLi4vTW9kZWxzL0NvbnRhY3RGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgTW9ja0NvbnRhY3REYXRhIH0gZnJvbSBcIi4vTW9ja0NvbnRhY3REYXRhXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciB0aGUgdXNlciBjdXJyZW50bHkgc2lnbmVkLWluLiAqL1xyXG5leHBvcnQgY29uc3QgTW9ja0F1dGhlbnRpY2F0ZWRVc2VyOiBDb250YWN0Rm9yUmV0cmlldmFsID0ge1xyXG4gICAgLi4uTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyayxcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgTW9ja0F1dGhlbnRpY2F0ZWRVc2VyIH0gZnJvbSBcIi4uL01vY2tEYXRhL01vY2tBdXRoZW50aWNhdGVkVXNlclwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0UGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvSW52b2ljZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5cclxuLyoqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSBtZXRhZGF0YSBvZiBhIHBvcnRhbCB1c2VyICovXHJcbmV4cG9ydCB0eXBlIFVzZXJNZXRhZGF0YSA9IHtcclxuICAgIC8qKiBJZCBvZiB0aGUgQ29udGFjdCAqL1xyXG4gICAgY29udGFjdElkOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAgIC8qKiBOYW1lIG9mIHRoZSBDb250YWN0ICovXHJcbiAgICBjb250YWN0TmFtZTogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICAvKiogSWQgb2YgdGhlIFBhcmVudCBBY2NvdW50ICovXHJcbiAgICBhY2NvdW50SWQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gICAgLyoqIE5hbWUgb2YgdGhlIFBhcmVudCBBY2NvdW50ICovXHJcbiAgICBhY2NvdW50TmFtZTogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgICAvKiogIFRoZSBCYXNlIFBlcm1pc3Npb24gTGV2ZWwgZm9yIHRoZSBjdXJyZW50IFBvcnRhbCBDb250YWN0LiAqL1xyXG4gICAgYmFzZVBlcm1pc3Npb25MZXZlbDogQmFzZVBlcm1pc3Npb25MZXZlbCB8IG51bGw7XHJcblxyXG4gICAgLyoqIFBvcnRhbCBDYXNlIFBlcm1pc3Npb24gbGV2ZWwgb2YgdGhlIGN1cnJlbnQgUG9ydGFsIENvbnRhY3QuICovXHJcbiAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsIHwgbnVsbDtcclxuXHJcbiAgICAvKiogUG9ydGFsIENvbnRhY3QgUGVybWlzc2lvbiBsZXZlbCBvZiB0aGUgY3VycmVudCBQb3J0YWwgQ29udGFjdC4gKi9cclxuICAgIHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfCBudWxsO1xyXG5cclxuICAgIC8qKiBQb3J0YWwgT3JkZXIgUGVybWlzc2lvbiBsZXZlbCBvZiB0aGUgY3VycmVudCBQb3J0YWwgQ29udGFjdC4gKi9cclxuICAgIHBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbCB8IG51bGw7XHJcblxyXG4gICAgLyoqIFRoZSBJbnZvaWNlIFBlcm1pc3Npb24gTGV2ZWwgZm9yIHRoZSBjdXJyZW50IFBvcnRhbCBDb250YWN0LiAqL1xyXG4gICAgcG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbDogSW52b2ljZVBlcm1pc3Npb25MZXZlbCB8IG51bGw7XHJcbn07XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgbWV0YWRhdGEuXHJcbiAqIEByZXR1cm5zIFJldHJpZXZlZCBtZXRhZGF0YS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyTWV0YWRhdGEoKTogVXNlck1ldGFkYXRhICYge1xyXG4gICAgLyoqIERhdGUgb24gd2hpY2ggdGhlIFRlcm1zIGFuZCBDb25kaXRpb25zIHdlcmUgYWNjZXB0ZWQsIG9yIG51bGwgaWYgbm90IHlldCBhY2NlcHRlZCAqL1xyXG4gICAgdGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGU6IERhdGUgfCBudWxsO1xyXG59IHtcclxuICAgIGNvbnN0IFtcclxuICAgICAgICBjb250YWN0SWQsXHJcbiAgICAgICAgY29udGFjdE5hbWUsXHJcbiAgICAgICAgYWNjb3VudElkLFxyXG4gICAgICAgIGFjY291bnROYW1lLFxyXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbCxcclxuICAgICAgICBjYXNlUGVybWlzc2lvbkxldmVsLFxyXG4gICAgICAgIGNvbnRhY3RQZXJtaXNzaW9uTGV2ZWwsXHJcbiAgICAgICAgb3JkZXJQZXJtaXNzaW9uTGV2ZWwsXHJcbiAgICAgICAgaW52b2ljZVBlcm1pc3Npb25MZXZlbCxcclxuICAgICAgICB0ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZSxcclxuICAgIF0gPSBbXHJcbiAgICAgICAgXCJjb250YWN0aWRcIixcclxuICAgICAgICBcImNvbnRhY3RuYW1lXCIsXHJcbiAgICAgICAgXCJwYXJlbnRjdXN0b21lcmlkXCIsXHJcbiAgICAgICAgXCJwYXJlbnRjdXN0b21lcm5hbWVcIixcclxuICAgICAgICBcImJpc3RlY2hfcGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgXCJiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWxcIixcclxuICAgICAgICBcImJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgIFwiYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgIFwiYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgXCJtc2R5bl9wb3J0YWx0ZXJtc2FncmVlbWVudGRhdGVcIixcclxuICAgIF0ubWFwKChtZXRhZGF0YUtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGB1bCNtZXRhZGF0YSBsaVtkYXRhLWtleT0nJHttZXRhZGF0YUtleX0nXVtkYXRhLXZhbHVlXWApO1xyXG5cclxuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtdmFsdWVcIik7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvbnRhY3RJZCxcclxuICAgICAgICBjb250YWN0TmFtZSxcclxuICAgICAgICBhY2NvdW50SWQsXHJcbiAgICAgICAgYWNjb3VudE5hbWUsXHJcbiAgICAgICAgYmFzZVBlcm1pc3Npb25MZXZlbDogcGVybWlzc2lvbkxldmVsXHJcbiAgICAgICAgICAgID8gQmFzZVBlcm1pc3Npb25MZXZlbFtwZXJtaXNzaW9uTGV2ZWwgYXMga2V5b2YgdHlwZW9mIEJhc2VQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsOiBjYXNlUGVybWlzc2lvbkxldmVsXHJcbiAgICAgICAgICAgID8gQ2FzZVBlcm1pc3Npb25MZXZlbFtjYXNlUGVybWlzc2lvbkxldmVsIGFzIGtleW9mIHR5cGVvZiBDYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbDogY29udGFjdFBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA/IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbY29udGFjdFBlcm1pc3Npb25MZXZlbCBhcyBrZXlvZiB0eXBlb2YgQ29udGFjdFBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIHBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsOiBvcmRlclBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA/IE9yZGVyUGVybWlzc2lvbkxldmVsW29yZGVyUGVybWlzc2lvbkxldmVsIGFzIGtleW9mIHR5cGVvZiBPcmRlclBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgIHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWw6IGludm9pY2VQZXJtaXNzaW9uTGV2ZWxcclxuICAgICAgICAgICAgPyBJbnZvaWNlUGVybWlzc2lvbkxldmVsW2ludm9pY2VQZXJtaXNzaW9uTGV2ZWwgYXMga2V5b2YgdHlwZW9mIEludm9pY2VQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICB0ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZTogdGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGVcclxuICAgICAgICAgICAgPyBuZXcgRGF0ZSh0ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZSlcclxuICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgfTtcclxufVxyXG5cclxuLyoqIEhvb2sgZm9yIGFjY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB1c2VyICovXHJcbmV4cG9ydCBjb25zdCB1c2VVc2VyTWV0YWRhdGE6ICgpID0+IFVzZXJNZXRhZGF0YSA9ICgpID0+IHtcclxuICAgIGNvbnN0IGlzTG9jYWxNb2RlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pc0xvY2FsTW9kZSk7XHJcbiAgICBjb25zdCBtZXRhZGF0YTogVXNlck1ldGFkYXRhID0gdXNlTWVtbyhnZXRVc2VyTWV0YWRhdGEsIFtnZXRVc2VyTWV0YWRhdGFdKTtcclxuXHJcbiAgICAvLyBJZiB3ZSBhcmUgaW4gRGV2IE1vZGVcclxuICAgIGlmIChpc0xvY2FsTW9kZSkge1xyXG4gICAgICAgIC8vIFJldHVybiB0aGUgbW9ja2VkIGRhdGFcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb250YWN0SWQ6IE1vY2tBdXRoZW50aWNhdGVkVXNlci5jb250YWN0aWQsXHJcbiAgICAgICAgICAgIGNvbnRhY3ROYW1lOiBbTW9ja0F1dGhlbnRpY2F0ZWRVc2VyLmZpcnN0bmFtZSwgTW9ja0F1dGhlbnRpY2F0ZWRVc2VyLmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpLFxyXG4gICAgICAgICAgICBhY2NvdW50SWQ6IE1vY2tBdXRoZW50aWNhdGVkVXNlci5fcGFyZW50Y3VzdG9tZXJpZF92YWx1ZSxcclxuICAgICAgICAgICAgYWNjb3VudE5hbWU6IFwiUGV0ZSdzIFRlc3QgQ3VzdG9tZXJcIixcclxuICAgICAgICAgICAgYmFzZVBlcm1pc3Npb25MZXZlbDogTW9ja0F1dGhlbnRpY2F0ZWRVc2VyLmJpc3RlY2hfcGVybWlzc2lvbmxldmVsLFxyXG4gICAgICAgICAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsOiBNb2NrQXV0aGVudGljYXRlZFVzZXIuYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsLFxyXG4gICAgICAgICAgICBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsOiBNb2NrQXV0aGVudGljYXRlZFVzZXIuYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsLFxyXG4gICAgICAgICAgICBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbDogTW9ja0F1dGhlbnRpY2F0ZWRVc2VyLmJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWwsXHJcbiAgICAgICAgICAgIHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWw6IE1vY2tBdXRoZW50aWNhdGVkVXNlci5iaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWwsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWV0YWRhdGE7XHJcbn07XHJcbiIsIi8qKiBDb21wb25lbnQgdXNlZCBmb3IgcmVuZGVyaW5nIGltYWdlcyBhbmQgaGFuZGxlcyB0aGUgZGV2bW9kZSBjaGFuZ2VzIHRvIHRoZSBpbWFnZSBwYXRoLiAqL1xyXG5leHBvcnQgY29uc3QgSW1hZ2U6IFJlYWN0LkZDPHtcclxuICAgIHNyYzogc3RyaW5nO1xyXG4gICAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbn0+ID0gKHsgc3JjLCBoZWlnaHQsIHdpZHRoLCBjbGFzc05hbWUgfSkgPT4ge1xyXG4gICAgY29uc3QgaW1hZ2VVcmwgPSBgLyR7c3JjLnJlcGxhY2UoL15cXC8vZywgXCJcIil9YDtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XHJcbiAgICAgICAgICAgIHdpZHRoPXt3aWR0aH1cclxuICAgICAgICAgICAgc3JjPXtpbWFnZVVybH1cclxuICAgICAgICAgICAgYWx0PXtgJHtzcmMucmVwbGFjZUFsbChcIi1cIiwgXCIgXCIpLnN1YnN0cmluZygwLCBzcmMubGFzdEluZGV4T2YoXCIuXCIpKX1gfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cclxuICAgICAgICAvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlVXNlck1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IEltYWdlIH0gZnJvbSBcIi4vSW1hZ2VcIjtcclxuXHJcbi8qKiBDb21wb25lbnQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBoZWFkZXIgZm9yIHRoZSBTUEEuICovXHJcbmV4cG9ydCBjb25zdCBIZWFkZXI6IFJlYWN0LkZDPHtcclxuICAgIGlzTmF2aWdhdGlvblBhbmVsRXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgICBzZXROYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZDogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbnRhY3ROYW1lIH0gPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IGlzU2hvd24gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLmZlZWRiYWNrUGFuZUlzU2hvd24pO1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG5cclxuICAgIGNvbnN0IG9uQ2xpY2tGZWVkYmFja1BhbmVJY29uID0gKCkgPT4ge1xyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRGZWVkYmFja1BhbmVJc1Nob3duXCIsIGZlZWRiYWNrUGFuZUlzU2hvd246ICFpc1Nob3duIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibmF2YmFyLXRvZ2dsZS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJUb2dnbGUgbmF2aWdhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBwcm9wcy5zZXROYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZCghcHJvcHMuaXNOYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZCl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImljb24tYmFyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaWNvbi1iYXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpY29uLWJhclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJiaXN0ZWNoLWxvZ29cIj5cclxuICAgICAgICAgICAgICAgIDxMaW5rIHRvPXtcIi9cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cImJpc3RlY2gtbG9nby5wbmdcIiBoZWlnaHQ9ezU0fSAvPlxyXG4gICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJmZWVkYmFjay1idXR0b25cIiBvbkNsaWNrPXtvbkNsaWNrRmVlZGJhY2tQYW5lSWNvbn0+XHJcbiAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiZmVlZGJhY2stbWFpbi1pY29uLnN2Z1wiIGhlaWdodD17MjR9IHdpZHRoPXsyNH0gLz5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8TGluayB0bz1cIlByb2ZpbGVcIiBjbGFzc05hbWU9XCJwcm9maWxlLWxpbmtcIiByZXBsYWNlPlxyXG4gICAgICAgICAgICAgICAge2NvbnRhY3ROYW1lfVxyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCIvKiogRW51bWVyYXRpb24gb2YgdGhlIGBiaXN0ZWNoX3BvcnRhbHRpbGVtYXBwaW5nYCBvZiBhIFByb2R1Y3QuICovXHJcbmV4cG9ydCBlbnVtIFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZyB7XHJcbiAgICBfOHg4ID0gMTY0OTYwMDExLFxyXG4gICAgTk1TID0gMTY0OTYwMDAwLFxyXG4gICAgU29sYXJ3aW5kcyA9IDE2NDk2MDAwMSxcclxuICAgIE1pY3Jvc29mdExpY2Vuc2luZyA9IDE2NDk2MDAwMixcclxuICAgIE5pbmphUk1NID0gMTY0OTYwMDAzLFxyXG4gICAgTWVyYWtpID0gMTY0OTYwMDA0LFxyXG4gICAgTWltZWNhc3QgPSAxNjQ5NjAwMDUsXHJcbiAgICBGb3J0aU1haWwgPSAxNjQ5NjAwMDYsXHJcbiAgICBGb3J0aUdhdGUgPSAxNjQ5NjAwMDcsXHJcbiAgICBGb3J0aUFuYWx5emVyID0gMTY0OTYwMDA4LFxyXG4gICAgVk1XYXJlID0gMTY0OTYwMDA5LFxyXG4gICAgV2ViQWJpbGl0eSA9IDE2NDk2MDAxMCxcclxuICAgIEF6dXJlID0gMTY0OTYwMDEyLFxyXG4gICAgTTM2NUFkbWluQ2VudHJlID0gMTY0OTYwMDEzLFxyXG59XHJcbiIsIi8qKiBFbnVtZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHR5cGUgb2YgYSBDYXNlICovXHJcbmV4cG9ydCBlbnVtIENhc2VUeXBlIHtcclxuICAgIC8qKiBJbmNpZGVudCB0eXBlICovXHJcbiAgICBJbmNpZGVudCA9IDEsXHJcblxyXG4gICAgLyoqIE1ham9yIEluY2lkZW50IHR5cGUgKi9cclxuICAgIFwiTWFqb3IgSW5jaWRlbnRcIiA9IDIsXHJcblxyXG4gICAgLyoqIFN1cHBvcnQgUmVxdWVzdCB0eXBlICovXHJcbiAgICBcIlN1cHBvcnQgUmVxdWVzdFwiID0gMyxcclxuXHJcbiAgICAvKiogUHJvYmxlbSB0eXBlICovXHJcbiAgICBQcm9ibGVtID0gNCxcclxuXHJcbiAgICAvKiogQ2hhbmdlIHR5cGUgKi9cclxuICAgIENoYW5nZSA9IDVcclxufVxyXG4iLCIvKiogRHluYW1pY3MgMzY1IGBpbmNpZGVudGAgc3RhdHVzIGNvZGVzLiAqL1xyXG5leHBvcnQgZW51bSBJbmNpZGVudFN0YXR1c0NvZGUge1xyXG4gICAgLyoqIEFjdGl2ZSAtIE9wZW4gKi9cclxuICAgIE9wZW4gPSAxNjQ5NjAwMDAsXHJcblxyXG4gICAgLyoqIEFjdGl2ZSAtIEluIFByb2dyZXNzLiAqL1xyXG4gICAgXCJJbiBQcm9ncmVzc1wiID0gMSxcclxuXHJcbiAgICAvKiogQWN0aXZlIC0gT24gSG9sZC4gKi9cclxuICAgIFwiT24gSG9sZFwiID0gMixcclxuXHJcbiAgICAvKiogQWN0aXZlIC0gUGVuZGluZyBDdXN0b21lciBGZWVkYmFjay4gKi9cclxuICAgIFwiUGVuZGluZyBGZWVkYmFja1wiID0gMyxcclxuXHJcbiAgICAvKiogQWN0aXZlIC0gUmVzb2x2ZWQuICovXHJcbiAgICBSZXNvbHZlZCA9IDQsXHJcblxyXG4gICAgLyoqIEFjdGl2ZSAtIENsb3N1cmUgUmVxdWVzdGVkICovXHJcbiAgICBcIkNsb3N1cmUgUmVxdWVzdGVkXCIgPSAxNjQ5NjAwMDIsXHJcblxyXG4gICAgLyoqIFJlc29sdmVkIC0gQ2xvc2VkLiAqL1xyXG4gICAgQ2xvc2VkID0gNSxcclxuXHJcbiAgICAvKiogQ2FuY2VsbGVkIC0gQ2FuY2VsbGVkLiAqL1xyXG4gICAgQ2FuY2VsbGVkID0gNixcclxuXHJcbiAgICAvKiogQ2FuY2VsbGVkIC0gTWVyZ2VkLiAqL1xyXG4gICAgTWVyZ2VkID0gMjAwMCxcclxufVxyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgdGhlIHByaW9yaXR5IGxldmVscyBmb3IgY2FzZXMgKi9cclxuZXhwb3J0IGVudW0gQ2FzZVByaW9yaXR5Q29kZSB7XHJcbiAgICAvKiogUHJpb3JpdHkgMSAoSW5jaWRlbnQgb25seSkgKi9cclxuICAgIFwiUHJpb3JpdHkgMVwiID0gMSxcclxuXHJcbiAgICAvKiogUHJpb3JpdHkgMiAoSW5jaWRlbnQgb25seSkgKi9cclxuICAgIFwiUHJpb3JpdHkgMlwiID0gMixcclxuXHJcbiAgICAvKiogUHJpb3JpdHkgMyAoSW5jaWRlbnQgb25seSkgKi9cclxuICAgIFwiUHJpb3JpdHkgM1wiID0gMyxcclxuXHJcbiAgICAvKiogUHJpb3JpdHkgNCAoSW5jaWRlbnQgb25seSkgKi9cclxuICAgIFwiUHJpb3JpdHkgNFwiID0gNFxyXG59XHJcbiIsImltcG9ydCB7IExpbmssIHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgUEFHRVMgfSBmcm9tIFwiLi4vSG9va3MvdXNlUGFnZU5hdmlnYXRpb25cIjtcclxuXHJcbi8qKiBBIGNvbXBvbmVudCByZXByZXNlbnRpbmcgdGhlIHBhZ2UgYnJlYWRjcnVtYnMgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSAqL1xyXG5leHBvcnQgY29uc3QgQnJlYWRjcnVtYiA9ICgpID0+IHtcclxuICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVzZUxvY2F0aW9uKCk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXNcclxuICAgIGNvbnN0IGN1cnJlbnRQYXRoTmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoL1xcLyQvZywgXCJcIik7XHJcblxyXG4gICAgY29uc3QgcGFnZXMgPSBPYmplY3QudmFsdWVzKFBBR0VTKS5maWx0ZXIoKHBhZ2UpID0+IGN1cnJlbnRQYXRoTmFtZS5pbmNsdWRlcyhwYWdlLnBhdGgpKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnJlYWRjcnVtYi10cmFpbFwiPlxyXG4gICAgICAgICAgICB7cGFnZXMubWFwKChwYWdlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0UGFnZSA9IGluZGV4IDwgcGFnZXMubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocGFnZS5wYXRoID09PSBjdXJyZW50UGF0aE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e3BhZ2UucGF0aH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJicmVhZGNydW1iXCI+e3BhZ2UudGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzTGFzdFBhZ2UgJiYgPHNwYW4gY2xhc3NOYW1lPVwiZGl2aWRlclwiPi88L3NwYW4+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17cGFnZS5wYXRofT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPExpbmsgY2xhc3NOYW1lPVwiYnJlYWRjcnVtYlwiIHRvPXtgJHtwYWdlLnBhdGh9YH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cGFnZS50aXRsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMYXN0UGFnZSAmJiA8c3BhbiBjbGFzc05hbWU9XCJkaXZpZGVyXCI+Lzwvc3Bhbj59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IHZhciBEZWZhdWx0Q29udGV4dCA9IHtcbiAgY29sb3I6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkLFxuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgc3R5bGU6IHVuZGVmaW5lZCxcbiAgYXR0cjogdW5kZWZpbmVkXG59O1xuZXhwb3J0IHZhciBJY29uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQgJiYgUmVhY3QuY3JlYXRlQ29udGV4dChEZWZhdWx0Q29udGV4dCk7IiwidmFyIF9fYXNzaWduID0gdGhpcyAmJiB0aGlzLl9fYXNzaWduIHx8IGZ1bmN0aW9uICgpIHtcbiAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0KSB7XG4gICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBzID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcblxudmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJY29uQ29udGV4dCwgRGVmYXVsdENvbnRleHQgfSBmcm9tICcuL2ljb25Db250ZXh0JztcblxuZnVuY3Rpb24gVHJlZTJFbGVtZW50KHRyZWUpIHtcbiAgcmV0dXJuIHRyZWUgJiYgdHJlZS5tYXAoZnVuY3Rpb24gKG5vZGUsIGkpIHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChub2RlLnRhZywgX19hc3NpZ24oe1xuICAgICAga2V5OiBpXG4gICAgfSwgbm9kZS5hdHRyKSwgVHJlZTJFbGVtZW50KG5vZGUuY2hpbGQpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBHZW5JY29uKGRhdGEpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25CYXNlLCBfX2Fzc2lnbih7XG4gICAgICBhdHRyOiBfX2Fzc2lnbih7fSwgZGF0YS5hdHRyKVxuICAgIH0sIHByb3BzKSwgVHJlZTJFbGVtZW50KGRhdGEuY2hpbGQpKTtcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBJY29uQmFzZShwcm9wcykge1xuICB2YXIgZWxlbSA9IGZ1bmN0aW9uIChjb25mKSB7XG4gICAgdmFyIGF0dHIgPSBwcm9wcy5hdHRyLFxuICAgICAgICBzaXplID0gcHJvcHMuc2l6ZSxcbiAgICAgICAgdGl0bGUgPSBwcm9wcy50aXRsZSxcbiAgICAgICAgc3ZnUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImF0dHJcIiwgXCJzaXplXCIsIFwidGl0bGVcIl0pO1xuXG4gICAgdmFyIGNvbXB1dGVkU2l6ZSA9IHNpemUgfHwgY29uZi5zaXplIHx8IFwiMWVtXCI7XG4gICAgdmFyIGNsYXNzTmFtZTtcbiAgICBpZiAoY29uZi5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IGNvbmYuY2xhc3NOYW1lO1xuICAgIGlmIChwcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZSA9IChjbGFzc05hbWUgPyBjbGFzc05hbWUgKyAnICcgOiAnJykgKyBwcm9wcy5jbGFzc05hbWU7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX19hc3NpZ24oe1xuICAgICAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIHN0cm9rZVdpZHRoOiBcIjBcIlxuICAgIH0sIGNvbmYuYXR0ciwgYXR0ciwgc3ZnUHJvcHMsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IF9fYXNzaWduKF9fYXNzaWduKHtcbiAgICAgICAgY29sb3I6IHByb3BzLmNvbG9yIHx8IGNvbmYuY29sb3JcbiAgICAgIH0sIGNvbmYuc3R5bGUpLCBwcm9wcy5zdHlsZSksXG4gICAgICBoZWlnaHQ6IGNvbXB1dGVkU2l6ZSxcbiAgICAgIHdpZHRoOiBjb21wdXRlZFNpemUsXG4gICAgICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgfSksIHRpdGxlICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLCBudWxsLCB0aXRsZSksIHByb3BzLmNoaWxkcmVuKTtcbiAgfTtcblxuICByZXR1cm4gSWNvbkNvbnRleHQgIT09IHVuZGVmaW5lZCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb25mKSB7XG4gICAgcmV0dXJuIGVsZW0oY29uZik7XG4gIH0pIDogZWxlbShEZWZhdWx0Q29udGV4dCk7XG59IiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliJztcbmV4cG9ydCBmdW5jdGlvbiBCaUFiYWN1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzaDJ2MThIMnptMTggMGgydjE4aC0yek01IDEzaDJ2MWgydi0xaDJ2MWgydi0xaDR2MWgydi00aC0ydjFoLTR2LTFoLTJ2MUg5di0xSDd2MUg1em0wLTl2NGgyVjdoOHYxaDJWN2gyVjVoLTJWNGgtMnYxSDdWNHptMCAxM3YzaDJ2LTFoMnYxaDJ2LTFoOHYtMmgtOHYtMUg5djFIN3YtMUg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFjY2Vzc2liaWxpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTcuODM2IDEyLjAxNC00LjM0NS43MjUgMy4yOS00LjExM2ExIDEgMCAwIDAtLjIyNy0xLjQ1N2wtNi00YS45OTkuOTk5IDAgMCAwLTEuMjYyLjEyNWwtNCA0IDEuNDE0IDEuNDE0IDMuNDItMy40MiAyLjU4NCAxLjcyMy0yLjY4MSAzLjM1MmE1LjkxMyA1LjkxMyAwIDAgMC01LjUuNzUybDEuNDUxIDEuNDUxQTMuOTcyIDMuOTcyIDAgMCAxIDggMTJjMi4yMDYgMCA0IDEuNzk0IDQgNCAwIC43MzktLjIxNiAxLjQyNS0uNTY2IDIuMDJsMS40NTEgMS40NTFBNS45NjEgNS45NjEgMCAwIDAgMTQgMTZjMC0uNDQ1LS4wNTMtLjg3OC0uMTQ1LTEuMjk1TDE3IDE0LjE4MVYyMGgydi03YS45OTguOTk4IDAgMCAwLTEuMTY0LS45ODZ6TTggMjBjLTIuMjA2IDAtNC0xLjc5NC00LTQgMC0uNzM5LjIxNi0xLjQyNS41NjYtMi4wMmwtMS40NTEtMS40NTFBNS45NjEgNS45NjEgMCAwIDAgMiAxNmMwIDMuMzA5IDIuNjkxIDYgNiA2IDEuMjk0IDAgMi40OS0uNDE2IDMuNDcxLTEuMTE1bC0xLjQ1MS0xLjQ1MUEzLjk3MiAzLjk3MiAwIDAgMSA4IDIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFkZFRvUXVldWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpNOCAxNlY0aDEybC4wMDIgMTJIOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhIMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgxMnYtMkg0Vjh6bTExLTJoLTJ2M2gtM3YyaDN2M2gydi0zaDNWOWgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzUuNTE0IDAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTB6bTAtMThjNC40MTEgMCA4IDMuNTg5IDggOHMtMy41ODkgOC04IDgtOC0zLjU4OS04LTggMy41ODktOCA4LTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTJhNyA3IDAgMCAwLTctN3YxNGE3IDcgMCAwIDAgNy03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFsYXJtQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0Yy00Ljg3OSAwLTkgNC4xMjEtOSA5czQuMTIxIDkgOSA5IDktNC4xMjEgOS05LTQuMTIxLTktOS05em0wIDE2Yy0zLjc5NCAwLTctMy4yMDYtNy03czMuMjA2LTcgNy03IDcgMy4yMDYgNyA3LTMuMjA2IDctNyA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDhoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNHptNy4yOTItMS4yOTItMy4wMS0zIDEuNDEyLTEuNDE3IDMuMDEgM3pNNS4yODIgMi4yOTQgNi43IDMuNzA2bC0yLjk5IDMtMS40MTctMS40MTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQWxhcm1FeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNC44NzkgMCA5LTQuMTIxIDktOXMtNC4xMjEtOS05LTktOSA0LjEyMS05IDkgNC4xMjEgOSA5IDl6bTAtMTZjMy43OTQgMCA3IDMuMjA2IDcgN3MtMy4yMDYgNy03IDctNy0zLjIwNi03LTcgMy4yMDYtNyA3LTd6bTUuMjg0LTIuMjkzIDEuNDEyLTEuNDE2IDMuMDEgMy0xLjQxMyAxLjQxN3pNNS4yODIgMi4yOTQgNi43IDMuNzA2bC0yLjk5IDMtMS40MTctMS40MTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOWgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQWxhcm1PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjI5MiA2LjcwOC0zLjAxLTMgMS40MTItMS40MTcgMy4wMSAzem0xLjQxNSAxMy41ODUtMi4yODctMi4yODdDMjAuNDA5IDE2LjU2MyAyMSAxNC44MzggMjEgMTNjMC00Ljg3OS00LjEyMS05LTktOS0xLjgzOCAwLTMuNTYzLjU5MS01LjAwNiAxLjU4TDUuOTEgNC40OTZsLjc4OC0uNzktMS40MTYtMS40MTItLjc4Ni43ODgtLjc4OS0uNzg5LTEuNDE0IDEuNDE0IDE4IDE4IDEuNDE0LTEuNDE0ek0xMiA2YzMuNzk0IDAgNyAzLjIwNiA3IDcgMCAxLjI5Mi0uMzg3IDIuNTA3LTEuMDI3IDMuNTU5TDE1LjQxNCAxNEgxN3YtMmgtMy41ODZMMTMgMTEuNTg2VjhoLTJ2MS41ODZMOC40NDEgNy4wMjdDOS40OTMgNi4zODcgMTAuNzA4IDYgMTIgNnpNNC4zMDUgOC40MjZBOC43OTIgOC43OTIgMCAwIDAgMyAxM2MwIDQuODc5IDQuMTIxIDkgOSA5YTguNzkyIDguNzkyIDAgMCAwIDQuNTc0LTEuMzA1bC0xLjQ2MS0xLjQ2MUE2LjgwMSA2LjgwMSAwIDAgMSAxMiAyMGMtMy43OTQgMC03LTMuMjA2LTctNyAwLTEuMTExLjI4MS0yLjE2OS43NjYtMy4xMTNMNC4zMDUgOC40MjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQWxhcm1Tbm9vemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDRjLTQuODc5IDAtOSA0LjEyMS05IDlzNC4xMjEgOSA5IDkgOS00LjEyMSA5LTktNC4xMjEtOS05LTl6bTAgMTZjLTMuNzk0IDAtNy0zLjIwNi03LTdzMy4yMDYtNyA3LTcgNyAzLjIwNiA3IDctMy4yMDYgNy03IDd6bTguMjkyLTEzLjI5Mi0zLjAxLTMgMS40MTItMS40MTcgMy4wMSAzek02LjY5OCAzLjcwN2wtMi45OSAyLjk5OUwyLjI5IDUuMjk0bDIuOTktM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC44MzIgMTAuNTU1QTEgMSAwIDAgMCAxNCA5SDl2MmgzLjEzMmwtMi45NjQgNC40NDVBMSAxIDAgMCAwIDEwIDE3aDV2LTJoLTMuMTMybDIuOTY0LTQuNDQ1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFsYXJtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0Yy00Ljg3OSAwLTkgNC4xMjEtOSA5czQuMTIxIDkgOSA5IDktNC4xMjEgOS05LTQuMTIxLTktOS05em0wIDE2Yy0zLjc5NCAwLTctMy4yMDYtNy03czMuMjA2LTcgNy03IDcgMy4yMDYgNyA3LTMuMjA2IDctNyA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEyVjhoLTJ2Nmg2di0yem00LjI4NC04LjI5MyAxLjQxMi0xLjQxNiAzLjAxIDMtMS40MTMgMS40MTd6bS0xMC41ODYgMC0yLjk5IDIuOTk5TDIuMjkgNS4yOTRsMi45OS0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExLjk5XCIsXCJjeVwiOlwiMTEuOTlcIixcInJcIjpcIjIuMDFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyYTEwIDEwIDAgMSAwIDEwIDEwQTEwIDEwIDAgMCAwIDEyIDJ6bTAgMThhOCA4IDAgMSAxIDgtOCA4IDggMCAwIDEtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZhNiA2IDAgMCAwLTYgNmgyYTQgNCAwIDAgMSA0LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQWxpZ25KdXN0aWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMTZ2Mkg0em0wLTRoMTZ2Mkg0em0wIDhoMTZ2Mkg0em0wIDRoMTZ2Mkg0em0yIDRoMTJ2Mkg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFsaWduTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOWgxNnYySDR6bTAtNGgxMXYySDR6bTAtNGgxNnYySDR6bTAtOGgxNnYySDR6bTAgNGgxMXYySDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQWxpZ25NaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTloMTZ2Mkg0em0zLTRoMTB2Mkg3em0tMy00aDE2djJINHptMC04aDE2djJINHptMyA0aDEwdjJIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBbGlnblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE5aDE2djJINHptNS00aDExdjJIOXptLTUtNGgxNnYySDR6bTAtOGgxNnYySDR6bTUgNGgxMXYySDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQW5hbHlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMmgyYTcuOTg2IDcuOTg2IDAgMCAxIDIuMzM3LTUuNjYzIDcuOTEgNy45MSAwIDAgMSAyLjU0Mi0xLjcxIDguMTIgOC4xMiAwIDAgMSA2LjEzLS4wNDFBMi40ODggMi40ODggMCAwIDAgMTcuNSA3QzE4Ljg4NiA3IDIwIDUuODg2IDIwIDQuNVMxOC44ODYgMiAxNy41IDJjLS42ODkgMC0xLjMxMi4yNzYtMS43NjMuNzI1LTIuNDMxLS45NzMtNS4yMjMtLjk1OC03LjYzNS4wNTlhOS45MjggOS45MjggMCAwIDAtMy4xOCAyLjEzOSA5LjkyIDkuOTIgMCAwIDAtMi4xNCAzLjE3OUExMC4wMDUgMTAuMDA1IDAgMCAwIDIgMTJ6bTE3LjM3MyAzLjEyMmMtLjQwMS45NTItLjk3NyAxLjgwOC0xLjcxIDIuNTQxcy0xLjU4OSAxLjMwOS0yLjU0MiAxLjcxYTguMTIgOC4xMiAwIDAgMS02LjEzLjA0MUEyLjQ4OCAyLjQ4OCAwIDAgMCA2LjUgMTdDNS4xMTQgMTcgNCAxOC4xMTQgNCAxOS41UzUuMTE0IDIyIDYuNSAyMmMuNjg5IDAgMS4zMTItLjI3NiAxLjc2My0uNzI1QTkuOTY1IDkuOTY1IDAgMCAwIDEyIDIyYTkuOTgzIDkuOTgzIDAgMCAwIDkuMjE3LTYuMTAyQTkuOTkyIDkuOTkyIDAgMCAwIDIyIDEyaC0yYTcuOTkzIDcuOTkzIDAgMCAxLS42MjcgMy4xMjJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNy40NjJjLTIuNTAyIDAtNC41MzggMi4wMzYtNC41MzggNC41MzhTOS40OTggMTYuNTM4IDEyIDE2LjUzOHM0LjUzOC0yLjAzNiA0LjUzOC00LjUzOFMxNC41MDIgNy40NjIgMTIgNy40NjJ6bTAgNy4wNzZjLTEuMzk5IDAtMi41MzgtMS4xMzktMi41MzgtMi41MzhTMTAuNjAxIDkuNDYyIDEyIDkuNDYyczIuNTM4IDEuMTM5IDIuNTM4IDIuNTM4LTEuMTM5IDIuNTM4LTIuNTM4IDIuNTM4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFuY2hvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjIgMTUtMy00LTMgNGgxLjkwNmMtLjQzNiAyLjQ2OS0yLjQzOCA0LjQ3MS00LjkwNiA0LjkwNlYxM2gydi0yaC0yVjkuMzM2YzEuNTQzLS40NTkgMi43MTQtMS45MjMgMi43MTQtMy42MjFDMTUuNzE0IDMuNjY2IDE0LjA0OCAyIDEyIDJTOC4yODYgMy42NjYgOC4yODYgNS43MTVjMCAxLjY5OCAxLjE3MSAzLjE2MiAyLjcxNCAzLjYyMVYxMUg5djJoMnY2LjkwNkM4LjUzMSAxOS40NzEgNi41MjkgMTcuNDY5IDYuMDk0IDE1SDhsLTMtNC0zIDRoMi4wNzNjLjUxMSAzLjg4NSAzLjkyOSA3IDcuOTI3IDdzNy40MTYtMy4xMTUgNy45MjctN0gyMnpNMTAuMjg2IDUuNzE1QzEwLjI4NiA0Ljc3IDExLjA1NSA0IDEyIDRzMS43MTQuNzcgMS43MTQgMS43MTVjMCAuOTUxLS44MDEgMS43ODUtMS43MTQgMS43ODVzLTEuNzE0LS44MzQtMS43MTQtMS43ODV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQW5ncnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMtMyAwLTQgMy00IDNoOHMtMS0zLTQtM3ptLTIuNDM5LTIuNDM5Yy4wMTQtLjAxNC4wMjMtLjAzLjAzNy0uMDQ0bDEuMDMxLjQxMy43NDItMS44NTctNS0yLS43NDIgMS44NTYgMS4zNzMuNTQ5TDcgMTAuNWExLjQ5OSAxLjQ5OSAwIDAgMCAyLjU2MSAxLjA2MXptMy4wNjgtMS40OS43NDIgMS44NTcgMS4wMzctLjQxNWMuMDExLjAxMS4wMTkuMDI0LjAyOS4wMzVhMS40ODggMS40ODggMCAwIDAgMi4xMTIgMGMuMjcxLS4yNzEuNDM4LS42NDQuNDM4LTEuMDU2bC0uMDAxLS4wMSAxLjM4Ni0uNTU0LS43NDItMS44NTctNS4wMDEgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcGVydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjU3OSAyIDIgNi41NzkgMiAxMnM0LjU3OSAxMCAxMCAxMCAxMC00LjU3OSAxMC0xMFMxNy40MjEgMiAxMiAyem0yLjExMyAxM0g5Ljk4NmwtMS43MjMtMy4wOTRMMTAuMjAyIDloMy43MzZsMS44NzEgMy4wNjJMMTQuMTEzIDE1ek00IDEyYzAtLjk1My4xODYtMS44Ny41MDgtMi43MjdMNy42OTYgMTVINC42MUE3Ljc1NyA3Ljc1NyAwIDAgMSA0IDEyem0xMi4yODMtM2gzLjEwNkE3Ljc0IDcuNzQgMCAwIDEgMjAgMTJjMCAuODQ0LS4xNDMgMS42Ni0uMzk3IDIuNDMyTDE2LjI4MyA5em0xLjkwNS0yaC02LjY1M2wxLjkwNS0yLjg1N2MxLjg4Ni4zNTkgMy41NjIgMS40MDMgNC43NDggMi44NTd6bS03LjA5NS0yLjk0MUw5LjEzMiA3SDl2LjE5N0w3LjE3IDkuOTQyIDUuNjUgNy4yMTRjMS4zLTEuNzAzIDMuMjQ5LTIuODk1IDUuNDQzLTMuMTU1ek01LjgxMiAxN2g3LjE0N2wtMS43MDkgMi45NjFDOS4wODQgMTkuNzQ4IDcuMTQxIDE4LjYzIDUuODEyIDE3em03LjgyOCAyLjgyIDMuMzU3LTUuODE1IDEuNTQ0IDIuNTI2Yy0xLjE1NCAxLjY0Mi0yLjkwMSAyLjg1NC00LjkwMSAzLjI4OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIyaDF2LTYuOTk1Yy4wMDYtLjUwMi4xNzctMy4wMDUgMy0zLjAwNXMyLjk5NCAyLjUwMyAzIDN2N2g3di0yaC0xVjRoMVYySDJ2MmgxdjE2SDJ2Mmg2ek0xOSA0djJINVY0aDE0ek01IDhoMTR2MTJoLTJ2LTVjMC0xLjcyOS0xLjA0NS01LTUtNXMtNSAzLjI3MS01IDV2NUg1Vjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXJjaGl2ZUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43MDYgNS4yOTItMi45OTktMi45OTlBLjk5Ni45OTYgMCAwIDAgMTggMkg2YS45OTYuOTk2IDAgMCAwLS43MDcuMjkzTDIuMjk0IDUuMjkyQS45OTQuOTk0IDAgMCAwIDIgNnYxM2MwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNmEuOTk0Ljk5NCAwIDAgMC0uMjk0LS43MDh6TTYuNDE0IDRoMTEuMTcybDEgMUg1LjQxNGwxLTF6TTQgMTlWN2gxNmwuMDAyIDEySDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOWgtNHYzSDdsNSA1IDUtNWgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcmNoaXZlT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43MDYgNS4yOTItMi45OTktMi45OTlBLjk5Ni45OTYgMCAwIDAgMTggMkg2YS45OTYuOTk2IDAgMCAwLS43MDcuMjkzTDIuMjk0IDUuMjkyQS45OTQuOTk0IDAgMCAwIDIgNnYxM2MwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNmEuOTk0Ljk5NCAwIDAgMC0uMjk0LS43MDh6TTYuNDE0IDRoMTEuMTcybDEgMUg1LjQxNGwxLTF6TTQgMTlWN2gxNmwuMDAyIDEySDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNGgzdjNoNHYtM2gzbC01LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNzA2IDUuMjkxLTIuOTk5LTIuOTk4QS45OTYuOTk2IDAgMCAwIDE4IDJINmEuOTk2Ljk5NiAwIDAgMC0uNzA3LjI5M0wyLjI5NCA1LjI5MUEuOTk0Ljk5NCAwIDAgMCAyIDUuOTk5VjE5YzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY1Ljk5OWEuOTk0Ljk5NCAwIDAgMC0uMjk0LS43MDh6TTYuNDE0IDRoMTEuMTcybC45OTkuOTk5SDUuNDE1TDYuNDE0IDR6TTQgMTlWNi45OTloMTZMMjAuMDAyIDE5SDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTJIOXYtMkg3djRoMTB2LTRoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXJlYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ6bTE2LjAwMiAxNEg1VjVoMTRsLjAwMiAxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxMmgyVjdoLTV2Mmgzem0tMyAzSDl2LTNIN3Y1aDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXJyb3dCYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAxMUg2LjQxNGw1LjI5My01LjI5My0xLjQxNC0xLjQxNEwyLjU4NiAxMmw3LjcwNyA3LjcwNyAxLjQxNC0xLjQxNEw2LjQxNCAxM0gyMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcnJvd0Zyb21Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMThoMTJ2Mkg2em02LTE0LjQxNC02LjcwNyA2LjcwNyAxLjQxNCAxLjQxNEwxMSA3LjQxNFYxNmgyVjcuNDE0bDQuMjkzIDQuMjkzIDEuNDE0LTEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFycm93RnJvbUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgydjEySDR6bTQgN2g4LjU4NmwtNC4yOTMgNC4yOTMgMS40MTQgMS40MTRMMjAuNDE0IDEybC02LjcwNy02LjcwNy0xLjQxNCAxLjQxNEwxNi41ODYgMTFIOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcnJvd0Zyb21SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggNmgydjEyaC0yem0tMiA1SDcuNDE0bDQuMjkzLTQuMjkzLTEuNDE0LTEuNDE0TDMuNTg2IDEybDYuNzA3IDYuNzA3IDEuNDE0LTEuNDE0TDcuNDE0IDEzSDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFycm93RnJvbVRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA0aDEydjJINnptNiAxNi40MTQgNi43MDctNi43MDctMS40MTQtMS40MTRMMTMgMTYuNTg2VjhoLTJ2OC41ODZsLTQuMjkzLTQuMjkzLTEuNDE0IDEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFycm93VG9Cb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMThoMTJ2Mkg2em01LTE0djguNTg2TDYuNzA3IDguMjkzIDUuMjkzIDkuNzA3IDEyIDE2LjQxNGw2LjcwNy02LjcwNy0xLjQxNC0xLjQxNEwxMyAxMi41ODZWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcnJvd1RvTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2aDJ2MTJINHptMTAuMjkzLS43MDdMNy41ODYgMTJsNi43MDcgNi43MDcgMS40MTQtMS40MTRMMTEuNDE0IDEzSDIwdi0yaC04LjU4Nmw0LjI5My00LjI5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlBcnJvd1RvUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDZoMnYxMmgtMnpNNCAxM2g4LjU4NmwtNC4yOTMgNC4yOTMgMS40MTQgMS40MTRMMTYuNDE0IDEyIDkuNzA3IDUuMjkzIDguMjkzIDYuNzA3IDEyLjU4NiAxMUg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUFycm93VG9Ub3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNGgxMnYySDZ6bS43MDcgMTEuNzA3TDExIDExLjQxNFYyMGgydi04LjU4Nmw0LjI5MyA0LjI5MyAxLjQxNC0xLjQxNEwxMiA3LjU4NmwtNi43MDcgNi43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTBjMS40NjYgMCAyLjk2MS0uMzcxIDQuNDQyLTEuMTA0bC0uODg1LTEuNzkzQzE0LjM1MyAxOS42OTggMTMuMTU2IDIwIDEyIDIwYy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4djFjMCAuNjkyLS4zMTMgMi0xLjUgMi0xLjM5NiAwLTEuNDk0LTEuODE5LTEuNS0yVjhoLTJ2LjAyNUE0Ljk1NCA0Ljk1NCAwIDAgMCAxMiA3Yy0yLjc1NyAwLTUgMi4yNDMtNSA1czIuMjQzIDUgNSA1YzEuNDUgMCAyLjc0OC0uNjMxIDMuNjYyLTEuNjIxLjUyNC44OSAxLjQwOCAxLjYyMSAyLjgzOCAxLjYyMSAyLjI3MyAwIDMuNS0yLjA2MSAzLjUtNHYtMWMwLTUuNTE0LTQuNDg2LTEwLTEwLTEwem0wIDEzYy0xLjY1NCAwLTMtMS4zNDYtMy0zczEuMzQ2LTMgMy0zIDMgMS4zNDYgMyAzLTEuMzQ2IDMtMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUF0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMTAyIDIwLjg5OGMuNjk4LjY5OSAxLjY5NiAxLjA2OCAyLjg4NyAxLjA2OCAxLjc0MiAwIDMuODU1LS43NzggNi4wMTItMi4xMjcgMi4xNTYgMS4zNSA0LjI3IDIuMTI3IDYuMDEyIDIuMTI3IDEuMTkgMCAyLjE4OC0uMzY5IDIuODg3LTEuMDY4IDEuMjY5LTEuMjY5IDEuNDExLTMuNDEzLjQwMS02LjAzOS0uMzU4LS45MzItLjg1NC0xLjg5NS0xLjQ1Ny0yLjg1OWExNi43OTIgMTYuNzkyIDAgMCAwIDEuNDU3LTIuODU5YzEuMDEtMi42MjYuODY3LTQuNzcxLS40MDEtNi4wMzktLjY5OC0uNjk5LTEuNjk2LTEuMDY4LTIuODg3LTEuMDY4LTEuNzQyIDAtMy44NTUuNzc4LTYuMDEyIDIuMTI3LTIuMTU2LTEuMzUtNC4yNy0yLjEyNy02LjAxMi0yLjEyNy0xLjE5IDAtMi4xODguMzY5LTIuODg3IDEuMDY4QzEuODMzIDQuMzcxIDEuNjkgNi41MTUgMi43IDkuMTQxYy4zNTkuOTMyLjg1NCAxLjg5NSAxLjQ1NyAyLjg1OUExNi43OTIgMTYuNzkyIDAgMCAwIDIuNyAxNC44NTljLTEuMDEgMi42MjYtLjg2NyA0Ljc3LjQwMiA2LjAzOXptMTYuMzMxLTUuMzIxYy42ODkgMS43OS43MDggMy4yNTEuMDUyIDMuOTA3LS4zMi4zMi0uODE1LjQ4Mi0xLjQ3My40ODItMS4xNjcgMC0yLjY0Ni0uNTAzLTQuMjA4LTEuMzhhMjYuNjExIDI2LjYxMSAwIDAgMCA0Ljc4My00Ljc4NGMuMzM2LjYwMS42MjMgMS4xOTYuODQ2IDEuNzc1ek0xMiAxNy40MTdhMjMuNTY4IDIzLjU2OCAwIDAgMS0yLjkzNC0yLjQ4M0EyMy45OTggMjMuOTk4IDAgMCAxIDYuNTY2IDEyIDIzLjc0IDIzLjc0IDAgMCAxIDEyIDYuNTgzYTIzLjU2OCAyMy41NjggMCAwIDEgMi45MzQgMi40ODMgMjMuOTk4IDIzLjk5OCAwIDAgMSAyLjUgMi45MzRBMjMuNzQgMjMuNzQgMCAwIDEgMTIgMTcuNDE3em02LjAxMi0xMy4zODNjLjY1NyAwIDEuMTUyLjE2MiAxLjQ3My40ODIuNjU2LjY1Ni42MzggMi4xMTctLjA1MiAzLjkwNy0uMjIzLjU3OS0uNTEgMS4xNzQtLjg0NiAxLjc3NWEyNi40NDggMjYuNDQ4IDAgMCAwLTQuNzgzLTQuNzg0YzEuNTYyLS44NzYgMy4wNDEtMS4zOCA0LjIwOC0xLjM4ek00LjU2NyA4LjQyM2MtLjY4OS0xLjc5LS43MDgtMy4yNTEtLjA1Mi0zLjkwNy4zMi0uMzIuODE1LS40ODIgMS40NzMtLjQ4MiAxLjE2NyAwIDIuNjQ2LjUwMyA0LjIwOCAxLjM4YTI2LjQ0OCAyNi40NDggMCAwIDAtNC43ODMgNC43ODQgMTMuOTM0IDEzLjkzNCAwIDAgMS0uODQ2LTEuNzc1em0wIDcuMTU0Yy4yMjMtLjU3OS41MS0xLjE3NC44NDYtMS43NzVhMjYuNDQ4IDI2LjQ0OCAwIDAgMCA0Ljc4MyA0Ljc4NGMtMS41NjMuODc3LTMuMDQxIDEuMzgtNC4yMDggMS4zOC0uNjU3IDAtMS4xNTItLjE2Mi0xLjQ3My0uNDgyLS42NTYtLjY1Ni0uNjM3LTIuMTE3LjA1Mi0zLjkwN3pcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjIuNTc0XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQXdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgOC45OTljMCAxLjkwMi43NjUgMy42MjcgMiA0Ljg5VjIxYS45OTguOTk4IDAgMCAwIDEuNDQ3Ljg5NUwxMiAyMC4xMThsMy41NTMgMS43NzZhLjk5Mi45OTIgMCAwIDAgLjk3Mi0uMDQzYy4yOTUtLjE4My40NzUtLjUwNC40NzUtLjg1MXYtNy4xMWE2Ljk3NiA2Ljk3NiAwIDAgMCAyLTQuODkxQzE5IDUuMTQgMTUuODYgMiAxMiAyUzUgNS4xNCA1IDguOTk5em03LjQ0NyA5LjEwNmExIDEgMCAwIDAtLjg5NSAwTDkgMTkuMzgydi00LjA2N2MuOTExLjQzNCAxLjkyNi42ODUgMyAuNjg1czIuMDg5LS4yNSAzLS42ODV2NC4wNjZsLTIuNTUzLTEuMjc2ek0xMiA0YzIuNzU2IDAgNSAyLjI0MiA1IDQuOTk5QTUuMDA2IDUuMDA2IDAgMCAxIDEyIDE0Yy0yLjc1NyAwLTUtMi4yNDMtNS01LjAwMUE1LjAwNSA1LjAwNSAwIDAgMSAxMiA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhZGdlQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMDM1IDE1LjQ3OUEzLjk3NiAzLjk3NiAwIDAgMCA0IDE2YzAgMi4zNzggMi4xMzggNC4yODQgNC41MjEgMy45NjRDOS4yMTQgMjEuMTk4IDEwLjUzNCAyMiAxMiAyMnMyLjc4Ni0uODAyIDMuNDc5LTIuMDM2QzE3Ljg1NyAyMC4yODQgMjAgMTguMzc4IDIwIDE2YzAtLjE3My0uMDEyLS4zNDctLjAzNS0uNTIxQzIxLjE5OCAxNC43ODYgMjIgMTMuNDY1IDIyIDEycy0uODAyLTIuNzg2LTIuMDM1LTMuNDc5QzE5Ljk4OCA4LjM0NyAyMCA4LjE3MyAyMCA4YzAtMi4zNzgtMi4xNDMtNC4yODgtNC41MjEtMy45NjRDMTQuNzg2IDIuODAyIDEzLjQ2NiAyIDEyIDJzLTIuNzg2LjgwMi0zLjQ3OSAyLjAzNkM2LjEzOCAzLjcxMiA0IDUuNjIyIDQgOGMwIC4xNzMuMDEyLjM0Ny4wMzUuNTIxQzIuODAyIDkuMjE0IDIgMTAuNTM1IDIgMTJzLjgwMiAyLjc4NiAyLjAzNSAzLjQ3OXptMS40NDItNS40MDMgMS4xMDItLjI5My0uNDM0LTEuMDUzQTEuOTMyIDEuOTMyIDAgMCAxIDYgOGMwLTEuMTAzLjg5Ny0yIDItMiAuMjQ3IDAgLjQ5OS4wNS43My4xNDVsMS4wNTQuNDM0LjI5My0xLjEwMmExLjk5IDEuOTkgMCAwIDEgMy44NDYgMGwuMjkzIDEuMTAyIDEuMDU0LS40MzRDMTUuNTAxIDYuMDUgMTUuNzUzIDYgMTYgNmMxLjEwMyAwIDIgLjg5NyAyIDIgMCAuMjQ3LS4wNS41LS4xNDUuNzNsLS40MzQgMS4wNTMgMS4xMDIuMjkzYTEuOTkzIDEuOTkzIDAgMCAxIDAgMy44NDhsLTEuMTAyLjI5My40MzQgMS4wNTNjLjA5NS4yMy4xNDUuNDgzLjE0NS43MyAwIDEuMTAzLS44OTcgMi0yIDItLjI0NyAwLS40OTktLjA1LS43My0uMTQ1bC0xLjA1NC0uNDM0LS4yOTMgMS4xMDJhMS45OSAxLjk5IDAgMCAxLTMuODQ2IDBsLS4yOTMtMS4xMDItMS4wNTQuNDM0QTEuOTM1IDEuOTM1IDAgMCAxIDggMThjLTEuMTAzIDAtMi0uODk3LTItMiAwLS4yNDcuMDUtLjUuMTQ1LS43M2wuNDM0LTEuMDUzLTEuMTAyLS4yOTNhMS45OTMgMS45OTMgMCAwIDEgMC0zLjg0OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS43NDIgMTAuNzEtMS40MDgtMS40Mi0zLjMzMSAzLjI5OS0xLjI5Ni0xLjI5Ni0xLjQxNCAxLjQxNCAyLjcwNCAyLjcwNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTY1IDguNTIxQzE5Ljk4OCA4LjM0NyAyMCA4LjE3MyAyMCA4YzAtMi4zNzgtMi4xNDMtNC4yODgtNC41MjEtMy45NjRDMTQuNzg2IDIuODAyIDEzLjQ2NiAyIDEyIDJzLTIuNzg2LjgwMi0zLjQ3OSAyLjAzNkM2LjEzOCAzLjcxMiA0IDUuNjIyIDQgOGMwIC4xNzMuMDEyLjM0Ny4wMzUuNTIxQzIuODAyIDkuMjE0IDIgMTAuNTM1IDIgMTJzLjgwMiAyLjc4NiAyLjAzNSAzLjQ3OUEzLjk3NiAzLjk3NiAwIDAgMCA0IDE2YzAgMi4zNzggMi4xMzggNC4yODQgNC41MjEgMy45NjRDOS4yMTQgMjEuMTk4IDEwLjUzNCAyMiAxMiAyMnMyLjc4Ni0uODAyIDMuNDc5LTIuMDM2QzE3Ljg1NyAyMC4yODQgMjAgMTguMzc4IDIwIDE2YzAtLjE3My0uMDEyLS4zNDctLjAzNS0uNTIxQzIxLjE5OCAxNC43ODYgMjIgMTMuNDY1IDIyIDEycy0uODAyLTIuNzg2LTIuMDM1LTMuNDc5em0tMS40NDIgNS40MDMtMS4xMDIuMjkzLjQzNCAxLjA1M2MuMDk1LjIzLjE0NS40ODMuMTQ1LjczIDAgMS4xMDMtLjg5NyAyLTIgMi0uMjQ3IDAtLjQ5OS0uMDUtLjczLS4xNDVsLTEuMDU0LS40MzQtLjI5MyAxLjEwMmExLjk5IDEuOTkgMCAwIDEtMy44NDYgMGwtLjI5My0xLjEwMi0xLjA1NC40MzRBMS45MzUgMS45MzUgMCAwIDEgOCAxOGMtMS4xMDMgMC0yLS44OTctMi0yIDAtLjI0Ny4wNS0uNS4xNDUtLjczbC40MzQtMS4wNTMtMS4xMDItLjI5M2ExLjk5MyAxLjk5MyAwIDAgMSAwLTMuODQ4bDEuMTAyLS4yOTMtLjQzNC0xLjA1M0ExLjkzMiAxLjkzMiAwIDAgMSA2IDhjMC0xLjEwMy44OTctMiAyLTIgLjI0NyAwIC40OTkuMDUuNzMuMTQ1bDEuMDU0LjQzNC4yOTMtMS4xMDJhMS45OSAxLjk5IDAgMCAxIDMuODQ2IDBsLjI5MyAxLjEwMiAxLjA1NC0uNDM0QzE1LjUwMSA2LjA1IDE1Ljc1MyA2IDE2IDZjMS4xMDMgMCAyIC44OTcgMiAyIDAgLjI0Ny0uMDUuNS0uMTQ1LjczbC0uNDM0IDEuMDUzIDEuMTAyLjI5M2ExLjk5MyAxLjk5MyAwIDAgMSAwIDMuODQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNzYgMjFhMTcuNjggMTcuNjggMCAwIDAgNCAuNDMgMTMuODkgMTMuODkgMCAwIDAgOS45My0zLjY5QzIzIDEyLjM3IDIxLjA2IDQuMTEgMjEgMy43NmExIDEgMCAwIDAtLjc2LS43NiAxNy45MSAxNy45MSAwIDAgMC00LS40MyAxMy44MiAxMy44MiAwIDAgMC05Ljk2IDMuNzFDLjk0IDExLjYzIDIuOTQgMTkuODkgMyAyMC4yNGExIDEgMCAwIDAgLjc2Ljc2ek03LjcgNy43YTExLjg2IDExLjg2IDAgMCAxIDguNDktMy4xIDE3LjU3IDE3LjU3IDAgMCAxIDMgLjI1Yy4zMSAxLjg3LjkxIDcuNjctMi44NiAxMS40NGExMS45MSAxMS45MSAwIDAgMS04LjU1IDMuMTEgMTcuMTYgMTcuMTYgMCAwIDEtMi45My0uMjVjLS4zMi0xLjg4LS45Mi03LjY3IDIuODUtMTEuNDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4yOSAxNS4yOSAxLjQyIDEuNDIgMS43OS0xLjc5IDEuNzkgMS43OSAxLjQyLTEuNDItMS44LTEuNzkgMS41OS0xLjU5IDEuNzkgMS44IDEuNDItMS40Mi0xLjgtMS43OSAxLjgtMS43OS0xLjQyLTEuNDItMS43OSAxLjgtMS43OS0xLjgtMS40MiAxLjQyIDEuOCAxLjc5LTEuNTkgMS41OS0xLjc5LTEuOC0xLjQyIDEuNDIgMS44IDEuNzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmFuZEFpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4xMTEgMjEuODg5YTUuOTYyIDUuOTYyIDAgMCAwIDQuMjQyLTEuNzU3bDcuNzc4LTcuNzc4YTYuMDA3IDYuMDA3IDAgMCAwIDAtOC40ODUgNS45NjUgNS45NjUgMCAwIDAtNC4yNDMtMS43NTcgNS45NjIgNS45NjIgMCAwIDAtNC4yNDIgMS43NTdsLTcuNzc4IDcuNzc4YTYuMDA3IDYuMDA3IDAgMCAwIDAgOC40ODUgNS45NjUgNS45NjUgMCAwIDAgNC4yNDMgMS43NTd6bS0yLjgyOS04LjgyOCA3Ljc3OC03Ljc3OGEzLjk3NiAzLjk3NiAwIDAgMSAyLjgyOC0xLjE3MWMxLjA2OSAwIDIuMDczLjQxNiAyLjgyOSAxLjE3MWE0LjAwNiA0LjAwNiAwIDAgMSAwIDUuNjU3bC03Ljc3OCA3Ljc3OGEzLjk3NiAzLjk3NiAwIDAgMS0yLjgyOCAxLjE3MSAzLjk3NyAzLjk3NyAwIDAgMS0yLjgyOS0xLjE3MSA0LjAwOCA0LjAwOCAwIDAgMSAwLTUuNjU3elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE1XCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjlcIixcInJcIjpcIjFcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCYXJDaGFydEFsdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDdoLTRWNGMwLTEuMTAzLS44OTctMi0yLTJoLTRjLTEuMTAzIDAtMiAuODk3LTIgMnY1SDRjLTEuMTAzIDAtMiAuODk3LTIgMnY5YTEgMSAwIDAgMCAxIDFoMThhMSAxIDAgMCAwIDEtMVY5YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxMWg0djhINHYtOHptNi0xVjRoNHYxNWgtNHYtOXptMTAgOWgtNFY5aDR2MTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmFyQ2hhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZoMnYxMWgtMnptNC0zaDJ2MTRoLTJ6TTkgOWgydjhIOXpNNCAxOWgxNnYySDR6bTEtN2gydjVINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCYXJDaGFydFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1djE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ6bTE2LjAwMSAxNEg1VjVoMTRsLjAwMSAxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3aDJ2MTBoLTJ6bTQgM2gydjdoLTJ6bS04IDJoMnY1SDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmgydjE0SDl6bTQgMmgydjEyaC0yem00LTRoMnYxNmgtMnpNNSAxMmgydjhINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCYXJjb2RlUmVhZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDdoMnYxMEg1em05IDBoMXYxMGgtMXptLTQgMGgzdjEwaC0zek04IDdoMXYxMEg4em04IDBoM3YxMGgtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDVoNFYzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnY0aDJWNXptMCAxNmg0di0ySDR2LTRIMnY0YzAgMS4xMDMuODk3IDIgMiAyek0yMCAzaC00djJoNHY0aDJWNWMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMTAzIDAgMi0uODk3IDItMnYtNGgtMnY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJ6TTQgMThWNmgxNnYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhoMnY4SDZ6bTMgMGgxdjhIOXptOCAwaDF2OGgtMXptLTQgMGgzdjhoLTN6bS0yIDBoMXY4aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhc2ViYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OSAyYTkuOTM3IDkuOTM3IDAgMCAwLTcuMDcxIDIuOTM4Yy0zLjg5OCAzLjg5OC0zLjg5OCAxMC4yNDMgMCAxNC4xNDMgMS44OTUgMS44OTUgNC40MDUgMi45MzggNy4wNzEgMi45MzhzNS4xNzctMS4wNDMgNy4wNzEtMi45MzhjMy44OTktMy44OTkgMy44OTktMTAuMjQ0IDAtMTQuMTQzQTkuOTM3IDkuOTM3IDAgMCAwIDExLjk5IDJ6bTUuNjU3IDE1LjY2N2E3Ljk1NyA3Ljk1NyAwIDAgMS0zLjgxNiAyLjEyOWwtLjAwMS0uMDM3YTYuMTk5IDYuMTk5IDAgMCAxIC40MjEtMi4yNTlsLTEuODYzLS43MjlhOC4xODggOC4xODggMCAwIDAtLjU1MiAzLjIzOSA3Ljk1MyA3Ljk1MyAwIDAgMS01LjUwMy0yLjM0NCA3Ljk2NSA3Ljk2NSAwIDAgMS0yLjMzMi01LjUwM2MuMDguMDAyLjE2LjAwNS4yNC4wMDVhOC4xNiA4LjE2IDAgMCAwIDIuOTg4LS41NThsLS43My0xLjg2MmE2LjE1NiA2LjE1NiAwIDAgMS0yLjI4MS40MTIgNy45MzYgNy45MzYgMCAwIDEgMi4xMTUtMy44MDkgNy45NjMgNy45NjMgMCAwIDEgMy45NzItMi4xNjggNS45NzQgNS45NzQgMCAwIDEtLjM1NyAxLjk1bDEuODgxLjY4MWE3LjkyIDcuOTIgMCAwIDAgLjQ4Mi0yLjcwMWMwLS4wMzMtLjAwNC0uMDY1LS4wMDUtLjA5OCAyLjAxMy4wNzkgMy45Ljg5NiA1LjM0MiAyLjMzNmE3Ljk1OSA3Ljk1OSAwIDAgMSAyLjMyNCA1LjM0OCA3LjkwOCA3LjkwOCAwIDAgMC0yLjc4Ny40NzNsLjY4NCAxLjg4YTUuOTEgNS45MSAwIDAgMSAxLjkzNS0uMzYxIDcuOTUzIDcuOTUzIDAgMCAxLTIuMTU3IDMuOTc2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjExMiAxNC4xM2E3LjU5OSA3LjU5OSAwIDAgMC0uOTI2IDEuMTIxbDEuNjU2IDEuMTJjLjItLjI5Ni40My0uNTc0LjY4My0uODI2YTYuNDI4IDYuNDI4IDAgMCAxIDEuMTc4LS45MjlsLTEuMDQ5LTEuNzAzYTguNDA4IDguNDA4IDAgMCAwLTEuNTQyIDEuMjE3ek04LjQ1NiA4LjQ3NGE1LjcxMyA1LjcxMyAwIDAgMS0uODI3LjY4MWwxLjExOSAxLjY1OGE3LjcyIDcuNzIgMCAwIDAgMS4xMjItLjkyNiA4LjUwMSA4LjUwMSAwIDAgMCAxLjIxNy0xLjU0Mkw5LjM4NCA3LjI5N2E2LjUxOSA2LjUxOSAwIDAgMS0uOTI4IDEuMTc3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhc2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgOWgtMS40MmwtMy43MTItNi40OTYtMS43MzYuOTkyTDE3LjI3NyA5SDYuNzIzbDMuMTQ2LTUuNTA0LTEuNzM3LS45OTJMNC40MiA5SDNhMS4wMDEgMS4wMDEgMCAwIDAtLjk2NSAxLjI2M2wyLjc5OSAxMC4yNjRBMi4wMDUgMi4wMDUgMCAwIDAgNi43NjQgMjJoMTAuNDczYy44OTggMCAxLjY5Mi0uNjA1IDEuOTMtMS40NzVsMi43OTktMTAuMjYzQS45OTguOTk4IDAgMCAwIDIxIDl6bS0zLjc2NCAxMXYxLTFINi43NjRMNC4zMSAxMWgxNS4zOGwtMi40NTQgOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzaDJ2NUg5em00IDBoMnY1aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJhc2tldGJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTI5IDE5LjA3MWMxLjg5NSAxLjg5NSA0LjQwNSAyLjkzOCA3LjA3MSAyLjkzOHM1LjE3Ny0xLjA0MyA3LjA3MS0yLjkzOGMzLjg5OS0zLjg5OSAzLjg5OS0xMC4yNDMgMC0xNC4xNDNDMTcuMTc3IDMuMDM0IDE0LjY2NSAxLjk5IDEyIDEuOTlTNi44MjMgMy4wMzQgNC45MjkgNC45MjljLTMuODk5IDMuODk4LTMuODk5IDEwLjI0MyAwIDE0LjE0MnptNy4zOC0xNS4wNjVhNy45MTIgNy45MTIgMCAwIDEgNC41OTQgMS42NzhMMTIgMTAuNTg2bC0xLjQ2LTEuNDZjMS4xNjEtMS40NzkgMS43OTItMy4zMDggMS43NjktNS4xMnpNOS4xMSA3LjY5NiA3LjA5OCA1LjY4NGE3LjkyOSA3LjkyOSAwIDAgMSAzLjIxOC0xLjUxYy0uMDE1IDEuMjM2LS40NDUgMi40NzctMS4yMDYgMy41MjJ6TTcuNjg2IDkuMWE2LjA2NSA2LjA2NSAwIDAgMS0zLjQ1OSAxLjA1NyA3LjkyMyA3LjkyMyAwIDAgMSAxLjQ1OC0zLjA1OEw3LjY4NiA5LjF6bS0zLjY3NSAzLjA0NmMuMDc3LjAwMi4xNTQuMDE0LjIzMS4wMTRhOC4wNSA4LjA1IDAgMCAwIDQuODc3LTEuNjI2TDEwLjU4NiAxMmwtNC45MDEgNC45MDFhNy45NzIgNy45NzIgMCAwIDEtMS42NzQtNC43NTV6bTEyLjI5NCAyLjc0NWMxLjA0Mi0uNzU4IDIuMjgtMS4xODggMy41MDgtMS4yMDZhNy45NDcgNy45NDcgMCAwIDEtMS40OTcgMy4yMTdsLTIuMDExLTIuMDExem0uNTk3IDMuNDI1YTcuOTM1IDcuOTM1IDAgMCAxLTMuMDU5IDEuNDcgNi4wNSA2LjA1IDAgMCAxIDEuMDU3LTMuNDcybDIuMDAyIDIuMDAyem0tNS4wNDQgMS42ODZhNy45MjIgNy45MjIgMCAwIDEtNC43NjEtMS42ODZMMTIgMTMuNDE0bDEuNDYzIDEuNDYzYy0xLjEwMyAxLjQ0NC0xLjY1OSAzLjI2Ni0xLjYwNSA1LjEyNXptOC4xMjQtOC4zMWMtMS44MDctLjAxOC0zLjYzMy42MS01LjEwOCAxLjc2OEwxMy40MTQgMTJsNC45MDEtNC45MDFhNy45NjggNy45NjggMCAwIDEgMS42NjcgNC41OTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTBIN1Y3YzAtMS4xMDMuODk3LTIgMi0yczIgLjg5NyAyIDJoMmMwLTIuMjA2LTEuNzk0LTQtNC00UzUgNC43OTQgNSA3djNIM2ExIDEgMCAwIDAtMSAxdjJjMCAyLjYwNiAxLjY3NCA0LjgyMyA0IDUuNjVWMjJoMnYtM2g4djNoMnYtMy4zNWMyLjMyNi0uODI3IDQtMy4wNDQgNC01LjY1di0yYTEgMSAwIDAgMC0xLTF6bS0xIDNjMCAyLjIwNi0xLjc5NCA0LTQgNEg4Yy0yLjIwNiAwLTQtMS43OTQtNC00di0xaDE2djF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxOGgxNGMxLjEwMyAwIDItLjg5NyAyLTJ2LTJoMnYtNGgtMlY4YzAtMS4xMDMtLjg5Ny0yLTItMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDEuMTAzLjg5NyAyIDIgMnpNNCA4aDE0bC4wMDIgOEg0Vjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA5LjU1N1YzaC0ydjJINlYzSDR2Ni41NTdDMi44MSAxMC4yNSAyIDExLjUyNSAyIDEzdjRhMSAxIDAgMCAwIDEgMWgxdjRoMnYtNGgxMnY0aDJ2LTRoMWExIDEgMCAwIDAgMS0xdi00YzAtMS40NzUtLjgxMS0yLjc1LTItMy40NDN6TTE4IDd2MmgtNVY3aDV6TTYgN2g1djJINlY3em0xNCA5SDR2LTNjMC0xLjEwMy44OTctMiAyLTJoMTJjMS4xMDMgMCAyIC44OTcgMiAydjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQmVlbkhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNy41ODkgMiA0IDUuNTg5IDQgOS45OTVjLS4wMjkgNi40NDUgNy4xMTYgMTEuNjA0IDcuNDIgMTEuODE5YS45OTguOTk4IDAgMCAwIDEuMTYgMEMxMi44ODQgMjEuNTk5IDIwLjAyOSAxNi40NCAyMCAxMGMwLTQuNDExLTMuNTg5LTgtOC04em0wIDE3LjczNUMxMC4zODkgMTguNDI3IDUuOTc5IDE0LjQ0MSA2IDEwYzAtMy4zMDkgMi42OTEtNiA2LTZzNiAyLjY5MSA2IDYuMDA1Yy4wMjEgNC40MzctNC4zODggOC40MjMtNiA5LjczelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExLjU4NiA4LjcwNyA5LjI5M2wtMS40MTQgMS40MTRMMTEgMTQuNDE0bDUuNzA3LTUuNzA3LTEuNDE0LTEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJlZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTJWNGExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxNWMwIDEuNjU0IDEuMzQ2IDMgMyAzaDEwYzEuNjU0IDAgMy0xLjM0NiAzLTN2LTFoMmMxLjEwMyAwIDItLjg5NyAyLTJWOGMwLTEuMTAzLS44OTctMi0yLTJ6bS00IDEzYzAgLjU1MS0uNDQ4IDEtMSAxSDVjLS41NTIgMC0xLS40NDktMS0xVjVoMTJ2MTR6bTQtM2gtMlY4aDJ2OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDdoMnYxMEg2em02IDBoMnYxMGgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCZWxsTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjcwNyAxNS4yOTMgMTkgMTMuNTg2VjEwYzAtMy4yMTctMi4xODUtNS45MjctNS4xNDUtNi43NDJDMTMuNTYyIDIuNTIgMTIuODQ2IDIgMTIgMnMtMS41NjIuNTItMS44NTUgMS4yNThDNy4xODUgNC4wNzQgNSA2Ljc4MyA1IDEwdjMuNTg2bC0xLjcwNyAxLjcwN0EuOTk2Ljk5NiAwIDAgMCAzIDE2djJhMSAxIDAgMCAwIDEgMWgxNmExIDEgMCAwIDAgMS0xdi0yYS45OTYuOTk2IDAgMCAwLS4yOTMtLjcwN3pNMTkgMTdINXYtLjU4NmwxLjcwNy0xLjcwN0EuOTk2Ljk5NiAwIDAgMCA3IDE0di00YzAtMi43NTcgMi4yNDMtNSA1LTVzNSAyLjI0MyA1IDV2NGMwIC4yNjYuMTA1LjUyLjI5My43MDdMMTkgMTYuNDE0VjE3em0tNyA1YTIuOTggMi45OCAwIDAgMCAyLjgxOC0ySDkuMTgyQTIuOTggMi45OCAwIDAgMCAxMiAyMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjAzNyAxMGg3LjkyNnYySDguMDM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJlbGxPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYTIuOTggMi45OCAwIDAgMCAyLjgxOC0ySDkuMTgyQTIuOTggMi45OCAwIDAgMCAxMiAyMnptOS00di0yYS45OTYuOTk2IDAgMCAwLS4yOTMtLjcwN0wxOSAxMy41ODZWMTBjMC0zLjIxNy0yLjE4NS01LjkyNy01LjE0NS02Ljc0MkMxMy41NjIgMi41MiAxMi44NDYgMiAxMiAycy0xLjU2Mi41Mi0xLjg1NSAxLjI1OGMtMS4zMjMuMzY0LTIuNDYzIDEuMTI4LTMuMzQ2IDIuMTI3TDMuNzA3IDIuMjkzIDIuMjkzIDMuNzA3bDE4IDE4IDEuNDE0LTEuNDE0LTEuMzYyLTEuMzYyQS45OTMuOTkzIDAgMCAwIDIxIDE4ek0xMiA1YzIuNzU3IDAgNSAyLjI0MyA1IDV2NGMwIC4yNjYuMTA1LjUyLjI5My43MDdMMTkgMTYuNDE0VjE3aC0uNTg2TDguMjA3IDYuNzkzQzkuMTIgNS43MDUgMTAuNDcxIDUgMTIgNXptLTUuMjkzIDkuNzA3QS45OTYuOTk2IDAgMCAwIDcgMTR2LTIuODc5TDUuMDY4IDkuMTg5QzUuMDM3IDkuNDU3IDUgOS43MjQgNSAxMHYzLjU4NmwtMS43MDcgMS43MDdBLjk5Ni45OTYgMCAwIDAgMyAxNnYyYTEgMSAwIDAgMCAxIDFoMTAuODc5bC0yLTJINXYtLjU4NmwxLjcwNy0xLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCZWxsUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNy4wMzdoLTJWMTBIOC4wMzd2MkgxMXYyLjk2M2gyVjEyaDIuOTYzdi0ySDEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzLjU4NlYxMGMwLTMuMjE3LTIuMTg1LTUuOTI3LTUuMTQ1LTYuNzQyQzEzLjU2MiAyLjUyIDEyLjg0NiAyIDEyIDJzLTEuNTYyLjUyLTEuODU1IDEuMjU4QzcuMTg1IDQuMDc0IDUgNi43ODMgNSAxMHYzLjU4NmwtMS43MDcgMS43MDdBLjk5Ni45OTYgMCAwIDAgMyAxNnYyYTEgMSAwIDAgMCAxIDFoMTZhMSAxIDAgMCAwIDEtMXYtMmEuOTk2Ljk5NiAwIDAgMC0uMjkzLS43MDdMMTkgMTMuNTg2ek0xOSAxN0g1di0uNTg2bDEuNzA3LTEuNzA3QS45OTYuOTk2IDAgMCAwIDcgMTR2LTRjMC0yLjc1NyAyLjI0My01IDUtNXM1IDIuMjQzIDUgNXY0YzAgLjI2Ni4xMDUuNTIuMjkzLjcwN0wxOSAxNi40MTRWMTd6bS03IDVhMi45OCAyLjk4IDAgMCAwIDIuODE4LTJIOS4xODJBMi45OCAyLjk4IDAgMCAwIDEyIDIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDEzLjU4NlYxMGMwLTMuMjE3LTIuMTg1LTUuOTI3LTUuMTQ1LTYuNzQyQzEzLjU2MiAyLjUyIDEyLjg0NiAyIDEyIDJzLTEuNTYyLjUyLTEuODU1IDEuMjU4QzcuMTg1IDQuMDc0IDUgNi43ODMgNSAxMHYzLjU4NmwtMS43MDcgMS43MDdBLjk5Ni45OTYgMCAwIDAgMyAxNnYyYTEgMSAwIDAgMCAxIDFoMTZhMSAxIDAgMCAwIDEtMXYtMmEuOTk2Ljk5NiAwIDAgMC0uMjkzLS43MDdMMTkgMTMuNTg2ek0xOSAxN0g1di0uNTg2bDEuNzA3LTEuNzA3QS45OTYuOTk2IDAgMCAwIDcgMTR2LTRjMC0yLjc1NyAyLjI0My01IDUtNXM1IDIuMjQzIDUgNXY0YzAgLjI2Ni4xMDUuNTIuMjkzLjcwN0wxOSAxNi40MTRWMTd6bS03IDVhMi45OCAyLjk4IDAgMCAwIDIuODE4LTJIOS4xODJBMi45OCAyLjk4IDAgMCAwIDEyIDIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDIyaDE1di0ySDYuMDEyQzUuNTUgMTkuOTg4IDUgMTkuODA1IDUgMTlzLjU1LS45ODggMS4wMTItMUgyMVY0YzAtMS4xMDMtLjg5Ny0yLTItMkg2Yy0xLjIwNiAwLTMgLjc5OS0zIDN2MTRjMCAyLjIwMSAxLjc5NCAzIDMgM3pNNSA4VjVjMC0uODA1LjU1LS45ODggMS0xaDEzdjEySDVWOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNGgydi00aDJWOGgtMlY2aC0ydjJIOXYyaDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxM3Y0SDZ2MmgzdjJoMnYtMmgydjJoMnYtMi4wNTFjMS45NjgtLjI0OSAzLjUtMS45MTUgMy41LTMuOTQ5IDAtMS4zMi0uNjUtMi40ODQtMS42NC0zLjIxM0EzLjk4MiAzLjk4MiAwIDAgMCAxOCA5YzAtMS44NTgtMS4yNzktMy40MTEtMy0zLjg1OFYzaC0ydjJoLTJWM0g5djJINnYyaDJ2NnptNi41IDRIMTB2LTRoNC41YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMnpNMTAgN2g0YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtNFY3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJsYW5rZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIN0M0LjI0MyAyIDIgNC4yNDMgMiA3djEwYzAgMi43NTcgMi4yNDMgNSA1IDVoMTJjMS42NTQgMCAzLTEuMzQ2IDMtM3MtMS4zNDYtMy0zLTNINnYyaDEzYTEgMSAwIDAgMSAwIDJIN2MtMS42NTQgMC0zLTEuMzQ2LTMtM3MxLjM0Ni0zIDMtM2gxM2MxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTBIN2E0Ljk3MyA0Ljk3MyAwIDAgMC0zIDEuMDAyVjdjMC0xLjY1NCAxLjM0Ni0zIDMtM2gxM3Y4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6TTQgMTJjMC0xLjg0Ni42MzQtMy41NDIgMS42ODgtNC44OTdsMTEuMjA5IDExLjIwOUE3Ljk0NiA3Ljk0NiAwIDAgMSAxMiAyMGMtNC40MTEgMC04LTMuNTg5LTgtOHptMTQuMzEyIDQuODk3TDcuMTAzIDUuNjg4QTcuOTQ4IDcuOTQ4IDAgMCAxIDEyIDRjNC40MTEgMCA4IDMuNTg5IDggOGE3Ljk1NCA3Ljk1NCAwIDAgMS0xLjY4OCA0Ljg5N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCbHVldG9vdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTQuNDEgMTYuMTkyIDEuMTggMS42MTVMMTAgMTQuNTg0VjIxYTEgMSAwIDAgMCAxLjU0MS44NDFsNy00LjVhLjk5OS45OTkgMCAwIDAgLjA0OS0xLjY0OUwxMy41MzcgMTJsNS4wNTMtMy42OTJhMS4wMDIgMS4wMDIgMCAwIDAtLjA0OS0xLjY1bC03LTQuNWExLjAwMiAxLjAwMiAwIDAgMC0xLjAyMS0uMDM3Yy0uMzIuMTc2LS41Mi41MTMtLjUyLjg3OXY2LjQxNkw1LjU5IDYuMTkyIDQuNDEgNy44MDggMTAgMTEuODkzdi4yMTVsLTUuNTkgNC4wODR6TTEyIDQuODMybDQuMjMyIDIuNzIxTDEyIDEwLjY0NlY0LjgzMnptMCA4LjUyMiA0LjIzMiAzLjA5M0wxMiAxOS4xNjh2LTUuODE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvZHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMjJWOWg1VjdINHYyaDV2MTNoMnYtN2gydjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9sZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMDYxIDExLjIyQTQuNDYgNC40NiAwIDAgMCAxOCA4LjVDMTggNi4wMTkgMTUuOTgxIDQgMTMuNSA0SDZ2MTVoOGMyLjQ4MSAwIDQuNS0yLjAxOSA0LjUtNC41YTQuNDggNC40OCAwIDAgMC0xLjQzOS0zLjI4ek0xMy41IDdjLjgyNyAwIDEuNS42NzMgMS41IDEuNXMtLjY3MyAxLjUtMS41IDEuNUg5VjdoNC41em0uNSA5SDl2LTNoNWMuODI3IDAgMS41LjY3MyAxLjUgMS41UzE0LjgyNyAxNiAxNCAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb2x0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNi02IDdoNHY1bDYtN2gtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb21iIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzLjAwMWMtMS40IDAtMi41ODQgMS4xNjctMi43MDcgMS4yOTNMMTcuMjA3IDUuMzhsLTEuMDkxLTEuMDg4YS45OTkuOTk5IDAgMCAwLTEuNDEzLjAwMUwxMy40NiA1LjUzN0E4LjM1MyA4LjM1MyAwIDAgMCAxMC41IDVDNS44MTMgNSAyIDguODEzIDIgMTMuNVM1LjgxMyAyMiAxMC41IDIyczguNS0zLjgxMyA4LjUtOC41YzAtLjkwOS0uMTQ0LTEuOC0uNDI4LTIuNjU4bDEuMzQ1LTEuMzQ1YTEuMDAyIDEuMDAyIDAgMCAwLS4wMDEtMS40MTVsLTEuMjkzLTEuMjkgMS4wODgtMS4wODhjLjIyOS0uMjI5Ljg0NS0uNzAzIDEuMjg5LS43MDNoMXYtMmgtMXptLTQuNTExIDcuOTc4Yy4zMzkuODA0LjUxMSAxLjY1Mi41MTEgMi41MjEgMCAzLjU4NC0yLjkxNiA2LjUtNi41IDYuNVM0IDE3LjA4NCA0IDEzLjUgNi45MTYgNyAxMC41IDdjLjk2IDAgMS44OS4yMSAyLjc2Mi42MjQuMzgxLjE4MS44MzcuMTAzIDEuMTM2LS4xOTZsMS4wMTQtMS4wMTQgMi4zODQgMi4zNzctMS4wOTIgMS4wOTJhLjk5OC45OTggMCAwIDAtLjIxNSAxLjA5NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEzLjVhNC40NyA0LjQ3IDAgMCAwIDEuMzE4IDMuMTgybDEuNDE0LTEuNDE0QzguMjYgMTQuNzk1IDggMTQuMTY4IDggMTMuNXMuMjYtMS4yOTUuNzMyLTEuNzY4QTIuNDg0IDIuNDg0IDAgMCAxIDEwLjUgMTFWOWE0LjQ2OSA0LjQ2OSAwIDAgMC0zLjE4MiAxLjMxOEE0LjQ3IDQuNDcgMCAwIDAgNiAxMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjA0OSA0Ljk1MWEzLjk1MyAzLjk1MyAwIDAgMC0xLjAyOC0xLjgwMWMtMS41MS0xLjUxLTQuMTQ2LTEuNTEtNS42NTYgMGE0LjAwOSA0LjAwOSAwIDAgMC0uNjE4IDQuODZsLTMuNzE0IDMuNzE0Yy0xLjUwNS0uODktMy41OTEtLjY0OS00Ljg2LjYxOGE0LjAwNCA0LjAwNCAwIDAgMCAwIDUuNjU3IDMuOTQ2IDMuOTQ2IDAgMCAwIDEuOCAxLjAyOGMuMTc4LjY4MS41MyAxLjMwMiAxLjAyOCAxLjhBMy45NjYgMy45NjYgMCAwIDAgOC44MjkgMjJhMy45NzMgMy45NzMgMCAwIDAgMi44MjgtMS4xNzIgNC4wMDcgNC4wMDcgMCAwIDAgLjYxNy00Ljg1OWwzLjcxNC0zLjcxNGMxLjUwNy44OTEgMy41OTMuNjUgNC44NjEtLjYxOWE0LjAwMyA0LjAwMyAwIDAgMCAwLTUuNjU2IDMuOTQyIDMuOTQyIDAgMCAwLTEuOC0xLjAyOXptLjM4NyA1LjI3MWMtLjc1Ni43NTUtMi4wNzMuNzU2LTIuODI5IDBsLS43MDctLjcwNy02LjM2MyA2LjM2NC43MDcuNzA3YTIuMDAzIDIuMDAzIDAgMCAxIDAgMi44MjhjLS43NTcuNzU3LTIuMDc0Ljc1NS0yLjgyOSAwYTEuOTYzIDEuOTYzIDAgMCAxLS41NzEtMS4zMWwtLjA0Ny0uOS0uOS0uMDQ3YTEuOTcyIDEuOTcyIDAgMCAxLTEuMzEtLjU3MSAyLjAwMyAyLjAwMyAwIDAgMSAwLTIuODI5Yy4zNzctLjM3Ny44NzktLjU4NSAxLjQxMy0uNTg1czEuMDM2LjIwOCAxLjQxNC41ODVsLjcwNy43MDcgNi4zNjQtNi4zNjMtLjcwNy0uNzA3YTIuMDAzIDIuMDAzIDAgMCAxIDAtMi44MjljLjc1Ni0uNzU0IDIuMDcyLS43NTQgMi44MjggMCAuMzQzLjM0My41NDYuODA5LjU3MiAxLjMxMmwuMDQ4Ljg5Ny44OTcuMDQ4Yy41MDMuMDI2Ljk2OS4yMjkgMS4zMTIuNTcyLjM3Ny4zNzguNTg1Ljg4LjU4NSAxLjQxNHMtLjIwNyAxLjAzNi0uNTg0IDEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjI5MyA4LjI5My0yLjA2OSAyLjA2OUE3LjAxNyA3LjAxNyAwIDAgMCAxNSA4LjY4MVY0aDFWMkg4djJoMXY0LjY4MUE3LjAxIDcuMDEgMCAwIDAgNSAxNWMwIDMuODU5IDMuMTQxIDcgNyA3czctMy4xNDEgNy03YTYuOTU4IDYuOTU4IDAgMCAwLS42NTItMi45MzRsMi4zNTktMi4zNTktMS40MTQtMS40MTR6bS04Ljk1OSAxLjk5OC42NjYtLjIzNVY0aDJ2Ni4wNTZsLjY2Ni4yMzVBNS4wMDYgNS4wMDYgMCAwIDEgMTYuODg2IDE0SDcuMTE0YTUuMDA2IDUuMDA2IDAgMCAxIDMuMjItMy43MDl6TTEyIDIwYTUuMDA3IDUuMDA3IDAgMCAxLTQuODk4LTRoOS43OTdBNS4wMDkgNS4wMDkgMCAwIDEgMTIgMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9va0FkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA4djExYzAgMi4yMDEgMS43OTQgMyAzIDNoMTV2LTJINi4wMTJDNS41NSAxOS45ODggNSAxOS44MDYgNSAxOWMwLS4xMDEuMDA5LS4xOTEuMDI0LS4yNzMuMTEyLS41NzYuNTg0LS43MTcuOTg4LS43MjdIMjFWNGMwLTEuMTAzLS44OTctMi0yLTJINmMtMS4yMDYgMC0zIC43OTktMyAzdjN6bTMtNGgxM3YxMkg1VjVjMC0uODA2LjU1LS45ODggMS0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0aDJ2LTNoM1Y5aC0zVjZoLTJ2M0g4djJoM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb29rQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDZjLTEuMjA2IDAtMyAuNzk5LTMgM3YxNGMwIDIuMjAxIDEuNzk0IDMgMyAzaDE1di0ySDYuMDEyQzUuNTUgMTkuOTg4IDUgMTkuODA2IDUgMTlzLjU1LS45ODggMS4wMTItMUgyMVY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNEg1VjVjMC0uODA2LjU1LS45ODggMS0xaDEzdjEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2tCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMi4wMUg2Yy0xLjIwNiAwLTMgLjc5OS0zIDN2MTRjMCAyLjIwMSAxLjc5NCAzIDMgM2gxNXYtMkg2LjAxMkM1LjU1IDE5Ljk5OCA1IDE5LjgxNSA1IDE5LjAxYzAtLjEwMS4wMDktLjE5MS4wMjQtLjI3My4xMTItLjU3NS41ODMtLjcxNy45ODctLjcyN0gyMGMuMDE4IDAgLjAzMS0uMDA5LjA0OS0uMDFIMjFWNC4wMWMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRINXYtMTFjMC0uODA2LjU1LS45ODggMS0xaDd2N2wyLTEgMiAxdi03aDJ2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9va0NvbnRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOVY1aDd2MTRINHptOSAwVjVoN2wuMDAxIDE0SDEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDdoM3YyaC0zem0wIDRoM3YyaC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2tIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA4djExYzAgMi4yMDEgMS43OTQgMyAzIDNoMTV2LTJINi4wMTJDNS41NSAxOS45ODggNSAxOS44MDYgNSAxOXMuNTUtLjk4OCAxLjAxMi0xSDIxVjRjMC0xLjEwMy0uODk3LTItMi0ySDZjLTEuMjA2IDAtMyAuNzk5LTMgM3Yzem0zLTRoMTN2MTJINVY1YzAtLjgwNi41NS0uOTg4IDEtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS45OTcgMTQgMy4zNS0zLjI4OWEyLjEyOSAyLjEyOSAwIDAgMCAwLTMuMDY5IDIuMjI1IDIuMjI1IDAgMCAwLTMuMTI2IDBsLS4yMjQuMjE4LS4yMjQtLjIxOWEyLjIyNCAyLjIyNCAwIDAgMC0zLjEyNSAwIDIuMTI5IDIuMTI5IDAgMCAwIDAgMy4wNjlMMTEuOTk3IDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSAzaC03YTIuOTggMi45OCAwIDAgMC0yIC43OEEyLjk4IDIuOTggMCAwIDAgMTAgM0gzYTEgMSAwIDAgMC0xIDF2MTVhMSAxIDAgMCAwIDEgMWg1Ljc1OGMuNTI2IDAgMS4wNDIuMjE0IDEuNDE0LjU4NmwxLjEyMSAxLjEyMWMuMDA5LjAwOS4wMjEuMDEyLjAzLjAyMS4wODYuMDc5LjE4Mi4xNDkuMjk0LjE5NmguMDAyYS45OTYuOTk2IDAgMCAwIC43NjIgMGguMDAyYy4xMTItLjA0Ny4yMDgtLjExNy4yOTQtLjE5Ni4wMDktLjAwOS4wMjEtLjAxMi4wMy0uMDIxbDEuMTIxLTEuMTIxQTIuMDE1IDIuMDE1IDAgMCAxIDE1LjI0MiAyMEgyMWExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMXpNOC43NTggMThINFY1aDZjLjU1MiAwIDEgLjQ0OSAxIDF2MTIuNjg5QTQuMDMyIDQuMDMyIDAgMCAwIDguNzU4IDE4ek0yMCAxOGgtNC43NThjLS43OTkgMC0xLjU4NC4yNDYtMi4yNDIuNjg5VjZjMC0uNTUxLjQ0OC0xIDEtMWg2djEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2tSZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDhjLS4yMDIgMC00Ljg1LjAyOS05IDIuMDA4QzcuODUgOC4wMjkgMy4yMDIgOCAzIDhhMSAxIDAgMCAwLTEgMXY5Ljg4M2ExIDEgMCAwIDAgLjMwNS43MTljLjE5NS4xODguNDguMzA1LjcyOS4yOGwuMTI3LS4wMDFjLjY4MyAwIDQuMjk2LjA5OCA4LjQxNiAyLjAyNS4wMTYuMDA4LjAzNC4wMDUuMDUuMDExLjExOS4wNDkuMjQ0LjA4My4zNzMuMDgzcy4yNTQtLjAzNC4zNzQtLjA4M2MuMDE2LS4wMDYuMDM0LS4wMDMuMDUtLjAxMSA0LjEyLTEuOTI4IDcuNzMzLTIuMDI1IDguNDE2LTIuMDI1bC4xMjcuMDAxYy4yMzguMDI1LjUzMy0uMDkyLjcyOS0uMjguMTk0LS4xODkuMzA0LS40NDkuMzA0LS43MTlWOWExIDEgMCAwIDAtMS0xek00IDEwLjA0OWMxLjQ4NS4xMTEgNC4zODEuNDggNyAxLjY5MnY3Ljc0MmMtMy0xLjE3NS01LjU5LTEuNDk0LTctMS41NzZ2LTcuODU4em0xNiA3Ljg1OGMtMS40MS4wODItNCAuNDAxLTcgMS41NzZ2LTcuNzQyYzIuNjE5LTEuMjEyIDUuNTE1LTEuNTgxIDctMS42OTJ2Ny44NTh6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjVcIixcInJcIjpcIjNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDIyaDE1di0ySDYuMDEyQzUuNTUgMTkuOTg4IDUgMTkuODA1IDUgMTlzLjU1LS45ODggMS4wMTItMUgyMVY0YzAtMS4xMDMtLjg5Ny0yLTItMkg2Yy0xLjIwNiAwLTMgLjc5OS0zIDN2MTRjMCAyLjIwMSAxLjc5NCAzIDMgM3pNNSA4VjVjMC0uODA1LjU1LS45ODggMS0xaDEzdjEySDVWOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDZoOXYySDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9va21hcmtBbHRNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAyaC0xMkM0LjU3IDIgMyAzLjU3IDMgNS41VjIybDctMy41IDcgMy41di05aDVWNS41QzIyIDMuNTcgMjAuNDMgMiAxOC41IDJ6TTE1IDE4Ljc2NGwtNS0yLjUtNSAyLjVWNS41QzUgNC42NzMgNS42NzMgNCA2LjUgNGg4Ljg1MkEzLjQ1MSAzLjQ1MSAwIDAgMCAxNSA1LjV2MTMuMjY0ek0yMCAxMWgtM1Y1LjVjMC0uODI3LjY3My0xLjUgMS41LTEuNXMxLjUuNjczIDEuNSAxLjVWMTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5aDZ2Mkg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2ttYXJrQWx0UGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAyaC0xMkM0LjU3IDIgMyAzLjU3IDMgNS41VjIybDctMy41IDcgMy41di05aDVWNS41QzIyIDMuNTcgMjAuNDMgMiAxOC41IDJ6TTE1IDE4Ljc2NGwtNS0yLjUtNSAyLjVWNS41QzUgNC42NzMgNS42NzMgNCA2LjUgNGg4Ljg1MkEzLjQ1MSAzLjQ1MSAwIDAgMCAxNSA1LjV2MTMuMjY0ek0yMCAxMWgtM1Y1LjVjMC0uODI3LjY3My0xLjUgMS41LTEuNXMxLjUuNjczIDEuNSAxLjVWMTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN0g5djJIN3YyaDJ2Mmgydi0yaDJWOWgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb29rbWFya0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguNSAyaC0xMkM0LjU3IDIgMyAzLjU3IDMgNS41VjIybDctMy41IDcgMy41di05aDVWNS41QzIyIDMuNTcgMjAuNDMgMiAxOC41IDJ6TTE1IDE4Ljc2NGwtNS0yLjUtNSAyLjVWNS41QzUgNC42NzMgNS42NzMgNCA2LjUgNGg4Ljg1MkEzLjQ1MSAzLjQ1MSAwIDAgMCAxNSA1LjV2MTMuMjY0ek0yMCAxMWgtM1Y1LjVjMC0uODI3LjY3My0xLjUgMS41LTEuNXMxLjUuNjczIDEuNSAxLjVWMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9va21hcmtIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMjJWNGMwLTEuMTAzLS44OTctMi0yLTJINmMtMS4xMDMgMC0yIC44OTctMiAydjE4bDgtNC41NzJMMjAgMjJ6TTYgMTBWNGgxMnYxNC41NTNsLTYtMy40MjgtNiAzLjQyOFYxMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS40MDkgOS41MTJjLjM2MS0uMzcyLjU4NS0uODg4LjU4NS0xLjQ1NnMtLjIyMy0xLjA4My0uNTg1LTEuNDU2YTEuOTYyIDEuOTYyIDAgMCAwLTEuNDEyLS42MDNTMTMuMDAxIDUuOTk0IDEyIDcuMDI2Yy0xLjAwMS0xLjAzMi0xLjk5Ny0xLjAyOS0xLjk5Ny0xLjAyOS0uNTUyIDAtMS4wNTEuMjMtMS40MTIuNjAzLS4zNjIuMzczLS41ODUuODg3LS41ODUgMS40NTZzLjIyMyAxLjA4NC41ODUgMS40NTZMMTIgMTMuMjAzbDMuNDA5LTMuNjkxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2ttYXJrTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOWg4djJIOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAyMlY0YzAtMS4xMDMtLjg5Ny0yLTItMkg2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MThsOC00LjU3MkwyMCAyMnpNNiAxMFY0aDEydjE0LjU1M2wtNi0zLjQyOC02IDMuNDI4VjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvb2ttYXJrUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTR2LTNoM1Y5aC0zVjZoLTJ2M0g4djJoM3YzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDIyVjRjMC0xLjEwMy0uODk3LTItMi0ySDZjLTEuMTAzIDAtMiAuODk3LTIgMnYxOGw4LTQuNTcyTDIwIDIyek02IDEwVjRoMTJ2MTQuNTUzbC02LTMuNDI4LTYgMy40MjhWMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xMDMgMC0yIC44OTctMiAydjE4bDgtNC41NzJMMjAgMjJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTYuNTUzLTYtMy40MjgtNiAzLjQyOFY0aDEydjE0LjU1M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVINmMtMS4xMDMgMC0yIC44OTctMiAydjE2bDYtMy42MDFMMTYgMjNWN2MwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTQuNDY3LTQtMi4zOTktNCAyLjM5OVY3aDh2MTIuNDY3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDFoLThjLTEuMTAzIDAtMiAuODk3LTIgMmg4YzEuMTAzIDAgMiAuODk3IDIgMnYxMC40NDNsMiAyLjQ4OVYzYzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb3JkZXJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjFoMTJWM0gzdjE4aDZ6bTEwLTR2MmgtNnYtNmg2djR6TTE1IDVoNHY2aC02VjVoMnpNNSA3VjVoNnY2SDVWN3ptMCAxMnYtNmg2djZINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb3JkZXJCb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgN2gydjJIM3ptMCA0aDJ2Mkgzem0wIDRoMnYySDN6TTMgM2gydjJIM3ptOCAwaDJ2MmgtMnpNNyAzaDJ2Mkg3em04IDBoMnYyaC0yem00IDBoMnYyaC0yem0wIDEyaDJ2MmgtMnptMC00aDJ2MmgtMnptMC00aDJ2MmgtMnptLTQgNGgydjJoLTJ6bS04IDBoMnYySDd6bTQtNGgydjJoLTJ6bTAgOGgydjJoLTJ6bTAtNGgydjJoLTJ6bTYgOEgzdjJoMTh2LTJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9yZGVySW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnpNNyAxOWgydjJIN3ptOCAwaDJ2MmgtMnpNMyAxOWgydjJIM3ptMC00aDJ2Mkgzem0wLThoMnYySDN6bTAtNGgydjJIM3ptMTIgMGgydjJoLTJ6TTcgM2gydjJIN3ptMTIgMGgydjJoLTJ6bTAgMTJoMnYyaC0yem0wLThoMnYyaC0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTNoNnY4aDJ2LThoOHYtMmgtOFYzaC0ydjhIM3YyaDEuOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9yZGVyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgM2gydjJoLTJ6bTQgMGgydjJoLTJ6TTcgM2gydjJIN3ptMTIgMGgydjJoLTJ6bTAgOGgydjJoLTJ6bTAgNGgydjJoLTJ6bTAtOGgydjJoLTJ6bTAgMTJoMnYyaC0yem0tNCAwaDJ2MmgtMnptLTggMGgydjJIN3ptNCAwaDJ2MmgtMnptMC00aDJ2MmgtMnptMC04aDJ2MmgtMnptNCA0aDJ2MmgtMnptLTggMGgydjJIN3ptNCAwaDJ2MmgtMnpNMyA1djE2aDJWM0gzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvcmRlck5vbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5aDJ2MmgtMnptLTggMGgydjJoLTJ6bTQgMGgydjJoLTJ6bS04IDBoMnYySDd6bS00IDBoMnYySDN6TTMgN2gydjJIM3ptMCA4aDJ2Mkgzem0wLTRoMnYySDN6bTAtOGgydjJIM3ptNCAwaDJ2Mkg3em00IDBoMnYyaC0yem00IDBoMnYyaC0yem00IDBoMnYyaC0yem0wIDRoMnYyaC0yem0wIDRoMnYyaC0yem0wIDRoMnYyaC0yem0tOC04aDJ2MmgtMnptMCA4aDJ2MmgtMnptLTQtNGgydjJIN3ptOCAwaDJ2MmgtMnptLTQgMGgydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDdoMnYyaC0yem0wIDhoMnYyaC0yem0tNC00aDJ2Mkg3em04IDBoMnYyaC0yem0tNCAwaDJ2MmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDN2MThoMThWM2gtMnptMCA0djEySDVWNWgxNHYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvcmRlclJhZGl1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTloMnYyaC0yek03IDE5aDJ2Mkg3em04IDBoMnYyaC0yem0tNCAwaDJ2MmgtMnptLTggMGgydjJIM3ptMC00aDJ2Mkgzem0wLThoMnYySDN6bTAgNGgydjJIM3ptMC04aDJ2Mkgzem00IDBoMnYySDd6bTEyIDEyaDJ2MmgtMnpNMTYgM2gtNXYyaDVjMS42NTQgMCAzIDEuMzQ2IDMgM3Y1aDJWOGMwLTIuNzU3LTIuMjQzLTUtNS01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJvcmRlclJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAxOWgydjJoLTJ6bS00IDBoMnYyaC0yem0tNCAwaDJ2Mkg3em0tNCAwaDJ2Mkgzek0zIDdoMnYySDN6bTAgOGgydjJIM3ptMC00aDJ2Mkgzem0wLThoMnYySDN6bTEyIDBoMnYyaC0yem0tNCAwaDJ2MmgtMnpNNyAzaDJ2Mkg3em00IDRoMnYyaC0yem0wIDhoMnYyaC0yem0tNC00aDJ2Mkg3em04IDBoMnYyaC0yem0tNCAwaDJ2MmgtMnptOC02djE2aDJWM2gtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb3JkZXJUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDExaDJ2MmgtMnptMCA0aDJ2MmgtMnptMC04aDJ2MmgtMnptMCAxMmgydjJoLTJ6bS04IDBoMnYyaC0yem00IDBoMnYyaC0yem0tOCAwaDJ2Mkg3em0tNCAwaDJ2Mkgzem0wLThoMnYySDN6bTAgNGgydjJIM3ptMC04aDJ2Mkgzem00IDRoMnYySDd6bTggMGgydjJoLTJ6bS00LTRoMnYyaC0yem0wIDhoMnYyaC0yem0wLTRoMnYyaC0yem0xMC04SDN2MmgxOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjkyOCAxMS42MDdjLS4yMDItLjQ4OC0uNjM1LS42MDUtLjkyOC0uNjMzVjhjMC0xLjEwMy0uODk3LTItMi0yaC02VjQuNjFjLjMwNS0uMjc0LjUtLjY2OC41LTEuMTFhMS41IDEuNSAwIDAgMC0zIDBjMCAuNDQyLjE5NS44MzYuNSAxLjExVjZINWMtMS4xMDMgMC0yIC44OTctMiAydjIuOTk3bC0uMDgyLjAwNkExIDEgMCAwIDAgMS45OSAxMnYyYTEgMSAwIDAgMCAxIDFIM3Y1YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMnYtNWExIDEgMCAwIDAgMS0xdi0xLjkzOGExLjAwNiAxLjAwNiAwIDAgMC0uMDcyLS40NTV6TTUgMjBWOGgxNGwuMDAxIDMuOTk2TDE5IDEydjJsLjAwMS4wMDUuMDAxIDUuOTk1SDV6XCJ9fSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTJcIixcInJ4XCI6XCIxLjVcIixcInJ5XCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNVwiLFwiY3lcIjpcIjEyXCIsXCJyeFwiOlwiMS41XCIsXCJyeVwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZoOHYySDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm93bGluZ0JhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTAuNVwiLFwiY3lcIjpcIjcuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRhMiAyIDAgMCAwLTIgMnYyYTIgMiAwIDAgMCAxIDEuNzJWMTlhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjguNzJBMiAyIDAgMCAwIDIyIDdWNWEyIDIgMCAwIDAtMi0yek00IDVoMTZ2Mkg0em0xIDE0VjloMTR2MTB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMWg4djJIOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCcmFja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0VjJINHYyMGg2di0ySDZWNHptNCAxNnYyaDZWMmgtNnYyaDR2MTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnJhaWxsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI0XCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTdcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiN1wiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNFwiLFwiY3lcIjpcIjE3XCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg2NCA4LjQ2NWEzLjUwNSAzLjUwNSAwIDAgMC0zLjAzLTQuNDQ5QTMuMDA1IDMuMDA1IDAgMCAwIDE0IDJhMi45OCAyLjk4IDAgMCAwLTIgLjc4QTIuOTggMi45OCAwIDAgMCAxMCAyYy0xLjMwMSAwLTIuNDEuODMxLTIuODI1IDIuMDE1YTMuNTA1IDMuNTA1IDAgMCAwLTMuMDM5IDQuNDVBNC4wMjggNC4wMjggMCAwIDAgMiAxMmMwIDEuMDc1LjQyOCAyLjA4NiAxLjE3MiAyLjgzMkE0LjA2NyA0LjA2NyAwIDAgMCAzIDE2YzAgMS45NTcgMS40MTIgMy41OSAzLjMwNiAzLjkzNEEzLjUxNSAzLjUxNSAwIDAgMCA5LjUgMjJjLjk3OSAwIDEuODY0LS40MDcgMi41LTEuMDU5QTMuNDg0IDMuNDg0IDAgMCAwIDE0LjUgMjJhMy41MSAzLjUxIDAgMCAwIDMuMTktMi4wNiA0LjAwNiA0LjAwNiAwIDAgMCAzLjEzOC01LjEwOEE0LjAwMyA0LjAwMyAwIDAgMCAyMiAxMmE0LjAyOCA0LjAyOCAwIDAgMC0yLjEzNi0zLjUzNXpNOS41IDIwYy0uNzExIDAtMS4zMy0uNTA0LTEuNDctMS4xOThMNy44MTggMThIN2MtMS4xMDMgMC0yLS44OTctMi0yIDAtLjM1Mi4wODUtLjY4Mi4yNTMtLjk4MWwuNDU2LS44MTYtLjc4NC0uNTFBMi4wMTkgMi4wMTkgMCAwIDEgNCAxMmMwLS45NzcuNzIzLTEuODI0IDEuNjgyLTEuOTcybDEuNjkzLS4yNi0xLjA1OS0xLjM0NmExLjUwMiAxLjUwMiAwIDAgMSAxLjQ5OC0yLjM5TDkgNi4yMDdWNWExIDEgMCAwIDEgMiAwdjEzLjVjMCAuODI3LS42NzMgMS41LTEuNSAxLjV6bTkuNTc1LTYuMzA4LS43ODQuNTEuNDU2LjgxNmMuMTY4LjMuMjUzLjYzLjI1My45ODIgMCAxLjEwMy0uODk3IDItMi4wNSAyaC0uODE4bC0uMTYyLjgwMkExLjUwMiAxLjUwMiAwIDAgMSAxNC41IDIwYy0uODI3IDAtMS41LS42NzMtMS41LTEuNVY1YzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMS4wNXYxLjIwN2wxLjE4Ni0uMjI1YTEuNTAyIDEuNTAyIDAgMCAxIDEuNDk4IDIuMzlsLTEuMDU5IDEuMzQ3IDEuNjkzLjI2QTIuMDAyIDIuMDAyIDAgMCAxIDIwIDEyYzAgLjY4My0uMzQ2IDEuMzE1LS45MjUgMS42OTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnJpZWZjYXNlQWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMDMtLjg5Ny0yLTItMkg5Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2Mkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTFjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjhjMC0xLjEwMy0uODk3LTItMi0yem0tNS0ydjJIOVY0aDZ6TTQgOGgxNnY0aC0zdi0yaC0ydjJIOXYtMkg3djJINFY4em0wIDExdi01aDN2Mmgydi0yaDZ2Mmgydi0yaDMuMDAxdjVINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCcmllZmNhc2VBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTNWNGMwLTEuMTAzLS44OTctMi0yLTJIOWMtMS4xMDMgMC0yIC44OTctMiAydjJINGMtMS4xMDMgMC0yIC44OTctMiAydjExYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY4YzAtMS4xMDMtLjg5Ny0yLTItMnptLTQgMnYxMUg4VjhoOHptLTEtNHYySDlWNGg2ek00IDhoMnYxMUg0Vjh6bTE0IDExVjhoMmwuMDAxIDExSDE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmgtM1Y0YzAtMS4xMDMtLjg5Ny0yLTItMkg5Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2Mkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTFjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjhjMC0xLjEwMy0uODk3LTItMi0yem0tNS0ydjJIOVY0aDZ6TTggOGgxMnYzSDRWOGg0ek00IDE5di02aDZ2Mmg0di0yaDZsLjAwMSA2SDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnJpZ2h0bmVzc0hhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcwNyAxMS4yOTMtMi0yTDE5IDguNTg2VjZhMSAxIDAgMCAwLTEtMWgtMi41ODZsLS43MDctLjcwNy0yLTJhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtMiAyTDguNTg2IDVINmExIDEgMCAwIDAtMSAxdjIuNTg2bC0uNzA3LjcwNy0yIDJhLjk5OS45OTkgMCAwIDAgMCAxLjQxNGwyIDIgLjcwNy43MDdWMThhMSAxIDAgMCAwIDEgMWgyLjU4NmwuNzA3LjcwNyAyIDJhLjk5Ny45OTcgMCAwIDAgMS40MTQgMGwyLTIgLjcwNy0uNzA3SDE4YTEgMSAwIDAgMCAxLTF2LTIuNTg2bC43MDctLjcwNyAyLTJhLjk5OS45OTkgMCAwIDAgMC0xLjQxNHptLTQuNDE0IDMtLjI5My4yOTNWMTdoLTIuNDE0bC0uMjkzLjI5My0xIDFMMTIgMTkuNTg2bC0xLjI5My0xLjI5My0xLTFMOS40MTQgMTdIN3YtMi40MTRsLS4yOTMtLjI5My0xLTFMNC40MTQgMTJsMS4yOTMtMS4yOTMgMS0xTDcgOS40MTRWN2gyLjQxNGwuMjkzLS4yOTMgMS0xTDEyIDQuNDE0bDEuMjkzIDEuMjkzIDEgMSAuMjkzLjI5M0gxN3YyLjQxNGwuMjkzLjI5MyAxIDFMMTkuNTg2IDEybC0xLjI5MyAxLjI5My0xIDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOHY4YzIuMjA2IDAgNC0xLjc5NCA0LTRzLTEuNzk0LTQtNC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJyaWdodG5lc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjcwNyA5LjI5MyAxOSA4LjU4NlY2YTEgMSAwIDAgMC0xLTFoLTIuNTg2bC0uNzA3LS43MDctMi0yYS45OTkuOTk5IDAgMCAwLTEuNDE0IDBsLTIgMkw4LjU4NiA1SDZhMSAxIDAgMCAwLTEgMXYyLjU4NmwtLjcwNy43MDctMiAyYS45OTkuOTk5IDAgMCAwIDAgMS40MTRsMiAyIC43MDcuNzA3VjE4YTEgMSAwIDAgMCAxIDFoMi41ODZsLjcwNy43MDcgMiAyYS45OTcuOTk3IDAgMCAwIDEuNDE0IDBsMi0yIC43MDctLjcwN0gxOGExIDEgMCAwIDAgMS0xdi0yLjU4NmwuNzA3LS43MDcgMi0yYS45OTkuOTk5IDAgMCAwIDAtMS40MTRsLTItMnptLTIuNDE0IDUtLjI5My4yOTNWMTdoLTIuNDE0bC0uMjkzLjI5My0xIDFMMTIgMTkuNTg2bC0xLjI5My0xLjI5My0xLTFMOS40MTQgMTdIN3YtMi40MTRsLS4yOTMtLjI5My0xLTFMNC40MTQgMTJsMS4yOTMtMS4yOTMgMS0xTDcgOS40MTRWN2gyLjQxNGwuMjkzLS4yOTMgMS0xTDEyIDQuNDE0bDEuMjkzIDEuMjkzIDEgMSAuMjkzLjI5M0gxN3YyLjQxNGwuMjkzLjI5MyAxIDFMMTkuNTg2IDEybC0xLjI5MyAxLjI5My0xIDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGMtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNCA0LTEuNzk0IDQtNC0xLjc5NC00LTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCcm9hZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjcwNyA0LjI5My0xLjQxNCAxLjQxNGMyLjczMyAyLjczMyAyLjczMyA3LjM1MyAwIDEwLjA4NmwxLjQxNCAxLjQxNGMzLjUtMy41IDMuNS05LjQxNCAwLTEyLjkxNHptLTQuNDE0IDQuNDE0Yy41NjYuNTY2Ljg3OSAxLjI5Mi44NzkgMi4wNDNzLS4zMTMgMS40NzctLjg3OSAyLjA0M2wxLjQxNCAxLjQxNGMuOTQ0LS45NDMgMS40NjUtMi4xNzIgMS40NjUtMy40NTdzLS41MjEtMi41MTQtMS40NjUtMy40NTdsLTEuNDE0IDEuNDE0em0tOS4wODYtM0w0Ljc5MyA0LjI5M2MtMy41IDMuNS0zLjUgOS40MTQgMCAxMi45MTRsMS40MTQtMS40MTRjLTIuNzMzLTIuNzMzLTIuNzMzLTcuMzUzIDAtMTAuMDg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjkzIDcuMjkzYy0uOTQ0Ljk0My0xLjQ2NSAyLjE3Mi0xLjQ2NSAzLjQ1N3MuNTIxIDIuNTE0IDEuNDY1IDMuNDU3bDEuNDE0LTEuNDE0Yy0uNTY2LS41NjYtLjg3OS0xLjI5Mi0uODc5LTIuMDQzcy4zMTMtMS40NzcuODc5LTIuMDQzTDcuMjkzIDcuMjkzek0xNCAxMC41YTIgMiAwIDAgMC00IDAgMS45OTMgMS45OTMgMCAwIDAgLjg5NSAxLjY2NkwxMC4wMDIgMjJoMy45OTZsLS44OTMtOS44MzVjLjU0LS4zNTguODk1LS45Ny44OTUtMS42NjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnJ1c2hBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDguMDAxaC00VjQuOTk5YTIuOTIgMi45MiAwIDAgMC0uODc0LTIuMTA4IDIuOTQzIDIuOTQzIDAgMCAwLTIuMzktLjg3OUMxMC4yMDIgMi4xNDQgOSAzLjUwOCA5IDUuMTE3VjhINWMtMS4xMDMgMC0yIC44OTctMiAydjEwYzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMnYtOS45OTljMC0xLjEwMy0uODk3LTItMi0yek01IDEwaDZWNS4xMTdjMC0uNTcuNDA3LTEuMDcgMS4wMDItMS4xMTcuMjY2IDAgLjUxMi4xMDMuNzEyLjMwN2EuOTU2Ljk1NiAwIDAgMSAuMjg2LjY5MlYxMGguOTk1bC4wMDUuMDAxaDVWMTJINXYtMnptMCAxMHYtNmgxNGwuMDAyIDZINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzA3IDIuMjkzYS45OTkuOTk5IDAgMCAwLTEuNDE0IDBsLTUuODQgNS44NGMtLjAxNS0uMDAxLS4wMjktLjAwOS0uMDQ0LS4wMDlhLjk5Ny45OTcgMCAwIDAtLjcwNy4yOTNMNC4yODggOS44MzFhMi45ODUgMi45ODUgMCAwIDAtLjg3OCAyLjEyMmMwIC44MDIuMzEzIDEuNTU2Ljg3OSAyLjEyMWwuNzA3LjcwNy0yLjEyMiAyLjEyMkEyLjkyIDIuOTIgMCAwIDAgMiAxOS4wMTJhMi45NjggMi45NjggMCAwIDAgMS4wNjMgMi4zMDhjLjUxOS40MzkgMS4xODguNjggMS44ODUuNjguODM0IDAgMS42NTQtLjM0MSAyLjI1LS45MzdsMi4wNC0yLjAzOS43MDcuNzA2YzEuMTM0IDEuMTMzIDMuMTA5IDEuMTM0IDQuMjQyLjAwMWwxLjQxNS0xLjQxNGEuOTk3Ljk5NyAwIDAgMCAuMjkzLS43MDdjMC0uMDI2LS4wMTMtLjA1LS4wMTUtLjA3Nmw1LjgyNy01LjgyN2EuOTk5Ljk5OSAwIDAgMCAwLTEuNDE0bC04LTh6bS0uOTM1IDE2LjAyNGExLjAyMyAxLjAyMyAwIDAgMS0xLjQxNC0uMDAxbC0xLjQxNC0xLjQxM2EuOTk5Ljk5OSAwIDAgMC0xLjQxNCAwbC0yLjc0NiAyLjc0NWExLjE5IDEuMTkgMCAwIDEtLjgzNi4zNTIuOTEuOTEgMCAwIDEtLjU5NC0uMjA4QS45NzguOTc4IDAgMCAxIDQgMTkuMDFhLjk1OS45NTkgMCAwIDEgLjI4Ny0uNjkybDIuODI5LTIuODI5YS45OTkuOTk5IDAgMCAwIDAtMS40MTRMNS43MDEgMTIuNjZhLjk5Ljk5IDAgMCAxLS4yOTItLjcwNmMwLS4yNjguMTA0LS41MTkuMjkzLS43MDhsLjcwNy0uNzA3IDcuMDcxIDcuMDcyLS43MDguNzA2em0xLjg4OS0yLjM5Mkw4LjA3NSA5LjMzOSAxMyA0LjQxNCAxOS41ODYgMTFsLTQuOTI1IDQuOTI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJ1Z0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5aDZ2Mkg5em0wIDRoNnYySDl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTggNS40MTQgMS43MDctMS43MDctMS40MTQtMS40MTQtMS41NjMgMS41NjJDMTUuNDgzIDIuNzA4IDEzLjgyNCAyIDEyIDJzLTMuNDgzLjcwOC00LjczIDEuODU1TDUuNzA3IDIuMjkzIDQuMjkzIDMuNzA3IDYgNS40MTRBNi45MzcgNi45MzcgMCAwIDAgNSA5SDN2MmgydjJIM3YyaDJjMCAzLjg2IDMuMTQxIDcgNyA3czctMy4xNCA3LTdoMnYtMmgtMnYtMmgyVjloLTJhNi45MzcgNi45MzcgMCAwIDAtMS0zLjU4NnpNMTcgMTN2MmMwIDIuNzU3LTIuMjQzIDUtNSA1cy01LTIuMjQzLTUtNVY5YzAtMi43NTcgMi4yNDMtNSA1LTVzNSAyLjI0MyA1IDV2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljg5NSA2LjUxOSAyLjgxMy0yLjgxMi0xLjQxNC0xLjQxNC0yLjg0NiAyLjg0NmE2LjU3NSA2LjU3NSAwIDAgMC0uNzIzLS40NTQgNS43NzggNS43NzggMCAwIDAtNS40NSAwYy0uMjUuMTMyLS40ODguMjg3LS43MjIuNDUzTDUuNzA3IDIuMjkzIDQuMjkzIDMuNzA3bDIuODEzIDIuODEyQTguNDczIDguNDczIDAgMCAwIDUuNzU2IDlIMnYyaDIuMzA3Yy0uMDY1LjQ5NS0uMTA3Ljk5Ny0uMTA3IDEuNSAwIC41MDcuMDQyIDEuMDEzLjEwNyAxLjUxMUgydjJoMi43NTNjLjAxMy4wMzkuMDIxLjA4LjAzNC4xMTguMTg4LjU1NS40MjEgMS4wOTMuNjk1IDEuNi4wNDQuMDgxLjA5NS4xNTUuMTQxLjIzNGwtMi4zMyAyLjMzIDEuNDE0IDEuNDE0IDIuMTEtMi4xMTFhNy40NzcgNy40NzcgMCAwIDAgMi4wNjggMS42MTljLjQ3OS4yNTMuOTgyLjQ0OSAxLjQ5Ni41OGE2LjUxNSA2LjUxNSAwIDAgMCAzLjIzNy4wMDEgNi44MTIgNi44MTIgMCAwIDAgMS40OTYtLjU4Yy40NjUtLjI0Ni45MTQtLjU1IDEuMzMzLS45MDQuMjU4LS4yMTguNS0uNDYyLjczNC0uNzE2bDIuMTExIDIuMTExIDEuNDE0LTEuNDE0LTIuMzMtMi4zM2MuMDQ3LS4wOC4wOTgtLjE1NS4xNDItLjIzNi4yNzMtLjUwNS41MDctMS4wNDMuNjk0LTEuNTk5LjAxMy0uMDM5LjAyMS0uMDc5LjAzNC0uMTE4SDIydi0yaC0yLjMwOGMuMDY1LS40OTkuMTA3LTEuMDA0LjEwNy0xLjUxMSAwLS41MDMtLjA0Mi0xLjAwNS0uMTA2LTEuNUgyMlY5aC0zLjc1NmE4LjQ5NCA4LjQ5NCAwIDAgMC0xLjM0OS0yLjQ4MXpNOC42ODEgNy43NDhjLjQ0NS0uNTU4Ljk2LS45OTMgMS41MjgtMS4yOTRhMy43NzMgMy43NzMgMCAwIDEgMy41ODEgMCA0Ljg5NCA0Ljg5NCAwIDAgMSAxLjUzIDEuMjk1Yy4yOTkuMzczLjU0LjguNzUzIDEuMjUxSDcuOTI3Yy4yMTQtLjQ1MS40NTQtLjg3OS43NTQtMS4yNTJ6TTE3LjggMTIuNWMwIC41MjItLjA0MiAxLjA0NC0uMTI2IDEuNTUzLS4wNzkuNDktLjE5OS45NzMtLjM1NSAxLjQzNmE4LjI4IDguMjggMCAwIDEtLjU1OSAxLjI4OCA3LjU5IDcuNTkgMCAwIDEtLjczMyAxLjExYy0uMjY3LjMzMy0uNTYuNjM2LS44NjkuODk4LS4zMS4yNjEtLjYzOS40ODQtLjk3OS42NjRzLS42OTUuMzE3LTEuMDU3LjQxYy0uMDQuMDEtLjA4Mi4wMTQtLjEyMi4wMjNWMTRoLTJ2NS44ODFjLS4wNC0uMDA5LS4wODItLjAxMy0uMTIyLS4wMjMtLjM2MS0uMDkzLS43MTctLjIzLTEuMDU3LS40MXMtLjY2OS0uNDAzLS45NzgtLjY2NGE2LjQ2MiA2LjQ2MiAwIDAgMS0uODcxLS44OTkgNy40MDIgNy40MDIgMCAwIDEtLjczMS0xLjEwOCA4LjMzNyA4LjMzNyAwIDAgMS0uNTYtMS4yODkgOS4wNzUgOS4wNzUgMCAwIDEtLjM1Ni0xLjQzOEE5LjYxIDkuNjEgMCAwIDEgNi4zMTkgMTFIMTcuNjhjLjA3OS40OTEuMTIuOTk1LjEyIDEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCdWlsZGluZ0hvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDljLTEuMTAzIDAtMiAuODk3LTIgMnY1LjU4NmwtNC43MDcgNC43MDdBMSAxIDAgMCAwIDMgMTZ2NWExIDEgMCAwIDAgMSAxaDE2YTEgMSAwIDAgMCAxLTFWNGMwLTEuMTAzLS44OTctMi0yLTJ6bS04IDE4SDV2LTUuNTg2bDMtMyAzIDNWMjB6bTggMGgtNnYtNGEuOTk5Ljk5OSAwIDAgMCAuNzA3LTEuNzA3TDkgOS41ODZWNGgxMHYxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2aDJ2MmgtMnptNCAwaDJ2MmgtMnptMCA0LjAzMWgyVjEyaC0yek0xNSAxNGgydjJoLTJ6bS04IDFoMnYySDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDJINmMtMS4xMDMgMC0yIC44OTctMiAydjE3YTEgMSAwIDAgMCAxIDFoMTRhMSAxIDAgMCAwIDEtMVY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxOEg2VjRoMTJ2MTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA2aDN2Mkg4em01IDBoM3YyaC0zem0tNSA0aDN2Mkg4em01IC4wMzFoM1YxMmgtM3pNOCAxNGgzdjJIOHptNSAwaDN2MmgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlCdWlsZGluZ3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJIOWMtMS4xMDMgMC0yIC44OTctMiAydjZINWMtMS4xMDMgMC0yIC44OTctMiAydjlhMSAxIDAgMCAwIDEgMWgxNmExIDEgMCAwIDAgMS0xVjRjMC0xLjEwMy0uODk3LTItMi0yek01IDEyaDZ2OEg1di04em0xNCA4aC02di04YzAtMS4xMDMtLjg5Ny0yLTItMkg5VjRoMTB2MTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgydjJoLTJ6bTQgMGgydjJoLTJ6bTAgNC4wMzFoMlYxMmgtMnpNMTUgMTRoMnYyaC0yem0tOCAuMDAxaDJ2Mkg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMjBoNnYySDl6bTcuOTA2LTYuMjg4QzE3LjkzNiAxMi41MDYgMTkgMTEuMjU5IDE5IDljMC0zLjg1OS0zLjE0MS03LTctN1M1IDUuMTQxIDUgOWMwIDIuMjg1IDEuMDY3IDMuNTI4IDIuMTAxIDQuNzMuMzU4LjQxOC43MjkuODUxIDEuMDg0IDEuMzQ5LjE0NC4yMDYuMzguOTk2LjU5MSAxLjkyMUg4djJoOHYtMmgtLjc3NGMuMjEzLS45MjcuNDUtMS43MTkuNTkzLTEuOTI1LjM1Mi0uNTAzLjcyNi0uOTQgMS4wODctMS4zNjN6bS0yLjcyNC4yMTNjLS40MzQuNjE3LS43OTYgMi4wNzUtMS4wMDYgMy4wNzVoLTIuMzUxYy0uMjA5LTEuMDAyLS41NzItMi40NjMtMS4wMTEtMy4wOGEyMC41MDIgMjAuNTAyIDAgMCAwLTEuMTk2LTEuNDkyQzcuNjQ0IDExLjI5NCA3IDEwLjU0NCA3IDljMC0yLjc1NyAyLjI0My01IDUtNXM1IDIuMjQzIDUgNWMwIDEuNTIxLS42NDMgMi4yNzQtMS42MTUgMy40MTMtLjM3My40MzgtLjc5Ni45MzMtMS4yMDMgMS41MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnVsbHNleWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTMuMzA5IDAtNiAyLjY5MS02IDZzMi42OTEgNiA2IDYgNi0yLjY5MSA2LTYtMi42OTEtNi02LTZ6bTAgMTBjLTIuMjA2IDAtNC0xLjc5NC00LTRzMS43OTQtNCA0LTQgNCAxLjc5NCA0IDQtMS43OTQgNC00IDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjU3OSAyIDIgNi41NzkgMiAxMnM0LjU3OSAxMCAxMCAxMCAxMC00LjU3OSAxMC0xMFMxNy40MjEgMiAxMiAyem0wIDE4Yy00LjMzNyAwLTgtMy42NjMtOC04czMuNjYzLTggOC04IDggMy42NjMgOCA4LTMuNjYzIDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0xLjA4MSAwLTIgLjkxOS0yIDJzLjkxOSAyIDIgMiAyLS45MTkgMi0yLS45MTktMi0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnVveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem03LjQxMSA3SDE2di4wMzFBNS4wMzcgNS4wMzcgMCAwIDAgMTQuOTY5IDhIMTVWNC41ODlBOC4wMzkgOC4wMzkgMCAwIDEgMTkuNDExIDl6TTEyIDE1Yy0xLjY1NCAwLTMtMS4zNDYtMy0zczEuMzQ2LTMgMy0zIDMgMS4zNDYgMyAzLTEuMzQ2IDMtMyAzem0xLTEwLjkzMXYzLjAzMmE0Ljk4OCA0Ljk4OCAwIDAgMC0yIDBWNC4wNjljLjMyOC0uMDQxLjY2LS4wNjkgMS0uMDY5cy42NzIuMDI4IDEgLjA2OXptLTQgLjUyVjhoLjAzMUE1LjAzNyA1LjAzNyAwIDAgMCA4IDkuMDMxVjlINC41ODlDNS40MDIgNyA2Ljk5OSA1LjQwMiA5IDQuNTg5ek00LjA2OSAxMWgzLjAzMmE0Ljk5NSA0Ljk5NSAwIDAgMCAuMDAxIDJINC4wNjlDNC4wMjggMTIuNjcyIDQgMTIuMzM5IDQgMTJzLjAyOC0uNjcyLjA2OS0xem0uNTIgNEg4di0uMDMxYy4yODQuMzgxLjYyMS43MTggMSAxLjAwNXYzLjQzN0E4LjAzOSA4LjAzOSAwIDAgMSA0LjU4OSAxNXpNMTEgMTkuOTMxdi0zLjAzMmE0Ljk4OCA0Ljk4OCAwIDAgMCAyIDB2My4wMzJjLS4zMjguMDQxLS42Ni4wNjktMSAuMDY5cy0uNjcyLS4wMjgtMS0uMDY5em00LS41MnYtMy40MzdhNS4wMzggNS4wMzggMCAwIDAgMS0xLjAwNVYxNWgzLjQxMUE4LjAzOSA4LjAzOSAwIDAgMSAxNSAxOS40MTF6TTE5LjkzMSAxM2gtMy4wMzJhNC45OTUgNC45OTUgMCAwIDAtLjAwMS0yaDMuMDMyYy4wNDIuMzI4LjA3LjY2MS4wNyAxcy0uMDI4LjY3Mi0uMDY5IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQnVzU2Nob29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS4yNTkgMTEuOTQ4QS45ODYuOTg2IDAgMCAwIDIyIDExVjhhLjk5OS45OTkgMCAwIDAtLjk5Ni0uOTk5VjZIMjFjMC0yLjIwNi0xLjc5NC00LTQtNEg3QzQuNzk0IDIgMyAzLjc5NCAzIDZ2MWExIDEgMCAwIDAtMSAxdjNjMCAuNDYxLjMxNy44MzIuNzQyLjk0OGEzLjk1MyAzLjk1MyAwIDAgMC0uNzQxIDIuMjk4bC4wMDQgMy43NTdjLjAwMS43MzMuNDA0IDEuMzY5Ljk5NSAxLjcxNlYyMWExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMWgxMnYxYTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xLjI3NGEyLjAyIDIuMDIgMCAwIDAgLjQyMS0uMzEzYy4zNzctLjM3OC41ODUtLjg4MS41ODQtMS40MTVsLS4wMDQtMy43NTlhMy45NjYgMy45NjYgMCAwIDAtLjc0Mi0yLjI5MXpNNSAxOGgtLjk5NWwtLjAwNC0zLjc1N2MtLjAwMS0uNDU5LjE2MS0uODkuNDQzLTEuMjQzaDE1LjExMWMuMjgzLjM1My40NDUuNzgzLjQ0NiAxLjI0MkwyMC4wMDYgMThINXptNi4wMDQtMTB2M0g1VjhoNi4wMDR6TTE5IDExaC01Ljk5NlY4SDE5djN6TTcgNGgxMGMxLjEwMyAwIDIgLjg5NyAyIDJoLTRWNUg5djFINWMwLTEuMTAzLjg5Ny0yIDItMnpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjE1LjVcIixcInJcIjpcIjEuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMDA0IDcuOTc1VjZjMC0yLjIwNi0xLjc5NC00LTQtNGgtMTBjLTIuMjA2IDAtNCAxLjc5NC00IDR2MS45OThsLS4wNzYuMDA0QTEgMSAwIDAgMCAyIDl2MmExIDEgMCAwIDAgMSAxaC4wMDR2NmMwIC43MzUuNDAzIDEuMzcyLjk5NiAxLjcyVjIxYTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0xaDEwdjFhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTEuMjc2QTEuOTk0IDEuOTk0IDAgMCAwIDIxLjAwNCAxOHYtNmExIDEgMCAwIDAgMS0xVjkuMDYyYTEuMDA2IDEuMDA2IDAgMCAwLS4wNzItLjQ1NWMtLjIwMy0uNDg3LS42MzUtLjYwNC0uOTI4LS42MzJ6TTE5LjAwNiAxOEg1LjAwNHYtNWgxNC4wMDFsLjAwMSA1ek0xMS4wMDQgN3Y0aC02VjdoNnptOCAwdjRoLTZWN2g2em0tMTItM2gxMGMuNzM2IDAgMS4zNzUuNDA1IDEuNzIyIDFINS4yODJjLjM0Ny0uNTk1Ljk4Ni0xIDEuNzIyLTF6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWJpbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjR6TTUgNGgxNHY3SDVWNHptMCAxNnYtN2gxNC4wMDF2N0g1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoLTRWNkg4djNoOFY2aC0yem0wIDh2MWgtNHYtMUg4djNoOHYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA1aC02VjJoLTJ2M0g1QzMuMzQ2IDUgMiA2LjM0NiAyIDh2MTBjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjhjMC0xLjY1NC0xLjM0Ni0zLTMtM3pNNSA3aDE0YTEgMSAwIDAgMSAxIDFsLjAwMSAzLjEyYy0uODk2LjIyOC0xLjQ2OS43MzQtMS45MTYgMS4xMzItLjUwNy40NS0uODQyLjc0OC0xLjU4OC43NDgtLjc0NSAwLTEuMDgtLjI5OC0xLjU4Ny0uNzQ3LS41OTUtLjUyOS0xLjQwOS0xLjI1My0yLjkxNS0xLjI1My0xLjUwNSAwLTIuMzE5LjcyNC0yLjkxNCAxLjI1My0uNTA3LjQ1LS44NDEuNzQ3LTEuNTg2Ljc0Ny0uNzQzIDAtMS4wNzctLjI5Ny0xLjU4Mi0uNzQ3LS40NDctLjM5OC0xLjAxOC0uOTA1LTEuOTEzLTEuMTMzVjhhMSAxIDAgMCAxIDEtMXpNNCAxOHYtNC43MTRjLjE5MS4xMjMuMzc0LjI3NC41ODMuNDYxQzUuMTc4IDE0LjI3NiA1Ljk5MSAxNSA3LjQ5NSAxNWMxLjUwNSAwIDIuMzE5LS43MjQgMi45MTQtMS4yNTMuNTA3LS40NS44NDEtLjc0NyAxLjU4Ni0uNzQ3czEuMDguMjk4IDEuNTg3Ljc0N2MuNTk1LjUyOSAxLjQwOSAxLjI1MyAyLjkxNSAxLjI1M3MyLjMyMS0uNzI0IDIuOTE2LTEuMjUzYy4yMTEtLjE4OC4zOTUtLjM0LjU4OC0uNDY0TDIwLjAwMiAxOEg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWMtMS4xMDMgMC0yIC44OTctMiAydjE2YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAyMFY0aDE0bC4wMDEgMTZINXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEyaDJ2Mkg3em0wIDRoMnYySDd6bTQtNGgydjJoLTJ6TTcgNmgxMHY0SDd6bTQgMTBoMnYyaC0yem00LTRoMnY2aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbGVuZGFyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDZ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjZhMiAyIDAgMCAwLTItMmgtMlYyaC0ydjJIOVYySDd2Mkg1YTIgMiAwIDAgMC0yIDJ6bTE2IDE0SDVWOGgxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWxlbmRhckNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0yVjJoLTJ2Mkg5VjJIN3YySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNmMwLTEuMTAzLS44OTctMi0yLTJ6bS4wMDIgMTZINVY4aDE0bC4wMDIgMTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEgMTcuNDE0IDUuNzA3LTUuNzA3LTEuNDE0LTEuNDE0TDExIDE0LjU4NmwtMi4yOTMtMi4yOTMtMS40MTQgMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FsZW5kYXJFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0zVjJoLTJ2MmgtNFYySDh2Mkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yek01IDIwVjdoMTRWNmwuMDAyIDE0SDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNjI4IDEyLjE4My0xLjgtMS43OTkgMS4zNy0xLjM3MSAxLjggMS43OTl6bS03LjYyMyA0LjAxOFYxOGgxLjc5OWw0Ljk3Ni00Ljk3LTEuNzk5LTEuNzk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbGVuZGFyRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyaDZ2NmgtNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0yVjJoLTJ2Mkg5VjJIN3YySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNmMwLTEuMTAzLS44OTctMi0yLTJ6bS4wMDEgMTZINVY4aDE0bC4wMDEgMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FsZW5kYXJFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMlYyaC0ydjJIOVYySDd2Mkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yem0uMDAyIDE2SDVWOGgxNGwuMDAyIDEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwaDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWxlbmRhckhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY0OCAxNC43MTEgMTEuOTk3IDE4bDMuMzUtMy4yODlhMi4xMjkgMi4xMjkgMCAwIDAgMC0zLjA2OSAyLjIyNSAyLjIyNSAwIDAgMC0zLjEyNiAwbC0uMjI0LjIxOS0uMjI0LS4yMTlhMi4yMjQgMi4yMjQgMCAwIDAtMy4xMjUgMCAyLjEyOSAyLjEyOSAwIDAgMCAwIDMuMDY5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTJWMmgtMnYySDlWMkg3djJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnptLjAwMiAxNkg1VjhoMTRsLjAwMiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEzaDh2Mkg4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRoLTJWMmgtMnYySDlWMkg3djJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnptLjAwMiAxNkg1VjhoMTRsLjAwMiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVoM3YzaDJ2LTNoM3YtMmgtM3YtM2gtMnYzSDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMlYyaC0ydjJIOVYySDd2Mkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yem0uMDAyIDE2SDVWOGgxNGwuMDAyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbGVuZGFyU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOS45ODEgMTQuODExLS40NjcgMi43MjYgMi40NDktMS4yODcgMi40NDkgMS4yODctLjQ2OC0yLjcyNiAxLjk4Mi0xLjkzMi0yLjczOC0uMzk4TDExLjk2MyAxMGwtMS4yMjUgMi40ODFMOCAxMi44Nzl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtMlYyaC0ydjJIOVYySDd2Mkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yem0uMDAyIDE2SDVWOGgxNGwuMDAyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbGVuZGFyV2VlayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtM1YyaC0ydjJoLTRWMkg4djJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAyMFY3aDE0VjZsLjAwMiAxNEg1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTB2MmgxMFY5SDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FsZW5kYXJYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjI5MyAxNi4yOTMgMS40MTQgMS40MTRMMTIgMTUuNDE0bDIuMjkzIDIuMjkzIDEuNDE0LTEuNDE0TDEzLjQxNCAxNGwyLjI5My0yLjI5My0xLjQxNC0xLjQxNEwxMiAxMi41ODZsLTIuMjkzLTIuMjkzLTEuNDE0IDEuNDE0TDEwLjU4NiAxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA0aC0yVjJoLTJ2Mkg5VjJIN3YySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNmMwLTEuMTAzLS44OTctMi0yLTJ6bS4wMDIgMTZINVY4aDE0bC4wMDIgMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTFoMnYySDd6bTAgNGgydjJIN3ptNC00aDJ2MmgtMnptMCA0aDJ2MmgtMnptNC00aDJ2MmgtMnptMCA0aDJ2MmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMmgtMlYyaC0ydjJIOVYySDd2Mkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJ6TTE5IDhsLjAwMSAxMkg1VjhoMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FtZXJhSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMTI1IDJINS44NzVBMS44NzcgMS44NzcgMCAwIDAgNCAzLjg3NXYxMi4yNUM0IDE3LjE1OSA0Ljg0MSAxOCA1Ljg3NSAxOEgxMXYySDd2MmgxMHYtMmgtNHYtMmg1LjEyNUExLjg3NyAxLjg3NyAwIDAgMCAyMCAxNi4xMjVWMy44NzVBMS44NzcgMS44NzcgMCAwIDAgMTguMTI1IDJ6TTE4IDE2SDZWNGgxMnYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNGMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FtZXJhTW92aWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExYzAtLjk1OS0uNjgtMS43NjEtMS41ODEtMS45NTRDMTYuNzc5IDguNDQ1IDE3IDcuNzUgMTcgN2MwLTIuMjA2LTEuNzk0LTQtNC00LTEuNTE3IDAtMi44MjEuODU3LTMuNSAyLjEwNEM4LjgyMSAzLjg1NyA3LjUxNyAzIDYgMyAzLjc5NCAzIDIgNC43OTQgMiA3YzAgLjkwMi4zMTIgMS43MjcuODE3IDIuMzk2QTEuOTk0IDEuOTk0IDAgMCAwIDIgMTF2OGMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJ2LTIuNjM4bDQgMnYtN2wtNCAyVjExem0tNS02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6TTYgNWMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDItMi0uODk3LTItMiAuODk3LTIgMi0yek00IDE5di04aDEybC4wMDIgOEg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhbWVyYU9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wMTQgMTIuMTM1Yy4wNzQgMi4wNjIgMS43ODkgMy43NzcgMy44NTEgMy44NTFsLTMuODUxLTMuODUxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjBoMTEuODc5bC0yLTJINFY4LjEyMUwyLjE0NCA2LjI2NUExLjk3NiAxLjk3NiAwIDAgMCAyIDd2MTFjMCAxLjEwMy44OTcgMiAyIDJ6TTIwIDVoLTIuNTg2bC0yLjcwNy0yLjcwN0EuOTk2Ljk5NiAwIDAgMCAxNCAyaC00YS45OTcuOTk3IDAgMCAwLS43MDcuMjkzTDYuNTg2IDVoLS4xNzJMMy43MDcgMi4yOTMgMi4yOTMgMy43MDdsMTggMTggMS40MTQtMS40MTQtLjYyNi0uNjI2QTEuOTggMS45OCAwIDAgMCAyMiAxOFY3YzAtMS4xMDMtLjg5Ny0yLTItMnptLTYuMDgxIDcuNTA1LTIuNDI0LTIuNDI1Yy4xNjMtLjA0Ni4zMzEtLjA4LjUwNS0uMDggMS4wNjUgMCAyIC45MzUgMiAyIDAgLjE3NC0uMDMzLjM0Mi0uMDgxLjUwNXptMS41MDIgMS41MDFBMy44ODEgMy44ODEgMCAwIDAgMTYgMTJjMC0yLjE2OC0xLjgzMi00LTQtNC0uNzI5IDAtMS40MTIuMjItMi4wMDcuNTc5TDcuOTE0IDYuNWwyLjUtMi41aDMuMTcybDIuNzA3IDIuNzA3QS45OTYuOTk2IDAgMCAwIDE3IDdsMy0uMDAxVjE4aC0uNTg2bC0zLjk5My0zLjk5NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMTY4IDAtNCAxLjgzMi00IDRzMS44MzIgNCA0IDQgNC0xLjgzMiA0LTQtMS44MzItNC00LTR6bTAgNmMtMS4wNjUgMC0yLS45MzUtMi0ycy45MzUtMiAyLTIgMiAuOTM1IDIgMi0uOTM1IDItMiAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTIuNTg2bC0yLjcwNy0yLjcwN0EuOTk2Ljk5NiAwIDAgMCAxNCAyaC00YS45OTYuOTk2IDAgMCAwLS43MDcuMjkzTDYuNTg2IDVINGMtMS4xMDMgMC0yIC44OTctMiAydjExYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY3YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOFY3aDNjLjI2NiAwIC41Mi0uMTA1LjcwNy0uMjkzTDEwLjQxNCA0aDMuMTcybDIuNzA3IDIuNzA3QS45OTYuOTk2IDAgMCAwIDE3IDdoM2wuMDAyIDExSDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2Fwc3VsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45OTkgMjAuMTMzYTQuOTY5IDQuOTY5IDAgMCAwIDMuNTM2LTEuNDY1bDcuMTM0LTcuMTMzYTUuMDA3IDUuMDA3IDAgMCAwLS4wMDEtNy4wNzJDMTguNzIzIDMuNTIgMTcuNDY3IDMgMTYuMTMyIDNzLTIuNTkxLjUyLTMuNTM0IDEuNDY0bC03LjEzNCA3LjEzNGE1LjAwOSA1LjAwOSAwIDAgMCAwIDcuMDcyIDQuOTcgNC45NyAwIDAgMCAzLjUzNSAxLjQ2M3ptNS4wMTMtMTQuMjU1QTIuOTc5IDIuOTc5IDAgMCAxIDE2LjEzMiA1Yy44MDIgMCAxLjU1Ni4zMTMgMi4xMjIuODc4YTMuMDA0IDMuMDA0IDAgMCAxIC4wMDEgNC4yNDNsLTIuODkzIDIuODkyTDExLjEyIDguNzdsMi44OTItMi44OTJ6bS03LjEzNCA3LjEzNCAyLjgyOC0yLjgyOCA0LjI0MiA0LjI0My0yLjgyNyAyLjgyN2MtMS4xMzMgMS4xMzMtMy4xMSAxLjEzMi00LjI0My4wMDFhMy4wMDUgMy4wMDUgMCAwIDEgMC00LjI0M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXB0aW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMHY0YzAgMS4xMDMuODk3IDIgMiAyaDN2LTJIOHYtNGgzVjhIOGMtMS4xMDMgMC0yIC44OTctMiAyem03IDB2NGMwIDEuMTAzLjg5NyAyIDIgMmgzdi0yaC0zdi00aDNWOGgtM2MtMS4xMDMgMC0yIC44OTctMiAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOFY2aDE2bC4wMDIgMTJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc3MiAxMC4xNTYtMS4zNjgtNC4xMDVBMi45OTUgMi45OTUgMCAwIDAgMTYuNTU5IDRINy40NDFhMi45OTUgMi45OTUgMCAwIDAtMi44NDUgMi4wNTFsLTEuMzY4IDQuMTA1QTIuMDAzIDIuMDAzIDAgMCAwIDIgMTJ2NWMwIC43NTMuNDIzIDEuNDAyIDEuMDM5IDEuNzQzLS4wMTMuMDY2LS4wMzkuMTI2LS4wMzkuMTk1VjIxYTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0yaDEydjJhMSAxIDAgMCAwIDEgMWgxYTEgMSAwIDAgMCAxLTF2LTIuMDYyYzAtLjA2OS0uMDI2LS4xMy0uMDM5LS4xOTVBMS45OTMgMS45OTMgMCAwIDAgMjIgMTd2LTVjMC0uODI5LS41MDgtMS41NDEtMS4yMjgtMS44NDR6TTQgMTd2LTVoMTZsLjAwMiA1SDR6TTcuNDQxIDZoOS4xMTdjLjQzMSAwIC44MTMuMjc0Ljk0OS42ODRMMTguNjEzIDEwSDUuMzg3bDEuMTA1LTMuMzE2QTEgMSAwIDAgMSA3LjQ0MSA2elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNi41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNy41XCIsXCJjeVwiOlwiMTQuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuOTk5IDE3YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMmgtMTJjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxMnptLTEyLTEyaDEybC4wMDIgMTBINS45OTlWNXptLTIgMTRoMTZ2MmgtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZXREb3duQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNiA1LTZIN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZXREb3duU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNiA1LTZIN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTUgMTlWNWgxNGwuMDAyIDE0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZXREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS45OTggMTcgNy04aC0xNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXJldExlZnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE3VjdsLTYgNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZXRMZWZ0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxN1Y3bC02IDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDE5VjVoMTRsLjAwMiAxNEg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTlWNWwtOCA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcmV0UmlnaHRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDYtNS02LTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcmV0UmlnaHRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE3IDYtNS02LTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDE5VjVoMTRsLjAwMiAxNEg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkgMTkgOC03LTgtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXJldFVwQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE0aDEwbC01LTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcmV0VXBTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRoMTBsLTUtNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTUgMTlWNWgxNGwuMDAyIDE0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FyZXRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxNWgxNGwtNy04elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcm91c2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE5aDJjMCAxLjEwMy44OTcgMiAyIDJoOGMxLjEwMyAwIDItLjg5NyAyLTJoMmMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMTAzLS44OTctMi0yLTJoLTJjMC0xLjEwMy0uODk3LTItMi0ySDhjLTEuMTAzIDAtMiAuODk3LTIgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTBjMCAxLjEwMy44OTcgMiAyIDJ6TTIwIDd2MTBoLTJWN2gyek04IDVoOGwuMDAxIDE0SDhWNXpNNCA3aDJ2MTBINFY3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxIDRIMnYyaDIuM2wzLjI4IDlhMyAzIDAgMCAwIDIuODIgMkgxOXYtMmgtOC42YTEgMSAwIDAgMS0uOTQtLjY2TDkgMTNoOS4yOGEyIDIgMCAwIDAgMS45Mi0xLjQ1TDIyIDUuMjdBMSAxIDAgMCAwIDIxLjI3IDQgLjg0Ljg0IDAgMCAwIDIxIDR6bS0yLjc1IDdoLTEwTDYuNDMgNmgxMy4yNHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwLjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxOS41XCIsXCJyXCI6XCIxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS44MjIgNy40MzFBMSAxIDAgMCAwIDIxIDdINy4zMzNMNi4xNzkgNC4yM0ExLjk5NCAxLjk5NCAwIDAgMCA0LjMzMyAzSDJ2MmgyLjMzM2w0Ljc0NCAxMS4zODVBMSAxIDAgMCAwIDEwIDE3aDhjLjQxNyAwIC43OS0uMjU5LjkzNy0uNjQ4bDMtOGExIDEgMCAwIDAtLjExNS0uOTIxek0xNy4zMDcgMTVoLTYuNjRsLTIuNS02aDExLjM5bC0yLjI1IDZ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNy41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMjEuMDAxaDJDMTMgMTQuOTM1IDguMDY1IDEwIDIgMTB2MmM0Ljk2MiAwIDkgNC4wMzggOSA5LjAwMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIxLjAwMWgyQzkgMTcuMTQxIDUuODYgMTQgMiAxNHYyYzIuNzU3IDAgNSAyLjI0MyA1IDUuMDAxelwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMy41XCIsXCJjeVwiOlwiMTkuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2Mi4wNTJjLjY4LjAyNSAxLjM0OS4wOTQgMiAuMjE3VjZoMTZ2MTNoLTUuMjY5Yy4xMjMuNjUxLjE5MSAxLjMyLjIxNyAySDIwYzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDYXRlZ29yeUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgM0g0YTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxaDZhMSAxIDAgMCAwIDEtMVY0YTEgMSAwIDAgMC0xLTF6TTkgOUg1VjVoNHY0em0xMSA0aC02YTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxaDZhMSAxIDAgMCAwIDEtMXYtNmExIDEgMCAwIDAtMS0xem0tMSA2aC00di00aDR2NHpNMTcgM2MtMi4yMDYgMC00IDEuNzk0LTQgNHMxLjc5NCA0IDQgNCA0LTEuNzk0IDQtNC0xLjc5NC00LTQtNHptMCA2Yy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMiAyIC44OTcgMiAyLS44OTcgMi0yIDJ6TTcgMTNjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTIgMiAuODk3IDIgMi0uODk3IDItMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNhdGVnb3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDRhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMXpNOSA5SDVWNWg0djR6bTExLTZoLTZhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMXptLTEgNmgtNFY1aDR2NHptLTkgNEg0YTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxaDZhMSAxIDAgMCAwIDEtMXYtNmExIDEgMCAwIDAtMS0xem0tMSA2SDV2LTRoNHY0em04LTZjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTIgMiAuODk3IDIgMi0uODk3IDItMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNjdHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjkxNiA5LjU2NGEuOTk4Ljk5OCAwIDAgMC0uNTEzLTEuMzE2TDcuMzI4IDIuNDkyYy0uOTk1LS40MzgtMi4yMi4wNTEtMi42NDUgMS4wNDJsLTIuMjEgNS4xNTRhMi4wMDEgMi4wMDEgMCAwIDAgMS4wNTIgMi42MjRMOS41NjMgMTMuOSA4LjMyMyAxN0g0di0zSDJ2OGgydi0zaDQuMzIzYy44MjMgMCAxLjU1Mi0uNDk0IDEuODU2LTEuMjU4bDEuMjIyLTMuMDU0IDUuMjA1IDIuMjNhMSAxIDAgMCAwIDEuMzEtLjUxN2wuMzEyLS43MSAxLjcwMS42OCAyLTUtMS41MzYtLjYxMy41MjMtMS4xOTR6bS00LjQzNCA1LjEyNkw0LjMxMyA5LjQ3NWwyLjIwOC01LjE1MiAxMi4xNjIgNS4zNTQtMi4yMDEgNS4wMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2VydGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wNiAxNC42OGExIDEgMCAwIDAgLjQ2LjZsMS45MSAxLjExdjIuMmExIDEgMCAwIDAgMSAxaDIuMmwxLjExIDEuOTFhMSAxIDAgMCAwIC44Ni41IDEgMSAwIDAgMCAuNTEtLjE0bDEuOS0xLjEgMS45MSAxLjFhMSAxIDAgMCAwIDEuMzctLjM2bDEuMS0xLjkxaDIuMmExIDEgMCAwIDAgMS0xdi0yLjJsMS45MS0xLjExYTEgMSAwIDAgMCAuMzctMS4zNkwyMC43NiAxMmwxLjExLTEuOTFhMSAxIDAgMCAwLS4zNy0xLjM2bC0xLjkxLTEuMXYtMi4yYTEgMSAwIDAgMC0xLTFoLTIuMmwtMS4xLTEuOTFhMSAxIDAgMCAwLS42MS0uNDYgMSAxIDAgMCAwLS43Ni4xTDEyIDMuMjZsLTEuOS0xLjFhMSAxIDAgMCAwLTEuMzYuMzZMNy42MyA0LjQzaC0yLjJhMSAxIDAgMCAwLTEgMXYyLjJsLTEuOSAxLjFhMSAxIDAgMCAwLS4zNyAxLjM3bDEuMSAxLjktMS4xIDEuOTFhMSAxIDAgMCAwLS4xLjc3em0zLjIyLTMuMTdMNC4zOSAxMGwxLjU1LS45YTEgMSAwIDAgMCAuNDktLjg2VjYuNDNoMS43OGExIDEgMCAwIDAgLjg3LS41TDEwIDQuMzlsMS41NC44OWExIDEgMCAwIDAgMSAwbDEuNTUtLjg5LjkxIDEuNTRhMSAxIDAgMCAwIC44Ny41aDEuNzd2MS43OGExIDEgMCAwIDAgLjUuODZsMS41NC45LS44OSAxLjU0YTEgMSAwIDAgMCAwIDFsLjg5IDEuNTQtMS41NC45YTEgMSAwIDAgMC0uNS44NnYxLjc4aC0xLjgzYTEgMSAwIDAgMC0uODYuNWwtLjg5IDEuNTQtMS41NS0uODlhMSAxIDAgMCAwLTEgMGwtMS41MS44OS0uODktMS41NGExIDEgMCAwIDAtLjg3LS41SDYuNDN2LTEuNzhhMSAxIDAgMCAwLS40OS0uODFsLTEuNTUtLjkuODktMS41NGExIDEgMCAwIDAgMC0xLjA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxM1Y0YzAtMS4xMDMtLjg5Ny0yLTItMkg3Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OWExIDEgMCAwIDAtMSAxdjhoMnYtNWgxMnY1aDJ2LThhMSAxIDAgMCAwLTEtMXptLTItOXY5aC0yVjRoMnptLTQgMHY5aC0yVjRoMnpNNyA0aDJ2OUg3VjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hhbGtib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTFjMCAxLjEwMy44OTcgMiAyIDJoNGwtMS44IDIuNCAxLjYgMS4yIDIuNy0zLjZoM2wyLjcgMy42IDEuNi0xLjJMMTYgMThoNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTZWNWgxNmwuMDAxIDExSDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMmg0djJINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMWgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyek01IDVoMTRsLjAwMSAxNEg1VjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNTUzIDExLjY1OC00LTItMi40NDggNC44OTUgMS43OS44OTQgMS41NTItMy4xMDUgNCAyIDIuNDQ4LTQuODk1LTEuNzktLjg5NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE4djMuNzY2bDEuNTE1LS45MDlMMTEuMjc3IDE4SDE2YzEuMTAzIDAgMi0uODk3IDItMlY4YzAtMS4xMDMtLjg5Ny0yLTItMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDEuMTAzLjg5NyAyIDIgMmgxek00IDhoMTJ2OGgtNS4yNzdMNyAxOC4yMzRWMTZINFY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIOGMtMS4xMDMgMC0yIC44OTctMiAyaDEyYzEuMTAzIDAgMiAuODk3IDIgMnY4YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuOTk5IDEzLjU4NyA3LjcgMTEuMjkybC0xLjQxMiAxLjQxNiAzLjcxMyAzLjcwNSA2LjcwNi02LjcwNi0xLjQxNC0xLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGVja0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi4zOTQgMTMuNzQyIDQuNzQzIDMuNjIgNy42MTYtOC43MDQtMS41MDYtMS4zMTYtNi4zODQgNy4yOTYtMy4yNTctMi40ODZ6bTE5LjM1OS01LjA4NC0xLjUwNi0xLjMxNi02LjM2OSA3LjI3OS0uNzUzLS42MDItMS4yNSAxLjU2MiAyLjI0NyAxLjc5OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGVja1NoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTk1IDYuOWEuOTk4Ljk5OCAwIDAgMC0uNTQ4LS43OTVsLTgtNGExIDEgMCAwIDAtLjg5NSAwbC04IDRhMS4wMDIgMS4wMDIgMCAwIDAtLjU0Ny43OTVjLS4wMTEuMTA3LS45NjEgMTAuNzY3IDguNTg5IDE1LjAxNGEuOTg3Ljk4NyAwIDAgMCAuODEyIDBjOS41NS00LjI0NyA4LjYtMTQuOTA2IDguNTg5LTE1LjAxNHpNMTIgMTkuODk3QzUuMjMxIDE2LjYyNSA0LjkxMSA5LjY0MiA0Ljk2NiA3LjYzNUwxMiA0LjExOGw3LjAyOSAzLjUxNWMuMDM3IDEuOTg5LS4zMjggOS4wMTgtNy4wMjkgMTIuMjY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEyLjU4Ni0yLjI5My0yLjI5My0xLjQxNCAxLjQxNEwxMSAxNS40MTRsNS43MDctNS43MDctMS40MTQtMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hlY2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjkzMyAxMy41MTktMi4yMjYtMi4yMjYtMS40MTQgMS40MTQgMy43NzQgMy43NzQgNS43MDItNi44NC0xLjUzOC0xLjI4MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTUgMTlWNWgxNGwuMDAyIDE0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE1LjU4Ni0zLjI5My0zLjI5My0xLjQxNCAxLjQxNEwxMCAxOC40MTRsOS43MDctOS43MDctMS40MTQtMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hlY2tib3hDaGVja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxMGMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMTAzLS44OTctMi0yLTJIN3ptMCAxMlY3aDEwbC4wMDIgMTBIN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45OTYgMTIuNTU2IDkuNyAxMS4yODVsLTEuNCAxLjQzIDIuNzA0IDIuNjQ3IDQuNjk5LTQuNjUxLTEuNDA2LTEuNDIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoZWNrYm94TWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDEgMTFoNnYyaC02elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDVIN2EyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY3YTIgMiAwIDAgMC0yLTJ6TTcgMTdWN2gxMHYxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGVja2JveFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5aDZ2Nkg5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE3VjdjMC0xLjEwMy0uODk3LTItMi0ySDdjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxMGMxLjEwMyAwIDItLjg5NyAyLTJ6TTcgN2gxMGwuMDAyIDEwSDdWN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGVja2JveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTBjMCAxLjEwMy44OTcgMiAyIDJoMTBjMS4xMDMgMCAyLS44OTcgMi0yVjdjMC0xLjEwMy0uODk3LTItMi0ySDd6bTAgMTJWN2gxMGwuMDAyIDEwSDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvbkRvd25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMy41ODYgNy43MDcgOS4yOTNsLTEuNDE0IDEuNDE0TDEyIDE2LjQxNGw1LjcwNy01LjcwNy0xLjQxNC0xLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGV2cm9uRG93blNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMWgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyek01IDVoMTRsLjAwMSAxNEg1VjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTMuNTg2IDcuNzA3IDkuMjkzbC0xLjQxNCAxLjQxNEwxMiAxNi40MTRsNS43MDctNS43MDctMS40MTQtMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvbkRvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjI5MyA5LjI5MyAxMiAxMy41ODYgNy43MDcgOS4yOTNsLTEuNDE0IDEuNDE0TDEyIDE2LjQxNGw1LjcwNy01LjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGV2cm9uTGVmdENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI5MyA2LjI5MyA3LjU4NiAxMmw1LjcwNyA1LjcwNyAxLjQxNC0xLjQxNEwxMC40MTQgMTJsNC4yOTMtNC4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvbkxlZnRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjFoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMnpNNSA1aDE0bC4wMDEgMTRINVY1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI5MyA2LjI5MyA3LjU4NiAxMmw1LjcwNyA1LjcwNyAxLjQxNC0xLjQxNEwxMC40MTQgMTJsNC4yOTMtNC4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjI5MyA2LjI5MyA3LjU4NiAxMmw1LjcwNyA1LjcwNyAxLjQxNC0xLjQxNEwxMC40MTQgMTJsNC4yOTMtNC4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvblJpZ2h0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgNy43MDcgMTMuNTg2IDEybC00LjI5MyA0LjI5MyAxLjQxNCAxLjQxNEwxNi40MTQgMTJsLTUuNzA3LTUuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoZXZyb25SaWdodFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMWgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyek01IDVoMTRsLjAwMSAxNEg1VjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgNy43MDcgMTMuNTg2IDEybC00LjI5MyA0LjI5MyAxLjQxNCAxLjQxNEwxNi40MTQgMTJsLTUuNzA3LTUuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoZXZyb25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzA3IDE3LjcwNyAxNi40MTQgMTJsLTUuNzA3LTUuNzA3LTEuNDE0IDEuNDE0TDEzLjU4NiAxMmwtNC4yOTMgNC4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvblVwQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi4yOTMgMTMuMjkzIDEuNDE0IDEuNDE0TDEyIDEwLjQxNGw0LjI5MyA0LjI5MyAxLjQxNC0xLjQxNEwxMiA3LjU4NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGV2cm9uVXBTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjFoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMnpNNSA1aDE0bC4wMDEgMTRINVY1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuMjkzIDEzLjI5MyAxLjQxNCAxLjQxNEwxMiAxMC40MTRsNC4yOTMgNC4yOTMgMS40MTQtMS40MTRMMTIgNy41ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2hldnJvblVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjI5MyAxMy4yOTMgMS40MTQgMS40MTRMMTIgMTAuNDE0bDQuMjkzIDQuMjkzIDEuNDE0LTEuNDE0TDEyIDcuNTg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoZXZyb25zRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIgMTUuNTg2LTQuMjkzLTQuMjkzLTEuNDE0IDEuNDE0TDEyIDE4LjQxNGw1LjcwNy01LjcwNy0xLjQxNC0xLjQxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy43MDcgNy43MDctMS40MTQtMS40MTRMMTIgMTAuNTg2IDcuNzA3IDYuMjkzIDYuMjkzIDcuNzA3IDEyIDEzLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGV2cm9uc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjcwNyA3LjcwNy0xLjQxNC0xLjQxNEw1LjU4NiAxMmw1LjcwNyA1LjcwNyAxLjQxNC0xLjQxNEw4LjQxNCAxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yOTMgNi4yOTMgMTAuNTg2IDEybDUuNzA3IDUuNzA3IDEuNDE0LTEuNDE0TDEzLjQxNCAxMmw0LjI5My00LjI5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGV2cm9uc1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yOTYgNy43MSAxNC42MjEgMTJsLTQuMzI1IDQuMjkgMS40MDggMS40MkwxNy40NjEgMTJsLTUuNzU3LTUuNzF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi43MDQgNi4yOSA1LjI5NiA3LjcxIDkuNjIxIDEybC00LjMyNSA0LjI5IDEuNDA4IDEuNDJMMTIuNDYxIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNoZXZyb25zVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuMjkzIDExLjI5MyAxLjQxNCAxLjQxNEwxMiA4LjQxNGw0LjI5MyA0LjI5MyAxLjQxNC0xLjQxNEwxMiA1LjU4NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjI5MyAxNi4yOTMgMS40MTQgMS40MTRMMTIgMTMuNDE0bDQuMjkzIDQuMjkzIDEuNDE0LTEuNDE0TDEyIDEwLjU4NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDloNnY2SDl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNmMwLTEuMTAzLS44OTctMi0yLTJoLTJWMmgtMnYyaC00VjJIOHYySDZjLTEuMTAzIDAtMiAuODk3LTIgMnYySDJ2MmgydjRIMnYyaDJ2MmMwIDEuMTAzLjg5NyAyIDIgMmgydjJoMnYtMmg0djJoMnYtMmgyYzEuMTAzIDAgMi0uODk3IDItMnYtMmgydi0yaC0ydi00aDJWOGgtMlY2ek02IDE4VjZoMTJsLjAwMiAxMkg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNDQ3IDE0LjEwNSAxOCAxMi4zODJWMTJhMSAxIDAgMCAwLS40ODUtLjg1N0wxMyA4LjQzNFY2aDJWNGgtMlYyaC0ydjJIOXYyaDJ2Mi40MzRsLTQuNTE1IDIuNzA5QTEgMSAwIDAgMCA2IDEydi4zODJsLTMuNDQ3IDEuNzI0QS45OTguOTk4IDAgMCAwIDIgMTV2NmExIDEgMCAwIDAgMSAxaDE4YTEgMSAwIDAgMCAxLTF2LTZjMC0uMzc5LS4yMTQtLjcyNS0uNTUzLS44OTV6TTQgMTUuNjE4bDItMVYyMEg0di00LjM4MnpNMTIgMTVhMiAyIDAgMCAwLTIgMnYzSDh2LTcuNDM0bDQtMi40IDQgMi40VjIwaC0ydi0zYTIgMiAwIDAgMC0yLTJ6bTggNWgtMnYtNS4zODJsMiAxVjIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMmMuMDAxIDUuNTE1IDQuNDg3IDEwLjAwMSAxMCAxMC4wMDEgNS41MTQgMCAxMC00LjQ4NiAxMC4wMDEtMTAuMDAxIDAtNS41MTQtNC40ODYtMTAtMTAuMDAxLTEwem0wIDE4LjAwMWMtNC40MSAwLTcuOTk5LTMuNTg5LTgtOC4wMDEgMC00LjQxMSAzLjU4OS04IDgtOCA0LjQxMiAwIDguMDAxIDMuNTg5IDguMDAxIDgtLjAwMSA0LjQxMi0zLjU5IDguMDAxLTguMDAxIDguMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNsaW5pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzA3IDIuMjkzYS45OTkuOTk5IDAgMCAwLTEuNDE0IDBsLTkgOUExIDEgMCAwIDAgMyAxM2gxdjdjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi03aDFhLjk5OS45OTkgMCAwIDAgLjcwNy0xLjcwN2wtOS05ek0xOC4wMDEgMjBINnYtOS41ODZsNi02IDYgNlYxNWwuMDAxIDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTBoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTIuMjVhMSAxIDAgMCAwLTEtMWgtNy41YTEgMSAwIDAgMC0xIDFINWMtMS4xMDMgMC0yIC44OTctMiAydjE1YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxN0g1VjVoMnYyaDEwVjVoMnYxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDbG9zZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwLjU1MXYtLjY3OEE0LjAwNSA0LjAwNSAwIDAgMCAxNiA2YzAtMi4yMDYtMS43OTQtNC00LTRTOCAzLjc5NCA4IDZoMmMwLTEuMTAzLjg5Ny0yIDItMnMyIC44OTcgMiAyLS44OTcgMi0yIDJhMSAxIDAgMCAwLTEgMXYxLjU1MWwtOC42NjUgNy43MDJBMS4wMDEgMS4wMDEgMCAwIDAgMyAyMGgxOGExLjAwMSAxLjAwMSAwIDAgMCAuNjY0LTEuNzQ4TDEzIDEwLjU1MXpNNS42MyAxOCAxMiAxMi4zMzggMTguMzcgMThINS42M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDbG91ZERvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC45NDggMTEuMTEyQzE4LjUxMSA3LjY3IDE1LjU2MyA1IDEyLjAwNCA1Yy0yLjc1NiAwLTUuMTUgMS42MTEtNi4yNDMgNC4xNS0yLjE0OC42NDItMy43NTcgMi42Ny0zLjc1NyA0Ljg1IDAgMi43NTcgMi4yNDMgNSA1IDVoMXYtMmgtMWMtMS42NTQgMC0zLTEuMzQ2LTMtMyAwLTEuNDA0IDEuMTk5LTIuNzU3IDIuNjczLTMuMDE2bC41ODEtLjEwMi4xOTItLjU1OEM4LjE1MyA4LjI3MyA5Ljg5OCA3IDEyLjAwNCA3YzIuNzU3IDAgNSAyLjI0MyA1IDV2MWgxYzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMmgtMnYyaDJjMi4yMDYgMCA0LTEuNzk0IDQtNGE0LjAwOCA0LjAwOCAwIDAgMC0zLjA1Ni0zLjg4OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4wMDQgMTR2LTRoLTJ2NGgtM2w0IDUgNC01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNsb3VkRHJpenpsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxM2gydjNIOHptMCA0aDJ2M0g4em0zLTJoMnYzaC0yem0wIDRoMnYzaC0yem0zLTZoMnYzaC0yem0wIDRoMnYzaC0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk0NCAxMC4xMTJDMTguNTA3IDYuNjcgMTUuNTYgNCAxMiA0IDkuMjQ1IDQgNi44NSA1LjYxMSA1Ljc1NyA4LjE1IDMuNjA5IDguNzkyIDIgMTAuODE5IDIgMTNjMCAyLjc1NyAyLjI0MyA1IDUgNXYtMmMtMS42NTQgMC0zLTEuMzQ2LTMtMyAwLTEuNDAzIDEuMTk5LTIuNzU2IDIuNjczLTMuMDE1bC41ODItLjEwMy4xOTEtLjU1OUM4LjE0OSA3LjI3MyA5Ljg5NSA2IDEyIDZjMi43NTcgMCA1IDIuMjQzIDUgNXYxaDFjMS4xMDMgMCAyIC44OTcgMiAycy0uODk3IDItMiAyaC0xdjJoMWMyLjIwNiAwIDQtMS43OTQgNC00YTQuMDA4IDQuMDA4IDAgMCAwLTMuMDU2LTMuODg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNsb3VkTGlnaHRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEzaDJ2NEg4em0wIDVoMnYySDh6bTMtM2gydjRoLTJ6bTAgNWgydjJoLTJ6bTMtN2gydjRoLTJ6bTAgNWgydjJoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTQ0IDEwLjExMkMxOC41MDcgNi42NyAxNS41NiA0IDEyIDQgOS4yNDQgNCA2Ljg1IDUuNjExIDUuNzU3IDguMTUgMy42MDkgOC43OTIgMiAxMC44MTkgMiAxM2MwIDIuNzU3IDIuMjQzIDUgNSA1di0yYy0xLjY1NCAwLTMtMS4zNDYtMy0zIDAtMS40MDMgMS4xOTktMi43NTYgMi42NzMtMy4wMTVsLjU4MS0uMTAzLjE5Mi0uNTU5QzguMTQ5IDcuMjczIDkuODk1IDYgMTIgNmMyLjc1NyAwIDUgMi4yNDMgNSA1djFoMWMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTF2MmgxYzIuMjA2IDAgNC0xLjc5NCA0LTRhNC4wMDggNC4wMDggMCAwIDAtMy4wNTYtMy44ODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2xvdWRMaWdodG5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDEzLTEgNWgydjRsMy45NzUtNkgxM2wxLTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTQ0IDEwLjExMkMxOC41MDcgNi42NyAxNS41NiA0IDEyIDQgOS4yNDQgNCA2Ljg1IDUuNjExIDUuNzU3IDguMTUgMy42MDkgOC43OTIgMiAxMC44MTkgMiAxM2MwIDIuNzU3IDIuMjQzIDUgNSA1di0yYy0xLjY1NCAwLTMtMS4zNDYtMy0zIDAtMS40MDMgMS4xOTktMi43NTYgMi42NzMtMy4wMTVsLjU4MS0uMTAzLjE5Mi0uNTU5QzguMTQ5IDcuMjczIDkuODk1IDYgMTIgNmMyLjc1NyAwIDUgMi4yNDMgNSA1djFoMWMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTF2MmgxYzIuMjA2IDAgNC0xLjc5NCA0LTRhNC4wMDggNC4wMDggMCAwIDAtMy4wNTYtMy44ODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2xvdWRSYWluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEzaDJ2N0g4em0zIDJoMnY3aC0yem0zLTJoMnY3aC0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk0NCAxMC4xMTNDMTguNTA3IDYuNjcxIDE1LjU2IDQuMDAxIDEyIDQuMDAxYy0yLjc1NiAwLTUuMTUgMS42MTEtNi4yNDMgNC4xNUMzLjYwOSA4Ljc5MyAyIDEwLjgyIDIgMTMuMDAxYzAgMi43NTcgMi4yNDMgNSA1IDV2LTJjLTEuNjU0IDAtMy0xLjM0Ni0zLTMgMC0xLjQwMyAxLjE5OS0yLjc1NiAyLjY3My0zLjAxNWwuNTgxLS4xMDMuMTkyLS41NTlDOC4xNDkgNy4yNzQgOS44OTUgNi4wMDEgMTIgNi4wMDFjMi43NTcgMCA1IDIuMjQzIDUgNXYxaDFjMS4xMDMgMCAyIC44OTcgMiAycy0uODk3IDItMiAyaC0xdjJoMWMyLjIwNiAwIDQtMS43OTQgNC00YTQuMDA4IDQuMDA4IDAgMCAwLTMuMDU2LTMuODg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNsb3VkU25vdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguOTQ0IDEwLjExMkMxOC41MDcgNi42NyAxNS41NiA0IDEyIDQgOS4yNDQgNCA2Ljg1IDUuNjExIDUuNzU3IDguMTUgMy42MDkgOC43OTIgMiAxMC44MTkgMiAxM2MwIDIuNzU3IDIuMjQzIDUgNSA1di0yYy0xLjY1NCAwLTMtMS4zNDYtMy0zIDAtMS40MDMgMS4xOTktMi43NTYgMi42NzMtMy4wMTVsLjU4MS0uMTAzLjE5Mi0uNTU5QzguMTQ5IDcuMjczIDkuODk1IDYgMTIgNmMyLjc1NyAwIDUgMi4yNDMgNSA1djFoMWMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJoLTF2MmgxYzIuMjA2IDAgNC0xLjc5NCA0LTRhNC4wMDggNC4wMDggMCAwIDAtMy4wNTYtMy44ODh6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNVwiLFwiY3lcIjpcIjE5XCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjIxXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTlcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjlcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxOXYtNGgzbC00LTUtNCA1aDN2NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE5aDJ2LTJIN2MtMS42NTQgMC0zLTEuMzQ2LTMtMyAwLTEuNDA0IDEuMTk5LTIuNzU2IDIuNjczLTMuMDE1bC41ODEtLjEwMi4xOTItLjU1OEM4LjE0OSA4LjI3NCA5Ljg5NSA3IDEyIDdjMi43NTcgMCA1IDIuMjQzIDUgNXYxaDFjMS4xMDMgMCAyIC44OTcgMiAycy0uODk3IDItMiAyaC0zdjJoM2MyLjIwNiAwIDQtMS43OTQgNC00YTQuMDEgNC4wMSAwIDAgMC0zLjA1Ni0zLjg4OEMxOC41MDcgNy42NyAxNS41NiA1IDEyIDUgOS4yNDQgNSA2Ljg1IDYuNjExIDUuNzU3IDkuMTUgMy42MDkgOS43OTIgMiAxMS44MiAyIDE0YzAgMi43NTcgMi4yNDMgNSA1IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ljk0NCAxMS4xMTJDMTguNTA3IDcuNjcgMTUuNTYgNSAxMiA1IDkuMjQ0IDUgNi44NSA2LjYxMSA1Ljc1NyA5LjE1IDMuNjA5IDkuNzkyIDIgMTEuODIgMiAxNGMwIDIuNzU3IDIuMjQzIDUgNSA1aDExYzIuMjA2IDAgNC0xLjc5NCA0LTRhNC4wMSA0LjAxIDAgMCAwLTMuMDU2LTMuODg4ek0xOCAxN0g3Yy0xLjY1NCAwLTMtMS4zNDYtMy0zIDAtMS40MDQgMS4xOTktMi43NTYgMi42NzMtMy4wMTVsLjU4MS0uMTAyLjE5Mi0uNTU4QzguMTQ5IDguMjc0IDkuODk1IDcgMTIgN2MyLjc1NyAwIDUgMi4yNDMgNSA1djFoMWMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29kZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4zNzUgMTYuNzgxIDEuMjUtMS41NjJMNC42MDEgMTJsNC4wMjQtMy4yMTktMS4yNS0xLjU2Mi01IDRhMSAxIDAgMCAwIDAgMS41NjJsNSA0em05LjI1LTkuNTYyLTEuMjUgMS41NjJMMTkuMzk5IDEybC00LjAyNCAzLjIxOSAxLjI1IDEuNTYyIDUtNGExIDEgMCAwIDAgMC0xLjU2MmwtNS00em0tMS42NDktNC4wMDMtNCAxOC0xLjk1My0uNDM0IDQtMTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29kZUJsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTlWN2gxNmwuMDAyIDEySDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgOS4yOTMgNS41ODYgMTNsMy43MDcgMy43MDcgMS40MTQtMS40MTRMOC40MTQgMTNsMi4yOTMtMi4yOTN6bTUuNDE0IDAtMS40MTQgMS40MTRMMTUuNTg2IDEzbC0yLjI5MyAyLjI5MyAxLjQxNCAxLjQxNEwxOC40MTQgMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29kZUN1cmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIyaDF2LTJoLS45ODlDOC43MDMgMTkuOTk0IDYgMTkuODI3IDYgMTZjMC0xLjk5My0uNjY1LTMuMjQ2LTEuNTAyLTRDNS4zMzUgMTEuMjQ2IDYgOS45OTMgNiA4YzAtMy44MjcgMi43MDMtMy45OTQgMy00aDFWMkg4Ljk5OEM3LjI2OSAyLjAwNCA0IDMuMjY0IDQgOGMwIDIuOC0xLjY3OCAyLjk5LTIuMDE0IDNMMiAxM2MuMDgyIDAgMiAuMDM0IDIgMyAwIDQuNzM2IDMuMjY5IDUuOTk2IDUgNnptMTMtMTFjLS4wODIgMC0yLS4wMzQtMi0zIDAtNC43MzYtMy4yNjktNS45OTYtNS02aC0xdjJoLjk4OWMuMzA4LjAwNiAzLjAxMS4xNzMgMy4wMTEgNCAwIDEuOTkzLjY2NSAzLjI0NiAxLjUwMiA0LS44MzcuNzU0LTEuNTAyIDIuMDA3LTEuNTAyIDQgMCAzLjgyNy0yLjcwMyAzLjk5NC0zIDRoLTF2MmgxLjAwMkMxNi43MzEgMjEuOTk2IDIwIDIwLjczNiAyMCAxNmMwLTIuOCAxLjY3OC0yLjk5IDIuMDE0LTNMMjIgMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yOTMgNi4yOTMgMi41ODYgMTJsNS43MDcgNS43MDcgMS40MTQtMS40MTRMNS40MTQgMTJsNC4yOTMtNC4yOTN6bTcuNDE0IDExLjQxNEwyMS40MTQgMTJsLTUuNzA3LTUuNzA3LTEuNDE0IDEuNDE0TDE4LjU4NiAxMmwtNC4yOTMgNC4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29mZmVlVG9nbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAyMmgxMGExIDEgMCAwIDAgLjk5LS44NThMMTkuODY3IDhIMjFWNmgtMS4zODJsLTEuNzI0LTMuNDQ3QS45OTguOTk4IDAgMCAwIDE3IDJIN2MtLjM3OSAwLS43MjUuMjE0LS44OTUuNTUzTDQuMzgyIDZIM3YyaDEuMTMzTDYuMDEgMjEuMTQyQTEgMSAwIDAgMCA3IDIyem0xMC40MTgtMTFINi41ODJsLS40MjktM2gxMS42OTNsLS40MjggM3ptLTkuNTUxIDktLjQyOS0zaDkuMTIzbC0uNDI5IDNINy44Njd6TTcuNjE4IDRoOC43NjRsMSAySDYuNjE4bDEtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb2ZmZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMmgydjNINXptNCAwaDJ2M0g5em00IDBoMnYzaC0yem02IDdoLTJWN0gzdjExYzAgMS42NTQgMS4zNDYgMyAzIDNoOGMxLjY1NCAwIDMtMS4zNDYgMy0zaDJjMS4xMDMgMCAyLS44OTcgMi0ydi01YzAtMS4xMDMtLjg5Ny0yLTItMnptLTQgOWExIDEgMCAwIDEtMSAxSDZhMSAxIDAgMCAxLTEtMVY5aDEwdjl6bTItMnYtNWgybC4wMDIgNUgxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE2YzIuMjA2IDAgNC0xLjc5NCA0LTRzLTEuNzk0LTQtNC00LTQgMS43OTQtNCA0IDEuNzk0IDQgNCA0em0wLTZjMS4wODQgMCAyIC45MTYgMiAycy0uOTE2IDItMiAyLTItLjkxNi0yLTIgLjkxNi0yIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjg0NSAxNi4xMzYgMSAxLjczYy41MzEuOTE3IDEuODA5IDEuMjYxIDIuNzMuNzNsLjUyOS0uMzA2QTguMSA4LjEgMCAwIDAgOSAxOS40MDJWMjBjMCAxLjEwMy44OTcgMiAyIDJoMmMxLjEwMyAwIDItLjg5NyAyLTJ2LS41OThhOC4xMzIgOC4xMzIgMCAwIDAgMS44OTYtMS4xMTFsLjUyOS4zMDZjLjkyMy41MyAyLjE5OC4xODggMi43MzEtLjczMWwuOTk5LTEuNzI5YTIuMDAxIDIuMDAxIDAgMCAwLS43MzEtMi43MzJsLS41MDUtLjI5MmE3LjcxOCA3LjcxOCAwIDAgMCAwLTIuMjI0bC41MDUtLjI5MmEyLjAwMiAyLjAwMiAwIDAgMCAuNzMxLTIuNzMybC0uOTk5LTEuNzI5Yy0uNTMxLS45Mi0xLjgwOC0xLjI2NS0yLjczMS0uNzMybC0uNTI5LjMwNkE4LjEgOC4xIDAgMCAwIDE1IDQuNTk4VjRjMC0xLjEwMy0uODk3LTItMi0yaC0yYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2LjU5OGE4LjEzMiA4LjEzMiAwIDAgMC0xLjg5NiAxLjExMWwtLjUyOS0uMzA2Yy0uOTI0LS41MzEtMi4yLS4xODctMi43MzEuNzMybC0uOTk5IDEuNzI5YTIuMDAxIDIuMDAxIDAgMCAwIC43MzEgMi43MzJsLjUwNS4yOTJhNy42ODMgNy42ODMgMCAwIDAgMCAyLjIyM2wtLjUwNS4yOTJhMi4wMDMgMi4wMDMgMCAwIDAtLjczMSAyLjczM3ptMy4zMjYtMi43NThBNS43MDMgNS43MDMgMCAwIDEgNiAxMmMwLS40NjIuMDU4LS45MjYuMTctMS4zNzhhLjk5OS45OTkgMCAwIDAtLjQ3LTEuMTA4bC0xLjEyMy0uNjUuOTk4LTEuNzI5IDEuMTQ1LjY2MmEuOTk3Ljk5NyAwIDAgMCAxLjE4OC0uMTQyIDYuMDcxIDYuMDcxIDAgMCAxIDIuMzg0LTEuMzk5QTEgMSAwIDAgMCAxMSA1LjNWNGgydjEuM2ExIDEgMCAwIDAgLjcwOC45NTYgNi4wODMgNi4wODMgMCAwIDEgMi4zODQgMS4zOTkuOTk5Ljk5OSAwIDAgMCAxLjE4OC4xNDJsMS4xNDQtLjY2MSAxIDEuNzI5LTEuMTI0LjY0OWExIDEgMCAwIDAtLjQ3IDEuMTA4Yy4xMTIuNDUyLjE3LjkxNi4xNyAxLjM3OCAwIC40NjEtLjA1OC45MjUtLjE3MSAxLjM3OGExIDEgMCAwIDAgLjQ3MSAxLjEwOGwxLjEyMy42NDktLjk5OCAxLjcyOS0xLjE0NS0uNjYxYS45OTYuOTk2IDAgMCAwLTEuMTg4LjE0MiA2LjA3MSA2LjA3MSAwIDAgMS0yLjM4NCAxLjM5OUExIDEgMCAwIDAgMTMgMTguN2wuMDAyIDEuM0gxMXYtMS4zYTEgMSAwIDAgMC0uNzA4LS45NTYgNi4wODMgNi4wODMgMCAwIDEtMi4zODQtMS4zOTkuOTkyLjk5MiAwIDAgMC0xLjE4OC0uMTQxbC0xLjE0NC42NjItMS0xLjcyOSAxLjEyNC0uNjUxYTEgMSAwIDAgMCAuNDcxLTEuMTA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvaW5TdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjMy45NzYgMCA4LTEuMzc0IDgtNFY2YzAtMi42MjYtNC4wMjQtNC04LTRTNCAzLjM3NCA0IDZ2MTJjMCAyLjYyNiA0LjAyNCA0IDggNHptMC0yYy0zLjcyMiAwLTYtMS4yOTUtNi0ydi0xLjI2OEM3LjU0MSAxNy41NyA5Ljc3NyAxOCAxMiAxOHM0LjQ1OS0uNDMgNi0xLjI2OFYxOGMwIC43MDUtMi4yNzggMi02IDJ6bTAtMTZjMy43MjIgMCA2IDEuMjk1IDYgMnMtMi4yNzggMi02IDItNi0xLjI5NS02LTIgMi4yNzgtMiA2LTJ6TTYgOC43MzJDNy41NDEgOS41NyA5Ljc3NyAxMCAxMiAxMHM0LjQ1OS0uNDMgNi0xLjI2OFYxMGMwIC43MDUtMi4yNzggMi02IDJzLTYtMS4yOTUtNi0yVjguNzMyem0wIDRDNy41NDEgMTMuNTcgOS43NzcgMTQgMTIgMTRzNC40NTktLjQzIDYtMS4yNjhWMTRjMCAuNzA1LTIuMjc4IDItNiAycy02LTEuMjk1LTYtMnYtMS4yNjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNkM3LjAzIDYgMiA3LjU0NiAyIDEwLjV2NEMyIDE3LjQ1NCA3LjAzIDE5IDEyIDE5czEwLTEuNTQ2IDEwLTQuNXYtNEMyMiA3LjU0NiAxNi45NyA2IDEyIDZ6bS04IDguNXYtMS4xOTdhOS45ODkgOS45ODkgMCAwIDAgMiAuODZ2MS44ODFjLTEuMzEyLS41MTQtMi0xLjEyNi0yLTEuNTQ0em0xMiAuMTQ4djEuOTcxYy0uODY3LjE3OS0xLjg2Ny4zMS0zIC4zNTh2LTJhMjEuNzUgMjEuNzUgMCAwIDAgMy0uMzI5em0tNSAyLjMzYTE4Ljc4OCAxOC43ODggMCAwIDEtMy0uMzU4di0xLjk3MWMuOTU5LjE3NCAxLjk3Mi4yODcgMyAuMzN2MS45OTl6bTctLjkzNHYtMS44ODFhOS45MzEgOS45MzEgMCAwIDAgMi0uODZWMTQuNWMwIC40MTgtLjY4NyAxLjAzLTIgMS41NDR6TTEyIDEzYy01LjE3NyAwLTgtMS42NTEtOC0yLjVTNi44MjMgOCAxMiA4czggMS42NTEgOCAyLjUtMi44MjMgMi41LTggMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbGxhcHNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xMjEgNi40NjUgMTQgNC4zNDRWMTBoNS42NTZsLTIuMTIxLTIuMTIxIDMuMTcyLTMuMTcyLTEuNDE0LTEuNDE0ek00LjcwNyAzLjI5MyAzLjI5MyA0LjcwN2wzLjE3MiAzLjE3Mkw0LjM0NCAxMEgxMFY0LjM0NEw3Ljg3OSA2LjQ2NXpNMTkuNjU2IDE0SDE0djUuNjU2bDIuMTIxLTIuMTIxIDMuMTcyIDMuMTcyIDEuNDE0LTEuNDE0LTMuMTcyLTMuMTcyek02LjQ2NSAxNi4xMjFsLTMuMTcyIDMuMTcyIDEuNDE0IDEuNDE0IDMuMTcyLTMuMTcyTDEwIDE5LjY1NlYxNEg0LjM0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb2xsZWN0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxMEg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJ2LThjMC0xLjEwMy0uODk3LTItMi0yek01IDIwdi04aDE0bC4wMDIgOEg1ek01IDZoMTR2Mkg1em0yLTRoMTB2Mkg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbG9yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTMuOTk4Yy0uMDkyLjA2NS0yIDIuMDgzLTIgMy41IDAgMS40OTQuOTQ5IDIuNDQ4IDIgMi41LjkwNi4wNDQgMi0uODkxIDItMi41IDAtMS41LTEuOTA4LTMuNDM1LTItMy41em0tMTYuNTg2LTFjMCAuNTM0LjIwOCAxLjAzNi41ODYgMS40MTRsNS41ODYgNS41ODZjLjM3OC4zNzguODguNTg2IDEuNDE0LjU4NnMxLjAzNi0uMjA4IDEuNDE0LS41ODZsNy03LS43MDctLjcwN0wxMSA0LjU4NCA4LjcwNyAyLjI5MSA3LjI5MyAzLjcwNWwyLjI5MyAyLjI5M0w0IDExLjU4NGMtLjM3OC4zNzgtLjU4Ni44OC0uNTg2IDEuNDE0ek0xMSA3LjQxMmw1LjU4NiA1LjU4NkwxMSAxOC41ODRoLjAwMWwtLjAwMSAxdi0xbC01LjU4Ni01LjU4NkwxMSA3LjQxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb2x1bW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS44OTMgMy4wMDFINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE1Ljg5M2MxLjEwMyAwIDItLjg5NyAyLTJWNWEyLjAwMyAyLjAwMyAwIDAgMC0yLTEuOTk5ek04IDE5LjAwMUg0VjhoNHYxMS4wMDF6bTYgMGgtNFY4aDR2MTEuMDAxem0yIDBWOGgzLjg5M2wuMDAxIDExLjAwMUgxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb21tYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0Yy0yLjIwNiAwLTQgMS43OTQtNCA0czEuNzk0IDQgNCA0YTQuMDAzIDQuMDAzIDAgMCAwIDMuOTk4LTMuOThIMTBWMTZoNHYyLjAzOWguMDA0QTQuMDAyIDQuMDAyIDAgMCAwIDE4IDIyYzIuMjA2IDAgNC0xLjc5NCA0LTRzLTEuNzk0LTQtNC00aC0ydi00aDJjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTQtNCAxLjc5NC00IDR2MmgtNFY1Ljk4aC0uMDAyQTQuMDAzIDQuMDAzIDAgMCAwIDYgMkMzLjc5NCAyIDIgMy43OTQgMiA2czEuNzk0IDQgNCA0aDJ2NEg2em0yIDRjMCAxLjEyMi0uODc5IDItMiAycy0yLS44NzgtMi0yIC44NzktMiAyLTJoMnYyem0xMC0yYzEuMTIxIDAgMiAuODc4IDIgMnMtLjg3OSAyLTIgMi0yLS44NzgtMi0ydi0yaDJ6TTE2IDZjMC0xLjEyMi44NzktMiAyLTJzMiAuODc4IDIgMi0uODc5IDItMiAyaC0yVjZ6TTYgOGMtMS4xMjEgMC0yLS44NzgtMi0ycy44NzktMiAyLTIgMiAuODc4IDIgMnYySDZ6bTQgMmg0djRoLTR2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29tbWVudEFkZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTRoMnYtM2gzVjloLTNWNmgtMnYzSDh2MmgzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjE4bDUuMzMzLTRIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0SDYuNjY3TDQgMThWNGgxNnYxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb21tZW50Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3LjIwNyA4LjIwNy0xLjQxNC0xLjQxNEwxMSAxMS41ODYgOC43MDcgOS4yOTNsLTEuNDE0IDEuNDE0TDExIDE0LjQxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxOGw1LjMzMy00SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNEg2LjY2N0w0IDE4VjRoMTZ2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29tbWVudERldGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEwdjJIN3ptMCA0aDd2Mkg3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjE4bDUuMzMzLTRIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0SDYuNjY3TDQgMThWNGgxNnYxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MThsNS4zMzMtNEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRINi42NjdMNCAxOFY0aDE2djEyelwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29tbWVudEVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjc3MSA5LjEyMy0xLjM5OS0xLjM5OC0zLjg2OSAzLjg2NHYxLjM5OGgxLjM5OHpNMTQuMDk4IDZsMS4zOTggMS4zOTgtMS4wNjcgMS4wNjctMS4zOTgtMS4zOTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MThsNS4zMzMtNEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRINi42NjdMNCAxOFY0aDE2djEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbW1lbnRFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgydjVoLTJ6bTAgNmgydjJoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MThsNS4zMzMtNEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRINi42NjdMNCAxOFY0aDE2djEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbW1lbnRNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5aDh2Mkg4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjE4bDUuMzMzLTRIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0SDYuNjY3TDQgMThWNGgxNnYxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb21tZW50WCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS43MDcgMTMuNzA3IDEyIDExLjQxNGwyLjI5MyAyLjI5MyAxLjQxNC0xLjQxNEwxMy40MTQgMTBsMi4yOTMtMi4yOTMtMS40MTQtMS40MTRMMTIgOC41ODYgOS43MDcgNi4yOTMgOC4yOTMgNy43MDcgMTAuNTg2IDEwbC0yLjI5MyAyLjI5M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxOGw1LjMzMy00SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNEg2LjY2N0w0IDE4VjRoMTZ2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MThsNS4zMzMtNEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRINi42NjdMNCAxOFY0aDE2djEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDE2IDUuOTkxLTJMMTYgOGwtNiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvbmZ1c2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjQ5M1wiLFwiY3lcIjpcIjEwLjQ5M1wiLFwiclwiOlwiMS40OTNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjEyNCAxNi45OTItLjI0OC0xLjk4NCA4LTEgLjI0OCAxLjk4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb252ZXJzYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE0aC41Yy44MjcgMCAxLjUtLjY3MyAxLjUtMS41di05YzAtLjgyNy0uNjczLTEuNS0xLjUtMS41aC0xM0MyLjY3MyAyIDIgMi42NzMgMiAzLjVWMThsNS4zMzMtNEgxNnptLTkuMzMzLTJMNCAxNFY0aDEydjhINi42Njd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuNSA4SDIwdjYuMDAxYzAgMS4xLS44OTMgMS45OTMtMS45OSAxLjk5OUg4di41YzAgLjgyNy42NzMgMS41IDEuNSAxLjVoNy4xNjdMMjIgMjJWOS41YzAtLjgyNy0uNjczLTEuNS0xLjUtMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvb2tpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNTk4IDExLjA2NGExLjAwNiAxLjAwNiAwIDAgMC0uODU0LS4xNzJBMi45MzggMi45MzggMCAwIDEgMjAgMTFjLTEuNjU0IDAtMy0xLjM0Ni0zLjAwMy0yLjkzNy4wMDUtLjAzNC4wMTYtLjEzNi4wMTctLjE3YS45OTguOTk4IDAgMCAwLTEuMjU0LTEuMDA2QTIuOTYzIDIuOTYzIDAgMCAxIDE1IDdjLTEuNjU0IDAtMy0xLjM0Ni0zLTMgMC0uMjE3LjAzMS0uNDQ0LjA5OS0uNzE2YTEgMSAwIDAgMC0xLjA2Ny0xLjIzNkE5Ljk1NiA5Ljk1NiAwIDAgMCAyIDEyYzAgNS41MTQgNC40ODYgMTAgMTAgMTBzMTAtNC40ODYgMTAtMTBjMC0uMDQ5LS4wMDMtLjA5Ny0uMDA3LS4xNmExLjAwNCAxLjAwNCAwIDAgMC0uMzk1LS43NzZ6TTEyIDIwYy00LjQxMSAwLTgtMy41ODktOC04YTcuOTYyIDcuOTYyIDAgMCAxIDYuMDA2LTcuNzVBNS4wMDYgNS4wMDYgMCAwIDAgMTUgOWwuMTAxLS4wMDFhNS4wMDcgNS4wMDcgMCAwIDAgNC44MzcgNEMxOS40NDQgMTYuOTQxIDE2LjA3MyAyMCAxMiAyMHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyLjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjguNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMi41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNS41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEwLjVcIixcImN5XCI6XCIxNi41XCIsXCJyXCI6XCIxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42ODMgMTQuODI4YTQuMDU1IDQuMDU1IDAgMCAxLTEuMjcyLjg1OCA0LjAwMiA0LjAwMiAwIDAgMS00Ljg3NS0xLjQ1bC0xLjY1OCAxLjExOWE2LjA2MyA2LjA2MyAwIDAgMCAxLjYyMSAxLjYyIDUuOTYzIDUuOTYzIDAgMCAwIDIuMTQ4LjkwMyA2LjAzNSA2LjAzNSAwIDAgMCAzLjU0Mi0uMzUgNi4wNDggNi4wNDggMCAwIDAgMS45MDctMS4yODRjLjI3Mi0uMjcxLjUyLS41NzEuNzM0LS44ODlsLTEuNjU4LTEuMTE5YTQuMTQ3IDQuMTQ3IDAgMCAxLS40ODkuNTkyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAyYzIuOTUzIDAgNS41MzEgMS42MTMgNi45MTggNEg1LjA4MkM2LjQ2OSA1LjYxMyA5LjA0NyA0IDEyIDR6bTAgMTZjLTQuNDExIDAtOC0zLjU4OS04LTggMC0uNjkxLjA5OC0xLjM1OS4yNjQtMkg1djFhMiAyIDAgMCAwIDIgMmgyYTIgMiAwIDAgMCAyLTJoMmEyIDIgMCAwIDAgMiAyaDJhMiAyIDAgMCAwIDItMnYtMWguNzM2Yy4xNjYuNjQxLjI2NCAxLjMwOS4yNjQgMiAwIDQuNDExLTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNvcHlBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJIMTBjLTEuMTAzIDAtMiAuODk3LTIgMnY0SDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxMGMxLjEwMyAwIDItLjg5NyAyLTJ2LTRoNGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMjBWMTBoMTBsLjAwMiAxMEg0em0xNi02aC00di00YzAtMS4xMDMtLjg5Ny0yLTItMmgtNFY0aDEwdjEwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJoNnYySDZ6bTAgNGg2djJINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDEwYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NEg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTBjMCAxLjEwMy44OTcgMiAyIDJoMTBjMS4xMDMgMCAyLS44OTcgMi0ydi00aDRjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yek00IDIwVjEwaDEwbC4wMDIgMTBINHptMTYtNmgtNHYtNGMwLTEuMTAzLS44OTctMi0yLTJoLTRWNGgxMHYxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDb3B5cmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzUuNDIxIDAgMTAtNC41NzkgMTAtMTBTMTcuNDIxIDIgMTIgMiAyIDYuNTc5IDIgMTJzNC41NzkgMTAgMTAgMTB6bTAtMThjNC4zMzcgMCA4IDMuNjYzIDggOHMtMy42NjMgOC04IDgtOC0zLjY2My04LTggMy42NjMtOCA4LTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTdjLjkwMSAwIDIuNTgxLS4xNjggMy43MDctMS4yOTJsLTEuNDE0LTEuNDE2QzEzLjg1IDE0LjczNSAxMi45OTIgMTUgMTIgMTVjLTEuNjI2IDAtMy0xLjM3NC0zLTNzMS4zNzQtMyAzLTNjLjk5MyAwIDEuODUxLjI2NSAyLjI5My43MDdsMS40MTQtMS40MTRDMTQuNTgyIDcuMTY4IDEyLjkwMSA3IDEyIDdjLTIuNzU3IDAtNSAyLjI0My01IDVzMi4yNDMgNSA1IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ3JlZGl0Q2FyZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMi41XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTMuNWMwLS44MTUuMzk2LTEuNTMyIDEtMS45ODhBMi40NyAyLjQ3IDAgMCAwIDExLjUgMTFhMi41IDIuNSAwIDEgMCAwIDUgMi40NyAyLjQ3IDAgMCAwIDEuNS0uNTEyIDIuNDg2IDIuNDg2IDAgMCAxLTEtMS45ODh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yek00IDE4VjZoMTZsLjAwMiAxMkg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNyZWRpdENhcmRGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yek00IDE4VjZoMTZsLjAwMSAxMkg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxMWgzYS41LjUgMCAwIDAgLjUtLjV2LTJhLjUuNSAwIDAgMC0uNS0uNWgtM2EuNS41IDAgMCAwLS41LjV2MmEuNS41IDAgMCAwIC41LjV6TTYgMTRoNnYyLjAwMUg2em03IDBoNXYyLjAwMWgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNmMwLTEuMTAzLS44OTctMi0yLTJ6TTQgNmgxNnYySDRWNnptMCAxMnYtNmgxNi4wMDFsLjAwMSA2SDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNGg2djJINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSA3YzAtMS4xMDMtLjg5Ny0yLTItMkg3VjJINXYzSDJ2MmgxNXYxNWgydi0zaDN2LTJoLTNWN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDl2OGMwIDEuMTAzLjg5NyAyIDIgMmg4di0ySDdWOUg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUNyb3NzaGFpciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0xIDE3LjkzMVYxN2gtMnYyLjkzMUE4LjAwOCA4LjAwOCAwIDAgMSA0LjA2OSAxM0g3di0ySDQuMDY5QTguMDA4IDguMDA4IDAgMCAxIDExIDQuMDY5VjdoMlY0LjA2OUE4LjAwNyA4LjAwNyAwIDAgMSAxOS45MzEgMTFIMTd2MmgyLjkzMUE4LjAwOCA4LjAwOCAwIDAgMSAxMyAxOS45MzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ3Jvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjIxOSAzLjM3NSA4IDcuMzk5IDQuNzgxIDMuMzc1QTEuMDAyIDEuMDAyIDAgMCAwIDMgNHYxNWMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNGExLjAwMiAxLjAwMiAwIDAgMC0xLjc4MS0uNjI1TDE2IDcuMzk5bC0zLjIxOS00LjAyNGMtLjM4MS0uNDc0LTEuMTgxLS40NzQtMS41NjIgMHpNNSAxOXYtMmgxNC4wMDF2Mkg1em0xMC4yMTktOS4zNzVjLjM4MS40NzUgMS4xODIuNDc1IDEuNTYzIDBMMTkgNi44NTEgMTkuMDAxIDE1SDVWNi44NTFsMi4yMTkgMi43NzRjLjM4MS40NzUgMS4xODIuNDc1IDEuNTYzIDBMMTIgNS42MDFsMy4yMTkgNC4wMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ3ViZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODk1IDMuNTUzQTEuMDAxIDEuMDAxIDAgMCAwIDE3IDNIN2MtLjM3OSAwLS43MjUuMjE0LS44OTUuNTUzbC00IDhhMSAxIDAgMCAwIDAgLjg5NWw0IDhjLjE3LjMzOC41MTYuNTUyLjg5NS41NTJoMTBjLjM3OSAwIC43MjUtLjIxNC44OTUtLjU1M2w0LThhMSAxIDAgMCAwIDAtLjg5NWwtNC03Ljk5OXpNMTkuMzgyIDExaC03Ljc2NGwtMy02aDcuNzY0bDMgNnpNNC4xMTggMTIgNyA2LjIzNiA5Ljg4MiAxMiA3IDE3Ljc2NCA0LjExOCAxMnptMTIuMjY0IDdIOC42MThsMy02aDcuNzY0bC0zIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuNDA2IDYuMDg2LTktNGExLjAwMSAxLjAwMSAwIDAgMC0uODEzIDBsLTkgNGMtLjAyLjAwOS0uMDM0LjAyNC0uMDU0LjAzNS0uMDI4LjAxNC0uMDU4LjAyMy0uMDg0LjA0LS4wMjIuMDE1LS4wMzkuMDM0LS4wNi4wNWEuODcuODcgMCAwIDAtLjE5LjE5NGMtLjAyLjAyOC0uMDQxLjA1My0uMDU5LjA4MWExLjExOSAxLjExOSAwIDAgMC0uMDc2LjE2NWMtLjAwOS4wMjctLjAyMy4wNTItLjAzMS4wNzlBMS4wMTMgMS4wMTMgMCAwIDAgMiA3djEwYzAgLjM5Ni4yMzIuNzUzLjU5NC45MTRsOSA0Yy4xMy4wNTguMjY4LjA4Ni40MDYuMDg2YS45OTcuOTk3IDAgMCAwIC40MDItLjA5NmwuMDA0LjAxIDktNEEuOTk5Ljk5OSAwIDAgMCAyMiAxN1Y3YS45OTkuOTk5IDAgMCAwLS41OTQtLjkxNHpNMTIgNC4wOTUgMTguNTM4IDcgMTIgOS45MDVsLTEuMzA4LS41ODFMNS40NjMgNyAxMiA0LjA5NXpNNCAxNi4zNTFWOC41MzlsNyAzLjExMXY3LjgxMWwtNy0zLjExem05IDMuMTFWMTEuNjVsNy0zLjExMXY3LjgxMmwtNyAzLjExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUN1Ym9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNzA3IDIuMjkzQS45OTYuOTk2IDAgMCAwIDE2IDJIOGMtLjQxNCAwLS43ODUuMjU1LS45MzQuNjQxbC01IDEzYS45OTkuOTk5IDAgMCAwIC4yMjcgMS4wNjZsNSA1QS45OTYuOTk2IDAgMCAwIDggMjJoOGMuNDE0IDAgLjc4NS0uMjU1LjkzNC0uNjQxbDUtMTNhLjk5OS45OTkgMCAwIDAtLjIyNy0xLjA2NmwtNS01ek0xOC41ODUgN2gtNS4xNzFsLTMtM2g1LjE3MmwyLjk5OSAzek04LjM4MSA0Ljc5NWwzLjQzOCAzLjQzOC00LjQ2MiAxMC43MS0zLjE5LTMuMTkxTDguMzgxIDQuNzk1ek0xNS4zMTMgMjBoLTYuMjNsNC41ODMtMTFoNS44NzhsLTQuMjMxIDExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUN1cnJlbnRMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCI0XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNC4wNjlWMmgtMnYyLjA2OUE4LjAxIDguMDEgMCAwIDAgNC4wNjkgMTFIMnYyaDIuMDY5QTguMDA4IDguMDA4IDAgMCAwIDExIDE5LjkzMVYyMmgydi0yLjA2OUE4LjAwNyA4LjAwNyAwIDAgMCAxOS45MzEgMTNIMjJ2LTJoLTIuMDY5QTguMDA4IDguMDA4IDAgMCAwIDEzIDQuMDY5ek0xMiAxOGMtMy4zMDkgMC02LTIuNjkxLTYtNnMyLjY5MS02IDYtNiA2IDIuNjkxIDYgNi0yLjY5MSA2LTYgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDdXN0b21pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFoNmExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMUg0YTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxem0xLTZoNHY0SDVWNXptMTUtMmgtNmExIDEgMCAwIDAtMSAxdjZhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTFWNGExIDEgMCAwIDAtMS0xem0tMSA2aC00VjVoNHY0em0tOSAxMmExIDEgMCAwIDAgMS0xdi02YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjZhMSAxIDAgMCAwIDEgMWg2em0tNS02aDR2NEg1di00em0xMy0xaC0ydjJoLTJ2MmgydjJoMnYtMmgydi0yaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgNi41QzEwIDQuNTcgOC40MyAzIDYuNSAzUzMgNC41NyAzIDYuNSA0LjU3IDEwIDYuNSAxMGEzLjQ1IDMuNDUgMCAwIDAgMS42MTMtLjQxM2wyLjM1NyAyLjUyOC0yLjMxOCAyLjMxOEEzLjQ2IDMuNDYgMCAwIDAgNi41IDE0QzQuNTcgMTQgMyAxNS41NyAzIDE3LjVTNC41NyAyMSA2LjUgMjFzMy41LTEuNTcgMy41LTMuNWMwLS42MDEtLjE2Ni0xLjE1OC0uNDM0LTEuNjUybDIuMjY5LTIuMjY4TDE3IDE5LjEyMWEzIDMgMCAwIDAgMi4xMjEuODc5SDIyTDkuMzUgOC41MThjLjQwNi0uNTcyLjY1LTEuMjY1LjY1LTIuMDE4ek02LjUgOEM1LjY3MyA4IDUgNy4zMjcgNSA2LjVTNS42NzMgNSA2LjUgNSA4IDUuNjczIDggNi41IDcuMzI3IDggNi41IDh6bTAgMTFjLS44MjcgMC0xLjUtLjY3My0xLjUtMS41UzUuNjczIDE2IDYuNSAxNnMxLjUuNjczIDEuNSAxLjVTNy4zMjcgMTkgNi41IDE5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE3IDQuODc5LTMuNzA3IDQuNDE0IDEuNDE0IDEuNDE0TDIyIDRoLTIuODc5QTMgMyAwIDAgMCAxNyA0Ljg3OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlDeWNsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNS40MTRWMjBoMnYtNC41ODZjMC0uNTI2LS4yMTQtMS4wNDItLjU4Ni0xLjQxNGwtMi0yTDEzIDkuNDE0bDIgMmMuMzcyLjM3Mi44ODguNTg2IDEuNDE0LjU4NkgyMHYtMmgtMy41ODZsLTMuNzA3LTMuNzA3YS45OTkuOTk5IDAgMCAwLTEuNDE0IDBMOCA5LjU4NmMtLjM3OC4zNzgtLjU4Ni44OC0uNTg2IDEuNDE0cy4yMDggMS4wMzYuNTg2IDEuNDE0bDMgM3pcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiNVwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDE0Yy0yLjIwNiAwLTQgMS43OTQtNCA0czEuNzk0IDQgNCA0IDQtMS43OTQgNC00LTEuNzk0LTQtNC00em0wIDZjLTEuMTAzIDAtMi0uODk3LTItMnMuODk3LTIgMi0yIDIgLjg5NyAyIDItLjg5NyAyLTIgMnpNNiAyMmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNC00IDEuNzk0LTQgNCAxLjc5NCA0IDQgNHptMC02YzEuMTAzIDAgMiAuODk3IDIgMnMtLjg5NyAyLTIgMi0yLS44OTctMi0yIC44OTctMiAyLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpQ3lsaW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzUuMTMxIDAgOS0xLjkzNSA5LTQuNVY3aC0uMDUzYy4wMzMtLjE2NC4wNTMtLjMzLjA1My0uNUMyMSAzLjkzNSAxNy4xMzEgMiAxMiAyIDcuMjA5IDIgMy41MiAzLjY4OCAzLjA1MyA2SDN2MTEuNWMwIDIuNTY1IDMuODY5IDQuNSA5IDQuNXptMC0yYy00LjI3MyAwLTctMS40OC03LTIuNVY5LjM5NEM2LjYyMyAxMC4zODcgOS4xMTEgMTEgMTIgMTFzNS4zNzctLjYxMyA3LTEuNjA2VjE3LjVjMCAxLjAyLTIuNzI3IDIuNS03IDIuNXptMC0xNmM0LjI3MyAwIDcgMS40OCA3IDIuNVMxNi4yNzMgOSAxMiA5IDUgNy41MiA1IDYuNSA3LjcyNyA0IDEyIDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGF0YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTdWN2MwLTIuMTY4LTMuNjYzLTQtOC00UzQgNC44MzIgNCA3djEwYzAgMi4xNjggMy42NjMgNCA4IDRzOC0xLjgzMiA4LTR6TTEyIDVjMy42OTEgMCA1LjkzMSAxLjUwNyA2IDEuOTk0QzE3LjkzMSA3LjQ5MyAxNS42OTEgOSAxMiA5UzYuMDY5IDcuNDkzIDYgNy4wMDZDNi4wNjkgNi41MDcgOC4zMDkgNSAxMiA1ek02IDkuNjA3QzcuNDc5IDEwLjQ1NCA5LjYzNyAxMSAxMiAxMXM0LjUyMS0uNTQ2IDYtMS4zOTN2Mi4zODdjLS4wNjkuNDk5LTIuMzA5IDIuMDA2LTYgMi4wMDZzLTUuOTMxLTEuNTA3LTYtMlY5LjYwN3pNNiAxN3YtMi4zOTNDNy40NzkgMTUuNDU0IDkuNjM3IDE2IDEyIDE2czQuNTIxLS41NDYgNi0xLjM5M3YyLjM4N2MtLjA2OS40OTktMi4zMDkgMi4wMDYtNiAyLjAwNnMtNS45MzEtMS41MDctNi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURlc2t0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xMDMgMC0yIC44OTctMiAydjExYzAgMS4xMDMuODk3IDIgMiAyaDd2Mkg4djJoOHYtMmgtM3YtMmg3YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxNFY1aDE2bC4wMDIgOUg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURldGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek00IDE5VjVoMTZsLjAwMiAxNEg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgN2gxMnYySDZ6bTAgNGgxMnYySDZ6bTAgNGg2djJINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEZXZpY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDdjLTEuMTAzIDAtMiAuODk3LTIgMnYySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmg2YzEuMTAzIDAgMi0uODk3IDItMmg4YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNOS45OTcgMTlINFY5aDZsLS4wMDMgMTB6bTEwLTJIMTJWOWMwLTEuMTAzLS44OTctMi0yLTJIN1Y1aDEzbC0uMDAzIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURpYWxwYWRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMThcIixcImN5XCI6XCI2XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaWFscGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzaDR2M2gtNHptMCA1aDR2M2gtNHptMCA1aDR2M2gtNHptNi0xMGg0djNoLTR6bTAgNWg0djNoLTR6bTAgNWg0djNoLTR6TTQgM2g0djNINHptMCA1aDR2M0g0em0wIDVoNHYzSDR6bTYgNWg0djNoLTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODEzIDMuODM4QTIgMiAwIDAgMCAxNi4xODcgM0g3LjgxM2MtLjY0NCAwLTEuMjUyLjMxMy0xLjY2Ny44OTlsLTQgNi41ODFhLjk5OS45OTkgMCAwIDAgLjExMSAxLjE4OGw5IDEwYS45OTUuOTk1IDAgMCAwIDEuNDg2LjAwMWw5LTEwYS45OTcuOTk3IDAgMCAwIC4xMTEtMS4xODhsLTQuMDQxLTYuNjQzek0xMiAxOS41MDUgNS4yNDUgMTJoMTMuNTA5TDEyIDE5LjUwNXpNNC43NzcgMTBsMy4wMzYtNSA4LjMzMi0uMDYyTDE5LjIyMiAxMEg0Ljc3N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaWNlMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDE5VjVoMTRsLjAwMiAxNEg1elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGljZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAxOVY1aDE0bC4wMDIgMTRINXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjkuNVwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGljZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAxOVY1aDE0bC4wMDIgMTRINXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGljZTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAxOVY1aDE0bC4wMDIgMTRINXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjE2XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGljZTUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAxOVY1aDE0bC4wMDIgMTRINXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaWNlNiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDE5VjVoMTRsLjAwMiAxNEg1elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOFwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2XCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCIxNlwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiMTZcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTZcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43ODEgMTMuODc1LTItMi41QTEgMSAwIDAgMCAxOSAxMWgtNlY5aDZjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0ySDVhMSAxIDAgMCAwLS43ODEuMzc1bC0yIDIuNWExLjAwMSAxLjAwMSAwIDAgMCAwIDEuMjVsMiAyLjVBMSAxIDAgMCAwIDUgOWg2djJINWMtMS4xMDMgMC0yIC44OTctMiAydjNjMCAxLjEwMy44OTcgMiAyIDJoNnY0aDJ2LTRoNmExIDEgMCAwIDAgLjc4MS0uMzc1bDItMi41YTEuMDAxIDEuMDAxIDAgMCAwIDAtMS4yNXpNNC4yODEgNS41IDUuNDggNEgxOWwuMDAyIDNINS40OEw0LjI4MSA1LjV6TTE4LjUyIDE2SDV2LTNoMTMuNTJsMS4yIDEuNS0xLjIgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURpc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJhMTAgMTAgMCAxIDAgMTAgMTBBMTAgMTAgMCAwIDAgMTIgMnptMCAxOGE4IDggMCAxIDEgOC04IDggOCAwIDAgMS04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOGE0IDQgMCAxIDAgNCA0IDQgNCAwIDAgMC00LTR6bTAgNmEyIDIgMCAxIDEgMi0yIDIgMiAwIDAgMS0yIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRGlzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTVjMC00LjYyNS0zLjUwNy04LjQ0MS04LTguOTQxVjRoLTJ2Mi4wNTljLTQuNDkzLjUtOCA0LjMxNi04IDguOTQxdjJoMTh2LTJ6TTUgMTVjMC0zLjg1OSAzLjE0MS03IDctN3M3IDMuMTQxIDcgN0g1em0tMyAzaDIwdjJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaXNsaWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDYuNjkzQTIuMDEgMi4wMSAwIDAgMCA0LjgyIDQuMjk4bC0yLjc1NyA3LjM1MUExIDEgMCAwIDAgMiAxMnYyYzAgMS4xMDMuODk3IDIgMiAyaDUuNjEyTDguNDkgMTkuMzY3YTIuMDA0IDIuMDA0IDAgMCAwIC4yNzQgMS44MDJjLjM3Ni41Mi45ODIuODMxIDEuNjI0LjgzMUgxMmMuMjk3IDAgLjU3OC0uMTMyLjc2OS0uMzZsNC43LTUuNjRIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yem0tOC40NjkgMTdoLTEuMTQ1bDEuNTYyLTQuNjg0QTEgMSAwIDAgMCAxMSAxNEg0di0xLjgxOUw2LjY5MyA1SDE2djkuNjM4TDExLjUzMSAyMHpNMTggMTRWNWgybC4wMDEgOUgxOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjcwNyAxMi4yOTMgOS40MTQgMTFsMS4yOTMtMS4yOTMtMS40MTQtMS40MTRMOCA5LjU4NiA2LjcwNyA4LjI5MyA1LjI5MyA5LjcwNyA2LjU4NiAxMWwtMS4yOTMgMS4yOTMgMS40MTQgMS40MTRMOCAxMi40MTRsMS4yOTMgMS4yOTN6bTYuNTg2LTRMMTYgOS41ODZsLTEuMjkzLTEuMjkzLTEuNDE0IDEuNDE0TDE0LjU4NiAxMWwtMS4yOTMgMS4yOTMgMS40MTQgMS40MTRMMTYgMTIuNDE0bDEuMjkzIDEuMjkzIDEuNDE0LTEuNDE0TDE3LjQxNCAxMWwxLjI5My0xLjI5M3pNMTAgMTZoNHYyaC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURuYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzk0IDExLjA5Yy4zMzItLjI2My42NDgtLjU0Mi45NDctLjg0bC4xMzYtLjE0MmMuMjgzLS4yOTMuNTUyLS41OTguODAxLS45MTlsLjA2Mi0uMDc1Yy4yNTUtLjMzNS40ODYtLjY4OC43MDItMS4wNDlsLjEyOC0uMjJjLjIwNS0uMzY0LjM5NS0uNzM3LjU1OS0xLjEyMy4wMi0uMDQ3LjAzNS0uMDk1LjA1NS0uMTQyLjE0Ny0uMzYxLjI3NC0uNzMxLjM4My0xLjEwOS4wMjEtLjA3LjA0NC0uMTQuMDYzLS4yMTEuMTA3LS40MDIuMTg5LS44MTMuMjUxLTEuMjI5LjAxMy0uMDg3LjAyMS0uMTc1LjAzMi0uMjYzLjA1MS0uNDMyLjA4Ny0uODY5LjA4Ny0xLjMxMVYyaC0ydi40NTdjMCAuMTg0LS4wMzEuMzYxLS4wNDIuNTQzSDYuMDIyQzYuMDEyIDIuODE5IDYgMi42NCA2IDIuNDU3VjJINHYuNDU3YzAgNC44NzYgMy4yNjkgOS4yMTggNy45NTIgMTAuNTY5bC4wMjguMDA5YzIuODgxLjgyMyA1LjA1NiAzLjE0NiA1Ljc2OSA1Ljk2NUg2LjI1MWwuNzk5LTJoNy42MDdhNy40MTYgNy40MTYgMCAwIDAtMi4wNjMtMmgtNGMuNDQ1LS40MjQuOTU2LS43NzQgMS40OTEtMS4wOWE5LjkyMiA5LjkyMiAwIDAgMS0yLjA4LTEuMDE0QzUuNTUgMTQuODEyIDQgMTcuNzc5IDQgMjEuMDE1VjIzaDJ2LTEuOTg1TDYuMDAxIDIxaDExLjk5OGwuMDAxLjAxNVYyM2gydi0xLjk4NWMwLTMuODMtMi4xNTktNy4zMDMtNS40NDMtOS4wN2ExMS4xIDExLjEgMCAwIDAgMS4wNzItLjcyOWMuMDU1LS4wNDIuMTEtLjA4Mi4xNjUtLjEyNnptLTEuMTktMS42MDRhOC45NDUgOC45NDUgMCAwIDEtMi4zMjUgMS4zNDhjLS4wOTIuMDM2LS4xODUuMDY4LS4yNzguMTAyQTguOTUgOC45NSAwIDAgMSA4LjgzNiA5aDYuMjkyYy0uMTcxLjE2MS0uMzMyLjMzMy0uNTE3LjQ4bC0uMDA3LjAwNnpNMTcuNjE5IDVjLS4wMDUuMDE2LS4wMDcuMDMzLS4wMTIuMDQ5bC0uMDQ0LjE1MWE5LjA4OSA5LjA4OSAwIDAgMS0uNTEzIDEuMjUyYy0uMDk2LjE5LS4yMTMuMzY1LS4zMjEuNTQ4aC05LjQ4YTkuMDY2IDkuMDY2IDAgMCAxLS44NzEtMmgxMS4yNDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRG9ja0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjVhMiAyIDAgMCAwLTItMnptMCAydjlINVY1ek01IDE5di0zaDE0djN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRG9ja0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6TTUgNWgzdjE0SDV6bTUgMTRWNWg5djE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvY2tSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yVjVhMiAyIDAgMCAwLTItMnpNNSA1aDl2MTRINXptMTEgMTRWNWgzdjE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvY2tUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6bTAgMnYzSDVWNXpNNSAxOXYtOWgxNHY5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvbGxhckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmExMCAxMCAwIDEgMCAxMCAxMEExMCAxMCAwIDAgMCAxMiAyem0wIDE4YTggOCAwIDEgMSA4LTggOCA4IDAgMCAxLTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMWMtMiAwLTItLjYzLTItMXMuNy0xIDItMSAxLjM5LjY0IDEuNCAxaDJBMyAzIDAgMCAwIDEzIDcuMTJWNmgtMnYxLjA5QzkgNy40MiA4IDguNzEgOCAxMGMwIDEuMTIuNTIgMyA0IDMgMiAwIDIgLjY4IDIgMXMtLjYyIDEtMiAxYy0xLjg0IDAtMi0uODYtMi0xSDhjMCAuOTIuNjYgMi41NSAzIDIuOTJWMThoMnYtMS4wOGMyLS4zNCAzLTEuNjMgMy0yLjkyIDAtMS4xMi0uNTItMy00LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45OTkgOC41aDJjMC0yLjgzNy0yLjc1NS00LjEzMS01LTQuNDI5VjJoLTJ2Mi4wNzFjLTIuMjQ1LjI5OC01IDEuNTkyLTUgNC40MjkgMCAyLjcwNiAyLjY2NiA0LjExMyA1IDQuNDN2NC45N2MtMS40NDgtLjI1MS0zLTEuMDI0LTMtMi40aC0yYzAgMi41ODkgMi40MjUgNC4xMTkgNSA0LjQzNlYyMmgydi0yLjA3YzIuMjQ1LS4yOTggNS0xLjU5MyA1LTQuNDNzLTIuNzU1LTQuMTMxLTUtNC40MjlWNi4xYzEuMzMuMjM5IDMgLjk0MSAzIDIuNHptLTggMGMwLTEuNDU5IDEuNjctMi4xNjEgMy0yLjR2NC43OTljLTEuMzcxLS4yNTMtMy0xLjAwMi0zLTIuMzk5em04IDdjMCAxLjQ1OS0xLjY3IDIuMTYxLTMgMi40di00LjhjMS4zMy4yMzkgMyAuOTQxIDMgMi40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvbmF0ZUJsb29kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIxaDkuNjJhMy45OTUgMy45OTUgMCAwIDAgMy4wMzctMS4zOTdsNS4xMDItNS45NTJhMSAxIDAgMCAwLS40NDItMS42bC0xLjk2OC0uNjU2YTMuMDQzIDMuMDQzIDAgMCAwLTIuODIzLjUwM2wtMy4xODUgMi41NDctLjYxNy0xLjIzNUEzLjk4IDMuOTggMCAwIDAgOS4xNDYgMTFINGMtMS4xMDMgMC0yIC44OTctMiAydjZjMCAxLjEwMy44OTcgMiAyIDJ6bTAtOGg1LjE0NmMuNzYzIDAgMS40NDguNDIzIDEuNzg5IDEuMTA1bC40NDcuODk1SDd2Mmg2LjAxNGEuOTk2Ljk5NiAwIDAgMCAuNDQyLS4xMWwuMDAzLS4wMDEuMDA0LS4wMDJoLjAwM2wuMDAyLS4wMDFoLjAwNGwuMDAxLS4wMDFjLjAxMS4wMDMuMDAzLS4wMDEuMDAzLS4wMDEuMDEyIDAgLjAwMi0uMDAxLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxLjAwMi0uMDAxLjAwMy0uMDAyLjAwMi0uMDAxLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxLjAwMi0uMDAxYy4wMTEtLjAwMS4wMDMtLjAwMS4wMDMtLjAwMWwuMDAyLS4wMDFhLjkxNS45MTUgMCAwIDAgLjExLS4wNzhsNC4xNDYtMy4zMTdjLjI2MS0uMjA4LjYyMy0uMjczLjk0LS4xNjdsLjU1Ny4xODYtNC4xMzMgNC44MjNhMi4wMjkgMi4wMjkgMCAwIDEtMS41Mi42ODhINHYtNnptOS43NjEtMTAuNjc0QzEzLjMgMi44MzIgMTEgNS40NTcgMTEgNy41YzAgMS45MyAxLjU3IDMuNSAzLjUgMy41UzE4IDkuNDMgMTggNy41YzAtMi4wNDMtMi4zLTQuNjY4LTIuNzYxLTUuMTc0LS4zNzktLjQxNi0xLjA5OS0uNDE2LTEuNDc4IDB6TTE2IDcuNWMwIC44MjctLjY3MyAxLjUtMS41IDEuNVMxMyA4LjMyNyAxMyA3LjVjMC0uNzA4LjczOC0xLjkzNCAxLjUtMi45MzQuNzYyIDEgMS41IDIuMjI2IDEuNSAyLjkzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEb25hdGVIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMWg5LjYyYTMuOTk1IDMuOTk1IDAgMCAwIDMuMDM3LTEuMzk3bDUuMTAyLTUuOTUyYTEgMSAwIDAgMC0uNDQyLTEuNmwtMS45NjgtLjY1NmEzLjA0MyAzLjA0MyAwIDAgMC0yLjgyMy41MDNsLTMuMTg1IDIuNTQ3LS42MTctMS4yMzVBMy45OCAzLjk4IDAgMCAwIDkuMTQ2IDExSDRjLTEuMTAzIDAtMiAuODk3LTIgMnY2YzAgMS4xMDMuODk3IDIgMiAyem0wLThoNS4xNDZjLjc2MyAwIDEuNDQ4LjQyMyAxLjc4OSAxLjEwNWwuNDQ3Ljg5NUg3djJoNi4wMTRhLjk5Ni45OTYgMCAwIDAgLjQ0Mi0uMTFsLjAwMy0uMDAxLjAwNC0uMDAyaC4wMDNsLjAwMi0uMDAxaC4wMDRsLjAwMS0uMDAxYy4wMDkuMDAzLjAwMy0uMDAxLjAwMy0uMDAxLjAxIDAgLjAwMi0uMDAxLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxYy4wMDMgMCAuMDAxLS4wMDEuMDAyLS4wMDFsLjAwMy0uMDAyLjAwMi0uMDAxLjAwMi0uMDAxLjAwMy0uMDAxLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxaC4wMDFsLjAwMi0uMDAxLjAwMi0uMDAxYy4wMDktLjAwMS4wMDMtLjAwMS4wMDMtLjAwMWwuMDAyLS4wMDFhLjkxNS45MTUgMCAwIDAgLjExLS4wNzhsNC4xNDYtMy4zMTdjLjI2Mi0uMjA4LjYyMy0uMjczLjk0LS4xNjdsLjU1Ny4xODYtNC4xMzMgNC44MjNhMi4wMjkgMi4wMjkgMCAwIDEtMS41Mi42ODhINHYtNnpNMTYgMmgtLjAxN2MtLjE2My4wMDItMS4wMDYuMDM5LTEuOTgzLjcwNS0uOTUxLS42NDgtMS43NzQtLjctMS45NjgtLjcwNEwxMi4wMDIgMmgtLjAwNGMtLjgwMSAwLTEuNTU1LjMxMy0yLjExOS44NzhDOS4zMTMgMy40NDUgOSA0LjE5OCA5IDVzLjMxMyAxLjU1NS44NjEgMi4xMDRsMy40MTQgMy41ODZhMS4wMDYgMS4wMDYgMCAwIDAgMS40NS0uMDAxbDMuMzk2LTMuNTY4QzE4LjY4OCA2LjU1NSAxOSA1LjgwMiAxOSA1cy0uMzEzLTEuNTU1LS44NzgtMi4xMjFBMi45NzggMi45NzggMCAwIDAgMTYuMDAyIDJIMTZ6bTEgM2MwIC4yNjctLjEwNC41MTgtLjMxMS43MjVMMTQgOC41NWwtMi43MDctMi44NDNDMTEuMTA0IDUuNTE4IDExIDUuMjY3IDExIDVzLjEwNC0uNTE4LjI5NC0uNzA4QS45NzcuOTc3IDAgMCAxIDExLjk3OSA0Yy4wMjUuMDAxLjUwMi4wMzIgMS4wNjcuNDg1LjA4MS4wNjUuMTYzLjEzOS4yNDcuMjIybC43MDcuNzA3LjcwNy0uNzA3Yy4wODQtLjA4My4xNjYtLjE1Ny4yNDctLjIyMi41MjktLjQyNS45NzYtLjQ3OCAxLjA1Mi0uNDg0YS45ODcuOTg3IDAgMCAxIC43MDEuMjkyYy4xODkuMTg5LjI5My40NC4yOTMuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvb3JPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4zODUgMjEuNzg4YS45OTcuOTk3IDAgMCAwIC44NTcuMTgybDgtMkEuOTk5Ljk5OSAwIDAgMCAyMCAxOVY1YTEgMSAwIDAgMC0uNzU4LS45N2wtOC0yQTEuMDAzIDEuMDAzIDAgMCAwIDEwIDN2MUg2YTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWg0djFjMCAuMzA4LjE0Mi41OTkuMzg1Ljc4OHpNMTIgNC4yODFsNiAxLjV2MTIuNDM4bC02IDEuNVY0LjI4MXpNNyAxOFY2aDN2MTJIN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNDIgMTMuMTU5Yy40NDYtLjExMi43NTgtLjUxMi43NTgtLjk3MXYtLjM3N2ExIDEgMCAxIDAtMiAuMDAxdi4zNzdhMSAxIDAgMCAwIDEuMjQyLjk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvdHNIb3Jpem9udGFsUm91bmRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEb3RzSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTBoNHY0aC00em02IDBoNHY0aC00ek00IDEwaDR2NEg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvdHNWZXJ0aWNhbFJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMC02Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRG90c1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMGg0djRoLTR6bTAtNmg0djRoLTR6bTAgMTJoNHY0aC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvdWdobnV0Q2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptNy45MzEgOWgtMy4wMzJBNS4wMTMgNS4wMTMgMCAwIDAgMTMgNy4xMDJWNC4wNjlBOC4wMDggOC4wMDggMCAwIDEgMTkuOTMxIDExek0xMiA5YzEuNjU0IDAgMyAxLjM0NiAzIDNzLTEuMzQ2IDMtMyAzLTMtMS4zNDYtMy0zIDEuMzQ2LTMgMy0zem0wIDExYy00LjQxMSAwLTgtMy41ODktOC04IDAtNC4wNzIgMy4wNjEtNy40MzYgNy03LjkzMXYzLjAzMkE1LjAwOSA1LjAwOSAwIDAgMCA3IDEyYzAgMi43NTcgMi4yNDMgNSA1IDVhNS4wMDcgNS4wMDcgMCAwIDAgNC44OTgtNGgzLjAzMmMtLjQ5NCAzLjkzOS0zLjg1OCA3LTcuOTMgN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEb3duQXJyb3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjcwNyAxMi43MDctMS40MTQtMS40MTRMMTMgMTUuNTg2VjZoLTJ2OS41ODZsLTQuMjkzLTQuMjkzLTEuNDE0IDEuNDE0TDEyIDE5LjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEb3duQXJyb3dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEuOTkzQzYuNDg2IDEuOTk0IDIgNi40OCAyIDExLjk5NGMwIDUuNTEzIDQuNDg2IDkuOTk5IDEwIDEwIDUuNTE0IDAgMTAtNC40ODYgMTAtMTBzLTQuNDg1LTEwLTEwLTEwLjAwMXptMCAxOC4wMDFjLTQuNDExLS4wMDEtOC0zLjU5LTgtOCAwLTQuNDExIDMuNTg5LTggOC04LjAwMSA0LjQxMS4wMDEgOCAzLjU5IDggOC4wMDFzLTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDhoLTJ2NEg3Ljk5MWw0LjAwNSA0LjAwNUwxNiAxMmgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlEb3duQXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjg4NiA1LjUzNkExLjAwMiAxLjAwMiAwIDAgMCAyMSA1SDNhMS4wMDIgMS4wMDIgMCAwIDAtLjgyMiAxLjU2OWw5IDEzYS45OTguOTk4IDAgMCAwIDEuNjQ0IDBsOS0xM2EuOTk4Ljk5OCAwIDAgMCAuMDY0LTEuMDMzek0xMiAxNy4yNDMgNC45MDggN2gxNC4xODRMMTIgMTcuMjQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNiA0LTVoLTNWNGgtMnY3SDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThINHYtN0gydjdjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0ydi03aC0ydjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRG93bnZvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjkwMSAxMC41NjZBMS4wMDEgMS4wMDEgMCAwIDAgMjAgMTBoLTRWM2ExIDEgMCAwIDAtMS0xSDlhMSAxIDAgMCAwLTEgMXY3SDRhMS4wMDEgMS4wMDEgMCAwIDAtLjc4MSAxLjYyNWw4IDEwYTEgMSAwIDAgMCAxLjU2MiAwbDgtMTBjLjI0LS4zMDEuMjg2LS43MTIuMTItMS4wNTl6TTEyIDE5LjM5OSA2LjA4MSAxMkgxMFY0aDR2OGgzLjkxOUwxMiAxOS4zOTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRHJpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjgzMiA0LjU1NUExIDEgMCAwIDAgMjAgM0g0YTEgMSAwIDAgMC0uODMyIDEuNTU0TDExIDE2LjMwM1YyMEg4djJoOHYtMmgtM3YtMy42OTdsNy44MzItMTEuNzQ4ek0xMiAxNC4xOTcgOC41MzUgOWg2LjkzTDEyIDE0LjE5N3pNMTguMTMyIDVsLTEuMzMzIDJINy4yMDFMNS44NjggNWgxMi4yNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRHJvcGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNC42MzYgMCA4LTMuNDY4IDgtOC4yNDZDMjAgNy41MjIgMTIuODgyIDIuNCAxMi41NzkgMi4xODVhMSAxIDAgMCAwLTEuMTU2LS4wMDFDMTEuMTIgMi4zOTcgNCA3LjUwMyA0IDEzLjc1IDQgMTguNTMgNy4zNjQgMjIgMTIgMjJ6bS0uMDAxLTE3Ljc0QzEzLjYwNCA1LjU1IDE4IDkuNDc0IDE4IDEzLjc1NCAxOCAxNy40MzIgMTUuNTMyIDIwIDEyIDIwcy02LTIuNTctNi02LjI1YzAtNC4yOSA0LjM5NC04LjIwMyA1Ljk5OS05LjQ5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUR1bWJiZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDV2MTRoM3YtNmg2djZoM1Y1aC0zdjZIOVY1ek0zIDE1YTEgMSAwIDAgMCAxIDFoMVY4SDRhMSAxIDAgMCAwLTEgMXYySDJ2MmgxdjJ6bTE4LTZhMSAxIDAgMCAwLTEtMWgtMXY4aDFhMSAxIDAgMCAwIDEtMXYtMmgxdi0yaC0xVjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRHVwbGljYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMEg5djNINnYyaDN2M2gydi0zaDN2LTJoLTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJWOGMwLTEuMTAzLS44OTctMi0yLTJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyek00IDhoMTJsLjAwMiAxMkg0Vjh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4djJoMTJ2MTJoMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlFZGl0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4wNDUgNy40MDFjLjM3OC0uMzc4LjU4Ni0uODguNTg2LTEuNDE0cy0uMjA4LTEuMDM2LS41ODYtMS40MTRsLTEuNTg2LTEuNTg2Yy0uMzc4LS4zNzgtLjg4LS41ODYtMS40MTQtLjU4NnMtMS4wMzYuMjA4LTEuNDEzLjU4NUw0IDEzLjU4NVYxOGg0LjQxM0wxOS4wNDUgNy40MDF6bS0zLTMgMS41ODcgMS41ODUtMS41OSAxLjU4NC0xLjU4Ni0xLjU4NSAxLjU4OS0xLjU4NHpNNiAxNnYtMS41ODVsNy4wNC03LjAxOCAxLjU4NiAxLjU4Nkw3LjU4NyAxNkg2em0tMiA0aDE2djJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03IDE3LjAxMyA0LjQxMy0uMDE1IDkuNjMyLTkuNTRjLjM3OC0uMzc4LjU4Ni0uODguNTg2LTEuNDE0cy0uMjA4LTEuMDM2LS41ODYtMS40MTRsLTEuNTg2LTEuNTg2Yy0uNzU2LS43NTYtMi4wNzUtLjc1Mi0yLjgyNS0uMDAzTDcgMTIuNTgzdjQuNDN6TTE4LjA0NSA0LjQ1OGwxLjU4OSAxLjU4My0xLjU5NyAxLjU4Mi0xLjU4Ni0xLjU4NSAxLjU5NC0xLjU4ek05IDEzLjQxN2w2LjAzLTUuOTczIDEuNTg2IDEuNTg2LTYuMDI5IDUuOTcxTDkgMTUuMDA2di0xLjU4OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIxaDE0YzEuMTAzIDAgMi0uODk3IDItMnYtOC42NjhsLTIgMlYxOUg4LjE1OGMtLjAyNiAwLS4wNTMuMDEtLjA3OS4wMS0uMDMzIDAtLjA2Ni0uMDA5LS4xLS4wMUg1VjVoNi44NDdsMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjU1NSA4LjE2OC05LTZhMSAxIDAgMCAwLTEuMTA5IDBsLTkgNkExIDEgMCAwIDAgMiA5djExYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY5YzAtLjMzNC0uMTY3LS42NDYtLjQ0NS0uODMyek0xMiA0LjIwMiAxOS4xOTcgOSAxMiAxMy43OTggNC44MDMgOSAxMiA0LjIwMnpNNCAyMHYtOS4xMzFsNy40NDUgNC45NjNhMSAxIDAgMCAwIDEuMTEgMEwyMCAxMC44NjkgMTkuOTk3IDIwSDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRW52ZWxvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAydi41MTFsLTggNi4yMjMtOC02LjIyMlY2aDE2ek00IDE4VjkuMDQ0bDcuMzg2IDUuNzQ1YS45OTQuOTk0IDAgMCAwIDEuMjI4IDBMMjAgOS4wNDQgMjAuMDAyIDE4SDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRXF1YWxpemVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJ2NmgtMnptNC0zaDJ2MTJoLTJ6TTcgNGgydjE2SDd6bTEyIDdoMnYyaC0yek0zIDEwaDJ2NEgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUVyYXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi41ODYgMTUuNDA4IDQuMjk5IDQuMjk5YS45OTYuOTk2IDAgMCAwIC43MDcuMjkzaDEyLjAwMXYtMmgtNi45NThsNy4yMjItNy4yMjJjLjc4LS43NzkuNzgtMi4wNDkgMC0yLjgyOEwxNC45MDYgM2EyLjAwMyAyLjAwMyAwIDAgMC0yLjgyOCAwbC00Ljc1IDQuNzQ5LTQuNzU0IDQuODQzYTIuMDA3IDIuMDA3IDAgMCAwIC4wMTIgMi44MTZ6TTEzLjQ5MiA0LjQxNGw0Ljk1IDQuOTUtMi41ODYgMi41ODZMMTAuOTA2IDdsMi41ODYtMi41ODZ6TTguNzQ5IDkuMTU2bC43NDMtLjc0MiA0Ljk1IDQuOTUtNC41NTcgNC41NTdhMS4wMjYgMS4wMjYgMCAwIDAtLjA2OS4wNzloLTEuODFsLTQuMDA1LTQuMDA3IDQuNzQ4LTQuODM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUVycm9yQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3aDJ2N2gtMnptMCA4aDJ2MmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43MDcgNy4yOTMtNS01QS45OTYuOTk2IDAgMCAwIDE2IDJIOGEuOTk2Ljk5NiAwIDAgMC0uNzA3LjI5M2wtNSA1QS45OTYuOTk2IDAgMCAwIDIgOHY4YzAgLjI2Ni4xMDUuNTIuMjkzLjcwN2w1IDVBLjk5Ni45OTYgMCAwIDAgOCAyMmg4Yy4yNjYgMCAuNTItLjEwNS43MDctLjI5M2w1LTVBLjk5Ni45OTYgMCAwIDAgMjIgMTZWOGEuOTk2Ljk5NiAwIDAgMC0uMjkzLS43MDd6TTIwIDE1LjU4NiAxNS41ODYgMjBIOC40MTRMNCAxNS41ODZWOC40MTRMOC40MTQgNGg3LjE3MkwyMCA4LjQxNHY3LjE3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlFcnJvckNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTUzIDJDNi40NjUgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNDkzIDIgMTEuOTUzIDJ6TTEyIDIwYy00LjQxMSAwLTgtMy41ODktOC04czMuNTY3LTggNy45NTMtOEMxNi4zOTEgNCAyMCA3LjU4OSAyMCAxMnMtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjdoLTJ6bTAgOGgydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjAwMSAxMGgydjVoLTJ6TTExIDE2aDJ2MmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy43NjggNC4yQzEzLjQyIDMuNTQ1IDEyLjc0MiAzLjEzOCAxMiAzLjEzOHMtMS40Mi40MDctMS43NjggMS4wNjNMMi44OTQgMTguMDY0YTEuOTg2IDEuOTg2IDAgMCAwIC4wNTQgMS45NjhBMS45ODQgMS45ODQgMCAwIDAgNC42NjEgMjFoMTQuNjc4Yy43MDggMCAxLjM0OS0uMzYyIDEuNzE0LS45NjhhMS45ODkgMS45ODkgMCAwIDAgLjA1NC0xLjk2OEwxMy43NjggNC4yek00LjY2MSAxOSAxMiA1LjEzNyAxOS4zNDQgMTlINC42NjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDY0IDZjMS40MyAwIDIuNzc5LjYxMyAzLjc5OSAxLjcyNmwxLjQ3NS0xLjM1MkMxNy4zMzQgNC44NDMgMTUuNDYxIDQgMTMuNDY0IDRjLTEuOTk4IDAtMy44Ny44NDMtNS4yNzIgMi4zNzVBOC4wMzQgOC4wMzQgMCAwIDAgNi41ODkgOUg0djJoMi4xMTRjLS4wMzguMzMtLjA2NC42NjMtLjA2NCAxcy4wMjYuNjcuMDY0IDFINHYyaDIuNTg5Yy4zNjIuOTcuOTAxIDEuODYxIDEuNjAzIDIuNjI2QzkuNTk0IDE5LjE1NyAxMS40NjYgMjAgMTMuNDY0IDIwYzEuOTk3IDAgMy44Ny0uODQzIDUuMjczLTIuMzc0bC0xLjQ3NS0xLjM1MkMxNi4yNDMgMTcuMzg3IDE0Ljg5NCAxOCAxMy40NjQgMThzLTIuNzc4LS42MTItMy43OTgtMS43MjZBNS45MzcgNS45MzcgMCAwIDEgOC44MDEgMTVIMTN2LTJIOC4xMzljLS4wNS0uMzI4LS4wODktLjY2LS4wODktMXMuMDM5LS42NzIuMDg5LTFIMTNWOUg4LjgwMWMuMjQtLjQ1Ny41MTYtLjg5My44NjUtMS4yNzRDMTAuNjg2IDYuNjEzIDEyLjAzNCA2IDEzLjQ2NCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUV4Y2x1ZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDhoLTNWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjljMCAxLjEwMy44OTcgMiAyIDJoM3YzYzAgMS4xMDMuODk3IDIgMiAyaDljMS4xMDMgMCAyLS44OTcgMi0ydi05YzAtMS4xMDMtLjg5Ny0yLTItMnptLTQgN0g5VjloNnY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUV4aXRGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA0SDh2NEg0djJoNnpNOCAyMGgydi02SDR2Mmg0em0xMi02aC02djZoMnYtNGg0em0wLTZoLTRWNGgtMnY2aDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDAyIDNoLTE0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NGgyVjVoMTR2MTRoLTE0di00aC0ydjRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk4LTItMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDE2IDUtNC01LTR2My4wMDFIM3YyaDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRXhwYW5kQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEySDN2OWg5di0ySDV6bTctN2g3djdoMlYzaC05elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUV4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEgMTUuMzQ0LTIuMTIxIDIuMTIxLTMuMTcyLTMuMTcyLTEuNDE0IDEuNDE0IDMuMTcyIDMuMTcyTDE1LjM0NCAyMUgyMXpNMyA4LjY1NmwyLjEyMS0yLjEyMSAzLjE3MiAzLjE3MiAxLjQxNC0xLjQxNC0zLjE3Mi0zLjE3Mkw4LjY1NiAzSDN6TTIxIDNoLTUuNjU2bDIuMTIxIDIuMTIxLTMuMTcyIDMuMTcyIDEuNDE0IDEuNDE0IDMuMTcyLTMuMTcyTDIxIDguNjU2ek0zIDIxaDUuNjU2bC0yLjEyMS0yLjEyMSAzLjE3Mi0zLjE3Mi0xLjQxNC0xLjQxNC0zLjE3MiAzLjE3MkwzIDE1LjM0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlFeHBvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2aDJWN2gzbC00LTUtNCA1aDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJ2LTljMC0xLjEwMy0uODk3LTItMi0yaC00djJoNHY5SDV2LTloNFY5SDVjLTEuMTAzIDAtMiAuODk3LTIgMnY5YzAgMS4xMDMuODk3IDIgMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUV4dGVuc2lvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTBWN2MwLTEuMTAzLS44OTctMi0yLTJoLTNjMC0xLjY1NC0xLjM0Ni0zLTMtM1M4IDMuMzQ2IDggNUg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2My44ODFsLjY1OS4yMzlDNC40NjEgMTEuNDEgNSAxMi4xNjYgNSAxM3MtLjUzOSAxLjU5LTEuMzQxIDEuODhMMyAxNS4xMTlWMTljMCAxLjEwMy44OTcgMiAyIDJoMy44ODFsLjIzOS0uNjU5QzkuNDEgMTkuNTM5IDEwLjE2NiAxOSAxMSAxOXMxLjU5LjUzOSAxLjg4IDEuMzQxbC4yMzkuNjU5SDE3YzEuMTAzIDAgMi0uODk3IDItMnYtM2MxLjY1NCAwIDMtMS4zNDYgMy0zcy0xLjM0Ni0zLTMtM3ptMCA0aC0ybC0uMDAzIDVoLTIuNTQ1Yy0uNzExLTEuMjItMi4wMjItMi0zLjQ1Mi0ycy0yLjc0MS43OC0zLjQ1MiAySDV2LTIuNTQ4QzYuMjIgMTUuNzQxIDcgMTQuNDMgNyAxM3MtLjc4LTIuNzQxLTItMy40NTJWN2g1VjVhMSAxIDAgMCAxIDIgMHYyaDV2NWgyYTEgMSAwIDAgMSAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDJjMy4yMTMgMCA1Ljk4MiAxLjkwOCA3LjI1NCA0LjY0OGE3LjggNy44IDAgMCAxLS44OTUtLjQ5OGMtLjQwOS0uMjU4LS44NzMtLjU1MS0xLjQ2LS43NzItLjY2OS0uMjU1LTEuNC0uMzc4LTIuMjM0LS4zNzhzLTEuNTY1LjEyMy0yLjIzNC4zNzdjLS41ODcuMjIzLTEuMDUxLjUxNi0xLjQ3Mi43ODEtLjM3OC4yMzctLjcwMy40NDMtMS4xMDMuNTk0QzkuNDEgOC45MjEgOC45MjYgOSA4LjMzIDljLS41OTUgMC0xLjA3OS0uMDc5LTEuNTI0LS4yNDgtLjQtLjE1MS0uNzI4LS4zNTgtMS4xMDYtLjU5OC0uMTYxLS4xMDEtLjM0LS4yMDgtLjUyLS4zMTNDNi41ODcgNS41NDIgOS4xMTMgNCAxMiA0em0wIDE2Yy00LjQxMSAwLTgtMy41ODktOC04IDAtLjgxLjEyMy0xLjU5LjM0OC0yLjMyNy4wOTQuMDU4LjE4NS4xMS4yODMuMTczLjQxMS4yNi44NzYuNTU0IDEuNDY2Ljc3Ni42NjkuMjU1IDEuMzk5LjM3OCAyLjIzMy4zNzguODMzIDAgMS41NjQtLjEyMyAyLjIzNS0uMzc3LjU4Ny0uMjIzIDEuMDUxLS41MTYgMS40NzItLjc4MS4zNzgtLjIzNy43MDMtLjQ0MyAxLjEwMy0uNTk1LjQ0NS0uMTY4LjkyOS0uMjQ3IDEuNTI1LS4yNDdzMS4wOC4wNzkgMS41MjUuMjQ4Yy4zOTkuMTUuNzI1LjM1NiAxLjExNC42MDIuNDA5LjI1OC44NzMuNTUxIDEuNDYuNzczLjM2My4xMzguNzQ4LjIyOSAxLjE1My4yOTEuMDQ5LjM1Ny4wODMuNzE3LjA4MyAxLjA4NiAwIDQuNDExLTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS41XCIsXCJjeVwiOlwiMTMuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmFzdEZvcndhcmRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMyAxNiA1LTQtNS00em0tNiAwIDUtNC01LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmFzdEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5IDEyLTctNXYxMHpNNSA3djEwbDctNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGZW1hbGVTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzguNjkxIDIgNiA0LjY5MSA2IDhjMCAyLjk2NyAyLjE2NyA1LjQzMiA1IDUuOTFWMTdIOHYyaDN2Mi45ODhoMlYxOWgzdi0yaC0zdi0zLjA5YzIuODMzLS40NzkgNS0yLjk0MyA1LTUuOTEgMC0zLjMwOS0yLjY5MS02LTYtNnptMCAxMGMtMi4yMDYgMC00LTEuNzk0LTQtNHMxLjc5NC00IDQtNCA0IDEuNzk0IDQgNC0xLjc5NCA0LTQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGZW1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuOTQ4IDcuNjg0QS45OTcuOTk3IDAgMCAwIDE0IDdoLTRhLjk5OC45OTggMCAwIDAtLjk0OC42ODRsLTIgNiAxLjc3NS41OTNMOCAxOGgydjRoNHYtNGgybC0uODI3LTMuNzI0IDEuNzc1LS41OTMtMi01Ljk5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGaWxlQmxhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjkzNyA4LjY4Yy0uMDExLS4wMzItLjAyLS4wNjMtLjAzMy0uMDk0YS45OTcuOTk3IDAgMCAwLS4xOTYtLjI5M2wtNi02YS45OTcuOTk3IDAgMCAwLS4yOTMtLjE5NmMtLjAzLS4wMTQtLjA2Mi0uMDIyLS4wOTQtLjAzM2EuOTkxLjk5MSAwIDAgMC0uMjU5LS4wNTFDMTMuMDQgMi4wMTEgMTMuMDIxIDIgMTMgMkg2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0yVjljMC0uMDIxLS4wMTEtLjA0LS4wMTMtLjA2MmEuOTkuOTkgMCAwIDAtLjA1LS4yNTh6TTE2LjU4NiA4SDE0VjUuNDE0TDE2LjU4NiA4ek02IDIwVjRoNnY1YTEgMSAwIDAgMCAxIDFoNWwuMDAyIDEwSDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmlsZUZpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjcwNyAyLjI5M0EuOTk2Ljk5NiAwIDAgMCAxMyAySDZjLTEuMTAzIDAtMiAuODk3LTIgMnYxNmMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJWOWEuOTk2Ljk5NiAwIDAgMC0uMjkzLS43MDdsLTYtNnpNNiA0aDYuNTg2TDE4IDkuNDE0bC4wMDIgOS4xNzQtMi41NjgtMi41NjhjLjM1LS41OTUuNTY2LTEuMjgxLjU2Ni0yLjAyIDAtMi4yMDYtMS43OTQtNC00LTRzLTQgMS43OTQtNCA0IDEuNzk0IDQgNCA0Yy43MzkgMCAxLjQyNS0uMjE2IDIuMDItLjU2NkwxNi41ODYgMjBINlY0em02IDEyYy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMiAyIC44OTcgMiAyLS44OTcgMi0yIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTAzIDguNTg2YS45OTcuOTk3IDAgMCAwLS4xOTYtLjI5M2wtNi02YS45OTcuOTk3IDAgMCAwLS4yOTMtLjE5NmMtLjAzLS4wMTQtLjA2Mi0uMDIyLS4wOTQtLjAzM2EuOTkxLjk5MSAwIDAgMC0uMjU5LS4wNTFDMTMuMDQgMi4wMTEgMTMuMDIxIDIgMTMgMkg2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0yVjljMC0uMDIxLS4wMTEtLjA0LS4wMTMtLjA2MmEuOTUyLjk1MiAwIDAgMC0uMDUxLS4yNTljLS4wMS0uMDMyLS4wMTktLjA2My0uMDMzLS4wOTN6TTE2LjU4NiA4SDE0VjUuNDE0TDE2LjU4NiA4ek02IDIwVjRoNnY1YTEgMSAwIDAgMCAxIDFoNWwuMDAyIDEwSDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMmg4djJIOHptMCA0aDh2Mkg4em0wLThoMnYySDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek05IDExVjVoNnY2SDl6bTYgMnY2SDl2LTZoNnpNNSA1aDJ2Mkg1VjV6bTAgNGgydjJINVY5em0wIDRoMnYySDV2LTJ6bTAgNGgydjJINXYtMnptMTQuMDAyIDJIMTd2LTJoMi4wMDJ2MnptLS4wMDEtNEgxN3YtMmgyLjAwMXYyem0wLTRIMTdWOWgyLjAwMXYyek0xNyA3VjVoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZpbHRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgM0g1YTEgMSAwIDAgMC0xIDF2Mi41OWMwIC41MjMuMjEzIDEuMDM3LjU4MyAxLjQwN0wxMCAxMy40MTRWMjFhMS4wMDEgMS4wMDEgMCAwIDAgMS40NDcuODk1bDQtMmMuMzM5LS4xNy41NTMtLjUxNi41NTMtLjg5NXYtNS41ODZsNS40MTctNS40MTdjLjM3LS4zNy41ODMtLjg4NC41ODMtMS40MDdWNGExIDEgMCAwIDAtMS0xem0tNi43MDcgOS4yOTNBLjk5Ni45OTYgMCAwIDAgMTQgMTN2NS4zODJsLTIgMVYxM2EuOTk2Ljk5NiAwIDAgMC0uMjkzLS43MDdMNiA2LjU5VjVoMTQuMDAxbC4wMDIgMS41ODMtNS43MSA1LjcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMWgxMHYySDd6TTQgN2gxNnYySDR6bTYgOGg0djJoLTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmluZ2VycHJpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOTYyIDE3LjY3NEM3IDE5LjMzMSA3IDIwLjU2NyA3IDIyaDJjMC0xLjUyMSAwLTMuMjQ0LTEuMzQzLTUuMzg5bC0xLjY5NSAxLjA2M3pNMTYuNTA0IDMuMzg3QzEzLjk3NyAxLjkxIDcuNTUuOTI2IDQuMjgxIDQuMzA1Yy0zLjM2OCAzLjQ4MS0yLjI0OSA5LjA3Mi4wMDEgMTEuMzkyLjExOC4xMjIuMjQ0LjIyOS4zNjkuMzMzLjA3Mi4wNjEuMTQ2LjExNi4yMDUuMTg0bDEuNDk0LTEuMzNhMy45MTggMy45MTggMCAwIDAtLjQxOS0uMzkxYy0uMDcyLS4wNi0uMTQ2LS4xMTktLjIxNC0uMTg4LTEuNjYtMS43MTEtMi41MDYtNi4wMTcuMDAxLTguNjA4IDIuNTI1LTIuNjExIDguMDY4LTEuNTc5IDkuNzc3LS41ODEgMi42OTEgMS41NjkgNC4wOTcgNC4zMDggNC4xMDkgNC4zMzNsMS43ODktLjg5NWMtLjA2NS0uMTM1LTEuNjY4LTMuMjg5LTQuODg5LTUuMTY3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMzQgMTIuODIyYy0xLjAzLTEuMjYtMS43ODctMi4zMTctMS4zOTItMy41MDYuMjYzLS43ODUuODEzLTEuMzI1IDEuNjM3LTEuNjA0IDEuMjI0LS40MSAyLjkyLS4xNiA0LjA0LjYwMWwxLjEyMy0xLjY1NGMtMS42NDgtMS4xMi0zLjk4Mi0xLjQ1Ny01LjgwNC0uODQxLTEuNDA4LjQ3Ni0yLjQzNSAxLjQ5NS0yLjg5MiAyLjg2Ni0uNzc2IDIuMzI4Ljc5OSA0LjI1NCAxLjc0IDUuNDA1LjE0OS4xODMuMjkuMzU0LjQwOS41MTJDMTEgMTguMzIzIDExIDIwLjEwOSAxMSAyMmgyYzAtMi4wMzYgMC00LjM0NS0zLjIwMS04LjYwMWExOS43MSAxOS43MSAwIDAgMC0uNDU5LS41Nzd6bTUuNzkxLTMuMzQ0YzEuODM1IDEuNzY0IDMuMDM0IDQuNDQ3IDMuODg5IDguNzAxbDEuOTYxLS4zOTVjLS45MzktNC42NzgtMi4zMTYtNy42ODUtNC40NjMtOS43NDhsLTEuMzg3IDEuNDQyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjU1NiA5LjE2OS0xLjExNSAxLjY2Yy4wMjcuMDE5IDIuNzExIDEuODggMy44MDEgNS43MjRsMS45MjQtLjU0NWMtMS4yOTktNC41ODItNC40NzYtNi43NDktNC42MS02LjgzOXptMy4xMzIgOS4yOWMuMjEgMS4xNjguMzEyIDIuMzI2LjMxMiAzLjU0MWgyYzAtMS4zMzUtLjExMi0yLjYwOC0uMzQzLTMuODk1bC0xLjk2OS4zNTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRmlyc3RBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTNWNGMwLTEuMTAzLS44OTctMi0yLTJIOWMtMS4xMDMgMC0yIC44OTctMiAydjJINGMtMS4xMDMgMC0yIC44OTctMiAydjEwYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY4YzAtMS4xMDMtLjg5Ny0yLTItMnpNOSA0aDZ2Mkg5VjR6TTQgMThWOGgxNmwuMDAxIDEwSDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZpcnN0UGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMjkzIDE3LjcwNyAxLjQxNC0xLjQxNEwxMy40MTQgMTJsNC4yOTMtNC4yOTMtMS40MTQtMS40MTRMMTAuNTg2IDEyek03IDZoMnYxMkg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDRINlYySDR2MThIM3YyaDR2LTJINnYtNWgxM2ExIDEgMCAwIDAgMS0xVjVhMSAxIDAgMCAwLTEtMXptLTEgOUg2VjZoMTJ2N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGb2xkZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtOC41ODZMOS43MDcgMy4yOTNBLjk5Ni45OTYgMCAwIDAgOSAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTlWN2gxNmwuMDAyIDEySDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy44NzQgMTJoOHYyaC04elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvbGRlck9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMTY1IDE5LjU1MWMuMTg2LjI4LjQ5OS40NDkuODM1LjQ0OWgxNWMuNCAwIC43NjItLjIzOC45MTktLjYwNmwzLTdBLjk5OC45OTggMCAwIDAgMjEgMTFoLTFWN2MwLTEuMTAzLS44OTctMi0yLTJoLTYuMUw5LjYxNiAzLjIxM0EuOTk3Ljk5NyAwIDAgMCA5IDNINGMtMS4xMDMgMC0yIC44OTctMiAydjE0aC4wMDdhMSAxIDAgMCAwIC4xNTguNTUxek0xNy4zNDEgMThINC41MTdsMi4xNDMtNWgxMi44MjRsLTIuMTQzIDV6TTE4IDd2NEg2Yy0uNCAwLS43NjIuMjM4LS45MTkuNjA2TDQgMTQuMTI5VjdoMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDVoLTguNTg2TDkuNzA3IDMuMjkzQS45OTYuOTk2IDAgMCAwIDkgM0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjdjMC0xLjEwMy0uODk3LTItMi0yek00IDE5VjdoMTZsLjAwMiAxMkg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNWgtOC41ODZMOS43MDcgMy4yOTNBLjk5Ny45OTcgMCAwIDAgOSAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTlWN2gxNmwuMDAyIDEySDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRm9udENvbG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE4aDE0djNINXptNy41LTE0aC0xYy0uNDAxIDAtLjc2NC4yNC0uOTIxLjYwOUw1Ljc0NSAxNmgyLjE3M2wxLjI3My0zaDUuNjA0bDEuMjY4IDNoMi4xNzFMMTMuNDIxIDQuNjFBMSAxIDAgMCAwIDEyLjUgNHptLTIuNDYgNyAxLjk1OS00LjYxNkwxMy45NSAxMWgtMy45MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGb250RmFtaWx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA0aDd2MmgtN3ptMSA0aDZ2MmgtNnptMiA0aDR2MmgtNHpNOS4zMDcgNGwtNiAxNmgyLjEzN2wxLjg3NS01aDYuMzYzbDEuODc1IDVoMi4xMzdsLTYtMTZIOS4zMDd6bS0xLjIzOSA5TDEwLjUgNi41MTUgMTIuOTMyIDEzSDguMDY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvbnRTaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMiA2LTMtNC0zIDRoMnY0aC0ybDMgNCAzLTRoLTJWNnpNOS4zMDcgNGwtNiAxNmgyLjEzN2wxLjg3NS01aDYuMzYzbDEuODc1IDVoMi4xMzdsLTYtMTZIOS4zMDd6bS0xLjIzOSA5TDEwLjUgNi41MTUgMTIuOTMyIDEzSDguMDY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjMwNyA0LTYgMTZoMi4xMzdsMS44NzUtNWg2LjM2M2wxLjg3NSA1aDIuMTM3bC02LTE2aC0yLjM4N3ptLTEuMjM5IDlMMTIuNSA2LjUxNSAxNC45MzIgMTNoLTQuODY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvb2RNZW51IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJoMnYyMEgzem03IDRoN3YyaC03em0wIDRoN3YyaC03elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINnYyMGgxM2MxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMThIOFY0aDExdjE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZvb2RUYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGExIDEgMCAwIDAtMSAxdjE2YTEgMSAwIDAgMCAxIDFoMTZhMSAxIDAgMCAwIDEtMVY0YTEgMSAwIDAgMC0xLTF6bS0xIDE2SDVWNWgxNHYxNHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlGb290YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDcxIDQuOTI5YTkuOTM2IDkuOTM2IDAgMCAwLTcuMDctMi45MzggOS45NDMgOS45NDMgMCAwIDAtNy4wNzIgMi45MzhjLTMuODk5IDMuODk4LTMuODk5IDEwLjI0MyAwIDE0LjE0MmE5Ljk0IDkuOTQgMCAwIDAgNy4wNzMgMi45MzggOS45MzYgOS45MzYgMCAwIDAgNy4wNy0yLjkzN2MzLjg5OS0zLjg5OCAzLjg5OS0xMC4yNDMtLjAwMS0xNC4xNDN6TTEyLjE4MSA0aC0uMzU5Yy4wNjEtLjAwMS4xMTktLjAwOS4xOC0uMDA5cy4xMTguMDA4LjE3OS4wMDl6bTYuMDYyIDEzSDE2bC0xLjI1OCAyLjUxNmE3Ljk1NiA3Ljk1NiAwIDAgMS0yLjc0MS40OTMgNy45NiA3Ljk2IDAgMCAxLTIuNzQ2LS40OTRMOCAxNy4wMUg1Ljc2NWE3Ljk2IDcuOTYgMCAwIDEtMS42MjMtMy41MzJMNiAxMSA0Ljc4NCA4LjU2N2E3LjkzNiA3LjkzNiAwIDAgMSAxLjU1OS0yLjIyNCA3Ljk5NCA3Ljk5NCAwIDAgMSAzLjIyLTEuOTY5TDEyIDZsMi40MzgtMS42MjVhOC4wMSA4LjAxIDAgMCAxIDMuMjIgMS45NjggNy45NCA3Ljk0IDAgMCAxIDEuNTU4IDIuMjIxTDE4IDExbDEuODU4IDIuNDc4QTcuOTUyIDcuOTUyIDAgMCAxIDE4LjI0MyAxN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjUgMTEgMS41IDRoNGwxLjUtNEwxMiA4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpRnJpZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZjLTEuMTAzIDAtMiAuODk3LTIgMnYxNmMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMiAuMDAxIDVIMTBWN0g4djJINlY0aDEyek02IDIwdi05aDJ2M2gydi0zaDguMDAxbC4wMDEgOUg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUZ1bGxzY3JlZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNWg1VjNIM3Y3aDJ6bTUgMTRINXYtNUgzdjdoN3ptMTEtNWgtMnY1aC01djJoN3ptLTItNGgyVjNoLTd2Mmg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUdhbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjkzNyA3LjUzQzE5LjIyNyA0LjExOSAxNS44MDMgMiAxMiAyIDYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwYzMuODAzIDAgNy4yMjctMi4xMTkgOC45MzctNS41M2ExIDEgMCAwIDAtLjM5Ny0xLjMxNkwxNS4wMTcgMTJsNS41MjItMy4xNTNjLjQ2MS0uMjY0LjYzNi0uODQyLjM5OC0xLjMxN3ptLTguNDMzIDMuNjAyYS45OTkuOTk5IDAgMCAwIDAgMS43MzZsNi4xNzMgMy41MjVBNy45NDkgNy45NDkgMCAwIDEgMTIgMjBjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LThhNy45NSA3Ljk1IDAgMCAxIDYuNjc3IDMuNjA2bC02LjE3MyAzLjUyNnpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjExLjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUdhc1B1bXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE5LjYxNiA2LjQ4LjAxNC0uMDE3LTQtMy4yNC0xLjI2IDEuNTU0IDIuMDY3IDEuNjc0YTIuOTkgMi45OSAwIDAgMC0xLjM5NSAzLjA1OGMuMTQ5Ljg5OS43NjYgMS42NzYgMS41NjUgMi4xMTIuODk3LjQ5IDEuNjg1LjQ0NiAyLjM4NC4xOTdMMTguOTc2IDE4YS45OTYuOTk2IDAgMCAxLTEuMzkuOTIyLjk5NS45OTUgMCAwIDEtLjMxOC0uMjE3Ljk5Ni45OTYgMCAwIDEtLjI5MS0uNzA1TDE3IDE2YTIuOTggMi45OCAwIDAgMC0uODc3LTIuMTE5QTMgMyAwIDAgMCAxNCAxM2gtMVY1YzAtMS4xMDMtLjg5Ny0yLTItMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoN2MxLjEwMyAwIDItLjg5NyAyLTJ2LTRoMWMuMTM2IDAgLjI2Ny4wMjcuMzkxLjA3OGExLjAyOCAxLjAyOCAwIDAgMSAuNTMxLjUzM0EuOTk0Ljk5NCAwIDAgMSAxNSAxNmwtLjAyNCAyYzAgLjQwNi4wNzkuNzk5LjIzNiAxLjE2OC4xNTEuMzU5LjM2OC42OC42NDEuOTUxYTIuOTcgMi45NyAwIDAgMCAyLjEyMy44ODFjLjQwNiAwIC43OTgtLjA3OCAxLjE2OC0uMjM2LjM1OC0uMTUuNjgtLjM2Ny45NTEtLjY0MUEyLjk4MyAyLjk4MyAwIDAgMCAyMC45NzYgMThMMjEgOWEyLjk5NyAyLjk5NyAwIDAgMC0xLjM4NC0yLjUyek00IDVoN2wuMDAxIDRINFY1em0wIDE0di04aDcuMDAxbC4wMDEgOEg0em0xNC05YTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHaG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC45NjMgMC05IDQuMDM4LTkgOXY4aC4wNTFjLjI0NSAxLjY5MSAxLjY5IDMgMy40NDkgMyAxLjE3NCAwIDIuMDc0LS40MTcgMi42NzItMS4xNzRhMy45OSAzLjk5IDAgMCAwIDUuNjY4LS4wMTRjLjYwMS43NjIgMS41MDQgMS4xODggMi42NiAxLjE4OCAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVYxMWMwLTQuOTYyLTQuMDM3LTktOS05em03IDE2LjVjMCAuODI3LS42NzMgMS41LTEuNSAxLjUtLjQ0OSAwLTEuNSAwLTEuNS0ydi0xaC0ydjFjMCAxLjEwMy0uODk3IDItMiAycy0yLS44OTctMi0ydi0xSDh2MWMwIDEuODQ1LS43NzQgMi0xLjUgMi0uODI3IDAtMS41LS42NzMtMS41LTEuNVYxMWMwLTMuODYgMy4xNDEtNyA3LTdzNyAzLjE0IDcgN3Y3LjV6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC0xLjIwOUE0LjkyIDQuOTIgMCAwIDAgMTkgNS41QzE5IDMuNTcgMTcuNDMgMiAxNS41IDJjLTEuNjIyIDAtMi43MDUgMS40ODItMy40MDQgMy4wODVDMTEuNDA3IDMuNTcgMTAuMjY5IDIgOC41IDIgNi41NyAyIDUgMy41NyA1IDUuNWMwIC41OTYuMDc5IDEuMDg5LjIwOSAxLjVINGMtMS4xMDMgMC0yIC44OTctMiAydjJjMCAxLjEwMy44OTcgMiAyIDJ2N2MwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJ2LTdjMS4xMDMgMCAyLS44OTcgMi0yVjljMC0xLjEwMy0uODk3LTItMi0yem0tNC41LTNjLjgyNyAwIDEuNS42NzMgMS41IDEuNUMxNyA3IDE2LjM3NCA3IDE2IDdoLTIuNDc4Yy41MTEtMS41NzYgMS4yNTMtMyAxLjk3OC0zek03IDUuNUM3IDQuNjczIDcuNjczIDQgOC41IDRjLjg4OCAwIDEuNzE0IDEuNTI1IDIuMTk4IDNIOGMtLjM3NCAwLTEgMC0xLTEuNXpNNCA5aDd2Mkg0Vjl6bTIgMTF2LTdoNXY3SDZ6bTEyIDBoLTV2LTdoNXY3em0tNS05VjkuMDg1TDEzLjAxNyA5SDIwbC4wMDEgMkgxM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHaXRCcmFuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgNEMxNS41NyA0IDE0IDUuNTcgMTQgNy41YzAgMS41NTQgMS4wMjUgMi44NTkgMi40MyAzLjMxNS0uMTQ2LjkzMi0uNTQ3IDEuNy0xLjIzIDIuMzIzLTEuOTQ2IDEuNzczLTUuNTI3IDEuOTM1LTcuMiAxLjkwN1Y4LjgzN2MxLjQ0LS40MzQgMi41LTEuNzU3IDIuNS0zLjMzN0MxMC41IDMuNTcgOC45MyAyIDcgMlMzLjUgMy41NyAzLjUgNS41YzAgMS41OCAxLjA2IDIuOTAzIDIuNSAzLjMzN3Y2LjMyNmMtMS40NC40MzQtMi41IDEuNzU3LTIuNSAzLjMzN0MzLjUgMjAuNDMgNS4wNyAyMiA3IDIyczMuNS0xLjU3IDMuNS0zLjVjMC0uNTUxLS4xNC0xLjA2NS0uMzY3LTEuNTI5IDIuMDYtLjE4NiA0LjY1Ny0uNzU3IDYuNDA5LTIuMzUgMS4wOTctLjk5NyAxLjczMS0yLjI2NCAxLjkwNC0zLjc2OEMxOS45MTUgMTAuNDM4IDIxIDkuMSAyMSA3LjUgMjEgNS41NyAxOS40MyA0IDE3LjUgNHptLTEyIDEuNUM1LjUgNC42NzMgNi4xNzMgNCA3IDRzMS41LjY3MyAxLjUgMS41UzcuODI3IDcgNyA3cy0xLjUtLjY3My0xLjUtMS41ek03IDIwYy0uODI3IDAtMS41LS42NzMtMS41LTEuNWExLjUgMS41IDAgMCAxIDEuNDgyLTEuNDk4bC4xMy4wMUExLjQ5NSAxLjQ5NSAwIDAgMSA3IDIwek0xNy41IDljLS44MjcgMC0xLjUtLjY3My0xLjUtMS41UzE2LjY3MyA2IDE3LjUgNnMxLjUuNjczIDEuNSAxLjVTMTguMzI3IDkgMTcuNSA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUdpdENvbW1pdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmMtMi45NjcgMC01LjQzMSAyLjE2Ny01LjkwOSA1SDJ2Mmg0LjA5MmMuNDc5IDIuODMyIDIuOTQyIDQuOTk4IDUuOTA5IDQuOTk4czUuNDMtMi4xNjYgNS45MDktNC45OThIMjJ2LTJoLTQuMDljLS40NzgtMi44MzMtMi45NDItNS01LjkxLTV6bTAgOS45OThjLTIuMjA1IDAtMy45OTktMS43OTQtMy45OTktMy45OTlTOS43OTUgOCAxMiA4YzIuMjA2IDAgNCAxLjc5NCA0IDMuOTk5cy0xLjc5NCAzLjk5OS00IDMuOTk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUdpdENvbXBhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMDEgMmMtMS45MyAwLTMuNSAxLjU3LTMuNSAzLjUgMCAxLjU4IDEuMDYgMi45MDMgMi41IDMuMzM3djcuMTZjLS4wMDEuMTc5LjAyNyAxLjc4MSAxLjE3NCAyLjkzMUM2Ljg5MiAxOS42NCA3Ljg0IDIwIDkgMjB2Mmw0LTMtNC0zdjJjLTEuODIzIDAtMS45ODQtMS41MzQtMS45OS0yVjguODM3YzEuNDQtLjQzNCAyLjUtMS43NTcgMi41LTMuMzM3IDAtMS45My0xLjU3MS0zLjUtMy41LTMuNXptMCA1Yy0uODI3IDAtMS41LS42NzMtMS41LTEuNVM1LjE4MyA0IDYuMDEgNHMxLjUuNjczIDEuNSAxLjVTNi44MzcgNyA2LjAxIDd6bTEzIDguMTYzVjcuOTk3QzE5LjAwNSA2LjM5MSAxNy45MzMgNCAxNSA0VjJsLTQgMyA0IDNWNmMxLjgyOSAwIDIuMDAxIDEuNTM5IDIuMDEgMnY3LjE2M2MtMS40NC40MzQtMi41IDEuNzU3LTIuNSAzLjMzNyAwIDEuOTMgMS41NyAzLjUgMy41IDMuNXMzLjUtMS41NyAzLjUtMy41YzAtMS41OC0xLjA2LTIuOTAzLTIuNS0zLjMzN3ptLTEgNC44MzdjLS44MjcgMC0xLjUtLjY3My0xLjUtMS41cy42NzMtMS41IDEuNS0xLjUgMS41LjY3MyAxLjUgMS41LS42NzMgMS41LTEuNSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR2l0TWVyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxOC41QzIuNSAyMC40MyA0LjA3IDIyIDYgMjJzMy41LTEuNTcgMy41LTMuNWMwLTEuNTgtMS4wNi0yLjkwMy0yLjUtMy4zMzd2LTMuNDg4Yy4yNDQuMjczLjUwOS41MjcuODEzLjc0NCAxLjE4Ljg0NCAyLjYxNyAxLjA5OCAzLjkxOCAxLjA5OC45NjYgMCAxLjg1My0uMTQgMi41MDYtLjI4MWEzLjUgMy41IDAgMCAwIDMuMjY0IDIuMjY1YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41cy0xLjU3LTMuNS0zLjUtMy41YTMuNSAzLjUgMCAwIDAtMy40MDQgMi43MThjLTEuMjk3LjMyMS0zLjY2NC42MTYtNS4xMTktLjQyNi0uNjY2LS40NzctMS4wOS0xLjIzOS0xLjMwNi0yLjIzNkM4Ljc1NSA3Ljk2IDkuNSA2LjgyMSA5LjUgNS41IDkuNSAzLjU3IDcuOTMgMiA2IDJTMi41IDMuNTcgMi41IDUuNWMwIDEuNTggMS4wNiAyLjkwMyAyLjUgMy4zMzd2Ni4zMjZjLTEuNDQuNDM0LTIuNSAxLjc1Ny0yLjUgMy4zMzd6bTE1LThjLjgyNyAwIDEuNS42NzMgMS41IDEuNXMtLjY3MyAxLjUtMS41IDEuNVMxNiAxMi44MjcgMTYgMTJzLjY3My0xLjUgMS41LTEuNXptLTEwIDhjMCAuODI3LS42NzMgMS41LTEuNSAxLjVzLTEuNS0uNjczLTEuNS0xLjVTNS4xNzMgMTcgNiAxN3MxLjUuNjczIDEuNSAxLjV6bS0zLTEzQzQuNSA0LjY3MyA1LjE3MyA0IDYgNHMxLjUuNjczIDEuNSAxLjVTNi44MjcgNyA2IDdzLTEuNS0uNjczLTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR2l0UHVsbFJlcXVlc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjAxIDE1LjE2M1Y3Ljk5N0MxOS4wMDUgNi4zOTEgMTcuOTMzIDQgMTUgNFYybC00IDMgNCAzVjZjMS44MjkgMCAyLjAwMSAxLjUzOSAyLjAxIDJ2Ny4xNjNjLTEuNDQuNDM0LTIuNSAxLjc1Ny0yLjUgMy4zMzcgMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNWMwLTEuNTgtMS4wNi0yLjkwMy0yLjUtMy4zMzd6bS0xIDQuODM3Yy0uODI3IDAtMS41LS42NzMtMS41LTEuNXMuNjczLTEuNSAxLjUtMS41IDEuNS42NzMgMS41IDEuNS0uNjczIDEuNS0xLjUgMS41ek05LjUgNS41QzkuNSAzLjU3IDcuOTMgMiA2IDJTMi41IDMuNTcgMi41IDUuNWMwIDEuNTggMS4wNiAyLjkwMyAyLjUgMy4zMzd2Ni4zMjZjLTEuNDQuNDM0LTIuNSAxLjc1Ny0yLjUgMy4zMzdDMi41IDIwLjQzIDQuMDcgMjIgNiAyMnMzLjUtMS41NyAzLjUtMy41YzAtMS41OC0xLjA2LTIuOTAzLTIuNS0zLjMzN1Y4LjgzN0M4LjQ0IDguNDAzIDkuNSA3LjA4IDkuNSA1LjV6bS01IDBDNC41IDQuNjczIDUuMTczIDQgNiA0czEuNS42NzMgMS41IDEuNVM2LjgyNyA3IDYgN3MtMS41LS42NzMtMS41LTEuNXptMyAxM2MwIC44MjctLjY3MyAxLjUtMS41IDEuNXMtMS41LS42NzMtMS41LTEuNVM1LjE3MyAxNyA2IDE3czEuNS42NzMgMS41IDEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHaXRSZXBvRm9ya2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjU1OSA4Ljg1NWMuMTY2IDEuMTgzLjc4OSAzLjIwNyAzLjA4NyA0LjA3OUMxMSAxMy44MjkgMTEgMTQuNTM0IDExIDE1di4xNjNjLTEuNDQuNDM0LTIuNSAxLjc1Ny0yLjUgMy4zMzcgMCAxLjkzIDEuNTcgMy41IDMuNSAzLjVzMy41LTEuNTcgMy41LTMuNWMwLTEuNTgtMS4wNi0yLjkwMy0yLjUtMy4zMzdWMTVjMC0uNDY2IDAtMS4xNzEgMi4zNTQtMi4wNjUgMi4yOTgtLjg3MiAyLjkyMS0yLjg5NiAzLjA4Ny00LjA3OUMxOS45MTIgOC40NDEgMjEgNy4xMDIgMjEgNS41IDIxIDMuNTcgMTkuNDMgMiAxNy41IDJTMTQgMy41NyAxNCA1LjVjMCAxLjU1MiAxLjAyMiAyLjg1NSAyLjQyNCAzLjMxMy0uMTQ2LjczNS0uNTY1IDEuNzkxLTEuNzc4IDIuMjUyLTEuMTkyLjQ1Mi0yLjA1My45NTMtMi42NDYgMS41MzYtLjU5My0uNTgzLTEuNDUzLTEuMDg0LTIuNjQ2LTEuNTM2LTEuMjEzLS40NjEtMS42MzMtMS41MTctMS43NzgtMi4yNTJDOC45NzggOC4zNTUgMTAgNy4wNTIgMTAgNS41IDEwIDMuNTcgOC40MyAyIDYuNSAyUzMgMy41NyAzIDUuNWMwIDEuNjAyIDEuMDg4IDIuOTQxIDIuNTU5IDMuMzU1ek0xNy41IDRjLjgyNyAwIDEuNS42NzMgMS41IDEuNVMxOC4zMjcgNyAxNy41IDcgMTYgNi4zMjcgMTYgNS41IDE2LjY3MyA0IDE3LjUgNHptLTQgMTQuNWMwIC44MjctLjY3MyAxLjUtMS41IDEuNXMtMS41LS42NzMtMS41LTEuNS42NzMtMS41IDEuNS0xLjUgMS41LjY3MyAxLjUgMS41ek02LjUgNEM3LjMyNyA0IDggNC42NzMgOCA1LjVTNy4zMjcgNyA2LjUgNyA1IDYuMzI3IDUgNS41IDUuNjczIDQgNi41IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR2xhc3Nlc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMjEuOTQ4IDExLjY4NC0yLTZBLjk5Ny45OTcgMCAwIDAgMTkgNWgtM3YyaDIuMjc5bDEuMzM0IDRIMTVjLTEuMTAzIDAtMiAuODk3LTIgMmgtMmMwLTEuMTAzLS44OTctMi0yLTJINC4zODdsMS4zMzQtNEg4VjVINWEuOTk4Ljk5OCAwIDAgMC0uOTQ4LjY4NGwtMiA2IC4wMTIuMDA0QS45MjguOTI4IDAgMCAwIDIgMTJ2NGMwIDEuNjU0IDEuMzQ2IDMgMyAzaDNjMS42NTQgMCAzLTEuMzQ2IDMtM3YtMWgydjFjMCAxLjY1NCAxLjM0NiAzIDMgM2gzYzEuNjU0IDAgMy0xLjM0NiAzLTN2LTRhLjk2NC45NjQgMCAwIDAtLjA2My0uMzEzbC4wMTEtLjAwM3pNOSAxNmMwIC41NTEtLjQ0OCAxLTEgMUg1Yy0uNTUyIDAtMS0uNDQ5LTEtMXYtM2g1djN6bTExIDBjMCAuNTUxLS40NDggMS0xIDFoLTNjLS41NTIgMC0xLS40NDktMS0xdi0zaDV2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHbGFzc2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS45NzcgMTMuNzgzLTItOUExLjAwMiAxLjAwMiAwIDAgMCAxOSA0aC0zdjJoMi4xOThsLjk2MSA0LjMyNkE0LjQ2NyA0LjQ2NyAwIDAgMCAxNy41IDEwYy0xLjk1MyAwLTMuNjAzIDEuMjU4LTQuMjI0IDNoLTIuNTUzYy0uNjIxLTEuNzQyLTIuMjcxLTMtNC4yMjQtMy0uNTg3IDAtMS4xNDUuMTIxLTEuNjU5LjMyNkw1LjgwMiA2SDhWNEg1YTEgMSAwIDAgMC0uOTc2Ljc4M2wtMiA5IC4wNDcuMDExQTQuNTUyIDQuNTUyIDAgMCAwIDIgMTQuNUMyIDE2Ljk4MSA0LjAxOSAxOSA2LjUgMTljMi4zMSAwIDQuMTk3LTEuNzU2IDQuNDQ5LTRoMi4xMDJjLjI1MiAyLjI0NCAyLjEzOSA0IDQuNDQ5IDQgMi40ODEgMCA0LjUtMi4wMTkgNC41LTQuNSAwLS4yNDItLjAzNC0uNDc1LS4wNzEtLjcwNmwuMDQ4LS4wMTF6TTYuNSAxN0M1LjEyMiAxNyA0IDE1Ljg3OCA0IDE0LjVTNS4xMjIgMTIgNi41IDEyIDkgMTMuMTIyIDkgMTQuNSA3Ljg3OCAxNyA2LjUgMTd6bTExIDBjLTEuMzc5IDAtMi41LTEuMTIyLTIuNS0yLjVzMS4xMjEtMi41IDIuNS0yLjUgMi41IDEuMTIyIDIuNSAyLjUtMS4xMjEgMi41LTIuNSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR2xvYmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE4Ljc5MVYyMEg5djJoNnYtMmgtMnYtMS44NDVhOS45MzQgOS45MzQgMCAwIDAgMy4wNzEtMi4wODRjMy44OTgtMy44OTggMy44OTgtMTAuMjQzIDAtMTQuMTQzbC0xLjQxNCAxLjQxNGMzLjExOSAzLjEyIDMuMTE5IDguMTk1IDAgMTEuMzE0LTMuMTE5IDMuMTE4LTguMTk1IDMuMTItMTEuMzE0IDBMMS45MjkgMTYuMDdBOS45NzEgOS45NzEgMCAwIDAgOSAxOC45OTRhOS45OCA5Ljk4IDAgMCAwIDItLjIwM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDljMCAzLjMwOSAyLjY5MSA2IDYgNnM2LTIuNjkxIDYtNi0yLjY5MS02LTYtNi02IDIuNjkxLTYgNnptMTAgMGMwIDIuMjA2LTEuNzk0IDQtNCA0cy00LTEuNzk0LTQtNCAxLjc5NC00IDQtNCA0IDEuNzk0IDQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem03LjkzMSA5aC0yLjc2NGExNC42NyAxNC42NyAwIDAgMC0xLjc5Mi02LjI0M0E4LjAxMyA4LjAxMyAwIDAgMSAxOS45MzEgMTF6TTEyLjUzIDQuMDI3YzEuMDM1IDEuMzY0IDIuNDI3IDMuNzggMi42MjcgNi45NzNIOS4wM2MuMTM5LTIuNTk2Ljk5NC01LjAyOCAyLjQ1MS02Ljk3NC4xNzItLjAxLjM0NC0uMDI2LjUxOS0uMDI2LjE3OSAwIC4zNTQuMDE2LjUzLjAyN3ptLTMuODQyLjdDNy43MDQgNi42MTggNy4xMzYgOC43NjIgNy4wMyAxMUg0LjA2OWE4LjAxMyA4LjAxMyAwIDAgMSA0LjYxOS02LjI3M3pNNC4wNjkgMTNoMi45NzRjLjEzNiAyLjM3OS42NjUgNC40NzggMS41NTYgNi4yM0E4LjAxIDguMDEgMCAwIDEgNC4wNjkgMTN6bTcuMzgxIDYuOTczQzEwLjA0OSAxOC4yNzUgOS4yMjIgMTUuODk2IDkuMDQxIDEzaDYuMTEzYy0uMjA4IDIuNzczLTEuMTE3IDUuMTk2LTIuNjAzIDYuOTcyLS4xODIuMDEyLS4zNjQuMDI4LS41NTEuMDI4LS4xODYgMC0uMzY3LS4wMTYtLjU1LS4wMjd6bTQuMDExLS43NzJjLjk1NS0xLjc5NCAxLjUzOC0zLjkwMSAxLjY5MS02LjIwMWgyLjc3OGE4LjAwNSA4LjAwNSAwIDAgMS00LjQ2OSA2LjIwMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHcmlkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzSDRhMSAxIDAgMCAwLTEgMXY2YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMXpNOSA5SDVWNWg0djR6bTUgMmg2YTEgMSAwIDAgMCAxLTFWNGExIDEgMCAwIDAtMS0xaC02YTEgMSAwIDAgMC0xIDF2NmExIDEgMCAwIDAgMSAxem0xLTZoNHY0aC00VjV6TTMgMjBhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTF2LTZhMSAxIDAgMCAwLTEtMUg0YTEgMSAwIDAgMC0xIDF2NnptMi01aDR2NEg1di00em04IDVhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTF2LTZhMSAxIDAgMCAwLTEtMWgtNmExIDEgMCAwIDAtMSAxdjZ6bTItNWg0djRoLTR2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR3JpZEhvcml6b250YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdoNHY0aC00em02IDBoNHY0aC00ek00IDdoNHY0SDR6bTYgNmg0djRoLTR6bTYgMGg0djRoLTR6TTQgMTNoNHY0SDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR3JpZFNtYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoNHY0SDd6bTAgNmg0djRIN3ptNi02aDR2NGgtNHptMCA2aDR2NGgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHcmlkVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTBoNHY0SDd6bTAtNmg0djRIN3ptMCAxMmg0djRIN3ptNi02aDR2NGgtNHptMC02aDR2NGgtNHptMCAxMmg0djRoLTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpR3JpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgM0g0Ljk4NGMtMS4xMDMgMC0yIC44OTctMiAydjE0LjAxNmMwIDEuMTAzLjg5NyAyIDIgMkgxOWMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJoLTR6bTQgNWgtM1Y1aDN2M3pNNC45ODQgMTBoM3Y0LjAxNmgtM1YxMHptNSAwSDE0djQuMDE2SDkuOTg0VjEwek0xNiAxMGgzdjQuMDE2aC0zVjEwem0tMi01djNIOS45ODRWNUgxNHpNNy45ODQgNXYzaC0zVjVoM3ptLTMgMTEuMDE2aDN2M2gtM3YtM3ptNSAzdi0zSDE0djNIOS45ODR6bTYuMDE2IDB2LTNoMy4wMDF2M0gxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNjA0IDExLjA0OGE1LjY3IDUuNjcgMCAwIDAgLjc1MS0zLjQ0Yy0uMTc5LTEuNzg0LTEuMTc1LTMuMzYxLTIuODAzLTQuNDRsLTEuMTA1IDEuNjY2YzEuMTE5Ljc0MiAxLjggMS43OTkgMS45MTggMi45NzRhMy42OTMgMy42OTMgMCAwIDEtMS4wNzIgMi45ODZsLTEuMTkyIDEuMTkyIDEuNjE4LjQ3NUMxOC45NTEgMTMuNzAxIDE5IDE3Ljk1NyAxOSAxOGgyYzAtMS43ODktLjk1Ni01LjI4NS00LjM5Ni02Ljk1MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTJjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTQtNCAxLjc5NC00IDQgMS43OTQgNCA0IDR6bTAtNmMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDItMi0uODk3LTItMiAuODk3LTIgMi0yem0xLjUgN0g4Yy0zLjMwOSAwLTYgMi42OTEtNiA2djFoMnYtMWMwLTIuMjA2IDEuNzk0LTQgNC00aDNjMi4yMDYgMCA0IDEuNzk0IDQgNHYxaDJ2LTFjMC0zLjMwOS0yLjY5MS02LTYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIYW5kaWNhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI5XCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Ljk4IDE0LjgwNEExIDEgMCAwIDAgMTYgMTRoLTQuMTMzbC0uNDI5LTNIMTZWOWgtNC44NDdsLS4xNjMtMS4xNDJBMSAxIDAgMCAwIDEwIDdIOWExLjAwMyAxLjAwMyAwIDAgMC0uOTkgMS4xNDJsLjg3NyA2LjE0MkEyLjAwOSAyLjAwOSAwIDAgMCAxMC44NjcgMTZoNC4zMTNsLjgzOSA0LjE5NmMuMDk0LjQ2Ny41MDQuODA0Ljk4MS44MDRoM3YtMmgtMi4xODFsLS44MzktNC4xOTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNTEgMTcuNWMtLjczOSAxLjQ3Ni0yLjI1IDIuNS00LjAxIDIuNUE0LjUwNSA0LjUwNSAwIDAgMSA0IDE1LjVhNC41MDMgNC41MDMgMCAwIDEgMi44MTctNC4xNjdsLS4yODktMi4wMjVDMy45MDUgMTAuMTQ1IDIgMTIuNjA0IDIgMTUuNSAyIDE5LjA4NCA0LjkxNiAyMiA4LjUgMjJhNi40OTcgNi40OTcgMCAwIDAgNS41NDUtMy4xMjZsLS4yNzQtMS4zNzRIMTIuNTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGFwcHlBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS40OTNcIixcImN5XCI6XCI5LjQ5M1wiLFwiclwiOlwiMS40OTNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGM1IDAgNi01IDYtNUg2czEgNSA2IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGFwcHlCZWFtaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGM0IDAgNS00IDUtNEg3czEgNCA1IDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzIDEyIDIgLjAxMmMuMDEyLS40NjIuMTk0LTEuMDEyIDEtMS4wMTJzLjk4OC41NSAxIDFoMmMwLTEuMjA2LS43OTktMy0zLTNzLTMgMS43OTQtMyAzem0tNS0xYy44MDYgMCAuOTg4LjU1IDEgMWgyYzAtMS4yMDYtLjc5OS0zLTMtM3MtMyAxLjc5NC0zIDNsMiAuMDEyQzcuMDEyIDExLjU1IDcuMTk0IDExIDggMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGFwcHlIZWFydEV5ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzQgMCA1LTQgNS00SDdzMSA0IDUgNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmM1LjUxNCAwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwem0wLTE4YzQuNDExIDAgOCAzLjU4OSA4IDhzLTMuNTg5IDgtOCA4LTgtMy41ODktOC04IDMuNTg5LTggOC04elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguNTM1IDEyLjYzNCAyLjA1LTIuMDgzYTEuNDg1IDEuNDg1IDAgMCAwLS4wMTgtMi4xMTggMS40OSAxLjQ5IDAgMCAwLTIuMDY1LS4wMzQgMS40ODggMS40ODggMCAwIDAtMi4wNjcuMDY4Yy0uNTg2LjYtLjU3OSAxLjUzLjAxOSAyLjExN2wyLjA4MSAyLjA1em03IDAgMi4wNS0yLjA4M2ExLjQ4NSAxLjQ4NSAwIDAgMC0uMDE4LTIuMTE4IDEuNDkgMS40OSAwIDAgMC0yLjA2NS0uMDM0IDEuNDg4IDEuNDg4IDAgMCAwLTIuMDY4LjA2N2MtLjU4Ni42LS41NzkgMS41My4wMTkgMi4xMTdsMi4wODIgMi4wNTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGFwcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNDkzXCIsXCJjeVwiOlwiMTAuNDkzXCIsXCJyXCI6XCIxLjQ5M1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzQgMCA1LTQgNS00SDdzMSA0IDUgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4wMTggMy44MTUgMTUuMjMyIDhoLTQuOTY2bC43MTYtMy44MTUtMS45NjQtLjM3TDguMjMyIDhINHYyaDMuODU3bC0uNzUxIDRIM3YyaDMuNzMxbC0uNzE0IDMuODA1IDEuOTY1LjM2OUw4Ljc2NiAxNmg0Ljk2NmwtLjcxNCAzLjgwNSAxLjk2NS4zNjkuNzgzLTQuMTc0SDIwdi0yaC0zLjg1OWwuNzUxLTRIMjFWOGgtMy43MzNsLjcxNi0zLjgxNS0xLjk2NS0uMzd6TTE0LjEwNiAxNEg5LjE0MWwuNzUxLTRoNC45NjZsLS43NTIgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjk4MyAxMy44MjEtMS44NTEtMTAuMThBMS45OTggMS45OTggMCAwIDAgMTguMTY1IDJINS44MzVhMiAyIDAgMCAwLTEuOTY4IDEuNjQzbC0xLjg1IDEwLjE3OC4wMTkuMDAzYy0uMDEyLjA2LS4wMzYuMTE0LS4wMzYuMTc2djVjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0ydi01YzAtLjA2My0uMDI0LS4xMTYtLjAzNS0uMTc2bC4wMTgtLjAwM3pNNS44MzUgNGgxMi4zMzFsMS42MzcgOUg0LjE5OGwxLjYzNy05ek00IDE5di00aDE2bC4wMDIgNEg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2aDJ2MmgtMnptLTMgMGgydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGVhZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMjBWNGgtM3Y2SDlWNEg2djE2aDN2LTdoNnY3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhlYWRwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJ2LTEuNzA3YzAtNC40NDItMy40NzktOC4xNjEtNy43NTUtOC4yOS0yLjIwNC0uMDUxLTQuMjUxLjczNi01LjgxNiAyLjI1NkE3LjkzMyA3LjkzMyAwIDAgMCA0IDEwdjJjLTEuMTAzIDAtMiAuODk3LTIgMnY0YzAgMS4xMDMuODk3IDIgMiAyaDJWMTBhNS45NSA1Ljk1IDAgMCAxIDEuODIxLTQuMzA2IDUuOTc3IDUuOTc3IDAgMCAxIDQuMzYzLTEuNjkxQzE1LjM5MiA0LjA5OSAxOCA2LjkyMSAxOCAxMC4yOTNWMjBoMmMxLjEwMyAwIDItLjg5NyAyLTJ2LTRjMC0xLjEwMy0uODk3LTItMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTJoMnY4SDd6bTggMGgydjhoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGVhbHRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS42NDkgNS4yODYgMTQgOC41NDhWMi4wMjVoLTR2Ni41MjNMNC4zNTEgNS4yODZsLTIgMy40NjUgNS42NDggMy4yNjEtNS42NDggMy4yNjEgMiAzLjQ2NUwxMCAxNS40NzdWMjJoNHYtNi41MjNsNS42NDkgMy4yNjEgMi0zLjQ2NS01LjY0OC0zLjI2MSA1LjY0OC0zLjI2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIZWFydENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjc5IDguODMzIDEyIDkuMTEybC0uMjc5LS4yNzlhMi43NDUgMi43NDUgMCAwIDAtMy45MDYgMCAyLjc0NSAyLjc0NSAwIDAgMCAwIDMuOTA3TDEyIDE2LjkyNmw0LjE4Ni00LjE4NmEyLjc0NSAyLjc0NSAwIDAgMCAwLTMuOTA3IDIuNzQ2IDIuNzQ2IDAgMCAwLTMuOTA3IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhlYXJ0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS45OTggMTcgNC4xODYtNC4xODZhMi43NDUgMi43NDUgMCAwIDAgMC0zLjkwNyAyLjc0NiAyLjc0NiAwIDAgMC0zLjkwNyAwbC0uMjc4LjI3OS0uMjc5LS4yNzlhMi43NDYgMi43NDYgMCAwIDAtMy45MDcgMCAyLjc0NiAyLjc0NiAwIDAgMCAwIDMuOTA3TDExLjk5OCAxN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjE2YTEgMSAwIDAgMCAxIDFoMTZhMSAxIDAgMCAwIDEtMVY0em0tMiAxNUg1VjVoMTR2MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDQuNTk1YTUuOTA0IDUuOTA0IDAgMCAwLTMuOTk2LTEuNTU4IDUuOTQyIDUuOTQyIDAgMCAwLTQuMjEzIDEuNzU4Yy0yLjM1MyAyLjM2My0yLjM1MiA2LjA1OS4wMDIgOC40MTJsNy4zMzIgNy4zMzJjLjE3LjI5OS40OTguNDkyLjg3NS40OTJhLjk5Ljk5IDAgMCAwIC43OTItLjQwOWw3LjQxNS03LjQxNWMyLjM1NC0yLjM1NCAyLjM1NC02LjA0OS0uMDAyLTguNDE2YTUuOTM4IDUuOTM4IDAgMCAwLTQuMjA5LTEuNzU0QTUuOTA2IDUuOTA2IDAgMCAwIDEyIDQuNTk1em02Ljc5MSAxLjYxYzEuNTYzIDEuNTcxIDEuNTY0IDQuMDI1LjAwMiA1LjU4OEwxMiAxOC41ODZsLTYuNzkzLTYuNzkzYy0xLjU2Mi0xLjU2My0xLjU2MS00LjAxNy0uMDAyLTUuNTg0Ljc2LS43NTYgMS43NTQtMS4xNzIgMi43OTktMS4xNzJzMi4wMzUuNDE2IDIuNzg5IDEuMTdsLjUuNWEuOTk5Ljk5OSAwIDAgMCAxLjQxNCAwbC41LS41YzEuNTEyLTEuNTA5IDQuMDc0LTEuNTA1IDUuNTg0LS4wMDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGVscENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmEzLjkzOSAzLjkzOSAwIDAgMC0zLjkzNCAzLjkzNGgyQzEwLjA2NiA4Ljg2NyAxMC45MzQgOCAxMiA4czEuOTM0Ljg2NyAxLjkzNCAxLjkzNGMwIC41OTgtLjQ4MSAxLjAzMi0xLjIxNiAxLjYyNmE5LjIwOCA5LjIwOCAwIDAgMC0uNjkxLjU5OWMtLjk5OC45OTctMS4wMjcgMi4wNTYtMS4wMjcgMi4xNzRWMTVoMmwtLjAwMS0uNjMzYy4wMDEtLjAxNi4wMzMtLjM4Ni40NDEtLjc5My4xNS0uMTUuMzM5LS4zLjUzNS0uNDU4Ljc3OS0uNjMxIDEuOTU4LTEuNTg0IDEuOTU4LTMuMTgyQTMuOTM3IDMuOTM3IDAgMCAwIDEyIDZ6bS0xIDEwaDJ2MmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTljLjk0NiAwIDEuODEtLjEwMyAyLjU5OC0uMjgxbC0xLjc1Ny0xLjc1N2MtLjI3My4wMjEtLjU1LjAzOC0uODQxLjAzOC01LjM1MSAwLTcuNDI0LTMuODQ2LTcuOTI2LTVhOC42NDIgOC42NDIgMCAwIDEgMS41MDgtMi4yOTdMNC4xODQgOC4zMDVjLTEuNTM4IDEuNjY3LTIuMTIxIDMuMzQ2LTIuMTMyIDMuMzc5YS45OTQuOTk0IDAgMCAwIDAgLjYzM0MyLjA3MyAxMi4zODMgNC4zNjcgMTkgMTIgMTl6bTAtMTRjLTEuODM3IDAtMy4zNDYuMzk2LTQuNjA0Ljk4MUwzLjcwNyAyLjI5MyAyLjI5MyAzLjcwN2wxOCAxOCAxLjQxNC0xLjQxNC0zLjMxOS0zLjMxOWMyLjYxNC0xLjk1MSAzLjU0Ny00LjYxNSAzLjU2MS00LjY1N2EuOTk0Ljk5NCAwIDAgMCAwLS42MzNDMjEuOTI3IDExLjYxNyAxOS42MzMgNSAxMiA1em00Ljk3MiAxMC41NTgtMi4yOC0yLjI4Yy4xOS0uMzkuMzA4LS44MTkuMzA4LTEuMjc4IDAtMS42NDEtMS4zNTktMy0zLTMtLjQ1OSAwLS44ODguMTE4LTEuMjc3LjMwOUw4LjkxNSA3LjUwMUE5LjI2IDkuMjYgMCAwIDEgMTIgN2M1LjM1MSAwIDcuNDI0IDMuODQ2IDcuOTI2IDUtLjMwMi42OTItMS4xNjYgMi4zNDItMi45NTQgMy41NTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSGlnaGxpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC43MDcgNS44MjYtMy41MzUtMy41MzNhLjk5OS45OTkgMCAwIDAtMS40MDgtLjAwNkw3LjA5NiAxMC44MmExLjAxIDEuMDEgMCAwIDAtLjI3My40ODhsLTEuMDI0IDQuNDM3TDQgMThoMi44MjhsMS4xNDItMS4xMjkgMy41ODgtLjgyOGMuMTgtLjA0Mi4zNDUtLjEzMy40NzctLjI2Mmw4LjY2Ny04LjUzNWExIDEgMCAwIDAgLjAwNS0xLjQyem0tOS4zNjkgNy44MzMtMi4xMjEtMi4xMiA3LjI0My03LjEzMSAyLjEyIDIuMTItNy4yNDIgNy4xMzF6TTQgMjBoMTZ2Mkg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDh2NWg1di0yaC0zVjh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuMjkyIDguNDk3YTguOTU3IDguOTU3IDAgMCAwLTEuOTI4LTIuODYyIDkuMDA0IDkuMDA0IDAgMCAwLTQuNTUtMi40NTIgOS4wOSA5LjA5IDAgMCAwLTMuNjI2IDAgOC45NjUgOC45NjUgMCAwIDAtNC41NTIgMi40NTMgOS4wNDggOS4wNDggMCAwIDAtMS45MjggMi44NkE4Ljk2MyA4Ljk2MyAwIDAgMCA0IDEybC4wMDEuMDI1SDJMNSAxNmwzLTMuOTc1SDYuMDAxTDYgMTJhNi45NTcgNi45NTcgMCAwIDEgMS4xOTUtMy45MTMgNy4wNjYgNy4wNjYgMCAwIDEgMS44OTEtMS44OTIgNy4wMzQgNy4wMzQgMCAwIDEgMi41MDMtMS4wNTQgNy4wMDMgNy4wMDMgMCAwIDEgOC4yNjkgNS40NDUgNy4xMTcgNy4xMTcgMCAwIDEgMCAyLjgyNCA2LjkzNiA2LjkzNiAwIDAgMS0xLjA1NCAyLjUwM2MtLjI1LjM3MS0uNTM3LjcyLS44NTQgMS4wMzZhNy4wNTggNy4wNTggMCAwIDEtMi4yMjUgMS41MDEgNi45OCA2Ljk4IDAgMCAxLTEuMzEzLjQwOCA3LjExNyA3LjExNyAwIDAgMS0yLjgyMyAwIDYuOTU3IDYuOTU3IDAgMCAxLTIuNTAxLTEuMDUzIDcuMDY2IDcuMDY2IDAgMCAxLTEuMDM3LS44NTVsLTEuNDE0IDEuNDE0QTguOTg1IDguOTg1IDAgMCAwIDEzIDIxYTkuMDUgOS4wNSAwIDAgMCAzLjUwMy0uNzA3IDkuMDA5IDkuMDA5IDAgMCAwIDMuOTU5LTMuMjZBOC45NjggOC45NjggMCAwIDAgMjIgMTJhOC45MjggOC45MjggMCAwIDAtLjcwOC0zLjUwM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC44OTUgNy41NTMtMi00QTEuMDAxIDEuMDAxIDAgMCAwIDE4IDNoLTVjLS4zNzkgMC0uNzI1LjIxNC0uODk1LjU1M0wxMC4zODIgN0g2Yy0uMzc5IDAtLjcyNS4yMTQtLjg5NS41NTNsLTIgNGExIDEgMCAwIDAgMCAuODk1bDIgNGMuMTcuMzM4LjUxNi41NTIuODk1LjU1Mmg0LjM4MmwxLjcyNCAzLjQ0N0EuOTk4Ljk5OCAwIDAgMCAxMyAyMWg1Yy4zNzkgMCAuNzI1LS4yMTQuODk1LS41NTNsMi00YTEgMSAwIDAgMCAwLS44OTVMMTkuMTE4IDEybDEuNzc2LTMuNTUzYTEgMSAwIDAgMCAuMDAxLS44OTR6TTEzLjYxOCA1aDMuNzY0bDEuNSAzLTEuNSAzaC0zLjc2NGwtMS41LTMgMS41LTN6bS04LjUgNyAxLjUtM2gzLjc2NGwxLjUgMy0xLjUgM0g2LjYxOGwtMS41LTN6bTEyLjI2NCA3aC0zLjc2NGwtMS41LTMgMS41LTNoMy43NjRsMS41IDMtMS41IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSG9tZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMmgxNGEyIDIgMCAwIDAgMi0ydi05YTEgMSAwIDAgMC0uMjktLjcxbC04LThhMSAxIDAgMCAwLTEuNDEgMGwtOCA4QTEgMSAwIDAgMCAzIDExdjlhMiAyIDAgMCAwIDIgMnptNS0ydi01aDR2NXptLTUtOC41OSA3LTcgNyA3VjIwaC0zdi01YTIgMiAwIDAgMC0yLTJoLTRhMiAyIDAgMCAwLTIgMnY1SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSG9tZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxM2gxdjdjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi03aDFhMSAxIDAgMCAwIC43MDctMS43MDdsLTktOWEuOTk5Ljk5OSAwIDAgMC0xLjQxNCAwbC05IDlBMSAxIDAgMCAwIDMgMTN6bTktOC41ODYgNiA2VjE1bC4wMDEgNUg2di05LjU4NWw2LTYuMDAxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE3YzIuMjA2IDAgNC0xLjc5NCA0LTRzLTEuNzk0LTQtNC00LTQgMS43OTQtNCA0IDEuNzk0IDQgNCA0em0wLTZjMS4xMDMgMCAyIC44OTcgMiAycy0uODk3IDItMiAyLTItLjg5Ny0yLTIgLjg5Ny0yIDItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIb21lSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjIyMyAxMS42NDEtLjIyMy4yMi0uMjI0LS4yMmEyLjIyNCAyLjIyNCAwIDAgMC0zLjEyNSAwIDIuMTMgMi4xMyAwIDAgMCAwIDMuMDdMMTIgMThsMy4zNDktMy4yODlhMi4xMyAyLjEzIDAgMCAwIDAtMy4wNyAyLjIyNSAyLjIyNSAwIDAgMC0zLjEyNiAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcwNyAxMS4yOTMtOS05YS45OTkuOTk5IDAgMCAwLTEuNDE0IDBsLTkgOUExIDEgMCAwIDAgMyAxM2gxdjdjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi03aDFhMSAxIDAgMCAwIC43MDctMS43MDd6TTE4LjAwMSAyMEg2di05LjU4NWw2LTYgNiA2VjE1bC4wMDEgNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIb21lU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMXY3YzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMnYtN2gxYTEgMSAwIDAgMCAuNzA3LTEuNzA3bC05LTlhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtOSA5QTEgMSAwIDAgMCAzIDEzem05LTguNTg2IDYgNlYxNWwuMDAxIDVINnYtOS41ODZsNi02elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE4YzMuNzAzIDAgNC45MDEtMy41MzkgNC45NS0zLjY4OWwtMS45LS42MjFjLS4wMDguMDIzLS43ODEgMi4zMS0zLjA1IDIuMzEtMi4yMzggMC0zLjAyLTIuMjIxLTMuMDUxLTIuMzE2bC0xLjg5OS42MjdDNy4wOTkgMTQuNDYxIDguMjk3IDE4IDEyIDE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTNoMXY3YzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMnYtN2gxYTEgMSAwIDAgMCAuNzA3LTEuNzA3bC05LTlhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtOSA5QTEgMSAwIDAgMCAzIDEzem03IDd2LTVoNHY1aC00em0yLTE1LjU4NiA2IDZWMTVsLjAwMSA1SDE2di01YzAtMS4xMDMtLjg5Ny0yLTItMmgtNGMtMS4xMDMgMC0yIC44OTctMiAydjVINnYtOS41ODZsNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhvcml6b250YWxDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUuMDA1IDE1Ljk5NSA0LTQtNC00djNoLTN2Mmgzem0xNC01di0zbC00IDQgNCA0di0zaDN2LTJoLTIuMDcyem0tOCA3aDJ2M2gtMnptMC01aDJ2M2gtMnptMC01aDJ2M2gtMnptMC01aDJ2M2gtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjVcIixcImN5XCI6XCIxMS41XCIsXCJyXCI6XCIyLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yMDUgN0gxMmExIDEgMCAwIDAtMSAxdjdINFY2SDJ2MTRoMnYtM2gxNnYzaDJ2LTguMjA1QTQuOCA0LjggMCAwIDAgMTcuMjA1IDd6TTEzIDE1VjloNC4yMDVBMi43OTggMi43OTggMCAwIDEgMjAgMTEuNzk1VjE1aC03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUhvdXJnbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTY2IDExLjAyMUE3LjAxNiA3LjAxNiAwIDAgMCAxOSA1VjRoMVYySDR2MmgxdjFhNy4wMTYgNy4wMTYgMCAwIDAgMy40MzQgNi4wMjFjLjM1NC4yMDguNTY2LjU0NS41NjYuOXYuMTU4YzAgLjM1NC0uMjEyLjY5LS41NjYuOUE3LjAxNiA3LjAxNiAwIDAgMCA1IDE5djFINHYyaDE2di0yaC0xdi0xYTcuMDE0IDcuMDE0IDAgMCAwLTMuNDMzLTYuMDJjLS4zNTUtLjIxLS41NjctLjU0Ny0uNTY3LS45MDF2LS4xNThjMC0uMzU1LjIxMi0uNjkyLjU2Ni0uOXptLTEuMDE1IDMuNjgxQTUuMDA4IDUuMDA4IDAgMCAxIDE3IDE5djFIN3YtMWE1LjAxIDUuMDEgMCAwIDEgMi40NS00LjI5OWMuOTcxLS41NzMgMS41NS0xLjU1NCAxLjU1LTIuNjIydi0uMTU4YzAtMS4wNjktLjU4LTIuMDUxLTEuNTUxLTIuNjIzQTUuMDA4IDUuMDA4IDAgMCAxIDcgNVY0aDEwdjFjMCAxLjc2LS45MzggMy40MDYtMi40NDkgNC4yOThDMTMuNTggOS44NyAxMyAxMC44NTIgMTMgMTEuOTIxdi4xNThjMCAxLjA2OC41NzkgMi4wNDkgMS41NTEgMi42MjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjcxNSAxMmMxLjE1MSAwIDItLjg0OSAyLTJzLS44NDktMi0yLTItMiAuODQ5LTIgMiAuODQ4IDIgMiAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMDMgMC0yIC44NDEtMiAxLjg3NXYxMi4yNUMyIDE5LjE1OSAyLjg5NyAyMCA0IDIwaDE2YzEuMTAzIDAgMi0uODQxIDItMS44NzVWNS44NzVDMjIgNC44NDEgMjEuMTAzIDQgMjAgNHptMCAxNC0xNi0uMDExVjZsMTYgLjAxMVYxOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA5aDR2MmgtNHptMSA0aDN2MmgtM3ptLTEuNTcgMi41MzZjMC0xLjM3NC0xLjY3Ni0yLjc4Ni0zLjcxNS0yLjc4NlM2IDE0LjE2MiA2IDE1LjUzNlYxNmg3LjQzdi0uNDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUltYWdlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDVoMTN2N2gyVjVjMC0xLjEwMy0uODk3LTItMi0ySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmg4di0ySDRWNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDExLTMgNGgxMWwtNC02LTMgNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNGgtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlJbWFnZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDE5VjVoMTRsLjAwMiAxNEg1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE0LTEtMS0zIDRoMTJsLTUtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI3LjQ5OVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuNDk5IDE0LTEuNS0yLTMgNGgxMmwtNC41LTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTk5IDRoLTE2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0yVjZjMC0xLjEwMy0uODk3LTItMi0yem0tMTYgMTRWNmgxNmwuMDAyIDEySDMuOTk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg4Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yek04IDE2VjRoMTJsLjAwMiAxMkg4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOEgydjEyYzAgMS4xMDMuODk3IDIgMiAyaDEydi0ySDRWOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxMi0xLTEtMiAzaDEwbC00LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSW1wb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxOCA0LTVoLTNWMmgtMnYxMUg4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDloLTR2Mmg0djlINXYtOWg0VjlINWMtMS4xMDMgMC0yIC44OTctMiAydjljMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0ydi05YzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlJbmZpbml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgN2MtMi4wOTQgMC0zLjYxMSAxLjU2Ny01LjAwMSAzLjM0NkMxMC42MDkgOC41NjcgOS4wOTMgNyA3IDdjLTIuNzU3IDAtNSAyLjI0My01IDVhNC45OCA0Ljk4IDAgMCAwIDEuNDU5IDMuNTM0QTQuOTU2IDQuOTU2IDAgMCAwIDYuOTkgMTdoLjAxMmMyLjA4OS0uMDA1IDMuNjA1LTEuNTcyIDQuOTk2LTMuMzUxQzEzLjM4OSAxNS40MzEgMTQuOTA2IDE3IDE3IDE3YzIuNzU3IDAgNS0yLjI0MyA1LTVzLTIuMjQzLTUtNS01ek02Ljk5OCAxNWwtLjAwOCAxdi0xYy0uNzk5IDAtMS41NS0uMzEyLTIuMTE0LS44NzhBMy4wMDQgMy4wMDQgMCAwIDEgNyA5YzEuMzMgMCAyLjU2IDEuNDM4IDMuNzQ2IDIuOTk4QzkuNTU4IDEzLjU1NyA4LjMyOCAxNC45OTcgNi45OTggMTV6TTE3IDE1Yy0xLjMzIDAtMi41NjEtMS40NC0zLjc0OS0zLjAwMkMxNC40MzggMTAuNDM4IDE1LjY2OCA5IDE3IDljMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSW5mb0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExaDJ2NmgtMnptMC00aDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlJbmZvU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRhMSAxIDAgMCAwLTEgMXYxNmExIDEgMCAwIDAgMSAxaDE2YTEgMSAwIDAgMCAxLTFWNGExIDEgMCAwIDAtMS0xem0tMSAxNkg1VjVoMTR2MTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgN2gydjJoLTJ6bTAgNGgydjZoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpSW50ZXJzZWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE2aDN2M2MwIDEuMTAzLjg5NyAyIDIgMmg5YzEuMTAzIDAgMi0uODk3IDItMnYtOWMwLTEuMTAzLS44OTctMi0yLTJoLTNWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjljMCAxLjEwMy44OTcgMiAyIDJ6bTkuMDAxLTJMMTQgMTBoLjAwMXY0ek0xOSAxMGwuMDAxIDlIMTB2LTNoNGMxLjEwMyAwIDItLjg5NyAyLTJ2LTRoM3pNNSA1aDl2M2gtNGMtMS4xMDMgMC0yIC44OTctMiAydjRINVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUl0YWxpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN1Y0SDl2M2gyLjg2OEw5LjAxMiAxN0g1djNoMTB2LTNoLTIuODY4bDIuODU2LTEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUpveXN0aWNrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1XCIsXCJjeVwiOlwiMTNcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3XCIsXCJjeVwiOlwiMTFcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5SDh2Mkg2djJoMnYyaDJ2LTJoMnYtMmgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1SDlhNyA3IDAgMCAwLTcgNyA3IDcgMCAwIDAgNyA3aDZhNyA3IDAgMCAwIDctNyA3IDcgMCAwIDAtNy03em0wIDEySDlBNSA1IDAgMSAxIDkgN2g2YTUgNSAwIDEgMSAwIDEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUpveXN0aWNrQnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA3aC0zVjRjMC0xLjEwMy0uODk3LTItMi0ySDljLTEuMTAzIDAtMiAuODk3LTIgMnYzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnY2YzAgMS4xMDMuODk3IDIgMiAyaDN2M2MwIDEuMTAzLjg5NyAyIDIgMmg2YzEuMTAzIDAgMi0uODk3IDItMnYtM2gzYzEuMTAzIDAgMi0uODk3IDItMlY5YzAtMS4xMDMtLjg5Ny0yLTItMnptMCA4aC01djRoLjAwMXYxSDl2LTVINFY5aDVWNGg2djVoNXY2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTR2LTRsLTMgMnptOCAwIDMtMi0zLTJ6bS02LTZoNGwtMi0zem0yIDExIDItM2gtNHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlKb3lzdGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgOC42NUE1IDUgMCAwIDAgMTcgNEg3YTUgNSAwIDAgMC01IDQuNzRBMiAyIDAgMCAwIDIgOXY3LjVBMy40OCAzLjQ4IDAgMCAwIDUuNSAyMGMxLjQzIDAgMi4zMi0xLjA2IDMuMTktMi4wOS4zMi0uMzcuNjUtLjc2IDEtMS4xYTQuODEgNC44MSAwIDAgMSAxLjU0LS43NSA2LjYxIDYuNjEgMCAwIDEgMS41NCAwIDQuODEgNC44MSAwIDAgMSAxLjU0Ljc1Yy4zNS4zNC42OC43MyAxIDEuMS44NyAxIDEuNzYgMi4wOSAzLjE5IDIuMDlhMy40OCAzLjQ4IDAgMCAwIDMuNS0zLjVWOWEyLjA5IDIuMDkgMCAwIDAgMC0uMjZ6bS0yIDcuODVhMS41IDEuNSAwIDAgMS0xLjUgMS41Yy0uNSAwLTEtLjY0LTEuNjYtMS4zOC0uMzQtLjM5LS43Mi0uODUtMS4xNS0xLjI2YTYuNjggNi42OCAwIDAgMC0yLjQ2LTEuMjUgNi45MyA2LjkzIDAgMCAwLTIuNDYgMCA2LjY4IDYuNjggMCAwIDAtMi40NiAxLjI1Yy0uNDMuNDEtLjgxLjg3LTEuMTUgMS4yNkM2LjU0IDE3LjM2IDYgMTggNS41IDE4QTEuNSAxLjUgMCAwIDEgNCAxNi41VjlhLjc3Ljc3IDAgMCAwIDAtLjE1QTMgMyAwIDAgMSA3IDZoMTBhMyAzIDAgMCAxIDMgMi43MnYuMTJBLjg2Ljg2IDAgMCAwIDIwIDl6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjEyXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNlwiLFwiY3lcIjpcIjhcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0XCIsXCJjeVwiOlwiMTBcIixcInJcIjpcIjFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUtleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxN2E1LjAwNyA1LjAwNyAwIDAgMCA0Ljg5OC00SDE0djJoMnYtMmgydjNoMnYtM2gxdi0yaC05LjEwMkE1LjAwNyA1LjAwNyAwIDAgMCA3IDdjLTIuNzU3IDAtNSAyLjI0My01IDVzMi4yNDMgNSA1IDV6bTAtOGMxLjY1NCAwIDMgMS4zNDYgMyAzcy0xLjM0NiAzLTMgMy0zLTEuMzQ2LTMtMyAxLjM0Ni0zIDMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMYWJlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuODEzIDQuNDE5QS45OTcuOTk3IDAgMCAwIDE2IDRIM2ExIDEgMCAwIDAtLjgxMyAxLjU4MUw2Ljc3MSAxMmwtNC41ODUgNi40MTlBMSAxIDAgMCAwIDMgMjBoMTNhLjk5Ny45OTcgMCAwIDAgLjgxMy0uNDE5bDUtN2EuOTk3Ljk5NyAwIDAgMCAwLTEuMTYybC01LTd6TTE1LjQ4NSAxOEg0Ljk0M2wzLjg3LTUuNDE5YS45OTcuOTk3IDAgMCAwIDAtMS4xNjJMNC45NDMgNmgxMC41NDJsNC4yODYgNi00LjI4NiA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMGgxOGExIDEgMCAwIDAgLjg2NC0xLjUwNGwtNy0xMmMtLjM1OS0uNjE1LTEuMzY5LS42MTMtMS43MjkgMEw5Ljg2NiAxMi4xbC0xLjAyLTEuNjMyQS45OTguOTk4IDAgMCAwIDggMTBoLS4wMDFhMSAxIDAgMCAwLS44NDcuNDdsLTUgOEExIDEgMCAwIDAgMyAyMHpNMTQgOC45ODUgMTkuMjU5IDE4aC01LjcwNGwtMi40ODYtMy45ODdMMTQgOC45ODV6bS01Ljk5OSAzLjlMMTEuMTk3IDE4SDQuODA1bDMuMTk2LTUuMTE1ek02IDhjMS42NTQgMCAzLTEuMzQ2IDMtM1M3LjY1NCAyIDYgMiAzIDMuMzQ2IDMgNXMxLjM0NiAzIDMgM3ptMC00YTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE3LjcyMmMuNTk1LS4zNDcgMS0uOTg1IDEtMS43MjJWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjExYzAgLjczNi40MDUgMS4zNzUgMSAxLjcyMlYxOEgydjJoMjB2LTJoLTJ2LS4yNzh6TTUgMTZWNWgxNGwuMDAyIDExSDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGFzdFBhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNzA3IDE3LjcwNyAxMy40MTQgMTIgNy43MDcgNi4yOTMgNi4yOTMgNy43MDcgMTAuNTg2IDEybC00LjI5MyA0LjI5M3pNMTUgNmgydjEyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMThjNCAwIDUtNCA1LTRIN3MxIDQgNSA0em01LjU1NS05LjE2OC0xLjEwOS0xLjY2NC0zIDJhMS4wMDEgMS4wMDEgMCAwIDAgLjEwOCAxLjcyN2w0IDIgLjg5NS0xLjc4OS0yLjQ1OS0xLjIyOSAxLjU2NS0xLjA0NXptLTYuNTU3IDEuMjNhMSAxIDAgMCAwLS40NDMtLjg5NGwtMy0yLTEuMTEgMS42NjQgMS41NjYgMS4wNDQtMi40NTkgMS4yMjkuODk1IDEuNzg5IDQtMmEuOTk4Ljk5OCAwIDAgMCAuNTUxLS44MzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGF5ZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi41MTMgMTIuODMzIDkuMDIyIDUuMDRhLjk5NS45OTUgMCAwIDAgLjk3My4wMDFsOC45NzgtNWExIDEgMCAwIDAtLjAwMi0xLjc0OWwtOS4wMjItNWExIDEgMCAwIDAtLjk2OC0uMDAxbC04Ljk3OCA0Ljk2YTEgMSAwIDAgMC0uMDAzIDEuNzQ5em05LjQ2NC00LjY5IDYuOTY0IDMuODU5LTYuOTE3IDMuODUzLTYuOTY0LTMuODkgNi45MTctMy44MjJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy40ODUgMTUuMTI2LS45NzEgMS43NDggOSA1YTEgMSAwIDAgMCAuOTcxIDBsOS01LS45NzEtMS43NDhMMTIgMTkuODU2bC04LjUxNS00Ljczek0xNiA0aDZ2MmgtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMYXllclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQ4NCAxMS4xMjUtOS4wMjItNWExIDEgMCAwIDAtLjk2OC0uMDAxbC04Ljk3OCA0Ljk2YTEgMSAwIDAgMC0uMDAzIDEuNzQ5bDkuMDIyIDUuMDRhLjk5NS45OTUgMCAwIDAgLjk3My4wMDFsOC45NzgtNWExIDEgMCAwIDAtLjAwMi0xLjc0OXptLTkuNDYxIDQuNzMtNi45NjQtMy44OSA2LjkxNy0zLjgyMiA2Ljk2NCAzLjg1OS02LjkxNyAzLjg1M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyMmEuOTk0Ljk5NCAwIDAgMCAuNDg1LS4xMjZsOS01LS45NzEtMS43NDhMMTIgMTkuODU2bC04LjUxNS00LjczLS45NzEgMS43NDggOSA1QTEgMSAwIDAgMCAxMiAyMnptOC0yMGgtMnYyaC0ydjJoMnYyaDJWNmgyVjRoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGF5ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDcuOTk5YTEgMSAwIDAgMC0uNTE2LS44NzRsLTkuMDIyLTVhMS4wMDMgMS4wMDMgMCAwIDAtLjk2OCAwbC04Ljk3OCA0Ljk2YTEgMSAwIDAgMC0uMDAzIDEuNzQ4bDkuMDIyIDUuMDRhLjk5NS45OTUgMCAwIDAgLjk3My4wMDFsOC45NzgtNUExIDEgMCAwIDAgMjIgNy45OTl6bS05Ljk3NyAzLjg1NUw1LjA2IDcuOTY1bDYuOTE3LTMuODIyIDYuOTY0IDMuODU5LTYuOTE4IDMuODUyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjUxNSAxMS4xMjYgMTIgMTUuODU2bC04LjUxNS00LjczLS45NzEgMS43NDggOSA1YTEgMSAwIDAgMCAuOTcxIDBsOS01LS45Ny0xLjc0OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC41MTUgMTUuMTI2IDEyIDE5Ljg1NmwtOC41MTUtNC43My0uOTcxIDEuNzQ4IDkgNWExIDEgMCAwIDAgLjk3MSAwbDktNS0uOTctMS43NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGF5b3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAzSDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMiAuMDAxIDRINVY1aDE0ek01IDExaDh2OEg1di04em0xMCA4di04aDQuMDAxbC4wMDEgOEgxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMZWZ0QXJyb3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjcwNyAxNy4yOTMgOC40MTQgMTNIMTh2LTJIOC40MTRsNC4yOTMtNC4yOTMtMS40MTQtMS40MTRMNC41ODYgMTJsNi43MDcgNi43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGVmdEFycm93Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45OTkgMS45OTNDNi40ODYgMS45OTQgMiA2LjQ4IDEuOTk5IDExLjk5NGMwIDUuNTE0IDQuNDg2IDEwIDEwLjAwMSAxMCA1LjUxNC0uMDAxIDEwLTQuNDg3IDEwLTEwIDAtNS41MTQtNC40ODYtMTAtMTAuMDAxLTEwLjAwMXpNMTIgMTkuOTk0Yy00LjQxMiAwLTguMDAxLTMuNTg5LTguMDAxLTggLjAwMS00LjQxMSAzLjU5LTggOC04LjAwMUMxNi40MTEgMy45OTQgMjAgNy41ODMgMjAgMTEuOTk0YzAgNC40MS0zLjU4OSA3Ljk5OS04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMDEyIDcuOTg5LTQuMDA1IDQuMDA1IDQuMDA1IDQuMDA0di0zLjAwNGgzLjk5NHYtMmgtMy45OTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGVmdEFycm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC40NjQgMi4xMTRhLjk5OC45OTggMCAwIDAtMS4wMzMuMDYzbC0xMyA5YTEuMDAzIDEuMDAzIDAgMCAwIDAgMS42NDVsMTMgOUExIDEgMCAwIDAgMTkgMjFWM2ExIDEgMCAwIDAtLjUzNi0uODg2ek0xNyAxOS4wOTEgNi43NTcgMTIgMTcgNC45MDl2MTQuMTgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxlZnREb3duQXJyb3dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAwNiAyLjAwN0E5LjkzIDkuOTMgMCAwIDAgNC45MzUgNC45M2MtMy44OTggMy44OTgtMy44OTggMTAuMjQyIDAgMTQuMTQyIDEuODg1IDEuODg1IDQuMzk2IDIuOTIzIDcuMDcxIDIuOTIzczUuMTg3LTEuMDM4IDcuMDcxLTIuOTIzYzMuODk4LTMuODk5IDMuODk4LTEwLjI0MyAwLTE0LjE0MmE5LjkzMSA5LjkzMSAwIDAgMC03LjA3MS0yLjkyM3ptNS42NTcgMTUuNjVjLTEuNTA3IDEuNTA3LTMuNTE2IDIuMzM3LTUuNjU3IDIuMzM3cy00LjE1LS44My01LjY1Ny0yLjMzN2MtMy4xMTgtMy4xMTktMy4xMTgtOC4xOTQgMC0xMS4zMTMgMS41MDctMS41MDcgMy41MTctMi4zMzcgNS42NTctMi4zMzdzNC4xNS44MyA1LjY1NyAyLjMzN2MzLjExOCAzLjExOSAzLjExOCA4LjE5NCAwIDExLjMxM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4zNDYgOC4yNDctMy4yMTUgMy4yMTUtMi4xMjUtMi4xMjVWMTVoNS42NjNsLTIuMTI0LTIuMTI0IDMuMjE1LTMuMjE1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxlZnRJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2gxMHYySDR6bTAtNGgxNnYySDR6bTAgOGgxMHYySDR6bTAgNGgxMHYySDR6bTAgNGgxNnYySDR6bTE2LTNWOGwtNCA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxlZnRUb3BBcnJvd0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTkzIDIuMDA3YTkuOTI4IDkuOTI4IDAgMCAwLTcuMDcxIDIuOTIyYy0zLjg5OSAzLjg5OS0zLjg5OSAxMC4yNDMgMCAxNC4xNDNhOS45MzEgOS45MzEgMCAwIDAgNy4wNzEgMi45MjMgOS45MjggOS45MjggMCAwIDAgNy4wNzEtMi45MjNjMy44OTktMy44OTkgMy44OTktMTAuMjQzIDAtMTQuMTQzYTkuOTI3IDkuOTI3IDAgMCAwLTcuMDcxLTIuOTIyem01LjY1NyAxNS42NWE3Ljk0NSA3Ljk0NSAwIDAgMS01LjY1NyAyLjMzN2MtMi4xNDEgMC00LjE1LS44My01LjY1Ny0yLjMzNy0zLjExOS0zLjExOS0zLjExOS04LjE5NSAwLTExLjMxNGE3Ljk0NiA3Ljk0NiAwIDAgMSA1LjY1Ny0yLjMzNmMyLjE0MiAwIDQuMTUuODI5IDUuNjU3IDIuMzM2IDMuMTIgMy4xMTkgMy4xMiA4LjE5NSAwIDExLjMxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42NTcgOUg4Ljk5M3Y1LjY2M2wyLjEyNS0yLjEyNCAzLjIxNSAzLjIxNCAxLjQxNC0xLjQxNC0zLjIxNS0zLjIxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDNoMnYxOEg3ek00IDNoMnYxOEg0em02IDBoMnYxOGgtMnptOS4wNjIgMTcuNzkyLTYuMjIzLTE2Ljg5IDEuODc3LS42OTIgNi4yMjMgMTYuODl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGlrZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOGgtNS42MTJsMS4xMjMtMy4zNjdjLjIwMi0uNjA4LjEtMS4yODItLjI3NS0xLjgwMlMxNC4yNTMgMiAxMy42MTIgMkgxMmMtLjI5NyAwLS41NzguMTMyLS43NjkuMzZMNi41MzEgOEg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OWMwIDEuMTAzLjg5NyAyIDIgMmgxMy4zMDdhMi4wMSAyLjAxIDAgMCAwIDEuODczLTEuMjk4bDIuNzU3LTcuMzUxQTEgMSAwIDAgMCAyMiAxMnYtMmMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTBoMnY5SDR2LTl6bTE2IDEuODE5TDE3LjMwNyAxOUg4VjkuMzYyTDEyLjQ2OCA0aDEuMTQ2bC0xLjU2MiA0LjY4M0EuOTk4Ljk5OCAwIDAgMCAxMyAxMGg3djEuODE5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxpbmVDaGFydERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM0gzdjE4aDE4di0ySDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTIuNTg2IDguNzA3IDguMjkzIDcuMjkzIDkuNzA3IDEzIDE1LjQxNGwzLTMgNC4yOTMgNC4yOTMgMS40MTQtMS40MTRMMTYgOS41ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGluZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDN2MTdhMSAxIDAgMCAwIDEgMWgxN3YtMkg1VjNIM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4yOTMgMTQuNzA3YS45OTkuOTk5IDAgMCAwIDEuNDE0IDBsNS01LTEuNDE0LTEuNDE0TDE2IDEyLjU4NmwtMi4yOTMtMi4yOTNhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtNSA1IDEuNDE0IDEuNDE0TDEzIDEyLjQxNGwyLjI5MyAyLjI5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaW5rQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjIyMiAxOS43NzhhNC45ODMgNC45ODMgMCAwIDAgMy41MzUgMS40NjIgNC45ODYgNC45ODYgMCAwIDAgMy41MzYtMS40NjJsMi44MjgtMi44MjktMS40MTQtMS40MTQtMi44MjggMi44MjlhMy4wMDcgMy4wMDcgMCAwIDEtNC4yNDMgMCAzLjAwNSAzLjAwNSAwIDAgMSAwLTQuMjQzbDIuODI5LTIuODI4LTEuNDE0LTEuNDE0LTIuODI5IDIuODI4YTUuMDA2IDUuMDA2IDAgMCAwIDAgNy4wNzF6bTE1LjU1Ni04LjQ4NWE1LjAwOCA1LjAwOCAwIDAgMCAwLTcuMDcxIDUuMDA2IDUuMDA2IDAgMCAwLTcuMDcxIDBMOS44NzkgNy4wNTFsMS40MTQgMS40MTQgMi44MjgtMi44MjlhMy4wMDcgMy4wMDcgMCAwIDEgNC4yNDMgMCAzLjAwNSAzLjAwNSAwIDAgMSAwIDQuMjQzbC0yLjgyOSAyLjgyOCAxLjQxNCAxLjQxNCAyLjgyOS0yLjgyOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04LjQ2NCAxNi45NS0xLjQxNS0xLjQxNCA4LjQ4Ny04LjQ4NiAxLjQxNCAxLjQxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaW5rRXh0ZXJuYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzIDMgMy4yOTMgMy4yOTMtNyA3IDEuNDE0IDEuNDE0IDctN0wyMSAxMVYzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE5SDVWNWg3bC0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMnYtNWwtMi0ydjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40NjUgMTEuMjkzYzEuMTMzLTEuMTMzIDMuMTA5LTEuMTMzIDQuMjQyIDBsLjcwNy43MDcgMS40MTQtMS40MTQtLjcwNy0uNzA3Yy0uOTQzLS45NDQtMi4xOTktMS40NjUtMy41MzUtMS40NjVzLTIuNTkyLjUyMS0zLjUzNSAxLjQ2NUw0LjkyOSAxMmE1LjAwOCA1LjAwOCAwIDAgMCAwIDcuMDcxIDQuOTgzIDQuOTgzIDAgMCAwIDMuNTM1IDEuNDYyQTQuOTgyIDQuOTgyIDAgMCAwIDEyIDE5LjA3MWwuNzA3LS43MDctMS40MTQtMS40MTQtLjcwNy43MDdhMy4wMDcgMy4wMDcgMCAwIDEtNC4yNDMgMCAzLjAwNSAzLjAwNSAwIDAgMSAwLTQuMjQzbDIuMTIyLTIuMTIxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyIDQuOTI5LS43MDcuNzA3IDEuNDE0IDEuNDE0LjcwNy0uNzA3YTMuMDA3IDMuMDA3IDAgMCAxIDQuMjQzIDAgMy4wMDUgMy4wMDUgMCAwIDEgMCA0LjI0M2wtMi4xMjIgMi4xMjFjLTEuMTMzIDEuMTMzLTMuMTA5IDEuMTMzLTQuMjQyIDBMMTAuNTg2IDEybC0xLjQxNCAxLjQxNC43MDcuNzA3Yy45NDMuOTQ0IDIuMTk5IDEuNDY1IDMuNTM1IDEuNDY1czIuNTkyLS41MjEgMy41MzUtMS40NjVMMTkuMDcxIDEyYTUuMDA4IDUuMDA4IDAgMCAwIDAtNy4wNzEgNS4wMDYgNS4wMDYgMCAwIDAtNy4wNzEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIxaDJjNC40MTEgMCA4LTQuMDM4IDgtOWgtMmMwIDMuODYtMi42OTEgNy02IDd2LTcuMzU4bDYtMS4zODVWOC4yMDRsLTYgMS4zODVWNy42NDJsNi0xLjM4NVY0LjIwNGwtNiAxLjM4NVYzSDl2My4wNWwtMyAuNjkzdjIuMDUzbDMtLjY5MnYxLjk0N2wtMyAuNjkydjIuMDUzbDMtLjY5MlYyMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaXN0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgN2gxMXYySDR6bTAgNGgxMXYySDR6bTAgNGg3djJINHptMTUuMjk5LTIuNzA4LTQuMyA0LjI5MS0xLjI5Mi0xLjI5MS0xLjQxNCAxLjQxNSAyLjcwNiAyLjcwNCA1LjcxMi01LjcwM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaXN0TWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjA2MyAxNUgxM3YyaDl2LTJ6TTQgN2gxMXYySDR6bTAgNGgxMXYySDR6bTAgNGg3djJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMaXN0T2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMjgyIDEyLjA2NGMtLjQyOC4zMjgtLjcyLjYwOS0uODc1Ljg1MS0uMTU1LjI0LS4yNDkuNDk4LS4yNzkuNzY4aDIuNjc5di0uNzQ4SDUuNDEzYy4wODEtLjA4MS4xNTItLjE1MS4yMTItLjIwMS4wNjItLjA1LjE4Mi0uMTQyLjM2MS0uMjcuMzAzLS4yMTguNTExLS40Mi42MjYtLjYwNC4xMTYtLjE4Ni4xNzMtLjM3NS4xNzMtLjU3OGEuODk4Ljg5OCAwIDAgMC0uMTUxLS41MTIuODkyLjg5MiAwIDAgMC0uNDEyLS4zNDFjLS4xNzQtLjA3Ni0uNDE5LS4xMTEtLjczMy0uMTExLS4zIDAtLjUzNy4wMzgtLjcwNi4xMTRhLjg4OS44ODkgMCAwIDAtLjM5Ni4zMzhjLS4wOTQuMTQzLS4xNTkuMzQ2LS4xOTQuNjA0bC44OTQuMDc2Yy4wMjUtLjE4OC4wNzQtLjMxNy4xNDctLjM5NGEuMzc1LjM3NSAwIDAgMSAuMjc5LS4xMDhjLjExIDAgLjIuMDM1LjI3Mi4xMDhhLjM0NC4zNDQgMCAwIDEgLjEwOC4yNTguNTUuNTUgMCAwIDEtLjEwOC4yOTdjLS4wNzQuMTAyLS4yNDEuMjU0LS41MDMuNDUzem0uMDU1IDYuMzg2YS4zOTguMzk4IDAgMCAxLS4yODItLjEwNWMtLjA3NC0uMDctLjEyOC0uMTk1LS4xNjItLjM3OEw0IDE4LjA4NWMuMDU5LjIwNC4xNDIuMzcyLjI1MS41MDYuMTA5LjEzMy4yNDguMjM1LjQxNy4zMDYuMTY4LjA2OS4zOTkuMTAzLjY5Mi4xMDMuMyAwIC41NDEtLjA0Ny43MjUtLjE0YTEgMSAwIDAgMCAuNDI0LS40MDNjLjA5OC0uMTc1LjE0Ni0uMzU0LjE0Ni0uNTQ0YS44MjMuODIzIDAgMCAwLS4wODgtLjM5My43MDguNzA4IDAgMCAwLS4yNDktLjI2MSAxLjAxNSAxLjAxNSAwIDAgMC0uMjg2LS4xMS45NDMuOTQzIDAgMCAwIC4zNDUtLjI5OS42NzMuNjczIDAgMCAwIC4xMTMtLjM4My43NDcuNzQ3IDAgMCAwLS4yODEtLjU5NmMtLjE4Ny0uMTU5LS40OS0uMjM4LS45MDktLjIzOC0uMzY1IDAtLjY0OC4wNzItLjg0Ny4yMTktLjIuMTQzLS4zMzQuMzUzLS40MDQuNjI2bC44NDQuMTUxYy4wMjMtLjE2Mi4wNjctLjI3NC4xMzMtLjMzOHMuMTUxLS4wOTguMjU3LS4wOThhLjMzLjMzIDAgMCAxIC4yNDEuMDg5Yy4wNTkuMDYuMDg3LjEzOS4wODcuMjM4IDAgLjEwNC0uMDM4LjE5My0uMTE3LjI3cy0uMTc3LjExMi0uMjkzLjExMmEuOTA3LjkwNyAwIDAgMS0uMTE2LS4wMTFsLS4wNDUuNjQ5YTEuMTMgMS4xMyAwIDAgMSAuMjg5LS4wNTZjLjEzMiAwIC4yMzcuMDQxLjMxMy4xMjYuMDc3LjA4Mi4xMTUuMTk5LjExNS4zNTIgMCAuMTQ2LS4wNC4yNjYtLjExOS4zNTRhLjM5NC4zOTQgMCAwIDEtLjMwMS4xMzR6bS45NDgtMTAuMDgzVjVoLS43MzlhMS40NyAxLjQ3IDAgMCAxLS4zOTQuNTIzYy0uMTY4LjE0Mi0uNDA0LjI2Mi0uNzA4LjM2NXYuNzU0YTIuNTk1IDIuNTk1IDAgMCAwIC45MzctLjQ4djIuMjA2aC45MDR6TTkgNmgxMXYySDl6bTAgNWgxMXYySDl6bTAgNWgxMXYySDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGlzdFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDE1di0zaC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0uOTM3ek00IDdoMTF2Mkg0em0wIDRoMTF2Mkg0em0wIDRoOHYySDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZoMnYySDR6bTAgNWgydjJINHptMCA1aDJ2Mkg0em0xNi04VjZIOC4wMjN2MkgxOC44ek04IDExaDEydjJIOHptMCA1aDEydjJIOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2FkZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzUuNDIxIDAgMTAtNC41NzkgMTAtMTBoLTJjMCA0LjMzNy0zLjY2MyA4LTggOHMtOC0zLjY2My04LThjMC00LjMzNiAzLjY2My04IDgtOFYyQzYuNTc5IDIgMiA2LjU4IDIgMTJjMCA1LjQyMSA0LjU3OSAxMCAxMCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2FkZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIyMFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2LjM0M1wiLFwiY3lcIjpcIjE3LjY1N1wiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNjU3XCIsXCJjeVwiOlwiNi4zNDNcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjRcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMi4wMDFcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjIwXCIsXCJjeVwiOlwiMTJcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuMzQzXCIsXCJjeVwiOlwiNi4zNDRcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE3LjY1N1wiLFwiY3lcIjpcIjE3LjY1OFwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxvYWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMWg1djJIMnptMTUgMGg1djJoLTV6bS02IDZoMnY1aC0yem0wLTE1aDJ2NWgtMnpNNC4yMjIgNS42MzZsMS40MTQtMS40MTQgMy41MzYgMy41MzYtMS40MTQgMS40MTR6bTE1LjU1NiAxMi43MjgtMS40MTQgMS40MTQtMy41MzYtMy41MzYgMS40MTQtMS40MTR6bS0xMi4wMi0zLjUzNiAxLjQxNCAxLjQxNC0zLjUzNiAzLjUzNi0xLjQxNC0xLjQxNHptNy4wNy03LjA3MSAzLjUzNi0zLjUzNSAxLjQxNCAxLjQxNS0zLjUzNiAzLjUzNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2NhdGlvblBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQyIDIxLjgxNWExLjAwNCAxLjAwNCAwIDAgMCAxLjE2IDBDMTIuODg0IDIxLjU5OCAyMC4wMjkgMTYuNDQgMjAgMTBjMC00LjQxMS0zLjU4OS04LTgtOFM0IDUuNTg5IDQgOS45OTZjLS4wMjkgNi40NDQgNy4xMTYgMTEuNjAyIDcuNDIgMTEuODE5ek0xMiA0YzMuMzA5IDAgNiAyLjY5MSA2IDYuMDA0LjAyMSA0LjQzOC00LjM4OCA4LjQyMy02IDkuNzMxLTEuNjExLTEuMzA4LTYuMDIxLTUuMjkzLTYtOS43MzUgMC0zLjMwOSAyLjY5MS02IDYtNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNGgydi0zaDNWOWgtM1Y2aC0ydjNIOHYyaDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTG9ja0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM5LjI0MyAyIDcgNC4yNDMgNyA3djNINmMtMS4xMDMgMC0yIC44OTctMiAydjhjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi04YzAtMS4xMDMtLjg5Ny0yLTItMmgtMVY3YzAtMi43NTctMi4yNDMtNS01LTV6bTYgMTAgLjAwMiA4SDZ2LThoMTJ6bS05LTJWN2MwLTEuNjU0IDEuMzQ2LTMgMy0zczMgMS4zNDYgMyAzdjNIOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2NrT3BlbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgOFY3YzAtMi43NTctMi4yNDMtNS01LTVTNyA0LjI0MyA3IDd2M0g2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJ2LThjMC0xLjEwMy0uODk3LTItMi0ySDlWN2MwLTEuNjU0IDEuMzQ2LTMgMy0zczMgMS4zNDYgMyAzdjFoMnptMSA0IC4wMDIgOEg2di04aDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0YzEuNjU0IDAgMyAxLjM0NiAzIDNoMmMwLTIuNzU3LTIuMjQzLTUtNS01UzcgNC4yNDMgNyA3djJINmMtMS4xMDMgMC0yIC44OTctMiAydjljMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi05YzAtMS4xMDMtLjg5Ny0yLTItMkg5VjdjMC0xLjY1NCAxLjM0Ni0zIDMtM3ptNi4wMDIgMTZIMTN2LTIuMjc4Yy41OTUtLjM0NyAxLS45ODUgMS0xLjcyMiAwLTEuMTAzLS44OTctMi0yLTJzLTIgLjg5Ny0yIDJjMCAuNzM2LjQwNSAxLjM3NSAxIDEuNzIyVjIwSDZ2LTloMTJsLjAwMiA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDOS4yNDMgMiA3IDQuMjQzIDcgN3YySDZjLTEuMTAzIDAtMiAuODk3LTIgMnY5YzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMnYtOWMwLTEuMTAzLS44OTctMi0yLTJoLTFWN2MwLTIuNzU3LTIuMjQzLTUtNS01ek05IDdjMC0xLjY1NCAxLjM0Ni0zIDMtM3MzIDEuMzQ2IDMgM3YySDlWN3ptOS4wMDIgMTNIMTN2LTIuMjc4Yy41OTUtLjM0NyAxLS45ODUgMS0xLjcyMiAwLTEuMTAzLS44OTctMi0yLTJzLTIgLjg5Ny0yIDJjMCAuNzM2LjQwNSAxLjM3NSAxIDEuNzIyVjIwSDZ2LTloMTJsLjAwMiA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaUxvZ0luQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC45OTggMTYgNS00LTUtNHYzaC05djJoOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45OTkgMi45OTlhOC45MzggOC45MzggMCAwIDAtNi4zNjQgMi42MzdMOC4wNDkgNy4wNWMxLjMyMi0xLjMyMiAzLjA4LTIuMDUxIDQuOTUtMi4wNTFzMy42MjguNzI5IDQuOTUgMi4wNTFTMjAgMTAuMTMgMjAgMTJzLS43MjkgMy42MjgtMi4wNTEgNC45NS0zLjA4IDIuMDUxLTQuOTUgMi4wNTEtMy42MjgtLjcyOS00Ljk1LTIuMDUxbC0xLjQxNCAxLjQxNGMxLjY5OSAxLjcgMy45NTkgMi42MzcgNi4zNjQgMi42MzdzNC42NjUtLjkzNyA2LjM2NC0yLjYzN0MyMS4wNjMgMTYuNjY1IDIyIDE0LjQwNSAyMiAxMnMtLjkzNy00LjY2NS0yLjYzNy02LjM2NGE4LjkzOCA4LjkzOCAwIDAgMC02LjM2NC0yLjYzN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2dJbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgMTYgNS00LTUtNHYzSDR2Mmg5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNoLTljLTEuMTAzIDAtMiAuODk3LTIgMnY0aDJWNWg5djE0aC05di00SDl2NGMwIDEuMTAzLjg5NyAyIDIgMmg5YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2dPdXRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIgMTIgNSA0di0zaDl2LTJIN1Y4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjAwMSAyLjk5OWE4LjkzOCA4LjkzOCAwIDAgMC02LjM2NCAyLjYzN0w4LjA1MSA3LjA1YzEuMzIyLTEuMzIyIDMuMDgtMi4wNTEgNC45NS0yLjA1MXMzLjYyOC43MjkgNC45NSAyLjA1MSAyLjA1MSAzLjA4IDIuMDUxIDQuOTUtLjcyOSAzLjYyOC0yLjA1MSA0Ljk1LTMuMDggMi4wNTEtNC45NSAyLjA1MS0zLjYyOC0uNzI5LTQuOTUtMi4wNTFsLTEuNDE0IDEuNDE0YzEuNjk5IDEuNyAzLjk1OSAyLjYzNyA2LjM2NCAyLjYzN3M0LjY2NS0uOTM3IDYuMzY0LTIuNjM3YzEuNy0xLjY5OSAyLjYzNy0zLjk1OSAyLjYzNy02LjM2NHMtLjkzNy00LjY2NS0yLjYzNy02LjM2NGE4LjkzOCA4LjkzOCAwIDAgMC02LjM2NC0yLjYzN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlMb2dPdXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzdi0ySDdWOGwtNSA0IDUgNHYtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzaC05Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NGgyVjVoOXYxNGgtOXYtNEg5djRjMCAxLjEwMy44OTcgMiAyIDJoOWMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA0Ljk5OGMtMS44MzYgMC0zLjM1Ni4zODktNC42MTcuOTcxTDMuNzA3IDIuMjkzIDIuMjkzIDMuNzA3bDMuMzE1IDMuMzE2Yy0yLjYxMyAxLjk1Mi0zLjU0MyA0LjYxOC0zLjU1NyA0LjY2bC0uMTA1LjMxNi4xMDUuMzE2QzIuMDczIDEyLjM4MiA0LjM2NyAxOSAxMiAxOWMxLjgzNSAwIDMuMzU0LS4zODkgNC42MTUtLjk3MWwzLjY3OCAzLjY3OCAxLjQxNC0xLjQxNC0zLjMxNy0zLjMxN2MyLjYxNC0xLjk1MiAzLjU0NS00LjYxOCAzLjU1OS00LjY2bC4xMDUtLjMxNi0uMTA1LS4zMTZjLS4wMjItLjA2OC0yLjMxNi02LjY4Ni05Ljk0OS02LjY4NnpNNC4wNzQgMTJjLjEwMy0uMjM2LjI3NC0uNTg2LjUyMS0uOTg5bDUuODY3IDUuODY3QzYuMjQ5IDE2LjIzIDQuNTIzIDEzLjAzNSA0LjA3NCAxMnptOS4yNDcgNC45MDctNy40OC03LjQ4MWE4LjEzOCA4LjEzOCAwIDAgMSAxLjE4OC0uOTgybDguMDU1IDguMDU0YTguODM1IDguODM1IDAgMCAxLTEuNzYzLjQwOXptMy42NDgtMS4zNTItMS41NDEtMS41NDFjLjM1NC0uNTk2LjU3Mi0xLjI4LjU3Mi0yLjAxNSAwLS40NzQtLjA5OS0uOTI0LS4yNTUtMS4zNDlBLjk4My45ODMgMCAwIDEgMTUgMTFhMSAxIDAgMCAxLTEtMWMwLS40MzkuMjg4LS44MDIuNjgyLS45MzZBMy45NyAzLjk3IDAgMCAwIDEyIDcuOTk5Yy0uNzM1IDAtMS40MTkuMjE4LTIuMDE1LjU3MmwtMS4wNy0xLjA3QTkuMjkyIDkuMjkyIDAgMCAxIDEyIDYuOTk4YzUuMzUxIDAgNy40MjUgMy44NDcgNy45MjYgNWE4LjU3MyA4LjU3MyAwIDAgMS0yLjk1NyAzLjU1N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNYWduZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNoLTNjLTEuMTAzIDAtMiAuODk3LTIgMnY4YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDQuOTYzIDQuMDM3IDkgOSA5czktNC4wMzcgOS05VjVjMC0xLjEwMy0uODk3LTItMi0yem0tMyAyaDN2M2gtM1Y1ek01IDVoM3YzSDVWNXptNyAxNWMtMy44NTkgMC03LTMuMTQxLTctN3YtM2gzdjNjMCAyLjIwNiAxLjc5NCA0IDQgNHM0LTEuNzk0IDQtNHYtM2gzdjNjMCAzLjg1OS0zLjE0MSA3LTcgN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNYWlsU2VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgNEg2Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NWgyVjhsNi40IDQuOGExLjAwMSAxLjAwMSAwIDAgMCAxLjIgMEwyMCA4djloLTh2Mmg4YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnptLTcgNi43NUw2LjY2NiA2aDEyLjY2OEwxMyAxMC43NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEyaDd2Mkgyem0yIDNoNnYySDR6bTMgM2g0djJIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNYWxlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTFWNGgtN2wyLjc5MyAyLjc5My00LjMyMiA0LjMyMkE1Ljk2MSA1Ljk2MSAwIDAgMCA4IDEwYy0zLjMwOSAwLTYgMi42OTEtNiA2czIuNjkxIDYgNiA2IDYtMi42OTEgNi02YzAtMS4yOTQtLjQxNi0yLjQ5LTEuMTE1LTMuNDcxbDQuMzIyLTQuMzIyTDIwIDExek04IDIwYy0yLjIwNiAwLTQtMS43OTQtNC00czEuNzk0LTQgNC00IDQgMS43OTQgNCA0LTEuNzk0IDQtNCA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgN0g5YTEgMSAwIDAgMC0xIDF2N2gydjdoNHYtN2gyVjhhMSAxIDAgMCAwLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNYXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQ0NyA2LjEwNS02LTNhMSAxIDAgMCAwLS44OTUgMEw5IDUuODgyIDMuNDQ3IDMuMTA1QTEgMSAwIDAgMCAyIDR2MTNjMCAuMzc5LjIxNC43MjUuNTUzLjg5NWw2IDNhMSAxIDAgMCAwIC44OTUgMEwxNSAxOC4xMThsNS41NTMgMi43NzZhLjk5Mi45OTIgMCAwIDAgLjk3Mi0uMDQzYy4yOTUtLjE4My40NzUtLjUwNC40NzUtLjg1MVY3YzAtLjM3OS0uMjE0LS43MjUtLjU1My0uODk1ek0xMCA3LjYxOGw0LTJ2MTAuNzY0bC00IDJWNy42MTh6bS02LTIgNCAydjEwLjc2NGwtNC0yVjUuNjE4em0xNiAxMi43NjQtNC0yVjUuNjE4bDQgMnYxMC43NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWFwUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAxNyAxLTJWOS44NThjMS43MjEtLjQ0NyAzLTIgMy0zLjg1OCAwLTIuMjA2LTEuNzk0LTQtNC00UzggMy43OTQgOCA2YzAgMS44NTggMS4yNzkgMy40MTEgMyAzLjg1OFYxNWwxIDJ6TTEwIDZjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMi0uODk3IDItMiAyLTItLjg5Ny0yLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYuMjY3IDEwLjU2My0uNTMzIDEuOTI4QzE4LjMyNSAxMy4yMDcgMjAgMTQuNTg0IDIwIDE2YzAgMS44OTItMy4yODUgNC04IDRzLTgtMi4xMDgtOC00YzAtMS40MTYgMS42NzUtMi43OTMgNC4yNjctMy41MWwtLjUzMy0xLjkyOEM0LjE5NyAxMS41NCAyIDEzLjYyMyAyIDE2YzAgMy4zNjQgNC4zOTMgNiAxMCA2czEwLTIuNjM2IDEwLTZjMC0yLjM3Ny0yLjE5Ny00LjQ2LTUuNzMzLTUuNDM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjMi4yMDYgMCA0LTEuNzk0IDQtNHMtMS43OTQtNC00LTQtNCAxLjc5NC00IDQgMS43OTQgNCA0IDR6bTAtNmMxLjEwMyAwIDIgLjg5NyAyIDJzLS44OTcgMi0yIDItMi0uODk3LTItMiAuODk3LTIgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQyIDIxLjgxNGEuOTk4Ljk5OCAwIDAgMCAxLjE2IDBDMTIuODg0IDIxLjU5OSAyMC4wMjkgMTYuNDQgMjAgMTBjMC00LjQxMS0zLjU4OS04LTgtOFM0IDUuNTg5IDQgOS45OTVjLS4wMjkgNi40NDUgNy4xMTYgMTEuNjA0IDcuNDIgMTEuODE5ek0xMiA0YzMuMzA5IDAgNiAyLjY5MSA2IDYuMDA1LjAyMSA0LjQzOC00LjM4OCA4LjQyMy02IDkuNzMtMS42MTEtMS4zMDgtNi4wMjEtNS4yOTQtNi05LjczNSAwLTMuMzA5IDIuNjkxLTYgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1hc2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDZINUMzLjM0NiA2IDIgNy4zNDYgMiA5djVjMCAyLjIwNiAxLjc5NCA0IDQgNGgxLjYzN2MxLjE2NiAwIDIuMjgtLjU1NyAyLjk4MS0xLjQ5MS42Ni0uODc5IDIuMTA0LS44OCAyLjc2NC4wMDFBMy43NDQgMy43NDQgMCAwIDAgMTYuMzYzIDE4SDE4YzIuMjA2IDAgNC0xLjc5NCA0LTRWOWMwLTEuNjU0LTEuMzQ2LTMtMy0zem0xIDhjMCAxLjEwMy0uODk3IDItMiAyaC0xLjYzN2MtLjU0IDAtMS4wNTctLjI1OS0xLjM4Mi0uNjktLjcxLS45NDgtMS43OTctMS40OTItMi45ODEtMS40OTJzLTIuMjcxLjU0NC0yLjk4MSAxLjQ5MUExLjc0MSAxLjc0MSAwIDAgMSA3LjYzNyAxNkg2Yy0xLjEwMyAwLTItLjg5Ny0yLTJWOWMwLS41NTEuNDQ4LTEgMS0xaDE0Yy41NTIgMCAxIC40NDkgMSAxdjV6XCJ9fSx7XCJ0YWdcIjpcImVsbGlwc2VcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTEuNVwiLFwicnhcIjpcIjIuNVwiLFwicnlcIjpcIjEuNVwifX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE2LjVcIixcImN5XCI6XCIxMS41XCIsXCJyeFwiOlwiMi41XCIsXCJyeVwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVkYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIyYzMuODU5IDAgNy0zLjE0MSA3LTdzLTMuMTQxLTctNy03Yy0zLjg2IDAtNyAzLjE0MS03IDdzMy4xNCA3IDcgN3ptMC0xMmMyLjc1NyAwIDUgMi4yNDMgNSA1cy0yLjI0MyA1LTUgNS01LTIuMjQzLTUtNSAyLjI0My01IDUtNXptLTEtOEg3djUuNTE4YTguOTU3IDguOTU3IDAgMCAxIDQtMS40NTlWMnptNiAwaC00djQuMDU5YTguOTU3IDguOTU3IDAgMCAxIDQgMS40NTlWMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4wMTkgMTUuODExLS40NjggMi43MjZMMTIgMTcuMjVsMi40NDkgMS4yODctLjQ2OC0yLjcyNiAxLjk4Mi0xLjkzMi0yLjczOC0uMzk4TDEyIDExbC0xLjIyNSAyLjQ4MS0yLjczOC4zOTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBoNHYyaC00em0tNi4wMjYgNUgxNnYySDcuOTc0ek02IDEwaDR2Mkg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjQ5M1wiLFwiY3lcIjpcIjEwLjQ5M1wiLFwiclwiOlwiMS40OTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjEwLjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNDkzXCIsXCJjeVwiOlwiMTAuNDkzXCIsXCJyXCI6XCIxLjQ5M1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOTc0IDE1SDE2djJINy45NzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVtb3J5Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djE2YzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMlY4YS45OTcuOTk3IDAgMCAwLS4yOTMtLjcwN2wtNS01QS45OTYuOTk2IDAgMCAwIDE0IDJINmMtMS4xMDMgMC0yIC44OTctMiAyem0xNCA0LjQxNEwxOC4wMDEgMjBINlY0aDcuNTg2TDE4IDguNDE0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNmgydjRIOHptNCAwaDJ2NGgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZW51QWx0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMWgxMnYySDR6bTAtNWgxNnYySDR6bTAgMTJoNy4yMzV2LTJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZW51QWx0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNmgxNnYySDR6bTQgNWgxMnYySDh6bTUgNWg3djJoLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA2aDE2djJINHptMCA1aDE2djJINHptMCA1aDE2djJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXJnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM0g1YTIgMiAwIDAgMC0yIDJ2OWEyIDIgMCAwIDAgMiAyaDlhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTl2LTlhMiAyIDAgMCAwLTItMmgtMXY4YTIgMiAwIDAgMS0yIDJIOHYxYTIgMiAwIDAgMCAyIDJoOWEyIDIgMCAwIDAgMi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDN2My43NjdMMTMuMjc3IDE4SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNGgtNy4yNzdMOSAxOC4yMzNWMTZINFY0aDE2djEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0aDJ2LTNoM1Y5aC0zVjZoLTJ2M0g4djJoM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlQWx0QWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE2YzAgMS4xMDMuODk3IDIgMiAyaDMuNTg2TDEyIDIxLjQxNCAxNS40MTQgMThIMTljMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxMnpNNSA0aDE0djEyaC00LjQxNEwxMiAxOC41ODYgOS40MTQgMTZINVY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0aDJ2LTNoM1Y5aC0zVjZoLTJ2M0g4djJoM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlQWx0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNHYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzLjU4NkwxMiAyMS40MTQgMTUuNDE0IDE4SDE5YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ6bTIgMGgxNHYxMmgtNC40MTRMMTIgMTguNTg2IDkuNDE0IDE2SDVWNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yMDcgNy4yMDctMS40MTQtMS40MTRMMTEgMTAuNTg2IDguNzA3IDguMjkzIDcuMjkzIDkuNzA3IDExIDEzLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlQWx0RGV0YWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzLjU4NkwxMiAyMS40MTQgMTUuNDE0IDE4SDE5YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMkg1em0xNCAxNGgtNC40MTRMMTIgMTguNTg2IDkuNDE0IDE2SDVWNGgxNHYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2Mkg3em0wIDRoN3YySDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUFsdERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDMuNTg2TDEyIDIxLjQxNCAxNS40MTQgMThIMTljMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0aC00LjQxNEwxMiAxOC41ODYgOS40MTQgMTZINVY0aDE0djEyelwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUFsdEVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTg2IDE4IDEyIDIxLjQxNCAxNS40MTQgMThIMTljMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzLjU4NnpNNSA0aDE0djEyaC00LjQxNEwxMiAxOC41ODYgOS40MTQgMTZINVY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEyLjQ3OSA3LjIxOS00Ljk3NyA0Ljk2OXYxLjc5OWgxLjhsNC45NzUtNC45Njl6bTIuMjE5LTIuMjIgMS44IDEuOC0xLjM3IDEuMzctMS44LTEuNzk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VBbHRFcnJvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMy41ODZMMTIgMjEuNDE0IDE1LjQxNCAxOEgxOWMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJINXptMTQgMTRoLTQuNDE0TDEyIDE4LjU4NiA5LjQxNCAxNkg1VjRoMTR2MTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgydjZoLTJ6bTAgN2gydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUFsdE1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjU4NiAxOCAxMiAyMS40MTQgMTUuNDE0IDE4SDE5YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMy41ODZ6TTUgNGgxNHYxMmgtNC40MTRMMTIgMTguNTg2IDkuNDE0IDE2SDVWNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDloOHYySDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUFsdFggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTg2IDE4IDEyIDIxLjQxNCAxNS40MTQgMThIMTljMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzLjU4NnpNNSA0aDE0djEyaC00LjQxNEwxMiAxOC41ODYgOS40MTQgMTZINVY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNzA3IDEzLjcwNyAxMiAxMS40MTRsMi4yOTMgMi4yOTMgMS40MTQtMS40MTRMMTMuNDE0IDEwbDIuMjkzLTIuMjkzLTEuNDE0LTEuNDE0TDEyIDguNTg2IDkuNzA3IDYuMjkzIDguMjkzIDcuNzA3IDEwLjU4NiAxMGwtMi4yOTMgMi4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMy41ODZMMTIgMjEuNDE0IDE1LjQxNCAxOEgxOWMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRoLTQuNDE0TDEyIDE4LjU4NiA5LjQxNCAxNkg1VjRoMTR2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzdjMuNzY3TDEzLjI3NyAxOEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRoLTcuMjc3TDkgMTguMjMzVjE2SDRWNGgxNnYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy4yMDcgNy4yMDctMS40MTQtMS40MTRMMTEgMTAuNTg2IDguNzA3IDguMjkzIDcuMjkzIDkuNzA3IDExIDEzLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlRGV0YWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgzdjMuNzY3TDEzLjI3NyAxOEgyMGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6bTAgMTRoLTcuMjc3TDkgMTguMjMzVjE2SDRWNGgxNnYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdoMTB2Mkg3em0wIDRoN3YySDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZURvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDN2My43NjZMMTMuMjc3IDE4SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNGgtNy4yNzdMOSAxOC4yMzRWMTZINFY0aDE2djEyelwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTVcIixcImN5XCI6XCIxMFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjEwXCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDN2My43NjdMMTMuMjc3IDE4SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNGgtNy4yNzdMOSAxOC4yMzNWMTZINFY0aDE2djEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjgwMyA5LjE4OS0xLjM5OS0xLjM5OC0zLjg2OSAzLjg2NHYxLjM5OWgxLjM5OXptLjMyNy0zLjEyMyAxLjM5OCAxLjM5OS0xLjA2NiAxLjA2Ni0xLjM5OS0xLjM5OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDN2My43NjdMMTMuMjc3IDE4SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNGgtNy4yNzdMOSAxOC4yMzNWMTZINFY0aDE2djEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZoMnY1aC0yem0wIDZoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoM3YzLjc2N0wxMy4yNzcgMThIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0aC03LjI3N0w5IDE4LjIzM1YxNkg0VjRoMTZ2MTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5aDh2Mkg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VSb3VuZGVkQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA1LjU4OSAyIDEwYzAgMi45MDggMS44OTggNS41MTUgNSA2LjkzNFYyMmw1LjM0LTQuMDA1QzE3LjY5NyAxNy44NTIgMjIgMTQuMzIgMjIgMTBjMC00LjQxMS00LjQ4Ni04LTEwLTh6bTAgMTRoLS4zMzNMOSAxOHYtMi40MTdsLS42NDEtLjI0N0M1LjY3IDE0LjMwMSA0IDEyLjI1NiA0IDEwYzAtMy4zMDkgMy41ODktNiA4LTZzOCAyLjY5MSA4IDYtMy41ODkgNi04IDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNmgtMnYzSDh2MmgzdjNoMnYtM2gzVjloLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVJvdW5kZWRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNS41ODkgMiAxMGMwIDIuOTA4IDEuODk4IDUuNTE1IDUgNi45MzRWMjJsNS4zMzktNC4wMDVDMTcuNjk3IDE3Ljg1MiAyMiAxNC4zMiAyMiAxMGMwLTQuNDExLTQuNDg2LTgtMTAtOHptMCAxNGgtLjMzM0w5IDE4di0yLjQxN2wtLjY0MS0uMjQ3QzUuNjcgMTQuMzAxIDQgMTIuMjU2IDQgMTBjMC0zLjMwOSAzLjU4OS02IDgtNnM4IDIuNjkxIDggNi0zLjU4OSA2LTggNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxMS41ODYgOC43MDcgOS4yOTNsLTEuNDE0IDEuNDE0TDExIDE0LjQxNGw2LjIwNy02LjIwNy0xLjQxNC0xLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlUm91bmRlZERldGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNS41ODkgMiAxMGMwIDIuOTA4IDEuODk4IDUuNTE1IDUgNi45MzRWMjJsNS4zNC00LjAwNUMxNy42OTcgMTcuODUyIDIyIDE0LjMyIDIyIDEwYzAtNC40MTEtNC40ODYtOC0xMC04em0wIDE0aC0uMzMzTDkgMTh2LTIuNDE3bC0uNjQxLS4yNDdDNS42NyAxNC4zMDEgNCAxMi4yNTYgNCAxMGMwLTMuMzA5IDMuNTg5LTYgOC02czggMi42OTEgOCA2LTMuNTg5IDYtOCA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2gxMHYySDd6bTAgNGg3djJIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlUm91bmRlZERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41XCIsXCJjeVwiOlwiOS41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCI5LjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDUuNTg5IDIgMTBjMCAyLjkwOCAxLjg5NyA1LjUxNSA1IDYuOTM0VjIybDUuMzQtNC4wMDRDMTcuNjk3IDE3Ljg1MiAyMiAxNC4zMiAyMiAxMGMwLTQuNDExLTQuNDg2LTgtMTAtOHptMCAxNGgtLjMzM0w5IDE4di0yLjQxN2wtLjY0MS0uMjQ3QzUuNjcxIDE0LjMwMSA0IDEyLjI1NiA0IDEwYzAtMy4zMDkgMy41ODktNiA4LTZzOCAyLjY5MSA4IDYtMy41ODkgNi04IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVJvdW5kZWRFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA1LjU4OSAyIDEwYzAgMi45MDggMS44OTggNS41MTUgNSA2LjkzNFYyMmw1LjM0LTQuMDA1QzE3LjY5NyAxNy44NTIgMjIgMTQuMzIgMjIgMTBjMC00LjQxMS00LjQ4Ni04LTEwLTh6bTAgMTRoLS4zMzNMOSAxOHYtMi40MTdsLS42NDEtLjI0N0M1LjY3IDE0LjMwMSA0IDEyLjI1NiA0IDEwYzAtMy4zMDkgMy41ODktNiA4LTZzOCAyLjY5MSA4IDYtMy41ODkgNi04IDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MDMgMTEuNTg5djEuMzk4aDEuMzk4bDMuODctMy44NjQtMS4zOTktMS4zOTh6bTUuOTI3LTMuMTI1LTEuMzk4LTEuMzk4IDEuMDY3LTEuMDY3IDEuMzk4IDEuMzk4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VSb3VuZGVkRXJyb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDUuNTg5IDIgMTBjMCAyLjkwOCAxLjg5OCA1LjUxNSA1IDYuOTM0VjIybDUuMzQtNC4wMDVDMTcuNjk3IDE3Ljg1MiAyMiAxNC4zMiAyMiAxMGMwLTQuNDExLTQuNDg2LTgtMTAtOHptMCAxNGgtLjMzM0w5IDE4di0yLjQxN2wtLjY0MS0uMjQ3QzUuNjcgMTQuMzAxIDQgMTIuMjU2IDQgMTBjMC0zLjMwOSAzLjU4OS02IDgtNnM4IDIuNjkxIDggNi0zLjU4OSA2LTggNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2aDJ2NWgtMnptMCA2aDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlUm91bmRlZE1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA1LjU4OSAyIDEwYzAgMi45MDggMS44OTggNS41MTUgNSA2LjkzNFYyMmw1LjM0LTQuMDA1QzE3LjY5NyAxNy44NTIgMjIgMTQuMzIgMjIgMTBjMC00LjQxMS00LjQ4Ni04LTEwLTh6bTAgMTRoLS4zMzNMOSAxOHYtMi40MTdsLS42NDEtLjI0N0M1LjY3IDE0LjMwMSA0IDEyLjI1NiA0IDEwYzAtMy4zMDkgMy41ODktNiA4LTZzOCAyLjY5MSA4IDYtMy41ODkgNi04IDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5aDh2Mkg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VSb3VuZGVkWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNS41ODkgMiAxMGMwIDIuOTA4IDEuODk4IDUuNTE1IDUgNi45MzRWMjJsNS4zNC00LjAwNUMxNy42OTcgMTcuODUyIDIyIDE0LjMyIDIyIDEwYzAtNC40MTEtNC40ODYtOC0xMC04em0wIDE0aC0uMzMzTDkgMTh2LTIuNDE3bC0uNjQxLS4yNDdDNS42NyAxNC4zMDEgNCAxMi4yNTYgNCAxMGMwLTMuMzA5IDMuNTg5LTYgOC02czggMi42OTEgOCA2LTMuNTg5IDYtOCA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjI5MyA2LjI5MyAxMiA4LjU4NiA5LjcwNyA2LjI5MyA4LjI5MyA3LjcwNyAxMC41ODYgMTBsLTIuMjkzIDIuMjkzIDEuNDE0IDEuNDE0TDEyIDExLjQxNGwyLjI5MyAyLjI5MyAxLjQxNC0xLjQxNEwxMy40MTQgMTBsMi4yOTMtMi4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDUuNTg5IDIgMTBjMCAyLjkwOCAxLjg5OCA1LjUxNiA1IDYuOTM0VjIybDUuMzQtNC4wMDVDMTcuNjk3IDE3Ljg1MiAyMiAxNC4zMiAyMiAxMGMwLTQuNDExLTQuNDg2LTgtMTAtOHptMCAxNGgtLjMzM0w5IDE4di0yLjQxN2wtLjY0MS0uMjQ3QzUuNjcgMTQuMzAxIDQgMTIuMjU2IDQgMTBjMC0zLjMwOSAzLjU4OS02IDgtNnM4IDIuNjkxIDggNi0zLjU4OSA2LTggNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlU3F1YXJlQWRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAySDhDNC42OTEgMiAyIDQuNjkxIDIgOHYxM2ExIDEgMCAwIDAgMSAxaDEzYzMuMzA5IDAgNi0yLjY5MSA2LTZWOGMwLTMuMzA5LTIuNjkxLTYtNi02em00IDE0YzAgMi4yMDYtMS43OTQgNC00IDRINFY4YzAtMi4yMDYgMS43OTQtNCA0LTRoOGMyLjIwNiAwIDQgMS43OTQgNCA0djh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VTcXVhcmVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg4QzQuNjkxIDIgMiA0LjY5MSAyIDh2MTNhMSAxIDAgMCAwIDEgMWgxM2MzLjMwOSAwIDYtMi42OTEgNi02VjhjMC0zLjMwOS0yLjY5MS02LTYtNnptNCAxNGMwIDIuMjA2LTEuNzk0IDQtNCA0SDRWOGMwLTIuMjA2IDEuNzk0LTQgNC00aDhjMi4yMDYgMCA0IDEuNzk0IDQgNHY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExIDEzLjU4Ni0yLjI5My0yLjI5My0xLjQxNCAxLjQxNEwxMSAxNi40MTRsNi4yMDctNi4yMDctMS40MTQtMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVNxdWFyZURldGFpbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg4QzQuNjkxIDIgMiA0LjY5MSAyIDh2MTNhMSAxIDAgMCAwIDEgMWgxM2MzLjMwOSAwIDYtMi42OTEgNi02VjhjMC0zLjMwOS0yLjY5MS02LTYtNnptNCAxNGMwIDIuMjA2LTEuNzk0IDQtNCA0SDRWOGMwLTIuMjA2IDEuNzk0LTQgNC00aDhjMi4yMDYgMCA0IDEuNzk0IDQgNHY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWgxMHYySDd6bTAgNGg3djJIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlU3F1YXJlRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg4QzQuNjkxIDIgMiA0LjY5MSAyIDh2MTJhMSAxIDAgMCAwIDEgMWgxM2MzLjMwOSAwIDYtMi42OTEgNi02VjhjMC0zLjMwOS0yLjY5MS02LTYtNnptNCAxM2MwIDIuMjA2LTEuNzk0IDQtNCA0SDRWOGMwLTIuMjA2IDEuNzk0LTQgNC00aDhjMi4yMDYgMCA0IDEuNzk0IDQgNHY3elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNC41XCIsXCJjeVwiOlwiMTEuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVNxdWFyZUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJIOEM0LjY5MSAyIDIgNC42OTEgMiA4djEzYTEgMSAwIDAgMCAxIDFoMTNjMy4zMDkgMCA2LTIuNjkxIDYtNlY4YzAtMy4zMDktMi42OTEtNi02LTZ6bTQgMTRjMCAyLjIwNi0xLjc5NCA0LTQgNEg0VjhjMC0yLjIwNiAxLjc5NC00IDQtNGg4YzIuMjA2IDAgNCAxLjc5NCA0IDR2OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE0Ljk4N3YxLjk5OWgxLjk5OWw1LjUyOS01LjUyMi0xLjk5OC0xLjk5OHptOC40Ny00LjQ2NS0xLjk5OC0yTDE0Ljk5NSA3bDIgMS45OTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVNxdWFyZUVycm9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAySDhDNC42OTEgMiAyIDQuNjkxIDIgOHYxM2ExIDEgMCAwIDAgMSAxaDEzYzMuMzA5IDAgNi0yLjY5MSA2LTZWOGMwLTMuMzA5LTIuNjkxLTYtNi02em00IDE0YzAgMi4yMDYtMS43OTQgNC00IDRINFY4YzAtMi4yMDYgMS43OTQtNCA0LTRoOGMyLjIwNiAwIDQgMS43OTQgNCA0djh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgydjhoLTJ6bTAgMTBoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1lc3NhZ2VTcXVhcmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg4QzQuNjkxIDIgMiA0LjY5MSAyIDh2MTNhMSAxIDAgMCAwIDEgMWgxM2MzLjMwOSAwIDYtMi42OTEgNi02VjhjMC0zLjMwOS0yLjY5MS02LTYtNnptNCAxNGMwIDIuMjA2LTEuNzk0IDQtNCA0SDRWOGMwLTIuMjA2IDEuNzk0LTQgNC00aDhjMi4yMDYgMCA0IDEuNzk0IDQgNHY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFoOHYySDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVNxdWFyZVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJIOEM0LjY5MSAyIDIgNC42OTEgMiA4djEzYTEgMSAwIDAgMCAxIDFoMTNjMy4zMDkgMCA2LTIuNjkxIDYtNlY4YzAtMy4zMDktMi42OTEtNi02LTZ6bTQgMTRjMCAyLjIwNi0xLjc5NCA0LTQgNEg0VjhjMC0yLjIwNiAxLjc5NC00IDQtNGg4YzIuMjA2IDAgNCAxLjc5NCA0IDR2OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4yOTIgNy4yOTUgMTIgMTAuNTg3IDguNzA4IDcuMjk1IDcuMjk0IDguNzA5bDMuMjkyIDMuMjkyLTMuMjkyIDMuMjkyIDEuNDE0IDEuNDE0TDEyIDEzLjQxNWwzLjI5MiAzLjI5MiAxLjQxNC0xLjQxNC0zLjI5Mi0zLjI5MiAzLjI5Mi0zLjI5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNZXNzYWdlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAySDhDNC42OTEgMiAyIDQuNjkxIDIgOHYxMmExIDEgMCAwIDAgMSAxaDEzYzMuMzA5IDAgNi0yLjY5MSA2LTZWOGMwLTMuMzA5LTIuNjkxLTYtNi02em00IDEzYzAgMi4yMDYtMS43OTQgNC00IDRINFY4YzAtMi4yMDYgMS43OTQtNCA0LTRoOGMyLjIwNiAwIDQgMS43OTQgNCA0djd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZVggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDJINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDN2My43NjdMMTMuMjc3IDE4SDIwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNGgtNy4yNzdMOSAxOC4yMzNWMTZINFY0aDE2djEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNzA3IDEzLjcwNyAxMiAxMS40MTRsMi4yOTMgMi4yOTMgMS40MTQtMS40MTRMMTMuNDE0IDEwbDIuMjkzLTIuMjkzLTEuNDE0LTEuNDE0TDEyIDguNTg2IDkuNzA3IDYuMjkzIDguMjkzIDcuNzA3IDEwLjU4NiAxMGwtMi4yOTMgMi4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWVzc2FnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoM3YzLjc2N0wxMy4yNzcgMThIMjBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0wIDE0aC03LjI3N0w5IDE4LjIzM1YxNkg0VjRoMTZ2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTWV0ZW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMjJjMi4wMDMgMCAzLjg4Ny0uNzggNS4zMTMtMi4yMDdsNi45MDQtNy4wOTZBMSAxIDAgMCAwIDIxIDExaC0zLjMwMWw0LjE3NS03LjUxNGExLjAwMSAxLjAwMSAwIDAgMC0xLjM1OS0xLjM2bC03LjExIDMuOTUuNTc2LTIuODc5YTEgMSAwIDAgMC0xLjYyOS0uOTU3TDQuMTk2IDkuMTk3Yy0yLjkyNCAyLjkyNC0yLjkyNCA3LjY4MiAwIDEwLjYwNkE3LjQ1MiA3LjQ1MiAwIDAgMCA5LjUgMjJ6TTUuNTUyIDEwLjY2NWw1LjkwMi01LjAzMS0uMjQ4IDEuMjQtLjE4Ni45M3YuMDAxbC0uNDI0IDIuMTE5IDcuODMtNC4zNS0zLjMgNS45NC0uMDAxLjAwMUwxNC4zMDEgMTNoNC4zMzFsLTUuMjQzIDUuMzg5QzEyLjM1IDE5LjQyOCAxMC45NjkgMjAgOS41IDIwcy0yLjg1MS0uNTcyLTMuODktMS42MTFjLTIuMTQzLTIuMTQ0LTIuMTQzLTUuNjM0LS4wNTgtNy43MjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE4YTMuNDkyIDMuNDkyIDAgMCAwIDEuNDg0LTYuNjU5Yy4wMDUuMDUzLjAxNi4xMDUuMDE2LjE1OWExLjUgMS41IDAgMSAxLTMgMGMwLS4wNTQuMDExLS4xMDYuMDE2LS4xNTlBMy40OTIgMy40OTIgMCAwIDAgOS41IDE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1pY3JvY2hpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMkg4Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoOGMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6TTggMjBWNGg4bC4wMDEgMTZIOHpNMyA3aDJWNUgzdi41SDJ2MWgxem0xOC0yaC0ydjJoMnYtLjVoMXYtMWgtMXpNMyAxMWgyVjlIM3YuNUgydjFoMXptMTgtMmgtMnYyaDJ2LS41aDF2LTFoLTF6TTMgMTVoMnYtMkgzdi41SDJ2MWgxem0xOC0yaC0ydjJoMnYtLjVoMXYtMWgtMXpNMyAxOWgydi0ySDN2LjVIMnYxaDF6bTE4LTJoLTJ2Mmgydi0uNWgxdi0xaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1pY3JvcGhvbmVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcwNyAyMC4yOTMtMy4zODgtMy4zODhBNy45NDIgNy45NDIgMCAwIDAgMjAgMTIuMDIxaC0yYTUuOTUgNS45NSAwIDAgMS0xLjEwOSAzLjQ1NmwtMS40NTItMS40NTJjLjM0OC0uNTkxLjU2MS0xLjI3LjU2MS0yLjAwNHYtNkMxNiAzLjgwNCAxNC4yMTUgMiAxMi4wMjEgMmMtLjA3IDAtLjE0LjAwOS0uMjA5LjAyNUE0LjAwNSA0LjAwNSAwIDAgMCA4IDYuMDIxdi41NjVMMy43MDcgMi4yOTMgMi4yOTMgMy43MDdsMTggMTggMS40MTQtMS40MTR6TTEwIDYuMDIxYzAtMS4xMDMuODk3LTIgMi0yYS45MTguOTE4IDAgMCAwIC4xNjQtLjAxNUMxMy4xODggNC4wOCAxNCA0Ljk1NiAxNCA2LjAyMXY2YzAgLjE3Mi0uMDI5LjMzNS0uMDcxLjQ5NEwxMCA4LjU4NlY2LjAyMXptLTQgNkg0YzAgNC4wNzIgMy4wNiA3LjQzNiA3IDcuOTMxdjIuMDY5aDJ2LTIuMDdhNy45OTMgNy45OTMgMCAwIDAgMi4yMTgtLjYxMWwtMS41NTgtMS41NThhNS45NzkgNS45NzkgMCAwIDEtMS42Ni4yMzljLTMuMzA5IDAtNi0yLjY5Mi02LTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wMTEgMTIuMTMyYTMuOTkzIDMuOTkzIDAgMCAwIDMuODc3IDMuODc3bC0zLjg3Ny0zLjg3N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNaWNyb3Bob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMlY2YzAtMi4yMTctMS43ODUtNC4wMjEtMy45NzktNC4wMjFhLjkzMy45MzMgMCAwIDAtLjIwOS4wMjVBNC4wMDYgNC4wMDYgMCAwIDAgOCA2djZjMCAyLjIwNiAxLjc5NCA0IDQgNHM0LTEuNzk0IDQtNHptLTYgMFY2YzAtMS4xMDMuODk3LTIgMi0yYS44OS44OSAwIDAgMCAuMTYzLS4wMTVDMTMuMTg4IDQuMDYgMTQgNC45MzUgMTQgNnY2YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEySDRjMCA0LjA3MiAzLjA2MSA3LjQzNiA3IDcuOTMxVjIyaDJ2LTIuMDY5YzMuOTM5LS40OTUgNy0zLjg1OCA3LTcuOTMxaC0yYzAgMy4zMDktMi42OTEgNi02IDZzLTYtMi42OTEtNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1pbnVzQmFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OWMwIDEuMTAzLjg5NyAyIDIgMmgzdjNjMCAxLjEwMy44OTcgMiAyIDJoOWMxLjEwMyAwIDItLjg5NyAyLTJ2LTljMC0xLjEwMy0uODk3LTItMi0yaC0zVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDVoOWwtLjAwMyA5SDVWNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNaW51c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMWgxMHYySDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1pbnVzRnJvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZoM3YzYzAgMS4xMDMuODk3IDIgMiAyaDljMS4xMDMgMCAyLS44OTcgMi0ydi05YzAtMS4xMDMtLjg5Ny0yLTItMmgtM1Y1YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OWMwIDEuMTAzLjg5NyAyIDIgMnptMTMuOTk3IDNIMTB2LTloOWwtLjAwMyA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDE0djJINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNb2JpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Ljc1IDJoLTEwYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoMTBjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yem0tMTAgMThWNGgxMGwuMDAyIDE2SDYuNzV6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMS43NVwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIxXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTW9iaWxlTGFuZHNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA1SDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMTAzLS44OTctMi0yLTJ6TTcuMDAxIDdIMTl2MTBINy4wMDFWN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNb2JpbGVWaWJyYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUzNSAyLjgwOGMtLjc1Ni0uNzU2LTIuMDcyLS43NTYtMi44MjggMGwtOS44OTkgOS44OTlhMi4wMDEgMi4wMDEgMCAwIDAgMCAyLjgyOGw1LjY1NyA1LjY1N2MuMzc4LjM3OC44OC41ODYgMS40MTQuNTg2czEuMDM2LS4yMDggMS40MTQtLjU4Nmw5Ljg5OS05Ljg5OWMuMzc4LS4zNzguNTg2LS44OC41ODYtMS40MTRzLS4yMDgtMS4wMzYtLjU4Ni0xLjQxNGwtNS42NTctNS42NTd6bS01LjY1NiAxNi45N3YxLTFsLTUuNjU3LTUuNjU3IDkuODk5LTkuODk5IDUuNjU3IDUuNjU3LTkuODk5IDkuODk5elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOVwiLFwiY3lcIjpcIjE1XCIsXCJyXCI6XCIxXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNzA3IDIxLjcwNy0xLjQxNC0xLjQxNCA2LTYgMS40MTQgMS40MTV6TTguMjkzIDIuMjkzbDEuNDE0IDEuNDE0LTYgNi0xLjQxNC0xLjQxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN2MtMS4xMDMgMC0yIC44OTctMiAydjE2YzAgMS4xMDMuODk3IDIgMiAyaDEwYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpNNyAxNi45OTlWNWgxMGwuMDAyIDExLjk5OUg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vbmV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0SDNhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDE4YTEgMSAwIDAgMCAxLTFWNWExIDEgMCAwIDAtMS0xem0tMSAxMWEzIDMgMCAwIDAtMyAzSDdhMyAzIDAgMCAwLTMtM1Y5YTMgMyAwIDAgMCAzLTNoMTBhMyAzIDAgMCAwIDMgM3Y2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTQtMS43OTQtNC00LTR6bTAgNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTIgMiAuODk3IDIgMi0uODk3IDItMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjc0MiAxMy4wNDVhOC4wODggOC4wODggMCAwIDEtMi4wNzcuMjcxYy0yLjEzNSAwLTQuMTQtLjgzLTUuNjQ2LTIuMzM2YTguMDI1IDguMDI1IDAgMCAxLTIuMDY0LTcuNzIzQTEgMSAwIDAgMCA5LjczIDIuMDM0YTEwLjAxNCAxMC4wMTQgMCAwIDAtNC40ODkgMi41ODJjLTMuODk4IDMuODk4LTMuODk4IDEwLjI0MyAwIDE0LjE0M2E5LjkzNyA5LjkzNyAwIDAgMCA3LjA3MiAyLjkzIDkuOTMgOS45MyAwIDAgMCA3LjA3LTIuOTI5IDEwLjAwNyAxMC4wMDcgMCAwIDAgMi41ODMtNC40OTEgMS4wMDEgMS4wMDEgMCAwIDAtMS4yMjQtMS4yMjR6bS0yLjc3MiA0LjMwMWE3Ljk0NyA3Ljk0NyAwIDAgMS01LjY1NiAyLjM0MyA3Ljk1MyA3Ljk1MyAwIDAgMS01LjY1OC0yLjM0NGMtMy4xMTgtMy4xMTktMy4xMTgtOC4xOTUgMC0xMS4zMTRhNy45MjMgNy45MjMgMCAwIDEgMi4wNi0xLjQ4MyAxMC4wMjcgMTAuMDI3IDAgMCAwIDIuODkgNy44NDggOS45NzIgOS45NzIgMCAwIDAgNy44NDggMi44OTEgOC4wMzYgOC4wMzYgMCAwIDEtMS40ODQgMi4wNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTW91c2VBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDJoLTJDNy42OTEgMiA1IDQuNjkxIDUgOHY4YzAgMy4zMDkgMi42OTEgNiA2IDZoMmMzLjMwOSAwIDYtMi42OTEgNi02VjhjMC0zLjMwOS0yLjY5MS02LTYtNnptLTIgMnY2SDdWOGMwLTIuMjA2IDEuNzk0LTQgNC00em02IDEyYzAgMi4yMDYtMS43OTQgNC00IDRoLTJjLTIuMjA2IDAtNC0xLjc5NC00LTR2LTRoMTB2NHptLTQtNlY0YzIuMjA2IDAgNCAxLjc5NCA0IDR2MmgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOTc1IDIySDEyYzMuODU5IDAgNy0zLjE0IDctN1Y5YzAtMy44NDEtMy4xMjctNi45NzQtNi45ODEtN2gtLjA2QzguMTE5IDIuMDIyIDUgNS4xNTcgNSA5djZjMCAzLjg2IDMuMTI5IDcgNi45NzUgN3pNNyA5YTUuMDA3IDUuMDA3IDAgMCAxIDQuOTg1LTVDMTQuNzUgNC4wMDYgMTcgNi4yNDkgMTcgOXY2YzAgMi43NTctMi4yNDMgNS01IDVoLS4wMjVDOS4xODYgMjAgNyAxNy44MDQgNyAxNVY5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZoMnY2aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vdmVIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxMUg3VjdsLTUgNSA1IDV2LTRoMTB2NGw1LTUtNS01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vdmVWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNyAxNyA1IDUgNS01aC00VjdoNGwtNS01LTUgNWg0djEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDExaC01VjZoM2wtNC00LTQgNGgzdjVINlY4bC00IDQgNCA0di0zaDV2NUg4bDQgNCA0LTRoLTN2LTVoNXYzbDQtNC00LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTW92aWVQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6bS4wMDEgNmMtLjAwMSAwLS4wMDEgMCAwIDBoLS40NjVsLTIuNjY3LTRIMjBsLjAwMSA0ek05LjUzNiA5IDYuODY5IDVoMi41OTZsMi42NjcgNEg5LjUzNnptNSAwLTIuNjY3LTRoMi41OTZsMi42NjcgNGgtMi41OTZ6TTQgNWguNDY1bDIuNjY3IDRINFY1em0wIDE0di04aDE2bC4wMDIgOEg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDE4IDUuNS0zLTUuNS0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU1vdmllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6bS4wMDEgNmMtLjAwMSAwLS4wMDEgMCAwIDBoLS40NjZsLTIuNjY3LTRIMjBsLjAwMSA0ek05LjUzNSA5IDYuODY4IDVoMi41OTdsMi42NjcgNEg5LjUzNXptNSAwLTIuNjY3LTRoMi41OTdsMi42NjcgNGgtMi41OTd6TTQgNWguNDY1bDIuNjY3IDRINFY1em0wIDE0di04aDE2bC4wMDIgOEg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xOS42ODQgNS44MjEtOS0zLjI3MkExLjk5OCAxLjk5OCAwIDAgMCA4IDQuNDI4djYuMTI5QTMuOTUzIDMuOTUzIDAgMCAwIDYgMTBjLTIuMjA2IDAtNCAxLjc5NC00IDRzMS43OTQgNCA0IDQgNC0xLjc5NCA0LTRWNC40MjhMMTkgNy43djYuODU2QTMuOTYyIDMuOTYyIDAgMCAwIDE3IDE0Yy0yLjIwNiAwLTQgMS43OTQtNCA0czEuNzk0IDQgNCA0IDQtMS43OTQgNC00VjcuN2MwLS44MzgtLjUyOS0xLjU5NC0xLjMxNi0xLjg3OXpNNiAxNmMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTIgMiAuODk3IDIgMi0uODk3IDItMiAyem0xMSA0Yy0xLjEwMyAwLTItLjg5Ny0yLTJzLjg5Ny0yIDItMiAyIC44OTcgMiAyLS44OTcgMi0yIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTmF2aWdhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4wMDIgOS42M2MtLjAyMy40MTEuMjA3Ljc5NC41ODEuOTY2bDcuNTA0IDMuNDQyIDMuNDQyIDcuNTAzYy4xNjQuMzU2LjUyLjU4My45MDkuNTgzbC4wNTctLjAwMmExIDEgMCAwIDAgLjg5NC0uNjg2bDUuNTk1LTE3LjAzMmMuMTE3LS4zNTguMDIzLS43NTMtLjI0My0xLjAycy0uNjYtLjM1OC0xLjAyLS4yNDNMMi42ODggOC43MzZhMSAxIDAgMCAwLS42ODYuODk0em0xNi40NjQtMy45NzEtNC4xODIgMTIuNzMtMi41MzQtNS41MjJhLjk5OC45OTggMCAwIDAtLjQ5Mi0uNDkyTDUuNzM0IDkuODQxbDEyLjczMi00LjE4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlOZXR3b3JrQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDNjLTEuNjU0IDAtMyAxLjM0Ni0zIDMgMCAuNTAyLjEzNi45NjguMzU0IDEuMzg1bC0xLjExNiAxLjMwMkEzLjk3NiAzLjk3NiAwIDAgMCAxMyA4Yy0uNzM5IDAtMS40MjUuMjE2LTIuMDIuNTY2TDkuNTY2IDcuMTUyQTMuNDQ5IDMuNDQ5IDAgMCAwIDEwIDUuNUMxMCAzLjU3IDguNDMgMiA2LjUgMlMzIDMuNTcgMyA1LjUgNC41NyA5IDYuNSA5Yy42MDEgMCAxLjE1OC0uMTY2IDEuNjUyLS40MzRMOS41NjYgOS45OEEzLjk3MiAzLjk3MiAwIDAgMCA5IDEyYzAgLjk5Ny4zOCAxLjg5OS45ODUgMi42MDFsLTEuNjkyIDEuNjkyLjAyNS4wMjVBMi45NjIgMi45NjIgMCAwIDAgNyAxNmMtMS42NTQgMC0zIDEuMzQ2LTMgM3MxLjM0NiAzIDMgMyAzLTEuMzQ2IDMtM2MwLS40NzYtLjEyMS0uOTE5LS4zMTgtMS4zMThsLjAyNS4wMjUgMS45NTQtMS45NTRjLjQyMS4xNS44NjcuMjQ3IDEuMzM5LjI0NyAyLjIwNiAwIDQtMS43OTQgNC00YTMuOTYgMy45NiAwIDAgMC0uNDM5LTEuNzg1bDEuMjUzLTEuNDYyYy4zNjQuMTU4Ljc2NC4yNDcgMS4xODYuMjQ3IDEuNjU0IDAgMy0xLjM0NiAzLTNzLTEuMzQ2LTMtMy0zek03IDIwYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpNNSA1LjVDNSA0LjY3MyA1LjY3MyA0IDYuNSA0UzggNC42NzMgOCA1LjUgNy4zMjcgNyA2LjUgNyA1IDYuMzI3IDUgNS41em04IDguNWMtMS4xMDMgMC0yLS44OTctMi0ycy44OTctMiAyLTIgMiAuODk3IDIgMi0uODk3IDItMiAyem02LTdhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU5ld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ljg3NSAzSDQuMTI1QzIuOTUzIDMgMiAzLjg5NyAyIDV2MTRjMCAxLjEwMy45NTMgMiAyLjEyNSAyaDE1Ljc1QzIxLjA0NyAyMSAyMiAyMC4xMDMgMjIgMTlWNWMwLTEuMTAzLS45NTMtMi0yLjEyNS0yem0wIDE2SDQuMTI1Yy0uMDU3IDAtLjA5Ni0uMDE2LS4xMTMtLjAxNi0uMDA3IDAtLjAxMS4wMDItLjAxMi4wMDhMMy45ODggNS4wNDZjLjAwNy0uMDEuMDUyLS4wNDYuMTM3LS4wNDZoMTUuNzVjLjA3OS4wMDEuMTIyLjAyOC4xMjUuMDA4bC4wMTIgMTMuOTQ2Yy0uMDA3LjAxLS4wNTIuMDQ2LS4xMzcuMDQ2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgN2g2djZINnptNyA4SDZ2MmgxMnYtMmgtNHptMS00aDR2MmgtNHptMC00aDR2MmgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlOb0VudHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEwaDEwdjRIN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgM0g1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoOGEuOTk2Ljk5NiAwIDAgMCAuNzA3LS4yOTNsNy03YS45OTcuOTk3IDAgMCAwIC4xOTYtLjI5M2MuMDE0LS4wMy4wMjItLjA2MS4wMzMtLjA5M2EuOTkxLjk5MSAwIDAgMCAuMDUxLS4yNTljLjAwMi0uMDIxLjAxMy0uMDQxLjAxMy0uMDYyVjVjMC0xLjEwMy0uODk3LTItMi0yek01IDVoMTR2N2gtNmExIDEgMCAwIDAtMSAxdjZINVY1em05IDEyLjU4NlYxNGgzLjU4NkwxNCAxNy41ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpTm90ZXBhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgNGgtM1YyaC0ydjJoLTRWMkg4djJINWMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAyMFY3aDE0VjZsLjAwMiAxNEg1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWgxMHYySDd6bTAgNGg1djJIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlOb3RpZmljYXRpb25PZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjcxIDIwLjI5Ni0xLjc4Ni0xLjc4NmMuMDQ1LS4xNjMuMDc2LS4zMzIuMDc2LS41MXYtN2gtMnY1LjU4Nkw3LjQxNCA2SDEzVjRINmMtLjE3OCAwLS4zNDcuMDMxLS41MS4wNzZsLTEuNzgtMS43OEwyLjI5NiAzLjcxbDE4IDE4IDEuNDE0LTEuNDE0ek00IDguMTIxVjE4YzAgMS4xMDMuODk3IDIgMiAyaDkuODc5bC0yLTJINnYtNy44NzlsLTItMnpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE4XCIsXCJjeVwiOlwiNlwiLFwiclwiOlwiM1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaU5vdGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOFwiLFwiY3lcIjpcIjZcIixcInJcIjpcIjNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAxOUg1VjZoOGMwLS43MTIuMTUzLTEuMzg3LjQyMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnYxM2MwIDEuMTAzLjg5NyAyIDIgMmgxM2MxLjEwMyAwIDItLjg5NyAyLTJ2LTguNDIyQTQuOTYyIDQuOTYyIDAgMCAxIDE4IDExdjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpT3V0bGluZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTl2LTljMC0xLjEwMy0uODk3LTItMi0yaC0zVjVjMC0xLjEwMy0uODk3LTItMi0ySDVjLTEuMTAzIDAtMiAuODk3LTIgMnY5YzAgMS4xMDMuODk3IDIgMiAyaDN2M2MwIDEuMTAzLjg5NyAyIDIgMmg5YzEuMTAzIDAgMi0uODk3IDItMnpNNSAxNFY1aDl2M2gtNGMtMS4xMDMgMC0yIC44OTctMiAydjRINXptOS4wMDEgMEgxMHYtNGg0LjAwMXY0ek0xMCAxNmg0YzEuMTAzIDAgMi0uODk3IDItMnYtNGgzbC4wMDEgOUgxMHYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQYWNrYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMiA4YS43Ni43NiAwIDAgMCAwLS4yMXYtLjA4YS43Ny43NyAwIDAgMC0uMDctLjE2LjM1LjM1IDAgMCAwLS4wNS0uMDhsLS4xLS4xMy0uMDgtLjA2LS4xMi0uMDktOS01YTEgMSAwIDAgMC0xIDBsLTkgNS0uMDkuMDctLjExLjA4YS40MS40MSAwIDAgMC0uMDcuMTEuMzkuMzkgMCAwIDAtLjA4LjEuNTkuNTkgMCAwIDAtLjA2LjE0LjMuMyAwIDAgMCAwIC4xQS43Ni43NiAwIDAgMCAyIDh2OGExIDEgMCAwIDAgLjUyLjg3bDkgNWEuNzUuNzUgMCAwIDAgLjEzLjA2aC4xYTEuMDYgMS4wNiAwIDAgMCAuNSAwaC4xbC4xNC0uMDYgOS01QTEgMSAwIDAgMCAyMiAxNlY4em0tMTAgMy44N0w1LjA2IDhsMi43Ni0xLjUyIDYuODMgMy45em0wLTcuNzJMMTguOTQgOCAxNi43IDkuMjUgOS44NyA1LjM0ek00IDkuN2w3IDMuOTJ2NS42OGwtNy0zLjg5em05IDkuNnYtNS42OGwzLTEuNjhWMTVsMi0xdi0zLjE4bDItMS4xMXY1Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGFpbnRSb2xsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDdjLTEuMTAzIDAtMiAuODk3LTIgMnYzYzAgMS4xMDMuODk3IDIgMiAyaDExYzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnpNNyA3VjRoMTFsLjAwMiAzSDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTV2LTJjMC0xLjEwMy0uODk3LTItMi0ySDRWNWMtMS4xMDMgMC0yIC44OTctMiAydjRjMCAxLjEwMy44OTcgMiAyIDJoN3YyYTEgMSAwIDAgMC0xIDF2NWExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMXYtNWExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBhaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjA2MSAyMmMxLjUyMyAwIDIuODQtLjU0MyAzLjkxLTEuNjEzIDEuMTIzLTEuMTIzIDEuNzA3LTIuODU0IDEuNTUxLTQuNDk0bDguNTY0LTguNTY0YTMuMTIzIDMuMTIzIDAgMCAwLS4wMDItNC40MTRjLTEuMTc4LTEuMTgtMy4yMzQtMS4xOC00LjQxMiAwbC04Ljg4NCA4Ljg4NGMtMS45MTMuMTY5LTMuODA3IDEuNTIxLTMuODA3IDMuOTE5IDAgLjMwMy4wMjEuNTg4LjA0Mi44Ni4wOCAxLjAzMS4xMDkgMS40MTgtMS40NzEgMi4yMDhhMS4wMDEgMS4wMDEgMCAwIDAtLjEyMiAxLjcxN0MyLjUyIDIwLjU2MyA0LjYyMyAyMiA3LjA2MSAyMmMtLjAwMSAwLS4wMDEgMCAwIDB6TTE4LjA4NiA0LjMyOGExLjE0NCAxLjE0NCAwIDAgMSAxLjU4Ni4wMDIgMS4xMiAxLjEyIDAgMCAxIDAgMS41ODRMMTIgMTMuNTg2IDEwLjQxNCAxMmw3LjY3Mi03LjY3MnpNNi4wMTggMTYuNDIzYy0uMDE4LS4yMjQtLjAzNy0uNDU4LS4wMzctLjcwNiAwLTEuNTQ1IDEuNDQ1LTEuOTUzIDIuMjEtMS45NTMuMzU2IDAgLjY5OS4wNzMuOTY0LjIwNi45NDUuNDc1IDEuMjYgMS4yOTMgMS4zNTcgMS44OTYuMTc3IDEuMDktLjIxNyAyLjM2OC0uOTU2IDMuMTA3QzguODY1IDE5LjY2NCA4LjA0OSAyMCA3LjA2MSAyMEg3LjA2Yy0uNzUgMC0xLjQ3OS0uMTk2LTIuMDc0LS40MjcgMS4wODItLjk3MyAxLjEyMS0xLjk4OSAxLjAzMi0zLjE1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjQgMi4wOTZhMTAuMDggMTAuMDggMCAwIDAtOC45MzcgMy4zMzFBMTAuMDU0IDEwLjA1NCAwIDAgMCAyLjA5NiAxMy40Yy41MyAzLjg5NCAzLjQ1OCA3LjIwNyA3LjI4NSA4LjI0NmE5Ljk4MiA5Ljk4MiAwIDAgMCAyLjYxOC4zNTRsLjE0Mi0uMDAxYTMuMDAxIDMuMDAxIDAgMCAwIDIuNTE2LTEuNDI2IDIuOTg5IDIuOTg5IDAgMCAwIC4xNTMtMi44NzlsLS4xOTktLjQxNmExLjkxOSAxLjkxOSAwIDAgMSAuMDk0LTEuOTEyIDIuMDA0IDIuMDA0IDAgMCAxIDIuNTc2LS43NTVsLjQxMi4xOTdjLjQxMi4xOTguODUuMjk5IDEuMzAxLjI5OUEzLjAyMiAzLjAyMiAwIDAgMCAyMiAxMi4xNGE5LjkzNSA5LjkzNSAwIDAgMC0uMzUzLTIuNzZjLTEuMDQtMy44MjYtNC4zNTMtNi43NTQtOC4yNDctNy4yODR6bTUuMTU4IDEwLjkwOS0uNDEyLS4xOTdjLTEuODI4LS44NzgtNC4wNy0uMTk4LTUuMTM1IDEuNDk0LS43MzggMS4xNzYtLjgxMyAyLjU3Ni0uMjA0IDMuODQybC4xOTkuNDE2YS45ODMuOTgzIDAgMCAxLS4wNTEuOTYxLjk5Mi45OTIgMCAwIDEtLjg0NC40NzloLS4xMTJhOC4wNjEgOC4wNjEgMCAwIDEtMi4wOTUtLjI4M2MtMy4wNjMtLjgzMS01LjQwMy0zLjQ3OS01LjgyNi02LjU4Ni0uMzIxLTIuMzU1LjM1Mi00LjYyMyAxLjg5My02LjM4OWE4LjAwMiA4LjAwMiAwIDAgMSA3LjE2LTIuNjY0YzMuMTA3LjQyMyA1Ljc1NSAyLjc2NCA2LjU4NiA1LjgyNi4xOTguNzMuMjkzIDEuNDc0LjI4MiAyLjIwNy0uMDEyLjgwNy0uODQ1IDEuMTgzLTEuNDQxLjg5NHpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjcuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiNy41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMC41XCIsXCJjeVwiOlwiNy41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE0LjVcIixcImN5XCI6XCI3LjVcIixcInJcIjpcIjEuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBhcGVyUGxhbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjU2MyAzLjM0YTEuMDAyIDEuMDAyIDAgMCAwLS45ODktLjA3OWwtMTcgOGExIDEgMCAwIDAgLjAyNiAxLjgyMUw4IDE1LjQ0NXY2LjcyMmw1LjgzNi00LjE2OCA0Ljc2NCAyLjA4NGExIDEgMCAwIDAgMS4zOTktLjg1bDEtMTVhMS4wMDUgMS4wMDUgMCAwIDAtLjQzNi0uODkzem0tMi40NjYgMTQuMzQtNS4yNjktMi4zMDZMMTYgOS4xNjdsLTcuNjQ5IDQuMjUtMi45MzItMS4yODMgMTMuNDcxLTYuMzQtLjc5MyAxMS44ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGFwZXJjbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4wMDQgNUg5Yy0xLjgzOCAwLTMuNTg2LjczNy00LjkyNCAyLjA3NkMyLjczNyA4LjQxNSAyIDEwLjE2MyAyIDEyYzAgMS44MzguNzM3IDMuNTg2IDIuMDc2IDQuOTI0QzUuNDE0IDE4LjI2MyA3LjE2MiAxOSA5IDE5aDh2LTJIOWMtMS4zMDMgMC0yLjU1LS41MjktMy41MS0xLjQ5QzQuNTI5IDE0LjU1IDQgMTMuMzAzIDQgMTJjMC0xLjMwMi41MjktMi41NDkgMS40OS0zLjUxQzYuNDUgNy41MjkgNy42OTcgNyA5IDdoOFY2bC4wMDEgMWguMDAzYy43OSAwIDEuNTM5LjMxNCAyLjEwOS44ODYuNTcxLjU3MS44ODYgMS4zMjIuODg3IDIuMTE2YTIuOTY2IDIuOTY2IDAgMCAxLS44ODQgMi4xMUEyLjk4OCAyLjk4OCAwIDAgMSAxNyAxM0g5YS45OS45OSAwIDAgMS0uNjk4LS4zQS45OTEuOTkxIDAgMCAxIDggMTJjMC0uMjUyLjExLS41MDcuMzAxLS42OThBLjk4Ny45ODcgMCAwIDEgOSAxMWg4VjlIOWMtLjc5IDAtMS41NDEuMzE1LTIuMTE0Ljg4OUM2LjMxNCAxMC40NjEgNiAxMS4yMTEgNiAxMnMuMzE0IDEuNTQuODg4IDIuMTE0QTIuOTc0IDIuOTc0IDAgMCAwIDkgMTVoOC4wMDFhNC45NyA0Ljk3IDAgMCAwIDMuNTI4LTEuNDczIDQuOTY3IDQuOTY3IDAgMCAwLS4wMDEtNy4wNTVBNC45NSA0Ljk1IDAgMCAwIDE3LjAwNCA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBhcmFncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxNmgydjRoMlY2aDJ2MTRoMlY2aDNWNEg5Yy0zLjMwOSAwLTYgMi42OTEtNiA2czIuNjkxIDYgNiA2ek05IDZoMnY4SDljLTIuMjA2IDAtNC0xLjc5NC00LTRzMS43OTQtNCA0LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGFzdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDExVjVjMC0xLjEwMy0uODk3LTItMi0yaC0zYTEgMSAwIDAgMC0xLTFIOGExIDEgMCAwIDAtMSAxSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxM2MwIDEuMTAzLjg5NyAyIDIgMmg3YzAgMS4xMDMuODk3IDIgMiAyaDdjMS4xMDMgMCAyLS44OTcgMi0ydi03YzAtMS4xMDMtLjg5Ny0yLTItMnptLTkgMnY1SDRWNWgzdjJoOFY1aDN2NmgtNWMtMS4xMDMgMC0yIC44OTctMiAyem0yIDd2LTdoN2wuMDAxIDdIMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGF1c2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA5aDJ2NmgtMnpNOSA5aDJ2Nkg5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBhdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDdoM3YxMEg4em01IDBoM3YxMGgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjQwNCAyLjk5OGMtLjc1Ny0uNzU0LTIuMDc3LS43NTEtMi44MjguMDA1bC0xLjc4NCAxLjc5MUwxMS41ODYgN0g3YS45OTguOTk4IDAgMCAwLS45MzkuNjU4bC00IDExYy0uMTMzLjM2NS0uMDQyLjc3NC4yMzIgMS4wNDlsMiAyYS45OTcuOTk3IDAgMCAwIDEuMDQ5LjIzMmwxMS00QS45OTguOTk4IDAgMCAwIDE3IDE3di00LjU4NmwyLjIwNy0yLjIwN3YtLjAwMWguMDAxTDIxIDguNDA5Yy4zNzgtLjM3OC41ODYtLjg4MS41ODUtMS40MTUgMC0uNTM1LS4yMDktMS4wMzgtLjU4OC0xLjQxNWwtMi41OTMtMi41ODF6bS0zLjExMSA4LjI5NUEuOTk2Ljk5NiAwIDAgMCAxNSAxMnY0LjNsLTkuMjQ5IDMuMzYzIDQuNjcxLTQuNjcxYy4wMjYuMDAxLjA1Mi4wMDguMDc4LjAwOEExLjUgMS41IDAgMSAwIDkgMTMuNWMwIC4wMjYuMDA3LjA1Mi4wMDguMDc4bC00LjY3MSA0LjY3MUw3LjcgOUgxMmMuMjY2IDAgLjUyLS4xMDUuNzA3LS4yOTNMMTQuNSA2LjkxNCAxNy4wODYgOS41bC0xLjc5MyAxLjc5M3ptMy4yMDYtMy4yMDgtMi41ODYtMi41ODYgMS4wNzktMS4wODQgMi41OTMgMi41ODEtMS4wODYgMS4wODl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGVuY2lsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIxYTEgMSAwIDAgMCAuMjQgMGw0LTFhMSAxIDAgMCAwIC40Ny0uMjZMMjEgNy40MWEyIDIgMCAwIDAgMC0yLjgyTDE5LjQyIDNhMiAyIDAgMCAwLTIuODMgMEw0LjMgMTUuMjlhMS4wNiAxLjA2IDAgMCAwLS4yNy40N2wtMSA0QTEgMSAwIDAgMCAzLjc2IDIxIDEgMSAwIDAgMCA0IDIxek0xOCA0LjQxIDE5LjU5IDYgMTggNy41OSAxNi40MiA2ek01LjkxIDE2LjUxIDE1IDcuNDEgMTYuNTkgOWwtOS4xIDkuMS0yLjExLjUyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBob25lQ2FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuNTcgMjJhMiAyIDAgMCAwIDEuNDMtLjU5bDIuNzEtMi43MWExIDEgMCAwIDAgMC0xLjQxbC00LTRhMSAxIDAgMCAwLTEuNDEgMGwtMS42IDEuNTlhNy41NSA3LjU1IDAgMCAxLTMtMS41OSA3LjYyIDcuNjIgMCAwIDEtMS41OS0zbDEuNTktMS42YTEgMSAwIDAgMCAwLTEuNDFsLTQtNGExIDEgMCAwIDAtMS40MSAwTDIuNTkgNkEyIDIgMCAwIDAgMiA3LjQzIDE1LjI4IDE1LjI4IDAgMCAwIDYuMyAxNy43IDE1LjI4IDE1LjI4IDAgMCAwIDE2LjU3IDIyek02IDUuNDEgOC41OSA4IDcuMyA5LjI5YTEgMSAwIDAgMC0uMy45MSAxMC4xMiAxMC4xMiAwIDAgMCAyLjMgNC41IDEwLjA4IDEwLjA4IDAgMCAwIDQuNSAyLjMgMSAxIDAgMCAwIC45MS0uMjdMMTYgMTUuNDEgMTguNTkgMThsLTIgMmExMy4yOCAxMy4yOCAwIDAgMS04Ljg3LTMuNzFBMTMuMjggMTMuMjggMCAwIDEgNCA3LjQxek0yMCAxMWgyYTguODEgOC44MSAwIDAgMC05LTl2MmE2Ljc3IDYuNzcgMCAwIDEgNyA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDhjMi4xIDAgMyAuOSAzIDNoMmMwLTMuMjItMS43OC01LTUtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQaG9uZUluY29taW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MTIgMTMuMjg4YS45OTkuOTk5IDAgMCAwLTEuNDE0IDBsLTEuNTk3IDEuNTk2Yy0uODI0LS4yNDUtMi4xNjYtLjc3MS0yLjk5LTEuNTk2LS44NzQtLjg3NC0xLjM3NC0yLjI1My0xLjU5NC0yLjk5MmwxLjU5NC0xLjU5NGEuOTk5Ljk5OSAwIDAgMCAwLTEuNDE0bC00LTRhMS4wMyAxLjAzIDAgMCAwLTEuNDE0IDBsLTIuNzA5IDIuNzFjLS4zODIuMzgtLjU5Ny45MDQtLjU4OCAxLjQzNy4wMjIgMS40MjMuMzk2IDYuMzY3IDQuMjk3IDEwLjI2OEMxMC4xOTUgMjEuNiAxNS4xNDIgMjEuOTc3IDE2LjU2NiAyMmguMDI4Yy41MjggMCAxLjAyNy0uMjA4IDEuNDA1LS41ODZsMi43MTItMi43MTJhLjk5OS45OTkgMCAwIDAgMC0xLjQxNGwtMy45OTktNHpNMTYuNTg1IDIwYy0xLjI0OC0uMDIxLTUuNTE4LS4zNTYtOC44NzQtMy43MTJDNC4zNDMgMTIuOTIgNC4wMTkgOC42MzYgNCA3LjQxNGwyLjAwNC0yLjAwNUw4LjU5IDcuOTk1IDcuMjk3IDkuMjg4Yy0uMjM4LjIzOC0uMzQuNTgyLS4yNzEuOTEyLjAyNC4xMTUuNjExIDIuODQyIDIuMjcxIDQuNTAyczQuMzg3IDIuMjQ3IDQuNTAyIDIuMjcxYS45OTQuOTk0IDAgMCAwIC45MTItLjI3MWwxLjI5My0xLjI5MyAyLjU4NiAyLjU4NkwxNi41ODUgMjB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzk1IDYuNzkxIDEzLjAwNSA0djYuOTk1SDIwbC0yLjc5MS0yLjc5IDQuNTAzLTQuNTAzLTEuNDE0LTEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBob25lT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wOSAxMi41YTguOTIgOC45MiAwIDAgMS0xLTIuMmwxLjU5LTEuNTlhMSAxIDAgMCAwIDAtMS40MmwtNC00YTEgMSAwIDAgMC0xLjQxIDBMMi41OSA2QTIgMiAwIDAgMCAyIDcuNDQgMTUuNDQgMTUuNDQgMCAwIDAgNS42MiAxN0wyLjMgMjAuMjlsMS40MSAxLjQyIDE4LTE4LTEuNDEtMS40MnpNNyAxNS41NWExMy4zNiAxMy4zNiAwIDAgMS0zLTguMTNsMi0yTDguNTkgOCA3LjMgOS4yOWExIDEgMCAwIDAtLjI3LjkyIDExIDExIDAgMCAwIDEuNjIgMy43M3ptOS43MS0yLjI2YTEgMSAwIDAgMC0xLjQxIDBsLTEuNiAxLjYtLjM0LS4xMi0xLjU2IDEuNTVhMTIuMDYgMTIuMDYgMCAwIDAgMiAuNjYgMSAxIDAgMCAwIC45MS0uMjdsMS4zLTEuM0wxOC41OSAxOGwtMiAyQTEzLjYxIDEzLjYxIDAgMCAxIDEwIDE4LjFsLTEuNDMgMS40NWExNS42MyAxNS42MyAwIDAgMCA4IDIuNDUgMiAyIDAgMCAwIDEuNDMtLjU4bDIuNzEtMi43MWExIDEgMCAwIDAgMC0xLjQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBob25lT3V0Z29pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2LjcxMiAxMy4yODhhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtMS41OTQgMS41OTRjLS43MzktLjIyLTIuMTE4LS43Mi0yLjk5Mi0xLjU5NHMtMS4zNzQtMi4yNTMtMS41OTQtMi45OTJsMS41OTQtMS41OTRhLjk5OS45OTkgMCAwIDAgMC0xLjQxNGwtNC00YS45OTkuOTk5IDAgMCAwLTEuNDE0IDBMMi41ODYgNmMtLjM4LjM4LS41OTQuOTAyLS41ODYgMS40MzUuMDIzIDEuNDI0LjQgNi4zNyA0LjI5OCAxMC4yNjhTMTUuMTQyIDIxLjk3NyAxNi41NjYgMjJoLjAyOGMuNTI4IDAgMS4wMjctLjIwOCAxLjQwNS0uNTg2bDIuNzEyLTIuNzEyYS45OTkuOTk5IDAgMCAwIDAtMS40MTRsLTMuOTk5LTR6TTE2LjU4NSAyMGMtMS4yNDgtLjAyMS01LjUxOC0uMzU2LTguODczLTMuNzEyQzQuMzQ2IDEyLjkyMiA0LjAyIDguNjM3IDQgNy40MTRsMi4wMDUtMi4wMDUgMi41ODYgMi41ODYtMS4yOTMgMS4yOTNhMSAxIDAgMCAwLS4yNzIuOTEyYy4wMjQuMTE1LjYxMSAyLjg0MiAyLjI3MSA0LjUwMnM0LjM4NyAyLjI0NyA0LjUwMiAyLjI3MWEuOTkzLjk5MyAwIDAgMCAuOTEyLS4yNzFsMS4yOTMtMS4yOTMgMi41ODYgMi41ODZMMTYuNTg1IDIwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE2Ljc5NSA1Ljc5MS00LjQ5NyA0LjQ5NyAxLjQxNCAxLjQxNCA0LjQ5Ny00LjQ5N0wyMS4wMDUgMTBWMi45OTVIMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjcwNyAxMi4yOTNhLjk5OS45OTkgMCAwIDAtMS40MTQgMGwtMS41OTQgMS41OTRjLS43MzktLjIyLTIuMTE4LS43Mi0yLjk5Mi0xLjU5NHMtMS4zNzQtMi4yNTMtMS41OTQtMi45OTJsMS41OTQtMS41OTRhLjk5OS45OTkgMCAwIDAgMC0xLjQxNGwtNC00YS45OTkuOTk5IDAgMCAwLTEuNDE0IDBMMy41ODEgNS4wMDVjLS4zOC4zOC0uNTk0LjkwMi0uNTg2IDEuNDM1LjAyMyAxLjQyNC40IDYuMzcgNC4yOTggMTAuMjY4czguODQ0IDQuMjc0IDEwLjI2OSA0LjI5OGguMDI4Yy41MjggMCAxLjAyNy0uMjA4IDEuNDA1LS41ODZsMi43MTItMi43MTJhLjk5OS45OTkgMCAwIDAgMC0xLjQxNGwtNC00LjAwMXptLS4xMjcgNi43MTJjLTEuMjQ4LS4wMjEtNS41MTgtLjM1Ni04Ljg3My0zLjcxMi0zLjM2Ni0zLjM2Ni0zLjY5Mi03LjY1MS0zLjcxMi04Ljg3NEw3IDQuNDE0IDkuNTg2IDcgOC4yOTMgOC4yOTNhMSAxIDAgMCAwLS4yNzIuOTEyYy4wMjQuMTE1LjYxMSAyLjg0MiAyLjI3MSA0LjUwMnM0LjM4NyAyLjI0NyA0LjUwMiAyLjI3MWEuOTkxLjk5MSAwIDAgMCAuOTEyLS4yNzFMMTcgMTQuNDE0IDE5LjU4NiAxN2wtMi4wMDYgMi4wMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGhvdG9BbGJ1bSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDI0IDExLjUzNiAxMCAxMGwtMiAzaDlsLTMuNS01elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOS41MDNcIixcImN5XCI6XCI3LjQ5N1wiLFwiclwiOlwiMS41MDNcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAySDZjLTEuMjA2IDAtMyAuNzk5LTMgM3YxNGMwIDIuMjAxIDEuNzk0IDMgMyAzaDE1di0ySDYuMDEyQzUuNTUgMTkuOTg4IDUgMTkuODA2IDUgMTlzLjU1LS45ODggMS4wMTItMUgyMVY0YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNEg1VjVjMC0uODA2LjU1LS45ODggMS0xaDEzdjEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBpZUNoYXJ0QWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem03LjkzMSA5SDEzVjQuMDY5QTguMDA4IDguMDA4IDAgMCAxIDE5LjkzMSAxMXpNNCAxMmMwLTQuMDcyIDMuMDYxLTcuNDM2IDctNy45MzFWMTJhLjk5Ni45OTYgMCAwIDAgLjExMS40MzhjLjAxNS4wMy4wMjIuMDYzLjA0MS4wOTNsNC4yMDIgNi43MjNBNy45NDkgNy45NDkgMCAwIDEgMTIgMjBjLTQuNDExIDAtOC0zLjU4OS04LTh6bTEzLjA1MiA2LjE5NkwxMy44MDUgMTNoNi4xMjZhNy45OTIgNy45OTIgMCAwIDEtMi44NzkgNS4xOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGllQ2hhcnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJhOS45MzYgOS45MzYgMCAwIDAtNy4wNzEgMi45MjlDMy4wNCA2LjgxOCAyIDkuMzMgMiAxMnMxLjA0IDUuMTgyIDIuOTI5IDcuMDcxQzYuODE4IDIwLjk2IDkuMzMgMjIgMTIgMjJzNS4xODItMS4wNCA3LjA3MS0yLjkyOUMyMC45NiAxNy4xODIgMjIgMTQuNjcgMjIgMTJzLTEuMDQtNS4xODItMi45MjktNy4wNzFBOS45MzYgOS45MzYgMCAwIDAgMTIgMnptNS42NTcgMTUuNjU3QzE2LjE0NiAxOS4xNjggMTQuMTM3IDIwIDEyIDIwcy00LjE0Ni0uODMyLTUuNjU3LTIuMzQzQzQuODMyIDE2LjE0NiA0IDE0LjEzNyA0IDEycy44MzItNC4xNDYgMi4zNDMtNS42NTdBNy45MjcgNy45MjcgMCAwIDEgMTEgNC4wNjlWMTJhMSAxIDAgMCAwIDEgMWg3LjkzMWE3LjkyNyA3LjkyNyAwIDAgMS0yLjI3NCA0LjY1N3pNMTMgMTFWNC4wNjJhNy45NDUgNy45NDUgMCAwIDEgNC42NTcgMi4yODFBNy45MzQgNy45MzQgMCAwIDEgMTkuOTM4IDExSDEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBpZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNS4xNjZWMTJoNi44MzRBNi44MTcgNi44MTcgMCAwIDAgMTIgNS4xNjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMiAyMiAxLTJ2LTNoNWExIDEgMCAwIDAgMS0xdi0xLjU4NmMwLS41MjYtLjIxNC0xLjA0Mi0uNTg2LTEuNDE0TDE3IDExLjU4NlY4YTEgMSAwIDAgMCAxLTFWNGMwLTEuMTAzLS44OTctMi0yLTJIOGMtMS4xMDMgMC0yIC44OTctMiAydjNhMSAxIDAgMCAwIDEgMXYzLjU4Nkw1LjU4NiAxM0EyLjAxIDIuMDEgMCAwIDAgNSAxNC40MTRWMTZhMSAxIDAgMCAwIDEgMWg1djNsMSAyek04IDRoOHYySDhWNHpNNyAxNC40MTRsMS43MDctMS43MDdBLjk5Ni45OTYgMCAwIDAgOSAxMlY4aDZ2NGMwIC4yNjYuMTA1LjUyLjI5My43MDdMMTcgMTQuNDE0VjE1SDd2LS41ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGxhbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjc2IDIwLjJhMi43MyAyLjczIDAgMCAwIDIuMTUuODUgOC44NiA4Ljg2IDAgMCAwIDMuMzctLjg2IDkgOSAwIDAgMCAxMi4yNy0xMC45YzEuMzEtMi4yMyAxLjc1LTQuMjYuNjctNS40OGEyLjk0IDIuOTQgMCAwIDAtMi41Ny0xQTUgNSAwIDAgMCAxNi4xIDQgOSA5IDAgMCAwIDMuNTggMTUuMTRjLTEuMDYgMS4yMS0yLjA1IDMuNjgtLjgyIDUuMDZ6bTEuNS0xLjMyYy0uMjItLjI1IDAtMS4wNy4zNy0xLjc2YTkuMjYgOS4yNiAwIDAgMCAxLjU3IDEuNzRjLTEuMDMuMy0xLjcxLjI4LTEuOTQuMDJ6bTE0LjUxLTUuMTdBNyA3IDAgMCAxIDE1LjU4IDE4IDcuMTIgNy4xMiAwIDAgMSAxMiAxOWE2LjQ0IDYuNDQgMCAwIDEtMS4yNC0uMTMgMzAuNzMgMzAuNzMgMCAwIDAgNC40Mi0zLjI5IDMxLjUgMzEuNSAwIDAgMCAzLjgtNCA2Ljg4IDYuODggMCAwIDEtLjIxIDIuMTN6bS4wOS04Ljg5YS45NC45NCAwIDAgMSAuODcuMzJjLjIzLjI2LjE2Ljk0LS4yNiAxLjkzYTkuMiA5LjIgMCAwIDAtMS42MS0xLjg2IDIuNDggMi40OCAwIDAgMSAxLS4zOXpNNS4yMiAxMC4zMUE2Ljk0IDYuOTQgMCAwIDEgOC40MSA2IDcgNyAwIDAgMSAxMiA1YTYuOSA2LjkgMCAwIDEgNiAzLjQxIDUuMTkgNS4xOSAwIDAgMSAuMzUuNjYgMjcuNDMgMjcuNDMgMCAwIDEtNC40OSA1QTI3LjM1IDI3LjM1IDAgMCAxIDguMzUgMThhNyA3IDAgMCAxLTMuMTMtNy42NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQbGF5Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOSAxNyA4LTUtOC01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNnYxMmwxMC02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBsdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOGgydjVjMCAyLjIwNiAxLjc5NCA0IDQgNGgydjVoMnYtNWgyYzIuMjA2IDAgNC0xLjc5NCA0LTRWOGgyVjZIM3Yyem00IDBoMTB2NWMwIDEuMTAzLS44OTcgMi0yIDJIOWMtMS4xMDMgMC0yLS44OTctMi0yVjh6bTAtNmgydjNIN3ptOCAwaDJ2M2gtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQbHVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBsdXNNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAyLjAxM0g5VjlIMnY2aDd2Ni45ODdoNlYxNWg3VjloLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTFoLTZWNWgtMnY2SDV2Mmg2djZoMnYtNmg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVBvZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTIuMDFcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjAxIDIyaDJsLjUtN2gtM2wuNSA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJhMTAgMTAgMCAwIDAtMi40NSAxOS42OGwtLjE1LTIuMTJhOCA4IDAgMSAxIDUuMjEgMGwtLjE1IDIuMTJBMTAgMTAgMCAwIDAgMTIgMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zMiA5LjYxYTMuNDQgMy40NCAwIDAgMSAuMzcuNjggMy44MyAzLjgzIDAgMCAxIC4yMy43NSAzLjU3IDMuNTcgMCAwIDEgLjA5LjggMy42NiAzLjY2IDAgMCAxLS4wOS44MSAzLjgzIDMuODMgMCAwIDEtLjIzLjc1IDMuNDQgMy40NCAwIDAgMS0uMzcuNjggNC43IDQuNyAwIDAgMS0uMzUuNDNsLS4xOSAyLjYyYTUuMzMgNS4zMyAwIDAgMCAuNTgtLjMxQTUuODYgNS44NiAwIDAgMCAxNyAxNS4yYTUuNTcgNS41NyAwIDAgMCAuNTUtMSA1Ljg5IDUuODkgMCAwIDAgLjM1LTEuMTMgNi4wNiA2LjA2IDAgMCAwIC4xLTEuMjMgNi4yMiA2LjIyIDAgMCAwLS4xMy0xLjIxQTYuMDkgNi4wOSAwIDAgMCAxNyA4LjQ5YTYuMjkgNi4yOSAwIDAgMC0uNzMtLjg5IDUuNjcgNS42NyAwIDAgMC0uODktLjczIDYuMyA2LjMgMCAwIDAtMS0uNTZBNi4xNyA2LjE3IDAgMCAwIDEzLjIxIDZhNi4xMSA2LjExIDAgMCAwLTIuNDEgMCA1LjUxIDUuNTEgMCAwIDAtMS4xMy4zNiA1LjU3IDUuNTcgMCAwIDAtMSAuNTUgNS42NyA1LjY3IDAgMCAwLS44OS43MyA2LjI5IDYuMjkgMCAwIDAtLjc4Ljg1IDYuMDkgNi4wOSAwIDAgMC0uOSAyLjE0IDYuMjEgNi4yMSAwIDAgMC0uMSAxLjIxIDYuMDYgNi4wNiAwIDAgMCAuMTIgMS4yMSA1Ljg5IDUuODkgMCAwIDAgLjM1IDEuMTMgNS41NyA1LjU3IDAgMCAwIC41NSAxIDYuMjQgNi4yNCAwIDAgMCAxLjYyIDEuNjIgNS4zMyA1LjMzIDAgMCAwIC41OC4zMUw5IDE0LjUxYTQuNyA0LjcgMCAwIDEtLjM1LS40MyAzLjQ0IDMuNDQgMCAwIDEtLjM3LS42OCAzLjgzIDMuODMgMCAwIDEtLjIzLS43NSAzLjY1IDMuNjUgMCAwIDEtLjA1LS44MSAzLjU2IDMuNTYgMCAwIDEgLjA4LS44IDMuODMgMy44MyAwIDAgMSAuMjMtLjc1IDMuNDQgMy40NCAwIDAgMSAuMzctLjY4IDQgNCAwIDAgMSAuNS0uNjEgMy44NyAzLjg3IDAgMCAxIC41OS0uNDggMy40NCAzLjQ0IDAgMCAxIC42OC0uMzcgMy44NiAzLjg2IDAgMCAxIC43NS0uMjQgNC4zNiA0LjM2IDAgMCAxIDEuNjEgMCAzLjg2IDMuODYgMCAwIDEgLjc1LjI0IDMuNTggMy41OCAwIDAgMSAxLjI3Ljg1IDMuNDkgMy40OSAwIDAgMSAuNDkuNjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTc4IDEzLjIxYTEgMSAwIDAgMC0uMzk2LTEuMDI0bC0xNC0xMGEuOTk5Ljk5OSAwIDAgMC0xLjU3NS45MzFsMiAxN2ExIDEgMCAwIDAgMS43NjcuNTE2bDMuNjEyLTQuNDE2IDMuMzc3IDUuNDYgMS43MDEtMS4wNTItMy4zNTctNS40MjggNi4wODktMS4yMThhLjk5NS45OTUgMCAwIDAgLjc4Mi0uNzY5em0tOC42NzQuMzFhMSAxIDAgMCAwLS41NzguMzQ3bC0zLjAwOCAzLjY3N0w3LjI1NyA1LjEyN2wxMC4yODMgNy4zNDUtNS4yMzYgMS4wNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMWg3djJIN3ptMC00aDEwLjk3djJIN3ptMCA4aDEzdjJIN3pNNCA0aDJ2MTZINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQb2x5Z29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi43MDcgMi4yOTNBLjk5Ni45OTYgMCAwIDAgMTYgMkg4YS45OTYuOTk2IDAgMCAwLS43MDcuMjkzbC01IDVBLjk5Ni45OTYgMCAwIDAgMiA4djhjMCAuMjY2LjEwNS41Mi4yOTMuNzA3bDUgNUEuOTk2Ljk5NiAwIDAgMCA4IDIyaDhjLjI2NiAwIC41Mi0uMTA1LjcwNy0uMjkzbDUtNUEuOTk2Ljk5NiAwIDAgMCAyMiAxNlY4YS45OTYuOTk2IDAgMCAwLS4yOTMtLjcwN2wtNS01ek0yMCAxNS41ODYgMTUuNTg2IDIwSDguNDE0TDQgMTUuNTg2VjguNDE0TDguNDE0IDRoNy4xNzJMMjAgOC40MTR2Ny4xNzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUG91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTUuNTUzIDE5LjEwNS43NjQgMS44NDNDNy40OTggMjAuNTU1IDkuNDIyIDIwIDEwIDIwYy44MzggMCAxLjQ2Mi4yMDggMi4xODQuNDQ4Ljc3NS4yNTkgMS42NTQuNTUyIDIuODE2LjU1MiAxLjE3NyAwIDMuMDc4LS45MjEgMy40NDctMS4xMDVsLS44OTUtMS43ODljLS43MjEuMzYtMi4wMzEuODk0LTIuNTUyLjg5NC0uODM4IDAtMS40NjItLjIwOC0yLjE4NC0uNDQ4QzEyLjA0MSAxOC4yOTMgMTEuMTYyIDE4IDEwIDE4Yy0uMjI5IDAtLjUyNi4wMzctLjg1Ny4wOTlDOS43MDIgMTYuOTUgMTAgMTUuNTYxIDEwIDE0aDN2LTJIOS42MjZjLS4wNDItLjEwNy0uMDg0LS4yMTYtLjEyNS0uMzE3QzkuMjQzIDExLjA1MiA5IDEwLjQ1NSA5IDljMC0xLjM2OS41MjEtMyAzLTMgMi4yMjQgMCAzLjAyMSAyLjIyNyAzLjA1MiAyLjMxNmwxLjg5Ni0uNjMzQzE2Ljg5OCA3LjUzMyAxNS42NzkgNCAxMiA0IDguMzEzIDQgNyA2LjU4MyA3IDljMCAxLjQ5MS4yMzQgMi4zNS40NzggM0g1djJoM2MwIDIuNDY3LS44OTIgNC4zMjgtMi40NDcgNS4xMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIxYzQuNDExIDAgOC0zLjU4OSA4LTggMC0zLjM1LTIuMDcyLTYuMjIxLTUtNy40MTF2Mi4yMjNBNiA2IDAgMCAxIDE4IDEzYzAgMy4zMDktMi42OTEgNi02IDZzLTYtMi42OTEtNi02YTUuOTk5IDUuOTk5IDAgMCAxIDMtNS4xODhWNS41ODlDNi4wNzIgNi43NzkgNCA5LjY1IDQgMTNjMCA0LjQxMSAzLjU4OSA4IDggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaDJ2MTBoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2gtMVYySDZ2NUg1Yy0xLjY1NCAwLTMgMS4zNDYtMyAzdjdjMCAxLjEwMy44OTcgMiAyIDJoMnYzaDEydi0zaDJjMS4xMDMgMCAyLS44OTcgMi0ydi03YzAtMS42NTQtMS4zNDYtMy0zLTN6TTggNGg4djNIOFY0em04IDE2SDh2LTRoOHY0em00LTNoLTJ2LTNINnYzSDR2LTdjMC0uNTUxLjQ0OS0xIDEtMWgxNGMuNTUyIDAgMSAuNDQ5IDEgMXY3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEwaDR2MmgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQdWxzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuOTcgNC43NTdhLjk5OS45OTkgMCAwIDAtMS45MTgtLjA3M2wtMy4xODYgOS41NTQtMi45NTItNi42NDRhMS4wMDIgMS4wMDIgMCAwIDAtMS44NDMuMDM0TDUuMzIzIDEySDJ2MmgzLjMyM2MuODIzIDAgMS41NTItLjQ5NCAxLjg1Ni0xLjI1N2wuODY5LTIuMTcyIDMuMDM3IDYuODM1Yy4xNjIuMzYzLjUyMS41OTQuOTE1LjU5NGwuMDQ4LS4wMDFhLjk5OC45OTggMCAwIDAgLjktLjY4M2wyLjkxNC04Ljc0Mi45NzkgMy45MTFBMS45OTUgMS45OTUgMCAwIDAgMTguNzgxIDE0SDIydi0yaC0zLjIybC0xLjgxLTcuMjQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVB1cmNoYXNlVGFnQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS43MDcgMi4yOTNBLjk5Ny45OTcgMCAwIDAgMTEgMkg2YS45OTcuOTk3IDAgMCAwLS43MDcuMjkzbC0zIDNBLjk5Ni45OTYgMCAwIDAgMiA2djVjMCAuMjY2LjEwNS41Mi4yOTMuNzA3bDEwIDEwYS45OTcuOTk3IDAgMCAwIDEuNDE0IDBsOC04YS45OTkuOTk5IDAgMCAwIDAtMS40MTRsLTEwLTEwek0xMyAxOS41ODZsLTktOVY2LjQxNEw2LjQxNCA0aDQuMTcybDkgOUwxMyAxOS41ODZ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjM1M1wiLFwiY3lcIjpcIjguMzUzXCIsXCJyXCI6XCIxLjY0N1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVB1cmNoYXNlVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy43MDcgMy4yOTNBLjk5Ni45OTYgMCAwIDAgMTMgM0g0YTEgMSAwIDAgMC0xIDF2OWMwIC4yNjYuMTA1LjUyLjI5My43MDdsOCA4YS45OTcuOTk3IDAgMCAwIDEuNDE0IDBsOS05YS45OTkuOTk5IDAgMCAwIDAtMS40MTRsLTgtOHpNMTIgMTkuNTg2bC03LTdWNWg3LjU4Nmw3IDdMMTIgMTkuNTg2elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC40OTZcIixcImN5XCI6XCI4LjQ5NVwiLFwiclwiOlwiMS41MDVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlQeXJhbWlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40NDUgMjEuODMyYTEgMSAwIDAgMCAxLjExIDBsOS02QS45OTguOTk4IDAgMCAwIDIxLjggMTQuNGwtOS0xMmMtLjM3Ny0uNTA0LTEuMjIzLS41MDQtMS42IDBsLTkgMTJhMSAxIDAgMCAwIC4yNDUgMS40MzJsOSA2ek0xMyAxOS4xMzFWNmw2LjU2NSA4Ljc1NEwxMyAxOS4xMzF6TTExIDZ2MTMuMTMxbC02LjU2NS00LjM3N0wxMSA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVFyU2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0aDQuMDFWMkgydjZoMlY0em0wIDEySDJ2Nmg2LjAxdi0ySDR2LTR6bTE2IDRoLTR2Mmg2di02aC0ydjR6TTE2IDRoNHY0aDJWMmgtNnYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTFoNlY1SDV6bTItNGgydjJIN3pNNSAxOWg2di02SDV6bTItNGgydjJIN3pNMTkgNWgtNnY2aDZ6bS0yIDRoLTJWN2gyem0tMy45OSA0aDJ2MmgtMnptMiAyaDJ2MmgtMnptMiAyaDJ2MmgtMnptMC00aDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlRciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMWg4VjNIM3ptMi02aDR2NEg1ek0zIDIxaDh2LThIM3ptMi02aDR2NEg1em04LTEydjhoOFYzem02IDZoLTRWNWg0em0tNS45OSA0aDJ2MmgtMnptMiAyaDJ2MmgtMnptLTIgMmgydjJoLTJ6bTQgMGgydjJoLTJ6bTIgMmgydjJoLTJ6bS00IDBoMnYyaC0yem0yLTZoMnYyaC0yem0yIDJoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVF1ZXN0aW9uTWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM5LjI0MyA0IDcgNi4yNDMgNyA5aDJjMC0xLjY1NCAxLjM0Ni0zIDMtM3MzIDEuMzQ2IDMgM2MwIDEuMDY5LS40NTQgMS40NjUtMS40ODEgMi4yNTUtLjM4Mi4yOTQtLjgxMy42MjYtMS4yMjYgMS4wMzhDMTAuOTgxIDEzLjYwNCAxMC45OTUgMTQuODk3IDExIDE1djJoMnYtMi4wMDljMC0uMDI0LjAyMy0uNjAxLjcwNy0xLjI4NC4zMi0uMzIuNjgyLS41OTggMS4wMzEtLjg2N0MxNS43OTggMTIuMDI0IDE3IDExLjEgMTcgOWMwLTIuNzU3LTIuMjQzLTUtNS01em0tMSAxNGgydjJoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmFkYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi41NzkgMiAyIDYuNTggMiAxMnM0LjU3OSAxMCAxMCAxMCAxMC00LjU4IDEwLTEwUzE3LjQyMSAyIDEyIDJ6bTAgMThjLTQuMzM3IDAtOC0zLjY2NC04LTggMC0zLjk5OCAzLjExNS03LjQxNyA3LTcuOTI3VjYuMDlDOC4xNjcgNi41NjkgNiA5LjAzMyA2IDEyYzAgMy4zMDkgMi42OTEgNiA2IDYgMS41OTUgMCAzLjEtLjYyNiA0LjIzNy0xLjc2M2wtMS40MTQtMS40MTVBMy45NyAzLjk3IDAgMCAxIDEyIDE2Yy0yLjIwNiAwLTQtMS43OTQtNC00IDAtMS44NTggMS4yNzktMy40MTEgMy0zLjg1OHYyLjE0NmMtLjU5LjM1My0xIC45OTMtMSAxLjcxMiAwIDEuMDgxLjkxOSAyIDIgMnMyLS45MTkgMi0yYzAtLjcxOS0uNDEtMS4zNTktMS0xLjcxMlY0LjA3M2MzLjg4NS41MSA3IDMuOTI5IDcgNy45MjcgMCA0LjMzNi0zLjY2MyA4LTggOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSYWRpb0NpcmNsZU1hcmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNWMtMy44NTkgMC03IDMuMTQxLTcgN3MzLjE0MSA3IDcgNyA3LTMuMTQxIDctNy0zLjE0MS03LTctN3ptMCAxMmMtMi43NTcgMC01LTIuMjQzLTUtNXMyLjI0My01IDUtNSA1IDIuMjQzIDUgNS0yLjI0MyA1LTUgNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA5Yy0xLjYyNyAwLTMgMS4zNzMtMyAzczEuMzczIDMgMyAzIDMtMS4zNzMgMy0zLTEuMzczLTMtMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJhZGlvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyYzAgMy44NTkgMy4xNCA3IDcgNyAzLjg1OSAwIDctMy4xNDEgNy03cy0zLjE0MS03LTctN2MtMy44NiAwLTcgMy4xNDEtNyA3em0xMiAwYzAgMi43NTctMi4yNDMgNS01IDVzLTUtMi4yNDMtNS01IDIuMjQzLTUgNS01IDUgMi4yNDMgNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJhZGlvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMC4yNSA1LjAyNS03Ljg5OC0yLjk2Mi0uNzAzIDEuODczTDE0LjQ4NCA1SDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWN2MwLTEuMDE4LS43NjctMS44NS0xLjc1LTEuOTc1ek00IDE5di03aDE2di0ySDRWN2gxNmwuMDAxIDEySDR6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNi41XCIsXCJjeVwiOlwiMTUuNVwiLFwiclwiOlwiMi41XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxNWg0Ljk5OXYySDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEgMTFoLTNWNGExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxNGMwIDEuNjU0IDEuMzQ2IDMgMyAzaDE0YzEuNjU0IDAgMy0xLjM0NiAzLTN2LTZhMSAxIDAgMCAwLTEtMXpNNSAxOWExIDEgMCAwIDEtMS0xVjVoMTJ2MTNjMCAuMzUxLjA2MS42ODguMTcxIDFINXptMTUtMWExIDEgMCAwIDEtMiAwdi01aDJ2NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDdoOHYySDZ6bTAgNGg4djJINnptNSA0aDN2MmgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZWN0YW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOVY1aDE2bC4wMDEgMTRINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS4yMjQgMTUuNTQzLS44MTMtMS40NjQtMS43NDguOTcyLjgxMiAxLjQ2MWMuMDQ4LjA4NS4wODIuMTczLjEwNC4yNjRhMS4wMjQgMS4wMjQgMCAwIDEtLjAxNC41Ljk4OC45ODggMCAwIDEtLjEwNC4yMzUgMSAxIDAgMCAxLS4zNDcuMzUyLjk3OC45NzggMCAwIDEtLjUxMy4xMzdIMTR2LTJsLTQgMyA0IDN2LTJoNC42MDFjLjI3OCAwIC41NTItLjAzNy44MTEtLjEwOWEyLjk0OCAyLjk0OCAwIDAgMCAxLjMxOS0uNzc2Yy4xNzgtLjE3OS4zMzItLjM4LjQ1Ni0uNTkzYTIuOTkyIDIuOTkyIDAgMCAwIC4zMzYtMi4yMTUgMy4xNjMgMy4xNjMgMCAwIDAtLjI5OS0uNzY0ek01Ljg2MiAxMS4wMzlsLTIuMzEgNC42MmEzLjA2IDMuMDYgMCAwIDAtLjI2MS43NTUgMi45OTcgMi45OTcgMCAwIDAgLjg1MSAyLjczNWMuMTc4LjE3NC4zNzYuMzI2LjU5NS40NTNBMy4wMjIgMy4wMjIgMCAwIDAgNi4yMzYgMjBIOHYtMkg2LjIzNmExLjAxNiAxLjAxNiAwIDAgMS0uNS0uMTMuOTc0Ljk3NCAwIDAgMS0uMzUzLS4zNDkgMSAxIDAgMCAxLS4xNDktLjQ2OC45MzMuOTMzIDAgMCAxIC4wMTgtLjI0NWMuMDE4LS4wODcuMDQ4LS4xNzMuMDg5LS4yNTZsMi4yNTYtNC41MTIgMS41OTkuOTIzTDguNTk4IDggNCA5Ljk2NGwxLjg2MiAxLjA3NXptMTIuNzM2IDEuOTI1TDE5LjE5NiA4bC0xLjYzOC45NDUtMi44NDMtNS4xMTdhMi45NSAyLjk1IDAgMCAwLTEuOTEzLTEuNDU5IDMuMjI3IDMuMjI3IDAgMCAwLS43NzItLjA4MyAzLjAwMyAzLjAwMyAwIDAgMC0xLjQ5OC40MzNBMi45NjcgMi45NjcgMCAwIDAgOS40MSAzLjk0NGwtLjczMiAxLjQ2NCAxLjc4OS44OTUuNzMyLTEuNDY1Yy4wNDUtLjA5LjEwMS0uMTcxLjE2Ni0uMjQyYS45MzMuOTMzIDAgMCAxIC40NDMtLjI3IDEuMDUzIDEuMDUzIDAgMCAxIC41My0uMDExLjk2My45NjMgMCAwIDEgLjYzLjQ4NWwyLjg1OCA1LjE0NkwxNCAxMWw0LjU5OCAxLjk2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDE4aDN2LTJIOWMtMS42NTQgMC0zLTEuMzQ2LTMtM3MxLjM0Ni0zIDMtM2g2djNsNS00LTUtNHYzSDljLTIuNzU3IDAtNSAyLjI0My01IDVzMi4yNDMgNSA1IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmVmcmVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTFINy4xMDFsLjAwMS0uMDA5YTQuOTU2IDQuOTU2IDAgMCAxIC43NTItMS43ODcgNS4wNTQgNS4wNTQgMCAwIDEgMi4yLTEuODExYy4zMDItLjEyOC42MTctLjIyNi45MzgtLjI5MWE1LjA3OCA1LjA3OCAwIDAgMSAyLjAxOCAwIDQuOTc4IDQuOTc4IDAgMCAxIDIuNTI1IDEuMzYxbDEuNDE2LTEuNDEyYTcuMDM2IDcuMDM2IDAgMCAwLTIuMjI0LTEuNTAxIDYuOTIxIDYuOTIxIDAgMCAwLTEuMzE1LS40MDggNy4wNzkgNy4wNzkgMCAwIDAtMi44MTkgMCA2Ljk0IDYuOTQgMCAwIDAtMS4zMTYuNDA5IDcuMDQgNy4wNCAwIDAgMC0zLjA4IDIuNTM0IDYuOTc4IDYuOTc4IDAgMCAwLTEuMDU0IDIuNTA1Yy0uMDI4LjEzNS0uMDQzLjI3My0uMDYzLjQxSDJsNCA0IDQtNHptNCAyaDIuODk5bC0uMDAxLjAwOGE0Ljk3NiA0Ljk3NiAwIDAgMS0yLjEwMyAzLjEzOCA0Ljk0MyA0Ljk0MyAwIDAgMS0xLjc4Ny43NTIgNS4wNzMgNS4wNzMgMCAwIDEtMi4wMTcgMCA0Ljk1NiA0Ljk1NiAwIDAgMS0xLjc4Ny0uNzUyIDUuMDcyIDUuMDcyIDAgMCAxLS43NC0uNjFMNy4wNSAxNi45NWE3LjAzMiA3LjAzMiAwIDAgMCAyLjIyNSAxLjVjLjQyNC4xOC44NjcuMzE3IDEuMzE1LjQwOGE3LjA3IDcuMDcgMCAwIDAgMi44MTggMCA3LjAzMSA3LjAzMSAwIDAgMCA0LjM5NS0yLjk0NSA2Ljk3NCA2Ljk3NCAwIDAgMCAxLjA1My0yLjUwM2MuMDI3LS4xMzUuMDQzLS4yNzMuMDYzLS40MUgyMmwtNC00LTQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xNCAyYTEwIDEwIDAgMSAwIDEwIDEwIDEwIDEwIDAgMCAwLTEwLTEwem0wIDE4YTggOCAwIDEgMSA4LTggOCA4IDAgMCAxLTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4xNCAxMGEzIDMgMCAwIDAtMy0zaC01djEwaDJ2LTRoMS40NmwyLjY3IDRoMi40bC0yLjc1LTQuMTJBMyAzIDAgMCAwIDE2LjE0IDEwem0tMyAxaC0zVjloM2ExIDEgMCAwIDEgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJlbmFtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMDA1IDUuOTk1aC0xdjJoMXY4aC0xdjJoMWMxLjEwMyAwIDItLjg5NyAyLTJ2LThjMC0xLjEwMi0uODk4LTItMi0yem0tMTQgNEgxNXY0SDYuMDA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjAwNSAxNy45OTVWNEgyMFYyaC04djJoMy4wMDV2MS45OTVoLTExYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2OGMwIDEuMTAzLjg5NyAyIDIgMmgxMVYyMEgxMnYyaDh2LTJoLTIuOTk1di0yLjAwNXptLTEzLTJ2LThoMTF2OGgtMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmVwZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2aC01djJoNHY5SDRWOGg1djNsNS00LTUtNHYzSDNhMSAxIDAgMCAwLTEgMXYxMWExIDEgMCAwIDAgMSAxaDE4YTEgMSAwIDAgMCAxLTFWN2ExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxOHYtOGExIDEgMCAwIDAtMS0xaC02VjZsLTUgNCA1IDR2LTNoNXY3aDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMi40IDYgMTBsMy0yLjRWNmwtNSA0IDUgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZXBseSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTFoNnY3aDJ2LThhMSAxIDAgMCAwLTEtMWgtN1Y2bC01IDQgNSA0di0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJlcG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgN2ExIDEgMCAwIDAtMS0xaC04djJoN3Y1aC0zbDMuOTY5IDVMMjIgMTNoLTNWN3pNNSAxN2ExIDEgMCAwIDAgMSAxaDh2LTJIN3YtNWgzTDYgNmwtNCA1aDN2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZXNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTZjMS42NzEgMCAzLTEuMzMxIDMtM3MtMS4zMjktMy0zLTMtMyAxLjMzMS0zIDMgMS4zMjkgMyAzIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODE3IDExLjE4NmE4Ljk0IDguOTQgMCAwIDAtMS4zNTUtMy4yMTkgOS4wNTMgOS4wNTMgMCAwIDAtMi40My0yLjQzIDguOTUgOC45NSAwIDAgMC0zLjIxOS0xLjM1NSA5LjAyOCA5LjAyOCAwIDAgMC0xLjgzOC0uMThWMkw4IDVsMy45NzUgM1Y2LjAwMmMuNDg0LS4wMDIuOTY4LjA0NCAxLjQzNS4xNGE2Ljk2MSA2Ljk2MSAwIDAgMSAyLjUwMiAxLjA1MyA3LjAwNSA3LjAwNSAwIDAgMSAxLjg5MiAxLjg5MkE2Ljk2NyA2Ljk2NyAwIDAgMSAxOSAxM2E3LjAzMiA3LjAzMiAwIDAgMS0uNTUgMi43MjUgNy4xMSA3LjExIDAgMCAxLS42NDQgMS4xODggNy4yIDcuMiAwIDAgMS0uODU4IDEuMDM5IDcuMDI4IDcuMDI4IDAgMCAxLTMuNTM2IDEuOTA3IDcuMTMgNy4xMyAwIDAgMS0yLjgyMiAwIDYuOTYxIDYuOTYxIDAgMCAxLTIuNTAzLTEuMDU0IDcuMDAyIDcuMDAyIDAgMCAxLTEuODktMS44OUE2Ljk5NiA2Ljk5NiAwIDAgMSA1IDEzSDNhOS4wMiA5LjAyIDAgMCAwIDEuNTM5IDUuMDM0IDkuMDk2IDkuMDk2IDAgMCAwIDIuNDI4IDIuNDI4QTguOTUgOC45NSAwIDAgMCAxMiAyMmE5LjA5IDkuMDkgMCAwIDAgMS44MTQtLjE4MyA5LjAxNCA5LjAxNCAwIDAgMCAzLjIxOC0xLjM1NSA4Ljg4NiA4Ljg4NiAwIDAgMCAxLjMzMS0xLjA5OSA5LjIyOCA5LjIyOCAwIDAgMCAxLjEtMS4zMzJBOC45NTIgOC45NTIgMCAwIDAgMjEgMTNhOS4wOSA5LjA5IDAgMCAwLS4xODMtMS44MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmVzdGF1cmFudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBoLTJWM0g4djdINlYzSDR2OGMwIDEuNjU0IDEuMzQ2IDMgMyAzaDF2N2gydi03aDFjMS42NTQgMCAzLTEuMzQ2IDMtM1YzaC0ydjd6bTctN2gtMWMtMS4xNTkgMC0yIDEuMjYyLTIgM3Y4aDJ2N2gyVjRhMSAxIDAgMCAwLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZXZpc2lvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuODkgMTAuMTA1YTguNjk2IDguNjk2IDAgMCAwLS43ODktMS40NTZsLTEuNjU4IDEuMTE5YTYuNjA2IDYuNjA2IDAgMCAxIC45ODcgMi4zNDUgNi42NTkgNi42NTkgMCAwIDEgMCAyLjY0OCA2LjQ5NSA2LjQ5NSAwIDAgMS0uMzg0IDEuMjMxIDYuNDA0IDYuNDA0IDAgMCAxLS42MDMgMS4xMTIgNi42NTQgNi42NTQgMCAwIDEtMS43NzYgMS43NzUgNi42MDYgNi42MDYgMCAwIDEtMi4zNDMuOTg3IDYuNzM0IDYuNzM0IDAgMCAxLTIuNjQ2IDAgNi41NSA2LjU1IDAgMCAxLTMuMzE3LTEuNzg4IDYuNjA1IDYuNjA1IDAgMCAxLTEuNDA4LTIuMDg4IDYuNjEzIDYuNjEzIDAgMCAxLS4zODItMS4yMyA2LjYyNyA2LjYyNyAwIDAgMSAuMzgyLTMuODc3QTYuNTUxIDYuNTUxIDAgMCAxIDcuMzYgOC43OTcgNi42MjggNi42MjggMCAwIDEgOS40NDYgNy4zOWMuMzk1LS4xNjcuODEtLjI5NiAxLjIzLS4zODIuMTA3LS4wMjIuMjE2LS4wMzIuMzI0LS4wNDlWMTBsNS00LTUtNHYyLjkzOGE4LjgwNSA4LjgwNSAwIDAgMC0uNzI1LjExMSA4LjUxMiA4LjUxMiAwIDAgMC0zLjA2MyAxLjI5QTguNTY2IDguNTY2IDAgMCAwIDQuMTEgMTYuNzdhOC41MzUgOC41MzUgMCAwIDAgMS44MzUgMi43MjQgOC42MTQgOC42MTQgMCAwIDAgMi43MjEgMS44MzMgOC41NSA4LjU1IDAgMCAwIDUuMDYxLjQ5OSA4LjU3NiA4LjU3NiAwIDAgMCA2LjE2Mi01LjA1NmMuMjItLjUyLjM4OS0xLjA2MS41LTEuNjA4YTguNjQzIDguNjQzIDAgMCAwIDAtMy40NSA4LjY4NCA4LjY4NCAwIDAgMC0uNDk5LTEuNjA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJld2luZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE2VjhsLTUgNHptNiAwVjhsLTUgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSZXdpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEyVjdsLTcgNSA3IDV6bTctNS03IDUgNyA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJpZ2h0QXJyb3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjI5MyAxNy4yOTMgMS40MTQgMS40MTRMMTkuNDE0IDEybC02LjcwNy02LjcwNy0xLjQxNCAxLjQxNEwxNS41ODYgMTFINnYyaDkuNTg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJpZ2h0QXJyb3dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjk5OSAxLjk5M2MtNS41MTQuMDAxLTEwIDQuNDg3LTEwIDEwLjAwMXM0LjQ4NiAxMCAxMC4wMDEgMTBjNS41MTMgMCA5Ljk5OS00LjQ4NiAxMC0xMCAwLTUuNTE0LTQuNDg2LTEwLTEwLjAwMS0xMC4wMDF6TTEyIDE5Ljk5NGMtNC40MTIgMC04LjAwMS0zLjU4OS04LjAwMS04czMuNTg5LTggOC04LjAwMUMxNi40MTEgMy45OTQgMjAgNy41ODMgMjAgMTEuOTk0Yy0uMDAxIDQuNDExLTMuNTkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTAuOTk0SDh2Mmg0VjE2bDQuMDA1LTQuMDA1TDEyIDcuOTkxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJpZ2h0QXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTM2IDIxLjg4NmExLjAwNCAxLjAwNCAwIDAgMCAxLjAzMy0uMDY0bDEzLTlhMSAxIDAgMCAwIDAtMS42NDRsLTEzLTlBLjk5OC45OTggMCAwIDAgNSAzdjE4YTEgMSAwIDAgMCAuNTM2Ljg4NnpNNyA0LjkwOSAxNy4yNDMgMTIgNyAxOS4wOTFWNC45MDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmlnaHREb3duQXJyb3dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIuMDA3YTkuOTI4IDkuOTI4IDAgMCAwLTcuMDcxIDIuOTIyYy0zLjg5OSAzLjg5OS0zLjg5OSAxMC4yNDMgMCAxNC4xNDNBOS45MyA5LjkzIDAgMCAwIDEyIDIxLjk5NWE5LjkzIDkuOTMgMCAwIDAgNy4wNzEtMi45MjNjMy44OTktMy44OTkgMy44OTktMTAuMjQzIDAtMTQuMTQzQTkuOTI4IDkuOTI4IDAgMCAwIDEyIDIuMDA3em01LjY1NyAxNS42NUE3Ljk0NiA3Ljk0NiAwIDAgMSAxMiAxOS45OTRjLTIuMTQxIDAtNC4xNS0uODMtNS42NTctMi4zMzctMy4xMTktMy4xMTktMy4xMTktOC4xOTUgMC0xMS4zMTRBNy45NDQgNy45NDQgMCAwIDEgMTIgNC4wMDdjMi4xNDEgMCA0LjE1LjgyOSA1LjY1NyAyLjMzNiAzLjExOSAzLjExOSAzLjExOSA4LjE5NSAwIDExLjMxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjY2MSA4LjI0NyA4LjI0NyA5LjY2MWwzLjIxNCAzLjIxNEw5LjMzNiAxNUgxNVY5LjMzN2wtMi4xMjUgMi4xMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUmlnaHRJbmRlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1aDEwdjJIMTB6bS02IDRoMTZ2Mkg0em02LThoMTB2MkgxMHptMC00aDEwdjJIMTB6TTQgM2gxNnYySDR6bTAgNXY4bDQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSaWdodFRvcEFycm93Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4wMDYgMi4wMDdhOS45MjcgOS45MjcgMCAwIDAtNy4wNzEgMi45MjJjLTMuODk4IDMuODk5LTMuODk4IDEwLjI0MyAwIDE0LjE0MiAxLjg4NSAxLjg4NSA0LjM5NiAyLjkyMyA3LjA3MSAyLjkyM3M1LjE4Ny0xLjAzOCA3LjA3MS0yLjkyM2MzLjg5OC0zLjg5OCAzLjg5OC0xMC4yNDIgMC0xNC4xNDJhOS45MjggOS45MjggMCAwIDAtNy4wNzEtMi45MjJ6bTUuNjU3IDE1LjY0OWMtMS41MDcgMS41MDctMy41MTcgMi4zMzctNS42NTcgMi4zMzdzLTQuMTUtLjgzLTUuNjU3LTIuMzM3Yy0zLjExOC0zLjExOS0zLjExOC04LjE5NCAwLTExLjMxMyAxLjUwNy0xLjUwNyAzLjUxNi0yLjMzNiA1LjY1Ny0yLjMzNnM0LjE1LjgyOSA1LjY1NyAyLjMzNmMzLjExOCAzLjExOSAzLjExOCA4LjE5NCAwIDExLjMxM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMS40NjcgMTEuMTI1LTMuMjE0IDMuMjE0IDEuNDE0IDEuNDE0IDMuMjE0LTMuMjE0IDIuMTI1IDIuMTI0VjlIOS4zNDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC45MiAyLjM4QTE1LjcyIDE1LjcyIDAgMCAwIDE3LjUgMmE4LjI2IDguMjYgMCAwIDAtNiAyLjA2UTkuODkgNS42NyA4LjMxIDcuMjdjLTEuMjEtLjEzLTQuMDgtLjItNiAxLjc0YTEgMSAwIDAgMCAwIDEuNDFsMTEuMyAxMS4zMmExIDEgMCAwIDAgMS40MSAwYzEuOTUtMiAxLjg5LTQuODIgMS43Ny02bDMuMjEtMy4yYzMuMTktMy4xOSAxLjc0LTkuMTggMS42OC05LjQzYTEgMSAwIDAgMC0uNzYtLjczem0tMi4zNiA4Ljc1TDE1IDE0LjY3YTEgMSAwIDAgMC0uMjcuOSA2LjgxIDYuODEgMCAwIDEtLjU0IDMuOTRMNC41MiA5LjgyYTYuNjcgNi42NyAwIDAgMSA0LS41QTEgMSAwIDAgMCA5LjM5IDlzMS40LTEuNDUgMy41MS0zLjU2QTYuNjEgNi42MSAwIDAgMSAxNy41IDRhMTQuNTEgMTQuNTEgMCAwIDEgMi4zMy4yYy4yNCAxLjQzLjYyIDUuMDQtMS4yNyA2LjkzelwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTUuNzNcIixcImN5XCI6XCI4LjNcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE2Yy0yIDEtMiA1LTIgNWE3LjgxIDcuODEgMCAwIDAgNS0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJvdGF0ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzU4IDguNzU4IDUuMzQ0IDcuMzQ0YTguMDQ4IDguMDQ4IDAgMCAwLTEuODQxIDIuODU5bDEuODczLjcwMWE2LjA0OCA2LjA0OCAwIDAgMSAxLjM4Mi0yLjE0NnpNMTkgMTIuOTk5YTcuOTM1IDcuOTM1IDAgMCAwLTIuMzQ0LTUuNjU1QTcuOTE3IDcuOTE3IDAgMCAwIDEyIDUuMDY5VjJMNyA2bDUgNFY3LjA4OWE1Ljk0NCA1Ljk0NCAwIDAgMSAzLjI0MiAxLjY2OUE1Ljk1NiA1Ljk1NiAwIDAgMSAxNyAxM3YuMDAyYzAgLjMzLS4wMzMuNjU1LS4wODYuOTc3LS4wMDcuMDQzLS4wMTEuMDg4LS4wMTkuMTMxYTYuMDUzIDYuMDUzIDAgMCAxLTEuMTM4IDIuNTM2Yy0uMTYuMjA5LS4zMzEuNDEyLS41MTYuNTk3YTUuOTU0IDUuOTU0IDAgMCAxLS43MjguNjEzIDUuOTA2IDUuOTA2IDAgMCAxLTIuMjc3IDEuMDE1Yy0uMTQyLjAzLS4yODUuMDUtLjQzLjA2OS0uMDYyLjAwOS0uMTIyLjAyMS0uMTg0LjAyN2E2LjEwNCA2LjEwNCAwIDAgMS0xLjg5OC0uMTAzTDkuMyAyMC44MTlhOC4wODcgOC4wODcgMCAwIDAgMi41MzQuMTM2Yy4wNjktLjAwNy4xMzgtLjAyMS4yMDctLjAzLjIwNS0uMDI2LjQwOS0uMDU2LjYxLS4wOThsLjA1My0uMDA5LS4wMDEtLjAwNWE3Ljg3NyA3Ljg3NyAwIDAgMCAyLjEzNi0uNzk1bC4wMDEuMDAxLjAyOC0uMDE5YTcuOTA2IDcuOTA2IDAgMCAwIDEuMDEtLjY3Yy4yNy0uMjA5LjUzMi0uNDMuNzc3LS42NzUuMjQ4LS4yNDcuNDctLjUxMy42ODEtLjc4NS4wMjEtLjAyOC4wNDktLjA1My4wNy0uMDgxbC0uMDA2LS4wMDRhNy44OTkgNy44OTkgMCAwIDAgMS4wOTMtMS45OTdsLjAwOC4wMDNjLjAyOS0uMDc4LjA1LS4xNTguMDc2LS4yMzcuMDM3LS4xMS4wNzUtLjIyMS4xMDctLjMzMy4wNC0uMTQuMDczLS4yODEuMTA1LS40MjMuMDIyLS4wOTkuMDQ4LS4xOTUuMDY2LS4yOTUuMDMyLS4xNzEuMDU2LS4zNDQuMDc2LS41MTYuMDEtLjA3Ni4wMjMtLjE1LjAzLS4yMjcuMDIzLS4yNDkuMDM3LS41LjAzNy0uNzUzLjAwMi0uMDAyLjAwMi0uMDA0LjAwMi0uMDA4ek02LjE5NyAxNi41OTdsLTEuNiAxLjIwMWE4LjA0NSA4LjA0NSAwIDAgMCAyLjU2OSAyLjIyNWwuOTYxLTEuNzU0YTYuMDE4IDYuMDE4IDAgMCAxLTEuOTMtMS42NzJ6TTUgMTNjMC0uMTQ1LjAwNS0uMjg3LjAxNS0uNDI5bC0xLjk5NC0uMTQzYTcuOTc3IDcuOTc3IDAgMCAwIC40ODMgMy4zNzJsMS44NzMtLjcwMUE1Ljk3NSA1Ljk3NSAwIDAgMSA1IDEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJvdGF0ZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNi4yNDIgMTcuMjQyYTYuMDQgNi4wNCAwIDAgMS0xLjM3IDEuMDI3bC45NjEgMS43NTRhOC4wNjggOC4wNjggMCAwIDAgMi41NjktMi4yMjVsLTEuNi0xLjIwMWE1LjkzOCA1LjkzOCAwIDAgMS0uNTYuNjQ1em0xLjc0My00LjY3MWE1Ljk3NSA1Ljk3NSAwIDAgMS0uMzYyIDIuNTI4bDEuODczLjcwMWE3Ljk3NyA3Ljk3NyAwIDAgMCAuNDgzLTMuMzcxbC0xLjk5NC4xNDJ6bTEuNTEyLTIuMzY4YTguMDQ4IDguMDQ4IDAgMCAwLTEuODQxLTIuODU5bC0xLjQxNCAxLjQxNGE2LjA3MSA2LjA3MSAwIDAgMSAxLjM4MiAyLjE0NmwxLjg3My0uNzAxem0tOC4xMjggOC43NjNjLS4wNDctLjAwNS0uMDk0LS4wMTUtLjE0MS0uMDIxYTYuNzAxIDYuNzAxIDAgMCAxLS40NjgtLjA3NSA1LjkyMyA1LjkyMyAwIDAgMS0yLjQyMS0xLjEyMiA1Ljk1NCA1Ljk1NCAwIDAgMS0uNTgzLS41MDYgNi4xMzggNi4xMzggMCAwIDEtLjUxNi0uNTk3IDUuOTEgNS45MSAwIDAgMS0uODkxLTEuNjM0IDYuMDg2IDYuMDg2IDAgMCAxLS4yNDctLjkwMmMtLjAwOC0uMDQzLS4wMTItLjA4OC0uMDE5LS4xMzFBNi4zMzIgNi4zMzIgMCAwIDEgNiAxMy4wMDJWMTNjMC0xLjYwMy42MjQtMy4xMDkgMS43NTgtNC4yNDJBNS45NDQgNS45NDQgMCAwIDEgMTEgNy4wODlWMTBsNS00LTUtNHYzLjA2OWE3LjkxNyA3LjkxNyAwIDAgMC00LjY1NiAyLjI3NUE3LjkzNiA3LjkzNiAwIDAgMCA0IDEyLjk5OXYuMDA5YzAgLjI1My4wMTQuNTA0LjAzNy43NTMuMDA3LjA3Ni4wMjEuMTUuMDMuMjI3LjAyMS4xNzIuMDQ0LjM0NS4wNzYuNTE2LjAxOS4xLjA0NC4xOTYuMDY2LjI5NS4wMzIuMTQyLjA2NS4yODMuMTA1LjQyMy4wMzIuMTEyLjA3LjIyMy4xMDcuMzMzLjAyNi4wNzkuMDQ3LjE1OS4wNzYuMjM3bC4wMDgtLjAwM0E3Ljk0OCA3Ljk0OCAwIDAgMCA1LjYgMTcuNzg1bC0uMDA3LjAwNWMuMDIxLjAyOC4wNDkuMDUzLjA3LjA4MS4yMTEuMjcyLjQzMy41MzguNjgxLjc4NWE4LjIzNiA4LjIzNiAwIDAgMCAuOTY2LjgxNmMuMjY1LjE5Mi41MzcuMzcyLjgyMS41MjlsLjAyOC4wMTkuMDAxLS4wMDFhNy44NzcgNy44NzcgMCAwIDAgMi4xMzYuNzk1bC0uMDAxLjAwNS4wNTMuMDA5Yy4yMDEuMDQyLjQwNS4wNzEuNjEuMDk4LjA2OS4wMDkuMTM4LjAyMy4yMDcuMDNhOC4wMzggOC4wMzggMCAwIDAgMi41MzItLjEzN2wtLjQyNC0xLjk1NWE2LjExIDYuMTEgMCAwIDEtMS45MDQuMTAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMjAuMDAxQzE5IDExLjcyOSAxMi4yNzEgNSA0IDV2MmM3LjE2OCAwIDEzIDUuODMyIDEzIDEzLjAwMWgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDIwLjAwMWgyQzE0IDE0LjQ4NiA5LjUxNCAxMCA0IDEwdjJjNC40MTEgMCA4IDMuNTg5IDggOC4wMDF6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI2XCIsXCJjeVwiOlwiMThcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyMWgydi0zaDZ2LTJoLTZ2LTJoNC41YzIuNzU3IDAgNS0yLjI0MyA1LTVzLTIuMjQzLTUtNS01SDlhMSAxIDAgMCAwLTEgMXY3SDV2MmgzdjJINXYyaDN2M3ptMi0xNWg0LjVjMS42NTQgMCAzIDEuMzQ2IDMgM3MtMS4zNDYgMy0zIDNIMTBWNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuODc1IDdIMy4xMjVDMS45NTMgNyAxIDcuODk3IDEgOXY2YzAgMS4xMDMuOTUzIDIgMi4xMjUgMmgxNy43NUMyMi4wNDcgMTcgMjMgMTYuMTAzIDIzIDE1VjljMC0xLjEwMy0uOTUzLTItMi4xMjUtMnptMCA4SDMuMTI1Yy0uMDU3IDAtLjA5Ni0uMDE2LS4xMTMtLjAxNi0uMDA3IDAtLjAxMS4wMDItLjAxMi4wMDhsLS4wMTItNS45NDZjLjAwNy0uMDEuMDUyLS4wNDYuMTM3LS4wNDZINXYzaDJWOWgydjRoMlY5aDJ2M2gyVjloMnY0aDJWOWgxLjg3NWMuMDc5LjAwMS4xMjIuMDI4LjEyNS4wMDhsLjAxMiA1Ljk0NmMtLjAwNy4wMS0uMDUyLjA0Ni0uMTM3LjA0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTdcIixcImN5XCI6XCI0XCIsXCJyXCI6XCIyXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNzc3IDEwLjk2OWEyLjAwNyAyLjAwNyAwIDAgMCAyLjE0OC44M2wzLjMxNi0uODI5LS40ODMtMS45NC0zLjMxNi44MjktMS4zNzktMi4wNjdhMi4wMSAyLjAxIDAgMCAwLTEuMjcyLS44NTRsLTMuODQ2LS43N2ExLjk5OCAxLjk5OCAwIDAgMC0yLjE4MSAxLjA2N2wtMS42NTggMy4zMTYgMS43ODkuODk1IDEuNjU4LTMuMzE3IDEuOTY3LjM5NEw3LjQzNCAxN0gzdjJoNC40MzRjLjY5OCAwIDEuMzU1LS4zNzIgMS43MTUtLjk3MWwxLjkxOC0zLjE5NiA1LjE2OSAxLjAzNCAxLjgxNiA1LjQ0OSAxLjg5Ni0uNjMzLTEuODE1LTUuNDQ4YTIuMDA3IDIuMDA3IDAgMCAwLTEuNTA2LTEuMzNsLTMuMDM5LS42MDcgMS43NzItMi45NTQuNDE3LjYyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlSdXBlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgNlY0SDZ2MmgzLjVjMS4zMDIgMCAyLjQwMS44MzggMi44MTUgMkg2djJoNi4zMTVBMi45OTQgMi45OTQgMCAwIDEgOS41IDEySDZ2Mi40MTRMMTEuNTg2IDIwaDIuODI4bC02LTZIOS41YTUuMDA3IDUuMDA3IDAgMCAwIDQuODk4LTRIMTdWOGgtMi42MDJhNC45MzMgNC45MzMgMCAwIDAtLjkyNC0ySDE3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNhZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiOC41XCIsXCJjeVwiOlwiMTAuNVwiLFwiclwiOlwiMS41XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxNS40OTNcIixcImN5XCI6XCIxMC40OTNcIixcInJcIjpcIjEuNDkzXCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRjLTMgMC00IDMtNCAzaDhzLTEtMy00LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyMWgxNGEyIDIgMCAwIDAgMi0yVjhhMSAxIDAgMCAwLS4yOS0uNzFsLTQtNEExIDEgMCAwIDAgMTYgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMnptMTAtMkg5di01aDZ6TTEzIDdoLTJWNWgyek01IDVoMnY0aDhWNWguNTlMMTkgOC40MVYxOWgtMnYtNWEyIDIgMCAwIDAtMi0ySDlhMiAyIDAgMCAwLTIgMnY1SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0djVoMlY1aDRWM0g0YTEgMSAwIDAgMC0xIDF6bTE4IDVWNGExIDEgMCAwIDAtMS0xaC01djJoNHY0aDJ6bS0yIDEwaC00djJoNWExIDEgMCAwIDAgMS0xdi01aC0ydjR6TTkgMjF2LTJINXYtNEgzdjVhMSAxIDAgMCAwIDEgMWg1ek0yIDExaDIwdjJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTY3JlZW5zaG90IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAxNGgtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pNNCAxOWgzdi0ySDV2LTJIM3YzYTEgMSAwIDAgMCAxIDF6TTE5IDRhMSAxIDAgMCAwLTEtMWgtM3YyaDJ2MmgyVjR6TTUgNWgyVjNINGExIDEgMCAwIDAtMSAxdjNoMlY1ek0zIDloMnY0SDN6bTE0IDBoMnYzaC0yek05IDNoNHYySDl6bTAgMTRoM3YySDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2VhcmNoQWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuMDIzIDE2Ljk3N2EzNS4xMyAzNS4xMyAwIDAgMS0xLjM2Ny0xLjM4NGMtLjM3Mi0uMzc4LS41OTYtLjY1My0uNTk2LS42NTNsLTIuOC0xLjMzN0E2Ljk2MiA2Ljk2MiAwIDAgMCAxNiA5YzAtMy44NTktMy4xNC03LTctN1MyIDUuMTQxIDIgOXMzLjE0IDcgNyA3YzEuNzYzIDAgMy4zNy0uNjYgNC42MDMtMS43MzlsMS4zMzcgMi44cy4yNzUuMjI0LjY1My41OTZjLjM4Ny4zNjMuODk2Ljg1NCAxLjM4NCAxLjM2N2wxLjM1OCAxLjM5Mi42MDQuNjQ2IDIuMTIxLTIuMTIxLS42NDYtLjYwNGMtLjM3OS0uMzcyLS44ODUtLjg2Ni0xLjM5MS0xLjM2ek05IDE0Yy0yLjc1NyAwLTUtMi4yNDMtNS01czIuMjQzLTUgNS01IDUgMi4yNDMgNSA1LTIuMjQzIDUtNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNlYXJjaEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMThhNy45NTIgNy45NTIgMCAwIDAgNC44OTctMS42ODhsNC4zOTYgNC4zOTYgMS40MTQtMS40MTQtNC4zOTYtNC4zOTZBNy45NTIgNy45NTIgMCAwIDAgMTggMTBjMC00LjQxMS0zLjU4OS04LTgtOHMtOCAzLjU4OS04IDggMy41ODkgOCA4IDh6bTAtMTRjMy4zMDkgMCA2IDIuNjkxIDYgNnMtMi42OTEgNi02IDYtNi0yLjY5MS02LTYgMi42OTEtNiA2LTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDEyIDguNTg2Yy4zNzkuMzguNTg4Ljg4Mi41ODggMS40MTRoMmEzLjk3NyAzLjk3NyAwIDAgMC0xLjE3NC0yLjgyOGMtMS41MTQtMS41MTItNC4xMzktMS41MTItNS42NTIgMGwxLjQxMiAxLjQxNmMuNzYtLjc1OCAyLjA3LS43NTYgMi44MjYtLjAwMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTZWFyY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE4YTcuOTUyIDcuOTUyIDAgMCAwIDQuODk3LTEuNjg4bDQuMzk2IDQuMzk2IDEuNDE0LTEuNDE0LTQuMzk2LTQuMzk2QTcuOTUyIDcuOTUyIDAgMCAwIDE4IDEwYzAtNC40MTEtMy41ODktOC04LThzLTggMy41ODktOCA4IDMuNTg5IDggOCA4em0wLTE0YzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNlbGVjdE11bHRpcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAySDhjLTEuMTAzIDAtMiAuODk3LTIgMnYxMmMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJWNGMwLTEuMTAzLS44OTctMi0yLTJ6TTggMTZWNGgxMmwuMDAyIDEySDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4SDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTJ2LTJINFY4em04LjkzMyAzLjUxOS0xLjcyNi0xLjcyNi0xLjQxNCAxLjQxNCAzLjI3NCAzLjI3NCA1LjcwMi02Ljg0LTEuNTM4LTEuMjgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNlbGVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgOWExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMWgtNGExIDEgMCAwIDAtMSAxdjFIOVY0YTEgMSAwIDAgMC0xLTFINGExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWgxdjZINGExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWg0YTEgMSAwIDAgMCAxLTF2LTFoNnYxYTEgMSAwIDAgMCAxIDFoNGExIDEgMCAwIDAgMS0xdi00YTEgMSAwIDAgMC0xLTFoLTFWOWgxem0tMy00aDJ2MmgtMlY1ek01IDVoMnYySDVWNXptMiAxNEg1di0yaDJ2MnptMTIgMGgtMnYtMmgydjJ6bS0yLTRoLTFhMSAxIDAgMCAwLTEgMXYxSDl2LTFhMSAxIDAgMCAwLTEtMUg3VjloMWExIDEgMCAwIDAgMS0xVjdoNnYxYTEgMSAwIDAgMCAxIDFoMXY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNlbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIxLjQyNiAxMS4wOTUtMTctOEEuOTk5Ljk5OSAwIDAgMCAzLjAzIDQuMjQyTDQuOTY5IDEyIDMuMDMgMTkuNzU4YS45OTguOTk4IDAgMCAwIDEuMzk2IDEuMTQ3bDE3LThhMSAxIDAgMCAwIDAtMS44MXpNNS40ODEgMTguMTk3bC44MzktMy4zNTdMMTIgMTIgNi4zMiA5LjE2bC0uODM5LTMuMzU3TDE4LjY1MSAxMmwtMTMuMTcgNi4xOTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRhMiAyIDAgMCAwLTIgMnY0YTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJ6TTQgOVY1aDE2djR6bTE2IDRINGEyIDIgMCAwIDAtMiAydjRhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi00YTIgMiAwIDAgMC0yLTJ6TTQgMTl2LTRoMTZ2NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyA2aDJ2MmgtMnptLTMgMGgydjJoLTJ6bTMgMTBoMnYyaC0yem0tMyAwaDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaGFwZUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNDk0IDkuMDVhOC4xNCA4LjE0IDAgMCAwLTQuNTQ0LTQuNTQ0QzE0LjcxMyAzLjA4OCAxMy40ODUgMiAxMiAyUzkuMjg3IDMuMDg4IDkuMDUgNC41MDZBOC4xMzYgOC4xMzYgMCAwIDAgNC41MDYgOS4wNUMzLjA4OCA5LjI4NyAyIDEwLjUxNSAyIDEyczEuMDg4IDIuNzEzIDIuNTA2IDIuOTVhOC4xNCA4LjE0IDAgMCAwIDQuNTQ0IDQuNTQ0QzkuMjg3IDIwLjkxMiAxMC41MTUgMjIgMTIgMjJzMi43MTMtMS4wODggMi45NS0yLjUwNmE4LjE0IDguMTQgMCAwIDAgNC41NDQtNC41NDRDMjAuOTEyIDE0LjcxMyAyMiAxMy40ODUgMjIgMTJzLTEuMDg4LTIuNzEzLTIuNTA2LTIuOTV6TTEyIDRhMSAxIDAgMCAxIDEgMWMwIC4wNi0uMDIzLjExLS4wMzQuMTY3YTEuMDE1IDEuMDE1IDAgMCAxLS4wODMuMjc5Yy0uMDE0LjAyNy0uMDM0LjA0OS0uMDUxLjA3NWExLjA2MiAxLjA2MiAwIDAgMS0uMTYuMjA5Yy0uMDQuMDM3LS4wOS4wNjItLjEzNi4wOTItLjA1NC4wMzYtLjEwNC4wNzgtLjE2NS4xMDMtLjExNS4wNDctLjIzOS4wNzUtLjM3MS4wNzVzLS4yNTYtLjAyOC0uMzcxLS4wNzVjLS4wNjEtLjAyNC0uMTExLS4wNjYtLjE2NS0uMTAzLS4wNDYtLjAzLS4wOTYtLjA1NS0uMTM2LS4wOTJhMS4wNjIgMS4wNjIgMCAwIDEtLjE2LS4yMDljLS4wMTctLjAyNi0uMDM3LS4wNDgtLjA1MS0uMDc1YTEuMDI2IDEuMDI2IDAgMCAxLS4wODMtLjI3OUMxMS4wMjMgNS4xMSAxMSA1LjA2IDExIDVhMSAxIDAgMCAxIDEtMXptLTcgN2MuMDYgMCAuMTEuMDIzLjE2Ny4wMzQuMDk5LjAxNy4xOTQuMDQxLjI3OS4wODMuMDI3LjAxNC4wNDkuMDM0LjA3NS4wNTEuMDc1LjA0Ny4xNDkuMDk3LjIwOS4xNi4wMzcuMDQuMDYyLjA5LjA5Mi4xMzYuMDM2LjA1NC4wNzguMTA0LjEwMy4xNjUuMDQ3LjExNS4wNzUuMjM5LjA3NS4zNzFzLS4wMjguMjU2LS4wNzUuMzcxYy0uMDI0LjA2MS0uMDY2LjExMS0uMTAzLjE2NS0uMDMuMDQ2LS4wNTUuMDk2LS4wOTIuMTM2LS4wNi4wNjMtLjEzNC4xMTMtLjIwOS4xNi0uMDI2LjAxNy0uMDQ4LjAzNy0uMDc1LjA1MWExLjAyNiAxLjAyNiAwIDAgMS0uMjc5LjA4M0M1LjExIDEyLjk3NyA1LjA2IDEzIDUgMTNhMSAxIDAgMCAxIDAtMnptNyA5YTEgMSAwIDAgMS0xLTFjMC0uMDYuMDIzLS4xMS4wMzQtLjE2Ny4wMTctLjA5OS4wNDEtLjE5NC4wODMtLjI3OS4wMTQtLjAyNy4wMzQtLjA0OS4wNTEtLjA3NS4wNDctLjA3NS4wOTctLjE0OS4xNi0uMjA5LjA0LS4wMzcuMDktLjA2Mi4xMzYtLjA5Mi4wNTQtLjAzNi4xMDQtLjA3OC4xNjUtLjEwMy4xMTUtLjA0Ny4yMzktLjA3NS4zNzEtLjA3NXMuMjU2LjAyOC4zNzEuMDc1Yy4wNjEuMDI0LjExMS4wNjYuMTY1LjEwMy4wNDYuMDMuMDk2LjA1NS4xMzYuMDkyLjA2My4wNi4xMTMuMTM0LjE2LjIwOS4wMTcuMDI2LjAzNy4wNDguMDUxLjA3NS4wNDIuMDg1LjA2Ni4xODEuMDgzLjI3OS4wMTEuMDU3LjAzNC4xMDcuMDM0LjE2N2ExIDEgMCAwIDEtMSAxem0yLjU4My0yLjUxMmMtLjAwNi0uMDExLS4wMTctLjAxOS0uMDIyLS4wMjlhMy4wMDcgMy4wMDcgMCAwIDAtLjk5Ni0xLjAwN2MtLjA1NC0uMDMzLS4xMDktLjA2LS4xNjYtLjA5YTIuOTAyIDIuOTAyIDAgMCAwLS40ODYtLjIwNWMtLjA2NC0uMDIxLS4xMjgtLjA0NC0uMTk0LS4wNjEtLjIzMy0uMDU3LS40NzEtLjA5Ni0uNzE5LS4wOTZzLS40ODYuMDM5LS43MTguMDk3Yy0uMDY2LjAxNy0uMTMuMDM5LS4xOTUuMDYxYTIuOTI4IDIuOTI4IDAgMCAwLS40ODUuMjA1Yy0uMDU2LjAyOS0uMTEyLjA1Ny0uMTY2LjA5YTMuMDA3IDMuMDA3IDAgMCAwLS45OTYgMS4wMDdjLS4wMDYuMDExLS4wMTcuMDE5LS4wMjIuMDI5YTYuMTUgNi4xNSAwIDAgMS0yLjkwNS0yLjkwNWMuMDExLS4wMDYuMDE5LS4wMTcuMDI5LS4wMjJhMy4wMDcgMy4wMDcgMCAwIDAgMS4wMDctLjk5NmMuMDMzLS4wNTQuMDYxLS4xMS4wOS0uMTY2LjA4My0uMTU0LjE1LS4zMTYuMjA1LS40ODUuMDIxLS4wNjUuMDQ0LS4xMjkuMDYxLS4xOTUuMDU2LS4yMzQuMDk1LS40NzIuMDk1LS43MnMtLjAzOS0uNDg2LS4wOTctLjcxOGEyLjU2OCAyLjU2OCAwIDAgMC0uMDYxLS4xOTQgMi45MDIgMi45MDIgMCAwIDAtLjIwNS0uNDg2Yy0uMDMtLjA1Ny0uMDU3LS4xMTItLjA5LS4xNjZBMy4wMDcgMy4wMDcgMCAwIDAgNi41NCA5LjQ0Yy0uMDEtLjAwNi0uMDE4LS4wMTctLjAyOC0uMDIzYTYuMTUgNi4xNSAwIDAgMSAyLjkwNS0yLjkwNWMuMDA2LjAxLjAxNy4wMTguMDIyLjAyOS4yNDguNDExLjU4OC43NTUuOTk2IDEuMDA3LjA1NC4wMzMuMTEuMDYxLjE2Ni4wOS4xNTUuMDgzLjMxNi4xNS40ODYuMjA1LjA2NC4wMjEuMTI4LjA0NC4xOTQuMDYxLjIzMy4wNTcuNDcuMDk2LjcxOS4wOTZhMi45NCAyLjk0IDAgMCAwIC45MTItLjE1OGMuMTctLjA1NS4zMzEtLjEyMi40ODYtLjIwNS4wNTYtLjAyOS4xMTItLjA1Ny4xNjYtLjA5LjQwOC0uMjUyLjc0OC0uNTk2Ljk5Ni0xLjAwNy4wMDYtLjAxMS4wMTctLjAxOS4wMjItLjAyOWE2LjE1IDYuMTUgMCAwIDEgMi45MDUgMi45MDVjLS4wMTEuMDA2LS4wMTkuMDE3LS4wMjkuMDIyYTMuMDA3IDMuMDA3IDAgMCAwLTEuMDA3Ljk5NmMtLjAzMy4wNTQtLjA2MS4xMS0uMDkuMTY2LS4wODMuMTU1LS4xNS4zMTYtLjIwNS40ODYtLjAyMS4wNjQtLjA0NC4xMjgtLjA2MS4xOTRBMy4wNyAzLjA3IDAgMCAwIDE2IDEyYTIuOTQgMi45NCAwIDAgMCAuMTU4LjkxMmMuMDU1LjE3LjEyMi4zMzEuMjA1LjQ4Ni4wMjkuMDU2LjA1Ny4xMTIuMDkuMTY2LjI1Mi40MDguNTk2Ljc0OCAxLjAwNy45OTYuMDExLjAwNi4wMTkuMDE3LjAyOS4wMjJhNi4xNDUgNi4xNDUgMCAwIDEtMi45MDYgMi45MDZ6TTE5IDEzYy0uMDYgMC0uMTEtLjAyMy0uMTY3LS4wMzRhMS4wMTUgMS4wMTUgMCAwIDEtLjI3OS0uMDgzYy0uMDI3LS4wMTQtLjA0OS0uMDM0LS4wNzUtLjA1MWExLjA2MiAxLjA2MiAwIDAgMS0uMjA5LS4xNmMtLjAzNy0uMDQtLjA2Mi0uMDktLjA5Mi0uMTM2LS4wMzYtLjA1NC0uMDc4LS4xMDQtLjEwMy0uMTY1LS4wNDctLjExNS0uMDc1LS4yMzktLjA3NS0uMzcxcy4wMjgtLjI1Ni4wNzUtLjM3MWMuMDI0LS4wNjEuMDY2LS4xMTEuMTAzLS4xNjUuMDMtLjA0Ni4wNTUtLjA5Ni4wOTItLjEzNi4wNi0uMDYzLjEzNC0uMTEzLjIwOS0uMTYuMDI2LS4wMTcuMDQ4LS4wMzcuMDc1LS4wNTEuMDg1LS4wNDIuMTgxLS4wNjYuMjc5LS4wODMuMDU3LS4wMTEuMTA3LS4wMzQuMTY3LS4wMzRhMSAxIDAgMCAxIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaGFwZVBvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDE0LjE4NXYtMi4zNjlBMi45OTcgMi45OTcgMCAwIDAgMjIgOWMwLTEuNjU0LTEuMzQ2LTMtMy0zYTIuOTkgMi45OSAwIDAgMC0yLjExNi44NzZMMTIuOTY5IDUuMzFjLjAxLS4xMDMuMDMxLS4yMDQuMDMxLS4zMSAwLTEuNjU0LTEuMzQ2LTMtMy0zUzcgMy4zNDYgNyA1YzAgLjc2Mi4yOTUgMS40NTEuNzY1IDEuOTgxTDYuMDkxIDkuMjEyQTIuOTc3IDIuOTc3IDAgMCAwIDUgOWMtMS42NTQgMC0zIDEuMzQ2LTMgM3MxLjM0NiAzIDMgM2MuMTU5IDAgLjMxMy0uMDIzLjQ2NS0uMDQ3TDcuNCAxNy41MzJjLS4yNDguNDM2LS40LjkzMi0uNCAxLjQ2OCAwIDEuNjU0IDEuMzQ2IDMgMyAzYTIuOTk0IDIuOTk0IDAgMCAwIDIuODYzLTIuMTUzbDMuOTYyLS43OTJBMi45ODcgMi45ODcgMCAwIDAgMTkgMjBjMS42NTQgMCAzLTEuMzQ2IDMtM2EyLjk5NSAyLjk5NSAwIDAgMC0yLTIuODE1ek0xOSA4YTEuMDAxIDEuMDAxIDAgMSAxLTEgMWMwLS41NTEuNDQ4LTEgMS0xem0tOS00YTEuMDAxIDEuMDAxIDAgMSAxLTEgMWMwLS41NTEuNDQ4LTEgMS0xem0tNiA4YTEuMDAxIDEuMDAxIDAgMSAxIDEgMWMtLjU1MiAwLTEtLjQ0OS0xLTF6bTYgOGExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bTIuNzYxLTIuMTcyQTMuMDA1IDMuMDA1IDAgMCAwIDEwIDE2Yy0uMzg2IDAtLjc1Mi4wNzktMS4wOTEuMjEzbC0xLjY3NC0yLjIzMUM3LjcwNSAxMy40NTEgOCAxMi43NjIgOCAxMmMwLS41MzYtLjE1Mi0xLjAzMi0uMzk5LTEuNDY3bDEuOTM1LTIuNThjLjE1Mi4wMjQuMzA1LjA0Ny40NjQuMDQ3YTIuOTkgMi45OSAwIDAgMCAyLjExNi0uODc2bDMuOTE1IDEuNTY2Yy0uMDEuMTAzLS4wMzEuMjA0LS4wMzEuMzEgMCAxLjMwMi44MzkgMi40MDEgMiAyLjgxNXYyLjM2OWEyLjk5NiAyLjk5NiAwIDAgMC0yIDIuODE1YzAgLjA2MS4wMTUuMTE3LjAxOC4xNzdsLTMuMjU3LjY1MnpNMTkgMThhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNoYXBlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA2YzAtMS42NTQtMS4zNDYtMy0zLTNhMi45OTMgMi45OTMgMCAwIDAtMi44MTUgMmgtNi4zN0EyLjk5MyAyLjk5MyAwIDAgMCA2IDNDNC4zNDYgMyAzIDQuMzQ2IDMgNmMwIDEuMzAyLjgzOSAyLjQwMSAyIDIuODE1djYuMzY5QTIuOTk3IDIuOTk3IDAgMCAwIDMgMThjMCAxLjY1NCAxLjM0NiAzIDMgM2EyLjk5MyAyLjk5MyAwIDAgMCAyLjgxNS0yaDYuMzY5YTIuOTk0IDIuOTk0IDAgMCAwIDIuODE1IDJjMS42NTQgMCAzLTEuMzQ2IDMtM2EyLjk5NyAyLjk5NyAwIDAgMC0yLTIuODE2VjguODE2QTIuOTk2IDIuOTk2IDAgMCAwIDIxIDZ6bS0zLTFhMS4wMDEgMS4wMDEgMCAxIDEtMSAxYzAtLjU1MS40NDgtMSAxLTF6bS0yLjgxNSAxMmgtNi4zN0EyLjk5IDIuOTkgMCAwIDAgNyAxNS4xODRWOC44MTZBMi45OSAyLjk5IDAgMCAwIDguODE1IDdoNi4zNjlBMi45OSAyLjk5IDAgMCAwIDE3IDguODE1djYuMzY5QTIuOTkgMi45OSAwIDAgMCAxNS4xODUgMTd6TTYgNWExLjAwMSAxLjAwMSAwIDEgMS0xIDFjMC0uNTUxLjQ0OC0xIDEtMXptMCAxNGExLjAwMSAxLjAwMSAwIDAgMSAwLTIgMS4wMDEgMS4wMDEgMCAwIDEgMCAyem0xMiAwYTEuMDAxIDEuMDAxIDAgMCAxIDAtMiAxLjAwMSAxLjAwMSAwIDAgMSAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2hhcGVUcmlhbmdsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggMTVjLS4xODMgMC0uMzU4LjAyMi0uNTMyLjA1NEw4Ljk0NiA2LjUzMkM4Ljk3OCA2LjM1OSA5IDYuMTgyIDkgNmMwLTEuNjU0LTEuMzQ2LTMtMy0zUzMgNC4zNDYgMyA2YzAgMS4zMDIuODM5IDIuNDAxIDIgMi44MTV2Ni4zNjlBMi45OTcgMi45OTcgMCAwIDAgMyAxOGMwIDEuNjU0IDEuMzQ2IDMgMyAzYTIuOTkzIDIuOTkzIDAgMCAwIDIuODE1LTJoNi4zNjlhMi45OTQgMi45OTQgMCAwIDAgMi44MTUgMmMxLjY1NCAwIDMtMS4zNDYgMy0zUzE5LjY1NCAxNSAxOCAxNXptLTExIC4xODRWOC44MTZjLjMyOS0uMTE4LjYyOS0uMjkxLjg5NC0uNTA4bDcuNzk5IDcuNzk5YTIuOTYxIDIuOTYxIDAgMCAwLS41MDguODk0aC02LjM3QTIuOTkgMi45OSAwIDAgMCA3IDE1LjE4NHpNNiA1YTEuMDAxIDEuMDAxIDAgMSAxLTEgMWMwLS41NTEuNDQ4LTEgMS0xem0wIDE0YTEuMDAxIDEuMDAxIDAgMCAxIDAtMiAxLjAwMSAxLjAwMSAwIDAgMSAwIDJ6bTEyIDBhMS4wMDEgMS4wMDEgMCAwIDEgMC0yIDEuMDAxIDEuMDAxIDAgMCAxIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaGFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDE1YTMuNTEgMy41MSAwIDAgMCAyLjM2LS45M2w2LjI2IDMuNThhMy4wNiAzLjA2IDAgMCAwLS4xMi44NSAzLjUzIDMuNTMgMCAxIDAgMS4xNC0yLjU3bC02LjI2LTMuNThhMi43NCAyLjc0IDAgMCAwIC4xMi0uNzZsNi4xNS0zLjUyQTMuNDkgMy40OSAwIDEgMCAxNCA1LjVhMy4zNSAzLjM1IDAgMCAwIC4xMi44NUw4LjQzIDkuNkEzLjUgMy41IDAgMSAwIDUuNSAxNXptMTIgMmExLjUgMS41IDAgMSAxLTEuNSAxLjUgMS41IDEuNSAwIDAgMSAxLjUtMS41em0wLTEzQTEuNSAxLjUgMCAxIDEgMTYgNS41IDEuNSAxLjUgMCAwIDEgMTcuNSA0em0tMTIgNkExLjUgMS41IDAgMSAxIDQgMTEuNSAxLjUgMS41IDAgMCAxIDUuNSAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNy4wNVY0YTEgMSAwIDAgMC0xLTEgMSAxIDAgMCAwLS43LjI5bC03IDdhMSAxIDAgMCAwIDAgMS40Mmw3IDdBMSAxIDAgMCAwIDExIDE4di0zLjFoLjg1YTEwLjg5IDEwLjg5IDAgMCAxIDguMzYgMy43MiAxIDEgMCAwIDAgMS4xMS4zNUExIDEgMCAwIDAgMjIgMThjMC05LjEyLTguMDgtMTAuNjgtMTEtMTAuOTV6bS44NSA1LjgzYTE0Ljc0IDE0Ljc0IDAgMCAwLTIgLjEzQTEgMSAwIDAgMCA5IDE0djEuNTlMNC40MiAxMSA5IDYuNDFWOGExIDEgMCAwIDAgMSAxYy45MSAwIDguMTEuMiA5LjY3IDYuNDNhMTMuMDcgMTMuMDcgMCAwIDAtNy44Mi0yLjU1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNoZWtlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOHY4aDJWOGMwLTIuMjA2LTEuNzk0LTQtNC00SDV2MTZoMlY2aDRjMS4xMDMgMCAyIC44OTcgMiAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE2YzAgMS4xMDMtLjg5NyAyLTIgMmgtNFY4SDl2MTJoNmMyLjIwNiAwIDQtMS43OTQgNC00VjRoLTJ2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2hpZWxkQWx0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEuNDM4IDUuMDg5YTEuMDAyIDEuMDAyIDAgMCAwLS45NTkuMDE1Yy0uNjg0LjM4OS0xLjM1NS41NzctMi4wNTMuNTc3LTIuMDM1IDAtMy45NTItMS42MjktNS43MjItMy4zOS0uMzc1LS4zNzMtMS4wNjMtLjM3My0xLjQzOCAwQzkuNTkyIDMuOTU5IDcuNTk4IDUuNjYzIDUuNTEgNS42NjNjLS42OSAwLTEuMzUxLS4xODQtMi4wMTgtLjU2MS0uMjk4LS4xNjYtLjY1OC0uMTcxLS45Ni0uMDEycy0uNTAxLjQ2MS0uNTI4LjgwMWMtLjAxMS4xMjktLjk0NCAxMi44NzIgOS42ODMgMTYuMDQxYS45OS45OSAwIDAgMCAuMjg2LjA0MkgxMmMuMDk3IDAgLjE5Mi0uMDE0LjI4NS0uMDQxIDEwLjY1Ny0zLjE3IDkuNjk1LTE1LjkxNiA5LjY4NC0xNi4wNDRhMSAxIDAgMCAwLS41MzEtLjh6bS05LjQ1MiAxNC44NDJjLTYuOTc5LTIuMjU1LTcuOTM0LTkuNDEyLTguMDE0LTEyLjQ3Ny41MDUuMTQgMS4wMTkuMjA5IDEuNTM3LjIwOSAyLjQ5MiAwIDQuNjUtMS41NjcgNi40NzYtMy4yODMgMS44OTMgMS43ODggMy45ODMgMy4zMDEgNi40NDIgMy4zMDEuNTMgMCAxLjA1Ny0uMDc0IDEuNTc1LS4yMi0uMDc0IDMuMDY1LTEuMDIxIDEwLjIxNy04LjAxNiAxMi40N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaGllbGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjM0MiA4LjQ0NyAxLjEwNS0uNTUzQS45OTguOTk4IDAgMCAwIDIxLjggNi40bC0zLTRBMSAxIDAgMCAwIDE4IDJINmExIDEgMCAwIDAtLjguNGwtMyA0YTEgMSAwIDAgMCAuMzUyIDEuNDk0bDEuMTA1LjU1My0xLjEzMSAyLjI2MkE1LjA1MiA1LjA1MiAwIDAgMCAyIDEyLjk0NHYuNTkxYTYuMDI4IDYuMDI4IDAgMCAwIDMuODk0IDUuNjE4bDMuNDMxIDEuMjg2YTUuNDg4IDUuNDg4IDAgMCAxIDEuOTY5IDEuMjY4Ljk5Ny45OTcgMCAwIDAgMS40MTMgMCA1LjQ4NiA1LjQ4NiAwIDAgMSAxLjk2OS0xLjI2N2wzLjQzMi0xLjI4N0E2LjAzIDYuMDMgMCAwIDAgMjIgMTMuNTM1di0uNTkxYzAtLjc3MS0uMTgzLTEuNTQ1LS41MjctMi4yMzZsLTEuMTMxLTIuMjYxek0yMCAxMy41MzVhNC4wMTkgNC4wMTkgMCAwIDEtMi41OTYgMy43NDVsLTMuNDMxIDEuMjg3YTcuNSA3LjUgMCAwIDAtMS45NzQgMS4xMDEgNy41MTUgNy41MTUgMCAwIDAtMS45NzQtMS4xMDJMNi41OTYgMTcuMjhBNC4wMTkgNC4wMTkgMCAwIDEgNCAxMy41MzV2LS41OTFjMC0uNDYzLjEwOS0uOTI4LjMxNi0xLjM0MmwxLjEzMS0yLjI2MWEyLjAwMyAyLjAwMyAwIDAgMC0uODk1LTIuNjg0bC0uMDMzLS4wMTVMNi41IDRoMTFsMS45ODEgMi42NDItLjAzNC4wMTdhMi4wMDQgMi4wMDQgMCAwIDAtLjg5NSAyLjY4NGwxLjEzMSAyLjI2Yy4yMDguNDE0LjMxNy44NzguMzE3IDEuMzQxdi41OTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2hpZWxkUXVhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTk1IDYuOWEuOTk4Ljk5OCAwIDAgMC0uNTQ4LS43OTVsLTgtNGExIDEgMCAwIDAtLjg5NSAwbC04IDRhMS4wMDIgMS4wMDIgMCAwIDAtLjU0Ny43OTVjLS4wMTEuMTA3LS45NjEgMTAuNzY3IDguNTg5IDE1LjAxNGEuOTg3Ljk4NyAwIDAgMCAuODEyIDBjOS41NS00LjI0NyA4LjYtMTQuOTA2IDguNTg5LTE1LjAxNHpNMTIgMTkuODk3VjEySDUuNTFhMTUuNDczIDE1LjQ3MyAwIDAgMS0uNTQ0LTQuMzY1TDEyIDQuMTE4VjEyaDYuNDZjLS43NTkgMi43NC0yLjQ5OCA1Ljk3OS02LjQ2IDcuODk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNoaWVsZFggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjQ4IDYuMTA1LTgtNGExIDEgMCAwIDAtLjg5NSAwbC04IDRhMS4wMDIgMS4wMDIgMCAwIDAtLjU0Ny43OTVjLS4wMTEuMTA3LS45NjEgMTAuNzY3IDguNTg5IDE1LjAxNGEuOTkuOTkgMCAwIDAgLjgxMiAwYzkuNTUtNC4yNDcgOC42LTE0LjkwNiA4LjU4OS0xNS4wMTRhMS4wMDEgMS4wMDEgMCAwIDAtLjU0OC0uNzk1em0tOC40NDcgMTMuNzkyQzUuMjY1IDE2LjYyNSA0Ljk0NCA5LjY0MiA0Ljk5OSA3LjYzNWw3LjAzNC0zLjUxNyA3LjAyOSAzLjUxNWMuMDM4IDEuOTg5LS4zMjggOS4wMTgtNy4wMjkgMTIuMjY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjI5MyA4LjI5MyAxMiAxMC41ODYgOS43MDcgOC4yOTMgOC4yOTMgOS43MDcgMTAuNTg2IDEybC0yLjI5MyAyLjI5MyAxLjQxNCAxLjQxNEwxMiAxMy40MTRsMi4yOTMgMi4yOTMgMS40MTQtMS40MTRMMTMuNDE0IDEybDIuMjkzLTIuMjkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuOTk1IDYuOTAzYS45OTcuOTk3IDAgMCAwLS41NDctLjc5N2wtNy45NzMtNGEuOTk3Ljk5NyAwIDAgMC0uODk1LS4wMDJsLTguMDI3IDRjLS4yOTcuMTUtLjUwMi40MzctLjU0NC43NjctLjAxMy4wOTctMS4xNDUgOS43NDEgOC41NDEgMTUuMDA4YS45OTUuOTk1IDAgMCAwIC45NjktLjAwOWM5LjMwNy01LjI1OSA4LjUxNC0xNC41NzMgOC40NzYtMTQuOTY3em0tOC45NzcgMTIuOTQ0Yy02Ljg2LTQuMDEtNy4xNC0xMC4zNTItNy4wNjMtMTIuMjA1bDcuMDcxLTMuNTIzIDYuOTk4IDMuNTExYy4wMDUgMS44Ny0uNDgxIDguMjQzLTcuMDA2IDEyLjIxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTaG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjQ5M1wiLFwiY3lcIjpcIjEwLjQ5M1wiLFwiclwiOlwiMS40OTNcIn19LHtcInRhZ1wiOlwiZWxsaXBzZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE1LjVcIixcInJ4XCI6XCIzXCIsXCJyeVwiOlwiMi41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2hvcHBpbmdCYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjlhMSAxIDAgMCAwLTEtMWgtM1Y3YzAtMi43NTctMi4yNDMtNS01LTVTNyA0LjI0MyA3IDd2MUg0YTEgMSAwIDAgMC0xIDF2MTFjMCAxLjEwMy44OTcgMiAyIDJ6TTkgN2MwLTEuNjU0IDEuMzQ2LTMgMy0zczMgMS4zNDYgMyAzdjFIOVY3em0tNCAzaDJ2Mmgydi0yaDZ2Mmgydi0yaDJsLjAwMiAxMEg1VjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNob3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEyYy0xLjA5NSAwLTItLjkwNS0yLTIgMC0uMzU0LjEwMy0uNjgzLjI2OC0uOTczQzEyLjE3OCA5LjAyIDEyLjA5MiA5IDEyIDlhMy4wMiAzLjAyIDAgMCAwLTMgM2MwIDEuNjQyIDEuMzU4IDMgMyAzIDEuNjQxIDAgMy0xLjM1OCAzLTMgMC0uMDkyLS4wMi0uMTc4LS4wMjctLjI2OC0uMjkuMTY1LS42MTkuMjY4LS45NzMuMjY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTcuNjMzIDAtOS45MjcgNi42MTctOS45NDggNi42ODRMMS45NDYgMTJsLjEwNS4zMTZDMi4wNzMgMTIuMzgzIDQuMzY3IDE5IDEyIDE5czkuOTI3LTYuNjE3IDkuOTQ4LTYuNjg0bC4xMDYtLjMxNi0uMTA1LS4zMTZDMjEuOTI3IDExLjYxNyAxOS42MzMgNSAxMiA1em0wIDEyYy01LjM1MSAwLTcuNDI0LTMuODQ2LTcuOTI2LTVDNC41NzggMTAuODQyIDYuNjUyIDcgMTIgN2M1LjM1MSAwIDcuNDI0IDMuODQ2IDcuOTI2IDUtLjUwNCAxLjE1OC0yLjU3OCA1LTcuOTI2IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2hvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgOWEzLjAyIDMuMDIgMCAwIDAtMyAzYzAgMS42NDIgMS4zNTggMyAzIDMgMS42NDEgMCAzLTEuMzU4IDMtMyAwLTEuNjQxLTEuMzU5LTMtMy0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDVjLTcuNjMzIDAtOS45MjcgNi42MTctOS45NDggNi42ODRMMS45NDYgMTJsLjEwNS4zMTZDMi4wNzMgMTIuMzgzIDQuMzY3IDE5IDEyIDE5czkuOTI3LTYuNjE3IDkuOTQ4LTYuNjg0bC4xMDYtLjMxNi0uMTA1LS4zMTZDMjEuOTI3IDExLjYxNyAxOS42MzMgNSAxMiA1em0wIDEyYy01LjM1MSAwLTcuNDI0LTMuODQ2LTcuOTI2LTVDNC41NzggMTAuODQyIDYuNjUyIDcgMTIgN2M1LjM1MSAwIDcuNDI0IDMuODQ2IDcuOTI2IDUtLjUwNCAxLjE1OC0yLjU3OCA1LTcuOTI2IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2h1ZmZsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcgMTdoLTEuNTU5bC05LjctMTAuNjczQTEgMSAwIDAgMCA1LjAwMSA2SDJ2MmgyLjU1OWw0LjA5IDQuNS00LjA5IDQuNTAxSDJ2MmgzLjAwMWExIDEgMCAwIDAgLjc0LS4zMjdMMTAgMTMuOTg3bDQuMjU5IDQuNjg2YTEgMSAwIDAgMCAuNzQuMzI3SDE3djNsNS00LTUtNHYzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQ0MSA4SDE3djNsNS0zLjkzOEwxNyAzdjNoLTIuMDAxYTEgMSAwIDAgMC0uNzQuMzI3bC0zLjM2OCAzLjcwNyAxLjQ4IDEuMzQ2TDE1LjQ0MSA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOVY3aDZ2MTJINHptOCAwVjdoOFY1bC4wMDIgMTRIMTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMGgydjJINnptMCA0aDJ2Mkg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNpdGVtYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDEzLjAxaC03VjEwaDFjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0yaC00Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NGMwIDEuMTAzLjg5NyAyIDIgMmgxdjMuMDFINFYxOEgzdjRoNHYtNEg2di0yLjk5aDVWMThoLTF2NGg0di00aC0xdi0yLjk5aDVWMThoLTF2NGg0di00aC0xdi00Ljk5ek0xMCA4VjRoNGwuMDAyIDRIMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2tpcE5leHRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDE2IDUtNC01LTR6bTUtNHY0aDJWOGgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTa2lwTmV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3djEwbDctNXptOSAxMFY3aC0ydjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNraXBQcmV2aW91c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2VjhsLTUgNHpNOSA4djhoMlY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNraXBQcmV2aW91cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTYgNy03IDUgNyA1em0tNyA1VjdIN3YxMGgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNsZWVweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJlbGxpcHNlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEyXCIsXCJjeVwiOlwiMTUuNVwiLFwicnhcIjpcIjNcIixcInJ5XCI6XCIyLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA3Yy0yLjkwNSAwLTMuOTgzIDIuMzg2LTQgMy45OWwyIC4wMjFDOC4wMDIgMTAuODA0IDguMDc2IDkgMTAgOVY3em00IDB2MmMxLjgyNiAwIDEuOTkyIDEuNTM3IDIgMi4wMDdMMTcgMTFoMWMwLTEuNjA4LTEuMDY1LTQtNC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNsaWRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDE0LjVjLTEuNTggMC0yLjkwMyAxLjA2LTMuMzM3IDIuNUgydjJoMi4xNjNjLjQzNCAxLjQ0IDEuNzU3IDIuNSAzLjMzNyAyLjVzMi45MDMtMS4wNiAzLjMzNy0yLjVIMjJ2LTJIMTAuODM3Yy0uNDM0LTEuNDQtMS43NTctMi41LTMuMzM3LTIuNXptMCA1Yy0uODI3IDAtMS41LS42NzMtMS41LTEuNXMuNjczLTEuNSAxLjUtMS41UzkgMTcuMTczIDkgMThzLS42NzMgMS41LTEuNSAxLjV6bTktMTFjLTEuNTggMC0yLjkwMyAxLjA2LTMuMzM3IDIuNUgydjJoMTEuMTYzYy40MzQgMS40NCAxLjc1NyAyLjUgMy4zMzcgMi41czIuOTAzLTEuMDYgMy4zMzctMi41SDIydi0yaC0yLjE2M2MtLjQzNC0xLjQ0LTEuNzU3LTIuNS0zLjMzNy0yLjV6bTAgNWMtLjgyNyAwLTEuNS0uNjczLTEuNS0xLjVzLjY3My0xLjUgMS41LTEuNSAxLjUuNjczIDEuNSAxLjUtLjY3MyAxLjUtMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi44MzcgNUMxMi40MDMgMy41NiAxMS4wOCAyLjUgOS41IDIuNVM2LjU5NyAzLjU2IDYuMTYzIDVIMnYyaDQuMTYzQzYuNTk3IDguNDQgNy45MiA5LjUgOS41IDkuNXMyLjkwMy0xLjA2IDMuMzM3LTIuNWg5LjI4OFY1aC05LjI4OHpNOS41IDcuNUM4LjY3MyA3LjUgOCA2LjgyNyA4IDZzLjY3My0xLjUgMS41LTEuNVMxMSA1LjE3MyAxMSA2cy0uNjczIDEuNS0xLjUgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNsaWRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNWg5djJoLTl6TTIgN2g3djJoMlYzSDl2Mkgyem03IDEwaDEzdjJIOXptMTAtNmgzdjJoLTN6bS0yIDRWOS4wMTJoLTJWMTFIMnYyaDEzdjJ6TTcgMjF2LTZINXYySDJ2MmgzdjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU2xpZGVzaG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmg3djNIOHYyaDh2LTJoLTN2LTNoN2MxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTVWNWgxNmwuMDAxIDEwSDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAgMTMgNS0zLTUtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTbWlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjgyOSAxNC44MjhhNC4wNTUgNC4wNTUgMCAwIDEtMS4yNzIuODU4IDQuMDAyIDQuMDAyIDAgMCAxLTQuODc1LTEuNDVsLTEuNjU4IDEuMTE5YTYuMDYzIDYuMDYzIDAgMCAwIDEuNjIxIDEuNjIgNS45NjMgNS45NjMgMCAwIDAgMi4xNDguOTAzIDYuMDQyIDYuMDQyIDAgMCAwIDIuNDE1IDAgNS45NzIgNS45NzIgMCAwIDAgMi4xNDgtLjkwM2MuMzEzLS4yMTIuNjEyLS40NTguODg2LS43MzEuMjcyLS4yNzEuNTItLjU3MS43MzQtLjg4OWwtMS42NTgtMS4xMTlhNC4wMTcgNC4wMTcgMCAwIDEtLjQ4OS41OTJ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjQ5M1wiLFwiY3lcIjpcIjEwLjQ5M1wiLFwiclwiOlwiMS40OTNcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTb3J0QVogKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjcwNyAxNC43MDdBMSAxIDAgMCAwIDE5IDEzaC03djJoNC41ODZsLTQuMjkzIDQuMjkzQTEgMSAwIDAgMCAxMyAyMWg3di0yaC00LjU4Nmw0LjI5My00LjI5M3pNNyAzLjk5SDV2MTJIMmw0IDQgNC00SDd6TTE3IDNoLTJjLS40MTcgMC0uNzkuMjU5LS45MzcuNjQ5bC0yLjc1IDcuMzMzaDIuMTM3TDE0LjE5MyA5aDMuNjEzbC43NDMgMS45ODFoMi4xMzdsLTIuNzUtNy4zMzNBMSAxIDAgMCAwIDE3IDN6bS0yLjA1NyA0IC43NS0yaC42MTNsLjc1IDJoLTIuMTEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNvcnRBbHQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIwaDJWOGgzTDggNCA0IDhoM3ptMTMtNGgtM1Y0aC0ydjEyaC0zbDQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTb3J0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNiAyMCA0LTRIN1Y0SDV2MTJIMnptNS0xMmg5djJoLTl6bTAgNGg3djJoLTd6bTAtOGgxMXYySDExem0wIDEyaDV2MmgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTb3J0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDloOXYyaC05em0wIDRoN3YyaC03em0wLThoMTF2MkgxMXptMCAxMmg1djJoLTV6bS02IDNoMlY4aDNMNiA0IDIgOGgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNvcnRaQSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuNzA3IDE0LjcwN0ExIDEgMCAwIDAgMTkgMTNoLTd2Mmg0LjU4NmwtNC4yOTMgNC4yOTNBMSAxIDAgMCAwIDEzIDIxaDd2LTJoLTQuNTg2bDQuMjkzLTQuMjkzek02IDMuOTlsLTQgNGgzdjEyaDJ2LTEyaDN6TTE3IDNoLTJjLS40MTcgMC0uNzkuMjU5LS45MzcuNjQ5bC0yLjc1IDcuMzMzaDIuMTM3TDE0LjE5MyA5aDMuNjEzbC43NDMgMS45ODFoMi4xMzdsLTIuNzUtNy4zMzNBMSAxIDAgMCAwIDE3IDN6bS0yLjA1NyA0IC43NS0yaC42MTNsLjc1IDJoLTIuMTEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZINGw2IDZWMkg4em02LTExdjE3aDJWOGg0bC02LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC43ODcgOS4wMjNjLS4xMjUuMDI3LTEuODAzLjQxOC0zLjk1MyAxLjc3NC0uMzIzLTEuNTY3LTEuMjc5LTQuNTAxLTQuMTA4LTcuNDg1TDEyIDIuNTQ2bC0uNzI2Ljc2N0M4LjQzNSA2LjMwOCA3LjQ4MyA5LjI1IDcuMTYzIDEwLjgyNyA1LjAwNSA5LjQ0OCAzLjM0IDkuMDUyIDMuMjE4IDkuMDI0TDIgOC43NTJWMTBjMCA3LjI5IDMuOTI1IDEyIDEwIDEyIDUuOTgxIDAgMTAtNC44MjIgMTAtMTJWOC43NThsLTEuMjEzLjI2NXpNOC45OTkgMTIuMDM4Yy4wMDItLjAzMy4xNTItMy4xIDMuMDAxLTYuNTMyQzE0LjgxNCA4LjkwNiAxNC45OTkgMTIgMTUgMTJ2LjEyNWExOC45MzMgMTguOTMzIDAgMCAwLTMuMDEgMy4xNTQgMTkuODc3IDE5Ljg3NyAwIDAgMC0yLjk5MS0zLjExM3YtLjEyOHpNMTIgMjBjLTUuMzE2IDAtNy41NDktNC4xOTYtNy45MzctOC41NjQgMS42NTUuNzE4IDQuNjE2IDIuNDI2IDcuMTA3IDYuMTIzbC44NDEgMS4yNDkuODI1LTEuMjZjMi40MjYtMy43MDggNS40MjUtNS40MTEgNy4wOTYtNi4xMjJDMTkuNTM0IDE1LjY1NCAxNy4zMDQgMjAgMTIgMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3BhY2VCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDEzSDdWOUg1djZoMTRWOWgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTcGVha2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0yem0wIDE4SDZWNGgxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOWE0IDQgMCAxIDAtNC00IDQgNCAwIDAgMCA0IDR6bTAtNmEyIDIgMCAxIDEtMiAyIDIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMi4wMVwiLFwiY3lcIjpcIjdcIixcInJcIjpcIjJcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTcHJheUNhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDAyIDJoLTRhMSAxIDAgMCAwLTEgMXYzLjgxMmE1Ljk5OCA1Ljk5OCAwIDAgMC0zIDUuMTg4di45ODhMMyAxM2wuMDAyLjA3MlYyMWExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTF2LTlhNS45OTkgNS45OTkgMCAwIDAtMy01LjE4OFYzYTEgMSAwIDAgMC0xLTF6bS0zIDRWNGgydjJoLTJ6bTUuMDAxIDE0aC04di02aDh2NnptLTguMDAxLThjMC0yLjIwNiAxLjc5NC00IDQtNHM0IDEuNzk0IDQgNGgtOHptOC4wMDEtOWgydjJoLTJ6TTE2IDNoMnYyaC0yem0wIDNoMnYyaC0yem0zLTNoMnYyaC0yem0wIDNoMnYyaC0yem0wIDNoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNwcmVhZHNoZWV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA1YzAtMS4xMDMtLjg5Ny0yLTItMkg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0yVjV6TTUgMTlWNWgxNGwuMDAyIDE0SDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3aDEuOTk4djJIN3ptNCAwaDZ2MmgtNnptLTQgNGgxLjk5OHYySDd6bTQgMGg2djJoLTZ6bS00IDRoMS45OTh2Mkg3em00IDBoNnYyaC02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNxdWFyZVJvdW5kZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJIN0M0LjI0MyAyIDIgNC4yNDMgMiA3djEwYzAgMi43NTcgMi4yNDMgNSA1IDVoMTBjMi43NTcgMCA1LTIuMjQzIDUtNVY3YzAtMi43NTctMi4yNDMtNS01LTV6bTMgMTVjMCAxLjY1NC0xLjM0NiAzLTMgM0g3Yy0xLjY1NCAwLTMtMS4zNDYtMy0zVjdjMC0xLjY1NCAxLjM0Ni0zIDMtM2gxMGMxLjY1NCAwIDMgMS4zNDYgMyAzdjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgM0g0YTEgMSAwIDAgMC0xIDF2MTZhMSAxIDAgMCAwIDEgMWgxNmExIDEgMCAwIDAgMS0xVjRhMSAxIDAgMCAwLTEtMXptLTEgMTZINVY1aDE0djE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuNTE2IDE0LjMyMy0xLjQ5IDYuNDUyYS45OTguOTk4IDAgMCAwIDEuNTI5IDEuMDU3TDEyIDE4LjIwMmw1LjQ0NSAzLjYzYTEuMDAxIDEuMDAxIDAgMCAwIDEuNTE3LTEuMTA2bC0xLjgyOS02LjQgNC41MzYtNC4wODJhMSAxIDAgMCAwLS41OS0xLjc0bC01LjcwMS0uNDU0LTIuNDY3LTUuNDYxYS45OTguOTk4IDAgMCAwLTEuODIyIDBMOC42MjIgOC4wNWwtNS43MDEuNDUzYTEgMSAwIDAgMC0uNjE5IDEuNzEzbDQuMjE0IDQuMTA3em0yLjg1My00LjMyNmEuOTk4Ljk5OCAwIDAgMCAuODMyLS41ODZMMTIgNS40M2wxLjc5OSAzLjk4MWEuOTk4Ljk5OCAwIDAgMCAuODMyLjU4NmwzLjk3Mi4zMTUtMy4yNzEgMi45NDRjLS4yODQuMjU2LS4zOTcuNjUtLjI5MyAxLjAxOGwxLjI1MyA0LjM4NS0zLjczNi0yLjQ5MWEuOTk1Ljk5NSAwIDAgMC0xLjEwOSAwbC0zLjkwNCAyLjYwMyAxLjA1LTQuNTQ2YTEgMSAwIDAgMC0uMjc2LS45NGwtMy4wMzgtMi45NjIgNC4wOS0uMzI2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuNzU4IDE2LjI0MyAxLjQxNC0xLjQxNWEzLjk3IDMuOTcgMCAwIDEtMS4xNzMtMi44MzFjMC0xLjA2OC40MTctMi4wNzEgMS4xNzMtMi44MjVMNy43NTggNy43NTZhNS45NTcgNS45NTcgMCAwIDAtMS43NiA0LjI0YzAgMS42MDQuNjI1IDMuMTEyIDEuNzYgNC4yNDd6bTguNDg0IDBBNS45NiA1Ljk2IDAgMCAwIDE4IDEyYTUuOTYgNS45NiAwIDAgMC0xLjc1OC00LjI0M2wtMS40MTQgMS40MTRDMTUuNTg0IDkuOTI3IDE2IDEwLjkzMiAxNiAxMnMtLjQxNiAyLjA3My0xLjE3MiAyLjgyOWwxLjQxNCAxLjQxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM0NCAxNy42NTdhNy45NTMgNy45NTMgMCAwIDEtMi4zNDUtNS42NTljMC0yLjEzNy44MzMtNC4xNDUgMi4zNDUtNS42NTRMNC45MyA0LjkyOWMtMS44OSAxLjg4Ni0yLjkzMSA0LjM5Ny0yLjkzMSA3LjA2OXMxLjA0MSA1LjE4MyAyLjkzMSA3LjA3M2wxLjQxNC0xLjQxNHpNMTcuNjU3IDYuMzQzQTcuOTQ4IDcuOTQ4IDAgMCAxIDIwIDEyYTcuOTQ4IDcuOTQ4IDAgMCAxLTIuMzQzIDUuNjU3bDEuNDE0IDEuNDE0QTkuOTMyIDkuOTMyIDAgMCAwIDIyIDEyYTkuOTM0IDkuOTM0IDAgMCAwLTIuOTI5LTcuMDcxbC0xLjQxNCAxLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTdGF0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMTJhMiAyIDAgMCAwLS43MDMuMTMzbC0yLjM5OC0xLjk2M2MuMDU5LS4yMTQuMTAxLS40MzYuMTAxLS42N0MxNyA4LjExNCAxNS44ODYgNyAxNC41IDdTMTIgOC4xMTQgMTIgOS41YzAgLjM5Ni4xLjc2NS4yNjIgMS4wOTdsLTIuOTA5IDMuNDM4QTIuMDYgMi4wNiAwIDAgMCA5IDE0Yy0uMTc5IDAtLjM0OC4wMy0uNTEyLjA3NGwtMi41NjMtMi41NjNDNS45NyAxMS4zNDggNiAxMS4xNzkgNiAxMWMwLTEuMTA4LS44OTItMi0yLTJzLTIgLjg5Mi0yIDIgLjg5MiAyIDIgMmMuMTc5IDAgLjM0OC0uMDMuNTEyLS4wNzRsMi41NjMgMi41NjNBMS45MDYgMS45MDYgMCAwIDAgNyAxNmMwIDEuMTA4Ljg5MiAyIDIgMnMyLS44OTIgMi0yYzAtLjIzNy0uMDQ4LS40Ni0uMTIzLS42NzFsMi45MTMtMy40NDJjLjIyNy4wNjYuNDYyLjExMy43MS4xMTNhMi40OCAyLjQ4IDAgMCAwIDEuMTMzLS4yODFsMi4zOTkgMS45NjNBMi4wNzcgMi4wNzcgMCAwIDAgMTggMTRjMCAxLjEwOC44OTIgMiAyIDJzMi0uODkyIDItMi0uODkyLTItMi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0aWNrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxLjc5NiA5Ljk4MkMyMC44NDkgNS4zNTcgMTYuNzI5IDIgMTIgMiA2LjQ4NiAyIDIgNi40ODYgMiAxMmMwIDQuNzI5IDMuMzU3IDguODQ5IDcuOTgyIDkuNzk2YS45ODguOTg4IDAgMCAwIC45MDgtLjI3MmwxMC42MzMtMTAuNjMzYy4yMzgtLjIzOC4zNC0uNTc4LjI3My0uOTA5ek0xMSAxOGE3LjkzIDcuOTMgMCAwIDEgMS4zNjUtNC40NzEgOC4xOCA4LjE4IDAgMCAxIC45NzgtMS4xODYgOC4yMTEgOC4yMTEgMCAwIDEgMS4xODQtLjk3NyA4LjEyOCA4LjEyOCAwIDAgMSAxLjM2LS43MzhjLjQ4MS0uMjAzLjk4Ni0uMzYgMS41MDEtLjQ2NmE4LjExMiA4LjExMiAwIDAgMSAyLjE3LS4xMzRsLTguNTI5IDguNTI5Yy0uMDEzLS4xODUtLjAyOS0uMzctLjAyOS0uNTU3em0tNy02YzAtNC40MTEgMy41ODktOCA4LTggMi45MDkgMCA1LjUyOCAxLjU4OSA2LjkyOSA0LjAwNWE5Ljk5IDkuOTkgMCAwIDAtMS45NDMuMTk4Yy0uNjQzLjEzMi0xLjI3NC4zMjgtMS44NzkuNTgzYTEwLjE1IDEwLjE1IDAgMCAwLTEuNjk5LjkyM2MtLjUzMy4zNjEtMS4wMy43NzEtMS40NzkgMS4yMnMtLjg1OC45NDUtMS4yMjEgMS40OGMtLjM1OS41MzMtLjY3IDEuMTA0LS45MjIgMS42OThBMTAuMDEzIDEwLjAxMyAwIDAgMCA5IDE4YzAgLjQ5MS4wNDguOTc5LjExOSAxLjQ2MUM2LjA4OSAxOC4yODggNCAxNS4zMzYgNCAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTdG9wQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5aDZ2Nkg5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2gxMHYxMEg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNWMtNC40MTEgMC04IDMuNTg5LTggOHMzLjU4OSA4IDggOCA4LTMuNTg5IDgtOC0zLjU4OS04LTgtOHptMCAxNGMtMy4zMDkgMC02LTIuNjkxLTYtNnMyLjY5MS02IDYtNiA2IDIuNjkxIDYgNi0yLjY5MSA2LTYgNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA5aDJ2NWgtMnpNOSAyaDZ2Mkg5em0xMC4yOTMgNS43MDctMi0yIDEuNDE0LTEuNDE0IDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTdG9yZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIgNWMwLTEuNjU0LTEuMzQ2LTMtMy0zSDVDMy4zNDYgMiAyIDMuMzQ2IDIgNXYyLjgzMWMwIDEuMDUzLjM4MiAyLjAxIDEgMi43NDZWMTljMCAxLjEwMy44OTcgMiAyIDJoMTRjMS4xMDMgMCAyLS44OTcgMi0ydi04LjQyNGMuNjE4LS43MzUgMS0xLjY5MiAxLTIuNzQ2VjV6bS0yIDB2Mi44MzFjMCAxLjE0LS44NDkgMi4xMTItMS44OTEgMi4xNjdMMTggMTBjLTEuMTAzIDAtMi0uODk3LTItMlY0aDNjLjU1MiAwIDEgLjQ0OSAxIDF6TTEwIDRoNHY0YzAgMS4xMDMtLjg5NyAyLTIgMnMtMi0uODk3LTItMlY0ek00IDVjMC0uNTUxLjQ0OC0xIDEtMWgzdjRjMCAxLjEwMy0uODk3IDItMiAybC0uMTA5LS4wMDNDNC44NDkgOS45NDMgNCA4Ljk3MSA0IDcuODMxVjV6bTYgMTR2LTNoNHYzaC00em02IDB2LTNjMC0xLjEwMy0uODk3LTItMi0yaC00Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2M0g1di03LjEzMWMuMjU0LjA2Ny41MTcuMTExLjc4Ny4xMjVBMy45ODggMy45ODggMCAwIDAgOSAxMC42NDNjLjczMy44MzIgMS44MDcgMS4zNTcgMyAxLjM1N3MyLjI2Ny0uNTI1IDMtMS4zNTdhMy45ODggMy45ODggMCAwIDAgMy4yMTMgMS4zNTFjLjI3MS0uMDE0LjUzMy0uMDU4Ljc4Ny0uMTI1VjE5aC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOS4xNDggMi45NzFBMi4wMDggMi4wMDggMCAwIDAgMTcuNDM0IDJINi41NjZjLS42OTggMC0xLjM1NS4zNzItMS43MTQuOTcxTDIuMTQzIDcuNDg1QS45OTUuOTk1IDAgMCAwIDIgOGEzLjk3IDMuOTcgMCAwIDAgMSAyLjYxOFYxOWMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJ2LTguMzgyQTMuOTcgMy45NyAwIDAgMCAyMiA4YS45OTUuOTk1IDAgMCAwLS4xNDMtLjUxNWwtMi43MDktNC41MTR6bS44MzYgNS4yOEEyLjAwMyAyLjAwMyAwIDAgMSAxOCAxMGMtMS4xMDMgMC0yLS44OTctMi0yIDAtLjA2OC0uMDI1LS4xMjgtLjAzOS0uMTkybC4wMi0uMDA0TDE1LjIyIDRoMi4yMTRsMi41NSA0LjI1MXpNMTAuODE5IDRoMi4zNjFsLjgxMyA0LjA2NUMxMy45NTggOS4xMzcgMTMuMDggMTAgMTIgMTBzLTEuOTU4LS44NjMtMS45OTMtMS45MzVMMTAuODE5IDR6TTYuNTY2IDRIOC43OGwtLjc2IDMuODA0LjAyLjAwNEM4LjAyNSA3Ljg3MiA4IDcuOTMyIDggOGMwIDEuMTAzLS44OTcgMi0yIDJhMi4wMDMgMi4wMDMgMCAwIDEtMS45ODQtMS43NDlMNi41NjYgNHpNMTAgMTl2LTNoNHYzaC00em02IDB2LTNjMC0xLjEwMy0uODk3LTItMi0yaC00Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2M0g1di03LjE0MmMuMzIxLjA4My42NTIuMTQyIDEgLjE0MmEzLjk5IDMuOTkgMCAwIDAgMy0xLjM1N2MuNzMzLjgzMiAxLjgwNyAxLjM1NyAzIDEuMzU3czIuMjY3LS41MjUgMy0xLjM1N0EzLjk5IDMuOTkgMCAwIDAgMTggMTJjLjM0OCAwIC42NzktLjA1OSAxLS4xNDJWMTloLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjRcIixcInJcIjpcIjJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOGgydi01aDJWOWMwLTEuMTAzLS44OTctMi0yLTJoLTRjLTEuMTAzIDAtMiAuODk3LTIgMnY0aDJ2NWgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE4LjQ0NiAxMS4zODYtLjg5MyAxLjc4OUMxOS4xMDggMTMuOTUgMjAgMTQuOTggMjAgMTZjMCAxLjg5Mi0zLjI4NSA0LTggNHMtOC0yLjEwOC04LTRjMC0xLjAyLjg5Mi0yLjA1IDIuNDQ2LTIuODI1bC0uODkzLTEuNzg5QzMuMjk1IDEyLjUxMiAyIDE0LjE5MyAyIDE2YzAgMy4zNjQgNC4zOTMgNiAxMCA2czEwLTIuNjM2IDEwLTZjMC0xLjgwNy0xLjI5NS0zLjQ4OC0zLjU1NC00LjYxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTdHJpa2V0aHJvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAxMWgtOGMtNCAwLTQtMS44MTYtNC0yLjVDOCA3Ljg4MiA4IDYgMTIgNmMyLjggMCAyLjk5IDEuNjc4IDMgMi4wMTRMMTYgOGgxYzAtMS4zODQtMS4wNDUtNC01LTQtNS40MTYgMC02IDMuMTQ3LTYgNC41IDAgLjcyOC4xNDggMS42NjcuNzM2IDIuNUg0djJoMTZ2LTJ6bS04IDdjLTMuNzkzIDAtMy45OS0xLjgxNS00LTJINmMwIC4wNC4wNjkgNCA2IDQgNS4yMjEgMCA2LTIuODE5IDYtNC41IDAtLjE0Ni0uMDA5LS4zMTctLjAyOC0uNWgtMi4wMDZjLjAzMi4yLjAzNC4zNzYuMDM0LjUgMCAuNjg0IDAgMi41LTQgMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN1YmRpcmVjdG9yeUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEzaC02di0zbC01IDQgNSA0di0zaDdhMSAxIDAgMCAwIDEtMVY1aC0ydjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3ViZGlyZWN0b3J5UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEzSDhWNUg2djlhMSAxIDAgMCAwIDEgMWg3djNsNS00LTUtNHYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVN1biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi45OTMgMTJjMCAyLjc2MSAyLjI0NiA1LjAwNyA1LjAwNyA1LjAwN3M1LjAwNy0yLjI0NiA1LjAwNy01LjAwN1MxNC43NjEgNi45OTMgMTIgNi45OTMgNi45OTMgOS4yMzkgNi45OTMgMTJ6TTEyIDguOTkzYzEuNjU4IDAgMy4wMDcgMS4zNDkgMy4wMDcgMy4wMDdTMTMuNjU4IDE1LjAwNyAxMiAxNS4wMDcgOC45OTMgMTMuNjU4IDguOTkzIDEyIDEwLjM0MiA4Ljk5MyAxMiA4Ljk5M3pNMTAuOTk4IDE5aDJ2M2gtMnptMC0xN2gydjNoLTJ6bS05IDloM3YyaC0zem0xNyAwaDN2MmgtM3pNNC4yMTkgMTguMzYzbDIuMTItMi4xMjIgMS40MTUgMS40MTQtMi4xMiAyLjEyMnpNMTYuMjQgNi4zNDRsMi4xMjItMi4xMjIgMS40MTQgMS40MTQtMi4xMjIgMi4xMjJ6TTYuMzQyIDcuNzU5IDQuMjIgNS42MzdsMS40MTUtMS40MTQgMi4xMiAyLjEyMnptMTMuNDM0IDEwLjYwNS0xLjQxNCAxLjQxNC0yLjEyMi0yLjEyMiAxLjQxNC0xLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlTdXBwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEydjQuMTQzQzIgMTcuMTY3IDIuODk3IDE4IDQgMThoMWExIDEgMCAwIDAgMS0xdi01LjE0M2ExIDEgMCAwIDAtMS0xaC0uOTA4QzQuNjQ4IDYuOTg3IDcuOTc4IDQgMTIgNHM3LjM1MiAyLjk4NyA3LjkwOCA2Ljg1N0gxOWExIDEgMCAwIDAtMSAxVjE4YzAgMS4xMDMtLjg5NyAyLTIgMmgtMnYtMWgtNHYzaDZjMi4yMDYgMCA0LTEuNzk0IDQtNCAxLjEwMyAwIDItLjgzMyAyLTEuODU3VjEyYzAtNS41MTQtNC40ODYtMTAtMTAtMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3dpbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxOS4wMDNcIixcImN5XCI6XCI2LjAwMlwiLFwiclwiOlwiMi4wMDJcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44NzUgMTMuMjE5Yy0uNTY3LjQ1My0uOTc4Ljc4MS0xLjg3OC43ODEtLjg5OSAwLTEuMjg4LS4zMTEtMS44NzYtLjc4MS0uNjgtLjU0My0xLjUyNS0xLjIxOS0zLjEyNy0xLjIxOS0xLjYwMSAwLTIuNDQ1LjY3Ni0zLjEyNCAxLjIxOS0uNTg4LjQ3LS45NzUuNzgxLTEuODc1Ljc4MS0uODk4IDAtMS4yODYtLjMxMS0xLjg3My0uNzhDNC40NDMgMTIuNjc2IDMuNiAxMiAyIDEydjJjLjg5NyAwIDEuMjg1LjMxMSAxLjg3Mi43OC42NzkuNTQ0IDEuNTIzIDEuMjIgMy4xMjMgMS4yMnMyLjQ0Ni0uNjc2IDMuMTI1LTEuMjJjLjU4Ny0uNDcuOTc2LS43OCAxLjg3NC0uNzguOSAwIDEuMzExLjMyOCAxLjg3OC43ODEuNjc5LjU0MyAxLjUyNCAxLjIxOSAzLjEyNSAxLjIxOSAxLjYwMiAwIDIuNDQ3LS42NzYgMy4xMjctMS4yMTkuNTg4LS40Ny45NzctLjc4MSAxLjg3Ni0uNzgxdi0yYy0xLjYwMSAwLTIuNDQ2LjY3Ni0zLjEyNSAxLjIxOXpNMTYuOTk3IDE5Yy0uODk5IDAtMS4yODgtLjMxMS0xLjg3Ni0uNzgxLS42OC0uNTQzLTEuNTI1LTEuMjE5LTMuMTI3LTEuMjE5LTEuNjAxIDAtMi40NDUuNjc2LTMuMTI0IDEuMjE5LS41ODguNDctLjk3NS43ODEtMS44NzUuNzgxLS44OTggMC0xLjI4Ni0uMzExLTEuODczLS43OEM0LjQ0MyAxNy42NzYgMy42IDE3IDIgMTd2MmMuODk3IDAgMS4yODUuMzExIDEuODcyLjc4LjY3OS41NDQgMS41MjMgMS4yMiAzLjEyMyAxLjIyczIuNDQ2LS42NzYgMy4xMjUtMS4yMmMuNTg3LS40Ny45NzYtLjc4IDEuODc0LS43OC45IDAgMS4zMTEuMzI4IDEuODc4Ljc4MS42NzkuNTQzIDEuNTI0IDEuMjE5IDMuMTI1IDEuMjE5IDEuNjAyIDAgMi40NDctLjY3NiAzLjEyNy0xLjIxOS41ODgtLjQ3Ljk3Ny0uNzgxIDEuODc2LS43ODF2LTJjLTEuNjAxIDAtMi40NDYuNjc2LTMuMTI1IDEuMjE5LS41NjcuNDUzLS45NzguNzgxLTEuODc4Ljc4MXpNMTEgNS40MTlsMi4xMDQgMi4xMDQtMi4wNTcgMi41N2MuMjg2LS4wNTYuNTk2LS4wOTMuOTQ3LS4wOTMgMS42MDIgMCAyLjQ0Ny42NzYgMy4xMjcgMS4yMTkuNTg4LjQ3Ljk3Ny43ODEgMS44NzYuNzgxLjkgMCAxLjMxMS0uMzI4IDEuODc4LS43ODEuMTMyLS4xMDUuMjc0LS4yMTcuNDIzLS4zMjZsLTIuMDk2LTIuMDkuMDA1LS4wMDUtNS41LTUuNWEuOTk5Ljk5OSAwIDAgMC0xLjQxNCAwbC00IDQgMS40MTQgMS40MTRMMTEgNS40MTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpU3luYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMgNy4xMDEuMDEuMDAxYTQuOTc4IDQuOTc4IDAgMCAxIDIuNTI2IDEuMzYyIDUuMDA1IDUuMDA1IDAgMCAxIDEuMzYzIDIuNTI4IDUuMDYxIDUuMDYxIDAgMCAxLS4wMDEgMi4wMTYgNC45NzYgNC45NzYgMCAwIDEtMS4zNjMgMi41MjdsMS40MTQgMS40MTRhNy4wMTQgNy4wMTQgMCAwIDAgMS45MDgtMy41NCA2Ljk4IDYuOTggMCAwIDAgMC0yLjgxOSA2Ljk1NyA2Ljk1NyAwIDAgMC0xLjkwNy0zLjUzOSA2Ljk3IDYuOTcgMCAwIDAtMi4yMjMtMS41IDYuOTIxIDYuOTIxIDAgMCAwLTEuMzE1LS40MDhjLS4xMzctLjAyOC0uMjc1LS4wNDMtLjQxMi0uMDYzVjJMOSA2bDQgNFY3LjEwMXptLTcuNDUgNy42MjNjLjE3NC40MTIuMzkyLjgxMi42NDYgMS4xOS4yNDkuMzcuNTM3LjcxOC44NTQgMS4wMzRhNy4wMzYgNy4wMzYgMCAwIDAgMi4yMjQgMS41MDFjLjQyNS4xOC44NjguMzE3IDEuMzE1LjQwOC4xNjcuMDM0LjMzOC4wNTYuNTA4LjA3OHYyLjk0NGw0LTQtNC00djMuMDNjLS4wMzUtLjAwNi0uMDcyLS4wMDMtLjEwNy0uMDExYTQuOTc4IDQuOTc4IDAgMCAxLTIuNTI2LTEuMzYyIDQuOTk0IDQuOTk0IDAgMCAxIC4wMDEtNy4wNzFMNy4wNTEgNy4wNWE3LjAxIDcuMDEgMCAwIDAtMS41IDIuMjI0QTYuOTc0IDYuOTc0IDAgMCAwIDUgMTJhNi45OTcgNi45OTcgMCAwIDAgLjU1IDIuNzI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyYy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTZjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0yVjRjMC0xLjEwMy0uODk3LTItMi0ySDZ6bTAgMTVWNWgxMmwuMDAyIDEySDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMjFoMTUuODkzYzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTRjMCAxLjEwMy44OTcgMiAyIDJ6bTAtMnYtNWg0djVINHpNMTQgN3Y1aC00VjdoNHpNOCA3djVINFY3aDR6bTIgMTJ2LTVoNHY1aC00em02IDB2LTVoMy44OTR2NUgxNnptMy44OTMtN0gxNlY3aDMuODkzdjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGFjaG9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNEM2LjQ4NiA0IDIgOC40ODYgMiAxNGE5Ljg5IDkuODkgMCAwIDAgMS4wNTEgNC40NDVjLjE3LjM0LjUxNi41NTUuODk1LjU1NWgxNi4xMDdjLjM3OSAwIC43MjYtLjIxNS44OTYtLjU1NUE5Ljg5IDkuODkgMCAwIDAgMjIgMTRjMC01LjUxNC00LjQ4Ni0xMC0xMC0xMHptNy40MSAxM0g0LjU5QTcuODc1IDcuODc1IDAgMCAxIDQgMTRjMC00LjQxMSAzLjU4OS04IDgtOHM4IDMuNTg5IDggOGE3Ljg3NSA3Ljg3NSAwIDAgMS0uNTkgM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45MzkgMTIuOTM5YTEuNTMgMS41MyAwIDAgMCAwIDIuNTYxIDEuNTMgMS41MyAwIDAgMCAyLjEyMS0uNDRsMy45NjItNi4wMzhhLjAzNC4wMzQgMCAwIDAgMC0uMDM1LjAzMy4wMzMgMCAwIDAtLjA0NS0uMDFsLTYuMDM4IDMuOTYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRhZ0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuODY4IDQuNTA0QTEgMSAwIDAgMCAxNyA0SDNhMSAxIDAgMCAwLS44NjggMS40OTZMNS44NDkgMTJsLTMuNzE3IDYuNTA0QTEgMSAwIDAgMCAzIDIwaDE0YTEgMSAwIDAgMCAuODY4LS41MDRsNC03YS45OTguOTk4IDAgMCAwIDAtLjk5MmwtNC03ek0xNi40MiAxOEg0LjcyNGwzLjE0NS01LjUwNGEuOTk4Ljk5OCAwIDAgMCAwLS45OTJMNC43MjQgNkgxNi40MmwzLjQyOSA2LTMuNDI5IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0SDguNTE1YTIgMiAwIDAgMC0xLjYyNy44MzhsLTQuNzAxIDYuNTgxYS45OTcuOTk3IDAgMCAwIDAgMS4xNjJsNC43MDEgNi41ODFBMiAyIDAgMCAwIDguNTE1IDIwSDIwYzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAxNEg4LjUxNWwtNC4yODYtNiA0LjI4Ni02SDIwdjEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRhcmdldExvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxMlwiLFwiclwiOlwiM1wifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDQuMDY5VjJoLTJ2Mi4wNjlBOC4wMDggOC4wMDggMCAwIDAgNC4wNjkgMTFIMnYyaDIuMDY5QTguMDA3IDguMDA3IDAgMCAwIDExIDE5LjkzMVYyMmgydi0yLjA2OUE4LjAwNyA4LjAwNyAwIDAgMCAxOS45MzEgMTNIMjJ2LTJoLTIuMDY5QTguMDA4IDguMDA4IDAgMCAwIDEzIDQuMDY5ek0xMiAxOGMtMy4zMDkgMC02LTIuNjkxLTYtNnMyLjY5MS02IDYtNiA2IDIuNjkxIDYgNi0yLjY5MSA2LTYgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUYXNrWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyMGMwIDEuMTAzLjg5NyAyIDIgMmgxNGMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJoLTJhMSAxIDAgMCAwLTEtMUg4YTEgMSAwIDAgMC0xIDFINWMtMS4xMDMgMC0yIC44OTctMiAydjE1ek01IDVoMnYyaDEwVjVoMnYxNUg1VjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMjkyIDEwLjI5NSAxMiAxMi41ODdsLTIuMjkyLTIuMjkyLTEuNDE0IDEuNDE0IDIuMjkyIDIuMjkyLTIuMjkyIDIuMjkyIDEuNDE0IDEuNDE0TDEyIDE1LjQxNWwyLjI5MiAyLjI5MiAxLjQxNC0xLjQxNC0yLjI5Mi0yLjI5MiAyLjI5Mi0yLjI5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDIyaDE0YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMmgtMmExIDEgMCAwIDAtMS0xSDhhMSAxIDAgMCAwLTEgMUg1Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTVjMCAxLjEwMy44OTcgMiAyIDJ6TTUgNWgydjJoMTBWNWgydjE1SDVWNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMSAxMy41ODYtMS43OTMtMS43OTMtMS40MTQgMS40MTRMMTEgMTYuNDE0bDUuMjA3LTUuMjA3LTEuNDE0LTEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRheGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjc3MiAxMC4xNTYtMS4zNjgtNC4xMDVBMi45OTUgMi45OTUgMCAwIDAgMTYuNTU5IDRIMTRWMmgtNHYySDcuNDQxYTIuOTk1IDIuOTk1IDAgMCAwLTIuODQ1IDIuMDUxbC0xLjM2OCA0LjEwNUEyLjAwMyAyLjAwMyAwIDAgMCAyIDEydjVjMCAuNzUzLjQyMyAxLjQwMiAxLjAzOSAxLjc0My0uMDEzLjA2Ni0uMDM5LjEyNi0uMDM5LjE5NVYyMWExIDEgMCAwIDAgMSAxaDFhMSAxIDAgMCAwIDEtMXYtMmgxMnYyYTEgMSAwIDAgMCAxIDFoMWExIDEgMCAwIDAgMS0xdi0yLjA2MmMwLS4wNjktLjAyNi0uMTMtLjAzOS0uMTk1QTEuOTkzIDEuOTkzIDAgMCAwIDIyIDE3di01YzAtLjgyOS0uNTA4LTEuNTQxLTEuMjI4LTEuODQ0ek00IDE3di01aDE2bC4wMDIgNUg0ek03LjQ0MSA2aDkuMTE3Yy40MzEgMCAuODEzLjI3NC45NDkuNjg0TDE4LjYxMyAxMEg1LjM4N2wxLjEwNS0zLjMxNkExIDEgMCAwIDEgNy40NDEgNnpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjYuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTcuNVwiLFwiY3lcIjpcIjE0LjVcIixcInJcIjpcIjEuNVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRlbm5pc0JhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTI5IDE5LjA4MWMxLjg5NSAxLjg5NSA0LjQwNSAyLjkzOCA3LjA3MSAyLjkzOHM1LjE3Ny0xLjA0MyA3LjA3MS0yLjkzOGMzLjg5OS0zLjg5OSAzLjg5OS0xMC4yNDMgMC0xNC4xNDNDMTcuMTc3IDMuMDQ0IDE0LjY2NSAyIDEyIDJTNi44MjMgMy4wNDQgNC45MjkgNC45MzhjLTMuODk5IDMuODk5LTMuODk5IDEwLjI0NCAwIDE0LjE0M3ptMTIuNzI4LTEuNDE0YTcuOTY5IDcuOTY5IDAgMCAxLTMuODEzIDIuMTI5Yy0uMDA5LTEuNjAyLjU4Ni0zLjE0NiAxLjY5MS00LjI1MSAxLjE2My0xLjE2MyAyLjczMi0xLjgyOCA0LjI3Ny0xLjg1MWE3Ljk0NSA3Ljk0NSAwIDAgMS0yLjE1NSAzLjk3M3ptMi4zMjUtNS45NjVjLTIuMTI0LS4wMjEtNC4yODQuODUzLTUuODYxIDIuNDI5LTEuNTMyIDEuNTMyLTIuMzI3IDMuNjgtMi4yNjMgNS44ODFhNy45NDYgNy45NDYgMCAwIDEtNS41MTYtMi4zNDUgNy45NyA3Ljk3IDAgMCAxLTIuMzMyLTUuNTEyYy4wNzcuMDAyLjE1NC4wMTQuMjMxLjAxNCAyLjExNSAwIDQuMTYtLjgwNCA1LjYzNy0yLjI4IDEuNTgtMS41OCAyLjQ1Ny0zLjczOSAyLjQzLTUuODczYTcuOTQ4IDcuOTQ4IDAgMCAxIDUuMzQ5IDIuMzM3IDcuOTYgNy45NiAwIDAgMSAyLjMyNSA1LjM0OXpNNi4zNDMgNi4zNTNhNy45NjggNy45NjggMCAwIDEgMy45NzMtMi4xNjljLS4wMTggMS41NTUtLjY4NSAzLjEyNC0xLjg1MSA0LjI5MS0xLjEwNCAxLjEwMy0yLjY0MiAxLjY5Ni00LjIzOCAxLjY5MWE3LjkyOSA3LjkyOSAwIDAgMSAyLjExNi0zLjgxM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTRoNnYyaC02ek02LjI5MyA5LjcwNyA4LjU4NiAxMmwtMi4yOTMgMi4yOTMgMS40MTQgMS40MTRMMTEuNDE0IDEyIDcuNzA3IDguMjkzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDRINGMtMS4xMDMgMC0yIC44OTctMiAydjEyYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY2YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOFY2aDE2bC4wMDIgMTJINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUZXN0VHViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuMjkzIDIuNzA3LjgxOC44MThMMy4zMTggMTQuMzE4QzIuNDY4IDE1LjE2OCAyIDE2LjI5OCAyIDE3LjVzLjQ2OCAyLjMzMiAxLjMxOCAzLjE4M0M0LjE2OSAyMS41MzIgNS4yOTkgMjIgNi41IDIyczIuMzMxLS40NjggMy4xODItMS4zMThMMjAuNDc1IDkuODg5bC44MTguODE4IDEuNDE0LTEuNDE0LTgtOC0xLjQxNCAxLjQxNHptMy4xODIgOC4zNTQtMi40MDMtMi40MDQtMS40MTQgMS40MTQgMi40MDMgMi40MDQtMS40MTQgMS40MTUtLjk5LS45OS0xLjQxNCAxLjQxNC45OS45OS0xLjQxNSAxLjQxNS0yLjQwMy0yLjQwNEw3IDE1LjcyOGwyLjQwMyAyLjQwNC0xLjEzNiAxLjEzNmMtLjk0NS45NDQtMi41OS45NDQtMy41MzUgMEM0LjI2IDE4Ljc5NSA0IDE4LjE2OCA0IDE3LjVzLjI2LTEuMjk1LjczMi0xLjc2OEwxNS41MjUgNC45MzlsMy41MzUgMy41MzUtMi41ODUgMi41ODd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA4aDJWNmgzLjI1Mkw3LjY4IDE4SDV2Mmg4di0yaC0yLjI1MkwxMy4zMiA2SDE3djJoMlY0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGltZUZpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3aC0ydjUuNDE0bDMuMjkzIDMuMjkzIDEuNDE0LTEuNDE0TDEzIDExLjU4NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bTAgMThjLTQuNDExIDAtOC0zLjU4OS04LThzMy41ODktOCA4LTggOCAzLjU4OSA4IDgtMy41ODkgOC04IDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgN2gtMnY2aDZ2LTJoLTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGltZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIwLjE0NSA4LjI3IDEuNTYzLTEuNTYzLTEuNDE0LTEuNDE0TDE4LjU4NiA3Yy0xLjA1LS42My0yLjI3NC0xLTMuNTg2LTEtMy44NTkgMC03IDMuMTQtNyA3czMuMTQxIDcgNyA3IDctMy4xNCA3LTdhNi45NjYgNi45NjYgMCAwIDAtMS44NTUtNC43M3pNMTUgMThjLTIuNzU3IDAtNS0yLjI0My01LTVzMi4yNDMtNSA1LTUgNSAyLjI0MyA1IDUtMi4yNDMgNS01IDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBoMnY0aC0yem0tMS03aDR2MmgtNHpNMyA4aDR2Mkgzem0wIDhoNHYySDN6bS0xLTRoMy45OXYySDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDE0Yy0zIDAtNCAzLTQgM2g4cy0xLTMtNC0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNy41NTUgOC44MzItMS4xMDktMS42NjQtMyAyYTEuMDAxIDEuMDAxIDAgMCAwIC4xMDggMS43MjdsNCAyIC44OTUtMS43ODktMi40NTktMS4yMjkgMS41NjUtMS4wNDV6bS02LjU1NyAxLjIzYTEgMSAwIDAgMC0uNDQzLS44OTRsLTMtMi0xLjExIDEuNjY0IDEuNTY2IDEuMDQ0LTIuNDU5IDEuMjI5Ljg5NSAxLjc4OSA0LTJhLjk5OC45OTggMCAwIDAgLjU1MS0uODMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRvZ2dsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOWMtMS42MjggMC0zIDEuMzcyLTMgM3MxLjM3MiAzIDMgMyAzLTEuMzcyIDMtMy0xLjM3Mi0zLTMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2SDhjLTMuMyAwLTUuOTg5IDIuNjg5LTYgNnYuMDE2QTYuMDEgNi4wMSAwIDAgMCA4IDE4aDhhNi4wMSA2LjAxIDAgMCAwIDYtNS45OTRWMTJjLS4wMDktMy4zMDktMi42OTktNi02LTZ6bTAgMTBIOGE0LjAwNiA0LjAwNiAwIDAgMS00LTMuOTlDNC4wMDQgOS43OTkgNS43OTggOCA4IDhoOGMyLjIwMiAwIDMuOTk2IDEuNzk5IDQgNC4wMDZBNC4wMDcgNC4wMDcgMCAwIDEgMTYgMTZ6bTQtMy45ODQuNDQzLS4wMDQuNTU3LjAwNGgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUb2dnbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOWMtMS42MjggMC0zIDEuMzcyLTMgM3MxLjM3MiAzIDMgMyAzLTEuMzcyIDMtMy0xLjM3Mi0zLTMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2SDhjLTMuMjk2IDAtNS45ODIgMi42ODItNiA1Ljk4NnYuMDQyQTYuMDEgNi4wMSAwIDAgMCA4IDE4aDhjMy4zMDkgMCA2LTIuNjkxIDYtNnMtMi42OTEtNi02LTZ6bTAgMTBIOGE0LjAwNiA0LjAwNiAwIDAgMS00LTMuOTlDNC4wMDQgOS43OTkgNS43OTggOCA4IDhoOGMyLjIwNiAwIDQgMS43OTQgNCA0cy0xLjc5NCA0LTQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bS0xIDlINC4wNjlhNy45NjUgNy45NjUgMCAwIDEgLjUyLTJIMTF2MnptMCA0SDQuNTg5YTcuOTY1IDcuOTY1IDAgMCAxLS41Mi0ySDExdjJ6bTAtMTAuOTMxVjdINS43NjVBNy45OTYgNy45OTYgMCAwIDEgMTEgNC4wNjl6TTUuNzY1IDE3SDExdjIuOTMxQTcuOTk2IDcuOTk2IDAgMCAxIDUuNzY1IDE3ek0xMyAxOS45MzFWNC4wNjljMy45MzkuNDk1IDcgMy44NTggNyA3LjkzMXMtMy4wNjEgNy40MzYtNyA3LjkzMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUcmFmZmljQ29uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTQzIDIuNjY3QTEgMSAwIDAgMCAxMyAyaC0yYTEgMSAwIDAgMC0uOTQzLjY2N0w0LjI5MiAxOUgydjJoMjB2LTJoLTIuMjkyTDEzLjk0MyAyLjY2N3pNMTUuNDcgMTNIOC41M2wxLjA2LTNoNC44MmwxLjA2IDN6bS0zLjc2My05aC41ODZsMS40MTIgNGgtMy40MWwxLjQxMi00ek03LjgyNSAxNWg4LjM1bDEuNDEyIDRINi40MTNsMS40MTItNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxNC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOC44NyAzLjM0QTMuNTUgMy41NSAwIDAgMCAxNi4zOCAySDcuNjJhMy40NyAzLjQ3IDAgMCAwLTIuNSAxLjM1QTQuMzIgNC4zMiAwIDAgMCA0IDZ2MTJhMSAxIDAgMCAwIDEgMWgybC0yIDNoMi4zMkw4IDIxaDhsLjY4IDFIMTlsLTItM2gyYTEgMSAwIDAgMCAxLTFWNmE0LjE1IDQuMTUgMCAwIDAtMS4xMy0yLjY2ek03LjYyIDRoOC43MmExLjc3IDEuNzcgMCAwIDEgMSAuNjYgMy4yNSAzLjI1IDAgMCAxIC4yNS4zNEg2LjM5YTIuMyAyLjMgMCAwIDEgLjI1LS4zNUExLjY1IDEuNjUgMCAwIDEgNy42MiA0ek02IDhWN2gxMnYzSDZ6bTEyIDlINnYtNWgxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUcmFuc2ZlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkuOTI0IDEwLjM4M2ExIDEgMCAwIDAtLjIxNy0xLjA5bC01LTUtMS40MTQgMS40MTRMMTYuNTg2IDlINHYyaDE1YTEgMSAwIDAgMCAuOTI0LS42MTd6TTQuMDc2IDEzLjYxN2ExIDEgMCAwIDAgLjIxNyAxLjA5bDUgNSAxLjQxNC0xLjQxNEw3LjQxNCAxNUgyMHYtMkg1YS45OTkuOTk5IDAgMCAwLS45MjQuNjE3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRyYW5zZmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNSAxMiA1LTQtNS00djIuOTk5SDJ2MmgxM3ptNyAzSDl2LTNsLTUgNCA1IDR2LTNoMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVHJhc2hBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDJIOWMtMS4xMDMgMC0yIC44OTctMiAydjJIM3YyaDJ2MTJjMCAxLjEwMy44OTcgMiAyIDJoMTBjMS4xMDMgMCAyLS44OTcgMi0yVjhoMlY2aC00VjRjMC0xLjEwMy0uODk3LTItMi0yek05IDRoNnYySDlWNHptOCAxNkg3VjhoMTB2MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVHJhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMjBhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjhoMlY2aC00VjRhMiAyIDAgMCAwLTItMkg5YTIgMiAwIDAgMC0yIDJ2MkgzdjJoMnpNOSA0aDZ2Mkg5ek04IDhoOXYxMkg3Vjh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMGgydjhIOXptNCAwaDJ2OGgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUcmVuZGluZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTE0IDkuNTg2LTQgNC02LjI5My02LjI5My0xLjQxNCAxLjQxNEwxMCAxNi40MTRsNC00IDQuMjkzIDQuMjkzTDE2IDE5aDZ2LTZsLTIuMjkzIDIuMjkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRyZW5kaW5nVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwIDEwLjQxNCA0IDQgNS43MDctNS43MDdMMjIgMTFWNWgtNmwyLjI5MyAyLjI5M0wxNCAxMS41ODZsLTQtNC03LjcwNyA3LjcwNyAxLjQxNCAxLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlUcmltIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDE2aDN2M2MwIDEuMTAzLjg5NyAyIDIgMmg5YzEuMTAzIDAgMi0uODk3IDItMnYtOWMwLTEuMTAzLS44OTctMi0yLTJoLTNWNWMwLTEuMTAzLS44OTctMi0yLTJINWMtMS4xMDMgMC0yIC44OTctMiAydjljMCAxLjEwMy44OTcgMiAyIDJ6bTE0LTYtLjAwMyA5SDEwdi0zaDRjMS4xMDMgMCAyLS44OTcgMi0ydi00aDN6TTUgMTBoNVY1aDRsLS4wMDMgOUg1di00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVRyaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljg0NCAyMEg2LjVDNS4xMjEgMjAgNCAxOC44NzkgNCAxNy41UzUuMTIxIDE1IDYuNSAxNWg3YzEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzE1LjQzIDggMTMuNSA4SDguNjM5YTkuODEyIDkuODEyIDAgMCAxLTEuMzU0IDJIMTMuNWMuODI3IDAgMS41LjY3MyAxLjUgMS41cy0uNjczIDEuNS0xLjUgMS41aC03QzQuMDE5IDEzIDIgMTUuMDE5IDIgMTcuNVM0LjAxOSAyMiA2LjUgMjJoOS41OTNhMTAuNDE1IDEwLjQxNSAwIDAgMS0xLjI0OS0yek01IDJDMy4zNDYgMiAyIDMuMzQ2IDIgNWMwIDMuMTg4IDMgNSAzIDVzMy0xLjgxMyAzLTVjMC0xLjY1NC0xLjM0Ni0zLTMtM3ptMCA0LjVhMS41IDEuNSAwIDEgMSAuMDAxLTMuMDAxQTEuNSAxLjUgMCAwIDEgNSA2LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgMTRjLTEuNjU0IDAtMyAxLjM0Ni0zIDMgMCAzLjE4OCAzIDUgMyA1czMtMS44MTMgMy01YzAtMS42NTQtMS4zNDYtMy0zLTN6bTAgNC41YTEuNSAxLjUgMCAxIDEgLjAwMS0zLjAwMUExLjUgMS41IDAgMCAxIDE5IDE4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVHJvcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMSA0aC0zVjNhMSAxIDAgMCAwLTEtMUg3YTEgMSAwIDAgMC0xIDF2MUgzYTEgMSAwIDAgMC0xIDF2M2MwIDQuMzEgMS43OTkgNi45MSA0LjgxOSA3LjAxMkE2LjAwMSA2LjAwMSAwIDAgMCAxMSAxNy45MVYyMEg5djJoNnYtMmgtMnYtMi4wOWE2LjAxIDYuMDEgMCAwIDAgNC4xODEtMi44OThDMjAuMjAxIDE0LjkxIDIyIDEyLjMxIDIyIDhWNWExIDEgMCAwIDAtMS0xek00IDhWNmgydjYuODNDNC4yMTYgMTIuMDc4IDQgOS4yOTkgNCA4em04IDhjLTIuMjA2IDAtNC0xLjc5NC00LTRWNGg4djhjMCAyLjIwNi0xLjc5NCA0LTQgNHptNi0zLjE3VjZoMnYyYzAgMS4yOTktLjIxNiA0LjA3OC0yIDQuODN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVHYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDZoLTUuNTg2bDIuMjkzLTIuMjkzLTEuNDE0LTEuNDE0TDEyIDUuNTg2IDguNzA3IDIuMjkzIDcuMjkzIDMuNzA3IDkuNTg2IDZINGMtMS4xMDMgMC0yIC44OTctMiAydjExYzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY4YzAtMS4xMDMtLjg5Ny0yLTItMnpNNCAxOVY4aDE2bC4wMDIgMTFINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVbmRlcmxpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMThoMTR2Mkg1ek02IDR2NmMwIDMuMzA5IDIuNjkxIDYgNiA2czYtMi42OTEgNi02VjRoLTJ2NmMwIDIuMjA2LTEuNzk0IDQtNCA0cy00LTEuNzk0LTQtNFY0SDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMGg2YzEuNjU0IDAgMyAxLjM0NiAzIDNzLTEuMzQ2IDMtMyAzaC0zdjJoM2MyLjc1NyAwIDUtMi4yNDMgNS01cy0yLjI0My01LTUtNUg5VjVMNCA5bDUgNHYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVbml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTZhMSAxIDAgMCAwIDEtMVY5YTEgMSAwIDAgMC0xLTFIOWExIDEgMCAwIDAtMSAxdjZhMSAxIDAgMCAwIDEgMWg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTZoMVY4YTIgMiAwIDAgMSAyLTJoOFY1YTIgMiAwIDAgMC0yLTJINWEyIDIgMCAwIDAtMiAydjlhMiAyIDAgMCAwIDIgMnptMyAzYTIgMiAwIDAgMCAyIDJoOWEyIDIgMCAwIDAgMi0ydi05YTIgMiAwIDAgMC0yLTJoLTF2OGEyIDIgMCAwIDEtMiAySDh2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVbmxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Ljk0OSAxNC4xMjEgMTkuMDcxIDEyYTUuMDA4IDUuMDA4IDAgMCAwIDAtNy4wNzEgNS4wMDYgNS4wMDYgMCAwIDAtNy4wNzEgMGwtLjcwNy43MDcgMS40MTQgMS40MTQuNzA3LS43MDdhMy4wMDcgMy4wMDcgMCAwIDEgNC4yNDMgMCAzLjAwNSAzLjAwNSAwIDAgMSAwIDQuMjQzbC0yLjEyMiAyLjEyMWEyLjcyMyAyLjcyMyAwIDAgMS0uODQ0LjU3TDEzLjQxNCAxMmwxLjQxNC0xLjQxNC0uNzA3LS43MDdhNC45NjUgNC45NjUgMCAwIDAtMy41MzUtMS40NjVjLS4yMzUgMC0uNDY0LjAzMi0uNjkxLjA2NkwzLjcwNyAyLjI5MyAyLjI5MyAzLjcwN2wxOCAxOCAxLjQxNC0xLjQxNC01LjUzNi01LjUzNmMuMjc3LS4xODQuNTM4LS4zOTYuNzc4LS42MzZ6bS02LjM2MyAzLjUzNmEzLjAwNyAzLjAwNyAwIDAgMS00LjI0MyAwIDMuMDA1IDMuMDA1IDAgMCAxIDAtNC4yNDNsMS40NzYtMS40NzUtMS40MTQtMS40MTRMNC45MjkgMTJhNS4wMDggNS4wMDggMCAwIDAgMCA3LjA3MSA0Ljk4MyA0Ljk4MyAwIDAgMCAzLjUzNSAxLjQ2MkE0Ljk4MiA0Ljk4MiAwIDAgMCAxMiAxOS4wNzFsLjcwNy0uNzA3LTEuNDE0LTEuNDE0LS43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVwQXJyb3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDguNDE0VjE4aDJWOC40MTRsNC4yOTMgNC4yOTMgMS40MTQtMS40MTRMMTIgNC41ODZsLTYuNzA3IDYuNzA3IDEuNDE0IDEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVwQXJyb3dDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjAwMSAxLjk5M0M2LjQ4NiAxLjk5NCAyIDYuNDggMiAxMS45OTRjLjAwMSA1LjUxNCA0LjQ4NyAxMCAxMCAxMCA1LjUxNSAwIDEwLjAwMS00LjQ4NiAxMC4wMDEtMTBzLTQuNDg2LTEwLTEwLTEwLjAwMXpNMTIgMTkuOTk0Yy00LjQxIDAtNy45OTktMy41ODktOC04IDAtNC40MTEgMy41ODktOCA4LjAwMS04LjAwMSA0LjQxMS4wMDEgOCAzLjU5IDggOC4wMDFzLTMuNTg5IDgtOC4wMDEgOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMi4wMDEgOC4wMDEtNC4wMDUgNC4wMDVoMy4wMDVWMTZoMnYtMy45OTRoMy4wMDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXBBcnJvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxOWgxOGExLjAwMiAxLjAwMiAwIDAgMCAuODIzLTEuNTY5bC05LTEzYy0uMzczLS41MzktMS4yNzEtLjUzOS0xLjY0NSAwbC05IDEzQS45OTkuOTk5IDAgMCAwIDMgMTl6bTktMTIuMjQzTDE5LjA5MiAxN0g0LjkwOEwxMiA2Ljc1N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVcGxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE1aDJWOWgzbC00LTUtNCA1aDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgMThINHYtN0gydjdjMCAxLjEwMy44OTcgMiAyIDJoMTZjMS4xMDMgMCAyLS44OTcgMi0ydi03aC0ydjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXBzaWRlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMkM2LjQ4NiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyem0wIDE4Yy00LjQxMSAwLTgtMy41ODktOC04czMuNTg5LTggOC04IDggMy41ODkgOCA4LTMuNTg5IDgtOCA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjgyOSA5LjE3MmMuMTgxLjE4MS4zNDYuMzguNDg4LjU5MmwxLjY1OC0xLjExOWE2LjA2MyA2LjA2MyAwIDAgMC0xLjYyMS0xLjYyIDUuOTYzIDUuOTYzIDAgMCAwLTIuMTQ4LS45MDMgNS45ODUgNS45ODUgMCAwIDAtNS40NDggMS42MzQgNS45OTMgNS45OTMgMCAwIDAtLjczMy44ODlsMS42NTcgMS4xMTlhNC4wMTcgNC4wMTcgMCAwIDEgMi41MS0xLjY4MyAzLjk4OSAzLjk4OSAwIDAgMSAzLjYzNyAxLjA5MXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjE1LjVcIixcImN5XCI6XCIxMy41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNTA3XCIsXCJjeVwiOlwiMTMuNTA3XCIsXCJyXCI6XCIxLjQ5M1wifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVwdm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNzgxIDIuMzc1Yy0uMzgxLS40NzUtMS4xODEtLjQ3NS0xLjU2MiAwbC04IDEwQTEuMDAxIDEuMDAxIDAgMCAwIDQgMTRoNHY3YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xdi03aDRhMS4wMDEgMS4wMDEgMCAwIDAgLjc4MS0xLjYyNWwtOC0xMHpNMTUgMTJoLTF2OGgtNHYtOEg2LjA4MUwxMiA0LjYwMSAxNy45MTkgMTJIMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMGgxdjJoLTRWNmgybC0zLTQtMyA0aDJ2OEg3di0yLjI3N2MuNTk2LS4zNDcgMS0uOTg1IDEtMS43MjNhMiAyIDAgMCAwLTQgMGMwIC43MzguNDA0IDEuMzc2IDEgMS43MjNWMTRjMCAxLjEwMy44OTcgMiAyIDJoNHYyLjI3N0ExLjk5IDEuOTkgMCAwIDAgMTAgMjBhMiAyIDAgMCAwIDQgMGMwLS43MzgtLjQwNC0xLjM3Ni0xLTEuNzIzVjE0aDRjMS4xMDMgMCAyLS44OTcgMi0ydi0yaDFWNmgtNHY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVzZXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAuMjkgOC4yOSAxNiAxMi41OGwtMS4zLTEuMjktMS40MSAxLjQyIDIuNyAyLjcgNS43Mi01Ljd6TTQgOGEzLjkxIDMuOTEgMCAwIDAgNCA0IDMuOTEgMy45MSAwIDAgMCA0LTQgMy45MSAzLjkxIDAgMCAwLTQtNCAzLjkxIDMuOTEgMCAwIDAtNCA0em02IDBhMS45MSAxLjkxIDAgMCAxLTIgMiAxLjkxIDEuOTEgMCAwIDEtMi0yIDEuOTEgMS45MSAwIDAgMSAyLTIgMS45MSAxLjkxIDAgMCAxIDIgMnpNNCAxOGEzIDMgMCAwIDEgMy0zaDJhMyAzIDAgMCAxIDMgM3YxaDJ2LTFhNSA1IDAgMCAwLTUtNUg3YTUgNSAwIDAgMC01IDV2MWgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVzZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJBMTAuMTMgMTAuMTMgMCAwIDAgMiAxMmExMCAxMCAwIDAgMCA0IDcuOTJWMjBoLjFhOS43IDkuNyAwIDAgMCAxMS44IDBoLjF2LS4wOEExMCAxMCAwIDAgMCAyMiAxMiAxMC4xMyAxMC4xMyAwIDAgMCAxMiAyek04LjA3IDE4LjkzQTMgMyAwIDAgMSAxMSAxNi41N2gyYTMgMyAwIDAgMSAyLjkzIDIuMzYgNy43NSA3Ljc1IDAgMCAxLTcuODYgMHptOS41NC0xLjI5QTUgNSAwIDAgMCAxMyAxNC41N2gtMmE1IDUgMCAwIDAtNC42MSAzLjA3QTggOCAwIDAgMSA0IDEyYTguMSA4LjEgMCAwIDEgOC04IDguMSA4LjEgMCAwIDEgOCA4IDggOCAwIDAgMS0yLjM5IDUuNjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgNmEzLjkxIDMuOTEgMCAwIDAtNCA0IDMuOTEgMy45MSAwIDAgMCA0IDQgMy45MSAzLjkxIDAgMCAwIDQtNCAzLjkxIDMuOTEgMCAwIDAtNC00em0wIDZhMS45MSAxLjkxIDAgMCAxLTItMiAxLjkxIDEuOTEgMCAwIDEgMi0yIDEuOTEgMS45MSAwIDAgMSAyIDIgMS45MSAxLjkxIDAgMCAxLTIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVc2VyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDExaDh2MmgtOHpNOCA0YTMuOTEgMy45MSAwIDAgMC00IDQgMy45MSAzLjkxIDAgMCAwIDQgNCAzLjkxIDMuOTEgMCAwIDAgNC00IDMuOTEgMy45MSAwIDAgMC00LTR6bTAgNmExLjkxIDEuOTEgMCAwIDEtMi0yIDEuOTEgMS45MSAwIDAgMSAyLTIgMS45MSAxLjkxIDAgMCAxIDIgMiAxLjkxIDEuOTEgMCAwIDEtMiAyem0tNCA4YTMgMyAwIDAgMSAzLTNoMmEzIDMgMCAwIDEgMyAzdjFoMnYtMWE1IDUgMCAwIDAtNS01SDdhNSA1IDAgMCAwLTUgNXYxaDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXNlclBpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMTBjMS4xNTEgMCAyLS44NDggMi0ycy0uODQ5LTItMi0yYy0xLjE1IDAtMiAuODQ4LTIgMnMuODUgMiAyIDJ6bTAgMWMtMi4yMDkgMC00IDEuNjEyLTQgMy42di4zODZoOFYxNC42YzAtMS45ODgtMS43OTEtMy42LTQtMy42elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5IDJINWMtMS4xMDMgMC0yIC44OTctMiAydjEzYzAgMS4xMDMuODk3IDIgMiAyaDRsMyAzIDMtM2g0YzEuMTAzIDAgMi0uODk3IDItMlY0YzAtMS4xMDMtLjg5Ny0yLTItMnptLTUgMTUtMiAyLTItMkg1VjRoMTRsLjAwMiAxM0gxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlVc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkgOGgtMnYzaC0zdjJoM3YzaDJ2LTNoM3YtMmgtM3pNNCA4YTMuOTEgMy45MSAwIDAgMCA0IDQgMy45MSAzLjkxIDAgMCAwIDQtNCAzLjkxIDMuOTEgMCAwIDAtNC00IDMuOTEgMy45MSAwIDAgMC00IDR6bTYgMGExLjkxIDEuOTEgMCAwIDEtMiAyIDEuOTEgMS45MSAwIDAgMS0yLTIgMS45MSAxLjkxIDAgMCAxIDItMiAxLjkxIDEuOTEgMCAwIDEgMiAyek00IDE4YTMgMyAwIDAgMSAzLTNoMmEzIDMgMCAwIDEgMyAzdjFoMnYtMWE1IDUgMCAwIDAtNS01SDdhNSA1IDAgMCAwLTUgNXYxaDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXNlclZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyYzIuMjggMCA0LTEuNzIgNC00cy0xLjcyLTQtNC00LTQgMS43Mi00IDQgMS43MiA0IDQgNHptMC02YzEuMTc4IDAgMiAuODIyIDIgMnMtLjgyMiAyLTIgMi0yLS44MjItMi0yIC44MjItMiAyLTJ6bTEgN0g3Yy0yLjc1NyAwLTUgMi4yNDMtNSA1djFoMnYtMWMwLTEuNjU0IDEuMzQ2LTMgMy0zaDJjMS42NTQgMCAzIDEuMzQ2IDMgM3YxaDJ2LTFjMC0yLjc1Ny0yLjI0My01LTUtNXptOS4zNjQtMTAuMzY0TDE2Ljk1IDQuMDVDMTguMjcxIDUuMzczIDE5IDcuMTMxIDE5IDlzLS43MjkgMy42MjctMi4wNSA0Ljk1bDEuNDE0IDEuNDE0QzIwLjA2NCAxMy42NjMgMjEgMTEuNDAzIDIxIDlzLS45MzYtNC42NjMtMi42MzYtNi4zNjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTM1IDUuNDY0IDE0LjEyMSA2Ljg4QzE0LjY4OCA3LjQ0NSAxNSA4LjE5OCAxNSA5cy0uMzEyIDEuNTU1LS44NzkgMi4xMmwxLjQxNCAxLjQxNkMxNi40NzkgMTEuNTkyIDE3IDEwLjMzNyAxNyA5cy0uNTIxLTIuNTkyLTEuNDY1LTMuNTM2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVVzZXJYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNS43MSAxNS43MSAyLjI5LTIuMyAyLjI5IDIuMyAxLjQyLTEuNDItMi4zLTIuMjkgMi4zLTIuMjktMS40Mi0xLjQyLTIuMjkgMi4zLTIuMjktMi4zLTEuNDIgMS40MkwxNi41OCAxMmwtMi4yOSAyLjI5ek0xMiA4YTMuOTEgMy45MSAwIDAgMC00LTQgMy45MSAzLjkxIDAgMCAwLTQgNCAzLjkxIDMuOTEgMCAwIDAgNCA0IDMuOTEgMy45MSAwIDAgMCA0LTR6TTYgOGExLjkxIDEuOTEgMCAwIDEgMi0yIDEuOTEgMS45MSAwIDAgMSAyIDIgMS45MSAxLjkxIDAgMCAxLTIgMiAxLjkxIDEuOTEgMCAwIDEtMi0yek00IDE4YTMgMyAwIDAgMSAzLTNoMmEzIDMgMCAwIDEgMyAzdjFoMnYtMWE1IDUgMCAwIDAtNS01SDdhNSA1IDAgMCAwLTUgNXYxaDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmE1IDUgMCAxIDAgNSA1IDUgNSAwIDAgMC01LTV6bTAgOGEzIDMgMCAxIDEgMy0zIDMgMyAwIDAgMS0zIDN6bTkgMTF2LTFhNyA3IDAgMCAwLTctN2gtNGE3IDcgMCAwIDAtNyA3djFoMnYtMWE1IDUgMCAwIDEgNS01aDRhNSA1IDAgMCAxIDUgNXYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVZlY3RvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTguMjc3IDhjLjM0Ny41OTYuOTg1IDEgMS43MjMgMWEyIDIgMCAwIDAgMC00Yy0uNzM4IDAtMS4zNzYuNDA0LTEuNzIzIDFIMTZWNGExIDEgMCAwIDAtMS0xSDlhMSAxIDAgMCAwLTEgMXYySDUuNzIzQzUuMzc2IDUuNDA0IDQuNzM4IDUgNCA1YTIgMiAwIDAgMCAwIDRjLjczOCAwIDEuMzc2LS40MDQgMS43MjMtMUg4di4zNjlDNS4xMzMgOS44NCA0LjMxOCAxMi41MzQgNC4wOTEgMTRIM2ExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWg0YTEgMSAwIDAgMCAxLTF2LTRhMSAxIDAgMCAwLTEtMWgtLjg3N2MuMTk3LS45NTkuNzE4LTIuNDA2IDIuMDg1LTMuNDE4QS45ODQuOTg0IDAgMCAwIDkgMTFoNmEuOTguOTggMCAwIDAgLjc5Mi0uNDE5YzEuMzczIDEuMDEzIDEuODk1IDIuNDU4IDIuMDg5IDMuNDE5SDE3YTEgMSAwIDAgMC0xIDF2NGExIDEgMCAwIDAgMSAxaDRhMSAxIDAgMCAwIDEtMXYtNGExIDEgMCAwIDAtMS0xaC0xLjA5MmMtLjIyNy0xLjQ2Ni0xLjA0Mi00LjE2MS0zLjkwOC01LjYzMlY4aDIuMjc3ek02IDE4SDR2LTJoMnYyem0xNCAwaC0ydi0yaDJ2MnptLTYtOWgtNFY1aDR2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWZXJ0aWNhbENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNVYyaC0ydjNIOGw0IDQgNC00em0wIDE3di0zaDNsLTQtNC00IDRoM3Yzek0zIDExaDN2Mkgzem01IDBoM3YySDh6bTUgMGgzdjJoLTN6bTUgMGgzdjJoLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVmlhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuOTUgMy41NjQuNzA4LjcwNy05LjE5MyA5LjE5M0MyLjUyMSAxNC40MDggMiAxNS42NjQgMiAxN3MuNTIxIDIuNTkyIDEuNDY1IDMuNTM1QzQuNDA4IDIxLjQ3OSA1LjY2NCAyMiA3IDIyczIuNTkyLS41MjEgMy41MzUtMS40NjVsOS4xOTMtOS4xOTMuNzA3LjcwOCAxLjQxNC0xLjQxNC04LjQ4NS04LjQ4Ni0xLjQxNCAxLjQxNHpNOS4xMjEgMTkuMTIxYy0xLjEzMyAxLjEzMy0zLjEwOSAxLjEzMy00LjI0MiAwQzQuMzEzIDE4LjU1NSA0IDE3LjgwMiA0IDE3cy4zMTMtMS41NTUuODc5LTIuMTIxTDUuNzU4IDE0aDguNDg0bC01LjEyMSA1LjEyMXpNMTYuMjQyIDEySDcuNzU4bDYuMzE0LTYuMzE0IDQuMjQyIDQuMjQyTDE2LjI0MiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWaWRlb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTggN2MwLTEuMTAzLS44OTctMi0yLTJINi40MTRMMy43MDcgMi4yOTMgMi4yOTMgMy43MDdsMTggMTggMS40MTQtMS40MTRMMTggMTYuNTg2di0yLjkxOUwyMiAxN1Y3bC00IDMuMzMzVjd6bS0yIDcuNTg2TDguNDE0IDdIMTZ2Ny41ODZ6TTQgMTloMTAuODc5bC0yLTJINFY4LjEyMUwyLjE0NSA2LjI2NUExLjk3NyAxLjk3NyAwIDAgMCAyIDd2MTBjMCAxLjEwMy44OTcgMiAyIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVmlkZW9QbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA4SDl2M0g2djJoM3YzaDJ2LTNoM3YtMmgtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA3YzAtMS4xMDMtLjg5Ny0yLTItMkg0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTBjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0ydi0zLjMzM0wyMiAxN1Y3bC00IDMuMzMzVjd6bS0xLjk5OSAxMEg0VjdoMTJ2NWwuMDAxIDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVmlkZW9SZWNvcmRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDljMC0xLjEwMy0uODk3LTItMi0yaC0xLjQzNGwtMi40MTgtNC4wMjlBMi4wMDggMi4wMDggMCAwIDAgMTAuNDM0IDJINXYyaDUuNDM0bDEuOCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnY5YzAgMS4xMDMuODk3IDIgMiAyaDEyYzEuMTAzIDAgMi0uODk3IDItMnYtM2w0IDJ2LTdsLTQgMlY5em0tMS45OTggOUg0VjloMTJsLjAwMSA0SDE2djFsLjAwMS4wMDEuMDAxIDMuOTk5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTRoNnYySDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4IDdjMC0xLjEwMy0uODk3LTItMi0ySDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxMGMwIDEuMTAzLjg5NyAyIDIgMmgxMmMxLjEwMyAwIDItLjg5NyAyLTJ2LTMuMzMzTDIyIDE3VjdsLTQgMy4zMzNWN3ptLTEuOTk4IDEwSDRWN2gxMmwuMDAxIDQuOTk5TDE2IDEybC4wMDEuMDAxLjAwMSA0Ljk5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWb2ljZW1haWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjUgOGE0LjUwNSA0LjUwNSAwIDAgMC00LjUgNC41YzAgLjkyNS4yODEgMS43ODQuNzYyIDIuNWgtMy41MjNjLjQ4LS43MTYuNzYxLTEuNTc1Ljc2MS0yLjVDMTEgMTAuMDE5IDguOTgxIDggNi41IDhTMiAxMC4wMTkgMiAxMi41IDQuMDE5IDE3IDYuNSAxN2MuMTcxIDAgLjMzNC0uMDMyLjUtLjA1MVYxN2gxMXYtLjA1MWMyLjI0NC0uMjUyIDQtMi4xMzkgNC00LjQ0OSAwLTIuNDgxLTIuMDE5LTQuNS00LjUtNC41ek00IDEyLjVDNCAxMS4xMjEgNS4xMjEgMTAgNi41IDEwUzkgMTEuMTIxIDkgMTIuNSA3Ljg3OSAxNSA2LjUgMTUgNCAxMy44NzkgNCAxMi41ek0xNy41IDE1Yy0xLjM3OSAwLTIuNS0xLjEyMS0yLjUtMi41czEuMTIxLTIuNSAyLjUtMi41IDIuNSAxLjEyMSAyLjUgMi41LTEuMTIxIDIuNS0yLjUgMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVZvbHVtZUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDIxYzMuNTI3LTEuNTQ3IDUuOTk5LTQuOTA5IDUuOTk5LTlTMTkuNTI3IDQuNTQ3IDE2IDN2MmMyLjM4NyAxLjM4NiAzLjk5OSA0LjA0NyAzLjk5OSA3UzE4LjM4NyAxNy42MTQgMTYgMTl2MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3djEwYzEuMjI1LTEuMSAyLTMuMjI5IDItNXMtLjc3NS0zLjktMi01ek00IDE3aDIuNjk3bDUuNzQ4IDMuODMyYTEuMDA0IDEuMDA0IDAgMCAwIDEuMDI3LjA1QTEgMSAwIDAgMCAxNCAyMFY0YTEgMSAwIDAgMC0xLjU1NC0uODMyTDYuNjk3IDdINGMtMS4xMDMgMC0yIC44OTctMiAydjZjMCAxLjEwMy44OTcgMiAyIDJ6bTAtOGgzYy4wMzMgMCAuMDYxLS4wMTYuMDkzLS4wMTlhMS4wMjcgMS4wMjcgMCAwIDAgLjM4LS4xMTZjLjAyNi0uMDE1LjA1Ny0uMDE3LjA4Mi0uMDMzTDEyIDUuODY4djEyLjI2NGwtNC40NDUtMi45NjRjLS4wMjUtLjAxNy0uMDU2LS4wMi0uMDgyLS4wMzNhLjk4Ni45ODYgMCAwIDAtLjM4Mi0uMTE2QzcuMDU5IDE1LjAxNiA3LjAzMiAxNSA3IDE1SDRWOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWb2x1bWVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTdoMi42OTdsNS43NDggMy44MzJhMS4wMDQgMS4wMDQgMCAwIDAgMS4wMjcuMDVBMSAxIDAgMCAwIDE0IDIwVjRhMSAxIDAgMCAwLTEuNTU0LS44MzJMNi42OTcgN0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NmMwIDEuMTAzLjg5NyAyIDIgMnptMC04aDNjLjAzMyAwIC4wNjEtLjAxNi4wOTMtLjAxOWExLjAyNyAxLjAyNyAwIDAgMCAuMzc5LS4xMTZjLjAyNi0uMDE0LjA1Ny0uMDE3LjA4Mi0uMDMzTDEyIDUuODY4djEyLjI2NGwtNC40NDUtMi45NjRjLS4wMjUtLjAxOC0uMDU2LS4wMi0uMDgyLS4wMzNhLjk3Ny45NzcgMCAwIDAtLjM4Mi0uMTE2QzcuMDU5IDE1LjAxNiA3LjAzMiAxNSA3IDE1SDRWOXptMTItMnYxMGMxLjIyNS0xLjEgMi0zLjIyOSAyLTVzLS43NzUtMy45LTItNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yMS43MDcgMjAuMjkzLTIuMDIzLTIuMDIzQTkuNTY2IDkuNTY2IDAgMCAwIDIxLjk5OSAxMmMwLTQuMDkxLTIuNDcyLTcuNDUzLTUuOTk5LTl2MmMyLjM4NyAxLjM4NiAzLjk5OSA0LjA0NyAzLjk5OSA3YTguMTEzIDguMTEzIDAgMCAxLTEuNjcyIDQuOTEzbC0xLjI4NS0xLjI4NUMxNy42NDQgMTQuNTM2IDE4IDEzLjE5IDE4IDEyYzAtMS43NzEtLjc3NS0zLjktMi01djcuNTg2bC0yLTJWNGExIDEgMCAwIDAtMS41NTQtLjgzMkw3LjcyNyA2LjMxM2wtNC4wMi00LjAyLTEuNDE0IDEuNDE0IDE4IDE4IDEuNDE0LTEuNDE0ek0xMiA1Ljg2OHY0LjcxOEw5LjE2OSA3Ljc1NSAxMiA1Ljg2OHpNNCAxN2gyLjY5N2w1Ljc0OCAzLjgzMmExLjAwNCAxLjAwNCAwIDAgMCAxLjAyNy4wNUExIDEgMCAwIDAgMTQgMjB2LTEuODc5bC0yLTJ2Mi4wMTFsLTQuNDQ1LTIuOTY0Yy0uMDI1LS4wMTctLjA1Ni0uMDItLjA4Mi0uMDMzYS45ODYuOTg2IDAgMCAwLS4zODItLjExNkM3LjA1OSAxNS4wMTYgNy4wMzIgMTUgNyAxNUg0VjloLjg3OUwzLjEwMiA3LjIyM0ExLjk5NSAxLjk5NSAwIDAgMCAyIDl2NmMwIDEuMTAzLjg5NyAyIDIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTdoMi42OTdsNS43NDggMy44MzJhMS4wMDQgMS4wMDQgMCAwIDAgMS4wMjcuMDVBMSAxIDAgMCAwIDE0IDIwVjRhMSAxIDAgMCAwLTEuNTU0LS44MzJMNi42OTcgN0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2NmMwIDEuMTAzLjg5NyAyIDIgMnptMC04aDNjLjAzMyAwIC4wNjEtLjAxNi4wOTMtLjAxOWExLjAyNyAxLjAyNyAwIDAgMCAuMzc5LS4xMTZjLjAyNi0uMDE0LjA1Ny0uMDE3LjA4Mi0uMDMzTDEyIDUuODY4djEyLjI2NGwtNC40NDUtMi45NjRjLS4wMjUtLjAxOC0uMDU2LS4wMi0uMDgyLS4wMzNhLjk3Ny45NzcgMCAwIDAtLjM4Mi0uMTE2QzcuMDU5IDE1LjAxNiA3LjAzMiAxNSA3IDE1SDRWOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlXYWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjEzXCIsXCJjeVwiOlwiNFwiLFwiclwiOlwiMlwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk3OCAxMi4yN2MuMjQ1LjM2OC42MTEuNjQ3IDEuMDMxLjc4N2wyLjY3NS44OTIuNjMzLTEuODk2LTIuNjc1LS44OTItMS42NjMtMi40OTVhMi4wMTYgMi4wMTYgMCAwIDAtLjc2OS0uNjc5bC0xLjQzNC0uNzE3YTEuOTg5IDEuOTg5IDAgMCAwLTEuMzc4LS4xNDlsLTMuMTkzLjc5N2EyLjAwMiAyLjAwMiAwIDAgMC0xLjMwNiAxLjA0NmwtMS43OTQgMy41ODkgMS43ODkuODk1IDEuNzk0LTMuNTg5IDIuMjIzLS41NTYtMS44MDQgOC4zNDYtMy42NzQgMi41MjcgMS4xMzMgMS42NDggMy42NzUtMi41MjhjLjQyMS0uMjkuNzEzLS43MjUuODItMS4yMjVsLjUxNy0yLjM4OCAyLjUxNyAxLjg4OC45MjUgNC42MjUgMS45NjEtLjM5My0uOTI1LTQuNjI3YTIgMiAwIDAgMC0uNzYyLTEuMjA2bC0yLjE3MS0xLjYyOC42NDctMy44ODUgMS4yMDggMS44MTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV2FsbGV0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDVDMy4zNDYgMyAyIDQuMzQ2IDIgNnYxMmMwIDEuNjU0IDEuMzQ2IDMgMyAzaDE1YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnpNNSAxOWMtLjU1MiAwLTEtLjQ0OS0xLTFWNmMwLS41NTEuNDQ4LTEgMS0xaDE1djNoLTZjLTEuMTAzIDAtMiAuODk3LTIgMnY0YzAgMS4xMDMuODk3IDIgMiAyaDYuMDAxdjNINXptMTUtOXY0aC02di00aDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV2FsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMmgydjRoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjAgN1Y1YzAtMS4xMDMtLjg5Ny0yLTItMkg1QzMuMzQ2IDMgMiA0LjM0NiAyIDZ2MTJjMCAyLjIwMSAxLjc5NCAzIDMgM2gxNWMxLjEwMyAwIDItLjg5NyAyLTJWOWMwLTEuMTAzLS44OTctMi0yLTJ6TTUgNWgxM3YySDVhMS4wMDEgMS4wMDEgMCAwIDEgMC0yem0xNSAxNEg1LjAxMkM0LjU1IDE4Ljk4OCA0IDE4LjgwNSA0IDE4VjguODE1Yy4zMTQuMTEzLjY0Ny4xODUgMSAuMTg1aDE1djEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljk5NiA5YzEuNDEzIDAgMi4xNi0uNzQ3IDIuNzA1LTEuMjkzLjQ5LS40OS43MzEtLjcwNyAxLjI5Mi0uNzA3cy44MDIuMjE3IDEuMjkyLjcwN0MxMS44MyA4LjI1MyAxMi41NzcgOSAxMy45OTEgOWMxLjQxNSAwIDIuMTYzLS43NDcgMi43MS0xLjI5My40OTEtLjQ5LjczMi0uNzA3IDEuMjk1LS43MDdzLjgwNC4yMTcgMS4yOTUuNzA3QzE5LjgzNyA4LjI1MyAyMC41ODUgOSAyMiA5VjdjLS41NjMgMC0uODA0LS4yMTctMS4yOTUtLjcwN0MyMC4xNTkgNS43NDcgMTkuNDExIDUgMTcuOTk2IDVzLTIuMTYyLjc0Ny0yLjcwOSAxLjI5MmMtLjQ5MS40OTEtLjczMS43MDgtMS4yOTYuNzA4LS41NjIgMC0uODAyLS4yMTctMS4yOTItLjcwN0MxMi4xNTQgNS43NDcgMTEuNDA3IDUgOS45OTMgNXMtMi4xNjEuNzQ3LTIuNzA2IDEuMjkzYy0uNDkuNDktLjczLjcwNy0xLjI5MS43MDdzLS44MDEtLjIxNy0xLjI5MS0uNzA3QzQuMTYgNS43NDcgMy40MTMgNSAyIDV2MmMuNTYxIDAgLjgwMS4yMTcgMS4yOTEuNzA3QzMuODM2IDguMjUzIDQuNTgzIDkgNS45OTYgOXptMCA1YzEuNDEzIDAgMi4xNi0uNzQ3IDIuNzA1LTEuMjkzLjQ5LS40OS43MzEtLjcwNyAxLjI5Mi0uNzA3cy44MDIuMjE3IDEuMjkyLjcwN2MuNTQ1LjU0NiAxLjI5MiAxLjI5MyAyLjcwNiAxLjI5MyAxLjQxNSAwIDIuMTYzLS43NDcgMi43MS0xLjI5My40OTEtLjQ5LjczMi0uNzA3IDEuMjk1LS43MDdzLjgwNC4yMTcgMS4yOTUuNzA3QzE5LjgzNyAxMy4yNTMgMjAuNTg1IDE0IDIyIDE0di0yYy0uNTYzIDAtLjgwNC0uMjE3LTEuMjk1LS43MDctLjU0Ni0uNTQ2LTEuMjk0LTEuMjkzLTIuNzA5LTEuMjkzcy0yLjE2Mi43NDctMi43MDkgMS4yOTJjLS40OTEuNDkxLS43MzEuNzA4LTEuMjk2LjcwOC0uNTYyIDAtLjgwMi0uMjE3LTEuMjkyLS43MDdDMTIuMTU0IDEwLjc0NyAxMS40MDcgMTAgOS45OTMgMTBzLTIuMTYxLjc0Ny0yLjcwNiAxLjI5M2MtLjQ5LjQ5LS43My43MDctMS4yOTEuNzA3cy0uODAxLS4yMTctMS4yOTEtLjcwN0M0LjE2IDEwLjc0NyAzLjQxMyAxMCAyIDEwdjJjLjU2MSAwIC44MDEuMjE3IDEuMjkxLjcwN0MzLjgzNiAxMy4yNTMgNC41ODMgMTQgNS45OTYgMTR6bTAgNWMxLjQxMyAwIDIuMTYtLjc0NyAyLjcwNS0xLjI5My40OS0uNDkuNzMxLS43MDcgMS4yOTItLjcwN3MuODAyLjIxNyAxLjI5Mi43MDdjLjU0NS41NDYgMS4yOTIgMS4yOTMgMi43MDYgMS4yOTMgMS40MTUgMCAyLjE2My0uNzQ3IDIuNzEtMS4yOTMuNDkxLS40OS43MzItLjcwNyAxLjI5NS0uNzA3cy44MDQuMjE3IDEuMjk1LjcwN0MxOS44MzcgMTguMjUzIDIwLjU4NSAxOSAyMiAxOXYtMmMtLjU2MyAwLS44MDQtLjIxNy0xLjI5NS0uNzA3LS41NDYtLjU0Ni0xLjI5NC0xLjI5My0yLjcwOS0xLjI5M3MtMi4xNjIuNzQ3LTIuNzA5IDEuMjkyYy0uNDkxLjQ5MS0uNzMxLjcwOC0xLjI5Ni43MDgtLjU2MiAwLS44MDItLjIxNy0xLjI5Mi0uNzA3QzEyLjE1NCAxNS43NDcgMTEuNDA3IDE1IDkuOTkzIDE1cy0yLjE2MS43NDctMi43MDYgMS4yOTNjLS40OS40OS0uNzMuNzA3LTEuMjkxLjcwN3MtLjgwMS0uMjE3LTEuMjkxLS43MDdDNC4xNiAxNS43NDcgMy40MTMgMTUgMiAxNXYyYy41NjEgMCAuODAxLjIxNyAxLjI5MS43MDdDMy44MzYgMTguMjUzIDQuNTgzIDE5IDUuOTk2IDE5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdlYmNhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMmMtNC45NjMgMC05IDQuMDM4LTkgOSAwIDMuMzI4IDEuODIgNi4yMzIgNC41MTMgNy43OWwtMi4wNjcgMS4zNzhBMSAxIDAgMCAwIDYgMjJoMTJhMSAxIDAgMCAwIC41NTUtMS44MzJsLTIuMDY3LTEuMzc4QzE5LjE4IDE3LjIzMiAyMSAxNC4zMjggMjEgMTFjMC00Ljk2Mi00LjAzNy05LTktOXptMCAxNmMtMy44NTkgMC03LTMuMTQxLTctNyAwLTMuODYgMy4xNDEtNyA3LTdzNyAzLjE0IDcgN2MwIDMuODU5LTMuMTQxIDctNyA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjLTIuNzU3IDAtNSAyLjI0My01IDVzMi4yNDMgNSA1IDUgNS0yLjI0MyA1LTUtMi4yNDMtNS01LTV6bTAgOGMtMS42NTQgMC0zLTEuMzQ2LTMtM3MxLjM0Ni0zIDMtMyAzIDEuMzQ2IDMgMy0xLjM0NiAzLTMgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlXaWZpMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV2lmaTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3LjY3MSAxNC4zMDdDMTYuMTg0IDEyLjgxOSAxNC4xNyAxMiAxMiAxMnMtNC4xODQuODE5LTUuNjcxIDIuMzA3bDEuNDE0IDEuNDE0YzEuMTEtMS4xMSAyLjYyMS0xLjcyMiA0LjI1Ny0xLjcyMiAxLjYzNi4wMDEgMy4xNDcuNjEyIDQuMjU3IDEuNzIybDEuNDE0LTEuNDE0elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpZmkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy42NzEgMTQuMzA3QzE2LjE4NCAxMi44MTkgMTQuMTcgMTIgMTIgMTJzLTQuMTg0LjgxOS01LjY3MSAyLjMwN2wxLjQxNCAxLjQxNGMxLjExLTEuMTEgMi42MjEtMS43MjIgNC4yNTctMS43MjIgMS42MzYuMDAxIDMuMTQ3LjYxMiA0LjI1NyAxLjcyMmwxLjQxNC0xLjQxNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMC40MzcgMTEuMjkyYy00LjU3Mi00LjU3My0xMi4zMDEtNC41NzMtMTYuODczIDBsMS40MTQgMS40MTRjMy44MDctMy44MDcgMTAuMjM4LTMuODA3IDE0LjA0NSAwbDEuNDE0LTEuNDE0elwifX0se1widGFnXCI6XCJjaXJjbGVcIixcImF0dHJcIjp7XCJjeFwiOlwiMTJcIixcImN5XCI6XCIxOFwiLFwiclwiOlwiMlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEuMjkzIDguMzk1IDEuNDE0IDEuNDE0Yy41MDQtLjUwNCAxLjA1Mi0uOTUgMS42MjItMS4zNTlMMi45IDcuMDIxYy0uNTYuNDIyLTEuMTA0Ljg3LTEuNjA3IDEuMzc0ek02LjQ3NCA1LjA2IDMuNzA3IDIuMjkzIDIuMjkzIDMuNzA3bDE4IDE4IDEuNDE0LTEuNDE0LTUuMDEyLTUuMDEyLjk3Ni0uOTc1YTcuODYgNy44NiAwIDAgMC00LjA5OS0yLjE0OEwxMS4yOTQgOS44OGMyLjc4OS0uMTkxIDUuNjQ5Ljc0OCA3LjcyOSAyLjgyN2wxLjQxNC0xLjQxNGMtMi44OTgtMi44OTktNy4wNjEtMy45MzYtMTAuODg4LTMuMTU4TDguMDI0IDYuNjFBMTMuMzY2IDEzLjM2NiAwIDAgMSAxMiA2YzMuNTM3IDAgNi44MzcgMS4zNTMgOS4yOTMgMy44MDlsMS40MTQtMS40MTRDMTkuODc0IDUuNTYxIDE2LjA3MSA0IDEyIDRhMTUuMTk4IDE1LjE5OCAwIDAgMC01LjUyNiAxLjA2em0tMi45MTEgNi4yMzMgMS40MTQgMS40MTRhOS41NjMgOS41NjMgMCAwIDEgMi4wNTgtMS41NTFMNS41NzYgOS42OTdjLS43MTcuNDUxLTEuMzk1Ljk3OS0yLjAxMyAxLjU5NnptMi43NjYgMy4wMTQgMS40MTQgMS40MTRjLjY5Mi0uNjkyIDEuNTM1LTEuMTUxIDIuNDI5LTEuNDI4bC0xLjU1Ny0xLjU1N2E3Ljc2IDcuNzYgMCAwIDAtMi4yODYgMS41NzF6bTcuNjYgMy44MDMtMi4xLTIuMWExLjk5NiAxLjk5NiAwIDEgMCAyLjEgMi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDZjMy41MzcgMCA2LjgzNyAxLjM1MyA5LjI5MyAzLjgwOWwxLjQxNC0xLjQxNEMxOS44NzQgNS41NjEgMTYuMDcxIDQgMTIgNGMtNC4wNzEuMDAxLTcuODc0IDEuNTYxLTEwLjcwNyA0LjM5NWwxLjQxNCAxLjQxNEM1LjE2MyA3LjM1MyA4LjQ2MyA2IDEyIDZ6bTUuNjcxIDguMzA3Yy0zLjA3NC0zLjA3NC04LjI2OC0zLjA3NC0xMS4zNDIgMGwxLjQxNCAxLjQxNGMyLjMwNy0yLjMwNyA2LjIwNy0yLjMwNyA4LjUxNCAwbDEuNDE0LTEuNDE0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwLjQzNyAxMS4yOTNjLTQuNTcyLTQuNTc0LTEyLjMwMS00LjU3NC0xNi44NzMgMGwxLjQxNCAxLjQxNGMzLjgwNy0zLjgwNyAxMC4yMzgtMy44MDcgMTQuMDQ1IDBsMS40MTQtMS40MTR6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCIxMlwiLFwiY3lcIjpcIjE4XCIsXCJyXCI6XCIyXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNS41QzEzIDMuNTcgMTEuNDMgMiA5LjUgMiA3LjQ2NiAyIDYuMjUgMy41MjUgNi4yNSA1aDJjMC0uNDE1LjM4OC0xIDEuMjUtMSAuODI3IDAgMS41LjY3MyAxLjUgMS41UzEwLjMyNyA3IDkuNSA3SDJ2Mmg3LjVDMTEuNDMgOSAxMyA3LjQzIDEzIDUuNXptMi41IDkuNUg4djJoNy41Yy44MjcgMCAxLjUuNjczIDEuNSAxLjVzLS42NzMgMS41LTEuNSAxLjVjLS44NjIgMC0xLjI1LS41ODUtMS4yNS0xaC0yYzAgMS40NzUgMS4yMTYgMyAzLjI1IDMgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTcuNDMgMTUgMTUuNSAxNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOCA1Yy0yLjIwNiAwLTQgMS43OTQtNCA0aDJjMC0xLjEwMy44OTctMiAyLTJzMiAuODk3IDIgMi0uODk3IDItMiAySDJ2MmgxNmMyLjIwNiAwIDQtMS43OTQgNC00cy0xLjc5NC00LTQtNHpNMiAxNWg0djJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlXaW5kb3dBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwIDNINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyaDE2YzEuMTAzIDAgMi0uODk3IDItMlY1YzAtMS4xMDMtLjg5Ny0yLTItMnptMCAyIC4wMDEgNEg0VjVoMTZ6TTQgMTl2LThoMTYuMDAxbC4wMDEgOEg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDZoMnYyaC0yem0zIDBoMnYyaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpbmRvd0Nsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJ6TTQgMTlWN2gxNmwuMDAxIDEySDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTUuNzA3IDEwLjcwNy0xLjQxNC0xLjQxNEwxMiAxMS41ODYgOS43MDcgOS4yOTNsLTEuNDE0IDEuNDE0TDEwLjU4NiAxM2wtMi4yOTMgMi4yOTMgMS40MTQgMS40MTRMMTIgMTQuNDE0bDIuMjkzIDIuMjkzIDEuNDE0LTEuNDE0TDEzLjQxNCAxM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlXaW5kb3dPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCAzSDRjLTEuMTAzIDAtMiAuODk3LTIgMnYxNGMwIDEuMTAzLjg5NyAyIDIgMmg1di0ySDRWN2gxNnYxMmgtNXYyaDVjMS4xMDMgMCAyLS44OTcgMi0yVjVjMC0xLjEwMy0uODk3LTItMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIxdi01aDNsLTQtNS00IDVoM3Y1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAyMWgxNmMxLjEwMyAwIDItLjg5NyAyLTJWNWMwLTEuMTAzLS44OTctMi0yLTJINGMtMS4xMDMgMC0yIC44OTctMiAydjE0YzAgMS4xMDMuODk3IDIgMiAyem0wLTJWN2gxNmwuMDAxIDEySDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV2luZG93cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN0g0Yy0xLjEwMyAwLTIgLjg5Ny0yIDJ2MTBjMCAxLjEwMy44OTcgMiAyIDJoMTJjMS4xMDMgMCAyLS44OTcgMi0yVjljMC0xLjEwMy0uODk3LTItMi0yek00IDE5di04aDEyVjlsLjAwMiAxMEg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyIDVjMC0xLjEwMy0uODk3LTItMi0ySDdjLTEuMTAzIDAtMiAuODk3LTIgMmgxMy4wMDFjMS4xMDEgMCAxLjk5Ni44OTUgMS45OTkgMS45OTRMMjAuMDAyIDE1SDIwdjJjMS4xMDMgMCAyLS44OTcgMi0yVjguMDA3TDIyLjAwMSA4VjZMMjIgNS45OVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjcxMyAxMi4xMjNjLjI2NC0uOTUyLjMxMi0yLjAzLjE0My0zLjIwNmwtLjg2Ni02LjA1OUExIDEgMCAwIDAgMTggMkg2YTEgMSAwIDAgMC0uOTkuODU4bC0uODY1IDYuMDU4Yy0uMTY5IDEuMTc3LS4xMjEgMi4yNTUuMTQyIDMuMjA2Ljg2NCAzLjEzNCAzLjU1MSA1LjM5MiA2LjcxMyA1Ljc5NFYyMEg5djJoNnYtMmgtMnYtMi4wODRjMy4xNjItLjQwMiA1Ljg0OS0yLjY2IDYuNzEzLTUuNzkzek0xNy4xMzMgNGwuNTcgNEg2LjI5NmwuNTcxLTRoMTAuMjY2ek02LjIxNSAxMS41OWMtLjEzMi0uNDc0LS4xODEtMS4wMDktLjE1OS0xLjU5aDExLjg4OWMuMDIxLjU4MS0uMDI4IDEuMTE2LS4xNTkgMS41OTFBNi4wMjEgNi4wMjEgMCAwIDEgMTIgMTZhNi4wMTkgNi4wMTkgMCAwIDEtNS43ODUtNC40MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlXaW5rU21pbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnptMCAxOGMtNC40MTEgMC04LTMuNTg5LTgtOHMzLjU4OS04IDgtOCA4IDMuNTg5IDggOC0zLjU4OSA4LTggOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC44MjggMTQuODI4YTMuOTg4IDMuOTg4IDAgMCAxLTIuMDIgMS4wOSA0LjEwOCA0LjEwOCAwIDAgMS0xLjYxNiAwIDQuMTAzIDQuMTAzIDAgMCAxLS43NDktLjIzMiA0LjE2MSA0LjE2MSAwIDAgMS0uNjc5LS4zNjggNC4xMTUgNC4xMTUgMCAwIDEtMS4wODItMS4wODJsLTEuNjU4IDEuMTE3Yy4yMTUuMzE5LjQ2Mi42MTkuNzMzLjg4OWE1Ljk5MSA1Ljk5MSAwIDAgMCA4LjQ4NS4wMDJjLjI3Mi0uMjcxLjUyLS41NzEuNzM0LS44OTFsLTEuNjU4LTEuMTE3Yy0uMTQzLjIxMS0uMzA3LjQxLS40OS41OTJ6XCJ9fSx7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4LjVcIixcImN5XCI6XCIxMC41XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDEwYy0yIDAtMi41IDItMi41IDJoNXMtLjUwMS0yLTIuNS0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdpbmtUb25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgOWMtMiAwLTIuNSAyLTIuNSAyaDVzLS41MDEtMi0yLjUtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAyQzYuNDg2IDIgMiA2LjQ4NiAyIDEyczQuNDg2IDEwIDEwIDEwIDEwLTQuNDg2IDEwLTEwUzE3LjUxNCAyIDEyIDJ6bS0yIDE2di0zaDR2M2MwIDEuMTAzLS44OTcgMi0yIDJzLTItLjg5Ny0yLTJ6bTUuODU2IDEuMDA1Yy4wODUtLjMyMy4xNDQtLjY1Ni4xNDQtMS4wMDV2LTEuNDk5QzE3LjU4OSAxNS4wMjggMTggMTMgMTggMTNINnMuNDEyIDIuMDI4IDIgMy41MDFWMThjMCAuMzQ5LjA1OS42ODIuMTQ0IDEuMDA1QTguMDA1IDguMDA1IDAgMCAxIDQgMTJjMC00LjQxMSAzLjU4OS04IDgtOHM4IDMuNTg5IDggOGE4LjAwNSA4LjAwNSAwIDAgMS00LjE0NCA3LjAwNXpcIn19LHtcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjguNVwiLFwiY3lcIjpcIjkuNVwiLFwiclwiOlwiMS41XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS43NTggNUgxOS42OGwtLjg0NCAzaC00Ljg5M2wtLjg5OS0zaC0yLjA4OGwtLjg5OSAzSDUuMTY0TDQuMzIgNUgyLjI0MmwuODQ0IDNIMnYyaDEuNjQ4bC41NjMgMkgydjJoMi43NzNsMS42ODggNmgyLjA4M2wxLjgtNmgzLjMxM2wxLjggNmgyLjA4M2wxLjY4OC02SDIydi0yaC0yLjIxMWwuNTYzLTJIMjJWOGgtMS4wODZsLjg0NC0zek01LjcyNyAxMGgzLjcyOWwtLjYgMkg2LjI4OWwtLjU2Mi0yem0xLjgwNCA2LjQxN0w2Ljg1MiAxNGgxLjQwNGwtLjcyNSAyLjQxN3pNMTAuOTQ0IDEybC42LTJoLjkxMmwuNiAyaC0yLjExMnptNS41MjUgNC40MTdMMTUuNzQ0IDE0aDEuNDA0bC0uNjc5IDIuNDE3ek0xNy43MTEgMTJoLTIuNTY3bC0uNi0yaDMuNzI5bC0uNTYyIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpV29ybGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI0IDI0XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDJDNi40ODYgMiAyIDYuNDg2IDIgMTJzNC40ODYgMTAgMTAgMTAgMTAtNC40ODYgMTAtMTBTMTcuNTE0IDIgMTIgMnpNNCAxMmMwLS44OTkuMTU2LTEuNzYyLjQzMS0yLjU2OUw2IDExbDIgMnYybDIgMiAxIDF2MS45MzFDNy4wNjEgMTkuNDM2IDQgMTYuMDcyIDQgMTJ6bTE0LjMzIDQuODczQzE3LjY3NyAxNi4zNDcgMTYuNjg3IDE2IDE2IDE2di0xYTIgMiAwIDAgMC0yLTJoLTR2LTNhMiAyIDAgMCAwIDItMlY3aDFhMiAyIDAgMCAwIDItMnYtLjQxMUMxNy45MjggNS43NzggMjAgOC42NSAyMCAxMmE3Ljk0NyA3Ljk0NyAwIDAgMS0xLjY3IDQuODczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xMjIgMjFjLjM3OC4zNzguODguNTg2IDEuNDE0LjU4NlM3LjU3MiAyMS4zNzggNy45NSAyMWw0LjMzNi00LjMzNmE3LjQ5NSA3LjQ5NSAwIDAgMCAyLjIxNy4zMzMgNy40NDYgNy40NDYgMCAwIDAgNS4zMDItMi4xOTUgNy40ODQgNy40ODQgMCAwIDAgMS42MzItOC4xNThsLS41Ny0xLjM4OC00LjI0NCA0LjI0My0yLjEyMS0yLjEyMiA0LjI0My00LjI0My0xLjM4OS0uNTcxQTcuNDc4IDcuNDc4IDAgMCAwIDE0LjQ5OSAyYy0yLjAwMyAwLTMuODg2Ljc4LTUuMzAxIDIuMTk2YTcuNDc5IDcuNDc5IDAgMCAwLTEuODYyIDcuNTE4TDMgMTYuMDVhMi4wMDEgMi4wMDEgMCAwIDAgMCAyLjgyOEw1LjEyMiAyMXptNC41NDgtOC43OTEtLjI1NC0uNjE2YTUuNDg2IDUuNDg2IDAgMCAxIDEuMTk2LTUuOTgzIDUuNDYgNS40NiAwIDAgMSA0LjQxMy0xLjU4NWwtMy4zNTMgMy4zNTMgNC45NDkgNC45NSAzLjM1NS0zLjM1NWE1LjQ5IDUuNDkgMCAwIDEtMS41ODcgNC40MTZjLTEuNTUgMS41NS0zLjk2NCAyLjAyNy01Ljk4NCAxLjE5NmwtLjYxNS0uMjU1LTUuMjU0IDUuMjU2aC4wMDFsLS4wMDEgMXYtMWwtMi4xMjItMi4xMjIgNS4yNTYtNS4yNTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpWENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4xNzIgMTYuMjQyIDEyIDEzLjQxNGwyLjgyOCAyLjgyOCAxLjQxNC0xLjQxNEwxMy40MTQgMTJsMi44MjgtMi44MjgtMS40MTQtMS40MTRMMTIgMTAuNTg2IDkuMTcyIDcuNzU4IDcuNzU4IDkuMTcyIDEwLjU4NiAxMmwtMi44MjggMi44Mjh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMjJjNS41MTQgMCAxMC00LjQ4NiAxMC0xMFMxNy41MTQgMiAxMiAyIDIgNi40ODYgMiAxMnM0LjQ4NiAxMCAxMCAxMHptMC0xOGM0LjQxMSAwIDggMy41ODkgOCA4cy0zLjU4OSA4LTggOC04LTMuNTg5LTgtOCAzLjU4OS04IDgtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQmlYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNi4xOTIgNi4zNDQtNC4yNDMgNC4yNDItNC4yNDItNC4yNDItMS40MTQgMS40MTRMMTAuNTM1IDEybC00LjI0MiA0LjI0MiAxLjQxNCAxLjQxNCA0LjI0Mi00LjI0MiA0LjI0MyA0LjI0MiAxLjQxNC0xLjQxNEwxMy4zNjQgMTJsNC4yNDItNC4yNDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpWWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy4yIDMuNCAxMiAxMC4zMzMgNi44IDMuNCA1LjIgNC42IDEwIDExSDd2Mmg0djJIN3YyaDR2NGgydi00aDR2LTJoLTR2LTJoNHYtMmgtM2w0LjgtNi40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCaVpvb21JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNkg5djNINnYyaDN2M2gydi0zaDNWOWgtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyYy00LjQxMSAwLTggMy41ODktOCA4czMuNTg5IDggOCA4YTcuOTUyIDcuOTUyIDAgMCAwIDQuODk3LTEuNjg4bDQuMzk2IDQuMzk2IDEuNDE0LTEuNDE0LTQuMzk2LTQuMzk2QTcuOTUyIDcuOTUyIDAgMCAwIDE4IDEwYzAtNC40MTEtMy41ODktOC04LTh6bTAgMTRjLTMuMzA5IDAtNi0yLjY5MS02LTZzMi42OTEtNiA2LTYgNiAyLjY5MSA2IDYtMi42OTEgNi02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJpWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjQgMjRcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5aDh2Mkg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE4YTcuOTUyIDcuOTUyIDAgMCAwIDQuODk3LTEuNjg4bDQuMzk2IDQuMzk2IDEuNDE0LTEuNDE0LTQuMzk2LTQuMzk2QTcuOTUyIDcuOTUyIDAgMCAwIDE4IDEwYzAtNC40MTEtMy41ODktOC04LThzLTggMy41ODktOCA4IDMuNTg5IDggOCA4em0wLTE0YzMuMzA5IDAgNiAyLjY5MSA2IDZzLTIuNjkxIDYtNiA2LTYtMi42OTEtNi02IDIuNjkxLTYgNi02elwifX1dfSkocHJvcHMpO1xufTtcbiIsImltcG9ydCB7IEJhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQmFzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi91c2VVc2VyTWV0YWRhdGFcIjtcclxuXHJcbi8qKiBIb29rIGZvciBkZXRlcm1pbmluZyB0aGUgY3VzdG9tIHByb3BlcnRpZXMgdG8gYWRkIHRvIGFuIEFwcCBJbnNpZ2h0cyB0cmFjayAqL1xyXG5leHBvcnQgY29uc3QgdXNlQXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdXNlck1ldGFkYXRhID0gdXNlVXNlck1ldGFkYXRhKCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjb250YWN0SWQ6IHVzZXJNZXRhZGF0YS5jb250YWN0SWQsXHJcbiAgICAgICAgYWNjb3VudElkOiB1c2VyTWV0YWRhdGEuYWNjb3VudElkLFxyXG4gICAgICAgIHBlcm1pc3Npb25MZXZlbDogdXNlck1ldGFkYXRhLmJhc2VQZXJtaXNzaW9uTGV2ZWxcclxuICAgICAgICAgICAgPyBCYXNlUGVybWlzc2lvbkxldmVsW3VzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbDogdXNlck1ldGFkYXRhLnBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxcclxuICAgICAgICAgICAgPyB1c2VyTWV0YWRhdGEucG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbDogdXNlck1ldGFkYXRhLnBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWxcclxuICAgICAgICAgICAgPyB1c2VyTWV0YWRhdGEucG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgcG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWw6IHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA/IHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgICAgICA6IG51bGwsXHJcbiAgICB9O1xyXG59O1xyXG4iLCJpbXBvcnQgeyBGZWVkYmFja0NhdGVnb3J5IH0gZnJvbSBcIi4uL1R5cGVzL0ZlZWRiYWNrQ2F0ZWdvcnlcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSBcIi4vdXNlQXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzXCI7XHJcbmltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IEVycm9ySW5mbyB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuLyoqIEhvb2sgZm9yIGFkZGluZyBBcHAgSW5zaWdodHMgdHJhY2tpbmcgKi9cclxuZXhwb3J0IGNvbnN0IHVzZUFwcEluc2lnaHRzID0gKCkgPT4ge1xyXG4gICAgY29uc3QgYXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzID0gdXNlQXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzKCk7XHJcbiAgICBjb25zdCBhcHBJbnNpZ2h0cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuYXBwSW5zaWdodHMpO1xyXG5cclxuICAgIC8vIElmIHRoZSBBcHAgSW5zaWdodHMgY291bGQgbm90IGJlIGluaXRpYWxpc2VkXHJcbiAgICBpZiAoIWFwcEluc2lnaHRzKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYXBwSW5zaWdodHM6IG51bGwsXHJcbiAgICAgICAgICAgIHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgdHJhY2tSZW5kZXJFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhOiBudWxsLFxyXG4gICAgICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YTogbnVsbCxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhY2tzIGFuIGVycm9yLCB3aXRoIG91ciBtZXRhZGF0YSBhdHRhY2hlZCBhcyBjdXN0b20gcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSBlcnJvciBFcnJvciB0byB0cmFjay5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhKGVycm9yOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICBhcHBJbnNpZ2h0cz8udHJhY2tFeGNlcHRpb24oXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKGVycm9yPy50b1N0cmluZygpIHx8IFwiVW5rbm93biBlcnJvclwiKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBlcnJvclR5cGU6IFwiRXJyb3JcIiwgLi4uYXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhY2tzIGFueSBldmVudCAoYW55dGhpbmcgb2YgaW50ZXJlc3QpLCB3aXRoIG91ciBtZXRhZGF0YSBhdHRhY2hlZCBhcyBjdXN0b20gcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSBuYW1lIFVuaXF1ZSBuYW1lIG9mIHRoZSBldmVudC5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEoZXZlbnQ6IEFwcEluc2lnaHRzRXZlbnQpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oZXZlbnQpO1xyXG4gICAgICAgIGFwcEluc2lnaHRzPy50cmFja0V2ZW50KHsgbmFtZTogZXZlbnQudHlwZSB9LCB7IGV2ZW50LCAuLi5hcHBJbnNpZ2h0c0N1c3RvbVByb3BlcnRpZXMgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFja3MgYSByZW5kZXIgZXJyb3IsIHdpdGggb3VyIG1ldGFkYXRhIGF0dGFjaGVkIGFzIGN1c3RvbSBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIGVycm9yIEVycm9yIHRvIHRyYWNrLlxyXG4gICAgICogQHBhcmFtIGVycm9ySW5mbyBSZWFjdCBlcnJvciBpbmZvLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiB0cmFja1JlbmRlckV4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGEoZXJyb3I6IEVycm9yLCBlcnJvckluZm86IEVycm9ySW5mbyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cclxuICAgICAgICBhcHBJbnNpZ2h0cz8udHJhY2tFeGNlcHRpb24oXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbjogZXJyb3IsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgZXJyb3JUeXBlOiBcIlJlbmRlckVycm9yXCIsIC4uLmFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcywgcmVhY3RDb21wb25lbnRTdGFjazogZXJyb3JJbmZvLmNvbXBvbmVudFN0YWNrIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYXBwSW5zaWdodHMsXHJcbiAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhLFxyXG4gICAgICAgIHRyYWNrUmVuZGVyRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YSxcclxuICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YSxcclxuICAgIH07XHJcbn07XHJcblxyXG4vKiogTW9kZWwgb2YgZXZlbnRzIHRvIGxvZyB0byBBcHAgSW5zaWdodHMgKi9cclxuZXhwb3J0IHR5cGUgQXBwSW5zaWdodHNFdmVudCA9XHJcbiAgICB8IHsgdHlwZTogXCJUZXJtcyBhbmQgQ29uZGl0aW9ucyAtIFByb21wdGVkXCIgfVxyXG4gICAgfCB7IHR5cGU6IFwiVGVybXMgYW5kIENvbmRpdGlvbnMgLSBBY2NlcHRlZFwiIH1cclxuICAgIHwgeyB0eXBlOiBcIkZlZWRiYWNrIFBhbmUgLSBPcGVuZWRcIiB9XHJcbiAgICB8IHsgdHlwZTogXCJGZWVkYmFjayBQYW5lIC0gRmVlZGJhY2sgY3JlYXRpb24gc3VibWl0dGVkXCI7IGZlZWRiYWNrQ2F0ZWdvcnk6IEZlZWRiYWNrQ2F0ZWdvcnkgfVxyXG4gICAgfCB7IHR5cGU6IFwiRmVlZGJhY2sgUGFuZSAtIEZlZWRiYWNrIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGZlZWRiYWNrQ2F0ZWdvcnk6IEZlZWRiYWNrQ2F0ZWdvcnkgfVxyXG4gICAgfCB7IHR5cGU6IFwiSG9tZSAtIEN1c3RvbWVyIEFzc2V0IHRpbGUgY2xpY2tlZFwiOyB0aWxlTmFtZTogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIk5hdmlnYXRpb24gUGFuZWwgLSBDdXN0b21lciBBc3NldCB0aWxlIGNsaWNrZWRcIjsgdGlsZU5hbWU6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJDcmVhdGUgQ2FzZSAtIENhc2UgY3JlYXRpb24gc3VibWl0dGVkXCIgfVxyXG4gICAgfCB7IHR5cGU6IFwiQ3JlYXRlIENhc2UgLSBDYXNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGluY2lkZW50SWQ6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJFZGl0IENhc2UgLSBDYXNlIHVwZGF0ZSBzdWJtaXR0ZWRcIjsgaW5jaWRlbnRJZDogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIkVkaXQgQ2FzZSAtIENhc2UgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIjsgaW5jaWRlbnRJZDogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIkVkaXQgQ2FzZSAtIFBvcnRhbCBDb21tZW50IHN1Ym1pdHRlZFwiOyBpbmNpZGVudElkOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiRWRpdCBDYXNlIC0gUG9ydGFsIENvbW1lbnQgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIjsgaW5jaWRlbnRJZDogc3RyaW5nOyBhY3Rpdml0eUlkOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiRWRpdCBDYXNlIC0gQ2FsbC10by1BY3Rpb24gc3VibWl0dGVkXCI7IGJ1dHRvbk5hbWU6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJFZGl0IENhc2UgLSBDYWxsLXRvLUFjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGJ1dHRvbk5hbWU6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJDcmVhdGUgQ29udGFjdCAtIENvbnRhY3QgY3JlYXRpb24gc3VibWl0dGVkXCIgfVxyXG4gICAgfCB7IHR5cGU6IFwiQ3JlYXRlIENvbnRhY3QgLSBDb250YWN0IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGNvbnRhY3RJZDogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIkVkaXQgQ29udGFjdCAtIENvbnRhY3QgdXBkYXRlIHN1Ym1pdHRlZFwiOyBjb250YWN0SWQ6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJFZGl0IENvbnRhY3QgLSBDb250YWN0IHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGNvbnRhY3RJZDogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIkVkaXQgQ29udGFjdCAtIENhbGwtdG8tQWN0aW9uIHN1Ym1pdHRlZFwiOyBidXR0b25OYW1lOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ2FsbC10by1BY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiOyBidXR0b25OYW1lOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiRWRpdCBPcmRlciAtIE9yZGVyIHVwZGF0ZSBzdWJtaXR0ZWRcIjsgb3JkZXJJZDogc3RyaW5nIH1cclxuICAgIHwgeyB0eXBlOiBcIkVkaXQgT3JkZXIgLSBPcmRlciB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiOyBvcmRlcklkOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiRWRpdCBOZXR3b3JrIE9yZGVyIC0gQ2FsbC10by1BY3Rpb24gc3VibWl0dGVkXCI7IGJ1dHRvbk5hbWU6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJFZGl0IE5ldHdvcmsgT3JkZXIgLSBDYWxsLXRvLUFjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCI7IGJ1dHRvbk5hbWU6IHN0cmluZyB9XHJcbiAgICB8IHsgdHlwZTogXCJNYW5hZ2VtZW50IFBhbmVsIC0gQWR2YW5jZWQgRmlsdGVyIFBhbmVsIG9wZW5lZFwiIH1cclxuICAgIHwgeyB0eXBlOiBcIk1hbmFnZW1lbnQgUGFuZWwgLSBGaWx0ZXIgVGlsZSBjbGlja2VkXCI7IHRpbGVOYW1lOiBzdHJpbmcgfVxyXG4gICAgfCB7IHR5cGU6IFwiQWNjZXNzIERlbmllZFwiIH07XHJcbiIsImV4cG9ydCB0eXBlIEluZm9DYXJkRGVzY3JpcHRpb24gPSB7XHJcbiAgICBwcmltYXJ5VGV4dDogc3RyaW5nO1xyXG4gICAgc2Vjb25kYXJ5VGV4dDogc3RyaW5nO1xyXG4gICAgYWRkaXRpb25hbEZpZWxkczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdO1xyXG4gICAgaWNvbjogUmVhY3QuUmVhY3ROb2RlO1xyXG59O1xyXG5cclxuLyoqIENvbXBvbmVudCBvZiBhICdjYXJkJyBzaG93aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKi9cclxuZXhwb3J0IGNvbnN0IEluZm9DYXJkOiBSZWFjdC5GQzx7IGluZm86IEluZm9DYXJkRGVzY3JpcHRpb24gfT4gPSAocHJvcHMpID0+IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5mby1jYXJkXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImluZm8tY2FyZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImluZm8tY2FyZC1pY29uXCI+e3Byb3BzLmluZm8uaWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmZvLWNhcmQtaGVhZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImluZm8tY2FyZC1wcmltYXJ5LXRleHRcIj57cHJvcHMuaW5mby5wcmltYXJ5VGV4dH08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiaW5mby1jYXJkLXNlY29uZGFyeS10ZXh0XCI+e3Byb3BzLmluZm8uc2Vjb25kYXJ5VGV4dH08L3A+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5mby1jYXJkLWFkZGl0aW9uYWwtZmllbGRzXCI+XHJcbiAgICAgICAgICAgICAgICB7cHJvcHMuaW5mby5hZGRpdGlvbmFsRmllbGRzLm1hcCgoYWYpID0+IChcclxuICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2FmLm5hbWV9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnthZi5uYW1lfTwvc3Ryb25nPjogPHNwYW4+e2FmLnZhbHVlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyBFcnJvckluZm8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEJpRXJyb3IgfSBmcm9tIFwicmVhY3QtaWNvbnMvYmlcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgSW5mb0NhcmQgfSBmcm9tIFwiLi9JbmZvQ2FyZFwiO1xyXG5cclxuLyoqIFJlYWN0IHByb3BlcnRpZXMgb2YgdGhlIDxFcnJvckJvdW5kYXJ5PiBjb21wb25lbnQgKi9cclxudHlwZSBFcnJvckJvdW5kYXJ5UHJvcHMgPSB7XHJcbiAgICAvKiogQ2hpbGRyZW4gb2YgdGhlIGNvbXBvbmVudC4gKi9cclxuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfCBSZWFjdC5SZWFjdE5vZGVbXTtcclxuXHJcbiAgICAvKiogRGVmaW5lcyB0aGUgcmVuZGVyIHRvIHBlcmZvcm0gd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSByZW5kZXJpbmcgY2hpbGRyZW4gY29tcG9uZW50cyAqL1xyXG4gICAgY3VzdG9tRXJyb3JGYWxsYmFja1JlbmRlcj86IChsYXRlc3RFcnJvcjogeyBlcnJvcjogRXJyb3I7IGVycm9ySW5mbzogUmVhY3QuRXJyb3JJbmZvIH0pID0+IFJlYWN0LlJlYWN0Tm9kZTtcclxufTtcclxuXHJcbi8qKiBSZWFjdCBFcnJvciBCb3VuZGFyeSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItYm91bmRhcmllcy5odG1sICovXHJcbmV4cG9ydCBjb25zdCBFcnJvckJvdW5kYXJ5OiBSZWFjdC5GQzxFcnJvckJvdW5kYXJ5UHJvcHM+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCBhcHBJbnNpZ2h0cyA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8RXJyb3JCb3VuZGFyeUlubmVyXHJcbiAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgb25FcnJvcj17KGVycm9yLCBlcnJvckluZm8pID0+IGFwcEluc2lnaHRzLnRyYWNrUmVuZGVyRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YT8uKGVycm9yLCBlcnJvckluZm8pfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgICAgIDwvRXJyb3JCb3VuZGFyeUlubmVyPlxyXG4gICAgKTtcclxufTtcclxuXHJcbi8qKiBSZWFjdCBwcm9wcyBvZiB0aGUgPEVycm9yQm91bmRhcnlJbm5lcj4gY29tcG9uZW50ICovXHJcbnR5cGUgRXJyb3JCb3VuZGFyeUlubmVyUHJvcHMgPSBFcnJvckJvdW5kYXJ5UHJvcHMgJiB7IG9uRXJyb3I6IChlcnJvcjogRXJyb3IsIGVycm9ySW5mbzogRXJyb3JJbmZvKSA9PiB2b2lkIH07XHJcblxyXG4vKiogUmVhY3Qgc3RhdGUgb2YgdGhlIDxFcnJvckJvdW5kYXJ5SW5uZXI+IGNvbXBvbmVudCAqL1xyXG50eXBlIEVycm9yQm91bmRhcnlJbm5lclN0YXRlID0ge1xyXG4gICAgLyoqIExhdGVzdCBlcnJvciB0byBvY2N1ciAqL1xyXG4gICAgbGF0ZXN0RXJyb3I/OiB7IGVycm9yOiBFcnJvcjsgZXJyb3JJbmZvOiBSZWFjdC5FcnJvckluZm8gfTtcclxufTtcclxuXHJcbi8qKiBJbm5lciBjb21wb25lbnQgb2YgYSBSZWFjdCBFcnJvciBCb3VuZGFyeSAodXNpbmcgY2xhc3MgYmFzZWQgY29tcG9uZW50KSAqL1xyXG5jbGFzcyBFcnJvckJvdW5kYXJ5SW5uZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8RXJyb3JCb3VuZGFyeUlubmVyUHJvcHMsIEVycm9yQm91bmRhcnlJbm5lclN0YXRlPiB7XHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxzZXMgYSBuZXcgaW5zdGFuY2UuXHJcbiAgICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm9wczogRXJyb3JCb3VuZGFyeUlubmVyUHJvcHMpIHtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgICAgICAgIGxhdGVzdEVycm9yOiB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIHB1YmxpYyBjb21wb25lbnREaWRDYXRjaChlcnJvcjogRXJyb3IsIGVycm9ySW5mbzogUmVhY3QuRXJyb3JJbmZvKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxhdGVzdEVycm9yOiB7IGVycm9yLCBlcnJvckluZm8gfSB9KTtcclxuICAgICAgICB0aGlzLnByb3BzLm9uRXJyb3IoZXJyb3IsIGVycm9ySW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICAgICAgLy8gSWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkXHJcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUubGF0ZXN0RXJyb3IpIHtcclxuICAgICAgICAgICAgLy8gSWYgYSBjdXN0b20gcmVuZGVyIGZvciBhbiBlcnJvciBmYWxsYmFjayBpcyBkZWZpbmVkXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmN1c3RvbUVycm9yRmFsbGJhY2tSZW5kZXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmN1c3RvbUVycm9yRmFsbGJhY2tSZW5kZXI/Lih0aGlzLnN0YXRlLmxhdGVzdEVycm9yKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRFcnJvckZhbGxiYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXt0aGlzLnN0YXRlLmxhdGVzdEVycm9yLmVycm9yfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvckluZm89e3RoaXMuc3RhdGUubGF0ZXN0RXJyb3IuZXJyb3JJbmZvfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbHNlOyByZW5kZXIgdGhlIGNoaWxkcmVuIGFzIG5vcm1hbFxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKiogQ29tcG9uZW50IGRpc3BsYXlpbmcgYSB0eXBpY2FsIGVycm9yIG1lc3NhZ2UgICovXHJcbmV4cG9ydCBjb25zdCBEZWZhdWx0RXJyb3JGYWxsYmFjazogUmVhY3QuRkM8eyBlcnJvcj86IEVycm9yOyBlcnJvckluZm8/OiBFcnJvckluZm8gfT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJlcnJvci1mYWxsYmFja1wiXHJcbiAgICAgICAgICAgIG9uTW91c2VPdmVyPXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XHJcbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SXNIb3ZlcmVkKGZhbHNlKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCaUVycm9yIC8+IEVycm9yIG9jY3VycmVkXHJcbiAgICAgICAgICAgIHtpc0hvdmVyZWQgJiYgKFxyXG4gICAgICAgICAgICAgICAgPEluZm9DYXJkXHJcbiAgICAgICAgICAgICAgICAgICAgaW5mbz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiA8QmlFcnJvciAvPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVRleHQ6IFwiRXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogcHJvcHMuZXJyb3I/Lm5hbWUgfHwgXCJFcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJNZXNzYWdlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb3BzLmVycm9yPy5tZXNzYWdlIHx8IFwibnVsbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlN0YWNrXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHByb3BzLmVycm9yPy5zdGFjayB8fCBcIm51bGxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb21wb25lbnQgU3RhY2tcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcHMuZXJyb3JJbmZvPy5jb21wb25lbnRTdGFjayB8fCBcIm51bGxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDYXVzZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9wcy5lcnJvcj8uY2F1c2U/LnRvU3RyaW5nKCkgfHwgXCJudWxsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICk7XHJcbn07XHJcbiIsIi8vIEEgcGFja2FnZXMgY2FjaGUgdGhhdCBtYWtlcyBzdXJlIHRoYXQgd2UgZG9uJ3QgaW5qZWN0IHRoZSBzYW1lIHBhY2thZ2VOYW1lIHR3aWNlIGluIHRoZSBzYW1lIGJ1bmRsZSAtXG4vLyB0aGlzIGNhY2hlIGlzIGxvY2FsIHRvIHRoZSBtb2R1bGUgY2xvc3VyZSBpbnNpZGUgdGhpcyBidW5kbGVcbnZhciBwYWNrYWdlc0NhY2hlID0ge307XG4vLyBDYWNoZSBhY2Nlc3MgdG8gd2luZG93IHRvIGF2b2lkIElFMTEgbWVtb3J5IGxlYWsuXG52YXIgX3dpbiA9IHVuZGVmaW5lZDtcbnRyeSB7XG4gICAgX3dpbiA9IHdpbmRvdztcbn1cbmNhdGNoIChlKSB7XG4gICAgLyogbm8tb3AgKi9cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRWZXJzaW9uKHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbikge1xuICAgIGlmICh0eXBlb2YgX3dpbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdmFyIHBhY2thZ2VzID0gKF93aW4uX19wYWNrYWdlc19fID0gX3dpbi5fX3BhY2thZ2VzX18gfHwge30pO1xuICAgICAgICAvLyBXZSBhbGxvdyBlaXRoZXIgdGhlIGdsb2JhbCBwYWNrYWdlcyBvciBsb2NhbCBwYWNrYWdlcyBjYWNoZXMgdG8gaW52YWxpZGF0ZSBzbyB0ZXN0aW5nIGNhblxuICAgICAgICAvLyBqdXN0IGNsZWFyIHRoZSBnbG9iYWwgdG8gc2V0IHRoaXMgc3RhdGVcbiAgICAgICAgaWYgKCFwYWNrYWdlc1twYWNrYWdlTmFtZV0gfHwgIXBhY2thZ2VzQ2FjaGVbcGFja2FnZU5hbWVdKSB7XG4gICAgICAgICAgICBwYWNrYWdlc0NhY2hlW3BhY2thZ2VOYW1lXSA9IHBhY2thZ2VWZXJzaW9uO1xuICAgICAgICAgICAgdmFyIHZlcnNpb25zID0gKHBhY2thZ2VzW3BhY2thZ2VOYW1lXSA9IHBhY2thZ2VzW3BhY2thZ2VOYW1lXSB8fCBbXSk7XG4gICAgICAgICAgICB2ZXJzaW9ucy5wdXNoKHBhY2thZ2VWZXJzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNldFZlcnNpb24uanMubWFwIiwiaW1wb3J0IHsgc2V0VmVyc2lvbiB9IGZyb20gJy4vc2V0VmVyc2lvbic7XG5leHBvcnQgeyBzZXRWZXJzaW9uIH07XG5zZXRWZXJzaW9uKCdAZmx1ZW50dWkvc2V0LXZlcnNpb24nLCAnNi4wLjAnKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcclxufVxyXG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IHZhciBJbmplY3Rpb25Nb2RlID0ge1xuICAgIC8qKlxuICAgICAqIEF2b2lkcyBzdHlsZSBpbmplY3Rpb24sIHVzZSBnZXRSdWxlcygpIHRvIHJlYWQgdGhlIHN0eWxlcy5cbiAgICAgKi9cbiAgICBub25lOiAwLFxuICAgIC8qKlxuICAgICAqIEluc2VydHMgcnVsZXMgdXNpbmcgdGhlIGluc2VydFJ1bGUgYXBpLlxuICAgICAqL1xuICAgIGluc2VydE5vZGU6IDEsXG4gICAgLyoqXG4gICAgICogQXBwZW5kcyBydWxlcyB1c2luZyBhcHBlbmRDaGlsZC5cbiAgICAgKi9cbiAgICBhcHBlbmRDaGlsZDogMixcbn07XG52YXIgU1RZTEVTSEVFVF9TRVRUSU5HID0gJ19fc3R5bGVzaGVldF9fJztcbi8qKlxuICogTVNJRSAxMSBkb2Vzbid0IGNhc2NhZGUgc3R5bGVzIGJhc2VkIG9uIERPTSBvcmRlcmluZywgYnV0IHJhdGhlciBvbiB0aGUgb3JkZXIgdGhhdCBlYWNoIHN0eWxlIG5vZGVcbiAqIGlzIGNyZWF0ZWQuIEFzIHN1Y2gsIHRvIG1haW50YWluIGNvbnNpc3RlbnQgcHJpb3JpdHksIElFMTEgc2hvdWxkIHJldXNlIGEgc2luZ2xlIHN0eWxlIG5vZGUuXG4gKi9cbnZhciBSRVVTRV9TVFlMRV9OT0RFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL3J2OjExLjAvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG52YXIgX2dsb2JhbCA9IHt9O1xuLy8gR3JhYiB3aW5kb3cuXG50cnkge1xuICAgIC8vIFdoeSB0aGUgY2FzdD9cbiAgICAvLyBpZiBjb21waWxlZC90eXBlIGNoZWNrZWQgaW4gc2FtZSBwcm9ncmFtIHdpdGggYEBmbHVlbnR1aS9mb250LWljb25zLW1kbDJgIHdoaWNoIGV4dGVuZHMgYFdpbmRvd2Agb24gZ2xvYmFsXG4gICAgLy8gKCBjaGVjayBwYWNrYWdlcy9mb250LWljb25zLW1kbDIvc3JjL2luZGV4LnRzICkgdGhlIGRlZmluaXRpb25zIGRvbid0IG1hdGNoISBUaHVzIHRoZSBuZWVkIG9mIHRoaXMgZXh0cmEgYXNzZXJ0aW9uXG4gICAgX2dsb2JhbCA9ICh3aW5kb3cgfHwge30pO1xufVxuY2F0Y2ggKF9hKSB7XG4gICAgLyogbGVhdmUgYXMgYmxhbmsgb2JqZWN0ICovXG59XG52YXIgX3N0eWxlc2hlZXQ7XG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHN0eWxlcyByZWdpc3RlcmVkIGluIHRoZSBwYWdlLiBBYnN0cmFjdHNcbiAqIHRoZSBzdXJmYWNlIGZvciBhZGRpbmcgc3R5bGVzIHRvIHRoZSBzdHlsZXNoZWV0LCBleHBvc2VzIGhlbHBlcnNcbiAqIGZvciByZWFkaW5nIHRoZSBzdHlsZXMgcmVnaXN0ZXJlZCBpbiBzZXJ2ZXIgcmVuZGVyZWQgc2NlbmFyaW9zLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFN0eWxlc2hlZXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3R5bGVzaGVldChjb25maWcsIHNlcmlhbGl6ZWRTdHlsZXNoZWV0KSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IFtdO1xuICAgICAgICB0aGlzLl9wcmVzZXJ2ZWRSdWxlcyA9IFtdO1xuICAgICAgICB0aGlzLl9jb3VudGVyID0gMDtcbiAgICAgICAgdGhpcy5fa2V5VG9DbGFzc05hbWUgPSB7fTtcbiAgICAgICAgdGhpcy5fb25JbnNlcnRSdWxlQ2FsbGJhY2tzID0gW107XG4gICAgICAgIHRoaXMuX29uUmVzZXRDYWxsYmFja3MgPSBbXTtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lVG9BcmdzID0ge307XG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IF9fYXNzaWduKHsgXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBkb2N1bWVudCB3ZSB3b24ndCBoYXZlIGFuIGVsZW1lbnQgdG8gaW5qZWN0IGludG8uXG4gICAgICAgICAgICBpbmplY3Rpb25Nb2RlOiB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gSW5qZWN0aW9uTW9kZS5ub25lIDogSW5qZWN0aW9uTW9kZS5pbnNlcnROb2RlLCBkZWZhdWx0UHJlZml4OiAnY3NzJywgbmFtZXNwYWNlOiB1bmRlZmluZWQsIGNzcFNldHRpbmdzOiB1bmRlZmluZWQgfSwgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lVG9BcmdzID0gKF9hID0gc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IG51bGwgfHwgc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlcmlhbGl6ZWRTdHlsZXNoZWV0LmNsYXNzTmFtZVRvQXJncykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5fY2xhc3NOYW1lVG9BcmdzO1xuICAgICAgICB0aGlzLl9jb3VudGVyID0gKF9iID0gc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IG51bGwgfHwgc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlcmlhbGl6ZWRTdHlsZXNoZWV0LmNvdW50ZXIpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuX2NvdW50ZXI7XG4gICAgICAgIHRoaXMuX2tleVRvQ2xhc3NOYW1lID0gKF9kID0gKF9jID0gdGhpcy5fY29uZmlnLmNsYXNzTmFtZUNhY2hlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBzZXJpYWxpemVkU3R5bGVzaGVldCA9PT0gbnVsbCB8fCBzZXJpYWxpemVkU3R5bGVzaGVldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VyaWFsaXplZFN0eWxlc2hlZXQua2V5VG9DbGFzc05hbWUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IHRoaXMuX2tleVRvQ2xhc3NOYW1lO1xuICAgICAgICB0aGlzLl9wcmVzZXJ2ZWRSdWxlcyA9IChfZSA9IHNlcmlhbGl6ZWRTdHlsZXNoZWV0ID09PSBudWxsIHx8IHNlcmlhbGl6ZWRTdHlsZXNoZWV0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZXJpYWxpemVkU3R5bGVzaGVldC5wcmVzZXJ2ZWRSdWxlcykgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogdGhpcy5fcHJlc2VydmVkUnVsZXM7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gKF9mID0gc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IG51bGwgfHwgc2VyaWFsaXplZFN0eWxlc2hlZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlcmlhbGl6ZWRTdHlsZXNoZWV0LnJ1bGVzKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiB0aGlzLl9ydWxlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2luZ2xldG9uIGluc3RhbmNlLlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF9zdHlsZXNoZWV0ID0gX2dsb2JhbFtTVFlMRVNIRUVUX1NFVFRJTkddO1xuICAgICAgICBpZiAoIV9zdHlsZXNoZWV0IHx8IChfc3R5bGVzaGVldC5fbGFzdFN0eWxlRWxlbWVudCAmJiBfc3R5bGVzaGVldC5fbGFzdFN0eWxlRWxlbWVudC5vd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgIHZhciBmYWJyaWNDb25maWcgPSAoX2dsb2JhbCA9PT0gbnVsbCB8fCBfZ2xvYmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZ2xvYmFsLkZhYnJpY0NvbmZpZykgfHwge307XG4gICAgICAgICAgICB2YXIgc3R5bGVzaGVldCA9IG5ldyBTdHlsZXNoZWV0KGZhYnJpY0NvbmZpZy5tZXJnZVN0eWxlcywgZmFicmljQ29uZmlnLnNlcmlhbGl6ZWRTdHlsZXNoZWV0KTtcbiAgICAgICAgICAgIF9zdHlsZXNoZWV0ID0gc3R5bGVzaGVldDtcbiAgICAgICAgICAgIF9nbG9iYWxbU1RZTEVTSEVFVF9TRVRUSU5HXSA9IHN0eWxlc2hlZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9zdHlsZXNoZWV0O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplcyB0aGUgU3R5bGVzaGVldCBpbnN0YW5jZSBpbnRvIGEgZm9ybWF0IHdoaWNoIGFsbG93cyByZWh5ZHJhdGlvbiBvbiBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYElTZXJpYWxpemVkU3R5bGVzaGVldGAgaW50ZXJmYWNlLlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGNsYXNzTmFtZVRvQXJnczogdGhpcy5fY2xhc3NOYW1lVG9BcmdzLFxuICAgICAgICAgICAgY291bnRlcjogdGhpcy5fY291bnRlcixcbiAgICAgICAgICAgIGtleVRvQ2xhc3NOYW1lOiB0aGlzLl9rZXlUb0NsYXNzTmFtZSxcbiAgICAgICAgICAgIHByZXNlcnZlZFJ1bGVzOiB0aGlzLl9wcmVzZXJ2ZWRSdWxlcyxcbiAgICAgICAgICAgIHJ1bGVzOiB0aGlzLl9ydWxlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBzdHlsZXNoZWV0LlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLnNldENvbmZpZyA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuX2NvbmZpZyksIGNvbmZpZyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIGEgcmVzZXQgY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIFN0eWxlc2hlZXQgaXMgcmVzZXQuXG4gICAgICogQHJldHVybnMgZnVuY3Rpb24gd2hpY2ggd2hlbiBjYWxsZWQgdW4tcmVnaXN0ZXJzIHByb3ZpZGVkIGNhbGxiYWNrLlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLm9uUmVzZXQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5fb25SZXNldENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl9vblJlc2V0Q2FsbGJhY2tzID0gX3RoaXMuX29uUmVzZXRDYWxsYmFja3MuZmlsdGVyKGZ1bmN0aW9uIChjYikgeyByZXR1cm4gY2IgIT09IGNhbGxiYWNrOyB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgYW4gaW5zZXJ0IHJ1bGUgY2FsbGJhY2suXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBydWxlIGlzIGluc2VydGVkLlxuICAgICAqIEByZXR1cm5zIGZ1bmN0aW9uIHdoaWNoIHdoZW4gY2FsbGVkIHVuLXJlZ2lzdGVycyBwcm92aWRlZCBjYWxsYmFjay5cbiAgICAgKi9cbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5vbkluc2VydFJ1bGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5fb25JbnNlcnRSdWxlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX29uSW5zZXJ0UnVsZUNhbGxiYWNrcyA9IF90aGlzLl9vbkluc2VydFJ1bGVDYWxsYmFja3MuZmlsdGVyKGZ1bmN0aW9uIChjYikgeyByZXR1cm4gY2IgIT09IGNhbGxiYWNrOyB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBjbGFzc25hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlzcGxheU5hbWUgLSBPcHRpb25hbCB2YWx1ZSB0byB1c2UgYXMgYSBwcmVmaXguXG4gICAgICovXG4gICAgU3R5bGVzaGVldC5wcm90b3R5cGUuZ2V0Q2xhc3NOYW1lID0gZnVuY3Rpb24gKGRpc3BsYXlOYW1lKSB7XG4gICAgICAgIHZhciBuYW1lc3BhY2UgPSB0aGlzLl9jb25maWcubmFtZXNwYWNlO1xuICAgICAgICB2YXIgcHJlZml4ID0gZGlzcGxheU5hbWUgfHwgdGhpcy5fY29uZmlnLmRlZmF1bHRQcmVmaXg7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChuYW1lc3BhY2UgPyBuYW1lc3BhY2UgKyAnLScgOiAnJykuY29uY2F0KHByZWZpeCwgXCItXCIpLmNvbmNhdCh0aGlzLl9jb3VudGVyKyspO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVXNlZCBpbnRlcm5hbGx5IHRvIGNhY2hlIGluZm9ybWF0aW9uIGFib3V0IGEgY2xhc3Mgd2hpY2ggd2FzXG4gICAgICogcmVnaXN0ZXJlZCB3aXRoIHRoZSBzdHlsZXNoZWV0LlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLmNhY2hlQ2xhc3NOYW1lID0gZnVuY3Rpb24gKGNsYXNzTmFtZSwga2V5LCBhcmdzLCBydWxlcykge1xuICAgICAgICB0aGlzLl9rZXlUb0NsYXNzTmFtZVtrZXldID0gY2xhc3NOYW1lO1xuICAgICAgICB0aGlzLl9jbGFzc05hbWVUb0FyZ3NbY2xhc3NOYW1lXSA9IHtcbiAgICAgICAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICAgICAgICBydWxlczogcnVsZXMsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcHByb3ByaWF0ZSBjbGFzc25hbWUgZ2l2ZW4gYSBrZXkgd2hpY2ggd2FzIHByZXZpb3VzbHlcbiAgICAgKiByZWdpc3RlcmVkIHVzaW5nIGNhY2hlQ2xhc3NOYW1lLlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLmNsYXNzTmFtZUZyb21LZXkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXlUb0NsYXNzTmFtZVtrZXldO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgY2xhc3NuYW1lcyBjYWNoZSB3aXRoIHRoZSBzdHlsZXNoZWV0LlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLmdldENsYXNzTmFtZUNhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5VG9DbGFzc05hbWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gY2xhc3NuYW1lIHdoaWNoIHdhc1xuICAgICAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB1c2luZyBjYWNoZUNsYXNzTmFtZS5cbiAgICAgKi9cbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5hcmdzRnJvbUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fY2xhc3NOYW1lVG9BcmdzW2NsYXNzTmFtZV07XG4gICAgICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS5hcmdzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcnVsZXMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gY2xhc3NuYW1lIHdoaWNoIHdhc1xuICAgICAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB1c2luZyBjYWNoZUNsYXNzTmFtZS5cbiAgICAgKi9cbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5pbnNlcnRlZFJ1bGVzRnJvbUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5fY2xhc3NOYW1lVG9BcmdzW2NsYXNzTmFtZV07XG4gICAgICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS5ydWxlcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEluc2VydHMgYSBjc3MgcnVsZSBpbnRvIHRoZSBzdHlsZXNoZWV0LlxuICAgICAqIEBwYXJhbSBwcmVzZXJ2ZSAtIFByZXNlcnZlcyB0aGUgcnVsZSBiZXlvbmQgYSByZXNldCBib3VuZGFyeS5cbiAgICAgKi9cbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5pbnNlcnRSdWxlID0gZnVuY3Rpb24gKHJ1bGUsIHByZXNlcnZlKSB7XG4gICAgICAgIHZhciBpbmplY3Rpb25Nb2RlID0gdGhpcy5fY29uZmlnLmluamVjdGlvbk1vZGU7XG4gICAgICAgIHZhciBlbGVtZW50ID0gaW5qZWN0aW9uTW9kZSAhPT0gSW5qZWN0aW9uTW9kZS5ub25lID8gdGhpcy5fZ2V0U3R5bGVFbGVtZW50KCkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChwcmVzZXJ2ZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJlc2VydmVkUnVsZXMucHVzaChydWxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgc3dpdGNoIChpbmplY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBJbmplY3Rpb25Nb2RlLmluc2VydE5vZGU6XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaGVldCA9IGVsZW1lbnQuc2hlZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGVldC5pbnNlcnRSdWxlKHJ1bGUsIHNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBicm93c2VyIHdpbGwgdGhyb3cgZXhjZXB0aW9ucyBvbiB1bnN1cHBvcnRlZCBydWxlcyAoc3VjaCBhcyBhIG1veiBwcmVmaXggaW4gd2Via2l0LilcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3dhbGxvdyB0aGUgZXhjZXB0aW9ucyBmb3IgdGhpcyBzY2VuYXJpbywgb3RoZXJ3aXNlIHdlJ2QgbmVlZCB0byBmaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIGNvdWxkIGJlIHNsb3dlciBhbmQgYnVsa2llci5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIEluamVjdGlvbk1vZGUuYXBwZW5kQ2hpbGQ6XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocnVsZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLnB1c2gocnVsZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIGlmICh0aGlzLl9jb25maWcub25JbnNlcnRSdWxlKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5vbkluc2VydFJ1bGUocnVsZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb25JbnNlcnRSdWxlQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjaygpOyB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIHJ1bGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3R5bGVzaGVldDsgb25seSB2YWxpZCB3aGVuXG4gICAgICogdXNpbmcgSW5zZXJ0aW9uTW9kZS5ub25lLlxuICAgICAqL1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLmdldFJ1bGVzID0gZnVuY3Rpb24gKGluY2x1ZGVQcmVzZXJ2ZWRSdWxlcykge1xuICAgICAgICByZXR1cm4gKGluY2x1ZGVQcmVzZXJ2ZWRSdWxlcyA/IHRoaXMuX3ByZXNlcnZlZFJ1bGVzLmpvaW4oJycpIDogJycpICsgdGhpcy5fcnVsZXMuam9pbignJyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXNldHMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBzdHlsZXNoZWV0LiBPbmx5IHVzZWQgaW4gc2VydmVyXG4gICAgICogcmVuZGVyZWQgc2NlbmFyaW9zIHdoZXJlIHdlJ3JlIHVzaW5nIEluc2VydGlvbk1vZGUubm9uZS5cbiAgICAgKi9cbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBbXTtcbiAgICAgICAgdGhpcy5fY291bnRlciA9IDA7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZVRvQXJncyA9IHt9O1xuICAgICAgICB0aGlzLl9rZXlUb0NsYXNzTmFtZSA9IHt9O1xuICAgICAgICB0aGlzLl9vblJlc2V0Q2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjaygpOyB9KTtcbiAgICB9O1xuICAgIC8vIEZvcmNlcyB0aGUgcmVnZW5lcmF0aW9uIG9mIGluY29taW5nIHN0eWxlcyB3aXRob3V0IHRvdGFsbHkgcmVzZXR0aW5nIHRoZSBzdHlsZXNoZWV0LlxuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLnJlc2V0S2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fa2V5VG9DbGFzc05hbWUgPSB7fTtcbiAgICB9O1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLl9nZXRTdHlsZUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5fc3R5bGVFbGVtZW50ICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IHRoaXMuX2NyZWF0ZVN0eWxlRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKCFSRVVTRV9TVFlMRV9OT0RFKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHN0eWxlIGVsZW1lbnQgb24gdGhlIG5leHQgZnJhbWUuXG4gICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdHlsZUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlRWxlbWVudDtcbiAgICB9O1xuICAgIFN0eWxlc2hlZXQucHJvdG90eXBlLl9jcmVhdGVTdHlsZUVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZDtcbiAgICAgICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHZhciBub2RlVG9JbnNlcnRCZWZvcmUgPSBudWxsO1xuICAgICAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLW1lcmdlLXN0eWxlcycsICd0cnVlJyk7XG4gICAgICAgIHZhciBjc3BTZXR0aW5ncyA9IHRoaXMuX2NvbmZpZy5jc3BTZXR0aW5ncztcbiAgICAgICAgaWYgKGNzcFNldHRpbmdzKSB7XG4gICAgICAgICAgICBpZiAoY3NwU2V0dGluZ3Mubm9uY2UpIHtcbiAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdub25jZScsIGNzcFNldHRpbmdzLm5vbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbGFzdFN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgLy8gSWYgdGhlIGBuZXh0RWxlbWVudFNpYmxpbmdgIGlzIG51bGwsIHRoZW4gdGhlIGluc2VydEJlZm9yZSB3aWxsIGFjdCBhcyBhIHJlZ3VsYXIgYXBwZW5kLlxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05vZGUvaW5zZXJ0QmVmb3JlI1N5bnRheFxuICAgICAgICAgICAgbm9kZVRvSW5zZXJ0QmVmb3JlID0gdGhpcy5fbGFzdFN0eWxlRWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcGxhY2Vob2xkZXJTdHlsZVRhZyA9IHRoaXMuX2ZpbmRQbGFjZWhvbGRlclN0eWxlVGFnKCk7XG4gICAgICAgICAgICBpZiAocGxhY2Vob2xkZXJTdHlsZVRhZykge1xuICAgICAgICAgICAgICAgIG5vZGVUb0luc2VydEJlZm9yZSA9IHBsYWNlaG9sZGVyU3R5bGVUYWcubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVRvSW5zZXJ0QmVmb3JlID0gaGVhZC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKHN0eWxlRWxlbWVudCwgaGVhZC5jb250YWlucyhub2RlVG9JbnNlcnRCZWZvcmUpID8gbm9kZVRvSW5zZXJ0QmVmb3JlIDogbnVsbCk7XG4gICAgICAgIHRoaXMuX2xhc3RTdHlsZUVsZW1lbnQgPSBzdHlsZUVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBzdHlsZUVsZW1lbnQ7XG4gICAgfTtcbiAgICBTdHlsZXNoZWV0LnByb3RvdHlwZS5fZmluZFBsYWNlaG9sZGVyU3R5bGVUYWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZDtcbiAgICAgICAgaWYgKGhlYWQpIHtcbiAgICAgICAgICAgIHJldHVybiBoZWFkLnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtbWVyZ2Utc3R5bGVzXScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFN0eWxlc2hlZXQ7XG59KCkpO1xuZXhwb3J0IHsgU3R5bGVzaGVldCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3R5bGVzaGVldC5qcy5tYXAiLCJpbXBvcnQgeyBTdHlsZXNoZWV0IH0gZnJvbSAnLi9TdHlsZXNoZWV0Jztcbi8qKlxuICogU2VwYXJhdGVzIHRoZSBjbGFzc2VzIGFuZCBzdHlsZSBvYmplY3RzLiBBbnkgY2xhc3NlcyB0aGF0IGFyZSBwcmUtcmVnaXN0ZXJlZFxuICogYXJncyBhcmUgYXV0byBleHBhbmRlZCBpbnRvIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U3R5bGVQYXJ0cygpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGNsYXNzZXMgPSBbXTtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gU3R5bGVzaGVldC5nZXRJbnN0YW5jZSgpO1xuICAgIGZ1bmN0aW9uIF9wcm9jZXNzQXJncyhhcmdzTGlzdCkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGFyZ3NMaXN0XzEgPSBhcmdzTGlzdDsgX2kgPCBhcmdzTGlzdF8xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGFyZyA9IGFyZ3NMaXN0XzFbX2ldO1xuICAgICAgICAgICAgaWYgKGFyZykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLmluZGV4T2YoJyAnKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfcHJvY2Vzc0FyZ3MoYXJnLnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWRBcmdzID0gc3R5bGVzaGVldC5hcmdzRnJvbUNsYXNzTmFtZShhcmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWRBcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Byb2Nlc3NBcmdzKHRyYW5zbGF0ZWRBcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF2b2lkIGFkZGluZyB0aGUgc2FtZSBjbGFzcyB0d2ljZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xhc3Nlcy5pbmRleE9mKGFyZykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaChhcmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgICAgICAgICAgX3Byb2Nlc3NBcmdzKGFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBhcmcgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdHMucHVzaChhcmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBfcHJvY2Vzc0FyZ3MoYXJncyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICAgICAgb2JqZWN0czogb2JqZWN0cyxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXh0cmFjdFN0eWxlUGFydHMuanMubWFwIiwiLyoqXG4gKiBTZXRzIHRoZSBjdXJyZW50IFJUTCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJUTChpc1JUTCkge1xuICAgIGlmIChfcnRsICE9PSBpc1JUTCkge1xuICAgICAgICBfcnRsID0gaXNSVEw7XG4gICAgfVxufVxuLyoqXG4gKiBHZXRzIHRoZSBjdXJyZW50IFJUTCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJUTCgpIHtcbiAgICBpZiAoX3J0bCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIF9ydGwgPVxuICAgICAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICEhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlyJykgPT09ICdydGwnO1xuICAgIH1cbiAgICByZXR1cm4gX3J0bDtcbn1cbi8vIFRoaXMgaGFzIGJlZW4gc3BsaXQgaW50byAyIGxpbmVzIGJlY2F1c2UgaXQgd2FzIHdvcmtpbmcgaW4gRmFicmljIGR1ZSB0byB0aGUgY29kZSBiZWluZyB0cmFuc3BpbGVkIHRvIGVzNSwgc28gdGhpc1xuLy8gd2FzIGNvbnZlcnRlZCB0byB2YXIgd2hpbGUgbm90IHdvcmtpbmcgaW4gRmx1ZW50IHRoYXQgdXNlcyBiYWJlbCB0byB0cmFuc3BpbGUgdGhlIGNvZGUgdG8gYmUgZXM2LWxpa2UuIFNwbGl0dGluZyB0aGVcbi8vIGxvZ2ljIGludG8gdHdvIGxpbmVzLCBob3dldmVyLCBhbGxvd3MgaXQgdG8gd29yayBpbiBib3RoIHNjZW5hcmlvcy5cbnZhciBfcnRsO1xuX3J0bCA9IGdldFJUTCgpO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlT3B0aW9ucygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBydGw6IGdldFJUTCgpLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1TdHlsZU9wdGlvbnNTdGF0ZS5qcy5tYXAiLCJ2YXIgcnVsZXMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBrZWJhYlJ1bGVzKHJ1bGVQYWlycywgaW5kZXgpIHtcbiAgICB2YXIgcnVsZSA9IHJ1bGVQYWlyc1tpbmRleF07XG4gICAgaWYgKHJ1bGUuY2hhckF0KDApICE9PSAnLScpIHtcbiAgICAgICAgcnVsZVBhaXJzW2luZGV4XSA9IHJ1bGVzW3J1bGVdID0gcnVsZXNbcnVsZV0gfHwgcnVsZS5yZXBsYWNlKC8oW0EtWl0pL2csICctJDEnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWtlYmFiUnVsZXMuanMubWFwIiwidmFyIF92ZW5kb3JTZXR0aW5ncztcbmV4cG9ydCBmdW5jdGlvbiBnZXRWZW5kb3JTZXR0aW5ncygpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCFfdmVuZG9yU2V0dGluZ3MpIHtcbiAgICAgICAgdmFyIGRvYyA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIG5hdiA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnID8gbmF2aWdhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdXNlckFnZW50ID0gKF9hID0gbmF2ID09PSBudWxsIHx8IG5hdiA9PT0gdm9pZCAwID8gdm9pZCAwIDogbmF2LnVzZXJBZ2VudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghZG9jKSB7XG4gICAgICAgICAgICBfdmVuZG9yU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgaXNXZWJraXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNNb3o6IHRydWUsXG4gICAgICAgICAgICAgICAgaXNPcGVyYTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpc01zOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIF92ZW5kb3JTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgICAgICBpc1dlYmtpdDogISEoZG9jICYmICdXZWJraXRBcHBlYXJhbmNlJyBpbiBkb2MuZG9jdW1lbnRFbGVtZW50LnN0eWxlKSxcbiAgICAgICAgICAgICAgICBpc01vejogISEodXNlckFnZW50ICYmIHVzZXJBZ2VudC5pbmRleE9mKCdmaXJlZm94JykgPiAtMSksXG4gICAgICAgICAgICAgICAgaXNPcGVyYTogISEodXNlckFnZW50ICYmIHVzZXJBZ2VudC5pbmRleE9mKCdvcGVyYScpID4gLTEpLFxuICAgICAgICAgICAgICAgIGlzTXM6ICEhKG5hdiAmJiAoL3J2OjExLjAvaS50ZXN0KG5hdi51c2VyQWdlbnQpIHx8IC9FZGdlXFwvXFxkLi9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF92ZW5kb3JTZXR0aW5ncztcbn1cbi8qKlxuICogU2V0cyB0aGUgdmVuZG9yIHNldHRpbmdzIGZvciBwcmVmaXhpbmcgYW5kIHZlbmRvciBzcGVjaWZpYyBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VmVuZG9yU2V0dGluZ3ModmVuZG9yU2V0dGluZ3MpIHtcbiAgICBfdmVuZG9yU2V0dGluZ3MgPSB2ZW5kb3JTZXR0aW5ncztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldFZlbmRvclNldHRpbmdzLmpzLm1hcCIsImltcG9ydCB7IGdldFZlbmRvclNldHRpbmdzIH0gZnJvbSAnLi4vZ2V0VmVuZG9yU2V0dGluZ3MnO1xudmFyIGF1dG9QcmVmaXhOYW1lcyA9IHtcbiAgICAndXNlci1zZWxlY3QnOiAxLFxufTtcbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhSdWxlcyhydWxlUGFpcnMsIGluZGV4KSB7XG4gICAgdmFyIHZlbmRvclNldHRpbmdzID0gZ2V0VmVuZG9yU2V0dGluZ3MoKTtcbiAgICB2YXIgbmFtZSA9IHJ1bGVQYWlyc1tpbmRleF07XG4gICAgaWYgKGF1dG9QcmVmaXhOYW1lc1tuYW1lXSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBydWxlUGFpcnNbaW5kZXggKyAxXTtcbiAgICAgICAgaWYgKGF1dG9QcmVmaXhOYW1lc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHZlbmRvclNldHRpbmdzLmlzV2Via2l0KSB7XG4gICAgICAgICAgICAgICAgcnVsZVBhaXJzLnB1c2goJy13ZWJraXQtJyArIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2ZW5kb3JTZXR0aW5ncy5pc01veikge1xuICAgICAgICAgICAgICAgIHJ1bGVQYWlycy5wdXNoKCctbW96LScgKyBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmVuZG9yU2V0dGluZ3MuaXNNcykge1xuICAgICAgICAgICAgICAgIHJ1bGVQYWlycy5wdXNoKCctbXMtJyArIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2ZW5kb3JTZXR0aW5ncy5pc09wZXJhKSB7XG4gICAgICAgICAgICAgICAgcnVsZVBhaXJzLnB1c2goJy1vLScgKyBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmVmaXhSdWxlcy5qcy5tYXAiLCJ2YXIgTk9OX1BJWEVMX05VTUJFUl9QUk9QUyA9IFtcbiAgICAnY29sdW1uLWNvdW50JyxcbiAgICAnZm9udC13ZWlnaHQnLFxuICAgICdmbGV4JyxcbiAgICAnZmxleC1ncm93JyxcbiAgICAnZmxleC1zaHJpbmsnLFxuICAgICdmaWxsLW9wYWNpdHknLFxuICAgICdvcGFjaXR5JyxcbiAgICAnb3JkZXInLFxuICAgICd6LWluZGV4JyxcbiAgICAnem9vbScsXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVVbml0cyhydWxlUGFpcnMsIGluZGV4KSB7XG4gICAgdmFyIG5hbWUgPSBydWxlUGFpcnNbaW5kZXhdO1xuICAgIHZhciB2YWx1ZSA9IHJ1bGVQYWlyc1tpbmRleCArIDFdO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIHZhciBpc05vblBpeGVsUHJvcCA9IE5PTl9QSVhFTF9OVU1CRVJfUFJPUFMuaW5kZXhPZihuYW1lKSA+IC0xO1xuICAgICAgICB2YXIgaXNWYXJpYWJsZU9yUHJlZml4ZWQgPSBuYW1lLmluZGV4T2YoJy0tJykgPiAtMTtcbiAgICAgICAgdmFyIHVuaXQgPSBpc05vblBpeGVsUHJvcCB8fCBpc1ZhcmlhYmxlT3JQcmVmaXhlZCA/ICcnIDogJ3B4JztcbiAgICAgICAgcnVsZVBhaXJzW2luZGV4ICsgMV0gPSBcIlwiLmNvbmNhdCh2YWx1ZSkuY29uY2F0KHVuaXQpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByb3ZpZGVVbml0cy5qcy5tYXAiLCJ2YXIgX2E7XG52YXIgTEVGVCA9ICdsZWZ0JztcbnZhciBSSUdIVCA9ICdyaWdodCc7XG52YXIgTk9fRkxJUCA9ICdAbm9mbGlwJztcbnZhciBOQU1FX1JFUExBQ0VNRU5UUyA9IChfYSA9IHt9LFxuICAgIF9hW0xFRlRdID0gUklHSFQsXG4gICAgX2FbUklHSFRdID0gTEVGVCxcbiAgICBfYSk7XG52YXIgVkFMVUVfUkVQTEFDRU1FTlRTID0ge1xuICAgICd3LXJlc2l6ZSc6ICdlLXJlc2l6ZScsXG4gICAgJ3N3LXJlc2l6ZSc6ICdzZS1yZXNpemUnLFxuICAgICdudy1yZXNpemUnOiAnbmUtcmVzaXplJyxcbn07XG4vKipcbiAqIFJUTGlmaWVzIHRoZSBydWxlUGFpciBpbiB0aGUgYXJyYXkgYXQgdGhlIGN1cnJlbnQgaW5kZXguIFRoaXMgbXV0YXRlcyB0aGUgYXJyYXkgZm9yIHBlcmZvcm1hbmNlXG4gKiByZWFzb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnRsaWZ5UnVsZXMob3B0aW9ucywgcnVsZVBhaXJzLCBpbmRleCkge1xuICAgIGlmIChvcHRpb25zLnJ0bCkge1xuICAgICAgICB2YXIgbmFtZV8xID0gcnVsZVBhaXJzW2luZGV4XTtcbiAgICAgICAgaWYgKCFuYW1lXzEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsdWUgPSBydWxlUGFpcnNbaW5kZXggKyAxXTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5kZXhPZihOT19GTElQKSA+PSAwKSB7XG4gICAgICAgICAgICBydWxlUGFpcnNbaW5kZXggKyAxXSA9IHZhbHVlLnJlcGxhY2UoL1xccyooPzpcXC9cXCpcXHMqKT9cXEBub2ZsaXBcXGIoPzpcXHMqXFwqXFwvKT9cXHMqPy9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobmFtZV8xLmluZGV4T2YoTEVGVCkgPj0gMCkge1xuICAgICAgICAgICAgcnVsZVBhaXJzW2luZGV4XSA9IG5hbWVfMS5yZXBsYWNlKExFRlQsIFJJR0hUKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYW1lXzEuaW5kZXhPZihSSUdIVCkgPj0gMCkge1xuICAgICAgICAgICAgcnVsZVBhaXJzW2luZGV4XSA9IG5hbWVfMS5yZXBsYWNlKFJJR0hULCBMRUZUKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChTdHJpbmcodmFsdWUpLmluZGV4T2YoTEVGVCkgPj0gMCkge1xuICAgICAgICAgICAgcnVsZVBhaXJzW2luZGV4ICsgMV0gPSB2YWx1ZS5yZXBsYWNlKExFRlQsIFJJR0hUKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChTdHJpbmcodmFsdWUpLmluZGV4T2YoUklHSFQpID49IDApIHtcbiAgICAgICAgICAgIHJ1bGVQYWlyc1tpbmRleCArIDFdID0gdmFsdWUucmVwbGFjZShSSUdIVCwgTEVGVCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoTkFNRV9SRVBMQUNFTUVOVFNbbmFtZV8xXSkge1xuICAgICAgICAgICAgcnVsZVBhaXJzW2luZGV4XSA9IE5BTUVfUkVQTEFDRU1FTlRTW25hbWVfMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoVkFMVUVfUkVQTEFDRU1FTlRTW3ZhbHVlXSkge1xuICAgICAgICAgICAgcnVsZVBhaXJzW2luZGV4ICsgMV0gPSBWQUxVRV9SRVBMQUNFTUVOVFNbdmFsdWVdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lXzEpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdtYXJnaW4nOlxuICAgICAgICAgICAgICAgIGNhc2UgJ3BhZGRpbmcnOlxuICAgICAgICAgICAgICAgICAgICBydWxlUGFpcnNbaW5kZXggKyAxXSA9IGZsaXBRdWFkKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm94LXNoYWRvdyc6XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVQYWlyc1tpbmRleCArIDFdID0gbmVnYXRlTnVtKHZhbHVlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEdpdmVuIGEgc3RyaW5nIHZhbHVlIGluIGEgc3BhY2UgZGVsaW1pdGVkIGZvcm1hdCAoZS5nLiBcIjEgMiAzIDRcIiksIG5lZ2F0ZXMgYSBwYXJ0aWN1bGFyIHZhbHVlLlxuICovXG5mdW5jdGlvbiBuZWdhdGVOdW0odmFsdWUsIHBhcnRJbmRleCkge1xuICAgIHZhciBwYXJ0cyA9IHZhbHVlLnNwbGl0KCcgJyk7XG4gICAgdmFyIG51bWJlclZhbCA9IHBhcnNlSW50KHBhcnRzW3BhcnRJbmRleF0sIDEwKTtcbiAgICBwYXJ0c1swXSA9IHBhcnRzWzBdLnJlcGxhY2UoU3RyaW5nKG51bWJlclZhbCksIFN0cmluZyhudW1iZXJWYWwgKiAtMSkpO1xuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG59XG4vKipcbiAqIEdpdmVuIGEgc3RyaW5nIHF1YWQsIGZsaXBzIHRoZSBsZWZ0IGFuZCByaWdodCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGZsaXBRdWFkKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFyIHBhcnRzID0gdmFsdWUuc3BsaXQoJyAnKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHBhcnRzWzBdLCBcIiBcIikuY29uY2F0KHBhcnRzWzNdLCBcIiBcIikuY29uY2F0KHBhcnRzWzJdLCBcIiBcIikuY29uY2F0KHBhcnRzWzFdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ydGxpZnlSdWxlcy5qcy5tYXAiLCIvKipcbiAqIFNwbGl0IGEgc3RyaW5nIGludG8gdG9rZW5zIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLCBleGNlcHQgYWxsIHRleHQgd2l0aGluIHBhcmVudGhlc2VzXG4gKiBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIHRva2VuICh3aGl0ZXNwYWNlIGlzIGlnbm9yZWQgd2l0aGluIHBhcmVudGhlc2VzKS5cbiAqXG4gKiBVbmxpa2UgU3RyaW5nLnNwbGl0KCcgJyksIG11bHRpcGxlIGNvbnNlY3V0aXZlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGNvbGxhcHNlZCBhbmRcbiAqIHJlbW92ZWQgZnJvbSB0aGUgcmV0dXJuZWQgYXJyYXkgKGluY2x1ZGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMpLlxuICpcbiAqIEZvciBleGFtcGxlOlxuICogYHRva2VuaXplV2l0aFBhcmVudGhlc2VzKFwiM3B4IGNhbGModmFyKC0teCkgLyAyKSA5cHggICAgMCBcIilgXG4gKiAgID0+IGBbXCIzcHhcIiwgXCJjYWxjKHZhcigtLXgpIC8gMilcIiwgXCI5cHhcIiwgXCIwXCJdYFxuICpcbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiB0b2tlbnMuIFJldHVybnMgYW4gZW1wdHkgYXJyYXkgaWYgdGhlIHN0cmluZyB3YXMgZW1wdHkgb3IgY29udGFpbmVkIG9ubHkgd2hpdGVzcGFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplV2l0aFBhcmVudGhlc2VzKHZhbHVlKSB7XG4gICAgdmFyIHBhcnRzID0gW107XG4gICAgdmFyIHBhcnRTdGFydCA9IDA7XG4gICAgdmFyIHBhcmVucyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlW2ldKSB7XG4gICAgICAgICAgICBjYXNlICcoJzpcbiAgICAgICAgICAgICAgICBwYXJlbnMrKztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJyknOlxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW5zLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnXFx0JzpcbiAgICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgICAgICAgIGlmICghcGFyZW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IHBhcnQgaWYgaXQncyBub3QgYW4gZW1wdHkgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gcGFydFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKHZhbHVlLnN1YnN0cmluZyhwYXJ0U3RhcnQsIGkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJ0U3RhcnQgPSBpICsgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWRkIHRoZSBsYXN0IHBhcnRcbiAgICBpZiAocGFydFN0YXJ0IDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHBhcnRzLnB1c2godmFsdWUuc3Vic3RyaW5nKHBhcnRTdGFydCkpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10b2tlbml6ZVdpdGhQYXJlbnRoZXNlcy5qcy5tYXAiLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBTdHlsZXNoZWV0IH0gZnJvbSAnLi9TdHlsZXNoZWV0JztcbmltcG9ydCB7IGtlYmFiUnVsZXMgfSBmcm9tICcuL3RyYW5zZm9ybXMva2ViYWJSdWxlcyc7XG5pbXBvcnQgeyBwcmVmaXhSdWxlcyB9IGZyb20gJy4vdHJhbnNmb3Jtcy9wcmVmaXhSdWxlcyc7XG5pbXBvcnQgeyBwcm92aWRlVW5pdHMgfSBmcm9tICcuL3RyYW5zZm9ybXMvcHJvdmlkZVVuaXRzJztcbmltcG9ydCB7IHJ0bGlmeVJ1bGVzIH0gZnJvbSAnLi90cmFuc2Zvcm1zL3J0bGlmeVJ1bGVzJztcbmltcG9ydCB7IHRva2VuaXplV2l0aFBhcmVudGhlc2VzIH0gZnJvbSAnLi90b2tlbml6ZVdpdGhQYXJlbnRoZXNlcyc7XG52YXIgRElTUExBWV9OQU1FID0gJ2Rpc3BsYXlOYW1lJztcbmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKHJ1bGVzKSB7XG4gICAgdmFyIHJvb3RTdHlsZSA9IHJ1bGVzICYmIHJ1bGVzWycmJ107XG4gICAgcmV0dXJuIHJvb3RTdHlsZSA/IHJvb3RTdHlsZS5kaXNwbGF5TmFtZSA6IHVuZGVmaW5lZDtcbn1cbnZhciBnbG9iYWxTZWxlY3RvclJlZ0V4cCA9IC9cXDpnbG9iYWxcXCgoLis/KVxcKS9nO1xuLyoqXG4gKiBGaW5kcyBjb21tYSBzZXBhcmF0ZWQgc2VsZWN0b3JzIGluIGEgOmdsb2JhbCgpIGUuZy4gXCI6Z2xvYmFsKC5jbGFzczEsIC5jbGFzczIsIC5jbGFzczMpXCJcbiAqIGFuZCB3cmFwcyB0aGVtIGVhY2ggaW4gdGhlaXIgb3duIGdsb2JhbCBcIjpnbG9iYWwoLmNsYXNzMSksIDpnbG9iYWwoLmNsYXNzMiksIDpnbG9iYWwoLmNsYXNzMylcIlxuICpcbiAqIEBwYXJhbSBzZWxlY3RvcldpdGhHbG9iYWxzIFRoZSBzZWxlY3RvciB0byBwcm9jZXNzXG4gKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBzZWxlY3RvclxuICovXG5mdW5jdGlvbiBleHBhbmRDb21tYVNlcGFyYXRlZEdsb2JhbHMoc2VsZWN0b3JXaXRoR2xvYmFscykge1xuICAgIC8vIFdlIHRoZSBzZWxlY3RvciBkb2VzIG5vdCBoYXZlIGEgOmdsb2JhbCgpIHdlIGNhbiBzaG9ydGN1dFxuICAgIGlmICghZ2xvYmFsU2VsZWN0b3JSZWdFeHAudGVzdChzZWxlY3RvcldpdGhHbG9iYWxzKSkge1xuICAgICAgICByZXR1cm4gc2VsZWN0b3JXaXRoR2xvYmFscztcbiAgICB9XG4gICAgdmFyIHJlcGxhY2VtZW50SW5mbyA9IFtdO1xuICAgIHZhciBmaW5kR2xvYmFsID0gL1xcOmdsb2JhbFxcKCguKz8pXFwpL2c7XG4gICAgdmFyIG1hdGNoID0gbnVsbDtcbiAgICAvLyBDcmVhdGUgYSByZXN1bHQgbGlzdCBmb3IgZ2xvYmFsIHNlbGVjdG9ycyBzbyB3ZSBjYW4gcmVwbGFjZSB0aGVtLlxuICAgIHdoaWxlICgobWF0Y2ggPSBmaW5kR2xvYmFsLmV4ZWMoc2VsZWN0b3JXaXRoR2xvYmFscykpKSB7XG4gICAgICAgIC8vIE9ubHkgaWYgdGhlIGZvdW5kIHNlbGVjdG9yIGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgd2UnbGwgcHJvY2VzcyBpdC5cbiAgICAgICAgaWYgKG1hdGNoWzFdLmluZGV4T2YoJywnKSA+IC0xKSB7XG4gICAgICAgICAgICByZXBsYWNlbWVudEluZm8ucHVzaChbXG4gICAgICAgICAgICAgICAgbWF0Y2guaW5kZXgsXG4gICAgICAgICAgICAgICAgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgLy8gV3JhcCBlYWNoIG9mIHRoZSBmb3VuZCBzZWxlY3RvcnMgaW4gOmdsb2JhbCgpXG4gICAgICAgICAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gXCI6Z2xvYmFsKFwiLmNvbmNhdCh2LnRyaW0oKSwgXCIpXCIpOyB9KVxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJlcGxhY2UgdGhlIGZvdW5kIHNlbGVjdG9ycyB3aXRoIHRoZWlyIHdyYXBwZWQgdmFyaWFudHMgaW4gcmV2ZXJzZSBvcmRlclxuICAgIHJldHVybiByZXBsYWNlbWVudEluZm9cbiAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChzZWxlY3RvciwgX2EpIHtcbiAgICAgICAgdmFyIG1hdGNoSW5kZXggPSBfYVswXSwgbWF0Y2hFbmRJbmRleCA9IF9hWzFdLCByZXBsYWNlbWVudCA9IF9hWzJdO1xuICAgICAgICB2YXIgcHJlZml4ID0gc2VsZWN0b3Iuc2xpY2UoMCwgbWF0Y2hJbmRleCk7XG4gICAgICAgIHZhciBzdWZmaXggPSBzZWxlY3Rvci5zbGljZShtYXRjaEVuZEluZGV4KTtcbiAgICAgICAgcmV0dXJuIHByZWZpeCArIHJlcGxhY2VtZW50ICsgc3VmZml4O1xuICAgIH0sIHNlbGVjdG9yV2l0aEdsb2JhbHMpO1xufVxuZnVuY3Rpb24gZXhwYW5kU2VsZWN0b3IobmV3U2VsZWN0b3IsIGN1cnJlbnRTZWxlY3Rvcikge1xuICAgIGlmIChuZXdTZWxlY3Rvci5pbmRleE9mKCc6Z2xvYmFsKCcpID49IDApIHtcbiAgICAgICAgcmV0dXJuIG5ld1NlbGVjdG9yLnJlcGxhY2UoZ2xvYmFsU2VsZWN0b3JSZWdFeHAsICckMScpO1xuICAgIH1cbiAgICBlbHNlIGlmIChuZXdTZWxlY3Rvci5pbmRleE9mKCc6JykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRTZWxlY3RvciArIG5ld1NlbGVjdG9yO1xuICAgIH1cbiAgICBlbHNlIGlmIChuZXdTZWxlY3Rvci5pbmRleE9mKCcmJykgPCAwKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50U2VsZWN0b3IgKyAnICcgKyBuZXdTZWxlY3RvcjtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1NlbGVjdG9yO1xufVxuZnVuY3Rpb24gZXh0cmFjdFNlbGVjdG9yKGN1cnJlbnRTZWxlY3RvciwgcnVsZXMsIHNlbGVjdG9yLCB2YWx1ZSkge1xuICAgIGlmIChydWxlcyA9PT0gdm9pZCAwKSB7IHJ1bGVzID0geyBfX29yZGVyOiBbXSB9OyB9XG4gICAgaWYgKHNlbGVjdG9yLmluZGV4T2YoJ0AnKSA9PT0gMCkge1xuICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yICsgJ3snICsgY3VycmVudFNlbGVjdG9yO1xuICAgICAgICBleHRyYWN0UnVsZXMoW3ZhbHVlXSwgcnVsZXMsIHNlbGVjdG9yKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoc2VsZWN0b3IuaW5kZXhPZignLCcpID4gLTEpIHtcbiAgICAgICAgZXhwYW5kQ29tbWFTZXBhcmF0ZWRHbG9iYWxzKHNlbGVjdG9yKVxuICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMudHJpbSgpOyB9KVxuICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHNlcGFyYXRlZFNlbGVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmFjdFJ1bGVzKFt2YWx1ZV0sIHJ1bGVzLCBleHBhbmRTZWxlY3RvcihzZXBhcmF0ZWRTZWxlY3RvciwgY3VycmVudFNlbGVjdG9yKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZXh0cmFjdFJ1bGVzKFt2YWx1ZV0sIHJ1bGVzLCBleHBhbmRTZWxlY3RvcihzZWxlY3RvciwgY3VycmVudFNlbGVjdG9yKSk7XG4gICAgfVxufVxuZnVuY3Rpb24gZXh0cmFjdFJ1bGVzKGFyZ3MsIHJ1bGVzLCBjdXJyZW50U2VsZWN0b3IpIHtcbiAgICBpZiAocnVsZXMgPT09IHZvaWQgMCkgeyBydWxlcyA9IHsgX19vcmRlcjogW10gfTsgfVxuICAgIGlmIChjdXJyZW50U2VsZWN0b3IgPT09IHZvaWQgMCkgeyBjdXJyZW50U2VsZWN0b3IgPSAnJic7IH1cbiAgICB2YXIgc3R5bGVzaGVldCA9IFN0eWxlc2hlZXQuZ2V0SW5zdGFuY2UoKTtcbiAgICB2YXIgY3VycmVudFJ1bGVzID0gcnVsZXNbY3VycmVudFNlbGVjdG9yXTtcbiAgICBpZiAoIWN1cnJlbnRSdWxlcykge1xuICAgICAgICBjdXJyZW50UnVsZXMgPSB7fTtcbiAgICAgICAgcnVsZXNbY3VycmVudFNlbGVjdG9yXSA9IGN1cnJlbnRSdWxlcztcbiAgICAgICAgcnVsZXMuX19vcmRlci5wdXNoKGN1cnJlbnRTZWxlY3Rvcik7XG4gICAgfVxuICAgIGZvciAodmFyIF9pID0gMCwgYXJnc18xID0gYXJnczsgX2kgPCBhcmdzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBhcmcgPSBhcmdzXzFbX2ldO1xuICAgICAgICAvLyBJZiB0aGUgYXJnIGlzIGEgc3RyaW5nLCB3ZSBuZWVkIHRvIGxvb2sgdXAgdGhlIGNsYXNzIG1hcCBhbmQgbWVyZ2UuXG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFyIGV4cGFuZGVkUnVsZXMgPSBzdHlsZXNoZWV0LmFyZ3NGcm9tQ2xhc3NOYW1lKGFyZyk7XG4gICAgICAgICAgICBpZiAoZXhwYW5kZWRSdWxlcykge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RSdWxlcyhleHBhbmRlZFJ1bGVzLCBydWxlcywgY3VycmVudFNlbGVjdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEVsc2UgaWYgdGhlIGFyZyBpcyBhbiBhcnJheSwgd2UgbmVlZCB0byByZWN1cnNlIGluLlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgZXh0cmFjdFJ1bGVzKGFyZywgcnVsZXMsIGN1cnJlbnRTZWxlY3Rvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGFyZykge1xuICAgICAgICAgICAgICAgIGlmIChhcmcuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IGFyZ1twcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09ICdzZWxlY3RvcnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBjaGlsZCBpcyBhIHNlbGVjdG9yLlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IGFyZy5zZWxlY3RvcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBuZXdTZWxlY3RvciBpbiBzZWxlY3RvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzLmhhc093blByb3BlcnR5KG5ld1NlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0U2VsZWN0b3IoY3VycmVudFNlbGVjdG9yLCBydWxlcywgbmV3U2VsZWN0b3IsIHNlbGVjdG9yc1tuZXdTZWxlY3Rvcl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvcCBpcyBhIHNlbGVjdG9yLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RTZWxlY3RvcihjdXJyZW50U2VsZWN0b3IsIHJ1bGVzLCBwcm9wLCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWxzZSwgYWRkIHRoZSBydWxlIHRvIHRoZSBjdXJyZW50U2VsZWN0b3IuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09ICdtYXJnaW4nIHx8IHByb3AgPT09ICdwYWRkaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRRdWFkcyhjdXJyZW50UnVsZXMsIHByb3AsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UnVsZXNbcHJvcF0gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBydWxlcztcbn1cbmZ1bmN0aW9uIGV4cGFuZFF1YWRzKGN1cnJlbnRSdWxlcywgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcGFydHMgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdG9rZW5pemVXaXRoUGFyZW50aGVzZXModmFsdWUpIDogW3ZhbHVlXTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBhcnRzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgICBpZiAocGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICchaW1wb3J0YW50Jykge1xuICAgICAgICAvLyBSZW1vdmUgIWltcG9ydGFudCBmcm9tIHBhcnRzLCBhbmQgYXBwZW5kIGl0IHRvIGVhY2ggcGFydCBpbmRpdmlkdWFsbHlcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5zbGljZSgwLCAtMSkubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwICsgJyAhaW1wb3J0YW50JzsgfSk7XG4gICAgfVxuICAgIGN1cnJlbnRSdWxlc1tuYW1lICsgJ1RvcCddID0gcGFydHNbMF07XG4gICAgY3VycmVudFJ1bGVzW25hbWUgKyAnUmlnaHQnXSA9IHBhcnRzWzFdIHx8IHBhcnRzWzBdO1xuICAgIGN1cnJlbnRSdWxlc1tuYW1lICsgJ0JvdHRvbSddID0gcGFydHNbMl0gfHwgcGFydHNbMF07XG4gICAgY3VycmVudFJ1bGVzW25hbWUgKyAnTGVmdCddID0gcGFydHNbM10gfHwgcGFydHNbMV0gfHwgcGFydHNbMF07XG59XG5mdW5jdGlvbiBnZXRLZXlGb3JSdWxlcyhvcHRpb25zLCBydWxlcykge1xuICAgIHZhciBzZXJpYWxpemVkID0gW29wdGlvbnMucnRsID8gJ3J0bCcgOiAnbHRyJ107XG4gICAgdmFyIGhhc1Byb3BzID0gZmFsc2U7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IHJ1bGVzLl9fb3JkZXI7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBzZWxlY3RvciA9IF9hW19pXTtcbiAgICAgICAgc2VyaWFsaXplZC5wdXNoKHNlbGVjdG9yKTtcbiAgICAgICAgdmFyIHJ1bGVzRm9yU2VsZWN0b3IgPSBydWxlc1tzZWxlY3Rvcl07XG4gICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIHJ1bGVzRm9yU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGlmIChydWxlc0ZvclNlbGVjdG9yLmhhc093blByb3BlcnR5KHByb3BOYW1lKSAmJiBydWxlc0ZvclNlbGVjdG9yW3Byb3BOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaGFzUHJvcHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQucHVzaChwcm9wTmFtZSwgcnVsZXNGb3JTZWxlY3Rvcltwcm9wTmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNQcm9wcyA/IHNlcmlhbGl6ZWQuam9pbignJykgOiB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiByZXBlYXRTdHJpbmcodGFyZ2V0LCBjb3VudCkge1xuICAgIGlmIChjb3VudCA8PSAwKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQgKyByZXBlYXRTdHJpbmcodGFyZ2V0LCBjb3VudCAtIDEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVJ1bGVFbnRyaWVzKG9wdGlvbnMsIHJ1bGVFbnRyaWVzKSB7XG4gICAgaWYgKCFydWxlRW50cmllcykge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHZhciBhbGxFbnRyaWVzID0gW107XG4gICAgZm9yICh2YXIgZW50cnkgaW4gcnVsZUVudHJpZXMpIHtcbiAgICAgICAgaWYgKHJ1bGVFbnRyaWVzLmhhc093blByb3BlcnR5KGVudHJ5KSAmJiBlbnRyeSAhPT0gRElTUExBWV9OQU1FICYmIHJ1bGVFbnRyaWVzW2VudHJ5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbGxFbnRyaWVzLnB1c2goZW50cnksIHJ1bGVFbnRyaWVzW2VudHJ5XSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXBwbHkgdHJhbnNmb3Jtcy5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFsbEVudHJpZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAga2ViYWJSdWxlcyhhbGxFbnRyaWVzLCBpKTtcbiAgICAgICAgcHJvdmlkZVVuaXRzKGFsbEVudHJpZXMsIGkpO1xuICAgICAgICBydGxpZnlSdWxlcyhvcHRpb25zLCBhbGxFbnRyaWVzLCBpKTtcbiAgICAgICAgcHJlZml4UnVsZXMoYWxsRW50cmllcywgaSk7XG4gICAgfVxuICAgIC8vIEFwcGx5IHB1bmN0dWF0aW9uLlxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYWxsRW50cmllcy5sZW5ndGg7IGkgKz0gNCkge1xuICAgICAgICBhbGxFbnRyaWVzLnNwbGljZShpLCAxLCAnOicsIGFsbEVudHJpZXNbaV0sICc7Jyk7XG4gICAgfVxuICAgIHJldHVybiBhbGxFbnRyaWVzLmpvaW4oJycpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlVG9SZWdpc3RyYXRpb24ob3B0aW9ucykge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIHJ1bGVzID0gZXh0cmFjdFJ1bGVzKGFyZ3MpO1xuICAgIHZhciBrZXkgPSBnZXRLZXlGb3JSdWxlcyhvcHRpb25zLCBydWxlcyk7XG4gICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgc3R5bGVzaGVldCA9IFN0eWxlc2hlZXQuZ2V0SW5zdGFuY2UoKTtcbiAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogc3R5bGVzaGVldC5jbGFzc05hbWVGcm9tS2V5KGtleSksXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghcmVnaXN0cmF0aW9uLmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmVnaXN0cmF0aW9uLmNsYXNzTmFtZSA9IHN0eWxlc2hlZXQuZ2V0Q2xhc3NOYW1lKGdldERpc3BsYXlOYW1lKHJ1bGVzKSk7XG4gICAgICAgICAgICB2YXIgcnVsZXNUb0luc2VydCA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2EgPSAwLCBfYiA9IHJ1bGVzLl9fb3JkZXI7IF9hIDwgX2IubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gX2JbX2FdO1xuICAgICAgICAgICAgICAgIHJ1bGVzVG9JbnNlcnQucHVzaChzZWxlY3Rvciwgc2VyaWFsaXplUnVsZUVudHJpZXMob3B0aW9ucywgcnVsZXNbc2VsZWN0b3JdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWdpc3RyYXRpb24ucnVsZXNUb0luc2VydCA9IHJ1bGVzVG9JbnNlcnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogSW5zZXJ0IHN0eWxlIHRvIHN0eWxlc2hlZXQuXG4gKiBAcGFyYW0gcmVnaXN0cmF0aW9uIFN0eWxlIHJlZ2lzdHJhdGlvbi5cbiAqIEBwYXJhbSBzcGVjaWZpY2l0eU11bHRpcGxpZXIgTnVtYmVyIG9mIHRpbWVzIGNsYXNzbmFtZSBzZWxlY3RvciBpcyByZXBlYXRlZCBpbiB0aGUgY3NzIHJ1bGUuXG4gKiBUaGlzIGlzIHRvIGluY3JlYXNlIGNzcyBzcGVjaWZpY2l0eSBpbiBjYXNlIGl0J3MgbmVlZGVkLiBEZWZhdWx0IHRvIDEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIHNwZWNpZmljaXR5TXVsdGlwbGllcikge1xuICAgIGlmIChzcGVjaWZpY2l0eU11bHRpcGxpZXIgPT09IHZvaWQgMCkgeyBzcGVjaWZpY2l0eU11bHRpcGxpZXIgPSAxOyB9XG4gICAgdmFyIHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHJlZ2lzdHJhdGlvbi5jbGFzc05hbWUsIGtleSA9IHJlZ2lzdHJhdGlvbi5rZXksIGFyZ3MgPSByZWdpc3RyYXRpb24uYXJncywgcnVsZXNUb0luc2VydCA9IHJlZ2lzdHJhdGlvbi5ydWxlc1RvSW5zZXJ0O1xuICAgIGlmIChydWxlc1RvSW5zZXJ0KSB7XG4gICAgICAgIC8vIHJ1bGVzVG9JbnNlcnQgaXMgYW4gb3JkZXJlZCBhcnJheSBvZiBzZWxlY3Rvci9ydWxlIHBhaXJzLlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzVG9JbnNlcnQubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBydWxlcyA9IHJ1bGVzVG9JbnNlcnRbaSArIDFdO1xuICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gcnVsZXNUb0luc2VydFtpXTtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnJlcGxhY2UoLyYvZywgcmVwZWF0U3RyaW5nKFwiLlwiLmNvbmNhdChyZWdpc3RyYXRpb24uY2xhc3NOYW1lKSwgc3BlY2lmaWNpdHlNdWx0aXBsaWVyKSk7XG4gICAgICAgICAgICAgICAgLy8gSW5zZXJ0LiBOb3RlIGlmIGEgbWVkaWEgcXVlcnksIHdlIG11c3QgY2xvc2UgdGhlIHF1ZXJ5IHdpdGggYSBmaW5hbCBicmFja2V0LlxuICAgICAgICAgICAgICAgIHZhciBwcm9jZXNzZWRSdWxlID0gXCJcIi5jb25jYXQoc2VsZWN0b3IsIFwie1wiKS5jb25jYXQocnVsZXMsIFwifVwiKS5jb25jYXQoc2VsZWN0b3IuaW5kZXhPZignQCcpID09PSAwID8gJ30nIDogJycpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZShwcm9jZXNzZWRSdWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHlsZXNoZWV0LmNhY2hlQ2xhc3NOYW1lKGNsYXNzTmFtZSwga2V5LCBhcmdzLCBydWxlc1RvSW5zZXJ0KTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gc3R5bGVUb0NsYXNzTmFtZShvcHRpb25zKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgcmVnaXN0cmF0aW9uID0gc3R5bGVUb1JlZ2lzdHJhdGlvbi5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW29wdGlvbnNdLCBhcmdzLCBmYWxzZSkpO1xuICAgIGlmIChyZWdpc3RyYXRpb24pIHtcbiAgICAgICAgYXBwbHlSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLCBvcHRpb25zLnNwZWNpZmljaXR5TXVsdGlwbGllcik7XG4gICAgICAgIHJldHVybiByZWdpc3RyYXRpb24uY2xhc3NOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZVRvQ2xhc3NOYW1lLmpzLm1hcCIsImltcG9ydCB7IGV4dHJhY3RTdHlsZVBhcnRzIH0gZnJvbSAnLi9leHRyYWN0U3R5bGVQYXJ0cyc7XG5pbXBvcnQgeyBnZXRTdHlsZU9wdGlvbnMgfSBmcm9tICcuL1N0eWxlT3B0aW9uc1N0YXRlJztcbmltcG9ydCB7IHN0eWxlVG9DbGFzc05hbWUgfSBmcm9tICcuL3N0eWxlVG9DbGFzc05hbWUnO1xuLyoqXG4gKiBDb25jYXRlbmF0aW9uIGhlbHBlciwgd2hpY2ggY2FuIG1lcmdlIGNsYXNzIG5hbWVzIHRvZ2V0aGVyLiBTa2lwcyBvdmVyIGZhbHNleSB2YWx1ZXMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTdHlsZXMoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBtZXJnZUNzcyhhcmdzLCBnZXRTdHlsZU9wdGlvbnMoKSk7XG59XG4vKipcbiAqIENvbmNhdGVuYXRpb24gaGVscGVyLCB3aGljaCBjYW4gbWVyZ2UgY2xhc3MgbmFtZXMgdG9nZXRoZXIuIFNraXBzIG92ZXIgZmFsc2V5IHZhbHVlcy5cbiAqIEFjY2VwdHMgYSBzZXQgb2Ygb3B0aW9ucyB0aGF0IHdpbGwgYmUgdXNlZCB3aGVuIGNhbGN1bGF0aW5nIHN0eWxlcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUNzcyhhcmdzLCBvcHRpb25zKSB7XG4gICAgdmFyIHN0eWxlQXJncyA9IGFyZ3MgaW5zdGFuY2VvZiBBcnJheSA/IGFyZ3MgOiBbYXJnc107XG4gICAgdmFyIF9hID0gZXh0cmFjdFN0eWxlUGFydHMoc3R5bGVBcmdzKSwgY2xhc3NlcyA9IF9hLmNsYXNzZXMsIG9iamVjdHMgPSBfYS5vYmplY3RzO1xuICAgIGlmIChvYmplY3RzLmxlbmd0aCkge1xuICAgICAgICBjbGFzc2VzLnB1c2goc3R5bGVUb0NsYXNzTmFtZShvcHRpb25zIHx8IHt9LCBvYmplY3RzKSk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lcmdlU3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbi8qKlxuICogQ29tYmluZSBhIHNldCBvZiBzdHlsZXMgdG9nZXRoZXIgKGJ1dCBkb2VzIG5vdCByZWdpc3RlciBjc3MgY2xhc3NlcykuXG4gKiBAcGFyYW0gc3R5bGVTZXRzIC0gT25lIG9yIG1vcmUgc3R5bGVzZXRzIHRvIGJlIG1lcmdlZCAoZWFjaCBwYXJhbSBjYW4gYWxzbyBiZSBmYWxzeSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRTdHlsZVNldHMoKSB7XG4gICAgdmFyIHN0eWxlU2V0cyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHN0eWxlU2V0c1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAoc3R5bGVTZXRzICYmIHN0eWxlU2V0cy5sZW5ndGggPT09IDEgJiYgc3R5bGVTZXRzWzBdICYmICFzdHlsZVNldHNbMF0uc3ViQ29tcG9uZW50U3R5bGVzKSB7XG4gICAgICAgIHJldHVybiBzdHlsZVNldHNbMF07XG4gICAgfVxuICAgIHZhciBtZXJnZWRTZXQgPSB7fTtcbiAgICAvLyBXZSBwcm9jZXNzIHN1YiBjb21wb25lbnQgc3R5bGVzIGluIHR3byBwaGFzZXMuIEZpcnN0IHdlIGNvbGxlY3QgdGhlbSwgdGhlbiB3ZSBjb21iaW5lIHRoZW0gaW50byAxIHN0eWxlIGZ1bmN0aW9uLlxuICAgIHZhciB3b3JraW5nU3ViY29tcG9uZW50U3R5bGVzID0ge307XG4gICAgZm9yICh2YXIgX2EgPSAwLCBzdHlsZVNldHNfMSA9IHN0eWxlU2V0czsgX2EgPCBzdHlsZVNldHNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgdmFyIGN1cnJlbnRTZXQgPSBzdHlsZVNldHNfMVtfYV07XG4gICAgICAgIGlmIChjdXJyZW50U2V0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGN1cnJlbnRTZXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNldC5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3N1YkNvbXBvbmVudFN0eWxlcycgJiYgY3VycmVudFNldC5zdWJDb21wb25lbnRTdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3ViY29tcG9uZW50IHN0eWxlcyAtIHN0eWxlIGZ1bmN0aW9ucyBvciBvYmplY3RzXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudENvbXBvbmVudFN0eWxlcyA9IGN1cnJlbnRTZXQuc3ViQ29tcG9uZW50U3R5bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc3ViQ29tcFByb3AgaW4gY3VycmVudENvbXBvbmVudFN0eWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29tcG9uZW50U3R5bGVzLmhhc093blByb3BlcnR5KHN1YkNvbXBQcm9wKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod29ya2luZ1N1YmNvbXBvbmVudFN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdWJDb21wUHJvcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdTdWJjb21wb25lbnRTdHlsZXNbc3ViQ29tcFByb3BdLnB1c2goY3VycmVudENvbXBvbmVudFN0eWxlc1tzdWJDb21wUHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZ1N1YmNvbXBvbmVudFN0eWxlc1tzdWJDb21wUHJvcF0gPSBbY3VycmVudENvbXBvbmVudFN0eWxlc1tzdWJDb21wUHJvcF1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFzIGFueSBjYXN0cyBiZWxvdyBpcyBhIHdvcmthcm91bmQgZm9yIHRzIDIuOC5cbiAgICAgICAgICAgICAgICAgICAgLy8gdG9kbzogcmVtb3ZlIGNhc3QgdG8gYW55IGluIHRzIDIuOS5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lcmdlZFZhbHVlID0gbWVyZ2VkU2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gY3VycmVudFNldFtwcm9wXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lcmdlZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFNldFtwcm9wXSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZFNldFtwcm9wXSA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgKEFycmF5LmlzQXJyYXkobWVyZ2VkVmFsdWUpID8gbWVyZ2VkVmFsdWUgOiBbbWVyZ2VkVmFsdWVdKSwgdHJ1ZSksIChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkgPyBjdXJyZW50VmFsdWUgOiBbY3VycmVudFZhbHVlXSksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyh3b3JraW5nU3ViY29tcG9uZW50U3R5bGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1lcmdlZFNldC5zdWJDb21wb25lbnRTdHlsZXMgPSB7fTtcbiAgICAgICAgdmFyIG1lcmdlZFN1YlN0eWxlcyA9IG1lcmdlZFNldC5zdWJDb21wb25lbnRTdHlsZXM7XG4gICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKHN1YkNvbXBQcm9wKSB7XG4gICAgICAgICAgICBpZiAod29ya2luZ1N1YmNvbXBvbmVudFN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdWJDb21wUHJvcCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgd29ya2luZ1NldF8xID0gd29ya2luZ1N1YmNvbXBvbmVudFN0eWxlc1tzdWJDb21wUHJvcF07XG4gICAgICAgICAgICAgICAgbWVyZ2VkU3ViU3R5bGVzW3N1YkNvbXBQcm9wXSA9IGZ1bmN0aW9uIChzdHlsZVByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25jYXRTdHlsZVNldHMuYXBwbHkodm9pZCAwLCB3b3JraW5nU2V0XzEubWFwKGZ1bmN0aW9uIChzdHlsZUZ1bmN0aW9uT3JPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2Ygc3R5bGVGdW5jdGlvbk9yT2JqZWN0ID09PSAnZnVuY3Rpb24nID8gc3R5bGVGdW5jdGlvbk9yT2JqZWN0KHN0eWxlUHJvcHMpIDogc3R5bGVGdW5jdGlvbk9yT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gbm93IHdlIHByb2Nlc3MgdGhlIHN1YmNvbXBvbmVudCBzdHlsZXMgaWYgdGhlcmUgYXJlIGFueVxuICAgICAgICBmb3IgKHZhciBzdWJDb21wUHJvcCBpbiB3b3JraW5nU3ViY29tcG9uZW50U3R5bGVzKSB7XG4gICAgICAgICAgICBfbG9vcF8xKHN1YkNvbXBQcm9wKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VkU2V0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uY2F0U3R5bGVTZXRzLmpzLm1hcCIsImltcG9ydCB7IGNvbmNhdFN0eWxlU2V0cyB9IGZyb20gJy4vY29uY2F0U3R5bGVTZXRzJztcbmltcG9ydCB7IGV4dHJhY3RTdHlsZVBhcnRzIH0gZnJvbSAnLi9leHRyYWN0U3R5bGVQYXJ0cyc7XG5pbXBvcnQgeyBnZXRTdHlsZU9wdGlvbnMgfSBmcm9tICcuL1N0eWxlT3B0aW9uc1N0YXRlJztcbmltcG9ydCB7IGFwcGx5UmVnaXN0cmF0aW9uLCBzdHlsZVRvUmVnaXN0cmF0aW9uIH0gZnJvbSAnLi9zdHlsZVRvQ2xhc3NOYW1lJztcbi8qKlxuICogVGFrZXMgaW4gb25lIG9yIG1vcmUgc3R5bGUgc2V0IG9iamVjdHMsIGVhY2ggY29uc2lzdGluZyBvZiBhIHNldCBvZiBhcmVhcyxcbiAqIGVhY2ggd2hpY2ggd2lsbCBwcm9kdWNlIGEgY2xhc3MgbmFtZS4gVXNpbmcgdGhpcyBpcyBhbmFsb2dvdXMgdG8gY2FsbGluZ1xuICogYG1lcmdlU3R5bGVzYCBmb3IgZWFjaCBwcm9wZXJ0eSBpbiB0aGUgb2JqZWN0LCBidXQgZW5zdXJlcyB3ZSBtYWludGFpbiB0aGVcbiAqIHNldCBvcmRlcmluZyB3aGVuIG11bHRpcGxlIHN0eWxlIHNldHMgYXJlIG1lcmdlZC5cbiAqXG4gKiBAcGFyYW0gc3R5bGVTZXRzIC0gT25lIG9yIG1vcmUgc3R5bGUgc2V0cyB0byBiZSBtZXJnZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVN0eWxlU2V0cygpIHtcbiAgICB2YXIgc3R5bGVTZXRzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgc3R5bGVTZXRzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBtZXJnZUNzc1NldHMoc3R5bGVTZXRzLCBnZXRTdHlsZU9wdGlvbnMoKSk7XG59XG4vKipcbiAqIFRha2VzIGluIG9uZSBvciBtb3JlIHN0eWxlIHNldCBvYmplY3RzLCBlYWNoMWNvbnNpc3Rpbmcgb2YgYSBzZXQgb2YgYXJlYXMsXG4gKiBlYWNoIHdoaWNoIHdpbGwgcHJvZHVjZSBhIGNsYXNzIG5hbWUuIFVzaW5nIHRoaXMgaXMgYW5hbG9nb3VzIHRvIGNhbGxpbmdcbiAqIGBtZXJnZUNzc2AgZm9yIGVhY2ggcHJvcGVydHkgaW4gdGhlIG9iamVjdCwgYnV0IGVuc3VyZXMgdGhlXG4gKiBzZXQgb3JkZXJpbmcgd2hlbiBtdWx0aXBsZSBzdHlsZSBzZXRzIGFyZSBtZXJnZWQuXG4gKlxuICogQHBhcmFtIHN0eWxlU2V0cyAtIE9uZSBvciBtb3JlIHN0eWxlIHNldHMgdG8gYmUgbWVyZ2VkLlxuICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIE9wdGlvbnMgdG8gdXNlIHdoZW4gY3JlYXRpbmcgcnVsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUNzc1NldHMoc3R5bGVTZXRzLCBvcHRpb25zKSB7XG4gICAgdmFyIGNsYXNzTmFtZVNldCA9IHsgc3ViQ29tcG9uZW50U3R5bGVzOiB7fSB9O1xuICAgIHZhciBzdHlsZVNldCA9IHN0eWxlU2V0c1swXTtcbiAgICBpZiAoIXN0eWxlU2V0ICYmIHN0eWxlU2V0cy5sZW5ndGggPD0gMSkge1xuICAgICAgICByZXR1cm4geyBzdWJDb21wb25lbnRTdHlsZXM6IHt9IH07XG4gICAgfVxuICAgIHZhciBjb25jYXRlbmF0ZWRTdHlsZVNldCA9IGNvbmNhdFN0eWxlU2V0cy5hcHBseSh2b2lkIDAsIHN0eWxlU2V0cyk7XG4gICAgdmFyIHJlZ2lzdHJhdGlvbnMgPSBbXTtcbiAgICBmb3IgKHZhciBzdHlsZVNldEFyZWEgaW4gY29uY2F0ZW5hdGVkU3R5bGVTZXQpIHtcbiAgICAgICAgaWYgKGNvbmNhdGVuYXRlZFN0eWxlU2V0Lmhhc093blByb3BlcnR5KHN0eWxlU2V0QXJlYSkpIHtcbiAgICAgICAgICAgIGlmIChzdHlsZVNldEFyZWEgPT09ICdzdWJDb21wb25lbnRTdHlsZXMnKSB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lU2V0LnN1YkNvbXBvbmVudFN0eWxlcyA9IGNvbmNhdGVuYXRlZFN0eWxlU2V0LnN1YkNvbXBvbmVudFN0eWxlcyB8fCB7fTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdHlsZXMgPSBjb25jYXRlbmF0ZWRTdHlsZVNldFtzdHlsZVNldEFyZWFdO1xuICAgICAgICAgICAgdmFyIF9hID0gZXh0cmFjdFN0eWxlUGFydHMoc3R5bGVzKSwgY2xhc3NlcyA9IF9hLmNsYXNzZXMsIG9iamVjdHMgPSBfYS5vYmplY3RzO1xuICAgICAgICAgICAgaWYgKG9iamVjdHMgPT09IG51bGwgfHwgb2JqZWN0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb2JqZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVnaXN0cmF0aW9uID0gc3R5bGVUb1JlZ2lzdHJhdGlvbihvcHRpb25zIHx8IHt9LCB7IGRpc3BsYXlOYW1lOiBzdHlsZVNldEFyZWEgfSwgb2JqZWN0cyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZWdpc3RyYXRpb25zLnB1c2gocmVnaXN0cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNsYXNzTmFtZVNldCBpbnZhbGlkIHR5cGVzIC0gZXhwb3NlZCBpbiBUUyA0LjUgLSBjYXN0IG5lZWRlZFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVTZXRbc3R5bGVTZXRBcmVhXSA9IGNsYXNzZXMuY29uY2F0KFtyZWdpc3RyYXRpb24uY2xhc3NOYW1lXSkuam9pbignICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjbGFzc05hbWVTZXQgaW52YWxpZCB0eXBlcyAtIGV4cG9zZWQgaW4gVFMgNC41IC0gY2FzdCBuZWVkZWRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVTZXRbc3R5bGVTZXRBcmVhXSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIF9pID0gMCwgcmVnaXN0cmF0aW9uc18xID0gcmVnaXN0cmF0aW9uczsgX2kgPCByZWdpc3RyYXRpb25zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciByZWdpc3RyYXRpb24gPSByZWdpc3RyYXRpb25zXzFbX2ldO1xuICAgICAgICBpZiAocmVnaXN0cmF0aW9uKSB7XG4gICAgICAgICAgICBhcHBseVJlZ2lzdHJhdGlvbihyZWdpc3RyYXRpb24sIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zcGVjaWZpY2l0eU11bHRpcGxpZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWVTZXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXJnZVN0eWxlU2V0cy5qcy5tYXAiLCJpbXBvcnQgeyBjb25jYXRTdHlsZVNldHMgfSBmcm9tICcuL2NvbmNhdFN0eWxlU2V0cyc7XG4vKipcbiAqIENvbmNhdGVuYXRlcyBzdHlsZSBzZXRzIGludG8gb25lLCBidXQgcmVzb2x2ZXMgZnVuY3Rpb25hbCBzZXRzIHVzaW5nIHRoZSBnaXZlbiBwcm9wcy5cbiAqIEBwYXJhbSBzdHlsZVByb3BzIC0gUHJvcHMgdXNlZCB0byByZXNvbHZlIGZ1bmN0aW9uYWwgc2V0cy5cbiAqIEBwYXJhbSBhbGxTdHlsZXMgLSBTdHlsZSBzZXRzLCB3aGljaCBjYW4gYmUgZnVuY3Rpb25zIG9yIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRTdHlsZVNldHNXaXRoUHJvcHMoc3R5bGVQcm9wcykge1xuICAgIHZhciBhbGxTdHlsZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhbGxTdHlsZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBmb3IgKHZhciBfYSA9IDAsIGFsbFN0eWxlc18xID0gYWxsU3R5bGVzOyBfYSA8IGFsbFN0eWxlc18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICB2YXIgc3R5bGVzID0gYWxsU3R5bGVzXzFbX2FdO1xuICAgICAgICBpZiAoc3R5bGVzKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0eXBlb2Ygc3R5bGVzID09PSAnZnVuY3Rpb24nID8gc3R5bGVzKHN0eWxlUHJvcHMpIDogc3R5bGVzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdO1xuICAgIH1cbiAgICBlbHNlIGlmIChyZXN1bHQubGVuZ3RoKSB7XG4gICAgICAgIC8vIGNsaWZma29oOiBJIGNhbm5vdCBmaWd1cmUgb3V0IGhvdyB0byBhdm9pZCB0aGUgY2FzdCB0byBhbnkgaGVyZS5cbiAgICAgICAgLy8gSXQgaXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHVzZSBvZiBPbWl0IGluIElTdHlsZVNldC5cbiAgICAgICAgLy8gSXQgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlICBPbWl0IGJlY29tZXMgcGFydCBvZiBsaWIuZC50cyAod2hlbiB3ZSByZW1vdmUgb3VyIG93biBPbWl0IGFuZCByZWx5IG9uXG4gICAgICAgIC8vIHRoZSBvZmZpY2lhbCB2ZXJzaW9uKS5cbiAgICAgICAgcmV0dXJuIGNvbmNhdFN0eWxlU2V0cy5hcHBseSh2b2lkIDAsIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbmNhdFN0eWxlU2V0c1dpdGhQcm9wcy5qcy5tYXAiLCJpbXBvcnQgeyBnZXRTdHlsZU9wdGlvbnMgfSBmcm9tICcuL1N0eWxlT3B0aW9uc1N0YXRlJztcbmltcG9ydCB7IFN0eWxlc2hlZXQgfSBmcm9tICcuL1N0eWxlc2hlZXQnO1xuaW1wb3J0IHsgc2VyaWFsaXplUnVsZUVudHJpZXMgfSBmcm9tICcuL3N0eWxlVG9DbGFzc05hbWUnO1xuLyoqXG4gKiBSZWdpc3RlcnMgYSBmb250IGZhY2UuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb250RmFjZShmb250KSB7XG4gICAgdmFyIHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgdmFyIHJ1bGUgPSBzZXJpYWxpemVSdWxlRW50cmllcyhnZXRTdHlsZU9wdGlvbnMoKSwgZm9udCk7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHN0eWxlc2hlZXQuY2xhc3NOYW1lRnJvbUtleShydWxlKTtcbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIG5hbWUgPSBzdHlsZXNoZWV0LmdldENsYXNzTmFtZSgpO1xuICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZShcIkBmb250LWZhY2V7XCIuY29uY2F0KHJ1bGUsIFwifVwiKSwgdHJ1ZSk7XG4gICAgc3R5bGVzaGVldC5jYWNoZUNsYXNzTmFtZShuYW1lLCBydWxlLCBbXSwgWydmb250LWZhY2UnLCBydWxlXSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb250RmFjZS5qcy5tYXAiLCJpbXBvcnQgeyBnZXRTdHlsZU9wdGlvbnMgfSBmcm9tICcuL1N0eWxlT3B0aW9uc1N0YXRlJztcbmltcG9ydCB7IFN0eWxlc2hlZXQgfSBmcm9tICcuL1N0eWxlc2hlZXQnO1xuaW1wb3J0IHsgc2VyaWFsaXplUnVsZUVudHJpZXMgfSBmcm9tICcuL3N0eWxlVG9DbGFzc05hbWUnO1xuLyoqXG4gKiBSZWdpc3RlcnMga2V5ZnJhbWUgZGVmaW5pdGlvbnMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5ZnJhbWVzKHRpbWVsaW5lKSB7XG4gICAgdmFyIHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgdmFyIHJ1bGVzQXJyYXkgPSBbXTtcbiAgICBmb3IgKHZhciBwcm9wIGluIHRpbWVsaW5lKSB7XG4gICAgICAgIGlmICh0aW1lbGluZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgICAgcnVsZXNBcnJheS5wdXNoKHByb3AsICd7Jywgc2VyaWFsaXplUnVsZUVudHJpZXMoZ2V0U3R5bGVPcHRpb25zKCksIHRpbWVsaW5lW3Byb3BdKSwgJ30nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgcnVsZXMgPSBydWxlc0FycmF5LmpvaW4oJycpO1xuICAgIHZhciBjbGFzc05hbWUgPSBzdHlsZXNoZWV0LmNsYXNzTmFtZUZyb21LZXkocnVsZXMpO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICB9XG4gICAgdmFyIG5hbWUgPSBzdHlsZXNoZWV0LmdldENsYXNzTmFtZSgpO1xuICAgIHN0eWxlc2hlZXQuaW5zZXJ0UnVsZShcIkBrZXlmcmFtZXMgXCIuY29uY2F0KG5hbWUsIFwie1wiKS5jb25jYXQocnVsZXMsIFwifVwiKSwgdHJ1ZSk7XG4gICAgc3R5bGVzaGVldC5jYWNoZUNsYXNzTmFtZShuYW1lLCBydWxlcywgW10sIFsna2V5ZnJhbWVzJywgcnVsZXNdKTtcbiAgICByZXR1cm4gbmFtZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWtleWZyYW1lcy5qcy5tYXAiLCJpbXBvcnQgeyBtZXJnZVN0eWxlcyB9IGZyb20gJy4uL01lcmdlU3R5bGVzJztcbi8qKlxuICogQnVpbGRzIGEgY2xhc3MgbmFtZXMgb2JqZWN0IGZyb20gYSBnaXZlbiBtYXAuXG4gKlxuICogQHBhcmFtIHN0eWxlcyAtIE1hcCBvZiB1bnByb2Nlc3NlZCBzdHlsZXMuXG4gKiBAcmV0dXJucyBNYXAgb2YgcHJvcGVydHkgbmFtZSB0byBjbGFzcyBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDbGFzc01hcChzdHlsZXMpIHtcbiAgICB2YXIgY2xhc3NlcyA9IHt9O1xuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKHN0eWxlTmFtZSkge1xuICAgICAgICBpZiAoc3R5bGVzLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBjbGFzc05hbWVfMTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbGFzc2VzLCBzdHlsZU5hbWUsIHtcbiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsYXNzTmFtZV8xID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVfMSA9IG1lcmdlU3R5bGVzKHN0eWxlc1tzdHlsZU5hbWVdKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc05hbWVfMTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcbiAgICAgICAgX2xvb3BfMShzdHlsZU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3Nlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1aWxkQ2xhc3NNYXAuanMubWFwIiwiLyoqXG4gKiBWZXJpZmllcyBpZiBhbiBhcHBsaWNhdGlvbiBjYW4gdXNlIERPTS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblVzZURPTSgpIHtcbiAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICEhKHdpbmRvdy5kb2N1bWVudCAmJlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FuVXNlRE9NLmpzLm1hcCIsImltcG9ydCB7IGNhblVzZURPTSB9IGZyb20gJy4vY2FuVXNlRE9NJztcbnZhciBfd2luZG93ID0gdW5kZWZpbmVkO1xuLy8gTm90ZTogQWNjZXNzaW5nIFwid2luZG93XCIgaW4gSUUxMSBpcyBzb21ld2hhdCBleHBlbnNpdmUsIGFuZCBjYWxsaW5nIFwidHlwZW9mIHdpbmRvd1wiXG4vLyBoaXRzIGEgbWVtb3J5IGxlYWssIHdoZXJlYXMgYWxpYXNpbmcgaXQgYW5kIGNhbGxpbmcgXCJ0eXBlb2YgX3dpbmRvd1wiIGRvZXMgbm90LlxuLy8gQ2FjaGluZyB0aGUgd2luZG93IHZhbHVlIGF0IHRoZSBmaWxlIHNjb3BlIGxldHMgdXMgbWluaW1pemUgdGhlIGltcGFjdC5cbnRyeSB7XG4gICAgX3dpbmRvdyA9IHdpbmRvdztcbn1cbmNhdGNoIChlKSB7XG4gICAgLyogbm8tb3AgKi9cbn1cbi8qKlxuICogSGVscGVyIHRvIGdldCB0aGUgd2luZG93IG9iamVjdC4gVGhlIGhlbHBlciB3aWxsIG1ha2Ugc3VyZSB0byB1c2UgYSBjYWNoZWQgdmFyaWFibGVcbiAqIG9mIFwid2luZG93XCIsIHRvIGF2b2lkIG92ZXJoZWFkIGFuZCBtZW1vcnkgbGVha3MgaW4gSUUxMS4gTm90ZSB0aGF0IGluIHBvcHVwIHNjZW5hcmlvcyB0aGVcbiAqIHdpbmRvdyBvYmplY3Qgd29uJ3QgbWF0Y2ggdGhlIFwiZ2xvYmFsXCIgd2luZG93IG9iamVjdCwgYW5kIGZvciB0aGVzZSBzY2VuYXJpb3MsIHlvdSBzaG91bGRcbiAqIHBhc3MgaW4gYW4gZWxlbWVudCBob3N0ZWQgd2l0aGluIHRoZSBwb3B1cC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaW5kb3cocm9vdEVsZW1lbnQpIHtcbiAgICBpZiAoIWNhblVzZURPTSgpIHx8IHR5cGVvZiBfd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGVsID0gcm9vdEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vd25lckRvY3VtZW50ICYmIGVsLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgPyBlbC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IDogX3dpbmRvdztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRXaW5kb3cuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93Jztcbi8qKlxuICogQnVncyBvZnRlbiBhcHBlYXIgaW4gYXN5bmMgY29kZSB3aGVuIHN0dWZmIGdldHMgZGlzcG9zZWQsIGJ1dCBhc3luYyBvcGVyYXRpb25zIGRvbid0IGdldCBjYW5jZWxlZC5cbiAqIFRoaXMgQXN5bmMgaGVscGVyIGNsYXNzIHNvbHZlcyB0aGVzZSBpc3N1ZXMgYnkgdHlpbmcgYXN5bmMgY29kZSB0byB0aGUgbGlmZXRpbWUgb2YgYSBkaXNwb3NhYmxlIG9iamVjdC5cbiAqXG4gKiBVc2FnZTogQW55dGhpbmcgY2xhc3MgZXh0ZW5kaW5nIGZyb20gQmFzZU1vZGVsIGNhbiBhY2Nlc3MgdGhpcyBoZWxwZXIgdmlhIHRoaXMuYXN5bmMuIE90aGVyd2lzZSBjcmVhdGUgYVxuICogbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBhbmQgcmVtZW1iZXIgdG8gY2FsbCBkaXNwb3NlKCkgZHVyaW5nIHlvdXIgY29kZSdzIGRpc3Bvc2UgaGFuZGxlci5cbiAqXG4gKiBAcHVibGljXG4gKi9cbnZhciBBc3luYyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGZ1bmN0aW9uIEFzeW5jKHBhcmVudCwgb25FcnJvcikge1xuICAgICAgICB0aGlzLl90aW1lb3V0SWRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5faW1tZWRpYXRlSWRzID0gbnVsbDtcbiAgICAgICAgdGhpcy5faW50ZXJ2YWxJZHMgPSBudWxsO1xuICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZUlkcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2lzRGlzcG9zZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcGFyZW50ID0gcGFyZW50IHx8IG51bGw7XG4gICAgICAgIHRoaXMuX29uRXJyb3JIYW5kbGVyID0gb25FcnJvcjtcbiAgICAgICAgdGhpcy5fbm9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi9cbiAgICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGlzcG9zZSBmdW5jdGlvbiwgY2xlYXJzIGFsbCBhc3luYyBvcGVyYXRpb25zLlxuICAgICAqL1xuICAgIEFzeW5jLnByb3RvdHlwZS5kaXNwb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaWQ7XG4gICAgICAgIHRoaXMuX2lzRGlzcG9zZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wYXJlbnQgPSBudWxsO1xuICAgICAgICAvLyBDbGVhciB0aW1lb3V0cy5cbiAgICAgICAgaWYgKHRoaXMuX3RpbWVvdXRJZHMpIHtcbiAgICAgICAgICAgIGZvciAoaWQgaW4gdGhpcy5fdGltZW91dElkcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90aW1lb3V0SWRzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dChwYXJzZUludChpZCwgMTApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhciBpbW1lZGlhdGVzLlxuICAgICAgICBpZiAodGhpcy5faW1tZWRpYXRlSWRzKSB7XG4gICAgICAgICAgICBmb3IgKGlkIGluIHRoaXMuX2ltbWVkaWF0ZUlkcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbW1lZGlhdGVJZHMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJJbW1lZGlhdGUocGFyc2VJbnQoaWQsIDEwKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5faW1tZWRpYXRlSWRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhciBpbnRlcnZhbHMuXG4gICAgICAgIGlmICh0aGlzLl9pbnRlcnZhbElkcykge1xuICAgICAgICAgICAgZm9yIChpZCBpbiB0aGlzLl9pbnRlcnZhbElkcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbnRlcnZhbElkcy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckludGVydmFsKHBhcnNlSW50KGlkLCAxMCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2ludGVydmFsSWRzID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbGVhciBhbmltYXRpb24gZnJhbWVzLlxuICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMpIHtcbiAgICAgICAgICAgIGZvciAoaWQgaW4gdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsQW5pbWF0aW9uRnJhbWUocGFyc2VJbnQoaWQsIDEwKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRUaW1lb3V0IG92ZXJyaWRlLCB3aGljaCB3aWxsIGF1dG8gY2FuY2VsIHRoZSB0aW1lb3V0IGR1cmluZyBkaXNwb3NlLlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGV4ZWN1dGUuXG4gICAgICogQHBhcmFtIGR1cmF0aW9uIC0gRHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZXRUaW1lb3V0IGlkLlxuICAgICAqL1xuICAgIEFzeW5jLnByb3RvdHlwZS5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBkdXJhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgdGltZW91dElkID0gMDtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3RpbWVvdXRJZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aW1lb3V0SWRzID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvLyBUaW1lIHRvIGV4ZWN1dGUgdGhlIHRpbWVvdXQsIGVucXVldWUgaXQgYXMgYSBmb3JlZ3JvdW5kIHRhc2sgdG8gYmUgZXhlY3V0ZWQuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTm93IGRlbGV0ZSB0aGUgcmVjb3JkIGFuZCBjYWxsIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl90aW1lb3V0SWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgX3RoaXMuX3RpbWVvdXRJZHNbdGltZW91dElkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShfdGhpcy5fcGFyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2xvZ0Vycm9yKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3RpbWVvdXRJZHNbdGltZW91dElkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRpbWVvdXRJZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0gaWQgLSBJZCB0byBjYW5jZWwuXG4gICAgICovXG4gICAgQXN5bmMucHJvdG90eXBlLmNsZWFyVGltZW91dCA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAodGhpcy5fdGltZW91dElkcyAmJiB0aGlzLl90aW1lb3V0SWRzW2lkXSkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90aW1lb3V0SWRzW2lkXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0SW1tZWRpYXRlIG92ZXJyaWRlLCB3aGljaCB3aWxsIGF1dG8gY2FuY2VsIHRoZSBpbW1lZGlhdGUgZHVyaW5nIGRpc3Bvc2UuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gZXhlY3V0ZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0RWxlbWVudCAtIE9wdGlvbmFsIHRhcmdldCBlbGVtZW50IHRvIHVzZSBmb3IgaWRlbnRpZnlpbmcgdGhlIGNvcnJlY3Qgd2luZG93LlxuICAgICAqIEByZXR1cm5zIFRoZSBzZXRUaW1lb3V0IGlkLlxuICAgICAqL1xuICAgIEFzeW5jLnByb3RvdHlwZS5zZXRJbW1lZGlhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIHRhcmdldEVsZW1lbnQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGltbWVkaWF0ZUlkID0gMDtcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2ltbWVkaWF0ZUlkcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ltbWVkaWF0ZUlkcyA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHNldEltbWVkaWF0ZUNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIFRpbWUgdG8gZXhlY3V0ZSB0aGUgdGltZW91dCwgZW5xdWV1ZSBpdCBhcyBhIGZvcmVncm91bmQgdGFzayB0byBiZSBleGVjdXRlZC5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZGVsZXRlIHRoZSByZWNvcmQgYW5kIGNhbGwgdGhlIGNhbGxiYWNrLlxuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX2ltbWVkaWF0ZUlkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzLl9pbW1lZGlhdGVJZHNbaW1tZWRpYXRlSWRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KF90aGlzLl9wYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fbG9nRXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGltbWVkaWF0ZUlkID0gd2luLnNldFRpbWVvdXQoc2V0SW1tZWRpYXRlQ2FsbGJhY2ssIDApO1xuICAgICAgICAgICAgdGhpcy5faW1tZWRpYXRlSWRzW2ltbWVkaWF0ZUlkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGltbWVkaWF0ZUlkO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBpbW1lZGlhdGUuXG4gICAgICogQHBhcmFtIGlkIC0gSWQgdG8gY2FuY2VsLlxuICAgICAqIEBwYXJhbSB0YXJnZXRFbGVtZW50IC0gT3B0aW9uYWwgdGFyZ2V0IGVsZW1lbnQgdG8gdXNlIGZvciBpZGVudGlmeWluZyB0aGUgY29ycmVjdCB3aW5kb3cuXG4gICAgICovXG4gICAgQXN5bmMucHJvdG90eXBlLmNsZWFySW1tZWRpYXRlID0gZnVuY3Rpb24gKGlkLCB0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3codGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIGlmICh0aGlzLl9pbW1lZGlhdGVJZHMgJiYgdGhpcy5faW1tZWRpYXRlSWRzW2lkXSkge1xuICAgICAgICAgICAgd2luLmNsZWFyVGltZW91dChpZCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5faW1tZWRpYXRlSWRzW2lkXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0SW50ZXJ2YWwgb3ZlcnJpZGUsIHdoaWNoIHdpbGwgYXV0byBjYW5jZWwgdGhlIHRpbWVvdXQgZHVyaW5nIGRpc3Bvc2UuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gZXhlY3V0ZS5cbiAgICAgKiBAcGFyYW0gZHVyYXRpb24gLSBEdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAgICogQHJldHVybnMgVGhlIHNldFRpbWVvdXQgaWQuXG4gICAgICovXG4gICAgQXN5bmMucHJvdG90eXBlLnNldEludGVydmFsID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBkdXJhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgaW50ZXJ2YWxJZCA9IDA7XG4gICAgICAgIGlmICghdGhpcy5faXNEaXNwb3NlZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnRlcnZhbElkcykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVydmFsSWRzID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIC8vIFRpbWUgdG8gZXhlY3V0ZSB0aGUgaW50ZXJ2YWwgY2FsbGJhY2ssIGVucXVldWUgaXQgYXMgYSBmb3JlZ3JvdW5kIHRhc2sgdG8gYmUgZXhlY3V0ZWQuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkoX3RoaXMuX3BhcmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9sb2dFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBkdXJhdGlvbik7XG4gICAgICAgICAgICB0aGlzLl9pbnRlcnZhbElkc1tpbnRlcnZhbElkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludGVydmFsSWQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGludGVydmFsLlxuICAgICAqIEBwYXJhbSBpZCAtIElkIHRvIGNhbmNlbC5cbiAgICAgKi9cbiAgICBBc3luYy5wcm90b3R5cGUuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAodGhpcy5faW50ZXJ2YWxJZHMgJiYgdGhpcy5faW50ZXJ2YWxJZHNbaWRdKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGlkKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pbnRlcnZhbElkc1tpZF07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGV4ZWN1dGVkLCB3aWxsIG9ubHkgY2FsbCB0aGUgZnVuYyBmdW5jdGlvbiBhdCBtb3N0IG9uY2UgcGVyXG4gICAgICogZXZlcnkgd2FpdCBtaWxsaXNlY29uZHMuIFByb3ZpZGUgYW4gb3B0aW9ucyBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBmdW5jIHNob3VsZCBiZSBpbnZva2VkXG4gICAgICogb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHdhaXQgdGltZW91dC4gU3Vic2VxdWVudCBjYWxscyB0byB0aGUgdGhyb3R0bGVkXG4gICAgICogZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBmdW5jIGNhbGwuXG4gICAgICpcbiAgICAgKiBOb3RlOiBJZiBsZWFkaW5nIGFuZCB0cmFpbGluZyBvcHRpb25zIGFyZSB0cnVlIGZ1bmMgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2ZcbiAgICAgKiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIHdhaXQgdGltZW91dC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmdW5jIC0gVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICAgICAqIEBwYXJhbSB3YWl0IC0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgZXhlY3V0aW9ucyB0by4gRGVmYXVsdHMgdG8gMC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IHRocm90dGxlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEFzeW5jLnByb3RvdHlwZS50aHJvdHRsZSA9IGZ1bmN0aW9uIChmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9vcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2FpdE1TID0gd2FpdCB8fCAwO1xuICAgICAgICB2YXIgbGVhZGluZyA9IHRydWU7XG4gICAgICAgIHZhciB0cmFpbGluZyA9IHRydWU7XG4gICAgICAgIHZhciBsYXN0RXhlY3V0ZVRpbWUgPSAwO1xuICAgICAgICB2YXIgbGFzdFJlc3VsdDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdmFyIGxhc3RBcmdzO1xuICAgICAgICB2YXIgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubGVhZGluZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBsZWFkaW5nID0gb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLnRyYWlsaW5nID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIHRyYWlsaW5nID0gb3B0aW9ucy50cmFpbGluZztcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiAodXNlckNhbGwpIHtcbiAgICAgICAgICAgIHZhciBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgdmFyIGRlbHRhID0gbm93IC0gbGFzdEV4ZWN1dGVUaW1lO1xuICAgICAgICAgICAgdmFyIHdhaXRMZW5ndGggPSBsZWFkaW5nID8gd2FpdE1TIC0gZGVsdGEgOiB3YWl0TVM7XG4gICAgICAgICAgICBpZiAoZGVsdGEgPj0gd2FpdE1TICYmICghdXNlckNhbGwgfHwgbGVhZGluZykpIHtcbiAgICAgICAgICAgICAgICBsYXN0RXhlY3V0ZVRpbWUgPSBub3c7XG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdFJlc3VsdCA9IGZ1bmMuYXBwbHkoX3RoaXMuX3BhcmVudCwgbGFzdEFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGltZW91dElkID09PSBudWxsICYmIHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gX3RoaXMuc2V0VGltZW91dChjYWxsYmFjaywgd2FpdExlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdmFyIHJlc3VsdEZ1bmN0aW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RBcmdzID0gYXJncztcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHRGdW5jdGlvbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdpbGwgZGVsYXkgdGhlIGV4ZWN1dGlvbiBvZiBmdW5jIHVudGlsIGFmdGVyIHdhaXQgbWlsbGlzZWNvbmRzIGhhdmVcbiAgICAgKiBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgaXQgd2FzIGludm9rZWQuIFByb3ZpZGUgYW4gb3B0aW9ucyBvYmplY3QgdG8gaW5kaWNhdGUgdGhhdCBmdW5jXG4gICAgICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHdhaXQgdGltZW91dC4gU3Vic2VxdWVudCBjYWxsc1xuICAgICAqIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBmdW5jIGNhbGwuXG4gICAgICpcbiAgICAgKiBOb3RlOiBJZiBsZWFkaW5nIGFuZCB0cmFpbGluZyBvcHRpb25zIGFyZSB0cnVlIGZ1bmMgd2lsbCBiZSBjYWxsZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2ZcbiAgICAgKiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIHdhaXRcbiAgICAgKiB0aW1lb3V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZ1bmMgLSBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHdhaXQgLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEFzeW5jLnByb3RvdHlwZS5kZWJvdW5jZSA9IGZ1bmN0aW9uIChmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh0aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICB2YXIgbm9PcEZ1bmN0aW9uID0gKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAvKiogRG8gbm90aGluZyAqL1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub09wRnVuY3Rpb24uY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBub09wRnVuY3Rpb24uZmx1c2ggPSAoZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfSk7XG4gICAgICAgICAgICBub09wRnVuY3Rpb24ucGVuZGluZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuICAgICAgICAgICAgcmV0dXJuIG5vT3BGdW5jdGlvbjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2FpdE1TID0gd2FpdCB8fCAwO1xuICAgICAgICB2YXIgbGVhZGluZyA9IGZhbHNlO1xuICAgICAgICB2YXIgdHJhaWxpbmcgPSB0cnVlO1xuICAgICAgICB2YXIgbWF4V2FpdCA9IG51bGw7XG4gICAgICAgIHZhciBsYXN0Q2FsbFRpbWUgPSAwO1xuICAgICAgICB2YXIgbGFzdEV4ZWN1dGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdmFyIGxhc3RSZXN1bHQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHZhciBsYXN0QXJncztcbiAgICAgICAgdmFyIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICAgIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmxlYWRpbmcgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgbGVhZGluZyA9IG9wdGlvbnMubGVhZGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy50cmFpbGluZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0cmFpbGluZyA9IG9wdGlvbnMudHJhaWxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubWF4V2FpdCA9PT0gJ251bWJlcicgJiYgIWlzTmFOKG9wdGlvbnMubWF4V2FpdCkpIHtcbiAgICAgICAgICAgIG1heFdhaXQgPSBvcHRpb25zLm1heFdhaXQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1hcmtFeGVjdXRlZCA9IGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgICAgICAgICBpZiAodGltZW91dElkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RFeGVjdXRlVGltZSA9IHRpbWU7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBpbnZva2VGdW5jdGlvbiA9IGZ1bmN0aW9uICh0aW1lKSB7XG4gICAgICAgICAgICBtYXJrRXhlY3V0ZWQodGltZSk7XG4gICAgICAgICAgICBsYXN0UmVzdWx0ID0gZnVuYy5hcHBseShfdGhpcy5fcGFyZW50LCBsYXN0QXJncyk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uICh1c2VyQ2FsbCkge1xuICAgICAgICAgICAgdmFyIG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB2YXIgZXhlY3V0ZUltbWVkaWF0ZWx5ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodXNlckNhbGwpIHtcbiAgICAgICAgICAgICAgICBpZiAobGVhZGluZyAmJiBub3cgLSBsYXN0Q2FsbFRpbWUgPj0gd2FpdE1TKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVJbW1lZGlhdGVseSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhc3RDYWxsVGltZSA9IG5vdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkZWx0YSA9IG5vdyAtIGxhc3RDYWxsVGltZTtcbiAgICAgICAgICAgIHZhciB3YWl0TGVuZ3RoID0gd2FpdE1TIC0gZGVsdGE7XG4gICAgICAgICAgICB2YXIgbWF4V2FpdERlbHRhID0gbm93IC0gbGFzdEV4ZWN1dGVUaW1lO1xuICAgICAgICAgICAgdmFyIG1heFdhaXRFeHBpcmVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAobWF4V2FpdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIG1heFdhaXQgb25seSBtYXR0ZXJzIHdoZW4gdGhlcmUgaXMgYSBwZW5kaW5nIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgaWYgKG1heFdhaXREZWx0YSA+PSBtYXhXYWl0ICYmIHRpbWVvdXRJZCkge1xuICAgICAgICAgICAgICAgICAgICBtYXhXYWl0RXhwaXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YWl0TGVuZ3RoID0gTWF0aC5taW4od2FpdExlbmd0aCwgbWF4V2FpdCAtIG1heFdhaXREZWx0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlbHRhID49IHdhaXRNUyB8fCBtYXhXYWl0RXhwaXJlZCB8fCBleGVjdXRlSW1tZWRpYXRlbHkpIHtcbiAgICAgICAgICAgICAgICBpbnZva2VGdW5jdGlvbihub3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoKHRpbWVvdXRJZCA9PT0gbnVsbCB8fCAhdXNlckNhbGwpICYmIHRyYWlsaW5nKSB7XG4gICAgICAgICAgICAgICAgdGltZW91dElkID0gX3RoaXMuc2V0VGltZW91dChjYWxsYmFjaywgd2FpdExlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBlbmRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aW1lb3V0SWQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBjYW5jZWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocGVuZGluZygpKSB7XG4gICAgICAgICAgICAgICAgLy8gTWFyayB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIGFzIGhhdmluZyBleGVjdXRlZFxuICAgICAgICAgICAgICAgIG1hcmtFeGVjdXRlZChEYXRlLm5vdygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHBlbmRpbmcoKSkge1xuICAgICAgICAgICAgICAgIGludm9rZUZ1bmN0aW9uKERhdGUubm93KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHZhciByZXN1bHRGdW5jdGlvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHRGdW5jdGlvbi5jYW5jZWwgPSBjYW5jZWw7XG4gICAgICAgIHJlc3VsdEZ1bmN0aW9uLmZsdXNoID0gZmx1c2g7XG4gICAgICAgIHJlc3VsdEZ1bmN0aW9uLnBlbmRpbmcgPSBwZW5kaW5nO1xuICAgICAgICByZXR1cm4gcmVzdWx0RnVuY3Rpb247XG4gICAgfTtcbiAgICBBc3luYy5wcm90b3R5cGUucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24gKGNhbGxiYWNrLCB0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBhbmltYXRpb25GcmFtZUlkID0gMDtcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdyh0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2FuaW1hdGlvbkZyYW1lSWRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBhbmltYXRpb25GcmFtZUNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdyBkZWxldGUgdGhlIHJlY29yZCBhbmQgY2FsbCB0aGUgY2FsbGJhY2suXG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHNbYW5pbWF0aW9uRnJhbWVJZF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkoX3RoaXMuX3BhcmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9sb2dFcnJvcihlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYW5pbWF0aW9uRnJhbWVJZCA9IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgICAgICAgICA/IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uRnJhbWVDYWxsYmFjaylcbiAgICAgICAgICAgICAgICA6IHdpbi5zZXRUaW1lb3V0KGFuaW1hdGlvbkZyYW1lQ2FsbGJhY2ssIDApO1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZHNbYW5pbWF0aW9uRnJhbWVJZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbmltYXRpb25GcmFtZUlkO1xuICAgIH07XG4gICAgQXN5bmMucHJvdG90eXBlLmNhbmNlbEFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24gKGlkLCB0YXJnZXRFbGVtZW50KSB7XG4gICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3codGFyZ2V0RWxlbWVudCk7XG4gICAgICAgIGlmICh0aGlzLl9hbmltYXRpb25GcmFtZUlkcyAmJiB0aGlzLl9hbmltYXRpb25GcmFtZUlkc1tpZF0pIHtcbiAgICAgICAgICAgIHdpbi5jYW5jZWxBbmltYXRpb25GcmFtZSA/IHdpbi5jYW5jZWxBbmltYXRpb25GcmFtZShpZCkgOiB3aW4uY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9hbmltYXRpb25GcmFtZUlkc1tpZF07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQXN5bmMucHJvdG90eXBlLl9sb2dFcnJvciA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmICh0aGlzLl9vbkVycm9ySGFuZGxlcikge1xuICAgICAgICAgICAgdGhpcy5fb25FcnJvckhhbmRsZXIoZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBBc3luYztcbn0oKSk7XG5leHBvcnQgeyBBc3luYyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXN5bmMuanMubWFwIiwiLyoqXG4gKiBDb21wYXJlcyBhIHRvIGIgYW5kIGIgdG8gYS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gc2hhbGxvd0NvbXBhcmUoYSwgYikge1xuICAgIGlmICghYSB8fCAhYikge1xuICAgICAgICAvLyBvbmx5IHJldHVybiB0cnVlIGlmIGJvdGggYSBhbmQgYiBhcmUgZmFsc3lcbiAgICAgICAgcmV0dXJuICFhICYmICFiO1xuICAgIH1cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBhKSB7XG4gICAgICAgIGlmIChhLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgaWYgKCFiLmhhc093blByb3BlcnR5KHByb3BOYW1lKSB8fCBiW3Byb3BOYW1lXSAhPT0gYVtwcm9wTmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gYikge1xuICAgICAgICBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIGlmICghYS5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIE1ha2VzIGEgcmVzdWx0aW5nIG1lcmdlIG9mIGEgYnVuY2ggb2Ygb2JqZWN0cy4gUGFzcyBpbiB0aGUgdGFyZ2V0IG9iamVjdCBmb2xsb3dlZCBieSAxIG9yIG1vcmVcbiAqIG9iamVjdHMgYXMgYXJndW1lbnRzIGFuZCB0aGV5IHdpbGwgYmUgbWVyZ2VkIHNlcXVlbnRpYWxseSBpbnRvIHRoZSB0YXJnZXQuIE5vdGUgdGhhdCB0aGlzIHdpbGxcbiAqIHNoYWxsb3cgbWVyZ2U7IGl0IHdpbGwgbm90IGNyZWF0ZSBuZXcgY2xvbmVkIHZhbHVlcyBmb3IgdGFyZ2V0IG1lbWJlcnMuXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIHRhcmdldCAtIFRhcmdldCBvYmplY3QgdG8gbWVyZ2UgZm9sbG93aW5nIG9iamVjdCBhcmd1bWVudHMgaW50by5cbiAqIEBwYXJhbSBhcmdzIC0gT25lIG9yIG1vcmUgb2JqZWN0cyB0aGF0IHdpbGwgYmUgbWl4ZWQgaW50byB0aGUgdGFyZ2V0IGluIHRoZSBvcmRlciB0aGV5IGFyZSBwcm92aWRlZC5cbiAqIEByZXR1cm5zIFJlc3VsdGluZyBtZXJnZWQgdGFyZ2V0LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZEFzc2lnbi5hcHBseSh0aGlzLCBbbnVsbCwgdGFyZ2V0XS5jb25jYXQoYXJncykpO1xufVxuLyoqXG4gKiBNYWtlcyBhIHJlc3VsdGluZyBtZXJnZSBvZiBhIGJ1bmNoIG9mIG9iamVjdHMsIGJ1dCBhbGxvd3MgYSBmaWx0ZXIgZnVuY3Rpb24gdG8gYmUgcGFzc2VkIGluIHRvIGZpbHRlclxuICogdGhlIHJlc3VsdGluZyBtZXJnZXMuIFRoaXMgYWxsb3dzIGZvciBzY2VuYXJpb3Mgd2hlcmUgeW91IHdhbnQgdG8gbWVyZ2UgXCJldmVyeXRoaW5nIGV4Y2VwdCB0aGF0IG9uZSB0aGluZ1wiXG4gKiBvciBcInByb3BlcnRpZXMgdGhhdCBzdGFydCB3aXRoIGRhdGEtXCIuIE5vdGUgdGhhdCB0aGlzIHdpbGwgc2hhbGxvdyBtZXJnZTsgaXQgd2lsbCBub3QgY3JlYXRlIG5ldyBjbG9uZWRcbiAqIHZhbHVlcyBmb3IgdGFyZ2V0IG1lbWJlcnMuXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIGlzQWxsb3dlZCAtIENhbGxiYWNrIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gcHJvcE5hbWUgaXMgYWxsb3dlZCBpbiB0aGUgcmVzdWx0LlxuICogQHBhcmFtIHRhcmdldCAtIFRhcmdldCBvYmplY3QgdG8gbWVyZ2UgZm9sbG93aW5nIG9iamVjdCBhcmd1bWVudHMgaW50by5cbiAqIEBwYXJhbSBhcmdzIC0gT25lIG9yIG1vcmUgb2JqZWN0cyB0aGF0IHdpbGwgYmUgbWl4ZWQgaW50byB0aGUgdGFyZ2V0IGluIHRoZSBvcmRlciB0aGV5IGFyZSBwcm92aWRlZC5cbiAqIEByZXR1cm5zIFJlc3VsdGluZyBtZXJnZWQgdGFyZ2V0LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcmVkQXNzaWduKGlzQWxsb3dlZCwgdGFyZ2V0KSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB0YXJnZXQgPSB0YXJnZXQgfHwge307XG4gICAgZm9yICh2YXIgX2EgPSAwLCBhcmdzXzEgPSBhcmdzOyBfYSA8IGFyZ3NfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZU9iamVjdCA9IGFyZ3NfMVtfYV07XG4gICAgICAgIGlmIChzb3VyY2VPYmplY3QpIHtcbiAgICAgICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIHNvdXJjZU9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2VPYmplY3QuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpICYmICghaXNBbGxvd2VkIHx8IGlzQWxsb3dlZChwcm9wTmFtZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wTmFtZV0gPSBzb3VyY2VPYmplY3RbcHJvcE5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiBUYWtlcyBhbiBlbnVtIGFuZCBpdGVyYXRlcyBvdmVyIGVhY2ggdmFsdWUgb2YgdGhlIGVudW0gKGFzIGEgc3RyaW5nKSwgcnVubmluZyB0aGUgY2FsbGJhY2sgb24gZWFjaCxcbiAqIHJldHVybmluZyBhIG1hcHBlZCBhcnJheS5cbiAqIEBwYXJhbSB0aGVFbnVtIC0gRW51bSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBmaXJzdCBwYXJhbWV0ZXIgdGhlIG5hbWUgb2YgdGhlIGVudHJ5LCBhbmQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHZhbHVlXG4gKiBvZiB0aGF0IGVudHJ5LCB3aGljaCBpcyB0aGUgdmFsdWUgeW91J2Qgbm9ybWFsbHkgdXNlIHdoZW4gdXNpbmcgdGhlIGVudW0gKHVzdWFsbHkgYSBudW1iZXIpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRW51bUJ5TmFtZShcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG50aGVFbnVtLCBjYWxsYmFjaykge1xuICAgIC8vIG1hcDxhbnk+IHRvIHNhdGlzZnkgY29tcGlsZXIgc2luY2UgaXQgZG9lc24ndCByZWFsaXplIHdlIHN0cmlwIG91dCB1bmRlZmluZWRzIGluIHRoZSAuZmlsdGVyKCkgY2FsbFxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGVFbnVtKVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIC8vIG1hcCBvbiBlYWNoIHByb3BlcnR5IG5hbWUgYXMgYSBzdHJpbmdcbiAgICAgICAgaWYgKFN0cmluZyhOdW1iZXIocCkpICE9PSBwKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGp1c3QgYSBudW1iZXIgKGJlY2F1c2UgZW51bXMgaW4gVHlwZVNjcmlwdCB3aWxsIG1hcCBib3RoIHdheXMpXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2socCwgdGhlRW51bVtwXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2KSB7IHJldHVybiAhIXY7IH0pOyAvLyBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIHZhbHVlc1xufVxuLyoqXG4gKiBHZXQgYWxsIHZhbHVlcyBpbiBhbiBvYmplY3QgZGljdGlvbmFyeVxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgZGljdGlvbmFyeSB0byBnZXQgdmFsdWVzIGZvclxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlcyhvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoZnVuY3Rpb24gKGFyciwga2V5KSB7XG4gICAgICAgIGFyci5wdXNoKG9ialtrZXldKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSk7XG59XG4vKipcbiAqIFRpbnkgaGVscGVyIHRvIGRvIHRoZSBtaW5pbWFsIGFtb3VudCBvZiB3b3JrIGluIGR1cGxpY2F0aW5nIGFuIG9iamVjdCBidXQgb21pdHRpbmcgc29tZVxuICogcHJvcHMuIFRoaXMgZW5kcyB1cCBmYXN0ZXIgdGhhbiB1c2luZyBvYmplY3QgLi4ucmVzdCBvciByZWR1Y2UgdG8gZmlsdGVyLlxuICpcbiAqIFRoaXMgYmVoYXZlcyB2ZXJ5IG11Y2ggbGlrZSBmaWx0ZXJlZEFzc2lnbiwgYnV0IGRvZXMgbm90IG1lcmdlIG1hbnkgb2JqZWN0cyB0b2dldGhlcixcbiAqIHVzZXMgYW4gZXhjbHVzaW9uIG9iamVjdCBtYXAsIGFuZCBhdm9pZHMgc3ByZWFkcyBhbGwgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UuXG4gKlxuICogU2VlIHBlcmYgdGVzdCBmb3IgYmFja2dyb3VuZDpcbiAqIGh0dHBzOi8vanNwZXJmLmNvbS9vbWl0LXZzLXJlc3QtdnMtcmVkdWNlLzFcbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZVxuICogQHBhcmFtIGV4Y2x1c2lvbnMgLSBUaGUgYXJyYXkgb2Yga2V5cyB0byBleGNsdWRlXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gb21pdChvYmosIGV4Y2x1c2lvbnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChleGNsdXNpb25zLmluZGV4T2Yoa2V5KSA9PT0gLTEgJiYgb2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9iamVjdC5qcy5tYXAiLCJpbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL29iamVjdCc7XG4vKiogQW4gaW5zdGFuY2Ugb2YgRXZlbnRHcm91cCBhbGxvd3MgYW55dGhpbmcgd2l0aCBhIGhhbmRsZSB0byBpdCB0byB0cmlnZ2VyIGV2ZW50cyBvbiBpdC5cbiAqICBJZiB0aGUgdGFyZ2V0IGlzIGFuIEhUTUxFbGVtZW50LCB0aGUgZXZlbnQgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgZWxlbWVudCBhbmQgY2FuIGJlXG4gKiAgdHJpZ2dlcmVkIGFzIHVzdWFsIChsaWtlIGNsaWNraW5nIGZvciBvbkNsaWNrKS5cbiAqICBUaGUgZXZlbnQgY2FuIGJlIHRyaWdnZXJlZCBieSBjYWxsaW5nIEV2ZW50R3JvdXAucmFpc2UoKSBoZXJlLiBJZiB0aGUgdGFyZ2V0IGlzIGFuXG4gKiAgSFRNTEVsZW1lbnQsIHRoZSBldmVudCBnZXRzIHJhaXNlZCBhbmQgaXMgaGFuZGxlZCBieSB0aGUgYnJvd3Nlci4gT3RoZXJ3aXNlLCBpdCBnZXRzXG4gKiAgaGFuZGxlZCBoZXJlIGluIEV2ZW50R3JvdXAsIGFuZCB0aGUgaGFuZGxlciBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHBhcmVudFxuICogICh3aGljaCBpcyBwYXNzZWQgaW4gaW4gdGhlIGNvbnN0cnVjdG9yKS5cbiAqXG4gKiBAcHVibGljXG4gKiB7QGRvY0NhdGVnb3J5IEV2ZW50R3JvdXB9XG4gKi9cbnZhciBFdmVudEdyb3VwID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKiBwYXJlbnQ6IHRoZSBjb250ZXh0IGluIHdoaWNoIGV2ZW50cyBhdHRhY2hlZCB0byBub24tSFRNTEVsZW1lbnRzIGFyZSBjYWxsZWQgKi9cbiAgICBmdW5jdGlvbiBFdmVudEdyb3VwKHBhcmVudCkge1xuICAgICAgICB0aGlzLl9pZCA9IEV2ZW50R3JvdXAuX3VuaXF1ZUlkKys7XG4gICAgICAgIHRoaXMuX3BhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5fZXZlbnRSZWNvcmRzID0gW107XG4gICAgfVxuICAgIC8qKiBGb3IgSUU4LCBidWJibGVFdmVudCBpcyBpZ25vcmVkIGhlcmUgYW5kIG11c3QgYmUgZGVhbHQgd2l0aCBieSB0aGUgaGFuZGxlci5cbiAgICAgKiAgRXZlbnRzIHJhaXNlZCBoZXJlIGJ5IGRlZmF1bHQgaGF2ZSBidWJibGluZyBzZXQgdG8gZmFsc2UgYW5kIGNhbmNlbGFibGUgc2V0IHRvIHRydWUuXG4gICAgICogIFRoaXMgYXBwbGllcyBhbHNvIHRvIGJ1aWx0LWluIGV2ZW50cyBiZWluZyByYWlzZWQgbWFudWFsbHkgaGVyZSBvbiBIVE1MRWxlbWVudHMsXG4gICAgICogIHdoaWNoIG1heSBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgaXQgZGlmZmVycyBmcm9tIHRoZSBkZWZhdWx0cy5cbiAgICAgKlxuICAgICAqL1xuICAgIEV2ZW50R3JvdXAucmFpc2UgPSBmdW5jdGlvbiAodGFyZ2V0LCBldmVudE5hbWUsIGV2ZW50QXJncywgYnViYmxlRXZlbnQpIHtcbiAgICAgICAgdmFyIHJldFZhbDtcbiAgICAgICAgaWYgKEV2ZW50R3JvdXAuX2lzRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCkge1xuICAgICAgICAgICAgICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdIVE1MRXZlbnRzJyk7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICAgICAgZXYuaW5pdEV2ZW50KGV2ZW50TmFtZSwgYnViYmxlRXZlbnQgfHwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgICAgIGFzc2lnbihldiwgZXZlbnRBcmdzKTtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0YXJnZXQuZGlzcGF0Y2hFdmVudChldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgLy8gSUU4XG4gICAgICAgICAgICAgICAgdmFyIGV2T2JqID0gZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgICAgICAvLyBjYW5ub3Qgc2V0IGNhbmNlbEJ1YmJsZSBvbiBldk9iaiwgZmlyZUV2ZW50IHdpbGwgb3ZlcndyaXRlIGl0XG4gICAgICAgICAgICAgICAgdGFyZ2V0LmZpcmVFdmVudCgnb24nICsgZXZlbnROYW1lLCBldk9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlICAtLSBGSVhNRTogc3RyaWN0QmluZENhbGxBcHBseSBlcnJvciAtIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvZmx1ZW50dWkvaXNzdWVzLzE3MzMxXG4gICAgICAgICAgICB3aGlsZSAodGFyZ2V0ICYmIHJldFZhbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9fZXZlbnRzX187XG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50UmVjb3JkcyA9IGV2ZW50cyA/IGV2ZW50c1tldmVudE5hbWVdIDogbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnRSZWNvcmRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGlkIGluIGV2ZW50UmVjb3Jkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50UmVjb3Jkcy5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnRSZWNvcmRMaXN0ID0gZXZlbnRSZWNvcmRzW2lkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAgLS0gRklYTUU6IHN0cmljdEJpbmRDYWxsQXBwbHkgZXJyb3IgLSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2ZsdWVudHVpL2lzc3Vlcy8xNzMzMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxpc3RJbmRleCA9IDA7IHJldFZhbCAhPT0gZmFsc2UgJiYgbGlzdEluZGV4IDwgZXZlbnRSZWNvcmRMaXN0Lmxlbmd0aDsgbGlzdEluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IGV2ZW50UmVjb3JkTGlzdFtsaXN0SW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLm9iamVjdENhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByZWNvcmQub2JqZWN0Q2FsbGJhY2suY2FsbChyZWNvcmQucGFyZW50LCBldmVudEFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFzIGEgcGFyZW50LCBidWJibGUgdGhlIGV2ZW50IHVwLlxuICAgICAgICAgICAgICAgIHRhcmdldCA9IGJ1YmJsZUV2ZW50ID8gdGFyZ2V0LnBhcmVudCA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9O1xuICAgIEV2ZW50R3JvdXAuaXNPYnNlcnZlZCA9IGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50TmFtZSkge1xuICAgICAgICB2YXIgZXZlbnRzID0gdGFyZ2V0ICYmIHRhcmdldC5fX2V2ZW50c19fO1xuICAgICAgICByZXR1cm4gISFldmVudHMgJiYgISFldmVudHNbZXZlbnROYW1lXTtcbiAgICB9O1xuICAgIC8qKiBDaGVjayB0byBzZWUgaWYgdGhlIHRhcmdldCBoYXMgZGVjbGFyZWQgc3VwcG9ydCBvZiB0aGUgZ2l2ZW4gZXZlbnQuICovXG4gICAgRXZlbnRHcm91cC5pc0RlY2xhcmVkID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnROYW1lKSB7XG4gICAgICAgIHZhciBkZWNsYXJlZEV2ZW50cyA9IHRhcmdldCAmJiB0YXJnZXQuX19kZWNsYXJlZEV2ZW50cztcbiAgICAgICAgcmV0dXJuICEhZGVjbGFyZWRFdmVudHMgJiYgISFkZWNsYXJlZEV2ZW50c1tldmVudE5hbWVdO1xuICAgIH07XG4gICAgRXZlbnRHcm91cC5zdG9wUHJvcGFnYXRpb24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBJRThcbiAgICAgICAgICAgIGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEV2ZW50R3JvdXAuX2lzRWxlbWVudCA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuICghIXRhcmdldCAmJiAoISF0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lciB8fCAodHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpKTtcbiAgICB9O1xuICAgIEV2ZW50R3JvdXAucHJvdG90eXBlLmRpc3Bvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5faXNEaXNwb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5faXNEaXNwb3NlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9mZigpO1xuICAgICAgICAgICAgdGhpcy5fcGFyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqIE9uIHRoZSB0YXJnZXQsIGF0dGFjaCBhIHNldCBvZiBldmVudHMsIHdoZXJlIHRoZSBldmVudHMgb2JqZWN0IGlzIGEgbmFtZSB0byBmdW5jdGlvbiBtYXBwaW5nLiAqL1xuICAgIEV2ZW50R3JvdXAucHJvdG90eXBlLm9uQWxsID0gZnVuY3Rpb24gKHRhcmdldCwgZXZlbnRzLCB1c2VDYXB0dXJlKSB7XG4gICAgICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBldmVudHMpIHtcbiAgICAgICAgICAgIGlmIChldmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub24odGFyZ2V0LCBldmVudE5hbWUsIGV2ZW50c1tldmVudE5hbWVdLCB1c2VDYXB0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogT24gdGhlIHRhcmdldCwgYXR0YWNoIGFuIGV2ZW50IHdob3NlIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHBhcmVudFxuICAgICAqIG9mIHRoaXMgaW5zdGFuY2Ugb2YgRXZlbnRHcm91cC5cbiAgICAgKi9cbiAgICBFdmVudEdyb3VwLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGV2ZW50TmFtZS5pbmRleE9mKCcsJykgPiAtMSkge1xuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IGV2ZW50TmFtZS5zcGxpdCgvWyAsXSsvKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbih0YXJnZXQsIGV2ZW50c1tpXSwgY2FsbGJhY2ssIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHBhcmVudF8xID0gdGhpcy5fcGFyZW50O1xuICAgICAgICAgICAgdmFyIGV2ZW50UmVjb3JkID0ge1xuICAgICAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZTogZXZlbnROYW1lLFxuICAgICAgICAgICAgICAgIHBhcmVudDogcGFyZW50XzEsXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBhbmQgd2lyZSB1cCB0aGUgcmVjb3JkIG9uIHRoZSB0YXJnZXQsIHNvIHRoYXQgaXQgY2FuIGNhbGwgdGhlIGNhbGxiYWNrIGlmIHRoZSBldmVudCBmaXJlcy5cbiAgICAgICAgICAgIHZhciBldmVudHMgPSAodGFyZ2V0Ll9fZXZlbnRzX18gPSB0YXJnZXQuX19ldmVudHNfXyB8fCB7fSk7XG4gICAgICAgICAgICBldmVudHNbZXZlbnROYW1lXSA9XG4gICAgICAgICAgICAgICAgZXZlbnRzW2V2ZW50TmFtZV0gfHxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBldmVudHNbZXZlbnROYW1lXVt0aGlzLl9pZF0gPSBldmVudHNbZXZlbnROYW1lXVt0aGlzLl9pZF0gfHwgW107XG4gICAgICAgICAgICBldmVudHNbZXZlbnROYW1lXVt0aGlzLl9pZF0ucHVzaChldmVudFJlY29yZCk7XG4gICAgICAgICAgICBldmVudHNbZXZlbnROYW1lXS5jb3VudCsrO1xuICAgICAgICAgICAgaWYgKEV2ZW50R3JvdXAuX2lzRWxlbWVudCh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb2Nlc3NFbGVtZW50RXZlbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl9pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrLmFwcGx5KHBhcmVudF8xLCBhcmdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgIC0tIEZJWE1FOiBzdHJpY3RCaW5kQ2FsbEFwcGx5IGVycm9yIC0gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9mbHVlbnR1aS9pc3N1ZXMvMTczMzFcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlICYmIGFyZ3NbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZXZlbnRSZWNvcmQuZWxlbWVudENhbGxiYWNrID0gcHJvY2Vzc0VsZW1lbnRFdmVudDtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBwcm9jZXNzRWxlbWVudEV2ZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0LmF0dGFjaEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElFOFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYXR0YWNoRXZlbnQoJ29uJyArIGV2ZW50TmFtZSwgcHJvY2Vzc0VsZW1lbnRFdmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb2Nlc3NPYmplY3RFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX2lzRGlzcG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkocGFyZW50XzEsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZXZlbnRSZWNvcmQub2JqZWN0Q2FsbGJhY2sgPSBwcm9jZXNzT2JqZWN0RXZlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZW1lbWJlciB0aGUgcmVjb3JkIGxvY2FsbHksIHNvIHRoYXQgaXQgY2FuIGJlIHJlbW92ZWQuXG4gICAgICAgICAgICB0aGlzLl9ldmVudFJlY29yZHMucHVzaChldmVudFJlY29yZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEV2ZW50R3JvdXAucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uICh0YXJnZXQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9ldmVudFJlY29yZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBldmVudFJlY29yZCA9IHRoaXMuX2V2ZW50UmVjb3Jkc1tpXTtcbiAgICAgICAgICAgIGlmICgoIXRhcmdldCB8fCB0YXJnZXQgPT09IGV2ZW50UmVjb3JkLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAoIWV2ZW50TmFtZSB8fCBldmVudE5hbWUgPT09IGV2ZW50UmVjb3JkLmV2ZW50TmFtZSkgJiZcbiAgICAgICAgICAgICAgICAoIWNhbGxiYWNrIHx8IGNhbGxiYWNrID09PSBldmVudFJlY29yZC5jYWxsYmFjaykgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIG9wdGlvbnMgIT09ICdib29sZWFuJyB8fCBvcHRpb25zID09PSBldmVudFJlY29yZC5vcHRpb25zKSkge1xuICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSBldmVudFJlY29yZC50YXJnZXQuX19ldmVudHNfXztcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0QXJyYXlMb29rdXAgPSBldmVudHNbZXZlbnRSZWNvcmQuZXZlbnROYW1lXTtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0QXJyYXkgPSB0YXJnZXRBcnJheUxvb2t1cCA/IHRhcmdldEFycmF5TG9va3VwW3RoaXMuX2lkXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF5IGhhdmUgYWxyZWFkeSB0YXJnZXQncyBlbnRyaWVzLCBzbyBjaGVjayBmb3IgbnVsbC5cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0QXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldEFycmF5Lmxlbmd0aCA9PT0gMSB8fCAhY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEFycmF5TG9va3VwLmNvdW50IC09IHRhcmdldEFycmF5Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbZXZlbnRSZWNvcmQuZXZlbnROYW1lXVt0aGlzLl9pZF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRBcnJheUxvb2t1cC5jb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXJyYXkuc3BsaWNlKHRhcmdldEFycmF5LmluZGV4T2YoZXZlbnRSZWNvcmQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldEFycmF5TG9va3VwLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXZlbnRzW2V2ZW50UmVjb3JkLmV2ZW50TmFtZV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50UmVjb3JkLmVsZW1lbnRDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRSZWNvcmQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50UmVjb3JkLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50UmVjb3JkLmV2ZW50TmFtZSwgZXZlbnRSZWNvcmQuZWxlbWVudENhbGxiYWNrLCBldmVudFJlY29yZC5vcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldmVudFJlY29yZC50YXJnZXQuZGV0YWNoRXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFOFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRSZWNvcmQudGFyZ2V0LmRldGFjaEV2ZW50KCdvbicgKyBldmVudFJlY29yZC5ldmVudE5hbWUsIGV2ZW50UmVjb3JkLmVsZW1lbnRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRSZWNvcmRzLnNwbGljZShpLS0sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICAvKiogVHJpZ2dlciB0aGUgZ2l2ZW4gZXZlbnQgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBpbnN0YW5jZSBvZiBFdmVudEdyb3VwLiAqL1xuICAgIEV2ZW50R3JvdXAucHJvdG90eXBlLnJhaXNlID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgZXZlbnRBcmdzLCBidWJibGVFdmVudCkge1xuICAgICAgICByZXR1cm4gRXZlbnRHcm91cC5yYWlzZSh0aGlzLl9wYXJlbnQsIGV2ZW50TmFtZSwgZXZlbnRBcmdzLCBidWJibGVFdmVudCk7XG4gICAgfTtcbiAgICAvKiogRGVjbGFyZSBhbiBldmVudCBhcyBiZWluZyBzdXBwb3J0ZWQgYnkgdGhpcyBpbnN0YW5jZSBvZiBFdmVudEdyb3VwLiAqL1xuICAgIEV2ZW50R3JvdXAucHJvdG90eXBlLmRlY2xhcmUgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdmFyIGRlY2xhcmVkRXZlbnRzID0gKHRoaXMuX3BhcmVudC5fX2RlY2xhcmVkRXZlbnRzID0gdGhpcy5fcGFyZW50Ll9fZGVjbGFyZWRFdmVudHMgfHwge30pO1xuICAgICAgICBpZiAodHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgZGVjbGFyZWRFdmVudHNbZXZlbnRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBkZWNsYXJlZEV2ZW50c1tldmVudFtpXV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBFdmVudEdyb3VwLl91bmlxdWVJZCA9IDA7XG4gICAgcmV0dXJuIEV2ZW50R3JvdXA7XG59KCkpO1xuZXhwb3J0IHsgRXZlbnRHcm91cCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXZlbnRHcm91cC5qcy5tYXAiLCJpbXBvcnQgeyBjYW5Vc2VET00gfSBmcm9tICcuL2NhblVzZURPTSc7XG4vKipcbiAqIEhlbHBlciB0byBnZXQgdGhlIGRvY3VtZW50IG9iamVjdC4gTm90ZSB0aGF0IGluIHBvcHVwIHdpbmRvdyBjYXNlcywgZG9jdW1lbnRcbiAqIG1pZ2h0IGJlIHRoZSB3cm9uZyBkb2N1bWVudCwgd2hpY2ggaXMgd2h5IHdlIGxvb2sgYXQgb3duZXJEb2N1bWVudCBmb3IgdGhlXG4gKiB0cnV0aC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb2N1bWVudChyb290RWxlbWVudCkge1xuICAgIGlmICghY2FuVXNlRE9NKCkgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIGVsID0gcm9vdEVsZW1lbnQ7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vd25lckRvY3VtZW50ID8gZWwub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldERvY3VtZW50LmpzLm1hcCIsImltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnLi9kb20vZ2V0RG9jdW1lbnQnO1xuaW1wb3J0IHsgbWVyZ2VTdHlsZXMgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbmltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJy4vZG9tL2dldFdpbmRvdyc7XG52YXIgX3Njcm9sbGJhcldpZHRoO1xudmFyIF9ib2R5U2Nyb2xsRGlzYWJsZWRDb3VudCA9IDA7XG52YXIgRGlzYWJsZWRTY3JvbGxDbGFzc05hbWUgPSBtZXJnZVN0eWxlcyh7XG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4gIWltcG9ydGFudCcsXG59KTtcbi8qKlxuICogUGxhY2luZyB0aGlzIGF0dHJpYnV0ZSBvbiBzY3JvbGxhYmxlIGRpdnMgb3B0aW1pemVzIGRldGVjdGlvbiB0byBrbm93XG4gKiBpZiB0aGUgZGl2IGlzIHNjcm9sbGFibGUgb3Igbm90IChnaXZlbiB3ZSBjYW4gYXZvaWQgZXhwZW5zaXZlIG9wZXJhdGlvbnNcbiAqIGxpa2UgZ2V0Q29tcHV0ZWRTdHlsZS4pXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIERBVEFfSVNfU0NST0xMQUJMRV9BVFRSSUJVVEUgPSAnZGF0YS1pcy1zY3JvbGxhYmxlJztcbi8qKlxuICogQWxsb3dzIHRoZSB1c2VyIHRvIHNjcm9sbCB3aXRoaW4gYSBlbGVtZW50LFxuICogd2hpbGUgcHJldmVudGluZyB0aGUgdXNlciBmcm9tIHNjcm9sbGluZyB0aGUgYm9keVxuICovXG5leHBvcnQgdmFyIGFsbG93U2Nyb2xsT25FbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50cykge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBfcHJldmlvdXNDbGllbnRZID0gMDtcbiAgICB2YXIgX2VsZW1lbnQgPSBudWxsO1xuICAgIC8vIHJlbWVtYmVyIHRoZSBjbGllbnRZIGZvciBmdXR1cmUgY2FsbHMgb2YgX3ByZXZlbnRPdmVyc2Nyb2xsaW5nXG4gICAgdmFyIF9zYXZlQ2xpZW50WSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIF9wcmV2aW91c0NsaWVudFkgPSBldmVudC50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIHByZXZlbnQgdGhlIGJvZHkgZnJvbSBzY3JvbGxpbmcgd2hlbiB0aGUgdXNlciBhdHRlbXB0c1xuICAgIC8vIHRvIHNjcm9sbCBwYXN0IHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSBlbGVtZW50XG4gICAgdmFyIF9wcmV2ZW50T3ZlcnNjcm9sbGluZyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAvLyBvbmx5IHJlc3BvbmQgdG8gYSBzaW5nbGUtZmluZ2VyIHRvdWNoXG4gICAgICAgIGlmIChldmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgdGhlIGJvZHkgdG91Y2htb3ZlIGhhbmRsZXIgZnJvbSBmaXJpbmdcbiAgICAgICAgLy8gc28gdGhhdCBzY3JvbGxpbmcgaXMgYWxsb3dlZCB3aXRoaW4gdGhlIGVsZW1lbnRcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICghX2VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2xpZW50WSA9IGV2ZW50LnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSAtIF9wcmV2aW91c0NsaWVudFk7XG4gICAgICAgIHZhciBzY3JvbGxhYmxlUGFyZW50ID0gZmluZFNjcm9sbGFibGVQYXJlbnQoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKHNjcm9sbGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgIF9lbGVtZW50ID0gc2Nyb2xsYWJsZVBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBpcyBzY3JvbGxlZCB0byB0aGUgdG9wLFxuICAgICAgICAvLyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gc2Nyb2xsaW5nIHVwXG4gICAgICAgIGlmIChfZWxlbWVudC5zY3JvbGxUb3AgPT09IDAgJiYgY2xpZW50WSA+IDApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgaXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSxcbiAgICAgICAgLy8gcHJldmVudCB0aGUgdXNlciBmcm9tIHNjcm9sbGluZyBkb3duXG4gICAgICAgIGlmIChfZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBNYXRoLmNlaWwoX2VsZW1lbnQuc2Nyb2xsVG9wKSA8PSBfZWxlbWVudC5jbGllbnRIZWlnaHQgJiYgY2xpZW50WSA8IDApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGV2ZW50cy5vbihlbGVtZW50LCAndG91Y2hzdGFydCcsIF9zYXZlQ2xpZW50WSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICBldmVudHMub24oZWxlbWVudCwgJ3RvdWNobW92ZScsIF9wcmV2ZW50T3ZlcnNjcm9sbGluZywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICBfZWxlbWVudCA9IGVsZW1lbnQ7XG59O1xuLyoqXG4gKiBTYW1lIGFzIGFsbG93U2Nyb2xsT25FbGVtZW50IGJ1dCBkb2VzIG5vdCBwcmV2ZW50IG92ZXJzY3JvbGxpbmcuXG4gKi9cbmV4cG9ydCB2YXIgYWxsb3dPdmVyc2Nyb2xsT25FbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGV2ZW50cykge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBfYWxsb3dFbGVtZW50U2Nyb2xsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgZXZlbnRzLm9uKGVsZW1lbnQsICd0b3VjaG1vdmUnLCBfYWxsb3dFbGVtZW50U2Nyb2xsLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xufTtcbnZhciBfZGlzYWJsZUlvc0JvZHlTY3JvbGwgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcbi8qKlxuICogRGlzYWJsZXMgdGhlIGJvZHkgc2Nyb2xsaW5nLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVCb2R5U2Nyb2xsKCkge1xuICAgIHZhciBkb2MgPSBnZXREb2N1bWVudCgpO1xuICAgIGlmIChkb2MgJiYgZG9jLmJvZHkgJiYgIV9ib2R5U2Nyb2xsRGlzYWJsZWRDb3VudCkge1xuICAgICAgICBkb2MuYm9keS5jbGFzc0xpc3QuYWRkKERpc2FibGVkU2Nyb2xsQ2xhc3NOYW1lKTtcbiAgICAgICAgZG9jLmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgX2Rpc2FibGVJb3NCb2R5U2Nyb2xsLCB7IHBhc3NpdmU6IGZhbHNlLCBjYXB0dXJlOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgX2JvZHlTY3JvbGxEaXNhYmxlZENvdW50Kys7XG59XG4vKipcbiAqIEVuYWJsZXMgdGhlIGJvZHkgc2Nyb2xsaW5nLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUJvZHlTY3JvbGwoKSB7XG4gICAgaWYgKF9ib2R5U2Nyb2xsRGlzYWJsZWRDb3VudCA+IDApIHtcbiAgICAgICAgdmFyIGRvYyA9IGdldERvY3VtZW50KCk7XG4gICAgICAgIGlmIChkb2MgJiYgZG9jLmJvZHkgJiYgX2JvZHlTY3JvbGxEaXNhYmxlZENvdW50ID09PSAxKSB7XG4gICAgICAgICAgICBkb2MuYm9keS5jbGFzc0xpc3QucmVtb3ZlKERpc2FibGVkU2Nyb2xsQ2xhc3NOYW1lKTtcbiAgICAgICAgICAgIGRvYy5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF9kaXNhYmxlSW9zQm9keVNjcm9sbCk7XG4gICAgICAgIH1cbiAgICAgICAgX2JvZHlTY3JvbGxEaXNhYmxlZENvdW50LS07XG4gICAgfVxufVxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiBhIHNjcm9sbGJhciBmb3IgdGhlIGJyb3dzZXIvb3MuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2Nyb2xsYmFyV2lkdGgoKSB7XG4gICAgaWYgKF9zY3JvbGxiYXJXaWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBzY3JvbGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgc2Nyb2xsRGl2LnN0eWxlLnNldFByb3BlcnR5KCd3aWR0aCcsICcxMDBweCcpO1xuICAgICAgICBzY3JvbGxEaXYuc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsICcxMDBweCcpO1xuICAgICAgICBzY3JvbGxEaXYuc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywgJ3Njcm9sbCcpO1xuICAgICAgICBzY3JvbGxEaXYuc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgICAgIHNjcm9sbERpdi5zdHlsZS5zZXRQcm9wZXJ0eSgndG9wJywgJy05OTk5cHgnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JvbGxEaXYpO1xuICAgICAgICAvLyBHZXQgdGhlIHNjcm9sbGJhciB3aWR0aFxuICAgICAgICBfc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxEaXYub2Zmc2V0V2lkdGggLSBzY3JvbGxEaXYuY2xpZW50V2lkdGg7XG4gICAgICAgIC8vIERlbGV0ZSB0aGUgRElWXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2Nyb2xsRGl2KTtcbiAgICB9XG4gICAgcmV0dXJuIF9zY3JvbGxiYXJXaWR0aDtcbn1cbi8qKlxuICogVHJhdmVyc2VzIHVwIHRoZSBET00gZm9yIHRoZSBlbGVtZW50IHdpdGggdGhlIGRhdGEtaXMtc2Nyb2xsYWJsZT10cnVlIGF0dHJpYnV0ZSwgb3IgcmV0dXJuc1xuICogZG9jdW1lbnQuYm9keS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kU2Nyb2xsYWJsZVBhcmVudChzdGFydGluZ0VsZW1lbnQpIHtcbiAgICB2YXIgZWwgPSBzdGFydGluZ0VsZW1lbnQ7XG4gICAgdmFyIGRvYyA9IGdldERvY3VtZW50KHN0YXJ0aW5nRWxlbWVudCk7XG4gICAgLy8gRmlyc3QgZG8gYSBxdWljayBzY2FuIGZvciB0aGUgc2Nyb2xsYWJsZSBhdHRyaWJ1dGUuXG4gICAgd2hpbGUgKGVsICYmIGVsICE9PSBkb2MuYm9keSkge1xuICAgICAgICBpZiAoZWwuZ2V0QXR0cmlidXRlKERBVEFfSVNfU0NST0xMQUJMRV9BVFRSSUJVVEUpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgIHJldHVybiBlbDtcbiAgICAgICAgfVxuICAgICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIElmIHdlIGhhdmVuJ3QgZm91bmQgaXQsIHRoZSB1c2UgdGhlIHNsb3dlciBtZXRob2Q6IGNvbXB1dGUgc3R5bGVzIHRvIGV2YWx1YXRlIGlmIG92ZXJmbG93IGlzIHNldC5cbiAgICBlbCA9IHN0YXJ0aW5nRWxlbWVudDtcbiAgICB3aGlsZSAoZWwgJiYgZWwgIT09IGRvYy5ib2R5KSB7XG4gICAgICAgIGlmIChlbC5nZXRBdHRyaWJ1dGUoREFUQV9JU19TQ1JPTExBQkxFX0FUVFJJQlVURSkgIT09ICdmYWxzZScpIHtcbiAgICAgICAgICAgIHZhciBjb21wdXRlZFN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuICAgICAgICAgICAgdmFyIG92ZXJmbG93WSA9IGNvbXB1dGVkU3R5bGVzID8gY29tcHV0ZWRTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnb3ZlcmZsb3cteScpIDogJyc7XG4gICAgICAgICAgICBpZiAob3ZlcmZsb3dZICYmIChvdmVyZmxvd1kgPT09ICdzY3JvbGwnIHx8IG92ZXJmbG93WSA9PT0gJ2F1dG8nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIEZhbGwgYmFjayB0byB3aW5kb3cgc2Nyb2xsLlxuICAgIGlmICghZWwgfHwgZWwgPT09IGRvYy5ib2R5KSB7XG4gICAgICAgIGVsID0gZ2V0V2luZG93KHN0YXJ0aW5nRWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNjcm9sbC5qcy5tYXAiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG52YXIgX3dhcm5pbmdDYWxsYmFjayA9IHVuZGVmaW5lZDtcbi8qKlxuICogU2VuZHMgYSB3YXJuaW5nIHRvIGNvbnNvbGUsIGlmIHRoZSBhcGkgaXMgcHJlc2VudC5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFdhcm5pbmcgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhcm4obWVzc2FnZSkge1xuICAgIGlmIChfd2FybmluZ0NhbGxiYWNrICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgX3dhcm5pbmdDYWxsYmFjayhtZXNzYWdlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbn1cbi8qKlxuICogQ29uZmlndXJlcyB0aGUgd2FybmluZyBjYWxsYmFjay4gUGFzc2luZyBpbiB1bmRlZmluZWQgd2lsbCByZXNldCBpdCB0byB1c2UgdGhlIGRlZmF1bHRcbiAqIGNvbnNvbGUud2FybiBmdW5jdGlvbi5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gd2FybmluZ0NhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCB3YXJuaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFdhcm5pbmdDYWxsYmFjayh3YXJuaW5nQ2FsbGJhY2spIHtcbiAgICBfd2FybmluZ0NhbGxiYWNrID0gd2FybmluZ0NhbGxiYWNrO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d2Fybi5qcy5tYXAiLCJpbXBvcnQgeyB3YXJuIH0gZnJvbSAnLi93YXJuJztcbi8qKlxuICogV2FybnMgd2hlbiBwcm9wcyBhcmUgcmVxdWlyZWQgaWYgYSBjb25kaXRpb24gaXMgbWV0LlxuICpcbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSBjb21wb25lbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCBiZWluZyB1c2VkLlxuICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BzIHBhc3NlZCBpbnRvIHRoZSBjb21wb25lbnQuXG4gKiBAcGFyYW0gcmVxdWlyZWRQcm9wcyAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wcyB0aGF0IGFyZSByZXF1aXJlZCB3aGVuIHRoZSBjb25kaXRpb24gaXMgbWV0LlxuICogQHBhcmFtIGNvbmRpdGlvbmFsUHJvcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcCB0aGF0IHRoZSBjb25kaXRpb24gaXMgYmFzZWQgb24uXG4gKiBAcGFyYW0gY29uZGl0aW9uIC0gV2hldGhlciB0aGUgY29uZGl0aW9uIGlzIG1ldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhcm5Db25kaXRpb25hbGx5UmVxdWlyZWRQcm9wcyhjb21wb25lbnROYW1lLCBwcm9wcywgcmVxdWlyZWRQcm9wcywgY29uZGl0aW9uYWxQcm9wTmFtZSwgY29uZGl0aW9uKSB7XG4gICAgaWYgKGNvbmRpdGlvbiA9PT0gdHJ1ZSAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcmVxdWlyZWRQcm9wc18xID0gcmVxdWlyZWRQcm9wczsgX2kgPCByZXF1aXJlZFByb3BzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgcmVxdWlyZWRQcm9wTmFtZSA9IHJlcXVpcmVkUHJvcHNfMVtfaV07XG4gICAgICAgICAgICBpZiAoIShyZXF1aXJlZFByb3BOYW1lIGluIHByb3BzKSkge1xuICAgICAgICAgICAgICAgIHdhcm4oXCJcIi5jb25jYXQoY29tcG9uZW50TmFtZSwgXCIgcHJvcGVydHkgJ1wiKS5jb25jYXQocmVxdWlyZWRQcm9wTmFtZSwgXCInIGlzIHJlcXVpcmVkIHdoZW4gJ1wiKS5jb25jYXQoY29uZGl0aW9uYWxQcm9wTmFtZSwgXCInIGlzIHVzZWQuJ1wiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD13YXJuQ29uZGl0aW9uYWxseVJlcXVpcmVkUHJvcHMuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBc3luYyB9IGZyb20gJy4vQXN5bmMnO1xuaW1wb3J0IHsgRXZlbnRHcm91cCB9IGZyb20gJy4vRXZlbnRHcm91cCc7XG5pbXBvcnQgeyB3YXJuQ29uZGl0aW9uYWxseVJlcXVpcmVkUHJvcHMgfSBmcm9tICcuL3dhcm4vd2FybkNvbmRpdGlvbmFsbHlSZXF1aXJlZFByb3BzJztcbmltcG9ydCB7IHdhcm5NdXR1YWxseUV4Y2x1c2l2ZSB9IGZyb20gJy4vd2Fybi93YXJuTXV0dWFsbHlFeGNsdXNpdmUnO1xuaW1wb3J0IHsgd2FybkRlcHJlY2F0aW9ucyB9IGZyb20gJy4vd2Fybi93YXJuRGVwcmVjYXRpb25zJztcbi8qKlxuICogQmFzZUNvbXBvbmVudCBjbGFzcywgd2hpY2ggcHJvdmlkZXMgYmFzaWMgaGVscGVycyBmb3IgYWxsIGNvbXBvbmVudHMuXG4gKlxuICogQHB1YmxpY1xuICoge0Bkb2NDYXRlZ29yeSBCYXNlQ29tcG9uZW50fVxuICpcbiAqIEBkZXByZWNhdGVkIERvIG5vdCB1c2UuIFdlIGFyZSBtb3ZpbmcgYXdheSBmcm9tIGNsYXNzIGNvbXBvbmVudC5cbiAqL1xudmFyIEJhc2VDb21wb25lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhc2VDb21wb25lbnQsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQmFzZUNvbXBvbmVudCBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0IGZvciB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZnVuY3Rpb24gQmFzZUNvbXBvbmVudChwcm9wcywgY29udGV4dCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIF9tYWtlQWxsU2FmZShfdGhpcywgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUsIFtcbiAgICAgICAgICAgICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgICAgICAgICAnc2hvdWxkQ29tcG9uZW50VXBkYXRlJyxcbiAgICAgICAgICAgICdnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZScsXG4gICAgICAgICAgICAncmVuZGVyJyxcbiAgICAgICAgICAgICdjb21wb25lbnREaWRVcGRhdGUnLFxuICAgICAgICAgICAgJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgY29tcG9uZW50IHJlY2VpdmVzIHByb3BzLCBtYWtlIHN1cmUgdGhlIGNvbXBvbmVudFJlZiBpcyB1cGRhdGVkLlxuICAgICAqL1xuICAgIEJhc2VDb21wb25lbnQucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIChwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgICB0aGlzLl91cGRhdGVDb21wb25lbnRSZWYocHJldlByb3BzLCB0aGlzLnByb3BzKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZCwgdXBkYXRlIHRoZSBjb21wb25lbnRSZWYuXG4gICAgICovXG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX3NldENvbXBvbmVudFJlZih0aGlzLnByb3BzLmNvbXBvbmVudFJlZiwgdGhpcyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJZiB3ZSBoYXZlIGRpc3Bvc2FibGVzLCBkaXNwb3NlIHRoZW0gYXV0b21hdGljYWxseSBvbiB1bm1vdW50LlxuICAgICAqL1xuICAgIEJhc2VDb21wb25lbnQucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9zZXRDb21wb25lbnRSZWYodGhpcy5wcm9wcy5jb21wb25lbnRSZWYsIG51bGwpO1xuICAgICAgICBpZiAodGhpcy5fX2Rpc3Bvc2FibGVzKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5fZGlzcG9zYWJsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlzcG9zYWJsZSA9IHRoaXMuX19kaXNwb3NhYmxlc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzcG9zYWJsZS5kaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX19kaXNwb3NhYmxlcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlQ29tcG9uZW50LnByb3RvdHlwZSwgXCJjbGFzc05hbWVcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgb2JqZWN0J3MgY2xhc3MgbmFtZS5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9fY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bmNOYW1lUmVnZXggPSAvZnVuY3Rpb24gKC57MSx9KVxcKC87XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBmdW5jTmFtZVJlZ2V4LmV4ZWModGhpcy5jb25zdHJ1Y3Rvci50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9fY2xhc3NOYW1lID0gcmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA+IDEgPyByZXN1bHRzWzFdIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fX2NsYXNzTmFtZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlQ29tcG9uZW50LnByb3RvdHlwZSwgXCJfZGlzcG9zYWJsZXNcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogQWxsb3dzIHN1YmNsYXNzZXMgdG8gcHVzaCB0aGluZ3MgdG8gdGhpcy5fZGlzcG9zYWJsZXMgdG8gYmUgYXV0byBkaXNwb3NlZC5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9fZGlzcG9zYWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9fZGlzcG9zYWJsZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fZGlzcG9zYWJsZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiX2FzeW5jXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIGFzeW5jIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LCBjcmVhdGVkIG9uIGRlbWFuZC4gVGhlIGFzeW5jIGluc3RhbmNlIGdpdmVzXG4gICAgICAgICAqIHN1YmNsYXNzZXMgYSB3YXkgdG8gZXhlY3V0ZSBzZXRUaW1lb3V0L3NldEludGVydmFsIGFzeW5jIGNhbGxzIHNhZmVseSwgd2hlcmUgdGhlIGNhbGxiYWNrc1xuICAgICAgICAgKiB3aWxsIGJlIGNsZWFyZWQvaWdub3JlZCBhdXRvbWF0aWNhbGx5IGFmdGVyIHVubW91bnRpbmcuIFRoZSBoZWxwZXJzIHdpdGhpbiB0aGUgYXN5bmMgb2JqZWN0IGFsc29cbiAgICAgICAgICogcHJlc2VydmUgdGhlIHRoaXMgcG9pbnRlciBzbyB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIFwiYmluZFwiIHRoZSBjYWxsYmFja3MuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fX2FzeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fX2FzeW5jID0gbmV3IEFzeW5jKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLnB1c2godGhpcy5fX2FzeW5jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9fYXN5bmM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQmFzZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiX2V2ZW50c1wiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBldmVudCBncm91cCBpbnN0YW5jZSBhc3NvY2FpdGVkIHdpdGggdGhlIGNvbXBvbmVudCwgY3JlYXRlZCBvbiBkZW1hbmQuIFRoZSBldmVudCBpbnN0YW5jZVxuICAgICAgICAgKiBwcm92aWRlcyBvbi9vZmYgbWV0aG9kcyBmb3IgbGlzdGVuaW5nIHRvIERPTSAob3IgcmVndWxhciBqYXZhc2NyaXB0IG9iamVjdCkgZXZlbnRzLiBUaGUgZXZlbnQgY2FsbGJhY2tzXG4gICAgICAgICAqIHdpbGwgYmUgYXV0b21hdGljYWxseSBkaXNjb25uZWN0ZWQgYWZ0ZXIgdW5tb3VudGluZy4gVGhlIGhlbHBlcnMgd2l0aGluIHRoZSBldmVudHMgb2JqZWN0IGFsc29cbiAgICAgICAgICogcHJlc2VydmUgdGhlIHRoaXMgcmVmZXJlbmNlIHNvIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gXCJiaW5kXCIgdGhlIGNhbGxiYWNrcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9fZXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fX2V2ZW50cyA9IG5ldyBFdmVudEdyb3VwKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLnB1c2godGhpcy5fX2V2ZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fX2V2ZW50cztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIEhlbHBlciB0byByZXR1cm4gYSBtZW1vaXplZCByZWYgcmVzb2x2ZXIgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHJlZk5hbWUgLSBOYW1lIG9mIHRoZSBtZW1iZXIgdG8gYXNzaWduIHRoZSByZWYgdG8uXG4gICAgICogQHJldHVybnMgQSBmdW5jdGlvbiBpbnN0YW5jZSBrZXllZCBmcm9tIHRoZSBnaXZlbiByZWZuYW1lLlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgY3JlYXRlUmVmYCBmcm9tIFJlYWN0LmNyZWF0ZVJlZi5cbiAgICAgKi9cbiAgICBCYXNlQ29tcG9uZW50LnByb3RvdHlwZS5fcmVzb2x2ZVJlZiA9IGZ1bmN0aW9uIChyZWZOYW1lKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5fX3Jlc29sdmVzKSB7XG4gICAgICAgICAgICB0aGlzLl9fcmVzb2x2ZXMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX19yZXNvbHZlc1tyZWZOYW1lXSkge1xuICAgICAgICAgICAgdGhpcy5fX3Jlc29sdmVzW3JlZk5hbWVdID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgcmV0dXJuIChfdGhpc1tyZWZOYW1lXSA9IHJlZik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9fcmVzb2x2ZXNbcmVmTmFtZV07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnRSZWYgKGJ5IGNhbGxpbmcgaXQgd2l0aCBcInRoaXNcIiB3aGVuIG5lY2Vzc2FyeS4pXG4gICAgICovXG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuX3VwZGF0ZUNvbXBvbmVudFJlZiA9IGZ1bmN0aW9uIChjdXJyZW50UHJvcHMsIG5ld1Byb3BzKSB7XG4gICAgICAgIGlmIChuZXdQcm9wcyA9PT0gdm9pZCAwKSB7IG5ld1Byb3BzID0ge307IH1cbiAgICAgICAgLy8gY3VycmVudFByb3BzICpzaG91bGQqIGFsd2F5cyBiZSBkZWZpbmVkLCBidXQgdmVyaWZ5IHRoYXQganVzdCBpbiBjYXNlIGEgc3ViY2xhc3MgaXMgbWFudWFsbHlcbiAgICAgICAgLy8gY2FsbGluZyBhIGxpZmVjeWNsZSBtZXRob2Qgd2l0aCBubyBwYXJhbWV0ZXJzICh3aGljaCBoYXMgaGFwcGVuZWQpIG9yIG90aGVyIG9kZCB1c2FnZS5cbiAgICAgICAgaWYgKGN1cnJlbnRQcm9wcyAmJiBuZXdQcm9wcyAmJiBjdXJyZW50UHJvcHMuY29tcG9uZW50UmVmICE9PSBuZXdQcm9wcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbXBvbmVudFJlZihjdXJyZW50UHJvcHMuY29tcG9uZW50UmVmLCBudWxsKTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbXBvbmVudFJlZihuZXdQcm9wcy5jb21wb25lbnRSZWYsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXYXJucyB3aGVuIGEgZGVwcmVjYXRlZCBwcm9wcyBhcmUgYmVpbmcgdXNlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZXByZWNhdGlvbk1hcCAtIFRoZSBtYXAgb2YgZGVwcmVjYXRpb25zLCB3aGVyZSBrZXkgaXMgdGhlIHByb3AgbmFtZSBhbmQgdGhlIHZhbHVlIGlzXG4gICAgICogZWl0aGVyIG51bGwgb3IgYSByZXBsYWNlbWVudCBwcm9wIG5hbWUuXG4gICAgICovXG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuX3dhcm5EZXByZWNhdGlvbnMgPSBmdW5jdGlvbiAoZGVwcmVjYXRpb25NYXApIHtcbiAgICAgICAgd2FybkRlcHJlY2F0aW9ucyh0aGlzLmNsYXNzTmFtZSwgdGhpcy5wcm9wcywgZGVwcmVjYXRpb25NYXApO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogV2FybnMgd2hlbiBwcm9wcyB3aGljaCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggZWFjaCBvdGhlciBhcmUgYm90aCB1c2VkLlxuICAgICAqXG4gICAgICogQHBhcmFtIG11dHVhbGx5RXhjbHVzaXZlTWFwIC0gVGhlIG1hcCBvZiBtdXR1YWxseSBleGNsdXNpdmUgcHJvcHMuXG4gICAgICovXG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuX3dhcm5NdXR1YWxseUV4Y2x1c2l2ZSA9IGZ1bmN0aW9uIChtdXR1YWxseUV4Y2x1c2l2ZU1hcCkge1xuICAgICAgICB3YXJuTXV0dWFsbHlFeGNsdXNpdmUodGhpcy5jbGFzc05hbWUsIHRoaXMucHJvcHMsIG11dHVhbGx5RXhjbHVzaXZlTWFwKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFdhcm5zIHdoZW4gcHJvcHMgYXJlIHJlcXVpcmVkIGlmIGEgY29uZGl0aW9uIGlzIG1ldC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1aXJlZFByb3BzIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BzIHRoYXQgYXJlIHJlcXVpcmVkIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyBtZXQuXG4gICAgICogQHBhcmFtIGNvbmRpdGlvbmFsUHJvcE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcCB0aGF0IHRoZSBjb25kaXRpb24gaXMgYmFzZWQgb24uXG4gICAgICogQHBhcmFtIGNvbmRpdGlvbiAtIFdoZXRoZXIgdGhlIGNvbmRpdGlvbiBpcyBtZXQuXG4gICAgICovXG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuX3dhcm5Db25kaXRpb25hbGx5UmVxdWlyZWRQcm9wcyA9IGZ1bmN0aW9uIChyZXF1aXJlZFByb3BzLCBjb25kaXRpb25hbFByb3BOYW1lLCBjb25kaXRpb24pIHtcbiAgICAgICAgd2FybkNvbmRpdGlvbmFsbHlSZXF1aXJlZFByb3BzKHRoaXMuY2xhc3NOYW1lLCB0aGlzLnByb3BzLCByZXF1aXJlZFByb3BzLCBjb25kaXRpb25hbFByb3BOYW1lLCBjb25kaXRpb24pO1xuICAgIH07XG4gICAgQmFzZUNvbXBvbmVudC5wcm90b3R5cGUuX3NldENvbXBvbmVudFJlZiA9IGZ1bmN0aW9uIChyZWYsIHZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy5fc2tpcENvbXBvbmVudFJlZlJlc29sdXRpb24gJiYgcmVmKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJlZih2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBCYXNlQ29tcG9uZW50O1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IEJhc2VDb21wb25lbnQgfTtcbi8qKlxuICogSGVscGVyIHRvIG92ZXJyaWRlIGEgZ2l2ZW4gbWV0aG9kIHdpdGggYSB3cmFwcGVyIG1ldGhvZCB0aGF0IGNhbiB0cnkvY2F0Y2ggdGhlIG9yaWdpbmFsLCBidXQgYWxzb1xuICogZW5zdXJlcyB0aGF0IHRoZSBCYXNlQ29tcG9uZW50J3MgbWV0aG9kcyBhcmUgY2FsbGVkIGJlZm9yZSB0aGUgc3ViY2xhc3Mncy4gVGhpcyBlbnN1cmVzIHRoYXRcbiAqIGNvbXBvbmVudFdpbGxVbm1vdW50IGluIHRoZSBiYXNlIGlzIGNhbGxlZCBhbmQgdGhhdCB0aGluZ3MgaW4gdGhlIF9kaXNwb3NhYmxlcyBhcnJheSBhcmUgZGlzcG9zZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuZnVuY3Rpb24gX21ha2VBbGxTYWZlKG9iaiwgcHJvdG90eXBlLCBtZXRob2ROYW1lcykge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtZXRob2ROYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBfbWFrZVNhZmUob2JqLCBwcm90b3R5cGUsIG1ldGhvZE5hbWVzW2ldKTtcbiAgICB9XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbmZ1bmN0aW9uIF9tYWtlU2FmZShvYmosIHByb3RvdHlwZSwgbWV0aG9kTmFtZSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICB2YXIgY2xhc3NNZXRob2QgPSBvYmpbbWV0aG9kTmFtZV07XG4gICAgdmFyIHByb3RvdHlwZU1ldGhvZCA9IHByb3RvdHlwZVttZXRob2ROYW1lXTtcbiAgICBpZiAoY2xhc3NNZXRob2QgfHwgcHJvdG90eXBlTWV0aG9kKSB7XG4gICAgICAgIG9ialttZXRob2ROYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuICAgICAgICAgICAgdmFyIHJldFZhbDtcbiAgICAgICAgICAgIGlmIChwcm90b3R5cGVNZXRob2QpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSBwcm90b3R5cGVNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2xhc3NNZXRob2QgIT09IHByb3RvdHlwZU1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IGNsYXNzTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgfTtcbiAgICB9XG59XG4vKipcbiAqIFNpbXBsZSBjb25zdGFudCBmdW5jdGlvbiBmb3IgcmV0dXJuaW5nIG51bGwsIHVzZWQgdG8gcmVuZGVyIGVtcHR5IHRlbXBsYXRlcyBpbiBKU1guXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbnVsbFJlbmRlcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VDb21wb25lbnQuanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICcuL2RvbS9nZXRXaW5kb3cnO1xuLyoqXG4gKiBVdGlsaXR5IGNvbXBvbmVudCBmb3IgZGVsYXlpbmcgdGhlIHJlbmRlciBvZiBhIGNoaWxkIGNvbXBvbmVudCBhZnRlciBhIGdpdmVuIGRlbGF5LiBUaGlzIGNvbXBvbmVudFxuICogcmVxdWlyZXMgYSBzaW5nbGUgY2hpbGQgY29tcG9uZW50OyBkb24ndCBwYXNzIGluIG1hbnkgY29tcG9uZW50cy4gV3JhcCBtdWx0aXBsZSBjb21wb25lbnRzIGluIGEgRElWXG4gKiBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHB1YmxpY1xuICoge0Bkb2NDYXRlZ29yeSBEZWxheWVkUmVuZGVyfVxuICovXG52YXIgRGVsYXllZFJlbmRlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRGVsYXllZFJlbmRlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEZWxheWVkUmVuZGVyKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzUmVuZGVyZWQ6IGdldFdpbmRvdygpID09PSB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRGVsYXllZFJlbmRlci5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBkZWxheSA9IHRoaXMucHJvcHMuZGVsYXk7XG4gICAgICAgIHRoaXMuX3RpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc1JlbmRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICB9O1xuICAgIERlbGF5ZWRSZW5kZXIucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fdGltZW91dElkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dElkKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRGVsYXllZFJlbmRlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1JlbmRlcmVkID8gUmVhY3QuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKSA6IG51bGw7XG4gICAgfTtcbiAgICBEZWxheWVkUmVuZGVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgZGVsYXk6IDAsXG4gICAgfTtcbiAgICByZXR1cm4gRGVsYXllZFJlbmRlcjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgeyBEZWxheWVkUmVuZGVyIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWxheWVkUmVuZGVyLmpzLm1hcCIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJy4vZG9tL2dldFdpbmRvdyc7XG4vKipcbiAqIFN0b3JpbmcgZ2xvYmFsIHN0YXRlIGluIGxvY2FsIG1vZHVsZSB2YXJpYWJsZXMgaGFzIGlzc3VlcyB3aGVuIG1vcmUgdGhhbiBvbmUgY29weVxuICogaWYgdGhlIG1vZHVsZSBnZXRzIGxvYWRlZCBvbiB0aGUgcGFnZSAoZHVlIHRvIGEgYnVuZGxpbmcgZXJyb3Igb3Igc2ltcGx5IGJ5IGNvbnN1bWluZ1xuICogYSBwcmVidW5kbGVkIHNjcmlwdC4pXG4gKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGhlbHBlcnMgdG8gZGVhbCB3aXRoIHRoZSBnZXR0aW5nIGFuZCBzZXR0aW5nIGxvY2FsIHN0YXRlLCBhbmQgYWxsb3dzXG4gKiBjYWxsZXJzIHRvIGdldCBjYWxsZWQgYmFjayB3aGVuIGl0IG11dGF0ZXMuXG4gKi9cbnZhciBHTE9CQUxfU0VUVElOR1NfUFJPUF9OQU1FID0gJ19fZ2xvYmFsU2V0dGluZ3NfXyc7XG52YXIgQ0FMTEJBQ0tfU1RBVEVfUFJPUF9OQU1FID0gJ19fY2FsbGJhY2tzX18nO1xudmFyIF9jb3VudGVyID0gMDtcbi8qKlxuICogR2xvYmFsIHNldHRpbmdzIGhlbHBlciwgd2hpY2ggc3RvcmVzIHNldHRpbmdzIGluIHRoZSBnbG9iYWwgKHdpbmRvdykgbmFtZXNwYWNlLlxuICogSWYgd2luZG93IGlzIG5vdCBwcm92aWRlZCwgaXQgd2lsbCBzdG9yZSBzZXR0aW5ncyBpbiBtb2R1bGUgc2NvcGUuIFByb3ZpZGVzIGFcbiAqIHdheSB0byBvYnNlcnZlIGNoYW5nZXMgYXMgd2VsbCB3aGVuIHRoZWlyIHZhbHVlcyBjaGFuZ2UuXG4gKlxuICogQHB1YmxpY1xuICoge0Bkb2NDYXRlZ29yeSBHbG9iYWxTZXR0aW5nc31cbiAqL1xudmFyIEdsb2JhbFNldHRpbmdzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEdsb2JhbFNldHRpbmdzKCkge1xuICAgIH1cbiAgICBHbG9iYWxTZXR0aW5ncy5nZXRWYWx1ZSA9IGZ1bmN0aW9uIChrZXksIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICB2YXIgZ2xvYmFsU2V0dGluZ3MgPSBfZ2V0R2xvYmFsU2V0dGluZ3MoKTtcbiAgICAgICAgaWYgKGdsb2JhbFNldHRpbmdzW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZ2xvYmFsU2V0dGluZ3Nba2V5XSA9IHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2xvYmFsU2V0dGluZ3Nba2V5XTtcbiAgICB9O1xuICAgIEdsb2JhbFNldHRpbmdzLnNldFZhbHVlID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIGdsb2JhbFNldHRpbmdzID0gX2dldEdsb2JhbFNldHRpbmdzKCk7XG4gICAgICAgIHZhciBjYWxsYmFja3MgPSBnbG9iYWxTZXR0aW5nc1tDQUxMQkFDS19TVEFURV9QUk9QX05BTUVdO1xuICAgICAgICB2YXIgb2xkVmFsdWUgPSBnbG9iYWxTZXR0aW5nc1trZXldO1xuICAgICAgICBpZiAodmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICBnbG9iYWxTZXR0aW5nc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB2YXIgY2hhbmdlRGVzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3IgKHZhciBpZCBpbiBjYWxsYmFja3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tzLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3NbaWRdKGNoYW5nZURlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgR2xvYmFsU2V0dGluZ3MuYWRkQ2hhbmdlTGlzdGVuZXIgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgLy8gTm90ZTogd2UgdXNlIGdlbmVyYXRlZCBpZHMgb24gdGhlIGNhbGxiYWNrcyB0byBjcmVhdGUgYSBtYXAgb2YgdGhlIGNhbGxiYWNrcywgd2hpY2ggb3B0aW1pemVzIHJlbW92YWwuXG4gICAgICAgIC8vIChJdCdzIGZhc3RlciB0byBkZWxldGUgYSBrZXkgdGhhbiBpdCBpcyB0byBsb29rIHVwIHRoZSBpbmRleCBvZiBhbiBvYmplY3QgYW5kIHNwbGljZSBhbiBhcnJheS4pXG4gICAgICAgIHZhciBpZCA9IGNiLl9faWRfXztcbiAgICAgICAgdmFyIGNhbGxiYWNrcyA9IF9nZXRDYWxsYmFja3MoKTtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgaWQgPSBjYi5fX2lkX18gPSBTdHJpbmcoX2NvdW50ZXIrKyk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2tzW2lkXSA9IGNiO1xuICAgIH07XG4gICAgR2xvYmFsU2V0dGluZ3MucmVtb3ZlQ2hhbmdlTGlzdGVuZXIgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrcyA9IF9nZXRDYWxsYmFja3MoKTtcbiAgICAgICAgZGVsZXRlIGNhbGxiYWNrc1tjYi5fX2lkX19dO1xuICAgIH07XG4gICAgcmV0dXJuIEdsb2JhbFNldHRpbmdzO1xufSgpKTtcbmV4cG9ydCB7IEdsb2JhbFNldHRpbmdzIH07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gX2dldEdsb2JhbFNldHRpbmdzKCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgd2luID0gZ2V0V2luZG93KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB2YXIgZ2xvYmFsT2JqID0gd2luIHx8IHt9O1xuICAgIGlmICghZ2xvYmFsT2JqW0dMT0JBTF9TRVRUSU5HU19QUk9QX05BTUVdKSB7XG4gICAgICAgIGdsb2JhbE9ialtHTE9CQUxfU0VUVElOR1NfUFJPUF9OQU1FXSA9IChfYSA9IHt9LFxuICAgICAgICAgICAgX2FbQ0FMTEJBQ0tfU1RBVEVfUFJPUF9OQU1FXSA9IHt9LFxuICAgICAgICAgICAgX2EpO1xuICAgIH1cbiAgICByZXR1cm4gZ2xvYmFsT2JqW0dMT0JBTF9TRVRUSU5HU19QUk9QX05BTUVdO1xufVxuZnVuY3Rpb24gX2dldENhbGxiYWNrcygpIHtcbiAgICB2YXIgZ2xvYmFsU2V0dGluZ3MgPSBfZ2V0R2xvYmFsU2V0dGluZ3MoKTtcbiAgICByZXR1cm4gZ2xvYmFsU2V0dGluZ3NbQ0FMTEJBQ0tfU1RBVEVfUFJPUF9OQU1FXTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdsb2JhbFNldHRpbmdzLmpzLm1hcCIsIi8qKlxuICogU2ltdWxhdGVkIGVudW0gZm9yIGtleWNvZGVzLiBUaGVzZSB3aWxsIGdldCBpbmxpbmVkIGJ5IHVnbGlmeSB3aGVuIHVzZWQgbXVjaCBsaWtlIGFuIGVudW1cbiAqXG4gKiBAcHVibGljXG4gKiB7QGRvY0NhdGVnb3J5IEtleUNvZGVzfVxuICovXG5leHBvcnQgdmFyIEtleUNvZGVzID0ge1xuICAgIGJhY2tzcGFjZTogOCxcbiAgICB0YWI6IDksXG4gICAgZW50ZXI6IDEzLFxuICAgIHNoaWZ0OiAxNixcbiAgICBjdHJsOiAxNyxcbiAgICBhbHQ6IDE4LFxuICAgIHBhdXNlQnJlYWs6IDE5LFxuICAgIGNhcHNsb2NrOiAyMCxcbiAgICBlc2NhcGU6IDI3LFxuICAgIHNwYWNlOiAzMixcbiAgICBwYWdlVXA6IDMzLFxuICAgIHBhZ2VEb3duOiAzNCxcbiAgICBlbmQ6IDM1LFxuICAgIGhvbWU6IDM2LFxuICAgIGxlZnQ6IDM3LFxuICAgIHVwOiAzOCxcbiAgICByaWdodDogMzksXG4gICAgZG93bjogNDAsXG4gICAgaW5zZXJ0OiA0NSxcbiAgICBkZWw6IDQ2LFxuICAgIHplcm86IDQ4LFxuICAgIG9uZTogNDksXG4gICAgdHdvOiA1MCxcbiAgICB0aHJlZTogNTEsXG4gICAgZm91cjogNTIsXG4gICAgZml2ZTogNTMsXG4gICAgc2l4OiA1NCxcbiAgICBzZXZlbjogNTUsXG4gICAgZWlnaHQ6IDU2LFxuICAgIG5pbmU6IDU3LFxuICAgIGNvbG9uOiA1OCxcbiAgICBhOiA2NSxcbiAgICBiOiA2NixcbiAgICBjOiA2NyxcbiAgICBkOiA2OCxcbiAgICBlOiA2OSxcbiAgICBmOiA3MCxcbiAgICBnOiA3MSxcbiAgICBoOiA3MixcbiAgICBpOiA3MyxcbiAgICBqOiA3NCxcbiAgICBrOiA3NSxcbiAgICBsOiA3NixcbiAgICBtOiA3NyxcbiAgICBuOiA3OCxcbiAgICBvOiA3OSxcbiAgICBwOiA4MCxcbiAgICBxOiA4MSxcbiAgICByOiA4MixcbiAgICBzOiA4MyxcbiAgICB0OiA4NCxcbiAgICB1OiA4NSxcbiAgICB2OiA4NixcbiAgICB3OiA4NyxcbiAgICB4OiA4OCxcbiAgICB5OiA4OSxcbiAgICB6OiA5MCxcbiAgICBsZWZ0V2luZG93OiA5MSxcbiAgICByaWdodFdpbmRvdzogOTIsXG4gICAgc2VsZWN0OiA5MyxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbiAgICB6ZXJvX251bXBhZDogOTYsXG4gICAgb25lX251bXBhZDogOTcsXG4gICAgdHdvX251bXBhZDogOTgsXG4gICAgdGhyZWVfbnVtcGFkOiA5OSxcbiAgICBmb3VyX251bXBhZDogMTAwLFxuICAgIGZpdmVfbnVtcGFkOiAxMDEsXG4gICAgc2l4X251bXBhZDogMTAyLFxuICAgIHNldmVuX251bXBhZDogMTAzLFxuICAgIGVpZ2h0X251bXBhZDogMTA0LFxuICAgIG5pbmVfbnVtcGFkOiAxMDUsXG4gICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbiAgICBtdWx0aXBseTogMTA2LFxuICAgIGFkZDogMTA3LFxuICAgIHN1YnRyYWN0OiAxMDksXG4gICAgZGVjaW1hbFBvaW50OiAxMTAsXG4gICAgZGl2aWRlOiAxMTEsXG4gICAgZjE6IDExMixcbiAgICBmMjogMTEzLFxuICAgIGYzOiAxMTQsXG4gICAgZjQ6IDExNSxcbiAgICBmNTogMTE2LFxuICAgIGY2OiAxMTcsXG4gICAgZjc6IDExOCxcbiAgICBmODogMTE5LFxuICAgIGY5OiAxMjAsXG4gICAgZjEwOiAxMjEsXG4gICAgZjExOiAxMjIsXG4gICAgZjEyOiAxMjMsXG4gICAgbnVtbG9jazogMTQ0LFxuICAgIHNjcm9sbExvY2s6IDE0NSxcbiAgICBzZW1pY29sb246IDE4NixcbiAgICBlcXVhbFNpZ246IDE4NyxcbiAgICBjb21tYTogMTg4LFxuICAgIGRhc2g6IDE4OSxcbiAgICBwZXJpb2Q6IDE5MCxcbiAgICBmb3J3YXJkU2xhc2g6IDE5MSxcbiAgICBncmF2ZUFjY2VudDogMTkyLFxuICAgIG9wZW5CcmFja2V0OiAyMTksXG4gICAgYmFja1NsYXNoOiAyMjAsXG4gICAgY2xvc2VCcmFja2V0OiAyMjEsXG4gICAgc2luZ2xlUXVvdGU6IDIyMixcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1LZXlDb2Rlcy5qcy5tYXAiLCIvKipcbiAqIFJlY3RhbmdsZSBoZWxwZXIgY2xhc3MuXG4gKlxuICogQHB1YmxpY1xuICoge0Bkb2NDYXRlZ29yeSBSZWN0YW5nbGV9XG4gKi9cbnZhciBSZWN0YW5nbGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVjdGFuZ2xlKGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSkge1xuICAgICAgICBpZiAobGVmdCA9PT0gdm9pZCAwKSB7IGxlZnQgPSAwOyB9XG4gICAgICAgIGlmIChyaWdodCA9PT0gdm9pZCAwKSB7IHJpZ2h0ID0gMDsgfVxuICAgICAgICBpZiAodG9wID09PSB2b2lkIDApIHsgdG9wID0gMDsgfVxuICAgICAgICBpZiAoYm90dG9tID09PSB2b2lkIDApIHsgYm90dG9tID0gMDsgfVxuICAgICAgICB0aGlzLnRvcCA9IHRvcDtcbiAgICAgICAgdGhpcy5ib3R0b20gPSBib3R0b207XG4gICAgICAgIHRoaXMubGVmdCA9IGxlZnQ7XG4gICAgICAgIHRoaXMucmlnaHQgPSByaWdodDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlY3RhbmdsZS5wcm90b3R5cGUsIFwid2lkdGhcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHN1YnRyYWN0aW5nIHRoZSByaWdodCBmcm9tIGxlZnRcbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmlnaHQgLSB0aGlzLmxlZnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVjdGFuZ2xlLnByb3RvdHlwZSwgXCJoZWlnaHRcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHN1YnRyYWN0aW5nIHRoZSBib3R0b20gZnJvbSB0b3AuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJvdHRvbSAtIHRoaXMudG9wO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgLyoqXG4gICAgICogVGVzdHMgaWYgYW5vdGhlciByZWN0IGlzIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gdGhpcyByZWN0ICh3aXRoaW4gNCBkZWNpbWFsIHBsYWNlcy4pXG4gICAgICovXG4gICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAocmVjdCkge1xuICAgICAgICAvLyBGaXhpbmcgdG8gNCBkZWNpbWFsIHBsYWNlcyBiZWNhdXNlIGl0IGFsbG93cyBlbm91Z2ggcHJlY2lzaW9uIGFuZCB3aWxsIGhhbmRsZSBjYXNlcyB3aGVuIHNvbWV0aGluZ1xuICAgICAgICAvLyBzaG91bGQgYmUgcm91bmRlZCwgbGlrZSAuOTk5OTk5IHNob3VsZCByb3VuZCB0byAxLlxuICAgICAgICByZXR1cm4gKHBhcnNlRmxvYXQodGhpcy50b3AudG9GaXhlZCg0KSkgPT09IHBhcnNlRmxvYXQocmVjdC50b3AudG9GaXhlZCg0KSkgJiZcbiAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5ib3R0b20udG9GaXhlZCg0KSkgPT09IHBhcnNlRmxvYXQocmVjdC5ib3R0b20udG9GaXhlZCg0KSkgJiZcbiAgICAgICAgICAgIHBhcnNlRmxvYXQodGhpcy5sZWZ0LnRvRml4ZWQoNCkpID09PSBwYXJzZUZsb2F0KHJlY3QubGVmdC50b0ZpeGVkKDQpKSAmJlxuICAgICAgICAgICAgcGFyc2VGbG9hdCh0aGlzLnJpZ2h0LnRvRml4ZWQoNCkpID09PSBwYXJzZUZsb2F0KHJlY3QucmlnaHQudG9GaXhlZCg0KSkpO1xuICAgIH07XG4gICAgcmV0dXJuIFJlY3RhbmdsZTtcbn0oKSk7XG5leHBvcnQgeyBSZWN0YW5nbGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlY3RhbmdsZS5qcy5tYXAiLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKipcbiAqIFJldHVybnMgYSBzaW5nbGUgZnVuY3Rpb24gd2hpY2ggd2lsbCBjYWxsIGVhY2ggb2YgdGhlIGdpdmVuIGZ1bmN0aW9ucyBpbiB0aGUgY29udGV4dCBvZiB0aGVcbiAqIHBhcmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZEZ1bmN0aW9uKHBhcmVudCkge1xuICAgIHZhciBmdW5jdGlvbnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBmdW5jdGlvbnNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChmdW5jdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb25zWzBdO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmICYmIGYuYXBwbHkocGFyZW50LCBhcmdzKTsgfSk7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcGVuZEZ1bmN0aW9uLmpzLm1hcCIsIi8qKlxuICogQVJJQSBoZWxwZXIgdG8gY29uY2F0ZW5hdGUgYXR0cmlidXRlcywgcmV0dXJuaW5nIHVuZGVmaW5lZCBpZiBhbGwgYXR0cmlidXRlc1xuICogYXJlIHVuZGVmaW5lZC4gKEVtcHR5IHN0cmluZ3MgYXJlIG5vdCBhIHZhbGlkIEFSSUEgYXR0cmlidXRlIHZhbHVlLilcbiAqXG4gKiBAcGFyYW0gYXJpYUF0dHJpYnV0ZXMgLSBBUklBIGF0dHJpYnV0ZXMgdG8gbWVyZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQXJpYUF0dHJpYnV0ZVZhbHVlcygpIHtcbiAgICB2YXIgYXJpYUF0dHJpYnV0ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmlhQXR0cmlidXRlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgbWVyZ2VkQXR0cmlidXRlID0gYXJpYUF0dHJpYnV0ZXNcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoYXJnKSB7IHJldHVybiBhcmc7IH0pXG4gICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgLnRyaW0oKTtcbiAgICByZXR1cm4gbWVyZ2VkQXR0cmlidXRlID09PSAnJyA/IHVuZGVmaW5lZCA6IG1lcmdlZEF0dHJpYnV0ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFyaWEuanMubWFwIiwiLyoqXG4gKiBIZWxwZXIgdG8gZmluZCB0aGUgaW5kZXggb2YgYW4gaXRlbSB3aXRoaW4gYW4gYXJyYXksIHVzaW5nIGEgY2FsbGJhY2sgdG9cbiAqIGRldGVybWluZSB0aGUgbWF0Y2guXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIGFycmF5IC0gQXJyYXkgdG8gc2VhcmNoLlxuICogQHBhcmFtIGNiIC0gQ2FsbGJhY2sgd2hpY2ggcmV0dXJucyB0cnVlIG9uIG1hdGNoZXMuXG4gKiBAcGFyYW0gZnJvbUluZGV4IC0gT3B0aW9uYWwgaW5kZXggdG8gc3RhcnQgZnJvbSAoZGVmYXVsdHMgdG8gMClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgY2IsIGZyb21JbmRleCkge1xuICAgIGlmIChmcm9tSW5kZXggPT09IHZvaWQgMCkgeyBmcm9tSW5kZXggPSAwOyB9XG4gICAgdmFyIGluZGV4ID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IGZyb21JbmRleDsgYXJyYXkgJiYgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjYihhcnJheVtpXSwgaSkpIHtcbiAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbn1cbi8qKlxuICogSGVscGVyIHRvIGZpbmQgdGhlIGZpcnN0IGl0ZW0gd2l0aGluIGFuIGFycmF5IHRoYXQgc2F0aXNmaWVzIHRoZSBjYWxsYmFjay5cbiAqIEBwYXJhbSBhcnJheSAtIEFycmF5IHRvIHNlYXJjaFxuICogQHBhcmFtIGNiIC0gQ2FsbGJhY2sgd2hpY2ggcmV0dXJucyB0cnVlIG9uIG1hdGNoZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmQoYXJyYXksIGNiKSB7XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4KGFycmF5LCBjYik7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlbaW5kZXhdO1xufVxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIGEgZ2l2ZW4gc2l6ZSBhbmQgaGVscGVyIG1ldGhvZCB0byBwb3B1bGF0ZS5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gc2l6ZSAtIFNpemUgb2YgYXJyYXkuXG4gKiBAcGFyYW0gZ2V0SXRlbSAtIENhbGxiYWNrIHRvIHBvcHVsYXRlIGdpdmVuIGNlbGwgaW5kZXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBcnJheShzaXplLCBnZXRJdGVtKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgYXJyYXkucHVzaChnZXRJdGVtKGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuLyoqXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcnJheSB0byBhIG1hdHJpeCB3aXRoIGNvbHVtbkNvdW50IG51bWJlclxuICogb2YgY29sdW1ucy5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gaXRlbXMgLSBUaGUgYXJyYXkgdG8gY29udmVydFxuICogQHBhcmFtIGNvbHVtbkNvdW50IC0gVGhlIG51bWJlciBvZiBjb2x1bW5zIGZvciB0aGUgcmVzdWx0aW5nIG1hdHJpeFxuICogQHJldHVybnMgQSBtYXRyaXggb2YgaXRlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTWF0cml4KGl0ZW1zLCBjb2x1bW5Db3VudCkge1xuICAgIHJldHVybiBpdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJvd3MsIGN1cnJlbnRWYWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGluZGV4ICUgY29sdW1uQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHJvd3MucHVzaChbY3VycmVudFZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByb3dzW3Jvd3MubGVuZ3RoIC0gMV0ucHVzaChjdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dzO1xuICAgIH0sIFtdKTtcbn1cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXksIGl0IHJldHVybnMgYSBuZXcgYXJyYXkgdGhhdCBkb2VzIG5vdCBjb250YWluIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byBvcGVyYXRlIG9uXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVJbmRleChhcnJheSwgaW5kZXgpIHtcbiAgICByZXR1cm4gYXJyYXkuZmlsdGVyKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBpbmRleCAhPT0gaTsgfSk7XG59XG4vKipcbiAqIEdpdmVuIGFuIGFycmF5LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgYXJyYXkgd2hlcmUgdGhlIGVsZW1lbnQgYXQgYSBnaXZlbiBpbmRleCBoYXMgYmVlbiByZXBsYWNlZC5cbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byBvcGVyYXRlIG9uXG4gKiBAcGFyYW0gbmV3RWxlbWVudCAtIFRoZSBlbGVtZW50IHRoYXQgd2lsbCBiZSBwbGFjZWQgaW4gdGhlIG5ldyBhcnJheVxuICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIHJlcGxhY2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlRWxlbWVudChhcnJheSwgbmV3RWxlbWVudCwgaW5kZXgpIHtcbiAgICB2YXIgY29weSA9IGFycmF5LnNsaWNlKCk7XG4gICAgY29weVtpbmRleF0gPSBuZXdFbGVtZW50O1xuICAgIHJldHVybiBjb3B5O1xufVxuLyoqXG4gKiBHaXZlbiBhbiBhcnJheSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgbmV3IGFycmF5IHdoZXJlIGFuIGVsZW1lbnQgaGFzIGJlZW4gaW5zZXJ0ZWQgYXQgdGhlIGdpdmVuIGluZGV4LlxuICogQHBhcmFtIGFycmF5IC0gVGhlIGFycmF5IHRvIG9wZXJhdGUgb25cbiAqIEBwYXJhbSBpbmRleCAtIFRoZSBpbmRleCB3aGVyZSBhbiBlbGVtZW50IHNob3VsZCBiZSBpbnNlcnRlZFxuICogQHBhcmFtIGl0ZW1Ub0FkZCAtIFRoZSBlbGVtZW50IHRvIGluc2VydFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRWxlbWVudEF0SW5kZXgoYXJyYXksIGluZGV4LCBpdGVtVG9BZGQpIHtcbiAgICB2YXIgY29weSA9IGFycmF5LnNsaWNlKCk7XG4gICAgY29weS5zcGxpY2UoaW5kZXgsIDAsIGl0ZW1Ub0FkZCk7XG4gICAgcmV0dXJuIGNvcHk7XG59XG4vKipcbiAqIEdpdmVuIGFuIGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudCBpcyBvZiB0eXBlIFQgb3IgVFtdLCBmbGF0dGVuIGl0IGludG8gYW4gYXJyYXkgb2YgVFxuICogQHBhcmFtIGFycmF5IC0gVGhlIGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudCBjYW4gb3B0aW9uYWxseSBhbHNvIGJlIGFuIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKGFycmF5KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIChyZXN1bHQgPSByZXN1bHQuY29uY2F0KGl0ZW0pKTsgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgdHdvIGdpdmVuIGFycmF5cyBhcmUgZXF1YWwgaW4gbGVuZ3RoIGFuZCB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIGFycmF5MSAtIEZpcnN0IGFycmF5IHRvIGNvbXBhcmVcbiAqIEBwYXJhbSBhcnJheTIgLSBTZWNvbmQgYXJyYXkgdG8gY29tcGFyZVxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYXJyYXlzIGFyZSB0aGUgc2FtZSBsZW5ndGggYW5kIGhhdmUgdGhlIHNhbWUgdmFsdWVzIGluIHRoZSBzYW1lIHBvc2l0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlzRXF1YWwoYXJyYXkxLCBhcnJheTIpIHtcbiAgICBpZiAoYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJheTFbaV0gIT09IGFycmF5MltpXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXJyYXkuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93Jztcbi8qKlxuICogRmV0Y2hlcyBhbiBpdGVtIGZyb20gc2Vzc2lvbiBzdG9yYWdlIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uXG4gKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIGl0ZW0gdG8gZmV0Y2ggZnJvbSBzZXNzaW9uIHN0b3JhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEl0ZW0oa2V5KSB7XG4gICAgdmFyIHJlc3VsdCA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdygpO1xuICAgICAgICByZXN1bHQgPSB3aW4gPyB3aW4uc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpIDogbnVsbDtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogRWF0IHRoZSBleGNlcHRpb24gKi9cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogSW5zZXJ0cyBhbiBpdGVtIGludG8gc2Vzc2lvbiBzdG9yYWdlIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXhjZXB0aW9uXG4gKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIGl0ZW0gdG8gYWRkIHRvIHNlc3Npb24gc3RvcmFnZVxuICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gcHV0IGludG8gc2Vzc2lvbiBzdG9yYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJdGVtKGtleSwgZGF0YSkge1xuICAgIHZhciBfYTtcbiAgICB0cnkge1xuICAgICAgICAoX2EgPSBnZXRXaW5kb3coKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogRWF0IHRoZSBleGNlcHRpb24gKi9cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXNzaW9uU3RvcmFnZS5qcy5tYXAiLCJpbXBvcnQgeyBLZXlDb2RlcyB9IGZyb20gJy4vS2V5Q29kZXMnO1xuaW1wb3J0IHsgZ2V0RG9jdW1lbnQgfSBmcm9tICcuL2RvbS9nZXREb2N1bWVudCc7XG5pbXBvcnQgeyBnZXRJdGVtLCBzZXRJdGVtIH0gZnJvbSAnLi9zZXNzaW9uU3RvcmFnZSc7XG5pbXBvcnQgeyBzZXRSVEwgYXMgbWVyZ2VTdHlsZXNTZXRSVEwgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbnZhciBSVExfTE9DQUxfU1RPUkFHRV9LRVkgPSAnaXNSVEwnO1xuLy8gRGVmYXVsdCB0byB1bmRlZmluZWQgc28gdGhhdCB3ZSBpbml0aWFsaXplIG9uIGZpcnN0IHJlYWQuXG52YXIgX2lzUlRMO1xuLyoqXG4gKiBHZXRzIHRoZSBydGwgc3RhdGUgb2YgdGhlIHBhZ2UgKHJldHVybnMgdHJ1ZSBpZiBpbiBydGwuKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UlRMKHRoZW1lKSB7XG4gICAgaWYgKHRoZW1lID09PSB2b2lkIDApIHsgdGhlbWUgPSB7fTsgfVxuICAgIGlmICh0aGVtZS5ydGwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdGhlbWUucnRsO1xuICAgIH1cbiAgICBpZiAoX2lzUlRMID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gRmFicmljIHN1cHBvcnRzIHBlcnNpc3RpbmcgdGhlIFJUTCBzZXR0aW5nIGJldHdlZW4gcGFnZSByZWZyZXNoZXMgdmlhIHNlc3Npb24gc3RvcmFnZVxuICAgICAgICB2YXIgc2F2ZWRSVEwgPSBnZXRJdGVtKFJUTF9MT0NBTF9TVE9SQUdFX0tFWSk7XG4gICAgICAgIGlmIChzYXZlZFJUTCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgX2lzUlRMID0gc2F2ZWRSVEwgPT09ICcxJztcbiAgICAgICAgICAgIHNldFJUTChfaXNSVEwpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudCgpO1xuICAgICAgICBpZiAoX2lzUlRMID09PSB1bmRlZmluZWQgJiYgZG9jKSB7XG4gICAgICAgICAgICBfaXNSVEwgPSAoKGRvYy5ib2R5ICYmIGRvYy5ib2R5LmdldEF0dHJpYnV0ZSgnZGlyJykpIHx8IGRvYy5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXInKSkgPT09ICdydGwnO1xuICAgICAgICAgICAgbWVyZ2VTdHlsZXNTZXRSVEwoX2lzUlRMKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gISFfaXNSVEw7XG59XG4vKipcbiAqIFNldHMgdGhlIHJ0bCBzdGF0ZSBvZiB0aGUgcGFnZSAoYnkgYWRqdXN0aW5nIHRoZSBkaXIgYXR0cmlidXRlIG9mIHRoZSBodG1sIGVsZW1lbnQuKVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UlRMKGlzUlRMLCBwZXJzaXN0U2V0dGluZykge1xuICAgIGlmIChwZXJzaXN0U2V0dGluZyA9PT0gdm9pZCAwKSB7IHBlcnNpc3RTZXR0aW5nID0gZmFsc2U7IH1cbiAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdkaXInLCBpc1JUTCA/ICdydGwnIDogJ2x0cicpO1xuICAgIH1cbiAgICBpZiAocGVyc2lzdFNldHRpbmcpIHtcbiAgICAgICAgc2V0SXRlbShSVExfTE9DQUxfU1RPUkFHRV9LRVksIGlzUlRMID8gJzEnIDogJzAnKTtcbiAgICB9XG4gICAgX2lzUlRMID0gaXNSVEw7XG4gICAgbWVyZ2VTdHlsZXNTZXRSVEwoX2lzUlRMKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZ2l2ZW4ga2V5LCBidXQgZmxpcHMgcmlnaHQvbGVmdCBhcnJvd3MgaWYgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UlRMU2FmZUtleUNvZGUoa2V5LCB0aGVtZSkge1xuICAgIGlmICh0aGVtZSA9PT0gdm9pZCAwKSB7IHRoZW1lID0ge307IH1cbiAgICBpZiAoZ2V0UlRMKHRoZW1lKSkge1xuICAgICAgICBpZiAoa2V5ID09PSBLZXlDb2Rlcy5sZWZ0KSB7XG4gICAgICAgICAgICBrZXkgPSBLZXlDb2Rlcy5yaWdodDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChrZXkgPT09IEtleUNvZGVzLnJpZ2h0KSB7XG4gICAgICAgICAgICBrZXkgPSBLZXlDb2Rlcy5sZWZ0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ydGwuanMubWFwIiwiLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaGFzIHRoZSB2aXJ0dWFsIGhpZXJhcmNoeSBleHRlbnNpb24uXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWaXJ0dWFsRWxlbWVudChlbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQgJiYgISFlbGVtZW50Ll92aXJ0dWFsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aXNWaXJ0dWFsRWxlbWVudC5qcy5tYXAiLCJpbXBvcnQgeyBpc1ZpcnR1YWxFbGVtZW50IH0gZnJvbSAnLi9pc1ZpcnR1YWxFbGVtZW50Jztcbi8qKlxuICogR2V0cyB0aGUgdmlydHVhbCBwYXJlbnQgZ2l2ZW4gdGhlIGNoaWxkIGVsZW1lbnQsIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXJ0dWFsUGFyZW50KGNoaWxkKSB7XG4gICAgdmFyIHBhcmVudDtcbiAgICBpZiAoY2hpbGQgJiYgaXNWaXJ0dWFsRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgcGFyZW50ID0gY2hpbGQuX3ZpcnR1YWwucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0VmlydHVhbFBhcmVudC5qcy5tYXAiLCJpbXBvcnQgeyBnZXRWaXJ0dWFsUGFyZW50IH0gZnJvbSAnLi9nZXRWaXJ0dWFsUGFyZW50Jztcbi8qKlxuICogR2V0cyB0aGUgZWxlbWVudCB3aGljaCBpcyB0aGUgcGFyZW50IG9mIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIElmIGBhbGxvd1ZpcnR1YVBhcmVudHNgIGlzIGB0cnVlYCwgdGhpcyBtZXRob2QgcHJlZmVycyB0aGUgdmlydHVhbCBwYXJlbnQgb3ZlclxuICogcmVhbCBET00gcGFyZW50IHdoZW4gcHJlc2VudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJlbnQoY2hpbGQsIGFsbG93VmlydHVhbFBhcmVudHMpIHtcbiAgICBpZiAoYWxsb3dWaXJ0dWFsUGFyZW50cyA9PT0gdm9pZCAwKSB7IGFsbG93VmlydHVhbFBhcmVudHMgPSB0cnVlOyB9XG4gICAgcmV0dXJuIChjaGlsZCAmJlxuICAgICAgICAoKGFsbG93VmlydHVhbFBhcmVudHMgJiYgZ2V0VmlydHVhbFBhcmVudChjaGlsZCkpIHx8IChjaGlsZC5wYXJlbnROb2RlICYmIGNoaWxkLnBhcmVudE5vZGUpKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRQYXJlbnQuanMubWFwIiwiaW1wb3J0IHsgZ2V0UGFyZW50IH0gZnJvbSAnLi9nZXRQYXJlbnQnO1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGEgcGFyZW50IGVsZW1lbnQgY29udGFpbnMgYSBnaXZlbiBjaGlsZCBlbGVtZW50LlxuICogSWYgYGFsbG93VmlydHVhbFBhcmVudHNgIGlzIHRydWUsIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gYHRydWVgIGlmIHRoZSBjaGlsZFxuICogaGFzIHRoZSBwYXJlbnQgaW4gaXRzIHZpcnR1YWwgZWxlbWVudCBoaWVyYXJjaHkuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudENvbnRhaW5zKHBhcmVudCwgY2hpbGQsIGFsbG93VmlydHVhbFBhcmVudHMpIHtcbiAgICBpZiAoYWxsb3dWaXJ0dWFsUGFyZW50cyA9PT0gdm9pZCAwKSB7IGFsbG93VmlydHVhbFBhcmVudHMgPSB0cnVlOyB9XG4gICAgdmFyIGlzQ29udGFpbmVkID0gZmFsc2U7XG4gICAgaWYgKHBhcmVudCAmJiBjaGlsZCkge1xuICAgICAgICBpZiAoYWxsb3dWaXJ0dWFsUGFyZW50cykge1xuICAgICAgICAgICAgaWYgKHBhcmVudCA9PT0gY2hpbGQpIHtcbiAgICAgICAgICAgICAgICBpc0NvbnRhaW5lZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc0NvbnRhaW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFBhcmVudCA9IGdldFBhcmVudChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0UGFyZW50ID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29udGFpbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkID0gbmV4dFBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFyZW50LmNvbnRhaW5zKSB7XG4gICAgICAgICAgICBpc0NvbnRhaW5lZCA9IHBhcmVudC5jb250YWlucyhjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzQ29udGFpbmVkO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZWxlbWVudENvbnRhaW5zLmpzLm1hcCIsImltcG9ydCB7IGdldFBhcmVudCB9IGZyb20gJy4vZ2V0UGFyZW50Jztcbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHBhcmVudCBlbGVtZW50IHdoZXJlIHRoZSBtYXRjaEZ1bmN0aW9uIHJldHVybnMgdHJ1ZVxuICogQHBhcmFtIGVsZW1lbnQgLSBlbGVtZW50IHRvIHN0YXJ0IHNlYXJjaGluZyBhdFxuICogQHBhcmFtIG1hdGNoRnVuY3Rpb24gLSB0aGUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBlbGVtZW50IGlzIGEgbWF0Y2hcbiAqIEByZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQgb3IgbnVsbCBubyBtYXRjaCB3YXMgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRFbGVtZW50UmVjdXJzaXZlKGVsZW1lbnQsIG1hdGNoRnVuY3Rpb24pIHtcbiAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoRnVuY3Rpb24oZWxlbWVudCkgPyBlbGVtZW50IDogZmluZEVsZW1lbnRSZWN1cnNpdmUoZ2V0UGFyZW50KGVsZW1lbnQpLCBtYXRjaEZ1bmN0aW9uKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZpbmRFbGVtZW50UmVjdXJzaXZlLmpzLm1hcCIsImltcG9ydCB7IGZpbmRFbGVtZW50UmVjdXJzaXZlIH0gZnJvbSAnLi9maW5kRWxlbWVudFJlY3Vyc2l2ZSc7XG4vKipcbiAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCwgb3IgYW55IG9mIGl0cyBhbmNlc3RvcnMsIGNvbnRhaW4gdGhlIGdpdmVuIGF0dHJpYnV0ZVxuICogQHBhcmFtIGVsZW1lbnQgLSBlbGVtZW50IHRvIHN0YXJ0IHNlYXJjaGluZyBhdFxuICogQHBhcmFtIGF0dHJpYnV0ZSAtIHRoZSBhdHRyaWJ1dGUgdG8gc2VhcmNoIGZvclxuICogQHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnN0YW5jZSBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudENvbnRhaW5zQXR0cmlidXRlKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgIHZhciBlbGVtZW50TWF0Y2ggPSBmaW5kRWxlbWVudFJlY3Vyc2l2ZShlbGVtZW50LCBmdW5jdGlvbiAodGVzdEVsZW1lbnQpIHsgcmV0dXJuIHRlc3RFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9KTtcbiAgICByZXR1cm4gZWxlbWVudE1hdGNoICYmIGVsZW1lbnRNYXRjaC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVsZW1lbnRDb250YWluc0F0dHJpYnV0ZS5qcy5tYXAiLCJleHBvcnQgdmFyIERBVEFfUE9SVEFMX0FUVFJJQlVURSA9ICdkYXRhLXBvcnRhbC1lbGVtZW50Jztcbi8qKlxuICogSWRlbnRpZnkgZWxlbWVudCBhcyBhIHBvcnRhbCBieSBzZXR0aW5nIGFuIGF0dHJpYnV0ZS5cbiAqIEBwYXJhbSBlbGVtZW50IC0gRWxlbWVudCB0byBtYXJrIGFzIGEgcG9ydGFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UG9ydGFsQXR0cmlidXRlKGVsZW1lbnQpIHtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShEQVRBX1BPUlRBTF9BVFRSSUJVVEUsICd0cnVlJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXRQb3J0YWxBdHRyaWJ1dGUuanMubWFwIiwiaW1wb3J0IHsgZmluZEVsZW1lbnRSZWN1cnNpdmUgfSBmcm9tICcuL2ZpbmRFbGVtZW50UmVjdXJzaXZlJztcbmltcG9ydCB7IERBVEFfUE9SVEFMX0FUVFJJQlVURSB9IGZyb20gJy4vc2V0UG9ydGFsQXR0cmlidXRlJztcbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgYSB0YXJnZXQgaXMgd2l0aGluIGEgcG9ydGFsIGZyb20gcGVyc3BlY3RpdmUgb2Ygcm9vdCBvciBvcHRpb25hbCBwYXJlbnQuXG4gKiBUaGlzIGZ1bmN0aW9uIG9ubHkgd29ya3MgYWdhaW5zdCBwb3J0YWwgY29tcG9uZW50cyB0aGF0IHVzZSB0aGUgc2V0UG9ydGFsQXR0cmlidXRlIGZ1bmN0aW9uLlxuICogSWYgYm90aCBwYXJlbnQgYW5kIGNoaWxkIGFyZSB3aXRoaW4gdGhlIHNhbWUgcG9ydGFsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UuXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRWxlbWVudCB0byBxdWVyeSBwb3J0YWwgY29udGFpbm1lbnQgc3RhdHVzIG9mLlxuICogQHBhcmFtIHBhcmVudCAtIE9wdGlvbmFsIHBhcmVudCBwZXJzcGVjdGl2ZS4gU2VhcmNoIGZvciBjb250YWluaW5nIHBvcnRhbCBzdG9wcyBhdCBwYXJlbnRcbiAqIChvciByb290IGlmIHBhcmVudCBpcyB1bmRlZmluZWQgb3IgaW52YWxpZC4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb3J0YWxDb250YWluc0VsZW1lbnQodGFyZ2V0LCBwYXJlbnQpIHtcbiAgICB2YXIgZWxlbWVudE1hdGNoID0gZmluZEVsZW1lbnRSZWN1cnNpdmUodGFyZ2V0LCBmdW5jdGlvbiAodGVzdEVsZW1lbnQpIHsgcmV0dXJuIHBhcmVudCA9PT0gdGVzdEVsZW1lbnQgfHwgdGVzdEVsZW1lbnQuaGFzQXR0cmlidXRlKERBVEFfUE9SVEFMX0FUVFJJQlVURSk7IH0pO1xuICAgIHJldHVybiBlbGVtZW50TWF0Y2ggIT09IG51bGwgJiYgZWxlbWVudE1hdGNoLmhhc0F0dHJpYnV0ZShEQVRBX1BPUlRBTF9BVFRSSUJVVEUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9ydGFsQ29udGFpbnNFbGVtZW50LmpzLm1hcCIsIi8qKlxuICogU2V0cyB0aGUgdmlydHVhbCBwYXJlbnQgb2YgYW4gZWxlbWVudC5cbiAqIFBhc3MgYHVuZGVmaW5lZGAgYXMgdGhlIGBwYXJlbnRgIHRvIGNsZWFyIHRoZSB2aXJ0dWFsIHBhcmVudC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRWaXJ0dWFsUGFyZW50KGNoaWxkLCBwYXJlbnQpIHtcbiAgICB2YXIgdmlydHVhbENoaWxkID0gY2hpbGQ7XG4gICAgdmFyIHZpcnR1YWxQYXJlbnQgPSBwYXJlbnQ7XG4gICAgaWYgKCF2aXJ0dWFsQ2hpbGQuX3ZpcnR1YWwpIHtcbiAgICAgICAgdmlydHVhbENoaWxkLl92aXJ0dWFsID0ge1xuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgb2xkUGFyZW50ID0gdmlydHVhbENoaWxkLl92aXJ0dWFsLnBhcmVudDtcbiAgICBpZiAob2xkUGFyZW50ICYmIG9sZFBhcmVudCAhPT0gcGFyZW50KSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgY2hpbGQgZnJvbSBpdHMgb2xkIHBhcmVudC5cbiAgICAgICAgdmFyIGluZGV4ID0gb2xkUGFyZW50Ll92aXJ0dWFsLmNoaWxkcmVuLmluZGV4T2YodmlydHVhbENoaWxkKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIG9sZFBhcmVudC5fdmlydHVhbC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZpcnR1YWxDaGlsZC5fdmlydHVhbC5wYXJlbnQgPSB2aXJ0dWFsUGFyZW50IHx8IHVuZGVmaW5lZDtcbiAgICBpZiAodmlydHVhbFBhcmVudCkge1xuICAgICAgICBpZiAoIXZpcnR1YWxQYXJlbnQuX3ZpcnR1YWwpIHtcbiAgICAgICAgICAgIHZpcnR1YWxQYXJlbnQuX3ZpcnR1YWwgPSB7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2aXJ0dWFsUGFyZW50Ll92aXJ0dWFsLmNoaWxkcmVuLnB1c2godmlydHVhbENoaWxkKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZXRWaXJ0dWFsUGFyZW50LmpzLm1hcCIsImltcG9ydCB7IGVsZW1lbnRDb250YWluc0F0dHJpYnV0ZSB9IGZyb20gJy4vZG9tL2VsZW1lbnRDb250YWluc0F0dHJpYnV0ZSc7XG5pbXBvcnQgeyBlbGVtZW50Q29udGFpbnMgfSBmcm9tICcuL2RvbS9lbGVtZW50Q29udGFpbnMnO1xuaW1wb3J0IHsgZ2V0UGFyZW50IH0gZnJvbSAnLi9kb20vZ2V0UGFyZW50JztcbmltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJy4vZG9tL2dldFdpbmRvdyc7XG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJy4vZG9tL2dldERvY3VtZW50JztcbnZhciBJU19GT0NVU0FCTEVfQVRUUklCVVRFID0gJ2RhdGEtaXMtZm9jdXNhYmxlJztcbnZhciBJU19WSVNJQkxFX0FUVFJJQlVURSA9ICdkYXRhLWlzLXZpc2libGUnO1xudmFyIEZPQ1VTWk9ORV9JRF9BVFRSSUJVVEUgPSAnZGF0YS1mb2N1c3pvbmUtaWQnO1xudmFyIEZPQ1VTWk9ORV9TVUJfQVRUUklCVVRFID0gJ2RhdGEtaXMtc3ViLWZvY3Vzem9uZSc7XG4vKipcbiAqIEdldHMgdGhlIGZpcnN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0Rm9jdXNhYmxlKHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzKSB7XG4gICAgcmV0dXJuIGdldE5leHRFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgdHJ1ZSAvKmNoZWNrTm9kZSovLCBmYWxzZSAvKnN1cHByZXNzUGFyZW50VHJhdmVyc2FsKi8sIGZhbHNlIC8qc3VwcHJlc3NDaGlsZFRyYXZlcnNhbCovLCBpbmNsdWRlRWxlbWVudHNJbkZvY3VzWm9uZXMpO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBsYXN0IGZvY3VzYWJsZSBlbGVtZW50LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3RGb2N1c2FibGUocm9vdEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50LCBpbmNsdWRlRWxlbWVudHNJbkZvY3VzWm9uZXMpIHtcbiAgICByZXR1cm4gZ2V0UHJldmlvdXNFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgdHJ1ZSAvKmNoZWNrTm9kZSovLCBmYWxzZSAvKnN1cHByZXNzUGFyZW50VHJhdmVyc2FsKi8sIHRydWUgLyp0cmF2ZXJzZUNoaWxkcmVuKi8sIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcyk7XG59XG4vKipcbiAqIEdldHMgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQuIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGZvY3VzYWJsZSBhbmQgdGFiYmFibGUgaXMgdGhhdCB0YWJiYWJsZSBlbGVtZW50cyBhcmVcbiAqIGZvY3VzYWJsZSBlbGVtZW50cyB0aGF0IGFsc28gaGF2ZSB0YWJJbmRleCAhPSAtMS4pXG4gKiBAcGFyYW0gcm9vdEVsZW1lbnQgLSBUaGUgcGFyZW50IGVsZW1lbnQgdG8gc2VhcmNoIGJlbmVhdGguXG4gKiBAcGFyYW0gY3VycmVudEVsZW1lbnQgLSBUaGUgZGVzY2VuZGFudCBvZiByb290RWxlbWVudCB0byBzdGFydCB0aGUgc2VhcmNoIGF0LiAgVGhpcyBlbGVtZW50IGlzIHRoZSBmaXJzdCBvbmUgY2hlY2tlZCxcbiAqIGFuZCBpdGVyYXRpb24gY29udGludWVzIGZvcndhcmQuICBUeXBpY2FsIHVzZSBwYXNzZXMgcm9vdEVsZW1lbnQuZmlyc3RDaGlsZC5cbiAqIEBwYXJhbSBpbmNsdWRlRWxlbWVudHNJbkZvY3VzWm9uZXMgLSB0cnVlIGlmIHRyYXZlcnNhbCBzaG91bGQgZ28gaW50byBGb2N1c1pvbmUgZGVzY2VuZGFudHMuXG4gKiBAcGFyYW0gY2hlY2tOb2RlIC0gSW5jbHVkZSBjdXJyZW50RWxlbWVudCBpbiBzZWFyY2ggd2hlbiB0cnVlLiBEZWZhdWx0cyB0byB0cnVlLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RUYWJiYWJsZShyb290RWxlbWVudCwgY3VycmVudEVsZW1lbnQsIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgY2hlY2tOb2RlKSB7XG4gICAgaWYgKGNoZWNrTm9kZSA9PT0gdm9pZCAwKSB7IGNoZWNrTm9kZSA9IHRydWU7IH1cbiAgICByZXR1cm4gZ2V0TmV4dEVsZW1lbnQocm9vdEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50LCBjaGVja05vZGUsIGZhbHNlIC8qc3VwcHJlc3NQYXJlbnRUcmF2ZXJzYWwqLywgZmFsc2UgLypzdXBwcmVzc0NoaWxkVHJhdmVyc2FsKi8sIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgZmFsc2UgLyphbGxvd0ZvY3VzUm9vdCovLCB0cnVlIC8qdGFiYmFibGUqLyk7XG59XG4vKipcbiAqIEdldHMgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudC4gKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZm9jdXNhYmxlIGFuZCB0YWJiYWJsZSBpcyB0aGF0IHRhYmJhYmxlIGVsZW1lbnRzIGFyZVxuICogZm9jdXNhYmxlIGVsZW1lbnRzIHRoYXQgYWxzbyBoYXZlIHRhYkluZGV4ICE9IC0xLilcbiAqIEBwYXJhbSByb290RWxlbWVudCAtIFRoZSBwYXJlbnQgZWxlbWVudCB0byBzZWFyY2ggYmVuZWF0aC5cbiAqIEBwYXJhbSBjdXJyZW50RWxlbWVudCAtIFRoZSBkZXNjZW5kYW50IG9mIHJvb3RFbGVtZW50IHRvIHN0YXJ0IHRoZSBzZWFyY2ggYXQuICBUaGlzIGVsZW1lbnQgaXMgdGhlIGZpcnN0IG9uZSBjaGVja2VkLFxuICogYW5kIGl0ZXJhdGlvbiBjb250aW51ZXMgaW4gcmV2ZXJzZS4gIFR5cGljYWwgdXNlIHBhc3NlcyByb290RWxlbWVudC5sYXN0Q2hpbGQuXG4gKiBAcGFyYW0gaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzIC0gdHJ1ZSBpZiB0cmF2ZXJzYWwgc2hvdWxkIGdvIGludG8gRm9jdXNab25lIGRlc2NlbmRhbnRzLlxuICogQHBhcmFtIGNoZWNrTm9kZSAtIEluY2x1ZGUgY3VycmVudEVsZW1lbnQgaW4gc2VhcmNoIHdoZW4gdHJ1ZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3RUYWJiYWJsZShyb290RWxlbWVudCwgY3VycmVudEVsZW1lbnQsIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgY2hlY2tOb2RlKSB7XG4gICAgaWYgKGNoZWNrTm9kZSA9PT0gdm9pZCAwKSB7IGNoZWNrTm9kZSA9IHRydWU7IH1cbiAgICByZXR1cm4gZ2V0UHJldmlvdXNFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgY2hlY2tOb2RlLCBmYWxzZSAvKnN1cHByZXNzUGFyZW50VHJhdmVyc2FsKi8sIHRydWUgLyp0cmF2ZXJzZUNoaWxkcmVuKi8sIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgZmFsc2UgLyphbGxvd0ZvY3VzUm9vdCovLCB0cnVlIC8qdGFiYmFibGUqLyk7XG59XG4vKipcbiAqIEF0dGVtcHRzIHRvIGZvY3VzIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCB0aGF0IGlzIGEgY2hpbGQgb3IgY2hpbGQncyBjaGlsZCBvZiB0aGUgcm9vdEVsZW1lbnQuXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIHJvb3RFbGVtZW50IC0gRWxlbWVudCB0byBzdGFydCB0aGUgc2VhcmNoIGZvciBhIGZvY3VzYWJsZSBjaGlsZC5cbiAqIEBwYXJhbSBieXBhc3NIaWRkZW5FbGVtZW50cyAtIElmIHRydWUsIGZvY3VzIHdpbGwgYmUgbm90IGJlIHNldCBvbiBoaWRkZW4gZWxlbWVudHMuXG4gKiBAcmV0dXJucyBUcnVlIGlmIGZvY3VzIHdhcyBzZXQsIGZhbHNlIGlmIGl0IHdhcyBub3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb2N1c0ZpcnN0Q2hpbGQocm9vdEVsZW1lbnQsIGJ5cGFzc0hpZGRlbkVsZW1lbnRzKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBnZXROZXh0RWxlbWVudChyb290RWxlbWVudCwgcm9vdEVsZW1lbnQsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGJ5cGFzc0hpZGRlbkVsZW1lbnRzKTtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBmb2N1c0FzeW5jKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBUcmF2ZXJzZSB0byBmaW5kIHRoZSBwcmV2aW91cyBlbGVtZW50LlxuICogSWYgdGFiYmFibGUgaXMgdHJ1ZSwgdGhlIGVsZW1lbnQgbXVzdCBoYXZlIHRhYkluZGV4ICE9IC0xLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByZXZpb3VzRWxlbWVudChyb290RWxlbWVudCwgY3VycmVudEVsZW1lbnQsIGNoZWNrTm9kZSwgc3VwcHJlc3NQYXJlbnRUcmF2ZXJzYWwsIHRyYXZlcnNlQ2hpbGRyZW4sIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgYWxsb3dGb2N1c1Jvb3QsIHRhYmJhYmxlKSB7XG4gICAgaWYgKCFjdXJyZW50RWxlbWVudCB8fCAoIWFsbG93Rm9jdXNSb290ICYmIGN1cnJlbnRFbGVtZW50ID09PSByb290RWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBpc0N1cnJlbnRFbGVtZW50VmlzaWJsZSA9IGlzRWxlbWVudFZpc2libGUoY3VycmVudEVsZW1lbnQpO1xuICAgIC8vIENoZWNrIGl0cyBjaGlsZHJlbi5cbiAgICBpZiAodHJhdmVyc2VDaGlsZHJlbiAmJlxuICAgICAgICBpc0N1cnJlbnRFbGVtZW50VmlzaWJsZSAmJlxuICAgICAgICAoaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzIHx8ICEoaXNFbGVtZW50Rm9jdXNab25lKGN1cnJlbnRFbGVtZW50KSB8fCBpc0VsZW1lbnRGb2N1c1N1YlpvbmUoY3VycmVudEVsZW1lbnQpKSkpIHtcbiAgICAgICAgdmFyIGNoaWxkTWF0Y2ggPSBnZXRQcmV2aW91c0VsZW1lbnQocm9vdEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50Lmxhc3RFbGVtZW50Q2hpbGQsIHRydWUsIHRydWUsIHRydWUsIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgYWxsb3dGb2N1c1Jvb3QsIHRhYmJhYmxlKTtcbiAgICAgICAgaWYgKGNoaWxkTWF0Y2gpIHtcbiAgICAgICAgICAgIGlmICgodGFiYmFibGUgJiYgaXNFbGVtZW50VGFiYmFibGUoY2hpbGRNYXRjaCwgdHJ1ZSkpIHx8ICF0YWJiYWJsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZE1hdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNoaWxkTWF0Y2hTaWJsaW5nTWF0Y2ggPSBnZXRQcmV2aW91c0VsZW1lbnQocm9vdEVsZW1lbnQsIGNoaWxkTWF0Y2gucHJldmlvdXNFbGVtZW50U2libGluZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzLCBhbGxvd0ZvY3VzUm9vdCwgdGFiYmFibGUpO1xuICAgICAgICAgICAgaWYgKGNoaWxkTWF0Y2hTaWJsaW5nTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRNYXRjaFNpYmxpbmdNYXRjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjaGlsZE1hdGNoUGFyZW50ID0gY2hpbGRNYXRjaC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBpZiB3ZSBoYXZlIG5vdCBmb3VuZCBhbnkgcG90ZW50aWFsIG1hdGNoZXNcbiAgICAgICAgICAgIC8vIHN0YXJ0IGxvb2tpbmcgYXQgdGhlIHJlc3Qgb2YgdGhlIHN1YnRyZWUgdW5kZXIgdGhlIGN1cnJlbnRQYXJlbnQuXG4gICAgICAgICAgICAvLyBOT1RFOiBXZSBkbyBub3Qgd2FudCB0byByZWN1cnNlIGhlcmUgYmVjYXVzZSBkb2luZyBzbyBjb3VsZFxuICAgICAgICAgICAgLy8gY2F1c2UgZWxlbWVudHMgdG8gZ2V0IHNraXBwZWQuXG4gICAgICAgICAgICB3aGlsZSAoY2hpbGRNYXRjaFBhcmVudCAmJiBjaGlsZE1hdGNoUGFyZW50ICE9PSBjdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBjaGlsZE1hdGNoUGFyZW50TWF0Y2ggPSBnZXRQcmV2aW91c0VsZW1lbnQocm9vdEVsZW1lbnQsIGNoaWxkTWF0Y2hQYXJlbnQucHJldmlvdXNFbGVtZW50U2libGluZywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzLCBhbGxvd0ZvY3VzUm9vdCwgdGFiYmFibGUpO1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZE1hdGNoUGFyZW50TWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkTWF0Y2hQYXJlbnRNYXRjaDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2hpbGRNYXRjaFBhcmVudCA9IGNoaWxkTWF0Y2hQYXJlbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGVjayB0aGUgY3VycmVudCBub2RlLCBpZiBpdCdzIG5vdCB0aGUgZmlyc3QgdHJhdmVyc2FsLlxuICAgIGlmIChjaGVja05vZGUgJiYgaXNDdXJyZW50RWxlbWVudFZpc2libGUgJiYgaXNFbGVtZW50VGFiYmFibGUoY3VycmVudEVsZW1lbnQsIHRhYmJhYmxlKSkge1xuICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIENoZWNrIGl0cyBwcmV2aW91cyBzaWJsaW5nLlxuICAgIHZhciBzaWJsaW5nTWF0Y2ggPSBnZXRQcmV2aW91c0VsZW1lbnQocm9vdEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcsIHRydWUsIHRydWUsIHRydWUsIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgYWxsb3dGb2N1c1Jvb3QsIHRhYmJhYmxlKTtcbiAgICBpZiAoc2libGluZ01hdGNoKSB7XG4gICAgICAgIHJldHVybiBzaWJsaW5nTWF0Y2g7XG4gICAgfVxuICAgIC8vIENoZWNrIGl0cyBwYXJlbnQuXG4gICAgaWYgKCFzdXBwcmVzc1BhcmVudFRyYXZlcnNhbCkge1xuICAgICAgICByZXR1cm4gZ2V0UHJldmlvdXNFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LCB0cnVlLCBmYWxzZSwgZmFsc2UsIGluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcywgYWxsb3dGb2N1c1Jvb3QsIHRhYmJhYmxlKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIFRyYXZlcnNlIHRvIGZpbmQgdGhlIG5leHQgZm9jdXNhYmxlIGVsZW1lbnQuXG4gKiBJZiB0YWJiYWJsZSBpcyB0cnVlLCB0aGUgZWxlbWVudCBtdXN0IGhhdmUgdGFiSW5kZXggIT0gLTEuXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIGNoZWNrTm9kZSAtIEluY2x1ZGUgY3VycmVudEVsZW1lbnQgaW4gc2VhcmNoIHdoZW4gdHJ1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgY2hlY2tOb2RlLCBzdXBwcmVzc1BhcmVudFRyYXZlcnNhbCwgc3VwcHJlc3NDaGlsZFRyYXZlcnNhbCwgaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzLCBhbGxvd0ZvY3VzUm9vdCwgdGFiYmFibGUsIGJ5cGFzc0hpZGRlbkVsZW1lbnRzKSB7XG4gICAgaWYgKCFjdXJyZW50RWxlbWVudCB8fCAoY3VycmVudEVsZW1lbnQgPT09IHJvb3RFbGVtZW50ICYmIHN1cHByZXNzQ2hpbGRUcmF2ZXJzYWwgJiYgIWFsbG93Rm9jdXNSb290KSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIGNoZWNrRWxlbWVudFZpc2liaWxpdHkgPSBieXBhc3NIaWRkZW5FbGVtZW50cyA/IGlzRWxlbWVudFZpc2libGVBbmROb3RIaWRkZW4gOiBpc0VsZW1lbnRWaXNpYmxlO1xuICAgIHZhciBpc0N1cnJlbnRFbGVtZW50VmlzaWJsZSA9IGNoZWNrRWxlbWVudFZpc2liaWxpdHkoY3VycmVudEVsZW1lbnQpO1xuICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IG5vZGUsIGlmIGl0J3Mgbm90IHRoZSBmaXJzdCB0cmF2ZXJzYWwuXG4gICAgaWYgKGNoZWNrTm9kZSAmJiBpc0N1cnJlbnRFbGVtZW50VmlzaWJsZSAmJiBpc0VsZW1lbnRUYWJiYWJsZShjdXJyZW50RWxlbWVudCwgdGFiYmFibGUpKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50RWxlbWVudDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaXRzIGNoaWxkcmVuLlxuICAgIGlmICghc3VwcHJlc3NDaGlsZFRyYXZlcnNhbCAmJlxuICAgICAgICBpc0N1cnJlbnRFbGVtZW50VmlzaWJsZSAmJlxuICAgICAgICAoaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzIHx8ICEoaXNFbGVtZW50Rm9jdXNab25lKGN1cnJlbnRFbGVtZW50KSB8fCBpc0VsZW1lbnRGb2N1c1N1YlpvbmUoY3VycmVudEVsZW1lbnQpKSkpIHtcbiAgICAgICAgdmFyIGNoaWxkTWF0Y2ggPSBnZXROZXh0RWxlbWVudChyb290RWxlbWVudCwgY3VycmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQsIHRydWUsIHRydWUsIGZhbHNlLCBpbmNsdWRlRWxlbWVudHNJbkZvY3VzWm9uZXMsIGFsbG93Rm9jdXNSb290LCB0YWJiYWJsZSwgYnlwYXNzSGlkZGVuRWxlbWVudHMpO1xuICAgICAgICBpZiAoY2hpbGRNYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkTWF0Y2g7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGN1cnJlbnRFbGVtZW50ID09PSByb290RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaXRzIHNpYmxpbmcuXG4gICAgdmFyIHNpYmxpbmdNYXRjaCA9IGdldE5leHRFbGVtZW50KHJvb3RFbGVtZW50LCBjdXJyZW50RWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcsIHRydWUsIHRydWUsIGZhbHNlLCBpbmNsdWRlRWxlbWVudHNJbkZvY3VzWm9uZXMsIGFsbG93Rm9jdXNSb290LCB0YWJiYWJsZSwgYnlwYXNzSGlkZGVuRWxlbWVudHMpO1xuICAgIGlmIChzaWJsaW5nTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHNpYmxpbmdNYXRjaDtcbiAgICB9XG4gICAgaWYgKCFzdXBwcmVzc1BhcmVudFRyYXZlcnNhbCkge1xuICAgICAgICByZXR1cm4gZ2V0TmV4dEVsZW1lbnQocm9vdEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgaW5jbHVkZUVsZW1lbnRzSW5Gb2N1c1pvbmVzLCBhbGxvd0ZvY3VzUm9vdCwgdGFiYmFibGUsIGJ5cGFzc0hpZGRlbkVsZW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBpcyB2aXNpYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWxlbWVudFZpc2libGUoZWxlbWVudCkge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG5vdCB2YWxpZCwgcmV0dXJuIGZhbHNlLlxuICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5nZXRBdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdmlzaWJpbGl0eUF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKElTX1ZJU0lCTEVfQVRUUklCVVRFKTtcbiAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBleHBsaWNpdGx5IG1hcmtlZCB3aXRoIHRoZSB2aXNpYmlsaXR5IGF0dHJpYnV0ZSwgcmV0dXJuIHRoYXQgdmFsdWUgYXMgYm9vbGVhbi5cbiAgICBpZiAodmlzaWJpbGl0eUF0dHJpYnV0ZSAhPT0gbnVsbCAmJiB2aXNpYmlsaXR5QXR0cmlidXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHZpc2liaWxpdHlBdHRyaWJ1dGUgPT09ICd0cnVlJztcbiAgICB9XG4gICAgLy8gRmFsbGJhY2sgdG8gb3RoZXIgbWV0aG9kcyBvZiBkZXRlcm1pbmluZyBhY3R1YWwgdmlzaWJpbGl0eS5cbiAgICByZXR1cm4gKGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICE9PSAwIHx8XG4gICAgICAgIGVsZW1lbnQub2Zmc2V0UGFyZW50ICE9PSBudWxsIHx8XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGVsZW1lbnQuaXNWaXNpYmxlID09PSB0cnVlKTsgLy8gdXNlZCBhcyBhIHdvcmthcm91bmQgZm9yIHRlc3RpbmcuXG59XG4vKipcbiAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBpcyB2aXNpYmxlIGFuZCBub3QgaGlkZGVuXG4gKiBAcGFyYW0gZWxlbWVudCAtIEVsZW1lbnQgdG8gY2hlY2tcbiAqIEByZXR1cm5zIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyB2aXNpYmxlIGFuZCBub3QgaGlkZGVuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50VmlzaWJsZUFuZE5vdEhpZGRlbihlbGVtZW50KSB7XG4gICAgcmV0dXJuICghIWVsZW1lbnQgJiZcbiAgICAgICAgaXNFbGVtZW50VmlzaWJsZShlbGVtZW50KSAmJlxuICAgICAgICAhZWxlbWVudC5oaWRkZW4gJiZcbiAgICAgICAgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicpO1xufVxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgY2FuIHJlY2VpdmUgZm9jdXMgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgYSBtb3VzZSBjbGljay5cbiAqIElmIGNoZWNrVGFiSW5kZXggaXMgdHJ1ZSwgYWRkaXRpb25hbGx5IGNoZWNrcyB0byBlbnN1cmUgdGhlIGVsZW1lbnQgY2FuIGJlIGZvY3VzZWQgd2l0aCB0aGUgdGFiIGtleSxcbiAqIG1lYW5pbmcgdGFiSW5kZXggIT0gLTEuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50VGFiYmFibGUoZWxlbWVudCwgY2hlY2tUYWJJbmRleCkge1xuICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyBudWxsIG9yIGlzIGRpc2FibGVkLCBpdCBpcyBub3QgY29uc2lkZXJlZCB0YWJiYWJsZS5cbiAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciB0YWJJbmRleCA9IDA7XG4gICAgdmFyIHRhYkluZGV4QXR0cmlidXRlVmFsdWUgPSBudWxsO1xuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7XG4gICAgICAgIHRhYkluZGV4QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiSW5kZXgnKTtcbiAgICAgICAgaWYgKHRhYkluZGV4QXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRhYkluZGV4ID0gcGFyc2VJbnQodGFiSW5kZXhBdHRyaWJ1dGVWYWx1ZSwgMTApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBpc0ZvY3VzYWJsZUF0dHJpYnV0ZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoSVNfRk9DVVNBQkxFX0FUVFJJQlVURSkgOiBudWxsO1xuICAgIHZhciBpc1RhYkluZGV4U2V0ID0gdGFiSW5kZXhBdHRyaWJ1dGVWYWx1ZSAhPT0gbnVsbCAmJiB0YWJJbmRleCA+PSAwO1xuICAgIHZhciByZXN1bHQgPSAhIWVsZW1lbnQgJiZcbiAgICAgICAgaXNGb2N1c2FibGVBdHRyaWJ1dGUgIT09ICdmYWxzZScgJiZcbiAgICAgICAgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0EnIHx8XG4gICAgICAgICAgICBlbGVtZW50LnRhZ05hbWUgPT09ICdCVVRUT04nIHx8XG4gICAgICAgICAgICBlbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgICAgICAgIGVsZW1lbnQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyB8fFxuICAgICAgICAgICAgZWxlbWVudC50YWdOYW1lID09PSAnU0VMRUNUJyB8fFxuICAgICAgICAgICAgaXNGb2N1c2FibGVBdHRyaWJ1dGUgPT09ICd0cnVlJyB8fFxuICAgICAgICAgICAgaXNUYWJJbmRleFNldCk7XG4gICAgcmV0dXJuIGNoZWNrVGFiSW5kZXggPyB0YWJJbmRleCAhPT0gLTEgJiYgcmVzdWx0IDogcmVzdWx0O1xufVxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZWxlbWVudCBpcyBhIGZvY3VzIHpvbmUuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbGVtZW50Rm9jdXNab25lKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gISEoZWxlbWVudCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSAmJiAhIWVsZW1lbnQuZ2V0QXR0cmlidXRlKEZPQ1VTWk9ORV9JRF9BVFRSSUJVVEUpKTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVsZW1lbnQgaXMgYSBmb2N1cyBzdWIgem9uZS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VsZW1lbnRGb2N1c1N1YlpvbmUoZWxlbWVudCkge1xuICAgIHJldHVybiAhIShlbGVtZW50ICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKEZPQ1VTWk9ORV9TVUJfQVRUUklCVVRFKSA9PT0gJ3RydWUnKTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhbiBlbGVtZW50LCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuLCBjb250YWluIGZvY3VzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvZXNFbGVtZW50Q29udGFpbkZvY3VzKGVsZW1lbnQpIHtcbiAgICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudChlbGVtZW50KTtcbiAgICB2YXIgY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmIChjdXJyZW50QWN0aXZlRWxlbWVudCAmJiBlbGVtZW50Q29udGFpbnMoZWxlbWVudCwgY3VycmVudEFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIERldGVybWluZXMgaWYgYW4sIG9yIGFueSBvZiBpdHMgYW5jZXN0b3JzLCBzZXBjaWZpY2llcyB0aGF0IGl0IGRvZXNuJ3Qgd2FudCBmb2N1cyB0byB3cmFwXG4gKiBAcGFyYW0gZWxlbWVudCAtIGVsZW1lbnQgdG8gc3RhcnQgc2VhcmNoaW5nIGZyb21cbiAqIEBwYXJhbSBub1dyYXBEYXRhQXR0cmlidXRlIC0gdGhlIG5vIHdyYXAgZGF0YSBhdHRyaWJ1dGUgdG8gbWF0Y2ggKGVpdGhlcilcbiAqIEByZXR1cm5zIHRydWUgaWYgZm9jdXMgc2hvdWxkIHdyYXAsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkV3JhcEZvY3VzKGVsZW1lbnQsIG5vV3JhcERhdGFBdHRyaWJ1dGUpIHtcbiAgICByZXR1cm4gZWxlbWVudENvbnRhaW5zQXR0cmlidXRlKGVsZW1lbnQsIG5vV3JhcERhdGFBdHRyaWJ1dGUpID09PSAndHJ1ZScgPyBmYWxzZSA6IHRydWU7XG59XG52YXIgdGFyZ2V0VG9Gb2N1c09uTmV4dFJlcGFpbnQgPSB1bmRlZmluZWQ7XG4vKipcbiAqIFNldHMgZm9jdXMgdG8gYW4gZWxlbWVudCBhc3luY2hyb25vdXNseS4gVGhlIGZvY3VzIHdpbGwgYmUgc2V0IGF0IHRoZSBuZXh0IGJyb3dzZXIgcmVwYWludCxcbiAqIG1lYW5pbmcgaXQgd29uJ3QgY2F1c2UgYW55IGV4dHJhIHJlY2FsY3VsYXRpb25zLiBJZiBtb3JlIHRoYW4gb25lIGZvY3VzQXN5bmMgaXMgY2FsbGVkIGR1cmluZyBvbmUgZnJhbWUsXG4gKiBvbmx5IHRoZSBsYXRlc3QgY2FsbGVkIGZvY3VzQXN5bmMgZWxlbWVudCB3aWxsIGFjdHVhbGx5IGJlIGZvY3VzZWRcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gZm9jdXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzQXN5bmMoZWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIC8vIEFuIGVsZW1lbnQgd2FzIGFscmVhZHkgcXVldWVkIHRvIGJlIGZvY3VzZWQsIHNvIHJlcGxhY2UgdGhhdCBvbmUgd2l0aCB0aGUgbmV3IGVsZW1lbnRcbiAgICAgICAgaWYgKHRhcmdldFRvRm9jdXNPbk5leHRSZXBhaW50KSB7XG4gICAgICAgICAgICB0YXJnZXRUb0ZvY3VzT25OZXh0UmVwYWludCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0VG9Gb2N1c09uTmV4dFJlcGFpbnQgPSBlbGVtZW50O1xuICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICAgICAgICBpZiAod2luKSB7XG4gICAgICAgICAgICAvLyBlbGVtZW50LmZvY3VzKCkgaXMgYSBuby1vcCBpZiB0aGUgZWxlbWVudCBpcyBubyBsb25nZXIgaW4gdGhlIERPTSwgbWVhbmluZyB0aGlzIGlzIGFsd2F5cyBzYWZlXG4gICAgICAgICAgICB3aW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRUb0ZvY3VzT25OZXh0UmVwYWludCAmJiB0YXJnZXRUb0ZvY3VzT25OZXh0UmVwYWludC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBkb25lIGZvY3VzaW5nIGZvciB0aGlzIGZyYW1lLCBzbyByZXNldCB0aGUgcXVldWVkIGZvY3VzIGVsZW1lbnRcbiAgICAgICAgICAgICAgICB0YXJnZXRUb0ZvY3VzT25OZXh0UmVwYWludCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBGaW5kcyB0aGUgY2xvc2VzdCBmb2N1c2FibGUgZWxlbWVudCB2aWEgYW4gaW5kZXggcGF0aCBmcm9tIGEgcGFyZW50LiBTZWVcbiAqIGBnZXRFbGVtZW50SW5kZXhQYXRoYCBmb3IgZ2V0dGluZyBhbiBpbmRleCBwYXRoIGZyb20gYW4gZWxlbWVudCB0byBhIGNoaWxkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlQnlJbmRleFBhdGgocGFyZW50LCBwYXRoKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBwYXJlbnQ7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBwYXRoXzEgPSBwYXRoOyBfaSA8IHBhdGhfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcGF0aF8xW19pXTtcbiAgICAgICAgdmFyIG5leHRDaGlsZCA9IGVsZW1lbnQuY2hpbGRyZW5bTWF0aC5taW4oaW5kZXgsIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMSldO1xuICAgICAgICBpZiAoIW5leHRDaGlsZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudCA9IG5leHRDaGlsZDtcbiAgICB9XG4gICAgZWxlbWVudCA9XG4gICAgICAgIGlzRWxlbWVudFRhYmJhYmxlKGVsZW1lbnQpICYmIGlzRWxlbWVudFZpc2libGUoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudFxuICAgICAgICAgICAgOiBnZXROZXh0RWxlbWVudChwYXJlbnQsIGVsZW1lbnQsIHRydWUpIHx8IGdldFByZXZpb3VzRWxlbWVudChwYXJlbnQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuLyoqXG4gKiBGaW5kcyB0aGUgZWxlbWVudCBpbmRleCBwYXRoIGZyb20gYSBwYXJlbnQgZWxlbWVudCB0byBhIGNoaWxkIGVsZW1lbnQuXG4gKlxuICogSWYgeW91IGhhZCB0aGlzIG5vZGUgc3RydWN0dXJlOiBcIkEgaGFzIGNoaWxkcmVuIFtCLCBDXSBhbmQgQyBoYXMgY2hpbGQgRFwiLFxuICogdGhlIGluZGV4IHBhdGggZnJvbSBBIHRvIEQgd291bGQgYmUgWzEsIDBdLCBvciBgcGFyZW50LmNoaWRyZW5bMV0uY2hpbGRyZW5bMF1gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudEluZGV4UGF0aChmcm9tRWxlbWVudCwgdG9FbGVtZW50KSB7XG4gICAgdmFyIHBhdGggPSBbXTtcbiAgICB3aGlsZSAodG9FbGVtZW50ICYmIGZyb21FbGVtZW50ICYmIHRvRWxlbWVudCAhPT0gZnJvbUVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHBhcmVudF8xID0gZ2V0UGFyZW50KHRvRWxlbWVudCwgdHJ1ZSk7XG4gICAgICAgIGlmIChwYXJlbnRfMSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHBhdGgudW5zaGlmdChBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBhcmVudF8xLmNoaWxkcmVuLCB0b0VsZW1lbnQpKTtcbiAgICAgICAgdG9FbGVtZW50ID0gcGFyZW50XzE7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9jdXMuanMubWFwIiwiZXhwb3J0IGZ1bmN0aW9uIG9uKGVsZW1lbnQsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGNhbGxiYWNrLCBvcHRpb25zKTsgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9uLmpzLm1hcCIsImltcG9ydCB7IG1lcmdlQ3NzU2V0cywgU3R5bGVzaGVldCB9IGZyb20gJ0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMnO1xuaW1wb3J0IHsgZ2V0UlRMIH0gZnJvbSAnLi9ydGwnO1xuaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20nO1xudmFyIE1BWF9DQUNIRV9DT1VOVCA9IDUwO1xudmFyIERFRkFVTFRfU1BFQ0lGSUNJVFlfTVVMVElQTElFUiA9IDU7XG52YXIgX21lbW9pemVkQ2xhc3NOYW1lcyA9IDA7XG52YXIgc3R5bGVzaGVldCA9IFN0eWxlc2hlZXQuZ2V0SW5zdGFuY2UoKTtcbmlmIChzdHlsZXNoZWV0ICYmIHN0eWxlc2hlZXQub25SZXNldCkge1xuICAgIHN0eWxlc2hlZXQub25SZXNldChmdW5jdGlvbiAoKSB7IHJldHVybiBfbWVtb2l6ZWRDbGFzc05hbWVzKys7IH0pO1xufVxuLy8gTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhlIGNhY2hpbmcgbmF0dXJlIHdpdGhpbiB0aGUgY2xhc3NOYW1lcyBtZW1vaXphdGlvbixcbi8vIEkndmUgZGlzYWJsZWQgdGhpcyBydWxlIHRvIHNpbXBseSBiZSBhYmxlIHRvIHdvcmsgd2l0aCBhbnkgdHlwZXMuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vLyBUaGlzIHJlcHJlc2VudHMgYSBwcm9wIHdlIGF0dGFjaCB0byBlYWNoIE1hcCB0byBpbmRpY2F0ZSB0aGUgY2FjaGVkIHJldHVybiB2YWx1ZVxuLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBncmFwaCBub2RlLlxudmFyIHJldFZhbCA9ICdfX3JldHZhbF9fJztcbi8qKlxuICogQ3JlYXRlcyBhIGdldENsYXNzTmFtZXMgZnVuY3Rpb24gd2hpY2ggY2FsbHMgZ2V0U3R5bGVzIGdpdmVuIHRoZSBwcm9wcywgYW5kIGluamVjdHMgdGhlbVxuICogaW50byBtZXJnZVN0eWxlU2V0cy5cbiAqXG4gKiBOb3RlIHRoYXQgdGhlIHByb3BzIHlvdSBwYXNzIGluIG9uIGV2ZXJ5IHJlbmRlciBzaG91bGQgYmUgaW4gdGhlIHNhbWUgb3JkZXIgYW5kXG4gKiBpbW11dGFibGUgKG51bWJlcnMsIHN0cmluZ3MsIGFuZCBib29sZWFucykuIFRoaXMgd2lsbCBhbGxvdyB0aGUgcmVzdWx0cyB0byBiZSBtZW1vaXplZC4gVmlvbGF0aW5nXG4gKiB0aGVzZSB3aWxsIGNhdXNlIGV4dHJhIHJlY2FsY3MgdG8gb2NjdXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc05hbWVzRnVuY3Rpb24ob3B0aW9ucykge1xuICAgIC8vIFdlIGJ1aWxkIGEgdHJpZSB3aGVyZSBlYWNoIG5vZGUgaXMgYSBNYXAuIFRoZSBtYXAgZW50cnkga2V5IHJlcHJlc2VudHMgYW4gYXJndW1lbnRcbiAgICAvLyB2YWx1ZSwgYW5kIHRoZSBlbnRyeSB2YWx1ZSBpcyBhbm90aGVyIG5vZGUgKE1hcCkuIEVhY2ggbm9kZSBoYXMgYSBgX19yZXR2YWxfX2BcbiAgICAvLyBwcm9wZXJ0eSB3aGljaCBpcyB1c2VkIHRvIGhvbGQgdGhlIGNhY2hlZCByZXNwb25zZS5cbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIC8vIFRvIGRlcml2ZSB0aGUgcmVzcG9uc2UsIHdlIGNhbiBzaW1wbHkgZW5zdXJlIHRoZSBhcmd1bWVudHMgYXJlIGFkZGVkIG9yIGFscmVhZHlcbiAgICAvLyBleGlzdCBpbiB0aGUgdHJpZS4gQXQgdGhlIGxhc3Qgbm9kZSwgaWYgdGhlcmUgaXMgYSBgX19yZXR2YWxfX2Agd2UgcmV0dXJuIHRoYXQuIE90aGVyd2lzZVxuICAgIC8vIHdlIGNhbGwgdGhlIGBnZXRTdHlsZXNgIGFwaSB0byBldmFsdWF0ZSwgY2FjaGUgb24gdGhlIHByb3BlcnR5LCBhbmQgcmV0dXJuIHRoYXQuXG4gICAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgICB2YXIgc3R5bGVDYWxjQ291bnQgPSAwO1xuICAgIHZhciBnZXRDbGFzc05hbWVzQ291bnQgPSAwO1xuICAgIHZhciBjdXJyZW50TWVtb2l6ZWRDbGFzc05hbWVzID0gX21lbW9pemVkQ2xhc3NOYW1lcztcbiAgICB2YXIgZ2V0Q2xhc3NOYW1lcyA9IGZ1bmN0aW9uIChzdHlsZUZ1bmN0aW9uT3JPYmplY3QsIHN0eWxlUHJvcHMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoc3R5bGVQcm9wcyA9PT0gdm9pZCAwKSB7IHN0eWxlUHJvcHMgPSB7fTsgfVxuICAgICAgICAvLyBJZiB1c2VTdGF0aWNTdHlsZXMgaXMgdHJ1ZSwgc3R5bGVGdW5jdGlvbk9yT2JqZWN0IHJldHVybnMgc2xvdCB0byBjbGFzc25hbWUgbWFwcGluZ3MuXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGFsc28gbm8gc3R5bGUgb3ZlcnJpZGVzLCB3ZSBjYW4gc2tpcCBtZXJnZSBzdHlsZXMgY29tcGxldGVseSBhbmRcbiAgICAgICAgLy8gc2ltcGx5IHJldHVybiB0aGUgcmVzdWx0IGZyb20gdGhlIHN0eWxlIGZ1bmNpb24uXG4gICAgICAgIGlmIChvcHRpb25zLnVzZVN0YXRpY1N0eWxlcyAmJlxuICAgICAgICAgICAgdHlwZW9mIHN0eWxlRnVuY3Rpb25Pck9iamVjdCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgc3R5bGVGdW5jdGlvbk9yT2JqZWN0Ll9fbm9TdHlsZU92ZXJyaWRlX18pIHtcbiAgICAgICAgICAgIHJldHVybiBzdHlsZUZ1bmN0aW9uT3JPYmplY3Qoc3R5bGVQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0Q2xhc3NOYW1lc0NvdW50Kys7XG4gICAgICAgIHZhciBjdXJyZW50ID0gbWFwO1xuICAgICAgICB2YXIgdGhlbWUgPSBzdHlsZVByb3BzLnRoZW1lO1xuICAgICAgICB2YXIgcnRsID0gdGhlbWUgJiYgdGhlbWUucnRsICE9PSB1bmRlZmluZWQgPyB0aGVtZS5ydGwgOiBnZXRSVEwoKTtcbiAgICAgICAgdmFyIGRpc2FibGVDYWNoaW5nID0gb3B0aW9ucy5kaXNhYmxlQ2FjaGluZztcbiAgICAgICAgLy8gT24gcmVzZXQgb2Ygb3VyIHN0eWxlc2hlZXQsIHJlc2V0IG1lbW9pemVkIGNhY2hlLlxuICAgICAgICBpZiAoY3VycmVudE1lbW9pemVkQ2xhc3NOYW1lcyAhPT0gX21lbW9pemVkQ2xhc3NOYW1lcykge1xuICAgICAgICAgICAgY3VycmVudE1lbW9pemVkQ2xhc3NOYW1lcyA9IF9tZW1vaXplZENsYXNzTmFtZXM7XG4gICAgICAgICAgICBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBzdHlsZUNhbGNDb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRpb25zLmRpc2FibGVDYWNoaW5nKSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gX3RyYXZlcnNlTWFwKG1hcCwgc3R5bGVGdW5jdGlvbk9yT2JqZWN0KTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBfdHJhdmVyc2VNYXAoY3VycmVudCwgc3R5bGVQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc2FibGVDYWNoaW5nIHx8ICFjdXJyZW50W3JldFZhbF0pIHtcbiAgICAgICAgICAgIGlmIChzdHlsZUZ1bmN0aW9uT3JPYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRbcmV0VmFsXSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFtyZXRWYWxdID0gbWVyZ2VDc3NTZXRzKFtcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBzdHlsZUZ1bmN0aW9uT3JPYmplY3QgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc3R5bGVGdW5jdGlvbk9yT2JqZWN0KHN0eWxlUHJvcHMpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHN0eWxlRnVuY3Rpb25Pck9iamVjdCksXG4gICAgICAgICAgICAgICAgXSwgeyBydGw6ICEhcnRsLCBzcGVjaWZpY2l0eU11bHRpcGxpZXI6IG9wdGlvbnMudXNlU3RhdGljU3R5bGVzID8gREVGQVVMVF9TUEVDSUZJQ0lUWV9NVUxUSVBMSUVSIDogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkaXNhYmxlQ2FjaGluZykge1xuICAgICAgICAgICAgICAgIHN0eWxlQ2FsY0NvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0eWxlQ2FsY0NvdW50ID4gKG9wdGlvbnMuY2FjaGVTaXplIHx8IE1BWF9DQUNIRV9DT1VOVCkpIHtcbiAgICAgICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3coKTtcbiAgICAgICAgICAgIGlmICgoX2EgPSB3aW4gPT09IG51bGwgfHwgd2luID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3aW4uRmFicmljQ29uZmlnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZW5hYmxlQ2xhc3NOYW1lQ2FjaGVGdWxsV2FybmluZykge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiU3R5bGVzIGFyZSBiZWluZyByZWNhbGN1bGF0ZWQgdG9vIGZyZXF1ZW50bHkuIENhY2hlIG1pc3MgcmF0ZSBpcyBcIi5jb25jYXQoc3R5bGVDYWxjQ291bnQsIFwiL1wiKS5jb25jYXQoZ2V0Q2xhc3NOYW1lc0NvdW50LCBcIi5cIikpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICAgICAgY29uc29sZS50cmFjZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFwLmNsZWFyKCk7XG4gICAgICAgICAgICBzdHlsZUNhbGNDb3VudCA9IDA7XG4gICAgICAgICAgICAvLyBNdXRhdGUgdGhlIG9wdGlvbnMgcGFzc2VkIGluLCB0aGF0J3MgYWxsIHdlIGNhbiBkby5cbiAgICAgICAgICAgIG9wdGlvbnMuZGlzYWJsZUNhY2hpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdGU6IHRoZSByZXRWYWwgaXMgYW4gYXR0YWNoZWQgcHJvcGVydHkgb24gdGhlIE1hcDsgbm90IGEga2V5IGluIHRoZSBNYXAuIFdlIHVzZSB0aGlzIGF0dGFjaGVkIHByb3BlcnR5IHRvXG4gICAgICAgIC8vIGNhY2hlIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoaXMgYnJhbmNoIG9mIHRoZSBncmFwaC5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRbcmV0VmFsXTtcbiAgICB9O1xuICAgIHJldHVybiBnZXRDbGFzc05hbWVzO1xufVxuZnVuY3Rpb24gX3RyYXZlcnNlRWRnZShjdXJyZW50LCB2YWx1ZSkge1xuICAgIHZhbHVlID0gX25vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICBpZiAoIWN1cnJlbnQuaGFzKHZhbHVlKSkge1xuICAgICAgICBjdXJyZW50LnNldCh2YWx1ZSwgbmV3IE1hcCgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQuZ2V0KHZhbHVlKTtcbn1cbmZ1bmN0aW9uIF90cmF2ZXJzZU1hcChjdXJyZW50LCBpbnB1dHMpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgY2FjaGVkSW5wdXRzRnJvbVN0eWxlZCA9IGlucHV0cy5fX2NhY2hlZElucHV0c19fO1xuICAgICAgICBpZiAoY2FjaGVkSW5wdXRzRnJvbVN0eWxlZCkge1xuICAgICAgICAgICAgLy8gVGhlIHN0eWxlZCBoZWxwZXIgd2lsbCBnZW5lcmF0ZSB0aGUgc3R5bGVzIGZ1bmN0aW9uIGFuZCB3aWxsIGF0dGFjaCB0aGUgY2FjaGVkXG4gICAgICAgICAgICAvLyBpbnB1dHMgKGNvbnNpc3Rpbmcgb2YgdGhlIGRlZmF1bHQgc3R5bGVzLCBjdXN0b216aWVkIHN0eWxlcywgYW5kIHVzZXIgcHJvdmlkZWQgc3R5bGVzLilcbiAgICAgICAgICAgIC8vIFRoZXNlIHNob3VsZCBiZSB1c2VkIGFzIGNhY2hlIGtleXMgZm9yIGRlcml2aW5nIHRoZSBtZW1vaXplZCB2YWx1ZS5cbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBpbnB1dHMuX19jYWNoZWRJbnB1dHNfXzsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBfYVtfaV07XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IF90cmF2ZXJzZUVkZ2UoY3VycmVudCwgaW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudCA9IF90cmF2ZXJzZUVkZ2UoY3VycmVudCwgaW5wdXRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgaW5wdXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBpbnB1dHMpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IF90cmF2ZXJzZUVkZ2UoY3VycmVudCwgaW5wdXRzW3Byb3BOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG5mdW5jdGlvbiBfbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgcmV0dXJuICdfX3VuZGVmaW5lZF9fJztcbiAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgcmV0dXJuICdfX251bGxfXyc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2xhc3NOYW1lc0Z1bmN0aW9uLmpzLm1hcCIsImltcG9ydCB7IFN0eWxlc2hlZXQgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbnZhciBfaW5pdGlhbGl6ZWRTdHlsZXNoZWV0UmVzZXRzID0gZmFsc2U7XG52YXIgX3Jlc2V0Q291bnRlciA9IDA7XG52YXIgX2VtcHR5T2JqZWN0ID0geyBlbXB0eTogdHJ1ZSB9O1xudmFyIF9kaWN0aW9uYXJ5ID0ge307XG52YXIgX3dlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogV2Vha01hcDtcbi8qKlxuICogIFRlc3QgdXRpbGl0eSBmb3IgcHJvdmlkaW5nIGEgY3VzdG9tIHdlYWttYXAuXG4gKlxuICogQGludGVybmFsXG4gKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE1lbW9pemVXZWFrTWFwKHdlYWtNYXApIHtcbiAgICBfd2Vha01hcCA9IHdlYWtNYXA7XG59XG4vKipcbiAqIFJlc2V0IG1lbW9pemF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0TWVtb2l6YXRpb25zKCkge1xuICAgIF9yZXNldENvdW50ZXIrKztcbn1cbi8qKlxuICogTWVtb2l6ZSBkZWNvcmF0b3IgdG8gYmUgdXNlZCBvbiBjbGFzcyBtZXRob2RzLiBXQVJOSU5HOiB0aGUgYHRoaXNgIHJlZmVyZW5jZVxuICogd2lsbCBiZSBpbmFjY2Vzc2libGUgd2l0aGluIGEgbWVtb2l6ZWQgbWV0aG9kLCBnaXZlbiB0aGF0IGEgY2FjaGVkIG1ldGhvZCdzIGB0aGlzYFxuICogd291bGQgbm90IGJlIGluc3RhbmNlLXNwZWNpZmljLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lbW9pemUoX3RhcmdldCwgX2tleSwgZGVzY3JpcHRvcikge1xuICAgIC8vIFdlIGJpbmQgdG8gXCJudWxsXCIgdG8gcHJldmVudCBwZW9wbGUgZnJvbSBpbmFkdmVydGVudGx5IHB1bGxpbmcgdmFsdWVzIGZyb20gXCJ0aGlzXCIsXG4gICAgLy8gcmF0aGVyIHRoYW4gcGFzc2luZyB0aGVtIGluIGFzIGlucHV0IHZhbHVlcyB3aGljaCBjYW4gYmUgbWVtb2l6ZWQuXG4gICAgdmFyIGZuID0gbWVtb2l6ZUZ1bmN0aW9uKGRlc2NyaXB0b3IudmFsdWUgJiYgZGVzY3JpcHRvci52YWx1ZS5iaW5kKG51bGwpKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGZuO1xuICAgICAgICB9LFxuICAgIH07XG59XG4vKipcbiAqIE1lbW9pemVzIGEgZnVuY3Rpb247IHdoZW4geW91IHBhc3MgaW4gdGhlIHNhbWUgcGFyYW1ldGVycyBtdWx0aXBsZSB0aW1lcywgaXQgcmV0dXJucyBhIGNhY2hlZCByZXN1bHQuXG4gKiBCZSBjYXJlZnVsIHdoZW4gcGFzc2luZyBpbiBvYmplY3RzLCB5b3UgbmVlZCB0byBwYXNzIGluIHRoZSBzYW1lIElOU1RBTkNFIGZvciBjYWNoaW5nIHRvIHdvcmsuIE90aGVyd2lzZVxuICogaXQgd2lsbCBncm93IHRoZSBjYWNoZSB1bm5lY2Vzc2FyaWx5LiBBbHNvIGF2b2lkIHVzaW5nIGRlZmF1bHQgdmFsdWVzIHRoYXQgZXZhbHVhdGUgZnVuY3Rpb25zOyBwYXNzaW5nIGluXG4gKiB1bmRlZmluZWQgZm9yIGEgdmFsdWUgYW5kIHJlbHlpbmcgb24gYSBkZWZhdWx0IGZ1bmN0aW9uIHdpbGwgZXhlY3V0ZSBpdCB0aGUgZmlyc3QgdGltZSwgYnV0IHdpbGwgbm90XG4gKiByZS1ldmFsdWF0ZSBzdWJzZXF1ZW50IHRpbWVzIHdoaWNoIG1heSBoYXZlIGJlZW4gdW5leHBlY3RlZC5cbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGUgY2FjaGUgd2lsbCByZXNldCBhZnRlciAxMDAgcGVybXV0YXRpb25zLCB0byBhdm9pZCBhYnVzZSBjYXNlcyB3aGVyZSB0aGUgZnVuY3Rpb24gaXNcbiAqIHVuaW50ZW5kZWRseSBjYWxsZWQgd2l0aCB1bmlxdWUgb2JqZWN0cy4gV2l0aG91dCBhIHJlc2V0LCB0aGUgY2FjaGUgY291bGQgZ3JvdyBpbmZpbml0ZWx5LCBzbyB3ZSBzYWZlZ3VhcmRcbiAqIGJ5IHJlc2V0dGluZy4gVG8gb3ZlcnJpZGUgdGhpcyBiZWhhdmlvciwgcGFzcyBhIHZhbHVlIG9mIDAgdG8gdGhlIG1heENhY2hlU2l6ZSBwYXJhbWV0ZXIuXG4gKlxuICogQHB1YmxpY1xuICogQHBhcmFtIGNiIC0gVGhlIGZ1bmN0aW9uIHRvIG1lbW9pemUuXG4gKiBAcGFyYW0gbWF4Q2FjaGVTaXplIC0gTWF4IHJlc3VsdHMgdG8gY2FjaGUuIElmIHRoZSBjYWNoZSBleGNlZWRzIHRoaXMgdmFsdWUsIGl0IHdpbGwgcmVzZXQgb24gdGhlIG5leHQgY2FsbC5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsT3JVbmRlZmluZWRSZXN1bHQgLSBGbGFnIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNhY2hlIGNhbGxiYWNrIHJlc3VsdCBpZiBpdCBpcyB1bmRlZmluZWQvbnVsbC5cbiAqIElmIHRoZSBmbGFnIGlzIHNldCB0byB0cnVlLCB0aGUgY2FsbGJhY2sgcmVzdWx0IGlzIHJlY29tcHV0ZWQgZXZlcnkgdGltZSB0aWxsIHRoZSBjYWxsYmFjayByZXN1bHQgaXNcbiAqIG5vdCB1bmRlZmluZWQvbnVsbCBmb3IgdGhlIGZpcnN0IHRpbWUsIGFuZCB0aGVuIHRoZSBub24tdW5kZWZpbmVkL251bGwgdmVyc2lvbiBnZXRzIGNhY2hlZC5cbiAqIEByZXR1cm5zIEEgbWVtb2l6ZWQgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZW1vaXplRnVuY3Rpb24oY2IsIG1heENhY2hlU2l6ZSwgaWdub3JlTnVsbE9yVW5kZWZpbmVkUmVzdWx0KSB7XG4gICAgaWYgKG1heENhY2hlU2l6ZSA9PT0gdm9pZCAwKSB7IG1heENhY2hlU2l6ZSA9IDEwMDsgfVxuICAgIGlmIChpZ25vcmVOdWxsT3JVbmRlZmluZWRSZXN1bHQgPT09IHZvaWQgMCkgeyBpZ25vcmVOdWxsT3JVbmRlZmluZWRSZXN1bHQgPSBmYWxzZTsgfVxuICAgIC8vIEF2b2lkIGJyZWFraW5nIHNjZW5hcmlvcyB3aGljaCBkb24ndCBoYXZlIHdlYWsgbWFwLlxuICAgIGlmICghX3dlYWtNYXApIHtcbiAgICAgICAgcmV0dXJuIGNiO1xuICAgIH1cbiAgICBpZiAoIV9pbml0aWFsaXplZFN0eWxlc2hlZXRSZXNldHMpIHtcbiAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgICAgIGlmIChzdHlsZXNoZWV0ICYmIHN0eWxlc2hlZXQub25SZXNldCkge1xuICAgICAgICAgICAgU3R5bGVzaGVldC5nZXRJbnN0YW5jZSgpLm9uUmVzZXQocmVzZXRNZW1vaXphdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIF9pbml0aWFsaXplZFN0eWxlc2hlZXRSZXNldHMgPSB0cnVlO1xuICAgIH1cbiAgICB2YXIgcm9vdE5vZGU7XG4gICAgdmFyIGNhY2hlU2l6ZSA9IDA7XG4gICAgdmFyIGxvY2FsUmVzZXRDb3VudGVyID0gX3Jlc2V0Q291bnRlcjtcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVtb2l6ZWRGdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY3VycmVudE5vZGUgPSByb290Tm9kZTtcbiAgICAgICAgaWYgKHJvb3ROb2RlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIGxvY2FsUmVzZXRDb3VudGVyICE9PSBfcmVzZXRDb3VudGVyIHx8XG4gICAgICAgICAgICAobWF4Q2FjaGVTaXplID4gMCAmJiBjYWNoZVNpemUgPiBtYXhDYWNoZVNpemUpKSB7XG4gICAgICAgICAgICByb290Tm9kZSA9IF9jcmVhdGVOb2RlKCk7XG4gICAgICAgICAgICBjYWNoZVNpemUgPSAwO1xuICAgICAgICAgICAgbG9jYWxSZXNldENvdW50ZXIgPSBfcmVzZXRDb3VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnROb2RlID0gcm9vdE5vZGU7XG4gICAgICAgIC8vIFRyYXZlcnNlIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgdGhlIG1hdGNoLlxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBhcmcgPSBfbm9ybWFsaXplQXJnKGFyZ3NbaV0pO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50Tm9kZS5tYXAuaGFzKGFyZykpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5tYXAuc2V0KGFyZywgX2NyZWF0ZU5vZGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm1hcC5nZXQoYXJnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnJlbnROb2RlLmhhc093blByb3BlcnR5KCd2YWx1ZScpKSB7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZS52YWx1ZSA9IGNiLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgICAgICBjYWNoZVNpemUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWdub3JlTnVsbE9yVW5kZWZpbmVkUmVzdWx0ICYmIChjdXJyZW50Tm9kZS52YWx1ZSA9PT0gbnVsbCB8fCBjdXJyZW50Tm9kZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgY3VycmVudE5vZGUudmFsdWUgPSBjYi5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZS52YWx1ZTtcbiAgICB9O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWVtb2l6ZXIgZm9yIGEgc2luZ2xlLXZhbHVlIGZ1bmN0aW9uLCBiYWNrZWQgYnkgYSBXZWFrTWFwLlxuICogV2l0aCBhIFdlYWtNYXAsIHRoZSBtZW1vaXplZCB2YWx1ZXMgYXJlIG9ubHkga2VwdCBhcyBsb25nIGFzIHRoZSBzb3VyY2Ugb2JqZWN0cyxcbiAqIGVuc3VyaW5nIHRoYXQgdGhlcmUgaXMgbm8gbWVtb3J5IGxlYWsuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlIGlucHV0IHZhbHVlcyBwYXNzZWQgdG8gdGhlIHdyYXBwZWQgZnVuY3Rpb24gd2lsbCBiZVxuICogYGZ1bmN0aW9uYCBvciBgb2JqZWN0YCB0eXBlcy4gVG8gbWVtb2l6ZSBmdW5jdGlvbnMgd2hpY2ggYWNjZXB0IG90aGVyIGlucHV0cywgdXNlXG4gKiBgbWVtb2l6ZUZ1bmN0aW9uYCwgd2hpY2ggbWVtb2l6ZXMgYWdhaW5zdCBhcmJpdHJhcnkgaW5wdXRzIHVzaW5nIGEgbG9va3VwIGNhY2hlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lbW9pemVyKGdldFZhbHVlKSB7XG4gICAgaWYgKCFfd2Vha01hcCkge1xuICAgICAgICAvLyBXaXRob3V0IGEgYFdlYWtNYXBgIGltcGxlbWVudGF0aW9uLCBtZW1vaXphdGlvbiBpcyBub3QgcG9zc2libGUuXG4gICAgICAgIHJldHVybiBnZXRWYWx1ZTtcbiAgICB9XG4gICAgdmFyIGNhY2hlID0gbmV3IF93ZWFrTWFwKCk7XG4gICAgZnVuY3Rpb24gbWVtb2l6ZWRHZXRWYWx1ZShpbnB1dCkge1xuICAgICAgICBpZiAoIWlucHV0IHx8ICh0eXBlb2YgaW5wdXQgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0JykpIHtcbiAgICAgICAgICAgIC8vIEEgV2Vha01hcCBjYW4gb25seSBiZSB1c2VkIHRvIHRlc3QgYWdhaW5zdCByZWZlcmVuY2UgdmFsdWVzLCBpLmUuICdmdW5jdGlvbicgYW5kICdvYmplY3QnLlxuICAgICAgICAgICAgLy8gQWxsIG90aGVyIGlucHV0cyBjYW5ub3QgYmUgbWVtb2l6ZWQgYWdhaW5zdCBpbiB0aGlzIG1hbm5lci5cbiAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZShpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlLmhhcyhpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZS5nZXQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKGlucHV0KTtcbiAgICAgICAgY2FjaGUuc2V0KGlucHV0LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbW9pemVkR2V0VmFsdWU7XG59XG5mdW5jdGlvbiBfbm9ybWFsaXplQXJnKHZhbCkge1xuICAgIGlmICghdmFsKSB7XG4gICAgICAgIHJldHVybiBfZW1wdHlPYmplY3Q7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgZWxzZSBpZiAoIV9kaWN0aW9uYXJ5W3ZhbF0pIHtcbiAgICAgICAgX2RpY3Rpb25hcnlbdmFsXSA9IHsgdmFsOiB2YWwgfTtcbiAgICB9XG4gICAgcmV0dXJuIF9kaWN0aW9uYXJ5W3ZhbF07XG59XG5mdW5jdGlvbiBfY3JlYXRlTm9kZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtYXA6IF93ZWFrTWFwID8gbmV3IF93ZWFrTWFwKCkgOiBudWxsLFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZW1vaXplLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVNZW1vaXplciB9IGZyb20gJy4uL21lbW9pemUnO1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9zZWRDb21wb25lbnQob3V0ZXIpIHtcbiAgICB2YXIgT3V0ZXIgPSBvdXRlcjtcbiAgICB2YXIgb3V0ZXJNZW1vaXplciA9IGNyZWF0ZU1lbW9pemVyKGZ1bmN0aW9uIChpbm5lcikge1xuICAgICAgICBpZiAob3V0ZXIgPT09IGlubmVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBjb21wb3NlIGEgY29tcG9uZW50IHdpdGggaXRzZWxmLicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBJbm5lciA9IGlubmVyO1xuICAgICAgICB2YXIgaW5uZXJNZW1vaXplciA9IGNyZWF0ZU1lbW9pemVyKGZ1bmN0aW9uIChkZWZhdWx0UmVuZGVyKSB7XG4gICAgICAgICAgICB2YXIgSW5uZXJXaXRoRGVmYXVsdFJlbmRlciA9IGZ1bmN0aW9uIChpbm5lclByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSW5uZXIsIF9fYXNzaWduKHt9LCBpbm5lclByb3BzLCB7IGRlZmF1bHRSZW5kZXI6IGRlZmF1bHRSZW5kZXIgfSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBJbm5lcldpdGhEZWZhdWx0UmVuZGVyO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIE91dGVyV2l0aERlZmF1bHRSZW5kZXIgPSBmdW5jdGlvbiAob3V0ZXJQcm9wcykge1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRSZW5kZXIgPSBvdXRlclByb3BzLmRlZmF1bHRSZW5kZXI7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChPdXRlciwgX19hc3NpZ24oe30sIG91dGVyUHJvcHMsIHsgZGVmYXVsdFJlbmRlcjogZGVmYXVsdFJlbmRlciA/IGlubmVyTWVtb2l6ZXIoZGVmYXVsdFJlbmRlcikgOiBJbm5lciB9KSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPdXRlcldpdGhEZWZhdWx0UmVuZGVyO1xuICAgIH0pO1xuICAgIHJldHVybiBvdXRlck1lbW9pemVyO1xufVxudmFyIGNvbXBvbmVudEFzTWVtb2l6ZXIgPSBjcmVhdGVNZW1vaXplcihjcmVhdGVDb21wb3NlZENvbXBvbmVudCk7XG4vKipcbiAqIENvbXBvc2VzIHR3byBjb21wb25lbnRzIHdoaWNoIGNvbmZvcm0gdG8gdGhlIGBJQ29tcG9uZW50QXNgIHNwZWNpZmljYXRpb247IHRoYXQgaXMsIHR3b1xuICogY29tcG9uZW50cyB3aGljaCBhY2NlcHQgYSBgZGVmYXVsdFJlbmRlcmAgcHJvcCwgd2hpY2ggaXMgYSAnZGVmYXVsdCcgaW1wbGVtZW50YXRpb24gb2ZcbiAqIGEgY29tcG9uZW50IHdoaWNoIGFjY2VwdHMgdGhlIHNhbWUgb3ZlcmFsbCBwcm9wcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlQ29tcG9uZW50QXMob3V0ZXIsIGlubmVyKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVudEFzTWVtb2l6ZXIob3V0ZXIpKGlubmVyKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBvc2VDb21wb25lbnRBcy5qcy5tYXAiLCIvKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGNvbXBvbmVudCBpcyBjb250cm9sbGVkLlxuICogQHBhcmFtIHByb3BzIC0gQ29tcG9uZW50IHByb3BzXG4gKiBAcGFyYW0gdmFsdWVQcm9wIC0gUHJvcCBjb250YWluaW5nIHRoZSBjb250cm9sbGVkIHZhbHVlXG4gKiBAcmV0dXJucyB0cnVlIGlmIGNvbnRyb2xsZWQsIGZhbHNlIGlmIHVuY29udHJvbGxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb250cm9sbGVkKHByb3BzLCB2YWx1ZVByb3ApIHtcbiAgICAvLyBSZWFjdCdzIGJ1aWx0LWluIDxpbnB1dD4gY29uc2lkZXJzIGEgcHJvcCB0byBiZSBwcm92aWRlZCBpZiBpdHMgdmFsdWUgaXMgbm9uLW51bGwvdW5kZWZpbmVkLlxuICAgIC8vIE1pcnJvciB0aGF0IGJlaGF2aW9yIGhlcmUgKHJhdGhlciB0aGFuIGNoZWNraW5nIGZvciBqdXN0IHVuZGVmaW5lZCkuXG4gICAgcmV0dXJuIHByb3BzW3ZhbHVlUHJvcF0gIT09IHVuZGVmaW5lZCAmJiBwcm9wc1t2YWx1ZVByb3BdICE9PSBudWxsO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udHJvbGxlZC5qcy5tYXAiLCIvKipcbiAqIENvbmNhdGluYXRpb24gaGVscGVyLCB3aGljaCBjYW4gbWVyZ2UgY2xhc3MgbmFtZXMgdG9nZXRoZXIuIFNraXBzIG92ZXIgZmFsc2V5IHZhbHVlcy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjc3MoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciBjbGFzc2VzID0gW107XG4gICAgZm9yICh2YXIgX2EgPSAwLCBhcmdzXzEgPSBhcmdzOyBfYSA8IGFyZ3NfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgdmFyIGFyZyA9IGFyZ3NfMVtfYV07XG4gICAgICAgIGlmIChhcmcpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaChhcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYXJnLmhhc093blByb3BlcnR5KCd0b1N0cmluZycpICYmIHR5cGVvZiBhcmcudG9TdHJpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzLnB1c2goYXJnLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3NzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uL0dsb2JhbFNldHRpbmdzJztcbnZhciBDdXN0b21pemF0aW9uc0dsb2JhbEtleSA9ICdjdXN0b21pemF0aW9ucyc7XG52YXIgTk9fQ1VTVE9NSVpBVElPTlMgPSB7IHNldHRpbmdzOiB7fSwgc2NvcGVkU2V0dGluZ3M6IHt9LCBpbkN1c3RvbWl6ZXJDb250ZXh0OiBmYWxzZSB9O1xudmFyIF9hbGxTZXR0aW5ncyA9IEdsb2JhbFNldHRpbmdzLmdldFZhbHVlKEN1c3RvbWl6YXRpb25zR2xvYmFsS2V5LCB7XG4gICAgc2V0dGluZ3M6IHt9LFxuICAgIHNjb3BlZFNldHRpbmdzOiB7fSxcbiAgICBpbkN1c3RvbWl6ZXJDb250ZXh0OiBmYWxzZSxcbn0pO1xudmFyIF9ldmVudHMgPSBbXTtcbnZhciBDdXN0b21pemF0aW9ucyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDdXN0b21pemF0aW9ucygpIHtcbiAgICB9XG4gICAgQ3VzdG9taXphdGlvbnMucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF9hbGxTZXR0aW5ncy5zZXR0aW5ncyA9IHt9O1xuICAgICAgICBfYWxsU2V0dGluZ3Muc2NvcGVkU2V0dGluZ3MgPSB7fTtcbiAgICB9O1xuICAgIC8qKiBBcHBseSBnbG9iYWwgQ3VzdG9taXphdGlvbiBzZXR0aW5ncy5cbiAgICAgKiBAZXhhbXBsZSBDdXN0b21pemF0aW9ucy5hcHBseVNldHRpbmdzKFxceyB0aGVtZTogXFx7Li4uXFx9IFxcfSk7XG4gICAgICovXG4gICAgQ3VzdG9taXphdGlvbnMuYXBwbHlTZXR0aW5ncyA9IGZ1bmN0aW9uIChzZXR0aW5ncykge1xuICAgICAgICBfYWxsU2V0dGluZ3Muc2V0dGluZ3MgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgX2FsbFNldHRpbmdzLnNldHRpbmdzKSwgc2V0dGluZ3MpO1xuICAgICAgICBDdXN0b21pemF0aW9ucy5fcmFpc2VDaGFuZ2UoKTtcbiAgICB9O1xuICAgIC8qKiBBcHBseSBDdXN0b21pemF0aW9ucyB0byBhIHBhcnRpY3VsYXIgbmFtZWQgc2NvcGUsIGxpa2UgYSBjb21wb25lbnQuXG4gICAgICogQGV4YW1wbGUgQ3VzdG9taXphdGlvbnMuYXBwbHlTY29wZWRTZXR0aW5ncygnTmF2JywgXFx7IHN0eWxlczogKCkgPVxcPiBcXHtcXH0gXFx9KTtcbiAgICAgKi9cbiAgICBDdXN0b21pemF0aW9ucy5hcHBseVNjb3BlZFNldHRpbmdzID0gZnVuY3Rpb24gKHNjb3BlTmFtZSwgc2V0dGluZ3MpIHtcbiAgICAgICAgX2FsbFNldHRpbmdzLnNjb3BlZFNldHRpbmdzW3Njb3BlTmFtZV0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgX2FsbFNldHRpbmdzLnNjb3BlZFNldHRpbmdzW3Njb3BlTmFtZV0pLCBzZXR0aW5ncyk7XG4gICAgICAgIEN1c3RvbWl6YXRpb25zLl9yYWlzZUNoYW5nZSgpO1xuICAgIH07XG4gICAgQ3VzdG9taXphdGlvbnMuZ2V0U2V0dGluZ3MgPSBmdW5jdGlvbiAocHJvcGVydGllcywgc2NvcGVOYW1lLCBsb2NhbFNldHRpbmdzKSB7XG4gICAgICAgIGlmIChsb2NhbFNldHRpbmdzID09PSB2b2lkIDApIHsgbG9jYWxTZXR0aW5ncyA9IE5PX0NVU1RPTUlaQVRJT05TOyB9XG4gICAgICAgIHZhciBzZXR0aW5ncyA9IHt9O1xuICAgICAgICB2YXIgbG9jYWxTY29wZWRTZXR0aW5ncyA9IChzY29wZU5hbWUgJiYgbG9jYWxTZXR0aW5ncy5zY29wZWRTZXR0aW5nc1tzY29wZU5hbWVdKSB8fCB7fTtcbiAgICAgICAgdmFyIGdsb2JhbFNjb3BlZFNldHRpbmdzID0gKHNjb3BlTmFtZSAmJiBfYWxsU2V0dGluZ3Muc2NvcGVkU2V0dGluZ3Nbc2NvcGVOYW1lXSkgfHwge307XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcHJvcGVydGllc18xID0gcHJvcGVydGllczsgX2kgPCBwcm9wZXJ0aWVzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzXzFbX2ldO1xuICAgICAgICAgICAgc2V0dGluZ3NbcHJvcGVydHldID1cbiAgICAgICAgICAgICAgICBsb2NhbFNjb3BlZFNldHRpbmdzW3Byb3BlcnR5XSB8fFxuICAgICAgICAgICAgICAgICAgICBsb2NhbFNldHRpbmdzLnNldHRpbmdzW3Byb3BlcnR5XSB8fFxuICAgICAgICAgICAgICAgICAgICBnbG9iYWxTY29wZWRTZXR0aW5nc1twcm9wZXJ0eV0gfHxcbiAgICAgICAgICAgICAgICAgICAgX2FsbFNldHRpbmdzLnNldHRpbmdzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2V0dGluZ3M7XG4gICAgfTtcbiAgICAvKiogVXNlZCB0byBydW4gc29tZSBjb2RlIHRoYXQgc2V0cyBDdXN0b21pemF0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYW4gdXBkYXRlIHVudGlsIHRoZSBlbmQuXG4gICAgICogVXNlZnVsIGZvciBhcHBseWluZyBDdXN0b21pemF0aW9ucyB0aGF0IGRvbid0IGFmZmVjdCBhbnl0aGluZyBjdXJyZW50bHkgcmVuZGVyZWQsIG9yIGZvclxuICAgICAqIGFwcGx5aW5nIG1hbnkgY3VzdG9taXphdGlvbnMgYXQgb25jZS5cbiAgICAgKiBAcGFyYW0gc3VwcHJlc3NVcGRhdGUgLSBEbyBub3QgcmFpc2UgdGhlIGNoYW5nZSBldmVudCBhdCB0aGUgZW5kLCBwcmV2ZW50aW5nIGFsbCB1cGRhdGVzXG4gICAgICovXG4gICAgQ3VzdG9taXphdGlvbnMuYXBwbHlCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uIChjb2RlLCBzdXBwcmVzc1VwZGF0ZSkge1xuICAgICAgICBDdXN0b21pemF0aW9ucy5fc3VwcHJlc3NVcGRhdGVzID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi9cbiAgICAgICAgfVxuICAgICAgICBDdXN0b21pemF0aW9ucy5fc3VwcHJlc3NVcGRhdGVzID0gZmFsc2U7XG4gICAgICAgIGlmICghc3VwcHJlc3NVcGRhdGUpIHtcbiAgICAgICAgICAgIEN1c3RvbWl6YXRpb25zLl9yYWlzZUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBDdXN0b21pemF0aW9ucy5vYnNlcnZlID0gZnVuY3Rpb24gKG9uQ2hhbmdlKSB7XG4gICAgICAgIF9ldmVudHMucHVzaChvbkNoYW5nZSk7XG4gICAgfTtcbiAgICBDdXN0b21pemF0aW9ucy51bm9ic2VydmUgPSBmdW5jdGlvbiAob25DaGFuZ2UpIHtcbiAgICAgICAgX2V2ZW50cyA9IF9ldmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjYikgeyByZXR1cm4gY2IgIT09IG9uQ2hhbmdlOyB9KTtcbiAgICB9O1xuICAgIEN1c3RvbWl6YXRpb25zLl9yYWlzZUNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFDdXN0b21pemF0aW9ucy5fc3VwcHJlc3NVcGRhdGVzKSB7XG4gICAgICAgICAgICBfZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGNiKSB7IHJldHVybiBjYigpOyB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEN1c3RvbWl6YXRpb25zO1xufSgpKTtcbmV4cG9ydCB7IEN1c3RvbWl6YXRpb25zIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DdXN0b21pemF0aW9ucy5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgdmFyIEN1c3RvbWl6ZXJDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7XG4gICAgY3VzdG9taXphdGlvbnM6IHtcbiAgICAgICAgaW5DdXN0b21pemVyQ29udGV4dDogZmFsc2UsXG4gICAgICAgIHNldHRpbmdzOiB7fSxcbiAgICAgICAgc2NvcGVkU2V0dGluZ3M6IHt9LFxuICAgIH0sXG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUN1c3RvbWl6ZXJDb250ZXh0LmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIE1lcmdlIG5ldyBhbmQgb2xkIHNldHRpbmdzLCBnaXZpbmcgcHJpb3JpdHkgdG8gbmV3IHNldHRpbmdzLlxuICogTmV3IHNldHRpbmdzIGlzIG9wdGlvbmFsIGluIHdoaWNoIGNhc2Ugb2xkU2V0dGluZ3MgaXMgcmV0dXJuZWQgYXMtaXMuXG4gKiBAcGFyYW0gb2xkU2V0dGluZ3MgLSBPbGQgc2V0dGluZ3MgdG8gZmFsbCBiYWNrIHRvLlxuICogQHBhcmFtIG5ld1NldHRpbmdzIC0gTmV3IHNldHRpbmdzIHRoYXQgd2lsbCBiZSBtZXJnZWQgb3ZlciBvbGRTZXR0aW5ncy5cbiAqIEByZXR1cm5zIE1lcmdlZCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlU2V0dGluZ3Mob2xkU2V0dGluZ3MsIG5ld1NldHRpbmdzKSB7XG4gICAgaWYgKG9sZFNldHRpbmdzID09PSB2b2lkIDApIHsgb2xkU2V0dGluZ3MgPSB7fTsgfVxuICAgIHZhciBtZXJnZVNldHRpbmdzV2l0aCA9IF9pc1NldHRpbmdzRnVuY3Rpb24obmV3U2V0dGluZ3MpID8gbmV3U2V0dGluZ3MgOiBfc2V0dGluZ3NNZXJnZVdpdGgobmV3U2V0dGluZ3MpO1xuICAgIHJldHVybiBtZXJnZVNldHRpbmdzV2l0aChvbGRTZXR0aW5ncyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTY29wZWRTZXR0aW5ncyhvbGRTZXR0aW5ncywgbmV3U2V0dGluZ3MpIHtcbiAgICBpZiAob2xkU2V0dGluZ3MgPT09IHZvaWQgMCkgeyBvbGRTZXR0aW5ncyA9IHt9OyB9XG4gICAgdmFyIG1lcmdlU2V0dGluZ3NXaXRoID0gX2lzU2V0dGluZ3NGdW5jdGlvbihuZXdTZXR0aW5ncykgPyBuZXdTZXR0aW5ncyA6IF9zY29wZWRTZXR0aW5nc01lcmdlV2l0aChuZXdTZXR0aW5ncyk7XG4gICAgcmV0dXJuIG1lcmdlU2V0dGluZ3NXaXRoKG9sZFNldHRpbmdzKTtcbn1cbmZ1bmN0aW9uIF9pc1NldHRpbmdzRnVuY3Rpb24oc2V0dGluZ3MpIHtcbiAgICByZXR1cm4gdHlwZW9mIHNldHRpbmdzID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gX3NldHRpbmdzTWVyZ2VXaXRoKG5ld1NldHRpbmdzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzZXR0aW5ncykgeyByZXR1cm4gKG5ld1NldHRpbmdzID8gX19hc3NpZ24oX19hc3NpZ24oe30sIHNldHRpbmdzKSwgbmV3U2V0dGluZ3MpIDogc2V0dGluZ3MpOyB9O1xufVxuZnVuY3Rpb24gX3Njb3BlZFNldHRpbmdzTWVyZ2VXaXRoKHNjb3BlZFNldHRpbmdzRnJvbVByb3BzKSB7XG4gICAgaWYgKHNjb3BlZFNldHRpbmdzRnJvbVByb3BzID09PSB2b2lkIDApIHsgc2NvcGVkU2V0dGluZ3NGcm9tUHJvcHMgPSB7fTsgfVxuICAgIHJldHVybiBmdW5jdGlvbiAob2xkU2NvcGVkU2V0dGluZ3MpIHtcbiAgICAgICAgdmFyIG5ld1Njb3BlZFNldHRpbmdzID0gX19hc3NpZ24oe30sIG9sZFNjb3BlZFNldHRpbmdzKTtcbiAgICAgICAgZm9yICh2YXIgc2NvcGVOYW1lIGluIHNjb3BlZFNldHRpbmdzRnJvbVByb3BzKSB7XG4gICAgICAgICAgICBpZiAoc2NvcGVkU2V0dGluZ3NGcm9tUHJvcHMuaGFzT3duUHJvcGVydHkoc2NvcGVOYW1lKSkge1xuICAgICAgICAgICAgICAgIG5ld1Njb3BlZFNldHRpbmdzW3Njb3BlTmFtZV0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2xkU2NvcGVkU2V0dGluZ3Nbc2NvcGVOYW1lXSksIHNjb3BlZFNldHRpbmdzRnJvbVByb3BzW3Njb3BlTmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTY29wZWRTZXR0aW5ncztcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VTZXR0aW5ncy5qcy5tYXAiLCJpbXBvcnQgeyBtZXJnZVNldHRpbmdzLCBtZXJnZVNjb3BlZFNldHRpbmdzIH0gZnJvbSAnLi9tZXJnZVNldHRpbmdzJztcbi8qKlxuICogTWVyZ2UgcHJvcHMgYW5kIGN1c3RvbWl6YXRpb25zIGdpdmluZyBwcmlvcml0eSB0byBwcm9wcyBvdmVyIGNvbnRleHQuXG4gKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIHBlcmZvcm0gbXVsdGlwbGUgbWVyZ2Ugb3BlcmF0aW9ucy4gVXNlIHdpdGggY2F1dGlvbi5cbiAqIEBwYXJhbSBwcm9wcyAtIE5ldyBzZXR0aW5ncyB0byBtZXJnZSBpbi5cbiAqIEBwYXJhbSBwYXJlbnRDb250ZXh0IC0gQ29udGV4dCBjb250YWluaW5nIGN1cnJlbnQgc2V0dGluZ3MuXG4gKiBAcmV0dXJucyBNZXJnZWQgY3VzdG9taXphdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUN1c3RvbWl6YXRpb25zKHByb3BzLCBwYXJlbnRDb250ZXh0KSB7XG4gICAgdmFyIF9hID0gKHBhcmVudENvbnRleHQgfHwge30pLmN1c3RvbWl6YXRpb25zLCBjdXN0b21pemF0aW9ucyA9IF9hID09PSB2b2lkIDAgPyB7IHNldHRpbmdzOiB7fSwgc2NvcGVkU2V0dGluZ3M6IHt9IH0gOiBfYTtcbiAgICByZXR1cm4ge1xuICAgICAgICBjdXN0b21pemF0aW9uczoge1xuICAgICAgICAgICAgc2V0dGluZ3M6IG1lcmdlU2V0dGluZ3MoY3VzdG9taXphdGlvbnMuc2V0dGluZ3MsIHByb3BzLnNldHRpbmdzKSxcbiAgICAgICAgICAgIHNjb3BlZFNldHRpbmdzOiBtZXJnZVNjb3BlZFNldHRpbmdzKGN1c3RvbWl6YXRpb25zLnNjb3BlZFNldHRpbmdzLCBwcm9wcy5zY29wZWRTZXR0aW5ncyksXG4gICAgICAgICAgICBpbkN1c3RvbWl6ZXJDb250ZXh0OiB0cnVlLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXJnZUN1c3RvbWl6YXRpb25zLmpzLm1hcCIsImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ3VzdG9taXphdGlvbnMgfSBmcm9tICcuL0N1c3RvbWl6YXRpb25zJztcbmltcG9ydCB7IEN1c3RvbWl6ZXJDb250ZXh0IH0gZnJvbSAnLi9DdXN0b21pemVyQ29udGV4dCc7XG5pbXBvcnQgeyBtZXJnZUN1c3RvbWl6YXRpb25zIH0gZnJvbSAnLi9tZXJnZUN1c3RvbWl6YXRpb25zJztcbi8qKlxuICogVGhlIEN1c3RvbWl6ZXIgY29tcG9uZW50IGFsbG93cyBmb3IgZGVmYXVsdCBwcm9wcyB0byBiZSBtaXhlZCBpbnRvIGNvbXBvbmVudHMgd2hpY2hcbiAqIGFyZSBkZWNvcmF0ZWQgd2l0aCB0aGUgY3VzdG9taXphYmxlKCkgZGVjb3JhdG9yLCBvciB1c2UgdGhlIHN0eWxlZCBIT0MuIFRoaXMgZW5hYmxlc1xuICogaW5qZWN0aW9uIHNjZW5hcmlvcyBsaWtlOlxuICpcbiAqIDEuIHJlbmRlciBzdmcgaWNvbnMgaW5zdGVhZCBvZiB0aGUgaWNvbiBmb250IHdpdGhpbiBhbGwgYnV0dG9uc1xuICogMi4gaW5qZWN0IGEgY3VzdG9tIHRoZW1lIG9iamVjdCBpbnRvIGEgY29tcG9uZW50XG4gKlxuICogUHJvcHMgYXJlIHByb3ZpZGVkIHZpYSB0aGUgc2V0dGluZ3MgcHJvcCB3aGljaCBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gKiAtIEEganNvbiBtYXAgd2hpY2ggY29udGFpbnMgMSBvciBtb3JlIG5hbWUvdmFsdWUgcGFpcnMgcmVwcmVzZW50aW5nIGluamVjdGFibGUgcHJvcHMuXG4gKiAtIEEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgY3VycmVudCBzZXR0aW5ncyBhbmQgcmV0dXJucyB0aGUgbmV3IG9uZXMgdGhhdCBhcHBseSB0byB0aGUgc2NvcGVcbiAqXG4gKiBAcHVibGljXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBmb3IgcHVycG9zZSBvZiBhcHBseWluZyB0aGVtZSB0byBjb21wb25lbnRzXG4gKiBhcyBvZiBgQGZsdWVudHVpL3JlYWN0YCB2ZXJzaW9uIDguIFVzZSBgVGhlbWVQcm92aWRlcmAgZm9yIGFwcGx5aW5nIHRoZW1lIGluc3RlYWQuXG4gKi9cbnZhciBDdXN0b21pemVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDdXN0b21pemVyLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEN1c3RvbWl6ZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fb25DdXN0b21pemF0aW9uQ2hhbmdlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuZm9yY2VVcGRhdGUoKTsgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDdXN0b21pemVyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgQ3VzdG9taXphdGlvbnMub2JzZXJ2ZSh0aGlzLl9vbkN1c3RvbWl6YXRpb25DaGFuZ2UpO1xuICAgIH07XG4gICAgQ3VzdG9taXplci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIEN1c3RvbWl6YXRpb25zLnVub2JzZXJ2ZSh0aGlzLl9vbkN1c3RvbWl6YXRpb25DaGFuZ2UpO1xuICAgIH07XG4gICAgQ3VzdG9taXplci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgY29udGV4dFRyYW5zZm9ybSA9IHRoaXMucHJvcHMuY29udGV4dFRyYW5zZm9ybTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEN1c3RvbWl6ZXJDb250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAocGFyZW50Q29udGV4dCkge1xuICAgICAgICAgICAgdmFyIG5ld0NvbnRleHQgPSBtZXJnZUN1c3RvbWl6YXRpb25zKF90aGlzLnByb3BzLCBwYXJlbnRDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0VHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgbmV3Q29udGV4dCA9IGNvbnRleHRUcmFuc2Zvcm0obmV3Q29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDdXN0b21pemVyQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogbmV3Q29udGV4dCB9LCBfdGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIHJldHVybiBDdXN0b21pemVyO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IEN1c3RvbWl6ZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUN1c3RvbWl6ZXIuanMubWFwIiwiLyoqXG4gKiBBbGxvd3MgeW91IHRvIGhvaXN0IHN0YXRpYyBmdW5jdGlvbnMgaW4gY29tcG9uZW50cy5cbiAqIENyZWF0ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIGZpeGluZyBicm9rZW4gc3RhdGljIGZ1bmN0aW9ucyBpbiBjbGFzc2VzXG4gKiB0aGF0IHV0aWxpemUgZGVjb3JhdG9ycy5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIG9iamVjdCB3aGVyZSB0aGUgbWV0aG9kcyBhcmUgaG9pc3RlZCBmcm9tLlxuICogQHBhcmFtIGRlc3QgLSBUaGUgb2JqZWN0IHRvIGhvaXN0IHRoZSBtZXRob2RzIG9udG8uXG4gKiBAcmV0dXJucyBUaGUgZGVzdCBvYmplY3Qgd2l0aCBtZXRob2RzIGFkZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBob2lzdFN0YXRpY3Moc291cmNlLCBkZXN0KSB7XG4gICAgZm9yICh2YXIgbmFtZV8xIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KG5hbWVfMSkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBkZXN0W25hbWVfMV0gPSBzb3VyY2VbbmFtZV8xXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVzdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhvaXN0U3RhdGljcy5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDdXN0b21pemF0aW9ucyB9IGZyb20gJy4vQ3VzdG9taXphdGlvbnMnO1xuaW1wb3J0IHsgaG9pc3RTdGF0aWNzIH0gZnJvbSAnLi4vaG9pc3RTdGF0aWNzJztcbmltcG9ydCB7IEN1c3RvbWl6ZXJDb250ZXh0IH0gZnJvbSAnLi9DdXN0b21pemVyQ29udGV4dCc7XG5pbXBvcnQgeyBjb25jYXRTdHlsZVNldHMgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21pemFibGUoc2NvcGUsIGZpZWxkcywgY29uY2F0U3R5bGVzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZXR1cm4gZnVuY3Rpb24gY3VzdG9taXphYmxlRmFjdG9yeShDb21wb3NlZENvbXBvbmVudCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciByZXN1bHRDbGFzcyA9IChfYSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgICAgICAgICBfX2V4dGVuZHMoQ29tcG9uZW50V2l0aEluamVjdGVkUHJvcHMsIF9zdXBlcik7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gQ29tcG9uZW50V2l0aEluamVjdGVkUHJvcHMocHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpIHx8IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdHlsZUNhY2hlID0ge307XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9vblNldHRpbmdDaGFuZ2VkID0gX3RoaXMuX29uU2V0dGluZ0NoYW5nZWQuYmluZChfdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQ29tcG9uZW50V2l0aEluamVjdGVkUHJvcHMucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBDdXN0b21pemF0aW9ucy5vYnNlcnZlKHRoaXMuX29uU2V0dGluZ0NoYW5nZWQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgQ29tcG9uZW50V2l0aEluamVjdGVkUHJvcHMucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBDdXN0b21pemF0aW9ucy51bm9ic2VydmUodGhpcy5fb25TZXR0aW5nQ2hhbmdlZCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBDb21wb25lbnRXaXRoSW5qZWN0ZWRQcm9wcy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ3VzdG9taXplckNvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdFByb3BzID0gQ3VzdG9taXphdGlvbnMuZ2V0U2V0dGluZ3MoZmllbGRzLCBzY29wZSwgY29udGV4dC5jdXN0b21pemF0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbXBvbmVudFByb3BzID0gX3RoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBkZWZhdWx0UHJvcHMuc3R5bGVzIGlzIGEgZnVuY3Rpb24sIGV2YWx1YXRlIGl0IGJlZm9yZSBjYWxsaW5nIGNvbmNhdFN0eWxlU2V0c1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRQcm9wcy5zdHlsZXMgJiYgdHlwZW9mIGRlZmF1bHRQcm9wcy5zdHlsZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UHJvcHMuc3R5bGVzID0gZGVmYXVsdFByb3BzLnN0eWxlcyhfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdFByb3BzKSwgY29tcG9uZW50UHJvcHMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNvbmNhdFN0eWxlcyBpcyB0cnVlIGFuZCBjdXN0b20gc3R5bGVzIGhhdmUgYmVlbiBkZWZpbmVkIGNvbXB1dGUgdGhvc2Ugc3R5bGVzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uY2F0U3R5bGVzICYmIGRlZmF1bHRQcm9wcy5zdHlsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX3N0eWxlQ2FjaGUuZGVmYXVsdCAhPT0gZGVmYXVsdFByb3BzLnN0eWxlcyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3R5bGVDYWNoZS5jb21wb25lbnQgIT09IGNvbXBvbmVudFByb3BzLnN0eWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVyZ2VkU3R5bGVzID0gY29uY2F0U3R5bGVTZXRzKGRlZmF1bHRQcm9wcy5zdHlsZXMsIGNvbXBvbmVudFByb3BzLnN0eWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdHlsZUNhY2hlLmRlZmF1bHQgPSBkZWZhdWx0UHJvcHMuc3R5bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5fc3R5bGVDYWNoZS5jb21wb25lbnQgPSBjb21wb25lbnRQcm9wcy5zdHlsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9zdHlsZUNhY2hlLm1lcmdlZCA9IG1lcmdlZFN0eWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9zZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBkZWZhdWx0UHJvcHMsIGNvbXBvbmVudFByb3BzLCB7IHN0eWxlczogX3RoaXMuX3N0eWxlQ2FjaGUubWVyZ2VkIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvc2VkQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgZGVmYXVsdFByb3BzLCBjb21wb25lbnRQcm9wcykpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBDb21wb25lbnRXaXRoSW5qZWN0ZWRQcm9wcy5wcm90b3R5cGUuX29uU2V0dGluZ0NoYW5nZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBDb21wb25lbnRXaXRoSW5qZWN0ZWRQcm9wcztcbiAgICAgICAgICAgIH0oUmVhY3QuQ29tcG9uZW50KSksXG4gICAgICAgICAgICBfYS5kaXNwbGF5TmFtZSA9ICdDdXN0b21pemVkJyArIHNjb3BlLFxuICAgICAgICAgICAgX2EpO1xuICAgICAgICByZXR1cm4gaG9pc3RTdGF0aWNzKENvbXBvc2VkQ29tcG9uZW50LCByZXN1bHRDbGFzcyk7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWN1c3RvbWl6YWJsZS5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDdXN0b21pemF0aW9ucyB9IGZyb20gJy4vQ3VzdG9taXphdGlvbnMnO1xuaW1wb3J0IHsgQ3VzdG9taXplckNvbnRleHQgfSBmcm9tICcuL0N1c3RvbWl6ZXJDb250ZXh0Jztcbi8qKlxuICogSG9vayB0byBnZXQgQ3VzdG9taXphdGlvbnMgc2V0dGluZ3MgZnJvbSBDdXN0b21pemF0aW9ucyBzaW5nbGV0b24gb3IgQ3VzdG9taXplckNvbnRleHQuXG4gKiBJdCB3aWxsIHRyaWdnZXIgY29tcG9uZW50IHN0YXRlIHVwZGF0ZSBvbiBzZXR0aW5ncyBjaGFuZ2Ugb2JzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXN0b21pemF0aW9uU2V0dGluZ3MocHJvcGVydGllcywgc2NvcGVOYW1lKSB7XG4gICAgdmFyIGZvcmNlVXBkYXRlID0gdXNlRm9yY2VVcGRhdGUoKTtcbiAgICB2YXIgY3VzdG9taXphdGlvbnMgPSBSZWFjdC51c2VDb250ZXh0KEN1c3RvbWl6ZXJDb250ZXh0KS5jdXN0b21pemF0aW9ucztcbiAgICB2YXIgaW5DdXN0b21pemVyQ29udGV4dCA9IGN1c3RvbWl6YXRpb25zLmluQ3VzdG9taXplckNvbnRleHQ7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFpbkN1c3RvbWl6ZXJDb250ZXh0KSB7XG4gICAgICAgICAgICBDdXN0b21pemF0aW9ucy5vYnNlcnZlKGZvcmNlVXBkYXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFpbkN1c3RvbWl6ZXJDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgQ3VzdG9taXphdGlvbnMudW5vYnNlcnZlKGZvcmNlVXBkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBleGNsdWRlIGZvcmNlVXBkYXRlXG4gICAgfSwgW2luQ3VzdG9taXplckNvbnRleHRdKTtcbiAgICByZXR1cm4gQ3VzdG9taXphdGlvbnMuZ2V0U2V0dGluZ3MocHJvcGVydGllcywgc2NvcGVOYW1lLCBjdXN0b21pemF0aW9ucyk7XG59XG5mdW5jdGlvbiB1c2VGb3JjZVVwZGF0ZSgpIHtcbiAgICB2YXIgX2EgPSBSZWFjdC51c2VTdGF0ZSgwKSwgc2V0VmFsdWUgPSBfYVsxXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0VmFsdWUoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiArK3ZhbHVlOyB9KTsgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZUN1c3RvbWl6YXRpb25TZXR0aW5ncy5qcy5tYXAiLCJpbXBvcnQgeyBhcHBlbmRGdW5jdGlvbiB9IGZyb20gJy4vYXBwZW5kRnVuY3Rpb24nO1xuLyoqXG4gKiBFeHRlbmRzIGEgY29tcG9uZW50J3MgbGlmZXRpbWUgbWV0aG9kcyBieSBhcHBlbmRpbmcgbmV3IGZ1bmN0aW9ucyB0byB0aGUgZXhpc3RpbmcgbGlmZXRpbWUgZnVuY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kQ29tcG9uZW50KHBhcmVudCwgbWV0aG9kcykge1xuICAgIGZvciAodmFyIG5hbWVfMSBpbiBtZXRob2RzKSB7XG4gICAgICAgIGlmIChtZXRob2RzLmhhc093blByb3BlcnR5KG5hbWVfMSkpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwYXJlbnRbbmFtZV8xXSA9IGFwcGVuZEZ1bmN0aW9uKHBhcmVudCwgcGFyZW50W25hbWVfMV0sIG1ldGhvZHNbbmFtZV8xXSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1leHRlbmRDb21wb25lbnQuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93JztcbmltcG9ydCB7IFN0eWxlc2hlZXQgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbi8vIEluaXRpYWxpemUgZ2xvYmFsIHdpbmRvdyBpZC5cbnZhciBDVVJSRU5UX0lEX1BST1BFUlRZID0gJ19fY3VycmVudElkX18nO1xudmFyIERFRkFVTFRfSURfU1RSSU5HID0gJ2lkX18nO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnZhciBfZ2xvYmFsID0gZ2V0V2luZG93KCkgfHwge307XG5pZiAoX2dsb2JhbFtDVVJSRU5UX0lEX1BST1BFUlRZXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgX2dsb2JhbFtDVVJSRU5UX0lEX1BST1BFUlRZXSA9IDA7XG59XG52YXIgX2luaXRpYWxpemVkU3R5bGVzaGVldFJlc2V0cyA9IGZhbHNlO1xuLyoqXG4gKiBHZW5lcmF0ZXMgYSB1bmlxdWUgaWQgaW4gdGhlIGdsb2JhbCBzY29wZSAodGhpcyBzcGFucyBhY3Jvc3MgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUgc2FtZSBsaWJyYXJ5LilcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZChwcmVmaXgpIHtcbiAgICBpZiAoIV9pbml0aWFsaXplZFN0eWxlc2hlZXRSZXNldHMpIHtcbiAgICAgICAgLy8gQ29uZmlndXJlIGlkcyB0byByZXNldCBvbiBzdHlsZXNoZWV0IHJlc2V0cy5cbiAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgICAgIGlmIChzdHlsZXNoZWV0ICYmIHN0eWxlc2hlZXQub25SZXNldCkge1xuICAgICAgICAgICAgc3R5bGVzaGVldC5vblJlc2V0KHJlc2V0SWRzKTtcbiAgICAgICAgfVxuICAgICAgICBfaW5pdGlhbGl6ZWRTdHlsZXNoZWV0UmVzZXRzID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gX2dsb2JhbFtDVVJSRU5UX0lEX1BST1BFUlRZXSsrO1xuICAgIHJldHVybiAocHJlZml4ID09PSB1bmRlZmluZWQgPyBERUZBVUxUX0lEX1NUUklORyA6IHByZWZpeCkgKyBpbmRleDtcbn1cbi8qKlxuICogUmVzZXRzIGlkIGNvdW50ZXIgdG8gYW4gKG9wdGlvbmFsKSBudW1iZXIuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRJZHMoY291bnRlcikge1xuICAgIGlmIChjb3VudGVyID09PSB2b2lkIDApIHsgY291bnRlciA9IDA7IH1cbiAgICBfZ2xvYmFsW0NVUlJFTlRfSURfUFJPUEVSVFldID0gY291bnRlcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldElkLmpzLm1hcCIsInZhciB0b09iamVjdE1hcCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBpdGVtc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIgX2EgPSAwLCBpdGVtc18xID0gaXRlbXM7IF9hIDwgaXRlbXNfMS5sZW5ndGg7IF9hKyspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBpdGVtc18xW19hXTtcbiAgICAgICAgdmFyIGtleXMgPSBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IE9iamVjdC5rZXlzKGl0ZW0pO1xuICAgICAgICBmb3IgKHZhciBfYiA9IDAsIGtleXNfMSA9IGtleXM7IF9iIDwga2V5c18xLmxlbmd0aDsgX2IrKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNfMVtfYl07XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG4vKipcbiAqIEFuIGFycmF5IG9mIGV2ZW50cyB0aGF0IGFyZSBhbGxvd2VkIG9uIGV2ZXJ5IGh0bWwgZWxlbWVudCB0eXBlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHZhciBiYXNlRWxlbWVudEV2ZW50cyA9IHRvT2JqZWN0TWFwKFtcbiAgICAnb25Db3B5JyxcbiAgICAnb25DdXQnLFxuICAgICdvblBhc3RlJyxcbiAgICAnb25Db21wb3NpdGlvbkVuZCcsXG4gICAgJ29uQ29tcG9zaXRpb25TdGFydCcsXG4gICAgJ29uQ29tcG9zaXRpb25VcGRhdGUnLFxuICAgICdvbkZvY3VzJyxcbiAgICAnb25Gb2N1c0NhcHR1cmUnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkJsdXJDYXB0dXJlJyxcbiAgICAnb25DaGFuZ2UnLFxuICAgICdvbklucHV0JyxcbiAgICAnb25TdWJtaXQnLFxuICAgICdvbkxvYWQnLFxuICAgICdvbkVycm9yJyxcbiAgICAnb25LZXlEb3duJyxcbiAgICAnb25LZXlEb3duQ2FwdHVyZScsXG4gICAgJ29uS2V5UHJlc3MnLFxuICAgICdvbktleVVwJyxcbiAgICAnb25BYm9ydCcsXG4gICAgJ29uQ2FuUGxheScsXG4gICAgJ29uQ2FuUGxheVRocm91Z2gnLFxuICAgICdvbkR1cmF0aW9uQ2hhbmdlJyxcbiAgICAnb25FbXB0aWVkJyxcbiAgICAnb25FbmNyeXB0ZWQnLFxuICAgICdvbkVuZGVkJyxcbiAgICAnb25Mb2FkZWREYXRhJyxcbiAgICAnb25Mb2FkZWRNZXRhZGF0YScsXG4gICAgJ29uTG9hZFN0YXJ0JyxcbiAgICAnb25QYXVzZScsXG4gICAgJ29uUGxheScsXG4gICAgJ29uUGxheWluZycsXG4gICAgJ29uUHJvZ3Jlc3MnLFxuICAgICdvblJhdGVDaGFuZ2UnLFxuICAgICdvblNlZWtlZCcsXG4gICAgJ29uU2Vla2luZycsXG4gICAgJ29uU3RhbGxlZCcsXG4gICAgJ29uU3VzcGVuZCcsXG4gICAgJ29uVGltZVVwZGF0ZScsXG4gICAgJ29uVm9sdW1lQ2hhbmdlJyxcbiAgICAnb25XYWl0aW5nJyxcbiAgICAnb25DbGljaycsXG4gICAgJ29uQ2xpY2tDYXB0dXJlJyxcbiAgICAnb25Db250ZXh0TWVudScsXG4gICAgJ29uRG91YmxlQ2xpY2snLFxuICAgICdvbkRyYWcnLFxuICAgICdvbkRyYWdFbmQnLFxuICAgICdvbkRyYWdFbnRlcicsXG4gICAgJ29uRHJhZ0V4aXQnLFxuICAgICdvbkRyYWdMZWF2ZScsXG4gICAgJ29uRHJhZ092ZXInLFxuICAgICdvbkRyYWdTdGFydCcsXG4gICAgJ29uRHJvcCcsXG4gICAgJ29uTW91c2VEb3duJyxcbiAgICAnb25Nb3VzZURvd25DYXB0dXJlJyxcbiAgICAnb25Nb3VzZUVudGVyJyxcbiAgICAnb25Nb3VzZUxlYXZlJyxcbiAgICAnb25Nb3VzZU1vdmUnLFxuICAgICdvbk1vdXNlT3V0JyxcbiAgICAnb25Nb3VzZU92ZXInLFxuICAgICdvbk1vdXNlVXAnLFxuICAgICdvbk1vdXNlVXBDYXB0dXJlJyxcbiAgICAnb25TZWxlY3QnLFxuICAgICdvblRvdWNoQ2FuY2VsJyxcbiAgICAnb25Ub3VjaEVuZCcsXG4gICAgJ29uVG91Y2hNb3ZlJyxcbiAgICAnb25Ub3VjaFN0YXJ0JyxcbiAgICAnb25TY3JvbGwnLFxuICAgICdvbldoZWVsJyxcbiAgICAnb25Qb2ludGVyQ2FuY2VsJyxcbiAgICAnb25Qb2ludGVyRG93bicsXG4gICAgJ29uUG9pbnRlckVudGVyJyxcbiAgICAnb25Qb2ludGVyTGVhdmUnLFxuICAgICdvblBvaW50ZXJNb3ZlJyxcbiAgICAnb25Qb2ludGVyT3V0JyxcbiAgICAnb25Qb2ludGVyT3ZlcicsXG4gICAgJ29uUG9pbnRlclVwJyxcbiAgICAnb25Hb3RQb2ludGVyQ2FwdHVyZScsXG4gICAgJ29uTG9zdFBvaW50ZXJDYXB0dXJlJyxcbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBlbGVtZW50IGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFsbG93ZWQgb24gZXZlcnkgaHRtbCBlbGVtZW50IHR5cGUuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIGJhc2VFbGVtZW50UHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKFtcbiAgICAnYWNjZXNzS2V5JyxcbiAgICAnY2hpbGRyZW4nLFxuICAgICdjbGFzc05hbWUnLFxuICAgICdjb250ZW50RWRpdGFibGUnLFxuICAgICdkaXInLFxuICAgICdkcmFnZ2FibGUnLFxuICAgICdoaWRkZW4nLFxuICAgICdodG1sRm9yJyxcbiAgICAnaWQnLFxuICAgICdsYW5nJyxcbiAgICAncmVmJyxcbiAgICAncm9sZScsXG4gICAgJ3N0eWxlJyxcbiAgICAndGFiSW5kZXgnLFxuICAgICd0aXRsZScsXG4gICAgJ3RyYW5zbGF0ZScsXG4gICAgJ3NwZWxsQ2hlY2snLFxuICAgICduYW1lJywgLy8gZ2xvYmFsXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgSFRNTCBlbGVtZW50IHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgaHRtbEVsZW1lbnRQcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoYmFzZUVsZW1lbnRQcm9wZXJ0aWVzLCBiYXNlRWxlbWVudEV2ZW50cyk7XG4vKipcbiAqIEFuIGFycmF5IG9mIExBQkVMIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIGxhYmVsUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICdmb3JtJywgLy8gYnV0dG9uLCBmaWVsZHNldCwgaW5wdXQsIGxhYmVsLCBtZXRlciwgb2JqZWN0LCBvdXRwdXQsIHNlbGVjdCwgdGV4dGFyZWFcbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBBVURJTyB0YWcgcHJvcGVydGllcyBhbmQgZXZlbnRzLlxuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgYXVkaW9Qcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoaHRtbEVsZW1lbnRQcm9wZXJ0aWVzLCBbXG4gICAgJ2hlaWdodCcsXG4gICAgJ2xvb3AnLFxuICAgICdtdXRlZCcsXG4gICAgJ3ByZWxvYWQnLFxuICAgICdzcmMnLFxuICAgICd3aWR0aCcsIC8vIGNhbnZhcywgZW1iZWQsIGlmcmFtZSwgaW1nLCBpbnB1dCwgb2JqZWN0LCB2aWRlb1xuXSk7XG4vKipcbiAqIEFuIGFycmF5IG9mIFZJREVPIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIHZpZGVvUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGF1ZGlvUHJvcGVydGllcywgW1xuICAgICdwb3N0ZXInLCAvLyB2aWRlb1xuXSk7XG4vKipcbiAqIEFuIGFycmF5IG9mIE9MIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIG9sUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICdzdGFydCcsIC8vIG9sXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgTEkgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgbGlQcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoaHRtbEVsZW1lbnRQcm9wZXJ0aWVzLCBbXG4gICAgJ3ZhbHVlJywgLy8gYnV0dG9uLCBpbnB1dCwgbGksIG9wdGlvbiwgbWV0ZXIsIHByb2dyZXNzLCBwYXJhbVxuXSk7XG4vKipcbiAqIEFuIGFycmF5IG9mIEEgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgYW5jaG9yUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICdkb3dubG9hZCcsXG4gICAgJ2hyZWYnLFxuICAgICdocmVmTGFuZycsXG4gICAgJ21lZGlhJyxcbiAgICAncmVsJyxcbiAgICAndGFyZ2V0JyxcbiAgICAndHlwZScsIC8vIGEsIGJ1dHRvbiwgaW5wdXQsIGxpbmssIG1lbnUsIG9iamVjdCwgc2NyaXB0LCBzb3VyY2UsIHN0eWxlXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgQlVUVE9OIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIGJ1dHRvblByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnYXV0b0ZvY3VzJyxcbiAgICAnZGlzYWJsZWQnLFxuICAgICdmb3JtJyxcbiAgICAnZm9ybUFjdGlvbicsXG4gICAgJ2Zvcm1FbmNUeXBlJyxcbiAgICAnZm9ybU1ldGhvZCcsXG4gICAgJ2Zvcm1Ob1ZhbGlkYXRlJyxcbiAgICAnZm9ybVRhcmdldCcsXG4gICAgJ3R5cGUnLFxuICAgICd2YWx1ZScsIC8vIGJ1dHRvbiwgaW5wdXQsIGxpLCBvcHRpb24sIG1ldGVyLCBwcm9ncmVzcywgcGFyYW0sXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgSU5QVVQgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgaW5wdXRQcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoYnV0dG9uUHJvcGVydGllcywgW1xuICAgICdhY2NlcHQnLFxuICAgICdhbHQnLFxuICAgICdhdXRvQ2FwaXRhbGl6ZScsXG4gICAgJ2F1dG9Db21wbGV0ZScsXG4gICAgJ2NoZWNrZWQnLFxuICAgICdkaXJuYW1lJyxcbiAgICAnZm9ybScsXG4gICAgJ2hlaWdodCcsXG4gICAgJ2lucHV0TW9kZScsXG4gICAgJ2xpc3QnLFxuICAgICdtYXgnLFxuICAgICdtYXhMZW5ndGgnLFxuICAgICdtaW4nLFxuICAgICdtaW5MZW5ndGgnLFxuICAgICdtdWx0aXBsZScsXG4gICAgJ3BhdHRlcm4nLFxuICAgICdwbGFjZWhvbGRlcicsXG4gICAgJ3JlYWRPbmx5JyxcbiAgICAncmVxdWlyZWQnLFxuICAgICdzcmMnLFxuICAgICdzdGVwJyxcbiAgICAnc2l6ZScsXG4gICAgJ3R5cGUnLFxuICAgICd2YWx1ZScsXG4gICAgJ3dpZHRoJywgLy8gY2FudmFzLCBlbWJlZCwgaWZyYW1lLCBpbWcsIGlucHV0LCBvYmplY3QsIHZpZGVvXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgVEVYVEFSRUEgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgdGV4dEFyZWFQcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoYnV0dG9uUHJvcGVydGllcywgW1xuICAgICdhdXRvQ2FwaXRhbGl6ZScsXG4gICAgJ2NvbHMnLFxuICAgICdkaXJuYW1lJyxcbiAgICAnZm9ybScsXG4gICAgJ21heExlbmd0aCcsXG4gICAgJ21pbkxlbmd0aCcsXG4gICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAncmVhZE9ubHknLFxuICAgICdyZXF1aXJlZCcsXG4gICAgJ3Jvd3MnLFxuICAgICd3cmFwJywgLy8gdGV4dGFyZWFcbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBTRUxFQ1QgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgc2VsZWN0UHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGJ1dHRvblByb3BlcnRpZXMsIFtcbiAgICAnZm9ybScsXG4gICAgJ211bHRpcGxlJyxcbiAgICAncmVxdWlyZWQnLCAvLyBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYVxuXSk7XG5leHBvcnQgdmFyIG9wdGlvblByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnc2VsZWN0ZWQnLFxuICAgICd2YWx1ZScsIC8vIGJ1dHRvbiwgaW5wdXQsIGxpLCBvcHRpb24sIG1ldGVyLCBwcm9ncmVzcywgcGFyYW1cbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBUQUJMRSB0YWcgcHJvcGVydGllcyBhbmQgZXZlbnRzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHZhciB0YWJsZVByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnY2VsbFBhZGRpbmcnLFxuICAgICdjZWxsU3BhY2luZycsIC8vIHRhYmxlXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgVFIgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgdHJQcm9wZXJ0aWVzID0gaHRtbEVsZW1lbnRQcm9wZXJ0aWVzO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBUSCB0YWcgcHJvcGVydGllcyBhbmQgZXZlbnRzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHZhciB0aFByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAncm93U3BhbicsXG4gICAgJ3Njb3BlJywgLy8gdGhcbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBURCB0YWcgcHJvcGVydGllcyBhbmQgZXZlbnRzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHZhciB0ZFByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnY29sU3BhbicsXG4gICAgJ2hlYWRlcnMnLFxuICAgICdyb3dTcGFuJyxcbiAgICAnc2NvcGUnLCAvLyB0aFxuXSk7XG5leHBvcnQgdmFyIGNvbEdyb3VwUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICdzcGFuJywgLy8gY29sLCBjb2xncm91cFxuXSk7XG5leHBvcnQgdmFyIGNvbFByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnc3BhbicsIC8vIGNvbCwgY29sZ3JvdXBcbl0pO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBGT1JNIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIGZvcm1Qcm9wZXJ0aWVzID0gdG9PYmplY3RNYXAoaHRtbEVsZW1lbnRQcm9wZXJ0aWVzLCBbXG4gICAgJ2FjY2VwdENoYXJzZXQnLFxuICAgICdhY3Rpb24nLFxuICAgICdlbmNUeXBlJyxcbiAgICAnZW5jVHlwZScsXG4gICAgJ21ldGhvZCcsXG4gICAgJ25vVmFsaWRhdGUnLFxuICAgICd0YXJnZXQnLCAvLyBmb3JtXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgSUZSQU1FIHRhZyBwcm9wZXJ0aWVzIGFuZCBldmVudHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdmFyIGlmcmFtZVByb3BlcnRpZXMgPSB0b09iamVjdE1hcChodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAnYWxsb3cnLFxuICAgICdhbGxvd0Z1bGxTY3JlZW4nLFxuICAgICdhbGxvd1BheW1lbnRSZXF1ZXN0JyxcbiAgICAnYWxsb3dUcmFuc3BhcmVuY3knLFxuICAgICdjc3AnLFxuICAgICdoZWlnaHQnLFxuICAgICdpbXBvcnRhbmNlJyxcbiAgICAncmVmZXJyZXJQb2xpY3knLFxuICAgICdzYW5kYm94JyxcbiAgICAnc3JjJyxcbiAgICAnc3JjRG9jJyxcbiAgICAnd2lkdGgnLCAvLyBjYW52YXMsIGVtYmVkLCBpZnJhbWUsIGltZywgaW5wdXQsIG9iamVjdCwgdmlkZW8sXG5dKTtcbi8qKlxuICogQW4gYXJyYXkgb2YgSU1BR0UgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgaW1nUHJvcGVydGllcyA9IHRvT2JqZWN0TWFwKGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICdhbHQnLFxuICAgICdjcm9zc09yaWdpbicsXG4gICAgJ2hlaWdodCcsXG4gICAgJ3NyYycsXG4gICAgJ3NyY1NldCcsXG4gICAgJ3VzZU1hcCcsXG4gICAgJ3dpZHRoJywgLy8gY2FudmFzLCBlbWJlZCwgaWZyYW1lLCBpbWcsIGlucHV0LCBvYmplY3QsIHZpZGVvXG5dKTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGltZ1Byb3BlcnRpZXMgZm9yIGltZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IHZhciBpbWFnZVByb3BlcnRpZXMgPSBpbWdQcm9wZXJ0aWVzO1xuLyoqXG4gKiBBbiBhcnJheSBvZiBESVYgdGFnIHByb3BlcnRpZXMgYW5kIGV2ZW50cy5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB2YXIgZGl2UHJvcGVydGllcyA9IGh0bWxFbGVtZW50UHJvcGVydGllcztcbi8qKlxuICogR2V0cyBuYXRpdmUgc3VwcG9ydGVkIHByb3BzIGZvciBhbiBodG1sIGVsZW1lbnQgcHJvdmlkZWQgdGhlIGFsbG93YW5jZSBzZXQuIFVzZSBvbmUgb2YgdGhlIHByb3BlcnR5XG4gKiBzZXRzIGRlZmluZWQgKGRpdlByb3BlcnRpZXMsIGJ1dHRvblByb3BlcnRlcywgZXRjKSB0byBmaWx0ZXIgb3V0IHN1cHBvcnRlZCBwcm9wZXJ0aWVzIGZyb20gYSBnaXZlblxuICogcHJvcHMgc2V0LiBOb3RlIHRoYXQgYWxsIGRhdGEtIGFuZCBhcmlhLSBwcmVmaXhlZCBhdHRyaWJ1dGVzIHdpbGwgYmUgYWxsb3dlZC5cbiAqIE5PVEU6IGdldE5hdGl2ZVByb3BzIHNob3VsZCBhbHdheXMgYmUgYXBwbGllZCBmaXJzdCB3aGVuIGFkZGluZyBwcm9wcyB0byBhIHJlYWN0IGNvbXBvbmVudC4gVGhlXG4gKiBub24tbmF0aXZlIHByb3BzIHNob3VsZCBiZSBhcHBsaWVkIHNlY29uZC4gVGhpcyB3aWxsIHByZXZlbnQgZ2V0TmF0aXZlUHJvcHMgZnJvbSBvdmVycmlkaW5nIHlvdXIgY3VzdG9tIHByb3BzLlxuICogRm9yIGV4YW1wbGUsIGlmIHByb3BzIHBhc3NlZCB0byBnZXROYXRpdmVQcm9wcyBoYXMgYW4gb25DbGljayBmdW5jdGlvbiBhbmQgZ2V0TmF0aXZlUHJvcHMgaXMgYWRkZWQgdG9cbiAqIHRoZSBjb21wb25lbnQgYWZ0ZXIgYW4gb25DbGljayBmdW5jdGlvbiBpcyBhZGRlZCwgdGhlbiB0aGUgZ2V0TmF0aXZlUHJvcHMgb25DbGljayB3aWxsIG92ZXJyaWRlIGl0LlxuICpcbiAqIEBwdWJsaWNcbiAqIEBwYXJhbSBwcm9wcyAtIFRoZSB1bmZpbHRlcmVkIGlucHV0IHByb3BzXG4gKiBAcGFyYW0gYWxsb3dlZFByb3BzTmFtZXMgLSBUaGUgYXJyYXkgb3IgcmVjb3JkIG9mIGFsbG93ZWQgcHJvcCBuYW1lcy5cbiAqIEByZXR1cm5zIFRoZSBmaWx0ZXJlZCBwcm9wc1xuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdGl2ZVByb3BzKFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnByb3BzLCBhbGxvd2VkUHJvcE5hbWVzLCBleGNsdWRlZFByb3BOYW1lcykge1xuICAgIC8vIEl0J2QgYmUgZ3JlYXQgdG8gcHJvcGVybHkgdHlwZSB0aGlzIHdoaWxlIGFsbG93aW5nICdhcmlhLWAgYW5kICdkYXRhLScgYXR0cmlidXRlcyBsaWtlIFR5cGVTY3JpcHQgZG9lcyBmb3JcbiAgICAvLyBKU1ggYXR0cmlidXRlcywgYnV0IHRoYXQgYWJpbGl0eSBpcyBoYXJkY29kZWQgaW50byB0aGUgVFMgY29tcGlsZXIgd2l0aCBubyBhbmFsb2cgaW4gVHlwZVNjcmlwdCB0eXBpbmdzLlxuICAgIC8vIFRoZW4gd2UnZCBiZSBhYmxlIHRvIGVuZm9yY2UgcHJvcHMgZXh0ZW5kcyBuYXRpdmUgcHJvcHMgKGluY2x1ZGluZyBhcmlhLSBhbmQgZGF0YS0gYXR0cmlidXRlcyksIGFuZCB0aGVuXG4gICAgLy8gcmV0dXJuIG5hdGl2ZSBwcm9wcy5cbiAgICAvLyBXZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzIG9uY2UgdGhpcyBQUiBpcyBtZXJnZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9wdWxsLzI2Nzk3XG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGFsbG93ZWRQcm9wTmFtZXMpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMpO1xuICAgIGZvciAodmFyIF9pID0gMCwga2V5c18yID0ga2V5czsgX2kgPCBrZXlzXzIubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzXzJbX2ldO1xuICAgICAgICB2YXIgaXNOYXRpdmVQcm9wID0gKCFpc0FycmF5ICYmIGFsbG93ZWRQcm9wTmFtZXNba2V5XSkgfHxcbiAgICAgICAgICAgIChpc0FycmF5ICYmIGFsbG93ZWRQcm9wTmFtZXMuaW5kZXhPZihrZXkpID49IDApIHx8XG4gICAgICAgICAgICBrZXkuaW5kZXhPZignZGF0YS0nKSA9PT0gMCB8fFxuICAgICAgICAgICAga2V5LmluZGV4T2YoJ2FyaWEtJykgPT09IDA7XG4gICAgICAgIGlmIChpc05hdGl2ZVByb3AgJiYgKCFleGNsdWRlZFByb3BOYW1lcyB8fCAoZXhjbHVkZWRQcm9wTmFtZXMgPT09IG51bGwgfHwgZXhjbHVkZWRQcm9wTmFtZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4Y2x1ZGVkUHJvcE5hbWVzLmluZGV4T2Yoa2V5KSkgPT09IC0xKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gcHJvcHNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvcGVydGllcy5qcy5tYXAiLCJpbXBvcnQgeyBleHRlbmRDb21wb25lbnQgfSBmcm9tICcuL2V4dGVuZENvbXBvbmVudCc7XG4vKipcbiAqIEhlbHBlciB0byBtYW5hZ2UgY29tcG9uZW50UmVmIHJlc29sdXRpb24uIEludGVybmFsbHkgYXBwZW5kcyBsb2dpYyB0b1xuICogbGlmZXRpbWUgbWV0aG9kcyB0byByZXNvbHZlIGNvbXBvbmVudFJlZiB0byB0aGUgcGFzc2VkIGluIG9iamVjdC5cbiAqXG4gKiBVc2FnZTogY2FsbCBpbml0aWFsaXplQ29tcG9uZW50UmVmKHRoaXMpIGluIHRoZSBjb25zdHJ1Y3RvcixcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVDb21wb25lbnRSZWYob2JqKSB7XG4gICAgZXh0ZW5kQ29tcG9uZW50KG9iaiwge1xuICAgICAgICBjb21wb25lbnREaWRNb3VudDogX29uTW91bnQsXG4gICAgICAgIGNvbXBvbmVudERpZFVwZGF0ZTogX29uVXBkYXRlLFxuICAgICAgICBjb21wb25lbnRXaWxsVW5tb3VudDogX29uVW5tb3VudCxcbiAgICB9KTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBfb25Nb3VudCgpIHtcbiAgICBfc2V0Q29tcG9uZW50UmVmKHRoaXMucHJvcHMuY29tcG9uZW50UmVmLCB0aGlzKTtcbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBfb25VcGRhdGUocHJldlByb3BzKSB7XG4gICAgaWYgKHByZXZQcm9wcy5jb21wb25lbnRSZWYgIT09IHRoaXMucHJvcHMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIF9zZXRDb21wb25lbnRSZWYocHJldlByb3BzLmNvbXBvbmVudFJlZiwgbnVsbCk7XG4gICAgICAgIF9zZXRDb21wb25lbnRSZWYodGhpcy5wcm9wcy5jb21wb25lbnRSZWYsIHRoaXMpO1xuICAgIH1cbn1cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBfb25Vbm1vdW50KCkge1xuICAgIF9zZXRDb21wb25lbnRSZWYodGhpcy5wcm9wcy5jb21wb25lbnRSZWYsIG51bGwpO1xufVxuZnVuY3Rpb24gX3NldENvbXBvbmVudFJlZihjb21wb25lbnRSZWYsIHZhbHVlKSB7XG4gICAgaWYgKGNvbXBvbmVudFJlZikge1xuICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudFJlZiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbXBvbmVudFJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29tcG9uZW50UmVmKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluaXRpYWxpemVDb21wb25lbnRSZWYuanMubWFwIiwidmFyIF9hO1xuaW1wb3J0IHsgS2V5Q29kZXMgfSBmcm9tICcuL0tleUNvZGVzJztcbnZhciBEaXJlY3Rpb25hbEtleUNvZGVzID0gKF9hID0ge30sXG4gICAgX2FbS2V5Q29kZXMudXBdID0gMSxcbiAgICBfYVtLZXlDb2Rlcy5kb3duXSA9IDEsXG4gICAgX2FbS2V5Q29kZXMubGVmdF0gPSAxLFxuICAgIF9hW0tleUNvZGVzLnJpZ2h0XSA9IDEsXG4gICAgX2FbS2V5Q29kZXMuaG9tZV0gPSAxLFxuICAgIF9hW0tleUNvZGVzLmVuZF0gPSAxLFxuICAgIF9hW0tleUNvZGVzLnRhYl0gPSAxLFxuICAgIF9hW0tleUNvZGVzLnBhZ2VVcF0gPSAxLFxuICAgIF9hW0tleUNvZGVzLnBhZ2VEb3duXSA9IDEsXG4gICAgX2EpO1xuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGtleWNvZGUgaXMgYSBkaXJlY3Rpb25hbCBrZXlib2FyZCBrZXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdGlvbmFsS2V5Q29kZSh3aGljaCkge1xuICAgIHJldHVybiAhIURpcmVjdGlvbmFsS2V5Q29kZXNbd2hpY2hdO1xufVxuLyoqXG4gKiBBZGRzIGEga2V5Y29kZSB0byB0aGUgbGlzdCBvZiBrZXlzIHRoYXQsIHdoZW4gcHJlc3NlZCwgc2hvdWxkIGNhdXNlIHRoZSBmb2N1cyBvdXRsaW5lcyB0byBiZSB2aXNpYmxlLlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgZ2xvYmFsIHNob3J0Y3V0IGtleXMgdGhhdCBkaXJlY3Rpb25hbGx5IG1vdmUgZnJvbSBzZWN0aW9uIHRvIHNlY3Rpb24gd2l0aGluXG4gKiBhbiBhcHAgb3IgYmV0d2VlbiBmb2N1cyB0cmFwIHpvbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRGlyZWN0aW9uYWxLZXlDb2RlKHdoaWNoKSB7XG4gICAgRGlyZWN0aW9uYWxLZXlDb2Rlc1t3aGljaF0gPSAxO1xufVxuLyoqXG4gKiBSZW1vdmVzIGEga2V5Y29kZSB0byB0aGUgbGlzdCBvZiBrZXlzIHRoYXQsIHdoZW4gcHJlc3NlZCwgc2hvdWxkIGNhdXNlIHRoZSBmb2N1cyBvdXRsaW5lcyB0byBiZSB2aXNpYmxlLlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byByZW1vdmUgZ2xvYmFsIHNob3J0Y3V0IGtleXMgdGhhdCBkaXJlY3Rpb25hbGx5IG1vdmUgZnJvbSBzZWN0aW9uIHRvIHNlY3Rpb24gd2l0aGluXG4gKiBhbiBhcHAgb3IgYmV0d2VlbiBmb2N1cyB0cmFwIHpvbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRGlyZWN0aW9uYWxLZXlDb2RlKHdoaWNoKSB7XG4gICAgZGVsZXRlIERpcmVjdGlvbmFsS2V5Q29kZXNbd2hpY2hdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9a2V5Ym9hcmQuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93JztcbmV4cG9ydCB2YXIgSXNGb2N1c1Zpc2libGVDbGFzc05hbWUgPSAnbXMtRmFicmljLS1pc0ZvY3VzVmlzaWJsZSc7XG5leHBvcnQgdmFyIElzRm9jdXNIaWRkZW5DbGFzc05hbWUgPSAnbXMtRmFicmljLS1pc0ZvY3VzSGlkZGVuJztcbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzTGlzdChlbCwgZW5hYmxlZCkge1xuICAgIGlmIChlbCkge1xuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGVuYWJsZWQgPyBJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSA6IElzRm9jdXNIaWRkZW5DbGFzc05hbWUpO1xuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKGVuYWJsZWQgPyBJc0ZvY3VzSGlkZGVuQ2xhc3NOYW1lIDogSXNGb2N1c1Zpc2libGVDbGFzc05hbWUpO1xuICAgIH1cbn1cbi8qKlxuICogU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiBmb2N1cyBzdHlsaW5nLlxuICpcbiAqIEJ5IGRlZmF1bHQsIGZvY3VzIHN0eWxlcyAodGhlIGJveCBzdXJyb3VuZGluZyBhIGZvY3VzZWQgQnV0dG9uLCBmb3IgZXhhbXBsZSkgb25seSBzaG93IHVwIHdoZW4gbmF2aWdhdGlvbmFsXG4gKiBrZXlwcmVzc2VzIG9jY3VyICh0aHJvdWdoIFRhYiwgYXJyb3dzLCBQZ1VwL1BnRG4sIEhvbWUgYW5kIEVuZCksIGFuZCBhcmUgaGlkZGVuIHdoZW4gbW91c2UgaW50ZXJhY3Rpb25zIG9jY3VyLlxuICogVGhpcyBBUEkgcHJvdmlkZXMgYW4gaW1wZXJhdGl2ZSB3YXkgdG8gdHVybiB0aGVtIG9uL29mZi5cbiAqXG4gKiBBIHVzZSBjYXNlIG1pZ2h0IGJlIHdoZW4geW91IGhhdmUgYSBrZXlwcmVzcyBsaWtlIGN0cmwtZjYgbmF2aWdhdGUgdG8gYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvbiB0aGUgcGFnZSxcbiAqIGFuZCB3YW50IGZvY3VzIHRvIHNob3cgdXAuXG4gKlxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRvIHR1cm4gZm9jdXMgdmlzaWJpbGl0eSBvbiBvciBvZmYuXG4gKiBAcGFyYW0gdGFyZ2V0IC0gT3B0aW9uYWwgdGFyZ2V0IGZyb20gd2hpY2ggdG8gZ2V0IHdpbmRvdyBpbiBjYXNlIG5vIGBwcm92aWRlckVsZW1gIGhhcyBiZWVuIHNwZWNpZmllZC5cbiAqIEBwYXJhbSByZWdpc3RlcmVkUHJvdmlkZXJzIC0gQXJyYXkgb2YgcHJvdmlkZXIgcmVmcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBGb2N1c1JlY3RzUHJvdmlkZXIuIElmIG5vIGFycmF5XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHBhc3NlZCBpbiwgdGhlIGNsYXNzbmFtZXMgYXJlIGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCBib2R5IHRoYXQgY29udGFpbnMgYHRhcmdldGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGb2N1c1Zpc2liaWxpdHkoZW5hYmxlZCwgdGFyZ2V0LCByZWdpc3RlcmVkUHJvdmlkZXJzKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChyZWdpc3RlcmVkUHJvdmlkZXJzKSB7XG4gICAgICAgIHJlZ2lzdGVyZWRQcm92aWRlcnMuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7IHJldHVybiB1cGRhdGVDbGFzc0xpc3QocmVmLmN1cnJlbnQsIGVuYWJsZWQpOyB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHVwZGF0ZUNsYXNzTGlzdCgoX2EgPSBnZXRXaW5kb3codGFyZ2V0KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRvY3VtZW50LmJvZHksIGVuYWJsZWQpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNldEZvY3VzVmlzaWJpbGl0eS5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICcuL2RvbS9nZXRXaW5kb3cnO1xuaW1wb3J0IHsgaXNEaXJlY3Rpb25hbEtleUNvZGUgfSBmcm9tICcuL2tleWJvYXJkJztcbmltcG9ydCB7IHNldEZvY3VzVmlzaWJpbGl0eSB9IGZyb20gJy4vc2V0Rm9jdXNWaXNpYmlsaXR5JztcbnZhciBtb3VudENvdW50ZXJzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBjYWxsYmFja01hcCA9IG5ldyBXZWFrTWFwKCk7XG5mdW5jdGlvbiBzZXRNb3VudENvdW50ZXJzKGtleSwgZGVsdGEpIHtcbiAgICB2YXIgbmV3VmFsdWU7XG4gICAgdmFyIGN1cnJWYWx1ZSA9IG1vdW50Q291bnRlcnMuZ2V0KGtleSk7XG4gICAgaWYgKGN1cnJWYWx1ZSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGN1cnJWYWx1ZSArIGRlbHRhO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSAxO1xuICAgIH1cbiAgICBtb3VudENvdW50ZXJzLnNldChrZXksIG5ld1ZhbHVlKTtcbiAgICByZXR1cm4gbmV3VmFsdWU7XG59XG5mdW5jdGlvbiBzZXRDYWxsYmFja01hcChjb250ZXh0KSB7XG4gICAgdmFyIGNhbGxiYWNrcyA9IGNhbGxiYWNrTWFwLmdldChjb250ZXh0KTtcbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFja3M7XG4gICAgfVxuICAgIHZhciBvbk1vdXNlRG93biA9IGZ1bmN0aW9uIChldikgeyByZXR1cm4gX29uTW91c2VEb3duKGV2LCBjb250ZXh0LnJlZ2lzdGVyZWRQcm92aWRlcnMpOyB9O1xuICAgIHZhciBvblBvaW50ZXJEb3duID0gZnVuY3Rpb24gKGV2KSB7IHJldHVybiBfb25Qb2ludGVyRG93bihldiwgY29udGV4dC5yZWdpc3RlcmVkUHJvdmlkZXJzKTsgfTtcbiAgICB2YXIgb25LZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7IHJldHVybiBfb25LZXlEb3duKGV2LCBjb250ZXh0LnJlZ2lzdGVyZWRQcm92aWRlcnMpOyB9O1xuICAgIHZhciBvbktleVVwID0gZnVuY3Rpb24gKGV2KSB7IHJldHVybiBfb25LZXlVcChldiwgY29udGV4dC5yZWdpc3RlcmVkUHJvdmlkZXJzKTsgfTtcbiAgICBjYWxsYmFja3MgPSB7IG9uTW91c2VEb3duOiBvbk1vdXNlRG93biwgb25Qb2ludGVyRG93bjogb25Qb2ludGVyRG93biwgb25LZXlEb3duOiBvbktleURvd24sIG9uS2V5VXA6IG9uS2V5VXAgfTtcbiAgICBjYWxsYmFja01hcC5zZXQoY29udGV4dCwgY2FsbGJhY2tzKTtcbiAgICByZXR1cm4gY2FsbGJhY2tzO1xufVxuZXhwb3J0IHZhciBGb2N1c1JlY3RzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbi8qKlxuICogSW5pdGlhbGl6ZXMgdGhlIGxvZ2ljIHdoaWNoOlxuICpcbiAqIDEuIFN1YnNjcmliZXMga2V5ZG93biwga2V5dXAsIG1vdXNlZG93biBhbmQgcG9pbnRlcmRvd24gZXZlbnRzLiAoSXQgd2lsbCBvbmx5IGRvIGl0IG9uY2UgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQgb2ZcbiAqICAgIHRoZSBGb2N1c1JlY3RzQ29udGV4dCBwcm92aWRlclJlZiBvciBvbmNlIHBlciB3aW5kb3cgaWYgbm8gc3VjaCBlbGVtZW50IGlzIHByb3ZpZGVkIHZpYSBjb250ZXh0LCBzbyBpdCdzIHNhZmUgdG9cbiAqICAgIGNhbGwgdGhpcyBtZXRob2QgbXVsdGlwbGUgdGltZXMuKVxuICogMi4gV2hlbiB0aGUgdXNlciBwcmVzc2VzIHRyaWdnZXJzIGEga2V5ZG93biBvciBrZXl1cCBldmVudCB2aWEgZGlyZWN0aW9uYWwga2V5Ym9hcmQga2V5cywgYWRkcyB0aGVcbiAqICAgICdtcy1GYWJyaWMtLWlzRm9jdXNWaXNpYmxlJyBjbGFzc25hbWUgdG8gdGhlIGN1cnJlbnQgZWxlbWVudCBvZiB0aGUgRm9jdXNSZWN0c0NvbnRleHQgcHJvdmlkZXJSZWYgb3IgdGhlIGRvY3VtZW50XG4gKiAgICBib2R5IGlmIG5vIHN1Y2ggZWxlbWVudCBpcyBwcm92aWRlZCB2aWEgY29udGV4dCwgYW5kIHJlbW92ZXMgdGhlICdtcy1GYWJyaWMtaXNGb2N1c0hpZGRlbicgY2xhc3NuYW1lLlxuICogMy4gV2hlbiB0aGUgdXNlciB0cmlnZ2VycyBhIG1vdXNlZG93biBvciBwb2ludGVyZG93biBldmVudCwgYWRkcyB0aGUgJ21zLUZhYnJpYy1pc0ZvY3VzSGlkZGVuJyBjbGFzc25hbWUgdG8gdGhlXG4gKiAgICBjdXJyZW50IGVsZW1lbnQgb2YgdGhlIEZvY3VzUmVjdHNDb250ZXh0IHByb3ZpZGVyUmVmIG9yIHRoZSBkb2N1bWVudCBib2R5IGlmIG5vIHN1Y2ggZWxlbWVudCBpcyBwcm92aWRlZCB2aWFcbiAqICAgIGNvbnRleHQsIGFuZCByZW1vdmVzIHRoZSAnbXMtRmFicmljLS1pc0ZvY3VzVmlzaWJsZScgY2xhc3NuYW1lLlxuICpcbiAqIFRoaXMgbG9naWMgYWxsb3dzIGNvbXBvbmVudHMgb24gdGhlIHBhZ2UgdG8gY29uZGl0aW9uYWxseSByZW5kZXIgZm9jdXMgdHJlYXRtZW50cyBiYXNlZCBvblxuICogdGhlIGV4aXN0ZW5jZSBvZiBnbG9iYWwgY2xhc3NuYW1lcywgd2hpY2ggc2ltcGxpZmllcyBsb2dpYyBvdmVyYWxsLlxuICpcbiAqIEBwYXJhbSByb290UmVmIC0gQSBSZWYgb2JqZWN0LiBGb2N1cyByZWN0YW5nbGUgY2FuIGJlIGFwcGxpZWQgb24gaXRzZWxmIGFuZCBhbGwgaXRzIGNoaWxkcmVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRm9jdXNSZWN0cyhyb290UmVmKSB7XG4gICAgdmFyIGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KEZvY3VzUmVjdHNDb250ZXh0KTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3cocm9vdFJlZiA9PT0gbnVsbCB8fCByb290UmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiByb290UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAoIXdpbiB8fCAoKF9hID0gd2luLkZhYnJpY0NvbmZpZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVGb2N1c1JlY3RzKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWwgPSB3aW47XG4gICAgICAgIHZhciBvbk1vdXNlRG93bjtcbiAgICAgICAgdmFyIG9uUG9pbnRlckRvd247XG4gICAgICAgIHZhciBvbktleURvd247XG4gICAgICAgIHZhciBvbktleVVwO1xuICAgICAgICBpZiAoKChfYiA9IGNvbnRleHQgPT09IG51bGwgfHwgY29udGV4dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGV4dC5wcm92aWRlclJlZikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmN1cnJlbnQpICYmXG4gICAgICAgICAgICAoKF9kID0gKF9jID0gY29udGV4dCA9PT0gbnVsbCB8fCBjb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZXh0LnByb3ZpZGVyUmVmKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MuY3VycmVudCkgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmFkZEV2ZW50TGlzdGVuZXIpKSB7XG4gICAgICAgICAgICBlbCA9IGNvbnRleHQucHJvdmlkZXJSZWYuY3VycmVudDtcbiAgICAgICAgICAgIC8vIFRoZSBOT0lOTElORSBkaXJlY3RpdmUgdGVsbHMgdGVyc2VyIG5vdCB0byBtb3ZlIHRoZSBzZXRDYWxsYmFja01hcCBpbXBsZW1lbnRhdGlvbiBpbnRvIHRoZSBjYWxsIHNpdGUgZHVyaW5nXG4gICAgICAgICAgICAvLyBtaW5pZmljYXRpb24uXG4gICAgICAgICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBmdW5jdGlvbiBmcm9tIGNhcHR1cmluZyBhZGRpdGlvbmFsIHZhcmlhYmxlcyBpbiB0aGUgY2xvc3VyZSwgd2hpY2ggY2FuIGNhdXNlIG1lbW9yeSBsZWFrcy5cbiAgICAgICAgICAgIHZhciBjYWxsYmFja3MgPSAvKkBfX05PSU5MSU5FX18qLyBzZXRDYWxsYmFja01hcChjb250ZXh0KTtcbiAgICAgICAgICAgIG9uTW91c2VEb3duID0gY2FsbGJhY2tzLm9uTW91c2VEb3duO1xuICAgICAgICAgICAgb25Qb2ludGVyRG93biA9IGNhbGxiYWNrcy5vblBvaW50ZXJEb3duO1xuICAgICAgICAgICAgb25LZXlEb3duID0gY2FsbGJhY2tzLm9uS2V5RG93bjtcbiAgICAgICAgICAgIG9uS2V5VXAgPSBjYWxsYmFja3Mub25LZXlVcDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9uTW91c2VEb3duID0gX29uTW91c2VEb3duO1xuICAgICAgICAgICAgb25Qb2ludGVyRG93biA9IF9vblBvaW50ZXJEb3duO1xuICAgICAgICAgICAgb25LZXlEb3duID0gX29uS2V5RG93bjtcbiAgICAgICAgICAgIG9uS2V5VXAgPSBfb25LZXlVcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY291bnQgPSBzZXRNb3VudENvdW50ZXJzKGVsLCAxKTtcbiAgICAgICAgaWYgKGNvdW50IDw9IDEpIHtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uTW91c2VEb3duLCB0cnVlKTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25Qb2ludGVyRG93biwgdHJ1ZSk7XG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duLCB0cnVlKTtcbiAgICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgb25LZXlVcCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmICghd2luIHx8ICgoX2EgPSB3aW4uRmFicmljQ29uZmlnKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZUZvY3VzUmVjdHMpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY291bnQgPSBzZXRNb3VudENvdW50ZXJzKGVsLCAtMSk7XG4gICAgICAgICAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93biwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBvblBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIG9uS2V5VXAsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtjb250ZXh0LCByb290UmVmXSk7XG59XG4vKipcbiAqIEZ1bmN0aW9uIENvbXBvbmVudCB3cmFwcGVyIHdoaWNoIGVuYWJsZXMgY2FsbGluZyBgdXNlRm9jdXNSZWN0c2AgaG9vay5cbiAqIFJlbmRlcnMgbm90aGluZy5cbiAqL1xuZXhwb3J0IHZhciBGb2N1c1JlY3RzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdXNlRm9jdXNSZWN0cyhwcm9wcy5yb290UmVmKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5mdW5jdGlvbiBfb25Nb3VzZURvd24oZXYsIHJlZ2lzdGVyZWRQcm92aWRlcnMpIHtcbiAgICBzZXRGb2N1c1Zpc2liaWxpdHkoZmFsc2UsIGV2LnRhcmdldCwgcmVnaXN0ZXJlZFByb3ZpZGVycyk7XG59XG5mdW5jdGlvbiBfb25Qb2ludGVyRG93bihldiwgcmVnaXN0ZXJlZFByb3ZpZGVycykge1xuICAgIGlmIChldi5wb2ludGVyVHlwZSAhPT0gJ21vdXNlJykge1xuICAgICAgICBzZXRGb2N1c1Zpc2liaWxpdHkoZmFsc2UsIGV2LnRhcmdldCwgcmVnaXN0ZXJlZFByb3ZpZGVycyk7XG4gICAgfVxufVxuLy8gWW91IG5lZWQgYm90aCBhIGtleWRvd24gYW5kIGEga2V5dXAgbGlzdGVuZXIgdGhhdCBzZXRzIGZvY3VzIHZpc2liaWxpdHkgdG8gdHJ1ZSB0byBoYW5kbGUgdHdvIGRpc3RpbmN0IHNjZW5hcmlvcyB3aGVuXG4vLyBhdHRhY2hpbmcgdGhlIGxpc3RlbmVycyBhbmQgY2xhc3NuYW1lcyB0byB0aGUgcHJvdmlkZXIgaW5zdGVhZCBvZiB0aGUgZG9jdW1lbnQgYm9keS5cbi8vIElmIHlvdSBvbmx5IGhhdmUgYSBrZXlkb3duIGxpc3RlbmVyLCB0aGVuIHRoZSBmb2N1cyByZWN0YW5nbGVzIHdpbGwgbm90IHNob3cgd2hlbiBtb3ZpbmcgZnJvbSBvdXRzaWRlIG9mIHRoZSBwcm92aWRlclxuLy8gdG8gaW5zaWRlIGl0LiBUaGF0IGlzIHdoeSBhIGtleXVwIGxpc3RlbmVyIGlzIG5lZWRlZCwgc2luY2UgaXQgd2lsbCBhbHdheXMgdHJpZ2dlciBhZnRlciB0aGUgZm9jdXMgZXZlbnQgaXMgZmlyZWQuXG4vLyBJZiB5b3Ugb25seSBoYXZlIGEga2V5dXAgbGlzdGVuZXIsIHRoZW4gdGhlIGZvY3VzIHJlY3RhbmdsZXMgd2lsbCBub3Qgc2hvdyBtb3ZpbmcgYmV0d2VlbiBkaWZmZXJlbnQgdGFiYmFibGUgZWxlbWVudHNcbi8vIGlmIHRoZSB0YWIga2V5IGlzIHByZXNzZWQgd2l0aG91dCBiZWluZyByZWxlYXNlZC4gVGhhdCdzIGlzIHdoeSB3ZSBuZWVkIGEga2V5ZG93biBsaXN0ZW5lciwgc2luY2UgaXQgd2lsbCB0cmlnZ2VyIGZvclxuLy8gZXZlcnkgZWxlbWVudCB0aGF0IGlzIGJlaW5nIHRhYmJlZCBpbnRvLlxuLy8gVGhpcyB3b3JrcyBiZWNhdXNlIGBjbGFzc0xpc3QuYWRkYCBpcyBzbWFydCBhbmQgd2lsbCBub3QgZHVwbGljYXRlIGEgY2xhc3NuYW1lIHRoYXQgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNsYXNzTGlzdFxuLy8gd2hlbiBmb2N1cyB2aXNpYmlsaXR5IGlzIHR1cm5lZCBvbi5cbmZ1bmN0aW9uIF9vbktleURvd24oZXYsIHJlZ2lzdGVyZWRQcm92aWRlcnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBpZiAoaXNEaXJlY3Rpb25hbEtleUNvZGUoZXYud2hpY2gpKSB7XG4gICAgICAgIHNldEZvY3VzVmlzaWJpbGl0eSh0cnVlLCBldi50YXJnZXQsIHJlZ2lzdGVyZWRQcm92aWRlcnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9vbktleVVwKGV2LCByZWdpc3RlcmVkUHJvdmlkZXJzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgaWYgKGlzRGlyZWN0aW9uYWxLZXlDb2RlKGV2LndoaWNoKSkge1xuICAgICAgICBzZXRGb2N1c1Zpc2liaWxpdHkodHJ1ZSwgZXYudGFyZ2V0LCByZWdpc3RlcmVkUHJvdmlkZXJzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VGb2N1c1JlY3RzLmpzLm1hcCIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZvY3VzUmVjdHNDb250ZXh0IH0gZnJvbSAnLi91c2VGb2N1c1JlY3RzJztcbmV4cG9ydCB2YXIgRm9jdXNSZWN0c1Byb3ZpZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHByb3ZpZGVyUmVmID0gcHJvcHMucHJvdmlkZXJSZWYsIGxheWVyUm9vdCA9IHByb3BzLmxheWVyUm9vdDtcbiAgICB2YXIgcmVnaXN0ZXJlZFByb3ZpZGVycyA9IFJlYWN0LnVzZVN0YXRlKFtdKVswXTtcbiAgICB2YXIgcGFyZW50Q29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRm9jdXNSZWN0c0NvbnRleHQpO1xuICAgIC8vIEluaGVyaXQgdGhlIHBhcmVudCBjb250ZXh0IGlmIGl0IGV4aXN0cywgdW5sZXNzIHRoaXMgaXMgYSBsYXllciByb290LlxuICAgIC8vIFRoaXMgYWxsb3dzIHRoZSB0b3Btb3N0IHByb3ZpZGVyIGVsZW1lbnQgaW4gdGhlIERPTSB0cmVlIHRvIGhhbmRsZSB0aGUgZm9jdXMgZXZlbnRzLlxuICAgIC8vIFNpbmNlIGxheWVycyBhcmUgaW4gYSBzZXBhcmF0ZSBIVE1MIHRyZWUgZnJvbSB0aGVpciBwYXJlbnQsIHRoZXkgc2hvdWxkbid0IHVzZSB0aGUgcGFyZW50J3MgcHJvdmlkZXJSZWYuXG4gICAgdmFyIGluaGVyaXRQYXJlbnRDb250ZXh0ID0gcGFyZW50Q29udGV4dCAhPT0gdW5kZWZpbmVkICYmICFsYXllclJvb3Q7XG4gICAgdmFyIGNvbnRleHQgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGluaGVyaXRQYXJlbnRDb250ZXh0XG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXJSZWY6IHByb3ZpZGVyUmVmLFxuICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWRQcm92aWRlcnM6IHJlZ2lzdGVyZWRQcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJQcm92aWRlcjogZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciB0aGlzIGNoaWxkIHByb3ZpZGVyIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCwgYW5kIGFueSBwYXJlbnQgY29udGV4dHNcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZFByb3ZpZGVycy5wdXNoKHJlZik7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRleHQgPT09IG51bGwgfHwgcGFyZW50Q29udGV4dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyZW50Q29udGV4dC5yZWdpc3RlclByb3ZpZGVyKHJlZik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyUHJvdmlkZXI6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGV4dCA9PT0gbnVsbCB8fCBwYXJlbnRDb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJlbnRDb250ZXh0LnVucmVnaXN0ZXJQcm92aWRlcihyZWYpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHJlZ2lzdGVyZWRQcm92aWRlcnMuaW5kZXhPZihyZWYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkUHJvdmlkZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgIH0sIFtwcm92aWRlclJlZiwgcmVnaXN0ZXJlZFByb3ZpZGVycywgcGFyZW50Q29udGV4dCwgaW5oZXJpdFBhcmVudENvbnRleHRdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgY29udGV4dC5yZWdpc3RlclByb3ZpZGVyKGNvbnRleHQucHJvdmlkZXJSZWYpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbnRleHQudW5yZWdpc3RlclByb3ZpZGVyKGNvbnRleHQucHJvdmlkZXJSZWYpOyB9O1xuICAgICAgICB9XG4gICAgfSwgW2NvbnRleHRdKTtcbiAgICAvLyBDcmVhdGUgYSBuZXcgY29udGV4dCBwcm92aWRlciBpZiB0aGlzIGlzIG5vdCBpbmhlcml0aW5nIGZyb20gdGhlIHBhcmVudC5cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChGb2N1c1JlY3RzQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dCB9LCBwcm9wcy5jaGlsZHJlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgcHJvcHMuY2hpbGRyZW4pO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb2N1c1JlY3RzUHJvdmlkZXIuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93Jztcbi8qKlxuICogRmV0Y2hlcyBhbiBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZSB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvblxuICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtIHRvIGZldGNoIGZyb20gbG9jYWwgc3RvcmFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXRlbShrZXkpIHtcbiAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCk7XG4gICAgICAgIHJlc3VsdCA9IHdpbiA/IHdpbi5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIDogbnVsbDtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogRWF0IHRoZSBleGNlcHRpb24gKi9cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogSW5zZXJ0cyBhbiBpdGVtIGludG8gbG9jYWwgc3RvcmFnZSB3aXRob3V0IHRocm93aW5nIGFuIGV4Y2VwdGlvblxuICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBpdGVtIHRvIGFkZCB0byBsb2NhbCBzdG9yYWdlXG4gKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBwdXQgaW50byBsb2NhbCBzdG9yYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJdGVtKGtleSwgZGF0YSkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciB3aW4gPSBnZXRXaW5kb3coKTtcbiAgICAgICAgd2luICYmIHdpbi5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGRhdGEpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvKiBFYXQgdGhlIGV4Y2VwdGlvbiAqL1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvY2FsU3RvcmFnZS5qcy5tYXAiLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJy4vZG9tL2dldERvY3VtZW50JztcbmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZSBmcm9tICcuL2xvY2FsU3RvcmFnZSc7XG5pbXBvcnQgKiBhcyBzZXNzaW9uU3RvcmFnZSBmcm9tICcuL3Nlc3Npb25TdG9yYWdlJztcbi8vIERlZmF1bHQgdG8gdW5kZWZpbmVkIHNvIHRoYXQgd2UgaW5pdGlhbGl6ZSBvbiBmaXJzdCByZWFkLlxudmFyIF9sYW5ndWFnZTtcbnZhciBTVE9SQUdFX0tFWSA9ICdsYW5ndWFnZSc7XG4vKipcbiAqIEdldHMgdGhlIGxhbmd1YWdlIHNldCBmb3IgdGhlIHBhZ2UuXG4gKiBAcGFyYW0gcGVyc2lzdGVuY2VUeXBlIC0gV2hlcmUgdG8gcGVyc2lzdCB0aGUgdmFsdWUuIERlZmF1bHQgaXMgYHNlc3Npb25TdG9yYWdlYCBpZiBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYW5ndWFnZShwZXJzaXN0ZW5jZVR5cGUpIHtcbiAgICBpZiAocGVyc2lzdGVuY2VUeXBlID09PSB2b2lkIDApIHsgcGVyc2lzdGVuY2VUeXBlID0gJ3Nlc3Npb25TdG9yYWdlJzsgfVxuICAgIGlmIChfbGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcbiAgICAgICAgdmFyIHNhdmVkTGFuZ3VhZ2UgPSBwZXJzaXN0ZW5jZVR5cGUgPT09ICdsb2NhbFN0b3JhZ2UnXG4gICAgICAgICAgICA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZKVxuICAgICAgICAgICAgOiBwZXJzaXN0ZW5jZVR5cGUgPT09ICdzZXNzaW9uU3RvcmFnZSdcbiAgICAgICAgICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9LRVkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChzYXZlZExhbmd1YWdlKSB7XG4gICAgICAgICAgICBfbGFuZ3VhZ2UgPSBzYXZlZExhbmd1YWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfbGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCAmJiBkb2MpIHtcbiAgICAgICAgICAgIF9sYW5ndWFnZSA9IGRvYy5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9sYW5ndWFnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfbGFuZ3VhZ2UgPSAnZW4nO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfbGFuZ3VhZ2U7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0TGFuZ3VhZ2UobGFuZ3VhZ2UsIHBlcnNpc3RlbmNlUGFyYW0pIHtcbiAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCdsYW5nJywgbGFuZ3VhZ2UpO1xuICAgIH1cbiAgICB2YXIgcGVyc2lzdGVuY2VUeXBlID0gcGVyc2lzdGVuY2VQYXJhbSA9PT0gdHJ1ZSA/ICdub25lJyA6ICFwZXJzaXN0ZW5jZVBhcmFtID8gJ3Nlc3Npb25TdG9yYWdlJyA6IHBlcnNpc3RlbmNlUGFyYW07XG4gICAgaWYgKHBlcnNpc3RlbmNlVHlwZSA9PT0gJ2xvY2FsU3RvcmFnZScpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIGxhbmd1YWdlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocGVyc2lzdGVuY2VUeXBlID09PSAnc2Vzc2lvblN0b3JhZ2UnKSB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9LRVksIGxhbmd1YWdlKTtcbiAgICB9XG4gICAgX2xhbmd1YWdlID0gbGFuZ3VhZ2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1sYW5ndWFnZS5qcy5tYXAiLCIvKipcbiAqIFNpbXBsZSBkZWVwIG1lcmdlIGZ1bmN0aW9uLiBUYWtlcyBhbGwgYXJndW1lbnRzIGFuZCByZXR1cm5zIGEgZGVlcCBjb3B5IG9mIHRoZSBvYmplY3RzIG1lcmdlZFxuICogdG9nZXRoZXIgaW4gdGhlIG9yZGVyIHByb3ZpZGVkLiBJZiBhbiBvYmplY3QgY3JlYXRlcyBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgaXQgd2lsbCBhc3NpZ24gdGhlXG4gKiBvcmlnaW5hbCByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZSh0YXJnZXQpIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGZvciAodmFyIF9hID0gMCwgYXJnc18xID0gYXJnczsgX2EgPCBhcmdzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgIHZhciBhcmcgPSBhcmdzXzFbX2FdO1xuICAgICAgICBfbWVyZ2UodGFyZ2V0IHx8IHt9LCBhcmcpO1xuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuLyoqXG4gKiBUaGUgX21lcmdlIGhlbHBlciBpdGVyYXRlcyB0aHJvdWdoIGFsbCBwcm9wcyBvbiBzb3VyY2UgYW5kIGFzc2lnbnMgdGhlbSB0byB0YXJnZXQuXG4gKiBXaGVuIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QsIHdlIHdpbGwgY3JlYXRlIGEgZGVlcCBjbG9uZSBvZiB0aGUgb2JqZWN0LiBIb3dldmVyIGlmXG4gKiB0aGVyZSBpcyBhIGNpcmN1bGFyIHJlZmVyZW5jZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGRlZXAgY2xvbmVkIGFuZCB3aWxsIHBlcnNpc3RcbiAqIHRoZSByZWZlcmVuY2UuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiBfbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIGNpcmN1bGFyUmVmZXJlbmNlcykge1xuICAgIGlmIChjaXJjdWxhclJlZmVyZW5jZXMgPT09IHZvaWQgMCkgeyBjaXJjdWxhclJlZmVyZW5jZXMgPSBbXTsgfVxuICAgIGNpcmN1bGFyUmVmZXJlbmNlcy5wdXNoKHNvdXJjZSk7XG4gICAgZm9yICh2YXIgbmFtZV8xIGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLmhhc093blByb3BlcnR5KG5hbWVfMSkpIHtcbiAgICAgICAgICAgIGlmIChuYW1lXzEgIT09ICdfX3Byb3RvX18nICYmIG5hbWVfMSAhPT0gJ2NvbnN0cnVjdG9yJyAmJiBuYW1lXzEgIT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc291cmNlW25hbWVfMV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0NpcmN1bGFyUmVmZXJlbmNlID0gY2lyY3VsYXJSZWZlcmVuY2VzLmluZGV4T2YodmFsdWUpID4gLTE7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXzFdID0gKGlzQ2lyY3VsYXJSZWZlcmVuY2UgPyB2YWx1ZSA6IF9tZXJnZSh0YXJnZXRbbmFtZV8xXSB8fCB7fSwgdmFsdWUsIGNpcmN1bGFyUmVmZXJlbmNlcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W25hbWVfMV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2lyY3VsYXJSZWZlcmVuY2VzLnBvcCgpO1xuICAgIHJldHVybiB0YXJnZXQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tZXJnZS5qcy5tYXAiLCIvKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGUgdXNlciBpcyBvbiBhIGlPUyBkZXZpY2UuXG4gKiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGlPUy1zcGVjaWZpYyBiZWhhdmlvciBzaG91bGQgYmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IHZhciBpc0lPUyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93Lm5hdmlnYXRvciB8fCAhd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gL2lQYWR8aVBob25lfGlQb2QvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1tb2JpbGVEZXRlY3Rvci5qcy5tYXAiLCIvKipcbiAqIFRoZSBoZWxwZXIgZnVuY3Rpb25zIGhlcmUgd2lsbCBtYWtlIHRoZSB0YXJnZXQgZWxlbWVudCBhcyBtb2RhbCB0byBzY3JlZW4gcmVhZGVycywgYnkgcGxhY2luZyBhcmlhLWhpZGRlbiBvbiBlbGVtZW50c1xuICogdGhhdCBhcmUgc2libGluZ3MgdG8gdGhlIHRhcmdldCBlbGVtZW50IGFuZCB0aGUgdGFyZ2V0IGVsZW1lbnQncyBhbmNlc3RvcnMgKGJlY2F1c2UgYXJpYS1oaWRkZW4gZ2V0cyBpbmhlcml0ZWQpLlxuICogVGhhdCB3YXksIGFsbCBvdGhlciBlbGVtZW50cyBvbiB0aGUgcGFnZSBhcmUgaGlkZGVuIHRvIHRoZSBzY3JlZW4gcmVhZGVyLlxuICovXG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJy4vZG9tL2dldERvY3VtZW50Jztcbi8qKiBUYWcgbmFtZXMgdG8gaWdub3JlIHdoZW4gbW9kYWxpemluZyAqL1xudmFyIHRhZ3NUb0lnbm9yZSA9IFsnVEVNUExBVEUnLCAnU1RZTEUnLCAnU0NSSVBUJ107XG4vKipcbiAqIENhbGwgdGhpcyBvbiBhIHRhcmdldCBlbGVtZW50IHRvIG1ha2UgaXQgbW9kYWwgdG8gc2NyZWVuIHJlYWRlcnMuXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCB1bmRvZXMgdGhlIGNoYW5nZXMgaXQgbWFkZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGFsaXplKHRhcmdldCkge1xuICAgIHZhciB0YXJnZXREb2N1bWVudCA9IGdldERvY3VtZW50KHRhcmdldCk7XG4gICAgaWYgKCF0YXJnZXREb2N1bWVudCkge1xuICAgICAgICAvLyBjYW4ndCBkbyB0aGlzIGluIFNTUlxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9O1xuICAgIH1cbiAgICB2YXIgYWZmZWN0ZWROb2RlcyA9IFtdO1xuICAgIC8vIHN0YXJ0IGF0IHRhcmdldCwgdGhlbiByZWN1cnNlIGFuZCBkbyB0aGUgc2FtZSBmb3IgcGFyZW50LCB1bnRpbCB3ZSByZWFjaCA8Ym9keT5cbiAgICB3aGlsZSAodGFyZ2V0ICE9PSB0YXJnZXREb2N1bWVudC5ib2R5ICYmIHRhcmdldC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIC8vIGdyYWIgYWxsIHNpYmxpbmdzIG9mIGN1cnJlbnQgZWxlbWVudFxuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gdGFyZ2V0LnBhcmVudEVsZW1lbnQuY2hpbGRyZW47IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgc2libGluZyA9IF9hW19pXTtcbiAgICAgICAgICAgIC8vIGJ1dCBpZ25vcmUgZWxlbWVudHMgdGhhdCBhcmUgYWxyZWFkeSBhcmlhLWhpZGRlblxuICAgICAgICAgICAgdmFyIGFyaWFIaWRkZW4gPSBzaWJsaW5nLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgICAgIGlmIChzaWJsaW5nICE9PSB0YXJnZXQgJiYgKGFyaWFIaWRkZW4gPT09IG51bGwgfHwgYXJpYUhpZGRlbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJpYUhpZGRlbi50b0xvd2VyQ2FzZSgpKSAhPT0gJ3RydWUnICYmIHRhZ3NUb0lnbm9yZS5pbmRleE9mKHNpYmxpbmcudGFnTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgYWZmZWN0ZWROb2Rlcy5wdXNoKFtzaWJsaW5nLCBhcmlhSGlkZGVuXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIHRha2UgYWxsIHRob3NlIGVsZW1lbnRzIGFuZCBzZXQgYXJpYS1oaWRkZW49dHJ1ZSBvbiB0aGVtXG4gICAgYWZmZWN0ZWROb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgbm9kZSA9IF9hWzBdO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVubW9kYWxpemUoYWZmZWN0ZWROb2Rlcyk7XG4gICAgICAgIGFmZmVjdGVkTm9kZXMgPSBbXTsgLy8gZGlzcG9zZVxuICAgIH07XG59XG4vKipcbiAqIFVuZG9lcyB0aGUgY2hhbmdlcyB0aGF0IG1vZGFsaXplKCkgZGlkLlxuICovXG5mdW5jdGlvbiB1bm1vZGFsaXplKGFmZmVjdGVkTm9kZXMpIHtcbiAgICBhZmZlY3RlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBub2RlID0gX2FbMF0sIG9yaWdpbmFsVmFsdWUgPSBfYVsxXTtcbiAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgdmFsdWUgKGZhbHNlIG9yIHVuc2V0KVxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgb3JpZ2luYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9kYWxpemUuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93JztcbnZhciBpc01hY1Jlc3VsdDtcbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGlzIG9uIGEgTWFjLiBDYWNoZXMgdGhlIHJlc3VsdCB2YWx1ZS5cbiAqIEBwYXJhbSByZXNldCAtIFJlc2V0IHRoZSBjYWNoZWQgcmVzdWx0IHZhbHVlIChtYWlubHkgZm9yIHRlc3RpbmcpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNYWMocmVzZXQpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiBpc01hY1Jlc3VsdCA9PT0gJ3VuZGVmaW5lZCcgfHwgcmVzZXQpIHtcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdygpO1xuICAgICAgICAvLyBJbiBjZXJ0YWluIFNTUiBmcmFtZXdvcmtzLCBgd2luZG93YCB3aWxsIGJlIGRlZmluZWQgZXZlbiBvbiB0aGUgc2VydmVyIGJ1dCBgbmF2aWdhdG9yYCB3aWxsIGJlIHVuZGVmaW5lZFxuICAgICAgICB2YXIgdXNlckFnZW50ID0gKF9hID0gd2luID09PSBudWxsIHx8IHdpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2luLm5hdmlnYXRvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudDtcbiAgICAgICAgaXNNYWNSZXN1bHQgPSAhIXVzZXJBZ2VudCAmJiB1c2VyQWdlbnQuaW5kZXhPZignTWFjaW50b3NoJykgIT09IC0xO1xuICAgIH1cbiAgICByZXR1cm4gISFpc01hY1Jlc3VsdDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9zRGV0ZWN0b3IuanMubWFwIiwiaW1wb3J0IHsgY3JlYXRlTWVtb2l6ZXIgfSBmcm9tICcuLi9tZW1vaXplJztcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvc2VkUmVuZGVyRnVuY3Rpb24ob3V0ZXIpIHtcbiAgICB2YXIgb3V0ZXJNZW1vaXplciA9IGNyZWF0ZU1lbW9pemVyKGZ1bmN0aW9uIChpbm5lcikge1xuICAgICAgICB2YXIgaW5uZXJNZW1vaXplciA9IGNyZWF0ZU1lbW9pemVyKGZ1bmN0aW9uIChkZWZhdWx0UmVuZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGlubmVyUHJvcHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5uZXIoaW5uZXJQcm9wcywgZGVmYXVsdFJlbmRlcik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChvdXRlclByb3BzLCBkZWZhdWx0UmVuZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gb3V0ZXIob3V0ZXJQcm9wcywgZGVmYXVsdFJlbmRlciA/IGlubmVyTWVtb2l6ZXIoZGVmYXVsdFJlbmRlcikgOiBpbm5lcik7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dGVyTWVtb2l6ZXI7XG59XG52YXIgbWVtb2l6ZXIgPSBjcmVhdGVNZW1vaXplcihjcmVhdGVDb21wb3NlZFJlbmRlckZ1bmN0aW9uKTtcbi8qKlxuICogQ29tcG9zZXMgdHdvICdyZW5kZXIgZnVuY3Rpb25zJyB0byBwcm9kdWNlIGEgZmluYWwgcmVuZGVyIGZ1bmN0aW9uIHRoYXQgcmVuZGVyc1xuICogdGhlIG91dGVyIGZ1bmN0aW9uLCBwYXNzaW5nIHRoZSBpbm5lciBmdW5jdGlvbiBhcyAnZGVmYXVsdCByZW5kZXInLiBUaGUgaW5uZXIgZnVuY3Rpb25cbiAqIGlzIHRoZW4gcGFzc2VkIHRoZSBvcmlnaW5hbCAnZGVmYXVsdCByZW5kZXInIHByb3AuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlUmVuZGVyRnVuY3Rpb24ob3V0ZXIsIGlubmVyKSB7XG4gICAgcmV0dXJuIG1lbW9pemVyKG91dGVyKShpbm5lcik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb21wb3NlUmVuZGVyRnVuY3Rpb24uanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29uY2F0U3R5bGVTZXRzV2l0aFByb3BzIH0gZnJvbSAnQGZsdWVudHVpL21lcmdlLXN0eWxlcyc7XG5pbXBvcnQgeyB1c2VDdXN0b21pemF0aW9uU2V0dGluZ3MgfSBmcm9tICcuL2N1c3RvbWl6YXRpb25zL3VzZUN1c3RvbWl6YXRpb25TZXR0aW5ncyc7XG52YXIgRGVmYXVsdEZpZWxkcyA9IFsndGhlbWUnLCAnc3R5bGVzJ107XG5leHBvcnQgZnVuY3Rpb24gc3R5bGVkKENvbXBvbmVudCwgYmFzZVN0eWxlcywgZ2V0UHJvcHMsIGN1c3RvbWl6YWJsZSwgcHVyZSkge1xuICAgIGN1c3RvbWl6YWJsZSA9IGN1c3RvbWl6YWJsZSB8fCB7IHNjb3BlOiAnJywgZmllbGRzOiB1bmRlZmluZWQgfTtcbiAgICB2YXIgc2NvcGUgPSBjdXN0b21pemFibGUuc2NvcGUsIF9hID0gY3VzdG9taXphYmxlLmZpZWxkcywgZmllbGRzID0gX2EgPT09IHZvaWQgMCA/IERlZmF1bHRGaWVsZHMgOiBfYTtcbiAgICB2YXIgV3JhcHBlZCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgICAgICAgdmFyIHN0eWxlcyA9IFJlYWN0LnVzZVJlZigpO1xuICAgICAgICB2YXIgc2V0dGluZ3MgPSB1c2VDdXN0b21pemF0aW9uU2V0dGluZ3MoZmllbGRzLCBzY29wZSk7XG4gICAgICAgIHZhciBjdXN0b21pemVkU3R5bGVzID0gc2V0dGluZ3Muc3R5bGVzLCBkaXIgPSBzZXR0aW5ncy5kaXIsIHJlc3QgPSBfX3Jlc3Qoc2V0dGluZ3MsIFtcInN0eWxlc1wiLCBcImRpclwiXSk7XG4gICAgICAgIHZhciBhZGRpdGlvbmFsUHJvcHMgPSBnZXRQcm9wcyA/IGdldFByb3BzKHByb3BzKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdmFyIGNhY2hlID0gKHN0eWxlcy5jdXJyZW50ICYmIHN0eWxlcy5jdXJyZW50Ll9fY2FjaGVkSW5wdXRzX18pIHx8IFtdO1xuICAgICAgICB2YXIgcHJvcFN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgICAgICAgaWYgKCFzdHlsZXMuY3VycmVudCB8fCBjdXN0b21pemVkU3R5bGVzICE9PSBjYWNoZVsxXSB8fCBwcm9wU3R5bGVzICE9PSBjYWNoZVsyXSkge1xuICAgICAgICAgICAgLy8gVXNpbmcgc3R5bGVkIGNvbXBvbmVudHMgYXMgdGhlIENvbXBvbmVudCBhcmcgd2lsbCByZXN1bHQgaW4gbmVzdGVkIHN0eWxpbmcgYXJyYXlzLlxuICAgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIGNhbiBiZSBjYWNoZWQgYW5kIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHByb3BzIGZyb20gYmVpbmcgcmV0YWluZWQgd2l0aGluIGl0J3MgY2xvc3VyZVxuICAgICAgICAgICAgLy8gd2UgcGFzcyBpbiBqdXN0IHRoZSBzdHlsZXMgYW5kIG5vdCB0aGUgZW50aXJlIHByb3BzXG4gICAgICAgICAgICB2YXIgY29uY2F0ZW5hdGVkU3R5bGVzID0gZnVuY3Rpb24gKHN0eWxlUHJvcHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29uY2F0U3R5bGVTZXRzV2l0aFByb3BzKHN0eWxlUHJvcHMsIGJhc2VTdHlsZXMsIGN1c3RvbWl6ZWRTdHlsZXMsIHByb3BTdHlsZXMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIFRoZSBfX2NhY2hlZElucHV0c19fIGFycmF5IGlzIGF0dGFjaGVkIHRvIHRoZSBmdW5jdGlvbiBhbmQgY29uc3VtZWQgYnkgdGhlXG4gICAgICAgICAgICAvLyBjbGFzc05hbWVzRnVuY3Rpb24gYXMgYSBsaXN0IG9mIGtleXMgdG8gaW5jbHVkZSBmb3IgbWVtb2l6aW5nIGNsYXNzbmFtZXMuXG4gICAgICAgICAgICBjb25jYXRlbmF0ZWRTdHlsZXMuX19jYWNoZWRJbnB1dHNfXyA9IFtcbiAgICAgICAgICAgICAgICBiYXNlU3R5bGVzLFxuICAgICAgICAgICAgICAgIGN1c3RvbWl6ZWRTdHlsZXMsXG4gICAgICAgICAgICAgICAgcHJvcFN0eWxlcyxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25jYXRlbmF0ZWRTdHlsZXMuX19ub1N0eWxlT3ZlcnJpZGVfXyA9XG4gICAgICAgICAgICAgICAgIWN1c3RvbWl6ZWRTdHlsZXMgJiYgIXByb3BTdHlsZXM7XG4gICAgICAgICAgICBzdHlsZXMuY3VycmVudCA9IGNvbmNhdGVuYXRlZFN0eWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9fYXNzaWduKHsgcmVmOiBmb3J3YXJkZWRSZWYgfSwgcmVzdCwgYWRkaXRpb25hbFByb3BzLCBwcm9wcywgeyBzdHlsZXM6IHN0eWxlcy5jdXJyZW50IH0pKTtcbiAgICB9KTtcbiAgICAvLyBGdW5jdGlvbi5wcm90b3R5cGUubmFtZSBpcyBhbiBFUzYgZmVhdHVyZSwgc28gdGhlIGNhc3QgdG8gYW55IGlzIHJlcXVpcmVkIHVudGlsIHdlJ3JlXG4gICAgLy8gYWJsZSB0byBkcm9wIElFIDExIHN1cHBvcnQgYW5kIGNvbXBpbGUgd2l0aCBFUzYgbGlic1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgV3JhcHBlZC5kaXNwbGF5TmFtZSA9IFwiU3R5bGVkXCIuY29uY2F0KENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSk7XG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAgdmFyIHB1cmVDb21wb25lbnQgPSBwdXJlID8gUmVhY3QubWVtbyhXcmFwcGVkKSA6IFdyYXBwZWQ7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHdyYXBwZXIgaGFzIGEgZGlzcGxheU5hbWUgYWZ0ZXIgaXQgaGFzIGJlZW4gbWVtb2l6ZWQuIFRoZW4gYXNzaWduIGl0IHRvIHRoZSBwdXJlIGNvbXBvbmVudC5cbiAgICBpZiAoV3JhcHBlZC5kaXNwbGF5TmFtZSkge1xuICAgICAgICBwdXJlQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gV3JhcHBlZC5kaXNwbGF5TmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHB1cmVDb21wb25lbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHlsZWQuanMubWFwIiwiaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnLi9kb20vZ2V0V2luZG93JztcbmV4cG9ydCB2YXIgaXNJRTExID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgd2luID0gZ2V0V2luZG93KCk7XG4gICAgaWYgKCEoKF9hID0gd2luID09PSBudWxsIHx8IHdpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2luLm5hdmlnYXRvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVzZXJBZ2VudCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gd2luLm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigncnY6MTEuMCcpID4gLTE7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aWUxMURldGVjdG9yLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG4vKipcbiAqIEZ1bmN0aW9uIHRvIGFwcGx5IGRlZmF1bHQgdmFsdWVzIHRvIGEgY29tcG9uZW50IHByb3BzIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgZnVuY3Rpb24gY29tcG9uZW50cyxcbiAqIHRvIG1haW50YWluIHBhcml0eSB3aXRoIHRoZSBgZGVmYXVsdFByb3BzYCBmZWF0dXJlIG9mIGNsYXNzIGNvbXBvbmVudHMuIEl0IGFjY291bnRzIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlXG4gKiBzcGVjaWZpZWQsIGJ1dCB1bmRlZmluZWQuXG4gKiBAcGFyYW0gZGVmYXVsdFByb3BzLSBBbiBvYmplY3Qgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0gcHJvcHNXaXRob3V0RGVmYXVsdHMtIFRoZSBwcm9wcyBvYmplY3QgcGFzc2VkIGludG8gdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcHNXaXRoRGVmYXVsdHMoZGVmYXVsdFByb3BzLCBwcm9wc1dpdGhvdXREZWZhdWx0cykge1xuICAgIHZhciBwcm9wcyA9IF9fYXNzaWduKHt9LCBwcm9wc1dpdGhvdXREZWZhdWx0cyk7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IE9iamVjdC5rZXlzKGRlZmF1bHRQcm9wcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBrZXkgPSBfYVtfaV07XG4gICAgICAgIGlmIChwcm9wc1trZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByb3BzW2tleV0gPSBkZWZhdWx0UHJvcHNba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcHM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRQcm9wc1dpdGhEZWZhdWx0cy5qcy5tYXAiLCJpbXBvcnQgeyBhcnJheXNFcXVhbCB9IGZyb20gJy4vYXJyYXknO1xuLyoqXG4gKiBTZXQgdXAgYSByZWYgcmVzb2x2ZXIgZnVuY3Rpb24gZ2l2ZW4gaW50ZXJuYWwgc3RhdGUgbWFuYWdlZCBmb3IgdGhlIHJlZi5cbiAqIEBwYXJhbSBsb2NhbCBTZXRcbiAqL1xudmFyIGNyZWF0ZVJlc29sdmVyID0gZnVuY3Rpb24gKGxvY2FsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gbG9jYWwucmVmczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciByZWYgPSBfYVtfaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJlZihuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAvLyB3b3JrIGFyb3VuZCB0aGUgaW1tdXRhYmlsaXR5IG9mIHRoZSBSZWFjdC5SZWYgdHlwZVxuICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufTtcbi8qKlxuICogSGVscGVyIHRvIG1lcmdlIHJlZnMgZnJvbSB3aXRoaW4gY2xhc3MgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IHZhciBjcmVhdGVNZXJnZWRSZWYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgbG9jYWwgPSB7XG4gICAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5ld1JlZnMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG5ld1JlZnNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxvY2FsLnJlc29sdmVyIHx8ICFhcnJheXNFcXVhbChsb2NhbC5yZWZzLCBuZXdSZWZzKSkge1xuICAgICAgICAgICAgbG9jYWwucmVzb2x2ZXIgPSBjcmVhdGVSZXNvbHZlcihsb2NhbCk7XG4gICAgICAgIH1cbiAgICAgICAgbG9jYWwucmVmcyA9IG5ld1JlZnM7XG4gICAgICAgIHJldHVybiBsb2NhbC5yZXNvbHZlcjtcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZU1lcmdlZFJlZi5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjYW5Vc2VET00gfSBmcm9tICcuL2RvbS9jYW5Vc2VET00nO1xuLyoqXG4gKiBSZWFjdCBjdXJyZW50bHkgdGhyb3dzIGEgd2FybmluZyB3aGVuIHVzaW5nIGB1c2VMYXlvdXRFZmZlY3RgIG9uIHRoZSBzZXJ2ZXIuIFRvIGdldCBhcm91bmQgaXQsXG4gKiB0aGlzIGhvb2sgY2FsbHMgYHVzZUVmZmVjdGAgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZCBgdXNlTGF5b3V0RWZmZWN0YCBpbiB0aGUgYnJvd3Nlci5cbiAqXG4gKiBQcmVmZXIgYHVzZUVmZmVjdGAgdW5sZXNzIHlvdSBoYXZlIGEgc3BlY2lmaWMgbmVlZCB0byBkbyBzb21ldGhpbmcgYWZ0ZXIgbW91bnQgYW5kIGJlZm9yZSBwYWludCxcbiAqIHN1Y2ggYXMgdG8gYXZvaWQgYSByZW5kZXIgZmxhc2ggZm9yIGNlcnRhaW4gb3BlcmF0aW9ucy5cbiAqXG4gKiBTZXJ2ZXItc2lkZSByZW5kZXJpbmcgaXMgZGV0ZWN0ZWQgYmFzZWQgb24gYGNhblVzZURPTWAgZnJvbSBgQGZsdWVudHVpL3V0aWxpdGllc2AuXG4gKlxuICogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZ2FlYXJvbi9lN2Q5N2NkZjM4YTI5MDc5MjRlYTEyZTRlYmRmM2M4NVxuICogaHR0cHM6Ly9naXRodWIuY29tL3JlZHV4anMvcmVhY3QtcmVkdXgvYmxvYi9tYXN0ZXIvc3JjL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QuanNcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllc1xuZXhwb3J0IHZhciB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gY2FuVXNlRE9NKCkgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3Q7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncywgd2FybiB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgZm9udEZhY2UsIG1lcmdlU3R5bGVzLCBTdHlsZXNoZWV0IH0gZnJvbSAnQGZsdWVudHVpL21lcmdlLXN0eWxlcyc7XG52YXIgSUNPTl9TRVRUSU5HX05BTUUgPSAnaWNvbnMnO1xudmFyIF9pY29uU2V0dGluZ3MgPSBHbG9iYWxTZXR0aW5ncy5nZXRWYWx1ZShJQ09OX1NFVFRJTkdfTkFNRSwge1xuICAgIF9fb3B0aW9uczoge1xuICAgICAgICBkaXNhYmxlV2FybmluZ3M6IGZhbHNlLFxuICAgICAgICB3YXJuT25NaXNzaW5nSWNvbnM6IHRydWUsXG4gICAgfSxcbiAgICBfX3JlbWFwcGVkOiB7fSxcbn0pO1xuLy8gUmVzZXQgaWNvbiByZWdpc3RyYXRpb24gb24gc3R5bGVzaGVldCByZXNldHMuXG52YXIgc3R5bGVzaGVldCA9IFN0eWxlc2hlZXQuZ2V0SW5zdGFuY2UoKTtcbmlmIChzdHlsZXNoZWV0ICYmIHN0eWxlc2hlZXQub25SZXNldCkge1xuICAgIHN0eWxlc2hlZXQub25SZXNldChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIG5hbWVfMSBpbiBfaWNvblNldHRpbmdzKSB7XG4gICAgICAgICAgICBpZiAoX2ljb25TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShuYW1lXzEpICYmICEhX2ljb25TZXR0aW5nc1tuYW1lXzFdLnN1YnNldCkge1xuICAgICAgICAgICAgICAgIF9pY29uU2V0dGluZ3NbbmFtZV8xXS5zdWJzZXQuY2xhc3NOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG4vKipcbiAqIE5vcm1hbGl6ZXMgYW4gaWNvbiBuYW1lIGZvciBjb25zaXN0ZW50IG1hcHBpbmcuXG4gKiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHRvIGNvbnZlcnQgdGhlIGljb24gbmFtZSB0byBsb3dlciBjYXNlLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gSWNvbiBuYW1lIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IE5vcm1hbGl6ZWQgaWNvbiBuYW1lIHRvIHVzZSBmb3IgaW5kZXhpbmcgYW5kIG1hcHBpbmcuXG4gKi9cbnZhciBub3JtYWxpemVJY29uTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKCk7IH07XG4vKipcbiAqIFJlZ2lzdGVycyBhIGdpdmVuIHN1YnNldCBvZiBpY29ucy5cbiAqXG4gKiBAcGFyYW0gaWNvblN1YnNldCAtIHRoZSBpY29uIHN1YnNldCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJJY29ucyhpY29uU3Vic2V0LCBvcHRpb25zKSB7XG4gICAgdmFyIHN1YnNldCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpY29uU3Vic2V0KSwgeyBpc1JlZ2lzdGVyZWQ6IGZhbHNlLCBjbGFzc05hbWU6IHVuZGVmaW5lZCB9KTtcbiAgICB2YXIgaWNvbnMgPSBpY29uU3Vic2V0Lmljb25zO1xuICAgIC8vIEdyYWIgb3B0aW9ucywgb3B0aW9uYWxseSBtaXggdXNlciBwcm92aWRlZCBvbmVzIG9uIHRvcC5cbiAgICBvcHRpb25zID0gb3B0aW9ucyA/IF9fYXNzaWduKF9fYXNzaWduKHt9LCBfaWNvblNldHRpbmdzLl9fb3B0aW9ucyksIG9wdGlvbnMpIDogX2ljb25TZXR0aW5ncy5fX29wdGlvbnM7XG4gICAgZm9yICh2YXIgaWNvbk5hbWUgaW4gaWNvbnMpIHtcbiAgICAgICAgaWYgKGljb25zLmhhc093blByb3BlcnR5KGljb25OYW1lKSkge1xuICAgICAgICAgICAgdmFyIGNvZGUgPSBpY29uc1tpY29uTmFtZV07XG4gICAgICAgICAgICB2YXIgbm9ybWFsaXplZEljb25OYW1lID0gbm9ybWFsaXplSWNvbk5hbWUoaWNvbk5hbWUpO1xuICAgICAgICAgICAgaWYgKF9pY29uU2V0dGluZ3Nbbm9ybWFsaXplZEljb25OYW1lXSkge1xuICAgICAgICAgICAgICAgIF93YXJuRHVwbGljYXRlSWNvbihpY29uTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfaWNvblNldHRpbmdzW25vcm1hbGl6ZWRJY29uTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNldDogc3Vic2V0LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFVucmVnaXN0ZXJzIGljb25zIGJ5IG5hbWUuXG4gKlxuICogQHBhcmFtIGljb25OYW1lcyAtIExpc3Qgb2YgaWNvbnMgdG8gdW5yZWdpc3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJJY29ucyhpY29uTmFtZXMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IF9pY29uU2V0dGluZ3MuX19vcHRpb25zO1xuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGljb25OYW1lKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSWNvbk5hbWUgPSBub3JtYWxpemVJY29uTmFtZShpY29uTmFtZSk7XG4gICAgICAgIGlmIChfaWNvblNldHRpbmdzW25vcm1hbGl6ZWRJY29uTmFtZV0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBfaWNvblNldHRpbmdzW25vcm1hbGl6ZWRJY29uTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBXYXJuIHRoYXQgd2UgYXJlIHRyeWluZyB0byBkZWxldGUgYW4gaWNvbiB0aGF0IGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5kaXNhYmxlV2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICB3YXJuKFwiVGhlIGljb24gXFxcIlwiLmNvbmNhdChpY29uTmFtZSwgXCJcXFwiIHRyaWVkIHRvIHVucmVnaXN0ZXIgYnV0IHdhcyBub3QgcmVnaXN0ZXJlZC5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIERlbGV0ZSBhbnkgYWxpYXNlcyBmb3IgdGhpcyBpY29uTmFtZVxuICAgICAgICBpZiAoX2ljb25TZXR0aW5ncy5fX3JlbWFwcGVkW25vcm1hbGl6ZWRJY29uTmFtZV0pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBfaWNvblNldHRpbmdzLl9fcmVtYXBwZWRbbm9ybWFsaXplZEljb25OYW1lXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZWxldGUgYW55IGl0ZW1zIHRoYXQgd2VyZSBhbiBhbGlhcyBmb3IgdGhpcyBpY29uTmFtZVxuICAgICAgICBPYmplY3Qua2V5cyhfaWNvblNldHRpbmdzLl9fcmVtYXBwZWQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKF9pY29uU2V0dGluZ3MuX19yZW1hcHBlZFtrZXldID09PSBub3JtYWxpemVkSWNvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgX2ljb25TZXR0aW5ncy5fX3JlbWFwcGVkW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgZm9yICh2YXIgX2kgPSAwLCBpY29uTmFtZXNfMSA9IGljb25OYW1lczsgX2kgPCBpY29uTmFtZXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGljb25OYW1lID0gaWNvbk5hbWVzXzFbX2ldO1xuICAgICAgICBfbG9vcF8xKGljb25OYW1lKTtcbiAgICB9XG59XG4vKipcbiAqIFJlbWFwcyBvbmUgaWNvbiBuYW1lIHRvIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlckljb25BbGlhcyhpY29uTmFtZSwgbWFwcGVkVG9OYW1lKSB7XG4gICAgX2ljb25TZXR0aW5ncy5fX3JlbWFwcGVkW25vcm1hbGl6ZUljb25OYW1lKGljb25OYW1lKV0gPSBub3JtYWxpemVJY29uTmFtZShtYXBwZWRUb05hbWUpO1xufVxuLyoqXG4gKiBHZXRzIGFuIGljb24gZGVmaW5pdGlvbi4gSWYgYW4gaWNvbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZSBzdWJzZXQgaGFzIHlldCB0byBiZSByZWdpc3RlcmVkLFxuICogaXQgd2lsbCBnZXQgcmVnaXN0ZXJlZCBpbW1lZGlhdGVseS5cbiAqXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgaWNvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEljb24obmFtZSkge1xuICAgIHZhciBpY29uID0gdW5kZWZpbmVkO1xuICAgIHZhciBvcHRpb25zID0gX2ljb25TZXR0aW5ncy5fX29wdGlvbnM7XG4gICAgbmFtZSA9IG5hbWUgPyBub3JtYWxpemVJY29uTmFtZShuYW1lKSA6ICcnO1xuICAgIG5hbWUgPSBfaWNvblNldHRpbmdzLl9fcmVtYXBwZWRbbmFtZV0gfHwgbmFtZTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgICBpY29uID0gX2ljb25TZXR0aW5nc1tuYW1lXTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIHZhciBzdWJzZXQgPSBpY29uLnN1YnNldDtcbiAgICAgICAgICAgIGlmIChzdWJzZXQgJiYgc3Vic2V0LmZvbnRGYWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzdWJzZXQuaXNSZWdpc3RlcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRGYWNlKHN1YnNldC5mb250RmFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNldC5pc1JlZ2lzdGVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXN1YnNldC5jbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Vic2V0LmNsYXNzTmFtZSA9IG1lcmdlU3R5bGVzKHN1YnNldC5zdHlsZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogc3Vic2V0LmZvbnRGYWNlLmZvbnRGYW1pbHksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBzdWJzZXQuZm9udEZhY2UuZm9udFdlaWdodCB8fCAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTdHlsZTogc3Vic2V0LmZvbnRGYWNlLmZvbnRTdHlsZSB8fCAnbm9ybWFsJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZVdhcm5pbmdzICYmIG9wdGlvbnMud2Fybk9uTWlzc2luZ0ljb25zKSB7XG4gICAgICAgICAgICAgICAgd2FybihcIlRoZSBpY29uIFxcXCJcIi5jb25jYXQobmFtZSwgXCJcXFwiIHdhcyB1c2VkIGJ1dCBub3QgcmVnaXN0ZXJlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvZmx1ZW50dWkvd2lraS9Vc2luZy1pY29ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpY29uO1xufVxuLyoqXG4gKiBTZXRzIHRoZSBpY29uIG9wdGlvbnMuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SWNvbk9wdGlvbnMob3B0aW9ucykge1xuICAgIF9pY29uU2V0dGluZ3MuX19vcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIF9pY29uU2V0dGluZ3MuX19vcHRpb25zKSwgb3B0aW9ucyk7XG59XG52YXIgX21pc3NpbmdJY29ucyA9IFtdO1xudmFyIF9taXNzaW5nSWNvbnNUaW1lciA9IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIF93YXJuRHVwbGljYXRlSWNvbihpY29uTmFtZSkge1xuICAgIHZhciBvcHRpb25zID0gX2ljb25TZXR0aW5ncy5fX29wdGlvbnM7XG4gICAgdmFyIHdhcm5pbmdEZWxheSA9IDIwMDA7XG4gICAgdmFyIG1heEljb25zSW5NZXNzYWdlID0gMTA7XG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVXYXJuaW5ncykge1xuICAgICAgICBfbWlzc2luZ0ljb25zLnB1c2goaWNvbk5hbWUpO1xuICAgICAgICBpZiAoX21pc3NpbmdJY29uc1RpbWVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF9taXNzaW5nSWNvbnNUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHdhcm4oXCJTb21lIGljb25zIHdlcmUgcmUtcmVnaXN0ZXJlZC4gQXBwbGljYXRpb25zIHNob3VsZCBvbmx5IGNhbGwgcmVnaXN0ZXJJY29ucyBmb3IgYW55IGdpdmVuIFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJpY29uIG9uY2UuIFJlZGVmaW5pbmcgd2hhdCBhbiBpY29uIGlzIG1heSBoYXZlIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLiBEdXBsaWNhdGVzIFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJpbmNsdWRlOiBcXG5cIiArXG4gICAgICAgICAgICAgICAgICAgIF9taXNzaW5nSWNvbnMuc2xpY2UoMCwgbWF4SWNvbnNJbk1lc3NhZ2UpLmpvaW4oJywgJykgK1xuICAgICAgICAgICAgICAgICAgICAoX21pc3NpbmdJY29ucy5sZW5ndGggPiBtYXhJY29uc0luTWVzc2FnZSA/IFwiICgrIFwiLmNvbmNhdChfbWlzc2luZ0ljb25zLmxlbmd0aCAtIG1heEljb25zSW5NZXNzYWdlLCBcIiBtb3JlKVwiKSA6ICcnKSk7XG4gICAgICAgICAgICAgICAgX21pc3NpbmdJY29uc1RpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIF9taXNzaW5nSWNvbnMgPSBbXTtcbiAgICAgICAgICAgIH0sIHdhcm5pbmdEZWxheSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pY29ucy5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqIEdlbmVyYXRlcyBhbGwgdGhlIHNlbWFudGljIHNsb3QgY29sb3JzIGJhc2VkIG9uIHRoZSB0aGVtZSBzbyBmYXJcbiAqIFdlJ2xsIHVzZSB0aGVzZSBhcyBmYWxsYmFja3MgZm9yIHNlbWFudGljIHNsb3RzIHRoYXQgdGhlIHBhc3NlZCBpbiB0aGVtZSBkaWQgbm90IGRlZmluZS5cbiAqIFRoZSBjYWxsZXIgbXVzdCBzdGlsbCBtaXggaW4gdGhlIGN1c3RvbWl6ZWQgc2VtYW50aWMgc2xvdHMgYXQgdGhlIGVuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTZW1hbnRpY0NvbG9ycyhwLCBlLCBzLCBpc0ludmVydGVkLCBkZXBDb21tZW50cykge1xuICAgIGlmIChkZXBDb21tZW50cyA9PT0gdm9pZCAwKSB7IGRlcENvbW1lbnRzID0gZmFsc2U7IH1cbiAgICB2YXIgc2VtYW50aWNDb2xvcnMgPSBfX2Fzc2lnbih7IHByaW1hcnlCdXR0b25Cb3JkZXI6ICd0cmFuc3BhcmVudCcsIGVycm9yVGV4dDogIWlzSW52ZXJ0ZWQgPyAnI2E0MjYyYycgOiAnI0YxNzA3QicsIG1lc3NhZ2VUZXh0OiAhaXNJbnZlcnRlZCA/ICcjMzIzMTMwJyA6ICcjRjNGMkYxJywgbWVzc2FnZUxpbms6ICFpc0ludmVydGVkID8gJyMwMDVBOUUnIDogJyM2Q0I4RjYnLCBtZXNzYWdlTGlua0hvdmVyZWQ6ICFpc0ludmVydGVkID8gJyMwMDQ1NzgnIDogJyM4MkM3RkYnLCBpbmZvSWNvbjogIWlzSW52ZXJ0ZWQgPyAnIzYwNWU1YycgOiAnI0M4QzZDNCcsIGVycm9ySWNvbjogIWlzSW52ZXJ0ZWQgPyAnI0E4MDAwMCcgOiAnI0YxNzA3QicsIGJsb2NraW5nSWNvbjogIWlzSW52ZXJ0ZWQgPyAnI0ZERTdFOScgOiAnIzQ0MjcyNicsIHdhcm5pbmdJY29uOiAhaXNJbnZlcnRlZCA/ICcjNzk3Nzc1JyA6ICcjQzhDNkM0Jywgc2V2ZXJlV2FybmluZ0ljb246ICFpc0ludmVydGVkID8gJyNEODNCMDEnIDogJyNGQ0UxMDAnLCBzdWNjZXNzSWNvbjogIWlzSW52ZXJ0ZWQgPyAnIzEwN0MxMCcgOiAnIzkyQzM1MycsIGluZm9CYWNrZ3JvdW5kOiAhaXNJbnZlcnRlZCA/ICcjZjNmMmYxJyA6ICcjMzIzMTMwJywgZXJyb3JCYWNrZ3JvdW5kOiAhaXNJbnZlcnRlZCA/ICcjRkRFN0U5JyA6ICcjNDQyNzI2JywgYmxvY2tpbmdCYWNrZ3JvdW5kOiAhaXNJbnZlcnRlZCA/ICcjRkRFN0U5JyA6ICcjNDQyNzI2Jywgd2FybmluZ0JhY2tncm91bmQ6ICFpc0ludmVydGVkID8gJyNGRkY0Q0UnIDogJyM0MzM1MTknLCBzZXZlcmVXYXJuaW5nQmFja2dyb3VuZDogIWlzSW52ZXJ0ZWQgPyAnI0ZFRDlDQycgOiAnIzRGMkEwRicsIHN1Y2Nlc3NCYWNrZ3JvdW5kOiAhaXNJbnZlcnRlZCA/ICcjREZGNkREJyA6ICcjMzkzRDFCJywgXG4gICAgICAgIC8vIGRlcHJlY2F0ZWRcbiAgICAgICAgd2FybmluZ0hpZ2hsaWdodDogIWlzSW52ZXJ0ZWQgPyAnI2ZmYjkwMCcgOiAnI2ZmZjEwMCcsIHN1Y2Nlc3NUZXh0OiAhaXNJbnZlcnRlZCA/ICcjMTA3QzEwJyA6ICcjOTJjMzUzJyB9LCBzKTtcbiAgICB2YXIgZnVsbFNlbWFudGljQ29sb3JzID0gZ2V0U2VtYW50aWNDb2xvcnMocCwgZSwgc2VtYW50aWNDb2xvcnMsIGlzSW52ZXJ0ZWQpO1xuICAgIHJldHVybiBfZml4RGVwcmVjYXRlZFNsb3RzKGZ1bGxTZW1hbnRpY0NvbG9ycywgZGVwQ29tbWVudHMpO1xufVxuLyoqXG4gKiBNYXAgcGFydGlhbCBwbGF0dGUgYW5kIGVmZmVjdHMgdG8gcGFydGlhbCBzZW1hbnRpYyBjb2xvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZW1hbnRpY0NvbG9ycyhwLCBlLCBzLCBpc0ludmVydGVkLCBkZXBDb21tZW50cykge1xuICAgIGlmIChkZXBDb21tZW50cyA9PT0gdm9pZCAwKSB7IGRlcENvbW1lbnRzID0gZmFsc2U7IH1cbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgLy8gbWFwIHBhbGV0dGVcbiAgICB2YXIgX2EgPSBwIHx8IHt9LCB3aGl0ZSA9IF9hLndoaXRlLCBibGFjayA9IF9hLmJsYWNrLCB0aGVtZVByaW1hcnkgPSBfYS50aGVtZVByaW1hcnksIHRoZW1lRGFyayA9IF9hLnRoZW1lRGFyaywgdGhlbWVEYXJrZXIgPSBfYS50aGVtZURhcmtlciwgdGhlbWVEYXJrQWx0ID0gX2EudGhlbWVEYXJrQWx0LCB0aGVtZUxpZ2h0ZXIgPSBfYS50aGVtZUxpZ2h0ZXIsIG5ldXRyYWxMaWdodCA9IF9hLm5ldXRyYWxMaWdodCwgbmV1dHJhbExpZ2h0ZXIgPSBfYS5uZXV0cmFsTGlnaHRlciwgbmV1dHJhbERhcmsgPSBfYS5uZXV0cmFsRGFyaywgbmV1dHJhbFF1YXRlcm5hcnkgPSBfYS5uZXV0cmFsUXVhdGVybmFyeSwgbmV1dHJhbFF1YXRlcm5hcnlBbHQgPSBfYS5uZXV0cmFsUXVhdGVybmFyeUFsdCwgbmV1dHJhbFByaW1hcnkgPSBfYS5uZXV0cmFsUHJpbWFyeSwgbmV1dHJhbFNlY29uZGFyeSA9IF9hLm5ldXRyYWxTZWNvbmRhcnksIG5ldXRyYWxTZWNvbmRhcnlBbHQgPSBfYS5uZXV0cmFsU2Vjb25kYXJ5QWx0LCBuZXV0cmFsVGVydGlhcnkgPSBfYS5uZXV0cmFsVGVydGlhcnksIG5ldXRyYWxUZXJ0aWFyeUFsdCA9IF9hLm5ldXRyYWxUZXJ0aWFyeUFsdCwgbmV1dHJhbExpZ2h0ZXJBbHQgPSBfYS5uZXV0cmFsTGlnaHRlckFsdCwgYWNjZW50ID0gX2EuYWNjZW50O1xuICAgIGlmICh3aGl0ZSkge1xuICAgICAgICByZXN1bHQuYm9keUJhY2tncm91bmQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LmJvZHlGcmFtZUJhY2tncm91bmQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LmFjY2VudEJ1dHRvblRleHQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LmJ1dHRvbkJhY2tncm91bmQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LnByaW1hcnlCdXR0b25UZXh0ID0gd2hpdGU7XG4gICAgICAgIHJlc3VsdC5wcmltYXJ5QnV0dG9uVGV4dEhvdmVyZWQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LnByaW1hcnlCdXR0b25UZXh0UHJlc3NlZCA9IHdoaXRlO1xuICAgICAgICByZXN1bHQuaW5wdXRCYWNrZ3JvdW5kID0gd2hpdGU7XG4gICAgICAgIHJlc3VsdC5pbnB1dEZvcmVncm91bmRDaGVja2VkID0gd2hpdGU7XG4gICAgICAgIHJlc3VsdC5saXN0QmFja2dyb3VuZCA9IHdoaXRlO1xuICAgICAgICByZXN1bHQubWVudUJhY2tncm91bmQgPSB3aGl0ZTtcbiAgICAgICAgcmVzdWx0LmNhcmRTdGFuZG91dEJhY2tncm91bmQgPSB3aGl0ZTtcbiAgICB9XG4gICAgaWYgKGJsYWNrKSB7XG4gICAgICAgIHJlc3VsdC5ib2R5VGV4dENoZWNrZWQgPSBibGFjaztcbiAgICAgICAgcmVzdWx0LmJ1dHRvblRleHRDaGVja2VkSG92ZXJlZCA9IGJsYWNrO1xuICAgIH1cbiAgICBpZiAodGhlbWVQcmltYXJ5KSB7XG4gICAgICAgIHJlc3VsdC5saW5rID0gdGhlbWVQcmltYXJ5O1xuICAgICAgICByZXN1bHQucHJpbWFyeUJ1dHRvbkJhY2tncm91bmQgPSB0aGVtZVByaW1hcnk7XG4gICAgICAgIHJlc3VsdC5pbnB1dEJhY2tncm91bmRDaGVja2VkID0gdGhlbWVQcmltYXJ5O1xuICAgICAgICByZXN1bHQuaW5wdXRJY29uID0gdGhlbWVQcmltYXJ5O1xuICAgICAgICByZXN1bHQuaW5wdXRGb2N1c0JvcmRlckFsdCA9IHRoZW1lUHJpbWFyeTtcbiAgICAgICAgcmVzdWx0Lm1lbnVJY29uID0gdGhlbWVQcmltYXJ5O1xuICAgICAgICByZXN1bHQubWVudUhlYWRlciA9IHRoZW1lUHJpbWFyeTtcbiAgICAgICAgcmVzdWx0LmFjY2VudEJ1dHRvbkJhY2tncm91bmQgPSB0aGVtZVByaW1hcnk7XG4gICAgfVxuICAgIGlmICh0aGVtZURhcmspIHtcbiAgICAgICAgcmVzdWx0LnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kUHJlc3NlZCA9IHRoZW1lRGFyaztcbiAgICAgICAgcmVzdWx0LmlucHV0QmFja2dyb3VuZENoZWNrZWRIb3ZlcmVkID0gdGhlbWVEYXJrO1xuICAgICAgICByZXN1bHQuaW5wdXRJY29uSG92ZXJlZCA9IHRoZW1lRGFyaztcbiAgICB9XG4gICAgaWYgKHRoZW1lRGFya2VyKSB7XG4gICAgICAgIHJlc3VsdC5saW5rSG92ZXJlZCA9IHRoZW1lRGFya2VyO1xuICAgIH1cbiAgICBpZiAodGhlbWVEYXJrQWx0KSB7XG4gICAgICAgIHJlc3VsdC5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZEhvdmVyZWQgPSB0aGVtZURhcmtBbHQ7XG4gICAgfVxuICAgIGlmICh0aGVtZUxpZ2h0ZXIpIHtcbiAgICAgICAgcmVzdWx0LmlucHV0UGxhY2Vob2xkZXJCYWNrZ3JvdW5kQ2hlY2tlZCA9IHRoZW1lTGlnaHRlcjtcbiAgICB9XG4gICAgaWYgKG5ldXRyYWxMaWdodCkge1xuICAgICAgICByZXN1bHQuYm9keUJhY2tncm91bmRDaGVja2VkID0gbmV1dHJhbExpZ2h0O1xuICAgICAgICByZXN1bHQuYm9keUZyYW1lRGl2aWRlciA9IG5ldXRyYWxMaWdodDtcbiAgICAgICAgcmVzdWx0LmJvZHlEaXZpZGVyID0gbmV1dHJhbExpZ2h0O1xuICAgICAgICByZXN1bHQudmFyaWFudEJvcmRlciA9IG5ldXRyYWxMaWdodDtcbiAgICAgICAgcmVzdWx0LmJ1dHRvbkJhY2tncm91bmRDaGVja2VkSG92ZXJlZCA9IG5ldXRyYWxMaWdodDtcbiAgICAgICAgcmVzdWx0LmJ1dHRvbkJhY2tncm91bmRQcmVzc2VkID0gbmV1dHJhbExpZ2h0O1xuICAgICAgICByZXN1bHQubGlzdEl0ZW1CYWNrZ3JvdW5kQ2hlY2tlZCA9IG5ldXRyYWxMaWdodDtcbiAgICAgICAgcmVzdWx0Lmxpc3RIZWFkZXJCYWNrZ3JvdW5kUHJlc3NlZCA9IG5ldXRyYWxMaWdodDtcbiAgICAgICAgcmVzdWx0Lm1lbnVJdGVtQmFja2dyb3VuZFByZXNzZWQgPSBuZXV0cmFsTGlnaHQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICByZXN1bHQubWVudUl0ZW1CYWNrZ3JvdW5kQ2hlY2tlZCA9IG5ldXRyYWxMaWdodDtcbiAgICB9XG4gICAgaWYgKG5ldXRyYWxMaWdodGVyKSB7XG4gICAgICAgIHJlc3VsdC5ib2R5QmFja2dyb3VuZEhvdmVyZWQgPSBuZXV0cmFsTGlnaHRlcjtcbiAgICAgICAgcmVzdWx0LmJ1dHRvbkJhY2tncm91bmRIb3ZlcmVkID0gbmV1dHJhbExpZ2h0ZXI7XG4gICAgICAgIHJlc3VsdC5idXR0b25CYWNrZ3JvdW5kRGlzYWJsZWQgPSBuZXV0cmFsTGlnaHRlcjtcbiAgICAgICAgcmVzdWx0LmJ1dHRvbkJvcmRlckRpc2FibGVkID0gbmV1dHJhbExpZ2h0ZXI7XG4gICAgICAgIHJlc3VsdC5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZERpc2FibGVkID0gbmV1dHJhbExpZ2h0ZXI7XG4gICAgICAgIHJlc3VsdC5kaXNhYmxlZEJhY2tncm91bmQgPSBuZXV0cmFsTGlnaHRlcjtcbiAgICAgICAgcmVzdWx0Lmxpc3RJdGVtQmFja2dyb3VuZEhvdmVyZWQgPSBuZXV0cmFsTGlnaHRlcjtcbiAgICAgICAgcmVzdWx0Lmxpc3RIZWFkZXJCYWNrZ3JvdW5kSG92ZXJlZCA9IG5ldXRyYWxMaWdodGVyO1xuICAgICAgICByZXN1bHQubWVudUl0ZW1CYWNrZ3JvdW5kSG92ZXJlZCA9IG5ldXRyYWxMaWdodGVyO1xuICAgIH1cbiAgICBpZiAobmV1dHJhbFF1YXRlcm5hcnkpIHtcbiAgICAgICAgcmVzdWx0LnByaW1hcnlCdXR0b25UZXh0RGlzYWJsZWQgPSBuZXV0cmFsUXVhdGVybmFyeTtcbiAgICAgICAgcmVzdWx0LmRpc2FibGVkU3VidGV4dCA9IG5ldXRyYWxRdWF0ZXJuYXJ5O1xuICAgIH1cbiAgICBpZiAobmV1dHJhbFF1YXRlcm5hcnlBbHQpIHtcbiAgICAgICAgcmVzdWx0Lmxpc3RJdGVtQmFja2dyb3VuZENoZWNrZWRIb3ZlcmVkID0gbmV1dHJhbFF1YXRlcm5hcnlBbHQ7XG4gICAgfVxuICAgIGlmIChuZXV0cmFsVGVydGlhcnkpIHtcbiAgICAgICAgcmVzdWx0LmRpc2FibGVkQm9keVRleHQgPSBuZXV0cmFsVGVydGlhcnk7XG4gICAgICAgIHJlc3VsdC52YXJpYW50Qm9yZGVySG92ZXJlZCA9IChzID09PSBudWxsIHx8IHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHMudmFyaWFudEJvcmRlckhvdmVyZWQpIHx8IG5ldXRyYWxUZXJ0aWFyeTtcbiAgICAgICAgcmVzdWx0LmJ1dHRvblRleHREaXNhYmxlZCA9IG5ldXRyYWxUZXJ0aWFyeTtcbiAgICAgICAgcmVzdWx0LmlucHV0SWNvbkRpc2FibGVkID0gbmV1dHJhbFRlcnRpYXJ5O1xuICAgICAgICByZXN1bHQuZGlzYWJsZWRUZXh0ID0gbmV1dHJhbFRlcnRpYXJ5O1xuICAgIH1cbiAgICBpZiAobmV1dHJhbFByaW1hcnkpIHtcbiAgICAgICAgcmVzdWx0LmJvZHlUZXh0ID0gbmV1dHJhbFByaW1hcnk7XG4gICAgICAgIHJlc3VsdC5hY3Rpb25MaW5rID0gbmV1dHJhbFByaW1hcnk7XG4gICAgICAgIHJlc3VsdC5idXR0b25UZXh0ID0gbmV1dHJhbFByaW1hcnk7XG4gICAgICAgIHJlc3VsdC5pbnB1dEJvcmRlckhvdmVyZWQgPSBuZXV0cmFsUHJpbWFyeTtcbiAgICAgICAgcmVzdWx0LmlucHV0VGV4dCA9IG5ldXRyYWxQcmltYXJ5O1xuICAgICAgICByZXN1bHQubGlzdFRleHQgPSBuZXV0cmFsUHJpbWFyeTtcbiAgICAgICAgcmVzdWx0Lm1lbnVJdGVtVGV4dCA9IG5ldXRyYWxQcmltYXJ5O1xuICAgIH1cbiAgICBpZiAobmV1dHJhbExpZ2h0ZXJBbHQpIHtcbiAgICAgICAgcmVzdWx0LmJvZHlTdGFuZG91dEJhY2tncm91bmQgPSBuZXV0cmFsTGlnaHRlckFsdDtcbiAgICAgICAgcmVzdWx0LmRlZmF1bHRTdGF0ZUJhY2tncm91bmQgPSBuZXV0cmFsTGlnaHRlckFsdDtcbiAgICB9XG4gICAgaWYgKG5ldXRyYWxEYXJrKSB7XG4gICAgICAgIHJlc3VsdC5hY3Rpb25MaW5rSG92ZXJlZCA9IG5ldXRyYWxEYXJrO1xuICAgICAgICByZXN1bHQuYnV0dG9uVGV4dEhvdmVyZWQgPSBuZXV0cmFsRGFyaztcbiAgICAgICAgcmVzdWx0LmJ1dHRvblRleHRDaGVja2VkID0gbmV1dHJhbERhcms7XG4gICAgICAgIHJlc3VsdC5idXR0b25UZXh0UHJlc3NlZCA9IG5ldXRyYWxEYXJrO1xuICAgICAgICByZXN1bHQuaW5wdXRUZXh0SG92ZXJlZCA9IG5ldXRyYWxEYXJrO1xuICAgICAgICByZXN1bHQubWVudUl0ZW1UZXh0SG92ZXJlZCA9IG5ldXRyYWxEYXJrO1xuICAgIH1cbiAgICBpZiAobmV1dHJhbFNlY29uZGFyeSkge1xuICAgICAgICByZXN1bHQuYm9keVN1YnRleHQgPSBuZXV0cmFsU2Vjb25kYXJ5O1xuICAgICAgICByZXN1bHQuZm9jdXNCb3JkZXIgPSBuZXV0cmFsU2Vjb25kYXJ5O1xuICAgICAgICByZXN1bHQuaW5wdXRCb3JkZXIgPSBuZXV0cmFsU2Vjb25kYXJ5O1xuICAgICAgICByZXN1bHQuc21hbGxJbnB1dEJvcmRlciA9IG5ldXRyYWxTZWNvbmRhcnk7XG4gICAgICAgIHJlc3VsdC5pbnB1dFBsYWNlaG9sZGVyVGV4dCA9IG5ldXRyYWxTZWNvbmRhcnk7XG4gICAgfVxuICAgIGlmIChuZXV0cmFsU2Vjb25kYXJ5QWx0KSB7XG4gICAgICAgIHJlc3VsdC5idXR0b25Cb3JkZXIgPSBuZXV0cmFsU2Vjb25kYXJ5QWx0O1xuICAgIH1cbiAgICBpZiAobmV1dHJhbFRlcnRpYXJ5QWx0KSB7XG4gICAgICAgIHJlc3VsdC5kaXNhYmxlZEJvZHlTdWJ0ZXh0ID0gbmV1dHJhbFRlcnRpYXJ5QWx0O1xuICAgICAgICByZXN1bHQuZGlzYWJsZWRCb3JkZXIgPSBuZXV0cmFsVGVydGlhcnlBbHQ7XG4gICAgICAgIHJlc3VsdC5idXR0b25CYWNrZ3JvdW5kQ2hlY2tlZCA9IG5ldXRyYWxUZXJ0aWFyeUFsdDtcbiAgICAgICAgcmVzdWx0Lm1lbnVEaXZpZGVyID0gbmV1dHJhbFRlcnRpYXJ5QWx0O1xuICAgIH1cbiAgICBpZiAoYWNjZW50KSB7XG4gICAgICAgIHJlc3VsdC5hY2NlbnRCdXR0b25CYWNrZ3JvdW5kID0gYWNjZW50O1xuICAgIH1cbiAgICAvLyBtYXAgZWZmZWN0c1xuICAgIGlmIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuZWxldmF0aW9uNCkge1xuICAgICAgICByZXN1bHQuY2FyZFNoYWRvdyA9IGUuZWxldmF0aW9uNDtcbiAgICB9XG4gICAgaWYgKCFpc0ludmVydGVkICYmIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuZWxldmF0aW9uOCkpIHtcbiAgICAgICAgcmVzdWx0LmNhcmRTaGFkb3dIb3ZlcmVkID0gZS5lbGV2YXRpb244O1xuICAgIH1cbiAgICBlbHNlIGlmIChyZXN1bHQudmFyaWFudEJvcmRlckhvdmVyZWQpIHtcbiAgICAgICAgcmVzdWx0LmNhcmRTaGFkb3dIb3ZlcmVkID0gJzAgMCAxcHggJyArIHJlc3VsdC52YXJpYW50Qm9yZGVySG92ZXJlZDtcbiAgICB9XG4gICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHMpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBfZml4RGVwcmVjYXRlZFNsb3RzKHMsIGRlcENvbW1lbnRzKSB7XG4gICAgLy8gQWRkIEBkZXByZWNhdGVkIHRhZyBhcyBjb21tZW50IGlmIGVuYWJsZWRcbiAgICB2YXIgZGVwID0gJyc7XG4gICAgaWYgKGRlcENvbW1lbnRzID09PSB0cnVlKSB7XG4gICAgICAgIGRlcCA9ICcgLyogQGRlcHJlY2F0ZWQgKi8nO1xuICAgIH1cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbiAqL1xuICAgIHMubGlzdFRleHRDb2xvciA9IHMubGlzdFRleHQgKyBkZXA7XG4gICAgcy5tZW51SXRlbUJhY2tncm91bmRDaGVja2VkICs9IGRlcDtcbiAgICBzLndhcm5pbmdIaWdobGlnaHQgKz0gZGVwO1xuICAgIHMud2FybmluZ1RleHQgPSBzLm1lc3NhZ2VUZXh0ICsgZGVwO1xuICAgIHMuc3VjY2Vzc1RleHQgKz0gZGVwO1xuICAgIC8qIGVzbGludC1lbmFibGUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24gKi9cbiAgICByZXR1cm4gcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1ha2VTZW1hbnRpY0NvbG9ycy5qcy5tYXAiLCJpbXBvcnQgeyBtZXJnZSB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgZ2V0U2VtYW50aWNDb2xvcnMgfSBmcm9tICcuL3V0aWxpdGllcy9tYWtlU2VtYW50aWNDb2xvcnMnO1xuLyoqXG4gKiBNZXJnZSBhIHBhcnRpYWwvZnVsbCB0aGVtZSBpbnRvIGEgZnVsbCB0aGVtZSBhbmQgcmV0dXJucyBhIG1lcmdlZCBmdWxsIHRoZW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VUaGVtZXModGhlbWUsIHBhcnRpYWxUaGVtZSkge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGlmIChwYXJ0aWFsVGhlbWUgPT09IHZvaWQgMCkgeyBwYXJ0aWFsVGhlbWUgPSB7fTsgfVxuICAgIHZhciBtZXJnZWRUaGVtZSA9IG1lcmdlKHt9LCB0aGVtZSwgcGFydGlhbFRoZW1lLCB7XG4gICAgICAgIHNlbWFudGljQ29sb3JzOiBnZXRTZW1hbnRpY0NvbG9ycyhwYXJ0aWFsVGhlbWUucGFsZXR0ZSwgcGFydGlhbFRoZW1lLmVmZmVjdHMsIHBhcnRpYWxUaGVtZS5zZW1hbnRpY0NvbG9ycywgcGFydGlhbFRoZW1lLmlzSW52ZXJ0ZWQgPT09IHVuZGVmaW5lZCA/IHRoZW1lLmlzSW52ZXJ0ZWQgOiBwYXJ0aWFsVGhlbWUuaXNJbnZlcnRlZCksXG4gICAgfSk7XG4gICAgaWYgKCgoX2EgPSBwYXJ0aWFsVGhlbWUucGFsZXR0ZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRoZW1lUHJpbWFyeSkgJiYgISgoX2IgPSBwYXJ0aWFsVGhlbWUucGFsZXR0ZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmFjY2VudCkpIHtcbiAgICAgICAgbWVyZ2VkVGhlbWUucGFsZXR0ZS5hY2NlbnQgPSBwYXJ0aWFsVGhlbWUucGFsZXR0ZS50aGVtZVByaW1hcnk7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsVGhlbWUuZGVmYXVsdEZvbnRTdHlsZSkge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9kID0gT2JqZWN0LmtleXMobWVyZ2VkVGhlbWUuZm9udHMpOyBfaSA8IF9kLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGZvbnRTdHlsZSA9IF9kW19pXTtcbiAgICAgICAgICAgIG1lcmdlZFRoZW1lLmZvbnRzW2ZvbnRTdHlsZV0gPSBtZXJnZShtZXJnZWRUaGVtZS5mb250c1tmb250U3R5bGVdLCBwYXJ0aWFsVGhlbWUuZGVmYXVsdEZvbnRTdHlsZSwgKF9jID0gcGFydGlhbFRoZW1lID09PSBudWxsIHx8IHBhcnRpYWxUaGVtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydGlhbFRoZW1lLmZvbnRzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbZm9udFN0eWxlXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VUaGVtZXMuanMubWFwIiwiLy8gV2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBjb2xvciwgbWFrZSBzdXJlIHlvdSBrZWVwIHRoaXMgY29uc2lzdGVudCB3aXRoIElDb2xvckNsYXNzTmFtZXNcbi8vIGJ5IGFkZGluZyB0aGUgY29sb3IgdmFyaWFudHMuXG5leHBvcnQgdmFyIERlZmF1bHRQYWxldHRlID0ge1xuICAgIHRoZW1lRGFya2VyOiAnIzAwNDU3OCcsXG4gICAgdGhlbWVEYXJrOiAnIzAwNWE5ZScsXG4gICAgdGhlbWVEYXJrQWx0OiAnIzEwNmViZScsXG4gICAgdGhlbWVQcmltYXJ5OiAnIzAwNzhkNCcsXG4gICAgdGhlbWVTZWNvbmRhcnk6ICcjMmI4OGQ4JyxcbiAgICB0aGVtZVRlcnRpYXJ5OiAnIzcxYWZlNScsXG4gICAgdGhlbWVMaWdodDogJyNjN2UwZjQnLFxuICAgIHRoZW1lTGlnaHRlcjogJyNkZWVjZjknLFxuICAgIHRoZW1lTGlnaHRlckFsdDogJyNlZmY2ZmMnLFxuICAgIGJsYWNrOiAnIzAwMDAwMCcsXG4gICAgYmxhY2tUcmFuc2x1Y2VudDQwOiAncmdiYSgwLDAsMCwuNCknLFxuICAgIG5ldXRyYWxEYXJrOiAnIzIwMWYxZScsXG4gICAgbmV1dHJhbFByaW1hcnk6ICcjMzIzMTMwJyxcbiAgICBuZXV0cmFsUHJpbWFyeUFsdDogJyMzYjNhMzknLFxuICAgIG5ldXRyYWxTZWNvbmRhcnk6ICcjNjA1ZTVjJyxcbiAgICBuZXV0cmFsU2Vjb25kYXJ5QWx0OiAnIzhhODg4NicsXG4gICAgbmV1dHJhbFRlcnRpYXJ5OiAnI2ExOWY5ZCcsXG4gICAgbmV1dHJhbFRlcnRpYXJ5QWx0OiAnI2M4YzZjNCcsXG4gICAgbmV1dHJhbFF1YXRlcm5hcnk6ICcjZDJkMGNlJyxcbiAgICBuZXV0cmFsUXVhdGVybmFyeUFsdDogJyNlMWRmZGQnLFxuICAgIG5ldXRyYWxMaWdodDogJyNlZGViZTknLFxuICAgIG5ldXRyYWxMaWdodGVyOiAnI2YzZjJmMScsXG4gICAgbmV1dHJhbExpZ2h0ZXJBbHQ6ICcjZmFmOWY4JyxcbiAgICBhY2NlbnQ6ICcjMDA3OGQ0JyxcbiAgICB3aGl0ZTogJyNmZmZmZmYnLFxuICAgIHdoaXRlVHJhbnNsdWNlbnQ0MDogJ3JnYmEoMjU1LDI1NSwyNTUsLjQpJyxcbiAgICB5ZWxsb3dEYXJrOiAnI2QyOTIwMCcsXG4gICAgeWVsbG93OiAnI2ZmYjkwMCcsXG4gICAgeWVsbG93TGlnaHQ6ICcjZmZmMTAwJyxcbiAgICBvcmFuZ2U6ICcjZDgzYjAxJyxcbiAgICBvcmFuZ2VMaWdodDogJyNlYTQzMDAnLFxuICAgIG9yYW5nZUxpZ2h0ZXI6ICcjZmY4YzAwJyxcbiAgICByZWREYXJrOiAnI2E0MjYyYycsXG4gICAgcmVkOiAnI2U4MTEyMycsXG4gICAgbWFnZW50YURhcms6ICcjNWMwMDVjJyxcbiAgICBtYWdlbnRhOiAnI2I0MDA5ZScsXG4gICAgbWFnZW50YUxpZ2h0OiAnI2UzMDA4YycsXG4gICAgcHVycGxlRGFyazogJyMzMjE0NWEnLFxuICAgIHB1cnBsZTogJyM1YzJkOTEnLFxuICAgIHB1cnBsZUxpZ2h0OiAnI2I0YTBmZicsXG4gICAgYmx1ZURhcms6ICcjMDAyMDUwJyxcbiAgICBibHVlTWlkOiAnIzAwMTg4ZicsXG4gICAgYmx1ZTogJyMwMDc4ZDQnLFxuICAgIGJsdWVMaWdodDogJyMwMGJjZjInLFxuICAgIHRlYWxEYXJrOiAnIzAwNGI1MCcsXG4gICAgdGVhbDogJyMwMDgyNzInLFxuICAgIHRlYWxMaWdodDogJyMwMGIyOTQnLFxuICAgIGdyZWVuRGFyazogJyMwMDRiMWMnLFxuICAgIGdyZWVuOiAnIzEwN2MxMCcsXG4gICAgZ3JlZW5MaWdodDogJyNiYWQ4MGEnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlZmF1bHRQYWxldHRlLmpzLm1hcCIsImV4cG9ydCB2YXIgRGVwdGhzO1xuKGZ1bmN0aW9uIChEZXB0aHMpIHtcbiAgICBEZXB0aHMuZGVwdGgwID0gJzAgMCAwIDAgdHJhbnNwYXJlbnQnO1xuICAgIERlcHRocy5kZXB0aDQgPSAnMCAxLjZweCAzLjZweCAwIHJnYmEoMCwgMCwgMCwgMC4xMzIpLCAwIDAuM3B4IDAuOXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEwOCknO1xuICAgIERlcHRocy5kZXB0aDggPSAnMCAzLjJweCA3LjJweCAwIHJnYmEoMCwgMCwgMCwgMC4xMzIpLCAwIDAuNnB4IDEuOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEwOCknO1xuICAgIERlcHRocy5kZXB0aDE2ID0gJzAgNi40cHggMTQuNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEzMiksIDAgMS4ycHggMy42cHggMCByZ2JhKDAsIDAsIDAsIDAuMTA4KSc7XG4gICAgRGVwdGhzLmRlcHRoNjQgPSAnMCAyNS42cHggNTcuNnB4IDAgcmdiYSgwLCAwLCAwLCAwLjIyKSwgMCA0LjhweCAxNC40cHggMCByZ2JhKDAsIDAsIDAsIDAuMTgpJztcbn0pKERlcHRocyB8fCAoRGVwdGhzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZsdWVudERlcHRocy5qcy5tYXAiLCJpbXBvcnQgeyBEZXB0aHMgfSBmcm9tICcuL0ZsdWVudERlcHRocyc7XG5leHBvcnQgdmFyIERlZmF1bHRFZmZlY3RzID0ge1xuICAgIGVsZXZhdGlvbjQ6IERlcHRocy5kZXB0aDQsXG4gICAgZWxldmF0aW9uODogRGVwdGhzLmRlcHRoOCxcbiAgICBlbGV2YXRpb24xNjogRGVwdGhzLmRlcHRoMTYsXG4gICAgZWxldmF0aW9uNjQ6IERlcHRocy5kZXB0aDY0LFxuICAgIHJvdW5kZWRDb3JuZXIyOiAnMnB4JyxcbiAgICByb3VuZGVkQ29ybmVyNDogJzRweCcsXG4gICAgcm91bmRlZENvcm5lcjY6ICc2cHgnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlZmF1bHRFZmZlY3RzLmpzLm1hcCIsImV4cG9ydCB2YXIgRGVmYXVsdFNwYWNpbmcgPSB7XG4gICAgczI6ICc0cHgnLFxuICAgIHMxOiAnOHB4JyxcbiAgICBtOiAnMTZweCcsXG4gICAgbDE6ICcyMHB4JyxcbiAgICBsMjogJzMycHgnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURlZmF1bHRTcGFjaW5nLmpzLm1hcCIsImltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gJ0BmbHVlbnR1aS9tZXJnZS1zdHlsZXMnO1xuLyogUmVnaXN0ZXIgdGhlIGtleWZyYW1lcyAqL1xudmFyIEVBU0lOR19GVU5DVElPTl8xID0gJ2N1YmljLWJlemllciguMSwuOSwuMiwxKSc7XG52YXIgRUFTSU5HX0ZVTkNUSU9OXzIgPSAnY3ViaWMtYmV6aWVyKC4xLC4yNSwuNzUsLjkpJztcbnZhciBEVVJBVElPTl8xID0gJzAuMTY3cyc7XG52YXIgRFVSQVRJT05fMiA9ICcwLjI2N3MnO1xudmFyIERVUkFUSU9OXzMgPSAnMC4zNjdzJztcbnZhciBEVVJBVElPTl80ID0gJzAuNDY3cyc7XG52YXIgRkFERV9JTiA9IGtleWZyYW1lcyh7XG4gICAgZnJvbTogeyBvcGFjaXR5OiAwIH0sXG4gICAgdG86IHsgb3BhY2l0eTogMSB9LFxufSk7XG52YXIgRkFERV9PVVQgPSBrZXlmcmFtZXMoe1xuICAgIGZyb206IHsgb3BhY2l0eTogMSB9LFxuICAgIHRvOiB7IG9wYWNpdHk6IDAsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0sXG59KTtcbnZhciBTTElERV9SSUdIVF9JTjEwID0gX2NyZWF0ZVNsaWRlSW5YKC0xMCk7XG52YXIgU0xJREVfUklHSFRfSU4yMCA9IF9jcmVhdGVTbGlkZUluWCgtMjApO1xudmFyIFNMSURFX1JJR0hUX0lONDAgPSBfY3JlYXRlU2xpZGVJblgoLTQwKTtcbnZhciBTTElERV9SSUdIVF9JTjQwMCA9IF9jcmVhdGVTbGlkZUluWCgtNDAwKTtcbnZhciBTTElERV9MRUZUX0lOMTAgPSBfY3JlYXRlU2xpZGVJblgoMTApO1xudmFyIFNMSURFX0xFRlRfSU4yMCA9IF9jcmVhdGVTbGlkZUluWCgyMCk7XG52YXIgU0xJREVfTEVGVF9JTjQwID0gX2NyZWF0ZVNsaWRlSW5YKDQwKTtcbnZhciBTTElERV9MRUZUX0lONDAwID0gX2NyZWF0ZVNsaWRlSW5YKDQwMCk7XG52YXIgU0xJREVfVVBfSU4xMCA9IF9jcmVhdGVTbGlkZUluWSgxMCk7XG52YXIgU0xJREVfVVBfSU4yMCA9IF9jcmVhdGVTbGlkZUluWSgyMCk7XG52YXIgU0xJREVfRE9XTl9JTjEwID0gX2NyZWF0ZVNsaWRlSW5ZKC0xMCk7XG52YXIgU0xJREVfRE9XTl9JTjIwID0gX2NyZWF0ZVNsaWRlSW5ZKC0yMCk7XG52YXIgU0xJREVfUklHSFRfT1VUMTAgPSBfY3JlYXRlU2xpZGVPdXRYKDEwKTtcbnZhciBTTElERV9SSUdIVF9PVVQyMCA9IF9jcmVhdGVTbGlkZU91dFgoMjApO1xudmFyIFNMSURFX1JJR0hUX09VVDQwID0gX2NyZWF0ZVNsaWRlT3V0WCg0MCk7XG52YXIgU0xJREVfUklHSFRfT1VUNDAwID0gX2NyZWF0ZVNsaWRlT3V0WCg0MDApO1xudmFyIFNMSURFX0xFRlRfT1VUMTAgPSBfY3JlYXRlU2xpZGVPdXRYKC0xMCk7XG52YXIgU0xJREVfTEVGVF9PVVQyMCA9IF9jcmVhdGVTbGlkZU91dFgoLTIwKTtcbnZhciBTTElERV9MRUZUX09VVDQwID0gX2NyZWF0ZVNsaWRlT3V0WCgtNDApO1xudmFyIFNMSURFX0xFRlRfT1VUNDAwID0gX2NyZWF0ZVNsaWRlT3V0WCgtNDAwKTtcbnZhciBTTElERV9VUF9PVVQxMCA9IF9jcmVhdGVTbGlkZU91dFkoLTEwKTtcbnZhciBTTElERV9VUF9PVVQyMCA9IF9jcmVhdGVTbGlkZU91dFkoLTIwKTtcbnZhciBTTElERV9ET1dOX09VVDEwID0gX2NyZWF0ZVNsaWRlT3V0WSgxMCk7XG52YXIgU0xJREVfRE9XTl9PVVQyMCA9IF9jcmVhdGVTbGlkZU91dFkoMjApO1xudmFyIFNDQUxFX1VQMTAwID0ga2V5ZnJhbWVzKHtcbiAgICBmcm9tOiB7IHRyYW5zZm9ybTogJ3NjYWxlM2QoLjk4LC45OCwxKScgfSxcbiAgICB0bzogeyB0cmFuc2Zvcm06ICdzY2FsZTNkKDEsMSwxKScgfSxcbn0pO1xudmFyIFNDQUxFX0RPV045OCA9IGtleWZyYW1lcyh7XG4gICAgZnJvbTogeyB0cmFuc2Zvcm06ICdzY2FsZTNkKDEsMSwxKScgfSxcbiAgICB0bzogeyB0cmFuc2Zvcm06ICdzY2FsZTNkKC45OCwuOTgsMSknIH0sXG59KTtcbnZhciBTQ0FMRV9ET1dOMTAwID0ga2V5ZnJhbWVzKHtcbiAgICBmcm9tOiB7IHRyYW5zZm9ybTogJ3NjYWxlM2QoMS4wMywxLjAzLDEpJyB9LFxuICAgIHRvOiB7IHRyYW5zZm9ybTogJ3NjYWxlM2QoMSwxLDEpJyB9LFxufSk7XG52YXIgU0NBTEVfVVAxMDMgPSBrZXlmcmFtZXMoe1xuICAgIGZyb206IHsgdHJhbnNmb3JtOiAnc2NhbGUzZCgxLDEsMSknIH0sXG4gICAgdG86IHsgdHJhbnNmb3JtOiAnc2NhbGUzZCgxLjAzLDEuMDMsMSknIH0sXG59KTtcbnZhciBST1RBVEU5MCA9IGtleWZyYW1lcyh7XG4gICAgZnJvbTogeyB0cmFuc2Zvcm06ICdyb3RhdGVaKDBkZWcpJyB9LFxuICAgIHRvOiB7IHRyYW5zZm9ybTogJ3JvdGF0ZVooOTBkZWcpJyB9LFxufSk7XG52YXIgUk9UQVRFX045MCA9IGtleWZyYW1lcyh7XG4gICAgZnJvbTogeyB0cmFuc2Zvcm06ICdyb3RhdGVaKDBkZWcpJyB9LFxuICAgIHRvOiB7IHRyYW5zZm9ybTogJ3JvdGF0ZVooLTkwZGVnKScgfSxcbn0pO1xuLyoqXG4gKiBFeHBvcnRpbmcgcmF3IGR1cmFjdGlvbiB2YWx1ZXMgYW5kIGVhc2luZyBmdW5jdGlvbnMgdG8gYmUgdXNlZCBpbiBjdXN0b20gYW5pbWF0aW9uc1xuICovXG5leHBvcnQgdmFyIEFuaW1hdGlvblZhcmlhYmxlcyA9IHtcbiAgICBlYXNlRnVuY3Rpb24xOiBFQVNJTkdfRlVOQ1RJT05fMSxcbiAgICBlYXNlRnVuY3Rpb24yOiBFQVNJTkdfRlVOQ1RJT05fMixcbiAgICBkdXJhdGlvblZhbHVlMTogRFVSQVRJT05fMSxcbiAgICBkdXJhdGlvblZhbHVlMjogRFVSQVRJT05fMixcbiAgICBkdXJhdGlvblZhbHVlMzogRFVSQVRJT05fMyxcbiAgICBkdXJhdGlvblZhbHVlNDogRFVSQVRJT05fNCxcbn07XG4vKipcbiAqIEFsbCBGYWJyaWMgc3RhbmRhcmQgYW5pbWF0aW9ucywgZXhwb3NlZCBhcyBqc29uIG9iamVjdHMgcmVmZXJlbmNpbmcgcHJlZGVmaW5lZFxuICoga2V5ZnJhbWVzLiBUaGVzZSBvYmplY3RzIGNhbiBiZSBtaXhlZCBpbiB3aXRoIG90aGVyIGNsYXNzIGRlZmluaXRpb25zLlxuICovXG5leHBvcnQgdmFyIEFuaW1hdGlvblN0eWxlcyA9IHtcbiAgICBzbGlkZVJpZ2h0SW4xMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX0lOLCBcIixcIikuY29uY2F0KFNMSURFX1JJR0hUX0lOMTApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVSaWdodEluMjA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9JTiwgXCIsXCIpLmNvbmNhdChTTElERV9SSUdIVF9JTjIwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlUmlnaHRJbjQwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfSU4sIFwiLFwiKS5jb25jYXQoU0xJREVfUklHSFRfSU40MCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZVJpZ2h0SW40MDA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9JTiwgXCIsXCIpLmNvbmNhdChTTElERV9SSUdIVF9JTjQwMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZUxlZnRJbjEwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfSU4sIFwiLFwiKS5jb25jYXQoU0xJREVfTEVGVF9JTjEwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlTGVmdEluMjA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9JTiwgXCIsXCIpLmNvbmNhdChTTElERV9MRUZUX0lOMjApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVMZWZ0SW40MDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX0lOLCBcIixcIikuY29uY2F0KFNMSURFX0xFRlRfSU40MCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZUxlZnRJbjQwMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX0lOLCBcIixcIikuY29uY2F0KFNMSURFX0xFRlRfSU40MDApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVVcEluMTA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9JTiwgXCIsXCIpLmNvbmNhdChTTElERV9VUF9JTjEwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlVXBJbjIwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfSU4sIFwiLFwiKS5jb25jYXQoU0xJREVfVVBfSU4yMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZURvd25JbjEwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfSU4sIFwiLFwiKS5jb25jYXQoU0xJREVfRE9XTl9JTjEwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlRG93bkluMjA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9JTiwgXCIsXCIpLmNvbmNhdChTTElERV9ET1dOX0lOMjApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVSaWdodE91dDEwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfT1VULCBcIixcIikuY29uY2F0KFNMSURFX1JJR0hUX09VVDEwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlUmlnaHRPdXQyMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX09VVCwgXCIsXCIpLmNvbmNhdChTTElERV9SSUdIVF9PVVQyMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZVJpZ2h0T3V0NDA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9PVVQsIFwiLFwiKS5jb25jYXQoU0xJREVfUklHSFRfT1VUNDApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVSaWdodE91dDQwMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX09VVCwgXCIsXCIpLmNvbmNhdChTTElERV9SSUdIVF9PVVQ0MDApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVMZWZ0T3V0MTA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9PVVQsIFwiLFwiKS5jb25jYXQoU0xJREVfTEVGVF9PVVQxMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZUxlZnRPdXQyMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX09VVCwgXCIsXCIpLmNvbmNhdChTTElERV9MRUZUX09VVDIwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlTGVmdE91dDQwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfT1VULCBcIixcIikuY29uY2F0KFNMSURFX0xFRlRfT1VUNDApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVMZWZ0T3V0NDAwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfT1VULCBcIixcIikuY29uY2F0KFNMSURFX0xFRlRfT1VUNDAwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNsaWRlVXBPdXQxMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX09VVCwgXCIsXCIpLmNvbmNhdChTTElERV9VUF9PVVQxMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZVVwT3V0MjA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9PVVQsIFwiLFwiKS5jb25jYXQoU0xJREVfVVBfT1VUMjApLCBEVVJBVElPTl8zLCBFQVNJTkdfRlVOQ1RJT05fMSksXG4gICAgc2xpZGVEb3duT3V0MTA6IF9jcmVhdGVBbmltYXRpb24oXCJcIi5jb25jYXQoRkFERV9PVVQsIFwiLFwiKS5jb25jYXQoU0xJREVfRE9XTl9PVVQxMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzbGlkZURvd25PdXQyMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX09VVCwgXCIsXCIpLmNvbmNhdChTTElERV9ET1dOX09VVDIwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNjYWxlVXBJbjEwMDogX2NyZWF0ZUFuaW1hdGlvbihcIlwiLmNvbmNhdChGQURFX0lOLCBcIixcIikuY29uY2F0KFNDQUxFX1VQMTAwKSwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzEpLFxuICAgIHNjYWxlRG93bkluMTAwOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfSU4sIFwiLFwiKS5jb25jYXQoU0NBTEVfRE9XTjEwMCksIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8xKSxcbiAgICBzY2FsZVVwT3V0MTAzOiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfT1VULCBcIixcIikuY29uY2F0KFNDQUxFX1VQMTAzKSwgRFVSQVRJT05fMSwgRUFTSU5HX0ZVTkNUSU9OXzIpLFxuICAgIHNjYWxlRG93bk91dDk4OiBfY3JlYXRlQW5pbWF0aW9uKFwiXCIuY29uY2F0KEZBREVfT1VULCBcIixcIikuY29uY2F0KFNDQUxFX0RPV045OCksIERVUkFUSU9OXzEsIEVBU0lOR19GVU5DVElPTl8yKSxcbiAgICBmYWRlSW4xMDA6IF9jcmVhdGVBbmltYXRpb24oRkFERV9JTiwgRFVSQVRJT05fMSwgRUFTSU5HX0ZVTkNUSU9OXzIpLFxuICAgIGZhZGVJbjIwMDogX2NyZWF0ZUFuaW1hdGlvbihGQURFX0lOLCBEVVJBVElPTl8yLCBFQVNJTkdfRlVOQ1RJT05fMiksXG4gICAgZmFkZUluNDAwOiBfY3JlYXRlQW5pbWF0aW9uKEZBREVfSU4sIERVUkFUSU9OXzMsIEVBU0lOR19GVU5DVElPTl8yKSxcbiAgICBmYWRlSW41MDA6IF9jcmVhdGVBbmltYXRpb24oRkFERV9JTiwgRFVSQVRJT05fNCwgRUFTSU5HX0ZVTkNUSU9OXzIpLFxuICAgIGZhZGVPdXQxMDA6IF9jcmVhdGVBbmltYXRpb24oRkFERV9PVVQsIERVUkFUSU9OXzEsIEVBU0lOR19GVU5DVElPTl8yKSxcbiAgICBmYWRlT3V0MjAwOiBfY3JlYXRlQW5pbWF0aW9uKEZBREVfT1VULCBEVVJBVElPTl8yLCBFQVNJTkdfRlVOQ1RJT05fMiksXG4gICAgZmFkZU91dDQwMDogX2NyZWF0ZUFuaW1hdGlvbihGQURFX09VVCwgRFVSQVRJT05fMywgRUFTSU5HX0ZVTkNUSU9OXzIpLFxuICAgIGZhZGVPdXQ1MDA6IF9jcmVhdGVBbmltYXRpb24oRkFERV9PVVQsIERVUkFUSU9OXzQsIEVBU0lOR19GVU5DVElPTl8yKSxcbiAgICByb3RhdGU5MGRlZzogX2NyZWF0ZUFuaW1hdGlvbihST1RBVEU5MCwgJzAuMXMnLCBFQVNJTkdfRlVOQ1RJT05fMiksXG4gICAgcm90YXRlTjkwZGVnOiBfY3JlYXRlQW5pbWF0aW9uKFJPVEFURV9OOTAsICcwLjFzJywgRUFTSU5HX0ZVTkNUSU9OXzIpLFxuICAgIC8vIGV4cGFuZENvbGxhcHNlIDEwMC8yMDAvNDAwLCBkZWxheSAxMDAvMjAwXG59O1xuZnVuY3Rpb24gX2NyZWF0ZUFuaW1hdGlvbihhbmltYXRpb25OYW1lLCBhbmltYXRpb25EdXJhdGlvbiwgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBhbmltYXRpb25OYW1lOiBhbmltYXRpb25OYW1lLFxuICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogYW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICAgIGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOiBhbmltYXRpb25UaW1pbmdGdW5jdGlvbixcbiAgICAgICAgYW5pbWF0aW9uRmlsbE1vZGU6ICdib3RoJyxcbiAgICB9O1xufVxuZnVuY3Rpb24gX2NyZWF0ZVNsaWRlSW5YKGZyb21YKSB7XG4gICAgcmV0dXJuIGtleWZyYW1lcyh7XG4gICAgICAgIGZyb206IHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZTNkKFwiLmNvbmNhdChmcm9tWCwgXCJweCwwLDApXCIpLCBwb2ludGVyRXZlbnRzOiAnbm9uZScgfSxcbiAgICAgICAgdG86IHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZTNkKDAsMCwwKVwiLCBwb2ludGVyRXZlbnRzOiAnYXV0bycgfSxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIF9jcmVhdGVTbGlkZUluWShmcm9tWSkge1xuICAgIHJldHVybiBrZXlmcmFtZXMoe1xuICAgICAgICBmcm9tOiB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZCgwLFwiLmNvbmNhdChmcm9tWSwgXCJweCwwKVwiKSwgcG9pbnRlckV2ZW50czogJ25vbmUnIH0sXG4gICAgICAgIHRvOiB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZCgwLDAsMClcIiwgcG9pbnRlckV2ZW50czogJ2F1dG8nIH0sXG4gICAgfSk7XG59XG5mdW5jdGlvbiBfY3JlYXRlU2xpZGVPdXRYKHRvWCkge1xuICAgIHJldHVybiBrZXlmcmFtZXMoe1xuICAgICAgICBmcm9tOiB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZCgwLDAsMClcIiB9LFxuICAgICAgICB0bzogeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlM2QoXCIuY29uY2F0KHRvWCwgXCJweCwwLDApXCIpIH0sXG4gICAgfSk7XG59XG5mdW5jdGlvbiBfY3JlYXRlU2xpZGVPdXRZKHRvWSkge1xuICAgIHJldHVybiBrZXlmcmFtZXMoe1xuICAgICAgICBmcm9tOiB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUzZCgwLDAsMClcIiB9LFxuICAgICAgICB0bzogeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlM2QoMCxcIi5jb25jYXQodG9ZLCBcInB4LDApXCIpIH0sXG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbmltYXRpb25TdHlsZXMuanMubWFwIiwiLy8gRm9udCBmYWNlIG5hbWVzIHRvIGJlIHJlZ2lzdGVyZWQuXG5leHBvcnQgdmFyIExvY2FsaXplZEZvbnROYW1lcztcbihmdW5jdGlvbiAoTG9jYWxpemVkRm9udE5hbWVzKSB7XG4gICAgTG9jYWxpemVkRm9udE5hbWVzLkFyYWJpYyA9ICdTZWdvZSBVSSBXZWIgKEFyYWJpYyknO1xuICAgIExvY2FsaXplZEZvbnROYW1lcy5DeXJpbGxpYyA9ICdTZWdvZSBVSSBXZWIgKEN5cmlsbGljKSc7XG4gICAgTG9jYWxpemVkRm9udE5hbWVzLkVhc3RFdXJvcGVhbiA9ICdTZWdvZSBVSSBXZWIgKEVhc3QgRXVyb3BlYW4pJztcbiAgICBMb2NhbGl6ZWRGb250TmFtZXMuR3JlZWsgPSAnU2Vnb2UgVUkgV2ViIChHcmVlayknO1xuICAgIExvY2FsaXplZEZvbnROYW1lcy5IZWJyZXcgPSAnU2Vnb2UgVUkgV2ViIChIZWJyZXcpJztcbiAgICBMb2NhbGl6ZWRGb250TmFtZXMuVGhhaSA9ICdMZWVsYXdhZGVlIFVJIFdlYic7XG4gICAgTG9jYWxpemVkRm9udE5hbWVzLlZpZXRuYW1lc2UgPSAnU2Vnb2UgVUkgV2ViIChWaWV0bmFtZXNlKSc7XG4gICAgTG9jYWxpemVkRm9udE5hbWVzLldlc3RFdXJvcGVhbiA9ICdTZWdvZSBVSSBXZWIgKFdlc3QgRXVyb3BlYW4pJztcbiAgICBMb2NhbGl6ZWRGb250TmFtZXMuU2VsYXdpayA9ICdTZWxhd2lrIFdlYic7XG4gICAgTG9jYWxpemVkRm9udE5hbWVzLkFybWVuaWFuID0gJ1NlZ29lIFVJIFdlYiAoQXJtZW5pYW4pJztcbiAgICBMb2NhbGl6ZWRGb250TmFtZXMuR2VvcmdpYW4gPSAnU2Vnb2UgVUkgV2ViIChHZW9yZ2lhbiknO1xufSkoTG9jYWxpemVkRm9udE5hbWVzIHx8IChMb2NhbGl6ZWRGb250TmFtZXMgPSB7fSkpO1xuLy8gRm9udCBmYW1pbGllcyB3aXRoIGZhbGxiYWNrcywgZm9yIHRoZSBnZW5lcmFsIHJlZ2lvbnMuXG5leHBvcnQgdmFyIExvY2FsaXplZEZvbnRGYW1pbGllcztcbihmdW5jdGlvbiAoTG9jYWxpemVkRm9udEZhbWlsaWVzKSB7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLkFyYWJpYyA9IFwiJ1wiLmNvbmNhdChMb2NhbGl6ZWRGb250TmFtZXMuQXJhYmljLCBcIidcIik7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLkNoaW5lc2VTaW1wbGlmaWVkID0gXCInTWljcm9zb2Z0IFlhaGVpIFVJJywgVmVyZGFuYSwgU2ltc3VuXCI7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLkNoaW5lc2VUcmFkaXRpb25hbCA9IFwiJ01pY3Jvc29mdCBKaGVuZ2hlaSBVSScsIFBtaW5nbGl1XCI7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLkN5cmlsbGljID0gXCInXCIuY29uY2F0KExvY2FsaXplZEZvbnROYW1lcy5DeXJpbGxpYywgXCInXCIpO1xuICAgIExvY2FsaXplZEZvbnRGYW1pbGllcy5FYXN0RXVyb3BlYW4gPSBcIidcIi5jb25jYXQoTG9jYWxpemVkRm9udE5hbWVzLkVhc3RFdXJvcGVhbiwgXCInXCIpO1xuICAgIExvY2FsaXplZEZvbnRGYW1pbGllcy5HcmVlayA9IFwiJ1wiLmNvbmNhdChMb2NhbGl6ZWRGb250TmFtZXMuR3JlZWssIFwiJ1wiKTtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuSGVicmV3ID0gXCInXCIuY29uY2F0KExvY2FsaXplZEZvbnROYW1lcy5IZWJyZXcsIFwiJ1wiKTtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuSGluZGkgPSBcIidOaXJtYWxhIFVJJ1wiO1xuICAgIExvY2FsaXplZEZvbnRGYW1pbGllcy5KYXBhbmVzZSA9IFwiJ1l1IEdvdGhpYyBVSScsICdNZWlyeW8gVUknLCBNZWlyeW8sICdNUyBQZ290aGljJywgT3Nha2FcIjtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuS29yZWFuID0gXCInTWFsZ3VuIEdvdGhpYycsIEd1bGltXCI7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLlNlbGF3aWsgPSBcIidcIi5jb25jYXQoTG9jYWxpemVkRm9udE5hbWVzLlNlbGF3aWssIFwiJ1wiKTtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuVGhhaSA9IFwiJ0xlZWxhd2FkZWUgVUkgV2ViJywgJ0ttZXIgVUknXCI7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLlZpZXRuYW1lc2UgPSBcIidcIi5jb25jYXQoTG9jYWxpemVkRm9udE5hbWVzLlZpZXRuYW1lc2UsIFwiJ1wiKTtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuV2VzdEV1cm9wZWFuID0gXCInXCIuY29uY2F0KExvY2FsaXplZEZvbnROYW1lcy5XZXN0RXVyb3BlYW4sIFwiJ1wiKTtcbiAgICBMb2NhbGl6ZWRGb250RmFtaWxpZXMuQXJtZW5pYW4gPSBcIidcIi5jb25jYXQoTG9jYWxpemVkRm9udE5hbWVzLkFybWVuaWFuLCBcIidcIik7XG4gICAgTG9jYWxpemVkRm9udEZhbWlsaWVzLkdlb3JnaWFuID0gXCInXCIuY29uY2F0KExvY2FsaXplZEZvbnROYW1lcy5HZW9yZ2lhbiwgXCInXCIpO1xufSkoTG9jYWxpemVkRm9udEZhbWlsaWVzIHx8IChMb2NhbGl6ZWRGb250RmFtaWxpZXMgPSB7fSkpO1xuLy8gU3RhbmRhcmQgZm9udCBzaXplcy5cbmV4cG9ydCB2YXIgRm9udFNpemVzO1xuKGZ1bmN0aW9uIChGb250U2l6ZXMpIHtcbiAgICBGb250U2l6ZXMuc2l6ZTEwID0gJzEwcHgnO1xuICAgIEZvbnRTaXplcy5zaXplMTIgPSAnMTJweCc7XG4gICAgRm9udFNpemVzLnNpemUxNCA9ICcxNHB4JztcbiAgICBGb250U2l6ZXMuc2l6ZTE2ID0gJzE2cHgnO1xuICAgIEZvbnRTaXplcy5zaXplMTggPSAnMThweCc7XG4gICAgRm9udFNpemVzLnNpemUyMCA9ICcyMHB4JztcbiAgICBGb250U2l6ZXMuc2l6ZTI0ID0gJzI0cHgnO1xuICAgIEZvbnRTaXplcy5zaXplMjggPSAnMjhweCc7XG4gICAgRm9udFNpemVzLnNpemUzMiA9ICczMnB4JztcbiAgICBGb250U2l6ZXMuc2l6ZTQyID0gJzQycHgnO1xuICAgIEZvbnRTaXplcy5zaXplNjggPSAnNjhweCc7XG4gICAgRm9udFNpemVzLm1pbmkgPSAnMTBweCc7XG4gICAgRm9udFNpemVzLnhTbWFsbCA9ICcxMHB4JztcbiAgICBGb250U2l6ZXMuc21hbGwgPSAnMTJweCc7XG4gICAgRm9udFNpemVzLnNtYWxsUGx1cyA9ICcxMnB4JztcbiAgICBGb250U2l6ZXMubWVkaXVtID0gJzE0cHgnO1xuICAgIEZvbnRTaXplcy5tZWRpdW1QbHVzID0gJzE2cHgnO1xuICAgIEZvbnRTaXplcy5pY29uID0gJzE2cHgnO1xuICAgIEZvbnRTaXplcy5sYXJnZSA9ICcxOHB4JztcbiAgICBGb250U2l6ZXMueExhcmdlID0gJzIwcHgnO1xuICAgIEZvbnRTaXplcy54TGFyZ2VQbHVzID0gJzI0cHgnO1xuICAgIEZvbnRTaXplcy54eExhcmdlID0gJzI4cHgnO1xuICAgIEZvbnRTaXplcy54eExhcmdlUGx1cyA9ICczMnB4JztcbiAgICBGb250U2l6ZXMuc3VwZXJMYXJnZSA9ICc0MnB4JztcbiAgICBGb250U2l6ZXMubWVnYSA9ICc2OHB4Jztcbn0pKEZvbnRTaXplcyB8fCAoRm9udFNpemVzID0ge30pKTtcbi8vIFN0YW5kYXJkIGZvbnQgd2VpZ2h0cy5cbmV4cG9ydCB2YXIgRm9udFdlaWdodHM7XG4oZnVuY3Rpb24gKEZvbnRXZWlnaHRzKSB7XG4gICAgRm9udFdlaWdodHMubGlnaHQgPSAxMDA7XG4gICAgRm9udFdlaWdodHMuc2VtaWxpZ2h0ID0gMzAwO1xuICAgIEZvbnRXZWlnaHRzLnJlZ3VsYXIgPSA0MDA7XG4gICAgRm9udFdlaWdodHMuc2VtaWJvbGQgPSA2MDA7XG4gICAgRm9udFdlaWdodHMuYm9sZCA9IDcwMDtcbn0pKEZvbnRXZWlnaHRzIHx8IChGb250V2VpZ2h0cyA9IHt9KSk7XG4vLyBTdGFuZGFyZCBJY29uIFNpemVzLlxuZXhwb3J0IHZhciBJY29uRm9udFNpemVzO1xuKGZ1bmN0aW9uIChJY29uRm9udFNpemVzKSB7XG4gICAgSWNvbkZvbnRTaXplcy54U21hbGwgPSAnMTBweCc7XG4gICAgSWNvbkZvbnRTaXplcy5zbWFsbCA9ICcxMnB4JztcbiAgICBJY29uRm9udFNpemVzLm1lZGl1bSA9ICcxNnB4JztcbiAgICBJY29uRm9udFNpemVzLmxhcmdlID0gJzIwcHgnO1xufSkoSWNvbkZvbnRTaXplcyB8fCAoSWNvbkZvbnRTaXplcyA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GbHVlbnRGb250cy5qcy5tYXAiLCJpbXBvcnQgeyBGb250U2l6ZXMsIEZvbnRXZWlnaHRzLCBMb2NhbGl6ZWRGb250RmFtaWxpZXMsIExvY2FsaXplZEZvbnROYW1lcyB9IGZyb20gJy4vRmx1ZW50Rm9udHMnO1xuLy8gRmFsbGJhY2sgZm9udHMsIGlmIHNwZWNpZmllZCBzeXN0ZW0gb3Igd2ViIGZvbnRzIGFyZSB1bmF2YWlsYWJsZS5cbnZhciBGb250RmFtaWx5RmFsbGJhY2tzID0gXCInU2Vnb2UgVUknLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdSb2JvdG8nLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmXCI7XG4vLyBCeSBkZWZhdWx0LCB3ZSBmYXZvciBzeXN0ZW0gZm9udHMgZm9yIHRoZSBkZWZhdWx0LlxuLy8gQWxsIGxvY2FsaXplZCBmb250cyB1c2UgYSB3ZWIgZm9udCBhbmQgbmV2ZXIgdXNlIHRoZSBzeXN0ZW0gZm9udC5cbnZhciBkZWZhdWx0Rm9udEZhbWlseSA9IFwiJ1NlZ29lIFVJJywgJ1wiLmNvbmNhdChMb2NhbGl6ZWRGb250TmFtZXMuV2VzdEV1cm9wZWFuLCBcIidcIik7XG4vLyBNYXBwaW5nIG9mIGxhbmd1YWdlIHByZWZpeCB0byB0byBmb250IGZhbWlseS5cbnZhciBMYW5ndWFnZVRvRm9udE1hcCA9IHtcbiAgICBhcjogTG9jYWxpemVkRm9udEZhbWlsaWVzLkFyYWJpYyxcbiAgICBiZzogTG9jYWxpemVkRm9udEZhbWlsaWVzLkN5cmlsbGljLFxuICAgIGNzOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIGVsOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuR3JlZWssXG4gICAgZXQ6IExvY2FsaXplZEZvbnRGYW1pbGllcy5FYXN0RXVyb3BlYW4sXG4gICAgaGU6IExvY2FsaXplZEZvbnRGYW1pbGllcy5IZWJyZXcsXG4gICAgaGk6IExvY2FsaXplZEZvbnRGYW1pbGllcy5IaW5kaSxcbiAgICBocjogTG9jYWxpemVkRm9udEZhbWlsaWVzLkVhc3RFdXJvcGVhbixcbiAgICBodTogTG9jYWxpemVkRm9udEZhbWlsaWVzLkVhc3RFdXJvcGVhbixcbiAgICBqYTogTG9jYWxpemVkRm9udEZhbWlsaWVzLkphcGFuZXNlLFxuICAgIGtrOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIGtvOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuS29yZWFuLFxuICAgIGx0OiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIGx2OiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIHBsOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIHJ1OiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuQ3lyaWxsaWMsXG4gICAgc2s6IExvY2FsaXplZEZvbnRGYW1pbGllcy5FYXN0RXVyb3BlYW4sXG4gICAgJ3NyLWxhdG4nOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuRWFzdEV1cm9wZWFuLFxuICAgIHRoOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuVGhhaSxcbiAgICB0cjogTG9jYWxpemVkRm9udEZhbWlsaWVzLkVhc3RFdXJvcGVhbixcbiAgICB1azogTG9jYWxpemVkRm9udEZhbWlsaWVzLkN5cmlsbGljLFxuICAgIHZpOiBMb2NhbGl6ZWRGb250RmFtaWxpZXMuVmlldG5hbWVzZSxcbiAgICAnemgtaGFucyc6IExvY2FsaXplZEZvbnRGYW1pbGllcy5DaGluZXNlU2ltcGxpZmllZCxcbiAgICAnemgtaGFudCc6IExvY2FsaXplZEZvbnRGYW1pbGllcy5DaGluZXNlVHJhZGl0aW9uYWwsXG4gICAgaHk6IExvY2FsaXplZEZvbnRGYW1pbGllcy5Bcm1lbmlhbixcbiAgICBrYTogTG9jYWxpemVkRm9udEZhbWlsaWVzLkdlb3JnaWFuLFxufTtcbmZ1bmN0aW9uIF9mb250RmFtaWx5V2l0aEZhbGxiYWNrcyhmb250RmFtaWx5KSB7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KGZvbnRGYW1pbHksIFwiLCBcIikuY29uY2F0KEZvbnRGYW1pbHlGYWxsYmFja3MpO1xufVxuLyoqXG4gKiBJZiB0aGVyZSBpcyBhIGxvY2FsaXplZCBmb250IGZvciB0aGlzIGxhbmd1YWdlLCByZXR1cm4gdGhhdC5cbiAqIFJldHVybnMgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIGxvY2FsaXplZCBmb250IGZvciB0aGF0IGxhbmd1YWdlLlxuICovXG5mdW5jdGlvbiBfZ2V0TG9jYWxpemVkRm9udEZhbWlseShsYW5ndWFnZSkge1xuICAgIGZvciAodmFyIGxhbmcgaW4gTGFuZ3VhZ2VUb0ZvbnRNYXApIHtcbiAgICAgICAgaWYgKExhbmd1YWdlVG9Gb250TWFwLmhhc093blByb3BlcnR5KGxhbmcpICYmIGxhbmd1YWdlICYmIGxhbmcuaW5kZXhPZihsYW5ndWFnZSkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUb0ZvbnRNYXBbbGFuZ107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRGb250RmFtaWx5O1xufVxuZnVuY3Rpb24gX2NyZWF0ZUZvbnQoc2l6ZSwgd2VpZ2h0LCBmb250RmFtaWx5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZm9udEZhbWlseTogZm9udEZhbWlseSxcbiAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgIFdlYmtpdEZvbnRTbW9vdGhpbmc6ICdhbnRpYWxpYXNlZCcsXG4gICAgICAgIGZvbnRTaXplOiBzaXplLFxuICAgICAgICBmb250V2VpZ2h0OiB3ZWlnaHQsXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb250U3R5bGVzKGxvY2FsZUNvZGUpIHtcbiAgICB2YXIgbG9jYWxpemVkRm9udCA9IF9nZXRMb2NhbGl6ZWRGb250RmFtaWx5KGxvY2FsZUNvZGUpO1xuICAgIHZhciBmb250RmFtaWx5V2l0aEZhbGxiYWNrID0gX2ZvbnRGYW1pbHlXaXRoRmFsbGJhY2tzKGxvY2FsaXplZEZvbnQpO1xuICAgIHZhciBmb250U3R5bGVzID0ge1xuICAgICAgICB0aW55OiBfY3JlYXRlRm9udChGb250U2l6ZXMubWluaSwgRm9udFdlaWdodHMucmVndWxhciwgZm9udEZhbWlseVdpdGhGYWxsYmFjayksXG4gICAgICAgIHhTbWFsbDogX2NyZWF0ZUZvbnQoRm9udFNpemVzLnhTbWFsbCwgRm9udFdlaWdodHMucmVndWxhciwgZm9udEZhbWlseVdpdGhGYWxsYmFjayksXG4gICAgICAgIHNtYWxsOiBfY3JlYXRlRm9udChGb250U2l6ZXMuc21hbGwsIEZvbnRXZWlnaHRzLnJlZ3VsYXIsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICBzbWFsbFBsdXM6IF9jcmVhdGVGb250KEZvbnRTaXplcy5zbWFsbFBsdXMsIEZvbnRXZWlnaHRzLnJlZ3VsYXIsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICBtZWRpdW06IF9jcmVhdGVGb250KEZvbnRTaXplcy5tZWRpdW0sIEZvbnRXZWlnaHRzLnJlZ3VsYXIsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICBtZWRpdW1QbHVzOiBfY3JlYXRlRm9udChGb250U2l6ZXMubWVkaXVtUGx1cywgRm9udFdlaWdodHMucmVndWxhciwgZm9udEZhbWlseVdpdGhGYWxsYmFjayksXG4gICAgICAgIGxhcmdlOiBfY3JlYXRlRm9udChGb250U2l6ZXMubGFyZ2UsIEZvbnRXZWlnaHRzLnJlZ3VsYXIsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICB4TGFyZ2U6IF9jcmVhdGVGb250KEZvbnRTaXplcy54TGFyZ2UsIEZvbnRXZWlnaHRzLnNlbWlib2xkLCBmb250RmFtaWx5V2l0aEZhbGxiYWNrKSxcbiAgICAgICAgeExhcmdlUGx1czogX2NyZWF0ZUZvbnQoRm9udFNpemVzLnhMYXJnZVBsdXMsIEZvbnRXZWlnaHRzLnNlbWlib2xkLCBmb250RmFtaWx5V2l0aEZhbGxiYWNrKSxcbiAgICAgICAgeHhMYXJnZTogX2NyZWF0ZUZvbnQoRm9udFNpemVzLnh4TGFyZ2UsIEZvbnRXZWlnaHRzLnNlbWlib2xkLCBmb250RmFtaWx5V2l0aEZhbGxiYWNrKSxcbiAgICAgICAgeHhMYXJnZVBsdXM6IF9jcmVhdGVGb250KEZvbnRTaXplcy54eExhcmdlUGx1cywgRm9udFdlaWdodHMuc2VtaWJvbGQsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICBzdXBlckxhcmdlOiBfY3JlYXRlRm9udChGb250U2l6ZXMuc3VwZXJMYXJnZSwgRm9udFdlaWdodHMuc2VtaWJvbGQsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgICAgICBtZWdhOiBfY3JlYXRlRm9udChGb250U2l6ZXMubWVnYSwgRm9udFdlaWdodHMuc2VtaWJvbGQsIGZvbnRGYW1pbHlXaXRoRmFsbGJhY2spLFxuICAgIH07XG4gICAgcmV0dXJuIGZvbnRTdHlsZXM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVGb250U3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IGZvbnRGYWNlIH0gZnJvbSAnQGZsdWVudHVpL21lcmdlLXN0eWxlcyc7XG5pbXBvcnQgeyBGb250V2VpZ2h0cywgTG9jYWxpemVkRm9udEZhbWlsaWVzLCBMb2NhbGl6ZWRGb250TmFtZXMgfSBmcm9tICcuL0ZsdWVudEZvbnRzJztcbmltcG9ydCB7IGNyZWF0ZUZvbnRTdHlsZXMgfSBmcm9tICcuL2NyZWF0ZUZvbnRTdHlsZXMnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UsIGdldFdpbmRvdyB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuLy8gRGVmYXVsdCB1cmxzLlxudmFyIERlZmF1bHRCYXNlVXJsID0gJ2h0dHBzOi8vcmVzLTEuY2RuLm9mZmljZS5uZXQvZmlsZXMvZmFicmljLWNkbi1wcm9kXzIwMjMwODE1LjAwMi9hc3NldHMnO1xuLy8gU3RhbmRhcmQgZm9udCBzdHlsaW5nLlxuZXhwb3J0IHZhciBEZWZhdWx0Rm9udFN0eWxlcyA9IGNyZWF0ZUZvbnRTdHlsZXMoZ2V0TGFuZ3VhZ2UoKSk7XG5mdW5jdGlvbiBfcmVnaXN0ZXJGb250RmFjZShmb250RmFtaWx5LCB1cmwsIGZvbnRXZWlnaHQsIGxvY2FsRm9udE5hbWUpIHtcbiAgICBmb250RmFtaWx5ID0gXCInXCIuY29uY2F0KGZvbnRGYW1pbHksIFwiJ1wiKTtcbiAgICB2YXIgbG9jYWxGb250U3JjID0gbG9jYWxGb250TmFtZSAhPT0gdW5kZWZpbmVkID8gXCJsb2NhbCgnXCIuY29uY2F0KGxvY2FsRm9udE5hbWUsIFwiJyksXCIpIDogJyc7XG4gICAgZm9udEZhY2Uoe1xuICAgICAgICBmb250RmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgICBzcmM6IGxvY2FsRm9udFNyYyArIFwidXJsKCdcIi5jb25jYXQodXJsLCBcIi53b2ZmMicpIGZvcm1hdCgnd29mZjInKSxcIikgKyBcInVybCgnXCIuY29uY2F0KHVybCwgXCIud29mZicpIGZvcm1hdCgnd29mZicpXCIpLFxuICAgICAgICBmb250V2VpZ2h0OiBmb250V2VpZ2h0LFxuICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICBmb250RGlzcGxheTogJ3N3YXAnLFxuICAgIH0pO1xufVxuZnVuY3Rpb24gX3JlZ2lzdGVyRm9udEZhY2VTZXQoYmFzZVVybCwgZm9udEZhbWlseSwgY2RuRm9sZGVyLCBjZG5Gb250TmFtZSwgbG9jYWxGb250TmFtZSkge1xuICAgIGlmIChjZG5Gb250TmFtZSA9PT0gdm9pZCAwKSB7IGNkbkZvbnROYW1lID0gJ3NlZ29ldWknOyB9XG4gICAgdmFyIHVybEJhc2UgPSBcIlwiLmNvbmNhdChiYXNlVXJsLCBcIi9cIikuY29uY2F0KGNkbkZvbGRlciwgXCIvXCIpLmNvbmNhdChjZG5Gb250TmFtZSk7XG4gICAgX3JlZ2lzdGVyRm9udEZhY2UoZm9udEZhbWlseSwgdXJsQmFzZSArICctbGlnaHQnLCBGb250V2VpZ2h0cy5saWdodCwgbG9jYWxGb250TmFtZSAmJiBsb2NhbEZvbnROYW1lICsgJyBMaWdodCcpO1xuICAgIF9yZWdpc3RlckZvbnRGYWNlKGZvbnRGYW1pbHksIHVybEJhc2UgKyAnLXNlbWlsaWdodCcsIEZvbnRXZWlnaHRzLnNlbWlsaWdodCwgbG9jYWxGb250TmFtZSAmJiBsb2NhbEZvbnROYW1lICsgJyBTZW1pTGlnaHQnKTtcbiAgICBfcmVnaXN0ZXJGb250RmFjZShmb250RmFtaWx5LCB1cmxCYXNlICsgJy1yZWd1bGFyJywgRm9udFdlaWdodHMucmVndWxhciwgbG9jYWxGb250TmFtZSk7XG4gICAgX3JlZ2lzdGVyRm9udEZhY2UoZm9udEZhbWlseSwgdXJsQmFzZSArICctc2VtaWJvbGQnLCBGb250V2VpZ2h0cy5zZW1pYm9sZCwgbG9jYWxGb250TmFtZSAmJiBsb2NhbEZvbnROYW1lICsgJyBTZW1pQm9sZCcpO1xuICAgIF9yZWdpc3RlckZvbnRGYWNlKGZvbnRGYW1pbHksIHVybEJhc2UgKyAnLWJvbGQnLCBGb250V2VpZ2h0cy5ib2xkLCBsb2NhbEZvbnROYW1lICYmIGxvY2FsRm9udE5hbWUgKyAnIEJvbGQnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRGb250RmFjZXMoYmFzZVVybCkge1xuICAgIGlmIChiYXNlVXJsKSB7XG4gICAgICAgIHZhciBmb250VXJsID0gXCJcIi5jb25jYXQoYmFzZVVybCwgXCIvZm9udHNcIik7XG4gICAgICAgIC8vIFByb2R1Y2UgQGZvbnQtZmFjZSBkZWZpbml0aW9ucyBmb3IgYWxsIHN1cHBvcnRlZCB3ZWIgZm9udHMuXG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlU2V0KGZvbnRVcmwsIExvY2FsaXplZEZvbnROYW1lcy5UaGFpLCAnbGVlbGF3YWRlZXVpLXRoYWknLCAnbGVlbGF3YWRlZXVpJyk7XG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlU2V0KGZvbnRVcmwsIExvY2FsaXplZEZvbnROYW1lcy5BcmFiaWMsICdzZWdvZXVpLWFyYWJpYycpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250TmFtZXMuQ3lyaWxsaWMsICdzZWdvZXVpLWN5cmlsbGljJyk7XG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlU2V0KGZvbnRVcmwsIExvY2FsaXplZEZvbnROYW1lcy5FYXN0RXVyb3BlYW4sICdzZWdvZXVpLWVhc3RldXJvcGVhbicpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250TmFtZXMuR3JlZWssICdzZWdvZXVpLWdyZWVrJyk7XG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlU2V0KGZvbnRVcmwsIExvY2FsaXplZEZvbnROYW1lcy5IZWJyZXcsICdzZWdvZXVpLWhlYnJldycpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250TmFtZXMuVmlldG5hbWVzZSwgJ3NlZ29ldWktdmlldG5hbWVzZScpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250TmFtZXMuV2VzdEV1cm9wZWFuLCAnc2Vnb2V1aS13ZXN0ZXVyb3BlYW4nLCAnc2Vnb2V1aScsICdTZWdvZSBVSScpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250RmFtaWxpZXMuU2VsYXdpaywgJ3NlbGF3aWsnLCAnc2VsYXdpaycpO1xuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZVNldChmb250VXJsLCBMb2NhbGl6ZWRGb250TmFtZXMuQXJtZW5pYW4sICdzZWdvZXVpLWFybWVuaWFuJyk7XG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlU2V0KGZvbnRVcmwsIExvY2FsaXplZEZvbnROYW1lcy5HZW9yZ2lhbiwgJ3NlZ29ldWktZ2VvcmdpYW4nKTtcbiAgICAgICAgLy8gTGVlbGF3YWRlZSBVSSAoVGhhaSkgZG9lcyBub3QgaGF2ZSBhICdsaWdodCcgd2VpZ2h0LCBzbyB3ZSBvdmVycmlkZVxuICAgICAgICAvLyB0aGUgZm9udC1mYWNlIGdlbmVyYXRlZCBhYm92ZSB0byB1c2UgdGhlICdzZW1pbGlnaHQnIHdlaWdodCBpbnN0ZWFkLlxuICAgICAgICBfcmVnaXN0ZXJGb250RmFjZSgnTGVlbGF3YWRlZSBVSSBXZWInLCBcIlwiLmNvbmNhdChmb250VXJsLCBcIi9sZWVsYXdhZGVldWktdGhhaS9sZWVsYXdhZGVldWktc2VtaWxpZ2h0XCIpLCBGb250V2VpZ2h0cy5saWdodCk7XG4gICAgICAgIC8vIExlZWxhd2FkZWUgVUkgKFRoYWkpIGRvZXMgbm90IGhhdmUgYSAnc2VtaWJvbGQnIHdlaWdodCwgc28gd2Ugb3ZlcnJpZGVcbiAgICAgICAgLy8gdGhlIGZvbnQtZmFjZSBnZW5lcmF0ZWQgYWJvdmUgdG8gdXNlIHRoZSAnYm9sZCcgd2VpZ2h0IGluc3RlYWQuXG4gICAgICAgIF9yZWdpc3RlckZvbnRGYWNlKCdMZWVsYXdhZGVlIFVJIFdlYicsIFwiXCIuY29uY2F0KGZvbnRVcmwsIFwiL2xlZWxhd2FkZWV1aS10aGFpL2xlZWxhd2FkZWV1aS1ib2xkXCIpLCBGb250V2VpZ2h0cy5zZW1pYm9sZCk7XG4gICAgfVxufVxuLyoqXG4gKiBSZWFkcyB0aGUgZm9udEJhc2VVcmwgZnJvbSB3aW5kb3cuRmFicmljQ29uZmlnLmZvbnRCYXNlVXJsIG9yIGZhbGxzIGJhY2sgdG8gYSBkZWZhdWx0LlxuICovXG5mdW5jdGlvbiBfZ2V0Rm9udEJhc2VVcmwoKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhciBmYWJyaWNDb25maWcgPSAoX2EgPSBnZXRXaW5kb3coKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLkZhYnJpY0NvbmZpZztcbiAgICByZXR1cm4gKF9iID0gZmFicmljQ29uZmlnID09PSBudWxsIHx8IGZhYnJpY0NvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmFicmljQ29uZmlnLmZvbnRCYXNlVXJsKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBEZWZhdWx0QmFzZVVybDtcbn1cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGZvbnQgZmFjZXMuXG4gKi9cbnJlZ2lzdGVyRGVmYXVsdEZvbnRGYWNlcyhfZ2V0Rm9udEJhc2VVcmwoKSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWZhdWx0Rm9udFN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgeyBEZWZhdWx0UGFsZXR0ZSB9IGZyb20gJy4vY29sb3JzL2luZGV4JztcbmltcG9ydCB7IERlZmF1bHRFZmZlY3RzIH0gZnJvbSAnLi9lZmZlY3RzL2luZGV4JztcbmltcG9ydCB7IERlZmF1bHRGb250U3R5bGVzIH0gZnJvbSAnLi9mb250cy9pbmRleCc7XG5pbXBvcnQgeyBtZXJnZVRoZW1lcyB9IGZyb20gJy4vbWVyZ2VUaGVtZXMnO1xuaW1wb3J0IHsgRGVmYXVsdFNwYWNpbmcgfSBmcm9tICcuL3NwYWNpbmcvaW5kZXgnO1xuaW1wb3J0IHsgbWFrZVNlbWFudGljQ29sb3JzIH0gZnJvbSAnLi91dGlsaXRpZXMvbWFrZVNlbWFudGljQ29sb3JzJztcbi8qKlxuICogQ3JlYXRlcyBhIGN1c3RvbSB0aGVtZSBkZWZpbml0aW9uLlxuICogQHBhcmFtIHRoZW1lIC0gUGFydGlhbCB0aGVtZSBvYmplY3QuXG4gKiBAcGFyYW0gZGVwQ29tbWVudHMgLSBXaGV0aGVyIHRvIGluY2x1ZGUgZGVwcmVjYXRlZCB0YWdzIGFzIGNvbW1lbnRzIGZvciBkZXByZWNhdGVkIHNsb3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGhlbWUodGhlbWUsIGRlcENvbW1lbnRzKSB7XG4gICAgaWYgKHRoZW1lID09PSB2b2lkIDApIHsgdGhlbWUgPSB7fTsgfVxuICAgIGlmIChkZXBDb21tZW50cyA9PT0gdm9pZCAwKSB7IGRlcENvbW1lbnRzID0gZmFsc2U7IH1cbiAgICB2YXIgaXNJbnZlcnRlZCA9ICEhdGhlbWUuaXNJbnZlcnRlZDtcbiAgICB2YXIgYmFzZVRoZW1lID0ge1xuICAgICAgICBwYWxldHRlOiBEZWZhdWx0UGFsZXR0ZSxcbiAgICAgICAgZWZmZWN0czogRGVmYXVsdEVmZmVjdHMsXG4gICAgICAgIGZvbnRzOiBEZWZhdWx0Rm9udFN0eWxlcyxcbiAgICAgICAgc3BhY2luZzogRGVmYXVsdFNwYWNpbmcsXG4gICAgICAgIGlzSW52ZXJ0ZWQ6IGlzSW52ZXJ0ZWQsXG4gICAgICAgIGRpc2FibGVHbG9iYWxDbGFzc05hbWVzOiBmYWxzZSxcbiAgICAgICAgc2VtYW50aWNDb2xvcnM6IG1ha2VTZW1hbnRpY0NvbG9ycyhEZWZhdWx0UGFsZXR0ZSwgRGVmYXVsdEVmZmVjdHMsIHVuZGVmaW5lZCwgaXNJbnZlcnRlZCwgZGVwQ29tbWVudHMpLFxuICAgICAgICBydGw6IHVuZGVmaW5lZCxcbiAgICB9O1xuICAgIHJldHVybiBtZXJnZVRoZW1lcyhiYXNlVGhlbWUsIHRoZW1lKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZVRoZW1lLmpzLm1hcCIsImV4cG9ydCB2YXIgSGlnaENvbnRyYXN0U2VsZWN0b3IgPSAnQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpLCBzY3JlZW4gYW5kIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpJztcbmV4cG9ydCB2YXIgSGlnaENvbnRyYXN0U2VsZWN0b3JXaGl0ZSA9IFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBmbHVlbnR1aS9tYXgtbGVuXG4nQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBibGFjay1vbi13aGl0ZSksIHNjcmVlbiBhbmQgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkgYW5kIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpJztcbmV4cG9ydCB2YXIgSGlnaENvbnRyYXN0U2VsZWN0b3JCbGFjayA9IFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBmbHVlbnR1aS9tYXgtbGVuXG4nQG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiB3aGl0ZS1vbi1ibGFjayksIHNjcmVlbiBhbmQgKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSkgYW5kIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknO1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYEhpZ2hDb250cmFzdFNlbGVjdG9yYFxuICovXG5leHBvcnQgdmFyIEVkZ2VDaHJvbWl1bUhpZ2hDb250cmFzdFNlbGVjdG9yID0gJ0BtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwgc2NyZWVuIGFuZCAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSc7XG5leHBvcnQgdmFyIFNjcmVlbldpZHRoTWluU21hbGwgPSAzMjA7XG5leHBvcnQgdmFyIFNjcmVlbldpZHRoTWluTWVkaXVtID0gNDgwO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1pbkxhcmdlID0gNjQwO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1pblhMYXJnZSA9IDEwMjQ7XG5leHBvcnQgdmFyIFNjcmVlbldpZHRoTWluWFhMYXJnZSA9IDEzNjY7XG5leHBvcnQgdmFyIFNjcmVlbldpZHRoTWluWFhYTGFyZ2UgPSAxOTIwO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1heFNtYWxsID0gU2NyZWVuV2lkdGhNaW5NZWRpdW0gLSAxO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1heE1lZGl1bSA9IFNjcmVlbldpZHRoTWluTGFyZ2UgLSAxO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1heExhcmdlID0gU2NyZWVuV2lkdGhNaW5YTGFyZ2UgLSAxO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1heFhMYXJnZSA9IFNjcmVlbldpZHRoTWluWFhMYXJnZSAtIDE7XG5leHBvcnQgdmFyIFNjcmVlbldpZHRoTWF4WFhMYXJnZSA9IFNjcmVlbldpZHRoTWluWFhYTGFyZ2UgLSAxO1xuZXhwb3J0IHZhciBTY3JlZW5XaWR0aE1pblVoZk1vYmlsZSA9IDc2ODtcbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JlZW5TZWxlY3RvcihtaW4sIG1heCkge1xuICAgIHZhciBtaW5TZWxlY3RvciA9IHR5cGVvZiBtaW4gPT09ICdudW1iZXInID8gXCIgYW5kIChtaW4td2lkdGg6IFwiLmNvbmNhdChtaW4sIFwicHgpXCIpIDogJyc7XG4gICAgdmFyIG1heFNlbGVjdG9yID0gdHlwZW9mIG1heCA9PT0gJ251bWJlcicgPyBcIiBhbmQgKG1heC13aWR0aDogXCIuY29uY2F0KG1heCwgXCJweClcIikgOiAnJztcbiAgICByZXR1cm4gXCJAbWVkaWEgb25seSBzY3JlZW5cIi5jb25jYXQobWluU2VsZWN0b3IpLmNvbmNhdChtYXhTZWxlY3Rvcik7XG59XG4vKipcbiAqIFRoZSBzdHlsZSB3aGljaCB0dXJucyBvZmYgaGlnaCBjb250cmFzdCBhZGp1c3RtZW50IGluIGJyb3dzZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBmb3JjZWRDb2xvckFkanVzdDogJ25vbmUnLFxuICAgICAgICBNc0hpZ2hDb250cmFzdEFkanVzdDogJ25vbmUnLFxuICAgIH07XG59XG4vKipcbiAqIFRoZSBzdHlsZSB3aGljaCB0dXJucyBvZmYgaGlnaCBjb250cmFzdCBhZGp1c3RtZW50IGluIChvbmx5KSBFZGdlIENocm9taXVtIGJyb3dzZXIuXG4gKiAgQGRlcHJlY2F0ZWQgVXNlIGBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlYFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGdlQ2hyb21pdW1Ob0hpZ2hDb250cmFzdEFkanVzdFNlbGVjdG9yKCkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gX2EgPSB7fSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIF9hW0VkZ2VDaHJvbWl1bUhpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgIGZvcmNlZENvbG9yQWRqdXN0OiAnbm9uZScsXG4gICAgICAgICAgICBNc0hpZ2hDb250cmFzdEFkanVzdDogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgICBfYTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbW1vblN0eWxlcy5qcy5tYXAiLCJleHBvcnQgdmFyIFpJbmRleGVzO1xuKGZ1bmN0aW9uIChaSW5kZXhlcykge1xuICAgIFpJbmRleGVzLk5hdiA9IDE7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgRG8gbm90IHVzZVxuICAgICAqL1xuICAgIFpJbmRleGVzLlNjcm9sbGFibGVQYW5lID0gMTtcbiAgICBaSW5kZXhlcy5Gb2N1c1N0eWxlID0gMTtcbiAgICBaSW5kZXhlcy5Db2FjaG1hcmsgPSAxMDAwO1xuICAgIFpJbmRleGVzLkxheWVyID0gMTAwMDAwMDtcbiAgICBaSW5kZXhlcy5LZXl0aXBMYXllciA9IDEwMDAwMDE7XG59KShaSW5kZXhlcyB8fCAoWkluZGV4ZXMgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ekluZGV4ZXMuanMubWFwIiwiaW1wb3J0IHsgSGlnaENvbnRyYXN0U2VsZWN0b3IgfSBmcm9tICcuL0NvbW1vblN0eWxlcyc7XG5pbXBvcnQgeyBJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgWkluZGV4ZXMgfSBmcm9tICcuL3pJbmRleGVzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2N1c1N0eWxlKHRoZW1lLCBpbnNldE9yT3B0aW9ucywgcG9zaXRpb24sIGhpZ2hDb250cmFzdFN0eWxlLCBib3JkZXJDb2xvciwgb3V0bGluZUNvbG9yLCBpc0ZvY3VzZWRPbmx5LCBib3JkZXJSYWRpdXMpIHtcbiAgICBpZiAodHlwZW9mIGluc2V0T3JPcHRpb25zID09PSAnbnVtYmVyJyB8fCAhaW5zZXRPck9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRGb2N1c1N0eWxlSW50ZXJuYWwodGhlbWUsIHtcbiAgICAgICAgICAgIGluc2V0OiBpbnNldE9yT3B0aW9ucyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgICAgIGhpZ2hDb250cmFzdFN0eWxlOiBoaWdoQ29udHJhc3RTdHlsZSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBib3JkZXJDb2xvcixcbiAgICAgICAgICAgIG91dGxpbmVDb2xvcjogb3V0bGluZUNvbG9yLFxuICAgICAgICAgICAgaXNGb2N1c2VkT25seTogaXNGb2N1c2VkT25seSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBfZ2V0Rm9jdXNTdHlsZUludGVybmFsKHRoZW1lLCBpbnNldE9yT3B0aW9ucyk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2dldEZvY3VzU3R5bGVJbnRlcm5hbCh0aGVtZSwgb3B0aW9ucykge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgYm9yZGVyUmFkaXVzID0gb3B0aW9ucy5ib3JkZXJSYWRpdXMsIF9jID0gb3B0aW9ucy5pbnNldCwgaW5zZXQgPSBfYyA9PT0gdm9pZCAwID8gMCA6IF9jLCBfZCA9IG9wdGlvbnMud2lkdGgsIHdpZHRoID0gX2QgPT09IHZvaWQgMCA/IDEgOiBfZCwgX2UgPSBvcHRpb25zLnBvc2l0aW9uLCBwb3NpdGlvbiA9IF9lID09PSB2b2lkIDAgPyAncmVsYXRpdmUnIDogX2UsIGhpZ2hDb250cmFzdFN0eWxlID0gb3B0aW9ucy5oaWdoQ29udHJhc3RTdHlsZSwgX2YgPSBvcHRpb25zLmJvcmRlckNvbG9yLCBib3JkZXJDb2xvciA9IF9mID09PSB2b2lkIDAgPyB0aGVtZS5wYWxldHRlLndoaXRlIDogX2YsIF9nID0gb3B0aW9ucy5vdXRsaW5lQ29sb3IsIG91dGxpbmVDb2xvciA9IF9nID09PSB2b2lkIDAgPyB0aGVtZS5wYWxldHRlLm5ldXRyYWxTZWNvbmRhcnkgOiBfZywgX2ggPSBvcHRpb25zLmlzRm9jdXNlZE9ubHksIGlzRm9jdXNlZE9ubHkgPSBfaCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9oLCBwb2ludGVyRXZlbnRzID0gb3B0aW9ucy5wb2ludGVyRXZlbnRzO1xuICAgIHJldHVybiB7XG4gICAgICAgIC8vIENsZWFyIGJyb3dzZXItc3BlY2lmaWMgZm9jdXMgc3R5bGVzIGFuZCB1c2UgJ3RyYW5zcGFyZW50JyBhcyBwbGFjZWhvbGRlciBmb3IgZm9jdXMgc3R5bGUuXG4gICAgICAgIG91dGxpbmU6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIC8vIFJlcXVpcmVtZW50IGJlY2F1c2UgcHNldWRvLWVsZW1lbnQgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkLlxuICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIHNlbGVjdG9yczogKF9hID0ge1xuICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmb2N1cyBib3JkZXIgaW4gRmlyZWZveC5cbiAgICAgICAgICAgICAgICAvLyBSZWZlcmVuY2U6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5OTMxOS8xNDM2NjcxXG4gICAgICAgICAgICAgICAgJzo6LW1vei1mb2N1cy1pbm5lcic6IHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMCcsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgdGhhdCB1c2VzIHRoaXMgbWl4aW4gaXMgaW4gYSA6Zm9jdXMgc3RhdGUsIGFkZCBhIHBzZXVkby1lbGVtZW50IHRvXG4gICAgICAgICAgICAvLyBjcmVhdGUgYSBib3JkZXIuXG4gICAgICAgICAgICBfYVtcIi5cIi5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiICZcIikuY29uY2F0KGlzRm9jdXNlZE9ubHkgPyAnOmZvY3VzJyA6ICcnLCBcIjphZnRlclwiKV0gPSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IHBvaW50ZXJFdmVudHMsXG4gICAgICAgICAgICAgICAgbGVmdDogaW5zZXQgKyAxLFxuICAgICAgICAgICAgICAgIHRvcDogaW5zZXQgKyAxLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogaW5zZXQgKyAxLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBpbnNldCArIDEsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCJweCBzb2xpZCBcIikuY29uY2F0KGJvcmRlckNvbG9yKSxcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCJweCBzb2xpZCBcIikuY29uY2F0KG91dGxpbmVDb2xvciksXG4gICAgICAgICAgICAgICAgekluZGV4OiBaSW5kZXhlcy5Gb2N1c1N0eWxlLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogYm9yZGVyUmFkaXVzLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9iID0ge30sXG4gICAgICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IGhpZ2hDb250cmFzdFN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2EpLFxuICAgIH07XG59XG4vKipcbiAqIEdlbmVyYXRlcyBzdHlsZSB0byBjbGVhciBicm93c2VyIHNwZWNpZmljIGZvY3VzIHN0eWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvY3VzQ2xlYXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAnJjo6LW1vei1mb2N1cy1pbm5lcic6IHtcbiAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZm9jdXMgYm9yZGVyIGluIEZpcmVmb3guIFJlZmVyZW5jZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTk5MzE5LzE0MzY2NzFcbiAgICAgICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJyYnOiB7XG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgYnJvd3NlciBzcGVjaWZpYyBmb2N1cyBzdHlsZXMgYW5kIHVzZSB0cmFuc3BhcmVudCBhcyBwbGFjZWhvbGRlciBmb3IgZm9jdXMgc3R5bGVcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBzdHlsZSB3aGljaCBjYW4gYmUgdXNlZCB0byBzZXQgYSBib3JkZXIgb24gZm9jdXMuXG4gKlxuICogQHBhcmFtIHRoZW1lIC0gVGhlIHRoZW1lIG9iamVjdCB0byB1c2UuXG4gKiBAcGFyYW0gaW5zZXQgLSBUaGUgbnVtYmVyIG9mIHBpeGVscyB0byBpbnNldCB0aGUgYm9yZGVyIChkZWZhdWx0IDApXG4gKiBAcGFyYW0gd2lkdGggLSBUaGUgYm9yZGVyIHdpZHRoIGluIHBpeGVscyAoZGVmYXVsdCAxKVxuICogQHBhcmFtIGNvbG9yIC0gQ29sb3Igb2YgdGhlIG91dGxpbmUgKGRlZmF1bHQgYHRoZW1lLnBhbGV0dGUubmV1dHJhbFNlY29uZGFyeWApXG4gKiBAcmV0dXJucyBUaGUgc3R5bGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNPdXRsaW5lU3R5bGUodGhlbWUsIGluc2V0LCB3aWR0aCwgY29sb3IpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGluc2V0ID09PSB2b2lkIDApIHsgaW5zZXQgPSAwOyB9XG4gICAgaWYgKHdpZHRoID09PSB2b2lkIDApIHsgd2lkdGggPSAxOyB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgIF9hW1wiOmdsb2JhbChcIi5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiKSAmOmZvY3VzXCIpXSA9IHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCIgc29saWQgXCIpLmNvbmNhdChjb2xvciB8fCB0aGVtZS5wYWxldHRlLm5ldXRyYWxTZWNvbmRhcnkpLFxuICAgICAgICAgICAgICAgIG91dGxpbmVPZmZzZXQ6IFwiXCIuY29uY2F0KC1pbnNldCwgXCJweFwiKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBfYSksXG4gICAgfTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHRleHQgaW5wdXQgYm9yZGVyIHN0eWxlcyBvbiBmb2N1cy5cbiAqXG4gKiBAcGFyYW0gYm9yZGVyQ29sb3IgLSBDb2xvciBvZiB0aGUgYm9yZGVyLlxuICogQHBhcmFtIGJvcmRlclJhZGl1cyAtIFJhZGl1cyBvZiB0aGUgYm9yZGVyLlxuICogQHBhcmFtIGJvcmRlclR5cGUgLSBUeXBlIG9mIHRoZSBib3JkZXIuXG4gKiBAcGFyYW0gYm9yZGVyUG9zaXRpb24gLSBQb3NpdGlvbiBvZiB0aGUgYm9yZGVyIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBlbGVtZW50IChkZWZhdWx0IHRvIC0xXG4gKiBhcyBpdCdzIHRoZSBtb3N0IGNvbW1vbiBib3JkZXIgd2lkdGggb2YgdGhlIGlucHV0IGVsZW1lbnQpXG4gKiBAcmV0dXJucyBUaGUgc3R5bGUgb2JqZWN0LlxuICovXG5leHBvcnQgdmFyIGdldElucHV0Rm9jdXNTdHlsZSA9IGZ1bmN0aW9uIChib3JkZXJDb2xvciwgYm9yZGVyUmFkaXVzLCBib3JkZXJUeXBlLCBib3JkZXJQb3NpdGlvbikge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGlmIChib3JkZXJUeXBlID09PSB2b2lkIDApIHsgYm9yZGVyVHlwZSA9ICdib3JkZXInOyB9XG4gICAgaWYgKGJvcmRlclBvc2l0aW9uID09PSB2b2lkIDApIHsgYm9yZGVyUG9zaXRpb24gPSAtMTsgfVxuICAgIHZhciBpc0JvcmRlckJvdHRvbSA9IGJvcmRlclR5cGUgPT09ICdib3JkZXJCb3R0b20nO1xuICAgIHJldHVybiB7XG4gICAgICAgIGJvcmRlckNvbG9yOiBib3JkZXJDb2xvcixcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAnOmFmdGVyJzogKF9hID0ge1xuICAgICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiJydcIixcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGlzQm9yZGVyQm90dG9tID8gMCA6IGJvcmRlclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB0b3A6IGJvcmRlclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICBib3R0b206IGJvcmRlclBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogaXNCb3JkZXJCb3R0b20gPyAwIDogYm9yZGVyUG9zaXRpb25cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9hW2JvcmRlclR5cGVdID0gXCIycHggc29saWQgXCIuY29uY2F0KGJvcmRlckNvbG9yKSxcbiAgICAgICAgICAgICAgICBfYS5ib3JkZXJSYWRpdXMgPSBib3JkZXJSYWRpdXMsXG4gICAgICAgICAgICAgICAgX2Eud2lkdGggPSBib3JkZXJUeXBlID09PSAnYm9yZGVyQm90dG9tJyA/ICcxMDAlJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBfYS5zZWxlY3RvcnMgPSAoX2IgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2JbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0gKF9jID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBfY1tib3JkZXJUeXBlID09PSAnYm9yZGVyJyA/ICdib3JkZXJDb2xvcicgOiAnYm9yZGVyQm90dG9tQ29sb3InXSA9ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MpLFxuICAgICAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgICAgICAgICAgX2EpLFxuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0Rm9jdXNTdHlsZS5qcy5tYXAiLCJleHBvcnQgdmFyIGhpZGRlbkNvbnRlbnRTdHlsZSA9IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB3aWR0aDogMSxcbiAgICBoZWlnaHQ6IDEsXG4gICAgbWFyZ2luOiAtMSxcbiAgICBwYWRkaW5nOiAwLFxuICAgIGJvcmRlcjogMCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGlkZGVuQ29udGVudFN0eWxlLmpzLm1hcCIsImltcG9ydCB7IFN0eWxlc2hlZXQgfSBmcm9tICdAZmx1ZW50dWkvbWVyZ2Utc3R5bGVzJztcbmltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuLyoqXG4gKiBJbnRlcm5hbCBtZW1vaXplZCBmdW5jdGlvbiB3aGljaCBzaW1wbHkgdGFrZXMgaW4gdGhlIGNsYXNzIG1hcCBhbmQgdGhlXG4gKiBkaXNhYmxlIGJvb2xlYW4uIFRoZXNlIGltbXV0YWJsZSB2YWx1ZXMgY2FuIGJlIG1lbW9pemVkLlxuICovXG52YXIgX2dldEdsb2JhbENsYXNzTmFtZXMgPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKGNsYXNzTmFtZXMsIGRpc2FibGVHbG9iYWxDbGFzc05hbWVzKSB7XG4gICAgdmFyIHN0eWxlU2hlZXQgPSBTdHlsZXNoZWV0LmdldEluc3RhbmNlKCk7XG4gICAgaWYgKGRpc2FibGVHbG9iYWxDbGFzc05hbWVzKSB7XG4gICAgICAgIC8vIGRpc2FibGUgZ2xvYmFsIGNsYXNzbmFtZXNcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNsYXNzTmFtZXMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIGFjY1tjbGFzc05hbWVdID0gc3R5bGVTaGVldC5nZXRDbGFzc05hbWUoY2xhc3NOYW1lc1tjbGFzc05hbWVdKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG4gICAgLy8gdXNlIGdsb2JhbCBjbGFzc25hbWVzXG4gICAgcmV0dXJuIGNsYXNzTmFtZXM7XG59KTtcbi8qKlxuICogQ2hlY2tzIGZvciB0aGUgYGRpc2FibGVHbG9iYWxDbGFzc05hbWVzYCBwcm9wZXJ0eSBvbiB0aGUgYHRoZW1lYCB0byBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIHJldHVybiBgY2xhc3NOYW1lc2BcbiAqIE5vdGUgdGhhdCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIGFyZSBtZW1vaXplZC5cbiAqXG4gKiBAcGFyYW0gY2xhc3NOYW1lcyAtIFRoZSBjb2xsZWN0aW9uIG9mIGdsb2JhbCBjbGFzcyBuYW1lcyB0aGF0IGFwcGx5IHdoZW4gdGhlIGZsYWcgaXMgZmFsc2UuIE1ha2Ugc3VyZSB0byBwYXNzIGluXG4gKiB0aGUgc2FtZSBpbnN0YW5jZSBvbiBlYWNoIGNhbGwgdG8gYmVuZWZpdCBmcm9tIG1lbW9pemF0aW9uLlxuICogQHBhcmFtIHRoZW1lIC0gVGhlIHRoZW1lIHRvIGNoZWNrIHRoZSBmbGFnIG9uXG4gKiBAcGFyYW0gZGlzYWJsZUdsb2JhbENsYXNzTmFtZXMgLSBPcHRpb25hbC4gRXhwbGljaXRseSBvcHQgaW4vb3V0IG9mIGRpc2FibGluZyBnbG9iYWwgY2xhc3NuYW1lcy4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iYWxDbGFzc05hbWVzKGNsYXNzTmFtZXMsIHRoZW1lLCBkaXNhYmxlR2xvYmFsQ2xhc3NOYW1lcykge1xuICAgIHJldHVybiBfZ2V0R2xvYmFsQ2xhc3NOYW1lcyhjbGFzc05hbWVzLCBkaXNhYmxlR2xvYmFsQ2xhc3NOYW1lcyAhPT0gdW5kZWZpbmVkID8gZGlzYWJsZUdsb2JhbENsYXNzTmFtZXMgOiB0aGVtZS5kaXNhYmxlR2xvYmFsQ2xhc3NOYW1lcyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1nZXRHbG9iYWxDbGFzc05hbWVzLmpzLm1hcCIsIi8vIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4vLyBTZWUgTElDRU5TRSBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbi8vIFN0b3JlIHRoZSB0aGVtaW5nIHN0YXRlIGluIF9fdGhlbWVTdGF0ZV9fIGdsb2JhbCBzY29wZSBmb3IgcmV1c2UgaW4gdGhlIGNhc2Ugb2YgZHVwbGljYXRlXG4vLyBsb2FkLXRoZW1lZC1zdHlsZXMgaG9zdGVkIG9uIHRoZSBwYWdlLlxudmFyIF9yb290ID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3c7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuLy8gTm9uY2Ugc3RyaW5nIHRvIGluamVjdCBpbnRvIHNjcmlwdCB0YWcgaWYgb25lIHByb3ZpZGVkLiBUaGlzIGlzIHVzZWQgaW4gQ1NQIChDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG52YXIgX3N0eWxlTm9uY2UgPSBfcm9vdCAmJiBfcm9vdC5DU1BTZXR0aW5ncyAmJiBfcm9vdC5DU1BTZXR0aW5ncy5ub25jZTtcbnZhciBfdGhlbWVTdGF0ZSA9IGluaXRpYWxpemVUaGVtZVN0YXRlKCk7XG4vKipcbiAqIE1hdGNoZXMgdGhlbWluZyB0b2tlbnMuIEZvciBleGFtcGxlLCBcIlt0aGVtZTogdGhlbWVTbG90TmFtZSwgZGVmYXVsdDogI0ZGRl1cIiAoaW5jbHVkaW5nIHRoZSBxdW90ZXMpLlxuICovXG52YXIgX3RoZW1lVG9rZW5SZWdleCA9IC9bXFwnXFxcIl1cXFt0aGVtZTpcXHMqKFxcdyspXFxzKig/OlxcLFxccypkZWZhdWx0OlxccyooW1xcXFxcIlxcJ10/W1xcLlxcLFxcKFxcKVxcI1xcLVxcc1xcd10qW1xcLlxcLFxcKFxcKVxcI1xcLVxcd11bXFxcIlxcJ10/KSk/XFxzKlxcXVtcXCdcXFwiXS9nO1xudmFyIG5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJyAmJiAhIXBlcmZvcm1hbmNlLm5vdyA/IHBlcmZvcm1hbmNlLm5vdygpIDogRGF0ZS5ub3coKTtcbn07XG5mdW5jdGlvbiBtZWFzdXJlKGZ1bmMpIHtcbiAgICB2YXIgc3RhcnQgPSBub3coKTtcbiAgICBmdW5jKCk7XG4gICAgdmFyIGVuZCA9IG5vdygpO1xuICAgIF90aGVtZVN0YXRlLnBlcmYuZHVyYXRpb24gKz0gZW5kIC0gc3RhcnQ7XG59XG4vKipcbiAqIGluaXRpYWxpemUgZ2xvYmFsIHN0YXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplVGhlbWVTdGF0ZSgpIHtcbiAgICB2YXIgc3RhdGUgPSBfcm9vdC5fX3RoZW1lU3RhdGVfXyB8fCB7XG4gICAgICAgIHRoZW1lOiB1bmRlZmluZWQsXG4gICAgICAgIGxhc3RTdHlsZUVsZW1lbnQ6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVnaXN0ZXJlZFN0eWxlczogW11cbiAgICB9O1xuICAgIGlmICghc3RhdGUucnVuU3RhdGUpIHtcbiAgICAgICAgc3RhdGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3RhdGUpLCB7IHBlcmY6IHtcbiAgICAgICAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMFxuICAgICAgICAgICAgfSwgcnVuU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBmbHVzaFRpbWVyOiAwLFxuICAgICAgICAgICAgICAgIG1vZGU6IDAgLyogTW9kZS5zeW5jICovLFxuICAgICAgICAgICAgICAgIGJ1ZmZlcjogW11cbiAgICAgICAgICAgIH0gfSk7XG4gICAgfVxuICAgIGlmICghc3RhdGUucmVnaXN0ZXJlZFRoZW1hYmxlU3R5bGVzKSB7XG4gICAgICAgIHN0YXRlID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHN0YXRlKSwgeyByZWdpc3RlcmVkVGhlbWFibGVTdHlsZXM6IFtdIH0pO1xuICAgIH1cbiAgICBfcm9vdC5fX3RoZW1lU3RhdGVfXyA9IHN0YXRlO1xuICAgIHJldHVybiBzdGF0ZTtcbn1cbi8qKlxuICogTG9hZHMgYSBzZXQgb2Ygc3R5bGUgdGV4dC4gSWYgaXQgaXMgcmVnaXN0ZXJlZCB0b28gZWFybHksIHdlIHdpbGwgcmVnaXN0ZXIgaXQgd2hlbiB0aGUgd2luZG93LmxvYWRcbiAqIGV2ZW50IGlzIGZpcmVkLlxuICogQHBhcmFtIHtzdHJpbmcgfCBUaGVtYWJsZUFycmF5fSBzdHlsZXMgVGhlbWFibGUgc3R5bGUgdGV4dCB0byByZWdpc3Rlci5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9hZEFzeW5jIFdoZW4gdHJ1ZSwgYWx3YXlzIGxvYWQgc3R5bGVzIGluIGFzeW5jIG1vZGUsIGlycmVzcGVjdGl2ZSBvZiBjdXJyZW50IHN5bmMgbW9kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdHlsZXMoc3R5bGVzLCBsb2FkQXN5bmMpIHtcbiAgICBpZiAobG9hZEFzeW5jID09PSB2b2lkIDApIHsgbG9hZEFzeW5jID0gZmFsc2U7IH1cbiAgICBtZWFzdXJlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHN0eWxlUGFydHMgPSBBcnJheS5pc0FycmF5KHN0eWxlcykgPyBzdHlsZXMgOiBzcGxpdFN0eWxlcyhzdHlsZXMpO1xuICAgICAgICB2YXIgX2EgPSBfdGhlbWVTdGF0ZS5ydW5TdGF0ZSwgbW9kZSA9IF9hLm1vZGUsIGJ1ZmZlciA9IF9hLmJ1ZmZlciwgZmx1c2hUaW1lciA9IF9hLmZsdXNoVGltZXI7XG4gICAgICAgIGlmIChsb2FkQXN5bmMgfHwgbW9kZSA9PT0gMSAvKiBNb2RlLmFzeW5jICovKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChzdHlsZVBhcnRzKTtcbiAgICAgICAgICAgIGlmICghZmx1c2hUaW1lcikge1xuICAgICAgICAgICAgICAgIF90aGVtZVN0YXRlLnJ1blN0YXRlLmZsdXNoVGltZXIgPSBhc3luY0xvYWRTdHlsZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5VGhlbWFibGVTdHlsZXMoc3R5bGVQYXJ0cyk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogQWxsb3dzIGZvciBjdXN0b21pemFibGUgbG9hZFN0eWxlcyBsb2dpYy4gZS5nLiBmb3Igc2VydmVyIHNpZGUgcmVuZGVyaW5nIGFwcGxpY2F0aW9uXG4gKiBAcGFyYW0geyhwcm9jZXNzZWRTdHlsZXM6IHN0cmluZywgcmF3U3R5bGVzPzogc3RyaW5nIHwgVGhlbWFibGVBcnJheSkgPT4gdm9pZH1cbiAqIGEgbG9hZFN0eWxlcyBjYWxsYmFjayB0aGF0IGdldHMgY2FsbGVkIHdoZW4gc3R5bGVzIGFyZSBsb2FkZWQgb3IgcmVsb2FkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUxvYWRTdHlsZXMobG9hZFN0eWxlc0ZuKSB7XG4gICAgX3RoZW1lU3RhdGUubG9hZFN0eWxlcyA9IGxvYWRTdHlsZXNGbjtcbn1cbi8qKlxuICogQ29uZmlndXJlIHJ1biBtb2RlIG9mIGxvYWQtdGhlbWFibGUtc3R5bGVzXG4gKiBAcGFyYW0gbW9kZSBsb2FkLXRoZW1hYmxlLXN0eWxlcyBydW4gbW9kZSwgYXN5bmMgb3Igc3luY1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlUnVuTW9kZShtb2RlKSB7XG4gICAgX3RoZW1lU3RhdGUucnVuU3RhdGUubW9kZSA9IG1vZGU7XG59XG4vKipcbiAqIGV4dGVybmFsIGNvZGUgY2FuIGNhbGwgZmx1c2ggdG8gc3luY2hyb25vdXNseSBmb3JjZSBwcm9jZXNzaW5nIG9mIGN1cnJlbnRseSBidWZmZXJlZCBzdHlsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIG1lYXN1cmUoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3R5bGVBcnJheXMgPSBfdGhlbWVTdGF0ZS5ydW5TdGF0ZS5idWZmZXIuc2xpY2UoKTtcbiAgICAgICAgX3RoZW1lU3RhdGUucnVuU3RhdGUuYnVmZmVyID0gW107XG4gICAgICAgIHZhciBtZXJnZWRTdHlsZUFycmF5ID0gW10uY29uY2F0LmFwcGx5KFtdLCBzdHlsZUFycmF5cyk7XG4gICAgICAgIGlmIChtZXJnZWRTdHlsZUFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGFwcGx5VGhlbWFibGVTdHlsZXMobWVyZ2VkU3R5bGVBcnJheSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbi8qKlxuICogcmVnaXN0ZXIgYXN5bmMgbG9hZFN0eWxlc1xuICovXG5mdW5jdGlvbiBhc3luY0xvYWRTdHlsZXMoKSB7XG4gICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhlbWVTdGF0ZS5ydW5TdGF0ZS5mbHVzaFRpbWVyID0gMDtcbiAgICAgICAgZmx1c2goKTtcbiAgICB9LCAwKTtcbn1cbi8qKlxuICogTG9hZHMgYSBzZXQgb2Ygc3R5bGUgdGV4dC4gSWYgaXQgaXMgcmVnaXN0ZXJlZCB0b28gZWFybHksIHdlIHdpbGwgcmVnaXN0ZXIgaXQgd2hlbiB0aGUgd2luZG93LmxvYWQgZXZlbnRcbiAqIGlzIGZpcmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlVGV4dCBTdHlsZSB0byByZWdpc3Rlci5cbiAqIEBwYXJhbSB7SVN0eWxlUmVjb3JkfSBzdHlsZVJlY29yZCBFeGlzdGluZyBzdHlsZSByZWNvcmQgdG8gcmUtYXBwbHkuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5VGhlbWFibGVTdHlsZXMoc3R5bGVzQXJyYXksIHN0eWxlUmVjb3JkKSB7XG4gICAgaWYgKF90aGVtZVN0YXRlLmxvYWRTdHlsZXMpIHtcbiAgICAgICAgX3RoZW1lU3RhdGUubG9hZFN0eWxlcyhyZXNvbHZlVGhlbWFibGVBcnJheShzdHlsZXNBcnJheSkuc3R5bGVTdHJpbmcsIHN0eWxlc0FycmF5KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJlZ2lzdGVyU3R5bGVzKHN0eWxlc0FycmF5KTtcbiAgICB9XG59XG4vKipcbiAqIFJlZ2lzdGVycyBhIHNldCB0aGVtZSB0b2tlbnMgdG8gZmluZCBhbmQgcmVwbGFjZS4gSWYgc3R5bGVzIHdlcmUgYWxyZWFkeSByZWdpc3RlcmVkLCB0aGV5IHdpbGwgYmVcbiAqIHJlcGxhY2VkLlxuICogQHBhcmFtIHt0aGVtZX0gdGhlbWUgSlNPTiBvYmplY3Qgb2YgdGhlbWUgdG9rZW5zIHRvIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRUaGVtZSh0aGVtZSkge1xuICAgIF90aGVtZVN0YXRlLnRoZW1lID0gdGhlbWU7XG4gICAgLy8gcmVsb2FkIHN0eWxlcy5cbiAgICByZWxvYWRTdHlsZXMoKTtcbn1cbi8qKlxuICogQ2xlYXIgYWxyZWFkeSByZWdpc3RlcmVkIHN0eWxlIGVsZW1lbnRzIGFuZCBzdHlsZSByZWNvcmRzIGluIHRoZW1lX1N0YXRlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbiAtIHNwZWNpZnkgd2hpY2ggZ3JvdXAgb2YgcmVnaXN0ZXJlZCBzdHlsZXMgc2hvdWxkIGJlIGNsZWFyZWQuXG4gKiBEZWZhdWx0IHRvIGJlIGJvdGggdGhlbWFibGUgYW5kIG5vbi10aGVtYWJsZSBzdHlsZXMgd2lsbCBiZSBjbGVhcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclN0eWxlcyhvcHRpb24pIHtcbiAgICBpZiAob3B0aW9uID09PSB2b2lkIDApIHsgb3B0aW9uID0gMyAvKiBDbGVhclN0eWxlT3B0aW9ucy5hbGwgKi87IH1cbiAgICBpZiAob3B0aW9uID09PSAzIC8qIENsZWFyU3R5bGVPcHRpb25zLmFsbCAqLyB8fCBvcHRpb24gPT09IDIgLyogQ2xlYXJTdHlsZU9wdGlvbnMub25seU5vblRoZW1hYmxlICovKSB7XG4gICAgICAgIGNsZWFyU3R5bGVzSW50ZXJuYWwoX3RoZW1lU3RhdGUucmVnaXN0ZXJlZFN0eWxlcyk7XG4gICAgICAgIF90aGVtZVN0YXRlLnJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbiA9PT0gMyAvKiBDbGVhclN0eWxlT3B0aW9ucy5hbGwgKi8gfHwgb3B0aW9uID09PSAxIC8qIENsZWFyU3R5bGVPcHRpb25zLm9ubHlUaGVtYWJsZSAqLykge1xuICAgICAgICBjbGVhclN0eWxlc0ludGVybmFsKF90aGVtZVN0YXRlLnJlZ2lzdGVyZWRUaGVtYWJsZVN0eWxlcyk7XG4gICAgICAgIF90aGVtZVN0YXRlLnJlZ2lzdGVyZWRUaGVtYWJsZVN0eWxlcyA9IFtdO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNsZWFyU3R5bGVzSW50ZXJuYWwocmVjb3Jkcykge1xuICAgIHJlY29yZHMuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGVSZWNvcmQpIHtcbiAgICAgICAgdmFyIHN0eWxlRWxlbWVudCA9IHN0eWxlUmVjb3JkICYmIHN0eWxlUmVjb3JkLnN0eWxlRWxlbWVudDtcbiAgICAgICAgaWYgKHN0eWxlRWxlbWVudCAmJiBzdHlsZUVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuLyoqXG4gKiBSZWxvYWRzIHN0eWxlcy5cbiAqL1xuZnVuY3Rpb24gcmVsb2FkU3R5bGVzKCkge1xuICAgIGlmIChfdGhlbWVTdGF0ZS50aGVtZSkge1xuICAgICAgICB2YXIgdGhlbWFibGVTdHlsZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IF90aGVtZVN0YXRlLnJlZ2lzdGVyZWRUaGVtYWJsZVN0eWxlczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBzdHlsZVJlY29yZCA9IF9hW19pXTtcbiAgICAgICAgICAgIHRoZW1hYmxlU3R5bGVzLnB1c2goc3R5bGVSZWNvcmQudGhlbWFibGVTdHlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoZW1hYmxlU3R5bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNsZWFyU3R5bGVzKDEgLyogQ2xlYXJTdHlsZU9wdGlvbnMub25seVRoZW1hYmxlICovKTtcbiAgICAgICAgICAgIGFwcGx5VGhlbWFibGVTdHlsZXMoW10uY29uY2F0LmFwcGx5KFtdLCB0aGVtYWJsZVN0eWxlcykpO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBGaW5kIHRoZW1lIHRva2VucyBhbmQgcmVwbGFjZXMgdGhlbSB3aXRoIHByb3ZpZGVkIHRoZW1lIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZXMgVG9rZW5pemVkIHN0eWxlcyB0byBmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRva2VuaXplKHN0eWxlcykge1xuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgICAgc3R5bGVzID0gcmVzb2x2ZVRoZW1hYmxlQXJyYXkoc3BsaXRTdHlsZXMoc3R5bGVzKSkuc3R5bGVTdHJpbmc7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG59XG4vKipcbiAqIFJlc29sdmVzIFRoZW1pbmdJbnN0cnVjdGlvbiBvYmplY3RzIGluIGFuIGFycmF5IGFuZCBqb2lucyB0aGUgcmVzdWx0IGludG8gYSBzdHJpbmcuXG4gKiBAcGFyYW0ge1RoZW1hYmxlQXJyYXl9IHNwbGl0U3R5bGVBcnJheSBUaGVtYWJsZUFycmF5IHRvIHJlc29sdmUgYW5kIGpvaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVUaGVtYWJsZUFycmF5KHNwbGl0U3R5bGVBcnJheSkge1xuICAgIHZhciB0aGVtZSA9IF90aGVtZVN0YXRlLnRoZW1lO1xuICAgIHZhciB0aGVtYWJsZSA9IGZhbHNlO1xuICAgIC8vIFJlc29sdmUgdGhlIGFycmF5IG9mIHRoZW1pbmcgaW5zdHJ1Y3Rpb25zIHRvIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICAgLy8gVGhlbiBqb2luIHRoZSBhcnJheSB0byBwcm9kdWNlIHRoZSBmaW5hbCBDU1Mgc3RyaW5nLlxuICAgIHZhciByZXNvbHZlZEFycmF5ID0gKHNwbGl0U3R5bGVBcnJheSB8fCBbXSkubWFwKGZ1bmN0aW9uIChjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdmFyIHRoZW1lU2xvdCA9IGN1cnJlbnRWYWx1ZS50aGVtZTtcbiAgICAgICAgaWYgKHRoZW1lU2xvdCkge1xuICAgICAgICAgICAgdGhlbWFibGUgPSB0cnVlO1xuICAgICAgICAgICAgLy8gQSB0aGVtaW5nIGFubm90YXRpb24uIFJlc29sdmUgaXQuXG4gICAgICAgICAgICB2YXIgdGhlbWVkVmFsdWUgPSB0aGVtZSA/IHRoZW1lW3RoZW1lU2xvdF0gOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gY3VycmVudFZhbHVlLmRlZmF1bHRWYWx1ZSB8fCAnaW5oZXJpdCc7XG4gICAgICAgICAgICAvLyBXYXJuIHRvIGNvbnNvbGUgaWYgd2UgaGl0IGFuIHVudGhlbWVkIHZhbHVlIGV2ZW4gd2hlbiB0aGVtZXMgYXJlIHByb3ZpZGVkLCBidXQgb25seSBpZiBcIkRFQlVHXCIgaXMgdHJ1ZS5cbiAgICAgICAgICAgIC8vIEFsbG93IHRoZSB0aGVtZWRWYWx1ZSB0byBiZSB1bmRlZmluZWQgdG8gZXhwbGljaXRseSByZXF1ZXN0IHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAgICAgICAgaWYgKHRoZW1lICYmXG4gICAgICAgICAgICAgICAgIXRoZW1lZFZhbHVlICYmXG4gICAgICAgICAgICAgICAgY29uc29sZSAmJlxuICAgICAgICAgICAgICAgICEodGhlbWVTbG90IGluIHRoZW1lKSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICBERUJVRykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZW1pbmcgdmFsdWUgbm90IHByb3ZpZGVkIGZvciBcXFwiXCIuY29uY2F0KHRoZW1lU2xvdCwgXCJcXFwiLiBGYWxsaW5nIGJhY2sgdG8gXFxcIlwiKS5jb25jYXQoZGVmYXVsdFZhbHVlLCBcIlxcXCIuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGVtZWRWYWx1ZSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBBIG5vbi10aGVtYWJsZSBzdHJpbmcuIFByZXNlcnZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZS5yYXdTdHJpbmc7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdHlsZVN0cmluZzogcmVzb2x2ZWRBcnJheS5qb2luKCcnKSxcbiAgICAgICAgdGhlbWFibGU6IHRoZW1hYmxlXG4gICAgfTtcbn1cbi8qKlxuICogU3BsaXQgdG9rZW5pemVkIENTUyBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIHRoZW1lIHNwZWNpZmljYXRpb24gb2JqZWN0c1xuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlcyBUb2tlbml6ZWQgc3R5bGVzIHRvIHNwbGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRTdHlsZXMoc3R5bGVzKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGlmIChzdHlsZXMpIHtcbiAgICAgICAgdmFyIHBvcyA9IDA7IC8vIEN1cnJlbnQgcG9zaXRpb24gaW4gc3R5bGVzLlxuICAgICAgICB2YXIgdG9rZW5NYXRjaCA9IHZvaWQgMDtcbiAgICAgICAgd2hpbGUgKCh0b2tlbk1hdGNoID0gX3RoZW1lVG9rZW5SZWdleC5leGVjKHN0eWxlcykpKSB7XG4gICAgICAgICAgICB2YXIgbWF0Y2hJbmRleCA9IHRva2VuTWF0Y2guaW5kZXg7XG4gICAgICAgICAgICBpZiAobWF0Y2hJbmRleCA+IHBvcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgcmF3U3RyaW5nOiBzdHlsZXMuc3Vic3RyaW5nKHBvcywgbWF0Y2hJbmRleClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aGVtZTogdG9rZW5NYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRva2VuTWF0Y2hbMl0gLy8gTWF5IGJlIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICAgICAgICBwb3MgPSBfdGhlbWVUb2tlblJlZ2V4Lmxhc3RJbmRleDtcbiAgICAgICAgfVxuICAgICAgICAvLyBQdXNoIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgYWZ0ZXIgdGhlIGxhc3QgbWF0Y2guXG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIHJhd1N0cmluZzogc3R5bGVzLnN1YnN0cmluZyhwb3MpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBSZWdpc3RlcnMgYSBzZXQgb2Ygc3R5bGUgdGV4dC4gSWYgaXQgaXMgcmVnaXN0ZXJlZCB0b28gZWFybHksIHdlIHdpbGwgcmVnaXN0ZXIgaXQgd2hlbiB0aGVcbiAqIHdpbmRvdy5sb2FkIGV2ZW50IGlzIGZpcmVkLlxuICogQHBhcmFtIHtUaGVtYWJsZUFycmF5fSBzdHlsZUFycmF5IEFycmF5IG9mIElUaGVtaW5nSW5zdHJ1Y3Rpb24gb2JqZWN0cyB0byByZWdpc3Rlci5cbiAqIEBwYXJhbSB7SVN0eWxlUmVjb3JkfSBzdHlsZVJlY29yZCBNYXkgc3BlY2lmeSBhIHN0eWxlIEVsZW1lbnQgdG8gdXBkYXRlLlxuICovXG5mdW5jdGlvbiByZWdpc3RlclN0eWxlcyhzdHlsZUFycmF5KSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gICAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgdmFyIF9hID0gcmVzb2x2ZVRoZW1hYmxlQXJyYXkoc3R5bGVBcnJheSksIHN0eWxlU3RyaW5nID0gX2Euc3R5bGVTdHJpbmcsIHRoZW1hYmxlID0gX2EudGhlbWFibGU7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1sb2FkLXRoZW1lZC1zdHlsZXMnLCAndHJ1ZScpO1xuICAgIGlmIChfc3R5bGVOb25jZSkge1xuICAgICAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdub25jZScsIF9zdHlsZU5vbmNlKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0eWxlU3RyaW5nKSk7XG4gICAgX3RoZW1lU3RhdGUucGVyZi5jb3VudCsrO1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICB2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO1xuICAgIGV2LmluaXRFdmVudCgnc3R5bGVpbnNlcnQnLCB0cnVlIC8qIGJ1YmJsZUV2ZW50ICovLCBmYWxzZSAvKiBjYW5jZWxhYmxlICovKTtcbiAgICBldi5hcmdzID0ge1xuICAgICAgICBuZXdTdHlsZTogc3R5bGVFbGVtZW50XG4gICAgfTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2KTtcbiAgICB2YXIgcmVjb3JkID0ge1xuICAgICAgICBzdHlsZUVsZW1lbnQ6IHN0eWxlRWxlbWVudCxcbiAgICAgICAgdGhlbWFibGVTdHlsZTogc3R5bGVBcnJheVxuICAgIH07XG4gICAgaWYgKHRoZW1hYmxlKSB7XG4gICAgICAgIF90aGVtZVN0YXRlLnJlZ2lzdGVyZWRUaGVtYWJsZVN0eWxlcy5wdXNoKHJlY29yZCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBfdGhlbWVTdGF0ZS5yZWdpc3RlcmVkU3R5bGVzLnB1c2gocmVjb3JkKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgQ3VzdG9taXphdGlvbnMsIGdldFdpbmRvdyB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgbG9hZFRoZW1lIGFzIGxlZ2FjeUxvYWRUaGVtZSB9IGZyb20gJ0BtaWNyb3NvZnQvbG9hZC10aGVtZWQtc3R5bGVzJztcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnQGZsdWVudHVpL3RoZW1lJztcbmV4cG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnQGZsdWVudHVpL3RoZW1lJztcbnZhciBfdGhlbWUgPSBjcmVhdGVUaGVtZSh7fSk7XG52YXIgX29uVGhlbWVDaGFuZ2VDYWxsYmFja3MgPSBbXTtcbmV4cG9ydCB2YXIgVGhlbWVTZXR0aW5nTmFtZSA9ICd0aGVtZSc7XG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVRoZW1lSW5DdXN0b21pemF0aW9ucygpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIF9iLCBfYztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhciB3aW4gPSBnZXRXaW5kb3coKTtcbiAgICBpZiAoKF9iID0gd2luID09PSBudWxsIHx8IHdpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2luLkZhYnJpY0NvbmZpZykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlZ2FjeVRoZW1lKSB7XG4gICAgICAgIC8vIGRvZXMgZXZlcnl0aGluZyB0aGUgYGVsc2VgIGNsYXVzZSBkb2VzIGFuZCBtb3JlLCBzdWNoIGFzIGludm9rZSBsZWdhY3kgdGhlbWluZ1xuICAgICAgICBsb2FkVGhlbWUod2luLkZhYnJpY0NvbmZpZy5sZWdhY3lUaGVtZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFDdXN0b21pemF0aW9ucy5nZXRTZXR0aW5ncyhbVGhlbWVTZXR0aW5nTmFtZV0pLnRoZW1lKSB7XG4gICAgICAgIGlmICgoX2MgPSB3aW4gPT09IG51bGwgfHwgd2luID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3aW4uRmFicmljQ29uZmlnKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudGhlbWUpIHtcbiAgICAgICAgICAgIF90aGVtZSA9IGNyZWF0ZVRoZW1lKHdpbi5GYWJyaWNDb25maWcudGhlbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNldCB0aGUgZGVmYXVsdCB0aGVtZS5cbiAgICAgICAgQ3VzdG9taXphdGlvbnMuYXBwbHlTZXR0aW5ncygoX2EgPSB7fSwgX2FbVGhlbWVTZXR0aW5nTmFtZV0gPSBfdGhlbWUsIF9hKSk7XG4gICAgfVxufVxuaW5pdGlhbGl6ZVRoZW1lSW5DdXN0b21pemF0aW9ucygpO1xuLyoqXG4gKiBHZXRzIHRoZSB0aGVtZSBvYmplY3RcbiAqIEBwYXJhbSBkZXBDb21tZW50cyAtIFdoZXRoZXIgdG8gaW5jbHVkZSBkZXByZWNhdGVkIHRhZ3MgYXMgY29tbWVudHMgZm9yIGRlcHJlY2F0ZWQgc2xvdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaGVtZShkZXBDb21tZW50cykge1xuICAgIGlmIChkZXBDb21tZW50cyA9PT0gdm9pZCAwKSB7IGRlcENvbW1lbnRzID0gZmFsc2U7IH1cbiAgICBpZiAoZGVwQ29tbWVudHMgPT09IHRydWUpIHtcbiAgICAgICAgX3RoZW1lID0gY3JlYXRlVGhlbWUoe30sIGRlcENvbW1lbnRzKTtcbiAgICB9XG4gICAgcmV0dXJuIF90aGVtZTtcbn1cbi8qKlxuICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciB0aGUgdGhlbWUgY2hhbmdlcy5cbiAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBjb21wb25lbnQgY2Fubm90IGF1dG9tYXRpY2FsbHkgZ2V0IHRoZW1lIGNoYW5nZXMgdGhyb3VnaCBpdHMgc3RhdGUuXG4gKiBUaGlzIHdpbGwgbm90IHJlZ2lzdGVyIGR1cGxpY2F0ZSBjYWxsYmFja3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck9uVGhlbWVDaGFuZ2VDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIGlmIChfb25UaGVtZUNoYW5nZUNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTEpIHtcbiAgICAgICAgX29uVGhlbWVDaGFuZ2VDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfVxufVxuLyoqXG4gKiBTZWUgcmVnaXN0ZXJPblRoZW1lQ2hhbmdlQ2FsbGJhY2soKS5cbiAqIFJlbW92ZXMgcHJldmlvdXNseSByZWdpc3RlcmVkIGNhbGxiYWNrcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU9uVGhlbWVDaGFuZ2VDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIHZhciBpID0gX29uVGhlbWVDaGFuZ2VDYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX29uVGhlbWVDaGFuZ2VDYWxsYmFja3Muc3BsaWNlKGksIDEpO1xufVxuLyoqXG4gKiBBcHBsaWVzIHRoZSB0aGVtZSwgd2hpbGUgZmlsbGluZyBpbiBtaXNzaW5nIHNsb3RzLlxuICogQHBhcmFtIHRoZW1lIC0gUGFydGlhbCB0aGVtZSBvYmplY3QuXG4gKiBAcGFyYW0gZGVwQ29tbWVudHMgLSBXaGV0aGVyIHRvIGluY2x1ZGUgZGVwcmVjYXRlZCB0YWdzIGFzIGNvbW1lbnRzIGZvciBkZXByZWNhdGVkIHNsb3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFRoZW1lKHRoZW1lLCBkZXBDb21tZW50cykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoZGVwQ29tbWVudHMgPT09IHZvaWQgMCkgeyBkZXBDb21tZW50cyA9IGZhbHNlOyB9XG4gICAgX3RoZW1lID0gY3JlYXRlVGhlbWUodGhlbWUsIGRlcENvbW1lbnRzKTtcbiAgICAvLyBJbnZva2UgdGhlIGxlZ2FjeSBtZXRob2Qgb2YgdGhlbWluZyB0aGUgcGFnZSBhcyB3ZWxsLlxuICAgIGxlZ2FjeUxvYWRUaGVtZShfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgX3RoZW1lLnBhbGV0dGUpLCBfdGhlbWUuc2VtYW50aWNDb2xvcnMpLCBfdGhlbWUuZWZmZWN0cyksIF9sb2FkRm9udHMoX3RoZW1lKSkpO1xuICAgIEN1c3RvbWl6YXRpb25zLmFwcGx5U2V0dGluZ3MoKF9hID0ge30sIF9hW1RoZW1lU2V0dGluZ05hbWVdID0gX3RoZW1lLCBfYSkpO1xuICAgIF9vblRoZW1lQ2hhbmdlQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjYWxsYmFjayhfdGhlbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBkb24ndCBsZXQgYSBiYWQgY2FsbGJhY2sgYnJlYWsgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gX3RoZW1lO1xufVxuLyoqXG4gKiBMb2FkcyBmb250IHZhcmlhYmxlcyBpbnRvIGEgSlNPTiBvYmplY3QuXG4gKiBAcGFyYW0gdGhlbWUgLSBUaGUgdGhlbWUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIF9sb2FkRm9udHModGhlbWUpIHtcbiAgICB2YXIgbGluZXMgPSB7fTtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gT2JqZWN0LmtleXModGhlbWUuZm9udHMpOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgZm9udE5hbWUgPSBfYVtfaV07XG4gICAgICAgIHZhciBmb250ID0gdGhlbWUuZm9udHNbZm9udE5hbWVdO1xuICAgICAgICBmb3IgKHZhciBfYiA9IDAsIF9jID0gT2JqZWN0LmtleXMoZm9udCk7IF9iIDwgX2MubGVuZ3RoOyBfYisrKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUgPSBfY1tfYl07XG4gICAgICAgICAgICB2YXIgbmFtZV8xID0gZm9udE5hbWUgKyBwcm9wTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3BOYW1lLnNsaWNlKDEpO1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gZm9udFtwcm9wTmFtZV07XG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09ICdmb250U2l6ZScgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgYSBudW1iZXIsIGNvbnZlcnQgaXQgdG8gcHggYnkgZGVmYXVsdCBsaWtlIG91ciB0aGVtaW5nIHN5c3RlbSBkb2VzXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArICdweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5lc1tuYW1lXzFdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhlbWUuanMubWFwIiwiLy8gVGhpcyBmaWxlIG1pbWljcyBzdHlsZXMgYW5kIG1peGlucyBmcm9tIF9HZW5lcmFsLk1peGlucy5zY3NzXG5leHBvcnQgdmFyIG5vcm1hbGl6ZSA9IHtcbiAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogMCxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94Jyxcbn07XG5leHBvcnQgdmFyIG5vV3JhcCA9IHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUdlbmVyYWxTdHlsZXMuanMubWFwIiwiLyoqXG4gKiBHZW5lcmF0ZXMgcGxhY2Vob2xkZXIgc3R5bGUgZm9yIGVhY2ggb2YgdGhlIGJyb3dzZXJzIHN1cHBvcnRlZCBieSBgQGZsdWVudHVpL3JlYWN0YC5cbiAqIEBwYXJhbSBzdHlsZXMgLSBUaGUgc3R5bGUgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIHBsYWNlaG9sZGVyIHN0eWxlIG9iamVjdCBmb3IgZWFjaCBicm93c2VyIGRlcGVuZGluZyBvbiB0aGUgcGxhY2Vob2xkZXIgZGlyZWN0aXZlIGl0IHVzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlclN0eWxlcyhzdHlsZXMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICc6OnBsYWNlaG9sZGVyJzogc3R5bGVzLFxuICAgICAgICAgICAgJzotbXMtaW5wdXQtcGxhY2Vob2xkZXInOiBzdHlsZXMsXG4gICAgICAgICAgICAnOjotbXMtaW5wdXQtcGxhY2Vob2xkZXInOiBzdHlsZXMsIC8vIEVkZ2VcbiAgICAgICAgfSxcbiAgICB9O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Z2V0UGxhY2Vob2xkZXJTdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgYnVpbGRDbGFzc01hcCB9IGZyb20gJy4uL3V0aWxpdGllcy9pbmRleCc7XG5pbXBvcnQgeyBBbmltYXRpb25TdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMvaW5kZXgnO1xuLyoqXG4gKiB7QGRvY0NhdGVnb3J5IEFuaW1hdGlvbkNsYXNzTmFtZXN9XG4gKi9cbmV4cG9ydCB2YXIgQW5pbWF0aW9uQ2xhc3NOYW1lcyA9IGJ1aWxkQ2xhc3NNYXAoQW5pbWF0aW9uU3R5bGVzKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFuaW1hdGlvbkNsYXNzTmFtZXMuanMubWFwIiwiZXhwb3J0IHZhciBGTFVFTlRfQ0ROX0JBU0VfVVJMID0gJ2h0dHBzOi8vcmVzLmNkbi5vZmZpY2UubmV0L2ZpbGVzL2ZhYnJpYy1jZG4tcHJvZF8yMDIzMDgxNS4wMDInO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2RuLmpzLm1hcCIsIi8vIERvIG5vdCBtb2RpZnkgdGhpcyBmaWxlOyBpdCBpcyBnZW5lcmF0ZWQgYXMgcGFydCBvZiBwdWJsaXNoLlxuLy8gVGhlIGNoZWNrZWQgaW4gdmVyc2lvbiBpcyBhIHBsYWNlaG9sZGVyIG9ubHkgYW5kIHdpbGwgbm90IGJlIHVwZGF0ZWQuXG5pbXBvcnQgeyBzZXRWZXJzaW9uIH0gZnJvbSAnQGZsdWVudHVpL3NldC12ZXJzaW9uJztcbnNldFZlcnNpb24oJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnLCAnOC45LjE3Jyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZXJzaW9uLmpzLm1hcCIsImV4cG9ydCAqIGZyb20gJy4vY2xhc3NOYW1lcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3N0eWxlcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdGllcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9NZXJnZVN0eWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Nkbic7XG5pbXBvcnQgJy4vdmVyc2lvbic7XG4vLyBFbnN1cmUgdGhlbWUgaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGlzIHBhY2thZ2UgaXMgcmVmZXJlbmNlZC5cbmltcG9ydCB7IGluaXRpYWxpemVUaGVtZUluQ3VzdG9taXphdGlvbnMgfSBmcm9tICcuL3N0eWxlcy90aGVtZSc7XG5pbml0aWFsaXplVGhlbWVJbkN1c3RvbWl6YXRpb25zKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJleHBvcnQgdmFyIERpcmVjdGlvbmFsSGludCA9IHtcbiAgICAvKipcbiAgICAgKiBBcHBlYXIgYWJvdmUgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSBsZWZ0IGVkZ2VzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgdG9wTGVmdEVkZ2U6IDAsXG4gICAgLyoqXG4gICAgICogQXBwZWFyIGFib3ZlIHRoZSB0YXJnZXQgZWxlbWVudCwgd2l0aCB0aGUgY2VudGVycyBvZiB0aGUgY2FsbG91dCBhbmQgdGFyZ2V0IGFsaWduaW5nLlxuICAgICAqL1xuICAgIHRvcENlbnRlcjogMSxcbiAgICAvKipcbiAgICAgKiBBcHBlYXIgYWJvdmUgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSByaWdodCBlZGdlcyBvZiB0aGUgY2FsbG91dCBhbmQgdGFyZ2V0IGFsaWduaW5nLlxuICAgICAqL1xuICAgIHRvcFJpZ2h0RWRnZTogMixcbiAgICAvKipcbiAgICAgKiBBcHBlYXIgYWJvdmUgdGhlIHRhcmdldCBlbGVtZW50LCBhbGlnbmluZyB3aXRoIHRoZSB0YXJnZXQgZWxlbWVudCBzdWNoIHRoYXQgdGhlIGNhbGxvdXQgdGVuZHMgdG93YXJkXG4gICAgICogdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuLlxuICAgICAqL1xuICAgIHRvcEF1dG9FZGdlOiAzLFxuICAgIC8qKlxuICAgICAqIEFwcGVhciBiZWxvdyB0aGUgdGFyZ2V0IGVsZW1lbnQsIHdpdGggdGhlIGxlZnQgZWRnZXMgb2YgdGhlIGNhbGxvdXQgYW5kIHRhcmdldCBhbGlnbmluZy5cbiAgICAgKi9cbiAgICBib3R0b21MZWZ0RWRnZTogNCxcbiAgICAvKipcbiAgICAgKiBBcHBlYXIgYmVsb3cgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSBjZW50ZXJzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgYm90dG9tQ2VudGVyOiA1LFxuICAgIC8qKlxuICAgICAqIEFwcGVhciBiZWxvdyB0aGUgdGFyZ2V0IGVsZW1lbnQsIHdpdGggdGhlIHJpZ2h0IGVkZ2VzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgYm90dG9tUmlnaHRFZGdlOiA2LFxuICAgIC8qKlxuICAgICAqIEFwcGVhciBiZWxvdyB0aGUgdGFyZ2V0IGVsZW1lbnQsIGFsaWduaW5nIHdpdGggdGhlIHRhcmdldCBlbGVtZW50IHN1Y2ggdGhhdCB0aGUgY2FsbG91dCB0ZW5kcyB0b3dhcmRcbiAgICAgKiB0aGUgY2VudGVyIG9mIHRoZSBzY3JlZW4uXG4gICAgICovXG4gICAgYm90dG9tQXV0b0VkZ2U6IDcsXG4gICAgLyoqXG4gICAgICogQXBwZWFyIHRvIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgd2l0aCB0aGUgdG9wIGVkZ2VzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgbGVmdFRvcEVkZ2U6IDgsXG4gICAgLyoqXG4gICAgICogQXBwZWFyIHRvIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgd2l0aCB0aGUgY2VudGVycyBvZiB0aGUgY2FsbG91dCBhbmQgdGFyZ2V0IGFsaWduaW5nLlxuICAgICAqL1xuICAgIGxlZnRDZW50ZXI6IDksXG4gICAgLyoqXG4gICAgICogQXBwZWFyIHRvIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgd2l0aCB0aGUgYm90dG9tIGVkZ2VzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgbGVmdEJvdHRvbUVkZ2U6IDEwLFxuICAgIC8qKlxuICAgICAqIEFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSB0b3AgZWRnZXMgb2YgdGhlIGNhbGxvdXQgYW5kIHRhcmdldCBhbGlnbmluZy5cbiAgICAgKi9cbiAgICByaWdodFRvcEVkZ2U6IDExLFxuICAgIC8qKlxuICAgICAqIEFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSBjZW50ZXJzIG9mIHRoZSBjYWxsb3V0IGFuZCB0YXJnZXQgYWxpZ25pbmcuXG4gICAgICovXG4gICAgcmlnaHRDZW50ZXI6IDEyLFxuICAgIC8qKlxuICAgICAqIEFwcGVhciB0byB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCBlbGVtZW50LCB3aXRoIHRoZSBib3R0b20gZWRnZXMgb2YgdGhlIGNhbGxvdXQgYW5kIHRhcmdldCBhbGlnbmluZy5cbiAgICAgKi9cbiAgICByaWdodEJvdHRvbUVkZ2U6IDEzLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURpcmVjdGlvbmFsSGludC5qcy5tYXAiLCJleHBvcnQgdmFyIFJlY3RhbmdsZUVkZ2U7XG4oZnVuY3Rpb24gKFJlY3RhbmdsZUVkZ2UpIHtcbiAgICBSZWN0YW5nbGVFZGdlW1JlY3RhbmdsZUVkZ2VbXCJ0b3BcIl0gPSAxXSA9IFwidG9wXCI7XG4gICAgUmVjdGFuZ2xlRWRnZVtSZWN0YW5nbGVFZGdlW1wiYm90dG9tXCJdID0gLTFdID0gXCJib3R0b21cIjtcbiAgICBSZWN0YW5nbGVFZGdlW1JlY3RhbmdsZUVkZ2VbXCJsZWZ0XCJdID0gMl0gPSBcImxlZnRcIjtcbiAgICBSZWN0YW5nbGVFZGdlW1JlY3RhbmdsZUVkZ2VbXCJyaWdodFwiXSA9IC0yXSA9IFwicmlnaHRcIjtcbn0pKFJlY3RhbmdsZUVkZ2UgfHwgKFJlY3RhbmdsZUVkZ2UgPSB7fSkpO1xuZXhwb3J0IHZhciBQb3NpdGlvbjtcbihmdW5jdGlvbiAoUG9zaXRpb24pIHtcbiAgICBQb3NpdGlvbltQb3NpdGlvbltcInRvcFwiXSA9IDBdID0gXCJ0b3BcIjtcbiAgICBQb3NpdGlvbltQb3NpdGlvbltcImJvdHRvbVwiXSA9IDFdID0gXCJib3R0b21cIjtcbiAgICBQb3NpdGlvbltQb3NpdGlvbltcInN0YXJ0XCJdID0gMl0gPSBcInN0YXJ0XCI7XG4gICAgUG9zaXRpb25bUG9zaXRpb25bXCJlbmRcIl0gPSAzXSA9IFwiZW5kXCI7XG59KShQb3NpdGlvbiB8fCAoUG9zaXRpb24gPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cG9zaXRpb25pbmcudHlwZXMuanMubWFwIiwidmFyIF9hO1xuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IERpcmVjdGlvbmFsSGludCB9IGZyb20gJy4uLy4uL2NvbW1vbi9EaXJlY3Rpb25hbEhpbnQnO1xuaW1wb3J0IHsgZ2V0U2Nyb2xsYmFyV2lkdGgsIGdldFJUTCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBSZWN0YW5nbGVFZGdlIH0gZnJvbSAnLi9wb3NpdGlvbmluZy50eXBlcyc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuZnVuY3Rpb24gX2NyZWF0ZVBvc2l0aW9uRGF0YSh0YXJnZXRFZGdlLCBhbGlnbm1lbnRFZGdlLCBpc0F1dG8pIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0YXJnZXRFZGdlOiB0YXJnZXRFZGdlLFxuICAgICAgICBhbGlnbm1lbnRFZGdlOiBhbGlnbm1lbnRFZGdlLFxuICAgICAgICBpc0F1dG86IGlzQXV0byxcbiAgICB9O1xufVxuLy8gQ3VycmVudGx5IHRoZSBiZWFrUGVyY2VudCBpcyBzZXQgdG8gNTAgZm9yIGFsbCBwb3NpdGlvbnMgbWVhbmluZyB0aGF0IGl0IHNob3VsZCB0ZW5kIHRvIHRoZSBjZW50ZXIgb2YgdGhlIHRhcmdldFxudmFyIERpcmVjdGlvbmFsRGljdGlvbmFyeSA9IChfYSA9IHt9LFxuICAgIF9hW0RpcmVjdGlvbmFsSGludC50b3BMZWZ0RWRnZV0gPSBfY3JlYXRlUG9zaXRpb25EYXRhKFJlY3RhbmdsZUVkZ2UudG9wLCBSZWN0YW5nbGVFZGdlLmxlZnQpLFxuICAgIF9hW0RpcmVjdGlvbmFsSGludC50b3BDZW50ZXJdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLnRvcCksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LnRvcFJpZ2h0RWRnZV0gPSBfY3JlYXRlUG9zaXRpb25EYXRhKFJlY3RhbmdsZUVkZ2UudG9wLCBSZWN0YW5nbGVFZGdlLnJpZ2h0KSxcbiAgICBfYVtEaXJlY3Rpb25hbEhpbnQudG9wQXV0b0VkZ2VdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLnRvcCwgdW5kZWZpbmVkLCB0cnVlKSxcbiAgICBfYVtEaXJlY3Rpb25hbEhpbnQuYm90dG9tTGVmdEVkZ2VdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLmJvdHRvbSwgUmVjdGFuZ2xlRWRnZS5sZWZ0KSxcbiAgICBfYVtEaXJlY3Rpb25hbEhpbnQuYm90dG9tQ2VudGVyXSA9IF9jcmVhdGVQb3NpdGlvbkRhdGEoUmVjdGFuZ2xlRWRnZS5ib3R0b20pLFxuICAgIF9hW0RpcmVjdGlvbmFsSGludC5ib3R0b21SaWdodEVkZ2VdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLmJvdHRvbSwgUmVjdGFuZ2xlRWRnZS5yaWdodCksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LmJvdHRvbUF1dG9FZGdlXSA9IF9jcmVhdGVQb3NpdGlvbkRhdGEoUmVjdGFuZ2xlRWRnZS5ib3R0b20sIHVuZGVmaW5lZCwgdHJ1ZSksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LmxlZnRUb3BFZGdlXSA9IF9jcmVhdGVQb3NpdGlvbkRhdGEoUmVjdGFuZ2xlRWRnZS5sZWZ0LCBSZWN0YW5nbGVFZGdlLnRvcCksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LmxlZnRDZW50ZXJdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLmxlZnQpLFxuICAgIF9hW0RpcmVjdGlvbmFsSGludC5sZWZ0Qm90dG9tRWRnZV0gPSBfY3JlYXRlUG9zaXRpb25EYXRhKFJlY3RhbmdsZUVkZ2UubGVmdCwgUmVjdGFuZ2xlRWRnZS5ib3R0b20pLFxuICAgIF9hW0RpcmVjdGlvbmFsSGludC5yaWdodFRvcEVkZ2VdID0gX2NyZWF0ZVBvc2l0aW9uRGF0YShSZWN0YW5nbGVFZGdlLnJpZ2h0LCBSZWN0YW5nbGVFZGdlLnRvcCksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LnJpZ2h0Q2VudGVyXSA9IF9jcmVhdGVQb3NpdGlvbkRhdGEoUmVjdGFuZ2xlRWRnZS5yaWdodCksXG4gICAgX2FbRGlyZWN0aW9uYWxIaW50LnJpZ2h0Qm90dG9tRWRnZV0gPSBfY3JlYXRlUG9zaXRpb25EYXRhKFJlY3RhbmdsZUVkZ2UucmlnaHQsIFJlY3RhbmdsZUVkZ2UuYm90dG9tKSxcbiAgICBfYSk7XG5mdW5jdGlvbiBfaXNSZWN0YW5nbGVXaXRoaW5Cb3VuZHMocmVjdCwgYm91bmRpbmdSZWN0KSB7XG4gICAgaWYgKHJlY3QudG9wIDwgYm91bmRpbmdSZWN0LnRvcCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChyZWN0LmJvdHRvbSA+IGJvdW5kaW5nUmVjdC5ib3R0b20pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocmVjdC5sZWZ0IDwgYm91bmRpbmdSZWN0LmxlZnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocmVjdC5yaWdodCA+IGJvdW5kaW5nUmVjdC5yaWdodCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBHZXRzIGFsbCBvZiB0aGUgZWRnZXMgb2YgYSByZWN0YW5nbGUgdGhhdCBhcmUgb3V0c2lkZSBvZiB0aGUgZ2l2ZW4gYm91bmRzLlxuICogSWYgdGhlcmUgYXJlIG5vIG91dCBvZiBib3VuZHMgZWRnZXMgaXQgcmV0dXJucyBhbiBlbXB0eSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gX2dldE91dE9mQm91bmRzRWRnZXMocmVjdCwgYm91bmRpbmdSZWN0KSB7XG4gICAgdmFyIG91dE9mQm91bmRzID0gW107XG4gICAgaWYgKHJlY3QudG9wIDwgYm91bmRpbmdSZWN0LnRvcCkge1xuICAgICAgICBvdXRPZkJvdW5kcy5wdXNoKFJlY3RhbmdsZUVkZ2UudG9wKTtcbiAgICB9XG4gICAgaWYgKHJlY3QuYm90dG9tID4gYm91bmRpbmdSZWN0LmJvdHRvbSkge1xuICAgICAgICBvdXRPZkJvdW5kcy5wdXNoKFJlY3RhbmdsZUVkZ2UuYm90dG9tKTtcbiAgICB9XG4gICAgaWYgKHJlY3QubGVmdCA8IGJvdW5kaW5nUmVjdC5sZWZ0KSB7XG4gICAgICAgIG91dE9mQm91bmRzLnB1c2goUmVjdGFuZ2xlRWRnZS5sZWZ0KTtcbiAgICB9XG4gICAgaWYgKHJlY3QucmlnaHQgPiBib3VuZGluZ1JlY3QucmlnaHQpIHtcbiAgICAgICAgb3V0T2ZCb3VuZHMucHVzaChSZWN0YW5nbGVFZGdlLnJpZ2h0KTtcbiAgICB9XG4gICAgcmV0dXJuIG91dE9mQm91bmRzO1xufVxuZnVuY3Rpb24gX2dldEVkZ2VWYWx1ZShyZWN0LCBlZGdlKSB7XG4gICAgcmV0dXJuIHJlY3RbUmVjdGFuZ2xlRWRnZVtlZGdlXV07XG59XG5mdW5jdGlvbiBfc2V0RWRnZVZhbHVlKHJlY3QsIGVkZ2UsIHZhbHVlKSB7XG4gICAgcmVjdFtSZWN0YW5nbGVFZGdlW2VkZ2VdXSA9IHZhbHVlO1xuICAgIHJldHVybiByZWN0O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtaWRkbGUgdmFsdWUgb2YgYW4gZWRnZS4gT25seSByZXR1cm5zIDEgdmFsdWUgcmF0aGVyIHRoYW4geHkgY29vcmRpbmF0ZXMgYXNcbiAqIHRoZSBpdHNlbGYgYWxyZWFkeSBjb250YWlucyB0aGUgb3RoZXIgY29vcmRpbmF0ZS5cbiAqIEZvciBpbnN0YW5jZSwgYSBib3R0b20gZWRnZSdzIGN1cnJlbnQgdmFsdWUgaXMgaXQncyB5IGNvb3JkaW5hdGUsIHNvIHRoZSBudW1iZXIgcmV0dXJuZWQgaXMgdGhlIHguXG4gKi9cbmZ1bmN0aW9uIF9nZXRDZW50ZXJWYWx1ZShyZWN0LCBlZGdlKSB7XG4gICAgdmFyIGVkZ2VzID0gX2dldEZsYW5raW5nRWRnZXMoZWRnZSk7XG4gICAgcmV0dXJuIChfZ2V0RWRnZVZhbHVlKHJlY3QsIGVkZ2VzLnBvc2l0aXZlRWRnZSkgKyBfZ2V0RWRnZVZhbHVlKHJlY3QsIGVkZ2VzLm5lZ2F0aXZlRWRnZSkpIC8gMjtcbn1cbi8qKlxuICogRmxpcHMgdGhlIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgZWRnZS5cbiAqIElmIHRoZSBlZGdlIGlzIGEgXCJwb3NpdGl2ZVwiIGVkZ2UsIFRvcCBvciBMZWZ0LCB0aGVuIHRoZSB2YWx1ZSBzaG91bGQgc3RheSBhcyBpdCBpcy5cbiAqIElmIHRoZSBlZGdlIGlzIGEgXCJuZWdhdGl2ZVwiIGVkZ2UsIEJvdHRvbSBvciBSaWdodCwgdGhlbiB0aGUgdmFsdWUgc2hvdWxkIGJlIGZsaXBwZWQuXG4gKiBUaGlzIGlzIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGNvb3JkaW5hdGVzIGFyZSBlZmZlY3RpdmVseSByZXNlcnZlZCBpbiBjZXJ0YWluIGNhc2VzIGZvciB0aGVcbiAqIFwibmVnYXRpdmVcIiBlZGdlcy5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgd2hlbiB0ZXN0aW5nIHRvIHNlZSBpZiBhIGJvdHRvbSBlZGdlIDEgaXMgd2l0aGluIHRoZSBib3VuZHMgb2YgYW5vdGhlciBib3R0b20gZWRnZSAyOlxuICogSWYgZWRnZSAxIGlzIGdyZWF0ZXIgdGhhbiBlZGdlIDIgdGhlbiBpdCBpcyBvdXQgb2YgYm91bmRzLiBUaGlzIGlzIHJldmVyc2VkIGZvciB0b3AgZWRnZSAxIGFuZCB0b3AgZWRnZSAyLlxuICogSWYgdG9wIGVkZ2UgMSBpcyBsZXNzIHRoYW4gZWRnZSAyIHRoZW4gaXQgaXMgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gX2dldFJlbGF0aXZlRWRnZVZhbHVlKGVkZ2UsIHZhbHVlKSB7XG4gICAgaWYgKGVkZ2UgPiAwKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAqIC0xO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9nZXRSZWxhdGl2ZVJlY3RFZGdlVmFsdWUoZWRnZSwgcmVjdCkge1xuICAgIHJldHVybiBfZ2V0UmVsYXRpdmVFZGdlVmFsdWUoZWRnZSwgX2dldEVkZ2VWYWx1ZShyZWN0LCBlZGdlKSk7XG59XG5mdW5jdGlvbiBfZ2V0UmVsYXRpdmVFZGdlRGlmZmVyZW5jZShyZWN0LCBob3N0UmVjdCwgZWRnZSkge1xuICAgIHZhciBlZGdlRGlmZmVyZW5jZSA9IF9nZXRFZGdlVmFsdWUocmVjdCwgZWRnZSkgLSBfZ2V0RWRnZVZhbHVlKGhvc3RSZWN0LCBlZGdlKTtcbiAgICByZXR1cm4gX2dldFJlbGF0aXZlRWRnZVZhbHVlKGVkZ2UsIGVkZ2VEaWZmZXJlbmNlKTtcbn1cbi8qKlxuICogTW92ZXMgdGhlIGVkZ2Ugb2YgYSByZWN0YW5nbGUgdG8gdGhlIHZhbHVlIGdpdmVuLiBJdCBvbmx5IG1vdmVzIHRoZSBlZGdlIGluIGEgbGluZWFyIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGF0IGVkZ2UuXG4gKiBGb3IgZXhhbXBsZSwgaWYgaXQncyBhIGJvdHRvbSBlZGdlIGl0IHdpbGwgb25seSBjaGFuZ2UgeSBjb29yZGluYXRlcy5cbiAqIGlmIG1haW50YWluU2l6ZSBpcyBzZXQgdG8gZmFsc2UsIGl0IHdpbGwgb25seSBhZGp1c3QgdGhlIHNwZWNpZmllZCBlZGdlIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIF9tb3ZlRWRnZShyZWN0LCBlZGdlLCBuZXdWYWx1ZSwgbWFpbnRhaW5TaXplKSB7XG4gICAgaWYgKG1haW50YWluU2l6ZSA9PT0gdm9pZCAwKSB7IG1haW50YWluU2l6ZSA9IHRydWU7IH1cbiAgICB2YXIgZGlmZmVyZW5jZSA9IF9nZXRFZGdlVmFsdWUocmVjdCwgZWRnZSkgLSBuZXdWYWx1ZTtcbiAgICB2YXIgcmV0dXJuUmVjdCA9IF9zZXRFZGdlVmFsdWUocmVjdCwgZWRnZSwgbmV3VmFsdWUpO1xuICAgIGlmIChtYWludGFpblNpemUpIHtcbiAgICAgICAgcmV0dXJuUmVjdCA9IF9zZXRFZGdlVmFsdWUocmVjdCwgZWRnZSAqIC0xLCBfZ2V0RWRnZVZhbHVlKHJlY3QsIGVkZ2UgKiAtMSkgLSBkaWZmZXJlbmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblJlY3Q7XG59XG4vKipcbiAqIEFsaWducyB0aGUgZWRnZSBvbiB0aGUgcGFzc2VkIGluIHJlY3QgdG8gdGhlIHRhcmdldC4gSWYgdGhlcmUgaXMgYSBnYXAgdGhlbiBpdCB3aWxsIGhhdmUgdGhhdCBzcGFjZSBiZXR3ZWVuIHRoZSB0d28uXG4gKi9cbmZ1bmN0aW9uIF9hbGlnbkVkZ2VzKHJlY3QsIHRhcmdldCwgZWRnZSwgZ2FwKSB7XG4gICAgaWYgKGdhcCA9PT0gdm9pZCAwKSB7IGdhcCA9IDA7IH1cbiAgICByZXR1cm4gX21vdmVFZGdlKHJlY3QsIGVkZ2UsIF9nZXRFZGdlVmFsdWUodGFyZ2V0LCBlZGdlKSArIF9nZXRSZWxhdGl2ZUVkZ2VWYWx1ZShlZGdlLCBnYXApKTtcbn1cbi8qKlxuICogQWxpZ25zIHRoZSB0YXJnZXRFZGdlIG9uIHRoZSBwYXNzZWQgaW4gdGFyZ2V0IHRvIHRoZSByZWN0cyBjb3JyZXNwb25kaW5nIG9wcG9zaXRlIGVkZ2UuXG4gKiBGb3IgaW5zdGFuY2UgaWYgdGFyZ2V0RWRnZSBpcyBib3R0b20sIHRoZW4gdGhlIHJlY3RzIHRvcCB3aWxsIGJlIG1vdmVkIHRvIG1hdGNoIGl0LlxuICovXG5mdW5jdGlvbiBfYWxpZ25PcHBvc2l0ZUVkZ2VzKHJlY3QsIHRhcmdldCwgdGFyZ2V0RWRnZSwgZ2FwKSB7XG4gICAgaWYgKGdhcCA9PT0gdm9pZCAwKSB7IGdhcCA9IDA7IH1cbiAgICB2YXIgb3Bwb3NpdGVFZGdlID0gdGFyZ2V0RWRnZSAqIC0xO1xuICAgIHZhciBhZGp1c3RlZEdhcCA9IF9nZXRSZWxhdGl2ZUVkZ2VWYWx1ZShvcHBvc2l0ZUVkZ2UsIGdhcCk7XG4gICAgcmV0dXJuIF9tb3ZlRWRnZShyZWN0LCB0YXJnZXRFZGdlICogLTEsIF9nZXRFZGdlVmFsdWUodGFyZ2V0LCB0YXJnZXRFZGdlKSArIGFkanVzdGVkR2FwKTtcbn1cbi8qKlxuICogVGVzdHMgdG8gc2VlIGlmIHRoZSBnaXZlbiBlZGdlIGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBnaXZlbiByZWN0YW5nbGUuXG4gKi9cbmZ1bmN0aW9uIF9pc0VkZ2VJbkJvdW5kcyhyZWN0LCBib3VuZHMsIGVkZ2UpIHtcbiAgICB2YXIgYWRqdXN0ZWRSZWN0VmFsdWUgPSBfZ2V0UmVsYXRpdmVSZWN0RWRnZVZhbHVlKGVkZ2UsIHJlY3QpO1xuICAgIHJldHVybiBhZGp1c3RlZFJlY3RWYWx1ZSA+IF9nZXRSZWxhdGl2ZVJlY3RFZGdlVmFsdWUoZWRnZSwgYm91bmRzKTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG1lYXN1cmUgb2YgaG93IG11Y2ggYSByZWN0YW5nbGUgaXMgb3V0IG9mIGJvdW5kcyBmb3IgYSBnaXZlbiBhbGlnbm1lbnQ7XG4gKiB0aGlzIGNhbiBiZSB1c2VkIHRvIGNvbXBhcmUgd2hpY2ggcmVjdGFuZ2xlIGlzIG1vcmUgb3IgbGVzcyBvdXQgb2YgYm91bmRzLlxuICogQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSByZWN0YW5nbGUgaXMgZW50aXJlbHkgaW4gYm91bmRzXG4gKi9cbmZ1bmN0aW9uIF9nZXRPdXRPZkJvdW5kc0RlZ3JlZShyZWN0LCBib3VuZHMpIHtcbiAgICB2YXIgYnJlYWtpbmdFZGdlcyA9IF9nZXRPdXRPZkJvdW5kc0VkZ2VzKHJlY3QsIGJvdW5kcyk7XG4gICAgdmFyIHRvdGFsID0gMDtcbiAgICBmb3IgKHZhciBfaSA9IDAsIGJyZWFraW5nRWRnZXNfMSA9IGJyZWFraW5nRWRnZXM7IF9pIDwgYnJlYWtpbmdFZGdlc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgZWRnZSA9IGJyZWFraW5nRWRnZXNfMVtfaV07XG4gICAgICAgIHRvdGFsICs9IE1hdGgucG93KF9nZXRSZWxhdGl2ZUVkZ2VEaWZmZXJlbmNlKHJlY3QsIGJvdW5kcywgZWRnZSksIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIEF0dGVtcHRzIHRvIG1vdmUgdGhlIHJlY3RhbmdsZSB0aHJvdWdoIHZhcmlvdXMgc2lkZXMgb2YgdGhlIHRhcmdldCB0byBmaW5kIGEgcGxhY2UgdG8gZml0LlxuICogSWYgbm8gZml0IGlzIGZvdW5kLCB0aGUgbGVhc3QgYmFkIG9wdGlvbiBzaG91bGQgYmUgcmV0dXJuZWQuXG4gKi9cbmZ1bmN0aW9uIF9mbGlwVG9GaXQocmVjdCwgdGFyZ2V0LCBib3VuZGluZywgcG9zaXRpb25EYXRhLCBnYXApIHtcbiAgICBpZiAoZ2FwID09PSB2b2lkIDApIHsgZ2FwID0gMDsgfVxuICAgIHZhciBkaXJlY3Rpb25zID0gW1xuICAgICAgICBSZWN0YW5nbGVFZGdlLmxlZnQsXG4gICAgICAgIFJlY3RhbmdsZUVkZ2UucmlnaHQsXG4gICAgICAgIFJlY3RhbmdsZUVkZ2UuYm90dG9tLFxuICAgICAgICBSZWN0YW5nbGVFZGdlLnRvcCxcbiAgICBdO1xuICAgIC8vIEluIFJUTCBwYWdlLCBSZWN0YW5nbGVFZGdlLnJpZ2h0IGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIFJlY3RhbmdsZUVkZ2UubGVmdCwgc28gdGhlIG9yZGVyIHNob3VsZCBiZSB1cGRhdGVkLlxuICAgIGlmIChnZXRSVEwoKSkge1xuICAgICAgICBkaXJlY3Rpb25zWzBdICo9IC0xO1xuICAgICAgICBkaXJlY3Rpb25zWzFdICo9IC0xO1xuICAgIH1cbiAgICB2YXIgY3VycmVudEVzdGltYXRlID0gcmVjdDtcbiAgICB2YXIgY3VycmVudEVkZ2UgPSBwb3NpdGlvbkRhdGEudGFyZ2V0RWRnZTtcbiAgICB2YXIgY3VycmVudEFsaWdubWVudCA9IHBvc2l0aW9uRGF0YS5hbGlnbm1lbnRFZGdlO1xuICAgIC8vIGtlZXAgdHJhY2sgb2YgbGVhc3QgYmFkIG9wdGlvbiwgaW4gY2FzZSBubyBzaWRlcyBmaXRcbiAgICB2YXIgb29iRGVncmVlO1xuICAgIHZhciBiZXN0RWRnZSA9IGN1cnJlbnRFZGdlO1xuICAgIHZhciBiZXN0QWxpZ25tZW50ID0gY3VycmVudEFsaWdubWVudDtcbiAgICAvLyBLZWVwIHN3aXRjaGluZyBzaWRlcyB1bnRpbCBvbmUgaXMgZm91bmQgd2l0aCBlbm91Z2ggc3BhY2UuXG4gICAgLy8gSWYgYWxsIHNpZGVzIGRvbid0IGZpdCB0aGVuIHJldHVybiB0aGUgdW5tb2RpZmllZCBlbGVtZW50LlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIGlmICghX2lzRWRnZUluQm91bmRzKGN1cnJlbnRFc3RpbWF0ZSwgYm91bmRpbmcsIGN1cnJlbnRFZGdlKSkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIGxlYXN0LWJhZCBlZGdlc1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRPT0JEZWdyZWUgPSBfZ2V0T3V0T2ZCb3VuZHNEZWdyZWUoY3VycmVudEVzdGltYXRlLCBib3VuZGluZyk7XG4gICAgICAgICAgICBpZiAoIW9vYkRlZ3JlZSB8fCBjdXJyZW50T09CRGVncmVlIDwgb29iRGVncmVlKSB7XG4gICAgICAgICAgICAgICAgb29iRGVncmVlID0gY3VycmVudE9PQkRlZ3JlZTtcbiAgICAgICAgICAgICAgICBiZXN0RWRnZSA9IGN1cnJlbnRFZGdlO1xuICAgICAgICAgICAgICAgIGJlc3RBbGlnbm1lbnQgPSBjdXJyZW50QWxpZ25tZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlyZWN0aW9ucy5zcGxpY2UoZGlyZWN0aW9ucy5pbmRleE9mKGN1cnJlbnRFZGdlKSwgMSk7XG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbnMuaW5kZXhPZihjdXJyZW50RWRnZSAqIC0xKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFZGdlID0gY3VycmVudEVkZ2UgKiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBbGlnbm1lbnQgPSBjdXJyZW50RWRnZTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVkZ2UgPSBkaXJlY3Rpb25zLnNsaWNlKC0xKVswXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudEVzdGltYXRlID0gX2VzdGltYXRlUG9zaXRpb24ocmVjdCwgdGFyZ2V0LCB7IHRhcmdldEVkZ2U6IGN1cnJlbnRFZGdlLCBhbGlnbm1lbnRFZGdlOiBjdXJyZW50QWxpZ25tZW50IH0sIGdhcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRSZWN0YW5nbGU6IGN1cnJlbnRFc3RpbWF0ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRFZGdlOiBjdXJyZW50RWRnZSxcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnRFZGdlOiBjdXJyZW50QWxpZ25tZW50LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBub3RoaW5nIGZpdHMsIHVzZSBsZWFzdC1iYWQgb3B0aW9uXG4gICAgY3VycmVudEVzdGltYXRlID0gX2VzdGltYXRlUG9zaXRpb24ocmVjdCwgdGFyZ2V0LCB7IHRhcmdldEVkZ2U6IGJlc3RFZGdlLCBhbGlnbm1lbnRFZGdlOiBiZXN0QWxpZ25tZW50IH0sIGdhcCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZWxlbWVudFJlY3RhbmdsZTogY3VycmVudEVzdGltYXRlLFxuICAgICAgICB0YXJnZXRFZGdlOiBiZXN0RWRnZSxcbiAgICAgICAgYWxpZ25tZW50RWRnZTogYmVzdEFsaWdubWVudCxcbiAgICB9O1xufVxuLyoqXG4gKiBGbGlwcyBvbmx5IHRoZSBhbGlnbm1lbnQgZWRnZSBvZiBhbiBlbGVtZW50IHJlY3RhbmdsZS4gVGhpcyBpcyB1c2VkIGluc3RlYWQgb2YgbnVkZ2luZyB0aGUgYWxpZ25tZW50IGVkZ2VzXG4gKiBpbnRvIHBvc2l0aW9uLCB3aGVuIGBhbGlnblRhcmdldEVkZ2VgIGlzIHNwZWNpZmllZC5cbiAqL1xuZnVuY3Rpb24gX2ZsaXBBbGlnbm1lbnRFZGdlKGVsZW1lbnRFc3RpbWF0ZSwgdGFyZ2V0LCBnYXAsIGNvdmVyVGFyZ2V0KSB7XG4gICAgdmFyIGFsaWdubWVudEVkZ2UgPSBlbGVtZW50RXN0aW1hdGUuYWxpZ25tZW50RWRnZSwgdGFyZ2V0RWRnZSA9IGVsZW1lbnRFc3RpbWF0ZS50YXJnZXRFZGdlLCBlbGVtZW50UmVjdGFuZ2xlID0gZWxlbWVudEVzdGltYXRlLmVsZW1lbnRSZWN0YW5nbGU7XG4gICAgdmFyIG9wcG9zaXRlRWRnZSA9IGFsaWdubWVudEVkZ2UgKiAtMTtcbiAgICB2YXIgbmV3RXN0aW1hdGUgPSBfZXN0aW1hdGVQb3NpdGlvbihlbGVtZW50UmVjdGFuZ2xlLCB0YXJnZXQsIHsgdGFyZ2V0RWRnZTogdGFyZ2V0RWRnZSwgYWxpZ25tZW50RWRnZTogb3Bwb3NpdGVFZGdlIH0sIGdhcCwgY292ZXJUYXJnZXQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnRSZWN0YW5nbGU6IG5ld0VzdGltYXRlLFxuICAgICAgICB0YXJnZXRFZGdlOiB0YXJnZXRFZGdlLFxuICAgICAgICBhbGlnbm1lbnRFZGdlOiBvcHBvc2l0ZUVkZ2UsXG4gICAgfTtcbn1cbi8qKlxuICogQWRqdXN0cyBhIGVsZW1lbnQgcmVjdGFuZ2xlIHRvIGZpdCB3aXRoaW4gdGhlIGJvdW5kcyBnaXZlbi4gSWYgZGlyZWN0aW9uYWxIaW50Rml4ZWQgb3IgY292ZXJ0YXJnZXQgaXMgcGFzc2VkIGluXG4gKiB0aGVuIHRoZSBlbGVtZW50IHdpbGwgbm90IGZsaXAgc2lkZXMgb24gdGhlIHRhcmdldC4gVGhleSB3aWxsLCBob3dldmVyLCBiZSBudWRnZWQgdG8gZml0IHdpdGhpbiB0aGUgYm91bmRzIGdpdmVuLlxuICovXG5mdW5jdGlvbiBfYWRqdXN0Rml0V2l0aGluQm91bmRzKGVsZW1lbnQsIHRhcmdldCwgYm91bmRpbmcsIHBvc2l0aW9uRGF0YSwgZ2FwLCBkaXJlY3Rpb25hbEhpbnRGaXhlZCwgY292ZXJUYXJnZXQpIHtcbiAgICBpZiAoZ2FwID09PSB2b2lkIDApIHsgZ2FwID0gMDsgfVxuICAgIHZhciBhbGlnbm1lbnRFZGdlID0gcG9zaXRpb25EYXRhLmFsaWdubWVudEVkZ2UsIGFsaWduVGFyZ2V0RWRnZSA9IHBvc2l0aW9uRGF0YS5hbGlnblRhcmdldEVkZ2U7XG4gICAgdmFyIGVsZW1lbnRFc3RpbWF0ZSA9IHtcbiAgICAgICAgZWxlbWVudFJlY3RhbmdsZTogZWxlbWVudCxcbiAgICAgICAgdGFyZ2V0RWRnZTogcG9zaXRpb25EYXRhLnRhcmdldEVkZ2UsXG4gICAgICAgIGFsaWdubWVudEVkZ2U6IGFsaWdubWVudEVkZ2UsXG4gICAgfTtcbiAgICBpZiAoIWRpcmVjdGlvbmFsSGludEZpeGVkICYmICFjb3ZlclRhcmdldCkge1xuICAgICAgICBlbGVtZW50RXN0aW1hdGUgPSBfZmxpcFRvRml0KGVsZW1lbnQsIHRhcmdldCwgYm91bmRpbmcsIHBvc2l0aW9uRGF0YSwgZ2FwKTtcbiAgICB9XG4gICAgdmFyIG91dE9mQm91bmRzID0gX2dldE91dE9mQm91bmRzRWRnZXMoZWxlbWVudEVzdGltYXRlLmVsZW1lbnRSZWN0YW5nbGUsIGJvdW5kaW5nKTtcbiAgICAvLyBpZiBkaXJlY3Rpb25hbEhpbnRGaXhlZCBpcyBzcGVjaWZpZWQsIHdlIG5lZWQgdG8gZm9yY2UgdGhlIHRhcmdldCBlZGdlIHRvIG5vdCBjaGFuZ2VcbiAgICAvLyB3ZSBuZWVkICotMSBiZWNhdXNlIHRhcmdldEVkZ2UgcmVmZXJzIHRvIHRoZSB0YXJnZXQncyBlZGdlOyB0aGUgY2FsbG91dCBlZGdlIGlzIHRoZSBvcHBvc2l0ZVxuICAgIHZhciBmaXhlZEVkZ2UgPSBkaXJlY3Rpb25hbEhpbnRGaXhlZCA/IC1lbGVtZW50RXN0aW1hdGUudGFyZ2V0RWRnZSA6IHVuZGVmaW5lZDtcbiAgICBpZiAob3V0T2ZCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoYWxpZ25UYXJnZXRFZGdlKSB7XG4gICAgICAgICAgICAvLyBUaGUgZWRnZSBvcHBvc2l0ZSB0byB0aGUgYWxpZ25tZW50IGVkZ2UgbWlnaHQgYmUgb3V0IG9mIGJvdW5kcy5cbiAgICAgICAgICAgIC8vIEZsaXAgYWxpZ25tZW50IHRvIHNlZSBpZiB3ZSBjYW4gZ2V0IGl0IHdpdGhpbiBib3VuZHMuXG4gICAgICAgICAgICBpZiAoZWxlbWVudEVzdGltYXRlLmFsaWdubWVudEVkZ2UgJiYgb3V0T2ZCb3VuZHMuaW5kZXhPZihlbGVtZW50RXN0aW1hdGUuYWxpZ25tZW50RWRnZSAqIC0xKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZsaXBwZWRFbGVtZW50RXN0aW1hdGUgPSBfZmxpcEFsaWdubWVudEVkZ2UoZWxlbWVudEVzdGltYXRlLCB0YXJnZXQsIGdhcCwgY292ZXJUYXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmIChfaXNSZWN0YW5nbGVXaXRoaW5Cb3VuZHMoZmxpcHBlZEVsZW1lbnRFc3RpbWF0ZS5lbGVtZW50UmVjdGFuZ2xlLCBib3VuZGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsaXBwZWRFbGVtZW50RXN0aW1hdGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmxpcHBlZCBlbGVtZW50cyBlZGdlcyBhcmUgc3RpbGwgb3V0IG9mIGJvdW5kcywgdHJ5IG51ZGdpbmcgaXQuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRFc3RpbWF0ZSA9IF9hbGlnbk91dE9mQm91bmRzRWRnZXMoX2dldE91dE9mQm91bmRzRWRnZXMoZmxpcHBlZEVsZW1lbnRFc3RpbWF0ZS5lbGVtZW50UmVjdGFuZ2xlLCBib3VuZGluZyksIGVsZW1lbnRFc3RpbWF0ZSwgYm91bmRpbmcsIGZpeGVkRWRnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudEVzdGltYXRlID0gX2FsaWduT3V0T2ZCb3VuZHNFZGdlcyhvdXRPZkJvdW5kcywgZWxlbWVudEVzdGltYXRlLCBib3VuZGluZywgZml4ZWRFZGdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVsZW1lbnRFc3RpbWF0ZSA9IF9hbGlnbk91dE9mQm91bmRzRWRnZXMob3V0T2ZCb3VuZHMsIGVsZW1lbnRFc3RpbWF0ZSwgYm91bmRpbmcsIGZpeGVkRWRnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnRFc3RpbWF0ZTtcbn1cbi8qKlxuICogSXRlcmF0ZXMgdGhyb3VnaCBhIGxpc3Qgb2Ygb3V0IG9mIGJvdW5kcyBlZGdlcyBhbmQgdHJpZXMgdG8gbnVkZ2UgYW5kIGFsaWduIHRoZW0uXG4gKiBAcGFyYW0gb3V0T2ZCb3VuZHNFZGdlcyAtIEFycmF5IG9mIGVkZ2VzIHRoYXQgYXJlIG91dCBvZiBib3VuZHNcbiAqIEBwYXJhbSBlbGVtZW50RXN0aW1hdGUgLSBUaGUgY3VycmVudCBlbGVtZW50IHBvc2l0aW9uaW5nIGVzdGltYXRlXG4gKiBAcGFyYW0gYm91bmRpbmcgLSBUaGUgY3VycmVudCBib3VuZHNcbiAqIEBwYXJhbSBwcmVzZXJ2ZUVkZ2UgLSBTcGVjaWZ5IGFuIGVkZ2UgdGhhdCBzaG91bGQgbm90IGJlIG1vZGlmaWVkXG4gKi9cbmZ1bmN0aW9uIF9hbGlnbk91dE9mQm91bmRzRWRnZXMob3V0T2ZCb3VuZHNFZGdlcywgZWxlbWVudEVzdGltYXRlLCBib3VuZGluZywgcHJlc2VydmVFZGdlKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBvdXRPZkJvdW5kc0VkZ2VzXzEgPSBvdXRPZkJvdW5kc0VkZ2VzOyBfaSA8IG91dE9mQm91bmRzRWRnZXNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IG91dE9mQm91bmRzRWRnZXNfMVtfaV07XG4gICAgICAgIHZhciBlZGdlQXR0ZW1wdCA9IHZvaWQgMDtcbiAgICAgICAgLy8gaWYgcHJlc2VydmVFZGdlIGlzIHNwZWNpZmllZCwgZG8gbm90IGNhbGwgX2FsaWduRWRnZXMsIHNraXAgZGlyZWN0bHkgdG8gX21vdmVFZGdlXG4gICAgICAgIC8vIHRoaXMgaXMgYmVjYXVzZSBfYWxpZ25FZGdlcyB3aWxsIG1vdmUgdGhlIG9wcG9zaXRlIGVkZ2VcbiAgICAgICAgaWYgKHByZXNlcnZlRWRnZSAmJiBwcmVzZXJ2ZUVkZ2UgPT09IGRpcmVjdGlvbiAqIC0xKSB7XG4gICAgICAgICAgICBlZGdlQXR0ZW1wdCA9IF9tb3ZlRWRnZShlbGVtZW50RXN0aW1hdGUuZWxlbWVudFJlY3RhbmdsZSwgZGlyZWN0aW9uLCBfZ2V0RWRnZVZhbHVlKGJvdW5kaW5nLCBkaXJlY3Rpb24pLCBmYWxzZSk7XG4gICAgICAgICAgICBlbGVtZW50RXN0aW1hdGUuZm9yY2VkSW5Cb3VuZHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWRnZUF0dGVtcHQgPSBfYWxpZ25FZGdlcyhlbGVtZW50RXN0aW1hdGUuZWxlbWVudFJlY3RhbmdsZSwgYm91bmRpbmcsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICB2YXIgaW5Cb3VuZHMgPSBfaXNFZGdlSW5Cb3VuZHMoZWRnZUF0dGVtcHQsIGJvdW5kaW5nLCBkaXJlY3Rpb24gKiAtMSk7XG4gICAgICAgICAgICAvLyBvbmx5IHVwZGF0ZSBlc3RpbWF0ZSBpZiB0aGUgYXR0ZW1wdCBkaWRuJ3QgYnJlYWsgb3V0IG9mIHRoZSBvcHBvc2l0ZSBib3VuZGluZyBlZGdlXG4gICAgICAgICAgICBpZiAoIWluQm91bmRzKSB7XG4gICAgICAgICAgICAgICAgZWRnZUF0dGVtcHQgPSBfbW92ZUVkZ2UoZWRnZUF0dGVtcHQsIGRpcmVjdGlvbiAqIC0xLCBfZ2V0RWRnZVZhbHVlKGJvdW5kaW5nLCBkaXJlY3Rpb24gKiAtMSksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50RXN0aW1hdGUuZm9yY2VkSW5Cb3VuZHMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsZW1lbnRFc3RpbWF0ZS5lbGVtZW50UmVjdGFuZ2xlID0gZWRnZUF0dGVtcHQ7XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50RXN0aW1hdGU7XG59XG4vKipcbiAqIE1vdmVzIHRoZSBtaWRkbGUgcG9pbnQgb24gYW4gZWRnZSB0byB0aGUgcG9pbnQgZ2l2ZW4uXG4gKiBPbmx5IG1vdmVzIGluIG9uZSBkaXJlY3Rpb24uIEZvciBpbnN0YW5jZSBpZiBhIGJvdHRvbSBlZGdlIGlzIHBhc3NlZCBpbiwgdGhlblxuICogdGhlIGJvdHRvbSBlZGdlIHdpbGwgYmUgbW92ZWQgaW4gdGhlIHggYXhpcyB0byBtYXRjaCB0aGUgcG9pbnQuXG4gKi9cbmZ1bmN0aW9uIF9jZW50ZXJFZGdlVG9Qb2ludChyZWN0LCBlZGdlLCBwb2ludCkge1xuICAgIHZhciBwb3NpdGl2ZUVkZ2UgPSBfZ2V0RmxhbmtpbmdFZGdlcyhlZGdlKS5wb3NpdGl2ZUVkZ2U7XG4gICAgdmFyIGVsZW1lbnRNaWRkbGUgPSBfZ2V0Q2VudGVyVmFsdWUocmVjdCwgZWRnZSk7XG4gICAgdmFyIGRpc3RhbmNlVG9NaWRkbGUgPSBlbGVtZW50TWlkZGxlIC0gX2dldEVkZ2VWYWx1ZShyZWN0LCBwb3NpdGl2ZUVkZ2UpO1xuICAgIHJldHVybiBfbW92ZUVkZ2UocmVjdCwgcG9zaXRpdmVFZGdlLCBwb2ludCAtIGRpc3RhbmNlVG9NaWRkbGUpO1xufVxuLyoqXG4gKiBNb3ZlcyB0aGUgZWxlbWVudCByZWN0YW5nbGUgdG8gYmUgYXBwcm9wcmlhdGVseSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGEgZ2l2ZW4gdGFyZ2V0LlxuICogRG9lcyBub3QgZmxpcCBvciBhZGp1c3QgdGhlIGVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIF9lc3RpbWF0ZVBvc2l0aW9uKGVsZW1lbnRUb1Bvc2l0aW9uLCB0YXJnZXQsIHBvc2l0aW9uRGF0YSwgZ2FwLCBjb3ZlclRhcmdldCkge1xuICAgIGlmIChnYXAgPT09IHZvaWQgMCkgeyBnYXAgPSAwOyB9XG4gICAgdmFyIGVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiA9IG5ldyBSZWN0YW5nbGUoZWxlbWVudFRvUG9zaXRpb24ubGVmdCwgZWxlbWVudFRvUG9zaXRpb24ucmlnaHQsIGVsZW1lbnRUb1Bvc2l0aW9uLnRvcCwgZWxlbWVudFRvUG9zaXRpb24uYm90dG9tKTtcbiAgICB2YXIgYWxpZ25tZW50RWRnZSA9IHBvc2l0aW9uRGF0YS5hbGlnbm1lbnRFZGdlLCB0YXJnZXRFZGdlID0gcG9zaXRpb25EYXRhLnRhcmdldEVkZ2U7XG4gICAgdmFyIGVsZW1lbnRFZGdlID0gY292ZXJUYXJnZXQgPyB0YXJnZXRFZGdlIDogdGFyZ2V0RWRnZSAqIC0xO1xuICAgIGVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiA9IGNvdmVyVGFyZ2V0XG4gICAgICAgID8gX2FsaWduRWRnZXMoZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uLCB0YXJnZXQsIHRhcmdldEVkZ2UsIGdhcClcbiAgICAgICAgOiBfYWxpZ25PcHBvc2l0ZUVkZ2VzKGVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiwgdGFyZ2V0LCB0YXJnZXRFZGdlLCBnYXApO1xuICAgIC8vIGlmIG5vIGFsaWdubWVudCBlZGdlIGlzIHByb3ZpZGVkIGl0J3Mgc3VwcG9zZWQgdG8gYmUgY2VudGVyZWQuXG4gICAgaWYgKCFhbGlnbm1lbnRFZGdlKSB7XG4gICAgICAgIHZhciB0YXJnZXRNaWRkbGVQb2ludCA9IF9nZXRDZW50ZXJWYWx1ZSh0YXJnZXQsIHRhcmdldEVkZ2UpO1xuICAgICAgICBlc3RpbWF0ZWRFbGVtZW50UG9zaXRpb24gPSBfY2VudGVyRWRnZVRvUG9pbnQoZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uLCBlbGVtZW50RWRnZSwgdGFyZ2V0TWlkZGxlUG9pbnQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uID0gX2FsaWduRWRnZXMoZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uLCB0YXJnZXQsIGFsaWdubWVudEVkZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBub24tb3Bwb3NpdGUgZWRnZXMgb2YgdGhlIHRhcmdldCBlZGdlLlxuICogRm9yIGluc3RhbmNlIGlmIGJvdHRvbSBpcyBwYXNzZWQgaW4gdGhlbiBsZWZ0IGFuZCByaWdodCB3aWxsIGJlIHJldHVybmVkLlxuICovXG5mdW5jdGlvbiBfZ2V0RmxhbmtpbmdFZGdlcyhlZGdlKSB7XG4gICAgaWYgKGVkZ2UgPT09IFJlY3RhbmdsZUVkZ2UudG9wIHx8IGVkZ2UgPT09IFJlY3RhbmdsZUVkZ2UuYm90dG9tKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3NpdGl2ZUVkZ2U6IFJlY3RhbmdsZUVkZ2UubGVmdCxcbiAgICAgICAgICAgIG5lZ2F0aXZlRWRnZTogUmVjdGFuZ2xlRWRnZS5yaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3NpdGl2ZUVkZ2U6IFJlY3RhbmdsZUVkZ2UudG9wLFxuICAgICAgICAgICAgbmVnYXRpdmVFZGdlOiBSZWN0YW5nbGVFZGdlLmJvdHRvbSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4vKipcbiAqIFJldHJpZXZlIHRoZSBmaW5hbCB2YWx1ZSBmb3IgdGhlIHJldHVybiBlZGdlIG9mIGBlbGVtZW50UmVjdGFuZ2xlYC4gSWYgdGhlIGBlbGVtZW50UmVjdGFuZ2xlYCBpcyBjbG9zZXIgdG8gb25lIHNpZGVcbiAqIG9mIHRoZSBib3VuZHMgdmVyc3VzIHRoZSBvdGhlciwgdGhlIHJldHVybiBlZGdlIGlzIGZsaXBwZWQgdG8gZ3JvdyBpbndhcmQuXG4gKi9cbmZ1bmN0aW9uIF9maW5hbGl6ZVJldHVybkVkZ2UoZWxlbWVudFJlY3RhbmdsZSwgcmV0dXJuRWRnZSwgYm91bmRzKSB7XG4gICAgaWYgKGJvdW5kcyAmJlxuICAgICAgICBNYXRoLmFicyhfZ2V0UmVsYXRpdmVFZGdlRGlmZmVyZW5jZShlbGVtZW50UmVjdGFuZ2xlLCBib3VuZHMsIHJldHVybkVkZ2UpKSA+XG4gICAgICAgICAgICBNYXRoLmFicyhfZ2V0UmVsYXRpdmVFZGdlRGlmZmVyZW5jZShlbGVtZW50UmVjdGFuZ2xlLCBib3VuZHMsIHJldHVybkVkZ2UgKiAtMSkpKSB7XG4gICAgICAgIHJldHVybiByZXR1cm5FZGdlICogLTE7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5FZGdlO1xufVxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCB0aGUgY29uc2lkZXJlZCBlZGdlIG9mIHRoZSBlbGVtZW50UmVjdGFuZ2xlIGlzIGx5aW5nIG9uIHRoZSBlZGdlIG9mIHRoZSBib3VuZHNcbiAqIEBwYXJhbSBlbGVtZW50UmVjdGFuZ2xlIFRoZSByZWN0YW5nbGUgd2hvc2UgZWRnZSB3ZSBhcmUgY29uc2lkZXJpbmdcbiAqIEBwYXJhbSBib3VuZHMgVGhlIHJlY3RhbmdsZSBtYXJraW5nIHRoZSBib3VuZHNcbiAqIEBwYXJhbSBlZGdlIFRoZSB0YXJnZXQgZWRnZSB3ZSdyZSBjb25zaWRlcmluZ1xuICogQHJldHVybnMgSWYgdGhlIHRhcmdldCBlZGdlIG9mIHRoZSBlbGVtZW50UmVjdGFuZ2xlIGlzIGluIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoYXQgZWRnZSBvZiB0aGUgYm91bmRzXG4gKi9cbmZ1bmN0aW9uIF9pc0VkZ2VPbkJvdW5kcyhlbGVtZW50UmVjdGFuZ2xlLCBlZGdlLCBib3VuZHMpIHtcbiAgICByZXR1cm4gYm91bmRzICE9PSB1bmRlZmluZWQgJiYgX2dldEVkZ2VWYWx1ZShlbGVtZW50UmVjdGFuZ2xlLCBlZGdlKSA9PT0gX2dldEVkZ2VWYWx1ZShib3VuZHMsIGVkZ2UpO1xufVxuLyoqXG4gKiBGaW5hbGl6ZXMgdGhlIGVsZW1lbnQgcG9zaXRpb24gYmFzZWQgb24gdGhlIGhvc3RFbGVtZW50LiBPbmx5IHJldHVybnMgdGhlXG4gKiByZWN0YW5nbGUgdmFsdWVzIHRvIHBvc2l0aW9uIHN1Y2ggdGhhdCB0aGV5IGFyZSBhbmNob3JlZCB0byB0aGUgdGFyZ2V0LlxuICogVGhpcyBoZWxwcyBwcmV2ZW50IHJlc2l6aW5nIGZyb20gbG9va2luZyB2ZXJ5IHN0cmFuZ2UuXG4gKiBGb3IgaW5zdGFuY2UsIGlmIHRoZSB0YXJnZXQgZWRnZSBpcyB0b3AgYW5kIGFsaWduZWQgd2l0aCB0aGUgbGVmdCBzaWRlIHRoZW5cbiAqIHRoZSBib3R0b20gYW5kIGxlZnQgdmFsdWVzIGFyZSByZXR1cm5lZCBzbyBhcyB0aGUgQ2FsbG91dCBzaHJpbmtzIGl0IHNocmlua3MgdG93YXJkcyB0aGF0IGNvcm5lci5cbiAqL1xuZnVuY3Rpb24gX2ZpbmFsaXplRWxlbWVudFBvc2l0aW9uKGVsZW1lbnRSZWN0YW5nbGUsIGhvc3RFbGVtZW50LCB0YXJnZXRFZGdlLCBib3VuZHMsIGFsaWdubWVudEVkZ2UsIGNvdmVyVGFyZ2V0LCBkb05vdEZpbmFsaXplUmV0dXJuRWRnZSwgZm9yY2VXaXRoaW5Cb3VuZHMpIHtcbiAgICB2YXIgcmV0dXJuVmFsdWUgPSB7fTtcbiAgICB2YXIgaG9zdFJlY3QgPSBfZ2V0UmVjdGFuZ2xlRnJvbUVsZW1lbnQoaG9zdEVsZW1lbnQpO1xuICAgIHZhciBlbGVtZW50RWRnZSA9IGNvdmVyVGFyZ2V0ID8gdGFyZ2V0RWRnZSA6IHRhcmdldEVkZ2UgKiAtMTtcbiAgICB2YXIgcmV0dXJuRWRnZSA9IGFsaWdubWVudEVkZ2UgPyBhbGlnbm1lbnRFZGdlIDogX2dldEZsYW5raW5nRWRnZXModGFyZ2V0RWRnZSkucG9zaXRpdmVFZGdlO1xuICAgIC8vIElmIHdlIGFyZSBmaW5hbGl6aW5nIHRoZSByZXR1cm4gZWRnZSwgY2hvb3NlIHRoZSBlZGdlIHN1Y2ggdGhhdCB3ZSBncm93IGF3YXkgZnJvbSB0aGUgYm91bmRzXG4gICAgLy8gSWYgd2UgYXJlIG5vdCBmaW5hbGl6aW5nIHRoZSByZXR1cm4gZWRnZSBidXQgdGhlIG9wcG9zaXRlIGVkZ2UgaXMgZmx1c2ggYWdhaW5zdCB0aGUgYm91bmRzLFxuICAgIC8vIGNob29zZSB0aGF0IGFzIHRoZSBhbmNob3IgZWRnZSBzbyB0aGUgZWxlbWVudCByZWN0IGNhbiBncm93IGF3YXkgZnJvbSB0aGUgYm91bmRzJyBlZGdlXG4gICAgLy8gSW4gdGhpcyBjYXNlIHRoZXJlIHdpbGwgbm90IGJlIGEgdmlzdWFsIGRpZmZlcmVuY2UgYmVjYXVzZSB0aGVyZSBpcyBubyBtb3JlIHJvb20gZm9yIHRoZSBlbGVtZW50UmVjdGFuZ2xlIHRvIGdyb3dcbiAgICAvLyBpbiB0aGUgdXN1YWwgZGlyZWN0aW9uXG4gICAgaWYgKCFkb05vdEZpbmFsaXplUmV0dXJuRWRnZSB8fCBfaXNFZGdlT25Cb3VuZHMoZWxlbWVudFJlY3RhbmdsZSwgZ2V0T3Bwb3NpdGVFZGdlKHJldHVybkVkZ2UpLCBib3VuZHMpKSB7XG4gICAgICAgIHJldHVybkVkZ2UgPSBfZmluYWxpemVSZXR1cm5FZGdlKGVsZW1lbnRSZWN0YW5nbGUsIHJldHVybkVkZ2UsIGJvdW5kcyk7XG4gICAgfVxuICAgIHJldHVyblZhbHVlW1JlY3RhbmdsZUVkZ2VbZWxlbWVudEVkZ2VdXSA9IF9nZXRSZWxhdGl2ZUVkZ2VEaWZmZXJlbmNlKGVsZW1lbnRSZWN0YW5nbGUsIGhvc3RSZWN0LCBlbGVtZW50RWRnZSk7XG4gICAgcmV0dXJuVmFsdWVbUmVjdGFuZ2xlRWRnZVtyZXR1cm5FZGdlXV0gPSBfZ2V0UmVsYXRpdmVFZGdlRGlmZmVyZW5jZShlbGVtZW50UmVjdGFuZ2xlLCBob3N0UmVjdCwgcmV0dXJuRWRnZSk7XG4gICAgLy8gaWYgdGhlIHBvc2l0aW9uZWQgZWxlbWVudCB3aWxsIHN0aWxsIG92ZXJmbG93LCByZXR1cm4gYWxsIGZvdXIgZWRnZXMgd2l0aCBpbi1ib3VuZHMgdmFsdWVzXG4gICAgaWYgKGZvcmNlV2l0aGluQm91bmRzKSB7XG4gICAgICAgIHJldHVyblZhbHVlW1JlY3RhbmdsZUVkZ2VbZWxlbWVudEVkZ2UgKiAtMV1dID0gX2dldFJlbGF0aXZlRWRnZURpZmZlcmVuY2UoZWxlbWVudFJlY3RhbmdsZSwgaG9zdFJlY3QsIGVsZW1lbnRFZGdlICogLTEpO1xuICAgICAgICByZXR1cm5WYWx1ZVtSZWN0YW5nbGVFZGdlW3JldHVybkVkZ2UgKiAtMV1dID0gX2dldFJlbGF0aXZlRWRnZURpZmZlcmVuY2UoZWxlbWVudFJlY3RhbmdsZSwgaG9zdFJlY3QsIHJldHVybkVkZ2UgKiAtMSk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cbi8vIFNpbmNlIHRoZSBiZWFrIGlzIHJvdGF0ZWQgNDUgZGVncmVlcyB0aGUgYWN0dWFsIGhlaWdodC93aWR0aCBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBkaWFnb25hbC5cbi8vIFdlIHN0aWxsIHdhbnQgdG8gcG9zaXRpb24gdGhlIGJlYWsgYmFzZWQgb24gaXQncyBtaWRwb2ludCB3aGljaCBkb2VzIG5vdCBjaGFuZ2UuIEl0IHdpbGxcbi8vIGJlIGF0IChiZWFrd2lkdGggLyAyLCBiZWFrd2lkdGggLyAyKVxuZnVuY3Rpb24gX2NhbGN1bGF0ZUFjdHVhbEJlYWtXaWR0aEluUGl4ZWxzKGJlYWtXaWR0aCkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoYmVha1dpZHRoICogYmVha1dpZHRoICogMik7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGFwcHJvcHJpYXRlIElQb3NpdGlvbkRhdGEgYmFzZWQgb24gdGhlIHByb3BzIGFsdGVyZWQgZm9yIFJUTC5cbiAqIElmIGRpcmVjdGlvbmFsSGludEZvclJUTCBpcyBwYXNzZWQgaW4gdGhhdCBpcyB1c2VkIGlmIHRoZSBwYWdlIGlzIFJUTC5cbiAqIElmIGRpcmVjdGlvbmFsSGludCBpcyBzcGVjaWZpZWQsIG5vIGRpcmVjdGlvbmFsSGludEZvclJUTCBpcyBhdmFpbGFibGUsIGFuZCB0aGUgcGFnZSBpcyBSVEwsIHRoZSBoaW50IHdpbGwgYmVcbiAqIGZsaXBwZWQgKGUuZy4gYm90dG9tTGVmdEVkZ2Ugd291bGQgYmVjb21lIGJvdHRvbVJpZ2h0RWRnZSkuXG4gKlxuICogSWYgdGhlcmUgaXMgbm8gZGlyZWN0aW9uYWxIaW50IHBhc3NlZCBpbiwgYm90dG9tQXV0b0VkZ2UgaXMgY2hvc2VuIGF1dG9tYXRpY2FsbHkuXG4gKi9cbmZ1bmN0aW9uIF9nZXRQb3NpdGlvbkRhdGEoZGlyZWN0aW9uYWxIaW50LCBkaXJlY3Rpb25hbEhpbnRGb3JSVEwsIHByZXZpb3VzUG9zaXRpb25zKSB7XG4gICAgaWYgKGRpcmVjdGlvbmFsSGludCA9PT0gdm9pZCAwKSB7IGRpcmVjdGlvbmFsSGludCA9IERpcmVjdGlvbmFsSGludC5ib3R0b21BdXRvRWRnZTsgfVxuICAgIGlmIChwcmV2aW91c1Bvc2l0aW9ucykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWxpZ25tZW50RWRnZTogcHJldmlvdXNQb3NpdGlvbnMuYWxpZ25tZW50RWRnZSxcbiAgICAgICAgICAgIGlzQXV0bzogcHJldmlvdXNQb3NpdGlvbnMuaXNBdXRvLFxuICAgICAgICAgICAgdGFyZ2V0RWRnZTogcHJldmlvdXNQb3NpdGlvbnMudGFyZ2V0RWRnZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgdmFyIHBvc2l0aW9uSW5mb3JtYXRpb24gPSBfX2Fzc2lnbih7fSwgRGlyZWN0aW9uYWxEaWN0aW9uYXJ5W2RpcmVjdGlvbmFsSGludF0pO1xuICAgIGlmIChnZXRSVEwoKSkge1xuICAgICAgICAvLyBJZiBhbGlnbm1lbnQgZWRnZSBleGlzdHMgYW5kIHRoYXQgYWxpZ25tZW50IGVkZ2UgaXMgLTIgb3IgMiwgcmlnaHQgb3IgbGVmdCwgdGhlbiBmbGlwIGl0LlxuICAgICAgICBpZiAocG9zaXRpb25JbmZvcm1hdGlvbi5hbGlnbm1lbnRFZGdlICYmIHBvc2l0aW9uSW5mb3JtYXRpb24uYWxpZ25tZW50RWRnZSAlIDIgPT09IDApIHtcbiAgICAgICAgICAgIHBvc2l0aW9uSW5mb3JtYXRpb24uYWxpZ25tZW50RWRnZSA9IHBvc2l0aW9uSW5mb3JtYXRpb24uYWxpZ25tZW50RWRnZSAqIC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3Rpb25hbEhpbnRGb3JSVEwgIT09IHVuZGVmaW5lZCA/IERpcmVjdGlvbmFsRGljdGlvbmFyeVtkaXJlY3Rpb25hbEhpbnRGb3JSVExdIDogcG9zaXRpb25JbmZvcm1hdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHBvc2l0aW9uSW5mb3JtYXRpb247XG59XG4vKipcbiAqIEdldHMgdGhlIGFsaWdubWVudCBkYXRhIGZvciB0aGUgZ2l2ZW4gaW5mb3JtYXRpb24uIFRoaXMgb25seSByZWFsbHkgbWF0dGVycyBpZiB0aGUgcG9zaXRpb25pbmcgaXMgQXV0by5cbiAqIElmIGl0IGlzIGF1dG8gdGhlbiB0aGUgYWxpZ25tZW50RWRnZSBzaG91bGQgYmUgY2hvc2VuIGJhc2VkIG9uIHRoZSB0YXJnZXQgZWRnZSdzIHBvc2l0aW9uIHJlbGF0aXZlIHRvXG4gKiB0aGUgY2VudGVyIG9mIHRoZSBwYWdlLlxuICovXG5mdW5jdGlvbiBfZ2V0QWxpZ25tZW50RGF0YShwb3NpdGlvbkRhdGEsIHRhcmdldCwgYm91bmRpbmdSZWN0LCBjb3ZlclRhcmdldCwgYWxpZ25UYXJnZXRFZGdlKSB7XG4gICAgaWYgKHBvc2l0aW9uRGF0YS5pc0F1dG8pIHtcbiAgICAgICAgcG9zaXRpb25EYXRhLmFsaWdubWVudEVkZ2UgPSBnZXRDbG9zZXN0RWRnZShwb3NpdGlvbkRhdGEudGFyZ2V0RWRnZSwgdGFyZ2V0LCBib3VuZGluZ1JlY3QpO1xuICAgIH1cbiAgICBwb3NpdGlvbkRhdGEuYWxpZ25UYXJnZXRFZGdlID0gYWxpZ25UYXJnZXRFZGdlO1xuICAgIHJldHVybiBwb3NpdGlvbkRhdGE7XG59XG5mdW5jdGlvbiBnZXRDbG9zZXN0RWRnZSh0YXJnZXRFZGdlLCB0YXJnZXQsIGJvdW5kaW5nUmVjdCkge1xuICAgIHZhciB0YXJnZXRDZW50ZXIgPSBfZ2V0Q2VudGVyVmFsdWUodGFyZ2V0LCB0YXJnZXRFZGdlKTtcbiAgICB2YXIgYm91bmRpbmdDZW50ZXIgPSBfZ2V0Q2VudGVyVmFsdWUoYm91bmRpbmdSZWN0LCB0YXJnZXRFZGdlKTtcbiAgICB2YXIgX2EgPSBfZ2V0RmxhbmtpbmdFZGdlcyh0YXJnZXRFZGdlKSwgcG9zaXRpdmVFZGdlID0gX2EucG9zaXRpdmVFZGdlLCBuZWdhdGl2ZUVkZ2UgPSBfYS5uZWdhdGl2ZUVkZ2U7XG4gICAgaWYgKHRhcmdldENlbnRlciA8PSBib3VuZGluZ0NlbnRlcikge1xuICAgICAgICByZXR1cm4gcG9zaXRpdmVFZGdlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5lZ2F0aXZlRWRnZTtcbiAgICB9XG59XG5mdW5jdGlvbiBfcG9zaXRpb25FbGVtZW50V2l0aGluQm91bmRzKGVsZW1lbnRUb1Bvc2l0aW9uLCB0YXJnZXQsIGJvdW5kaW5nLCBwb3NpdGlvbkRhdGEsIGdhcCwgZGlyZWN0aW9uYWxIaW50Rml4ZWQsIGNvdmVyVGFyZ2V0KSB7XG4gICAgdmFyIGVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiA9IF9lc3RpbWF0ZVBvc2l0aW9uKGVsZW1lbnRUb1Bvc2l0aW9uLCB0YXJnZXQsIHBvc2l0aW9uRGF0YSwgZ2FwLCBjb3ZlclRhcmdldCk7XG4gICAgaWYgKF9pc1JlY3RhbmdsZVdpdGhpbkJvdW5kcyhlc3RpbWF0ZWRFbGVtZW50UG9zaXRpb24sIGJvdW5kaW5nKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZWxlbWVudFJlY3RhbmdsZTogZXN0aW1hdGVkRWxlbWVudFBvc2l0aW9uLFxuICAgICAgICAgICAgdGFyZ2V0RWRnZTogcG9zaXRpb25EYXRhLnRhcmdldEVkZ2UsXG4gICAgICAgICAgICBhbGlnbm1lbnRFZGdlOiBwb3NpdGlvbkRhdGEuYWxpZ25tZW50RWRnZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBfYWRqdXN0Rml0V2l0aGluQm91bmRzKGVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiwgdGFyZ2V0LCBib3VuZGluZywgcG9zaXRpb25EYXRhLCBnYXAsIGRpcmVjdGlvbmFsSGludEZpeGVkLCBjb3ZlclRhcmdldCk7XG4gICAgfVxufVxuZnVuY3Rpb24gX2ZpbmFsaXplQmVha1Bvc2l0aW9uKGVsZW1lbnRQb3NpdGlvbiwgcG9zaXRpb25lZEJlYWssIGJvdW5kcykge1xuICAgIHZhciB0YXJnZXRFZGdlID0gZWxlbWVudFBvc2l0aW9uLnRhcmdldEVkZ2UgKiAtMTtcbiAgICAvLyBUaGUgXCJob3N0XCIgZWxlbWVudCB0aGF0IHdlIHdpbGwgdXNlIHRvIGhlbHAgcG9zaXRpb24gdGhlIGJlYWsuXG4gICAgdmFyIGFjdHVhbEVsZW1lbnQgPSBuZXcgUmVjdGFuZ2xlKDAsIGVsZW1lbnRQb3NpdGlvbi5lbGVtZW50UmVjdGFuZ2xlLndpZHRoLCAwLCBlbGVtZW50UG9zaXRpb24uZWxlbWVudFJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIHZhciByZXR1cm5WYWx1ZSA9IHt9O1xuICAgIHZhciByZXR1cm5FZGdlID0gX2ZpbmFsaXplUmV0dXJuRWRnZShlbGVtZW50UG9zaXRpb24uZWxlbWVudFJlY3RhbmdsZSwgZWxlbWVudFBvc2l0aW9uLmFsaWdubWVudEVkZ2UgPyBlbGVtZW50UG9zaXRpb24uYWxpZ25tZW50RWRnZSA6IF9nZXRGbGFua2luZ0VkZ2VzKHRhcmdldEVkZ2UpLnBvc2l0aXZlRWRnZSwgYm91bmRzKTtcbiAgICAvLyBvbmx5IHNob3cgdGhlIGJlYWsgaWYgdGhlIGNhbGxvdXQgaXMgbm90IGZ1bGx5IGNvdmVyaW5nIHRoZSB0YXJnZXRcbiAgICB2YXIgYmVha0VkZ2VEaWZmZXJlbmNlID0gX2dldFJlbGF0aXZlRWRnZURpZmZlcmVuY2UoZWxlbWVudFBvc2l0aW9uLmVsZW1lbnRSZWN0YW5nbGUsIGVsZW1lbnRQb3NpdGlvbi50YXJnZXRSZWN0YW5nbGUsIHRhcmdldEVkZ2UpO1xuICAgIHZhciBzaG93QmVhayA9IGJlYWtFZGdlRGlmZmVyZW5jZSA+IE1hdGguYWJzKF9nZXRFZGdlVmFsdWUocG9zaXRpb25lZEJlYWssIHRhcmdldEVkZ2UpKTtcbiAgICByZXR1cm5WYWx1ZVtSZWN0YW5nbGVFZGdlW3RhcmdldEVkZ2VdXSA9IF9nZXRFZGdlVmFsdWUocG9zaXRpb25lZEJlYWssIHRhcmdldEVkZ2UpO1xuICAgIHJldHVyblZhbHVlW1JlY3RhbmdsZUVkZ2VbcmV0dXJuRWRnZV1dID0gX2dldFJlbGF0aXZlRWRnZURpZmZlcmVuY2UocG9zaXRpb25lZEJlYWssIGFjdHVhbEVsZW1lbnQsIHJldHVybkVkZ2UpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGVsZW1lbnRQb3NpdGlvbjogX19hc3NpZ24oe30sIHJldHVyblZhbHVlKSxcbiAgICAgICAgY2xvc2VzdEVkZ2U6IGdldENsb3Nlc3RFZGdlKGVsZW1lbnRQb3NpdGlvbi50YXJnZXRFZGdlLCBwb3NpdGlvbmVkQmVhaywgYWN0dWFsRWxlbWVudCksXG4gICAgICAgIHRhcmdldEVkZ2U6IHRhcmdldEVkZ2UsXG4gICAgICAgIGhpZGVCZWFrOiAhc2hvd0JlYWssXG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9wb3NpdGlvbkJlYWsoYmVha1dpZHRoLCBlbGVtZW50UG9zaXRpb24pIHtcbiAgICB2YXIgdGFyZ2V0ID0gZWxlbWVudFBvc2l0aW9uLnRhcmdldFJlY3RhbmdsZTtcbiAgICAvKipcbiAgICAgKiBOb3RlIGFib3V0IGJlYWsgcG9zaXRpb25pbmc6IFRoZSBhY3R1YWwgYmVhayB3aWR0aCBvbmx5IG1hdHRlcnMgZm9yIGdldHRpbmcgdGhlIGdhcCBiZXR3ZWVuIHRoZSBjYWxsb3V0IGFuZFxuICAgICAqIHRhcmdldCwgaXQgZG9lcyBub3QgaW1wYWN0IHRoZSBiZWFrIHBsYWNlbWVudCB3aXRoaW4gdGhlIGNhbGxvdXQuIEZvciBleGFtcGxlIGV4YW1wbGUsIGlmIHRoZSBiZWFrV2lkdGggaXMgOCxcbiAgICAgKiB0aGVuIHRoZSBhY3R1YWwgYmVha1dpZHRoIGlzIHNxcnJvb3QoOF4yICsgOF4yKSA9IDExLjMxeDExLjMxLiBTbyB0aGUgY2FsbG91dCB3aWxsIG5lZWQgdG8gYmUgYW4gZXh0cmEgMyBwaXhlbHNcbiAgICAgKiBhd2F5IGZyb20gaXRzIHRhcmdldC4gV2hpbGUgdGhlIGJlYWsgaXMgYmVpbmcgcG9zaXRpb25lZCBpbiB0aGUgY2FsbG91dCBpdCBzdGlsbCBhY3RzIGFzIHRob3VnaCBpdCB3ZXJlIDh4OC5cbiAgICAgKi9cbiAgICB2YXIgX2EgPSBfZ2V0RmxhbmtpbmdFZGdlcyhlbGVtZW50UG9zaXRpb24udGFyZ2V0RWRnZSksIHBvc2l0aXZlRWRnZSA9IF9hLnBvc2l0aXZlRWRnZSwgbmVnYXRpdmVFZGdlID0gX2EubmVnYXRpdmVFZGdlO1xuICAgIHZhciBiZWFrVGFyZ2V0UG9pbnQgPSBfZ2V0Q2VudGVyVmFsdWUodGFyZ2V0LCBlbGVtZW50UG9zaXRpb24udGFyZ2V0RWRnZSk7XG4gICAgdmFyIGVsZW1lbnRCb3VuZHMgPSBuZXcgUmVjdGFuZ2xlKGJlYWtXaWR0aCAvIDIsIGVsZW1lbnRQb3NpdGlvbi5lbGVtZW50UmVjdGFuZ2xlLndpZHRoIC0gYmVha1dpZHRoIC8gMiwgYmVha1dpZHRoIC8gMiwgZWxlbWVudFBvc2l0aW9uLmVsZW1lbnRSZWN0YW5nbGUuaGVpZ2h0IC0gYmVha1dpZHRoIC8gMik7XG4gICAgdmFyIGJlYWtQb3NpdGlvbiA9IG5ldyBSZWN0YW5nbGUoMCwgYmVha1dpZHRoLCAwLCBiZWFrV2lkdGgpO1xuICAgIGJlYWtQb3NpdGlvbiA9IF9tb3ZlRWRnZShiZWFrUG9zaXRpb24sIGVsZW1lbnRQb3NpdGlvbi50YXJnZXRFZGdlICogLTEsIC1iZWFrV2lkdGggLyAyKTtcbiAgICBiZWFrUG9zaXRpb24gPSBfY2VudGVyRWRnZVRvUG9pbnQoYmVha1Bvc2l0aW9uLCBlbGVtZW50UG9zaXRpb24udGFyZ2V0RWRnZSAqIC0xLCBiZWFrVGFyZ2V0UG9pbnQgLSBfZ2V0UmVsYXRpdmVSZWN0RWRnZVZhbHVlKHBvc2l0aXZlRWRnZSwgZWxlbWVudFBvc2l0aW9uLmVsZW1lbnRSZWN0YW5nbGUpKTtcbiAgICBpZiAoIV9pc0VkZ2VJbkJvdW5kcyhiZWFrUG9zaXRpb24sIGVsZW1lbnRCb3VuZHMsIHBvc2l0aXZlRWRnZSkpIHtcbiAgICAgICAgYmVha1Bvc2l0aW9uID0gX2FsaWduRWRnZXMoYmVha1Bvc2l0aW9uLCBlbGVtZW50Qm91bmRzLCBwb3NpdGl2ZUVkZ2UpO1xuICAgIH1cbiAgICBlbHNlIGlmICghX2lzRWRnZUluQm91bmRzKGJlYWtQb3NpdGlvbiwgZWxlbWVudEJvdW5kcywgbmVnYXRpdmVFZGdlKSkge1xuICAgICAgICBiZWFrUG9zaXRpb24gPSBfYWxpZ25FZGdlcyhiZWFrUG9zaXRpb24sIGVsZW1lbnRCb3VuZHMsIG5lZ2F0aXZlRWRnZSk7XG4gICAgfVxuICAgIHJldHVybiBiZWFrUG9zaXRpb247XG59XG5mdW5jdGlvbiBfZ2V0UmVjdGFuZ2xlRnJvbUVsZW1lbnQoZWxlbWVudCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gbmV3IFJlY3RhbmdsZShjbGllbnRSZWN0LmxlZnQsIGNsaWVudFJlY3QucmlnaHQsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LmJvdHRvbSk7XG59XG5mdW5jdGlvbiBfZ2V0UmVjdGFuZ2xlRnJvbUlSZWN0KHJlY3QpIHtcbiAgICByZXR1cm4gbmV3IFJlY3RhbmdsZShyZWN0LmxlZnQsIHJlY3QucmlnaHQsIHJlY3QudG9wLCByZWN0LmJvdHRvbSk7XG59XG5mdW5jdGlvbiBfZ2V0VGFyZ2V0UmVjdChib3VuZHMsIHRhcmdldCkge1xuICAgIHZhciB0YXJnZXRSZWN0YW5nbGU7XG4gICAgaWYgKHRhcmdldCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtYm9vbGVhbi1jYXN0XG4gICAgICAgIGlmICghIXRhcmdldC5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgdmFyIGV2ID0gdGFyZ2V0O1xuICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlID0gbmV3IFJlY3RhbmdsZShldi5jbGllbnRYLCBldi5jbGllbnRYLCBldi5jbGllbnRZLCBldi5jbGllbnRZKTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRyYS1ib29sZWFuLWNhc3RcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghIXRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZSA9IF9nZXRSZWN0YW5nbGVGcm9tRWxlbWVudCh0YXJnZXQpO1xuICAgICAgICAgICAgLy8gSFRNTEltZ0VsZW1lbnRzIGNhbiBoYXZlIHggYW5kIHkgdmFsdWVzLiBUaGUgY2hlY2sgZm9yIGl0IGJlaW5nIGEgcG9pbnQgbXVzdCBnbyBsYXN0LlxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHJlY3RPclBvaW50ID0gdGFyZ2V0O1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICB2YXIgbGVmdCA9IHJlY3RPclBvaW50LmxlZnQgfHwgcmVjdE9yUG9pbnQueDtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgdmFyIHRvcF8xID0gcmVjdE9yUG9pbnQudG9wIHx8IHJlY3RPclBvaW50Lnk7XG4gICAgICAgICAgICB2YXIgcmlnaHQgPSByZWN0T3JQb2ludC5yaWdodCB8fCBsZWZ0O1xuICAgICAgICAgICAgdmFyIGJvdHRvbSA9IHJlY3RPclBvaW50LmJvdHRvbSB8fCB0b3BfMTtcbiAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZSA9IG5ldyBSZWN0YW5nbGUobGVmdCwgcmlnaHQsIHRvcF8xLCBib3R0b20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghX2lzUmVjdGFuZ2xlV2l0aGluQm91bmRzKHRhcmdldFJlY3RhbmdsZSwgYm91bmRzKSkge1xuICAgICAgICAgICAgdmFyIG91dE9mQm91bmRzID0gX2dldE91dE9mQm91bmRzRWRnZXModGFyZ2V0UmVjdGFuZ2xlLCBib3VuZHMpO1xuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBvdXRPZkJvdW5kc18xID0gb3V0T2ZCb3VuZHM7IF9pIDwgb3V0T2ZCb3VuZHNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gb3V0T2ZCb3VuZHNfMVtfaV07XG4gICAgICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlW1JlY3RhbmdsZUVkZ2VbZGlyZWN0aW9uXV0gPSBib3VuZHNbUmVjdGFuZ2xlRWRnZVtkaXJlY3Rpb25dXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlID0gbmV3IFJlY3RhbmdsZSgwLCAwLCAwLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFJlY3RhbmdsZTtcbn1cbi8qKlxuICogSWYgbWF4IGhlaWdodCBpcyBsZXNzIHRoYW4gemVybyBpdCByZXR1cm5zIHRoZSBib3VuZHMgaGVpZ2h0IGluc3RlYWQuXG4gKi9cbmZ1bmN0aW9uIF9nZXRNYXhIZWlnaHRGcm9tVGFyZ2V0UmVjdGFuZ2xlKHRhcmdldFJlY3RhbmdsZSwgdGFyZ2V0RWRnZSwgZ2FwU3BhY2UsIGJvdW5kcywgY292ZXJUYXJnZXQpIHtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gMDtcbiAgICB2YXIgZGlyZWN0aW9uYWxIaW50ID0gRGlyZWN0aW9uYWxEaWN0aW9uYXJ5W3RhcmdldEVkZ2VdO1xuICAgIC8vIElmIGNvdmVyIHRhcmdldCBpcyBzZXQsIHRoZW4gdGhlIG1heCBoZWlnaHQgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIG9wcG9zaXRlIG9mIHRoZSB0YXJnZXQgZWRnZSBzaW5jZVxuICAgIC8vIHRoYXQncyB0aGUgZGlyZWN0aW9uIHRoYXQgdGhlIGNhbGxvdXQgd2lsbCBleHBhbmQgaW4uXG4gICAgLy8gRm9yIGluc3RhbmNlLCBpZiB0aGUgZGlyZWN0aW9uYWxoaW50IGlzIGJvdHRvbUxlZnRFZGdlIHRoZW4gdGhlIGNhbGxvdXQgd2lsbCBwb3NpdGlvbiBzbyBpdCdzIGJvdHRvbSBlZGdlXG4gICAgLy8gaXMgYWxpZ25lZCB3aXRoIHRoZSBib3R0b20gb2YgdGhlIHRhcmdldCBhbmQgZXhwYW5kIHVwIHRvd2FyZHMgdGhlIHRvcCBvZiB0aGUgc2NyZWVuIGFuZCB0aGUgY2FsY3VsYXRlZCBtYXggaGVpZ2h0XG4gICAgLy8gaXMgKGJvdHRvbSBvZiB0YXJnZXQpIC0gKHRvcCBvZiBzY3JlZW4pIC0gZ2FwU3BhY2UuXG4gICAgdmFyIHRhcmdldCA9IGNvdmVyVGFyZ2V0ID8gZGlyZWN0aW9uYWxIaW50LnRhcmdldEVkZ2UgKiAtMSA6IGRpcmVjdGlvbmFsSGludC50YXJnZXRFZGdlO1xuICAgIGlmICh0YXJnZXQgPT09IFJlY3RhbmdsZUVkZ2UudG9wKSB7XG4gICAgICAgIG1heEhlaWdodCA9IF9nZXRFZGdlVmFsdWUodGFyZ2V0UmVjdGFuZ2xlLCBkaXJlY3Rpb25hbEhpbnQudGFyZ2V0RWRnZSkgLSBib3VuZHMudG9wIC0gZ2FwU3BhY2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRhcmdldCA9PT0gUmVjdGFuZ2xlRWRnZS5ib3R0b20pIHtcbiAgICAgICAgbWF4SGVpZ2h0ID0gYm91bmRzLmJvdHRvbSAtIF9nZXRFZGdlVmFsdWUodGFyZ2V0UmVjdGFuZ2xlLCBkaXJlY3Rpb25hbEhpbnQudGFyZ2V0RWRnZSkgLSBnYXBTcGFjZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG1heEhlaWdodCA9IGJvdW5kcy5ib3R0b20gLSB0YXJnZXRSZWN0YW5nbGUudG9wIC0gZ2FwU3BhY2U7XG4gICAgfVxuICAgIHJldHVybiBtYXhIZWlnaHQgPiAwID8gbWF4SGVpZ2h0IDogYm91bmRzLmhlaWdodDtcbn1cbmZ1bmN0aW9uIF9wb3NpdGlvbkVsZW1lbnRSZWxhdGl2ZShwcm9wcywgZWxlbWVudFRvUG9zaXRpb24sIGJvdW5kaW5nUmVjdCwgcHJldmlvdXNQb3NpdGlvbnMpIHtcbiAgICB2YXIgZ2FwID0gcHJvcHMuZ2FwU3BhY2UgPyBwcm9wcy5nYXBTcGFjZSA6IDA7XG4gICAgdmFyIHRhcmdldFJlY3QgPSBfZ2V0VGFyZ2V0UmVjdChib3VuZGluZ1JlY3QsIHByb3BzLnRhcmdldCk7XG4gICAgdmFyIHBvc2l0aW9uRGF0YSA9IF9nZXRBbGlnbm1lbnREYXRhKF9nZXRQb3NpdGlvbkRhdGEocHJvcHMuZGlyZWN0aW9uYWxIaW50LCBwcm9wcy5kaXJlY3Rpb25hbEhpbnRGb3JSVEwsIHByZXZpb3VzUG9zaXRpb25zKSwgdGFyZ2V0UmVjdCwgYm91bmRpbmdSZWN0LCBwcm9wcy5jb3ZlclRhcmdldCwgcHJvcHMuYWxpZ25UYXJnZXRFZGdlKTtcbiAgICB2YXIgcG9zaXRpb25lZEVsZW1lbnQgPSBfcG9zaXRpb25FbGVtZW50V2l0aGluQm91bmRzKF9nZXRSZWN0YW5nbGVGcm9tRWxlbWVudChlbGVtZW50VG9Qb3NpdGlvbiksIHRhcmdldFJlY3QsIGJvdW5kaW5nUmVjdCwgcG9zaXRpb25EYXRhLCBnYXAsIHByb3BzLmRpcmVjdGlvbmFsSGludEZpeGVkLCBwcm9wcy5jb3ZlclRhcmdldCk7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBwb3NpdGlvbmVkRWxlbWVudCksIHsgdGFyZ2V0UmVjdGFuZ2xlOiB0YXJnZXRSZWN0IH0pO1xufVxuZnVuY3Rpb24gX2ZpbmFsaXplUG9zaXRpb25EYXRhKHBvc2l0aW9uZWRFbGVtZW50LCBob3N0RWxlbWVudCwgYm91bmRzLCBjb3ZlclRhcmdldCwgZG9Ob3RGaW5hbGl6ZVJldHVybkVkZ2UpIHtcbiAgICB2YXIgZmluYWxpemVkRWxlbWVudCA9IF9maW5hbGl6ZUVsZW1lbnRQb3NpdGlvbihwb3NpdGlvbmVkRWxlbWVudC5lbGVtZW50UmVjdGFuZ2xlLCBob3N0RWxlbWVudCwgcG9zaXRpb25lZEVsZW1lbnQudGFyZ2V0RWRnZSwgYm91bmRzLCBwb3NpdGlvbmVkRWxlbWVudC5hbGlnbm1lbnRFZGdlLCBjb3ZlclRhcmdldCwgZG9Ob3RGaW5hbGl6ZVJldHVybkVkZ2UsIHBvc2l0aW9uZWRFbGVtZW50LmZvcmNlZEluQm91bmRzKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBlbGVtZW50UG9zaXRpb246IGZpbmFsaXplZEVsZW1lbnQsXG4gICAgICAgIHRhcmdldEVkZ2U6IHBvc2l0aW9uZWRFbGVtZW50LnRhcmdldEVkZ2UsXG4gICAgICAgIGFsaWdubWVudEVkZ2U6IHBvc2l0aW9uZWRFbGVtZW50LmFsaWdubWVudEVkZ2UsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIF9wb3NpdGlvbkVsZW1lbnQocHJvcHMsIGhvc3RFbGVtZW50LCBlbGVtZW50VG9Qb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbnMpIHtcbiAgICB2YXIgYm91bmRpbmdSZWN0ID0gcHJvcHMuYm91bmRzXG4gICAgICAgID8gX2dldFJlY3RhbmdsZUZyb21JUmVjdChwcm9wcy5ib3VuZHMpXG4gICAgICAgIDogbmV3IFJlY3RhbmdsZSgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldFNjcm9sbGJhcldpZHRoKCksIDAsIHdpbmRvdy5pbm5lckhlaWdodCk7XG4gICAgdmFyIHBvc2l0aW9uZWRFbGVtZW50ID0gX3Bvc2l0aW9uRWxlbWVudFJlbGF0aXZlKHByb3BzLCBlbGVtZW50VG9Qb3NpdGlvbiwgYm91bmRpbmdSZWN0LCBwcmV2aW91c1Bvc2l0aW9ucyk7XG4gICAgcmV0dXJuIF9maW5hbGl6ZVBvc2l0aW9uRGF0YShwb3NpdGlvbmVkRWxlbWVudCwgaG9zdEVsZW1lbnQsIGJvdW5kaW5nUmVjdCwgcHJvcHMuY292ZXJUYXJnZXQpO1xufVxuZnVuY3Rpb24gX3Bvc2l0aW9uQ2FsbG91dChwcm9wcywgaG9zdEVsZW1lbnQsIGNhbGxvdXQsIHByZXZpb3VzUG9zaXRpb25zLCBkb05vdEZpbmFsaXplUmV0dXJuRWRnZSkge1xuICAgIHZhciBiZWFrV2lkdGggPSBwcm9wcy5pc0JlYWtWaXNpYmxlID8gcHJvcHMuYmVha1dpZHRoIHx8IDAgOiAwO1xuICAgIHZhciBnYXAgPSBfY2FsY3VsYXRlQWN0dWFsQmVha1dpZHRoSW5QaXhlbHMoYmVha1dpZHRoKSAvIDIgKyAocHJvcHMuZ2FwU3BhY2UgPyBwcm9wcy5nYXBTcGFjZSA6IDApO1xuICAgIHZhciBwb3NpdGlvblByb3BzID0gcHJvcHM7XG4gICAgcG9zaXRpb25Qcm9wcy5nYXBTcGFjZSA9IGdhcDtcbiAgICB2YXIgYm91bmRpbmdSZWN0ID0gcHJvcHMuYm91bmRzXG4gICAgICAgID8gX2dldFJlY3RhbmdsZUZyb21JUmVjdChwcm9wcy5ib3VuZHMpXG4gICAgICAgIDogbmV3IFJlY3RhbmdsZSgwLCB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldFNjcm9sbGJhcldpZHRoKCksIDAsIHdpbmRvdy5pbm5lckhlaWdodCk7XG4gICAgdmFyIHBvc2l0aW9uZWRFbGVtZW50ID0gX3Bvc2l0aW9uRWxlbWVudFJlbGF0aXZlKHBvc2l0aW9uUHJvcHMsIGNhbGxvdXQsIGJvdW5kaW5nUmVjdCwgcHJldmlvdXNQb3NpdGlvbnMpO1xuICAgIHZhciBiZWFrUG9zaXRpb25lZCA9IF9wb3NpdGlvbkJlYWsoYmVha1dpZHRoLCBwb3NpdGlvbmVkRWxlbWVudCk7XG4gICAgdmFyIGZpbmFsaXplZEJlYWtQb3NpdGlvbiA9IF9maW5hbGl6ZUJlYWtQb3NpdGlvbihwb3NpdGlvbmVkRWxlbWVudCwgYmVha1Bvc2l0aW9uZWQsIGJvdW5kaW5nUmVjdCk7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBfZmluYWxpemVQb3NpdGlvbkRhdGEocG9zaXRpb25lZEVsZW1lbnQsIGhvc3RFbGVtZW50LCBib3VuZGluZ1JlY3QsIHByb3BzLmNvdmVyVGFyZ2V0LCBkb05vdEZpbmFsaXplUmV0dXJuRWRnZSkpLCB7IGJlYWtQb3NpdGlvbjogZmluYWxpemVkQmVha1Bvc2l0aW9uIH0pO1xufVxuZnVuY3Rpb24gX3Bvc2l0aW9uQ2FyZChwcm9wcywgaG9zdEVsZW1lbnQsIGNhbGxvdXQsIHByZXZpb3VzUG9zaXRpb25zKSB7XG4gICAgcmV0dXJuIF9wb3NpdGlvbkNhbGxvdXQocHJvcHMsIGhvc3RFbGVtZW50LCBjYWxsb3V0LCBwcmV2aW91c1Bvc2l0aW9ucywgdHJ1ZSk7XG59XG4vLyBFTkQgUFJJVkFURSBGVU5DVElPTlNcbmV4cG9ydCB2YXIgX19wb3NpdGlvbmluZ1Rlc3RQYWNrYWdlID0ge1xuICAgIF9maW5hbGl6ZVBvc2l0aW9uRGF0YTogX2ZpbmFsaXplUG9zaXRpb25EYXRhLFxuICAgIF9maW5hbGl6ZUJlYWtQb3NpdGlvbjogX2ZpbmFsaXplQmVha1Bvc2l0aW9uLFxuICAgIF9jYWxjdWxhdGVBY3R1YWxCZWFrV2lkdGhJblBpeGVsczogX2NhbGN1bGF0ZUFjdHVhbEJlYWtXaWR0aEluUGl4ZWxzLFxuICAgIF9wb3NpdGlvbkVsZW1lbnRXaXRoaW5Cb3VuZHM6IF9wb3NpdGlvbkVsZW1lbnRXaXRoaW5Cb3VuZHMsXG4gICAgX3Bvc2l0aW9uQmVhazogX3Bvc2l0aW9uQmVhayxcbiAgICBfZ2V0UG9zaXRpb25EYXRhOiBfZ2V0UG9zaXRpb25EYXRhLFxuICAgIF9nZXRNYXhIZWlnaHRGcm9tVGFyZ2V0UmVjdGFuZ2xlOiBfZ2V0TWF4SGVpZ2h0RnJvbVRhcmdldFJlY3RhbmdsZSxcbn07XG4vKipcbiAqIFVzZWQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gcG9zaXRpb25pbmcgcHJvcHMuXG4gKiBJZiBwb3NpdGlvbmluZyBoYXMgYmVlbiBjb21wbGV0ZWQgYmVmb3JlLCBwcmV2aW91c1Bvc2l0aW9ucyBjYW4gYmUgcGFzc2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBwb3NpdGlvbmluZyBlbGVtZW50XG4gKiByZXBvc2l0aW9ucyBiYXNlZCBvbiBpdHMgcHJldmlvdXMgdGFyZ2V0cyByYXRoZXIgdGhhbiBzdGFydGluZyB3aXRoIGRpcmVjdGlvbmFsaGludC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc2l0aW9uRWxlbWVudChwcm9wcywgaG9zdEVsZW1lbnQsIGVsZW1lbnRUb1Bvc2l0aW9uLCBwcmV2aW91c1Bvc2l0aW9ucykge1xuICAgIHJldHVybiBfcG9zaXRpb25FbGVtZW50KHByb3BzLCBob3N0RWxlbWVudCwgZWxlbWVudFRvUG9zaXRpb24sIHByZXZpb3VzUG9zaXRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdGlvbkNhbGxvdXQocHJvcHMsIGhvc3RFbGVtZW50LCBlbGVtZW50VG9Qb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbnMpIHtcbiAgICByZXR1cm4gX3Bvc2l0aW9uQ2FsbG91dChwcm9wcywgaG9zdEVsZW1lbnQsIGVsZW1lbnRUb1Bvc2l0aW9uLCBwcmV2aW91c1Bvc2l0aW9ucyk7XG59XG5leHBvcnQgZnVuY3Rpb24gcG9zaXRpb25DYXJkKHByb3BzLCBob3N0RWxlbWVudCwgZWxlbWVudFRvUG9zaXRpb24sIHByZXZpb3VzUG9zaXRpb25zKSB7XG4gICAgcmV0dXJuIF9wb3NpdGlvbkNhcmQocHJvcHMsIGhvc3RFbGVtZW50LCBlbGVtZW50VG9Qb3NpdGlvbiwgcHJldmlvdXNQb3NpdGlvbnMpO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBtYXhpbXVtIGhlaWdodCB0aGF0IGEgcmVjdGFuZ2xlIGNhbiBoYXZlIGluIG9yZGVyIHRvIGZpdCBiZWxvdyBvciBhYm92ZSBhIHRhcmdldC5cbiAqIElmIHRoZSBkaXJlY3Rpb25hbCBoaW50IHNwZWNpZmllcyBhIGxlZnQgb3IgcmlnaHQgZWRnZSAoaS5lLiBsZWZ0Q2VudGVyKSBpdCB3aWxsIGxpbWl0IHRoZSBoZWlnaHQgdG8gdGhlIHRvcEJvcmRlclxuICogb2YgdGhlIHRhcmdldCBnaXZlbi5cbiAqIElmIG5vIGJvdW5kcyBhcmUgcHJvdmlkZWQgdGhlbiB0aGUgd2luZG93IGlzIHRyZWF0ZWQgYXMgdGhlIGJvdW5kcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1heEhlaWdodCh0YXJnZXQsIHRhcmdldEVkZ2UsIGdhcFNwYWNlLCBib3VuZHMsIGNvdmVyVGFyZ2V0KSB7XG4gICAgaWYgKGdhcFNwYWNlID09PSB2b2lkIDApIHsgZ2FwU3BhY2UgPSAwOyB9XG4gICAgdmFyIG1vdXNlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHZhciBlbGVtZW50VGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHZhciByZWN0T3JQb2ludFRhcmdldCA9IHRhcmdldDtcbiAgICB2YXIgdGFyZ2V0UmVjdDtcbiAgICB2YXIgYm91bmRpbmdSZWN0YW5nbGUgPSBib3VuZHNcbiAgICAgICAgPyBfZ2V0UmVjdGFuZ2xlRnJvbUlSZWN0KGJvdW5kcylcbiAgICAgICAgOiBuZXcgUmVjdGFuZ2xlKDAsIHdpbmRvdy5pbm5lcldpZHRoIC0gZ2V0U2Nyb2xsYmFyV2lkdGgoKSwgMCwgd2luZG93LmlubmVySGVpZ2h0KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICB2YXIgbGVmdCA9IHJlY3RPclBvaW50VGFyZ2V0LmxlZnQgfHwgcmVjdE9yUG9pbnRUYXJnZXQueDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICB2YXIgdG9wID0gcmVjdE9yUG9pbnRUYXJnZXQudG9wIHx8IHJlY3RPclBvaW50VGFyZ2V0Lnk7XG4gICAgdmFyIHJpZ2h0ID0gcmVjdE9yUG9pbnRUYXJnZXQucmlnaHQgfHwgbGVmdDtcbiAgICB2YXIgYm90dG9tID0gcmVjdE9yUG9pbnRUYXJnZXQuYm90dG9tIHx8IHRvcDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0cmEtYm9vbGVhbi1jYXN0IC0tIG1heSBub3QgYWN0dWFsbHkgYmUgYSBNb3VzZUV2ZW50XG4gICAgaWYgKCEhbW91c2VUYXJnZXQuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICAgIHRhcmdldFJlY3QgPSBuZXcgUmVjdGFuZ2xlKG1vdXNlVGFyZ2V0LmNsaWVudFgsIG1vdXNlVGFyZ2V0LmNsaWVudFgsIG1vdXNlVGFyZ2V0LmNsaWVudFksIG1vdXNlVGFyZ2V0LmNsaWVudFkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChsZWZ0ICE9PSB1bmRlZmluZWQgJiYgdG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGFyZ2V0UmVjdCA9IG5ldyBSZWN0YW5nbGUobGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhcmdldFJlY3QgPSBfZ2V0UmVjdGFuZ2xlRnJvbUVsZW1lbnQoZWxlbWVudFRhcmdldCk7XG4gICAgfVxuICAgIHJldHVybiBfZ2V0TWF4SGVpZ2h0RnJvbVRhcmdldFJlY3RhbmdsZSh0YXJnZXRSZWN0LCB0YXJnZXRFZGdlLCBnYXBTcGFjZSwgYm91bmRpbmdSZWN0YW5nbGUsIGNvdmVyVGFyZ2V0KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgb3Bwb3NpdGUgZWRnZSBvZiB0aGUgZ2l2ZW4gUmVjdGFuZ2xlRWRnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wcG9zaXRlRWRnZShlZGdlKSB7XG4gICAgcmV0dXJuIGVkZ2UgKiAtMTtcbn1cbmZ1bmN0aW9uIF9nZXRCb3VuZHNGcm9tVGFyZ2V0V2luZG93KHRhcmdldCwgdGFyZ2V0V2luZG93KSB7XG4gICAgdmFyIHNlZ21lbnRzID0gdW5kZWZpbmVkO1xuICAgIGlmICh0YXJnZXRXaW5kb3cuZ2V0V2luZG93U2VnbWVudHMpIHtcbiAgICAgICAgc2VnbWVudHMgPSB0YXJnZXRXaW5kb3cuZ2V0V2luZG93U2VnbWVudHMoKTtcbiAgICB9XG4gICAgLy8gSWRlbnRpZnkgaWYgd2UncmUgZGVhbGluZyB3aXRoIHNpbmdsZSBzY3JlZW4gc2NlbmFyaW9zLlxuICAgIGlmIChzZWdtZW50cyA9PT0gdW5kZWZpbmVkIHx8IHNlZ21lbnRzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgcmlnaHQ6IHRhcmdldFdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgICAgICAgYm90dG9tOiB0YXJnZXRXaW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICAgICAgICB3aWR0aDogdGFyZ2V0V2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQ6IHRhcmdldFdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gTG9naWMgZm9yIGRldGVybWluaW5nIGR1YWwgc2NyZWVuIHNjZW5hcmlvcy5cbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIC8vIElmIHRoZSB0YXJnZXQgaXMgYW4gRWxlbWVudCBnZXQgY29vcmRpbmF0ZXMgZm9yIGl0cyBjZW50ZXIuXG4gICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiAhIXRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHtcbiAgICAgICAgdmFyIGNsaWVudFJlY3QgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgY2xpZW50UmVjdC5yaWdodCkgLyAyO1xuICAgICAgICB5ID0gKGNsaWVudFJlY3QudG9wICsgY2xpZW50UmVjdC5ib3R0b20pIC8gMjtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHRhcmdldCBpcyBub3QgbnVsbCBnZXQgeC1heGlzIGFuZCB5LWF4aXMgY29vcmRpbmF0ZXMgZGlyZWN0bHkuXG4gICAgZWxzZSBpZiAodGFyZ2V0ICE9PSBudWxsKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICB4ID0gdGFyZ2V0LmxlZnQgfHwgdGFyZ2V0Lng7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICB5ID0gdGFyZ2V0LnRvcCB8fCB0YXJnZXQueTtcbiAgICB9XG4gICAgdmFyIGJvdW5kcyA9IHsgdG9wOiAwLCBsZWZ0OiAwLCByaWdodDogMCwgYm90dG9tOiAwLCB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG4gICAgLy8gRGVmaW5lIHdoaWNoIHdpbmRvdyBzZWdtZW50IGFyZSB0aGUgY29vcmRpbmF0ZXMgaW4gYW5kIGNhbGN1bGF0ZSBib3VuZHMgYmFzZWQgb24gdGhhdC5cbiAgICBmb3IgKHZhciBfaSA9IDAsIHNlZ21lbnRzXzEgPSBzZWdtZW50czsgX2kgPCBzZWdtZW50c18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgc2VnbWVudCA9IHNlZ21lbnRzXzFbX2ldO1xuICAgICAgICBpZiAoeCAmJiBzZWdtZW50LmxlZnQgPD0geCAmJiBzZWdtZW50LnJpZ2h0ID49IHggJiYgeSAmJiBzZWdtZW50LnRvcCA8PSB5ICYmIHNlZ21lbnQuYm90dG9tID49IHkpIHtcbiAgICAgICAgICAgIGJvdW5kcyA9IHtcbiAgICAgICAgICAgICAgICB0b3A6IHNlZ21lbnQudG9wLFxuICAgICAgICAgICAgICAgIGxlZnQ6IHNlZ21lbnQubGVmdCxcbiAgICAgICAgICAgICAgICByaWdodDogc2VnbWVudC5yaWdodCxcbiAgICAgICAgICAgICAgICBib3R0b206IHNlZ21lbnQuYm90dG9tLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBzZWdtZW50LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogc2VnbWVudC5oZWlnaHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBib3VuZHM7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Qm91bmRzRnJvbVRhcmdldFdpbmRvdyh0YXJnZXQsIHRhcmdldFdpbmRvdykge1xuICAgIHJldHVybiBfZ2V0Qm91bmRzRnJvbVRhcmdldFdpbmRvdyh0YXJnZXQsIHRhcmdldFdpbmRvdyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wb3NpdGlvbmluZy5qcy5tYXAiLCJpbXBvcnQgeyBBc3luYyB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBIb29rIHRvIHByb3ZpZGUgYW4gQXN5bmMgaW5zdGFuY2UgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGNsZWFuZWQgdXAgb24gZGlzbW91bnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBc3luYygpIHtcbiAgICB2YXIgYXN5bmNSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgICBpZiAoIWFzeW5jUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgYXN5bmNSZWYuY3VycmVudCA9IG5ldyBBc3luYygpO1xuICAgIH1cbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gYXN5bmNSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIGFzeW5jUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiBhc3luY1JlZi5jdXJyZW50O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlQXN5bmMuanMubWFwIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBIb29rIHRvIGluaXRpYWxpemUgYW5kIHJldHVybiBhIGNvbnN0YW50IHZhbHVlLiBVbmxpa2UgYFJlYWN0LnVzZU1lbW9gLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG9cbiAqIGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmFsdWUgKGFuZCBpZiB0aGUgaW5pdGlhbGl6ZXIgaXMgYSBmdW5jdGlvbiwgb25seSBjYWxsIGl0IG9uY2UpLlxuICogVGhpcyBpcyBzaW1pbGFyIHRvIHNldHRpbmcgYSBwcml2YXRlIG1lbWJlciBpbiBhIGNsYXNzIGNvbnN0cnVjdG9yLlxuICpcbiAqIElmIHRoZSB2YWx1ZSBzaG91bGQgZXZlciBjaGFuZ2UgYmFzZWQgb24gZGVwZW5kZW5jaWVzLCB1c2UgYFJlYWN0LnVzZU1lbW9gIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIGluaXRpYWxWYWx1ZSAtIEluaXRpYWwgdmFsdWUsIG9yIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5pdGlhbCB2YWx1ZS4gU2ltaWxhciB0byBgdXNlU3RhdGVgLFxuICogb25seSB0aGUgdmFsdWUvZnVuY3Rpb24gcGFzc2VkIGluIHRoZSBmaXJzdCB0aW1lIHRoaXMgaXMgY2FsbGVkIGlzIHJlc3BlY3RlZC5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZS4gVGhlIGlkZW50aXR5IG9mIHRoaXMgdmFsdWUgd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb25zdChpbml0aWFsVmFsdWUpIHtcbiAgICAvLyBVc2UgdXNlUmVmIHRvIHN0b3JlIHRoZSB2YWx1ZSBiZWNhdXNlIGl0J3MgdGhlIGxlYXN0IGV4cGVuc2l2ZSBidWlsdC1pbiBob29rIHRoYXQgd29ya3MgaGVyZVxuICAgIC8vICh3ZSBjb3VsZCBhbHNvIHVzZSBgY29uc3QgW3ZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKGluaXRpYWxWYWx1ZSlgIGJ1dCB0aGF0J3MgbW9yZSBleHBlbnNpdmVcbiAgICAvLyBpbnRlcm5hbGx5IGR1ZSB0byByZWR1Y2VyIGhhbmRsaW5nIHdoaWNoIHdlIGRvbid0IG5lZWQpXG4gICAgdmFyIHJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICAgIGlmIChyZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIEJveCB0aGUgdmFsdWUgaW4gYW4gb2JqZWN0IHNvIHdlIGNhbiB0ZWxsIGlmIGl0J3MgaW5pdGlhbGl6ZWQgZXZlbiBpZiB0aGUgaW5pdGlhbGl6ZXJcbiAgICAgICAgLy8gcmV0dXJucy9pcyB1bmRlZmluZWRcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZTogdHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGluaXRpYWxWYWx1ZSgpIDogaW5pdGlhbFZhbHVlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQudmFsdWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VDb25zdC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb25zdCB9IGZyb20gJy4vdXNlQ29uc3QnO1xuLyoqXG4gKiBIb29rIHRvIHN0b3JlIGEgdmFsdWUgYW5kIGdlbmVyYXRlIGNhbGxiYWNrcyBmb3Igc2V0dGluZyB0aGUgdmFsdWUgdG8gdHJ1ZSBvciBmYWxzZS5cbiAqIFRoZSBpZGVudGl0eSBvZiB0aGUgY2FsbGJhY2tzIHdpbGwgYWx3YXlzIHN0YXkgdGhlIHNhbWUuXG4gKlxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSAtIEluaXRpYWwgdmFsdWVcbiAqIEByZXR1cm5zIEFycmF5IHdpdGggdGhlIGN1cnJlbnQgdmFsdWUgYW5kIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSB1cGRhdGVyIGNhbGxiYWNrcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUJvb2xlYW4oaW5pdGlhbFN0YXRlKSB7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbFN0YXRlKSwgdmFsdWUgPSBfYVswXSwgc2V0VmFsdWUgPSBfYVsxXTtcbiAgICB2YXIgc2V0VHJ1ZSA9IHVzZUNvbnN0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0VmFsdWUodHJ1ZSk7XG4gICAgfTsgfSk7XG4gICAgdmFyIHNldEZhbHNlID0gdXNlQ29uc3QoZnVuY3Rpb24gKCkgeyByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRWYWx1ZShmYWxzZSk7XG4gICAgfTsgfSk7XG4gICAgdmFyIHRvZ2dsZSA9IHVzZUNvbnN0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0VmFsdWUoZnVuY3Rpb24gKGN1cnJlbnRWYWx1ZSkgeyByZXR1cm4gIWN1cnJlbnRWYWx1ZTsgfSk7XG4gICAgfTsgfSk7XG4gICAgcmV0dXJuIFt2YWx1ZSwgeyBzZXRUcnVlOiBzZXRUcnVlLCBzZXRGYWxzZTogc2V0RmFsc2UsIHRvZ2dsZTogdG9nZ2xlIH1dO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlQm9vbGVhbi5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb25zdCB9IGZyb20gJy4vdXNlQ29uc3QnO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuLyoqXG4gKiBNb2RpZmllZCBgdXNlQ2FsbGJhY2tgIHRoYXQgcmV0dXJucyB0aGUgc2FtZSBmdW5jdGlvbiByZWZlcmVuY2UgZXZlcnkgdGltZSwgYnV0IGludGVybmFsbHkgY2FsbHNcbiAqIHRoZSBtb3N0LXJlY2VudGx5IHBhc3NlZCBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbi4gQ2FuIGJlIHVzZWZ1bCBpbiBzaXR1YXRpb25zIHN1Y2ggYXM6XG4gKiAtIEV2ZW50IGhhbmRsZXIgZGVwZW5kZW5jaWVzIGNoYW5nZSB0b28gZnJlcXVlbnRseSwgc3VjaCBhcyB1c2VyIHByb3BzIHdoaWNoIG1pZ2h0IGNoYW5nZSBvblxuICogICBldmVyeSByZW5kZXIsIG9yIHZvbGF0aWxlIHZhbHVlcyBzdWNoIGFzIHVzZVN0YXRlL3VzZURpc3BhdGNoXG4gKiAtIENhbGxiYWNrIG11c3QgYmUgcmVmZXJlbmNlZCBpbiBhIGNhcHR1cmVkIGNvbnRleHQgKHN1Y2ggYXMgYSB3aW5kb3cgZXZlbnQgaGFuZGxlciBvciB1bm1vdW50XG4gKiAgIGhhbmRsZXIgdGhhdCdzIHJlZ2lzdGVyZWQgb25jZSkgYnV0IG5lZWRzIGFjY2VzcyB0byB0aGUgbGF0ZXN0IHByb3BzXG4gKlxuICogSW4gZ2VuZXJhbCwgcHJlZmVyIGB1c2VDYWxsYmFja2AgdW5sZXNzIHlvdSd2ZSBlbmNvdW50ZXJlZCBvbmUgb2YgdGhlIHByb2JsZW1zIGFib3ZlLlxuICpcbiAqIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1mYXEuaHRtbCNob3ctdG8tcmVhZC1hbi1vZnRlbi1jaGFuZ2luZy12YWx1ZS1mcm9tLXVzZWNhbGxiYWNrXG4gKlxuICogQHBhcmFtIGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHdoaWNoIGlzIHJlZmVyZW50aWFsbHkgc3RhYmxlIGJ1dCBpbnRlcm5hbGx5IGNhbGxzIHRoZSBtb3N0IHJlY2VudGx5IHBhc3NlZCBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICAgIHZhciBjYWxsYmFja1JlZiA9IFJlYWN0LnVzZVJlZihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNhbGwgYW4gZXZlbnQgaGFuZGxlciB3aGlsZSByZW5kZXJpbmcnKTtcbiAgICB9KTtcbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGZuO1xuICAgIH0sIFtmbl0pO1xuICAgIC8vIHVzZUNvbnN0IHJhdGhlciB0aGFuIHVzZUNhbGxiYWNrIHRvIGVuc3VyZSB0aGUgcmVmZXJlbmNlIGlzIGFsd2F5cyBzdGFibGVcbiAgICAvLyAodXNlQ2FsbGJhY2sncyBkZXBzIGxpc3QgaXMgYW4gb3B0aW1pemF0aW9uLCBub3QgYSBndWFyYW50ZWUpXG4gICAgcmV0dXJuIHVzZUNvbnN0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FsbGJhY2sgPSBjYWxsYmFja1JlZi5jdXJyZW50O1xuICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkodm9pZCAwLCBhcmdzKTtcbiAgICB9OyB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZUV2ZW50Q2FsbGJhY2suanMubWFwIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0SWQgfSBmcm9tICdAZmx1ZW50dWkvdXRpbGl0aWVzJztcbi8qKlxuICogSG9vayB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBpbiB0aGUgZ2xvYmFsIHNjb3BlIChzcGFubmluZyBhY3Jvc3MgZHVwbGljYXRlIGNvcGllcyBvZiB0aGUgc2FtZSBsaWJyYXJ5KS5cbiAqXG4gKiBAcGFyYW0gcHJlZml4IC0gT3B0aW9uYWwgcHJlZml4IGZvciB0aGUgSURcbiAqIEBwYXJhbSBwcm92aWRlZElkIC0gT3B0aW9uYWwgaWQgcHJvdmlkZWQgYnkgYSBwYXJlbnQgY29tcG9uZW50LiBEZWZhdWx0cyB0byB0aGUgcHJvdmlkZWQgdmFsdWUgaWYgcHJlc2VudCxcbiAqICB3aXRob3V0IGNvbmRpdGlvbmluZyB0aGUgaG9vayBjYWxsXG4gKiBAcmV0dXJucyBUaGUgSURcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUlkKHByZWZpeCwgcHJvdmlkZWRJZCkge1xuICAgIC8vIGdldElkIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIHNpbmNlIGl0IHVwZGF0ZXMgdGhlIGdsb2JhbCBjb25zdGFudCBmb3IgdGhlIG5leHQgSUQgdmFsdWUuXG4gICAgLy8gKFdoaWxlIGFuIGV4dHJhIHVwZGF0ZSBpc24ndCBsaWtlbHkgdG8gY2F1c2UgcHJvYmxlbXMgaW4gcHJhY3RpY2UsIGl0J3MgYmV0dGVyIHRvIGF2b2lkIGl0LilcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKHByb3ZpZGVkSWQpO1xuICAgIGlmICghcmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBnZXRJZChwcmVmaXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VJZC5qcy5tYXAiLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFJlYWN0IGhvb2sgdG8gbWVyZ2UgbXVsdGlwbGUgUmVhY3QgcmVmcyAoZWl0aGVyIE11dGFibGVSZWZPYmplY3RzIG9yIHJlZiBjYWxsYmFja3MpIGludG8gYSBzaW5nbGUgcmVmIGNhbGxiYWNrIHRoYXRcbiAqIHVwZGF0ZXMgYWxsIHByb3ZpZGVkIHJlZnNcbiAqIEBwYXJhbSByZWZzIC0gUmVmcyB0byBjb2xsZWN0aXZlbHkgdXBkYXRlIHdpdGggb25lIHJlZiB2YWx1ZS5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gd2l0aCBhbiBhdHRhY2hlZCBcImN1cnJlbnRcIiBwcm9wLCBzbyB0aGF0IGl0IGNhbiBiZSB0cmVhdGVkIGxpa2UgYSBSZWZPYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZWRSZWZzKCkge1xuICAgIHZhciByZWZzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcmVmc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgbWVyZ2VkQ2FsbGJhY2sgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBcImN1cnJlbnRcIiBwcm9wIGhhbmdpbmcgb24gdGhlIGZ1bmN0aW9uLlxuICAgICAgICBtZXJnZWRDYWxsYmFjay5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgcmVmc18xID0gcmVmczsgX2kgPCByZWZzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgcmVmID0gcmVmc18xW19pXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmVmKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoZSBpbW11dGFiaWxpdHkgb2YgdGhlIFJlYWN0LlJlZiB0eXBlXG4gICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIF9fc3ByZWFkQXJyYXkoW10sIHJlZnMsIHRydWUpKTtcbiAgICByZXR1cm4gbWVyZ2VkQ2FsbGJhY2s7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VNZXJnZWRSZWZzLmpzLm1hcCIsImltcG9ydCB7IG9uIH0gZnJvbSAnQGZsdWVudHVpL3V0aWxpdGllcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEhvb2sgdG8gYXR0YWNoIGFuIGV2ZW50IGhhbmRsZXIgb24gbW91bnQgYW5kIGhhbmRsZSBjbGVhbnVwLlxuICogQHBhcmFtIGVsZW1lbnQgLSBFbGVtZW50IChvciByZWYgdG8gYW4gZWxlbWVudCkgdG8gYXR0YWNoIHRoZSBldmVudCBoYW5kbGVyIHRvXG4gKiBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIGV2ZW50IHRvIGF0dGFjaCBhIGhhbmRsZXIgZm9yXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgaGFuZGxlciBmb3IgdGhlIGV2ZW50XG4gKiBAcGFyYW0gdXNlQ2FwdHVyZSAtIFdoZXRoZXIgb3Igbm90IHRvIGF0dGFjaCB0aGUgaGFuZGxlciBmb3IgdGhlIGNhcHR1cmUgcGhhc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9uRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICAgIC8vIFVzZSBhIHJlZiBmb3IgdGhlIGNhbGxiYWNrIHRvIHByZXZlbnQgcmVwZWF0ZWRseSBhdHRhY2hpbmcvdW5hdHRhY2hpbmcgY2FsbGJhY2tzIHRoYXQgYXJlIHVuc3RhYmxlIGFjcm9zcyByZW5kZXJzXG4gICAgdmFyIGNhbGxiYWNrUmVmID0gUmVhY3QudXNlUmVmKGNhbGxiYWNrKTtcbiAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFjdHVhbEVsZW1lbnQgPSBlbGVtZW50ICYmICdjdXJyZW50JyBpbiBlbGVtZW50ID8gZWxlbWVudC5jdXJyZW50IDogZWxlbWVudDtcbiAgICAgICAgaWYgKCFhY3R1YWxFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRpc3Bvc2UgPSBvbihhY3R1YWxFbGVtZW50LCBldmVudE5hbWUsIGZ1bmN0aW9uIChldikgeyByZXR1cm4gY2FsbGJhY2tSZWYuY3VycmVudChldik7IH0sIHVzZUNhcHR1cmUpO1xuICAgICAgICByZXR1cm4gZGlzcG9zZTtcbiAgICB9LCBbZWxlbWVudCwgZXZlbnROYW1lLCB1c2VDYXB0dXJlXSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VPbkV2ZW50LmpzLm1hcCIsImltcG9ydCB7IHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBIb29rIGtlZXBpbmcgdHJhY2sgb2YgYSBnaXZlbiB2YWx1ZSBmcm9tIGEgcHJldmlvdXMgZXhlY3V0aW9uIG9mIHRoZSBjb21wb25lbnQgdGhlIEhvb2sgaXMgdXNlZCBpbi5cbiAqXG4gKiBTZWUgW1JlYWN0IEhvb2tzIEZBUV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLWZhcS5odG1sI2hvdy10by1nZXQtdGhlLXByZXZpb3VzLXByb3BzLW9yLXN0YXRlKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgICB2YXIgcmVmID0gdXNlUmVmKCk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VQcmV2aW91cy5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb25zdCB9IGZyb20gJy4vdXNlQ29uc3QnO1xuLyoqXG4gKiAgUmV0dXJucyBhIHdyYXBwZXIgZnVuY3Rpb24gZm9yIGBzZXRUaW1lb3V0YCB3aGljaCBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgZGlzcG9zYWwuXG4gKi9cbmV4cG9ydCB2YXIgdXNlU2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGltZW91dElkcyA9IHVzZUNvbnN0KHt9KTtcbiAgICAvLyBDbGVhbnVwIGZ1bmN0aW9uLlxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyh0aW1lb3V0SWRzKTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBpZCA9IF9hW19pXTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgICB9XG4gICAgfTsgfSwgXG4gICAgLy8gdXNlQ29uc3QgZW5zdXJlcyB0aGlzIHdpbGwgbmV2ZXIgY2hhbmdlLCBidXQgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzIGRvZXNuJ3Qga25vdyB0aGF0XG4gICAgW3RpbWVvdXRJZHNdKTtcbiAgICAvLyBSZXR1cm4gd3JhcHBlciB3aGljaCB3aWxsIGF1dG8gY2xlYW51cC5cbiAgICByZXR1cm4gdXNlQ29uc3Qoe1xuICAgICAgICBzZXRUaW1lb3V0OiBmdW5jdGlvbiAoZnVuYywgZHVyYXRpb24pIHtcbiAgICAgICAgICAgIHZhciBpZCA9IHNldFRpbWVvdXQoZnVuYywgZHVyYXRpb24pO1xuICAgICAgICAgICAgdGltZW91dElkc1tpZF0gPSAxO1xuICAgICAgICAgICAgcmV0dXJuIGlkO1xuICAgICAgICB9LFxuICAgICAgICBjbGVhclRpbWVvdXQ6IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICAgICAgZGVsZXRlIHRpbWVvdXRJZHNbaWRdO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VTZXRUaW1lb3V0LmpzLm1hcCIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQ29udGV4dCBmb3IgcHJvdmlkaW5nIHRoZSB3aW5kb3cuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAZmx1ZW50dWkvbm8tY29udGV4dC1kZWZhdWx0LXZhbHVlXG5leHBvcnQgdmFyIFdpbmRvd0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgICB3aW5kb3c6IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnID8gd2luZG93IDogdW5kZWZpbmVkLFxufSk7XG4vKipcbiAqIEhvb2sgdG8gYWNjZXNzIHRoZSB3aW5kb3cgb2JqZWN0LiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGNvbnRleHR1YWxseSB1c2luZyB0aGUgYFdpbmRvd1Byb3ZpZGVyYC5cbiAqL1xuZXhwb3J0IHZhciB1c2VXaW5kb3cgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBSZWFjdC51c2VDb250ZXh0KFdpbmRvd0NvbnRleHQpLndpbmRvdzsgfTtcbi8qKlxuICogSG9vayB0byBhY2Nlc3MgdGhlIGRvY3VtZW50IG9iamVjdC4gVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBjb250ZXh0dWFsbHkgdXNpbmcgdGhlIGBXaW5kb3dQcm92aWRlcmAuXG4gKi9cbmV4cG9ydCB2YXIgdXNlRG9jdW1lbnQgPSBmdW5jdGlvbiAoKSB7IHZhciBfYTsgcmV0dXJuIChfYSA9IFJlYWN0LnVzZUNvbnRleHQoV2luZG93Q29udGV4dCkud2luZG93KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZG9jdW1lbnQ7IH07XG4vKipcbiAqIENvbXBvbmVudCB0byBwcm92aWRlIHRoZSB3aW5kb3cgb2JqZWN0IGNvbnRleHR1YWxseS4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZW5kZXJpbmcgY29udGVudCB0byBhbiBlbGVtZW50XG4gKiBjb250YWluZWQgd2l0aGluIGEgY2hpbGQgd2luZG93IG9yIGlmcmFtZSBlbGVtZW50LCB3aGVyZSBldmVudCBoYW5kbGVycyBhbmQgc3R5bGluZyBtdXN0IGJlIHByb2plY3RlZFxuICogdG8gYW4gYWx0ZXJuYXRpdmUgd2luZG93IG9yIGRvY3VtZW50LlxuICovXG5leHBvcnQgdmFyIFdpbmRvd1Byb3ZpZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV2luZG93Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogcHJvcHMgfSwgcHJvcHMuY2hpbGRyZW4pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVdpbmRvd1Byb3ZpZGVyLmpzLm1hcCIsImltcG9ydCB7IGdldERvY3VtZW50IH0gZnJvbSAnQGZsdWVudHVpL3V0aWxpdGllcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tICdAZmx1ZW50dWkvcmVhY3Qtd2luZG93LXByb3ZpZGVyJztcbi8qKlxuICogSG9vayB0byBjYWxjdWxhdGUgYW5kIGNhY2hlIHRoZSB0YXJnZXQgZWxlbWVudCBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHRhcmdldCBhdHRyaWJ1dGUsXG4gKiBhcyB3ZWxsIGFzIHRoZSB0YXJnZXQgZWxlbWVudCdzIChvciBob3N0IGVsZW1lbnQncykgcGFyZW50IHdpbmRvd1xuICogQHBhcmFtIHRhcmdldC0gVGFyZ2V0IHNlbGVjdG9yIHBhc3NlZCB0byB0aGUgY29tcG9uZW50IGFzIGEgcHJvcGVydHksIGRlc2NyaWJpbmcgdGhlIGVsZW1lbnQgdGhhdFxuICogdGhlIGNhbGxvdXQgc2hvdWxkIHRhcmdldFxuICogQHBhcmFtIGhvc3RFbGVtZW50LSBUaGUgY2FsbG91dCdzIGhvc3QgZWxlbWVudCwgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHBhcmVudCB3aW5kb3cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUYXJnZXQodGFyZ2V0LCBob3N0RWxlbWVudCkge1xuICAgIHZhciBwcmV2aW91c1RhcmdldFByb3AgPSBSZWFjdC51c2VSZWYoKTtcbiAgICB2YXIgdGFyZ2V0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIC8qKlxuICAgICAqIFN0b3JlcyBhbiBpbnN0YW5jZSBvZiBXaW5kb3csIHVzZWQgdG8gY2hlY2tcbiAgICAgKiBmb3Igc2VydmVyIHNpZGUgcmVuZGVyaW5nIGFuZCBpZiBmb2N1cyB3YXMgbG9zdC5cbiAgICAgKi9cbiAgICB2YXIgdGFyZ2V0V2luZG93ID0gdXNlV2luZG93KCk7XG4gICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IGNoYW5nZWQsIGZpbmQgdGhlIG5ldyBvbmUuIElmIHdlIGFyZSB0cmFja2luZ1xuICAgIC8vIHRhcmdldCB3aXRoIGNsYXNzIG5hbWUsIGFsd2F5cyBmaW5kIGVsZW1lbnQgYmVjYXVzZSB3ZSBkbyBub3Qga25vdyBpZlxuICAgIC8vIGZhYnJpYyBoYXMgcmVuZGVyZWQgYSBuZXcgZWxlbWVudCBhbmQgZGlzcG9zZWQgdGhlIG9sZCBlbGVtZW50LlxuICAgIGlmICghdGFyZ2V0IHx8IHRhcmdldCAhPT0gcHJldmlvdXNUYXJnZXRQcm9wLmN1cnJlbnQgfHwgdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFbGVtZW50ID0gaG9zdEVsZW1lbnQgPT09IG51bGwgfHwgaG9zdEVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGhvc3RFbGVtZW50LmN1cnJlbnQ7XG4gICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50RG9jID0gZ2V0RG9jdW1lbnQoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRhcmdldFJlZi5jdXJyZW50ID0gY3VycmVudERvYyA/IGN1cnJlbnREb2MucXVlcnlTZWxlY3Rvcih0YXJnZXQpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCdzdG9wUHJvcGFnYXRpb24nIGluIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFJlZi5jdXJyZW50ID0gdGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoJ2dldEJvdW5kaW5nQ2xpZW50UmVjdCcgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICgnY3VycmVudCcgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0UmVmLmN1cnJlbnQgPSB0YXJnZXQuY3VycmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhcmdldFJlZi5jdXJyZW50ID0gdGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHByZXZpb3VzVGFyZ2V0UHJvcC5jdXJyZW50ID0gdGFyZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gW3RhcmdldFJlZiwgdGFyZ2V0V2luZG93XTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVRhcmdldC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEhvb2sgd2hpY2ggc3luY2hyb25vdXNseSBleGVjdXRlcyBhIGNhbGxiYWNrIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1bm1vdW50LlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwgZHVyaW5nIHVubW91bnQuXG4gKi9cbmV4cG9ydCB2YXIgdXNlVW5tb3VudCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIHZhciB1bm1vdW50UmVmID0gUmVhY3QudXNlUmVmKGNhbGxiYWNrKTtcbiAgICB1bm1vdW50UmVmLmN1cnJlbnQgPSBjYWxsYmFjaztcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkgeyByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IHVubW91bnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodW5tb3VudFJlZik7XG4gICAgfTsgfSwgW10pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVVubW91bnQuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEtleUNvZGVzLCBkaXZQcm9wZXJ0aWVzLCBkb2VzRWxlbWVudENvbnRhaW5Gb2N1cywgZ2V0RG9jdW1lbnQsIGdldE5hdGl2ZVByb3BzLCBnZXRQcm9wc1dpdGhEZWZhdWx0cywgZ2V0V2luZG93LCBtb2RhbGl6ZSwgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgdXNlTWVyZ2VkUmVmcywgdXNlQXN5bmMsIHVzZU9uRXZlbnQgfSBmcm9tICdAZmx1ZW50dWkvcmVhY3QtaG9va3MnO1xuaW1wb3J0IHsgdXNlV2luZG93IH0gZnJvbSAnQGZsdWVudHVpL3JlYWN0LXdpbmRvdy1wcm92aWRlcic7XG5mdW5jdGlvbiB1c2VTY3JvbGxiYXJBc3luYyhwcm9wcywgcm9vdCkge1xuICAgIHZhciBhc3luYyA9IHVzZUFzeW5jKCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCBuZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyU3RhdGUgPSBfYVswXSwgc2V0TmVlZHNWZXJ0aWNhbFNjcm9sbEJhciA9IF9hWzFdO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzeW5jLnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAvLyBJZiBvdmVyZmxvd1kgaXMgb3ZlcnJpZGRlbiwgZG9uJ3Qgd2FzdGUgdGltZSBjYWxjdWxhdGluZyB3aGV0aGVyIHRoZSBzY3JvbGxiYXIgaXMgbmVjZXNzYXJ5LlxuICAgICAgICAgICAgaWYgKHByb3BzLnN0eWxlICYmIHByb3BzLnN0eWxlLm92ZXJmbG93WSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBuZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocm9vdCAmJiByb290LmN1cnJlbnQgJiYgKChfYSA9IHJvb3QuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZpcnN0RWxlbWVudENoaWxkKSkge1xuICAgICAgICAgICAgICAgIC8vIENsaWVudEhlaWdodCByZXR1cm5zIHRoZSBjbGllbnQgaGVpZ2h0IG9mIGFuIGVsZW1lbnQgcm91bmRlZCB0byBhblxuICAgICAgICAgICAgICAgIC8vIGludGVnZXIuIE9uIHNvbWUgYnJvd3NlcnMgYXQgZGlmZmVyZW50IHpvb20gbGV2ZWxzIHRoaXMgcm91bmRpbmdcbiAgICAgICAgICAgICAgICAvLyBjYW4gZ2VuZXJhdGUgZGlmZmVyZW50IHJlc3VsdHMgZm9yIHRoZSByb290IGNvbnRhaW5lciBhbmQgY2hpbGQgZXZlblxuICAgICAgICAgICAgICAgIC8vIHRob3VnaCB0aGV5IGFyZSB0aGUgc2FtZSBoZWlnaHQuIFRoaXMgY2F1c2VzIHVzIHRvIHNob3cgYSBzY3JvbGwgYmFyXG4gICAgICAgICAgICAgICAgLy8gd2hlbiBub3QgbmVlZGVkLiBJZGVhbGx5IHdlIHdvdWxkIHVzZSBCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHRcbiAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIGhvd2V2ZXIgc2VlbXMgdGhhdCB0aGUgQVBJIGlzIDkwJSBzbG93ZXIgdGhhbiB1c2luZyBDbGllbnRIZWlnaHQuXG4gICAgICAgICAgICAgICAgLy8gVGhlcmVmb3JlIGluc3RlYWQgd2Ugd2lsbCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBoZWlnaHRzIGFuZFxuICAgICAgICAgICAgICAgIC8vIGFsbG93IGZvciBhIDFweCBkaWZmZXJlbmNlIHRvIHN0aWxsIGJlIGNvbnNpZGVyZWQgb2sgYW5kIG5vdCBzaG93IHRoZVxuICAgICAgICAgICAgICAgIC8vIHNjcm9sbCBiYXIuXG4gICAgICAgICAgICAgICAgdmFyIHJvb3RIZWlnaHQgPSByb290LmN1cnJlbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBmaXJzdENoaWxkSGVpZ2h0ID0gcm9vdC5jdXJyZW50LmZpcnN0RWxlbWVudENoaWxkLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAocm9vdEhlaWdodCA+IDAgJiYgZmlyc3RDaGlsZEhlaWdodCA+IHJvb3RIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgbmVlZHNWZXJ0aWNhbFNjcm9sbEJhciA9IGZpcnN0Q2hpbGRIZWlnaHQgLSByb290SGVpZ2h0ID4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmVlZHNWZXJ0aWNhbFNjcm9sbEJhclN0YXRlICE9PSBuZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyKSB7XG4gICAgICAgICAgICAgICAgc2V0TmVlZHNWZXJ0aWNhbFNjcm9sbEJhcihuZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3luYy5kaXNwb3NlKCk7IH07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5lZWRzVmVydGljYWxTY3JvbGxCYXJTdGF0ZTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRGb2N1c1Jlc3RvcmVyKG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxFbGVtZW50ID0gb3B0aW9ucy5vcmlnaW5hbEVsZW1lbnQsIGNvbnRhaW5zRm9jdXMgPSBvcHRpb25zLmNvbnRhaW5zRm9jdXM7XG4gICAgaWYgKG9yaWdpbmFsRWxlbWVudCAmJiBjb250YWluc0ZvY3VzICYmIG9yaWdpbmFsRWxlbWVudCAhPT0gZ2V0V2luZG93KCkpIHtcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGZvY3VzIG1ldGhvZCBhY3R1YWxseSBleGlzdHNcbiAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB0aGUgb2JqZWN0IG1pZ2h0IGV4aXN0IGJ1dCBub3QgYmUgYSByZWFsIGVsZW1lbnQuXG4gICAgICAgIC8vIFRoaXMgaXMgcHJpbWFyaWx5IGZvciBJRSAxMSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBJRSAxMSBpcyBubyBsb25nZXIgaW4gdXNlLlxuICAgICAgICAvLyBUaGlzIGlzIHdyYXBwZWQgaW4gYSBzZXRUaW1lb3V0IGJlY2F1c2Ugb2YgYSBSZWFjdCAxNiBidWcgdGhhdCBpcyByZXNvbHZlZCBpbiAxNy5cbiAgICAgICAgLy8gT25jZSB3ZSBtb3ZlIHRvIDE3LCB0aGUgc2V0VGltZW91dCBzaG91bGQgYmUgcmVtb3ZlZCAocmVmOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE3ODk0I2lzc3VlY29tbWVudC02NTYwOTQ0MDUpXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgKF9hID0gb3JpZ2luYWxFbGVtZW50LmZvY3VzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvcmlnaW5hbEVsZW1lbnQpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG5mdW5jdGlvbiB1c2VSZXN0b3JlRm9jdXMocHJvcHMsIHJvb3QpIHtcbiAgICB2YXIgX2EgPSBwcm9wcy5vblJlc3RvcmVGb2N1cywgb25SZXN0b3JlRm9jdXMgPSBfYSA9PT0gdm9pZCAwID8gZGVmYXVsdEZvY3VzUmVzdG9yZXIgOiBfYTtcbiAgICB2YXIgb3JpZ2luYWxGb2N1c2VkRWxlbWVudCA9IFJlYWN0LnVzZVJlZigpO1xuICAgIHZhciBjb250YWluc0ZvY3VzID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBvcmlnaW5hbEZvY3VzZWRFbGVtZW50LmN1cnJlbnQgPSBnZXREb2N1bWVudCgpLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChkb2VzRWxlbWVudENvbnRhaW5Gb2N1cyhyb290LmN1cnJlbnQpKSB7XG4gICAgICAgICAgICBjb250YWluc0ZvY3VzLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBvblJlc3RvcmVGb2N1cyA9PT0gbnVsbCB8fCBvblJlc3RvcmVGb2N1cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXN0b3JlRm9jdXMoe1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsRWxlbWVudDogb3JpZ2luYWxGb2N1c2VkRWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zRm9jdXM6IGNvbnRhaW5zRm9jdXMuY3VycmVudCxcbiAgICAgICAgICAgICAgICBkb2N1bWVudENvbnRhaW5zRm9jdXM6ICgoX2EgPSBnZXREb2N1bWVudCgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGFzRm9jdXMoKSkgfHwgZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIERlLXJlZmVyZW5jZSBET00gTm9kZSB0byBhdm9pZCByZXRhaW5tZW50IHZpYSB0cmFuc3BpbGVkIGNsb3N1cmUgb2YgX29uS2V5RG93blxuICAgICAgICAgICAgb3JpZ2luYWxGb2N1c2VkRWxlbWVudC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzIC0tIHNob3VsZCBvbmx5IHJ1biBvbiBmaXJzdCByZW5kZXJcbiAgICB9LCBbXSk7XG4gICAgdXNlT25FdmVudChyb290LCAnZm9jdXMnLCBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnRhaW5zRm9jdXMuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW10pLCB0cnVlKTtcbiAgICB1c2VPbkV2ZW50KHJvb3QsICdibHVyJywgUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIC8qKiBUaGUgcG9wdXAgc2hvdWxkIHVwZGF0ZSB0aGlzLl9jb250YWluc0ZvY3VzIHdoZW46XG4gICAgICAgICAqIHJlbGF0ZWRUYXJnZXQgZXhpc3RzIEFORFxuICAgICAgICAgKiB0aGUgcmVsYXRlZFRhcmdldCBpcyBub3QgY29udGFpbmVkIHdpdGhpbiB0aGUgcG9wdXAuXG4gICAgICAgICAqIElmIHRoZSByZWxhdGVkVGFyZ2V0IGlzIHdpdGhpbiB0aGUgcG9wdXAsIHRoYXQgbWVhbnMgdGhlIHBvcHVwIHN0aWxsIGhhcyBmb2N1c1xuICAgICAgICAgKiBhbmQgZm9jdXNlZCBtb3ZlZCBmcm9tIG9uZSBlbGVtZW50IHRvIGFub3RoZXIgd2l0aGluIHRoZSBwb3B1cC5cbiAgICAgICAgICogSWYgcmVsYXRlZFRhcmdldCBpcyB1bmRlZmluZWQgb3IgbnVsbCB0aGF0IHVzdWFsbHkgbWVhbnMgdGhhdCBhXG4gICAgICAgICAqIGtleWJvYXJkIGV2ZW50IG9jY3VycmVkIGFuZCBmb2N1cyBkaWRuJ3QgY2hhbmdlXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocm9vdC5jdXJyZW50ICYmIGV2LnJlbGF0ZWRUYXJnZXQgJiYgIXJvb3QuY3VycmVudC5jb250YWlucyhldi5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgICAgY29udGFpbnNGb2N1cy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBzaG91bGQgb25seSBydW4gb24gZmlyc3QgcmVuZGVyXG4gICAgfSwgW10pLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIHVzZUhpZGVTaWJsaW5nTm9kZXMocHJvcHMsIHJvb3QpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICB2YXIgc2hvdWxkSGlkZVNpYmxpbmdzID0gU3RyaW5nKHByb3BzWydhcmlhLW1vZGFsJ10pLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJyAmJiBwcm9wcy5lbmFibGVBcmlhSGlkZGVuU2libGluZ3M7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCEoc2hvdWxkSGlkZVNpYmxpbmdzICYmIHJvb3QuY3VycmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdW5tb2RhbGl6ZSA9IG1vZGFsaXplKHJvb3QuY3VycmVudCk7XG4gICAgICAgIHJldHVybiB1bm1vZGFsaXplO1xuICAgIH0sIFtyb290LCBzaG91bGRIaWRlU2libGluZ3NdKTtcbn1cbi8qKlxuICogVGhpcyBhZGRzIGFjY2Vzc2liaWxpdHkgdG8gRGlhbG9nIGFuZCBQYW5lbCBjb250cm9sc1xuICovXG5leHBvcnQgdmFyIFBvcHVwID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHNXaXRob3V0RGVmYXVsdHMsIGZvcndhcmRlZFJlZikge1xuICAgIHZhciBwcm9wcyA9IGdldFByb3BzV2l0aERlZmF1bHRzKHsgc2hvdWxkUmVzdG9yZUZvY3VzOiB0cnVlLCBlbmFibGVBcmlhSGlkZGVuU2libGluZ3M6IHRydWUgfSwgcHJvcHNXaXRob3V0RGVmYXVsdHMpO1xuICAgIHZhciByb290ID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIG1lcmdlZFJvb3RSZWYgPSB1c2VNZXJnZWRSZWZzKHJvb3QsIGZvcndhcmRlZFJlZik7XG4gICAgdXNlSGlkZVNpYmxpbmdOb2Rlcyhwcm9wcywgcm9vdCk7XG4gICAgdXNlUmVzdG9yZUZvY3VzKHByb3BzLCByb290KTtcbiAgICB2YXIgcm9sZSA9IHByb3BzLnJvbGUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgYXJpYUxhYmVsID0gcHJvcHMuYXJpYUxhYmVsLCBhcmlhTGFiZWxsZWRCeSA9IHByb3BzLmFyaWFMYWJlbGxlZEJ5LCBhcmlhRGVzY3JpYmVkQnkgPSBwcm9wcy5hcmlhRGVzY3JpYmVkQnksIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIG9uRGlzbWlzcyA9IHByb3BzLm9uRGlzbWlzcztcbiAgICB2YXIgbmVlZHNWZXJ0aWNhbFNjcm9sbEJhciA9IHVzZVNjcm9sbGJhckFzeW5jKHByb3BzLCByb290KTtcbiAgICB2YXIgb25LZXlEb3duID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBzd2l0Y2ggKGV2LndoaWNoKSB7XG4gICAgICAgICAgICBjYXNlIEtleUNvZGVzLmVzY2FwZTpcbiAgICAgICAgICAgICAgICBpZiAob25EaXNtaXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRGlzbWlzcyhldik7XG4gICAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0sIFtvbkRpc21pc3NdKTtcbiAgICB2YXIgd2luID0gdXNlV2luZG93KCk7XG4gICAgdXNlT25FdmVudCh3aW4sICdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oeyByZWY6IG1lcmdlZFJvb3RSZWYgfSwgZ2V0TmF0aXZlUHJvcHMocHJvcHMsIGRpdlByb3BlcnRpZXMpLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByb2xlOiByb2xlLCBcImFyaWEtbGFiZWxcIjogYXJpYUxhYmVsLCBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSwgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeSwgb25LZXlEb3duOiBvbktleURvd24sIHN0eWxlOiBfX2Fzc2lnbih7IG92ZXJmbG93WTogbmVlZHNWZXJ0aWNhbFNjcm9sbEJhciA/ICdzY3JvbGwnIDogdW5kZWZpbmVkLCBvdXRsaW5lOiAnbm9uZScgfSwgc3R5bGUpIH0pLCBjaGlsZHJlbikpO1xufSk7XG5Qb3B1cC5kaXNwbGF5TmFtZSA9ICdQb3B1cCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qb3B1cC5qcy5tYXAiLCJ2YXIgX2E7XG5pbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxIaW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL0RpcmVjdGlvbmFsSGludCc7XG5pbXBvcnQgeyBjc3MsIGRpdlByb3BlcnRpZXMsIGVsZW1lbnRDb250YWlucywgZm9jdXNGaXJzdENoaWxkLCBnZXROYXRpdmVQcm9wcywgb24sIHNoYWxsb3dDb21wYXJlLCBnZXRQcm9wc1dpdGhEZWZhdWx0cywgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgcG9zaXRpb25DYWxsb3V0LCBSZWN0YW5nbGVFZGdlLCBwb3NpdGlvbkNhcmQsIGdldEJvdW5kc0Zyb21UYXJnZXRXaW5kb3cgfSBmcm9tICcuLi8uLi9Qb3NpdGlvbmluZyc7XG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJy4uLy4uL1BvcHVwJztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBBbmltYXRpb25DbGFzc05hbWVzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG5pbXBvcnQgeyB1c2VNZXJnZWRSZWZzLCB1c2VBc3luYywgdXNlQ29uc3QsIHVzZVRhcmdldCwgdXNlT25FdmVudCB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG52YXIgQ09NUE9ORU5UX05BTUUgPSAnQ2FsbG91dENvbnRlbnRCYXNlJztcbnZhciBBTklNQVRJT05TID0gKF9hID0ge30sXG4gICAgX2FbUmVjdGFuZ2xlRWRnZS50b3BdID0gQW5pbWF0aW9uQ2xhc3NOYW1lcy5zbGlkZVVwSW4xMCxcbiAgICBfYVtSZWN0YW5nbGVFZGdlLmJvdHRvbV0gPSBBbmltYXRpb25DbGFzc05hbWVzLnNsaWRlRG93bkluMTAsXG4gICAgX2FbUmVjdGFuZ2xlRWRnZS5sZWZ0XSA9IEFuaW1hdGlvbkNsYXNzTmFtZXMuc2xpZGVMZWZ0SW4xMCxcbiAgICBfYVtSZWN0YW5nbGVFZGdlLnJpZ2h0XSA9IEFuaW1hdGlvbkNsYXNzTmFtZXMuc2xpZGVSaWdodEluMTAsXG4gICAgX2EpO1xudmFyIEJFQUtfT1JJR0lOX1BPU0lUSU9OID0geyB0b3A6IDAsIGxlZnQ6IDAgfTtcbi8vIE1pY3Jvc29mdCBFZGdlIHdpbGwgb3ZlcndyaXRlIGlubGluZSBzdHlsZXMgaWYgdGhlcmUgaXMgYW4gYW5pbWF0aW9uIHBlcnRhaW5pbmcgdG8gdGhhdCBzdHlsZS5cbi8vIFRvIGhlbHAgZW5zdXJlIHRoYXQgZWRnZSB3aWxsIHJlc3BlY3QgdGhlIG9mZnNjcmVlbiBzdHlsZSBvcGFjaXR5XG4vLyBmaWx0ZXIgbmVlZHMgdG8gYmUgYWRkZWQgYXMgYW4gYWRkaXRpb25hbCB3YXkgdG8gc2V0IG9wYWNpdHkuXG4vLyBBbHNvIHNldCBwb2ludGVyLWV2ZW50czogbm9uZSBzbyB0aGF0IHRoZSBjYWxsb3V0IHdpbGwgbm90IG9jY2x1ZGUgdGhlIGVsZW1lbnQgaXQgaXNcbi8vIGdvaW5nIHRvIGJlIHBvc2l0aW9uZWQgYWdhaW5zdFxudmFyIE9GRl9TQ1JFRU5fU1RZTEUgPSB7XG4gICAgb3BhY2l0eTogMCxcbiAgICBmaWx0ZXI6ICdvcGFjaXR5KDApJyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG59O1xuLy8gcm9sZSBhbmQgcm9sZSBkZXNjcmlwdGlvbiBnbyBoYW5kLWluLWhhbmQuIEJvdGggd291bGQgYmUgaW5jbHVkZWQgYnkgc3ByZWFkaW5nIGdldE5hdGl2ZVByb3BzIGZvciBhIGJhc2ljIGVsZW1lbnRcbi8vIFRoaXMgY29uc3RhbnQgYXJyYXkgY2FuIGJlIHVzZWQgdG8gZmlsdGVyIHRoZXNlIG91dCBvZiBuYXRpdmUgcHJvcHMgc3ByZWFkIG9uIGNhbGxvdXQgcm9vdCBhbmQgYXBwbHkgdGhlbSB0b2dldGhlciBvblxuLy8gY2FsbG91dE1haW4gKHRoZSBQb3B1cCBjb21wb25lbnQgd2l0aGluIHRoZSBjYWxsb3V0KVxudmFyIEFSSUFfUk9MRV9BVFRSSUJVVEVTID0gWydyb2xlJywgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJ107XG52YXIgREVGQVVMVF9QUk9QUyA9IHtcbiAgICBwcmV2ZW50RGlzbWlzc09uTG9zdEZvY3VzOiBmYWxzZSxcbiAgICBwcmV2ZW50RGlzbWlzc09uU2Nyb2xsOiBmYWxzZSxcbiAgICBwcmV2ZW50RGlzbWlzc09uUmVzaXplOiBmYWxzZSxcbiAgICBpc0JlYWtWaXNpYmxlOiB0cnVlLFxuICAgIGJlYWtXaWR0aDogMTYsXG4gICAgZ2FwU3BhY2U6IDAsXG4gICAgbWluUGFnZVBhZGRpbmc6IDgsXG4gICAgZGlyZWN0aW9uYWxIaW50OiBEaXJlY3Rpb25hbEhpbnQuYm90dG9tQXV0b0VkZ2UsXG59O1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oe1xuICAgIGRpc2FibGVDYWNoaW5nOiB0cnVlLCAvLyBkaXNhYmxpbmcgY2FjaGluZyBiZWNhdXNlIHN0eWxlc1Byb3AucG9zaXRpb24gbXV0YXRlcyBvZnRlblxufSk7XG4vKipcbiAqIChIb29rKSB0byByZXR1cm4gYSBmdW5jdGlvbiB0byBsYXppbHkgZmV0Y2ggdGhlIGJvdW5kcyBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgZm9yIHRoZSBjYWxsb3V0LlxuICovXG5mdW5jdGlvbiB1c2VCb3VuZHMoX2EsIHRhcmdldFJlZiwgdGFyZ2V0V2luZG93KSB7XG4gICAgdmFyIGJvdW5kcyA9IF9hLmJvdW5kcywgX2IgPSBfYS5taW5QYWdlUGFkZGluZywgbWluUGFnZVBhZGRpbmcgPSBfYiA9PT0gdm9pZCAwID8gREVGQVVMVF9QUk9QUy5taW5QYWdlUGFkZGluZyA6IF9iLCB0YXJnZXQgPSBfYS50YXJnZXQ7XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLCB0YXJnZXRXaW5kb3dSZXNpemVkID0gX2NbMF0sIHNldFRhcmdldFdpbmRvd1Jlc2l6ZWQgPSBfY1sxXTtcbiAgICB2YXIgY2FjaGVkQm91bmRzID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIGdldEJvdW5kcyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFjYWNoZWRCb3VuZHMuY3VycmVudCB8fCB0YXJnZXRXaW5kb3dSZXNpemVkKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudEJvdW5kcyA9IHR5cGVvZiBib3VuZHMgPT09ICdmdW5jdGlvbicgPyAodGFyZ2V0V2luZG93ID8gYm91bmRzKHRhcmdldCwgdGFyZ2V0V2luZG93KSA6IHVuZGVmaW5lZCkgOiBib3VuZHM7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRCb3VuZHMgJiYgdGFyZ2V0V2luZG93KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEJvdW5kcyA9IGdldEJvdW5kc0Zyb21UYXJnZXRXaW5kb3codGFyZ2V0UmVmLmN1cnJlbnQsIHRhcmdldFdpbmRvdyk7XG4gICAgICAgICAgICAgICAgY3VycmVudEJvdW5kcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBjdXJyZW50Qm91bmRzLnRvcCArIG1pblBhZ2VQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBjdXJyZW50Qm91bmRzLmxlZnQgKyBtaW5QYWdlUGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGN1cnJlbnRCb3VuZHMucmlnaHQgLSBtaW5QYWdlUGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBjdXJyZW50Qm91bmRzLmJvdHRvbSAtIG1pblBhZ2VQYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogY3VycmVudEJvdW5kcy53aWR0aCAtIG1pblBhZ2VQYWRkaW5nICogMixcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBjdXJyZW50Qm91bmRzLmhlaWdodCAtIG1pblBhZ2VQYWRkaW5nICogMixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FjaGVkQm91bmRzLmN1cnJlbnQgPSBjdXJyZW50Qm91bmRzO1xuICAgICAgICAgICAgdGFyZ2V0V2luZG93UmVzaXplZCAmJiBzZXRUYXJnZXRXaW5kb3dSZXNpemVkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVkQm91bmRzLmN1cnJlbnQ7XG4gICAgfSwgW2JvdW5kcywgbWluUGFnZVBhZGRpbmcsIHRhcmdldCwgdGFyZ2V0UmVmLCB0YXJnZXRXaW5kb3csIHRhcmdldFdpbmRvd1Jlc2l6ZWRdKTtcbiAgICB2YXIgYXN5bmMgPSB1c2VBc3luYygpO1xuICAgIHVzZU9uRXZlbnQodGFyZ2V0V2luZG93LCAncmVzaXplJywgYXN5bmMuZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICBzZXRUYXJnZXRXaW5kb3dSZXNpemVkKHRydWUpO1xuICAgIH0sIDUwMCwgeyBsZWFkaW5nOiB0cnVlIH0pKTtcbiAgICByZXR1cm4gZ2V0Qm91bmRzO1xufVxuLyoqXG4gKiAoSG9vaykgdG8gcmV0dXJuIHRoZSBtYXhpbXVtIGF2YWlsYWJsZSBoZWlnaHQgZm9yIHRoZSBDYWxsb3V0IHRvIHJlbmRlciBpbnRvLlxuICovXG5mdW5jdGlvbiB1c2VNYXhIZWlnaHQoX2EsIGdldEJvdW5kcywgcG9zaXRpb25zKSB7XG4gICAgdmFyIF9iO1xuICAgIHZhciBjYWxsb3V0TWF4SGVpZ2h0ID0gX2EuY2FsbG91dE1heEhlaWdodCwgZmluYWxIZWlnaHQgPSBfYS5maW5hbEhlaWdodCwgZGlyZWN0aW9uYWxIaW50ID0gX2EuZGlyZWN0aW9uYWxIaW50LCBkaXJlY3Rpb25hbEhpbnRGaXhlZCA9IF9hLmRpcmVjdGlvbmFsSGludEZpeGVkLCBoaWRkZW4gPSBfYS5oaWRkZW47XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoKSwgbWF4SGVpZ2h0ID0gX2NbMF0sIHNldE1heEhlaWdodCA9IF9jWzFdO1xuICAgIHZhciBfZCA9IChfYiA9IHBvc2l0aW9ucyA9PT0gbnVsbCB8fCBwb3NpdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBvc2l0aW9ucy5lbGVtZW50UG9zaXRpb24pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHt9LCB0b3AgPSBfZC50b3AsIGJvdHRvbSA9IF9kLmJvdHRvbTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBfYiA9IChfYSA9IGdldEJvdW5kcygpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fSwgdG9wQm91bmRzID0gX2IudG9wLCBib3R0b21Cb3VuZHMgPSBfYi5ib3R0b207XG4gICAgICAgIHZhciBjYWxjdWxhdGVkSGVpZ2h0O1xuICAgICAgICBpZiAodHlwZW9mIHRvcCA9PT0gJ251bWJlcicgJiYgYm90dG9tQm91bmRzKSB7XG4gICAgICAgICAgICBjYWxjdWxhdGVkSGVpZ2h0ID0gYm90dG9tQm91bmRzIC0gdG9wO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBib3R0b20gPT09ICdudW1iZXInICYmIHR5cGVvZiB0b3BCb3VuZHMgPT09ICdudW1iZXInICYmIGJvdHRvbUJvdW5kcykge1xuICAgICAgICAgICAgY2FsY3VsYXRlZEhlaWdodCA9IGJvdHRvbUJvdW5kcyAtIHRvcEJvdW5kcyAtIGJvdHRvbTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCFjYWxsb3V0TWF4SGVpZ2h0ICYmICFoaWRkZW4pIHx8XG4gICAgICAgICAgICAoY2FsbG91dE1heEhlaWdodCAmJiBjYWxjdWxhdGVkSGVpZ2h0ICYmIGNhbGxvdXRNYXhIZWlnaHQgPiBjYWxjdWxhdGVkSGVpZ2h0KSkge1xuICAgICAgICAgICAgc2V0TWF4SGVpZ2h0KGNhbGN1bGF0ZWRIZWlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNhbGxvdXRNYXhIZWlnaHQpIHtcbiAgICAgICAgICAgIHNldE1heEhlaWdodChjYWxsb3V0TWF4SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldE1heEhlaWdodCh1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgfSwgW2JvdHRvbSwgY2FsbG91dE1heEhlaWdodCwgZmluYWxIZWlnaHQsIGRpcmVjdGlvbmFsSGludCwgZGlyZWN0aW9uYWxIaW50Rml4ZWQsIGdldEJvdW5kcywgaGlkZGVuLCBwb3NpdGlvbnMsIHRvcF0pO1xuICAgIHJldHVybiBtYXhIZWlnaHQ7XG59XG4vKipcbiAqIChIb29rKSB0byBmaW5kIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIENhbGxvdXQuIElmIENhbGxvdXQgaXMgcmVzaXplZCB0aGVuIGEgbmV3IHBvc2l0aW9uIGlzIGNhbGN1bGF0ZWQuXG4gKi9cbmZ1bmN0aW9uIHVzZVBvc2l0aW9ucyhwcm9wcywgaG9zdEVsZW1lbnQsIGNhbGxvdXRFbGVtZW50LCB0YXJnZXRSZWYsIGdldEJvdW5kcykge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKCksIHBvc2l0aW9ucyA9IF9hWzBdLCBzZXRQb3NpdGlvbnMgPSBfYVsxXTtcbiAgICB2YXIgcG9zaXRpb25BdHRlbXB0cyA9IFJlYWN0LnVzZVJlZigwKTtcbiAgICB2YXIgcHJldmlvdXNUYXJnZXQgPSBSZWFjdC51c2VSZWYoKTtcbiAgICB2YXIgYXN5bmMgPSB1c2VBc3luYygpO1xuICAgIHZhciBoaWRkZW4gPSBwcm9wcy5oaWRkZW4sIHRhcmdldCA9IHByb3BzLnRhcmdldCwgZmluYWxIZWlnaHQgPSBwcm9wcy5maW5hbEhlaWdodCwgY2FsbG91dE1heEhlaWdodCA9IHByb3BzLmNhbGxvdXRNYXhIZWlnaHQsIG9uUG9zaXRpb25lZCA9IHByb3BzLm9uUG9zaXRpb25lZCwgZGlyZWN0aW9uYWxIaW50ID0gcHJvcHMuZGlyZWN0aW9uYWxIaW50O1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaGlkZGVuKSB7XG4gICAgICAgICAgICB2YXIgdGltZXJJZF8xID0gYXN5bmMucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIGlmIChob3N0RWxlbWVudC5jdXJyZW50ICYmIGNhbGxvdXRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHJvcHMpLCB7IHRhcmdldDogdGFyZ2V0UmVmLmN1cnJlbnQsIGJvdW5kczogZ2V0Qm91bmRzKCkgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGR1cGxpY2F0ZSBjYWxsb3V0RWxlbWVudCAmIHJlbW92ZSB1c2VNYXhIZWlnaHQncyBtYXhIZWlnaHQgZm9yIHBvc2l0aW9uIGNhbGNcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cGVDYWxsb3V0RWxlbWVudCA9IGNhbGxvdXRFbGVtZW50LmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwZUNhbGxvdXRFbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IGNhbGxvdXRNYXhIZWlnaHQgPyBcIlwiLmNvbmNhdChjYWxsb3V0TWF4SGVpZ2h0KSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBkdXBlQ2FsbG91dEVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBjYWxsb3V0RWxlbWVudC5wYXJlbnRFbGVtZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYXBwZW5kQ2hpbGQoZHVwZUNhbGxvdXRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzUG9zaXRpb25zID0gcHJldmlvdXNUYXJnZXQuY3VycmVudCA9PT0gdGFyZ2V0ID8gcG9zaXRpb25zIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGZpbmFsSGVpZ2h0IGdpdmVuIHRoZW4gd2UgYXNzdW1lIHRoYXQgdGhlIHVzZXIga25vd3MgYW5kIHdpbGwgaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgcG9zaXRpb25pbmcgYWRqdXN0bWVudHMgc28gd2Ugc2hvdWxkIGNhbGwgcG9zaXRpb25DYXJkXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXdQb3NpdGlvbnMgPSBmaW5hbEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwb3NpdGlvbkNhcmQoY3VycmVudFByb3BzLCBob3N0RWxlbWVudC5jdXJyZW50LCBkdXBlQ2FsbG91dEVsZW1lbnQsIHByZXZpb3VzUG9zaXRpb25zKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwb3NpdGlvbkNhbGxvdXQoY3VycmVudFByb3BzLCBob3N0RWxlbWVudC5jdXJyZW50LCBkdXBlQ2FsbG91dEVsZW1lbnQsIHByZXZpb3VzUG9zaXRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xlYW4gdXAgZHVwbGljYXRlIGNhbGxvdXRFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIChfYiA9IGNhbGxvdXRFbGVtZW50LnBhcmVudEVsZW1lbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZW1vdmVDaGlsZChkdXBlQ2FsbG91dEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIG5ldyBwb3NpdGlvbiBvbmx5IHdoZW4gdGhlIHBvc2l0aW9ucyBkbyBub3QgZXhpc3Qgb3Igb25lIG9mIHRoZSBuZXcgY2FsbG91dCBwb3NpdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGlmZmVyZW50LiBUaGUgcG9zaXRpb24gc2hvdWxkIG5vdCBjaGFuZ2UgaWYgdGhlIHBvc2l0aW9uIGlzIHdpdGhpbiAyIGRlY2ltYWwgcGxhY2VzLlxuICAgICAgICAgICAgICAgICAgICBpZiAoKCFwb3NpdGlvbnMgJiYgbmV3UG9zaXRpb25zKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHBvc2l0aW9ucyAmJiBuZXdQb3NpdGlvbnMgJiYgIWFyZVBvc2l0aW9uc0VxdWFsKHBvc2l0aW9ucywgbmV3UG9zaXRpb25zKSAmJiBwb3NpdGlvbkF0dGVtcHRzLmN1cnJlbnQgPCA1KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCByZXBvc2l0aW9uIHRoZSBjYWxsb3V0IG1vcmUgdGhhbiBhIGZldyB0aW1lcywgaWYgaXQgaXMgdGhlbiB0aGUgY29udGVudCBpcyBsaWtlbHkgcmVzaXppbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB3ZSBzaG91bGQgc3RvcCB0cnlpbmcgdG8gcmVwb3NpdGlvbiB0byBwcmV2ZW50IGEgc3RhY2sgb3ZlcmZsb3cuXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbkF0dGVtcHRzLmN1cnJlbnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFBvc2l0aW9ucyhuZXdQb3NpdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBvc2l0aW9uQXR0ZW1wdHMuY3VycmVudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2FsbCB0aGUgb25Qb3NpdGlvbmVkIGNhbGxiYWNrIGlmIHRoZSBjYWxsb3V0IGhhcyBiZWVuIHJlLXBvc2l0aW9uZWQgYXQgbGVhc3Qgb25jZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQXR0ZW1wdHMuY3VycmVudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvc2l0aW9uZWQgPT09IG51bGwgfHwgb25Qb3NpdGlvbmVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblBvc2l0aW9uZWQocG9zaXRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGNhbGxvdXRFbGVtZW50KTtcbiAgICAgICAgICAgIHByZXZpb3VzVGFyZ2V0LmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGFzeW5jLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWRfMSk7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNUYXJnZXQuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBXaGVuIHRoZSBjYWxsb3V0IGlzIGhpZGRlbiwgY2xlYXIgcG9zaXRpb24gc3RhdGUgc28gdGhhdCBpdCBpcyBub3QgYWNjaWRlbnRhbGx5IHVzZWQgbmV4dCByZW5kZXIuXG4gICAgICAgICAgICBzZXRQb3NpdGlvbnModW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHBvc2l0aW9uQXR0ZW1wdHMuY3VycmVudCA9IDA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGhpZGRlbixcbiAgICAgICAgZGlyZWN0aW9uYWxIaW50LFxuICAgICAgICBhc3luYyxcbiAgICAgICAgY2FsbG91dEVsZW1lbnQsXG4gICAgICAgIGNhbGxvdXRNYXhIZWlnaHQsXG4gICAgICAgIGhvc3RFbGVtZW50LFxuICAgICAgICB0YXJnZXRSZWYsXG4gICAgICAgIGZpbmFsSGVpZ2h0LFxuICAgICAgICBnZXRCb3VuZHMsXG4gICAgICAgIG9uUG9zaXRpb25lZCxcbiAgICAgICAgcG9zaXRpb25zLFxuICAgICAgICBwcm9wcyxcbiAgICAgICAgdGFyZ2V0LFxuICAgIF0pO1xuICAgIHJldHVybiBwb3NpdGlvbnM7XG59XG4vKipcbiAqIChIb29rKSB0byBzZXQgdXAgYmVoYXZpb3IgdG8gYXV0b21hdGljYWxseSBmb2N1cyB0aGUgY2FsbG91dCB3aGVuIGl0IGFwcGVhcnMsIGlmIGluZGljYXRlZCBieSBwcm9wcy5cbiAqL1xuZnVuY3Rpb24gdXNlQXV0b0ZvY3VzKF9hLCBwb3NpdGlvbnMsIGNhbGxvdXRFbGVtZW50KSB7XG4gICAgdmFyIGhpZGRlbiA9IF9hLmhpZGRlbiwgc2V0SW5pdGlhbEZvY3VzID0gX2Euc2V0SW5pdGlhbEZvY3VzO1xuICAgIHZhciBhc3luYyA9IHVzZUFzeW5jKCk7XG4gICAgdmFyIGhhc1Bvc2l0aW9ucyA9ICEhcG9zaXRpb25zO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaGlkZGVuICYmIHNldEluaXRpYWxGb2N1cyAmJiBoYXNQb3NpdGlvbnMgJiYgY2FsbG91dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHZhciB0aW1lcklkXzIgPSBhc3luYy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gZm9jdXNGaXJzdENoaWxkKGNhbGxvdXRFbGVtZW50KTsgfSwgY2FsbG91dEVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzeW5jLmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWRfMik7IH07XG4gICAgICAgIH1cbiAgICB9LCBbaGlkZGVuLCBoYXNQb3NpdGlvbnMsIGFzeW5jLCBjYWxsb3V0RWxlbWVudCwgc2V0SW5pdGlhbEZvY3VzXSk7XG59XG4vKipcbiAqIChIb29rKSB0byBzZXQgdXAgdmFyaW91cyBoYW5kbGVycyB0byBkaXNtaXNzIHRoZSBwb3B1cCB3aGVuIGl0IGxvc2VzIGZvY3VzIG9yIHRoZSB3aW5kb3cgc2Nyb2xscyBvciBzaW1pbGFyIGNhc2VzLlxuICovXG5mdW5jdGlvbiB1c2VEaXNtaXNzSGFuZGxlcnMoX2EsIHBvc2l0aW9ucywgaG9zdEVsZW1lbnQsIHRhcmdldFJlZiwgdGFyZ2V0V2luZG93KSB7XG4gICAgdmFyIGhpZGRlbiA9IF9hLmhpZGRlbiwgb25EaXNtaXNzID0gX2Eub25EaXNtaXNzLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBwcmV2ZW50RGlzbWlzc09uU2Nyb2xsID0gX2EucHJldmVudERpc21pc3NPblNjcm9sbCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgcHJldmVudERpc21pc3NPblJlc2l6ZSA9IF9hLnByZXZlbnREaXNtaXNzT25SZXNpemUsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHByZXZlbnREaXNtaXNzT25Mb3N0Rm9jdXMgPSBfYS5wcmV2ZW50RGlzbWlzc09uTG9zdEZvY3VzLCBkaXNtaXNzT25UYXJnZXRDbGljayA9IF9hLmRpc21pc3NPblRhcmdldENsaWNrLCBzaG91bGREaXNtaXNzT25XaW5kb3dGb2N1cyA9IF9hLnNob3VsZERpc21pc3NPbldpbmRvd0ZvY3VzLCBwcmV2ZW50RGlzbWlzc09uRXZlbnQgPSBfYS5wcmV2ZW50RGlzbWlzc09uRXZlbnQ7XG4gICAgdmFyIGlzTW91c2VEb3duT25Qb3B1cCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgdmFyIGFzeW5jID0gdXNlQXN5bmMoKTtcbiAgICB2YXIgbW91c2VEb3duSGFuZGxlcnMgPSB1c2VDb25zdChbXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzTW91c2VEb3duT25Qb3B1cC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaXNNb3VzZURvd25PblBvcHVwLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICBdKTtcbiAgICB2YXIgcG9zaXRpb25zRXhpc3RzID0gISFwb3NpdGlvbnM7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRpc21pc3NPblNjcm9sbCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uc0V4aXN0cyAmJiAhcHJldmVudERpc21pc3NPblNjcm9sbCkge1xuICAgICAgICAgICAgICAgIGRpc21pc3NPbkNsaWNrT3JTY3JvbGwoZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZGlzbWlzc09uUmVzaXplID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoIXByZXZlbnREaXNtaXNzT25SZXNpemUgJiYgIShwcmV2ZW50RGlzbWlzc09uRXZlbnQgJiYgcHJldmVudERpc21pc3NPbkV2ZW50KGV2KSkpIHtcbiAgICAgICAgICAgICAgICBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRpc21pc3MoZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgZGlzbWlzc09uTG9zdEZvY3VzID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoIXByZXZlbnREaXNtaXNzT25Mb3N0Rm9jdXMpIHtcbiAgICAgICAgICAgICAgICBkaXNtaXNzT25DbGlja09yU2Nyb2xsKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGRpc21pc3NPbkNsaWNrT3JTY3JvbGwgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBldmVudFBhdGhzID0gZXYuY29tcG9zZWRQYXRoID8gZXYuY29tcG9zZWRQYXRoKCkgOiBbXTtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBldmVudFBhdGhzLmxlbmd0aCA+IDAgPyBldmVudFBhdGhzWzBdIDogZXYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlzRXZlbnRUYXJnZXRPdXRzaWRlQ2FsbG91dCA9IGhvc3RFbGVtZW50LmN1cnJlbnQgJiYgIWVsZW1lbnRDb250YWlucyhob3N0RWxlbWVudC5jdXJyZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgLy8gSWYgbW91c2UgaXMgcHJlc3NlZCBkb3duIG9uIGNhbGxvdXQgYnV0IG1vdmVkIG91dHNpZGUgdGhlbiByZWxlYXNlZCwgZG9uJ3QgZGlzbWlzcyB0aGUgY2FsbG91dC5cbiAgICAgICAgICAgIGlmIChpc0V2ZW50VGFyZ2V0T3V0c2lkZUNhbGxvdXQgJiYgaXNNb3VzZURvd25PblBvcHVwLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBpc01vdXNlRG93bk9uUG9wdXAuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIXRhcmdldFJlZi5jdXJyZW50ICYmIGlzRXZlbnRUYXJnZXRPdXRzaWRlQ2FsbG91dCkgfHxcbiAgICAgICAgICAgICAgICAoZXYudGFyZ2V0ICE9PSB0YXJnZXRXaW5kb3cgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNFdmVudFRhcmdldE91dHNpZGVDYWxsb3V0ICYmXG4gICAgICAgICAgICAgICAgICAgICghdGFyZ2V0UmVmLmN1cnJlbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICdzdG9wUHJvcGFnYXRpb24nIGluIHRhcmdldFJlZi5jdXJyZW50IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNtaXNzT25UYXJnZXRDbGljayB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCAhPT0gdGFyZ2V0UmVmLmN1cnJlbnQgJiYgIWVsZW1lbnRDb250YWlucyh0YXJnZXRSZWYuY3VycmVudCwgdGFyZ2V0KSkpKSkge1xuICAgICAgICAgICAgICAgIGlmIChwcmV2ZW50RGlzbWlzc09uRXZlbnQgJiYgcHJldmVudERpc21pc3NPbkV2ZW50KGV2KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRGlzbWlzcyhldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciBkaXNtaXNzT25UYXJnZXRXaW5kb3dCbHVyID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgICAgICBpZiAoIXNob3VsZERpc21pc3NPbldpbmRvd0ZvY3VzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCgocHJldmVudERpc21pc3NPbkV2ZW50ICYmICFwcmV2ZW50RGlzbWlzc09uRXZlbnQoZXYpKSB8fFxuICAgICAgICAgICAgICAgICghcHJldmVudERpc21pc3NPbkV2ZW50ICYmICFwcmV2ZW50RGlzbWlzc09uTG9zdEZvY3VzKSkgJiZcbiAgICAgICAgICAgICAgICAhKHRhcmdldFdpbmRvdyA9PT0gbnVsbCB8fCB0YXJnZXRXaW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFdpbmRvdy5kb2N1bWVudC5oYXNGb2N1cygpKSAmJlxuICAgICAgICAgICAgICAgIGV2LnJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRpc21pc3MoZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICAvLyBUaGlzIGlzIGFkZGVkIHNvIHRoZSBjYWxsb3V0IHdpbGwgZGlzbWlzcyB3aGVuIHRoZSB3aW5kb3cgaXMgc2Nyb2xsZWRcbiAgICAgICAgLy8gYnV0IG5vdCB3aGVuIHNvbWV0aGluZyBpbnNpZGUgdGhlIGNhbGxvdXQgaXMgc2Nyb2xsZWQuIFRoZSBkZWxheSBzZWVtc1xuICAgICAgICAvLyB0byBiZSByZXF1aXJlZCB0byBhdm9pZCBSZWFjdCBmaXJpbmcgYW4gYXN5bmMgZm9jdXMgZXZlbnQgaW4gSUUgZnJvbVxuICAgICAgICAvLyB0aGUgdGFyZ2V0IGNoYW5naW5nIGZvY3VzIHF1aWNrbHkgcHJpb3IgdG8gcmVuZGVyaW5nIHRoZSBjYWxsb3V0LlxuICAgICAgICB2YXIgZGlzcG9zYWJsZXNQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgIGFzeW5jLnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICghaGlkZGVuICYmIHRhcmdldFdpbmRvdykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlzcG9zYWJsZXNfMSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uKHRhcmdldFdpbmRvdywgJ3Njcm9sbCcsIGRpc21pc3NPblNjcm9sbCwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbih0YXJnZXRXaW5kb3csICdyZXNpemUnLCBkaXNtaXNzT25SZXNpemUsIHRydWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb24odGFyZ2V0V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2ZvY3VzJywgZGlzbWlzc09uTG9zdEZvY3VzLCB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uKHRhcmdldFdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdjbGljaycsIGRpc21pc3NPbkxvc3RGb2N1cywgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvbih0YXJnZXRXaW5kb3csICdibHVyJywgZGlzbWlzc09uVGFyZ2V0V2luZG93Qmx1ciwgdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zYWJsZXNfMS5mb3JFYWNoKGZ1bmN0aW9uIChkaXNwb3NlKSB7IHJldHVybiBkaXNwb3NlKCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkaXNwb3NhYmxlc1Byb21pc2UudGhlbihmdW5jdGlvbiAoZGlzcG9zZSkgeyByZXR1cm4gZGlzcG9zZSgpOyB9KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIGhpZGRlbixcbiAgICAgICAgYXN5bmMsXG4gICAgICAgIGhvc3RFbGVtZW50LFxuICAgICAgICB0YXJnZXRSZWYsXG4gICAgICAgIHRhcmdldFdpbmRvdyxcbiAgICAgICAgb25EaXNtaXNzLFxuICAgICAgICBzaG91bGREaXNtaXNzT25XaW5kb3dGb2N1cyxcbiAgICAgICAgZGlzbWlzc09uVGFyZ2V0Q2xpY2ssXG4gICAgICAgIHByZXZlbnREaXNtaXNzT25Mb3N0Rm9jdXMsXG4gICAgICAgIHByZXZlbnREaXNtaXNzT25SZXNpemUsXG4gICAgICAgIHByZXZlbnREaXNtaXNzT25TY3JvbGwsXG4gICAgICAgIHBvc2l0aW9uc0V4aXN0cyxcbiAgICAgICAgcHJldmVudERpc21pc3NPbkV2ZW50LFxuICAgIF0pO1xuICAgIHJldHVybiBtb3VzZURvd25IYW5kbGVycztcbn1cbmV4cG9ydCB2YXIgQ2FsbG91dENvbnRlbnRCYXNlID0gUmVhY3QubWVtbyhSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wc1dpdGhvdXREZWZhdWx0cywgZm9yd2FyZGVkUmVmKSB7XG4gICAgdmFyIHByb3BzID0gZ2V0UHJvcHNXaXRoRGVmYXVsdHMoREVGQVVMVF9QUk9QUywgcHJvcHNXaXRob3V0RGVmYXVsdHMpO1xuICAgIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXMsIHN0eWxlID0gcHJvcHMuc3R5bGUsIGFyaWFMYWJlbCA9IHByb3BzLmFyaWFMYWJlbCwgYXJpYURlc2NyaWJlZEJ5ID0gcHJvcHMuYXJpYURlc2NyaWJlZEJ5LCBhcmlhTGFiZWxsZWRCeSA9IHByb3BzLmFyaWFMYWJlbGxlZEJ5LCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGlzQmVha1Zpc2libGUgPSBwcm9wcy5pc0JlYWtWaXNpYmxlLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBiZWFrV2lkdGggPSBwcm9wcy5iZWFrV2lkdGgsIGNhbGxvdXRXaWR0aCA9IHByb3BzLmNhbGxvdXRXaWR0aCwgY2FsbG91dE1heFdpZHRoID0gcHJvcHMuY2FsbG91dE1heFdpZHRoLCBjYWxsb3V0TWluV2lkdGggPSBwcm9wcy5jYWxsb3V0TWluV2lkdGgsIGRvTm90TGF5ZXIgPSBwcm9wcy5kb05vdExheWVyLCBmaW5hbEhlaWdodCA9IHByb3BzLmZpbmFsSGVpZ2h0LCBfYSA9IHByb3BzLmhpZGVPdmVyZmxvdywgaGlkZU92ZXJmbG93ID0gX2EgPT09IHZvaWQgMCA/ICEhZmluYWxIZWlnaHQgOiBfYSwgYmFja2dyb3VuZENvbG9yID0gcHJvcHMuYmFja2dyb3VuZENvbG9yLCBjYWxsb3V0TWF4SGVpZ2h0ID0gcHJvcHMuY2FsbG91dE1heEhlaWdodCwgb25TY3JvbGwgPSBwcm9wcy5vblNjcm9sbCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgX2IgPSBwcm9wcy5zaG91bGRSZXN0b3JlRm9jdXMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHNob3VsZFJlc3RvcmVGb2N1cyA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIHRhcmdldCA9IHByb3BzLnRhcmdldCwgaGlkZGVuID0gcHJvcHMuaGlkZGVuLCBvbkxheWVyTW91bnRlZCA9IHByb3BzLm9uTGF5ZXJNb3VudGVkLCBwb3B1cFByb3BzID0gcHJvcHMucG9wdXBQcm9wcztcbiAgICB2YXIgaG9zdEVsZW1lbnQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUobnVsbCksIGNhbGxvdXRFbGVtZW50ID0gX2NbMF0sIHNldENhbGxvdXRFbGVtZW50ID0gX2NbMV07XG4gICAgdmFyIGNhbGxvdXRDYWxsYmFjayA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChjYWxsb3V0RWwpIHtcbiAgICAgICAgc2V0Q2FsbG91dEVsZW1lbnQoY2FsbG91dEVsKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHJvb3RSZWYgPSB1c2VNZXJnZWRSZWZzKGhvc3RFbGVtZW50LCBmb3J3YXJkZWRSZWYpO1xuICAgIHZhciBfZCA9IHVzZVRhcmdldChwcm9wcy50YXJnZXQsIHtcbiAgICAgICAgY3VycmVudDogY2FsbG91dEVsZW1lbnQsXG4gICAgfSksIHRhcmdldFJlZiA9IF9kWzBdLCB0YXJnZXRXaW5kb3cgPSBfZFsxXTtcbiAgICB2YXIgZ2V0Qm91bmRzID0gdXNlQm91bmRzKHByb3BzLCB0YXJnZXRSZWYsIHRhcmdldFdpbmRvdyk7XG4gICAgdmFyIHBvc2l0aW9ucyA9IHVzZVBvc2l0aW9ucyhwcm9wcywgaG9zdEVsZW1lbnQsIGNhbGxvdXRFbGVtZW50LCB0YXJnZXRSZWYsIGdldEJvdW5kcyk7XG4gICAgdmFyIG1heEhlaWdodCA9IHVzZU1heEhlaWdodChwcm9wcywgZ2V0Qm91bmRzLCBwb3NpdGlvbnMpO1xuICAgIHZhciBfZSA9IHVzZURpc21pc3NIYW5kbGVycyhwcm9wcywgcG9zaXRpb25zLCBob3N0RWxlbWVudCwgdGFyZ2V0UmVmLCB0YXJnZXRXaW5kb3cpLCBtb3VzZURvd25PblBvcHVwID0gX2VbMF0sIG1vdXNlVXBPblBvcHVwID0gX2VbMV07XG4gICAgLy8gZG8gbm90IHNldCBib3RoIHRvcCBhbmQgYm90dG9tIGNzcyBwcm9wcyBmcm9tIHBvc2l0aW9uc1xuICAgIC8vIGluc3RlYWQsIHVzZSBtYXhIZWlnaHRcbiAgICB2YXIgaXNGb3JjZWRJbkJvdW5kcyA9IChwb3NpdGlvbnMgPT09IG51bGwgfHwgcG9zaXRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwb3NpdGlvbnMuZWxlbWVudFBvc2l0aW9uLnRvcCkgJiYgKHBvc2l0aW9ucyA9PT0gbnVsbCB8fCBwb3NpdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBvc2l0aW9ucy5lbGVtZW50UG9zaXRpb24uYm90dG9tKTtcbiAgICB2YXIgY3NzUG9zaXRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHBvc2l0aW9ucyA9PT0gbnVsbCB8fCBwb3NpdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBvc2l0aW9ucy5lbGVtZW50UG9zaXRpb24pLCB7IG1heEhlaWdodDogbWF4SGVpZ2h0IH0pO1xuICAgIGlmIChpc0ZvcmNlZEluQm91bmRzKSB7XG4gICAgICAgIGNzc1Bvc2l0aW9ucy5ib3R0b20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHVzZUF1dG9Gb2N1cyhwcm9wcywgcG9zaXRpb25zLCBjYWxsb3V0RWxlbWVudCk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFoaWRkZW4pIHtcbiAgICAgICAgICAgIG9uTGF5ZXJNb3VudGVkID09PSBudWxsIHx8IG9uTGF5ZXJNb3VudGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkxheWVyTW91bnRlZCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgLS0gc2hvdWxkIG9ubHkgcnVuIGlmIGhpZGRlbiBjaGFuZ2VzXG4gICAgfSwgW2hpZGRlbl0pO1xuICAgIC8vIElmIHRoZXJlIGlzIG5vIHRhcmdldCB3aW5kb3cgdGhlbiB3ZSBhcmUgbGlrZWx5IGluIHNlcnZlciBzaWRlIHJlbmRlcmluZyBhbmQgd2Ugc2hvdWxkIG5vdCByZW5kZXIgYW55dGhpbmcuXG4gICAgaWYgKCF0YXJnZXRXaW5kb3cpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBvdmVyZmxvd1lIaWRkZW4gPSBoaWRlT3ZlcmZsb3c7XG4gICAgdmFyIGJlYWtWaXNpYmxlID0gaXNCZWFrVmlzaWJsZSAmJiAhIXRhcmdldDtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7XG4gICAgICAgIHRoZW1lOiBwcm9wcy50aGVtZSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIG92ZXJmbG93WUhpZGRlbjogb3ZlcmZsb3dZSGlkZGVuLFxuICAgICAgICBjYWxsb3V0V2lkdGg6IGNhbGxvdXRXaWR0aCxcbiAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbnMsXG4gICAgICAgIGJlYWtXaWR0aDogYmVha1dpZHRoLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcixcbiAgICAgICAgY2FsbG91dE1heFdpZHRoOiBjYWxsb3V0TWF4V2lkdGgsXG4gICAgICAgIGNhbGxvdXRNaW5XaWR0aDogY2FsbG91dE1pbldpZHRoLFxuICAgICAgICBkb05vdExheWVyOiBkb05vdExheWVyLFxuICAgIH0pO1xuICAgIHZhciBvdmVyZmxvd1N0eWxlID0gX19hc3NpZ24oX19hc3NpZ24oeyBtYXhIZWlnaHQ6IGNhbGxvdXRNYXhIZWlnaHQgPyBjYWxsb3V0TWF4SGVpZ2h0IDogJzEwMCUnIH0sIHN0eWxlKSwgKG92ZXJmbG93WUhpZGRlbiAmJiB7IG92ZXJmbG93WTogJ2hpZGRlbicgfSkpO1xuICAgIHZhciB2aXNpYmlsaXR5U3R5bGUgPSBwcm9wcy5oaWRkZW4gPyB7IHZpc2liaWxpdHk6ICdoaWRkZW4nIH0gOiB1bmRlZmluZWQ7XG4gICAgLy8gUmVhY3QuQ1NTUHJvcGVydGllcyBkb2VzIG5vdCB1bmRlcnN0YW5kIElSYXdTdHlsZSwgc28gdGhlIGlubGluZSBhbmltYXRpb25zIHdpbGwgbmVlZCB0byBiZSBjYXN0IGFzIGFueSBmb3Igbm93LlxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHJlZjogcm9vdFJlZiwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmNvbnRhaW5lciwgc3R5bGU6IHZpc2liaWxpdHlTdHlsZSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCBnZXROYXRpdmVQcm9wcyhwcm9wcywgZGl2UHJvcGVydGllcywgQVJJQV9ST0xFX0FUVFJJQlVURVMpLCB7IGNsYXNzTmFtZTogY3NzKGNsYXNzTmFtZXMucm9vdCwgcG9zaXRpb25zICYmIHBvc2l0aW9ucy50YXJnZXRFZGdlICYmIEFOSU1BVElPTlNbcG9zaXRpb25zLnRhcmdldEVkZ2VdKSwgc3R5bGU6IHBvc2l0aW9ucyA/IF9fYXNzaWduKHt9LCBjc3NQb3NpdGlvbnMpIDogT0ZGX1NDUkVFTl9TVFlMRSwgXG4gICAgICAgICAgICAvLyBTYWZhcmkgYW5kIEZpcmVmb3ggb24gTWFjIE9TIHJlcXVpcmVzIHRoaXMgdG8gYmFjay1zdG9wIGNsaWNrIGV2ZW50cyBzbyBmb2N1cyByZW1haW5zIGluIHRoZSBDYWxsb3V0LlxuICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9idXR0b24jQ2xpY2tpbmdfYW5kX2ZvY3VzXG4gICAgICAgICAgICB0YWJJbmRleDogLTEsIHJlZjogY2FsbG91dENhbGxiYWNrIH0pLFxuICAgICAgICAgICAgYmVha1Zpc2libGUgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5iZWFrLCBzdHlsZTogZ2V0QmVha1Bvc2l0aW9uKHBvc2l0aW9ucykgfSksXG4gICAgICAgICAgICBiZWFrVmlzaWJsZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmJlYWtDdXJ0YWluIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQb3B1cFxuICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGdldE5hdGl2ZUVsZW1lbnRQcm9wcyBmb3Igcm9sZSBhbmQgcm9sZWRlc2NyaXB0aW9uIGJlY2F1c2UgaXQgd2lsbCBhbHNvXG4gICAgICAgICAgICAvLyBwYXNzIHRocm91Z2ggZGF0YS0qIHByb3BzIChyZXN1bHRpbmcgaW4gdGhlbSBiZWluZyB1c2VkIGluIHR3byBwbGFjZXMpXG4gICAgICAgICAgICAsIF9fYXNzaWduKHsgXG4gICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGdldE5hdGl2ZUVsZW1lbnRQcm9wcyBmb3Igcm9sZSBhbmQgcm9sZWRlc2NyaXB0aW9uIGJlY2F1c2UgaXQgd2lsbCBhbHNvXG4gICAgICAgICAgICAgICAgLy8gcGFzcyB0aHJvdWdoIGRhdGEtKiBwcm9wcyAocmVzdWx0aW5nIGluIHRoZW0gYmVpbmcgdXNlZCBpbiB0d28gcGxhY2VzKVxuICAgICAgICAgICAgICAgIHJvbGU6IHByb3BzLnJvbGUsIFwiYXJpYS1yb2xlZGVzY3JpcHRpb25cIjogcHJvcHNbJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJ10sIGFyaWFEZXNjcmliZWRCeTogYXJpYURlc2NyaWJlZEJ5LCBhcmlhTGFiZWw6IGFyaWFMYWJlbCwgYXJpYUxhYmVsbGVkQnk6IGFyaWFMYWJlbGxlZEJ5LCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuY2FsbG91dE1haW4sIG9uRGlzbWlzczogcHJvcHMub25EaXNtaXNzLCBvbk1vdXNlRG93bjogbW91c2VEb3duT25Qb3B1cCwgb25Nb3VzZVVwOiBtb3VzZVVwT25Qb3B1cCwgb25SZXN0b3JlRm9jdXM6IHByb3BzLm9uUmVzdG9yZUZvY3VzLCBvblNjcm9sbDogb25TY3JvbGwsIHNob3VsZFJlc3RvcmVGb2N1czogc2hvdWxkUmVzdG9yZUZvY3VzLCBzdHlsZTogb3ZlcmZsb3dTdHlsZSB9LCBwb3B1cFByb3BzKSwgY2hpbGRyZW4pKSkpO1xufSksIGZ1bmN0aW9uIChwcmV2aW91c1Byb3BzLCBuZXh0UHJvcHMpIHtcbiAgICBpZiAoIW5leHRQcm9wcy5zaG91bGRVcGRhdGVXaGVuSGlkZGVuICYmIHByZXZpb3VzUHJvcHMuaGlkZGVuICYmIG5leHRQcm9wcy5oaWRkZW4pIHtcbiAgICAgICAgLy8gRG8gbm90IHVwZGF0ZSB3aGVuIGhpZGRlbi5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaGFsbG93Q29tcGFyZShwcmV2aW91c1Byb3BzLCBuZXh0UHJvcHMpO1xufSk7XG4vKipcbiAqIChVdGlsaXR5KSB0byBmaW5kIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgYENhbGxvdXRgIEJlYWsgcG9zaXRpb24uXG4gKlxuICogQHBhcmFtIHBvc2l0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRCZWFrUG9zaXRpb24ocG9zaXRpb25zKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICB2YXIgYmVha1Bvc2l0aW9uU3R5bGUgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgKF9hID0gcG9zaXRpb25zID09PSBudWxsIHx8IHBvc2l0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcG9zaXRpb25zLmJlYWtQb3NpdGlvbikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVsZW1lbnRQb3NpdGlvbiksIHsgZGlzcGxheTogKChfYiA9IHBvc2l0aW9ucyA9PT0gbnVsbCB8fCBwb3NpdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBvc2l0aW9ucy5iZWFrUG9zaXRpb24pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5oaWRlQmVhaykgPyAnbm9uZScgOiB1bmRlZmluZWQgfSk7XG4gICAgaWYgKCFiZWFrUG9zaXRpb25TdHlsZS50b3AgJiYgIWJlYWtQb3NpdGlvblN0eWxlLmJvdHRvbSAmJiAhYmVha1Bvc2l0aW9uU3R5bGUubGVmdCAmJiAhYmVha1Bvc2l0aW9uU3R5bGUucmlnaHQpIHtcbiAgICAgICAgYmVha1Bvc2l0aW9uU3R5bGUubGVmdCA9IEJFQUtfT1JJR0lOX1BPU0lUSU9OLmxlZnQ7XG4gICAgICAgIGJlYWtQb3NpdGlvblN0eWxlLnRvcCA9IEJFQUtfT1JJR0lOX1BPU0lUSU9OLnRvcDtcbiAgICB9XG4gICAgcmV0dXJuIGJlYWtQb3NpdGlvblN0eWxlO1xufVxuLyoqXG4gKiAoVXRpbGl0eSkgdXNlZCB0byBjb21wYXJlIHR3byBkaWZmZXJlbnQgZWxlbWVudFBvc2l0aW9ucyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5IGFyZSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gcHJldkVsZW1lbnRQb3NpdGlvbnNcbiAqIEBwYXJhbSBuZXdFbGVtZW50UG9zaXRpb25cbiAqL1xuZnVuY3Rpb24gYXJlUG9zaXRpb25zRXF1YWwocHJldkVsZW1lbnRQb3NpdGlvbnMsIG5ld0VsZW1lbnRQb3NpdGlvbikge1xuICAgIHJldHVybiAoY29tcGFyZVBvc2l0aW9ucyhwcmV2RWxlbWVudFBvc2l0aW9ucy5lbGVtZW50UG9zaXRpb24sIG5ld0VsZW1lbnRQb3NpdGlvbi5lbGVtZW50UG9zaXRpb24pICYmXG4gICAgICAgIGNvbXBhcmVQb3NpdGlvbnMocHJldkVsZW1lbnRQb3NpdGlvbnMuYmVha1Bvc2l0aW9uLmVsZW1lbnRQb3NpdGlvbiwgbmV3RWxlbWVudFBvc2l0aW9uLmJlYWtQb3NpdGlvbi5lbGVtZW50UG9zaXRpb24pKTtcbn1cbi8qKlxuICogKFV0aWxpdHkpIHVzZWQgaW4gKiphcmVQb3NpdGlvbnNFcXVhbCoqIHRvIGNvbXBhcmUgdHdvIGRpZmZlcmVudCBlbGVtZW50UG9zaXRpb25zLlxuICpcbiAqIEBwYXJhbSBwcmV2RWxlbWVudFBvc2l0aW9uc1xuICogQHBhcmFtIG5ld0VsZW1lbnRQb3NpdGlvbnNcbiAqL1xuZnVuY3Rpb24gY29tcGFyZVBvc2l0aW9ucyhwcmV2RWxlbWVudFBvc2l0aW9ucywgbmV3RWxlbWVudFBvc2l0aW9ucykge1xuICAgIGZvciAodmFyIGtleSBpbiBuZXdFbGVtZW50UG9zaXRpb25zKSB7XG4gICAgICAgIGlmIChuZXdFbGVtZW50UG9zaXRpb25zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHZhciBvbGRQb3NpdGlvbkVkZ2UgPSBwcmV2RWxlbWVudFBvc2l0aW9uc1trZXldO1xuICAgICAgICAgICAgdmFyIG5ld1Bvc2l0aW9uRWRnZSA9IG5ld0VsZW1lbnRQb3NpdGlvbnNba2V5XTtcbiAgICAgICAgICAgIGlmIChvbGRQb3NpdGlvbkVkZ2UgIT09IHVuZGVmaW5lZCAmJiBuZXdQb3NpdGlvbkVkZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChvbGRQb3NpdGlvbkVkZ2UudG9GaXhlZCgyKSAhPT0gbmV3UG9zaXRpb25FZGdlLnRvRml4ZWQoMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbkNhbGxvdXRDb250ZW50QmFzZS5kaXNwbGF5TmFtZSA9IENPTVBPTkVOVF9OQU1FO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FsbG91dENvbnRlbnQuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBIaWdoQ29udHJhc3RTZWxlY3RvciwgZm9jdXNDbGVhciwgZ2V0R2xvYmFsQ2xhc3NOYW1lcywgWkluZGV4ZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmZ1bmN0aW9uIGdldEJlYWtTdHlsZShiZWFrV2lkdGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IGJlYWtXaWR0aCxcbiAgICAgICAgd2lkdGg6IGJlYWtXaWR0aCxcbiAgICB9O1xufVxudmFyIEdsb2JhbENsYXNzTmFtZXMgPSB7XG4gICAgY29udGFpbmVyOiAnbXMtQ2FsbG91dC1jb250YWluZXInLFxuICAgIHJvb3Q6ICdtcy1DYWxsb3V0JyxcbiAgICBiZWFrOiAnbXMtQ2FsbG91dC1iZWFrJyxcbiAgICBiZWFrQ3VydGFpbjogJ21zLUNhbGxvdXQtYmVha0N1cnRhaW4nLFxuICAgIGNhbGxvdXRNYWluOiAnbXMtQ2FsbG91dC1tYWluJyxcbn07XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgdGhlbWUgPSBwcm9wcy50aGVtZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBvdmVyZmxvd1lIaWRkZW4gPSBwcm9wcy5vdmVyZmxvd1lIaWRkZW4sIGNhbGxvdXRXaWR0aCA9IHByb3BzLmNhbGxvdXRXaWR0aCwgYmVha1dpZHRoID0gcHJvcHMuYmVha1dpZHRoLCBiYWNrZ3JvdW5kQ29sb3IgPSBwcm9wcy5iYWNrZ3JvdW5kQ29sb3IsIGNhbGxvdXRNYXhXaWR0aCA9IHByb3BzLmNhbGxvdXRNYXhXaWR0aCwgY2FsbG91dE1pbldpZHRoID0gcHJvcHMuY2FsbG91dE1pbldpZHRoLCBkb05vdExheWVyID0gcHJvcHMuZG9Ob3RMYXllcjtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoR2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHZhciBzZW1hbnRpY0NvbG9ycyA9IHRoZW1lLnNlbWFudGljQ29sb3JzLCBlZmZlY3RzID0gdGhlbWUuZWZmZWN0cztcbiAgICByZXR1cm4ge1xuICAgICAgICBjb250YWluZXI6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuY29udGFpbmVyLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IGRvTm90TGF5ZXIgPyBaSW5kZXhlcy5MYXllciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGVmZmVjdHMucm91bmRlZENvcm5lcjIsXG4gICAgICAgICAgICAgICAgYm94U2hhZG93OiBlZmZlY3RzLmVsZXZhdGlvbjE2LFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9hID0ge30sXG4gICAgICAgICAgICAgICAgICAgIF9hW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ1dpbmRvd1RleHQnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNDbGVhcigpLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgISFjYWxsb3V0V2lkdGggJiYgeyB3aWR0aDogY2FsbG91dFdpZHRoIH0sXG4gICAgICAgICAgICAhIWNhbGxvdXRNYXhXaWR0aCAmJiB7IG1heFdpZHRoOiBjYWxsb3V0TWF4V2lkdGggfSxcbiAgICAgICAgICAgICEhY2FsbG91dE1pbldpZHRoICYmIHsgbWluV2lkdGg6IGNhbGxvdXRNaW5XaWR0aCB9LFxuICAgICAgICBdLFxuICAgICAgICBiZWFrOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmJlYWssXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzZW1hbnRpY0NvbG9ycy5tZW51QmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06ICdyb3RhdGUoNDVkZWcpJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRCZWFrU3R5bGUoYmVha1dpZHRoKSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciAmJiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBiZWFrQ3VydGFpbjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5iZWFrQ3VydGFpbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzZW1hbnRpY0NvbG9ycy5tZW51QmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGVmZmVjdHMucm91bmRlZENvcm5lcjIsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBjYWxsb3V0TWFpbjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5jYWxsb3V0TWFpbixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNlbWFudGljQ29sb3JzLm1lbnVCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGVmZmVjdHMucm91bmRlZENvcm5lcjIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3ZlcmZsb3dZSGlkZGVuICYmIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdoaWRkZW4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvciAmJiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FsbG91dENvbnRlbnQuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDYWxsb3V0Q29udGVudEJhc2UgfSBmcm9tICcuL0NhbGxvdXRDb250ZW50LmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9DYWxsb3V0Q29udGVudC5zdHlsZXMnO1xuZXhwb3J0IHZhciBDYWxsb3V0Q29udGVudCA9IHN0eWxlZChDYWxsb3V0Q29udGVudEJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdDYWxsb3V0Q29udGVudCcsXG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNhbGxvdXRDb250ZW50LmpzLm1hcCIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFBvcnRhbENvbXBhdENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5jb25zdCBwb3J0YWxDb21wYXRDb250ZXh0RGVmYXVsdFZhbHVlID0gKCk9PigpPT51bmRlZmluZWQ7XG5leHBvcnQgY29uc3QgUG9ydGFsQ29tcGF0Q29udGV4dFByb3ZpZGVyID0gUG9ydGFsQ29tcGF0Q29udGV4dC5Qcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3J0YWxDb21wYXQoKSB7XG4gICAgdmFyIF9SZWFjdF91c2VDb250ZXh0O1xuICAgIHJldHVybiAoX1JlYWN0X3VzZUNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KFBvcnRhbENvbXBhdENvbnRleHQpKSAhPT0gbnVsbCAmJiBfUmVhY3RfdXNlQ29udGV4dCAhPT0gdm9pZCAwID8gX1JlYWN0X3VzZUNvbnRleHQgOiBwb3J0YWxDb21wYXRDb250ZXh0RGVmYXVsdFZhbHVlO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiwgZGl2UHJvcGVydGllcywgZ2V0RG9jdW1lbnQsIGdldE5hdGl2ZVByb3BzLCBnZXRSVEwsIG1lbW9pemVGdW5jdGlvbiwgQ3VzdG9taXplciwgRm9jdXNSZWN0c1Byb3ZpZGVyLCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uLy4uL1N0eWxpbmcnO1xuaW1wb3J0IHsgdXNlTWVyZ2VkUmVmcyB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbigpO1xudmFyIGdldEZhYnJpY1RoZW1lID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uICh0aGVtZSwgaXNSVEwpIHsgcmV0dXJuIGNyZWF0ZVRoZW1lKF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGVtZSksIHsgcnRsOiBpc1JUTCB9KSk7IH0pO1xudmFyIGdldERpciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciB0aGVtZSA9IF9hLnRoZW1lLCBkaXIgPSBfYS5kaXI7XG4gICAgdmFyIGNvbnRleHREaXIgPSBnZXRSVEwodGhlbWUpID8gJ3J0bCcgOiAnbHRyJztcbiAgICB2YXIgcGFnZURpciA9IGdldFJUTCgpID8gJ3J0bCcgOiAnbHRyJztcbiAgICB2YXIgY29tcG9uZW50RGlyID0gZGlyID8gZGlyIDogY29udGV4dERpcjtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBJZiBGYWJyaWMgZGlyICE9PSBjb250ZXh0RGlyXG4gICAgICAgIC8vIE9yIElmIGNvbnRleHREaXIgIT09IHBhZ2VEaXJcbiAgICAgICAgLy8gVGhlbiB3ZSBuZWVkIHRvIHNldCBkaXIgb2YgdGhlIEZhYnJpYyByb290XG4gICAgICAgIHJvb3REaXI6IGNvbXBvbmVudERpciAhPT0gY29udGV4dERpciB8fCBjb21wb25lbnREaXIgIT09IHBhZ2VEaXIgPyBjb21wb25lbnREaXIgOiBkaXIsXG4gICAgICAgIC8vIElmIGRpciAhPT0gY29udGV4dERpciB8fCBwYWdlRGlyXG4gICAgICAgIC8vIHRoZW4gc2V0IGNvbnRleHR1YWwgdGhlbWUgYXJvdW5kIGNvbnRlbnRcbiAgICAgICAgbmVlZHNUaGVtZTogY29tcG9uZW50RGlyICE9PSBjb250ZXh0RGlyLFxuICAgIH07XG59O1xuZXhwb3J0IHZhciBGYWJyaWNCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHRoZW1lID0gcHJvcHMudGhlbWUsIGFwcGx5VGhlbWUgPSBwcm9wcy5hcHBseVRoZW1lLCBhcHBseVRoZW1lVG9Cb2R5ID0gcHJvcHMuYXBwbHlUaGVtZVRvQm9keSwgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgICBhcHBseVRoZW1lOiBhcHBseVRoZW1lLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICB9KTtcbiAgICB2YXIgcm9vdEVsZW1lbnQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdXNlQXBwbHlUaGVtZVRvQm9keShhcHBseVRoZW1lVG9Cb2R5LCBjbGFzc05hbWVzLCByb290RWxlbWVudCk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHVzZVJlbmRlcmVkQ29udGVudChwcm9wcywgY2xhc3NOYW1lcywgcm9vdEVsZW1lbnQsIHJlZikpO1xufSk7XG5GYWJyaWNCYXNlLmRpc3BsYXlOYW1lID0gJ0ZhYnJpY0Jhc2UnO1xuZnVuY3Rpb24gdXNlUmVuZGVyZWRDb250ZW50KHByb3BzLCBfYSwgcm9vdEVsZW1lbnQsIHJlZikge1xuICAgIHZhciByb290ID0gX2Eucm9vdDtcbiAgICB2YXIgX2IgPSBwcm9wcy5hcywgUm9vdCA9IF9iID09PSB2b2lkIDAgPyAnZGl2JyA6IF9iLCBkaXIgPSBwcm9wcy5kaXIsIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gICAgdmFyIGRpdlByb3BzID0gZ2V0TmF0aXZlUHJvcHMocHJvcHMsIGRpdlByb3BlcnRpZXMsIFsnZGlyJ10pO1xuICAgIHZhciBfYyA9IGdldERpcihwcm9wcyksIHJvb3REaXIgPSBfYy5yb290RGlyLCBuZWVkc1RoZW1lID0gX2MubmVlZHNUaGVtZTtcbiAgICB2YXIgcmVuZGVyZWRDb250ZW50ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNSZWN0c1Byb3ZpZGVyLCB7IHByb3ZpZGVyUmVmOiByb290RWxlbWVudCB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFJvb3QsIF9fYXNzaWduKHsgZGlyOiByb290RGlyIH0sIGRpdlByb3BzLCB7IGNsYXNzTmFtZTogcm9vdCwgcmVmOiB1c2VNZXJnZWRSZWZzKHJvb3RFbGVtZW50LCByZWYpIH0pKSkpO1xuICAgIC8vIENyZWF0ZSB0aGUgY29udGV4dHVhbCB0aGVtZSBpZiBjb21wb25lbnQgZGlyZWN0aW9uIGRvZXMgbm90IG1hdGNoIHBhcmVudCBkaXJlY3Rpb24uXG4gICAgaWYgKG5lZWRzVGhlbWUpIHtcbiAgICAgICAgLy8gRGlzYWJsaW5nIFRoZW1lUHJvdmlkZXIgaGVyZSBiZWNhdXNlIHRoZW1lIGRvZXNuJ3QgbmVlZCB0byBiZSByZS1wcm92aWRlZCBieSBUaGVtZVByb3ZpZGVyIGlmIGRpciBoYXMgY2hhbmdlZC5cbiAgICAgICAgcmVuZGVyZWRDb250ZW50ID0gKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDdXN0b21pemVyLCB7IHNldHRpbmdzOiB7IHRoZW1lOiBnZXRGYWJyaWNUaGVtZSh0aGVtZSwgZGlyID09PSAncnRsJykgfSB9LCByZW5kZXJlZENvbnRlbnQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlbmRlcmVkQ29udGVudDtcbn1cbmZ1bmN0aW9uIHVzZUFwcGx5VGhlbWVUb0JvZHkoYXBwbHlUaGVtZVRvQm9keSwgX2EsIHJvb3RFbGVtZW50KSB7XG4gICAgdmFyIGJvZHlUaGVtZWQgPSBfYS5ib2R5VGhlbWVkO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChhcHBseVRoZW1lVG9Cb2R5KSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudERvY18xID0gZ2V0RG9jdW1lbnQocm9vdEVsZW1lbnQuY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudERvY18xKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERvY18xLmJvZHkuY2xhc3NMaXN0LmFkZChib2R5VGhlbWVkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9jXzEuYm9keS5jbGFzc0xpc3QucmVtb3ZlKGJvZHlUaGVtZWQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbYm9keVRoZW1lZCwgYXBwbHlUaGVtZVRvQm9keSwgcm9vdEVsZW1lbnRdKTtcbiAgICByZXR1cm4gcm9vdEVsZW1lbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GYWJyaWMuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBnZXRHbG9iYWxDbGFzc05hbWVzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG52YXIgaW5oZXJpdEZvbnQgPSB7IGZvbnRGYW1pbHk6ICdpbmhlcml0JyB9O1xudmFyIEdsb2JhbENsYXNzTmFtZXMgPSB7XG4gICAgcm9vdDogJ21zLUZhYnJpYycsXG4gICAgYm9keVRoZW1lZDogJ21zLUZhYnJpYy1ib2R5VGhlbWVkJyxcbn07XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBhcHBseVRoZW1lID0gcHJvcHMuYXBwbHlUaGVtZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBwcmV2ZW50QmxhbmtldEZvbnRJbmhlcml0YW5jZSA9IHByb3BzLnByZXZlbnRCbGFua2V0Rm9udEluaGVyaXRhbmNlLCB0aGVtZSA9IHByb3BzLnRoZW1lO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0R2xvYmFsQ2xhc3NOYW1lcyhHbG9iYWxDbGFzc05hbWVzLCB0aGVtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWxQcmltYXJ5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICFwcmV2ZW50QmxhbmtldEZvbnRJbmhlcml0YW5jZSAmJiB7XG4gICAgICAgICAgICAgICAgJyYgYnV0dG9uJzogaW5oZXJpdEZvbnQsXG4gICAgICAgICAgICAgICAgJyYgaW5wdXQnOiBpbmhlcml0Rm9udCxcbiAgICAgICAgICAgICAgICAnJiB0ZXh0YXJlYSc6IGluaGVyaXRGb250LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGFwcGx5IHRoZW1lIHRvIG9ubHkgaWYgYXBwbHlUaGVtZSBpcyB0cnVlXG4gICAgICAgICAgICBhcHBseVRoZW1lICYmIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhlbWUuc2VtYW50aWNDb2xvcnMuYm9keVRleHQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5zZW1hbnRpY0NvbG9ycy5ib2R5QmFja2dyb3VuZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIGJvZHlUaGVtZWQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnNlbWFudGljQ29sb3JzLmJvZHlCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZhYnJpYy5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IEZhYnJpY0Jhc2UgfSBmcm9tICcuL0ZhYnJpYy5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vRmFicmljLnN0eWxlcyc7XG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgY29tcG9uZW50IGlzIGRlcHJlY2F0ZWQgYXMgb2YgYEBmbHVlbnR1aS9yZWFjdGAgdmVyc2lvbiA4LiBVc2UgYFRoZW1lUHJvdmlkZXJgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCB2YXIgRmFicmljID0gc3R5bGVkKEZhYnJpY0Jhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdGYWJyaWMnLFxufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1GYWJyaWMuanMubWFwIiwidmFyIF9sYXllcnNCeUhvc3RJZCA9IHt9O1xudmFyIF9sYXllckhvc3RzQnlJZCA9IHt9O1xudmFyIGRlZmF1bHRIb3N0SWQgPSAnZmx1ZW50LWRlZmF1bHQtbGF5ZXItaG9zdCc7XG52YXIgX2RlZmF1bHRIb3N0U2VsZWN0b3IgPSBcIiNcIi5jb25jYXQoZGVmYXVsdEhvc3RJZCk7XG4vKipcbiAqIFJlZ2lzdGVyIGEgbGF5ZXIgZm9yIGEgZ2l2ZW4gaG9zdCBpZFxuICogQHBhcmFtIGhvc3RJZCAtIElkIG9mIHRoZSBsYXllciBob3N0XG4gKiBAcGFyYW0gbGF5ZXIgLSBMYXllciBpbnN0YW5jZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJMYXllcihob3N0SWQsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFfbGF5ZXJzQnlIb3N0SWRbaG9zdElkXSkge1xuICAgICAgICBfbGF5ZXJzQnlIb3N0SWRbaG9zdElkXSA9IFtdO1xuICAgIH1cbiAgICBfbGF5ZXJzQnlIb3N0SWRbaG9zdElkXS5wdXNoKGNhbGxiYWNrKTtcbiAgICB2YXIgbGF5ZXJIb3N0cyA9IF9sYXllckhvc3RzQnlJZFtob3N0SWRdO1xuICAgIGlmIChsYXllckhvc3RzKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgbGF5ZXJIb3N0c18xID0gbGF5ZXJIb3N0czsgX2kgPCBsYXllckhvc3RzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgbGF5ZXJIb3N0ID0gbGF5ZXJIb3N0c18xW19pXTtcbiAgICAgICAgICAgIGxheWVySG9zdC5ub3RpZnlMYXllcnNDaGFuZ2VkKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIFVucmVnaXN0ZXIgYSBsYXllciBmb3IgYSBnaXZlbiBob3N0IGlkXG4gKiBAcGFyYW0gaG9zdElkIC0gSWQgb2YgdGhlIGxheWVyIGhvc3RcbiAqIEBwYXJhbSBsYXllciAtIExheWVyIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlZ2lzdGVyTGF5ZXIoaG9zdElkLCBjYWxsYmFjaykge1xuICAgIHZhciBsYXllcnMgPSBfbGF5ZXJzQnlIb3N0SWRbaG9zdElkXTtcbiAgICBpZiAobGF5ZXJzKSB7XG4gICAgICAgIHZhciBpZHggPSBsYXllcnMuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgbGF5ZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgaWYgKGxheWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgX2xheWVyc0J5SG9zdElkW2hvc3RJZF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGxheWVySG9zdHMgPSBfbGF5ZXJIb3N0c0J5SWRbaG9zdElkXTtcbiAgICBpZiAobGF5ZXJIb3N0cykge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGxheWVySG9zdHNfMiA9IGxheWVySG9zdHM7IF9pIDwgbGF5ZXJIb3N0c18yLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGxheWVySG9zdCA9IGxheWVySG9zdHNfMltfaV07XG4gICAgICAgICAgICBsYXllckhvc3Qubm90aWZ5TGF5ZXJzQ2hhbmdlZCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBHZXRzIHRoZSBudW1iZXIgb2YgbGF5ZXJzIGN1cnJlbnRseSByZWdpc3RlcmVkIHdpdGggYSBob3N0IGlkLlxuICogQHBhcmFtIGhvc3RJZCAtIElkIG9mIHRoZSBsYXllciBob3N0LlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBsYXllcnMgY3VycmVudGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgaG9zdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVyQ291bnQoaG9zdElkKSB7XG4gICAgdmFyIGxheWVycyA9IF9sYXllckhvc3RzQnlJZFtob3N0SWRdO1xuICAgIHJldHVybiBsYXllcnMgPyBsYXllcnMubGVuZ3RoIDogMDtcbn1cbi8qKlxuICogR2V0cyB0aGUgTGF5ZXIgSG9zdCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggYSBob3N0SWQsIGlmIGFwcGxpY2FibGUuXG4gKiBAcGFyYW0gaG9zdElkIC0gSWQgb2YgdGhlIGxheWVyIGhvc3RcbiAqIEByZXR1cm5zIEEgY29tcG9uZW50IHJlZiBmb3IgdGhlIGFzc29jaWF0ZWQgbGF5ZXIgaG9zdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExheWVySG9zdChob3N0SWQpIHtcbiAgICB2YXIgbGF5ZXJIb3N0cyA9IF9sYXllckhvc3RzQnlJZFtob3N0SWRdO1xuICAgIHJldHVybiAobGF5ZXJIb3N0cyAmJiBsYXllckhvc3RzWzBdKSB8fCB1bmRlZmluZWQ7XG59XG4vKipcbiAqIFJlZ2lzdGVycyBhIExheWVyIEhvc3Qgd2l0aCBhbiBhc3NvY2lhdGVkIGhvc3RJZC5cbiAqIEBwYXJhbSBob3N0SWQgLSBJZCBvZiB0aGUgbGF5ZXIgaG9zdFxuICogQHBhcmFtIGxheWVySG9zdCAtIGxheWVyIGhvc3QgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTGF5ZXJIb3N0KGhvc3RJZCwgbGF5ZXJIb3N0KSB7XG4gICAgdmFyIGxheWVySG9zdHMgPSBfbGF5ZXJIb3N0c0J5SWRbaG9zdElkXSB8fCAoX2xheWVySG9zdHNCeUlkW2hvc3RJZF0gPSBbXSk7XG4gICAgLy8gSW5zZXJ0IHRoaXMgYXQgdGhlIHN0YXJ0IG9mIGFuIGFycmF5IHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIG1vdW50IGFuZCB1bm1vdW50LlxuICAgIC8vIElmIGEgTGF5ZXJIb3N0IGlzIHJlLW1vdW50ZWQsIGFuZCBtb3VudCBvZiB0aGUgbmV3IGluc3RhbmNlIG1heSBvY2N1ciBiZWZvcmUgdGhlIHVubW91bnQgb2YgdGhlIG9sZCBvbmUuXG4gICAgLy8gUHV0dGluZyB0aGUgbmV3IGluc3RhbmNlIGF0IHRoZSBzdGFydCBvZiB0aGlzIGFycmF5IGVuc3VyZXMgdGhhdCBjYWxscyB0byBgZ2V0TGF5ZXJIb3N0YCB3aWxsIGltbWVkaWF0ZWx5XG4gICAgLy8gZ2V0IHRoZSBuZXcgb25lIGV2ZW4gaWYgdGhlIG9sZCBvbmUgaXMgYXJvdW5kIGJyaWVmbHkuXG4gICAgbGF5ZXJIb3N0cy51bnNoaWZ0KGxheWVySG9zdCk7XG59XG4vKipcbiAqIFVucmVnaXN0ZXJzIGEgTGF5ZXIgSG9zdCBmcm9tIHRoZSBhc3NvY2lhdGVkIGhvc3RJZC5cbiAqIEBwYXJhbSBob3N0SWQgLSBJZCBvZiB0aGUgbGF5ZXIgaG9zdFxuICogQHBhcmFtIGxheWVySG9zdCAtIGxheWVyIGhvc3QgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVucmVnaXN0ZXJMYXllckhvc3QoaG9zdElkLCBsYXllckhvc3QpIHtcbiAgICB2YXIgbGF5ZXJIb3N0cyA9IF9sYXllckhvc3RzQnlJZFtob3N0SWRdO1xuICAgIGlmIChsYXllckhvc3RzKSB7XG4gICAgICAgIHZhciBpZHggPSBsYXllckhvc3RzLmluZGV4T2YobGF5ZXJIb3N0KTtcbiAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICBsYXllckhvc3RzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXllckhvc3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZGVsZXRlIF9sYXllckhvc3RzQnlJZFtob3N0SWRdO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBXaGVuIG5vIGRlZmF1bHQgbGF5ZXIgaG9zdCBpcyBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCB0byBjcmVhdGUgdGhlIGRlZmF1bHQgaG9zdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRMYXllckhvc3QoZG9jKSB7XG4gICAgdmFyIGhvc3QgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaG9zdC5zZXRBdHRyaWJ1dGUoJ2lkJywgZGVmYXVsdEhvc3RJZCk7XG4gICAgaG9zdC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMDAwMCc7XG4gICAgZG9jID09PSBudWxsIHx8IGRvYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZG9jLmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7XG4gICAgcmV0dXJuIGhvc3Q7XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIG9wdGlvbmFsbHkgY2FsbGVkIHRvIGNsZWFuIHVwIHRoZSBkZWZhdWx0IGxheWVyIGhvc3QgYXMgbmVlZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cERlZmF1bHRMYXllckhvc3QoZG9jKSB7XG4gICAgdmFyIGhvc3QgPSBkb2MucXVlcnlTZWxlY3RvcihcIiNcIi5jb25jYXQoZGVmYXVsdEhvc3RJZCkpO1xuICAgIGlmIChob3N0KSB7XG4gICAgICAgIGRvYy5yZW1vdmVDaGlsZChob3N0KTtcbiAgICB9XG59XG4vKipcbiAqIFVzZWQgZm9yIG5vdGlmeWluZyBhcHBsaWNhYmxlIExheWVycyB0aGF0IGEgaG9zdCBpcyBhdmFpbGFibGUvdW5hdmFpbGFibGUgYW5kIHRvIHJlLWV2YWx1YXRlIExheWVycyB0aGF0XG4gKiBjYXJlIGFib3V0IHRoZSBzcGVjaWZpYyBob3N0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm90aWZ5SG9zdENoYW5nZWQoaWQpIHtcbiAgICBpZiAoX2xheWVyc0J5SG9zdElkW2lkXSkge1xuICAgICAgICBfbGF5ZXJzQnlIb3N0SWRbaWRdLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjaygpOyB9KTtcbiAgICB9XG59XG4vKipcbiAqIFNldHMgdGhlIGRlZmF1bHQgdGFyZ2V0IHNlbGVjdG9yIHRvIHVzZSB3aGVuIGRldGVybWluaW5nIHRoZSBob3N0IGluIHdoaWNoXG4gKiBMYXllcmVkIGNvbnRlbnQgd2lsbCBiZSBpbmplY3RlZCBpbnRvLiBJZiBub3QgcHJvdmlkZWQsIGFuIGVsZW1lbnQgd2lsbCBiZVxuICogY3JlYXRlZCBhdCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudCBib2R5LlxuICpcbiAqIFBhc3NpbmcgaW4gYSBmYWxzeSB2YWx1ZSB3aWxsIGNsZWFyIHRoZSBkZWZhdWx0IHRhcmdldCBhbmQgcmVzZXQgYmFjayB0b1xuICogdXNpbmcgYSBjcmVhdGVkIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiBkb2N1bWVudCBib2R5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdFRhcmdldChzZWxlY3Rvcikge1xuICAgIF9kZWZhdWx0SG9zdFNlbGVjdG9yID0gc2VsZWN0b3I7XG59XG4vKipcbiAqIEdldCB0aGUgZGVmYXVsdCB0YXJnZXQgc2VsZWN0b3Igd2hlbiBkZXRlcm1pbmluZyBhIGhvc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRUYXJnZXQoKSB7XG4gICAgcmV0dXJuIF9kZWZhdWx0SG9zdFNlbGVjdG9yO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGF5ZXIubm90aWZpY2F0aW9uLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlIFwicmVhY3QtcG9ydGFsLWNvbXBhdC1jb250ZXh0XCIgdXNlcyB2OSBjb25maWdzIHZpYSBwYXRoIGFsaWFzZXNcbmltcG9ydCB7IHVzZVBvcnRhbENvbXBhdCB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1wb3J0YWwtY29tcGF0LWNvbnRleHQnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IEZhYnJpYyB9IGZyb20gJy4uLy4uL0ZhYnJpYyc7XG5pbXBvcnQgeyBjbGFzc05hbWVzRnVuY3Rpb24sIGNzcywgZ2V0RG9jdW1lbnQsIHNldFBvcnRhbEF0dHJpYnV0ZSwgc2V0VmlydHVhbFBhcmVudCwgRm9jdXNSZWN0c1Byb3ZpZGVyLCBGb2N1c1JlY3RzQ29udGV4dCwgSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IHJlZ2lzdGVyTGF5ZXIsIGdldERlZmF1bHRUYXJnZXQsIHVucmVnaXN0ZXJMYXllciwgZ2V0TGF5ZXJIb3N0LCBjcmVhdGVEZWZhdWx0TGF5ZXJIb3N0LCB9IGZyb20gJy4vTGF5ZXIubm90aWZpY2F0aW9uJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QsIHVzZU1lcmdlZFJlZnMsIHVzZVdhcm5pbmdzIH0gZnJvbSAnQGZsdWVudHVpL3JlYWN0LWhvb2tzJztcbnZhciBnZXRDbGFzc05hbWVzID0gY2xhc3NOYW1lc0Z1bmN0aW9uKCk7XG52YXIgZ2V0Rm9jdXNWaXNpYmlsaXR5ID0gZnVuY3Rpb24gKHByb3ZpZGVyUmVmKSB7XG4gICAgaWYgKHByb3ZpZGVyUmVmID09PSBudWxsIHx8IHByb3ZpZGVyUmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcm92aWRlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBwcm92aWRlclJlZi5jdXJyZW50LmNsYXNzTGlzdC5jb250YWlucyhJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgdmFyIExheWVyQmFzZSA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICB2YXIgcmVnaXN0ZXJQb3J0YWxFbCA9IHVzZVBvcnRhbENvbXBhdCgpO1xuICAgIHZhciByb290UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJvb3RSZWYsIHJlZik7XG4gICAgdmFyIGxheWVyUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIGZhYnJpY0VsZW1lbnRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZvY3VzQ29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRm9jdXNSZWN0c0NvbnRleHQpO1xuICAgIC8vIFRyYWNrcyBpZiB0aGUgbGF5ZXIgbW91bnQgZXZlbnRzIG5lZWQgdG8gYmUgcmFpc2VkLlxuICAgIC8vIFJlcXVpcmVkIHRvIGFsbG93IHRoZSBET00gdG8gcmVuZGVyIGFmdGVyIHRoZSBsYXllciBlbGVtZW50IGlzIGFkZGVkLlxuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKSwgbmVlZFJhaXNlTGF5ZXJNb3VudCA9IF9hWzBdLCBzZXROZWVkUmFpc2VMYXllck1vdW50ID0gX2FbMV07XG4gICAgLy8gU2V0cyB0aGUgZm9jdXMgdmlzaWJsZSBjbGFzc05hbWUgd2hlbiB0aGUgRm9jdXNSZWN0c1Byb3ZpZGVyIGZvciB0aGUgbGF5ZXIgaXMgcmVuZGVyZWRcbiAgICAvLyBUaGlzIGFsbG93cyB0aGUgY3VycmVudCBmb2N1cyB2aXNpYmlsaXR5IHN0eWxlIHRvIGJlIGNhcnJpZWQgb3ZlciB0byB0aGUgbGF5ZXIgY29udGVudFxuICAgIHZhciBmb2N1c1JlY3RzUmVmID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgIHZhciBpc0ZvY3VzVmlzaWJsZSA9IGdldEZvY3VzVmlzaWJpbGl0eShmb2N1c0NvbnRleHQgPT09IG51bGwgfHwgZm9jdXNDb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2N1c0NvbnRleHQucHJvdmlkZXJSZWYpO1xuICAgICAgICBpZiAoZWwgJiYgaXNGb2N1c1Zpc2libGUpIHtcbiAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgfSwgW2ZvY3VzQ29udGV4dF0pO1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGV2ZW50QnViYmxpbmdFbmFibGVkID0gcHJvcHMuZXZlbnRCdWJibGluZ0VuYWJsZWQsIGZhYnJpY1Byb3BzID0gcHJvcHMuZmFicmljUHJvcHMsIGhvc3RJZCA9IHByb3BzLmhvc3RJZCwgaW5zZXJ0Rmlyc3QgPSBwcm9wcy5pbnNlcnRGaXJzdCwgX2IgPSBwcm9wcy5vbkxheWVyRGlkTW91bnQsIG9uTGF5ZXJEaWRNb3VudCA9IF9iID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gOiBfYiwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgX2MgPSBwcm9wcy5vbkxheWVyTW91bnRlZCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgb25MYXllck1vdW50ZWQgPSBfYyA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IDogX2MsIG9uTGF5ZXJXaWxsVW5tb3VudCA9IHByb3BzLm9uTGF5ZXJXaWxsVW5tb3VudCwgc3R5bGVzID0gcHJvcHMuc3R5bGVzLCB0aGVtZSA9IHByb3BzLnRoZW1lO1xuICAgIHZhciBmYWJyaWNSZWYgPSB1c2VNZXJnZWRSZWZzKGZhYnJpY0VsZW1lbnRSZWYsIGZhYnJpY1Byb3BzID09PSBudWxsIHx8IGZhYnJpY1Byb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmYWJyaWNQcm9wcy5yZWYsIGZvY3VzUmVjdHNSZWYpO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgaXNOb3RIb3N0OiAhaG9zdElkLFxuICAgIH0pO1xuICAgIC8vIFJldHVybnMgdGhlIHVzZXIgcHJvdmlkZWQgaG9zdElkIHByb3BzIGVsZW1lbnQsIHRoZSBkZWZhdWx0IHRhcmdldCBzZWxlY3RvcixcbiAgICAvLyBvciB1bmRlZmluZWQgaWYgZG9jdW1lbnQgZG9lc24ndCBleGlzdC5cbiAgICB2YXIgZ2V0SG9zdCA9IGZ1bmN0aW9uIChkb2MpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGhvc3RJZCkge1xuICAgICAgICAgICAgdmFyIGxheWVySG9zdCA9IGdldExheWVySG9zdChob3N0SWQpO1xuICAgICAgICAgICAgaWYgKGxheWVySG9zdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoX2EgPSBsYXllckhvc3Qucm9vdFJlZi5jdXJyZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChfYiA9IGRvYy5nZXRFbGVtZW50QnlJZChob3N0SWQpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRIb3N0U2VsZWN0b3IgPSBnZXREZWZhdWx0VGFyZ2V0KCk7XG4gICAgICAgICAgICAvLyBGaW5kIHRoZSBob3N0LlxuICAgICAgICAgICAgdmFyIGhvc3QgPSBkZWZhdWx0SG9zdFNlbGVjdG9yID8gZG9jLnF1ZXJ5U2VsZWN0b3IoZGVmYXVsdEhvc3RTZWxlY3RvcikgOiBudWxsO1xuICAgICAgICAgICAgLy8gSWYgbm8gaG9zdCBpcyBhdmFpbGFibGUsIGNyZWF0ZSBhIGNvbnRhaW5lciBmb3IgaW5qZWN0aW5nIGxheWVycyBpbi5cbiAgICAgICAgICAgIC8vIEhhdmluZyBhIGNvbnRhaW5lciBzY29wZXMgbGF5b3V0IGNvbXB1dGF0aW9uLlxuICAgICAgICAgICAgaWYgKCFob3N0KSB7XG4gICAgICAgICAgICAgICAgaG9zdCA9IGNyZWF0ZURlZmF1bHRMYXllckhvc3QoZG9jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBob3N0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBSZW1vdmVzIHRoZSBjdXJyZW50IGxheWVyIGVsZW1lbnQncyBwYXJlbnROb2RlIGFuZCBydW5zIG9uTGF5ZXJXaWxsVW5tb3VudCBwcm9wIGlmIHByb3ZpZGVkLlxuICAgIHZhciByZW1vdmVMYXllckVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9uTGF5ZXJXaWxsVW5tb3VudCA9PT0gbnVsbCB8fCBvbkxheWVyV2lsbFVubW91bnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uTGF5ZXJXaWxsVW5tb3VudCgpO1xuICAgICAgICB2YXIgZWxlbSA9IGxheWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIC8vIENsZWFyIHJlZiBiZWZvcmUgcmVtb3ZpbmcgZnJvbSB0aGUgRE9NXG4gICAgICAgIGxheWVyUmVmLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChlbGVtICYmIGVsZW0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBJZiBhIGRvYyBvciBob3N0IGV4aXN0cywgaXQgd2lsbCByZW1vdmUgYW5kIHVwZGF0ZSBsYXllciBwYXJlbnROb2Rlcy5cbiAgICB2YXIgY3JlYXRlTGF5ZXJFbGVtZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudChyb290UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBob3N0ID0gZ2V0SG9zdChkb2MpO1xuICAgICAgICBpZiAoIWhvc3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZW1vdmUgYW5kIHJlLWNyZWF0ZSBhbnkgcHJldmlvdXMgZXhpc3RpbmcgbGF5ZXIgZWxlbWVudHMuXG4gICAgICAgIHJlbW92ZUxheWVyRWxlbWVudCgpO1xuICAgICAgICB2YXIgZWwgPSAoKF9hID0gaG9zdC5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkb2MpLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBlbC5jbGFzc05hbWUgPSBjbGFzc05hbWVzLnJvb3Q7XG4gICAgICAgIHNldFBvcnRhbEF0dHJpYnV0ZShlbCk7XG4gICAgICAgIHNldFZpcnR1YWxQYXJlbnQoZWwsIHJvb3RSZWYuY3VycmVudCk7XG4gICAgICAgIGluc2VydEZpcnN0ID8gaG9zdC5pbnNlcnRCZWZvcmUoZWwsIGhvc3QuZmlyc3RDaGlsZCkgOiBob3N0LmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgbGF5ZXJSZWYuY3VycmVudCA9IGVsO1xuICAgICAgICBzZXROZWVkUmFpc2VMYXllck1vdW50KHRydWUpO1xuICAgIH07XG4gICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNyZWF0ZUxheWVyRWxlbWVudCgpO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgdXNlciBwcm92aWRlZCBhIGhvc3RJZCBwcm9wIGFuZCByZWdpc3RlciB0aGUgbGF5ZXIgd2l0aCB0aGUgSUQuXG4gICAgICAgIGlmIChob3N0SWQpIHtcbiAgICAgICAgICAgIHJlZ2lzdGVyTGF5ZXIoaG9zdElkLCBjcmVhdGVMYXllckVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1bnJlZ2lzdGVyUG9ydGFsRWwgPSBsYXllclJlZi5jdXJyZW50ID8gcmVnaXN0ZXJQb3J0YWxFbChsYXllclJlZi5jdXJyZW50KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh1bnJlZ2lzdGVyUG9ydGFsRWwpIHtcbiAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyUG9ydGFsRWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbW92ZUxheWVyRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKGhvc3RJZCkge1xuICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJMYXllcihob3N0SWQsIGNyZWF0ZUxheWVyRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgLS0gc2hvdWxkIHJ1biBpZiB0aGUgaG9zdElkIHVwZGF0ZXMuXG4gICAgfSwgW2hvc3RJZF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChsYXllclJlZi5jdXJyZW50ICYmIG5lZWRSYWlzZUxheWVyTW91bnQpIHtcbiAgICAgICAgICAgIG9uTGF5ZXJNb3VudGVkID09PSBudWxsIHx8IG9uTGF5ZXJNb3VudGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkxheWVyTW91bnRlZCgpO1xuICAgICAgICAgICAgb25MYXllckRpZE1vdW50ID09PSBudWxsIHx8IG9uTGF5ZXJEaWRNb3VudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25MYXllckRpZE1vdW50KCk7XG4gICAgICAgICAgICBzZXROZWVkUmFpc2VMYXllck1vdW50KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFtuZWVkUmFpc2VMYXllck1vdW50LCBvbkxheWVyTW91bnRlZCwgb25MYXllckRpZE1vdW50XSk7XG4gICAgdXNlRGVidWdXYXJuaW5ncyhwcm9wcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJtcy1sYXllclwiLCByZWY6IG1lcmdlZFJlZiB9LCBsYXllclJlZi5jdXJyZW50ICYmXG4gICAgICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChSZWFjdC5jcmVhdGVFbGVtZW50KEZvY3VzUmVjdHNQcm92aWRlciwgeyBsYXllclJvb3Q6IHRydWUsIHByb3ZpZGVyUmVmOiBmYWJyaWNSZWYgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmFicmljLCBfX2Fzc2lnbih7fSwgKCFldmVudEJ1YmJsaW5nRW5hYmxlZCAmJiBnZXRGaWx0ZXJlZEV2ZW50cygpKSwgZmFicmljUHJvcHMsIHsgY2xhc3NOYW1lOiBjc3MoY2xhc3NOYW1lcy5jb250ZW50LCBmYWJyaWNQcm9wcyA9PT0gbnVsbCB8fCBmYWJyaWNQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmFicmljUHJvcHMuY2xhc3NOYW1lKSwgcmVmOiBmYWJyaWNSZWYgfSksIGNoaWxkcmVuKSksIGxheWVyUmVmLmN1cnJlbnQpKSk7XG59KTtcbkxheWVyQmFzZS5kaXNwbGF5TmFtZSA9ICdMYXllckJhc2UnO1xudmFyIGZpbHRlcmVkRXZlbnRQcm9wcztcbnZhciBvbkZpbHRlckV2ZW50ID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgLy8gV2Ugc2hvdWxkIGp1c3QgYmUgYWJsZSB0byBjaGVjayBldi5idWJibGUgaGVyZSBhbmQgb25seSBzdG9wIGV2ZW50cyB0aGF0IGFyZSBidWJibGluZyB1cC4gSG93ZXZlciwgZXZlbiB0aG91Z2hcbiAgICAvLyBtb3VzZWVudGVyIGFuZCBtb3VzZWxlYXZlIGRvIE5PVCBidWJibGUgdXAsIHRoZXkgYXJlIHNob3dpbmcgdXAgYXMgYnViYmxpbmcuIFRoZXJlZm9yZSB3ZSBzdG9wIGV2ZW50cyBiYXNlZCBvblxuICAgIC8vIGV2ZW50IG5hbWUgcmF0aGVyIHRoYW4gZXYuYnViYmxlLlxuICAgIGlmIChldi5ldmVudFBoYXNlID09PSBFdmVudC5CVUJCTElOR19QSEFTRSAmJlxuICAgICAgICBldi50eXBlICE9PSAnbW91c2VlbnRlcicgJiZcbiAgICAgICAgZXYudHlwZSAhPT0gJ21vdXNlbGVhdmUnICYmXG4gICAgICAgIGV2LnR5cGUgIT09ICd0b3VjaHN0YXJ0JyAmJlxuICAgICAgICBldi50eXBlICE9PSAndG91Y2hlbmQnKSB7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn07XG5mdW5jdGlvbiBnZXRGaWx0ZXJlZEV2ZW50cygpIHtcbiAgICBpZiAoIWZpbHRlcmVkRXZlbnRQcm9wcykge1xuICAgICAgICBmaWx0ZXJlZEV2ZW50UHJvcHMgPSB7fTtcbiAgICAgICAgW1xuICAgICAgICAgICAgJ29uQ2xpY2snLFxuICAgICAgICAgICAgJ29uQ29udGV4dE1lbnUnLFxuICAgICAgICAgICAgJ29uRG91YmxlQ2xpY2snLFxuICAgICAgICAgICAgJ29uRHJhZycsXG4gICAgICAgICAgICAnb25EcmFnRW5kJyxcbiAgICAgICAgICAgICdvbkRyYWdFbnRlcicsXG4gICAgICAgICAgICAnb25EcmFnRXhpdCcsXG4gICAgICAgICAgICAnb25EcmFnTGVhdmUnLFxuICAgICAgICAgICAgJ29uRHJhZ092ZXInLFxuICAgICAgICAgICAgJ29uRHJhZ1N0YXJ0JyxcbiAgICAgICAgICAgICdvbkRyb3AnLFxuICAgICAgICAgICAgJ29uTW91c2VEb3duJyxcbiAgICAgICAgICAgICdvbk1vdXNlRW50ZXInLFxuICAgICAgICAgICAgJ29uTW91c2VMZWF2ZScsXG4gICAgICAgICAgICAnb25Nb3VzZU1vdmUnLFxuICAgICAgICAgICAgJ29uTW91c2VPdmVyJyxcbiAgICAgICAgICAgICdvbk1vdXNlT3V0JyxcbiAgICAgICAgICAgICdvbk1vdXNlVXAnLFxuICAgICAgICAgICAgJ29uVG91Y2hNb3ZlJyxcbiAgICAgICAgICAgICdvblRvdWNoU3RhcnQnLFxuICAgICAgICAgICAgJ29uVG91Y2hDYW5jZWwnLFxuICAgICAgICAgICAgJ29uVG91Y2hFbmQnLFxuICAgICAgICAgICAgJ29uS2V5RG93bicsXG4gICAgICAgICAgICAnb25LZXlQcmVzcycsXG4gICAgICAgICAgICAnb25LZXlVcCcsXG4gICAgICAgICAgICAnb25Gb2N1cycsXG4gICAgICAgICAgICAnb25CbHVyJyxcbiAgICAgICAgICAgICdvbkNoYW5nZScsXG4gICAgICAgICAgICAnb25JbnB1dCcsXG4gICAgICAgICAgICAnb25JbnZhbGlkJyxcbiAgICAgICAgICAgICdvblN1Ym1pdCcsXG4gICAgICAgIF0uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gKGZpbHRlcmVkRXZlbnRQcm9wc1tuYW1lXSA9IG9uRmlsdGVyRXZlbnQpOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkRXZlbnRQcm9wcztcbn1cbmZ1bmN0aW9uIHVzZURlYnVnV2FybmluZ3MocHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MgLS0gYnVpbGQtdGltZSBjb25kaXRpb25hbFxuICAgICAgICB1c2VXYXJuaW5ncyh7XG4gICAgICAgICAgICBuYW1lOiAnTGF5ZXInLFxuICAgICAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICAgICAgZGVwcmVjYXRpb25zOiB7IG9uTGF5ZXJNb3VudGVkOiAnb25MYXllckRpZE1vdW50JyB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1MYXllci5iYXNlLmpzLm1hcCIsImltcG9ydCB7IFpJbmRleGVzLCBnZXRHbG9iYWxDbGFzc05hbWVzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG52YXIgR2xvYmFsQ2xhc3NOYW1lcyA9IHtcbiAgICByb290OiAnbXMtTGF5ZXInLFxuICAgIHJvb3ROb0hvc3Q6ICdtcy1MYXllci0tZml4ZWQnLFxuICAgIGNvbnRlbnQ6ICdtcy1MYXllci1jb250ZW50Jyxcbn07XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGlzTm90SG9zdCA9IHByb3BzLmlzTm90SG9zdCwgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoR2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgIHRoZW1lLmZvbnRzLm1lZGl1bSxcbiAgICAgICAgICAgIGlzTm90SG9zdCAmJiBbXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290Tm9Ib3N0LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgICAgIHpJbmRleDogWkluZGV4ZXMuTGF5ZXIsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuY29udGVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGF5ZXIuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBMYXllckJhc2UgfSBmcm9tICcuL0xheWVyLmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9MYXllci5zdHlsZXMnO1xuZXhwb3J0IHZhciBMYXllciA9IHN0eWxlZChMYXllckJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdMYXllcicsXG4gICAgZmllbGRzOiBbJ2hvc3RJZCcsICd0aGVtZScsICdzdHlsZXMnXSxcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGF5ZXIuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ2FsbG91dENvbnRlbnQgfSBmcm9tICcuL0NhbGxvdXRDb250ZW50JztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vLi4vTGF5ZXInO1xuZXhwb3J0IHZhciBDYWxsb3V0ID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAoX2EsIGZvcndhcmRlZFJlZikge1xuICAgIHZhciBsYXllclByb3BzID0gX2EubGF5ZXJQcm9wcywgZG9Ob3RMYXllciA9IF9hLmRvTm90TGF5ZXIsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImxheWVyUHJvcHNcIiwgXCJkb05vdExheWVyXCJdKTtcbiAgICB2YXIgY29udGVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FsbG91dENvbnRlbnQsIF9fYXNzaWduKHt9LCByZXN0LCB7IGRvTm90TGF5ZXI6IGRvTm90TGF5ZXIsIHJlZjogZm9yd2FyZGVkUmVmIH0pKTtcbiAgICByZXR1cm4gZG9Ob3RMYXllciA/IGNvbnRlbnQgOiBSZWFjdC5jcmVhdGVFbGVtZW50KExheWVyLCBfX2Fzc2lnbih7fSwgbGF5ZXJQcm9wcyksIGNvbnRlbnQpO1xufSk7XG5DYWxsb3V0LmRpc3BsYXlOYW1lID0gJ0NhbGxvdXQnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q2FsbG91dC5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZWxlbWVudENvbnRhaW5zLCBnZXROYXRpdmVQcm9wcywgZGl2UHJvcGVydGllcywgZ2V0Rmlyc3RUYWJiYWJsZSwgZ2V0TGFzdFRhYmJhYmxlLCBnZXROZXh0RWxlbWVudCwgZm9jdXNBc3luYywgZ2V0UHJvcHNXaXRoRGVmYXVsdHMsIG1vZGFsaXplLCBvbiwgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZUNvbnN0LCB1c2VNZXJnZWRSZWZzLCB1c2VFdmVudENhbGxiYWNrLCB1c2VQcmV2aW91cywgdXNlVW5tb3VudCB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG5pbXBvcnQgeyB1c2VEb2N1bWVudCB9IGZyb20gJy4uLy4uL1dpbmRvd1Byb3ZpZGVyJztcbnZhciBDT01QT05FTlRfTkFNRSA9ICdGb2N1c1RyYXBab25lJztcbnZhciBERUZBVUxUX1BST1BTID0ge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBkaXNhYmxlRmlyc3RGb2N1czogZmFsc2UsXG4gICAgZm9yY2VGb2N1c0luc2lkZVRyYXA6IHRydWUsXG4gICAgaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwOiBmYWxzZSxcbn07XG52YXIgdXNlQ29tcG9uZW50UmVmID0gZnVuY3Rpb24gKGNvbXBvbmVudFJlZiwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50LCBmb2N1c0ZUWikge1xuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoY29tcG9uZW50UmVmLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICBnZXQgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6IGZvY3VzRlRaLFxuICAgIH0pOyB9LCBbZm9jdXNGVFosIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudF0pO1xufTtcbmV4cG9ydCB2YXIgRm9jdXNUcmFwWm9uZSA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzV2l0aG91dERlZmF1bHRzLCByZWYpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIHJvb3QgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZpcnN0QnVtcGVyID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBsYXN0QnVtcGVyID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBtZXJnZWRSb290UmVmID0gdXNlTWVyZ2VkUmVmcyhyb290LCByZWYpO1xuICAgIHZhciBkb2MgPSB1c2VEb2N1bWVudCgpO1xuICAgIHZhciBpc0ZpcnN0UmVuZGVyID0gKF9hID0gdXNlUHJldmlvdXMoZmFsc2UpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgIHZhciBwcm9wcyA9IGdldFByb3BzV2l0aERlZmF1bHRzKERFRkFVTFRfUFJPUFMsIHByb3BzV2l0aG91dERlZmF1bHRzKTtcbiAgICB2YXIgaW50ZXJuYWxTdGF0ZSA9IHVzZUNvbnN0KHtcbiAgICAgICAgaGFzRm9jdXM6IGZhbHNlLFxuICAgICAgICBmb2N1c1N0YWNrSWQ6IHVzZUlkKCdmdHotJywgcHJvcHMuaWQpLFxuICAgIH0pO1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjb21wb25lbnRSZWYgPSBwcm9wcy5jb21wb25lbnRSZWYsIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsIGRpc2FibGVGaXJzdEZvY3VzID0gcHJvcHMuZGlzYWJsZUZpcnN0Rm9jdXMsIGZvcmNlRm9jdXNJbnNpZGVUcmFwID0gcHJvcHMuZm9yY2VGb2N1c0luc2lkZVRyYXAsIGZvY3VzUHJldmlvdXNseUZvY3VzZWRJbm5lckVsZW1lbnQgPSBwcm9wcy5mb2N1c1ByZXZpb3VzbHlGb2N1c2VkSW5uZXJFbGVtZW50LCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBmaXJzdEZvY3VzYWJsZVNlbGVjdG9yID0gcHJvcHMuZmlyc3RGb2N1c2FibGVTZWxlY3RvciwgZmlyc3RGb2N1c2FibGVUYXJnZXQgPSBwcm9wcy5maXJzdEZvY3VzYWJsZVRhcmdldCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgX2IgPSBwcm9wcy5kaXNhYmxlUmVzdG9yZUZvY3VzLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBkaXNhYmxlUmVzdG9yZUZvY3VzID0gX2IgPT09IHZvaWQgMCA/IHByb3BzLmlnbm9yZUV4dGVybmFsRm9jdXNpbmcgOiBfYiwgaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwID0gcHJvcHMuaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwLCBlbmFibGVBcmlhSGlkZGVuU2libGluZ3MgPSBwcm9wcy5lbmFibGVBcmlhSGlkZGVuU2libGluZ3M7XG4gICAgdmFyIGJ1bXBlclByb3BzID0ge1xuICAgICAgICAnYXJpYS1oaWRkZW4nOiB0cnVlLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsIC8vICdmaXhlZCcgcHJldmVudHMgYnJvd3NlcnMgZnJvbSBzY3JvbGxpbmcgdG8gYnVtcGVycyB3aGVuIHZpZXdwb3J0IGRvZXMgbm90IGNvbnRhaW4gdGhlbVxuICAgICAgICB9LFxuICAgICAgICB0YWJJbmRleDogZGlzYWJsZWQgPyAtMSA6IDAsXG4gICAgICAgICdkYXRhLWlzLXZpc2libGUnOiB0cnVlLFxuICAgICAgICAnZGF0YS1pcy1mb2N1cy10cmFwLXpvbmUtYnVtcGVyJzogdHJ1ZSxcbiAgICB9O1xuICAgIHZhciBmb2N1c0VsZW1lbnRBc3luYyA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBmaXJzdEJ1bXBlci5jdXJyZW50ICYmIGVsZW1lbnQgIT09IGxhc3RCdW1wZXIuY3VycmVudCkge1xuICAgICAgICAgICAgZm9jdXNBc3luYyhlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBmb3JjZSBmb2N1cyBpbnRvIEZUWiAobmFtZWQgdG8gYXZvaWQgb3ZlcmxhcCB3aXRoIGdsb2JhbCBmb2N1cygpIGNhbGxiYWNrKS5cbiAgICAgKiB1c2VFdmVudENhbGxiYWNrIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIGNhbGxiYWNrIHJlZmVyZW5jZSBidXQgdXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb25cbiAgICAgKiBldmVyeSByZW5kZXIgdG8gYXZvaWQgc3RhbGUgY2FwdHVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBmb2N1c0ZUWiA9IHVzZUV2ZW50Q2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXJvb3QuY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuOyAvLyBub3QgZG9uZSBtb3VudGluZ1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRJblRyYXBab25lID0gaW50ZXJuYWxTdGF0ZS5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRJblRyYXBab25lO1xuICAgICAgICBpZiAoZm9jdXNQcmV2aW91c2x5Rm9jdXNlZElubmVyRWxlbWVudCAmJlxuICAgICAgICAgICAgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50SW5UcmFwWm9uZSAmJlxuICAgICAgICAgICAgZWxlbWVudENvbnRhaW5zKHJvb3QuY3VycmVudCwgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50SW5UcmFwWm9uZSkpIHtcbiAgICAgICAgICAgIC8vIGZvY3VzIG9uIHRoZSBsYXN0IGl0ZW0gdGhhdCBoYWQgZm9jdXMgaW4gdGhlIHpvbmUgYmVmb3JlIHdlIGxlZnQgdGhlIHpvbmVcbiAgICAgICAgICAgIGZvY3VzRWxlbWVudEFzeW5jKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudEluVHJhcFpvbmUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmaXJzdEZvY3VzYWJsZUNoaWxkID0gbnVsbDtcbiAgICAgICAgaWYgKHR5cGVvZiBmaXJzdEZvY3VzYWJsZVRhcmdldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlQ2hpbGQgPSByb290LmN1cnJlbnQucXVlcnlTZWxlY3RvcihmaXJzdEZvY3VzYWJsZVRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZmlyc3RGb2N1c2FibGVUYXJnZXQpIHtcbiAgICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlQ2hpbGQgPSBmaXJzdEZvY3VzYWJsZVRhcmdldChyb290LmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IpIHtcbiAgICAgICAgICAgIHZhciBmb2N1c1NlbGVjdG9yID0gdHlwZW9mIGZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IgPT09ICdzdHJpbmcnID8gZmlyc3RGb2N1c2FibGVTZWxlY3RvciA6IGZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IoKTtcbiAgICAgICAgICAgIGZpcnN0Rm9jdXNhYmxlQ2hpbGQgPSByb290LmN1cnJlbnQucXVlcnlTZWxlY3RvcignLicgKyBmb2N1c1NlbGVjdG9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZmlyc3QgZWxlbWVudCBpZiBxdWVyeSBzZWxlY3RvciBkaWQgbm90IG1hdGNoIGFueSBlbGVtZW50cy5cbiAgICAgICAgaWYgKCFmaXJzdEZvY3VzYWJsZUNoaWxkKSB7XG4gICAgICAgICAgICBmaXJzdEZvY3VzYWJsZUNoaWxkID0gZ2V0TmV4dEVsZW1lbnQocm9vdC5jdXJyZW50LCByb290LmN1cnJlbnQuZmlyc3RDaGlsZCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0Rm9jdXNhYmxlQ2hpbGQpIHtcbiAgICAgICAgICAgIGZvY3VzRWxlbWVudEFzeW5jKGZpcnN0Rm9jdXNhYmxlQ2hpbGQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLyoqIFVzZWQgaW4gcm9vdCBkaXYgZm9jdXMvYmx1ciBoYW5kbGVycyAqL1xuICAgIHZhciBmb2N1c0J1bXBlciA9IGZ1bmN0aW9uIChpc0ZpcnN0QnVtcGVyKSB7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCAhcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5leHRGb2N1c2FibGUgPSBpc0ZpcnN0QnVtcGVyID09PSBpbnRlcm5hbFN0YXRlLmhhc0ZvY3VzXG4gICAgICAgICAgICA/IGdldExhc3RUYWJiYWJsZShyb290LmN1cnJlbnQsIGxhc3RCdW1wZXIuY3VycmVudCwgdHJ1ZSwgZmFsc2UpXG4gICAgICAgICAgICA6IGdldEZpcnN0VGFiYmFibGUocm9vdC5jdXJyZW50LCBmaXJzdEJ1bXBlci5jdXJyZW50LCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBpZiAobmV4dEZvY3VzYWJsZSA9PT0gZmlyc3RCdW1wZXIuY3VycmVudCB8fCBuZXh0Rm9jdXNhYmxlID09PSBsYXN0QnVtcGVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBGVFogY29udGFpbnMgbm8gdGFiYmFibGUgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgLy8gZm9jdXNGVFooKSB3aWxsIHRha2UgY2FyZSBvZiBmaW5kaW5nIGEgZm9jdXNhYmxlIGVsZW1lbnQgaW4gRlRaLlxuICAgICAgICAgICAgICAgIGZvY3VzRlRaKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0Rm9jdXNhYmxlLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKiBSb290IGRpdiBibHVyIGhhbmRsZXIgKGRvZXNuJ3QgbmVlZCB1c2VDYWxsYmFjayBzaW5jZSBpdCdzIGZvciBhIG5hdGl2ZSBlbGVtZW50KSAqL1xuICAgIHZhciBvblJvb3RCbHVyQ2FwdHVyZSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IHByb3BzLm9uQmx1ckNhcHR1cmUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHByb3BzLCBldik7XG4gICAgICAgIHZhciByZWxhdGVkVGFyZ2V0ID0gZXYucmVsYXRlZFRhcmdldDtcbiAgICAgICAgaWYgKGV2LnJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEluIElFMTEsIGR1ZSB0byBsYWNrIG9mIHN1cHBvcnQsIGV2ZW50LnJlbGF0ZWRUYXJnZXQgaXMgYWx3YXlzXG4gICAgICAgICAgICAvLyBudWxsIG1ha2luZyBldmVyeSBvbkJsdXIgY2FsbCB0byBiZSBcIm91dHNpZGVcIiBvZiB0aGUgcm9vdFxuICAgICAgICAgICAgLy8gZXZlbiB3aGVuIGl0J3Mgbm90LiBVc2luZyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIGFub3RoZXIgd2F5XG4gICAgICAgICAgICAvLyBmb3IgdXMgdG8gYmUgYWJsZSB0byBnZXQgd2hhdCB0aGUgcmVsYXRlZFRhcmdldCB3aXRob3V0IHJlbHlpbmdcbiAgICAgICAgICAgIC8vIG9uIHRoZSBldmVudFxuICAgICAgICAgICAgcmVsYXRlZFRhcmdldCA9IGRvYy5hY3RpdmVFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICghZWxlbWVudENvbnRhaW5zKHJvb3QuY3VycmVudCwgcmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIGludGVybmFsU3RhdGUuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqIFJvb3QgZGl2IGZvY3VzIGhhbmRsZXIgKGRvZXNuJ3QgbmVlZCB1c2VDYWxsYmFjayBzaW5jZSBpdCdzIGZvciBhIG5hdGl2ZSBlbGVtZW50KSAqL1xuICAgIHZhciBvblJvb3RGb2N1c0NhcHR1cmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBwcm9wcy5vbkZvY3VzQ2FwdHVyZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocHJvcHMsIGV2KTtcbiAgICAgICAgaWYgKGV2LnRhcmdldCA9PT0gZmlyc3RCdW1wZXIuY3VycmVudCkge1xuICAgICAgICAgICAgZm9jdXNCdW1wZXIodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXYudGFyZ2V0ID09PSBsYXN0QnVtcGVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGZvY3VzQnVtcGVyKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcm5hbFN0YXRlLmhhc0ZvY3VzID0gdHJ1ZTtcbiAgICAgICAgaWYgKGV2LnRhcmdldCAhPT0gZXYuY3VycmVudFRhcmdldCAmJiAhKGV2LnRhcmdldCA9PT0gZmlyc3RCdW1wZXIuY3VycmVudCB8fCBldi50YXJnZXQgPT09IGxhc3RCdW1wZXIuY3VycmVudCkpIHtcbiAgICAgICAgICAgIC8vIGV2ZXJ5IHRpbWUgZm9jdXMgY2hhbmdlcyB3aXRoaW4gdGhlIHRyYXAgem9uZSwgcmVtZW1iZXIgdGhlIGZvY3VzZWQgZWxlbWVudCBzbyB0aGF0XG4gICAgICAgICAgICAvLyBpdCBjYW4gYmUgcmVzdG9yZWQgaWYgZm9jdXMgbGVhdmVzIHRoZSBwYW5lIGFuZCByZXR1cm5zIHZpYSBrZXlzdHJva2UgKGkuZS4gdmlhIGEgY2FsbCB0byB0aGlzLmZvY3VzKHRydWUpKVxuICAgICAgICAgICAgaW50ZXJuYWxTdGF0ZS5wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRJblRyYXBab25lID0gZXYudGFyZ2V0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKiogQ2FsbGVkIHRvIHJlc3RvcmUgZm9jdXMgb24gdW5tb3VudCBvciBwcm9wcyBjaGFuZ2UuICh1c2VFdmVudENhbGxiYWNrIGVuc3VyZXMgbGF0ZXN0IHByb3AgdmFsdWVzIGFyZSB1c2VkLikgKi9cbiAgICB2YXIgcmV0dXJuRm9jdXNUb0luaXRpYXRvciA9IHVzZUV2ZW50Q2FsbGJhY2soZnVuY3Rpb24gKGVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzKSB7XG4gICAgICAgIEZvY3VzVHJhcFpvbmUuZm9jdXNTdGFjayA9IEZvY3VzVHJhcFpvbmUuZm9jdXNTdGFjay5maWx0ZXIoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpbnRlcm5hbFN0YXRlLmZvY3VzU3RhY2tJZCAhPT0gdmFsdWU7IH0pO1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghZGlzYWJsZVJlc3RvcmVGb2N1cyAmJlxuICAgICAgICAgICAgdHlwZW9mIChlbGVtZW50VG9Gb2N1c09uRGlzbWlzcyA9PT0gbnVsbCB8fCBlbGVtZW50VG9Gb2N1c09uRGlzbWlzcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWxlbWVudFRvRm9jdXNPbkRpc21pc3MuZm9jdXMpID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAvLyBvbmx5IHJlc3RvcmUgZm9jdXMgaWYgdGhlIGN1cnJlbnQgZm9jdXNlZCBlbGVtZW50IGlzIHdpdGhpbiB0aGUgRlRaLCBvciBpZiBub3RoaW5nIGlzIGZvY3VzZWRcbiAgICAgICAgICAgIChlbGVtZW50Q29udGFpbnMocm9vdC5jdXJyZW50LCBhY3RpdmVFbGVtZW50KSB8fCBhY3RpdmVFbGVtZW50ID09PSBkb2MuYm9keSkpIHtcbiAgICAgICAgICAgIGZvY3VzRWxlbWVudEFzeW5jKGVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIC8qKiBDYWxsZWQgaW4gd2luZG93IGV2ZW50IGhhbmRsZXJzLiAodXNlRXZlbnRDYWxsYmFjayBlbnN1cmVzIGxhdGVzdCBwcm9wIHZhbHVlcyBhcmUgdXNlZC4pICovXG4gICAgdmFyIGZvcmNlRm9jdXNPckNsaWNrSW5UcmFwID0gdXNlRXZlbnRDYWxsYmFjayhmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgLy8gYmUgc3VyZSB0byB1c2UgdGhlIGxhdGVzdCB2YWx1ZXMgaGVyZVxuICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJuYWxTdGF0ZS5mb2N1c1N0YWNrSWQgPT09IEZvY3VzVHJhcFpvbmUuZm9jdXNTdGFjay5zbGljZSgtMSlbMF0pIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXYudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgIWVsZW1lbnRDb250YWlucyhyb290LmN1cnJlbnQsIHRhcmdldEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRvYyAmJiBkb2MuYWN0aXZlRWxlbWVudCA9PT0gZG9jLmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jICYmIGRvYy5hY3RpdmVFbGVtZW50ID09PSBkb2MuYm9keSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzRlRaKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxTdGF0ZS5oYXNGb2N1cyA9IHRydWU7IC8vIHNldCBmb2N1cyBoZXJlIHNpbmNlIHdlIHN0b3AgZXZlbnQgcHJvcGFnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb2N1c0ZUWigpO1xuICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmhhc0ZvY3VzID0gdHJ1ZTsgLy8gc2V0IGZvY3VzIGhlcmUgc2luY2Ugd2Ugc3RvcCBldmVudCBwcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gVXBkYXRlIHdpbmRvdyBldmVudCBoYW5kbGVycyB3aGVuIHJlbGV2YW50IHByb3BzIGNoYW5nZVxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBkaXNwb3NhYmxlcyA9IFtdO1xuICAgICAgICBpZiAoZm9yY2VGb2N1c0luc2lkZVRyYXApIHtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLnB1c2gob24od2luZG93LCAnZm9jdXMnLCBmb3JjZUZvY3VzT3JDbGlja0luVHJhcCwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwKSB7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5wdXNoKG9uKHdpbmRvdywgJ2NsaWNrJywgZm9yY2VGb2N1c09yQ2xpY2tJblRyYXAsIHRydWUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgZGlzcG9zYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAoZGlzcG9zZSkgeyByZXR1cm4gZGlzcG9zZSgpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBzaG91bGQgb25seSBydW4gd2hlbiB0aGVzZSB0d28gcHJvcHMgY2hhbmdlXG4gICAgfSwgW2ZvcmNlRm9jdXNJbnNpZGVUcmFwLCBpc0NsaWNrYWJsZU91dHNpZGVGb2N1c1RyYXBdKTtcbiAgICAvLyBPbiBwcm9wIGNoYW5nZSBvciBmaXJzdCByZW5kZXIsIGZvY3VzIHRoZSBGVFogYW5kIHVwZGF0ZSBmb2N1c1N0YWNrIGlmIGFwcHJvcHJpYXRlXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBkaXNhYmxlZCwgb3IgaWYgaXQncyBhIHJlLXJlbmRlciBhbmQgZm9yY2VGb2N1c0luc2lkZVRyYXAgaXMgZmFsc2VcbiAgICAgICAgLy8gKHRvIG1hdGNoIGV4aXN0aW5nIGJlaGF2aW9yLCB0aGUgRlRaIGhhbmRsZXMgZmlyc3QgZm9jdXMgZXZlbiBpZiBmb3JjZUZvY3VzSW5zaWRlVHJhcFxuICAgICAgICAvLyBpcyBmYWxzZSwgdGhvdWdoIGl0J3MgZGViYXRhYmxlIHdoZXRoZXIgaXQgc2hvdWxkIGRvIHRoaXMpXG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCAoIWlzRmlyc3RSZW5kZXIgJiYgIWZvcmNlRm9jdXNJbnNpZGVUcmFwKSB8fCAhcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJhbnNpdGlvbiBmcm9tIGZvcmNlRm9jdXNJbnNpZGVUcmFwIC8gRlRaIGRpc2FibGVkIHRvIGVuYWJsZWQgKG9yIGluaXRpYWwgbW91bnQpXG4gICAgICAgIEZvY3VzVHJhcFpvbmUuZm9jdXNTdGFjay5wdXNoKGludGVybmFsU3RhdGUuZm9jdXNTdGFja0lkKTtcbiAgICAgICAgdmFyIGVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzID0gcHJvcHMuZWxlbWVudFRvRm9jdXNPbkRpc21pc3MgfHwgZG9jLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghZGlzYWJsZUZpcnN0Rm9jdXMgJiYgIWVsZW1lbnRDb250YWlucyhyb290LmN1cnJlbnQsIGVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzKSkge1xuICAgICAgICAgICAgZm9jdXNGVFooKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUbyBtYXRjaCBleGlzdGluZyBiZWhhdmlvciwgYWx3YXlzIHJldHVybiBmb2N1cyBvbiBjbGVhbnVwIChldmVuIGlmIHdlIGRpZG4ndCBoYW5kbGVcbiAgICAgICAgLy8gaW5pdGlhbCBmb2N1cyksIGJ1dCBpdCdzIGRlYmF0YWJsZSB3aGV0aGVyIHRoYXQncyBjb3JyZWN0XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiByZXR1cm5Gb2N1c1RvSW5pdGlhdG9yKGVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzKTsgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBzaG91bGQgb25seSBydW4gd2hlbiB0aGVzZSB0d28gcHJvcHMgY2hhbmdlXG4gICAgfSwgW2ZvcmNlRm9jdXNJbnNpZGVUcmFwLCBkaXNhYmxlZF0pO1xuICAgIC8vIEhhbmRsZSBtb2RhbGl6YXRpb24gc2VwYXJhdGVseSBmcm9tIGZpcnN0IGZvY3VzXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiBlbmFibGVBcmlhSGlkZGVuU2libGluZ3MpIHtcbiAgICAgICAgICAgIHZhciB1bm1vZGFsaXplID0gbW9kYWxpemUocm9vdC5jdXJyZW50KTtcbiAgICAgICAgICAgIHJldHVybiB1bm1vZGFsaXplO1xuICAgICAgICB9XG4gICAgfSwgW2Rpc2FibGVkLCBlbmFibGVBcmlhSGlkZGVuU2libGluZ3MsIHJvb3RdKTtcbiAgICAvLyBDbGVhbnVwIGxpZmVjeWxlIG1ldGhvZCBmb3IgaW50ZXJuYWxTdGF0ZS5cbiAgICB1c2VVbm1vdW50KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gRGlzcG9zZSBvZiBlbGVtZW50IHJlZmVyZW5jZXMgc28gdGhlIERPTSBOb2RlcyBjYW4gYmUgZ2FyYmFnZS1jb2xsZWN0ZWRcbiAgICAgICAgZGVsZXRlIGludGVybmFsU3RhdGUucHJldmlvdXNseUZvY3VzZWRFbGVtZW50SW5UcmFwWm9uZTtcbiAgICB9KTtcbiAgICB1c2VDb21wb25lbnRSZWYoY29tcG9uZW50UmVmLCBpbnRlcm5hbFN0YXRlLnByZXZpb3VzbHlGb2N1c2VkRWxlbWVudEluVHJhcFpvbmUsIGZvY3VzRlRaKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oeyBcImFyaWEtbGFiZWxsZWRieVwiOiBwcm9wcy5hcmlhTGFiZWxsZWRCeSB9LCBnZXROYXRpdmVQcm9wcyhwcm9wcywgZGl2UHJvcGVydGllcyksIHsgcmVmOiBtZXJnZWRSb290UmVmLCBvbkZvY3VzQ2FwdHVyZTogb25Sb290Rm9jdXNDYXB0dXJlLCBvbkJsdXJDYXB0dXJlOiBvblJvb3RCbHVyQ2FwdHVyZSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgYnVtcGVyUHJvcHMsIHsgcmVmOiBmaXJzdEJ1bXBlciB9KSksXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCBidW1wZXJQcm9wcywgeyByZWY6IGxhc3RCdW1wZXIgfSkpKSk7XG59KTtcbkZvY3VzVHJhcFpvbmUuZGlzcGxheU5hbWUgPSBDT01QT05FTlRfTkFNRTtcbkZvY3VzVHJhcFpvbmUuZm9jdXNTdGFjayA9IFtdO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Rm9jdXNUcmFwWm9uZS5qcy5tYXAiLCIvKipcbiAqIEBkZXByZWNhdGVkIEljb24gdHlwZSBpcyBpbmZlcnJlZCBiYXNlZCBvbiBwcmVzZW5jZSBvZiBgSUljb25Qcm9wcy5pbWFnZVByb3BzYFxuICoge0Bkb2NDYXRlZ29yeSBJY29ufVxuICovXG5leHBvcnQgdmFyIEljb25UeXBlO1xuKGZ1bmN0aW9uIChJY29uVHlwZSkge1xuICAgIC8qKlxuICAgICAqIFJlbmRlciB1c2luZyB0aGUgZmFicmljIGljb24gZm9udC5cbiAgICAgKiBAZGVwcmVjYXRlZCBJY29uIHR5cGUgaXMgaW5mZXJyZWQgYmFzZWQgb24gcHJlc2VuY2Ugb2YgYElJY29uUHJvcHMuaW1hZ2VQcm9wc2BcbiAgICAgKi9cbiAgICBJY29uVHlwZVtJY29uVHlwZVtcImRlZmF1bHRcIl0gPSAwXSA9IFwiZGVmYXVsdFwiO1xuICAgIC8qKlxuICAgICAqIFJlbmRlciB1c2luZyBhbiBpbWFnZSwgd2hlcmUgaW1hZ2VQcm9wcyB3b3VsZCBiZSB1c2VkLlxuICAgICAqIEBkZXByZWNhdGVkIEljb24gdHlwZSBpcyBpbmZlcnJlZCBiYXNlZCBvbiBwcmVzZW5jZSBvZiBgSUljb25Qcm9wcy5pbWFnZVByb3BzYFxuICAgICAqL1xuICAgIEljb25UeXBlW0ljb25UeXBlW1wiaW1hZ2VcIl0gPSAxXSA9IFwiaW1hZ2VcIjtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBJY29uIHR5cGUgaXMgaW5mZXJyZWQgYmFzZWQgb24gcHJlc2VuY2Ugb2YgYElJY29uUHJvcHMuaW1hZ2VQcm9wc2BcbiAgICAgKi9cbiAgICBJY29uVHlwZVtJY29uVHlwZVtcIkRlZmF1bHRcIl0gPSAxMDAwMDBdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgSWNvbiB0eXBlIGlzIGluZmVycmVkIGJhc2VkIG9uIHByZXNlbmNlIG9mIGBJSWNvblByb3BzLmltYWdlUHJvcHNgXG4gICAgICovXG4gICAgSWNvblR5cGVbSWNvblR5cGVbXCJJbWFnZVwiXSA9IDEwMDAwMV0gPSBcIkltYWdlXCI7XG59KShJY29uVHlwZSB8fCAoSWNvblR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbi50eXBlcy5qcy5tYXAiLCIvKipcbiAqIFRoZSBwb3NzaWJsZSBtZXRob2RzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZml0IHRoZSBpbWFnZS5cbiAqIHtAZG9jQ2F0ZWdvcnkgSW1hZ2V9XG4gKi9cbmV4cG9ydCB2YXIgSW1hZ2VGaXQ7XG4oZnVuY3Rpb24gKEltYWdlRml0KSB7XG4gICAgLyoqXG4gICAgICogVGhlIGltYWdlIGlzIG5vdCBzY2FsZWQuIFRoZSBpbWFnZSBpcyBjZW50ZXJlZCBhbmQgY3JvcHBlZCB3aXRoaW4gdGhlIGNvbnRlbnQgYm94LlxuICAgICAqL1xuICAgIEltYWdlRml0W0ltYWdlRml0W1wiY2VudGVyXCJdID0gMF0gPSBcImNlbnRlclwiO1xuICAgIC8qKlxuICAgICAqIFRoZSBpbWFnZSBpcyBzY2FsZWQgdG8gbWFpbnRhaW4gaXRzIGFzcGVjdCByYXRpbyB3aGlsZSBiZWluZyBmdWxseSBjb250YWluZWQgd2l0aGluIHRoZSBmcmFtZS4gVGhlIGltYWdlIHdpbGxcbiAgICAgKiBiZSBjZW50ZXJlZCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBmcmFtZS4gVGhlIHNwYWNlIGluIHRoZSB0b3AgYW5kIGJvdHRvbSBvciBpbiB0aGUgc2lkZXMgb2ZcbiAgICAgKiB0aGUgZnJhbWUgd2lsbCBiZSBlbXB0eSBkZXBlbmRpbmcgb24gdGhlIGRpZmZlcmVuY2UgaW4gYXNwZWN0IHJhdGlvIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgZnJhbWUuXG4gICAgICovXG4gICAgSW1hZ2VGaXRbSW1hZ2VGaXRbXCJjb250YWluXCJdID0gMV0gPSBcImNvbnRhaW5cIjtcbiAgICAvKipcbiAgICAgKiBUaGUgaW1hZ2UgaXMgc2NhbGVkIHRvIG1haW50YWluIGl0cyBhc3BlY3QgcmF0aW8gd2hpbGUgZmlsbGluZyB0aGUgZnJhbWUuIFBvcnRpb25zIG9mIHRoZSBpbWFnZSB3aWxsIGJlIGNyb3BwZWRcbiAgICAgKiBmcm9tIHRoZSB0b3AgYW5kIGJvdHRvbSwgb3IgdGhlIHNpZGVzLCBkZXBlbmRpbmcgb24gdGhlIGRpZmZlcmVuY2UgaW4gYXNwZWN0IHJhdGlvIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgZnJhbWUuXG4gICAgICovXG4gICAgSW1hZ2VGaXRbSW1hZ2VGaXRbXCJjb3ZlclwiXSA9IDJdID0gXCJjb3ZlclwiO1xuICAgIC8qKlxuICAgICAqIE5laXRoZXIgdGhlIGltYWdlIG5vciB0aGUgZnJhbWUgYXJlIHNjYWxlZC4gSWYgdGhlaXIgc2l6ZXMgZG8gbm90IG1hdGNoLCB0aGUgaW1hZ2Ugd2lsbCBlaXRoZXIgYmUgY3JvcHBlZCBvciB0aGVcbiAgICAgKiBmcmFtZSB3aWxsIGhhdmUgZW1wdHkgc3BhY2UuXG4gICAgICovXG4gICAgSW1hZ2VGaXRbSW1hZ2VGaXRbXCJub25lXCJdID0gM10gPSBcIm5vbmVcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgaW1hZ2Ugd2lsbCBiZSBjZW50ZXJlZCBob3Jpem9udGFsbHkgYW5kIHZlcnRpY2FsbHkgd2l0aGluIHRoZSBmcmFtZSBhbmQgbWFpbnRhaW5zIGl0cyBhc3BlY3QgcmF0aW8uIEl0IHdpbGxcbiAgICAgKiBiZWhhdmUgYXMgSW1hZ2VGaXQuY2VudGVyIGlmIHRoZSBpbWFnZSdzIG5hdHVyYWwgaGVpZ2h0IG9yIHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgSW1hZ2UgZnJhbWUncyBoZWlnaHQgb3Igd2lkdGgsXG4gICAgICogYnV0IGlmIGJvdGggbmF0dXJhbCBoZWlnaHQgYW5kIHdpZHRoIGFyZSBsYXJnZXIgdGhhbiB0aGUgZnJhbWUgaXQgd2lsbCBiZWhhdmUgYXMgSW1hZ2VGaXQuY292ZXIuXG4gICAgICovXG4gICAgSW1hZ2VGaXRbSW1hZ2VGaXRbXCJjZW50ZXJDb3ZlclwiXSA9IDRdID0gXCJjZW50ZXJDb3ZlclwiO1xuICAgIC8qKlxuICAgICAqIFRoZSBpbWFnZSB3aWxsIGJlIGNlbnRlcmVkIGhvcml6b250YWxseSBhbmQgdmVydGljYWxseSB3aXRoaW4gdGhlIGZyYW1lIGFuZCBtYWludGFpbnMgaXRzIGFzcGVjdCByYXRpby4gSXQgd2lsbFxuICAgICAqIGJlaGF2ZSBhcyBJbWFnZUZpdC5jZW50ZXIgaWYgdGhlIGltYWdlJ3MgbmF0dXJhbCBoZWlnaHQgYW5kIHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgSW1hZ2UgZnJhbWUncyBoZWlnaHQgYW5kIHdpZHRoLFxuICAgICAqIGJ1dCBpZiBlaXRoZXIgbmF0dXJhbCBoZWlnaHQgb3Igd2lkdGggYXJlIGxhcmdlciB0aGFuIHRoZSBmcmFtZSBpdCB3aWxsIGJlaGF2ZSBhcyBJbWFnZUZpdC5jb250YWluLlxuICAgICAqL1xuICAgIEltYWdlRml0W0ltYWdlRml0W1wiY2VudGVyQ29udGFpblwiXSA9IDVdID0gXCJjZW50ZXJDb250YWluXCI7XG59KShJbWFnZUZpdCB8fCAoSW1hZ2VGaXQgPSB7fSkpO1xuLyoqXG4gKiBUaGUgY292ZXIgc3R5bGUgdG8gYmUgdXNlZCBvbiB0aGUgaW1hZ2VcbiAqIHtAZG9jQ2F0ZWdvcnkgSW1hZ2V9XG4gKi9cbmV4cG9ydCB2YXIgSW1hZ2VDb3ZlclN0eWxlO1xuKGZ1bmN0aW9uIChJbWFnZUNvdmVyU3R5bGUpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgaW1hZ2Ugd2lsbCBiZSBzaG93biBhdCAxMDAlIGhlaWdodCBvZiBjb250YWluZXIgYW5kIHRoZSB3aWR0aCB3aWxsIGJlIHNjYWxlZCBhY2NvcmRpbmdseVxuICAgICAqL1xuICAgIEltYWdlQ292ZXJTdHlsZVtJbWFnZUNvdmVyU3R5bGVbXCJsYW5kc2NhcGVcIl0gPSAwXSA9IFwibGFuZHNjYXBlXCI7XG4gICAgLyoqXG4gICAgICogVGhlIGltYWdlIHdpbGwgYmUgc2hvd24gYXQgMTAwJSB3aWR0aCBvZiBjb250YWluZXIgYW5kIHRoZSBoZWlnaHQgd2lsbCBiZSBzY2FsZWQgYWNjb3JkaW5nbHlcbiAgICAgKi9cbiAgICBJbWFnZUNvdmVyU3R5bGVbSW1hZ2VDb3ZlclN0eWxlW1wicG9ydHJhaXRcIl0gPSAxXSA9IFwicG9ydHJhaXRcIjtcbn0pKEltYWdlQ292ZXJTdHlsZSB8fCAoSW1hZ2VDb3ZlclN0eWxlID0ge30pKTtcbi8qKlxuICoge0Bkb2NDYXRlZ29yeSBJbWFnZX1cbiAqL1xuZXhwb3J0IHZhciBJbWFnZUxvYWRTdGF0ZTtcbihmdW5jdGlvbiAoSW1hZ2VMb2FkU3RhdGUpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgaW1hZ2UgaGFzIG5vdCB5ZXQgYmVlbiBsb2FkZWQsIGFuZCB0aGVyZSBpcyBubyBlcnJvciB5ZXQuXG4gICAgICovXG4gICAgSW1hZ2VMb2FkU3RhdGVbSW1hZ2VMb2FkU3RhdGVbXCJub3RMb2FkZWRcIl0gPSAwXSA9IFwibm90TG9hZGVkXCI7XG4gICAgLyoqXG4gICAgICogVGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZCBzdWNjZXNzZnVsbHkuXG4gICAgICovXG4gICAgSW1hZ2VMb2FkU3RhdGVbSW1hZ2VMb2FkU3RhdGVbXCJsb2FkZWRcIl0gPSAxXSA9IFwibG9hZGVkXCI7XG4gICAgLyoqXG4gICAgICogQW4gZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVyZWQgd2hpbGUgbG9hZGluZyB0aGUgaW1hZ2UuXG4gICAgICovXG4gICAgSW1hZ2VMb2FkU3RhdGVbSW1hZ2VMb2FkU3RhdGVbXCJlcnJvclwiXSA9IDJdID0gXCJlcnJvclwiO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIE5vdCB1c2VkLiBVc2UgYG9uTG9hZGluZ1N0YXRlQ2hhbmdlYCBhbmQgcmUtcmVuZGVyIHRoZSBJbWFnZSB3aXRoIGEgZGlmZmVyZW50IHNyYy5cbiAgICAgKi9cbiAgICBJbWFnZUxvYWRTdGF0ZVtJbWFnZUxvYWRTdGF0ZVtcImVycm9yTG9hZGVkXCJdID0gM10gPSBcImVycm9yTG9hZGVkXCI7XG59KShJbWFnZUxvYWRTdGF0ZSB8fCAoSW1hZ2VMb2FkU3RhdGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW1hZ2UudHlwZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiwgZ2V0TmF0aXZlUHJvcHMsIGltZ1Byb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgSW1hZ2VDb3ZlclN0eWxlLCBJbWFnZUZpdCwgSW1hZ2VMb2FkU3RhdGUgfSBmcm9tICcuL0ltYWdlLnR5cGVzJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QsIHVzZU1lcmdlZFJlZnMgfSBmcm9tICdAZmx1ZW50dWkvcmVhY3QtaG9va3MnO1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oKTtcbnZhciBTVkdfUkVHRVggPSAvXFwuc3ZnJC9pO1xudmFyIEtFWV9QUkVGSVggPSAnZmFicmljSW1hZ2UnO1xuZnVuY3Rpb24gdXNlTG9hZFN0YXRlKHByb3BzLCBpbWFnZUVsZW1lbnQpIHtcbiAgICB2YXIgb25Mb2FkaW5nU3RhdGVDaGFuZ2UgPSBwcm9wcy5vbkxvYWRpbmdTdGF0ZUNoYW5nZSwgb25Mb2FkID0gcHJvcHMub25Mb2FkLCBvbkVycm9yID0gcHJvcHMub25FcnJvciwgc3JjID0gcHJvcHMuc3JjO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKEltYWdlTG9hZFN0YXRlLm5vdExvYWRlZCksIGxvYWRTdGF0ZSA9IF9hWzBdLCBzZXRMb2FkU3RhdGUgPSBfYVsxXTtcbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gSWYgdGhlIHNyYyBwcm9wZXJ0eSBjaGFuZ2VzLCByZXNldCB0aGUgbG9hZCBzdGF0ZVxuICAgICAgICAvLyAoZG9lcyBub3RoaW5nIGlmIHRoZSBsb2FkIHN0YXRlIGlzIGFscmVhZHkgbm90TG9hZGVkKVxuICAgICAgICBzZXRMb2FkU3RhdGUoSW1hZ2VMb2FkU3RhdGUubm90TG9hZGVkKTtcbiAgICB9LCBbc3JjXSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAtLSBpbnRlbmRlZCB0byBydW4gZXZlcnkgcmVuZGVyXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGxvYWRTdGF0ZSA9PT0gSW1hZ2VMb2FkU3RhdGUubm90TG9hZGVkKSB7XG4gICAgICAgICAgICAvLyB0ZXN0aW5nIGlmIG5hdHVyYWxXaWR0aCBhbmQgbmF0dXJhbEhlaWdodCBhcmUgZ3JlYXRlciB0aGFuIHplcm8gaXMgYmV0dGVyIHRoYW4gY2hlY2tpbmdcbiAgICAgICAgICAgIC8vIC5jb21wbGV0ZSwgYmVjYXVzZSAuY29tcGxldGUgd2lsbCBhbHNvIGJlIHNldCB0byB0cnVlIGlmIHRoZSBpbWFnZSBicmVha3MuIEhvd2V2ZXIsXG4gICAgICAgICAgICAvLyBmb3Igc29tZSBicm93c2VycywgU1ZHIGltYWdlcyBkbyBub3QgaGF2ZSBhIG5hdHVyYWxXaWR0aCBvciBuYXR1cmFsSGVpZ2h0LCBzbyBmYWxsIGJhY2tcbiAgICAgICAgICAgIC8vIHRvIGNoZWNraW5nIC5jb21wbGV0ZSBmb3IgdGhlc2UgaW1hZ2VzLlxuICAgICAgICAgICAgdmFyIGlzTG9hZGVkID0gaW1hZ2VFbGVtZW50LmN1cnJlbnRcbiAgICAgICAgICAgICAgICA/IChzcmMgJiYgaW1hZ2VFbGVtZW50LmN1cnJlbnQubmF0dXJhbFdpZHRoID4gMCAmJiBpbWFnZUVsZW1lbnQuY3VycmVudC5uYXR1cmFsSGVpZ2h0ID4gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKGltYWdlRWxlbWVudC5jdXJyZW50LmNvbXBsZXRlICYmIFNWR19SRUdFWC50ZXN0KHNyYykpXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChpc0xvYWRlZCkge1xuICAgICAgICAgICAgICAgIHNldExvYWRTdGF0ZShJbWFnZUxvYWRTdGF0ZS5sb2FkZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb25Mb2FkaW5nU3RhdGVDaGFuZ2UgPT09IG51bGwgfHwgb25Mb2FkaW5nU3RhdGVDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uTG9hZGluZ1N0YXRlQ2hhbmdlKGxvYWRTdGF0ZSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgLS0gc2hvdWxkIG9ubHkgcnVuIHdoZW4gbG9hZFN0YXRlIGNoYW5nZXNcbiAgICB9LCBbbG9hZFN0YXRlXSk7XG4gICAgdmFyIG9uSW1hZ2VMb2FkZWQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgb25Mb2FkID09PSBudWxsIHx8IG9uTG9hZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Mb2FkKGV2KTtcbiAgICAgICAgaWYgKHNyYykge1xuICAgICAgICAgICAgc2V0TG9hZFN0YXRlKEltYWdlTG9hZFN0YXRlLmxvYWRlZCk7XG4gICAgICAgIH1cbiAgICB9LCBbc3JjLCBvbkxvYWRdKTtcbiAgICB2YXIgb25JbWFnZUVycm9yID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIG9uRXJyb3IgPT09IG51bGwgfHwgb25FcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25FcnJvcihldik7XG4gICAgICAgIHNldExvYWRTdGF0ZShJbWFnZUxvYWRTdGF0ZS5lcnJvcik7XG4gICAgfSwgW29uRXJyb3JdKTtcbiAgICByZXR1cm4gW2xvYWRTdGF0ZSwgb25JbWFnZUxvYWRlZCwgb25JbWFnZUVycm9yXTtcbn1cbmV4cG9ydCB2YXIgSW1hZ2VCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIHZhciBmcmFtZUVsZW1lbnQgPSBSZWFjdC51c2VSZWYoKTtcbiAgICB2YXIgaW1hZ2VFbGVtZW50ID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIF9hID0gdXNlTG9hZFN0YXRlKHByb3BzLCBpbWFnZUVsZW1lbnQpLCBsb2FkU3RhdGUgPSBfYVswXSwgb25JbWFnZUxvYWRlZCA9IF9hWzFdLCBvbkltYWdlRXJyb3IgPSBfYVsyXTtcbiAgICB2YXIgaW1hZ2VQcm9wcyA9IGdldE5hdGl2ZVByb3BzKHByb3BzLCBpbWdQcm9wZXJ0aWVzLCBbXG4gICAgICAgICd3aWR0aCcsXG4gICAgICAgICdoZWlnaHQnLFxuICAgIF0pO1xuICAgIHZhciBzcmMgPSBwcm9wcy5zcmMsIGFsdCA9IHByb3BzLmFsdCwgd2lkdGggPSBwcm9wcy53aWR0aCwgaGVpZ2h0ID0gcHJvcHMuaGVpZ2h0LCBfYiA9IHByb3BzLnNob3VsZEZhZGVJbiwgc2hvdWxkRmFkZUluID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYiwgc2hvdWxkU3RhcnRWaXNpYmxlID0gcHJvcHMuc2hvdWxkU3RhcnRWaXNpYmxlLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGltYWdlRml0ID0gcHJvcHMuaW1hZ2VGaXQsIHJvbGUgPSBwcm9wcy5yb2xlLCBtYXhpbWl6ZUZyYW1lID0gcHJvcHMubWF4aW1pemVGcmFtZSwgc3R5bGVzID0gcHJvcHMuc3R5bGVzLCB0aGVtZSA9IHByb3BzLnRoZW1lLCBsb2FkaW5nID0gcHJvcHMubG9hZGluZztcbiAgICB2YXIgY292ZXJTdHlsZSA9IHVzZUNvdmVyU3R5bGUocHJvcHMsIGxvYWRTdGF0ZSwgaW1hZ2VFbGVtZW50LCBmcmFtZUVsZW1lbnQpO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgbWF4aW1pemVGcmFtZTogbWF4aW1pemVGcmFtZSxcbiAgICAgICAgc2hvdWxkRmFkZUluOiBzaG91bGRGYWRlSW4sXG4gICAgICAgIHNob3VsZFN0YXJ0VmlzaWJsZTogc2hvdWxkU3RhcnRWaXNpYmxlLFxuICAgICAgICBpc0xvYWRlZDogbG9hZFN0YXRlID09PSBJbWFnZUxvYWRTdGF0ZS5sb2FkZWQgfHwgKGxvYWRTdGF0ZSA9PT0gSW1hZ2VMb2FkU3RhdGUubm90TG9hZGVkICYmIHByb3BzLnNob3VsZFN0YXJ0VmlzaWJsZSksXG4gICAgICAgIGlzTGFuZHNjYXBlOiBjb3ZlclN0eWxlID09PSBJbWFnZUNvdmVyU3R5bGUubGFuZHNjYXBlLFxuICAgICAgICBpc0NlbnRlcjogaW1hZ2VGaXQgPT09IEltYWdlRml0LmNlbnRlcixcbiAgICAgICAgaXNDZW50ZXJDb250YWluOiBpbWFnZUZpdCA9PT0gSW1hZ2VGaXQuY2VudGVyQ29udGFpbixcbiAgICAgICAgaXNDZW50ZXJDb3ZlcjogaW1hZ2VGaXQgPT09IEltYWdlRml0LmNlbnRlckNvdmVyLFxuICAgICAgICBpc0NvbnRhaW46IGltYWdlRml0ID09PSBJbWFnZUZpdC5jb250YWluLFxuICAgICAgICBpc0NvdmVyOiBpbWFnZUZpdCA9PT0gSW1hZ2VGaXQuY292ZXIsXG4gICAgICAgIGlzTm9uZTogaW1hZ2VGaXQgPT09IEltYWdlRml0Lm5vbmUsXG4gICAgICAgIGlzRXJyb3I6IGxvYWRTdGF0ZSA9PT0gSW1hZ2VMb2FkU3RhdGUuZXJyb3IsXG4gICAgICAgIGlzTm90SW1hZ2VGaXQ6IGltYWdlRml0ID09PSB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgLy8gSWYgaW1hZ2UgZGltZW5zaW9ucyBhcmVuJ3Qgc3BlY2lmaWVkLCB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSBpbWFnZSBpcyB1c2VkLlxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290LCBzdHlsZTogeyB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH0sIHJlZjogZnJhbWVFbGVtZW50IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgX19hc3NpZ24oe30sIGltYWdlUHJvcHMsIHsgb25Mb2FkOiBvbkltYWdlTG9hZGVkLCBvbkVycm9yOiBvbkltYWdlRXJyb3IsIGtleTogS0VZX1BSRUZJWCArIHByb3BzLnNyYyB8fCAnJywgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmltYWdlLCByZWY6IHVzZU1lcmdlZFJlZnMoaW1hZ2VFbGVtZW50LCBmb3J3YXJkZWRSZWYpLCBzcmM6IHNyYywgYWx0OiBhbHQsIHJvbGU6IHJvbGUsIGxvYWRpbmc6IGxvYWRpbmcgfSkpKSk7XG59KTtcbkltYWdlQmFzZS5kaXNwbGF5TmFtZSA9ICdJbWFnZUJhc2UnO1xuZnVuY3Rpb24gdXNlQ292ZXJTdHlsZShwcm9wcywgbG9hZFN0YXRlLCBpbWFnZUVsZW1lbnQsIGZyYW1lRWxlbWVudCkge1xuICAgIHZhciBwcmV2aW91c0xvYWRTdGF0ZSA9IFJlYWN0LnVzZVJlZihsb2FkU3RhdGUpO1xuICAgIHZhciBjb3ZlclN0eWxlID0gUmVhY3QudXNlUmVmKCk7XG4gICAgaWYgKGNvdmVyU3R5bGUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAocHJldmlvdXNMb2FkU3RhdGUuY3VycmVudCA9PT0gSW1hZ2VMb2FkU3RhdGUubm90TG9hZGVkICYmIGxvYWRTdGF0ZSA9PT0gSW1hZ2VMb2FkU3RhdGUubG9hZGVkKSkge1xuICAgICAgICBjb3ZlclN0eWxlLmN1cnJlbnQgPSBjb21wdXRlQ292ZXJTdHlsZShwcm9wcywgbG9hZFN0YXRlLCBpbWFnZUVsZW1lbnQsIGZyYW1lRWxlbWVudCk7XG4gICAgfVxuICAgIHByZXZpb3VzTG9hZFN0YXRlLmN1cnJlbnQgPSBsb2FkU3RhdGU7XG4gICAgcmV0dXJuIGNvdmVyU3R5bGUuY3VycmVudDtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVDb3ZlclN0eWxlKHByb3BzLCBsb2FkU3RhdGUsIGltYWdlRWxlbWVudCwgZnJhbWVFbGVtZW50KSB7XG4gICAgdmFyIGltYWdlRml0ID0gcHJvcHMuaW1hZ2VGaXQsIHdpZHRoID0gcHJvcHMud2lkdGgsIGhlaWdodCA9IHByb3BzLmhlaWdodDtcbiAgICAvLyBEbyBub3QgY29tcHV0ZSBjb3ZlciBzdHlsZSBpZiBpdCB3YXMgYWxyZWFkeSBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICBpZiAocHJvcHMuY292ZXJTdHlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBwcm9wcy5jb3ZlclN0eWxlO1xuICAgIH1cbiAgICBlbHNlIGlmIChsb2FkU3RhdGUgPT09IEltYWdlTG9hZFN0YXRlLmxvYWRlZCAmJlxuICAgICAgICAoaW1hZ2VGaXQgPT09IEltYWdlRml0LmNvdmVyIHx8XG4gICAgICAgICAgICBpbWFnZUZpdCA9PT0gSW1hZ2VGaXQuY29udGFpbiB8fFxuICAgICAgICAgICAgaW1hZ2VGaXQgPT09IEltYWdlRml0LmNlbnRlckNvbnRhaW4gfHxcbiAgICAgICAgICAgIGltYWdlRml0ID09PSBJbWFnZUZpdC5jZW50ZXJDb3ZlcikgJiZcbiAgICAgICAgaW1hZ2VFbGVtZW50LmN1cnJlbnQgJiZcbiAgICAgICAgZnJhbWVFbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkZXNpcmVkIHJhdGlvIHVzaW5nIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHByb3BzLlxuICAgICAgICAvLyBJZiB0aG9zZSBwcm9wcyBhcmVuJ3QgYXZhaWxhYmxlLCBtZWFzdXJlIG1lYXN1cmUgdGhlIGZyYW1lLlxuICAgICAgICB2YXIgZGVzaXJlZFJhdGlvID0gdm9pZCAwO1xuICAgICAgICBpZiAodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIGhlaWdodCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgICAgIGltYWdlRml0ICE9PSBJbWFnZUZpdC5jZW50ZXJDb250YWluICYmXG4gICAgICAgICAgICBpbWFnZUZpdCAhPT0gSW1hZ2VGaXQuY2VudGVyQ292ZXIpIHtcbiAgICAgICAgICAgIGRlc2lyZWRSYXRpbyA9IHdpZHRoIC8gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVzaXJlZFJhdGlvID0gZnJhbWVFbGVtZW50LmN1cnJlbnQuY2xpZW50V2lkdGggLyBmcmFtZUVsZW1lbnQuY3VycmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXhhbWluZSB0aGUgc291cmNlIGltYWdlIHRvIGRldGVybWluZSBpdHMgb3JpZ2luYWwgcmF0aW8uXG4gICAgICAgIHZhciBuYXR1cmFsUmF0aW8gPSBpbWFnZUVsZW1lbnQuY3VycmVudC5uYXR1cmFsV2lkdGggLyBpbWFnZUVsZW1lbnQuY3VycmVudC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICAvLyBTaG91bGQgd2UgY3JvcCBmcm9tIHRoZSB0b3Agb3IgdGhlIHNpZGVzP1xuICAgICAgICBpZiAobmF0dXJhbFJhdGlvID4gZGVzaXJlZFJhdGlvKSB7XG4gICAgICAgICAgICByZXR1cm4gSW1hZ2VDb3ZlclN0eWxlLmxhbmRzY2FwZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSW1hZ2VDb3ZlclN0eWxlLnBvcnRyYWl0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW1hZ2UuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBBbmltYXRpb25DbGFzc05hbWVzLCBnZXRHbG9iYWxDbGFzc05hbWVzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG5pbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xudmFyIEdsb2JhbENsYXNzTmFtZXMgPSB7XG4gICAgcm9vdDogJ21zLUltYWdlJyxcbiAgICByb290TWF4aW1pemVGcmFtZTogJ21zLUltYWdlLS1tYXhpbWl6ZUZyYW1lJyxcbiAgICBpbWFnZTogJ21zLUltYWdlLWltYWdlJyxcbiAgICBpbWFnZUNlbnRlcjogJ21zLUltYWdlLWltYWdlLS1jZW50ZXInLFxuICAgIGltYWdlQ29udGFpbjogJ21zLUltYWdlLWltYWdlLS1jb250YWluJyxcbiAgICBpbWFnZUNvdmVyOiAnbXMtSW1hZ2UtaW1hZ2UtLWNvdmVyJyxcbiAgICBpbWFnZUNlbnRlckNvbnRhaW46ICdtcy1JbWFnZS1pbWFnZS0tY2VudGVyQ29udGFpbicsXG4gICAgaW1hZ2VDZW50ZXJDb3ZlcjogJ21zLUltYWdlLWltYWdlLS1jZW50ZXJDb3ZlcicsXG4gICAgaW1hZ2VOb25lOiAnbXMtSW1hZ2UtaW1hZ2UtLW5vbmUnLFxuICAgIGltYWdlTGFuZHNjYXBlOiAnbXMtSW1hZ2UtaW1hZ2UtLWxhbmRzY2FwZScsXG4gICAgaW1hZ2VQb3J0cmFpdDogJ21zLUltYWdlLWltYWdlLS1wb3J0cmFpdCcsXG59O1xuZXhwb3J0IHZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCB3aWR0aCA9IHByb3BzLndpZHRoLCBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsIG1heGltaXplRnJhbWUgPSBwcm9wcy5tYXhpbWl6ZUZyYW1lLCBpc0xvYWRlZCA9IHByb3BzLmlzTG9hZGVkLCBzaG91bGRGYWRlSW4gPSBwcm9wcy5zaG91bGRGYWRlSW4sIHNob3VsZFN0YXJ0VmlzaWJsZSA9IHByb3BzLnNob3VsZFN0YXJ0VmlzaWJsZSwgaXNMYW5kc2NhcGUgPSBwcm9wcy5pc0xhbmRzY2FwZSwgaXNDZW50ZXIgPSBwcm9wcy5pc0NlbnRlciwgaXNDb250YWluID0gcHJvcHMuaXNDb250YWluLCBpc0NvdmVyID0gcHJvcHMuaXNDb3ZlciwgaXNDZW50ZXJDb250YWluID0gcHJvcHMuaXNDZW50ZXJDb250YWluLCBpc0NlbnRlckNvdmVyID0gcHJvcHMuaXNDZW50ZXJDb3ZlciwgaXNOb25lID0gcHJvcHMuaXNOb25lLCBpc0Vycm9yID0gcHJvcHMuaXNFcnJvciwgaXNOb3RJbWFnZUZpdCA9IHByb3BzLmlzTm90SW1hZ2VGaXQsIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRHbG9iYWxDbGFzc05hbWVzKEdsb2JhbENsYXNzTmFtZXMsIHRoZW1lKTtcbiAgICB2YXIgSW1hZ2VGaXRTdHlsZXMgPSB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICBsZWZ0OiAnNTAlIC8qIEBub2ZsaXAgKi8nLFxuICAgICAgICB0b3A6ICc1MCUnLFxuICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoLTUwJSwtNTAlKScsIC8vIEB0b2RvIHRlc3QgUlRMIHJlbmRlcnMgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNTAlLC01MCUpO1xuICAgIH07XG4gICAgLy8gQ3V0IHRoZSBtdXN0YXJkIHVzaW5nIG1zTWF4VG91Y2hQb2ludHMgdG8gZGV0ZWN0IElFMTEgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBDU1Mgb2JqZWN0LWZpdFxuICAgIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgICB2YXIgc3VwcG9ydHNPYmplY3RGaXQgPSB3aW5kb3cgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGZsdWVudHVpL21heC1sZW5cbiAgICAgICAgLy8gY2FzdCBuZWVkZWQgYXMgdmVuZG9yIHByZWZpeGVkIGBtc01heFRvdWNoUG9pbnRzYCBhcGkgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgVFMgbGliIGRlY2xhcmF0aW9uIC0gaW50cm9kdWNlZCB3aXRoIFRTIDQuNFxuICAgICAgICB3aW5kb3cubmF2aWdhdG9yLm1zTWF4VG91Y2hQb2ludHMgPT09IHVuZGVmaW5lZDtcbiAgICB2YXIgZmFsbGJhY2tPYmplY3RGaXRTdHlsZXMgPSAoaXNDb250YWluICYmIGlzTGFuZHNjYXBlKSB8fCAoaXNDb3ZlciAmJiAhaXNMYW5kc2NhcGUpXG4gICAgICAgID8geyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICdhdXRvJyB9XG4gICAgICAgIDogeyB3aWR0aDogJ2F1dG8nLCBoZWlnaHQ6ICcxMDAlJyB9O1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgIHRoZW1lLmZvbnRzLm1lZGl1bSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWF4aW1pemVGcmFtZSAmJiBbXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290TWF4aW1pemVGcmFtZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXNMb2FkZWQgJiYgc2hvdWxkRmFkZUluICYmICFzaG91bGRTdGFydFZpc2libGUgJiYgQW5pbWF0aW9uQ2xhc3NOYW1lcy5mYWRlSW40MDAsXG4gICAgICAgICAgICAoaXNDZW50ZXIgfHwgaXNDb250YWluIHx8IGlzQ292ZXIgfHwgaXNDZW50ZXJDb250YWluIHx8IGlzQ2VudGVyQ292ZXIpICYmIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIGltYWdlOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmltYWdlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0xvYWRlZCAmJiBbXG4gICAgICAgICAgICAgICAgJ2lzLWxvYWRlZCcsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXNDZW50ZXIgJiYgW2NsYXNzTmFtZXMuaW1hZ2VDZW50ZXIsIEltYWdlRml0U3R5bGVzXSxcbiAgICAgICAgICAgIGlzQ29udGFpbiAmJiBbXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5pbWFnZUNvbnRhaW4sXG4gICAgICAgICAgICAgICAgc3VwcG9ydHNPYmplY3RGaXQgJiYge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0Rml0OiAnY29udGFpbicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAhc3VwcG9ydHNPYmplY3RGaXQgJiYgZmFsbGJhY2tPYmplY3RGaXRTdHlsZXMsXG4gICAgICAgICAgICAgICAgIXN1cHBvcnRzT2JqZWN0Rml0ICYmIEltYWdlRml0U3R5bGVzLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlzQ292ZXIgJiYgW1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMuaW1hZ2VDb3ZlcixcbiAgICAgICAgICAgICAgICBzdXBwb3J0c09iamVjdEZpdCAmJiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAhc3VwcG9ydHNPYmplY3RGaXQgJiYgZmFsbGJhY2tPYmplY3RGaXRTdHlsZXMsXG4gICAgICAgICAgICAgICAgIXN1cHBvcnRzT2JqZWN0Rml0ICYmIEltYWdlRml0U3R5bGVzLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGlzQ2VudGVyQ29udGFpbiAmJiBbXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lcy5pbWFnZUNlbnRlckNvbnRhaW4sXG4gICAgICAgICAgICAgICAgaXNMYW5kc2NhcGUgJiYge1xuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIWlzTGFuZHNjYXBlICYmIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBJbWFnZUZpdFN0eWxlcyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpc0NlbnRlckNvdmVyICYmIFtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzLmltYWdlQ2VudGVyQ292ZXIsXG4gICAgICAgICAgICAgICAgaXNMYW5kc2NhcGUgJiYge1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICFpc0xhbmRzY2FwZSAmJiB7XG4gICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBJbWFnZUZpdFN0eWxlcyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpc05vbmUgJiYgW1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMuaW1hZ2VOb25lLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBpc05vdEltYWdlRml0ICYmIFtcbiAgICAgICAgICAgICAgICAhIXdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICFoZWlnaHQgJiYge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICF3aWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAhIWhlaWdodCAmJiB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgISF3aWR0aCAmJlxuICAgICAgICAgICAgICAgICAgICAhIWhlaWdodCAmJiB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaXNMYW5kc2NhcGUgJiYgY2xhc3NOYW1lcy5pbWFnZUxhbmRzY2FwZSxcbiAgICAgICAgICAgICFpc0xhbmRzY2FwZSAmJiBjbGFzc05hbWVzLmltYWdlUG9ydHJhaXQsXG4gICAgICAgICAgICAhaXNMb2FkZWQgJiYgJ2lzLW5vdExvYWRlZCcsXG4gICAgICAgICAgICBzaG91bGRGYWRlSW4gJiYgJ2lzLWZhZGVJbicsXG4gICAgICAgICAgICBpc0Vycm9yICYmICdpcy1lcnJvcicsXG4gICAgICAgIF0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbWFnZS5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IEltYWdlQmFzZSB9IGZyb20gJy4vSW1hZ2UuYmFzZSc7XG5pbXBvcnQgeyBnZXRTdHlsZXMgfSBmcm9tICcuL0ltYWdlLnN0eWxlcyc7XG5leHBvcnQgdmFyIEltYWdlID0gc3R5bGVkKEltYWdlQmFzZSwgZ2V0U3R5bGVzLCB1bmRlZmluZWQsIHtcbiAgICBzY29wZTogJ0ltYWdlJyxcbn0sIHRydWUpO1xuSW1hZ2UuZGlzcGxheU5hbWUgPSAnSW1hZ2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW1hZ2UuanMubWFwIiwiaW1wb3J0IHsgbWVyZ2VTdHlsZVNldHMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbi8qKiBDbGFzcyBuYW1lcyB1c2VkIGluIHRoZW1lYWJsZSBhbmQgbm9uLXRoZW1lYWJsZSBJY29uIGNvbXBvbmVudHMgKi9cbmV4cG9ydCB2YXIgY2xhc3NOYW1lcyA9IG1lcmdlU3R5bGVTZXRzKHtcbiAgICByb290OiB7XG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIH0sXG4gICAgcGxhY2Vob2xkZXI6IFtcbiAgICAgICAgJ21zLUljb24tcGxhY2VIb2xkZXInLFxuICAgICAgICB7XG4gICAgICAgICAgICB3aWR0aDogJzFlbScsXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBpbWFnZTogW1xuICAgICAgICAnbXMtSWNvbi1pbWFnZUNvbnRhaW5lcicsXG4gICAgICAgIHtcbiAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgfSxcbiAgICBdLFxufSk7XG4vKiogQ2xhc3MgbmFtZSB1c2VkIG9ubHkgaW4gbm9uLXRoZW1lYWJsZSBJY29uIGNvbXBvbmVudHMgKi9cbmV4cG9ydCB2YXIgTVNfSUNPTiA9ICdtcy1JY29uJztcbmV4cG9ydCB2YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgaWNvbkNsYXNzTmFtZSA9IHByb3BzLmljb25DbGFzc05hbWUsIGlzUGxhY2Vob2xkZXIgPSBwcm9wcy5pc1BsYWNlaG9sZGVyLCBpc0ltYWdlID0gcHJvcHMuaXNJbWFnZSwgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIGlzUGxhY2Vob2xkZXIgJiYgY2xhc3NOYW1lcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgIGlzSW1hZ2UgJiYgY2xhc3NOYW1lcy5pbWFnZSxcbiAgICAgICAgICAgIGljb25DbGFzc05hbWUsXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBzdHlsZXMgJiYgc3R5bGVzLnJvb3QsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHN0eWxlcyAmJiBzdHlsZXMuaW1hZ2VDb250YWluZXIsXG4gICAgICAgIF0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1JY29uLnN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY2xhc3NOYW1lcywgTVNfSUNPTiB9IGZyb20gJy4vSWNvbi5zdHlsZXMnO1xuaW1wb3J0IHsgY3NzLCBnZXROYXRpdmVQcm9wcywgaHRtbEVsZW1lbnRQcm9wZXJ0aWVzLCBtZW1vaXplRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgZ2V0SWNvbiB9IGZyb20gJy4uLy4uL1N0eWxpbmcnO1xuZXhwb3J0IHZhciBnZXRJY29uQ29udGVudCA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAoaWNvbk5hbWUpIHtcbiAgICB2YXIgX2EgPSBnZXRJY29uKGljb25OYW1lKSB8fCB7XG4gICAgICAgIHN1YnNldDoge30sXG4gICAgICAgIGNvZGU6IHVuZGVmaW5lZCxcbiAgICB9LCBjb2RlID0gX2EuY29kZSwgc3Vic2V0ID0gX2Euc3Vic2V0O1xuICAgIGlmICghY29kZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY2hpbGRyZW46IGNvZGUsXG4gICAgICAgIGljb25DbGFzc05hbWU6IHN1YnNldC5jbGFzc05hbWUsXG4gICAgICAgIGZvbnRGYW1pbHk6IHN1YnNldC5mb250RmFjZSAmJiBzdWJzZXQuZm9udEZhY2UuZm9udEZhbWlseSxcbiAgICAgICAgbWVyZ2VJbWFnZVByb3BzOiBzdWJzZXQubWVyZ2VJbWFnZVByb3BzLFxuICAgIH07XG59LCB1bmRlZmluZWQsIHRydWUgLyppZ25vcmVOdWxsT3JVbmRlZmluZWRSZXN1bHQgKi8pO1xuLyoqXG4gKiBGYXN0IGljb24gY29tcG9uZW50IHdoaWNoIG9ubHkgc3VwcG9ydHMgZm9udCBnbHlwaHMgKG5vdCBpbWFnZXMpIGFuZCBjYW4ndCBiZSB0YXJnZXRlZCBieSBjdXN0b21pemF0aW9ucy5cbiAqIFRvIHN0eWxlIHRoZSBpY29uLCB1c2UgYGNsYXNzTmFtZWAgb3IgcmVmZXJlbmNlIGBtcy1JY29uYCBpbiBDU1MuXG4gKiB7QGRvY0NhdGVnb3J5IEljb259XG4gKi9cbmV4cG9ydCB2YXIgRm9udEljb24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaWNvbk5hbWUgPSBwcm9wcy5pY29uTmFtZSwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBfYSA9IHByb3BzLnN0eWxlLCBzdHlsZSA9IF9hID09PSB2b2lkIDAgPyB7fSA6IF9hO1xuICAgIHZhciBpY29uQ29udGVudCA9IGdldEljb25Db250ZW50KGljb25OYW1lKSB8fCB7fTtcbiAgICB2YXIgaWNvbkNsYXNzTmFtZSA9IGljb25Db250ZW50Lmljb25DbGFzc05hbWUsIGNoaWxkcmVuID0gaWNvbkNvbnRlbnQuY2hpbGRyZW4sIGZvbnRGYW1pbHkgPSBpY29uQ29udGVudC5mb250RmFtaWx5LCBtZXJnZUltYWdlUHJvcHMgPSBpY29uQ29udGVudC5tZXJnZUltYWdlUHJvcHM7XG4gICAgdmFyIG5hdGl2ZVByb3BzID0gZ2V0TmF0aXZlUHJvcHMocHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcyk7XG4gICAgdmFyIGFjY2Vzc2libGVOYW1lID0gcHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCBwcm9wcy50aXRsZTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBwcm9wc1snYXJpYS1sYWJlbCddIHx8IHByb3BzWydhcmlhLWxhYmVsbGVkYnknXSB8fCBwcm9wcy50aXRsZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHJvbGU6IG1lcmdlSW1hZ2VQcm9wcyA/IHVuZGVmaW5lZCA6ICdpbWcnLFxuICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICB2YXIgZmluYWxDaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIGlmIChtZXJnZUltYWdlUHJvcHMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGNoaWxkcmVuLnByb3BzID09PSAnb2JqZWN0JyAmJiBhY2Nlc3NpYmxlTmFtZSkge1xuICAgICAgICAgICAgZmluYWxDaGlsZHJlbiA9IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgeyBhbHQ6IGFjY2Vzc2libGVOYW1lIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImlcIiwgX19hc3NpZ24oeyBcImRhdGEtaWNvbi1uYW1lXCI6IGljb25OYW1lIH0sIGNvbnRhaW5lclByb3BzLCBuYXRpdmVQcm9wcywgKG1lcmdlSW1hZ2VQcm9wc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCc6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgICA6IHt9KSwgeyBjbGFzc05hbWU6IGNzcyhNU19JQ09OLCBjbGFzc05hbWVzLnJvb3QsIGljb25DbGFzc05hbWUsICFpY29uTmFtZSAmJiBjbGFzc05hbWVzLnBsYWNlaG9sZGVyLCBjbGFzc05hbWUpLCBcbiAgICAgICAgLy8gQXBwbHkgdGhlIGZvbnQgZmFtaWx5IHRoaXMgd2F5IHRvIGVuc3VyZSBpdCBkb2Vzbid0IGdldCBvdmVycmlkZGVuIGJ5IEZhYnJpYyBDb3JlIG1zLUljb24gc3R5bGVzXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvZmx1ZW50dWkvaXNzdWVzLzEwNDQ5XG4gICAgICAgIHN0eWxlOiBfX2Fzc2lnbih7IGZvbnRGYW1pbHk6IGZvbnRGYW1pbHkgfSwgc3R5bGUpIH0pLCBmaW5hbENoaWxkcmVuKSk7XG59O1xuLyoqXG4gKiBNZW1vaXplZCBoZWxwZXIgZm9yIHJlbmRlcmluZyBhIEZvbnRJY29uLlxuICogQHBhcmFtIGljb25OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gdXNlIGZyb20gdGhlIGljb24gZm9udC5cbiAqIEBwYXJhbSBjbGFzc05hbWUgLSBDbGFzcyBuYW1lIGZvciBzdHlsaW5nIHRoZSBpY29uLlxuICogQHBhcmFtIGFyaWFMYWJlbCAtIExhYmVsIGZvciB0aGUgaWNvbiBmb3IgdGhlIGJlbmVmaXQgb2Ygc2NyZWVuIHJlYWRlcnMuXG4gKiB7QGRvY0NhdGVnb3J5IEljb259XG4gKi9cbmV4cG9ydCB2YXIgZ2V0Rm9udEljb24gPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKGljb25OYW1lLCBjbGFzc05hbWUsIGFyaWFMYWJlbCkge1xuICAgIHJldHVybiBGb250SWNvbih7IGljb25OYW1lOiBpY29uTmFtZSwgY2xhc3NOYW1lOiBjbGFzc05hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsIH0pO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb250SWNvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJY29uVHlwZSB9IGZyb20gJy4vSWNvbi50eXBlcyc7XG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gJy4uL0ltYWdlL0ltYWdlJztcbmltcG9ydCB7IEltYWdlTG9hZFN0YXRlIH0gZnJvbSAnLi4vSW1hZ2UvSW1hZ2UudHlwZXMnO1xuaW1wb3J0IHsgZ2V0TmF0aXZlUHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcywgY2xhc3NOYW1lc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IGdldEljb25Db250ZW50IH0gZnJvbSAnLi9Gb250SWNvbic7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbih7XG4gICAgLy8gSWNvbiBpcyB1c2VkIGEgbG90IGJ5IG90aGVyIGNvbXBvbmVudHMuXG4gICAgLy8gSXQncyBsaWtlbHkgdG8gc2VlIGV4cGVjdGVkIGNhc2VzIHdoaWNoIHBhc3MgZGlmZmVyZW50IGNsYXNzTmFtZSB0byB0aGUgSWNvbi5cbiAgICAvLyBUaGVyZWZvcmUgc2V0dGluZyBhIGxhcmdlciBjYWNoZSBzaXplLlxuICAgIGNhY2hlU2l6ZTogMTAwLFxufSk7XG52YXIgSWNvbkJhc2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEljb25CYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEljb25CYXNlKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fb25JbWFnZUxvYWRpbmdTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICAgICAgaWYgKF90aGlzLnByb3BzLmltYWdlUHJvcHMgJiYgX3RoaXMucHJvcHMuaW1hZ2VQcm9wcy5vbkxvYWRpbmdTdGF0ZUNoYW5nZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLmltYWdlUHJvcHMub25Mb2FkaW5nU3RhdGVDaGFuZ2Uoc3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBJbWFnZUxvYWRTdGF0ZS5lcnJvcikge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgaW1hZ2VMb2FkRXJyb3I6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaW1hZ2VMb2FkRXJyb3I6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEljb25CYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgc3R5bGVzID0gX2Euc3R5bGVzLCBpY29uTmFtZSA9IF9hLmljb25OYW1lLCBpbWFnZUVycm9yQXMgPSBfYS5pbWFnZUVycm9yQXMsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgICAgIHZhciBpc1BsYWNlaG9sZGVyID0gdHlwZW9mIGljb25OYW1lID09PSAnc3RyaW5nJyAmJiBpY29uTmFtZS5sZW5ndGggPT09IDA7XG4gICAgICAgIHZhciBpc0ltYWdlID0gXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAhIXRoaXMucHJvcHMuaW1hZ2VQcm9wcyB8fCB0aGlzLnByb3BzLmljb25UeXBlID09PSBJY29uVHlwZS5pbWFnZSB8fCB0aGlzLnByb3BzLmljb25UeXBlID09PSBJY29uVHlwZS5JbWFnZTtcbiAgICAgICAgdmFyIGljb25Db250ZW50ID0gZ2V0SWNvbkNvbnRlbnQoaWNvbk5hbWUpIHx8IHt9O1xuICAgICAgICB2YXIgaWNvbkNsYXNzTmFtZSA9IGljb25Db250ZW50Lmljb25DbGFzc05hbWUsIGljb25Db250ZW50Q2hpbGRyZW4gPSBpY29uQ29udGVudC5jaGlsZHJlbiwgbWVyZ2VJbWFnZVByb3BzID0gaWNvbkNvbnRlbnQubWVyZ2VJbWFnZVByb3BzO1xuICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7XG4gICAgICAgICAgICB0aGVtZTogdGhlbWUsXG4gICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGljb25DbGFzc05hbWU6IGljb25DbGFzc05hbWUsXG4gICAgICAgICAgICBpc0ltYWdlOiBpc0ltYWdlLFxuICAgICAgICAgICAgaXNQbGFjZWhvbGRlcjogaXNQbGFjZWhvbGRlcixcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBSb290VHlwZSA9IGlzSW1hZ2UgPyAnc3BhbicgOiAnaSc7XG4gICAgICAgIHZhciBuYXRpdmVQcm9wcyA9IGdldE5hdGl2ZVByb3BzKHRoaXMucHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICAgICAgICAgJ2FyaWEtbGFiZWwnLFxuICAgICAgICBdKTtcbiAgICAgICAgdmFyIGltYWdlTG9hZEVycm9yID0gdGhpcy5zdGF0ZS5pbWFnZUxvYWRFcnJvcjtcbiAgICAgICAgdmFyIGltYWdlUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcy5pbWFnZVByb3BzKSwgeyBvbkxvYWRpbmdTdGF0ZUNoYW5nZTogdGhpcy5fb25JbWFnZUxvYWRpbmdTdGF0ZUNoYW5nZSB9KTtcbiAgICAgICAgdmFyIEltYWdlVHlwZSA9IChpbWFnZUxvYWRFcnJvciAmJiBpbWFnZUVycm9yQXMpIHx8IEltYWdlO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdmFyIGFyaWFMYWJlbCA9IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWwnXSB8fCB0aGlzLnByb3BzLmFyaWFMYWJlbDtcbiAgICAgICAgdmFyIGFjY2Vzc2libGVOYW1lID0gaW1hZ2VQcm9wcy5hbHQgfHwgYXJpYUxhYmVsIHx8IHRoaXMucHJvcHMudGl0bGU7XG4gICAgICAgIHZhciBoYXNOYW1lID0gISEoYWNjZXNzaWJsZU5hbWUgfHxcbiAgICAgICAgICAgIHRoaXMucHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddIHx8XG4gICAgICAgICAgICBpbWFnZVByb3BzWydhcmlhLWxhYmVsJ10gfHxcbiAgICAgICAgICAgIGltYWdlUHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddKTtcbiAgICAgICAgdmFyIGNvbnRhaW5lclByb3BzID0gaGFzTmFtZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgcm9sZTogaXNJbWFnZSB8fCBtZXJnZUltYWdlUHJvcHMgPyB1bmRlZmluZWQgOiAnaW1nJyxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGlzSW1hZ2UgfHwgbWVyZ2VJbWFnZVByb3BzID8gdW5kZWZpbmVkIDogYWNjZXNzaWJsZU5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAnYXJpYS1oaWRkZW4nOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgdmFyIGZpbmFsSWNvbkNvbnRlbnRDaGlsZHJlbiA9IGljb25Db250ZW50Q2hpbGRyZW47XG4gICAgICAgIGlmIChtZXJnZUltYWdlUHJvcHMgJiYgaWNvbkNvbnRlbnRDaGlsZHJlbiAmJiB0eXBlb2YgaWNvbkNvbnRlbnRDaGlsZHJlbiA9PT0gJ29iamVjdCcgJiYgYWNjZXNzaWJsZU5hbWUpIHtcbiAgICAgICAgICAgIGZpbmFsSWNvbkNvbnRlbnRDaGlsZHJlbiA9IFJlYWN0LmNsb25lRWxlbWVudChpY29uQ29udGVudENoaWxkcmVuLCB7XG4gICAgICAgICAgICAgICAgYWx0OiBhY2Nlc3NpYmxlTmFtZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSb290VHlwZSwgX19hc3NpZ24oeyBcImRhdGEtaWNvbi1uYW1lXCI6IGljb25OYW1lIH0sIGNvbnRhaW5lclByb3BzLCBuYXRpdmVQcm9wcywgKG1lcmdlSW1hZ2VQcm9wc1xuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290IH0pLCBpc0ltYWdlID8gUmVhY3QuY3JlYXRlRWxlbWVudChJbWFnZVR5cGUsIF9fYXNzaWduKHt9LCBpbWFnZVByb3BzKSkgOiBjaGlsZHJlbiB8fCBmaW5hbEljb25Db250ZW50Q2hpbGRyZW4pKTtcbiAgICB9O1xuICAgIHJldHVybiBJY29uQmFzZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgeyBJY29uQmFzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbi5iYXNlLmpzLm1hcCIsImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBJY29uQmFzZSB9IGZyb20gJy4vSWNvbi5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vSWNvbi5zdHlsZXMnO1xuLyoqXG4gKiBMZWdhY3kgSWNvbiBjb21wb25lbnQgd2hpY2ggY2FuIGJlIHRhcmdldGVkIGJ5IGN1c3RvbWl6YXRpb24uIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIGBGb250SWNvbmBcbiAqIG9yIGBJbWFnZUljb25gIGluc3RlYWQsIGVzcGVjaWFsbHkgaW4gc2NlbmFyaW9zIHdoZXJlIHJlbmRlcmluZyBwZXJmb3JtYW5jZSBpcyBpbXBvcnRhbnQuXG4gKiB7QGRvY0NhdGVnb3J5IEljb259XG4gKi9cbmV4cG9ydCB2YXIgSWNvbiA9IHN0eWxlZChJY29uQmFzZSwgZ2V0U3R5bGVzLCB1bmRlZmluZWQsIHtcbiAgICBzY29wZTogJ0ljb24nLFxufSwgdHJ1ZSk7XG5JY29uLmRpc3BsYXlOYW1lID0gJ0ljb24nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSW1hZ2UgfSBmcm9tICcuLi9JbWFnZS9JbWFnZSc7XG5pbXBvcnQgeyBjc3MsIGdldE5hdGl2ZVByb3BzLCBodG1sRWxlbWVudFByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgY2xhc3NOYW1lcywgTVNfSUNPTiB9IGZyb20gJy4vSWNvbi5zdHlsZXMnO1xuLyoqXG4gKiBGYXN0IGljb24gY29tcG9uZW50IHdoaWNoIG9ubHkgc3VwcG9ydHMgaW1hZ2VzIChub3QgZm9udCBnbHlwaHMpIGFuZCBjYW4ndCBiZSB0YXJnZXRlZCBieSBjdXN0b21pemF0aW9ucy5cbiAqIFRvIHN0eWxlIHRoZSBpY29uLCB1c2UgYGNsYXNzTmFtZWAgb3IgcmVmZXJlbmNlIGBtcy1JY29uYCBpbiBDU1MuXG4gKiB7QGRvY0NhdGVnb3J5IEljb259XG4gKi9cbmV4cG9ydCB2YXIgSW1hZ2VJY29uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgaW1hZ2VQcm9wcyA9IHByb3BzLmltYWdlUHJvcHM7XG4gICAgdmFyIG5hdGl2ZVByb3BzID0gZ2V0TmF0aXZlUHJvcHMocHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcywgW1xuICAgICAgICAnYXJpYS1sYWJlbCcsXG4gICAgICAgICdhcmlhLWxhYmVsbGVkYnknLFxuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieScsXG4gICAgXSk7XG4gICAgdmFyIGFsdFRleHQgPSBpbWFnZVByb3BzLmFsdCB8fCBwcm9wc1snYXJpYS1sYWJlbCddO1xuICAgIHZhciBoYXNOYW1lID0gYWx0VGV4dCB8fFxuICAgICAgICBwcm9wc1snYXJpYS1sYWJlbGxlZGJ5J10gfHxcbiAgICAgICAgcHJvcHMudGl0bGUgfHxcbiAgICAgICAgaW1hZ2VQcm9wc1snYXJpYS1sYWJlbCddIHx8XG4gICAgICAgIGltYWdlUHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddIHx8XG4gICAgICAgIGltYWdlUHJvcHMudGl0bGU7XG4gICAgLy8gbW92ZSBuYW1pbmcgb3IgZGVzY3JpYmluZyBhdHRyaWJ1dGVzIGZyb20gdGhlIGNvbnRhaW5lciAod2hlcmUgdGhleSBhcmUgaW52YWxpZCkgdG8gdGhlIGltYWdlXG4gICAgdmFyIGltYWdlTmFtZVByb3BzID0ge1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogcHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddLFxuICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IHByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10sXG4gICAgICAgIHRpdGxlOiBwcm9wcy50aXRsZSxcbiAgICB9O1xuICAgIHZhciBjb250YWluZXJQcm9wcyA9IGhhc05hbWVcbiAgICAgICAgPyB7fVxuICAgICAgICA6IHtcbiAgICAgICAgICAgICdhcmlhLWhpZGRlbic6IHRydWUsXG4gICAgICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcywgbmF0aXZlUHJvcHMsIHsgY2xhc3NOYW1lOiBjc3MoTVNfSUNPTiwgY2xhc3NOYW1lcy5yb290LCBjbGFzc05hbWVzLmltYWdlLCBjbGFzc05hbWUpIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlLCBfX2Fzc2lnbih7fSwgaW1hZ2VOYW1lUHJvcHMsIGltYWdlUHJvcHMsIHsgYWx0OiBoYXNOYW1lID8gYWx0VGV4dCA6ICcnIH0pKSkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUltYWdlSWNvbi5qcy5tYXAiLCIvKipcbiAqIHtAZG9jQ2F0ZWdvcnkgRm9jdXNab25lfVxuICovXG5leHBvcnQgdmFyIEZvY3VzWm9uZVRhYmJhYmxlRWxlbWVudHMgPSB7XG4gICAgLyoqIFRhYmJpbmcgaXMgbm90IGFsbG93ZWQgKi9cbiAgICBub25lOiAwLFxuICAgIC8qKiBBbGwgdGFiYmluZyBhY3Rpb24gaXMgYWxsb3dlZCAqL1xuICAgIGFsbDogMSxcbiAgICAvKiogVGFiYmluZyBpcyBhbGxvd2VkIG9ubHkgb24gaW5wdXQgZWxlbWVudHMgKi9cbiAgICBpbnB1dE9ubHk6IDIsXG59O1xuLyoqXG4gKiB7QGRvY0NhdGVnb3J5IEZvY3VzWm9uZX1cbiAqL1xuZXhwb3J0IHZhciBGb2N1c1pvbmVEaXJlY3Rpb247XG4oZnVuY3Rpb24gKEZvY3VzWm9uZURpcmVjdGlvbikge1xuICAgIC8qKiBPbmx5IHJlYWN0IHRvIHVwL2Rvd24gYXJyb3dzLiAqL1xuICAgIEZvY3VzWm9uZURpcmVjdGlvbltGb2N1c1pvbmVEaXJlY3Rpb25bXCJ2ZXJ0aWNhbFwiXSA9IDBdID0gXCJ2ZXJ0aWNhbFwiO1xuICAgIC8qKiBPbmx5IHJlYWN0IHRvIGxlZnQvcmlnaHQgYXJyb3dzLiAqL1xuICAgIEZvY3VzWm9uZURpcmVjdGlvbltGb2N1c1pvbmVEaXJlY3Rpb25bXCJob3Jpem9udGFsXCJdID0gMV0gPSBcImhvcml6b250YWxcIjtcbiAgICAvKiogUmVhY3QgdG8gYWxsIGFycm93cy4gKi9cbiAgICBGb2N1c1pvbmVEaXJlY3Rpb25bRm9jdXNab25lRGlyZWN0aW9uW1wiYmlkaXJlY3Rpb25hbFwiXSA9IDJdID0gXCJiaWRpcmVjdGlvbmFsXCI7XG4gICAgLyoqXG4gICAgICogUmVhY3QgdG8gYWxsIGFycm93cy4gTmF2aWdhdGUgbmV4dCBpdGVtIGluIERPTSBvbiByaWdodC9kb3duIGFycm93IGtleXMgYW5kIHByZXZpb3VzIC0gbGVmdC91cCBhcnJvdyBrZXlzLlxuICAgICAqIFJpZ2h0IGFuZCBMZWZ0IGFycm93IGtleXMgYXJlIHN3YXBwZWQgaW4gUlRMIG1vZGUuXG4gICAgICovXG4gICAgRm9jdXNab25lRGlyZWN0aW9uW0ZvY3VzWm9uZURpcmVjdGlvbltcImRvbU9yZGVyXCJdID0gM10gPSBcImRvbU9yZGVyXCI7XG59KShGb2N1c1pvbmVEaXJlY3Rpb24gfHwgKEZvY3VzWm9uZURpcmVjdGlvbiA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Gb2N1c1pvbmUudHlwZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRm9jdXNab25lRGlyZWN0aW9uLCBGb2N1c1pvbmVUYWJiYWJsZUVsZW1lbnRzIH0gZnJvbSAnLi9Gb2N1c1pvbmUudHlwZXMnO1xuaW1wb3J0IHsgS2V5Q29kZXMsIGNzcywgZWxlbWVudENvbnRhaW5zLCBnZXREb2N1bWVudCwgZ2V0RWxlbWVudEluZGV4UGF0aCwgZ2V0Rm9jdXNhYmxlQnlJbmRleFBhdGgsIGdldElkLCBnZXROYXRpdmVQcm9wcywgZ2V0TmV4dEVsZW1lbnQsIGdldFBhcmVudCwgZ2V0UHJldmlvdXNFbGVtZW50LCBnZXRSVEwsIGh0bWxFbGVtZW50UHJvcGVydGllcywgaW5pdGlhbGl6ZUNvbXBvbmVudFJlZiwgaXNFbGVtZW50Rm9jdXNTdWJab25lLCBpc0VsZW1lbnRGb2N1c1pvbmUsIGlzRWxlbWVudFRhYmJhYmxlLCBzaG91bGRXcmFwRm9jdXMsIHdhcm5EZXByZWNhdGlvbnMsIHBvcnRhbENvbnRhaW5zRWxlbWVudCwgZmluZFNjcm9sbGFibGVQYXJlbnQsIGNyZWF0ZU1lcmdlZFJlZiwgaXNFbGVtZW50VmlzaWJsZUFuZE5vdEhpZGRlbiwgfSBmcm9tICdAZmx1ZW50dWkvdXRpbGl0aWVzJztcbmltcG9ydCB7IG1lcmdlU3R5bGVzIH0gZnJvbSAnQGZsdWVudHVpL21lcmdlLXN0eWxlcyc7XG5pbXBvcnQgeyBnZXRUaGVtZSB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xudmFyIElTX0ZPQ1VTQUJMRV9BVFRSSUJVVEUgPSAnZGF0YS1pcy1mb2N1c2FibGUnO1xudmFyIElTX0VOVEVSX0RJU0FCTEVEX0FUVFJJQlVURSA9ICdkYXRhLWRpc2FibGUtY2xpY2stb24tZW50ZXInO1xudmFyIEZPQ1VTWk9ORV9JRF9BVFRSSUJVVEUgPSAnZGF0YS1mb2N1c3pvbmUtaWQnO1xudmFyIFRBQklOREVYID0gJ3RhYmluZGV4JztcbnZhciBOT19WRVJUSUNBTF9XUkFQID0gJ2RhdGEtbm8tdmVydGljYWwtd3JhcCc7XG52YXIgTk9fSE9SSVpPTlRBTF9XUkFQID0gJ2RhdGEtbm8taG9yaXpvbnRhbC13cmFwJztcbnZhciBMQVJHRV9ESVNUQU5DRV9GUk9NX0NFTlRFUiA9IDk5OTk5OTk5OTtcbnZhciBMQVJHRV9ORUdBVElWRV9ESVNUQU5DRV9GUk9NX0NFTlRFUiA9IC05OTk5OTk5OTk7XG52YXIgZm9jdXNab25lU3R5bGVzO1xudmFyIGZvY3VzWm9uZUNsYXNzID0gJ21zLUZvY3VzWm9uZSc7XG4vKipcbiAqIFJhaXNlcyBhIGNsaWNrIG9uIGEgdGFyZ2V0IGVsZW1lbnQgYmFzZWQgb24gYSBrZXlib2FyZCBldmVudC5cbiAqL1xuZnVuY3Rpb24gcmFpc2VDbGlja0Zyb21LZXlib2FyZEV2ZW50KHRhcmdldCwgZXYpIHtcbiAgICB2YXIgZXZlbnQ7XG4gICAgaWYgKHR5cGVvZiBNb3VzZUV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJywge1xuICAgICAgICAgICAgY3RybEtleTogZXYgPT09IG51bGwgfHwgZXYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV2LmN0cmxLZXksXG4gICAgICAgICAgICBtZXRhS2V5OiBldiA9PT0gbnVsbCB8fCBldiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXYubWV0YUtleSxcbiAgICAgICAgICAgIHNoaWZ0S2V5OiBldiA9PT0gbnVsbCB8fCBldiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXYuc2hpZnRLZXksXG4gICAgICAgICAgICBhbHRLZXk6IGV2ID09PSBudWxsIHx8IGV2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBldi5hbHRLZXksXG4gICAgICAgICAgICBidWJibGVzOiBldiA9PT0gbnVsbCB8fCBldiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXYuYnViYmxlcyxcbiAgICAgICAgICAgIGNhbmNlbGFibGU6IGV2ID09PSBudWxsIHx8IGV2ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBldi5jYW5jZWxhYmxlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBldmVudC5pbml0TW91c2VFdmVudCgnY2xpY2snLCBldiA/IGV2LmJ1YmJsZXMgOiBmYWxzZSwgZXYgPyBldi5jYW5jZWxhYmxlIDogZmFsc2UsIHdpbmRvdywgLy8gbm90IHVzaW5nIGdldFdpbmRvdygpIHNpbmNlIHRoaXMgY2FuIG9ubHkgYmUgcnVuIGNsaWVudCBzaWRlXG4gICAgICAgIDAsIC8vIGRldGFpbFxuICAgICAgICAwLCAvLyBzY3JlZW4geFxuICAgICAgICAwLCAvLyBzY3JlZW4geVxuICAgICAgICAwLCAvLyBjbGllbnQgeFxuICAgICAgICAwLCAvLyBjbGllbnQgeVxuICAgICAgICBldiA/IGV2LmN0cmxLZXkgOiBmYWxzZSwgZXYgPyBldi5hbHRLZXkgOiBmYWxzZSwgZXYgPyBldi5zaGlmdEtleSA6IGZhbHNlLCBldiA/IGV2Lm1ldGFLZXkgOiBmYWxzZSwgMCwgLy8gYnV0dG9uXG4gICAgICAgIG51bGwpO1xuICAgIH1cbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG4vLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIHJldHVybiBhIGNsYXNzIGZvciB3aGVuIHRoZSByb290IGlzIGZvY3VzZWRcbmZ1bmN0aW9uIGdldFJvb3RDbGFzcygpIHtcbiAgICBpZiAoIWZvY3VzWm9uZVN0eWxlcykge1xuICAgICAgICBmb2N1c1pvbmVTdHlsZXMgPSBtZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnOmZvY3VzJzoge1xuICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sIGZvY3VzWm9uZUNsYXNzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzWm9uZVN0eWxlcztcbn1cbnZhciBfYWxsSW5zdGFuY2VzID0ge307XG52YXIgX291dGVyWm9uZXMgPSBuZXcgU2V0KCk7XG52YXIgQUxMT1dFRF9JTlBVVF9UWVBFUyA9IFsndGV4dCcsICdudW1iZXInLCAncGFzc3dvcmQnLCAnZW1haWwnLCAndGVsJywgJ3VybCcsICdzZWFyY2gnLCAndGV4dGFyZWEnXTtcbnZhciBBTExPV19WSVJUVUFMX0VMRU1FTlRTID0gZmFsc2U7XG52YXIgRm9jdXNab25lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhGb2N1c1pvbmUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRm9jdXNab25lKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX3Jvb3QgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgX3RoaXMuX21lcmdlZFJlZiA9IGNyZWF0ZU1lcmdlZFJlZigpO1xuICAgICAgICBfdGhpcy5fb25Gb2N1cyA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKF90aGlzLl9wb3J0YWxDb250YWluc0VsZW1lbnQoZXYudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBldmVudCB0YXJnZXQgaXMgaW5zaWRlIGEgcG9ydGFsIGRvIG5vdCBwcm9jZXNzIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wcm9wcywgb25BY3RpdmVFbGVtZW50Q2hhbmdlZCA9IF9hLm9uQWN0aXZlRWxlbWVudENoYW5nZWQsIFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBkb05vdEFsbG93Rm9jdXNFdmVudFRvUHJvcGFnYXRlID0gX2EuZG9Ob3RBbGxvd0ZvY3VzRXZlbnRUb1Byb3BhZ2F0ZSwgc3RvcEZvY3VzUHJvcGFnYXRpb24gPSBfYS5zdG9wRm9jdXNQcm9wYWdhdGlvbiwgXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIG9uRm9jdXNOb3RpZmljYXRpb24gPSBfYS5vbkZvY3VzTm90aWZpY2F0aW9uLCBvbkZvY3VzID0gX2Eub25Gb2N1cywgc2hvdWxkRm9jdXNJbm5lckVsZW1lbnRXaGVuUmVjZWl2ZWRGb2N1cyA9IF9hLnNob3VsZEZvY3VzSW5uZXJFbGVtZW50V2hlblJlY2VpdmVkRm9jdXMsIGRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgPSBfYS5kZWZhdWx0VGFiYmFibGVFbGVtZW50O1xuICAgICAgICAgICAgdmFyIGlzSW1tZWRpYXRlRGVzY2VuZGFudCA9IF90aGlzLl9pc0ltbWVkaWF0ZURlc2NlbmRhbnRPZlpvbmUoZXYudGFyZ2V0KTtcbiAgICAgICAgICAgIHZhciBuZXdBY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGlzSW1tZWRpYXRlRGVzY2VuZGFudCkge1xuICAgICAgICAgICAgICAgIG5ld0FjdGl2ZUVsZW1lbnQgPSBldi50YXJnZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IGV2LnRhcmdldDtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50ICE9PSBfdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0VsZW1lbnRUYWJiYWJsZShwYXJlbnRFbGVtZW50KSAmJiBfdGhpcy5faXNJbW1lZGlhdGVEZXNjZW5kYW50T2Zab25lKHBhcmVudEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBY3RpdmVFbGVtZW50ID0gcGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBnZXRQYXJlbnQocGFyZW50RWxlbWVudCwgQUxMT1dfVklSVFVBTF9FTEVNRU5UUyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgYW4gaW5uZXIgZm9jdXNhYmxlIGVsZW1lbnQgc2hvdWxkIGJlIGZvY3VzZWQgd2hlbiBGb2N1c1pvbmUgY29udGFpbmVyIHJlY2VpdmVzIGZvY3VzXG4gICAgICAgICAgICBpZiAoc2hvdWxkRm9jdXNJbm5lckVsZW1lbnRXaGVuUmVjZWl2ZWRGb2N1cyAmJiBldi50YXJnZXQgPT09IF90aGlzLl9yb290LmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF5YmVFbGVtZW50VG9Gb2N1cyA9IGRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3Jvb3QuY3VycmVudCAmJlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VGFiYmFibGVFbGVtZW50KF90aGlzLl9yb290LmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIC8vIHRyeSB0byBmb2N1cyBkZWZhdWx0VGFiYmFibGUgZWxlbWVudFxuICAgICAgICAgICAgICAgIGlmIChtYXliZUVsZW1lbnRUb0ZvY3VzICYmIGlzRWxlbWVudFRhYmJhYmxlKG1heWJlRWxlbWVudFRvRm9jdXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0FjdGl2ZUVsZW1lbnQgPSBtYXliZUVsZW1lbnRUb0ZvY3VzO1xuICAgICAgICAgICAgICAgICAgICBtYXliZUVsZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBmb2N1cyBvbiBmaXJzdCBmb2N1c2FibGUgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5mb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl9hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdG8gbnVsbCBhcyBuZXcgYWN0aXZlIGVsZW1lbnQgd2FzIGhhbmRsZWQgaW4gbWV0aG9kIGFib3ZlXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpbml0aWFsRWxlbWVudEZvY3VzZWQgPSAhX3RoaXMuX2FjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBJZiB0aGUgbmV3IGFjdGl2ZSBlbGVtZW50IGlzIGEgY2hpbGQgb2YgdGhpcyB6b25lIGFuZCByZWNlaXZlZCBmb2N1cyxcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBhbGlnbm1lbnQgYW4gaW1tZWRpYXRlIGRlc2NlbmRhbnRcbiAgICAgICAgICAgIGlmIChuZXdBY3RpdmVFbGVtZW50ICYmIG5ld0FjdGl2ZUVsZW1lbnQgIT09IF90aGlzLl9hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzSW1tZWRpYXRlRGVzY2VuZGFudCB8fCBpbml0aWFsRWxlbWVudEZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3NldEZvY3VzQWxpZ25tZW50KG5ld0FjdGl2ZUVsZW1lbnQsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5fYWN0aXZlRWxlbWVudCA9IG5ld0FjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxFbGVtZW50Rm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fdXBkYXRlVGFiSW5kZXhlcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbkFjdGl2ZUVsZW1lbnRDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgb25BY3RpdmVFbGVtZW50Q2hhbmdlZChfdGhpcy5fYWN0aXZlRWxlbWVudCwgZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0b3BGb2N1c1Byb3BhZ2F0aW9uIHx8IGRvTm90QWxsb3dGb2N1c0V2ZW50VG9Qcm9wYWdhdGUpIHtcbiAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICAgICAgICAgICAgb25Gb2N1cyhldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvbkZvY3VzTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgb25Gb2N1c05vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25CbHVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX3NldFBhcmtlZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uTW91c2VEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuX3BvcnRhbENvbnRhaW5zRWxlbWVudChldi50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IHRhcmdldCBpcyBpbnNpZGUgYSBwb3J0YWwgZG8gbm90IHByb2Nlc3MgdGhlIGV2ZW50LlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkaXNhYmxlZCA9IF90aGlzLnByb3BzLmRpc2FibGVkO1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGV2LnRhcmdldDtcbiAgICAgICAgICAgIHZhciBwYXRoID0gW107XG4gICAgICAgICAgICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldCAhPT0gX3RoaXMuX3Jvb3QuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHBhdGgucHVzaCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IGdldFBhcmVudCh0YXJnZXQsIEFMTE9XX1ZJUlRVQUxfRUxFTUVOVFMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gcGF0aC5wb3AoKTtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmIGlzRWxlbWVudFRhYmJhYmxlKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3NldEFjdGl2ZUVsZW1lbnQodGFyZ2V0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzRWxlbWVudEZvY3VzWm9uZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN0b3AgaGVyZSBzaW5jZSB0aGUgZm9jdXMgem9uZSB3aWxsIHRha2UgY2FyZSBvZiBpdHMgb3duIGNoaWxkcmVuLlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIYW5kbGUgdGhlIGtleXN0cm9rZXMuXG4gICAgICAgICAqL1xuICAgICAgICBfdGhpcy5fb25LZXlEb3duID0gZnVuY3Rpb24gKGV2LCB0aGVtZSkge1xuICAgICAgICAgICAgaWYgKF90aGlzLl9wb3J0YWxDb250YWluc0VsZW1lbnQoZXYudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBldmVudCB0YXJnZXQgaXMgaW5zaWRlIGEgcG9ydGFsIGRvIG5vdCBwcm9jZXNzIHRoZSBldmVudC5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBkaXJlY3Rpb24gPSBfYS5kaXJlY3Rpb24sIGRpc2FibGVkID0gX2EuZGlzYWJsZWQsIGlzSW5uZXJab25lS2V5c3Ryb2tlID0gX2EuaXNJbm5lclpvbmVLZXlzdHJva2UsIHBhZ2luZ1N1cHBvcnREaXNhYmxlZCA9IF9hLnBhZ2luZ1N1cHBvcnREaXNhYmxlZCwgc2hvdWxkRW50ZXJJbm5lclpvbmUgPSBfYS5zaG91bGRFbnRlcklubmVyWm9uZTtcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfdGhpcy5wcm9wcy5vbktleURvd24pIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbktleURvd24oZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIGRlZmF1bHQgaGFzIGJlZW4gcHJldmVudGVkLCBkbyBub3QgcHJvY2VzcyBrZXlib2FyZCBldmVudHMuXG4gICAgICAgICAgICBpZiAoZXYuaXNEZWZhdWx0UHJldmVudGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX3RoaXMuX2dldERvY3VtZW50KCkuYWN0aXZlRWxlbWVudCA9PT0gX3RoaXMuX3Jvb3QuY3VycmVudCAmJiBfdGhpcy5faXNJbm5lclpvbmUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaGFzIGZvY3VzLCBpdCBpcyBiZWluZyBjb250cm9sbGVkIGJ5IGEgcGFyZW50LlxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUga2V5c3Ryb2tlLlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoKHNob3VsZEVudGVySW5uZXJab25lICYmIHNob3VsZEVudGVySW5uZXJab25lKGV2KSkgfHwgKGlzSW5uZXJab25lS2V5c3Ryb2tlICYmIGlzSW5uZXJab25lS2V5c3Ryb2tlKGV2KSkpICYmXG4gICAgICAgICAgICAgICAgX3RoaXMuX2lzSW1tZWRpYXRlRGVzY2VuZGFudE9mWm9uZShldi50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgLy8gVHJ5IHRvIGZvY3VzXG4gICAgICAgICAgICAgICAgdmFyIGlubmVyWm9uZSA9IF90aGlzLl9nZXRGaXJzdElubmVyWm9uZSgpO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lclpvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbm5lclpvbmUuZm9jdXModHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0VsZW1lbnRGb2N1c1N1YlpvbmUoZXYudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmZvY3VzRWxlbWVudChnZXROZXh0RWxlbWVudChldi50YXJnZXQsIGV2LnRhcmdldC5maXJzdENoaWxkLCB0cnVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGV2LmFsdEtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAZmx1ZW50dWkvZGVwcmVjYXRlZC1rZXlib2FyZC1ldmVudC1wcm9wcywgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2LndoaWNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuc3BhY2U6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX3Nob3VsZFJhaXNlQ2xpY2tzT25TcGFjZSAmJiBfdGhpcy5fdHJ5SW52b2tlQ2xpY2tGb3JGb2N1c2FibGUoZXYudGFyZ2V0LCBldikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlDb2Rlcy5sZWZ0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gRm9jdXNab25lRGlyZWN0aW9uLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ByZXZlbnREZWZhdWx0V2hlbkhhbmRsZWQoZXYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fbW92ZUZvY3VzTGVmdCh0aGVtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLnJpZ2h0OlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gRm9jdXNab25lRGlyZWN0aW9uLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ByZXZlbnREZWZhdWx0V2hlbkhhbmRsZWQoZXYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fbW92ZUZvY3VzUmlnaHQodGhlbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlDb2Rlcy51cDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gIT09IEZvY3VzWm9uZURpcmVjdGlvbi5ob3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ByZXZlbnREZWZhdWx0V2hlbkhhbmRsZWQoZXYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fbW92ZUZvY3VzVXAoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuZG93bjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gIT09IEZvY3VzWm9uZURpcmVjdGlvbi5ob3Jpem9udGFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ByZXZlbnREZWZhdWx0V2hlbkhhbmRsZWQoZXYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fbW92ZUZvY3VzRG93bigpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlDb2Rlcy5wYWdlRG93bjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFnaW5nU3VwcG9ydERpc2FibGVkICYmIF90aGlzLl9tb3ZlRm9jdXNQYWdpbmcodHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlDb2Rlcy5wYWdlVXA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhZ2luZ1N1cHBvcnREaXNhYmxlZCAmJiBfdGhpcy5fbW92ZUZvY3VzUGFnaW5nKGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLnRhYjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMuYWxsb3dUYWJLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5oYW5kbGVUYWJLZXkgPT09IEZvY3VzWm9uZVRhYmJhYmxlRWxlbWVudHMuYWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF90aGlzLnByb3BzLmhhbmRsZVRhYktleSA9PT0gRm9jdXNab25lVGFiYmFibGVFbGVtZW50cy5pbnB1dE9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2lzRWxlbWVudElucHV0KGV2LnRhcmdldCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZvY3VzQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9wcm9jZXNzaW5nVGFiS2V5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSBGb2N1c1pvbmVEaXJlY3Rpb24udmVydGljYWwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIV90aGlzLl9zaG91bGRXcmFwRm9jdXMoX3RoaXMuX2FjdGl2ZUVsZW1lbnQsIE5PX0hPUklaT05UQUxfV1JBUCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID0gZXYuc2hpZnRLZXkgPyBfdGhpcy5fbW92ZUZvY3VzVXAoKSA6IF90aGlzLl9tb3ZlRm9jdXNEb3duKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGFiV2l0aERpcmVjdGlvbiA9IGdldFJUTCh0aGVtZSkgPyAhZXYuc2hpZnRLZXkgOiBldi5zaGlmdEtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNDaGFuZ2VkID0gdGFiV2l0aERpcmVjdGlvbiA/IF90aGlzLl9tb3ZlRm9jdXNMZWZ0KHRoZW1lKSA6IF90aGlzLl9tb3ZlRm9jdXNSaWdodCh0aGVtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9wcm9jZXNzaW5nVGFiS2V5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX3RoaXMucHJvcHMuc2hvdWxkUmVzZXRBY3RpdmVFbGVtZW50V2hlblRhYkZyb21ab25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9hY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuaG9tZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5faXNDb250ZW50RWRpdGFibGVFbGVtZW50KGV2LnRhcmdldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3RoaXMuX2lzRWxlbWVudElucHV0KGV2LnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIV90aGlzLl9zaG91bGRJbnB1dExvc2VGb2N1cyhldi50YXJnZXQsIGZhbHNlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IF90aGlzLl9yb290LmN1cnJlbnQgJiYgX3RoaXMuX3Jvb3QuY3VycmVudC5maXJzdENoaWxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl9yb290LmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENoaWxkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZm9jdXNFbGVtZW50KGdldE5leHRFbGVtZW50KF90aGlzLl9yb290LmN1cnJlbnQsIGZpcnN0Q2hpbGQsIHRydWUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLmVuZDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5faXNDb250ZW50RWRpdGFibGVFbGVtZW50KGV2LnRhcmdldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3RoaXMuX2lzRWxlbWVudElucHV0KGV2LnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIV90aGlzLl9zaG91bGRJbnB1dExvc2VGb2N1cyhldi50YXJnZXQsIHRydWUpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQgPSBfdGhpcy5fcm9vdC5jdXJyZW50ICYmIF90aGlzLl9yb290LmN1cnJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLl9yb290LmN1cnJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5mb2N1c0VsZW1lbnQoZ2V0UHJldmlvdXNFbGVtZW50KF90aGlzLl9yb290LmN1cnJlbnQsIGxhc3RDaGlsZCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuZW50ZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX3Nob3VsZFJhaXNlQ2xpY2tzT25FbnRlciAmJiBfdGhpcy5fdHJ5SW52b2tlQ2xpY2tGb3JGb2N1c2FibGUoZXYudGFyZ2V0LCBldikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9nZXRIb3Jpem9udGFsRGlzdGFuY2VGcm9tQ2VudGVyID0gZnVuY3Rpb24gKGlzRm9yd2FyZCwgXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBhY3RpdmVSZWN0LCBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIHRhcmdldFJlY3QpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgdmFyIGxlZnRBbGlnbm1lbnQgPSBfdGhpcy5fZm9jdXNBbGlnbm1lbnQubGVmdCB8fCBfdGhpcy5fZm9jdXNBbGlnbm1lbnQueCB8fCAwO1xuICAgICAgICAgICAgLy8gQ2xpZW50UmVjdCB2YWx1ZXMgY2FuIGJlIGZsb2F0cyB0aGF0IGRpZmZlciBieSB2ZXJ5IHNtYWxsIGZyYWN0aW9ucyBvZiBhIGRlY2ltYWwuXG4gICAgICAgICAgICAvLyBJZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRvcCBhbmQgYm90dG9tIGFyZSB3aXRoaW4gYSBwaXhlbCB0aGVuIHdlIHNob3VsZCB0cmVhdFxuICAgICAgICAgICAgLy8gdGhlbSBhcyBlcXVpdmFsZW50IGJ5IHVzaW5nIE1hdGguZmxvb3IuIEZvciBpbnN0YW5jZSA1LjIyMjIgYW5kIDUuMjIyMjIxIHNob3VsZCBiZSBlcXVpdmFsZW50LFxuICAgICAgICAgICAgLy8gYnV0IHdpdGhvdXQgTWF0aC5GbG9vciB0aGV5IHdpbGwgYmUgaGFuZGxlZCBpbmNvcnJlY3RseS5cbiAgICAgICAgICAgIHZhciB0YXJnZXRSZWN0VG9wID0gTWF0aC5mbG9vcih0YXJnZXRSZWN0LnRvcCk7XG4gICAgICAgICAgICB2YXIgYWN0aXZlUmVjdEJvdHRvbSA9IE1hdGguZmxvb3IoYWN0aXZlUmVjdC5ib3R0b20pO1xuICAgICAgICAgICAgdmFyIHRhcmdldFJlY3RCb3R0b20gPSBNYXRoLmZsb29yKHRhcmdldFJlY3QuYm90dG9tKTtcbiAgICAgICAgICAgIHZhciBhY3RpdmVSZWN0VG9wID0gTWF0aC5mbG9vcihhY3RpdmVSZWN0LnRvcCk7XG4gICAgICAgICAgICB2YXIgaXNWYWxpZENhbmRpZGF0ZU9ucGFnaW5nRG93biA9IGlzRm9yd2FyZCAmJiB0YXJnZXRSZWN0VG9wID4gYWN0aXZlUmVjdEJvdHRvbTtcbiAgICAgICAgICAgIHZhciBpc1ZhbGlkQ2FuZGlkYXRlT25wYWdpbmdVcCA9ICFpc0ZvcndhcmQgJiYgdGFyZ2V0UmVjdEJvdHRvbSA8IGFjdGl2ZVJlY3RUb3A7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZENhbmRpZGF0ZU9ucGFnaW5nRG93biB8fCBpc1ZhbGlkQ2FuZGlkYXRlT25wYWdpbmdVcCkge1xuICAgICAgICAgICAgICAgIGlmIChsZWZ0QWxpZ25tZW50ID49IHRhcmdldFJlY3QubGVmdCAmJiBsZWZ0QWxpZ25tZW50IDw9IHRhcmdldFJlY3QubGVmdCArIHRhcmdldFJlY3Qud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0YXJnZXRSZWN0LmxlZnQgKyB0YXJnZXRSZWN0LndpZHRoIC8gMiAtIGxlZnRBbGlnbm1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFfdGhpcy5fc2hvdWxkV3JhcEZvY3VzKF90aGlzLl9hY3RpdmVFbGVtZW50LCBOT19WRVJUSUNBTF9XUkFQKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBMQVJHRV9ORUdBVElWRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBMQVJHRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gTWFuYWdlIGNvbXBvbmVudFJlZiByZXNvbHV0aW9uLlxuICAgICAgICBpbml0aWFsaXplQ29tcG9uZW50UmVmKF90aGlzKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbnMoJ0ZvY3VzWm9uZScsIHByb3BzLCB7XG4gICAgICAgICAgICAgICAgcm9vdFByb3BzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgYWxsb3dUYWJLZXk6ICdoYW5kbGVUYWJLZXknLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRUeXBlOiAnYXMnLFxuICAgICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ2FyaWEtZGVzY3JpYmVkYnknLFxuICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnYXJpYS1sYWJlbGxlZGJ5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLl9pZCA9IGdldElkKCdGb2N1c1pvbmUnKTtcbiAgICAgICAgX3RoaXMuX2ZvY3VzQWxpZ25tZW50ID0ge1xuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX3Byb2Nlc3NpbmdUYWJLZXkgPSBmYWxzZTtcbiAgICAgICAgdmFyIHNob3VsZFJhaXNlQ2xpY2tzRmFsbGJhY2sgPSAoX2IgPSAoX2EgPSBwcm9wcy5zaG91bGRSYWlzZUNsaWNrcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogRm9jdXNab25lLmRlZmF1bHRQcm9wcy5zaG91bGRSYWlzZUNsaWNrcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdHJ1ZTtcbiAgICAgICAgX3RoaXMuX3Nob3VsZFJhaXNlQ2xpY2tzT25FbnRlciA9IChfYyA9IHByb3BzLnNob3VsZFJhaXNlQ2xpY2tzT25FbnRlcikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogc2hvdWxkUmFpc2VDbGlja3NGYWxsYmFjaztcbiAgICAgICAgX3RoaXMuX3Nob3VsZFJhaXNlQ2xpY2tzT25TcGFjZSA9IChfZCA9IHByb3BzLnNob3VsZFJhaXNlQ2xpY2tzT25TcGFjZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogc2hvdWxkUmFpc2VDbGlja3NGYWxsYmFjaztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKiogVXNlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LiAqL1xuICAgIEZvY3VzWm9uZS5nZXRPdXRlclpvbmVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX291dGVyWm9uZXMuc2l6ZTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEhhbmRsZSBnbG9iYWwgdGFiIHByZXNzZXMgc28gdGhhdCB3ZSBjYW4gcGF0Y2ggdGFiaW5kZXhlcyBvbiB0aGUgZmx5LlxuICAgICAqIEhFQURTIFVQOiBUaGlzIG11c3Qgbm90IGJlIGFuIGFycm93IGZ1bmN0aW9uIGluIG9yZGVyIHRvIGJlIHJlZmVyZW50aWFsbHkgZXF1YWwgYW1vbmcgaW5zdGFuY2VzXG4gICAgICogZm9yIHJlZiBjb3VudGluZyB0byB3b3JrIGNvcnJlY3RseSFcbiAgICAgKi9cbiAgICBGb2N1c1pvbmUuX29uS2V5RG93bkNhcHR1cmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uLCBAZmx1ZW50dWkvZGVwcmVjYXRlZC1rZXlib2FyZC1ldmVudC1wcm9wc1xuICAgICAgICBpZiAoZXYud2hpY2ggPT09IEtleUNvZGVzLnRhYikge1xuICAgICAgICAgICAgX291dGVyWm9uZXMuZm9yRWFjaChmdW5jdGlvbiAoem9uZSkgeyByZXR1cm4gem9uZS5fdXBkYXRlVGFiSW5kZXhlcygpOyB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJvb3QgPSB0aGlzLl9yb290LmN1cnJlbnQ7XG4gICAgICAgIF9hbGxJbnN0YW5jZXNbdGhpcy5faWRdID0gdGhpcztcbiAgICAgICAgaWYgKHJvb3QpIHtcbiAgICAgICAgICAgIHZhciBwYXJlbnRFbGVtZW50ID0gZ2V0UGFyZW50KHJvb3QsIEFMTE9XX1ZJUlRVQUxfRUxFTUVOVFMpO1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudCAhPT0gdGhpcy5fZ2V0RG9jdW1lbnQoKS5ib2R5ICYmIHBhcmVudEVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbGVtZW50Rm9jdXNab25lKHBhcmVudEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzSW5uZXJab25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBnZXRQYXJlbnQocGFyZW50RWxlbWVudCwgQUxMT1dfVklSVFVBTF9FTEVNRU5UUyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzSW5uZXJab25lKSB7XG4gICAgICAgICAgICAgICAgX291dGVyWm9uZXMuYWRkKHRoaXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3QuY3VycmVudCAmJiB0aGlzLl9yb290LmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIEZvY3VzWm9uZS5fb25LZXlEb3duQ2FwdHVyZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yb290LmN1cnJlbnQgJiYgdGhpcy5fcm9vdC5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl9vbkJsdXIsIHRydWUpO1xuICAgICAgICAgICAgLy8gQXNzaWduIGluaXRpYWwgdGFiIGluZGV4ZXMgc28gdGhhdCB3ZSBjYW4gc2V0IGluaXRpYWwgZm9jdXMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICAgICAgICB0aGlzLl91cGRhdGVUYWJJbmRleGVzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWZhdWx0VGFiYmFibGVFbGVtZW50ICYmIHR5cGVvZiB0aGlzLnByb3BzLmRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IHRoaXMuX2dldERvY3VtZW50KCkucXVlcnlTZWxlY3Rvcih0aGlzLnByb3BzLmRlZmF1bHRUYWJiYWJsZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5wcm9wcy5kZWZhdWx0QWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXREb2N1bWVudCgpLnF1ZXJ5U2VsZWN0b3IodGhpcy5wcm9wcy5kZWZhdWx0QWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zaG91bGRGb2N1c09uTW91bnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcm9vdCA9IHRoaXMuX3Jvb3QuY3VycmVudDtcbiAgICAgICAgdmFyIGRvYyA9IHRoaXMuX2dldERvY3VtZW50KCk7XG4gICAgICAgIC8vIElmIGVpdGhlciBfYWN0aXZlRWxlbWVudCBvciBfZGVmYXVsdEZvY3VzRWxlbWVudCBhcmUgbm8gbG9uZ2VyIGNvbnRhaW5lZCBieSBfcm9vdCxcbiAgICAgICAgLy8gcmVzZXQgdGhvc2UgdmFyaWFibGVzIChhbmQgdXBkYXRlIHRhYiBpbmRleGVzKSB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICAgICAgaWYgKCh0aGlzLl9hY3RpdmVFbGVtZW50ICYmICFlbGVtZW50Q29udGFpbnModGhpcy5fcm9vdC5jdXJyZW50LCB0aGlzLl9hY3RpdmVFbGVtZW50LCBBTExPV19WSVJUVUFMX0VMRU1FTlRTKSkgfHxcbiAgICAgICAgICAgICh0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgIWVsZW1lbnRDb250YWlucyh0aGlzLl9yb290LmN1cnJlbnQsIHRoaXMuX2RlZmF1bHRGb2N1c0VsZW1lbnQsIEFMTE9XX1ZJUlRVQUxfRUxFTUVOVFMpKSkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRhYkluZGV4ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucHJvcHMucHJldmVudEZvY3VzUmVzdG9yYXRpb24gJiZcbiAgICAgICAgICAgIGRvYyAmJlxuICAgICAgICAgICAgdGhpcy5fbGFzdEluZGV4UGF0aCAmJlxuICAgICAgICAgICAgKGRvYy5hY3RpdmVFbGVtZW50ID09PSBkb2MuYm9keSB8fCBkb2MuYWN0aXZlRWxlbWVudCA9PT0gbnVsbCB8fCBkb2MuYWN0aXZlRWxlbWVudCA9PT0gcm9vdCkpIHtcbiAgICAgICAgICAgIC8vIFRoZSBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgYWZ0ZXIgdGhlIHJlbmRlciwgYXR0ZW1wdCB0byByZXN0b3JlIGZvY3VzLlxuICAgICAgICAgICAgdmFyIGVsZW1lbnRUb0ZvY3VzID0gZ2V0Rm9jdXNhYmxlQnlJbmRleFBhdGgocm9vdCwgdGhpcy5fbGFzdEluZGV4UGF0aCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRBY3RpdmVFbGVtZW50KGVsZW1lbnRUb0ZvY3VzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFBhcmtlZEZvY3VzKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhZCBhIGZvY3VzIHBhdGggdG8gcmVzdG9yZSwgYnV0IG5vdyB0aGF0IHBhdGggaXMgdW5yZXNvbHZhYmxlLiBQYXJrIGZvY3VzXG4gICAgICAgICAgICAgICAgLy8gb24gdGhlIGNvbnRhaW5lciB1bnRpbCB3ZSBjYW4gdHJ5IGFnYWluLlxuICAgICAgICAgICAgICAgIHRoaXMuX3NldFBhcmtlZEZvY3VzKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBkZWxldGUgX2FsbEluc3RhbmNlc1t0aGlzLl9pZF07XG4gICAgICAgIGlmICghdGhpcy5faXNJbm5lclpvbmUpIHtcbiAgICAgICAgICAgIF9vdXRlclpvbmVzLmRlbGV0ZSh0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuY3VycmVudCAmJiB0aGlzLl9yb290LmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIEZvY3VzWm9uZS5fb25LZXlEb3duQ2FwdHVyZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Jvb3QuY3VycmVudCkge1xuICAgICAgICAgICAgdGhpcy5fcm9vdC5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl9vbkJsdXIsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50ID0gbnVsbDtcbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgdGFnID0gX2EuYXMsIGVsZW1lbnRUeXBlID0gX2EuZWxlbWVudFR5cGUsIHJvb3RQcm9wcyA9IF9hLnJvb3RQcm9wcywgYXJpYURlc2NyaWJlZEJ5ID0gX2EuYXJpYURlc2NyaWJlZEJ5LCBhcmlhTGFiZWxsZWRCeSA9IF9hLmFyaWFMYWJlbGxlZEJ5LCBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWU7XG4gICAgICAgIHZhciBkaXZQcm9wcyA9IGdldE5hdGl2ZVByb3BzKHRoaXMucHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcyk7XG4gICAgICAgIHZhciBUYWcgPSB0YWcgfHwgZWxlbWVudFR5cGUgfHwgJ2Rpdic7XG4gICAgICAgIC8vIE5vdGUsIHJpZ2h0IGJlZm9yZSByZW5kZXJpbmcvcmVjb25jaWxpbmcgcHJvY2VlZHMsIHdlIG5lZWQgdG8gcmVjb3JkIGlmIGZvY3VzXG4gICAgICAgIC8vIHdhcyBpbiB0aGUgem9uZSBiZWZvcmUgdGhlIHVwZGF0ZS4gVGhpcyBoZWxwZXIgd2lsbCB0cmFjayB0aGlzIGFuZCwgaWYgZm9jdXNcbiAgICAgICAgLy8gd2FzIGFjdHVhbGx5IGluIHRoZSB6b25lLCB3aGF0IHRoZSBpbmRleCBwYXRoIHRvIHRoZSBlbGVtZW50IGlzIGF0IHRoaXMgdGltZS5cbiAgICAgICAgLy8gVGhlbiwgbGF0ZXIgaW4gY29tcG9uZW50RGlkVXBkYXRlLCB3ZSBjYW4gZXZhbHVhdGUgaWYgd2UgbmVlZCB0byByZXN0b3JlIGl0IGluXG4gICAgICAgIC8vIHRoZSBjYXNlIHRoZSBlbGVtZW50IHdhcyByZW1vdmVkLlxuICAgICAgICB0aGlzLl9ldmFsdWF0ZUZvY3VzQmVmb3JlUmVuZGVyKCk7XG4gICAgICAgIC8vIE9ubHkgc3VwcG9ydCBSVEwgZGVmaW5lZCBpbiBnbG9iYWwgdGhlbWUsIG5vdCBjb250ZXh0dWFsIHRoZW1lL1JUTC5cbiAgICAgICAgdmFyIHRoZW1lID0gZ2V0VGhlbWUoKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhZywgX19hc3NpZ24oeyBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSwgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRCeSB9LCBkaXZQcm9wcywgcm9vdFByb3BzLCB7IFxuICAgICAgICAgICAgLy8gT25jZSB0aGUgZ2V0Q2xhc3NOYW1lIGNvcnJlY3RseSBtZW1vaXplcyBpbnB1dHMgdGhpcyBzaG91bGRcbiAgICAgICAgICAgIC8vIGJlIHJlcGxhY2VkIHNvIHRoYXQgY2xhc3NOYW1lIGlzIHBhc3NlZCB0byBnZXRSb290Q2xhc3MgYW5kIGlzIGluY2x1ZGVkIHRoZXJlIHNvXG4gICAgICAgICAgICAvLyB0aGUgY2xhc3MgbmFtZXMgd2lsbCBhbHdheXMgYmUgaW4gdGhlIHNhbWUgb3JkZXIuXG4gICAgICAgICAgICBjbGFzc05hbWU6IGNzcyhnZXRSb290Q2xhc3MoKSwgY2xhc3NOYW1lKSwgXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHJlZjogdGhpcy5fbWVyZ2VkUmVmKHRoaXMucHJvcHMuZWxlbWVudFJlZiwgdGhpcy5fcm9vdCksIFwiZGF0YS1mb2N1c3pvbmUtaWRcIjogdGhpcy5faWQsIFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1uby1iaW5kXG4gICAgICAgICAgICBvbktleURvd246IGZ1bmN0aW9uIChldikgeyByZXR1cm4gX3RoaXMuX29uS2V5RG93bihldiwgdGhlbWUpOyB9LCBvbkZvY3VzOiB0aGlzLl9vbkZvY3VzLCBvbk1vdXNlRG93bkNhcHR1cmU6IHRoaXMuX29uTW91c2VEb3duIH0pLCB0aGlzLnByb3BzLmNoaWxkcmVuKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIGZvY3VzIHRvIHRoZSBmaXJzdCB0YWJiYWJsZSBpdGVtIGluIHRoZSB6b25lLlxuICAgICAqIEBwYXJhbSBmb3JjZUludG9GaXJzdEVsZW1lbnQgLSBJZiB0cnVlLCBmb2N1cyB3aWxsIGJlIGZvcmNlZCBpbnRvIHRoZSBmaXJzdCBlbGVtZW50LCBldmVuXG4gICAgICogaWYgZm9jdXMgaXMgYWxyZWFkeSBpbiB0aGUgZm9jdXMgem9uZS5cbiAgICAgKiBAcGFyYW0gYnlwYXNzSGlkZGVuRWxlbWVudHMgLSBJZiB0cnVlLCBmb2N1cyB3aWxsIGJlIG5vdCBiZSBzZXQgb24gaGlkZGVuIGVsZW1lbnRzLlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZm9jdXMgY291bGQgYmUgc2V0IHRvIGFuIGFjdGl2ZSBlbGVtZW50LCBmYWxzZSBpZiBubyBvcGVyYXRpb24gd2FzIHRha2VuLlxuICAgICAqL1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoZm9yY2VJbnRvRmlyc3RFbGVtZW50LCBieXBhc3NIaWRkZW5FbGVtZW50cykge1xuICAgICAgICBpZiAoZm9yY2VJbnRvRmlyc3RFbGVtZW50ID09PSB2b2lkIDApIHsgZm9yY2VJbnRvRmlyc3RFbGVtZW50ID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKGJ5cGFzc0hpZGRlbkVsZW1lbnRzID09PSB2b2lkIDApIHsgYnlwYXNzSGlkZGVuRWxlbWVudHMgPSBmYWxzZTsgfVxuICAgICAgICBpZiAodGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoIWZvcmNlSW50b0ZpcnN0RWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX3Jvb3QuY3VycmVudC5nZXRBdHRyaWJ1dGUoSVNfRk9DVVNBQkxFX0FUVFJJQlVURSkgPT09ICd0cnVlJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2lzSW5uZXJab25lKSB7XG4gICAgICAgICAgICAgICAgdmFyIG93bmVyWm9uZUVsZW1lbnQgPSB0aGlzLl9nZXRPd25lclpvbmUodGhpcy5fcm9vdC5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAob3duZXJab25lRWxlbWVudCAhPT0gdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvd25lclpvbmUgPSBfYWxsSW5zdGFuY2VzW293bmVyWm9uZUVsZW1lbnQuZ2V0QXR0cmlidXRlKEZPQ1VTWk9ORV9JRF9BVFRSSUJVVEUpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhb3duZXJab25lICYmIG93bmVyWm9uZS5mb2N1c0VsZW1lbnQodGhpcy5fcm9vdC5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWZvcmNlSW50b0ZpcnN0RWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50Q29udGFpbnModGhpcy5fcm9vdC5jdXJyZW50LCB0aGlzLl9hY3RpdmVFbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgIGlzRWxlbWVudFRhYmJhYmxlKHRoaXMuX2FjdGl2ZUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgKCFieXBhc3NIaWRkZW5FbGVtZW50cyB8fCBpc0VsZW1lbnRWaXNpYmxlQW5kTm90SGlkZGVuKHRoaXMuX2FjdGl2ZUVsZW1lbnQpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBmaXJzdENoaWxkID0gdGhpcy5fcm9vdC5jdXJyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNFbGVtZW50KGdldE5leHRFbGVtZW50KHRoaXMuX3Jvb3QuY3VycmVudCwgZmlyc3RDaGlsZCwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGJ5cGFzc0hpZGRlbkVsZW1lbnRzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0cyBmb2N1cyB0byB0aGUgbGFzdCB0YWJiYWJsZSBpdGVtIGluIHRoZSB6b25lLlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZm9jdXMgY291bGQgYmUgc2V0IHRvIGFuIGFjdGl2ZSBlbGVtZW50LCBmYWxzZSBpZiBubyBvcGVyYXRpb24gd2FzIHRha2VuLlxuICAgICAqL1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuZm9jdXNMYXN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICB2YXIgbGFzdENoaWxkID0gdGhpcy5fcm9vdC5jdXJyZW50ICYmIHRoaXMuX3Jvb3QuY3VycmVudC5sYXN0Q2hpbGQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1c0VsZW1lbnQoZ2V0UHJldmlvdXNFbGVtZW50KHRoaXMuX3Jvb3QuY3VycmVudCwgbGFzdENoaWxkLCB0cnVlLCB0cnVlLCB0cnVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0cyBmb2N1cyB0byBhIHNwZWNpZmljIGNoaWxkIGVsZW1lbnQgd2l0aGluIHRoZSB6b25lLiBUaGlzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgKiBzaG91bGRSZWNlaXZlRm9jdXMgdG8gY3JlYXRlIGRlbGF5ZWQgZm9jdXMgc2NlbmFyaW9zIChsaWtlIGFuaW1hdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byB0aGUgY29ycmVjdFxuICAgICAqIGxvY2F0aW9uIGFuZCB0aGVuIGZvY3VzLilcbiAgICAgKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBjaGlsZCBlbGVtZW50IHdpdGhpbiB0aGUgem9uZSB0byBmb2N1cy5cbiAgICAgKiBAcGFyYW0gZm9yY2VBbGlnbm1lbnQgLSBJZiB0cnVlLCBmb2N1cyBhbGlnbm1lbnQgd2lsbCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBlbGVtZW50IHByb3ZpZGVkLlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgZm9jdXMgY291bGQgYmUgc2V0IHRvIGFuIGFjdGl2ZSBlbGVtZW50LCBmYWxzZSBpZiBubyBvcGVyYXRpb24gd2FzIHRha2VuLlxuICAgICAqL1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuZm9jdXNFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIGZvcmNlQWxpZ25tZW50KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBvbkJlZm9yZUZvY3VzID0gX2Eub25CZWZvcmVGb2N1cywgc2hvdWxkUmVjZWl2ZUZvY3VzID0gX2Euc2hvdWxkUmVjZWl2ZUZvY3VzO1xuICAgICAgICBpZiAoKHNob3VsZFJlY2VpdmVGb2N1cyAmJiAhc2hvdWxkUmVjZWl2ZUZvY3VzKGVsZW1lbnQpKSB8fCAob25CZWZvcmVGb2N1cyAmJiAhb25CZWZvcmVGb2N1cyhlbGVtZW50KSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgLy8gd2hlbiB3ZSBzZXQgZm9jdXMgdG8gYSBzcGVjaWZpYyBjaGlsZCwgd2Ugc2hvdWxkIHJlY2FsY3VsYXRlIHRoZSBhbGlnbm1lbnQgZGVwZW5kaW5nIG9uIGl0cyBwb3NpdGlvbi5cbiAgICAgICAgICAgIHRoaXMuX3NldEFjdGl2ZUVsZW1lbnQoZWxlbWVudCwgZm9yY2VBbGlnbm1lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGb3JjZXMgaG9yaXpvbnRhbCBhbGlnbm1lbnQgaW4gdGhlIGNvbnRleHQgb2YgdmVydGljYWwgYXJyb3dpbmcgdG8gdXNlIHNwZWNpZmljIHBvaW50IGFzIHRoZSByZWZlcmVuY2UsXG4gICAgICogcmF0aGVyIHRoYW4gYSBjZW50ZXIgYmFzZWQgb24gdGhlIGxhc3QgaG9yaXpvbnRhbCBtb3Rpb24uXG4gICAgICogQHBhcmFtIHBvaW50IC0gdGhlIG5ldyByZWZlcmVuY2UgcG9pbnQuXG4gICAgICovXG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5zZXRGb2N1c0FsaWdubWVudCA9IGZ1bmN0aW9uIChwb2ludCkge1xuICAgICAgICB0aGlzLl9mb2N1c0FsaWdubWVudCA9IHBvaW50O1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZvY3VzWm9uZS5wcm90b3R5cGUsIFwiZGVmYXVsdEZvY3VzRWxlbWVudFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRGb2N1c0VsZW1lbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRm9jdXNab25lLnByb3RvdHlwZSwgXCJhY3RpdmVFbGVtZW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRWxlbWVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX2V2YWx1YXRlRm9jdXNCZWZvcmVSZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByb290ID0gdGhpcy5fcm9vdC5jdXJyZW50O1xuICAgICAgICB2YXIgZG9jID0gdGhpcy5fZ2V0RG9jdW1lbnQoKTtcbiAgICAgICAgaWYgKGRvYykge1xuICAgICAgICAgICAgdmFyIGZvY3VzZWRFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgaW5kZXggcGF0aCBpZiB3ZSBhcmUgbm90IHBhcmtlZCBvbiB0aGUgcm9vdC5cbiAgICAgICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCAhPT0gcm9vdCkge1xuICAgICAgICAgICAgICAgIHZhciBzaG91bGRSZXN0b3JlRm9jdXMgPSBlbGVtZW50Q29udGFpbnMocm9vdCwgZm9jdXNlZEVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0SW5kZXhQYXRoID0gc2hvdWxkUmVzdG9yZUZvY3VzID8gZ2V0RWxlbWVudEluZGV4UGF0aChyb290LCBmb2N1c2VkRWxlbWVudCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFdoZW4gZm9jdXMgaXMgaW4gdGhlIHpvbmUgYXQgcmVuZGVyIHRpbWUgYnV0IHRoZW4gYWxsIGZvY3VzYWJsZSBlbGVtZW50cyBhcmUgcmVtb3ZlZCxcbiAgICAgKiB3ZSBcInBhcmtcIiBmb2N1cyB0ZW1wb3JhcmlseSBvbiB0aGUgcm9vdC4gT25jZSB3ZSB1cGRhdGUgd2l0aCBmb2N1c2FibGUgY2hpbGRyZW4sIHdlIHJlc3RvcmVcbiAgICAgKiBmb2N1cyB0byB0aGUgY2xvc2VzdCBwYXRoIGZyb20gcHJldmlvdXMuIElmIHRoZSB1c2VyIHRhYnMgYXdheSBmcm9tIHRoZSBwYXJrZWQgY29udGFpbmVyLFxuICAgICAqIHdlIHJlc3RvcmUgZm9jdXNhYmlsaXR5IHRvIHRoZSBwcmUtcGFya2VkIHN0YXRlLlxuICAgICAqL1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX3NldFBhcmtlZEZvY3VzID0gZnVuY3Rpb24gKGlzUGFya2VkKSB7XG4gICAgICAgIHZhciByb290ID0gdGhpcy5fcm9vdC5jdXJyZW50O1xuICAgICAgICBpZiAocm9vdCAmJiB0aGlzLl9pc1BhcmtlZCAhPT0gaXNQYXJrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUGFya2VkID0gaXNQYXJrZWQ7XG4gICAgICAgICAgICBpZiAoaXNQYXJrZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucHJvcHMuYWxsb3dGb2N1c1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFya2VkVGFiSW5kZXggPSByb290LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICAgICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvb3QuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnByb3BzLmFsbG93Rm9jdXNSb290KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmtlZFRhYkluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3Quc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsIHRoaXMuX3BhcmtlZFRhYkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFya2VkVGFiSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByb290LnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX3NldEFjdGl2ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgZm9yY2VBbGlnbm1lbnQpIHtcbiAgICAgICAgdmFyIHByZXZpb3VzQWN0aXZlRWxlbWVudCA9IHRoaXMuX2FjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoaXNFbGVtZW50Rm9jdXNab25lKHByZXZpb3VzQWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUYWJJbmRleGVzKHByZXZpb3VzQWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9mb2N1c0FsaWdubWVudCB8fCBmb3JjZUFsaWdubWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzQWxpZ25tZW50KGVsZW1lbnQsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX3ByZXZlbnREZWZhdWx0V2hlbkhhbmRsZWQgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5wcmV2ZW50RGVmYXVsdFdoZW5IYW5kbGVkICYmIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXYWxrIHVwIHRoZSBkb20gdHJ5IHRvIGZpbmQgYSBmb2N1c2FibGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl90cnlJbnZva2VDbGlja0ZvckZvY3VzYWJsZSA9IGZ1bmN0aW9uICh0YXJnZXRFbGVtZW50LCBldikge1xuICAgICAgICB2YXIgdGFyZ2V0ID0gdGFyZ2V0RWxlbWVudDtcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnQlVUVE9OJyB8fFxuICAgICAgICAgICAgICAgIHRhcmdldC50YWdOYW1lID09PSAnQScgfHxcbiAgICAgICAgICAgICAgICB0YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJyB8fFxuICAgICAgICAgICAgICAgIHRhcmdldC50YWdOYW1lID09PSAnVEVYVEFSRUEnIHx8XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdTVU1NQVJZJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0ltbWVkaWF0ZURlc2NlbmRhbnRPZlpvbmUodGFyZ2V0KSAmJlxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRBdHRyaWJ1dGUoSVNfRk9DVVNBQkxFX0FUVFJJQlVURSkgPT09ICd0cnVlJyAmJlxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRBdHRyaWJ1dGUoSVNfRU5URVJfRElTQUJMRURfQVRUUklCVVRFKSAhPT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgcmFpc2VDbGlja0Zyb21LZXlib2FyZEV2ZW50KHRhcmdldCwgZXYpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0ID0gZ2V0UGFyZW50KHRhcmdldCwgQUxMT1dfVklSVFVBTF9FTEVNRU5UUyk7XG4gICAgICAgIH0gd2hpbGUgKHRhcmdldCAhPT0gdGhpcy5fcm9vdC5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVHJhdmVyc2UgdG8gZmluZCBmaXJzdCBjaGlsZCB6b25lLlxuICAgICAqL1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX2dldEZpcnN0SW5uZXJab25lID0gZnVuY3Rpb24gKHJvb3RFbGVtZW50KSB7XG4gICAgICAgIHJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQgfHwgdGhpcy5fYWN0aXZlRWxlbWVudCB8fCB0aGlzLl9yb290LmN1cnJlbnQ7XG4gICAgICAgIGlmICghcm9vdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VsZW1lbnRGb2N1c1pvbmUocm9vdEVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gX2FsbEluc3RhbmNlc1tyb290RWxlbWVudC5nZXRBdHRyaWJ1dGUoRk9DVVNaT05FX0lEX0FUVFJJQlVURSldO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZCA9IHJvb3RFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmIChpc0VsZW1lbnRGb2N1c1pvbmUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9hbGxJbnN0YW5jZXNbY2hpbGQuZ2V0QXR0cmlidXRlKEZPQ1VTWk9ORV9JRF9BVFRSSUJVVEUpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBtYXRjaCA9IHRoaXMuX2dldEZpcnN0SW5uZXJab25lKGNoaWxkKTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fbW92ZUZvY3VzID0gZnVuY3Rpb24gKGlzRm9yd2FyZCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgZ2V0RGlzdGFuY2VGcm9tQ2VudGVyLCBldiwgdXNlRGVmYXVsdFdyYXApIHtcbiAgICAgICAgaWYgKHVzZURlZmF1bHRXcmFwID09PSB2b2lkIDApIHsgdXNlRGVmYXVsdFdyYXAgPSB0cnVlOyB9XG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudDtcbiAgICAgICAgdmFyIGNhbmRpZGF0ZURpc3RhbmNlID0gLTE7XG4gICAgICAgIHZhciBjYW5kaWRhdGVFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgY2hhbmdlZEZvY3VzID0gZmFsc2U7XG4gICAgICAgIHZhciBpc0JpZGlyZWN0aW9uYWwgPSB0aGlzLnByb3BzLmRpcmVjdGlvbiA9PT0gRm9jdXNab25lRGlyZWN0aW9uLmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIGlmICghZWxlbWVudCB8fCAhdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lzRWxlbWVudElucHV0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZElucHV0TG9zZUZvY3VzKGVsZW1lbnQsIGlzRm9yd2FyZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFjdGl2ZVJlY3QgPSBpc0JpZGlyZWN0aW9uYWwgPyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZWxlbWVudCA9IChpc0ZvcndhcmQgPyBnZXROZXh0RWxlbWVudCh0aGlzLl9yb290LmN1cnJlbnQsIGVsZW1lbnQpIDogZ2V0UHJldmlvdXNFbGVtZW50KHRoaXMuX3Jvb3QuY3VycmVudCwgZWxlbWVudCkpO1xuICAgICAgICAgICAgaWYgKGlzQmlkaXJlY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50RGlzdGFuY2UgPSBnZXREaXN0YW5jZUZyb21DZW50ZXIoYWN0aXZlUmVjdCwgdGFyZ2V0UmVjdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50RGlzdGFuY2UgPT09IC0xICYmIGNhbmRpZGF0ZURpc3RhbmNlID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudERpc3RhbmNlID4gLTEgJiYgKGNhbmRpZGF0ZURpc3RhbmNlID09PSAtMSB8fCBlbGVtZW50RGlzdGFuY2UgPCBjYW5kaWRhdGVEaXN0YW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZURpc3RhbmNlID0gZWxlbWVudERpc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZURpc3RhbmNlID49IDAgJiYgZWxlbWVudERpc3RhbmNlIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoZWxlbWVudCk7XG4gICAgICAgIC8vIEZvY3VzIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZVxuICAgICAgICBpZiAoY2FuZGlkYXRlRWxlbWVudCAmJiBjYW5kaWRhdGVFbGVtZW50ICE9PSB0aGlzLl9hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBjaGFuZ2VkRm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5mb2N1c0VsZW1lbnQoY2FuZGlkYXRlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5wcm9wcy5pc0NpcmN1bGFyTmF2aWdhdGlvbiAmJiB1c2VEZWZhdWx0V3JhcCkge1xuICAgICAgICAgICAgaWYgKGlzRm9yd2FyZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzRWxlbWVudChnZXROZXh0RWxlbWVudCh0aGlzLl9yb290LmN1cnJlbnQsIHRoaXMuX3Jvb3QuY3VycmVudC5maXJzdEVsZW1lbnRDaGlsZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNFbGVtZW50KGdldFByZXZpb3VzRWxlbWVudCh0aGlzLl9yb290LmN1cnJlbnQsIHRoaXMuX3Jvb3QuY3VycmVudC5sYXN0RWxlbWVudENoaWxkLCB0cnVlLCB0cnVlLCB0cnVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRGb2N1cztcbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX21vdmVGb2N1c0Rvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB0YXJnZXRUb3AgPSAtMTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIHZhciBsZWZ0QWxpZ25tZW50ID0gdGhpcy5fZm9jdXNBbGlnbm1lbnQubGVmdCB8fCB0aGlzLl9mb2N1c0FsaWdubWVudC54IHx8IDA7XG4gICAgICAgIGlmIChcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIHRoaXMuX21vdmVGb2N1cyh0cnVlLCBmdW5jdGlvbiAoYWN0aXZlUmVjdCwgdGFyZ2V0UmVjdCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gLTE7XG4gICAgICAgICAgICAvLyBDbGllbnRSZWN0IHZhbHVlcyBjYW4gYmUgZmxvYXRzIHRoYXQgZGlmZmVyIGJ5IHZlcnkgc21hbGwgZnJhY3Rpb25zIG9mIGEgZGVjaW1hbC5cbiAgICAgICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdG9wIGFuZCBib3R0b20gYXJlIHdpdGhpbiBhIHBpeGVsIHRoZW4gd2Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICAvLyB0aGVtIGFzIGVxdWl2YWxlbnQgYnkgdXNpbmcgTWF0aC5mbG9vci4gRm9yIGluc3RhbmNlIDUuMjIyMiBhbmQgNS4yMjIyMjEgc2hvdWxkIGJlIGVxdWl2YWxlbnQsXG4gICAgICAgICAgICAvLyBidXQgd2l0aG91dCBNYXRoLkZsb29yIHRoZXkgd2lsbCBiZSBoYW5kbGVkIGluY29ycmVjdGx5LlxuICAgICAgICAgICAgdmFyIHRhcmdldFJlY3RUb3AgPSBNYXRoLmZsb29yKHRhcmdldFJlY3QudG9wKTtcbiAgICAgICAgICAgIHZhciBhY3RpdmVSZWN0Qm90dG9tID0gTWF0aC5mbG9vcihhY3RpdmVSZWN0LmJvdHRvbSk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0UmVjdFRvcCA8IGFjdGl2ZVJlY3RCb3R0b20pIHtcbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLl9zaG91bGRXcmFwRm9jdXMoX3RoaXMuX2FjdGl2ZUVsZW1lbnQsIE5PX1ZFUlRJQ0FMX1dSQVApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBMQVJHRV9ORUdBVElWRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIExBUkdFX0RJU1RBTkNFX0ZST01fQ0VOVEVSO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0YXJnZXRUb3AgPT09IC0xICYmIHRhcmdldFJlY3RUb3AgPj0gYWN0aXZlUmVjdEJvdHRvbSkgfHwgdGFyZ2V0UmVjdFRvcCA9PT0gdGFyZ2V0VG9wKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gdGFyZ2V0UmVjdFRvcDtcbiAgICAgICAgICAgICAgICBpZiAobGVmdEFsaWdubWVudCA+PSB0YXJnZXRSZWN0LmxlZnQgJiYgbGVmdEFsaWdubWVudCA8PSB0YXJnZXRSZWN0LmxlZnQgKyB0YXJnZXRSZWN0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gTWF0aC5hYnModGFyZ2V0UmVjdC5sZWZ0ICsgdGFyZ2V0UmVjdC53aWR0aCAvIDIgLSBsZWZ0QWxpZ25tZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGlzdGFuY2U7XG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRGb2N1c0FsaWdubWVudCh0aGlzLl9hY3RpdmVFbGVtZW50LCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl9tb3ZlRm9jdXNVcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHRhcmdldFRvcCA9IC0xO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdmFyIGxlZnRBbGlnbm1lbnQgPSB0aGlzLl9mb2N1c0FsaWdubWVudC5sZWZ0IHx8IHRoaXMuX2ZvY3VzQWxpZ25tZW50LnggfHwgMDtcbiAgICAgICAgaWYgKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdGhpcy5fbW92ZUZvY3VzKGZhbHNlLCBmdW5jdGlvbiAoYWN0aXZlUmVjdCwgdGFyZ2V0UmVjdCkge1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gLTE7XG4gICAgICAgICAgICAvLyBDbGllbnRSZWN0IHZhbHVlcyBjYW4gYmUgZmxvYXRzIHRoYXQgZGlmZmVyIGJ5IHZlcnkgc21hbGwgZnJhY3Rpb25zIG9mIGEgZGVjaW1hbC5cbiAgICAgICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdG9wIGFuZCBib3R0b20gYXJlIHdpdGhpbiBhIHBpeGVsIHRoZW4gd2Ugc2hvdWxkIHRyZWF0XG4gICAgICAgICAgICAvLyB0aGVtIGFzIGVxdWl2YWxlbnQgYnkgdXNpbmcgTWF0aC5mbG9vci4gRm9yIGluc3RhbmNlIDUuMjIyMiBhbmQgNS4yMjIyMjEgc2hvdWxkIGJlIGVxdWl2YWxlbnQsXG4gICAgICAgICAgICAvLyBidXQgd2l0aG91dCBNYXRoLkZsb29yIHRoZXkgd2lsbCBiZSBoYW5kbGVkIGluY29ycmVjdGx5LlxuICAgICAgICAgICAgdmFyIHRhcmdldFJlY3RCb3R0b20gPSBNYXRoLmZsb29yKHRhcmdldFJlY3QuYm90dG9tKTtcbiAgICAgICAgICAgIHZhciB0YXJnZXRSZWN0VG9wID0gTWF0aC5mbG9vcih0YXJnZXRSZWN0LnRvcCk7XG4gICAgICAgICAgICB2YXIgYWN0aXZlUmVjdFRvcCA9IE1hdGguZmxvb3IoYWN0aXZlUmVjdC50b3ApO1xuICAgICAgICAgICAgaWYgKHRhcmdldFJlY3RCb3R0b20gPiBhY3RpdmVSZWN0VG9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5fc2hvdWxkV3JhcEZvY3VzKF90aGlzLl9hY3RpdmVFbGVtZW50LCBOT19WRVJUSUNBTF9XUkFQKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEFSR0VfTkVHQVRJVkVfRElTVEFOQ0VfRlJPTV9DRU5URVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBMQVJHRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGFyZ2V0VG9wID09PSAtMSAmJiB0YXJnZXRSZWN0Qm90dG9tIDw9IGFjdGl2ZVJlY3RUb3ApIHx8IHRhcmdldFJlY3RUb3AgPT09IHRhcmdldFRvcCkge1xuICAgICAgICAgICAgICAgIHRhcmdldFRvcCA9IHRhcmdldFJlY3RUb3A7XG4gICAgICAgICAgICAgICAgaWYgKGxlZnRBbGlnbm1lbnQgPj0gdGFyZ2V0UmVjdC5sZWZ0ICYmIGxlZnRBbGlnbm1lbnQgPD0gdGFyZ2V0UmVjdC5sZWZ0ICsgdGFyZ2V0UmVjdC53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IE1hdGguYWJzKHRhcmdldFJlY3QubGVmdCArIHRhcmdldFJlY3Qud2lkdGggLyAyIC0gbGVmdEFsaWdubWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRpc3RhbmNlO1xuICAgICAgICB9KSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0Rm9jdXNBbGlnbm1lbnQodGhpcy5fYWN0aXZlRWxlbWVudCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fbW92ZUZvY3VzTGVmdCA9IGZ1bmN0aW9uICh0aGVtZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc2hvdWxkV3JhcCA9IHRoaXMuX3Nob3VsZFdyYXBGb2N1cyh0aGlzLl9hY3RpdmVFbGVtZW50LCBOT19IT1JJWk9OVEFMX1dSQVApO1xuICAgICAgICBpZiAodGhpcy5fbW92ZUZvY3VzKGdldFJUTCh0aGVtZSksIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgZnVuY3Rpb24gKGFjdGl2ZVJlY3QsIHRhcmdldFJlY3QpIHtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IC0xO1xuICAgICAgICAgICAgdmFyIHRvcEJvdHRvbUNvbXBhcmlzb247XG4gICAgICAgICAgICBpZiAoZ2V0UlRMKHRoZW1lKSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaW4gUlRMLCB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gX21vdmVGb2N1c1JpZ2h0IGZvciBMVFIuXG4gICAgICAgICAgICAgICAgLy8gR29pbmcgbGVmdCBhdCBhIGxlZnRtb3N0IHJlY3RhbmdsZSB3aWxsIGdvIGRvd24gYSBsaW5lIGluc3RlYWQgb2YgdXAgYSBsaW5lIGxpa2UgaW4gTFRSLlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHdlIHdhbnQgdG8gYmUgY29tcGFyaW5nIHRoZSB0b3Agb2YgdGhlIHRhcmdldCByZWN0XG4gICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgYm90dG9tIG9mIHRoZSBhY3RpdmUgcmVjdC5cbiAgICAgICAgICAgICAgICB0b3BCb3R0b21Db21wYXJpc29uID0gcGFyc2VGbG9hdCh0YXJnZXRSZWN0LnRvcC50b0ZpeGVkKDMpKSA8IHBhcnNlRmxvYXQoYWN0aXZlUmVjdC5ib3R0b20udG9GaXhlZCgzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3BCb3R0b21Db21wYXJpc29uID0gcGFyc2VGbG9hdCh0YXJnZXRSZWN0LmJvdHRvbS50b0ZpeGVkKDMpKSA+IHBhcnNlRmxvYXQoYWN0aXZlUmVjdC50b3AudG9GaXhlZCgzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9wQm90dG9tQ29tcGFyaXNvbiAmJlxuICAgICAgICAgICAgICAgIHRhcmdldFJlY3QucmlnaHQgPD0gYWN0aXZlUmVjdC5yaWdodCAmJlxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLmRpcmVjdGlvbiAhPT0gRm9jdXNab25lRGlyZWN0aW9uLnZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBhY3RpdmVSZWN0LnJpZ2h0IC0gdGFyZ2V0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzaG91bGRXcmFwKSB7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBMQVJHRV9ORUdBVElWRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZTtcbiAgICAgICAgfSwgdW5kZWZpbmVkIC8qZXYqLywgc2hvdWxkV3JhcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzQWxpZ25tZW50KHRoaXMuX2FjdGl2ZUVsZW1lbnQsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX21vdmVGb2N1c1JpZ2h0ID0gZnVuY3Rpb24gKHRoZW1lKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzaG91bGRXcmFwID0gdGhpcy5fc2hvdWxkV3JhcEZvY3VzKHRoaXMuX2FjdGl2ZUVsZW1lbnQsIE5PX0hPUklaT05UQUxfV1JBUCk7XG4gICAgICAgIGlmICh0aGlzLl9tb3ZlRm9jdXMoIWdldFJUTCh0aGVtZSksIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgZnVuY3Rpb24gKGFjdGl2ZVJlY3QsIHRhcmdldFJlY3QpIHtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IC0xO1xuICAgICAgICAgICAgdmFyIHRvcEJvdHRvbUNvbXBhcmlzb247XG4gICAgICAgICAgICBpZiAoZ2V0UlRMKHRoZW1lKSkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gaW4gUlRMLCB0aGlzIGNvbXBhcmlzb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gX21vdmVGb2N1c0xlZnQgZm9yIExUUi5cbiAgICAgICAgICAgICAgICAvLyBHb2luZyByaWdodCBhdCBhIHJpZ2h0bW9zdCByZWN0YW5nbGUgd2lsbCBnbyB1cCBhIGxpbmUgaW5zdGVhZCBvZiBkb3duIGEgbGluZSBsaWtlIGluIExUUi5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCwgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGNvbXBhcmluZyB0aGUgYm90dG9tIG9mIHRoZSB0YXJnZXQgcmVjdFxuICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIHRvcCBvZiB0aGUgYWN0aXZlIHJlY3QuXG4gICAgICAgICAgICAgICAgdG9wQm90dG9tQ29tcGFyaXNvbiA9IHBhcnNlRmxvYXQodGFyZ2V0UmVjdC5ib3R0b20udG9GaXhlZCgzKSkgPiBwYXJzZUZsb2F0KGFjdGl2ZVJlY3QudG9wLnRvRml4ZWQoMykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG9wQm90dG9tQ29tcGFyaXNvbiA9IHBhcnNlRmxvYXQodGFyZ2V0UmVjdC50b3AudG9GaXhlZCgzKSkgPCBwYXJzZUZsb2F0KGFjdGl2ZVJlY3QuYm90dG9tLnRvRml4ZWQoMykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRvcEJvdHRvbUNvbXBhcmlzb24gJiZcbiAgICAgICAgICAgICAgICB0YXJnZXRSZWN0LmxlZnQgPj0gYWN0aXZlUmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMuZGlyZWN0aW9uICE9PSBGb2N1c1pvbmVEaXJlY3Rpb24udmVydGljYWwpIHtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IHRhcmdldFJlY3QubGVmdCAtIGFjdGl2ZVJlY3QubGVmdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFzaG91bGRXcmFwKSB7XG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSBMQVJHRV9ORUdBVElWRV9ESVNUQU5DRV9GUk9NX0NFTlRFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkaXN0YW5jZTtcbiAgICAgICAgfSwgdW5kZWZpbmVkIC8qZXYqLywgc2hvdWxkV3JhcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzQWxpZ25tZW50KHRoaXMuX2FjdGl2ZUVsZW1lbnQsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX21vdmVGb2N1c1BhZ2luZyA9IGZ1bmN0aW9uIChpc0ZvcndhcmQsIHVzZURlZmF1bHRXcmFwKSB7XG4gICAgICAgIGlmICh1c2VEZWZhdWx0V3JhcCA9PT0gdm9pZCAwKSB7IHVzZURlZmF1bHRXcmFwID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2FjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghZWxlbWVudCB8fCAhdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lzRWxlbWVudElucHV0KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Nob3VsZElucHV0TG9zZUZvY3VzKGVsZW1lbnQsIGlzRm9yd2FyZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHNjcm9sbGFibGVQYXJlbnQgPSBmaW5kU2Nyb2xsYWJsZVBhcmVudChlbGVtZW50KTtcbiAgICAgICAgaWYgKCFzY3JvbGxhYmxlUGFyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbmRpZGF0ZURpc3RhbmNlID0gLTE7XG4gICAgICAgIHZhciBjYW5kaWRhdGVFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdGFyZ2V0VG9wID0gLTE7XG4gICAgICAgIHZhciB0YXJnZXRCb3R0b20gPSAtMTtcbiAgICAgICAgdmFyIHBhZ2VzaXplID0gc2Nyb2xsYWJsZVBhcmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIHZhciBhY3RpdmVSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZWxlbWVudCA9IGlzRm9yd2FyZFxuICAgICAgICAgICAgICAgID8gZ2V0TmV4dEVsZW1lbnQodGhpcy5fcm9vdC5jdXJyZW50LCBlbGVtZW50KVxuICAgICAgICAgICAgICAgIDogZ2V0UHJldmlvdXNFbGVtZW50KHRoaXMuX3Jvb3QuY3VycmVudCwgZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0UmVjdFRvcCA9IE1hdGguZmxvb3IodGFyZ2V0UmVjdC50b3ApO1xuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVSZWN0Qm90dG9tID0gTWF0aC5mbG9vcihhY3RpdmVSZWN0LmJvdHRvbSk7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldFJlY3RCb3R0b20gPSBNYXRoLmZsb29yKHRhcmdldFJlY3QuYm90dG9tKTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlUmVjdFRvcCA9IE1hdGguZmxvb3IoYWN0aXZlUmVjdC50b3ApO1xuICAgICAgICAgICAgICAgIHZhciBlbGVtZW50RGlzdGFuY2UgPSB0aGlzLl9nZXRIb3Jpem9udGFsRGlzdGFuY2VGcm9tQ2VudGVyKGlzRm9yd2FyZCwgYWN0aXZlUmVjdCwgdGFyZ2V0UmVjdCk7XG4gICAgICAgICAgICAgICAgdmFyIGlzRWxlbWVudFBhc3NlZFBhZ2VTaXplT25QYWdpbmdEb3duID0gaXNGb3J3YXJkICYmIHRhcmdldFJlY3RUb3AgPiBhY3RpdmVSZWN0Qm90dG9tICsgcGFnZXNpemU7XG4gICAgICAgICAgICAgICAgdmFyIGlzRWxlbWVudFBhc3NlZFBhZ2VTaXplT25QYWdpbmdVcCA9ICFpc0ZvcndhcmQgJiYgdGFyZ2V0UmVjdEJvdHRvbSA8IGFjdGl2ZVJlY3RUb3AgLSBwYWdlc2l6ZTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbGVtZW50UGFzc2VkUGFnZVNpemVPblBhZ2luZ0Rvd24gfHwgaXNFbGVtZW50UGFzc2VkUGFnZVNpemVPblBhZ2luZ1VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudERpc3RhbmNlID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHBhZ2luZyBkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0ZvcndhcmQgJiYgdGFyZ2V0UmVjdFRvcCA+IHRhcmdldFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VG9wID0gdGFyZ2V0UmVjdFRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZURpc3RhbmNlID0gZWxlbWVudERpc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRm9yd2FyZCAmJiB0YXJnZXRSZWN0Qm90dG9tIDwgdGFyZ2V0Qm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgcGFnaW5nIHVwXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCb3R0b20gPSB0YXJnZXRSZWN0Qm90dG9tO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlRGlzdGFuY2UgPSBlbGVtZW50RGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGVEaXN0YW5jZSA9PT0gLTEgfHwgZWxlbWVudERpc3RhbmNlIDw9IGNhbmRpZGF0ZURpc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVEaXN0YW5jZSA9IGVsZW1lbnREaXN0YW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZUVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChlbGVtZW50KTtcbiAgICAgICAgdmFyIGNoYW5nZWRGb2N1cyA9IGZhbHNlO1xuICAgICAgICAvLyBGb2N1cyB0aGUgY2xvc2VzdCBjYW5kaWRhdGVcbiAgICAgICAgaWYgKGNhbmRpZGF0ZUVsZW1lbnQgJiYgY2FuZGlkYXRlRWxlbWVudCAhPT0gdGhpcy5fYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgY2hhbmdlZEZvY3VzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNFbGVtZW50KGNhbmRpZGF0ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fc2V0Rm9jdXNBbGlnbm1lbnQoY2FuZGlkYXRlRWxlbWVudCwgZmFsc2UsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMuaXNDaXJjdWxhck5hdmlnYXRpb24gJiYgdXNlRGVmYXVsdFdyYXApIHtcbiAgICAgICAgICAgIGlmIChpc0ZvcndhcmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1c0VsZW1lbnQoZ2V0TmV4dEVsZW1lbnQodGhpcy5fcm9vdC5jdXJyZW50LCB0aGlzLl9yb290LmN1cnJlbnQuZmlyc3RFbGVtZW50Q2hpbGQsIHRydWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzRWxlbWVudChnZXRQcmV2aW91c0VsZW1lbnQodGhpcy5fcm9vdC5jdXJyZW50LCB0aGlzLl9yb290LmN1cnJlbnQubGFzdEVsZW1lbnRDaGlsZCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaGFuZ2VkRm9jdXM7XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl9zZXRGb2N1c0FsaWdubWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBpc0hvcml6b250YWwsIGlzVmVydGljYWwpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGlyZWN0aW9uID09PSBGb2N1c1pvbmVEaXJlY3Rpb24uYmlkaXJlY3Rpb25hbCAmJlxuICAgICAgICAgICAgKCF0aGlzLl9mb2N1c0FsaWdubWVudCB8fCBpc0hvcml6b250YWwgfHwgaXNWZXJ0aWNhbCkpIHtcbiAgICAgICAgICAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDI7XG4gICAgICAgICAgICB2YXIgdG9wXzEgPSByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGlmICghdGhpcy5fZm9jdXNBbGlnbm1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0FsaWdubWVudCA9IHsgbGVmdDogbGVmdCwgdG9wOiB0b3BfMSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzQWxpZ25tZW50LmxlZnQgPSBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzVmVydGljYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0FsaWdubWVudC50b3AgPSB0b3BfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5faXNJbW1lZGlhdGVEZXNjZW5kYW50T2Zab25lID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE93bmVyWm9uZShlbGVtZW50KSA9PT0gdGhpcy5fcm9vdC5jdXJyZW50O1xuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fZ2V0T3duZXJab25lID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIHBhcmVudEVsZW1lbnQgPSBnZXRQYXJlbnQoZWxlbWVudCwgQUxMT1dfVklSVFVBTF9FTEVNRU5UUyk7XG4gICAgICAgIHdoaWxlIChwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQgIT09IHRoaXMuX3Jvb3QuY3VycmVudCAmJiBwYXJlbnRFbGVtZW50ICE9PSB0aGlzLl9nZXREb2N1bWVudCgpLmJvZHkpIHtcbiAgICAgICAgICAgIGlmIChpc0VsZW1lbnRGb2N1c1pvbmUocGFyZW50RWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQgPSBnZXRQYXJlbnQocGFyZW50RWxlbWVudCwgQUxMT1dfVklSVFVBTF9FTEVNRU5UUyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQ7XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl91cGRhdGVUYWJJbmRleGVzID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9hY3RpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnByb3BzLmRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLnByb3BzLmRlZmF1bHRUYWJiYWJsZUVsZW1lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsZW1lbnQgPSB0aGlzLnByb3BzLmRlZmF1bHRUYWJiYWJsZUVsZW1lbnQodGhpcy5fcm9vdC5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVsZW1lbnQgJiYgdGhpcy5fcm9vdC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLl9yb290LmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlRWxlbWVudCAmJiAhZWxlbWVudENvbnRhaW5zKGVsZW1lbnQsIHRoaXMuX2FjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgYWN0aXZlIGVsZW1lbnQgY2hhbmdlcyBzdGF0ZSB0byBkaXNhYmxlZCwgc2V0IGl0IHRvIG51bGwuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgd2UgbG9zZSBrZXlib2FyZCBhY2Nlc3NpYmlsaXR5IHRvIG90aGVyIGVsZW1lbnRzIGluIGZvY3VzIHpvbmUuXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbGVtZW50ICYmICFpc0VsZW1lbnRUYWJiYWJsZSh0aGlzLl9hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSBlbGVtZW50ICYmIGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGZvciAodmFyIGNoaWxkSW5kZXggPSAwOyBjaGlsZE5vZGVzICYmIGNoaWxkSW5kZXggPCBjaGlsZE5vZGVzLmxlbmd0aDsgY2hpbGRJbmRleCsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZE5vZGVzW2NoaWxkSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRGb2N1c1pvbmUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGl0ZW0gaXMgZXhwbGljaXRseSBzZXQgdG8gbm90IGJlIGZvY3VzYWJsZSB0aGVuIFRBQklOREVYIG5lZWRzIHRvIGJlIHNldCB0byAtMS5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0QXR0cmlidXRlICYmIGNoaWxkLmdldEF0dHJpYnV0ZShJU19GT0NVU0FCTEVfQVRUUklCVVRFKSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoVEFCSU5ERVgsICctMScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNFbGVtZW50VGFiYmFibGUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoVEFCSU5ERVgsICctMScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9pc0lubmVyWm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKCghdGhpcy5fYWN0aXZlRWxlbWVudCAmJiAhdGhpcy5fZGVmYXVsdEZvY3VzRWxlbWVudCkgfHwgdGhpcy5fYWN0aXZlRWxlbWVudCA9PT0gY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50ID0gY2hpbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0QXR0cmlidXRlKFRBQklOREVYKSAhPT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKFRBQklOREVYLCAnMCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmdldEF0dHJpYnV0ZShUQUJJTkRFWCkgIT09ICctMScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZShUQUJJTkRFWCwgJy0xJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ3N2ZycgJiYgY2hpbGQuZ2V0QXR0cmlidXRlKCdmb2N1c2FibGUnKSAhPT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBEaXNndXN0aW5nIElFIGhhY2suIFNhZCBmYWNlLlxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2ZvY3VzYWJsZScsICdmYWxzZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmdldEF0dHJpYnV0ZShJU19GT0NVU0FCTEVfQVRUUklCVVRFKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0lubmVyWm9uZSAmJlxuICAgICAgICAgICAgICAgICAgICAoKCF0aGlzLl9hY3RpdmVFbGVtZW50ICYmICF0aGlzLl9kZWZhdWx0Rm9jdXNFbGVtZW50KSB8fCB0aGlzLl9hY3RpdmVFbGVtZW50ID09PSBjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVmYXVsdEZvY3VzRWxlbWVudCA9IGNoaWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuZ2V0QXR0cmlidXRlKFRBQklOREVYKSAhPT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoVEFCSU5ERVgsICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQuZ2V0QXR0cmlidXRlKFRBQklOREVYKSAhPT0gJy0xJykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoVEFCSU5ERVgsICctMScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRhYkluZGV4ZXMoY2hpbGQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl9pc0NvbnRlbnRFZGl0YWJsZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykgPT09ICd0cnVlJztcbiAgICB9O1xuICAgIEZvY3VzWm9uZS5wcm90b3R5cGUuX2lzRWxlbWVudElucHV0ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiZcbiAgICAgICAgICAgIGVsZW1lbnQudGFnTmFtZSAmJlxuICAgICAgICAgICAgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnIHx8IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAndGV4dGFyZWEnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fc2hvdWxkSW5wdXRMb3NlRm9jdXMgPSBmdW5jdGlvbiAoZWxlbWVudCwgaXNGb3J3YXJkKSB7XG4gICAgICAgIC8vIElmIGEgdGFiIHdhcyB1c2VkLCB3ZSB3YW50IHRvIGZvY3VzIG9uIHRoZSBuZXh0IGVsZW1lbnQuXG4gICAgICAgIGlmICghdGhpcy5fcHJvY2Vzc2luZ1RhYktleSAmJlxuICAgICAgICAgICAgZWxlbWVudCAmJlxuICAgICAgICAgICAgZWxlbWVudC50eXBlICYmXG4gICAgICAgICAgICBBTExPV0VEX0lOUFVUX1RZUEVTLmluZGV4T2YoZWxlbWVudC50eXBlLnRvTG93ZXJDYXNlKCkpID4gLTEpIHtcbiAgICAgICAgICAgIHZhciBzZWxlY3Rpb25TdGFydCA9IGVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICB2YXIgc2VsZWN0aW9uRW5kID0gZWxlbWVudC5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgICB2YXIgaXNSYW5nZVNlbGVjdGVkID0gc2VsZWN0aW9uU3RhcnQgIT09IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgICAgIHZhciBpbnB1dFZhbHVlID0gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBpc1JlYWRvbmx5ID0gZWxlbWVudC5yZWFkT25seTtcbiAgICAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBsb3NlIGZvY3VzIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6XG4gICAgICAgICAgICAvLyAxLiBUaGVyZSBpcyByYW5nZSBzZWxlY3RlZC5cbiAgICAgICAgICAgIC8vIDIuIFdoZW4gc2VsZWN0aW9uIHN0YXJ0IGlzIGxhcmdlciB0aGFuIDAgYW5kIGl0IGlzIGJhY2t3YXJkIGFuZCBub3QgcmVhZE9ubHkuXG4gICAgICAgICAgICAvLyAzLiB3aGVuIHNlbGVjdGlvbiBzdGFydCBpcyBub3QgdGhlIGVuZCBvZiBsZW5ndGgsIGl0IGlzIGZvcndhcmQgYW5kIG5vdCByZWFkT25seS5cbiAgICAgICAgICAgIC8vIDQuIFdlIHByZXNzIGFueSBvZiB0aGUgYXJyb3cga2V5cyB3aGVuIG91ciBoYW5kbGVUYWJLZXkgaXNuJ3Qgbm9uZSBvciB1bmRlZmluZWQgKG9ubHkgbG9zaW5nIGZvY3VzIGlmIHdlIGhpdFxuICAgICAgICAgICAgLy8gdGFiKSBhbmQgaWYgc2hvdWxkSW5wdXRMb3NlRm9jdXNPbkFycm93S2V5IGlzIGRlZmluZWQsIGlmIHNjZW5hcmlvIHByZWZlcnMgdG8gbm90IGxvb3NlIHRoZSBmb2N1cyB3aGljaCBpc1xuICAgICAgICAgICAgLy8gZGV0ZXJtaW5lZCBieSBjYWxsaW5nIHRoZSBjYWxsYmFjayBzaG91bGRJbnB1dExvc2VGb2N1c09uQXJyb3dLZXlcbiAgICAgICAgICAgIGlmIChpc1JhbmdlU2VsZWN0ZWQgfHxcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uU3RhcnQgPiAwICYmICFpc0ZvcndhcmQgJiYgIWlzUmVhZG9ubHkpIHx8XG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvblN0YXJ0ICE9PSBpbnB1dFZhbHVlLmxlbmd0aCAmJiBpc0ZvcndhcmQgJiYgIWlzUmVhZG9ubHkpIHx8XG4gICAgICAgICAgICAgICAgKCEhdGhpcy5wcm9wcy5oYW5kbGVUYWJLZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgISh0aGlzLnByb3BzLnNob3VsZElucHV0TG9zZUZvY3VzT25BcnJvd0tleSAmJiB0aGlzLnByb3BzLnNob3VsZElucHV0TG9zZUZvY3VzT25BcnJvd0tleShlbGVtZW50KSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fc2hvdWxkV3JhcEZvY3VzID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5vV3JhcERhdGFBdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY2hlY2tGb3JOb1dyYXAgPyBzaG91bGRXcmFwRm9jdXMoZWxlbWVudCwgbm9XcmFwRGF0YUF0dHJpYnV0ZSkgOiB0cnVlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgRm9jdXNab25lIHRocm91Z2ggYSBSZWFjdCBwb3J0YWwuXG4gICAgICovXG4gICAgRm9jdXNab25lLnByb3RvdHlwZS5fcG9ydGFsQ29udGFpbnNFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgISF0aGlzLl9yb290LmN1cnJlbnQgJiYgcG9ydGFsQ29udGFpbnNFbGVtZW50KGVsZW1lbnQsIHRoaXMuX3Jvb3QuY3VycmVudCk7XG4gICAgfTtcbiAgICBGb2N1c1pvbmUucHJvdG90eXBlLl9nZXREb2N1bWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGdldERvY3VtZW50KHRoaXMuX3Jvb3QuY3VycmVudCk7XG4gICAgfTtcbiAgICBGb2N1c1pvbmUuZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBpc0NpcmN1bGFyTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgIGRpcmVjdGlvbjogRm9jdXNab25lRGlyZWN0aW9uLmJpZGlyZWN0aW9uYWwsXG4gICAgICAgIHNob3VsZFJhaXNlQ2xpY2tzOiB0cnVlLFxuICAgIH07XG4gICAgcmV0dXJuIEZvY3VzWm9uZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgeyBGb2N1c1pvbmUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUZvY3VzWm9uZS5qcy5tYXAiLCJleHBvcnQgeyBEaXJlY3Rpb25hbEhpbnQgfSBmcm9tICcuLi8uLi9jb21tb24vRGlyZWN0aW9uYWxIaW50Jztcbi8qKlxuICoge0Bkb2NDYXRlZ29yeSBDb250ZXh0dWFsTWVudX1cbiAqL1xuZXhwb3J0IHZhciBDb250ZXh0dWFsTWVudUl0ZW1UeXBlO1xuKGZ1bmN0aW9uIChDb250ZXh0dWFsTWVudUl0ZW1UeXBlKSB7XG4gICAgQ29udGV4dHVhbE1lbnVJdGVtVHlwZVtDb250ZXh0dWFsTWVudUl0ZW1UeXBlW1wiTm9ybWFsXCJdID0gMF0gPSBcIk5vcm1hbFwiO1xuICAgIENvbnRleHR1YWxNZW51SXRlbVR5cGVbQ29udGV4dHVhbE1lbnVJdGVtVHlwZVtcIkRpdmlkZXJcIl0gPSAxXSA9IFwiRGl2aWRlclwiO1xuICAgIENvbnRleHR1YWxNZW51SXRlbVR5cGVbQ29udGV4dHVhbE1lbnVJdGVtVHlwZVtcIkhlYWRlclwiXSA9IDJdID0gXCJIZWFkZXJcIjtcbiAgICBDb250ZXh0dWFsTWVudUl0ZW1UeXBlW0NvbnRleHR1YWxNZW51SXRlbVR5cGVbXCJTZWN0aW9uXCJdID0gM10gPSBcIlNlY3Rpb25cIjtcbn0pKENvbnRleHR1YWxNZW51SXRlbVR5cGUgfHwgKENvbnRleHR1YWxNZW51SXRlbVR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29udGV4dHVhbE1lbnUudHlwZXMuanMubWFwIiwiLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBlZmZlY3RpdmUgY2hlY2tlZCBzdGF0ZSBvZiBhIG1lbnUgaXRlbS5cbiAqXG4gKiBAcGFyYW0gaXRlbSB7SUNvbnRleHR1YWxNZW51SXRlbX0gdG8gZ2V0IHRoZSBjaGVjayBzdGF0ZSBvZi5cbiAqIEByZXR1cm5zIHt0cnVlfSBpZiB0aGUgaXRlbSBpcyBjaGVja2VkLlxuICogQHJldHVybnMge2ZhbHNlfSBpZiB0aGUgaXRlbSBpcyB1bmNoZWNrZWQuXG4gKiBAcmV0dXJucyB7bnVsbH0gaWYgdGhlIGl0ZW0gaXMgbm90IGNoZWNrYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElzQ2hlY2tlZChpdGVtKSB7XG4gICAgaWYgKGl0ZW0uY2FuQ2hlY2spIHtcbiAgICAgICAgcmV0dXJuICEhKGl0ZW0uaXNDaGVja2VkIHx8IGl0ZW0uY2hlY2tlZCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaXRlbS5pc0NoZWNrZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gaXRlbS5pc0NoZWNrZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaXRlbS5jaGVja2VkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2hlY2tlZDtcbiAgICB9XG4gICAgLy8gSXRlbSBpcyBub3QgY2hlY2thYmxlLlxuICAgIHJldHVybiBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1Ym1lbnUoaXRlbSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHJldHVybiAhIShpdGVtLnN1Yk1lbnVQcm9wcyB8fCBpdGVtLml0ZW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0l0ZW1EaXNhYmxlZChpdGVtKSB7XG4gICAgcmV0dXJuICEhKGl0ZW0uaXNEaXNhYmxlZCB8fCBpdGVtLmRpc2FibGVkKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SXRlbUFyaWFSb2xlKGl0ZW0pIHtcbiAgICB2YXIgaXNDaGVja2VkID0gZ2V0SXNDaGVja2VkKGl0ZW0pO1xuICAgIHZhciBjYW5DaGVjayA9IGlzQ2hlY2tlZCAhPT0gbnVsbDtcbiAgICByZXR1cm4gY2FuQ2hlY2sgPyAnbWVudWl0ZW1jaGVja2JveCcgOiAnbWVudWl0ZW0nO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29udGV4dHVhbE1lbnVVdGlsaXR5LmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGhhc1N1Ym1lbnUsIGdldElzQ2hlY2tlZCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb250ZXh0dWFsTWVudS9pbmRleCc7XG5pbXBvcnQgeyBnZXRSVEwsIGluaXRpYWxpemVDb21wb25lbnRSZWYgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL0ljb24nO1xudmFyIGRlZmF1bHRJY29uUmVuZGVyZXIgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaXRlbSA9IHByb3BzLml0ZW0sIGNsYXNzTmFtZXMgPSBwcm9wcy5jbGFzc05hbWVzO1xuICAgIHZhciBpY29uUHJvcHMgPSBpdGVtLmljb25Qcm9wcztcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCBfX2Fzc2lnbih7fSwgaWNvblByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5pY29uIH0pKTtcbn07XG52YXIgcmVuZGVySXRlbUljb24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaXRlbSA9IHByb3BzLml0ZW0sIGhhc0ljb25zID0gcHJvcHMuaGFzSWNvbnM7XG4gICAgaWYgKCFoYXNJY29ucykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0ub25SZW5kZXJJY29uKSB7XG4gICAgICAgIHJldHVybiBpdGVtLm9uUmVuZGVySWNvbihwcm9wcywgZGVmYXVsdEljb25SZW5kZXJlcik7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0SWNvblJlbmRlcmVyKHByb3BzKTtcbn07XG52YXIgcmVuZGVyQ2hlY2tNYXJrSWNvbiA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBvbkNoZWNrbWFya0NsaWNrID0gX2Eub25DaGVja21hcmtDbGljaywgaXRlbSA9IF9hLml0ZW0sIGNsYXNzTmFtZXMgPSBfYS5jbGFzc05hbWVzO1xuICAgIHZhciBpc0l0ZW1DaGVja2VkID0gZ2V0SXNDaGVja2VkKGl0ZW0pO1xuICAgIGlmIChvbkNoZWNrbWFya0NsaWNrKSB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaXRlbSBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjaGVja21hcmsgY2xpY2sgY2FsbGJhY2suXG4gICAgICAgIHZhciBvbkNsaWNrID0gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIG9uQ2hlY2ttYXJrQ2xpY2soaXRlbSwgZSk7IH07XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCB7IGljb25OYW1lOiBpdGVtLmNhbkNoZWNrICE9PSBmYWxzZSAmJiBpc0l0ZW1DaGVja2VkID8gJ0NoZWNrTWFyaycgOiAnJywgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmNoZWNrbWFya0ljb24sIFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1uby1iaW5kXG4gICAgICAgICAgICBvbkNsaWNrOiBvbkNsaWNrIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xudmFyIHJlbmRlckl0ZW1OYW1lID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGl0ZW0gPSBfYS5pdGVtLCBjbGFzc05hbWVzID0gX2EuY2xhc3NOYW1lcztcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbiAqL1xuICAgIGlmIChpdGVtLnRleHQgfHwgaXRlbS5uYW1lKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5sYWJlbCB9LCBpdGVtLnRleHQgfHwgaXRlbS5uYW1lKTtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbiAqL1xuICAgIHJldHVybiBudWxsO1xufTtcbnZhciByZW5kZXJTZWNvbmRhcnlUZXh0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGl0ZW0gPSBfYS5pdGVtLCBjbGFzc05hbWVzID0gX2EuY2xhc3NOYW1lcztcbiAgICBpZiAoaXRlbS5zZWNvbmRhcnlUZXh0KSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zZWNvbmRhcnlUZXh0IH0sIGl0ZW0uc2Vjb25kYXJ5VGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbnZhciByZW5kZXJTdWJNZW51SWNvbiA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBpdGVtID0gX2EuaXRlbSwgY2xhc3NOYW1lcyA9IF9hLmNsYXNzTmFtZXMsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgaWYgKGhhc1N1Ym1lbnUoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEljb24sIF9fYXNzaWduKHsgaWNvbk5hbWU6IGdldFJUTCh0aGVtZSkgPyAnQ2hldnJvbkxlZnQnIDogJ0NoZXZyb25SaWdodCcgfSwgaXRlbS5zdWJtZW51SWNvblByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zdWJNZW51SWNvbiB9KSkpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG52YXIgQ29udGV4dHVhbE1lbnVJdGVtQmFzZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29udGV4dHVhbE1lbnVJdGVtQmFzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb250ZXh0dWFsTWVudUl0ZW1CYXNlKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5vcGVuU3ViTWVudSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgb3BlblN1Yk1lbnUgPSBfYS5vcGVuU3ViTWVudSwgZ2V0U3VibWVudVRhcmdldCA9IF9hLmdldFN1Ym1lbnVUYXJnZXQ7XG4gICAgICAgICAgICBpZiAoZ2V0U3VibWVudVRhcmdldCkge1xuICAgICAgICAgICAgICAgIHZhciBzdWJtZW51VGFyZ2V0ID0gZ2V0U3VibWVudVRhcmdldCgpO1xuICAgICAgICAgICAgICAgIGlmIChoYXNTdWJtZW51KGl0ZW0pICYmIG9wZW5TdWJNZW51ICYmIHN1Ym1lbnVUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BlblN1Yk1lbnUoaXRlbSwgc3VibWVudVRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5kaXNtaXNzU3ViTWVudSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgZGlzbWlzc1N1Yk1lbnUgPSBfYS5kaXNtaXNzU3ViTWVudTtcbiAgICAgICAgICAgIGlmIChoYXNTdWJtZW51KGl0ZW0pICYmIGRpc21pc3NTdWJNZW51KSB7XG4gICAgICAgICAgICAgICAgZGlzbWlzc1N1Yk1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuZGlzbWlzc01lbnUgPSBmdW5jdGlvbiAoZGlzbWlzc0FsbCkge1xuICAgICAgICAgICAgdmFyIGRpc21pc3NNZW51ID0gX3RoaXMucHJvcHMuZGlzbWlzc01lbnU7XG4gICAgICAgICAgICBpZiAoZGlzbWlzc01lbnUpIHtcbiAgICAgICAgICAgICAgICBkaXNtaXNzTWVudSh1bmRlZmluZWQgLyogZXYgKi8sIGRpc21pc3NBbGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbml0aWFsaXplQ29tcG9uZW50UmVmKF90aGlzKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb250ZXh0dWFsTWVudUl0ZW1CYXNlLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBjbGFzc05hbWVzID0gX2EuY2xhc3NOYW1lcztcbiAgICAgICAgdmFyIHJlbmRlckNvbnRlbnQgPSBpdGVtLm9uUmVuZGVyQ29udGVudCB8fCB0aGlzLl9yZW5kZXJMYXlvdXQ7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogaXRlbS5zcGxpdCA/IGNsYXNzTmFtZXMubGlua0NvbnRlbnRNZW51IDogY2xhc3NOYW1lcy5saW5rQ29udGVudCB9LCByZW5kZXJDb250ZW50KHRoaXMucHJvcHMsIHtcbiAgICAgICAgICAgIHJlbmRlckNoZWNrTWFya0ljb246IHJlbmRlckNoZWNrTWFya0ljb24sXG4gICAgICAgICAgICByZW5kZXJJdGVtSWNvbjogcmVuZGVySXRlbUljb24sXG4gICAgICAgICAgICByZW5kZXJJdGVtTmFtZTogcmVuZGVySXRlbU5hbWUsXG4gICAgICAgICAgICByZW5kZXJTZWNvbmRhcnlUZXh0OiByZW5kZXJTZWNvbmRhcnlUZXh0LFxuICAgICAgICAgICAgcmVuZGVyU3ViTWVudUljb246IHJlbmRlclN1Yk1lbnVJY29uLFxuICAgICAgICB9KSkpO1xuICAgIH07XG4gICAgQ29udGV4dHVhbE1lbnVJdGVtQmFzZS5wcm90b3R5cGUuX3JlbmRlckxheW91dCA9IGZ1bmN0aW9uIChwcm9wcywgZGVmYXVsdFJlbmRlcnMpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgZGVmYXVsdFJlbmRlcnMucmVuZGVyQ2hlY2tNYXJrSWNvbihwcm9wcyksXG4gICAgICAgICAgICBkZWZhdWx0UmVuZGVycy5yZW5kZXJJdGVtSWNvbihwcm9wcyksXG4gICAgICAgICAgICBkZWZhdWx0UmVuZGVycy5yZW5kZXJJdGVtTmFtZShwcm9wcyksXG4gICAgICAgICAgICBkZWZhdWx0UmVuZGVycy5yZW5kZXJTZWNvbmRhcnlUZXh0KHByb3BzKSxcbiAgICAgICAgICAgIGRlZmF1bHRSZW5kZXJzLnJlbmRlclN1Yk1lbnVJY29uKHByb3BzKSkpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRleHR1YWxNZW51SXRlbUJhc2U7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0IHsgQ29udGV4dHVhbE1lbnVJdGVtQmFzZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29udGV4dHVhbE1lbnVJdGVtLmJhc2UuanMubWFwIiwiaW1wb3J0IHsgbWVtb2l6ZUZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IG1lcmdlU3R5bGVTZXRzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBnZXRTdHlsZXMgZXhwb3J0ZWQgZnJvbSBWZXJ0aWNhbERpdmlkZXIuc3R5bGVzLnRzXG4gKi9cbmV4cG9ydCB2YXIgZ2V0RGl2aWRlckNsYXNzTmFtZXMgPSBtZW1vaXplRnVuY3Rpb24oXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbmZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHJldHVybiBtZXJnZVN0eWxlU2V0cyh7XG4gICAgICAgIHdyYXBwZXI6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgICBkaXZpZGVyOiB7XG4gICAgICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWxUZXJ0aWFyeUFsdCxcbiAgICAgICAgfSxcbiAgICB9KTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVydGljYWxEaXZpZGVyLmNsYXNzTmFtZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGNvbmNhdFN0eWxlU2V0cywgZ2V0Rm9jdXNTdHlsZSwgSGlnaENvbnRyYXN0U2VsZWN0b3IsIGdldFNjcmVlblNlbGVjdG9yLCBTY3JlZW5XaWR0aE1heE1lZGl1bSwgSWNvbkZvbnRTaXplcywgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSwgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5leHBvcnQgdmFyIENPTlRFWFRVQUxfTUVOVV9JVEVNX0hFSUdIVCA9IDM2O1xudmFyIE1lZGl1bVNjcmVlblNlbGVjdG9yID0gZ2V0U2NyZWVuU2VsZWN0b3IoMCwgU2NyZWVuV2lkdGhNYXhNZWRpdW0pO1xuZXhwb3J0IHZhciBnZXRNZW51SXRlbVN0eWxlcyA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAodGhlbWUpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgIHZhciBzZW1hbnRpY0NvbG9ycyA9IHRoZW1lLnNlbWFudGljQ29sb3JzLCBmb250cyA9IHRoZW1lLmZvbnRzLCBwYWxldHRlID0gdGhlbWUucGFsZXR0ZTtcbiAgICB2YXIgQ29udGV4dHVhbE1lbnVJdGVtQmFja2dyb3VuZEhvdmVyQ29sb3IgPSBzZW1hbnRpY0NvbG9ycy5tZW51SXRlbUJhY2tncm91bmRIb3ZlcmVkO1xuICAgIHZhciBDb250ZXh0dWFsTWVudUl0ZW1UZXh0SG92ZXJDb2xvciA9IHNlbWFudGljQ29sb3JzLm1lbnVJdGVtVGV4dEhvdmVyZWQ7XG4gICAgdmFyIENvbnRleHR1YWxNZW51SXRlbUJhY2tncm91bmRTZWxlY3RlZENvbG9yID0gc2VtYW50aWNDb2xvcnMubWVudUl0ZW1CYWNrZ3JvdW5kUHJlc3NlZDtcbiAgICB2YXIgQ29udGV4dHVhbE1lbnVJdGVtRGl2aWRlckNvbG9yID0gc2VtYW50aWNDb2xvcnMuYm9keURpdmlkZXI7XG4gICAgdmFyIG1lbnVJdGVtU3R5bGVzID0ge1xuICAgICAgICBpdGVtOiBbXG4gICAgICAgICAgICBmb250cy5tZWRpdW0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmJvZHlUZXh0LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGl2aWRlcjoge1xuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbnRleHR1YWxNZW51SXRlbURpdmlkZXJDb2xvcixcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB9LFxuICAgICAgICByb290OiBbXG4gICAgICAgICAgICBnZXRGb2N1c1N0eWxlKHRoZW1lKSxcbiAgICAgICAgICAgIGZvbnRzLm1lZGl1bSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuYm9keVRleHQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBDT05URVhUVUFMX01FTlVfSVRFTV9IRUlHSFQsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogQ09OVEVYVFVBTF9NRU5VX0lURU1fSEVJR0hULFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzBweCA4cHggMCA0cHgnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcm9vdERpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCb2R5VGV4dCxcbiAgICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVuc3VyZSBkaXNhYmxlZCB0ZXh0IGxvb2tzIGRpZmZlcmVudCB0aGFuIGVuYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RIb3ZlcmVkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbnRleHR1YWxNZW51SXRlbUJhY2tncm91bmRIb3ZlckNvbG9yLFxuICAgICAgICAgICAgY29sb3I6IENvbnRleHR1YWxNZW51SXRlbVRleHRIb3ZlckNvbG9yLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgJy5tcy1Db250ZXh0dWFsTWVudS1pY29uJzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS50aGVtZURhcmtBbHQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLm1zLUNvbnRleHR1YWxNZW51LXN1Ym1lbnVJY29uJzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS5uZXV0cmFsUHJpbWFyeSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdEZvY3VzZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFsZXR0ZS53aGl0ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdENoZWNrZWQ6IHtcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICcubXMtQ29udGV4dHVhbE1lbnUtY2hlY2ttYXJrSWNvbic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUubmV1dHJhbFByaW1hcnksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RQcmVzc2VkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbnRleHR1YWxNZW51SXRlbUJhY2tncm91bmRTZWxlY3RlZENvbG9yLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgJy5tcy1Db250ZXh0dWFsTWVudS1pY29uJzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS50aGVtZURhcmssXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLm1zLUNvbnRleHR1YWxNZW51LXN1Ym1lbnVJY29uJzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS5uZXV0cmFsUHJpbWFyeSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdEV4cGFuZGVkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IENvbnRleHR1YWxNZW51SXRlbUJhY2tncm91bmRTZWxlY3RlZENvbG9yLFxuICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmJvZHlUZXh0Q2hlY2tlZCxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9iID0ge1xuICAgICAgICAgICAgICAgICAgICAnLm1zLUNvbnRleHR1YWxNZW51LXN1Ym1lbnVJY29uJzogKF9jID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBfY1tIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWNvbnMgaW5zaWRlIG9mIGFuY2hvciB0YWdzIGFyZSBub3QgcHJvcGVybHkgaW5oZXJpdGluZyBjb2xvciBpbiBoaWdoIGNvbnRyYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfYylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHt9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgIF9iKSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlua0NvbnRlbnQ6IHtcbiAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICAgIH0sXG4gICAgICAgIGFuY2hvckxpbms6IHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICcwcHggOHB4IDAgNHB4JyxcbiAgICAgICAgICAgIHRleHRSZW5kZXJpbmc6ICdhdXRvJyxcbiAgICAgICAgICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHdvcmRTcGFjaW5nOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHRleHRUcmFuc2Zvcm06ICdub25lJyxcbiAgICAgICAgICAgIHRleHRJbmRlbnQ6ICcwcHgnLFxuICAgICAgICAgICAgdGV4dFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICB9LFxuICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgbWFyZ2luOiAnMCA0cHgnLFxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgIGZsZXhHcm93OiAnMScsXG4gICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgfSxcbiAgICAgICAgc2Vjb25kYXJ5VGV4dDoge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUubmV1dHJhbFNlY29uZGFyeSxcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiAnMjBweCcsXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXG4gICAgICAgIH0sXG4gICAgICAgIGljb246IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnMXB4JyxcbiAgICAgICAgICAgIG1heEhlaWdodDogQ09OVEVYVFVBTF9NRU5VX0lURU1fSEVJR0hULFxuICAgICAgICAgICAgZm9udFNpemU6IEljb25Gb250U2l6ZXMubWVkaXVtLFxuICAgICAgICAgICAgd2lkdGg6IEljb25Gb250U2l6ZXMubWVkaXVtLFxuICAgICAgICAgICAgbWFyZ2luOiAnMCA0cHgnLFxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgICAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfZCA9IHt9LFxuICAgICAgICAgICAgICAgIF9kW01lZGl1bVNjcmVlblNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IEljb25Gb250U2l6ZXMubGFyZ2UsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBJY29uRm9udFNpemVzLmxhcmdlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2QpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uQ29sb3I6IHtcbiAgICAgICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5tZW51SWNvbixcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCb2R5VGV4dCxcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2ttYXJrSWNvbjoge1xuICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmJvZHlTdWJ0ZXh0LFxuICAgICAgICB9LFxuICAgICAgICBzdWJNZW51SWNvbjoge1xuICAgICAgICAgICAgaGVpZ2h0OiBDT05URVhUVUFMX01FTlVfSVRFTV9IRUlHSFQsXG4gICAgICAgICAgICBsaW5lSGVpZ2h0OiBDT05URVhUVUFMX01FTlVfSVRFTV9IRUlHSFQsXG4gICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS5uZXV0cmFsU2Vjb25kYXJ5LFxuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgICAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgICAgICAgICBmb250U2l6ZTogSWNvbkZvbnRTaXplcy5zbWFsbCxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9lID0ge1xuICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUubmV1dHJhbFByaW1hcnksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICc6YWN0aXZlJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUubmV1dHJhbFByaW1hcnksXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9lW01lZGl1bVNjcmVlblNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IEljb25Gb250U2l6ZXMubWVkaXVtLCAvLyAxNnB4XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfZSksXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uRmxleENvbnRhaW5lcjogW1xuICAgICAgICAgICAgZ2V0Rm9jdXNTdHlsZSh0aGVtZSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogQ09OVEVYVFVBTF9NRU5VX0lURU1fSEVJR0hULFxuICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnbm93cmFwJyxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICB9O1xuICAgIHJldHVybiBjb25jYXRTdHlsZVNldHMobWVudUl0ZW1TdHlsZXMpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudS5jbnN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgeyBnZXREaXZpZGVyQ2xhc3NOYW1lcyB9IGZyb20gJy4uL0RpdmlkZXIvVmVydGljYWxEaXZpZGVyLmNsYXNzTmFtZXMnO1xuaW1wb3J0IHsgZ2V0TWVudUl0ZW1TdHlsZXMgfSBmcm9tICcuL0NvbnRleHR1YWxNZW51LmNuc3R5bGVzJztcbmltcG9ydCB7IG1lcmdlU3R5bGVTZXRzLCBnZXRHbG9iYWxDbGFzc05hbWVzLCBnZXRTY3JlZW5TZWxlY3RvciwgU2NyZWVuV2lkdGhNYXhNZWRpdW0sIGhpZGRlbkNvbnRlbnRTdHlsZSwgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiwgSXNGb2N1c1Zpc2libGVDbGFzc05hbWUgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xudmFyIENPTlRFWFRVQUxfU1BMSVRfTUVOVV9NSU5XSURUSCA9ICcyOHB4JztcbnZhciBNZWRpdW1TY3JlZW5TZWxlY3RvciA9IGdldFNjcmVlblNlbGVjdG9yKDAsIFNjcmVlbldpZHRoTWF4TWVkaXVtKTtcbmV4cG9ydCB2YXIgZ2V0U3BsaXRCdXR0b25WZXJ0aWNhbERpdmlkZXJDbGFzc05hbWVzID0gbWVtb2l6ZUZ1bmN0aW9uKFxuLyogZXNsaW50LWRpc2FibGUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24gKi9cbmZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gbWVyZ2VTdHlsZVNldHMoZ2V0RGl2aWRlckNsYXNzTmFtZXModGhlbWUpLCB7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24gKi9cbiAgICAgICAgd3JhcHBlcjoge1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICByaWdodDogMjgsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfYSA9IHt9LFxuICAgICAgICAgICAgICAgIF9hW01lZGl1bVNjcmVlblNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDMyLCAvLyBmb250U2l6ZSBvZiB0aGUgaWNvbiBpbmNyZWFzZWQgZnJvbSAxMnB4IHRvIDE2cHhcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9hKSxcbiAgICAgICAgfSxcbiAgICAgICAgZGl2aWRlcjoge1xuICAgICAgICAgICAgaGVpZ2h0OiAxNixcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICB9LFxuICAgIH0pO1xufSk7XG52YXIgR2xvYmFsQ2xhc3NOYW1lcyA9IHtcbiAgICBpdGVtOiAnbXMtQ29udGV4dHVhbE1lbnUtaXRlbScsXG4gICAgZGl2aWRlcjogJ21zLUNvbnRleHR1YWxNZW51LWRpdmlkZXInLFxuICAgIHJvb3Q6ICdtcy1Db250ZXh0dWFsTWVudS1saW5rJyxcbiAgICBpc0NoZWNrZWQ6ICdpcy1jaGVja2VkJyxcbiAgICBpc0V4cGFuZGVkOiAnaXMtZXhwYW5kZWQnLFxuICAgIGlzRGlzYWJsZWQ6ICdpcy1kaXNhYmxlZCcsXG4gICAgbGlua0NvbnRlbnQ6ICdtcy1Db250ZXh0dWFsTWVudS1saW5rQ29udGVudCcsXG4gICAgbGlua0NvbnRlbnRNZW51OiAnbXMtQ29udGV4dHVhbE1lbnUtbGlua0NvbnRlbnQnLFxuICAgIGljb246ICdtcy1Db250ZXh0dWFsTWVudS1pY29uJyxcbiAgICBpY29uQ29sb3I6ICdtcy1Db250ZXh0dWFsTWVudS1pY29uQ29sb3InLFxuICAgIGNoZWNrbWFya0ljb246ICdtcy1Db250ZXh0dWFsTWVudS1jaGVja21hcmtJY29uJyxcbiAgICBzdWJNZW51SWNvbjogJ21zLUNvbnRleHR1YWxNZW51LXN1Ym1lbnVJY29uJyxcbiAgICBsYWJlbDogJ21zLUNvbnRleHR1YWxNZW51LWl0ZW1UZXh0JyxcbiAgICBzZWNvbmRhcnlUZXh0OiAnbXMtQ29udGV4dHVhbE1lbnUtc2Vjb25kYXJ5VGV4dCcsXG4gICAgc3BsaXRNZW51OiAnbXMtQ29udGV4dHVhbE1lbnUtc3BsaXRNZW51JyxcbiAgICBzY3JlZW5SZWFkZXJUZXh0OiAnbXMtQ29udGV4dHVhbE1lbnUtc2NyZWVuUmVhZGVyVGV4dCcsXG59O1xuLyoqXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gXFw+PSA3LjAuXG4gKiBUaGlzIGlzIGEgcGFja2FnZS1pbnRlcm5hbCBtZXRob2QgdGhhdCBoYXMgYmVlbiBkZXBlbmRlZCBvbi5cbiAqIEl0IGlzIGJlaW5nIGtlcHQgaW4gdGhpcyBmb3JtIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAqIEBpbnRlcm5hbFxuICovXG4vLyBUT0RPOiBBdWRpdCBwZXJmLiBpbXBhY3Qgb2YgYW5kIHBvdGVudGlhbGx5IHJlbW92ZSBtZW1vaXplRnVuY3Rpb24uXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2ZsdWVudHVpL2lzc3Vlcy81NTM0XG5leHBvcnQgdmFyIGdldEl0ZW1DbGFzc05hbWVzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uICh0aGVtZSwgZGlzYWJsZWQsIGV4cGFuZGVkLCBjaGVja2VkLCBpc0FuY2hvckxpbmssIGtub3duSWNvbiwgaXRlbUNsYXNzTmFtZSwgZGl2aWRlckNsYXNzTmFtZSwgaWNvbkNsYXNzTmFtZSwgc3ViTWVudUNsYXNzTmFtZSwgcHJpbWFyeURpc2FibGVkLCBjbGFzc05hbWUpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgdmFyIHN0eWxlcyA9IGdldE1lbnVJdGVtU3R5bGVzKHRoZW1lKTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoR2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHJldHVybiBtZXJnZVN0eWxlU2V0cyh7XG4gICAgICAgIGl0ZW06IFtjbGFzc05hbWVzLml0ZW0sIHN0eWxlcy5pdGVtLCBpdGVtQ2xhc3NOYW1lXSxcbiAgICAgICAgZGl2aWRlcjogW2NsYXNzTmFtZXMuZGl2aWRlciwgc3R5bGVzLmRpdmlkZXIsIGRpdmlkZXJDbGFzc05hbWVdLFxuICAgICAgICByb290OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnJvb3QsXG4gICAgICAgICAgICBzdHlsZXMucm9vdCxcbiAgICAgICAgICAgIGNoZWNrZWQgJiYgW2NsYXNzTmFtZXMuaXNDaGVja2VkLCBzdHlsZXMucm9vdENoZWNrZWRdLFxuICAgICAgICAgICAgaXNBbmNob3JMaW5rICYmIHN0eWxlcy5hbmNob3JMaW5rLFxuICAgICAgICAgICAgZXhwYW5kZWQgJiYgW2NsYXNzTmFtZXMuaXNFeHBhbmRlZCwgc3R5bGVzLnJvb3RFeHBhbmRlZF0sXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBbY2xhc3NOYW1lcy5pc0Rpc2FibGVkLCBzdHlsZXMucm9vdERpc2FibGVkXSxcbiAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICFleHBhbmRlZCAmJiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfYSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzogc3R5bGVzLnJvb3RIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6YWN0aXZlJzogc3R5bGVzLnJvb3RQcmVzc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX2FbXCIuXCIuY29uY2F0KElzRm9jdXNWaXNpYmxlQ2xhc3NOYW1lLCBcIiAmOmZvY3VzLCAuXCIpLmNvbmNhdChJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSwgXCIgJjpmb2N1czpob3ZlclwiKV0gPSBzdHlsZXMucm9vdEZvY3VzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfYVtcIi5cIi5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiICY6aG92ZXJcIildID0geyBiYWNrZ3JvdW5kOiAnaW5oZXJpdDsnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIHNwbGl0UHJpbWFyeTogW1xuICAgICAgICAgICAgc3R5bGVzLnJvb3QsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiY2FsYygxMDAlIC0gXCIuY29uY2F0KENPTlRFWFRVQUxfU1BMSVRfTUVOVV9NSU5XSURUSCwgXCIpXCIpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNoZWNrZWQgJiYgWydpcy1jaGVja2VkJywgc3R5bGVzLnJvb3RDaGVja2VkXSxcbiAgICAgICAgICAgIChkaXNhYmxlZCB8fCBwcmltYXJ5RGlzYWJsZWQpICYmIFsnaXMtZGlzYWJsZWQnLCBzdHlsZXMucm9vdERpc2FibGVkXSxcbiAgICAgICAgICAgICEoZGlzYWJsZWQgfHwgcHJpbWFyeURpc2FibGVkKSAmJlxuICAgICAgICAgICAgICAgICFjaGVja2VkICYmIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9iID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6aG92ZXInOiBzdHlsZXMucm9vdEhvdmVyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGhvdmVyaW5nIG92ZXIgdGhlIHNwbGl0UHJpbWFyeSBhbHNvIGFmZmVjdCB0aGUgc3BsaXRNZW51XG4gICAgICAgICAgICAgICAgICAgICAgICBfYltcIjpob3ZlciB+IC5cIi5jb25jYXQoY2xhc3NOYW1lcy5zcGxpdE1lbnUpXSA9IHN0eWxlcy5yb290SG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iWyc6YWN0aXZlJ10gPSBzdHlsZXMucm9vdFByZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfYltcIi5cIi5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiICY6Zm9jdXMsIC5cIikuY29uY2F0KElzRm9jdXNWaXNpYmxlQ2xhc3NOYW1lLCBcIiAmOmZvY3VzOmhvdmVyXCIpXSA9IHN0eWxlcy5yb290Rm9jdXNlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iW1wiLlwiLmNvbmNhdChJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSwgXCIgJjpob3ZlclwiKV0gPSB7IGJhY2tncm91bmQ6ICdpbmhlcml0OycgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgXSxcbiAgICAgICAgc3BsaXRNZW51OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnNwbGl0TWVudSxcbiAgICAgICAgICAgIHN0eWxlcy5yb290LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZsZXhCYXNpczogJzAnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDhweCcsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6IENPTlRFWFRVQUxfU1BMSVRfTUVOVV9NSU5XSURUSCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHBhbmRlZCAmJiBbJ2lzLWV4cGFuZGVkJywgc3R5bGVzLnJvb3RFeHBhbmRlZF0sXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBbJ2lzLWRpc2FibGVkJywgc3R5bGVzLnJvb3REaXNhYmxlZF0sXG4gICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAhZXhwYW5kZWQgJiYgW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2MgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzpob3Zlcic6IHN0eWxlcy5yb290SG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOmFjdGl2ZSc6IHN0eWxlcy5yb290UHJlc3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jW1wiLlwiLmNvbmNhdChJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSwgXCIgJjpmb2N1cywgLlwiKS5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiICY6Zm9jdXM6aG92ZXJcIildID0gc3R5bGVzLnJvb3RGb2N1c2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2NbXCIuXCIuY29uY2F0KElzRm9jdXNWaXNpYmxlQ2xhc3NOYW1lLCBcIiAmOmhvdmVyXCIpXSA9IHsgYmFja2dyb3VuZDogJ2luaGVyaXQ7JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgICBhbmNob3JMaW5rOiBzdHlsZXMuYW5jaG9yTGluayxcbiAgICAgICAgbGlua0NvbnRlbnQ6IFtjbGFzc05hbWVzLmxpbmtDb250ZW50LCBzdHlsZXMubGlua0NvbnRlbnRdLFxuICAgICAgICBsaW5rQ29udGVudE1lbnU6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMubGlua0NvbnRlbnRNZW51LFxuICAgICAgICAgICAgc3R5bGVzLmxpbmtDb250ZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGljb246IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuaWNvbixcbiAgICAgICAgICAgIGtub3duSWNvbiAmJiBzdHlsZXMuaWNvbkNvbG9yLFxuICAgICAgICAgICAgc3R5bGVzLmljb24sXG4gICAgICAgICAgICBpY29uQ2xhc3NOYW1lLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgW2NsYXNzTmFtZXMuaXNEaXNhYmxlZCwgc3R5bGVzLmljb25EaXNhYmxlZF0sXG4gICAgICAgIF0sXG4gICAgICAgIGljb25Db2xvcjogc3R5bGVzLmljb25Db2xvcixcbiAgICAgICAgY2hlY2ttYXJrSWNvbjogW2NsYXNzTmFtZXMuY2hlY2ttYXJrSWNvbiwga25vd25JY29uICYmIHN0eWxlcy5jaGVja21hcmtJY29uLCBzdHlsZXMuaWNvbiwgaWNvbkNsYXNzTmFtZV0sXG4gICAgICAgIHN1Yk1lbnVJY29uOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnN1Yk1lbnVJY29uLFxuICAgICAgICAgICAgc3R5bGVzLnN1Yk1lbnVJY29uLFxuICAgICAgICAgICAgc3ViTWVudUNsYXNzTmFtZSxcbiAgICAgICAgICAgIGV4cGFuZGVkICYmIHsgY29sb3I6IHRoZW1lLnBhbGV0dGUubmV1dHJhbFByaW1hcnkgfSxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIFtzdHlsZXMuaWNvbkRpc2FibGVkXSxcbiAgICAgICAgXSxcbiAgICAgICAgbGFiZWw6IFtjbGFzc05hbWVzLmxhYmVsLCBzdHlsZXMubGFiZWxdLFxuICAgICAgICBzZWNvbmRhcnlUZXh0OiBbY2xhc3NOYW1lcy5zZWNvbmRhcnlUZXh0LCBzdHlsZXMuc2Vjb25kYXJ5VGV4dF0sXG4gICAgICAgIHNwbGl0Q29udGFpbmVyOiBbXG4gICAgICAgICAgICBzdHlsZXMuc3BsaXRCdXR0b25GbGV4Q29udGFpbmVyLFxuICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgIWNoZWNrZWQgJiYgW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2QgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kW1wiLlwiLmNvbmNhdChJc0ZvY3VzVmlzaWJsZUNsYXNzTmFtZSwgXCIgJjpmb2N1cywgLlwiKS5jb25jYXQoSXNGb2N1c1Zpc2libGVDbGFzc05hbWUsIFwiICY6Zm9jdXM6aG92ZXJcIildID0gc3R5bGVzLnJvb3RGb2N1c2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2QpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgICBzY3JlZW5SZWFkZXJUZXh0OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnNjcmVlblJlYWRlclRleHQsXG4gICAgICAgICAgICBzdHlsZXMuc2NyZWVuUmVhZGVyVGV4dCxcbiAgICAgICAgICAgIGhpZGRlbkNvbnRlbnRTdHlsZSxcbiAgICAgICAgICAgIHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSxcbiAgICAgICAgXSxcbiAgICB9KTtcbn0pO1xuLyoqXG4gKiBXcmFwcGVyIGZ1bmN0aW9uIGZvciBnZW5lcmF0aW5nIENvbnRleHR1YWxNZW51SXRlbSBjbGFzc05hbWVzIHdoaWNoIGFkaGVyZXMgdG9cbiAqIHRoZSBnZXRTdHlsZXMgQVBJLCBidXQgaW52b2tlcyBtZW1vaXplZCBjbGFzc05hbWUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHdpdGhcbiAqIHByaW1pdGl2ZSB2YWx1ZXMuXG4gKlxuICogQHBhcmFtIHByb3BzIC0gdGhlIENvbnRleHR1YWxNZW51SXRlbSBzdHlsZSBwcm9wcyB1c2VkIHRvIGdlbmVyYXRlIGl0cyBzdHlsZXMuXG4gKi9cbmV4cG9ydCB2YXIgZ2V0SXRlbVN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB0aGVtZSA9IHByb3BzLnRoZW1lLCBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLCBleHBhbmRlZCA9IHByb3BzLmV4cGFuZGVkLCBjaGVja2VkID0gcHJvcHMuY2hlY2tlZCwgaXNBbmNob3JMaW5rID0gcHJvcHMuaXNBbmNob3JMaW5rLCBrbm93bkljb24gPSBwcm9wcy5rbm93bkljb24sIGl0ZW1DbGFzc05hbWUgPSBwcm9wcy5pdGVtQ2xhc3NOYW1lLCBkaXZpZGVyQ2xhc3NOYW1lID0gcHJvcHMuZGl2aWRlckNsYXNzTmFtZSwgaWNvbkNsYXNzTmFtZSA9IHByb3BzLmljb25DbGFzc05hbWUsIHN1Yk1lbnVDbGFzc05hbWUgPSBwcm9wcy5zdWJNZW51Q2xhc3NOYW1lLCBwcmltYXJ5RGlzYWJsZWQgPSBwcm9wcy5wcmltYXJ5RGlzYWJsZWQsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICByZXR1cm4gZ2V0SXRlbUNsYXNzTmFtZXModGhlbWUsIGRpc2FibGVkLCBleHBhbmRlZCwgY2hlY2tlZCwgaXNBbmNob3JMaW5rLCBrbm93bkljb24sIGl0ZW1DbGFzc05hbWUsIGRpdmlkZXJDbGFzc05hbWUsIGljb25DbGFzc05hbWUsIHN1Yk1lbnVDbGFzc05hbWUsIHByaW1hcnlEaXNhYmxlZCwgY2xhc3NOYW1lKTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudS5jbGFzc05hbWVzLmpzLm1hcCIsImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUl0ZW1CYXNlIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudUl0ZW0uYmFzZSc7XG5pbXBvcnQgeyBnZXRJdGVtU3R5bGVzIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudS5jbGFzc05hbWVzJztcbi8qKlxuICogQ29udGV4dHVhbE1lbnVJdGVtIGRlc2NyaXB0aW9uXG4gKi9cbmV4cG9ydCB2YXIgQ29udGV4dHVhbE1lbnVJdGVtID0gc3R5bGVkKENvbnRleHR1YWxNZW51SXRlbUJhc2UsIGdldEl0ZW1TdHlsZXMsIHVuZGVmaW5lZCwgeyBzY29wZTogJ0NvbnRleHR1YWxNZW51SXRlbScgfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudUl0ZW0uanMubWFwIiwiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbml0aWFsaXplQ29tcG9uZW50UmVmLCBzaGFsbG93Q29tcGFyZSB9IGZyb20gJy4uLy4uLy4uL1V0aWxpdGllcyc7XG52YXIgQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fb25JdGVtTW91c2VFbnRlciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBvbkl0ZW1Nb3VzZUVudGVyID0gX2Eub25JdGVtTW91c2VFbnRlcjtcbiAgICAgICAgICAgIGlmIChvbkl0ZW1Nb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtTW91c2VFbnRlcihpdGVtLCBldiwgZXYuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbkl0ZW1DbGljayA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBvbkl0ZW1DbGlja0Jhc2UgPSBfYS5vbkl0ZW1DbGlja0Jhc2U7XG4gICAgICAgICAgICBpZiAob25JdGVtQ2xpY2tCYXNlKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtQ2xpY2tCYXNlKGl0ZW0sIGV2LCBldi5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uSXRlbU1vdXNlTGVhdmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgb25JdGVtTW91c2VMZWF2ZSA9IF9hLm9uSXRlbU1vdXNlTGVhdmU7XG4gICAgICAgICAgICBpZiAob25JdGVtTW91c2VMZWF2ZSkge1xuICAgICAgICAgICAgICAgIG9uSXRlbU1vdXNlTGVhdmUoaXRlbSwgZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25JdGVtS2V5RG93biA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBvbkl0ZW1LZXlEb3duID0gX2Eub25JdGVtS2V5RG93bjtcbiAgICAgICAgICAgIGlmIChvbkl0ZW1LZXlEb3duKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtS2V5RG93bihpdGVtLCBldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbkl0ZW1Nb3VzZU1vdmUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgb25JdGVtTW91c2VNb3ZlID0gX2Eub25JdGVtTW91c2VNb3ZlO1xuICAgICAgICAgICAgaWYgKG9uSXRlbU1vdXNlTW92ZSkge1xuICAgICAgICAgICAgICAgIG9uSXRlbU1vdXNlTW92ZShpdGVtLCBldiwgZXYuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9nZXRTdWJtZW51VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudFJlZihfdGhpcyk7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZnVuY3Rpb24gKG5ld1Byb3BzKSB7XG4gICAgICAgIHJldHVybiAhc2hhbGxvd0NvbXBhcmUobmV3UHJvcHMsIHRoaXMucHJvcHMpO1xuICAgIH07XG4gICAgcmV0dXJuIENvbnRleHR1YWxNZW51SXRlbVdyYXBwZXI7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0IHsgQ29udGV4dHVhbE1lbnVJdGVtV3JhcHBlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29udGV4dHVhbE1lbnVJdGVtV3JhcHBlci5qcy5tYXAiLCJleHBvcnQgdmFyIEtUUF9QUkVGSVggPSAna3RwJztcbmV4cG9ydCB2YXIgS1RQX1NFUEFSQVRPUiA9ICctJztcbmV4cG9ydCB2YXIgS1RQX0ZVTExfUFJFRklYID0gS1RQX1BSRUZJWCArIEtUUF9TRVBBUkFUT1I7XG5leHBvcnQgdmFyIERBVEFLVFBfVEFSR0VUID0gJ2RhdGEta3RwLXRhcmdldCc7XG5leHBvcnQgdmFyIERBVEFLVFBfRVhFQ1VURV9UQVJHRVQgPSAnZGF0YS1rdHAtZXhlY3V0ZS10YXJnZXQnO1xuZXhwb3J0IHZhciBEQVRBS1RQX0FSSUFfVEFSR0VUID0gJ2RhdGEta3RwLWFyaWEtdGFyZ2V0JztcbmV4cG9ydCB2YXIgS1RQX0xBWUVSX0lEID0gJ2t0cC1sYXllci1pZCc7XG5leHBvcnQgdmFyIEtUUF9BUklBX1NFUEFSQVRPUiA9ICcsICc7XG4vLyBFdmVudHNcbmV4cG9ydCB2YXIgS2V5dGlwRXZlbnRzO1xuKGZ1bmN0aW9uIChLZXl0aXBFdmVudHMpIHtcbiAgICBLZXl0aXBFdmVudHMuS0VZVElQX0FEREVEID0gJ2tleXRpcEFkZGVkJztcbiAgICBLZXl0aXBFdmVudHMuS0VZVElQX1JFTU9WRUQgPSAna2V5dGlwUmVtb3ZlZCc7XG4gICAgS2V5dGlwRXZlbnRzLktFWVRJUF9VUERBVEVEID0gJ2tleXRpcFVwZGF0ZWQnO1xuICAgIEtleXRpcEV2ZW50cy5QRVJTSVNURURfS0VZVElQX0FEREVEID0gJ3BlcnNpc3RlZEtleXRpcEFkZGVkJztcbiAgICBLZXl0aXBFdmVudHMuUEVSU0lTVEVEX0tFWVRJUF9SRU1PVkVEID0gJ3BlcnNpc3RlZEtleXRpcFJlbW92ZWQnO1xuICAgIEtleXRpcEV2ZW50cy5QRVJTSVNURURfS0VZVElQX0VYRUNVVEUgPSAncGVyc2lzdGVkS2V5dGlwRXhlY3V0ZSc7XG4gICAgS2V5dGlwRXZlbnRzLkVOVEVSX0tFWVRJUF9NT0RFID0gJ2VudGVyS2V5dGlwTW9kZSc7XG4gICAgS2V5dGlwRXZlbnRzLkVYSVRfS0VZVElQX01PREUgPSAnZXhpdEtleXRpcE1vZGUnO1xufSkoS2V5dGlwRXZlbnRzIHx8IChLZXl0aXBFdmVudHMgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9S2V5dGlwQ29uc3RhbnRzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBFdmVudEdyb3VwLCBnZXRJZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBLZXl0aXBFdmVudHMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2V5dGlwcy9LZXl0aXBDb25zdGFudHMnO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyByZWdpc3RlcmluZywgdXBkYXRpbmcsIGFuZCB1bnJlZ2lzdGVyaW5nIG9mIGtleXRpcHNcbiAqL1xudmFyIEtleXRpcE1hbmFnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gS2V5dGlwTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5rZXl0aXBzID0ge307XG4gICAgICAgIHRoaXMucGVyc2lzdGVkS2V5dGlwcyA9IHt9O1xuICAgICAgICB0aGlzLnNlcXVlbmNlTWFwcGluZyA9IHt9O1xuICAgICAgICAvLyBUaGlzIGlzIChhbmQgc2hvdWxkIGJlKSB1cGRhdGVkIGFuZCBrZXB0IGluIHN5bmNcbiAgICAgICAgLy8gd2l0aCB0aGUgaW5LZXl0aXBNb2RlIGluIEtleXRpcExheWVyLlxuICAgICAgICB0aGlzLmluS2V5dGlwTW9kZSA9IGZhbHNlO1xuICAgICAgICAvLyBCb29sZWFuIHRoYXQgZ2V0cyBjaGVja2VkIGJlZm9yZSBlbnRlcmluZyBrZXl0aXAgbW9kZSBieSB0aGUgS2V5dGlwTGF5ZXJcbiAgICAgICAgLy8gVXNlZCBmb3IgYW4gb3ZlcnJpZGUgaW4gc3BlY2lhbCBjYXNlcyAoZS5nLiBEaXNhYmxlIGVudGVyaW5nIGtleXRpcCBtb2RlIHdoZW4gYSBtb2RhbCBpcyBzaG93bilcbiAgICAgICAgdGhpcy5zaG91bGRFbnRlcktleXRpcE1vZGUgPSB0cnVlO1xuICAgICAgICAvLyBCb29sZWFuIHRvIGluZGljYXRlIHdoZXRoZXIgdG8gZGVsYXkgZmlyaW5nIGFuIGV2ZW50IHRvIHVwZGF0ZSBzdWJzY3JpYmVycyBvZlxuICAgICAgICAvLyBrZXl0aXAgZGF0YSBjaGFuZ2VkLlxuICAgICAgICB0aGlzLmRlbGF5VXBkYXRpbmdLZXl0aXBDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3RhdGljIGZ1bmN0aW9uIHRvIGdldCBzaW5nbGV0b24gS2V5dGlwTWFuYWdlciBpbnN0YW5jZVxuICAgICAqXG4gICAgICogQHJldHVybnMgU2luZ2xldG9uIEtleXRpcE1hbmFnZXIgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBLZXl0aXBNYW5hZ2VyLmdldEluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXphdGlvbiBjb2RlIHRvIHNldCBzZXQgcGFyYW1ldGVycyB0byBkZWZpbmVcbiAgICAgKiBob3cgdGhlIEtleXRpcE1hbmFnZXIgaGFuZGxlcyBrZXl0aXAgZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZWxheVVwZGF0aW5nS2V5dGlwQ2hhbmdlIC0gVC9GIGlmIHdlIHNob3VsZCBkZWxheSBub3RpZml5aW5nIGtleXRpcCBzdWJzY3JpYmVyc1xuICAgICAqIG9mIGtleXRpcCBjaGFuZ2VzXG4gICAgICovXG4gICAgS2V5dGlwTWFuYWdlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uIChkZWxheVVwZGF0aW5nS2V5dGlwQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuZGVsYXlVcGRhdGluZ0tleXRpcENoYW5nZSA9IGRlbGF5VXBkYXRpbmdLZXl0aXBDaGFuZ2U7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBrZXl0aXBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXl0aXBQcm9wcyAtIEtleXRpcCB0byByZWdpc3RlclxuICAgICAqIEBwYXJhbSBwZXJzaXN0ZWQgLSBUL0YgaWYgdGhpcyBrZXl0aXAgc2hvdWxkIGJlIHBlcnNpc3RlZCwgZGVmYXVsdCBpcyBmYWxzZVxuICAgICAqIEByZXR1cm5zIFVuaXF1ZSBJRCBmb3IgdGhpcyBrZXl0aXBcbiAgICAgKi9cbiAgICBLZXl0aXBNYW5hZ2VyLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIChrZXl0aXBQcm9wcywgcGVyc2lzdGVkKSB7XG4gICAgICAgIGlmIChwZXJzaXN0ZWQgPT09IHZvaWQgMCkgeyBwZXJzaXN0ZWQgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcHJvcHMgPSBrZXl0aXBQcm9wcztcbiAgICAgICAgaWYgKCFwZXJzaXN0ZWQpIHtcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgb3ZlcmZsb3dTZXRTZXF1ZW5jZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgIHByb3BzID0gdGhpcy5hZGRQYXJlbnRPdmVyZmxvdyhrZXl0aXBQcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnNlcXVlbmNlTWFwcGluZ1twcm9wcy5rZXlTZXF1ZW5jZXMudG9TdHJpbmcoKV0gPSBwcm9wcztcbiAgICAgICAgfVxuICAgICAgICAvLyBDcmVhdGUgYSB1bmlxdWUga2V5dGlwXG4gICAgICAgIHZhciB1bmlxdWVLZXl0aXAgPSB0aGlzLl9nZXRVbmlxdWVLdHAocHJvcHMpO1xuICAgICAgICAvLyBBZGQgdG8gZGljdGlvbmFyeVxuICAgICAgICBwZXJzaXN0ZWRcbiAgICAgICAgICAgID8gKHRoaXMucGVyc2lzdGVkS2V5dGlwc1t1bmlxdWVLZXl0aXAudW5pcXVlSURdID0gdW5pcXVlS2V5dGlwKVxuICAgICAgICAgICAgOiAodGhpcy5rZXl0aXBzW3VuaXF1ZUtleXRpcC51bmlxdWVJRF0gPSB1bmlxdWVLZXl0aXApO1xuICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYWRkIHNvbWV0aGluZyBuZXcgaWYgd2UgYXJlIGN1cnJlbnRseSBzaG93aW5nIGtleXRpcCBtb2RlXG4gICAgICAgIGlmICh0aGlzLmluS2V5dGlwTW9kZSB8fCAhdGhpcy5kZWxheVVwZGF0aW5nS2V5dGlwQ2hhbmdlKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnRfMSA9IHBlcnNpc3RlZCA/IEtleXRpcEV2ZW50cy5QRVJTSVNURURfS0VZVElQX0FEREVEIDogS2V5dGlwRXZlbnRzLktFWVRJUF9BRERFRDtcbiAgICAgICAgICAgIEV2ZW50R3JvdXAucmFpc2UodGhpcywgZXZlbnRfMSwge1xuICAgICAgICAgICAgICAgIGtleXRpcDogcHJvcHMsXG4gICAgICAgICAgICAgICAgdW5pcXVlSUQ6IHVuaXF1ZUtleXRpcC51bmlxdWVJRCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmlxdWVLZXl0aXAudW5pcXVlSUQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgYSBrZXl0aXBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXl0aXBQcm9wcyAtIEtleXRpcCB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0gdW5pcXVlSUQgLSBVbmlxdWUgSUQgb2YgdGhpcyBrZXl0aXBcbiAgICAgKi9cbiAgICBLZXl0aXBNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoa2V5dGlwUHJvcHMsIHVuaXF1ZUlEKSB7XG4gICAgICAgIHZhciBuZXdLZXl0aXBQcm9wcyA9IHRoaXMuYWRkUGFyZW50T3ZlcmZsb3coa2V5dGlwUHJvcHMpO1xuICAgICAgICB2YXIgdW5pcXVlS2V5dGlwID0gdGhpcy5fZ2V0VW5pcXVlS3RwKG5ld0tleXRpcFByb3BzLCB1bmlxdWVJRCk7XG4gICAgICAgIHZhciBvbGRLZXlUaXAgPSB0aGlzLmtleXRpcHNbdW5pcXVlSURdO1xuICAgICAgICBpZiAob2xkS2V5VGlwKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgZXZlcnl0aGluZyBleGNlcHQgJ3Zpc2libGUnXG4gICAgICAgICAgICB1bmlxdWVLZXl0aXAua2V5dGlwLnZpc2libGUgPSBvbGRLZXlUaXAua2V5dGlwLnZpc2libGU7XG4gICAgICAgICAgICAvLyBVcGRhdGUga2V5dGlwIGluIHRoaXMua2V5dGlwc1xuICAgICAgICAgICAgdGhpcy5rZXl0aXBzW3VuaXF1ZUlEXSA9IHVuaXF1ZUtleXRpcDtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VxdWVuY2UgdG8gYmUgdXAgdG8gZGF0ZVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuc2VxdWVuY2VNYXBwaW5nW29sZEtleVRpcC5rZXl0aXAua2V5U2VxdWVuY2VzLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgdGhpcy5zZXF1ZW5jZU1hcHBpbmdbdW5pcXVlS2V5dGlwLmtleXRpcC5rZXlTZXF1ZW5jZXMudG9TdHJpbmcoKV0gPSB1bmlxdWVLZXl0aXAua2V5dGlwO1xuICAgICAgICAgICAgLy8gUmFpc2UgZXZlbnQgb25seSBpZiB3ZSBhcmUgY3VycmVudGx5IGluIGtleXRpcCBtb2RlXG4gICAgICAgICAgICBpZiAodGhpcy5pbktleXRpcE1vZGUgfHwgIXRoaXMuZGVsYXlVcGRhdGluZ0tleXRpcENoYW5nZSkge1xuICAgICAgICAgICAgICAgIEV2ZW50R3JvdXAucmFpc2UodGhpcywgS2V5dGlwRXZlbnRzLktFWVRJUF9VUERBVEVELCB7XG4gICAgICAgICAgICAgICAgICAgIGtleXRpcDogdW5pcXVlS2V5dGlwLmtleXRpcCxcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlSUQ6IHVuaXF1ZUtleXRpcC51bmlxdWVJRCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogVW5yZWdpc3RlcnMgYSBrZXl0aXBcbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXl0aXBUb1JlbW92ZSAtIElLZXl0aXBQcm9wcyBvZiB0aGUga2V5dGlwIHRvIHJlbW92ZVxuICAgICAqIEBwYXJhbSB1bmlxdWVJRCAtIFVuaXF1ZSBJRCBvZiB0aGlzIGtleXRpcFxuICAgICAqIEBwYXJhbSBwZXJzaXN0ZWQgLSBUL0YgaWYgdGhpcyBrZXl0aXAgc2hvdWxkIGJlIHBlcnNpc3RlZCwgZGVmYXVsdCBpcyBmYWxzZVxuICAgICAqL1xuICAgIEtleXRpcE1hbmFnZXIucHJvdG90eXBlLnVucmVnaXN0ZXIgPSBmdW5jdGlvbiAoa2V5dGlwVG9SZW1vdmUsIHVuaXF1ZUlELCBwZXJzaXN0ZWQpIHtcbiAgICAgICAgaWYgKHBlcnNpc3RlZCA9PT0gdm9pZCAwKSB7IHBlcnNpc3RlZCA9IGZhbHNlOyB9XG4gICAgICAgIHBlcnNpc3RlZCA/IGRlbGV0ZSB0aGlzLnBlcnNpc3RlZEtleXRpcHNbdW5pcXVlSURdIDogZGVsZXRlIHRoaXMua2V5dGlwc1t1bmlxdWVJRF07XG4gICAgICAgICFwZXJzaXN0ZWQgJiYgZGVsZXRlIHRoaXMuc2VxdWVuY2VNYXBwaW5nW2tleXRpcFRvUmVtb3ZlLmtleVNlcXVlbmNlcy50b1N0cmluZygpXTtcbiAgICAgICAgdmFyIGV2ZW50ID0gcGVyc2lzdGVkID8gS2V5dGlwRXZlbnRzLlBFUlNJU1RFRF9LRVlUSVBfUkVNT1ZFRCA6IEtleXRpcEV2ZW50cy5LRVlUSVBfUkVNT1ZFRDtcbiAgICAgICAgLy8gVXBkYXRlIGtleXRpcHMgb25seSBpZiB3ZSdyZSBpbiBrZXl0aXAgbW9kZVxuICAgICAgICBpZiAodGhpcy5pbktleXRpcE1vZGUgfHwgIXRoaXMuZGVsYXlVcGRhdGluZ0tleXRpcENoYW5nZSkge1xuICAgICAgICAgICAgRXZlbnRHcm91cC5yYWlzZSh0aGlzLCBldmVudCwge1xuICAgICAgICAgICAgICAgIGtleXRpcDoga2V5dGlwVG9SZW1vdmUsXG4gICAgICAgICAgICAgICAgdW5pcXVlSUQ6IHVuaXF1ZUlELFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIE1hbnVhbCBjYWxsIHRvIGVudGVyIGtleXRpcCBtb2RlXG4gICAgICovXG4gICAgS2V5dGlwTWFuYWdlci5wcm90b3R5cGUuZW50ZXJLZXl0aXBNb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBFdmVudEdyb3VwLnJhaXNlKHRoaXMsIEtleXRpcEV2ZW50cy5FTlRFUl9LRVlUSVBfTU9ERSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNYW51YWwgY2FsbCB0byBleGl0IGtleXRpcCBtb2RlXG4gICAgICovXG4gICAgS2V5dGlwTWFuYWdlci5wcm90b3R5cGUuZXhpdEtleXRpcE1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIEV2ZW50R3JvdXAucmFpc2UodGhpcywgS2V5dGlwRXZlbnRzLkVYSVRfS0VZVElQX01PREUpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgSUtleXRpcFByb3BzIGZyb20gdGhpcy5rZXl0aXBzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBbGwga2V5dGlwcyBzdG9yZWQgaW4gdGhlIG1hbmFnZXJcbiAgICAgKi9cbiAgICBLZXl0aXBNYW5hZ2VyLnByb3RvdHlwZS5nZXRLZXl0aXBzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5rZXl0aXBzKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gX3RoaXMua2V5dGlwc1trZXldLmtleXRpcDsgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBvdmVyZmxvd1NldFNlcXVlbmNlIHRvIHRoZSBrZXl0aXBQcm9wcyBpZiBpdHMgcGFyZW50IGtleXRpcCBhbHNvIGhhcyBpdFxuICAgICAqXG4gICAgICogQHBhcmFtIGtleXRpcFByb3BzIC0gS2V5dGlwIHByb3BzIHRvIGFkZCBvdmVyZmxvd1NldFNlcXVlbmNlIHRvIGlmIG5lY2Vzc2FyeVxuICAgICAqIEByZXR1cm5zIC0gTW9kaWZpZWQga2V5dGlwIHByb3BzLCBpZiBuZWVkZWQgdG8gYmUgbW9kaWZpZWRcbiAgICAgKi9cbiAgICBLZXl0aXBNYW5hZ2VyLnByb3RvdHlwZS5hZGRQYXJlbnRPdmVyZmxvdyA9IGZ1bmN0aW9uIChrZXl0aXBQcm9wcykge1xuICAgICAgICB2YXIgZnVsbFNlcXVlbmNlID0gX19zcHJlYWRBcnJheShbXSwga2V5dGlwUHJvcHMua2V5U2VxdWVuY2VzLCB0cnVlKTtcbiAgICAgICAgZnVsbFNlcXVlbmNlLnBvcCgpO1xuICAgICAgICBpZiAoZnVsbFNlcXVlbmNlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdmFyIHBhcmVudEtleXRpcCA9IHRoaXMuc2VxdWVuY2VNYXBwaW5nW2Z1bGxTZXF1ZW5jZS50b1N0cmluZygpXTtcbiAgICAgICAgICAgIGlmIChwYXJlbnRLZXl0aXAgJiYgcGFyZW50S2V5dGlwLm92ZXJmbG93U2V0U2VxdWVuY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGtleXRpcFByb3BzKSwgeyBvdmVyZmxvd1NldFNlcXVlbmNlOiBwYXJlbnRLZXl0aXAub3ZlcmZsb3dTZXRTZXF1ZW5jZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5dGlwUHJvcHM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBQdWJsaWMgZnVuY3Rpb24gdG8gYmluZCBmb3Igb3ZlcmZsb3cgaXRlbXMgdGhhdCBoYXZlIGEgc3VibWVudVxuICAgICAqL1xuICAgIEtleXRpcE1hbmFnZXIucHJvdG90eXBlLm1lbnVFeGVjdXRlID0gZnVuY3Rpb24gKG92ZXJmbG93QnV0dG9uU2VxdWVuY2VzLCBrZXl0aXBTZXF1ZW5jZXMpIHtcbiAgICAgICAgRXZlbnRHcm91cC5yYWlzZSh0aGlzLCBLZXl0aXBFdmVudHMuUEVSU0lTVEVEX0tFWVRJUF9FWEVDVVRFLCB7XG4gICAgICAgICAgICBvdmVyZmxvd0J1dHRvblNlcXVlbmNlczogb3ZlcmZsb3dCdXR0b25TZXF1ZW5jZXMsXG4gICAgICAgICAgICBrZXl0aXBTZXF1ZW5jZXM6IGtleXRpcFNlcXVlbmNlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIElVbmlxdWVLZXl0aXAgb2JqZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0ga2V5dGlwUHJvcHMgLSBJS2V5dGlwUHJvcHNcbiAgICAgKiBAcGFyYW0gdW5pcXVlSUQgLSBVbmlxdWUgSUQsIHdpbGwgZGVmYXVsdCB0byB0aGUgbmV4dCB1bmlxdWUgSUQgaWYgbm90IHBhc3NlZFxuICAgICAqIEByZXR1cm5zIElVbmlxdWVLZXl0aXAgb2JqZWN0XG4gICAgICovXG4gICAgS2V5dGlwTWFuYWdlci5wcm90b3R5cGUuX2dldFVuaXF1ZUt0cCA9IGZ1bmN0aW9uIChrZXl0aXBQcm9wcywgdW5pcXVlSUQpIHtcbiAgICAgICAgaWYgKHVuaXF1ZUlEID09PSB2b2lkIDApIHsgdW5pcXVlSUQgPSBnZXRJZCgpOyB9XG4gICAgICAgIHJldHVybiB7IGtleXRpcDogX19hc3NpZ24oe30sIGtleXRpcFByb3BzKSwgdW5pcXVlSUQ6IHVuaXF1ZUlEIH07XG4gICAgfTtcbiAgICBLZXl0aXBNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBLZXl0aXBNYW5hZ2VyKCk7XG4gICAgcmV0dXJuIEtleXRpcE1hbmFnZXI7XG59KCkpO1xuZXhwb3J0IHsgS2V5dGlwTWFuYWdlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9S2V5dGlwTWFuYWdlci5qcy5tYXAiLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBLVFBfU0VQQVJBVE9SLCBLVFBfUFJFRklYLCBEQVRBS1RQX1RBUkdFVCwgREFUQUtUUF9FWEVDVVRFX1RBUkdFVCwgS1RQX0xBWUVSX0lEIH0gZnJvbSAnLi9LZXl0aXBDb25zdGFudHMnO1xuaW1wb3J0IHsgYWRkRWxlbWVudEF0SW5kZXggfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuLyoqXG4gKiBDb252ZXJ0cyBhIHdob2xlIHNldCBvZiBLZXlTZXF1ZW5jZXMgaW50byBvbmUga2V5dGlwIElELCB3aGljaCB3aWxsIGJlIHRoZSBJRCBmb3IgdGhlIGxhc3Qga2V5dGlwIHNlcXVlbmNlIHNwZWNpZmllZFxuICoga2V5U2VxdWVuY2VzIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgaW5pdGlhbCBrZXl0aXAgJ3N0YXJ0JyBzZXF1ZW5jZS5cbiAqXG4gKiBAcGFyYW0ga2V5U2VxdWVuY2VzIC0gRnVsbCBwYXRoIG9mIElLZXlTZXF1ZW5jZXMgZm9yIG9uZSBrZXl0aXAuXG4gKiBAcmV0dXJucyBTdHJpbmcgdG8gdXNlIGZvciB0aGUga2V5dGlwIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VzVG9JRChrZXlTZXF1ZW5jZXMpIHtcbiAgICByZXR1cm4ga2V5U2VxdWVuY2VzLnJlZHVjZShmdW5jdGlvbiAocHJldlZhbHVlLCBrZXlTZXF1ZW5jZSkge1xuICAgICAgICByZXR1cm4gcHJldlZhbHVlICsgS1RQX1NFUEFSQVRPUiArIGtleVNlcXVlbmNlLnNwbGl0KCcnKS5qb2luKEtUUF9TRVBBUkFUT1IpO1xuICAgIH0sIEtUUF9QUkVGSVgpO1xufVxuLyoqXG4gKiBNZXJnZXMgYW4gb3ZlcmZsb3cgc2VxdWVuY2Ugd2l0aCBhIGtleSBzZXF1ZW5jZS5cbiAqXG4gKiBAcGFyYW0ga2V5U2VxdWVuY2VzIC0gRnVsbCBzZXF1ZW5jZSBmb3Igb25lIGtleXRpcC5cbiAqIEBwYXJhbSBvdmVyZmxvd0tleVNlcXVlbmNlcyAtIEZ1bGwgb3ZlcmZsb3cga2V5dGlwIHNlcXVlbmNlLlxuICogQHJldHVybnMgU2VxdWVuY2UgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlIGtleXRpcCB3aGVuIGluIHRoZSBvdmVyZmxvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlT3ZlcmZsb3dzKGtleVNlcXVlbmNlcywgb3ZlcmZsb3dLZXlTZXF1ZW5jZXMpIHtcbiAgICB2YXIgb3ZlcmZsb3dTZXF1ZW5jZUxlbiA9IG92ZXJmbG93S2V5U2VxdWVuY2VzLmxlbmd0aDtcbiAgICB2YXIgb3ZlcmZsb3dTZXF1ZW5jZSA9IF9fc3ByZWFkQXJyYXkoW10sIG92ZXJmbG93S2V5U2VxdWVuY2VzLCB0cnVlKS5wb3AoKTtcbiAgICB2YXIgbmV3S2V5U2VxdWVuY2VzID0gX19zcHJlYWRBcnJheShbXSwga2V5U2VxdWVuY2VzLCB0cnVlKTtcbiAgICByZXR1cm4gYWRkRWxlbWVudEF0SW5kZXgobmV3S2V5U2VxdWVuY2VzLCBvdmVyZmxvd1NlcXVlbmNlTGVuIC0gMSwgb3ZlcmZsb3dTZXF1ZW5jZSk7XG59XG4vKipcbiAqIENvbnN0cnVjdHMgdGhlIGRhdGEta3RwLXRhcmdldCBhdHRyaWJ1dGUgc2VsZWN0b3IgZnJvbSBhIGZ1bGwga2V5IHNlcXVlbmNlLlxuICpcbiAqIEBwYXJhbSBrZXlTZXF1ZW5jZXMgLSBGdWxsIHN0cmluZ1tdIGZvciBhIEtleXRpcC5cbiAqIEByZXR1cm5zIFN0cmluZyBzZWxlY3RvciB0byB1c2UgdG8gcXVlcnkgZm9yIHRoZSBrZXl0aXAgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24ga3RwVGFyZ2V0RnJvbVNlcXVlbmNlcyhrZXlTZXF1ZW5jZXMpIHtcbiAgICByZXR1cm4gJ1snICsgREFUQUtUUF9UQVJHRVQgKyAnPVwiJyArIHNlcXVlbmNlc1RvSUQoa2V5U2VxdWVuY2VzKSArICdcIl0nO1xufVxuLyoqXG4gKiBDb25zdHJ1Y3RzIHRoZSBkYXRhLWt0cC1leGVjdXRlLXRhcmdldCBhdHRyaWJ1dGUgc2VsZWN0b3IgZnJvbSBhIGtleXRpcCBJRC5cbiAqXG4gKiBAcGFyYW0ga2V5dGlwSWQgLSBJRCBvZiB0aGUgS2V5dGlwLlxuICogQHJldHVybnMgU3RyaW5nIHNlbGVjdG9yIHRvIHVzZSB0byBxdWVyeSBmb3IgdGhlIGtleXRpcCBleGVjdXRlIHRhcmdldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0cFRhcmdldEZyb21JZChrZXl0aXBJZCkge1xuICAgIHJldHVybiAnWycgKyBEQVRBS1RQX0VYRUNVVEVfVEFSR0VUICsgJz1cIicgKyBrZXl0aXBJZCArICdcIl0nO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IHZhbHVlIHRvIHB1dCBvbiB0aGUgY29tcG9uZW50IHdpdGggdGhpcyBrZXl0aXAuXG4gKlxuICogQHBhcmFtIGtleVNlcXVlbmNlcyAtIEtleVNlcXVlbmNlcyBvZiB0aGUga2V5dGlwLlxuICogQHJldHVybnMgVGhlIGFyaWEtZGVzY3JpYmVkYnkgdmFsdWUgdG8gc2V0IG9uIHRoZSBjb21wb25lbnQgd2l0aCB0aGlzIGtleXRpcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFyaWFEZXNjcmliZWRCeShrZXlTZXF1ZW5jZXMpIHtcbiAgICB2YXIgZGVzY3JpYmVkYnkgPSAnICcgKyBLVFBfTEFZRVJfSUQ7XG4gICAgaWYgKCFrZXlTZXF1ZW5jZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFJldHVybiBqdXN0IHRoZSBsYXllciBJRFxuICAgICAgICByZXR1cm4gZGVzY3JpYmVkYnk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmliZWRieSArICcgJyArIHNlcXVlbmNlc1RvSUQoa2V5U2VxdWVuY2VzKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUtleXRpcFV0aWxzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb25zdCwgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCwgdXNlUHJldmlvdXMgfSBmcm9tICdAZmx1ZW50dWkvcmVhY3QtaG9va3MnO1xuaW1wb3J0IHsgbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IEtleXRpcE1hbmFnZXIsIG1lcmdlT3ZlcmZsb3dzLCBzZXF1ZW5jZXNUb0lELCBnZXRBcmlhRGVzY3JpYmVkQnkgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2V5dGlwcy9pbmRleCc7XG4vKipcbiAqIEhvb2sgdGhhdCBjcmVhdGVzIGF0dHJpYnV0ZXMgZm9yIGNvbXBvbmVudHMgd2hpY2ggYXJlIGVuYWJsZWQgd2l0aCBLZXl0aXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VLZXl0aXBEYXRhKG9wdGlvbnMpIHtcbiAgICB2YXIgdW5pcXVlSWQgPSBSZWFjdC51c2VSZWYoKTtcbiAgICB2YXIga2V5dGlwUHJvcHMgPSBvcHRpb25zLmtleXRpcFByb3BzXG4gICAgICAgID8gX19hc3NpZ24oeyBkaXNhYmxlZDogb3B0aW9ucy5kaXNhYmxlZCB9LCBvcHRpb25zLmtleXRpcFByb3BzKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIga2V5dGlwTWFuYWdlciA9IHVzZUNvbnN0KEtleXRpcE1hbmFnZXIuZ2V0SW5zdGFuY2UoKSk7XG4gICAgdmFyIHByZXZPcHRpb25zID0gdXNlUHJldmlvdXMob3B0aW9ucyk7XG4gICAgLy8gdXNlTGF5b3V0RWZmZWN0IHVzZWQgdG8gc3RyaWN0bHkgZW11bGF0ZSBkaWRVcGRhdGUvZGlkTW91bnQgYmVoYXZpb3JcbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHVuaXF1ZUlkLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIGtleXRpcFByb3BzICYmXG4gICAgICAgICAgICAoKHByZXZPcHRpb25zID09PSBudWxsIHx8IHByZXZPcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2T3B0aW9ucy5rZXl0aXBQcm9wcykgIT09IG9wdGlvbnMua2V5dGlwUHJvcHMgfHwgKHByZXZPcHRpb25zID09PSBudWxsIHx8IHByZXZPcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwcmV2T3B0aW9ucy5kaXNhYmxlZCkgIT09IG9wdGlvbnMuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBrZXl0aXBNYW5hZ2VyLnVwZGF0ZShrZXl0aXBQcm9wcywgdW5pcXVlSWQuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gUmVnaXN0ZXIgS2V5dGlwIGluIEtleXRpcE1hbmFnZXJcbiAgICAgICAgaWYgKGtleXRpcFByb3BzKSB7XG4gICAgICAgICAgICB1bmlxdWVJZC5jdXJyZW50ID0ga2V5dGlwTWFuYWdlci5yZWdpc3RlcihrZXl0aXBQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIFVucmVnaXN0ZXIgS2V5dGlwIGluIEtleXRpcE1hbmFnZXJcbiAgICAgICAgICAgIGtleXRpcFByb3BzICYmIGtleXRpcE1hbmFnZXIudW5yZWdpc3RlcihrZXl0aXBQcm9wcywgdW5pcXVlSWQuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIHRoaXMgaXMgbWVhbnQgdG8gcnVuIG9ubHkgYXQgbW91bnQsIGFuZCB1cGRhdGVzIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHlcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFtdKTtcbiAgICB2YXIgbmF0aXZlS2V5dGlwUHJvcHMgPSB7XG4gICAgICAgIGFyaWFEZXNjcmliZWRCeTogdW5kZWZpbmVkLFxuICAgICAgICBrZXl0aXBJZDogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgaWYgKGtleXRpcFByb3BzKSB7XG4gICAgICAgIG5hdGl2ZUtleXRpcFByb3BzID0gZ2V0S2V5dGlwRGF0YShrZXl0aXBNYW5hZ2VyLCBrZXl0aXBQcm9wcywgb3B0aW9ucy5hcmlhRGVzY3JpYmVkQnkpO1xuICAgIH1cbiAgICByZXR1cm4gbmF0aXZlS2V5dGlwUHJvcHM7XG59XG4vKipcbiAqIEdldHMgdGhlIGFyaWEtIGFuZCBkYXRhLSBhdHRyaWJ1dGVzIHRvIGF0dGFjaCB0byB0aGUgY29tcG9uZW50XG4gKiBAcGFyYW0ga2V5dGlwUHJvcHMgLSBvcHRpb25zIGZvciBLZXl0aXBcbiAqIEBwYXJhbSBkZXNjcmliZWRCeVByZXBlbmQgLSBhcmlhRGVzY3JpYmVkQnkgdmFsdWUgdG8gcHJlcGVuZFxuICovXG5mdW5jdGlvbiBnZXRLZXl0aXBEYXRhKGtleXRpcE1hbmFnZXIsIGtleXRpcFByb3BzLCBkZXNjcmliZWRCeVByZXBlbmQpIHtcbiAgICAvLyBBZGQgdGhlIHBhcmVudCBvdmVyZmxvdyBzZXF1ZW5jZSBpZiBuZWNlc3NhcnlcbiAgICB2YXIgbmV3S2V5dGlwUHJvcHMgPSBrZXl0aXBNYW5hZ2VyLmFkZFBhcmVudE92ZXJmbG93KGtleXRpcFByb3BzKTtcbiAgICAvLyBDb25zdHJ1Y3QgYXJpYS1kZXNjcmliZWRieSBhbmQgZGF0YS1rdHAtaWQgYXR0cmlidXRlc1xuICAgIHZhciBhcmlhRGVzY3JpYmVkQnkgPSBtZXJnZUFyaWFBdHRyaWJ1dGVWYWx1ZXMoZGVzY3JpYmVkQnlQcmVwZW5kLCBnZXRBcmlhRGVzY3JpYmVkQnkobmV3S2V5dGlwUHJvcHMua2V5U2VxdWVuY2VzKSk7XG4gICAgdmFyIGtleVNlcXVlbmNlcyA9IF9fc3ByZWFkQXJyYXkoW10sIG5ld0tleXRpcFByb3BzLmtleVNlcXVlbmNlcywgdHJ1ZSk7XG4gICAgaWYgKG5ld0tleXRpcFByb3BzLm92ZXJmbG93U2V0U2VxdWVuY2UpIHtcbiAgICAgICAga2V5U2VxdWVuY2VzID0gbWVyZ2VPdmVyZmxvd3Moa2V5U2VxdWVuY2VzLCBuZXdLZXl0aXBQcm9wcy5vdmVyZmxvd1NldFNlcXVlbmNlKTtcbiAgICB9XG4gICAgdmFyIGtleXRpcElkID0gc2VxdWVuY2VzVG9JRChrZXlTZXF1ZW5jZXMpO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFyaWFEZXNjcmliZWRCeTogYXJpYURlc2NyaWJlZEJ5LFxuICAgICAgICBrZXl0aXBJZDoga2V5dGlwSWQsXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZUtleXRpcERhdGEuanMubWFwIiwiaW1wb3J0IHsgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBEQVRBS1RQX1RBUkdFVCwgREFUQUtUUF9FWEVDVVRFX1RBUkdFVCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9rZXl0aXBzL2luZGV4JztcbmltcG9ydCB7IHVzZUtleXRpcERhdGEgfSBmcm9tICcuL3VzZUtleXRpcERhdGEnO1xuLyoqXG4gKiBBIHNtYWxsIGVsZW1lbnQgdG8gaGVscCB0aGUgdGFyZ2V0IGNvbXBvbmVudCBjb3JyZWN0bHkgcmVhZCBvdXQgaXRzIGFyaWEtZGVzY3JpYmVkYnkgZm9yIGl0cyBLZXl0aXBcbiAqIHtAZG9jQ2F0ZWdvcnkgS2V5dGlwc31cbiAqL1xuZXhwb3J0IHZhciBLZXl0aXBEYXRhID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBrZXl0aXBEYXRhUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCJdKTtcbiAgICB2YXIgX2IgPSB1c2VLZXl0aXBEYXRhKGtleXRpcERhdGFQcm9wcyksIGtleXRpcElkID0gX2Iua2V5dGlwSWQsIGFyaWFEZXNjcmliZWRCeSA9IF9iLmFyaWFEZXNjcmliZWRCeTtcbiAgICByZXR1cm4gY2hpbGRyZW4oKF9hID0ge30sXG4gICAgICAgIF9hW0RBVEFLVFBfVEFSR0VUXSA9IGtleXRpcElkLFxuICAgICAgICBfYVtEQVRBS1RQX0VYRUNVVEVfVEFSR0VUXSA9IGtleXRpcElkLFxuICAgICAgICBfYVsnYXJpYS1kZXNjcmliZWRieSddID0gYXJpYURlc2NyaWJlZEJ5LFxuICAgICAgICBfYSkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUtleXRpcERhdGEuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYW5jaG9yUHJvcGVydGllcywgZ2V0TmF0aXZlUHJvcHMsIG1lbW9pemVGdW5jdGlvbiwgZ2V0SWQsIG1lcmdlQXJpYUF0dHJpYnV0ZVZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyJztcbmltcG9ydCB7IEtleXRpcERhdGEgfSBmcm9tICcuLi8uLi8uLi9LZXl0aXBEYXRhJztcbmltcG9ydCB7IGlzSXRlbURpc2FibGVkLCBoYXNTdWJtZW51IH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2NvbnRleHR1YWxNZW51L2luZGV4JztcbmltcG9ydCB7IENvbnRleHR1YWxNZW51SXRlbSB9IGZyb20gJy4uL0NvbnRleHR1YWxNZW51SXRlbSc7XG52YXIgQ29udGV4dHVhbE1lbnVBbmNob3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbnRleHR1YWxNZW51QW5jaG9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbnRleHR1YWxNZW51QW5jaG9yKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX2FuY2hvciA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgICAgICBfdGhpcy5fZ2V0TWVtb2l6ZWRNZW51QnV0dG9uS2V5dGlwUHJvcHMgPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKGtleXRpcFByb3BzKSB7XG4gICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGtleXRpcFByb3BzKSwgeyBoYXNNZW51OiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgX3RoaXMuX2dldFN1Ym1lbnVUYXJnZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX2FuY2hvci5jdXJyZW50ID8gX3RoaXMuX2FuY2hvci5jdXJyZW50IDogdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25JdGVtQ2xpY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgb25JdGVtQ2xpY2sgPSBfYS5vbkl0ZW1DbGljaztcbiAgICAgICAgICAgIGlmIChvbkl0ZW1DbGljaykge1xuICAgICAgICAgICAgICAgIG9uSXRlbUNsaWNrKGl0ZW0sIGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX3JlbmRlckFyaWFEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIChhcmlhRGVzY3JpcHRpb24sIGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gSWYgYXJpYURlc2NyaXB0aW9uIGlzIGdpdmVuLCBkZXNjcmlwdGlvbklkIHdpbGwgYmUgYXNzaWduZWQgdG8gYXJpYURlc2NyaXB0aW9uU3BhblxuICAgICAgICAgICAgcmV0dXJuIGFyaWFEZXNjcmlwdGlvbiA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGlkOiBfdGhpcy5fYXJpYURlc2NyaXB0aW9uSWQsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH0sIGFyaWFEZXNjcmlwdGlvbikpIDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb250ZXh0dWFsTWVudUFuY2hvci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgY2xhc3NOYW1lcyA9IF9hLmNsYXNzTmFtZXMsIGluZGV4ID0gX2EuaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCA9IF9hLmZvY3VzYWJsZUVsZW1lbnRJbmRleCwgdG90YWxJdGVtQ291bnQgPSBfYS50b3RhbEl0ZW1Db3VudCwgaGFzQ2hlY2ttYXJrcyA9IF9hLmhhc0NoZWNrbWFya3MsIGhhc0ljb25zID0gX2EuaGFzSWNvbnMsIF9iID0gX2EuY29udGV4dHVhbE1lbnVJdGVtQXMsIENoaWxkcmVuUmVuZGVyZXIgPSBfYiA9PT0gdm9pZCAwID8gQ29udGV4dHVhbE1lbnVJdGVtIDogX2IsIGV4cGFuZGVkTWVudUl0ZW1LZXkgPSBfYS5leHBhbmRlZE1lbnVJdGVtS2V5LCBvbkl0ZW1DbGljayA9IF9hLm9uSXRlbUNsaWNrLCBvcGVuU3ViTWVudSA9IF9hLm9wZW5TdWJNZW51LCBkaXNtaXNzU3ViTWVudSA9IF9hLmRpc21pc3NTdWJNZW51LCBkaXNtaXNzTWVudSA9IF9hLmRpc21pc3NNZW51O1xuICAgICAgICB2YXIgYW5jaG9yUmVsID0gaXRlbS5yZWw7XG4gICAgICAgIGlmIChpdGVtLnRhcmdldCAmJiBpdGVtLnRhcmdldC50b0xvd2VyQ2FzZSgpID09PSAnX2JsYW5rJykge1xuICAgICAgICAgICAgYW5jaG9yUmVsID0gYW5jaG9yUmVsID8gYW5jaG9yUmVsIDogJ25vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXInOyAvLyBTYWZlIGRlZmF1bHQgdG8gcHJldmVudCB0YWJqYWNraW5nXG4gICAgICAgIH1cbiAgICAgICAgdmFyIGl0ZW1IYXNTdWJtZW51ID0gaGFzU3VibWVudShpdGVtKTtcbiAgICAgICAgdmFyIG5hdGl2ZVByb3BzID0gZ2V0TmF0aXZlUHJvcHMoaXRlbSwgYW5jaG9yUHJvcGVydGllcyk7XG4gICAgICAgIHZhciBkaXNhYmxlZCA9IGlzSXRlbURpc2FibGVkKGl0ZW0pO1xuICAgICAgICB2YXIgaXRlbVByb3BzID0gaXRlbS5pdGVtUHJvcHMsIGFyaWFEZXNjcmlwdGlvbiA9IGl0ZW0uYXJpYURlc2NyaXB0aW9uO1xuICAgICAgICB2YXIga2V5dGlwUHJvcHMgPSBpdGVtLmtleXRpcFByb3BzO1xuICAgICAgICBpZiAoa2V5dGlwUHJvcHMgJiYgaXRlbUhhc1N1Ym1lbnUpIHtcbiAgICAgICAgICAgIGtleXRpcFByb3BzID0gdGhpcy5fZ2V0TWVtb2l6ZWRNZW51QnV0dG9uS2V5dGlwUHJvcHMoa2V5dGlwUHJvcHMpO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGZvciBhcmlhRGVzY3JpcHRpb24gdG8gc2V0IHRoZSBfYXJpYURlc2NyaXB0aW9uSWQgYW5kIHJlbmRlciBhIGhpZGRlbiBzcGFuIHdpdGhcbiAgICAgICAgLy8gdGhlIGRlc2NyaXB0aW9uIGluIGl0IHRvIGJlIGFkZGVkIHRvIGFyaWFEZXNjcmliZWRCeVxuICAgICAgICBpZiAoYXJpYURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhRGVzY3JpcHRpb25JZCA9IGdldElkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFyaWFEZXNjcmliZWRCeUlkcyA9IG1lcmdlQXJpYUF0dHJpYnV0ZVZhbHVlcyhpdGVtLmFyaWFEZXNjcmliZWRCeSwgYXJpYURlc2NyaXB0aW9uID8gdGhpcy5fYXJpYURlc2NyaXB0aW9uSWQgOiB1bmRlZmluZWQsIG5hdGl2ZVByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10pO1xuICAgICAgICB2YXIgYWRkaXRpb25hbEl0ZW1Qcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhRGVzY3JpYmVkQnlJZHMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChLZXl0aXBEYXRhLCB7IGtleXRpcFByb3BzOiBpdGVtLmtleXRpcFByb3BzLCBhcmlhRGVzY3JpYmVkQnk6IGFyaWFEZXNjcmliZWRCeUlkcywgZGlzYWJsZWQ6IGRpc2FibGVkIH0sIGZ1bmN0aW9uIChrZXl0aXBBdHRyaWJ1dGVzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgX19hc3NpZ24oe30sIGFkZGl0aW9uYWxJdGVtUHJvcGVydGllcywgbmF0aXZlUHJvcHMsIGtleXRpcEF0dHJpYnV0ZXMsIHsgcmVmOiBfdGhpcy5fYW5jaG9yLCBocmVmOiBpdGVtLmhyZWYsIHRhcmdldDogaXRlbS50YXJnZXQsIHJlbDogYW5jaG9yUmVsLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMucm9vdCwgcm9sZTogXCJtZW51aXRlbVwiLCBcImFyaWEtaGFzcG9wdXBcIjogaXRlbUhhc1N1Ym1lbnUgfHwgdW5kZWZpbmVkLCBcImFyaWEtZXhwYW5kZWRcIjogaXRlbUhhc1N1Ym1lbnUgPyBpdGVtLmtleSA9PT0gZXhwYW5kZWRNZW51SXRlbUtleSA6IHVuZGVmaW5lZCwgXCJhcmlhLXBvc2luc2V0XCI6IGZvY3VzYWJsZUVsZW1lbnRJbmRleCArIDEsIFwiYXJpYS1zZXRzaXplXCI6IHRvdGFsSXRlbUNvdW50LCBcImFyaWEtZGlzYWJsZWRcIjogaXNJdGVtRGlzYWJsZWQoaXRlbSksIFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgICAgIHN0eWxlOiBpdGVtLnN0eWxlLCBvbkNsaWNrOiBfdGhpcy5fb25JdGVtQ2xpY2ssIG9uTW91c2VFbnRlcjogX3RoaXMuX29uSXRlbU1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZTogX3RoaXMuX29uSXRlbU1vdXNlTGVhdmUsIG9uTW91c2VNb3ZlOiBfdGhpcy5fb25JdGVtTW91c2VNb3ZlLCBvbktleURvd246IGl0ZW1IYXNTdWJtZW51ID8gX3RoaXMuX29uSXRlbUtleURvd24gOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGlsZHJlblJlbmRlcmVyLCBfX2Fzc2lnbih7IGNvbXBvbmVudFJlZjogaXRlbS5jb21wb25lbnRSZWYsIGl0ZW06IGl0ZW0sIGNsYXNzTmFtZXM6IGNsYXNzTmFtZXMsIGluZGV4OiBpbmRleCwgb25DaGVja21hcmtDbGljazogaGFzQ2hlY2ttYXJrcyAmJiBvbkl0ZW1DbGljayA/IG9uSXRlbUNsaWNrIDogdW5kZWZpbmVkLCBoYXNJY29uczogaGFzSWNvbnMsIG9wZW5TdWJNZW51OiBvcGVuU3ViTWVudSwgZGlzbWlzc1N1Yk1lbnU6IGRpc21pc3NTdWJNZW51LCBkaXNtaXNzTWVudTogZGlzbWlzc01lbnUsIGdldFN1Ym1lbnVUYXJnZXQ6IF90aGlzLl9nZXRTdWJtZW51VGFyZ2V0IH0sIGl0ZW1Qcm9wcykpLFxuICAgICAgICAgICAgICAgIF90aGlzLl9yZW5kZXJBcmlhRGVzY3JpcHRpb24oYXJpYURlc2NyaXB0aW9uLCBjbGFzc05hbWVzLnNjcmVlblJlYWRlclRleHQpKSk7IH0pKSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGV4dHVhbE1lbnVBbmNob3I7XG59KENvbnRleHR1YWxNZW51SXRlbVdyYXBwZXIpKTtcbmV4cG9ydCB7IENvbnRleHR1YWxNZW51QW5jaG9yIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudUFuY2hvci5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBidXR0b25Qcm9wZXJ0aWVzLCBnZXROYXRpdmVQcm9wcywgbWVtb2l6ZUZ1bmN0aW9uLCBnZXRJZCwgbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IENvbnRleHR1YWxNZW51SXRlbVdyYXBwZXIgfSBmcm9tICcuL0NvbnRleHR1YWxNZW51SXRlbVdyYXBwZXInO1xuaW1wb3J0IHsgS2V5dGlwRGF0YSB9IGZyb20gJy4uLy4uLy4uL0tleXRpcERhdGEnO1xuaW1wb3J0IHsgZ2V0SXNDaGVja2VkLCBpc0l0ZW1EaXNhYmxlZCwgaGFzU3VibWVudSwgZ2V0TWVudUl0ZW1BcmlhUm9sZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9jb250ZXh0dWFsTWVudS9pbmRleCc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUl0ZW0gfSBmcm9tICcuLi9Db250ZXh0dWFsTWVudUl0ZW0nO1xudmFyIENvbnRleHR1YWxNZW51QnV0dG9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb250ZXh0dWFsTWVudUJ1dHRvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb250ZXh0dWFsTWVudUJ1dHRvbigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl9idG4gPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgX3RoaXMuX2dldE1lbW9pemVkTWVudUJ1dHRvbktleXRpcFByb3BzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uIChrZXl0aXBQcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBrZXl0aXBQcm9wcyksIHsgaGFzTWVudTogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIF90aGlzLl9yZW5kZXJBcmlhRGVzY3JpcHRpb24gPSBmdW5jdGlvbiAoYXJpYURlc2NyaXB0aW9uLCBjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIC8vIElmIGFyaWFEZXNjcmlwdGlvbiBpcyBnaXZlbiwgZGVzY3JpcHRpb25JZCB3aWxsIGJlIGFzc2lnbmVkIHRvIGFyaWFEZXNjcmlwdGlvblNwYW5cbiAgICAgICAgICAgIHJldHVybiBhcmlhRGVzY3JpcHRpb24gPyAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBpZDogX3RoaXMuX2FyaWFEZXNjcmlwdGlvbklkLCBjbGFzc05hbWU6IGNsYXNzTmFtZSB9LCBhcmlhRGVzY3JpcHRpb24pKSA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9nZXRTdWJtZW51VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9idG4uY3VycmVudCA/IF90aGlzLl9idG4uY3VycmVudCA6IHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb250ZXh0dWFsTWVudUJ1dHRvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgY2xhc3NOYW1lcyA9IF9hLmNsYXNzTmFtZXMsIGluZGV4ID0gX2EuaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCA9IF9hLmZvY3VzYWJsZUVsZW1lbnRJbmRleCwgdG90YWxJdGVtQ291bnQgPSBfYS50b3RhbEl0ZW1Db3VudCwgaGFzQ2hlY2ttYXJrcyA9IF9hLmhhc0NoZWNrbWFya3MsIGhhc0ljb25zID0gX2EuaGFzSWNvbnMsIF9iID0gX2EuY29udGV4dHVhbE1lbnVJdGVtQXMsIENoaWxkcmVuUmVuZGVyZXIgPSBfYiA9PT0gdm9pZCAwID8gQ29udGV4dHVhbE1lbnVJdGVtIDogX2IsIGV4cGFuZGVkTWVudUl0ZW1LZXkgPSBfYS5leHBhbmRlZE1lbnVJdGVtS2V5LCBvbkl0ZW1Nb3VzZURvd24gPSBfYS5vbkl0ZW1Nb3VzZURvd24sIG9uSXRlbUNsaWNrID0gX2Eub25JdGVtQ2xpY2ssIG9wZW5TdWJNZW51ID0gX2Eub3BlblN1Yk1lbnUsIGRpc21pc3NTdWJNZW51ID0gX2EuZGlzbWlzc1N1Yk1lbnUsIGRpc21pc3NNZW51ID0gX2EuZGlzbWlzc01lbnU7XG4gICAgICAgIHZhciBpc0NoZWNrZWQgPSBnZXRJc0NoZWNrZWQoaXRlbSk7XG4gICAgICAgIHZhciBjYW5DaGVjayA9IGlzQ2hlY2tlZCAhPT0gbnVsbDtcbiAgICAgICAgdmFyIGRlZmF1bHRSb2xlID0gZ2V0TWVudUl0ZW1BcmlhUm9sZShpdGVtKTtcbiAgICAgICAgdmFyIGl0ZW1IYXNTdWJtZW51ID0gaGFzU3VibWVudShpdGVtKTtcbiAgICAgICAgdmFyIGl0ZW1Qcm9wcyA9IGl0ZW0uaXRlbVByb3BzLCBhcmlhTGFiZWwgPSBpdGVtLmFyaWFMYWJlbCwgYXJpYURlc2NyaXB0aW9uID0gaXRlbS5hcmlhRGVzY3JpcHRpb247XG4gICAgICAgIHZhciBidXR0b25OYXRpdmVQcm9wZXJ0aWVzID0gZ2V0TmF0aXZlUHJvcHMoaXRlbSwgYnV0dG9uUHJvcGVydGllcyk7XG4gICAgICAgIC8vIERvIG5vdCBhZGQgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSB0byB0aGUgYnV0dG9uIHNvIHRoYXQgaXQgaXMgZm9jdXNhYmxlXG4gICAgICAgIGRlbGV0ZSBidXR0b25OYXRpdmVQcm9wZXJ0aWVzLmRpc2FibGVkO1xuICAgICAgICB2YXIgaXRlbVJvbGUgPSBpdGVtLnJvbGUgfHwgZGVmYXVsdFJvbGU7XG4gICAgICAgIC8vIENoZWNrIGZvciBhcmlhRGVzY3JpcHRpb24gdG8gc2V0IHRoZSBfYXJpYURlc2NyaXB0aW9uSWQgYW5kIHJlbmRlciBhIGhpZGRlbiBzcGFuIHdpdGhcbiAgICAgICAgLy8gdGhlIGRlc2NyaXB0aW9uIGluIGl0IHRvIGJlIGFkZGVkIHRvIGFyaWFEZXNjcmliZWRCeVxuICAgICAgICBpZiAoYXJpYURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhRGVzY3JpcHRpb25JZCA9IGdldElkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFyaWFEZXNjcmliZWRCeUlkcyA9IG1lcmdlQXJpYUF0dHJpYnV0ZVZhbHVlcyhpdGVtLmFyaWFEZXNjcmliZWRCeSwgYXJpYURlc2NyaXB0aW9uID8gdGhpcy5fYXJpYURlc2NyaXB0aW9uSWQgOiB1bmRlZmluZWQsIGJ1dHRvbk5hdGl2ZVByb3BlcnRpZXNbJ2FyaWEtZGVzY3JpYmVkYnknXSk7XG4gICAgICAgIHZhciBpdGVtQnV0dG9uUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgb25DbGljazogdGhpcy5fb25JdGVtQ2xpY2ssXG4gICAgICAgICAgICBvbktleURvd246IGl0ZW1IYXNTdWJtZW51ID8gdGhpcy5fb25JdGVtS2V5RG93biA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5fb25JdGVtTW91c2VFbnRlcixcbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZTogdGhpcy5fb25JdGVtTW91c2VMZWF2ZSxcbiAgICAgICAgICAgIG9uTW91c2VEb3duOiBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25JdGVtTW91c2VEb3duID8gb25JdGVtTW91c2VEb3duKGl0ZW0sIGV2KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbk1vdXNlTW92ZTogdGhpcy5fb25JdGVtTW91c2VNb3ZlLFxuICAgICAgICAgICAgaHJlZjogaXRlbS5ocmVmLFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCxcbiAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYURlc2NyaWJlZEJ5SWRzLFxuICAgICAgICAgICAgJ2FyaWEtaGFzcG9wdXAnOiBpdGVtSGFzU3VibWVudSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXJpYS1leHBhbmRlZCc6IGl0ZW1IYXNTdWJtZW51ID8gaXRlbS5rZXkgPT09IGV4cGFuZGVkTWVudUl0ZW1LZXkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXJpYS1wb3NpbnNldCc6IGZvY3VzYWJsZUVsZW1lbnRJbmRleCArIDEsXG4gICAgICAgICAgICAnYXJpYS1zZXRzaXplJzogdG90YWxJdGVtQ291bnQsXG4gICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IGlzSXRlbURpc2FibGVkKGl0ZW0pLFxuICAgICAgICAgICAgJ2FyaWEtY2hlY2tlZCc6IChpdGVtUm9sZSA9PT0gJ21lbnVpdGVtY2hlY2tib3gnIHx8IGl0ZW1Sb2xlID09PSAnbWVudWl0ZW1yYWRpbycpICYmIGNhbkNoZWNrID8gISFpc0NoZWNrZWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IGl0ZW1Sb2xlID09PSAnbWVudWl0ZW0nICYmIGNhbkNoZWNrID8gISFpc0NoZWNrZWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICByb2xlOiBpdGVtUm9sZSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgc3R5bGU6IGl0ZW0uc3R5bGUsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBrZXl0aXBQcm9wcyA9IGl0ZW0ua2V5dGlwUHJvcHM7XG4gICAgICAgIGlmIChrZXl0aXBQcm9wcyAmJiBpdGVtSGFzU3VibWVudSkge1xuICAgICAgICAgICAga2V5dGlwUHJvcHMgPSB0aGlzLl9nZXRNZW1vaXplZE1lbnVCdXR0b25LZXl0aXBQcm9wcyhrZXl0aXBQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEtleXRpcERhdGEsIHsga2V5dGlwUHJvcHM6IGtleXRpcFByb3BzLCBhcmlhRGVzY3JpYmVkQnk6IGFyaWFEZXNjcmliZWRCeUlkcywgZGlzYWJsZWQ6IGlzSXRlbURpc2FibGVkKGl0ZW0pIH0sIGZ1bmN0aW9uIChrZXl0aXBBdHRyaWJ1dGVzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfX2Fzc2lnbih7IHJlZjogX3RoaXMuX2J0biB9LCBidXR0b25OYXRpdmVQcm9wZXJ0aWVzLCBpdGVtQnV0dG9uUHJvcGVydGllcywga2V5dGlwQXR0cmlidXRlcyksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoaWxkcmVuUmVuZGVyZXIsIF9fYXNzaWduKHsgY29tcG9uZW50UmVmOiBpdGVtLmNvbXBvbmVudFJlZiwgaXRlbTogaXRlbSwgY2xhc3NOYW1lczogY2xhc3NOYW1lcywgaW5kZXg6IGluZGV4LCBvbkNoZWNrbWFya0NsaWNrOiBoYXNDaGVja21hcmtzICYmIG9uSXRlbUNsaWNrID8gb25JdGVtQ2xpY2sgOiB1bmRlZmluZWQsIGhhc0ljb25zOiBoYXNJY29ucywgb3BlblN1Yk1lbnU6IG9wZW5TdWJNZW51LCBkaXNtaXNzU3ViTWVudTogZGlzbWlzc1N1Yk1lbnUsIGRpc21pc3NNZW51OiBkaXNtaXNzTWVudSwgZ2V0U3VibWVudVRhcmdldDogX3RoaXMuX2dldFN1Ym1lbnVUYXJnZXQgfSwgaXRlbVByb3BzKSksXG4gICAgICAgICAgICBfdGhpcy5fcmVuZGVyQXJpYURlc2NyaXB0aW9uKGFyaWFEZXNjcmlwdGlvbiwgY2xhc3NOYW1lcy5zY3JlZW5SZWFkZXJUZXh0KSkpOyB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gQ29udGV4dHVhbE1lbnVCdXR0b247XG59KENvbnRleHR1YWxNZW51SXRlbVdyYXBwZXIpKTtcbmV4cG9ydCB7IENvbnRleHR1YWxNZW51QnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudUJ1dHRvbi5qcy5tYXAiLCJleHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHZhciB0aGVtZSA9IHByb3BzLnRoZW1lLCBnZXRDbGFzc05hbWVzID0gcHJvcHMuZ2V0Q2xhc3NOYW1lcywgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIGlmICghdGhlbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVtZSBpcyB1bmRlZmluZWQgb3IgbnVsbC4nKTtcbiAgICB9XG4gICAgaWYgKGdldENsYXNzTmFtZXMpIHtcbiAgICAgICAgdmFyIG5hbWVzID0gZ2V0Q2xhc3NOYW1lcyh0aGVtZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3cmFwcGVyOiBbbmFtZXMud3JhcHBlcl0sXG4gICAgICAgICAgICBkaXZpZGVyOiBbbmFtZXMuZGl2aWRlcl0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHdyYXBwZXI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgXSxcbiAgICAgICAgZGl2aWRlcjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsVGVydGlhcnlBbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVydGljYWxEaXZpZGVyLnN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbGFzc05hbWVzRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oKTtcbmV4cG9ydCB2YXIgVmVydGljYWxEaXZpZGVyQmFzZSA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICB2YXIgc3R5bGVzID0gcHJvcHMuc3R5bGVzLCB0aGVtZSA9IHByb3BzLnRoZW1lLCBkZXByZWNhdGVkR2V0Q2xhc3NOYW1lcyA9IHByb3BzLmdldENsYXNzTmFtZXMsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7IHRoZW1lOiB0aGVtZSwgZ2V0Q2xhc3NOYW1lczogZGVwcmVjYXRlZEdldENsYXNzTmFtZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMud3JhcHBlciwgcmVmOiByZWYgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuZGl2aWRlciB9KSkpO1xufSk7XG5WZXJ0aWNhbERpdmlkZXJCYXNlLmRpc3BsYXlOYW1lID0gJ1ZlcnRpY2FsRGl2aWRlckJhc2UnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVydGljYWxEaXZpZGVyLmJhc2UuanMubWFwIiwiaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9WZXJ0aWNhbERpdmlkZXIuc3R5bGVzJztcbmltcG9ydCB7IFZlcnRpY2FsRGl2aWRlckJhc2UgfSBmcm9tICcuL1ZlcnRpY2FsRGl2aWRlci5iYXNlJztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5leHBvcnQgdmFyIFZlcnRpY2FsRGl2aWRlciA9IHN0eWxlZChWZXJ0aWNhbERpdmlkZXJCYXNlLCBnZXRTdHlsZXMsIHVuZGVmaW5lZCwge1xuICAgIHNjb3BlOiAnVmVydGljYWxEaXZpZGVyJyxcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VmVydGljYWxEaXZpZGVyLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGJ1dHRvblByb3BlcnRpZXMsIGdldE5hdGl2ZVByb3BzLCBLZXlDb2RlcywgbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzLCBtZW1vaXplRnVuY3Rpb24sIEFzeW5jLCBFdmVudEdyb3VwLCBnZXRJZCwgfSBmcm9tICcuLi8uLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29udGV4dHVhbE1lbnVJdGVtIH0gZnJvbSAnLi4vQ29udGV4dHVhbE1lbnVJdGVtJztcbmltcG9ydCB7IGdldFNwbGl0QnV0dG9uVmVydGljYWxEaXZpZGVyQ2xhc3NOYW1lcyB9IGZyb20gJy4uL0NvbnRleHR1YWxNZW51LmNsYXNzTmFtZXMnO1xuaW1wb3J0IHsgS2V5dGlwRGF0YSB9IGZyb20gJy4uLy4uLy4uL0tleXRpcERhdGEnO1xuaW1wb3J0IHsgZ2V0SXNDaGVja2VkLCBnZXRNZW51SXRlbUFyaWFSb2xlLCBoYXNTdWJtZW51LCBpc0l0ZW1EaXNhYmxlZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9jb250ZXh0dWFsTWVudS9pbmRleCc7XG5pbXBvcnQgeyBWZXJ0aWNhbERpdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9EaXZpZGVyJztcbmltcG9ydCB7IENvbnRleHR1YWxNZW51SXRlbVdyYXBwZXIgfSBmcm9tICcuL0NvbnRleHR1YWxNZW51SXRlbVdyYXBwZXInO1xudmFyIFRvdWNoSWRsZURlbGF5ID0gNTAwOyAvKiBtcyAqL1xudmFyIENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ29udGV4dHVhbE1lbnVTcGxpdEJ1dHRvbihwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX2dldE1lbW9pemVkTWVudUJ1dHRvbktleXRpcFByb3BzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uIChrZXl0aXBQcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBrZXl0aXBQcm9wcyksIHsgaGFzTWVudTogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIF90aGlzLl9vbkl0ZW1LZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wcm9wcywgaXRlbSA9IF9hLml0ZW0sIG9uSXRlbUtleURvd24gPSBfYS5vbkl0ZW1LZXlEb3duO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBpZiAoZXYud2hpY2ggPT09IEtleUNvZGVzLmVudGVyKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2V4ZWN1dGVJdGVtQ2xpY2soZXYpO1xuICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvbkl0ZW1LZXlEb3duKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtS2V5RG93bihpdGVtLCBldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9nZXRTdWJtZW51VGFyZ2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLl9zcGxpdEJ1dHRvbjtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX3JlbmRlckFyaWFEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIChhcmlhRGVzY3JpcHRpb24sIGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgLy8gSWYgYXJpYURlc2NyaXB0aW9uIGlzIGdpdmVuLCBkZXNjcmlwdGlvbklkIHdpbGwgYmUgYXNzaWduZWQgdG8gYXJpYURlc2NyaXB0aW9uU3BhblxuICAgICAgICAgICAgcmV0dXJuIGFyaWFEZXNjcmlwdGlvbiA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGlkOiBfdGhpcy5fYXJpYURlc2NyaXB0aW9uSWQsIGNsYXNzTmFtZTogY2xhc3NOYW1lIH0sIGFyaWFEZXNjcmlwdGlvbikpIDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uSXRlbU1vdXNlRW50ZXJQcmltYXJ5ID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wcm9wcywgaXRlbSA9IF9hLml0ZW0sIG9uSXRlbU1vdXNlRW50ZXIgPSBfYS5vbkl0ZW1Nb3VzZUVudGVyO1xuICAgICAgICAgICAgaWYgKG9uSXRlbU1vdXNlRW50ZXIpIHtcbiAgICAgICAgICAgICAgICBvbkl0ZW1Nb3VzZUVudGVyKF9fYXNzaWduKF9fYXNzaWduKHt9LCBpdGVtKSwgeyBzdWJNZW51UHJvcHM6IHVuZGVmaW5lZCwgaXRlbXM6IHVuZGVmaW5lZCB9KSwgZXYsIF90aGlzLl9zcGxpdEJ1dHRvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbkl0ZW1Nb3VzZUVudGVySWNvbiA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBvbkl0ZW1Nb3VzZUVudGVyID0gX2Eub25JdGVtTW91c2VFbnRlcjtcbiAgICAgICAgICAgIGlmIChvbkl0ZW1Nb3VzZUVudGVyKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtTW91c2VFbnRlcihpdGVtLCBldiwgX3RoaXMuX3NwbGl0QnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uSXRlbU1vdXNlTW92ZVByaW1hcnkgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBpdGVtID0gX2EuaXRlbSwgb25JdGVtTW91c2VNb3ZlID0gX2Eub25JdGVtTW91c2VNb3ZlO1xuICAgICAgICAgICAgaWYgKG9uSXRlbU1vdXNlTW92ZSkge1xuICAgICAgICAgICAgICAgIG9uSXRlbU1vdXNlTW92ZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaXRlbSksIHsgc3ViTWVudVByb3BzOiB1bmRlZmluZWQsIGl0ZW1zOiB1bmRlZmluZWQgfSksIGV2LCBfdGhpcy5fc3BsaXRCdXR0b24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25JdGVtTW91c2VNb3ZlSWNvbiA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIGl0ZW0gPSBfYS5pdGVtLCBvbkl0ZW1Nb3VzZU1vdmUgPSBfYS5vbkl0ZW1Nb3VzZU1vdmU7XG4gICAgICAgICAgICBpZiAob25JdGVtTW91c2VNb3ZlKSB7XG4gICAgICAgICAgICAgICAgb25JdGVtTW91c2VNb3ZlKGl0ZW0sIGV2LCBfdGhpcy5fc3BsaXRCdXR0b24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25JY29uSXRlbUNsaWNrID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wcm9wcywgaXRlbSA9IF9hLml0ZW0sIG9uSXRlbUNsaWNrQmFzZSA9IF9hLm9uSXRlbUNsaWNrQmFzZTtcbiAgICAgICAgICAgIGlmIChvbkl0ZW1DbGlja0Jhc2UpIHtcbiAgICAgICAgICAgICAgICBvbkl0ZW1DbGlja0Jhc2UoaXRlbSwgZXYsIChfdGhpcy5fc3BsaXRCdXR0b24gPyBfdGhpcy5fc3BsaXRCdXR0b24gOiBldi5jdXJyZW50VGFyZ2V0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9leGVjdXRlSXRlbUNsaWNrID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wcm9wcywgaXRlbSA9IF9hLml0ZW0sIGV4ZWN1dGVJdGVtQ2xpY2sgPSBfYS5leGVjdXRlSXRlbUNsaWNrLCBvbkl0ZW1DbGljayA9IF9hLm9uSXRlbUNsaWNrO1xuICAgICAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQgfHwgaXRlbS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF90aGlzLl9wcm9jZXNzaW5nVG91Y2ggJiYgIWl0ZW0uY2FuQ2hlY2sgJiYgb25JdGVtQ2xpY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb25JdGVtQ2xpY2soaXRlbSwgZXYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4ZWN1dGVJdGVtQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBleGVjdXRlSXRlbUNsaWNrKGl0ZW0sIGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uVG91Y2hTdGFydCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKF90aGlzLl9zcGxpdEJ1dHRvbiAmJiAhKCdvbnBvaW50ZXJkb3duJyBpbiBfdGhpcy5fc3BsaXRCdXR0b24pKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX2hhbmRsZVRvdWNoQW5kUG9pbnRlckV2ZW50KGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUG9pbnRlckRvd24gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIGlmIChldi5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgICAgIF90aGlzLl9oYW5kbGVUb3VjaEFuZFBvaW50ZXJFdmVudChldik7XG4gICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX2FzeW5jID0gbmV3IEFzeW5jKF90aGlzKTtcbiAgICAgICAgX3RoaXMuX2V2ZW50cyA9IG5ldyBFdmVudEdyb3VwKF90aGlzKTtcbiAgICAgICAgX3RoaXMuX2Rpc21pc3NMYWJlbElkID0gZ2V0SWQoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBDb250ZXh0dWFsTWVudVNwbGl0QnV0dG9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NwbGl0QnV0dG9uICYmICdvbnBvaW50ZXJkb3duJyBpbiB0aGlzLl9zcGxpdEJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLm9uKHRoaXMuX3NwbGl0QnV0dG9uLCAncG9pbnRlcmRvd24nLCB0aGlzLl9vblBvaW50ZXJEb3duLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQ29udGV4dHVhbE1lbnVTcGxpdEJ1dHRvbi5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2FzeW5jLmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzLmRpc3Bvc2UoKTtcbiAgICB9O1xuICAgIENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLnByb3BzLCBpdGVtID0gX2IuaXRlbSwgY2xhc3NOYW1lcyA9IF9iLmNsYXNzTmFtZXMsIGluZGV4ID0gX2IuaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCA9IF9iLmZvY3VzYWJsZUVsZW1lbnRJbmRleCwgdG90YWxJdGVtQ291bnQgPSBfYi50b3RhbEl0ZW1Db3VudCwgaGFzQ2hlY2ttYXJrcyA9IF9iLmhhc0NoZWNrbWFya3MsIGhhc0ljb25zID0gX2IuaGFzSWNvbnMsIG9uSXRlbU1vdXNlTGVhdmUgPSBfYi5vbkl0ZW1Nb3VzZUxlYXZlLCBleHBhbmRlZE1lbnVJdGVtS2V5ID0gX2IuZXhwYW5kZWRNZW51SXRlbUtleTtcbiAgICAgICAgdmFyIGl0ZW1IYXNTdWJtZW51ID0gaGFzU3VibWVudShpdGVtKTtcbiAgICAgICAgdmFyIGtleXRpcFByb3BzID0gaXRlbS5rZXl0aXBQcm9wcztcbiAgICAgICAgaWYgKGtleXRpcFByb3BzKSB7XG4gICAgICAgICAgICBrZXl0aXBQcm9wcyA9IHRoaXMuX2dldE1lbW9pemVkTWVudUJ1dHRvbktleXRpcFByb3BzKGtleXRpcFByb3BzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDaGVjayBmb3IgYXJpYURlc2NyaXB0aW9uIHRvIHNldCB0aGUgX2FyaWFEZXNjcmlwdGlvbklkIGFuZCByZW5kZXIgYSBoaWRkZW4gc3BhbiB3aXRoXG4gICAgICAgIC8vIHRoZSBkZXNjcmlwdGlvbiBpbiBpdCB0byBiZSBhZGRlZCB0byBhcmlhRGVzY3JpYmVkQnlcbiAgICAgICAgdmFyIGFyaWFEZXNjcmlwdGlvbiA9IGl0ZW0uYXJpYURlc2NyaXB0aW9uO1xuICAgICAgICBpZiAoYXJpYURlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9hcmlhRGVzY3JpcHRpb25JZCA9IGdldElkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGFyaWFDaGVja2VkID0gKF9hID0gZ2V0SXNDaGVja2VkKGl0ZW0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChLZXl0aXBEYXRhLCB7IGtleXRpcFByb3BzOiBrZXl0aXBQcm9wcywgZGlzYWJsZWQ6IGlzSXRlbURpc2FibGVkKGl0ZW0pIH0sIGZ1bmN0aW9uIChrZXl0aXBBdHRyaWJ1dGVzKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IFwiZGF0YS1rdHAtdGFyZ2V0XCI6IGtleXRpcEF0dHJpYnV0ZXNbJ2RhdGEta3RwLXRhcmdldCddLCByZWY6IGZ1bmN0aW9uIChzcGxpdEJ1dHRvbikgeyByZXR1cm4gKF90aGlzLl9zcGxpdEJ1dHRvbiA9IHNwbGl0QnV0dG9uKTsgfSwgcm9sZTogZ2V0TWVudUl0ZW1BcmlhUm9sZShpdGVtKSwgXCJhcmlhLWxhYmVsXCI6IGl0ZW0uYXJpYUxhYmVsLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuc3BsaXRDb250YWluZXIsIFwiYXJpYS1kaXNhYmxlZFwiOiBpc0l0ZW1EaXNhYmxlZChpdGVtKSwgXCJhcmlhLWV4cGFuZGVkXCI6IGl0ZW1IYXNTdWJtZW51ID8gaXRlbS5rZXkgPT09IGV4cGFuZGVkTWVudUl0ZW1LZXkgOiB1bmRlZmluZWQsIFwiYXJpYS1oYXNwb3B1cFwiOiB0cnVlLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzKGl0ZW0uYXJpYURlc2NyaWJlZEJ5LCBhcmlhRGVzY3JpcHRpb24gPyBfdGhpcy5fYXJpYURlc2NyaXB0aW9uSWQgOiB1bmRlZmluZWQsIGtleXRpcEF0dHJpYnV0ZXNbJ2FyaWEtZGVzY3JpYmVkYnknXSksIFwiYXJpYS1jaGVja2VkXCI6IGFyaWFDaGVja2VkLCBcImFyaWEtcG9zaW5zZXRcIjogZm9jdXNhYmxlRWxlbWVudEluZGV4ICsgMSwgXCJhcmlhLXNldHNpemVcIjogdG90YWxJdGVtQ291bnQsIG9uTW91c2VFbnRlcjogX3RoaXMuX29uSXRlbU1vdXNlRW50ZXJQcmltYXJ5LCBvbk1vdXNlTGVhdmU6IG9uSXRlbU1vdXNlTGVhdmUgPyBvbkl0ZW1Nb3VzZUxlYXZlLmJpbmQoX3RoaXMsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBpdGVtKSwgeyBzdWJNZW51UHJvcHM6IG51bGwsIGl0ZW1zOiBudWxsIH0pKSA6IHVuZGVmaW5lZCwgb25Nb3VzZU1vdmU6IF90aGlzLl9vbkl0ZW1Nb3VzZU1vdmVQcmltYXJ5LCBvbktleURvd246IF90aGlzLl9vbkl0ZW1LZXlEb3duLCBvbkNsaWNrOiBfdGhpcy5fZXhlY3V0ZUl0ZW1DbGljaywgb25Ub3VjaFN0YXJ0OiBfdGhpcy5fb25Ub3VjaFN0YXJ0LCB0YWJJbmRleDogMCwgXCJkYXRhLWlzLWZvY3VzYWJsZVwiOiB0cnVlLCBcImFyaWEtcm9sZWRlc2NyaXB0aW9uXCI6IGl0ZW1bJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJ10gfSxcbiAgICAgICAgICAgIF90aGlzLl9yZW5kZXJTcGxpdFByaW1hcnlCdXR0b24oaXRlbSwgY2xhc3NOYW1lcywgaW5kZXgsIGhhc0NoZWNrbWFya3MsIGhhc0ljb25zKSxcbiAgICAgICAgICAgIF90aGlzLl9yZW5kZXJTcGxpdERpdmlkZXIoaXRlbSksXG4gICAgICAgICAgICBfdGhpcy5fcmVuZGVyU3BsaXRJY29uQnV0dG9uKGl0ZW0sIGNsYXNzTmFtZXMsIGluZGV4LCBrZXl0aXBBdHRyaWJ1dGVzKSxcbiAgICAgICAgICAgIF90aGlzLl9yZW5kZXJBcmlhRGVzY3JpcHRpb24oYXJpYURlc2NyaXB0aW9uLCBjbGFzc05hbWVzLnNjcmVlblJlYWRlclRleHQpKSk7IH0pKTtcbiAgICB9O1xuICAgIENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24ucHJvdG90eXBlLl9yZW5kZXJTcGxpdFByaW1hcnlCdXR0b24gPSBmdW5jdGlvbiAoaXRlbSwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgY2xhc3NOYW1lcywgaW5kZXgsIGhhc0NoZWNrbWFya3MsIGhhc0ljb25zKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIF9iID0gX2EuY29udGV4dHVhbE1lbnVJdGVtQXMsIENoaWxkcmVuUmVuZGVyZXIgPSBfYiA9PT0gdm9pZCAwID8gQ29udGV4dHVhbE1lbnVJdGVtIDogX2IsIG9uSXRlbUNsaWNrID0gX2Eub25JdGVtQ2xpY2s7XG4gICAgICAgIHZhciBpdGVtUHJvcHMgPSB7XG4gICAgICAgICAgICBrZXk6IGl0ZW0ua2V5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGlzSXRlbURpc2FibGVkKGl0ZW0pIHx8IGl0ZW0ucHJpbWFyeURpc2FibGVkLFxuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24gKi9cbiAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCB8fCBpdGVtLm5hbWUsXG4gICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBpdGVtLnNlY29uZGFyeVRleHQsXG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uICovXG4gICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMuc3BsaXRQcmltYXJ5LFxuICAgICAgICAgICAgY2FuQ2hlY2s6IGl0ZW0uY2FuQ2hlY2ssXG4gICAgICAgICAgICBpc0NoZWNrZWQ6IGl0ZW0uaXNDaGVja2VkLFxuICAgICAgICAgICAgY2hlY2tlZDogaXRlbS5jaGVja2VkLFxuICAgICAgICAgICAgaWNvblByb3BzOiBpdGVtLmljb25Qcm9wcyxcbiAgICAgICAgICAgIGlkOiB0aGlzLl9kaXNtaXNzTGFiZWxJZCxcbiAgICAgICAgICAgIG9uUmVuZGVySWNvbjogaXRlbS5vblJlbmRlckljb24sXG4gICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGEsXG4gICAgICAgICAgICAnZGF0YS1pcy1mb2N1c2FibGUnOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGl0ZW1Db21wb25lbnRQcm9wcyA9IGl0ZW0uaXRlbVByb3BzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX19hc3NpZ24oe30sIGdldE5hdGl2ZVByb3BzKGl0ZW1Qcm9wcywgYnV0dG9uUHJvcGVydGllcykpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGlsZHJlblJlbmRlcmVyLCBfX2Fzc2lnbih7IFwiZGF0YS1pcy1mb2N1c2FibGVcIjogZmFsc2UsIGl0ZW06IGl0ZW1Qcm9wcywgY2xhc3NOYW1lczogY2xhc3NOYW1lcywgaW5kZXg6IGluZGV4LCBvbkNoZWNrbWFya0NsaWNrOiBoYXNDaGVja21hcmtzICYmIG9uSXRlbUNsaWNrID8gb25JdGVtQ2xpY2sgOiB1bmRlZmluZWQsIGhhc0ljb25zOiBoYXNJY29ucyB9LCBpdGVtQ29tcG9uZW50UHJvcHMpKSkpO1xuICAgIH07XG4gICAgQ29udGV4dHVhbE1lbnVTcGxpdEJ1dHRvbi5wcm90b3R5cGUuX3JlbmRlclNwbGl0RGl2aWRlciA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHZhciBnZXREaXZpZGVyQ2xhc3NOYW1lcyA9IGl0ZW0uZ2V0U3BsaXRCdXR0b25WZXJ0aWNhbERpdmlkZXJDbGFzc05hbWVzIHx8IGdldFNwbGl0QnV0dG9uVmVydGljYWxEaXZpZGVyQ2xhc3NOYW1lcztcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmVydGljYWxEaXZpZGVyLCB7IGdldENsYXNzTmFtZXM6IGdldERpdmlkZXJDbGFzc05hbWVzIH0pO1xuICAgIH07XG4gICAgQ29udGV4dHVhbE1lbnVTcGxpdEJ1dHRvbi5wcm90b3R5cGUuX3JlbmRlclNwbGl0SWNvbkJ1dHRvbiA9IGZ1bmN0aW9uIChpdGVtLCBjbGFzc05hbWVzLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgaW5kZXgsIGtleXRpcEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgX2IgPSBfYS5jb250ZXh0dWFsTWVudUl0ZW1BcywgQ2hpbGRyZW5SZW5kZXJlciA9IF9iID09PSB2b2lkIDAgPyBDb250ZXh0dWFsTWVudUl0ZW0gOiBfYiwgb25JdGVtTW91c2VMZWF2ZSA9IF9hLm9uSXRlbU1vdXNlTGVhdmUsIG9uSXRlbU1vdXNlRG93biA9IF9hLm9uSXRlbU1vdXNlRG93biwgb3BlblN1Yk1lbnUgPSBfYS5vcGVuU3ViTWVudSwgZGlzbWlzc1N1Yk1lbnUgPSBfYS5kaXNtaXNzU3ViTWVudSwgZGlzbWlzc01lbnUgPSBfYS5kaXNtaXNzTWVudTtcbiAgICAgICAgdmFyIGl0ZW1Qcm9wcyA9IHtcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuX29uSWNvbkl0ZW1DbGljayxcbiAgICAgICAgICAgIGRpc2FibGVkOiBpc0l0ZW1EaXNhYmxlZChpdGVtKSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zcGxpdE1lbnUsXG4gICAgICAgICAgICBzdWJNZW51UHJvcHM6IGl0ZW0uc3ViTWVudVByb3BzLFxuICAgICAgICAgICAgc3VibWVudUljb25Qcm9wczogaXRlbS5zdWJtZW51SWNvblByb3BzLFxuICAgICAgICAgICAgc3BsaXQ6IHRydWUsXG4gICAgICAgICAgICBrZXk6IGl0ZW0ua2V5LFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IHRoaXMuX2Rpc21pc3NMYWJlbElkLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgYnV0dG9uUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZ2V0TmF0aXZlUHJvcHMoaXRlbVByb3BzLCBidXR0b25Qcm9wZXJ0aWVzKSksIHtcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcjogdGhpcy5fb25JdGVtTW91c2VFbnRlckljb24sXG4gICAgICAgICAgICBvbk1vdXNlTGVhdmU6IG9uSXRlbU1vdXNlTGVhdmUgPyBvbkl0ZW1Nb3VzZUxlYXZlLmJpbmQodGhpcywgaXRlbSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvbk1vdXNlRG93bjogZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9uSXRlbU1vdXNlRG93biA/IG9uSXRlbU1vdXNlRG93bihpdGVtLCBldikgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25Nb3VzZU1vdmU6IHRoaXMuX29uSXRlbU1vdXNlTW92ZUljb24sXG4gICAgICAgICAgICAnZGF0YS1pcy1mb2N1c2FibGUnOiBmYWxzZSxcbiAgICAgICAgICAgICdkYXRhLWt0cC1leGVjdXRlLXRhcmdldCc6IGtleXRpcEF0dHJpYnV0ZXNbJ2RhdGEta3RwLWV4ZWN1dGUtdGFyZ2V0J10sXG4gICAgICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgaXRlbUNvbXBvbmVudFByb3BzID0gaXRlbS5pdGVtUHJvcHM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLCBfX2Fzc2lnbih7fSwgYnV0dG9uUHJvcHMpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDaGlsZHJlblJlbmRlcmVyLCBfX2Fzc2lnbih7IGNvbXBvbmVudFJlZjogaXRlbS5jb21wb25lbnRSZWYsIGl0ZW06IGl0ZW1Qcm9wcywgY2xhc3NOYW1lczogY2xhc3NOYW1lcywgaW5kZXg6IGluZGV4LCBoYXNJY29uczogZmFsc2UsIG9wZW5TdWJNZW51OiBvcGVuU3ViTWVudSwgZGlzbWlzc1N1Yk1lbnU6IGRpc21pc3NTdWJNZW51LCBkaXNtaXNzTWVudTogZGlzbWlzc01lbnUsIGdldFN1Ym1lbnVUYXJnZXQ6IHRoaXMuX2dldFN1Ym1lbnVUYXJnZXQgfSwgaXRlbUNvbXBvbmVudFByb3BzKSkpKTtcbiAgICB9O1xuICAgIENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24ucHJvdG90eXBlLl9oYW5kbGVUb3VjaEFuZFBvaW50ZXJFdmVudCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgb25UYXAgPSB0aGlzLnByb3BzLm9uVGFwO1xuICAgICAgICBpZiAob25UYXApIHtcbiAgICAgICAgICAgIG9uVGFwKGV2KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgdGltZW91dCBmcm9tIGEgcHJldmlvdXMgdG91Y2gvcG9pbnRlciBldmVudFxuICAgICAgICAvLyBjYW5jZWwgdGhhdCB0aW1lb3V0IHNvIHdlIGNhbiBzZXQgYSBuZXcgb25lLlxuICAgICAgICBpZiAodGhpcy5fbGFzdFRvdWNoVGltZW91dElkKSB7XG4gICAgICAgICAgICB0aGlzLl9hc3luYy5jbGVhclRpbWVvdXQodGhpcy5fbGFzdFRvdWNoVGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RUb3VjaFRpbWVvdXRJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9jZXNzaW5nVG91Y2ggPSB0cnVlO1xuICAgICAgICB0aGlzLl9sYXN0VG91Y2hUaW1lb3V0SWQgPSB0aGlzLl9hc3luYy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLl9wcm9jZXNzaW5nVG91Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgIF90aGlzLl9sYXN0VG91Y2hUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIFRvdWNoSWRsZURlbGF5KTtcbiAgICB9O1xuICAgIHJldHVybiBDb250ZXh0dWFsTWVudVNwbGl0QnV0dG9uO1xufShDb250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyKSk7XG5leHBvcnQgeyBDb250ZXh0dWFsTWVudVNwbGl0QnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudVNwbGl0QnV0dG9uLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJhc2VEZWNvcmF0b3IgfSBmcm9tICcuL0Jhc2VEZWNvcmF0b3InO1xuaW1wb3J0IHsgZ2V0V2luZG93LCBob2lzdFN0YXRpY3MsIEV2ZW50R3JvdXAgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgV2luZG93Q29udGV4dCB9IGZyb20gJy4uLy4uL1dpbmRvd1Byb3ZpZGVyJztcbmV4cG9ydCB2YXIgUmVzcG9uc2l2ZU1vZGU7XG4oZnVuY3Rpb24gKFJlc3BvbnNpdmVNb2RlKSB7XG4gICAgLyoqIFdpZHRoIFxcPD0gNDc5cHggKi9cbiAgICBSZXNwb25zaXZlTW9kZVtSZXNwb25zaXZlTW9kZVtcInNtYWxsXCJdID0gMF0gPSBcInNtYWxsXCI7XG4gICAgLyoqIFdpZHRoIFxcPiA0NzlweCBhbmQgXFw8PSA2MzlweCAqL1xuICAgIFJlc3BvbnNpdmVNb2RlW1Jlc3BvbnNpdmVNb2RlW1wibWVkaXVtXCJdID0gMV0gPSBcIm1lZGl1bVwiO1xuICAgIC8qKiBXaWR0aCBcXD4gNjM5cHggYW5kIFxcPD0gMTAyM3B4ICovXG4gICAgUmVzcG9uc2l2ZU1vZGVbUmVzcG9uc2l2ZU1vZGVbXCJsYXJnZVwiXSA9IDJdID0gXCJsYXJnZVwiO1xuICAgIC8qKiBXaWR0aCBcXD4gMTAyM3B4IGFuZCBcXDw9IDEzNjVweCAqL1xuICAgIFJlc3BvbnNpdmVNb2RlW1Jlc3BvbnNpdmVNb2RlW1wieExhcmdlXCJdID0gM10gPSBcInhMYXJnZVwiO1xuICAgIC8qKiBXaWR0aCBcXD4gMTM2NXB4IGFuZCBcXDw9IDE5MTlweCAqL1xuICAgIFJlc3BvbnNpdmVNb2RlW1Jlc3BvbnNpdmVNb2RlW1wieHhMYXJnZVwiXSA9IDRdID0gXCJ4eExhcmdlXCI7XG4gICAgLyoqIFdpZHRoIFxcPiAxOTE5cHggKi9cbiAgICBSZXNwb25zaXZlTW9kZVtSZXNwb25zaXZlTW9kZVtcInh4eExhcmdlXCJdID0gNV0gPSBcInh4eExhcmdlXCI7XG4gICAgUmVzcG9uc2l2ZU1vZGVbUmVzcG9uc2l2ZU1vZGVbXCJ1bmtub3duXCJdID0gOTk5XSA9IFwidW5rbm93blwiO1xufSkoUmVzcG9uc2l2ZU1vZGUgfHwgKFJlc3BvbnNpdmVNb2RlID0ge30pKTtcbnZhciBSRVNQT05TSVZFX01BWF9DT05TVFJBSU5UID0gWzQ3OSwgNjM5LCAxMDIzLCAxMzY1LCAxOTE5LCA5OTk5OTk5OV07XG4vKipcbiAqIFVzZXIgc3BlY2lmaWVkIG1vZGUgdG8gZGVmYXVsdCB0bywgdXNlZnVsIGZvciBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcgc2NlbmFyaW9zLlxuICovXG52YXIgX2RlZmF1bHRNb2RlO1xuLyoqXG4gKiBUcmFja2luZyB0aGUgbGFzdCBtb2RlIHdlIHN1Y2Nlc3NmdWxseSByZW5kZXJlZCwgd2hpY2ggYWxsb3dzIHVzIHRvXG4gKiBwYWludCBpbml0aWFsIHJlbmRlcnMgd2l0aCB0aGUgY29ycmVjdCBzaXplLlxuICovXG52YXIgX2xhc3RNb2RlO1xuLyoqXG4gKiBBbGxvd3MgYSBzZXJ2ZXIgcmVuZGVyZWQgc2NlbmFyaW8gdG8gcHJvdmlkZSBhICoqZGVmYXVsdCoqIHJlc3BvbnNpdmUgbW9kZS5cbiAqIFRoaXMgV0lMTCBOT1QgdHJpZ2dlciBhbnkgdXBkYXRlcyB0byBjb21wb25lbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGNvbnN1bWVkIHRoZSByZXNwb25zaXZlIG1vZGUhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNwb25zaXZlTW9kZShyZXNwb25zaXZlTW9kZSkge1xuICAgIF9kZWZhdWx0TW9kZSA9IHJlc3BvbnNpdmVNb2RlO1xufVxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgcmVzcG9uc2l2ZSBtb2RlIHRvIHRoZSBjdXJyZW50IHdpbmRvdyBzaXplLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF2b2lkXG4gKiBhIHJlLXJlbmRlciBkdXJpbmcgZmlyc3QgY29tcG9uZW50IG1vdW50IHNpbmNlIHRoZSB3aW5kb3cgd291bGQgb3RoZXJ3aXNlIG5vdCBiZSBtZWFzdXJlZFxuICogdW50aWwgYWZ0ZXIgbW91bnRpbmcuXG4gKlxuICogVGhpcyBXSUxMIE5PVCB0cmlnZ2VyIGFueSB1cGRhdGVzIHRvIGNvbXBvbmVudHMgdGhhdCBoYXZlIGFscmVhZHkgY29uc3VtZWQgdGhlIHJlc3BvbnNpdmUgbW9kZSFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVSZXNwb25zaXZlTW9kZShlbGVtZW50KSB7XG4gICAgdmFyIGN1cnJlbnRXaW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gICAgaWYgKGN1cnJlbnRXaW5kb3cpIHtcbiAgICAgICAgZ2V0UmVzcG9uc2l2ZU1vZGUoY3VycmVudFdpbmRvdyk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxSZXNwb25zaXZlTW9kZSgpIHtcbiAgICB2YXIgX2E7XG4gICAgcmV0dXJuIChfYSA9IF9kZWZhdWx0TW9kZSAhPT0gbnVsbCAmJiBfZGVmYXVsdE1vZGUgIT09IHZvaWQgMCA/IF9kZWZhdWx0TW9kZSA6IF9sYXN0TW9kZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogUmVzcG9uc2l2ZU1vZGUubGFyZ2U7XG59XG4vKipcbiAqIEBkZXByZWNhdGVkIERlY29yYXRvciB1c2FnZSBpcyBkZXByZWNhdGVkLiBFaXRoZXIgY2FsbCBgZ2V0UmVzcG9uc2l2ZU1vZGVgIG1hbnVhbGx5LCBvclxuICogdXNlIHRoZSBgdXNlUmVzcG9uc2l2ZU1vZGVgIGhvb2sgd2l0aGluIGEgZnVuY3Rpb24gY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc3BvbnNpdmVNb2RlKENvbXBvc2VkQ29tcG9uZW50KSB7XG4gICAgdmFyIF9hO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHZhciByZXN1bHRDbGFzcyA9IChfYSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgICAgIF9fZXh0ZW5kcyhXaXRoUmVzcG9uc2l2ZU1vZGUsIF9zdXBlcik7XG4gICAgICAgICAgICBmdW5jdGlvbiBXaXRoUmVzcG9uc2l2ZU1vZGUocHJvcHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgICAgICAgICBfdGhpcy5fb25SZXNpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zaXZlTW9kZSA9IGdldFJlc3BvbnNpdmVNb2RlKF90aGlzLmNvbnRleHQud2luZG93KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNpdmVNb2RlICE9PSBfdGhpcy5zdGF0ZS5yZXNwb25zaXZlTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVNb2RlOiByZXNwb25zaXZlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpcy5fZXZlbnRzID0gbmV3IEV2ZW50R3JvdXAoX3RoaXMpO1xuICAgICAgICAgICAgICAgIF90aGlzLl91cGRhdGVDb21wb3NlZENvbXBvbmVudFJlZiA9IF90aGlzLl91cGRhdGVDb21wb3NlZENvbXBvbmVudFJlZi5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2l2ZU1vZGU6IGdldEluaXRpYWxSZXNwb25zaXZlTW9kZSgpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgV2l0aFJlc3BvbnNpdmVNb2RlLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHMub24odGhpcy5jb250ZXh0LndpbmRvdywgJ3Jlc2l6ZScsIHRoaXMuX29uUmVzaXplKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vblJlc2l6ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFdpdGhSZXNwb25zaXZlTW9kZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBXaXRoUmVzcG9uc2l2ZU1vZGUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2l2ZU1vZGUgPSB0aGlzLnN0YXRlLnJlc3BvbnNpdmVNb2RlO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zaXZlTW9kZSA9PT0gUmVzcG9uc2l2ZU1vZGUudW5rbm93biA/IG51bGwgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb3NlZENvbXBvbmVudCwgX19hc3NpZ24oeyByZWY6IHRoaXMuX3VwZGF0ZUNvbXBvc2VkQ29tcG9uZW50UmVmLCByZXNwb25zaXZlTW9kZTogcmVzcG9uc2l2ZU1vZGUgfSwgdGhpcy5wcm9wcykpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gV2l0aFJlc3BvbnNpdmVNb2RlO1xuICAgICAgICB9KEJhc2VEZWNvcmF0b3IpKSxcbiAgICAgICAgX2EuY29udGV4dFR5cGUgPSBXaW5kb3dDb250ZXh0LFxuICAgICAgICBfYSk7XG4gICAgcmV0dXJuIGhvaXN0U3RhdGljcyhDb21wb3NlZENvbXBvbmVudCwgcmVzdWx0Q2xhc3MpO1xufVxuZnVuY3Rpb24gZ2V0V2lkdGhPZkN1cnJlbnRXaW5kb3coY3VycmVudFdpbmRvdykge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRXaW5kb3cuaW5uZXJXaWR0aDtcbiAgICB9XG59XG4vKipcbiAqIEhvb2sgdG8gZ2V0IHRoZSBjdXJyZW50IHJlc3BvbnNpdmUgbW9kZSAod2luZG93IHNpemUgY2F0ZWdvcnkpLlxuICogQHBhcmFtIGN1cnJlbnRXaW5kb3cgLSBVc2UgdGhpcyB3aW5kb3cgd2hlbiBkZXRlcm1pbmluZyB0aGUgcmVzcG9uc2l2ZSBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzcG9uc2l2ZU1vZGUoY3VycmVudFdpbmRvdykge1xuICAgIHZhciByZXNwb25zaXZlTW9kZSA9IFJlc3BvbnNpdmVNb2RlLnNtYWxsO1xuICAgIGlmIChjdXJyZW50V2luZG93KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3aGlsZSAoZ2V0V2lkdGhPZkN1cnJlbnRXaW5kb3coY3VycmVudFdpbmRvdykgPiBSRVNQT05TSVZFX01BWF9DT05TVFJBSU5UW3Jlc3BvbnNpdmVNb2RlXSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpdmVNb2RlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFJldHVybiBhIGJlc3QgZWZmb3J0IHJlc3VsdCBpbiBjYXNlcyB3aGVyZSB3ZSdyZSBpbiB0aGUgYnJvd3NlciBidXQgaXQgdGhyb3dzIG9uIGdldHRpbmcgaW5uZXJXaWR0aC5cbiAgICAgICAgICAgIHJlc3BvbnNpdmVNb2RlID0gZ2V0SW5pdGlhbFJlc3BvbnNpdmVNb2RlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJhY2tpbmcgbGFzdCBtb2RlIGp1c3QgZ2l2ZXMgdXMgYSBiZXR0ZXIgZGVmYXVsdCBpbiBmdXR1cmUgcmVuZGVycyxcbiAgICAgICAgLy8gd2hpY2ggYXZvaWRzIHN0YXJ0aW5nIHdpdGggdGhlIHdyb25nIHZhbHVlIGlmIHdlJ3ZlIG1lYXN1cmVkIG9uY2UuXG4gICAgICAgIF9sYXN0TW9kZSA9IHJlc3BvbnNpdmVNb2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKF9kZWZhdWx0TW9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXNwb25zaXZlTW9kZSA9IF9kZWZhdWx0TW9kZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29udGVudCB3YXMgcmVuZGVyZWQgaW4gYSBzZXJ2ZXIgZW52aXJvbm1lbnQgd2l0aG91dCBwcm92aWRpbmcgYSBkZWZhdWx0IHJlc3BvbnNpdmUgbW9kZS4gJyArXG4gICAgICAgICAgICAgICAgJ0NhbGwgc2V0UmVzcG9uc2l2ZU1vZGUgdG8gZGVmaW5lIHdoYXQgdGhlIHJlc3BvbnNpdmUgbW9kZSBpcy4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2l2ZU1vZGU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD13aXRoUmVzcG9uc2l2ZU1vZGUuanMubWFwIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnQGZsdWVudHVpL3V0aWxpdGllcyc7XG5pbXBvcnQgeyB1c2VPbkV2ZW50IH0gZnJvbSAnQGZsdWVudHVpL3JlYWN0LWhvb2tzJztcbmltcG9ydCB7IGdldFJlc3BvbnNpdmVNb2RlLCBnZXRJbml0aWFsUmVzcG9uc2l2ZU1vZGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3dpdGhSZXNwb25zaXZlTW9kZSc7XG5pbXBvcnQgeyB1c2VXaW5kb3cgfSBmcm9tICcuLi8uLi9XaW5kb3dQcm92aWRlcic7XG4vKipcbiAqIEhvb2sgdG8gZ2V0IHRoZSBjdXJyZW50IHJlc3BvbnNpdmUgbW9kZSAod2luZG93IHNpemUgY2F0ZWdvcnkpLlxuICogQHBhcmFtIGVsZW1lbnRSZWYgLSBVc2UgdGhpcyBlbGVtZW50J3MgcGFyZW50IHdpbmRvdyB3aGVuIGRldGVybWluaW5nIHRoZSByZXNwb25zaXZlIG1vZGUuXG4gKiBAcGFyYW0gb3ZlcnJpZGVSZXNwb25zaXZlTW9kZSAtIE92ZXJyaWRlIHRoZSByZXNwb25zaXZlIG1vZGUuIElmIHRoaXMgcGFyYW0gaXMgcHJlc2VudCwgaXQncyBhbHdheXMgcmV0dXJuZWQuXG4gKi9cbmV4cG9ydCB2YXIgdXNlUmVzcG9uc2l2ZU1vZGUgPSBmdW5jdGlvbiAoZWxlbWVudFJlZiwgb3ZlcnJpZGVSZXNwb25zaXZlTW9kZSkge1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKGdldEluaXRpYWxSZXNwb25zaXZlTW9kZSgpKSwgbGFzdFJlc3BvbnNpdmVNb2RlID0gX2FbMF0sIHNldExhc3RSZXNwb25zaXZlTW9kZSA9IF9hWzFdO1xuICAgIHZhciBvblJlc2l6ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5ld1Jlc3BvbnNpdmVNb2RlID0gZ2V0UmVzcG9uc2l2ZU1vZGUoZ2V0V2luZG93KGVsZW1lbnRSZWYuY3VycmVudCkpO1xuICAgICAgICAvLyBTZXR0aW5nIHRoZSBzYW1lIHZhbHVlIHNob3VsZCBub3QgY2F1c2UgYSByZS1yZW5kZXIuXG4gICAgICAgIGlmIChsYXN0UmVzcG9uc2l2ZU1vZGUgIT09IG5ld1Jlc3BvbnNpdmVNb2RlKSB7XG4gICAgICAgICAgICBzZXRMYXN0UmVzcG9uc2l2ZU1vZGUobmV3UmVzcG9uc2l2ZU1vZGUpO1xuICAgICAgICB9XG4gICAgfSwgW2VsZW1lbnRSZWYsIGxhc3RSZXNwb25zaXZlTW9kZV0pO1xuICAgIHZhciB3aW4gPSB1c2VXaW5kb3coKTtcbiAgICB1c2VPbkV2ZW50KHdpbiwgJ3Jlc2l6ZScsIG9uUmVzaXplKTtcbiAgICAvLyBDYWxsIHJlc2l6ZSBmdW5jdGlvbiBpbml0aWFsbHkgb24gbW91bnQsIG9yIGlmIHRoZSBvdmVycmlkZSBjaGFuZ2VzIGZyb20gZGVmaW5lZCB0byB1bmRlZmluZWRcbiAgICAvLyAodGhlIGVmZmVjdCB3aWxsIHJ1biBvbiBhbGwgb3ZlcnJpZGUgY2hhbmdlcywgYnV0IG9uUmVzaXplIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgaXQgY2hhbmdlZCB0byB1bmRlZmluZWQpXG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG92ZXJyaWRlUmVzcG9uc2l2ZU1vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb25SZXNpemUoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzIC0tIG9ubHkgbWVhbnQgdG8gcnVuIG9uIG1vdW50IG9yIHdoZW4gb3ZlcnJpZGUgY2hhbmdlc1xuICAgIH0sIFtvdmVycmlkZVJlc3BvbnNpdmVNb2RlXSk7XG4gICAgcmV0dXJuIG92ZXJyaWRlUmVzcG9uc2l2ZU1vZGUgIT09IG51bGwgJiYgb3ZlcnJpZGVSZXNwb25zaXZlTW9kZSAhPT0gdm9pZCAwID8gb3ZlcnJpZGVSZXNwb25zaXZlTW9kZSA6IGxhc3RSZXNwb25zaXZlTW9kZTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VSZXNwb25zaXZlTW9kZS5qcy5tYXAiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgdmFyIE1lbnVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5leHBvcnQgdmFyIHVzZU1lbnVDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdC51c2VDb250ZXh0KE1lbnVDb250ZXh0KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZW51Q29udGV4dC5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0LCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUl0ZW1UeXBlIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudS50eXBlcyc7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbEhpbnQgfSBmcm9tICcuLi8uLi9jb21tb24vRGlyZWN0aW9uYWxIaW50JztcbmltcG9ydCB7IEZvY3VzWm9uZSwgRm9jdXNab25lRGlyZWN0aW9uLCBGb2N1c1pvbmVUYWJiYWJsZUVsZW1lbnRzIH0gZnJvbSAnLi4vLi4vRm9jdXNab25lJztcbmltcG9ydCB7IGRpdlByb3BlcnRpZXMsIGdldE5hdGl2ZVByb3BzLCBzaGFsbG93Q29tcGFyZSwgYXNzaWduLCBjbGFzc05hbWVzRnVuY3Rpb24sIGNzcywgZ2V0Rmlyc3RGb2N1c2FibGUsIGdldExhc3RGb2N1c2FibGUsIGdldFJUTCwgS2V5Q29kZXMsIHNob3VsZFdyYXBGb2N1cywgaXNJT1MsIGlzTWFjLCBtZW1vaXplRnVuY3Rpb24sIGdldFByb3BzV2l0aERlZmF1bHRzLCBnZXREb2N1bWVudCwgRm9jdXNSZWN0cywgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgaGFzU3VibWVudSwgZ2V0SXNDaGVja2VkLCBpc0l0ZW1EaXNhYmxlZCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb250ZXh0dWFsTWVudS9pbmRleCc7XG5pbXBvcnQgeyBDYWxsb3V0IH0gZnJvbSAnLi4vLi4vQ2FsbG91dCc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUl0ZW0gfSBmcm9tICcuL0NvbnRleHR1YWxNZW51SXRlbSc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudVNwbGl0QnV0dG9uLCBDb250ZXh0dWFsTWVudUJ1dHRvbiwgQ29udGV4dHVhbE1lbnVBbmNob3IsIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyL2luZGV4JztcbmltcG9ydCB7IGNvbmNhdFN0eWxlU2V0c1dpdGhQcm9wcyB9IGZyb20gJy4uLy4uL1N0eWxpbmcnO1xuaW1wb3J0IHsgZ2V0SXRlbVN0eWxlcyB9IGZyb20gJy4vQ29udGV4dHVhbE1lbnUuY2xhc3NOYW1lcyc7XG5pbXBvcnQgeyB1c2VUYXJnZXQsIHVzZVByZXZpb3VzLCB1c2VBc3luYywgdXNlV2FybmluZ3MsIHVzZUlkLCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LCB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG5pbXBvcnQgeyB1c2VSZXNwb25zaXZlTW9kZSwgUmVzcG9uc2l2ZU1vZGUgfSBmcm9tICcuLi8uLi9SZXNwb25zaXZlTW9kZSc7XG5pbXBvcnQgeyBNZW51Q29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9NZW51Q29udGV4dC9pbmRleCc7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbigpO1xudmFyIGdldENvbnRleHR1YWxNZW51SXRlbUNsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oKTtcbi8vIFRoZSBkZWZhdWx0IENvbnRleHR1YWxNZW51IHByb3BlcnRpZXMgaGF2ZSBubyBpdGVtcyBhbmQgYmVhaywgdGhlIGRlZmF1bHQgc3VibWVudSBkaXJlY3Rpb24gaXMgcmlnaHQgYW5kIHRvcC5cbnZhciBERUZBVUxUX1BST1BTID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICBzaG91bGRGb2N1c09uTW91bnQ6IHRydWUsXG4gICAgZ2FwU3BhY2U6IDAsXG4gICAgZGlyZWN0aW9uYWxIaW50OiBEaXJlY3Rpb25hbEhpbnQuYm90dG9tQXV0b0VkZ2UsXG4gICAgYmVha1dpZHRoOiAxNixcbn07XG4vKiByZXR1cm4gbnVtYmVyIG9mIG1lbnUgaXRlbXMsIGV4Y2x1ZGluZyBoZWFkZXJzIGFuZCBkaXZpZGVycyAqL1xuZnVuY3Rpb24gZ2V0SXRlbUNvdW50KGl0ZW1zKSB7XG4gICAgdmFyIHRvdGFsSXRlbUNvdW50ID0gMDtcbiAgICBmb3IgKHZhciBfaSA9IDAsIGl0ZW1zXzEgPSBpdGVtczsgX2kgPCBpdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgaXRlbSA9IGl0ZW1zXzFbX2ldO1xuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSAhPT0gQ29udGV4dHVhbE1lbnVJdGVtVHlwZS5EaXZpZGVyICYmIGl0ZW0uaXRlbVR5cGUgIT09IENvbnRleHR1YWxNZW51SXRlbVR5cGUuSGVhZGVyKSB7XG4gICAgICAgICAgICB2YXIgaXRlbUNvdW50ID0gaXRlbS5jdXN0b21PblJlbmRlckxpc3RMZW5ndGggPyBpdGVtLmN1c3RvbU9uUmVuZGVyTGlzdExlbmd0aCA6IDE7XG4gICAgICAgICAgICB0b3RhbEl0ZW1Db3VudCArPSBpdGVtQ291bnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsSXRlbUNvdW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN1Ym1lbnVJdGVtcyhpdGVtLCBvcHRpb25zKSB7XG4gICAgdmFyIHRhcmdldCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy50YXJnZXQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgdmFyIGl0ZW1zID0gaXRlbS5zdWJNZW51UHJvcHMgPyBpdGVtLnN1Yk1lbnVQcm9wcy5pdGVtcyA6IGl0ZW0uaXRlbXM7XG4gICAgaWYgKGl0ZW1zKSB7XG4gICAgICAgIHZhciBvdmVycmlkZUl0ZW1zID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgaXRlbXNfMiA9IGl0ZW1zOyBfaSA8IGl0ZW1zXzIubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIgc3ViSXRlbSA9IGl0ZW1zXzJbX2ldO1xuICAgICAgICAgICAgaWYgKHN1Ykl0ZW0ucHJlZmVyTWVudVRhcmdldEFzRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3Igc3ViLWl0ZW1zIHdoaWNoIG5lZWQgYW4gb3ZlcnJpZGRlbiB0YXJnZXQsIGludGVyY2VwdCBgb25DbGlja2BcbiAgICAgICAgICAgICAgICB2YXIgb25DbGljayA9IHN1Ykl0ZW0ub25DbGljaywgY29udGV4dEl0ZW0gPSBfX3Jlc3Qoc3ViSXRlbSwgW1wib25DbGlja1wiXSk7XG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVJdGVtcy5wdXNoKF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250ZXh0SXRlbSksIHsgb25DbGljazogZ2V0T25DbGlja1dpdGhPdmVycmlkZVRhcmdldChvbkNsaWNrLCB0YXJnZXQpIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG92ZXJyaWRlSXRlbXMucHVzaChzdWJJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3ZlcnJpZGVJdGVtcztcbiAgICB9XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIGxpc3Qgb2YgbWVudSBpdGVtcyBjYW4gY29udGFpbiBhIGNoZWNrYm94XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5BbnlNZW51SXRlbXNDaGVjayhpdGVtcykge1xuICAgIHJldHVybiBpdGVtcy5zb21lKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmNhbkNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGUgaXRlbSBpcyBhIHNlY3Rpb24sIGNoZWNrIGlmIGFueSBvZiB0aGUgaXRlbXMgaW4gdGhlIHNlY3Rpb24gY2FuIGNoZWNrLlxuICAgICAgICBpZiAoaXRlbS5zZWN0aW9uUHJvcHMgJiYgaXRlbS5zZWN0aW9uUHJvcHMuaXRlbXMuc29tZShmdW5jdGlvbiAoc3VibWVudUl0ZW0pIHsgcmV0dXJuIHN1Ym1lbnVJdGVtLmNhbkNoZWNrID09PSB0cnVlOyB9KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufVxudmFyIE5hdmlnYXRpb25JZGxlRGVsYXkgPSAyNTA7IC8qIG1zICovXG52YXIgQ09NUE9ORU5UX05BTUUgPSAnQ29udGV4dHVhbE1lbnUnO1xudmFyIF9nZXRNZW51SXRlbVN0eWxlc0Z1bmN0aW9uID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3R5bGVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgc3R5bGVzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAoc3R5bGVQcm9wcykge1xuICAgICAgICByZXR1cm4gY29uY2F0U3R5bGVTZXRzV2l0aFByb3BzLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbc3R5bGVQcm9wcywgZ2V0SXRlbVN0eWxlc10sIHN0eWxlcywgZmFsc2UpKTtcbiAgICB9O1xufSk7XG4vLyNyZWdpb24gQ3VzdG9tIGhvb2tzXG5mdW5jdGlvbiB1c2VWaXNpYmlsaXR5KHByb3BzLCB0YXJnZXRXaW5kb3cpIHtcbiAgICB2YXIgX2EgPSBwcm9wcy5oaWRkZW4sIGhpZGRlbiA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLCBvbk1lbnVEaXNtaXNzZWQgPSBwcm9wcy5vbk1lbnVEaXNtaXNzZWQsIG9uTWVudU9wZW5lZCA9IHByb3BzLm9uTWVudU9wZW5lZDtcbiAgICB2YXIgcHJldmlvdXNIaWRkZW4gPSB1c2VQcmV2aW91cyhoaWRkZW4pO1xuICAgIHZhciBvbk1lbnVPcGVuZWRSZWYgPSBSZWFjdC51c2VSZWYob25NZW51T3BlbmVkKTtcbiAgICB2YXIgb25NZW51Q2xvc2VkUmVmID0gUmVhY3QudXNlUmVmKG9uTWVudURpc21pc3NlZCk7XG4gICAgdmFyIHByb3BzUmVmID0gUmVhY3QudXNlUmVmKHByb3BzKTtcbiAgICBvbk1lbnVPcGVuZWRSZWYuY3VycmVudCA9IG9uTWVudU9wZW5lZDtcbiAgICBvbk1lbnVDbG9zZWRSZWYuY3VycmVudCA9IG9uTWVudURpc21pc3NlZDtcbiAgICBwcm9wc1JlZi5jdXJyZW50ID0gcHJvcHM7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgLy8gRG9uJ3QgaXNzdWUgZGlzbWlzc2VkIGNhbGxiYWNrcyBvbiBpbml0aWFsIG1vdW50XG4gICAgICAgIGlmIChoaWRkZW4gJiYgcHJldmlvdXNIaWRkZW4gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAoX2EgPSBvbk1lbnVDbG9zZWRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25NZW51Q2xvc2VkUmVmLCBwcm9wc1JlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaGlkZGVuICYmIHByZXZpb3VzSGlkZGVuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgKF9iID0gb25NZW51T3BlbmVkUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKG9uTWVudU9wZW5lZFJlZiwgcHJvcHNSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbaGlkZGVuLCBwcmV2aW91c0hpZGRlbl0pO1xuICAgIC8vIElzc3VlIG9uRGlzbWlzc2VkQ2FsbGJhY2sgb24gdW5tb3VudFxuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBfYTsgcmV0dXJuIChfYSA9IG9uTWVudUNsb3NlZFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbk1lbnVDbG9zZWRSZWYsIHByb3BzUmVmLmN1cnJlbnQpOyB9OyB9LCBbXSk7XG59XG5mdW5jdGlvbiB1c2VTdWJNZW51U3RhdGUoX2EsIGRpc21pc3MpIHtcbiAgICB2YXIgaGlkZGVuID0gX2EuaGlkZGVuLCBpdGVtcyA9IF9hLml0ZW1zLCB0aGVtZSA9IF9hLnRoZW1lLCBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsIGlkID0gX2EuaWQsIG1lbnVUYXJnZXQgPSBfYS50YXJnZXQ7XG4gICAgdmFyIF9iID0gUmVhY3QudXNlU3RhdGUoKSwgZXhwYW5kZWRNZW51SXRlbUtleSA9IF9iWzBdLCBzZXRFeHBhbmRlZE1lbnVJdGVtS2V5ID0gX2JbMV07XG4gICAgdmFyIF9jID0gUmVhY3QudXNlU3RhdGUoKSwgc3VibWVudVRhcmdldCA9IF9jWzBdLCBzZXRTdWJtZW51VGFyZ2V0ID0gX2NbMV07XG4gICAgLyoqIFRydWUgaWYgdGhlIG1lbnUgd2FzIGV4cGFuZGVkIGJ5IG1vdXNlIGNsaWNrIE9SIGhvdmVyIChhcyBvcHBvc2VkIHRvIGJ5IGtleWJvYXJkKSAqL1xuICAgIHZhciBfZCA9IFJlYWN0LnVzZVN0YXRlKCksIHNob3VsZEZvY3VzT25Db250YWluZXIgPSBfZFswXSwgc2V0U2hvdWxkRm9jdXNPbkNvbnRhaW5lciA9IF9kWzFdO1xuICAgIHZhciBzdWJNZW51SWQgPSB1c2VJZChDT01QT05FTlRfTkFNRSwgaWQpO1xuICAgIHZhciBjbG9zZVN1Yk1lbnUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFNob3VsZEZvY3VzT25Db250YWluZXIodW5kZWZpbmVkKTtcbiAgICAgICAgc2V0RXhwYW5kZWRNZW51SXRlbUtleSh1bmRlZmluZWQpO1xuICAgICAgICBzZXRTdWJtZW51VGFyZ2V0KHVuZGVmaW5lZCk7XG4gICAgfSwgW10pO1xuICAgIHZhciBvcGVuU3ViTWVudSA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChfYSwgdGFyZ2V0LCBmb2N1c0NvbnRhaW5lcikge1xuICAgICAgICB2YXIgc3VibWVudUl0ZW1LZXkgPSBfYS5rZXk7XG4gICAgICAgIGlmIChleHBhbmRlZE1lbnVJdGVtS2V5ID09PSBzdWJtZW51SXRlbUtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldC5mb2N1cygpO1xuICAgICAgICBzZXRTaG91bGRGb2N1c09uQ29udGFpbmVyKGZvY3VzQ29udGFpbmVyKTtcbiAgICAgICAgc2V0RXhwYW5kZWRNZW51SXRlbUtleShzdWJtZW51SXRlbUtleSk7XG4gICAgICAgIHNldFN1Ym1lbnVUYXJnZXQodGFyZ2V0KTtcbiAgICB9LCBbZXhwYW5kZWRNZW51SXRlbUtleV0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChoaWRkZW4pIHtcbiAgICAgICAgICAgIGNsb3NlU3ViTWVudSgpO1xuICAgICAgICB9XG4gICAgfSwgW2hpZGRlbiwgY2xvc2VTdWJNZW51XSk7XG4gICAgdmFyIG9uU3ViTWVudURpc21pc3MgPSB1c2VPblN1Ym1lbnVEaXNtaXNzKGRpc21pc3MsIGNsb3NlU3ViTWVudSk7XG4gICAgdmFyIGdldFN1Ym1lbnVQcm9wcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBmaW5kSXRlbUJ5S2V5RnJvbUl0ZW1zKGV4cGFuZGVkTWVudUl0ZW1LZXksIGl0ZW1zKTtcbiAgICAgICAgdmFyIHN1Ym1lbnVQcm9wcyA9IG51bGw7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICBzdWJtZW51UHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IGdldFN1Ym1lbnVJdGVtcyhpdGVtLCB7IHRhcmdldDogbWVudVRhcmdldCB9KSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHN1Ym1lbnVUYXJnZXQsXG4gICAgICAgICAgICAgICAgb25EaXNtaXNzOiBvblN1Yk1lbnVEaXNtaXNzLFxuICAgICAgICAgICAgICAgIGlzU3ViTWVudTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpZDogc3ViTWVudUlkLFxuICAgICAgICAgICAgICAgIHNob3VsZEZvY3VzT25Nb3VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzaG91bGRGb2N1c09uQ29udGFpbmVyOiBzaG91bGRGb2N1c09uQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbmFsSGludDogZ2V0UlRMKHRoZW1lKSA/IERpcmVjdGlvbmFsSGludC5sZWZ0VG9wRWRnZSA6IERpcmVjdGlvbmFsSGludC5yaWdodFRvcEVkZ2UsXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgZ2FwU3BhY2U6IDAsXG4gICAgICAgICAgICAgICAgaXNCZWFrVmlzaWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudVByb3BzKSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKHN1Ym1lbnVQcm9wcywgaXRlbS5zdWJNZW51UHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0ucHJlZmVyTWVudVRhcmdldEFzRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgb25JdGVtQ2xpY2sgPSBpdGVtLm9uSXRlbUNsaWNrO1xuICAgICAgICAgICAgICAgIHN1Ym1lbnVQcm9wcy5vbkl0ZW1DbGljayA9IGdldE9uQ2xpY2tXaXRoT3ZlcnJpZGVUYXJnZXQob25JdGVtQ2xpY2ssIG1lbnVUYXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWJtZW51UHJvcHM7XG4gICAgfTtcbiAgICByZXR1cm4gW2V4cGFuZGVkTWVudUl0ZW1LZXksIG9wZW5TdWJNZW51LCBnZXRTdWJtZW51UHJvcHMsIG9uU3ViTWVudURpc21pc3NdO1xufVxuZnVuY3Rpb24gdXNlU2hvdWxkVXBkYXRlRm9jdXNPbk1vdXNlTW92ZShfYSkge1xuICAgIHZhciBkZWxheVVwZGF0ZUZvY3VzT25Ib3ZlciA9IF9hLmRlbGF5VXBkYXRlRm9jdXNPbkhvdmVyLCBoaWRkZW4gPSBfYS5oaWRkZW47XG4gICAgdmFyIHNob3VsZFVwZGF0ZUZvY3VzT25Nb3VzZUV2ZW50ID0gUmVhY3QudXNlUmVmKCFkZWxheVVwZGF0ZUZvY3VzT25Ib3Zlcik7XG4gICAgdmFyIGdvdE1vdXNlTW92ZSA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkVXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQuY3VycmVudCA9ICFkZWxheVVwZGF0ZUZvY3VzT25Ib3ZlcjtcbiAgICAgICAgZ290TW91c2VNb3ZlLmN1cnJlbnQgPSBoaWRkZW4gPyBmYWxzZSA6ICFkZWxheVVwZGF0ZUZvY3VzT25Ib3ZlciAmJiBnb3RNb3VzZU1vdmUuY3VycmVudDtcbiAgICB9LCBbZGVsYXlVcGRhdGVGb2N1c09uSG92ZXIsIGhpZGRlbl0pO1xuICAgIHZhciBvbk1lbnVGb2N1c0NhcHR1cmUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChkZWxheVVwZGF0ZUZvY3VzT25Ib3Zlcikge1xuICAgICAgICAgICAgc2hvdWxkVXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSwgW2RlbGF5VXBkYXRlRm9jdXNPbkhvdmVyXSk7XG4gICAgcmV0dXJuIFtzaG91bGRVcGRhdGVGb2N1c09uTW91c2VFdmVudCwgZ290TW91c2VNb3ZlLCBvbk1lbnVGb2N1c0NhcHR1cmVdO1xufVxuZnVuY3Rpb24gdXNlUHJldmlvdXNBY3RpdmVFbGVtZW50KF9hLCB0YXJnZXRXaW5kb3csIGhvc3RFbGVtZW50KSB7XG4gICAgdmFyIGhpZGRlbiA9IF9hLmhpZGRlbiwgb25SZXN0b3JlRm9jdXMgPSBfYS5vblJlc3RvcmVGb2N1cztcbiAgICB2YXIgcHJldmlvdXNBY3RpdmVFbGVtZW50ID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIHRyeUZvY3VzUHJldmlvdXNBY3RpdmVFbGVtZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKG9uUmVzdG9yZUZvY3VzKSB7XG4gICAgICAgICAgICBvblJlc3RvcmVGb2N1cyhvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZG9jdW1lbnRDb250YWluc0ZvY3VzKSB7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgZm9jdXMgbWV0aG9kIGFjdHVhbGx5IGV4aXN0c1xuICAgICAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB0aGUgb2JqZWN0IG1pZ2h0IGV4aXN0IGJ1dCBub3QgYmUgYSByZWFsIGVsZW1lbnQuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIHByaW1hcmlseSBmb3IgSUUgMTEgYW5kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgSUUgMTEgaXMgbm8gbG9uZ2VyIGluIHVzZS5cbiAgICAgICAgICAgIChfYiA9IChfYSA9IHByZXZpb3VzQWN0aXZlRWxlbWVudC5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgfVxuICAgIH0sIFtvblJlc3RvcmVGb2N1c10pO1xuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoIWhpZGRlbikge1xuICAgICAgICAgICAgdmFyIG5ld0VsZW1lbnQgPSB0YXJnZXRXaW5kb3cgPT09IG51bGwgfHwgdGFyZ2V0V2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXRXaW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghKChfYSA9IGhvc3RFbGVtZW50LmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXdFbGVtZW50KSkgJiYgbmV3RWxlbWVudC50YWdOYW1lICE9PSAnQk9EWScpIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQuY3VycmVudCA9IG5ld0VsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJldmlvdXNBY3RpdmVFbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRyeUZvY3VzUHJldmlvdXNBY3RpdmVFbGVtZW50KHtcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEVsZW1lbnQ6IHByZXZpb3VzQWN0aXZlRWxlbWVudC5jdXJyZW50LFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zRm9jdXM6IHRydWUsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRDb250YWluc0ZvY3VzOiAoKF9iID0gZ2V0RG9jdW1lbnQoKSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmhhc0ZvY3VzKCkpIHx8IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUVsZW1lbnQuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0sIFtoaWRkZW4sIHRhcmdldFdpbmRvdyA9PT0gbnVsbCB8fCB0YXJnZXRXaW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhcmdldFdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LCB0cnlGb2N1c1ByZXZpb3VzQWN0aXZlRWxlbWVudCwgaG9zdEVsZW1lbnRdKTtcbiAgICByZXR1cm4gW3RyeUZvY3VzUHJldmlvdXNBY3RpdmVFbGVtZW50XTtcbn1cbmZ1bmN0aW9uIHVzZUtleUhhbmRsZXJzKF9hLCBkaXNtaXNzLCBob3N0RWxlbWVudCwgb3BlblN1Yk1lbnUpIHtcbiAgICB2YXIgdGhlbWUgPSBfYS50aGVtZSwgaXNTdWJNZW51ID0gX2EuaXNTdWJNZW51LCBfYiA9IF9hLmZvY3VzWm9uZVByb3BzLCBfYyA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iLCBjaGVja0Zvck5vV3JhcCA9IF9jLmNoZWNrRm9yTm9XcmFwLCBfZCA9IF9jLmRpcmVjdGlvbiwgZm9jdXNab25lRGlyZWN0aW9uID0gX2QgPT09IHZvaWQgMCA/IEZvY3VzWm9uZURpcmVjdGlvbi52ZXJ0aWNhbCA6IF9kO1xuICAgIC8qKiBUcnVlIGlmIHRoZSBtb3N0IHJlY2VudCBrZXlkb3duIGV2ZW50IHdhcyBmb3IgYWx0IChvcHRpb24pIG9yIG1ldGEgKGNvbW1hbmQpLiAqL1xuICAgIHZhciBsYXN0S2V5RG93bldhc0FsdE9yTWV0YSA9IFJlYWN0LnVzZVJlZigpO1xuICAgIC8qKlxuICAgICAqIENhbGxzIGBzaG91bGRIYW5kbGVLZXlgIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBrZXlib2FyZCBldmVudCBzaG91bGQgYmUgaGFuZGxlZDtcbiAgICAgKiBpZiBzbywgc3RvcHMgZXZlbnQgcHJvcGFnYXRpb24gYW5kIGRpc21pc3NlcyBtZW51KHMpLlxuICAgICAqIEBwYXJhbSBldiAtIFRoZSBrZXlib2FyZCBldmVudC5cbiAgICAgKiBAcGFyYW0gc2hvdWxkSGFuZGxlS2V5IC0gUmV0dXJucyB3aGV0aGVyIHdlIHNob3VsZCBoYW5kbGUgdGhpcyBrZXlib2FyZCBldmVudC5cbiAgICAgKiBAcGFyYW0gZGlzbWlzc0FsbE1lbnVzIC0gSWYgdHJ1ZSwgZGlzbWlzcyBhbGwgbWVudXMuIE90aGVyd2lzZSwgZGlzbWlzcyBvbmx5IHRoZSBjdXJyZW50IG1lbnUuXG4gICAgICogT25seSBkb2VzIGFueXRoaW5nIGlmIGBzaG91bGRIYW5kbGVLZXlgIHJldHVybnMgdHJ1ZS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZC5cbiAgICAgKi9cbiAgICB2YXIga2V5SGFuZGxlciA9IGZ1bmN0aW9uIChldiwgc2hvdWxkSGFuZGxlS2V5LCBkaXNtaXNzQWxsTWVudXMpIHtcbiAgICAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHNob3VsZEhhbmRsZUtleShldikpIHtcbiAgICAgICAgICAgIGRpc21pc3MoZXYsIGRpc21pc3NBbGxNZW51cyk7XG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgc3VibWVudSBzaG91bGQgYmUgY2xvc2VkXG4gICAgICovXG4gICAgdmFyIHNob3VsZENsb3NlU3ViTWVudSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICB2YXIgc3VibWVudUNsb3NlS2V5ID0gZ2V0UlRMKHRoZW1lKSA/IEtleUNvZGVzLnJpZ2h0IDogS2V5Q29kZXMubGVmdDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIGlmIChldi53aGljaCAhPT0gc3VibWVudUNsb3NlS2V5IHx8ICFpc1N1Yk1lbnUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISEoZm9jdXNab25lRGlyZWN0aW9uID09PSBGb2N1c1pvbmVEaXJlY3Rpb24udmVydGljYWwgfHxcbiAgICAgICAgICAgIChjaGVja0Zvck5vV3JhcCAmJiAhc2hvdWxkV3JhcEZvY3VzKGV2LnRhcmdldCwgJ2RhdGEtbm8taG9yaXpvbnRhbC13cmFwJykpKTtcbiAgICB9O1xuICAgIHZhciBzaG91bGRIYW5kbGVLZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBldi53aGljaCA9PT0gS2V5Q29kZXMuZXNjYXBlIHx8XG4gICAgICAgICAgICBzaG91bGRDbG9zZVN1Yk1lbnUoZXYpIHx8XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIChldi53aGljaCA9PT0gS2V5Q29kZXMudXAgJiYgKGV2LmFsdEtleSB8fCBldi5tZXRhS2V5KSkpO1xuICAgIH07XG4gICAgdmFyIG9uS2V5RG93biA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAvLyBUYWtlIG5vdGUgaWYgd2UgYXJlIHByb2Nlc3NpbmcgYW4gYWx0IChvcHRpb24pIG9yIG1ldGEgKGNvbW1hbmQpIGtleWRvd24uXG4gICAgICAgIC8vIFNlZSBjb21tZW50IGluIHNob3VsZEhhbmRsZUtleVVwIGZvciByZWFzb25pbmcuXG4gICAgICAgIGxhc3RLZXlEb3duV2FzQWx0T3JNZXRhLmN1cnJlbnQgPSBpc0FsdE9yTWV0YShldik7XG4gICAgICAgIC8vIE9uIE1hYywgcHJlc3NpbmcgZXNjYXBlIGRpc21pc3NlcyBhbGwgbGV2ZWxzIG9mIG5hdGl2ZSBjb250ZXh0IG1lbnVzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICB2YXIgZGlzbWlzc0FsbE1lbnVzID0gZXYud2hpY2ggPT09IEtleUNvZGVzLmVzY2FwZSAmJiAoaXNNYWMoKSB8fCBpc0lPUygpKTtcbiAgICAgICAgcmV0dXJuIGtleUhhbmRsZXIoZXYsIHNob3VsZEhhbmRsZUtleURvd24sIGRpc21pc3NBbGxNZW51cyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBXZSBjbG9zZSB0aGUgbWVudSBvbiBrZXkgdXAgb25seSBpZiBBTEwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZTpcbiAgICAgKiAtIE1vc3QgcmVjZW50IGtleSBkb3duIHdhcyBhbHQgb3IgbWV0YSAoY29tbWFuZClcbiAgICAgKiAtIFRoZSBhbHQvbWV0YSBrZXkgZG93biB3YXMgTk9UIGZvbGxvd2VkIGJ5IHNvbWUgb3RoZXIga2V5IChzdWNoIGFzIGRvd24vdXAgYXJyb3cgdG9cbiAgICAgKiAgIGV4cGFuZC9jb2xsYXBzZSB0aGUgbWVudSlcbiAgICAgKiAtIFdlJ3JlIG5vdCBvbiBhIE1hYyAob3IgaU9TKVxuICAgICAqXG4gICAgICogVGhpcyBpcyBiZWNhdXNlIG9uIFdpbmRvd3MsIHByZXNzaW5nIGFsdCBtb3ZlcyBmb2N1cyB0byB0aGUgYXBwbGljYXRpb24gbWVudSBiYXIgb3Igc2ltaWxhcixcbiAgICAgKiBjbG9zaW5nIGFueSBvcGVuIGNvbnRleHQgbWVudXMuIFRoZXJlIGlzIG5vdCBhIHNpbWlsYXIgYmVoYXZpb3Igb24gTWFjcy5cbiAgICAgKi9cbiAgICB2YXIgc2hvdWxkSGFuZGxlS2V5VXAgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIGtleVByZXNzSXNBbHRPck1ldGFBbG9uZSA9IGxhc3RLZXlEb3duV2FzQWx0T3JNZXRhLmN1cnJlbnQgJiYgaXNBbHRPck1ldGEoZXYpO1xuICAgICAgICBsYXN0S2V5RG93bldhc0FsdE9yTWV0YS5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHJldHVybiAhIWtleVByZXNzSXNBbHRPck1ldGFBbG9uZSAmJiAhKGlzSU9TKCkgfHwgaXNNYWMoKSk7XG4gICAgfTtcbiAgICB2YXIgb25LZXlVcCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICByZXR1cm4ga2V5SGFuZGxlcihldiwgc2hvdWxkSGFuZGxlS2V5VXAsIHRydWUgLyogZGlzbWlzc0FsbE1lbnVzICovKTtcbiAgICB9O1xuICAgIHZhciBvbk1lbnVLZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgIC8vIE1hcmsgYXMgaGFuZGxlZCBpZiBvbktleURvd24gcmV0dXJucyB0cnVlIChmb3IgaGFuZGxpbmcgY29sbGFwc2UgY2FzZXMpXG4gICAgICAgIC8vIG9yIGlmIHdlIGFyZSBhdHRlbXB0aW5nIHRvIGV4cGFuZCBhIHN1Ym1lbnVcbiAgICAgICAgdmFyIGhhbmRsZWQgPSBvbktleURvd24oZXYpO1xuICAgICAgICBpZiAoaGFuZGxlZCB8fCAhaG9zdEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBtb2RpZmllciBrZXkgYmVpbmcgcHJlc3NlZCwgd2UgZG8gbm90IHdhbnQgdG8gbW92ZSBmb2N1cy5cbiAgICAgICAgLy8gT3RoZXJ3aXNlLCBoYW5kbGUgdXAgYW5kIGRvd24ga2V5cy5cbiAgICAgICAgdmFyIGhhc01vZGlmaWVyID0gISEoZXYuYWx0S2V5IHx8IGV2Lm1ldGFLZXkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdmFyIGlzVXAgPSBldi53aGljaCA9PT0gS2V5Q29kZXMudXA7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICB2YXIgaXNEb3duID0gZXYud2hpY2ggPT09IEtleUNvZGVzLmRvd247XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXIgJiYgKGlzVXAgfHwgaXNEb3duKSkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnRUb0ZvY3VzID0gaXNVcFxuICAgICAgICAgICAgICAgID8gZ2V0TGFzdEZvY3VzYWJsZShob3N0RWxlbWVudC5jdXJyZW50LCBob3N0RWxlbWVudC5jdXJyZW50Lmxhc3RDaGlsZCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICA6IGdldEZpcnN0Rm9jdXNhYmxlKGhvc3RFbGVtZW50LmN1cnJlbnQsIGhvc3RFbGVtZW50LmN1cnJlbnQuZmlyc3RDaGlsZCwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudFRvRm9jdXMpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBvbkl0ZW1LZXlEb3duID0gZnVuY3Rpb24gKGl0ZW0sIGV2KSB7XG4gICAgICAgIHZhciBvcGVuS2V5ID0gZ2V0UlRMKHRoZW1lKSA/IEtleUNvZGVzLmxlZnQgOiBLZXlDb2Rlcy5yaWdodDtcbiAgICAgICAgaWYgKCFpdGVtLmRpc2FibGVkICYmXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIChldi53aGljaCA9PT0gb3BlbktleSB8fCBldi53aGljaCA9PT0gS2V5Q29kZXMuZW50ZXIgfHwgKGV2LndoaWNoID09PSBLZXlDb2Rlcy5kb3duICYmIChldi5hbHRLZXkgfHwgZXYubWV0YUtleSkpKSkge1xuICAgICAgICAgICAgb3BlblN1Yk1lbnUoaXRlbSwgZXYuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gW29uS2V5RG93biwgb25LZXlVcCwgb25NZW51S2V5RG93biwgb25JdGVtS2V5RG93bl07XG59XG5mdW5jdGlvbiB1c2VTY3JvbGxIYW5kbGVyKGFzeW5jVHJhY2tlcikge1xuICAgIHZhciBpc1Njcm9sbElkbGUgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gICAgdmFyIHNjcm9sbElkbGVUaW1lb3V0SWQgPSBSZWFjdC51c2VSZWYoKTtcbiAgICAvKipcbiAgICAgKiBTY3JvbGwgaGFuZGxlciBmb3IgdGhlIGNhbGxvdXQgdG8gbWFrZSBzdXJlIHRoZSBtb3VzZSBldmVudHNcbiAgICAgKiBmb3IgdXBkYXRpbmcgZm9jdXMgYXJlIG5vdCBpbnRlcmFjdGluZyBkdXJpbmcgc2Nyb2xsXG4gICAgICovXG4gICAgdmFyIG9uU2Nyb2xsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWlzU2Nyb2xsSWRsZS5jdXJyZW50ICYmIHNjcm9sbElkbGVUaW1lb3V0SWQuY3VycmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhc3luY1RyYWNrZXIuY2xlYXJUaW1lb3V0KHNjcm9sbElkbGVUaW1lb3V0SWQuY3VycmVudCk7XG4gICAgICAgICAgICBzY3JvbGxJZGxlVGltZW91dElkLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpc1Njcm9sbElkbGUuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNjcm9sbElkbGVUaW1lb3V0SWQuY3VycmVudCA9IGFzeW5jVHJhY2tlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlzU2Nyb2xsSWRsZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfSwgTmF2aWdhdGlvbklkbGVEZWxheSk7XG4gICAgfTtcbiAgICByZXR1cm4gW29uU2Nyb2xsLCBpc1Njcm9sbElkbGVdO1xufVxuZnVuY3Rpb24gdXNlT25TdWJtZW51RGlzbWlzcyhkaXNtaXNzLCBjbG9zZVN1Yk1lbnUpIHtcbiAgICB2YXIgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBBU1lOQ0hST05PVVNMWSwgYW5kIHNvIHRoZXJlIGlzIGEgY2hhbmNlIGl0IGlzIGNhbGxlZFxuICAgICAqIGFmdGVyIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkLiBUaGUgaXNNb3VudGVkUmVmIGlzIGFkZGVkIHRvIHByZXZlbnRcbiAgICAgKiBmcm9tIGNhbGxpbmcgc2V0U3RhdGUoKSBhZnRlciB1bm1vdW50LiBEbyBOT1QgY29weSB0aGlzIHBhdHRlcm4gaW4gc3luY2hyb25vdXNcbiAgICAgKiBjb2RlLlxuICAgICAqL1xuICAgIHZhciBvblN1Yk1lbnVEaXNtaXNzID0gZnVuY3Rpb24gKGV2LCBkaXNtaXNzQWxsKSB7XG4gICAgICAgIGlmIChkaXNtaXNzQWxsKSB7XG4gICAgICAgICAgICBkaXNtaXNzKGV2LCBkaXNtaXNzQWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY2xvc2VTdWJNZW51KCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBvblN1Yk1lbnVEaXNtaXNzO1xufVxuZnVuY3Rpb24gdXNlU3VibWVudUVudGVyVGltZXIoX2EsIGFzeW5jVHJhY2tlcikge1xuICAgIHZhciBfYiA9IF9hLnN1Yk1lbnVIb3ZlckRlbGF5LCBzdWJNZW51SG92ZXJEZWxheSA9IF9iID09PSB2b2lkIDAgPyBOYXZpZ2F0aW9uSWRsZURlbGF5IDogX2I7XG4gICAgdmFyIGVudGVyVGltZXJSZWYgPSBSZWFjdC51c2VSZWYodW5kZWZpbmVkKTtcbiAgICB2YXIgY2FuY2VsU3ViTWVudVRpbWVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoZW50ZXJUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFzeW5jVHJhY2tlci5jbGVhclRpbWVvdXQoZW50ZXJUaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgIGVudGVyVGltZXJSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdmFyIHN0YXJ0U3VibWVudVRpbWVyID0gZnVuY3Rpb24gKG9uVGltZXJFeHBpcmVkKSB7XG4gICAgICAgIGVudGVyVGltZXJSZWYuY3VycmVudCA9IGFzeW5jVHJhY2tlci5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG9uVGltZXJFeHBpcmVkKCk7XG4gICAgICAgICAgICBjYW5jZWxTdWJNZW51VGltZXIoKTtcbiAgICAgICAgfSwgc3ViTWVudUhvdmVyRGVsYXkpO1xuICAgIH07XG4gICAgcmV0dXJuIFtjYW5jZWxTdWJNZW51VGltZXIsIHN0YXJ0U3VibWVudVRpbWVyLCBlbnRlclRpbWVyUmVmXTtcbn1cbmZ1bmN0aW9uIHVzZU1vdXNlSGFuZGxlcnMocHJvcHMsIGlzU2Nyb2xsSWRsZSwgc3ViTWVudUVudHJ5VGltZXIsIHRhcmdldFdpbmRvdywgc2hvdWxkVXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQsIGdvdE1vdXNlTW92ZSwgZXhwYW5kZWRNZW51SXRlbUtleSwgaG9zdEVsZW1lbnQsIHN0YXJ0U3VibWVudVRpbWVyLCBjYW5jZWxTdWJNZW51VGltZXIsIG9wZW5TdWJNZW51LCBvblN1Yk1lbnVEaXNtaXNzLCBkaXNtaXNzKSB7XG4gICAgdmFyIG1lbnVUYXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdmFyIG9uSXRlbU1vdXNlRW50ZXJCYXNlID0gZnVuY3Rpb24gKGl0ZW0sIGV2LCB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUZvY3VzT25Nb3VzZUV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGdvdE1vdXNlTW92ZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkSWdub3JlTW91c2VFdmVudCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQoaXRlbSwgZXYsIHRhcmdldCk7XG4gICAgfTtcbiAgICB2YXIgb25JdGVtTW91c2VNb3ZlQmFzZSA9IGZ1bmN0aW9uIChpdGVtLCBldiwgdGFyZ2V0KSB7XG4gICAgICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXYuY3VycmVudFRhcmdldDtcbiAgICAgICAgLy8gQWx3YXlzIGRvIHRoaXMgY2hlY2sgdG8gbWFrZSBzdXJlIHdlIHJlY29yZCBhIG1vdXNlTW92ZSBpZiBuZWVkZWQgKGV2ZW4gaWYgd2UgYXJlIHRpbWVkIG91dClcbiAgICAgICAgaWYgKHNob3VsZFVwZGF0ZUZvY3VzT25Nb3VzZUV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGdvdE1vdXNlTW92ZS5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzU2Nyb2xsSWRsZS5jdXJyZW50IHx8XG4gICAgICAgICAgICBzdWJNZW51RW50cnlUaW1lci5jdXJyZW50ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIHRhcmdldEVsZW1lbnQgPT09ICh0YXJnZXRXaW5kb3cgPT09IG51bGwgfHwgdGFyZ2V0V2luZG93ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0YXJnZXRXaW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVGb2N1c09uTW91c2VFdmVudChpdGVtLCBldiwgdGFyZ2V0KTtcbiAgICB9O1xuICAgIHZhciBzaG91bGRJZ25vcmVNb3VzZUV2ZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gIWlzU2Nyb2xsSWRsZS5jdXJyZW50IHx8ICFnb3RNb3VzZU1vdmUuY3VycmVudDtcbiAgICB9O1xuICAgIHZhciBvbk1vdXNlSXRlbUxlYXZlID0gZnVuY3Rpb24gKGl0ZW0sIGV2KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKHNob3VsZElnbm9yZU1vdXNlRXZlbnQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhbmNlbFN1Yk1lbnVUaW1lcigpO1xuICAgICAgICBpZiAoZXhwYW5kZWRNZW51SXRlbUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElFMTEgZm9jdXMoKSBtZXRob2QgZm9yY2VzIHBhcmVudHMgdG8gc2Nyb2xsIHRvIHRvcCBvZiBlbGVtZW50LlxuICAgICAgICAgKiBFZGdlIGFuZCBJRSBleHBvc2UgYSBzZXRBY3RpdmUoKSBmdW5jdGlvbiBmb3IgZm9jdXNhYmxlIGRpdnMgdGhhdFxuICAgICAgICAgKiBzZXRzIHRoZSBwYWdlIGZvY3VzIGJ1dCBkb2VzIG5vdCBzY3JvbGwgdGhlIHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGhvc3RFbGVtZW50LmN1cnJlbnQuc2V0QWN0aXZlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGhvc3RFbGVtZW50LmN1cnJlbnQuc2V0QWN0aXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8qIG5vLW9wICovXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAoX2EgPSBob3N0RWxlbWVudC5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB1cGRhdGluZyBmb2N1cyB3aGVuIG1vdXNlRW50ZXIgb3IgbW91c2VNb3ZlIGZpcmUuXG4gICAgICogQXMgcGFydCBvZiB1cGRhdGluZyBmb2N1cywgVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gdXBkYXRlXG4gICAgICogdGhlIGV4cGFuZC9jb2xsYXBzZSBzdGF0ZSBhY2NvcmRpbmdseS5cbiAgICAgKi9cbiAgICB2YXIgdXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQgPSBmdW5jdGlvbiAoaXRlbSwgZXYsIHRhcmdldCkge1xuICAgICAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IHRhcmdldCA/IHRhcmdldCA6IGV2LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGlmIChpdGVtLmtleSA9PT0gZXhwYW5kZWRNZW51SXRlbUtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhbmNlbFN1Yk1lbnVUaW1lcigpO1xuICAgICAgICAvLyBJZiB0aGUgbWVudSBpcyBub3QgZXhwYW5kZWQgd2UgY2FuIHVwZGF0ZSBmb2N1cyB3aXRob3V0IGFueSBkZWxheVxuICAgICAgICBpZiAoZXhwYW5kZWRNZW51SXRlbUtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRGVsYXkgdXBkYXRpbmcgZXhwYW5kaW5nL2Rpc21pc3NpbmcgdGhlIHN1Ym1lbnVcbiAgICAgICAgLy8gYW5kIG9ubHkgc2V0IGZvY3VzIGlmIHdlIGhhdmUgbm90IGFscmVhZHkgZG9uZSBzb1xuICAgICAgICBpZiAoaGFzU3VibWVudShpdGVtKSkge1xuICAgICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBzdGFydFN1Ym1lbnVUaW1lcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIG9wZW5TdWJNZW51KGl0ZW0sIHRhcmdldEVsZW1lbnQsIHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzdGFydFN1Ym1lbnVUaW1lcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgb25TdWJNZW51RGlzbWlzcyhldik7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBvbkl0ZW1DbGljayA9IGZ1bmN0aW9uIChpdGVtLCBldikge1xuICAgICAgICBvbkl0ZW1DbGlja0Jhc2UoaXRlbSwgZXYsIGV2LmN1cnJlbnRUYXJnZXQpO1xuICAgIH07XG4gICAgdmFyIG9uSXRlbUNsaWNrQmFzZSA9IGZ1bmN0aW9uIChpdGVtLCBldiwgdGFyZ2V0KSB7XG4gICAgICAgIHZhciBpdGVtcyA9IGdldFN1Ym1lbnVJdGVtcyhpdGVtLCB7IHRhcmdldDogbWVudVRhcmdldCB9KTtcbiAgICAgICAgLy8gQ2FuY2VsIGFuIGFzeW5jIG1lbnUgaXRlbSBob3ZlciB0aW1lb3V0IGFjdGlvbiBmcm9tIGJlaW5nIHRha2VuIGFuZCBpbnN0ZWFkXG4gICAgICAgIC8vIGp1c3QgdHJpZ2dlciB0aGUgY2xpY2sgZXZlbnQgaW5zdGVhZC5cbiAgICAgICAgY2FuY2VsU3ViTWVudVRpbWVyKCk7XG4gICAgICAgIGlmICghaGFzU3VibWVudShpdGVtKSAmJiAoIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGl0ZW0gd2l0aG91dCBhIG1lbnUuIENsaWNrIGl0LlxuICAgICAgICAgICAgZXhlY3V0ZUl0ZW1DbGljayhpdGVtLCBldik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5rZXkgIT09IGV4cGFuZGVkTWVudUl0ZW1LZXkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGhhcyBhIGNvbGxhcHNlZCBzdWIgbWVudS4gRXhwYW5kIGl0LlxuICAgICAgICAgICAgICAgIC8vIGZvY3VzIG9uIHRoZSBjb250YWluZXIgYnkgZGVmYXVsdCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZCB3aXRoIGEgY2xpY2sgZXZlbnRcbiAgICAgICAgICAgICAgICAvLyB0aGlzIGRpZmZlcmVudGlhdGVzIGZyb20gYSBrZXlib2FyZCBpbnRlcmFjdGlvbiB0cmlnZ2VyaW5nIHRoZSBjbGljayBldmVudFxuICAgICAgICAgICAgICAgIHZhciBzaG91bGRGb2N1c09uQ29udGFpbmVyID0gdHlwZW9mIHByb3BzLnNob3VsZEZvY3VzT25Db250YWluZXIgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzLnNob3VsZEZvY3VzT25Db250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgOiBldi5uYXRpdmVFdmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJztcbiAgICAgICAgICAgICAgICBvcGVuU3ViTWVudShpdGVtLCB0YXJnZXQsIHNob3VsZEZvY3VzT25Db250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH07XG4gICAgdmFyIG9uQW5jaG9yQ2xpY2sgPSBmdW5jdGlvbiAoaXRlbSwgZXYpIHtcbiAgICAgICAgZXhlY3V0ZUl0ZW1DbGljayhpdGVtLCBldik7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH07XG4gICAgdmFyIGV4ZWN1dGVJdGVtQ2xpY2sgPSBmdW5jdGlvbiAoaXRlbSwgZXYpIHtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQgfHwgaXRlbS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ucHJlZmVyTWVudVRhcmdldEFzRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlVGFyZ2V0KGV2LCBtZW51VGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2hvdWxkRGlzbWlzcyA9IGZhbHNlO1xuICAgICAgICBpZiAoaXRlbS5vbkNsaWNrKSB7XG4gICAgICAgICAgICBzaG91bGREaXNtaXNzID0gISFpdGVtLm9uQ2xpY2soZXYsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByb3BzLm9uSXRlbUNsaWNrKSB7XG4gICAgICAgICAgICBzaG91bGREaXNtaXNzID0gISFwcm9wcy5vbkl0ZW1DbGljayhldiwgaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZERpc21pc3MgfHwgIWV2LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIGRpc21pc3MoZXYsIHRydWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gW1xuICAgICAgICBvbkl0ZW1Nb3VzZUVudGVyQmFzZSxcbiAgICAgICAgb25JdGVtTW91c2VNb3ZlQmFzZSxcbiAgICAgICAgb25Nb3VzZUl0ZW1MZWF2ZSxcbiAgICAgICAgb25JdGVtQ2xpY2ssXG4gICAgICAgIG9uQW5jaG9yQ2xpY2ssXG4gICAgICAgIGV4ZWN1dGVJdGVtQ2xpY2ssXG4gICAgICAgIG9uSXRlbUNsaWNrQmFzZSxcbiAgICBdO1xufVxuLy8jZW5kcmVnaW9uXG5leHBvcnQgdmFyIENvbnRleHR1YWxNZW51QmFzZSA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHNXaXRob3V0RGVmYXVsdHMsIGZvcndhcmRlZFJlZikge1xuICAgIHZhciBfYTtcbiAgICB2YXIgX2IgPSBnZXRQcm9wc1dpdGhEZWZhdWx0cyhERUZBVUxUX1BST1BTLCBwcm9wc1dpdGhvdXREZWZhdWx0cyksIHJlZiA9IF9iLnJlZiwgcHJvcHMgPSBfX3Jlc3QoX2IsIFtcInJlZlwiXSk7XG4gICAgdmFyIGhvc3RFbGVtZW50ID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBhc3luY1RyYWNrZXIgPSB1c2VBc3luYygpO1xuICAgIHZhciBtZW51SWQgPSB1c2VJZChDT01QT05FTlRfTkFNRSwgcHJvcHMuaWQpO1xuICAgIHVzZVdhcm5pbmdzKHtcbiAgICAgICAgbmFtZTogQ09NUE9ORU5UX05BTUUsXG4gICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgZGVwcmVjYXRpb25zOiB7XG4gICAgICAgICAgICBnZXRNZW51Q2xhc3NOYW1lczogJ3N0eWxlcycsXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgdmFyIGRpc21pc3MgPSBmdW5jdGlvbiAoZXYsIGRpc21pc3NBbGwpIHsgdmFyIF9hOyByZXR1cm4gKF9hID0gcHJvcHMub25EaXNtaXNzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChwcm9wcywgZXYsIGRpc21pc3NBbGwpOyB9O1xuICAgIHZhciBfYyA9IHVzZVRhcmdldChwcm9wcy50YXJnZXQsIGhvc3RFbGVtZW50KSwgdGFyZ2V0UmVmID0gX2NbMF0sIHRhcmdldFdpbmRvdyA9IF9jWzFdO1xuICAgIHZhciB0cnlGb2N1c1ByZXZpb3VzQWN0aXZlRWxlbWVudCA9IHVzZVByZXZpb3VzQWN0aXZlRWxlbWVudChwcm9wcywgdGFyZ2V0V2luZG93LCBob3N0RWxlbWVudClbMF07XG4gICAgdmFyIF9kID0gdXNlU3ViTWVudVN0YXRlKHByb3BzLCBkaXNtaXNzKSwgZXhwYW5kZWRNZW51SXRlbUtleSA9IF9kWzBdLCBvcGVuU3ViTWVudSA9IF9kWzFdLCBnZXRTdWJtZW51UHJvcHMgPSBfZFsyXSwgb25TdWJNZW51RGlzbWlzcyA9IF9kWzNdO1xuICAgIHZhciBfZSA9IHVzZVNob3VsZFVwZGF0ZUZvY3VzT25Nb3VzZU1vdmUocHJvcHMpLCBzaG91bGRVcGRhdGVGb2N1c09uTW91c2VFdmVudCA9IF9lWzBdLCBnb3RNb3VzZU1vdmUgPSBfZVsxXSwgb25NZW51Rm9jdXNDYXB0dXJlID0gX2VbMl07XG4gICAgdmFyIF9mID0gdXNlU2Nyb2xsSGFuZGxlcihhc3luY1RyYWNrZXIpLCBvblNjcm9sbCA9IF9mWzBdLCBpc1Njcm9sbElkbGUgPSBfZlsxXTtcbiAgICB2YXIgX2cgPSB1c2VTdWJtZW51RW50ZXJUaW1lcihwcm9wcywgYXN5bmNUcmFja2VyKSwgY2FuY2VsU3ViTWVudVRpbWVyID0gX2dbMF0sIHN0YXJ0U3VibWVudVRpbWVyID0gX2dbMV0sIHN1Yk1lbnVFbnRyeVRpbWVyID0gX2dbMl07XG4gICAgdmFyIHJlc3BvbnNpdmVNb2RlID0gdXNlUmVzcG9uc2l2ZU1vZGUoaG9zdEVsZW1lbnQsIHByb3BzLnJlc3BvbnNpdmVNb2RlKTtcbiAgICB1c2VWaXNpYmlsaXR5KHByb3BzLCB0YXJnZXRXaW5kb3cpO1xuICAgIHZhciBfaCA9IHVzZUtleUhhbmRsZXJzKHByb3BzLCBkaXNtaXNzLCBob3N0RWxlbWVudCwgb3BlblN1Yk1lbnUpLCBvbktleURvd24gPSBfaFswXSwgb25LZXlVcCA9IF9oWzFdLCBvbk1lbnVLZXlEb3duID0gX2hbMl0sIG9uSXRlbUtleURvd24gPSBfaFszXTtcbiAgICB2YXIgX2ogPSB1c2VNb3VzZUhhbmRsZXJzKHByb3BzLCBpc1Njcm9sbElkbGUsIHN1Yk1lbnVFbnRyeVRpbWVyLCB0YXJnZXRXaW5kb3csIHNob3VsZFVwZGF0ZUZvY3VzT25Nb3VzZUV2ZW50LCBnb3RNb3VzZU1vdmUsIGV4cGFuZGVkTWVudUl0ZW1LZXksIGhvc3RFbGVtZW50LCBzdGFydFN1Ym1lbnVUaW1lciwgY2FuY2VsU3ViTWVudVRpbWVyLCBvcGVuU3ViTWVudSwgb25TdWJNZW51RGlzbWlzcywgZGlzbWlzcyksIG9uSXRlbU1vdXNlRW50ZXJCYXNlID0gX2pbMF0sIG9uSXRlbU1vdXNlTW92ZUJhc2UgPSBfalsxXSwgb25Nb3VzZUl0ZW1MZWF2ZSA9IF9qWzJdLCBvbkl0ZW1DbGljayA9IF9qWzNdLCBvbkFuY2hvckNsaWNrID0gX2pbNF0sIGV4ZWN1dGVJdGVtQ2xpY2sgPSBfals1XSwgb25JdGVtQ2xpY2tCYXNlID0gX2pbNl07XG4gICAgLy8jcmVnaW9uIFJlbmRlciBoZWxwZXJzXG4gICAgdmFyIG9uRGVmYXVsdFJlbmRlck1lbnVMaXN0ID0gZnVuY3Rpb24gKG1lbnVMaXN0UHJvcHMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIG1lbnVDbGFzc05hbWVzLCBkZWZhdWx0UmVuZGVyKSB7XG4gICAgICAgIHZhciBpbmRleENvcnJlY3Rpb24gPSAwO1xuICAgICAgICB2YXIgaXRlbXMgPSBtZW51TGlzdFByb3BzLml0ZW1zLCB0b3RhbEl0ZW1Db3VudCA9IG1lbnVMaXN0UHJvcHMudG90YWxJdGVtQ291bnQsIGhhc0NoZWNrbWFya3MgPSBtZW51TGlzdFByb3BzLmhhc0NoZWNrbWFya3MsIGhhc0ljb25zID0gbWVudUxpc3RQcm9wcy5oYXNJY29ucztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyBjbGFzc05hbWU6IG1lbnVDbGFzc05hbWVzLmxpc3QsIG9uS2V5RG93bjogb25LZXlEb3duLCBvbktleVVwOiBvbktleVVwLCByb2xlOiAncHJlc2VudGF0aW9uJyB9LCBpdGVtcy5tYXAoZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgbWVudUl0ZW0gPSByZW5kZXJNZW51SXRlbShpdGVtLCBpbmRleCwgaW5kZXhDb3JyZWN0aW9uLCB0b3RhbEl0ZW1Db3VudCwgaGFzQ2hlY2ttYXJrcywgaGFzSWNvbnMsIG1lbnVDbGFzc05hbWVzKTtcbiAgICAgICAgICAgIGlmIChpdGVtLml0ZW1UeXBlICE9PSBDb250ZXh0dWFsTWVudUl0ZW1UeXBlLkRpdmlkZXIgJiYgaXRlbS5pdGVtVHlwZSAhPT0gQ29udGV4dHVhbE1lbnVJdGVtVHlwZS5IZWFkZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXhJbmNyZWFzZSA9IGl0ZW0uY3VzdG9tT25SZW5kZXJMaXN0TGVuZ3RoID8gaXRlbS5jdXN0b21PblJlbmRlckxpc3RMZW5ndGggOiAxO1xuICAgICAgICAgICAgICAgIGluZGV4Q29ycmVjdGlvbiArPSBpbmRleEluY3JlYXNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1lbnVJdGVtO1xuICAgICAgICB9KSkpO1xuICAgIH07XG4gICAgdmFyIHJlbmRlckZvY3VzWm9uZSA9IGZ1bmN0aW9uIChjaGlsZHJlbiwgYWRqdXN0ZWRGb2N1c1pvbmVQcm9wcykge1xuICAgICAgICB2YXIgX2EgPSBwcm9wcy5mb2N1c1pvbmVBcywgQ2hpbGRyZW5SZW5kZXJlciA9IF9hID09PSB2b2lkIDAgPyBGb2N1c1pvbmUgOiBfYTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hpbGRyZW5SZW5kZXJlciwgX19hc3NpZ24oe30sIGFkanVzdGVkRm9jdXNab25lUHJvcHMpLCBjaGlsZHJlbik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiAhISFJTVBPUlRBTlQhISEgQXZvaWQgbXV0YXRpbmcgYGl0ZW06IElDb250ZXh0dWFsTWVudUl0ZW1gIGFyZ3VtZW50LiBJdCB3aWxsXG4gICAgICogY2F1c2UgdGhlIG1lbnUgaXRlbXMgdG8gYWx3YXlzIHJlLXJlbmRlciBiZWNhdXNlIHRoZSBjb21wb25lbnQgdXBkYXRlIGlzIGJhc2VkIG9uIHNoYWxsb3cgY29tcGFyaXNvbi5cbiAgICAgKi9cbiAgICB2YXIgcmVuZGVyTWVudUl0ZW0gPSBmdW5jdGlvbiAoaXRlbSwgaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCwgdG90YWxJdGVtQ291bnQsIGhhc0NoZWNrbWFya3MsIGhhc0ljb25zLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBtZW51Q2xhc3NOYW1lcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciByZW5kZXJlZEl0ZW1zID0gW107XG4gICAgICAgIHZhciBpY29uUHJvcHMgPSBpdGVtLmljb25Qcm9wcyB8fCB7IGljb25OYW1lOiAnTm9uZScgfTtcbiAgICAgICAgdmFyIGdldEl0ZW1DbGFzc05hbWVzID0gaXRlbS5nZXRJdGVtQ2xhc3NOYW1lcywgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBpdGVtUHJvcHMgPSBpdGVtLml0ZW1Qcm9wcztcbiAgICAgICAgdmFyIHN0eWxlcyA9IGl0ZW1Qcm9wcyA/IGl0ZW1Qcm9wcy5zdHlsZXMgOiB1bmRlZmluZWQ7XG4gICAgICAgIC8vIFdlIG9ubHkgc2VuZCBhIGRpdmlkZXJDbGFzc05hbWUgd2hlbiB0aGUgaXRlbSB0byBiZSByZW5kZXJlZCBpcyBhIGRpdmlkZXIuXG4gICAgICAgIC8vIEZvciBhbGwgb3RoZXIgY2FzZXMsIHRoZSBkZWZhdWx0IGRpdmlkZXIgc3R5bGUgaXMgdXNlZC5cbiAgICAgICAgdmFyIGRpdmlkZXJDbGFzc05hbWUgPSBpdGVtLml0ZW1UeXBlID09PSBDb250ZXh0dWFsTWVudUl0ZW1UeXBlLkRpdmlkZXIgPyBpdGVtLmNsYXNzTmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHN1Yk1lbnVJY29uQ2xhc3NOYW1lID0gaXRlbS5zdWJtZW51SWNvblByb3BzID8gaXRlbS5zdWJtZW51SWNvblByb3BzLmNsYXNzTmFtZSA6ICcnO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgdmFyIGl0ZW1DbGFzc05hbWVzO1xuICAgICAgICAvLyBJQ29udGV4dHVhbE1lbnVJdGVtI2dldEl0ZW1DbGFzc05hbWVzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAvLyBvdGhlcndpc2UgdXNlcyBtZXJnZVN0eWxlcyBmb3IgY2xhc3MgbmFtZXMuXG4gICAgICAgIGlmIChnZXRJdGVtQ2xhc3NOYW1lcykge1xuICAgICAgICAgICAgaXRlbUNsYXNzTmFtZXMgPSBnZXRJdGVtQ2xhc3NOYW1lcyhwcm9wcy50aGVtZSwgaXNJdGVtRGlzYWJsZWQoaXRlbSksIGV4cGFuZGVkTWVudUl0ZW1LZXkgPT09IGl0ZW0ua2V5LCAhIWdldElzQ2hlY2tlZChpdGVtKSwgISFpdGVtLmhyZWYsIGljb25Qcm9wcy5pY29uTmFtZSAhPT0gJ05vbmUnLCBpdGVtLmNsYXNzTmFtZSwgZGl2aWRlckNsYXNzTmFtZSwgaWNvblByb3BzLmNsYXNzTmFtZSwgc3ViTWVudUljb25DbGFzc05hbWUsIGl0ZW0ucHJpbWFyeURpc2FibGVkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBpdGVtU3R5bGVQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICB0aGVtZTogcHJvcHMudGhlbWUsXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ6IGlzSXRlbURpc2FibGVkKGl0ZW0pLFxuICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBleHBhbmRlZE1lbnVJdGVtS2V5ID09PSBpdGVtLmtleSxcbiAgICAgICAgICAgICAgICBjaGVja2VkOiAhIWdldElzQ2hlY2tlZChpdGVtKSxcbiAgICAgICAgICAgICAgICBpc0FuY2hvckxpbms6ICEhaXRlbS5ocmVmLFxuICAgICAgICAgICAgICAgIGtub3duSWNvbjogaWNvblByb3BzLmljb25OYW1lICE9PSAnTm9uZScsXG4gICAgICAgICAgICAgICAgaXRlbUNsYXNzTmFtZTogaXRlbS5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgZGl2aWRlckNsYXNzTmFtZTogZGl2aWRlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lOiBpY29uUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIHN1Yk1lbnVDbGFzc05hbWU6IHN1Yk1lbnVJY29uQ2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIHByaW1hcnlEaXNhYmxlZDogaXRlbS5wcmltYXJ5RGlzYWJsZWQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnZW5lcmF0ZSBkZWZhdWx0IHN0eWxlcyB0aGVuIG92ZXJyaWRlIGlmIHN0eWxlcyBhcmUgcHJvdmlkZWRcbiAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBDb250ZXh0dWFsTWVudSBjdXJyZW50bHkgaGFuZGxlcyBpdGVtIGNsYXNzTmFtZXMuXG4gICAgICAgICAgICBpdGVtQ2xhc3NOYW1lcyA9IGdldENvbnRleHR1YWxNZW51SXRlbUNsYXNzTmFtZXMoX2dldE1lbnVJdGVtU3R5bGVzRnVuY3Rpb24oKF9hID0gbWVudUNsYXNzTmFtZXMuc3ViQ29tcG9uZW50U3R5bGVzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubWVudUl0ZW0sIHN0eWxlcyksIGl0ZW1TdHlsZVByb3BzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgaWYgKGl0ZW0udGV4dCA9PT0gJy0nIHx8IGl0ZW0ubmFtZSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBpdGVtLml0ZW1UeXBlID0gQ29udGV4dHVhbE1lbnVJdGVtVHlwZS5EaXZpZGVyO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoaXRlbS5pdGVtVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb250ZXh0dWFsTWVudUl0ZW1UeXBlLkRpdmlkZXI6XG4gICAgICAgICAgICAgICAgcmVuZGVyZWRJdGVtcy5wdXNoKHJlbmRlclNlcGFyYXRvcihpbmRleCwgaXRlbUNsYXNzTmFtZXMpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQ29udGV4dHVhbE1lbnVJdGVtVHlwZS5IZWFkZXI6XG4gICAgICAgICAgICAgICAgcmVuZGVyZWRJdGVtcy5wdXNoKHJlbmRlclNlcGFyYXRvcihpbmRleCwgaXRlbUNsYXNzTmFtZXMpKTtcbiAgICAgICAgICAgICAgICB2YXIgaGVhZGVySXRlbSA9IHJlbmRlckhlYWRlck1lbnVJdGVtKGl0ZW0sIGl0ZW1DbGFzc05hbWVzLCBtZW51Q2xhc3NOYW1lcywgaW5kZXgsIGhhc0NoZWNrbWFya3MsIGhhc0ljb25zKTtcbiAgICAgICAgICAgICAgICByZW5kZXJlZEl0ZW1zLnB1c2gocmVuZGVyTGlzdEl0ZW0oaGVhZGVySXRlbSwgaXRlbS5rZXkgfHwgaW5kZXgsIGl0ZW1DbGFzc05hbWVzLCBpdGVtLnRpdGxlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbnRleHR1YWxNZW51SXRlbVR5cGUuU2VjdGlvbjpcbiAgICAgICAgICAgICAgICByZW5kZXJlZEl0ZW1zLnB1c2gocmVuZGVyU2VjdGlvbkl0ZW0oaXRlbSwgaXRlbUNsYXNzTmFtZXMsIG1lbnVDbGFzc05hbWVzLCBpbmRleCwgaGFzQ2hlY2ttYXJrcywgaGFzSWNvbnMpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRSZW5kZXJOb3JtYWxJdGVtID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyTm9ybWFsSXRlbShpdGVtLCBpdGVtQ2xhc3NOYW1lcywgaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCwgdG90YWxJdGVtQ291bnQsIGhhc0NoZWNrbWFya3MsIGhhc0ljb25zKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHZhciBtZW51SXRlbSA9IHByb3BzLm9uUmVuZGVyQ29udGV4dHVhbE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMub25SZW5kZXJDb250ZXh0dWFsTWVudUl0ZW0oaXRlbSwgZGVmYXVsdFJlbmRlck5vcm1hbEl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIDogZGVmYXVsdFJlbmRlck5vcm1hbEl0ZW0oKTtcbiAgICAgICAgICAgICAgICByZW5kZXJlZEl0ZW1zLnB1c2gocmVuZGVyTGlzdEl0ZW0obWVudUl0ZW0sIGl0ZW0ua2V5IHx8IGluZGV4LCBpdGVtQ2xhc3NOYW1lcywgaXRlbS50aXRsZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNpbmNlIG11bHRpcGxlIG5vZGVzICpjb3VsZCogYmUgcmVuZGVyZWQsIHdyYXAgdGhlbSBhbGwgaW4gYSBmcmFnbWVudCB3aXRoIHRoaXMgaXRlbSdzIGtleS5cbiAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSByZWNvbmNpbGVyIGhhbmRsZXMgbXVsdGktaXRlbSBvdXRwdXQgcGVyLW5vZGUgY29ycmVjdGx5IGFuZCBkb2VzIG5vdCByZS1tb3VudCBjb250ZW50LlxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgeyBrZXk6IGl0ZW0ua2V5IH0sIHJlbmRlcmVkSXRlbXMpO1xuICAgIH07XG4gICAgdmFyIGRlZmF1bHRNZW51SXRlbVJlbmRlcmVyID0gZnVuY3Rpb24gKGl0ZW0sIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIG1lbnVDbGFzc05hbWVzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGl0ZW0uaW5kZXgsIGZvY3VzYWJsZUVsZW1lbnRJbmRleCA9IGl0ZW0uZm9jdXNhYmxlRWxlbWVudEluZGV4LCB0b3RhbEl0ZW1Db3VudCA9IGl0ZW0udG90YWxJdGVtQ291bnQsIGhhc0NoZWNrbWFya3MgPSBpdGVtLmhhc0NoZWNrbWFya3MsIGhhc0ljb25zID0gaXRlbS5oYXNJY29ucztcbiAgICAgICAgcmV0dXJuIHJlbmRlck1lbnVJdGVtKGl0ZW0sIGluZGV4LCBmb2N1c2FibGVFbGVtZW50SW5kZXgsIHRvdGFsSXRlbUNvdW50LCBoYXNDaGVja21hcmtzLCBoYXNJY29ucywgbWVudUNsYXNzTmFtZXMpO1xuICAgIH07XG4gICAgdmFyIHJlbmRlclNlY3Rpb25JdGVtID0gZnVuY3Rpb24gKHNlY3Rpb25JdGVtLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBpdGVtQ2xhc3NOYW1lcywgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgbWVudUNsYXNzTmFtZXMsIGluZGV4LCBoYXNDaGVja21hcmtzLCBoYXNJY29ucykge1xuICAgICAgICB2YXIgc2VjdGlvblByb3BzID0gc2VjdGlvbkl0ZW0uc2VjdGlvblByb3BzO1xuICAgICAgICBpZiAoIXNlY3Rpb25Qcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBoZWFkZXJJdGVtO1xuICAgICAgICB2YXIgZ3JvdXBQcm9wcztcbiAgICAgICAgaWYgKHNlY3Rpb25Qcm9wcy50aXRsZSkge1xuICAgICAgICAgICAgdmFyIGhlYWRlckNvbnRleHR1YWxNZW51SXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZhciBhcmlhTGFiZWxsZWRieSA9ICcnO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWN0aW9uUHJvcHMudGl0bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2UgdGl0bGUgaXMgYSB1c2VyLWZhY2luZyBzdHJpbmcsIGl0IG5lZWRzIHRvIGJlIHN0cmlwcGVkXG4gICAgICAgICAgICAgICAgLy8gb2Ygd2hpdGVzcGFjZSBpbiBvcmRlciB0byBidWlsZCBhIHZhbGlkIGVsZW1lbnQgSURcbiAgICAgICAgICAgICAgICB2YXIgaWRfMSA9IG1lbnVJZCArIHNlY3Rpb25Qcm9wcy50aXRsZS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICAgICAgICAgIGhlYWRlckNvbnRleHR1YWxNZW51SXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcInNlY3Rpb24tXCIuY29uY2F0KHNlY3Rpb25Qcm9wcy50aXRsZSwgXCItdGl0bGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1UeXBlOiBDb250ZXh0dWFsTWVudUl0ZW1UeXBlLkhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogc2VjdGlvblByb3BzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBpZDogaWRfMSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZGJ5ID0gaWRfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBpZF8yID0gc2VjdGlvblByb3BzLnRpdGxlLmlkIHx8IG1lbnVJZCArIHNlY3Rpb25Qcm9wcy50aXRsZS5rZXkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgICAgICAgICBoZWFkZXJDb250ZXh0dWFsTWVudUl0ZW0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc2VjdGlvblByb3BzLnRpdGxlKSwgeyBpZDogaWRfMiB9KTtcbiAgICAgICAgICAgICAgICBhcmlhTGFiZWxsZWRieSA9IGlkXzI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVhZGVyQ29udGV4dHVhbE1lbnVJdGVtKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBQcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgcm9sZTogJ2dyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGFyaWFMYWJlbGxlZGJ5LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaGVhZGVySXRlbSA9IHJlbmRlckhlYWRlck1lbnVJdGVtKGhlYWRlckNvbnRleHR1YWxNZW51SXRlbSwgaXRlbUNsYXNzTmFtZXMsIG1lbnVDbGFzc05hbWVzLCBpbmRleCwgaGFzQ2hlY2ttYXJrcywgaGFzSWNvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uUHJvcHMuaXRlbXMgJiYgc2VjdGlvblByb3BzLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhciBjb3JyZWN0ZWRJbmRleF8xID0gMDtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHsgcm9sZTogXCJwcmVzZW50YXRpb25cIiwga2V5OiBzZWN0aW9uUHJvcHMua2V5IHx8IHNlY3Rpb25JdGVtLmtleSB8fCBcInNlY3Rpb24tXCIuY29uY2F0KGluZGV4KSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oe30sIGdyb3VwUHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyBjbGFzc05hbWU6IG1lbnVDbGFzc05hbWVzLmxpc3QsIHJvbGU6IFwicHJlc2VudGF0aW9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25Qcm9wcy50b3BEaXZpZGVyICYmIHJlbmRlclNlcGFyYXRvcihpbmRleCwgaXRlbUNsYXNzTmFtZXMsIHRydWUsIHRydWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVySXRlbSAmJiByZW5kZXJMaXN0SXRlbShoZWFkZXJJdGVtLCBzZWN0aW9uSXRlbS5rZXkgfHwgaW5kZXgsIGl0ZW1DbGFzc05hbWVzLCBzZWN0aW9uSXRlbS50aXRsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uUHJvcHMuaXRlbXMubWFwKGZ1bmN0aW9uIChjb250ZXh0dWFsTWVudUl0ZW0sIGl0ZW1zSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVudUl0ZW0gPSByZW5kZXJNZW51SXRlbShjb250ZXh0dWFsTWVudUl0ZW0sIGl0ZW1zSW5kZXgsIGNvcnJlY3RlZEluZGV4XzEsIGdldEl0ZW1Db3VudChzZWN0aW9uUHJvcHMuaXRlbXMpLCBoYXNDaGVja21hcmtzLCBoYXNJY29ucywgbWVudUNsYXNzTmFtZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0dWFsTWVudUl0ZW0uaXRlbVR5cGUgIT09IENvbnRleHR1YWxNZW51SXRlbVR5cGUuRGl2aWRlciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0dWFsTWVudUl0ZW0uaXRlbVR5cGUgIT09IENvbnRleHR1YWxNZW51SXRlbVR5cGUuSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleEluY3JlYXNlID0gY29udGV4dHVhbE1lbnVJdGVtLmN1c3RvbU9uUmVuZGVyTGlzdExlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb250ZXh0dWFsTWVudUl0ZW0uY3VzdG9tT25SZW5kZXJMaXN0TGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlY3RlZEluZGV4XzEgKz0gaW5kZXhJbmNyZWFzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbnVJdGVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uUHJvcHMuYm90dG9tRGl2aWRlciAmJiByZW5kZXJTZXBhcmF0b3IoaW5kZXgsIGl0ZW1DbGFzc05hbWVzLCBmYWxzZSwgdHJ1ZSkpKSkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgcmVuZGVyTGlzdEl0ZW0gPSBmdW5jdGlvbiAoY29udGVudCwga2V5LCBjbGFzc05hbWVzLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgdGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgeyByb2xlOiBcInByZXNlbnRhdGlvblwiLCB0aXRsZTogdGl0bGUsIGtleToga2V5LCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaXRlbSB9LCBjb250ZW50KSk7XG4gICAgfTtcbiAgICB2YXIgcmVuZGVyU2VwYXJhdG9yID0gZnVuY3Rpb24gKGluZGV4LCBjbGFzc05hbWVzLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgdG9wLCBmcm9tU2VjdGlvbikge1xuICAgICAgICBpZiAoZnJvbVNlY3Rpb24gfHwgaW5kZXggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7IHJvbGU6IFwic2VwYXJhdG9yXCIsIGtleTogJ3NlcGFyYXRvci0nICsgaW5kZXggKyAodG9wID09PSB1bmRlZmluZWQgPyAnJyA6IHRvcCA/ICctdG9wJyA6ICctYm90dG9tJyksIGNsYXNzTmFtZTogY2xhc3NOYW1lcy5kaXZpZGVyLCBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHZhciByZW5kZXJOb3JtYWxJdGVtID0gZnVuY3Rpb24gKGl0ZW0sIGNsYXNzTmFtZXMsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBpbmRleCwgZm9jdXNhYmxlRWxlbWVudEluZGV4LCB0b3RhbEl0ZW1Db3VudCwgaGFzQ2hlY2ttYXJrcywgaGFzSWNvbnMpIHtcbiAgICAgICAgaWYgKGl0ZW0ub25SZW5kZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLm9uUmVuZGVyKF9fYXNzaWduKHsgJ2FyaWEtcG9zaW5zZXQnOiBmb2N1c2FibGVFbGVtZW50SW5kZXggKyAxLCAnYXJpYS1zZXRzaXplJzogdG90YWxJdGVtQ291bnQgfSwgaXRlbSksIGRpc21pc3MpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb250ZXh0dWFsTWVudUl0ZW1BcyA9IHByb3BzLmNvbnRleHR1YWxNZW51SXRlbUFzO1xuICAgICAgICB2YXIgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgY2xhc3NOYW1lczogY2xhc3NOYW1lcyxcbiAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgIGZvY3VzYWJsZUVsZW1lbnRJbmRleDogZm9jdXNhYmxlRWxlbWVudEluZGV4LFxuICAgICAgICAgICAgdG90YWxJdGVtQ291bnQ6IHRvdGFsSXRlbUNvdW50LFxuICAgICAgICAgICAgaGFzQ2hlY2ttYXJrczogaGFzQ2hlY2ttYXJrcyxcbiAgICAgICAgICAgIGhhc0ljb25zOiBoYXNJY29ucyxcbiAgICAgICAgICAgIGNvbnRleHR1YWxNZW51SXRlbUFzOiBjb250ZXh0dWFsTWVudUl0ZW1BcyxcbiAgICAgICAgICAgIG9uSXRlbU1vdXNlRW50ZXI6IG9uSXRlbU1vdXNlRW50ZXJCYXNlLFxuICAgICAgICAgICAgb25JdGVtTW91c2VMZWF2ZTogb25Nb3VzZUl0ZW1MZWF2ZSxcbiAgICAgICAgICAgIG9uSXRlbU1vdXNlTW92ZTogb25JdGVtTW91c2VNb3ZlQmFzZSxcbiAgICAgICAgICAgIG9uSXRlbU1vdXNlRG93bjogb25JdGVtTW91c2VEb3duLFxuICAgICAgICAgICAgZXhlY3V0ZUl0ZW1DbGljazogZXhlY3V0ZUl0ZW1DbGljayxcbiAgICAgICAgICAgIG9uSXRlbUtleURvd246IG9uSXRlbUtleURvd24sXG4gICAgICAgICAgICBleHBhbmRlZE1lbnVJdGVtS2V5OiBleHBhbmRlZE1lbnVJdGVtS2V5LFxuICAgICAgICAgICAgb3BlblN1Yk1lbnU6IG9wZW5TdWJNZW51LFxuICAgICAgICAgICAgZGlzbWlzc1N1Yk1lbnU6IG9uU3ViTWVudURpc21pc3MsXG4gICAgICAgICAgICBkaXNtaXNzTWVudTogZGlzbWlzcyxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGl0ZW0uaHJlZikge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dHVhbE1lbnVBbmNob3IsIF9fYXNzaWduKHt9LCBjb21tb25Qcm9wcywgeyBvbkl0ZW1DbGljazogb25BbmNob3JDbGljayB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0uc3BsaXQgJiYgaGFzU3VibWVudShpdGVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHR1YWxNZW51U3BsaXRCdXR0b24sIF9fYXNzaWduKHt9LCBjb21tb25Qcm9wcywgeyBvbkl0ZW1DbGljazogb25JdGVtQ2xpY2ssIG9uSXRlbUNsaWNrQmFzZTogb25JdGVtQ2xpY2tCYXNlLCBvblRhcDogY2FuY2VsU3ViTWVudVRpbWVyIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGV4dHVhbE1lbnVCdXR0b24sIF9fYXNzaWduKHt9LCBjb21tb25Qcm9wcywgeyBvbkl0ZW1DbGljazogb25JdGVtQ2xpY2ssIG9uSXRlbUNsaWNrQmFzZTogb25JdGVtQ2xpY2tCYXNlIH0pKTtcbiAgICB9O1xuICAgIHZhciByZW5kZXJIZWFkZXJNZW51SXRlbSA9IGZ1bmN0aW9uIChpdGVtLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBpdGVtQ2xhc3NOYW1lcywgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgbWVudUNsYXNzTmFtZXMsIGluZGV4LCBoYXNDaGVja21hcmtzLCBoYXNJY29ucykge1xuICAgICAgICB2YXIgX2EgPSBwcm9wcy5jb250ZXh0dWFsTWVudUl0ZW1BcywgQ2hpbGRyZW5SZW5kZXJlciA9IF9hID09PSB2b2lkIDAgPyBDb250ZXh0dWFsTWVudUl0ZW0gOiBfYTtcbiAgICAgICAgdmFyIGl0ZW1Qcm9wcyA9IGl0ZW0uaXRlbVByb3BzLCBpZCA9IGl0ZW0uaWQ7XG4gICAgICAgIHZhciBkaXZIdG1sUHJvcGVydGllcyA9IGl0ZW1Qcm9wcyAmJiBnZXROYXRpdmVQcm9wcyhpdGVtUHJvcHMsIGRpdlByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7IGlkOiBpZCwgY2xhc3NOYW1lOiBtZW51Q2xhc3NOYW1lcy5oZWFkZXIgfSwgZGl2SHRtbFByb3BlcnRpZXMsIHsgc3R5bGU6IGl0ZW0uc3R5bGUgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENoaWxkcmVuUmVuZGVyZXIsIF9fYXNzaWduKHsgaXRlbTogaXRlbSwgY2xhc3NOYW1lczogaXRlbUNsYXNzTmFtZXMsIGluZGV4OiBpbmRleCwgb25DaGVja21hcmtDbGljazogaGFzQ2hlY2ttYXJrcyA/IG9uSXRlbUNsaWNrIDogdW5kZWZpbmVkLCBoYXNJY29uczogaGFzSWNvbnMgfSwgaXRlbVByb3BzKSkpKTtcbiAgICB9O1xuICAgIC8vI2VuZHJlZ2lvblxuICAgIC8vI3JlZ2lvbiBNYWluIHJlbmRlclxuICAgIHZhciBpc0JlYWtWaXNpYmxlID0gcHJvcHMuaXNCZWFrVmlzaWJsZTtcbiAgICB2YXIgaXRlbXMgPSBwcm9wcy5pdGVtcywgbGFiZWxFbGVtZW50SWQgPSBwcm9wcy5sYWJlbEVsZW1lbnRJZCwgaWQgPSBwcm9wcy5pZCwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBiZWFrV2lkdGggPSBwcm9wcy5iZWFrV2lkdGgsIGRpcmVjdGlvbmFsSGludCA9IHByb3BzLmRpcmVjdGlvbmFsSGludCwgZGlyZWN0aW9uYWxIaW50Rm9yUlRMID0gcHJvcHMuZGlyZWN0aW9uYWxIaW50Rm9yUlRMLCBhbGlnblRhcmdldEVkZ2UgPSBwcm9wcy5hbGlnblRhcmdldEVkZ2UsIGdhcFNwYWNlID0gcHJvcHMuZ2FwU3BhY2UsIGNvdmVyVGFyZ2V0ID0gcHJvcHMuY292ZXJUYXJnZXQsIGFyaWFMYWJlbCA9IHByb3BzLmFyaWFMYWJlbCwgZG9Ob3RMYXllciA9IHByb3BzLmRvTm90TGF5ZXIsIHRhcmdldCA9IHByb3BzLnRhcmdldCwgYm91bmRzID0gcHJvcHMuYm91bmRzLCB1c2VUYXJnZXRXaWR0aCA9IHByb3BzLnVzZVRhcmdldFdpZHRoLCB1c2VUYXJnZXRBc01pbldpZHRoID0gcHJvcHMudXNlVGFyZ2V0QXNNaW5XaWR0aCwgZGlyZWN0aW9uYWxIaW50Rml4ZWQgPSBwcm9wcy5kaXJlY3Rpb25hbEhpbnRGaXhlZCwgc2hvdWxkRm9jdXNPbk1vdW50ID0gcHJvcHMuc2hvdWxkRm9jdXNPbk1vdW50LCBzaG91bGRGb2N1c09uQ29udGFpbmVyID0gcHJvcHMuc2hvdWxkRm9jdXNPbkNvbnRhaW5lciwgdGl0bGUgPSBwcm9wcy50aXRsZSwgc3R5bGVzID0gcHJvcHMuc3R5bGVzLCB0aGVtZSA9IHByb3BzLnRoZW1lLCBjYWxsb3V0UHJvcHMgPSBwcm9wcy5jYWxsb3V0UHJvcHMsIF9rID0gcHJvcHMub25SZW5kZXJTdWJNZW51LCBvblJlbmRlclN1Yk1lbnUgPSBfayA9PT0gdm9pZCAwID8gb25EZWZhdWx0UmVuZGVyU3ViTWVudSA6IF9rLCBfbCA9IHByb3BzLm9uUmVuZGVyTWVudUxpc3QsIG9uUmVuZGVyTWVudUxpc3QgPSBfbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKG1lbnVMaXN0UHJvcHMsIGRlZmF1bHRSZW5kZXIpIHsgcmV0dXJuIG9uRGVmYXVsdFJlbmRlck1lbnVMaXN0KG1lbnVMaXN0UHJvcHMsIGNsYXNzTmFtZXMsIGRlZmF1bHRSZW5kZXIpOyB9IDogX2wsIGZvY3VzWm9uZVByb3BzID0gcHJvcHMuZm9jdXNab25lUHJvcHMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIGdldE1lbnVDbGFzc05hbWVzID0gcHJvcHMuZ2V0TWVudUNsYXNzTmFtZXM7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRNZW51Q2xhc3NOYW1lc1xuICAgICAgICA/IGdldE1lbnVDbGFzc05hbWVzKHRoZW1lLCBjbGFzc05hbWUpXG4gICAgICAgIDogZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICB9KTtcbiAgICB2YXIgaGFzSWNvbnMgPSBpdGVtc0hhdmVJY29ucyhpdGVtcyk7XG4gICAgZnVuY3Rpb24gaXRlbXNIYXZlSWNvbnMoY29udGV4dHVhbE1lbnVJdGVtcykge1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGNvbnRleHR1YWxNZW51SXRlbXNfMSA9IGNvbnRleHR1YWxNZW51SXRlbXM7IF9pIDwgY29udGV4dHVhbE1lbnVJdGVtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSBjb250ZXh0dWFsTWVudUl0ZW1zXzFbX2ldO1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWNvblByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gQ29udGV4dHVhbE1lbnVJdGVtVHlwZS5TZWN0aW9uICYmXG4gICAgICAgICAgICAgICAgaXRlbS5zZWN0aW9uUHJvcHMgJiZcbiAgICAgICAgICAgICAgICBpdGVtc0hhdmVJY29ucyhpdGVtLnNlY3Rpb25Qcm9wcy5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBhZGp1c3RlZEZvY3VzWm9uZVByb3BzID0gX19hc3NpZ24oX19hc3NpZ24oeyBkaXJlY3Rpb246IEZvY3VzWm9uZURpcmVjdGlvbi52ZXJ0aWNhbCwgaGFuZGxlVGFiS2V5OiBGb2N1c1pvbmVUYWJiYWJsZUVsZW1lbnRzLmFsbCwgaXNDaXJjdWxhck5hdmlnYXRpb246IHRydWUgfSwgZm9jdXNab25lUHJvcHMpLCB7IGNsYXNzTmFtZTogY3NzKGNsYXNzTmFtZXMucm9vdCwgKF9hID0gcHJvcHMuZm9jdXNab25lUHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jbGFzc05hbWUpIH0pO1xuICAgIHZhciBoYXNDaGVja21hcmtzID0gY2FuQW55TWVudUl0ZW1zQ2hlY2soaXRlbXMpO1xuICAgIHZhciBzdWJtZW51UHJvcHMgPSBleHBhbmRlZE1lbnVJdGVtS2V5ICYmIHByb3BzLmhpZGRlbiAhPT0gdHJ1ZSA/IGdldFN1Ym1lbnVQcm9wcygpIDogbnVsbDtcbiAgICBpc0JlYWtWaXNpYmxlID0gaXNCZWFrVmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gcmVzcG9uc2l2ZU1vZGUgPD0gUmVzcG9uc2l2ZU1vZGUubWVkaXVtIDogaXNCZWFrVmlzaWJsZTtcbiAgICAvKipcbiAgICAgKiBXaGVuIHVzZVRhcmdldFdpZHRoIGlzIHRydWUsIGdldCB0aGUgd2lkdGggb2YgdGhlIHRhcmdldCBlbGVtZW50IGFuZCBhcHBseSBpdCBmb3IgdGhlIGNvbnRleHQgbWVudSBjb250YWluZXJcbiAgICAgKi9cbiAgICB2YXIgY29udGV4dE1lbnVTdHlsZTtcbiAgICB2YXIgdGFyZ2V0QXNIdG1sRWxlbWVudCA9IHRhcmdldFJlZi5jdXJyZW50O1xuICAgIGlmICgodXNlVGFyZ2V0V2lkdGggfHwgdXNlVGFyZ2V0QXNNaW5XaWR0aCkgJiYgdGFyZ2V0QXNIdG1sRWxlbWVudCAmJiB0YXJnZXRBc0h0bWxFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgIHZhciB0YXJnZXRCb3VuZGluZ1JlY3QgPSB0YXJnZXRBc0h0bWxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgdGFyZ2V0V2lkdGggPSB0YXJnZXRCb3VuZGluZ1JlY3Qud2lkdGggLSAyOyAvKiBBY2NvdW50cyBmb3IgMXB4IGJvcmRlciAqL1xuICAgICAgICBpZiAodXNlVGFyZ2V0V2lkdGgpIHtcbiAgICAgICAgICAgIGNvbnRleHRNZW51U3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IHRhcmdldFdpZHRoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1c2VUYXJnZXRBc01pbldpZHRoKSB7XG4gICAgICAgICAgICBjb250ZXh0TWVudVN0eWxlID0ge1xuICAgICAgICAgICAgICAgIG1pbldpZHRoOiB0YXJnZXRXaWR0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVGhlIG1lbnUgc2hvdWxkIG9ubHkgcmV0dXJuIGlmIGl0ZW1zIHdlcmUgcHJvdmlkZWQsIGlmIG5vIGl0ZW1zIHdlcmUgcHJvdmlkZWQgdGhlbiBpdCBzaG91bGQgbm90IGFwcGVhci5cbiAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgdG90YWxJdGVtQ291bnRfMSA9IGdldEl0ZW1Db3VudChpdGVtcyk7XG4gICAgICAgIHZhciBjYWxsb3V0U3R5bGVzXzEgPSBjbGFzc05hbWVzLnN1YkNvbXBvbmVudFN0eWxlc1xuICAgICAgICAgICAgPyBjbGFzc05hbWVzLnN1YkNvbXBvbmVudFN0eWxlcy5jYWxsb3V0XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KE1lbnVDb250ZXh0LkNvbnN1bWVyLCBudWxsLCBmdW5jdGlvbiAobWVudUNvbnRleHQpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENhbGxvdXQsIF9fYXNzaWduKHsgc3R5bGVzOiBjYWxsb3V0U3R5bGVzXzEsIG9uUmVzdG9yZUZvY3VzOiB0cnlGb2N1c1ByZXZpb3VzQWN0aXZlRWxlbWVudCB9LCBjYWxsb3V0UHJvcHMsIHsgdGFyZ2V0OiB0YXJnZXQgfHwgbWVudUNvbnRleHQudGFyZ2V0LCBpc0JlYWtWaXNpYmxlOiBpc0JlYWtWaXNpYmxlLCBiZWFrV2lkdGg6IGJlYWtXaWR0aCwgZGlyZWN0aW9uYWxIaW50OiBkaXJlY3Rpb25hbEhpbnQsIGRpcmVjdGlvbmFsSGludEZvclJUTDogZGlyZWN0aW9uYWxIaW50Rm9yUlRMLCBnYXBTcGFjZTogZ2FwU3BhY2UsIGNvdmVyVGFyZ2V0OiBjb3ZlclRhcmdldCwgZG9Ob3RMYXllcjogZG9Ob3RMYXllciwgY2xhc3NOYW1lOiBjc3MoJ21zLUNvbnRleHR1YWxNZW51LUNhbGxvdXQnLCBjYWxsb3V0UHJvcHMgJiYgY2FsbG91dFByb3BzLmNsYXNzTmFtZSksIHNldEluaXRpYWxGb2N1czogc2hvdWxkRm9jdXNPbk1vdW50LCBvbkRpc21pc3M6IHByb3BzLm9uRGlzbWlzcyB8fCBtZW51Q29udGV4dC5vbkRpc21pc3MsIG9uU2Nyb2xsOiBvblNjcm9sbCwgYm91bmRzOiBib3VuZHMsIGRpcmVjdGlvbmFsSGludEZpeGVkOiBkaXJlY3Rpb25hbEhpbnRGaXhlZCwgYWxpZ25UYXJnZXRFZGdlOiBhbGlnblRhcmdldEVkZ2UsIGhpZGRlbjogcHJvcHMuaGlkZGVuIHx8IG1lbnVDb250ZXh0LmhpZGRlbiwgcmVmOiBmb3J3YXJkZWRSZWYgfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgc3R5bGU6IGNvbnRleHRNZW51U3R5bGUsIHJlZjogaG9zdEVsZW1lbnQsIGlkOiBpZCwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmNvbnRhaW5lciwgdGFiSW5kZXg6IHNob3VsZEZvY3VzT25Db250YWluZXIgPyAwIDogLTEsIG9uS2V5RG93bjogb25NZW51S2V5RG93biwgb25LZXlVcDogb25LZXlVcCwgb25Gb2N1c0NhcHR1cmU6IG9uTWVudUZvY3VzQ2FwdHVyZSwgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCwgXCJhcmlhLWxhYmVsbGVkYnlcIjogbGFiZWxFbGVtZW50SWQsIHJvbGU6ICdtZW51JyB9LFxuICAgICAgICAgICAgICAgIHRpdGxlICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMudGl0bGUgfSxcbiAgICAgICAgICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBcIiBcIiksXG4gICAgICAgICAgICAgICAgaXRlbXMgJiYgaXRlbXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gcmVuZGVyRm9jdXNab25lKG9uUmVuZGVyTWVudUxpc3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1Db3VudDogdG90YWxJdGVtQ291bnRfMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0NoZWNrbWFya3M6IGhhc0NoZWNrbWFya3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNJY29uczogaGFzSWNvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVudUl0ZW1SZW5kZXJlcjogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE1lbnVJdGVtUmVuZGVyZXIoaXRlbSwgY2xhc3NOYW1lcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxFbGVtZW50SWQ6IGxhYmVsRWxlbWVudElkLFxuICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAobWVudUxpc3RQcm9wcywgZGVmYXVsdFJlbmRlcikgeyByZXR1cm4gb25EZWZhdWx0UmVuZGVyTWVudUxpc3QobWVudUxpc3RQcm9wcywgY2xhc3NOYW1lcywgZGVmYXVsdFJlbmRlcik7IH0pLCBhZGp1c3RlZEZvY3VzWm9uZVByb3BzKVxuICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgc3VibWVudVByb3BzICYmIG9uUmVuZGVyU3ViTWVudShzdWJtZW51UHJvcHMsIG9uRGVmYXVsdFJlbmRlclN1Yk1lbnUpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNSZWN0cywgbnVsbCkpKTsgfSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxufSksIGZ1bmN0aW9uIChwcmV2UHJvcHMsIG5ld1Byb3BzKSB7XG4gICAgaWYgKCFuZXdQcm9wcy5zaG91bGRVcGRhdGVXaGVuSGlkZGVuICYmIHByZXZQcm9wcy5oaWRkZW4gJiYgbmV3UHJvcHMuaGlkZGVuKSB7XG4gICAgICAgIC8vIERvIG5vdCB1cGRhdGUgd2hlbiBoaWRkZW4uXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gc2hhbGxvd0NvbXBhcmUocHJldlByb3BzLCBuZXdQcm9wcyk7XG59KTtcbkNvbnRleHR1YWxNZW51QmFzZS5kaXNwbGF5TmFtZSA9ICdDb250ZXh0dWFsTWVudUJhc2UnO1xuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGtleSBmb3IgdGhlIGV2ZW50IGlzIGFsdCAoTWFjIG9wdGlvbikgb3IgbWV0YSAoTWFjIGNvbW1hbmQpLlxuICovXG5mdW5jdGlvbiBpc0FsdE9yTWV0YShldikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIHJldHVybiBldi53aGljaCA9PT0gS2V5Q29kZXMuYWx0IHx8IGV2LmtleSA9PT0gJ01ldGEnO1xufVxuZnVuY3Rpb24gb25JdGVtTW91c2VEb3duKGl0ZW0sIGV2KSB7XG4gICAgdmFyIF9hO1xuICAgIChfYSA9IGl0ZW0ub25Nb3VzZURvd24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGl0ZW0sIGl0ZW0sIGV2KTtcbn1cbmZ1bmN0aW9uIG9uRGVmYXVsdFJlbmRlclN1Yk1lbnUoc3ViTWVudVByb3BzLCBkZWZhdWx0UmVuZGVyKSB7XG4gICAgdGhyb3cgRXJyb3IoJ0NvbnRleHR1YWxNZW51QmFzZTogb25SZW5kZXJTdWJNZW51IGNhbGxiYWNrIGlzIG51bGwgb3IgdW5kZWZpbmVkLiAnICtcbiAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdG8gc2V0IGBvblJlbmRlclN1Yk1lbnVgIHByb3BlcnR5IGVpdGhlciBtYW51YWxseSBvciB3aXRoIGBzdHlsZWRgIGhlbHBlci4nKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaXRlbSB0aGF0IG1hdGNoZXMgYSBnaXZlbiBrZXkgaWYgYW55LlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgb2YgdGhlIGl0ZW0gdG8gbWF0Y2hcbiAqIEBwYXJhbSBpdGVtcyAtIFRoZSBpdGVtcyB0byBsb29rIGZvciB0aGUga2V5XG4gKi9cbmZ1bmN0aW9uIGZpbmRJdGVtQnlLZXlGcm9tSXRlbXMoa2V5LCBpdGVtcykge1xuICAgIGZvciAodmFyIF9pID0gMCwgaXRlbXNfMyA9IGl0ZW1zOyBfaSA8IGl0ZW1zXzMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBpdGVtID0gaXRlbXNfM1tfaV07XG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBDb250ZXh0dWFsTWVudUl0ZW1UeXBlLlNlY3Rpb24gJiYgaXRlbS5zZWN0aW9uUHJvcHMpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaCA9IGZpbmRJdGVtQnlLZXlGcm9tSXRlbXMoa2V5LCBpdGVtLnNlY3Rpb25Qcm9wcy5pdGVtcyk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5rZXkgJiYgaXRlbS5rZXkgPT09IGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBnZXRPbkNsaWNrV2l0aE92ZXJyaWRlVGFyZ2V0KG9uQ2xpY2ssIHRhcmdldCkge1xuICAgIHJldHVybiBvbkNsaWNrXG4gICAgICAgID8gZnVuY3Rpb24gKGV2LCBpdGVtKSB7XG4gICAgICAgICAgICBvdmVycmlkZVRhcmdldChldiwgdGFyZ2V0KTtcbiAgICAgICAgICAgIHJldHVybiBvbkNsaWNrKGV2LCBpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICA6IG9uQ2xpY2s7XG59XG5mdW5jdGlvbiBvdmVycmlkZVRhcmdldChldiwgdGFyZ2V0KSB7XG4gICAgaWYgKGV2ICYmIHRhcmdldCkge1xuICAgICAgICBldi5wZXJzaXN0KCk7XG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBFdmVudCkge1xuICAgICAgICAgICAgZXYudGFyZ2V0ID0gdGFyZ2V0LnRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICBldi50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0dWFsTWVudS5iYXNlLmpzLm1hcCIsImltcG9ydCB7IGdldEdsb2JhbENsYXNzTmFtZXMsIEZvbnRXZWlnaHRzIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG5pbXBvcnQgeyBDT05URVhUVUFMX01FTlVfSVRFTV9IRUlHSFQgfSBmcm9tICcuL0NvbnRleHR1YWxNZW51LmNuc3R5bGVzJztcbnZhciBHbG9iYWxDbGFzc05hbWVzID0ge1xuICAgIHJvb3Q6ICdtcy1Db250ZXh0dWFsTWVudScsXG4gICAgY29udGFpbmVyOiAnbXMtQ29udGV4dHVhbE1lbnUtY29udGFpbmVyJyxcbiAgICBsaXN0OiAnbXMtQ29udGV4dHVhbE1lbnUtbGlzdCcsXG4gICAgaGVhZGVyOiAnbXMtQ29udGV4dHVhbE1lbnUtaGVhZGVyJyxcbiAgICB0aXRsZTogJ21zLUNvbnRleHR1YWxNZW51LXRpdGxlJyxcbiAgICBpc29wZW46ICdpcy1vcGVuJyxcbn07XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHRoZW1lID0gcHJvcHMudGhlbWU7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRHbG9iYWxDbGFzc05hbWVzKEdsb2JhbENsYXNzTmFtZXMsIHRoZW1lKTtcbiAgICB2YXIgZm9udHMgPSB0aGVtZS5mb250cywgc2VtYW50aWNDb2xvcnMgPSB0aGVtZS5zZW1hbnRpY0NvbG9ycywgZWZmZWN0cyA9IHRoZW1lLmVmZmVjdHM7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5pc29wZW4sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzZW1hbnRpY0NvbG9ycy5tZW51QmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzE4MHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRhaW5lcjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5jb250YWluZXIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICc6Zm9jdXMnOiB7IG91dGxpbmU6IDAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgbGlzdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5saXN0LFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5pc29wZW4sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGhlYWRlcjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5oZWFkZXIsXG4gICAgICAgICAgICBmb250cy5zbWFsbCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5zZW1pYm9sZCxcbiAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMubWVudUhlYWRlcixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogQ09OVEVYVFVBTF9NRU5VX0lURU1fSEVJR0hULFxuICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6IENPTlRFWFRVQUxfTUVOVV9JVEVNX0hFSUdIVCxcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMHB4IDZweCcsXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGl0bGU6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMudGl0bGUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IGZvbnRzLm1lZGl1bVBsdXMuZm9udFNpemUsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAnMTRweCcsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6ICcxNHB4JyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nQm90dG9tOiAnNXB4JyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAnNXB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHNlbWFudGljQ29sb3JzLm1lbnVJdGVtQmFja2dyb3VuZFByZXNzZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzdWJDb21wb25lbnRTdHlsZXM6IHtcbiAgICAgICAgICAgIGNhbGxvdXQ6IHtcbiAgICAgICAgICAgICAgICByb290OiB7XG4gICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogZWZmZWN0cy5lbGV2YXRpb244LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudUl0ZW06IHt9LFxuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29udGV4dHVhbE1lbnUuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdHlsZWQsIGNvbXBvc2VSZW5kZXJGdW5jdGlvbiB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBDb250ZXh0dWFsTWVudUJhc2UgfSBmcm9tICcuL0NvbnRleHR1YWxNZW51LmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9Db250ZXh0dWFsTWVudS5zdHlsZXMnO1xuZnVuY3Rpb24gb25SZW5kZXJTdWJNZW51KHN1Yk1lbnVQcm9wcykge1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KExvY2FsQ29udGV4dHVhbE1lbnUsIF9fYXNzaWduKHt9LCBzdWJNZW51UHJvcHMpKTtcbn1cbi8vIFRoaXMgaXMgdG8gcHJldmVudCBjeWNsaWMgaW1wb3J0IHdpdGggQ29udGV4dHVhbE1lbnUuYmFzZS50c3guXG52YXIgTG9jYWxDb250ZXh0dWFsTWVudSA9IHN0eWxlZChDb250ZXh0dWFsTWVudUJhc2UsIGdldFN0eWxlcywgZnVuY3Rpb24gKHByb3BzKSB7IHJldHVybiAoe1xuICAgIG9uUmVuZGVyU3ViTWVudTogcHJvcHMub25SZW5kZXJTdWJNZW51XG4gICAgICAgID8gY29tcG9zZVJlbmRlckZ1bmN0aW9uKHByb3BzLm9uUmVuZGVyU3ViTWVudSwgb25SZW5kZXJTdWJNZW51KVxuICAgICAgICA6IG9uUmVuZGVyU3ViTWVudSxcbn0pOyB9LCB7IHNjb3BlOiAnQ29udGV4dHVhbE1lbnUnIH0pO1xuLyoqXG4gKiBDb250ZXh0dWFsTWVudSBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgdmFyIENvbnRleHR1YWxNZW51ID0gTG9jYWxDb250ZXh0dWFsTWVudTtcbkNvbnRleHR1YWxNZW51LmRpc3BsYXlOYW1lID0gJ0NvbnRleHR1YWxNZW51Jztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbnRleHR1YWxNZW51LmpzLm1hcCIsImltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBnZXRHbG9iYWxDbGFzc05hbWVzLCBtZXJnZVN0eWxlU2V0cyB9IGZyb20gJy4uLy4uL1N0eWxpbmcnO1xuZXhwb3J0IHZhciBCdXR0b25HbG9iYWxDbGFzc05hbWVzID0ge1xuICAgIG1zQnV0dG9uOiAnbXMtQnV0dG9uJyxcbiAgICBtc0J1dHRvbkhhc01lbnU6ICdtcy1CdXR0b24tLWhhc01lbnUnLFxuICAgIG1zQnV0dG9uSWNvbjogJ21zLUJ1dHRvbi1pY29uJyxcbiAgICBtc0J1dHRvbk1lbnVJY29uOiAnbXMtQnV0dG9uLW1lbnVJY29uJyxcbiAgICBtc0J1dHRvbkxhYmVsOiAnbXMtQnV0dG9uLWxhYmVsJyxcbiAgICBtc0J1dHRvbkRlc2NyaXB0aW9uOiAnbXMtQnV0dG9uLWRlc2NyaXB0aW9uJyxcbiAgICBtc0J1dHRvblNjcmVlblJlYWRlclRleHQ6ICdtcy1CdXR0b24tc2NyZWVuUmVhZGVyVGV4dCcsXG4gICAgbXNCdXR0b25GbGV4Q29udGFpbmVyOiAnbXMtQnV0dG9uLWZsZXhDb250YWluZXInLFxuICAgIG1zQnV0dG9uVGV4dENvbnRhaW5lcjogJ21zLUJ1dHRvbi10ZXh0Q29udGFpbmVyJyxcbn07XG5leHBvcnQgdmFyIGdldEJhc2VCdXR0b25DbGFzc05hbWVzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uICh0aGVtZSwgc3R5bGVzLCBjbGFzc05hbWUsIHZhcmlhbnRDbGFzc05hbWUsIGljb25DbGFzc05hbWUsIG1lbnVJY29uQ2xhc3NOYW1lLCBkaXNhYmxlZCwgaGFzTWVudSwgY2hlY2tlZCwgZXhwYW5kZWQsIGlzU3BsaXQpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0R2xvYmFsQ2xhc3NOYW1lcyhCdXR0b25HbG9iYWxDbGFzc05hbWVzLCB0aGVtZSB8fCB7fSk7XG4gICAgdmFyIGlzRXhwYW5kZWQgPSBleHBhbmRlZCAmJiAhaXNTcGxpdDtcbiAgICByZXR1cm4gbWVyZ2VTdHlsZVNldHMoe1xuICAgICAgICByb290OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLm1zQnV0dG9uLFxuICAgICAgICAgICAgc3R5bGVzLnJvb3QsXG4gICAgICAgICAgICB2YXJpYW50Q2xhc3NOYW1lLFxuICAgICAgICAgICAgY2hlY2tlZCAmJiBbJ2lzLWNoZWNrZWQnLCBzdHlsZXMucm9vdENoZWNrZWRdLFxuICAgICAgICAgICAgaXNFeHBhbmRlZCAmJiBbXG4gICAgICAgICAgICAgICAgJ2lzLWV4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICBzdHlsZXMucm9vdEV4cGFuZGVkLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hW1wiOmhvdmVyIC5cIi5jb25jYXQoY2xhc3NOYW1lcy5tc0J1dHRvbkljb24pXSA9IHN0eWxlcy5pY29uRXhwYW5kZWRIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVudUljb24gZmFsbHMgYmFjayB0byByb290RXhwYW5kZWRIb3ZlcmVkIHRvIHN1cHBvcnQgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hW1wiOmhvdmVyIC5cIi5jb25jYXQoY2xhc3NOYW1lcy5tc0J1dHRvbk1lbnVJY29uKV0gPSBzdHlsZXMubWVudUljb25FeHBhbmRlZEhvdmVyZWQgfHwgc3R5bGVzLnJvb3RFeHBhbmRlZEhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfYVsnOmhvdmVyJ10gPSBzdHlsZXMucm9vdEV4cGFuZGVkSG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGhhc01lbnUgJiYgW0J1dHRvbkdsb2JhbENsYXNzTmFtZXMubXNCdXR0b25IYXNNZW51LCBzdHlsZXMucm9vdEhhc01lbnVdLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgWydpcy1kaXNhYmxlZCcsIHN0eWxlcy5yb290RGlzYWJsZWRdLFxuICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgIWlzRXhwYW5kZWQgJiZcbiAgICAgICAgICAgICAgICAhY2hlY2tlZCAmJiB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2IgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzogc3R5bGVzLnJvb3RIb3ZlcmVkXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9iW1wiOmhvdmVyIC5cIi5jb25jYXQoY2xhc3NOYW1lcy5tc0J1dHRvbkxhYmVsKV0gPSBzdHlsZXMubGFiZWxIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICBfYltcIjpob3ZlciAuXCIuY29uY2F0KGNsYXNzTmFtZXMubXNCdXR0b25JY29uKV0gPSBzdHlsZXMuaWNvbkhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgIF9iW1wiOmhvdmVyIC5cIi5jb25jYXQoY2xhc3NOYW1lcy5tc0J1dHRvbkRlc2NyaXB0aW9uKV0gPSBzdHlsZXMuZGVzY3JpcHRpb25Ib3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICBfYltcIjpob3ZlciAuXCIuY29uY2F0KGNsYXNzTmFtZXMubXNCdXR0b25NZW51SWNvbildID0gc3R5bGVzLm1lbnVJY29uSG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgX2JbJzpmb2N1cyddID0gc3R5bGVzLnJvb3RGb2N1c2VkLFxuICAgICAgICAgICAgICAgICAgICBfYlsnOmFjdGl2ZSddID0gc3R5bGVzLnJvb3RQcmVzc2VkLFxuICAgICAgICAgICAgICAgICAgICBfYltcIjphY3RpdmUgLlwiLmNvbmNhdChjbGFzc05hbWVzLm1zQnV0dG9uSWNvbildID0gc3R5bGVzLmljb25QcmVzc2VkLFxuICAgICAgICAgICAgICAgICAgICBfYltcIjphY3RpdmUgLlwiLmNvbmNhdChjbGFzc05hbWVzLm1zQnV0dG9uRGVzY3JpcHRpb24pXSA9IHN0eWxlcy5kZXNjcmlwdGlvblByZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgIF9iW1wiOmFjdGl2ZSAuXCIuY29uY2F0KGNsYXNzTmFtZXMubXNCdXR0b25NZW51SWNvbildID0gc3R5bGVzLm1lbnVJY29uUHJlc3NlZCxcbiAgICAgICAgICAgICAgICAgICAgX2IpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIGNoZWNrZWQgJiYgW3N0eWxlcy5yb290Q2hlY2tlZERpc2FibGVkXSxcbiAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgIGNoZWNrZWQgJiYge1xuICAgICAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzogc3R5bGVzLnJvb3RDaGVja2VkSG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgJzphY3RpdmUnOiBzdHlsZXMucm9vdENoZWNrZWRQcmVzc2VkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgICAgICBmbGV4Q29udGFpbmVyOiBbY2xhc3NOYW1lcy5tc0J1dHRvbkZsZXhDb250YWluZXIsIHN0eWxlcy5mbGV4Q29udGFpbmVyXSxcbiAgICAgICAgdGV4dENvbnRhaW5lcjogW2NsYXNzTmFtZXMubXNCdXR0b25UZXh0Q29udGFpbmVyLCBzdHlsZXMudGV4dENvbnRhaW5lcl0sXG4gICAgICAgIGljb246IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMubXNCdXR0b25JY29uLFxuICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSxcbiAgICAgICAgICAgIHN0eWxlcy5pY29uLFxuICAgICAgICAgICAgaXNFeHBhbmRlZCAmJiBzdHlsZXMuaWNvbkV4cGFuZGVkLFxuICAgICAgICAgICAgY2hlY2tlZCAmJiBzdHlsZXMuaWNvbkNoZWNrZWQsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBzdHlsZXMuaWNvbkRpc2FibGVkLFxuICAgICAgICBdLFxuICAgICAgICBsYWJlbDogW2NsYXNzTmFtZXMubXNCdXR0b25MYWJlbCwgc3R5bGVzLmxhYmVsLCBjaGVja2VkICYmIHN0eWxlcy5sYWJlbENoZWNrZWQsIGRpc2FibGVkICYmIHN0eWxlcy5sYWJlbERpc2FibGVkXSxcbiAgICAgICAgbWVudUljb246IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMubXNCdXR0b25NZW51SWNvbixcbiAgICAgICAgICAgIG1lbnVJY29uQ2xhc3NOYW1lLFxuICAgICAgICAgICAgc3R5bGVzLm1lbnVJY29uLFxuICAgICAgICAgICAgY2hlY2tlZCAmJiBzdHlsZXMubWVudUljb25DaGVja2VkLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgIWlzU3BsaXQgJiYgc3R5bGVzLm1lbnVJY29uRGlzYWJsZWQsXG4gICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAhaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICAgICFjaGVja2VkICYmIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJzpob3Zlcic6IHN0eWxlcy5tZW51SWNvbkhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICc6YWN0aXZlJzogc3R5bGVzLm1lbnVJY29uUHJlc3NlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzRXhwYW5kZWQgJiYgWydpcy1leHBhbmRlZCcsIHN0eWxlcy5tZW51SWNvbkV4cGFuZGVkXSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMubXNCdXR0b25EZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN0eWxlcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNoZWNrZWQgJiYgc3R5bGVzLmRlc2NyaXB0aW9uQ2hlY2tlZCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIHN0eWxlcy5kZXNjcmlwdGlvbkRpc2FibGVkLFxuICAgICAgICBdLFxuICAgICAgICBzY3JlZW5SZWFkZXJUZXh0OiBbY2xhc3NOYW1lcy5tc0J1dHRvblNjcmVlblJlYWRlclRleHQsIHN0eWxlcy5zY3JlZW5SZWFkZXJUZXh0XSxcbiAgICB9KTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QmFzZUJ1dHRvbi5jbGFzc05hbWVzLmpzLm1hcCIsImltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBtZXJnZVN0eWxlcyB9IGZyb20gJy4uLy4uLy4uL1N0eWxpbmcnO1xuZXhwb3J0IHZhciBnZXRTcGxpdEJ1dHRvbkNsYXNzTmFtZXMgPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKHN0eWxlcywgZGlzYWJsZWQsIGV4cGFuZGVkLCBjaGVja2VkLCBwcmltYXJ5RGlzYWJsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICByb290OiBtZXJnZVN0eWxlcyhzdHlsZXMuc3BsaXRCdXR0b25NZW51QnV0dG9uLCBleHBhbmRlZCAmJiBbc3R5bGVzLnNwbGl0QnV0dG9uTWVudUJ1dHRvbkV4cGFuZGVkXSwgZGlzYWJsZWQgJiYgW3N0eWxlcy5zcGxpdEJ1dHRvbk1lbnVCdXR0b25EaXNhYmxlZF0sIGNoZWNrZWQgJiYgIWRpc2FibGVkICYmIFtzdHlsZXMuc3BsaXRCdXR0b25NZW51QnV0dG9uQ2hlY2tlZF0sIHByaW1hcnlEaXNhYmxlZCAmJlxuICAgICAgICAgICAgIWRpc2FibGVkICYmIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJzpmb2N1cyc6IHN0eWxlcy5zcGxpdEJ1dHRvbk1lbnVGb2N1c2VkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXI6IG1lcmdlU3R5bGVzKHN0eWxlcy5zcGxpdEJ1dHRvbkNvbnRhaW5lciwgIWRpc2FibGVkICYmXG4gICAgICAgICAgICBjaGVja2VkICYmIFtcbiAgICAgICAgICAgIHN0eWxlcy5zcGxpdEJ1dHRvbkNvbnRhaW5lckNoZWNrZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICc6aG92ZXInOiBzdHlsZXMuc3BsaXRCdXR0b25Db250YWluZXJDaGVja2VkSG92ZXJlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSwgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAhY2hlY2tlZCAmJiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICc6aG92ZXInOiBzdHlsZXMuc3BsaXRCdXR0b25Db250YWluZXJIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICAnOmZvY3VzJzogc3R5bGVzLnNwbGl0QnV0dG9uQ29udGFpbmVyRm9jdXNlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSwgZGlzYWJsZWQgJiYgc3R5bGVzLnNwbGl0QnV0dG9uQ29udGFpbmVyRGlzYWJsZWQpLFxuICAgICAgICBpY29uOiBtZXJnZVN0eWxlcyhzdHlsZXMuc3BsaXRCdXR0b25NZW51SWNvbiwgZGlzYWJsZWQgJiYgc3R5bGVzLnNwbGl0QnV0dG9uTWVudUljb25EaXNhYmxlZCwgIWRpc2FibGVkICYmIHByaW1hcnlEaXNhYmxlZCAmJiBzdHlsZXMuc3BsaXRCdXR0b25NZW51SWNvbiksXG4gICAgICAgIGZsZXhDb250YWluZXI6IG1lcmdlU3R5bGVzKHN0eWxlcy5zcGxpdEJ1dHRvbkZsZXhDb250YWluZXIpLFxuICAgICAgICBkaXZpZGVyOiBtZXJnZVN0eWxlcyhzdHlsZXMuc3BsaXRCdXR0b25EaXZpZGVyLCAocHJpbWFyeURpc2FibGVkIHx8IGRpc2FibGVkKSAmJiBzdHlsZXMuc3BsaXRCdXR0b25EaXZpZGVyRGlzYWJsZWQpLFxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwbGl0QnV0dG9uLmNsYXNzTmFtZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fZXh0ZW5kcywgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhbmNob3JQcm9wZXJ0aWVzLCBhc3NpZ24sIGJ1dHRvblByb3BlcnRpZXMsIGNyZWF0ZU1lcmdlZFJlZiwgY3NzLCBnZXRJZCwgZ2V0TmF0aXZlUHJvcHMsIGluaXRpYWxpemVDb21wb25lbnRSZWYsIG1lbW9pemVGdW5jdGlvbiwgbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzLCBudWxsUmVuZGVyLCBwb3J0YWxDb250YWluc0VsZW1lbnQsIHNldEZvY3VzVmlzaWJpbGl0eSwgd2FybkNvbmRpdGlvbmFsbHlSZXF1aXJlZFByb3BzLCB3YXJuRGVwcmVjYXRpb25zLCBBc3luYywgRXZlbnRHcm91cCwgRm9jdXNSZWN0cywgRm9jdXNSZWN0c0NvbnRleHQsIEtleUNvZGVzLCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBJY29uLCBGb250SWNvbiwgSW1hZ2VJY29uIH0gZnJvbSAnLi4vLi4vSWNvbic7XG5pbXBvcnQgeyBEaXJlY3Rpb25hbEhpbnQgfSBmcm9tICcuLi8uLi9jb21tb24vRGlyZWN0aW9uYWxIaW50JztcbmltcG9ydCB7IENvbnRleHR1YWxNZW51IH0gZnJvbSAnLi4vLi4vQ29udGV4dHVhbE1lbnUnO1xuaW1wb3J0IHsgZ2V0QmFzZUJ1dHRvbkNsYXNzTmFtZXMgfSBmcm9tICcuL0Jhc2VCdXR0b24uY2xhc3NOYW1lcyc7XG5pbXBvcnQgeyBnZXRTcGxpdEJ1dHRvbkNsYXNzTmFtZXMgYXMgZ2V0QmFzZVNwbGl0QnV0dG9uQ2xhc3NOYW1lcyB9IGZyb20gJy4vU3BsaXRCdXR0b24vU3BsaXRCdXR0b24uY2xhc3NOYW1lcyc7XG5pbXBvcnQgeyBLZXl0aXBEYXRhIH0gZnJvbSAnLi4vLi4vS2V5dGlwRGF0YSc7XG5pbXBvcnQgeyBjb21wb3NlQ29tcG9uZW50QXMgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xudmFyIFRvdWNoSWRsZURlbGF5ID0gNTAwOyAvKiBtcyAqL1xudmFyIENPTVBPTkVOVF9OQU1FID0gJ0Jhc2VCdXR0b24nO1xuLyoqXG4gKiB7QGRvY0NhdGVnb3J5IEJ1dHRvbn1cbiAqL1xudmFyIEJhc2VCdXR0b24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEJhc2VCdXR0b24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQmFzZUJ1dHRvbihwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuX2J1dHRvbkVsZW1lbnQgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgX3RoaXMuX3NwbGl0QnV0dG9uQ29udGFpbmVyID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgICAgIF90aGlzLl9tZXJnZWRSZWYgPSBjcmVhdGVNZXJnZWRSZWYoKTtcbiAgICAgICAgX3RoaXMuX3JlbmRlcmVkVmlzaWJsZU1lbnUgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuX2dldE1lbW9pemVkTWVudUJ1dHRvbktleXRpcFByb3BzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uIChrZXl0aXBQcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBrZXl0aXBQcm9wcyksIHsgaGFzTWVudTogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIF90aGlzLl9vblJlbmRlckljb24gPSBmdW5jdGlvbiAoYnV0dG9uUHJvcHMsIGRlZmF1bHRSZW5kZXIpIHtcbiAgICAgICAgICAgIHZhciBpY29uUHJvcHMgPSBfdGhpcy5wcm9wcy5pY29uUHJvcHM7XG4gICAgICAgICAgICBpZiAoaWNvblByb3BzICYmIChpY29uUHJvcHMuaWNvbk5hbWUgIT09IHVuZGVmaW5lZCB8fCBpY29uUHJvcHMuaW1hZ2VQcm9wcykpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xhc3NOYW1lID0gaWNvblByb3BzLmNsYXNzTmFtZSwgaW1hZ2VQcm9wcyA9IGljb25Qcm9wcy5pbWFnZVByb3BzLCByZXN0ID0gX19yZXN0KGljb25Qcm9wcywgW1wiY2xhc3NOYW1lXCIsIFwiaW1hZ2VQcm9wc1wiXSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0eWxlcyBwcm9wIGlzIHNwZWNpZmllZCBhcyBwYXJ0IG9mIGljb25Qcm9wcywgZmFsbCBiYWNrIHRvIHJlZ3VsYXIgSWNvbiBhcyBGb250SWNvbiBhbmQgSW1hZ2VJY29uXG4gICAgICAgICAgICAgICAgLy8gZG8gbm90IGhhdmUgdGhpcyBwcm9wLlxuICAgICAgICAgICAgICAgIGlmIChpY29uUHJvcHMuc3R5bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEljb24sIF9fYXNzaWduKHsgY2xhc3NOYW1lOiBjc3MoX3RoaXMuX2NsYXNzTmFtZXMuaWNvbiwgY2xhc3NOYW1lKSwgaW1hZ2VQcm9wczogaW1hZ2VQcm9wcyB9LCByZXN0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpY29uUHJvcHMuaWNvbk5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9udEljb24sIF9fYXNzaWduKHsgY2xhc3NOYW1lOiBjc3MoX3RoaXMuX2NsYXNzTmFtZXMuaWNvbiwgY2xhc3NOYW1lKSB9LCByZXN0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpbWFnZVByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlSWNvbiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IGNzcyhfdGhpcy5fY2xhc3NOYW1lcy5pY29uLCBjbGFzc05hbWUpLCBpbWFnZVByb3BzOiBpbWFnZVByb3BzIH0sIHJlc3QpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmVuZGVyVGV4dENvbnRlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucHJvcHMsIHRleHQgPSBfYS50ZXh0LCBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgX2IgPSBfYS5zZWNvbmRhcnlUZXh0LCBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dCA9IF9iID09PSB2b2lkIDAgPyBfdGhpcy5wcm9wcy5kZXNjcmlwdGlvbiA6IF9iLCBfYyA9IF9hLm9uUmVuZGVyVGV4dCwgb25SZW5kZXJUZXh0ID0gX2MgPT09IHZvaWQgMCA/IF90aGlzLl9vblJlbmRlclRleHQgOiBfYywgX2QgPSBfYS5vblJlbmRlckRlc2NyaXB0aW9uLCBvblJlbmRlckRlc2NyaXB0aW9uID0gX2QgPT09IHZvaWQgMCA/IF90aGlzLl9vblJlbmRlckRlc2NyaXB0aW9uIDogX2Q7XG4gICAgICAgICAgICBpZiAodGV4dCB8fCB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnIHx8IHNlY29uZGFyeVRleHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBfdGhpcy5fY2xhc3NOYW1lcy50ZXh0Q29udGFpbmVyIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uUmVuZGVyVGV4dChfdGhpcy5wcm9wcywgX3RoaXMuX29uUmVuZGVyVGV4dCksXG4gICAgICAgICAgICAgICAgICAgIG9uUmVuZGVyRGVzY3JpcHRpb24oX3RoaXMucHJvcHMsIF90aGlzLl9vblJlbmRlckRlc2NyaXB0aW9uKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtvblJlbmRlclRleHQoX3RoaXMucHJvcHMsIF90aGlzLl9vblJlbmRlclRleHQpLCBvblJlbmRlckRlc2NyaXB0aW9uKF90aGlzLnByb3BzLCBfdGhpcy5fb25SZW5kZXJEZXNjcmlwdGlvbildO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25SZW5kZXJUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRleHQgPSBfdGhpcy5wcm9wcy50ZXh0O1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gX3RoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdCwgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHRha2UgaW4gdGhlIHRleHQgY29udGVudCBmcm9tIGNoaWxkcmVuLlxuICAgICAgICAgICAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IGNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF90aGlzLl9oYXNUZXh0KCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsga2V5OiBfdGhpcy5fbGFiZWxJZCwgY2xhc3NOYW1lOiBfdGhpcy5fY2xhc3NOYW1lcy5sYWJlbCwgaWQ6IF90aGlzLl9sYWJlbElkIH0sIHRleHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25SZW5kZXJDaGlsZHJlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IF90aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICAgICAgLy8gSWYgY2hpbGRyZW4gaXMganVzdCBhIHN0cmluZywgZWl0aGVyIGl0IG9yIHRoZSB0ZXh0IHdpbGwgYmUgcmVuZGVyZWQgdmlhIG9uUmVuZGVyTGFiZWxcbiAgICAgICAgICAgIC8vIElmIGNoaWxkcmVuIGlzIGFub3RoZXIgY29tcG9uZW50LCBpdCB3aWxsIGJlIHJlbmRlcmVkIGFmdGVyIHRleHRcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vblJlbmRlckRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHZhciBfYSA9IHByb3BzLnNlY29uZGFyeVRleHQsIHNlY29uZGFyeVRleHQgPSBfYSA9PT0gdm9pZCAwID8gX3RoaXMucHJvcHMuZGVzY3JpcHRpb24gOiBfYTtcbiAgICAgICAgICAgIC8vIG1zLUJ1dHRvbi1kZXNjcmlwdGlvbiBpcyBvbmx5IHNob3duIHdoZW4gdGhlIGJ1dHRvbiB0eXBlIGlzIGNvbXBvdW5kLlxuICAgICAgICAgICAgLy8gSW4gb3RoZXIgY2FzZXMgaXQgd2lsbCBub3QgYmUgZGlzcGxheWVkLlxuICAgICAgICAgICAgcmV0dXJuIHNlY29uZGFyeVRleHQgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBrZXk6IF90aGlzLl9kZXNjcmlwdGlvbklkLCBjbGFzc05hbWU6IF90aGlzLl9jbGFzc05hbWVzLmRlc2NyaXB0aW9uLCBpZDogX3RoaXMuX2Rlc2NyaXB0aW9uSWQgfSwgc2Vjb25kYXJ5VGV4dCkpIDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmVuZGVyQXJpYURlc2NyaXB0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGFyaWFEZXNjcmlwdGlvbiA9IF90aGlzLnByb3BzLmFyaWFEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIC8vIElmIGFyaWFEZXNjcmlwdGlvbiBpcyBnaXZlbiwgZGVzY3JpcHRpb25JZCB3aWxsIGJlIGFzc2lnbmVkIHRvIGFyaWFEZXNjcmlwdGlvblNwYW4sXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBiZSBhc3NpZ25lZCB0byBkZXNjcmlwdGlvblNwYW4uXG4gICAgICAgICAgICByZXR1cm4gYXJpYURlc2NyaXB0aW9uID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBfdGhpcy5fY2xhc3NOYW1lcy5zY3JlZW5SZWFkZXJUZXh0LCBpZDogX3RoaXMuX2FyaWFEZXNjcmlwdGlvbklkIH0sIGFyaWFEZXNjcmlwdGlvbikpIDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmVuZGVyTWVudUljb24gPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciBtZW51SWNvblByb3BzID0gX3RoaXMucHJvcHMubWVudUljb25Qcm9wcztcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEZvbnRJY29uLCBfX2Fzc2lnbih7IGljb25OYW1lOiBcIkNoZXZyb25Eb3duXCIgfSwgbWVudUljb25Qcm9wcywgeyBjbGFzc05hbWU6IF90aGlzLl9jbGFzc05hbWVzLm1lbnVJY29uIH0pKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmVuZGVyTWVudSA9IGZ1bmN0aW9uIChtZW51UHJvcHMpIHtcbiAgICAgICAgICAgIHZhciBNZW51VHlwZSA9IF90aGlzLnByb3BzLm1lbnVBcyA/IGNvbXBvc2VDb21wb25lbnRBcyhfdGhpcy5wcm9wcy5tZW51QXMsIENvbnRleHR1YWxNZW51KSA6IENvbnRleHR1YWxNZW51O1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTWVudVR5cGUsIF9fYXNzaWduKHt9LCBtZW51UHJvcHMpKTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uRGlzbWlzc01lbnUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBtZW51UHJvcHMgPSBfdGhpcy5wcm9wcy5tZW51UHJvcHM7XG4gICAgICAgICAgICBpZiAobWVudVByb3BzICYmIG1lbnVQcm9wcy5vbkRpc21pc3MpIHtcbiAgICAgICAgICAgICAgICBtZW51UHJvcHMub25EaXNtaXNzKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghZXYgfHwgIWV2LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fZGlzbWlzc01lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX2Rpc21pc3NNZW51ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuX21lbnVTaG91bGRGb2N1c09uTW91bnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBfdGhpcy5fbWVudVNob3VsZEZvY3VzT25Db250YWluZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IG1lbnVIaWRkZW46IHRydWUgfSk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vcGVuTWVudSA9IGZ1bmN0aW9uIChzaG91bGRGb2N1c09uQ29udGFpbmVyLCBzaG91bGRGb2N1c09uTW91bnQpIHtcbiAgICAgICAgICAgIGlmIChzaG91bGRGb2N1c09uTW91bnQgPT09IHZvaWQgMCkgeyBzaG91bGRGb2N1c09uTW91bnQgPSB0cnVlOyB9XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMubWVudVByb3BzKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX21lbnVTaG91bGRGb2N1c09uQ29udGFpbmVyID0gc2hvdWxkRm9jdXNPbkNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICBfdGhpcy5fbWVudVNob3VsZEZvY3VzT25Nb3VudCA9IHNob3VsZEZvY3VzT25Nb3VudDtcbiAgICAgICAgICAgICAgICBfdGhpcy5fcmVuZGVyZWRWaXNpYmxlTWVudSA9IHRydWU7XG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBtZW51SGlkZGVuOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uVG9nZ2xlTWVudSA9IGZ1bmN0aW9uIChzaG91bGRGb2N1c09uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICB2YXIgc2hvdWxkRm9jdXNPbk1vdW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChfdGhpcy5wcm9wcy5tZW51UHJvcHMgJiYgX3RoaXMucHJvcHMubWVudVByb3BzLnNob3VsZEZvY3VzT25Nb3VudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBzaG91bGRGb2N1c09uTW91bnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLnN0YXRlLm1lbnVIaWRkZW4gPyBfdGhpcy5fb3Blbk1lbnUoc2hvdWxkRm9jdXNPbkNvbnRhaW5lciwgc2hvdWxkRm9jdXNPbk1vdW50KSA6IF90aGlzLl9kaXNtaXNzTWVudSgpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25TcGxpdENvbnRhaW5lckZvY3VzQ2FwdHVyZSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IF90aGlzLl9zcGxpdEJ1dHRvbkNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBpcyBjb21pbmcgZnJvbSB0aGUgcG9ydGFsIHdlIGRvIG5vdCBuZWVkIHRvIHNldCBmb2N1cyBvbiB0aGUgY29udGFpbmVyLlxuICAgICAgICAgICAgaWYgKCFjb250YWluZXIgfHwgKGV2LnRhcmdldCAmJiBwb3J0YWxDb250YWluc0VsZW1lbnQoZXYudGFyZ2V0LCBjb250YWluZXIpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBhYmxlIHRvIGZvY3VzIHRoZSBpbmRpdmlkdWFsIGJ1dHRvbnMgaW4gYSBzcGxpdCBidXR0b24uIEZvY3VzXG4gICAgICAgICAgICAvLyBzaG91bGQgYWx3YXlzIHJlbWFpbiBvbiB0aGUgY29udGFpbmVyLlxuICAgICAgICAgICAgY29udGFpbmVyLmZvY3VzKCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vblNwbGl0QnV0dG9uUHJpbWFyeUNsaWNrID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoIV90aGlzLnN0YXRlLm1lbnVIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fZGlzbWlzc01lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRvZ2dsZSBzcGxpdCBidXR0b25zIG5lZWQgdHdvIHNlcGFyYXRlIHRhcmdldHMsIGV2ZW4gZm9yIHRvdWNoXG4gICAgICAgICAgICB2YXIgc2luZ2xlVG91Y2hUYXJnZXQgPSBfdGhpcy5fcHJvY2Vzc2luZ1RvdWNoICYmICFfdGhpcy5wcm9wcy50b2dnbGU7XG4gICAgICAgICAgICBpZiAoIXNpbmdsZVRvdWNoVGFyZ2V0ICYmIF90aGlzLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNsaWNrKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNpbmdsZVRvdWNoVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX29uTWVudUNsaWNrKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uS2V5RG93biA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgLy8gZXhwbGljaXR5IGNhbmNlbGxpbmcgZXZlbnQgc28gY2xpY2sgd29uJ3QgZmlyZSBhZnRlciB0aGlzXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIGlmIChfdGhpcy5wcm9wcy5kaXNhYmxlZCAmJiAoZXYud2hpY2ggPT09IEtleUNvZGVzLmVudGVyIHx8IGV2LndoaWNoID09PSBLZXlDb2Rlcy5zcGFjZSkpIHtcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIV90aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLnByb3BzLm1lbnVQcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fb25NZW51S2V5RG93bihldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF90aGlzLnByb3BzLm9uS2V5RG93biAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uS2V5RG93bihldik7IC8vIG5vdCBjYW5jZWxsaW5nIGV2ZW50IGJlY2F1c2UgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbktleVVwID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoIV90aGlzLnByb3BzLmRpc2FibGVkICYmIF90aGlzLnByb3BzLm9uS2V5VXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uS2V5VXAoZXYpOyAvLyBub3QgY2FuY2VsbGluZyBldmVudCBiZWNhdXNlIGl0J3Mgbm90IGRpc2FibGVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbktleVByZXNzID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIGlmICghX3RoaXMucHJvcHMuZGlzYWJsZWQgJiYgX3RoaXMucHJvcHMub25LZXlQcmVzcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25LZXlQcmVzcyhldik7IC8vIG5vdCBjYW5jZWxsaW5nIGV2ZW50IGJlY2F1c2UgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uTW91c2VVcCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKCFfdGhpcy5wcm9wcy5kaXNhYmxlZCAmJiBfdGhpcy5wcm9wcy5vbk1vdXNlVXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uTW91c2VVcChldik7IC8vIG5vdCBjYW5jZWxsaW5nIGV2ZW50IGJlY2F1c2UgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uTW91c2VEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICBpZiAoIV90aGlzLnByb3BzLmRpc2FibGVkICYmIF90aGlzLnByb3BzLm9uTW91c2VEb3duICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbk1vdXNlRG93bihldik7IC8vIG5vdCBjYW5jZWxsaW5nIGV2ZW50IGJlY2F1c2UgaXQncyBub3QgZGlzYWJsZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uQ2xpY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIGlmICghX3RoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMubWVudVByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9vbk1lbnVDbGljayhldik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF90aGlzLnByb3BzLm9uQ2xpY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNsaWNrKGV2KTsgLy8gbm90IGNhbmNlbGxpbmcgZXZlbnQgYmVjYXVzZSBpdCdzIG5vdCBkaXNhYmxlZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uU3BsaXRCdXR0b25Db250YWluZXJLZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIGlmIChldi53aGljaCA9PT0gS2V5Q29kZXMuZW50ZXIgfHwgZXYud2hpY2ggPT09IEtleUNvZGVzLnNwYWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLl9idXR0b25FbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2J1dHRvbkVsZW1lbnQuY3VycmVudC5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fb25NZW51S2V5RG93bihldik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbk1lbnVLZXlEb3duID0gZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMub25LZXlEb3duKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25LZXlEb3duKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgdmFyIGlzVXAgPSBldi53aGljaCA9PT0gS2V5Q29kZXMudXA7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIHZhciBpc0Rvd24gPSBldi53aGljaCA9PT0gS2V5Q29kZXMuZG93bjtcbiAgICAgICAgICAgIGlmICghZXYuZGVmYXVsdFByZXZlbnRlZCAmJiBfdGhpcy5faXNWYWxpZE1lbnVPcGVuS2V5KGV2KSkge1xuICAgICAgICAgICAgICAgIHZhciBvbk1lbnVDbGljayA9IF90aGlzLnByb3BzLm9uTWVudUNsaWNrO1xuICAgICAgICAgICAgICAgIGlmIChvbk1lbnVDbGljaykge1xuICAgICAgICAgICAgICAgICAgICBvbk1lbnVDbGljayhldiwgX3RoaXMucHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy5fb25Ub2dnbGVNZW51KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBpZiAoZXYud2hpY2ggPT09IEtleUNvZGVzLmVudGVyIHx8IGV2LndoaWNoID09PSBLZXlDb2Rlcy5zcGFjZSkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hbnVhbGx5IHNldCB0aGUgZm9jdXMgdmlzaWJpbGl0eSB0byB0cnVlIGlmIG9wZW5pbmcgdmlhIEVudGVyIG9yIFNwYWNlIHRvIGFjY291bnQgZm9yIHRoZSBzY2VuYXJpbyB3aGVyZVxuICAgICAgICAgICAgICAgIC8vIGEgdXNlciBjbGlja3Mgb24gdGhlIGJ1dHRvbiwgY2xvc2VzIHRoZSBtZW51IGFuZCB0aGVuIG9wZW5zIGl0IHZpYSBrZXlib2FyZC4gSW4gdGhpcyBzY2VuYXJpbyBvdXIgZGVmYXVsdCBsb2dpY1xuICAgICAgICAgICAgICAgIC8vIGZvciBzZXR0aW5nIGZvY3VzIHZpc2liaWxpdHkgaXMgbm90IHRyaWdnZXJlZCBzaW5jZSB0aGVyZSBpcyBubyBrZXlib2FyZCBuYXZpZ2F0aW9uIHByZXNlbnQgYmVmb3JlaGFuZC5cbiAgICAgICAgICAgICAgICBzZXRGb2N1c1Zpc2liaWxpdHkodHJ1ZSwgZXYudGFyZ2V0LCAoX2EgPSBfdGhpcy5jb250ZXh0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVnaXN0ZXJlZFByb3ZpZGVycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShldi5hbHRLZXkgfHwgZXYubWV0YUtleSkgJiYgKGlzVXAgfHwgaXNEb3duKSkge1xuICAgICAgICAgICAgICAgIC8vIFN1cHBvc2UgYSBtZW51LCB3aXRoIHNob3VsZEZvY3VzT25Nb3VudDogZmFsc2UsIGlzIG9wZW4sIGFuZCB1c2VyIHdhbnRzIHRvIGtleWJvYXJkIHRvIHRoZSBtZW51IGl0ZW1zXG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZS1yZW5kZXIgdGhlIG1lbnUgd2l0aCBzaG91bGRGb2N1c09uTW91bnQgYXMgdHJ1ZS5cbiAgICAgICAgICAgICAgICBpZiAoIV90aGlzLnN0YXRlLm1lbnVIaWRkZW4gJiYgX3RoaXMucHJvcHMubWVudVByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50U2hvdWxkRm9jdXNPbk1vdW50ID0gX3RoaXMuX21lbnVTaG91bGRGb2N1c09uTW91bnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfdGhpcy5fbWVudVNob3VsZEZvY3VzT25Nb3VudFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdGhpcy5wcm9wcy5tZW51UHJvcHMuc2hvdWxkRm9jdXNPbk1vdW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRTaG91bGRGb2N1c09uTW91bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLl9tZW51U2hvdWxkRm9jdXNPbk1vdW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vblRvdWNoU3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuX2lzU3BsaXRCdXR0b24gJiZcbiAgICAgICAgICAgICAgICBfdGhpcy5fc3BsaXRCdXR0b25Db250YWluZXIuY3VycmVudCAmJlxuICAgICAgICAgICAgICAgICEoJ29ucG9pbnRlcmRvd24nIGluIF90aGlzLl9zcGxpdEJ1dHRvbkNvbnRhaW5lci5jdXJyZW50KSkge1xuICAgICAgICAgICAgICAgIF90aGlzLl9oYW5kbGVUb3VjaEFuZFBvaW50ZXJFdmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25NZW51Q2xpY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLCBvbk1lbnVDbGljayA9IF9hLm9uTWVudUNsaWNrLCBtZW51UHJvcHMgPSBfYS5tZW51UHJvcHM7XG4gICAgICAgICAgICBpZiAob25NZW51Q2xpY2spIHtcbiAgICAgICAgICAgICAgICBvbk1lbnVDbGljayhldiwgX3RoaXMucHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZm9jdXMgb24gdGhlIGNvbnRhaW5lciBieSBkZWZhdWx0IHdoZW4gdGhlIG1lbnUgaXMgb3BlbmVkIHdpdGggYSBjbGljayBldmVudFxuICAgICAgICAgICAgLy8gdGhpcyBkaWZmZXJlbnRpYXRlcyBmcm9tIGEga2V5Ym9hcmQgaW50ZXJhY3Rpb24gdHJpZ2dlcmluZyB0aGUgY2xpY2sgZXZlbnRcbiAgICAgICAgICAgIHZhciBzaG91bGRGb2N1c09uQ29udGFpbmVyID0gdHlwZW9mIChtZW51UHJvcHMgPT09IG51bGwgfHwgbWVudVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtZW51UHJvcHMuc2hvdWxkRm9jdXNPbkNvbnRhaW5lcikgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgICAgID8gbWVudVByb3BzLnNob3VsZEZvY3VzT25Db250YWluZXJcbiAgICAgICAgICAgICAgICA6IGV2Lm5hdGl2ZUV2ZW50LnBvaW50ZXJUeXBlID09PSAnbW91c2UnO1xuICAgICAgICAgICAgaWYgKCFldi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuX29uVG9nZ2xlTWVudShzaG91bGRGb2N1c09uQ29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpbml0aWFsaXplQ29tcG9uZW50UmVmKF90aGlzKTtcbiAgICAgICAgX3RoaXMuX2FzeW5jID0gbmV3IEFzeW5jKF90aGlzKTtcbiAgICAgICAgX3RoaXMuX2V2ZW50cyA9IG5ldyBFdmVudEdyb3VwKF90aGlzKTtcbiAgICAgICAgd2FybkNvbmRpdGlvbmFsbHlSZXF1aXJlZFByb3BzKENPTVBPTkVOVF9OQU1FLCBwcm9wcywgWydtZW51UHJvcHMnLCAnb25DbGljayddLCAnc3BsaXQnLCBfdGhpcy5wcm9wcy5zcGxpdCk7XG4gICAgICAgIHdhcm5EZXByZWNhdGlvbnMoQ09NUE9ORU5UX05BTUUsIHByb3BzLCB7XG4gICAgICAgICAgICByb290UHJvcHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnc2Vjb25kYXJ5VGV4dCcsXG4gICAgICAgICAgICB0b2dnbGVkOiAnY2hlY2tlZCcsXG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5fbGFiZWxJZCA9IGdldElkKCk7XG4gICAgICAgIF90aGlzLl9kZXNjcmlwdGlvbklkID0gZ2V0SWQoKTtcbiAgICAgICAgX3RoaXMuX2FyaWFEZXNjcmlwdGlvbklkID0gZ2V0SWQoKTtcbiAgICAgICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBtZW51SGlkZGVuOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXNlQnV0dG9uLnByb3RvdHlwZSwgXCJfaXNTcGxpdEJ1dHRvblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGhpcy5wcm9wcy5tZW51UHJvcHMgJiYgISF0aGlzLnByb3BzLm9uQ2xpY2sgJiYgdGhpcy5wcm9wcy5zcGxpdCA9PT0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLnByb3BzLCBhcmlhRGVzY3JpcHRpb24gPSBfYi5hcmlhRGVzY3JpcHRpb24sIGFyaWFMYWJlbCA9IF9iLmFyaWFMYWJlbCwgYXJpYUhpZGRlbiA9IF9iLmFyaWFIaWRkZW4sIGNsYXNzTmFtZSA9IF9iLmNsYXNzTmFtZSwgZGlzYWJsZWQgPSBfYi5kaXNhYmxlZCwgYWxsb3dEaXNhYmxlZEZvY3VzID0gX2IuYWxsb3dEaXNhYmxlZEZvY3VzLCBwcmltYXJ5RGlzYWJsZWQgPSBfYi5wcmltYXJ5RGlzYWJsZWQsIFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgX2MgPSBfYi5zZWNvbmRhcnlUZXh0LCBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIHNlY29uZGFyeVRleHQgPSBfYyA9PT0gdm9pZCAwID8gdGhpcy5wcm9wcy5kZXNjcmlwdGlvbiA6IF9jLCBocmVmID0gX2IuaHJlZiwgaWNvblByb3BzID0gX2IuaWNvblByb3BzLCBtZW51SWNvblByb3BzID0gX2IubWVudUljb25Qcm9wcywgc3R5bGVzID0gX2Iuc3R5bGVzLCBjaGVja2VkID0gX2IuY2hlY2tlZCwgdmFyaWFudENsYXNzTmFtZSA9IF9iLnZhcmlhbnRDbGFzc05hbWUsIHRoZW1lID0gX2IudGhlbWUsIHRvZ2dsZSA9IF9iLnRvZ2dsZSwgZ2V0Q2xhc3NOYW1lcyA9IF9iLmdldENsYXNzTmFtZXMsIHJvbGUgPSBfYi5yb2xlO1xuICAgICAgICB2YXIgbWVudUhpZGRlbiA9IHRoaXMuc3RhdGUubWVudUhpZGRlbjtcbiAgICAgICAgLy8gQnV0dG9uIGlzIGRpc2FibGVkIGlmIHRoZSB3aG9sZSBidXR0b24gKGluIGNhc2Ugb2Ygc3BsaXRCdXR0b24gaXMgZGlzYWJsZWQpIG9yIGlmIHRoZSBwcmltYXJ5IGFjdGlvbiBpcyBkaXNhYmxlZFxuICAgICAgICB2YXIgaXNQcmltYXJ5QnV0dG9uRGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBwcmltYXJ5RGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZXMgPSBnZXRDbGFzc05hbWVzXG4gICAgICAgICAgICA/IGdldENsYXNzTmFtZXModGhlbWUsIGNsYXNzTmFtZSwgdmFyaWFudENsYXNzTmFtZSwgaWNvblByb3BzICYmIGljb25Qcm9wcy5jbGFzc05hbWUsIG1lbnVJY29uUHJvcHMgJiYgbWVudUljb25Qcm9wcy5jbGFzc05hbWUsIGlzUHJpbWFyeUJ1dHRvbkRpc2FibGVkLCBjaGVja2VkLCAhbWVudUhpZGRlbiwgISF0aGlzLnByb3BzLm1lbnVQcm9wcywgdGhpcy5wcm9wcy5zcGxpdCwgISFhbGxvd0Rpc2FibGVkRm9jdXMpXG4gICAgICAgICAgICA6IGdldEJhc2VCdXR0b25DbGFzc05hbWVzKHRoZW1lLCBzdHlsZXMsIGNsYXNzTmFtZSwgdmFyaWFudENsYXNzTmFtZSwgaWNvblByb3BzICYmIGljb25Qcm9wcy5jbGFzc05hbWUsIG1lbnVJY29uUHJvcHMgJiYgbWVudUljb25Qcm9wcy5jbGFzc05hbWUsIGlzUHJpbWFyeUJ1dHRvbkRpc2FibGVkLCAhIXRoaXMucHJvcHMubWVudVByb3BzLCBjaGVja2VkLCAhbWVudUhpZGRlbiwgdGhpcy5wcm9wcy5zcGxpdCk7XG4gICAgICAgIHZhciBfZCA9IHRoaXMsIF9hcmlhRGVzY3JpcHRpb25JZCA9IF9kLl9hcmlhRGVzY3JpcHRpb25JZCwgX2xhYmVsSWQgPSBfZC5fbGFiZWxJZCwgX2Rlc2NyaXB0aW9uSWQgPSBfZC5fZGVzY3JpcHRpb25JZDtcbiAgICAgICAgLy8gQW5jaG9yIHRhZyBjYW5ub3QgYmUgZGlzYWJsZWQgaGVuY2UgaW4gZGlzYWJsZWQgc3RhdGUgcmVuZGVyaW5nXG4gICAgICAgIC8vIGFuY2hvciBidXR0b24gYXMgbm9ybWFsIGJ1dHRvblxuICAgICAgICB2YXIgcmVuZGVyQXNBbmNob3IgPSAhaXNQcmltYXJ5QnV0dG9uRGlzYWJsZWQgJiYgISFocmVmO1xuICAgICAgICB2YXIgdGFnID0gcmVuZGVyQXNBbmNob3IgPyAnYScgOiAnYnV0dG9uJztcbiAgICAgICAgdmFyIG5hdGl2ZVByb3BzID0gZ2V0TmF0aXZlUHJvcHMoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBhc3NpZ24ocmVuZGVyQXNBbmNob3IgPyB7fSA6IHsgdHlwZTogJ2J1dHRvbicgfSwgdGhpcy5wcm9wcy5yb290UHJvcHMsIHRoaXMucHJvcHMpLCByZW5kZXJBc0FuY2hvciA/IGFuY2hvclByb3BlcnRpZXMgOiBidXR0b25Qcm9wZXJ0aWVzLCBbXG4gICAgICAgICAgICAnZGlzYWJsZWQnLCAvLyBsZXQgZGlzYWJsZWQgYnV0dG9ucyBiZSBmb2N1c2VkIGFuZCBzdHlsZWQgYXMgZGlzYWJsZWQuXG4gICAgICAgIF0pO1xuICAgICAgICAvLyBDaGVjayBmb3IgYXJpYUxhYmVsIHBhc3NlZCBpbiB2aWEgQnV0dG9uIHByb3BzLCBhbmQgZmFsbCBiYWNrIHRvIGFyaWEtbGFiZWwgcGFzc2VkIGluIHZpYSBuYXRpdmUgcHJvcHNcbiAgICAgICAgdmFyIHJlc29sdmVkQXJpYUxhYmVsID0gYXJpYUxhYmVsIHx8IG5hdGl2ZVByb3BzWydhcmlhLWxhYmVsJ107XG4gICAgICAgIC8vIENoZWNrIGZvciBhcmlhRGVzY3JpcHRpb24sIHNlY29uZGFyeVRleHQgb3IgYXJpYS1kZXNjcmliZWRieSBpbiB0aGUgbmF0aXZlIHByb3BzIHRvIGRldGVybWluZSBzb3VyY2Ugb2ZcbiAgICAgICAgLy8gYXJpYS1kZXNjcmliZWRieS4gT3RoZXJ3aXNlIGRlZmF1bHQgdG8gdW5kZWZpbmVkIHNvIHByb3BlcnR5IGRvZXMgbm90IGFwcGVhciBpbiBvdXRwdXQuXG4gICAgICAgIHZhciBhcmlhRGVzY3JpYmVkQnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChhcmlhRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeSA9IF9hcmlhRGVzY3JpcHRpb25JZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWNvbmRhcnlUZXh0ICYmIHRoaXMucHJvcHMub25SZW5kZXJEZXNjcmlwdGlvbiAhPT0gbnVsbFJlbmRlcikge1xuICAgICAgICAgICAgLy8gZm9yIGJ1dHRvbnMgbGlrZSBDb21wb3VuZEJ1dHRvbiB3aXRoIGEgdmFsaWQgb25SZW5kZXJEZXNjcmlwdGlvbiwgd2UgbmVlZCB0byBzZXQgYW4gYXJpYURlc2NyaWJlZEJ5XG4gICAgICAgICAgICAvLyBmb3IgYnV0dG9ucyB0aGF0IGRvIG5vdCByZW5kZXIgYW55dGhpbmcgKHZpYSBudWxsUmVuZGVyKSwgd2Ugc2hvdWxkIG5vdCBzZXQgYW4gYXJpYURlc2NyaWJlZEJ5XG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnkgPSBfZGVzY3JpcHRpb25JZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChuYXRpdmVQcm9wc1snYXJpYS1kZXNjcmliZWRieSddKSB7XG4gICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnkgPSBuYXRpdmVQcm9wc1snYXJpYS1kZXNjcmliZWRieSddO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGFuIGV4cGxpY2l0IGFyaWEtbGFiZWxsZWRieSBpcyBnaXZlbiwgdXNlIHRoYXQgYW5kIHdlJ3JlIGRvbmUuXG4gICAgICAgIC8vIElmIGFueSBraW5kIG9mIGRlc2NyaXB0aW9uIGlzIGdpdmVuICh3aGljaCB3aWxsIGVuZCB1cCBhcyBhbiBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSlcbiAgICAgICAgLy8gYW5kIG5vIGFyaWFMYWJlbCBpcyBzcGVjaWZpZWQsIHNldCB0aGUgbGFiZWxsZWRieSBlbGVtZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBidXR0b24gaXMgbGFiZWxlZCBpbXBsaWNpdGx5IGJ5IHRoZSBkZXNjZW5kZW50IHRleHQgb24gdGhlIGJ1dHRvbiAoaWYgaXQgZXhpc3RzKS5cbiAgICAgICAgdmFyIGFyaWFMYWJlbGxlZEJ5ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAobmF0aXZlUHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddKSB7XG4gICAgICAgICAgICBhcmlhTGFiZWxsZWRCeSA9IG5hdGl2ZVByb3BzWydhcmlhLWxhYmVsbGVkYnknXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcmlhRGVzY3JpYmVkQnkgJiYgIXJlc29sdmVkQXJpYUxhYmVsKSB7XG4gICAgICAgICAgICBhcmlhTGFiZWxsZWRCeSA9IHRoaXMuX2hhc1RleHQoKSA/IF9sYWJlbElkIDogdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXRhSXNGb2N1c2FibGUgPSB0aGlzLnByb3BzWydkYXRhLWlzLWZvY3VzYWJsZSddID09PSBmYWxzZSB8fCAoZGlzYWJsZWQgJiYgIWFsbG93RGlzYWJsZWRGb2N1cykgfHwgdGhpcy5faXNTcGxpdEJ1dHRvblxuICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICB2YXIgaXNDaGVja2JveFR5cGVSb2xlID0gcm9sZSA9PT0gJ21lbnVpdGVtY2hlY2tib3gnIHx8IHJvbGUgPT09ICdjaGVja2JveCc7XG4gICAgICAgIC8vIGlmIGlzQ2hlY2tib3hUeXBlUm9sZSwgYWx3YXlzIHJldHVybiBhIGNoZWNrZWQgdmFsdWUuXG4gICAgICAgIC8vIE90aGVyd2lzZSBvbmx5IHJldHVybiBjaGVja2VkIHZhbHVlIGlmIHRvZ2dsZSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHJvbGU9XCJjaGVja2JveFwiIGFsd2F5cyBuZWVkcyB0byBoYXZlIGFuIGFyaWEtY2hlY2tlZCB2YWx1ZVxuICAgICAgICAvLyBidXQgb3VyIGNoZWNrZWQgcHJvcCBvbmx5IHNldHMgYXJpYS1wcmVzc2VkIGlmIHdlIG1hcmsgdGhlIGJ1dHRvbiBhcyBhIHRvZ2dsZT1cInRydWVcIlxuICAgICAgICB2YXIgY2hlY2tlZE9yUHJlc3NlZFZhbHVlID0gaXNDaGVja2JveFR5cGVSb2xlID8gISFjaGVja2VkIDogdG9nZ2xlID09PSB0cnVlID8gISFjaGVja2VkIDogdW5kZWZpbmVkO1xuICAgICAgICB2YXIgYnV0dG9uUHJvcHMgPSBhc3NpZ24obmF0aXZlUHJvcHMsIChfYSA9IHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMuX2NsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgICAgICByZWY6IHRoaXMuX21lcmdlZFJlZih0aGlzLnByb3BzLmVsZW1lbnRSZWYsIHRoaXMuX2J1dHRvbkVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc1ByaW1hcnlCdXR0b25EaXNhYmxlZCAmJiAhYWxsb3dEaXNhYmxlZEZvY3VzLFxuICAgICAgICAgICAgICAgIG9uS2V5RG93bjogdGhpcy5fb25LZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M6IHRoaXMuX29uS2V5UHJlc3MsXG4gICAgICAgICAgICAgICAgb25LZXlVcDogdGhpcy5fb25LZXlVcCxcbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5fb25Nb3VzZURvd24sXG4gICAgICAgICAgICAgICAgb25Nb3VzZVVwOiB0aGlzLl9vbk1vdXNlVXAsXG4gICAgICAgICAgICAgICAgb25DbGljazogdGhpcy5fb25DbGljayxcbiAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IHJlc29sdmVkQXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRCeSxcbiAgICAgICAgICAgICAgICAnYXJpYS1kaXNhYmxlZCc6IGlzUHJpbWFyeUJ1dHRvbkRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdkYXRhLWlzLWZvY3VzYWJsZSc6IGRhdGFJc0ZvY3VzYWJsZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcHJlc2VudCBmb3IgdG9nZ2xlIGJ1dHRvbnNcbiAgICAgICAgICAgIC8vIGFyaWEtY2hlY2tlZCBhdHRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcHJlc2VudCBmb3IgdG9nZ2xlIGJ1dHRvbnMgd2l0aCBjaGVja2JveCB0eXBlIHJvbGVcbiAgICAgICAgICAgIF9hW2lzQ2hlY2tib3hUeXBlUm9sZSA/ICdhcmlhLWNoZWNrZWQnIDogJ2FyaWEtcHJlc3NlZCddID0gY2hlY2tlZE9yUHJlc3NlZFZhbHVlLFxuICAgICAgICAgICAgX2EpKTtcbiAgICAgICAgaWYgKGFyaWFIaWRkZW4pIHtcbiAgICAgICAgICAgIGJ1dHRvblByb3BzWydhcmlhLWhpZGRlbiddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faXNTcGxpdEJ1dHRvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29uUmVuZGVyU3BsaXRCdXR0b25Db250ZW50KHRhZywgYnV0dG9uUHJvcHMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMucHJvcHMubWVudVByb3BzKSB7XG4gICAgICAgICAgICB2YXIgX2UgPSB0aGlzLnByb3BzLm1lbnVQcm9wcy5pZCwgaWQgPSBfZSA9PT0gdm9pZCAwID8gXCJcIi5jb25jYXQodGhpcy5fbGFiZWxJZCwgXCItbWVudVwiKSA6IF9lO1xuICAgICAgICAgICAgYXNzaWduKGJ1dHRvblByb3BzLCB7XG4gICAgICAgICAgICAgICAgJ2FyaWEtZXhwYW5kZWQnOiAhbWVudUhpZGRlbixcbiAgICAgICAgICAgICAgICAnYXJpYS1jb250cm9scyc6ICFtZW51SGlkZGVuID8gaWQgOiBudWxsLFxuICAgICAgICAgICAgICAgICdhcmlhLWhhc3BvcHVwJzogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vblJlbmRlckNvbnRlbnQodGFnLCBidXR0b25Qcm9wcyk7XG4gICAgfTtcbiAgICBCYXNlQnV0dG9uLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gRm9yIHNwbGl0IGJ1dHRvbnMsIHRvdWNoaW5nIGFueXdoZXJlIGluIHRoZSBidXR0b24gc2hvdWxkIGRyb3AgdGhlIGRyb3Bkb3duLCB3aGljaCBzaG91bGQgY29udGFpbiB0aGVcbiAgICAgICAgLy8gcHJpbWFyeSBhY3Rpb24uIFRoaXMgZ2l2ZXMgbW9yZSBoaXQgdGFyZ2V0IHNwYWNlIGZvciB0b3VjaCBlbnZpcm9ubWVudHMuIFdlJ3JlIHNldHRpbmcgdGhlIG9ucG9pbnRlcmRvd24gaGVyZSxcbiAgICAgICAgLy8gYmVjYXVzZSBSZWFjdCBkb2VzIG5vdCBzdXBwb3J0IFBvaW50ZXIgZXZlbnRzIHlldC5cbiAgICAgICAgaWYgKHRoaXMuX2lzU3BsaXRCdXR0b24gJiYgdGhpcy5fc3BsaXRCdXR0b25Db250YWluZXIuY3VycmVudCkge1xuICAgICAgICAgICAgaWYgKCdvbnBvaW50ZXJkb3duJyBpbiB0aGlzLl9zcGxpdEJ1dHRvbkNvbnRhaW5lci5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLm9uKHRoaXMuX3NwbGl0QnV0dG9uQ29udGFpbmVyLmN1cnJlbnQsICdwb2ludGVyZG93bicsIHRoaXMuX29uUG9pbnRlckRvd24sIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCdvbnBvaW50ZXJ1cCcgaW4gdGhpcy5fc3BsaXRCdXR0b25Db250YWluZXIuY3VycmVudCAmJiB0aGlzLnByb3BzLm9uUG9pbnRlclVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzLm9uKHRoaXMuX3NwbGl0QnV0dG9uQ29udGFpbmVyLmN1cnJlbnQsICdwb2ludGVydXAnLCB0aGlzLnByb3BzLm9uUG9pbnRlclVwLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIC8vIElmIEJ1dHRvbidzIG1lbnUgd2FzIGNsb3NlZCwgcnVuIG9uQWZ0ZXJNZW51RGlzbWlzcy5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25BZnRlck1lbnVEaXNtaXNzICYmICFwcmV2U3RhdGUubWVudUhpZGRlbiAmJiB0aGlzLnN0YXRlLm1lbnVIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25BZnRlck1lbnVEaXNtaXNzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9hc3luYy5kaXNwb3NlKCk7XG4gICAgICAgIHRoaXMuX2V2ZW50cy5kaXNwb3NlKCk7XG4gICAgfTtcbiAgICBCYXNlQnV0dG9uLnByb3RvdHlwZS5mb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKHRoaXMuX2lzU3BsaXRCdXR0b24gJiYgdGhpcy5fc3BsaXRCdXR0b25Db250YWluZXIuY3VycmVudCkge1xuICAgICAgICAgICAgc2V0Rm9jdXNWaXNpYmlsaXR5KHRydWUsIHVuZGVmaW5lZCwgKF9hID0gdGhpcy5jb250ZXh0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVnaXN0ZXJlZFByb3ZpZGVycyk7XG4gICAgICAgICAgICB0aGlzLl9zcGxpdEJ1dHRvbkNvbnRhaW5lci5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fYnV0dG9uRWxlbWVudC5jdXJyZW50KSB7XG4gICAgICAgICAgICBzZXRGb2N1c1Zpc2liaWxpdHkodHJ1ZSwgdW5kZWZpbmVkLCAoX2IgPSB0aGlzLmNvbnRleHQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZWdpc3RlcmVkUHJvdmlkZXJzKTtcbiAgICAgICAgICAgIHRoaXMuX2J1dHRvbkVsZW1lbnQuY3VycmVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBCYXNlQnV0dG9uLnByb3RvdHlwZS5kaXNtaXNzTWVudSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fZGlzbWlzc01lbnUoKTtcbiAgICB9O1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLm9wZW5NZW51ID0gZnVuY3Rpb24gKHNob3VsZEZvY3VzT25Db250YWluZXIsIHNob3VsZEZvY3VzT25Nb3VudCkge1xuICAgICAgICB0aGlzLl9vcGVuTWVudShzaG91bGRGb2N1c09uQ29udGFpbmVyLCBzaG91bGRGb2N1c09uTW91bnQpO1xuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX29uUmVuZGVyQ29udGVudCA9IGZ1bmN0aW9uICh0YWcsIGJ1dHRvblByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICAgIHZhciBUYWcgPSB0YWc7XG4gICAgICAgIHZhciBtZW51SWNvblByb3BzID0gcHJvcHMubWVudUljb25Qcm9wcywgbWVudVByb3BzID0gcHJvcHMubWVudVByb3BzLCBfYSA9IHByb3BzLm9uUmVuZGVySWNvbiwgb25SZW5kZXJJY29uID0gX2EgPT09IHZvaWQgMCA/IHRoaXMuX29uUmVuZGVySWNvbiA6IF9hLCBfYiA9IHByb3BzLm9uUmVuZGVyQXJpYURlc2NyaXB0aW9uLCBvblJlbmRlckFyaWFEZXNjcmlwdGlvbiA9IF9iID09PSB2b2lkIDAgPyB0aGlzLl9vblJlbmRlckFyaWFEZXNjcmlwdGlvbiA6IF9iLCBfYyA9IHByb3BzLm9uUmVuZGVyQ2hpbGRyZW4sIG9uUmVuZGVyQ2hpbGRyZW4gPSBfYyA9PT0gdm9pZCAwID8gdGhpcy5fb25SZW5kZXJDaGlsZHJlbiA6IF9jLCBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIF9kID0gcHJvcHMub25SZW5kZXJNZW51LCBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIG9uUmVuZGVyTWVudSA9IF9kID09PSB2b2lkIDAgPyB0aGlzLl9vblJlbmRlck1lbnUgOiBfZCwgX2UgPSBwcm9wcy5vblJlbmRlck1lbnVJY29uLCBvblJlbmRlck1lbnVJY29uID0gX2UgPT09IHZvaWQgMCA/IHRoaXMuX29uUmVuZGVyTWVudUljb24gOiBfZSwgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZDtcbiAgICAgICAgdmFyIGtleXRpcFByb3BzID0gcHJvcHMua2V5dGlwUHJvcHM7XG4gICAgICAgIGlmIChrZXl0aXBQcm9wcyAmJiBtZW51UHJvcHMpIHtcbiAgICAgICAgICAgIGtleXRpcFByb3BzID0gdGhpcy5fZ2V0TWVtb2l6ZWRNZW51QnV0dG9uS2V5dGlwUHJvcHMoa2V5dGlwUHJvcHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBCdXR0b24gPSBmdW5jdGlvbiAoa2V5dGlwQXR0cmlidXRlcykgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFnLCBfX2Fzc2lnbih7fSwgYnV0dG9uUHJvcHMsIGtleXRpcEF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IF90aGlzLl9jbGFzc05hbWVzLmZsZXhDb250YWluZXIsIFwiZGF0YS1hdXRvbWF0aW9uaWRcIjogXCJzcGxpdGJ1dHRvbnByaW1hcnlcIiB9LFxuICAgICAgICAgICAgICAgIG9uUmVuZGVySWNvbihwcm9wcywgX3RoaXMuX29uUmVuZGVySWNvbiksXG4gICAgICAgICAgICAgICAgX3RoaXMuX29uUmVuZGVyVGV4dENvbnRlbnRzKCksXG4gICAgICAgICAgICAgICAgb25SZW5kZXJBcmlhRGVzY3JpcHRpb24ocHJvcHMsIF90aGlzLl9vblJlbmRlckFyaWFEZXNjcmlwdGlvbiksXG4gICAgICAgICAgICAgICAgb25SZW5kZXJDaGlsZHJlbihwcm9wcywgX3RoaXMuX29uUmVuZGVyQ2hpbGRyZW4pLFxuICAgICAgICAgICAgICAgICFfdGhpcy5faXNTcGxpdEJ1dHRvbiAmJlxuICAgICAgICAgICAgICAgICAgICAobWVudVByb3BzIHx8IG1lbnVJY29uUHJvcHMgfHwgX3RoaXMucHJvcHMub25SZW5kZXJNZW51SWNvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgb25SZW5kZXJNZW51SWNvbihfdGhpcy5wcm9wcywgX3RoaXMuX29uUmVuZGVyTWVudUljb24pLFxuICAgICAgICAgICAgICAgIG1lbnVQcm9wcyAmJlxuICAgICAgICAgICAgICAgICAgICAhbWVudVByb3BzLmRvTm90TGF5ZXIgJiZcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3Nob3VsZFJlbmRlck1lbnUoKSAmJlxuICAgICAgICAgICAgICAgICAgICBvblJlbmRlck1lbnUoX3RoaXMuX2dldE1lbnVQcm9wcyhtZW51UHJvcHMpLCBfdGhpcy5fb25SZW5kZXJNZW51KSkpKTsgfTtcbiAgICAgICAgdmFyIENvbnRlbnQgPSBrZXl0aXBQcm9wcyA/IChcbiAgICAgICAgLy8gSWYgd2UncmUgbWFraW5nIGEgc3BsaXQgYnV0dG9uLCB3ZSB3b24ndCBwdXQgdGhlIGtleXRpcCBoZXJlXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoS2V5dGlwRGF0YSwgeyBrZXl0aXBQcm9wczogIXRoaXMuX2lzU3BsaXRCdXR0b24gPyBrZXl0aXBQcm9wcyA6IHVuZGVmaW5lZCwgYXJpYURlc2NyaWJlZEJ5OiBidXR0b25Qcm9wc1snYXJpYS1kZXNjcmliZWRieSddLCBkaXNhYmxlZDogZGlzYWJsZWQgfSwgZnVuY3Rpb24gKGtleXRpcEF0dHJpYnV0ZXMpIHsgcmV0dXJuIEJ1dHRvbihrZXl0aXBBdHRyaWJ1dGVzKTsgfSkpIDogKEJ1dHRvbigpKTtcbiAgICAgICAgaWYgKG1lbnVQcm9wcyAmJiBtZW51UHJvcHMuZG9Ob3RMYXllcikge1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIENvbnRlbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvdWxkUmVuZGVyTWVudSgpICYmIG9uUmVuZGVyTWVudSh0aGlzLl9nZXRNZW51UHJvcHMobWVudVByb3BzKSwgdGhpcy5fb25SZW5kZXJNZW51KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIENvbnRlbnQsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvY3VzUmVjdHMsIG51bGwpKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gaGVscCBkZXRlcm1pbmUgaWYgdGhlIG1lbnUncyBjb21wb25lbnQgdHJlZSBzaG91bGRcbiAgICAgKiBiZSByZW5kZXJlZC4gSXQgdGFrZXMgaW50byBhY2NvdW50IHdoZXRoZXIgdGhlIG1lbnUgaXMgZXhwYW5kZWQsXG4gICAgICogd2hldGhlciBpdCBpcyBhIHBlcnNpc3RlZCBtZW51IGFuZCB3aGV0aGVyIGl0IGhhcyBiZWVuIHNob3duIHRvIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLl9zaG91bGRSZW5kZXJNZW51ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbWVudUhpZGRlbiA9IHRoaXMuc3RhdGUubWVudUhpZGRlbjtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIHBlcnNpc3RNZW51ID0gX2EucGVyc2lzdE1lbnUsIHJlbmRlclBlcnNpc3RlZE1lbnVIaWRkZW5Pbk1vdW50ID0gX2EucmVuZGVyUGVyc2lzdGVkTWVudUhpZGRlbk9uTW91bnQ7XG4gICAgICAgIGlmICghbWVudUhpZGRlbikge1xuICAgICAgICAgICAgLy8gQWx3YXlzIHNob3VsZCByZW5kZXIgYSBtZW51IHdoZW4gaXQgaXMgZXhwYW5kZWRcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHBlcnNpc3RNZW51ICYmICh0aGlzLl9yZW5kZXJlZFZpc2libGVNZW51IHx8IHJlbmRlclBlcnNpc3RlZE1lbnVIaWRkZW5Pbk1vdW50KSkge1xuICAgICAgICAgICAgLy8gX3JlbmRlcmVkVmlzaWJsZU1lbnUgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCByZW5kZXJpbmcgb2ZcbiAgICAgICAgICAgIC8vIHRoZSBtZW51IGhhcHBlbnMgb24tc2NyZWVuLCBhcyBlZGdlJ3Mgc2Nyb2xsYmFyIGNhbGN1bGF0aW9ucyBhcmUgb2ZmIGlmIGRvbmUgd2hpbGUgaGlkZGVuLlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX2hhc1RleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIF9vblJlbmRlclRleHRDb250ZW50cyBhbmQgX29uUmVuZGVyVGV4dCBkbyBub3QgcGVyZm9ybSB0aGUgc2FtZSBjaGVja3MuIEJlbG93IGlzIHBhcml0eSB3aXRoIHdoYXQgX29uUmVuZGVyVGV4dFxuICAgICAgICAvLyB1c2VkIHRvIGhhdmUgYmVmb3JlIHRoZSByZWZhY3RvciB0aGF0IGludHJvZHVjZWQgdGhpcyBmdW5jdGlvbi4gX29uUmVuZGVyVGV4dENvbnRlbnRzIGRvZXMgbm90IHJlcXVpcmUgcHJvcHMuXG4gICAgICAgIC8vIHRleHQgdG8gYmUgdW5kZWZpbmVkIGluIG9yZGVyIGZvciBwcm9wcy5jaGlsZHJlbiB0byBiZSB1c2VkIGFzIGEgZmFsbGJhY2suXG4gICAgICAgIC8vIFB1cmVseSBhIGNvZGUgbWFpbnRhaW5hYmlsaXR5L3JldXNlIGlzc3VlLCBidXQgbG9nZ2VkIGFzIElzc3VlICM0OTc5LlxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy50ZXh0ICE9PSBudWxsICYmICh0aGlzLnByb3BzLnRleHQgIT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdGhpcy5wcm9wcy5jaGlsZHJlbiA9PT0gJ3N0cmluZycpO1xuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX2dldE1lbnVQcm9wcyA9IGZ1bmN0aW9uIChtZW51UHJvcHMpIHtcbiAgICAgICAgdmFyIHBlcnNpc3RNZW51ID0gdGhpcy5wcm9wcy5wZXJzaXN0TWVudTtcbiAgICAgICAgdmFyIG1lbnVIaWRkZW4gPSB0aGlzLnN0YXRlLm1lbnVIaWRkZW47XG4gICAgICAgIC8vIHRoZSBhY2Nlc3NpYmxlIG1lbnUgbGFiZWwgKGFjY2Vzc2libGUgbmFtZSkgaGFzIGEgcmVsYXRpb25zaGlwIHRvIHRoZSBidXR0b24uXG4gICAgICAgIC8vIElmIHRoZSBtZW51IHByb3BzIGRvIG5vdCBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRCeSxcbiAgICAgICAgLy8gQU5EIHRoZSBidXR0b24gaGFzIHRleHQsIHdlJ2xsIHNldCB0aGUgbWVudSBhcmlhLWxhYmVsbGVkQnkgdG8gdGhlIHRleHQgZWxlbWVudCBpZC5cbiAgICAgICAgaWYgKCFtZW51UHJvcHMuYXJpYUxhYmVsICYmICFtZW51UHJvcHMubGFiZWxFbGVtZW50SWQgJiYgdGhpcy5faGFzVGV4dCgpKSB7XG4gICAgICAgICAgICBtZW51UHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWVudVByb3BzKSwgeyBsYWJlbEVsZW1lbnRJZDogdGhpcy5fbGFiZWxJZCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oeyBpZDogdGhpcy5fbGFiZWxJZCArICctbWVudScsIGRpcmVjdGlvbmFsSGludDogRGlyZWN0aW9uYWxIaW50LmJvdHRvbUxlZnRFZGdlIH0sIG1lbnVQcm9wcyksIHsgc2hvdWxkRm9jdXNPbkNvbnRhaW5lcjogdGhpcy5fbWVudVNob3VsZEZvY3VzT25Db250YWluZXIsIHNob3VsZEZvY3VzT25Nb3VudDogdGhpcy5fbWVudVNob3VsZEZvY3VzT25Nb3VudCwgaGlkZGVuOiBwZXJzaXN0TWVudSA/IG1lbnVIaWRkZW4gOiB1bmRlZmluZWQsIGNsYXNzTmFtZTogY3NzKCdtcy1CYXNlQnV0dG9uLW1lbnVob3N0JywgbWVudVByb3BzLmNsYXNzTmFtZSksIHRhcmdldDogdGhpcy5faXNTcGxpdEJ1dHRvbiA/IHRoaXMuX3NwbGl0QnV0dG9uQ29udGFpbmVyLmN1cnJlbnQgOiB0aGlzLl9idXR0b25FbGVtZW50LmN1cnJlbnQsIG9uRGlzbWlzczogdGhpcy5fb25EaXNtaXNzTWVudSB9KTtcbiAgICB9O1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLl9vblJlbmRlclNwbGl0QnV0dG9uQ29udGVudCA9IGZ1bmN0aW9uICh0YWcsIGJ1dHRvblByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIF9iID0gX2Euc3R5bGVzLCBzdHlsZXMgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYiwgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgYWxsb3dEaXNhYmxlZEZvY3VzID0gX2EuYWxsb3dEaXNhYmxlZEZvY3VzLCBjaGVja2VkID0gX2EuY2hlY2tlZCwgZ2V0U3BsaXRCdXR0b25DbGFzc05hbWVzID0gX2EuZ2V0U3BsaXRCdXR0b25DbGFzc05hbWVzLCBwcmltYXJ5RGlzYWJsZWQgPSBfYS5wcmltYXJ5RGlzYWJsZWQsIG1lbnVQcm9wcyA9IF9hLm1lbnVQcm9wcywgdG9nZ2xlID0gX2EudG9nZ2xlLCByb2xlID0gX2Eucm9sZSwgcHJpbWFyeUFjdGlvbkJ1dHRvblByb3BzID0gX2EucHJpbWFyeUFjdGlvbkJ1dHRvblByb3BzO1xuICAgICAgICB2YXIga2V5dGlwUHJvcHMgPSB0aGlzLnByb3BzLmtleXRpcFByb3BzO1xuICAgICAgICB2YXIgbWVudUhpZGRlbiA9IHRoaXMuc3RhdGUubWVudUhpZGRlbjtcbiAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRTcGxpdEJ1dHRvbkNsYXNzTmFtZXNcbiAgICAgICAgICAgID8gZ2V0U3BsaXRCdXR0b25DbGFzc05hbWVzKCEhZGlzYWJsZWQsICFtZW51SGlkZGVuLCAhIWNoZWNrZWQsICEhYWxsb3dEaXNhYmxlZEZvY3VzKVxuICAgICAgICAgICAgOiBzdHlsZXMgJiYgZ2V0QmFzZVNwbGl0QnV0dG9uQ2xhc3NOYW1lcyhzdHlsZXMsICEhZGlzYWJsZWQsICFtZW51SGlkZGVuLCAhIWNoZWNrZWQsICEhcHJpbWFyeURpc2FibGVkKTtcbiAgICAgICAgYXNzaWduKGJ1dHRvblByb3BzLCB7XG4gICAgICAgICAgICBvbkNsaWNrOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvblBvaW50ZXJEb3duOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvblBvaW50ZXJVcDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICAgICAgJ2RhdGEtaXMtZm9jdXNhYmxlJzogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoa2V5dGlwUHJvcHMgJiYgbWVudVByb3BzKSB7XG4gICAgICAgICAgICBrZXl0aXBQcm9wcyA9IHRoaXMuX2dldE1lbW9pemVkTWVudUJ1dHRvbktleXRpcFByb3BzKGtleXRpcFByb3BzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBnZXROYXRpdmVQcm9wcyhidXR0b25Qcm9wcywgW10sIFsnZGlzYWJsZWQnXSk7XG4gICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIHByb3BzIHRvIGFwcGx5IG9uIHByaW1hcnkgYWN0aW9uIGJ1dHRvblxuICAgICAgICBpZiAocHJpbWFyeUFjdGlvbkJ1dHRvblByb3BzKSB7XG4gICAgICAgICAgICBhc3NpZ24oYnV0dG9uUHJvcHMsIHByaW1hcnlBY3Rpb25CdXR0b25Qcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIFNwbGl0QnV0dG9uID0gZnVuY3Rpb24gKGtleXRpcEF0dHJpYnV0ZXMpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcywgeyBcImRhdGEta3RwLXRhcmdldFwiOiBrZXl0aXBBdHRyaWJ1dGVzID8ga2V5dGlwQXR0cmlidXRlc1snZGF0YS1rdHAtdGFyZ2V0J10gOiB1bmRlZmluZWQsIHJvbGU6IHJvbGUgPyByb2xlIDogJ2J1dHRvbicsIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCwgXCJhcmlhLWhhc3BvcHVwXCI6IHRydWUsIFwiYXJpYS1leHBhbmRlZFwiOiAhbWVudUhpZGRlbiwgXCJhcmlhLXByZXNzZWRcIjogdG9nZ2xlID8gISFjaGVja2VkIDogdW5kZWZpbmVkLCBcImFyaWEtZGVzY3JpYmVkYnlcIjogbWVyZ2VBcmlhQXR0cmlidXRlVmFsdWVzKGJ1dHRvblByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10sIGtleXRpcEF0dHJpYnV0ZXMgPyBrZXl0aXBBdHRyaWJ1dGVzWydhcmlhLWRlc2NyaWJlZGJ5J10gOiB1bmRlZmluZWQpLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMgJiYgY2xhc3NOYW1lcy5zcGxpdEJ1dHRvbkNvbnRhaW5lciwgb25LZXlEb3duOiBfdGhpcy5fb25TcGxpdEJ1dHRvbkNvbnRhaW5lcktleURvd24sIG9uVG91Y2hTdGFydDogX3RoaXMuX29uVG91Y2hTdGFydCwgcmVmOiBfdGhpcy5fc3BsaXRCdXR0b25Db250YWluZXIsIFwiZGF0YS1pcy1mb2N1c2FibGVcIjogdHJ1ZSwgb25DbGljazogIWRpc2FibGVkICYmICFwcmltYXJ5RGlzYWJsZWQgPyBfdGhpcy5fb25TcGxpdEJ1dHRvblByaW1hcnlDbGljayA6IHVuZGVmaW5lZCwgdGFiSW5kZXg6ICghZGlzYWJsZWQgJiYgIXByaW1hcnlEaXNhYmxlZCkgfHwgYWxsb3dEaXNhYmxlZEZvY3VzID8gMCA6IHVuZGVmaW5lZCwgXCJhcmlhLXJvbGVkZXNjcmlwdGlvblwiOiBidXR0b25Qcm9wc1snYXJpYS1yb2xlZGVzY3JpcHRpb24nXSwgb25Gb2N1c0NhcHR1cmU6IF90aGlzLl9vblNwbGl0Q29udGFpbmVyRm9jdXNDYXB0dXJlIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBzdHlsZTogeyBkaXNwbGF5OiAnZmxleCcsIHdpZHRoOiAnMTAwJScgfSB9LFxuICAgICAgICAgICAgICAgIF90aGlzLl9vblJlbmRlckNvbnRlbnQodGFnLCBidXR0b25Qcm9wcyksXG4gICAgICAgICAgICAgICAgX3RoaXMuX29uUmVuZGVyU3BsaXRCdXR0b25NZW51QnV0dG9uKGNsYXNzTmFtZXMsIGtleXRpcEF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgIF90aGlzLl9vblJlbmRlclNwbGl0QnV0dG9uRGl2aWRlcihjbGFzc05hbWVzKSkpKTsgfTtcbiAgICAgICAgcmV0dXJuIGtleXRpcFByb3BzID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoS2V5dGlwRGF0YSwgeyBrZXl0aXBQcm9wczoga2V5dGlwUHJvcHMsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCBmdW5jdGlvbiAoa2V5dGlwQXR0cmlidXRlcykgeyByZXR1cm4gU3BsaXRCdXR0b24oa2V5dGlwQXR0cmlidXRlcyk7IH0pKSA6IChTcGxpdEJ1dHRvbigpKTtcbiAgICB9O1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLl9vblJlbmRlclNwbGl0QnV0dG9uRGl2aWRlciA9IGZ1bmN0aW9uIChjbGFzc05hbWVzKSB7XG4gICAgICAgIGlmIChjbGFzc05hbWVzICYmIGNsYXNzTmFtZXMuZGl2aWRlcikge1xuICAgICAgICAgICAgdmFyIG9uQ2xpY2sgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuZGl2aWRlciwgXCJhcmlhLWhpZGRlblwiOiB0cnVlLCBvbkNsaWNrOiBvbkNsaWNrIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX29uUmVuZGVyU3BsaXRCdXR0b25NZW51QnV0dG9uID0gZnVuY3Rpb24gKGNsYXNzTmFtZXMsIGtleXRpcEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgYWxsb3dEaXNhYmxlZEZvY3VzID0gX2EuYWxsb3dEaXNhYmxlZEZvY3VzLCBjaGVja2VkID0gX2EuY2hlY2tlZCwgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgc3BsaXRCdXR0b25NZW51UHJvcHMgPSBfYS5zcGxpdEJ1dHRvbk1lbnVQcm9wcywgc3BsaXRCdXR0b25BcmlhTGFiZWwgPSBfYS5zcGxpdEJ1dHRvbkFyaWFMYWJlbCwgcHJpbWFyeURpc2FibGVkID0gX2EucHJpbWFyeURpc2FibGVkO1xuICAgICAgICB2YXIgbWVudUhpZGRlbiA9IHRoaXMuc3RhdGUubWVudUhpZGRlbjtcbiAgICAgICAgdmFyIG1lbnVJY29uUHJvcHMgPSB0aGlzLnByb3BzLm1lbnVJY29uUHJvcHM7XG4gICAgICAgIGlmIChtZW51SWNvblByb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG1lbnVJY29uUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgaWNvbk5hbWU6ICdDaGV2cm9uRG93bicsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBzcGxpdEJ1dHRvblByb3BzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHNwbGl0QnV0dG9uTWVudVByb3BzKSwgeyBzdHlsZXM6IGNsYXNzTmFtZXMsIGNoZWNrZWQ6IGNoZWNrZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgYWxsb3dEaXNhYmxlZEZvY3VzOiBhbGxvd0Rpc2FibGVkRm9jdXMsIG9uQ2xpY2s6IHRoaXMuX29uTWVudUNsaWNrLCBtZW51UHJvcHM6IHVuZGVmaW5lZCwgaWNvblByb3BzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbWVudUljb25Qcm9wcyksIHsgY2xhc3NOYW1lOiB0aGlzLl9jbGFzc05hbWVzLm1lbnVJY29uIH0pLCBhcmlhTGFiZWw6IHNwbGl0QnV0dG9uQXJpYUxhYmVsLCAnYXJpYS1oYXNwb3B1cCc6IHRydWUsICdhcmlhLWV4cGFuZGVkJzogIW1lbnVIaWRkZW4sICdkYXRhLWlzLWZvY3VzYWJsZSc6IGZhbHNlIH0pO1xuICAgICAgICAvLyBBZGQgZGF0YS1rdHAtZXhlY3V0ZS10YXJnZXQgdG8gdGhlIHNwbGl0IGJ1dHRvbiBpZiB0aGUga2V5dGlwIGlzIGRlZmluZWRcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEJhc2VCdXR0b24sIF9fYXNzaWduKHt9LCBzcGxpdEJ1dHRvblByb3BzLCB7IFwiZGF0YS1rdHAtZXhlY3V0ZS10YXJnZXRcIjoga2V5dGlwQXR0cmlidXRlcyA/IGtleXRpcEF0dHJpYnV0ZXNbJ2RhdGEta3RwLWV4ZWN1dGUtdGFyZ2V0J10gOiBrZXl0aXBBdHRyaWJ1dGVzLCBvbk1vdXNlRG93bjogdGhpcy5fb25Nb3VzZURvd24sIHRhYkluZGV4OiBwcmltYXJ5RGlzYWJsZWQgJiYgIWFsbG93RGlzYWJsZWRGb2N1cyA/IDAgOiAtMSB9KSkpO1xuICAgIH07XG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX29uUG9pbnRlckRvd24gPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIG9uUG9pbnRlckRvd24gPSB0aGlzLnByb3BzLm9uUG9pbnRlckRvd247XG4gICAgICAgIGlmIChvblBvaW50ZXJEb3duKSB7XG4gICAgICAgICAgICBvblBvaW50ZXJEb3duKGV2KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXYucG9pbnRlclR5cGUgPT09ICd0b3VjaCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVRvdWNoQW5kUG9pbnRlckV2ZW50KCk7XG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXYuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEJhc2VCdXR0b24ucHJvdG90eXBlLl9oYW5kbGVUb3VjaEFuZFBvaW50ZXJFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIHRpbWVvdXQgZnJvbSBhIHByZXZpb3VzIHRvdWNoIGFuZCBwb2ludGVyIGV2ZW50XG4gICAgICAgIC8vIGNhbmNlbCB0aGF0IHRpbWVvdXQgc28gd2UgY2FuIHNldCBhIG5ldyBvbmUuXG4gICAgICAgIGlmICh0aGlzLl9sYXN0VG91Y2hUaW1lb3V0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fYXN5bmMuY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RUb3VjaFRpbWVvdXRJZCk7XG4gICAgICAgICAgICB0aGlzLl9sYXN0VG91Y2hUaW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc2luZ1RvdWNoID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbGFzdFRvdWNoVGltZW91dElkID0gdGhpcy5fYXN5bmMuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5fcHJvY2Vzc2luZ1RvdWNoID0gZmFsc2U7XG4gICAgICAgICAgICBfdGhpcy5fbGFzdFRvdWNoVGltZW91dElkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gVG91Y2ggYW5kIHBvaW50ZXIgZXZlbnRzIGRvbid0IGZvY3VzIHRoZSBidXR0b24gbmF0dXJhbGx5LFxuICAgICAgICAgICAgLy8gc28gYWRkaW5nIGFuIGltcGVyYXRpdmUgZm9jdXMgY2FsbCB0byBndWFyYW50ZWUgdGhpcyBiZWhhdmlvci5cbiAgICAgICAgICAgIC8vIE9ubHkgZm9jdXMgdGhlIGJ1dHRvbiBpZiBhIHNwbGl0YnV0dG9uIG1lbnUgaXMgbm90IG9wZW5cbiAgICAgICAgICAgIGlmIChfdGhpcy5zdGF0ZS5tZW51SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgVG91Y2hJZGxlRGVsYXkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgdXNlciBoaXRzIGEgdmFsaWQga2V5Ym9hcmQga2V5IHRvIG9wZW4gdGhlIG1lbnVcbiAgICAgKiBAcGFyYW0gZXYgLSB0aGUga2V5Ym9hcmQgZXZlbnRcbiAgICAgKiBAcmV0dXJucyBUcnVlIGlmIHVzZXIgY2xpY2tzIG9uIGN1c3RvbSB0cmlnZ2VyIGtleSBpZiBlbmFibGVkIG9yIGFsdCArIGRvd24gYXJyb3cgaWYgbm90LiBGYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgQmFzZUJ1dHRvbi5wcm90b3R5cGUuX2lzVmFsaWRNZW51T3BlbktleSA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5tZW51VHJpZ2dlcktleUNvZGUpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgcmV0dXJuIGV2LndoaWNoID09PSB0aGlzLnByb3BzLm1lbnVUcmlnZ2VyS2V5Q29kZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BzLm1lbnVQcm9wcykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gZXYud2hpY2ggPT09IEtleUNvZGVzLmRvd24gJiYgKGV2LmFsdEtleSB8fCBldi5tZXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOb3RlOiBXaGVuIGVudGVyIGlzIHByZXNzZWQsIHdlIHdpbGwgbGV0IHRoZSBldmVudCBjb250aW51ZSB0byBwcm9wYWdhdGVcbiAgICAgICAgLy8gdG8gdHJpZ2dlciB0aGUgb25DbGljayBldmVudCBvbiB0aGUgYnV0dG9uXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEJhc2VCdXR0b24uZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBiYXNlQ2xhc3NOYW1lOiAnbXMtQnV0dG9uJyxcbiAgICAgICAgc3R5bGVzOiB7fSxcbiAgICAgICAgc3BsaXQ6IGZhbHNlLFxuICAgIH07XG4gICAgLy8gbmVlZGVkIHRvIGFjY2VzcyByZWdpc3RlcmVkUHJvdmlkZXJzIHdoZW4gbWFudWFsbHkgc2V0dGluZyBmb2N1cyB2aXNpYmlsaXR5XG4gICAgQmFzZUJ1dHRvbi5jb250ZXh0VHlwZSA9IEZvY3VzUmVjdHNDb250ZXh0O1xuICAgIHJldHVybiBCYXNlQnV0dG9uO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IEJhc2VCdXR0b24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VCdXR0b24uanMubWFwIiwiaW1wb3J0IHsgbWVtb2l6ZUZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IEhpZ2hDb250cmFzdFNlbGVjdG9yLCBnZXRGb2N1c1N0eWxlLCBoaWRkZW5Db250ZW50U3R5bGUgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbnZhciBub091dGxpbmUgPSB7XG4gICAgb3V0bGluZTogMCxcbn07XG52YXIgaWNvblN0eWxlID0gZnVuY3Rpb24gKGZvbnRTaXplKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZm9udFNpemU6IGZvbnRTaXplLFxuICAgICAgICBtYXJnaW46ICcwIDRweCcsXG4gICAgICAgIGhlaWdodDogJzE2cHgnLFxuICAgICAgICBsaW5lSGVpZ2h0OiAnMTZweCcsXG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgfTtcbn07XG4vKipcbiAqIEdldHMgdGhlIGJhc2UgYnV0dG9uIHN0eWxlcy4gTm90ZTogYmVjYXVzZSBpdCBpcyBhIGJhc2UgY2xhc3MgdG8gYmUgdXNlZCB3aXRoIHRoZSBgbWVyZ2VSdWxlc2BcbiAqIGhlbHBlciwgaXQgc2hvdWxkIGhhdmUgdmFsdWVzIGZvciBhbGwgY2xhc3MgbmFtZXMgaW4gdGhlIGludGVyZmFjZS4gVGhpcyBsZXQgYG1lcmdlUnVsZXNgIG9wdGltaXplXG4gKiBtaXhpbmcgY2xhc3MgbmFtZXMgdG9nZXRoZXIuXG4gKi9cbmV4cG9ydCB2YXIgZ2V0U3R5bGVzID0gbWVtb2l6ZUZ1bmN0aW9uKGZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgdmFyIHNlbWFudGljQ29sb3JzID0gdGhlbWUuc2VtYW50aWNDb2xvcnMsIGVmZmVjdHMgPSB0aGVtZS5lZmZlY3RzLCBmb250cyA9IHRoZW1lLmZvbnRzO1xuICAgIHZhciBib3JkZXIgPSBzZW1hbnRpY0NvbG9ycy5idXR0b25Cb3JkZXI7XG4gICAgdmFyIGRpc2FibGVkQmFja2dyb3VuZCA9IHNlbWFudGljQ29sb3JzLmRpc2FibGVkQmFja2dyb3VuZDtcbiAgICB2YXIgZGlzYWJsZWRUZXh0ID0gc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRUZXh0O1xuICAgIHZhciBidXR0b25IaWdoQ29udHJhc3RGb2N1cyA9IHtcbiAgICAgICAgbGVmdDogLTIsXG4gICAgICAgIHRvcDogLTIsXG4gICAgICAgIGJvdHRvbTogLTIsXG4gICAgICAgIHJpZ2h0OiAtMixcbiAgICAgICAgb3V0bGluZUNvbG9yOiAnQnV0dG9uVGV4dCcsXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICByb290OiBbXG4gICAgICAgICAgICBnZXRGb2N1c1N0eWxlKHRoZW1lLCB7IGluc2V0OiAxLCBoaWdoQ29udHJhc3RTdHlsZTogYnV0dG9uSGlnaENvbnRyYXN0Rm9jdXMsIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnIH0pLFxuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAnICsgYm9yZGVyLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogZWZmZWN0cy5yb3VuZGVkQ29ybmVyMixcbiAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMCAxNnB4JyxcbiAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAvLyBJRTExIHdvcmthcm91bmQgZm9yIHByZXZlbnRpbmcgc2hpZnQgb2YgY2hpbGQgZWxlbWVudHMgb2YgYSBidXR0b24gd2hlbiBhY3RpdmUuXG4gICAgICAgICAgICAgICAgICAgICc6YWN0aXZlID4gc3Bhbic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcm9vdERpc2FibGVkOiBbXG4gICAgICAgICAgICBnZXRGb2N1c1N0eWxlKHRoZW1lLCB7IGluc2V0OiAxLCBoaWdoQ29udHJhc3RTdHlsZTogYnV0dG9uSGlnaENvbnRyYXN0Rm9jdXMsIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWRCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBkaXNhYmxlZEJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgY29sb3I6IGRpc2FibGVkVGV4dCxcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJzpob3Zlcic6IG5vT3V0bGluZSxcbiAgICAgICAgICAgICAgICAgICAgJzpmb2N1cyc6IG5vT3V0bGluZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWNvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogZGlzYWJsZWRUZXh0LFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnR3JheVRleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2EpLFxuICAgICAgICB9LFxuICAgICAgICBtZW51SWNvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogZGlzYWJsZWRUZXh0LFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2IgPSB7fSxcbiAgICAgICAgICAgICAgICBfYltIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnR3JheVRleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2IpLFxuICAgICAgICB9LFxuICAgICAgICBmbGV4Q29udGFpbmVyOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIGZsZXhXcmFwOiAnbm93cmFwJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICB9LFxuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgfSxcbiAgICAgICAgdGV4dENvbnRhaW5lcjoge1xuICAgICAgICAgICAgZmxleEdyb3c6IDEsXG4gICAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICB9LFxuICAgICAgICBpY29uOiBpY29uU3R5bGUoZm9udHMubWVkaXVtUGx1cy5mb250U2l6ZSksXG4gICAgICAgIG1lbnVJY29uOiBpY29uU3R5bGUoZm9udHMuc21hbGwuZm9udFNpemUpLFxuICAgICAgICBsYWJlbDoge1xuICAgICAgICAgICAgbWFyZ2luOiAnMCA0cHgnLFxuICAgICAgICAgICAgbGluZUhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgfSxcbiAgICAgICAgc2NyZWVuUmVhZGVyVGV4dDogaGlkZGVuQ29udGVudFN0eWxlLFxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VCdXR0b24uc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBIaWdoQ29udHJhc3RTZWxlY3RvciwgY29uY2F0U3R5bGVTZXRzLCBnZXRGb2N1c1N0eWxlLCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlIH0gZnJvbSAnLi4vLi4vLi4vU3R5bGluZyc7XG5pbXBvcnQgeyBtZW1vaXplRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9VdGlsaXRpZXMnO1xuZXhwb3J0IHZhciBnZXRTdHlsZXMgPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKHRoZW1lLCBjdXN0b21TdHlsZXMpIHtcbiAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbSwgX287XG4gICAgdmFyIGVmZmVjdHMgPSB0aGVtZS5lZmZlY3RzLCBwYWxldHRlID0gdGhlbWUucGFsZXR0ZSwgc2VtYW50aWNDb2xvcnMgPSB0aGVtZS5zZW1hbnRpY0NvbG9ycztcbiAgICB2YXIgYnV0dG9uSGlnaENvbnRyYXN0Rm9jdXMgPSB7XG4gICAgICAgIGxlZnQ6IC0yLFxuICAgICAgICB0b3A6IC0yLFxuICAgICAgICBib3R0b206IC0yLFxuICAgICAgICByaWdodDogLTIsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIH07XG4gICAgdmFyIHNwbGl0QnV0dG9uRGl2aWRlckJhc2VTdHlsZXMgPSB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcmlnaHQ6IDMxLFxuICAgICAgICB0b3A6IDgsXG4gICAgICAgIGJvdHRvbTogOCxcbiAgICB9O1xuICAgIHZhciBzcGxpdEJ1dHRvblN0eWxlcyA9IHtcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXI6IFtcbiAgICAgICAgICAgIGdldEZvY3VzU3R5bGUodGhlbWUsIHsgaGlnaENvbnRyYXN0U3R5bGU6IGJ1dHRvbkhpZ2hDb250cmFzdEZvY3VzLCBpbnNldDogMiwgcG9pbnRlckV2ZW50czogJ25vbmUnIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICcubXMtQnV0dG9uLS1kZWZhdWx0Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleEdyb3c6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJy5tcy1CdXR0b24tLXByaW1hcnknOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJUb3BSaWdodFJhZGl1czogJzAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleEdyb3c6ICcxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9hID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0gX19hc3NpZ24oeyBjb2xvcjogJ1dpbmRvd1RleHQnLCBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3cnLCBib3JkZXI6ICcxcHggc29saWQgV2luZG93VGV4dCcsIGJvcmRlclJpZ2h0V2lkdGg6ICcwJyB9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hWyc6aG92ZXInXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYVsnOmFjdGl2ZSddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJy5tcy1CdXR0b24tLXByaW1hcnkgKyAubXMtQnV0dG9uJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfYiA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIFdpbmRvd1RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJMZWZ0V2lkdGg6ICcwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXJIb3ZlcmVkOiB7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnLm1zLUJ1dHRvbi0tcHJpbWFyeSc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2MgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ1dpbmRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnSGlnaGxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLm1zLUJ1dHRvbi5pcy1kaXNhYmxlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmJ1dHRvblRleHREaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2QgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ0dyYXlUZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ0dyYXlUZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3cnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXJDaGVja2VkOiB7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnLm1zLUJ1dHRvbi0tcHJpbWFyeSc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2UgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9lW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgY29sb3I6ICdXaW5kb3cnLCBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3dUZXh0JyB9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2UpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbkNvbnRhaW5lckNoZWNrZWRIb3ZlcmVkOiB7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnLm1zLUJ1dHRvbi0tcHJpbWFyeSc6IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2YgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9mW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgY29sb3I6ICdXaW5kb3cnLCBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3dUZXh0JyB9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2YpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbkNvbnRhaW5lckZvY3VzZWQ6IHtcbiAgICAgICAgICAgIG91dGxpbmU6ICdub25lIWltcG9ydGFudCcsXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uTWVudUJ1dHRvbjogKF9nID0ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDYsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICAgICAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiBlZmZlY3RzLnJvdW5kZWRDb3JuZXIyLFxuICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiBlZmZlY3RzLnJvdW5kZWRDb3JuZXIyLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KHBhbGV0dGUubmV1dHJhbFNlY29uZGFyeUFsdCksXG4gICAgICAgICAgICAgICAgYm9yZGVyTGVmdDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIG91dGxpbmU6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogMzIsXG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogLTEsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9nW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAnLm1zLUJ1dHRvbi1tZW51SWNvbic6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdXaW5kb3dUZXh0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9nKSxcbiAgICAgICAgc3BsaXRCdXR0b25EaXZpZGVyOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgc3BsaXRCdXR0b25EaXZpZGVyQmFzZVN0eWxlcyksIHsgc2VsZWN0b3JzOiAoX2ggPSB7fSxcbiAgICAgICAgICAgICAgICBfaFtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ1dpbmRvd1RleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2gpIH0pLFxuICAgICAgICBzcGxpdEJ1dHRvbkRpdmlkZXJEaXNhYmxlZDogX19hc3NpZ24oX19hc3NpZ24oe30sIHNwbGl0QnV0dG9uRGl2aWRlckJhc2VTdHlsZXMpLCB7IHNlbGVjdG9yczogKF9qID0ge30sXG4gICAgICAgICAgICAgICAgX2pbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfaikgfSksXG4gICAgICAgIHNwbGl0QnV0dG9uTWVudUJ1dHRvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9rID0ge1xuICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICcubXMtQnV0dG9uLS1wcmltYXJ5Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2wgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbFtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnR3JheVRleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ0dyYXlUZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnV2luZG93JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJy5tcy1CdXR0b24tbWVudUljb24nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfbSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbSksXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9rW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCBHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ1dpbmRvdycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfayksXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uRmxleENvbnRhaW5lcjoge1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICBmbGV4V3JhcDogJ25vd3JhcCcsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXJEaXNhYmxlZDoge1xuICAgICAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfbyA9IHt9LFxuICAgICAgICAgICAgICAgIF9vW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgY29sb3I6ICdHcmF5VGV4dCcsIGJvcmRlckNvbG9yOiAnR3JheVRleHQnLCBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3cnIH0sIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUoKSksXG4gICAgICAgICAgICAgICAgX28pLFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbk1lbnVGb2N1c2VkOiBfX2Fzc2lnbih7fSwgZ2V0Rm9jdXNTdHlsZSh0aGVtZSwgeyBoaWdoQ29udHJhc3RTdHlsZTogYnV0dG9uSGlnaENvbnRyYXN0Rm9jdXMsIGluc2V0OiAyIH0pKSxcbiAgICB9O1xuICAgIHJldHVybiBjb25jYXRTdHlsZVNldHMoc3BsaXRCdXR0b25TdHlsZXMsIGN1c3RvbVN0eWxlcyk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwbGl0QnV0dG9uLnN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgSGlnaENvbnRyYXN0U2VsZWN0b3IsIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IElzRm9jdXNWaXNpYmxlQ2xhc3NOYW1lIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbnZhciBzcGxpdEJ1dHRvbkRpdmlkZXJCYXNlU3R5bGVzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcmlnaHQ6IDMxLFxuICAgICAgICB0b3A6IDgsXG4gICAgICAgIGJvdHRvbTogOCxcbiAgICB9O1xufTtcbmV4cG9ydCBmdW5jdGlvbiBzdGFuZGFyZFN0eWxlcyh0aGVtZSkge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgdmFyIHMgPSB0aGVtZS5zZW1hbnRpY0NvbG9ycywgcCA9IHRoZW1lLnBhbGV0dGU7XG4gICAgdmFyIGJ1dHRvbkJhY2tncm91bmQgPSBzLmJ1dHRvbkJhY2tncm91bmQ7XG4gICAgdmFyIGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkID0gcy5idXR0b25CYWNrZ3JvdW5kUHJlc3NlZDtcbiAgICB2YXIgYnV0dG9uQmFja2dyb3VuZEhvdmVyZWQgPSBzLmJ1dHRvbkJhY2tncm91bmRIb3ZlcmVkO1xuICAgIHZhciBidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWQgPSBzLmJ1dHRvbkJhY2tncm91bmREaXNhYmxlZDtcbiAgICB2YXIgYnV0dG9uVGV4dCA9IHMuYnV0dG9uVGV4dDtcbiAgICB2YXIgYnV0dG9uVGV4dEhvdmVyZWQgPSBzLmJ1dHRvblRleHRIb3ZlcmVkO1xuICAgIHZhciBidXR0b25UZXh0RGlzYWJsZWQgPSBzLmJ1dHRvblRleHREaXNhYmxlZDtcbiAgICB2YXIgYnV0dG9uVGV4dENoZWNrZWQgPSBzLmJ1dHRvblRleHRDaGVja2VkO1xuICAgIHZhciBidXR0b25UZXh0Q2hlY2tlZEhvdmVyZWQgPSBzLmJ1dHRvblRleHRDaGVja2VkSG92ZXJlZDtcbiAgICByZXR1cm4ge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJ1dHRvbkJhY2tncm91bmQsXG4gICAgICAgICAgICBjb2xvcjogYnV0dG9uVGV4dCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdEhvdmVyZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYnV0dG9uQmFja2dyb3VuZEhvdmVyZWQsXG4gICAgICAgICAgICBjb2xvcjogYnV0dG9uVGV4dEhvdmVyZWQsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfYSA9IHt9LFxuICAgICAgICAgICAgICAgIF9hW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ0hpZ2hsaWdodCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RQcmVzc2VkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkLFxuICAgICAgICAgICAgY29sb3I6IGJ1dHRvblRleHRDaGVja2VkLFxuICAgICAgICB9LFxuICAgICAgICByb290RXhwYW5kZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYnV0dG9uQmFja2dyb3VuZFByZXNzZWQsXG4gICAgICAgICAgICBjb2xvcjogYnV0dG9uVGV4dENoZWNrZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RDaGVja2VkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJ1dHRvbkJhY2tncm91bmRQcmVzc2VkLFxuICAgICAgICAgICAgY29sb3I6IGJ1dHRvblRleHRDaGVja2VkLFxuICAgICAgICB9LFxuICAgICAgICByb290Q2hlY2tlZEhvdmVyZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYnV0dG9uQmFja2dyb3VuZFByZXNzZWQsXG4gICAgICAgICAgICBjb2xvcjogYnV0dG9uVGV4dENoZWNrZWRIb3ZlcmVkLFxuICAgICAgICB9LFxuICAgICAgICByb290RGlzYWJsZWQ6IHtcbiAgICAgICAgICAgIGNvbG9yOiBidXR0b25UZXh0RGlzYWJsZWQsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJ1dHRvbkJhY2tncm91bmREaXNhYmxlZCxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9iID0ge30sXG4gICAgICAgICAgICAgICAgX2JbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ0dyYXlUZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ1dpbmRvdycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFNwbGl0IGJ1dHRvbiBzdHlsZXNcbiAgICAgICAgc3BsaXRCdXR0b25Db250YWluZXI6IHtcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9jID0ge30sXG4gICAgICAgICAgICAgICAgX2NbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9jKSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51QnV0dG9uOiB7XG4gICAgICAgICAgICBjb2xvcjogcC53aGl0ZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsTGlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9kID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBfZFtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51QnV0dG9uRGlzYWJsZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5idXR0b25CYWNrZ3JvdW5kRGlzYWJsZWQsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMuYnV0dG9uQmFja2dyb3VuZERpc2FibGVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbkRpdmlkZXI6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBzcGxpdEJ1dHRvbkRpdmlkZXJCYXNlU3R5bGVzKCkpLCB7IGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsVGVydGlhcnlBbHQsIHNlbGVjdG9yczogKF9lID0ge30sXG4gICAgICAgICAgICAgICAgX2VbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3dUZXh0JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9lKSB9KSxcbiAgICAgICAgc3BsaXRCdXR0b25EaXZpZGVyRGlzYWJsZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsVGVydGlhcnlBbHQsXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uTWVudUJ1dHRvbkNoZWNrZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsUXVhdGVybmFyeUFsdCxcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsUXVhdGVybmFyeUFsdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51QnV0dG9uRXhwYW5kZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsUXVhdGVybmFyeUFsdCxcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcC5uZXV0cmFsUXVhdGVybmFyeUFsdCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51SWNvbjoge1xuICAgICAgICAgICAgY29sb3I6IHMuYnV0dG9uVGV4dCxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51SWNvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogcy5idXR0b25UZXh0RGlzYWJsZWQsXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwcmltYXJ5U3R5bGVzKHRoZW1lKSB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2o7XG4gICAgdmFyIHAgPSB0aGVtZS5wYWxldHRlLCBzID0gdGhlbWUuc2VtYW50aWNDb2xvcnM7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQocy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZCksXG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dCxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9hID0ge30sXG4gICAgICAgICAgICAgICAgX2FbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0gX19hc3NpZ24oeyBjb2xvcjogJ1dpbmRvdycsIGJhY2tncm91bmRDb2xvcjogJ1dpbmRvd1RleHQnLCBib3JkZXJDb2xvcjogJ1dpbmRvd1RleHQnIH0sIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUoKSksXG4gICAgICAgICAgICAgICAgX2FbXCIuXCIuY29uY2F0KElzRm9jdXNWaXNpYmxlQ2xhc3NOYW1lLCBcIiAmOmZvY3VzXCIpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnOmFmdGVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiBwLndoaXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9hKSxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdEhvdmVyZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZEhvdmVyZWQsXG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIFwiLmNvbmNhdChzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kSG92ZXJlZCksXG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dEhvdmVyZWQsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfYiA9IHt9LFxuICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdXaW5kb3cnLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ0hpZ2hsaWdodCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RQcmVzc2VkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmRQcmVzc2VkLFxuICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQocy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZFByZXNzZWQpLFxuICAgICAgICAgICAgY29sb3I6IHMucHJpbWFyeUJ1dHRvblRleHRQcmVzc2VkLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2MgPSB7fSxcbiAgICAgICAgICAgICAgICBfY1tIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSBfX2Fzc2lnbih7IGNvbG9yOiAnV2luZG93JywgYmFja2dyb3VuZENvbG9yOiAnV2luZG93VGV4dCcsIGJvcmRlckNvbG9yOiAnV2luZG93VGV4dCcgfSwgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSgpKSxcbiAgICAgICAgICAgICAgICBfYyksXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RFeHBhbmRlZDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kUHJlc3NlZCxcbiAgICAgICAgICAgIGNvbG9yOiBzLnByaW1hcnlCdXR0b25UZXh0UHJlc3NlZCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdENoZWNrZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZFByZXNzZWQsXG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dFByZXNzZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RDaGVja2VkSG92ZXJlZDoge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kUHJlc3NlZCxcbiAgICAgICAgICAgIGNvbG9yOiBzLnByaW1hcnlCdXR0b25UZXh0UHJlc3NlZCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdERpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dERpc2FibGVkLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kRGlzYWJsZWQsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfZCA9IHt9LFxuICAgICAgICAgICAgICAgIF9kW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnR3JheVRleHQnLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdXaW5kb3cnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2QpLFxuICAgICAgICB9LFxuICAgICAgICAvLyBTcGxpdCBidXR0b24gc3R5bGVzXG4gICAgICAgIHNwbGl0QnV0dG9uQ29udGFpbmVyOiB7XG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfZSA9IHt9LFxuICAgICAgICAgICAgICAgIF9lW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfZSksXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uRGl2aWRlcjogX19hc3NpZ24oX19hc3NpZ24oe30sIHNwbGl0QnV0dG9uRGl2aWRlckJhc2VTdHlsZXMoKSksIHsgYmFja2dyb3VuZENvbG9yOiBwLndoaXRlLCBzZWxlY3RvcnM6IChfZiA9IHt9LFxuICAgICAgICAgICAgICAgIF9mW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnV2luZG93JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9mKSB9KSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51QnV0dG9uOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmQsXG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dCxcbiAgICAgICAgICAgIHNlbGVjdG9yczogKF9nID0ge30sXG4gICAgICAgICAgICAgICAgX2dbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdDYW52YXMnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2dbJzpob3ZlciddID0ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmRIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfaCA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX2hbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnSGlnaGxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfaCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfZyksXG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0QnV0dG9uTWVudUJ1dHRvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmREaXNhYmxlZCxcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZERpc2FibGVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbk1lbnVCdXR0b25DaGVja2VkOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmRQcmVzc2VkLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kUHJlc3NlZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51QnV0dG9uRXhwYW5kZWQ6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcy5wcmltYXJ5QnV0dG9uQmFja2dyb3VuZFByZXNzZWQsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHMucHJpbWFyeUJ1dHRvbkJhY2tncm91bmRQcmVzc2VkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzcGxpdEJ1dHRvbk1lbnVJY29uOiB7XG4gICAgICAgICAgICBjb2xvcjogcy5wcmltYXJ5QnV0dG9uVGV4dCxcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRCdXR0b25NZW51SWNvbkRpc2FibGVkOiB7XG4gICAgICAgICAgICBjb2xvcjogcC5uZXV0cmFsVGVydGlhcnksXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfaiA9IHt9LFxuICAgICAgICAgICAgICAgIF9qW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfaiksXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJ1dHRvblRoZW1lcy5qcy5tYXAiLCJpbXBvcnQgeyBjb25jYXRTdHlsZVNldHMsIEZvbnRXZWlnaHRzIH0gZnJvbSAnLi4vLi4vLi4vU3R5bGluZyc7XG5pbXBvcnQgeyBtZW1vaXplRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIGFzIGdldEJhc2VCdXR0b25TdHlsZXMgfSBmcm9tICcuLi9CYXNlQnV0dG9uLnN0eWxlcyc7XG5pbXBvcnQgeyBnZXRTdHlsZXMgYXMgZ2V0U3BsaXRCdXR0b25TdHlsZXMgfSBmcm9tICcuLi9TcGxpdEJ1dHRvbi9TcGxpdEJ1dHRvbi5zdHlsZXMnO1xuaW1wb3J0IHsgcHJpbWFyeVN0eWxlcywgc3RhbmRhcmRTdHlsZXMgfSBmcm9tICcuLi9CdXR0b25UaGVtZXMnO1xudmFyIERFRkFVTFRfQlVUVE9OX0hFSUdIVCA9ICczMnB4JztcbnZhciBERUZBVUxUX0JVVFRPTl9NSU5fV0lEVEggPSAnODBweCc7XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAodGhlbWUsIGN1c3RvbVN0eWxlcywgcHJpbWFyeSkge1xuICAgIHZhciBiYXNlQnV0dG9uU3R5bGVzID0gZ2V0QmFzZUJ1dHRvblN0eWxlcyh0aGVtZSk7XG4gICAgdmFyIHNwbGl0QnV0dG9uU3R5bGVzID0gZ2V0U3BsaXRCdXR0b25TdHlsZXModGhlbWUpO1xuICAgIHZhciBkZWZhdWx0QnV0dG9uU3R5bGVzID0ge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgICBtaW5XaWR0aDogREVGQVVMVF9CVVRUT05fTUlOX1dJRFRILFxuICAgICAgICAgICAgaGVpZ2h0OiBERUZBVUxUX0JVVFRPTl9IRUlHSFQsXG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5zZW1pYm9sZCxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBjb25jYXRTdHlsZVNldHMoYmFzZUJ1dHRvblN0eWxlcywgZGVmYXVsdEJ1dHRvblN0eWxlcywgcHJpbWFyeSA/IHByaW1hcnlTdHlsZXModGhlbWUpIDogc3RhbmRhcmRTdHlsZXModGhlbWUpLCBzcGxpdEJ1dHRvblN0eWxlcywgY3VzdG9tU3R5bGVzKTtcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGVmYXVsdEJ1dHRvbi5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fZGVjb3JhdGUsIF9fZXh0ZW5kcyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQmFzZUJ1dHRvbiB9IGZyb20gJy4uL0Jhc2VCdXR0b24nO1xuaW1wb3J0IHsgY3VzdG9taXphYmxlLCBudWxsUmVuZGVyIH0gZnJvbSAnLi4vLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vRGVmYXVsdEJ1dHRvbi5zdHlsZXMnO1xuLyoqXG4gKiB7QGRvY0NhdGVnb3J5IEJ1dHRvbn1cbiAqL1xudmFyIERlZmF1bHRCdXR0b24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERlZmF1bHRCdXR0b24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRGVmYXVsdEJ1dHRvbigpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgIH1cbiAgICBEZWZhdWx0QnV0dG9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIF9iID0gX2EucHJpbWFyeSwgcHJpbWFyeSA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBzdHlsZXMgPSBfYS5zdHlsZXMsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChCYXNlQnV0dG9uLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyB2YXJpYW50Q2xhc3NOYW1lOiBwcmltYXJ5ID8gJ21zLUJ1dHRvbi0tcHJpbWFyeScgOiAnbXMtQnV0dG9uLS1kZWZhdWx0Jywgc3R5bGVzOiBnZXRTdHlsZXModGhlbWUsIHN0eWxlcywgcHJpbWFyeSksIG9uUmVuZGVyRGVzY3JpcHRpb246IG51bGxSZW5kZXIgfSkpKTtcbiAgICB9O1xuICAgIERlZmF1bHRCdXR0b24gPSBfX2RlY29yYXRlKFtcbiAgICAgICAgY3VzdG9taXphYmxlKCdEZWZhdWx0QnV0dG9uJywgWyd0aGVtZScsICdzdHlsZXMnXSwgdHJ1ZSlcbiAgICBdLCBEZWZhdWx0QnV0dG9uKTtcbiAgICByZXR1cm4gRGVmYXVsdEJ1dHRvbjtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgeyBEZWZhdWx0QnV0dG9uIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1EZWZhdWx0QnV0dG9uLmpzLm1hcCIsImltcG9ydCB7IGNvbmNhdFN0eWxlU2V0cywgSGlnaENvbnRyYXN0U2VsZWN0b3IgfSBmcm9tICcuLi8uLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJy4uLy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBnZXRTdHlsZXMgYXMgZ2V0QmFzZUJ1dHRvblN0eWxlcyB9IGZyb20gJy4uL0Jhc2VCdXR0b24uc3R5bGVzJztcbmltcG9ydCB7IGdldFN0eWxlcyBhcyBnZXRTcGxpdEJ1dHRvblN0eWxlcyB9IGZyb20gJy4uL1NwbGl0QnV0dG9uL1NwbGl0QnV0dG9uLnN0eWxlcyc7XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAodGhlbWUsIGN1c3RvbVN0eWxlcykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYmFzZUJ1dHRvblN0eWxlcyA9IGdldEJhc2VCdXR0b25TdHlsZXModGhlbWUpO1xuICAgIHZhciBzcGxpdEJ1dHRvblN0eWxlcyA9IGdldFNwbGl0QnV0dG9uU3R5bGVzKHRoZW1lKTtcbiAgICB2YXIgcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUsIHNlbWFudGljQ29sb3JzID0gdGhlbWUuc2VtYW50aWNDb2xvcnM7XG4gICAgdmFyIGljb25CdXR0b25TdHlsZXMgPSB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICcwIDRweCcsXG4gICAgICAgICAgICB3aWR0aDogJzMycHgnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMzJweCcsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5saW5rLFxuICAgICAgICB9LFxuICAgICAgICByb290SG92ZXJlZDoge1xuICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUudGhlbWVEYXJrQWx0LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLm5ldXRyYWxMaWdodGVyLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnSGlnaGxpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2EpLFxuICAgICAgICB9LFxuICAgICAgICByb290SGFzTWVudToge1xuICAgICAgICAgICAgd2lkdGg6ICdhdXRvJyxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdFByZXNzZWQ6IHtcbiAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLnRoZW1lRGFyayxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFsZXR0ZS5uZXV0cmFsTGlnaHQsXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RFeHBhbmRlZDoge1xuICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUudGhlbWVEYXJrLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLm5ldXRyYWxMaWdodCxcbiAgICAgICAgfSxcbiAgICAgICAgcm9vdENoZWNrZWQ6IHtcbiAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLnRoZW1lRGFyayxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogcGFsZXR0ZS5uZXV0cmFsTGlnaHQsXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RDaGVja2VkSG92ZXJlZDoge1xuICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUudGhlbWVEYXJrLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLm5ldXRyYWxRdWF0ZXJuYXJ5QWx0LFxuICAgICAgICB9LFxuICAgICAgICByb290RGlzYWJsZWQ6IHtcbiAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLm5ldXRyYWxUZXJ0aWFyeUFsdCxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBjb25jYXRTdHlsZVNldHMoYmFzZUJ1dHRvblN0eWxlcywgaWNvbkJ1dHRvblN0eWxlcywgc3BsaXRCdXR0b25TdHlsZXMsIGN1c3RvbVN0eWxlcyk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUljb25CdXR0b24uc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2RlY29yYXRlLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJhc2VCdXR0b24gfSBmcm9tICcuLi9CYXNlQnV0dG9uJztcbmltcG9ydCB7IGN1c3RvbWl6YWJsZSwgbnVsbFJlbmRlciB9IGZyb20gJy4uLy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBnZXRTdHlsZXMgfSBmcm9tICcuL0ljb25CdXR0b24uc3R5bGVzJztcbi8qKlxuICoge0Bkb2NDYXRlZ29yeSBCdXR0b259XG4gKi9cbnZhciBJY29uQnV0dG9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJY29uQnV0dG9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEljb25CdXR0b24oKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgSWNvbkJ1dHRvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBzdHlsZXMgPSBfYS5zdHlsZXMsIHRoZW1lID0gX2EudGhlbWU7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChCYXNlQnV0dG9uLCBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wcywgeyB2YXJpYW50Q2xhc3NOYW1lOiBcIm1zLUJ1dHRvbi0taWNvblwiLCBzdHlsZXM6IGdldFN0eWxlcyh0aGVtZSwgc3R5bGVzKSwgb25SZW5kZXJUZXh0OiBudWxsUmVuZGVyLCBvblJlbmRlckRlc2NyaXB0aW9uOiBudWxsUmVuZGVyIH0pKSk7XG4gICAgfTtcbiAgICBJY29uQnV0dG9uID0gX19kZWNvcmF0ZShbXG4gICAgICAgIGN1c3RvbWl6YWJsZSgnSWNvbkJ1dHRvbicsIFsndGhlbWUnLCAnc3R5bGVzJ10sIHRydWUpXG4gICAgXSwgSWNvbkJ1dHRvbik7XG4gICAgcmV0dXJuIEljb25CdXR0b247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0IHsgSWNvbkJ1dHRvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SWNvbkJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19kZWNvcmF0ZSwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21pemFibGUsIG51bGxSZW5kZXIgfSBmcm9tICcuLi8uLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgRGVmYXVsdEJ1dHRvbiB9IGZyb20gJy4uL0RlZmF1bHRCdXR0b24vRGVmYXVsdEJ1dHRvbic7XG4vKipcbiAqIHtAZG9jQ2F0ZWdvcnkgQnV0dG9ufVxuICovXG52YXIgUHJpbWFyeUJ1dHRvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJpbWFyeUJ1dHRvbiwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBQcmltYXJ5QnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIFByaW1hcnlCdXR0b24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGVmYXVsdEJ1dHRvbiwgX19hc3NpZ24oe30sIHRoaXMucHJvcHMsIHsgcHJpbWFyeTogdHJ1ZSwgb25SZW5kZXJEZXNjcmlwdGlvbjogbnVsbFJlbmRlciB9KSk7XG4gICAgfTtcbiAgICBQcmltYXJ5QnV0dG9uID0gX19kZWNvcmF0ZShbXG4gICAgICAgIGN1c3RvbWl6YWJsZSgnUHJpbWFyeUJ1dHRvbicsIFsndGhlbWUnLCAnc3R5bGVzJ10sIHRydWUpXG4gICAgXSwgUHJpbWFyeUJ1dHRvbik7XG4gICAgcmV0dXJuIFByaW1hcnlCdXR0b247XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0IHsgUHJpbWFyeUJ1dHRvbiB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UHJpbWFyeUJ1dHRvbi5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBkaXZQcm9wZXJ0aWVzLCBnZXROYXRpdmVQcm9wcyB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBjbGFzc05hbWVzRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oe1xuICAgIC8vIExhYmVsIGlzIHVzZWQgYSBsb3QgYnkgb3RoZXIgY29tcG9uZW50cy5cbiAgICAvLyBJdCdzIGxpa2VseSB0byBzZWUgZXhwZWN0ZWQgY2FzZXMgd2hpY2ggcGFzcyBkaWZmZXJlbnQgY2xhc3NOYW1lIHRvIHRoZSBMYWJlbC5cbiAgICAvLyBUaGVyZWZvcmUgc2V0dGluZyBhIGxhcmdlciBjYWNoZSBzaXplLlxuICAgIGNhY2hlU2l6ZTogMTAwLFxufSk7XG52YXIgTGFiZWxCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMYWJlbEJhc2UsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGFiZWxCYXNlKCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgfVxuICAgIExhYmVsQmFzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBfYiA9IF9hLmFzLCBSb290VHlwZSA9IF9iID09PSB2b2lkIDAgPyAnbGFiZWwnIDogX2IsIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgZGlzYWJsZWQgPSBfYS5kaXNhYmxlZCwgc3R5bGVzID0gX2Euc3R5bGVzLCByZXF1aXJlZCA9IF9hLnJlcXVpcmVkLCB0aGVtZSA9IF9hLnRoZW1lO1xuICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSb290VHlwZSwgX19hc3NpZ24oe30sIGdldE5hdGl2ZVByb3BzKHRoaXMucHJvcHMsIGRpdlByb3BlcnRpZXMpLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290IH0pLCBjaGlsZHJlbikpO1xuICAgIH07XG4gICAgcmV0dXJuIExhYmVsQmFzZTtcbn0oUmVhY3QuQ29tcG9uZW50KSk7XG5leHBvcnQgeyBMYWJlbEJhc2UgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxhYmVsLmJhc2UuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEhpZ2hDb250cmFzdFNlbGVjdG9yLCBGb250V2VpZ2h0cywgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSB9IGZyb20gJy4uLy4uL1N0eWxpbmcnO1xuZXhwb3J0IHZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIHRoZW1lID0gcHJvcHMudGhlbWUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgZGlzYWJsZWQgPSBwcm9wcy5kaXNhYmxlZCwgcmVxdWlyZWQgPSBwcm9wcy5yZXF1aXJlZDtcbiAgICB2YXIgc2VtYW50aWNDb2xvcnMgPSB0aGVtZS5zZW1hbnRpY0NvbG9ycztcbiAgICAvLyBUb2tlbnNcbiAgICB2YXIgbGFiZWxGb250V2VpZ2h0ID0gRm9udFdlaWdodHMuc2VtaWJvbGQ7XG4gICAgdmFyIGxhYmVsQ29sb3IgPSBzZW1hbnRpY0NvbG9ycy5ib2R5VGV4dDtcbiAgICB2YXIgbGFiZWxEaXNhYmxlZENvbG9yID0gc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCb2R5VGV4dDtcbiAgICB2YXIgbGFiZWxSZXF1aXJlZFN0YXJDb2xvciA9IHNlbWFudGljQ29sb3JzLmVycm9yVGV4dDtcbiAgICByZXR1cm4ge1xuICAgICAgICByb290OiBbXG4gICAgICAgICAgICAnbXMtTGFiZWwnLFxuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IGxhYmVsRm9udFdlaWdodCxcbiAgICAgICAgICAgICAgICBjb2xvcjogbGFiZWxDb2xvcixcbiAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnNXB4IDAnLFxuICAgICAgICAgICAgICAgIHdvcmRXcmFwOiAnYnJlYWstd29yZCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBsYWJlbERpc2FibGVkQ29sb3IsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2FbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0gX19hc3NpZ24oeyBjb2xvcjogJ0dyYXlUZXh0JyB9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVxdWlyZWQgJiYge1xuICAgICAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAnOjphZnRlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiJyAqJ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGxhYmVsUmVxdWlyZWRTdGFyQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDEyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TGFiZWwuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IHN0eWxlZCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5pbXBvcnQgeyBMYWJlbEJhc2UgfSBmcm9tICcuL0xhYmVsLmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9MYWJlbC5zdHlsZXMnO1xuZXhwb3J0IHZhciBMYWJlbCA9IHN0eWxlZChMYWJlbEJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdMYWJlbCcsXG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUxhYmVsLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExhYmVsIH0gZnJvbSAnLi4vLi4vTGFiZWwnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL0ljb24nO1xuaW1wb3J0IHsgQXN5bmMsIGNsYXNzTmFtZXNGdW5jdGlvbiwgRGVsYXllZFJlbmRlciwgZ2V0SWQsIGdldE5hdGl2ZVByb3BzLCBnZXRXaW5kb3csIGluaXRpYWxpemVDb21wb25lbnRSZWYsIGlucHV0UHJvcGVydGllcywgaXNDb250cm9sbGVkLCBpc0lFMTEsIHRleHRBcmVhUHJvcGVydGllcywgd2Fybiwgd2FybkNvbnRyb2xsZWRVc2FnZSwgd2Fybk11dHVhbGx5RXhjbHVzaXZlLCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbigpO1xudmFyIERFRkFVTFRfU1RBVEVfVkFMVUUgPSAnJztcbnZhciBDT01QT05FTlRfTkFNRSA9ICdUZXh0RmllbGQnO1xudmFyIFJFVkVBTF9JQ09OX05BTUUgPSAnUmVkRXllJztcbnZhciBISURFX0lDT05fTkFNRSA9ICdIaWRlJztcbnZhciBUZXh0RmllbGRCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0RmllbGRCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHRGaWVsZEJhc2UocHJvcHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgcHJvcHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLl90ZXh0RWxlbWVudCA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgICAgICBfdGhpcy5fb25Gb2N1cyA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKF90aGlzLnByb3BzLm9uRm9jdXMpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkZvY3VzKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgaXNGb2N1c2VkOiB0cnVlIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMudmFsaWRhdGVPbkZvY3VzSW4pIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ZhbGlkYXRlKF90aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uQmx1ciA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgaWYgKF90aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQmx1cihldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGlzRm9jdXNlZDogZmFsc2UgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5wcm9wcy52YWxpZGF0ZU9uRm9jdXNPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX3ZhbGlkYXRlKF90aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmVuZGVyTGFiZWwgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciBsYWJlbCA9IHByb3BzLmxhYmVsLCByZXF1aXJlZCA9IHByb3BzLnJlcXVpcmVkO1xuICAgICAgICAgICAgLy8gSVByb2Nlc3NlZFN0eWxlU2V0IGRlZmluaXRpb24gcmVxdWlyZXMgY2FzdGluZyBmb3Igd2hhdCBMYWJlbCBleHBlY3RzIGFzIGl0cyBzdHlsZXMgcHJvcFxuICAgICAgICAgICAgdmFyIGxhYmVsU3R5bGVzID0gX3RoaXMuX2NsYXNzTmFtZXMuc3ViQ29tcG9uZW50U3R5bGVzXG4gICAgICAgICAgICAgICAgPyBfdGhpcy5fY2xhc3NOYW1lcy5zdWJDb21wb25lbnRTdHlsZXMubGFiZWxcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChMYWJlbCwgeyByZXF1aXJlZDogcmVxdWlyZWQsIGh0bWxGb3I6IF90aGlzLl9pZCwgc3R5bGVzOiBsYWJlbFN0eWxlcywgZGlzYWJsZWQ6IHByb3BzLmRpc2FibGVkLCBpZDogX3RoaXMuX2xhYmVsSWQgfSwgcHJvcHMubGFiZWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25SZW5kZXJEZXNjcmlwdGlvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICAgICAgaWYgKHByb3BzLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBfdGhpcy5fY2xhc3NOYW1lcy5kZXNjcmlwdGlvbiB9LCBwcm9wcy5kZXNjcmlwdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uUmV2ZWFsQnV0dG9uQ2xpY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHsgcmV0dXJuICh7IGlzUmV2ZWFsaW5nUGFzc3dvcmQ6ICFwcmV2U3RhdGUuaXNSZXZlYWxpbmdQYXNzd29yZCB9KTsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLl9vbklucHV0Q2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAvLyBQcmV2aW91c2x5LCB3ZSBuZWVkZWQgdG8gY2FsbCBib3RoIG9uSW5wdXQgYW5kIG9uQ2hhbmdlIGR1ZSB0byBzb21lIHdlaXJkIElFL1JlYWN0IGlzc3VlcyxcbiAgICAgICAgICAgIC8vIHdoaWNoIGhhdmUgKnByb2JhYmx5KiBiZWVuIGZpeGVkIG5vdzpcbiAgICAgICAgICAgIC8vIC0gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9mbHVlbnR1aS9pc3N1ZXMvNzQ0IChsaWtlbHkgZml4ZWQpXG4gICAgICAgICAgICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvZmx1ZW50dWkvaXNzdWVzLzgyNCAoY29uZmlybWVkIGZpeGVkKVxuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIC8vIFRPRE8gKEZhYnJpYyA4PykgLSBTd2l0Y2ggdG8gY2FsbGluZyBvbmx5IG9uQ2hhbmdlLiBUaGlzIHN3aXRjaCBpcyBwcmV0dHkgZGlzcnVwdGl2ZSBmb3JcbiAgICAgICAgICAgIC8vIHRlc3RzIChvdXJzIGFuZCBtYXliZSBjb25zdW1lcnMnIHRvbyksIHNvIGl0IHNlZW1lZCBiZXN0IHRvIGRvIHRoZSBzd2l0Y2ggaW4gYSBtYWpvciBidW1wLlxuICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlO1xuICAgICAgICAgICAgLy8gSWdub3JlIHRoaXMgZXZlbnQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6XG4gICAgICAgICAgICAvLyAtIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQgKGluIGNhc2Ugb25lIG9mIHRoZSBJRSBidWdzIGNvbWVzIGJhY2spXG4gICAgICAgICAgICAvLyAtIGl0J3MgYSBkdXBsaWNhdGUgZXZlbnQgKGltcG9ydGFudCBzaW5jZSBvbklucHV0Q2hhbmdlIGlzIGNhbGxlZCB0d2ljZSBwZXIgYWN0dWFsIHVzZXIgZXZlbnQpXG4gICAgICAgICAgICAvLyAtIGl0J3MgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIHZhbHVlXG4gICAgICAgICAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IF9nZXRWYWx1ZShfdGhpcy5wcm9wcywgX3RoaXMuc3RhdGUpIHx8ICcnO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IF90aGlzLl9sYXN0Q2hhbmdlVmFsdWUgfHwgdmFsdWUgPT09IHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5fbGFzdENoYW5nZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLl9sYXN0Q2hhbmdlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIChfYiA9IChfYSA9IF90aGlzLnByb3BzKS5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIGV2ZW50LCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIV90aGlzLl9pc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBPTkxZIGlmIHRoaXMgaXMgYW4gdW5jb250cm9sbGVkIGNvbXBvbmVudCwgdXBkYXRlIHRoZSBkaXNwbGF5ZWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgLy8gKENvbnRyb2xsZWQgY29tcG9uZW50cyBtdXN0IHVwZGF0ZSB0aGUgYHZhbHVlYCBwcm9wIGZyb20gYG9uQ2hhbmdlYC4pXG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB1bmNvbnRyb2xsZWRWYWx1ZTogdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGluaXRpYWxpemVDb21wb25lbnRSZWYoX3RoaXMpO1xuICAgICAgICBfdGhpcy5fYXN5bmMgPSBuZXcgQXN5bmMoX3RoaXMpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgd2Fybk11dHVhbGx5RXhjbHVzaXZlKENPTVBPTkVOVF9OQU1FLCBwcm9wcywge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogJ29uR2V0RXJyb3JNZXNzYWdlJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLl9mYWxsYmFja0lkID0gZ2V0SWQoQ09NUE9ORU5UX05BTUUpO1xuICAgICAgICBfdGhpcy5fZGVzY3JpcHRpb25JZCA9IGdldElkKENPTVBPTkVOVF9OQU1FICsgJ0Rlc2NyaXB0aW9uJyk7XG4gICAgICAgIF90aGlzLl9sYWJlbElkID0gZ2V0SWQoQ09NUE9ORU5UX05BTUUgKyAnTGFiZWwnKTtcbiAgICAgICAgX3RoaXMuX3ByZWZpeElkID0gZ2V0SWQoQ09NUE9ORU5UX05BTUUgKyAnUHJlZml4Jyk7XG4gICAgICAgIF90aGlzLl9zdWZmaXhJZCA9IGdldElkKENPTVBPTkVOVF9OQU1FICsgJ1N1ZmZpeCcpO1xuICAgICAgICBfdGhpcy5fd2FybkNvbnRyb2xsZWRVc2FnZSgpO1xuICAgICAgICB2YXIgX2EgPSBwcm9wcy5kZWZhdWx0VmFsdWUsIGRlZmF1bHRWYWx1ZSA9IF9hID09PSB2b2lkIDAgPyBERUZBVUxUX1NUQVRFX1ZBTFVFIDogX2E7XG4gICAgICAgIGlmICh0eXBlb2YgZGVmYXVsdFZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgLy8gVGhpcyBpc24ndCBhbGxvd2VkIHBlciB0aGUgcHJvcHMsIGJ1dCBoYXBwZW5zIGFueXdheS5cbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IFN0cmluZyhkZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgdW5jb250cm9sbGVkVmFsdWU6IF90aGlzLl9pc0NvbnRyb2xsZWQgPyB1bmRlZmluZWQgOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICBpc0ZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX2RlbGF5ZWRWYWxpZGF0ZSA9IF90aGlzLl9hc3luYy5kZWJvdW5jZShfdGhpcy5fdmFsaWRhdGUsIF90aGlzLnByb3BzLmRlZmVycmVkVmFsaWRhdGlvblRpbWUpO1xuICAgICAgICBfdGhpcy5fbGFzdFZhbGlkYXRpb24gPSAwO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0RmllbGRCYXNlLnByb3RvdHlwZSwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB0ZXh0IGZpZWxkLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX2dldFZhbHVlKHRoaXMucHJvcHMsIHRoaXMuc3RhdGUpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2FkanVzdElucHV0SGVpZ2h0KCk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnZhbGlkYXRlT25Mb2FkKSB7XG4gICAgICAgICAgICB0aGlzLl92YWxpZGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX2FzeW5jLmRpc3Bvc2UoKTtcbiAgICB9O1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlID0gZnVuY3Rpb24gKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZWxlY3Rpb246IFt0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZF0sXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiAocHJldlByb3BzLCBwcmV2U3RhdGUsIHNuYXBzaG90KSB7XG4gICAgICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICAgIHZhciBfYSA9IChzbmFwc2hvdCB8fCB7fSkuc2VsZWN0aW9uLCBzZWxlY3Rpb24gPSBfYSA9PT0gdm9pZCAwID8gW251bGwsIG51bGxdIDogX2E7XG4gICAgICAgIHZhciBzdGFydCA9IHNlbGVjdGlvblswXSwgZW5kID0gc2VsZWN0aW9uWzFdO1xuICAgICAgICBpZiAoISFwcmV2UHJvcHMubXVsdGlsaW5lICE9PSAhIXByb3BzLm11bHRpbGluZSAmJiBwcmV2U3RhdGUuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICAvLyBUaGUgdGV4dCBmaWVsZCBoYXMganVzdCBjaGFuZ2VkIGJldHdlZW4gc2luZ2xlLSBhbmQgbXVsdGktbGluZSwgc28gd2UgbmVlZCB0byByZXNldCBmb2N1c1xuICAgICAgICAgICAgLy8gYW5kIHNlbGVjdGlvbi9jdXJzb3IuXG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoc3RhcnQgIT09IG51bGwgJiYgZW5kICE9PSBudWxsICYmIHN0YXJ0ID49IDAgJiYgZW5kID49IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2UHJvcHMudmFsdWUgIT09IHByb3BzLnZhbHVlKSB7XG4gICAgICAgICAgICAvLyBPbmx5IGlmIHRoZSB2YWx1ZSBpbiBwcm9wcyBjaGFuZ2VkLCByZXNldCB0aGUgcmVjb3JkIG9mIHRoZSBsYXN0IHZhbHVlIHNlZW4gYnkgYVxuICAgICAgICAgICAgLy8gY2hhbmdlL2lucHV0IGV2ZW50IChkb24ndCBkbyB0aGlzIGlmIHRoZSB2YWx1ZSBpbiBzdGF0ZSBjaGFuZ2VkLCBzaW5jZSBhdCBsZWFzdCBpbiB0ZXN0c1xuICAgICAgICAgICAgLy8gdGhlIHN0YXRlIHVwZGF0ZSBtYXkgaGFwcGVuIGJlZm9yZSB0aGUgc2Vjb25kIGV2ZW50IGluIGEgc2VyaWVzKVxuICAgICAgICAgICAgdGhpcy5fbGFzdENoYW5nZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwcmV2VmFsdWUgPSBfZ2V0VmFsdWUocHJldlByb3BzLCBwcmV2U3RhdGUpO1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAocHJldlZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGNvbnRyb2xsZWQvdW5jb250cm9sbGVkIHdhcm5pbmdzIGFuZCBzdGF0dXNcbiAgICAgICAgICAgIHRoaXMuX3dhcm5Db250cm9sbGVkVXNhZ2UocHJldlByb3BzKTtcbiAgICAgICAgICAgIC8vIENsZWFyIGVycm9yIG1lc3NhZ2UgaWYgbmVlZGVkXG4gICAgICAgICAgICAvLyBUT0RPOiBpcyB0aGVyZSBhbnkgd2F5IHRvIGRvIHRoaXMgd2l0aG91dCBhbiBleHRyYSByZW5kZXI/XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5lcnJvck1lc3NhZ2UgJiYgIXByb3BzLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvck1lc3NhZ2U6ICcnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWRqdXN0IGhlaWdodCBpZiBuZWVkZWQgYmFzZWQgb24gbmV3IHZhbHVlXG4gICAgICAgICAgICB0aGlzLl9hZGp1c3RJbnB1dEhlaWdodCgpO1xuICAgICAgICAgICAgLy8gVE9ETzogIzU4NzUgYWRkZWQgbG9naWMgdG8gdHJpZ2dlciB2YWxpZGF0aW9uIGluIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kIG90aGVyIHBsYWNlcy5cbiAgICAgICAgICAgIC8vIFRoaXMgc2VlbXMgYSBiaXQgb2RkIGFuZCBoYXJkIHRvIGludGVncmF0ZSB3aXRoIHRoZSBuZXcgYXBwcm9hY2guXG4gICAgICAgICAgICAvLyAoU3RhcnRpbmcgdG8gdGhpbmsgd2Ugc2hvdWxkIGp1c3QgcHV0IHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGluIGEgc2VwYXJhdGUgd3JhcHBlciBjb21wb25lbnQuLi4/KVxuICAgICAgICAgICAgaWYgKF9zaG91bGRWYWxpZGF0ZUFsbENoYW5nZXMocHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsYXllZFZhbGlkYXRlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByb3BzLCBib3JkZXJsZXNzID0gX2EuYm9yZGVybGVzcywgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLCBkaXNhYmxlZCA9IF9hLmRpc2FibGVkLCBpbnZhbGlkID0gX2EuaW52YWxpZCwgaWNvblByb3BzID0gX2EuaWNvblByb3BzLCBpbnB1dENsYXNzTmFtZSA9IF9hLmlucHV0Q2xhc3NOYW1lLCBsYWJlbCA9IF9hLmxhYmVsLCBtdWx0aWxpbmUgPSBfYS5tdWx0aWxpbmUsIHJlcXVpcmVkID0gX2EucmVxdWlyZWQsIHVuZGVybGluZWQgPSBfYS51bmRlcmxpbmVkLCBwcmVmaXggPSBfYS5wcmVmaXgsIHJlc2l6YWJsZSA9IF9hLnJlc2l6YWJsZSwgc3VmZml4ID0gX2Euc3VmZml4LCB0aGVtZSA9IF9hLnRoZW1lLCBzdHlsZXMgPSBfYS5zdHlsZXMsIGF1dG9BZGp1c3RIZWlnaHQgPSBfYS5hdXRvQWRqdXN0SGVpZ2h0LCBjYW5SZXZlYWxQYXNzd29yZCA9IF9hLmNhblJldmVhbFBhc3N3b3JkLCByZXZlYWxQYXNzd29yZEFyaWFMYWJlbCA9IF9hLnJldmVhbFBhc3N3b3JkQXJpYUxhYmVsLCB0eXBlID0gX2EudHlwZSwgX2IgPSBfYS5vblJlbmRlclByZWZpeCwgb25SZW5kZXJQcmVmaXggPSBfYiA9PT0gdm9pZCAwID8gdGhpcy5fb25SZW5kZXJQcmVmaXggOiBfYiwgX2MgPSBfYS5vblJlbmRlclN1ZmZpeCwgb25SZW5kZXJTdWZmaXggPSBfYyA9PT0gdm9pZCAwID8gdGhpcy5fb25SZW5kZXJTdWZmaXggOiBfYywgX2QgPSBfYS5vblJlbmRlckxhYmVsLCBvblJlbmRlckxhYmVsID0gX2QgPT09IHZvaWQgMCA/IHRoaXMuX29uUmVuZGVyTGFiZWwgOiBfZCwgX2UgPSBfYS5vblJlbmRlckRlc2NyaXB0aW9uLCBvblJlbmRlckRlc2NyaXB0aW9uID0gX2UgPT09IHZvaWQgMCA/IHRoaXMuX29uUmVuZGVyRGVzY3JpcHRpb24gOiBfZTtcbiAgICAgICAgdmFyIF9mID0gdGhpcy5zdGF0ZSwgaXNGb2N1c2VkID0gX2YuaXNGb2N1c2VkLCBpc1JldmVhbGluZ1Bhc3N3b3JkID0gX2YuaXNSZXZlYWxpbmdQYXNzd29yZDtcbiAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IHRoaXMuX2Vycm9yTWVzc2FnZTtcbiAgICAgICAgdmFyIGlzSW52YWxpZCA9IHR5cGVvZiBpbnZhbGlkID09PSAnYm9vbGVhbicgPyBpbnZhbGlkIDogISFlcnJvck1lc3NhZ2U7XG4gICAgICAgIHZhciBoYXNSZXZlYWxCdXR0b24gPSAhIWNhblJldmVhbFBhc3N3b3JkICYmIHR5cGUgPT09ICdwYXNzd29yZCcgJiYgX2Jyb3dzZXJOZWVkc1JldmVhbEJ1dHRvbigpO1xuICAgICAgICB2YXIgY2xhc3NOYW1lcyA9ICh0aGlzLl9jbGFzc05hbWVzID0gZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgZm9jdXNlZDogaXNGb2N1c2VkLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICAgICAgbXVsdGlsaW5lOiBtdWx0aWxpbmUsXG4gICAgICAgICAgICBoYXNMYWJlbDogISFsYWJlbCxcbiAgICAgICAgICAgIGhhc0Vycm9yTWVzc2FnZTogaXNJbnZhbGlkLFxuICAgICAgICAgICAgYm9yZGVybGVzczogYm9yZGVybGVzcyxcbiAgICAgICAgICAgIHJlc2l6YWJsZTogcmVzaXphYmxlLFxuICAgICAgICAgICAgaGFzSWNvbjogISFpY29uUHJvcHMsXG4gICAgICAgICAgICB1bmRlcmxpbmVkOiB1bmRlcmxpbmVkLFxuICAgICAgICAgICAgaW5wdXRDbGFzc05hbWU6IGlucHV0Q2xhc3NOYW1lLFxuICAgICAgICAgICAgYXV0b0FkanVzdEhlaWdodDogYXV0b0FkanVzdEhlaWdodCxcbiAgICAgICAgICAgIGhhc1JldmVhbEJ1dHRvbjogaGFzUmV2ZWFsQnV0dG9uLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiB0aGlzLnByb3BzLmVsZW1lbnRSZWYsIGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290IH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLndyYXBwZXIgfSxcbiAgICAgICAgICAgICAgICBvblJlbmRlckxhYmVsKHRoaXMucHJvcHMsIHRoaXMuX29uUmVuZGVyTGFiZWwpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuZmllbGRHcm91cCB9LFxuICAgICAgICAgICAgICAgICAgICAocHJlZml4ICE9PSB1bmRlZmluZWQgfHwgdGhpcy5wcm9wcy5vblJlbmRlclByZWZpeCkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMucHJlZml4LCBpZDogdGhpcy5fcHJlZml4SWQgfSwgb25SZW5kZXJQcmVmaXgodGhpcy5wcm9wcywgdGhpcy5fb25SZW5kZXJQcmVmaXgpKSksXG4gICAgICAgICAgICAgICAgICAgIG11bHRpbGluZSA/IHRoaXMuX3JlbmRlclRleHRBcmVhKCkgOiB0aGlzLl9yZW5kZXJJbnB1dCgpLFxuICAgICAgICAgICAgICAgICAgICBpY29uUHJvcHMgJiYgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCBfX2Fzc2lnbih7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5pY29uIH0sIGljb25Qcm9wcykpLFxuICAgICAgICAgICAgICAgICAgICBoYXNSZXZlYWxCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAvLyBFeHBsaWNpdGx5IHNldCB0eXBlPVwiYnV0dG9uXCIgc2luY2UgdGhlIGRlZmF1bHQgYnV0dG9uIHR5cGUgd2l0aGluIGEgZm9ybSBpcyBcInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgeyBcImFyaWEtbGFiZWxcIjogcmV2ZWFsUGFzc3dvcmRBcmlhTGFiZWwsIGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yZXZlYWxCdXR0b24sIG9uQ2xpY2s6IHRoaXMuX29uUmV2ZWFsQnV0dG9uQ2xpY2ssIFwiYXJpYS1wcmVzc2VkXCI6ICEhaXNSZXZlYWxpbmdQYXNzd29yZCwgdHlwZTogXCJidXR0b25cIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMucmV2ZWFsU3BhbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMucmV2ZWFsSWNvbiwgaWNvbk5hbWU6IGlzUmV2ZWFsaW5nUGFzc3dvcmQgPyBISURFX0lDT05fTkFNRSA6IFJFVkVBTF9JQ09OX05BTUUgfSkpKSksXG4gICAgICAgICAgICAgICAgICAgIChzdWZmaXggIT09IHVuZGVmaW5lZCB8fCB0aGlzLnByb3BzLm9uUmVuZGVyU3VmZml4KSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zdWZmaXgsIGlkOiB0aGlzLl9zdWZmaXhJZCB9LCBvblJlbmRlclN1ZmZpeCh0aGlzLnByb3BzLCB0aGlzLl9vblJlbmRlclN1ZmZpeCkpKSkpLFxuICAgICAgICAgICAgdGhpcy5faXNEZXNjcmlwdGlvbkF2YWlsYWJsZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBpZDogdGhpcy5fZGVzY3JpcHRpb25JZCB9LFxuICAgICAgICAgICAgICAgIG9uUmVuZGVyRGVzY3JpcHRpb24odGhpcy5wcm9wcywgdGhpcy5fb25SZW5kZXJEZXNjcmlwdGlvbiksXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcm9sZTogXCJhbGVydFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGVsYXllZFJlbmRlciwgbnVsbCwgdGhpcy5fcmVuZGVyRXJyb3JNZXNzYWdlKCkpKSkpKSkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0cyBmb2N1cyBvbiB0aGUgdGV4dCBmaWVsZFxuICAgICAqL1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLmZvY3VzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCbHVycyB0aGUgdGV4dCBmaWVsZC5cbiAgICAgKi9cbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5ibHVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIHRleHQgZmllbGRcbiAgICAgKi9cbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50LnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gc3RhcnQgb2YgdGhlIHRleHQgZmllbGQgdG8gYSBzcGVjaWZpZWQgdmFsdWVcbiAgICAgKi9cbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5zZXRTZWxlY3Rpb25TdGFydCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudCkge1xuICAgICAgICAgICAgdGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gZW5kIG9mIHRoZSB0ZXh0IGZpZWxkIHRvIGEgc3BlY2lmaWVkIHZhbHVlXG4gICAgICovXG4gICAgVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUuc2V0U2VsZWN0aW9uRW5kID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50KSB7XG4gICAgICAgICAgICB0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50LnNlbGVjdGlvbkVuZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUsIFwic2VsZWN0aW9uU3RhcnRcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogR2V0cyB0aGUgc2VsZWN0aW9uIHN0YXJ0IG9mIHRoZSB0ZXh0IGZpZWxkXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50ID8gdGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudC5zZWxlY3Rpb25TdGFydCA6IC0xO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRleHRGaWVsZEJhc2UucHJvdG90eXBlLCBcInNlbGVjdGlvbkVuZFwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBzZWxlY3Rpb24gZW5kIG9mIHRoZSB0ZXh0IGZpZWxkXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50ID8gdGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudC5zZWxlY3Rpb25FbmQgOiAtMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zIG9mIGEgc2VsZWN0aW9uIGluIGEgdGV4dCBmaWVsZC5cbiAgICAgKiBAcGFyYW0gc3RhcnQgLSBJbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gZW5kIC0gSW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uLlxuICAgICAqL1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLnNldFNlbGVjdGlvblJhbmdlID0gZnVuY3Rpb24gKHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RleHRFbGVtZW50LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHRFbGVtZW50LmN1cnJlbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLl93YXJuQ29udHJvbGxlZFVzYWdlID0gZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgICAvLyBTaG93IHdhcm5pbmdzIGlmIHByb3BzIGFyZSBiZWluZyB1c2VkIGluIGFuIGludmFsaWQgd2F5XG4gICAgICAgIHdhcm5Db250cm9sbGVkVXNhZ2Uoe1xuICAgICAgICAgICAgY29tcG9uZW50SWQ6IHRoaXMuX2lkLFxuICAgICAgICAgICAgY29tcG9uZW50TmFtZTogQ09NUE9ORU5UX05BTUUsXG4gICAgICAgICAgICBwcm9wczogdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIG9sZFByb3BzOiBwcmV2UHJvcHMsXG4gICAgICAgICAgICB2YWx1ZVByb3A6ICd2YWx1ZScsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWVQcm9wOiAnZGVmYXVsdFZhbHVlJyxcbiAgICAgICAgICAgIG9uQ2hhbmdlUHJvcDogJ29uQ2hhbmdlJyxcbiAgICAgICAgICAgIHJlYWRPbmx5UHJvcDogJ3JlYWRPbmx5JyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnZhbHVlID09PSBudWxsICYmICF0aGlzLl9oYXNXYXJuZWROdWxsVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhc1dhcm5lZE51bGxWYWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB3YXJuKFwiV2FybmluZzogJ3ZhbHVlJyBwcm9wIG9uICdcIi5jb25jYXQoQ09NUE9ORU5UX05BTUUsIFwiJyBzaG91bGQgbm90IGJlIG51bGwuIENvbnNpZGVyIHVzaW5nIGFuIFwiKSArXG4gICAgICAgICAgICAgICAgJ2VtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIHVuZGVmaW5lZCB0byBpbmRpY2F0ZSBhbiB1bmNvbnRyb2xsZWQgY29tcG9uZW50LicpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUsIFwiX2lkXCIsIHtcbiAgICAgICAgLyoqIFJldHVybnMgYHByb3BzLmlkYCBpZiBhdmFpbGFibGUsIG9yIGEgZmFsbGJhY2sgaWYgbm90LiAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmlkIHx8IHRoaXMuX2ZhbGxiYWNrSWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUsIFwiX2lzQ29udHJvbGxlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzQ29udHJvbGxlZCh0aGlzLnByb3BzLCAndmFsdWUnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLl9vblJlbmRlclByZWZpeCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICB2YXIgcHJlZml4ID0gcHJvcHMucHJlZml4O1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBzdHlsZTogeyBwYWRkaW5nQm90dG9tOiAnMXB4JyB9IH0sIHByZWZpeCk7XG4gICAgfTtcbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5fb25SZW5kZXJTdWZmaXggPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgdmFyIHN1ZmZpeCA9IHByb3BzLnN1ZmZpeDtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgc3R5bGU6IHsgcGFkZGluZ0JvdHRvbTogJzFweCcgfSB9LCBzdWZmaXgpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFRleHRGaWVsZEJhc2UucHJvdG90eXBlLCBcIl9lcnJvck1lc3NhZ2VcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ3VycmVudCBlcnJvciBtZXNzYWdlIGZyb20gZWl0aGVyIGBwcm9wcy5lcnJvck1lc3NhZ2VgIG9yIHRoZSByZXN1bHQgb2YgYHByb3BzLm9uR2V0RXJyb3JNZXNzYWdlYC5cbiAgICAgICAgICpcbiAgICAgICAgICogLSBJZiB0aGVyZSBpcyBubyB2YWxpZGF0aW9uIGVycm9yIG9yIHdlIGhhdmUgbm90IHZhbGlkYXRlZCB0aGUgaW5wdXQgdmFsdWUsIGVycm9yTWVzc2FnZSBpcyBhbiBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAqIC0gSWYgd2UgaGF2ZSBkb25lIHRoZSB2YWxpZGF0aW9uIGFuZCB0aGVyZSBpcyB2YWxpZGF0aW9uIGVycm9yLCBlcnJvck1lc3NhZ2UgaXMgdGhlIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZS5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcy5lcnJvck1lc3NhZ2UsIGVycm9yTWVzc2FnZSA9IF9hID09PSB2b2lkIDAgPyB0aGlzLnN0YXRlLmVycm9yTWVzc2FnZSA6IF9hO1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZSB8fCAnJztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIFJlbmRlcnMgZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIC0gSWYgZXJyb3IgbWVzc2FnZSBpcyBzdHJpbmcsIGl0IHdpbGwgcmVuZGVyIHVzaW5nIHRoZSBidWlsdCBpbiBzdHlsZXMuXG4gICAgICogLSBJZiBlcnJvciBtZXNzYWdlIGlzIGFuIGVsZW1lbnQsIHVzZXIgaGFzIGZ1bGwgY29udHJvbCBvdmVyIGhvdyBpdCdzIHJlbmRlcmVkLlxuICAgICAqL1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLl9yZW5kZXJFcnJvck1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSB0aGlzLl9lcnJvck1lc3NhZ2U7XG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2UgPyAodHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ3N0cmluZycgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChcInBcIiwgeyBjbGFzc05hbWU6IHRoaXMuX2NsYXNzTmFtZXMuZXJyb3JNZXNzYWdlIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IFwiZGF0YS1hdXRvbWF0aW9uLWlkXCI6IFwiZXJyb3ItbWVzc2FnZVwiIH0sIGVycm9yTWVzc2FnZSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiB0aGlzLl9jbGFzc05hbWVzLmVycm9yTWVzc2FnZSwgXCJkYXRhLWF1dG9tYXRpb24taWRcIjogXCJlcnJvci1tZXNzYWdlXCIgfSwgZXJyb3JNZXNzYWdlKSkpIDogbnVsbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0RmllbGRCYXNlLnByb3RvdHlwZSwgXCJfaXNEZXNjcmlwdGlvbkF2YWlsYWJsZVwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBhIGN1c3RvbSBkZXNjcmlwdGlvbiByZW5kZXIgZnVuY3Rpb24gaXMgc3VwcGxpZWQgdGhlbiB0cmVhdCBkZXNjcmlwdGlvbiBhcyBhbHdheXMgYXZhaWxhYmxlLlxuICAgICAgICAgKiBPdGhlcndpc2UgZGVmZXIgdG8gdGhlIHByZXNlbmNlIG9mIGRlc2NyaXB0aW9uIG9yIGVycm9yIG1lc3NhZ2UgdGV4dC5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHJldHVybiAhIShwcm9wcy5vblJlbmRlckRlc2NyaXB0aW9uIHx8IHByb3BzLmRlc2NyaXB0aW9uIHx8IHRoaXMuX2Vycm9yTWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5fcmVuZGVyVGV4dEFyZWEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMuaW52YWxpZCwgaW52YWxpZCA9IF9hID09PSB2b2lkIDAgPyAhIXRoaXMuX2Vycm9yTWVzc2FnZSA6IF9hO1xuICAgICAgICB2YXIgdGV4dEFyZWFQcm9wcyA9IGdldE5hdGl2ZVByb3BzKHRoaXMucHJvcHMsIHRleHRBcmVhUHJvcGVydGllcywgWydkZWZhdWx0VmFsdWUnXSk7XG4gICAgICAgIHZhciBhcmlhTGFiZWxsZWRCeSA9IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWxsZWRieSddIHx8ICh0aGlzLnByb3BzLmxhYmVsID8gdGhpcy5fbGFiZWxJZCA6IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIsIF9fYXNzaWduKHsgaWQ6IHRoaXMuX2lkIH0sIHRleHRBcmVhUHJvcHMsIHsgcmVmOiB0aGlzLl90ZXh0RWxlbWVudCwgdmFsdWU6IHRoaXMudmFsdWUgfHwgJycsIG9uSW5wdXQ6IHRoaXMuX29uSW5wdXRDaGFuZ2UsIG9uQ2hhbmdlOiB0aGlzLl9vbklucHV0Q2hhbmdlLCBjbGFzc05hbWU6IHRoaXMuX2NsYXNzTmFtZXMuZmllbGQsIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFyaWFMYWJlbGxlZEJ5LCBcImFyaWEtZGVzY3JpYmVkYnlcIjogdGhpcy5faXNEZXNjcmlwdGlvbkF2YWlsYWJsZSA/IHRoaXMuX2Rlc2NyaXB0aW9uSWQgOiB0aGlzLnByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10sIFwiYXJpYS1pbnZhbGlkXCI6IGludmFsaWQsIFwiYXJpYS1sYWJlbFwiOiB0aGlzLnByb3BzLmFyaWFMYWJlbCwgcmVhZE9ubHk6IHRoaXMucHJvcHMucmVhZE9ubHksIG9uRm9jdXM6IHRoaXMuX29uRm9jdXMsIG9uQmx1cjogdGhpcy5fb25CbHVyIH0pKSk7XG4gICAgfTtcbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5fcmVuZGVySW5wdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMucHJvcHMsIGFyaWFMYWJlbCA9IF9hLmFyaWFMYWJlbCwgX2IgPSBfYS5pbnZhbGlkLCBpbnZhbGlkID0gX2IgPT09IHZvaWQgMCA/ICEhdGhpcy5fZXJyb3JNZXNzYWdlIDogX2IsIG9uUmVuZGVyUHJlZml4ID0gX2Eub25SZW5kZXJQcmVmaXgsIG9uUmVuZGVyU3VmZml4ID0gX2Eub25SZW5kZXJTdWZmaXgsIHByZWZpeCA9IF9hLnByZWZpeCwgc3VmZml4ID0gX2Euc3VmZml4LCBfYyA9IF9hLnR5cGUsIHR5cGUgPSBfYyA9PT0gdm9pZCAwID8gJ3RleHQnIDogX2MsIGxhYmVsID0gX2EubGFiZWw7XG4gICAgICAgIC8vIGJ1aWxkIGFyaWEtbGFiZWxsZWRieSBsaXN0IGZyb20gbGFiZWwsIHByZWZpeCwgYW5kIHN1ZmZpeFxuICAgICAgICB2YXIgbGFiZWxJZHMgPSBbXTtcbiAgICAgICAgbGFiZWwgJiYgbGFiZWxJZHMucHVzaCh0aGlzLl9sYWJlbElkKTtcbiAgICAgICAgKHByZWZpeCAhPT0gdW5kZWZpbmVkIHx8IG9uUmVuZGVyUHJlZml4KSAmJiBsYWJlbElkcy5wdXNoKHRoaXMuX3ByZWZpeElkKTtcbiAgICAgICAgKHN1ZmZpeCAhPT0gdW5kZWZpbmVkIHx8IG9uUmVuZGVyU3VmZml4KSAmJiBsYWJlbElkcy5wdXNoKHRoaXMuX3N1ZmZpeElkKTtcbiAgICAgICAgdmFyIGlucHV0UHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7IHR5cGU6IHRoaXMuc3RhdGUuaXNSZXZlYWxpbmdQYXNzd29yZCA/ICd0ZXh0JyA6IHR5cGUsIGlkOiB0aGlzLl9pZCB9LCBnZXROYXRpdmVQcm9wcyh0aGlzLnByb3BzLCBpbnB1dFByb3BlcnRpZXMsIFsnZGVmYXVsdFZhbHVlJywgJ3R5cGUnXSkpLCB7ICdhcmlhLWxhYmVsbGVkYnknOiB0aGlzLnByb3BzWydhcmlhLWxhYmVsbGVkYnknXSB8fCAobGFiZWxJZHMubGVuZ3RoID4gMCA/IGxhYmVsSWRzLmpvaW4oJyAnKSA6IHVuZGVmaW5lZCksIHJlZjogdGhpcy5fdGV4dEVsZW1lbnQsIHZhbHVlOiB0aGlzLnZhbHVlIHx8ICcnLCBvbklucHV0OiB0aGlzLl9vbklucHV0Q2hhbmdlLCBvbkNoYW5nZTogdGhpcy5fb25JbnB1dENoYW5nZSwgY2xhc3NOYW1lOiB0aGlzLl9jbGFzc05hbWVzLmZpZWxkLCAnYXJpYS1sYWJlbCc6IGFyaWFMYWJlbCwgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLl9pc0Rlc2NyaXB0aW9uQXZhaWxhYmxlID8gdGhpcy5fZGVzY3JpcHRpb25JZCA6IHRoaXMucHJvcHNbJ2FyaWEtZGVzY3JpYmVkYnknXSwgJ2FyaWEtaW52YWxpZCc6IGludmFsaWQsIG9uRm9jdXM6IHRoaXMuX29uRm9jdXMsIG9uQmx1cjogdGhpcy5fb25CbHVyIH0pO1xuICAgICAgICB2YXIgZGVmYXVsdFJlbmRlciA9IGZ1bmN0aW9uICh1cGRhdGVkSW5wdXRQcm9wcykge1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBfX2Fzc2lnbih7fSwgdXBkYXRlZElucHV0UHJvcHMpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG9uUmVuZGVySW5wdXQgPSB0aGlzLnByb3BzLm9uUmVuZGVySW5wdXQgfHwgZGVmYXVsdFJlbmRlcjtcbiAgICAgICAgcmV0dXJuIG9uUmVuZGVySW5wdXQoaW5wdXRQcm9wcywgZGVmYXVsdFJlbmRlcik7XG4gICAgfTtcbiAgICBUZXh0RmllbGRCYXNlLnByb3RvdHlwZS5fdmFsaWRhdGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgLy8gSW4gY2FzZSBfdmFsaWRhdGUgaXMgY2FsbGVkIGFnYWluIHdoaWxlIHZhbGlkYXRpb24gcHJvbWlzZSBpcyBleGVjdXRpbmdcbiAgICAgICAgaWYgKHRoaXMuX2xhdGVzdFZhbGlkYXRlVmFsdWUgPT09IHZhbHVlICYmIF9zaG91bGRWYWxpZGF0ZUFsbENoYW5nZXModGhpcy5wcm9wcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sYXRlc3RWYWxpZGF0ZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIHZhciBvbkdldEVycm9yTWVzc2FnZSA9IHRoaXMucHJvcHMub25HZXRFcnJvck1lc3NhZ2U7XG4gICAgICAgIHZhciByZXN1bHQgPSBvbkdldEVycm9yTWVzc2FnZSAmJiBvbkdldEVycm9yTWVzc2FnZSh2YWx1ZSB8fCAnJyk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnIHx8ICEoJ3RoZW4nIGluIHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3JNZXNzYWdlOiByZXN1bHQgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZ5QWZ0ZXJWYWxpZGF0ZSh2YWx1ZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VmFsaWRhdGlvbl8xID0gKyt0aGlzLl9sYXN0VmFsaWRhdGlvbjtcbiAgICAgICAgICAgICAgICByZXN1bHQudGhlbihmdW5jdGlvbiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsaWRhdGlvbl8xID09PSBfdGhpcy5fbGFzdFZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBlcnJvck1lc3NhZ2UgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX25vdGlmeUFmdGVyVmFsaWRhdGUodmFsdWUsIGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9ub3RpZnlBZnRlclZhbGlkYXRlKHZhbHVlLCAnJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFRleHRGaWVsZEJhc2UucHJvdG90eXBlLl9ub3RpZnlBZnRlclZhbGlkYXRlID0gZnVuY3Rpb24gKHZhbHVlLCBlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLnZhbHVlICYmIHRoaXMucHJvcHMub25Ob3RpZnlWYWxpZGF0aW9uUmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uTm90aWZ5VmFsaWRhdGlvblJlc3VsdChlcnJvck1lc3NhZ2UsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgVGV4dEZpZWxkQmFzZS5wcm90b3R5cGUuX2FkanVzdElucHV0SGVpZ2h0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5fdGV4dEVsZW1lbnQuY3VycmVudCAmJiB0aGlzLnByb3BzLmF1dG9BZGp1c3RIZWlnaHQgJiYgdGhpcy5wcm9wcy5tdWx0aWxpbmUpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0RmllbGQgPSB0aGlzLl90ZXh0RWxlbWVudC5jdXJyZW50O1xuICAgICAgICAgICAgdGV4dEZpZWxkLnN0eWxlLmhlaWdodCA9ICcnO1xuICAgICAgICAgICAgdGV4dEZpZWxkLnN0eWxlLmhlaWdodCA9IHRleHRGaWVsZC5zY3JvbGxIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBUZXh0RmllbGRCYXNlLmRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxuICAgICAgICBkZWZlcnJlZFZhbGlkYXRpb25UaW1lOiAyMDAsXG4gICAgICAgIHZhbGlkYXRlT25Mb2FkOiB0cnVlLFxuICAgIH07XG4gICAgcmV0dXJuIFRleHRGaWVsZEJhc2U7XG59KFJlYWN0LkNvbXBvbmVudCkpO1xuZXhwb3J0IHsgVGV4dEZpZWxkQmFzZSB9O1xuLyoqIEdldCB0aGUgdmFsdWUgZnJvbSB0aGUgZ2l2ZW4gc3RhdGUgYW5kIHByb3BzIChjb252ZXJ0aW5nIGZyb20gbnVtYmVyIHRvIHN0cmluZyBpZiBuZWVkZWQpICovXG5mdW5jdGlvbiBfZ2V0VmFsdWUocHJvcHMsIHN0YXRlKSB7XG4gICAgdmFyIF9hID0gcHJvcHMudmFsdWUsIHZhbHVlID0gX2EgPT09IHZvaWQgMCA/IHN0YXRlLnVuY29udHJvbGxlZFZhbHVlIDogX2E7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gbm90IGFsbG93ZWQgcGVyIHR5cGluZ3MsIGJ1dCBoYXBwZW5zIGFueXdheVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuLyoqXG4gKiBJZiBgdmFsaWRhdGVPbkZvY3VzSW5gIG9yIGB2YWxpZGF0ZU9uRm9jdXNPdXRgIGlzIHRydWUsIHZhbGlkYXRpb24gc2hvdWxkIHJ1biAqKm9ubHkqKiBvbiB0aGF0IGV2ZW50LlxuICogT3RoZXJ3aXNlLCB2YWxpZGF0aW9uIHNob3VsZCBydW4gb24gZXZlcnkgY2hhbmdlLlxuICovXG5mdW5jdGlvbiBfc2hvdWxkVmFsaWRhdGVBbGxDaGFuZ2VzKHByb3BzKSB7XG4gICAgcmV0dXJuICEocHJvcHMudmFsaWRhdGVPbkZvY3VzSW4gfHwgcHJvcHMudmFsaWRhdGVPbkZvY3VzT3V0KTtcbn1cbi8vIE9ubHkgY2FsY3VsYXRlIHRoaXMgb25jZSBhY3Jvc3MgYWxsIFRleHRGaWVsZHMsIHNpbmNlIHdpbGwgc3RheSB0aGUgc2FtZVxudmFyIF9fYnJvd3Nlck5lZWRzUmV2ZWFsQnV0dG9uO1xuZnVuY3Rpb24gX2Jyb3dzZXJOZWVkc1JldmVhbEJ1dHRvbigpIHtcbiAgICBpZiAodHlwZW9mIF9fYnJvd3Nlck5lZWRzUmV2ZWFsQnV0dG9uICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdygpO1xuICAgICAgICBpZiAod2luID09PSBudWxsIHx8IHdpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2luLm5hdmlnYXRvcikge1xuICAgICAgICAgICAgLy8gRWRnZSwgQ2hyb21pdW0gRWRnZVxuICAgICAgICAgICAgdmFyIGlzRWRnZSA9IC9FZGcvLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQgfHwgJycpO1xuICAgICAgICAgICAgX19icm93c2VyTmVlZHNSZXZlYWxCdXR0b24gPSAhKGlzSUUxMSgpIHx8IGlzRWRnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfX2Jyb3dzZXJOZWVkc1JldmVhbEJ1dHRvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIF9fYnJvd3Nlck5lZWRzUmV2ZWFsQnV0dG9uO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dEZpZWxkLmJhc2UuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFuaW1hdGlvbkNsYXNzTmFtZXMsIGdldEZvY3VzU3R5bGUsIGdldEdsb2JhbENsYXNzTmFtZXMsIGdldElucHV0Rm9jdXNTdHlsZSwgSGlnaENvbnRyYXN0U2VsZWN0b3IsIG5vcm1hbGl6ZSwgZ2V0UGxhY2Vob2xkZXJTdHlsZXMsIEljb25Gb250U2l6ZXMsIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUsIH0gZnJvbSAnLi4vLi4vU3R5bGluZyc7XG52YXIgZ2xvYmFsQ2xhc3NOYW1lcyA9IHtcbiAgICByb290OiAnbXMtVGV4dEZpZWxkJyxcbiAgICBkZXNjcmlwdGlvbjogJ21zLVRleHRGaWVsZC1kZXNjcmlwdGlvbicsXG4gICAgZXJyb3JNZXNzYWdlOiAnbXMtVGV4dEZpZWxkLWVycm9yTWVzc2FnZScsXG4gICAgZmllbGQ6ICdtcy1UZXh0RmllbGQtZmllbGQnLFxuICAgIGZpZWxkR3JvdXA6ICdtcy1UZXh0RmllbGQtZmllbGRHcm91cCcsXG4gICAgcHJlZml4OiAnbXMtVGV4dEZpZWxkLXByZWZpeCcsXG4gICAgc3VmZml4OiAnbXMtVGV4dEZpZWxkLXN1ZmZpeCcsXG4gICAgd3JhcHBlcjogJ21zLVRleHRGaWVsZC13cmFwcGVyJyxcbiAgICByZXZlYWxCdXR0b246ICdtcy1UZXh0RmllbGQtcmV2ZWFsJyxcbiAgICBtdWx0aWxpbmU6ICdtcy1UZXh0RmllbGQtLW11bHRpbGluZScsXG4gICAgYm9yZGVybGVzczogJ21zLVRleHRGaWVsZC0tYm9yZGVybGVzcycsXG4gICAgdW5kZXJsaW5lZDogJ21zLVRleHRGaWVsZC0tdW5kZXJsaW5lZCcsXG4gICAgdW5yZXNpemFibGU6ICdtcy1UZXh0RmllbGQtLXVucmVzaXphYmxlJyxcbiAgICByZXF1aXJlZDogJ2lzLXJlcXVpcmVkJyxcbiAgICBkaXNhYmxlZDogJ2lzLWRpc2FibGVkJyxcbiAgICBhY3RpdmU6ICdpcy1hY3RpdmUnLFxufTtcbmZ1bmN0aW9uIGdldExhYmVsU3R5bGVzKHByb3BzKSB7XG4gICAgdmFyIHVuZGVybGluZWQgPSBwcm9wcy51bmRlcmxpbmVkLCBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLCBmb2N1c2VkID0gcHJvcHMuZm9jdXNlZCwgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgICB2YXIgcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUsIGZvbnRzID0gdGhlbWUuZm9udHM7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgICAgICB1bmRlcmxpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkICYmIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUubmV1dHJhbFRlcnRpYXJ5LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdW5kZXJsaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBmb250cy5tZWRpdW0uZm9udFNpemUsXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiA4LFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogMTIsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogJzIycHgnLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdW5kZXJsaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBmb2N1c2VkICYmIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMxLCAvLyAtMXB4IHRvIHByZXZlbnQganVtcGluZXNzIGluIEhDIHdpdGggdGhlIGluY3JlYXNlZCBib3JkZXItd2lkdGggdG8gMnB4XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX2EpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxlcyhwcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tO1xuICAgIHZhciB0aGVtZSA9IHByb3BzLnRoZW1lLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQsIGZvY3VzZWQgPSBwcm9wcy5mb2N1c2VkLCByZXF1aXJlZCA9IHByb3BzLnJlcXVpcmVkLCBtdWx0aWxpbmUgPSBwcm9wcy5tdWx0aWxpbmUsIGhhc0xhYmVsID0gcHJvcHMuaGFzTGFiZWwsIGJvcmRlcmxlc3MgPSBwcm9wcy5ib3JkZXJsZXNzLCB1bmRlcmxpbmVkID0gcHJvcHMudW5kZXJsaW5lZCwgaGFzSWNvbiA9IHByb3BzLmhhc0ljb24sIHJlc2l6YWJsZSA9IHByb3BzLnJlc2l6YWJsZSwgaGFzRXJyb3JNZXNzYWdlID0gcHJvcHMuaGFzRXJyb3JNZXNzYWdlLCBpbnB1dENsYXNzTmFtZSA9IHByb3BzLmlucHV0Q2xhc3NOYW1lLCBhdXRvQWRqdXN0SGVpZ2h0ID0gcHJvcHMuYXV0b0FkanVzdEhlaWdodCwgaGFzUmV2ZWFsQnV0dG9uID0gcHJvcHMuaGFzUmV2ZWFsQnV0dG9uO1xuICAgIHZhciBzZW1hbnRpY0NvbG9ycyA9IHRoZW1lLnNlbWFudGljQ29sb3JzLCBlZmZlY3RzID0gdGhlbWUuZWZmZWN0cywgZm9udHMgPSB0aGVtZS5mb250cztcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoZ2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHZhciBmaWVsZFByZWZpeFN1ZmZpeCA9IHtcbiAgICAgICAgLy8gU3VmZml4L1ByZWZpeCBhcmUgbm90IGVkaXRhYmxlIHNvIHRoZSBkaXNhYmxlZCBzbG90IHBlcmZlY3RseSBmaXRzLlxuICAgICAgICBiYWNrZ3JvdW5kOiBzZW1hbnRpY0NvbG9ycy5kaXNhYmxlZEJhY2tncm91bmQsXG4gICAgICAgIGNvbG9yOiAhZGlzYWJsZWQgPyBzZW1hbnRpY0NvbG9ycy5pbnB1dFBsYWNlaG9sZGVyVGV4dCA6IHNlbWFudGljQ29sb3JzLmRpc2FibGVkVGV4dCxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgcGFkZGluZzogJzAgMTBweCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICBmbGV4U2hyaW5rOiAwLFxuICAgICAgICBzZWxlY3RvcnM6IChfYSA9IHt9LFxuICAgICAgICAgICAgX2FbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdXaW5kb3cnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBkaXNhYmxlZCA/ICdHcmF5VGV4dCcgOiAnV2luZG93VGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2EpLFxuICAgIH07XG4gICAgLy8gcGxhY2Vob2xkZXIgc3R5bGUgY29uc3RhbnRzXG4gICAgdmFyIHBsYWNlaG9sZGVyU3R5bGVzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuaW5wdXRQbGFjZWhvbGRlclRleHQsXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2IgPSB7fSxcbiAgICAgICAgICAgICAgICBfYltIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnR3JheVRleHQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2IpLFxuICAgICAgICB9LFxuICAgIF07XG4gICAgdmFyIGRpc2FibGVkUGxhY2Vob2xkZXJTdHlsZXMgPSB7XG4gICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5kaXNhYmxlZFRleHQsXG4gICAgICAgIHNlbGVjdG9yczogKF9jID0ge30sXG4gICAgICAgICAgICBfY1tIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICdHcmF5VGV4dCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2MpLFxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgcmVxdWlyZWQgJiYgY2xhc3NOYW1lcy5yZXF1aXJlZCxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIGNsYXNzTmFtZXMuZGlzYWJsZWQsXG4gICAgICAgICAgICBmb2N1c2VkICYmIGNsYXNzTmFtZXMuYWN0aXZlLFxuICAgICAgICAgICAgbXVsdGlsaW5lICYmIGNsYXNzTmFtZXMubXVsdGlsaW5lLFxuICAgICAgICAgICAgYm9yZGVybGVzcyAmJiBjbGFzc05hbWVzLmJvcmRlcmxlc3MsXG4gICAgICAgICAgICB1bmRlcmxpbmVkICYmIGNsYXNzTmFtZXMudW5kZXJsaW5lZCxcbiAgICAgICAgICAgIG5vcm1hbGl6ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIHdyYXBwZXI6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMud3JhcHBlcixcbiAgICAgICAgICAgIHVuZGVybGluZWQgJiYgW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIFwiLmNvbmNhdCghaGFzRXJyb3JNZXNzYWdlID8gc2VtYW50aWNDb2xvcnMuaW5wdXRCb3JkZXIgOiBzZW1hbnRpY0NvbG9ycy5lcnJvclRleHQpLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQgJiYge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfZCA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgX2RbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0gX19hc3NpZ24oeyBib3JkZXJDb2xvcjogJ0dyYXlUZXh0JyB9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2QpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIWRpc2FibGVkICYmIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiAhaGFzRXJyb3JNZXNzYWdlID8gc2VtYW50aWNDb2xvcnMuaW5wdXRCb3JkZXJIb3ZlcmVkIDogc2VtYW50aWNDb2xvcnMuZXJyb3JUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9lID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgYm9yZGVyQm90dG9tQ29sb3I6ICdIaWdobGlnaHQnIH0sIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmb2N1c2VkICYmIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGdldElucHV0Rm9jdXNTdHlsZSghaGFzRXJyb3JNZXNzYWdlID8gc2VtYW50aWNDb2xvcnMuaW5wdXRGb2N1c0JvcmRlckFsdCA6IHNlbWFudGljQ29sb3JzLmVycm9yVGV4dCwgMCwgJ2JvcmRlckJvdHRvbScpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmZpZWxkR3JvdXAsXG4gICAgICAgICAgICBub3JtYWxpemUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQoc2VtYW50aWNDb2xvcnMuaW5wdXRCb3JkZXIpLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogZWZmZWN0cy5yb3VuZGVkQ29ybmVyMixcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBzZW1hbnRpY0NvbG9ycy5pbnB1dEJhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMixcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11bHRpbGluZSAmJiB7XG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAnNjBweCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAgICAgIWRpc2FibGVkICYmIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBzZW1hbnRpY0NvbG9ycy5pbnB1dEJvcmRlckhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfZiA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgYm9yZGVyQ29sb3I6ICdIaWdobGlnaHQnIH0sIGdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2YpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNlZCAmJlxuICAgICAgICAgICAgICAgICF1bmRlcmxpbmVkICYmXG4gICAgICAgICAgICAgICAgZ2V0SW5wdXRGb2N1c1N0eWxlKCFoYXNFcnJvck1lc3NhZ2UgPyBzZW1hbnRpY0NvbG9ycy5pbnB1dEZvY3VzQm9yZGVyQWx0IDogc2VtYW50aWNDb2xvcnMuZXJyb3JUZXh0LCBlZmZlY3RzLnJvdW5kZWRDb3JuZXIyKSxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIHtcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9nID0ge30sXG4gICAgICAgICAgICAgICAgICAgIF9nW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgYm9yZGVyQ29sb3I6ICdHcmF5VGV4dCcgfSwgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgX2cpLFxuICAgICAgICAgICAgICAgIGN1cnNvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvcmRlcmxlc3MgJiYge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvcmRlcmxlc3MgJiZcbiAgICAgICAgICAgICAgICBmb2N1c2VkICYmIHtcbiAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJzphZnRlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5kZXJsaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgZmxleDogJzEgMSAwcHgnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuZGVybGluZWQgJiZcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCAmJiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc0Vycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgICF1bmRlcmxpbmVkICYmIHtcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogc2VtYW50aWNDb2xvcnMuZXJyb3JUZXh0LFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBzZW1hbnRpY0NvbG9ycy5lcnJvclRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAhaGFzTGFiZWwgJiZcbiAgICAgICAgICAgICAgICByZXF1aXJlZCAmJiB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2ggPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnOmJlZm9yZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIicqJ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5lcnJvclRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogLTEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfaFtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOmJlZm9yZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdXaW5kb3dUZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IC0xNCwgLy8gbW92aW5nIHRoZSAqIDQgcGl4ZWwgdG8gcmlnaHQgdG8gYWxsZXZpYXRlIGJvcmRlciBjbGlwcGluZyBpbiBIQyBtb2RlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfaCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBmaWVsZDogW1xuICAgICAgICAgICAgZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5maWVsZCxcbiAgICAgICAgICAgIG5vcm1hbGl6ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuaW5wdXRUZXh0LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDhweCcsXG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgICAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcmOmFjdGl2ZSwgJjpmb2N1cywgJjpob3Zlcic6IHsgb3V0bGluZTogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJzo6LW1zLWNsZWFyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX2pbSGlnaENvbnRyYXN0U2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ1dpbmRvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogZGlzYWJsZWQgPyAnR3JheVRleHQnIDogJ1dpbmRvd1RleHQnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfaiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UGxhY2Vob2xkZXJTdHlsZXMocGxhY2Vob2xkZXJTdHlsZXMpLFxuICAgICAgICAgICAgbXVsdGlsaW5lICYmXG4gICAgICAgICAgICAgICAgIXJlc2l6YWJsZSAmJiBbXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lcy51bnJlc2l6YWJsZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJlc2l6ZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbXVsdGlsaW5lICYmIHtcbiAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAxNyxcbiAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSxcbiAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiA2LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IDYsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11bHRpbGluZSAmJlxuICAgICAgICAgICAgICAgIGF1dG9BZGp1c3RIZWlnaHQgJiYge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYXNJY29uICYmXG4gICAgICAgICAgICAgICAgIWhhc1JldmVhbEJ1dHRvbiAmJiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAyNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtdWx0aWxpbmUgJiZcbiAgICAgICAgICAgICAgICBoYXNJY29uICYmIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDQwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRpc2FibGVkICYmIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRUZXh0LFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogc2VtYW50aWNDb2xvcnMuZGlzYWJsZWRCYWNrZ3JvdW5kLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0UGxhY2Vob2xkZXJTdHlsZXMoZGlzYWJsZWRQbGFjZWhvbGRlclN0eWxlcyksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdW5kZXJsaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNlZCAmJlxuICAgICAgICAgICAgICAgICFib3JkZXJsZXNzICYmIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfayA9IHt9LFxuICAgICAgICAgICAgICAgICAgICBfa1tIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogMTEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDExLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfayksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZm9jdXNlZCAmJlxuICAgICAgICAgICAgICAgIG11bHRpbGluZSAmJlxuICAgICAgICAgICAgICAgICFib3JkZXJsZXNzICYmIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfbCA9IHt9LFxuICAgICAgICAgICAgICAgICAgICBfbFtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiA0LCAvLyB0YWtlIGludG8gY29uc2lkZXJhdGlvbiB0aGUgMnB4IGluY3JlYXNlZCBib3JkZXItd2lkdGggKG5vdCB3aGVuIGJvcmRlcmxlc3MpLlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfbCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5wdXRDbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgICAgIGljb246IFtcbiAgICAgICAgICAgIG11bHRpbGluZSAmJiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiAyNCxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnZmxleC1lbmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgYm90dG9tOiA2LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiA4LFxuICAgICAgICAgICAgICAgIHRvcDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiBJY29uRm9udFNpemVzLm1lZGl1bSxcbiAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0OiAxOCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmRpc2FibGVkVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5ib2R5U3VidGV4dCxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogZm9udHMueFNtYWxsLmZvbnRTaXplLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIEFuaW1hdGlvbkNsYXNzTmFtZXMuc2xpZGVEb3duSW4yMCxcbiAgICAgICAgICAgIGZvbnRzLnNtYWxsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBzZW1hbnRpY0NvbG9ycy5lcnJvclRleHQsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDUsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcHJlZml4OiBbY2xhc3NOYW1lcy5wcmVmaXgsIGZpZWxkUHJlZml4U3VmZml4XSxcbiAgICAgICAgc3VmZml4OiBbY2xhc3NOYW1lcy5zdWZmaXgsIGZpZWxkUHJlZml4U3VmZml4XSxcbiAgICAgICAgcmV2ZWFsQnV0dG9uOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnJldmVhbEJ1dHRvbixcbiAgICAgICAgICAgICdtcy1CdXR0b24nLFxuICAgICAgICAgICAgJ21zLUJ1dHRvbi0taWNvbicsXG4gICAgICAgICAgICBnZXRGb2N1c1N0eWxlKHRoZW1lLCB7IGluc2V0OiAxIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhlaWdodDogMzAsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDMyLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwcHggNHB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLmxpbmssXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNlbWFudGljQ29sb3JzLnByaW1hcnlCdXR0b25CYWNrZ3JvdW5kSG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc2VtYW50aWNDb2xvcnMuYnV0dG9uQmFja2dyb3VuZEhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfbSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICdIaWdobGlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ0hpZ2hsaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbSksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICc6Zm9jdXMnOiB7IG91dGxpbmU6IDAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc0ljb24gJiYge1xuICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAyOCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHJldmVhbFNwYW46IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgIH0sXG4gICAgICAgIHJldmVhbEljb246IHtcbiAgICAgICAgICAgIG1hcmdpbjogJzBweCA0cHgnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgYm90dG9tOiA2LFxuICAgICAgICAgICAgcmlnaHQ6IDgsXG4gICAgICAgICAgICB0b3A6ICdhdXRvJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiBJY29uRm9udFNpemVzLm1lZGl1bSxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6IDE4LFxuICAgICAgICB9LFxuICAgICAgICBzdWJDb21wb25lbnRTdHlsZXM6IHtcbiAgICAgICAgICAgIGxhYmVsOiBnZXRMYWJlbFN0eWxlcyhwcm9wcyksXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHRGaWVsZC5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IFRleHRGaWVsZEJhc2UgfSBmcm9tICcuL1RleHRGaWVsZC5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vVGV4dEZpZWxkLnN0eWxlcyc7XG5leHBvcnQgdmFyIFRleHRGaWVsZCA9IHN0eWxlZChUZXh0RmllbGRCYXNlLCBnZXRTdHlsZXMsIHVuZGVmaW5lZCwge1xuICAgIHNjb3BlOiAnVGV4dEZpZWxkJyxcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGV4dEZpZWxkLmpzLm1hcCIsImltcG9ydCB7IEFuaW1hdGlvblZhcmlhYmxlcywgZ2V0R2xvYmFsQ2xhc3NOYW1lcywgWkluZGV4ZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmV4cG9ydCB2YXIgYW5pbWF0aW9uRHVyYXRpb24gPSBBbmltYXRpb25WYXJpYWJsZXMuZHVyYXRpb25WYWx1ZTI7XG52YXIgZ2xvYmFsQ2xhc3NOYW1lcyA9IHtcbiAgICByb290OiAnbXMtTW9kYWwnLFxuICAgIG1haW46ICdtcy1EaWFsb2ctbWFpbicsXG4gICAgc2Nyb2xsYWJsZUNvbnRlbnQ6ICdtcy1Nb2RhbC1zY3JvbGxhYmxlQ29udGVudCcsXG4gICAgaXNPcGVuOiAnaXMtb3BlbicsXG4gICAgbGF5ZXI6ICdtcy1Nb2RhbC1MYXllcicsXG59O1xuZXhwb3J0IHZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgY29udGFpbmVyQ2xhc3NOYW1lID0gcHJvcHMuY29udGFpbmVyQ2xhc3NOYW1lLCBzY3JvbGxhYmxlQ29udGVudENsYXNzTmFtZSA9IHByb3BzLnNjcm9sbGFibGVDb250ZW50Q2xhc3NOYW1lLCBpc09wZW4gPSBwcm9wcy5pc09wZW4sIGlzVmlzaWJsZSA9IHByb3BzLmlzVmlzaWJsZSwgaGFzQmVlbk9wZW5lZCA9IHByb3BzLmhhc0JlZW5PcGVuZWQsIG1vZGFsUmVjdGFuZ2xlVG9wID0gcHJvcHMubW9kYWxSZWN0YW5nbGVUb3AsIHRoZW1lID0gcHJvcHMudGhlbWUsIHRvcE9mZnNldEZpeGVkID0gcHJvcHMudG9wT2Zmc2V0Rml4ZWQsIGlzTW9kZWxlc3MgPSBwcm9wcy5pc01vZGVsZXNzLCBsYXllckNsYXNzTmFtZSA9IHByb3BzLmxheWVyQ2xhc3NOYW1lLCBpc0RlZmF1bHREcmFnSGFuZGxlID0gcHJvcHMuaXNEZWZhdWx0RHJhZ0hhbmRsZSwgd2luZG93SW5uZXJIZWlnaHQgPSBwcm9wcy53aW5kb3dJbm5lckhlaWdodDtcbiAgICB2YXIgcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUsIGVmZmVjdHMgPSB0aGVtZS5lZmZlY3RzLCBmb250cyA9IHRoZW1lLmZvbnRzO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0R2xvYmFsQ2xhc3NOYW1lcyhnbG9iYWxDbGFzc05hbWVzLCB0aGVtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgZm9udHMubWVkaXVtLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJvcGFjaXR5IFwiLmNvbmNhdChhbmltYXRpb25EdXJhdGlvbiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG9wT2Zmc2V0Rml4ZWQgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgbW9kYWxSZWN0YW5nbGVUb3AgPT09ICdudW1iZXInICYmXG4gICAgICAgICAgICAgICAgaGFzQmVlbk9wZW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlzT3BlbiAmJiBjbGFzc05hbWVzLmlzT3BlbixcbiAgICAgICAgICAgIGlzVmlzaWJsZSAmJiB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc1Zpc2libGUgJiZcbiAgICAgICAgICAgICAgICAhaXNNb2RlbGVzcyAmJiB7XG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgXSxcbiAgICAgICAgbWFpbjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5tYWluLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJveFNoYWRvdzogZWZmZWN0cy5lbGV2YXRpb242NCxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IGVmZmVjdHMucm91bmRlZENvcm5lcjIsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgIHRleHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICAgICAgICAgIG91dGxpbmU6ICczcHggc29saWQgdHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIG1heEhlaWdodDogJ2NhbGMoMTAwJSAtIDMycHgpJyxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogJ2NhbGMoMTAwJSAtIDMycHgpJyxcbiAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcxNzZweCcsXG4gICAgICAgICAgICAgICAgbWluV2lkdGg6ICcyODhweCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgekluZGV4OiBpc01vZGVsZXNzID8gWkluZGV4ZXMuTGF5ZXIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNNb2RlbGVzcyAmJiB7XG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRvcE9mZnNldEZpeGVkICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG1vZGFsUmVjdGFuZ2xlVG9wID09PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgICAgIGhhc0JlZW5PcGVuZWQgJiYge1xuICAgICAgICAgICAgICAgIHRvcDogbW9kYWxSZWN0YW5nbGVUb3AsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNEZWZhdWx0RHJhZ0hhbmRsZSAmJiB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiAnbW92ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGFpbmVyQ2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgICAgICBzY3JvbGxhYmxlQ29udGVudDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5zY3JvbGxhYmxlQ29udGVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgICAgICAgICAgICBmbGV4R3JvdzogMSxcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2FbJ0BzdXBwb3J0cyAoLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoKSddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiB3aW5kb3dJbm5lckhlaWdodCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX2EpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbGFibGVDb250ZW50Q2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgICAgICBsYXllcjogaXNNb2RlbGVzcyAmJiBbbGF5ZXJDbGFzc05hbWUsIGNsYXNzTmFtZXMubGF5ZXIsIHsgcG9pbnRlckV2ZW50czogJ25vbmUnIH1dLFxuICAgICAgICBrZXlib2FyZE1vdmVJY29uQ29udGFpbmVyOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBwYWRkaW5nOiAnM3B4IDBweCcsXG4gICAgICAgIH0sXG4gICAgICAgIGtleWJvYXJkTW92ZUljb246IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgZm9udFNpemU6IGZvbnRzLnhMYXJnZVBsdXMuZm9udFNpemUsXG4gICAgICAgICAgICB3aWR0aDogJzI0cHgnLFxuICAgICAgICB9LFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWwuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiwgZ2V0TmF0aXZlUHJvcHMsIGRpdlByb3BlcnRpZXMsIGVuYWJsZUJvZHlTY3JvbGwsIGRpc2FibGVCb2R5U2Nyb2xsLCBpbml0aWFsaXplQ29tcG9uZW50UmVmLCB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbigpO1xudmFyIE92ZXJsYXlCYXNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhPdmVybGF5QmFzZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPdmVybGF5QmFzZShwcm9wcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgaW5pdGlhbGl6ZUNvbXBvbmVudFJlZihfdGhpcyk7XG4gICAgICAgIHZhciBfYSA9IF90aGlzLnByb3BzLmFsbG93VG91Y2hCb2R5U2Nyb2xsLCBhbGxvd1RvdWNoQm9keVNjcm9sbCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hO1xuICAgICAgICBfdGhpcy5fYWxsb3dUb3VjaEJvZHlTY3JvbGwgPSBhbGxvd1RvdWNoQm9keVNjcm9sbDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPdmVybGF5QmFzZS5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICF0aGlzLl9hbGxvd1RvdWNoQm9keVNjcm9sbCAmJiBkaXNhYmxlQm9keVNjcm9sbCgpO1xuICAgIH07XG4gICAgT3ZlcmxheUJhc2UucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAhdGhpcy5fYWxsb3dUb3VjaEJvZHlTY3JvbGwgJiYgZW5hYmxlQm9keVNjcm9sbCgpO1xuICAgIH07XG4gICAgT3ZlcmxheUJhc2UucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgaXNEYXJrID0gX2EuaXNEYXJrVGhlbWVkLCBjbGFzc05hbWUgPSBfYS5jbGFzc05hbWUsIHRoZW1lID0gX2EudGhlbWUsIHN0eWxlcyA9IF9hLnN0eWxlcztcbiAgICAgICAgdmFyIGRpdlByb3BzID0gZ2V0TmF0aXZlUHJvcHModGhpcy5wcm9wcywgZGl2UHJvcGVydGllcyk7XG4gICAgICAgIHZhciBjbGFzc05hbWVzID0gZ2V0Q2xhc3NOYW1lcyhzdHlsZXMsIHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgICAgICAgaXNEYXJrOiBpc0RhcmssXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCBfX2Fzc2lnbih7fSwgZGl2UHJvcHMsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLnJvb3QgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIE92ZXJsYXlCYXNlO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IE92ZXJsYXlCYXNlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1PdmVybGF5LmJhc2UuanMubWFwIiwiaW1wb3J0IHsgSGlnaENvbnRyYXN0U2VsZWN0b3IsIGdldEdsb2JhbENsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbnZhciBHbG9iYWxDbGFzc05hbWVzID0ge1xuICAgIHJvb3Q6ICdtcy1PdmVybGF5JyxcbiAgICByb290RGFyazogJ21zLU92ZXJsYXktLWRhcmsnLFxufTtcbmV4cG9ydCB2YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHRoZW1lID0gcHJvcHMudGhlbWUsIGlzTm9uZSA9IHByb3BzLmlzTm9uZSwgaXNEYXJrID0gcHJvcHMuaXNEYXJrO1xuICAgIHZhciBwYWxldHRlID0gdGhlbWUucGFsZXR0ZTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoR2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgIHRoZW1lLmZvbnRzLm1lZGl1bSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUud2hpdGVUcmFuc2x1Y2VudDQwLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfYSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICBfYVtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgV2luZG93VGV4dCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNOb25lICYmIHtcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpc0RhcmsgJiYgW1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdERhcmssXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUuYmxhY2tUcmFuc2x1Y2VudDQwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T3ZlcmxheS5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IE92ZXJsYXlCYXNlIH0gZnJvbSAnLi9PdmVybGF5LmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9PdmVybGF5LnN0eWxlcyc7XG5leHBvcnQgdmFyIE92ZXJsYXkgPSBzdHlsZWQoT3ZlcmxheUJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdPdmVybGF5Jyxcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T3ZlcmxheS5qcy5tYXAiLCJpbXBvcnQgeyBtZW1vaXplRnVuY3Rpb24gfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgbWVyZ2VTdHlsZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmV4cG9ydCB2YXIgZ2V0Q2xhc3NOYW1lcyA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAoY2xhc3NOYW1lLCBpc0RyYWdnaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogbWVyZ2VTdHlsZXMoY2xhc3NOYW1lLCBpc0RyYWdnaW5nICYmIHtcbiAgICAgICAgICAgIHRvdWNoQWN0aW9uOiAnbm9uZScsXG4gICAgICAgICAgICBzZWxlY3RvcnM6IHtcbiAgICAgICAgICAgICAgICAnJiAqJzoge1xuICAgICAgICAgICAgICAgICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYWdnYWJsZVpvbmUuc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldENsYXNzTmFtZXMgfSBmcm9tICcuL0RyYWdnYWJsZVpvbmUuc3R5bGVzJztcbmltcG9ydCB7IG9uIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbnZhciBldmVudE1hcHBpbmcgPSB7XG4gICAgdG91Y2g6IHtcbiAgICAgICAgc3RhcnQ6ICd0b3VjaHN0YXJ0JyxcbiAgICAgICAgbW92ZTogJ3RvdWNobW92ZScsXG4gICAgICAgIHN0b3A6ICd0b3VjaGVuZCcsXG4gICAgfSxcbiAgICBtb3VzZToge1xuICAgICAgICBzdGFydDogJ21vdXNlZG93bicsXG4gICAgICAgIG1vdmU6ICdtb3VzZW1vdmUnLFxuICAgICAgICBzdG9wOiAnbW91c2V1cCcsXG4gICAgfSxcbn07XG52YXIgRHJhZ2dhYmxlWm9uZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRHJhZ2dhYmxlWm9uZSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEcmFnZ2FibGVab25lKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5fY3VycmVudEV2ZW50VHlwZSA9IGV2ZW50TWFwcGluZy5tb3VzZTtcbiAgICAgICAgX3RoaXMuX2V2ZW50cyA9IFtdO1xuICAgICAgICBfdGhpcy5fb25Nb3VzZURvd24gPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHZhciBvbk1vdXNlRG93biA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoX3RoaXMucHJvcHMuY2hpbGRyZW4pLnByb3BzLm9uTW91c2VEb3duO1xuICAgICAgICAgICAgaWYgKG9uTW91c2VEb3duKSB7XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd24oZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuX2N1cnJlbnRFdmVudFR5cGUgPSBldmVudE1hcHBpbmcubW91c2U7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX29uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uTW91c2VVcCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgdmFyIG9uTW91c2VVcCA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoX3RoaXMucHJvcHMuY2hpbGRyZW4pLnByb3BzLm9uTW91c2VVcDtcbiAgICAgICAgICAgIGlmIChvbk1vdXNlVXApIHtcbiAgICAgICAgICAgICAgICBvbk1vdXNlVXAoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgX3RoaXMuX2N1cnJlbnRFdmVudFR5cGUgPSBldmVudE1hcHBpbmcubW91c2U7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX29uRHJhZ1N0b3AoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25Ub3VjaFN0YXJ0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgb25Ub3VjaFN0YXJ0ID0gUmVhY3QuQ2hpbGRyZW4ub25seShfdGhpcy5wcm9wcy5jaGlsZHJlbikucHJvcHMub25Ub3VjaFN0YXJ0O1xuICAgICAgICAgICAgaWYgKG9uVG91Y2hTdGFydCkge1xuICAgICAgICAgICAgICAgIG9uVG91Y2hTdGFydChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5fY3VycmVudEV2ZW50VHlwZSA9IGV2ZW50TWFwcGluZy50b3VjaDtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5fb25EcmFnU3RhcnQoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25Ub3VjaEVuZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgdmFyIG9uVG91Y2hFbmQgPSBSZWFjdC5DaGlsZHJlbi5vbmx5KF90aGlzLnByb3BzLmNoaWxkcmVuKS5wcm9wcy5vblRvdWNoRW5kO1xuICAgICAgICAgICAgaWYgKG9uVG91Y2hFbmQpIHtcbiAgICAgICAgICAgICAgICBvblRvdWNoRW5kKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLl9jdXJyZW50RXZlbnRUeXBlID0gZXZlbnRNYXBwaW5nLnRvdWNoO1xuICAgICAgICAgICAgX3RoaXMuX29uRHJhZ1N0b3AoZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25EcmFnU3RhcnQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgaGFuZGxlIGxlZnQgY2xpY2sgZm9yIGRyYWdnaW5nXG4gICAgICAgICAgICBpZiAodHlwZW9mIGV2ZW50LmJ1dHRvbiA9PT0gJ251bWJlcicgJiYgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBkb2Vzbid0IG1hdGNoIHRoZSBoYW5kbGVTZWxlY3RvciBPUlxuICAgICAgICAgICAgLy8gaWYgdGhlIHRhcmdldCBkb2VzIG1hdGNoIHRoZSBwcmV2ZW50RHJhZ1NlbGVjdG9yLCBiYWlsIG91dFxuICAgICAgICAgICAgaWYgKChfdGhpcy5wcm9wcy5oYW5kbGVTZWxlY3RvciAmJiAhX3RoaXMuX21hdGNoZXNTZWxlY3RvcihldmVudC50YXJnZXQsIF90aGlzLnByb3BzLmhhbmRsZVNlbGVjdG9yKSkgfHxcbiAgICAgICAgICAgICAgICAoX3RoaXMucHJvcHMucHJldmVudERyYWdTZWxlY3RvciAmJlxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fbWF0Y2hlc1NlbGVjdG9yKGV2ZW50LnRhcmdldCwgX3RoaXMucHJvcHMucHJldmVudERyYWdTZWxlY3RvcikpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHRvdWNoIGlkZW50aWZpZXIgaWYgdGhpcyBpcyBhIHRvdWNoIGV2ZW50IHNvIHdlIGNhblxuICAgICAgICAgICAgLy8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBpbmRpdmlkdWFsIHRvdWNoZXMgaW4gbXVsdGl0b3VjaCBzY2VuYXJpb3NcbiAgICAgICAgICAgIC8vIGJ5IHJlbWVtYmVyaW5nIHdoaWNoIHRvdWNoIHBvaW50IHdlIHdlcmUgZ2l2ZW5cbiAgICAgICAgICAgIF90aGlzLl90b3VjaElkID0gX3RoaXMuX2dldFRvdWNoSWQoZXZlbnQpO1xuICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0gX3RoaXMuX2dldENvbnRyb2xQb3NpdGlvbihldmVudCk7XG4gICAgICAgICAgICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBkcmFnRGF0YSA9IF90aGlzLl9jcmVhdGVEcmFnRGF0YUZyb21Qb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgICAgICBfdGhpcy5wcm9wcy5vblN0YXJ0ICYmIF90aGlzLnByb3BzLm9uU3RhcnQoZXZlbnQsIGRyYWdEYXRhKTtcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBpc0RyYWdnaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGxhc3RQb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGhvb2sgdXAgdGhlIGFwcHJvcHJpYXRlIG1vdXNlL3RvdWNoIGV2ZW50cyB0byB0aGUgYm9keSB0byBlbnN1cmVcbiAgICAgICAgICAgIC8vIHNtb290aCBkcmFnZ2luZ1xuICAgICAgICAgICAgX3RoaXMuX2V2ZW50cyA9IFtcbiAgICAgICAgICAgICAgICBvbihkb2N1bWVudC5ib2R5LCBfdGhpcy5fY3VycmVudEV2ZW50VHlwZS5tb3ZlLCBfdGhpcy5fb25EcmFnLCB0cnVlIC8qIHVzZSBjYXB0dXJlIHBoYXNlICovKSxcbiAgICAgICAgICAgICAgICBvbihkb2N1bWVudC5ib2R5LCBfdGhpcy5fY3VycmVudEV2ZW50VHlwZS5zdG9wLCBfdGhpcy5fb25EcmFnU3RvcCwgdHJ1ZSAvKiB1c2UgY2FwdHVyZSBwaGFzZSAqLyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5fb25EcmFnID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbGluZyBvbiBtb2JpbGUgZGV2aWNlc1xuICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b3VjaG1vdmUnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IF90aGlzLl9nZXRDb250cm9sUG9zaXRpb24oZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgdXBkYXRlZCBkcmFnIGRhdGEgZnJvbSB0aGUgcG9zaXRpb24gZGF0YVxuICAgICAgICAgICAgdmFyIHVwZGF0ZWREYXRhID0gX3RoaXMuX2NyZWF0ZVVwZGF0ZWREcmFnRGF0YShfdGhpcy5fY3JlYXRlRHJhZ0RhdGFGcm9tUG9zaXRpb24ocG9zaXRpb24pKTtcbiAgICAgICAgICAgIHZhciB1cGRhdGVkUG9zaXRpb24gPSB1cGRhdGVkRGF0YS5wb3NpdGlvbjtcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uRHJhZ0NoYW5nZSAmJiBfdGhpcy5wcm9wcy5vbkRyYWdDaGFuZ2UoZXZlbnQsIHVwZGF0ZWREYXRhKTtcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdXBkYXRlZFBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGxhc3RQb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMuX29uRHJhZ1N0b3AgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICghX3RoaXMuc3RhdGUuaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IF90aGlzLl9nZXRDb250cm9sUG9zaXRpb24oZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCFwb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBiYXNlRHJhZ0RhdGEgPSBfdGhpcy5fY3JlYXRlRHJhZ0RhdGFGcm9tUG9zaXRpb24ocG9zaXRpb24pO1xuICAgICAgICAgICAgLy8gU2V0IGRyYWdnaW5nIHRvIGZhbHNlIGFuZCByZXNldCB0aGUgbGFzdFBvc2l0aW9uXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGFzdFBvc2l0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uU3RvcCAmJiBfdGhpcy5wcm9wcy5vblN0b3AoZXZlbnQsIGJhc2VEcmFnRGF0YSk7XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBfdGhpcy5wcm9wcy5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlbW92ZSBldmVudCBoYW5kbGVyc1xuICAgICAgICAgICAgX3RoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChkaXNwb3NlKSB7IHJldHVybiBkaXNwb3NlKCk7IH0pO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICAgICAgICAgICAgcG9zaXRpb246IF90aGlzLnByb3BzLnBvc2l0aW9uIHx8IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgICAgbGFzdFBvc2l0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgRHJhZ2dhYmxlWm9uZS5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5wb3NpdGlvbiAmJiAoIXByZXZQcm9wcy5wb3NpdGlvbiB8fCB0aGlzLnByb3BzLnBvc2l0aW9uICE9PSBwcmV2UHJvcHMucG9zaXRpb24pKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgcG9zaXRpb246IHRoaXMucHJvcHMucG9zaXRpb24gfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERyYWdnYWJsZVpvbmUucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLl9ldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZGlzcG9zZSkgeyByZXR1cm4gZGlzcG9zZSgpOyB9KTtcbiAgICB9O1xuICAgIERyYWdnYWJsZVpvbmUucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTtcbiAgICAgICAgdmFyIHByb3BzID0gY2hpbGQucHJvcHM7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IHRoaXMucHJvcHMucG9zaXRpb247XG4gICAgICAgIHZhciBfYSA9IHRoaXMuc3RhdGUsIHN0YXRlUG9zaXRpb24gPSBfYS5wb3NpdGlvbiwgaXNEcmFnZ2luZyA9IF9hLmlzRHJhZ2dpbmc7XG4gICAgICAgIHZhciB4ID0gc3RhdGVQb3NpdGlvbi54O1xuICAgICAgICB2YXIgeSA9IHN0YXRlUG9zaXRpb24ueTtcbiAgICAgICAgaWYgKHBvc2l0aW9uICYmICFpc0RyYWdnaW5nKSB7XG4gICAgICAgICAgICB4ID0gcG9zaXRpb24ueDtcbiAgICAgICAgICAgIHkgPSBwb3NpdGlvbi55O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgICAgIHN0eWxlOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHJvcHMuc3R5bGUpLCB7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoXCIuY29uY2F0KHgsIFwicHgsIFwiKS5jb25jYXQoeSwgXCJweClcIikgfSksXG4gICAgICAgICAgICBjbGFzc05hbWU6IGdldENsYXNzTmFtZXMocHJvcHMuY2xhc3NOYW1lLCB0aGlzLnN0YXRlLmlzRHJhZ2dpbmcpLnJvb3QsXG4gICAgICAgICAgICBvbk1vdXNlRG93bjogdGhpcy5fb25Nb3VzZURvd24sXG4gICAgICAgICAgICBvbk1vdXNlVXA6IHRoaXMuX29uTW91c2VVcCxcbiAgICAgICAgICAgIG9uVG91Y2hTdGFydDogdGhpcy5fb25Ub3VjaFN0YXJ0LFxuICAgICAgICAgICAgb25Ub3VjaEVuZDogdGhpcy5fb25Ub3VjaEVuZCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGNvbnRyb2wgcG9zaXRpb24gYmFzZWQgb2ZmIHRoZSBldmVudCB0aGF0IGZpcmVkXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IHRvIGdldCBvZmZzZXRzIGZyb21cbiAgICAgKi9cbiAgICBEcmFnZ2FibGVab25lLnByb3RvdHlwZS5fZ2V0Q29udHJvbFBvc2l0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHZhciB0b3VjaE9iaiA9IHRoaXMuX2dldEFjdGl2ZVRvdWNoKGV2ZW50KTtcbiAgICAgICAgLy8gZGlkIHdlIGdldCB0aGUgcmlnaHQgdG91Y2g/XG4gICAgICAgIGlmICh0aGlzLl90b3VjaElkICE9PSB1bmRlZmluZWQgJiYgIXRvdWNoT2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHZhciBldmVudFRvR2V0T2Zmc2V0ID0gdG91Y2hPYmogfHwgZXZlbnQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBldmVudFRvR2V0T2Zmc2V0LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudFRvR2V0T2Zmc2V0LmNsaWVudFksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGFjdGl2ZSB0b3VjaCBwb2ludCB0aGF0IHdlIGhhdmUgc2F2ZWQgZnJvbSB0aGUgZXZlbnQncyBUb3VjaExpc3RcbiAgICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgdXNlZCB0byBnZXQgdGhlIFRvdWNoTGlzdCBmb3IgdGhlIGFjdGl2ZSB0b3VjaCBwb2ludFxuICAgICAqL1xuICAgIERyYWdnYWJsZVpvbmUucHJvdG90eXBlLl9nZXRBY3RpdmVUb3VjaCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICByZXR1cm4gKChldmVudC50YXJnZXRUb3VjaGVzICYmIHRoaXMuX2ZpbmRUb3VjaEluVG91Y2hMaXN0KGV2ZW50LnRhcmdldFRvdWNoZXMpKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIHRoaXMuX2ZpbmRUb3VjaEluVG91Y2hMaXN0KGV2ZW50LmNoYW5nZWRUb3VjaGVzKSkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBpbml0aWFsIHRvdWNoIGlkZW50aWZpZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBldmVudFxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBldmVudCB0aGF0IGNvbnRhaW5zIHRoZSBUb3VjaExpc3RcbiAgICAgKi9cbiAgICBEcmFnZ2FibGVab25lLnByb3RvdHlwZS5fZ2V0VG91Y2hJZCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgdG91Y2ggPSAoZXZlbnQudGFyZ2V0VG91Y2hlcyAmJiBldmVudC50YXJnZXRUb3VjaGVzWzBdKSB8fCAoZXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICBpZiAodG91Y2gpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3VjaC5pZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIGFuIGVsZW1lbnQgKG9yIGFueSBvZiB0aGUgZWxlbWVudCdzIHBhcmVudHMpIG1hdGNoIHRoZSBnaXZlbiBzZWxlY3RvclxuICAgICAqL1xuICAgIERyYWdnYWJsZVpvbmUucHJvdG90eXBlLl9tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWF0Y2hlc1NlbGVjdG9yRm4gPSBcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgIGVsZW1lbnQubWF0Y2hlcyB8fCBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yOyAvKiBmb3IgSUUgKi9cbiAgICAgICAgaWYgKCFtYXRjaGVzU2VsZWN0b3JGbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzU2VsZWN0b3JGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCB0aGlzLl9tYXRjaGVzU2VsZWN0b3IoZWxlbWVudC5wYXJlbnRFbGVtZW50LCBzZWxlY3Rvcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBmaW5kIHRoZSBUb3VjaCB0aGF0IG1hdGNoZXMgdGhlIGlkZW50aWZpZXIgIHdlIHN0b3JlZCBpbiBkcmFnU3RhcnRcbiAgICAgKiBAcGFyYW0gdG91Y2hMaXN0IFRoZSBUb3VjaExpc3QgdG8gbG9vayBmb3IgdGhlIHN0b3JlZCBpZGVudGlmaWVyIGZyb20gZHJhZ1N0YXJ0XG4gICAgICovXG4gICAgRHJhZ2dhYmxlWm9uZS5wcm90b3R5cGUuX2ZpbmRUb3VjaEluVG91Y2hMaXN0ID0gZnVuY3Rpb24gKHRvdWNoTGlzdCkge1xuICAgICAgICBpZiAodGhpcy5fdG91Y2hJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3VjaExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0b3VjaExpc3RbaV0uaWRlbnRpZmllciA9PT0gdGhpcy5fdG91Y2hJZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b3VjaExpc3RbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBEcmFnRGF0YSBiYXNlZCBvZmYgb2YgdGhlIGxhc3Qga25vd24gcG9zaXRpb24gYW5kIHRoZSBuZXcgcG9zaXRpb24gcGFzc2VkIGluXG4gICAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBuZXcgcG9zaXRpb24gYXMgcGFydCBvZiB0aGUgZHJhZ1xuICAgICAqL1xuICAgIERyYWdnYWJsZVpvbmUucHJvdG90eXBlLl9jcmVhdGVEcmFnRGF0YUZyb21Qb3NpdGlvbiA9IGZ1bmN0aW9uIChwb3NpdGlvbikge1xuICAgICAgICB2YXIgbGFzdFBvc2l0aW9uID0gdGhpcy5zdGF0ZS5sYXN0UG9zaXRpb247XG4gICAgICAgIC8vIElmIHdlIGhhdmUgbm8gbGFzdFBvc2l0aW9uLCB1c2UgdGhlIGdpdmVuIHBvc2l0aW9uXG4gICAgICAgIC8vIGZvciBsYXN0IHBvc2l0aW9uXG4gICAgICAgIGlmIChsYXN0UG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkZWx0YTogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgICAgICAgbGFzdFBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkZWx0YToge1xuICAgICAgICAgICAgICAgIHg6IHBvc2l0aW9uLnggLSBsYXN0UG9zaXRpb24ueCxcbiAgICAgICAgICAgICAgICB5OiBwb3NpdGlvbi55IC0gbGFzdFBvc2l0aW9uLnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFzdFBvc2l0aW9uOiBsYXN0UG9zaXRpb24sXG4gICAgICAgICAgICBwb3NpdGlvbjogcG9zaXRpb24sXG4gICAgICAgIH07XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIHVwZGF0ZWQgRHJhZ0RhdGEgYmFzZWQgb2ZmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGFuZCBnaXZlbiBiYXNlRHJhZ0RhdGFcbiAgICAgKiBAcGFyYW0gYmFzZURyYWdEYXRhIFRoZSBiYXNlIERyYWdEYXRhIChmcm9tIF9jcmVhdGVEcmFnRGF0YUZyb21Qb3NpdGlvbikgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHVwZGF0ZWQgcG9zaXRpb25zXG4gICAgICovXG4gICAgRHJhZ2dhYmxlWm9uZS5wcm90b3R5cGUuX2NyZWF0ZVVwZGF0ZWREcmFnRGF0YSA9IGZ1bmN0aW9uIChiYXNlRHJhZ0RhdGEpIHtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5zdGF0ZS5wb3NpdGlvbjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogcG9zaXRpb24ueCArIGJhc2VEcmFnRGF0YS5kZWx0YS54LFxuICAgICAgICAgICAgICAgIHk6IHBvc2l0aW9uLnkgKyBiYXNlRHJhZ0RhdGEuZGVsdGEueSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWx0YTogYmFzZURyYWdEYXRhLmRlbHRhLFxuICAgICAgICAgICAgbGFzdFBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBEcmFnZ2FibGVab25lO1xufShSZWFjdC5Db21wb25lbnQpKTtcbmV4cG9ydCB7IERyYWdnYWJsZVpvbmUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURyYWdnYWJsZVpvbmUuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiwgY3NzLCBhbGxvd1Njcm9sbE9uRWxlbWVudCwgYWxsb3dPdmVyc2Nyb2xsT25FbGVtZW50LCBnZXRQcm9wc1dpdGhEZWZhdWx0cywgS2V5Q29kZXMsIGVsZW1lbnRDb250YWlucywgRXZlbnRHcm91cCwgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgRm9jdXNUcmFwWm9uZSB9IGZyb20gJy4uLy4uL0ZvY3VzVHJhcFpvbmUnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuL01vZGFsLnN0eWxlcyc7XG5pbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnLi4vLi4vT3ZlcmxheSc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uLy4uL0xheWVyJztcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vLi4vUG9wdXAnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZU1vZGUsIHVzZVJlc3BvbnNpdmVNb2RlIH0gZnJvbSAnLi4vLi4vUmVzcG9uc2l2ZU1vZGUnO1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxIaW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL0RpcmVjdGlvbmFsSGludCc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vSWNvbic7XG5pbXBvcnQgeyBEcmFnZ2FibGVab25lIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0RyYWdnYWJsZVpvbmUvaW5kZXgnO1xuaW1wb3J0IHsgdXNlV2luZG93IH0gZnJvbSAnQGZsdWVudHVpL3JlYWN0LXdpbmRvdy1wcm92aWRlcic7XG5pbXBvcnQgeyB1c2VCb29sZWFuLCB1c2VNZXJnZWRSZWZzLCB1c2VXYXJuaW5ncywgdXNlQ29uc3QsIHVzZVNldFRpbWVvdXQsIHVzZUlkLCB1c2VVbm1vdW50LCB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG52YXIgWkVSTyA9IHsgeDogMCwgeTogMCB9O1xudmFyIERFRkFVTFRfUFJPUFMgPSB7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBpc0RhcmtPdmVybGF5OiB0cnVlLFxuICAgIGNsYXNzTmFtZTogJycsXG4gICAgY29udGFpbmVyQ2xhc3NOYW1lOiAnJyxcbiAgICBlbmFibGVBcmlhSGlkZGVuU2libGluZ3M6IHRydWUsXG59O1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oKTtcbnZhciBnZXRNb3ZlRGVsdGEgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICB2YXIgZGVsdGEgPSAxMDtcbiAgICBpZiAoZXYuc2hpZnRLZXkpIHtcbiAgICAgICAgaWYgKCFldi5jdHJsS2V5KSB7XG4gICAgICAgICAgICBkZWx0YSA9IDUwO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKGV2LmN0cmxLZXkpIHtcbiAgICAgICAgZGVsdGEgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gZGVsdGE7XG59O1xudmFyIHVzZUNvbXBvbmVudFJlZiA9IGZ1bmN0aW9uIChwcm9wcywgZm9jdXNUcmFwWm9uZSkge1xuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocHJvcHMuY29tcG9uZW50UmVmLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICBmb2N1czogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGZvY3VzVHJhcFpvbmUuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGZvY3VzVHJhcFpvbmUuY3VycmVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pOyB9LCBbZm9jdXNUcmFwWm9uZV0pO1xufTtcbmV4cG9ydCB2YXIgTW9kYWxCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHNXaXRob3V0RGVmYXVsdHMsIHJlZikge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgdmFyIHByb3BzID0gZ2V0UHJvcHNXaXRoRGVmYXVsdHMoREVGQVVMVF9QUk9QUywgcHJvcHNXaXRob3V0RGVmYXVsdHMpO1xuICAgIHZhciBhbGxvd1RvdWNoQm9keVNjcm9sbCA9IHByb3BzLmFsbG93VG91Y2hCb2R5U2Nyb2xsLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNvbnRhaW5lckNsYXNzTmFtZSA9IHByb3BzLmNvbnRhaW5lckNsYXNzTmFtZSwgc2Nyb2xsYWJsZUNvbnRlbnRDbGFzc05hbWUgPSBwcm9wcy5zY3JvbGxhYmxlQ29udGVudENsYXNzTmFtZSwgZWxlbWVudFRvRm9jdXNPbkRpc21pc3MgPSBwcm9wcy5lbGVtZW50VG9Gb2N1c09uRGlzbWlzcywgZmlyc3RGb2N1c2FibGVTZWxlY3RvciA9IHByb3BzLmZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IsIGZvY3VzVHJhcFpvbmVQcm9wcyA9IHByb3BzLmZvY3VzVHJhcFpvbmVQcm9wcywgZm9yY2VGb2N1c0luc2lkZVRyYXAgPSBwcm9wcy5mb3JjZUZvY3VzSW5zaWRlVHJhcCwgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgX2YgPSBwcm9wcy5kaXNhYmxlUmVzdG9yZUZvY3VzLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBkaXNhYmxlUmVzdG9yZUZvY3VzID0gX2YgPT09IHZvaWQgMCA/IHByb3BzLmlnbm9yZUV4dGVybmFsRm9jdXNpbmcgOiBfZiwgaXNCbG9ja2luZyA9IHByb3BzLmlzQmxvY2tpbmcsIGlzQWxlcnQgPSBwcm9wcy5pc0FsZXJ0LCBpc0NsaWNrYWJsZU91dHNpZGVGb2N1c1RyYXAgPSBwcm9wcy5pc0NsaWNrYWJsZU91dHNpZGVGb2N1c1RyYXAsIGlzRGFya092ZXJsYXkgPSBwcm9wcy5pc0RhcmtPdmVybGF5LCBvbkRpc21pc3MgPSBwcm9wcy5vbkRpc21pc3MsIGxheWVyUHJvcHMgPSBwcm9wcy5sYXllclByb3BzLCBvdmVybGF5ID0gcHJvcHMub3ZlcmxheSwgaXNPcGVuID0gcHJvcHMuaXNPcGVuLCB0aXRsZUFyaWFJZCA9IHByb3BzLnRpdGxlQXJpYUlkLCBzdHlsZXMgPSBwcm9wcy5zdHlsZXMsIHN1YnRpdGxlQXJpYUlkID0gcHJvcHMuc3VidGl0bGVBcmlhSWQsIHRoZW1lID0gcHJvcHMudGhlbWUsIHRvcE9mZnNldEZpeGVkID0gcHJvcHMudG9wT2Zmc2V0Rml4ZWQsIHJlc3BvbnNpdmVNb2RlID0gcHJvcHMucmVzcG9uc2l2ZU1vZGUsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIG9uTGF5ZXJEaWRNb3VudCA9IHByb3BzLm9uTGF5ZXJEaWRNb3VudCwgaXNNb2RlbGVzcyA9IHByb3BzLmlzTW9kZWxlc3MsIGRyYWdPcHRpb25zID0gcHJvcHMuZHJhZ09wdGlvbnMsIG9uRGlzbWlzc2VkID0gcHJvcHMub25EaXNtaXNzZWQsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIGVuYWJsZUFyaWFIaWRkZW5TaWJsaW5ncyA9IHByb3BzLmVuYWJsZUFyaWFIaWRkZW5TaWJsaW5ncywgcG9wdXBQcm9wcyA9IHByb3BzLnBvcHVwUHJvcHM7XG4gICAgdmFyIHJvb3RSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZvY3VzVHJhcFpvbmUgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGZvY3VzVHJhcFpvbmVSZWYgPSB1c2VNZXJnZWRSZWZzKGZvY3VzVHJhcFpvbmUsIGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gbnVsbCB8fCBmb2N1c1RyYXBab25lUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvY3VzVHJhcFpvbmVQcm9wcy5jb21wb25lbnRSZWYpO1xuICAgIHZhciBmb2N1c1RyYXBab25lRWxtID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBtZXJnZWRSZWYgPSB1c2VNZXJnZWRSZWZzKHJvb3RSZWYsIHJlZik7XG4gICAgdmFyIG1vZGFsUmVzcG9uc2l2ZU1vZGUgPSB1c2VSZXNwb25zaXZlTW9kZShtZXJnZWRSZWYpO1xuICAgIHZhciBmb2N1c1RyYXBab25lSWQgPSB1c2VJZCgnTW9kYWxGb2N1c1RyYXBab25lJywgZm9jdXNUcmFwWm9uZVByb3BzID09PSBudWxsIHx8IGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm9jdXNUcmFwWm9uZVByb3BzLmlkKTtcbiAgICB2YXIgd2luID0gdXNlV2luZG93KCk7XG4gICAgdmFyIF9nID0gdXNlU2V0VGltZW91dCgpLCBzZXRUaW1lb3V0ID0gX2cuc2V0VGltZW91dCwgY2xlYXJUaW1lb3V0ID0gX2cuY2xlYXJUaW1lb3V0O1xuICAgIHZhciBfaCA9IFJlYWN0LnVzZVN0YXRlKGlzT3BlbiksIGlzTW9kYWxPcGVuID0gX2hbMF0sIHNldElzTW9kYWxPcGVuID0gX2hbMV07XG4gICAgdmFyIF9qID0gUmVhY3QudXNlU3RhdGUoaXNPcGVuKSwgaXNWaXNpYmxlID0gX2pbMF0sIHNldElzVmlzaWJsZSA9IF9qWzFdO1xuICAgIHZhciBfayA9IFJlYWN0LnVzZVN0YXRlKFpFUk8pLCBjb29yZGluYXRlcyA9IF9rWzBdLCBzZXRDb29yZGluYXRlcyA9IF9rWzFdO1xuICAgIHZhciBfbCA9IFJlYWN0LnVzZVN0YXRlKCksIG1vZGFsUmVjdGFuZ2xlVG9wID0gX2xbMF0sIHNldE1vZGFsUmVjdGFuZ2xlVG9wID0gX2xbMV07XG4gICAgdmFyIF9tID0gdXNlQm9vbGVhbihmYWxzZSksIGlzTW9kYWxNZW51T3BlbiA9IF9tWzBdLCBfbyA9IF9tWzFdLCB0b2dnbGVNb2RhbE1lbnVPcGVuID0gX28udG9nZ2xlLCBzZXRNb2RhbE1lbnVDbG9zZSA9IF9vLnNldEZhbHNlO1xuICAgIHZhciBpbnRlcm5hbFN0YXRlID0gdXNlQ29uc3QoZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgb25Nb2RhbENsb3NlVGltZXI6IDAsXG4gICAgICAgIGFsbG93VG91Y2hCb2R5U2Nyb2xsOiBhbGxvd1RvdWNoQm9keVNjcm9sbCxcbiAgICAgICAgc2Nyb2xsYWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIGxhc3RTZXRDb29yZGluYXRlczogWkVSTyxcbiAgICAgICAgZXZlbnRzOiBuZXcgRXZlbnRHcm91cCh7fSksXG4gICAgfSk7IH0pO1xuICAgIHZhciBrZWVwSW5Cb3VuZHMgPSAoZHJhZ09wdGlvbnMgfHwge30pLmtlZXBJbkJvdW5kcztcbiAgICB2YXIgaXNBbGVydFJvbGUgPSBpc0FsZXJ0ICE9PSBudWxsICYmIGlzQWxlcnQgIT09IHZvaWQgMCA/IGlzQWxlcnQgOiAoaXNCbG9ja2luZyAmJiAhaXNNb2RlbGVzcyk7XG4gICAgdmFyIGxheWVyQ2xhc3NOYW1lID0gbGF5ZXJQcm9wcyA9PT0gdW5kZWZpbmVkID8gJycgOiBsYXllclByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7XG4gICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIGNvbnRhaW5lckNsYXNzTmFtZTogY29udGFpbmVyQ2xhc3NOYW1lLFxuICAgICAgICBzY3JvbGxhYmxlQ29udGVudENsYXNzTmFtZTogc2Nyb2xsYWJsZUNvbnRlbnRDbGFzc05hbWUsXG4gICAgICAgIGlzT3BlbjogaXNPcGVuLFxuICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgaGFzQmVlbk9wZW5lZDogaW50ZXJuYWxTdGF0ZS5oYXNCZWVuT3BlbmVkLFxuICAgICAgICBtb2RhbFJlY3RhbmdsZVRvcDogbW9kYWxSZWN0YW5nbGVUb3AsXG4gICAgICAgIHRvcE9mZnNldEZpeGVkOiB0b3BPZmZzZXRGaXhlZCxcbiAgICAgICAgaXNNb2RlbGVzczogaXNNb2RlbGVzcyxcbiAgICAgICAgbGF5ZXJDbGFzc05hbWU6IGxheWVyQ2xhc3NOYW1lLFxuICAgICAgICB3aW5kb3dJbm5lckhlaWdodDogd2luID09PSBudWxsIHx8IHdpbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2luLmlubmVySGVpZ2h0LFxuICAgICAgICBpc0RlZmF1bHREcmFnSGFuZGxlOiBkcmFnT3B0aW9ucyAmJiAhZHJhZ09wdGlvbnMuZHJhZ0hhbmRsZVNlbGVjdG9yLFxuICAgIH0pO1xuICAgIHZhciBtZXJnZWRMYXllclByb3BzID0gX19hc3NpZ24oX19hc3NpZ24oeyBldmVudEJ1YmJsaW5nRW5hYmxlZDogZmFsc2UgfSwgbGF5ZXJQcm9wcyksIHsgb25MYXllckRpZE1vdW50OiBsYXllclByb3BzICYmIGxheWVyUHJvcHMub25MYXllckRpZE1vdW50ID8gbGF5ZXJQcm9wcy5vbkxheWVyRGlkTW91bnQgOiBvbkxheWVyRGlkTW91bnQsIGluc2VydEZpcnN0OiAobGF5ZXJQcm9wcyA9PT0gbnVsbCB8fCBsYXllclByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBsYXllclByb3BzLmluc2VydEZpcnN0KSB8fCBpc01vZGVsZXNzLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMubGF5ZXIgfSk7XG4gICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gc2Nyb2xsIHdpdGhpbiB0aGUgbW9kYWwgYnV0IG5vdCBvbiB0aGUgYm9keVxuICAgIHZhciBhbGxvd1Njcm9sbE9uTW9kYWwgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZWx0KSB7XG4gICAgICAgIGlmIChlbHQpIHtcbiAgICAgICAgICAgIGlmIChpbnRlcm5hbFN0YXRlLmFsbG93VG91Y2hCb2R5U2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgYWxsb3dPdmVyc2Nyb2xsT25FbGVtZW50KGVsdCwgaW50ZXJuYWxTdGF0ZS5ldmVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWxsb3dTY3JvbGxPbkVsZW1lbnQoZWx0LCBpbnRlcm5hbFN0YXRlLmV2ZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmV2ZW50cy5vZmYoaW50ZXJuYWxTdGF0ZS5zY3JvbGxhYmxlQ29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJuYWxTdGF0ZS5zY3JvbGxhYmxlQ29udGVudCA9IGVsdDtcbiAgICB9LCBbaW50ZXJuYWxTdGF0ZV0pO1xuICAgIHZhciByZWdpc3RlckluaXRpYWxNb2RhbFBvc2l0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZGlhbG9nTWFpbiA9IGZvY3VzVHJhcFpvbmVFbG0uY3VycmVudDtcbiAgICAgICAgdmFyIG1vZGFsUmVjdGFuZ2xlID0gZGlhbG9nTWFpbiA9PT0gbnVsbCB8fCBkaWFsb2dNYWluID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkaWFsb2dNYWluLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBpZiAobW9kYWxSZWN0YW5nbGUpIHtcbiAgICAgICAgICAgIGlmICh0b3BPZmZzZXRGaXhlZCkge1xuICAgICAgICAgICAgICAgIHNldE1vZGFsUmVjdGFuZ2xlVG9wKG1vZGFsUmVjdGFuZ2xlLnRvcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoa2VlcEluQm91bmRzKSB7XG4gICAgICAgICAgICAgICAgLy8geC95IGFyZSB1bmF2YWlsYWJsZSBpbiBJRSwgc28gdXNlIHRoZSBlcXVpdmFsZW50IGxlZnQvdG9wXG4gICAgICAgICAgICAgICAgaW50ZXJuYWxTdGF0ZS5taW5Qb3NpdGlvbiA9IHsgeDogLW1vZGFsUmVjdGFuZ2xlLmxlZnQsIHk6IC1tb2RhbFJlY3RhbmdsZS50b3AgfTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFN0YXRlLm1heFBvc2l0aW9uID0geyB4OiBtb2RhbFJlY3RhbmdsZS5sZWZ0LCB5OiBtb2RhbFJlY3RhbmdsZS50b3AgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGFuIGF4aXMgdG8gYSBzcGVjaWZpZWQgbWluIGFuZCBtYXggcG9zaXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXhpcyBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGF4aXMgKHgveSkuXG4gICAgICogQHBhcmFtIHBvc2l0aW9uIFRoZSBwb3NpdGlvbiBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICB2YXIgZ2V0Q2xhbXBlZEF4aXMgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoYXhpcywgcG9zaXRpb24pIHtcbiAgICAgICAgdmFyIG1pblBvc2l0aW9uID0gaW50ZXJuYWxTdGF0ZS5taW5Qb3NpdGlvbiwgbWF4UG9zaXRpb24gPSBpbnRlcm5hbFN0YXRlLm1heFBvc2l0aW9uO1xuICAgICAgICBpZiAoa2VlcEluQm91bmRzICYmIG1pblBvc2l0aW9uICYmIG1heFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IE1hdGgubWF4KG1pblBvc2l0aW9uW2F4aXNdLCBwb3NpdGlvbik7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IE1hdGgubWluKG1heFBvc2l0aW9uW2F4aXNdLCBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgIH0sIFtrZWVwSW5Cb3VuZHMsIGludGVybmFsU3RhdGVdKTtcbiAgICB2YXIgaGFuZGxlTW9kYWxDbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpbnRlcm5hbFN0YXRlLmxhc3RTZXRDb29yZGluYXRlcyA9IFpFUk87XG4gICAgICAgIHNldE1vZGFsTWVudUNsb3NlKCk7XG4gICAgICAgIGludGVybmFsU3RhdGUuaXNJbktleWJvYXJkTW92ZU1vZGUgPSBmYWxzZTtcbiAgICAgICAgc2V0SXNNb2RhbE9wZW4oZmFsc2UpO1xuICAgICAgICBzZXRDb29yZGluYXRlcyhaRVJPKTtcbiAgICAgICAgKF9hID0gaW50ZXJuYWxTdGF0ZS5kaXNwb3NlT25LZXlVcCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoaW50ZXJuYWxTdGF0ZSk7XG4gICAgICAgIG9uRGlzbWlzc2VkID09PSBudWxsIHx8IG9uRGlzbWlzc2VkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkRpc21pc3NlZCgpO1xuICAgIH07XG4gICAgdmFyIGhhbmRsZURyYWdTdGFydCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0TW9kYWxNZW51Q2xvc2UoKTtcbiAgICAgICAgaW50ZXJuYWxTdGF0ZS5pc0luS2V5Ym9hcmRNb3ZlTW9kZSA9IGZhbHNlO1xuICAgIH0sIFtpbnRlcm5hbFN0YXRlLCBzZXRNb2RhbE1lbnVDbG9zZV0pO1xuICAgIHZhciBoYW5kbGVEcmFnID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2LCBkcmFnRGF0YSkge1xuICAgICAgICBzZXRDb29yZGluYXRlcyhmdW5jdGlvbiAocHJldlZhbHVlKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgeDogZ2V0Q2xhbXBlZEF4aXMoJ3gnLCBwcmV2VmFsdWUueCArIGRyYWdEYXRhLmRlbHRhLngpLFxuICAgICAgICAgICAgeTogZ2V0Q2xhbXBlZEF4aXMoJ3knLCBwcmV2VmFsdWUueSArIGRyYWdEYXRhLmRlbHRhLnkpLFxuICAgICAgICB9KTsgfSk7XG4gICAgfSwgW2dldENsYW1wZWRBeGlzXSk7XG4gICAgdmFyIGhhbmRsZURyYWdTdG9wID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoZm9jdXNUcmFwWm9uZS5jdXJyZW50KSB7XG4gICAgICAgICAgICBmb2N1c1RyYXBab25lLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcbiAgICB2YXIgaGFuZGxlRW50ZXJLZXlib2FyZE1vdmVNb2RlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBXZSBuZWVkIGEgZ2xvYmFsIGhhbmRsZUtleURvd24gZXZlbnQgd2hlbiB3ZSBhcmUgaW4gdGhlIG1vdmUgbW9kZSBzbyB0aGF0IHdlIGNhblxuICAgICAgICAvLyBoYW5kbGUgdGhlIGtleSBwcmVzc2VzIGFuZCB0aGUgY29tcG9uZW50cyBpbnNpZGUgdGhlIG1vZGFsIGRvIG5vdCBnZXQgdGhlIGV2ZW50c1xuICAgICAgICB2YXIgaGFuZGxlS2V5RG93biA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBpZiAoZXYuYWx0S2V5ICYmIGV2LmN0cmxLZXkgJiYgZXYua2V5Q29kZSA9PT0gS2V5Q29kZXMuc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAvLyBDVFJMICsgQUxUICsgU1BBQ0UgaXMgaGFuZGxlZCBkdXJpbmcga2V5VXBcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICAgICAgdmFyIG5ld0xvY2FsID0gZXYuYWx0S2V5IHx8IGV2LmtleUNvZGUgPT09IEtleUNvZGVzLmVzY2FwZTtcbiAgICAgICAgICAgIGlmIChpc01vZGFsTWVudU9wZW4gJiYgbmV3TG9jYWwpIHtcbiAgICAgICAgICAgICAgICBzZXRNb2RhbE1lbnVDbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICBpZiAoaW50ZXJuYWxTdGF0ZS5pc0luS2V5Ym9hcmRNb3ZlTW9kZSAmJiAoZXYua2V5Q29kZSA9PT0gS2V5Q29kZXMuZXNjYXBlIHx8IGV2LmtleUNvZGUgPT09IEtleUNvZGVzLmVudGVyKSkge1xuICAgICAgICAgICAgICAgIGludGVybmFsU3RhdGUuaXNJbktleWJvYXJkTW92ZU1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGludGVybmFsU3RhdGUuaXNJbktleWJvYXJkTW92ZU1vZGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGFuZGxlZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB2YXIgZGVsdGFfMSA9IGdldE1vdmVEZWx0YShldik7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlcHJlY2F0aW9uL2RlcHJlY2F0aW9uXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldi5rZXlDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWZhbGx0aHJvdWdoICovXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuZXNjYXBlOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29vcmRpbmF0ZXMoaW50ZXJuYWxTdGF0ZS5sYXN0U2V0Q29vcmRpbmF0ZXMpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLmVudGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBkZXRlcm1pbmUgaWYgZmFsbHRocm91Z2ggd2FzIGludGVudGlvbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWZhbGx0aHJvdWdoICovXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmxhc3RTZXRDb29yZGluYXRlcyA9IFpFUk87XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXRJc0luS2V5Ym9hcmRNb3ZlTW9kZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLnVwOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDb29yZGluYXRlcyhmdW5jdGlvbiAocHJldlZhbHVlKSB7IHJldHVybiAoeyB4OiBwcmV2VmFsdWUueCwgeTogZ2V0Q2xhbXBlZEF4aXMoJ3knLCBwcmV2VmFsdWUueSAtIGRlbHRhXzEpIH0pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5Q29kZXMuZG93bjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29vcmRpbmF0ZXMoZnVuY3Rpb24gKHByZXZWYWx1ZSkgeyByZXR1cm4gKHsgeDogcHJldlZhbHVlLngsIHk6IGdldENsYW1wZWRBeGlzKCd5JywgcHJldlZhbHVlLnkgKyBkZWx0YV8xKSB9KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUNvZGVzLmxlZnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb3JkaW5hdGVzKGZ1bmN0aW9uIChwcmV2VmFsdWUpIHsgcmV0dXJuICh7IHg6IGdldENsYW1wZWRBeGlzKCd4JywgcHJldlZhbHVlLnggLSBkZWx0YV8xKSwgeTogcHJldlZhbHVlLnkgfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlDb2Rlcy5yaWdodDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29vcmRpbmF0ZXMoZnVuY3Rpb24gKHByZXZWYWx1ZSkgeyByZXR1cm4gKHsgeDogZ2V0Q2xhbXBlZEF4aXMoJ3gnLCBwcmV2VmFsdWUueCArIGRlbHRhXzEpLCB5OiBwcmV2VmFsdWUueSB9KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkRXZlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW50ZXJuYWxTdGF0ZS5sYXN0U2V0Q29vcmRpbmF0ZXMgPSBjb29yZGluYXRlcztcbiAgICAgICAgc2V0TW9kYWxNZW51Q2xvc2UoKTtcbiAgICAgICAgaW50ZXJuYWxTdGF0ZS5pc0luS2V5Ym9hcmRNb3ZlTW9kZSA9IHRydWU7XG4gICAgICAgIGludGVybmFsU3RhdGUuZXZlbnRzLm9uKHdpbiwgJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlIC8qIHVzZUNhcHR1cmUgKi8pO1xuICAgICAgICBpbnRlcm5hbFN0YXRlLmRpc3Bvc2VPbktleURvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmV2ZW50cy5vZmYod2luLCAna2V5ZG93bicsIGhhbmRsZUtleURvd24sIHRydWUgLyogdXNlQ2FwdHVyZSAqLyk7XG4gICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmRpc3Bvc2VPbktleURvd24gPSB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICB2YXIgaGFuZGxlRXhpdEtleWJvYXJkTW92ZU1vZGUgPSBmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9hID0gZm9jdXNUcmFwWm9uZVByb3BzID09PSBudWxsIHx8IGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm9jdXNUcmFwWm9uZVByb3BzLm9uQmx1cikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoZm9jdXNUcmFwWm9uZVByb3BzLCBldik7XG4gICAgICAgIGludGVybmFsU3RhdGUubGFzdFNldENvb3JkaW5hdGVzID0gWkVSTztcbiAgICAgICAgaW50ZXJuYWxTdGF0ZS5pc0luS2V5Ym9hcmRNb3ZlTW9kZSA9IGZhbHNlO1xuICAgICAgICAoX2IgPSBpbnRlcm5hbFN0YXRlLmRpc3Bvc2VPbktleURvd24pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKGludGVybmFsU3RhdGUpO1xuICAgIH07XG4gICAgdmFyIHJlZ2lzdGVyRm9yS2V5VXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoYW5kbGVLZXlVcCA9IGZ1bmN0aW9uIChldikge1xuICAgICAgICAgICAgLy8gTmVlZHMgdG8gaGFuZGxlIHRoZSBDVFJMICsgQUxUICsgU1BBQ0Uga2V5IGR1cmluZyBrZXl1cCBkdWUgdG8gRmlyZUZveCBidWc6XG4gICAgICAgICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIwMTQzXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIGlmIChldi5hbHRLZXkgJiYgZXYuY3RybEtleSAmJiBldi5rZXlDb2RlID09PSBLZXlDb2Rlcy5zcGFjZSkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q29udGFpbnMoaW50ZXJuYWxTdGF0ZS5zY3JvbGxhYmxlQ29udGVudCwgZXYudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICB0b2dnbGVNb2RhbE1lbnVPcGVuKCk7XG4gICAgICAgICAgICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFpbnRlcm5hbFN0YXRlLmRpc3Bvc2VPbktleVVwKSB7XG4gICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmV2ZW50cy5vbih3aW4sICdrZXl1cCcsIGhhbmRsZUtleVVwLCB0cnVlIC8qIHVzZUNhcHR1cmUgKi8pO1xuICAgICAgICAgICAgaW50ZXJuYWxTdGF0ZS5kaXNwb3NlT25LZXlVcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmV2ZW50cy5vZmYod2luLCAna2V5dXAnLCBoYW5kbGVLZXlVcCwgdHJ1ZSAvKiB1c2VDYXB0dXJlICovKTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFN0YXRlLmRpc3Bvc2VPbktleVVwID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGludGVybmFsU3RhdGUub25Nb2RhbENsb3NlVGltZXIpO1xuICAgICAgICAvLyBPcGVuaW5nIHRoZSBkaWFsb2dcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGRvbmUgYWZ0ZXIgdGhlIG1vZGFsIGNvbnRlbnQgaGFzIHJlbmRlcmVkXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0VGltZW91dChyZWdpc3RlckluaXRpYWxNb2RhbFBvc2l0aW9uLCAwKTsgfSk7XG4gICAgICAgICAgICBzZXRJc01vZGFsT3Blbih0cnVlKTtcbiAgICAgICAgICAgIC8vIEFkZCBhIGtleVVwIGhhbmRsZXIgZm9yIGFsbCBrZXkgdXAgZXZlbnRzIG9uY2UgdGhlIGRpYWxvZyBpcyBvcGVuLlxuICAgICAgICAgICAgaWYgKGRyYWdPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgcmVnaXN0ZXJGb3JLZXlVcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW50ZXJuYWxTdGF0ZS5oYXNCZWVuT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldElzVmlzaWJsZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbG9zaW5nIHRoZSBkaWFsb2dcbiAgICAgICAgaWYgKCFpc09wZW4gJiYgaXNNb2RhbE9wZW4pIHtcbiAgICAgICAgICAgIGludGVybmFsU3RhdGUub25Nb2RhbENsb3NlVGltZXIgPSBzZXRUaW1lb3V0KGhhbmRsZU1vZGFsQ2xvc2UsIHBhcnNlRmxvYXQoYW5pbWF0aW9uRHVyYXRpb24pICogMTAwMCk7XG4gICAgICAgICAgICBzZXRJc1Zpc2libGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHMgLS0gc2hvdWxkIG9ubHkgcnVuIGlmIGlzTW9kYWxPcGVuIG9yIGlzT3BlbiBtdXRhdGVzLlxuICAgIH0sIFtpc01vZGFsT3BlbiwgaXNPcGVuXSk7XG4gICAgdXNlVW5tb3VudChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGludGVybmFsU3RhdGUuZXZlbnRzLmRpc3Bvc2UoKTtcbiAgICB9KTtcbiAgICB1c2VDb21wb25lbnRSZWYocHJvcHMsIGZvY3VzVHJhcFpvbmUpO1xuICAgIHVzZURlYnVnV2FybmluZ3MocHJvcHMpO1xuICAgIHZhciBtb2RhbENvbnRlbnQgPSAoUmVhY3QuY3JlYXRlRWxlbWVudChGb2N1c1RyYXBab25lLCBfX2Fzc2lnbih7fSwgZm9jdXNUcmFwWm9uZVByb3BzLCB7IGlkOiBmb2N1c1RyYXBab25lSWQsIHJlZjogZm9jdXNUcmFwWm9uZUVsbSwgY29tcG9uZW50UmVmOiBmb2N1c1RyYXBab25lUmVmLCBjbGFzc05hbWU6IGNzcyhjbGFzc05hbWVzLm1haW4sIGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gbnVsbCB8fCBmb2N1c1RyYXBab25lUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvY3VzVHJhcFpvbmVQcm9wcy5jbGFzc05hbWUpLCBlbGVtZW50VG9Gb2N1c09uRGlzbWlzczogKF9hID0gZm9jdXNUcmFwWm9uZVByb3BzID09PSBudWxsIHx8IGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm9jdXNUcmFwWm9uZVByb3BzLmVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBlbGVtZW50VG9Gb2N1c09uRGlzbWlzcywgaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwOiAoX2IgPSBmb2N1c1RyYXBab25lUHJvcHMgPT09IG51bGwgfHwgZm9jdXNUcmFwWm9uZVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2N1c1RyYXBab25lUHJvcHMuaXNDbGlja2FibGVPdXRzaWRlRm9jdXNUcmFwKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAoaXNNb2RlbGVzcyB8fCBpc0NsaWNrYWJsZU91dHNpZGVGb2N1c1RyYXAgfHwgIWlzQmxvY2tpbmcpLCBkaXNhYmxlUmVzdG9yZUZvY3VzOiAoX2MgPSBmb2N1c1RyYXBab25lUHJvcHMgPT09IG51bGwgfHwgZm9jdXNUcmFwWm9uZVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2N1c1RyYXBab25lUHJvcHMuZGlzYWJsZVJlc3RvcmVGb2N1cykgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogZGlzYWJsZVJlc3RvcmVGb2N1cywgZm9yY2VGb2N1c0luc2lkZVRyYXA6ICgoX2QgPSBmb2N1c1RyYXBab25lUHJvcHMgPT09IG51bGwgfHwgZm9jdXNUcmFwWm9uZVByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBmb2N1c1RyYXBab25lUHJvcHMuZm9yY2VGb2N1c0luc2lkZVRyYXApICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IGZvcmNlRm9jdXNJbnNpZGVUcmFwKSAmJiAhaXNNb2RlbGVzcywgXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgICAgICBmaXJzdEZvY3VzYWJsZVNlbGVjdG9yOiAoZm9jdXNUcmFwWm9uZVByb3BzID09PSBudWxsIHx8IGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm9jdXNUcmFwWm9uZVByb3BzLmZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IpIHx8IGZpcnN0Rm9jdXNhYmxlU2VsZWN0b3IsIGZvY3VzUHJldmlvdXNseUZvY3VzZWRJbm5lckVsZW1lbnQ6IChfZSA9IGZvY3VzVHJhcFpvbmVQcm9wcyA9PT0gbnVsbCB8fCBmb2N1c1RyYXBab25lUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZvY3VzVHJhcFpvbmVQcm9wcy5mb2N1c1ByZXZpb3VzbHlGb2N1c2VkSW5uZXJFbGVtZW50KSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiB0cnVlLCBvbkJsdXI6IGludGVybmFsU3RhdGUuaXNJbktleWJvYXJkTW92ZU1vZGUgPyBoYW5kbGVFeGl0S2V5Ym9hcmRNb3ZlTW9kZSA6IHVuZGVmaW5lZCB9KSxcbiAgICAgICAgZHJhZ09wdGlvbnMgJiYgaW50ZXJuYWxTdGF0ZS5pc0luS2V5Ym9hcmRNb3ZlTW9kZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5rZXlib2FyZE1vdmVJY29uQ29udGFpbmVyIH0sIGRyYWdPcHRpb25zLmtleWJvYXJkTW92ZUljb25Qcm9wcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEljb24sIF9fYXNzaWduKHt9LCBkcmFnT3B0aW9ucy5rZXlib2FyZE1vdmVJY29uUHJvcHMpKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCB7IGljb25OYW1lOiBcIm1vdmVcIiwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmtleWJvYXJkTW92ZUljb24gfSkpKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGFsbG93U2Nyb2xsT25Nb2RhbCwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLnNjcm9sbGFibGVDb250ZW50LCBcImRhdGEtaXMtc2Nyb2xsYWJsZVwiOiB0cnVlIH0sXG4gICAgICAgICAgICBkcmFnT3B0aW9ucyAmJiBpc01vZGFsTWVudU9wZW4gJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoZHJhZ09wdGlvbnMubWVudSwgeyBpdGVtczogW1xuICAgICAgICAgICAgICAgICAgICB7IGtleTogJ21vdmUnLCB0ZXh0OiBkcmFnT3B0aW9ucy5tb3ZlTWVudUl0ZW1UZXh0LCBvbkNsaWNrOiBoYW5kbGVFbnRlcktleWJvYXJkTW92ZU1vZGUgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBrZXk6ICdjbG9zZScsIHRleHQ6IGRyYWdPcHRpb25zLmNsb3NlTWVudUl0ZW1UZXh0LCBvbkNsaWNrOiBoYW5kbGVNb2RhbENsb3NlIH0sXG4gICAgICAgICAgICAgICAgXSwgb25EaXNtaXNzOiBzZXRNb2RhbE1lbnVDbG9zZSwgYWxpZ25UYXJnZXRFZGdlOiB0cnVlLCBjb3ZlclRhcmdldDogdHJ1ZSwgZGlyZWN0aW9uYWxIaW50OiBEaXJlY3Rpb25hbEhpbnQudG9wTGVmdEVkZ2UsIGRpcmVjdGlvbmFsSGludEZpeGVkOiB0cnVlLCBzaG91bGRGb2N1c09uTW91bnQ6IHRydWUsIHRhcmdldDogaW50ZXJuYWxTdGF0ZS5zY3JvbGxhYmxlQ29udGVudCB9KSksXG4gICAgICAgICAgICBjaGlsZHJlbikpKTtcbiAgICByZXR1cm4gKChpc01vZGFsT3BlbiAmJiBtb2RhbFJlc3BvbnNpdmVNb2RlID49IChyZXNwb25zaXZlTW9kZSB8fCBSZXNwb25zaXZlTW9kZS5zbWFsbCkgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGF5ZXIsIF9fYXNzaWduKHsgcmVmOiBtZXJnZWRSZWYgfSwgbWVyZ2VkTGF5ZXJQcm9wcyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXAsIF9fYXNzaWduKHsgcm9sZTogaXNBbGVydFJvbGUgPyAnYWxlcnRkaWFsb2cnIDogJ2RpYWxvZycsIGFyaWFMYWJlbGxlZEJ5OiB0aXRsZUFyaWFJZCwgYXJpYURlc2NyaWJlZEJ5OiBzdWJ0aXRsZUFyaWFJZCwgb25EaXNtaXNzOiBvbkRpc21pc3MsIHNob3VsZFJlc3RvcmVGb2N1czogIWRpc2FibGVSZXN0b3JlRm9jdXMsIFxuICAgICAgICAgICAgLy8gTW9kZWxlc3MgbW9kYWxzIHNob3VsZG4ndCBoaWRlIHNpYmxpbmdzLlxuICAgICAgICAgICAgLy8gUG9wdXAgd2lsbCBhdXRvbWF0aWNhbGx5IGhhbmRsZSB0aGlzIGJhc2VkIG9uIHRoZSBhcmlhLW1vZGFsIHNldHRpbmcuXG4gICAgICAgICAgICBlbmFibGVBcmlhSGlkZGVuU2libGluZ3M6IGVuYWJsZUFyaWFIaWRkZW5TaWJsaW5ncywgXCJhcmlhLW1vZGFsXCI6ICFpc01vZGVsZXNzIH0sIHBvcHVwUHJvcHMpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5yb290LCByb2xlOiAhaXNNb2RlbGVzcyA/ICdkb2N1bWVudCcgOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgICAgICAhaXNNb2RlbGVzcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChPdmVybGF5LCBfX2Fzc2lnbih7IFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSwgaXNEYXJrVGhlbWVkOiBpc0RhcmtPdmVybGF5LCBvbkNsaWNrOiBpc0Jsb2NraW5nID8gdW5kZWZpbmVkIDogb25EaXNtaXNzLCBhbGxvd1RvdWNoQm9keVNjcm9sbDogYWxsb3dUb3VjaEJvZHlTY3JvbGwgfSwgb3ZlcmxheSkpKSxcbiAgICAgICAgICAgICAgICBkcmFnT3B0aW9ucyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KERyYWdnYWJsZVpvbmUsIHsgaGFuZGxlU2VsZWN0b3I6IGRyYWdPcHRpb25zLmRyYWdIYW5kbGVTZWxlY3RvciB8fCBcIiNcIi5jb25jYXQoZm9jdXNUcmFwWm9uZUlkKSwgcHJldmVudERyYWdTZWxlY3RvcjogXCJidXR0b25cIiwgb25TdGFydDogaGFuZGxlRHJhZ1N0YXJ0LCBvbkRyYWdDaGFuZ2U6IGhhbmRsZURyYWcsIG9uU3RvcDogaGFuZGxlRHJhZ1N0b3AsIHBvc2l0aW9uOiBjb29yZGluYXRlcyB9LCBtb2RhbENvbnRlbnQpKSA6IChtb2RhbENvbnRlbnQpKSkpKSkgfHxcbiAgICAgICAgbnVsbCk7XG59KTtcbk1vZGFsQmFzZS5kaXNwbGF5TmFtZSA9ICdNb2RhbCc7XG5mdW5jdGlvbiB1c2VEZWJ1Z1dhcm5pbmdzKHByb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGJ1aWxkLXRpbWUgY29uZGl0aW9uYWxcbiAgICAgICAgdXNlV2FybmluZ3Moe1xuICAgICAgICAgICAgbmFtZTogJ01vZGFsJyxcbiAgICAgICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uczogeyBvbkxheWVyRGlkTW91bnQ6ICdsYXllclByb3BzLm9uTGF5ZXJEaWRNb3VudCcgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TW9kYWwuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgTW9kYWxCYXNlIH0gZnJvbSAnLi9Nb2RhbC5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vTW9kYWwuc3R5bGVzJztcbmV4cG9ydCB2YXIgTW9kYWwgPSBzdHlsZWQoTW9kYWxCYXNlLCBnZXRTdHlsZXMsIHVuZGVmaW5lZCwge1xuICAgIHNjb3BlOiAnTW9kYWwnLFxuICAgIGZpZWxkczogWyd0aGVtZScsICdzdHlsZXMnLCAnZW5hYmxlQXJpYUhpZGRlblNpYmxpbmdzJ10sXG59KTtcbk1vZGFsLmRpc3BsYXlOYW1lID0gJ01vZGFsJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1vZGFsLmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZScsXG4gICAgICAgIH0sXG4gICAgICAgIGZvbnRGYWNlOiB7XG4gICAgICAgICAgICBmb250RmFtaWx5OiBcIlxcXCJGYWJyaWNNREwySWNvbnNcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtYTEzNDk4Y2Yud29mZicpIGZvcm1hdCgnd29mZicpXCIpLFxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgR2xvYmFsTmF2QnV0dG9uOiAnXFx1RTcwMCcsXG4gICAgICAgICAgICBDaGV2cm9uRG93bjogJ1xcdUU3MEQnLFxuICAgICAgICAgICAgQ2hldnJvblVwOiAnXFx1RTcwRScsXG4gICAgICAgICAgICBFZGl0OiAnXFx1RTcwRicsXG4gICAgICAgICAgICBBZGQ6ICdcXHVFNzEwJyxcbiAgICAgICAgICAgIENhbmNlbDogJ1xcdUU3MTEnLFxuICAgICAgICAgICAgTW9yZTogJ1xcdUU3MTInLFxuICAgICAgICAgICAgU2V0dGluZ3M6ICdcXHVFNzEzJyxcbiAgICAgICAgICAgIE1haWw6ICdcXHVFNzE1JyxcbiAgICAgICAgICAgIEZpbHRlcjogJ1xcdUU3MUMnLFxuICAgICAgICAgICAgU2VhcmNoOiAnXFx1RTcyMScsXG4gICAgICAgICAgICBTaGFyZTogJ1xcdUU3MkQnLFxuICAgICAgICAgICAgQmxvY2tlZFNpdGU6ICdcXHVFNzJGJyxcbiAgICAgICAgICAgIEZhdm9yaXRlU3RhcjogJ1xcdUU3MzQnLFxuICAgICAgICAgICAgRmF2b3JpdGVTdGFyRmlsbDogJ1xcdUU3MzUnLFxuICAgICAgICAgICAgQ2hlY2tNYXJrOiAnXFx1RTczRScsXG4gICAgICAgICAgICBEZWxldGU6ICdcXHVFNzREJyxcbiAgICAgICAgICAgIENoZXZyb25MZWZ0OiAnXFx1RTc2QicsXG4gICAgICAgICAgICBDaGV2cm9uUmlnaHQ6ICdcXHVFNzZDJyxcbiAgICAgICAgICAgIENhbGVuZGFyOiAnXFx1RTc4NycsXG4gICAgICAgICAgICBNZWdhcGhvbmU6ICdcXHVFNzg5JyxcbiAgICAgICAgICAgIFVuZG86ICdcXHVFN0E3JyxcbiAgICAgICAgICAgIEZsYWc6ICdcXHVFN0MxJyxcbiAgICAgICAgICAgIFBhZ2U6ICdcXHVFN0MzJyxcbiAgICAgICAgICAgIFBpbm5lZDogJ1xcdUU4NDAnLFxuICAgICAgICAgICAgVmlldzogJ1xcdUU4OTAnLFxuICAgICAgICAgICAgQ2xlYXI6ICdcXHVFODk0JyxcbiAgICAgICAgICAgIERvd25sb2FkOiAnXFx1RTg5NicsXG4gICAgICAgICAgICBVcGxvYWQ6ICdcXHVFODk4JyxcbiAgICAgICAgICAgIEZvbGRlcjogJ1xcdUU4QjcnLFxuICAgICAgICAgICAgU29ydDogJ1xcdUU4Q0InLFxuICAgICAgICAgICAgQWxpZ25SaWdodDogJ1xcdUU4RTInLFxuICAgICAgICAgICAgQWxpZ25MZWZ0OiAnXFx1RThFNCcsXG4gICAgICAgICAgICBUYWc6ICdcXHVFOEVDJyxcbiAgICAgICAgICAgIEFkZEZyaWVuZDogJ1xcdUU4RkEnLFxuICAgICAgICAgICAgSW5mbzogJ1xcdUU5NDYnLFxuICAgICAgICAgICAgU29ydExpbmVzOiAnXFx1RTlEMCcsXG4gICAgICAgICAgICBMaXN0OiAnXFx1RUEzNycsXG4gICAgICAgICAgICBDaXJjbGVSaW5nOiAnXFx1RUEzQScsXG4gICAgICAgICAgICBIZWFydDogJ1xcdUVCNTEnLFxuICAgICAgICAgICAgSGVhcnRGaWxsOiAnXFx1RUI1MicsXG4gICAgICAgICAgICBUaWxlczogJ1xcdUVDQTUnLFxuICAgICAgICAgICAgRW1iZWQ6ICdcXHVFQ0NFJyxcbiAgICAgICAgICAgIEdsaW1tZXI6ICdcXHVFQ0Y0JyxcbiAgICAgICAgICAgIEFzY2VuZGluZzogJ1xcdUVEQzAnLFxuICAgICAgICAgICAgRGVzY2VuZGluZzogJ1xcdUVEQzEnLFxuICAgICAgICAgICAgU29ydFVwOiAnXFx1RUU2OCcsXG4gICAgICAgICAgICBTb3J0RG93bjogJ1xcdUVFNjknLFxuICAgICAgICAgICAgU3luY1RvUEM6ICdcXHVFRTZFJyxcbiAgICAgICAgICAgIExhcmdlR3JpZDogJ1xcdUVFQ0InLFxuICAgICAgICAgICAgU2t5cGVDaGVjazogJ1xcdUVGODAnLFxuICAgICAgICAgICAgU2t5cGVDbG9jazogJ1xcdUVGODEnLFxuICAgICAgICAgICAgU2t5cGVNaW51czogJ1xcdUVGODInLFxuICAgICAgICAgICAgQ2xlYXJGaWx0ZXI6ICdcXHVFRjhGJyxcbiAgICAgICAgICAgIEZsb3c6ICdcXHVFRjkwJyxcbiAgICAgICAgICAgIFN0YXR1c0NpcmNsZUNoZWNrbWFyazogJ1xcdUYxM0UnLFxuICAgICAgICAgICAgTW9yZVZlcnRpY2FsOiAnXFx1RjJCQycsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTBcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtMC00NjdlZTI3Zi53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdQYWdlTGluayc6ICdcXHVFMzAyJyxcbiAgICAgICAgICAgICdDb21tZW50U29saWQnOiAnXFx1RTMwRScsXG4gICAgICAgICAgICAnQ2hhbmdlRW50aXRsZW1lbnRzJzogJ1xcdUUzMTAnLFxuICAgICAgICAgICAgJ0luc3RhbGxhdGlvbic6ICdcXHVFMzExJyxcbiAgICAgICAgICAgICdXZWJBcHBCdWlsZGVyTW9kdWxlJzogJ1xcdUUzMTMnLFxuICAgICAgICAgICAgJ1dlYkFwcEJ1aWxkZXJGcmFnbWVudCc6ICdcXHVFMzE0JyxcbiAgICAgICAgICAgICdXZWJBcHBCdWlsZGVyU2xvdCc6ICdcXHVFMzE1JyxcbiAgICAgICAgICAgICdCdWxsc2V5ZVRhcmdldEVkaXQnOiAnXFx1RTMxOScsXG4gICAgICAgICAgICAnV2ViQXBwQnVpbGRlckZyYWdtZW50Q3JlYXRlJzogJ1xcdUUzMUInLFxuICAgICAgICAgICAgJ1BhZ2VEYXRhJzogJ1xcdUUzMUMnLFxuICAgICAgICAgICAgJ1BhZ2VIZWFkZXJFZGl0JzogJ1xcdUUzMUQnLFxuICAgICAgICAgICAgJ1Byb2R1Y3RMaXN0JzogJ1xcdUUzMUUnLFxuICAgICAgICAgICAgJ1VucHVibGlzaENvbnRlbnQnOiAnXFx1RTMxRicsXG4gICAgICAgICAgICAnRGVwZW5kZW5jeUFkZCc6ICdcXHVFMzQ0JyxcbiAgICAgICAgICAgICdEZXBlbmRlbmN5UmVtb3ZlJzogJ1xcdUUzNDUnLFxuICAgICAgICAgICAgJ0VudGl0bGVtZW50UG9saWN5JzogJ1xcdUUzNDYnLFxuICAgICAgICAgICAgJ0VudGl0bGVtZW50UmVkZW1wdGlvbic6ICdcXHVFMzQ3JyxcbiAgICAgICAgICAgICdTY2hvb2xEYXRhU3luY0xvZ28nOiAnXFx1RTM0QycsXG4gICAgICAgICAgICAnUGluU29saWQxMic6ICdcXHVFMzUyJyxcbiAgICAgICAgICAgICdQaW5Tb2xpZE9mZjEyJzogJ1xcdUUzNTMnLFxuICAgICAgICAgICAgJ0FkZExpbmsnOiAnXFx1RTM1RScsXG4gICAgICAgICAgICAnU2hhcmVwb2ludEFwcEljb24xNic6ICdcXHVFMzY1JyxcbiAgICAgICAgICAgICdEYXRhZmxvd3NMaW5rJzogJ1xcdUUzNjYnLFxuICAgICAgICAgICAgJ1RpbWVQaWNrZXInOiAnXFx1RTM2NycsXG4gICAgICAgICAgICAnVXNlcldhcm5pbmcnOiAnXFx1RTM2OCcsXG4gICAgICAgICAgICAnQ29tcGxpYW5jZUF1ZGl0JzogJ1xcdUUzNjknLFxuICAgICAgICAgICAgJ0ludGVybmV0U2hhcmluZyc6ICdcXHVFNzA0JyxcbiAgICAgICAgICAgICdCcmlnaHRuZXNzJzogJ1xcdUU3MDYnLFxuICAgICAgICAgICAgJ01hcFBpbic6ICdcXHVFNzA3JyxcbiAgICAgICAgICAgICdBaXJwbGFuZSc6ICdcXHVFNzA5JyxcbiAgICAgICAgICAgICdUYWJsZXQnOiAnXFx1RTcwQScsXG4gICAgICAgICAgICAnUXVpY2tOb3RlJzogJ1xcdUU3MEInLFxuICAgICAgICAgICAgJ1ZpZGVvJzogJ1xcdUU3MTQnLFxuICAgICAgICAgICAgJ1Blb3BsZSc6ICdcXHVFNzE2JyxcbiAgICAgICAgICAgICdQaG9uZSc6ICdcXHVFNzE3JyxcbiAgICAgICAgICAgICdQaW4nOiAnXFx1RTcxOCcsXG4gICAgICAgICAgICAnU2hvcCc6ICdcXHVFNzE5JyxcbiAgICAgICAgICAgICdTdG9wJzogJ1xcdUU3MUEnLFxuICAgICAgICAgICAgJ0xpbmsnOiAnXFx1RTcxQicsXG4gICAgICAgICAgICAnQWxsQXBwcyc6ICdcXHVFNzFEJyxcbiAgICAgICAgICAgICdab29tJzogJ1xcdUU3MUUnLFxuICAgICAgICAgICAgJ1pvb21PdXQnOiAnXFx1RTcxRicsXG4gICAgICAgICAgICAnTWljcm9waG9uZSc6ICdcXHVFNzIwJyxcbiAgICAgICAgICAgICdDYW1lcmEnOiAnXFx1RTcyMicsXG4gICAgICAgICAgICAnQXR0YWNoJzogJ1xcdUU3MjMnLFxuICAgICAgICAgICAgJ1NlbmQnOiAnXFx1RTcyNCcsXG4gICAgICAgICAgICAnRmF2b3JpdGVMaXN0JzogJ1xcdUU3MjgnLFxuICAgICAgICAgICAgJ1BhZ2VTb2xpZCc6ICdcXHVFNzI5JyxcbiAgICAgICAgICAgICdGb3J3YXJkJzogJ1xcdUU3MkEnLFxuICAgICAgICAgICAgJ0JhY2snOiAnXFx1RTcyQicsXG4gICAgICAgICAgICAnUmVmcmVzaCc6ICdcXHVFNzJDJyxcbiAgICAgICAgICAgICdMb2NrJzogJ1xcdUU3MkUnLFxuICAgICAgICAgICAgJ1JlcG9ydEhhY2tlZCc6ICdcXHVFNzMwJyxcbiAgICAgICAgICAgICdFTUknOiAnXFx1RTczMScsXG4gICAgICAgICAgICAnTWluaUxpbmsnOiAnXFx1RTczMicsXG4gICAgICAgICAgICAnQmxvY2tlZCc6ICdcXHVFNzMzJyxcbiAgICAgICAgICAgICdSZWFkaW5nTW9kZSc6ICdcXHVFNzM2JyxcbiAgICAgICAgICAgICdGYXZpY29uJzogJ1xcdUU3MzcnLFxuICAgICAgICAgICAgJ1JlbW92ZSc6ICdcXHVFNzM4JyxcbiAgICAgICAgICAgICdDaGVja2JveCc6ICdcXHVFNzM5JyxcbiAgICAgICAgICAgICdDaGVja2JveENvbXBvc2l0ZSc6ICdcXHVFNzNBJyxcbiAgICAgICAgICAgICdDaGVja2JveEZpbGwnOiAnXFx1RTczQicsXG4gICAgICAgICAgICAnQ2hlY2tib3hJbmRldGVybWluYXRlJzogJ1xcdUU3M0MnLFxuICAgICAgICAgICAgJ0NoZWNrYm94Q29tcG9zaXRlUmV2ZXJzZWQnOiAnXFx1RTczRCcsXG4gICAgICAgICAgICAnQmFja1RvV2luZG93JzogJ1xcdUU3M0YnLFxuICAgICAgICAgICAgJ0Z1bGxTY3JlZW4nOiAnXFx1RTc0MCcsXG4gICAgICAgICAgICAnUHJpbnQnOiAnXFx1RTc0OScsXG4gICAgICAgICAgICAnVXAnOiAnXFx1RTc0QScsXG4gICAgICAgICAgICAnRG93bic6ICdcXHVFNzRCJyxcbiAgICAgICAgICAgICdPRU0nOiAnXFx1RTc0QycsXG4gICAgICAgICAgICAnU2F2ZSc6ICdcXHVFNzRFJyxcbiAgICAgICAgICAgICdSZXR1cm5LZXknOiAnXFx1RTc1MScsXG4gICAgICAgICAgICAnQ2xvdWQnOiAnXFx1RTc1MycsXG4gICAgICAgICAgICAnRmxhc2hsaWdodCc6ICdcXHVFNzU0JyxcbiAgICAgICAgICAgICdDb21tYW5kUHJvbXB0JzogJ1xcdUU3NTYnLFxuICAgICAgICAgICAgJ1NhZCc6ICdcXHVFNzU3JyxcbiAgICAgICAgICAgICdSZWFsRXN0YXRlJzogJ1xcdUU3NTgnLFxuICAgICAgICAgICAgJ1NJUE1vdmUnOiAnXFx1RTc1OScsXG4gICAgICAgICAgICAnRXJhc2VUb29sJzogJ1xcdUU3NUMnLFxuICAgICAgICAgICAgJ0dyaXBwZXJUb29sJzogJ1xcdUU3NUUnLFxuICAgICAgICAgICAgJ0RpYWxwYWQnOiAnXFx1RTc1RicsXG4gICAgICAgICAgICAnUGFnZUxlZnQnOiAnXFx1RTc2MCcsXG4gICAgICAgICAgICAnUGFnZVJpZ2h0JzogJ1xcdUU3NjEnLFxuICAgICAgICAgICAgJ011bHRpU2VsZWN0JzogJ1xcdUU3NjInLFxuICAgICAgICAgICAgJ0tleWJvYXJkQ2xhc3NpYyc6ICdcXHVFNzY1JyxcbiAgICAgICAgICAgICdQbGF5JzogJ1xcdUU3NjgnLFxuICAgICAgICAgICAgJ1BhdXNlJzogJ1xcdUU3NjknLFxuICAgICAgICAgICAgJ0lua2luZ1Rvb2wnOiAnXFx1RTc2RCcsXG4gICAgICAgICAgICAnRW1vamkyJzogJ1xcdUU3NkUnLFxuICAgICAgICAgICAgJ0dyaXBwZXJCYXJIb3Jpem9udGFsJzogJ1xcdUU3NkYnLFxuICAgICAgICAgICAgJ1N5c3RlbSc6ICdcXHVFNzcwJyxcbiAgICAgICAgICAgICdQZXJzb25hbGl6ZSc6ICdcXHVFNzcxJyxcbiAgICAgICAgICAgICdTZWFyY2hBbmRBcHBzJzogJ1xcdUU3NzMnLFxuICAgICAgICAgICAgJ0dsb2JlJzogJ1xcdUU3NzQnLFxuICAgICAgICAgICAgJ0Vhc2VPZkFjY2Vzcyc6ICdcXHVFNzc2JyxcbiAgICAgICAgICAgICdDb250YWN0SW5mbyc6ICdcXHVFNzc5JyxcbiAgICAgICAgICAgICdVbnBpbic6ICdcXHVFNzdBJyxcbiAgICAgICAgICAgICdDb250YWN0JzogJ1xcdUU3N0InLFxuICAgICAgICAgICAgJ01lbW8nOiAnXFx1RTc3QycsXG4gICAgICAgICAgICAnSW5jb21pbmdDYWxsJzogJ1xcdUU3N0UnXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlZ2lzdGVySWNvbnMoc3Vic2V0LCBvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhYnJpYy1pY29ucy0wLmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy0xXFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTEtNGQ1MjE2OTUud29mZicpIGZvcm1hdCgnd29mZicpXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAnUGFzdGUnOiAnXFx1RTc3RicsXG4gICAgICAgICAgICAnV2luZG93c0xvZ28nOiAnXFx1RTc4MicsXG4gICAgICAgICAgICAnRXJyb3InOiAnXFx1RTc4MycsXG4gICAgICAgICAgICAnR3JpcHBlckJhclZlcnRpY2FsJzogJ1xcdUU3ODQnLFxuICAgICAgICAgICAgJ1VubG9jayc6ICdcXHVFNzg1JyxcbiAgICAgICAgICAgICdTbGlkZXNob3cnOiAnXFx1RTc4NicsXG4gICAgICAgICAgICAnVHJpbSc6ICdcXHVFNzhBJyxcbiAgICAgICAgICAgICdBdXRvRW5oYW5jZU9uJzogJ1xcdUU3OEQnLFxuICAgICAgICAgICAgJ0F1dG9FbmhhbmNlT2ZmJzogJ1xcdUU3OEUnLFxuICAgICAgICAgICAgJ0NvbG9yJzogJ1xcdUU3OTAnLFxuICAgICAgICAgICAgJ1NhdmVBcyc6ICdcXHVFNzkyJyxcbiAgICAgICAgICAgICdMaWdodCc6ICdcXHVFNzkzJyxcbiAgICAgICAgICAgICdGaWx0ZXJzJzogJ1xcdUU3OTUnLFxuICAgICAgICAgICAgJ0FzcGVjdFJhdGlvJzogJ1xcdUU3OTknLFxuICAgICAgICAgICAgJ0NvbnRyYXN0JzogJ1xcdUU3QTEnLFxuICAgICAgICAgICAgJ1JlZG8nOiAnXFx1RTdBNicsXG4gICAgICAgICAgICAnQ3JvcCc6ICdcXHVFN0E4JyxcbiAgICAgICAgICAgICdQaG90b0NvbGxlY3Rpb24nOiAnXFx1RTdBQScsXG4gICAgICAgICAgICAnQWxidW0nOiAnXFx1RTdBQicsXG4gICAgICAgICAgICAnUm90YXRlJzogJ1xcdUU3QUQnLFxuICAgICAgICAgICAgJ1Bhbm9JbmRpY2F0b3InOiAnXFx1RTdCMCcsXG4gICAgICAgICAgICAnVHJhbnNsYXRlJzogJ1xcdUU3QjInLFxuICAgICAgICAgICAgJ1JlZEV5ZSc6ICdcXHVFN0IzJyxcbiAgICAgICAgICAgICdWaWV3T3JpZ2luYWwnOiAnXFx1RTdCNCcsXG4gICAgICAgICAgICAnVGh1bWJuYWlsVmlldyc6ICdcXHVFN0I2JyxcbiAgICAgICAgICAgICdQYWNrYWdlJzogJ1xcdUU3QjgnLFxuICAgICAgICAgICAgJ1RlbGVtYXJrZXRlcic6ICdcXHVFN0I5JyxcbiAgICAgICAgICAgICdXYXJuaW5nJzogJ1xcdUU3QkEnLFxuICAgICAgICAgICAgJ0ZpbmFuY2lhbCc6ICdcXHVFN0JCJyxcbiAgICAgICAgICAgICdFZHVjYXRpb24nOiAnXFx1RTdCRScsXG4gICAgICAgICAgICAnU2hvcHBpbmdDYXJ0JzogJ1xcdUU3QkYnLFxuICAgICAgICAgICAgJ1RyYWluJzogJ1xcdUU3QzAnLFxuICAgICAgICAgICAgJ01vdmUnOiAnXFx1RTdDMicsXG4gICAgICAgICAgICAnVG91Y2hQb2ludGVyJzogJ1xcdUU3QzknLFxuICAgICAgICAgICAgJ01lcmdlJzogJ1xcdUU3RDUnLFxuICAgICAgICAgICAgJ1R1cm5SaWdodCc6ICdcXHVFN0RCJyxcbiAgICAgICAgICAgICdGZXJyeSc6ICdcXHVFN0UzJyxcbiAgICAgICAgICAgICdIaWdobGlnaHQnOiAnXFx1RTdFNicsXG4gICAgICAgICAgICAnUG93ZXJCdXR0b24nOiAnXFx1RTdFOCcsXG4gICAgICAgICAgICAnVGFiJzogJ1xcdUU3RTknLFxuICAgICAgICAgICAgJ0FkbWluJzogJ1xcdUU3RUYnLFxuICAgICAgICAgICAgJ1RWTW9uaXRvcic6ICdcXHVFN0Y0JyxcbiAgICAgICAgICAgICdTcGVha2Vycyc6ICdcXHVFN0Y1JyxcbiAgICAgICAgICAgICdHYW1lJzogJ1xcdUU3RkMnLFxuICAgICAgICAgICAgJ0hvcml6b250YWxUYWJLZXknOiAnXFx1RTdGRCcsXG4gICAgICAgICAgICAnVW5zdGFja1NlbGVjdGVkJzogJ1xcdUU3RkUnLFxuICAgICAgICAgICAgJ1N0YWNrSW5kaWNhdG9yJzogJ1xcdUU3RkYnLFxuICAgICAgICAgICAgJ05hdjJETWFwVmlldyc6ICdcXHVFODAwJyxcbiAgICAgICAgICAgICdTdHJlZXRzaWRlU3BsaXRNaW5pbWl6ZSc6ICdcXHVFODAyJyxcbiAgICAgICAgICAgICdDYXInOiAnXFx1RTgwNCcsXG4gICAgICAgICAgICAnQnVzJzogJ1xcdUU4MDYnLFxuICAgICAgICAgICAgJ0VhdERyaW5rJzogJ1xcdUU4MDcnLFxuICAgICAgICAgICAgJ1NlZURvJzogJ1xcdUU4MDgnLFxuICAgICAgICAgICAgJ0xvY2F0aW9uQ2lyY2xlJzogJ1xcdUU4MEUnLFxuICAgICAgICAgICAgJ0hvbWUnOiAnXFx1RTgwRicsXG4gICAgICAgICAgICAnU3dpdGNoZXJTdGFydEVuZCc6ICdcXHVFODEwJyxcbiAgICAgICAgICAgICdQYXJraW5nTG9jYXRpb24nOiAnXFx1RTgxMScsXG4gICAgICAgICAgICAnSW5jaWRlbnRUcmlhbmdsZSc6ICdcXHVFODE0JyxcbiAgICAgICAgICAgICdUb3VjaCc6ICdcXHVFODE1JyxcbiAgICAgICAgICAgICdNYXBEaXJlY3Rpb25zJzogJ1xcdUU4MTYnLFxuICAgICAgICAgICAgJ0NhcmV0SG9sbG93JzogJ1xcdUU4MTcnLFxuICAgICAgICAgICAgJ0NhcmV0U29saWQnOiAnXFx1RTgxOCcsXG4gICAgICAgICAgICAnSGlzdG9yeSc6ICdcXHVFODFDJyxcbiAgICAgICAgICAgICdMb2NhdGlvbic6ICdcXHVFODFEJyxcbiAgICAgICAgICAgICdNYXBMYXllcnMnOiAnXFx1RTgxRScsXG4gICAgICAgICAgICAnU2VhcmNoTmVhcmJ5JzogJ1xcdUU4MjAnLFxuICAgICAgICAgICAgJ1dvcmsnOiAnXFx1RTgyMScsXG4gICAgICAgICAgICAnUmVjZW50JzogJ1xcdUU4MjMnLFxuICAgICAgICAgICAgJ0hvdGVsJzogJ1xcdUU4MjQnLFxuICAgICAgICAgICAgJ0JhbmsnOiAnXFx1RTgyNScsXG4gICAgICAgICAgICAnTG9jYXRpb25Eb3QnOiAnXFx1RTgyNycsXG4gICAgICAgICAgICAnRGljdGlvbmFyeSc6ICdcXHVFODJEJyxcbiAgICAgICAgICAgICdDaHJvbWVCYWNrJzogJ1xcdUU4MzAnLFxuICAgICAgICAgICAgJ0ZvbGRlck9wZW4nOiAnXFx1RTgzOCcsXG4gICAgICAgICAgICAnUGlubmVkRmlsbCc6ICdcXHVFODQyJyxcbiAgICAgICAgICAgICdSZXZUb2dnbGVLZXknOiAnXFx1RTg0NScsXG4gICAgICAgICAgICAnVVNCJzogJ1xcdUU4OEUnLFxuICAgICAgICAgICAgJ1ByZXZpb3VzJzogJ1xcdUU4OTInLFxuICAgICAgICAgICAgJ05leHQnOiAnXFx1RTg5MycsXG4gICAgICAgICAgICAnU3luYyc6ICdcXHVFODk1JyxcbiAgICAgICAgICAgICdIZWxwJzogJ1xcdUU4OTcnLFxuICAgICAgICAgICAgJ0Vtb2ppJzogJ1xcdUU4OTknLFxuICAgICAgICAgICAgJ01haWxGb3J3YXJkJzogJ1xcdUU4OUMnLFxuICAgICAgICAgICAgJ0Nsb3NlUGFuZSc6ICdcXHVFODlGJyxcbiAgICAgICAgICAgICdPcGVuUGFuZSc6ICdcXHVFOEEwJyxcbiAgICAgICAgICAgICdQcmV2aWV3TGluayc6ICdcXHVFOEExJyxcbiAgICAgICAgICAgICdab29tSW4nOiAnXFx1RThBMycsXG4gICAgICAgICAgICAnQm9va21hcmtzJzogJ1xcdUU4QTQnLFxuICAgICAgICAgICAgJ0RvY3VtZW50JzogJ1xcdUU4QTUnLFxuICAgICAgICAgICAgJ1Byb3RlY3RlZERvY3VtZW50JzogJ1xcdUU4QTYnLFxuICAgICAgICAgICAgJ09wZW5Jbk5ld1dpbmRvdyc6ICdcXHVFOEE3JyxcbiAgICAgICAgICAgICdNYWlsRmlsbCc6ICdcXHVFOEE4JyxcbiAgICAgICAgICAgICdWaWV3QWxsJzogJ1xcdUU4QTknLFxuICAgICAgICAgICAgJ1N3aXRjaCc6ICdcXHVFOEFCJyxcbiAgICAgICAgICAgICdSZW5hbWUnOiAnXFx1RThBQycsXG4gICAgICAgICAgICAnR28nOiAnXFx1RThBRCcsXG4gICAgICAgICAgICAnUmVtb3RlJzogJ1xcdUU4QUYnLFxuICAgICAgICAgICAgJ1NlbGVjdEFsbCc6ICdcXHVFOEIzJyxcbiAgICAgICAgICAgICdPcmllbnRhdGlvbic6ICdcXHVFOEI0JyxcbiAgICAgICAgICAgICdJbXBvcnQnOiAnXFx1RThCNSdcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTEuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTJcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtMi02M2M5OWFiZi53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdQaWN0dXJlJzogJ1xcdUU4QjknLFxuICAgICAgICAgICAgJ0Nocm9tZUNsb3NlJzogJ1xcdUU4QkInLFxuICAgICAgICAgICAgJ1Nob3dSZXN1bHRzJzogJ1xcdUU4QkMnLFxuICAgICAgICAgICAgJ01lc3NhZ2UnOiAnXFx1RThCRCcsXG4gICAgICAgICAgICAnQ2FsZW5kYXJEYXknOiAnXFx1RThCRicsXG4gICAgICAgICAgICAnQ2FsZW5kYXJXZWVrJzogJ1xcdUU4QzAnLFxuICAgICAgICAgICAgJ01haWxSZXBseUFsbCc6ICdcXHVFOEMyJyxcbiAgICAgICAgICAgICdSZWFkJzogJ1xcdUU4QzMnLFxuICAgICAgICAgICAgJ0N1dCc6ICdcXHVFOEM2JyxcbiAgICAgICAgICAgICdQYXltZW50Q2FyZCc6ICdcXHVFOEM3JyxcbiAgICAgICAgICAgICdDb3B5JzogJ1xcdUU4QzgnLFxuICAgICAgICAgICAgJ0ltcG9ydGFudCc6ICdcXHVFOEM5JyxcbiAgICAgICAgICAgICdNYWlsUmVwbHknOiAnXFx1RThDQScsXG4gICAgICAgICAgICAnR290b1RvZGF5JzogJ1xcdUU4RDEnLFxuICAgICAgICAgICAgJ0ZvbnQnOiAnXFx1RThEMicsXG4gICAgICAgICAgICAnRm9udENvbG9yJzogJ1xcdUU4RDMnLFxuICAgICAgICAgICAgJ0ZvbGRlckZpbGwnOiAnXFx1RThENScsXG4gICAgICAgICAgICAnUGVybWlzc2lvbnMnOiAnXFx1RThENycsXG4gICAgICAgICAgICAnRGlzYWJsZVVwZGF0ZXMnOiAnXFx1RThEOCcsXG4gICAgICAgICAgICAnVW5mYXZvcml0ZSc6ICdcXHVFOEQ5JyxcbiAgICAgICAgICAgICdJdGFsaWMnOiAnXFx1RThEQicsXG4gICAgICAgICAgICAnVW5kZXJsaW5lJzogJ1xcdUU4REMnLFxuICAgICAgICAgICAgJ0JvbGQnOiAnXFx1RThERCcsXG4gICAgICAgICAgICAnTW92ZVRvRm9sZGVyJzogJ1xcdUU4REUnLFxuICAgICAgICAgICAgJ0Rpc2xpa2UnOiAnXFx1RThFMCcsXG4gICAgICAgICAgICAnTGlrZSc6ICdcXHVFOEUxJyxcbiAgICAgICAgICAgICdBbGlnbkNlbnRlcic6ICdcXHVFOEUzJyxcbiAgICAgICAgICAgICdPcGVuRmlsZSc6ICdcXHVFOEU1JyxcbiAgICAgICAgICAgICdDbGVhclNlbGVjdGlvbic6ICdcXHVFOEU2JyxcbiAgICAgICAgICAgICdGb250RGVjcmVhc2UnOiAnXFx1RThFNycsXG4gICAgICAgICAgICAnRm9udEluY3JlYXNlJzogJ1xcdUU4RTgnLFxuICAgICAgICAgICAgJ0ZvbnRTaXplJzogJ1xcdUU4RTknLFxuICAgICAgICAgICAgJ0NlbGxQaG9uZSc6ICdcXHVFOEVBJyxcbiAgICAgICAgICAgICdSZXBlYXRPbmUnOiAnXFx1RThFRCcsXG4gICAgICAgICAgICAnUmVwZWF0QWxsJzogJ1xcdUU4RUUnLFxuICAgICAgICAgICAgJ0NhbGN1bGF0b3InOiAnXFx1RThFRicsXG4gICAgICAgICAgICAnTGlicmFyeSc6ICdcXHVFOEYxJyxcbiAgICAgICAgICAgICdQb3N0VXBkYXRlJzogJ1xcdUU4RjMnLFxuICAgICAgICAgICAgJ05ld0ZvbGRlcic6ICdcXHVFOEY0JyxcbiAgICAgICAgICAgICdDYWxlbmRhclJlcGx5JzogJ1xcdUU4RjUnLFxuICAgICAgICAgICAgJ1Vuc3luY0ZvbGRlcic6ICdcXHVFOEY2JyxcbiAgICAgICAgICAgICdTeW5jRm9sZGVyJzogJ1xcdUU4RjcnLFxuICAgICAgICAgICAgJ0Jsb2NrQ29udGFjdCc6ICdcXHVFOEY4JyxcbiAgICAgICAgICAgICdBY2NlcHQnOiAnXFx1RThGQicsXG4gICAgICAgICAgICAnQnVsbGV0ZWRMaXN0JzogJ1xcdUU4RkQnLFxuICAgICAgICAgICAgJ1ByZXZpZXcnOiAnXFx1RThGRicsXG4gICAgICAgICAgICAnTmV3cyc6ICdcXHVFOTAwJyxcbiAgICAgICAgICAgICdDaGF0JzogJ1xcdUU5MDEnLFxuICAgICAgICAgICAgJ0dyb3VwJzogJ1xcdUU5MDInLFxuICAgICAgICAgICAgJ1dvcmxkJzogJ1xcdUU5MDknLFxuICAgICAgICAgICAgJ0NvbW1lbnQnOiAnXFx1RTkwQScsXG4gICAgICAgICAgICAnRG9ja0xlZnQnOiAnXFx1RTkwQycsXG4gICAgICAgICAgICAnRG9ja1JpZ2h0JzogJ1xcdUU5MEQnLFxuICAgICAgICAgICAgJ1JlcGFpcic6ICdcXHVFOTBGJyxcbiAgICAgICAgICAgICdBY2NvdW50cyc6ICdcXHVFOTEwJyxcbiAgICAgICAgICAgICdTdHJlZXQnOiAnXFx1RTkxMycsXG4gICAgICAgICAgICAnUmFkaW9CdWxsZXQnOiAnXFx1RTkxNScsXG4gICAgICAgICAgICAnU3RvcHdhdGNoJzogJ1xcdUU5MTYnLFxuICAgICAgICAgICAgJ0Nsb2NrJzogJ1xcdUU5MTcnLFxuICAgICAgICAgICAgJ1dvcmxkQ2xvY2snOiAnXFx1RTkxOCcsXG4gICAgICAgICAgICAnQWxhcm1DbG9jayc6ICdcXHVFOTE5JyxcbiAgICAgICAgICAgICdQaG90byc6ICdcXHVFOTFCJyxcbiAgICAgICAgICAgICdBY3Rpb25DZW50ZXInOiAnXFx1RTkxQycsXG4gICAgICAgICAgICAnSG9zcGl0YWwnOiAnXFx1RTkxRCcsXG4gICAgICAgICAgICAnVGltZXInOiAnXFx1RTkxRScsXG4gICAgICAgICAgICAnRnVsbENpcmNsZU1hc2snOiAnXFx1RTkxRicsXG4gICAgICAgICAgICAnTG9jYXRpb25GaWxsJzogJ1xcdUU5MjAnLFxuICAgICAgICAgICAgJ0Nocm9tZU1pbmltaXplJzogJ1xcdUU5MjEnLFxuICAgICAgICAgICAgJ0Nocm9tZVJlc3RvcmUnOiAnXFx1RTkyMycsXG4gICAgICAgICAgICAnQW5ub3RhdGlvbic6ICdcXHVFOTI0JyxcbiAgICAgICAgICAgICdGaW5nZXJwcmludCc6ICdcXHVFOTI4JyxcbiAgICAgICAgICAgICdIYW5kd3JpdGluZyc6ICdcXHVFOTI5JyxcbiAgICAgICAgICAgICdDaHJvbWVGdWxsU2NyZWVuJzogJ1xcdUU5MkQnLFxuICAgICAgICAgICAgJ0NvbXBsZXRlZCc6ICdcXHVFOTMwJyxcbiAgICAgICAgICAgICdMYWJlbCc6ICdcXHVFOTMyJyxcbiAgICAgICAgICAgICdGbGlja0Rvd24nOiAnXFx1RTkzNScsXG4gICAgICAgICAgICAnRmxpY2tVcCc6ICdcXHVFOTM2JyxcbiAgICAgICAgICAgICdGbGlja0xlZnQnOiAnXFx1RTkzNycsXG4gICAgICAgICAgICAnRmxpY2tSaWdodCc6ICdcXHVFOTM4JyxcbiAgICAgICAgICAgICdNaW5pRXhwYW5kJzogJ1xcdUU5M0EnLFxuICAgICAgICAgICAgJ01pbmlDb250cmFjdCc6ICdcXHVFOTNCJyxcbiAgICAgICAgICAgICdTdHJlYW1pbmcnOiAnXFx1RTkzRScsXG4gICAgICAgICAgICAnTXVzaWNJbkNvbGxlY3Rpb24nOiAnXFx1RTk0MCcsXG4gICAgICAgICAgICAnT25lRHJpdmVMb2dvJzogJ1xcdUU5NDEnLFxuICAgICAgICAgICAgJ0NvbXBhc3NOVyc6ICdcXHVFOTQyJyxcbiAgICAgICAgICAgICdDb2RlJzogJ1xcdUU5NDMnLFxuICAgICAgICAgICAgJ0xpZ2h0bmluZ0JvbHQnOiAnXFx1RTk0NScsXG4gICAgICAgICAgICAnQ2FsY3VsYXRvck11bHRpcGx5JzogJ1xcdUU5NDcnLFxuICAgICAgICAgICAgJ0NhbGN1bGF0b3JBZGRpdGlvbic6ICdcXHVFOTQ4JyxcbiAgICAgICAgICAgICdDYWxjdWxhdG9yU3VidHJhY3QnOiAnXFx1RTk0OScsXG4gICAgICAgICAgICAnQ2FsY3VsYXRvclBlcmNlbnRhZ2UnOiAnXFx1RTk0QycsXG4gICAgICAgICAgICAnQ2FsY3VsYXRvckVxdWFsVG8nOiAnXFx1RTk0RScsXG4gICAgICAgICAgICAnUHJpbnRmYXhQcmludGVyRmlsZSc6ICdcXHVFOTU2JyxcbiAgICAgICAgICAgICdTdG9yYWdlT3B0aWNhbCc6ICdcXHVFOTU4JyxcbiAgICAgICAgICAgICdDb21tdW5pY2F0aW9ucyc6ICdcXHVFOTVBJyxcbiAgICAgICAgICAgICdIZWFkc2V0JzogJ1xcdUU5NUInLFxuICAgICAgICAgICAgJ0hlYWx0aCc6ICdcXHVFOTVFJyxcbiAgICAgICAgICAgICdXZWJjYW0yJzogJ1xcdUU5NjAnLFxuICAgICAgICAgICAgJ0Zyb250Q2FtZXJhJzogJ1xcdUU5NkInLFxuICAgICAgICAgICAgJ0NoZXZyb25VcFNtYWxsJzogJ1xcdUU5NkQnXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlZ2lzdGVySWNvbnMoc3Vic2V0LCBvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhYnJpYy1pY29ucy0yLmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy0zXFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTMtMDg5ZTIxN2Eud29mZicpIGZvcm1hdCgnd29mZicpXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAnQ2hldnJvbkRvd25TbWFsbCc6ICdcXHVFOTZFJyxcbiAgICAgICAgICAgICdDaGV2cm9uTGVmdFNtYWxsJzogJ1xcdUU5NkYnLFxuICAgICAgICAgICAgJ0NoZXZyb25SaWdodFNtYWxsJzogJ1xcdUU5NzAnLFxuICAgICAgICAgICAgJ0NoZXZyb25VcE1lZCc6ICdcXHVFOTcxJyxcbiAgICAgICAgICAgICdDaGV2cm9uRG93bk1lZCc6ICdcXHVFOTcyJyxcbiAgICAgICAgICAgICdDaGV2cm9uTGVmdE1lZCc6ICdcXHVFOTczJyxcbiAgICAgICAgICAgICdDaGV2cm9uUmlnaHRNZWQnOiAnXFx1RTk3NCcsXG4gICAgICAgICAgICAnRGV2aWNlczInOiAnXFx1RTk3NScsXG4gICAgICAgICAgICAnUEMxJzogJ1xcdUU5NzcnLFxuICAgICAgICAgICAgJ1ByZXNlbmNlQ2hpY2tsZXRWaWRlbyc6ICdcXHVFOTc5JyxcbiAgICAgICAgICAgICdSZXBseSc6ICdcXHVFOTdBJyxcbiAgICAgICAgICAgICdIYWxmQWxwaGEnOiAnXFx1RTk3RScsXG4gICAgICAgICAgICAnQ29uc3RydWN0aW9uQ29uZSc6ICdcXHVFOThGJyxcbiAgICAgICAgICAgICdEb3VibGVDaGV2cm9uTGVmdE1lZCc6ICdcXHVFOTkxJyxcbiAgICAgICAgICAgICdWb2x1bWUwJzogJ1xcdUU5OTInLFxuICAgICAgICAgICAgJ1ZvbHVtZTEnOiAnXFx1RTk5MycsXG4gICAgICAgICAgICAnVm9sdW1lMic6ICdcXHVFOTk0JyxcbiAgICAgICAgICAgICdWb2x1bWUzJzogJ1xcdUU5OTUnLFxuICAgICAgICAgICAgJ0NoYXJ0JzogJ1xcdUU5OTknLFxuICAgICAgICAgICAgJ1JvYm90JzogJ1xcdUU5OUEnLFxuICAgICAgICAgICAgJ01hbnVmYWN0dXJpbmcnOiAnXFx1RTk5QycsXG4gICAgICAgICAgICAnTG9ja1NvbGlkJzogJ1xcdUU5QTInLFxuICAgICAgICAgICAgJ0ZpdFBhZ2UnOiAnXFx1RTlBNicsXG4gICAgICAgICAgICAnRml0V2lkdGgnOiAnXFx1RTlBNycsXG4gICAgICAgICAgICAnQmlkaUx0cic6ICdcXHVFOUFBJyxcbiAgICAgICAgICAgICdCaWRpUnRsJzogJ1xcdUU5QUInLFxuICAgICAgICAgICAgJ1JpZ2h0RG91YmxlUXVvdGUnOiAnXFx1RTlCMScsXG4gICAgICAgICAgICAnU3VubnknOiAnXFx1RTlCRCcsXG4gICAgICAgICAgICAnQ2xvdWRXZWF0aGVyJzogJ1xcdUU5QkUnLFxuICAgICAgICAgICAgJ0Nsb3VkeSc6ICdcXHVFOUJGJyxcbiAgICAgICAgICAgICdQYXJ0bHlDbG91ZHlEYXknOiAnXFx1RTlDMCcsXG4gICAgICAgICAgICAnUGFydGx5Q2xvdWR5TmlnaHQnOiAnXFx1RTlDMScsXG4gICAgICAgICAgICAnQ2xlYXJOaWdodCc6ICdcXHVFOUMyJyxcbiAgICAgICAgICAgICdSYWluU2hvd2Vyc0RheSc6ICdcXHVFOUMzJyxcbiAgICAgICAgICAgICdSYWluJzogJ1xcdUU5QzQnLFxuICAgICAgICAgICAgJ1RodW5kZXJzdG9ybXMnOiAnXFx1RTlDNicsXG4gICAgICAgICAgICAnUmFpblNub3cnOiAnXFx1RTlDNycsXG4gICAgICAgICAgICAnU25vdyc6ICdcXHVFOUM4JyxcbiAgICAgICAgICAgICdCbG93aW5nU25vdyc6ICdcXHVFOUM5JyxcbiAgICAgICAgICAgICdGcmlnaWQnOiAnXFx1RTlDQScsXG4gICAgICAgICAgICAnRm9nJzogJ1xcdUU5Q0InLFxuICAgICAgICAgICAgJ1NxdWFsbHMnOiAnXFx1RTlDQycsXG4gICAgICAgICAgICAnRHVzdHN0b3JtJzogJ1xcdUU5Q0QnLFxuICAgICAgICAgICAgJ1Vua25vd24nOiAnXFx1RTlDRScsXG4gICAgICAgICAgICAnUHJlY2lwaXRhdGlvbic6ICdcXHVFOUNGJyxcbiAgICAgICAgICAgICdSaWJib24nOiAnXFx1RTlEMScsXG4gICAgICAgICAgICAnQXJlYUNoYXJ0JzogJ1xcdUU5RDInLFxuICAgICAgICAgICAgJ0Fzc2lnbic6ICdcXHVFOUQzJyxcbiAgICAgICAgICAgICdGbG93Q2hhcnQnOiAnXFx1RTlENCcsXG4gICAgICAgICAgICAnQ2hlY2tMaXN0JzogJ1xcdUU5RDUnLFxuICAgICAgICAgICAgJ0RpYWdub3N0aWMnOiAnXFx1RTlEOScsXG4gICAgICAgICAgICAnR2VuZXJhdGUnOiAnXFx1RTlEQScsXG4gICAgICAgICAgICAnTGluZUNoYXJ0JzogJ1xcdUU5RTYnLFxuICAgICAgICAgICAgJ0VxdWFsaXplcic6ICdcXHVFOUU5JyxcbiAgICAgICAgICAgICdCYXJDaGFydEhvcml6b250YWwnOiAnXFx1RTlFQicsXG4gICAgICAgICAgICAnQmFyQ2hhcnRWZXJ0aWNhbCc6ICdcXHVFOUVDJyxcbiAgICAgICAgICAgICdGcmVlemluZyc6ICdcXHVFOUVGJyxcbiAgICAgICAgICAgICdGdW5uZWxDaGFydCc6ICdcXHVFOUYxJyxcbiAgICAgICAgICAgICdQcm9jZXNzaW5nJzogJ1xcdUU5RjUnLFxuICAgICAgICAgICAgJ1F1YW50aXR5JzogJ1xcdUU5RjgnLFxuICAgICAgICAgICAgJ1JlcG9ydERvY3VtZW50JzogJ1xcdUU5RjknLFxuICAgICAgICAgICAgJ1N0YWNrQ29sdW1uQ2hhcnQnOiAnXFx1RTlGQycsXG4gICAgICAgICAgICAnU25vd1Nob3dlckRheSc6ICdcXHVFOUZEJyxcbiAgICAgICAgICAgICdIYWlsRGF5JzogJ1xcdUVBMDAnLFxuICAgICAgICAgICAgJ1dvcmtGbG93JzogJ1xcdUVBMDEnLFxuICAgICAgICAgICAgJ0hvdXJHbGFzcyc6ICdcXHVFQTAzJyxcbiAgICAgICAgICAgICdTdG9yZUxvZ29NZWQyMCc6ICdcXHVFQTA0JyxcbiAgICAgICAgICAgICdUaW1lU2hlZXQnOiAnXFx1RUEwNScsXG4gICAgICAgICAgICAnVHJpYW5nbGVTb2xpZCc6ICdcXHVFQTA4JyxcbiAgICAgICAgICAgICdVcGdyYWRlQW5hbHlzaXMnOiAnXFx1RUEwQicsXG4gICAgICAgICAgICAnVmlkZW9Tb2xpZCc6ICdcXHVFQTBDJyxcbiAgICAgICAgICAgICdSYWluU2hvd2Vyc05pZ2h0JzogJ1xcdUVBMEYnLFxuICAgICAgICAgICAgJ1Nub3dTaG93ZXJOaWdodCc6ICdcXHVFQTExJyxcbiAgICAgICAgICAgICdUZWFtd29yayc6ICdcXHVFQTEyJyxcbiAgICAgICAgICAgICdIYWlsTmlnaHQnOiAnXFx1RUExMycsXG4gICAgICAgICAgICAnUGVvcGxlQWRkJzogJ1xcdUVBMTUnLFxuICAgICAgICAgICAgJ0dsYXNzZXMnOiAnXFx1RUExNicsXG4gICAgICAgICAgICAnRGF0ZVRpbWUyJzogJ1xcdUVBMTcnLFxuICAgICAgICAgICAgJ1NoaWVsZCc6ICdcXHVFQTE4JyxcbiAgICAgICAgICAgICdIZWFkZXIxJzogJ1xcdUVBMTknLFxuICAgICAgICAgICAgJ1BhZ2VBZGQnOiAnXFx1RUExQScsXG4gICAgICAgICAgICAnTnVtYmVyZWRMaXN0JzogJ1xcdUVBMUMnLFxuICAgICAgICAgICAgJ1Bvd2VyQklMb2dvJzogJ1xcdUVBMUUnLFxuICAgICAgICAgICAgJ0luZm8yJzogJ1xcdUVBMUYnLFxuICAgICAgICAgICAgJ011c2ljSW5Db2xsZWN0aW9uRmlsbCc6ICdcXHVFQTM2JyxcbiAgICAgICAgICAgICdBc3Rlcmlzayc6ICdcXHVFQTM4JyxcbiAgICAgICAgICAgICdFcnJvckJhZGdlJzogJ1xcdUVBMzknLFxuICAgICAgICAgICAgJ0NpcmNsZUZpbGwnOiAnXFx1RUEzQicsXG4gICAgICAgICAgICAnUmVjb3JkMic6ICdcXHVFQTNGJyxcbiAgICAgICAgICAgICdBbGxBcHBzTWlycm9yZWQnOiAnXFx1RUE0MCcsXG4gICAgICAgICAgICAnQm9va21hcmtzTWlycm9yZWQnOiAnXFx1RUE0MScsXG4gICAgICAgICAgICAnQnVsbGV0ZWRMaXN0TWlycm9yZWQnOiAnXFx1RUE0MicsXG4gICAgICAgICAgICAnQ2FyZXRIb2xsb3dNaXJyb3JlZCc6ICdcXHVFQTQ1JyxcbiAgICAgICAgICAgICdDYXJldFNvbGlkTWlycm9yZWQnOiAnXFx1RUE0NicsXG4gICAgICAgICAgICAnQ2hyb21lQmFja01pcnJvcmVkJzogJ1xcdUVBNDcnLFxuICAgICAgICAgICAgJ0NsZWFyU2VsZWN0aW9uTWlycm9yZWQnOiAnXFx1RUE0OCcsXG4gICAgICAgICAgICAnQ2xvc2VQYW5lTWlycm9yZWQnOiAnXFx1RUE0OScsXG4gICAgICAgICAgICAnRG9ja0xlZnRNaXJyb3JlZCc6ICdcXHVFQTRDJyxcbiAgICAgICAgICAgICdEb3VibGVDaGV2cm9uTGVmdE1lZE1pcnJvcmVkJzogJ1xcdUVBNEQnLFxuICAgICAgICAgICAgJ0dvTWlycm9yZWQnOiAnXFx1RUE0RidcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTMuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTRcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtNC1hNjU2Y2MwYS53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdIZWxwTWlycm9yZWQnOiAnXFx1RUE1MScsXG4gICAgICAgICAgICAnSW1wb3J0TWlycm9yZWQnOiAnXFx1RUE1MicsXG4gICAgICAgICAgICAnSW1wb3J0QWxsTWlycm9yZWQnOiAnXFx1RUE1MycsXG4gICAgICAgICAgICAnTGlzdE1pcnJvcmVkJzogJ1xcdUVBNTUnLFxuICAgICAgICAgICAgJ01haWxGb3J3YXJkTWlycm9yZWQnOiAnXFx1RUE1NicsXG4gICAgICAgICAgICAnTWFpbFJlcGx5TWlycm9yZWQnOiAnXFx1RUE1NycsXG4gICAgICAgICAgICAnTWFpbFJlcGx5QWxsTWlycm9yZWQnOiAnXFx1RUE1OCcsXG4gICAgICAgICAgICAnTWluaUNvbnRyYWN0TWlycm9yZWQnOiAnXFx1RUE1OScsXG4gICAgICAgICAgICAnTWluaUV4cGFuZE1pcnJvcmVkJzogJ1xcdUVBNUEnLFxuICAgICAgICAgICAgJ09wZW5QYW5lTWlycm9yZWQnOiAnXFx1RUE1QicsXG4gICAgICAgICAgICAnUGFya2luZ0xvY2F0aW9uTWlycm9yZWQnOiAnXFx1RUE1RScsXG4gICAgICAgICAgICAnU2VuZE1pcnJvcmVkJzogJ1xcdUVBNjMnLFxuICAgICAgICAgICAgJ1Nob3dSZXN1bHRzTWlycm9yZWQnOiAnXFx1RUE2NScsXG4gICAgICAgICAgICAnVGh1bWJuYWlsVmlld01pcnJvcmVkJzogJ1xcdUVBNjcnLFxuICAgICAgICAgICAgJ01lZGlhJzogJ1xcdUVBNjknLFxuICAgICAgICAgICAgJ0RldmljZXMzJzogJ1xcdUVBNkMnLFxuICAgICAgICAgICAgJ0ZvY3VzJzogJ1xcdUVBNkYnLFxuICAgICAgICAgICAgJ1ZpZGVvTGlnaHRPZmYnOiAnXFx1RUE3NCcsXG4gICAgICAgICAgICAnTGlnaHRidWxiJzogJ1xcdUVBODAnLFxuICAgICAgICAgICAgJ1N0YXR1c1RyaWFuZ2xlJzogJ1xcdUVBODInLFxuICAgICAgICAgICAgJ1ZvbHVtZURpc2FibGVkJzogJ1xcdUVBODUnLFxuICAgICAgICAgICAgJ1B1enpsZSc6ICdcXHVFQTg2JyxcbiAgICAgICAgICAgICdFbW9qaU5ldXRyYWwnOiAnXFx1RUE4NycsXG4gICAgICAgICAgICAnRW1vamlEaXNhcHBvaW50ZWQnOiAnXFx1RUE4OCcsXG4gICAgICAgICAgICAnSG9tZVNvbGlkJzogJ1xcdUVBOEEnLFxuICAgICAgICAgICAgJ1Jpbmdlcic6ICdcXHVFQThGJyxcbiAgICAgICAgICAgICdQREYnOiAnXFx1RUE5MCcsXG4gICAgICAgICAgICAnSGVhcnRCcm9rZW4nOiAnXFx1RUE5MicsXG4gICAgICAgICAgICAnU3RvcmVMb2dvMTYnOiAnXFx1RUE5NicsXG4gICAgICAgICAgICAnTXVsdGlTZWxlY3RNaXJyb3JlZCc6ICdcXHVFQTk4JyxcbiAgICAgICAgICAgICdCcm9vbSc6ICdcXHVFQTk5JyxcbiAgICAgICAgICAgICdBZGRUb1Nob3BwaW5nTGlzdCc6ICdcXHVFQTlBJyxcbiAgICAgICAgICAgICdDb2NrdGFpbHMnOiAnXFx1RUE5RCcsXG4gICAgICAgICAgICAnV2luZXMnOiAnXFx1RUFCRicsXG4gICAgICAgICAgICAnQXJ0aWNsZXMnOiAnXFx1RUFDMScsXG4gICAgICAgICAgICAnQ3ljbGluZyc6ICdcXHVFQUM3JyxcbiAgICAgICAgICAgICdEaWV0UGxhbk5vdGVib29rJzogJ1xcdUVBQzgnLFxuICAgICAgICAgICAgJ1BpbGwnOiAnXFx1RUFDQicsXG4gICAgICAgICAgICAnRXhlcmNpc2VUcmFja2VyJzogJ1xcdUVBQ0MnLFxuICAgICAgICAgICAgJ0hhbmRzRnJlZSc6ICdcXHVFQUQwJyxcbiAgICAgICAgICAgICdNZWRpY2FsJzogJ1xcdUVBRDQnLFxuICAgICAgICAgICAgJ1J1bm5pbmcnOiAnXFx1RUFEQScsXG4gICAgICAgICAgICAnV2VpZ2h0cyc6ICdcXHVFQURCJyxcbiAgICAgICAgICAgICdUcmFja2Vycyc6ICdcXHVFQURGJyxcbiAgICAgICAgICAgICdBZGROb3Rlcyc6ICdcXHVFQUUzJyxcbiAgICAgICAgICAgICdBbGxDdXJyZW5jeSc6ICdcXHVFQUU0JyxcbiAgICAgICAgICAgICdCYXJDaGFydDQnOiAnXFx1RUFFNycsXG4gICAgICAgICAgICAnQ2lyY2xlUGx1cyc6ICdcXHVFQUVFJyxcbiAgICAgICAgICAgICdDb2ZmZWUnOiAnXFx1RUFFRicsXG4gICAgICAgICAgICAnQ290dG9uJzogJ1xcdUVBRjMnLFxuICAgICAgICAgICAgJ01hcmtldCc6ICdcXHVFQUZDJyxcbiAgICAgICAgICAgICdNb25leSc6ICdcXHVFQUZEJyxcbiAgICAgICAgICAgICdQaWVEb3VibGUnOiAnXFx1RUIwNCcsXG4gICAgICAgICAgICAnUGllU2luZ2xlJzogJ1xcdUVCMDUnLFxuICAgICAgICAgICAgJ1JlbW92ZUZpbHRlcic6ICdcXHVFQjA4JyxcbiAgICAgICAgICAgICdTYXZpbmdzJzogJ1xcdUVCMEInLFxuICAgICAgICAgICAgJ1NlbGwnOiAnXFx1RUIwQycsXG4gICAgICAgICAgICAnU3RvY2tEb3duJzogJ1xcdUVCMEYnLFxuICAgICAgICAgICAgJ1N0b2NrVXAnOiAnXFx1RUIxMScsXG4gICAgICAgICAgICAnTGFtcCc6ICdcXHVFQjE5JyxcbiAgICAgICAgICAgICdTb3VyY2UnOiAnXFx1RUIxQicsXG4gICAgICAgICAgICAnTVNOVmlkZW9zJzogJ1xcdUVCMUMnLFxuICAgICAgICAgICAgJ0NyaWNrZXQnOiAnXFx1RUIxRScsXG4gICAgICAgICAgICAnR29sZic6ICdcXHVFQjFGJyxcbiAgICAgICAgICAgICdCYXNlYmFsbCc6ICdcXHVFQjIwJyxcbiAgICAgICAgICAgICdTb2NjZXInOiAnXFx1RUIyMScsXG4gICAgICAgICAgICAnTW9yZVNwb3J0cyc6ICdcXHVFQjIyJyxcbiAgICAgICAgICAgICdBdXRvUmFjaW5nJzogJ1xcdUVCMjQnLFxuICAgICAgICAgICAgJ0NvbGxlZ2VIb29wcyc6ICdcXHVFQjI1JyxcbiAgICAgICAgICAgICdDb2xsZWdlRm9vdGJhbGwnOiAnXFx1RUIyNicsXG4gICAgICAgICAgICAnUHJvRm9vdGJhbGwnOiAnXFx1RUIyNycsXG4gICAgICAgICAgICAnUHJvSG9ja2V5JzogJ1xcdUVCMjgnLFxuICAgICAgICAgICAgJ1J1Z2J5JzogJ1xcdUVCMkQnLFxuICAgICAgICAgICAgJ1N1YnN0aXR1dGlvbnNJbic6ICdcXHVFQjMxJyxcbiAgICAgICAgICAgICdUZW5uaXMnOiAnXFx1RUIzMycsXG4gICAgICAgICAgICAnQXJyaXZhbHMnOiAnXFx1RUIzNCcsXG4gICAgICAgICAgICAnRGVzaWduJzogJ1xcdUVCM0MnLFxuICAgICAgICAgICAgJ1dlYnNpdGUnOiAnXFx1RUI0MScsXG4gICAgICAgICAgICAnRHJvcCc6ICdcXHVFQjQyJyxcbiAgICAgICAgICAgICdIaXN0b3JpY2FsV2VhdGhlcic6ICdcXHVFQjQzJyxcbiAgICAgICAgICAgICdTa2lSZXNvcnRzJzogJ1xcdUVCNDUnLFxuICAgICAgICAgICAgJ1Nub3dmbGFrZSc6ICdcXHVFQjQ2JyxcbiAgICAgICAgICAgICdCdXNTb2xpZCc6ICdcXHVFQjQ3JyxcbiAgICAgICAgICAgICdGZXJyeVNvbGlkJzogJ1xcdUVCNDgnLFxuICAgICAgICAgICAgJ0FpcnBsYW5lU29saWQnOiAnXFx1RUI0QycsXG4gICAgICAgICAgICAnVHJhaW5Tb2xpZCc6ICdcXHVFQjREJyxcbiAgICAgICAgICAgICdUaWNrZXQnOiAnXFx1RUI1NCcsXG4gICAgICAgICAgICAnV2lmaVdhcm5pbmc0JzogJ1xcdUVCNjMnLFxuICAgICAgICAgICAgJ0RldmljZXM0JzogJ1xcdUVCNjYnLFxuICAgICAgICAgICAgJ0F6dXJlTG9nbyc6ICdcXHVFQjZBJyxcbiAgICAgICAgICAgICdCaW5nTG9nbyc6ICdcXHVFQjZCJyxcbiAgICAgICAgICAgICdNU05Mb2dvJzogJ1xcdUVCNkMnLFxuICAgICAgICAgICAgJ091dGxvb2tMb2dvSW52ZXJzZSc6ICdcXHVFQjZEJyxcbiAgICAgICAgICAgICdPZmZpY2VMb2dvJzogJ1xcdUVCNkUnLFxuICAgICAgICAgICAgJ1NreXBlTG9nbyc6ICdcXHVFQjZGJyxcbiAgICAgICAgICAgICdEb29yJzogJ1xcdUVCNzUnLFxuICAgICAgICAgICAgJ0VkaXRNaXJyb3JlZCc6ICdcXHVFQjdFJyxcbiAgICAgICAgICAgICdHaWZ0Q2FyZCc6ICdcXHVFQjhFJyxcbiAgICAgICAgICAgICdEb3VibGVCb29rbWFyayc6ICdcXHVFQjhGJyxcbiAgICAgICAgICAgICdTdGF0dXNFcnJvckZ1bGwnOiAnXFx1RUI5MCdcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTQuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTVcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtNS1mOTViYTI2MC53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdDZXJ0aWZpY2F0ZSc6ICdcXHVFQjk1JyxcbiAgICAgICAgICAgICdGYXN0Rm9yd2FyZCc6ICdcXHVFQjlEJyxcbiAgICAgICAgICAgICdSZXdpbmQnOiAnXFx1RUI5RScsXG4gICAgICAgICAgICAnUGhvdG8yJzogJ1xcdUVCOUYnLFxuICAgICAgICAgICAgJ09wZW5Tb3VyY2UnOiAnXFx1RUJDMicsXG4gICAgICAgICAgICAnTW92ZXJzJzogJ1xcdUVCQ0QnLFxuICAgICAgICAgICAgJ0Nsb3VkRG93bmxvYWQnOiAnXFx1RUJEMycsXG4gICAgICAgICAgICAnRmFtaWx5JzogJ1xcdUVCREEnLFxuICAgICAgICAgICAgJ1dpbmREaXJlY3Rpb24nOiAnXFx1RUJFNicsXG4gICAgICAgICAgICAnQnVnJzogJ1xcdUVCRTgnLFxuICAgICAgICAgICAgJ1NpdGVTY2FuJzogJ1xcdUVCRUMnLFxuICAgICAgICAgICAgJ0Jyb3dzZXJTY3JlZW5TaG90JzogJ1xcdUVCRUQnLFxuICAgICAgICAgICAgJ0YxMkRldlRvb2xzJzogJ1xcdUVCRUUnLFxuICAgICAgICAgICAgJ0NTUyc6ICdcXHVFQkVGJyxcbiAgICAgICAgICAgICdKUyc6ICdcXHVFQkYwJyxcbiAgICAgICAgICAgICdEZWxpdmVyeVRydWNrJzogJ1xcdUVCRjQnLFxuICAgICAgICAgICAgJ1JlbWluZGVyUGVyc29uJzogJ1xcdUVCRjcnLFxuICAgICAgICAgICAgJ1JlbWluZGVyR3JvdXAnOiAnXFx1RUJGOCcsXG4gICAgICAgICAgICAnUmVtaW5kZXJUaW1lJzogJ1xcdUVCRjknLFxuICAgICAgICAgICAgJ1RhYmxldE1vZGUnOiAnXFx1RUJGQycsXG4gICAgICAgICAgICAnVW1icmVsbGEnOiAnXFx1RUMwNCcsXG4gICAgICAgICAgICAnTmV0d29ya1Rvd2VyJzogJ1xcdUVDMDUnLFxuICAgICAgICAgICAgJ0NpdHlOZXh0JzogJ1xcdUVDMDYnLFxuICAgICAgICAgICAgJ0NpdHlOZXh0Mic6ICdcXHVFQzA3JyxcbiAgICAgICAgICAgICdTZWN0aW9uJzogJ1xcdUVDMEMnLFxuICAgICAgICAgICAgJ09uZU5vdGVMb2dvSW52ZXJzZSc6ICdcXHVFQzBEJyxcbiAgICAgICAgICAgICdUb2dnbGVGaWxsZWQnOiAnXFx1RUMxMScsXG4gICAgICAgICAgICAnVG9nZ2xlQm9yZGVyJzogJ1xcdUVDMTInLFxuICAgICAgICAgICAgJ1NsaWRlclRodW1iJzogJ1xcdUVDMTMnLFxuICAgICAgICAgICAgJ1RvZ2dsZVRodW1iJzogJ1xcdUVDMTQnLFxuICAgICAgICAgICAgJ0RvY3VtZW50YXRpb24nOiAnXFx1RUMxNycsXG4gICAgICAgICAgICAnQmFkZ2UnOiAnXFx1RUMxQicsXG4gICAgICAgICAgICAnR2lmdGJveCc6ICdcXHVFQzFGJyxcbiAgICAgICAgICAgICdWaXN1YWxTdHVkaW9Mb2dvJzogJ1xcdUVDMjInLFxuICAgICAgICAgICAgJ0hvbWVHcm91cCc6ICdcXHVFQzI2JyxcbiAgICAgICAgICAgICdFeGNlbExvZ29JbnZlcnNlJzogJ1xcdUVDMjgnLFxuICAgICAgICAgICAgJ1dvcmRMb2dvSW52ZXJzZSc6ICdcXHVFQzI5JyxcbiAgICAgICAgICAgICdQb3dlclBvaW50TG9nb0ludmVyc2UnOiAnXFx1RUMyQScsXG4gICAgICAgICAgICAnQ2FmZSc6ICdcXHVFQzMyJyxcbiAgICAgICAgICAgICdTcGVlZEhpZ2gnOiAnXFx1RUM0QScsXG4gICAgICAgICAgICAnQ29tbWl0bWVudHMnOiAnXFx1RUM0RCcsXG4gICAgICAgICAgICAnVGhpc1BDJzogJ1xcdUVDNEUnLFxuICAgICAgICAgICAgJ011c2ljTm90ZSc6ICdcXHVFQzRGJyxcbiAgICAgICAgICAgICdNaWNPZmYnOiAnXFx1RUM1NCcsXG4gICAgICAgICAgICAnUGxheWJhY2tSYXRlMXgnOiAnXFx1RUM1NycsXG4gICAgICAgICAgICAnRWRnZUxvZ28nOiAnXFx1RUM2MCcsXG4gICAgICAgICAgICAnQ29tcGxldGVkU29saWQnOiAnXFx1RUM2MScsXG4gICAgICAgICAgICAnQWxidW1SZW1vdmUnOiAnXFx1RUM2MicsXG4gICAgICAgICAgICAnTWVzc2FnZUZpbGwnOiAnXFx1RUM3MCcsXG4gICAgICAgICAgICAnVGFibGV0U2VsZWN0ZWQnOiAnXFx1RUM3NCcsXG4gICAgICAgICAgICAnTW9iaWxlU2VsZWN0ZWQnOiAnXFx1RUM3NScsXG4gICAgICAgICAgICAnTGFwdG9wU2VsZWN0ZWQnOiAnXFx1RUM3NicsXG4gICAgICAgICAgICAnVFZNb25pdG9yU2VsZWN0ZWQnOiAnXFx1RUM3NycsXG4gICAgICAgICAgICAnRGV2ZWxvcGVyVG9vbHMnOiAnXFx1RUM3QScsXG4gICAgICAgICAgICAnU2hhcGVzJzogJ1xcdUVDN0MnLFxuICAgICAgICAgICAgJ0luc2VydFRleHRCb3gnOiAnXFx1RUM3RCcsXG4gICAgICAgICAgICAnTG93ZXJCcmlnaHRuZXNzJzogJ1xcdUVDOEEnLFxuICAgICAgICAgICAgJ1dlYkNvbXBvbmVudHMnOiAnXFx1RUM4QicsXG4gICAgICAgICAgICAnT2ZmbGluZVN0b3JhZ2UnOiAnXFx1RUM4QycsXG4gICAgICAgICAgICAnRE9NJzogJ1xcdUVDOEQnLFxuICAgICAgICAgICAgJ0Nsb3VkVXBsb2FkJzogJ1xcdUVDOEUnLFxuICAgICAgICAgICAgJ1Njcm9sbFVwRG93bic6ICdcXHVFQzhGJyxcbiAgICAgICAgICAgICdEYXRlVGltZSc6ICdcXHVFQzkyJyxcbiAgICAgICAgICAgICdFdmVudCc6ICdcXHVFQ0EzJyxcbiAgICAgICAgICAgICdDYWtlJzogJ1xcdUVDQTQnLFxuICAgICAgICAgICAgJ09yZyc6ICdcXHVFQ0E2JyxcbiAgICAgICAgICAgICdQYXJ0eUxlYWRlcic6ICdcXHVFQ0E3JyxcbiAgICAgICAgICAgICdEUk0nOiAnXFx1RUNBOCcsXG4gICAgICAgICAgICAnQ2xvdWRBZGQnOiAnXFx1RUNBOScsXG4gICAgICAgICAgICAnQXBwSWNvbkRlZmF1bHQnOiAnXFx1RUNBQScsXG4gICAgICAgICAgICAnUGhvdG8yQWRkJzogJ1xcdUVDQUInLFxuICAgICAgICAgICAgJ1Bob3RvMlJlbW92ZSc6ICdcXHVFQ0FDJyxcbiAgICAgICAgICAgICdDYWxvcmllcyc6ICdcXHVFQ0FEJyxcbiAgICAgICAgICAgICdQT0knOiAnXFx1RUNBRicsXG4gICAgICAgICAgICAnQWRkVG8nOiAnXFx1RUNDOCcsXG4gICAgICAgICAgICAnUmFkaW9CdG5PZmYnOiAnXFx1RUNDQScsXG4gICAgICAgICAgICAnUmFkaW9CdG5Pbic6ICdcXHVFQ0NCJyxcbiAgICAgICAgICAgICdFeHBsb3JlQ29udGVudCc6ICdcXHVFQ0NEJyxcbiAgICAgICAgICAgICdQcm9kdWN0JzogJ1xcdUVDREMnLFxuICAgICAgICAgICAgJ1Byb2dyZXNzTG9vcElubmVyJzogJ1xcdUVDREUnLFxuICAgICAgICAgICAgJ1Byb2dyZXNzTG9vcE91dGVyJzogJ1xcdUVDREYnLFxuICAgICAgICAgICAgJ0Jsb2NrZWQyJzogJ1xcdUVDRTQnLFxuICAgICAgICAgICAgJ0ZhbmdCb2R5JzogJ1xcdUVDRUInLFxuICAgICAgICAgICAgJ1Rvb2xib3gnOiAnXFx1RUNFRCcsXG4gICAgICAgICAgICAnUGFnZUhlYWRlcic6ICdcXHVFQ0VFJyxcbiAgICAgICAgICAgICdDaGF0SW52aXRlRnJpZW5kJzogJ1xcdUVDRkUnLFxuICAgICAgICAgICAgJ0JydXNoJzogJ1xcdUVDRkYnLFxuICAgICAgICAgICAgJ1NoaXJ0JzogJ1xcdUVEMDAnLFxuICAgICAgICAgICAgJ0Nyb3duJzogJ1xcdUVEMDEnLFxuICAgICAgICAgICAgJ0RpYW1vbmQnOiAnXFx1RUQwMicsXG4gICAgICAgICAgICAnU2NhbGVVcCc6ICdcXHVFRDA5JyxcbiAgICAgICAgICAgICdRUkNvZGUnOiAnXFx1RUQxNCcsXG4gICAgICAgICAgICAnRmVlZGJhY2snOiAnXFx1RUQxNScsXG4gICAgICAgICAgICAnU2hhcmVwb2ludExvZ29JbnZlcnNlJzogJ1xcdUVEMTgnLFxuICAgICAgICAgICAgJ1lhbW1lckxvZ28nOiAnXFx1RUQxOScsXG4gICAgICAgICAgICAnSGlkZSc6ICdcXHVFRDFBJyxcbiAgICAgICAgICAgICdVbmVkaXRhYmxlJzogJ1xcdUVEMUQnLFxuICAgICAgICAgICAgJ1JldHVyblRvU2Vzc2lvbic6ICdcXHVFRDI0JyxcbiAgICAgICAgICAgICdPcGVuRm9sZGVySG9yaXpvbnRhbCc6ICdcXHVFRDI1JyxcbiAgICAgICAgICAgICdDYWxlbmRhck1pcnJvcmVkJzogJ1xcdUVEMjgnXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlZ2lzdGVySWNvbnMoc3Vic2V0LCBvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhYnJpYy1pY29ucy01LmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy02XFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTYtZWY2ZmQ1OTAud29mZicpIGZvcm1hdCgnd29mZicpXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAnU3dheUxvZ29JbnZlcnNlJzogJ1xcdUVEMjknLFxuICAgICAgICAgICAgJ091dE9mT2ZmaWNlJzogJ1xcdUVEMzQnLFxuICAgICAgICAgICAgJ1Ryb3BoeSc6ICdcXHVFRDNGJyxcbiAgICAgICAgICAgICdSZW9wZW5QYWdlcyc6ICdcXHVFRDUwJyxcbiAgICAgICAgICAgICdFbW9qaVRhYlN5bWJvbHMnOiAnXFx1RUQ1OCcsXG4gICAgICAgICAgICAnQUFETG9nbyc6ICdcXHVFRDY4JyxcbiAgICAgICAgICAgICdBY2Nlc3NMb2dvJzogJ1xcdUVENjknLFxuICAgICAgICAgICAgJ0FkbWluQUxvZ29JbnZlcnNlMzInOiAnXFx1RUQ2QScsXG4gICAgICAgICAgICAnQWRtaW5DTG9nb0ludmVyc2UzMic6ICdcXHVFRDZCJyxcbiAgICAgICAgICAgICdBZG1pbkRMb2dvSW52ZXJzZTMyJzogJ1xcdUVENkMnLFxuICAgICAgICAgICAgJ0FkbWluRUxvZ29JbnZlcnNlMzInOiAnXFx1RUQ2RCcsXG4gICAgICAgICAgICAnQWRtaW5MTG9nb0ludmVyc2UzMic6ICdcXHVFRDZFJyxcbiAgICAgICAgICAgICdBZG1pbk1Mb2dvSW52ZXJzZTMyJzogJ1xcdUVENkYnLFxuICAgICAgICAgICAgJ0FkbWluT0xvZ29JbnZlcnNlMzInOiAnXFx1RUQ3MCcsXG4gICAgICAgICAgICAnQWRtaW5QTG9nb0ludmVyc2UzMic6ICdcXHVFRDcxJyxcbiAgICAgICAgICAgICdBZG1pblNMb2dvSW52ZXJzZTMyJzogJ1xcdUVENzInLFxuICAgICAgICAgICAgJ0FkbWluWUxvZ29JbnZlcnNlMzInOiAnXFx1RUQ3MycsXG4gICAgICAgICAgICAnRGVsdmVMb2dvSW52ZXJzZSc6ICdcXHVFRDc2JyxcbiAgICAgICAgICAgICdFeGNoYW5nZUxvZ29JbnZlcnNlJzogJ1xcdUVENzgnLFxuICAgICAgICAgICAgJ0x5bmNMb2dvJzogJ1xcdUVENzknLFxuICAgICAgICAgICAgJ09mZmljZVZpZGVvTG9nb0ludmVyc2UnOiAnXFx1RUQ3QScsXG4gICAgICAgICAgICAnU29jaWFsTGlzdGVuaW5nTG9nbyc6ICdcXHVFRDdDJyxcbiAgICAgICAgICAgICdWaXNpb0xvZ29JbnZlcnNlJzogJ1xcdUVEN0QnLFxuICAgICAgICAgICAgJ0JhbGxvb25zJzogJ1xcdUVEN0UnLFxuICAgICAgICAgICAgJ0NhdCc6ICdcXHVFRDdGJyxcbiAgICAgICAgICAgICdNYWlsQWxlcnQnOiAnXFx1RUQ4MCcsXG4gICAgICAgICAgICAnTWFpbENoZWNrJzogJ1xcdUVEODEnLFxuICAgICAgICAgICAgJ01haWxMb3dJbXBvcnRhbmNlJzogJ1xcdUVEODInLFxuICAgICAgICAgICAgJ01haWxQYXVzZSc6ICdcXHVFRDgzJyxcbiAgICAgICAgICAgICdNYWlsUmVwZWF0JzogJ1xcdUVEODQnLFxuICAgICAgICAgICAgJ1NlY3VyaXR5R3JvdXAnOiAnXFx1RUQ4NScsXG4gICAgICAgICAgICAnVGFibGUnOiAnXFx1RUQ4NicsXG4gICAgICAgICAgICAnVm9pY2VtYWlsRm9yd2FyZCc6ICdcXHVFRDg3JyxcbiAgICAgICAgICAgICdWb2ljZW1haWxSZXBseSc6ICdcXHVFRDg4JyxcbiAgICAgICAgICAgICdXYWZmbGUnOiAnXFx1RUQ4OScsXG4gICAgICAgICAgICAnUmVtb3ZlRXZlbnQnOiAnXFx1RUQ4QScsXG4gICAgICAgICAgICAnRXZlbnRJbmZvJzogJ1xcdUVEOEInLFxuICAgICAgICAgICAgJ0ZvcndhcmRFdmVudCc6ICdcXHVFRDhDJyxcbiAgICAgICAgICAgICdXaXBlUGhvbmUnOiAnXFx1RUQ4RCcsXG4gICAgICAgICAgICAnQWRkT25saW5lTWVldGluZyc6ICdcXHVFRDhFJyxcbiAgICAgICAgICAgICdKb2luT25saW5lTWVldGluZyc6ICdcXHVFRDhGJyxcbiAgICAgICAgICAgICdSZW1vdmVMaW5rJzogJ1xcdUVEOTAnLFxuICAgICAgICAgICAgJ1Blb3BsZUJsb2NrJzogJ1xcdUVEOTEnLFxuICAgICAgICAgICAgJ1Blb3BsZVJlcGVhdCc6ICdcXHVFRDkyJyxcbiAgICAgICAgICAgICdQZW9wbGVBbGVydCc6ICdcXHVFRDkzJyxcbiAgICAgICAgICAgICdQZW9wbGVQYXVzZSc6ICdcXHVFRDk0JyxcbiAgICAgICAgICAgICdUcmFuc2ZlckNhbGwnOiAnXFx1RUQ5NScsXG4gICAgICAgICAgICAnQWRkUGhvbmUnOiAnXFx1RUQ5NicsXG4gICAgICAgICAgICAnVW5rbm93bkNhbGwnOiAnXFx1RUQ5NycsXG4gICAgICAgICAgICAnTm90ZVJlcGx5JzogJ1xcdUVEOTgnLFxuICAgICAgICAgICAgJ05vdGVGb3J3YXJkJzogJ1xcdUVEOTknLFxuICAgICAgICAgICAgJ05vdGVQaW5uZWQnOiAnXFx1RUQ5QScsXG4gICAgICAgICAgICAnUmVtb3ZlT2NjdXJyZW5jZSc6ICdcXHVFRDlCJyxcbiAgICAgICAgICAgICdUaW1lbGluZSc6ICdcXHVFRDlDJyxcbiAgICAgICAgICAgICdFZGl0Tm90ZSc6ICdcXHVFRDlEJyxcbiAgICAgICAgICAgICdDaXJjbGVIYWxmRnVsbCc6ICdcXHVFRDlFJyxcbiAgICAgICAgICAgICdSb29tJzogJ1xcdUVEOUYnLFxuICAgICAgICAgICAgJ1Vuc3Vic2NyaWJlJzogJ1xcdUVEQTAnLFxuICAgICAgICAgICAgJ1N1YnNjcmliZSc6ICdcXHVFREExJyxcbiAgICAgICAgICAgICdIYXJkRHJpdmUnOiAnXFx1RURBMicsXG4gICAgICAgICAgICAnUmVjdXJyaW5nVGFzayc6ICdcXHVFREIyJyxcbiAgICAgICAgICAgICdUYXNrTWFuYWdlcic6ICdcXHVFREI3JyxcbiAgICAgICAgICAgICdUYXNrTWFuYWdlck1pcnJvcmVkJzogJ1xcdUVEQjgnLFxuICAgICAgICAgICAgJ0NvbWJpbmUnOiAnXFx1RURCQicsXG4gICAgICAgICAgICAnU3BsaXQnOiAnXFx1RURCQycsXG4gICAgICAgICAgICAnRG91YmxlQ2hldnJvblVwJzogJ1xcdUVEQkQnLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25MZWZ0JzogJ1xcdUVEQkUnLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25SaWdodCc6ICdcXHVFREJGJyxcbiAgICAgICAgICAgICdUZXh0Qm94JzogJ1xcdUVEQzInLFxuICAgICAgICAgICAgJ1RleHRGaWVsZCc6ICdcXHVFREMzJyxcbiAgICAgICAgICAgICdOdW1iZXJGaWVsZCc6ICdcXHVFREM0JyxcbiAgICAgICAgICAgICdEcm9wZG93bic6ICdcXHVFREM1JyxcbiAgICAgICAgICAgICdQZW5Xb3Jrc3BhY2UnOiAnXFx1RURDNicsXG4gICAgICAgICAgICAnQm9va2luZ3NMb2dvJzogJ1xcdUVEQzcnLFxuICAgICAgICAgICAgJ0NsYXNzTm90ZWJvb2tMb2dvSW52ZXJzZSc6ICdcXHVFREM4JyxcbiAgICAgICAgICAgICdEZWx2ZUFuYWx5dGljc0xvZ28nOiAnXFx1RURDQScsXG4gICAgICAgICAgICAnRG9jc0xvZ29JbnZlcnNlJzogJ1xcdUVEQ0InLFxuICAgICAgICAgICAgJ0R5bmFtaWNzMzY1TG9nbyc6ICdcXHVFRENDJyxcbiAgICAgICAgICAgICdEeW5hbWljU01CTG9nbyc6ICdcXHVFRENEJyxcbiAgICAgICAgICAgICdPZmZpY2VBc3Npc3RhbnRMb2dvJzogJ1xcdUVEQ0UnLFxuICAgICAgICAgICAgJ09mZmljZVN0b3JlTG9nbyc6ICdcXHVFRENGJyxcbiAgICAgICAgICAgICdPbmVOb3RlRWR1TG9nb0ludmVyc2UnOiAnXFx1RUREMCcsXG4gICAgICAgICAgICAnUGxhbm5lckxvZ28nOiAnXFx1RUREMScsXG4gICAgICAgICAgICAnUG93ZXJBcHBzJzogJ1xcdUVERDInLFxuICAgICAgICAgICAgJ1N1aXRjYXNlJzogJ1xcdUVERDMnLFxuICAgICAgICAgICAgJ1Byb2plY3RMb2dvSW52ZXJzZSc6ICdcXHVFREQ0JyxcbiAgICAgICAgICAgICdDYXJldExlZnQ4JzogJ1xcdUVERDUnLFxuICAgICAgICAgICAgJ0NhcmV0UmlnaHQ4JzogJ1xcdUVERDYnLFxuICAgICAgICAgICAgJ0NhcmV0VXA4JzogJ1xcdUVERDcnLFxuICAgICAgICAgICAgJ0NhcmV0RG93bjgnOiAnXFx1RUREOCcsXG4gICAgICAgICAgICAnQ2FyZXRMZWZ0U29saWQ4JzogJ1xcdUVERDknLFxuICAgICAgICAgICAgJ0NhcmV0UmlnaHRTb2xpZDgnOiAnXFx1RUREQScsXG4gICAgICAgICAgICAnQ2FyZXRVcFNvbGlkOCc6ICdcXHVFRERCJyxcbiAgICAgICAgICAgICdDYXJldERvd25Tb2xpZDgnOiAnXFx1RUREQycsXG4gICAgICAgICAgICAnQ2xlYXJGb3JtYXR0aW5nJzogJ1xcdUVEREQnLFxuICAgICAgICAgICAgJ1N1cGVyc2NyaXB0JzogJ1xcdUVEREUnLFxuICAgICAgICAgICAgJ1N1YnNjcmlwdCc6ICdcXHVFRERGJyxcbiAgICAgICAgICAgICdTdHJpa2V0aHJvdWdoJzogJ1xcdUVERTAnLFxuICAgICAgICAgICAgJ0V4cG9ydCc6ICdcXHVFREUxJyxcbiAgICAgICAgICAgICdFeHBvcnRNaXJyb3JlZCc6ICdcXHVFREUyJ1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMtNi5qcy5tYXAiLCIvLyBZb3VyIHVzZSBvZiB0aGUgY29udGVudCBpbiB0aGUgZmlsZXMgcmVmZXJlbmNlZCBoZXJlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGF0IGh0dHBzOi8vYWthLm1zL2ZsdWVudHVpLWFzc2V0cy1saWNlbnNlXG5pbXBvcnQgeyByZWdpc3Rlckljb25zIH0gZnJvbSAnQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcyc7XG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUljb25zKGJhc2VVcmwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYmFzZVVybCA9PT0gdm9pZCAwKSB7IGJhc2VVcmwgPSAnJzsgfVxuICAgIHZhciBzdWJzZXQgPSB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBNb3pPc3hGb250U21vb3RoaW5nOiAnZ3JheXNjYWxlJyxcbiAgICAgICAgICAgIFdlYmtpdEZvbnRTbW9vdGhpbmc6ICdhbnRpYWxpYXNlZCcsXG4gICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgICAgICAgICBzcGVhazogJ25vbmUnXG4gICAgICAgIH0sXG4gICAgICAgIGZvbnRGYWNlOiB7XG4gICAgICAgICAgICBmb250RmFtaWx5OiBcIlxcXCJGYWJyaWNNREwySWNvbnMtN1xcXCJcIixcbiAgICAgICAgICAgIHNyYzogXCJ1cmwoJ1wiLmNvbmNhdChiYXNlVXJsLCBcImZhYnJpYy1pY29ucy03LTJiOTdiYjk5LndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ1NpbmdsZUJvb2ttYXJrJzogJ1xcdUVERkYnLFxuICAgICAgICAgICAgJ1NpbmdsZUJvb2ttYXJrU29saWQnOiAnXFx1RUUwMCcsXG4gICAgICAgICAgICAnRG91YmxlQ2hldnJvbkRvd24nOiAnXFx1RUUwNCcsXG4gICAgICAgICAgICAnRm9sbG93VXNlcic6ICdcXHVFRTA1JyxcbiAgICAgICAgICAgICdSZXBseUFsbCc6ICdcXHVFRTBBJyxcbiAgICAgICAgICAgICdXb3JrZm9yY2VNYW5hZ2VtZW50JzogJ1xcdUVFMEYnLFxuICAgICAgICAgICAgJ1JlY3J1aXRtZW50TWFuYWdlbWVudCc6ICdcXHVFRTEyJyxcbiAgICAgICAgICAgICdRdWVzdGlvbm5haXJlJzogJ1xcdUVFMTknLFxuICAgICAgICAgICAgJ01hbmFnZXJTZWxmU2VydmljZSc6ICdcXHVFRTIzJyxcbiAgICAgICAgICAgICdQcm9kdWN0aW9uRmxvb3JNYW5hZ2VtZW50JzogJ1xcdUVFMjknLFxuICAgICAgICAgICAgJ1Byb2R1Y3RSZWxlYXNlJzogJ1xcdUVFMkUnLFxuICAgICAgICAgICAgJ1Byb2R1Y3RWYXJpYW50JzogJ1xcdUVFMzAnLFxuICAgICAgICAgICAgJ1JlcGx5TWlycm9yZWQnOiAnXFx1RUUzNScsXG4gICAgICAgICAgICAnUmVwbHlBbGxNaXJyb3JlZCc6ICdcXHVFRTM2JyxcbiAgICAgICAgICAgICdNZWRhbCc6ICdcXHVFRTM4JyxcbiAgICAgICAgICAgICdBZGRHcm91cCc6ICdcXHVFRTNEJyxcbiAgICAgICAgICAgICdRdWVzdGlvbm5haXJlTWlycm9yZWQnOiAnXFx1RUU0QicsXG4gICAgICAgICAgICAnQ2xvdWRJbXBvcnRFeHBvcnQnOiAnXFx1RUU1NScsXG4gICAgICAgICAgICAnVGVtcG9yYXJ5VXNlcic6ICdcXHVFRTU4JyxcbiAgICAgICAgICAgICdDYXJldFNvbGlkMTYnOiAnXFx1RUU2MicsXG4gICAgICAgICAgICAnR3JvdXBlZERlc2NlbmRpbmcnOiAnXFx1RUU2NicsXG4gICAgICAgICAgICAnR3JvdXBlZEFzY2VuZGluZyc6ICdcXHVFRTY3JyxcbiAgICAgICAgICAgICdBd2F5U3RhdHVzJzogJ1xcdUVFNkEnLFxuICAgICAgICAgICAgJ015TW92aWVzVFYnOiAnXFx1RUU2QycsXG4gICAgICAgICAgICAnR2VuZXJpY1NjYW4nOiAnXFx1RUU2RicsXG4gICAgICAgICAgICAnQXVzdHJhbGlhblJ1bGVzJzogJ1xcdUVFNzAnLFxuICAgICAgICAgICAgJ1dpZmlFdGhlcm5ldCc6ICdcXHVFRTc3JyxcbiAgICAgICAgICAgICdUcmFja2Vyc01pcnJvcmVkJzogJ1xcdUVFOTInLFxuICAgICAgICAgICAgJ0RhdGVUaW1lTWlycm9yZWQnOiAnXFx1RUU5MycsXG4gICAgICAgICAgICAnU3RvcFNvbGlkJzogJ1xcdUVFOTUnLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25VcDEyJzogJ1xcdUVFOTYnLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25Eb3duMTInOiAnXFx1RUU5NycsXG4gICAgICAgICAgICAnRG91YmxlQ2hldnJvbkxlZnQxMic6ICdcXHVFRTk4JyxcbiAgICAgICAgICAgICdEb3VibGVDaGV2cm9uUmlnaHQxMic6ICdcXHVFRTk5JyxcbiAgICAgICAgICAgICdDYWxlbmRhckFnZW5kYSc6ICdcXHVFRTlBJyxcbiAgICAgICAgICAgICdDb25uZWN0VmlydHVhbE1hY2hpbmUnOiAnXFx1RUU5RCcsXG4gICAgICAgICAgICAnQWRkRXZlbnQnOiAnXFx1RUVCNScsXG4gICAgICAgICAgICAnQXNzZXRMaWJyYXJ5JzogJ1xcdUVFQjYnLFxuICAgICAgICAgICAgJ0RhdGFDb25uZWN0aW9uTGlicmFyeSc6ICdcXHVFRUI3JyxcbiAgICAgICAgICAgICdEb2NMaWJyYXJ5JzogJ1xcdUVFQjgnLFxuICAgICAgICAgICAgJ0Zvcm1MaWJyYXJ5JzogJ1xcdUVFQjknLFxuICAgICAgICAgICAgJ0Zvcm1MaWJyYXJ5TWlycm9yZWQnOiAnXFx1RUVCQScsXG4gICAgICAgICAgICAnUmVwb3J0TGlicmFyeSc6ICdcXHVFRUJCJyxcbiAgICAgICAgICAgICdSZXBvcnRMaWJyYXJ5TWlycm9yZWQnOiAnXFx1RUVCQycsXG4gICAgICAgICAgICAnQ29udGFjdENhcmQnOiAnXFx1RUVCRCcsXG4gICAgICAgICAgICAnQ3VzdG9tTGlzdCc6ICdcXHVFRUJFJyxcbiAgICAgICAgICAgICdDdXN0b21MaXN0TWlycm9yZWQnOiAnXFx1RUVCRicsXG4gICAgICAgICAgICAnSXNzdWVUcmFja2luZyc6ICdcXHVFRUMwJyxcbiAgICAgICAgICAgICdJc3N1ZVRyYWNraW5nTWlycm9yZWQnOiAnXFx1RUVDMScsXG4gICAgICAgICAgICAnUGljdHVyZUxpYnJhcnknOiAnXFx1RUVDMicsXG4gICAgICAgICAgICAnT2ZmaWNlQWRkaW5zTG9nbyc6ICdcXHVFRUM3JyxcbiAgICAgICAgICAgICdPZmZsaW5lT25lRHJpdmVQYXJhY2h1dGUnOiAnXFx1RUVDOCcsXG4gICAgICAgICAgICAnT2ZmbGluZU9uZURyaXZlUGFyYWNodXRlRGlzYWJsZWQnOiAnXFx1RUVDOScsXG4gICAgICAgICAgICAnVHJpYW5nbGVTb2xpZFVwMTInOiAnXFx1RUVDQycsXG4gICAgICAgICAgICAnVHJpYW5nbGVTb2xpZERvd24xMic6ICdcXHVFRUNEJyxcbiAgICAgICAgICAgICdUcmlhbmdsZVNvbGlkTGVmdDEyJzogJ1xcdUVFQ0UnLFxuICAgICAgICAgICAgJ1RyaWFuZ2xlU29saWRSaWdodDEyJzogJ1xcdUVFQ0YnLFxuICAgICAgICAgICAgJ1RyaWFuZ2xlVXAxMic6ICdcXHVFRUQwJyxcbiAgICAgICAgICAgICdUcmlhbmdsZURvd24xMic6ICdcXHVFRUQxJyxcbiAgICAgICAgICAgICdUcmlhbmdsZUxlZnQxMic6ICdcXHVFRUQyJyxcbiAgICAgICAgICAgICdUcmlhbmdsZVJpZ2h0MTInOiAnXFx1RUVEMycsXG4gICAgICAgICAgICAnQXJyb3dVcFJpZ2h0OCc6ICdcXHVFRUQ0JyxcbiAgICAgICAgICAgICdBcnJvd0Rvd25SaWdodDgnOiAnXFx1RUVENScsXG4gICAgICAgICAgICAnRG9jdW1lbnRTZXQnOiAnXFx1RUVENicsXG4gICAgICAgICAgICAnR29Ub0Rhc2hib2FyZCc6ICdcXHVFRUVEJyxcbiAgICAgICAgICAgICdEZWx2ZUFuYWx5dGljcyc6ICdcXHVFRUVFJyxcbiAgICAgICAgICAgICdBcnJvd1VwUmlnaHRNaXJyb3JlZDgnOiAnXFx1RUVFRicsXG4gICAgICAgICAgICAnQXJyb3dEb3duUmlnaHRNaXJyb3JlZDgnOiAnXFx1RUVGMCcsXG4gICAgICAgICAgICAnQ29tcGFueURpcmVjdG9yeSc6ICdcXHVFRjBEJyxcbiAgICAgICAgICAgICdPcGVuRW5yb2xsbWVudCc6ICdcXHVFRjFDJyxcbiAgICAgICAgICAgICdDb21wYW55RGlyZWN0b3J5TWlycm9yZWQnOiAnXFx1RUYyQicsXG4gICAgICAgICAgICAnT25lRHJpdmVBZGQnOiAnXFx1RUYzMicsXG4gICAgICAgICAgICAnUHJvZmlsZVNlYXJjaCc6ICdcXHVFRjM1JyxcbiAgICAgICAgICAgICdIZWFkZXIyJzogJ1xcdUVGMzYnLFxuICAgICAgICAgICAgJ0hlYWRlcjMnOiAnXFx1RUYzNycsXG4gICAgICAgICAgICAnSGVhZGVyNCc6ICdcXHVFRjM4JyxcbiAgICAgICAgICAgICdSaW5nZXJTb2xpZCc6ICdcXHVFRjNBJyxcbiAgICAgICAgICAgICdFeWVkcm9wcGVyJzogJ1xcdUVGM0MnLFxuICAgICAgICAgICAgJ01hcmtldERvd24nOiAnXFx1RUY0MicsXG4gICAgICAgICAgICAnQ2FsZW5kYXJXb3JrV2Vlayc6ICdcXHVFRjUxJyxcbiAgICAgICAgICAgICdTaWRlUGFuZWwnOiAnXFx1RUY1MicsXG4gICAgICAgICAgICAnR2xvYmVGYXZvcml0ZSc6ICdcXHVFRjUzJyxcbiAgICAgICAgICAgICdDYXJldFRvcExlZnRTb2xpZDgnOiAnXFx1RUY1NCcsXG4gICAgICAgICAgICAnQ2FyZXRUb3BSaWdodFNvbGlkOCc6ICdcXHVFRjU1JyxcbiAgICAgICAgICAgICdWaWV3QWxsMic6ICdcXHVFRjU2JyxcbiAgICAgICAgICAgICdEb2N1bWVudFJlcGx5JzogJ1xcdUVGNTcnLFxuICAgICAgICAgICAgJ1BsYXllclNldHRpbmdzJzogJ1xcdUVGNTgnLFxuICAgICAgICAgICAgJ1JlY2VpcHRGb3J3YXJkJzogJ1xcdUVGNTknLFxuICAgICAgICAgICAgJ1JlY2VpcHRSZXBseSc6ICdcXHVFRjVBJyxcbiAgICAgICAgICAgICdSZWNlaXB0Q2hlY2snOiAnXFx1RUY1QicsXG4gICAgICAgICAgICAnRmF4JzogJ1xcdUVGNUMnLFxuICAgICAgICAgICAgJ1JlY3VycmluZ0V2ZW50JzogJ1xcdUVGNUQnLFxuICAgICAgICAgICAgJ1JlcGx5QWx0JzogJ1xcdUVGNUUnLFxuICAgICAgICAgICAgJ1JlcGx5QWxsQWx0JzogJ1xcdUVGNUYnLFxuICAgICAgICAgICAgJ0VkaXRTdHlsZSc6ICdcXHVFRjYwJyxcbiAgICAgICAgICAgICdFZGl0TWFpbCc6ICdcXHVFRjYxJyxcbiAgICAgICAgICAgICdMaWZlc2F2ZXInOiAnXFx1RUY2MicsXG4gICAgICAgICAgICAnTGlmZXNhdmVyTG9jayc6ICdcXHVFRjYzJyxcbiAgICAgICAgICAgICdJbmJveENoZWNrJzogJ1xcdUVGNjQnLFxuICAgICAgICAgICAgJ0ZvbGRlclNlYXJjaCc6ICdcXHVFRjY1J1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMtNy5qcy5tYXAiLCIvLyBZb3VyIHVzZSBvZiB0aGUgY29udGVudCBpbiB0aGUgZmlsZXMgcmVmZXJlbmNlZCBoZXJlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGF0IGh0dHBzOi8vYWthLm1zL2ZsdWVudHVpLWFzc2V0cy1saWNlbnNlXG5pbXBvcnQgeyByZWdpc3Rlckljb25zIH0gZnJvbSAnQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcyc7XG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUljb25zKGJhc2VVcmwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYmFzZVVybCA9PT0gdm9pZCAwKSB7IGJhc2VVcmwgPSAnJzsgfVxuICAgIHZhciBzdWJzZXQgPSB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBNb3pPc3hGb250U21vb3RoaW5nOiAnZ3JheXNjYWxlJyxcbiAgICAgICAgICAgIFdlYmtpdEZvbnRTbW9vdGhpbmc6ICdhbnRpYWxpYXNlZCcsXG4gICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgICAgICAgICBzcGVhazogJ25vbmUnXG4gICAgICAgIH0sXG4gICAgICAgIGZvbnRGYWNlOiB7XG4gICAgICAgICAgICBmb250RmFtaWx5OiBcIlxcXCJGYWJyaWNNREwySWNvbnMtOFxcXCJcIixcbiAgICAgICAgICAgIHNyYzogXCJ1cmwoJ1wiLmNvbmNhdChiYXNlVXJsLCBcImZhYnJpYy1pY29ucy04LTZmZGYxNTI4LndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ0NvbGxhcHNlTWVudSc6ICdcXHVFRjY2JyxcbiAgICAgICAgICAgICdFeHBhbmRNZW51JzogJ1xcdUVGNjcnLFxuICAgICAgICAgICAgJ0JvYXJkcyc6ICdcXHVFRjY4JyxcbiAgICAgICAgICAgICdTdW5BZGQnOiAnXFx1RUY2OScsXG4gICAgICAgICAgICAnU3VuUXVlc3Rpb25NYXJrJzogJ1xcdUVGNkEnLFxuICAgICAgICAgICAgJ0xhbmRzY2FwZU9yaWVudGF0aW9uJzogJ1xcdUVGNkInLFxuICAgICAgICAgICAgJ0RvY3VtZW50U2VhcmNoJzogJ1xcdUVGNkMnLFxuICAgICAgICAgICAgJ1B1YmxpY0NhbGVuZGFyJzogJ1xcdUVGNkQnLFxuICAgICAgICAgICAgJ1B1YmxpY0NvbnRhY3RDYXJkJzogJ1xcdUVGNkUnLFxuICAgICAgICAgICAgJ1B1YmxpY0VtYWlsJzogJ1xcdUVGNkYnLFxuICAgICAgICAgICAgJ1B1YmxpY0ZvbGRlcic6ICdcXHVFRjcwJyxcbiAgICAgICAgICAgICdXb3JkRG9jdW1lbnQnOiAnXFx1RUY3MScsXG4gICAgICAgICAgICAnUG93ZXJQb2ludERvY3VtZW50JzogJ1xcdUVGNzInLFxuICAgICAgICAgICAgJ0V4Y2VsRG9jdW1lbnQnOiAnXFx1RUY3MycsXG4gICAgICAgICAgICAnR3JvdXBlZExpc3QnOiAnXFx1RUY3NCcsXG4gICAgICAgICAgICAnQ2xhc3Nyb29tTG9nbyc6ICdcXHVFRjc1JyxcbiAgICAgICAgICAgICdTZWN0aW9ucyc6ICdcXHVFRjc2JyxcbiAgICAgICAgICAgICdFZGl0UGhvdG8nOiAnXFx1RUY3NycsXG4gICAgICAgICAgICAnU3RhcmJ1cnN0JzogJ1xcdUVGNzgnLFxuICAgICAgICAgICAgJ1NoYXJlaU9TJzogJ1xcdUVGNzknLFxuICAgICAgICAgICAgJ0FpclRpY2tldHMnOiAnXFx1RUY3QScsXG4gICAgICAgICAgICAnUGVuY2lsUmVwbHknOiAnXFx1RUY3QicsXG4gICAgICAgICAgICAnVGlsZXMyJzogJ1xcdUVGN0MnLFxuICAgICAgICAgICAgJ1NreXBlQ2lyY2xlQ2hlY2snOiAnXFx1RUY3RCcsXG4gICAgICAgICAgICAnU2t5cGVDaXJjbGVDbG9jayc6ICdcXHVFRjdFJyxcbiAgICAgICAgICAgICdTa3lwZUNpcmNsZU1pbnVzJzogJ1xcdUVGN0YnLFxuICAgICAgICAgICAgJ1NreXBlTWVzc2FnZSc6ICdcXHVFRjgzJyxcbiAgICAgICAgICAgICdDbG9zZWRDYXB0aW9uJzogJ1xcdUVGODQnLFxuICAgICAgICAgICAgJ0FUUExvZ28nOiAnXFx1RUY4NScsXG4gICAgICAgICAgICAnT2ZmaWNlRm9ybXNMb2dvSW52ZXJzZSc6ICdcXHVFRjg2JyxcbiAgICAgICAgICAgICdSZWN5Y2xlQmluJzogJ1xcdUVGODcnLFxuICAgICAgICAgICAgJ0VtcHR5UmVjeWNsZUJpbic6ICdcXHVFRjg4JyxcbiAgICAgICAgICAgICdIaWRlMic6ICdcXHVFRjg5JyxcbiAgICAgICAgICAgICdCcmVhZGNydW1iJzogJ1xcdUVGOEMnLFxuICAgICAgICAgICAgJ0JpcnRoZGF5Q2FrZSc6ICdcXHVFRjhEJyxcbiAgICAgICAgICAgICdUaW1lRW50cnknOiAnXFx1RUY5NScsXG4gICAgICAgICAgICAnQ1JNUHJvY2Vzc2VzJzogJ1xcdUVGQjEnLFxuICAgICAgICAgICAgJ1BhZ2VFZGl0JzogJ1xcdUVGQjYnLFxuICAgICAgICAgICAgJ1BhZ2VBcnJvd1JpZ2h0JzogJ1xcdUVGQjgnLFxuICAgICAgICAgICAgJ1BhZ2VSZW1vdmUnOiAnXFx1RUZCQScsXG4gICAgICAgICAgICAnRGF0YWJhc2UnOiAnXFx1RUZDNycsXG4gICAgICAgICAgICAnRGF0YU1hbmFnZW1lbnRTZXR0aW5ncyc6ICdcXHVFRkM4JyxcbiAgICAgICAgICAgICdDUk1TZXJ2aWNlcyc6ICdcXHVFRkQyJyxcbiAgICAgICAgICAgICdFZGl0Q29udGFjdCc6ICdcXHVFRkQzJyxcbiAgICAgICAgICAgICdDb25uZWN0Q29udGFjdHMnOiAnXFx1RUZENCcsXG4gICAgICAgICAgICAnQXBwSWNvbkRlZmF1bHRBZGQnOiAnXFx1RUZEQScsXG4gICAgICAgICAgICAnQXBwSWNvbkRlZmF1bHRMaXN0JzogJ1xcdUVGREUnLFxuICAgICAgICAgICAgJ0FjdGl2YXRlT3JkZXJzJzogJ1xcdUVGRTAnLFxuICAgICAgICAgICAgJ0RlYWN0aXZhdGVPcmRlcnMnOiAnXFx1RUZFMScsXG4gICAgICAgICAgICAnUHJvZHVjdENhdGFsb2cnOiAnXFx1RUZFOCcsXG4gICAgICAgICAgICAnU2NhdHRlckNoYXJ0JzogJ1xcdUVGRUInLFxuICAgICAgICAgICAgJ0FjY291bnRBY3Rpdml0eSc6ICdcXHVFRkY0JyxcbiAgICAgICAgICAgICdEb2N1bWVudE1hbmFnZW1lbnQnOiAnXFx1RUZGQycsXG4gICAgICAgICAgICAnQ1JNUmVwb3J0JzogJ1xcdUVGRkUnLFxuICAgICAgICAgICAgJ0tub3dsZWRnZUFydGljbGUnOiAnXFx1RjAwMCcsXG4gICAgICAgICAgICAnUmVsYXRpb25zaGlwJzogJ1xcdUYwMDMnLFxuICAgICAgICAgICAgJ0hvbWVWZXJpZnknOiAnXFx1RjAwRScsXG4gICAgICAgICAgICAnWmlwRm9sZGVyJzogJ1xcdUYwMTInLFxuICAgICAgICAgICAgJ1N1cnZleVF1ZXN0aW9ucyc6ICdcXHVGMDFCJyxcbiAgICAgICAgICAgICdUZXh0RG9jdW1lbnQnOiAnXFx1RjAyOScsXG4gICAgICAgICAgICAnVGV4dERvY3VtZW50U2hhcmVkJzogJ1xcdUYwMkInLFxuICAgICAgICAgICAgJ1BhZ2VDaGVja2VkT3V0JzogJ1xcdUYwMkMnLFxuICAgICAgICAgICAgJ1BhZ2VTaGFyZWQnOiAnXFx1RjAyRCcsXG4gICAgICAgICAgICAnU2F2ZUFuZENsb3NlJzogJ1xcdUYwMzgnLFxuICAgICAgICAgICAgJ1NjcmlwdCc6ICdcXHVGMDNBJyxcbiAgICAgICAgICAgICdBcmNoaXZlJzogJ1xcdUYwM0YnLFxuICAgICAgICAgICAgJ0FjdGl2aXR5RmVlZCc6ICdcXHVGMDU2JyxcbiAgICAgICAgICAgICdDb21wYXJlJzogJ1xcdUYwNTcnLFxuICAgICAgICAgICAgJ0V2ZW50RGF0ZSc6ICdcXHVGMDU5JyxcbiAgICAgICAgICAgICdBcnJvd1VwUmlnaHQnOiAnXFx1RjA2OScsXG4gICAgICAgICAgICAnQ2FyZXRSaWdodCc6ICdcXHVGMDZCJyxcbiAgICAgICAgICAgICdTZXRBY3Rpb24nOiAnXFx1RjA3MScsXG4gICAgICAgICAgICAnQ2hhdEJvdCc6ICdcXHVGMDhCJyxcbiAgICAgICAgICAgICdDYXJldFNvbGlkTGVmdCc6ICdcXHVGMDhEJyxcbiAgICAgICAgICAgICdDYXJldFNvbGlkRG93bic6ICdcXHVGMDhFJyxcbiAgICAgICAgICAgICdDYXJldFNvbGlkUmlnaHQnOiAnXFx1RjA4RicsXG4gICAgICAgICAgICAnQ2FyZXRTb2xpZFVwJzogJ1xcdUYwOTAnLFxuICAgICAgICAgICAgJ1Bvd2VyQXBwc0xvZ28nOiAnXFx1RjA5MScsXG4gICAgICAgICAgICAnUG93ZXJBcHBzMkxvZ28nOiAnXFx1RjA5MicsXG4gICAgICAgICAgICAnU2VhcmNoSXNzdWUnOiAnXFx1RjA5QScsXG4gICAgICAgICAgICAnU2VhcmNoSXNzdWVNaXJyb3JlZCc6ICdcXHVGMDlCJyxcbiAgICAgICAgICAgICdGYWJyaWNBc3NldExpYnJhcnknOiAnXFx1RjA5QycsXG4gICAgICAgICAgICAnRmFicmljRGF0YUNvbm5lY3Rpb25MaWJyYXJ5JzogJ1xcdUYwOUQnLFxuICAgICAgICAgICAgJ0ZhYnJpY0RvY0xpYnJhcnknOiAnXFx1RjA5RScsXG4gICAgICAgICAgICAnRmFicmljRm9ybUxpYnJhcnknOiAnXFx1RjA5RicsXG4gICAgICAgICAgICAnRmFicmljRm9ybUxpYnJhcnlNaXJyb3JlZCc6ICdcXHVGMEEwJyxcbiAgICAgICAgICAgICdGYWJyaWNSZXBvcnRMaWJyYXJ5JzogJ1xcdUYwQTEnLFxuICAgICAgICAgICAgJ0ZhYnJpY1JlcG9ydExpYnJhcnlNaXJyb3JlZCc6ICdcXHVGMEEyJyxcbiAgICAgICAgICAgICdGYWJyaWNQdWJsaWNGb2xkZXInOiAnXFx1RjBBMycsXG4gICAgICAgICAgICAnRmFicmljRm9sZGVyU2VhcmNoJzogJ1xcdUYwQTQnLFxuICAgICAgICAgICAgJ0ZhYnJpY01vdmV0b0ZvbGRlcic6ICdcXHVGMEE1JyxcbiAgICAgICAgICAgICdGYWJyaWNVbnN5bmNGb2xkZXInOiAnXFx1RjBBNicsXG4gICAgICAgICAgICAnRmFicmljU3luY0ZvbGRlcic6ICdcXHVGMEE3JyxcbiAgICAgICAgICAgICdGYWJyaWNPcGVuRm9sZGVySG9yaXpvbnRhbCc6ICdcXHVGMEE4JyxcbiAgICAgICAgICAgICdGYWJyaWNGb2xkZXInOiAnXFx1RjBBOScsXG4gICAgICAgICAgICAnRmFicmljRm9sZGVyRmlsbCc6ICdcXHVGMEFBJyxcbiAgICAgICAgICAgICdGYWJyaWNOZXdGb2xkZXInOiAnXFx1RjBBQicsXG4gICAgICAgICAgICAnRmFicmljUGljdHVyZUxpYnJhcnknOiAnXFx1RjBBQycsXG4gICAgICAgICAgICAnUGhvdG9WaWRlb01lZGlhJzogJ1xcdUYwQjEnLFxuICAgICAgICAgICAgJ0FkZEZhdm9yaXRlJzogJ1xcdUYwQzgnXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlZ2lzdGVySWNvbnMoc3Vic2V0LCBvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhYnJpYy1pY29ucy04LmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy05XFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTktYzYxNjJiNDIud29mZicpIGZvcm1hdCgnd29mZicpXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAnQWRkRmF2b3JpdGVGaWxsJzogJ1xcdUYwQzknLFxuICAgICAgICAgICAgJ0J1ZmZlclRpbWVCZWZvcmUnOiAnXFx1RjBDRicsXG4gICAgICAgICAgICAnQnVmZmVyVGltZUFmdGVyJzogJ1xcdUYwRDAnLFxuICAgICAgICAgICAgJ0J1ZmZlclRpbWVCb3RoJzogJ1xcdUYwRDEnLFxuICAgICAgICAgICAgJ1B1Ymxpc2hDb250ZW50JzogJ1xcdUYwRDQnLFxuICAgICAgICAgICAgJ0NsaXBib2FyZExpc3QnOiAnXFx1RjBFMycsXG4gICAgICAgICAgICAnQ2xpcGJvYXJkTGlzdE1pcnJvcmVkJzogJ1xcdUYwRTQnLFxuICAgICAgICAgICAgJ0Nhbm5lZENoYXQnOiAnXFx1RjBGMicsXG4gICAgICAgICAgICAnU2t5cGVGb3JCdXNpbmVzc0xvZ28nOiAnXFx1RjBGQycsXG4gICAgICAgICAgICAnVGFiQ2VudGVyJzogJ1xcdUYxMDAnLFxuICAgICAgICAgICAgJ1BhZ2VDaGVja2VkaW4nOiAnXFx1RjEwNCcsXG4gICAgICAgICAgICAnUGFnZUxpc3QnOiAnXFx1RjEwNicsXG4gICAgICAgICAgICAnUmVhZE91dExvdWQnOiAnXFx1RjExMicsXG4gICAgICAgICAgICAnQ2FyZXRCb3R0b21MZWZ0U29saWQ4JzogJ1xcdUYxMjEnLFxuICAgICAgICAgICAgJ0NhcmV0Qm90dG9tUmlnaHRTb2xpZDgnOiAnXFx1RjEyMicsXG4gICAgICAgICAgICAnRm9sZGVySG9yaXpvbnRhbCc6ICdcXHVGMTJCJyxcbiAgICAgICAgICAgICdNaWNyb3NvZnRTdGFmZmh1YkxvZ28nOiAnXFx1RjEzMCcsXG4gICAgICAgICAgICAnR2lmdGJveE9wZW4nOiAnXFx1RjEzMycsXG4gICAgICAgICAgICAnU3RhdHVzQ2lyY2xlT3V0ZXInOiAnXFx1RjEzNicsXG4gICAgICAgICAgICAnU3RhdHVzQ2lyY2xlSW5uZXInOiAnXFx1RjEzNycsXG4gICAgICAgICAgICAnU3RhdHVzQ2lyY2xlUmluZyc6ICdcXHVGMTM4JyxcbiAgICAgICAgICAgICdTdGF0dXNUcmlhbmdsZU91dGVyJzogJ1xcdUYxMzknLFxuICAgICAgICAgICAgJ1N0YXR1c1RyaWFuZ2xlSW5uZXInOiAnXFx1RjEzQScsXG4gICAgICAgICAgICAnU3RhdHVzVHJpYW5nbGVFeGNsYW1hdGlvbic6ICdcXHVGMTNCJyxcbiAgICAgICAgICAgICdTdGF0dXNDaXJjbGVFeGNsYW1hdGlvbic6ICdcXHVGMTNDJyxcbiAgICAgICAgICAgICdTdGF0dXNDaXJjbGVFcnJvclgnOiAnXFx1RjEzRCcsXG4gICAgICAgICAgICAnU3RhdHVzQ2lyY2xlSW5mbyc6ICdcXHVGMTNGJyxcbiAgICAgICAgICAgICdTdGF0dXNDaXJjbGVCbG9jayc6ICdcXHVGMTQwJyxcbiAgICAgICAgICAgICdTdGF0dXNDaXJjbGVCbG9jazInOiAnXFx1RjE0MScsXG4gICAgICAgICAgICAnU3RhdHVzQ2lyY2xlUXVlc3Rpb25NYXJrJzogJ1xcdUYxNDInLFxuICAgICAgICAgICAgJ1N0YXR1c0NpcmNsZVN5bmMnOiAnXFx1RjE0MycsXG4gICAgICAgICAgICAnVG9sbCc6ICdcXHVGMTYwJyxcbiAgICAgICAgICAgICdFeHBsb3JlQ29udGVudFNpbmdsZSc6ICdcXHVGMTY0JyxcbiAgICAgICAgICAgICdDb2xsYXBzZUNvbnRlbnQnOiAnXFx1RjE2NScsXG4gICAgICAgICAgICAnQ29sbGFwc2VDb250ZW50U2luZ2xlJzogJ1xcdUYxNjYnLFxuICAgICAgICAgICAgJ0luZm9Tb2xpZCc6ICdcXHVGMTY3JyxcbiAgICAgICAgICAgICdHcm91cExpc3QnOiAnXFx1RjE2OCcsXG4gICAgICAgICAgICAnUHJvZ3Jlc3NSaW5nRG90cyc6ICdcXHVGMTZBJyxcbiAgICAgICAgICAgICdDYWxvcmllc0FkZCc6ICdcXHVGMTcyJyxcbiAgICAgICAgICAgICdCcmFuY2hGb3JrJzogJ1xcdUYxNzMnLFxuICAgICAgICAgICAgJ011dGVDaGF0JzogJ1xcdUYxN0EnLFxuICAgICAgICAgICAgJ0FkZEhvbWUnOiAnXFx1RjE3QicsXG4gICAgICAgICAgICAnQWRkV29yayc6ICdcXHVGMTdDJyxcbiAgICAgICAgICAgICdNb2JpbGVSZXBvcnQnOiAnXFx1RjE4QScsXG4gICAgICAgICAgICAnU2NhbGVWb2x1bWUnOiAnXFx1RjE4QycsXG4gICAgICAgICAgICAnSGFyZERyaXZlR3JvdXAnOiAnXFx1RjE4RicsXG4gICAgICAgICAgICAnRmFzdE1vZGUnOiAnXFx1RjE5QScsXG4gICAgICAgICAgICAnVG9nZ2xlTGVmdCc6ICdcXHVGMTlFJyxcbiAgICAgICAgICAgICdUb2dnbGVSaWdodCc6ICdcXHVGMTlGJyxcbiAgICAgICAgICAgICdUcmlhbmdsZVNoYXBlJzogJ1xcdUYxQTcnLFxuICAgICAgICAgICAgJ1JlY3RhbmdsZVNoYXBlJzogJ1xcdUYxQTknLFxuICAgICAgICAgICAgJ0N1YmVTaGFwZSc6ICdcXHVGMUFBJyxcbiAgICAgICAgICAgICdUcm9waHkyJzogJ1xcdUYxQUUnLFxuICAgICAgICAgICAgJ0J1Y2tldENvbG9yJzogJ1xcdUYxQjYnLFxuICAgICAgICAgICAgJ0J1Y2tldENvbG9yRmlsbCc6ICdcXHVGMUI3JyxcbiAgICAgICAgICAgICdUYXNrYm9hcmQnOiAnXFx1RjFDMicsXG4gICAgICAgICAgICAnU2luZ2xlQ29sdW1uJzogJ1xcdUYxRDMnLFxuICAgICAgICAgICAgJ0RvdWJsZUNvbHVtbic6ICdcXHVGMUQ0JyxcbiAgICAgICAgICAgICdUcmlwbGVDb2x1bW4nOiAnXFx1RjFENScsXG4gICAgICAgICAgICAnQ29sdW1uTGVmdFR3b1RoaXJkcyc6ICdcXHVGMUQ2JyxcbiAgICAgICAgICAgICdDb2x1bW5SaWdodFR3b1RoaXJkcyc6ICdcXHVGMUQ3JyxcbiAgICAgICAgICAgICdBY2Nlc3NMb2dvRmlsbCc6ICdcXHVGMURCJyxcbiAgICAgICAgICAgICdBbmFseXRpY3NMb2dvJzogJ1xcdUYxREUnLFxuICAgICAgICAgICAgJ0FuYWx5dGljc1F1ZXJ5JzogJ1xcdUYxREYnLFxuICAgICAgICAgICAgJ05ld0FuYWx5dGljc1F1ZXJ5JzogJ1xcdUYxRTAnLFxuICAgICAgICAgICAgJ0FuYWx5dGljc1JlcG9ydCc6ICdcXHVGMUUxJyxcbiAgICAgICAgICAgICdXb3JkTG9nbyc6ICdcXHVGMUUzJyxcbiAgICAgICAgICAgICdXb3JkTG9nb0ZpbGwnOiAnXFx1RjFFNCcsXG4gICAgICAgICAgICAnRXhjZWxMb2dvJzogJ1xcdUYxRTUnLFxuICAgICAgICAgICAgJ0V4Y2VsTG9nb0ZpbGwnOiAnXFx1RjFFNicsXG4gICAgICAgICAgICAnT25lTm90ZUxvZ28nOiAnXFx1RjFFNycsXG4gICAgICAgICAgICAnT25lTm90ZUxvZ29GaWxsJzogJ1xcdUYxRTgnLFxuICAgICAgICAgICAgJ091dGxvb2tMb2dvJzogJ1xcdUYxRTknLFxuICAgICAgICAgICAgJ091dGxvb2tMb2dvRmlsbCc6ICdcXHVGMUVBJyxcbiAgICAgICAgICAgICdQb3dlclBvaW50TG9nbyc6ICdcXHVGMUVCJyxcbiAgICAgICAgICAgICdQb3dlclBvaW50TG9nb0ZpbGwnOiAnXFx1RjFFQycsXG4gICAgICAgICAgICAnUHVibGlzaGVyTG9nbyc6ICdcXHVGMUVEJyxcbiAgICAgICAgICAgICdQdWJsaXNoZXJMb2dvRmlsbCc6ICdcXHVGMUVFJyxcbiAgICAgICAgICAgICdTY2hlZHVsZUV2ZW50QWN0aW9uJzogJ1xcdUYxRUYnLFxuICAgICAgICAgICAgJ0ZsYW1lU29saWQnOiAnXFx1RjFGMycsXG4gICAgICAgICAgICAnU2VydmVyUHJvY2Vzc2VzJzogJ1xcdUYxRkUnLFxuICAgICAgICAgICAgJ1NlcnZlcic6ICdcXHVGMjAxJyxcbiAgICAgICAgICAgICdTYXZlQWxsJzogJ1xcdUYyMDMnLFxuICAgICAgICAgICAgJ0xpbmtlZEluTG9nbyc6ICdcXHVGMjBBJyxcbiAgICAgICAgICAgICdEZWNpbWFscyc6ICdcXHVGMjE4JyxcbiAgICAgICAgICAgICdTaWRlUGFuZWxNaXJyb3JlZCc6ICdcXHVGMjIxJyxcbiAgICAgICAgICAgICdQcm90ZWN0UmVzdHJpY3QnOiAnXFx1RjIyQScsXG4gICAgICAgICAgICAnQmxvZyc6ICdcXHVGMjJCJyxcbiAgICAgICAgICAgICdVbmtub3duTWlycm9yZWQnOiAnXFx1RjIyRScsXG4gICAgICAgICAgICAnUHVibGljQ29udGFjdENhcmRNaXJyb3JlZCc6ICdcXHVGMjMwJyxcbiAgICAgICAgICAgICdHcmlkVmlld1NtYWxsJzogJ1xcdUYyMzInLFxuICAgICAgICAgICAgJ0dyaWRWaWV3TWVkaXVtJzogJ1xcdUYyMzMnLFxuICAgICAgICAgICAgJ0dyaWRWaWV3TGFyZ2UnOiAnXFx1RjIzNCcsXG4gICAgICAgICAgICAnU3RlcCc6ICdcXHVGMjQxJyxcbiAgICAgICAgICAgICdTdGVwSW5zZXJ0JzogJ1xcdUYyNDInLFxuICAgICAgICAgICAgJ1N0ZXBTaGFyZWQnOiAnXFx1RjI0MycsXG4gICAgICAgICAgICAnU3RlcFNoYXJlZEFkZCc6ICdcXHVGMjQ0JyxcbiAgICAgICAgICAgICdTdGVwU2hhcmVkSW5zZXJ0JzogJ1xcdUYyNDUnLFxuICAgICAgICAgICAgJ1ZpZXdEYXNoYm9hcmQnOiAnXFx1RjI0NicsXG4gICAgICAgICAgICAnVmlld0xpc3QnOiAnXFx1RjI0NydcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTkuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTEwXFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTEwLWM0ZGVkOGU0LndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ1ZpZXdMaXN0R3JvdXAnOiAnXFx1RjI0OCcsXG4gICAgICAgICAgICAnVmlld0xpc3RUcmVlJzogJ1xcdUYyNDknLFxuICAgICAgICAgICAgJ1RyaWdnZXJBdXRvJzogJ1xcdUYyNEEnLFxuICAgICAgICAgICAgJ1RyaWdnZXJVc2VyJzogJ1xcdUYyNEInLFxuICAgICAgICAgICAgJ1Bpdm90Q2hhcnQnOiAnXFx1RjI0QycsXG4gICAgICAgICAgICAnU3RhY2tlZEJhckNoYXJ0JzogJ1xcdUYyNEQnLFxuICAgICAgICAgICAgJ1N0YWNrZWRMaW5lQ2hhcnQnOiAnXFx1RjI0RScsXG4gICAgICAgICAgICAnQnVpbGRRdWV1ZSc6ICdcXHVGMjRGJyxcbiAgICAgICAgICAgICdCdWlsZFF1ZXVlTmV3JzogJ1xcdUYyNTAnLFxuICAgICAgICAgICAgJ1VzZXJGb2xsb3dlZCc6ICdcXHVGMjVDJyxcbiAgICAgICAgICAgICdDb250YWN0TGluayc6ICdcXHVGMjVGJyxcbiAgICAgICAgICAgICdTdGFjayc6ICdcXHVGMjZGJyxcbiAgICAgICAgICAgICdCdWxsc2V5ZSc6ICdcXHVGMjcyJyxcbiAgICAgICAgICAgICdWZW5uRGlhZ3JhbSc6ICdcXHVGMjczJyxcbiAgICAgICAgICAgICdGaXZlVGlsZUdyaWQnOiAnXFx1RjI3NCcsXG4gICAgICAgICAgICAnRm9jYWxQb2ludCc6ICdcXHVGMjc3JyxcbiAgICAgICAgICAgICdJbnNlcnQnOiAnXFx1RjI3OCcsXG4gICAgICAgICAgICAnUmluZ2VyUmVtb3ZlJzogJ1xcdUYyNzknLFxuICAgICAgICAgICAgJ1RlYW1zTG9nb0ludmVyc2UnOiAnXFx1RjI3QScsXG4gICAgICAgICAgICAnVGVhbXNMb2dvJzogJ1xcdUYyN0InLFxuICAgICAgICAgICAgJ1RlYW1zTG9nb0ZpbGwnOiAnXFx1RjI3QycsXG4gICAgICAgICAgICAnU2t5cGVGb3JCdXNpbmVzc0xvZ29GaWxsJzogJ1xcdUYyN0QnLFxuICAgICAgICAgICAgJ1NoYXJlcG9pbnRMb2dvJzogJ1xcdUYyN0UnLFxuICAgICAgICAgICAgJ1NoYXJlcG9pbnRMb2dvRmlsbCc6ICdcXHVGMjdGJyxcbiAgICAgICAgICAgICdEZWx2ZUxvZ28nOiAnXFx1RjI4MCcsXG4gICAgICAgICAgICAnRGVsdmVMb2dvRmlsbCc6ICdcXHVGMjgxJyxcbiAgICAgICAgICAgICdPZmZpY2VWaWRlb0xvZ28nOiAnXFx1RjI4MicsXG4gICAgICAgICAgICAnT2ZmaWNlVmlkZW9Mb2dvRmlsbCc6ICdcXHVGMjgzJyxcbiAgICAgICAgICAgICdFeGNoYW5nZUxvZ28nOiAnXFx1RjI4NCcsXG4gICAgICAgICAgICAnRXhjaGFuZ2VMb2dvRmlsbCc6ICdcXHVGMjg1JyxcbiAgICAgICAgICAgICdTaWduaW4nOiAnXFx1RjI4NicsXG4gICAgICAgICAgICAnRG9jdW1lbnRBcHByb3ZhbCc6ICdcXHVGMjhCJyxcbiAgICAgICAgICAgICdDbG9uZVRvRGVza3RvcCc6ICdcXHVGMjhDJyxcbiAgICAgICAgICAgICdJbnN0YWxsVG9Ecml2ZSc6ICdcXHVGMjhEJyxcbiAgICAgICAgICAgICdCbHVyJzogJ1xcdUYyOEUnLFxuICAgICAgICAgICAgJ0J1aWxkJzogJ1xcdUYyOEYnLFxuICAgICAgICAgICAgJ1Byb2Nlc3NNZXRhVGFzayc6ICdcXHVGMjkwJyxcbiAgICAgICAgICAgICdCcmFuY2hGb3JrMic6ICdcXHVGMjkxJyxcbiAgICAgICAgICAgICdCcmFuY2hMb2NrZWQnOiAnXFx1RjI5MicsXG4gICAgICAgICAgICAnQnJhbmNoQ29tbWl0JzogJ1xcdUYyOTMnLFxuICAgICAgICAgICAgJ0JyYW5jaENvbXBhcmUnOiAnXFx1RjI5NCcsXG4gICAgICAgICAgICAnQnJhbmNoTWVyZ2UnOiAnXFx1RjI5NScsXG4gICAgICAgICAgICAnQnJhbmNoUHVsbFJlcXVlc3QnOiAnXFx1RjI5NicsXG4gICAgICAgICAgICAnQnJhbmNoU2VhcmNoJzogJ1xcdUYyOTcnLFxuICAgICAgICAgICAgJ0JyYW5jaFNoZWx2ZXNldCc6ICdcXHVGMjk4JyxcbiAgICAgICAgICAgICdSYXdTb3VyY2UnOiAnXFx1RjI5OScsXG4gICAgICAgICAgICAnTWVyZ2VEdXBsaWNhdGUnOiAnXFx1RjI5QScsXG4gICAgICAgICAgICAnUm93c0dyb3VwJzogJ1xcdUYyOUInLFxuICAgICAgICAgICAgJ1Jvd3NDaGlsZCc6ICdcXHVGMjlDJyxcbiAgICAgICAgICAgICdEZXBsb3knOiAnXFx1RjI5RCcsXG4gICAgICAgICAgICAnUmVkZXBsb3knOiAnXFx1RjI5RScsXG4gICAgICAgICAgICAnU2VydmVyRW52aXJvbWVudCc6ICdcXHVGMjlGJyxcbiAgICAgICAgICAgICdWaXNpb0RpYWdyYW0nOiAnXFx1RjJBMCcsXG4gICAgICAgICAgICAnSGlnaGxpZ2h0TWFwcGVkU2hhcGVzJzogJ1xcdUYyQTEnLFxuICAgICAgICAgICAgJ1RleHRDYWxsb3V0JzogJ1xcdUYyQTInLFxuICAgICAgICAgICAgJ0ljb25TZXRzRmxhZyc6ICdcXHVGMkE0JyxcbiAgICAgICAgICAgICdWaXNpb0xvZ28nOiAnXFx1RjJBNycsXG4gICAgICAgICAgICAnVmlzaW9Mb2dvRmlsbCc6ICdcXHVGMkE4JyxcbiAgICAgICAgICAgICdWaXNpb0RvY3VtZW50JzogJ1xcdUYyQTknLFxuICAgICAgICAgICAgJ1RpbWVsaW5lUHJvZ3Jlc3MnOiAnXFx1RjJBQScsXG4gICAgICAgICAgICAnVGltZWxpbmVEZWxpdmVyeSc6ICdcXHVGMkFCJyxcbiAgICAgICAgICAgICdCYWNrbG9nJzogJ1xcdUYyQUMnLFxuICAgICAgICAgICAgJ1RlYW1GYXZvcml0ZSc6ICdcXHVGMkFEJyxcbiAgICAgICAgICAgICdUYXNrR3JvdXAnOiAnXFx1RjJBRScsXG4gICAgICAgICAgICAnVGFza0dyb3VwTWlycm9yZWQnOiAnXFx1RjJBRicsXG4gICAgICAgICAgICAnU2NvcGVUZW1wbGF0ZSc6ICdcXHVGMkIwJyxcbiAgICAgICAgICAgICdBc3Nlc3NtZW50R3JvdXBUZW1wbGF0ZSc6ICdcXHVGMkIxJyxcbiAgICAgICAgICAgICdOZXdUZWFtUHJvamVjdCc6ICdcXHVGMkIyJyxcbiAgICAgICAgICAgICdDb21tZW50QWRkJzogJ1xcdUYyQjMnLFxuICAgICAgICAgICAgJ0NvbW1lbnROZXh0JzogJ1xcdUYyQjQnLFxuICAgICAgICAgICAgJ0NvbW1lbnRQcmV2aW91cyc6ICdcXHVGMkI1JyxcbiAgICAgICAgICAgICdTaG9wU2VydmVyJzogJ1xcdUYyQjYnLFxuICAgICAgICAgICAgJ0xvY2FsZUxhbmd1YWdlJzogJ1xcdUYyQjcnLFxuICAgICAgICAgICAgJ1F1ZXJ5TGlzdCc6ICdcXHVGMkI4JyxcbiAgICAgICAgICAgICdVc2VyU3luYyc6ICdcXHVGMkI5JyxcbiAgICAgICAgICAgICdVc2VyUGF1c2UnOiAnXFx1RjJCQScsXG4gICAgICAgICAgICAnU3RyZWFtaW5nT2ZmJzogJ1xcdUYyQkInLFxuICAgICAgICAgICAgJ0Fycm93VGFsbFVwTGVmdCc6ICdcXHVGMkJEJyxcbiAgICAgICAgICAgICdBcnJvd1RhbGxVcFJpZ2h0JzogJ1xcdUYyQkUnLFxuICAgICAgICAgICAgJ0Fycm93VGFsbERvd25MZWZ0JzogJ1xcdUYyQkYnLFxuICAgICAgICAgICAgJ0Fycm93VGFsbERvd25SaWdodCc6ICdcXHVGMkMwJyxcbiAgICAgICAgICAgICdGaWVsZEVtcHR5JzogJ1xcdUYyQzEnLFxuICAgICAgICAgICAgJ0ZpZWxkRmlsbGVkJzogJ1xcdUYyQzInLFxuICAgICAgICAgICAgJ0ZpZWxkQ2hhbmdlZCc6ICdcXHVGMkMzJyxcbiAgICAgICAgICAgICdGaWVsZE5vdENoYW5nZWQnOiAnXFx1RjJDNCcsXG4gICAgICAgICAgICAnUmluZ2VyT2ZmJzogJ1xcdUYyQzUnLFxuICAgICAgICAgICAgJ1BsYXlSZXN1bWUnOiAnXFx1RjJDNicsXG4gICAgICAgICAgICAnQnVsbGV0ZWRMaXN0Mic6ICdcXHVGMkM3JyxcbiAgICAgICAgICAgICdCdWxsZXRlZExpc3QyTWlycm9yZWQnOiAnXFx1RjJDOCcsXG4gICAgICAgICAgICAnSW1hZ2VDcm9zc2hhaXInOiAnXFx1RjJDOScsXG4gICAgICAgICAgICAnR2l0R3JhcGgnOiAnXFx1RjJDQScsXG4gICAgICAgICAgICAnUmVwbyc6ICdcXHVGMkNCJyxcbiAgICAgICAgICAgICdSZXBvU29saWQnOiAnXFx1RjJDQycsXG4gICAgICAgICAgICAnRm9sZGVyUXVlcnknOiAnXFx1RjJDRCcsXG4gICAgICAgICAgICAnRm9sZGVyTGlzdCc6ICdcXHVGMkNFJyxcbiAgICAgICAgICAgICdGb2xkZXJMaXN0TWlycm9yZWQnOiAnXFx1RjJDRicsXG4gICAgICAgICAgICAnTG9jYXRpb25PdXRsaW5lJzogJ1xcdUYyRDAnLFxuICAgICAgICAgICAgJ1BPSVNvbGlkJzogJ1xcdUYyRDEnLFxuICAgICAgICAgICAgJ0NhbGN1bGF0b3JOb3RFcXVhbFRvJzogJ1xcdUYyRDInLFxuICAgICAgICAgICAgJ0JveFN1YnRyYWN0U29saWQnOiAnXFx1RjJEMydcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTEwLmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy0xMVxcXCJcIixcbiAgICAgICAgICAgIHNyYzogXCJ1cmwoJ1wiLmNvbmNhdChiYXNlVXJsLCBcImZhYnJpYy1pY29ucy0xMS0yYTgzOTNkNi53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdCb3hBZGRpdGlvblNvbGlkJzogJ1xcdUYyRDQnLFxuICAgICAgICAgICAgJ0JveE11bHRpcGx5U29saWQnOiAnXFx1RjJENScsXG4gICAgICAgICAgICAnQm94UGxheVNvbGlkJzogJ1xcdUYyRDYnLFxuICAgICAgICAgICAgJ0JveENoZWNrbWFya1NvbGlkJzogJ1xcdUYyRDcnLFxuICAgICAgICAgICAgJ0NpcmNsZVBhdXNlU29saWQnOiAnXFx1RjJEOCcsXG4gICAgICAgICAgICAnQ2lyY2xlUGF1c2UnOiAnXFx1RjJEOScsXG4gICAgICAgICAgICAnTVNOVmlkZW9zU29saWQnOiAnXFx1RjJEQScsXG4gICAgICAgICAgICAnQ2lyY2xlU3RvcFNvbGlkJzogJ1xcdUYyREInLFxuICAgICAgICAgICAgJ0NpcmNsZVN0b3AnOiAnXFx1RjJEQycsXG4gICAgICAgICAgICAnTmF2aWdhdGVCYWNrJzogJ1xcdUYyREQnLFxuICAgICAgICAgICAgJ05hdmlnYXRlQmFja01pcnJvcmVkJzogJ1xcdUYyREUnLFxuICAgICAgICAgICAgJ05hdmlnYXRlRm9yd2FyZCc6ICdcXHVGMkRGJyxcbiAgICAgICAgICAgICdOYXZpZ2F0ZUZvcndhcmRNaXJyb3JlZCc6ICdcXHVGMkUwJyxcbiAgICAgICAgICAgICdVbmtub3duU29saWQnOiAnXFx1RjJFMScsXG4gICAgICAgICAgICAnVW5rbm93bk1pcnJvcmVkU29saWQnOiAnXFx1RjJFMicsXG4gICAgICAgICAgICAnQ2lyY2xlQWRkaXRpb24nOiAnXFx1RjJFMycsXG4gICAgICAgICAgICAnQ2lyY2xlQWRkaXRpb25Tb2xpZCc6ICdcXHVGMkU0JyxcbiAgICAgICAgICAgICdGaWxlUERCJzogJ1xcdUYyRTUnLFxuICAgICAgICAgICAgJ0ZpbGVUZW1wbGF0ZSc6ICdcXHVGMkU2JyxcbiAgICAgICAgICAgICdGaWxlU1FMJzogJ1xcdUYyRTcnLFxuICAgICAgICAgICAgJ0ZpbGVKQVZBJzogJ1xcdUYyRTgnLFxuICAgICAgICAgICAgJ0ZpbGVBU1BYJzogJ1xcdUYyRTknLFxuICAgICAgICAgICAgJ0ZpbGVDU1MnOiAnXFx1RjJFQScsXG4gICAgICAgICAgICAnRmlsZVNhc3MnOiAnXFx1RjJFQicsXG4gICAgICAgICAgICAnRmlsZUxlc3MnOiAnXFx1RjJFQycsXG4gICAgICAgICAgICAnRmlsZUhUTUwnOiAnXFx1RjJFRCcsXG4gICAgICAgICAgICAnSmF2YVNjcmlwdExhbmd1YWdlJzogJ1xcdUYyRUUnLFxuICAgICAgICAgICAgJ0NTaGFycExhbmd1YWdlJzogJ1xcdUYyRUYnLFxuICAgICAgICAgICAgJ0NTaGFycCc6ICdcXHVGMkYwJyxcbiAgICAgICAgICAgICdWaXN1YWxCYXNpY0xhbmd1YWdlJzogJ1xcdUYyRjEnLFxuICAgICAgICAgICAgJ1ZCJzogJ1xcdUYyRjInLFxuICAgICAgICAgICAgJ0NQbHVzUGx1c0xhbmd1YWdlJzogJ1xcdUYyRjMnLFxuICAgICAgICAgICAgJ0NQbHVzUGx1cyc6ICdcXHVGMkY0JyxcbiAgICAgICAgICAgICdGU2hhcnBMYW5ndWFnZSc6ICdcXHVGMkY1JyxcbiAgICAgICAgICAgICdGU2hhcnAnOiAnXFx1RjJGNicsXG4gICAgICAgICAgICAnVHlwZVNjcmlwdExhbmd1YWdlJzogJ1xcdUYyRjcnLFxuICAgICAgICAgICAgJ1B5dGhvbkxhbmd1YWdlJzogJ1xcdUYyRjgnLFxuICAgICAgICAgICAgJ1BZJzogJ1xcdUYyRjknLFxuICAgICAgICAgICAgJ0NvZmZlZVNjcmlwdCc6ICdcXHVGMkZBJyxcbiAgICAgICAgICAgICdNYXJrRG93bkxhbmd1YWdlJzogJ1xcdUYyRkInLFxuICAgICAgICAgICAgJ0Z1bGxXaWR0aCc6ICdcXHVGMkZFJyxcbiAgICAgICAgICAgICdGdWxsV2lkdGhFZGl0JzogJ1xcdUYyRkYnLFxuICAgICAgICAgICAgJ1BsdWcnOiAnXFx1RjMwMCcsXG4gICAgICAgICAgICAnUGx1Z1NvbGlkJzogJ1xcdUYzMDEnLFxuICAgICAgICAgICAgJ1BsdWdDb25uZWN0ZWQnOiAnXFx1RjMwMicsXG4gICAgICAgICAgICAnUGx1Z0Rpc2Nvbm5lY3RlZCc6ICdcXHVGMzAzJyxcbiAgICAgICAgICAgICdVbmxvY2tTb2xpZCc6ICdcXHVGMzA0JyxcbiAgICAgICAgICAgICdWYXJpYWJsZSc6ICdcXHVGMzA1JyxcbiAgICAgICAgICAgICdQYXJhbWV0ZXInOiAnXFx1RjMwNicsXG4gICAgICAgICAgICAnQ29tbWVudFVyZ2VudCc6ICdcXHVGMzA3JyxcbiAgICAgICAgICAgICdTdG9yeWJvYXJkJzogJ1xcdUYzMDgnLFxuICAgICAgICAgICAgJ0RpZmZJbmxpbmUnOiAnXFx1RjMwOScsXG4gICAgICAgICAgICAnRGlmZlNpZGVCeVNpZGUnOiAnXFx1RjMwQScsXG4gICAgICAgICAgICAnSW1hZ2VEaWZmJzogJ1xcdUYzMEInLFxuICAgICAgICAgICAgJ0ltYWdlUGl4ZWwnOiAnXFx1RjMwQycsXG4gICAgICAgICAgICAnRmlsZUJ1Zyc6ICdcXHVGMzBEJyxcbiAgICAgICAgICAgICdGaWxlQ29kZSc6ICdcXHVGMzBFJyxcbiAgICAgICAgICAgICdGaWxlQ29tbWVudCc6ICdcXHVGMzBGJyxcbiAgICAgICAgICAgICdCdXNpbmVzc0hvdXJzU2lnbic6ICdcXHVGMzEwJyxcbiAgICAgICAgICAgICdGaWxlSW1hZ2UnOiAnXFx1RjMxMScsXG4gICAgICAgICAgICAnRmlsZVN5bWxpbmsnOiAnXFx1RjMxMicsXG4gICAgICAgICAgICAnQXV0b0ZpbGxUZW1wbGF0ZSc6ICdcXHVGMzEzJyxcbiAgICAgICAgICAgICdXb3JrSXRlbSc6ICdcXHVGMzE0JyxcbiAgICAgICAgICAgICdXb3JrSXRlbUJ1Zyc6ICdcXHVGMzE1JyxcbiAgICAgICAgICAgICdMb2dSZW1vdmUnOiAnXFx1RjMxNicsXG4gICAgICAgICAgICAnQ29sdW1uT3B0aW9ucyc6ICdcXHVGMzE3JyxcbiAgICAgICAgICAgICdQYWNrYWdlcyc6ICdcXHVGMzE4JyxcbiAgICAgICAgICAgICdCdWlsZElzc3VlJzogJ1xcdUYzMTknLFxuICAgICAgICAgICAgJ0Fzc2Vzc21lbnRHcm91cCc6ICdcXHVGMzFBJyxcbiAgICAgICAgICAgICdWYXJpYWJsZUdyb3VwJzogJ1xcdUYzMUInLFxuICAgICAgICAgICAgJ0Z1bGxIaXN0b3J5JzogJ1xcdUYzMUMnLFxuICAgICAgICAgICAgJ1doZWVsY2hhaXInOiAnXFx1RjMxRicsXG4gICAgICAgICAgICAnU2luZ2xlQ29sdW1uRWRpdCc6ICdcXHVGMzIxJyxcbiAgICAgICAgICAgICdEb3VibGVDb2x1bW5FZGl0JzogJ1xcdUYzMjInLFxuICAgICAgICAgICAgJ1RyaXBsZUNvbHVtbkVkaXQnOiAnXFx1RjMyMycsXG4gICAgICAgICAgICAnQ29sdW1uTGVmdFR3b1RoaXJkc0VkaXQnOiAnXFx1RjMyNCcsXG4gICAgICAgICAgICAnQ29sdW1uUmlnaHRUd29UaGlyZHNFZGl0JzogJ1xcdUYzMjUnLFxuICAgICAgICAgICAgJ1N0cmVhbUxvZ28nOiAnXFx1RjMyOScsXG4gICAgICAgICAgICAnUGFzc2l2ZUF1dGhlbnRpY2F0aW9uJzogJ1xcdUYzMkEnLFxuICAgICAgICAgICAgJ0FsZXJ0U29saWQnOiAnXFx1RjMzMScsXG4gICAgICAgICAgICAnTWVnYXBob25lU29saWQnOiAnXFx1RjMzMicsXG4gICAgICAgICAgICAnVGFza1NvbGlkJzogJ1xcdUYzMzMnLFxuICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb25Tb2xpZCc6ICdcXHVGMzM0JyxcbiAgICAgICAgICAgICdCdWdTb2xpZCc6ICdcXHVGMzM1JyxcbiAgICAgICAgICAgICdDcm93blNvbGlkJzogJ1xcdUYzMzYnLFxuICAgICAgICAgICAgJ1Ryb3BoeTJTb2xpZCc6ICdcXHVGMzM3JyxcbiAgICAgICAgICAgICdRdWlja05vdGVTb2xpZCc6ICdcXHVGMzM4JyxcbiAgICAgICAgICAgICdDb25zdHJ1Y3Rpb25Db25lU29saWQnOiAnXFx1RjMzOScsXG4gICAgICAgICAgICAnUGFnZUxpc3RTb2xpZCc6ICdcXHVGMzNBJyxcbiAgICAgICAgICAgICdQYWdlTGlzdE1pcnJvcmVkU29saWQnOiAnXFx1RjMzQicsXG4gICAgICAgICAgICAnU3RhcmJ1cnN0U29saWQnOiAnXFx1RjMzQycsXG4gICAgICAgICAgICAnUmVhZGluZ01vZGVTb2xpZCc6ICdcXHVGMzNEJyxcbiAgICAgICAgICAgICdTYWRTb2xpZCc6ICdcXHVGMzNFJyxcbiAgICAgICAgICAgICdIZWFsdGhTb2xpZCc6ICdcXHVGMzNGJyxcbiAgICAgICAgICAgICdTaGllbGRTb2xpZCc6ICdcXHVGMzQwJyxcbiAgICAgICAgICAgICdHaWZ0Qm94U29saWQnOiAnXFx1RjM0MScsXG4gICAgICAgICAgICAnU2hvcHBpbmdDYXJ0U29saWQnOiAnXFx1RjM0MicsXG4gICAgICAgICAgICAnTWFpbFNvbGlkJzogJ1xcdUYzNDMnLFxuICAgICAgICAgICAgJ0NoYXRTb2xpZCc6ICdcXHVGMzQ0JyxcbiAgICAgICAgICAgICdSaWJib25Tb2xpZCc6ICdcXHVGMzQ1J1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMtMTEuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTEyXFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTEyLTdlOTQ1YTFlLndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ0ZpbmFuY2lhbFNvbGlkJzogJ1xcdUYzNDYnLFxuICAgICAgICAgICAgJ0ZpbmFuY2lhbE1pcnJvcmVkU29saWQnOiAnXFx1RjM0NycsXG4gICAgICAgICAgICAnSGVhZHNldFNvbGlkJzogJ1xcdUYzNDgnLFxuICAgICAgICAgICAgJ1Blcm1pc3Npb25zU29saWQnOiAnXFx1RjM0OScsXG4gICAgICAgICAgICAnUGFya2luZ1NvbGlkJzogJ1xcdUYzNEEnLFxuICAgICAgICAgICAgJ1BhcmtpbmdNaXJyb3JlZFNvbGlkJzogJ1xcdUYzNEInLFxuICAgICAgICAgICAgJ0RpYW1vbmRTb2xpZCc6ICdcXHVGMzRDJyxcbiAgICAgICAgICAgICdBc3Rlcmlza1NvbGlkJzogJ1xcdUYzNEQnLFxuICAgICAgICAgICAgJ09mZmxpbmVTdG9yYWdlU29saWQnOiAnXFx1RjM0RScsXG4gICAgICAgICAgICAnQmFua1NvbGlkJzogJ1xcdUYzNEYnLFxuICAgICAgICAgICAgJ0RlY2lzaW9uU29saWQnOiAnXFx1RjM1MCcsXG4gICAgICAgICAgICAnUGFyYWNodXRlJzogJ1xcdUYzNTEnLFxuICAgICAgICAgICAgJ1BhcmFjaHV0ZVNvbGlkJzogJ1xcdUYzNTInLFxuICAgICAgICAgICAgJ0ZpbHRlcnNTb2xpZCc6ICdcXHVGMzUzJyxcbiAgICAgICAgICAgICdDb2xvclNvbGlkJzogJ1xcdUYzNTQnLFxuICAgICAgICAgICAgJ1Jldmlld1NvbGlkJzogJ1xcdUYzNTUnLFxuICAgICAgICAgICAgJ1Jldmlld1JlcXVlc3RTb2xpZCc6ICdcXHVGMzU2JyxcbiAgICAgICAgICAgICdSZXZpZXdSZXF1ZXN0TWlycm9yZWRTb2xpZCc6ICdcXHVGMzU3JyxcbiAgICAgICAgICAgICdSZXZpZXdSZXNwb25zZVNvbGlkJzogJ1xcdUYzNTgnLFxuICAgICAgICAgICAgJ0ZlZWRiYWNrUmVxdWVzdFNvbGlkJzogJ1xcdUYzNTknLFxuICAgICAgICAgICAgJ0ZlZWRiYWNrUmVxdWVzdE1pcnJvcmVkU29saWQnOiAnXFx1RjM1QScsXG4gICAgICAgICAgICAnRmVlZGJhY2tSZXNwb25zZVNvbGlkJzogJ1xcdUYzNUInLFxuICAgICAgICAgICAgJ1dvcmtJdGVtQmFyJzogJ1xcdUYzNUMnLFxuICAgICAgICAgICAgJ1dvcmtJdGVtQmFyU29saWQnOiAnXFx1RjM1RCcsXG4gICAgICAgICAgICAnU2VwYXJhdG9yJzogJ1xcdUYzNUUnLFxuICAgICAgICAgICAgJ05hdmlnYXRlRXh0ZXJuYWxJbmxpbmUnOiAnXFx1RjM1RicsXG4gICAgICAgICAgICAnUGxhblZpZXcnOiAnXFx1RjM2MCcsXG4gICAgICAgICAgICAnVGltZWxpbmVNYXRyaXhWaWV3JzogJ1xcdUYzNjEnLFxuICAgICAgICAgICAgJ0VuZ2luZWVyaW5nR3JvdXAnOiAnXFx1RjM2MicsXG4gICAgICAgICAgICAnUHJvamVjdENvbGxlY3Rpb24nOiAnXFx1RjM2MycsXG4gICAgICAgICAgICAnQ2FyZXRCb3R0b21SaWdodENlbnRlcjgnOiAnXFx1RjM2NCcsXG4gICAgICAgICAgICAnQ2FyZXRCb3R0b21MZWZ0Q2VudGVyOCc6ICdcXHVGMzY1JyxcbiAgICAgICAgICAgICdDYXJldFRvcFJpZ2h0Q2VudGVyOCc6ICdcXHVGMzY2JyxcbiAgICAgICAgICAgICdDYXJldFRvcExlZnRDZW50ZXI4JzogJ1xcdUYzNjcnLFxuICAgICAgICAgICAgJ0RvbnV0Q2hhcnQnOiAnXFx1RjM2OCcsXG4gICAgICAgICAgICAnQ2hldnJvblVuZm9sZDEwJzogJ1xcdUYzNjknLFxuICAgICAgICAgICAgJ0NoZXZyb25Gb2xkMTAnOiAnXFx1RjM2QScsXG4gICAgICAgICAgICAnRG91YmxlQ2hldnJvbkRvd244JzogJ1xcdUYzNkInLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25VcDgnOiAnXFx1RjM2QycsXG4gICAgICAgICAgICAnRG91YmxlQ2hldnJvbkxlZnQ4JzogJ1xcdUYzNkQnLFxuICAgICAgICAgICAgJ0RvdWJsZUNoZXZyb25SaWdodDgnOiAnXFx1RjM2RScsXG4gICAgICAgICAgICAnQ2hldnJvbkRvd25FbmQ2JzogJ1xcdUYzNkYnLFxuICAgICAgICAgICAgJ0NoZXZyb25VcEVuZDYnOiAnXFx1RjM3MCcsXG4gICAgICAgICAgICAnQ2hldnJvbkxlZnRFbmQ2JzogJ1xcdUYzNzEnLFxuICAgICAgICAgICAgJ0NoZXZyb25SaWdodEVuZDYnOiAnXFx1RjM3MicsXG4gICAgICAgICAgICAnQ29udGV4dE1lbnUnOiAnXFx1RjM3QycsXG4gICAgICAgICAgICAnQXp1cmVBUElNYW5hZ2VtZW50JzogJ1xcdUYzN0YnLFxuICAgICAgICAgICAgJ0F6dXJlU2VydmljZUVuZHBvaW50JzogJ1xcdUYzODAnLFxuICAgICAgICAgICAgJ1ZTVFNMb2dvJzogJ1xcdUYzODEnLFxuICAgICAgICAgICAgJ1ZTVFNBbHRMb2dvMSc6ICdcXHVGMzgyJyxcbiAgICAgICAgICAgICdWU1RTQWx0TG9nbzInOiAnXFx1RjM4MycsXG4gICAgICAgICAgICAnRmlsZVR5cGVTb2x1dGlvbic6ICdcXHVGMzg3JyxcbiAgICAgICAgICAgICdXb3JkTG9nb0ludmVyc2UxNic6ICdcXHVGMzkwJyxcbiAgICAgICAgICAgICdXb3JkTG9nbzE2JzogJ1xcdUYzOTEnLFxuICAgICAgICAgICAgJ1dvcmRMb2dvRmlsbDE2JzogJ1xcdUYzOTInLFxuICAgICAgICAgICAgJ1Bvd2VyUG9pbnRMb2dvSW52ZXJzZTE2JzogJ1xcdUYzOTMnLFxuICAgICAgICAgICAgJ1Bvd2VyUG9pbnRMb2dvMTYnOiAnXFx1RjM5NCcsXG4gICAgICAgICAgICAnUG93ZXJQb2ludExvZ29GaWxsMTYnOiAnXFx1RjM5NScsXG4gICAgICAgICAgICAnRXhjZWxMb2dvSW52ZXJzZTE2JzogJ1xcdUYzOTYnLFxuICAgICAgICAgICAgJ0V4Y2VsTG9nbzE2JzogJ1xcdUYzOTcnLFxuICAgICAgICAgICAgJ0V4Y2VsTG9nb0ZpbGwxNic6ICdcXHVGMzk4JyxcbiAgICAgICAgICAgICdPbmVOb3RlTG9nb0ludmVyc2UxNic6ICdcXHVGMzk5JyxcbiAgICAgICAgICAgICdPbmVOb3RlTG9nbzE2JzogJ1xcdUYzOUEnLFxuICAgICAgICAgICAgJ09uZU5vdGVMb2dvRmlsbDE2JzogJ1xcdUYzOUInLFxuICAgICAgICAgICAgJ091dGxvb2tMb2dvSW52ZXJzZTE2JzogJ1xcdUYzOUMnLFxuICAgICAgICAgICAgJ091dGxvb2tMb2dvMTYnOiAnXFx1RjM5RCcsXG4gICAgICAgICAgICAnT3V0bG9va0xvZ29GaWxsMTYnOiAnXFx1RjM5RScsXG4gICAgICAgICAgICAnUHVibGlzaGVyTG9nb0ludmVyc2UxNic6ICdcXHVGMzlGJyxcbiAgICAgICAgICAgICdQdWJsaXNoZXJMb2dvMTYnOiAnXFx1RjNBMCcsXG4gICAgICAgICAgICAnUHVibGlzaGVyTG9nb0ZpbGwxNic6ICdcXHVGM0ExJyxcbiAgICAgICAgICAgICdWaXNpb0xvZ29JbnZlcnNlMTYnOiAnXFx1RjNBMicsXG4gICAgICAgICAgICAnVmlzaW9Mb2dvMTYnOiAnXFx1RjNBMycsXG4gICAgICAgICAgICAnVmlzaW9Mb2dvRmlsbDE2JzogJ1xcdUYzQTQnLFxuICAgICAgICAgICAgJ1Rlc3RCZWFrZXInOiAnXFx1RjNBNScsXG4gICAgICAgICAgICAnVGVzdEJlYWtlclNvbGlkJzogJ1xcdUYzQTYnLFxuICAgICAgICAgICAgJ1Rlc3RFeHBsb3JlU29saWQnOiAnXFx1RjNBNycsXG4gICAgICAgICAgICAnVGVzdEF1dG9Tb2xpZCc6ICdcXHVGM0E4JyxcbiAgICAgICAgICAgICdUZXN0VXNlclNvbGlkJzogJ1xcdUYzQTknLFxuICAgICAgICAgICAgJ1Rlc3RJbXBhY3RTb2xpZCc6ICdcXHVGM0FBJyxcbiAgICAgICAgICAgICdUZXN0UGxhbic6ICdcXHVGM0FCJyxcbiAgICAgICAgICAgICdUZXN0U3RlcCc6ICdcXHVGM0FDJyxcbiAgICAgICAgICAgICdUZXN0UGFyYW1ldGVyJzogJ1xcdUYzQUQnLFxuICAgICAgICAgICAgJ1Rlc3RTdWl0ZSc6ICdcXHVGM0FFJyxcbiAgICAgICAgICAgICdUZXN0Q2FzZSc6ICdcXHVGM0FGJyxcbiAgICAgICAgICAgICdTcHJpbnQnOiAnXFx1RjNCMCcsXG4gICAgICAgICAgICAnU2lnbk91dCc6ICdcXHVGM0IxJyxcbiAgICAgICAgICAgICdUcmlnZ2VyQXBwcm92YWwnOiAnXFx1RjNCMicsXG4gICAgICAgICAgICAnUm9ja2V0JzogJ1xcdUYzQjMnLFxuICAgICAgICAgICAgJ0F6dXJlS2V5VmF1bHQnOiAnXFx1RjNCNCcsXG4gICAgICAgICAgICAnT25ib2FyZGluZyc6ICdcXHVGM0JBJyxcbiAgICAgICAgICAgICdUcmFuc2l0aW9uJzogJ1xcdUYzQkMnLFxuICAgICAgICAgICAgJ0xpa2VTb2xpZCc6ICdcXHVGM0JGJyxcbiAgICAgICAgICAgICdEaXNsaWtlU29saWQnOiAnXFx1RjNDMCcsXG4gICAgICAgICAgICAnQ1JNQ3VzdG9tZXJJbnNpZ2h0c0FwcCc6ICdcXHVGM0M4JyxcbiAgICAgICAgICAgICdFZGl0Q3JlYXRlJzogJ1xcdUYzQzknLFxuICAgICAgICAgICAgJ1BsYXlSZXZlcnNlUmVzdW1lJzogJ1xcdUYzRTQnLFxuICAgICAgICAgICAgJ1BsYXlSZXZlcnNlJzogJ1xcdUYzRTUnLFxuICAgICAgICAgICAgJ1NlYXJjaERhdGEnOiAnXFx1RjNGMScsXG4gICAgICAgICAgICAnVW5TZXRDb2xvcic6ICdcXHVGM0Y5JyxcbiAgICAgICAgICAgICdEZWNsaW5lQ2FsbCc6ICdcXHVGNDA1J1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMtMTIuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTEzXFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTEzLWMzOTg5YTAyLndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ1JlY3Rhbmd1bGFyQ2xpcHBpbmcnOiAnXFx1RjQwNycsXG4gICAgICAgICAgICAnVGVhbXNMb2dvMTYnOiAnXFx1RjQwQScsXG4gICAgICAgICAgICAnVGVhbXNMb2dvRmlsbDE2JzogJ1xcdUY0MEInLFxuICAgICAgICAgICAgJ1NwYWNlcic6ICdcXHVGNDBEJyxcbiAgICAgICAgICAgICdTa3lwZUxvZ28xNic6ICdcXHVGNDBFJyxcbiAgICAgICAgICAgICdTa3lwZUZvckJ1c2luZXNzTG9nbzE2JzogJ1xcdUY0MEYnLFxuICAgICAgICAgICAgJ1NreXBlRm9yQnVzaW5lc3NMb2dvRmlsbDE2JzogJ1xcdUY0MTAnLFxuICAgICAgICAgICAgJ0ZpbHRlclNvbGlkJzogJ1xcdUY0MTInLFxuICAgICAgICAgICAgJ01haWxVbmRlbGl2ZXJlZCc6ICdcXHVGNDE1JyxcbiAgICAgICAgICAgICdNYWlsVGVudGF0aXZlJzogJ1xcdUY0MTYnLFxuICAgICAgICAgICAgJ01haWxUZW50YXRpdmVNaXJyb3JlZCc6ICdcXHVGNDE3JyxcbiAgICAgICAgICAgICdNYWlsUmVtaW5kZXInOiAnXFx1RjQxOCcsXG4gICAgICAgICAgICAnUmVjZWlwdFVuZGVsaXZlcmVkJzogJ1xcdUY0MTknLFxuICAgICAgICAgICAgJ1JlY2VpcHRUZW50YXRpdmUnOiAnXFx1RjQxQScsXG4gICAgICAgICAgICAnUmVjZWlwdFRlbnRhdGl2ZU1pcnJvcmVkJzogJ1xcdUY0MUInLFxuICAgICAgICAgICAgJ0luYm94JzogJ1xcdUY0MUMnLFxuICAgICAgICAgICAgJ0lSTVJlcGx5JzogJ1xcdUY0MUQnLFxuICAgICAgICAgICAgJ0lSTVJlcGx5TWlycm9yZWQnOiAnXFx1RjQxRScsXG4gICAgICAgICAgICAnSVJNRm9yd2FyZCc6ICdcXHVGNDFGJyxcbiAgICAgICAgICAgICdJUk1Gb3J3YXJkTWlycm9yZWQnOiAnXFx1RjQyMCcsXG4gICAgICAgICAgICAnVm9pY2VtYWlsSVJNJzogJ1xcdUY0MjEnLFxuICAgICAgICAgICAgJ0V2ZW50QWNjZXB0ZWQnOiAnXFx1RjQyMicsXG4gICAgICAgICAgICAnRXZlbnRUZW50YXRpdmUnOiAnXFx1RjQyMycsXG4gICAgICAgICAgICAnRXZlbnRUZW50YXRpdmVNaXJyb3JlZCc6ICdcXHVGNDI0JyxcbiAgICAgICAgICAgICdFdmVudERlY2xpbmVkJzogJ1xcdUY0MjUnLFxuICAgICAgICAgICAgJ0lEQmFkZ2UnOiAnXFx1RjQyNycsXG4gICAgICAgICAgICAnQmFja2dyb3VuZENvbG9yJzogJ1xcdUY0MkInLFxuICAgICAgICAgICAgJ09mZmljZUZvcm1zTG9nb0ludmVyc2UxNic6ICdcXHVGNDMzJyxcbiAgICAgICAgICAgICdPZmZpY2VGb3Jtc0xvZ28nOiAnXFx1RjQzNCcsXG4gICAgICAgICAgICAnT2ZmaWNlRm9ybXNMb2dvRmlsbCc6ICdcXHVGNDM1JyxcbiAgICAgICAgICAgICdPZmZpY2VGb3Jtc0xvZ28xNic6ICdcXHVGNDM2JyxcbiAgICAgICAgICAgICdPZmZpY2VGb3Jtc0xvZ29GaWxsMTYnOiAnXFx1RjQzNycsXG4gICAgICAgICAgICAnT2ZmaWNlRm9ybXNMb2dvSW52ZXJzZTI0JzogJ1xcdUY0M0EnLFxuICAgICAgICAgICAgJ09mZmljZUZvcm1zTG9nbzI0JzogJ1xcdUY0M0InLFxuICAgICAgICAgICAgJ09mZmljZUZvcm1zTG9nb0ZpbGwyNCc6ICdcXHVGNDNDJyxcbiAgICAgICAgICAgICdQYWdlTG9jayc6ICdcXHVGNDNGJyxcbiAgICAgICAgICAgICdOb3RFeGVjdXRlZCc6ICdcXHVGNDQwJyxcbiAgICAgICAgICAgICdOb3RJbXBhY3RlZFNvbGlkJzogJ1xcdUY0NDEnLFxuICAgICAgICAgICAgJ0ZpZWxkUmVhZE9ubHknOiAnXFx1RjQ0MicsXG4gICAgICAgICAgICAnRmllbGRSZXF1aXJlZCc6ICdcXHVGNDQzJyxcbiAgICAgICAgICAgICdCYWNrbG9nQm9hcmQnOiAnXFx1RjQ0NCcsXG4gICAgICAgICAgICAnRXh0ZXJuYWxCdWlsZCc6ICdcXHVGNDQ1JyxcbiAgICAgICAgICAgICdFeHRlcm5hbFRGVkMnOiAnXFx1RjQ0NicsXG4gICAgICAgICAgICAnRXh0ZXJuYWxYQU1MJzogJ1xcdUY0NDcnLFxuICAgICAgICAgICAgJ0lzc3VlU29saWQnOiAnXFx1RjQ0OCcsXG4gICAgICAgICAgICAnRGVmZWN0U29saWQnOiAnXFx1RjQ0OScsXG4gICAgICAgICAgICAnTGFkeWJ1Z1NvbGlkJzogJ1xcdUY0NEEnLFxuICAgICAgICAgICAgJ051Z2V0TG9nbyc6ICdcXHVGNDRDJyxcbiAgICAgICAgICAgICdURlZDTG9nbyc6ICdcXHVGNDREJyxcbiAgICAgICAgICAgICdQcm9qZWN0TG9nbzMyJzogJ1xcdUY0N0UnLFxuICAgICAgICAgICAgJ1Byb2plY3RMb2dvRmlsbDMyJzogJ1xcdUY0N0YnLFxuICAgICAgICAgICAgJ1Byb2plY3RMb2dvMTYnOiAnXFx1RjQ4MCcsXG4gICAgICAgICAgICAnUHJvamVjdExvZ29GaWxsMTYnOiAnXFx1RjQ4MScsXG4gICAgICAgICAgICAnU3dheUxvZ28zMic6ICdcXHVGNDgyJyxcbiAgICAgICAgICAgICdTd2F5TG9nb0ZpbGwzMic6ICdcXHVGNDgzJyxcbiAgICAgICAgICAgICdTd2F5TG9nbzE2JzogJ1xcdUY0ODQnLFxuICAgICAgICAgICAgJ1N3YXlMb2dvRmlsbDE2JzogJ1xcdUY0ODUnLFxuICAgICAgICAgICAgJ0NsYXNzTm90ZWJvb2tMb2dvMzInOiAnXFx1RjQ4NicsXG4gICAgICAgICAgICAnQ2xhc3NOb3RlYm9va0xvZ29GaWxsMzInOiAnXFx1RjQ4NycsXG4gICAgICAgICAgICAnQ2xhc3NOb3RlYm9va0xvZ28xNic6ICdcXHVGNDg4JyxcbiAgICAgICAgICAgICdDbGFzc05vdGVib29rTG9nb0ZpbGwxNic6ICdcXHVGNDg5JyxcbiAgICAgICAgICAgICdDbGFzc05vdGVib29rTG9nb0ludmVyc2UzMic6ICdcXHVGNDhBJyxcbiAgICAgICAgICAgICdDbGFzc05vdGVib29rTG9nb0ludmVyc2UxNic6ICdcXHVGNDhCJyxcbiAgICAgICAgICAgICdTdGFmZk5vdGVib29rTG9nbzMyJzogJ1xcdUY0OEMnLFxuICAgICAgICAgICAgJ1N0YWZmTm90ZWJvb2tMb2dvRmlsbDMyJzogJ1xcdUY0OEQnLFxuICAgICAgICAgICAgJ1N0YWZmTm90ZWJvb2tMb2dvMTYnOiAnXFx1RjQ4RScsXG4gICAgICAgICAgICAnU3RhZmZOb3RlYm9va0xvZ29GaWxsMTYnOiAnXFx1RjQ4RicsXG4gICAgICAgICAgICAnU3RhZmZOb3RlYm9va0xvZ29JbnZlcnRlZDMyJzogJ1xcdUY0OTAnLFxuICAgICAgICAgICAgJ1N0YWZmTm90ZWJvb2tMb2dvSW52ZXJ0ZWQxNic6ICdcXHVGNDkxJyxcbiAgICAgICAgICAgICdLYWl6YWxhTG9nbyc6ICdcXHVGNDkyJyxcbiAgICAgICAgICAgICdUYXNrTG9nbyc6ICdcXHVGNDkzJyxcbiAgICAgICAgICAgICdQcm90ZWN0aW9uQ2VudGVyTG9nbzMyJzogJ1xcdUY0OTQnLFxuICAgICAgICAgICAgJ0dhbGxhdGluTG9nbyc6ICdcXHVGNDk2JyxcbiAgICAgICAgICAgICdHbG9iZTInOiAnXFx1RjQ5QScsXG4gICAgICAgICAgICAnR3VpdGFyJzogJ1xcdUY0OUInLFxuICAgICAgICAgICAgJ0JyZWFrZmFzdCc6ICdcXHVGNDlDJyxcbiAgICAgICAgICAgICdCcnVuY2gnOiAnXFx1RjQ5RCcsXG4gICAgICAgICAgICAnQmVlck11Zyc6ICdcXHVGNDlFJyxcbiAgICAgICAgICAgICdWYWNhdGlvbic6ICdcXHVGNDlGJyxcbiAgICAgICAgICAgICdUZWV0aCc6ICdcXHVGNEEwJyxcbiAgICAgICAgICAgICdUYXhpJzogJ1xcdUY0QTEnLFxuICAgICAgICAgICAgJ0Nob3BzdGlja3MnOiAnXFx1RjRBMicsXG4gICAgICAgICAgICAnU3luY09jY3VyZW5jZSc6ICdcXHVGNEEzJyxcbiAgICAgICAgICAgICdVbnN5bmNPY2N1cmVuY2UnOiAnXFx1RjRBNCcsXG4gICAgICAgICAgICAnR0lGJzogJ1xcdUY0QTknLFxuICAgICAgICAgICAgJ1ByaW1hcnlDYWxlbmRhcic6ICdcXHVGNEFFJyxcbiAgICAgICAgICAgICdTZWFyY2hDYWxlbmRhcic6ICdcXHVGNEFGJyxcbiAgICAgICAgICAgICdWaWRlb09mZic6ICdcXHVGNEIwJyxcbiAgICAgICAgICAgICdNaWNyb3NvZnRGbG93TG9nbyc6ICdcXHVGNEIxJyxcbiAgICAgICAgICAgICdCdXNpbmVzc0NlbnRlckxvZ28nOiAnXFx1RjRCMicsXG4gICAgICAgICAgICAnVG9Eb0xvZ29Cb3R0b20nOiAnXFx1RjRCMycsXG4gICAgICAgICAgICAnVG9Eb0xvZ29Ub3AnOiAnXFx1RjRCNCcsXG4gICAgICAgICAgICAnRWRpdFNvbGlkMTInOiAnXFx1RjRCNScsXG4gICAgICAgICAgICAnRWRpdFNvbGlkTWlycm9yZWQxMic6ICdcXHVGNEI2JyxcbiAgICAgICAgICAgICdVbmVkaXRhYmxlU29saWQxMic6ICdcXHVGNEI3JyxcbiAgICAgICAgICAgICdVbmVkaXRhYmxlU29saWRNaXJyb3JlZDEyJzogJ1xcdUY0QjgnLFxuICAgICAgICAgICAgJ1VuZWRpdGFibGVNaXJyb3JlZCc6ICdcXHVGNEI5JyxcbiAgICAgICAgICAgICdBZG1pbkFMb2dvMzInOiAnXFx1RjRCQScsXG4gICAgICAgICAgICAnQWRtaW5BTG9nb0ZpbGwzMic6ICdcXHVGNEJCJyxcbiAgICAgICAgICAgICdUb0RvTG9nb0ludmVyc2UnOiAnXFx1RjRCQydcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTEzLmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy0xNFxcXCJcIixcbiAgICAgICAgICAgIHNyYzogXCJ1cmwoJ1wiLmNvbmNhdChiYXNlVXJsLCBcImZhYnJpYy1pY29ucy0xNC01Y2Y1OGRiOC53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdTbm9vemUnOiAnXFx1RjRCRCcsXG4gICAgICAgICAgICAnV2FmZmxlT2ZmaWNlMzY1JzogJ1xcdUY0RTAnLFxuICAgICAgICAgICAgJ0ltYWdlU2VhcmNoJzogJ1xcdUY0RTgnLFxuICAgICAgICAgICAgJ05ld3NTZWFyY2gnOiAnXFx1RjRFOScsXG4gICAgICAgICAgICAnVmlkZW9TZWFyY2gnOiAnXFx1RjRFQScsXG4gICAgICAgICAgICAnUic6ICdcXHVGNEVCJyxcbiAgICAgICAgICAgICdGb250Q29sb3JBJzogJ1xcdUY0RUMnLFxuICAgICAgICAgICAgJ0ZvbnRDb2xvclN3YXRjaCc6ICdcXHVGNEVEJyxcbiAgICAgICAgICAgICdMaWdodFdlaWdodCc6ICdcXHVGNEVFJyxcbiAgICAgICAgICAgICdOb3JtYWxXZWlnaHQnOiAnXFx1RjRFRicsXG4gICAgICAgICAgICAnU2VtaWJvbGRXZWlnaHQnOiAnXFx1RjRGMCcsXG4gICAgICAgICAgICAnR3JvdXBPYmplY3QnOiAnXFx1RjRGMScsXG4gICAgICAgICAgICAnVW5ncm91cE9iamVjdCc6ICdcXHVGNEYyJyxcbiAgICAgICAgICAgICdBbGlnbkhvcml6b250YWxMZWZ0JzogJ1xcdUY0RjMnLFxuICAgICAgICAgICAgJ0FsaWduSG9yaXpvbnRhbENlbnRlcic6ICdcXHVGNEY0JyxcbiAgICAgICAgICAgICdBbGlnbkhvcml6b250YWxSaWdodCc6ICdcXHVGNEY1JyxcbiAgICAgICAgICAgICdBbGlnblZlcnRpY2FsVG9wJzogJ1xcdUY0RjYnLFxuICAgICAgICAgICAgJ0FsaWduVmVydGljYWxDZW50ZXInOiAnXFx1RjRGNycsXG4gICAgICAgICAgICAnQWxpZ25WZXJ0aWNhbEJvdHRvbSc6ICdcXHVGNEY4JyxcbiAgICAgICAgICAgICdIb3Jpem9udGFsRGlzdHJpYnV0ZUNlbnRlcic6ICdcXHVGNEY5JyxcbiAgICAgICAgICAgICdWZXJ0aWNhbERpc3RyaWJ1dGVDZW50ZXInOiAnXFx1RjRGQScsXG4gICAgICAgICAgICAnRWxsaXBzZSc6ICdcXHVGNEZCJyxcbiAgICAgICAgICAgICdMaW5lJzogJ1xcdUY0RkMnLFxuICAgICAgICAgICAgJ09jdGFnb24nOiAnXFx1RjRGRCcsXG4gICAgICAgICAgICAnSGV4YWdvbic6ICdcXHVGNEZFJyxcbiAgICAgICAgICAgICdQZW50YWdvbic6ICdcXHVGNEZGJyxcbiAgICAgICAgICAgICdSaWdodFRyaWFuZ2xlJzogJ1xcdUY1MDAnLFxuICAgICAgICAgICAgJ0hhbGZDaXJjbGUnOiAnXFx1RjUwMScsXG4gICAgICAgICAgICAnUXVhcnRlckNpcmNsZSc6ICdcXHVGNTAyJyxcbiAgICAgICAgICAgICdUaHJlZVF1YXJ0ZXJDaXJjbGUnOiAnXFx1RjUwMycsXG4gICAgICAgICAgICAnNlBvaW50U3Rhcic6ICdcXHVGNTA0JyxcbiAgICAgICAgICAgICcxMlBvaW50U3Rhcic6ICdcXHVGNTA1JyxcbiAgICAgICAgICAgICdBcnJhbmdlQnJpbmdUb0Zyb250JzogJ1xcdUY1MDYnLFxuICAgICAgICAgICAgJ0FycmFuZ2VTZW5kVG9CYWNrJzogJ1xcdUY1MDcnLFxuICAgICAgICAgICAgJ0FycmFuZ2VTZW5kQmFja3dhcmQnOiAnXFx1RjUwOCcsXG4gICAgICAgICAgICAnQXJyYW5nZUJyaW5nRm9yd2FyZCc6ICdcXHVGNTA5JyxcbiAgICAgICAgICAgICdCb3JkZXJEYXNoJzogJ1xcdUY1MEEnLFxuICAgICAgICAgICAgJ0JvcmRlckRvdCc6ICdcXHVGNTBCJyxcbiAgICAgICAgICAgICdMaW5lU3R5bGUnOiAnXFx1RjUwQycsXG4gICAgICAgICAgICAnTGluZVRoaWNrbmVzcyc6ICdcXHVGNTBEJyxcbiAgICAgICAgICAgICdXaW5kb3dFZGl0JzogJ1xcdUY1MEUnLFxuICAgICAgICAgICAgJ0hpbnRUZXh0JzogJ1xcdUY1MEYnLFxuICAgICAgICAgICAgJ01lZGlhQWRkJzogJ1xcdUY1MTAnLFxuICAgICAgICAgICAgJ0FuY2hvckxvY2snOiAnXFx1RjUxMScsXG4gICAgICAgICAgICAnQXV0b0hlaWdodCc6ICdcXHVGNTEyJyxcbiAgICAgICAgICAgICdDaGFydFNlcmllcyc6ICdcXHVGNTEzJyxcbiAgICAgICAgICAgICdDaGFydFhBbmdsZSc6ICdcXHVGNTE0JyxcbiAgICAgICAgICAgICdDaGFydFlBbmdsZSc6ICdcXHVGNTE1JyxcbiAgICAgICAgICAgICdDb21ib2JveCc6ICdcXHVGNTE2JyxcbiAgICAgICAgICAgICdMaW5lU3BhY2luZyc6ICdcXHVGNTE3JyxcbiAgICAgICAgICAgICdQYWRkaW5nJzogJ1xcdUY1MTgnLFxuICAgICAgICAgICAgJ1BhZGRpbmdUb3AnOiAnXFx1RjUxOScsXG4gICAgICAgICAgICAnUGFkZGluZ0JvdHRvbSc6ICdcXHVGNTFBJyxcbiAgICAgICAgICAgICdQYWRkaW5nTGVmdCc6ICdcXHVGNTFCJyxcbiAgICAgICAgICAgICdQYWRkaW5nUmlnaHQnOiAnXFx1RjUxQycsXG4gICAgICAgICAgICAnTmF2aWdhdGlvbkZsaXBwZXInOiAnXFx1RjUxRCcsXG4gICAgICAgICAgICAnQWxpZ25KdXN0aWZ5JzogJ1xcdUY1MUUnLFxuICAgICAgICAgICAgJ1RleHRPdmVyZmxvdyc6ICdcXHVGNTFGJyxcbiAgICAgICAgICAgICdWaXN1YWxzRm9sZGVyJzogJ1xcdUY1MjAnLFxuICAgICAgICAgICAgJ1Zpc3VhbHNTdG9yZSc6ICdcXHVGNTIxJyxcbiAgICAgICAgICAgICdQaWN0dXJlQ2VudGVyJzogJ1xcdUY1MjInLFxuICAgICAgICAgICAgJ1BpY3R1cmVGaWxsJzogJ1xcdUY1MjMnLFxuICAgICAgICAgICAgJ1BpY3R1cmVQb3NpdGlvbic6ICdcXHVGNTI0JyxcbiAgICAgICAgICAgICdQaWN0dXJlU3RyZXRjaCc6ICdcXHVGNTI1JyxcbiAgICAgICAgICAgICdQaWN0dXJlVGlsZSc6ICdcXHVGNTI2JyxcbiAgICAgICAgICAgICdTbGlkZXInOiAnXFx1RjUyNycsXG4gICAgICAgICAgICAnU2xpZGVySGFuZGxlU2l6ZSc6ICdcXHVGNTI4JyxcbiAgICAgICAgICAgICdEZWZhdWx0UmF0aW8nOiAnXFx1RjUyOScsXG4gICAgICAgICAgICAnTnVtYmVyU2VxdWVuY2UnOiAnXFx1RjUyQScsXG4gICAgICAgICAgICAnR1VJRCc6ICdcXHVGNTJCJyxcbiAgICAgICAgICAgICdSZXBvcnRBZGQnOiAnXFx1RjUyQycsXG4gICAgICAgICAgICAnRGFzaGJvYXJkQWRkJzogJ1xcdUY1MkQnLFxuICAgICAgICAgICAgJ01hcFBpblNvbGlkJzogJ1xcdUY1MkUnLFxuICAgICAgICAgICAgJ1dlYlB1Ymxpc2gnOiAnXFx1RjUyRicsXG4gICAgICAgICAgICAnUGllU2luZ2xlU29saWQnOiAnXFx1RjUzMCcsXG4gICAgICAgICAgICAnQmxvY2tlZFNvbGlkJzogJ1xcdUY1MzEnLFxuICAgICAgICAgICAgJ0RyaWxsRG93bic6ICdcXHVGNTMyJyxcbiAgICAgICAgICAgICdEcmlsbERvd25Tb2xpZCc6ICdcXHVGNTMzJyxcbiAgICAgICAgICAgICdEcmlsbEV4cGFuZCc6ICdcXHVGNTM0JyxcbiAgICAgICAgICAgICdEcmlsbFNob3cnOiAnXFx1RjUzNScsXG4gICAgICAgICAgICAnU3BlY2lhbEV2ZW50JzogJ1xcdUY1MzYnLFxuICAgICAgICAgICAgJ09uZURyaXZlRm9sZGVyMTYnOiAnXFx1RjUzQicsXG4gICAgICAgICAgICAnRnVuY3Rpb25hbE1hbmFnZXJEYXNoYm9hcmQnOiAnXFx1RjU0MicsXG4gICAgICAgICAgICAnQklEYXNoYm9hcmQnOiAnXFx1RjU0MycsXG4gICAgICAgICAgICAnQ29kZUVkaXQnOiAnXFx1RjU0NCcsXG4gICAgICAgICAgICAnUmVuZXdhbEN1cnJlbnQnOiAnXFx1RjU0NScsXG4gICAgICAgICAgICAnUmVuZXdhbEZ1dHVyZSc6ICdcXHVGNTQ2JyxcbiAgICAgICAgICAgICdTcGxpdE9iamVjdCc6ICdcXHVGNTQ3JyxcbiAgICAgICAgICAgICdCdWxrVXBsb2FkJzogJ1xcdUY1NDgnLFxuICAgICAgICAgICAgJ0Rvd25sb2FkRG9jdW1lbnQnOiAnXFx1RjU0OScsXG4gICAgICAgICAgICAnR3JlZXRpbmdDYXJkJzogJ1xcdUY1NEInLFxuICAgICAgICAgICAgJ0Zsb3dlcic6ICdcXHVGNTRFJyxcbiAgICAgICAgICAgICdXYWl0bGlzdENvbmZpcm0nOiAnXFx1RjU1MCcsXG4gICAgICAgICAgICAnV2FpdGxpc3RDb25maXJtTWlycm9yZWQnOiAnXFx1RjU1MScsXG4gICAgICAgICAgICAnTGFwdG9wU2VjdXJlJzogJ1xcdUY1NTInLFxuICAgICAgICAgICAgJ0RyYWdPYmplY3QnOiAnXFx1RjU1MycsXG4gICAgICAgICAgICAnRW50cnlWaWV3JzogJ1xcdUY1NTQnLFxuICAgICAgICAgICAgJ0VudHJ5RGVjbGluZSc6ICdcXHVGNTU1JyxcbiAgICAgICAgICAgICdDb250YWN0Q2FyZFNldHRpbmdzJzogJ1xcdUY1NTYnLFxuICAgICAgICAgICAgJ0NvbnRhY3RDYXJkU2V0dGluZ3NNaXJyb3JlZCc6ICdcXHVGNTU3J1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZWdpc3Rlckljb25zKHN1YnNldCwgb3B0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mYWJyaWMtaWNvbnMtMTQuanMubWFwIiwiLy8gWW91ciB1c2Ugb2YgdGhlIGNvbnRlbnQgaW4gdGhlIGZpbGVzIHJlZmVyZW5jZWQgaGVyZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgbGljZW5zZSBhdCBodHRwczovL2FrYS5tcy9mbHVlbnR1aS1hc3NldHMtbGljZW5zZVxuaW1wb3J0IHsgcmVnaXN0ZXJJY29ucyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVJY29ucyhiYXNlVXJsLCBvcHRpb25zKSB7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gJyc7IH1cbiAgICB2YXIgc3Vic2V0ID0ge1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgTW96T3N4Rm9udFNtb290aGluZzogJ2dyYXlzY2FsZScsXG4gICAgICAgICAgICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAgICAgICAgICAgZm9udFN0eWxlOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgc3BlYWs6ICdub25lJ1xuICAgICAgICB9LFxuICAgICAgICBmb250RmFjZToge1xuICAgICAgICAgICAgZm9udEZhbWlseTogXCJcXFwiRmFicmljTURMMkljb25zLTE1XFxcIlwiLFxuICAgICAgICAgICAgc3JjOiBcInVybCgnXCIuY29uY2F0KGJhc2VVcmwsIFwiZmFicmljLWljb25zLTE1LTM4MDcyNTFiLndvZmYnKSBmb3JtYXQoJ3dvZmYnKVwiKVxuICAgICAgICB9LFxuICAgICAgICBpY29uczoge1xuICAgICAgICAgICAgJ0NhbGVuZGFyU2V0dGluZ3MnOiAnXFx1RjU1OCcsXG4gICAgICAgICAgICAnQ2FsZW5kYXJTZXR0aW5nc01pcnJvcmVkJzogJ1xcdUY1NTknLFxuICAgICAgICAgICAgJ0hhcmREcml2ZUxvY2snOiAnXFx1RjU1QScsXG4gICAgICAgICAgICAnSGFyZERyaXZlVW5sb2NrJzogJ1xcdUY1NUInLFxuICAgICAgICAgICAgJ0FjY291bnRNYW5hZ2VtZW50JzogJ1xcdUY1NUMnLFxuICAgICAgICAgICAgJ1JlcG9ydFdhcm5pbmcnOiAnXFx1RjU2OScsXG4gICAgICAgICAgICAnVHJhbnNpdGlvblBvcCc6ICdcXHVGNUIyJyxcbiAgICAgICAgICAgICdUcmFuc2l0aW9uUHVzaCc6ICdcXHVGNUIzJyxcbiAgICAgICAgICAgICdUcmFuc2l0aW9uRWZmZWN0JzogJ1xcdUY1QjQnLFxuICAgICAgICAgICAgJ0xvb2t1cEVudGl0aWVzJzogJ1xcdUY1QjUnLFxuICAgICAgICAgICAgJ0V4cGxvcmVEYXRhJzogJ1xcdUY1QjYnLFxuICAgICAgICAgICAgJ0FkZEJvb2ttYXJrJzogJ1xcdUY1QjcnLFxuICAgICAgICAgICAgJ1NlYXJjaEJvb2ttYXJrJzogJ1xcdUY1QjgnLFxuICAgICAgICAgICAgJ0RyaWxsVGhyb3VnaCc6ICdcXHVGNUI5JyxcbiAgICAgICAgICAgICdNYXN0ZXJEYXRhYmFzZSc6ICdcXHVGNUJBJyxcbiAgICAgICAgICAgICdDZXJ0aWZpZWREYXRhYmFzZSc6ICdcXHVGNUJCJyxcbiAgICAgICAgICAgICdNYXhpbXVtVmFsdWUnOiAnXFx1RjVCQycsXG4gICAgICAgICAgICAnTWluaW11bVZhbHVlJzogJ1xcdUY1QkQnLFxuICAgICAgICAgICAgJ1Zpc3VhbFN0dWRpb0lERUxvZ28zMic6ICdcXHVGNUQwJyxcbiAgICAgICAgICAgICdQYXN0ZUFzVGV4dCc6ICdcXHVGNUQ1JyxcbiAgICAgICAgICAgICdQYXN0ZUFzQ29kZSc6ICdcXHVGNUQ2JyxcbiAgICAgICAgICAgICdCcm93c2VyVGFiJzogJ1xcdUY1RDcnLFxuICAgICAgICAgICAgJ0Jyb3dzZXJUYWJTY3JlZW5zaG90JzogJ1xcdUY1RDgnLFxuICAgICAgICAgICAgJ0Rlc2t0b3BTY3JlZW5zaG90JzogJ1xcdUY1RDknLFxuICAgICAgICAgICAgJ0ZpbGVZTUwnOiAnXFx1RjVEQScsXG4gICAgICAgICAgICAnQ2xpcGJvYXJkU29saWQnOiAnXFx1RjVEQycsXG4gICAgICAgICAgICAnRmFicmljVXNlckZvbGRlcic6ICdcXHVGNUU1JyxcbiAgICAgICAgICAgICdGYWJyaWNOZXR3b3JrRm9sZGVyJzogJ1xcdUY1RTYnLFxuICAgICAgICAgICAgJ0J1bGxzZXllVGFyZ2V0JzogJ1xcdUY1RjAnLFxuICAgICAgICAgICAgJ0FuYWx5dGljc1ZpZXcnOiAnXFx1RjVGMScsXG4gICAgICAgICAgICAnVmlkZW8zNjBHZW5lcmljJzogJ1xcdUY2MDknLFxuICAgICAgICAgICAgJ1VudGFnJzogJ1xcdUY2MEInLFxuICAgICAgICAgICAgJ0xlYXZlJzogJ1xcdUY2MjcnLFxuICAgICAgICAgICAgJ1RyZW5kaW5nMTInOiAnXFx1RjYyRCcsXG4gICAgICAgICAgICAnQmxvY2tlZDEyJzogJ1xcdUY2MkUnLFxuICAgICAgICAgICAgJ1dhcm5pbmcxMic6ICdcXHVGNjJGJyxcbiAgICAgICAgICAgICdDaGVja2VkT3V0QnlPdGhlcjEyJzogJ1xcdUY2MzAnLFxuICAgICAgICAgICAgJ0NoZWNrZWRPdXRCeVlvdTEyJzogJ1xcdUY2MzEnLFxuICAgICAgICAgICAgJ0NpcmNsZVNoYXBlU29saWQnOiAnXFx1RjYzQycsXG4gICAgICAgICAgICAnU3F1YXJlU2hhcGVTb2xpZCc6ICdcXHVGNjNEJyxcbiAgICAgICAgICAgICdUcmlhbmdsZVNoYXBlU29saWQnOiAnXFx1RjYzRScsXG4gICAgICAgICAgICAnRHJvcFNoYXBlU29saWQnOiAnXFx1RjYzRicsXG4gICAgICAgICAgICAnUmVjdGFuZ2xlU2hhcGVTb2xpZCc6ICdcXHVGNjQwJyxcbiAgICAgICAgICAgICdab29tVG9GaXQnOiAnXFx1RjY0OScsXG4gICAgICAgICAgICAnSW5zZXJ0Q29sdW1uc0xlZnQnOiAnXFx1RjY0QScsXG4gICAgICAgICAgICAnSW5zZXJ0Q29sdW1uc1JpZ2h0JzogJ1xcdUY2NEInLFxuICAgICAgICAgICAgJ0luc2VydFJvd3NBYm92ZSc6ICdcXHVGNjRDJyxcbiAgICAgICAgICAgICdJbnNlcnRSb3dzQmVsb3cnOiAnXFx1RjY0RCcsXG4gICAgICAgICAgICAnRGVsZXRlQ29sdW1ucyc6ICdcXHVGNjRFJyxcbiAgICAgICAgICAgICdEZWxldGVSb3dzJzogJ1xcdUY2NEYnLFxuICAgICAgICAgICAgJ0RlbGV0ZVJvd3NNaXJyb3JlZCc6ICdcXHVGNjUwJyxcbiAgICAgICAgICAgICdEZWxldGVUYWJsZSc6ICdcXHVGNjUxJyxcbiAgICAgICAgICAgICdBY2NvdW50QnJvd3Nlcic6ICdcXHVGNjUyJyxcbiAgICAgICAgICAgICdWZXJzaW9uQ29udHJvbFB1c2gnOiAnXFx1RjY2NCcsXG4gICAgICAgICAgICAnU3RhY2tlZENvbHVtbkNoYXJ0Mic6ICdcXHVGNjY2JyxcbiAgICAgICAgICAgICdUcmlwbGVDb2x1bW5XaWRlJzogJ1xcdUY2NkUnLFxuICAgICAgICAgICAgJ1F1YWRDb2x1bW4nOiAnXFx1RjY2RicsXG4gICAgICAgICAgICAnV2hpdGVCb2FyZEFwcDE2JzogJ1xcdUY2NzMnLFxuICAgICAgICAgICAgJ1doaXRlQm9hcmRBcHAzMic6ICdcXHVGNjc0JyxcbiAgICAgICAgICAgICdQaW5uZWRTb2xpZCc6ICdcXHVGNjc2JyxcbiAgICAgICAgICAgICdJbnNlcnRTaWduYXR1cmVMaW5lJzogJ1xcdUY2NzcnLFxuICAgICAgICAgICAgJ0FycmFuZ2VCeUZyb20nOiAnXFx1RjY3OCcsXG4gICAgICAgICAgICAnUGhpc2hpbmcnOiAnXFx1RjY3OScsXG4gICAgICAgICAgICAnQ3JlYXRlTWFpbFJ1bGUnOiAnXFx1RjY3QScsXG4gICAgICAgICAgICAnUHVibGlzaENvdXJzZSc6ICdcXHVGNjk5JyxcbiAgICAgICAgICAgICdEaWN0aW9uYXJ5UmVtb3ZlJzogJ1xcdUY2OUEnLFxuICAgICAgICAgICAgJ1VzZXJSZW1vdmUnOiAnXFx1RjY5QicsXG4gICAgICAgICAgICAnVXNlckV2ZW50JzogJ1xcdUY2OUMnLFxuICAgICAgICAgICAgJ0VuY3J5cHRpb24nOiAnXFx1RjY5RCcsXG4gICAgICAgICAgICAnUGFzc3dvcmRGaWVsZCc6ICdcXHVGNkFBJyxcbiAgICAgICAgICAgICdPcGVuSW5OZXdUYWInOiAnXFx1RjZBQicsXG4gICAgICAgICAgICAnSGlkZTMnOiAnXFx1RjZBQycsXG4gICAgICAgICAgICAnVmVyaWZpZWRCcmFuZFNvbGlkJzogJ1xcdUY2QUQnLFxuICAgICAgICAgICAgJ01hcmtBc1Byb3RlY3RlZCc6ICdcXHVGNkFFJyxcbiAgICAgICAgICAgICdBdXRoZW50aWNhdG9yQXBwJzogJ1xcdUY2QjEnLFxuICAgICAgICAgICAgJ1dlYlRlbXBsYXRlJzogJ1xcdUY2QjInLFxuICAgICAgICAgICAgJ0RlZmVuZGVyVFZNJzogJ1xcdUY2QjMnLFxuICAgICAgICAgICAgJ01lZGFsU29saWQnOiAnXFx1RjZCOScsXG4gICAgICAgICAgICAnRDM2NVRhbGVudExlYXJuJzogJ1xcdUY2QkInLFxuICAgICAgICAgICAgJ0QzNjVUYWxlbnRJbnNpZ2h0JzogJ1xcdUY2QkMnLFxuICAgICAgICAgICAgJ0QzNjVUYWxlbnRIUkNvcmUnOiAnXFx1RjZCRCcsXG4gICAgICAgICAgICAnQmFja2xvZ0xpc3QnOiAnXFx1RjZCRicsXG4gICAgICAgICAgICAnQnV0dG9uQ29udHJvbCc6ICdcXHVGNkMwJyxcbiAgICAgICAgICAgICdUYWJsZUdyb3VwJzogJ1xcdUY2RDknLFxuICAgICAgICAgICAgJ01vdW50YWluQ2xpbWJpbmcnOiAnXFx1RjZEQicsXG4gICAgICAgICAgICAnVGFnVW5rbm93bic6ICdcXHVGNkRGJyxcbiAgICAgICAgICAgICdUYWdVbmtub3duTWlycm9yJzogJ1xcdUY2RTAnLFxuICAgICAgICAgICAgJ1RhZ1Vua25vd24xMic6ICdcXHVGNkUxJyxcbiAgICAgICAgICAgICdUYWdVbmtub3duMTJNaXJyb3InOiAnXFx1RjZFMicsXG4gICAgICAgICAgICAnTGluazEyJzogJ1xcdUY2RTMnLFxuICAgICAgICAgICAgJ1ByZXNlbnRhdGlvbic6ICdcXHVGNkU0JyxcbiAgICAgICAgICAgICdQcmVzZW50YXRpb24xMic6ICdcXHVGNkU1JyxcbiAgICAgICAgICAgICdMb2NrMTInOiAnXFx1RjZFNicsXG4gICAgICAgICAgICAnQnVpbGREZWZpbml0aW9uJzogJ1xcdUY2RTknLFxuICAgICAgICAgICAgJ1JlbGVhc2VEZWZpbml0aW9uJzogJ1xcdUY2RUEnLFxuICAgICAgICAgICAgJ1NhdmVUZW1wbGF0ZSc6ICdcXHVGNkVDJyxcbiAgICAgICAgICAgICdVc2VyR2F1Z2UnOiAnXFx1RjZFRCcsXG4gICAgICAgICAgICAnQmxvY2tlZFNpdGVTb2xpZDEyJzogJ1xcdUY3MEEnLFxuICAgICAgICAgICAgJ1RhZ1NvbGlkJzogJ1xcdUY3MEUnLFxuICAgICAgICAgICAgJ09mZmljZUNoYXQnOiAnXFx1RjcwRidcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTE1LmpzLm1hcCIsIi8vIFlvdXIgdXNlIG9mIHRoZSBjb250ZW50IGluIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgYXQgaHR0cHM6Ly9ha2EubXMvZmx1ZW50dWktYXNzZXRzLWxpY2Vuc2VcbmltcG9ydCB7IHJlZ2lzdGVySWNvbnMgfSBmcm9tICdAZmx1ZW50dWkvc3R5bGUtdXRpbGl0aWVzJztcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIGlmIChiYXNlVXJsID09PSB2b2lkIDApIHsgYmFzZVVybCA9ICcnOyB9XG4gICAgdmFyIHN1YnNldCA9IHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAgICAgICAgICAgV2Via2l0Rm9udFNtb290aGluZzogJ2FudGlhbGlhc2VkJyxcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ25vcm1hbCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICAgICAgICAgIHNwZWFrOiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgZm9udEZhY2U6IHtcbiAgICAgICAgICAgIGZvbnRGYW1pbHk6IFwiXFxcIkZhYnJpY01ETDJJY29ucy0xNlxcXCJcIixcbiAgICAgICAgICAgIHNyYzogXCJ1cmwoJ1wiLmNvbmNhdChiYXNlVXJsLCBcImZhYnJpYy1pY29ucy0xNi05Y2Y5M2YzYi53b2ZmJykgZm9ybWF0KCd3b2ZmJylcIilcbiAgICAgICAgfSxcbiAgICAgICAgaWNvbnM6IHtcbiAgICAgICAgICAgICdPZmZpY2VDaGF0U29saWQnOiAnXFx1RjcxMCcsXG4gICAgICAgICAgICAnTWFpbFNjaGVkdWxlJzogJ1xcdUY3MkUnLFxuICAgICAgICAgICAgJ1dhcm5pbmdTb2xpZCc6ICdcXHVGNzM2JyxcbiAgICAgICAgICAgICdCbG9ja2VkMlNvbGlkJzogJ1xcdUY3MzcnLFxuICAgICAgICAgICAgJ1NreXBlQ2lyY2xlQXJyb3cnOiAnXFx1Rjc0NycsXG4gICAgICAgICAgICAnU2t5cGVBcnJvdyc6ICdcXHVGNzQ4JyxcbiAgICAgICAgICAgICdTeW5jU3RhdHVzJzogJ1xcdUY3NTEnLFxuICAgICAgICAgICAgJ1N5bmNTdGF0dXNTb2xpZCc6ICdcXHVGNzUyJyxcbiAgICAgICAgICAgICdQcm9qZWN0RG9jdW1lbnQnOiAnXFx1Rjc1OScsXG4gICAgICAgICAgICAnVG9Eb0xvZ29PdXRsaW5lJzogJ1xcdUY3NUInLFxuICAgICAgICAgICAgJ1Zpc2lvT25saW5lTG9nb0ZpbGwzMic6ICdcXHVGNzVGJyxcbiAgICAgICAgICAgICdWaXNpb09ubGluZUxvZ28zMic6ICdcXHVGNzYwJyxcbiAgICAgICAgICAgICdWaXNpb09ubGluZUxvZ29DbG91ZDMyJzogJ1xcdUY3NjEnLFxuICAgICAgICAgICAgJ1Zpc2lvRGlhZ3JhbVN5bmMnOiAnXFx1Rjc2MicsXG4gICAgICAgICAgICAnRXZlbnQxMic6ICdcXHVGNzYzJyxcbiAgICAgICAgICAgICdFdmVudERhdGVNaXNzZWQxMic6ICdcXHVGNzY0JyxcbiAgICAgICAgICAgICdVc2VyT3B0aW9uYWwnOiAnXFx1Rjc2NycsXG4gICAgICAgICAgICAnUmVzcG9uc2VzTWVudSc6ICdcXHVGNzY4JyxcbiAgICAgICAgICAgICdEb3VibGVEb3duQXJyb3cnOiAnXFx1Rjc2OScsXG4gICAgICAgICAgICAnRGlzdHJpYnV0ZURvd24nOiAnXFx1Rjc2QScsXG4gICAgICAgICAgICAnQm9va21hcmtSZXBvcnQnOiAnXFx1Rjc2QicsXG4gICAgICAgICAgICAnRmlsdGVyU2V0dGluZ3MnOiAnXFx1Rjc2QycsXG4gICAgICAgICAgICAnR3JpcHBlckRvdHNWZXJ0aWNhbCc6ICdcXHVGNzcyJyxcbiAgICAgICAgICAgICdNYWlsQXR0YWNoZWQnOiAnXFx1Rjc3NCcsXG4gICAgICAgICAgICAnQWRkSW4nOiAnXFx1Rjc3NScsXG4gICAgICAgICAgICAnTGlua2VkRGF0YWJhc2UnOiAnXFx1Rjc3OScsXG4gICAgICAgICAgICAnVGFibGVMaW5rJzogJ1xcdUY3N0EnLFxuICAgICAgICAgICAgJ1Byb21vdGVkRGF0YWJhc2UnOiAnXFx1Rjc3RCcsXG4gICAgICAgICAgICAnQmFyQ2hhcnRWZXJ0aWNhbEZpbHRlcic6ICdcXHVGNzdFJyxcbiAgICAgICAgICAgICdCYXJDaGFydFZlcnRpY2FsRmlsdGVyU29saWQnOiAnXFx1Rjc3RicsXG4gICAgICAgICAgICAnTWljT2ZmMic6ICdcXHVGNzgxJyxcbiAgICAgICAgICAgICdNaWNyb3NvZnRUcmFuc2xhdG9yTG9nbyc6ICdcXHVGNzgyJyxcbiAgICAgICAgICAgICdTaG93VGltZUFzJzogJ1xcdUY3ODcnLFxuICAgICAgICAgICAgJ0ZpbGVSZXF1ZXN0JzogJ1xcdUY3ODknLFxuICAgICAgICAgICAgJ1dvcmtJdGVtQWxlcnQnOiAnXFx1Rjc4RicsXG4gICAgICAgICAgICAnUG93ZXJCSUxvZ28xNic6ICdcXHVGNzkwJyxcbiAgICAgICAgICAgICdQb3dlckJJTG9nb0JhY2twbGF0ZTE2JzogJ1xcdUY3OTEnLFxuICAgICAgICAgICAgJ0J1bGxldGVkTGlzdFRleHQnOiAnXFx1Rjc5MicsXG4gICAgICAgICAgICAnQnVsbGV0ZWRMaXN0QnVsbGV0JzogJ1xcdUY3OTMnLFxuICAgICAgICAgICAgJ0J1bGxldGVkTGlzdFRleHRNaXJyb3JlZCc6ICdcXHVGNzk0JyxcbiAgICAgICAgICAgICdCdWxsZXRlZExpc3RCdWxsZXRNaXJyb3JlZCc6ICdcXHVGNzk1JyxcbiAgICAgICAgICAgICdOdW1iZXJlZExpc3RUZXh0JzogJ1xcdUY3OTYnLFxuICAgICAgICAgICAgJ051bWJlcmVkTGlzdE51bWJlcic6ICdcXHVGNzk3JyxcbiAgICAgICAgICAgICdOdW1iZXJlZExpc3RUZXh0TWlycm9yZWQnOiAnXFx1Rjc5OCcsXG4gICAgICAgICAgICAnTnVtYmVyZWRMaXN0TnVtYmVyTWlycm9yZWQnOiAnXFx1Rjc5OScsXG4gICAgICAgICAgICAnUmVtb3ZlTGlua0NoYWluJzogJ1xcdUY3OUEnLFxuICAgICAgICAgICAgJ1JlbW92ZUxpbmtYJzogJ1xcdUY3OUInLFxuICAgICAgICAgICAgJ0ZhYnJpY1RleHRIaWdobGlnaHQnOiAnXFx1Rjc5QycsXG4gICAgICAgICAgICAnQ2xlYXJGb3JtYXR0aW5nQSc6ICdcXHVGNzlEJyxcbiAgICAgICAgICAgICdDbGVhckZvcm1hdHRpbmdFcmFzZXInOiAnXFx1Rjc5RScsXG4gICAgICAgICAgICAnUGhvdG8yRmlsbCc6ICdcXHVGNzlGJyxcbiAgICAgICAgICAgICdJbmNyZWFzZUluZGVudFRleHQnOiAnXFx1RjdBMCcsXG4gICAgICAgICAgICAnSW5jcmVhc2VJbmRlbnRBcnJvdyc6ICdcXHVGN0ExJyxcbiAgICAgICAgICAgICdEZWNyZWFzZUluZGVudFRleHQnOiAnXFx1RjdBMicsXG4gICAgICAgICAgICAnRGVjcmVhc2VJbmRlbnRBcnJvdyc6ICdcXHVGN0EzJyxcbiAgICAgICAgICAgICdJbmNyZWFzZUluZGVudFRleHRNaXJyb3JlZCc6ICdcXHVGN0E0JyxcbiAgICAgICAgICAgICdJbmNyZWFzZUluZGVudEFycm93TWlycm9yZWQnOiAnXFx1RjdBNScsXG4gICAgICAgICAgICAnRGVjcmVhc2VJbmRlbnRUZXh0TWlycm9yZWQnOiAnXFx1RjdBNicsXG4gICAgICAgICAgICAnRGVjcmVhc2VJbmRlbnRBcnJvd01pcnJvcmVkJzogJ1xcdUY3QTcnLFxuICAgICAgICAgICAgJ0NoZWNrTGlzdFRleHQnOiAnXFx1RjdBOCcsXG4gICAgICAgICAgICAnQ2hlY2tMaXN0Q2hlY2snOiAnXFx1RjdBOScsXG4gICAgICAgICAgICAnQ2hlY2tMaXN0VGV4dE1pcnJvcmVkJzogJ1xcdUY3QUEnLFxuICAgICAgICAgICAgJ0NoZWNrTGlzdENoZWNrTWlycm9yZWQnOiAnXFx1RjdBQicsXG4gICAgICAgICAgICAnTnVtYmVyU3ltYm9sJzogJ1xcdUY3QUMnLFxuICAgICAgICAgICAgJ0NvdXBvbic6ICdcXHVGN0JDJyxcbiAgICAgICAgICAgICdWZXJpZmllZEJyYW5kJzogJ1xcdUY3QkQnLFxuICAgICAgICAgICAgJ1JlbGVhc2VHYXRlJzogJ1xcdUY3QkUnLFxuICAgICAgICAgICAgJ1JlbGVhc2VHYXRlQ2hlY2snOiAnXFx1RjdCRicsXG4gICAgICAgICAgICAnUmVsZWFzZUdhdGVFcnJvcic6ICdcXHVGN0MwJyxcbiAgICAgICAgICAgICdNMzY1SW52b2ljaW5nTG9nbyc6ICdcXHVGN0MxJyxcbiAgICAgICAgICAgICdSZW1vdmVGcm9tU2hvcHBpbmdMaXN0JzogJ1xcdUY3RDUnLFxuICAgICAgICAgICAgJ1NoaWVsZEFsZXJ0JzogJ1xcdUY3RDcnLFxuICAgICAgICAgICAgJ0ZhYnJpY1RleHRIaWdobGlnaHRDb21wb3NpdGUnOiAnXFx1RjdEQScsXG4gICAgICAgICAgICAnRGF0YWZsb3dzJzogJ1xcdUY3REQnLFxuICAgICAgICAgICAgJ0dlbmVyaWNTY2FuRmlsbGVkJzogJ1xcdUY3REUnLFxuICAgICAgICAgICAgJ0RpYWdub3N0aWNEYXRhQmFyVG9vbHRpcCc6ICdcXHVGN0RGJyxcbiAgICAgICAgICAgICdTYXZlVG9Nb2JpbGUnOiAnXFx1RjdFMCcsXG4gICAgICAgICAgICAnT3JpZW50YXRpb24yJzogJ1xcdUY3RTEnLFxuICAgICAgICAgICAgJ1NjcmVlbkNhc3QnOiAnXFx1RjdFMicsXG4gICAgICAgICAgICAnU2hvd0dyaWQnOiAnXFx1RjdFMycsXG4gICAgICAgICAgICAnU25hcFRvR3JpZCc6ICdcXHVGN0U0JyxcbiAgICAgICAgICAgICdDb250YWN0TGlzdCc6ICdcXHVGN0U1JyxcbiAgICAgICAgICAgICdOZXdNYWlsJzogJ1xcdUY3RUEnLFxuICAgICAgICAgICAgJ0V5ZVNoYWRvdyc6ICdcXHVGN0VCJyxcbiAgICAgICAgICAgICdGYWJyaWNGb2xkZXJDb25maXJtJzogJ1xcdUY3RkYnLFxuICAgICAgICAgICAgJ0luZm9ybWF0aW9uQmFycmllcnMnOiAnXFx1RjgwMycsXG4gICAgICAgICAgICAnQ29tbWVudEFjdGl2ZSc6ICdcXHVGODA0JyxcbiAgICAgICAgICAgICdDb2x1bW5WZXJ0aWNhbFNlY3Rpb25FZGl0JzogJ1xcdUY4MDYnLFxuICAgICAgICAgICAgJ1dhdmluZ0hhbmQnOiAnXFx1RjgwNycsXG4gICAgICAgICAgICAnU2hha2VEZXZpY2UnOiAnXFx1RjgwQScsXG4gICAgICAgICAgICAnU21hcnRHbGFzc1JlbW90ZSc6ICdcXHVGODBCJyxcbiAgICAgICAgICAgICdSb3RhdGU5MENsb2Nrd2lzZSc6ICdcXHVGODBEJyxcbiAgICAgICAgICAgICdSb3RhdGU5MENvdW50ZXJDbG9ja3dpc2UnOiAnXFx1RjgwRScsXG4gICAgICAgICAgICAnQ2FtcGFpZ25UZW1wbGF0ZSc6ICdcXHVGODExJyxcbiAgICAgICAgICAgICdDaGFydFRlbXBsYXRlJzogJ1xcdUY4MTInLFxuICAgICAgICAgICAgJ1BhZ2VMaXN0RmlsdGVyJzogJ1xcdUY4MTMnLFxuICAgICAgICAgICAgJ1NlY29uZGFyeU5hdic6ICdcXHVGODE0JyxcbiAgICAgICAgICAgICdDb2x1bW5WZXJ0aWNhbFNlY3Rpb24nOiAnXFx1RjgxRScsXG4gICAgICAgICAgICAnU2t5cGVDaXJjbGVTbGFzaCc6ICdcXHVGODI1JyxcbiAgICAgICAgICAgICdTa3lwZVNsYXNoJzogJ1xcdUY4MjYnXG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlZ2lzdGVySWNvbnMoc3Vic2V0LCBvcHRpb25zKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZhYnJpYy1pY29ucy0xNi5qcy5tYXAiLCIvLyBZb3VyIHVzZSBvZiB0aGUgY29udGVudCBpbiB0aGUgZmlsZXMgcmVmZXJlbmNlZCBoZXJlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBsaWNlbnNlIGF0IGh0dHBzOi8vYWthLm1zL2ZsdWVudHVpLWFzc2V0cy1saWNlbnNlXG5pbXBvcnQgeyByZWdpc3Rlckljb25zIH0gZnJvbSAnQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcyc7XG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUljb25zKGJhc2VVcmwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYmFzZVVybCA9PT0gdm9pZCAwKSB7IGJhc2VVcmwgPSAnJzsgfVxuICAgIHZhciBzdWJzZXQgPSB7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBNb3pPc3hGb250U21vb3RoaW5nOiAnZ3JheXNjYWxlJyxcbiAgICAgICAgICAgIFdlYmtpdEZvbnRTbW9vdGhpbmc6ICdhbnRpYWxpYXNlZCcsXG4gICAgICAgICAgICBmb250U3R5bGU6ICdub3JtYWwnLFxuICAgICAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCcsXG4gICAgICAgICAgICBzcGVhazogJ25vbmUnXG4gICAgICAgIH0sXG4gICAgICAgIGZvbnRGYWNlOiB7XG4gICAgICAgICAgICBmb250RmFtaWx5OiBcIlxcXCJGYWJyaWNNREwySWNvbnMtMTdcXFwiXCIsXG4gICAgICAgICAgICBzcmM6IFwidXJsKCdcIi5jb25jYXQoYmFzZVVybCwgXCJmYWJyaWMtaWNvbnMtMTctMGM0ZWQ3MDEud29mZicpIGZvcm1hdCgnd29mZicpXCIpXG4gICAgICAgIH0sXG4gICAgICAgIGljb25zOiB7XG4gICAgICAgICAgICAnQ3VzdG9taXplVG9vbGJhcic6ICdcXHVGODI4JyxcbiAgICAgICAgICAgICdEdXBsaWNhdGVSb3cnOiAnXFx1RjgyQScsXG4gICAgICAgICAgICAnUmVtb3ZlRnJvbVRyYXNoJzogJ1xcdUY4MkInLFxuICAgICAgICAgICAgJ01haWxPcHRpb25zJzogJ1xcdUY4MkMnLFxuICAgICAgICAgICAgJ0NoaWxkb2YnOiAnXFx1RjgyRCcsXG4gICAgICAgICAgICAnRm9vdGVyJzogJ1xcdUY4MkUnLFxuICAgICAgICAgICAgJ0hlYWRlcic6ICdcXHVGODJGJyxcbiAgICAgICAgICAgICdCYXJDaGFydFZlcnRpY2FsRmlsbCc6ICdcXHVGODMwJyxcbiAgICAgICAgICAgICdTdGFja2VkQ29sdW1uQ2hhcnQyRmlsbCc6ICdcXHVGODMxJyxcbiAgICAgICAgICAgICdQbGFpblRleHQnOiAnXFx1RjgzNCcsXG4gICAgICAgICAgICAnQWNjZXNzaWJpbHR5Q2hlY2tlcic6ICdcXHVGODM1JyxcbiAgICAgICAgICAgICdEYXRhYmFzZVN5bmMnOiAnXFx1Rjg0MicsXG4gICAgICAgICAgICAnUmVzZXJ2YXRpb25PcmRlcnMnOiAnXFx1Rjg0NScsXG4gICAgICAgICAgICAnVGFiT25lQ29sdW1uJzogJ1xcdUY4NDknLFxuICAgICAgICAgICAgJ1RhYlR3b0NvbHVtbic6ICdcXHVGODRBJyxcbiAgICAgICAgICAgICdUYWJUaHJlZUNvbHVtbic6ICdcXHVGODRCJyxcbiAgICAgICAgICAgICdCdWxsZXRlZFRyZWVMaXN0JzogJ1xcdUY4NEMnLFxuICAgICAgICAgICAgJ01pY3Jvc29mdFRyYW5zbGF0b3JMb2dvR3JlZW4nOiAnXFx1Rjg1MicsXG4gICAgICAgICAgICAnTWljcm9zb2Z0VHJhbnNsYXRvckxvZ29CbHVlJzogJ1xcdUY4NTMnLFxuICAgICAgICAgICAgJ0ludGVybmFsSW52ZXN0aWdhdGlvbic6ICdcXHVGODU0JyxcbiAgICAgICAgICAgICdBZGRSZWFjdGlvbic6ICdcXHVGODVEJyxcbiAgICAgICAgICAgICdDb250YWN0SGVhcnQnOiAnXFx1Rjg2MicsXG4gICAgICAgICAgICAnVmlzdWFsbHlJbXBhaXJlZCc6ICdcXHVGODY2JyxcbiAgICAgICAgICAgICdFdmVudFRvRG9Mb2dvJzogJ1xcdUY4NjknLFxuICAgICAgICAgICAgJ1ZhcmlhYmxlMic6ICdcXHVGODZEJyxcbiAgICAgICAgICAgICdNb2RlbGluZ1ZpZXcnOiAnXFx1Rjg3MScsXG4gICAgICAgICAgICAnRGlzY29ubmVjdFZpcnR1YWxNYWNoaW5lJzogJ1xcdUY4NzMnLFxuICAgICAgICAgICAgJ1JlcG9ydExvY2snOiAnXFx1Rjg3NScsXG4gICAgICAgICAgICAnVW5lZGl0YWJsZTInOiAnXFx1Rjg3NicsXG4gICAgICAgICAgICAnVW5lZGl0YWJsZTJNaXJyb3JlZCc6ICdcXHVGODc3JyxcbiAgICAgICAgICAgICdCYXJDaGFydFZlcnRpY2FsRWRpdCc6ICdcXHVGODlEJyxcbiAgICAgICAgICAgICdHbG9iYWxOYXZCdXR0b25BY3RpdmUnOiAnXFx1Rjg5RicsXG4gICAgICAgICAgICAnUG9sbFJlc3VsdHMnOiAnXFx1RjhBMCcsXG4gICAgICAgICAgICAnUmVydW4nOiAnXFx1RjhBMScsXG4gICAgICAgICAgICAnUWFuZEEnOiAnXFx1RjhBMicsXG4gICAgICAgICAgICAnUWFuZEFNaXJyb3InOiAnXFx1RjhBMycsXG4gICAgICAgICAgICAnQm9va0Fuc3dlcnMnOiAnXFx1RjhBNCcsXG4gICAgICAgICAgICAnQWxlcnRTZXR0aW5ncyc6ICdcXHVGOEI2JyxcbiAgICAgICAgICAgICdUcmltU3RhcnQnOiAnXFx1RjhCQicsXG4gICAgICAgICAgICAnVHJpbUVuZCc6ICdcXHVGOEJDJyxcbiAgICAgICAgICAgICdUYWJsZUNvbXB1dGVkJzogJ1xcdUY4RjUnLFxuICAgICAgICAgICAgJ0RlY3JlYXNlSW5kZW50TGVnYWN5JzogJ1xcdUUyOTAnLFxuICAgICAgICAgICAgJ0luY3JlYXNlSW5kZW50TGVnYWN5JzogJ1xcdUUyOTEnLFxuICAgICAgICAgICAgJ1NpemVMZWdhY3knOiAnXFx1RTJCMidcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVnaXN0ZXJJY29ucyhzdWJzZXQsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZmFicmljLWljb25zLTE3LmpzLm1hcCIsImltcG9ydCB7IHJlZ2lzdGVySWNvbkFsaWFzIH0gZnJvbSAnQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcyc7XG5leHBvcnQgdmFyIHJlZ2lzdGVySWNvbkFsaWFzZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmVnaXN0ZXJJY29uQWxpYXMoJ3RyYXNoJywgJ2RlbGV0ZScpO1xuICAgIHJlZ2lzdGVySWNvbkFsaWFzKCdvbmVkcml2ZScsICdvbmVkcml2ZWxvZ28nKTtcbiAgICByZWdpc3Rlckljb25BbGlhcygnYWxlcnRzb2xpZDEyJywgJ2V2ZW50ZGF0ZW1pc3NlZDEyJyk7XG4gICAgcmVnaXN0ZXJJY29uQWxpYXMoJ3NpeHBvaW50c3RhcicsICc2cG9pbnRzdGFyJyk7XG4gICAgcmVnaXN0ZXJJY29uQWxpYXMoJ3R3ZWx2ZXBvaW50c3RhcicsICcxMnBvaW50c3RhcicpO1xuICAgIHJlZ2lzdGVySWNvbkFsaWFzKCd0b2dnbGVvbicsICd0b2dnbGVsZWZ0Jyk7XG4gICAgcmVnaXN0ZXJJY29uQWxpYXMoJ3RvZ2dsZW9mZicsICd0b2dnbGVyaWdodCcpO1xufTtcbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVySWNvbkFsaWFzZXM7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pY29uQWxpYXNlcy5qcy5tYXAiLCIvLyBEbyBub3QgbW9kaWZ5IHRoaXMgZmlsZTsgaXQgaXMgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgcHVibGlzaC5cbi8vIFRoZSBjaGVja2VkIGluIHZlcnNpb24gaXMgYSBwbGFjZWhvbGRlciBvbmx5IGFuZCB3aWxsIG5vdCBiZSB1cGRhdGVkLlxuaW1wb3J0IHsgc2V0VmVyc2lvbiB9IGZyb20gJ0BmbHVlbnR1aS9zZXQtdmVyc2lvbic7XG5zZXRWZXJzaW9uKCdAZmx1ZW50dWkvZm9udC1pY29ucy1tZGwyJywgJzguNS4yNCcpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiLCJpbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaSB9IGZyb20gJy4vZmFicmljLWljb25zJztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpMCB9IGZyb20gJy4vZmFicmljLWljb25zLTAnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGkxIH0gZnJvbSAnLi9mYWJyaWMtaWNvbnMtMSc7XG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaTIgfSBmcm9tICcuL2ZhYnJpYy1pY29ucy0yJztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpMyB9IGZyb20gJy4vZmFicmljLWljb25zLTMnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGk0IH0gZnJvbSAnLi9mYWJyaWMtaWNvbnMtNCc7XG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaTUgfSBmcm9tICcuL2ZhYnJpYy1pY29ucy01JztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpNiB9IGZyb20gJy4vZmFicmljLWljb25zLTYnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGk3IH0gZnJvbSAnLi9mYWJyaWMtaWNvbnMtNyc7XG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaTggfSBmcm9tICcuL2ZhYnJpYy1pY29ucy04JztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpOSB9IGZyb20gJy4vZmFicmljLWljb25zLTknO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGkxMCB9IGZyb20gJy4vZmFicmljLWljb25zLTEwJztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpMTEgfSBmcm9tICcuL2ZhYnJpYy1pY29ucy0xMSc7XG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaTEyIH0gZnJvbSAnLi9mYWJyaWMtaWNvbnMtMTInO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGkxMyB9IGZyb20gJy4vZmFicmljLWljb25zLTEzJztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpMTQgfSBmcm9tICcuL2ZhYnJpYy1pY29ucy0xNCc7XG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgYXMgaTE1IH0gZnJvbSAnLi9mYWJyaWMtaWNvbnMtMTUnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIGFzIGkxNiB9IGZyb20gJy4vZmFicmljLWljb25zLTE2JztcbmltcG9ydCB7IGluaXRpYWxpemVJY29ucyBhcyBpMTcgfSBmcm9tICcuL2ZhYnJpYy1pY29ucy0xNyc7XG5pbXBvcnQgeyBGTFVFTlRfQ0ROX0JBU0VfVVJMIH0gZnJvbSAnQGZsdWVudHVpL3N0eWxlLXV0aWxpdGllcyc7XG5pbXBvcnQgeyByZWdpc3Rlckljb25BbGlhc2VzIH0gZnJvbSAnLi9pY29uQWxpYXNlcyc7XG5pbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICdAZmx1ZW50dWkvdXRpbGl0aWVzJztcbnZhciBERUZBVUxUX0JBU0VfVVJMID0gXCJcIi5jb25jYXQoRkxVRU5UX0NETl9CQVNFX1VSTCwgXCIvYXNzZXRzL2ljb25zL1wiKTtcbnZhciB3aW4gPSBnZXRXaW5kb3coKTtcbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplSWNvbnMoYmFzZVVybCwgb3B0aW9ucykge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKGJhc2VVcmwgPT09IHZvaWQgMCkgeyBiYXNlVXJsID0gKChfYSA9IHdpbiA9PT0gbnVsbCB8fCB3aW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdpbi5GYWJyaWNDb25maWcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pY29uQmFzZVVybCkgfHwgKChfYiA9IHdpbiA9PT0gbnVsbCB8fCB3aW4gPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdpbi5GYWJyaWNDb25maWcpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb250QmFzZVVybCkgfHwgREVGQVVMVF9CQVNFX1VSTDsgfVxuICAgIFtpLCBpMCwgaTEsIGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4LCBpOSwgaTEwLCBpMTEsIGkxMiwgaTEzLCBpMTQsIGkxNSwgaTE2LCBpMTddLmZvckVhY2goZnVuY3Rpb24gKGluaXRpYWxpemUpIHsgcmV0dXJuIGluaXRpYWxpemUoYmFzZVVybCwgb3B0aW9ucyk7IH0pO1xuICAgIHJlZ2lzdGVySWNvbkFsaWFzZXMoKTtcbn1cbi8qIGVzbGludC1lbmFibGUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb24gKi9cbmltcG9ydCAnLi92ZXJzaW9uJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8qKlxuICoge0Bkb2NDYXRlZ29yeSBNZXNzYWdlQmFyfVxuICovXG5leHBvcnQgdmFyIE1lc3NhZ2VCYXJUeXBlO1xuKGZ1bmN0aW9uIChNZXNzYWdlQmFyVHlwZSkge1xuICAgIC8qKiBJbmZvIHN0eWxlZCBNZXNzYWdlQmFyICovXG4gICAgTWVzc2FnZUJhclR5cGVbTWVzc2FnZUJhclR5cGVbXCJpbmZvXCJdID0gMF0gPSBcImluZm9cIjtcbiAgICAvKiogRXJyb3Igc3R5bGVkIE1lc3NhZ2VCYXIgKi9cbiAgICBNZXNzYWdlQmFyVHlwZVtNZXNzYWdlQmFyVHlwZVtcImVycm9yXCJdID0gMV0gPSBcImVycm9yXCI7XG4gICAgLyoqIEJsb2NrZWQgc3R5bGVkIE1lc3NhZ2VCYXIgKi9cbiAgICBNZXNzYWdlQmFyVHlwZVtNZXNzYWdlQmFyVHlwZVtcImJsb2NrZWRcIl0gPSAyXSA9IFwiYmxvY2tlZFwiO1xuICAgIC8qKiBTZXZlcmVXYXJuaW5nIHN0eWxlZCBNZXNzYWdlQmFyICovXG4gICAgTWVzc2FnZUJhclR5cGVbTWVzc2FnZUJhclR5cGVbXCJzZXZlcmVXYXJuaW5nXCJdID0gM10gPSBcInNldmVyZVdhcm5pbmdcIjtcbiAgICAvKiogU3VjY2VzcyBzdHlsZWQgTWVzc2FnZUJhciAqL1xuICAgIE1lc3NhZ2VCYXJUeXBlW01lc3NhZ2VCYXJUeXBlW1wic3VjY2Vzc1wiXSA9IDRdID0gXCJzdWNjZXNzXCI7XG4gICAgLyoqIFdhcm5pbmcgc3R5bGVkIE1lc3NhZ2VCYXIgKi9cbiAgICBNZXNzYWdlQmFyVHlwZVtNZXNzYWdlQmFyVHlwZVtcIndhcm5pbmdcIl0gPSA1XSA9IFwid2FybmluZ1wiO1xufSkoTWVzc2FnZUJhclR5cGUgfHwgKE1lc3NhZ2VCYXJUeXBlID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU1lc3NhZ2VCYXIudHlwZXMuanMubWFwIiwidmFyIF9hO1xuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IERlbGF5ZWRSZW5kZXIsIGNsYXNzTmFtZXNGdW5jdGlvbiwgZ2V0TmF0aXZlUHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcywgY3NzIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL0ljb24nO1xuaW1wb3J0IHsgTWVzc2FnZUJhclR5cGUgfSBmcm9tICcuL01lc3NhZ2VCYXIudHlwZXMnO1xuaW1wb3J0IHsgdXNlSWQsIHVzZUJvb2xlYW4gfSBmcm9tICdAZmx1ZW50dWkvcmVhY3QtaG9va3MnO1xudmFyIElDT05fTUFQID0gKF9hID0ge30sXG4gICAgX2FbTWVzc2FnZUJhclR5cGUuaW5mb10gPSAnSW5mbycsXG4gICAgX2FbTWVzc2FnZUJhclR5cGUud2FybmluZ10gPSAnSW5mbycsXG4gICAgX2FbTWVzc2FnZUJhclR5cGUuZXJyb3JdID0gJ0Vycm9yQmFkZ2UnLFxuICAgIF9hW01lc3NhZ2VCYXJUeXBlLmJsb2NrZWRdID0gJ0Jsb2NrZWQyJyxcbiAgICBfYVtNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nXSA9ICdXYXJuaW5nJyxcbiAgICBfYVtNZXNzYWdlQmFyVHlwZS5zdWNjZXNzXSA9ICdDb21wbGV0ZWQnLFxuICAgIF9hKTtcbnZhciBDT01QT05FTlRfTkFNRSA9ICdNZXNzYWdlQmFyJztcbnZhciBnZXRDbGFzc05hbWVzID0gY2xhc3NOYW1lc0Z1bmN0aW9uKCk7XG52YXIgZ2V0QW5ub3VuY2VtZW50UHJpb3JpdHkgPSBmdW5jdGlvbiAobWVzc2FnZUJhclR5cGUpIHtcbiAgICBzd2l0Y2ggKG1lc3NhZ2VCYXJUeXBlKSB7XG4gICAgICAgIGNhc2UgTWVzc2FnZUJhclR5cGUuYmxvY2tlZDpcbiAgICAgICAgY2FzZSBNZXNzYWdlQmFyVHlwZS5lcnJvcjpcbiAgICAgICAgY2FzZSBNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nOlxuICAgICAgICAgICAgcmV0dXJuICdhc3NlcnRpdmUnO1xuICAgIH1cbiAgICByZXR1cm4gJ3BvbGl0ZSc7XG59O1xudmFyIGdldFJvbGUgPSBmdW5jdGlvbiAobWVzc2FnZUJhclR5cGUpIHtcbiAgICBzd2l0Y2ggKG1lc3NhZ2VCYXJUeXBlKSB7XG4gICAgICAgIGNhc2UgTWVzc2FnZUJhclR5cGUuYmxvY2tlZDpcbiAgICAgICAgY2FzZSBNZXNzYWdlQmFyVHlwZS5lcnJvcjpcbiAgICAgICAgY2FzZSBNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nOlxuICAgICAgICAgICAgcmV0dXJuICdhbGVydCc7XG4gICAgfVxuICAgIHJldHVybiAnc3RhdHVzJztcbn07XG5leHBvcnQgdmFyIE1lc3NhZ2VCYXJCYXNlID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgIHZhciBfYSA9IHVzZUJvb2xlYW4oZmFsc2UpLCBleHBhbmRTaW5nbGVMaW5lID0gX2FbMF0sIHRvZ2dsZUV4cGFuZFNpbmdsZUxpbmUgPSBfYVsxXS50b2dnbGU7XG4gICAgdmFyIGxhYmVsSWQgPSB1c2VJZCgnTWVzc2FnZUJhcicpO1xuICAgIHZhciBhY3Rpb25zID0gcHJvcHMuYWN0aW9ucywgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBvdmVyZmxvd0J1dHRvbkFyaWFMYWJlbCA9IHByb3BzLm92ZXJmbG93QnV0dG9uQXJpYUxhYmVsLCBkaXNtaXNzSWNvblByb3BzID0gcHJvcHMuZGlzbWlzc0ljb25Qcm9wcywgc3R5bGVzID0gcHJvcHMuc3R5bGVzLCB0aGVtZSA9IHByb3BzLnRoZW1lLCBfYiA9IHByb3BzLm1lc3NhZ2VCYXJUeXBlLCBtZXNzYWdlQmFyVHlwZSA9IF9iID09PSB2b2lkIDAgPyBNZXNzYWdlQmFyVHlwZS5pbmZvIDogX2IsIF9jID0gcHJvcHMub25EaXNtaXNzLCBvbkRpc21pc3MgPSBfYyA9PT0gdm9pZCAwID8gdW5kZWZpbmVkIDogX2MsIF9kID0gcHJvcHMuaXNNdWx0aWxpbmUsIGlzTXVsdGlsaW5lID0gX2QgPT09IHZvaWQgMCA/IHRydWUgOiBfZCwgdHJ1bmNhdGVkID0gcHJvcHMudHJ1bmNhdGVkLCBkaXNtaXNzQnV0dG9uQXJpYUxhYmVsID0gcHJvcHMuZGlzbWlzc0J1dHRvbkFyaWFMYWJlbCwgbWVzc2FnZUJhckljb25Qcm9wcyA9IHByb3BzLm1lc3NhZ2VCYXJJY29uUHJvcHMsIHJvbGUgPSBwcm9wcy5yb2xlLCBfZSA9IHByb3BzLmRlbGF5ZWRSZW5kZXIsIGRlbGF5ZWRSZW5kZXIgPSBfZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9lLCBleHBhbmRCdXR0b25Qcm9wcyA9IHByb3BzLmV4cGFuZEJ1dHRvblByb3BzO1xuICAgIHZhciBuYXRpdmVQcm9wcyA9IGdldE5hdGl2ZVByb3BzKHByb3BzLCBodG1sRWxlbWVudFByb3BlcnRpZXMsIFtcbiAgICAgICAgJ2NsYXNzTmFtZScsXG4gICAgICAgICdyb2xlJyxcbiAgICBdKTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldENsYXNzTmFtZXMoc3R5bGVzLCB7XG4gICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgbWVzc2FnZUJhclR5cGU6IG1lc3NhZ2VCYXJUeXBlIHx8IE1lc3NhZ2VCYXJUeXBlLmluZm8sXG4gICAgICAgIG9uRGlzbWlzczogb25EaXNtaXNzICE9PSB1bmRlZmluZWQsXG4gICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1bmNhdGVkOiB0cnVuY2F0ZWQsXG4gICAgICAgIGlzTXVsdGlsaW5lOiBpc011bHRpbGluZSxcbiAgICAgICAgZXhwYW5kU2luZ2xlTGluZTogZXhwYW5kU2luZ2xlTGluZSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgfSk7XG4gICAgdmFyIGV4cGFuZEljb25Qcm9wcyA9IHsgaWNvbk5hbWU6IGV4cGFuZFNpbmdsZUxpbmUgPyAnRG91YmxlQ2hldnJvblVwJyA6ICdEb3VibGVDaGV2cm9uRG93bicgfTtcbiAgICB2YXIgcmVnaW9uUHJvcHMgPSBhY3Rpb25zIHx8IG9uRGlzbWlzcyA/IHsgJ2FyaWEtZGVzY3JpYmVkYnknOiBsYWJlbElkLCByb2xlOiAncmVnaW9uJyB9IDoge307XG4gICAgdmFyIGFjdGlvbnNEaXYgPSBhY3Rpb25zID8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5hY3Rpb25zIH0sIGFjdGlvbnMpIDogbnVsbDtcbiAgICB2YXIgZGlzbWlzc0J1dHRvbiA9IG9uRGlzbWlzcyA/IChSZWFjdC5jcmVhdGVFbGVtZW50KEljb25CdXR0b24sIHsgZGlzYWJsZWQ6IGZhbHNlLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuZGlzbWlzc2FsLCBvbkNsaWNrOiBvbkRpc21pc3MsIGljb25Qcm9wczogZGlzbWlzc0ljb25Qcm9wcyA/IGRpc21pc3NJY29uUHJvcHMgOiB7IGljb25OYW1lOiAnQ2xlYXInIH0sIHRpdGxlOiBkaXNtaXNzQnV0dG9uQXJpYUxhYmVsLCBhcmlhTGFiZWw6IGRpc21pc3NCdXR0b25BcmlhTGFiZWwgfSkpIDogbnVsbDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19hc3NpZ24oeyByZWY6IHJlZiwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLnJvb3QgfSwgcmVnaW9uUHJvcHMpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmNvbnRlbnQgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaWNvbkNvbnRhaW5lciwgXCJhcmlhLWhpZGRlblwiOiB0cnVlIH0sIG1lc3NhZ2VCYXJJY29uUHJvcHMgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uLCBfX2Fzc2lnbih7fSwgbWVzc2FnZUJhckljb25Qcm9wcywgeyBjbGFzc05hbWU6IGNzcyhjbGFzc05hbWVzLmljb24sIG1lc3NhZ2VCYXJJY29uUHJvcHMuY2xhc3NOYW1lKSB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbiwgeyBpY29uTmFtZTogSUNPTl9NQVBbbWVzc2FnZUJhclR5cGVdLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaWNvbiB9KSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy50ZXh0LCBpZDogbGFiZWxJZCwgcm9sZTogcm9sZSB8fCBnZXRSb2xlKG1lc3NhZ2VCYXJUeXBlKSwgXCJhcmlhLWxpdmVcIjogZ2V0QW5ub3VuY2VtZW50UHJpb3JpdHkobWVzc2FnZUJhclR5cGUpIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaW5uZXJUZXh0IH0sIG5hdGl2ZVByb3BzKSwgZGVsYXllZFJlbmRlciA/IChSZWFjdC5jcmVhdGVFbGVtZW50KERlbGF5ZWRSZW5kZXIsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIGNoaWxkcmVuKSkpIDogKFxuICAgICAgICAgICAgICAgIC8vIHRoaXMgc3BhbiBpcyBwcm9iYWJseSBub3QgbmVjZXNzYXJ5LCBidXQgcHJlc2VydmluZyBpdCBmb3Igbm93IGluIGNhc2UgYW55b25lXG4gICAgICAgICAgICAgICAgLy8gaGFzIHN0eWxpbmcgdGhhdCBleHBlY3RzIGl0IHRvIGJlIHByZXNlbnRcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBjaGlsZHJlbikpKSksXG4gICAgICAgICAgICAvKiBzaW5nbGVsaW5lIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gKi8gIWlzTXVsdGlsaW5lICYmICFhY3Rpb25zRGl2ICYmIHRydW5jYXRlZCAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5leHBhbmRTaW5nbGVMaW5lIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQnV0dG9uLCBfX2Fzc2lnbih7IGRpc2FibGVkOiBmYWxzZSwgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmV4cGFuZCwgb25DbGljazogdG9nZ2xlRXhwYW5kU2luZ2xlTGluZSwgaWNvblByb3BzOiBleHBhbmRJY29uUHJvcHMsIGFyaWFMYWJlbDogb3ZlcmZsb3dCdXR0b25BcmlhTGFiZWwsIFwiYXJpYS1leHBhbmRlZFwiOiBleHBhbmRTaW5nbGVMaW5lIH0sIGV4cGFuZEJ1dHRvblByb3BzKSkpKSxcbiAgICAgICAgICAgICFpc011bHRpbGluZSAmJiBhY3Rpb25zRGl2LFxuICAgICAgICAgICAgLyogc2luZ2xlbGluZSBkaXNtaXNzICovICFpc011bHRpbGluZSAmJiBkaXNtaXNzQnV0dG9uICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmRpc21pc3NTaW5nbGVMaW5lIH0sIGRpc21pc3NCdXR0b24pKSxcbiAgICAgICAgICAgIGlzTXVsdGlsaW5lICYmIGRpc21pc3NCdXR0b24pLFxuICAgICAgICBpc011bHRpbGluZSAmJiBhY3Rpb25zRGl2KSk7XG59KTtcbk1lc3NhZ2VCYXJCYXNlLmRpc3BsYXlOYW1lID0gQ09NUE9ORU5UX05BTUU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1NZXNzYWdlQmFyLmJhc2UuanMubWFwIiwidmFyIF9hLCBfYiwgX2MsIF9kO1xuaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEhpZ2hDb250cmFzdFNlbGVjdG9yLCBIaWdoQ29udHJhc3RTZWxlY3RvcldoaXRlLCBTY3JlZW5XaWR0aE1heFNtYWxsLCBnZXRTY3JlZW5TZWxlY3RvciwgZ2V0R2xvYmFsQ2xhc3NOYW1lcywgZ2V0Rm9jdXNTdHlsZSwgSWNvbkZvbnRTaXplcywgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSwgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJUeXBlIH0gZnJvbSAnLi9NZXNzYWdlQmFyLnR5cGVzJztcbnZhciBHbG9iYWxDbGFzc05hbWVzID0ge1xuICAgIHJvb3Q6ICdtcy1NZXNzYWdlQmFyJyxcbiAgICBlcnJvcjogJ21zLU1lc3NhZ2VCYXItLWVycm9yJyxcbiAgICBibG9ja2VkOiAnbXMtTWVzc2FnZUJhci0tYmxvY2tlZCcsXG4gICAgc2V2ZXJlV2FybmluZzogJ21zLU1lc3NhZ2VCYXItLXNldmVyZVdhcm5pbmcnLFxuICAgIHN1Y2Nlc3M6ICdtcy1NZXNzYWdlQmFyLS1zdWNjZXNzJyxcbiAgICB3YXJuaW5nOiAnbXMtTWVzc2FnZUJhci0td2FybmluZycsXG4gICAgbXVsdGlsaW5lOiAnbXMtTWVzc2FnZUJhci1tdWx0aWxpbmUnLFxuICAgIHNpbmdsZWxpbmU6ICdtcy1NZXNzYWdlQmFyLXNpbmdsZWxpbmUnLFxuICAgIGRpc21pc3NhbFNpbmdsZUxpbmU6ICdtcy1NZXNzYWdlQmFyLWRpc21pc3NhbFNpbmdsZUxpbmUnLFxuICAgIGV4cGFuZGluZ1NpbmdsZUxpbmU6ICdtcy1NZXNzYWdlQmFyLWV4cGFuZGluZ1NpbmdsZUxpbmUnLFxuICAgIGNvbnRlbnQ6ICdtcy1NZXNzYWdlQmFyLWNvbnRlbnQnLFxuICAgIGljb25Db250YWluZXI6ICdtcy1NZXNzYWdlQmFyLWljb24nLFxuICAgIHRleHQ6ICdtcy1NZXNzYWdlQmFyLXRleHQnLFxuICAgIGlubmVyVGV4dDogJ21zLU1lc3NhZ2VCYXItaW5uZXJUZXh0JyxcbiAgICBkaXNtaXNzU2luZ2xlTGluZTogJ21zLU1lc3NhZ2VCYXItZGlzbWlzc1NpbmdsZUxpbmUnLFxuICAgIGV4cGFuZFNpbmdsZUxpbmU6ICdtcy1NZXNzYWdlQmFyLWV4cGFuZFNpbmdsZUxpbmUnLFxuICAgIGRpc21pc3NhbDogJ21zLU1lc3NhZ2VCYXItZGlzbWlzc2FsJyxcbiAgICBleHBhbmQ6ICdtcy1NZXNzYWdlQmFyLWV4cGFuZCcsXG4gICAgYWN0aW9uczogJ21zLU1lc3NhZ2VCYXItYWN0aW9ucycsXG4gICAgYWN0aW9uc1NpbmdsZWxpbmU6ICdtcy1NZXNzYWdlQmFyLWFjdGlvbnNTaW5nbGVMaW5lJyxcbn07XG52YXIgYmFja2dyb3VuZENvbG9yID0gKF9hID0ge30sXG4gICAgX2FbTWVzc2FnZUJhclR5cGUuZXJyb3JdID0gJ2Vycm9yQmFja2dyb3VuZCcsXG4gICAgX2FbTWVzc2FnZUJhclR5cGUuYmxvY2tlZF0gPSAnZXJyb3JCYWNrZ3JvdW5kJyxcbiAgICBfYVtNZXNzYWdlQmFyVHlwZS5zdWNjZXNzXSA9ICdzdWNjZXNzQmFja2dyb3VuZCcsXG4gICAgX2FbTWVzc2FnZUJhclR5cGUud2FybmluZ10gPSAnd2FybmluZ0JhY2tncm91bmQnLFxuICAgIF9hW01lc3NhZ2VCYXJUeXBlLnNldmVyZVdhcm5pbmddID0gJ3NldmVyZVdhcm5pbmdCYWNrZ3JvdW5kJyxcbiAgICBfYVtNZXNzYWdlQmFyVHlwZS5pbmZvXSA9ICdpbmZvQmFja2dyb3VuZCcsXG4gICAgX2EpO1xudmFyIGljb25Db2xvciA9IChfYiA9IHt9LFxuICAgIF9iW01lc3NhZ2VCYXJUeXBlLmVycm9yXSA9ICdlcnJvckljb24nLFxuICAgIF9iW01lc3NhZ2VCYXJUeXBlLmJsb2NrZWRdID0gJ2Vycm9ySWNvbicsXG4gICAgX2JbTWVzc2FnZUJhclR5cGUuc3VjY2Vzc10gPSAnc3VjY2Vzc0ljb24nLFxuICAgIF9iW01lc3NhZ2VCYXJUeXBlLndhcm5pbmddID0gJ3dhcm5pbmdJY29uJyxcbiAgICBfYltNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nXSA9ICdzZXZlcmVXYXJuaW5nSWNvbicsXG4gICAgX2JbTWVzc2FnZUJhclR5cGUuaW5mb10gPSAnaW5mb0ljb24nLFxuICAgIF9iKTtcbnZhciBoaWdoQ29udHJhc3RCb3JkZXJDb2xvciA9IChfYyA9IHt9LFxuICAgIF9jW01lc3NhZ2VCYXJUeXBlLmVycm9yXSA9ICcjZmYwMDAwJyxcbiAgICBfY1tNZXNzYWdlQmFyVHlwZS5ibG9ja2VkXSA9ICcjZmYwMDAwJyxcbiAgICBfY1tNZXNzYWdlQmFyVHlwZS5zdWNjZXNzXSA9ICcjYmFkODBhJyxcbiAgICBfY1tNZXNzYWdlQmFyVHlwZS53YXJuaW5nXSA9ICcjZmZmMTAwJyxcbiAgICBfY1tNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nXSA9ICcjZmYwMDAwJyxcbiAgICBfY1tNZXNzYWdlQmFyVHlwZS5pbmZvXSA9ICdXaW5kb3dUZXh0JyxcbiAgICBfYyk7XG52YXIgaGlnaENvbnRyYXN0V2hpdGVCb3JkZXJDb2xvciA9IChfZCA9IHt9LFxuICAgIF9kW01lc3NhZ2VCYXJUeXBlLmVycm9yXSA9ICcjZTgxMTIzJyxcbiAgICBfZFtNZXNzYWdlQmFyVHlwZS5ibG9ja2VkXSA9ICcjZTgxMTIzJyxcbiAgICBfZFtNZXNzYWdlQmFyVHlwZS5zdWNjZXNzXSA9ICcjMTA3YzEwJyxcbiAgICBfZFtNZXNzYWdlQmFyVHlwZS53YXJuaW5nXSA9ICcjOTY2NDAwJyxcbiAgICBfZFtNZXNzYWdlQmFyVHlwZS5zZXZlcmVXYXJuaW5nXSA9ICcjZDgzYjAxJyxcbiAgICBfZFtNZXNzYWdlQmFyVHlwZS5pbmZvXSA9ICdXaW5kb3dUZXh0JyxcbiAgICBfZCk7XG5leHBvcnQgdmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2w7XG4gICAgdmFyIHRoZW1lID0gcHJvcHMudGhlbWUsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgb25EaXNtaXNzID0gcHJvcHMub25EaXNtaXNzLCB0cnVuY2F0ZWQgPSBwcm9wcy50cnVuY2F0ZWQsIGlzTXVsdGlsaW5lID0gcHJvcHMuaXNNdWx0aWxpbmUsIGV4cGFuZFNpbmdsZUxpbmUgPSBwcm9wcy5leHBhbmRTaW5nbGVMaW5lLCBfbSA9IHByb3BzLm1lc3NhZ2VCYXJUeXBlLCBtZXNzYWdlQmFyVHlwZSA9IF9tID09PSB2b2lkIDAgPyBNZXNzYWdlQmFyVHlwZS5pbmZvIDogX207XG4gICAgdmFyIHNlbWFudGljQ29sb3JzID0gdGhlbWUuc2VtYW50aWNDb2xvcnMsIGZvbnRzID0gdGhlbWUuZm9udHM7XG4gICAgdmFyIFNtYWxsU2NyZWVuU2VsZWN0b3IgPSBnZXRTY3JlZW5TZWxlY3RvcigwLCBTY3JlZW5XaWR0aE1heFNtYWxsKTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IGdldEdsb2JhbENsYXNzTmFtZXMoR2xvYmFsQ2xhc3NOYW1lcywgdGhlbWUpO1xuICAgIHZhciBkaXNtaXNzYWxBbmRFeHBhbmRJY29uU3R5bGUgPSB7XG4gICAgICAgIGZvbnRTaXplOiBJY29uRm9udFNpemVzLnhTbWFsbCxcbiAgICAgICAgaGVpZ2h0OiAxMCxcbiAgICAgICAgbGluZUhlaWdodDogJzEwcHgnLFxuICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMubWVzc2FnZVRleHQsXG4gICAgICAgIHNlbGVjdG9yczogKF9hID0ge30sXG4gICAgICAgICAgICBfYVtIaWdoQ29udHJhc3RTZWxlY3Rvcl0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZ2V0SGlnaENvbnRyYXN0Tm9BZGp1c3RTdHlsZSgpKSwgeyBjb2xvcjogJ1dpbmRvd1RleHQnIH0pLFxuICAgICAgICAgICAgX2EpLFxuICAgIH07XG4gICAgdmFyIGRpc21pc3NhbEFuZEV4cGFuZFN0eWxlID0gW1xuICAgICAgICBnZXRGb2N1c1N0eWxlKHRoZW1lLCB7XG4gICAgICAgICAgICBpbnNldDogMSxcbiAgICAgICAgICAgIGhpZ2hDb250cmFzdFN0eWxlOiB7XG4gICAgICAgICAgICAgICAgb3V0bGluZU9mZnNldDogJy02cHgnLFxuICAgICAgICAgICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgSGlnaGxpZ2h0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgICB3aWR0aDogMzIsXG4gICAgICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICAgICAgcGFkZGluZzogJzhweCAxMnB4JyxcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICcmIC5tcy1CdXR0b24taWNvbic6IGRpc21pc3NhbEFuZEV4cGFuZEljb25TdHlsZSxcbiAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnOmFjdGl2ZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAgZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgbWVzc2FnZUJhclR5cGUgPT09IE1lc3NhZ2VCYXJUeXBlLmVycm9yICYmIGNsYXNzTmFtZXMuZXJyb3IsXG4gICAgICAgICAgICBtZXNzYWdlQmFyVHlwZSA9PT0gTWVzc2FnZUJhclR5cGUuYmxvY2tlZCAmJiBjbGFzc05hbWVzLmJsb2NrZWQsXG4gICAgICAgICAgICBtZXNzYWdlQmFyVHlwZSA9PT0gTWVzc2FnZUJhclR5cGUuc2V2ZXJlV2FybmluZyAmJiBjbGFzc05hbWVzLnNldmVyZVdhcm5pbmcsXG4gICAgICAgICAgICBtZXNzYWdlQmFyVHlwZSA9PT0gTWVzc2FnZUJhclR5cGUuc3VjY2VzcyAmJiBjbGFzc05hbWVzLnN1Y2Nlc3MsXG4gICAgICAgICAgICBtZXNzYWdlQmFyVHlwZSA9PT0gTWVzc2FnZUJhclR5cGUud2FybmluZyAmJiBjbGFzc05hbWVzLndhcm5pbmcsXG4gICAgICAgICAgICBpc011bHRpbGluZSA/IGNsYXNzTmFtZXMubXVsdGlsaW5lIDogY2xhc3NOYW1lcy5zaW5nbGVsaW5lLFxuICAgICAgICAgICAgIWlzTXVsdGlsaW5lICYmIG9uRGlzbWlzcyAmJiBjbGFzc05hbWVzLmRpc21pc3NhbFNpbmdsZUxpbmUsXG4gICAgICAgICAgICAhaXNNdWx0aWxpbmUgJiYgdHJ1bmNhdGVkICYmIGNsYXNzTmFtZXMuZXhwYW5kaW5nU2luZ2xlTGluZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBzZW1hbnRpY0NvbG9yc1tiYWNrZ3JvdW5kQ29sb3JbbWVzc2FnZUJhclR5cGVdXSxcbiAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMubWVzc2FnZVRleHQsXG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAzMixcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfYiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICcubXMtTGluayc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMubWVzc2FnZUxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6aG92ZXInOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnMubWVzc2FnZUxpbmtIb3ZlcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLCB7IGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KGhpZ2hDb250cmFzdEJvcmRlckNvbG9yW21lc3NhZ2VCYXJUeXBlXSksIGNvbG9yOiAnV2luZG93VGV4dCcgfSksXG4gICAgICAgICAgICAgICAgICAgIF9iW0hpZ2hDb250cmFzdFNlbGVjdG9yV2hpdGVdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQoaGlnaENvbnRyYXN0V2hpdGVCb3JkZXJDb2xvclttZXNzYWdlQmFyVHlwZV0pLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXNNdWx0aWxpbmUgJiYge1xuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgXSxcbiAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5jb250ZW50LFxuICAgICAgICAgICAgKF9jID0ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICdub3JtYWwnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfY1tTbWFsbFNjcmVlblNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAnYXV0byAxZnIgYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZVJvd3M6ICcxZnIgYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUFyZWFzOiBcIlxcbiAgICAgICAgICAgIFxcXCJpY29uIHRleHQgY2xvc2VcXFwiXFxuICAgICAgICAgICAgXFxcImFjdGlvbiBhY3Rpb24gYWN0aW9uXFxcIlxcbiAgICAgICAgICBcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9jKSxcbiAgICAgICAgXSxcbiAgICAgICAgaWNvbkNvbnRhaW5lcjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5pY29uQ29udGFpbmVyLFxuICAgICAgICAgICAgKF9kID0ge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogSWNvbkZvbnRTaXplcy5tZWRpdW0sXG4gICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAxNixcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0OiAxNixcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBmbGV4U2hyaW5rOiAwLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICc4cHggMCA4cHggMTJweCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF9kW1NtYWxsU2NyZWVuU2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICBncmlkQXJlYTogJ2ljb24nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2QpLFxuICAgICAgICBdLFxuICAgICAgICBpY29uOiB7XG4gICAgICAgICAgICBjb2xvcjogc2VtYW50aWNDb2xvcnNbaWNvbkNvbG9yW21lc3NhZ2VCYXJUeXBlXV0sXG4gICAgICAgICAgICBzZWxlY3RvcnM6IChfZSA9IHt9LFxuICAgICAgICAgICAgICAgIF9lW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLCB7IGNvbG9yOiAnV2luZG93VGV4dCcgfSksXG4gICAgICAgICAgICAgICAgX2UpLFxuICAgICAgICB9LFxuICAgICAgICB0ZXh0OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnRleHQsXG4gICAgICAgICAgICBfX2Fzc2lnbihfX2Fzc2lnbih7IG1pbldpZHRoOiAwLCBkaXNwbGF5OiAnZmxleCcsIGZsZXhHcm93OiAxLCBtYXJnaW46IDggfSwgZm9udHMuc21hbGwpLCAoX2YgPSB7fSwgX2ZbU21hbGxTY3JlZW5TZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgZ3JpZEFyZWE6ICd0ZXh0JyxcbiAgICAgICAgICAgIH0sIF9mLnNlbGVjdG9ycyA9IChfZyA9IHt9LFxuICAgICAgICAgICAgICAgIF9nW0hpZ2hDb250cmFzdFNlbGVjdG9yXSA9IF9fYXNzaWduKHt9LCBnZXRIaWdoQ29udHJhc3ROb0FkanVzdFN0eWxlKCkpLFxuICAgICAgICAgICAgICAgIF9nKSwgX2YpKSxcbiAgICAgICAgICAgICFvbkRpc21pc3MgJiYge1xuICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlubmVyVGV4dDogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5pbm5lclRleHQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogMTYsXG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICcmIHNwYW4gYTpsYXN0LWNoaWxkJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQ6IDQsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0cnVuY2F0ZWQgJiYge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAhaXNNdWx0aWxpbmUgJiYge1xuICAgICAgICAgICAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgdGhpcyBjYXVzZXMgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGxpbmtzJyBmb2N1cyBvdXRsaW5lIHRvIGJlIGNsaXBwZWRcbiAgICAgICAgICAgICAgICAvLyAobm90IHN1cmUgb2YgYSBnb29kIHdheSBhcm91bmQgdGhhdCB3aGlsZSBzdGlsbCBtYWludGFpbmluZyB0ZXh0IGNsaXBwaW5nKVxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgIWlzTXVsdGlsaW5lICYmXG4gICAgICAgICAgICAgICAgIXRydW5jYXRlZCAmJiB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiAoX2ggPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2hbU21hbGxTY3JlZW5TZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX2gpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cGFuZFNpbmdsZUxpbmUgJiYge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRpc21pc3NTaW5nbGVMaW5lOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmRpc21pc3NTaW5nbGVMaW5lLFxuICAgICAgICAgICAgKF9qID0ge30sXG4gICAgICAgICAgICAgICAgX2pbU21hbGxTY3JlZW5TZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGdyaWRBcmVhOiAnY2xvc2UnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2opLFxuICAgICAgICBdLFxuICAgICAgICBleHBhbmRTaW5nbGVMaW5lOiBjbGFzc05hbWVzLmV4cGFuZFNpbmdsZUxpbmUsXG4gICAgICAgIGRpc21pc3NhbDogW2NsYXNzTmFtZXMuZGlzbWlzc2FsLCBkaXNtaXNzYWxBbmRFeHBhbmRTdHlsZV0sXG4gICAgICAgIGV4cGFuZDogW2NsYXNzTmFtZXMuZXhwYW5kLCBkaXNtaXNzYWxBbmRFeHBhbmRTdHlsZV0sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIGlzTXVsdGlsaW5lID8gY2xhc3NOYW1lcy5hY3Rpb25zIDogY2xhc3NOYW1lcy5hY3Rpb25zU2luZ2xlbGluZSxcbiAgICAgICAgICAgIChfayA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBmbGV4R3JvdzogMCxcbiAgICAgICAgICAgICAgICAgICAgZmxleFNocmluazogMCxcbiAgICAgICAgICAgICAgICAgICAgZmxleEJhc2lzOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3ctcmV2ZXJzZScsXG4gICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46ICcwIDEycHggMCA4cHgnLFxuICAgICAgICAgICAgICAgICAgICAvLyByZXNldCBmb3JjZWQgY29sb3JzIHRvIGJyb3dzZXIgY29udHJvbCBmb3IgaW5uZXIgYWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICBmb3JjZWRDb2xvckFkanVzdDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICBNc0hpZ2hDb250cmFzdEFkanVzdDogJ2F1dG8nXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfa1tTbWFsbFNjcmVlblNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgZ3JpZEFyZWE6ICdhY3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogOCxcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiA4LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2suc2VsZWN0b3JzID0ge1xuICAgICAgICAgICAgICAgICAgICAnJiBidXR0b246bnRoLWNoaWxkKG4rMiknOiAoX2wgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogOFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9sW1NtYWxsU2NyZWVuU2VsZWN0b3JdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfbCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfayksXG4gICAgICAgICAgICBpc011bHRpbGluZSAmJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiA4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uRGlzbWlzcyAmJlxuICAgICAgICAgICAgICAgICFpc011bHRpbGluZSAmJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVzc2FnZUJhci5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJCYXNlIH0gZnJvbSAnLi9NZXNzYWdlQmFyLmJhc2UnO1xuaW1wb3J0IHsgZ2V0U3R5bGVzIH0gZnJvbSAnLi9NZXNzYWdlQmFyLnN0eWxlcyc7XG5leHBvcnQgdmFyIE1lc3NhZ2VCYXIgPSBzdHlsZWQoTWVzc2FnZUJhckJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7XG4gICAgc2NvcGU6ICdNZXNzYWdlQmFyJyxcbn0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWVzc2FnZUJhci5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gJ3RzbGliJztcbmV4cG9ydCB2YXIgYXNzaWduID0gX19hc3NpZ247XG4vLyMgc291cmNlTWFwcGluZ1VSTD11dGlsaXRpZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IG1lcmdlQ3NzIH0gZnJvbSAnQGZsdWVudHVpL21lcmdlLXN0eWxlcyc7XG5pbXBvcnQgeyBnZXRSVEwsIG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJ0BmbHVlbnR1aS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgYXNzaWduIH0gZnJvbSAnLi91dGlsaXRpZXMnO1xuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIGZvciBhbnkgbW9kdWxlIHRoYXQgdXNlcyBzbG90cy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGEgc2xvdCByZXNvbHZlciB0aGF0IGF1dG9tYXRpY2FsbHkgZXZhbHVhdGVzIHNsb3QgZnVuY3Rpb25zIHRvIGdlbmVyYXRlIFJlYWN0IGVsZW1lbnRzLlxuICogQSBieXByb2R1Y3Qgb2YgdGhpcyByZXNvbHZlciBpcyB0aGF0IGl0IHJlbW92ZXMgc2xvdHMgZnJvbSB0aGUgUmVhY3QgaGllcmFyY2h5IGJ5IGJ5cGFzc2luZyBSZWFjdC5jcmVhdGVFbGVtZW50LlxuICpcbiAqIFRvIHVzZSB0aGlzIGZ1bmN0aW9uIG9uIGEgcGVyLWZpbGUgYmFzaXMsIHVzZSB0aGUganN4IGRpcmVjdGl2ZSB0YXJnZXRpbmcgd2l0aFNsb3RzLlxuICogVGhpcyBkaXJlY3RpdmUgbXVzdCBiZSB0aGUgRklSU1QgTElORSBpbiB0aGUgZmlsZSB0byB3b3JrIGNvcnJlY3RseS5cbiAqIFVzYWdlIG9mIHRoaXMgcHJhZ21hIGFsc28gcmVxdWlyZXMgd2l0aFNsb3RzIGltcG9ydCBzdGF0ZW1lbnQuXG4gKlxuICogU2VlIFJlYWN0LmNyZWF0ZUVsZW1lbnRcbiAqL1xuLy8gQ2FuJ3QgdXNlIHR5cGVvZiBvbiBSZWFjdC5jcmVhdGVFbGVtZW50IHNpbmNlIGl0J3Mgb3ZlcmxvYWRlZC4gQXBwcm94aW1hdGUgY3JlYXRlRWxlbWVudCdzIHNpZ25hdHVyZSBmb3Igbm93XG4vLyBhbmQgd2lkZW4gYXMgbmVlZGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTbG90cyh0eXBlLCBwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGNoaWxkcmVuW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgc2xvdFR5cGUgPSB0eXBlO1xuICAgIGlmIChzbG90VHlwZS5pc1Nsb3QpIHtcbiAgICAgICAgLy8gU2luY2Ugd2UgYXJlIGJ5cGFzc2luZyBjcmVhdGVFbGVtZW50LCB1c2UgUmVhY3QuQ2hpbGRyZW4udG9BcnJheSB0byBtYWtlIHN1cmUgY2hpbGRyZW4gYXJlXG4gICAgICAgIC8vIHByb3Blcmx5IGFzc2lnbmVkIGtleXMuXG4gICAgICAgIC8vIFRPRE86IHNob3VsZCB0aGlzIGJlIG11dGF0aW5nPyBkb2VzIFJlYWN0IG11dGF0ZSBjaGlsZHJlbiBzdWJwcm9wIHdpdGggY3JlYXRlRWxlbWVudD9cbiAgICAgICAgLy8gVE9ETzogd2lsbCB0b0FycmF5IGNsb2JiZXIgZXhpc3Rpbmcga2V5cz9cbiAgICAgICAgLy8gVE9ETzogUmVhY3QgZ2VuZXJhdGVzIHdhcm5pbmdzIGJlY2F1c2UgaXQgZG9lc24ndCBkZXRlY3QgaGlkZGVuIG1lbWJlciBfc3RvcmUgdGhhdCBpcyBzZXQgaW4gY3JlYXRlRWxlbWVudC5cbiAgICAgICAgLy8gICAgICAgIEV2ZW4gY2hpbGRyZW4gcGFzc2VkIHRvIGNyZWF0ZUVsZW1lbnQgd2l0aG91dCBrZXlzIGRvbid0IGdlbmVyYXRlIHRoaXMgd2FybmluZy5cbiAgICAgICAgLy8gICAgICAgIElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBwcmV2ZW50IHNsb3RzIGZyb20gYXBwZWFyaW5nIGluIGhpZXJhcmNoeT8gdG9BcnJheSBkb2Vzbid0IGFkZHJlc3Mgcm9vdCBpc3N1ZS5cbiAgICAgICAgY2hpbGRyZW4gPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICAgICAgLy8gVE9ETzogVGhlcmUgaXMgc29tZXRoaW5nIHdlaXJkIGdvaW5nIG9uIGhlcmUgd2l0aCBjaGlsZHJlbiBlbWJlZGRlZCBpbiBwcm9wcyB2cy4gcmVzdCBhcmdzLlxuICAgICAgICAvLyBDb21tZW50IG91dCB0aGVzZSBsaW5lcyB0byBzZWUuIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGlzIGRvaW5nIHRoZSByaWdodCB0aGluZ3MuXG4gICAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzbG90VHlwZShwcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsb3RUeXBlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBwcm9wcyksIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEFyZSB0aGVyZSBzb21lIGNhc2VzIHdoZXJlIGNoaWxkcmVuIHNob3VsZCBOT1QgYmUgc3ByZWFkPyBBbHNvLCBzcHJlYWRpbmcgcmVyYWlzZXMgcGVyZiBxdWVzdGlvbi5cbiAgICAgICAgLy8gICAgICAgIENoaWxkcmVuIGhhZCB0byBiZSBzcHJlYWQgdG8gYXZvaWQgYnJlYWtpbmcgS2V5dGlwRGF0YSBpbiBUb2dnbGUudmlldzpcbiAgICAgICAgLy8gICAgICAgIHJlYWN0LWRvbS5kZXZlbG9wbWVudC5qczoxODkzMSBVbmNhdWdodCBUeXBlRXJyb3I6IGNoaWxkcmVuIGlzIG5vdCBhIGZ1bmN0aW9uXG4gICAgICAgIC8vICAgICAgICBXaXRob3V0IHNwcmVhZCwgZnVuY3Rpb24gY2hpbGQgaXMgYSBjaGlsZCBhcnJheSBvZiBvbmUgZWxlbWVudFxuICAgICAgICAvLyBUT0RPOiBpcyB0aGVyZSBhIHJlYXNvbiB0aGlzIGNhbid0IGJlOlxuICAgICAgICAvLyByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShSZWFjdCwgX19zcHJlYWRBcnJheShbdHlwZSwgcHJvcHNdLCBjaGlsZHJlbiwgZmFsc2UpKTtcbiAgICB9XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBmYWN0b3JpZXMgdGhhdCByZW5kZXIgb3VwdXQgZGVwZW5kaW5nIG9uIHRoZSB1c2VyIElTbG90UHJvcCBwcm9wcyBwYXNzZWQgaW4uXG4gKiBAcGFyYW0gRGVmYXVsdENvbXBvbmVudCAtIEJhc2UgY29tcG9uZW50IHRvIHJlbmRlciB3aGVuIG5vdCBvdmVycmlkZGVuIGJ5IHVzZXIgcHJvcHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEZhY3Rvcnkgb3B0aW9ucywgaW5jbHVkaW5nIGRlZmF1bHRQcm9wIHZhbHVlIGZvciBzaG9ydGhhbmQgcHJvcCBtYXBwaW5nLlxuICogQHJldHVybnMgSVNsb3RGYWN0b3J5IGZ1bmN0aW9uIHVzZWQgZm9yIHJlbmRlcmluZyBzbG90cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZhY3RvcnkoRGVmYXVsdENvbXBvbmVudCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIF9hID0gb3B0aW9ucy5kZWZhdWx0UHJvcCwgZGVmYXVsdFByb3AgPSBfYSA9PT0gdm9pZCAwID8gJ2NoaWxkcmVuJyA6IF9hO1xuICAgIHZhciByZXN1bHQgPSBmdW5jdGlvbiAoY29tcG9uZW50UHJvcHMsIHVzZXJQcm9wcywgdXNlclNsb3RPcHRpb25zLCBkZWZhdWx0U3R5bGVzLCB0aGVtZSkge1xuICAgICAgICAvLyBJZiB0aGV5IHBhc3NlZCBpbiByYXcgSlNYLCBqdXN0IHJldHVybiB0aGF0LlxuICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQodXNlclByb3BzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVzZXJQcm9wcztcbiAgICAgICAgfVxuICAgICAgICB2YXIgZmxhdHRlbmVkVXNlclByb3BzID0gX3RyYW5zbGF0ZVNob3J0aGFuZChkZWZhdWx0UHJvcCwgdXNlclByb3BzKTtcbiAgICAgICAgdmFyIGZpbmFsUHJvcHMgPSBfY29uc3RydWN0RmluYWxQcm9wcyhkZWZhdWx0U3R5bGVzLCB0aGVtZSwgY29tcG9uZW50UHJvcHMsIGZsYXR0ZW5lZFVzZXJQcm9wcyk7XG4gICAgICAgIGlmICh1c2VyU2xvdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh1c2VyU2xvdE9wdGlvbnMuY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIGNhc3QgaWYgcG9zc2libGUuIFRoaXMgY2FzdCBpcyBuZWVkZWQgYmVjYXVzZSBUUyBlcnJvcnMgb24gdGhlIGludHJpbnNpYyBwb3J0aW9uIG9mIFJlYWN0VHlwZS5cbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gPHVzZXJTbG90T3B0aW9ucy5jb21wb25lbnQgey4uLmZpbmFsUHJvcHN9IC8+O1xuICAgICAgICAgICAgICAgIHZhciBVc2VyQ29tcG9uZW50ID0gdXNlclNsb3RPcHRpb25zLmNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChVc2VyQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgZmluYWxQcm9wcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVzZXJTbG90T3B0aW9ucy5yZW5kZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXNlclNsb3RPcHRpb25zLnJlbmRlcihmaW5hbFByb3BzLCBEZWZhdWx0Q29tcG9uZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChEZWZhdWx0Q29tcG9uZW50LCBfX2Fzc2lnbih7fSwgZmluYWxQcm9wcykpO1xuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogRGVmYXVsdCBmYWN0b3J5IGZvciBjb21wb25lbnRzIHdpdGhvdXQgZXhwbGljaXQgZmFjdG9yaWVzLlxuICovXG52YXIgZGVmYXVsdEZhY3RvcnkgPSBtZW1vaXplRnVuY3Rpb24oZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIGNyZWF0ZUZhY3RvcnkodHlwZSk7IH0pO1xuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGdlbmVyYXRlcyBzbG90cyB0aGF0IGNhbiBiZSB1c2VkIGluIEpTWCBnaXZlbiBhIGRlZmluaXRpb24gb2Ygc2xvdHMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgdHlwZXMuXG4gKiBAcGFyYW0gdXNlclByb3BzIC0gUHJvcHMgYXMgcGFzcyB0byBjb21wb25lbnQuXG4gKiBAcGFyYW0gc2xvdHMgLSBTbG90IGRlZmluaXRpb24gb2JqZWN0IGRlZmluaW5nIHRoZSBkZWZhdWx0IHNsb3QgY29tcG9uZW50IGZvciBlYWNoIHNsb3QuXG4gKiBAcmV0dXJucyBBIHNldCBvZiBjcmVhdGVkIHNsb3RzIHRoYXQgY29tcG9uZW50cyBjYW4gcmVuZGVyIGluIEpTWC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNsb3RzKHVzZXJQcm9wcywgc2xvdHMpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgLy8gdXNlclByb3BzIGFscmVhZHkgaGFzIGRlZmF1bHQgcHJvcHMgbWl4ZWQgaW4gYnkgY3JlYXRlQ29tcG9uZW50LiBSZWNhc3QgaGVyZSB0byBnYWluIHR5cGluZyBmb3IgdGhpcyBmdW5jdGlvbi5cbiAgICB2YXIgbWl4ZWRQcm9wcyA9IHVzZXJQcm9wcztcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChuYW1lXzEpIHtcbiAgICAgICAgaWYgKHNsb3RzLmhhc093blByb3BlcnR5KG5hbWVfMSkpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgY2xvc3VyZSBtZXRob2QgcmVxdWlyZXMgdGhlIHVzZSBvZiB3aXRoU2xvdHMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZXJlbmRlcnMuIFRoaXMgaXMgYmVjYXVzZSBSZWFjdFxuICAgICAgICAgICAgLy8gZGV0ZWN0cyBlYWNoIGNsb3N1cmUgYXMgYSBkaWZmZXJlbnQgY29tcG9uZW50IChzaW5jZSBpdCBpcyBhIG5ldyBpbnN0YW5jZSkgZnJvbSB0aGUgcHJldmlvdXMgb25lIGFuZCB0aGVuXG4gICAgICAgICAgICAvLyBmb3JjZXMgYSByZXJlbmRlciBvZiB0aGUgZW50aXJlIHNsb3Qgc3VidHJlZS4gRm9yIG5vdywgdGhlIG9ubHkgd2F5IHRvIGF2b2lkIHRoaXMgaXMgdG8gdXNlIHdpdGhTbG90cywgd2hpY2hcbiAgICAgICAgICAgIC8vIGJ5cGFzc2VzIHRoZSBjYWxsIHRvIFJlYWN0LmNyZWF0ZUVsZW1lbnQuXG4gICAgICAgICAgICB2YXIgc2xvdCA9IGZ1bmN0aW9uIChjb21wb25lbnRQcm9wcykge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGJlaW5nIGluY29ycmVjdGx5IHVzZWQgd2l0aCBzbG90cywgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIGRldGVjdCB0aGVzZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhbmQgZXJyb3Igb24gdGhlaXIgcHJlc2VuY2UuXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQW55IG1vZHVsZSB1c2luZyBnZXRTbG90cyBtdXN0IHVzZSB3aXRoU2xvdHMuIFBsZWFzZSBzZWUgd2l0aFNsb3RzIGphdmFkb2MgZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogaGF2aW5nIFRTIGluZmVyIHR5cGVzIGhlcmUgc2VlbXMgdG8gY2F1c2UgaW5maW5pdGUgbG9vcC5cbiAgICAgICAgICAgICAgICAvLyAgIHVzZSBleHBsaWNpdCB0eXBlcyBvciBjYXN0aW5nIHRvIHByZXNlcnZlIHR5cGluZyBpZiBwb3NzaWJsZS5cbiAgICAgICAgICAgICAgICAvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBhIGxvb2t1cCBvbiBUUHJvcHMgcHJvcGVydHkgaW5zdGVhZCBvZiBiZWluZyBUUHJvcHMgZGlyZWN0bHksIHdoaWNoIGlzIHByb2JhYmx5XG4gICAgICAgICAgICAgICAgLy8gICBjYXVzaW5nIHRoZSBpbmZpbml0ZSBsb29wXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZW5kZXJTbG90KHNsb3RzW25hbWVfMV0sIFxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHRoaXMgY2FzdCB0byBhbnkgaXMgaGlkaW5nIGEgcmVsYXRpb25zaGlwIGlzc3VlIGJldHdlZW4gdGhlIGZpcnN0IHR3byBhcmdzXG4gICAgICAgICAgICAgICAgY29tcG9uZW50UHJvcHMsIG1peGVkUHJvcHNbbmFtZV8xXSwgbWl4ZWRQcm9wcy5zbG90cyAmJiBtaXhlZFByb3BzLnNsb3RzW25hbWVfMV0sIFxuICAgICAgICAgICAgICAgIC8vIF9kZWZhdWx0U3R5bGVzIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCwgYnV0IGEgY2hlY2sgZm9yIGV4aXN0ZW5jZSBpcyBhZGRlZCB0byBtYWtlIHZpZXcgdGVzdHNcbiAgICAgICAgICAgICAgICAvLyBlYXNpZXIgdG8gdXNlLlxuICAgICAgICAgICAgICAgIG1peGVkUHJvcHMuX2RlZmF1bHRTdHlsZXMgJiYgbWl4ZWRQcm9wcy5fZGVmYXVsdFN0eWxlc1tuYW1lXzFdLCBtaXhlZFByb3BzLnRoZW1lKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzbG90LmlzU2xvdCA9IHRydWU7XG4gICAgICAgICAgICByZXN1bHRbbmFtZV8xXSA9IHNsb3Q7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZvciAodmFyIG5hbWVfMSBpbiBzbG90cykge1xuICAgICAgICBfbG9vcF8xKG5hbWVfMSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHRyYW5zbGF0ZXMgc2hvcnRoYW5kIGFzIG5lZWRlZC5cbiAqIEBwYXJhbSBkZWZhdWx0UHJvcFxuICogQHBhcmFtIHNsb3RQcm9wc1xuICovXG5mdW5jdGlvbiBfdHJhbnNsYXRlU2hvcnRoYW5kKGRlZmF1bHRQcm9wLCBzbG90UHJvcHMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIHRyYW5zZm9ybWVkUHJvcHM7XG4gICAgaWYgKHR5cGVvZiBzbG90UHJvcHMgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBzbG90UHJvcHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBzbG90UHJvcHMgPT09ICdib29sZWFuJykge1xuICAgICAgICB0cmFuc2Zvcm1lZFByb3BzID0gKF9hID0ge30sXG4gICAgICAgICAgICBfYVtkZWZhdWx0UHJvcF0gPSBzbG90UHJvcHMsXG4gICAgICAgICAgICBfYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm1lZFByb3BzID0gc2xvdFByb3BzO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRQcm9wcztcbn1cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgY29uc3RydWN0cyBmaW5hbCBzdHlsZXMgYW5kIHByb3BzIGdpdmVuIGEgc2VyaWVzIG9mIHByb3BzIG9yZGVyZWQgYnkgaW5jcmVhc2luZyBwcmlvcml0eS5cbiAqL1xuZnVuY3Rpb24gX2NvbnN0cnVjdEZpbmFsUHJvcHMoZGVmYXVsdFN0eWxlcywgdGhlbWUpIHtcbiAgICB2YXIgYWxsUHJvcHMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhbGxQcm9wc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIGZpbmFsUHJvcHMgPSB7fTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IFtdO1xuICAgIGZvciAodmFyIF9hID0gMCwgYWxsUHJvcHNfMSA9IGFsbFByb3BzOyBfYSA8IGFsbFByb3BzXzEubGVuZ3RoOyBfYSsrKSB7XG4gICAgICAgIHZhciBwcm9wcyA9IGFsbFByb3BzXzFbX2FdO1xuICAgICAgICBjbGFzc05hbWVzLnB1c2gocHJvcHMgJiYgcHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgYXNzaWduKGZpbmFsUHJvcHMsIHByb3BzKTtcbiAgICB9XG4gICAgZmluYWxQcm9wcy5jbGFzc05hbWUgPSBtZXJnZUNzcyhbZGVmYXVsdFN0eWxlcywgY2xhc3NOYW1lc10sIHsgcnRsOiBnZXRSVEwodGhlbWUpIH0pO1xuICAgIHJldHVybiBmaW5hbFByb3BzO1xufVxuLyoqXG4gKiBSZW5kZXIgYSBzbG90IGdpdmVuIGNvbXBvbmVudCBhbmQgdXNlciBwcm9wcy4gVXNlcyBjb21wb25lbnQgZmFjdG9yeSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxscyBiYWNrXG4gKiB0byBkZWZhdWx0IGZhY3RvcnkuXG4gKiBAcGFyYW0gQ29tcG9uZW50VHlwZSBGYWN0b3J5IGNvbXBvbmVudCB0eXBlLlxuICogQHBhcmFtIGNvbXBvbmVudFByb3BzIFRoZSBwcm9wZXJ0aWVzIHBhc3NlZCBpbnRvIHNsb3QgZnJvbSB3aXRoaW4gdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB1c2VyUHJvcHMgVGhlIHVzZXIgcHJvcGVydGllcyBwYXNzZWQgaW4gZnJvbSBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIF9yZW5kZXJTbG90KENvbXBvbmVudFR5cGUsIGNvbXBvbmVudFByb3BzLCB1c2VyUHJvcHMsIHNsb3RPcHRpb25zLCBkZWZhdWx0U3R5bGVzLCB0aGVtZSkge1xuICAgIGlmIChDb21wb25lbnRUeXBlLmNyZWF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBDb21wb25lbnRUeXBlLmNyZWF0ZShjb21wb25lbnRQcm9wcywgdXNlclByb3BzLCBzbG90T3B0aW9ucywgZGVmYXVsdFN0eWxlcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBUT0RPOiBuZWVkIHRvIHJlc29sdmUgdHlwaW5nIC8gZ2VuZXJpYyBpc3N1ZXMgcGFzc2luZyB0aHJvdWdoIG1lbW9pemVGdW5jdGlvbi4gZm9yIG5vdywgY2FzdCB0byAndW5rbm93bidcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRGYWN0b3J5KENvbXBvbmVudFR5cGUpKGNvbXBvbmVudFByb3BzLCB1c2VyUHJvcHMsIHNsb3RPcHRpb25zLCBkZWZhdWx0U3R5bGVzLCB0aGVtZSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2xvdHMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNvbmNhdFN0eWxlU2V0cyB9IGZyb20gJ0BmbHVlbnR1aS9zdHlsZS11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ3VzdG9taXphdGlvbnMsIEN1c3RvbWl6ZXJDb250ZXh0IH0gZnJvbSAnQGZsdWVudHVpL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBjcmVhdGVGYWN0b3J5IH0gZnJvbSAnLi9zbG90cyc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICcuL3V0aWxpdGllcyc7XG4vKipcbiAqIEFzc2VtYmxlcyBhIGhpZ2hlciBvcmRlciBjb21wb25lbnQgYmFzZWQgb24gdGhlIGZvbGxvd2luZzogc3R5bGVzLCB0aGVtZSwgdmlldywgYW5kIHN0YXRlLlxuICogSW1wb3NlcyBhIHNlcGFyYXRpb24gb2YgY29uY2VybiBhbmQgY2VudHJhbGl6ZXMgc3R5bGluZyBwcm9jZXNzaW5nIHRvIGluY3JlYXNlIGVhc2Ugb2YgdXNlIGFuZCByb2J1c3RuZXNzXG4gKiBpbiBob3cgY29tcG9uZW50cyB1c2UgYW5kIGFwcGx5IHN0eWxpbmcgYW5kIHRoZW1pbmcuXG4gKlxuICogQXV0b21hdGljYWxseSBtZXJnZXMgYW5kIGFwcGxpZXMgdGhlbWVzIGFuZCBzdHlsZXMgd2l0aCB0aGVtZSAvIHN0eWxlcHJvcHMgaGF2aW5nIHRoZSBoaWdoZXN0IHByaW9yaXR5LlxuICogU3RhdGUgY29tcG9uZW50LCBpZiBwcm92aWRlZCwgaXMgcGFzc2VkIGluIHByb3BzIGZvciBwcm9jZXNzaW5nLiBQcm9wcyBmcm9tIHN0YXRlIC8gdXNlciBhcmUgYXV0b21hdGljYWxseSBwcm9jZXNzZWRcbiAqIGFuZCBzdHlsZWQgYmVmb3JlIGZpbmFsbHkgYmVpbmcgcGFzc2VkIHRvIHZpZXcuXG4gKlxuICogU3RhdGUgY29tcG9uZW50cyBzaG91bGQgY29udGFpbiBhbGwgc3RhdGVmdWwgYmVoYXZpb3IgYW5kIHNob3VsZCBub3QgZ2VuZXJhdGUgYW55IEpTWCwgYnV0IHJhdGhlciBzaW1wbHkgY2FsbFxuICogdGhlIHZpZXcgcHJvcC5cbiAqXG4gKiBWaWV3cyBzaG91bGQgc2ltcGx5IGJlIHN0YXRlbGVzcyBwdXJlIGZ1bmN0aW9ucyB0aGF0IHJlY2VpdmUgYWxsIHByb3BzIG5lZWRlZCBmb3IgcmVuZGVyaW5nIHRoZWlyIG91dHB1dC5cbiAqXG4gKiBTdGF0ZSBjb21wb25lbnQgaXMgb3B0aW9uYWwuIElmIHN0YXRlIGlzIG5vdCBwcm92aWRlZCwgY3JlYXRlZCBjb21wb25lbnQgaXMgZXNzZW50aWFsbHkgYSBmdW5jdGlvbmFsXG4gKiBzdGF0ZWxlc3MgY29tcG9uZW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gY29tcG9uZW50IENvbXBvbmVudCBvcHRpb25zLiBTZWUgSUNvbXBvbmVudE9wdGlvbnMgZm9yIG1vcmUgZGV0YWlsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50KHZpZXcsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBfYSA9IG9wdGlvbnMuZmFjdG9yeU9wdGlvbnMsIGZhY3RvcnlPcHRpb25zID0gX2EgPT09IHZvaWQgMCA/IHt9IDogX2E7XG4gICAgdmFyIGRlZmF1bHRQcm9wID0gZmFjdG9yeU9wdGlvbnMuZGVmYXVsdFByb3A7XG4gICAgdmFyIFJlc3VsdENvbXBvbmVudCA9IGZ1bmN0aW9uIChjb21wb25lbnRQcm9wcykge1xuICAgICAgICB2YXIgc2V0dGluZ3MgPSBfZ2V0Q3VzdG9taXphdGlvbnMob3B0aW9ucy5kaXNwbGF5TmFtZSwgUmVhY3QudXNlQ29udGV4dChDdXN0b21pemVyQ29udGV4dCksIG9wdGlvbnMuZmllbGRzKTtcbiAgICAgICAgdmFyIHN0YXRlUmVkdWNlciA9IG9wdGlvbnMuc3RhdGU7XG4gICAgICAgIGlmIChzdGF0ZVJlZHVjZXIpIHtcbiAgICAgICAgICAgIC8vIERvbid0IGFzc3VtZSBzdGF0ZSB3aWxsIHJldHVybiBhbGwgcHJvcHMsIHNvIHNwcmVhZCB1c2VTdGF0ZSByZXN1bHQgb3ZlciBjb21wb25lbnQgcHJvcHMuXG4gICAgICAgICAgICBjb21wb25lbnRQcm9wcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb21wb25lbnRQcm9wcyksIHN0YXRlUmVkdWNlcihjb21wb25lbnRQcm9wcykpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGVtZSA9IGNvbXBvbmVudFByb3BzLnRoZW1lIHx8IHNldHRpbmdzLnRoZW1lO1xuICAgICAgICB2YXIgdG9rZW5zID0gX3Jlc29sdmVUb2tlbnMoY29tcG9uZW50UHJvcHMsIHRoZW1lLCBvcHRpb25zLnRva2Vucywgc2V0dGluZ3MudG9rZW5zLCBjb21wb25lbnRQcm9wcy50b2tlbnMpO1xuICAgICAgICB2YXIgc3R5bGVzID0gX3Jlc29sdmVTdHlsZXMoY29tcG9uZW50UHJvcHMsIHRoZW1lLCB0b2tlbnMsIG9wdGlvbnMuc3R5bGVzLCBzZXR0aW5ncy5zdHlsZXMsIGNvbXBvbmVudFByb3BzLnN0eWxlcyk7XG4gICAgICAgIHZhciB2aWV3UHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29tcG9uZW50UHJvcHMpLCB7IHN0eWxlczogc3R5bGVzLCB0b2tlbnM6IHRva2VucywgX2RlZmF1bHRTdHlsZXM6IHN0eWxlcywgdGhlbWU6IHRoZW1lIH0pO1xuICAgICAgICByZXR1cm4gdmlldyh2aWV3UHJvcHMpO1xuICAgIH07XG4gICAgUmVzdWx0Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZSB8fCB2aWV3Lm5hbWU7XG4gICAgLy8gSWYgYSBzaG9ydGhhbmQgcHJvcCBpcyBkZWZpbmVkLCBjcmVhdGUgYSBmYWN0b3J5IGZvciB0aGUgY29tcG9uZW50LlxuICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkbid0IGJlIGEgY29uY2VybiBvZiBjcmVhdGVDb21wb25lbnQuLiBmYWN0b3J5T3B0aW9ucyBzaG91bGQganVzdCBiZSBmb3J3YXJkZWQuXG4gICAgLy8gICAgICAgTmVlZCB0byB3ZWlnaCBjcmVhdGluZyBkZWZhdWx0IGZhY3RvcmllcyBvbiBjb21wb25lbnQgY3JlYXRpb24gdnMuIG1lbW9pemluZyB0aGVtIG9uIHVzZSBpbiBzbG90cy50c3guXG4gICAgaWYgKGRlZmF1bHRQcm9wKSB7XG4gICAgICAgIFJlc3VsdENvbXBvbmVudC5jcmVhdGUgPSBjcmVhdGVGYWN0b3J5KFJlc3VsdENvbXBvbmVudCwgeyBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgfSk7XG4gICAgfVxuICAgIGFzc2lnbihSZXN1bHRDb21wb25lbnQsIG9wdGlvbnMuc3RhdGljcyk7XG4gICAgLy8gTGF0ZXIgdmVyc2lvbnMgb2YgVHlwZVNyaXB0IHNob3VsZCBhbGxvdyB1cyB0byBtZXJnZSBvYmplY3RzIGluIGEgdHlwZSBzYWZlIHdheSBhbmQgYXZvaWQgdGhpcyBjYXN0LlxuICAgIHJldHVybiBSZXN1bHRDb21wb25lbnQ7XG59XG4vKipcbiAqIFJlc29sdmUgYWxsIHN0eWxlcyBmdW5jdGlvbnMgd2l0aCBib3RoIHByb3BzIGFuZCB0b2tlbnMgYW5kIGZsYXR0ZW4gcmVzdWx0cyBhbG9uZyB3aXRoIGFsbCBzdHlsZXMgb2JqZWN0cy5cbiAqL1xuZnVuY3Rpb24gX3Jlc29sdmVTdHlsZXMocHJvcHMsIHRoZW1lLCB0b2tlbnMpIHtcbiAgICB2YXIgYWxsU3R5bGVzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAzOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYWxsU3R5bGVzW19pIC0gM10gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gY29uY2F0U3R5bGVTZXRzLmFwcGx5KHZvaWQgMCwgYWxsU3R5bGVzLm1hcChmdW5jdGlvbiAoc3R5bGVzKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygc3R5bGVzID09PSAnZnVuY3Rpb24nID8gc3R5bGVzKHByb3BzLCB0aGVtZSwgdG9rZW5zKSA6IHN0eWxlcztcbiAgICB9KSk7XG59XG4vKipcbiAqIFJlc29sdmUgYWxsIHRva2VucyBmdW5jdGlvbnMgd2l0aCBwcm9wcyBmbGF0dGVuIHJlc3VsdHMgYWxvbmcgd2l0aCBhbGwgdG9rZW5zIG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIF9yZXNvbHZlVG9rZW5zKHByb3BzLCB0aGVtZSkge1xuICAgIHZhciBhbGxUb2tlbnMgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhbGxUb2tlbnNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHZhciB0b2tlbnMgPSB7fTtcbiAgICBmb3IgKHZhciBfYSA9IDAsIGFsbFRva2Vuc18xID0gYWxsVG9rZW5zOyBfYSA8IGFsbFRva2Vuc18xLmxlbmd0aDsgX2ErKykge1xuICAgICAgICB2YXIgY3VycmVudFRva2VucyA9IGFsbFRva2Vuc18xW19hXTtcbiAgICAgICAgaWYgKGN1cnJlbnRUb2tlbnMpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IHdoeSBpcyB0aGlzIGNhc3QgbmVlZGVkPyBUUyBzZWVtcyB0byB0aGluayB0aGVyZSBpcyBhIChUVG9rZW4gfCBGdW5jdGlvbikgdW5pb24gZnJvbSBzb21ld2hlcmUuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW5zID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgY3VycmVudFRva2VucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnRUb2tlbnMocHJvcHMsIHRoZW1lKVxuICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRUb2tlbnM7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50VG9rZW5zKSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbnMgPSBfcmVzb2x2ZVRva2Vucy5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW3Byb3BzLCB0aGVtZV0sIGN1cnJlbnRUb2tlbnMsIGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhc3NpZ24odG9rZW5zLCBjdXJyZW50VG9rZW5zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zO1xufVxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGxpbmcgQ3VzdG9taXphdGlvbnMuZ2V0U2V0dGluZ3MgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQgZmllbGRzLlxuICpcbiAqIEBwYXJhbSBkaXNwbGF5TmFtZSBEaXNwbGF5YWJsZSBuYW1lIGZvciBjb21wb25lbnQuXG4gKiBAcGFyYW0gY29udGV4dCBSZWFjdCBjb250ZXh0IHBhc3NlZCB0byBjb21wb25lbnQgY29udGFpbmluZyBjb250ZXh0dWFsIHNldHRpbmdzLlxuICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbCBsaXN0IG9mIHByb3BlcnRpZXMgdG8gZ3JhYiBmcm9tIGdsb2JhbCBzdG9yZSBhbmQgY29udGV4dC5cbiAqL1xuZnVuY3Rpb24gX2dldEN1c3RvbWl6YXRpb25zKGRpc3BsYXlOYW1lLCBjb250ZXh0LCBmaWVsZHMpIHtcbiAgICAvLyBUT0RPOiBkbyB3ZSB3YW50IGZpZWxkIHByb3BzPyBzaG91bGQgZmllbGRzIGJlIHBhcnQgb2YgSUNvbXBvbmVudCBhbmQgdXNlZCBoZXJlP1xuICAgIC8vIFRPRE86IHNob3VsZCB3ZSBjZW50cmFsbHkgZGVmaW5lIERlZmF1bHRGaWVsZHM/IChub3QgZXhwb3J0ZWQgZnJvbSBzdHlsaW5nKVxuICAgIC8vIFRPRE86IHRpZSB0aGlzIGFycmF5IHRvIElDdXN0b21pemF0aW9uUHJvcHMsIHN1Y2ggdGhhdCBlYWNoIGFycmF5IGVsZW1lbnQgaXMga2V5b2YgSUN1c3RvbWl6YXRpb25Qcm9wc1xuICAgIHZhciBEZWZhdWx0RmllbGRzID0gWyd0aGVtZScsICdzdHlsZXMnLCAndG9rZW5zJ107XG4gICAgcmV0dXJuIEN1c3RvbWl6YXRpb25zLmdldFNldHRpbmdzKGZpZWxkcyB8fCBEZWZhdWx0RmllbGRzLCBkaXNwbGF5TmFtZSwgY29udGV4dC5jdXN0b21pemF0aW9ucyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcmVhdGVDb21wb25lbnQuanMubWFwIiwiaW1wb3J0IHsgZ2V0R2xvYmFsQ2xhc3NOYW1lcyB9IGZyb20gJy4uLy4uLy4uL1N0eWxpbmcnO1xuZXhwb3J0IHZhciBHbG9iYWxDbGFzc05hbWVzID0ge1xuICAgIHJvb3Q6ICdtcy1TdGFja0l0ZW0nLFxufTtcbnZhciBhbGlnbk1hcCA9IHtcbiAgICBzdGFydDogJ2ZsZXgtc3RhcnQnLFxuICAgIGVuZDogJ2ZsZXgtZW5kJyxcbn07XG5leHBvcnQgdmFyIFN0YWNrSXRlbVN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcywgdGhlbWUsIHRva2Vucykge1xuICAgIHZhciBncm93ID0gcHJvcHMuZ3Jvdywgc2hyaW5rID0gcHJvcHMuc2hyaW5rLCBkaXNhYmxlU2hyaW5rID0gcHJvcHMuZGlzYWJsZVNocmluaywgYWxpZ24gPSBwcm9wcy5hbGlnbiwgdmVydGljYWxGaWxsID0gcHJvcHMudmVydGljYWxGaWxsLCBvcmRlciA9IHByb3BzLm9yZGVyLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIF9hID0gcHJvcHMuYmFzaXMsIGJhc2lzID0gX2EgPT09IHZvaWQgMCA/ICdhdXRvJyA6IF9hO1xuICAgIHZhciBjbGFzc05hbWVzID0gZ2V0R2xvYmFsQ2xhc3NOYW1lcyhHbG9iYWxDbGFzc05hbWVzLCB0aGVtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgdGhlbWUuZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5yb290LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZsZXhCYXNpczogYmFzaXMsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiB0b2tlbnMubWFyZ2luLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHRva2Vucy5wYWRkaW5nLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdmVydGljYWxGaWxsID8gJzEwMCUnIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnYXV0bycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ3JvdyAmJiB7XG4gICAgICAgICAgICAgICAgZmxleEdyb3c6IGdyb3cgPT09IHRydWUgPyAxIDogZ3JvdyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZGlzYWJsZVNocmluayB8fCAoIWdyb3cgJiYgIXNocmluaykpICYmIHtcbiAgICAgICAgICAgICAgICBmbGV4U2hyaW5rOiAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNocmluayAmJlxuICAgICAgICAgICAgICAgICFkaXNhYmxlU2hyaW5rICYmIHtcbiAgICAgICAgICAgICAgICBmbGV4U2hyaW5rOiAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFsaWduICYmIHtcbiAgICAgICAgICAgICAgICBhbGlnblNlbGY6IGFsaWduTWFwW2FsaWduXSB8fCBhbGlnbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcmRlciAmJiB7XG4gICAgICAgICAgICAgICAgb3JkZXI6IG9yZGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgXSxcbiAgICAgICAgLy8gVE9ETzogdGhpcyBjYXN0IG1heSBiZSBoaWRpbmcgc29tZSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggc3R5bGluZyBhbmQgbmFtZVxuICAgICAgICAvLyAgICAgICAgbG9va3VwcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWRcbiAgICB9O1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YWNrSXRlbS5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHdpdGhTbG90cywgY3JlYXRlQ29tcG9uZW50LCBnZXRTbG90cyB9IGZyb20gJ0BmbHVlbnR1aS9mb3VuZGF0aW9uLWxlZ2FjeSc7XG5pbXBvcnQgeyBnZXROYXRpdmVQcm9wcywgaHRtbEVsZW1lbnRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IFN0YWNrSXRlbVN0eWxlcyBhcyBzdHlsZXMgfSBmcm9tICcuL1N0YWNrSXRlbS5zdHlsZXMnO1xudmFyIFN0YWNrSXRlbVZpZXcgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBnZXROYXRpdmVQcm9wcyhwcm9wcywgaHRtbEVsZW1lbnRQcm9wZXJ0aWVzKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBTbG90cyA9IGdldFNsb3RzKHByb3BzLCB7XG4gICAgICAgIHJvb3Q6ICdkaXYnLFxuICAgIH0pO1xuICAgIHJldHVybiB3aXRoU2xvdHMoU2xvdHMucm9vdCwgX19hc3NpZ24oe30sIG5hdGl2ZVByb3BzKSwgY2hpbGRyZW4pO1xufTtcbmV4cG9ydCB2YXIgU3RhY2tJdGVtID0gY3JlYXRlQ29tcG9uZW50KFN0YWNrSXRlbVZpZXcsIHtcbiAgICBkaXNwbGF5TmFtZTogJ1N0YWNrSXRlbScsXG4gICAgc3R5bGVzOiBzdHlsZXMsXG59KTtcbmV4cG9ydCBkZWZhdWx0IFN0YWNrSXRlbTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YWNrSXRlbS5qcy5tYXAiLCIvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0cyBhIHRoZW1lZCBzcGFjaW5nIGtleSAoaWYgZ2l2ZW4pIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRoZW1lZCBzcGFjaW5nIHZhbHVlLlxudmFyIF9nZXRUaGVtZWRTcGFjaW5nID0gZnVuY3Rpb24gKHNwYWNlLCB0aGVtZSkge1xuICAgIGlmICh0aGVtZS5zcGFjaW5nLmhhc093blByb3BlcnR5KHNwYWNlKSkge1xuICAgICAgICByZXR1cm4gdGhlbWUuc3BhY2luZ1tzcGFjZV07XG4gICAgfVxuICAgIHJldHVybiBzcGFjZTtcbn07XG4vLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIGdhcCBhcyBhIHN0cmluZyBhbmQgY29udmVydHMgaXQgaW50byBhIHsgdmFsdWUsIHVuaXQgfSByZXByZXNlbnRhdGlvbi5cbnZhciBfZ2V0VmFsdWVVbml0R2FwID0gZnVuY3Rpb24gKGdhcCkge1xuICAgIHZhciBudW1lcmljYWxQYXJ0ID0gcGFyc2VGbG9hdChnYXApO1xuICAgIHZhciBudW1lcmljYWxWYWx1ZSA9IGlzTmFOKG51bWVyaWNhbFBhcnQpID8gMCA6IG51bWVyaWNhbFBhcnQ7XG4gICAgdmFyIG51bWVyaWNhbFN0cmluZyA9IGlzTmFOKG51bWVyaWNhbFBhcnQpID8gJycgOiBudW1lcmljYWxQYXJ0LnRvU3RyaW5nKCk7XG4gICAgdmFyIHVuaXRQYXJ0ID0gZ2FwLnN1YnN0cmluZyhudW1lcmljYWxTdHJpbmcudG9TdHJpbmcoKS5sZW5ndGgpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBudW1lcmljYWxWYWx1ZSxcbiAgICAgICAgdW5pdDogdW5pdFBhcnQgfHwgJ3B4JyxcbiAgICB9O1xufTtcbi8qKlxuICogVGFrZXMgaW4gYSBnYXAgc2l6ZSBpbiBlaXRoZXIgYSBDU1Mtc3R5bGUgZm9ybWF0IChlLmcuIDEwIG9yIFwiMTBweFwiKVxuICogIG9yIGEga2V5IG9mIGEgdGhlbWVkIHNwYWNpbmcgdmFsdWUgKGUuZy4gXCJzMVwiKS5cbiAqIFJldHVybnMgdGhlIHNlcGFyYXRlIG51bWVyaWNhbCB2YWx1ZSBvZiB0aGUgcGFkZGluZyAoZS5nLiAxMClcbiAqICBhbmQgdGhlIENTUyB1bml0IChlLmcuIFwicHhcIikuXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VHYXAgPSBmdW5jdGlvbiAoZ2FwLCB0aGVtZSkge1xuICAgIGlmIChnYXAgPT09IHVuZGVmaW5lZCB8fCBnYXAgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb3dHYXA6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICB1bml0OiAncHgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbHVtbkdhcDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgIHVuaXQ6ICdweCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGdhcCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvd0dhcDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBnYXAsXG4gICAgICAgICAgICAgICAgdW5pdDogJ3B4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb2x1bW5HYXA6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZ2FwLFxuICAgICAgICAgICAgICAgIHVuaXQ6ICdweCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICB2YXIgc3BsaXRHYXAgPSBnYXAuc3BsaXQoJyAnKTtcbiAgICAvLyBJZiB0aGUgYXJyYXkgaGFzIG1vcmUgdGhhbiB0d28gdmFsdWVzLCB0aGVuIHJldHVybiAwcHguXG4gICAgaWYgKHNwbGl0R2FwLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJvd0dhcDoge1xuICAgICAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgICAgIHVuaXQ6ICdweCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29sdW1uR2FwOiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgdW5pdDogJ3B4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIElmIHRoZSBhcnJheSBoYXMgdHdvIHZhbHVlcywgdGhlbiBwYXJzZSBlYWNoIG9uZS5cbiAgICBpZiAoc3BsaXRHYXAubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb3dHYXA6IF9nZXRWYWx1ZVVuaXRHYXAoX2dldFRoZW1lZFNwYWNpbmcoc3BsaXRHYXBbMF0sIHRoZW1lKSksXG4gICAgICAgICAgICBjb2x1bW5HYXA6IF9nZXRWYWx1ZVVuaXRHYXAoX2dldFRoZW1lZFNwYWNpbmcoc3BsaXRHYXBbMV0sIHRoZW1lKSksXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIEVsc2UsIHBhcnNlIHRoZSBudW1lcmljYWwgdmFsdWUgYW5kIHBhc3MgaXQgYXMgYm90aCB0aGUgdmVydGljYWwgYW5kIGhvcml6b250YWwgZ2FwLlxuICAgIHZhciBjYWxjdWxhdGVkR2FwID0gX2dldFZhbHVlVW5pdEdhcChfZ2V0VGhlbWVkU3BhY2luZyhnYXAsIHRoZW1lKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm93R2FwOiBjYWxjdWxhdGVkR2FwLFxuICAgICAgICBjb2x1bW5HYXA6IGNhbGN1bGF0ZWRHYXAsXG4gICAgfTtcbn07XG4vKipcbiAqIFRha2VzIGluIGEgcGFkZGluZyBpbiBhIENTUy1zdHlsZSBmb3JtYXQgKGUuZy4gMTAsIFwiMTBweFwiLCBcIjEwcHggMTBweFwiLCBldGMuKVxuICogIHdoZXJlIHRoZSBzZXBhcmF0ZSBwYWRkaW5nIHZhbHVlcyBjYW4gYWxzbyBiZSB0aGUga2V5IG9mIGEgdGhlbWVkIHNwYWNpbmcgdmFsdWVcbiAqICAoZS5nLiBcInMxIG1cIiwgXCIxMHB4IGwxIDIwcHggbDJcIiwgZXRjLikuXG4gKiBSZXR1cm5zIGEgQ1NTLXN0eWxlIHBhZGRpbmcuXG4gKi9cbmV4cG9ydCB2YXIgcGFyc2VQYWRkaW5nID0gZnVuY3Rpb24gKHBhZGRpbmcsIHRoZW1lKSB7XG4gICAgaWYgKHBhZGRpbmcgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgcGFkZGluZyA9PT0gJ251bWJlcicgfHwgcGFkZGluZyA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHBhZGRpbmc7XG4gICAgfVxuICAgIHZhciBwYWRkaW5nVmFsdWVzID0gcGFkZGluZy5zcGxpdCgnICcpO1xuICAgIGlmIChwYWRkaW5nVmFsdWVzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRUaGVtZWRTcGFjaW5nKHBhZGRpbmcsIHRoZW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZGRpbmdWYWx1ZXMucmVkdWNlKGZ1bmN0aW9uIChwYWRkaW5nMSwgcGFkZGluZzIpIHtcbiAgICAgICAgcmV0dXJuIF9nZXRUaGVtZWRTcGFjaW5nKHBhZGRpbmcxLCB0aGVtZSkgKyAnICcgKyBfZ2V0VGhlbWVkU3BhY2luZyhwYWRkaW5nMiwgdGhlbWUpO1xuICAgIH0pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0YWNrVXRpbHMuanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGdldEdsb2JhbENsYXNzTmFtZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IEdsb2JhbENsYXNzTmFtZXMgYXMgU3RhY2tJdGVtR2xvYmFsQ2xhc3NOYW1lcyB9IGZyb20gJy4vU3RhY2tJdGVtL1N0YWNrSXRlbS5zdHlsZXMnO1xuaW1wb3J0IHsgcGFyc2VHYXAsIHBhcnNlUGFkZGluZyB9IGZyb20gJy4vU3RhY2tVdGlscyc7XG52YXIgbmFtZU1hcCA9IHtcbiAgICBzdGFydDogJ2ZsZXgtc3RhcnQnLFxuICAgIGVuZDogJ2ZsZXgtZW5kJyxcbn07XG5leHBvcnQgdmFyIEdsb2JhbENsYXNzTmFtZXMgPSB7XG4gICAgcm9vdDogJ21zLVN0YWNrJyxcbiAgICBpbm5lcjogJ21zLVN0YWNrLWlubmVyJyxcbiAgICBjaGlsZDogJ21zLVN0YWNrLWNoaWxkJyxcbn07XG5leHBvcnQgdmFyIHN0eWxlcyA9IGZ1bmN0aW9uIChwcm9wcywgdGhlbWUsIHRva2Vucykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tLCBfbztcbiAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBkaXNhYmxlU2hyaW5rID0gcHJvcHMuZGlzYWJsZVNocmluaywgZW5hYmxlU2NvcGVkU2VsZWN0b3JzID0gcHJvcHMuZW5hYmxlU2NvcGVkU2VsZWN0b3JzLCBncm93ID0gcHJvcHMuZ3JvdywgaG9yaXpvbnRhbCA9IHByb3BzLmhvcml6b250YWwsIGhvcml6b250YWxBbGlnbiA9IHByb3BzLmhvcml6b250YWxBbGlnbiwgcmV2ZXJzZWQgPSBwcm9wcy5yZXZlcnNlZCwgdmVydGljYWxBbGlnbiA9IHByb3BzLnZlcnRpY2FsQWxpZ24sIHZlcnRpY2FsRmlsbCA9IHByb3BzLnZlcnRpY2FsRmlsbCwgd3JhcCA9IHByb3BzLndyYXA7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRHbG9iYWxDbGFzc05hbWVzKEdsb2JhbENsYXNzTmFtZXMsIHRoZW1lKTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbiAqL1xuICAgIHZhciBjaGlsZHJlbkdhcCA9IHRva2VucyAmJiB0b2tlbnMuY2hpbGRyZW5HYXAgPyB0b2tlbnMuY2hpbGRyZW5HYXAgOiBwcm9wcy5nYXA7XG4gICAgdmFyIG1heEhlaWdodCA9IHRva2VucyAmJiB0b2tlbnMubWF4SGVpZ2h0ID8gdG9rZW5zLm1heEhlaWdodCA6IHByb3BzLm1heEhlaWdodDtcbiAgICB2YXIgbWF4V2lkdGggPSB0b2tlbnMgJiYgdG9rZW5zLm1heFdpZHRoID8gdG9rZW5zLm1heFdpZHRoIDogcHJvcHMubWF4V2lkdGg7XG4gICAgdmFyIHBhZGRpbmcgPSB0b2tlbnMgJiYgdG9rZW5zLnBhZGRpbmcgPyB0b2tlbnMucGFkZGluZyA6IHByb3BzLnBhZGRpbmc7XG4gICAgLyogZXNsaW50LWVuYWJsZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvbiAqL1xuICAgIHZhciBfcCA9IHBhcnNlR2FwKGNoaWxkcmVuR2FwLCB0aGVtZSksIHJvd0dhcCA9IF9wLnJvd0dhcCwgY29sdW1uR2FwID0gX3AuY29sdW1uR2FwO1xuICAgIHZhciBob3Jpem9udGFsTWFyZ2luID0gXCJcIi5jb25jYXQoLTAuNSAqIGNvbHVtbkdhcC52YWx1ZSkuY29uY2F0KGNvbHVtbkdhcC51bml0KTtcbiAgICB2YXIgdmVydGljYWxNYXJnaW4gPSBcIlwiLmNvbmNhdCgtMC41ICogcm93R2FwLnZhbHVlKS5jb25jYXQocm93R2FwLnVuaXQpO1xuICAgIC8vIHN0eWxlcyB0byBiZSBhcHBsaWVkIHRvIGFsbCBkaXJlY3QgY2hpbGRyZW4gcmVnYXJkbGVzcyBvZiB3cmFwIG9yIGRpcmVjdGlvblxuICAgIHZhciBjaGlsZFN0eWxlcyA9IHtcbiAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIH07XG4gICAgdmFyIGNoaWxkU2VsZWN0b3IgPSAnPiAnICsgKGVuYWJsZVNjb3BlZFNlbGVjdG9ycyA/ICcuJyArIEdsb2JhbENsYXNzTmFtZXMuY2hpbGQgOiAnKicpO1xuICAgIHZhciBkaXNhYmxlU2hyaW5rU3R5bGVzID0gKF9hID0ge30sXG4gICAgICAgIC8vIGZsZXhTaHJpbmsgc3R5bGVzIGFyZSBhcHBsaWVkIGJ5IHRoZSBTdGFja0l0ZW1cbiAgICAgICAgX2FbXCJcIi5jb25jYXQoY2hpbGRTZWxlY3RvciwgXCI6bm90KC5cIikuY29uY2F0KFN0YWNrSXRlbUdsb2JhbENsYXNzTmFtZXMucm9vdCwgXCIpXCIpXSA9IHtcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIF9hKTtcbiAgICBpZiAod3JhcCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcm9vdDogW1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBtYXhXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbEFsaWduICYmIChfYiA9IHt9LFxuICAgICAgICAgICAgICAgICAgICBfYltob3Jpem9udGFsID8gJ2p1c3RpZnlDb250ZW50JyA6ICdhbGlnbkl0ZW1zJ10gPSBuYW1lTWFwW2hvcml6b250YWxBbGlnbl0gfHwgaG9yaXpvbnRhbEFsaWduLFxuICAgICAgICAgICAgICAgICAgICBfYiksXG4gICAgICAgICAgICAgICAgdmVydGljYWxBbGlnbiAmJiAoX2MgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2NbaG9yaXpvbnRhbCA/ICdhbGlnbkl0ZW1zJyA6ICdqdXN0aWZ5Q29udGVudCddID0gbmFtZU1hcFt2ZXJ0aWNhbEFsaWduXSB8fCB2ZXJ0aWNhbEFsaWduLFxuICAgICAgICAgICAgICAgICAgICBfYyksXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IGFsbG93ZWQgdG8gYmUgb3ZlcnJpZGRlbiBieSBjbGFzc05hbWVcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gcHJldmVudCBjb2xsYXBzaW5nIG1hcmdpbnNcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbCAmJiB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdmVydGljYWxGaWxsID8gJzEwMCUnIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgaW5uZXI6IFtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWVzLmlubmVyLFxuICAgICAgICAgICAgICAgIChfZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBob3Jpem9udGFsTWFyZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGhvcml6b250YWxNYXJnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IHZlcnRpY2FsTWFyZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiB2ZXJ0aWNhbE1hcmdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IHBhcnNlUGFkZGluZyhwYWRkaW5nLCB0aGVtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdm9pZCB1bm5lY2Vzc2FyeSBjYWxjKCkgY2FsbHMgaWYgaG9yaXpvbnRhbCBnYXAgaXMgMFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbkdhcC52YWx1ZSA9PT0gMCA/ICcxMDAlJyA6IFwiY2FsYygxMDAlICsgXCIuY29uY2F0KGNvbHVtbkdhcC52YWx1ZSkuY29uY2F0KGNvbHVtbkdhcC51bml0LCBcIilcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogJzEwMHZ3J1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfZFtjaGlsZFNlbGVjdG9yXSA9IF9fYXNzaWduKHsgbWFyZ2luOiBcIlwiLmNvbmNhdCgwLjUgKiByb3dHYXAudmFsdWUpLmNvbmNhdChyb3dHYXAudW5pdCwgXCIgXCIpLmNvbmNhdCgwLjUgKiBjb2x1bW5HYXAudmFsdWUpLmNvbmNhdChjb2x1bW5HYXAudW5pdCkgfSwgY2hpbGRTdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICBfZCksXG4gICAgICAgICAgICAgICAgZGlzYWJsZVNocmluayAmJiBkaXNhYmxlU2hyaW5rU3R5bGVzLFxuICAgICAgICAgICAgICAgIGhvcml6b250YWxBbGlnbiAmJiAoX2UgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgX2VbaG9yaXpvbnRhbCA/ICdqdXN0aWZ5Q29udGVudCcgOiAnYWxpZ25JdGVtcyddID0gbmFtZU1hcFtob3Jpem9udGFsQWxpZ25dIHx8IGhvcml6b250YWxBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgX2UpLFxuICAgICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ24gJiYgKF9mID0ge30sXG4gICAgICAgICAgICAgICAgICAgIF9mW2hvcml6b250YWwgPyAnYWxpZ25JdGVtcycgOiAnanVzdGlmeUNvbnRlbnQnXSA9IG5hbWVNYXBbdmVydGljYWxBbGlnbl0gfHwgdmVydGljYWxBbGlnbixcbiAgICAgICAgICAgICAgICAgICAgX2YpLFxuICAgICAgICAgICAgICAgIGhvcml6b250YWwgJiYgKF9nID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogcmV2ZXJzZWQgPyAncm93LXJldmVyc2UnIDogJ3JvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdm9pZCB1bm5lY2Vzc2FyeSBjYWxjKCkgY2FsbHMgaWYgdmVydGljYWwgZ2FwIGlzIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogcm93R2FwLnZhbHVlID09PSAwID8gJzEwMCUnIDogXCJjYWxjKDEwMCUgKyBcIi5jb25jYXQocm93R2FwLnZhbHVlKS5jb25jYXQocm93R2FwLnVuaXQsIFwiKVwiKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfZ1tjaGlsZFNlbGVjdG9yXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBjb2x1bW5HYXAudmFsdWUgPT09IDAgPyAnMTAwJScgOiBcImNhbGMoMTAwJSAtIFwiLmNvbmNhdChjb2x1bW5HYXAudmFsdWUpLmNvbmNhdChjb2x1bW5HYXAudW5pdCwgXCIpXCIpLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfZyksXG4gICAgICAgICAgICAgICAgIWhvcml6b250YWwgJiYgKF9oID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogcmV2ZXJzZWQgPyAnY29sdW1uLXJldmVyc2UnIDogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiY2FsYygxMDAlICsgXCIuY29uY2F0KHJvd0dhcC52YWx1ZSkuY29uY2F0KHJvd0dhcC51bml0LCBcIilcIilcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX2hbY2hpbGRTZWxlY3Rvcl0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IHJvd0dhcC52YWx1ZSA9PT0gMCA/ICcxMDAlJyA6IFwiY2FsYygxMDAlIC0gXCIuY29uY2F0KHJvd0dhcC52YWx1ZSkuY29uY2F0KHJvd0dhcC51bml0LCBcIilcIiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9oKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHJvb3Q6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucm9vdCxcbiAgICAgICAgICAgIChfaiA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBob3Jpem9udGFsID8gKHJldmVyc2VkID8gJ3Jvdy1yZXZlcnNlJyA6ICdyb3cnKSA6IHJldmVyc2VkID8gJ2NvbHVtbi1yZXZlcnNlJyA6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgICAgICBmbGV4V3JhcDogJ25vd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdmVydGljYWxGaWxsID8gJzEwMCUnIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIG1heEhlaWdodDogbWF4SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBwYXJzZVBhZGRpbmcocGFkZGluZywgdGhlbWUpLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94J1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX2pbY2hpbGRTZWxlY3Rvcl0gPSBjaGlsZFN0eWxlcyxcbiAgICAgICAgICAgICAgICBfaiksXG4gICAgICAgICAgICBkaXNhYmxlU2hyaW5rICYmIGRpc2FibGVTaHJpbmtTdHlsZXMsXG4gICAgICAgICAgICBncm93ICYmIHtcbiAgICAgICAgICAgICAgICBmbGV4R3JvdzogZ3JvdyA9PT0gdHJ1ZSA/IDEgOiBncm93LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvcml6b250YWxBbGlnbiAmJiAoX2sgPSB7fSxcbiAgICAgICAgICAgICAgICBfa1tob3Jpem9udGFsID8gJ2p1c3RpZnlDb250ZW50JyA6ICdhbGlnbkl0ZW1zJ10gPSBuYW1lTWFwW2hvcml6b250YWxBbGlnbl0gfHwgaG9yaXpvbnRhbEFsaWduLFxuICAgICAgICAgICAgICAgIF9rKSxcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ24gJiYgKF9sID0ge30sXG4gICAgICAgICAgICAgICAgX2xbaG9yaXpvbnRhbCA/ICdhbGlnbkl0ZW1zJyA6ICdqdXN0aWZ5Q29udGVudCddID0gbmFtZU1hcFt2ZXJ0aWNhbEFsaWduXSB8fCB2ZXJ0aWNhbEFsaWduLFxuICAgICAgICAgICAgICAgIF9sKSxcbiAgICAgICAgICAgIGhvcml6b250YWwgJiZcbiAgICAgICAgICAgICAgICBjb2x1bW5HYXAudmFsdWUgPiAwICYmIChfbSA9IHt9LFxuICAgICAgICAgICAgICAgIC8vIGFwcGx5IGdhcCBtYXJnaW4gdG8gZXZlcnkgZGlyZWN0IGNoaWxkIGV4Y2VwdCB0aGUgZmlyc3QgZGlyZWN0IGNoaWxkIGlmIHRoZSBkaXJlY3Rpb24gaXMgbm90IHJldmVyc2VkLFxuICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgbGFzdCBkaXJlY3Qgb25lIGlmIGl0IGlzXG4gICAgICAgICAgICAgICAgX21bcmV2ZXJzZWQgPyBcIlwiLmNvbmNhdChjaGlsZFNlbGVjdG9yLCBcIjpub3QoOmxhc3QtY2hpbGQpXCIpIDogXCJcIi5jb25jYXQoY2hpbGRTZWxlY3RvciwgXCI6bm90KDpmaXJzdC1jaGlsZClcIildID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBcIlwiLmNvbmNhdChjb2x1bW5HYXAudmFsdWUpLmNvbmNhdChjb2x1bW5HYXAudW5pdCksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBfbSksXG4gICAgICAgICAgICAhaG9yaXpvbnRhbCAmJlxuICAgICAgICAgICAgICAgIHJvd0dhcC52YWx1ZSA+IDAgJiYgKF9vID0ge30sXG4gICAgICAgICAgICAgICAgLy8gYXBwbHkgZ2FwIG1hcmdpbiB0byBldmVyeSBkaXJlY3QgY2hpbGQgZXhjZXB0IHRoZSBmaXJzdCBkaXJlY3QgY2hpbGQgaWYgdGhlIGRpcmVjdGlvbiBpcyBub3QgcmV2ZXJzZWQsXG4gICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBsYXN0IGRpcmVjdCBvbmUgaWYgaXQgaXNcbiAgICAgICAgICAgICAgICBfb1tyZXZlcnNlZCA/IFwiXCIuY29uY2F0KGNoaWxkU2VsZWN0b3IsIFwiOm5vdCg6bGFzdC1jaGlsZClcIikgOiBcIlwiLmNvbmNhdChjaGlsZFNlbGVjdG9yLCBcIjpub3QoOmZpcnN0LWNoaWxkKVwiKV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogXCJcIi5jb25jYXQocm93R2FwLnZhbHVlKS5jb25jYXQocm93R2FwLnVuaXQpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgX28pLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBdLFxuICAgICAgICAvLyBUT0RPOiB0aGlzIGNhc3QgbWF5IGJlIGhpZGluZyBzb21lIHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBzdHlsaW5nIGFuZCBuYW1lXG4gICAgICAgIC8vICAgICAgICBsb29rdXBzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZFxuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RhY2suc3R5bGVzLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbi8qKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiogQGpzeCB3aXRoU2xvdHMgKi9cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhTbG90cywgY3JlYXRlQ29tcG9uZW50LCBnZXRTbG90cyB9IGZyb20gJ0BmbHVlbnR1aS9mb3VuZGF0aW9uLWxlZ2FjeSc7XG5pbXBvcnQgeyBjc3MsIGdldE5hdGl2ZVByb3BzLCBodG1sRWxlbWVudFByb3BlcnRpZXMsIHdhcm5EZXByZWNhdGlvbnMgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgc3R5bGVzLCBHbG9iYWxDbGFzc05hbWVzIGFzIFN0YWNrR2xvYmFsQ2xhc3NOYW1lcyB9IGZyb20gJy4vU3RhY2suc3R5bGVzJztcbmltcG9ydCB7IFN0YWNrSXRlbSB9IGZyb20gJy4vU3RhY2tJdGVtL1N0YWNrSXRlbSc7XG52YXIgU3RhY2tWaWV3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gcHJvcHMuYXMsIFJvb3RUeXBlID0gX2EgPT09IHZvaWQgMCA/ICdkaXYnIDogX2EsIF9iID0gcHJvcHMuZGlzYWJsZVNocmluaywgZGlzYWJsZVNocmluayA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBfYyA9IHByb3BzLmRvTm90UmVuZGVyRmFsc3lWYWx1ZXMsIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZXByZWNhdGlvbi9kZXByZWNhdGlvblxuICAgIGRvTm90UmVuZGVyRmFsc3lWYWx1ZXMgPSBfYyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYywgX2QgPSBwcm9wcy5lbmFibGVTY29wZWRTZWxlY3RvcnMsIGVuYWJsZVNjb3BlZFNlbGVjdG9ycyA9IF9kID09PSB2b2lkIDAgPyBmYWxzZSA6IF9kLCB3cmFwID0gcHJvcHMud3JhcCwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiYXNcIiwgXCJkaXNhYmxlU2hyaW5rXCIsIFwiZG9Ob3RSZW5kZXJGYWxzeVZhbHVlc1wiLCBcImVuYWJsZVNjb3BlZFNlbGVjdG9yc1wiLCBcIndyYXBcIl0pO1xuICAgIHdhcm5EZXByZWNhdGlvbnMoJ1N0YWNrJywgcHJvcHMsIHtcbiAgICAgICAgZ2FwOiAndG9rZW5zLmNoaWxkcmVuR2FwJyxcbiAgICAgICAgbWF4SGVpZ2h0OiAndG9rZW5zLm1heEhlaWdodCcsXG4gICAgICAgIG1heFdpZHRoOiAndG9rZW5zLm1heFdpZHRoJyxcbiAgICAgICAgcGFkZGluZzogJ3Rva2Vucy5wYWRkaW5nJyxcbiAgICB9KTtcbiAgICB2YXIgc3RhY2tDaGlsZHJlbiA9IF9wcm9jZXNzU3RhY2tDaGlsZHJlbihwcm9wcy5jaGlsZHJlbiwge1xuICAgICAgICBkaXNhYmxlU2hyaW5rOiBkaXNhYmxlU2hyaW5rLFxuICAgICAgICBlbmFibGVTY29wZWRTZWxlY3RvcnM6IGVuYWJsZVNjb3BlZFNlbGVjdG9ycyxcbiAgICAgICAgZG9Ob3RSZW5kZXJGYWxzeVZhbHVlczogZG9Ob3RSZW5kZXJGYWxzeVZhbHVlcyxcbiAgICB9KTtcbiAgICB2YXIgbmF0aXZlUHJvcHMgPSBnZXROYXRpdmVQcm9wcyhyZXN0LCBodG1sRWxlbWVudFByb3BlcnRpZXMpO1xuICAgIHZhciBTbG90cyA9IGdldFNsb3RzKHByb3BzLCB7XG4gICAgICAgIHJvb3Q6IFJvb3RUeXBlLFxuICAgICAgICBpbm5lcjogJ2RpdicsXG4gICAgfSk7XG4gICAgaWYgKHdyYXApIHtcbiAgICAgICAgcmV0dXJuICh3aXRoU2xvdHMoU2xvdHMucm9vdCwgX19hc3NpZ24oe30sIG5hdGl2ZVByb3BzKSxcbiAgICAgICAgICAgIHdpdGhTbG90cyhTbG90cy5pbm5lciwgbnVsbCwgc3RhY2tDaGlsZHJlbikpKTtcbiAgICB9XG4gICAgcmV0dXJuIHdpdGhTbG90cyhTbG90cy5yb290LCBfX2Fzc2lnbih7fSwgbmF0aXZlUHJvcHMpLCBzdGFja0NoaWxkcmVuKTtcbn07XG5mdW5jdGlvbiBfcHJvY2Vzc1N0YWNrQ2hpbGRyZW4oY2hpbGRyZW4sIF9hKSB7XG4gICAgdmFyIGRpc2FibGVTaHJpbmsgPSBfYS5kaXNhYmxlU2hyaW5rLCBlbmFibGVTY29wZWRTZWxlY3RvcnMgPSBfYS5lbmFibGVTY29wZWRTZWxlY3RvcnMsIGRvTm90UmVuZGVyRmFsc3lWYWx1ZXMgPSBfYS5kb05vdFJlbmRlckZhbHN5VmFsdWVzO1xuICAgIHZhciBjaGlsZHJlbkFycmF5ID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY2hpbGRyZW5BcnJheSA9IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbkFycmF5LCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKCFjaGlsZCB8fCAhUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZG9Ob3RSZW5kZXJGYWxzeVZhbHVlcyA/IG51bGwgOiBjaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gUmVhY3QuRnJhZ21lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZC5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgID8gX3Byb2Nlc3NTdGFja0NoaWxkcmVuKGNoaWxkLnByb3BzLmNoaWxkcmVuLCB7IGRpc2FibGVTaHJpbms6IGRpc2FibGVTaHJpbmssIGVuYWJsZVNjb3BlZFNlbGVjdG9yczogZW5hYmxlU2NvcGVkU2VsZWN0b3JzLCBkb05vdFJlbmRlckZhbHN5VmFsdWVzOiBkb05vdFJlbmRlckZhbHN5VmFsdWVzIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjaGlsZEFzUmVhY3RFbGVtZW50ID0gY2hpbGQ7XG4gICAgICAgIHZhciBkZWZhdWx0SXRlbVByb3BzID0ge307XG4gICAgICAgIGlmIChfaXNTdGFja0l0ZW0oY2hpbGQpKSB7XG4gICAgICAgICAgICBkZWZhdWx0SXRlbVByb3BzID0geyBzaHJpbms6ICFkaXNhYmxlU2hyaW5rIH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoaWxkQ2xhc3NOYW1lID0gY2hpbGRBc1JlYWN0RWxlbWVudC5wcm9wcy5jbGFzc05hbWU7XG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRBc1JlYWN0RWxlbWVudCwgX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIGRlZmF1bHRJdGVtUHJvcHMpLCBjaGlsZEFzUmVhY3RFbGVtZW50LnByb3BzKSwgKGNoaWxkQ2xhc3NOYW1lICYmIHsgY2xhc3NOYW1lOiBjaGlsZENsYXNzTmFtZSB9KSksIChlbmFibGVTY29wZWRTZWxlY3RvcnMgJiYgeyBjbGFzc05hbWU6IGNzcyhTdGFja0dsb2JhbENsYXNzTmFtZXMuY2hpbGQsIGNoaWxkQ2xhc3NOYW1lKSB9KSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBjaGlsZHJlbkFycmF5O1xufVxuZnVuY3Rpb24gX2lzU3RhY2tJdGVtKGl0ZW0pIHtcbiAgICAvLyBJbiB0aGVvcnksIHdlIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgY2hlY2sgaXRlbS50eXBlID09PSBTdGFja0l0ZW0uXG4gICAgLy8gSG93ZXZlciwgdW5kZXIgY2VydGFpbiB1bmNsZWFyIGNpcmN1bXN0YW5jZXMgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2ZsdWVudHVpL2lzc3Vlcy8xMDc4NSksXG4gICAgLy8gdGhlIG9iamVjdCBpZGVudGl0eSBpcyBkaWZmZXJlbnQgZGVzcGl0ZSB0aGUgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gYmVpbmcgdGhlIHNhbWUuXG4gICAgcmV0dXJuICghIWl0ZW0gJiZcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICEhaXRlbS50eXBlICYmXG4gICAgICAgIC8vIFN0YWNrSXRlbSBpcyBnZW5lcmF0ZWQgYnkgY3JlYXRlQ29tcG9uZW50LCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGl0cyBkaXNwbGF5TmFtZSBpbnN0ZWFkIG9mIG5hbWVcbiAgICAgICAgaXRlbS50eXBlLmRpc3BsYXlOYW1lID09PSBTdGFja0l0ZW0uZGlzcGxheU5hbWUpO1xufVxudmFyIFN0YWNrU3RhdGljcyA9IHtcbiAgICBJdGVtOiBTdGFja0l0ZW0sXG59O1xuZXhwb3J0IHZhciBTdGFjayA9IGNyZWF0ZUNvbXBvbmVudChTdGFja1ZpZXcsIHtcbiAgICBkaXNwbGF5TmFtZTogJ1N0YWNrJyxcbiAgICBzdHlsZXM6IHN0eWxlcyxcbiAgICBzdGF0aWNzOiBTdGFja1N0YXRpY3MsXG59KTtcbmV4cG9ydCBkZWZhdWx0IFN0YWNrO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U3RhY2suanMubWFwIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNsYXNzTmFtZXNGdW5jdGlvbiwgS2V5Q29kZXMgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgUHJpbWFyeUJ1dHRvbiwgRGVmYXVsdEJ1dHRvbiwgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJy4uLy4uL1N0YWNrJztcbmltcG9ydCB7IEZvY3VzVHJhcFpvbmUgfSBmcm9tICcuLi8uLi9Gb2N1c1RyYXBab25lJztcbmltcG9ydCB7IEltYWdlIH0gZnJvbSAnLi4vLi4vSW1hZ2UnO1xuaW1wb3J0IHsgdXNlT25FdmVudCwgdXNlTWVyZ2VkUmVmcywgdXNlSWQgfSBmcm9tICdAZmx1ZW50dWkvcmVhY3QtaG9va3MnO1xuaW1wb3J0IHsgdXNlRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9XaW5kb3dQcm92aWRlcic7XG52YXIgZ2V0Q2xhc3NOYW1lcyA9IGNsYXNzTmFtZXNGdW5jdGlvbigpO1xudmFyIHVzZUNvbXBvbmVudFJlZiA9IGZ1bmN0aW9uIChjb21wb25lbnRSZWYsIHJvb3RFbGVtZW50UmVmKSB7XG4gICAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShjb21wb25lbnRSZWYsIGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgIGZvY3VzOiBmdW5jdGlvbiAoKSB7IHZhciBfYTsgcmV0dXJuIChfYSA9IHJvb3RFbGVtZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpOyB9LFxuICAgIH0pOyB9LCBbcm9vdEVsZW1lbnRSZWZdKTtcbn07XG5leHBvcnQgdmFyIFRlYWNoaW5nQnViYmxlQ29udGVudEJhc2UgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICB2YXIgcm9vdEVsZW1lbnRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIGRvY3VtZW50UmVmID0gdXNlRG9jdW1lbnQoKTtcbiAgICB2YXIgbWVyZ2VkUm9vdFJlZiA9IHVzZU1lcmdlZFJlZnMocm9vdEVsZW1lbnRSZWYsIGZvcndhcmRlZFJlZik7XG4gICAgdmFyIGFyaWFEZXNjcmliZWRCeUlkID0gdXNlSWQoJ3RlYWNoaW5nLWJ1YmJsZS1jb250ZW50LScpO1xuICAgIHZhciBhcmlhTGFiZWxsZWRCeUlkID0gdXNlSWQoJ3RlYWNoaW5nLWJ1YmJsZS10aXRsZS0nKTtcbiAgICB2YXIgYXJpYURlc2NyaWJlZEJ5ID0gKF9hID0gcHJvcHMuYXJpYURlc2NyaWJlZEJ5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBhcmlhRGVzY3JpYmVkQnlJZDtcbiAgICB2YXIgYXJpYUxhYmVsbGVkQnkgPSAoX2IgPSBwcm9wcy5hcmlhTGFiZWxsZWRCeSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogYXJpYUxhYmVsbGVkQnlJZDtcbiAgICB2YXIgaWxsdXN0cmF0aW9uSW1hZ2UgPSBwcm9wcy5pbGx1c3RyYXRpb25JbWFnZSwgcHJpbWFyeUJ1dHRvblByb3BzID0gcHJvcHMucHJpbWFyeUJ1dHRvblByb3BzLCBzZWNvbmRhcnlCdXR0b25Qcm9wcyA9IHByb3BzLnNlY29uZGFyeUJ1dHRvblByb3BzLCBoZWFkbGluZSA9IHByb3BzLmhlYWRsaW5lLCBoYXNDb25kZW5zZWRIZWFkbGluZSA9IHByb3BzLmhhc0NvbmRlbnNlZEhlYWRsaW5lLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBfYyA9IHByb3BzLmhhc0Nsb3NlQnV0dG9uLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBoYXNDbG9zZUJ1dHRvbiA9IF9jID09PSB2b2lkIDAgPyBwcm9wcy5oYXNDbG9zZUljb24gOiBfYywgb25EaXNtaXNzID0gcHJvcHMub25EaXNtaXNzLCBjbG9zZUJ1dHRvbkFyaWFMYWJlbCA9IHByb3BzLmNsb3NlQnV0dG9uQXJpYUxhYmVsLCBoYXNTbWFsbEhlYWRsaW5lID0gcHJvcHMuaGFzU21hbGxIZWFkbGluZSwgaXNXaWRlID0gcHJvcHMuaXNXaWRlLCBzdHlsZXMgPSBwcm9wcy5zdHlsZXMsIHRoZW1lID0gcHJvcHMudGhlbWUsIGN1c3RvbUZvb3RlckNvbnRlbnQgPSBwcm9wcy5mb290ZXJDb250ZW50LCBmb2N1c1RyYXBab25lUHJvcHMgPSBwcm9wcy5mb2N1c1RyYXBab25lUHJvcHM7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRDbGFzc05hbWVzKHN0eWxlcywge1xuICAgICAgICB0aGVtZTogdGhlbWUsXG4gICAgICAgIGhhc0NvbmRlbnNlZEhlYWRsaW5lOiBoYXNDb25kZW5zZWRIZWFkbGluZSxcbiAgICAgICAgaGFzU21hbGxIZWFkbGluZTogaGFzU21hbGxIZWFkbGluZSxcbiAgICAgICAgaGFzQ2xvc2VCdXR0b246IGhhc0Nsb3NlQnV0dG9uLFxuICAgICAgICBoYXNIZWFkbGluZTogISFoZWFkbGluZSxcbiAgICAgICAgaXNXaWRlOiBpc1dpZGUsXG4gICAgICAgIHByaW1hcnlCdXR0b25DbGFzc05hbWU6IHByaW1hcnlCdXR0b25Qcm9wcyA/IHByaW1hcnlCdXR0b25Qcm9wcy5jbGFzc05hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgIHNlY29uZGFyeUJ1dHRvbkNsYXNzTmFtZTogc2Vjb25kYXJ5QnV0dG9uUHJvcHMgPyBzZWNvbmRhcnlCdXR0b25Qcm9wcy5jbGFzc05hbWUgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgdmFyIG9uS2V5RG93biA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldikge1xuICAgICAgICBpZiAob25EaXNtaXNzKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICAgICAgICAgIGlmIChldi53aGljaCA9PT0gS2V5Q29kZXMuZXNjYXBlKSB7XG4gICAgICAgICAgICAgICAgb25EaXNtaXNzKGV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtvbkRpc21pc3NdKTtcbiAgICB1c2VPbkV2ZW50KGRvY3VtZW50UmVmLCAna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgdmFyIGltYWdlQ29udGVudDtcbiAgICB2YXIgaGVhZGVyQ29udGVudDtcbiAgICB2YXIgYm9keUNvbnRlbnQ7XG4gICAgdmFyIGZvb3RlckNvbnRlbnQ7XG4gICAgdmFyIGNsb3NlQnV0dG9uO1xuICAgIGlmIChpbGx1c3RyYXRpb25JbWFnZSAmJiBpbGx1c3RyYXRpb25JbWFnZS5zcmMpIHtcbiAgICAgICAgaW1hZ2VDb250ZW50ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaW1hZ2VDb250ZW50IH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEltYWdlLCBfX2Fzc2lnbih7fSwgaWxsdXN0cmF0aW9uSW1hZ2UpKSkpO1xuICAgIH1cbiAgICBpZiAoaGVhZGxpbmUpIHtcbiAgICAgICAgdmFyIEhlYWRlcldyYXBwZXJBcyA9IHR5cGVvZiBoZWFkbGluZSA9PT0gJ3N0cmluZycgPyAncCcgOiAnZGl2JztcbiAgICAgICAgaGVhZGVyQ29udGVudCA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmhlYWRlciB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChIZWFkZXJXcmFwcGVyQXMsIHsgcm9sZTogXCJoZWFkaW5nXCIsIFwiYXJpYS1sZXZlbFwiOiAzLCBjbGFzc05hbWU6IGNsYXNzTmFtZXMuaGVhZGxpbmUsIGlkOiBhcmlhTGFiZWxsZWRCeSB9LCBoZWFkbGluZSkpKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmNoaWxkcmVuKSB7XG4gICAgICAgIHZhciBCb2R5Q29udGVudFdyYXBwZXJBcyA9IHR5cGVvZiBwcm9wcy5jaGlsZHJlbiA9PT0gJ3N0cmluZycgPyAncCcgOiAnZGl2JztcbiAgICAgICAgYm9keUNvbnRlbnQgPSAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5ib2R5IH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJvZHlDb250ZW50V3JhcHBlckFzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zdWJUZXh0LCBpZDogYXJpYURlc2NyaWJlZEJ5IH0sIHByb3BzLmNoaWxkcmVuKSkpO1xuICAgIH1cbiAgICBpZiAocHJpbWFyeUJ1dHRvblByb3BzIHx8IHNlY29uZGFyeUJ1dHRvblByb3BzIHx8IGN1c3RvbUZvb3RlckNvbnRlbnQpIHtcbiAgICAgICAgZm9vdGVyQ29udGVudCA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFN0YWNrLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5mb290ZXIsIGhvcml6b250YWw6IHRydWUsIGhvcml6b250YWxBbGlnbjogY3VzdG9tRm9vdGVyQ29udGVudCA/ICdzcGFjZS1iZXR3ZWVuJyA6ICdlbmQnIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN0YWNrLkl0ZW0sIHsgYWxpZ246IFwiY2VudGVyXCIgfSwgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgbnVsbCwgY3VzdG9tRm9vdGVyQ29udGVudCkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdGFjay5JdGVtLCBudWxsLFxuICAgICAgICAgICAgICAgIHByaW1hcnlCdXR0b25Qcm9wcyAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFByaW1hcnlCdXR0b24sIF9fYXNzaWduKHt9LCBwcmltYXJ5QnV0dG9uUHJvcHMsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLnByaW1hcnlCdXR0b24gfSkpLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeUJ1dHRvblByb3BzICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGVmYXVsdEJ1dHRvbiwgX19hc3NpZ24oe30sIHNlY29uZGFyeUJ1dHRvblByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5zZWNvbmRhcnlCdXR0b24gfSkpKSkpO1xuICAgIH1cbiAgICBpZiAoaGFzQ2xvc2VCdXR0b24pIHtcbiAgICAgICAgY2xvc2VCdXR0b24gPSAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQnV0dG9uLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lcy5jbG9zZUJ1dHRvbiwgaWNvblByb3BzOiB7IGljb25OYW1lOiAnQ2FuY2VsJyB9LCBhcmlhTGFiZWw6IGNsb3NlQnV0dG9uQXJpYUxhYmVsLCBvbkNsaWNrOiBvbkRpc21pc3MgfSkpO1xuICAgIH1cbiAgICB1c2VDb21wb25lbnRSZWYocHJvcHMuY29tcG9uZW50UmVmLCByb290RWxlbWVudFJlZik7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLmNvbnRlbnQsIHJlZjogbWVyZ2VkUm9vdFJlZiwgcm9sZTogJ2RpYWxvZycsIHRhYkluZGV4OiAtMSwgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnksIFwiZGF0YS1pcy1mb2N1c2FibGVcIjogdHJ1ZSB9LFxuICAgICAgICBpbWFnZUNvbnRlbnQsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9jdXNUcmFwWm9uZSwgX19hc3NpZ24oeyBpc0NsaWNrYWJsZU91dHNpZGVGb2N1c1RyYXA6IHRydWUgfSwgZm9jdXNUcmFwWm9uZVByb3BzKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMuYm9keUNvbnRlbnQgfSxcbiAgICAgICAgICAgICAgICBoZWFkZXJDb250ZW50LFxuICAgICAgICAgICAgICAgIGJvZHlDb250ZW50LFxuICAgICAgICAgICAgICAgIGZvb3RlckNvbnRlbnQsXG4gICAgICAgICAgICAgICAgY2xvc2VCdXR0b24pKSkpO1xufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZWFjaGluZ0J1YmJsZUNvbnRlbnQuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBBbmltYXRpb25WYXJpYWJsZXMsIEZvbnRXZWlnaHRzLCBnZXRGb2N1c1N0eWxlLCBnZXRHbG9iYWxDbGFzc05hbWVzLCBrZXlmcmFtZXMgfSBmcm9tICcuLi8uLi9TdHlsaW5nJztcbmltcG9ydCB7IG1lbW9pemVGdW5jdGlvbiB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG52YXIgZ2xvYmFsQ2xhc3NOYW1lcyA9IHtcbiAgICByb290OiAnbXMtVGVhY2hpbmdCdWJibGUnLFxuICAgIGJvZHk6ICdtcy1UZWFjaGluZ0J1YmJsZS1ib2R5JyxcbiAgICBib2R5Q29udGVudDogJ21zLVRlYWNoaW5nQnViYmxlLWJvZHljb250ZW50JyxcbiAgICBjbG9zZUJ1dHRvbjogJ21zLVRlYWNoaW5nQnViYmxlLWNsb3NlYnV0dG9uJyxcbiAgICBjb250ZW50OiAnbXMtVGVhY2hpbmdCdWJibGUtY29udGVudCcsXG4gICAgZm9vdGVyOiAnbXMtVGVhY2hpbmdCdWJibGUtZm9vdGVyJyxcbiAgICBoZWFkZXI6ICdtcy1UZWFjaGluZ0J1YmJsZS1oZWFkZXInLFxuICAgIGhlYWRlcklzQ29uZGVuc2VkOiAnbXMtVGVhY2hpbmdCdWJibGUtaGVhZGVyLS1jb25kZW5zZWQnLFxuICAgIGhlYWRlcklzU21hbGw6ICdtcy1UZWFjaGluZ0J1YmJsZS1oZWFkZXItLXNtYWxsJyxcbiAgICBoZWFkZXJJc0xhcmdlOiAnbXMtVGVhY2hpbmdCdWJibGUtaGVhZGVyLS1sYXJnZScsXG4gICAgaGVhZGxpbmU6ICdtcy1UZWFjaGluZ0J1YmJsZS1oZWFkbGluZScsXG4gICAgaW1hZ2U6ICdtcy1UZWFjaGluZ0J1YmJsZS1pbWFnZScsXG4gICAgcHJpbWFyeUJ1dHRvbjogJ21zLVRlYWNoaW5nQnViYmxlLXByaW1hcnlCdXR0b24nLFxuICAgIHNlY29uZGFyeUJ1dHRvbjogJ21zLVRlYWNoaW5nQnViYmxlLXNlY29uZGFyeUJ1dHRvbicsXG4gICAgc3ViVGV4dDogJ21zLVRlYWNoaW5nQnViYmxlLXN1YlRleHQnLFxuICAgIC8vIFRPRE86IEJ1dHRvbiBnbG9iYWwgY2xhc3MgbmFtZSB1c2FnZSBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgc3R5bGVzIGZ1bmN0aW9uIG9uY2VcbiAgICAvLyAgICAgICAgQnV0dG9uIHN1cHBvcnRzIEpTIHN0eWxpbmcsIHdoaWNoIG1lYW5zIHRoZXNlIGJ1dHRvbiBuYW1lcyBjYW4gYmUgcmVtb3ZlZC5cbiAgICBidXR0b246ICdtcy1CdXR0b24nLFxuICAgIGJ1dHRvbkxhYmVsOiAnbXMtQnV0dG9uLWxhYmVsJyxcbn07XG52YXIgb3BhY2l0eUZhZGVJbiA9IG1lbW9pemVGdW5jdGlvbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGtleWZyYW1lcyh7XG4gICAgICAgICcwJSc6IHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBhbmltYXRpb25UaW1pbmdGdW5jdGlvbjogQW5pbWF0aW9uVmFyaWFibGVzLmVhc2VGdW5jdGlvbjEsXG4gICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZTNkKC45MCwuOTAsLjkwKScsXG4gICAgICAgIH0sXG4gICAgICAgICcxMDAlJzoge1xuICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlM2QoMSwxLDEpJyxcbiAgICAgICAgfSxcbiAgICB9KTtcbn0pO1xudmFyIHJvb3RTdHlsZSA9IGZ1bmN0aW9uIChpc1dpZGUsIGNhbGxvdXRQcm9wcykge1xuICAgIHZhciBfYSA9IGNhbGxvdXRQcm9wcyB8fCB7fSwgY2FsbG91dFdpZHRoID0gX2EuY2FsbG91dFdpZHRoLCBjYWxsb3V0TWF4V2lkdGggPSBfYS5jYWxsb3V0TWF4V2lkdGg7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIG1heFdpZHRoOiAzNjQsXG4gICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICBvdXRsaW5lOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgd2lkdGg6IGNhbGxvdXRXaWR0aCB8fCAnY2FsYygxMDAlICsgMXB4KScsXG4gICAgICAgICAgICBhbmltYXRpb25OYW1lOiBcIlwiLmNvbmNhdChvcGFjaXR5RmFkZUluKCkpLFxuICAgICAgICAgICAgYW5pbWF0aW9uRHVyYXRpb246ICczMDBtcycsXG4gICAgICAgICAgICBhbmltYXRpb25UaW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXG4gICAgICAgICAgICBhbmltYXRpb25GaWxsTW9kZTogJ2JvdGgnLFxuICAgICAgICB9LFxuICAgICAgICBpc1dpZGUgJiYge1xuICAgICAgICAgICAgbWF4V2lkdGg6IGNhbGxvdXRNYXhXaWR0aCB8fCA0NTYsXG4gICAgICAgIH0sXG4gICAgXTtcbn07XG52YXIgaGVhZGVyU3R5bGUgPSBmdW5jdGlvbiAoY2xhc3NOYW1lcywgaGFzQ29uZGVuc2VkSGVhZGxpbmUsIGhhc1NtYWxsSGVhZGxpbmUpIHtcbiAgICBpZiAoaGFzQ29uZGVuc2VkSGVhZGxpbmUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuaGVhZGVySXNDb25kZW5zZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAxNCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIGhhc1NtYWxsSGVhZGxpbmUgJiYgY2xhc3NOYW1lcy5oZWFkZXJJc1NtYWxsLFxuICAgICAgICAhaGFzU21hbGxIZWFkbGluZSAmJiBjbGFzc05hbWVzLmhlYWRlcklzTGFyZ2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICc6bm90KDpsYXN0LWNoaWxkKSc6IHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAxNCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdO1xufTtcbmV4cG9ydCB2YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgdmFyIGhhc0NvbmRlbnNlZEhlYWRsaW5lID0gcHJvcHMuaGFzQ29uZGVuc2VkSGVhZGxpbmUsIGhhc1NtYWxsSGVhZGxpbmUgPSBwcm9wcy5oYXNTbWFsbEhlYWRsaW5lLCBoYXNDbG9zZUJ1dHRvbiA9IHByb3BzLmhhc0Nsb3NlQnV0dG9uLCBoYXNIZWFkbGluZSA9IHByb3BzLmhhc0hlYWRsaW5lLCBpc1dpZGUgPSBwcm9wcy5pc1dpZGUsIHByaW1hcnlCdXR0b25DbGFzc05hbWUgPSBwcm9wcy5wcmltYXJ5QnV0dG9uQ2xhc3NOYW1lLCBzZWNvbmRhcnlCdXR0b25DbGFzc05hbWUgPSBwcm9wcy5zZWNvbmRhcnlCdXR0b25DbGFzc05hbWUsIHRoZW1lID0gcHJvcHMudGhlbWUsIF9kID0gcHJvcHMuY2FsbG91dFByb3BzLCBjYWxsb3V0UHJvcHMgPSBfZCA9PT0gdm9pZCAwID8geyBjbGFzc05hbWU6IHVuZGVmaW5lZCwgdGhlbWU6IHRoZW1lIH0gOiBfZDtcbiAgICB2YXIgaGFzTGFyZ2VIZWFkbGluZSA9ICFoYXNDb25kZW5zZWRIZWFkbGluZSAmJiAhaGFzU21hbGxIZWFkbGluZTtcbiAgICB2YXIgcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUsIHNlbWFudGljQ29sb3JzID0gdGhlbWUuc2VtYW50aWNDb2xvcnMsIGZvbnRzID0gdGhlbWUuZm9udHM7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRHbG9iYWxDbGFzc05hbWVzKGdsb2JhbENsYXNzTmFtZXMsIHRoZW1lKTtcbiAgICB2YXIgaGlkZURlZmF1bHRGb2N1c1JpbmcgPSBnZXRGb2N1c1N0eWxlKHRoZW1lLCB7XG4gICAgICAgIG91dGxpbmVDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcm9vdDogW2NsYXNzTmFtZXMucm9vdCwgZm9udHMubWVkaXVtLCBjYWxsb3V0UHJvcHMuY2xhc3NOYW1lXSxcbiAgICAgICAgYm9keTogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5ib2R5LFxuICAgICAgICAgICAgaGFzQ2xvc2VCdXR0b24gJiYgIWhhc0hlYWRsaW5lICYmIHsgbWFyZ2luUmlnaHQ6IDI0IH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgICAgICAgICAgICc6bm90KDpsYXN0LWNoaWxkKSc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogMjAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGJvZHlDb250ZW50OiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmJvZHlDb250ZW50LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcyMHB4IDI0cHggMjBweCAyNHB4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGNsb3NlQnV0dG9uOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmNsb3NlQnV0dG9uLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW46ICcxNXB4IDE1cHggMCAwJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUud2hpdGUsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IGZvbnRzLnNtYWxsLmZvbnRTaXplLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczoge1xuICAgICAgICAgICAgICAgICAgICAnOmhvdmVyJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcGFsZXR0ZS50aGVtZURhcmtBbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS53aGl0ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJzphY3RpdmUnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBwYWxldHRlLnRoZW1lRGFyayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAnOmZvY3VzJzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQoc2VtYW50aWNDb2xvcnMudmFyaWFudEJvcmRlciksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRlbnQ6IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmNvbnRlbnRcbiAgICAgICAgXSwgcm9vdFN0eWxlKGlzV2lkZSksIHRydWUpLCBbXG4gICAgICAgICAgICBpc1dpZGUgJiYge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sIGZhbHNlKSxcbiAgICAgICAgZm9vdGVyOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmZvb3RlcixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9hID0ge30sXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGdsb2JhbCBjbGFzcyBuYW1lIHVzYWdlIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBzdHlsZXMgZnVuY3Rpb24gb25jZSBCdXR0b24gc3VwcG9ydHMgSlMgc3R5bGluZ1xuICAgICAgICAgICAgICAgICAgICBfYVtcIi5cIi5jb25jYXQoY2xhc3NOYW1lcy5idXR0b24sIFwiOm5vdCg6Zmlyc3QtY2hpbGQpXCIpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQ6IDEwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfYSksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBoZWFkZXI6IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXG4gICAgICAgICAgICBjbGFzc05hbWVzLmhlYWRlclxuICAgICAgICBdLCBoZWFkZXJTdHlsZShjbGFzc05hbWVzLCBoYXNDb25kZW5zZWRIZWFkbGluZSwgaGFzU21hbGxIZWFkbGluZSksIHRydWUpLCBbXG4gICAgICAgICAgICBoYXNDbG9zZUJ1dHRvbiAmJiB7IG1hcmdpblJpZ2h0OiAyNCB9LFxuICAgICAgICAgICAgKGhhc0NvbmRlbnNlZEhlYWRsaW5lIHx8IGhhc1NtYWxsSGVhZGxpbmUpICYmIFtcbiAgICAgICAgICAgICAgICBmb250cy5tZWRpdW0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5zZW1pYm9sZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgXSwgZmFsc2UpLFxuICAgICAgICBoZWFkbGluZTogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5oZWFkbGluZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUud2hpdGUsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodHMuc2VtaWJvbGQsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzTGFyZ2VIZWFkbGluZSAmJiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZm9udHMueExhcmdlLmZvbnRTaXplLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICBdLFxuICAgICAgICBpbWFnZUNvbnRlbnQ6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuaGVhZGVyLFxuICAgICAgICAgICAgY2xhc3NOYW1lcy5pbWFnZSxcbiAgICAgICAgICAgIGlzV2lkZSAmJiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiAxNTQsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwcmltYXJ5QnV0dG9uOiBbXG4gICAgICAgICAgICBjbGFzc05hbWVzLnByaW1hcnlCdXR0b24sXG4gICAgICAgICAgICBwcmltYXJ5QnV0dG9uQ2xhc3NOYW1lLFxuICAgICAgICAgICAgaGlkZURlZmF1bHRGb2N1c1JpbmcsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLnRoZW1lUHJpbWFyeSxcbiAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnM6IChfYiA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBnbG9iYWwgY2xhc3MgbmFtZSB1c2FnZSBzaG91bGQgYmUgY29udmVydGVkIHRvIGEgc3R5bGVzIGZ1bmN0aW9uIG9uY2UgQnV0dG9uIHN1cHBvcnRzIEpTIHN0eWxpbmdcbiAgICAgICAgICAgICAgICAgICAgX2JbXCIuXCIuY29uY2F0KGNsYXNzTmFtZXMuYnV0dG9uTGFiZWwpXSA9IGZvbnRzLm1lZGl1bSxcbiAgICAgICAgICAgICAgICAgICAgX2JbJzpob3ZlciddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLnRoZW1lTGlnaHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBwYWxldHRlLnRoZW1lTGlnaHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLnRoZW1lRGFyayxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX2JbJzpmb2N1cyddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLnRoZW1lTGlnaHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgXCIuY29uY2F0KHBhbGV0dGUuYmxhY2spLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHBhbGV0dGUudGhlbWVEYXJrLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogXCIxcHggc29saWQgXCIuY29uY2F0KHBhbGV0dGUud2hpdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZU9mZnNldDogJy0ycHgnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfYlsnOmFjdGl2ZSddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHBhbGV0dGUud2hpdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS50aGVtZVByaW1hcnksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9iKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHNlY29uZGFyeUJ1dHRvbjogW1xuICAgICAgICAgICAgY2xhc3NOYW1lcy5zZWNvbmRhcnlCdXR0b24sXG4gICAgICAgICAgICBzZWNvbmRhcnlCdXR0b25DbGFzc05hbWUsXG4gICAgICAgICAgICBoaWRlRGVmYXVsdEZvY3VzUmluZyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUudGhlbWVQcmltYXJ5LFxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICAgICAgICAgIHNlbGVjdG9yczogKF9jID0ge30sXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IGdsb2JhbCBjbGFzcyBuYW1lIHVzYWdlIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBzdHlsZXMgZnVuY3Rpb24gb25jZSBCdXR0b24gc3VwcG9ydHMgSlMgc3R5bGluZ1xuICAgICAgICAgICAgICAgICAgICBfY1tcIi5cIi5jb25jYXQoY2xhc3NOYW1lcy5idXR0b25MYWJlbCldID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udHMubWVkaXVtLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgX2NbJzpob3ZlciddID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwYWxldHRlLnRoZW1lRGFya0FsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBwYWxldHRlLndoaXRlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBfY1snOmZvY3VzJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUudGhlbWVEYXJrLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCBcIi5jb25jYXQocGFsZXR0ZS5ibGFjayksXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBcIjFweCBzb2xpZCBcIi5jb25jYXQocGFsZXR0ZS53aGl0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lT2Zmc2V0OiAnLTJweCcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9jWyc6YWN0aXZlJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHBhbGV0dGUudGhlbWVQcmltYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6IHBhbGV0dGUud2hpdGUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF9jKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHN1YlRleHQ6IFtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMuc3ViVGV4dCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IGZvbnRzLm1lZGl1bS5mb250U2l6ZSxcbiAgICAgICAgICAgICAgICBjb2xvcjogcGFsZXR0ZS53aGl0ZSxcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5yZWd1bGFyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3ViQ29tcG9uZW50U3R5bGVzOiB7XG4gICAgICAgICAgICBjYWxsb3V0OiB7XG4gICAgICAgICAgICAgICAgcm9vdDogX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCByb290U3R5bGUoaXNXaWRlLCBjYWxsb3V0UHJvcHMpLCB0cnVlKSwgW2ZvbnRzLm1lZGl1bV0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBiZWFrOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHBhbGV0dGUudGhlbWVQcmltYXJ5LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgY2FsbG91dE1haW46IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcGFsZXR0ZS50aGVtZVByaW1hcnksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZWFjaGluZ0J1YmJsZS5zdHlsZXMuanMubWFwIiwiaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IFRlYWNoaW5nQnViYmxlQ29udGVudEJhc2UgfSBmcm9tICcuL1RlYWNoaW5nQnViYmxlQ29udGVudC5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vVGVhY2hpbmdCdWJibGUuc3R5bGVzJztcbmV4cG9ydCB2YXIgVGVhY2hpbmdCdWJibGVDb250ZW50ID0gc3R5bGVkKFRlYWNoaW5nQnViYmxlQ29udGVudEJhc2UsIGdldFN0eWxlcywgdW5kZWZpbmVkLCB7IHNjb3BlOiAnVGVhY2hpbmdCdWJibGVDb250ZW50JyB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRlYWNoaW5nQnViYmxlQ29udGVudC5qcy5tYXAiLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY2xhc3NOYW1lc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vVXRpbGl0aWVzJztcbmltcG9ydCB7IFRlYWNoaW5nQnViYmxlQ29udGVudCB9IGZyb20gJy4vVGVhY2hpbmdCdWJibGVDb250ZW50JztcbmltcG9ydCB7IENhbGxvdXQgfSBmcm9tICcuLi8uLi9DYWxsb3V0JztcbmltcG9ydCB7IERpcmVjdGlvbmFsSGludCB9IGZyb20gJy4uLy4uL2NvbW1vbi9EaXJlY3Rpb25hbEhpbnQnO1xuaW1wb3J0IHsgdXNlTWVyZ2VkUmVmcyB9IGZyb20gJ0BmbHVlbnR1aS9yZWFjdC1ob29rcyc7XG52YXIgQ09NUE9ORU5UX05BTUUgPSAnVGVhY2hpbmdCdWJibGUnO1xudmFyIGRlZmF1bHRDYWxsb3V0UHJvcHMgPSB7XG4gICAgYmVha1dpZHRoOiAxNixcbiAgICBnYXBTcGFjZTogMCxcbiAgICBzZXRJbml0aWFsRm9jdXM6IHRydWUsXG4gICAgZG9Ob3RMYXllcjogZmFsc2UsXG4gICAgZGlyZWN0aW9uYWxIaW50OiBEaXJlY3Rpb25hbEhpbnQucmlnaHRDZW50ZXIsXG59O1xudmFyIGdldENsYXNzTmFtZXMgPSBjbGFzc05hbWVzRnVuY3Rpb24oKTtcbnZhciB1c2VDb21wb25lbnRSZWYgPSBmdW5jdGlvbiAoY29tcG9uZW50UmVmLCByb290RWxlbWVudFJlZikge1xuICAgIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoY29tcG9uZW50UmVmLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICBmb2N1czogZnVuY3Rpb24gKCkgeyB2YXIgX2E7IHJldHVybiAoX2EgPSByb290RWxlbWVudFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTsgfSxcbiAgICB9KTsgfSwgW3Jvb3RFbGVtZW50UmVmXSk7XG59O1xuZXhwb3J0IHZhciBUZWFjaGluZ0J1YmJsZUJhc2UgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgZm9yd2FyZGVkUmVmKSB7XG4gICAgdmFyIHJvb3RFbGVtZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBtZXJnZWRSb290UmVmID0gdXNlTWVyZ2VkUmVmcyhyb290RWxlbWVudFJlZiwgZm9yd2FyZGVkUmVmKTtcbiAgICB2YXIgc2V0Q2FsbG91dFByb3BzID0gcHJvcHMuY2FsbG91dFByb3BzLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICB0YXJnZXRFbGVtZW50ID0gcHJvcHMudGFyZ2V0RWxlbWVudCwgb25EaXNtaXNzID0gcHJvcHMub25EaXNtaXNzLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBfYSA9IHByb3BzLmhhc0Nsb3NlQnV0dG9uLCBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZGVwcmVjYXRpb24vZGVwcmVjYXRpb25cbiAgICBoYXNDbG9zZUJ1dHRvbiA9IF9hID09PSB2b2lkIDAgPyBwcm9wcy5oYXNDbG9zZUljb24gOiBfYSwgaXNXaWRlID0gcHJvcHMuaXNXaWRlLCBzdHlsZXMgPSBwcm9wcy5zdHlsZXMsIHRoZW1lID0gcHJvcHMudGhlbWUsIHRhcmdldCA9IHByb3BzLnRhcmdldDtcbiAgICB2YXIgY2FsbG91dFByb3BzID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIGRlZmF1bHRDYWxsb3V0UHJvcHMpLCBzZXRDYWxsb3V0UHJvcHMpLCB7IHRoZW1lOiB0aGVtZSB9KSk7IH0sIFtzZXRDYWxsb3V0UHJvcHMsIHRoZW1lXSk7XG4gICAgdmFyIHN0eWxlc1Byb3BzID0ge1xuICAgICAgICB0aGVtZTogdGhlbWUsXG4gICAgICAgIGlzV2lkZTogaXNXaWRlLFxuICAgICAgICBjYWxsb3V0UHJvcHM6IGNhbGxvdXRQcm9wcyxcbiAgICAgICAgaGFzQ2xvc2VCdXR0b246IGhhc0Nsb3NlQnV0dG9uLFxuICAgIH07XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBnZXRDbGFzc05hbWVzKHN0eWxlcywgc3R5bGVzUHJvcHMpO1xuICAgIHZhciBjYWxsb3V0U3R5bGVzID0gY2xhc3NOYW1lcy5zdWJDb21wb25lbnRTdHlsZXNcbiAgICAgICAgPyBjbGFzc05hbWVzLnN1YkNvbXBvbmVudFN0eWxlcy5jYWxsb3V0XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIHVzZUNvbXBvbmVudFJlZihwcm9wcy5jb21wb25lbnRSZWYsIHJvb3RFbGVtZW50UmVmKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2FsbG91dCwgX19hc3NpZ24oeyB0YXJnZXQ6IHRhcmdldCB8fCB0YXJnZXRFbGVtZW50LCBvbkRpc21pc3M6IG9uRGlzbWlzcyB9LCBjYWxsb3V0UHJvcHMsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzLnJvb3QsIHN0eWxlczogY2FsbG91dFN0eWxlcywgaGlkZU92ZXJmbG93OiB0cnVlIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiBtZXJnZWRSb290UmVmIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlYWNoaW5nQnViYmxlQ29udGVudCwgX19hc3NpZ24oe30sIHByb3BzKSkpKSk7XG59KTtcblRlYWNoaW5nQnViYmxlQmFzZS5kaXNwbGF5TmFtZSA9IENPTVBPTkVOVF9OQU1FO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VGVhY2hpbmdCdWJibGUuYmFzZS5qcy5tYXAiLCJpbXBvcnQgeyBzdHlsZWQgfSBmcm9tICcuLi8uLi9VdGlsaXRpZXMnO1xuaW1wb3J0IHsgVGVhY2hpbmdCdWJibGVCYXNlIH0gZnJvbSAnLi9UZWFjaGluZ0J1YmJsZS5iYXNlJztcbmltcG9ydCB7IGdldFN0eWxlcyB9IGZyb20gJy4vVGVhY2hpbmdCdWJibGUuc3R5bGVzJztcbmV4cG9ydCB2YXIgVGVhY2hpbmdCdWJibGUgPSBzdHlsZWQoVGVhY2hpbmdCdWJibGVCYXNlLCBnZXRTdHlsZXMsIHVuZGVmaW5lZCwgeyBzY29wZTogJ1RlYWNoaW5nQnViYmxlJyB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRlYWNoaW5nQnViYmxlLmpzLm1hcCIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbi8qKiBAanN4UnVudGltZSBjbGFzc2ljICovXG4vKiogQGpzeCB3aXRoU2xvdHMgKi9cbmltcG9ydCB7IHdpdGhTbG90cywgZ2V0U2xvdHMgfSBmcm9tICdAZmx1ZW50dWkvZm91bmRhdGlvbi1sZWdhY3knO1xuaW1wb3J0IHsgZ2V0TmF0aXZlUHJvcHMsIGh0bWxFbGVtZW50UHJvcGVydGllcyB9IGZyb20gJy4uLy4uL1V0aWxpdGllcyc7XG5leHBvcnQgdmFyIFRleHRWaWV3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICAgIGlmIChwcm9wcy5jaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgYmxvY2sgPSBwcm9wcy5ibG9jaywgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBfYSA9IHByb3BzLmFzLCBSb290VHlwZSA9IF9hID09PSB2b2lkIDAgPyAnc3BhbicgOiBfYSwgdmFyaWFudCA9IHByb3BzLnZhcmlhbnQsIG5vd3JhcCA9IHByb3BzLm5vd3JhcCwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiYmxvY2tcIiwgXCJjbGFzc05hbWVcIiwgXCJhc1wiLCBcInZhcmlhbnRcIiwgXCJub3dyYXBcIl0pO1xuICAgIHZhciBTbG90cyA9IGdldFNsb3RzKHByb3BzLCB7XG4gICAgICAgIHJvb3Q6IFJvb3RUeXBlLFxuICAgIH0pO1xuICAgIHJldHVybiB3aXRoU2xvdHMoU2xvdHMucm9vdCwgX19hc3NpZ24oe30sIGdldE5hdGl2ZVByb3BzKHJlc3QsIGh0bWxFbGVtZW50UHJvcGVydGllcykpKTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0LnZpZXcuanMubWFwIiwiZXhwb3J0IHZhciBUZXh0U3R5bGVzID0gZnVuY3Rpb24gKHByb3BzLCB0aGVtZSkge1xuICAgIHZhciBhcyA9IHByb3BzLmFzLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIGJsb2NrID0gcHJvcHMuYmxvY2ssIG5vd3JhcCA9IHByb3BzLm5vd3JhcCwgdmFyaWFudCA9IHByb3BzLnZhcmlhbnQ7XG4gICAgdmFyIGZvbnRzID0gdGhlbWUuZm9udHMsIHNlbWFudGljQ29sb3JzID0gdGhlbWUuc2VtYW50aWNDb2xvcnM7XG4gICAgdmFyIHZhcmlhbnRPYmplY3QgPSBmb250c1t2YXJpYW50IHx8ICdtZWRpdW0nXTtcbiAgICByZXR1cm4ge1xuICAgICAgICByb290OiBbXG4gICAgICAgICAgICB2YXJpYW50T2JqZWN0LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXJpYW50T2JqZWN0LmNvbG9yIHx8IHNlbWFudGljQ29sb3JzLmJvZHlUZXh0LFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrID8gKGFzID09PSAndGQnID8gJ3RhYmxlLWNlbGwnIDogJ2Jsb2NrJykgOiAnaW5saW5lJyxcbiAgICAgICAgICAgICAgICBtb3pPc3hGb250U21vb3RoaW5nOiB2YXJpYW50T2JqZWN0Lk1vek9zeEZvbnRTbW9vdGhpbmcsXG4gICAgICAgICAgICAgICAgd2Via2l0Rm9udFNtb290aGluZzogdmFyaWFudE9iamVjdC5XZWJraXRGb250U21vb3RoaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5vd3JhcCAmJiB7XG4gICAgICAgICAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIF0sXG4gICAgfTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZXh0LnN0eWxlcy5qcy5tYXAiLCJpbXBvcnQgeyBjcmVhdGVDb21wb25lbnQgfSBmcm9tICdAZmx1ZW50dWkvZm91bmRhdGlvbi1sZWdhY3knO1xuaW1wb3J0IHsgVGV4dFZpZXcgfSBmcm9tICcuL1RleHQudmlldyc7XG5pbXBvcnQgeyBUZXh0U3R5bGVzIGFzIHN0eWxlcyB9IGZyb20gJy4vVGV4dC5zdHlsZXMnO1xuZXhwb3J0IHZhciBUZXh0ID0gY3JlYXRlQ29tcG9uZW50KFRleHRWaWV3LCB7XG4gICAgZGlzcGxheU5hbWU6ICdUZXh0JyxcbiAgICBzdHlsZXM6IHN0eWxlcyxcbn0pO1xuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRleHQuanMubWFwIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliJztcbmV4cG9ydCBmdW5jdGlvbiBJbUhvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOS4yMjZsLTgtNi4yMS04IDYuMjF2LTIuNTMybDgtNi4yMSA4IDYuMjF6TTE0IDl2NmgtNHYtNGgtNHY0aC00di02bDYtNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUhvbWUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMC41bC04IDggMS41IDEuNSAxLjUtMS41djYuNWg0di0zaDJ2M2g0di02LjVsMS41IDEuNSAxLjUtMS41LTgtOHpNOCA3Yy0wLjU1MiAwLTEtMC40NDgtMS0xczAuNDQ4LTEgMS0xYzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUhvbWUzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDkuNWwtMy0zdi00LjVoLTJ2Mi41bC0zLTMtOCA4djAuNWgydjVoNXYtM2gydjNoNXYtNWgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU9mZmljZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2aDh2LTE2aC04djE2ek01IDJoMnYyaC0ydi0yek01IDZoMnYyaC0ydi0yek01IDEwaDJ2MmgtMnYtMnpNMSAyaDJ2MmgtMnYtMnpNMSA2aDJ2MmgtMnYtMnpNMSAxMGgydjJoLTJ2LTJ6TTkgNWg3djFoLTd6TTkgMTZoMnYtNGgzdjRoMnYtOWgtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1OZXdzcGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNHYtMmgtMTR2MTFjMCAwLjU1MiAwLjQ0OCAxIDEgMWgxMy41YzAuODI4IDAgMS41LTAuNjcyIDEuNS0xLjV2LTguNWgtMnpNMTMgMTNoLTEydi0xMGgxMnYxMHpNMiA1aDEwdjFoLTEwek04IDdoNHYxaC00ek04IDloNHYxaC00ek04IDExaDN2MWgtM3pNMiA3aDV2NWgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAwYzEuMzgxIDAgMi41IDEuMTE5IDIuNSAyLjUgMCAwLjU2My0wLjE4NiAxLjA4Mi0wLjUgMS41bC0xIDEtMy41LTMuNSAxLTFjMC40MTgtMC4zMTQgMC45MzctMC41IDEuNS0wLjV6TTEgMTEuNWwtMSA0LjUgNC41LTEgOS4yNS05LjI1LTMuNS0zLjUtOS4yNSA5LjI1ek0xMS4xODEgNS42ODFsLTcgNy0wLjg2Mi0wLjg2MiA3LTcgMC44NjIgMC44NjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGVuY2lsMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEwbDItMSA3LTctMS0xLTcgNy0xIDJ6TTQuNTIgMTMuNTQ4Yy0wLjQ5NC0xLjA0My0xLjAyNi0xLjU3NC0yLjA2OS0yLjA2OWwxLjU0OC00LjI2MiAyLTEuMjE3IDYtNmgtM2wtNiA2LTMgMTAgMTAtMyA2LTZ2LTNsLTYgNi0xLjIxNyAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVF1aWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTZjMi02IDcuMjM0LTE2IDE2LTE2LTQuMTA5IDMuMjk3LTYgMTEtOSAxMXMtMyAwLTMgMGwtMyA1aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45MDkgNC41NjFsLTQuNDctNC40N2MtMC4xNDYtMC4xNDYtMC4zMzgtMC4xMTMtMC40MjcgMC4wNzNsLTAuNTk5IDEuMjQ4IDQuMTc1IDQuMTc1IDEuMjQ4LTAuNTk5YzAuMTg2LTAuMDg5IDAuMjE5LTAuMjgyIDAuMDczLTAuNDI3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNjE1IDIuMTE1bC00LjExNSAwLjM0M2MtMC4yNzMgMC4wMzQtMC41MDEgMC4wOTItMC41OCAwLjQ0OS0wIDAtMCAwLjAwMS0wIDAuMDAxLTEuMTE2IDUuMzYtNC45MiAxMC41OTEtNC45MiAxMC41OTFsMC44OTYgMC44OTYgNC4yNS00LjI1Yy0wLjA5NC0wLjE5Ni0wLjE0Ni0wLjQxNS0wLjE0Ni0wLjY0NyAwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41LTAuNjcyIDEuNS0xLjUgMS41Yy0wLjIzMiAwLTAuNDUxLTAuMDUzLTAuNjQ3LTAuMTQ2bC00LjI1IDQuMjUgMC44OTYgMC44OTZjMCAwIDUuMjMxLTMuODA0IDEwLjU5MS00LjkyIDAtMCAwLjAwMS0wIDAuMDAxLTAgMC4zNTctMC4wNzggMC40MTUtMC4zMDYgMC40NDktMC41OGwwLjM0My00LjExNS00LjI2OS00LjI2OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CbG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMHYxLjVjMS4xNDggMCAyLjI2MSAwLjIyNSAzLjMwOCAwLjY2NyAxLjAxMiAwLjQyOCAxLjkyMSAxLjA0MSAyLjcwMiAxLjgyMnMxLjM5NCAxLjY5IDEuODIyIDIuNzAyYzAuNDQzIDEuMDQ3IDAuNjY3IDIuMTYgMC42NjcgMy4zMDhoMS41YzAtNS41MjMtNC40NzctMTAtMTAtMTB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzdjEuNWMxLjQ2OSAwIDIuODUgMC41NzIgMy44ODkgMS42MTFzMS42MTEgMi40MiAxLjYxMSAzLjg4OWgxLjVjMC0zLjg2Ni0zLjEzNC03LTctN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgNmwtMSAxLTMuNSAxLTMgNi41IDAuMzk2IDAuMzk2IDMuNjM4LTMuNjM4Yy0wLjAyMi0wLjA4My0wLjAzNC0wLjE2OS0wLjAzNC0wLjI1OSAwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxLTAuNDQ4IDEtMSAxYy0wLjA5MCAwLTAuMTc2LTAuMDEyLTAuMjU5LTAuMDM0bC0zLjYzOCAzLjYzOCAwLjM5NiAwLjM5NiA2LjUtMyAxLTMuNSAxLTEtMi41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FeWVkcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxNCAwLjU4NmMtMC43ODEtMC43ODEtMi4wNDctMC43ODEtMi44MjggMGwtMi42ODkgMi42ODktMS44OTYtMS44OTYtMi4xMjEgMi4xMjEgMS42NjMgMS42NjMtNy4zNzcgNy4zNzdjLTAuMTI2IDAuMTI2LTAuMTc5IDAuMjk2LTAuMTYxIDAuNDZoLTAuMDA0djIuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDIuNWMwIDAgMC4wNDIgMCAwLjA2MyAwIDAuMTQ0IDAgMC4yODgtMC4wNTUgMC4zOTgtMC4xNjVsNy4zNzctNy4zNzcgMS42NjMgMS42NjMgMi4xMjEtMi4xMjEtMS44OTYtMS44OTYgMi42ODktMi42ODljMC43ODEtMC43ODEgMC43ODEtMi4wNDcgMC0yLjgyOHpNMi43MDUgMTVoLTEuNzA1di0xLjcwNWw3LjMzNy03LjMzNyAxLjcwNCAxLjcwNC03LjMzNyA3LjMzN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Ecm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUxIDcuMzkzYy0xLjAyNy0yLjg2Ni0zLjIwNS01LjQ0LTUuNTEtNy4zOTMtMi4zMDUgMS45NTMtNC40ODIgNC41MjctNS41MSA3LjM5My0wLjYzNSAxLjc3Mi0wLjY5OCAzLjY5NiAwLjE5NyA1LjM5NyAxLjAyOSAxLjk1NSAzLjEwNCAzLjIxIDUuMzEzIDMuMjFzNC4yODQtMS4yNTUgNS4zMTMtMy4yMWMwLjg5NS0xLjcwMSAwLjgzMi0zLjYyNCAwLjE5Ny01LjM5N3pNMTEuNTQzIDExLjg1OWMtMC42ODQgMS4zMDEtMi4wNzUgMi4xNDEtMy41NDMgMi4xNDEtMC44NjEgMC0xLjY5Ni0wLjI5LTIuMzc3LTAuNzkxIDAuMjA3IDAuMDI3IDAuNDE2IDAuMDQxIDAuNjI3IDAuMDQxIDEuODM1IDAgMy41NzMtMS4wNTAgNC40MjgtMi42NzYgMC43MDEtMS4zMzMgMC42NC0yLjcxNiAwLjM3My0zLjgxOCAwLjIyNyAwLjQ0IDAuNDIgMC44NzggMC41NzYgMS4zMTEgMC4zNTMgMC45ODUgMC42MjUgMi40NDMtMC4wODQgMy43OTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGFpbnRGb3JtYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXYtNmgtM3YtMWMwLTAuNTUtMC40NS0xLTEtMWgtMTFjLTAuNTUgMC0xIDAuNDUtMSAxdjNjMCAwLjU1IDAuNDUgMSAxIDFoMTFjMC41NSAwIDEtMC40NSAxLTF2LTFoMnY0aC05djJoLTAuNWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXY1YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMmMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41di01YzAtMC4yNzYtMC4yMjQtMC41LTAuNS0wLjVoLTAuNXYtMWg5ek0xMiAzaC0xMXYtMWgxMXYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljk5OCAyYzAuMDAxIDAuMDAxIDAuMDAxIDAuMDAxIDAuMDAyIDAuMDAydjExLjk5NmMtMC4wMDEgMC4wMDEtMC4wMDEgMC4wMDEtMC4wMDIgMC4wMDJoLTEzLjk5NmMtMC4wMDEtMC4wMDEtMC4wMDEtMC4wMDEtMC4wMDItMC4wMDJ2LTExLjk5NmMwLjAwMS0wLjAwMSAwLjAwMS0wLjAwMSAwLjAwMi0wLjAwMmgxMy45OTZ6TTE1IDFoLTE0Yy0wLjU1IDAtMSAwLjQ1LTEgMXYxMmMwIDAuNTUgMC40NSAxIDEgMWgxNGMwLjU1IDAgMS0wLjQ1IDEtMXYtMTJjMC0wLjU1LTAuNDUtMS0xLTF2MHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0LjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjUgMC42NzItMS41IDEuNS0xLjUgMS41IDAuNjcyIDEuNSAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTNoLTEydi0ybDMuNS02IDQgNWgxbDMuNS0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUltYWdlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxOCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAyaC0xdi0xYzAtMC41NS0wLjQ1LTEtMS0xaC0xNGMtMC41NSAwLTEgMC40NS0xIDF2MTJjMCAwLjU1IDAuNDUgMSAxIDFoMXYxYzAgMC41NSAwLjQ1IDEgMSAxaDE0YzAuNTUgMCAxLTAuNDUgMS0xdi0xMmMwLTAuNTUtMC40NS0xLTEtMXpNMiAzdjEwaC0wLjk5OGMtMC4wMDEtMC4wMDEtMC4wMDEtMC4wMDEtMC4wMDItMC4wMDJ2LTExLjk5NmMwLjAwMS0wLjAwMSAwLjAwMS0wLjAwMSAwLjAwMi0wLjAwMmgxMy45OTZjMC4wMDEgMC4wMDEgMC4wMDEgMC4wMDEgMC4wMDIgMC4wMDJ2MC45OThoLTEyYy0wLjU1IDAtMSAwLjQ1LTEgMXYwek0xNyAxNC45OThjLTAuMDAxIDAuMDAxLTAuMDAxIDAuMDAxLTAuMDAyIDAuMDAyaC0xMy45OTZjLTAuMDAxLTAuMDAxLTAuMDAxLTAuMDAxLTAuMDAyLTAuMDAydi0xMS45OTZjMC4wMDEtMC4wMDEgMC4wMDEtMC4wMDEgMC4wMDItMC4wMDJoMTMuOTk2YzAuMDAxIDAuMDAxIDAuMDAxIDAuMDAxIDAuMDAyIDAuMDAydjExLjk5NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA1LjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjUgMC42NzItMS41IDEuNS0xLjUgMS41IDAuNjcyIDEuNSAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRoLTEydi0ybDMuNS02IDQgNWgxbDMuNS0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljc1IDkuNWMwIDEuNzk1IDEuNDU1IDMuMjUgMy4yNSAzLjI1czMuMjUtMS40NTUgMy4yNS0zLjI1LTEuNDU1LTMuMjUtMy4yNS0zLjI1LTMuMjUgMS40NTUtMy4yNSAzLjI1ek0xNSA0aC0zLjVjLTAuMjUtMS0wLjUtMi0xLjUtMmgtNGMtMSAwLTEuMjUgMS0xLjUgMmgtMy41Yy0wLjU1IDAtMSAwLjQ1LTEgMXY5YzAgMC41NSAwLjQ1IDEgMSAxaDE0YzAuNTUgMCAxLTAuNDUgMS0xdi05YzAtMC41NS0wLjQ1LTEtMS0xek04IDEzLjkzOGMtMi40NTEgMC00LjQzOC0xLjk4Ny00LjQzOC00LjQzOHMxLjk4Ny00LjQzOCA0LjQzOC00LjQzOGMyLjQ1MSAwIDQuNDM4IDEuOTg3IDQuNDM4IDQuNDM4cy0xLjk4NyA0LjQzOC00LjQzOCA0LjQzOHpNMTUgN2gtMnYtMWgydjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSGVhZHBob25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgOWgtMXY3aDFjMC4yNzUgMCAwLjUtMC4yMjUgMC41LTAuNXYtNmMwLTAuMjc1LTAuMjI1LTAuNS0wLjUtMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOWMtMC4yNzUgMC0wLjUgMC4yMjUtMC41IDAuNXY2YzAgMC4yNzUgMC4yMjUgMC41IDAuNSAwLjVoMXYtN2gtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4YzAtNC40MTgtMy41ODItOC04LThzLTggMy41ODItOCA4YzAgMC45NiAwLjE2OSAxLjg4IDAuNDc5IDIuNzMyLTAuMzA0IDAuNTE5LTAuNDc5IDEuMTIzLTAuNDc5IDEuNzY4IDAgMS43NjMgMS4zMDQgMy4yMjIgMyAzLjQ2NHYtNi45MjhjLTAuNDk5IDAuMDcxLTAuOTYzIDAuMjQ4LTEuMzcxIDAuNTA2LTAuMDg0LTAuNDE3LTAuMTI5LTAuODQ5LTAuMTI5LTEuMjkyIDAtMy41OSAyLjkxLTYuNSA2LjUtNi41czYuNSAyLjkxIDYuNSA2LjVjMCAwLjQ0Mi0wLjA0NCAwLjg3NC0wLjEyOCAxLjI5Mi0wLjQwOC0wLjI1OS0wLjg3My0wLjQzNS0xLjM3Mi0wLjUwN3Y2LjkyOWMxLjY5Ni0wLjI0MyAzLTEuNzAxIDMtMy40NjQgMC0wLjY0NS0wLjE3NS0xLjI0OS0wLjQ3OS0xLjc2OCAwLjMxLTAuODUzIDAuNDc5LTEuNzczIDAuNDc5LTIuNzMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDBoMXYxMS41YzAgMS4zODEtMS41NjcgMi41LTMuNSAyLjVzLTMuNS0xLjExOS0zLjUtMi41YzAtMS4zODEgMS41NjctMi41IDMuNS0yLjUgMC45NzkgMCAxLjg2NSAwLjI4NyAyLjUgMC43NTF2LTUuNzUxbC04IDEuNzc4djcuNzIyYzAgMS4zODEtMS41NjcgMi41LTMuNSAyLjVzLTMuNS0xLjExOS0zLjUtMi41YzAtMS4zODEgMS41NjctMi41IDMuNS0yLjUgMC45NzkgMCAxLjg2NSAwLjI4NyAyLjUgMC43NTF2LTkuNzUxbDktMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjMzMSAyLjUwMmMtMi4yNDQtMC4zMjMtNC43MjQtMC41MDItNy4zMzEtMC41MDJzLTUuMDg3IDAuMTc5LTcuMzMxIDAuNTAyYy0wLjQzIDEuNjgzLTAuNjY5IDMuNTQzLTAuNjY5IDUuNDk4czAuMjM5IDMuODE1IDAuNjY5IDUuNDk4YzIuMjQ0IDAuMzIzIDQuNzI0IDAuNTAyIDcuMzMxIDAuNTAyczUuMDg3LTAuMTc5IDcuMzMxLTAuNTAyYzAuNDMtMS42ODMgMC42NjktMy41NDMgMC42NjktNS40OThzLTAuMjM5LTMuODE1LTAuNjY5LTUuNDk4ek02IDExdi02bDUgMy01IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJ2MTJoMTZ2LTEyaC0xNnpNMyAxM2gtMnYtMmgydjJ6TTMgOWgtMnYtMmgydjJ6TTMgNWgtMnYtMmgydjJ6TTEyIDEzaC04di0xMGg4djEwek0xNSAxM2gtMnYtMmgydjJ6TTE1IDloLTJ2LTJoMnYyek0xNSA1aC0ydi0yaDJ2MnpNNiA1djZsNC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVZpZGVvQ2FtZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNC41YzAtMS4zODEgMS4xMTktMi41IDIuNS0yLjVzMi41IDEuMTE5IDIuNSAyLjVjMCAxLjM4MS0xLjExOSAyLjUtMi41IDIuNXMtMi41LTEuMTE5LTIuNS0yLjV6TTAgNC41YzAtMS4zODEgMS4xMTktMi41IDIuNS0yLjVzMi41IDEuMTE5IDIuNSAyLjVjMCAxLjM4MS0xLjExOSAyLjUtMi41IDIuNXMtMi41LTEuMTE5LTIuNS0yLjV6TTEyIDkuNXYtMS41YzAtMC41NS0wLjQ1LTEtMS0xaC0xMGMtMC41NSAwLTEgMC40NS0xIDF2NWMwIDAuNTUgMC40NSAxIDEgMWgxMGMwLjU1IDAgMS0wLjQ1IDEtMXYtMS41bDQgMi41di03bC00IDIuNXpNMTAgMTJoLTh2LTNoOHYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbURpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAzaC04Yy0xLjM3NSAwLTIuNSAxLjEyNS0yLjUgMi41djhjMCAxLjM3NSAxLjEyNSAyLjUgMi41IDIuNWg4YzEuMzc1IDAgMi41LTEuMTI1IDIuNS0yLjV2LThjMC0xLjM3NS0xLjEyNS0yLjUtMi41LTIuNXpNNi41IDE0Yy0wLjgyOCAwLTEuNS0wLjY3Mi0xLjUtMS41czAuNjcyLTEuNSAxLjUtMS41IDEuNSAwLjY3MiAxLjUgMS41LTAuNjcyIDEuNS0xLjUgMS41ek02LjUgOGMtMC44MjggMC0xLjUtMC42NzItMS41LTEuNXMwLjY3Mi0xLjUgMS41LTEuNSAxLjUgMC42NzIgMS41IDEuNS0wLjY3MiAxLjUtMS41IDEuNXpNOS41IDExYy0wLjgyOCAwLTEuNS0wLjY3Mi0xLjUtMS41czAuNjcyLTEuNSAxLjUtMS41IDEuNSAwLjY3MiAxLjUgMS41LTAuNjcyIDEuNS0xLjUgMS41ek0xMi41IDE0Yy0wLjgyOCAwLTEuNS0wLjY3Mi0xLjUtMS41czAuNjcyLTEuNSAxLjUtMS41IDEuNSAwLjY3MiAxLjUgMS41LTAuNjcyIDEuNS0xLjUgMS41ek0xMi41IDhjLTAuODI4IDAtMS41LTAuNjcyLTEuNS0xLjVzMC42NzItMS41IDEuNS0xLjUgMS41IDAuNjcyIDEuNSAxLjUtMC42NzIgMS41LTEuNSAxLjV6TTEyLjk0OSAyYy0wLjIzMy0xLjEzOC0xLjI0NS0yLTIuNDQ5LTJoLThjLTEuMzc1IDAtMi41IDEuMTI1LTIuNSAyLjV2OGMwIDEuMjA0IDAuODYyIDIuMjE2IDIgMi40NDl2LTkuOTQ5YzAtMC41NSAwLjQ1LTEgMS0xaDkuOTQ5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBhY21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4wNzQgMi43OTRjLTEuNDY3LTEuNzEtMy42NDQtMi43OTQtNi4wNzQtMi43OTQtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGMyLjQzIDAgNC42MDctMS4wODQgNi4wNzQtMi43OTRsLTUuMDc0LTUuMjA2IDUuMDc0LTUuMjA2ek0xMSAxLjg4NGMwLjYxNiAwIDEuMTE2IDAuNDk5IDEuMTE2IDEuMTE2cy0wLjQ5OSAxLjExNi0xLjExNiAxLjExNi0xLjExNi0wLjQ5OS0xLjExNi0xLjExNmMwLTAuNjE2IDAuNDk5LTEuMTE2IDEuMTE2LTEuMTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNwYWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi43NzUgNS40NGMtMy4wMjQtMi4yNDgtNC4wNjctNC4wNDctNC43NzQtNS40NHYwYy0wIDAtMC0wLTAtMHYwYy0wLjcwOCAxLjM5My0xLjc1IDMuMTkyLTQuNzc0IDUuNDQtNS4xNTcgMy44MzMtMC4zMDMgOS4xODIgMy45NjUgNi4yMzgtMC4yNzggMS44MjctMS4yMjcgMy4xNTktMi4xOTEgMy43MzN2MC41OWg2di0wLjU5Yy0wLjk2NC0wLjU3NC0xLjkxMy0xLjkwNi0yLjE5MS0zLjczMyA0LjI2OCAyLjk0NCA5LjEyMi0yLjQwNSAzLjk2NS02LjIzOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1DbHVicyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4yOTQgNi4xMzdjLTAuOTIyIDAtMS43NTEgMC4zODQtMi4zNDEgMS4wMTEtMC4yNSAwLjI2NS0wLjY4NCAwLjU4LTEuMTUzIDAuODU2IDAuMjItMC44NDIgMC45MTctMS45MDIgMS40LTIuMzY3IDAuNjE5LTAuNTk2IDEtMS40MzUgMS0yLjM2NyAwLTEuNzk1LTEuNDI5LTMuMjUyLTMuMi0zLjI3MS0xLjc3MSAwLjAxOS0zLjIgMS40NzUtMy4yIDMuMjcxIDAgMC45MzIgMC4zOCAxLjc3MSAxIDIuMzY3IDAuNDg0IDAuNDY1IDEuMTggMS41MjUgMS40IDIuMzY3LTAuNDY5LTAuMjc3LTAuOTAzLTAuNTkxLTEuMTUzLTAuODU2LTAuNTktMC42MjctMS40MTktMS4wMTEtMi4zNDEtMS4wMTEtMS43ODcgMC0zLjIzNiAxLjQ2My0zLjIzNiAzLjI3MXMxLjQ0OCAzLjI3MSAzLjIzNiAzLjI3MWMwLjkyMyAwIDEuNzUxLTAuMzk2IDIuMzQxLTEuMDIzIDAuMjYzLTAuMjc5IDAuNzI2LTAuNjI3IDEuMjIzLTAuOTE2LTAuMDQ3IDIuMzA4LTEuMTQ5IDQuMDAzLTIuMjcxIDQuNjd2MC41OWg2di0wLjU5Yy0xLjEyMi0wLjY2OC0yLjIyNC0yLjM2My0yLjI3MS00LjY3IDAuNDk4IDAuMjg5IDAuOTYxIDAuNjM3IDEuMjIzIDAuOTE2IDAuNTkgMC42MjYgMS40MTkgMS4wMjMgMi4zNDEgMS4wMjMgMS43ODcgMCAzLjIzNi0xLjQ2NCAzLjIzNi0zLjI3MXMtMS40NDgtMy4yNzEtMy4yMzYtMy4yNzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRGlhbW9uZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwbC01IDggNSA4IDUtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CdWxsaG9ybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2LjcwN2MwLTMuMTM5LTAuOTE5LTUuNjg3LTIuMDU0LTUuNzA3IDAuMDA1LTAgMC4wMDktMCAwLjAxNC0waC0xLjI5NmMwIDAtMy4wNDQgMi4yODctNy40MjUgMy4xODQtMC4xMzQgMC43MDgtMC4yMTkgMS41NTEtMC4yMTkgMi41MjNzMC4wODUgMS44MTYgMC4yMTkgMi41MjNjNC4zODIgMC44OTcgNy40MjUgMy4xODQgNy40MjUgMy4xODRoMS4yOTZjLTAuMDA1IDAtMC4wMDktMC0wLjAxNC0wLjAwMSAxLjEzNi0wLjAyMCAyLjA1NC0yLjU2NyAyLjA1NC01LjcwN3pNMTMuNTEzIDExLjU1MWMtMC4xNDcgMC0wLjMwNS0wLjE1Mi0wLjM4Ny0wLjI0My0wLjE5Ny0wLjIyLTAuMzg3LTAuNTYyLTAuNTUtMC45ODktMC4zNjMtMC45NTctMC41NjQtMi4yMzktMC41NjQtMy42MTFzMC4yLTIuNjU1IDAuNTY0LTMuNjExYzAuMTYyLTAuNDI4IDAuMzUzLTAuNzcgMC41NS0wLjk5IDAuMDgxLTAuMDkxIDAuMjQtMC4yNDMgMC4zODctMC4yNDNzMC4zMDUgMC4xNTIgMC4zODcgMC4yNDNjMC4xOTcgMC4yMiAwLjM4NyAwLjU2MiAwLjU1IDAuOTkgMC4zNjMgMC45NTcgMC41NjQgMi4yMzkgMC41NjQgMy42MTFzLTAuMiAyLjY1NS0wLjU2NCAzLjYxMWMtMC4xNjIgMC40MjgtMC4zNTMgMC43Ny0wLjU1IDAuOTg5LTAuMDgxIDAuMDkxLTAuMjQgMC4yNDMtMC4zODcgMC4yNDN6TTMuOTM1IDYuNzA3YzAtMC44MTIgMC4wNjAtMS42IDAuMTczLTIuMzMtMC43NCAwLjEwMi0xLjM5IDAuMTYxLTIuMTkzIDAuMTYxLTEuMDQ4IDAtMS4wNDggMC0xLjA0OCAwbC0wLjg2NyAxLjQ3OXYxLjM3OGwwLjg2NyAxLjQ3OWMwIDAgMCAwIDEuMDQ4IDAgMC44MDMgMCAxLjQ1MyAwLjA1OSAyLjE5MyAwLjE2MS0wLjExMy0wLjcyOS0wLjE3My0xLjUxOC0wLjE3My0yLjMzek01Ljc1MiAxMC4wMzRsLTItMC4zODMgMS4yNzkgNS4wMjRjMC4wNjYgMC4yNiAwLjMyNCAwLjM5MSAwLjU3MyAwLjI5MWwxLjg1Mi0wLjc0MWMwLjI0OS0wLjEgMC4zNDktMC4zNzQgMC4yMjItMC42MTFsLTEuOTI2LTMuNTgxek0xMy41MTMgOC41NzRjLTAuMDU3IDAtMC4xMTgtMC4wNTktMC4xNDktMC4wOTQtMC4wNzYtMC4wODUtMC4xNDktMC4yMTctMC4yMTItMC4zODEtMC4xNC0wLjM2OS0wLjIxNy0wLjg2My0wLjIxNy0xLjM5MnMwLjA3Ny0xLjAyMyAwLjIxNy0xLjM5MmMwLjA2My0wLjE2NSAwLjEzNi0wLjI5NyAwLjIxMi0wLjM4MSAwLjAzMS0wLjAzNSAwLjA5Mi0wLjA5NCAwLjE0OS0wLjA5NHMwLjExOCAwLjA1OSAwLjE0OSAwLjA5NGMwLjA3NiAwLjA4NSAwLjE0OSAwLjIxNyAwLjIxMiAwLjM4MSAwLjE0IDAuMzY5IDAuMjE3IDAuODYzIDAuMjE3IDEuMzkycy0wLjA3NyAxLjAyMy0wLjIxNyAxLjM5MmMtMC4wNjMgMC4xNjUtMC4xMzYgMC4yOTctMC4yMTIgMC4zODEtMC4wMzEgMC4wMzUtMC4wOTIgMC4wOTQtMC4xNDkgMC4wOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29ubmVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAyMCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA5YzEuNjU0IDAgMy4xNTQgMC42NzMgNC4yNDEgMS43NTlsLTEuNDE0IDEuNDE0Yy0wLjcyNC0wLjcyNC0xLjcyNC0xLjE3My0yLjgyNy0xLjE3M3MtMi4xMDMgMC40NDktMi44MjcgMS4xNzNsLTEuNDE0LTEuNDE0YzEuMDg2LTEuMDg2IDIuNTg2LTEuNzU5IDQuMjQxLTEuNzU5ek0yLjkyOSA3LjkyOWMxLjg4OS0xLjg4OSA0LjQtMi45MjkgNy4wNzEtMi45MjlzNS4xODIgMS4wNDAgNy4wNzEgMi45MjlsLTEuNDE0IDEuNDE0Yy0xLjUxMS0xLjUxMS0zLjUyLTIuMzQzLTUuNjU3LTIuMzQzcy00LjE0NiAwLjgzMi01LjY1NyAyLjM0M2wtMS40MTQtMS40MTR6TTE1LjQ1IDIuMTAxYzEuNjY3IDAuNzA1IDMuMTY0IDEuNzE1IDQuNDUgM3YwbC0xLjQxNCAxLjQxNGMtMi4yNjctMi4yNjYtNS4yOC0zLjUxNS04LjQ4NS0zLjUxNXMtNi4yMTkgMS4yNDgtOC40ODUgMy41MTVsLTEuNDE0LTEuNDE0YzEuMjg1LTEuMjg1IDIuNzgzLTIuMjk1IDQuNDUtMyAxLjcyNy0wLjczIDMuNTYtMS4xMDEgNS40NS0xLjEwMXMzLjcyMyAwLjM3IDUuNDUgMS4xMDF6TTkgMTRjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMWMwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Qb2RjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhjMC00LjQxOC0zLjU4Mi04LTgtOHMtOCAzLjU4Mi04IDhjMCAzLjQzOCAyLjE2OSA2LjM3IDUuMjE0IDcuNTAxbC0wLjIxNCAwLjQ5OWg2bC0wLjIxNC0wLjQ5OWMzLjA0NS0xLjEzMSA1LjIxNC00LjA2MyA1LjIxNC03LjUwMXpNNy42MDYgOS45MTljLTAuMzU2LTAuMTUzLTAuNjA2LTAuNTA3LTAuNjA2LTAuOTE5IDAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwLjQxMi0wLjI1IDAuNzY2LTAuNjA2IDAuOTE5bC0wLjM5NC0wLjkxOS0wLjM5NCAwLjkxOXpNOC40MSA5Ljk1OGMwLjkwOC0wLjE4OSAxLjU5LTAuOTk0IDEuNTktMS45NTggMC0xLjEwNS0wLjg5NS0yLTItMnMtMiAwLjg5NS0yIDJjMCAwLjk2NCAwLjY4MiAxLjc2OCAxLjU5IDEuOTU3bC0xLjE2NiAyLjcyMWMtMS40MjUtMC42MTItMi40MjQtMi4wMjgtMi40MjQtMy42NzcgMC0yLjIwOSAxLjc5MS00LjE4OCA0LTQuMTg4czQgMS45NzggNCA0LjE4OGMwIDEuNjQ5LTAuOTk5IDMuMDY2LTIuNDI0IDMuNjc3bC0xLjE2Ni0yLjcyek0xMC43NTcgMTUuNDMzbC0xLjE1NS0yLjY5NWMxLjk3Ni0wLjY2OCAzLjM5OC0yLjUzNyAzLjM5OC00LjczOCAwLTIuNzYxLTIuMjM5LTUtNS01cy01IDIuMjM5LTUgNWMwIDIuMjAxIDEuNDIyIDQuMDcwIDMuMzk4IDQuNzM4bC0xLjE1NSAyLjY5NWMtMi40OTQtMS4wNzAtNC4yNC0zLjU0Ny00LjI0LTYuNDMzIDAtMy44NjUgMy4xMzMtNy4xODUgNi45OTctNy4xODVzNi45OTcgMy4zMiA2Ljk5NyA3LjE4NWMwIDIuODg2LTEuNzQ3IDUuMzYzLTQuMjQgNi40MzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmVlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhjMC0xLjEwNSAwLjg5NS0yIDItMnMyIDAuODk1IDIgMmMwIDEuMTA1LTAuODk1IDItMiAycy0yLTAuODk1LTItMnpNMTAuMzggMy42MDJjMS41NiAwLjg0NiAyLjYyIDIuNDk4IDIuNjIgNC4zOThzLTEuMDU5IDMuNTUyLTIuNjIgNC4zOThjMC42ODktMS4wOTYgMS4xMi0yLjY2IDEuMTItNC4zOThzLTAuNDMxLTMuMzAyLTEuMTItNC4zOTh6TTQuNSA4YzAgMS43MzggMC40MzEgMy4zMDIgMS4xMiA0LjM5OC0xLjU2LTAuODQ2LTIuNjItMi40OTgtMi42Mi00LjM5OHMxLjA1OS0zLjU1MiAyLjYyLTQuMzk4Yy0wLjY4OSAxLjA5Ni0xLjEyIDIuNjYtMS4xMiA0LjM5OHpNMS41IDhjMCAyLjY4NiAwLjg1IDUuMDk3IDIuMTk4IDYuNzQ2LTIuMjIzLTEuNDIxLTMuNjk4LTMuOTExLTMuNjk4LTYuNzQ2czEuNDc0LTUuMzI1IDMuNjk4LTYuNzQ2Yy0xLjM0OCAxLjY0OS0yLjE5OCA0LjA2MC0yLjE5OCA2Ljc0NnpNMTIuMzAyIDEuMjU0YzIuMjIzIDEuNDIxIDMuNjk4IDMuOTExIDMuNjk4IDYuNzQ2cy0xLjQ3NCA1LjMyNS0zLjY5OCA2Ljc0NmMxLjM0OC0xLjY0OSAyLjE5OC00LjA2MCAyLjE5OC02Ljc0NnMtMC44NS01LjA5Ny0yLjE5OC02Ljc0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDExYzEuMzgxIDAgMi41LTEuMTE5IDIuNS0yLjV2LTZjMC0xLjM4MS0xLjExOS0yLjUtMi41LTIuNXMtMi41IDEuMTE5LTIuNSAyLjV2NmMwIDEuMzgxIDEuMTE5IDIuNSAyLjUgMi41ek0xMSA3djEuNWMwIDEuOTMzLTEuNTY3IDMuNS0zLjUgMy41cy0zLjUtMS41NjctMy41LTMuNXYtMS41aC0xdjEuNWMwIDIuMzE2IDEuNzUgNC4yMjMgNCA0LjQ3MnYyLjAyOGgtMnYxaDV2LTFoLTJ2LTIuMDI4YzIuMjUtMC4yNDkgNC0yLjE1NiA0LTQuNDcydi0xLjVoLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAydjEzaC0xMC41Yy0wLjgyOSAwLTEuNS0wLjY3Mi0xLjUtMS41czAuNjcxLTEuNSAxLjUtMS41aDkuNXYtMTJoLTEwYy0xLjEgMC0yIDAuOS0yIDJ2MTJjMCAxLjEgMC45IDIgMiAyaDEydi0xNGgtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUwMSAxM3YwYy0wIDAtMC4wMDEgMC0wLjAwMSAwLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVjMCAwIDAuMDAxLTAgMC4wMDEtMHYwaDkuNDk4di0xaC05LjQ5OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Cb29rcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxOCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMmgtM2MtMC4yNzUgMC0wLjUgMC4yMjUtMC41IDAuNXYxMWMwIDAuMjc1IDAuMjI1IDAuNSAwLjUgMC41aDNjMC4yNzUgMCAwLjUtMC4yMjUgMC41LTAuNXYtMTFjMC0wLjI3NS0wLjIyNS0wLjUtMC41LTAuNXpNMyA1aC0ydi0xaDJ2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMmgtM2MtMC4yNzUgMC0wLjUgMC4yMjUtMC41IDAuNXYxMWMwIDAuMjc1IDAuMjI1IDAuNSAwLjUgMC41aDNjMC4yNzUgMCAwLjUtMC4yMjUgMC41LTAuNXYtMTFjMC0wLjI3NS0wLjIyNS0wLjUtMC41LTAuNXpNOCA1aC0ydi0xaDJ2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS45NTQgMi43NzNsLTIuNjc5IDEuMzVjLTAuMjQ2IDAuMTI0LTAuMzQ1IDAuNDI2LTAuMjIyIDAuNjcxbDQuNSA4LjkzYzAuMTI0IDAuMjQ2IDAuNDI2IDAuMzQ1IDAuNjcxIDAuMjIybDIuNjc5LTEuMzVjMC4yNDYtMC4xMjQgMC4zNDUtMC40MjYgMC4yMjItMC42NzFsLTQuNS04LjkzYy0wLjEyNC0wLjI0Ni0wLjQyNi0wLjM0NS0wLjY3MS0wLjIyMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDEzLjVjMCAwLjI3Ni0wLjIyNCAwLjUtMC41IDAuNXMtMC41LTAuMjI0LTAuNS0wLjVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1MaWJyYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE3IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE1di0xaC0xdi02aDF2LTFoLTN2MWgxdjZoLTN2LTZoMXYtMWgtM3YxaDF2NmgtM3YtNmgxdi0xaC0zdjFoMXY2aC0zdi02aDF2LTFoLTN2MWgxdjZoLTF2MWgtMXYxaDE3di0xaC0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGgxbDggNXYxaC0xN3YtMWw4LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZVRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAwaC0xMmMtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEyYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTEzIDE0aC0xMXYtMTJoMTF2MTJ6TTQgN2g3djFoLTd6TTQgOWg3djFoLTd6TTQgMTFoN3YxaC03ek00IDVoN3YxaC03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVByb2ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAwaC0xMmMtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEyYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTEzIDE0aC0xMXYtMTJoMTF2MTJ6TTQgOWg3djFoLTd6TTQgMTFoN3YxaC03ek01IDQuNWMwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41YzAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41ek03LjUgNmgtMmMtMC44MjUgMC0xLjUgMC40NS0xLjUgMXYxaDV2LTFjMC0wLjU1LTAuNjc1LTEtMS41LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZUVtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSAzLjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNy43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMy41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoMTEuNWMwLjY4OSAwIDEuMjUtMC41NjEgMS4yNS0xLjI1di05Ljc1YzAtMC4yMjQtMC4wNjgtMC42MTUtMC42NTktMS40MjF6TTEyLjI3MSAyLjcyOWMwLjQ4IDAuNDggMC44NTYgMC45MTIgMS4xMzQgMS4yNzFoLTIuNDA2di0yLjQwNWMwLjM1OSAwLjI3OCAwLjc5MiAwLjY1NCAxLjI3MSAxLjEzNHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlc0VtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSA1LjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNS43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMS41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoOS41YzAuNjg5IDAgMS4yNS0wLjU2MSAxLjI1LTEuMjV2LTcuNzVjMC0wLjIyNC0wLjA2OC0wLjYxNS0wLjY1OS0xLjQyMXpNMTIuMjcxIDQuNzI5YzAuNDggMC40OCAwLjg1NiAwLjkxMiAxLjEzNCAxLjI3MWgtMi40MDZ2LTIuNDA1YzAuMzU5IDAuMjc4IDAuNzkyIDAuNjU0IDEuMjcxIDEuMTM0djB6TTE0IDE0Ljc1YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTkuNWMtMC4xMzYgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTEuNWMwLTAuMTM1IDAuMTE0LTAuMjUgMC4yNS0wLjI1IDAgMCA1Ljc0OS0wIDUuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2Ny43NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQyMSAwLjY1OWMtMC44MDYtMC41OTEtMS4xOTctMC42NTktMS40MjEtMC42NTloLTUuNzVjLTAuNjg5IDAtMS4yNSAwLjU2MS0xLjI1IDEuMjV2MTEuNWMwIDAuNjA0IDAuNDMgMS4xMDkgMSAxLjIyNXYtMTIuNzI1YzAtMC4xMzUgMC4xMTUtMC4yNSAwLjI1LTAuMjVoNy42MDdjLTAuMTUxLTAuMTI0LTAuMjk3LTAuMjM4LTAuNDM3LTAuMzQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZpbGVUZXh0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zNDEgMy41NzljLTAuMzQ3LTAuNDczLTAuODMxLTEuMDI3LTEuMzYyLTEuNTU4cy0xLjA4NS0xLjAxNS0xLjU1OC0xLjM2MmMtMC44MDYtMC41OTEtMS4xOTctMC42NTktMS40MjEtMC42NTloLTcuNzVjLTAuNjg5IDAtMS4yNSAwLjU2MS0xLjI1IDEuMjV2MTMuNWMwIDAuNjg5IDAuNTYxIDEuMjUgMS4yNSAxLjI1aDExLjVjMC42ODkgMCAxLjI1LTAuNTYxIDEuMjUtMS4yNXYtOS43NWMwLTAuMjI0LTAuMDY4LTAuNjE1LTAuNjU5LTEuNDIxek0xMi4yNzEgMi43MjljMC40OCAwLjQ4IDAuODU2IDAuOTEyIDEuMTM0IDEuMjcxaC0yLjQwNnYtMi40MDVjMC4zNTkgMC4yNzggMC43OTIgMC42NTQgMS4yNzEgMS4xMzR6TTE0IDE0Ljc1YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTExLjVjLTAuMTM1IDAtMC4yNS0wLjExNC0wLjI1LTAuMjV2LTEzLjVjMC0wLjEzNSAwLjExNS0wLjI1IDAuMjUtMC4yNSAwIDAgNy43NDktMCA3Ljc1IDB2My41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMy41djkuNzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSAxM2gtN2MtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXMwLjIyNC0wLjUgMC41LTAuNWg3YzAuMjc2IDAgMC41IDAuMjI0IDAuNSAwLjVzLTAuMjI0IDAuNS0wLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgMTFoLTdjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjVoN2MwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDloLTdjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjVoN2MwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlUGljdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxNGgtMTB2LTJsMy01IDQuMTA5IDUgMi44OTEtMnY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDcuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNSAwLjY3Mi0xLjUgMS41LTEuNWMwLjgyOCAwIDEuNSAwLjY3MiAxLjUgMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSAzLjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNy43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMy41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoMTEuNWMwLjY4OSAwIDEuMjUtMC41NjEgMS4yNS0xLjI1di05Ljc1YzAtMC4yMjQtMC4wNjgtMC42MTUtMC42NTktMS40MjF6TTEyLjI3MSAyLjcyOWMwLjQ4IDAuNDggMC44NTYgMC45MTIgMS4xMzQgMS4yNzFoLTIuNDA2di0yLjQwNWMwLjM1OSAwLjI3OCAwLjc5MiAwLjY1NCAxLjI3MSAxLjEzNHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlTXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMzQxIDMuNTc5Yy0wLjM0Ny0wLjQ3My0wLjgzMS0xLjAyNy0xLjM2Mi0xLjU1OHMtMS4wODUtMS4wMTUtMS41NTgtMS4zNjJjLTAuODA2LTAuNTkxLTEuMTk3LTAuNjU5LTEuNDIxLTAuNjU5aC03Ljc1Yy0wLjY4OSAwLTEuMjUgMC41NjEtMS4yNSAxLjI1djEzLjVjMCAwLjY4OSAwLjU2MSAxLjI1IDEuMjUgMS4yNWgxMS41YzAuNjg5IDAgMS4yNS0wLjU2MSAxLjI1LTEuMjV2LTkuNzVjMC0wLjIyNC0wLjA2OC0wLjYxNS0wLjY1OS0xLjQyMXYwek0xMi4yNzEgMi43MjljMC40OCAwLjQ4IDAuODU2IDAuOTEyIDEuMTM0IDEuMjcxaC0yLjQwNnYtMi40MDVjMC4zNTkgMC4yNzggMC43OTIgMC42NTQgMS4yNzEgMS4xMzR2MHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44MTcgNi4xMTNjLTAuMTE2LTAuMDk1LTAuMjY4LTAuMTMzLTAuNDE1LTAuMTA0bC01IDFjLTAuMjM0IDAuMDQ3LTAuNDAyIDAuMjUyLTAuNDAyIDAuNDl2My43MDFjLTAuMjk0LTAuMTI4LTAuNjM2LTAuMjAxLTEtMC4yMDEtMS4xMDUgMC0yIDAuNjcyLTIgMS41czAuODk1IDEuNSAyIDEuNSAyLTAuNjcyIDItMS41di0zLjU5bDQtMC44djIuMDkxYy0wLjI5NC0wLjEyOC0wLjYzNi0wLjIwMS0xLTAuMjAxLTEuMTA1IDAtMiAwLjY3Mi0yIDEuNXMwLjg5NSAxLjUgMiAxLjUgMi0wLjY3MiAyLTEuNXYtNWMwLTAuMTUtMC4wNjctMC4yOTItMC4xODMtMC4zODd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2bDUgMy41LTUgMy41di03elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSAzLjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNy43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMy41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoMTEuNWMwLjY4OSAwIDEuMjUtMC41NjEgMS4yNS0xLjI1di05Ljc1YzAtMC4yMjQtMC4wNjgtMC42MTUtMC42NTktMS40MjF6TTEyLjI3MSAyLjcyOWMwLjQ4IDAuNDggMC44NTYgMC45MTIgMS4xMzQgMS4yNzFoLTIuNDA2di0yLjQwNWMwLjM1OSAwLjI3OCAwLjc5MiAwLjY1NCAxLjI3MSAxLjEzNHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMzQxIDMuNTc5Yy0wLjM0Ny0wLjQ3My0wLjgzMS0xLjAyNy0xLjM2Mi0xLjU1OHMtMS4wODUtMS4wMTUtMS41NTgtMS4zNjJjLTAuODA2LTAuNTkxLTEuMTk3LTAuNjU5LTEuNDIxLTAuNjU5aC03Ljc1Yy0wLjY4OSAwLTEuMjUgMC41NjEtMS4yNSAxLjI1djEzLjVjMCAwLjY4OSAwLjU2MSAxLjI1IDEuMjUgMS4yNWgxMS41YzAuNjg5IDAgMS4yNS0wLjU2MSAxLjI1LTEuMjV2LTkuNzVjMC0wLjIyNC0wLjA2OC0wLjYxNS0wLjY1OS0xLjQyMXYwIDB6TTEyLjI3MSAyLjcyOWMwLjQ4IDAuNDggMC44NTYgMC45MTIgMS4xMzQgMS4yNzFoLTIuNDA2di0yLjQwNWMwLjM1OSAwLjI3OCAwLjc5MiAwLjY1NCAxLjI3MSAxLjEzNHYwIDB6TTE0IDE0Ljc1YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTExLjVjLTAuMTM1IDAtMC4yNS0wLjExNC0wLjI1LTAuMjV2LTEzLjVjMC0wLjEzNSAwLjExNS0wLjI1IDAuMjUtMC4yNSAwIDAgNy43NDktMCA3Ljc1IDB2My41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMy41djkuNzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA4aDV2NWgtNXYtNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEwbDMtMnY1bC0zLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZVppcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zNDEgMy41NzljLTAuMzQ3LTAuNDczLTAuODMxLTEuMDI3LTEuMzYyLTEuNTU4cy0xLjA4NS0xLjAxNS0xLjU1OC0xLjM2MmMtMC44MDYtMC41OTEtMS4xOTctMC42NTktMS40MjEtMC42NTloLTcuNzVjLTAuNjg5IDAtMS4yNSAwLjU2MS0xLjI1IDEuMjV2MTMuNWMwIDAuNjg5IDAuNTYxIDEuMjUgMS4yNSAxLjI1aDExLjVjMC42ODkgMCAxLjI1LTAuNTYxIDEuMjUtMS4yNXYtOS43NWMwLTAuMjI0LTAuMDY4LTAuNjE1LTAuNjU5LTEuNDIxdjAgMHpNMTIuMjcxIDIuNzI5YzAuNDggMC40OCAwLjg1NiAwLjkxMiAxLjEzNCAxLjI3MWgtMi40MDZ2LTIuNDA1YzAuMzU5IDAuMjc4IDAuNzkyIDAuNjU0IDEuMjcxIDEuMTM0djAgMHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDFoMnYxaC0ydi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmgydjFoLTJ2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAzaDJ2MWgtMnYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDRoMnYxaC0ydi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNWgydjFoLTJ2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2aDJ2MWgtMnYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDdoMnYxaC0ydi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgOGgydjFoLTJ2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMy4yNWMwIDAuNDEyIDAuMzM4IDAuNzUgMC43NSAwLjc1aDIuNWMwLjQxMiAwIDAuNzUtMC4zMzggMC43NS0wLjc1di0yLjVjMC0wLjQxMi0wLjMzOC0wLjc1LTAuNzUtMC43NWgtMS4yNXYtMWgtMnY0LjI1ek03IDEydjFoLTJ2LTFoMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Db3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDR2LTRoLTdsLTMgM3Y5aDZ2NGgxMHYtMTJoLTZ6TTMgMS40MTR2MS41ODZoLTEuNTg2bDEuNTg2LTEuNTg2ek0xIDExdi03aDN2LTNoNXYzbC0zIDN2NGgtNXpNOSA1LjQxNHYxLjU4NmgtMS41ODZsMS41ODYtMS41ODZ6TTE1IDE1aC04di03aDN2LTNoNXYxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QYXN0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyaC0ydi0xYzAtMC41NS0wLjQ1LTEtMS0xaC0yYy0wLjU1IDAtMSAwLjQ1LTEgMXYxaC0ydjJoOHYtMnpNOCAyaC0ydi0wLjk5OGMwLjAwMS0wLjAwMSAwLjAwMS0wLjAwMSAwLjAwMi0wLjAwMmgxLjk5NmMwLjAwMSAwLjAwMSAwLjAwMSAwLjAwMSAwLjAwMiAwLjAwMnYwLjk5OHpNMTMgNXYtMi41YzAtMC4yNzUtMC4yMjUtMC41LTAuNS0wLjVoLTF2MWgwLjV2MmgtM2wtMyAzdjRoLTR2LTloMC41di0xaC0xYy0wLjI3NSAwLTAuNSAwLjIyNS0wLjUgMC41djEwYzAgMC4yNzUgMC4yMjUgMC41IDAuNSAwLjVoNC41djNoMTB2LTExaC0zek05IDYuNDE0djEuNTg2aC0xLjU4NmwxLjU4Ni0xLjU4NnpNMTUgMTVoLTh2LTZoM3YtM2g1djl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNWwtOC00LTggNCA4IDQgOC00ek04IDIuMzI4bDUuMzQ1IDIuNjcyLTUuMzQ1IDIuNjcyLTUuMzQ1LTIuNjcyIDUuMzQ1LTIuNjcyek0xNC4zOTggNy4xOTlsMS42MDIgMC44MDEtOCA0LTgtNCAxLjYwMi0wLjgwMSA2LjM5OCAzLjE5OXpNMTQuMzk4IDEwLjE5OWwxLjYwMiAwLjgwMS04IDQtOC00IDEuNjAyLTAuODAxIDYuMzk4IDMuMTk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJsMiAyaDd2MTFoLTE2di0xM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Gb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDE1bDMtOGgtMTNsLTMgOHpNMiA2bC0yIDl2LTEzaDQuNWwyIDJoNi41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRsLTItMmgtN3YxM2gxNnYtMTFoLTd6TTExIDExaC0ydjJoLTJ2LTJoLTJ2LTJoMnYtMmgydjJoMnYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGwtMi0yaC03djEzaDE2di0xMWgtN3pNMTEgMTFoLTZ2LTJoNnYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZvbGRlckRvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGwtMi0yaC03djEzaDE2di0xMWgtN3pNOCAxMy41bC0zLjUtMy41aDIuNXYtNGgydjRoMi41bC0zLjUgMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZvbGRlclVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRsLTItMmgtN3YxM2gxNnYtMTFoLTd6TTggNy41bDMuNSAzLjVoLTIuNXY0aC0ydi00aC0yLjVsMy41LTMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QcmljZVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4yNSAwaC02Yy0wLjQxMiAwLTAuOTg5IDAuMjM5LTEuMjggMC41M2wtNy40MzkgNy40MzljLTAuMjkyIDAuMjkyLTAuMjkyIDAuNzY5IDAgMS4wNjFsNi40MzkgNi40MzljMC4yOTIgMC4yOTIgMC43NjkgMC4yOTIgMS4wNjEgMGw3LjQzOS03LjQzOWMwLjI5Mi0wLjI5MiAwLjUzLTAuODY4IDAuNTMtMS4yOHYtNmMwLTAuNDEyLTAuMzM4LTAuNzUtMC43NS0wLjc1ek0xMS41IDZjLTAuODI4IDAtMS41LTAuNjcyLTEuNS0xLjVzMC42NzItMS41IDEuNS0xLjUgMS41IDAuNjcyIDEuNSAxLjUtMC42NzIgMS41LTEuNSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUHJpY2VUYWdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDIwIDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5LjI1IDBoLTZjLTAuNDEyIDAtMC45ODkgMC4yMzktMS4yOCAwLjUzbC03LjQzOSA3LjQzOWMtMC4yOTIgMC4yOTItMC4yOTIgMC43NjkgMCAxLjA2MWw2LjQzOSA2LjQzOWMwLjI5MiAwLjI5MiAwLjc2OSAwLjI5MiAxLjA2MSAwbDcuNDM5LTcuNDM5YzAuMjkyLTAuMjkyIDAuNTMtMC44NjggMC41My0xLjI4di02YzAtMC40MTItMC4zMzctMC43NS0wLjc1LTAuNzV6TTE1LjUgNmMtMC44MjggMC0xLjUtMC42NzItMS41LTEuNXMwLjY3Mi0xLjUgMS41LTEuNSAxLjUgMC42NzIgMS41IDEuNS0wLjY3MiAxLjUtMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDguNWw4LjUtOC41aC0xLjI1Yy0wLjQxMiAwLTAuOTg5IDAuMjM5LTEuMjggMC41M2wtNy40MzkgNy40MzljLTAuMjkyIDAuMjkyLTAuMjkyIDAuNzY5IDAgMS4wNjFsNi40MzkgNi40MzljMC4yOTIgMC4yOTIgMC43NjkgMC4yOTIgMS4wNjEgMGwwLjQ3LTAuNDctNi41LTYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CYXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmgydjEwaC0yek0zIDJoMXYxMGgtMXpNNSAyaDF2MTBoLTF6TTggMmgxdjEwaC0xek0xMiAyaDF2MTBoLTF6TTE1IDJoMXYxMGgtMXpNMTAgMmgwLjV2MTBoLTAuNXpNNyAyaDAuNXYxMGgtMC41ek0xMy41IDJoMC41djEwaC0wLjV6TTAgMTNoMXYxaC0xek0zIDEzaDF2MWgtMXpNNSAxM2gxdjFoLTF6TTEwIDEzaDF2MWgtMXpNMTUgMTNoMXYxaC0xek0xMiAxM2gydjFoLTJ6TTcgMTNoMnYxaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVFyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDFoLTR2NGg0di00ek02IDB2MCA2aC02di02aDZ6TTIgMmgydjJoLTJ6TTE1IDFoLTR2NGg0di00ek0xNiAwdjAgNmgtNnYtNmg2ek0xMiAyaDJ2MmgtMnpNNSAxMWgtNHY0aDR2LTR6TTYgMTB2MCA2aC02di02aDZ6TTIgMTJoMnYyaC0yek03IDBoMXYxaC0xek04IDFoMXYxaC0xek03IDJoMXYxaC0xek04IDNoMXYxaC0xek03IDRoMXYxaC0xek04IDVoMXYxaC0xek03IDZoMXYxaC0xek03IDhoMXYxaC0xek04IDloMXYxaC0xek03IDEwaDF2MWgtMXpNOCAxMWgxdjFoLTF6TTcgMTJoMXYxaC0xek04IDEzaDF2MWgtMXpNNyAxNGgxdjFoLTF6TTggMTVoMXYxaC0xek0xNSA4aDF2MWgtMXpNMSA4aDF2MWgtMXpNMiA3aDF2MWgtMXpNMCA3aDF2MWgtMXpNNCA3aDF2MWgtMXpNNSA4aDF2MWgtMXpNNiA3aDF2MWgtMXpNOSA4aDF2MWgtMXpNMTAgN2gxdjFoLTF6TTExIDhoMXYxaC0xek0xMiA3aDF2MWgtMXpNMTMgOGgxdjFoLTF6TTE0IDdoMXYxaC0xek0xNSAxMGgxdjFoLTF6TTkgMTBoMXYxaC0xek0xMCA5aDF2MWgtMXpNMTEgMTBoMXYxaC0xek0xMyAxMGgxdjFoLTF6TTE0IDloMXYxaC0xek0xNSAxMmgxdjFoLTF6TTkgMTJoMXYxaC0xek0xMCAxMWgxdjFoLTF6TTEyIDExaDF2MWgtMXpNMTMgMTJoMXYxaC0xek0xNCAxMWgxdjFoLTF6TTE1IDE0aDF2MWgtMXpNMTAgMTNoMXYxaC0xek0xMSAxNGgxdjFoLTF6TTEyIDEzaDF2MWgtMXpNMTMgMTRoMXYxaC0xek0xMCAxNWgxdjFoLTF6TTEyIDE1aDF2MWgtMXpNMTQgMTVoMXYxaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRpY2tldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDVsMiAyLTQgNC0yLTJ6TTE1LjY0OSA0LjY0OWwtMS4xNDktMS4xNDktMC41IDAuNWMtMC4yNTYgMC4yNTYtMC42MSAwLjQxNC0xIDAuNDE0LTAuNzgxIDAtMS40MTQtMC42MzMtMS40MTQtMS40MTQgMC0wLjM5MSAwLjE1OC0wLjc0NCAwLjQxNS0xbDAuNS0wLjUtMS4xNDktMS4xNDljLTAuNDY4LTAuNDY4LTEuMjM1LTAuNDY4LTEuNzAzIDBsLTkuMjk3IDkuMjk3Yy0wLjQ2OCAwLjQ2OC0wLjQ2OCAxLjIzNSAwIDEuNzAzbDEuMTQ5IDEuMTQ5IDAuNDk5LTAuNDk5YzAuMjU2LTAuMjU2IDAuNjEtMC40MTUgMS4wMDEtMC40MTUgMC43ODEgMCAxLjQxNCAwLjYzMyAxLjQxNCAxLjQxNCAwIDAuMzkxLTAuMTU4IDAuNzQ0LTAuNDE1IDFsLTAuNSAwLjUgMS4xNDkgMS4xNDljMC40NjggMC40NjggMS4yMzQgMC40NjggMS43MDMgMGw5LjI5Ny05LjI5N2MwLjQ2OC0wLjQ2OCAwLjQ2OC0xLjIzNSAwLTEuNzAzek03IDEzbC00LTQgNi02IDQgNC02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE0LjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNC41YzAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41YzAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOHYtNmgtMTJjMC0wLjU1Mi0wLjQ0OC0xLTEtMWgtM3YxaDJsMC43NTEgNi40MzhjLTAuNDU4IDAuMzY3LTAuNzUxIDAuOTMtMC43NTEgMS41NjIgMCAxLjEwNSAwLjg5NSAyIDIgMmgxMnYtMWgtMTJjLTAuNTUyIDAtMS0wLjQ0OC0xLTEgMC0wLjAwMyAwLTAuMDA3IDAtMC4wMTBsMTMtMS45OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Db2luRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxYy00LjE0MiAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU4IDcuNSA3LjUgNy41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41ek03LjUgMTQuNWMtMy4zMTQgMC02LTIuNjg2LTYtNnMyLjY4Ni02IDYtNmMzLjMxNCAwIDYgMi42ODYgNiA2cy0yLjY4NiA2LTYgNnpNOCA4di0yaDJ2LTFoLTJ2LTFoLTF2MWgtMnY0aDJ2MmgtMnYxaDJ2MWgxdi0xaDJsLTAtNGgtMnpNNyA4aC0xdi0yaDF2MnpNOSAxMWgtMXYtMmgxdjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29pbkV1cm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDFjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjV6TTcuNSAxNC41Yy0zLjMxNCAwLTYtMi42ODYtNi02czIuNjg2LTYgNi02YzMuMzE0IDAgNiAyLjY4NiA2IDZzLTIuNjg2IDYtNiA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjQ4MiAxMC4wNjhjLTAuMjM5LTAuMTM5LTAuNTQ1LTAuMDU4LTAuNjg0IDAuMTgxLTAuMjcgMC40NjMtMC43NjcgMC43NTEtMS4yOTggMC43NTFoLTJjLTAuNjUyIDAtMS4yMDgtMC40MTgtMS40MTQtMWgyLjQxNGMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41cy0wLjIyNC0wLjUtMC41LTAuNWgtMi41di0xaDIuNWMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41cy0wLjIyNC0wLjUtMC41LTAuNWgtMi40MTRjMC4yMDYtMC41ODIgMC43NjItMSAxLjQxNC0xaDJjMC41MzEgMCAxLjAyOCAwLjI4OCAxLjI5OCAwLjc1MSAwLjEzOSAwLjIzOSAwLjQ0NSAwLjMyIDAuNjg0IDAuMTgxczAuMzItMC40NDUgMC4xODEtMC42ODRjLTAuNDQ4LTAuNzctMS4yNzctMS4yNDktMi4xNjItMS4yNDloLTJjLTEuMjA3IDAtMi4yMTcgMC44Ni0yLjQ1IDJoLTAuNTVjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVoMC41djFoLTAuNWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXMwLjIyNCAwLjUgMC41IDAuNWgwLjU1YzAuMjMyIDEuMTQgMS4yNDIgMiAyLjQ1IDJoMmMwLjg4NiAwIDEuNzE0LTAuNDc4IDIuMTYyLTEuMjQ5IDAuMTM5LTAuMjM5IDAuMDU4LTAuNTQ1LTAuMTgxLTAuNjg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNvaW5Qb3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMWMtNC4xNDIgMC03LjUgMy4zNTgtNy41IDcuNXMzLjM1OCA3LjUgNy41IDcuNWM0LjE0MiAwIDcuNS0zLjM1OCA3LjUtNy41cy0zLjM1OC03LjUtNy41LTcuNXpNNy41IDE0LjVjLTMuMzE0IDAtNi0yLjY4Ni02LTZzMi42ODYtNiA2LTZjMy4zMTQgMCA2IDIuNjg2IDYgNnMtMi42ODYgNi02IDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDExaC0zLjV2LTJoMS41YzAuMjc2IDAgMC41LTAuMjI0IDAuNS0wLjVzLTAuMjI0LTAuNS0wLjUtMC41aC0xLjV2LTAuNWMwLTAuODI3IDAuNjczLTEuNSAxLjUtMS41IDAuNTM0IDAgMS4wMzIgMC4yODggMS4zIDAuNzUgMC4xMzggMC4yMzkgMC40NDQgMC4zMjEgMC42ODMgMC4xODJzMC4zMjEtMC40NDQgMC4xODItMC42ODNjLTAuNDQ2LTAuNzcxLTEuMjc2LTEuMjUtMi4xNjUtMS4yNS0xLjM3OCAwLTIuNSAxLjEyMi0yLjUgMi41djAuNWgtMC41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDAuNXYzaDQuNWMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41cy0wLjIyNC0wLjUtMC41LTAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Db2luWWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxYy00LjE0MiAwLTcuNSAzLjM1OC03LjUgNy41czMuMzU4IDcuNSA3LjUgNy41YzQuMTQyIDAgNy41LTMuMzU4IDcuNS03LjVzLTMuMzU4LTcuNS03LjUtNy41ek03LjUgMTQuNWMtMy4zMTQgMC02LTIuNjg2LTYtNnMyLjY4Ni02IDYtNmMzLjMxNCAwIDYgMi42ODYgNiA2cy0yLjY4NiA2LTYgNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgOWMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41cy0wLjIyNC0wLjUtMC41LTAuNWgtMS4wNjZsMS40ODItMi4yMjNjMC4xNTMtMC4yMyAwLjA5MS0wLjU0LTAuMTM5LTAuNjkzcy0wLjU0LTAuMDkxLTAuNjkzIDAuMTM5bC0xLjU4NCAyLjM3Ni0xLjU4NC0yLjM3NmMtMC4xNTMtMC4yMy0wLjQ2NC0wLjI5Mi0wLjY5My0wLjEzOXMtMC4yOTIgMC40NjQtMC4xMzkgMC42OTNsMS40ODIgMi4yMjNoLTEuMDY2Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDEuNXYxaC0xLjVjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVoMS41djEuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41czAuNS0wLjIyNCAwLjUtMC41di0xLjVoMS41YzAuMjc2IDAgMC41LTAuMjI0IDAuNS0wLjVzLTAuMjI0LTAuNS0wLjUtMC41aC0xLjV2LTFoMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNyZWRpdENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAyaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXY5YzAgMC44MjUgMC42NzUgMS41IDEuNSAxLjVoMTNjMC44MjUgMCAxLjUtMC42NzUgMS41LTEuNXYtOWMwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xLjUgM2gxM2MwLjI3MSAwIDAuNSAwLjIyOSAwLjUgMC41djEuNWgtMTR2LTEuNWMwLTAuMjcxIDAuMjI5LTAuNSAwLjUtMC41ek0xNC41IDEzaC0xM2MtMC4yNzEgMC0wLjUtMC4yMjktMC41LTAuNXYtNC41aDE0djQuNWMwIDAuMjcxLTAuMjI5IDAuNS0wLjUgMC41ek0yIDEwaDF2MmgtMXpNNCAxMGgxdjJoLTF6TTYgMTBoMXYyaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxaC01Yy0wLjU1IDAtMSAwLjQ1LTEgMXY1YzAgMC41NSAwLjQ1IDEgMSAxaDVjMC41NSAwIDEtMC40NSAxLTF2LTVjMC0wLjU1LTAuNDUtMS0xLTF6TTYgNWgtNXYtMWg1djF6TTE0IDFoLTVjLTAuNTUgMC0xIDAuNDUtMSAxdjEzYzAgMC41NSAwLjQ1IDEgMSAxaDVjMC41NSAwIDEtMC40NSAxLTF2LTEzYzAtMC41NS0wLjQ1LTEtMS0xek0xNCAxMGgtNXYtMWg1djF6TTE0IDdoLTV2LTFoNXYxek02IDloLTVjLTAuNTUgMC0xIDAuNDUtMSAxdjVjMCAwLjU1IDAuNDUgMSAxIDFoNWMwLjU1IDAgMS0wLjQ1IDEtMXYtNWMwLTAuNTUtMC40NS0xLTEtMXpNNiAxM2gtMnYyaC0xdi0yaC0ydi0xaDJ2LTJoMXYyaDJ2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1MaWZlYnVveSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTUgOGMwLTEuNjU3IDEuMzQzLTMgMy0zczMgMS4zNDMgMyAzLTEuMzQzIDMtMyAzLTMtMS4zNDMtMy0zek0xNC40NjggMTAuNjc5djBsLTIuNzcyLTEuMTQ4YzAuMTk2LTAuNDcyIDAuMzA0LTAuOTg5IDAuMzA0LTEuNTMxcy0wLjEwOC0xLjA1OS0wLjMwNC0xLjUzMWwyLjc3Mi0xLjE0OGMwLjM0MiAwLjgyNSAwLjUzMiAxLjczIDAuNTMyIDIuNjc5cy0wLjE4OSAxLjg1NC0wLjUzMiAyLjY3OXYwek0xMC42NzkgMS41MzJ2MCAwbC0xLjE0OCAyLjc3MmMtMC40NzItMC4xOTYtMC45ODktMC4zMDQtMS41MzEtMC4zMDRzLTEuMDU5IDAuMTA4LTEuNTMxIDAuMzA0bC0xLjE0OC0yLjc3MmMwLjgyNS0wLjM0MiAxLjczLTAuNTMyIDIuNjc5LTAuNTMyczEuODU0IDAuMTg5IDIuNjc5IDAuNTMyek0xLjUzMiA1LjMyMWwyLjc3MiAxLjE0OGMtMC4xOTYgMC40NzItMC4zMDQgMC45ODktMC4zMDQgMS41MzFzMC4xMDggMS4wNTkgMC4zMDQgMS41MzFsLTIuNzcyIDEuMTQ4Yy0wLjM0Mi0wLjgyNS0wLjUzMi0xLjczLTAuNTMyLTIuNjc5czAuMTg5LTEuODU0IDAuNTMyLTIuNjc5ek01LjMyMSAxNC40NjhsMS4xNDgtMi43NzJjMC40NzIgMC4xOTYgMC45ODkgMC4zMDQgMS41MzEgMC4zMDRzMS4wNTktMC4xMDggMS41MzEtMC4zMDRsMS4xNDggMi43NzJjLTAuODI1IDAuMzQyLTEuNzMgMC41MzItMi42NzkgMC41MzJzLTEuODU0LTAuMTg5LTIuNjc5LTAuNTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEwYy0xIDEtMSAyLTIgMnMtMi0xLTMtMi0yLTItMi0zIDEtMSAyLTItMi00LTMtNC0zIDMtMyAzYzAgMiAyLjA1NSA2LjA1NSA0IDhzNiA0IDggNGMwIDAgMy0yIDMtM3MtMy00LTQtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QaG9uZUhhbmdVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44OTcgOWMwLjEyNSAwLjg2NyAwLjIwNyAyLjA1My0wLjE4MiAyLjUwNy0wLjY0MyAwLjc1MS00LjcxNCAwLjc1MS00LjcxNC0wLjc1MSAwLTAuNzU2IDAuNjctMS4yNTIgMC4wMjctMi4wMDMtMC42MzItMC43MzgtMS43NjYtMC43NS0zLjAyNy0wLjc1MXMtMi4zOTQgMC4wMTItMy4wMjcgMC43NTFjLTAuNjQzIDAuNzUxIDAuMDI3IDEuMjQ3IDAuMDI3IDIuMDAzIDAgMS41MDEtNC4wNzEgMS41MDEtNC43MTQgMC43NTEtMC4zODktMC40NTQtMC4zMDctMS42NC0wLjE4Mi0yLjUwNyAwLjA5Ni0wLjU3OSAwLjMzOS0xLjIwMyAxLjExOC0yIDAtMCAwLTAgMC0wIDEuMTY4LTEuMDkwIDIuOTM1LTEuOTggNi43MTYtMnYtMGMwLjAyMSAwIDAuMDQyIDAgMC4wNjMgMHMwLjA0MS0wIDAuMDYzLTB2MGMzLjc4MSAwLjAxOSA1LjU0OCAwLjkxIDYuNzE2IDIgMCAwIDAgMCAwIDAgMC43NzggMC43OTcgMS4wMjIgMS40MjEgMS4xMTggMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDB2MTZoMTJ2LTE2aC0xMnpNOSA0LjAwNWMxLjEwMiAwIDEuOTk1IDAuODkzIDEuOTk1IDEuOTk1cy0wLjg5MyAxLjk5NS0xLjk5NSAxLjk5NS0xLjk5NS0wLjg5My0xLjk5NS0xLjk5NSAwLjg5My0xLjk5NSAxLjk5NS0xLjk5NXYwek0xMiAxMmgtNnYtMWMwLTEuMTA1IDAuODk1LTIgMi0ydjBoMmMxLjEwNSAwIDIgMC44OTUgMiAydjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxaDEuNXYzaC0xLjV2LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1aDEuNXYzaC0xLjV2LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA5aDEuNXYzaC0xLjV2LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxM2gxLjV2M2gtMS41di0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVudmVsb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAyaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxMGMwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEwYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTYuMjMgOC42bC00LjIzIDMuMjk1di03LjgzOGw0LjIzIDQuNTQzek0yLjc1NiA0aDEwLjQ4OGwtNS4yNDQgMy45MzgtNS4yNDQtMy45Mzh6TTYuMzk1IDguNzc3bDEuNjA1IDEuNzIzIDEuNjA1LTEuNzIzIDMuMjkgNC4yMjNoLTkuNzlsMy4yOS00LjIyM3pNOS43NyA4LjZsNC4yMy00LjU0M3Y3LjgzOGwtNC4yMy0zLjI5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QdXNocGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAwbC0xLjUgMS41IDEuNSAxLjUtMy41IDRoLTMuNWwyLjc1IDIuNzUtNC4yNSA1LjYzNXYwLjYxNWgwLjYxNWw1LjYzNS00LjI1IDIuNzUgMi43NXYtMy41bDQtMy41IDEuNSAxLjUgMS41LTEuNS03LjUtNy41ek03IDguNWwtMS0xIDMuNS0zLjUgMSAxLTMuNSAzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTG9jYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy0yLjc2MSAwLTUgMi4yMzktNSA1IDAgNSA1IDExIDUgMTFzNS02IDUtMTFjMC0yLjc2MS0yLjIzOS01LTUtNXpNOCA4Yy0xLjY1NyAwLTMtMS4zNDMtMy0zczEuMzQzLTMgMy0zIDMgMS4zNDMgMyAzLTEuMzQzIDMtMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxvY2F0aW9uMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTIuNzYxIDAtNSAyLjIzOS01IDUgMCA1IDUgMTEgNSAxMXM1LTYgNS0xMWMwLTIuNzYxLTIuMjM5LTUtNS01ek04IDguMDYzYy0xLjY5MSAwLTMuMDYzLTEuMzcxLTMuMDYzLTMuMDYzczEuMzcxLTMuMDYzIDMuMDYzLTMuMDYzIDMuMDYzIDEuMzcxIDMuMDYzIDMuMDYzLTEuMzcxIDMuMDYzLTMuMDYzIDMuMDYzek02LjA2MyA1YzAtMS4wNzAgMC44NjctMS45MzggMS45MzgtMS45MzhzMS45MzggMC44NjcgMS45MzggMS45MzhjMCAxLjA3MC0wLjg2NyAxLjkzOC0xLjkzOCAxLjkzOHMtMS45MzgtMC44NjctMS45MzgtMS45Mzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTZjLTAuMDM2IDAtMC4wNzItMC4wMDQtMC4xMDgtMC4wMTItMC4yMjktMC4wNTEtMC4zOTItMC4yNTQtMC4zOTItMC40ODh2LTcuNWgtNy41Yy0wLjIzNCAwLTAuNDM3LTAuMTYzLTAuNDg4LTAuMzkyczAuMDY0LTAuNDYyIDAuMjc3LTAuNTYxbDE1LTdjMC4xOTEtMC4wODkgMC40MTYtMC4wNDkgMC41NjUgMC4xczAuMTg4IDAuMzc0IDAuMSAwLjU2NWwtNyAxNWMtMC4wODMgMC4xNzktMC4yNjIgMC4yODktMC40NTMgMC4yODl6TTIuNzU0IDdoNS43NDZjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXY1Ljc0Nmw1LjQ2NS0xMS43MTItMTEuNzEyIDUuNDY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNvbXBhc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMS41IDhjMC0zLjU5IDIuOTEtNi41IDYuNS02LjUgMS43MTIgMCAzLjI2OSAwLjY2MiA0LjQzIDEuNzQ0bC02LjQzIDIuNzU2LTIuNzU2IDYuNDNjLTEuMDgyLTEuMTYxLTEuNzQ0LTIuNzE4LTEuNzQ0LTQuNDN6TTkuMTQzIDkuMTQzbC00LjAwMSAxLjcxNSAxLjcxNS00LjAwMSAyLjI4NiAyLjI4NnpNOCAxNC41Yy0xLjcxMiAwLTMuMjY5LTAuNjYyLTQuNDMtMS43NDRsNi40My0yLjc1NiAyLjc1Ni02LjQzYzEuMDgyIDEuMTYxIDEuNzQ0IDIuNzE4IDEuNzQ0IDQuNDMgMCAzLjU5LTIuOTEgNi41LTYuNSA2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgM2w1LTJ2MTJsLTUgMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDAuNWw1IDN2MTEuNWwtNS0yLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMy41bDQtM3YxMmwtNCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1hcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAzbC01LTItNS41IDJ2MTJsNS41LTIgNSAyIDUuNS0ydi0xMmwtNS41IDJ6TTYgMi4yNzdsNCAxLjZ2OS44NDZsLTQtMS42di05Ljg0NnpNMSAzLjdsNC0xLjQ1NXY5Ljg3MmwtNCAxLjQ1NHYtOS44NzJ6TTE1IDEyLjNsLTQgMS40NTV2LTkuODcybDQtMS40NTV2OS44NzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSGlzdG9yeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNyAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxYzMuODY2IDAgNyAzLjEzNCA3IDdzLTMuMTM0IDctNyA3di0xLjVjMS40NjkgMCAyLjg1LTAuNTcyIDMuODg5LTEuNjExczEuNjExLTIuNDIgMS42MTEtMy44ODljMC0xLjQ2OS0wLjU3Mi0yLjg1LTEuNjExLTMuODg5cy0yLjQyLTEuNjExLTMuODg5LTEuNjExYy0xLjQ2OSAwLTIuODUgMC41NzItMy44ODkgMS42MTEtMC43OTkgMC43OTktMS4zMjIgMS44MDEtMS41MiAyLjg4OWgyLjkwOWwtMy41IDQtMy41LTRoMi41NzFjMC40ODUtMy4zOTIgMy40MDItNiA2LjkyOS02ek0xMyA3djJoLTR2LTVoMnYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjI5MyAxMS43MDdsLTMuMjkzLTMuMjkzdi00LjQxNGgydjMuNTg2bDIuNzA3IDIuNzA3ek04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTggMTRjLTMuMzE0IDAtNi0yLjY4Ni02LTZzMi42ODYtNiA2LTZjMy4zMTQgMCA2IDIuNjg2IDYgNnMtMi42ODYgNi02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2xvY2syIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMTAuMjkzIDExLjcwN2wtMy4yOTMtMy4yOTN2LTQuNDE0aDJ2My41ODZsMi43MDcgMi43MDctMS40MTQgMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQWxhcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyYy0zLjg2NiAwLTcgMy4xMzQtNyA3czMuMTM0IDcgNyA3IDctMy4xMzQgNy03LTMuMTM0LTctNy03ek04IDE0LjYyNWMtMy4xMDcgMC01LjYyNS0yLjUxOC01LjYyNS01LjYyNXMyLjUxOC01LjYyNSA1LjYyNS01LjYyNWMzLjEwNyAwIDUuNjI1IDIuNTE4IDUuNjI1IDUuNjI1cy0yLjUxOCA1LjYyNS01LjYyNSA1LjYyNXpNMTQuNjA2IDQuNDg3YzAuMjUxLTAuNDM4IDAuMzk0LTAuOTQ2IDAuMzk0LTEuNDg3IDAtMS42NTctMS4zNDMtMy0zLTMtMC45NjYgMC0xLjgyNSAwLjQ1Ny0yLjM3NCAxLjE2NiAyLjA2MSAwLjQyNiAzLjgzMSAxLjY0NCA0Ljk4IDMuMzIydjB6TTYuMzc0IDEuMTY2Yy0wLjU0OS0wLjcwOS0xLjQwOC0xLjE2Ni0yLjM3NC0xLjE2Ni0xLjY1NyAwLTMgMS4zNDMtMyAzIDAgMC41NDEgMC4xNDMgMS4wNDkgMC4zOTQgMS40ODcgMS4xNDgtMS42NzggMi45MTktMi44OTYgNC45OC0zLjMyMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDl2LTRoLTF2NWg0di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYuMDIzIDEyLjVjMC00LjUtNC0zLjUtNC03IDAtMC4yOS0wLjAyOC0wLjUzOC0wLjA3OS0wLjc0OS0wLjI2My0xLjc2Ni0xLjQ0LTMuMTgzLTIuOTY1LTMuNjE1IDAuMDE0LTAuMDYyIDAuMDIxLTAuMTI1IDAuMDIxLTAuMTkxIDAtMC41Mi0wLjQ1LTAuOTQ1LTEtMC45NDVzLTEgMC40MjUtMSAwLjk0NWMwIDAuMDY1IDAuMDA3IDAuMTI5IDAuMDIxIDAuMTkxLTEuNzEgMC40ODQtMi45ODMgMi4yMDgtMy4wMjAgNC4yNzMtMC4wMDEgMC4wMzAtMC4wMDEgMC4wNjAtMC4wMDEgMC4wOTEgMCAzLjUtNCAyLjUtNCA3IDAgMS4xOTEgMi42NjUgMi4xODcgNi4yMzQgMi40MzkgMC4zMzYgMC42MzEgMS4wMDEgMS4wNjEgMS43NjYgMS4wNjFzMS40My0wLjQzIDEuNzY2LTEuMDYxYzMuNTY4LTAuMjUxIDYuMjM0LTEuMjQ4IDYuMjM0LTIuNDM5IDAtMC4wMDQtMC0wLjAwNy0wLTAuMDExbDAuMDI0IDAuMDExek0xMi45MSAxMy4zNDVjLTAuODQ3IDAuMjI2LTEuODQ2IDAuMzg5LTIuOTE4IDAuNDc5LTAuMDg5LTEuMDIyLTAuOTQ3LTEuODI0LTEuOTkyLTEuODI0cy0xLjkwMyAwLjgwMi0xLjk5MiAxLjgyNGMtMS4wNzItMC4wOTAtMi4wNzEtMC4yNTMtMi45MTgtMC40NzktMS4xNjYtMC4zMTEtMS43MjQtMC42NTktMS45MjgtMC44NDUgMC4yMDQtMC4xODYgMC43NjItMC41MzQgMS45MjgtMC44NDUgMS4zNTYtMC4zNjIgMy4xLTAuNTYxIDQuOTEtMC41NjFzMy41NTQgMC4xOTkgNC45MSAwLjU2MWMxLjE2NiAwLjMxMSAxLjcyNCAwLjY1OSAxLjkyOCAwLjg0NS0wLjIwNCAwLjE4Ni0wLjc2MiAwLjUzNC0xLjkyOCAwLjg0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdG9wd2F0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzLjAxOXYtMS4wMTloMnYtMWMwLTAuNTUyLTAuNDQ4LTEtMS0xaC0zYy0wLjU1MiAwLTEgMC40NDgtMSAxdjFoMnYxLjAxOWMtMy4zNTYgMC4yNTUtNiAzLjA1OS02IDYuNDgxIDAgMy41OSAyLjkxIDYuNSA2LjUgNi41czYuNS0yLjkxIDYuNS02LjVjMC0zLjQyMi0yLjY0NC02LjIyNi02LTYuNDgxek0xMS4wMzYgMTMuMDM2Yy0wLjk0NCAwLjk0NC0yLjIgMS40NjQtMy41MzYgMS40NjRzLTIuNTkxLTAuNTItMy41MzYtMS40NjRjLTAuOTQ0LTAuOTQ0LTEuNDY0LTIuMi0xLjQ2NC0zLjUzNnMwLjUyLTIuNTkxIDEuNDY0LTMuNTM2YzAuOTA3LTAuOTA3IDIuMTAxLTEuNDIyIDMuMzc3LTEuNDYybC0wLjMzOSA0LjkwN2MtMC4wMjkgMC40MTEgMC4xOTUgMC41OTEgMC40OTcgMC41OTFzMC41MjctMC4xOCAwLjQ5Ny0wLjU5MWwtMC4zMzktNC45MDdjMS4yNzYgMC4wNDAgMi40NyAwLjU1NSAzLjM3NyAxLjQ2MiAwLjk0NCAwLjk0NCAxLjQ2NCAyLjIgMS40NjQgMy41MzZzLTAuNTIgMi41OTEtMS40NjQgMy41MzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2aDJ2MmgtMnpNOCA2aDJ2MmgtMnpNMTEgNmgydjJoLTJ6TTIgMTJoMnYyaC0yek01IDEyaDJ2MmgtMnpNOCAxMmgydjJoLTJ6TTUgOWgydjJoLTJ6TTggOWgydjJoLTJ6TTExIDloMnYyaC0yek0yIDloMnYyaC0yek0xMyAwdjFoLTJ2LTFoLTd2MWgtMnYtMWgtMnYxNmgxNXYtMTZoLTJ6TTE0IDE1aC0xM3YtMTFoMTN2MTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUHJpbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDFoOHYyaC04di0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDRoLTE0Yy0wLjU1IDAtMSAwLjQ1LTEgMXY1YzAgMC41NSAwLjQ1IDEgMSAxaDN2NGg4di00aDNjMC41NSAwIDEtMC40NSAxLTF2LTVjMC0wLjU1LTAuNDUtMS0xLTF6TTIgN2MtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMSAxIDAuNDQ4IDEgMS0wLjQ0OCAxLTEgMXpNMTEgMTRoLTZ2LTVoNnY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUtleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE4IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDJoLTE2Yy0wLjU1IDAtMSAwLjQ1LTEgMXYxMGMwIDAuNTUgMC40NSAxIDEgMWgxNmMwLjU1IDAgMS0wLjQ1IDEtMXYtMTBjMC0wLjU1LTAuNDUtMS0xLTF6TTEwIDRoMnYyaC0ydi0yek0xMyA3djJoLTJ2LTJoMnpNNyA0aDJ2MmgtMnYtMnpNMTAgN3YyaC0ydi0yaDJ6TTQgNGgydjJoLTJ2LTJ6TTcgN3YyaC0ydi0yaDJ6TTIgNGgxdjJoLTF2LTJ6TTIgN2gydjJoLTJ2LTJ6TTMgMTJoLTF2LTJoMXYyek0xMiAxMmgtOHYtMmg4djJ6TTE2IDEyaC0zdi0yaDN2MnpNMTYgOWgtMnYtMmgydjJ6TTE2IDZoLTN2LTJoM3YyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbURpc3BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxdjEwaDE2di0xMGgtMTZ6TTE1IDEwaC0xNHYtOGgxNHY4ek0xMC41IDEyaC01bC0wLjUgMi0xIDFoOGwtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxMXYtOGMwLTAuNTUtMC40NS0xLTEtMWgtMTBjLTAuNTUgMC0xIDAuNDUtMSAxdjhoLTJ2M2gxNnYtM2gtMnpNMTAgMTNoLTR2LTFoNHYxek0xMyAxMWgtMTB2LTcuOTk4YzAuMDAxLTAuMDAxIDAuMDAxLTAuMDAxIDAuMDAyLTAuMDAyaDkuOTk2YzAuMDAxIDAuMDAxIDAuMDAxIDAuMDAxIDAuMDAyIDAuMDAydjcuOTk4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1vYmlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDBoLTdjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWg3YzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTYgMC43NWg0djAuNWgtNHYtMC41ek04IDE1Yy0wLjU1MiAwLTEtMC40NDgtMS0xczAuNDQ4LTEgMS0xIDEgMC40NDggMSAxLTAuNDQ4IDEtMSAxek0xMiAxMmgtOHYtMTBoOHYxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Nb2JpbGUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBoLTljLTAuNTUgMC0xIDAuNDUtMSAxdjE0YzAgMC41NSAwLjQ1IDEgMSAxaDljMC41NSAwIDEtMC40NSAxLTF2LTE0YzAtMC41NS0wLjQ1LTEtMS0xek03LjUgMTUuMjc4Yy0wLjQzIDAtMC43NzgtMC4zNDgtMC43NzgtMC43NzhzMC4zNDgtMC43NzggMC43NzgtMC43NzggMC43NzggMC4zNDggMC43NzggMC43NzgtMC4zNDggMC43NzgtMC43NzggMC43Nzh6TTEyIDEzaC05di0xMWg5djExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi41IDBoLTEwYy0wLjgyNSAwLTEuNSAwLjY3NS0xLjUgMS41djEzYzAgMC44MjUgMC42NzUgMS41IDEuNSAxLjVoMTBjMC44MjUgMCAxLjUtMC42NzUgMS41LTEuNXYtMTNjMC0wLjgyNS0wLjY3NS0xLjUtMS41LTEuNXpNNy41IDE1LjVjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjUgMC41IDAuMjI0IDAuNSAwLjUtMC4yMjQgMC41LTAuNSAwLjV6TTEyIDE0aC05di0xMmg5djEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVR2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjMzMSA0LjUwMmMtMS4zODgtMC4xOTktMi44NjUtMC4zNDQtNC40MDctMC40MjVsMi41NzYtMi41NzYtMS0xLTMuNTA5IDMuNTA5Yy0wLjMyOC0wLjAwNi0wLjY1OS0wLjAwOS0wLjk5MS0wLjAwOXYwbC00LTQtMSAxIDMuMDM0IDMuMDM0Yy0xLjg4OSAwLjA2Ni0zLjY5MyAwLjIyNy01LjM2NSAwLjQ2Ny0wLjQzIDEuNjgzLTAuNjY5IDMuNTQzLTAuNjY5IDUuNDk4czAuMjM5IDMuODE1IDAuNjY5IDUuNDk4YzIuMjQ0IDAuMzIzIDQuNzI0IDAuNTAyIDcuMzMxIDAuNTAyczUuMDg3LTAuMTc5IDcuMzMxLTAuNTAyYzAuNDMtMS42ODMgMC42NjktMy41NDMgMC42NjktNS40OThzLTAuMjM5LTMuODE1LTAuNjY5LTUuNDk4ek0xMy40OTggMTMuNjY2Yy0xLjY4MyAwLjIxNS0zLjU0MyAwLjMzNC01LjQ5OCAwLjMzNHMtMy44MTUtMC4xMTktNS40OTgtMC4zMzRjLTAuMzIzLTEuMTIyLTAuNTAyLTIuMzYyLTAuNTAyLTMuNjY2czAuMTc5LTIuNTQzIDAuNTAyLTMuNjY2YzEuNjgzLTAuMjE1IDMuNTQzLTAuMzM0IDUuNDk4LTAuMzM0czMuODE1IDAuMTE5IDUuNDk4IDAuMzM0YzAuMzIzIDEuMTIyIDAuNTAyIDIuMzYyIDAuNTAyIDMuNjY2cy0wLjE3OSAyLjU0My0wLjUwMiAzLjY2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1EcmF3ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODkgMTAuMTg4bC00LTVjLTAuMDk1LTAuMTE5LTAuMjM5LTAuMTg4LTAuMzktMC4xODhoLTdjLTAuMTUyIDAtMC4yOTYgMC4wNjktMC4zOSAwLjE4OGwtNCA1Yy0wLjA3MSAwLjA4OS0wLjExIDAuMTk5LTAuMTEgMC4zMTJ2NC41YzAgMC41NTIgMC40NDggMSAxIDFoMTRjMC41NTIgMCAxLTAuNDQ4IDEtMXYtNC41YzAtMC4xMTQtMC4wMzktMC4yMjQtMC4xMS0wLjMxMnpNMTUgMTFoLTMuNWwtMiAyaC0zbC0yLTJoLTMuNXYtMC4zMjVsMy43NC00LjY3NWg2LjUxOWwzLjc0IDQuNjc1djAuMzI1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgOGgtN2MtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXMwLjIyNC0wLjUgMC41LTAuNWg3YzAuMjc2IDAgMC41IDAuMjI0IDAuNSAwLjVzLTAuMjI0IDAuNS0wLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTBoLTljLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjVoOWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1EcmF3ZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljg5IDEwLjE4OGwtNC01Yy0wLjA5NS0wLjExOS0wLjIzOS0wLjE4OC0wLjM5LTAuMTg4aC03Yy0wLjE1MiAwLTAuMjk2IDAuMDY5LTAuMzkgMC4xODhsLTQgNWMtMC4wNzEgMC4wODktMC4xMSAwLjE5OS0wLjExIDAuMzEydjQuNWMwIDAuNTUyIDAuNDQ4IDEgMSAxaDE0YzAuNTUyIDAgMS0wLjQ0OCAxLTF2LTQuNWMwLTAuMTE0LTAuMDM5LTAuMjI0LTAuMTEtMC4zMTJ6TTE1IDExaC0zLjVsLTIgMmgtM2wtMi0yaC0zLjV2LTAuMzI1bDMuNzQtNC42NzVoNi41MTlsMy43NCA0LjY3NXYwLjMyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Cb3hBZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMWgtMTBsLTMgM3YxMC41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMTVjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtMTAuNWwtMy0zek04IDEzbC01LTRoM3YtM2g0djNoM2wtNSA0ek0yLjQxNCAzbDEtMWg5LjE3MmwxIDFoLTExLjE3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Cb3hSZW1vdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMWgtMTBsLTMgM3YxMC41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMTVjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtMTAuNWwtMy0zek0xMCAxMHYzaC00di0zaC0zbDUtNCA1IDRoLTN6TTIuNDE0IDNsMS0xaDkuMTcxbDEgMWgtMTEuMTcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbURvd25sb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOWw0LTRoLTN2LTRoLTJ2NGgtM3pNMTEuNjM2IDcuMzY0bC0xLjEyMSAxLjEyMSA0LjA2NCAxLjUxNS02LjU3OSAyLjQ1My02LjU3OS0yLjQ1MyA0LjA2NC0xLjUxNS0xLjEyMS0xLjEyMS00LjM2NCAxLjYzNnY0bDggMyA4LTN2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWgydi00aDNsLTQtNC00IDRoM3pNMTAgNi43NXYxLjU0Mmw0LjU3OSAxLjcwOC02LjU3OSAyLjQ1My02LjU3OS0yLjQ1MyA0LjU3OS0xLjcwOHYtMS41NDJsLTYgMi4yNXY0bDggMyA4LTN2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmxvcHB5RGlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwaC0xNHYxNmgxNnYtMTRsLTItMnpNOCAyaDJ2NGgtMnYtNHpNMTQgMTRoLTEydi0xMmgxdjVoOXYtNWgxLjE3MmwwLjgyOCAwLjgyOHYxMS4xNzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNGgxMGMxLjY1NyAwIDMtMS4zNDMgMy0zaC0xNmMwIDEuNjU3IDEuMzQzIDMgMyAzek0xMyAxMmgxdjFoLTF2LTF6TTE1IDJoLTE0bC0xIDhoMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRGF0YWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMS4xMTktOCAyLjV2MmMwIDEuMzgxIDMuNTgyIDIuNSA4IDIuNXM4LTEuMTE5IDgtMi41di0yYzAtMS4zODEtMy41ODItMi41LTgtMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOC41Yy00LjQxOCAwLTgtMS4xMTktOC0yLjV2M2MwIDEuMzgxIDMuNTgyIDIuNSA4IDIuNXM4LTEuMTE5IDgtMi41di0zYzAgMS4zODEtMy41ODIgMi41LTggMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNjLTQuNDE4IDAtOC0xLjExOS04LTIuNXYzYzAgMS4zODEgMy41ODIgMi41IDggMi41czgtMS4xMTkgOC0yLjV2LTNjMCAxLjM4MS0zLjU4MiAyLjUtOCAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVW5kbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFjLTIuMjA5IDAtNC4yMDkgMC44OTYtNS42NTcgMi4zNDNsLTIuMzQzLTIuMzQzdjZoNmwtMi4yNDMtMi4yNDNjMS4wODYtMS4wODYgMi41ODYtMS43NTcgNC4yNDMtMS43NTcgMy4zMTQgMCA2IDIuNjg2IDYgNiAwIDEuNzkyLTAuNzg2IDMuNDAxLTIuMDMyIDQuNWwxLjMyMyAxLjVjMS42NjEtMS40NjYgMi43MDktMy42MTEgMi43MDktNiAwLTQuNDE4LTMuNTgyLTgtOC04elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVJlZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5YzAgMi4zODkgMS4wNDggNC41MzQgMi43MDkgNmwxLjMyMy0xLjVjLTEuMjQ2LTEuMDk5LTIuMDMxLTIuNzA4LTIuMDMxLTQuNSAwLTMuMzE0IDIuNjg2LTYgNi02IDEuNjU3IDAgMy4xNTcgMC42NzIgNC4yNDMgMS43NTdsLTIuMjQzIDIuMjQzaDZ2LTZsLTIuMzQzIDIuMzQzYy0xLjQ0OC0xLjQ0OC0zLjQ0OC0yLjM0My01LjY1Ny0yLjM0My00LjQxOCAwLTggMy41ODItOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVVuZG8yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjkwNCAxNmMxLjc3Ny0zLjIxOSAyLjA3Ni04LjEzLTQuOTA0LTcuOTY2djMuOTY2bC02LTYgNi02djMuODgxYzguMzU5LTAuMjE4IDkuMjkgNy4zNzggNC45MDQgMTIuMTE5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVJlZG8yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMy44ODF2LTMuODgxbDYgNi02IDZ2LTMuOTY2Yy02Ljk4LTAuMTY0LTYuNjgxIDQuNzQ3LTQuOTA0IDcuOTY2LTQuMzg2LTQuNzQxLTMuNDU1LTEyLjMzNyA0LjkwNC0xMi4xMTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjA5NiAwYy0xLjc3NyAzLjIxOS0yLjA3NiA4LjEzIDQuOTA0IDcuOTY2di0zLjk2Nmw2IDYtNiA2di0zLjg4MWMtOC4zNTkgMC4yMTgtOS4yOS03LjM3OC00LjkwNC0xMi4xMTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMi4xMTl2My44ODFsLTYtNiA2LTZ2My45NjZjNi45OCAwLjE2NCA2LjY4MS00Ljc0NyA0LjkwNC03Ljk2NiA0LjM4NiA0Ljc0MSAzLjQ1NSAxMi4zMzctNC45MDQgMTIuMTE5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJ1YmJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFjNC40MTggMCA4IDIuOTEgOCA2LjVzLTMuNTgyIDYuNS04IDYuNWMtMC40MjQgMC0wLjg0MS0wLjAyNy0xLjI0Ny0wLjA3OS0xLjcxOCAxLjcxOC0zLjc3IDIuMDI3LTUuNzUzIDIuMDcydi0wLjQyMWMxLjA3MS0wLjUyNSAyLTEuNDggMi0yLjU3MiAwLTAuMTUyLTAuMDEyLTAuMzAyLTAuMDM0LTAuNDQ4LTEuODA5LTEuMTkyLTIuOTY2LTMuMDEyLTIuOTY2LTUuMDUyIDAtMy41OSAzLjU4Mi02LjUgOC02LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQnViYmxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxOCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNyAxNC4wODFjMCAwLjcxMSAwLjQwNyAxLjMyNyAxIDEuNjI4djAuMjQ5Yy0wLjE2NiAwLjAyMy0wLjMzNSAwLjAzNS0wLjUwOCAwLjAzNS0xLjA2MyAwLTIuMDIxLTAuNDQ2LTIuNjk5LTEuMTYtMC40MSAwLjEwOS0wLjg0NCAwLjE2OC0xLjI5MyAwLjE2OC0yLjQ4NSAwLTQuNS0xLjc5MS00LjUtNHMyLjAxNS00IDQuNS00YzIuNDg1IDAgNC41IDEuNzkxIDQuNSA0IDAgMC44NjUtMC4zMDkgMS42NjUtMC44MzQgMi4zMi0wLjEwNyAwLjIzMi0wLjE2NiAwLjQ4OS0wLjE2NiAwLjc2MXpNOCAwYzQuMzUxIDAgNy44OSAyLjgyMiA3Ljk5NyA2LjMzNi0wLjc2OC0wLjM0My0xLjYxOS0wLjUyNC0yLjQ5Ny0wLjUyNC0xLjQ5MyAwLTIuOTAzIDAuNTIzLTMuOTcxIDEuNDcyLTEuMTA3IDAuOTg0LTEuNzE3IDIuMzA0LTEuNzE3IDMuNzE2IDAgMC42OTggMC4xNDkgMS4zNzMgMC40MzMgMS45OTctMC4wODIgMC4wMDItMC4xNjQgMC4wMDMtMC4yNDYgMC4wMDMtMC40MjQgMC0wLjg0MS0wLjAyNy0xLjI0Ny0wLjA3OS0xLjcxOCAxLjcxOC0zLjc3IDIuMDI3LTUuNzUzIDIuMDcydi0wLjQyMWMxLjA3MS0wLjUyNSAyLTEuNDggMi0yLjU3MiAwLTAuMTUyLTAuMDEyLTAuMzAyLTAuMDM0LTAuNDQ4LTEuODA5LTEuMTkyLTIuOTY2LTMuMDEyLTIuOTY2LTUuMDUyIDAtMy41OSAzLjU4Mi02LjUgOC02LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQnViYmxlczIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTggMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDB2MGM0LjE0MiAwIDcuNSAyLjcxNyA3LjUgNi4wNjlzLTMuMzU4IDYuMDY5LTcuNSA2LjA2OWMtMC4zOTggMC0wLjc4OC0wLjAyNS0xLjE2OS0wLjA3NC0xLjYxMSAxLjYwNS0zLjQ3MSAxLjg5Mi01LjMzMSAxLjkzNXYtMC4zOTNjMS4wMDQtMC40OSAxLjgxMy0xLjM4MiAxLjgxMy0yLjQwMiAwLTAuMTQyLTAuMDExLTAuMjgyLTAuMDMyLTAuNDE5LTEuNjk2LTEuMTEzLTIuNzgxLTIuODEyLTIuNzgxLTQuNzE3IDAtMy4zNTIgMy4zNTgtNi4wNjkgNy41LTYuMDY5ek0xNS41NjMgMTMuNjA0YzAgMC44NzQgMC41NjcgMS42MzkgMS40MzggMi4wNTl2MC4zMzdjLTEuNjExLTAuMDM2LTMuMDkwLTAuMjgzLTQuNDg3LTEuNjU4LTAuMzMgMC4wNDEtMC42NjkgMC4wNjMtMS4wMTMgMC4wNjMtMS40OTIgMC0yLjg2Ni0wLjQwMi0zLjk2My0xLjA3OSAyLjI2MS0wLjAwOCA0LjM5NS0wLjczMiA2LjAxMy0yLjA0MiAwLjgxNi0wLjY2IDEuNDU5LTEuNDM1IDEuOTEzLTIuMzAyIDAuNDgxLTAuOTIgMC43MjQtMS45IDAuNzI0LTIuOTEzIDAtMC4xNjMtMC4wMDctMC4zMjYtMC4wMjAtMC40ODcgMS4xMzQgMC45MzYgMS44MzIgMi4yMTMgMS44MzIgMy42MiAwIDEuNjMzLTAuOTQgMy4wODktMi40MSA0LjA0My0wLjAxOCAwLjExNy0wLjAyNyAwLjIzNy0wLjAyNyAwLjM1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CdWJibGUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggM2MtMC44NTggMC0xLjY4NyAwLjEzNS0yLjQ2NCAwLjQwMi0wLjczIDAuMjUxLTEuMzggMC42MDUtMS45MzIgMS4wNTQtMS4wMzUgMC44NDEtMS42MDQgMS45MjItMS42MDQgMy4wNDQgMCAwLjYzIDAuMTc1IDEuMjQgMC41MiAxLjgxNSAwLjM1NiAwLjU5MiAwLjg5IDEuMTM0IDEuNTQ3IDEuNTY2IDAuNDc0IDAuMzEyIDAuNzkzIDAuODEyIDAuODc4IDEuMzczIDAuMDI4IDAuMTg3IDAuMDQ2IDAuMzc2IDAuMDUzIDAuNTY0IDAuMTE3LTAuMDk3IDAuMjMtMC4yMDEgMC4zNDItMC4zMTIgMC4zNzctMC4zNzcgMC44ODctMC41ODYgMS40MTQtMC41ODYgMC4wODQgMCAwLjE2OCAwLjAwNSAwLjI1MiAwLjAxNiAwLjMyOCAwLjA0MiAwLjY2MiAwLjA2MyAwLjk5NSAwLjA2MyAwLjg1OCAwIDEuNjg3LTAuMTM1IDIuNDY0LTAuNDAyIDAuNzMtMC4yNTEgMS4zOC0wLjYwNSAxLjkzMi0xLjA1NCAxLjAzNS0wLjg0MSAxLjYwNC0xLjkyMiAxLjYwNC0zLjA0NHMtMC41Ny0yLjIwMy0xLjYwNC0zLjA0NGMtMC41NTItMC40NDgtMS4yMDItMC44MDMtMS45MzItMS4wNTQtMC43NzctMC4yNjctMS42MDYtMC40MDItMi40NjQtMC40MDJ6TTggMXYwYzQuNDE4IDAgOCAyLjkxIDggNi41cy0zLjU4MiA2LjUtOCA2LjVjLTAuNDI0IDAtMC44NDEtMC4wMjctMS4yNDctMC4wNzktMS43MTggMS43MTgtMy43NyAyLjAyNy01Ljc1MyAyLjA3MnYtMC40MjFjMS4wNzEtMC41MjUgMi0xLjQ4IDItMi41NzIgMC0wLjE1Mi0wLjAxMi0wLjMwMi0wLjAzNC0wLjQ0OC0xLjgwOS0xLjE5Mi0yLjk2Ni0zLjAxMi0yLjk2Ni01LjA1MiAwLTMuNTkgMy41ODItNi41IDgtNi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJ1YmJsZXMzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE4IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3IDE0LjA4MWMwIDAuNzExIDAuNDA3IDEuMzI3IDEgMS42Mjh2MC4yNDljLTAuMTY2IDAuMDIzLTAuMzM1IDAuMDM1LTAuNTA4IDAuMDM1LTEuMDYzIDAtMi4wMjEtMC40NDYtMi42OTktMS4xNi0wLjQxIDAuMTA5LTAuODQ0IDAuMTY4LTEuMjkzIDAuMTY4LTIuNDg1IDAtNC41LTEuNzkxLTQuNS00czIuMDE1LTQgNC41LTRjMi40ODUgMCA0LjUgMS43OTEgNC41IDQgMCAwLjg2NS0wLjMwOSAxLjY2NS0wLjgzNCAyLjMyLTAuMTA3IDAuMjMyLTAuMTY2IDAuNDg5LTAuMTY2IDAuNzYxek0zLjYwNCAzLjQ1NmMtMS4wMzUgMC44NDEtMS42MDQgMS45MjItMS42MDQgMy4wNDQgMCAwLjYzIDAuMTc1IDEuMjQgMC41MiAxLjgxNSAwLjM1NiAwLjU5MiAwLjg5IDEuMTM0IDEuNTQ3IDEuNTY2IDAuNDc0IDAuMzEyIDAuNzkzIDAuODEyIDAuODc4IDEuMzczIDAuMDI4IDAuMTg3IDAuMDQ2IDAuMzc2IDAuMDUzIDAuNTY0IDAuMTE3LTAuMDk3IDAuMjMtMC4yMDEgMC4zNDItMC4zMTIgMC4zNzctMC4zNzcgMC44ODctMC41ODYgMS40MTQtMC41ODYgMC4wODQgMCAwLjE2OCAwLjAwNSAwLjI1MiAwLjAxNiAwLjMyNyAwLjA0MiAwLjY2MiAwLjA2MyAwLjk5NCAwLjA2M3YyYy0wLjQyNC0wLTAuODQtMC4wMjctMS4yNDYtMC4wNzktMS43MTggMS43MTgtMy43NyAyLjAyNy01Ljc1MyAyLjA3MnYtMC40MjFjMS4wNzEtMC41MjUgMi0xLjQ4IDItMi41NzIgMC0wLjE1Mi0wLjAxMi0wLjMwMi0wLjAzNC0wLjQ0OC0xLjgwOS0xLjE5Mi0yLjk2Ni0zLjAxMi0yLjk2Ni01LjA1MiAwLTMuNTkgMy41ODItNi41IDgtNi41IDQuMzUxIDAgNy44OSAyLjgyMiA3Ljk5NyA2LjMzNi0wLjY0Mi0wLjI4Ni0xLjM0MS0wLjQ2LTIuMDY3LTAuNTA5LTAuMTgtMC44NzYtMC43MDktMS43LTEuNTM1LTIuMzcxLTAuNTUyLTAuNDQ4LTEuMjAyLTAuODAzLTEuOTMyLTEuMDU0LTAuNzc3LTAuMjY3LTEuNjA2LTAuNDAyLTIuNDY0LTAuNDAycy0xLjY4NyAwLjEzNS0yLjQ2NCAwLjQwMmMtMC43MyAwLjI1MS0xLjM4IDAuNjA1LTEuOTMyIDEuMDU0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJ1YmJsZXM0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE4IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAyYy0wLjc5MiAwLTEuNTU2IDAuMTI0LTIuMjcyIDAuMzY5LTAuNjcxIDAuMjMtMS4yNjcgMC41NTQtMS43NzMgMC45NjMtMC45MzggMC43NTktMS40NTUgMS43MzEtMS40NTUgMi43MzcgMCAwLjU2MiAwLjE1NyAxLjEwOSAwLjQ2NyAxLjYyMyAwLjMyMyAwLjUzNyAwLjgxMSAxLjAyOCAxLjQxIDEuNDIxIDAuNDc2IDAuMzEyIDAuNzk2IDAuODEyIDAuODgxIDEuMzc0IDAuMDE0IDAuMDk0IDAuMDI1IDAuMTg4IDAuMDM0IDAuMjgyIDAuMDQzLTAuMDM5IDAuMDg1LTAuMDgwIDAuMTI3LTAuMTIyIDAuMzc3LTAuMzc2IDAuODg2LTAuNTgzIDEuNDExLTAuNTgzIDAuMDg0IDAgMC4xNjcgMC4wMDUgMC4yNTEgMC4wMTYgMC4zMDMgMC4wMzggMC42MTEgMC4wNTggMC45MTggMC4wNTggMC43OTIgMCAxLjU1Ni0wLjEyNCAyLjI3Mi0wLjM2OSAwLjY3MS0wLjIzIDEuMjY3LTAuNTU0IDEuNzc0LTAuOTYzIDAuOTM4LTAuNzU5IDEuNDU1LTEuNzMxIDEuNDU1LTIuNzM3cy0wLjUxNy0xLjk3OC0xLjQ1NS0yLjczN2MtMC41MDYtMC40MS0xLjEwMy0wLjczNC0xLjc3NC0wLjk2My0wLjcxNi0wLjI0NS0xLjQ4LTAuMzY5LTIuMjcyLTAuMzY5ek03LjUgMHYwYzQuMTQyIDAgNy41IDIuNzE3IDcuNSA2LjA2OXMtMy4zNTggNi4wNjktNy41IDYuMDY5Yy0wLjM5OCAwLTAuNzg4LTAuMDI1LTEuMTY5LTAuMDc0LTEuNjExIDEuNjA1LTMuNDcxIDEuODkyLTUuMzMxIDEuOTM1di0wLjM5M2MxLjAwNC0wLjQ5IDEuODEzLTEuMzgyIDEuODEzLTIuNDAyIDAtMC4xNDItMC4wMTEtMC4yODItMC4wMzItMC40MTktMS42OTYtMS4xMTMtMi43ODEtMi44MTItMi43ODEtNC43MTcgMC0zLjM1MiAzLjM1OC02LjA2OSA3LjUtNi4wNjl6TTE1LjU2MyAxMy42MDRjMCAwLjg3NCAwLjU2NyAxLjYzOSAxLjQzOCAyLjA1OXYwLjMzN2MtMS42MTEtMC4wMzYtMy4wOTAtMC4yODMtNC40ODctMS42NTgtMC4zMyAwLjA0MS0wLjY2OSAwLjA2My0xLjAxMyAwLjA2My0xLjQ5MiAwLTIuODY2LTAuNDAyLTMuOTYzLTEuMDc5IDIuMjYxLTAuMDA4IDQuMzk1LTAuNzMyIDYuMDEzLTIuMDQyIDAuODE2LTAuNjYgMS40NTktMS40MzUgMS45MTMtMi4zMDIgMC40ODEtMC45MiAwLjcyNC0xLjkgMC43MjQtMi45MTMgMC0wLjE2My0wLjAwNy0wLjMyNi0wLjAyMC0wLjQ4NyAxLjEzNCAwLjkzNiAxLjgzMiAyLjIxMyAxLjgzMiAzLjYyIDAgMS42MzMtMC45NCAzLjA4OS0yLjQxIDQuMDQzLTAuMDE4IDAuMTE3LTAuMDI3IDAuMjM3LTAuMDI3IDAuMzU5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxMS4wNDF2LTAuODI1YzEuMTAyLTAuNjIxIDItMi4xNjggMi0zLjcxNiAwLTIuNDg1IDAtNC41LTMtNC41cy0zIDIuMDE1LTMgNC41YzAgMS41NDggMC44OTggMy4wOTUgMiAzLjcxNnYwLjgyNWMtMy4zOTIgMC4yNzctNiAxLjk0NC02IDMuOTU5aDE0YzAtMi4wMTUtMi42MDgtMy42ODItNi0zLjk1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Vc2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxOCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMi4wNDF2LTAuODI1YzEuMTAyLTAuNjIxIDItMi4xNjggMi0zLjcxNiAwLTIuNDg1IDAtNC41LTMtNC41cy0zIDIuMDE1LTMgNC41YzAgMS41NDggMC44OTggMy4wOTUgMiAzLjcxNnYwLjgyNWMtMy4zOTIgMC4yNzctNiAxLjk0NC02IDMuOTU5aDE0YzAtMi4wMTUtMi42MDgtMy42ODItNi0zLjk1OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjExMiAxMi40MjdjMC44NjQtMC41NjUgMS45MzktMC45OTQgMy4xMjItMS4yNTYtMC4yMzUtMC4yNzgtMC40NDktMC41ODgtMC42MzMtMC45MjItMC40NzUtMC44NjMtMC43MjYtMS44MTMtMC43MjYtMi43NDggMC0xLjM0NCAwLTIuNjE0IDAuNDc4LTMuNjUzIDAuNDY0LTEuMDA4IDEuMjk5LTEuNjMzIDIuNDg4LTEuODY3LTAuMjY0LTEuMTk1LTAuOTY4LTEuOTgtMi44NDEtMS45OC0zIDAtMyAyLjAxNS0zIDQuNSAwIDEuNTQ4IDAuODk4IDMuMDk1IDIgMy43MTZ2MC44MjVjLTMuMzkyIDAuMjc3LTYgMS45NDQtNiAzLjk1OWg0LjM1OWMwLjIyNy0wLjIwMiAwLjQ3OC0wLjM5MyAwLjc1My0wLjU3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Vc2VyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExLjVjMC0yLjM2MyAxLjQ5OC00LjM4MyAzLjU5NC01LjE1OSAwLjI1NC0wLjU3MSAwLjQwNi0xLjIwNiAwLjQwNi0xLjg0MSAwLTIuNDg1IDAtNC41LTMtNC41cy0zIDIuMDE1LTMgNC41YzAgMS41NDggMC44OTggMy4wOTUgMiAzLjcxNnYwLjgyNWMtMy4zOTIgMC4yNzctNiAxLjk0NC02IDMuOTU5aDYuMjA4Yy0wLjEzNS0wLjQ3Ny0wLjIwOC0wLjk4LTAuMjA4LTEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDdjLTIuNDg1IDAtNC41IDIuMDE1LTQuNSA0LjVzMi4wMTUgNC41IDQuNSA0LjVjMi40ODUgMCA0LjUtMi4wMTUgNC41LTQuNXMtMi4wMTUtNC41LTQuNS00LjV6TTE0IDEyaC0ydjJoLTF2LTJoLTJ2LTFoMnYtMmgxdjJoMnYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVVzZXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExLjVjMC0yLjM2MyAxLjQ5OC00LjM4MyAzLjU5NC01LjE1OSAwLjI1NC0wLjU3MSAwLjQwNi0xLjIwNiAwLjQwNi0xLjg0MSAwLTIuNDg1IDAtNC41LTMtNC41cy0zIDIuMDE1LTMgNC41YzAgMS41NDggMC44OTggMy4wOTUgMiAzLjcxNnYwLjgyNWMtMy4zOTIgMC4yNzctNiAxLjk0NC02IDMuOTU5aDYuMjA4Yy0wLjEzNS0wLjQ3Ny0wLjIwOC0wLjk4LTAuMjA4LTEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDdjLTIuNDg1IDAtNC41IDIuMDE1LTQuNSA0LjVzMi4wMTUgNC41IDQuNSA0LjVjMi40ODUgMCA0LjUtMi4wMTUgNC41LTQuNXMtMi4wMTUtNC41LTQuNS00LjV6TTE0IDEyaC01di0xaDV2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Vc2VyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgOS41bC00LjUgNC41LTEuNS0xLjUtMSAxIDIuNSAyLjUgNS41LTUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEyaDV2LTEuNzk5Yy0xLjA1MC0wLjYxMy0yLjQ0Mi0xLjAzMy00LTEuMTZ2LTAuODI1YzEuMTAyLTAuNjIxIDItMi4xNjggMi0zLjcxNiAwLTIuNDg1IDAtNC41LTMtNC41cy0zIDIuMDE1LTMgNC41YzAgMS41NDggMC44OTggMy4wOTUgMiAzLjcxNnYwLjgyNWMtMy4zOTIgMC4yNzctNiAxLjk0NC02IDMuOTU5aDd2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVXNlclRpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDNjMC0xLjY1NyAxLjM0My0zIDMtM3MzIDEuMzQzIDMgM2MwIDEuNjU3LTEuMzQzIDMtMyAzcy0zLTEuMzQzLTMtM3pNMTIuMDAxIDdoLTAuNTUzbC0zLjExMSA2LjMxNiAxLjE2My01LjgxNi0xLjUtMS41LTEuNSAxLjUgMS4xNjMgNS44MTYtMy4xMTEtNi4zMTZoLTAuNTU0Yy0xLjk5OSAwLTEuOTk5IDEuMzQ0LTEuOTk5IDN2NWgxMnYtNWMwLTEuNjU2IDAtMy0xLjk5OS0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVF1b3Rlc0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41MTYgN2MxLjkzMyAwIDMuNSAxLjU2NyAzLjUgMy41cy0xLjU2NyAzLjUtMy41IDMuNS0zLjUtMS41NjctMy41LTMuNWwtMC4wMTYtMC41YzAtMy44NjYgMy4xMzQtNyA3LTd2MmMtMS4zMzYgMC0yLjU5MSAwLjUyLTMuNTM2IDEuNDY0LTAuMTgyIDAuMTgyLTAuMzQ4IDAuMzc1LTAuNDk3IDAuNTc4IDAuMTc5LTAuMDI4IDAuMzYyLTAuMDQzIDAuNTQ4LTAuMDQzek0xMi41MTYgN2MxLjkzMyAwIDMuNSAxLjU2NyAzLjUgMy41cy0xLjU2NyAzLjUtMy41IDMuNS0zLjUtMS41NjctMy41LTMuNWwtMC4wMTYtMC41YzAtMy44NjYgMy4xMzQtNyA3LTd2MmMtMS4zMzYgMC0yLjU5MSAwLjUyLTMuNTM2IDEuNDY0LTAuMTgyIDAuMTgyLTAuMzQ4IDAuMzc1LTAuNDk3IDAuNTc4IDAuMTc5LTAuMDI4IDAuMzYyLTAuMDQzIDAuNTQ5LTAuMDQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVF1b3Rlc1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgMTBjLTEuOTMzIDAtMy41LTEuNTY3LTMuNS0zLjVzMS41NjctMy41IDMuNS0zLjUgMy41IDEuNTY3IDMuNSAzLjVsMC4wMTYgMC41YzAgMy44NjYtMy4xMzQgNy03IDd2LTJjMS4zMzYgMCAyLjU5MS0wLjUyIDMuNTM2LTEuNDY0IDAuMTgyLTAuMTgyIDAuMzQ4LTAuMzc1IDAuNDk3LTAuNTc4LTAuMTc5IDAuMDI4LTAuMzYyIDAuMDQzLTAuNTQ5IDAuMDQzek0zLjUgMTBjLTEuOTMzIDAtMy41LTEuNTY3LTMuNS0zLjVzMS41NjctMy41IDMuNS0zLjUgMy41IDEuNTY3IDMuNSAzLjVsMC4wMTYgMC41YzAgMy44NjYtMy4xMzQgNy03IDd2LTJjMS4zMzYgMCAyLjU5MS0wLjUyIDMuNTM2LTEuNDY0IDAuMTgyLTAuMTgyIDAuMzQ4LTAuMzc1IDAuNDk3LTAuNTc4LTAuMTc5IDAuMDI4LTAuMzYyIDAuMDQzLTAuNTQ5IDAuMDQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUhvdXJHbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zOSA4YzIuMTUyLTEuMzY1IDMuNjEtMy45ODggMy42MS03IDAtMC4zMzktMC4wMTktMC42NzItMC4wNTQtMWgtMTMuODkxYy0wLjAzNiAwLjMyOC0wLjA1NCAwLjY2MS0wLjA1NCAxIDAgMy4wMTIgMS40NTcgNS42MzUgMy42MDkgNy0yLjE1MiAxLjM2NS0zLjYwOSAzLjk4OC0zLjYwOSA3IDAgMC4zMzkgMC4wMTkgMC42NzIgMC4wNTQgMWgxMy44OTFjMC4wMzYtMC4zMjggMC4wNTQtMC42NjEgMC4wNTQtMSAwLTMuMDEyLTEuNDU3LTUuNjM1LTMuNjA5LTd6TTIuNSAxNWMwLTIuOTIxIDEuMjUzLTUuMzk3IDMuNS02LjIxNHYtMS41NzJjLTIuMjQ3LTAuODE3LTMuNS0zLjI5NC0zLjUtNi4yMTR2MGgxMWMwIDIuOTIxLTEuMjUzIDUuMzk3LTMuNSA2LjIxNHYxLjU3MmMyLjI0NyAwLjgxNyAzLjUgMy4yOTQgMy41IDYuMjE0aC0xMXpNOS42ODIgMTAuNDYyYy0xLjEyLTAuNjM1LTEuMTgxLTEuNDU5LTEuMTgyLTEuOTU5di0xLjAwNGMwLTAuNSAwLjA1OS0xLjMyNyAxLjE4NC0xLjk2MyAwLjYwMi0wLjM0OSAxLjEyMi0wLjg4IDEuNTE2LTEuNTM3aC02LjRjMC4zOTUgMC42NTcgMC45MTYgMS4xODggMS41MTggMS41MzggMS4xMiAwLjYzNSAxLjE4MSAxLjQ1OSAxLjE4MiAxLjk1OXYxLjAwNGMwIDAuNS0wLjA1OSAxLjMyNy0xLjE4NCAxLjk2My0xLjEzNSAwLjY1OS0xLjk4IDEuOTY0LTIuMjM2IDMuNTM3aDcuODM5Yy0wLjI1Ni0xLjU3NC0xLjEwMi0yLjg3OS0yLjIzOC0zLjUzOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGlubmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMmMwLTEuMTA1IDAuODk1LTIgMi0yczIgMC44OTUgMiAyYzAgMS4xMDUtMC44OTUgMi0yIDJzLTItMC44OTUtMi0yek0xMC4yNDMgMy43NTdjMC0xLjEwNSAwLjg5NS0yIDItMnMyIDAuODk1IDIgMmMwIDEuMTA1LTAuODk1IDItMiAycy0yLTAuODk1LTItMnpNMTMgOGMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMS4yNDMgMTIuMjQzYzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6TTcgMTRjMCAwIDAgMCAwIDAgMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMWMwIDAgMCAwIDAgMCAwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMXpNMi43NTcgMTIuMjQzYzAgMCAwIDAgMCAwIDAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwIDAgMCAwIDAgMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6TTIuMjU3IDMuNzU3YzAgMCAwIDAgMCAwIDAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjVjMCAwIDAgMCAwIDAgMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjV6TTAuODc1IDhjMC0wLjYyMSAwLjUwNC0xLjEyNSAxLjEyNS0xLjEyNXMxLjEyNSAwLjUwNCAxLjEyNSAxLjEyNWMwIDAuNjIxLTAuNTA0IDEuMTI1LTEuMTI1IDEuMTI1cy0xLjEyNS0wLjUwNC0xLjEyNS0xLjEyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGlubmVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4Yy0wLjAyMC0xLjA0NS0wLjI0Ny0yLjA4Ni0wLjY2NS0zLjAzOC0wLjQxNy0wLjk1My0xLjAyMy0xLjgxNy0xLjc2Ni0yLjUzcy0xLjYyNC0xLjI3OC0yLjU3OC0xLjY1MWMtMC45NTMtMC4zNzQtMS45NzgtMC41NTItMi45OTEtMC41MzEtMS4wMTMgMC4wMjAtMi4wMjEgMC4yNC0yLjk0MyAwLjY0Ni0wLjkyMyAwLjQwNS0xLjc1OCAwLjk5Mi0yLjQ0OSAxLjcxMnMtMS4yMzcgMS41NzQtMS41OTcgMi40OTdjLTAuMzYxIDAuOTIzLTAuNTMzIDEuOTE0LTAuNTEyIDIuODk1IDAuMDIwIDAuOTgxIDAuMjM0IDEuOTU1IDAuNjI3IDIuODQ3IDAuMzkyIDAuODkyIDAuOTYxIDEuNyAxLjY1OCAyLjM2OHMxLjUyMyAxLjE5NSAyLjQxNiAxLjU0M2MwLjg5MiAwLjM0OCAxLjg1MSAwLjUxNCAyLjc5OSAwLjQ5MyAwLjk0OS0wLjAyMCAxLjg5LTAuMjI3IDIuNzUxLTAuNjA4IDAuODYyLTAuMzc5IDEuNjQyLTAuOTI5IDIuMjg3LTEuNjA0czEuMTU0LTEuNDcyIDEuNDg4LTIuMzM1YzAuMjA0LTAuNTIzIDAuMzQyLTEuMDY5IDAuNDE1LTEuNjIyIDAuMDE5IDAuMDAxIDAuMDM5IDAuMDAyIDAuMDU5IDAuMDAyIDAuNTUyIDAgMS0wLjQ0OCAxLTEgMC0wLjAyOC0wLjAwMS0wLjA1Ni0wLjAwNC0wLjA4M2gwLjAwNHpNMTQuNDExIDEwLjY1NWMtMC4zNjcgMC44MzEtMC44OTggMS41ODQtMS41NSAyLjIwNnMtMS40MjIgMS4xMTItMi4yNTQgMS40MzRjLTAuODMyIDAuMzIzLTEuNzIzIDAuNDc2LTIuNjA4IDAuNDU0LTAuODg0LTAuMDIwLTEuNzU5LTAuMjE1LTIuNTYtMC41Ny0wLjgwMS0wLjM1NC0xLjUyNi0wLjg2Ny0yLjEyNS0xLjQ5NXMtMS4wNzEtMS4zNzEtMS4zOC0yLjE3M2MtMC4zMS0wLjgwMS0wLjQ1Ny0xLjY2LTAuNDM1LTIuNTEyczAuMjA4LTEuNjk0IDAuNTUxLTIuNDY0YzAuMzQyLTAuNzcgMC44MzYtMS40NjggMS40NDEtMi4wNDRzMS4zMjEtMS4wMjkgMi4wOTItMS4zMjZjMC43NzEtMC4yOTggMS41OTYtMC40MzggMi40MTYtMC40MTZzMS42MjkgMC4yMDIgMi4zNjggMC41MzJjMC43NCAwLjMyOSAxLjQxIDAuODA1IDEuOTYzIDEuMzg3czAuOTg4IDEuMjcgMS4yNzIgMi4wMTFjMC4yODUgMC43NCAwLjQxOCAxLjUzMiAwLjM5NyAyLjMyaDAuMDA0Yy0wLjAwMiAwLjAyNy0wLjAwNCAwLjA1NS0wLjAwNCAwLjA4MyAwIDAuNTE2IDAuMzkgMC45NCAwLjg5MiAwLjk5NC0wLjA5NyAwLjU0NC0wLjI1OCAxLjA3NS0wLjQ4MSAxLjU3OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGlubmVyMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDQuNzM2Yy0wLjUxNSAwLTAuOTMzLTAuNDE4LTAuOTMzLTAuOTMzdi0yLjc5OGMwLTAuNTE1IDAuNDE4LTAuOTMzIDAuOTMzLTAuOTMzczAuOTMzIDAuNDE4IDAuOTMzIDAuOTMzdjIuNzk4YzAgMC41MTUtMC40MTggMC45MzMtMC45MzMgMC45MzN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNS41NzdjLTAuMzIyIDAtMC41ODMtMC4yNjEtMC41ODMtMC41ODN2LTIuNzk4YzAtMC4zMjIgMC4yNjEtMC41ODMgMC41ODMtMC41ODNzMC41ODMgMC4yNjEgMC41ODMgMC41ODN2Mi43OThjMCAwLjMyMi0wLjI2MSAwLjU4My0wLjU4MyAwLjU4M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjkwMiA1LjI0Yy0wLjMwMiAwLTAuNTk2LTAuMTU3LTAuNzU4LTAuNDM3bC0xLjM5OS0yLjQyM2MtMC4yNDEtMC40MTgtMC4wOTgtMC45NTMgMC4zMi0xLjE5NHMwLjk1My0wLjA5OCAxLjE5NCAwLjMybDEuMzk5IDIuNDIzYzAuMjQxIDAuNDE4IDAuMDk4IDAuOTUzLTAuMzIgMS4xOTQtMC4xMzggMC4wNzktMC4yODggMC4xMTctMC40MzYgMC4xMTd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDk4IDE0LjU4MmMtMC4xODEgMC0wLjM1OC0wLjA5NC0wLjQ1NS0wLjI2MmwtMS4zOTktMi40MjNjLTAuMTQ1LTAuMjUxLTAuMDU5LTAuNTcyIDAuMTkyLTAuNzE3czAuNTcyLTAuMDU5IDAuNzE3IDAuMTkybDEuMzk5IDIuNDIzYzAuMTQ1IDAuMjUxIDAuMDU5IDAuNTcyLTAuMTkyIDAuNzE3LTAuMDgzIDAuMDQ4LTAuMTczIDAuMDcwLTAuMjYyIDAuMDcwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMzY1IDYuNzE4Yy0wLjEzOCAwLTAuMjc5LTAuMDM1LTAuNDA3LTAuMTA5bC0yLjQyMy0xLjM5OWMtMC4zOS0wLjIyNS0wLjUyNC0wLjcyNC0wLjI5OS0xLjExNXMwLjcyNC0wLjUyNCAxLjExNS0wLjI5OWwyLjQyMyAxLjM5OWMwLjM5IDAuMjI1IDAuNTI0IDAuNzI0IDAuMjk5IDEuMTE1LTAuMTUxIDAuMjYyLTAuNDI1IDAuNDA4LTAuNzA3IDAuNDA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA1NyAxMS45NjRjLTAuMDc5IDAtMC4xNTktMC4wMjAtMC4yMzMtMC4wNjNsLTIuNDIzLTEuMzk5Yy0wLjIyMy0wLjEyOS0wLjI5OS0wLjQxNC0wLjE3MS0wLjYzN3MwLjQxNC0wLjI5OSAwLjYzNy0wLjE3MWwyLjQyMyAxLjM5OWMwLjIyMyAwLjEyOSAwLjI5OSAwLjQxNCAwLjE3MSAwLjYzNy0wLjA4NiAwLjE1LTAuMjQzIDAuMjMzLTAuNDA0IDAuMjMzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODAzIDguNzU4aC0yLjc5OGMtMC40MTggMC0wLjc1OC0wLjMzOS0wLjc1OC0wLjc1OHMwLjMzOS0wLjc1OCAwLjc1OC0wLjc1OGgyLjc5OGMwLjQxOSAwIDAuNzU4IDAuMzM5IDAuNzU4IDAuNzU4cy0wLjMzOSAwLjc1OC0wLjc1OCAwLjc1OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45OTUgOC40NjZjLTAgMCAwIDAgMCAwaC0yLjc5OGMtMC4yNTgtMC0wLjQ2Ni0wLjIwOS0wLjQ2Ni0wLjQ2NnMwLjIwOS0wLjQ2NiAwLjQ2Ni0wLjQ2NmMwIDAgMCAwIDAgMGgyLjc5OGMwLjI1OCAwIDAuNDY2IDAuMjA5IDAuNDY2IDAuNDY2cy0wLjIwOSAwLjQ2Ni0wLjQ2NiAwLjQ2NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjk0MyAxMi4xOTdjLTAuMjQyIDAtMC40NzctMC4xMjUtMC42MDYtMC4zNS0wLjE5My0wLjMzNS0wLjA3OS0wLjc2MiAwLjI1Ni0wLjk1NWwyLjQyMy0xLjM5OWMwLjMzNS0wLjE5MyAwLjc2Mi0wLjA3OSAwLjk1NSAwLjI1NnMwLjA3OSAwLjc2Mi0wLjI1NiAwLjk1NWwtMi40MjMgMS4zOTljLTAuMTEgMC4wNjQtMC4yMyAwLjA5NC0wLjM0OSAwLjA5NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS42MzUgNi4zNjhjLTAuMTYxIDAtMC4zMTgtMC4wODQtMC40MDQtMC4yMzMtMC4xMjktMC4yMjMtMC4wNTItMC41MDggMC4xNzEtMC42MzdsMi40MjMtMS4zOTljMC4yMjMtMC4xMjkgMC41MDgtMC4wNTIgMC42MzcgMC4xNzFzMC4wNTIgMC41MDgtMC4xNzEgMC42MzdsLTIuNDIzIDEuMzk5Yy0wLjA3MyAwLjA0Mi0wLjE1NCAwLjA2My0wLjIzMyAwLjA2M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUwMiAxNC42OTljLTAuMTA5IDAtMC4yMTktMC4wMjgtMC4zMi0wLjA4Ni0wLjMwNy0wLjE3Ny0wLjQxMi0wLjU2OS0wLjIzNS0wLjg3NmwxLjM5OS0yLjQyM2MwLjE3Ny0wLjMwNyAwLjU2OS0wLjQxMiAwLjg3Ni0wLjIzNXMwLjQxMiAwLjU2OSAwLjIzNSAwLjg3NmwtMS4zOTkgMi40MjNjLTAuMTE5IDAuMjA2LTAuMzM0IDAuMzIxLTAuNTU2IDAuMzIxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA5OCA0LjgzMmMtMC4wNzkgMC0wLjE1OS0wLjAyMC0wLjIzMy0wLjA2My0wLjIyMy0wLjEyOS0wLjI5OS0wLjQxNC0wLjE3MS0wLjYzN2wxLjM5OS0yLjQyM2MwLjEyOS0wLjIyMyAwLjQxNC0wLjI5OSAwLjYzNy0wLjE3MXMwLjI5OSAwLjQxNCAwLjE3MSAwLjYzN2wtMS4zOTkgMi40MjNjLTAuMDg2IDAuMTUtMC4yNDMgMC4yMzMtMC40MDQgMC4yMzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bpbm5lcjQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA4YzAtMC4xOSAwLjAxMS0wLjM3OCAwLjAzMi0wLjU2M2wtMi44OS0wLjkzOWMtMC4wOTIgMC40ODctMC4xNDEgMC45ODktMC4xNDEgMS41MDIgMCAyLjMgMC45NzEgNC4zNzQgMi41MjYgNS44MzNsMS43ODYtMi40NThjLTAuODE0LTAuODg5LTEuMzEyLTIuMDc0LTEuMzEyLTMuMzc1ek0xMyA4YzAgMS4zMDEtMC40OTcgMi40ODYtMS4zMTIgMy4zNzVsMS43ODYgMi40NThjMS41NTUtMS40NTkgMi41MjYtMy41MzMgMi41MjYtNS44MzMgMC0wLjUxMy0wLjA0OS0xLjAxNS0wLjE0MS0xLjUwMmwtMi44OSAwLjkzOWMwLjAyMSAwLjE4NSAwLjAzMiAwLjM3MyAwLjAzMiAwLjU2M3pNOSAzLjFjMS40MzYgMC4yOTIgMi42NDkgMS4xOTkgMy4zNTEgMi40MzVsMi44OS0wLjkzOWMtMS4xNDQtMi40MjgtMy40NzMtNC4xODgtNi4yNDEtNC41MzR2My4wMzh6TTMuNjQ5IDUuNTM1YzAuNzAyLTEuMjM2IDEuOTE0LTIuMTQzIDMuMzUxLTIuNDM1di0zLjAzOGMtMi43NjkgMC4zNDUtNS4wOTcgMi4xMDUtNi4yNDEgNC41MzRsMi44OSAwLjkzOXpNMTAuMDcxIDEyLjU1MmMtMC42MzEgMC4yODgtMS4zMzIgMC40NDgtMi4wNzEgMC40NDhzLTEuNDQtMC4xNi0yLjA3MS0wLjQ0OGwtMS43ODYgMi40NThjMS4xNDQgMC42MzEgMi40NTggMC45OSAzLjg1NyAwLjk5czIuNzEzLTAuMzU5IDMuODU3LTAuOTlsLTEuNzg2LTIuNDU4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNwaW5uZXI1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCA0YzIuMjA5IDAgNCAxLjc5MSA0IDRzLTEuNzkxIDQtNCA0LTQtMS43OTEtNC00IDEuNzkxLTQgNC00ek0xMi43NzMgMTIuNzczYy0xLjI3NSAxLjI3NS0yLjk3IDEuOTc3LTQuNzczIDEuOTc3cy0zLjQ5OC0wLjcwMi00Ljc3My0xLjk3Ny0xLjk3Ny0yLjk3LTEuOTc3LTQuNzczYzAtMS44MDMgMC43MDItMy40OTggMS45NzctNC43NzNsMS4wNjEgMS4wNjFjMCAwIDAgMCAwIDAtMi4wNDcgMi4wNDctMi4wNDcgNS4zNzggMCA3LjQyNSAwLjk5MiAwLjk5MiAyLjMxIDEuNTM4IDMuNzEyIDEuNTM4czIuNzIxLTAuNTQ2IDMuNzEyLTEuNTM4YzIuMDQ3LTIuMDQ3IDIuMDQ3LTUuMzc4IDAtNy40MjVsMS4wNjEtMS4wNjFjMS4yNzUgMS4yNzUgMS45NzcgMi45NyAxLjk3NyA0Ljc3M3MtMC43MDIgMy40OTgtMS45NzcgNC43NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bpbm5lcjYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAyYzAtMS4xMDUgMC44OTUtMiAyLTJzMiAwLjg5NSAyIDJjMCAxLjEwNS0wLjg5NSAyLTIgMnMtMi0wLjg5NS0yLTJ6TTEyLjM1OSA4YzAgMCAwIDAgMCAwIDAtMC45MDYgMC43MzUtMS42NDEgMS42NDEtMS42NDFzMS42NDEgMC43MzUgMS42NDEgMS42NDFjMCAwIDAgMCAwIDAgMCAwLjkwNi0wLjczNSAxLjY0MS0xLjY0MSAxLjY0MXMtMS42NDEtMC43MzUtMS42NDEtMS42NDF6TTEwLjc1NyAxMi4yNDNjMC0wLjgyMSAwLjY2NS0xLjQ4NiAxLjQ4Ni0xLjQ4NnMxLjQ4NiAwLjY2NSAxLjQ4NiAxLjQ4NmMwIDAuODIxLTAuNjY1IDEuNDg2LTEuNDg2IDEuNDg2cy0xLjQ4Ni0wLjY2NS0xLjQ4Ni0xLjQ4NnpNNi42NTQgMTRjMC0wLjc0MyAwLjYwMy0xLjM0NiAxLjM0Ni0xLjM0NnMxLjM0NiAwLjYwMyAxLjM0NiAxLjM0NmMwIDAuNzQzLTAuNjAzIDEuMzQ2LTEuMzQ2IDEuMzQ2cy0xLjM0Ni0wLjYwMy0xLjM0Ni0xLjM0NnpNMi41MzggMTIuMjQzYzAtMC42NzMgMC41NDYtMS4yMTkgMS4yMTktMS4yMTlzMS4yMTkgMC41NDYgMS4yMTkgMS4yMTljMCAwLjY3My0wLjU0NiAxLjIxOS0xLjIxOSAxLjIxOXMtMS4yMTktMC41NDYtMS4yMTktMS4yMTl6TTAuODk2IDhjMC0wLjYxIDAuNDk0LTEuMTA0IDEuMTA0LTEuMTA0czEuMTA0IDAuNDk0IDEuMTA0IDEuMTA0YzAgMC42MS0wLjQ5NCAxLjEwNC0xLjEwNCAxLjEwNHMtMS4xMDQtMC40OTQtMS4xMDQtMS4xMDR6TTIuNzU3IDMuNzU3YzAgMCAwIDAgMCAwIDAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwIDAgMCAwIDAgMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6TTE0LjA1NCAzLjc1N2MwIDEtMC44MTEgMS44MTEtMS44MTIgMS44MTFzLTEuODEyLTAuODExLTEuODEyLTEuODExYzAtMS4wMDEgMC44MTEtMS44MTEgMS44MTItMS44MTFzMS44MTIgMC44MTEgMS44MTIgMS44MTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bpbm5lcjcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDE0LjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpNMCA4YzAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjV6TTEzIDhjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpNMS45MDQgMy40MDRjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpNMTEuMDk2IDEyLjU5NmMwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41YzAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41ek0xLjkwNCAxMi41OTZjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpNMTEuMDk2IDMuNDA0YzAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bpbm5lcjggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmMtMi4xMzcgMC00LjE0Ni0wLjgzMi01LjY1Ny0yLjM0M3MtMi4zNDMtMy41Mi0yLjM0My01LjY1N2MwLTEuNTEzIDAuNDI1LTIuOTg2IDEuMjI4LTQuMjYxIDAuNzgxLTEuMjM5IDEuODg1LTIuMjQgMy4xOTMtMi44OTVsMC42NzIgMS4zNDFjLTEuMDYzIDAuNTMzLTEuOTYxIDEuMzQ3LTIuNTk2IDIuMzU0LTAuNjUyIDEuMDM0LTAuOTk3IDIuMjMxLTAuOTk3IDMuNDYxIDAgMy41ODQgMi45MTYgNi41IDYuNSA2LjVzNi41LTIuOTE2IDYuNS02LjVjMC0xLjIzLTAuMzQ1LTIuNDI2LTAuOTk3LTMuNDYxLTAuNjM1LTEuMDA4LTEuNTMzLTEuODIyLTIuNTk2LTIuMzU0bDAuNjcyLTEuMzQxYzEuMzA4IDAuNjU1IDIuNDEyIDEuNjU2IDMuMTkzIDIuODk1IDAuODAzIDEuMjc0IDEuMjI4IDIuNzQ4IDEuMjI4IDQuMjYxIDAgMi4xMzctMC44MzIgNC4xNDYtMi4zNDMgNS42NTdzLTMuNTIgMi4zNDMtNS42NTcgMi4zNDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bpbm5lcjkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjM1NSAwLTcuODk4IDMuNDgxLTcuOTk4IDcuODEyIDAuMDkyLTMuNzc5IDIuOTY2LTYuODEyIDYuNDk4LTYuODEyIDMuNTkgMCA2LjUgMy4xMzQgNi41IDcgMCAwLjgyOCAwLjY3MiAxLjUgMS41IDEuNXMxLjUtMC42NzIgMS41LTEuNWMwLTQuNDE4LTMuNTgyLTgtOC04ek04IDE2YzQuMzU1IDAgNy44OTgtMy40ODEgNy45OTgtNy44MTItMC4wOTIgMy43NzktMi45NjYgNi44MTItNi40OTggNi44MTItMy41OSAwLTYuNS0zLjEzNC02LjUtNyAwLTAuODI4LTAuNjcyLTEuNS0xLjUtMS41cy0xLjUgMC42NzItMS41IDEuNWMwIDQuNDE4IDMuNTgyIDggOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNwaW5uZXIxMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wLjAwMSA4LjAyNWwtMCAwYzAgMCAwIDAuMDAxIDAgMC4wMDMgMC4wMDIgMC4wNjEgMC4wMDkgMC4xMiAwLjAyMSAwLjE3NyAwLjAwMyAwLjAyNyAwLjAwNyAwLjA1NyAwLjAxMSAwLjA5MCAwLjAwMyAwLjAyOSAwLjAwNyAwLjA2MSAwLjAxMSAwLjA5NSAwLjAwNiAwLjA0MCAwLjAxMiAwLjA4MyAwLjAxOSAwLjEyOCAwLjAxMyAwLjA5MCAwLjAyOCAwLjE4OSAwLjA0NSAwLjI5NiAwLjAyMSAwLjEwMSAwLjA0NCAwLjIxIDAuMDY4IDAuMzI2IDAuMDExIDAuMDU4IDAuMDI4IDAuMTE3IDAuMDQ0IDAuMTc4czAuMDMyIDAuMTIzIDAuMDQ5IDAuMTg4YzAuMDA5IDAuMDMyIDAuMDE2IDAuMDY1IDAuMDI3IDAuMDk3czAuMDIxIDAuMDY1IDAuMDMxIDAuMDk4IDAuMDQzIDAuMTM0IDAuMDY1IDAuMjAzYzAuMDA2IDAuMDE3IDAuMDExIDAuMDM1IDAuMDE3IDAuMDUyczAuMDEzIDAuMDM0IDAuMDE5IDAuMDUyIDAuMDI2IDAuMDcwIDAuMDM5IDAuMTA1YzAuMDI3IDAuMDcwIDAuMDUzIDAuMTQyIDAuMDgxIDAuMjE1IDAuMDMxIDAuMDcxIDAuMDYyIDAuMTQ0IDAuMDk0IDAuMjE4IDAuMDE2IDAuMDM3IDAuMDMyIDAuMDc0IDAuMDQ4IDAuMTExczAuMDM1IDAuMDczIDAuMDUzIDAuMTExIDAuMDczIDAuMTQ4IDAuMTEgMC4yMjRjMC4wMzkgMC4wNzUgMC4wODEgMC4xNDkgMC4xMjMgMC4yMjQgMC4wMjEgMC4wMzcgMC4wNDIgMC4wNzUgMC4wNjMgMC4xMTNzMC4wNDUgMC4wNzQgMC4wNjggMC4xMTIgMC4wOTMgMC4xNDkgMC4xNCAwLjIyNGMwLjE5OCAwLjI5NSAwLjQxNyAwLjU4NyAwLjY2IDAuODY0IDAuMjQ1IDAuMjc1IDAuNTExIDAuNTM1IDAuNzkyIDAuNzc1IDAuMjg0IDAuMjM2IDAuNTgyIDAuNDUyIDAuODg2IDAuNjQyIDAuMzA2IDAuMTg4IDAuNjE5IDAuMzQ5IDAuOTI4IDAuNDg3IDAuMDc4IDAuMDMyIDAuMTU2IDAuMDYzIDAuMjMyIDAuMDk1IDAuMDM4IDAuMDE1IDAuMDc2IDAuMDMyIDAuMTE1IDAuMDQ2czAuMDc3IDAuMDI3IDAuMTE1IDAuMDQxIDAuMTUxIDAuMDU0IDAuMjI2IDAuMDc4YzAuMDc1IDAuMDIyIDAuMTUgMC4wNDQgMC4yMjQgMC4wNjYgMC4wMzcgMC4wMTEgMC4wNzMgMC4wMjIgMC4xMDkgMC4wMzFzMC4wNzMgMC4wMTggMC4xMDkgMC4wMjcgMC4xNDMgMC4wMzUgMC4yMTMgMC4wNTJjMC4wNzAgMC4wMTQgMC4xMzkgMC4wMjcgMC4yMDcgMC4wNDAgMC4wMzQgMC4wMDYgMC4wNjcgMC4wMTMgMC4xMDEgMC4wMTkgMC4wMTcgMC4wMDMgMC4wMzMgMC4wMDYgMC4wNDkgMC4wMDlzMC4wMzMgMC4wMDUgMC4wNDkgMC4wMDdjMC4wNjYgMC4wMDkgMC4xMyAwLjAxOCAwLjE5MiAwLjAyNyAwLjAzMSAwLjAwNCAwLjA2MiAwLjAwOSAwLjA5MyAwLjAxM3MwLjA2MSAwLjAwNiAwLjA5MSAwLjAwOSAwLjExOCAwLjAxMCAwLjE3NCAwLjAxNWMwLjA1NiAwLjAwNSAwLjExMSAwLjAxMSAwLjE2NCAwLjAxMiAwLjAwNCAwIDAuMDA3IDAgMC4wMTEgMCAwLjAxMCAwLjU0NCAwLjQ1MyAwLjk4MiAxIDAuOTgyIDAuMDA4IDAgMC4wMTctMCAwLjAyNS0wLjAwMXYwYzAgMCAwLjAwMS0wIDAuMDA0LTAgMC4wNjEtMC4wMDIgMC4xMi0wLjAwOSAwLjE3Ny0wLjAyMSAwLjAyNy0wLjAwMyAwLjA1Ny0wLjAwNyAwLjA5MC0wLjAxMSAwLjAyOS0wLjAwMyAwLjA2MS0wLjAwNyAwLjA5NS0wLjAxMSAwLjA0MC0wLjAwNiAwLjA4My0wLjAxMiAwLjEyOC0wLjAxOSAwLjA5MC0wLjAxMyAwLjE4OS0wLjAyOCAwLjI5Ni0wLjA0NSAwLjEwMS0wLjAyMSAwLjIxLTAuMDQ0IDAuMzI2LTAuMDY4IDAuMDU4LTAuMDExIDAuMTE3LTAuMDI4IDAuMTc4LTAuMDQ0czAuMTIzLTAuMDMzIDAuMTg4LTAuMDQ5YzAuMDMyLTAuMDA5IDAuMDY1LTAuMDE2IDAuMDk3LTAuMDI3czAuMDY1LTAuMDIxIDAuMDk4LTAuMDMxIDAuMTM0LTAuMDQzIDAuMjAzLTAuMDY1YzAuMDE3LTAuMDA2IDAuMDM1LTAuMDExIDAuMDUyLTAuMDE3czAuMDM0LTAuMDEzIDAuMDUyLTAuMDE5IDAuMDcwLTAuMDI2IDAuMTA1LTAuMDM5YzAuMDcwLTAuMDI3IDAuMTQyLTAuMDUzIDAuMjE1LTAuMDgxIDAuMDcxLTAuMDMxIDAuMTQ0LTAuMDYyIDAuMjE4LTAuMDk0IDAuMDM3LTAuMDE2IDAuMDc0LTAuMDMyIDAuMTExLTAuMDQ4czAuMDczLTAuMDM1IDAuMTExLTAuMDUzIDAuMTQ4LTAuMDczIDAuMjI0LTAuMTFjMC4wNzUtMC4wMzkgMC4xNDktMC4wODEgMC4yMjQtMC4xMjMgMC4wMzctMC4wMjEgMC4wNzUtMC4wNDIgMC4xMTMtMC4wNjNzMC4wNzQtMC4wNDUgMC4xMTItMC4wNjggMC4xNDktMC4wOTMgMC4yMjQtMC4xNGMwLjI5NS0wLjE5NyAwLjU4Ny0wLjQxNyAwLjg2NC0wLjY2IDAuMjc1LTAuMjQ1IDAuNTM1LTAuNTExIDAuNzc1LTAuNzkyIDAuMjM2LTAuMjg0IDAuNDUyLTAuNTgyIDAuNjQyLTAuODg2IDAuMTg4LTAuMzA2IDAuMzQ5LTAuNjE5IDAuNDg3LTAuOTI4IDAuMDMyLTAuMDc4IDAuMDYzLTAuMTU2IDAuMDk1LTAuMjMyIDAuMDE1LTAuMDM4IDAuMDMyLTAuMDc2IDAuMDQ2LTAuMTE1czAuMDI3LTAuMDc3IDAuMDQwLTAuMTE1IDAuMDU0LTAuMTUxIDAuMDc4LTAuMjI2YzAuMDIyLTAuMDc1IDAuMDQ0LTAuMTUgMC4wNjYtMC4yMjQgMC4wMTEtMC4wMzcgMC4wMjItMC4wNzMgMC4wMzEtMC4xMDlzMC4wMTgtMC4wNzMgMC4wMjctMC4xMDkgMC4wMzUtMC4xNDMgMC4wNTItMC4yMTNjMC4wMTQtMC4wNzAgMC4wMjctMC4xMzkgMC4wNDAtMC4yMDcgMC4wMDYtMC4wMzQgMC4wMTMtMC4wNjcgMC4wMTktMC4xMDEgMC4wMDMtMC4wMTcgMC4wMDYtMC4wMzMgMC4wMDktMC4wNDlzMC4wMDUtMC4wMzMgMC4wMDctMC4wNTBjMC4wMDktMC4wNjUgMC4wMTgtMC4xMyAwLjAyNy0wLjE5MiAwLjAwNC0wLjAzMSAwLjAwOS0wLjA2MiAwLjAxMy0wLjA5M3MwLjAwNi0wLjA2MSAwLjAwOS0wLjA5MSAwLjAxMC0wLjExOCAwLjAxNS0wLjE3NGMwLjAwNS0wLjA1NiAwLjAxMS0wLjExMSAwLjAxMi0wLjE2NSAwLTAuMDA4IDAuMDAxLTAuMDE2IDAuMDAxLTAuMDI1IDAuNTUtMC4wMDIgMC45OTYtMC40NDkgMC45OTYtMSAwLTAuMDA4LTAtMC4wMTctMC4wMDEtMC4wMjVoMGMwIDAtMC0wLjAwMS0wLTAuMDAzLTAuMDAyLTAuMDYxLTAuMDA5LTAuMTItMC4wMjEtMC4xNzctMC4wMDMtMC4wMjctMC4wMDctMC4wNTctMC4wMTEtMC4wOTAtMC4wMDMtMC4wMjktMC4wMDctMC4wNjEtMC4wMTEtMC4wOTUtMC4wMDYtMC4wNDAtMC4wMTItMC4wODMtMC4wMTktMC4xMjgtMC4wMTMtMC4wOTAtMC4wMjgtMC4xODktMC4wNDUtMC4yOTYtMC4wMjEtMC4xMDEtMC4wNDQtMC4yMS0wLjA2OC0wLjMyNi0wLjAxMS0wLjA1OC0wLjAyOC0wLjExNy0wLjA0NC0wLjE3OHMtMC4wMzItMC4xMjMtMC4wNDktMC4xODhjLTAuMDA5LTAuMDMyLTAuMDE2LTAuMDY1LTAuMDI3LTAuMDk3cy0wLjAyMS0wLjA2NS0wLjAzMS0wLjA5OC0wLjA0My0wLjEzNC0wLjA2NS0wLjIwM2MtMC4wMDUtMC4wMTctMC4wMTEtMC4wMzUtMC4wMTctMC4wNTJzLTAuMDEzLTAuMDM0LTAuMDE5LTAuMDUyLTAuMDI2LTAuMDcwLTAuMDM5LTAuMTA1Yy0wLjAyNy0wLjA3MC0wLjA1My0wLjE0Mi0wLjA4MS0wLjIxNS0wLjAzMS0wLjA3MS0wLjA2Mi0wLjE0NC0wLjA5NC0wLjIxOC0wLjAxNi0wLjAzNy0wLjAzMi0wLjA3NC0wLjA0OC0wLjExMXMtMC4wMzUtMC4wNzMtMC4wNTMtMC4xMTEtMC4wNzMtMC4xNDgtMC4xMS0wLjIyNGMtMC4wMzktMC4wNzUtMC4wODEtMC4xNDktMC4xMjMtMC4yMjQtMC4wMjEtMC4wMzctMC4wNDItMC4wNzUtMC4wNjMtMC4xMTNzLTAuMDQ1LTAuMDc0LTAuMDY4LTAuMTEyLTAuMDkzLTAuMTQ5LTAuMTQtMC4yMjRjLTAuMTk3LTAuMjk1LTAuNDE3LTAuNTg3LTAuNjYtMC44NjQtMC4yNDUtMC4yNzUtMC41MTEtMC41MzUtMC43OTItMC43NzUtMC4yODQtMC4yMzYtMC41ODItMC40NTItMC44ODYtMC42NDItMC4zMDYtMC4xODgtMC42MTktMC4zNDktMC45MjgtMC40ODctMC4wNzgtMC4wMzItMC4xNTYtMC4wNjMtMC4yMzItMC4wOTUtMC4wMzgtMC4wMTUtMC4wNzYtMC4wMzItMC4xMTUtMC4wNDZzLTAuMDc3LTAuMDI3LTAuMTE1LTAuMDQwLTAuMTUxLTAuMDU0LTAuMjI2LTAuMDc4Yy0wLjA3NS0wLjAyMi0wLjE1LTAuMDQ0LTAuMjI0LTAuMDY2LTAuMDM3LTAuMDEwLTAuMDczLTAuMDIyLTAuMTA5LTAuMDMxcy0wLjA3My0wLjAxOC0wLjEwOS0wLjAyNy0wLjE0My0wLjAzNS0wLjIxMy0wLjA1MmMtMC4wNzAtMC4wMTQtMC4xMzktMC4wMjctMC4yMDctMC4wNDAtMC4wMzQtMC4wMDYtMC4wNjctMC4wMTMtMC4xMDEtMC4wMTktMC4wMTctMC4wMDMtMC4wMzMtMC4wMDYtMC4wNDktMC4wMDlzLTAuMDMzLTAuMDA1LTAuMDQ5LTAuMDA3Yy0wLjA2Ni0wLjAwOS0wLjEzLTAuMDE4LTAuMTkyLTAuMDI3LTAuMDMxLTAuMDA0LTAuMDYyLTAuMDA5LTAuMDkzLTAuMDEzcy0wLjA2MS0wLjAwNi0wLjA5MS0wLjAwOS0wLjExOC0wLjAxMC0wLjE3NC0wLjAxNWMtMC4wNTYtMC4wMDUtMC4xMTEtMC4wMTEtMC4xNjQtMC4wMTItMC4wMTMtMC0wLjAyNi0wLjAwMS0wLjAzOS0wLjAwMS0wLjAxMC0wLjU0My0wLjQ1NC0wLjk4MS0wLjk5OS0wLjk4MS0wLjAwOCAwLTAuMDE3IDAtMC4wMjUgMC4wMDFsLTAtMGMwIDAtMC4wMDEgMC0wLjAwMyAwLTAuMDYxIDAuMDAyLTAuMTIgMC4wMDktMC4xNzcgMC4wMjEtMC4wMjcgMC4wMDMtMC4wNTcgMC4wMDctMC4wOTAgMC4wMTEtMC4wMjkgMC4wMDMtMC4wNjEgMC4wMDctMC4wOTUgMC4wMTEtMC4wNDAgMC4wMDYtMC4wODMgMC4wMTItMC4xMjggMC4wMTktMC4wOTAgMC4wMTMtMC4xODkgMC4wMjgtMC4yOTYgMC4wNDUtMC4xMDEgMC4wMjEtMC4yMSAwLjA0NC0wLjMyNiAwLjA2OC0wLjA1OCAwLjAxMS0wLjExNyAwLjAyOC0wLjE3OCAwLjA0NHMtMC4xMjMgMC4wMzMtMC4xODggMC4wNDljLTAuMDMyIDAuMDA5LTAuMDY1IDAuMDE2LTAuMDk3IDAuMDI3cy0wLjA2NSAwLjAyMS0wLjA5OCAwLjAzMS0wLjEzNCAwLjA0My0wLjIwMyAwLjA2NWMtMC4wMTcgMC4wMDYtMC4wMzUgMC4wMTEtMC4wNTIgMC4wMTdzLTAuMDM0IDAuMDEzLTAuMDUyIDAuMDE5LTAuMDcwIDAuMDI2LTAuMTA1IDAuMDM5Yy0wLjA3MCAwLjAyNy0wLjE0MiAwLjA1My0wLjIxNSAwLjA4MS0wLjA3MSAwLjAzMS0wLjE0NCAwLjA2Mi0wLjIxOCAwLjA5NC0wLjAzNyAwLjAxNi0wLjA3NCAwLjAzMi0wLjExMSAwLjA0OHMtMC4wNzMgMC4wMzUtMC4xMTEgMC4wNTMtMC4xNDggMC4wNzMtMC4yMjQgMC4xMWMtMC4wNzUgMC4wMzktMC4xNDkgMC4wODEtMC4yMjQgMC4xMjMtMC4wMzcgMC4wMjEtMC4wNzUgMC4wNDItMC4xMTMgMC4wNjNzLTAuMDc0IDAuMDQ1LTAuMTEyIDAuMDY4LTAuMTQ5IDAuMDkzLTAuMjI0IDAuMTRjLTAuMjk1IDAuMTk4LTAuNTg3IDAuNDE3LTAuODY0IDAuNjYtMC4yNzUgMC4yNDUtMC41MzUgMC41MTEtMC43NzUgMC43OTItMC4yMzYgMC4yODQtMC40NTIgMC41ODItMC42NDIgMC44ODYtMC4xODggMC4zMDYtMC4zNDkgMC42MTktMC40ODcgMC45MjgtMC4wMzIgMC4wNzgtMC4wNjMgMC4xNTYtMC4wOTUgMC4yMzItMC4wMTUgMC4wMzgtMC4wMzIgMC4wNzYtMC4wNDYgMC4xMTVzLTAuMDI3IDAuMDc3LTAuMDQwIDAuMTE1LTAuMDU0IDAuMTUxLTAuMDc4IDAuMjI2Yy0wLjAyMiAwLjA3NS0wLjA0NCAwLjE1LTAuMDY2IDAuMjI0LTAuMDExIDAuMDM3LTAuMDIyIDAuMDczLTAuMDMyIDAuMTA5cy0wLjAxOCAwLjA3My0wLjAyNyAwLjEwOS0wLjAzNSAwLjE0My0wLjA1MiAwLjIxM2MtMC4wMTQgMC4wNzAtMC4wMjcgMC4xMzktMC4wNDAgMC4yMDctMC4wMDYgMC4wMzQtMC4wMTMgMC4wNjctMC4wMTkgMC4xMDEtMC4wMDMgMC4wMTctMC4wMDYgMC4wMzMtMC4wMDkgMC4wNDlzLTAuMDA1IDAuMDMzLTAuMDA3IDAuMDUwYy0wLjAwOSAwLjA2NS0wLjAxOCAwLjEzLTAuMDI3IDAuMTkyLTAuMDA0IDAuMDMxLTAuMDA5IDAuMDYyLTAuMDEzIDAuMDkzcy0wLjAwNiAwLjA2MS0wLjAwOSAwLjA5MS0wLjAxMCAwLjExOC0wLjAxNSAwLjE3NGMtMC4wMDUgMC4wNTYtMC4wMTEgMC4xMTEtMC4wMTIgMC4xNjUtMCAwLjAwOS0wLjAwMSAwLjAxNy0wLjAwMSAwLjAyNS0wLjUzNyAwLjAxNy0wLjk2NyAwLjQ1OC0wLjk2NyAwLjk5OSAwIDAuMDA4IDAgMC4wMTcgMC4wMDEgMC4wMjV6TTEuMTQ5IDcuMDExYzAuMDAxLTAuMDAzIDAuMDAxLTAuMDA2IDAuMDAyLTAuMDA5IDAuMDEwLTAuMDUxIDAuMDI2LTAuMTAyIDAuMDQwLTAuMTU1czAuMDMwLTAuMTA3IDAuMDQ1LTAuMTYzYzAuMDA4LTAuMDI4IDAuMDE1LTAuMDU2IDAuMDI0LTAuMDg0czAuMDE5LTAuMDU3IDAuMDI4LTAuMDg2IDAuMDM4LTAuMTE2IDAuMDU4LTAuMTc2YzAuMDA1LTAuMDE1IDAuMDEwLTAuMDMwIDAuMDE1LTAuMDQ1czAuMDEyLTAuMDMwIDAuMDE3LTAuMDQ1IDAuMDIzLTAuMDYwIDAuMDM1LTAuMDkxIDAuMDQ4LTAuMTIzIDAuMDczLTAuMTg2YzAuMDI4LTAuMDYyIDAuMDU2LTAuMTI1IDAuMDg0LTAuMTg5IDAuMDE0LTAuMDMyIDAuMDI4LTAuMDY0IDAuMDQzLTAuMDk2czAuMDMyLTAuMDY0IDAuMDQ4LTAuMDk2IDAuMDY1LTAuMTI4IDAuMDk4LTAuMTk0YzAuMDM0LTAuMDY1IDAuMDczLTAuMTI4IDAuMTA5LTAuMTk0IDAuMDE4LTAuMDMyIDAuMDM3LTAuMDY1IDAuMDU2LTAuMDk4czAuMDQwLTAuMDY0IDAuMDYxLTAuMDk2YzAuMDQxLTAuMDY0IDAuMDgyLTAuMTI5IDAuMTI0LTAuMTk0IDAuMTc2LTAuMjU1IDAuMzY5LTAuNTA2IDAuNTgzLTAuNzQ0IDAuMjE3LTAuMjM2IDAuNDUxLTAuNDU5IDAuNjk3LTAuNjY1IDAuMjUtMC4yMDIgMC41MTEtMC4zODUgMC43NzYtMC41NDcgMC4yNjgtMC4xNTkgMC41NDEtMC4yOTQgMC44MDgtMC40MSAwLjA2OC0wLjAyNyAwLjEzNS0wLjA1MyAwLjIwMi0wLjA3OSAwLjAzMy0wLjAxMyAwLjA2Ni0wLjAyNyAwLjA5OS0wLjAzOHMwLjA2Ny0wLjAyMiAwLjEtMC4wMzMgMC4xMzEtMC4wNDUgMC4xOTYtMC4wNjVjMC4wNjUtMC4wMTggMC4xMy0wLjAzNiAwLjE5NC0wLjA1NCAwLjAzMi0wLjAwOSAwLjA2My0wLjAxOSAwLjA5NS0wLjAyNnMwLjA2My0wLjAxNCAwLjA5NC0wLjAyMSAwLjEyMy0wLjAyOCAwLjE4NC0wLjA0MmMwLjA2MS0wLjAxMSAwLjEyLTAuMDIxIDAuMTc5LTAuMDMyIDAuMDI5LTAuMDA1IDAuMDU4LTAuMDEwIDAuMDg3LTAuMDE1IDAuMDE0LTAuMDAzIDAuMDI5LTAuMDA1IDAuMDQzLTAuMDA4czAuMDI5LTAuMDAzIDAuMDQzLTAuMDA1YzAuMDU2LTAuMDA3IDAuMTEyLTAuMDE0IDAuMTY2LTAuMDIwIDAuMDI3LTAuMDAzIDAuMDUzLTAuMDA3IDAuMDgwLTAuMDEwczAuMDUzLTAuMDA0IDAuMDc4LTAuMDA2IDAuMTAyLTAuMDA3IDAuMTUtMC4wMTFjMC4wNDktMC4wMDMgMC4wOTUtMC4wMDggMC4xNDItMC4wMDggMC4wOTEtMC4wMDIgMC4xNzctMC4wMDQgMC4yNTYtMC4wMDYgMC4wNzMgMC4wMDMgMC4xNCAwLjAwNSAwLjIgMC4wMDcgMC4wMzAgMC4wMDEgMC4wNTggMC4wMDIgMC4wODUgMC4wMDIgMC4wMzMgMC4wMDIgMC4wNjQgMC4wMDQgMC4wOTMgMC4wMDYgMC4wMzMgMC4wMDIgMC4wNjMgMC4wMDQgMC4wOTEgMC4wMDYgMC4wNTEgMC4wMDggMC4xMDMgMC4wMTIgMC4xNTYgMC4wMTIgMC4wMDcgMCAwLjAxNS0wIDAuMDIyLTAuMDAxIDAuMDAyIDAgMC4wMDQgMCAwLjAwNCAwdi0wYzAuNDg3LTAuMDEyIDAuODg3LTAuMzcyIDAuOTYyLTAuODQgMC4wMDggMC4wMDIgMC4wMTcgMC4wMDQgMC4wMjUgMC4wMDYgMC4wNTEgMC4wMTAgMC4xMDIgMC4wMjYgMC4xNTUgMC4wNDBzMC4xMDcgMC4wMzAgMC4xNjMgMC4wNDVjMC4wMjggMC4wMDggMC4wNTYgMC4wMTUgMC4wODQgMC4wMjRzMC4wNTcgMC4wMTkgMC4wODYgMC4wMjggMC4xMTYgMC4wMzggMC4xNzYgMC4wNThjMC4wMTUgMC4wMDUgMC4wMzAgMC4wMTAgMC4wNDUgMC4wMTVzMC4wMzAgMC4wMTIgMC4wNDUgMC4wMTcgMC4wNjAgMC4wMjMgMC4wOTEgMC4wMzUgMC4xMjMgMC4wNDggMC4xODYgMC4wNzNjMC4wNjIgMC4wMjggMC4xMjUgMC4wNTYgMC4xODkgMC4wODQgMC4wMzIgMC4wMTQgMC4wNjQgMC4wMjggMC4wOTYgMC4wNDNzMC4wNjQgMC4wMzIgMC4wOTYgMC4wNDggMC4xMjggMC4wNjUgMC4xOTQgMC4wOThjMC4wNjUgMC4wMzQgMC4xMjkgMC4wNzMgMC4xOTQgMC4xMDkgMC4wMzIgMC4wMTggMC4wNjUgMC4wMzcgMC4wOTggMC4wNTZzMC4wNjQgMC4wNDAgMC4wOTYgMC4wNjEgMC4xMjkgMC4wODIgMC4xOTQgMC4xMjRjMC4yNTUgMC4xNzYgMC41MDYgMC4zNjkgMC43NDQgMC41ODMgMC4yMzYgMC4yMTcgMC40NTkgMC40NTEgMC42NjUgMC42OTcgMC4yMDIgMC4yNSAwLjM4NSAwLjUxMSAwLjU0NyAwLjc3NiAwLjE1OSAwLjI2OCAwLjI5NCAwLjU0MSAwLjQxIDAuODA4IDAuMDI3IDAuMDY4IDAuMDUzIDAuMTM1IDAuMDc5IDAuMjAyIDAuMDEzIDAuMDMzIDAuMDI3IDAuMDY2IDAuMDM4IDAuMDk5czAuMDIyIDAuMDY3IDAuMDMzIDAuMSAwLjA0NSAwLjEzMSAwLjA2NSAwLjE5NmMwLjAxOCAwLjA2NSAwLjAzNiAwLjEzIDAuMDU0IDAuMTk0IDAuMDA5IDAuMDMyIDAuMDE5IDAuMDYzIDAuMDI2IDAuMDk1czAuMDE0IDAuMDYzIDAuMDIxIDAuMDk0IDAuMDI4IDAuMTIzIDAuMDQyIDAuMTg0YzAuMDExIDAuMDYxIDAuMDIxIDAuMTIgMC4wMzIgMC4xNzkgMC4wMDUgMC4wMjkgMC4wMTAgMC4wNTggMC4wMTUgMC4wODcgMC4wMDMgMC4wMTQgMC4wMDUgMC4wMjkgMC4wMDggMC4wNDNzMC4wMDMgMC4wMjkgMC4wMDUgMC4wNDNjMC4wMDcgMC4wNTYgMC4wMTQgMC4xMTIgMC4wMjAgMC4xNjYgMC4wMDMgMC4wMjcgMC4wMDcgMC4wNTMgMC4wMTAgMC4wODBzMC4wMDQgMC4wNTMgMC4wMDYgMC4wNzggMC4wMDcgMC4xMDIgMC4wMTEgMC4xNWMwLjAwMyAwLjA0OSAwLjAwOCAwLjA5NSAwLjAwOCAwLjE0MiAwLjAwMiAwLjA5MSAwLjAwNCAwLjE3NyAwLjAwNiAwLjI1Ni0wLjAwMyAwLjA3My0wLjAwNSAwLjE0LTAuMDA3IDAuMi0wLjAwMSAwLjAzMC0wLjAwMiAwLjA1OC0wLjAwMiAwLjA4NS0wLjAwMiAwLjAzMy0wLjAwNCAwLjA2NC0wLjAwNiAwLjA5My0wLjAwMiAwLjAzMy0wLjAwNCAwLjA2My0wLjAwNiAwLjA5MS0wLjAwOCAwLjA1MS0wLjAxMiAwLjEwMy0wLjAxMiAwLjE1NiAwIDAuMDA3IDAgMC4wMTUgMC4wMDEgMC4wMjItMCAwLjAwMi0wIDAuMDA0LTAgMC4wMDRoMGMwLjAxMiAwLjQ4MSAwLjM2MyAwLjg3NyAwLjgyMyAwLjk1OS0wLjAwMSAwLjAwNS0wLjAwMiAwLjAwOS0wLjAwMyAwLjAxNC0wLjAxMCAwLjA1MS0wLjAyNSAwLjEwMi0wLjA0MCAwLjE1NXMtMC4wMzAgMC4xMDctMC4wNDUgMC4xNjNjLTAuMDA4IDAuMDI4LTAuMDE1IDAuMDU2LTAuMDI0IDAuMDg0cy0wLjAxOSAwLjA1Ny0wLjAyOCAwLjA4Ni0wLjAzOSAwLjExNi0wLjA1OCAwLjE3NmMtMC4wMDUgMC4wMTUtMC4wMTAgMC4wMzAtMC4wMTUgMC4wNDVzLTAuMDEyIDAuMDMwLTAuMDE3IDAuMDQ1LTAuMDIzIDAuMDYwLTAuMDM1IDAuMDkxLTAuMDQ4IDAuMTIzLTAuMDczIDAuMTg2Yy0wLjAyOCAwLjA2Mi0wLjA1NiAwLjEyNS0wLjA4NCAwLjE4OS0wLjAxNCAwLjAzMi0wLjAyOCAwLjA2NC0wLjA0MyAwLjA5NnMtMC4wMzIgMC4wNjQtMC4wNDggMC4wOTYtMC4wNjUgMC4xMjgtMC4wOTggMC4xOTRjLTAuMDM0IDAuMDY1LTAuMDczIDAuMTI5LTAuMTA5IDAuMTk0LTAuMDE4IDAuMDMyLTAuMDM3IDAuMDY1LTAuMDU2IDAuMDk4cy0wLjA0MCAwLjA2NC0wLjA2MSAwLjA5Ni0wLjA4MiAwLjEyOS0wLjEyNCAwLjE5NGMtMC4xNzYgMC4yNTUtMC4zNjkgMC41MDYtMC41ODMgMC43NDQtMC4yMTcgMC4yMzYtMC40NTEgMC40NTktMC42OTcgMC42NjUtMC4yNSAwLjIwMi0wLjUxMSAwLjM4NS0wLjc3NiAwLjU0Ny0wLjI2OCAwLjE1OS0wLjU0MSAwLjI5NC0wLjgwOCAwLjQxLTAuMDY4IDAuMDI3LTAuMTM1IDAuMDUzLTAuMjAyIDAuMDc5LTAuMDMzIDAuMDEzLTAuMDY2IDAuMDI3LTAuMDk5IDAuMDM4cy0wLjA2NyAwLjAyMi0wLjEgMC4wMzMtMC4xMzEgMC4wNDUtMC4xOTYgMC4wNjVjLTAuMDY1IDAuMDE4LTAuMTMgMC4wMzYtMC4xOTQgMC4wNTQtMC4wMzIgMC4wMDktMC4wNjMgMC4wMTktMC4wOTUgMC4wMjZzLTAuMDYzIDAuMDE0LTAuMDk0IDAuMDIxLTAuMTIzIDAuMDI4LTAuMTg0IDAuMDQyYy0wLjA2MSAwLjAxMS0wLjEyIDAuMDIxLTAuMTc5IDAuMDMyLTAuMDI5IDAuMDA1LTAuMDU4IDAuMDEwLTAuMDg3IDAuMDE1LTAuMDE0IDAuMDAzLTAuMDI4IDAuMDA1LTAuMDQzIDAuMDA4cy0wLjAyOSAwLjAwMy0wLjA0MyAwLjAwNWMtMC4wNTYgMC4wMDctMC4xMTIgMC4wMTQtMC4xNjYgMC4wMjAtMC4wMjcgMC4wMDMtMC4wNTMgMC4wMDctMC4wODAgMC4wMTBzLTAuMDUzIDAuMDA0LTAuMDc4IDAuMDA2LTAuMTAyIDAuMDA3LTAuMTUgMC4wMTFjLTAuMDQ5IDAuMDAzLTAuMDk1IDAuMDA4LTAuMTQyIDAuMDA4LTAuMDkxIDAuMDAyLTAuMTc3IDAuMDA0LTAuMjU2IDAuMDA2LTAuMDczLTAuMDAzLTAuMTQtMC4wMDUtMC4yLTAuMDA3LTAuMDMwLTAuMDAxLTAuMDU4LTAuMDAyLTAuMDg1LTAuMDAyLTAuMDMzLTAuMDAyLTAuMDY0LTAuMDA0LTAuMDkzLTAuMDA2LTAuMDMzLTAuMDAyLTAuMDYzLTAuMDA0LTAuMDkxLTAuMDA2LTAuMDUxLTAuMDA4LTAuMTAzLTAuMDEyLTAuMTU2LTAuMDEyLTAuMDA3IDAtMC4wMTUgMC0wLjAyMiAwLjAwMS0wLjAwMi0wLTAuMDAzLTAtMC4wMDMtMHYwYy0wLjQ4NCAwLjAxMi0wLjg4MyAwLjM2OS0wLjk2MSAwLjgzNC0wLjA1MC0wLjAxMC0wLjEwMS0wLjAyNS0wLjE1My0wLjAzOXMtMC4xMDctMC4wMzAtMC4xNjMtMC4wNDVjLTAuMDI4LTAuMDA4LTAuMDU2LTAuMDE1LTAuMDg0LTAuMDI0cy0wLjA1Ny0wLjAxOS0wLjA4Ni0wLjAyOC0wLjExNi0wLjAzOS0wLjE3Ni0wLjA1OGMtMC4wMTUtMC4wMDUtMC4wMzAtMC4wMTAtMC4wNDUtMC4wMTVzLTAuMDMwLTAuMDEyLTAuMDQ1LTAuMDE3LTAuMDYwLTAuMDIzLTAuMDkxLTAuMDM1LTAuMTIzLTAuMDQ4LTAuMTg2LTAuMDczYy0wLjA2Mi0wLjAyOC0wLjEyNS0wLjA1Ni0wLjE4OS0wLjA4NC0wLjAzMi0wLjAxNC0wLjA2NC0wLjAyOC0wLjA5Ni0wLjA0M3MtMC4wNjQtMC4wMzItMC4wOTYtMC4wNDgtMC4xMjgtMC4wNjUtMC4xOTQtMC4wOThjLTAuMDY1LTAuMDM0LTAuMTI5LTAuMDczLTAuMTk0LTAuMTA5LTAuMDMyLTAuMDE4LTAuMDY1LTAuMDM3LTAuMDk4LTAuMDU2cy0wLjA2NC0wLjA0MC0wLjA5Ni0wLjA2MWMtMC4wNjQtMC4wNDEtMC4xMjktMC4wODItMC4xOTQtMC4xMjQtMC4yNTUtMC4xNzUtMC41MDYtMC4zNjktMC43NDQtMC41ODMtMC4yMzYtMC4yMTctMC40NTktMC40NTEtMC42NjUtMC42OTctMC4yMDItMC4yNS0wLjM4NS0wLjUxMS0wLjU0Ny0wLjc3Ni0wLjE1OS0wLjI2OC0wLjI5NC0wLjU0MS0wLjQxLTAuODA4LTAuMDI3LTAuMDY4LTAuMDUzLTAuMTM1LTAuMDc5LTAuMjAyLTAuMDEzLTAuMDMzLTAuMDI3LTAuMDY2LTAuMDM4LTAuMDk5cy0wLjAyMi0wLjA2Ny0wLjAzMy0wLjEtMC4wNDUtMC4xMzEtMC4wNjUtMC4xOTZjLTAuMDE4LTAuMDY1LTAuMDM2LTAuMTMtMC4wNTQtMC4xOTQtMC4wMDktMC4wMzItMC4wMTktMC4wNjMtMC4wMjYtMC4wOTVzLTAuMDE0LTAuMDYzLTAuMDIxLTAuMDk0LTAuMDI4LTAuMTIzLTAuMDQyLTAuMTg0Yy0wLjAxMS0wLjA2MS0wLjAyMS0wLjEyLTAuMDMyLTAuMTc5LTAuMDA1LTAuMDI5LTAuMDEwLTAuMDU4LTAuMDE1LTAuMDg3LTAuMDAzLTAuMDE0LTAuMDA1LTAuMDI4LTAuMDA4LTAuMDQzcy0wLjAwMy0wLjAyOS0wLjAwNS0wLjA0M2MtMC4wMDctMC4wNTYtMC4wMTQtMC4xMTItMC4wMjAtMC4xNjYtMC4wMDMtMC4wMjctMC4wMDctMC4wNTMtMC4wMTAtMC4wODBzLTAuMDA0LTAuMDUzLTAuMDA2LTAuMDc4LTAuMDA3LTAuMTAxLTAuMDExLTAuMTVjLTAuMDAzLTAuMDQ5LTAuMDA4LTAuMDk1LTAuMDA4LTAuMTQyLTAuMDAyLTAuMDkxLTAuMDA0LTAuMTc3LTAuMDA2LTAuMjU2IDAuMDAzLTAuMDczIDAuMDA1LTAuMTQgMC4wMDctMC4yIDAuMDAxLTAuMDMwIDAuMDAyLTAuMDU4IDAuMDAyLTAuMDg1IDAuMDAyLTAuMDMzIDAuMDA0LTAuMDY0IDAuMDA2LTAuMDkzIDAuMDAyLTAuMDMzIDAuMDA0LTAuMDYzIDAuMDA2LTAuMDkxIDAuMDA4LTAuMDUxIDAuMDEyLTAuMTAzIDAuMDEyLTAuMTU2IDAtMC4wMDctMC0wLjAxNS0wLjAwMS0wLjAyMiAwLTAuMDAyIDAtMC4wMDMgMC0wLjAwM2gtMGMtMC4wMTItMC40OS0wLjM3Ny0wLjg5My0wLjg1MS0wLjk2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGlubmVyMTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNmgtNmwyLjI0My0yLjI0M2MtMS4xMzMtMS4xMzMtMi42NC0xLjc1Ny00LjI0My0xLjc1N3MtMy4xMDkgMC42MjQtNC4yNDMgMS43NTdjLTEuMTMzIDEuMTMzLTEuNzU3IDIuNjQtMS43NTcgNC4yNDNzMC42MjQgMy4xMDkgMS43NTcgNC4yNDNjMS4xMzMgMS4xMzMgMi42NCAxLjc1NyA0LjI0MyAxLjc1N3MzLjEwOS0wLjYyNCA0LjI0My0xLjc1N2MwLjA5NS0wLjA5NSAwLjE4NS0wLjE5MiAwLjI3My0wLjI5MmwxLjUwNSAxLjMxN2MtMS40NjYgMS42NzQtMy42MiAyLjczMi02LjAyMCAyLjczMi00LjQxOCAwLTgtMy41ODItOC04czMuNTgyLTggOC04YzIuMjA5IDAgNC4yMDkgMC44OTYgNS42NTYgMi4zNDRsMi4zNDMtMi4zNDR2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CaW5vY3VsYXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMGg2djFoLTZ6TTkgMGg2djFoLTZ6TTE0Ljg3NSA1aC0wLjg3NXYtNGgtNHY0aC00di00aC00djRoLTAuODc1Yy0wLjYxOSAwLTEuMTI1IDAuNTA2LTEuMTI1IDEuMTI1djguNzVjMCAwLjYxOSAwLjUwNiAxLjEyNSAxLjEyNSAxLjEyNWg0Ljc1YzAuNjE5IDAgMS4xMjUtMC41MDYgMS4xMjUtMS4xMjV2LTUuODc1aDJ2NS44NzVjMCAwLjYxOSAwLjUwNiAxLjEyNSAxLjEyNSAxLjEyNWg0Ljc1YzAuNjE5IDAgMS4xMjUtMC41MDYgMS4xMjUtMS4xMjV2LTguNzVjMC0wLjYxOS0wLjUwNi0xLjEyNS0xLjEyNS0xLjEyNXpNNS40MzggMTVoLTMuODc1Yy0wLjMwOSAwLTAuNTYzLTAuMjI1LTAuNTYzLTAuNXMwLjI1My0wLjUgMC41NjMtMC41aDMuODc1YzAuMzA5IDAgMC41NjMgMC4yMjUgMC41NjMgMC41cy0wLjI1MyAwLjUtMC41NjMgMC41ek04LjUgOGgtMWMtMC4yNzUgMC0wLjUtMC4yMjUtMC41LTAuNXMwLjIyNS0wLjUgMC41LTAuNWgxYzAuMjc1IDAgMC41IDAuMjI1IDAuNSAwLjVzLTAuMjI1IDAuNS0wLjUgMC41ek0xNC40MzggMTVoLTMuODc1Yy0wLjMwOSAwLTAuNTYzLTAuMjI1LTAuNTYzLTAuNXMwLjI1My0wLjUgMC41NjMtMC41aDMuODc1YzAuMzA5IDAgMC41NjMgMC4yMjUgMC41NjMgMC41cy0wLjI1MyAwLjUtMC41NjMgMC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41MDQgMTMuNjE2bC0zLjc5LTMuMjIzYy0wLjM5Mi0wLjM1My0wLjgxMS0wLjUxNC0xLjE0OS0wLjQ5OSAwLjg5NS0xLjA0OCAxLjQzNS0yLjQwNyAxLjQzNS0zLjg5MyAwLTMuMzE0LTIuNjg2LTYtNi02cy02IDIuNjg2LTYgNiAyLjY4NiA2IDYgNmMxLjQ4NiAwIDIuODQ1LTAuNTQgMy44OTMtMS40MzUtMC4wMTYgMC4zMzggMC4xNDYgMC43NTcgMC40OTkgMS4xNDlsMy4yMjMgMy43OWMwLjU1MiAwLjYxMyAxLjQ1MyAwLjY2NSAyLjAwMyAwLjExNXMwLjQ5OC0xLjQ1Mi0wLjExNS0yLjAwM3pNNiAxMGMtMi4yMDkgMC00LTEuNzkxLTQtNHMxLjc5MS00IDQtNCA0IDEuNzkxIDQgNC0xLjc5MSA0LTQgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1ab29tSW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTA0IDEzLjYxNmwtMy43OS0zLjIyM2MtMC4zOTItMC4zNTMtMC44MTEtMC41MTQtMS4xNDktMC40OTkgMC44OTUtMS4wNDggMS40MzUtMi40MDcgMS40MzUtMy44OTMgMC0zLjMxNC0yLjY4Ni02LTYtNnMtNiAyLjY4Ni02IDYgMi42ODYgNiA2IDZjMS40ODYgMCAyLjg0NS0wLjU0IDMuODkzLTEuNDM1LTAuMDE2IDAuMzM4IDAuMTQ2IDAuNzU3IDAuNDk5IDEuMTQ5bDMuMjIzIDMuNzljMC41NTIgMC42MTMgMS40NTMgMC42NjUgMi4wMDMgMC4xMTVzMC40OTgtMS40NTItMC4xMTUtMi4wMDN6TTYgMTBjLTIuMjA5IDAtNC0xLjc5MS00LTRzMS43OTEtNCA0LTQgNCAxLjc5MSA0IDQtMS43OTEgNC00IDR6TTcgM2gtMnYyaC0ydjJoMnYyaDJ2LTJoMnYtMmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1ab29tT3V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUwNCAxMy42MTZsLTMuNzktMy4yMjNjLTAuMzkyLTAuMzUzLTAuODExLTAuNTE0LTEuMTQ5LTAuNDk5IDAuODk1LTEuMDQ4IDEuNDM1LTIuNDA3IDEuNDM1LTMuODkzIDAtMy4zMTQtMi42ODYtNi02LTZzLTYgMi42ODYtNiA2IDIuNjg2IDYgNiA2YzEuNDg2IDAgMi44NDUtMC41NCAzLjg5My0xLjQzNS0wLjAxNiAwLjMzOCAwLjE0NiAwLjc1NyAwLjQ5OSAxLjE0OWwzLjIyMyAzLjc5YzAuNTUyIDAuNjEzIDEuNDUzIDAuNjY1IDIuMDAzIDAuMTE1czAuNDk4LTEuNDUyLTAuMTE1LTIuMDAzek02IDEwYy0yLjIwOSAwLTQtMS43OTEtNC00czEuNzkxLTQgNC00IDQgMS43OTEgNCA0LTEuNzkxIDQtNCA0ek0zIDVoNnYyaC02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVubGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMGgtNi41bDIuNSAyLjUtMyAzIDEuNSAxLjUgMy0zIDIuNSAyLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTZ2LTYuNWwtMi41IDIuNS0zLTMtMS41IDEuNSAzIDMtMi41IDIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2aDYuNWwtMi41LTIuNSAzLTMtMS41LTEuNS0zIDMtMi41LTIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDB2Ni41bDIuNS0yLjUgMyAzIDEuNS0xLjUtMy0zIDIuNS0yLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU2hyaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgN2g2LjVsLTIuNS0yLjUgMy0zLTEuNS0xLjUtMyAzLTIuNS0yLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA5djYuNWwyLjUtMi41IDMgMyAxLjUtMS41LTMtMyAyLjUtMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWgtNi41bDIuNSAyLjUtMyAzIDEuNSAxLjUgMy0zIDIuNSAyLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3di02LjVsLTIuNSAyLjUtMy0zLTEuNSAxLjUgMyAzLTIuNSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRW5sYXJnZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMHY2LjVsLTIuNS0yLjUtMyAzLTEuNS0xLjUgMy0zLTIuNS0yLjV6TTcgMTAuNWwtMyAzIDIuNSAyLjVoLTYuNXYtNi41bDIuNSAyLjUgMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNocmluazIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5djYuNWwtMi41LTIuNS0zIDMtMS41LTEuNSAzLTMtMi41LTIuNXpNMTYgMS41bC0zIDMgMi41IDIuNWgtNi41di02LjVsMi41IDIuNSAzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDBjLTIuNzYxIDAtNSAyLjIzOS01IDUgMCAwLjMxMyAwLjAyOSAwLjYxOSAwLjA4NCAwLjkxNmwtNi4wODQgNi4wODR2M2MwIDAuNTUyIDAuNDQ4IDEgMSAxaDF2LTFoMnYtMmgydi0yaDJsMS4yOTgtMS4yOThjMC41MzEgMC4xOTIgMS4xMDUgMC4yOTggMS43MDIgMC4yOTggMi43NjEgMCA1LTIuMjM5IDUtNXMtMi4yMzktNS01LTV6TTEyLjQ5OCA1LjAwMmMtMC44MjggMC0xLjUtMC42NzItMS41LTEuNXMwLjY3Mi0xLjUgMS41LTEuNSAxLjUgMC42NzIgMS41IDEuNS0wLjY3MiAxLjUtMS41IDEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1LZXkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY1OCA0LjkxbC0xLjU4LTEuNThjLTAuMzg3LTAuMzg3LTEuMDIxLTEuMDIxLTEuNDA5LTEuNDA5bC0xLjU4LTEuNThjLTAuMzg3LTAuMzg3LTEuMDc3LTAuNDU2LTEuNTMzLTAuMTUybC00LjMxOSAyLjg4Yy0wLjQ1NiAwLjMwNC0wLjYyOCAwLjk1NC0wLjM4MyAxLjQ0NGwxLjEwMSAyLjIwM2MwLjAzNCAwLjA2NyAwLjA3MyAwLjEzOSAwLjExNSAwLjIxM2wtNS41NzEgNS41NzEtMC41IDMuNWgzdi0xaDJ2LTJoMnYtMmgydi0xLjExMmMwLjEgMC4wNjAgMC4xOTYgMC4xMTMgMC4yODQgMC4xNTdsMi4yMDMgMS4xMDFjMC40OSAwLjI0NSAxLjE0IDAuMDcyIDEuNDQ0LTAuMzgzbDIuODgtNC4zMTljMC4zMDQtMC40NTYgMC4yMzYtMS4xNDYtMC4xNTItMS41MzN6TTIuMzU0IDEzLjM1NGwtMC43MDctMC43MDcgNC44NjgtNC44NjggMC43MDcgMC43MDctNC44NjggNC44Njh6TTE0LjMyOCA2LjYyMWwtMC43MDcgMC43MDdjLTAuMTk0IDAuMTk0LTAuNTEzIDAuMTk0LTAuNzA3IDBsLTQuMjQzLTQuMjQzYy0wLjE5NC0wLjE5NC0wLjE5NC0wLjUxMyAwLTAuNzA3bDAuNzA3LTAuNzA3YzAuMTk0LTAuMTk0IDAuNTEzLTAuMTk0IDAuNzA3IDBsNC4yNDMgNC4yNDNjMC4xOTQgMC4xOTQgMC4xOTQgMC41MTMgMCAwLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Mb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjUgN2gtMC4yNXYtM2MwLTEuNjU0LTEuMzQ2LTMtMy0zaC0yYy0xLjY1NCAwLTMgMS4zNDYtMyAzdjNoLTAuMjVjLTAuNDEyIDAtMC43NSAwLjMzOC0wLjc1IDAuNzV2Ny41YzAgMC40MTIgMC4zMzggMC43NSAwLjc1IDAuNzVoOC41YzAuNDEyIDAgMC43NS0wLjMzOCAwLjc1LTAuNzV2LTcuNWMwLTAuNDEyLTAuMzM4LTAuNzUtMC43NS0wLjc1ek0zIDRjMC0wLjU1MSAwLjQ0OS0xIDEtMWgyYzAuNTUxIDAgMSAwLjQ0OSAxIDF2M2gtNHYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1VbmxvY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYzEuNjU0IDAgMyAxLjM0NiAzIDN2M2gtMnYtM2MwLTAuNTUxLTAuNDQ5LTEtMS0xaC0yYy0wLjU1MSAwLTEgMC40NDktMSAxdjNoMC4yNWMwLjQxMiAwIDAuNzUgMC4zMzggMC43NSAwLjc1djcuNWMwIDAuNDEyLTAuMzM4IDAuNzUtMC43NSAwLjc1aC04LjVjLTAuNDEyIDAtMC43NS0wLjMzOC0wLjc1LTAuNzV2LTcuNWMwLTAuNDEyIDAuMzM4LTAuNzUgMC43NS0wLjc1aDYuMjV2LTNjMC0xLjY1NCAxLjM0Ni0zIDMtM2gyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdyZW5jaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42NzEgMTIuNzc5bC03LjE5Ni02LjE2OGMwLjMzNS0wLjYzIDAuNTI1LTEuMzQ4IDAuNTI1LTIuMTExIDAtMi40ODUtMi4wMTUtNC41LTQuNS00LjUtMC40NTUgMC0wLjg5MyAwLjA2OC0xLjMwNyAwLjE5M2wyLjYgMi42YzAuMzg5IDAuMzg5IDAuMzg5IDEuMDI1IDAgMS40MTRsLTEuNTg2IDEuNTg2Yy0wLjM4OSAwLjM4OS0xLjAyNSAwLjM4OS0xLjQxNCAwbC0yLjYtMi42Yy0wLjEyNSAwLjQxNC0wLjE5MyAwLjg1Mi0wLjE5MyAxLjMwNyAwIDIuNDg1IDIuMDE1IDQuNSA0LjUgNC41IDAuNzYzIDAgMS40ODItMC4xOSAyLjExMS0wLjUyNWw2LjE2OCA3LjE5NmMwLjM1OCAwLjQxOCAwLjk2OSAwLjQ0MSAxLjM1OCAwLjA1MmwxLjU4Ni0xLjU4NmMwLjM4OS0wLjM4OSAwLjM2NS0xLTAuMDUyLTEuMzU4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVxdWFsaXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDJ2LTAuMjVjMC0wLjQxMy0wLjMzOC0wLjc1LTAuNzUtMC43NWgtMi41Yy0wLjQxMyAwLTAuNzUgMC4zMzctMC43NSAwLjc1djAuMjVoLTN2MmgzdjAuMjVjMCAwLjQxMiAwLjMzNyAwLjc1IDAuNzUgMC43NWgyLjVjMC40MTIgMCAwLjc1LTAuMzM4IDAuNzUtMC43NXYtMC4yNWg5di0yaC05ek00IDR2LTJoMnYyaC0yek0xMyA2Ljc1YzAtMC40MTItMC4zMzgtMC43NS0wLjc1LTAuNzVoLTIuNWMtMC40MTIgMC0wLjc1IDAuMzM4LTAuNzUgMC43NXYwLjI1aC05djJoOXYwLjI1YzAgMC40MTIgMC4zMzggMC43NSAwLjc1IDAuNzVoMi41YzAuNDEyIDAgMC43NS0wLjMzOCAwLjc1LTAuNzV2LTAuMjVoM3YtMmgtM3YtMC4yNXpNMTAgOXYtMmgydjJoLTJ6TTcgMTEuNzVjMC0wLjQxMi0wLjMzOC0wLjc1LTAuNzUtMC43NWgtMi41Yy0wLjQxMyAwLTAuNzUgMC4zMzgtMC43NSAwLjc1djAuMjVoLTN2MmgzdjAuMjVjMCAwLjQxMiAwLjMzNyAwLjc1IDAuNzUgMC43NWgyLjVjMC40MTIgMCAwLjc1LTAuMzM4IDAuNzUtMC43NXYtMC4yNWg5di0yaC05di0wLjI1ek00IDE0di0yaDJ2MmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FcXVhbGl6ZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDdoMC4yNWMwLjQxMiAwIDAuNzUtMC4zMzggMC43NS0wLjc1di0yLjVjMC0wLjQxMy0wLjMzOC0wLjc1LTAuNzUtMC43NWgtMC4yNXYtM2gtMnYzaC0wLjI1Yy0wLjQxMiAwLTAuNzUgMC4zMzctMC43NSAwLjc1djIuNWMwIDAuNDEyIDAuMzM4IDAuNzUgMC43NSAwLjc1aDAuMjV2OWgydi05ek0xMiA0aDJ2MmgtMnYtMnpNOS4yNSAxM2MwLjQxMiAwIDAuNzUtMC4zMzggMC43NS0wLjc1di0yLjVjMC0wLjQxMi0wLjMzOC0wLjc1LTAuNzUtMC43NWgtMC4yNXYtOWgtMnY5aC0wLjI1Yy0wLjQxMiAwLTAuNzUgMC4zMzgtMC43NSAwLjc1djIuNWMwIDAuNDEyIDAuMzM4IDAuNzUgMC43NSAwLjc1aDAuMjV2M2gydi0zaDAuMjV6TTcgMTBoMnYyaC0ydi0yek00LjI1IDdjMC40MTIgMCAwLjc1LTAuMzM4IDAuNzUtMC43NXYtMi41YzAtMC40MTMtMC4zMzgtMC43NS0wLjc1LTAuNzVoLTAuMjV2LTNoLTJ2M2gtMC4yNWMtMC40MTMgMC0wLjc1IDAuMzM3LTAuNzUgMC43NXYyLjVjMCAwLjQxMiAwLjMzNyAwLjc1IDAuNzUgMC43NWgwLjI1djloMnYtOWgwLjI1ek0yIDRoMnYyaC0ydi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41OSA5LjUzNWMtMC44MzktMS40NTQtMC4zMzUtMy4zMTcgMS4xMjctNC4xNjRsLTEuNTcyLTIuNzIzYy0wLjQ0OSAwLjI2My0wLjk3MiAwLjQxNC0xLjUyOSAwLjQxNC0xLjY4IDAtMy4wNDItMS4zNzEtMy4wNDItMy4wNjJoLTMuMTQ1YzAuMDA0IDAuNTIyLTAuMTI2IDEuMDUxLTAuNDA2IDEuNTM1LTAuODM5IDEuNDU0LTIuNzA2IDEuOTQ4LTQuMTcgMS4xMDZsLTEuNTcyIDIuNzIzYzAuNDUzIDAuMjU3IDAuODQ1IDAuNjM0IDEuMTIzIDEuMTE3IDAuODM4IDEuNDUyIDAuMzM2IDMuMzExLTEuMTIgNC4xNmwxLjU3MiAyLjcyM2MwLjQ0OC0wLjI2MSAwLjk2Ny0wLjQxIDEuNTIyLTAuNDEgMS42NzUgMCAzLjAzMyAxLjM2MiAzLjA0MiAzLjA0NmgzLjE0NWMtMC4wMDEtMC41MTcgMC4xMjktMS4wNDAgMC40MDYtMS41MTkgMC44MzgtMS40NTIgMi43LTEuOTQ3IDQuMTYzLTEuMTFsMS41NzItMi43MjNjLTAuNDUtMC4yNTctMC44MzktMC42MzMtMS4xMTYtMS4xMTN6TTggMTEuMjRjLTEuNzg5IDAtMy4yNC0xLjQ1LTMuMjQtMy4yNHMxLjQ1LTMuMjQgMy4yNC0zLjI0YzEuNzg5IDAgMy4yNCAxLjQ1IDMuMjQgMy4yNHMtMS40NSAzLjI0LTMuMjQgMy4yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Db2dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNjgzIDExLjI4MmwwLjY0NS0wLjkwMy0wLjcwNy0wLjcwNy0wLjkwMyAwLjY0NWMtMC4xNjgtMC4wOTQtMC4zNDctMC4xNjgtMC41MzUtMC4yMjJsLTAuMTgzLTEuMDk1aC0xbC0wLjE4MyAxLjA5NWMtMC4xODggMC4wNTMtMC4zNjggMC4xMjgtMC41MzUgMC4yMjJsLTAuOTAzLTAuNjQ1LTAuNzA3IDAuNzA3IDAuNjQ1IDAuOTAzYy0wLjA5NCAwLjE2OC0wLjE2OCAwLjM0Ny0wLjIyMiAwLjUzNWwtMS4wOTUgMC4xODN2MWwxLjA5NSAwLjE4M2MwLjA1MyAwLjE4OCAwLjEyOCAwLjM2OCAwLjIyMiAwLjUzNWwtMC42NDUgMC45MDMgMC43MDcgMC43MDcgMC45MDMtMC42NDVjMC4xNjggMC4wOTQgMC4zNDcgMC4xNjggMC41MzUgMC4yMjJsMC4xODMgMS4wOTVoMWwwLjE4My0xLjA5NWMwLjE4OC0wLjA1MyAwLjM2OC0wLjEyOCAwLjUzNS0wLjIyMmwwLjkwMyAwLjY0NSAwLjcwNy0wLjcwNy0wLjY0NS0wLjkwM2MwLjA5NC0wLjE2OCAwLjE2OC0wLjM0NyAwLjIyMi0wLjUzNWwxLjA5NS0wLjE4MnYtMWwtMS4wOTUtMC4xODNjLTAuMDUzLTAuMTg4LTAuMTI4LTAuMzY4LTAuMjIyLTAuNTM1ek0zLjUgMTMuNWMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMSAxIDAuNDQ4IDEgMS0wLjQ0OCAxLTEgMXpNMTYgNnYtMWwtMS4wNTMtMC4xOTFjLTAuMDE5LTAuMTI2LTAuMDQ0LTAuMjUtMC4wNzQtMC4zNzJsMC44OTktMC41OC0wLjM4My0wLjkyNC0xLjA0NiAwLjIyNmMtMC4wNjYtMC4xMDgtMC4xMzYtMC4yMTMtMC4yMTEtMC4zMTVsMC42MDktMC44OC0wLjcwNy0wLjcwNy0wLjg4IDAuNjA5Yy0wLjEwMi0wLjA3NC0wLjIwNy0wLjE0NS0wLjMxNS0wLjIxMWwwLjIyNi0xLjA0Ni0wLjkyNC0wLjM4My0wLjU4IDAuODk5Yy0wLjEyMi0wLjAzMC0wLjI0Ni0wLjA1NC0wLjM3Mi0wLjA3NGwtMC4xOTEtMS4wNTNoLTFsLTAuMTkxIDEuMDUzYy0wLjEyNiAwLjAxOS0wLjI1IDAuMDQ0LTAuMzcyIDAuMDc0bC0wLjU4LTAuODk5LTAuOTI0IDAuMzgzIDAuMjI2IDEuMDQ2Yy0wLjEwOCAwLjA2Ni0wLjIxMyAwLjEzNi0wLjMxNSAwLjIxMWwtMC44OC0wLjYwOS0wLjcwNyAwLjcwNyAwLjYwOSAwLjg4Yy0wLjA3NCAwLjEwMi0wLjE0NSAwLjIwNy0wLjIxMSAwLjMxNWwtMS4wNDYtMC4yMjYtMC4zODMgMC45MjQgMC44OTkgMC41OGMtMC4wMzAgMC4xMjItMC4wNTQgMC4yNDYtMC4wNzQgMC4zNzJsLTEuMDUzIDAuMTkxdjFsMS4wNTMgMC4xOTFjMC4wMTkgMC4xMjYgMC4wNDQgMC4yNSAwLjA3NCAwLjM3MmwtMC44OTkgMC41OCAwLjM4MyAwLjkyNCAxLjA0Ni0wLjIyNmMwLjA2NiAwLjEwOCAwLjEzNiAwLjIxMyAwLjIxMSAwLjMxNWwtMC42MDkgMC44OCAwLjcwNyAwLjcwNyAwLjg4LTAuNjA5YzAuMTAyIDAuMDc0IDAuMjA3IDAuMTQ1IDAuMzE1IDAuMjExbC0wLjIyNiAxLjA0NiAwLjkyNCAwLjM4MyAwLjU4LTAuODk5YzAuMTIyIDAuMDMwIDAuMjQ2IDAuMDU0IDAuMzcyIDAuMDc0bDAuMTkxIDEuMDUzaDFsMC4xOTEtMS4wNTNjMC4xMjYtMC4wMTkgMC4yNS0wLjA0NCAwLjM3Mi0wLjA3NGwwLjU4IDAuODk5IDAuOTI0LTAuMzgzLTAuMjI2LTEuMDQ2YzAuMTA4LTAuMDY2IDAuMjEzLTAuMTM2IDAuMzE1LTAuMjExbDAuODggMC42MDkgMC43MDctMC43MDctMC42MDktMC44OGMwLjA3NC0wLjEwMiAwLjE0NS0wLjIwNyAwLjIxMS0wLjMxNWwxLjA0NiAwLjIyNiAwLjM4My0wLjkyNC0wLjg5OS0wLjU4YzAuMDMwLTAuMTIyIDAuMDU0LTAuMjQ2IDAuMDc0LTAuMzcybDEuMDUzLTAuMTkxek0xMC41IDcuNjc1Yy0xLjIwMSAwLTIuMTc1LTAuOTc0LTIuMTc1LTIuMTc1czAuOTc0LTIuMTc1IDIuMTc1LTIuMTc1IDIuMTc1IDAuOTc0IDIuMTc1IDIuMTc1YzAgMS4yMDEtMC45NzQgMi4xNzUtMi4xNzUgMi4xNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSGFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc4MSAxMi45NTNsLTQuNzEyLTQuNzEyYy0wLjI5Mi0wLjI5Mi0wLjc2OS0wLjI5Mi0xLjA2MSAwbC0wLjM1NCAwLjM1NC0yLjg3NS0yLjg3NSA0LjcyLTQuNzJoLTVsLTIuMjIgMi4yMi0wLjIyLTAuMjJoLTEuMDYxdjEuMDYxbDAuMjIgMC4yMi0zLjIyIDMuMjIgMi41IDIuNSAzLjIyLTMuMjIgMi44NzUgMi44NzUtMC4zNTQgMC4zNTRjLTAuMjkyIDAuMjkyLTAuMjkyIDAuNzY5IDAgMS4wNjFsNC43MTIgNC43MTJjMC4yOTIgMC4yOTIgMC43NjkgMC4yOTIgMS4wNjEgMGwxLjc2OC0xLjc2OGMwLjI5Mi0wLjI5MiAwLjI5Mi0wLjc2OSAwLTEuMDYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1hZ2ljV2FuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDNsLTItMmgtMXYxbDIgMnpNNSAwaDF2MmgtMXpNOSA1aDJ2MWgtMnpNMTAgMnYtMWgtMWwtMiAyIDEgMXpNMCA1aDJ2MWgtMnpNNSA5aDF2MmgtMXpNMSA5djFoMWwyLTItMS0xek0xNS43ODEgMTMuNzgxbC05LjkzOS05LjkzOWMtMC4yOTItMC4yOTItMC43NjktMC4yOTItMS4wNjEgMGwtMC45MzkgMC45MzljLTAuMjkyIDAuMjkyLTAuMjkyIDAuNzY5IDAgMS4wNjFsOS45MzkgOS45MzljMC4yOTIgMC4yOTIgMC43NjkgMC4yOTIgMS4wNjEgMGwwLjkzOS0wLjkzOWMwLjI5Mi0wLjI5MiAwLjI5Mi0wLjc2OSAwLTEuMDYxek03LjUgOC41bC0zLTMgMS0xIDMgMy0xIDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQWlkS2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDRoLTN2LTJjMC0wLjU1LTAuNDUtMS0xLTFoLTRjLTAuNTUgMC0xIDAuNDUtMSAxdjJoLTNjLTEuMSAwLTIgMC45LTIgMnY4YzAgMS4xIDAuOSAyIDIgMmgxMmMxLjEgMCAyLTAuOSAyLTJ2LThjMC0xLjEtMC45LTItMi0yek02IDJoNHYyaC00di0yek0xMiAxMWgtM3YzaC0ydi0zaC0zdi0yaDN2LTNoMnYzaDN2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOXYtMWgtMy4wMjBjLTAuMDkyLTEuMTM2LTAuNDk3LTIuMTcyLTEuMTItMy4wMDRoMi41M2wxLjA5NS00LjM3OS0wLjk3LTAuMjQzLTAuOTA1IDMuNjIxaC0yLjcyOWMtMC4wMTQtMC4wMTEtMC4wMjgtMC4wMjEtMC4wNDItMC4wMzIgMC4xMDUtMC4zMDUgMC4xNjItMC42MzIgMC4xNjItMC45NzIgMC0xLjY1My0xLjM0My0yLjk5Mi0zLTIuOTkycy0zIDEuMzQtMyAyLjk5MmMwIDAuMzQgMC4wNTcgMC42NjcgMC4xNjIgMC45NzItMC4wMTQgMC4wMTEtMC4wMjggMC4wMjEtMC4wNDIgMC4wMzJoLTIuNzI5bC0wLjkwNS0zLjYyMS0wLjk3IDAuMjQzIDEuMDk1IDQuMzc5aDIuNTNjLTAuNjIzIDAuODMyLTEuMDI4IDEuODY4LTEuMTIgMy4wMDRoLTMuMDIwdjFoMy4wMjFjMC4wNTkgMC43MTMgMC4yNDIgMS4zODggMC41MjYgMS45OTZoLTEuOTM3bC0xLjA5NSA0LjM3OSAwLjk3IDAuMjQzIDAuOTA1LTMuNjIxaDEuNzU2YzAuOTE3IDEuMjE5IDIuMzAzIDEuOTk2IDMuODU0IDEuOTk2czIuOTM3LTAuNzc3IDMuODU0LTEuOTk2aDEuNzU2bDAuOTA1IDMuNjIxIDAuOTctMC4yNDMtMS4wOTUtNC4zNzloLTEuOTM3YzAuMjgzLTAuNjA4IDAuNDY2LTEuMjgzIDAuNTI2LTEuOTk2aDMuMDIxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBpZUNoYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOXYtN2MtMy44NjYgMC03IDMuMTM0LTcgN3MzLjEzNCA3IDcgNyA3LTMuMTM0IDctN2MwLTEuMTI2LTAuMjY2LTIuMTg5LTAuNzM4LTMuMTMxbC02LjI2MiAzLjEzMXpNMTQuMjYyIDMuODY5Yy0xLjE0OS0yLjI5NC0zLjUyMS0zLjg2OS02LjI2Mi0zLjg2OXY3bDYuMjYyLTMuMTMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN0YXRzRG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE0aDE0djJoLTE2di0xNmgyek00LjUgMTNjLTAuODI4IDAtMS41LTAuNjcyLTEuNS0xLjVzMC42NzItMS41IDEuNS0xLjVjMC4wNDQgMCAwLjA4OCAwLjAwMiAwLjEzMSAwLjAwNmwxLjYxMi0yLjY4N2MtMC4xNTQtMC4yMzUtMC4yNDMtMC41MTctMC4yNDMtMC44MTkgMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuMzAyLTAuMDkwIDAuNTgzLTAuMjQzIDAuODE5bDEuNjEyIDIuNjg3YzAuMDQzLTAuMDA0IDAuMDg3LTAuMDA2IDAuMTMxLTAuMDA2IDAuMDMzIDAgMC4wNjYgMC4wMDEgMC4wOTkgMC4wMDRsMi42NjItNC42NThjLTAuMTY1LTAuMjQxLTAuMjYxLTAuNTMyLTAuMjYxLTAuODQ1IDAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNS0wLjAzMyAwLTAuMDY2LTAuMDAxLTAuMDk5LTAuMDA0bC0yLjY2MiA0LjY1OGMwLjE2NSAwLjI0MSAwLjI2MSAwLjUzMiAwLjI2MSAwLjg0NSAwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNWMwLTAuMzAyIDAuMDkwLTAuNTgzIDAuMjQzLTAuODE5bC0xLjYxMi0yLjY4N2MtMC4wNDMgMC4wMDQtMC4wODcgMC4wMDYtMC4xMzEgMC4wMDZzLTAuMDg4LTAuMDAyLTAuMTMxLTAuMDA2bC0xLjYxMiAyLjY4N2MwLjE1NCAwLjIzNSAwLjI0MyAwLjUxNyAwLjI0MyAwLjgxOSAwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN0YXRzQmFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEzaDE2djJoLTE2ek0yIDloMnYzaC0yek01IDVoMnY3aC0yek04IDhoMnY0aC0yek0xMSAyaDJ2MTBoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RhdHNCYXJzMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgNmgtM2MtMC4yNzUgMC0wLjUgMC4yMjUtMC41IDAuNXY5YzAgMC4yNzUgMC4yMjUgMC41IDAuNSAwLjVoM2MwLjI3NSAwIDAuNS0wLjIyNSAwLjUtMC41di05YzAtMC4yNzUtMC4yMjUtMC41LTAuNS0wLjV6TTQuNSAxNWgtM3YtNGgzdjR6TTkuNSA0aC0zYy0wLjI3NSAwLTAuNSAwLjIyNS0wLjUgMC41djExYzAgMC4yNzUgMC4yMjUgMC41IDAuNSAwLjVoM2MwLjI3NSAwIDAuNS0wLjIyNSAwLjUtMC41di0xMWMwLTAuMjc1LTAuMjI1LTAuNS0wLjUtMC41ek05LjUgMTVoLTN2LTVoM3Y1ek0xNC41IDJoLTNjLTAuMjc1IDAtMC41IDAuMjI1LTAuNSAwLjV2MTNjMCAwLjI3NSAwLjIyNSAwLjUgMC41IDAuNWgzYzAuMjc1IDAgMC41LTAuMjI1IDAuNS0wLjV2LTEzYzAtMC4yNzUtMC4yMjUtMC41LTAuNS0wLjV6TTE0LjUgMTVoLTN2LTZoM3Y2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRyb3BoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAzdi0yaC0xMHYyaC0zdjJjMCAxLjY1NyAxLjM0MyAzIDMgMyAwLjMxNCAwIDAuNjE2LTAuMDQ4IDAuOS0wLjEzOCAwLjcyMSAxLjAzMSAxLjgyMiAxLjc3OCAzLjEgMi4wMzd2My4xaC0xYy0xLjEwNSAwLTIgMC44OTUtMiAyaDhjMC0xLjEwNS0wLjg5NS0yLTItMmgtMXYtMy4xYzEuMjc4LTAuMjU5IDIuMzc4LTEuMDA2IDMuMS0yLjAzNyAwLjI4NCAwLjA4OSAwLjU4NyAwLjEzOCAwLjkgMC4xMzggMS42NTcgMCAzLTEuMzQzIDMtM3YtMmgtM3pNMyA2LjgxM2MtMC45OTkgMC0xLjgxMy0wLjgxMy0xLjgxMy0xLjgxM3YtMWgxLjgxM3YxYzAgMC42MjggMC4xMTYgMS4yMjkgMC4zMjcgMS43ODItMC4xMDYgMC4wMTktMC4yMTYgMC4wMzAtMC4zMjcgMC4wMzB6TTE0LjgxMyA1YzAgMC45OTktMC44MTMgMS44MTMtMS44MTMgMS44MTMtMC4xMTIgMC0wLjIyMS0wLjAxMS0wLjMyNy0wLjAzMCAwLjIxMS0wLjU1NCAwLjMyNy0xLjE1NCAwLjMyNy0xLjc4MnYtMWgxLjgxM3YxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUdpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMDU1IDVjMC4yODMtMC4yMDEgMC41NTUtMC40MjUgMC44MDQtMC42NzQgMC41MjItMC41MjIgMC44NzEtMS4xNjQgMC45ODMtMS44MDggMC4xMjMtMC43MDYtMC4wNTctMS4zNjItMC40OTQtMS43OTgtMC4zNDgtMC4zNDgtMC44Mi0wLjUzMy0xLjM2NS0wLjUzMy0wLjc3NSAwLTEuNTkzIDAuMzcyLTIuMjQyIDEuMDIxLTEuMDM5IDEuMDM5LTEuNjQ0IDIuNDcyLTEuOTcgMy40OTYtMC4yNDEtMS4wMjgtMC43MjItMi40MTYtMS42NTctMy4zNTEtMC41MDEtMC41MDEtMS4xNDItMC43NTktMS43NDgtMC43NTktMC40OTUgMC0wLjk2NSAwLjE3Mi0xLjMxNyAwLjUyMy0wLjc4MSAwLjc4MS0wLjY3NSAyLjE1MyAwLjIzNiAzLjA2NCAwLjMyNSAwLjMyNSAwLjcwNSAwLjU5NSAxLjEwNSAwLjgxOWgtMy4zOTF2NGgxdjdoMTJ2LTdoMXYtNGgtMi45NDV6TTEwLjUzNiAyLjAwM2MwLjQzMy0wLjQzMyAwLjk3NC0wLjY5MiAxLjQ0Ni0wLjY5MiAwLjE2NyAwIDAuNDAyIDAuMDM1IDAuNTcgMC4yMDMgMC40MDcgMC40MDcgMC4xNzggMS4zNDktMC40ODkgMi4wMTYtMC42ODcgMC42ODctMS42MSAxLjE1OS0yLjQxMyAxLjQ3aC0wLjc5MmMwLjI5LTAuODk5IDAuODEzLTIuMTMyIDEuNjc4LTIuOTk3ek0zLjY1NSAyLjUxNGMtMC4wMTEtMC4xNDMtMC4wMDEtMC40MSAwLjE5MS0wLjYwMSAwLjE2LTAuMTYgMC4zNzItMC4xOTQgMC41MjEtMC4xOTR2MGMwLjMzMiAwIDAuNjc5IDAuMTU3IDAuOTUyIDAuNDI5IDAuNTI5IDAuNTI5IDAuOTY1IDEuMzcxIDEuMjYgMi40MzYgMC4wMDggMC4wMjkgMC4wMTYgMC4wNTcgMC4wMjMgMC4wODYtMC4wMjgtMC4wMDgtMC4wNTctMC4wMTUtMC4wODYtMC4wMjMtMS4wNjQtMC4yOTUtMS45MDYtMC43MzEtMi40MzYtMS4yNi0wLjI0Ny0wLjI0Ny0wLjQwMy0wLjU2NS0wLjQyNi0wLjg3MnpNNyAxNWgtNHYtNi41aDR2Ni41ek03IDhoLTV2LTJoNXYyek0xMyAxNWgtNHYtNi41aDR2Ni41ek0xNCA4aC01di0yaDV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1HbGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xNTMgMC4yNjNjLTAuMDg3LTAuMTYyLTAuMjU2LTAuMjYzLTAuNDQtMC4yNjNoLTcuNDI1Yy0wLjE4NCAwLTAuMzUzIDAuMTAxLTAuNDQgMC4yNjMtMC41NTQgMS4wMzItMC44NDcgMi4yMzctMC44NDcgMy40ODcgMCAxLjY0NyAwLjUwNiAzLjIgMS40MjQgNC4zNzQgMC43MSAwLjkwNyAxLjYwMSAxLjUwOCAyLjU3NiAxLjc1M3Y1LjEyM2gtMS41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDVjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXMtMC4yMjQtMC41LTAuNS0wLjVoLTEuNXYtNS4xMjNjMC45NzUtMC4yNDQgMS44NjYtMC44NDYgMi41NzYtMS43NTMgMC45MTgtMS4xNzQgMS40MjQtMi43MjcgMS40MjQtNC4zNzQgMC0xLjI0OS0wLjI5My0yLjQ1NS0wLjg0Ny0zLjQ4N3pNNC41OTUgMWg2LjgwOWMwLjM5IDAuODI3IDAuNTk1IDEuNzcxIDAuNTk1IDIuNzUgMCAwLjA4NC0wLjAwMiAwLjE2Ny0wLjAwNSAwLjI1aC03Ljk5MWMtMC4wMDMtMC4wODMtMC4wMDUtMC4xNjYtMC4wMDUtMC4yNS0wLTAuOTc5IDAuMjA1LTEuOTIzIDAuNTk1LTIuNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltR2xhc3MyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjg5MyAyLjgwOWMwLjExOC0wLjE1MSAwLjE0LTAuMzU1IDAuMDU3LTAuNTI3cy0wLjI1OC0wLjI4MS0wLjQ1LTAuMjgxaC0xMWMtMC4xOTEgMC0wLjM2NiAwLjEwOS0wLjQ1IDAuMjgxcy0wLjA2MiAwLjM3NyAwLjA1NyAwLjUyN2w0Ljg5MyA2LjIyOHY1Ljk2M2gtMS41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDVjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXMtMC4yMjQtMC41LTAuNS0wLjVoLTEuNXYtNS45NjNsNC44OTMtNi4yMjh6TTEyLjQ3MSAzbC0xLjU3MSAyaC01LjhsLTEuNTcxLTJoOC45NDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTXVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDVoLTN2LTEuNWMwLTEuMzgxLTIuNjg2LTIuNS02LTIuNXMtNiAxLjExOS02IDIuNXYxMGMwIDEuMzgxIDIuNjg2IDIuNSA2IDIuNXM2LTEuMTE5IDYtMi41di0xLjVoM2MwLjU1MiAwIDEtMC40NDggMS0xdi01YzAtMC41NTItMC40NDgtMS0xLTF6TTIuNzUxIDQuMDM3Yy0wLjU3OC0wLjE5LTAuOTI4LTAuMzk0LTEuMTE2LTAuNTM3IDAuMTg4LTAuMTQzIDAuNTM4LTAuMzQ3IDEuMTE2LTAuNTM3IDAuOTA1LTAuMjk4IDIuMDU5LTAuNDYzIDMuMjQ5LTAuNDYzczIuMzQ0IDAuMTY0IDMuMjQ5IDAuNDYzYzAuNTc4IDAuMTkgMC45MjggMC4zOTQgMS4xMTYgMC41MzctMC4xODggMC4xNDMtMC41MzggMC4zNDctMS4xMTYgMC41MzctMC45MDUgMC4yOTgtMi4wNTkgMC40NjMtMy4yNDkgMC40NjNzLTIuMzQ0LTAuMTY0LTMuMjQ5LTAuNDYzek0xNCAxMGgtMnYtM2gydjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3Bvb25LbmlmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGMtMS42NTcgMC0zIDEuNTY3LTMgMy41IDAgMS42NTUgMC45ODUgMy4wNDIgMi4zMDggMy40MDZsLTAuNDk3IDguMDk2Yy0wLjAzNCAwLjU0OSAwLjM4OSAwLjk5OCAwLjkzOSAwLjk5OGgwLjVjMC41NSAwIDAuOTcyLTAuNDQ5IDAuOTM5LTAuOTk4bC0wLjQ5Ny04LjA5NmMxLjMyMy0wLjM2NSAyLjMwOC0xLjc1MSAyLjMwOC0zLjQwNiAwLTEuOTMzLTEuMzQzLTMuNS0zLTMuNXpNMTMuNTgzIDBsLTAuODMzIDVoLTAuNjI1bC0wLjQxNy01aC0wLjQxN2wtMC40MTcgNWgtMC42MjVsLTAuODMzLTVoLTAuNDE3djYuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDEuMzAybC0wLjQ5MSA4LjAwMmMtMC4wMzQgMC41NDkgMC4zODkgMC45OTggMC45MzkgMC45OThoMC41YzAuNTUgMCAwLjk3Mi0wLjQ0OSAwLjkzOS0wLjk5OGwtMC40OTEtOC4wMDJoMS4zMDJjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtNi41aC0wLjQxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1MZWFmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjgwMiAyLjEwMmMtMS43My0xLjMxMS00LjM5My0yLjA5NC03LjEyNC0yLjA5NC0zLjM3NyAwLTYuMTI5IDEuMTc5LTcuNTQ5IDMuMjM1LTAuNjY3IDAuOTY1LTEuMDM2IDIuMTA5LTEuMDk3IDMuMzk4LTAuMDU0IDEuMTQ4IDAuMTM5IDIuNDE4IDAuNTczIDMuNzg0IDEuNDgyLTQuNDQ0IDUuNjIyLTcuOTIzIDEwLjM5NS03LjkyMyAwIDAtNC40NjYgMS4xNzUtNy4yNzQgNC44MTYtMC4wMDIgMC4wMDItMC4wMzkgMC4wNDgtMC4xMDMgMC4xMzYtMC41NjQgMC43NTQtMS4wNTUgMS42MTItMS40MjMgMi41ODMtMC42MjMgMS40ODItMS4yIDMuNTE1LTEuMiA1Ljk2NWgyYzAgMC0wLjMwNC0xLjkxIDAuMjI0LTQuMTA2IDAuODczIDAuMTE4IDEuNjU0IDAuMTc3IDIuMzU3IDAuMTc3IDEuODM5IDAgMy4xNDYtMC4zOTggNC4xMTUtMS4yNTIgMC44NjgtMC43NjUgMS4zNDctMS43OTQgMS44NTQtMi44ODIgMC43NzQtMS42NjMgMS42NTEtMy41NDcgNC4xOTgtNS4wMDIgMC4xNDYtMC4wODMgMC4yNC0wLjIzNCAwLjI1MS0wLjQwMnMtMC4wNjMtMC4zMjktMC4xOTctMC40MzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUm9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDFsLTUgNWgtM2wtMyA0YzAgMCAzLjE3OC0wLjg4NSA1LjAzMi0wLjQ3bC01LjAzMiA2LjQ3IDYuNTkyLTUuMTI3YzAuOTE5IDIuMTA0LTAuNTkyIDUuMTI3LTAuNTkyIDUuMTI3bDQtM3YtM2w1LTUgMS01LTUgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFjNC40MTggMCA4IDMuNTgyIDggOCAwIDMuMDEyLTEuNjY1IDUuNjM1LTQuMTI1IDdoLTcuNzVjLTIuNDYtMS4zNjUtNC4xMjUtMy45ODgtNC4xMjUtNyAwLTQuNDE4IDMuNTgyLTggOC04ek0xMi41MyAxMy41M2MxLjIxLTEuMjEgMS44NzYtMi44MTkgMS44NzYtNC41M2gtMS40MDZ2LTFoMS4zMjljLTAuMTEtMC43MDMtMC4zMzQtMS4zNzctMC42NjUtMmgtMS42NjR2LTFoMS4wMDRjLTAuMTQ3LTAuMTg0LTAuMzA2LTAuMzYxLTAuNDc1LTAuNTMtMC43MjItMC43MjItMS41ODctMS4yNTEtMi41My0xLjU1OXYxLjA4OWgtMXYtMS4zMjljLTAuMzI4LTAuMDUxLTAuNjYyLTAuMDc4LTEtMC4wNzhzLTAuNjcyIDAuMDI2LTEgMC4wNzh2MS4zMjloLTF2LTEuMDg5Yy0wLjk0MyAwLjMwOS0xLjgwOCAwLjgzNy0yLjUzIDEuNTU5LTAuMTY5IDAuMTY5LTAuMzI3IDAuMzQ2LTAuNDc1IDAuNTNoMS4wMDR2MWgtMS42NjRjLTAuMzMxIDAuNjIzLTAuNTU1IDEuMjk3LTAuNjY1IDJoMS4zMjl2MWgtMS40MDZjMCAxLjcxMSAwLjY2NiAzLjMyIDEuODc2IDQuNTMgMC4xNjcgMC4xNjcgMC4zNDMgMC4zMjQgMC41MjQgMC40N2gzLjAwNmwwLjU3MS04aDAuODU3bDAuNTcxIDhoMy4wMDZjMC4xODItMC4xNDYgMC4zNTctMC4zMDMgMC41MjQtMC40N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NZXRlcjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek00LjczMiAxMy4wMzRjMC4xNzQtMC40NzkgMC4yNjgtMC45OTUgMC4yNjgtMS41MzQgMC0xLjk0My0xLjIzMS0zLjU5OC0yLjk1Ni00LjIyOCAwLjE2LTEuMzI3IDAuNzU0LTIuNTU1IDEuNzE0LTMuNTE0IDEuMTMzLTEuMTMzIDIuNjQtMS43NTcgNC4yNDMtMS43NTdzMy4xMDkgMC42MjQgNC4yNDMgMS43NTdjMC45NiAwLjk2IDEuNTU0IDIuMTg4IDEuNzE0IDMuNTE0LTEuNzI1IDAuNjMtMi45NTYgMi4yODUtMi45NTYgNC4yMjggMCAwLjUzOSAwLjA5NSAxLjA1NSAwLjI2OCAxLjUzNC0wLjk2NCAwLjYyOS0yLjA5MCAwLjk2Ni0zLjI2OCAwLjk2NnMtMi4zMDQtMC4zMzgtMy4yNjgtMC45NjZ6TTguNjIxIDEwLjAxNmMwLjIxNyAwLjA1NSAwLjM3OSAwLjI1MSAwLjM3OSAwLjQ4NHYxYzAgMC4yNzUtMC4yMjUgMC41LTAuNSAwLjVoLTFjLTAuMjc1IDAtMC41LTAuMjI1LTAuNS0wLjV2LTFjMC0wLjIzMyAwLjE2Mi0wLjQzIDAuMzc5LTAuNDg0bDAuMzcxLTcuMDE2aDAuNWwwLjM3MSA3LjAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IYW1tZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljc4NCAxNC4zMDlsLTguNTcyLTcuODA0IDAuMzk5LTAuNGMwLjMyNi0wLjMyNyAwLjUwMy0wLjc1IDAuNTMtMS4xODEgMC4wMTYtMC4wMDcgMC4wMzEtMC4wMTQgMC4wNDYtMC4wMjNsMS42MDktMS4wMDZjMC4yMTgtMC4yNTYgMC4yMDItMC42Ni0wLjAzNi0wLjg5OGwtMi43OTktMi44MDZjLTAuMjM3LTAuMjM4LTAuNjQxLTAuMjU0LTAuODk2LTAuMDM2bC0xLjAwNCAxLjYxNGMtMC4wMDggMC4wMTUtMC4wMTUgMC4wMzEtMC4wMjIgMC4wNDYtMC40MyAwLjAyNy0wLjg1MiAwLjIwNC0xLjE3OCAwLjUzMWwtMS41MjIgMS41MjdjLTAuMzI3IDAuMzI3LTAuNTAzIDAuNzUtMC41MyAxLjE4MS0wLjAxNiAwLjAwNy0wLjAzMSAwLjAxNC0wLjA0NiAwLjAyM2wtMS42MDkgMS4wMDZjLTAuMjE4IDAuMjU2LTAuMjAyIDAuNjYgMC4wMzYgMC44OThsMi43OTkgMi44MDZjMC4yMzcgMC4yMzggMC42NDEgMC4yNTQgMC44OTYgMC4wMzZsMS4wMDQtMS42MTRjMC4wMDgtMC4wMTUgMC4wMTUtMC4wMzEgMC4wMjMtMC4wNDYgMC40My0wLjAyNyAwLjg1Mi0wLjIwNCAxLjE3OC0wLjUzMWwwLjQ0Mi0wLjQ0MyA3Ljc4MyA4LjU5NmMwLjIyNiAwLjI0OSAwLjU3MyAwLjI4OSAwLjc3MyAwLjA4OWwwLjc4Ny0wLjc4OWMwLjE5OS0wLjIgMC4xNTktMC41NDktMC4wODktMC43NzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjAxNiAxNmMtMS4wNjYtMi4yMTktMC40OTgtMy40OSAwLjMyMS00LjY4OCAwLjg5Ny0xLjMxMiAxLjEyOS0yLjYxIDEuMTI5LTIuNjFzMC43MDYgMC45MTcgMC40MjMgMi4zNTJjMS4yNDYtMS4zODcgMS40ODItMy41OTggMS4yOTMtNC40NDUgMi44MTcgMS45NjkgNC4wMjEgNi4yMzIgMi4zOTkgOS4zOTIgOC42MzEtNC44ODMgMi4xNDctMTIuMTkgMS4wMTgtMTMuMDEzIDAuMzc2IDAuODIzIDAuNDQ4IDIuMjE2LTAuMzEzIDIuODkzLTEuMjg3LTQuODc5LTQuNDY4LTUuODc5LTQuNDY4LTUuODc5IDAuMzc2IDIuNTE2LTEuMzY0IDUuMjY4LTMuMDQyIDcuMzI0LTAuMDU5LTEuMDAzLTAuMTIyLTEuNjk2LTAuNjQ5LTIuNjU2LTAuMTE4IDEuODIzLTEuNTExIDMuMzA5LTEuODg5IDUuMTM1LTAuNTExIDIuNDczIDAuMzgzIDQuMjg0IDMuNzc3IDYuMTk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45NDIgMTIuNTdsLTQuOTQyLTguMjM1di0zLjMzNWgwLjVjMC4yNzUgMCAwLjUtMC4yMjUgMC41LTAuNXMtMC4yMjUtMC41LTAuNS0wLjVoLTVjLTAuMjc1IDAtMC41IDAuMjI1LTAuNSAwLjVzMC4yMjUgMC41IDAuNSAwLjVoMC41djMuMzM1bC00Ljk0MiA4LjIzNWMtMS4xMzIgMS44ODYtMC4yNTggMy40MyAxLjk0MiAzLjQzaDEwYzIuMiAwIDMuMDc0LTEuNTQzIDEuOTQyLTMuNDN6TTMuNzY2IDEwbDMuMjM0LTUuMzl2LTMuNjFoMnYzLjYxbDMuMjM0IDUuMzloLTguNDY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1hZ25ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwaC00bDEgOWMwIDEuNjU3LTEuMzQzIDMtMyAzcy0zLTEuMzQzLTMtM2wxLTloLTRsLTEgOWMwIDMuODY2IDMuMTM0IDcgNyA3czctMy4xMzQgNy03bC0xLTl6TTEyLjE1NCAxMy4xNTRjLTEuMTEgMS4xMS0yLjU4NSAxLjcyMS00LjE1NCAxLjcyMXMtMy4wNDUtMC42MTEtNC4xNTQtMS43MjFjLTEuMDk2LTEuMDk2LTEuNzA1LTIuNTQ4LTEuNzItNC4wOTVsMC41NjQtNS4wNzVoMS43MzZsLTAuNTUgNC45NTN2MC4wNjJjMCAxLjEwMiAwLjQyOSAyLjEzOCAxLjIwOCAyLjkxN3MxLjgxNSAxLjIwOCAyLjkxNyAxLjIwOCAyLjEzOC0wLjQyOSAyLjkxNy0xLjIwOGMwLjc3OS0wLjc3OSAxLjIwOC0xLjgxNSAxLjIwOC0yLjkxN3YtMC4wNjJsLTAuMDA3LTAuMDYyLTAuNTQzLTQuODkxaDEuNzM2bDAuNTY0IDUuMDc1Yy0wLjAxNSAxLjU0Ny0wLjYyNSAyLjk5OS0xLjcyIDQuMDk1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDV2MTBjMCAwLjU1IDAuNDUgMSAxIDFoOWMwLjU1IDAgMS0wLjQ1IDEtMXYtMTBoLTExek01IDE0aC0xdi03aDF2N3pNNyAxNGgtMXYtN2gxdjd6TTkgMTRoLTF2LTdoMXY3ek0xMSAxNGgtMXYtN2gxdjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjUgMmgtMy4yNXYtMS4yNWMwLTAuNDEyLTAuMzM4LTAuNzUtMC43NS0wLjc1aC0zLjVjLTAuNDEyIDAtMC43NSAwLjMzOC0wLjc1IDAuNzV2MS4yNWgtMy4yNWMtMC40MTMgMC0wLjc1IDAuMzM3LTAuNzUgMC43NXYxLjI1aDEzdi0xLjI1YzAtMC40MTMtMC4zMzgtMC43NS0wLjc1LTAuNzV6TTkgMmgtM3YtMC45ODdoM3YwLjk4N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CaW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTZoMTBsMS0xMWgtMTJ6TTEwIDJ2LTJoLTR2MmgtNXYzbDEtMWgxMmwxIDF2LTNoLTV6TTkgMmgtMnYtMWgydjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQnJpZWZjYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDRoLTR2LTFjMC0wLjU1LTAuNDUtMS0xLTFoLTRjLTAuNTUgMC0xIDAuNDUtMSAxdjFoLTRjLTAuNTUgMC0xIDAuNDUtMSAxdjljMCAwLjU1IDAuNDUgMSAxIDFoMTRjMC41NSAwIDEtMC40NSAxLTF2LTljMC0wLjU1LTAuNDUtMS0xLTF6TTYgMy4wMDJjMC4wMDEtMC4wMDEgMC4wMDEtMC4wMDEgMC4wMDItMC4wMDJoMy45OTZjMC4wMDEgMC4wMDEgMC4wMDEgMC4wMDEgMC4wMDIgMC4wMDJ2MC45OThoLTR2LTAuOTk4ek0xNSA4aC0ydjEuNWMwIDAuMjc1LTAuMjI1IDAuNS0wLjUgMC41aC0xYy0wLjI3NSAwLTAuNS0wLjIyNS0wLjUtMC41di0xLjVoLTZ2MS41YzAgMC4yNzUtMC4yMjUgMC41LTAuNSAwLjVoLTFjLTAuMjc1IDAtMC41LTAuMjI1LTAuNS0wLjV2LTEuNWgtMnYtMWgxNHYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUFpcnBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDkuOTk5bC0yLjg1Ny0yLjg1NyA2Ljg1Ny01LjE0My0yLTItOC41NzEgMy40MjktMi42OTgtMi42OTljLTAuNzc4LTAuNzc4LTEuODY0LTAuOTY0LTIuNDE0LTAuNDE0cy0wLjM2NCAxLjYzNiAwLjQxNCAyLjQxNGwyLjY5OCAyLjY5OC0zLjQyOSA4LjU3MiAyIDIgNS4xNDQtNi44NTcgMi44NTcgMi44NTd2NGgybDEtMyAzLTF2LTJsLTQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA5bC0yLTRoLTN2LTJjMC0wLjU1LTAuNDUtMS0xLTFoLTljLTAuNTUgMC0xIDAuNDUtMSAxdjhsMSAxaDEuMjY4Yy0wLjE3IDAuMjk0LTAuMjY4IDAuNjM2LTAuMjY4IDEgMCAxLjEwNSAwLjg5NSAyIDIgMnMyLTAuODk1IDItMmMwLTAuMzY0LTAuMDk4LTAuNzA2LTAuMjY4LTFoNS41MzZjLTAuMTcgMC4yOTQtMC4yNjggMC42MzYtMC4yNjggMSAwIDEuMTA1IDAuODk1IDIgMiAyczItMC44OTUgMi0yYzAtMC4zNjQtMC4wOTgtMC43MDYtMC4yNjgtMWgxLjI2OHYtM3pNMTEgOXYtM2gyLjA3M2wxLjUgM2gtMy41NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUm9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAxNmg1bC00LTE2aC0zbDAuNSA0aC0zbDAuNS00aC0zbC00IDE2aDVsMC41LTRoNWwwLjUgNHpNNS43NSAxMGwwLjUtNGgzLjVsMC41IDRoLTQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BY2Nlc3NpYmlsaXR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxLjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA1bDUuMTUtMi4yMjEtMC4zNzEtMC45MjktNi4yNzkgMi4xNWgtMWwtNi4yNzktMi4xNS0wLjM3MSAwLjkyOSA1LjE1IDIuMjIxdjRsLTIuMDUxIDYuNjM0IDAuOTM1IDAuMzU1IDIuOTAyLTYuNDg5aDAuNDI5bDIuOTAyIDYuNDg5IDAuOTM1LTAuMzU1LTIuMDUxLTYuNjM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRhcmdldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA3aC0xLjU3N2MtMC40MzItMi43ODUtMi42MzgtNC45OTEtNS40MjMtNS40MjN2LTEuNTc3aC0ydjEuNTc3Yy0yLjc4NSAwLjQzMi00Ljk5MSAyLjYzOC01LjQyMyA1LjQyM2gtMS41Nzd2MmgxLjU3N2MwLjQzMiAyLjc4NSAyLjYzOCA0Ljk5MSA1LjQyMyA1LjQyM3YxLjU3N2gydi0xLjU3N2MyLjc4NS0wLjQzMiA0Ljk5MS0yLjYzOCA1LjQyMy01LjQyM2gxLjU3N3YtMnpNMTIuMzg4IDdoLTEuNTU5Yy0wLjMwMS0wLjg1Mi0wLjk3Ny0xLjUyOC0xLjgyOS0xLjgyOXYtMS41NTljMS42OCAwLjM4MyAzLjAwNSAxLjcwOCAzLjM4OCAzLjM4OHpNOCA5Yy0wLjU1MiAwLTEtMC40NDgtMS0xczAuNDQ4LTEgMS0xYzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxek03IDMuNjEydjEuNTU5Yy0wLjg1MiAwLjMwMS0xLjUyOCAwLjk3Ny0xLjgyOSAxLjgyOWgtMS41NTljMC4zODMtMS42OCAxLjcwOC0zLjAwNSAzLjM4OC0zLjM4OHpNMy42MTIgOWgxLjU1OWMwLjMwMSAwLjg1MiAwLjk3NyAxLjUyOCAxLjgyOSAxLjgyOXYxLjU1OWMtMS42OC0wLjM4My0zLjAwNS0xLjcwOC0zLjM4OC0zLjM4OHpNOSAxMi4zODh2LTEuNTU5YzAuODUyLTAuMzAxIDEuNTI4LTAuOTc3IDEuODI5LTEuODI5aDEuNTU5Yy0wLjM4MyAxLjY4LTEuNzA4IDMuMDA1LTMuMzg4IDMuMzg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSAwbC03IDItNy0yYzAgMC0wLjA3MCAwLjgwOCAwIDJsNyAyLjE4OSA3LTIuMTg5YzAuMDcwLTEuMTkyIDAtMiAwLTJ6TTEuMTI4IDMuMDQ5YzAuMzc1IDMuOTE3IDEuNzczIDEwLjUwNCA2Ljg3MiAxMi45NTEgNS4wOTktMi40NDggNi40OTctOS4wMzQgNi44NzItMTIuOTUxbC02Ljg3MiAyLjU4NC02Ljg3Mi0yLjU4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Qb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDBsLTYgOGg2bC00IDggMTQtMTBoLThsNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyLjI5djIuMTI0YzAuNTY2IDAuMjQ3IDEuMDg2IDAuNiAxLjUzNiAxLjA1MCAwLjk0NCAwLjk0NCAxLjQ2NCAyLjIgMS40NjQgMy41MzZzLTAuNTIgMi41OTEtMS40NjQgMy41MzZjLTAuOTQ0IDAuOTQ0LTIuMiAxLjQ2NC0zLjUzNiAxLjQ2NHMtMi41OTEtMC41Mi0zLjUzNi0xLjQ2NGMtMC45NDQtMC45NDQtMS40NjQtMi4yLTEuNDY0LTMuNTM2czAuNTItMi41OTEgMS40NjQtMy41MzZjMC40NS0wLjQ1IDAuOTctMC44MDMgMS41MzYtMS4wNTB2LTIuMTI0Yy0yLjg5MSAwLjg2MS01IDMuNTM5LTUgNi43MSAwIDMuODY2IDMuMTM0IDcgNyA3czctMy4xMzQgNy03YzAtMy4xNzEtMi4xMDktNS44NDktNS02Ljcxek03IDBoMnY4aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBvd2VyQ29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0LjQxNGwtMS40MTQtMS40MTQtMi43OTMgMi43OTMtMS41ODYtMS41ODYgMi43OTMtMi43OTMtMS40MTQtMS40MTQtMi43OTMgMi43OTMtMS43OTMtMS43OTMtMS4zNTQgMS4zNTMgOCA4IDEuMzU0LTEuMzUzLTEuNzkzLTEuNzkzIDIuNzkzLTIuNzkzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQwNyAxMC41MjhsLTYuOTM1LTYuOTM1Yy0xLjQ5NyAxLjc5NS0zLjE5NiA0LjU3LTIuMDIyIDYuOTU3bC0yLjA2NiAyLjA2NmMtMC40ODYgMC40ODYtMC40ODYgMS4yODIgMCAxLjc2OGwwLjIzMiAwLjIzMmMwLjQ4NiAwLjQ4NiAxLjI4MiAwLjQ4NiAxLjc2OCAwbDIuMDY2LTIuMDY2YzIuMzg3IDEuMTc0IDUuMTYxLTAuNTI0IDYuOTU3LTIuMDIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDJoLTQuNWMwLTEuMTA1LTAuODk1LTItMi0ycy0yIDAuODk1LTIgMmgtNC41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41djEzYzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMTNjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtMTNjMC0wLjI3Ni0wLjIyNC0wLjUtMC41LTAuNXpNOCAxYzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxYy0wLjU1MiAwLTEtMC40NDgtMS0xczAuNDQ4LTEgMS0xek0xNCAxNWgtMTJ2LTEyaDJ2MS41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoN2MwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41di0xLjVoMnYxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDEzLjQxNGwtMy4yMDctMy43MDcgMC45MTQtMC45MTQgMi4yOTMgMS43OTMgNC4yOTMtMy43OTMgMC45MTQgMC45MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGlzdE51bWJlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNoMTB2MmgtMTB6TTYgN2gxMHYyaC0xMHpNNiAxaDEwdjJoLTEwek0zIDB2NGgtMXYtM2gtMXYtMXpNMiA4LjIxOXYwLjc4MWgydjFoLTN2LTIuMjgxbDItMC45Mzh2LTAuNzgxaC0ydi0xaDN2Mi4yODF6TTQgMTF2NWgtM3YtMWgydi0xaC0ydi0xaDJ2LTFoLTJ2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoNHY0aC00ek02IDFoMTB2MmgtMTB6TTAgNmg0djRoLTR6TTYgN2gxMHYyaC0xMHpNMCAxMmg0djRoLTR6TTYgMTNoMTB2MmgtMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGlzdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxaDEwdjJoLTEwdi0yek02IDdoMTB2MmgtMTB2LTJ6TTYgMTNoMTB2MmgtMTB2LTJ6TTAgMmMwLTEuMTA1IDAuODk1LTIgMi0yczIgMC44OTUgMiAyYzAgMS4xMDUtMC44OTUgMi0yIDJzLTItMC44OTUtMi0yek0wIDhjMC0xLjEwNSAwLjg5NS0yIDItMnMyIDAuODk1IDIgMmMwIDEuMTA1LTAuODk1IDItMiAycy0yLTAuODk1LTItMnpNMCAxNGMwLTEuMTA1IDAuODk1LTIgMi0yczIgMC44OTUgMiAyYzAgMS4xMDUtMC44OTUgMi0yIDJzLTItMC44OTUtMi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMjUgMTJoLTAuMjV2LTMuMjVjMC0wLjk2NS0wLjc4NS0xLjc1LTEuNzUtMS43NWgtNC4yNXYtMmgwLjI1YzAuNDEyIDAgMC43NS0wLjMzOCAwLjc1LTAuNzV2LTIuNWMwLTAuNDEzLTAuMzM4LTAuNzUtMC43NS0wLjc1aC0yLjVjLTAuNDEyIDAtMC43NSAwLjMzNy0wLjc1IDAuNzV2Mi41YzAgMC40MTIgMC4zMzggMC43NSAwLjc1IDAuNzVoMC4yNXYyaC00LjI1Yy0wLjk2NSAwLTEuNzUgMC43ODUtMS43NSAxLjc1djMuMjVoLTAuMjVjLTAuNDEyIDAtMC43NSAwLjMzOC0wLjc1IDAuNzV2Mi41YzAgMC40MTIgMC4zMzggMC43NSAwLjc1IDAuNzVoMi41YzAuNDEzIDAgMC43NS0wLjMzOCAwLjc1LTAuNzV2LTIuNWMwLTAuNDEyLTAuMzM3LTAuNzUtMC43NS0wLjc1aC0wLjI1di0zaDR2M2gtMC4yNWMtMC40MTIgMC0wLjc1IDAuMzM4LTAuNzUgMC43NXYyLjVjMCAwLjQxMiAwLjMzOCAwLjc1IDAuNzUgMC43NWgyLjVjMC40MTIgMCAwLjc1LTAuMzM4IDAuNzUtMC43NXYtMi41YzAtMC40MTItMC4zMzgtMC43NS0wLjc1LTAuNzVoLTAuMjV2LTNoNHYzaC0wLjI1Yy0wLjQxMiAwLTAuNzUgMC4zMzgtMC43NSAwLjc1djIuNWMwIDAuNDEyIDAuMzM4IDAuNzUgMC43NSAwLjc1aDIuNWMwLjQxMiAwIDAuNzUtMC4zMzggMC43NS0wLjc1di0yLjVjMC0wLjQxMi0wLjMzOC0wLjc1LTAuNzUtMC43NXpNMyAxNWgtMnYtMmgydjJ6TTkgMTVoLTJ2LTJoMnYyek03IDR2LTJoMnYyaC0yek0xNSAxNWgtMnYtMmgydjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWVudSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDNoMTR2M2gtMTR6TTEgN2gxNHYzaC0xNHpNMSAxMWgxNHYzaC0xNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NZW51MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAyMiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDNoMTR2M2gtMTR2LTN6TTAgN2gxNHYzaC0xNHYtM3pNMCAxMWgxNHYzaC0xNHYtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDlsMyAzIDMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMS41IDhsLTMtMy0zIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWVudTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjIgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzaDE0djNoLTE0di0zek0wIDdoMTR2M2gtMTR2LTN6TTAgMTFoMTR2M2gtMTR2LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA3bDMgMyAzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWVudTQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMjIgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzaDE0djNoLTE0di0zek0wIDdoMTR2M2gtMTR2LTN6TTAgMTFoMTR2M2gtMTR2LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSAxMGwzLTMgMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEwLjI3NGMwLTEuMjgzLTAuODg2LTIuMzU4LTIuMDc4LTIuNjQ4LTAuMDUxLTIuMDExLTEuNjk1LTMuNjI2LTMuNzE3LTMuNjI2LTEuMTg0IDAtMi4yMzkgMC41NTUtMi45MiAxLjQxOC0wLjM4Mi0wLjQ5NC0wLjk4LTAuODEyLTEuNjUyLTAuODEyLTEuMTUzIDAtMi4wODggMC45MzYtMi4wODggMi4wODkgMCAwLjEwMSAwLjAwNyAwLjE5OSAwLjAyMSAwLjI5Ni0wLjE3NS0wLjAzMi0wLjM1Ni0wLjA0OS0wLjU0LTAuMDQ5LTEuNjcyLTAtMy4wMjcgMS4zNTYtMy4wMjcgMy4wMjlzMS4zNTUgMy4wMjkgMy4wMjcgMy4wMjlsMTAuMjU0LTBjMS41MDItMC4wMDMgMi43MTktMS4yMjIgMi43MTktMi43MjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2xvdWREb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45MjIgNS42MjZjLTAuMDUxLTIuMDExLTEuNjk1LTMuNjI2LTMuNzE3LTMuNjI2LTEuMTg0IDAtMi4yMzkgMC41NTUtMi45MiAxLjQxOC0wLjM4Mi0wLjQ5NC0wLjk4LTAuODEyLTEuNjUyLTAuODEyLTEuMTUzIDAtMi4wODggMC45MzYtMi4wODggMi4wODkgMCAwLjEwMSAwLjAwNyAwLjE5OSAwLjAyMSAwLjI5Ni0wLjE3NS0wLjAzMi0wLjM1Ni0wLjA0OS0wLjU0LTAuMDQ5LTEuNjcyLTAtMy4wMjcgMS4zNTYtMy4wMjcgMy4wMjlzMS4zNTUgMy4wMjkgMy4wMjcgMy4wMjloMS40MzRsMy41MzkgMy42NjQgMy41MzktMy42NjQgMS43NDItMGMxLjUwMi0wLjAwMyAyLjcxOS0xLjIyMiAyLjcxOS0yLjcyNiAwLTEuMjgzLTAuODg2LTIuMzU4LTIuMDc4LTIuNjQ4ek04IDEzbC0zLTNoMnYtM2gydjNoMmwtMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNsb3VkVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjk0MiA2LjAzOWMwLjAzOC0wLjE3NCAwLjA1OC0wLjM1NCAwLjA1OC0wLjUzOSAwLTEuMzgxLTEuMTE5LTIuNS0yLjUtMi41LTAuMjIyIDAtMC40MzggMC4wMjktMC42NDMgMC4wODQtMC4zODctMS4yMDktMS41Mi0yLjA4NC0yLjg1Ny0yLjA4NC0xLjM2NSAwLTIuNTE2IDAuOTExLTIuODggMi4xNTktMC4zNTUtMC4xMDMtMC43MzEtMC4xNTktMS4xMi0wLjE1OS0yLjIwOSAwLTQgMS43OTEtNCA0czEuNzkxIDQgNCA0aDJ2M2g0di0zaDMuNWMxLjM4MSAwIDIuNS0xLjExOSAyLjUtMi41IDAtMS4yMy0wLjg4OC0yLjI1My0yLjA1OC0yLjQ2MXpNOSAxMHYzaC0ydi0zaC0yLjVsMy41LTMuNSAzLjUgMy41aC0yLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2xvdWRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45NDIgOC4wMzljMC4wMzgtMC4xNzQgMC4wNTgtMC4zNTQgMC4wNTgtMC41MzkgMC0xLjM4MS0xLjExOS0yLjUtMi41LTIuNS0wLjIyMiAwLTAuNDM4IDAuMDI5LTAuNjQzIDAuMDg0LTAuMzg3LTEuMjA5LTEuNTItMi4wODQtMi44NTctMi4wODQtMS4zNjUgMC0yLjUxNiAwLjkxMS0yLjg4IDIuMTU5LTAuMzU1LTAuMTAzLTAuNzMxLTAuMTU5LTEuMTItMC4xNTktMi4yMDkgMC00IDEuNzkxLTQgNHMxLjc5MSA0IDQgNGg5LjVjMS4zODEgMCAyLjUtMS4xMTkgMi41LTIuNSAwLTEuMjMtMC44ODgtMi4yNTItMi4wNTgtMi40NjF6TTYuNSAxMmwtMi41LTIuNSAxLTEgMS41IDEuNSAzLjUtMy41IDEgMS00LjUgNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbURvd25sb2FkMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA4aC0yLjVsLTMuNSAzLjUtMy41LTMuNWgtMi41bC0yIDR2MWgxNnYtMWwtMi00ek0wIDE0aDE2djFoLTE2di0xek05IDV2LTRoLTJ2NGgtMy41bDQuNSA0LjUgNC41LTQuNWgtMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVVwbG9hZDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNGgxNnYxaC0xNnpNMTYgMTJ2MWgtMTZ2LTFsMi00aDR2Mmg0di0yaDR6TTMuNSA1bDQuNS00LjUgNC41IDQuNWgtMy41djRoLTJ2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRG93bmxvYWQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgN2wtNCA0LTQtNGgyLjV2LTZoM3Y2ek03LjUgMTFoLTcuNXY0aDE1di00aC03LjV6TTE0IDEzaC0ydi0xaDJ2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1VcGxvYWQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNSAxMWgtNy41djRoMTV2LTRoLTcuNXpNMTQgMTNoLTJ2LTFoMnYxek0zLjUgNWw0LTQgNCA0aC0yLjV2NWgtM3YtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGhlcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDFjLTQuMTQyIDAtNy41IDMuMzU4LTcuNSA3LjVzMy4zNTggNy41IDcuNSA3LjVjNC4xNDIgMCA3LjUtMy4zNTggNy41LTcuNXMtMy4zNTgtNy41LTcuNS03LjV6TTExLjc0NCAxMWMwLjEzNC0wLjYzMiAwLjIxOS0xLjMwMyAwLjI0Ni0yaDEuOTkxYy0wLjA1MiAwLjY5MS0wLjIxMyAxLjM2MS0wLjQ3OSAyaC0xLjc1OHpNMy4yNTYgNmMtMC4xMzQgMC42MzItMC4yMTkgMS4zMDMtMC4yNDYgMmgtMS45OTFjMC4wNTItMC42OTEgMC4yMTMtMS4zNjEgMC40NzktMmgxLjc1OHpNMTAuNzE5IDZjMC4xNSAwLjY0IDAuMjQxIDEuMzEgMC4yNyAyaC0yLjk4OXYtMmgyLjcxOXpNOCA1di0yLjkyN2MwLjIyOCAwLjA2NiAwLjQ1NCAwLjE3OCAwLjY3NSAwLjMzNCAwLjQxNSAwLjI5MyAwLjgxMyAwLjc0NCAxLjE0OSAxLjMwNCAwLjIzMyAwLjM4OCAwLjQzNCAwLjgxOSAwLjYwMSAxLjI4OWgtMi40MjZ6TTUuMTc2IDMuNzExYzAuMzM2LTAuNTYxIDAuNzM0LTEuMDEyIDEuMTQ5LTEuMzA0IDAuMjIyLTAuMTU2IDAuNDQ3LTAuMjY4IDAuNjc1LTAuMzM0djIuOTI3aC0yLjQyNmMwLjE2OC0wLjQ3IDAuMzY5LTAuOTAxIDAuNjAxLTEuMjg5ek03IDZ2MmgtMi45ODljMC4wMjktMC42OSAwLjEyLTEuMzYgMC4yNy0yaDIuNzE5ek0xLjQ5OCAxMWMtMC4yNjYtMC42MzktMC40MjctMS4zMDktMC40NzktMmgxLjk5MWMwLjAyOCAwLjY5NyAwLjExMiAxLjM2OCAwLjI0NiAyaC0xLjc1OHpNNC4wMTEgOWgyLjk4OXYyaC0yLjcxOWMtMC4xNS0wLjY0LTAuMjQxLTEuMzEtMC4yNy0yek03IDEydjIuOTI3Yy0wLjIyOC0wLjA2Ni0wLjQ1NC0wLjE3OC0wLjY3NS0wLjMzNC0wLjQxNS0wLjI5My0wLjgxMy0wLjc0NC0xLjE0OS0xLjMwNC0wLjIzMy0wLjM4OC0wLjQzNC0wLjgxOS0wLjYwMi0xLjI4OWgyLjQyNnpNOS44MjUgMTMuMjg5Yy0wLjMzNiAwLjU2MS0wLjczNCAxLjAxMi0xLjE0OSAxLjMwNC0wLjIyMiAwLjE1Ni0wLjQ0NyAwLjI2OC0wLjY3NSAwLjMzNHYtMi45MjdoMi40MjZjLTAuMTY4IDAuNDctMC4zNjkgMC45MDEtMC42MDIgMS4yODl6TTggMTF2LTJoMi45ODljLTAuMDI5IDAuNjktMC4xMiAxLjM2LTAuMjcgMmgtMi43MTl6TTExLjk5IDhjLTAuMDI4LTAuNjk3LTAuMTEyLTEuMzY4LTAuMjQ2LTJoMS43NThjMC4yNjcgMC42MzkgMC40MjcgMS4zMDkgMC40NzkgMmgtMS45OTF6TTEyLjk3OSA1aC0xLjQ5OGMtMC4yOTEtMC45MTgtMC42OTMtMS43MjMtMS4xNzctMi4zNjYgMC42NjUgMC4zMTggMS4yNjcgMC43NDQgMS43OTIgMS4yNyAwLjMzNiAwLjMzNiAwLjYzMSAwLjcwMiAwLjg4MyAxLjA5NnpNMi45MDQgMy45MDRjMC41MjYtMC41MjYgMS4xMjgtMC45NTIgMS43OTItMS4yNy0wLjQ4MyAwLjY0My0wLjg4NiAxLjQ0OC0xLjE3NyAyLjM2NmgtMS40OThjMC4yNTItMC4zOTQgMC41NDctMC43NjEgMC44ODMtMS4wOTZ6TTIuMDIxIDEyaDEuNDk4YzAuMjkxIDAuOTE4IDAuNjkzIDEuNzIzIDEuMTc3IDIuMzY2LTAuNjY1LTAuMzE4LTEuMjY3LTAuNzQ0LTEuNzkyLTEuMjctMC4zMzYtMC4zMzYtMC42MzEtMC43MDItMC44ODMtMS4wOTZ6TTEyLjA5NiAxMy4wOTZjLTAuNTI2IDAuNTI2LTEuMTI4IDAuOTUyLTEuNzkyIDEuMjcgMC40ODMtMC42NDMgMC44ODYtMS40NDggMS4xNzctMi4zNjZoMS40OThjLTAuMjUyIDAuMzk0LTAuNTQ3IDAuNzYxLTAuODgzIDEuMDk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVhcnRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxNWMtMC45ODQgMC0xLjkyLTAuMjAzLTIuNzY5LTAuNTdsMy42NDMtNC4wOThjMC4wODEtMC4wOTIgMC4xMjYtMC4yMSAwLjEyNi0wLjMzMnYtMS41YzAtMC4yNzYtMC4yMjQtMC41LTAuNS0wLjUtMS43NjUgMC0zLjYyOC0xLjgzNS0zLjY0Ni0xLjg1NC0wLjA5NC0wLjA5NC0wLjIyMS0wLjE0Ni0wLjM1NC0wLjE0NmgtMmMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXYzYzAgMC4xODkgMC4xMDcgMC4zNjMgMC4yNzYgMC40NDdsMS43MjQgMC44NjJ2Mi45MzZjLTEuODEzLTEuMjY1LTMtMy4zNjYtMy01Ljc0NSAwLTEuMDc0IDAuMjQyLTIuMDkxIDAuNjc0LTNoMS44MjZjMC4xMzMgMCAwLjI2LTAuMDUzIDAuMzU0LTAuMTQ2bDItMmMwLjA5NC0wLjA5NCAwLjE0Ni0wLjIyMSAwLjE0Ni0wLjM1NHYtMS4yMWMwLjYzNC0wLjE4OSAxLjMwNS0wLjI5IDItMC4yOSAxLjEgMCAyLjE0MSAwLjI1NCAzLjA2NyAwLjcwNi0wLjA2NSAwLjA1NS0wLjEyOCAwLjExMi0wLjE4OCAwLjE3Mi0wLjU2NyAwLjU2Ny0wLjg3OSAxLjMyLTAuODc5IDIuMTIxczAuMzEyIDEuNTU1IDAuODc5IDIuMTIxYzAuNTY5IDAuNTY5IDEuMzMyIDAuODc5IDIuMTE5IDAuODc5IDAuMDQ5IDAgMC4wOTktMC4wMDEgMC4xNDktMC4wMDQgMC4yMTYgMC44MDkgMC42MDUgMi45MTctMC4xMzEgNS44MTgtMC4wMDcgMC4wMjctMC4wMTEgMC4wNTUtMC4wMTMgMC4wODItMS4yNzEgMS4yOTgtMy4wNDIgMi4xMDQtNS4wMDIgMi4xMDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGluayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljg3OSA5LjkzNGMtMC4yMDggMC0wLjQxNi0wLjA3OS0wLjU3NS0wLjIzOC0xLjQ4Ni0xLjQ4Ni0xLjQ4Ni0zLjkwNSAwLTUuMzkybDMtM2MwLjcyLTAuNzIgMS42NzgtMS4xMTcgMi42OTYtMS4xMTdzMS45NzYgMC4zOTcgMi42OTYgMS4xMTdjMS40ODYgMS40ODcgMS40ODYgMy45MDUgMCA1LjM5MmwtMS4zNzEgMS4zNzFjLTAuMzE3IDAuMzE3LTAuODMyIDAuMzE3LTEuMTQ5IDBzLTAuMzE3LTAuODMyIDAtMS4xNDlsMS4zNzEtMS4zNzFjMC44NTMtMC44NTMgMC44NTMtMi4yNDEgMC0zLjA5NC0wLjQxMy0wLjQxMy0wLjk2My0wLjY0MS0xLjU0Ny0wLjY0MXMtMS4xMzQgMC4yMjgtMS41NDcgMC42NDFsLTMgM2MtMC44NTMgMC44NTMtMC44NTMgMi4yNDEgMCAzLjA5NCAwLjMxNyAwLjMxNyAwLjMxNyAwLjgzMiAwIDEuMTQ5LTAuMTU5IDAuMTU5LTAuMzY3IDAuMjM4LTAuNTc1IDAuMjM4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTUuODEzYy0xLjAxOCAwLTEuOTc2LTAuMzk3LTIuNjk2LTEuMTE3LTEuNDg2LTEuNDg2LTEuNDg2LTMuOTA1IDAtNS4zOTJsMS4zNzEtMS4zNzFjMC4zMTctMC4zMTcgMC44MzItMC4zMTcgMS4xNDkgMHMwLjMxNyAwLjgzMiAwIDEuMTQ5bC0xLjM3MSAxLjM3MWMtMC44NTMgMC44NTMtMC44NTMgMi4yNDEgMCAzLjA5NCAwLjQxMyAwLjQxMyAwLjk2MiAwLjY0MSAxLjU0NyAwLjY0MXMxLjEzNC0wLjIyOCAxLjU0Ny0wLjY0MWwzLTNjMC44NTMtMC44NTMgMC44NTMtMi4yNDEgMC0zLjA5NC0wLjMxNy0wLjMxNy0wLjMxNy0wLjgzMiAwLTEuMTQ5czAuODMyLTAuMzE3IDEuMTQ5IDBjMS40ODYgMS40ODYgMS40ODYgMy45MDUgMCA1LjM5MmwtMyAzYy0wLjcyIDAuNzItMS42NzggMS4xMTctMi42OTYgMS4xMTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDBoMnYxNmgtMnYtMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTAuMDQ3YzEuMjkxIDAgMi40MTUtMC4zMTIgMy0wLjc3M3YtOGMtMC41ODUgMC40NjEtMS43MDkgMC43NzMtMyAwLjc3M3MtMi40MTUtMC4zMTItMy0wLjc3M3Y4YzAuNTg1IDAuNDYxIDEuNzA5IDAuNzczIDMgMC43NzN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDAuNTA4Yy0wLjczMy0wLjMxMi0xLjgwNS0wLjUwOC0zLTAuNTA4LTEuNTA2IDAtMi44MTggMC4zMTItMy41IDAuNzczdjhjMC42ODItMC40NjEgMS45OTQtMC43NzMgMy41LTAuNzczIDEuMTk1IDAgMi4yNjcgMC4xOTcgMyAwLjUwOHYtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BdHRhY2htZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjQwNCA1LjExbC0xLjAxNS0xLjAxNC01LjA3NSA1LjA3NGMtMC44NDEgMC44NDEtMC44NDEgMi4yMDQgMCAzLjA0NHMyLjIwNCAwLjg0MSAzLjA0NSAwbDYuMDkwLTYuMDg5YzEuNDAyLTEuNDAxIDEuNDAyLTMuNjczIDAtNS4wNzRzLTMuNjc0LTEuNDAyLTUuMDc1IDBsLTYuMzk0IDYuMzkzYy0wLjAwNSAwLjAwNS0wLjAxMCAwLjAwOS0wLjAxNCAwLjAxMy0xLjk1NSAxLjk1NS0xLjk1NSA1LjEyMyAwIDcuMDc3czUuMTIzIDEuOTU0IDcuMDc4IDBjMC4wMDQtMC4wMDQgMC4wMDgtMC4wMDkgMC4wMTMtMC4wMTRsMC4wMDEgMC4wMDEgNC4zNjUtNC4zNjQtMS4wMTUtMS4wMTQtNC4zNjUgNC4zNjNjLTAuMDA1IDAuMDA0LTAuMDA5IDAuMDA5LTAuMDEzIDAuMDEzLTEuMzkyIDEuMzkyLTMuNjU2IDEuMzkyLTUuMDQ4IDBzLTEuMzkyLTMuNjU1IDAtNS4wNDdjMC4wMDUtMC4wMDUgMC4wMDktMC4wMDkgMC4wMTQtMC4wMTNsLTAuMDAxLTAuMDAxIDYuMzk1LTYuMzkzYzAuODM5LTAuODQgMi4yMDUtMC44NCAzLjA0NSAwczAuODM5IDIuMjA1IDAgMy4wNDRsLTYuMDkwIDYuMDg5Yy0wLjI4IDAuMjgtMC43MzUgMC4yOC0xLjAxNSAwcy0wLjI4LTAuNzM1IDAtMS4wMTRsNS4wNzUtNS4wNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggM2MtMy40ODkgMC02LjUxNCAyLjAzMi04IDUgMS40ODYgMi45NjggNC41MTEgNSA4IDVzNi41MTQtMi4wMzIgOC01Yy0xLjQ4Ni0yLjk2OC00LjUxMS01LTgtNXpNMTEuOTQ1IDUuNjUyYzAuOTQgMC42IDEuNzM3IDEuNDAzIDIuMzM1IDIuMzQ4LTAuNTk4IDAuOTQ2LTEuMzk1IDEuNzQ5LTIuMzM1IDIuMzQ4LTEuMTgxIDAuNzUzLTIuNTQ1IDEuMTUyLTMuOTQ0IDEuMTUycy0yLjc2My0wLjM5OC0zLjk0NS0xLjE1MmMtMC45NC0wLjYtMS43MzctMS40MDMtMi4zMzUtMi4zNDggMC41OTgtMC45NDYgMS4zOTUtMS43NDkgMi4zMzUtMi4zNDggMC4wNjEtMC4wMzkgMC4xMjMtMC4wNzcgMC4xODUtMC4xMTQtMC4xNTYgMC40MjctMC4yNDEgMC44ODgtMC4yNDEgMS4zNjkgMCAyLjIwOSAxLjc5MSA0IDQgNHM0LTEuNzkxIDQtNGMwLTAuNDgxLTAuMDg1LTAuOTQyLTAuMjQxLTEuMzY5IDAuMDYyIDAuMDM3IDAuMTI0IDAuMDc1IDAuMTg1IDAuMTE0djB6TTggNi41YzAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41IDAuNjcyLTEuNSAxLjUtMS41IDEuNSAwLjY3MiAxLjUgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUV5ZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMmgtMnYtMmgtMnYyaC0ydjJoMnYyaDJ2LTJoMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy40OTggNi45NjljMC4yODggMC4zMiAwLjU1IDAuNjY1IDAuNzgyIDEuMDMxLTAuNTk4IDAuOTQ2LTEuMzk1IDEuNzQ5LTIuMzM1IDIuMzQ4LTEuMTgxIDAuNzUzLTIuNTQ1IDEuMTUyLTMuOTQ0IDEuMTUycy0yLjc2My0wLjM5OC0zLjk0NS0xLjE1MmMtMC45NC0wLjYtMS43MzYtMS40MDMtMi4zMzUtMi4zNDggMC41OTgtMC45NDYgMS4zOTUtMS43NDkgMi4zMzUtMi4zNDggMC4wNjEtMC4wMzkgMC4xMjMtMC4wNzcgMC4xODUtMC4xMTQtMC4xNTYgMC40MjctMC4yNDEgMC44ODgtMC4yNDEgMS4zNjkgMCAyLjIwOSAxLjc5MSA0IDQgNHM0LTEuNzkxIDQtNGMwLTAuMDExLTAtMC4wMjItMC0wLjAzMi0xLjcwOC0wLjQ0LTIuOTczLTEuOTc5LTIuOTk5LTMuODE3LTAuMzI5LTAuMDM3LTAuNjYyLTAuMDU3LTEuMDAxLTAuMDU3LTMuNDg5IDAtNi41MTQgMi4wMzItOCA1IDEuNDg2IDIuOTY4IDQuNTExIDUgOCA1czYuNTE0LTIuMDMyIDgtNWMtMC4yNzYtMC41NS0wLjYwNC0xLjA2OS0wLjk3OS0xLjU0OC0wLjQ1NyAwLjI2OC0wLjk3MyAwLjQ0OS0xLjUyMyAwLjUxN3pNNi41IDVjMC44MjggMCAxLjUgMC42NzIgMS41IDEuNXMtMC42NzIgMS41LTEuNSAxLjUtMS41LTAuNjcyLTEuNS0xLjUgMC42NzItMS41IDEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRXllTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMmg2djJoLTZ2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNTk5IDVoLTQuNTk5di0xLjk0NGMtMC4zMjgtMC4wMzctMC42NjItMC4wNTYtMS0wLjA1Ni0zLjQ4OSAwLTYuNTE0IDIuMDMyLTggNSAxLjQ4NiAyLjk2OCA0LjUxMSA1IDggNXM2LjUxNC0yLjAzMiA4LTVjLTAuNTg0LTEuMTY3LTEuNDA3LTIuMTg5LTIuNDAxLTN6TTYuNSA1YzAuODI4IDAgMS41IDAuNjcyIDEuNSAxLjVzLTAuNjcyIDEuNS0xLjUgMS41LTEuNS0wLjY3Mi0xLjUtMS41IDAuNjcyLTEuNSAxLjUtMS41ek0xMS45NDQgMTAuMzQ4Yy0xLjE4MSAwLjc1My0yLjU0NSAxLjE1Mi0zLjk0NCAxLjE1MnMtMi43NjMtMC4zOTgtMy45NDUtMS4xNTJjLTAuOTQtMC42LTEuNzM2LTEuNDAzLTIuMzM1LTIuMzQ4IDAuNTk4LTAuOTQ2IDEuMzk1LTEuNzQ5IDIuMzM1LTIuMzQ4IDAuMDYxLTAuMDM5IDAuMTIzLTAuMDc3IDAuMTg1LTAuMTE0LTAuMTU2IDAuNDI3LTAuMjQxIDAuODg4LTAuMjQxIDEuMzY5IDAgMi4yMDkgMS43OTEgNCA0IDRzNC0xLjc5MSA0LTRjMC0wLjQ4MS0wLjA4NS0wLjk0Mi0wLjI0MS0xLjM2OSAwLjA2MiAwLjAzNyAwLjEyNCAwLjA3NSAwLjE4NSAwLjExNCAwLjk0IDAuNiAxLjczNyAxLjQwMyAyLjMzNSAyLjM0OC0wLjU5OCAwLjk0Ni0xLjM5NSAxLjc0OS0yLjMzNSAyLjM0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FeWVCbG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljc4IDAuMjJjLTAuMjkzLTAuMjkzLTAuNzY4LTAuMjkzLTEuMDYxIDBsLTMuMTU5IDMuMTU5Yy0wLjgxMi0wLjI0Ni0xLjY3MS0wLjM3OC0yLjU2MS0wLjM3OC0zLjQ4OSAwLTYuNTE0IDIuMDMyLTggNSAwLjY0MyAxLjI4MyAxLjU3MyAyLjM5MSAyLjcwMyAzLjIzNmwtMi40ODQgMi40ODRjLTAuMjkzIDAuMjkzLTAuMjkzIDAuNzY4IDAgMS4wNjEgMC4xNDYgMC4xNDYgMC4zMzggMC4yMiAwLjUzIDAuMjJzMC4zODQtMC4wNzMgMC41My0wLjIybDEzLjUtMTMuNWMwLjI5My0wLjI5MyAwLjI5My0wLjc2OCAwLTEuMDYxek02LjUgNWMwLjY2IDAgMS4yMiAwLjQyNiAxLjQyMSAxLjAxOWwtMS45MDIgMS45MDJjLTAuNTkyLTAuMjAxLTEuMDE5LTAuNzYxLTEuMDE5LTEuNDIxIDAtMC44MjggMC42NzItMS41IDEuNS0xLjV6TTEuNzIxIDhjMC41OTgtMC45NDYgMS4zOTUtMS43NDkgMi4zMzUtMi4zNDggMC4wNjEtMC4wMzkgMC4xMjMtMC4wNzcgMC4xODUtMC4xMTQtMC4xNTYgMC40MjctMC4yNDEgMC44ODgtMC4yNDEgMS4zNjkgMCAwLjg1OCAwLjI3IDEuNjUyIDAuNzMgMi4zMDNsLTAuOTUyIDAuOTUyYy0wLjgxOS0wLjU3Ni0xLjUxOS0xLjMxMS0yLjA1Ny0yLjE2MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA2LjkwNmMwLTAuNDI0LTAuMDY2LTAuODMzLTAuMTg5LTEuMjE3bC01LjAyOCA1LjAyOGMwLjM4NCAwLjEyMyAwLjc5MyAwLjE4OSAxLjIxNyAwLjE4OSAyLjIwOSAwIDQtMS43OTEgNC00elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk2OSA0LjUzMWwtMS4wODQgMS4wODRjMC4wMjAgMC4wMTIgMC4wNDAgMC4wMjQgMC4wNTkgMC4wMzcgMC45NCAwLjYgMS43MzcgMS40MDMgMi4zMzUgMi4zNDgtMC41OTggMC45NDYtMS4zOTUgMS43NDktMi4zMzUgMi4zNDgtMS4xODEgMC43NTMtMi41NDUgMS4xNTItMy45NDQgMS4xNTItMC42MDQgMC0xLjIwMi0wLjA3NC0xLjc4MS0wLjIxOWwtMS4yMDEgMS4yMDFjMC45MzMgMC4zMzUgMS45MzcgMC41MTggMi45ODIgMC41MTggMy40ODkgMCA2LjUxNC0yLjAzMiA4LTUtMC43MDMtMS40MDUtMS43NTItMi42LTMuMDMxLTMuNDY5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMHYxNmw1LTUgNSA1di0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Cb29rbWFya3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAydjE0bDUtNSA1IDV2LTE0ek0xMiAwaC0xMHYxNGwxLTF2LTEyaDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNjMC41NTIgMCAxIDAuNDQ4IDEgMXYxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xdi0xYzAtMC41NTIgMC40NDgtMSAxLTF6TTggM2MtMC41NTIgMC0xLTAuNDQ4LTEtMXYtMWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxdjFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXpNMTUgN2MwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMWgtMWMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMWgxek0zIDhjMCAwLjU1Mi0wLjQ0OCAxLTEgMWgtMWMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMWgxYzAuNTUyIDAgMSAwLjQ0OCAxIDF6TTEyLjk1IDExLjUzNmwwLjcwNyAwLjcwN2MwLjM5IDAuMzkgMC4zOSAxLjAyNCAwIDEuNDE0cy0xLjAyNCAwLjM5LTEuNDE0IDBsLTAuNzA3LTAuNzA3Yy0wLjM5LTAuMzktMC4zOS0xLjAyNCAwLTEuNDE0czEuMDI0LTAuMzkgMS40MTQgMHpNMy4wNTAgNC40NjRsLTAuNzA3LTAuNzA3Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyNCAwLTEuNDE0czEuMDI0LTAuMzkxIDEuNDE0IDBsMC43MDcgMC43MDdjMC4zOTEgMC4zOTEgMC4zOTEgMS4wMjQgMCAxLjQxNHMtMS4wMjQgMC4zOTEtMS40MTQgMHpNMTIuOTUgNC40NjRjLTAuMzkgMC4zOTEtMS4wMjQgMC4zOTEtMS40MTQgMHMtMC4zOS0xLjAyNCAwLTEuNDE0bDAuNzA3LTAuNzA3YzAuMzktMC4zOTEgMS4wMjQtMC4zOTEgMS40MTQgMHMwLjM5IDEuMDI0IDAgMS40MTRsLTAuNzA3IDAuNzA3ek0zLjA1MCAxMS41MzZjMC4zOS0wLjM5IDEuMDI0LTAuMzkgMS40MTQgMHMwLjM5MSAxLjAyNCAwIDEuNDE0bC0wLjcwNyAwLjcwN2MtMC4zOTEgMC4zOS0xLjAyNCAwLjM5LTEuNDE0IDBzLTAuMzkxLTEuMDI0IDAtMS40MTRsMC43MDctMC43MDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0Yy0yLjIwOSAwLTQgMS43OTEtNCA0czEuNzkxIDQgNCA0YzIuMjA5IDAgNC0xLjc5MSA0LTRzLTEuNzkxLTQtNC00ek04IDEwLjVjLTEuMzgxIDAtMi41LTEuMTE5LTIuNS0yLjVzMS4xMTktMi41IDIuNS0yLjUgMi41IDEuMTE5IDIuNSAyLjUtMS4xMTkgMi41LTIuNSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29udHJhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek0yIDhjMC0zLjMxNCAyLjY4Ni02IDYtNnYxMmMtMy4zMTQgMC02LTIuNjg2LTYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CcmlnaHRuZXNzQ29udHJhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0Yy0yLjIwOSAwLTQgMS43OTEtNCA0czEuNzkxIDQgNCA0IDQtMS43OTEgNC00LTEuNzkxLTQtNC00ek04IDEwLjV2LTVjMS4zNzkgMCAyLjUgMS4xMjIgMi41IDIuNXMtMS4xMjEgMi41LTIuNSAyLjV6TTggMTNjMC41NTIgMCAxIDAuNDQ4IDEgMXYxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xdi0xYzAtMC41NTIgMC40NDgtMSAxLTF6TTggM2MtMC41NTIgMC0xLTAuNDQ4LTEtMXYtMWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxdjFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXpNMTUgN2MwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMWgtMWMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMWgxek0zIDhjMCAwLjU1Mi0wLjQ0OCAxLTEgMWgtMWMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMWgxYzAuNTUyIDAgMSAwLjQ0OCAxIDF6TTEyLjk1IDExLjUzNmwwLjcwNyAwLjcwN2MwLjM5IDAuMzkgMC4zOSAxLjAyNCAwIDEuNDE0cy0xLjAyNCAwLjM5LTEuNDE0IDBsLTAuNzA3LTAuNzA3Yy0wLjM5LTAuMzktMC4zOS0xLjAyNCAwLTEuNDE0czEuMDI0LTAuMzkgMS40MTQgMHpNMy4wNTAgNC40NjRsLTAuNzA3LTAuNzA3Yy0wLjM5MS0wLjM5MS0wLjM5MS0xLjAyNCAwLTEuNDE0czEuMDI0LTAuMzkxIDEuNDE0IDBsMC43MDcgMC43MDdjMC4zOTEgMC4zOTEgMC4zOTEgMS4wMjQgMCAxLjQxNHMtMS4wMjQgMC4zOTEtMS40MTQgMHpNMTIuOTUgNC40NjRjLTAuMzkgMC4zOTEtMS4wMjQgMC4zOTEtMS40MTQgMHMtMC4zOS0xLjAyNCAwLTEuNDE0bDAuNzA3LTAuNzA3YzAuMzktMC4zOTEgMS4wMjQtMC4zOTEgMS40MTQgMHMwLjM5IDEuMDI0IDAgMS40MTRsLTAuNzA3IDAuNzA3ek0zLjA1MCAxMS41MzZjMC4zOS0wLjM5IDEuMDI0LTAuMzkgMS40MTQgMHMwLjM5MSAxLjAyNCAwIDEuNDE0bC0wLjcwNyAwLjcwN2MtMC4zOTEgMC4zOS0xLjAyNCAwLjM5LTEuNDE0IDBzLTAuMzkxLTEuMDI0IDAtMS40MTRsMC43MDctMC43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RhckVtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDYuMjA0bC01LjUyOC0wLjgwMy0yLjQ3Mi01LjAwOS0yLjQ3MiA1LjAwOS01LjUyOCAwLjgwMyA0IDMuODk5LTAuOTQ0IDUuNTA1IDQuOTQ0LTIuNTk5IDQuOTQ0IDIuNTk5LTAuOTQ0LTUuNTA1IDQtMy44OTl6TTggMTEuNzczbC0zLjQ5MiAxLjgzNiAwLjY2Ny0zLjg4OC0yLjgyNS0yLjc1MyAzLjkwNC0wLjU2NyAxLjc0Ni0zLjUzNyAxLjc0NiAzLjUzNyAzLjkwNCAwLjU2Ny0yLjgyNSAyLjc1MyAwLjY2NyAzLjg4OC0zLjQ5Mi0xLjgzNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2LjIwNGwtNS41MjgtMC44MDMtMi40NzItNS4wMDktMi40NzIgNS4wMDktNS41MjggMC44MDMgNCAzLjg5OS0wLjk0NCA1LjUwNSA0Ljk0NC0yLjU5OSA0Ljk0NCAyLjU5OS0wLjk0NC01LjUwNSA0LTMuODk5ek04IDExLjc3M2wtMC4wMTUgMC4wMDggMC4wMTUtOC45MTggMS43NDYgMy41MzcgMy45MDQgMC41NjctMi44MjUgMi43NTMgMC42NjcgMy44ODgtMy40OTItMS44MzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RhckZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgNi4yMDRsLTUuNTI4LTAuODAzLTIuNDcyLTUuMDA5LTIuNDcyIDUuMDA5LTUuNTI4IDAuODAzIDQgMy44OTktMC45NDQgNS41MDUgNC45NDQtMi41OTkgNC45NDQgMi41OTktMC45NDQtNS41MDUgNC0zLjg5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS44IDFjLTEuNjgyIDAtMy4xMjkgMS4zNjgtMy43OTkgMi43OTctMC42NzEtMS40MjktMi4xMTgtMi43OTctMy44LTIuNzk3LTIuMzE4IDAtNC4yIDEuODgyLTQuMiA0LjIgMCA0LjcxNiA0Ljc1OCA1Ljk1MyA4IDEwLjYxNiAzLjA2NS00LjYzNCA4LTYuMDUwIDgtMTAuNjE2IDAtMi4zMTktMS44ODItNC4yLTQuMi00LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSGVhcnRCcm9rZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuOCAxYzIuMzE4IDAgNC4yIDEuODgyIDQuMiA0LjIgMCA0LjU2Ni00LjkzNSA1Ljk4Mi04IDEwLjYxNi0zLjI0My00LjY2My04LTUuOS04LTEwLjYxNiAwLTIuMzE5IDEuODgyLTQuMiA0LjItNC4yIDAuOTQzIDAgMS44MTIgMC40MyAyLjUxMiAxLjA2MGwtMS4yMTMgMS45NCAzLjUgMi0yIDUgNS41LTYtMy41LTIgMC45NjctMS40NTFjMC41NTMtMC4zNCAxLjE3NS0wLjU0OSAxLjgzMy0wLjU0OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSAxLjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRoLTNjLTAuNTUyIDAtMSAwLjQ0OC0xIDF2NWgxdjZoMS4yNXYtNmgwLjV2NmgxLjI1di02aDF2LTVjMC0wLjU1Mi0wLjQ0OC0xLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Xb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNWMwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjIzNCA4bDAuNzY2LTAuNTU1LTIuMDgzLTMuMjIxYy0wLjA5Mi0wLjE0LTAuMjQ5LTAuMjI1LTAuNDE3LTAuMjI1aC00Yy0wLjE2OCAwLTAuMzI1IDAuMDg0LTAuNDE3IDAuMjI1bC0yLjA4MyAzLjIyMSAwLjc2NiAwLjU1NSAxLjcyOS0yLjI0NCAwLjYwMSAxLjQwMi0yLjA5NSAzLjg0MWgxLjkxN2wwLjMzMyA1aDF2LTVoMC41djVoMWwwLjMzMy01aDEuOTE3bC0yLjA5NS0zLjg0MiAwLjYwMS0xLjQwMiAxLjcyOSAyLjI0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NYW5Xb21hbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNWMwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNWMwLTAuODI4IDAuNjcyLTEuNSAxLjUtMS41czEuNSAwLjY3MiAxLjUgMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGgtM2MtMC41NTIgMC0xIDAuNDQ4LTEgMXY1aDF2NmgxLjI1di02aDAuNXY2aDEuMjV2LTZoMXYtNWMwLTAuNTUyLTAuNDQ4LTEtMS0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjIzNCA4bDAuNzY2LTAuNTU1LTIuMDgzLTMuMjIxYy0wLjA5Mi0wLjE0LTAuMjQ5LTAuMjI1LTAuNDE3LTAuMjI1aC00Yy0wLjE2OCAwLTAuMzI1IDAuMDg0LTAuNDE3IDAuMjI1bC0yLjA4MyAzLjIyMSAwLjc2NiAwLjU1NSAxLjcyOS0yLjI0NCAwLjYwMSAxLjQwMi0yLjA5NSAzLjg0MWgxLjkxN2wwLjMzMyA1aDF2LTVoMC41djVoMWwwLjMzMy01aDEuOTE3bC0yLjA5NS0zLjg0MiAwLjYwMS0xLjQwMiAxLjcyOSAyLjI0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IYXBweSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek04IDEuNWMzLjU5IDAgNi41IDIuOTEgNi41IDYuNXMtMi45MSA2LjUtNi41IDYuNS02LjUtMi45MS02LjUtNi41IDIuOTEtNi41IDYuNS02LjV6TTggOS4zNTZjMS44MTIgMCAzLjUzNS0wLjQ4MSA1LTEuMzI3LTAuMjI4IDIuNzg4LTIuMzkzIDQuOTcxLTUgNC45NzFzLTQuNzcyLTIuMTg2LTUtNC45NzNjMS40NjUgMC44NDUgMy4xODggMS4zMjkgNSAxLjMyOXpNNCA1LjVjMC0wLjgyOCAwLjQ0OC0xLjUgMS0xLjVzMSAwLjY3MiAxIDEuNWMwIDAuODI4LTAuNDQ4IDEuNS0xIDEuNXMtMS0wLjY3Mi0xLTEuNXpNMTAgNS41YzAtMC44MjggMC40NDgtMS41IDEtMS41czEgMC42NzIgMSAxLjVjMCAwLjgyOC0wLjQ0OCAxLjUtMSAxLjVzLTEtMC42NzItMS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSGFwcHkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMTEgNGMwLjU1MiAwIDEgMC42NzIgMSAxLjVzLTAuNDQ4IDEuNS0xIDEuNS0xLTAuNjcyLTEtMS41IDAuNDQ4LTEuNSAxLTEuNXpNNSA0YzAuNTUyIDAgMSAwLjY3MiAxIDEuNXMtMC40NDggMS41LTEgMS41LTEtMC42NzItMS0xLjUgMC40NDgtMS41IDEtMS41ek04IDE0Yy0yLjYwNyAwLTQuNzcyLTIuMTg2LTUtNC45NzMgMS40NjUgMC44NDYgMy4xODggMS4zMjkgNSAxLjMyOXMzLjUzNS0wLjQ4MSA1LTEuMzI3Yy0wLjIyOCAyLjc4OC0yLjM5MyA0Ljk3MS01IDQuOTcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNNCA1YzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6TTEwIDVjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMWMwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMXpNMTEuMDAyIDkuODAxbDEuMjg2IDAuNzcyYy0wLjg3NCAxLjQ1NC0yLjQ2NyAyLjQyNy00LjI4OCAyLjQyN3MtMy40MTMtMC45NzMtNC4yODgtMi40MjdsMS4yODYtMC43NzJjMC42MTIgMS4wMTggMS43MjcgMS42OTkgMy4wMDIgMS42OTlzMi4zODktMC42ODEgMy4wMDItMS42OTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU21pbGUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMTEgNGMwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMS0xLTAuNDQ4LTEtMSAwLjQ0OC0xIDEtMXpNNSA0YzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxLTEtMC40NDgtMS0xIDAuNDQ4LTEgMS0xek04IDEzYy0xLjgyIDAtMy40MTMtMC45NzMtNC4yODgtMi40MjdsMS4yODYtMC43NzJjMC42MTIgMS4wMTggMS43MjcgMS42OTkgMy4wMDIgMS42OTlzMi4zODktMC42ODEgMy4wMDItMS42OTlsMS4yODYgMC43NzJjLTAuODc0IDEuNDU0LTIuNDY3IDIuNDI3LTQuMjg4IDIuNDI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRvbmd1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek04IDEuNWMzLjU5IDAgNi41IDIuOTEgNi41IDYuNXMtMi45MSA2LjUtNi41IDYuNS02LjUtMi45MS02LjUtNi41IDIuOTEtNi41IDYuNS02LjV6TTQgNWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMCA1YzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6TTEyIDl2MWgtMXYxLjVjMCAwLjgyOC0wLjY3MiAxLjUtMS41IDEuNXMtMS41LTAuNjcyLTEuNS0xLjV2LTEuNWgtNHYtMWg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRvbmd1ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek01IDRjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTEgMC40NDgtMSAxLTF6TTEyIDEwaC0xdjEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXYtMS41aC00di0xaDh2MXpNMTEgNmMtMC41NTIgMC0xLTAuNDQ4LTEtMXMwLjQ0OC0xIDEtMSAxIDAuNDQ4IDEgMS0wLjQ0OCAxLTEgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek00IDVjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMWMwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMXpNMTAgNWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek00Ljk5OCAxMi4xOTlsLTEuMjg2LTAuNzcyYzAuODc0LTEuNDU0IDIuNDY3LTIuNDI3IDQuMjg4LTIuNDI3czMuNDEzIDAuOTczIDQuMjg4IDIuNDI3bC0xLjI4NiAwLjc3MmMtMC42MTItMS4wMTgtMS43MjctMS42OTktMy4wMDItMS42OTlzLTIuMzg5IDAuNjgxLTMuMDAyIDEuNjk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNhZDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek0xMSA0YzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxLTEtMC40NDgtMS0xIDAuNDQ4LTEgMS0xek01IDRjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTEgMC40NDgtMSAxLTF6TTExLjAwMiAxMi4xOTljLTAuNjEyLTEuMDE4LTEuNzI3LTEuNjk5LTMuMDAyLTEuNjk5cy0yLjM4OSAwLjY4MS0zLjAwMiAxLjY5OWwtMS4yODYtMC43NzJjMC44NzQtMS40NTQgMi40NjctMi40MjcgNC4yODgtMi40MjdzMy40MTQgMC45NzMgNC4yODggMi40MjdsLTEuMjg2IDAuNzcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek04LjQ4IDExLjExYzIuMTkxLTAuNDMzIDMuODkyLTEuNDMgNC41MDctMi43NTktMC4zMzggMi42MjQtMi41MjQgNC42NDktNS4xNyA0LjY0OS0xLjg2MyAwLTMuNDk4LTEuMDA0LTQuNDItMi41MTUgMS4xIDAuODYgMy4wNDAgMS4wMjggNS4wODMgMC42MjV6TTEwIDUuNWMwLTAuODI4IDAuNDQ4LTEuNSAxLTEuNXMxIDAuNjcyIDEgMS41YzAgMC44MjgtMC40NDggMS41LTEgMS41cy0xLTAuNjcyLTEtMS41ek01LjUgNS44MDVjLTAuNjUzIDAtMS4yMDggMC4yNDUtMS40MTQgMC41ODYtMC4wNTUtMC4wOTItMC4wODYtMC41MDMtMC4wODYtMC42MDUgMC0wLjQ4NSAwLjY3Mi0wLjg3OSAxLjUtMC44NzlzMS41IDAuMzk0IDEuNSAwLjg3OWMwIDAuMTAzLTAuMDMwIDAuNTE0LTAuMDg2IDAuNjA1LTAuMjA2LTAuMzQxLTAuNzYxLTAuNTg2LTEuNDE0LTAuNTg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdpbmsyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHpNMTEgNGMwLjU1MiAwIDEgMC42NzIgMSAxLjVzLTAuNDQ4IDEuNS0xIDEuNS0xLTAuNjcyLTEtMS41IDAuNDQ4LTEuNSAxLTEuNXpNNS41IDQuODc2YzAuOTMyIDAgMS41OTQgMC4zNDkgMS41OTQgMC44OTUgMCAwLjExNiAwLjA2MCAwLjY3Mi0wLjAwMyAwLjc3NS0wLjIzMi0wLjM4NC0wLjg1Ni0wLjY1OS0xLjU5MS0wLjY1OXMtMS4zNTkgMC4yNzUtMS41OTEgMC42NTljLTAuMDYyLTAuMTAzLTAuMDAzLTAuNjU5LTAuMDAzLTAuNzc1IDAtMC41NDYgMC42NjItMC44OTUgMS41OTQtMC44OTV6TTcuODE4IDEzYy0xLjg2MyAwLTMuNDk4LTEuMDA0LTQuNDItMi41MTUgMS4xIDAuODYgMy4wNDAgMS4wMjggNS4wODMgMC42MjUgMi4xOTEtMC40MzMgMy44OTItMS40MyA0LjUwNy0yLjc1OS0wLjMzOCAyLjYyNC0yLjUyNCA0LjY0OS01LjE3IDQuNjQ5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUdyaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek0zIDh2MWMwIDIuMiAxLjggNCA0IDRoMmMyLjIgMCA0LTEuOCA0LTR2LTFoLTEwek02IDExLjgyOGMtMC40MTUtMC4xNDgtMC43OTYtMC4zODgtMS4xMTgtMC43MS0wLjU2OS0wLjU2OS0wLjg4Mi0xLjMyMS0wLjg4Mi0yLjExOGgydjIuODI4ek05IDEyaC0ydi0zaDJ2M3pNMTEuMTE4IDExLjExOGMtMC4zMjIgMC4zMjItMC43MDMgMC41NjItMS4xMTggMC43MXYtMi44MjhoMmMwIDAuNzk3LTAuMzEzIDEuNTQ5LTAuODgyIDIuMTE4ek0zLjUyMSA2YzAgMCAwIDAgMCAwIDAuMTUzIDAgMC4yODMtMC4xMSAwLjMwOC0wLjI2MSAwLjA5Ni0wLjU3MyAwLjU4OS0wLjk4OSAxLjE3MS0wLjk4OXMxLjA3NCAwLjQxNiAxLjE3MSAwLjk4OWMwLjAyNSAwLjE1MSAwLjE1NiAwLjI2MSAwLjMwOCAwLjI2MXMwLjI4My0wLjExIDAuMzA4LTAuMjYxYzAuMDE3LTAuMTAxIDAuMDI1LTAuMjAyIDAuMDI1LTAuMzAyIDAtMC45OTktMC44MTMtMS44MTMtMS44MTMtMS44MTNzLTEuODEzIDAuODEzLTEuODEzIDEuODEzYzAgMC4xIDAuMDA5IDAuMjAxIDAuMDI1IDAuMzAyIDAuMDI1IDAuMTUxIDAuMTU2IDAuMjYxIDAuMzA4IDAuMjYxek05LjUyMSA2YzAgMCAwIDAgMCAwIDAuMTUzIDAgMC4yODMtMC4xMSAwLjMwOC0wLjI2MSAwLjA5Ni0wLjU3MyAwLjU4OS0wLjk4OSAxLjE3MS0wLjk4OXMxLjA3NCAwLjQxNiAxLjE3MSAwLjk4OWMwLjAyNSAwLjE1MSAwLjE1NiAwLjI2MSAwLjMwOCAwLjI2MXMwLjI4My0wLjExIDAuMzA4LTAuMjYxYzAuMDE3LTAuMTAxIDAuMDI1LTAuMjAyIDAuMDI1LTAuMzAyIDAtMC45OTktMC44MTMtMS44MTMtMS44MTMtMS44MTNzLTEuODEzIDAuODEzLTEuODEzIDEuODEzYzAgMC4xIDAuMDA4IDAuMjAxIDAuMDI1IDAuMzAyIDAuMDI1IDAuMTUxIDAuMTU2IDAuMjYxIDAuMzA4IDAuMjYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUdyaW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHpNMTEgMy42ODhjMC45OTkgMCAxLjgxMyAwLjgxMyAxLjgxMyAxLjgxMyAwIDAuMS0wLjAwOSAwLjIwMS0wLjAyNSAwLjMwMi0wLjAyNSAwLjE1MS0wLjE1NiAwLjI2MS0wLjMwOCAwLjI2MXMtMC4yODMtMC4xMS0wLjMwOC0wLjI2MWMtMC4wOTYtMC41NzMtMC41ODktMC44MzMtMS4xNzEtMC44MzNzLTEuMDc0IDAuMjYtMS4xNzEgMC44MzNjLTAuMDI1IDAuMTUxLTAuMTU2IDAuMjYxLTAuMzA4IDAuMjYxLTAgMCAwIDAtMCAwLTAuMTUzIDAtMC4yODMtMC4xMS0wLjMwOC0wLjI2MS0wLjAxNy0wLjEwMS0wLjAyNS0wLjIwMi0wLjAyNS0wLjMwMiAwLTAuOTk5IDAuODEzLTEuODEzIDEuODEzLTEuODEzek01IDMuNjg4YzAuOTk5IDAgMS44MTMgMC44MTMgMS44MTMgMS44MTMgMCAwLjEtMC4wMDkgMC4yMDEtMC4wMjUgMC4zMDItMC4wMjUgMC4xNTEtMC4xNTYgMC4yNjEtMC4zMDggMC4yNjFzLTAuMjgzLTAuMTEtMC4zMDgtMC4yNjFjLTAuMDk2LTAuNTczLTAuNTg5LTAuODMzLTEuMTcxLTAuODMzcy0xLjA3NCAwLjI2LTEuMTcxIDAuODMzYy0wLjAyNSAwLjE1MS0wLjE1NiAwLjI2MS0wLjMwOCAwLjI2MSAwIDAgMCAwIDAgMC0wLjE1MyAwLTAuMjgzLTAuMTEtMC4zMDgtMC4yNjEtMC4wMTctMC4xMDEtMC4wMjUtMC4yMDItMC4wMjUtMC4zMDIgMC0wLjk5OSAwLjgxMy0xLjgxMyAxLjgxMy0xLjgxM3pNMyA5aDN2My44NzNjLTEuNzItMC40NDctMy0yLjAxOC0zLTMuODczek03IDEzdi00aDJ2NGgtMnpNMTAgMTIuODczdi0zLjg3M2gzYzAgMS44NTUtMS4yOCAzLjQyNi0zIDMuODczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNvb2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek0xMi41IDRjMC4yNzUgMCAwLjUgMC4yMjUgMC41IDAuNXYxLjVjMCAwLjU1LTAuNDUgMS0xIDFoLTJjLTAuNTUgMC0xLTAuNDUtMS0xaC0yYzAgMC41NS0wLjQ1IDEtMSAxaC0yYy0wLjU1IDAtMS0wLjQ1LTEtMXYtMS41YzAtMC4yNzUgMC4yMjUtMC41IDAuNS0wLjVoM2MwLjI3NSAwIDAuNSAwLjIyNSAwLjUgMC41djAuNWgydi0wLjVjMC0wLjI3NSAwLjIyNS0wLjUgMC41LTAuNWgzek04IDEyYzEuNDU2IDAgMi43MzEtMC43NzggMy40My0xLjk0MmwwLjg1NyAwLjUxNWMtMC44NzQgMS40NTQtMi40NjcgMi40MjctNC4yODggMi40MjctMC43NTcgMC0xLjQ3NS0wLjE2OS0yLjExOC0wLjQ3bDAuNTE4LTAuODY0YzAuNDkgMC4yMTQgMS4wMzEgMC4zMzQgMS42IDAuMzM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNvb2wyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHpNOCAxM2MtMC43NTcgMC0xLjQ3NS0wLjE2OS0yLjExOC0wLjQ3bDAuNTE4LTAuODY0YzAuNDkgMC4yMTQgMS4wMzEgMC4zMzQgMS42IDAuMzM0IDEuNDU2IDAgMi43MzEtMC43NzggMy40My0xLjk0MmwwLjg1OCAwLjUxNWMtMC44NzQgMS40NTQtMi40NjcgMi40MjctNC4yODggMi40Mjd6TTEzIDZjMCAwLjU1LTAuNDUgMS0xIDFoLTJjLTAuNTUgMC0xLTAuNDUtMS0xaC0yYzAgMC41NS0wLjQ1IDEtMSAxaC0yYy0wLjU1IDAtMS0wLjQ1LTEtMXYtMS41YzAtMC4yNzUgMC4yMjUtMC41IDAuNS0wLjVoM2MwLjI3NSAwIDAuNSAwLjIyNSAwLjUgMC41djAuNWgydi0wLjVjMC0wLjI3NSAwLjIyNS0wLjUgMC41LTAuNWgzYzAuMjc1IDAgMC41IDAuMjI1IDAuNSAwLjV2MS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNMTEuMDAyIDEyLjE5OWMtMC42MTItMS4wMTgtMS43MjctMS42OTktMy4wMDItMS42OTlzLTIuMzg5IDAuNjgxLTMuMDAyIDEuNjk5bC0xLjI4Ni0wLjc3MmMwLjg3NC0xLjQ1NCAyLjQ2Ny0yLjQyNyA0LjI4OC0yLjQyN3MzLjQxNCAwLjk3MyA0LjI4OCAyLjQyN2wtMS4yODYgMC43NzJ6TTExLjk4NSA0LjM3OWMwLjA2NyAwLjI2OC0wLjA5NiAwLjUzOS0wLjM2NCAwLjYwNi0wLjI3NSAwLjA3MC0wLjYwMiAwLjE4OS0wLjg5IDAuMzM0IDAuMTY2IDAuMTc5IDAuMjY4IDAuNDE4IDAuMjY4IDAuNjgxIDAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xYzAtMC4wMTggMC4wMDEtMC4wMzYgMC4wMDItMC4wNTQgMC4wMzItMC43NDEgMC43MDYtMS4yMzQgMS4yNzUtMS41MTggMC41NDMtMC4yNzEgMS4wODAtMC40MDcgMS4xMDItMC40MTMgMC4yNjgtMC4wNjcgMC41MzkgMC4wOTYgMC42MDYgMC4zNjR6TTQuMDE1IDQuMzc5YzAuMDY3LTAuMjY4IDAuMzM4LTAuNDMxIDAuNjA2LTAuMzY0IDAuMDIzIDAuMDA2IDAuNTU5IDAuMTQxIDEuMTAyIDAuNDEzIDAuNTY4IDAuMjg0IDEuMjQzIDAuNzc2IDEuMjc1IDEuNTE4IDAuMDAxIDAuMDE4IDAuMDAyIDAuMDM2IDAuMDAyIDAuMDU0IDAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xYzAtMC4yNjMgMC4xMDItMC41MDMgMC4yNjgtMC42ODEtMC4yODgtMC4xNDQtMC42MTQtMC4yNjQtMC44OS0wLjMzNC0wLjI2OC0wLjA2Ny0wLjQzMS0wLjMzOC0wLjM2NC0wLjYwNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BbmdyeTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek05LjAwMSA1Ljk0NmMwLjAzMi0wLjc0MSAwLjcwNi0xLjIzNCAxLjI3NS0xLjUxOCAwLjU0My0wLjI3MSAxLjA4MC0wLjQwNyAxLjEwMi0wLjQxMyAwLjI2OC0wLjA2NyAwLjUzOSAwLjA5NiAwLjYwNiAwLjM2NHMtMC4wOTYgMC41MzktMC4zNjQgMC42MDZjLTAuMjc1IDAuMDcwLTAuNjAyIDAuMTg5LTAuODkgMC4zMzQgMC4xNjYgMC4xNzkgMC4yNjggMC40MTggMC4yNjggMC42ODEgMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTFjMC0wLjAxOCAwLjAwMS0wLjAzNiAwLjAwMi0wLjA1NHpNNC4wMTUgNC4zNzljMC4wNjctMC4yNjggMC4zMzgtMC40MzEgMC42MDYtMC4zNjQgMC4wMjMgMC4wMDYgMC41NTkgMC4xNDEgMS4xMDIgMC40MTMgMC41NjggMC4yODQgMS4yNDMgMC43NzYgMS4yNzUgMS41MTggMC4wMDEgMC4wMTggMC4wMDIgMC4wMzYgMC4wMDIgMC4wNTQgMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTFjMC0wLjI2MyAwLjEwMi0wLjUwMyAwLjI2OC0wLjY4MS0wLjI4OC0wLjE0NC0wLjYxNC0wLjI2NC0wLjg5LTAuMzM0LTAuMjY4LTAuMDY3LTAuNDMxLTAuMzM4LTAuMzY0LTAuNjA2ek0xMS4wMDIgMTIuMTk5Yy0wLjYxMi0xLjAxOC0xLjcyNy0xLjY5OS0zLjAwMi0xLjY5OXMtMi4zODkgMC42ODEtMy4wMDIgMS42OTlsLTEuMjg2LTAuNzcyYzAuODc0LTEuNDU0IDIuNDY3LTIuNDI3IDQuMjg4LTIuNDI3czMuNDE0IDAuOTczIDQuMjg4IDIuNDI3bC0xLjI4NiAwLjc3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FdmlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDdjLTAuNTUyIDAtMS0wLjQ0OC0xLTEgMC0wLjAxOCAwLjAwMS0wLjAzNiAwLjAwMi0wLjA1NCAwLjAzMi0wLjc0MSAwLjcwNi0xLjIzNCAxLjI3NS0xLjUxOCAwLjU0My0wLjI3MSAxLjA4MC0wLjQwNyAxLjEwMi0wLjQxMyAwLjI2OC0wLjA2NyAwLjUzOSAwLjA5NiAwLjYwNiAwLjM2NHMtMC4wOTYgMC41MzktMC4zNjQgMC42MDZjLTAuMjc1IDAuMDcwLTAuNjAyIDAuMTg5LTAuODkgMC4zMzQgMC4xNjYgMC4xNzkgMC4yNjggMC40MTggMC4yNjggMC42ODEgMCAwLjU1Mi0wLjQ0OCAxLTEgMXpNNC4zNzkgNC45ODVjLTAuMjY4LTAuMDY3LTAuNDMxLTAuMzM4LTAuMzY0LTAuNjA2czAuMzM4LTAuNDMxIDAuNjA2LTAuMzY0YzAuMDIzIDAuMDA2IDAuNTU5IDAuMTQxIDEuMTAyIDAuNDEzIDAuNTY4IDAuMjg0IDEuMjQzIDAuNzc2IDEuMjc1IDEuNTE4IDAuMDAxIDAuMDE4IDAuMDAyIDAuMDM2IDAuMDAyIDAuMDU0IDAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xYzAtMC4yNjMgMC4xMDItMC41MDMgMC4yNjgtMC42ODEtMC4yODgtMC4xNDQtMC42MTQtMC4yNjQtMC44OS0wLjMzNHpNOCAxMS41YzEuMjc0IDAgMi4zODktMC42ODEgMy4wMDItMS42OTlsMS4yODYgMC43NzJjLTAuODc0IDEuNDU0LTIuNDY3IDIuNDI3LTQuMjg4IDIuNDI3cy0zLjQxMy0wLjk3My00LjI4OC0yLjQyN2wxLjI4Ni0wLjc3MmMwLjYxMiAxLjAxOCAxLjcyNyAxLjY5OSAzLjAwMiAxLjY5OXpNMTYgMWMwLTAuNzExLTAuMTQ5LTEuMzg3LTAuNDE2LTItMC41MjUgMS4yMDEtMS41MDcgMi4xNTUtMi43MjYgMi42NDMtMS4zNDctMS4wMzEtMy4wMzAtMS42NDMtNC44NTctMS42NDNzLTMuNTEgMC42MTMtNC44NTcgMS42NDNjLTEuMjItMC40ODgtMi4yMDItMS40NDMtMi43MjYtMi42NDMtMC4yNjggMC42MTMtMC40MTYgMS4yODktMC40MTYgMiAwIDEuMTUgMC4zODggMi4yMDggMS4wNDAgMy4wNTMtMC42NjIgMS4xNjUtMS4wNDAgMi41MTItMS4wNDAgMy45NDcgMCA0LjQxOCAzLjU4MiA4IDggOHM4LTMuNTgyIDgtOGMwLTEuNDM2LTAuMzc4LTIuNzgzLTEuMDQwLTMuOTQ3IDAuNjUyLTAuODQ1IDEuMDQwLTEuOTAzIDEuMDQwLTMuMDUzek04IDE0LjVjLTMuNTkgMC02LjUtMi45MS02LjUtNi41czIuOTEtNi41IDYuNS02LjUgNi41IDIuOTEgNi41IDYuNS0yLjkxIDYuNS02LjUgNi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUV2aWwyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDFjMC0wLjcxMS0wLjE0OS0xLjM4Ny0wLjQxNi0yLTAuNTI1IDEuMjAxLTEuNTA3IDIuMTU1LTIuNzI2IDIuNjQzLTEuMzQ3LTEuMDMxLTMuMDMwLTEuNjQzLTQuODU3LTEuNjQzcy0zLjUxIDAuNjEzLTQuODU3IDEuNjQzYy0xLjIyLTAuNDg4LTIuMjAyLTEuNDQzLTIuNzI2LTIuNjQzLTAuMjY4IDAuNjEzLTAuNDE2IDEuMjg5LTAuNDE2IDIgMCAxLjE1IDAuMzg4IDIuMjA4IDEuMDQwIDMuMDUzLTAuNjYyIDEuMTY1LTEuMDQwIDIuNTEyLTEuMDQwIDMuOTQ3IDAgNC40MTggMy41ODIgOCA4IDhzOC0zLjU4MiA4LThjMC0xLjQzNi0wLjM3OC0yLjc4My0xLjA0MC0zLjk0NyAwLjY1Mi0wLjg0NSAxLjA0MC0xLjkwMyAxLjA0MC0zLjA1M3pNOS4wMDEgNS45NDZjMC4wMzItMC43NDEgMC43MDYtMS4yMzQgMS4yNzUtMS41MTggMC41NDMtMC4yNzEgMS4wODAtMC40MDcgMS4xMDItMC40MTMgMC4yNjgtMC4wNjcgMC41MzkgMC4wOTYgMC42MDYgMC4zNjRzLTAuMDk2IDAuNTM5LTAuMzY0IDAuNjA2Yy0wLjI3NSAwLjA3MC0wLjYwMiAwLjE4OS0wLjg5IDAuMzM0IDAuMTY2IDAuMTc5IDAuMjY4IDAuNDE4IDAuMjY4IDAuNjgxIDAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xYzAtMC4wMTggMC4wMDEtMC4wMzYgMC4wMDItMC4wNTR6TTQuMDE1IDQuMzc5YzAuMDY3LTAuMjY4IDAuMzM4LTAuNDMxIDAuNjA2LTAuMzY0IDAuMDIzIDAuMDA2IDAuNTU5IDAuMTQxIDEuMTAyIDAuNDEzIDAuNTY4IDAuMjg0IDEuMjQzIDAuNzc2IDEuMjc1IDEuNTE4IDAuMDAxIDAuMDE4IDAuMDAyIDAuMDM2IDAuMDAyIDAuMDU0IDAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xYzAtMC4yNjMgMC4xMDItMC41MDMgMC4yNjgtMC42ODEtMC4yODgtMC4xNDQtMC42MTQtMC4yNjQtMC44OS0wLjMzNC0wLjI2OC0wLjA2Ny0wLjQzMS0wLjMzOC0wLjM2NC0wLjYwNnpNOCAxM2MtMS44MiAwLTMuNDEzLTAuOTczLTQuMjg4LTIuNDI3bDEuMjg2LTAuNzcyYzAuNjEyIDEuMDE4IDEuNzI3IDEuNjk5IDMuMDAyIDEuNjk5czIuMzg5LTAuNjgxIDMuMDAyLTEuNjk5bDEuMjg2IDAuNzcyYy0wLjg3NCAxLjQ1NC0yLjQ2NyAyLjQyNy00LjI4OCAyLjQyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TaG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNNiAxMWMwLTEuMTA1IDAuODk1LTIgMi0yczIgMC44OTUgMiAyYzAgMS4xMDUtMC44OTUgMi0yIDJzLTItMC44OTUtMi0yek0xMCA1LjVjMC0wLjgyOCAwLjQ0OC0xLjUgMS0xLjVzMSAwLjY3MiAxIDEuNWMwIDAuODI4LTAuNDQ4IDEuNS0xIDEuNXMtMS0wLjY3Mi0xLTEuNXpNNCA1LjVjMC0wLjgyOCAwLjQ0OC0xLjUgMS0xLjVzMSAwLjY3MiAxIDEuNWMwIDAuODI4LTAuNDQ4IDEuNS0xIDEuNXMtMS0wLjY3Mi0xLTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TaG9ja2VkMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTUgN2MtMC41NTIgMC0xLTAuNjcyLTEtMS41czAuNDQ4LTEuNSAxLTEuNSAxIDAuNjcyIDEgMS41LTAuNDQ4IDEuNS0xIDEuNXpNOCAxM2MtMS4xMDUgMC0yLTAuODk1LTItMnMwLjg5NS0yIDItMmMxLjEwNSAwIDIgMC44OTUgMiAycy0wLjg5NSAyLTIgMnpNMTEgN2MtMC41NTIgMC0xLTAuNjcyLTEtMS41czAuNDQ4LTEuNSAxLTEuNSAxIDAuNjcyIDEgMS41LTAuNDQ4IDEuNS0xIDEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CYWZmbGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDYuNWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41cy0wLjUtMC4yMjQtMC41LTAuNWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41czAuNSAwLjIyNCAwLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA1YzAuODI4IDAgMS41IDAuNjcyIDEuNSAxLjVzLTAuNjcyIDEuNS0xLjUgMS41LTEuNS0wLjY3Mi0xLjUtMS41IDAuNjcyLTEuNSAxLjUtMS41ek01LjUgNGMtMS4zNzggMC0yLjUgMS4xMjItMi41IDIuNXMxLjEyMiAyLjUgMi41IDIuNSAyLjUtMS4xMjIgMi41LTIuNS0xLjEyMi0yLjUtMi41LTIuNXYwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDYuNWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41cy0wLjUtMC4yMjQtMC41LTAuNWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41czAuNSAwLjIyNCAwLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgNWMwLjgyOCAwIDEuNSAwLjY3MiAxLjUgMS41cy0wLjY3MiAxLjUtMS41IDEuNS0xLjUtMC42NzItMS41LTEuNSAwLjY3Mi0xLjUgMS41LTEuNXpNMTAuNSA0Yy0xLjM3OSAwLTIuNSAxLjEyMi0yLjUgMi41czEuMTIxIDIuNSAyLjUgMi41IDIuNS0xLjEyMiAyLjUtMi41LTEuMTIxLTIuNS0yLjUtMi41djB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMWg0djFoLTR2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQmFmZmxlZDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA2LjVjMCAwLjI3Ni0wLjIyNCAwLjUtMC41IDAuNXMtMC41LTAuMjI0LTAuNS0wLjUgMC4yMjQtMC41IDAuNS0wLjUgMC41IDAuMjI0IDAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNi41YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjVzLTAuNS0wLjIyNC0wLjUtMC41IDAuMjI0LTAuNSAwLjUtMC41IDAuNSAwLjIyNCAwLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNNCA2LjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNS0wLjY3MiAxLjUtMS41IDEuNS0xLjUtMC42NzItMS41LTEuNXpNMTAgMTJoLTR2LTFoNHYxek0xMC41IDhjLTAuODI4IDAtMS41LTAuNjcyLTEuNS0xLjVzMC42NzItMS41IDEuNS0xLjUgMS41IDAuNjcyIDEuNSAxLjUtMC42NzIgMS41LTEuNSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29uZnVzZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek00IDVjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMWMwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMXpNMTAgNWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMS4zNDUgMTBoMS4wMTRjMC4xNDQgMS4xMzMtMC41MDcgMi4yNTgtMS42MjQgMi42NjUtMS4yOTUgMC40NzItMi43MzMtMC4xOTktMy4yMDQtMS40OTQtMC4yODMtMC43NzctMS4xNDUtMS4xNzktMS45MjMtMC44OTYtMC43MTIgMC4yNTktMS4xMDkgMS4wMDUtMC45NTMgMS43MjVoLTEuMDEzYy0wLjE0NC0xLjEzMyAwLjUwNy0yLjI1OCAxLjYyNC0yLjY2NSAxLjI5NS0wLjQ3MiAyLjczMyAwLjE5OSAzLjIwNCAxLjQ5NCAwLjI4MyAwLjc3NyAxLjE0NSAxLjE3OSAxLjkyMyAwLjg5NiAwLjcxMi0wLjI1OSAxLjEwOS0xLjAwNSAwLjk1My0xLjcyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Db25mdXNlZDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04ek0xMSA0YzAuNTUyIDAgMSAwLjQ0OCAxIDFzLTAuNDQ4IDEtMSAxLTEtMC40NDgtMS0xYzAtMC41NTIgMC40NDgtMSAxLTF6TTUgNGMwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMS0xLTAuNDQ4LTEtMWMwLTAuNTUyIDAuNDQ4LTEgMS0xek0xMC43MzUgMTIuNjY1Yy0xLjI5NSAwLjQ3Mi0yLjczMy0wLjE5OS0zLjIwNC0xLjQ5NC0wLjI4My0wLjc3Ny0xLjE0NS0xLjE3OS0xLjkyMy0wLjg5Ni0wLjcxMiAwLjI1OS0xLjEwOSAxLjAwNS0wLjk1MyAxLjcyNWgtMS4wMTNjLTAuMTQ0LTEuMTMzIDAuNTA3LTIuMjU4IDEuNjI0LTIuNjY1IDEuMjk1LTAuNDcyIDIuNzMzIDAuMTk5IDMuMjA0IDEuNDk0IDAuMjgzIDAuNzc3IDEuMTQ1IDEuMTc5IDEuOTIzIDAuODk2IDAuNzEyLTAuMjU5IDEuMTA5LTEuMDA1IDAuOTUzLTEuNzI1aDEuMDE0YzAuMTQ0IDEuMTMzLTAuNTA3IDIuMjU4LTEuNjI0IDIuNjY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU5ldXRyYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41ek00IDVjMCAwLjU1MiAwLjQ0OCAxIDEgMXMxLTAuNDQ4IDEtMS0wLjQ0OC0xLTEtMS0xIDAuNDQ4LTEgMXpNMTAgNWMwIDAuNTUyIDAuNDQ4IDEgMSAxczEtMC40NDggMS0xLTAuNDQ4LTEtMS0xLTEgMC40NDgtMSAxek02IDExaDR2MWgtNHYtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1OZXV0cmFsMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDhjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTh6TTEwIDEyaC00di0xaDR2MXpNMTEgNGMwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMS0xLTAuNDQ4LTEtMWMwLTAuNTUyIDAuNDQ4LTEgMS0xek01IDRjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTFjMC0wLjU1MiAwLjQ0OC0xIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IaXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNNCA1YzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDEtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTF6TTEwIDVjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMS0wLjQ0OCAxLTEgMS0xLTAuNDQ4LTEtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41NjEgOC40MzljLTAuNTg2LTAuNTg2LTEuNTM2LTAuNTg2LTIuMTIxIDBzLTAuNTg2IDEuNTM2IDAgMi4xMjFjMC4wMTkgMC4wMTkgMC4wMzggMC4wMzcgMC4wNTggMC4wNTUgMS4zNTIgMS4yMjcgNC41MDMtMC4wMjkgNC41MDMtMS42MTUtMC45NjkgMC42MjUtMS43MjYgMC4xNTMtMi40MzktMC41NjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS40MzkgOC40MzljMC41ODYtMC41ODYgMS41MzYtMC41ODYgMi4xMjEgMHMwLjU4NiAxLjUzNiAwIDIuMTIxYy0wLjAxOSAwLjAxOS0wLjAzOCAwLjAzNy0wLjA1OCAwLjA1NS0xLjM1MiAxLjIyNy00LjUwMy0wLjAyOS00LjUwMy0xLjYxNSAwLjk2OSAwLjYyNSAxLjcyNiAwLjE1MyAyLjQzOS0wLjU2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IaXBzdGVyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTExIDRjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTEgMC40NDgtMSAxLTF6TTUgNGMwLjU1MiAwIDEgMC40NDggMSAxcy0wLjQ0OCAxLTEgMS0xLTAuNDQ4LTEtMSAwLjQ0OC0xIDEtMXpNOC40OTcgMTAuNjE1Yy0wLjAyMC0wLjAxOC0wLjAzOS0wLjAzNi0wLjA1OC0wLjA1NS0wLjI5My0wLjI5My0wLjQzOS0wLjY3Ny0wLjQzOS0xLjA2MC0wIDAuMzg0LTAuMTQ2IDAuNzY4LTAuNDM5IDEuMDYwLTAuMDE5IDAuMDE5LTAuMDM4IDAuMDM3LTAuMDU4IDAuMDU1LTEuMzUyIDEuMjI3LTQuNTAzLTAuMDI5LTQuNTAzLTEuNjE1IDAuOTY5IDAuNjI1IDEuNzI2IDAuMTUzIDIuNDM5LTAuNTYxIDAuNTg2LTAuNTg2IDEuNTM2LTAuNTg2IDIuMTIxIDAgMC4yOTMgMC4yOTMgMC40MzkgMC42NzcgMC40MzkgMS4wNjAgMC0wLjM4NCAwLjE0Ni0wLjc2OCAwLjQzOS0xLjA2MCAwLjU4Ni0wLjU4NiAxLjUzNi0wLjU4NiAyLjEyMSAwIDAuNzEzIDAuNzE0IDEuNDcxIDEuMTg2IDIuNDM5IDAuNTYxIDAgMS41ODYtMy4xNTEgMi44NDItNC41MDMgMS42MTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltV29uZGVyaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNMTEuNjUyIDkuNGwwLjM1MSAxLjItNi44MjggMi0wLjM1MS0xLjJ6TTQgNWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMCA1YzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDFjMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltV29uZGVyaW5nMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTExIDRjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDEtMS0wLjQ0OC0xLTEgMC40NDgtMSAxLTF6TTQgNWMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxLTAuNDQ4IDEtMSAxLTEtMC40NDgtMS0xek01LjE3NiAxMi42bC0wLjM1MS0xLjIgNi44MjgtMiAwLjM1MSAxLjItNi44MjggMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TbGVlcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNmM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOC04IDMuNTgyLTggOCAzLjU4MiA4IDggOHpNOCAxLjVjMy41OSAwIDYuNSAyLjkxIDYuNSA2LjVzLTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNSAyLjkxLTYuNSA2LjUtNi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDEwLjVjMCAxLjM4MS0wLjg5NSAyLjUtMiAyLjVzLTItMS4xMTktMi0yLjVjMC0xLjM4MSAwLjg5NS0yLjUgMi0yLjVzMiAxLjExOSAyIDIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNS4zMTNjLTAuMTI4IDAtMC4yNTYtMC4wNDktMC4zNTQtMC4xNDYtMC4zMDItMC4zMDItMC45OTEtMC4zMDItMS4yOTMgMC0wLjE5NSAwLjE5NS0wLjUxMiAwLjE5NS0wLjcwNyAwcy0wLjE5NS0wLjUxMiAwLTAuNzA3YzAuNjk2LTAuNjk2IDIuMDExLTAuNjk2IDIuNzA3IDAgMC4xOTUgMC4xOTUgMC4xOTUgMC41MTIgMCAwLjcwNy0wLjA5OCAwLjA5OC0wLjIyNiAwLjE0Ni0wLjM1NCAwLjE0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDUuMzEzYy0wLjEyOCAwLTAuMjU2LTAuMDQ5LTAuMzU0LTAuMTQ2LTAuMzAyLTAuMzAyLTAuOTkxLTAuMzAyLTEuMjkzIDAtMC4xOTUgMC4xOTUtMC41MTIgMC4xOTUtMC43MDcgMHMtMC4xOTUtMC41MTIgMC0wLjcwN2MwLjY5Ni0wLjY5NiAyLjAxMS0wLjY5NiAyLjcwNyAwIDAuMTk1IDAuMTk1IDAuMTk1IDAuNTEyIDAgMC43MDctMC4wOTggMC4wOTgtMC4yMjYgMC4xNDYtMC4zNTQgMC4xNDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU2xlZXB5MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTQuODU0IDUuMTY2Yy0wLjE5NSAwLjE5NS0wLjUxMiAwLjE5NS0wLjcwNyAwcy0wLjE5NS0wLjUxMiAwLTAuNzA3YzAuNjk2LTAuNjk2IDIuMDExLTAuNjk2IDIuNzA3IDAgMC4xOTUgMC4xOTUgMC4xOTUgMC41MTIgMCAwLjcwNy0wLjA5OCAwLjA5OC0wLjIyNiAwLjE0Ni0wLjM1NCAwLjE0NnMtMC4yNTYtMC4wNDktMC4zNTQtMC4xNDZjLTAuMzAyLTAuMzAyLTAuOTkxLTAuMzAyLTEuMjkzIDB6TTggMTNjLTEuMTA1IDAtMi0xLjExOS0yLTIuNXMwLjg5NS0yLjUgMi0yLjUgMiAxLjExOSAyIDIuNS0wLjg5NSAyLjUtMiAyLjV6TTExLjg1NCA1LjE2NmMtMC4wOTggMC4wOTgtMC4yMjYgMC4xNDYtMC4zNTQgMC4xNDZzLTAuMjU2LTAuMDQ5LTAuMzU0LTAuMTQ2Yy0wLjMwMi0wLjMwMi0wLjk5MS0wLjMwMi0xLjI5MyAwLTAuMTk1IDAuMTk1LTAuNTEyIDAuMTk1LTAuNzA3IDBzLTAuMTk1LTAuNTEyIDAtMC43MDdjMC42OTYtMC42OTYgMi4wMTEtMC42OTYgMi43MDcgMCAwLjE5NSAwLjE5NSAwLjE5NSAwLjUxMiAwIDAuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZydXN0cmF0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43MjQgNC40MjhjLTAuNTQzLTAuMjcxLTEuMDgwLTAuNDA3LTEuMTAyLTAuNDEzLTAuMjY4LTAuMDY3LTAuNTM5IDAuMDk2LTAuNjA2IDAuMzY0czAuMDk2IDAuNTM5IDAuMzY0IDAuNjA2YzAuMjc1IDAuMDcwIDAuNjAyIDAuMTg5IDAuODkgMC4zMzQtMC4xNjYgMC4xNzktMC4yNjggMC40MTgtMC4yNjggMC42ODEgMCAwLjU1MiAwLjQ0OCAxIDEgMXMxLTAuNDQ4IDEtMWMwLTAuMDE4LTAuMDAxLTAuMDM2LTAuMDAyLTAuMDU0LTAuMDMyLTAuNzQxLTAuNzA2LTEuMjM0LTEuMjc1LTEuNTE4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMy42OTUgMTIuODdjMC4xNjcgMC4wODMgMC4zNTYgMC4xMyAwLjU1NSAwLjEzaDcuNWMwLjE5OSAwIDAuMzg3LTAuMDQ3IDAuNTU1LTAuMTMtMS4xNDcgMS4wMTQtMi42NTQgMS42My00LjMwNSAxLjYzcy0zLjE1OC0wLjYxNi00LjMwNS0xLjYzek00IDExLjc1di0xLjVjMC0wLjEzNiAwLjExNC0wLjI1IDAuMjUtMC4yNWgxLjc1djJoLTEuNzVjLTAuMTM2IDAtMC4yNS0wLjExNC0wLjI1LTAuMjV6TTcgMTJ2LTJoMnYyaC0yek0xMCAxMnYtMmgxLjc1YzAuMTM2IDAgMC4yNSAwLjExNCAwLjI1IDAuMjV2MS41YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTEuNzV6TTEyLjg3IDEyLjMwNWMwLjA4My0wLjE2NyAwLjEzLTAuMzU2IDAuMTMtMC41NTV2LTEuNWMwLTAuNjg5LTAuNTYxLTEuMjUtMS4yNS0xLjI1aC03LjVjLTAuNjg5IDAtMS4yNSAwLjU2MS0xLjI1IDEuMjV2MS41YzAgMC4xOTkgMC4wNDcgMC4zODcgMC4xMyAwLjU1NS0xLjAxNC0xLjE0Ny0xLjYzLTIuNjU0LTEuNjMtNC4zMDUgMC0zLjU5IDIuOTEtNi41IDYuNS02LjVzNi41IDIuOTEgNi41IDYuNWMwIDEuNjUxLTAuNjE2IDMuMTU4LTEuNjMgNC4zMDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzc5IDQuMDE1Yy0wLjAyMyAwLjAwNi0wLjU1OSAwLjE0MS0xLjEwMiAwLjQxMy0wLjU2OCAwLjI4NC0xLjI0MyAwLjc3Ni0xLjI3NSAxLjUxOC0wLjAwMSAwLjAxOC0wLjAwMiAwLjAzNi0wLjAwMiAwLjA1NCAwIDAuNTUyIDAuNDQ4IDEgMSAxczEtMC40NDggMS0xYzAtMC4yNjMtMC4xMDItMC41MDMtMC4yNjgtMC42ODEgMC4yODgtMC4xNDQgMC42MTQtMC4yNjQgMC44OS0wLjMzNCAwLjI2OC0wLjA2NyAwLjQzMS0wLjMzOCAwLjM2NC0wLjYwNnMtMC4zMzgtMC40MzEtMC42MDYtMC4zNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRnJ1c3RyYXRlZDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC4yNXYxLjVjMCAwLjEzNiAwLjExNCAwLjI1IDAuMjUgMC4yNWgxLjc1di0yaC0xLjc1Yy0wLjEzNiAwLTAuMjUgMC4xMTQtMC4yNSAwLjI1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTBoMnYyaC0ydi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjc1IDEwaC0xLjc1djJoMS43NWMwLjEzNiAwIDAuMjUtMC4xMTQgMC4yNS0wLjI1di0xLjVjMC0wLjEzNi0wLjExNC0wLjI1LTAuMjUtMC4yNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTkuMDAyIDUuOTQ2YzAuMDMyLTAuNzQxIDAuNzA2LTEuMjM0IDEuMjc1LTEuNTE4IDAuNTQzLTAuMjcxIDEuMDgwLTAuNDA3IDEuMTAyLTAuNDEzIDAuMjY4LTAuMDY3IDAuNTM5IDAuMDk2IDAuNjA2IDAuMzY0cy0wLjA5NiAwLjUzOS0wLjM2NCAwLjYwNmMtMC4yNzUgMC4wNzAtMC42MDIgMC4xODktMC44OSAwLjMzNCAwLjE2NiAwLjE3OSAwLjI2OCAwLjQxOCAwLjI2OCAwLjY4MSAwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMWMwLTAuMDE4IDAuMDAxLTAuMDM2IDAuMDAyLTAuMDU0ek00LjAxNSA0LjM3OWMwLjA2Ny0wLjI2OCAwLjMzOC0wLjQzMSAwLjYwNi0wLjM2NCAwLjAyMyAwLjAwNiAwLjU1OSAwLjE0MSAxLjEwMiAwLjQxMyAwLjU2OCAwLjI4NCAxLjI0MyAwLjc3NiAxLjI3NSAxLjUxOCAwLjAwMSAwLjAxOCAwLjAwMiAwLjAzNiAwLjAwMiAwLjA1NCAwIDAuNTUyLTAuNDQ4IDEtMSAxcy0xLTAuNDQ4LTEtMWMwLTAuMjYzIDAuMTAyLTAuNTAzIDAuMjY4LTAuNjgxLTAuMjg4LTAuMTQ0LTAuNjE0LTAuMjY0LTAuODktMC4zMzQtMC4yNjgtMC4wNjctMC40MzEtMC4zMzgtMC4zNjQtMC42MDZ6TTEzIDExLjc1YzAgMC42ODktMC41NjEgMS4yNS0xLjI1IDEuMjVoLTcuNWMtMC42ODkgMC0xLjI1LTAuNTYxLTEuMjUtMS4yNXYtMS41YzAtMC42ODkgMC41NjEtMS4yNSAxLjI1LTEuMjVoNy41YzAuNjg5IDAgMS4yNSAwLjU2MSAxLjI1IDEuMjV2MS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNyeWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek04IDEuNWMzLjU5IDAgNi41IDIuOTEgNi41IDYuNXMtMi45MSA2LjUtNi41IDYuNS02LjUtMi45MS02LjUtNi41IDIuOTEtNi41IDYuNS02LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA2aC0yYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDJjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDZoLTJjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjVoMmMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTMuMzc1Yy0wLjEyOCAwLTAuMjU2LTAuMDQ5LTAuMzU0LTAuMTQ2LTAuMDcyLTAuMDcyLTAuNDYtMC4yMjktMS4xNDYtMC4yMjlzLTEuMDc1IDAuMTU3LTEuMTQ2IDAuMjI5Yy0wLjE5NSAwLjE5NS0wLjUxMiAwLjE5NS0wLjcwNyAwcy0wLjE5NS0wLjUxMiAwLTAuNzA3YzAuNDcxLTAuNDcxIDEuNDUzLTAuNTIxIDEuODU0LTAuNTIxczEuMzgzIDAuMDUxIDEuODU0IDAuNTIxYzAuMTk1IDAuMTk1IDAuMTk1IDAuNTEyIDAgMC43MDctMC4wOTggMC4wOTgtMC4yMjYgMC4xNDYtMC4zNTQgMC4xNDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA5Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41di0xYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2MWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjUgMTJjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTFjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNXYxYzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDljLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTFjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNXYxYzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDEyYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41di0xYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2MWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNyeWluZzIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek01IDExLjVjMCAwLjI3Ni0wLjIyNCAwLjUtMC41IDAuNXMtMC41LTAuMjI0LTAuNS0wLjV2LTFjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNXYxek01IDguNWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41cy0wLjUtMC4yMjQtMC41LTAuNXYtMWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41czAuNSAwLjIyNCAwLjUgMC41djF6TTUuNSA2aC0yYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDJjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjV6TTkuODU0IDEzLjIyOWMtMC4wOTggMC4wOTgtMC4yMjYgMC4xNDYtMC4zNTQgMC4xNDZzLTAuMjU2LTAuMDQ5LTAuMzU0LTAuMTQ2Yy0wLjA3Mi0wLjA3Mi0wLjQ2LTAuMjI5LTEuMTQ2LTAuMjI5cy0xLjA3NSAwLjE1Ny0xLjE0NiAwLjIyOWMtMC4xOTUgMC4xOTUtMC41MTIgMC4xOTUtMC43MDcgMHMtMC4xOTUtMC41MTIgMC0wLjcwN2MwLjQ3MS0wLjQ3MSAxLjQ1My0wLjUyMSAxLjg1NC0wLjUyMXMxLjM4MyAwLjA1MSAxLjg1NCAwLjUyMWMwLjE5NSAwLjE5NSAwLjE5NSAwLjUxMiAwIDAuNzA3ek0xMiAxMS41YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjVzLTAuNS0wLjIyNC0wLjUtMC41di0xYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2MXpNMTIgOC41YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjVzLTAuNS0wLjIyNC0wLjUtMC41di0xYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2MXpNMTIuNSA2aC0yYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDJjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNSA5LjV2LTIuNWMwLTAuODI3LTAuNjczLTEuNS0xLjUtMS41LTAuMjY3IDAtMC41MTggMC4wNzAtMC43MzYgMC4xOTMtMC4yNjctMC40MTctMC43MzQtMC42OTMtMS4yNjQtMC42OTMtMC4zODQgMC0wLjczNCAwLjE0NS0xIDAuMzgzLTAuMjY2LTAuMjM4LTAuNjE2LTAuMzgzLTEtMC4zODMtMC4xNzUgMC0wLjM0NCAwLjAzMC0wLjUgMC4wODZ2LTMuNTg2YzAtMC44MjctMC42NzMtMS41LTEuNS0xLjVzLTEuNSAwLjY3My0xLjUgMS41djYuMTY3bC0yLjc1LTEuNDY2Yy0wLjIyNy0wLjEzMS0wLjQ4Ni0wLjIwMS0wLjc1LTAuMjAxLTAuODI3IDAtMS41IDAuNjczLTEuNSAxLjUgMCAwLjQxMiAwLjE2NCAwLjc5NiAwLjQ2MSAxLjA4MiAwLjAwNCAwLjAwNCAwLjAwOCAwLjAwNyAwLjAxMiAwLjAxMWwzLjczNyAzLjQwN2gtMC43MWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXYzYzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMTBjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtM2MwLTAuMjc2LTAuMjI0LTAuNS0wLjUtMC41aC0wLjY5MWwxLjEzOC0yLjI3NmMwLjAzNS0wLjA2OSAwLjA1My0wLjE0NiAwLjA1My0wLjIyNHpNMTQgMTMuNWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41cy0wLjUtMC4yMjQtMC41LTAuNSAwLjIyNC0wLjUgMC41LTAuNSAwLjUgMC4yMjQgMC41IDAuNXpNMTQgOS4zODJsLTEuMzA5IDIuNjE4aC01Ljk5N2wtNC41NDQtNC4xNDNjLTAuMDk3LTAuMDk1LTAuMTUtMC4yMjEtMC4xNS0wLjM1NyAwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41IDAuMDg1IDAgMC4xNjYgMC4wMjAgMC4yMzkgMC4wNjEgMC4wMDggMC4wMDUgMC4wMTcgMC4wMTAgMC4wMjUgMC4wMTRsMy41IDEuODY2YzAuMTU1IDAuMDgzIDAuMzQyIDAuMDc4IDAuNDkyLTAuMDEyczAuMjQzLTAuMjUzIDAuMjQzLTAuNDI5di03YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2NWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41czAuNS0wLjIyNCAwLjUtMC41YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNXMwLjUtMC4yMjQgMC41LTAuNWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41czAuNSAwLjIyNCAwLjUgMC41djAuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41czAuNS0wLjIyNCAwLjUtMC41YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2Mi4zODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTVoMi41YzAuODI3IDAgMS41LTAuNjczIDEuNS0xLjUgMC0wLjI2Ny0wLjA3MC0wLjUxOC0wLjE5My0wLjczNiAwLjQxNy0wLjI2NyAwLjY5My0wLjczNCAwLjY5My0xLjI2NCAwLTAuMzg0LTAuMTQ1LTAuNzM0LTAuMzgzLTEgMC4yMzgtMC4yNjYgMC4zODMtMC42MTYgMC4zODMtMSAwLTAuMTc1LTAuMDMwLTAuMzQ0LTAuMDg2LTAuNWgzLjU4NmMwLjgyNyAwIDEuNS0wLjY3MyAxLjUtMS41cy0wLjY3My0xLjUtMS41LTEuNWgtNi4xNjdsMS40NjYtMi43NWMwLjEzMS0wLjIyNyAwLjIwMS0wLjQ4NiAwLjIwMS0wLjc1IDAtMC44MjctMC42NzMtMS41LTEuNS0xLjUtMC40MTIgMC0wLjc5NiAwLjE2NC0xLjA4MiAwLjQ2MS0wLjAwNCAwLjAwNC0wLjAwNyAwLjAwOC0wLjAxMSAwLjAxMmwtMy40MDcgMy43Mzd2LTAuNzFjMC0wLjI3Ni0wLjIyNC0wLjUtMC41LTAuNWgtM2MtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXYxMGMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDNjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtMC42OTFsMi4yNzYgMS4xMzhjMC4wNjkgMC4wMzUgMC4xNDYgMC4wNTMgMC4yMjQgMC4wNTN6TTIuNSAxNGMtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXMwLjIyNC0wLjUgMC41LTAuNSAwLjUgMC4yMjQgMC41IDAuNS0wLjIyNCAwLjUtMC41IDAuNXpNNi42MTggMTRsLTIuNjE4LTEuMzA5di01Ljk5N2w0LjE0My00LjU0NGMwLjA5NS0wLjA5NyAwLjIyMS0wLjE1IDAuMzU3LTAuMTUgMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNSAwIDAuMDg1LTAuMDIwIDAuMTY2LTAuMDYxIDAuMjM5LTAuMDA1IDAuMDA4LTAuMDEwIDAuMDE3LTAuMDE0IDAuMDI1bC0xLjg2NiAzLjVjLTAuMDgzIDAuMTU1LTAuMDc4IDAuMzQyIDAuMDEzIDAuNDkyczAuMjUzIDAuMjQzIDAuNDI5IDAuMjQzaDdjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjVoLTVjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjVjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjVoLTAuNWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXMwLjIyNCAwLjUgMC41IDAuNWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNWgtMi4zODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUG9pbnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDYuNXYyLjVjMCAwLjgyNy0wLjY3MyAxLjUtMS41IDEuNS0wLjI2NyAwLTAuNTE4LTAuMDcwLTAuNzM2LTAuMTkzLTAuMjY3IDAuNDE3LTAuNzM0IDAuNjkzLTEuMjY0IDAuNjkzLTAuMzg0IDAtMC43MzQtMC4xNDUtMS0wLjM4My0wLjI2NiAwLjIzOC0wLjYxNiAwLjM4My0xIDAuMzgzLTAuMTc1IDAtMC4zNDQtMC4wMzAtMC41LTAuMDg2djMuNTg2YzAgMC44MjctMC42NzMgMS41LTEuNSAxLjVzLTEuNS0wLjY3My0xLjUtMS41di02LjE2N2wtMi43NSAxLjQ2NmMtMC4yMjcgMC4xMzEtMC40ODYgMC4yMDEtMC43NSAwLjIwMS0wLjgyNyAwLTEuNS0wLjY3My0xLjUtMS41IDAtMC40MTIgMC4xNjQtMC43OTYgMC40NjEtMS4wODIgMC4wMDQtMC4wMDQgMC4wMDgtMC4wMDcgMC4wMTItMC4wMTFsMy43MzctMy40MDdoLTAuNzFjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTNjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNWgxMGMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41djNjMCAwLjI3Ni0wLjIyNCAwLjUtMC41IDAuNWgtMC42OTFsMS4xMzggMi4yNzZjMC4wMzUgMC4wNjkgMC4wNTMgMC4xNDYgMC4wNTMgMC4yMjR6TTE0IDIuNWMwLTAuMjc2LTAuMjI0LTAuNS0wLjUtMC41cy0wLjUgMC4yMjQtMC41IDAuNSAwLjIyNCAwLjUgMC41IDAuNSAwLjUtMC4yMjQgMC41LTAuNXpNMTQgNi42MThsLTEuMzA5LTIuNjE4aC01Ljk5N2wtNC41NDQgNC4xNDNjLTAuMDk3IDAuMDk1LTAuMTUgMC4yMjEtMC4xNSAwLjM1NyAwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41IDAuMDg1IDAgMC4xNjYtMC4wMjAgMC4yMzktMC4wNjEgMC4wMDgtMC4wMDUgMC4wMTctMC4wMTAgMC4wMjUtMC4wMTRsMy41LTEuODY2YzAuMTU1LTAuMDgzIDAuMzQyLTAuMDc4IDAuNDkyIDAuMDEzczAuMjQzIDAuMjUzIDAuMjQzIDAuNDI5djdjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNXMwLjUtMC4yMjQgMC41LTAuNXYtNWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41czAuNSAwLjIyNCAwLjUgMC41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVzMC41LTAuMjI0IDAuNS0wLjVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41czAuNS0wLjIyNCAwLjUtMC41di0wLjVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41czAuNS0wLjIyNCAwLjUtMC41di0yLjM4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Qb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDE1aC0yLjVjLTAuODI3IDAtMS41LTAuNjczLTEuNS0xLjUgMC0wLjI2NyAwLjA3MC0wLjUxOCAwLjE5My0wLjczNi0wLjQxNy0wLjI2Ny0wLjY5My0wLjczNC0wLjY5My0xLjI2NCAwLTAuMzg0IDAuMTQ1LTAuNzM0IDAuMzgzLTEtMC4yMzgtMC4yNjYtMC4zODMtMC42MTYtMC4zODMtMSAwLTAuMTc1IDAuMDMwLTAuMzQ0IDAuMDg2LTAuNWgtMy41ODZjLTAuODI3IDAtMS41LTAuNjczLTEuNS0xLjVzMC42NzMtMS41IDEuNS0xLjVoNi4xNjdsLTEuNDY2LTIuNzVjLTAuMTMxLTAuMjI3LTAuMjAxLTAuNDg2LTAuMjAxLTAuNzUgMC0wLjgyNyAwLjY3My0xLjUgMS41LTEuNSAwLjQxMiAwIDAuNzk2IDAuMTY0IDEuMDgyIDAuNDYxIDAuMDA0IDAuMDA0IDAuMDA3IDAuMDA4IDAuMDExIDAuMDEybDMuNDA3IDMuNzM3di0wLjcxYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVoM2MwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41djEwYzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjVoLTNjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTAuNjkxbC0yLjI3NiAxLjEzOGMtMC4wNjkgMC4wMzUtMC4xNDYgMC4wNTMtMC4yMjQgMC4wNTN6TTEzLjUgMTRjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXMtMC4yMjQtMC41LTAuNS0wLjUtMC41IDAuMjI0LTAuNSAwLjUgMC4yMjQgMC41IDAuNSAwLjV6TTkuMzgyIDE0bDIuNjE4LTEuMzA5di01Ljk5N2wtNC4xNDMtNC41NDRjLTAuMDk1LTAuMDk3LTAuMjIxLTAuMTUtMC4zNTctMC4xNS0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41IDAgMC4wODUgMC4wMjAgMC4xNjYgMC4wNjEgMC4yMzkgMC4wMDUgMC4wMDggMC4wMTAgMC4wMTcgMC4wMTQgMC4wMjVsMS44NjYgMy41YzAuMDgzIDAuMTU1IDAuMDc4IDAuMzQyLTAuMDEyIDAuNDkycy0wLjI1MyAwLjI0My0wLjQyOSAwLjI0M2gtN2MtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXMwLjIyNCAwLjUgMC41IDAuNWg1YzAuMjc2IDAgMC41IDAuMjI0IDAuNSAwLjVzLTAuMjI0IDAuNS0wLjUgMC41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41YzAuMjc2IDAgMC41IDAuMjI0IDAuNSAwLjVzLTAuMjI0IDAuNS0wLjUgMC41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDAuNWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXMwLjIyNCAwLjUgMC41IDAuNWgyLjM4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1XYXJuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMS40NWw2LjcwNSAxMy4zNjNoLTEzLjQwOWw2LjcwNS0xMy4zNjN6TTggMGMtMC4zNDUgMC0wLjY5IDAuMjMzLTAuOTUxIDAuNjk4bC02LjgyOSAxMy42MTFjLTAuNTIzIDAuOTMtMC4wNzggMS42OTEgMC45ODkgMS42OTFoMTMuNTgzYzEuMDY3IDAgMS41MTItMC43NjEgMC45ODktMS42OTFoMGwtNi44MjktMTMuNjExYy0wLjI2Mi0wLjQ2NS0wLjYwNi0wLjY5OC0wLjk1MS0wLjY5OHYwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTNjMCAwLjU1Mi0wLjQ0OCAxLTEgMXMtMS0wLjQ0OC0xLTFjMC0wLjU1MiAwLjQ0OC0xIDEtMXMxIDAuNDQ4IDEgMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExYy0wLjU1MiAwLTEtMC40NDgtMS0xdi0zYzAtMC41NTIgMC40NDgtMSAxLTFzMSAwLjQ0OCAxIDF2M2MwIDAuNTUyLTAuNDQ4IDEtMSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU5vdGlmaWNhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEuNWMtMS43MzYgMC0zLjM2OSAwLjY3Ni00LjU5NiAxLjkwNHMtMS45MDQgMi44Ni0xLjkwNCA0LjU5NmMwIDEuNzM2IDAuNjc2IDMuMzY5IDEuOTA0IDQuNTk2czIuODYgMS45MDQgNC41OTYgMS45MDRjMS43MzYgMCAzLjM2OS0wLjY3NiA0LjU5Ni0xLjkwNHMxLjkwNC0yLjg2IDEuOTA0LTQuNTk2YzAtMS43MzYtMC42NzYtMy4zNjktMS45MDQtNC41OTZzLTIuODYtMS45MDQtNC41OTYtMS45MDR6TTggMHYwYzQuNDE4IDAgOCAzLjU4MiA4IDhzLTMuNTgyIDgtOCA4Yy00LjQxOCAwLTgtMy41ODItOC04czMuNTgyLTggOC04ek03IDExaDJ2MmgtMnpNNyAzaDJ2NmgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1RdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExaDJ2MmgtMnpNMTEgNGMwLjU1MiAwIDEgMC40NDggMSAxdjNsLTMgMmgtMnYtMWwzLTJ2LTFoLTV2LTJoNnpNOCAxLjVjLTEuNzM2IDAtMy4zNjkgMC42NzYtNC41OTYgMS45MDRzLTEuOTA0IDIuODYtMS45MDQgNC41OTZjMCAxLjczNiAwLjY3NiAzLjM2OSAxLjkwNCA0LjU5NnMyLjg2IDEuOTA0IDQuNTk2IDEuOTA0YzEuNzM2IDAgMy4zNjktMC42NzYgNC41OTYtMS45MDRzMS45MDQtMi44NiAxLjkwNC00LjU5NmMwLTEuNzM2LTAuNjc2LTMuMzY5LTEuOTA0LTQuNTk2cy0yLjg2LTEuOTA0LTQuNTk2LTEuOTA0ek04IDB2MGM0LjQxOCAwIDggMy41ODIgOCA4cy0zLjU4MiA4LTggOGMtNC40MTggMC04LTMuNTgyLTgtOHMzLjU4Mi04IDgtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgNmgtNS41di01LjVjMC0wLjI3Ni0wLjIyNC0wLjUtMC41LTAuNWgtM2MtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXY1LjVoLTUuNWMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXYzYzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoNS41djUuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDNjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtNS41aDUuNWMwLjI3NiAwIDAuNS0wLjIyNCAwLjUtMC41di0zYzAtMC4yNzYtMC4yMjQtMC41LTAuNS0wLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2LjV2M2MwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDE1YzAuMjc2IDAgMC41LTAuMjI0IDAuNS0wLjV2LTNjMC0wLjI3Ni0wLjIyNC0wLjUtMC41LTAuNWgtMTVjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDQuNzVjMC0wLjQxMiAwLjMzOC0wLjc1IDAuNzUtMC43NWgwLjVjMC40MTIgMCAwLjc1IDAuMzM4IDAuNzUgMC43NXYwLjVjMCAwLjQxMi0wLjMzOCAwLjc1LTAuNzUgMC43NWgtMC41Yy0wLjQxMiAwLTAuNzUtMC4zMzgtMC43NS0wLjc1di0wLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTJoLTR2LTFoMXYtM2gtMXYtMWgzdjRoMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTggMTQuNWMtMy41OSAwLTYuNS0yLjkxLTYuNS02LjVzMi45MS02LjUgNi41LTYuNSA2LjUgMi45MSA2LjUgNi41LTIuOTEgNi41LTYuNSA2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2FuY2VsQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxNC41Yy0zLjU5IDAtNi41LTIuOTEtNi41LTYuNXMyLjkxLTYuNSA2LjUtNi41IDYuNSAyLjkxIDYuNSA2LjUtMi45MSA2LjUtNi41IDYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDRsLTIuNSAyLjUtMi41LTIuNS0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDIuNS0yLjUgMi41IDIuNSAxLjUtMS41LTIuNS0yLjUgMi41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1CbG9ja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjY1NyAyLjM0M2MtMS41MTEtMS41MTEtMy41Mi0yLjM0My01LjY1Ny0yLjM0M3MtNC4xNDYgMC44MzItNS42NTcgMi4zNDNjLTEuNTExIDEuNTExLTIuMzQzIDMuNTItMi4zNDMgNS42NTdzMC44MzIgNC4xNDYgMi4zNDMgNS42NTdjMS41MTEgMS41MTEgMy41MiAyLjM0MyA1LjY1NyAyLjM0M3M0LjE0Ni0wLjgzMiA1LjY1Ny0yLjM0M2MxLjUxMS0xLjUxMSAyLjM0My0zLjUyIDIuMzQzLTUuNjU3cy0wLjgzMi00LjE0Ni0yLjM0My01LjY1N3pNMTQgOGMwIDEuMjk0LTAuNDEyIDIuNDk0LTEuMTExIDMuNDc1bC04LjM2NC04LjM2NGMwLjk4MS0wLjY5OSAyLjE4MS0xLjExMSAzLjQ3NS0xLjExMSAzLjMwOCAwIDYgMi42OTIgNiA2ek0yIDhjMC0xLjI5NCAwLjQxMi0yLjQ5NCAxLjExMS0zLjQ3NWw4LjM2NCA4LjM2NGMtMC45ODEgMC42OTktMi4xODEgMS4xMTEtMy40NzUgMS4xMTEtMy4zMDggMC02LTIuNjkyLTYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Dcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44NTQgMTIuODU0Yy0wLTAtMC0wLTAtMGwtNC44NTQtNC44NTQgNC44NTQtNC44NTRjMC0wIDAtMCAwLTAgMC4wNTItMC4wNTIgMC4wOTAtMC4xMTMgMC4xMTQtMC4xNzggMC4wNjYtMC4xNzggMC4wMjgtMC4zODYtMC4xMTQtMC41MjlsLTIuMjkzLTIuMjkzYy0wLjE0My0wLjE0My0wLjM1MS0wLjE4MS0wLjUyOS0wLjExNC0wLjA2NSAwLjAyNC0wLjEyNiAwLjA2Mi0wLjE3OCAwLjExNCAwIDAtMCAwLTAgMGwtNC44NTQgNC44NTQtNC44NTQtNC44NTRjLTAtMC0wLTAtMC0wLTAuMDUyLTAuMDUyLTAuMTEzLTAuMDkwLTAuMTc4LTAuMTE0LTAuMTc4LTAuMDY2LTAuMzg2LTAuMDI5LTAuNTI5IDAuMTE0bC0yLjI5MyAyLjI5M2MtMC4xNDMgMC4xNDMtMC4xODEgMC4zNTEtMC4xMTQgMC41MjkgMC4wMjQgMC4wNjUgMC4wNjIgMC4xMjYgMC4xMTQgMC4xNzggMCAwIDAgMCAwIDBsNC44NTQgNC44NTQtNC44NTQgNC44NTRjLTAgMC0wIDAtMCAwLTAuMDUyIDAuMDUyLTAuMDkwIDAuMTEzLTAuMTE0IDAuMTc4LTAuMDY2IDAuMTc4LTAuMDI5IDAuMzg2IDAuMTE0IDAuNTI5bDIuMjkzIDIuMjkzYzAuMTQzIDAuMTQzIDAuMzUxIDAuMTgxIDAuNTI5IDAuMTE0IDAuMDY1LTAuMDI0IDAuMTI2LTAuMDYyIDAuMTc4LTAuMTE0IDAtMCAwLTAgMC0wbDQuODU0LTQuODU0IDQuODU0IDQuODU0YzAgMCAwIDAgMCAwIDAuMDUyIDAuMDUyIDAuMTEzIDAuMDkwIDAuMTc4IDAuMTE0IDAuMTc4IDAuMDY2IDAuMzg2IDAuMDI5IDAuNTI5LTAuMTE0bDIuMjkzLTIuMjkzYzAuMTQzLTAuMTQzIDAuMTgxLTAuMzUxIDAuMTE0LTAuNTI5LTAuMDI0LTAuMDY1LTAuMDYyLTAuMTI2LTAuMTE0LTAuMTc4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNoZWNrbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDJsLTcuNSA3LjUtMy41LTMuNS0yLjUgMi41IDYgNiAxMC0xMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1DaGVja21hcmsyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjEgMTQuMzM5bC02LjIxNy02LjExOSAzLjA4NC0zLjAzNSAzLjEzMyAzLjA4MyA2LjcxMy02LjYwNyAzLjA4NCAzLjAzNS05Ljc5NyA5LjY0M3pNMS42ODYgOC4yMmw0LjUyNCA0LjQ1MyA4LjEwNC03Ljk3Ni0xLjM5MS0xLjM2OS02LjcxMyA2LjYwNy0zLjEzMy0zLjA4My0xLjM5MSAxLjM2OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TcGVsbENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNGgydjNoMXYtNmMwLTAuNTUtMC40NS0xLTEtMWgtMmMtMC41NSAwLTEgMC40NS0xIDF2Nmgxdi0zek0yIDFoMnYyaC0ydi0yek0xNSAxdi0xaC0zYy0wLjU1IDAtMSAwLjQ1LTEgMXY1YzAgMC41NSAwLjQ1IDEgMSAxaDN2LTFoLTN2LTVoM3pNMTAgMi41di0xLjVjMC0wLjU1LTAuNDUtMS0xLTFoLTN2N2gzYzAuNTUgMCAxLTAuNDUgMS0xdi0xLjVjMC0wLjU1LTAuMTM3LTEtMC42ODgtMSAwLjU1IDAgMC42ODgtMC40NSAwLjY4OC0xek05IDZoLTJ2LTJoMnYyek05IDNoLTJ2LTJoMnYyek0xMyA5bC02LjUgNy0zLjUtNC41IDEuMjgxLTEuMDk0IDIuMjE5IDIuMzEzIDUuNS00LjcxOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhoLTV2LTJoNXYtMmwzIDMtMyAzek0xNiAwdjEzbC02IDN2LTNoLTZ2LTRoMXYzaDV2LTlsNC0yaC05djRoLTF2LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMHYtMmgtNXYtMmg1di0ybDMgM3pNMTEgOXY0aC01djNsLTYtM3YtMTNoMTF2NWgtMXYtNGgtOGw0IDJ2OWg0di0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBsYXkyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxNC41Yy0zLjU5IDAtNi41LTIuOTEtNi41LTYuNXMyLjkxLTYuNSA2LjUtNi41IDYuNSAyLjkxIDYuNSA2LjUtMi45MSA2LjUtNi41IDYuNXpNNiA0LjVsNiAzLjUtNiAzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek04IDE0LjVjLTMuNTkgMC02LjUtMi45MS02LjUtNi41czIuOTEtNi41IDYuNS02LjUgNi41IDIuOTEgNi41IDYuNS0yLjkxIDYuNS02LjUgNi41ek01IDVoMnY2aC0yek05IDVoMnY2aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek04IDE0LjVjLTMuNTkgMC02LjUtMi45MS02LjUtNi41czIuOTEtNi41IDYuNS02LjUgNi41IDIuOTEgNi41IDYuNS0yLjkxIDYuNS02LjUgNi41ek01IDVoNnY2aC02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVByZXZpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxNC41Yy0zLjU5IDAtNi41LTIuOTEtNi41LTYuNXMyLjkxLTYuNSA2LjUtNi41IDYuNSAyLjkxIDYuNSA2LjUtMi45MSA2LjUtNi41IDYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDhsNC0zdjZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDJ2NmgtMnYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1OZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGM0LjQxOCAwIDggMy41ODIgOCA4cy0zLjU4MiA4LTggOC04LTMuNTgyLTgtOCAzLjU4Mi04IDgtOHpNOCAxNC41YzMuNTkgMCA2LjUtMi45MSA2LjUtNi41cy0yLjkxLTYuNS02LjUtNi41LTYuNSAyLjkxLTYuNSA2LjUgMi45MSA2LjUgNi41IDYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDhsLTQtM3Y2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDVoLTJ2Nmgydi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjNC40MTggMCA4LTMuNTgyIDgtOHMtMy41ODItOC04LTgtOCAzLjU4Mi04IDggMy41ODIgOCA4IDh6TTggMS41YzMuNTkgMCA2LjUgMi45MSA2LjUgNi41cy0yLjkxIDYuNS02LjUgNi41LTYuNS0yLjkxLTYuNS02LjUgMi45MS02LjUgNi41LTYuNXpNMTEgMTAuNWwtMy41LTIuNSAzLjUtMi41ek03IDEwLjVsLTMuNS0yLjUgMy41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Gb3J3YXJkMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTggMTQuNWMtMy41OSAwLTYuNS0yLjkxLTYuNS02LjVzMi45MS02LjUgNi41LTYuNSA2LjUgMi45MSA2LjUgNi41LTIuOTEgNi41LTYuNSA2LjV6TTUgNS41bDMuNSAyLjUtMy41IDIuNXpNOSA1LjVsMy41IDIuNS0zLjUgMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBsYXkzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmwxMCA2LTEwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGF1c2UyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmg1djEyaC01ek05IDJoNXYxMmgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdG9wMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJoMTJ2MTJoLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJhY2t3YXJkMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDIuNXY1bDUtNXYxMWwtNS01djVsLTUuNS01LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRm9yd2FyZDMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMy41di01bC01IDV2LTExbDUgNXYtNWw1LjUgNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZpcnN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTR2LTEyaDJ2NS41bDUtNXY1bDUtNXYxMWwtNS01djVsLTUtNXY1LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGFzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAydjEyaC0ydi01LjVsLTUgNXYtNWwtNSA1di0xMWw1IDV2LTVsNSA1di01LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUHJldmlvdXMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTR2LTEyaDJ2NS41bDUtNXYxMWwtNS01djUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1OZXh0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAydjEyaC0ydi01LjVsLTUgNXYtMTFsNSA1di01LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMmgxNnYyaC0xNnpNOCAybDggOGgtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVm9sdW1lSGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNyAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45MDcgMTQuNDA3Yy0wLjE5MiAwLTAuMzg0LTAuMDczLTAuNTMtMC4yMi0wLjI5My0wLjI5My0wLjI5My0wLjc2OCAwLTEuMDYxIDEuMzY5LTEuMzY5IDIuMTIzLTMuMTkgMi4xMjMtNS4xMjdzLTAuNzU0LTMuNzU3LTIuMTIzLTUuMTI3Yy0wLjI5My0wLjI5My0wLjI5My0wLjc2OCAwLTEuMDYxczAuNzY4LTAuMjkzIDEuMDYxIDBjMS42NTMgMS42NTMgMi41NjMgMy44NSAyLjU2MyA2LjE4N3MtMC45MSA0LjUzNC0yLjU2MyA2LjE4N2MtMC4xNDYgMC4xNDYtMC4zMzggMC4yMi0wLjUzIDAuMjJ6TTExLjI0MyAxMi45OTNjLTAuMTkyIDAtMC4zODQtMC4wNzMtMC41My0wLjIyLTAuMjkzLTAuMjkzLTAuMjkzLTAuNzY4IDAtMS4wNjEgMi4wNDctMi4wNDcgMi4wNDctNS4zNzggMC03LjQyNS0wLjI5My0wLjI5My0wLjI5My0wLjc2OCAwLTEuMDYxczAuNzY4LTAuMjkzIDEuMDYxIDBjMS4yNzUgMS4yNzUgMS45NzcgMi45NyAxLjk3NyA0Ljc3M3MtMC43MDIgMy40OTgtMS45NzcgNC43NzNjLTAuMTQ2IDAuMTQ2LTAuMzM4IDAuMjItMC41MyAwLjIydjB6TTguNTc4IDExLjU3OGMtMC4xOTIgMC0wLjM4NC0wLjA3My0wLjUzLTAuMjItMC4yOTMtMC4yOTMtMC4yOTMtMC43NjggMC0xLjA2MSAxLjI2Ny0xLjI2NyAxLjI2Ny0zLjMyOSAwLTQuNTk2LTAuMjkzLTAuMjkzLTAuMjkzLTAuNzY4IDAtMS4wNjFzMC43NjgtMC4yOTMgMS4wNjEgMGMxLjg1MiAxLjg1MiAxLjg1MiA0Ljg2NSAwIDYuNzE4LTAuMTQ2IDAuMTQ2LTAuMzM4IDAuMjItMC41MyAwLjIyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxNWMtMC4xMyAwLTAuMjU4LTAuMDUxLTAuMzU0LTAuMTQ2bC0zLjg1NC0zLjg1NGgtMS43OTNjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNWgxLjc5M2wzLjg1NC0zLjg1NGMwLjE0My0wLjE0MyAwLjM1OC0wLjE4NiAwLjU0NS0wLjEwOHMwLjMwOSAwLjI2IDAuMzA5IDAuNDYydjEzYzAgMC4yMDItMC4xMjIgMC4zODUtMC4zMDkgMC40NjItMC4wNjIgMC4wMjYtMC4xMjcgMC4wMzgtMC4xOTEgMC4wMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVm9sdW1lTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI0MyAxMi45OTNjLTAuMTkyIDAtMC4zODQtMC4wNzMtMC41My0wLjIyLTAuMjkzLTAuMjkzLTAuMjkzLTAuNzY4IDAtMS4wNjEgMi4wNDctMi4wNDcgMi4wNDctNS4zNzggMC03LjQyNS0wLjI5My0wLjI5My0wLjI5My0wLjc2OCAwLTEuMDYxczAuNzY4LTAuMjkzIDEuMDYxIDBjMS4yNzUgMS4yNzUgMS45NzcgMi45NyAxLjk3NyA0Ljc3M3MtMC43MDIgMy40OTgtMS45NzcgNC43NzNjLTAuMTQ2IDAuMTQ2LTAuMzM4IDAuMjItMC41MyAwLjIydjB6TTguNTc4IDExLjU3OGMtMC4xOTIgMC0wLjM4NC0wLjA3My0wLjUzLTAuMjItMC4yOTMtMC4yOTMtMC4yOTMtMC43NjggMC0xLjA2MSAxLjI2Ny0xLjI2NyAxLjI2Ny0zLjMyOSAwLTQuNTk2LTAuMjkzLTAuMjkzLTAuMjkzLTAuNzY4IDAtMS4wNjFzMC43NjgtMC4yOTMgMS4wNjEgMGMxLjg1MiAxLjg1MiAxLjg1MiA0Ljg2NSAwIDYuNzE4LTAuMTQ2IDAuMTQ2LTAuMzM4IDAuMjItMC41MyAwLjIyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxNWMtMC4xMyAwLTAuMjU4LTAuMDUxLTAuMzU0LTAuMTQ2bC0zLjg1NC0zLjg1NGgtMS43OTNjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNWgxLjc5M2wzLjg1NC0zLjg1NGMwLjE0My0wLjE0MyAwLjM1OC0wLjE4NiAwLjU0NS0wLjEwOHMwLjMwOSAwLjI2IDAuMzA5IDAuNDYydjEzYzAgMC4yMDItMC4xMjIgMC4zODUtMC4zMDkgMC40NjItMC4wNjIgMC4wMjYtMC4xMjcgMC4wMzgtMC4xOTEgMC4wMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVm9sdW1lTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNTc4IDExLjU3OGMtMC4xOTIgMC0wLjM4NC0wLjA3My0wLjUzLTAuMjItMC4yOTMtMC4yOTMtMC4yOTMtMC43NjggMC0xLjA2MSAxLjI2Ny0xLjI2NyAxLjI2Ny0zLjMyOSAwLTQuNTk2LTAuMjkzLTAuMjkzLTAuMjkzLTAuNzY4IDAtMS4wNjFzMC43NjgtMC4yOTMgMS4wNjEgMGMxLjg1MiAxLjg1MiAxLjg1MiA0Ljg2NSAwIDYuNzE4LTAuMTQ2IDAuMTQ2LTAuMzM4IDAuMjItMC41MyAwLjIyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxNWMtMC4xMyAwLTAuMjU4LTAuMDUxLTAuMzU0LTAuMTQ2bC0zLjg1NC0zLjg1NGgtMS43OTNjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNWgxLjc5M2wzLjg1NC0zLjg1NGMwLjE0My0wLjE0MyAwLjM1OC0wLjE4NiAwLjU0NS0wLjEwOHMwLjMwOSAwLjI2IDAuMzA5IDAuNDYydjEzYzAgMC4yMDItMC4xMjIgMC4zODUtMC4zMDkgMC40NjItMC4wNjIgMC4wMjYtMC4xMjcgMC4wMzgtMC4xOTEgMC4wMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVm9sdW1lTXV0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTVjLTAuMTMgMC0wLjI1OC0wLjA1MS0wLjM1NC0wLjE0NmwtMy44NTQtMy44NTRoLTEuNzkzYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41di01YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVoMS43OTNsMy44NTQtMy44NTRjMC4xNDMtMC4xNDMgMC4zNTgtMC4xODYgMC41NDUtMC4xMDhzMC4zMDkgMC4yNiAwLjMwOSAwLjQ2MnYxM2MwIDAuMjAyLTAuMTIyIDAuMzg1LTAuMzA5IDAuNDYyLTAuMDYyIDAuMDI2LTAuMTI3IDAuMDM4LTAuMTkxIDAuMDM4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVZvbHVtZU11dGUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDkuNjc0djEuMzI2aC0xLjMyNmwtMS42NzQtMS42NzQtMS42NzQgMS42NzRoLTEuMzI2di0xLjMyNmwxLjY3NC0xLjY3NC0xLjY3NC0xLjY3NHYtMS4zMjZoMS4zMjZsMS42NzQgMS42NzQgMS42NzQtMS42NzRoMS4zMjZ2MS4zMjZsLTEuNjc0IDEuNjc0IDEuNjc0IDEuNjc0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxNWMtMC4xMyAwLTAuMjU4LTAuMDUxLTAuMzU0LTAuMTQ2bC0zLjg1NC0zLjg1NGgtMS43OTNjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNWgxLjc5M2wzLjg1NC0zLjg1NGMwLjE0My0wLjE0MyAwLjM1OC0wLjE4NiAwLjU0NS0wLjEwOHMwLjMwOSAwLjI2IDAuMzA5IDAuNDYydjEzYzAgMC4yMDItMC4xMjIgMC4zODUtMC4zMDkgMC40NjItMC4wNjIgMC4wMjYtMC4xMjcgMC4wMzgtMC4xOTEgMC4wMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVm9sdW1lSW5jcmVhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOWgtM3YzaC0ydi0zaC0zdi0yaDN2LTNoMnYzaDN2MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMTVjLTAuMTMgMC0wLjI1OC0wLjA1MS0wLjM1NC0wLjE0NmwtMy44NTQtMy44NTRoLTEuNzkzYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41di01YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVoMS43OTNsMy44NTQtMy44NTRjMC4xNDMtMC4xNDMgMC4zNTgtMC4xODYgMC41NDUtMC4xMDhzMC4zMDkgMC4yNiAwLjMwOSAwLjQ2MnYxM2MwIDAuMjAyLTAuMTIyIDAuMzg1LTAuMzA5IDAuNDYyLTAuMDYyIDAuMDI2LTAuMTI3IDAuMDM4LTAuMTkxIDAuMDM4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVZvbHVtZURlY3JlYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggN2g4djJoLTh2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDE1Yy0wLjEzIDAtMC4yNTgtMC4wNTEtMC4zNTQtMC4xNDZsLTMuODU0LTMuODU0aC0xLjc5M2MtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXYtNWMwLTAuMjc2IDAuMjI0LTAuNSAwLjUtMC41aDEuNzkzbDMuODU0LTMuODU0YzAuMTQzLTAuMTQzIDAuMzU4LTAuMTg2IDAuNTQ1LTAuMTA4czAuMzA5IDAuMjYgMC4zMDkgMC40NjJ2MTNjMCAwLjIwMi0wLjEyMiAwLjM4NS0wLjMwOSAwLjQ2Mi0wLjA2MiAwLjAyNi0wLjEyNyAwLjAzOC0wLjE5MSAwLjAzOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Mb29wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNWgxMHYzbDQtNC00LTR2M2gtMTJ2Nmgyek0xNCAxMWgtMTB2LTNsLTQgNCA0IDR2LTNoMTJ2LTZoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTG9vcDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTAxIDIuNTk5Yy0xLjQ2My0xLjU5Ny0zLjU2NS0yLjU5OS01LjkwMS0yLjU5OS00LjQxOCAwLTggMy41ODItOCA4aDEuNWMwLTMuNTkgMi45MS02LjUgNi41LTYuNSAxLjkyMiAwIDMuNjQ5IDAuODM1IDQuODM5IDIuMTYxbC0yLjMzOSAyLjMzOWg1LjV2LTUuNWwtMi4wOTkgMi4wOTl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSA4YzAgMy41OS0yLjkxIDYuNS02LjUgNi41LTEuOTIyIDAtMy42NDktMC44MzUtNC44MzktMi4xNjFsMi4zMzktMi4zMzloLTUuNXY1LjVsMi4wOTktMi4wOTljMS40NjMgMS41OTcgMy41NjUgMi41OTkgNS45MDEgMi41OTkgNC40MTggMCA4LTMuNTgyIDgtOGgtMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUluZmluaXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjI1IDExLjc1Yy0xLjAwMiAwLTEuOTQzLTAuMzktMi42NTItMS4wOThsLTEuNTk4LTEuNTk4LTEuNTk4IDEuNTk4Yy0wLjcwOCAwLjcwOC0xLjY1IDEuMDk4LTIuNjUyIDEuMDk4cy0xLjk0NC0wLjM5LTIuNjUyLTEuMDk4Yy0wLjcwOC0wLjcwOC0xLjA5OC0xLjY1LTEuMDk4LTIuNjUyczAuMzktMS45NDMgMS4wOTgtMi42NTJjMC43MDgtMC43MDggMS42NS0xLjA5OCAyLjY1Mi0xLjA5OHMxLjk0MyAwLjM5IDIuNjUyIDEuMDk4bDEuNTk4IDEuNTk4IDEuNTk4LTEuNTk4YzAuNzA4LTAuNzA4IDEuNjUtMS4wOTggMi42NTItMS4wOThzMS45NDQgMC4zOSAyLjY1MiAxLjA5OGMwLjcwOCAwLjcwOCAxLjA5OCAxLjY1IDEuMDk4IDIuNjUycy0wLjM5IDEuOTQzLTEuMDk4IDIuNjUyYy0wLjcwOCAwLjcwOC0xLjY1IDEuMDk4LTIuNjUyIDEuMDk4ek0xMC42NTIgOS41OThjMC40MjcgMC40MjcgMC45OTQgMC42NjIgMS41OTggMC42NjJzMS4xNzEtMC4yMzUgMS41OTgtMC42NjJjMC40MjctMC40MjcgMC42NjItMC45OTQgMC42NjItMS41OThzLTAuMjM1LTEuMTcxLTAuNjYyLTEuNTk4Yy0wLjQyNy0wLjQyNy0wLjk5NC0wLjY2Mi0xLjU5OC0wLjY2MnMtMS4xNzEgMC4yMzUtMS41OTggMC42NjJsLTEuNTk4IDEuNTk4IDEuNTk4IDEuNTk4ek0zLjc1IDUuNzRjLTAuNjA0IDAtMS4xNzEgMC4yMzUtMS41OTggMC42NjJzLTAuNjYyIDAuOTk0LTAuNjYyIDEuNTk4YzAgMC42MDQgMC4yMzUgMS4xNzEgMC42NjIgMS41OThzMC45OTQgMC42NjIgMS41OTggMC42NjJjMC42MDQgMCAxLjE3MS0wLjIzNSAxLjU5OC0wLjY2MmwxLjU5OC0xLjU5OC0xLjU5OC0xLjU5OGMtMC40MjctMC40MjctMC45OTQtMC42NjItMS41OTgtMC42NjJ2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TaHVmZmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExaC0xLjU4NmwtMi41LTIuNSAyLjUtMi41aDEuNTg2djIuNWwzLjUtMy41LTMuNS0zLjV2Mi41aC0yYy0wLjI2NSAwLTAuNTIgMC4xMDUtMC43MDcgMC4yOTNsLTIuNzkzIDIuNzkzLTIuNzkzLTIuNzkzYy0wLjE4OC0wLjE4OC0wLjQ0Mi0wLjI5My0wLjcwNy0wLjI5M2gtM3YyaDIuNTg2bDIuNSAyLjUtMi41IDIuNWgtMi41ODZ2MmgzYzAuMjY1IDAgMC41Mi0wLjEwNSAwLjcwNy0wLjI5M2wyLjc5My0yLjc5MyAyLjc5MyAyLjc5M2MwLjE4OCAwLjE4OCAwLjQ0MiAwLjI5MyAwLjcwNyAwLjI5M2gydjIuNWwzLjUtMy41LTMuNS0zLjV2Mi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUFycm93VXBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTEuNWw0LTQgOC41IDguNSAzLjUtMy41LTguNS04LjUgNC00aC0xMS41djExLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXJyb3dVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDAuNWwtNy41IDcuNWg0LjV2OGg2di04aDQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd1VwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDBsNCA0LTguNSA4LjUgMy41IDMuNSA4LjUtOC41IDQgNHYtMTEuNWgtMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgOGwtNy41LTcuNXY0LjVoLTh2Nmg4djQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd0Rvd25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA0LjVsLTQgNC04LjUtOC41LTMuNSAzLjUgOC41IDguNS00IDRoMTEuNXYtMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNS41bDcuNS03LjVoLTQuNXYtOGgtNnY4aC00LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXJyb3dEb3duTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDE2bC00LTQgOC41LTguNS0zLjUtMy41LTguNSA4LjUtNC00djExLjVoMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMC41IDhsNy41IDcuNXYtNC41aDh2LTZoLTh2LTQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd1VwTGVmdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNzA3IDEyLjI5M2wtOC4yOTMtOC4yOTNoMy41ODZjMC41NTIgMCAxLTAuNDQ4IDEtMXMtMC40NDgtMS0xLTFoLTZjLTAuNDA0IDAtMC43NjkgMC4yNDQtMC45MjQgMC42MTctMC4wNTEgMC4xMjQtMC4wNzYgMC4yNTQtMC4wNzYgMC4zODNoLTAuMDAxdjZjMCAwLjU1MiAwLjQ0OCAxIDEgMXMxLTAuNDQ4IDEtMXYtMy41ODZsOC4yOTMgOC4yOTNjMC4xOTUgMC4xOTUgMC40NTEgMC4yOTMgMC43MDcgMC4yOTNzMC41MTItMC4wOTggMC43MDctMC4yOTNjMC4zOTEtMC4zOSAwLjM5MS0xLjAyNCAwLTEuNDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUFycm93VXAyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjcwNyA2LjI5M2wtNS01Yy0wLjM5LTAuMzkxLTEuMDI0LTAuMzkxLTEuNDE0IDBsLTUgNWMtMC4zOTEgMC4zOTEtMC4zOTEgMS4wMjQgMCAxLjQxNHMxLjAyNCAwLjM5MSAxLjQxNCAwbDMuMjkzLTMuMjkzdjkuNTg2YzAgMC41NTIgMC40NDggMSAxIDFzMS0wLjQ0OCAxLTF2LTkuNTg2bDMuMjkzIDMuMjkzYzAuMTk1IDAuMTk1IDAuNDUxIDAuMjkzIDAuNzA3IDAuMjkzczAuNTEyLTAuMDk4IDAuNzA3LTAuMjkzYzAuMzkxLTAuMzkxIDAuMzkxLTEuMDI0IDAtMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXJyb3dVcFJpZ2h0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjcwNyAxMy43MDdsOC4yOTMtOC4yOTN2My41ODZjMCAwLjU1MiAwLjQ0OCAxIDEgMXMxLTAuNDQ4IDEtMXYtNmMwLTAuNDA0LTAuMjQ0LTAuNzY5LTAuNjE3LTAuOTI0LTAuMTI0LTAuMDUxLTAuMjU0LTAuMDc2LTAuMzgzLTAuMDc2di0wLjAwMWgtNmMtMC41NTIgMC0xIDAuNDQ4LTEgMXMwLjQ0OCAxIDEgMWgzLjU4NmwtOC4yOTMgOC4yOTNjLTAuMTk1IDAuMTk1LTAuMjkzIDAuNDUxLTAuMjkzIDAuNzA3czAuMDk4IDAuNTEyIDAuMjkzIDAuNzA3YzAuMzkgMC4zOTEgMS4wMjQgMC4zOTEgMS40MTQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd1JpZ2h0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjcwNyAxMy43MDdsNS01YzAuMzkxLTAuMzkgMC4zOTEtMS4wMjQgMC0xLjQxNGwtNS01Yy0wLjM5MS0wLjM5MS0xLjAyNC0wLjM5MS0xLjQxNCAwcy0wLjM5MSAxLjAyNCAwIDEuNDE0bDMuMjkzIDMuMjkzaC05LjU4NmMtMC41NTIgMC0xIDAuNDQ4LTEgMXMwLjQ0OCAxIDEgMWg5LjU4NmwtMy4yOTMgMy4yOTNjLTAuMTk1IDAuMTk1LTAuMjkzIDAuNDUxLTAuMjkzIDAuNzA3czAuMDk4IDAuNTEyIDAuMjkzIDAuNzA3YzAuMzkxIDAuMzkxIDEuMDI0IDAuMzkxIDEuNDE0IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXJyb3dEb3duUmlnaHQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMjkzIDMuNzA3bDguMjkzIDguMjkzaC0zLjU4NmMtMC41NTIgMC0xIDAuNDQ4LTEgMXMwLjQ0OCAxIDEgMWg2YzAuNDA0IDAgMC43NjktMC4yNDQgMC45MjQtMC42MTcgMC4wNTEtMC4xMjQgMC4wNzYtMC4yNTQgMC4wNzYtMC4zODNoMC4wMDF2LTZjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSAwLjQ0OC0xIDF2My41ODZsLTguMjkzLTguMjkzYy0wLjE5NS0wLjE5NS0wLjQ1MS0wLjI5My0wLjcwNy0wLjI5M3MtMC41MTIgMC4wOTgtMC43MDcgMC4yOTNjLTAuMzkxIDAuMzktMC4zOTEgMS4wMjQgMCAxLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd0Rvd24yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjcwNyA5LjcwN2wtNSA1Yy0wLjM5IDAuMzkxLTEuMDI0IDAuMzkxLTEuNDE0IDBsLTUtNWMtMC4zOTEtMC4zOTEtMC4zOTEtMS4wMjQgMC0xLjQxNHMxLjAyNC0wLjM5MSAxLjQxNCAwbDMuMjkzIDMuMjkzdi05LjU4NmMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxdjkuNTg2bDMuMjkzLTMuMjkzYzAuMTk1LTAuMTk1IDAuNDUxLTAuMjkzIDAuNzA3LTAuMjkzczAuNTEyIDAuMDk4IDAuNzA3IDAuMjkzYzAuMzkxIDAuMzkxIDAuMzkxIDEuMDI0IDAgMS40MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXJyb3dEb3duTGVmdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjkzIDIuMjkzbC04LjI5MyA4LjI5M3YtMy41ODZjMC0wLjU1Mi0wLjQ0OC0xLTEtMXMtMSAwLjQ0OC0xIDF2NmMwIDAuNDA0IDAuMjQ0IDAuNzY5IDAuNjE3IDAuOTI0IDAuMTI0IDAuMDUxIDAuMjU0IDAuMDc2IDAuMzgzIDAuMDc2djAuMDAxbDYtMGMwLjU1MiAwIDEtMC40NDggMS0xcy0wLjQ0OC0xLTEtMWgtMy41ODZsOC4yOTMtOC4yOTNjMC4xOTUtMC4xOTUgMC4yOTMtMC40NTEgMC4yOTMtMC43MDdzLTAuMDk4LTAuNTEyLTAuMjkzLTAuNzA3Yy0wLjM5LTAuMzkxLTEuMDI0LTAuMzkxLTEuNDE0IDB2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1BcnJvd0xlZnQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjkzIDEzLjcwN2wtNS01Yy0wLjM5MS0wLjM5LTAuMzkxLTEuMDI0IDAtMS40MTRsNS01YzAuMzkxLTAuMzkxIDEuMDI0LTAuMzkxIDEuNDE0IDBzMC4zOTEgMS4wMjQgMCAxLjQxNGwtMy4yOTMgMy4yOTNoOS41ODZjMC41NTIgMCAxIDAuNDQ4IDEgMXMtMC40NDggMS0xIDFoLTkuNTg2bDMuMjkzIDMuMjkzYzAuMTk1IDAuMTk1IDAuMjkzIDAuNDUxIDAuMjkzIDAuNzA3cy0wLjA5OCAwLjUxMi0wLjI5MyAwLjcwN2MtMC4zOTEgMC4zOTEtMS4wMjQgMC4zOTEtMS40MTQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1DaXJjbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDhjMCA0LjQxOCAzLjU4MiA4IDggOHM4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOC04IDMuNTgyLTggOHpNMTQuNSA4YzAgMy41OS0yLjkxIDYuNS02LjUgNi41cy02LjUtMi45MS02LjUtNi41IDIuOTEtNi41IDYuNS02LjUgNi41IDIuOTEgNi41IDYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4wNDMgMTAuNDU3bDEuNDE0LTEuNDE0LTQuNDU3LTQuNDU3LTQuNDU3IDQuNDU3IDEuNDE0IDEuNDE0IDMuMDQzLTMuMDQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxNC41Yy0zLjU5IDAtNi41LTIuOTEtNi41LTYuNXMyLjkxLTYuNSA2LjUtNi41IDYuNSAyLjkxIDYuNSA2LjUtMi45MSA2LjUtNi41IDYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjU0MyAxMS4wNDNsMS40MTQgMS40MTQgNC40NTctNC40NTctNC40NTctNC40NTctMS40MTQgMS40MTQgMy4wNDMgMy4wNDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4YzAtNC40MTgtMy41ODItOC04LThzLTggMy41ODItOCA4IDMuNTgyIDggOCA4IDgtMy41ODIgOC04ek0xLjUgOGMwLTMuNTkgMi45MS02LjUgNi41LTYuNXM2LjUgMi45MSA2LjUgNi41LTIuOTEgNi41LTYuNSA2LjUtNi41LTIuOTEtNi41LTYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk1NyA1LjU0M2wtMS40MTQgMS40MTQgNC40NTcgNC40NTcgNC40NTctNC40NTctMS40MTQtMS40MTQtMy4wNDMgMy4wNDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YzQuNDE4IDAgOC0zLjU4MiA4LThzLTMuNTgyLTgtOC04LTggMy41ODItOCA4IDMuNTgyIDggOCA4ek04IDEuNWMzLjU5IDAgNi41IDIuOTEgNi41IDYuNXMtMi45MSA2LjUtNi41IDYuNS02LjUtMi45MS02LjUtNi41IDIuOTEtNi41IDYuNS02LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNDU3IDQuOTU3bC0xLjQxNC0xLjQxNC00LjQ1NyA0LjQ1NyA0LjQ1NyA0LjQ1NyAxLjQxNC0xLjQxNC0zLjA0My0zLjA0M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UYWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMGgxdjhoLTF2LTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4aDF2OGgtMXYtOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExaDExdjJoLTExdjIuNWwtMy41LTMuNSAzLjUtMy41djIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA1aC0xMXYtMmgxMXYtMi41bDMuNSAzLjUtMy41IDMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Nb3ZlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOHY2aDF2LTZoMi41bC0zLTMtMyAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgM2gxLjV2MWgtMS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgM2gxLjV2MWgtMS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgM2gxdjEuNWgtMXYtMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNi41aDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDdoMS41djFoLTEuNXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgN2gxLjV2MWgtMS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNC41aDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA1aDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMXYzaC0zdi0zaDN6TTYgMTBoLTV2NWg1di01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1vdmVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDExdi02aC0xdjZoLTIuNWwzIDMgMy0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNHYzaC0zdi0zaDN6TTYgM2gtNXY1aDV2LTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMGgxLjV2MWgtMS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTBoMS41djFoLTEuNXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMy41aDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE0aDEuNXYxaC0xLjV2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDE0aDEuNXYxaC0xLjV2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxMS41aDF2MS41aC0xdi0xLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMmgxdjEuNWgtMXYtMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNvcnRBbHBoYUFzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEydi0xMmgtMnYxMmgtMi41bDMuNSAzLjUgMy41LTMuNWgtMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMTZoLTRjLTAuMTg0IDAtMC4zNTQtMC4xMDEtMC40NDEtMC4yNjRzLTAuMDc3LTAuMzYgMC4wMjUtMC41MTNsMy40ODItNS4yMjNoLTMuMDY2Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDRjMC4xODQgMCAwLjM1NCAwLjEwMSAwLjQ0MSAwLjI2NHMwLjA3NyAwLjM2LTAuMDI1IDAuNTEzbC0zLjQ4MiA1LjIyM2gzLjA2NmMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45NDcgNi4yNzZsLTMtNmMtMC4wODUtMC4xNjktMC4yNTgtMC4yNzYtMC40NDctMC4yNzZzLTAuMzYzIDAuMTA3LTAuNDQ3IDAuMjc2bC0zIDZjLTAuMTIzIDAuMjQ3LTAuMDIzIDAuNTQ3IDAuMjI0IDAuNjcxIDAuMDcyIDAuMDM2IDAuMTQ4IDAuMDUzIDAuMjIzIDAuMDUzIDAuMTgzIDAgMC4zNi0wLjEwMSAwLjQ0OC0wLjI3N2wwLjg2Mi0xLjcyNGgzLjM4MmwwLjg2MiAxLjcyNGMwLjEyMyAwLjI0NyAwLjQyNCAwLjM0NyAwLjY3MSAwLjIyNHMwLjM0Ny0wLjQyNCAwLjIyNC0wLjY3MXpNMTEuMzA5IDRsMS4xOTEtMi4zODIgMS4xOTEgMi4zODJoLTIuMzgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNvcnRBbHBoYURlc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMnYtMTJoLTJ2MTJoLTIuNWwzLjUgMy41IDMuNS0zLjVoLTIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDdoLTRjLTAuMTg0IDAtMC4zNTQtMC4xMDEtMC40NDEtMC4yNjRzLTAuMDc3LTAuMzYgMC4wMjUtMC41MTNsMy40ODItNS4yMjNoLTMuMDY2Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDRjMC4xODQgMCAwLjM1NCAwLjEwMiAwLjQ0MSAwLjI2NHMwLjA3NyAwLjM2LTAuMDI1IDAuNTEzbC0zLjQ4MiA1LjIyM2gzLjA2NmMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45NDcgMTUuMjc2bC0zLTZjLTAuMDg1LTAuMTY5LTAuMjU4LTAuMjc2LTAuNDQ3LTAuMjc2cy0wLjM2MyAwLjEwNy0wLjQ0NyAwLjI3NmwtMyA2Yy0wLjEyMyAwLjI0Ny0wLjAyMyAwLjU0NyAwLjIyNCAwLjY3MSAwLjA3MiAwLjAzNiAwLjE0OCAwLjA1MyAwLjIyMyAwLjA1MyAwLjE4MyAwIDAuMzYtMC4xMDEgMC40NDgtMC4yNzdsMC44NjItMS43MjRoMy4zODJsMC44NjIgMS43MjRjMC4xMjMgMC4yNDcgMC40MjQgMC4zNDcgMC42NzEgMC4yMjRzMC4zNDctMC40MjQgMC4yMjQtMC42NzF6TTExLjMwOSAxM2wxLjE5MS0yLjM4MiAxLjE5MSAyLjM4MmgtMi4zODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU29ydE51bWVyaWNBc2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMnYtMTJoLTJ2MTJoLTIuNWwzLjUgMy41IDMuNS0zLjVoLTIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDdjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTUuNWgtMC41Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDFjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXY2YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSA5aC0zYy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41djNjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgyLjV2MmgtMi41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDNjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtNmMwLTAuMjc2LTAuMjI0LTAuNS0wLjUtMC41ek0xMiAxMGgydjJoLTJ2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU29ydE51bWJlcmljRGVzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEydi0xMmgtMnYxMmgtMi41bDMuNSAzLjUgMy41LTMuNWgtMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgMTZjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjV2LTUuNWgtMC41Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDFjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXY2YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0zYy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41djNjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgyLjV2MmgtMi41Yy0wLjI3NiAwLTAuNSAwLjIyNC0wLjUgMC41czAuMjI0IDAuNSAwLjUgMC41aDNjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXYtNmMwLTAuMjc2LTAuMjI0LTAuNS0wLjUtMC41ek0xMiAxaDJ2MmgtMnYtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Tb3J0QW1vdW50QXNjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTJ2LTEyaC0ydjEyaC0yLjVsMy41IDMuNSAzLjUtMy41aC0yLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA5aDl2MmgtOXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDZoN3YyaC03di0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgM2g1djJoLTV2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAwaDN2MmgtM3YtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Tb3J0QW1vdW50RGVzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEydi0xMmgtMnYxMmgtMi41bDMuNSAzLjUgMy41LTMuNWgtMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMGg5djJoLTl2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAzaDd2MmgtN3YtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDZoNXYyaC01di0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOWgzdjJoLTN2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29tbWFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDE0Yy0xLjM3OSAwLTIuNS0xLjEyMS0yLjUtMi41di0xLjVoLTJ2MS41YzAgMS4zNzktMS4xMjIgMi41LTIuNSAyLjVzLTIuNS0xLjEyMS0yLjUtMi41IDEuMTIyLTIuNSAyLjUtMi41aDEuNXYtMmgtMS41Yy0xLjM3OCAwLTIuNS0xLjEyMi0yLjUtMi41czEuMTIyLTIuNSAyLjUtMi41IDIuNSAxLjEyMiAyLjUgMi41djEuNWgydi0xLjVjMC0xLjM3OCAxLjEyMS0yLjUgMi41LTIuNXMyLjUgMS4xMjIgMi41IDIuNS0xLjEyMSAyLjUtMi41IDIuNWgtMS41djJoMS41YzEuMzc5IDAgMi41IDEuMTIxIDIuNSAyLjVzLTEuMTIxIDIuNS0yLjUgMi41ek0xMCAxMHYxLjVjMCAwLjgyNyAwLjY3MyAxLjUgMS41IDEuNXMxLjUtMC42NzMgMS41LTEuNS0wLjY3My0xLjUtMS41LTEuNWgtMS41ek00LjUgMTBjLTAuODI3IDAtMS41IDAuNjczLTEuNSAxLjVzMC42NzMgMS41IDEuNSAxLjUgMS41LTAuNjczIDEuNS0xLjV2LTEuNWgtMS41ek03IDloMnYtMmgtMnYyek0xMCA2aDEuNWMwLjgyNyAwIDEuNS0wLjY3MyAxLjUtMS41cy0wLjY3My0xLjUtMS41LTEuNS0xLjUgMC42NzMtMS41IDEuNXYxLjV6TTQuNSAzYy0wLjgyNyAwLTEuNSAwLjY3My0xLjUgMS41czAuNjczIDEuNSAxLjUgMS41aDEuNXYtMS41YzAtMC44MjctMC42NzMtMS41LTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxNGgtNWMtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXYtNS41aC0yYy0wLjIwMiAwLTAuMzg1LTAuMTIyLTAuNDYyLTAuMzA5cy0wLjAzNS0wLjQwMiAwLjEwOC0wLjU0NWw1LTVjMC4xOTUtMC4xOTUgMC41MTItMC4xOTUgMC43MDcgMGw1IDVjMC4xNDMgMC4xNDMgMC4xODYgMC4zNTggMC4xMDggMC41NDVzLTAuMjYgMC4zMDktMC40NjIgMC4zMDloLTJ2NS41YzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjV6TTYgMTNoNHYtNS41YzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVoMS4yOTNsLTMuNzkzLTMuNzkzLTMuNzkzIDMuNzkzaDEuMjkzYzAuMjc2IDAgMC41IDAuMjI0IDAuNSAwLjV2NS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUN0cmwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA3Yy0wLjEzOSAwLTAuMjc4LTAuMDU4LTAuMzc3LTAuMTcxbC0zLjEyNC0zLjU3LTMuMTI0IDMuNTdjLTAuMTgyIDAuMjA4LTAuNDk4IDAuMjI5LTAuNzA2IDAuMDQ3cy0wLjIyOS0wLjQ5OC0wLjA0Ny0wLjcwNmwzLjUtNGMwLjA5NS0wLjEwOCAwLjIzMi0wLjE3MSAwLjM3Ni0wLjE3MXMwLjI4MSAwLjA2MiAwLjM3NiAwLjE3MWwzLjUgNGMwLjE4MiAwLjIwOCAwLjE2MSAwLjUyNC0wLjA0NyAwLjcwNi0wLjA5NSAwLjA4My0wLjIxMiAwLjEyNC0wLjMyOSAwLjEyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1PcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAxM2gtNGMtMC4xOTggMC0wLjM3Ny0wLjExNi0wLjQ1Ny0wLjI5N2wtMy44NjgtOC43MDNoLTQuNjc1Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDVjMC4xOTggMCAwLjM3NyAwLjExNiAwLjQ1NyAwLjI5N2wzLjg2OCA4LjcwM2gzLjY3NWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDRoLTVjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjQtMC41IDAuNS0wLjVoNWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1DaGVja2JveENoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMGgtMTJjLTEuMSAwLTIgMC45LTIgMnYxMmMwIDEuMSAwLjkgMiAyIDJoMTJjMS4xIDAgMi0wLjkgMi0ydi0xMmMwLTEuMS0wLjktMi0yLTJ6TTcgMTIuNDE0bC0zLjcwNy0zLjcwNyAxLjQxNC0xLjQxNCAyLjI5MyAyLjI5MyA0Ljc5My00Ljc5MyAxLjQxNCAxLjQxNC02LjIwNyA2LjIwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1DaGVja2JveFVuY2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwaC0xMmMtMS4xIDAtMiAwLjktMiAydjEyYzAgMS4xIDAuOSAyIDIgMmgxMmMxLjEgMCAyLTAuOSAyLTJ2LTEyYzAtMS4xLTAuOS0yLTItMnpNMTQgMTRoLTEydi0xMmgxMnYxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SYWRpb0NoZWNrZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOCAwLTggMy41ODItOCA4czMuNTgyIDggOCA4IDgtMy41ODIgOC04LTMuNTgyLTgtOC04ek04IDE0Yy0zLjMxNCAwLTYtMi42ODYtNi02czIuNjg2LTYgNi02YzMuMzE0IDAgNiAyLjY4NiA2IDZzLTIuNjg2IDYtNiA2ek01IDhjMC0xLjY1NyAxLjM0My0zIDMtM3MzIDEuMzQzIDMgM2MwIDEuNjU3LTEuMzQzIDMtMyAzcy0zLTEuMzQzLTMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SYWRpb0NoZWNrZWQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNOCAxMGMtMS4xMDUgMC0yLTAuODk1LTItMnMwLjg5NS0yIDItMmMxLjEwNSAwIDIgMC44OTUgMiAycy0wLjg5NSAyLTIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SYWRpb1VuY2hlY2tlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTggMTRjLTMuMzE0IDAtNi0yLjY4Ni02LTZzMi42ODYtNiA2LTZjMy4zMTQgMCA2IDIuNjg2IDYgNnMtMi42ODYgNi02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ3JvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0bDMtMy0xLTEtMyAzaC03di0zaC0ydjNoLTN2MmgzdjhoOHYzaDJ2LTNoM3YtMmgtM3YtN3pNNSA1aDVsLTUgNXYtNXpNNiAxMWw1LTV2NWgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NYWtlR3JvdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyaC0yYy0wLjU1IDAtMSAwLjQ1LTEgMXYyYzAgMC41NSAwLjQ1IDEgMSAxaDJjMC41NSAwIDEtMC40NSAxLTF2LTJjMC0wLjU1LTAuNDUtMS0xLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmgyYzAuNTUgMCAxLTAuNDUgMS0xdi0yYzAtMC41NS0wLjQ1LTEtMS0xaC0yYy0wLjU1IDAtMSAwLjQ1LTEgMXYyYzAgMC41NSAwLjQ1IDEgMSAxek0xMSAzaDJ2MmgtMnYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEwaC0yYy0wLjU1IDAtMSAwLjQ1LTEgMXYyYzAgMC41NSAwLjQ1IDEgMSAxaDJjMC41NSAwIDEtMC40NSAxLTF2LTJjMC0wLjU1LTAuNDUtMS0xLTF6TTUgMTNoLTJ2LTJoMnYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEwaC0yYy0wLjU1IDAtMSAwLjQ1LTEgMXYyYzAgMC41NSAwLjQ1IDEgMSAxaDJjMC41NSAwIDEtMC40NSAxLTF2LTJjMC0wLjU1LTAuNDUtMS0xLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgOGgtMWMtMS4zMzYgMC0yLjU5MS0wLjUyLTMuNTM2LTEuNDY0cy0xLjQ2NC0yLjItMS40NjQtMy41MzZ2LTFjMC0xLjEtMC45LTItMi0yaC00Yy0xLjEgMC0yIDAuOS0yIDJ2NGMwIDEuMSAwLjkgMiAyIDJoMWMxLjMzNiAwIDIuNTkxIDAuNTIgMy41MzYgMS40NjRzMS40NjQgMi4yIDEuNDY0IDMuNTM2djFjMCAxLjEgMC45IDIgMiAyaDRjMS4xIDAgMi0wLjkgMi0ydi00YzAtMS4xLTAuOS0yLTItMnpNMTUgMTRjMCAwLjI2NS0wLjEwNSAwLjUxNS0wLjI5NSAwLjcwNXMtMC40NCAwLjI5NS0wLjcwNSAwLjI5NWgtNGMtMC4yNjUgMC0wLjUxNS0wLjEwNS0wLjcwNS0wLjI5NXMtMC4yOTUtMC40NC0wLjI5NS0wLjcwNXYtMWMwLTMuMzE0LTIuNjg2LTYtNi02aC0xYy0wLjI2NSAwLTAuNTE1LTAuMTA1LTAuNzA1LTAuMjk1cy0wLjI5NS0wLjQ0MS0wLjI5NS0wLjcwNXYtNGMwLTAuMjY1IDAuMTA1LTAuNTE1IDAuMjk1LTAuNzA1czAuNDQtMC4yOTUgMC43MDUtMC4yOTVoNGMwLjI2NSAwIDAuNTE1IDAuMTA1IDAuNzA1IDAuMjk1czAuMjk1IDAuNDQgMC4yOTUgMC43MDV2MWMwIDMuMzE0IDIuNjg2IDYgNiA2aDFjMC4yNjUgMCAwLjUxNSAwLjEwNSAwLjcwNSAwLjI5NXMwLjI5NSAwLjQ0IDAuMjk1IDAuNzA1djR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDcuMjVjMCAwLjQxMi0wLjMzOCAwLjc1LTAuNzUgMC43NWgtMS41Yy0wLjQxMyAwLTAuNzUtMC4zMzgtMC43NS0wLjc1di0xLjVjMC0wLjQxMiAwLjMzNy0wLjc1IDAuNzUtMC43NWgxLjVjMC40MTIgMCAwLjc1IDAuMzM4IDAuNzUgMC43NXYxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNy4yNWMwIDAuNDEyLTAuMzM4IDAuNzUtMC43NSAwLjc1aC0xLjVjLTAuNDEyIDAtMC43NS0wLjMzOC0wLjc1LTAuNzV2LTEuNWMwLTAuNDEyIDAuMzM4LTAuNzUgMC43NS0wLjc1aDEuNWMwLjQxMiAwIDAuNzUgMC4zMzggMC43NSAwLjc1djEuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyLjI1YzAgMC40MTItMC4zMzggMC43NS0wLjc1IDAuNzVoLTEuNWMtMC40MTMgMC0wLjc1LTAuMzM4LTAuNzUtMC43NXYtMS41YzAtMC40MTIgMC4zMzctMC43NSAwLjc1LTAuNzVoMS41YzAuNDEyIDAgMC43NSAwLjMzOCAwLjc1IDAuNzV2MS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEyLjI1YzAgMC40MTItMC4zMzggMC43NS0wLjc1IDAuNzVoLTEuNWMtMC40MTIgMC0wLjc1LTAuMzM4LTAuNzUtMC43NXYtMS41YzAtMC40MTIgMC4zMzgtMC43NSAwLjc1LTAuNzVoMS41YzAuNDEyIDAgMC43NSAwLjMzOCAwLjc1IDAuNzV2MS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjI1MSAyLjVsMS43NDktMS43NDl2LTAuNzUxaC0wLjc1MWwtMS43NDkgMS43NDktMS43NDktMS43NDloLTAuNzUxdjAuNzUxbDEuNzQ5IDEuNzQ5LTEuNzQ5IDEuNzQ5djAuNzUxaDAuNzUxbDEuNzQ5LTEuNzQ5IDEuNzQ5IDEuNzQ5aDAuNzUxdi0wLjc1MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyaDF2MmgtMXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDloMXYyaC0xdi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDdoMXYyaC0xdi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDEzaDF2MmgtMXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMGgxdjJoLTF2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2aDF2MmgtMXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDNoMXYyaC0xdi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmgydjFoLTJ2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyaDJ2MWgtMnYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJoMnYxaC0ydi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTVoMnYxaC0ydi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDE1aDJ2MWgtMnYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1aDJ2MWgtMnYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE1aDJ2MWgtMnYtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4yNzkgMTAuNjJjLTEuMDQyLTEuNjI4LTIuODI5LTIuMzQ1LTMuOTkyLTEuNjAxLTAuMSAwLjA2NC0wLjE5MyAwLjEzOC0wLjI3NyAwLjIxOGwtMS4yNDEtMS45NDIgMi44NjctNC41YzAuMjM1LTAuNDMzIDAuMzIxLTAuOTQ5IDAuMjA3LTEuNDY4LTAuMTA5LTAuNDk2LTAuMzgzLTAuOTEzLTAuNzUyLTEuMjA3bC0wLjE5Mi0wLjEyMi0zLjM5OCA1LjMxNC0zLjM5OC01LjMxNC0wLjE5MiAwLjEyMmMtMC4zNjkgMC4yOTQtMC42NDMgMC43MTEtMC43NTIgMS4yMDctMC4xMTQgMC41MTktMC4wMjcgMS4wMzUgMC4yMDcgMS40NjhsMi44NjcgNC41LTEuMjQxIDEuOTQyYy0wLjA4NS0wLjA4MS0wLjE3Ny0wLjE1NC0wLjI3Ny0wLjIxOC0xLjE2My0wLjc0NC0yLjk1LTAuMDI4LTMuOTkyIDEuNjAxcy0wLjk0NCAzLjU1MSAwLjIxOSA0LjI5NmMxLjE2MyAwLjc0NCAyLjk1IDAuMDI4IDMuOTkyLTEuNjAxbDIuNTY3LTQuMDI5IDIuNTY3IDQuMDI5YzEuMDQyIDEuNjI4IDIuODI5IDIuMzQ1IDMuOTkyIDEuNjAxczEuMjYxLTIuNjY3IDAuMjE5LTQuMjk2ek0zLjY3IDEyLjUwN2MtMC40NjkgMC43MzMtMS4wNzEgMS4wODktMS40NzggMS4xNzktMCAwLTAgMC0wIDAtMC4xMzMgMC4wMjktMC4zMTcgMC4wNDctMC40NDMtMC4wMzMtMC4xMzktMC4wODktMC4yMzEtMC4zMjQtMC4yNDctMC42MjktMC4wMjUtMC40OTQgMC4xNTEtMS4wNzYgMC40ODMtMS41OTQgMC40NjktMC43MzMgMS4wNzEtMS4wODkgMS40NzgtMS4xNzkgMC4xMzMtMC4wMjkgMC4zMTctMC4wNDcgMC40NDMgMC4wMzMgMC4xMzkgMC4wODkgMC4yMzEgMC4zMjQgMC4yNDcgMC42MjkgMC4wMjUgMC40OTUtMC4xNTEgMS4wNzYtMC40ODMgMS41OTR6TTcuNSA4Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41IDAuNSAwLjIyNCAwLjUgMC41LTAuMjI0IDAuNS0wLjUgMC41ek0xMy40OTggMTMuMDIzYy0wLjAxNiAwLjMwNS0wLjEwOCAwLjU0LTAuMjQ3IDAuNjI5LTAuMTI1IDAuMDgwLTAuMzEgMC4wNjItMC40NDMgMC4wMzMgMCAwIDAgMC0wIDAtMC40MDctMC4wODktMS4wMDktMC40NDYtMS40NzgtMS4xNzktMC4zMzItMC41MTktMC41MDgtMS4xLTAuNDgzLTEuNTk0IDAuMDE2LTAuMzA1IDAuMTA4LTAuNTQgMC4yNDctMC42MjkgMC4xMjUtMC4wODAgMC4zMS0wLjA2MiAwLjQ0My0wLjAzMyAwLjQwNyAwLjA4OSAxLjAwOSAwLjQ0NiAxLjQ3OCAxLjE3OSAwLjMzMiAwLjUxOSAwLjUwOCAxLjEgMC40ODMgMS41OTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDEuMTE5LTggMi41djEuNWw2IDZ2NWMwIDAuNTUyIDAuODk1IDEgMiAxczItMC40NDggMi0xdi01bDYtNnYtMS41YzAtMS4zODEtMy41ODItMi41LTgtMi41ek0xLjQ3NSAyLjE2OWMwLjM3NC0wLjIxMyAwLjktMC40MTYgMS41Mi0wLjU4NiAxLjM3NC0wLjM3NiAzLjE1Mi0wLjU4MyA1LjAwNS0wLjU4M3MzLjYzMSAwLjIwNyA1LjAwNSAwLjU4M2MwLjYyIDAuMTcgMS4xNDYgMC4zNzIgMS41MiAwLjU4NiAwLjI0NyAwLjE0MSAwLjM4IDAuMjYgMC40NDIgMC4zMzEtMC4wNjIgMC4wNzEtMC4xOTUgMC4xOS0wLjQ0MiAwLjMzMS0wLjM3NCAwLjIxMy0wLjkgMC40MTYtMS41MiAwLjU4Ni0xLjM3NCAwLjM3Ni0zLjE1MiAwLjU4My01LjAwNSAwLjU4M3MtMy42MzEtMC4yMDctNS4wMDUtMC41ODNjLTAuNjItMC4xNy0xLjE0Ni0wLjM3Mi0xLjUyLTAuNTg2LTAuMjQ3LTAuMTQxLTAuMzgtMC4yNi0wLjQ0Mi0wLjMzMSAwLjA2Mi0wLjA3MSAwLjE5NS0wLjE5IDAuNDQyLTAuMzMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDk0IDAuMjUzYy0xLjQxNCAwLTIuMzIyLTAuMjUzLTMuNzc5LTAuMjUzLTQuNzA4IDAtNi45MDMgMi42ODEtNi45MDMgNS40MDQgMCAxLjYwNCAwLjc2IDIuMTMyIDIuMjU5IDIuMTMyLTAuMTA2LTAuMjMyLTAuMjk2LTAuNDg2LTAuMjk2LTEuNjI2IDAtMy4xODggMS4yMDMtNC4xMTcgMi43NDQtNC4xOCAwIDAtMS4yNjQgMTIuMzk2LTQuOTM0IDEzLjg4M3YwLjM4NWg0Ljk0N2wxLjY4OC04aDMuMDkxbDAuNjg5LTJoLTMuMzU4bDAuODEyLTMuODQ3YzAuOTI5IDAuMTkgMS44MzcgMC4zOCAyLjYxOCAwLjM4IDAuOTcxIDAgMS44NTgtMC4yOTYgMi4zNDMtMi41MzMtMC41OTEgMC4xOS0xLjIyNCAwLjI1My0xLjkyMSAwLjI1M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1MaWdhdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMy42MjJjMC0wLjAwMSAwLTAuMDAxIDAtMC4wMDJsLTAuMDA1LTYuODIxLTEuOTkyIDAuMDk3aC0zLjkzNnYtMC4zMzZjMC0xLjI3NCAwLjA5MS0yLjU0NiAwLjI2OS0zLjA0MiAwLjEyMy0wLjM0MyAwLjM1My0wLjY1MiAwLjY4My0wLjkxOSAwLjMyMi0wLjI2MSAwLjY0My0wLjM5MyAwLjk1NS0wLjM5MyAwLjI2MiAwIDAuNDggMC4wNDUgMC42NDcgMC4xMzQgMC4yMzUgMC4xMzQgMC40NjQgMC4zNTkgMC42ODIgMC42NjkgMC41NzcgMC44MiAwLjgxMiAxLjAzOCAwLjkzOSAxLjEzMSAwLjIxNiAwLjE1OCAwLjQ3NyAwLjIzOCAwLjc3NiAwLjIzOCAwLjI5MiAwIDAuNTQ2LTAuMTA5IDAuNzU3LTAuMzI0IDAuMjA5LTAuMjEzIDAuMzE1LTAuNDc5IDAuMzE1LTAuNzkyIDAtMC4zMzUtMC4xMzktMC42OTEtMC40MTQtMS4wNTctMC4yNjgtMC4zNTgtMC42ODMtMC42NTItMS4yMzItMC44NzUtMC41MzYtMC4yMTgtMS4xNC0wLjMyOS0xLjc5My0wLjMyOS0wLjk0OSAwLTEuODEzIDAuMjI4LTIuNTY4IDAuNjc4LTAuNzU3IDAuNDUxLTEuMzM3IDEuMDc3LTEuNzI1IDEuODYzLTAuMzU5IDAuNzI4LTAuMzMzIDIuMTA1LTAuMzU1IDMuMzU1aC0xLjk2NXYxLjExNmgxLjk2MnY1LjA3M2MwIDEuMTItMC4zNDIgMS40MjItMC40NzIgMS41ODMtMC4xNzkgMC4yMjItMC41MDkgMC40NTUtMC45NDQgMC40NTVoLTAuNjA0djAuODc4aDYuMDIxdi0wLjg3OGgtMC4xMDVjLTEuNDI0IDAtMS44MjgtMC4xNTQtMS44MjgtMS44ODggMC0wIDAtMC4wMDEgMC0wLjAwMWwtMC4wMDEtNS4yMjJoMi4xOTFjMS4xNjMgMCAxLjQzIDAuMDU0IDEuNDkxIDAuMDc3IDAuMDc0IDAuMDI4IDAuMTY5IDAuMDc1IDAuMjA0IDAuMTQzIDAuMDE0IDAuMDI2IDAuMDgxIDAuMzkxIDAuMDgxIDEuMjk2djMuOTE3YzAgMC45MTMtMC4xMTEgMS4yMTctMC4xNzkgMS4zMTktMC4xNDUgMC4yMjItMC4zMTkgMC4zNDUtMC44NTQgMC4zNTh2MC44NzloNC41ODh2LTAuODczYy0xLjQzMSAwLTEuNTg4LTAuMTUzLTEuNTg4LTEuNTA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxpZ2F0dXJlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4zNjQgMTQuMzM1Yy0wLjE4MyAwLTEuMzA3LTAuMjA2LTEuMzc1LTAuNDU4LTAuMTYxLTAuNjE5LTAuMTgzLTEuMjg0LTAuMTgzLTIuMDQwdi04LjQ1M2MwLTEuMjYxIDAuMjUyLTEuOTk0IDAuMjUyLTEuOTk0LTAuMDIzLTAuMTE1LTAuMTM4LTAuMzY3LTAuMjc1LTAuMzY3aC0wLjA2OWMtMC4wNjkgMC0wLjg3MSAwLjUwNC0xLjYwNSAwLjUwNC0wLjU5Ni0wLTAuOTY3LTAuNTI3LTEuNjU1LTAuNTI3LTIuODkyIDAtNC4yNDkgMi4zNDktNC4yNDkgNS42NzJ2MC4xNzNjMCAwLjA2OS0wLjA0NiAwLjEzOC0wLjExNSAwLjEzOGgtMC45NGMtMC4xMTUgMC0wLjM0NCAwLjY0Mi0wLjM0NCAwLjk0IDAgMC4wOTIgMC4wMjMgMC4xMzcgMC4wNjkgMC4xMzdoMS4yMTVjMC4wNjkgMCAwLjExNSAwLjA5MiAwLjExNSAwLjE2IDAgMi4wNDAtMC4wMjMgNC4wNTItMC4wMjMgNC4wNTIgMCAwLjMyMS0wLjAyMyAxLjAzMS0wLjE2IDEuNjA1LTAuMDY5IDAuMjUyLTEuMTIzIDAuNDU4LTEuMzk4IDAuNDU4LTAuMTE1IDAtMC4xMTUgMC41NSAwIDAuNjY1IDAuOTQtMC4wNDYgMS41NTktMC4xMTUgMi40OTktMC4xMTUgMC44NzEgMCAxLjUzNiAwLjA2OSAyLjQ1MyAwLjExNSAwLjA0Ni0wLjEzOCAwLjA0Ni0wLjY2NS0wLjA2OS0wLjY2NS0wLjE4MyAwLTEuMzA3LTAuMjA2LTEuMzc1LTAuNDU4LTAuMTYtMC42MTktMC4xNi0xLjI4NC0wLjE4My0yLjA0MHYtMy42MzljMC0wLjA2OSAwLjA2OS0wLjEzOCAwLjEzOC0wLjEzOGgyLjM2MWMwLjE2LTAuMzIxIDAuMjc1LTAuNzExIDAuMjc1LTAuOTE3IDAtMC4xMzggMC0wLjE2LTAuMTE1LTAuMTZoLTIuNTQ0Yy0wLjA0NiAwLTAuMTE1LTAuMDY5LTAuMTE1LTAuMTE1di0wLjgyNWMwLTIuMDQwIDAuODM2LTMuODM3IDIuMjM0LTMuODM3IDAuOTkgMCAxLjg1NCAwLjY0MiAxLjg1NCAzLjA5MyAwIDAgMCAwIDAgMCAwLjAwMyAwLjA2MyAwLjAwNSAwLjExNCAwLjAwNSAwLjE0OHY2LjgyNWMwIDAuMzIxLTAuMDIzIDEuMDMxLTAuMTYgMS42MDUtMC4wNjkgMC4yNTItMS4xMjMgMC40NTgtMS4zOTggMC40NTgtMC4xMTUgMC0wLjExNSAwLjU1IDAgMC42NjUgMC45NC0wLjA0NiAxLjU1OS0wLjExNSAyLjQ5OS0wLjExNSAwLjg3MSAwIDEuNTM2IDAuMDY5IDIuNDUzIDAuMTE1IDAuMDQ2LTAuMTM3IDAuMDQ2LTAuNjY1LTAuMDY5LTAuNjY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTJoMmwtMi41IDMtMi41LTNoMnYtOGgtMmwyLjUtMyAyLjUgM2gtMnpNMTAgMXY0bC0xLTJoLTN2MTFoMnYxaC02di0xaDJ2LTExaC0zbC0xIDJ2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVGV4dFdpZHRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTR2MmwtMy0yLjUgMy0yLjV2Mmg4di0ybDMgMi41LTMgMi41di0yek0xMyAxdjRsLTEtMmgtM3Y3aDJ2MWgtNnYtMWgydi03aC0zbC0xIDJ2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRm9udFNpemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA4aDZ2MmgtMnY2aC0ydi02aC0yek0xNSA0aC0zLjkzNHYxMmgtMi4xMzN2LTEyaC0zLjkzNHYtMmgxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Cb2xkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjA2MSA3LjU3M2MwLjU4Ni0wLjY5NiAwLjkzOS0xLjU5NCAwLjkzOS0yLjU3MyAwLTIuMjA2LTEuNzk0LTQtNC00aC01djE0aDZjMi4yMDYgMCA0LTEuNzk0IDQtNCAwLTEuNDUyLTAuNzc4LTIuNzI2LTEuOTM5LTMuNDI3ek02IDNoMS41ODZjMC44NzQgMCAxLjU4NiAwLjg5NyAxLjU4NiAycy0wLjcxMSAyLTEuNTg2IDJoLTEuNTg2di00ek04LjQ4NCAxM2gtMi40ODR2LTRoMi40ODRjMC45MTMgMCAxLjY1NiAwLjg5NyAxLjY1NiAycy0wLjc0MyAyLTEuNjU2IDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDFoMnY2LjVjMCAyLjQ4NS0yLjIzOSA0LjUtNSA0LjVzLTUtMi4wMTUtNS00LjV2LTYuNWgydjYuNWMwIDAuNjI4IDAuMjg1IDEuMjMgMC44MDIgMS42OTUgMC41NzcgMC41MTkgMS4zNTcgMC44MDUgMi4xOTggMC44MDVzMS42MjEtMC4yODYgMi4xOTgtMC44MDVjMC41MTctMC40NjYgMC44MDItMS4wNjggMC44MDItMS42OTV2LTYuNXpNMyAxM2gxMHYyaC0xMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1JdGFsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMXYxaC0ybC01IDEyaDJ2MWgtN3YtMWgybDUtMTJoLTJ2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4djFoLTMuNjY0YzAuNDMgMC42MDIgMC42NjQgMS4yOTIgMC42NjQgMiAwIDEuMTA3LTAuNTczIDIuMTcyLTEuNTcyIDIuOTIxLTAuOTI3IDAuNjk2LTIuMTQ1IDEuMDc5LTMuNDI4IDEuMDc5cy0yLjUwMS0wLjM4My0zLjQyOC0xLjA3OWMtMC45OTktMC43NDktMS41NzItMS44MTQtMS41NzItMi45MjFoMmMwIDEuMDg0IDEuMzc0IDIgMyAyczMtMC45MTYgMy0yYzAtMS4wODQtMS4zNzQtMi0zLTJoLTh2LTFoNC42OGMtMC4wMzctMC4wMjYtMC4wNzMtMC4wNTItMC4xMDgtMC4wNzktMC45OTktMC43NDktMS41NzItMS44MTQtMS41NzItMi45MjFzMC41NzMtMi4xNzIgMS41NzItMi45MjFjMC45MjctMC42OTYgMi4xNDUtMS4wNzkgMy40MjgtMS4wNzlzMi41MDEgMC4zODMgMy40MjggMS4wNzljMC45OTkgMC43NDkgMS41NzIgMS44MTQgMS41NzIgMi45MjFoLTJjMC0xLjA4NC0xLjM3NC0yLTMtMnMtMyAwLjkxNi0zIDJjMCAxLjA4NCAxLjM3NCAyIDMgMiAxLjIzNCAwIDIuNDA3IDAuMzU0IDMuMzIgMWg0LjY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU9tZWdhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDE0aDRsMS0ydjRoLTZ2LTMuMzQ3YzIuMDQ5LTAuODgzIDMuNS0zLjA4MSAzLjUtNS42NTMgMC0zLjM1LTIuNDYyLTUuOTczLTUuNS01Ljk3M3MtNS41IDIuNjIyLTUuNSA1Ljk3M2MwIDIuNTcyIDEuNDUxIDQuNzcgMy41IDUuNjUzdjMuMzQ3aC02di00bDEgMmg0di0wLjUwOWMtMi45MzItMS4wMzgtNS0zLjU1My01LTYuNDkxIDAtMy44NjYgMy41ODItNyA4LTdzOCAzLjEzNCA4IDdjMCAyLjkzOC0yLjA2OCA1LjQ1Mi01IDYuNDkxdjAuNTA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjcxMyAxMS40OGwwLjY5NC0xLjQ4aDAuNTk0bC0xIDZoLTE1di0xLjE2bDUuMTgtNi4xMTMtNS4xOC01LjE4di0zLjU0N2gxNS4zMTNsMC42ODggNGgtMC41MzdsLTAuMjkzLTAuNjA3Yy0wLjU1Mi0xLjE0Ni0wLjk2Ny0xLjM5My0yLjE3LTEuMzkzaC0xMC4zNDRsNS41MTcgNS41MTYtNC42NDcgNS40ODNoOC40NzRjMS44MTMgMCAyLjI5MS0wLjY1IDIuNzEzLTEuNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGFnZUJyZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOGgydjFoLTJ6TTMgOGgzdjFoLTN6TTcgOGgydjFoLTJ6TTEwIDhoM3YxaC0zek0xNCA4aDJ2MWgtMnpNMTMuNzUgMGwwLjI1IDdoLTEybDAuMjUtN2gwLjVsMC4yNSA2aDEwbDAuMjUtNnpNMi4yNSAxNmwtMC4yNS02aDEybC0wLjI1IDZoLTAuNWwtMC4yNS01aC0xMGwtMC4yNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDMuMjE5djAuNzgxaDJ2MWgtM3YtMi4yODFsMi0wLjkzOHYtMC43ODFoLTJ2LTFoM3YyLjI4MXpNMTAuNTYzIDRoLTIuMTI1bC0yLjkzOCAyLjkzOC0yLjkzOC0yLjkzOGgtMi4xMjVsNCA0LTQgNGgyLjEyNWwyLjkzOC0yLjkzOCAyLjkzOCAyLjkzOGgyLjEyNWwtNC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN1YnNjcmlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxNC4yMTl2MC43ODFoMnYxaC0zdi0yLjI4MWwyLTAuOTM4di0wLjc4MWgtMnYtMWgzdjIuMjgxek0xMC41NjMgNGgtMi4xMjVsLTIuOTM4IDIuOTM4LTIuOTM4LTIuOTM4aC0yLjEyNWw0IDQtNCA0aDIuMTI1bDIuOTM4LTIuOTM4IDIuOTM4IDIuOTM4aDIuMTI1bC00LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3VwZXJzY3JpcHQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMDMyIDEzbDAuOS0zaDQuMTM3bDAuOSAzaDEuNzc1bC0zLTEwaC0zLjQ4OGwtMyAxMGgxLjc3NnpNNS40MzIgNWgxLjEzN2wwLjkgM2gtMi45MzdsMC45LTN6TTExIDEzbDIuNS00IDIuNSA0aC01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgMmgtMWMtMC4yNzYgMC0wLjUtMC4yMjQtMC41LTAuNXMwLjIyNC0wLjUgMC41LTAuNWgyYzAuMjc2IDAgMC41LTAuMjI0IDAuNS0wLjVzLTAuMjI0LTAuNS0wLjUtMC41aC0yYy0wLjgyNyAwLTEuNSAwLjY3My0xLjUgMS41IDAgMC4zODQgMC4xNDUgMC43MzQgMC4zODMgMSAwLjI3NSAwLjMwNyAwLjY3NCAwLjUgMS4xMTcgMC41aDFjMC4yNzYgMCAwLjUgMC4yMjQgMC41IDAuNXMtMC4yMjQgMC41LTAuNSAwLjVoLTJjLTAuMjc2IDAtMC41IDAuMjI0LTAuNSAwLjVzMC4yMjQgMC41IDAuNSAwLjVoMmMwLjgyNyAwIDEuNS0wLjY3MyAxLjUtMS41IDAtMC4zODQtMC4xNDUtMC43MzQtMC4zODMtMS0wLjI3NS0wLjMwNy0wLjY3NC0wLjUtMS4xMTctMC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN1YnNjcmlwdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4wMzIgMTNsMC45LTNoNC4xMzdsMC45IDNoMS43NzVsLTMtMTBoLTMuNDg4bC0zIDEwaDEuNzc2ek01LjQzMiA1aDEuMTM3bDAuOSAzaC0yLjkzN2wwLjktM3pNMTYgM2wtMi41IDQtMi41LTRoNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDEzaC0xYy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjI0LTAuNSAwLjUtMC41aDJjMC4yNzYgMCAwLjUtMC4yMjQgMC41LTAuNXMtMC4yMjQtMC41LTAuNS0wLjVoLTJjLTAuODI3IDAtMS41IDAuNjczLTEuNSAxLjUgMCAwLjM4NCAwLjE0NSAwLjczNCAwLjM4MyAxIDAuMjc1IDAuMzA3IDAuNjc0IDAuNSAxLjExNyAwLjVoMWMwLjI3NiAwIDAuNSAwLjIyNCAwLjUgMC41cy0wLjIyNCAwLjUtMC41IDAuNWgtMmMtMC4yNzYgMC0wLjUgMC4yMjQtMC41IDAuNXMwLjIyNCAwLjUgMC41IDAuNWgyYzAuODI3IDAgMS41LTAuNjczIDEuNS0xLjUgMC0wLjM4NC0wLjE0NS0wLjczNC0wLjM4My0xLTAuMjc1LTAuMzA3LTAuNjc0LTAuNS0xLjExNy0wLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVGV4dENvbG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMDMyIDEzbDAuOS0zaDQuMTM3bDAuOSAzaDEuNzc1bC0zLTEwaC0zLjQ4OGwtMyAxMGgxLjc3NnpNNy40MzIgNWgxLjEzN2wwLjkgM2gtMi45MzdsMC45LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUGFnZWJyZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNnYtNmgxMnY2aC0xdi01aC0xMHY1ek0xNiA5djdoLTEydi03aDF2NmgxMHYtNnpNOCA3aDJ2MWgtMnpNNSA3aDJ2MWgtMnpNMTEgN2gydjFoLTJ6TTE0IDdoMnYxaC0yek0wIDQuNWwzIDMtMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNsZWFyRm9ybWF0dGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE0aDl2MmgtOXpNMTQgMmgtNC43MjdsLTIuODcxIDExaC0yLjA2N2wyLjg3MS0xMWgtNC4yMDV2LTJoMTF6TTE0LjUyOCAxNmwtMi4wMjgtMi4wMjgtMi4wMjggMi4wMjgtMC45NzItMC45NzIgMi4wMjgtMi4wMjgtMi4wMjgtMi4wMjggMC45NzItMC45NzIgMi4wMjggMi4wMjggMi4wMjgtMi4wMjggMC45NzIgMC45NzItMi4wMjggMi4wMjggMi4wMjggMi4wMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzdjExaDE2di0xMWgtMTZ6TTYgMTB2LTJoNHYyaC00ek0xMCAxMXYyaC00di0yaDR6TTEwIDV2MmgtNHYtMmg0ek01IDV2MmgtNHYtMmg0ek0xIDhoNHYyaC00di0yek0xMSA4aDR2MmgtNHYtMnpNMTEgN3YtMmg0djJoLTR6TTEgMTFoNHYyaC00di0yek0xMSAxM3YtMmg0djJoLTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVGFibGUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMXYxNGgxNnYtMTRoLTE2ek02IDEwdi0zaDR2M2gtNHpNMTAgMTF2M2gtNHYtM2g0ek0xMCAzdjNoLTR2LTNoNHpNNSAzdjNoLTR2LTNoNHpNMSA3aDR2M2gtNHYtM3pNMTEgN2g0djNoLTR2LTN6TTExIDZ2LTNoNHYzaC00ek0xIDExaDR2M2gtNHYtM3pNMTEgMTR2LTNoNHYzaC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUluc2VydFRlbXBsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgM2gydjFoLTJ6TTkgM2gydjFoLTJ6TTE0IDN2NGgtM3YtMWgydi0yaC0xdi0xek01IDZoMnYxaC0yek04IDZoMnYxaC0yek0zIDR2MmgxdjFoLTJ2LTRoM3Yxek02IDloMnYxaC0yek05IDloMnYxaC0yek0xNCA5djRoLTN2LTFoMnYtMmgtMXYtMXpNNSAxMmgydjFoLTJ6TTggMTJoMnYxaC0yek0zIDEwdjJoMXYxaC0ydi00aDN2MXpNMTUgMWgtMTR2MTRoMTR2LTE0ek0xNiAwdjAgMTZoLTE2di0xNmgxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QaWxjcm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMGg4djJoLTJ2MTRoLTJ2LTE0aC0ydjE0aC0ydi04Yy0yLjIwOSAwLTQtMS43OTEtNC00czEuNzkxLTQgNC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUx0ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTIuMjA5IDAtNCAxLjc5MS00IDRzMS43OTEgNCA0IDR2OGgydi0xNGgydjE0aDJ2LTE0aDJ2LTJoLTh6TTAgMTFsNC00LTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SdGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYy0yLjIwOSAwLTQgMS43OTEtNCA0czEuNzkxIDQgNCA0djhoMnYtMTRoMnYxNGgydi0xNGgydi0yaC04ek0xNiAzbC00IDQgNCA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNlY3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NDkgMTZjLTAuNzcxIDAtMS40MjQtMC4yMjUtMS45MzktMC42NjktMC41MTktMC40NDctMC43ODItMC45NjktMC43ODItMS41NTIgMC0wLjI4MyAwLjEwMy0wLjUyNyAwLjMwNy0wLjcyNiAwLjIwNy0wLjIwMiAwLjQ2NS0wLjMwOSAwLjc0OC0wLjMwOSAwLjI4MSAwIDAuNTM0IDAuMSAwLjczMiAwLjI5IDAuMTk1IDAuMTg3IDAuMjk0IDAuNDM1IDAuMjk0IDAuNzM2IDAgMC4xNzctMC4wMjkgMC4zNzItMC4wODYgMC41OC0wLjA1NiAwLjIwNi0wLjA2OCAwLjMxMi0wLjA2OCAwLjM2NCAwIDAuMDU4IDAuMDE0IDAuMTI2IDAuMTIxIDAuMTk5IDAuMTk5IDAuMTM4IDAuNDM5IDAuMjA0IDAuNzMyIDAuMjA0IDAuMzUzIDAgMC42NjctMC4xMjMgMC45NjItMC4zNzUgMC4yOS0wLjI0OSAwLjQzMS0wLjUwNSAwLjQzMS0wLjc4MiAwLTAuMzA4LTAuMDgyLTAuNTc1LTAuMjUyLTAuODE2LTAuMjg3LTAuNDAyLTAuODI2LTAuODc0LTEuNjAzLTEuNDAxLTEuMjQ4LTAuODM1LTIuMDc5LTEuNTU5LTIuNTQtMi4yMTEtMC4zNTgtMC41MTEtMC41MzktMS4wNjEtMC41MzktMS42MzYgMC0wLjU3OSAwLjE5LTEuMTU1IDAuNTY0LTEuNzEzIDAuMzItMC40NzcgMC43OTQtMC45MDggMS40MS0xLjI4My0wLjMzLTAuMzU1LTAuNTc3LTAuNjg5LTAuNzM2LTAuOTk1LTAuMjAxLTAuMzg3LTAuMzAzLTAuNzg3LTAuMzAzLTEuMTg5IDAtMC43NDcgMC4yOTUtMS4zOTMgMC44NzgtMS45MnMxLjMxLTAuNzk1IDIuMTYxLTAuNzk1YzAuNzgzIDAgMS40NDEgMC4yMiAxLjk1NiAwLjY1NCAwLjUyMSAwLjQzOSAwLjc4NSAwLjk1MiAwLjc4NSAxLjUyNCAwIDAuMjkyLTAuMTA5IDAuNTUzLTAuMzI0IDAuNzc2bC0wLjAwNCAwLjAwNGMtMC4xMjUgMC4xMjQtMC4zNTMgMC4yNzEtMC43MzUgMC4yNzEtMC4yOTkgMC0wLjU2MS0wLjA5OC0wLjc1OC0wLjI4My0wLjE5Ni0wLjE4NC0wLjI5Ni0wLjQwNS0wLjI5Ni0wLjY1NiAwLTAuMTA4IDAuMDI3LTAuMjcyIDAuMDg0LTAuNTE1IDAuMDI4LTAuMTE1IDAuMDQyLTAuMjIxIDAuMDQyLTAuMzE2IDAtMC4xNjItMC4wNTgtMC4yODUtMC4xODMtMC4zOS0wLjEyOS0wLjEwOC0wLjMxNC0wLjE2MS0wLjU2NS0wLjE2MS0wLjM4OSAwLTAuNzA4IDAuMTE4LTAuOTc1IDAuMzYxcy0wLjM5OSAwLjUzMy0wLjM5OSAwLjg4M2MwIDAuMzE1IDAuMDcxIDAuNTc0IDAuMjEyIDAuNzcxIDAuMjY3IDAuMzc0IDAuNzMxIDAuNzc4IDEuMzc4IDEuMjAxIDEuMzE1IDAuODUzIDIuMjMzIDEuNjM2IDIuNzI3IDIuMzI1IDAuMzY1IDAuNTE4IDAuNTQ5IDEuMDY4IDAuNTQ5IDEuNjM3IDAgMC41NzItMC4xODYgMS4xNDgtMC41NTIgMS43MTQtMC4zMTYgMC40ODctMC43OTMgMC45MjYtMS40MiAxLjMwOCAwLjM0NyAwLjM2NyAwLjU5MSAwLjY4OCAwLjc0MyAwLjk3NyAwLjE4OSAwLjM1OSAwLjI4NCAwLjc1MSAwLjI4NCAxLjE2NSAwIDAuNzc2LTAuMjk2IDEuNDM1LTAuODc5IDEuOTZzLTEuMzEgMC43OS0yLjE2MSAwLjc5ek02Ljk3NSA1LjU2OGMtMC43NTMgMC40NTItMS4xMiAwLjk3Mi0xLjEyIDEuNTgzIDAgMC4zNTYgMC4xMDIgMC42NzQgMC4zMSAwLjk3MyAwLjMxMSAwLjQzNiAwLjkyNiAwLjk3IDEuODI1IDEuNTgzIDAuMzgxIDAuMjU5IDAuNzI0IDAuNTExIDEuMDI1IDAuNzUxIDAuNzY3LTAuNDYxIDEuMTQtMC45NzQgMS4xNC0xLjU2NSAwLTAuMzIyLTAuMTI3LTAuNjY4LTAuMzc4LTEuMDMwLTAuMjYzLTAuMzc4LTAuODI2LTAuODcyLTEuNjc0LTEuNDY3LTAuNDQzLTAuMzA2LTAuODIxLTAuNTgzLTEuMTI4LTAuODI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBhcmFncmFwaExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxaDE2djJoLTE2ek0wIDRoMTB2MmgtMTB6TTAgMTBoMTB2MmgtMTB6TTAgN2gxNnYyaC0xNnpNMCAxM2gxNnYyaC0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QYXJhZ3JhcGhDZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxaDE2djJoLTE2ek0zIDRoMTB2MmgtMTB6TTMgMTBoMTB2MmgtMTB6TTAgN2gxNnYyaC0xNnpNMCAxM2gxNnYyaC0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1QYXJhZ3JhcGhSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDFoMTZ2MmgtMTZ6TTYgNGgxMHYyaC0xMHpNNiAxMGgxMHYyaC0xMHpNMCA3aDE2djJoLTE2ek0wIDEzaDE2djJoLTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBhcmFncmFwaEp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxaDE2djJoLTE2ek0wIDRoMTZ2MmgtMTZ6TTAgN2gxNnYyaC0xNnpNMCAxMGgxNnYyaC0xNnpNMCAxM2gxNnYyaC0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1JbmRlbnRJbmNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDFoMTZ2MmgtMTZ6TTYgNGgxMHYyaC0xMHpNNiA3aDEwdjJoLTEwek02IDEwaDEwdjJoLTEwek0wIDEzaDE2djJoLTE2ek0wIDExdi02bDQgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1JbmRlbnREZWNyZWFzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDFoMTZ2MmgtMTZ6TTYgNGgxMHYyaC0xMHpNNiA3aDEwdjJoLTEwek02IDEwaDEwdjJoLTEwek0wIDEzaDE2djJoLTE2ek00IDV2NmwtNC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNoYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTBjMCAwIDAuOTE5LTMgNi0zdjNsNi00LTYtNHYzYy00IDAtNiAyLjQ5NS02IDV6TTExIDEyaC05di02aDEuOTY3YzAuMTU4LTAuMTg2IDAuMzI3LTAuMzY1IDAuNTA4LTAuNTM0IDAuNjg3LTAuNjQ0IDEuNTA5LTEuMTM1IDIuNDM5LTEuNDY2aC02LjkxNHYxMGgxM3YtNC4xOTdsLTIgMS4zMzN2MC44NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTmV3VGFiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMXYxMmgxMnYtMTJoLTEyek0xNCAxMmgtMTB2LTEwaDEwdjEwek0yIDE0di0xMC41bC0xLTF2MTIuNWgxMi41bC0xLTFoLTEwLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDRsMi41IDIuNS0zIDMgMS41IDEuNSAzLTMgMi41IDIuNXYtNi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVtYmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTEuNWwxLjUgMS41IDUtNS01LTUtMS41IDEuNSAzLjUgMy41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNC41bC0xLjUtMS41LTUgNSA1IDUgMS41LTEuNS0zLjUtMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUVtYmVkMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAyMCAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxMS41bDEuNSAxLjUgNS01LTUtNS0xLjUgMS41IDMuNSAzLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA0LjVsLTEuNS0xLjUtNSA1IDUgNSAxLjUtMS41LTMuNS0zLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOTU4IDIuMzUybDEuMDg1IDAuMjk2LTMgMTEtMS4wODUtMC4yOTYgMy0xMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UZXJtaW5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDF2MTRoMTZ2LTE0aC0xNnpNMTUgMTRoLTE0di0xMmgxNHYxMnpNMTQgM2gtMTJ2MTBoMTJ2LTEwek03IDhoLTF2MWgtMXYxaC0xdi0xaDF2LTFoMXYtMWgtMXYtMWgtMXYtMWgxdjFoMXYxaDF2MXpNMTEgMTBoLTN2LTFoM3YxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNoYXJlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDExYy0wLjcwNiAwLTEuMzQyIDAuMjkzLTEuNzk3IDAuNzYzbC02LjczNC0zLjM2N2MwLjAyMS0wLjEyOSAwLjAzMi0wLjI2MSAwLjAzMi0wLjM5NnMtMC4wMTEtMC4yNjctMC4wMzItMC4zOTZsNi43MzQtMy4zNjdjMC40NTUgMC40NyAxLjA5MSAwLjc2MyAxLjc5NyAwLjc2MyAxLjM4MSAwIDIuNS0xLjExOSAyLjUtMi41cy0xLjExOS0yLjUtMi41LTIuNS0yLjUgMS4xMTktMi41IDIuNWMwIDAuMTM1IDAuMDExIDAuMjY3IDAuMDMxIDAuMzk2bC02LjczNCAzLjM2N2MtMC40NTUtMC40Ny0xLjA5MS0wLjc2My0xLjc5Ny0wLjc2My0xLjM4MSAwLTIuNSAxLjExOS0yLjUgMi41czEuMTE5IDIuNSAyLjUgMi41YzAuNzA2IDAgMS4zNDMtMC4yOTMgMS43OTctMC43NjNsNi43MzQgMy4zNjdjLTAuMDIxIDAuMTI5LTAuMDMxIDAuMjYxLTAuMDMxIDAuMzk2IDAgMS4zODEgMS4xMTkgMi41IDIuNSAyLjVzMi41LTEuMTE5IDIuNS0yLjVjMC0xLjM4MS0xLjExOS0yLjUtMi41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1NYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjMzMyAwaC0xMC42NjZjLTEuNDY3IDAtMi42NjcgMS4yLTIuNjY3IDIuNjY3djEwLjY2NmMwIDEuNDY3IDEuMiAyLjY2NyAyLjY2NyAyLjY2N2gxMC42NjZjMS40NjggMCAyLjY2Ny0xLjIgMi42NjctMi42Njd2LTEwLjY2NmMwLTEuNDY3LTEuMTk5LTIuNjY3LTIuNjY3LTIuNjY3ek00IDRoOGMwLjE0MyAwIDAuMjgxIDAuMDMxIDAuNDA5IDAuMDg4bC00LjQwOSA1LjE0My00LjQwOS01LjE0M2MwLjEyNy0wLjA1OCAwLjI2Ni0wLjA4OCAwLjQwOS0wLjA4OHpNMyAxMXYtNmMwLTAuMDIxIDAuMDAxLTAuMDQyIDAuMDAyLTAuMDYzbDIuOTMyIDMuNDIxLTIuOSAyLjljLTAuMDIzLTAuMDgzLTAuMDM0LTAuMTctMC4wMzQtMC4yNTh6TTEyIDEyaC04Yy0wLjA4OCAwLTAuMTc1LTAuMDEyLTAuMjU4LTAuMDM0bDIuODQ2LTIuODQ2IDEuNDEzIDEuNjQ4IDEuNDEzLTEuNjQ4IDIuODQ2IDIuODQ2Yy0wLjA4MyAwLjAyMy0wLjE3IDAuMDM0LTAuMjU4IDAuMDM0ek0xMyAxMWMwIDAuMDg4LTAuMDEyIDAuMTc1LTAuMDM0IDAuMjU4bC0yLjktMi45IDIuOTMyLTMuNDIxYzAuMDAxIDAuMDIxIDAuMDAyIDAuMDQyIDAuMDAyIDAuMDYzdjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTWFpbDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMzMzIDBoLTEwLjY2NmMtMS40NjcgMC0yLjY2NyAxLjItMi42NjcgMi42Njd2MTAuNjY2YzAgMS40NjggMS4yIDIuNjY3IDIuNjY3IDIuNjY3aDEwLjY2NmMxLjQ2NyAwIDIuNjY3LTEuMTk5IDIuNjY3LTIuNjY3di0xMC42NjZjMC0xLjQ2Ny0xLjItMi42NjctMi42NjctMi42Njd6TTEzLjMzMyAyYzAuMTI1IDAgMC4yNDMgMC4wMzYgMC4zNDQgMC4wOTlsLTUuNjc4IDQuNjk0LTUuNjc3LTQuNjk0YzAuMTAxLTAuMDYzIDAuMjE5LTAuMDk5IDAuMzQ0LTAuMDk5aDEwLjY2NnpNMi42NjcgMTRjLTAuMDMwIDAtMC4wNjAtMC4wMDItMC4wODktMC4wMDZsMy41MjUtNC44OS0wLjQ1Ny0wLjQ1Ny0zLjY0NiAzLjY0NnYtOS41NDlsNiA3LjI1NiA2LTcuMjU2djkuNTQ5bC0zLjY0Ni0zLjY0Ni0wLjQ1NyAwLjQ1NyAzLjUyNSA0Ljg5Yy0wLjAyOSAwLjAwNC0wLjA1OSAwLjAwNi0wLjA4OCAwLjAwNmgtMTAuNjY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1haWwzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjMzMyAwaC0xMC42NjZjLTEuNDY3IDAtMi42NjcgMS4yLTIuNjY3IDIuNjY3djEwLjY2NmMwIDEuNDY4IDEuMiAyLjY2NyAyLjY2NyAyLjY2N2gxMC42NjZjMS40NjcgMCAyLjY2Ny0xLjE5OSAyLjY2Ny0yLjY2N3YtMTAuNjY2YzAtMS40NjctMS4yLTIuNjY3LTIuNjY3LTIuNjY3ek0yLjg1NCAxMy44NTRsLTEuMjA3LTEuMjA3IDQtNCAwLjQ1NyAwLjQ1Ny0zLjI1IDQuNzV6TTIuMzk2IDMuMTA0bDAuNDU3LTAuNDU3IDUuMTQ2IDQuMTQ2IDUuMTQ2LTQuMTQ2IDAuNDU3IDAuNDU3LTUuNjA0IDYuNjA0LTUuNjA0LTYuNjA0ek0xMy4xNDYgMTMuODU0bC0zLjI1LTQuNzUgMC40NTctMC40NTcgNCA0LTEuMjA3IDEuMjA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU1haWw0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNNCA0aDhjMC4xNDMgMCAwLjI4MSAwLjAzMSAwLjQwOSAwLjA4OGwtNC40MDkgNS4xNDMtNC40MDktNS4xNDNjMC4xMjctMC4wNTggMC4yNjYtMC4wODggMC40MDktMC4wODh6TTMgMTF2LTZjMC0wLjAyMSAwLjAwMS0wLjA0MiAwLjAwMi0wLjA2M2wyLjkzMiAzLjQyMS0yLjkgMi45Yy0wLjAyMy0wLjA4My0wLjAzNC0wLjE3LTAuMDM0LTAuMjU4ek0xMiAxMmgtOGMtMC4wODggMC0wLjE3NS0wLjAxMi0wLjI1OC0wLjAzNGwyLjg0Ni0yLjg0NiAxLjQxMyAxLjY0OCAxLjQxMy0xLjY0OCAyLjg0NiAyLjg0NmMtMC4wODMgMC4wMjMtMC4xNyAwLjAzNC0wLjI1OCAwLjAzNHpNMTMgMTFjMCAwLjA4OC0wLjAxMiAwLjE3NS0wLjAzNCAwLjI1OGwtMi45LTIuOSAyLjkzMi0zLjQyMWMwLjAwMSAwLjAyMSAwLjAwMiAwLjA0MiAwLjAwMiAwLjA2M3Y2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUFtYXpvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC40NjMgMTMuODMxYy0xLjc1MyAxLjI5NC00LjI5MSAxLjk4MS02LjQ3OCAxLjk4MS0zLjA2NiAwLTUuODI1LTEuMTMxLTcuOTEyLTMuMDE5LTAuMTYzLTAuMTQ3LTAuMDE5LTAuMzUgMC4xNzgtMC4yMzQgMi4yNTMgMS4zMTMgNS4wNDEgMi4xIDcuOTE5IDIuMSAxLjk0MSAwIDQuMDc1LTAuNDAzIDYuMDQxLTEuMjM4IDAuMjk0LTAuMTI1IDAuNTQ0IDAuMTk3IDAuMjUzIDAuNDA5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjE5MSAxM2MtMC4yMjUtMC4yODctMS40ODEtMC4xMzctMi4wNDctMC4wNjktMC4xNzIgMC4wMTktMC4xOTctMC4xMjgtMC4wNDQtMC4yMzggMS4wMDMtMC43MDMgMi42NDctMC41IDIuODM4LTAuMjY2IDAuMTk0IDAuMjM4LTAuMDUwIDEuODg0LTAuOTkxIDIuNjcyLTAuMTQ0IDAuMTIyLTAuMjgxIDAuMDU2LTAuMjE5LTAuMTAzIDAuMjE2LTAuNTI4IDAuNjg4LTEuNzA5IDAuNDYzLTEuOTk3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjA1MyAxMS44MzhsMC4wMDMgMC4wMDNjMC4zODctMC4zNDEgMS4wODQtMC45NSAxLjQ3OC0xLjI3OCAwLjE1Ni0wLjEyNSAwLjEyOC0wLjMzNCAwLjAwNi0wLjUwOS0wLjM1My0wLjQ4OC0wLjcyOC0wLjg4NC0wLjcyOC0xLjc4NHYtM2MwLTEuMjcyIDAuMDg4LTIuNDM4LTAuODQ3LTMuMzEzLTAuNzM4LTAuNzA2LTEuOTYzLTAuOTU2LTIuOS0wLjk1Ni0xLjgzMSAwLTMuODc1IDAuNjg0LTQuMzAzIDIuOTQ3LTAuMDQ3IDAuMjQxIDAuMTMxIDAuMzY5IDAuMjg3IDAuNDAzbDEuODY2IDAuMjAzYzAuMTc1LTAuMDA5IDAuMy0wLjE4MSAwLjMzNC0wLjM1NiAwLjE1OS0wLjc3OCAwLjgxMy0xLjE1NiAxLjU0Ny0xLjE1NiAwLjM5NyAwIDAuODQ3IDAuMTQ0IDEuMDgxIDAuNSAwLjI2OSAwLjM5NyAwLjIzNCAwLjkzOCAwLjIzNCAxLjM5N3YwLjI1Yy0xLjExNiAwLjEyNS0yLjU3NSAwLjIwNi0zLjYxOSAwLjY2Ni0xLjIwNiAwLjUyMi0yLjA1MyAxLjU4NC0yLjA1MyAzLjE0NyAwIDIgMS4yNTkgMyAyLjg4MSAzIDEuMzY5IDAgMi4xMTYtMC4zMjIgMy4xNzItMS40MDMgMC4zNSAwLjUwNiAwLjQ2MyAwLjc1MyAxLjEwMyAxLjI4NCAwLjE0NyAwLjA3OCAwLjMyOCAwLjA3MiAwLjQ1Ni0wLjA0NHpNOS4xMTMgNy4xNDRjMCAwLjc1IDAuMDE5IDEuMzc1LTAuMzU5IDIuMDQxLTAuMzA2IDAuNTQ0LTAuNzkxIDAuODc1LTEuMzMxIDAuODc1LTAuNzM3IDAtMS4xNjktMC41NjMtMS4xNjktMS4zOTQgMC0xLjY0MSAxLjQ3Mi0xLjkzOCAyLjg2My0xLjkzOHYwLjQxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Hb29nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4xNTkgNi44NTZ2Mi43NDRoNC41MzdjLTAuMTg0IDEuMTc4LTEuMzcyIDMuNDUtNC41MzcgMy40NS0yLjczMSAwLTQuOTU5LTIuMjYyLTQuOTU5LTUuMDUwczIuMjI4LTUuMDUwIDQuOTU5LTUuMDUwYzEuNTUzIDAgMi41OTQgMC42NjMgMy4xODggMS4yMzRsMi4xNzItMi4wOTFjLTEuMzk0LTEuMzA2LTMuMi0yLjA5NC01LjM1OS0yLjA5NC00LjQyMiAwLTggMy41NzgtOCA4czMuNTc4IDggOCA4YzQuNjE2IDAgNy42ODEtMy4yNDcgNy42ODEtNy44MTYgMC0wLjUyNS0wLjA1Ni0wLjkyNS0wLjEyNS0xLjMyNWwtNy41NTYtMC4wMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltR29vZ2xlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDBoLTEzYy0wLjgyNSAwLTEuNSAwLjY3NS0xLjUgMS41djEzYzAgMC44MjUgMC42NzUgMS41IDEuNSAxLjVoMTNjMC44MjUgMCAxLjUtMC42NzUgMS41LTEuNXYtMTNjMC0wLjgyNS0wLjY3NS0xLjUtMS41LTEuNXpNOC4xMTkgMTRjLTMuMzE2IDAtNi0yLjY4NC02LTZzMi42ODQtNiA2LTZjMS42MTkgMCAyLjk3NSAwLjU5MSA0LjAxOSAxLjU2OWwtMS42MjggMS41NjljLTAuNDQ3LTAuNDI4LTEuMjI1LTAuOTI1LTIuMzkxLTAuOTI1LTIuMDUwIDAtMy43MTkgMS42OTctMy43MTkgMy43ODdzMS42NzIgMy43ODcgMy43MTkgMy43ODdjMi4zNzUgMCAzLjI2Ni0xLjcwNiAzLjQwMy0yLjU4OGgtMy40MDN2LTIuMDU2aDUuNjY2YzAuMDUwIDAuMyAwLjA5NCAwLjYgMC4wOTQgMC45OTQgMC4wMDMgMy40MjgtMi4yOTQgNS44NjMtNS43NTkgNS44NjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltR29vZ2xlMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE5IDAtOCAzLjU4MS04IDhzMy41ODEgOCA4IDggOC0zLjU4MSA4LTgtMy41ODEtOC04LTh6TTguMTE5IDE0Yy0zLjMxNiAwLTYtMi42ODQtNi02czIuNjg0LTYgNi02YzEuNjE5IDAgMi45NzUgMC41OTEgNC4wMTkgMS41NjlsLTEuNjI4IDEuNTY5Yy0wLjQ0Ny0wLjQyOC0xLjIyNS0wLjkyNS0yLjM5MS0wLjkyNS0yLjA1MCAwLTMuNzE5IDEuNjk3LTMuNzE5IDMuNzg3czEuNjcyIDMuNzg3IDMuNzE5IDMuNzg3YzIuMzc1IDAgMy4yNjYtMS43MDYgMy40MDMtMi41ODhoLTMuNDAzdi0yLjA1Nmg1LjY2NmMwLjA1MCAwLjMgMC4wOTQgMC42IDAuMDk0IDAuOTk0IDAuMDAzIDMuNDI4LTIuMjk0IDUuODYzLTUuNzU5IDUuODYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUdvb2dsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wOTEgNy4xNDd2MS43NDdoMi44ODhjLTAuMTE2IDAuNzUtMC44NzIgMi4xOTctMi44ODggMi4xOTctMS43MzcgMC0zLjE1Ni0xLjQ0MS0zLjE1Ni0zLjIxNnMxLjQxOS0zLjIxNiAzLjE1Ni0zLjIxNmMwLjk5MSAwIDEuNjUgMC40MjIgMi4wMjggMC43ODRsMS4zODEtMS4zMzFjLTAuODg4LTAuODI4LTIuMDM3LTEuMzMxLTMuNDA5LTEuMzMxLTIuODE2IDAuMDAzLTUuMDkxIDIuMjc4LTUuMDkxIDUuMDk0czIuMjc1IDUuMDkxIDUuMDkxIDUuMDkxYzIuOTM3IDAgNC44ODgtMi4wNjYgNC44ODgtNC45NzUgMC0wLjMzNC0wLjAzNy0wLjU5MS0wLjA4MS0wLjg0NGgtNC44MDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgN2gtMS41di0xLjVoLTEuNXYxLjVoLTEuNXYxLjVoMS41djEuNWgxLjV2LTEuNWgxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltR29vZ2xlUGx1czIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTYgMTJjLTIuMjEyIDAtNC0xLjc4Ny00LTRzMS43ODgtNCA0LTRjMS4wODEgMCAxLjk4NCAwLjM5NCAyLjY4MSAxLjA0N2wtMS4wODggMS4wNDRjLTAuMjk3LTAuMjg0LTAuODE2LTAuNjE2LTEuNTk0LTAuNjE2LTEuMzY2IDAtMi40ODEgMS4xMzEtMi40ODEgMi41MjVzMS4xMTYgMi41MjUgMi40ODEgMi41MjVjMS41ODQgMCAyLjE3OC0xLjEzNyAyLjI2OS0xLjcyNWgtMi4yNjl2LTEuMzcyaDMuNzc4YzAuMDM0IDAuMiAwLjA2MyAwLjQgMC4wNjMgMC42NjMgMCAyLjI4Ny0xLjUzMSAzLjkwOS0zLjg0MSAzLjkwOXpNMTQgOGgtMXYxaC0xdi0xaC0xdi0xaDF2LTFoMXYxaDF2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Hb29nbGVQbHVzMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE5IDAtOCAzLjU4MS04IDhzMy41ODEgOCA4IDggOC0zLjU4MSA4LTgtMy41ODEtOC04LTh6TTYgMTJjLTIuMjEyIDAtNC0xLjc4Ny00LTRzMS43ODgtNCA0LTRjMS4wODEgMCAxLjk4NCAwLjM5NCAyLjY4MSAxLjA0N2wtMS4wODggMS4wNDRjLTAuMjk3LTAuMjg0LTAuODE2LTAuNjE2LTEuNTk0LTAuNjE2LTEuMzY2IDAtMi40ODEgMS4xMzEtMi40ODEgMi41MjVzMS4xMTYgMi41MjUgMi40ODEgMi41MjVjMS41ODQgMCAyLjE3OC0xLjEzNyAyLjI2OS0xLjcyNWgtMi4yNjl2LTEuMzcyaDMuNzc4YzAuMDM0IDAuMiAwLjA2MyAwLjQgMC4wNjMgMC42NjMgMCAyLjI4Ny0xLjUzMSAzLjkwOS0zLjg0MSAzLjkwOXpNMTMgOHYxaC0xdi0xaC0xdi0xaDF2LTFoMXYxaDF2MWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IYW5nb3V0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljk5NyAwYy0zLjgxNiAwLTYuOTA5IDMuMDk0LTYuOTA5IDYuOTA5IDAgMy42MTYgMy4yOTQgNi41NDcgNi45MDkgNi41NDd2Mi41NDRjNC4xOTctMi4xMjggNi45MTYtNS41NTYgNi45MTYtOS4wOTEgMC0zLjgxNi0zLjEtNi45MDktNi45MTYtNi45MDl6TTcgOGMwIDAuODI4LTAuNDQ3IDEuNS0xIDEuNXYtMS41aC0ydi0zaDN2M3pNMTIgOGMwIDAuODI4LTAuNDQ3IDEuNS0xIDEuNXYtMS41aC0ydi0zaDN2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Hb29nbGVEcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljg0NCAxMGwtMi44ODQgNWg5LjA3MmwyLjg4NC01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUwNiA5bC00LjYxOS04aC01Ljc3NWw0LjYxOSA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTM0IDJsLTQuNTM0IDcuODU2IDIuODg4IDUgNC41MzQtNy44NTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmFjZWJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDNoMi41di0zaC0yLjVjLTEuOTMgMC0zLjUgMS41Ny0zLjUgMy41djEuNWgtMnYzaDJ2OGgzdi04aDIuNWwwLjUtM2gtM3YtMS41YzAtMC4yNzEgMC4yMjktMC41IDAuNS0wLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmFjZWJvb2syIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWg2LjV2LTdoLTJ2LTJoMnYtMWMwLTEuNjUzIDEuMzQ3LTMgMy0zaDJ2MmgtMmMtMC41NSAwLTEgMC40NS0xIDF2MWgzbC0wLjUgMmgtMi41djdoNC41YzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xMSAyLjVjMC0wLjI3NSAwLjIyNS0wLjUgMC41LTAuNWgyYzAuMjc1IDAgMC41IDAuMjI1IDAuNSAwLjV2MmMwIDAuMjc1LTAuMjI1IDAuNS0wLjUgMC41aC0yYy0wLjI3NSAwLTAuNS0wLjIyNS0wLjUtMC41di0yek04IDVjMS42NTYgMCAzIDEuMzQ0IDMgM3MtMS4zNDQgMy0zIDNjLTEuNjU2IDAtMy0xLjM0NC0zLTNzMS4zNDQtMyAzLTN6TTE0IDEzLjV2MGMwIDAuMjc1LTAuMjI1IDAuNS0wLjUgMC41aC0xMWMtMC4yNzUgMC0wLjUtMC4yMjUtMC41LTAuNXYwLTYuNWgxLjFjLTAuMDY2IDAuMzIyLTAuMSAwLjY1Ni0wLjEgMSAwIDIuNzYyIDIuMjM3IDUgNSA1czUtMi4yMzggNS01YzAtMC4zNDQtMC4wMzQtMC42NzgtMC4xLTFoMS4xdjYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1XaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy42NDEgMi4zMjVjLTEuNDk3LTEuNS0zLjQ4OC0yLjMyNS01LjYwOS0yLjMyNS00LjM2OSAwLTcuOTI1IDMuNTU2LTcuOTI1IDcuOTI4IDAgMS4zOTcgMC4zNjYgMi43NjMgMS4wNTkgMy45NjNsLTEuMTI1IDQuMTA5IDQuMjAzLTEuMTAzYzEuMTU5IDAuNjMxIDIuNDYzIDAuOTY2IDMuNzg3IDAuOTY2aDAuMDAzYzAgMCAwIDAgMCAwIDQuMzY5IDAgNy45MjgtMy41NTYgNy45MjgtNy45MjggMC0yLjExOS0wLjgyNS00LjEwOS0yLjMyMi01LjYwOXpNOC4wMzQgMTQuNTI1djBjLTEuMTg0IDAtMi4zNDQtMC4zMTktMy4zNTYtMC45MTlsLTAuMjQxLTAuMTQ0LTIuNDk0IDAuNjUzIDAuNjY2LTIuNDMxLTAuMTU2LTAuMjVjLTAuNjYzLTEuMDQ3LTEuMDA5LTIuMjU5LTEuMDA5LTMuNTA2IDAtMy42MzQgMi45NTYtNi41OTEgNi41OTQtNi41OTEgMS43NTkgMCAzLjQxNiAwLjY4OCA0LjY1OSAxLjkzMSAxLjI0NCAxLjI0NyAxLjkyOCAyLjkgMS45MjggNC42NjItMC4wMDMgMy42MzctMi45NTkgNi41OTQtNi41OTEgNi41OTR6TTExLjY0NyA5LjU4OGMtMC4xOTctMC4xLTEuMTcyLTAuNTc4LTEuMzUzLTAuNjQ0cy0wLjMxMy0wLjEtMC40NDcgMC4xYy0wLjEzMSAwLjE5Ny0wLjUxMiAwLjY0NC0wLjYyOCAwLjc3OC0wLjExNiAwLjEzMS0wLjIzMSAwLjE1LTAuNDI4IDAuMDUwcy0wLjgzOC0wLjMwOS0xLjU5NC0wLjk4NGMtMC41ODgtMC41MjUtMC45ODctMS4xNzUtMS4xMDMtMS4zNzJzLTAuMDEzLTAuMzA2IDAuMDg4LTAuNDAzYzAuMDkxLTAuMDg4IDAuMTk3LTAuMjMxIDAuMjk3LTAuMzQ3czAuMTMxLTAuMTk3IDAuMTk3LTAuMzMxYzAuMDY2LTAuMTMxIDAuMDM0LTAuMjQ3LTAuMDE2LTAuMzQ3cy0wLjQ0Ny0xLjA3NS0wLjYwOS0xLjQ3MmMtMC4xNTktMC4zODgtMC4zMjUtMC4zMzQtMC40NDctMC4zNDEtMC4xMTYtMC4wMDYtMC4yNDctMC4wMDYtMC4zNzgtMC4wMDZzLTAuMzQ3IDAuMDUwLTAuNTI4IDAuMjQ3Yy0wLjE4MSAwLjE5Ny0wLjY5NCAwLjY3OC0wLjY5NCAxLjY1M3MwLjcwOSAxLjkxNiAwLjgwOSAyLjA1MGMwLjEgMC4xMzEgMS4zOTcgMi4xMzQgMy4zODQgMi45OTEgMC40NzIgMC4yMDMgMC44NDEgMC4zMjUgMS4xMjggMC40MTkgMC40NzUgMC4xNSAwLjkwNiAwLjEyOCAxLjI0NyAwLjA3OCAwLjM4MS0wLjA1NiAxLjE3Mi0wLjQ3OCAxLjMzOC0wLjk0MXMwLjE2Ni0wLjg1OSAwLjExNi0wLjk0MWMtMC4wNDctMC4wODgtMC4xNzgtMC4xMzctMC4zNzgtMC4yMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3BvdGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNCAwLTggMy42LTggOHMzLjYgOCA4IDggOC0zLjYgOC04LTMuNTU5LTgtOC04ek0xMS42ODEgMTEuNTU5Yy0wLjE1OSAwLjI0MS0wLjQ0MSAwLjMxOS0wLjY4MSAwLjE1OS0xLjg4MS0xLjE1OS00LjI0MS0xLjQtNy4wNDEtMC43NTktMC4yODEgMC4wODEtMC41MTktMC4xMTktMC42LTAuMzU5LTAuMDgxLTAuMjgxIDAuMTE5LTAuNTE5IDAuMzU5LTAuNiAzLjA0MS0wLjY4MSA1LjY4MS0wLjQgNy43NTkgMC44ODEgMC4yODEgMC4xMTkgMC4zMjIgMC40MzggMC4yMDMgMC42Nzh6TTEyLjY0MSA5LjM1OWMtMC4yIDAuMjgxLTAuNTU5IDAuNC0wLjg0MSAwLjItMi4xNTktMS4zMTktNS40NDEtMS43MTktNy45NTktMC45MTktMC4zMTkgMC4wODEtMC42ODEtMC4wODEtMC43NTktMC40LTAuMDgxLTAuMzE5IDAuMDgxLTAuNjgxIDAuNC0wLjc1OSAyLjkxOS0wLjg4MSA2LjUxOS0wLjQ0MSA5IDEuMDgxIDAuMjM4IDAuMTE5IDAuMzU5IDAuNTE5IDAuMTU5IDAuNzk3ek0xMi43MTkgNy4xMTljLTIuNTU5LTEuNTE5LTYuODQxLTEuNjgxLTkuMjgxLTAuOTE5LTAuNCAwLjExOS0wLjgtMC4xMTktMC45MTktMC40ODEtMC4xMTktMC40IDAuMTE5LTAuOCAwLjQ4MS0wLjkxOSAyLjg0MS0wLjg0MSA3LjUxOS0wLjY4MSAxMC40ODEgMS4wODEgMC4zNTkgMC4yIDAuNDgxIDAuNjgxIDAuMjgxIDEuMDQxLTAuMjAzIDAuMjc4LTAuNjgxIDAuMzk3LTEuMDQ0IDAuMTk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVRlbGVncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTkgMC04IDMuNTgxLTggOHMzLjU4MSA4IDggOCA4LTMuNTgxIDgtOC0zLjU4MS04LTgtOHpNMTEuOTMxIDUuNDg0bC0xLjMxMyA2LjE4NGMtMC4wOTEgMC40NDEtMC4zNTYgMC41NDQtMC43MjUgMC4zNDFsLTItMS40NzgtMC45NTkgMC45MzRjLTAuMTEyIDAuMTA5LTAuMiAwLjItMC40IDAuMi0wLjI1OSAwLTAuMjE2LTAuMDk3LTAuMzAzLTAuMzQ0bC0wLjY4MS0yLjIzNy0xLjk3OC0wLjYxNmMtMC40MjgtMC4xMzEtMC40MzEtMC40MjUgMC4wOTctMC42MzRsNy43MDYtMi45NzVjMC4zNS0wLjE1OSAwLjY5MSAwLjA4NCAwLjU1NiAwLjYyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Ud2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDMuNTM4Yy0wLjU4OCAwLjI2My0xLjIyMiAwLjQzOC0xLjg4NCAwLjUxNiAwLjY3OC0wLjQwNiAxLjE5Ny0xLjA1MCAxLjQ0NC0xLjgxNi0wLjYzNCAwLjM3NS0xLjMzOCAwLjY1LTIuMDg0IDAuNzk3LTAuNi0wLjYzOC0xLjQ1My0xLjAzNC0yLjM5Ny0xLjAzNC0xLjgxMyAwLTMuMjgxIDEuNDY5LTMuMjgxIDMuMjgxIDAgMC4yNTYgMC4wMjggMC41MDYgMC4wODQgMC43NDctMi43MjgtMC4xMzgtNS4xNDctMS40NDQtNi43NjYtMy40MzEtMC4yODEgMC40ODQtMC40NDQgMS4wNTAtMC40NDQgMS42NSAwIDEuMTM4IDAuNTc4IDIuMTQ0IDEuNDU5IDIuNzMxLTAuNTM4LTAuMDE2LTEuMDQ0LTAuMTY2LTEuNDg4LTAuNDA5IDAgMC4wMTMgMCAwLjAyOCAwIDAuMDQxIDAgMS41OTEgMS4xMzEgMi45MTkgMi42MzQgMy4yMTktMC4yNzUgMC4wNzUtMC41NjYgMC4xMTYtMC44NjYgMC4xMTYtMC4yMTIgMC0wLjQxNi0wLjAyMi0wLjYxOS0wLjA1OSAwLjQxOSAxLjMwMyAxLjYzMSAyLjI1MyAzLjA2NiAyLjI4MS0xLjEyNSAwLjg4MS0yLjUzOCAxLjQwNi00LjA3OCAxLjQwNi0wLjI2NiAwLTAuNTI1LTAuMDE2LTAuNzg0LTAuMDQ3IDEuNDU2IDAuOTM0IDMuMTgxIDEuNDc1IDUuMDM0IDEuNDc1IDYuMDM3IDAgOS4zNDEtNS4wMDMgOS4zNDEtOS4zNDEgMC0wLjE0NC0wLjAwMy0wLjI4NC0wLjAwOS0wLjQyNSAwLjY0MS0wLjQ1OSAxLjE5Ny0xLjAzOCAxLjYzNy0xLjY5N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1WaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjAxMiA3Ljk1M2MtMC40MTIgMC4wOTQtMC44MDkgMC4xMzctMS4xNjkgMC4xMzctMi4wMTkgMC0zLjU3Mi0xLjQwOS0zLjU3Mi0zLjg2MiAwLTEuMjAzIDAuNDY2LTEuODI1IDEuMTIyLTEuODI1IDAuNjI1IDAgMS4wNDEgMC41NTkgMS4wNDEgMS42OTcgMCAwLjY0Ny0wLjE3MiAxLjM1Ni0wLjMgMS43NzUgMCAwIDAuNjIyIDEuMDg0IDIuMzIyIDAuNzUzIDAuMzYzLTAuODAzIDAuNTU2LTEuODQxIDAuNTU2LTIuNzUgMC0yLjQ1LTEuMjUtMy44NzgtMy41NDEtMy44NzgtMi4zNTYgMC0zLjczNCAxLjgwOS0zLjczNCA0LjE5NyAwIDIuMzY2IDEuMTA2IDQuMzk0IDIuOTI4IDUuMzE5LTAuNzY2IDEuNTM0LTEuNzQxIDIuODg0LTIuNzU5IDMuOTAzLTEuODQ0LTIuMjMxLTMuNTEzLTUuMjA2LTQuMTk3LTExLjAxNmgtMi43MjJjMS4yNTkgOS42NzUgNS4wMDYgMTIuNzU2IDYgMTMuMzQ3IDAuNTU5IDAuMzM3IDEuMDQ0IDAuMzIyIDEuNTU2IDAuMDMxIDAuODA2LTAuNDU2IDMuMjIyLTIuODc1IDQuNTYzLTUuNzAzIDAuNTYzIDAgMS4yMzgtMC4wNjYgMS45MDktMC4yMTl2LTEuOTA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xMi45NTkgMTEuMmwtMS40NjMgMC4wMjJjMCAwLTAuMzE2IDAuMDYzLTAuNzI4LTAuMjIyLTAuNTQ3LTAuMzc1LTEuMDYzLTEuMzUzLTEuNDY2LTEuMjI1LTAuNDA2IDAuMTI4LTAuMzk0IDEuMDA2LTAuMzk0IDEuMDA2czAuMDAzIDAuMTg4LTAuMDkxIDAuMjg3Yy0wLjEgMC4xMDktMC4zIDAuMTMxLTAuMyAwLjEzMWgtMC42NTNjMCAwLTEuNDQ0IDAuMDg4LTIuNzE2LTEuMjM4LTEuMzg4LTEuNDQ0LTIuNjEyLTQuMzA5LTIuNjEyLTQuMzA5cy0wLjA3Mi0wLjE4OCAwLjAwNi0wLjI3OGMwLjA4Ny0wLjEwMyAwLjMyMi0wLjEwOSAwLjMyMi0wLjEwOWwxLjU2Ni0wLjAwOWMwIDAgMC4xNDcgMC4wMjUgMC4yNTMgMC4xMDMgMC4wODggMC4wNjMgMC4xMzQgMC4xODQgMC4xMzQgMC4xODRzMC4yNTMgMC42NDEgMC41ODggMS4yMTljMC42NTMgMS4xMjggMC45NTkgMS4zNzUgMS4xODEgMS4yNTYgMC4zMjItMC4xNzUgMC4yMjUtMS41OTcgMC4yMjUtMS41OTdzMC4wMDYtMC41MTYtMC4xNjItMC43NDRjLTAuMTMxLTAuMTc4LTAuMzc4LTAuMjMxLTAuNDg0LTAuMjQ0LTAuMDg4LTAuMDEzIDAuMDU2LTAuMjE2IDAuMjQ0LTAuMzA5IDAuMjgxLTAuMTM4IDAuNzc4LTAuMTQ3IDEuMzY2LTAuMTQxIDAuNDU2IDAuMDAzIDAuNTkxIDAuMDM0IDAuNzY5IDAuMDc1IDAuNTQxIDAuMTMxIDAuMzU2IDAuNjM0IDAuMzU2IDEuODQxIDAgMC4zODgtMC4wNjkgMC45MzEgMC4yMDkgMS4xMDkgMC4xMTkgMC4wNzggMC40MTIgMC4wMTIgMS4xNDctMS4yMzQgMC4zNDctMC41OTEgMC42MDktMS4yODQgMC42MDktMS4yODRzMC4wNTYtMC4xMjUgMC4xNDQtMC4xNzhjMC4wOTEtMC4wNTMgMC4yMTMtMC4wMzcgMC4yMTMtMC4wMzdsMS42NDctMC4wMDljMCAwIDAuNDk0LTAuMDU5IDAuNTc1IDAuMTY2IDAuMDg0IDAuMjM0LTAuMTg0IDAuNzgxLTAuODU2IDEuNjc4LTEuMTAzIDEuNDcyLTEuMjI4IDEuMzM0LTAuMzA5IDIuMTg0IDAuODc1IDAuODEzIDEuMDU2IDEuMjA5IDEuMDg4IDEuMjU5IDAuMzU2IDAuNi0wLjQwNiAwLjY0Ny0wLjQwNiAwLjY0N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SZW5yZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi42NDQgMC4xNjZjLTMuNzY5IDAuNjM0LTYuNjQ0IDMuOTEzLTYuNjQ0IDcuODYyIDAgMS45NjMgMC43MTMgMy43NTkgMS44ODcgNS4xNSAyLjc5MS0xLjM1IDQuNzQ0LTQuNDA2IDQuNzU2LTcuOTY2di01LjA0N3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjM1NiAwLjE2NmMzLjc2OSAwLjYzNCA2LjY0NCAzLjkxMyA2LjY0NCA3Ljg2MiAwIDEuOTYzLTAuNzEzIDMuNzU5LTEuODg3IDUuMTUtMi43OTEtMS4zNS00Ljc0NC00LjQwNi00Ljc1Ni03Ljk2NnYtNS4wNDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45NzIgMTAuMDQxYy0wLjQ5NyAyLjA1Ni0xLjk4MSAzLjgxMy0zLjgyOCA0Ljk4MSAxLjEzOCAwLjYyMiAyLjQ0MSAwLjk3OCAzLjgyOCAwLjk3OHMyLjY5MS0wLjM1NiAzLjgyOC0wLjk3OGMtMS44NDctMS4xNjktMy4zMzEtMi45MjUtMy44MjgtNC45ODF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU2luYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzIyIDE0LjAzMWMtMi42NSAwLjI2Mi00LjkzOC0wLjkzOC01LjEwOS0yLjY3NS0wLjE3Mi0xLjc0MSAxLjgzNy0zLjM1OSA0LjQ4NC0zLjYyMiAyLjY1LTAuMjYzIDQuOTM4IDAuOTM4IDUuMTA2IDIuNjc1IDAuMTc1IDEuNzQxLTEuODM0IDMuMzYyLTQuNDgxIDMuNjIyek0xMi4wMTkgOC4yNTljLTAuMjI1LTAuMDY5LTAuMzgxLTAuMTEzLTAuMjYyLTAuNDA5IDAuMjU2LTAuNjQ0IDAuMjgxLTEuMTk3IDAuMDAzLTEuNTk0LTAuNTE5LTAuNzQxLTEuOTQxLTAuNzAzLTMuNTY5LTAuMDE5IDAgMC0wLjUxMyAwLjIyMi0wLjM4MS0wLjE4MSAwLjI1LTAuODA2IDAuMjEzLTEuNDc4LTAuMTc4LTEuODY5LTAuODg0LTAuODg0LTMuMjM0IDAuMDM0LTUuMjUgMi4wNTAtMS41MDYgMS41MDMtMi4zODEgMy4xMDYtMi4zODEgNC40OTEgMCAyLjY0NCAzLjM5NCA0LjI1MyA2LjcxMyA0LjI1MyA0LjM1IDAgNy4yNDctMi41MjggNy4yNDctNC41MzQgMC0xLjIxNi0xLjAyMi0xLjkwMy0xLjk0MS0yLjE4OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC45MDkgMy40MTZjLTEuMDUwLTEuMTY2LTIuNi0xLjYwOS00LjAzMS0xLjMwNnYwYy0wLjMzMSAwLjA3Mi0wLjU0MSAwLjM5Ny0wLjQ2OSAwLjcyNSAwLjA3MiAwLjMzMSAwLjM5NCAwLjU0MSAwLjcyNSAwLjQ2OSAxLjAxOS0wLjIxNiAyLjExOSAwLjEgMi44NjYgMC45MjhzMC45NSAxLjk1NiAwLjYyOCAyLjk0NHYwYy0wLjEwMyAwLjMyMiAwLjA3MiAwLjY2NiAwLjM5NCAwLjc3MiAwLjMyMiAwLjEwMyAwLjY2Ni0wLjA3MiAwLjc3Mi0wLjM5NHYtMC4wMDNjMC40NS0xLjM4MSAwLjE2Ni0yLjk2OS0wLjg4NC00LjEzNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yOTQgNC44NzVjLTAuNTEyLTAuNTY5LTEuMjY5LTAuNzg0LTEuOTYzLTAuNjM0LTAuMjg0IDAuMDU5LTAuNDY2IDAuMzQ0LTAuNDA2IDAuNjI4IDAuMDYzIDAuMjg0IDAuMzQ0IDAuNDY2IDAuNjI1IDAuNDAzdjBjMC4zNDEtMC4wNzIgMC43MDkgMC4wMzQgMC45NTkgMC4zMDkgMC4yNSAwLjI3OCAwLjMxOSAwLjY1NiAwLjIwOSAwLjk4N3YwYy0wLjA4OCAwLjI3NSAwLjA2MyAwLjU3NSAwLjM0MSAwLjY2NiAwLjI3OCAwLjA4OCAwLjU3NS0wLjA2MyAwLjY2Ni0wLjM0MSAwLjIxOS0wLjY3OCAwLjA4MS0xLjQ1My0wLjQzMS0yLjAxOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljg2OSAxMC44ODRjLTAuMDk0IDAuMTU5LTAuMjk3IDAuMjM0LTAuNDU2IDAuMTY5LTAuMTU5LTAuMDYzLTAuMjA2LTAuMjQ0LTAuMTE2LTAuMzk3IDAuMDk0LTAuMTUzIDAuMjkxLTAuMjI4IDAuNDQ3LTAuMTY5IDAuMTU2IDAuMDU2IDAuMjEzIDAuMjM0IDAuMTI1IDAuMzk3ek02LjAyMiAxMS45NjZjLTAuMjU2IDAuNDA5LTAuODA2IDAuNTg4LTEuMjE5IDAuNC0wLjQwNi0wLjE4NC0wLjUyOC0wLjY1OS0wLjI3Mi0xLjA1OSAwLjI1My0wLjM5NyAwLjc4NC0wLjU3NSAxLjE5NC0wLjQwMyAwLjQxNiAwLjE3OCAwLjU1IDAuNjUgMC4yOTcgMS4wNjN6TTYuOTg0IDkuMDcyYy0xLjI1OS0wLjMyOC0yLjY4NCAwLjMtMy4yMzEgMS40MDktMC41NTkgMS4xMzEtMC4wMTkgMi4zOTEgMS4yNTMgMi44MDMgMS4zMTkgMC40MjUgMi44NzUtMC4yMjggMy40MTYtMS40NDcgMC41MzQtMS4xOTctMC4xMzEtMi40MjUtMS40MzgtMi43NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltUnNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMTMgMTEuNzMzYy0xLjE3NSAwLTIuMTMgMC45NTgtMi4xMyAyLjEyNiAwIDEuMTc0IDAuOTU1IDIuMTIyIDIuMTMgMi4xMjIgMS4xNzkgMCAyLjEzMy0wLjk0OCAyLjEzMy0yLjEyMi0wLTEuMTY4LTAuOTU0LTIuMTI2LTIuMTMzLTIuMTI2ek0wLjAwMiA1LjQzNnYzLjA2N2MxLjk5NyAwIDMuODc0IDAuNzgxIDUuMjg4IDIuMTk2IDEuNDEyIDEuNDExIDIuMTkyIDMuMjk3IDIuMTkyIDUuMzAyaDMuMDgwYy0wLTUuODI1LTQuNzM5LTEwLjU2NC0xMC41Ni0xMC41NjR6TTAuMDA2IDB2My4wNjhjNy4xMjIgMCAxMi45MTggNS44MDIgMTIuOTE4IDEyLjkzMmgzLjA3NmMwLTguODItNy4xNzYtMTYtMTUuOTk0LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVJzczIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTQuMzU5IDEyLjk4OGMtMC43NSAwLTEuMzU5LTAuNjAzLTEuMzU5LTEuMzUzIDAtMC43NDQgMC42MDktMS4zNTYgMS4zNTktMS4zNTYgMC43NTMgMCAxLjM1OSAwLjYxMyAxLjM1OSAxLjM1NiAwIDAuNzUtMC42MDkgMS4zNTMtMS4zNTkgMS4zNTN6TTcuNzcyIDEzYzAtMS4yNzgtMC40OTctMi40ODEtMS4zOTctMy4zODEtMC45MDMtMC45MDMtMi4xLTEuNC0zLjM3NS0xLjR2LTEuOTU2YzMuNzEzIDAgNi43MzggMy4wMjIgNi43MzggNi43MzdoLTEuOTY2ek0xMS4yNDQgMTNjMC00LjU0Ny0zLjY5Ny04LjI1LTguMjQxLTguMjV2LTEuOTU2YzUuNjI1IDAgMTAuMjAzIDQuNTgxIDEwLjIwMyAxMC4yMDZoLTEuOTYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODQxIDQuOGMwIDAtMC4xNTYtMS4xMDMtMC42MzctMS41ODctMC42MDktMC42MzctMS4yOTEtMC42NDEtMS42MDMtMC42NzgtMi4yMzctMC4xNjMtNS41OTctMC4xNjMtNS41OTctMC4xNjNoLTAuMDA2YzAgMC0zLjM1OSAwLTUuNTk3IDAuMTYzLTAuMzEzIDAuMDM4LTAuOTk0IDAuMDQxLTEuNjAzIDAuNjc4LTAuNDgxIDAuNDg0LTAuNjM0IDEuNTg3LTAuNjM0IDEuNTg3cy0wLjE1OSAxLjI5NC0wLjE1OSAyLjU5MXYxLjIxM2MwIDEuMjk0IDAuMTU5IDIuNTkxIDAuMTU5IDIuNTkxczAuMTU2IDEuMTAzIDAuNjM0IDEuNTg4YzAuNjA5IDAuNjM3IDEuNDA5IDAuNjE2IDEuNzY2IDAuNjg0IDEuMjgxIDAuMTIyIDUuNDQxIDAuMTU5IDUuNDQxIDAuMTU5czMuMzYzLTAuMDA2IDUuNi0wLjE2NmMwLjMxMy0wLjAzNyAwLjk5NC0wLjA0MSAxLjYwMy0wLjY3OCAwLjQ4MS0wLjQ4NCAwLjYzNy0xLjU4OCAwLjYzNy0xLjU4OHMwLjE1OS0xLjI5NCAwLjE1OS0yLjU5MXYtMS4yMTNjLTAuMDAzLTEuMjk0LTAuMTYyLTIuNTkxLTAuMTYyLTIuNTkxek02LjM0NyAxMC4wNzV2LTQuNDk3bDQuMzIyIDIuMjU2LTQuMzIyIDIuMjQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVlvdXR1YmUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDQwIDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzc1IDIuNjQ3YzAuMDAzLTAuMDE0IDAuMDA1LTAuMDIzIDAuMDA2LTAuMDI4bDAuMDE2LTAuMTE4LTAuNzQtMC4wMDRjLTAuNjY4LTAuMDA0LTAuODczIDAtMC44OTEgMC4wMTctMC4wMDkgMC4wMDgtMC4yNCAwLjg4NS0wLjY1MSAyLjQ3My0wLjE5NiAwLjc1OC0wLjM2MSAxLjM2My0wLjM2NyAxLjM0NXMtMC4yNC0wLjg4My0wLjUyMi0xLjkyMmMtMC4yODEtMS4wMzktMC41MTctMS44OTQtMC41MjQtMS45MDEtMC4wMTAtMC4wMTAtMC45MDYtMC4wMTQtMS42MzItMC4wMDgtMC4xMDUgMC4wMDEtMC4xNjQtMC4yMDUgMC45MzggMy4yOTkgMC4xNTIgMC40ODUgMC4zODEgMS4xNzIgMC41MDcgMS41MjYgMC4xNDYgMC40MDggMC4yNSAwLjcyNCAwLjMyMSAwLjk4NyAwLjEyNiAwLjUwMSAwLjEzIDAuODE1IDAuMTAzIDEuMTgyLTAuMDMyIDAuNDIzLTAuMDM2IDMuNDEzLTAuMDA1IDMuNDYzIDAuMDI0IDAuMDM4IDEuNDI1IDAuMDU2IDEuNTU4IDAuMDIwIDAuMDIxLTAuMDA2IDAuMDM1LTAuMDI2IDAuMDQ1LTAuMTM5IDAuMDMzLTAuMDk3IDAuMDM2LTAuNDg0IDAuMDM2LTIuMDkwdi0yLjA1MWwwLjA5MC0wLjI4M2MwLjA1OS0wLjE4NSAwLjIwNi0wLjY3MiAwLjMyOC0xLjA4MnMwLjI2OS0wLjkgMC4zMjctMS4wOTBjMC41MjktMS43MjQgMS4wMzMtMy40MTkgMS4wNDctMy41MTZsMC4wMTEtMC4wNzl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjIxIDUuMTM1bC0wIDAuMTA3LTAuMDE3IDAtMC4wMDkgMi45NTMtMC4wMDkgMi44NjMtMC4yMjkgMC4yMzNjLTAuMjU3IDAuMjYxLTAuNDYyIDAuMzYxLTAuNjQ4IDAuMzE0LTAuMjAzLTAuMDUxLTAuMTk3IDAuMDI4LTAuMjE0LTMuMzU2bC0wLjAxNi0zLjExNWgtMS40NzR2MC4xMDdoLTAuMDE3djMuMzhjMCAzLjYyMS0wIDMuNjE5IDAuMTg0IDMuOTgyIDAuMTQ2IDAuMjkgMC4zNiAwLjQzMSAwLjcyNSAwLjQ3OWgwYzAuNDgxIDAuMDY0IDEtMC4xNTQgMS40ODEtMC42MjJsMC4yMDktMC4yMDN2MC4zNTFjMCAwLjMwMyAwLjAwOSAwLjM1MyAwLjA2NCAwLjM2OCAwLjA5MCAwLjAyNSAxLjIwNiAwLjAyNyAxLjMyNiAwLjAwMmwwLjEtMC4wMjF2LTAuMTA0bDAuMDE3LTAuMDAzdi03LjczNmwtMS40NzIgMC4wMjB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40ODMgNi42NjFjLTAuMTQtMC41OTktMC40MDEtMS4wMDItMC44MzItMS4yOC0wLjY3Ni0wLjQzNy0xLjQ0OS0wLjQ4NC0yLjE2NS0wLjEzLTAuNTIyIDAuMjU4LTAuODU5IDAuNjg2LTEuMDMyIDEuMzE0LTAuMDIxIDAuMDc1LTAuMDM2IDAuMTM4LTAuMDQ3IDAuMjMxLTAuMDQ0IDAuMjIyLTAuMDQ5IDAuNTUyLTAuMDYxIDIuMDkzLTAuMDE4IDIuMzc0IDAuMDEwIDIuNjU2IDAuMzA3IDMuMTk1IDAuMjkyIDAuNTI5IDAuODk3IDAuOTE3IDEuNTU2IDAuOTk3IDAuMTk4IDAuMDI0IDAuNi0wLjAxMyAwLjgzMi0wLjA3OCAwLjUyNS0wLjE0NiAxLjAyOS0wLjU2MSAxLjI1Mi0xLjAzMiAwLjA5Ni0wLjIwNCAwLjE1NC0wLjM0NSAwLjE4OS0wLjYwNCAwLjA2NS0wLjM1MyAwLjA3MC0wLjkyNSAwLjA3MC0yLjM4MS0wLTEuODU3LTAuMDA2LTIuMDYwLTAuMDY4LTIuMzI2ek03LjgwMiAxMS41Yy0wLjEyNCAwLjA5NC0wLjM0IDAuMTM1LTAuNTE1IDAuMDk4LTAuMTM1LTAuMDI5LTAuMzE4LTAuMjQxLTAuMzc0LTAuNDM0LTAuMDcwLTAuMjQxLTAuMDc1LTMuNTk0LTAuMDE1LTQuMjUxIDAuMS0wLjMyOSAwLjM3OC0wLjUwMSAwLjY4Mi0wLjQxOSAwLjIzNyAwLjA2NCAwLjM1OCAwLjIxMiAwLjQyNyAwLjUyMyAwLjA1MSAwLjIzMSAwLjA1NyAwLjUxOCAwLjA0NiAyLjIwNy0wLjAwNyAxLjEyLTAuMDExIDEuNjY4LTAuMDQ4IDEuOTYyLTAuMDM3IDAuMTg1LTAuMDk5IDAuMjM1LTAuMjAzIDAuMzE1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Ljk0NCA4LjM0NmgwLjcxMmwtMC4wMTEtMC42NDVjLTAuMDExLTAuNTkyLTAuMDIwLTAuNjU5LTAuMDk5LTAuODItMC4xMjUtMC4yNTMtMC4zMDktMC4zNjYtMC42MDEtMC4zNjYtMC4zNTEgMC0wLjU3MyAwLjE3LTAuNjc4IDAuNTE4LTAuMDQ1IDAuMTQ4LTAuMDkyIDEuMTY3LTAuMDU4IDEuMjU1IDAuMDE5IDAuMDQ5IDAuMTIxIDAuMDU4IDAuNzM1IDAuMDU4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxLjE4NCA2Ljg3OWMtMC4wOTUtMC4xOTEtMC4yNzItMC4yODYtMC40NzctMC4yNzgtMC4xNiAwLjAwNi0wLjMzNyAwLjA3My0wLjUwOCAwLjIwM2wtMC4xMjcgMC4wOTd2NC42MzRsMC4xMjcgMC4wOTdjMC4yODggMC4yMiAwLjYwNCAwLjI2NiAwLjgyMiAwLjEyIDAuMDg2LTAuMDU4IDAuMTQyLTAuMTM3IDAuMTg2LTAuMjYzIDAuMDU3LTAuMTY0IDAuMDYyLTAuMzc1IDAuMDU1LTIuMzI1LTAuMDA4LTIuMDMyLTAuMDEyLTIuMTUyLTAuMDc4LTIuMjg1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwLjAxNCA0Ljc5MWMtMC4xNDItMS43MDEtMC4yNTUtMi4yNTMtMC42MDUtMi45NjItMC40NjUtMC45MzktMS4xMzYtMS40MzQtMi4wOTItMS41NDMtMC43MzktMC4wODQtMy41MjEtMC4yMDMtNi4wOTQtMC4yNi00LjQ1Ni0wLjA5OS0xMS43ODIgMC4wOTItMTIuNzE4IDAuMzMxLTAuNDMyIDAuMTExLTAuNzU3IDAuMjk5LTEuMDk0IDAuNjM0LTAuNTkxIDAuNTg4LTAuOTQ0IDEuNDMyLTEuMDg1IDIuNi0wLjMyMyAyLjY2Ni0wLjMzIDUuODg2LTAuMDE5IDguNjQ5IDAuMTM0IDEuMTg4IDAuNDEgMS45NiAwLjkyOCAyLjU5NiAwLjMyMyAwLjM5NyAwLjg4MSAwLjczNCAxLjM3OSAwLjgzNSAwLjM1IDAuMDcxIDIuMSAwLjE2OSA0LjY1IDAuMjYgMC4zOCAwLjAxNCAxLjM4NSAwLjAzNyAyLjIzNSAwLjA1MiAxLjc3IDAuMDMxIDUuMDI1IDAuMDEzIDYuODg2LTAuMDM5IDEuMjUyLTAuMDM1IDMuNTM0LTAuMTI4IDMuOTYxLTAuMTYxIDAuMTItMC4wMDkgMC4zOTgtMC4wMjcgMC42MTgtMC4wMzkgMC43MzktMC4wNDIgMS4yMDktMC4xOTYgMS42NS0wLjU0MyAwLjU3MS0wLjQ0OSAxLjAxMy0xLjI3OCAxLjItMi4yNTEgMC4xNzctMC45MiAwLjI5NS0yLjU1OSAwLjMxOS00LjQyIDAuMDIwLTEuNTU1LTAuMDA3LTIuMzkzLTAuMTE5LTMuNzQxek0yMi4yNyA0LjE3NWwtMC44MjggMC4wMTAtMC4wMzYgOC44My0wLjcxOCAwLjAwOWMtMC41NTUgMC4wMDgtMC43MjQtMC4wMDEtMC43MzctMC4wMzYtMC4wMTAtMC4wMjUtMC4wMjEtMi4wMTYtMC4wMjYtNC40MjRsLTAuMDA5LTQuMzc5LTEuNjE3LTAuMDIwdi0xLjM4bDQuNzc5IDAuMDE5IDAuMDIwIDEuMzYtMC44MjggMC4wMTB6TTI3LjM0NyA5LjIzNnYzLjc5N2gtMS4zMDh2LTAuNGMwLTAuMzAxLTAuMDExLTAuNC0wLjA0Ny0wLjQtMC4wMjYgMC0wLjE0NCAwLjA5OS0wLjI2MyAwLjIyLTAuMjU5IDAuMjYzLTAuNTY1IDAuNDc0LTAuODI3IDAuNTcyLTAuNTQyIDAuMjAzLTEuMDU2IDAuMDg0LTEuMjc1LTAuMjkzLTAuMjAxLTAuMzQ1LTAuMjA0LTAuNDIzLTAuMjA0LTQuMDA1di0zLjI5aDEuMzA3bDAuMDEwIDMuMDk4YzAuMDEwIDMuMDQ0IDAuMDExIDMuMSAwLjA4NCAzLjIyNCAwLjA5NyAwLjE2NCAwLjI0NCAwLjIwOSAwLjQ3OCAwLjE0NCAwLjEzOC0wLjAzOCAwLjIzMi0wLjEwNSAwLjQ1NS0wLjMyN2wwLjI4Mi0wLjI4di01Ljg1OWgxLjMwOHYzLjc5N3pNMzIuNDQ5IDEyLjQ5MWMtMC4xMTUgMC4yNTctMC4zNzIgMC41MDgtMC41ODMgMC41Ny0wLjU0OSAwLjE2Mi0wLjk5IDAuMDMwLTEuNDk5LTAuNDQ5LTAuMTU4LTAuMTQ5LTAuMzA1LTAuMjY5LTAuMzI3LTAuMjY5LTAuMDI3IDAtMC4wNDEgMC4xMTYtMC4wNDEgMC4zNDV2MC4zNDVoLTEuMzA4di0xMC4yNDhoMS4zMDh2MS42NzJjMCAwLjkxOSAwLjAxMiAxLjY3MiAwLjAyNyAxLjY3MnMwLjE1My0wLjEyMiAwLjMwNy0wLjI3YzAuMzU0LTAuMzQxIDAuNjQ5LTAuNDkxIDEuMDI0LTAuNTE5IDAuNjY5LTAuMDUxIDEuMDY4IDAuMjk0IDEuMjUgMS4wODAgMC4wNTcgMC4yNDUgMC4wNjIgMC41MjUgMC4wNjIgMi43OTgtMCAyLjc2OC0wIDIuNzgtMC4yMjEgMy4yNzN6TTM3Ljk4NCAxMC45NzFjLTAuMDEyIDAuMjg1LTAuMDQ2IDAuNjEyLTAuMDc3IDAuNzI3LTAuMTgyIDAuNjc0LTAuNjY2IDEuMTUyLTEuMzY2IDEuMzQ4LTAuOTQyIDAuMjY0LTEuOTgtMC4xNjgtMi4zOTQtMC45OTctMC4yMzItMC40NjUtMC4yNDEtMC41NTgtMC4yNDEtMi44MzEgMC0xLjg1MyAwLjAwNy0yLjA4MSAwLjA2Ni0yLjMzNCAwLjE2OC0wLjcxNSAwLjU4NC0xLjE3OCAxLjI4OS0xLjQzNSAwLjIwNC0wLjA3NCAwLjQxNy0wLjExMyAwLjYzLTAuMTE3IDAuNzYxLTAuMDE2IDEuNTE1IDAuMzkzIDEuODMyIDEuMDU5IDAuMjEzIDAuNDQ5IDAuMjQgMC42NDIgMC4yNjEgMS45MDhsMC4wMTkgMS4xMzYtMi43ODkgMC4wMTktMC4wMTAgMC43NjNjLTAuMDE1IDEuMDc3IDAuMDU4IDEuNDA4IDAuMzQ5IDEuNjAzIDAuMjQ0IDAuMTY1IDAuNjIgMC4xNTIgMC44MjQtMC4wMjcgMC4xOTItMC4xNjggMC4yNDYtMC4zNDkgMC4yNjUtMC44NzdsMC4wMTctMC40NjNoMS4zNDdsLTAuMDIyIDAuNTE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVR3aXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMGwtMS41IDIuNXYxMS41aDR2MmgybDItMmgyLjVsNC41LTQuNXYtOS41aC0xMy41ek0xMyA4LjVsLTIuNSAyLjVoLTIuNWwtMiAydi0yaC0zdi05aDEwdjYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNGgxLjV2NGgtMS41di00elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA0aDEuNXY0aC0xLjV2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVmltZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOTk0IDQuMjgxYy0wLjA3MiAxLjU1Ni0xLjE1OSAzLjY5MS0zLjI2MyA2LjM5Ny0yLjE3NSAyLjgyNS00LjAxNiA0LjI0MS01LjUyMiA0LjI0MS0wLjkzMSAwLTEuNzIyLTAuODU5LTIuMzY2LTIuNTgxLTAuNDMxLTEuNTc4LTAuODU5LTMuMTU2LTEuMjkxLTQuNzM0LTAuNDc4LTEuNzIyLTAuOTkxLTIuNTgxLTEuNTQxLTIuNTgxLTAuMTE5IDAtMC41MzggMC4yNTMtMS4yNTYgMC43NTNsLTAuNzUzLTAuOTY5YzAuNzkxLTAuNjk0IDEuNTY5LTEuMzg4IDIuMzM0LTIuMDgxIDEuMDUzLTAuOTA5IDEuODQ0LTEuMzg3IDIuMzcyLTEuNDM4IDEuMjQ0LTAuMTE5IDIuMDEzIDAuNzMxIDIuMyAyLjU1MyAwLjMwOSAxLjk2NiAwLjUyNSAzLjE4OCAwLjY0NyAzLjY2NiAwLjM1OSAxLjYzMSAwLjc1MyAyLjQ0NyAxLjE4NCAyLjQ0NyAwLjMzNCAwIDAuODM4LTAuNTI4IDEuNTA5LTEuNTg4IDAuNjY5LTEuMDU2IDEuMDI4LTEuODYyIDEuMDc4LTIuNDE2IDAuMDk3LTAuOTEyLTAuMjYyLTEuMzcyLTEuMDc4LTEuMzcyLTAuMzg0IDAtMC43NzggMC4wODgtMS4xODQgMC4yNjMgMC43ODctMi41NzUgMi4yODctMy44MjUgNC41MDYtMy43NTMgMS42NDEgMC4wNDQgMi40MTYgMS4xMDkgMi4zMjIgMy4xOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVmltZW8yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xMy40NjMgNS4zMTNjLTAuMDUwIDEuMTI1LTAuODM4IDIuNjY2LTIuMzU5IDQuNjIyLTEuNTcyIDIuMDQ0LTIuOTAzIDMuMDY2LTMuOTkxIDMuMDY2LTAuNjc1IDAtMS4yNDQtMC42MjItMS43MDktMS44NjYtMC4zMTMtMS4xNDEtMC42MjItMi4yODEtMC45MzQtMy40MjItMC4zNDQtMS4yNDQtMC43MTYtMS44NjYtMS4xMTItMS44NjYtMC4wODcgMC0wLjM5MSAwLjE4MS0wLjkwNiAwLjU0NGwtMC41NDQtMC43YzAuNTcyLTAuNSAxLjEzNC0xLjAwMyAxLjY4Ny0xLjUwMyAwLjc2My0wLjY1NiAxLjMzMS0xLjAwMyAxLjcxMi0xLjAzOCAwLjktMC4wODcgMS40NTMgMC41MjggMS42NjIgMS44NDQgMC4yMjUgMS40MjIgMC4zODEgMi4zMDMgMC40NjkgMi42NSAwLjI1OSAxLjE3OCAwLjU0NCAxLjc2NiAwLjg1NiAxLjc2NiAwLjI0MSAwIDAuNjA2LTAuMzgxIDEuMDkxLTEuMTQ3czAuNzQ0LTEuMzQ3IDAuNzc4LTEuNzQ3YzAuMDY5LTAuNjU5LTAuMTkxLTAuOTkxLTAuNzc4LTAuOTkxLTAuMjc4IDAtMC41NjMgMC4wNjMtMC44NTYgMC4xOTEgMC41NjktMS44NTkgMS42NTMtMi43NjYgMy4yNTYtMi43MTIgMS4xODggMC4wMzQgMS43NDcgMC44MDMgMS42NzggMi4zMDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGFueXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xMi44NSAxMi4wMTJsLTUuNDQ0IDEuNzgxYy0xLjI0NCAwLjQwNi0xLjM2OSAwLjM0MS0xLjkzMS0xLjRsLTEuMzc1LTQuMjU5Yy0wLjMyOC0xLjAwOS0xLjMyOC0zLjcyOC0xLjQ5Ny00LjI1LTAuMzEzLTAuOTY5LTAuMzEzLTEuMDIyIDEuNTE2LTEuNjE2IDEuNDMxLTAuNDY5IDEuNDkxLTAuNDUzIDIuMDA5IDEuMTYzIDAuNDE5IDEuMyAwLjY4OCAyLjM1IDEuMTE5IDMuNjc4bDEuMTcyIDMuNjI1IDMuNzQ0LTEuMjI1YzAuNzM4LTAuMjQ0IDAuOTg0LTAuMjMxIDEuMTk0IDAuNjc4bDAuMTUgMC42ODhjMC4xNzUgMC43OTctMC4yMjggMS0wLjY1NiAxLjEzN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GbGlja3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4LjVjMC0xLjkzMyAxLjU2Ny0zLjUgMy41LTMuNXMzLjUgMS41NjcgMy41IDMuNWMwIDEuOTMzLTEuNTY3IDMuNS0zLjUgMy41cy0zLjUtMS41NjctMy41LTMuNXpNOSA4LjVjMC0xLjkzMyAxLjU2Ny0zLjUgMy41LTMuNXMzLjUgMS41NjcgMy41IDMuNWMwIDEuOTMzLTEuNTY3IDMuNS0zLjUgMy41cy0zLjUtMS41NjctMy41LTMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GbGlja3IyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi41Yy0xLjEwMyAwLTIgMC44OTctMiAyczAuODk3IDIgMiAyYzEuMTAzIDAgMi0wLjg5NyAyLTJzLTAuODk3LTItMi0yek0xMi41IDV2MGMxLjkzMyAwIDMuNSAxLjU2NyAzLjUgMy41cy0xLjU2NyAzLjUtMy41IDMuNS0zLjUtMS41NjctMy41LTMuNWMwLTEuOTMzIDEuNTY3LTMuNSAzLjUtMy41ek0wIDguNWMwLTEuOTMzIDEuNTY3LTMuNSAzLjUtMy41czMuNSAxLjU2NyAzLjUgMy41YzAgMS45MzMtMS41NjcgMy41LTMuNSAzLjVzLTMuNS0xLjU2Ny0zLjUtMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZsaWNrcjMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTQuNSAxMC41Yy0xLjM4MSAwLTIuNS0xLjExOS0yLjUtMi41czEuMTE5LTIuNSAyLjUtMi41IDIuNSAxLjExOSAyLjUgMi41LTEuMTE5IDIuNS0yLjUgMi41ek0xMS41IDEwLjVjLTEuMzgxIDAtMi41LTEuMTE5LTIuNS0yLjVzMS4xMTktMi41IDIuNS0yLjVjMS4zODEgMCAyLjUgMS4xMTkgMi41IDIuNXMtMS4xMTkgMi41LTIuNSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmxpY2tyNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLTQuNDE4IDAtOCAzLjYwNi04IDguMDU1czMuNTgyIDguMDU1IDggOC4wNTUgOC0zLjYwNiA4LTguMDU1LTMuNTgyLTguMDU1LTgtOC4wNTV6TTQuNSAxMC41Yy0xLjM4MSAwLTIuNS0xLjExOS0yLjUtMi41czEuMTE5LTIuNSAyLjUtMi41IDIuNSAxLjExOSAyLjUgMi41YzAgMS4zODEtMS4xMTkgMi41LTIuNSAyLjV6TTExLjUgMTAuNWMtMS4zODEgMC0yLjUtMS4xMTktMi41LTIuNXMxLjExOS0yLjUgMi41LTIuNSAyLjUgMS4xMTkgMi41IDIuNWMwIDEuMzgxLTEuMTE5IDIuNS0yLjUgMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZjLTQuNDEyIDAtOC0zLjU4OC04LThzMy41ODctOCA4LThjNC40MTIgMCA4IDMuNTg3IDggOHMtMy41ODggOC04IDh2MHpNMTQuNzQ3IDkuMDk0Yy0wLjIzNC0wLjA3NS0yLjExNi0wLjYzNC00LjI1Ni0wLjI5MSAwLjg5NCAyLjQ1NiAxLjI1NiA0LjQ1NiAxLjMyOCA0Ljg3MiAxLjUzMS0xLjAzNyAyLjYyNS0yLjY3OCAyLjkyOC00LjU4MXYwek0xMC42NjkgMTQuM2MtMC4xMDMtMC42LTAuNDk3LTIuNjg4LTEuNDU2LTUuMTgxLTAuMDE2IDAuMDA2LTAuMDMxIDAuMDA5LTAuMDQ0IDAuMDE2LTMuODU2IDEuMzQ0LTUuMjQxIDQuMDE2LTUuMzYyIDQuMjY2IDEuMTU5IDAuOTAzIDIuNjE2IDEuNDQ0IDQuMTk0IDEuNDQ0IDAuOTQ3IDAgMS44NS0wLjE5NCAyLjY2OS0wLjU0NHYwek0yLjkyMiAxMi41NzhjMC4xNTYtMC4yNjYgMi4wMzEtMy4zNjkgNS41NTMtNC41MDkgMC4wODgtMC4wMjggMC4xNzgtMC4wNTYgMC4yNjktMC4wODEtMC4xNzItMC4zODgtMC4zNTktMC43NzgtMC41NTMtMS4xNTktMy40MDkgMS4wMjItNi43MjIgMC45NzgtNy4wMjIgMC45NzUtMC4wMDMgMC4wNjktMC4wMDMgMC4xMzgtMC4wMDMgMC4yMDkgMCAxLjc1MyAwLjY2NiAzLjM1NiAxLjc1NiA0LjU2NnYwek0xLjMxMyA2LjYwOWMwLjMwNiAwLjAwMyAzLjEyMiAwLjAxNiA2LjMxOS0wLjgzMS0xLjEzMS0yLjAxMy0yLjM1My0zLjcwNi0yLjUzNC0zLjk1My0xLjkxMyAwLjkwMy0zLjM0NCAyLjY2Ni0zLjc4NCA0Ljc4NHYwek02LjQgMS4zNjZjMC4xODggMC4yNTMgMS40MzEgMS45NDQgMi41NSA0IDIuNDMxLTAuOTA5IDMuNDU5LTIuMjk0IDMuNTgxLTIuNDY5LTEuMjA2LTEuMDcyLTIuNzk0LTEuNzIyLTQuNTMxLTEuNzIyLTAuNTUgMC4wMDMtMS4wODggMC4wNjktMS42IDAuMTkxdjB6TTEzLjI5MSAzLjY5MWMtMC4xNDQgMC4xOTQtMS4yOTEgMS42NjMtMy44MTYgMi42OTQgMC4xNTkgMC4zMjUgMC4zMTMgMC42NTYgMC40NTMgMC45OTEgMC4wNTAgMC4xMTkgMC4xIDAuMjM0IDAuMTQ3IDAuMzUzIDIuMjc1LTAuMjg0IDQuNTM0IDAuMTcyIDQuNzU5IDAuMjE5LTAuMDE2LTEuNjEyLTAuNTk0LTMuMDk0LTEuNTQ0LTQuMjU2djB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY0MSAzLjIwNmMwLjQ3MiAwIDAuODk3IDAuMDQxIDEuMjg0IDAuMTI1IDAuMzg4IDAuMDgxIDAuNzE2IDAuMjE5IDAuOTk0IDAuNDA2IDAuMjc1IDAuMTg4IDAuNDg3IDAuNDM4IDAuNjQ0IDAuNzUgMC4xNSAwLjMwOSAwLjIyNSAwLjY5NyAwLjIyNSAxLjE1NiAwIDAuNDk3LTAuMTEyIDAuOTA5LTAuMzM4IDEuMjQxLTAuMjI4IDAuMzMxLTAuNTU5IDAuNi0xLjAwMyAwLjgxMyAwLjYwNiAwLjE3NSAxLjA1MyAwLjQ4MSAxLjM1MyAwLjkxNiAwLjMgMC40MzggMC40NDQgMC45NjMgMC40NDQgMS41ODEgMCAwLjUtMC4wOTcgMC45MjgtMC4yODcgMS4yOTEtMC4xOTQgMC4zNjYtMC40NTYgMC42NjItMC43NzggMC44OTEtMC4zMjUgMC4yMzEtMC43IDAuNC0xLjExOSAwLjUwOS0wLjQxNiAwLjEwOS0wLjg0NCAwLjE2Ni0xLjI4NyAwLjE2NmgtNC43NzJ2LTkuODQ0aDQuNjQxek00LjM1OSA3LjE4MWMwLjM4NCAwIDAuNzAzLTAuMDkxIDAuOTUzLTAuMjc1IDAuMjUtMC4xODEgMC4zNjktMC40ODEgMC4zNjktMC44OTQgMC0wLjIyOC0wLjA0MS0wLjQxOS0wLjEyMi0wLjU2Ni0wLjA4NC0wLjE0Ny0wLjE5NC0wLjI2My0wLjMzNC0wLjM0NC0wLjEzOC0wLjA4NC0wLjI5NC0wLjE0MS0wLjQ3OC0wLjE3Mi0wLjE3OC0wLjAzNC0wLjM2Ni0wLjA1MC0wLjU1Ni0wLjA1MGgtMi4wMjV2Mi4zaDIuMTk0ek00LjQ3OCAxMS4zNzJjMC4yMTMgMCAwLjQxNi0wLjAxOSAwLjYwNi0wLjA2MyAwLjE5NC0wLjA0NCAwLjM2Ni0wLjEwOSAwLjUwOS0wLjIwOSAwLjE0NC0wLjA5NyAwLjI2Ni0wLjIyNSAwLjM1My0wLjM5NCAwLjA4OC0wLjE2NiAwLjEyOC0wLjM3OCAwLjEyOC0wLjYzNyAwLTAuNTA2LTAuMTQ0LTAuODY5LTAuNDI4LTEuMDg4LTAuMjg0LTAuMjE2LTAuNjYyLTAuMzIyLTEuMTMxLTAuMzIyaC0yLjM1djIuNzA5aDIuMzEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjMzMSAxMS4zMzhjMC4yOTQgMC4yODcgMC43MTYgMC40MzEgMS4yNjYgMC40MzEgMC4zOTQgMCAwLjczOC0wLjEgMS4wMjItMC4zczAuNDU2LTAuNDEyIDAuNTIyLTAuNjMxaDEuNzI1Yy0wLjI3OCAwLjg1OS0wLjY5NyAxLjQ2OS0xLjI3MiAxLjgzOC0wLjU2NiAwLjM2OS0xLjI1OSAwLjU1Ni0yLjA2MyAwLjU1Ni0wLjU2MyAwLTEuMDY2LTAuMDkxLTEuNTE5LTAuMjY5LTAuNDUzLTAuMTgxLTAuODMxLTAuNDM0LTEuMTUtMC43NjYtMC4zMDktMC4zMzEtMC41NTMtMC43MjUtMC43MjUtMS4xODgtMC4xNjktMC40NTktMC4yNTYtMC45NjktMC4yNTYtMS41MTkgMC0wLjUzNCAwLjA4OC0xLjAzMSAwLjI2Mi0xLjQ5MSAwLjE3OC0wLjQ2MyAwLjQyMi0wLjg1OSAwLjc0Ny0xLjE5NHMwLjcwNi0wLjYgMS4xNTYtMC43OTRjMC40NDctMC4xOTQgMC45NDEtMC4yOTEgMS40ODgtMC4yOTEgMC42MDMgMCAxLjEzMSAwLjExNiAxLjU4NCAwLjM1MyAwLjQ1IDAuMjM0IDAuODIyIDAuNTUgMS4xMTMgMC45NDRzMC40OTcgMC44NDcgMC42MjUgMS4zNTNjMC4xMjggMC41MDYgMC4xNzIgMS4wMzQgMC4xMzcgMS41ODhoLTUuMTQ3YzAgMC41NTkgMC4xODggMS4wOTQgMC40ODQgMS4zNzh6TTEzLjU3OCA3LjU5NGMtMC4yMzEtMC4yNTYtMC42MjgtMC4zOTctMS4xMDYtMC4zOTctMC4zMTMgMC0wLjU3MiAwLjA1My0wLjc3OCAwLjE1OS0wLjIwMyAwLjEwNi0wLjM2OSAwLjIzNy0wLjQ5NyAwLjM5NC0wLjEyNSAwLjE1Ni0wLjIxMyAwLjMyNS0wLjI2MiAwLjUwMy0wLjA1MCAwLjE3Mi0wLjA4MSAwLjMzMS0wLjA5MSAwLjQ2OWgzLjE4OGMtMC4wNDctMC41LTAuMjE5LTAuODY5LTAuNDUzLTEuMTI4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjQ0NCA0aDMuOTkxdjAuOTcyaC0zLjk5MXYtMC45NzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQmVoYW5jZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4zMTYgNy4wMDljMC4yMDMtMC4xNDcgMC4zLTAuMzkxIDAuMy0wLjcyOCAwLTAuMTg4LTAuMDMxLTAuMzQxLTAuMDk3LTAuNDU5LTAuMDY5LTAuMTE5LTAuMTU2LTAuMjEzLTAuMjcyLTAuMjc4LTAuMTEyLTAuMDY5LTAuMjQxLTAuMTE2LTAuMzg4LTAuMTQxLTAuMTQ0LTAuMDI4LTAuMjk3LTAuMDQxLTAuNDUzLTAuMDQxaC0xLjY0N3YxLjg2OWgxLjc4MWMwLjMxMyAwLjAwMyAwLjU3Mi0wLjA3MiAwLjc3NS0wLjIyMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjU5NCA4LjY5N2MtMC4yMzEtMC4xNzUtMC41MzctMC4yNjItMC45MTktMC4yNjJoLTEuOTE2djIuMjAzaDEuODc4YzAuMTc1IDAgMC4zMzgtMC4wMTYgMC40OTQtMC4wNTBzMC4yOTctMC4wODggMC40MTYtMC4xNjljMC4xMTktMC4wNzggMC4yMTYtMC4xODQgMC4yODctMC4zMTlzMC4xMDYtMC4zMDkgMC4xMDYtMC41MTljMC0wLjQxMi0wLjExNi0wLjcwNi0wLjM0Ny0wLjg4NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDBoLTEzYy0wLjgyNSAwLTEuNSAwLjY3NS0xLjUgMS41djEzYzAgMC44MjUgMC42NzUgMS41IDEuNSAxLjVoMTNjMC44MjUgMCAxLjUtMC42NzUgMS41LTEuNXYtMTNjMC0wLjgyNS0wLjY3NS0xLjUtMS41LTEuNXpNMTAuNDg4IDQuMjA5aDMuMjQxdjAuNzkxaC0zLjI0MXYtMC43OTF6TTguNDYzIDEwLjcyNWMtMC4xNTYgMC4yOTctMC4zNjkgMC41MzctMC42MzEgMC43MjUtMC4yNjYgMC4xODgtMC41NjkgMC4zMjUtMC45MDkgMC40MTYtMC4zMzggMC4wOTEtMC42ODggMC4xMzQtMS4wNDQgMC4xMzRoLTMuODc4di03Ljk5N2gzLjc2OWMwLjM4MSAwIDAuNzI4IDAuMDM0IDEuMDQ0IDAuMSAwLjMxMyAwLjA2NiAwLjU4MSAwLjE3OCAwLjgwNiAwLjMzMSAwLjIyMiAwLjE1MyAwLjM5NyAwLjM1NiAwLjUyMiAwLjYwOSAwLjEyMiAwLjI1IDAuMTg0IDAuNTY2IDAuMTg0IDAuOTM4IDAgMC40MDMtMC4wOTEgMC43MzctMC4yNzUgMS4wMDZzLTAuNDUzIDAuNDg3LTAuODE2IDAuNjU5YzAuNDk0IDAuMTQxIDAuODU2IDAuMzkxIDEuMDk3IDAuNzQ0IDAuMjQ0IDAuMzU2IDAuMzYzIDAuNzg0IDAuMzYzIDEuMjg0IDAuMDAzIDAuNDA5LTAuMDc1IDAuNzU5LTAuMjMxIDEuMDUwek0xNC45OTEgOS40ODhoLTQuMTc4YzAgMC40NTYgMC4xNTYgMC44OTEgMC4zOTQgMS4xMjUgMC4yMzggMC4yMzEgMC41ODEgMC4zNSAxLjAyOCAwLjM1IDAuMzIyIDAgMC41OTctMC4wODEgMC44MzEtMC4yNDQgMC4yMzEtMC4xNjIgMC4zNzItMC4zMzQgMC40MjUtMC41MTJoMS40Yy0wLjIyNSAwLjY5Ny0wLjU2NiAxLjE5NC0xLjAzMSAxLjQ5NC0wLjQ1OSAwLjMtMS4wMjIgMC40NS0xLjY3NSAwLjQ1LTAuNDU2IDAtMC44NjYtMC4wNzUtMS4yMzQtMC4yMTktMC4zNjktMC4xNDctMC42NzUtMC4zNTMtMC45MzQtMC42MjItMC4yNTMtMC4yNjktMC40NDctMC41OTEtMC41ODgtMC45NjYtMC4xMzctMC4zNzItMC4yMDktMC43ODctMC4yMDktMS4yMzQgMC0wLjQzNCAwLjA3Mi0wLjgzOCAwLjIxMy0xLjIxMyAwLjE0NC0wLjM3NSAwLjM0NC0wLjcgMC42MDYtMC45NjkgMC4yNjItMC4yNzIgMC41NzUtMC40ODcgMC45MzgtMC42NDcgMC4zNjMtMC4xNTYgMC43NjItMC4yMzQgMS4yMDYtMC4yMzQgMC40OTEgMCAwLjkxOSAwLjA5NCAxLjI4NyAwLjI4NyAwLjM2NiAwLjE5MSAwLjY2NiAwLjQ0NyAwLjkwMyAwLjc2OXMwLjQwMyAwLjY4OCAwLjUwOSAxLjFjMC4xMDMgMC40MDYgMC4xMzcgMC44MzQgMC4xMDkgMS4yODR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTM0IDcuMjQ3Yy0wLjI1MyAwLTAuNDY2IDAuMDQ0LTAuNjMxIDAuMTMxcy0wLjMgMC4xOTQtMC40MDMgMC4zMTljLTAuMTAzIDAuMTI4LTAuMTcyIDAuMjYzLTAuMjEzIDAuNDA5LTAuMDQxIDAuMTQxLTAuMDY2IDAuMjY5LTAuMDcyIDAuMzgxaDIuNTg4Yy0wLjAzNy0wLjQwNi0wLjE3OC0wLjcwNi0wLjM2Ni0wLjkxNi0wLjE5NC0wLjIxMy0wLjUxMi0wLjMyNS0wLjkwMy0wLjMyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1EZXZpYW50YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk1MyAyLjkwOXYtMi45MDloLTIuOTA5bC0wLjI5MSAwLjI5NC0xLjM3NSAyLjYxNi0wLjQzMSAwLjI5MWgtNC45djMuOTk0aDIuNjk0bDAuMjQxIDAuMjkxLTIuOTM0IDUuNjA2djIuOTA5aDIuOTA5bDAuMjkxLTAuMjk0IDEuMzc1LTIuNjE2IDAuNDMxLTAuMjkxaDQuOXYtMy45OTRoLTIuNjk0bC0wLjI0MS0wLjI5NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW01MDBQeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjk1MyAxMC41MTJjMC4wMDMgMC4wMDkgMC4wODggMC4yMzggMC4xMzQgMC4zNTMgMC4yNjMgMC42MjIgMC42NDEgMS4xODQgMS4xMjIgMS42NjZzMS4wNDEgMC44NTkgMS42NjYgMS4xMjJjMC42NDcgMC4yNzIgMS4zMzEgMC40MTIgMi4wMzcgMC40MTJzMS4zOTQtMC4xMzcgMi4wMzctMC40MTJjMC42MjUtMC4yNjIgMS4xODQtMC42NDEgMS42NjYtMS4xMjJzMC44NTktMS4wNDEgMS4xMjItMS42NjZjMC4yNzItMC42NDcgMC40MTItMS4zMzEgMC40MTItMi4wMzdzLTAuMTM3LTEuMzk0LTAuNDEyLTIuMDM3Yy0wLjI2Mi0wLjYyNS0wLjY0MS0xLjE4NC0xLjEyMi0xLjY2NnMtMS4wNDEtMC44NTktMS42NjYtMS4xMjJjLTAuNjQ3LTAuMjcyLTEuMzMxLTAuNDEzLTIuMDM3LTAuNDEzLTAuNzE2IDAtMS40MzEgMC4xNDQtMi4wNjYgMC40MTMtMC41MDkgMC4yMTYtMS4zNzIgMC43NjktMS44NzUgMS4yOTFsLTAuMDAzIDAuMDAzdi00LjMxM2g3LjI0MWMwLjI2Mi0wLjAwMyAwLjI2Mi0wLjM3MiAwLjI2Mi0wLjQ5MSAwLTAuMTIyIDAtMC40ODctMC4yNjYtMC40OTFoLTcuODI4Yy0wLjIxMyAwLTAuMzQ0IDAuMTc4LTAuMzQ0IDAuMzQxdjYuMDY2YzAgMC4xOTcgMC4yNDQgMC4zMzggMC40NzIgMC4zODQgMC40NDQgMC4wOTQgMC41NDQtMC4wNDcgMC42NTMtMC4xOTdsMC4wMTYtMC4wMTljMC4xNjYtMC4yNDcgMC42ODEtMC43NjYgMC42ODgtMC43NzIgMC44MDYtMC44MDYgMS44ODQtMS4yNSAzLjAzNy0xLjI1IDEuMTQ3IDAgMi4yMjIgMC40NDQgMy4wMjggMS4yNSAwLjgwOSAwLjgwOSAxLjI1NiAxLjg4MSAxLjI1NiAzLjAxOSAwIDEuMTQxLTAuNDQ0IDIuMjE2LTEuMjUgMy4wMTktMC43OTQgMC43OTQtMS45MDYgMS4yNS0zLjA0NyAxLjI1LTAuNzcyIDAtMS41MTktMC4yMDYtMi4xNTktMC41OTdsMC4wMDMtMy42ODhjMC0wLjQ5MSAwLjIxMy0xLjAyOCAwLjU3Mi0xLjQzMSAwLjQwOS0wLjQ2MyAwLjk3Mi0wLjcxNiAxLjU4OC0wLjcxNiAwLjU5NCAwIDEuMTUgMC4yMjUgMS41NjYgMC42MzQgMC40MDkgMC40MDYgMC42MzcgMC45NSAwLjYzNyAxLjUyOCAwIDEuMjMxLTAuOTY5IDIuMTk3LTIuMjA2IDIuMTk3LTAuMjM4IDAtMC42NzItMC4xMDYtMC42OTEtMC4xMDktMC4yNS0wLjA3NS0wLjM1NiAwLjI3Mi0wLjM5MSAwLjM4Ny0wLjEzNCAwLjQ0MSAwLjA2OSAwLjUyOCAwLjEwOSAwLjU0MSAwLjM5NyAwLjEyNSAwLjY1OSAwLjE0NyAxLjAwMyAwLjE0NyAxLjc0NyAwIDMuMTY5LTEuNDIyIDMuMTY5LTMuMTY5IDAtMS43MzQtMS40MjItMy4xNDQtMy4xNjYtMy4xNDQtMC44NTYgMC0xLjY1OSAwLjMyOC0yLjI2MyAwLjkxOS0wLjU3NSAwLjU2Ni0wLjkwMyAxLjMxOS0wLjkwMyAyLjA2OXYwLjAxOWMtMC4wMDMgMC4wOTQtMC4wMDMgMi4zMDYtMC4wMDYgMy4wMzFsLTAuMDAzLTAuMDAzYy0wLjMyOC0wLjM2My0wLjY1My0wLjkxOS0wLjg2OS0xLjQ4OC0wLjA4NC0wLjIyMi0wLjI3NS0wLjE4NC0wLjUzNC0wLjEwMy0wLjEyNSAwLjAzNC0wLjQ2OSAwLjE0MS0wLjM5MSAwLjM5NHYwek03LjY3NSA5LjY0N2MwIDAuMTA2IDAuMDk3IDAuMiAwLjE1NiAwLjI1M2wwLjAxOSAwLjAxOWMwLjEgMC4wOTcgMC4xOTQgMC4xNDcgMC4yODEgMC4xNDcgMC4wNzIgMCAwLjExNi0wLjAzNCAwLjEzMS0wLjA1MCAwLjA0NC0wLjA0MSAwLjUzNy0wLjU0NCAwLjU4OC0wLjU5MWwwLjU1MyAwLjU1YzAuMDUwIDAuMDU2IDAuMTA2IDAuMDg4IDAuMTcyIDAuMDg4IDAuMDg4IDAgMC4xODQtMC4wNTMgMC4yODQtMC4xNTYgMC4yMzgtMC4yNDQgMC4xMTktMC4zNzUgMC4wNjMtMC40MzhsLTAuNTU5LTAuNTU5IDAuNTg0LTAuNTg4YzAuMTI4LTAuMTM3IDAuMDE2LTAuMjg0LTAuMDk3LTAuMzk3LTAuMTYyLTAuMTYyLTAuMzIyLTAuMjA2LTAuNDIyLTAuMTEybC0wLjU4MSAwLjU4MS0wLjU4OC0wLjU4OGMtMC4wMzEtMC4wMzEtMC4wNzItMC4wNDctMC4xMTMtMC4wNDctMC4wNzggMC0wLjE3MiAwLjA1My0wLjI3NSAwLjE1Ni0wLjE4MSAwLjE4MS0wLjIxOSAwLjMwNi0wLjEyNSAwLjQwNmwwLjU4OCAwLjU4NC0wLjU4NCAwLjU4NGMtMC4wNTMgMC4wNTAtMC4wNzggMC4xMDMtMC4wNzUgMC4xNTZ6TTguOTUzIDEuNzE2Yy0wLjkzOCAwLTEuOTM4IDAuMTkxLTIuNjY5IDAuNTA2LTAuMDc4IDAuMDMxLTAuMTI1IDAuMDk0LTAuMTM0IDAuMTgxLTAuMDA5IDAuMDg0IDAuMDEzIDAuMTk0IDAuMDY5IDAuMzM3IDAuMDQ3IDAuMTE2IDAuMTY2IDAuNDI1IDAuNCAwLjMzNCAwLjc1LTAuMjg4IDEuNTgxLTAuNDQ0IDIuMzM0LTAuNDQ0IDAuODU2IDAgMS42ODggMC4xNjkgMi40NjkgMC40OTcgMC42MjIgMC4yNjMgMS4yMDYgMC42NDQgMS44NDQgMS4xOTQgMC4wNDcgMC4wNDEgMC4wOTcgMC4wNTkgMC4xNDcgMC4wNTkgMC4xMjUgMCAwLjI0NC0wLjEyMiAwLjM0Ny0wLjIzNyAwLjE2OS0wLjE5MSAwLjI4Ny0wLjM1IDAuMTE5LTAuNTA5LTAuNjA5LTAuNTc1LTEuMjc1LTEuMDA2LTIuMS0xLjM1Ni0wLjg5NC0wLjM3Mi0xLjg0Ny0wLjU2My0yLjgyNS0wLjU2M3pNMTQuMDA2IDEzLjN2MGMtMC4xMTMtMC4xMTMtMC4yMDktMC4xNzgtMC4yOTQtMC4yMDNzLTAuMTYyLTAuMDA2LTAuMjIyIDAuMDUzbC0wLjA1NiAwLjA1NmMtMC41ODEgMC41ODEtMS4yNTkgMS4wMzctMi4wMTIgMS4zNTYtMC43ODEgMC4zMzEtMS42MDkgMC40OTctMi40NjMgMC40OTctMC44NTYgMC0xLjY4NC0wLjE2OS0yLjQ2My0wLjQ5Ny0wLjc1My0wLjMxOS0xLjQzMS0wLjc3NS0yLjAxMy0xLjM1Ni0wLjYwNi0wLjYwNi0xLjA2My0xLjI4NC0xLjM1Ni0yLjAxMi0wLjI4OC0wLjcxMy0wLjM4MS0xLjI0Ny0wLjQxMy0xLjQyMi0wLjAwMy0wLjAxNi0wLjAwNi0wLjAyOC0wLjAwNi0wLjAzNy0wLjA0MS0wLjIwNi0wLjIzMS0wLjIyMi0wLjUwMy0wLjE3OC0wLjExMiAwLjAxOS0wLjQ1OSAwLjA3Mi0wLjQyOCAwLjMxOXYwLjAwNmMwLjA5MSAwLjU3OCAwLjI1MyAxLjE0NCAwLjQ4MSAxLjY4MSAwLjM2NiAwLjg2NiAwLjg5MSAxLjY0NCAxLjU1OSAyLjMxM3MxLjQ0NyAxLjE5MSAyLjMxMyAxLjU1OWMwLjg5NyAwLjM3OCAxLjg1IDAuNTcyIDIuODMxIDAuNTcyczEuOTM0LTAuMTk0IDIuODMxLTAuNTcyYzAuODY2LTAuMzY2IDEuNjQ0LTAuODkxIDIuMzEzLTEuNTU5IDAgMCAwLjAzNy0wLjAzNyAwLjA1OS0wLjA1OSAwLjA2OS0wLjA4NCAwLjEzNC0wLjIyNS0wLjE1OS0wLjUxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdGVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA0LjVjMC0wLjgyOCAwLjY3Mi0xLjUgMS41LTEuNXMxLjUgMC42NzIgMS41IDEuNWMwIDAuODI4LTAuNjcyIDEuNS0xLjUgMS41cy0xLjUtMC42NzItMS41LTEuNXpNMTQuOTc1IDIuMDI1Yy0xLjM2Ny0xLjM2Ny0zLjU4My0xLjM2Ny00Ljk1IDAtMC41NTYgMC41NTYtMC44ODYgMS4yNTItMC45ODkgMS45NzV2MGwtMy4xOTggNC44NDdjLTAuNDMgMC4wMjItMC44NTYgMC4xMzItMS4yNDkgMC4zMjhsLTIuNDY3LTEuOTI4Yy0wLjU3MS0wLjQ0Ni0xLjM5Ni0wLjM0NS0xLjg0MiAwLjIyNnMtMC4zNDUgMS4zOTYgMC4yMjYgMS44NDJsMi40MzYgMS45MDVjLTAuMjY1IDEuMDQzIDAuMDEwIDIuMTk2IDAuODI3IDMuMDEyIDEuMjMzIDEuMjMzIDMuMjMyIDEuMjMzIDQuNDY1IDAgMC43NTctMC43NTcgMS4wNDktMS44MDQgMC44NzYtMi43ODRsMy44OTEtMy40ODRjMC43MjMtMC4xMDQgMS40MTktMC40MzQgMS45NzUtMC45ODkgMS4zNjctMS4zNjcgMS4zNjctMy41ODMgMC00Ljk1ek02IDE0LjEwNWMtMS4xNjIgMC0yLjEwNS0wLjk0Mi0yLjEwNS0yLjEwNSAwLTAuMDExIDAuMDAxLTAuMDIyIDAuMDAxLTAuMDMzbDEuMDQ2IDAuODE3YzAuMjQgMC4xODggMC41MjUgMC4yNzggMC44MDcgMC4yNzggMC4zOSAwIDAuNzc2LTAuMTczIDEuMDM1LTAuNTA0IDAuNDQ2LTAuNTcxIDAuMzQ1LTEuMzk2LTAuMjI2LTEuODQybC0wLjk5Mi0wLjc3NmMwLjE0LTAuMDI5IDAuMjg1LTAuMDQ1IDAuNDM0LTAuMDQ1IDEuMTYyIDAgMi4xMDUgMC45NDIgMi4xMDUgMi4xMDVzLTAuOTQyIDIuMTA1LTIuMTA1IDIuMTA1ek0xMi41IDdjLTEuMzgxIDAtMi41LTEuMTE5LTIuNS0yLjVzMS4xMTktMi41IDIuNS0yLjUgMi41IDEuMTE5IDIuNSAyLjUtMS4xMTkgMi41LTIuNSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3RlYW0yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNzQ5IDEzLjA2M2MwLjQyNCAwIDAuODQtMC4yMDUgMS4wOTMtMC41ODUgMC40MDItMC42MDMgMC4yMzktMS40MTgtMC4zNjQtMS44MmwtMS4wMzItMC42ODhjMC4xNzctMC4wNDggMC4zNjItMC4wNzQgMC41NTQtMC4wNzQgMS4xNjIgMCAyLjEwNSAwLjk0MiAyLjEwNSAyLjEwNXMtMC45NDIgMi4xMDUtMi4xMDUgMi4xMDVjLTEuMTMxIDAtMi4wNTQtMC44OTMtMi4xMDItMi4wMTJsMS4xMjQgMC43NDljMC4yMjQgMC4xNDkgMC40NzcgMC4yMjEgMC43MjcgMC4yMjF6TTEzLjMzMyAwYzEuNDY3IDAgMi42NjcgMS4yIDIuNjY3IDIuNjY3djEwLjY2NmMwIDEuNDY4LTEuMiAyLjY2Ny0yLjY2NyAyLjY2N2gtMTAuNjY2Yy0xLjQ2NyAwLTIuNjY3LTEuMTk5LTIuNjY3LTIuNjY3di0zLjE3MmwxLjg5NiAxLjI2NGMtMC4xODIgMC45ODcgMC4xMDggMi4wNDQgMC44NzIgMi44MDggMS4yMzMgMS4yMzMgMy4yMzIgMS4yMzMgNC40NjUgMCAwLjc1Ny0wLjc1NyAxLjA0OS0xLjgwNCAwLjg3Ni0yLjc4NGwzLjg5Mi0zLjQ4NGMwLjcyMy0wLjEwNCAxLjQxOS0wLjQzMyAxLjk3NS0wLjk4OSAxLjM2Ny0xLjM2NyAxLjM2Ny0zLjU4MyAwLTQuOTVzLTMuNTgzLTEuMzY3LTQuOTUgMGMtMC41NTYgMC41NTYtMC44ODYgMS4yNTItMC45ODkgMS45NzV2MGwtMy4xOTggNC44NDdjLTAuNDk4IDAuMDI1LTAuOTkgMC4xNjgtMS40MzMgMC40MjhsLTMuNDA0LTIuMjY5di00LjMzOWMwLTEuNDY3IDEuMi0yLjY2NyAyLjY2Ny0yLjY2N2gxMC42NjZ6TTE0IDQuNWMwLTEuMzgxLTEuMTE5LTIuNS0yLjUtMi41cy0yLjUgMS4xMTktMi41IDIuNSAxLjExOSAyLjUgMi41IDIuNSAyLjUtMS4xMTkgMi41LTIuNXpNMTAgNC41YzAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjUtMC42NzIgMS41LTEuNSAxLjUtMS41LTAuNjcyLTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRHJvcGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDAuNWwtMy41IDMgNC41IDMgMy41LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzLjVsLTMuNS0zLTQuNSAzIDMuNSAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNi41bDMuNSAzLTQuNSAyLjUtMy41LTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5bC00LjUtMi41LTMuNSAzIDQuNSAyLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzc3IDEzLjIxMmwtMy4zNzctMi44OTUtMy4zNzcgMi44OTUtMi4xMjMtMS4xNzl2MS40NjdsNS41IDIuNSA1LjUtMi41di0xLjQ2N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1PbmVkcml2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ4MiAxMi45NDRjLTAuOTQyLTAuMjM1LTEuNDY2LTAuOTg0LTEuNDY4LTIuMDk1LTAtMC4zNTUgMC4wMjUtMC41MjUgMC4xMTQtMC43NTQgMC4yMTctMC41NiAwLjc5My0wLjk4MiAxLjU1LTEuMTM4IDAuMzc3LTAuMDc3IDAuNDkzLTAuMTYgMC40OTMtMC4zNTMgMC0wLjA2MCAwLjA0NS0wLjI0IDAuMS0wLjM5OSAwLjI0OS0wLjcyNCAwLjcxLTEuMzI3IDEuMjAyLTEuNTczIDAuNTE1LTAuMjU4IDAuNzc2LTAuMzE2IDEuMzk5LTAuMzEzIDAuODg2IDAuMDA1IDEuMzI3IDAuMTk3IDEuOTQ1IDAuODQ2bDAuMzQgMC4zNTcgMC4zMDQtMC4xMDVjMS40NzMtMC41MSAyLjk0MiAwLjM1OCAzLjA2MSAxLjgwOWwwLjAzMiAwLjM5NyAwLjI5IDAuMTA0YzAuODI5IDAuMjk3IDEuMjE4IDAuOTIgMS4xNDggMS44MzctMC4wNDYgMC41OTktMC4zMjYgMS4wNzgtMC43NyAxLjMxNWwtMC4yMDkgMC4xMTItNC42MzggMC4wMDljLTMuNTY0IDAuMDA3LTQuNjk3LTAuMDA2LTQuODkzLTAuMDU1djB6TTEuNjEzIDEyLjI4MWMtMC41NjUtMC4xNDItMS4xNjQtMC42Ny0xLjQ0NS0xLjI3My0wLjE1OS0wLjM0Mi0wLjE2OC0wLjM5My0wLjE2OC0wLjk5OCAwLTAuNTc2IDAuMDE0LTAuNjY4IDAuMTQtMC45NTQgMC4yNjctMC42MDMgMC43OC0xLjAzOCAxLjQyMi0xLjIxIDAuMTM2LTAuMDM2IDAuMjYzLTAuMDk0IDAuMjgzLTAuMTI4czAuMDQzLTAuMjIxIDAuMDUwLTAuNDE1YzAuMDQ1LTEuMjA2IDAuNzk0LTIuMjY5IDEuODM5LTIuNjEgMC41NjUtMC4xODQgMS4zMDYtMC4yMDIgMS45MiAwLjA1OCAwLjE5NSAwLjA4MiAwLjE3MyAwLjEgMC41ODUtMC40NzEgMC4yNDQtMC4zMzggMC43MDUtMC42OTUgMS4xMDgtMC45MDkgMC40MzUtMC4yMzEgMC44ODctMC4zMzcgMS40MjgtMC4zMzYgMS41MTIgMC4wMDQgMi44MTUgMS4wMDMgMy4yOTcgMi41MjkgMC4xNTQgMC40ODcgMC4xNDYgMC42MjQtMC4wMzUgMC42MjgtMC4wNzkgMC4wMDItMC4zMDYgMC4wNDgtMC41MDUgMC4xMDJsLTAuMzYxIDAuMDk5LTAuMzI5LTAuMzQ4Yy0wLjkyOC0wLjk4LTIuNDQxLTEuMTkyLTMuNzI4LTAuNTIyLTAuNTE0IDAuMjY4LTAuOTI3IDAuNjUyLTEuMjM5IDEuMTUzLTAuMjIyIDAuMzU3LTAuNTA2IDEuMDI0LTAuNTA2IDEuMTg5IDAgMC4xMTctMC4wOTAgMC4xNzYtMC40NzQgMC4zMDktMS4xODkgMC40MTItMS44ODMgMS4zNjQtMS44ODIgMi41ODIgMCAwLjQ0MyAwLjEwOCAwLjk4NiAwLjI1OCAxLjI5NiAwLjA1NyAwLjExNyAwLjA4OCAwLjIyOCAwLjA3MCAwLjI0Ny0wLjA0NiAwLjA0OS0xLjUyNSAwLjAzMi0xLjczLTAuMDE5djB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMC4xOThjLTQuNDE4IDAtOCAzLjU4Mi04IDggMCAzLjUzNSAyLjI5MiA2LjUzMyA1LjQ3MSA3LjU5MSAwLjQgMC4wNzQgMC41NDctMC4xNzQgMC41NDctMC4zODUgMC0wLjE5MS0wLjAwOC0wLjgyMS0wLjAxMS0xLjQ4OS0yLjIyNiAwLjQ4NC0yLjY5NS0wLjk0NC0yLjY5NS0wLjk0NC0wLjM2NC0wLjkyNS0wLjg4OC0xLjE3MS0wLjg4OC0xLjE3MS0wLjcyNi0wLjQ5NyAwLjA1NS0wLjQ4NiAwLjA1NS0wLjQ4NiAwLjgwMyAwLjA1NiAxLjIyNiAwLjgyNCAxLjIyNiAwLjgyNCAwLjcxNCAxLjIyMyAxLjg3MiAwLjg2OSAyLjMyOCAwLjY2NSAwLjA3Mi0wLjUxNyAwLjI3OS0wLjg3IDAuNTA4LTEuMDcwLTEuNzc3LTAuMjAyLTMuNjQ1LTAuODg4LTMuNjQ1LTMuOTU0IDAtMC44NzMgMC4zMTMtMS41ODcgMC44MjQtMi4xNDctMC4wODMtMC4yMDItMC4zNTctMS4wMTUgMC4wNzctMi4xMTcgMCAwIDAuNjcyLTAuMjE1IDIuMjAxIDAuODIgMC42MzgtMC4xNzcgMS4zMjItMC4yNjYgMi4wMDItMC4yNjkgMC42OCAwLjAwMyAxLjM2NSAwLjA5MiAyLjAwNCAwLjI2OSAxLjUyNy0xLjAzNSAyLjE5OC0wLjgyIDIuMTk4LTAuODIgMC40MzUgMS4xMDIgMC4xNjIgMS45MTYgMC4wNzkgMi4xMTcgMC41MTMgMC41NiAwLjgyMyAxLjI3NCAwLjgyMyAyLjE0NyAwIDMuMDczLTEuODcyIDMuNzQ5LTMuNjUzIDMuOTQ3IDAuMjg3IDAuMjQ4IDAuNTQzIDAuNzM1IDAuNTQzIDEuNDgxIDAgMS4wNzAtMC4wMDkgMS45MzItMC4wMDkgMi4xOTUgMCAwLjIxMyAwLjE0NCAwLjQ2MiAwLjU1IDAuMzg0IDMuMTc3LTEuMDU5IDUuNDY2LTQuMDU3IDUuNDY2LTcuNTkgMC00LjQxOC0zLjU4Mi04LTgtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1OcG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwdjE2aDE2di0xNmgtMTZ6TTEzIDEzaC0ydi04aC0zdjhoLTV2LTEwaDEwdjEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJhc2VjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMS42NjZjLTIuOTE5IDAtNS4xNjkgMi40NDQtNi40NDQgNC44MzgtMC43MTkgMS4zNDctMS4yMjIgMi44MjItMS40NTMgNC4zMzEtMC4wMjUgMC4xNzItMC4wNTAgMC4zNDQtMC4wNjkgMC41MTktMC4wMDkgMC4wOTQtMC4wMTkgMC4xODgtMC4wMjUgMC4yODEtMC4wMDkgMC4xMTktMC4wMDMgMC4xNTYgMC4wNTkgMC4yNTYgMC4xODcgMC4zMDMgMC40MDkgMC41ODQgMC42NTkgMC44MzggMC41MTIgMC41MjUgMS4xMzQgMC45MjggMS43OTQgMS4yNDEgMS41MDMgMC43MDkgMy4yIDAuOTY2IDQuODUgMS4wMjIgMS43MDMgMC4wNTYgMy40NTMtMC4wODQgNS4wODEtMC42MTYgMS4zOTEtMC40NTMgMi43MzEtMS4yNDQgMy41MDMtMi41MjIgMC4wODQtMC4xMzcgMC4wMjUtMC4zNDEgMC4wMDktMC41LTAuMDE5LTAuMTkxLTAuMDQ0LTAuMzc4LTAuMDc1LTAuNTY2LTAuMDU2LTAuMzY5LTAuMTMxLTAuNzMxLTAuMjIyLTEuMDk0LTAuMTgxLTAuNzM4LTAuNDI4LTEuNDYzLTAuNzI4LTIuMTU5LTEuMDg4LTIuNTI1LTMuMS01LjIxOS01Ljk2My01Ljc3NS0wLjMyMi0wLjA2My0wLjY1LTAuMDk0LTAuOTc4LTAuMDk0ek04LjEgMTMuOTA5Yy0xLjc4NCAwLTMuNzI4LTAuMTU5LTUuMzM0LTEuMDE5LTAuNjI1LTAuMzM0LTEuMjYyLTAuODE5LTEuNTYzLTEuNDg0LTAuMDg3LTAuMTk0LTAuMDU2LTAuMjY5LTAuMDE2LTAuNDk3IDAuMDI4LTAuMTQ3IDAuMDQxLTAuMjkxIDAuMTA2LTAuNDI4IDAuMDkxLTAuMTkxIDAuMTg0LTAuMzc4IDAuMjgxLTAuNTY2IDAuMzI4LTAuNjM0IDAuNjgxLTEuMjYyIDEuMDkxLTEuODUzIDAuMjAzLTAuMjkxIDAuNDE5LTAuNTc4IDAuNjY5LTAuODI4IDAuMTc1LTAuMTc1IDAuMzg4LTAuMzYyIDAuNjM0LTAuNDIyIDAuNzU2LTAuMTgxIDEuMzM0IDAuNjk0IDEuNzk0IDEuMTM0IDAuMjIyIDAuMjEzIDAuNTE5IDAuNDUzIDAuODUgMC40MTIgMC4yMjgtMC4wMjggMC40MzEtMC4yMDYgMC41OTQtMC4zNTMgMC41NTMtMC40OTcgMC45OTctMS4xMTIgMS40NTYtMS42OTEgMC4yMjgtMC4yODQgMC40NTMtMC41NzIgMC43LTAuODQ0IDAuMTY2LTAuMTg0IDAuMzQ3LTAuMzk0IDAuNTY5LTAuNTEzIDAuMzk3LTAuMjE2IDAuOTAzIDAuMjI4IDEuMTc4IDAuNDU2IDAuNDY5IDAuMzkxIDAuODg0IDAuODQ3IDEuMjgxIDEuMzA5IDAuMzc4IDAuNDQxIDAuNzQ0IDAuODg4IDEuMDY2IDEuMzcyIDAuNDk3IDAuNzUgMC45MjggMS41NSAxLjMyMiAyLjM1OSAwLjA4NCAwLjE3NSAwLjExMyAwLjI5NCAwLjE0NCAwLjQ4OCAwLjAxOSAwLjEwNiAwLjA1OSAwLjIyOCAwLjA0NCAwLjMzOC0wLjAyMiAwLjE1My0wLjEyOCAwLjMxOS0wLjIwNiAwLjQ0NC0wLjE4OCAwLjI5Ny0wLjQ0MSAwLjU1My0wLjcxOSAwLjc2OS0xLjE2NiAwLjkwMy0yLjc0NCAxLjIwMy00LjE3OCAxLjMzOC0wLjU4OCAwLjA1Ni0xLjE3NSAwLjA3OC0xLjc2MiAwLjA3OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTcgMTJjMCAwLjU1LTAuNDUgMS0xIDFoLTJjLTAuNTUgMC0xLTAuNDUtMS0xdi04YzAtMC41NSAwLjQ1LTEgMS0xaDJjMC41NSAwIDEgMC40NSAxIDF2OHpNMTMgOWMwIDAuNTUtMC40NSAxLTEgMWgtMmMtMC41NSAwLTEtMC40NS0xLTF2LTVjMC0wLjU1IDAuNDUtMSAxLTFoMmMwLjU1IDAgMSAwLjQ1IDEgMXY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdvcmRwcmVzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDhjMCAyLjMxMyAxLjM4IDQuMzEyIDMuMzgyIDUuMjU5bC0yLjg2Mi03LjYzN2MtMC4zMzMgMC43MjctMC41MiAxLjUzMS0wLjUyIDIuMzc4ek0xMi4wNTAgNy43MDVjMC0wLjcyMi0wLjI2Ni0xLjIyMi0wLjQ5NS0xLjYxMi0wLjMwNC0wLjQ4Mi0wLjU4OS0wLjg4OS0wLjU4OS0xLjM3MSAwLTAuNTM3IDAuNDE4LTEuMDM3IDEuMDA4LTEuMDM3IDAuMDI3IDAgMC4wNTIgMC4wMDMgMC4wNzggMC4wMDUtMS4wNjctMC45NTMtMi40OS0xLjUzNC00LjA1Mi0xLjUzNC0yLjA5NiAwLTMuOTQgMS4wNDgtNS4wMTMgMi42MzQgMC4xNDEgMC4wMDQgMC4yNzQgMC4wMDcgMC4zODYgMC4wMDcgMC42MjcgMCAxLjU5OS0wLjA3NCAxLjU5OS0wLjA3NCAwLjMyMy0wLjAxOCAwLjM2MSAwLjQ0NCAwLjAzOCAwLjQ4MiAwIDAtMC4zMjUgMC4wMzctMC42ODcgMC4wNTVsMi4xODUgNi4zMyAxLjMxMy0zLjgzNS0wLjkzNS0yLjQ5NWMtMC4zMjMtMC4wMTktMC42MjktMC4wNTUtMC42MjktMC4wNTUtMC4zMjMtMC4wMTktMC4yODUtMC41IDAuMDM4LTAuNDgyIDAgMCAwLjk5MSAwLjA3NCAxLjU4IDAuMDc0IDAuNjI3IDAgMS41OTktMC4wNzQgMS41OTktMC4wNzQgMC4zMjMtMC4wMTggMC4zNjIgMC40NDQgMC4wMzggMC40ODIgMCAwLTAuMzI2IDAuMDM3LTAuNjg3IDAuMDU1bDIuMTY4IDYuMjgyIDAuNTk5LTEuOTQ3YzAuMjU5LTAuODA5IDAuNDU3LTEuMzg5IDAuNDU3LTEuODg5ek04LjEwNSA4LjUxMWwtMS44IDUuMDk1YzAuNTM4IDAuMTU0IDEuMTA2IDAuMjM4IDEuNjk1IDAuMjM4IDAuNjk5IDAgMS4zNjktMC4xMTcgMS45OTItMC4zMzEtMC4wMTYtMC4wMjUtMC4wMzEtMC4wNTItMC4wNDMtMC4wODFsLTEuODQ0LTQuOTIxek0xMy4yNjUgNS4xOTZjMC4wMjYgMC4xODYgMC4wNDAgMC4zODYgMC4wNDAgMC42MDEgMCAwLjU5My0wLjExNCAxLjI1OS0wLjQ1NiAyLjA5M2wtMS44MzMgNS4xNmMxLjc4NC0xLjAxMyAyLjk4My0yLjg5NSAyLjk4My01LjA1MSAwLTEuMDE2LTAuMjY3LTEuOTcxLTAuNzM1LTIuODAzek04IDBjLTQuNDE4IDAtOCAzLjU4Mi04IDhzMy41ODIgOCA4IDggOC0zLjU4MiA4LTgtMy41ODItOC04LTh6TTggMTVjLTMuODY2IDAtNy0zLjEzNC03LTdzMy4xMzQtNyA3LTcgNyAzLjEzNCA3IDctMy4xMzQgNy03IDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSm9vbWxhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTU2IDQuMzIzYzAuNTEzLTAuNTEzIDEuMzQ0LTAuNTEzIDEuODU2LTBsMC4xMjIgMC4xMjMgMS41OC0xLjU4MS0wLjEyMy0wLjEyM2MtMC45LTAuOTAyLTIuMTY0LTEuMjE3LTMuMzE5LTAuOTQ2LTAuMTY2LTEuMDE4LTEuMDQ4LTEuNzk2LTIuMTEyLTEuNzk2LTEuMTgyIDAtMi4xNCAwLjk2LTIuMTQgMi4xNDMgMCAxLjAyMSAwLjcxMiAxLjg3NSAxLjY2NyAyLjA5MS0wLjM2MiAxLjIxLTAuMDY2IDIuNTc2IDAuODg4IDMuNTMxbDMuNTYgMy41NjEgMS41NzgtMS41ODEtMy41Ni0zLjU2MWMtMC41MTEtMC41MTEtMC41MTItMS4zNDYgMC4wMDMtMS44NjF6TTE1Ljk4IDIuMTQzYzAtMS4xODQtMC45NTgtMi4xNDMtMi4xNC0yLjE0My0xLjA4MiAwLTEuOTc2IDAuODA0LTIuMTIgMS44NDctMS4yMDQtMC4zNTQtMi41NTktMC4wNTUtMy41MSAwLjg5N2wtMy41NiAzLjU2MSAxLjU4IDEuNTgxIDMuNTU5LTMuNTZjMC41MTUtMC41MTUgMS4zNDQtMC41MTQgMS44NTQtMC4wMDMgMC41MTIgMC41MTMgMC41MTIgMS4zNDYtMC4wMDEgMS44NTlsLTAuMTIyIDAuMTIyIDEuNTc4IDEuNTgyIDAuMTIzLTAuMTI0YzAuOTQ1LTAuOTQ2IDEuMjQ1LTIuMjkzIDAuOS0zLjQ5NCAxLjA0OS0wLjEzOCAxLjg1OC0xLjAzNyAxLjg1OC0yLjEyNXpNMTQuMTYgMTEuNzM1YzAuMjgzLTEuMTYzLTAuMDMxLTIuNDQzLTAuOTM5LTMuMzUybC0zLjU1NS0zLjU2Mi0xLjU4IDEuNTggMy41NTUgMy41NjNjMC41MTUgMC41MTYgMC41MTQgMS4zNDUgMC4wMDMgMS44NTctMC41MTMgMC41MTMtMS4zNDQgMC41MTMtMS44NTctMGwtMC4xMjEtMC4xMjItMS41NzggMS41ODIgMC4xMjEgMC4xMjFjMC45NjEgMC45NjIgMi4zMzggMS4yNTcgMy41NTMgMC44ODMgMC4xOTcgMC45NzkgMS4wNjEgMS43MTYgMi4wOTggMS43MTYgMS4xODEgMCAyLjE0LTAuOTU5IDIuMTQtMi4xNDMgMC0xLjA4MS0wLjgtMS45NzYtMS44NC0yLjEyMnpNOS41NjggOC4yNjFsLTMuNTU1IDMuNTYyYy0wLjUxMSAwLjUxMi0xLjM0NCAwLjUxMy0xLjg1OS0wLjAwMi0wLjUxMy0wLjUxNC0wLjUxMy0xLjM0NS0wLjAwMS0xLjg1OWwwLjEyMi0wLjEyMS0xLjU3OS0xLjU4LTAuMTIxIDAuMTJjLTAuOTE4IDAuOTE5LTEuMjI4IDIuMjE2LTAuOTI5IDMuMzktMC45NDQgMC4yMjMtMS42NDYgMS4wNzItMS42NDYgMi4wODYtMCAxLjE4NCAwLjk1OCAyLjE0MyAyLjE0IDIuMTQzIDEuMDE3LTAuMDAxIDEuODY5LTAuNzEgMi4wODctMS42NjIgMS4xNjcgMC4yOSAyLjQ1My0wLjAyMCAzLjM2NS0wLjkzNGwzLjU1NS0zLjU2Mi0xLjU3OC0xLjU4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOCA4LTMuNTgyIDgtOC0zLjU4Mi04LTgtOHpNMTIuODg1IDkuMjEyYy0wLjU3NSAyLjIzLTIuNTg0IDMuNzg4LTQuODg1IDMuNzg4cy00LjMxLTEuNTU4LTQuODg1LTMuNzg4Yy0wLjA5Ny0wLjM3NyAwLjEzMS0wLjc2NCAwLjUwOC0wLjg2MSAwLjA1OC0wLjAxNSAwLjExOC0wLjAyMyAwLjE3Ny0wLjAyMyAwLjMyMiAwIDAuNjA0IDAuMjE4IDAuNjg0IDAuNTMxIDAuNDE0IDEuNjA1IDEuODYgMi43MjcgMy41MTYgMi43MjdzMy4xMDItMS4xMjEgMy41MTYtMi43MjdjMC4wODEtMC4zMTMgMC4zNjItMC41MzEgMC42ODQtMC41MzEgMC4wNjAgMCAwLjEyIDAuMDA4IDAuMTc4IDAuMDIzIDAuMTgzIDAuMDQ3IDAuMzM2IDAuMTYzIDAuNDMyIDAuMzI2czAuMTIzIDAuMzUzIDAuMDc1IDAuNTM2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJsb2dnZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuOTY2IDZoLTAuODk3Yy0wLjU0OSAwLTEuMDMxLTAuNDY1LTEuMDY5LTF2MGMwLTIuODU0LTIuMzAxLTUtNS4xNzUtNWgtMi42MjJjLTIuODcyIDAtNS4yMDEgMi4zMTMtNS4yMDMgNS4xNjd2NS42NjljMCAyLjg1NCAyLjMzMSA1LjE2NSA1LjIwMyA1LjE2NWg1LjZjMi44NzQgMCA1LjE5Ny0yLjMxMSA1LjE5Ny01LjE2NXYtMy42NjJjMC0wLjU3LTAuNDYtMS4xNzMtMS4wMzQtMS4xNzN6TTUgNGgzYzAuNTUgMCAxIDAuNDUgMSAxcy0wLjQ1IDEtMSAxaC0zYy0wLjU1IDAtMS0wLjQ1LTEtMXMwLjQ1LTEgMS0xek0xMSAxMmgtNmMtMC41NSAwLTEtMC40NS0xLTFzMC40NS0xIDEtMWg2YzAuNTUgMCAxIDAuNDUgMSAxcy0wLjQ1IDEtMSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUJsb2dnZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xNCAxMC4xMjVjMCAyLjE0MS0xLjc0MSAzLjg3NS0zLjg5NyAzLjg3NWgtNC4yYy0yLjE1NiAwLTMuOTAzLTEuNzM0LTMuOTAzLTMuODc1di00LjI1YzAtMi4xNDEgMS43NDctMy44NzUgMy45MDMtMy44NzVoMS45NjZjMi4xNTYgMCAzLjg4MSAxLjYwOSAzLjg4MSAzLjc1IDAuMDI4IDAuNCAwLjM5MSAwLjc1IDAuOCAwLjc1aDAuNjcyYzAuNDMxIDAgMC43NzUgMC40NTMgMC43NzUgMC44ODF2Mi43NDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTBjMCAwLjU1LTAuNDUgMS0xIDFoLTRjLTAuNTUgMC0xLTAuNDUtMS0xdjBjMC0wLjU1IDAuNDUtMSAxLTFoNGMwLjU1IDAgMSAwLjQ1IDEgMXYwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmMwIDAuNTUtMC40NSAxLTEgMWgtMmMtMC41NSAwLTEtMC40NS0xLTF2MGMwLTAuNTUgMC40NS0xIDEtMWgyYzAuNTUgMCAxIDAuNDUgMSAxdjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDAxIDdsLTAgMy42NTljMCAwLjkyOC0wLjAxMiAxLjQ2MyAwLjA4NiAxLjcyNyAwLjA5OCAwLjI2MiAwLjM0MiAwLjUzNCAwLjYwOSAwLjY5MSAwLjM1NCAwLjIxMiAwLjc1OCAwLjMxOCAxLjIxNCAwLjMxOCAwLjgxIDAgMS4yODktMC4xMDcgMi4wOTAtMC42MzN2Mi40MDVjLTAuNjgzIDAuMzIxLTEuMjc5IDAuNTA5LTEuODMzIDAuNjM5LTAuNTU1IDAuMTI5LTEuMTU0IDAuMTk0LTEuNzk4IDAuMTk0LTAuNzMyIDAtMS4xNjMtMC4wOTItMS43MjUtMC4yNzYtMC41NjItMC4xODUtMS4wNDItMC40NS0xLjQzOC0wLjc5LTAuMzk4LTAuMzQzLTAuNjcyLTAuNzA2LTAuODI2LTEuMDkxcy0wLjIzLTAuOTQ0LTAuMjMtMS42NzZ2LTUuNjExaC0yLjE0N3YtMi4yNjZjMC42MjgtMC4yMDQgMS4zMzEtMC40OTcgMS43NzgtMC44NzcgMC40NDktMC4zODIgMC44MDktMC44MzkgMS4wODAtMS4zNzQgMC4yNzItMC41MzQgMC40NTktMS4yMTQgMC41NjEtMi4wMzloMi41NzlsLTAgNGgzLjk5OXYzaC0zLjk5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UdW1ibHIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0xMS40MzQgMTIuODg0Yy0wLjQ3MiAwLjIyMi0wLjkgMC4zNzgtMS4yODEgMC40NjktMC4zODEgMC4wODgtMC43OTcgMC4xMzQtMS4yNDEgMC4xMzQtMC41MDYgMC0wLjgwMy0wLjA2My0xLjE5MS0wLjE5MXMtMC43MTktMC4zMDktMC45OTQtMC41NDRjLTAuMjc1LTAuMjM4LTAuNDYzLTAuNDg4LTAuNTY5LTAuNzUzcy0wLjE1OS0wLjY1LTAuMTU5LTEuMTU2di0zLjg3MmgtMS41di0xLjU2M2MwLjQzNC0wLjE0MSAwLjkzOC0wLjM0NCAxLjI0NC0wLjYwNiAwLjMwOS0wLjI2MyAwLjU1OS0wLjU3OCAwLjc0NC0wLjk0NyAwLjE4OC0wLjM2OSAwLjMxNi0wLjgzNyAwLjM4OC0xLjQwNmgxLjU2OXYyLjU1aDIuNTU2djEuOTcyaC0yLjU1M3YyLjgzMWMwIDAuNjQxLTAuMDA5IDEuMDA5IDAuMDU5IDEuMTkxczAuMjM4IDAuMzY5IDAuNDIyIDAuNDc1YzAuMjQ0IDAuMTQ3IDAuNTI1IDAuMjE5IDAuODM4IDAuMjE5IDAuNTU5IDAgMS4xMTYtMC4xODEgMS42NjktMC41NDR2MS43NDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC44NzggOS4yMDN2MGMxLjc1OS0zLjA4OCA0LjY2Ni04LjEyNSA1LjQ2My05LjIwMy0wLjM1IDAuMjM0LTAuODg3IDAuMzUzLTEuMzgxIDAuNDY2bC0wLjc0Ny0wLjQ2NmMtMC42IDEuMTE5LTIuODEzIDQuNzM0LTQuMjIyIDcuMDUwLTEuNDI4LTIuMzY2LTMuMTE5LTUuMDk3LTQuMjIyLTcuMDUwLTAuODc1IDAuMTg4LTEuMjM3IDAuMTk3LTIuMTA5IDB2MCAwYzAgMCAwIDAgMCAwdjBjMS43MzEgMi42MDYgNC41MDMgNy41NzIgNS40NDcgOS4yMDN2MGwtMC4xMjggNi43OTcgMS4wMTMtMC40NjZ2LTAuMDEybDEuMDEyIDAuNDc4LTAuMTI1LTYuNzk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVlhaG9vMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjAxOSAxLjA4N2MtMi44MjggMC01LjUtMC4zNzItOC4wMTktMS4wODcgMCA1LjY1MyAwIDE0LjU4MSAwIDE2IDIuNTIyLTAuNzE2IDUuMTk0LTEuMDg4IDguMDE5LTEuMDg4IDIuNzk0IDAgNS40NTkgMC4zNjMgNy45ODEgMS4wODggMC01LjQ0NCAwLTEwLjE1MyAwLTE2LTIuNTIyIDAuNzI1LTUuMTg0IDEuMDg3LTcuOTgxIDEuMDg3ek0xMi40NSAyLjQ1M2wtMC4wOTcgMC4xNTNjLTAuMDkxIDAuMTQ0LTAuMTcyIDAuMjY2LTAuMjg0IDAuNDM4LTAuMTUgMC4yMjUtMC40MzEgMC42NzItMC43NjkgMS4yNDctMC4wOTQgMC4xNTktMC4yMDkgMC4zNS0wLjMyOCAwLjU1Ni0wLjIyOCAwLjM4NC0wLjQ4NCAwLjgxOS0wLjY4OCAxLjE2Mi0wLjA4NCAwLjE0Ny0wLjE2OSAwLjI5Ny0wLjI1NiAwLjQ0Ny0wLjIyNSAwLjM5MS0wLjQ1NiAwLjc5NC0wLjY3OCAxLjE4MS0wLjIyOCAwLjQwMy0wLjQ1MyAwLjgtMC42NzggMS4xOTR2MC4zOTdjMCAwLjU1IDAuMDEyIDEuMTUgMC4wMzEgMS42ODQgMC4wMDkgMC4yNDQgMC4wMTkgMC42NzggMC4wMzEgMS4xMzcgMC4wMTIgMC41NDcgMC4wMjUgMS4xMTMgMC4wNDEgMS40bDAuMDAzIDAuMDg4djAuMDA5bC0wLjA5NC0wLjAyNWMtMC4wMzctMC4wMDktMC4wNzItMC4wMTktMC4xMDktMC4wMjgtMC4xMTMtMC4wMjUtMC4yMzQtMC4wNDQtMC4zNTMtMC4wNTYtMC4wNzItMC4wMDYtMC4xNDctMC4wMDktMC4yMjItMC4wMDkgMCAwIDAgMCAwIDBzMCAwIDAgMGMtMC4wNzUgMC0wLjE1IDAuMDAzLTAuMjIyIDAuMDA5LTAuMTE5IDAuMDEyLTAuMjQxIDAuMDMxLTAuMzUzIDAuMDU2LTAuMDM3IDAuMDA5LTAuMDc1IDAuMDE5LTAuMTA5IDAuMDI4bC0wLjA5NCAwLjAyNXYtMC4wMDlsMC4wMDMtMC4wODhjMC4wMTMtMC4yODQgMC4wMjgtMC44NTMgMC4wNDEtMS40IDAuMDA5LTAuNDU5IDAuMDIyLTAuODk0IDAuMDMxLTEuMTM3IDAuMDIyLTAuNTM3IDAuMDMxLTEuMTM0IDAuMDMxLTEuNjg0di0wLjM5N2MtMC4yMjUtMC4zOTctMC40NS0wLjc5MS0wLjY3OC0xLjE5NC0wLjIyMi0wLjM5MS0wLjQ1My0wLjc5MS0wLjY3NS0xLjE4MS0wLjA4OC0wLjE1LTAuMTcyLTAuMy0wLjI1Ni0wLjQ0Ny0wLjItMC4zNDctMC40NTktMC43ODEtMC42ODgtMS4xNjItMC4xMjItMC4yMDMtMC4yMzctMC4zOTctMC4zMjgtMC41NTYtMC4zMzgtMC41NzUtMC42MTktMS4wMTktMC43NjktMS4yNDctMC4xMTItMC4xNzItMC4xOTQtMC4yOTQtMC4yODQtMC40MzhsLTAuMDk3LTAuMTUzIDAuMTc1IDAuMDUwYzAuMjIyIDAuMDYzIDAuNDUgMC4wOTQgMC42OTQgMC4wOTRzMC40NzgtMC4wMzEgMC42OTctMC4wOTRsMC4wNTMtMC4wMTYgMC4wMjggMC4wNDdjMC40MzEgMC43NzggMS41OTEgMi42ODQgMi4yODQgMy44MjUgMC4yMzcgMC4zOTQgMC40MjggMC43MDMgMC41MjIgMC44NjIgMCAwIDAgMCAwLTAuMDAzIDAgMCAwIDAgMCAwLjAwMyAwLjA5NC0wLjE1NiAwLjI4NC0wLjQ2OSAwLjUyMi0wLjg2MiAwLjY5NC0xLjEzOCAxLjg1My0zLjA0NCAyLjI4NC0zLjgyNWwwLjAyOC0wLjA0NyAwLjA1MyAwLjAxNmMwLjIxOSAwLjA2MyAwLjQ1MyAwLjA5NCAwLjY5NyAwLjA5NHMwLjQ3Mi0wLjAzMSAwLjY5NC0wLjA5NGwwLjE2Ni0wLjA1MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1UdXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC44NyAxMS41MTRjLTEuMjggMC41OTYtMi40NzEgMC41ODktMy4yNzEgMC41MzItMC45NTQtMC4wNjktMS43MjEtMC4zMy0yLjA1OC0wLjU1OC0wLjIwOC0wLjE0MS0wLjQ5LTAuMDg2LTAuNjMxIDAuMTIycy0wLjA4NiAwLjQ5IDAuMTIyIDAuNjMxYzAuNTQyIDAuMzY3IDEuNTAxIDAuNjQgMi41MDMgMC43MTIgMC4xNyAwLjAxMiAwLjM1NiAwLjAyMCAwLjU1NyAwLjAyMCAwLjg3MiAwIDEuOTc5LTAuMDgzIDMuMTYzLTAuNjM0IDAuMjI4LTAuMTA2IDAuMzI2LTAuMzc2IDAuMjItMC42MDRzLTAuMzc2LTAuMzI2LTAuNjA0LTAuMjJ6TTEzLjkyMSAxMC44NDFjMC4wNDQtMy45NDggMC40NDktMTEuNDA5LTcuMTA5LTEwLjgwNi03LjQ2MyAwLjYwMS01LjQ4NCA4LjQ4NC01LjU5NSAxMS4xMjQtMC4wOTkgMS4zOTctMC41NjIgMy4xMDQtMS4yMTcgNC44NDFoMi4wMTdjMC4yMDctMC43MzYgMC4zNi0xLjQ2NCAwLjQyNS0yLjE1OSAwLjEyMiAwLjA4NSAwLjI1MiAwLjE2NyAwLjM5MSAwLjI0NSAwLjIyNiAwLjEzMyAwLjQyIDAuMzEgMC42MjYgMC40OTcgMC40OCAwLjQzOCAxLjAyNSAwLjkzNCAyLjA4OSAwLjk5NiAwLjA3MSAwLjAwNCAwLjE0MyAwLjAwNiAwLjIxNCAwLjAwNiAxLjA3NyAwIDEuODEzLTAuNDcxIDIuNDA0LTAuODUgMC4yODMtMC4xODEgMC41MjgtMC4zMzggMC43NTktMC40MTMgMC42NTUtMC4yMDUgMS4yMjctMC41MzYgMS42NTUtMC45NTcgMC4wNjctMC4wNjYgMC4xMjktMC4xMzMgMC4xODctMC4yMDIgMC4yMzggMC44NzMgMC41NjQgMS44NTYgMC45MjYgMi44MzZoNC4zMDdjLTEuMDM0LTEuNTk3LTIuMTAxLTMuMTYyLTIuMDc5LTUuMTU5ek0xLjkzOSA4LjY5M2MwLTAgMC0wLTAtMC4wMDEtMC4wNzQtMS4yODggMC41NDItMi4zNzIgMS4zNzctMi40MjFzMS41NzEgMC45NTcgMS42NDUgMi4yNDVjMCAwIDAgMCAwIDAuMDAxIDAuMDA0IDAuMDY5IDAuMDA2IDAuMTM4IDAuMDA2IDAuMjA2LTAuMjY0IDAuMDY2LTAuNTAzIDAuMTYzLTAuNzE3IDAuMjc1LTAuMDAxLTAuMDEwLTAuMDAxLTAuMDE5LTAuMDAyLTAuMDI5IDAtMCAwLTAgMC0wLTAuMDcxLTAuNzMxLTAuNDYyLTEuMjg0LTAuODczLTEuMjM0cy0wLjY4NiAwLjY4NC0wLjYxNCAxLjQxNWMwIDAgMCAwIDAgMCAwLjAzMSAwLjMxOSAwLjEyMyAwLjYwNCAwLjI1MSAwLjgxOS0wLjAzMiAwLjAyNS0wLjEyMiAwLjA5MS0wLjIyNSAwLjE2Ni0wLjA3OCAwLjA1Ny0wLjE3MiAwLjEyNi0wLjI4NiAwLjIxLTAuMzExLTAuNDA4LTAuNTI0LTAuOTkzLTAuNTYyLTEuNjU1ek0xMC4zOTUgMTEuODc4Yy0wLjAzMCAwLjY4MS0wLjkyIDEuMzIyLTEuNzQzIDEuNTc5bC0wLjAwNSAwLjAwMmMtMC4zNDIgMC4xMTEtMC42NDcgMC4zMDYtMC45NyAwLjUxMy0wLjU0MyAwLjM0Ny0xLjEwNCAwLjcwNi0xLjkxNCAwLjcwNi0wLjA1MyAwLTAuMTA4LTAuMDAyLTAuMTYxLTAuMDA1LTAuNzQyLTAuMDQzLTEuMDkwLTAuMzYtMS41MjktMC43NjEtMC4yMzItMC4yMTEtMC40NzItMC40My0wLjc4MS0wLjYxMWwtMC4wMDctMC4wMDRjLTAuNjY3LTAuMzc3LTEuMDgxLTAuODQ1LTEuMTA4LTEuMjUzLTAuMDEzLTAuMjAzIDAuMDc3LTAuMzc4IDAuMjY4LTAuNTIyIDAuNDE2LTAuMzEyIDAuNjk1LTAuNTE2IDAuODc5LTAuNjUxIDAuMjA1LTAuMTUgMC4yNjctMC4xOTUgMC4zMTMtMC4yMzkgMC4wMzMtMC4wMzEgMC4wNjgtMC4wNjUgMC4xMDYtMC4xMDMgMC4zODItMC4zNzEgMS4wMjEtMC45OTMgMi4wMDItMC45OTMgMC42IDAgMS4yNjQgMC4yMzEgMS45NzEgMC42ODYgMC4zMzMgMC4yMTcgMC42MjMgMC4zMTcgMC45OSAwLjQ0NCAwLjI1MiAwLjA4NyAwLjUzOSAwLjE4NiAwLjkyMiAwLjM1bDAuMDA2IDAuMDAzYzAuMzU3IDAuMTQ3IDAuNzggMC40MTUgMC43NiAwLjg1OHpNMTAuMTk4IDEwLjI3OGMtMC4wNjktMC4wMzUtMC4xNC0wLjA2OC0wLjIxNS0wLjA5OC0wLjM0NS0wLjE0OC0wLjYyMi0wLjI0OC0wLjg1Mi0wLjMyOCAwLjEyNy0wLjI0OCAwLjIwNi0wLjU1OCAwLjIxMy0wLjg5NCAwLTAgMC0wIDAtMCAwLjAxOC0wLjgxOC0wLjM5NS0xLjQ4My0wLjkyMi0xLjQ4NHMtMC45NjggMC42NjEtMC45ODYgMS40NzljMCAwIDAgMCAwIDAtMC4wMDEgMC4wMjctMC4wMDEgMC4wNTMtMCAwLjA4MC0wLjMyNC0wLjE0OS0wLjY0My0wLjI1OC0wLjk1Ni0wLjMyNC0wLjAwMS0wLjAzMS0wLjAwMy0wLjA2MS0wLjAwNC0wLjA5MiAwLTAgMC0wLjAwMSAwLTAuMDAxLTAuMDMwLTEuNDkxIDAuODg0LTIuNzI1IDIuMDQzLTIuNzU2czIuMTIyIDEuMTUyIDIuMTUzIDIuNjQyYzAgMCAwIDAuMDAxIDAgMC4wMDEgMC4wMTQgMC42NzQtMC4xNjcgMS4yOTUtMC40NzUgMS43NzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQXBwbGVpbmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzY3IDguNTAxYy0wLjAyMC0yLjAyNiAxLjY1Mi0yLjk5OCAxLjcyNy0zLjA0Ni0wLjk0LTEuMzc1LTIuNDA0LTEuNTY0LTIuOTI2LTEuNTg1LTEuMjQ2LTAuMTI2LTIuNDMxIDAuNzM0LTMuMDY0IDAuNzM0LTAuNjMxIDAtMS42MDctMC43MTUtMi42NC0wLjY5Ni0xLjM1OCAwLjAyMC0yLjYxIDAuNzktMy4zMSAyLjAwNi0xLjQxMSAyLjQ0OC0wLjM2MSA2LjA3NiAxLjAxNCA4LjA2MSAwLjY3MiAwLjk3MiAxLjQ3MyAyLjA2NCAyLjUyNSAyLjAyNSAxLjAxMy0wLjA0MCAxLjM5Ni0wLjY1NiAyLjYyMS0wLjY1NnMxLjU2OSAwLjY1NiAyLjY0MSAwLjYzNWMxLjA5MC0wLjAyMCAxLjc4MS0wLjk5MSAyLjQ0OC0xLjk2NiAwLjc3Mi0xLjEyOCAxLjA4OS0yLjIxOSAxLjEwOC0yLjI3NS0wLjAyNC0wLjAxMS0yLjEyNi0wLjgxNi0yLjE0Ny0zLjIzNnpNMTAuMzUzIDIuNTU1YzAuNTU4LTAuNjc3IDAuOTM1LTEuNjE3IDAuODMyLTIuNTU1LTAuODA0IDAuMDMzLTEuNzc5IDAuNTM2LTIuMzU2IDEuMjEyLTAuNTE4IDAuNi0wLjk3MSAxLjU1Ny0wLjg1IDIuNDc2IDAuODk4IDAuMDcwIDEuODE1LTAuNDU2IDIuMzczLTEuMTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZpbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ljg5NCAxMi4xNmMtMC0wLjAwMS0wLTAuMDAxLTAtMC4wMDIgMCAwLjAwMSAwIDAuMDAxIDAgMC4wMDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45MTYgMTIuNzI3Yy0wLTAuMDA0LTAtMC4wMDctMC4wMDEtMC4wMTEgMCAwLjAwNCAwIDAuMDA3IDAuMDAxIDAuMDExelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOTAzIDEyLjQ0MmMtMC0wLjAwMy0wLTAuMDA2LTAtMC4wMDggMCAwLjAwMyAwIDAuMDA2IDAgMC4wMDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMGgtMTRjLTAuNTUgMC0xIDAuNDUtMSAxdjE0YzAgMC41NSAwLjQ1IDEgMSAxaDcuNzE2YzAuMDAxIDAgMC4wMDEgMCAwLjAwMiAwczAuMDAxLTAgMC4wMDItMGg2LjI4YzAuNTUgMCAxLTAuNDUgMS0xdi0xNGMwLTAuNTUtMC40NS0xLTEtMXpNMyAzLjVjMC0wLjI3NiAwLjIyNC0wLjUgMC41LTAuNXMwLjUgMC4yMjQgMC41IDAuNXYxYzAgMC4yNzYtMC4yMjQgMC41LTAuNSAwLjVzLTAuNS0wLjIyNC0wLjUtMC41di0xek0xNSAxNWgtNS44NmMtMC4xMDUtMC42NTgtMC4xNy0xLjMzNi0wLjIwOS0xLjk5NCAwIDAuMDAyIDAgMC4wMDQgMCAwLjAwNS0wLjMwOCAwLjAzNC0wLjYxOCAwLjA1MS0wLjkzMSAwLjA1MS0yLjA4OCAwLTQuMS0wLjc2LTUuNjY0LTIuMTQxLTAuMjMzLTAuMjA2LTAuMjU1LTAuNTYxLTAuMDUwLTAuNzk0czAuNTYxLTAuMjU1IDAuNzk0LTAuMDUwYzEuMzU4IDEuMTk5IDMuMTA1IDEuODU5IDQuOTE5IDEuODU5IDAuMjk4IDAgMC41OTUtMC4wMTggMC44ODgtMC4wNTMtMC4wMzQtMS44NDcgMC4xMDctMy4zMTEgMC4xMS0zLjMzNCAwLjAxNC0wLjE0MS0wLjAzMi0wLjI4LTAuMTI3LTAuMzg1cy0wLjIyOS0wLjE2NC0wLjM3MS0wLjE2NGgtMS40ODdjMC4wMjItMC41NDEgMC4wNzktMS40NjYgMC4yMzQtMi41MDMgMC4yOTUtMS45ODEgMC44MTItMy41MjggMS41MDItNC40OTdoNi4yNTF2MTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA1Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41di0xYzAtMC4yNzYgMC4yMjQtMC41IDAuNS0wLjVzMC41IDAuMjI0IDAuNSAwLjV2MWMwIDAuMjc2LTAuMjI0IDAuNS0wLjUgMC41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDQ1IDEzLjA1MGMtMC4wNTcgMC4wMDMtMC4xMTQgMC4wMDUtMC4xNzEgMC4wMDcgMC4wNTctMC4wMDIgMC4xMTQtMC4wMDQgMC4xNzEtMC4wMDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMy4wNjNjMC4wNzMgMCAwLjE0Ni0wLjAwMSAwLjIyLTAuMDAzLTAuMDczIDAuMDAyLTAuMTQ2IDAuMDAzLTAuMjIgMC4wMDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MjMgMTEuOTI1YzAuMDEyLTAuMDAxIDAuMDI0LTAuMDAxIDAuMDM3LTAuMDAyLTAuMDEyIDAuMDAxLTAuMDI0IDAuMDAxLTAuMDM3IDAuMDAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMjA0IDExLjkzNGMwLjAxNy0wIDAuMDM0LTAuMDAxIDAuMDUwLTAuMDAyLTAuMDE3IDAuMDAxLTAuMDM0IDAuMDAxLTAuMDUwIDAuMDAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjcxMyAxMC4xMjhjLTAuMjA2LTAuMjMzLTAuNTYxLTAuMjU1LTAuNzk0LTAuMDUwLTEuMTM1IDEuMDAyLTIuNTQyIDEuNjI3LTQuMDMyIDEuODA2IDAuMDA3IDAuMzY0IDAuMDIwIDAuNzQyIDAuMDQzIDEuMTI3IDEuNzQ5LTAuMTkxIDMuNDAzLTAuOTE2IDQuNzMzLTIuMDkwIDAuMjMzLTAuMjA2IDAuMjU1LTAuNTYxIDAuMDUwLTAuNzk0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOTMgMTMuMDEyYy0wLjA3MiAwLjAwOC0wLjE0NCAwLjAxNS0wLjIxNiAwLjAyMSAwLjA3Mi0wLjAwNiAwLjE0NC0wLjAxMyAwLjIxNi0wLjAyMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjY4IDEzLjAzNWMtMC4wNjEgMC4wMDUtMC4xMjIgMC4wMDktMC4xODMgMC4wMTMgMC4wNjEtMC4wMDQgMC4xMjItMC4wMDggMC4xODMtMC4wMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQW5kcm9pZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA2Yy0wLjU1IDAtMSAwLjQ1LTEgMXY0YzAgMC41NSAwLjQ1IDEgMSAxczEtMC40NSAxLTF2LTRjMC0wLjU1LTAuNDUtMS0xLTF6TTIgNmMtMC41NSAwLTEgMC40NS0xIDF2NGMwIDAuNTUgMC40NSAxIDEgMXMxLTAuNDUgMS0xdi00YzAtMC41NS0wLjQ1LTEtMS0xek0zLjUgMTEuNWMwIDAuODI4IDAuNjcyIDEuNSAxLjUgMS41djAgMmMwIDAuNTUgMC40NSAxIDEgMXMxLTAuNDUgMS0xdi0yaDJ2MmMwIDAuNTUgMC40NSAxIDEgMXMxLTAuNDUgMS0xdi0yYzAuODI4IDAgMS41LTAuNjcyIDEuNS0xLjV2LTUuNWgtOXY1LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDcyIDVjLTAuMTUyLTEuMzczLTAuOTIyLTIuNTU5LTIuMDI1LTMuMjc2bDAuNS0xLjAwMWMwLjEyMy0wLjI0NyAwLjAyMy0wLjU0Ny0wLjIyNC0wLjY3MXMtMC41NDctMC4wMjMtMC42NzEgMC4yMjRsLTAuNTAyIDEuMDA0LTAuMTMtMC4wNTJjLTAuNDQ2LTAuMTQ4LTAuOTI0LTAuMjI5LTEuNDItMC4yMjlzLTAuOTc0IDAuMDgxLTEuNDIgMC4yMjlsLTAuMTMgMC4wNTItMC41MDItMS4wMDRjLTAuMTIzLTAuMjQ3LTAuNDI0LTAuMzQ3LTAuNjcxLTAuMjI0cy0wLjM0NyAwLjQyNC0wLjIyNCAwLjY3MWwwLjUgMS4wMDFjLTEuMTAzIDAuNzE2LTEuODczIDEuOTAzLTIuMDI1IDMuMjc2djAuNWg4Ljk3MnYtMC41aC0wLjAyOHpNNi41IDRjLTAuMjc2IDAtMC41LTAuMjI0LTAuNS0wLjVzMC4yMjMtMC40OTkgMC40OTktMC41YzAgMCAwLjAwMSAwIDAuMDAxIDBzMC4wMDEtMCAwLjAwMS0wYzAuMjc2IDAuMDAxIDAuNDk5IDAuMjI0IDAuNDk5IDAuNXMtMC4yMjQgMC41LTAuNSAwLjV6TTkuNSA0Yy0wLjI3NiAwLTAuNS0wLjIyNC0wLjUtMC41czAuMjIzLTAuNDk5IDAuNDk5LTAuNWMwIDAgMC4wMDEgMCAwLjAwMSAwczAuMDAxLTAgMC4wMDItMGMwLjI3NiAwLjAwMSAwLjQ5OSAwLjIyNCAwLjQ5OSAwLjVzLTAuMjI0IDAuNS0wLjUgMC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NDEgNy45OTljLTAuNzQ1LTAuMzgzLTEuNDctMC41NzctMi4xNTQtMC41NzctMC4wOTMgMC0wLjE4NyAwLjAwMy0wLjI4IDAuMDExLTAuODczIDAuMDcyLTEuNjcxIDAuMzAzLTIuMTg0IDAuNDgyLTAuMTM2IDAuMDUwLTAuMjc2IDAuMTAzLTAuNDE5IDAuMTYxbC0xLjQwMyA0Ljg2NmMwLjk2NC0wLjM1NyAxLjgxNy0wLjUzIDIuNTk4LTAuNTMgMS4yNjMgMCAyLjE4IDAuNDcyIDIuOTM3IDAuOTU4IDAuMzU5LTEuMjE3IDEuMjE5LTQuMTU4IDEuNDc2LTUuMDM2LTAuMTg3LTAuMTE0LTAuMzc2LTAuMjI4LTAuNTcxLTAuMzMzek04LjI1NSA5LjIzNWwtMS40MTMgNC45MDljMC40MTkgMC4yNCAxLjgzIDEuMDAxIDIuOTEgMS4wMDEgMC44NzIgMCAxLjg0OC0wLjIyMyAyLjk4Mi0wLjY4NGwxLjM0OS00LjcxOGMtMC45MTYgMC4yOTYtMS43OTUgMC40NDYtMi42MTcgMC40NDYtMS40OTkgMC0yLjU0OS0wLjQ4Ni0zLjIxMS0wLjk1MnpNNC41NzUgNS43NjJjMS4yMDUgMC4wMTIgMi4wOTYgMC40NzIgMi44MzUgMC45NDVsMS40NDktNC45NThjLTAuMzA1LTAuMTc1LTEuMTA2LTAuNjExLTEuNjg1LTAuNzU5LTAuMzgxLTAuMDg5LTAuNzgyLTAuMTM1LTEuMjA2LTAuMTM1LTAuODA5IDAuMDE1LTEuNjk0IDAuMjE4LTIuNzAxIDAuNjIybC0xLjM4MiA0Ljg1M2MxLjAxMy0wLjM4MiAxLjg4NS0wLjU2OCAyLjY4OS0wLjU2OCAwLjAwMSAwIDAuMDAyIDAgMC4wMDIgMHpNMTYgMy4wOTZjLTAuOTE5IDAuMzU3LTEuODE2IDAuNTM5LTIuNjcyIDAuNTM5LTEuNDMzIDAtMi40ODktMC40OTctMy4xNzMtMC45NzRsLTEuNDM3IDQuOTcyYzAuOTY1IDAuNjIgMi4wMDUgMC45MzYgMy4wOTYgMC45MzYgMC44OSAwIDEuODEyLTAuMjE0IDIuNzQyLTAuNjM2bC0wLjAwMy0wLjAzNSAwLjA1OC0wLjAxNCAxLjM5LTQuNzg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdpbmRvd3M4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAuMDA1IDhsLTAuMDA1LTQuODc2IDYtMC44MTV2NS42OTF6TTcgMi4xNjRsNy45OTgtMS4xNjR2N2gtNy45OTh6TTE1IDlsLTAuMDAyIDctNy45OTgtMS4xMjV2LTUuODc1ek02IDE0Ljc0N2wtNS45OTUtMC44MjItMC00LjkyNmg1Ljk5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Tb3VuZGNsb3VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjkzNyA4LjAzNGMtMC4yODMgMC0wLjU1MiAwLjA1NS0wLjc5OCAwLjE1NC0wLjE2NC0xLjc4Ny0xLjcyMy0zLjE4OC0zLjYyNS0zLjE4OC0wLjQ2NSAwLTAuOTE3IDAuMDg4LTEuMzE3IDAuMjM3LTAuMTU2IDAuMDU4LTAuMTk3IDAuMTE3LTAuMTk3IDAuMjMzdjYuMjkyYzAgMC4xMjEgMC4wOTggMC4yMjIgMC4yMjEgMC4yMzQgMC4wMDUgMC4wMDEgNS42OCAwLjAwMyA1LjcxNyAwLjAwMyAxLjEzOSAwIDIuMDYyLTAuODg4IDIuMDYyLTEuOTgzcy0wLjkyNC0xLjk4My0yLjA2My0xLjk4M3pNNi4yNSAxMmgwLjVsMC4yNS0zLjUwMy0wLjI1LTMuNDk3aC0wLjVsLTAuMjUgMy40OTd6TTQuNzUgMTJoLTAuNWwtMC4yNS0yLjU0MyAwLjI1LTIuNDU3aDAuNWwwLjI1IDIuNXpNMi4yNSAxMmgwLjVsMC4yNS0yLTAuMjUtMmgtMC41bC0wLjI1IDJ6TTAuMjUgMTFoMC41bDAuMjUtMS0wLjI1LTFoLTAuNWwtMC4yNSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVNvdW5kY2xvdWQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek0yLjc1IDExaC0wLjVsLTAuMjUtMS41IDAuMjUtMS41aDAuNWwwLjI1IDEuNS0wLjI1IDEuNXpNNC43NSAxMWgtMC41bC0wLjI1LTIgMC4yNS0yaDAuNWwwLjI1IDItMC4yNSAyek02Ljc1IDExaC0wLjVsLTAuMjUtMyAwLjI1LTNoMC41bDAuMjUgMy0wLjI1IDN6TTEyLjg5NCAxMWMtMC4wMzEgMC00LjcwNi0wLjAwMy00LjcwOS0wLjAwMy0wLjEtMC4wMDktMC4xODEtMC4wOTctMC4xODQtMC4ydi01LjM5NGMwLTAuMSAwLjAzNC0wLjE1IDAuMTYyLTAuMiAwLjMzMS0wLjEyOCAwLjcwMy0wLjIwMyAxLjA4OC0wLjIwMyAxLjU2NiAwIDIuODUgMS4yIDIuOTg3IDIuNzM0IDAuMjAzLTAuMDg0IDAuNDI1LTAuMTMxIDAuNjU2LTAuMTMxIDAuOTM4IDAgMS43IDAuNzYyIDEuNyAxLjdzLTAuNzYyIDEuNjk3LTEuNyAxLjY5N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Ta3lwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjY1IDAuNTg0Yy0wLjAyNS0wLjAxNi0wLjA1My0wLjAyOC0wLjA3OC0wLjA0MS0wLjAyOCAwLjAwNi0wLjA1MyAwLjAwOS0wLjA4MSAwLjAxNmwwLjE1OSAwLjAyNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wLjU3NSA2LjU3OGMtMC4wMDYgMC4wMjgtMC4wMDkgMC4wNTYtMC4wMTIgMC4wODEgMC4wMTYgMC4wMjUgMC4wMjUgMC4wNTAgMC4wNDEgMC4wNzVsLTAuMDI4LTAuMTU2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjQxOSA5LjQxNmMwLjAwNi0wLjAyOCAwLjAwOS0wLjA1NiAwLjAxNi0wLjA4NC0wLjAxNi0wLjAyNS0wLjAyNS0wLjA1MC0wLjA0MS0wLjA3NWwwLjAyNSAwLjE1OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI1IDE1LjM1OWMwLjAyNSAwLjAxNiAwLjA1MyAwLjAyOCAwLjA3OCAwLjA0MSAwLjAyOC0wLjAwNiAwLjA1Ni0wLjAwOSAwLjA4NC0wLjAxMmwtMC4xNjItMC4wMjh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNDM0IDkuMzMxYy0wLjAwNiAwLjAyOC0wLjAwOSAwLjA1Ni0wLjAxNiAwLjA4NGwtMC4wMjgtMC4xNjJjMC4wMTYgMC4wMjggMC4wMjggMC4wNTMgMC4wNDQgMC4wNzggMC4wODEtMC40NSAwLjEyNS0wLjkwOSAwLjEyNS0xLjM2OSAwLTEuMDE5LTAuMi0yLjAwOS0wLjU5NC0yLjk0MS0wLjM4MS0wLjktMC45MjUtMS43MDktMS42MTktMi40MDNzLTEuNTAzLTEuMjM4LTIuNC0xLjYxOWMtMC45MzEtMC4zOTQtMS45MjItMC41OTQtMi45NDEtMC41OTQtMC40ODEgMC0wLjk2MyAwLjA0NC0xLjQzMSAwLjEzNCAwIDAtMC4wMDMgMC0wLjAwMyAwIDAuMDI1IDAuMDEyIDAuMDUzIDAuMDI1IDAuMDc4IDAuMDQxbC0wLjE1OS0wLjAyNWMwLjAyOC0wLjAwNiAwLjA1My0wLjAwOSAwLjA4MS0wLjAxNi0wLjY0NC0wLjM0MS0xLjM2Ni0wLjUyNS0yLjA5Ny0wLjUyNS0xLjE5NCAwLTIuMzE5IDAuNDY2LTMuMTYzIDEuMzA5cy0xLjMwOSAxLjk2OS0xLjMwOSAzLjE2M2MwIDAuNzU5IDAuMTk3IDEuNTA5IDAuNTYzIDIuMTY5IDAuMDA2LTAuMDI4IDAuMDA5LTAuMDU2IDAuMDEyLTAuMDgxbDAuMDI4IDAuMTU5Yy0wLjAxNi0wLjAyNS0wLjAyOC0wLjA1MC0wLjA0MS0wLjA3NS0wLjA3NSAwLjQyOC0wLjExMiAwLjg2Ni0wLjExMiAxLjMwMyAwIDEuMDE5IDAuMiAyLjAwOSAwLjU5NCAyLjk0MSAwLjM4MSAwLjkgMC45MjUgMS43MDYgMS42MTkgMi40czEuNTAzIDEuMjM4IDIuNDAzIDEuNjE5YzAuOTMxIDAuMzk0IDEuOTIyIDAuNTk0IDIuOTQxIDAuNTk0IDAuNDQ0IDAgMC44ODctMC4wNDEgMS4zMjItMC4xMTktMC4wMjUtMC4wMTYtMC4wNTAtMC4wMjgtMC4wNzgtMC4wNDFsMC4xNjIgMC4wMjhjLTAuMDI4IDAuMDA2LTAuMDU2IDAuMDA5LTAuMDg0IDAuMDEyIDAuNjY5IDAuMzc4IDEuNDI4IDAuNTgxIDIuMiAwLjU4MSAxLjE5NCAwIDIuMzE5LTAuNDY2IDMuMTYyLTEuMzA5czEuMzA5LTEuOTY5IDEuMzA5LTMuMTYyYy0wLjAwMy0wLjc1OS0wLjItMS41MDktMC41NjktMi4xNzV6TTguMDM0IDEyLjU5MWMtMi42ODQgMC0zLjg4NC0xLjMxOS0zLjg4NC0yLjMwOSAwLTAuNTA2IDAuMzc1LTAuODYzIDAuODkxLTAuODYzIDEuMTUgMCAwLjg1IDEuNjUgMi45OTQgMS42NSAxLjA5NyAwIDEuNzAzLTAuNTk3IDEuNzAzLTEuMjA2IDAtMC4zNjYtMC4xODEtMC43NzItMC45MDMtMC45NWwtMi4zODgtMC41OTdjLTEuOTIyLTAuNDgxLTIuMjcyLTEuNTIyLTIuMjcyLTIuNSAwLTIuMDI4IDEuOTA5LTIuNzkxIDMuNzAzLTIuNzkxIDEuNjUzIDAgMy42IDAuOTEzIDMuNiAyLjEzMSAwIDAuNTIyLTAuNDUzIDAuODI1LTAuOTY5IDAuODI1LTAuOTgxIDAtMC44LTEuMzU2LTIuNzc1LTEuMzU2LTAuOTgxIDAtMS41MjIgMC40NDQtMS41MjIgMS4wNzhzMC43NzUgMC44MzggMS40NDcgMC45OTFsMS43NjkgMC4zOTRjMS45MzQgMC40MzEgMi40MjUgMS41NjMgMi40MjUgMi42MjUgMCAxLjY0Ny0xLjI2NiAyLjg3OC0zLjgxOSAyLjg3OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1SZWRkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMGMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMCAxMGMwLTAuNTUyIDAuNDQ4LTEgMS0xczEgMC40NDggMSAxYzAgMC41NTItMC40NDggMS0xIDFzLTEtMC40NDgtMS0xek0xMC4wNDkgMTIuMTM3YzAuMjU4LTAuMjAzIDAuNjMxLTAuMTU5IDAuODM0IDAuMDk5czAuMTU5IDAuNjMxLTAuMDk5IDAuODM0Yy0wLjcxNyAwLjU2NS0xLjgxIDAuOTMtMi43ODMgMC45M3MtMi4wNjYtMC4zNjUtMi43ODQtMC45M2MtMC4yNTgtMC4yMDMtMC4zMDItMC41NzYtMC4wOTktMC44MzRzMC41NzYtMC4zMDIgMC44MzQtMC4wOTljMC40MTMgMC4zMjUgMS4yMyAwLjY3NSAyLjA0OSAwLjY3NXMxLjYzNi0wLjM1IDIuMDQ5LTAuNjc1ek0xNiA4YzAtMS4xMDUtMC44OTUtMi0yLTItMC43NTIgMC0xLjQwNiAwLjQxNS0xLjc0OCAxLjAyOC0xLjAyOC0wLjU2Mi0yLjI4LTAuOTI2LTMuNjQ1LTEuMDEwbDEuMTkzLTIuNjggMi4yODQgMC42NTljMC4yMDYgMC41ODMgMC43NjEgMS4wMDIgMS40MTUgMS4wMDIgMC44MjggMCAxLjUtMC42NzIgMS41LTEuNXMtMC42NzItMS41LTEuNS0xLjVjLTAuNTcxIDAtMS4wNjggMC4zMTktMS4zMjEgMC43ODlsLTIuNTQ1LTAuNzM1Yy0wLjI4NS0wLjA4Mi0wLjU4NyAwLjA1OC0wLjcwNyAwLjMyOWwtMS42MjEgMy42NDFjLTEuMzMgMC4wOTQtMi41NTEgMC40NTMtMy41NTcgMS4wMDQtMC4zNDItMC42MTMtMC45OTYtMS4wMjgtMS43NDgtMS4wMjgtMS4xMDUgMC0yIDAuODk1LTIgMiAwIDAuODE3IDAuNDkxIDEuNTIgMS4xOTMgMS44My0wLjEyNiAwLjM3NS0wLjE5MyAwLjc2Ny0wLjE5MyAxLjE3IDAgMi43NjEgMy4xMzQgNSA3IDVzNy0yLjIzOSA3LTVjMC0wLjQwMy0wLjA2Ny0wLjc5NS0wLjE5My0xLjE3IDAuNzAzLTAuMzEgMS4xOTMtMS4wMTMgMS4xOTMtMS44M3pNMTMuNSAyLjkzOGMwLjMxMSAwIDAuNTYzIDAuMjUyIDAuNTYzIDAuNTYzcy0wLjI1MiAwLjU2My0wLjU2MyAwLjU2My0wLjU2My0wLjI1Mi0wLjU2My0wLjU2MyAwLjI1Mi0wLjU2MyAwLjU2My0wLjU2M3pNMSA4YzAtMC41NTEgMC40NDktMSAxLTEgMC4zOTkgMCAwLjc0MyAwLjIzNCAwLjkwNCAwLjU3My0wLjUyMyAwLjM5Ni0wLjk1NiAwLjg1NC0xLjI3NiAxLjM1NS0wLjM2OC0wLjE0OC0wLjYyOC0wLjUwOC0wLjYyOC0wLjkyOHpNOCAxNC44MTNjLTMuMjEgMC01LjgxMy0xLjcwNy01LjgxMy0zLjgxM3MyLjYwMi0zLjgxMyA1LjgxMy0zLjgxM2MzLjIxIDAgNS44MTMgMS43MDcgNS44MTMgMy44MTNzLTIuNjAyIDMuODEzLTUuODEzIDMuODEzek0xNC4zNzIgOC45MjhjLTAuMzItMC41MDItMC43NTMtMC45NTktMS4yNzYtMS4zNTUgMC4xNjEtMC4zMzggMC41MDUtMC41NzMgMC45MDQtMC41NzMgMC41NTEgMCAxIDAuNDQ5IDEgMSAwIDAuNDItMC4yNiAwLjc4LTAuNjI4IDAuOTI4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUhhY2tlcm5ld3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwdjE2aDE2di0xNmgtMTZ6TTguNSA5LjEyNXYzLjM3NWgtMXYtMy4zNzVsLTIuNzM0LTUuMTI1aDEuMTM0bDIuMSAzLjkzOCAyLjEtMy45MzhoMS4xMzRsLTIuNzM0IDUuMTI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVdpa2lwZWRpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4xMDYgMy42NWMwIDAuMDUwLTAuMDE2IDAuMDk3LTAuMDQ3IDAuMTQxLTAuMDMxIDAuMDQxLTAuMDY2IDAuMDYzLTAuMTA2IDAuMDYzLTAuMzEzIDAuMDMxLTAuNTY5IDAuMTMxLTAuNzY2IDAuMy0wLjIgMC4xNjktMC40MDMgMC40OTctMC42MTMgMC45NzVsLTMuMjI1IDcuMjcyYy0wLjAyMiAwLjA2OS0wLjA4MSAwLjEtMC4xNzggMC4xLTAuMDc1IDAtMC4xMzQtMC4wMzQtMC4xNzgtMC4xbC0xLjgwOS0zLjc4MS0yLjA4MSAzLjc4MWMtMC4wNDQgMC4wNjktMC4xIDAuMS0wLjE3OCAwLjEtMC4wOTQgMC0wLjE1My0wLjAzNC0wLjE4NC0wLjFsLTMuMTY2LTcuMjY5Yy0wLjE5Ny0wLjQ1LTAuNDA2LTAuNzY2LTAuNjI1LTAuOTQ0cy0wLjUyNS0wLjI5MS0wLjkxNi0wLjMzMWMtMC4wMzQgMC0wLjA2Ni0wLjAxOS0wLjA5NC0wLjA1My0wLjAzMS0wLjAzNC0wLjA0NC0wLjA3NS0wLjA0NC0wLjEyMiAwLTAuMTE5IDAuMDM0LTAuMTc4IDAuMS0wLjE3OCAwLjI4MSAwIDAuNTc4IDAuMDEzIDAuODg4IDAuMDM4IDAuMjg4IDAuMDI1IDAuNTU2IDAuMDM4IDAuODA5IDAuMDM4IDAuMjU2IDAgMC41NjMtMC4wMTMgMC45MTMtMC4wMzggMC4zNjYtMC4wMjUgMC42OTEtMC4wMzggMC45NzUtMC4wMzggMC4wNjkgMCAwLjEgMC4wNTkgMC4xIDAuMTc4cy0wLjAyMiAwLjE3NS0wLjA2MyAwLjE3NWMtMC4yODEgMC4wMjItMC41MDYgMC4wOTQtMC42NjkgMC4yMTZzLTAuMjQ0IDAuMjgxLTAuMjQ0IDAuNDgxYzAgMC4xIDAuMDM0IDAuMjI4IDAuMSAwLjM3OGwyLjYxNiA1LjkxMiAxLjQ4Ny0yLjgwNi0xLjM4NC0yLjkwM2MtMC4yNS0wLjUxOS0wLjQ1My0wLjg1My0wLjYxMi0xLjAwM3MtMC40MDMtMC4yNDEtMC43MjgtMC4yNzVjLTAuMDMxIDAtMC4wNTYtMC4wMTktMC4wODQtMC4wNTNzLTAuMDQxLTAuMDc1LTAuMDQxLTAuMTIyYzAtMC4xMTkgMC4wMjgtMC4xNzggMC4wODgtMC4xNzggMC4yODEgMCAwLjU0MSAwLjAxMyAwLjc3OCAwLjAzOCAwLjIyOCAwLjAyNSAwLjQ2OSAwLjAzOCAwLjcyOCAwLjAzOCAwLjI1MyAwIDAuNTE5LTAuMDEzIDAuODAzLTAuMDM4IDAuMjkxLTAuMDI1IDAuNTc4LTAuMDM4IDAuODU5LTAuMDM4IDAuMDY5IDAgMC4xIDAuMDU5IDAuMSAwLjE3OHMtMC4wMTkgMC4xNzUtMC4wNjMgMC4xNzVjLTAuNTY2IDAuMDM4LTAuODQ3IDAuMi0wLjg0NyAwLjQ4MSAwIDAuMTI1IDAuMDY2IDAuMzIyIDAuMTk3IDAuNTg4bDAuOTE2IDEuODU5IDAuOTEyLTEuN2MwLjEyNS0wLjI0MSAwLjE5MS0wLjQ0NCAwLjE5MS0wLjYwNiAwLTAuMzg4LTAuMjgxLTAuNTk0LTAuODQ3LTAuNjE5LTAuMDUwIDAtMC4wNzUtMC4wNTktMC4wNzUtMC4xNzUgMC0wLjA0NCAwLjAxMi0wLjA4MSAwLjAzNy0wLjExOXMwLjA1MC0wLjA1NiAwLjA3NS0wLjA1NmMwLjIwMyAwIDAuNDUgMC4wMTMgMC43NDcgMC4wMzggMC4yODEgMC4wMjUgMC41MTYgMC4wMzggMC42OTcgMC4wMzggMC4xMzEgMCAwLjMyMi0wLjAxMyAwLjU3NS0wLjAzMSAwLjMxOS0wLjAyOCAwLjU4OC0wLjA0NCAwLjgwMy0wLjA0NCAwLjA1MCAwIDAuMDc1IDAuMDUwIDAuMDc1IDAuMTUgMCAwLjEzNC0wLjA0NyAwLjIwMy0wLjEzNyAwLjIwMy0wLjMyOCAwLjAzNC0wLjU5NCAwLjEyNS0wLjc5NCAwLjI3MnMtMC40NSAwLjQ4MS0wLjc1IDEuMDA2bC0xLjIyMiAyLjIzNyAxLjY0NCAzLjM1IDIuNDI4LTUuNjQ3YzAuMDg0LTAuMjA2IDAuMTI1LTAuMzk3IDAuMTI1LTAuNTY5IDAtMC40MTItMC4yODEtMC42MzEtMC44NDctMC42NTktMC4wNTAgMC0wLjA3NS0wLjA1OS0wLjA3NS0wLjE3NSAwLTAuMTE5IDAuMDM3LTAuMTc4IDAuMTEzLTAuMTc4IDAuMjA2IDAgMC40NSAwLjAxMyAwLjczNCAwLjAzOCAwLjI2MiAwLjAyNSAwLjQ4MSAwLjAzOCAwLjY1NiAwLjAzOCAwLjE4OCAwIDAuNC0wLjAxMyAwLjY0NC0wLjAzOCAwLjI1My0wLjAyNSAwLjQ4MS0wLjAzOCAwLjY4NC0wLjAzOCAwLjA2MyAwIDAuMDk0IDAuMDUwIDAuMDk0IDAuMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGlua2VkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTYgMTNoLTJ2LTdoMnY3ek01IDVjLTAuNTUzIDAtMS0wLjQ0Ny0xLTFzMC40NDctMSAxLTFjMC41NTMgMCAxIDAuNDQ3IDEgMXMtMC40NDcgMS0xIDF6TTEzIDEzaC0ydi00YzAtMC41NTMtMC40NDctMS0xLTFzLTEgMC40NDctMSAxdjRoLTJ2LTdoMnYxLjI0MWMwLjQxMi0wLjU2NiAxLjA0NC0xLjI0MSAxLjc1LTEuMjQxIDEuMjQ0IDAgMi4yNSAxLjExOSAyLjI1IDIuNXY0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGlua2VkaW4yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNmgyLjc2N3YxLjQxOGgwLjA0MGMwLjM4NS0wLjY5MSAxLjMyNy0xLjQxOCAyLjczMi0xLjQxOCAyLjkyMSAwIDMuNDYxIDEuODE4IDMuNDYxIDQuMTgzdjQuODE3aC0yLjg4NXYtNC4yN2MwLTEuMDE4LTAuMDIxLTIuMzI5LTEuNS0yLjMyOS0xLjUwMiAwLTEuNzMyIDEuMTA5LTEuNzMyIDIuMjU1djQuMzQ0aC0yLjg4M3YtOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDZoM3Y5aC0zdi05elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMy41YzAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41YzAtMC44MjggMC42NzItMS41IDEuNS0xLjVzMS41IDAuNjcyIDEuNSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltTGFzdGZtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDU2IDExLjk3MmwtMC41ODgtMS41OTRjMCAwLTAuOTUzIDEuMDYzLTIuMzgxIDEuMDYzLTEuMjY2IDAtMi4xNjMtMS4xLTIuMTYzLTIuODU5IDAtMi4yNTMgMS4xMzctMy4wNTkgMi4yNTMtMy4wNTkgMS42MTIgMCAyLjEyNSAxLjA0NCAyLjU2NiAyLjM4MWwwLjU4OCAxLjgzMWMwLjU4OCAxLjc3OCAxLjY4OCAzLjIwNiA0Ljg1NiAzLjIwNiAyLjI3MiAwIDMuODEzLTAuNjk3IDMuODEzLTIuNTI4IDAtMS40ODQtMC44NDQtMi4yNTMtMi40MTktMi42MjJsLTEuMTcyLTAuMjU2Yy0wLjgwNi0wLjE4NC0xLjA0NC0wLjUxMy0xLjA0NC0xLjA2MyAwLTAuNjIyIDAuNDk0LTAuOTkxIDEuMy0wLjk5MSAwLjg4MSAwIDEuMzU2IDAuMzMxIDEuNDI4IDEuMTE5bDEuODMxLTAuMjE5Yy0wLjE0Ny0xLjY1LTEuMjg0LTIuMzI4LTMuMTUzLTIuMzI4LTEuNjUgMC0zLjI2MiAwLjYyMi0zLjI2MiAyLjYyMiAwIDEuMjQ3IDAuNjA2IDIuMDM0IDIuMTI1IDIuNGwxLjI0NyAwLjI5NGMwLjkzNCAwLjIxOSAxLjI0NyAwLjYwNiAxLjI0NyAxLjEzNyAwIDAuNjc4LTAuNjU5IDAuOTUzLTEuOTA2IDAuOTUzLTEuODUgMC0yLjYyMi0wLjk3Mi0zLjA1OS0yLjMwOWwtMC42MDYtMS44MzFjLTAuNzY2LTIuMzg0LTEuOTk0LTMuMjYzLTQuNDMxLTMuMjYzLTIuNjk0IDAtNC4xMjUgMS43MDMtNC4xMjUgNC42IDAgMi43ODQgMS40MjggNC4yODcgMy45OTcgNC4yODcgMi4wNjkgMCAzLjA1OS0wLjk3MiAzLjA1OS0wLjk3MnYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxhc3RmbTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAwaC0xM2MtMC44MjUgMC0xLjUgMC42NzUtMS41IDEuNXYxM2MwIDAuODI1IDAuNjc1IDEuNSAxLjUgMS41aDEzYzAuODI1IDAgMS41LTAuNjc1IDEuNS0xLjV2LTEzYzAtMC44MjUtMC42NzUtMS41LTEuNS0xLjV6TTExLjY2NiAxMS44ODdjLTIuNzc1IDAtMy43MzctMS4yNS00LjI1LTIuODA2bC0wLjUxMy0xLjYwM2MtMC4zODQtMS4xNzItMC44MzQtMi4wODQtMi4yNDQtMi4wODQtMC45NzggMC0xLjk3MiAwLjcwNi0xLjk3MiAyLjY3OCAwIDEuNTQxIDAuNzg0IDIuNTAzIDEuODk0IDIuNTAzIDEuMjUgMCAyLjA4NC0wLjkzMSAyLjA4NC0wLjkzMWwwLjUxMyAxLjM5NGMwIDAtMC44NjYgMC44NS0yLjY3OCAwLjg1LTIuMjUgMC0zLjUtMS4zMTMtMy41LTMuNzUgMC0yLjUzNCAxLjI1LTQuMDI1IDMuNjA5LTQuMDI1IDIuMTM0IDAgMy4yMDYgMC43NjkgMy44ODEgMi44NTNsMC41MjggMS42MDNjMC4zODQgMS4xNzIgMS4wNTkgMi4wMjIgMi42NzggMi4wMjIgMS4wOTEgMCAxLjY2OS0wLjI0MSAxLjY2OS0wLjgzNCAwLTAuNDY2LTAuMjcyLTAuODAzLTEuMDkxLTAuOTk0bC0xLjA5MS0wLjI1NmMtMS4zMzEtMC4zMjItMS44NTktMS4wMDktMS44NTktMi4xIDAtMS43NDcgMS40MTItMi4yOTQgMi44NTMtMi4yOTQgMS42MzQgMCAyLjYzMSAwLjU5NCAyLjc1OSAyLjAzOGwtMS42MDMgMC4xOTRjLTAuMDY2LTAuNjkxLTAuNDgxLTAuOTc4LTEuMjUtMC45NzgtMC43MDYgMC0xLjEzNyAwLjMyMi0xLjEzNyAwLjg2NiAwIDAuNDgxIDAuMjA5IDAuNzY5IDAuOTEyIDAuOTMxbDEuMDI1IDAuMjI1YzEuMzc4IDAuMzIyIDIuMTE2IDAuOTk0IDIuMTE2IDIuMjk0IDAgMS41OTctMS4zNDcgMi4yMDYtMy4zMzQgMi4yMDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMHYxNmgxNnYtMTZoLTE2ek04IDE1di03aC03di03aDd2N2g3djdoLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltU3R1bWJsZXVwb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1Yy0wLjU1IDAtMSAwLjQ1LTEgMXY0YzAgMS42NTMtMS4zNDcgMy0zIDNzLTMtMS4zNDctMy0zdi0yaDJ2MmMwIDAuNTUgMC40NSAxIDEgMXMxLTAuNDUgMS0xdi00YzAtMS42NTMgMS4zNDctMyAzLTNzMyAxLjM0NyAzIDIuNzgxdjAuOTY5bC0xLjI4MSAwLjM3NS0wLjcxOS0wLjM3NXYtMC45NjljMC0wLjMzMS0wLjQ1LTAuNzgxLTEtMC43ODF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTBjMCAxLjY1My0xLjM0NyAzLTMgM3MtMy0xLjM0Ny0zLTMuMjE5di0xLjkzOGwwLjcxOSAwLjM3NSAxLjI4MS0wLjM3NXYxLjkzOGMwIDAuNzY5IDAuNDUgMS4yMTkgMSAxLjIxOXMxLTAuNDUgMS0xdi0yaDJ2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdHVtYmxldXBvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMzEzIDBoLTEwLjYyNWMtMS40NzggMC0yLjY4OCAxLjIwOS0yLjY4OCAyLjY4OHYxMC42MjVjMCAxLjQ3OCAxLjIwOSAyLjY4OCAyLjY4OCAyLjY4OGgxMC42MjVjMS40NzggMCAyLjY4OC0xLjIwOSAyLjY4OC0yLjY4OHYtMTAuNjI1YzAtMS40NzgtMS4yMDktMi42ODgtMi42ODgtMi42ODh6TTggNWMtMC41NTEgMC0xIDAuNDQ5LTEgMXY0YzAgMS42NTQtMS4zNDYgMy0zIDNzLTMtMS4zNDYtMy0zdi0yaDJ2MmMwIDAuNTUxIDAuNDQ5IDEgMSAxczEtMC40NDkgMS0xdi00YzAtMS42NTQgMS4zNDYtMyAzLTNzMyAxLjM0NiAzIDIuNzgxdjAuOTY5bC0xLjI4MSAwLjM3NS0wLjcxOS0wLjM3NXYtMC45NjljMC0wLjMzMy0wLjQ0OS0wLjc4MS0xLTAuNzgxek0xNSAxMGMwIDEuNjU0LTEuMzQ2IDMtMyAzcy0zLTEuMzQ2LTMtMy4yMTl2LTEuOTM4bDAuNzE5IDAuMzc1IDEuMjgxLTAuMzc1djEuOTM4YzAgMC43NyAwLjQ0OSAxLjIxOSAxIDEuMjE5czEtMC40NDkgMS0xdi0yaDJ2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TdGFja292ZXJmbG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDEwdjZoLTE2di02aDJ2NGgxMnYtNHpNMyAxMWgxMHYyaC0xMHpNMy4yMzcgOC44MzVsMC40MzMtMS45NTMgOS43NjMgMi4xNjQtMC40MzMgMS45NTN6TTQuMzcgNC44MjFsMC44NDUtMS44MTMgOS4wNjMgNC4yMjYtMC44NDUgMS44MTN6TTE1LjQ5NiA1LjY0OGwtMS4yMTggMS41ODctNy45MzQtNi4wODggMC44OC0xLjE0N2gwLjkxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEuMDY5Yy0zLjgyOCAwLTYuOTMxIDMuMTAzLTYuOTMxIDYuOTMxIDAgMi45MzggMS44MjggNS40NDQgNC40MDYgNi40NTMtMC4wNTktMC41NDctMC4xMTYtMS4zOTEgMC4wMjUtMS45ODggMC4xMjUtMC41NDEgMC44MTMtMy40NDQgMC44MTMtMy40NDRzLTAuMjA2LTAuNDE2LTAuMjA2LTEuMDI4YzAtMC45NjMgMC41NTktMS42ODQgMS4yNTMtMS42ODQgMC41OTEgMCAwLjg3OCAwLjQ0NCAwLjg3OCAwLjk3NSAwIDAuNTk0LTAuMzc4IDEuNDg0LTAuNTc1IDIuMzA2LTAuMTY2IDAuNjkxIDAuMzQ0IDEuMjUzIDEuMDI1IDEuMjUzIDEuMjMxIDAgMi4xNzgtMS4zIDIuMTc4LTMuMTc1IDAtMS42NTktMS4xOTQtMi44MTktMi44OTQtMi44MTktMS45NzIgMC0zLjEyOCAxLjQ3OC0zLjEyOCAzLjAwOSAwIDAuNTk3IDAuMjI4IDEuMjM0IDAuNTE2IDEuNTgxIDAuMDU2IDAuMDY5IDAuMDY2IDAuMTI4IDAuMDQ3IDAuMi0wLjA1MyAwLjIxOS0wLjE2OSAwLjY5MS0wLjE5NCAwLjc4Ny0wLjAzMSAwLjEyOC0wLjEgMC4xNTMtMC4yMzEgMC4wOTQtMC44NjYtMC40MDMtMS40MDYtMS42NjktMS40MDYtMi42ODQgMC0yLjE4OCAxLjU4Ny00LjE5NCA0LjU3OC00LjE5NCAyLjQwMyAwIDQuMjcyIDEuNzEyIDQuMjcyIDQuMDAzIDAgMi4zODgtMS41MDYgNC4zMTMtMy41OTcgNC4zMTMtMC43MDMgMC0xLjM2Mi0wLjM2Ni0xLjU4OC0wLjc5NyAwIDAtMC4zNDcgMS4zMjItMC40MzEgMS42NDctMC4xNTYgMC42MDMtMC41NzggMS4zNTYtMC44NjIgMS44MTYgMC42NSAwLjIgMS4zMzcgMC4zMDkgMi4wNTMgMC4zMDkgMy44MjggMCA2LjkzMS0zLjEwMyA2LjkzMS02LjkzMSAwLTMuODMxLTMuMTAzLTYuOTM0LTYuOTMxLTYuOTM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBpbnRlcmVzdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxMiAwLTggMy41ODctOCA4czMuNTg3IDggOCA4IDgtMy41ODggOC04LTMuNTg4LTgtOC04ek04IDE0LjkzMWMtMC43MTYgMC0xLjQwMy0wLjEwOS0yLjA1My0wLjMwOSAwLjI4MS0wLjQ1OSAwLjcwNi0xLjIxNiAwLjg2Mi0xLjgxNiAwLjA4NC0wLjMyNSAwLjQzMS0xLjY0NyAwLjQzMS0xLjY0NyAwLjIyNSAwLjQzMSAwLjg4OCAwLjc5NyAxLjU4NyAwLjc5NyAyLjA5MSAwIDMuNTk3LTEuOTIyIDMuNTk3LTQuMzEzIDAtMi4yOTEtMS44NjktNC4wMDMtNC4yNzItNC4wMDMtMi45OTEgMC00LjU3OCAyLjAwOS00LjU3OCA0LjE5NCAwIDEuMDE2IDAuNTQxIDIuMjgxIDEuNDA2IDIuNjg0IDAuMTMxIDAuMDYzIDAuMiAwLjAzNCAwLjIzMS0wLjA5NCAwLjAyMi0wLjA5NyAwLjE0MS0wLjU2NiAwLjE5NC0wLjc4NyAwLjAxNi0wLjA2OSAwLjAwOS0wLjEzMS0wLjA0Ny0wLjItMC4yODctMC4zNDctMC41MTYtMC45ODgtMC41MTYtMS41ODEgMC0xLjUyOCAxLjE1Ni0zLjAwOSAzLjEyOC0zLjAwOSAxLjcwMyAwIDIuODk0IDEuMTU5IDIuODk0IDIuODE5IDAgMS44NzUtMC45NDcgMy4xNzUtMi4xNzggMy4xNzUtMC42ODEgMC0xLjE5MS0wLjU2My0xLjAyNS0xLjI1MyAwLjE5Ny0wLjgyNSAwLjU3NS0xLjcxMyAwLjU3NS0yLjMwNiAwLTAuNTMxLTAuMjg0LTAuOTc1LTAuODc4LTAuOTc1LTAuNjk3IDAtMS4yNTMgMC43MTktMS4yNTMgMS42ODQgMCAwLjYxMiAwLjIwNiAxLjAyOCAwLjIwNiAxLjAyOHMtMC42ODggMi45MDMtMC44MTMgMy40NDRjLTAuMTQxIDAuNi0wLjA4NCAxLjQ0MS0wLjAyNSAxLjk4OC0yLjU3OC0xLjAwNi00LjQwNi0zLjUxMi00LjQwNi02LjQ1IDAtMy44MjggMy4xMDMtNi45MzEgNi45MzEtNi45MzFzNi45MzEgMy4xMDMgNi45MzEgNi45MzFjMCAzLjgyOC0zLjEwMyA2LjkzMS02LjkzMSA2LjkzMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1YaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgMGgtMTNjLTAuODI1IDAtMS41IDAuNjc1LTEuNSAxLjV2MTNjMCAwLjgyNSAwLjY3NSAxLjUgMS41IDEuNWgxM2MwLjgyNSAwIDEuNS0wLjY3NSAxLjUtMS41di0xM2MwLTAuODI1LTAuNjc1LTEuNS0xLjUtMS41ek00Ljg4NCAxMC40MDZoLTEuNzI4Yy0wLjEwMyAwLTAuMTgxLTAuMDQ3LTAuMjI1LTAuMTE5LTAuMDQ3LTAuMDc1LTAuMDQ3LTAuMTY5IDAtMC4yNjZsMS44MzgtMy4yNDRjMC4wMDMtMC4wMDMgMC4wMDMtMC4wMDYgMC0wLjAwOWwtMS4xNjktMi4wMjVjLTAuMDQ3LTAuMDk3LTAuMDU2LTAuMTkxLTAuMDA5LTAuMjY2IDAuMDQ0LTAuMDcyIDAuMTMxLTAuMTA5IDAuMjM3LTAuMTA5aDEuNzMxYzAuMjY2IDAgMC4zOTcgMC4xNzIgMC40ODEgMC4zMjUgMCAwIDEuMTgxIDIuMDYzIDEuMTkxIDIuMDc1LTAuMDY5IDAuMTI1LTEuODY5IDMuMzAzLTEuODY5IDMuMzAzLTAuMDk0IDAuMTYyLTAuMjE5IDAuMzM0LTAuNDc4IDAuMzM0ek0xMy4wNjkgMi4zNzhsLTMuODMxIDYuNzc1Yy0wLjAwMyAwLjAwMy0wLjAwMyAwLjAwOSAwIDAuMDEybDIuNDQxIDQuNDU2YzAuMDQ3IDAuMDk3IDAuMDUwIDAuMTk0IDAuMDAzIDAuMjY5LTAuMDQ0IDAuMDcyLTAuMTI1IDAuMTA5LTAuMjMxIDAuMTA5aC0xLjcyOGMtMC4yNjYgMC0wLjM5Ny0wLjE3NS0wLjQ4NC0wLjMyOCAwIDAtMi40NTMtNC41LTIuNDU5LTQuNTEyIDAuMTIyLTAuMjE2IDMuODUtNi44MjggMy44NS02LjgyOCAwLjA5NC0wLjE2NiAwLjIwNi0wLjMyOCAwLjQ2My0wLjMyOGgxLjc1M2MwLjEwMyAwIDAuMTg4IDAuMDQxIDAuMjMxIDAuMTA5IDAuMDQ0IDAuMDcyIDAuMDQ0IDAuMTY5LTAuMDA2IDAuMjY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVhpbmcyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNDMxIDMuMTU5Yy0wLjEzOCAwLTAuMjU2IDAuMDUwLTAuMzE2IDAuMTQ0LTAuMDU5IDAuMS0wLjA1MCAwLjIyNSAwLjAxMyAwLjM1M2wxLjU1OSAyLjdjMC4wMDMgMC4wMDYgMC4wMDMgMC4wMDkgMCAwLjAxM2wtMi40NSA0LjMzMWMtMC4wNjMgMC4xMjgtMC4wNTkgMC4yNTYgMCAwLjM1MyAwLjA1OSAwLjA5NCAwLjE2MyAwLjE1NiAwLjMgMC4xNTZoMi4zMDZjMC4zNDQgMCAwLjUxMy0wLjIzNCAwLjYyOC0wLjQ0NyAwIDAgMi4zOTctNC4yNDEgMi40OTEtNC40MDYtMC4wMDktMC4wMTYtMS41ODgtMi43NjYtMS41ODgtMi43NjYtMC4xMTYtMC4yMDMtMC4yODctMC40MzEtMC42NDQtMC40MzFoLTIuM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4xMjUgMGMtMC4zNDQgMC0wLjQ5NCAwLjIxNi0wLjYxOSAwLjQ0MSAwIDAtNC45NzIgOC44MTYtNS4xMzQgOS4xMDYgMC4wMDkgMC4wMTYgMy4yNzggNi4wMTYgMy4yNzggNi4wMTYgMC4xMTYgMC4yMDMgMC4yOTEgMC40NDEgMC42NDQgMC40NDFoMi4zMDZjMC4xMzcgMCAwLjI0Ny0wLjA1MyAwLjMwNi0wLjE0NyAwLjA2My0wLjEgMC4wNTktMC4yMjgtMC4wMDYtMC4zNTZsLTMuMjUtNS45NDdjLTAuMDAzLTAuMDA2LTAuMDAzLTAuMDA5IDAtMC4wMTZsNS4xMDktOS4wMzRjMC4wNjMtMC4xMjggMC4wNjYtMC4yNTYgMC4wMDYtMC4zNTYtMC4wNTktMC4wOTQtMC4xNjktMC4xNDctMC4zMDYtMC4xNDdoLTIuMzM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUZsYXR0ciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc0MyAwYy0zLjgwMiAwLTUuNzQzIDIuMTktNS43NDMgNi4yNzl2MCA4LjU3OWwzLjcyNS0zLjcyOXYtNC4zNThjMC0xLjY5NCAwLjQ0OS0yLjc3MiAxLjk1NS0zLjAxNHYwYzAuNTI2LTAuMTAzIDEuNjIxLTAuMDY3IDIuMzE3LTAuMDY3djAgMi41ODdjMCAwLjAyNCAwLjAwMyAwLjA2NiAwLjAwOSAwLjA4N3YwYzAuMDI5IDAuMTA1IDAuMTI0IDAuMTgxIDAuMjM2IDAuMTgydjBjMC4wNjMgMCAwLjEyMy0wLjAzMyAwLjE4NC0wLjA5M3YwbDYuNDU1LTYuNDUzLTkuMTM5LTAuMDAxek0xMi4yNzUgNC44NzF2NC4zNThjMCAxLjY5NC0wLjQ0OSAyLjc3Mi0xLjk1NSAzLjAxNHYwYy0wLjUyNiAwLjEwMy0xLjYyMSAwLjA2Ny0yLjMxNyAwLjA2N3YwLTIuNTg3YzAtMC4wMjMtMC4wMDMtMC4wNjYtMC4wMDktMC4wODd2MGMtMC4wMjktMC4xMDUtMC4xMjQtMC4xODItMC4yMzYtMC4xODJ2MGMtMC4wNjQtMC0wLjEyMyAwLjAzMy0wLjE4NCAwLjA5M3YwbC02LjQ1NSA2LjQ1MyA5LjEzOSAwLjAwMWMzLjgwMiAwIDUuNzQzLTIuMTkgNS43NDMtNi4yNzl2MC04LjU3OWwtMy43MjUgMy43Mjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRm91cnNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4zMDYgMS40MDhjLTAuMTg4LTAuMjU2LTAuNDg4LTAuNDA4LTAuODA2LTAuNDA4aC05LjVjLTAuNTUyIDAtMSAwLjQ0OC0xIDF2MTJjMCAwLjQwNCAwLjI0NCAwLjc2OSAwLjYxNyAwLjkyNCAwLjEyNCAwLjA1MSAwLjI1NCAwLjA3NiAwLjM4MiAwLjA3NiAwLjI2IDAgMC41MTYtMC4xMDIgMC43MDctMC4yOTNsMy43MDctMy43MDdoMi41ODZjMC40MzcgMCAwLjgyNC0wLjI4NCAwLjk1NC0wLjcwMmwyLjUtOGMwLjA5NS0wLjMwNCAwLjA0MC0wLjYzNC0wLjE0OS0wLjg5MXpNMTAuNTE1IDVoLTMuNTE1Yy0wLjU1MiAwLTEgMC40NDgtMSAxczAuNDQ4IDEgMSAxaDIuODlsLTAuNjI1IDJoLTIuMjY1Yy0wLjI2NSAwLTAuNTIgMC4xMDUtMC43MDcgMC4yOTNsLTIuMjkzIDIuMjkzdi04LjU4Nmg3LjE0bC0wLjYyNSAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVllbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41MTQgMTAuMjFjLTAuMjcgMC4yNzItMC4wNDIgMC43NjgtMC4wNDIgMC43NjhsMi4wMzMgMy4zOTRjMCAwIDAuMzM0IDAuNDQ3IDAuNjIzIDAuNDQ3IDAuMjkgMCAwLjU3Ny0wLjIzOSAwLjU3Ny0wLjIzOWwxLjYwNy0yLjI5N2MwIDAgMC4xNjItMC4yOSAwLjE2Ni0wLjU0NCAwLjAwNi0wLjM2MS0wLjUzOC0wLjQ2LTAuNTM4LTAuNDZsLTMuODA1LTEuMjIyYy0wIDAtMC4zNzMtMC4wOTktMC42MjEgMC4xNTJ6TTkuMzIxIDguNWMwLjE5NSAwLjMzIDAuNzMyIDAuMjM0IDAuNzMyIDAuMjM0bDMuNzk2LTEuMTA5YzAgMCAwLjUxNy0wLjIxIDAuNTkxLTAuNDkxIDAuMDcyLTAuMjgxLTAuMDg1LTAuNjE5LTAuMDg1LTAuNjE5bC0xLjgxNC0yLjEzN2MwIDAtMC4xNTctMC4yNy0wLjQ4My0wLjI5Ny0wLjM2LTAuMDMxLTAuNTgxIDAuNDA1LTAuNTgxIDAuNDA1bC0yLjE0NSAzLjM3NWMwIDAtMC4xOSAwLjMzNi0wLjAxMCAwLjY0ek03LjUyNyA3LjE4NGMwLjQ0Ny0wLjExIDAuNTE4LTAuNzU5IDAuNTE4LTAuNzU5bC0wLjAzMC01LjQwNGMwIDAtMC4wNjctMC42NjctMC4zNjctMC44NDctMC40Ny0wLjI4NS0wLjYwOS0wLjEzNi0wLjc0NC0wLjExNmwtMy4xNTEgMS4xNzFjMCAwLTAuMzA5IDAuMTAyLTAuNDY5IDAuMzYtMC4yMyAwLjM2NSAwLjIzMyAwLjg5OSAwLjIzMyAwLjg5OWwzLjI3NiA0LjQ2NWMwIDAgMC4zMjMgMC4zMzQgMC43MzUgMC4yMzN6TTYuNzQ5IDkuMzcxYzAuMDExLTAuNDE3LTAuNS0wLjY2Ny0wLjUtMC42NjdsLTMuMzg3LTEuNzExYzAgMC0wLjUwMi0wLjIwNy0wLjc0Ni0wLjA2My0wLjE4NyAwLjExLTAuMzUyIDAuMzEtMC4zNjggMC40ODZsLTAuMjIxIDIuNzE2YzAgMC0wLjAzMyAwLjQ3MSAwLjA4OSAwLjY4NSAwLjE3MyAwLjMwNCAwLjc0MSAwLjA5MiAwLjc0MSAwLjA5MmwzLjk1NS0wLjg3NGMwLjE1NC0wLjEwMyAwLjQyMy0wLjExMyAwLjQzOC0wLjY2NHpNNy43MzIgMTAuODM3Yy0wLjMzOS0wLjE3NC0wLjc0NiAwLjE4Ny0wLjc0NiAwLjE4N2wtMi42NDggMi45MTVjMCAwLTAuMzMgMC40NDYtMC4yNDYgMC43MiAwLjA3OSAwLjI1NyAwLjIxIDAuMzg0IDAuMzk2IDAuNDc0bDIuNjU5IDAuODM5YzAgMCAwLjMyMiAwLjA2NyAwLjU2Ny0wLjAwNCAwLjM0Ny0wLjEgMC4yODMtMC42NDMgMC4yODMtMC42NDNsMC4wNjAtMy45NDdjLTAgMC0wLjAxNC0wLjM4LTAuMzI0LTAuNTQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41MzEgNC44MjJjLTAuNzQ3IDMuMzE2LTMuMDUzIDUuMDY2LTYuNjg4IDUuMDY2aC0xLjIwOWwtMC44NDEgNS4zMzhoLTEuMDEzbC0wLjA1MyAwLjM0NGMtMC4wMzQgMC4yMjggMC4xNDEgMC40MzEgMC4zNjkgMC40MzFoMi41ODhjMC4zMDYgMCAwLjU2Ni0wLjIyMiAwLjYxNi0wLjUyNWwwLjAyNS0wLjEzMSAwLjQ4OC0zLjA5MSAwLjAzMS0wLjE2OWMwLjA0Ny0wLjMwMyAwLjMwOS0wLjUyNSAwLjYxNi0wLjUyNWgwLjM4NGMyLjUwNiAwIDQuNDY5LTEuMDE5IDUuMDQ0LTMuOTYzIDAuMjE2LTEuMTE5IDAuMTM0LTIuMDY5LTAuMzU2LTIuNzc1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk4NCAxLjIwNmMtMC43NDEtMC44NDQtMi4wODEtMS4yMDYtMy43OTQtMS4yMDZoLTQuOTcyYy0wLjM1IDAtMC42NSAwLjI1My0wLjcwMyAwLjZsLTIuMDcyIDEzLjEzMWMtMC4wNDEgMC4yNTkgMC4xNTkgMC40OTQgMC40MjIgMC40OTRoMy4wNzJsMC43NzItNC44OTEtMC4wMjUgMC4xNTNjMC4wNTMtMC4zNDcgMC4zNS0wLjYgMC43LTAuNmgxLjQ1OWMyLjg2NiAwIDUuMTA5LTEuMTYyIDUuNzY2LTQuNTMxIDAuMDE5LTAuMSAwLjAzNy0wLjE5NyAwLjA1MC0wLjI5MSAwLjE5NC0xLjI0NCAwLTIuMDk0LTAuNjc1LTIuODU5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUNocm9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjAzNiA2Ljk3N2wtMi4yOS0zLjk2NmMxLjQ2Ni0xLjgzNSAzLjcyMi0zLjAxMiA2LjI1NC0zLjAxMiAyLjkyOSAwIDUuNDg5IDEuNTc0IDYuODgzIDMuOTIyaC02LjUyOGMtMC4xMTctMC4wMTAtMC4yMzYtMC4wMTYtMC4zNTYtMC4wMTYtMS45MDQgMC0zLjUwOSAxLjMwNy0zLjk2NCAzLjA3MXpNMTAuODY0IDUuMDc4aDQuNTg1YzAuMzU1IDAuOTA1IDAuNTUxIDEuODkxIDAuNTUxIDIuOTIyIDAgNC4zODgtMy41MzMgNy45NS03LjkwOSA3Ljk5OWwzLjI3Mi01LjY2N2MwLjQ2MS0wLjY2MiAwLjczMS0xLjQ2NiAwLjczMS0yLjMzMiAwLTEuMTQzLTAuNDcxLTIuMTc4LTEuMjMtMi45MjJ6TTUuMDk0IDhjMC0xLjYwMyAxLjMwNC0yLjkwNiAyLjkwNi0yLjkwNnMyLjkwNiAxLjMwNCAyLjkwNiAyLjkwNmMwIDEuNjAyLTEuMzA0IDIuOTA2LTIuOTA2IDIuOTA2cy0yLjkwNi0xLjMwNC0yLjkwNi0yLjkwNnpNOS4wOTcgMTEuOTQ0bC0yLjI5IDMuOTY3Yy0zLjg1Mi0wLjU3Ni02LjgwNi0zLjg5OS02LjgwNi03LjkxMSAwLTEuNDI1IDAuMzczLTIuNzYzIDEuMDI2LTMuOTIybDMuMjY2IDUuNjU3YzAuNjU0IDEuMzkyIDIuMDcwIDIuMzU5IDMuNzA3IDIuMzU5IDAuMzggMCAwLjc0Ny0wLjA1MiAxLjA5Ny0wLjE0OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaXJlZm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljk3NyA1LjIyMWwtMC4xODUgMS4xODljMCAwLTAuMjY1LTIuMjAxLTAuNTktMy4wMjQtMC40OTgtMS4yNjEtMC43MTktMS4yNTEtMC43Mi0xLjI0OSAwLjMzMyAwLjg0NyAwLjI3MyAxLjMwMiAwLjI3MyAxLjMwMnMtMC41OTEtMS42MDktMi4xNTItMi4xMjFjLTEuNzI5LTAuNTY3LTIuNjY1LTAuNDEyLTIuNzczLTAuMzgzLTAuMDE2LTAtMC4wMzItMC0wLjA0Ny0wIDAuMDEzIDAuMDAxIDAuMDI1IDAuMDAyIDAuMDM4IDAuMDAzLTAuMDAxIDAtMC4wMDEgMC4wMDEtMC4wMDEgMC4wMDEgMC4wMDcgMC4wMDkgMS45MTEgMC4zMzMgMi4yNDkgMC43OTcgMCAwLTAuODA5IDAtMS42MTQgMC4yMzItMC4wMzYgMC4wMTAgMi45NjEgMC4zNzQgMy41NzQgMy4zNyAwIDAtMC4zMjktMC42ODYtMC43MzUtMC44MDIgMC4yNjcgMC44MTMgMC4xOTkgMi4zNTYtMC4wNTYgMy4xMjMtMC4wMzMgMC4wOTktMC4wNjYtMC40MjYtMC41NjgtMC42NTIgMC4xNjEgMS4xNTEtMC4wMTAgMi45NzYtMC44MDggMy40NzktMC4wNjIgMC4wMzkgMC41LTEuODAyIDAuMTEzLTEuMDkwLTIuMjMgMy40MTktNC44NjYgMS41NzgtNi4wNTEgMC43NjcgMC42MDcgMC4xMzIgMS43Ni0wLjAyMSAyLjI3MS0wLjQgMC4wMDEtMCAwLjAwMS0wLjAwMSAwLjAwMi0wLjAwMSAwLjU1NC0wLjM3OSAwLjg4Mi0wLjY1NiAxLjE3Ny0wLjU5czAuNDkxLTAuMjMgMC4yNjItMC40OTNjLTAuMjI5LTAuMjYzLTAuNzg2LTAuNjI1LTEuNTM5LTAuNDI4LTAuNTMxIDAuMTM5LTEuMTkgMC43MjctMi4xOTQgMC4xMzItMC43NzEtMC40NTctMC44NDQtMC44MzctMC44NTEtMS4xIDAuMDE5LTAuMDkzIDAuMDQzLTAuMTggMC4wNzItMC4yNiAwLjA4OS0wLjI0OCAwLjM1OC0wLjMyMyAwLjUwOC0wLjM4MiAwLjI1NCAwLjA0NCAwLjQ3MyAwLjEyMyAwLjcwMyAwLjI0MSAwLjAwMy0wLjA3NiAwLjAwNC0wLjE3OC0wLTAuMjkzIDAuMDIyLTAuMDQ0IDAuMDA4LTAuMTc2LTAuMDI3LTAuMzM3LTAuMDIwLTAuMTYxLTAuMDUzLTAuMzI4LTAuMTA2LTAuNDggMC0wIDAtMCAwLTBzMC4wMDItMC4wMDEgMC4wMDItMC4wMDFjMC4wMDEtMC4wMDEgMC4wMDItMC4wMDIgMC4wMDMtMC4wMDNzMC0wLjAwMSAwLjAwMS0wLjAwMWMwLjAwMS0wLjAwMiAwLjAwMi0wLjAwNCAwLjAwMy0wLjAwNyAwLjAxNi0wLjA3MiAwLjE4OC0wLjIxMSAwLjQwMi0wLjM2MSAwLjE5Mi0wLjEzNCAwLjQxNy0wLjI3NyAwLjU5NS0wLjM4NyAwLjE1Ny0wLjA5OCAwLjI3Ny0wLjE3IDAuMzAyLTAuMTg5IDAuMDEwLTAuMDA3IDAuMDIxLTAuMDE2IDAuMDM0LTAuMDI2IDAuMDAyLTAuMDAyIDAuMDA1LTAuMDA0IDAuMDA3LTAuMDA2czAuMDAzLTAuMDAyIDAuMDA0LTAuMDA0YzAuMDg1LTAuMDY3IDAuMjExLTAuMTk0IDAuMjM3LTAuNDYyIDAtMC4wMDEgMC0wLjAwMSAwLTAuMDAyIDAuMDAxLTAuMDA4IDAuMDAxLTAuMDE2IDAuMDAyLTAuMDI0IDAtMC4wMDYgMC4wMDEtMC4wMTEgMC4wMDEtMC4wMTcgMC0wLjAwNCAwLTAuMDA5IDAuMDAxLTAuMDEzIDAtMC4wMTEgMC4wMDEtMC4wMjEgMC4wMDEtMC4wMzIgMC0wLjAwMSAwLTAuMDAxIDAtMC4wMDIgMC0wLjAyNi0wLTAuMDUzLTAuMDAyLTAuMDgxLTAuMDAxLTAuMDE2LTAuMDAyLTAuMDMwLTAuMDA1LTAuMDQzLTAtMC4wMDEtMC0wLjAwMS0wLTAuMDAycy0wLjAwMS0wLjAwMy0wLjAwMS0wLjAwNC0wLjAwMS0wLjAwNS0wLjAwMi0wLjAwN2MtMC0wLTAtMC0wLTAuMDAxLTAuMDAxLTAuMDAzLTAuMDAyLTAuMDA1LTAuMDAzLTAuMDA3LTAtMC0wLTAtMC0wLTAuMDI3LTAuMDY0LTAuMTMtMC4wODgtMC41NTQtMC4wOTYtMC0wLTAuMDAxLTAtMC4wMDEtMHYwYy0wLjE3My0wLjAwMy0wLjM5OS0wLjAwMy0wLjY5NS0wLjAwMi0wLjUyIDAuMDAyLTAuODA3LTAuNTA4LTAuODk4LTAuNzA1IDAuMTI2LTAuNjk1IDAuNDg5LTEuMTkgMS4wODUtMS41MjUgMC4wMTEtMC4wMDYgMC4wMDktMC4wMTItMC4wMDQtMC4wMTUgMC4xMTctMC4wNzEtMS40MS0wLjAwMi0yLjExMiAwLjg5MS0wLjYyMy0wLjE1NS0xLjE2Ni0wLjE0NC0xLjYzNS0wLjAzNS0wLjA5MC0wLjAwMy0wLjIwMi0wLjAxNC0wLjMzNS0wLjA0MS0wLjMxMS0wLjI4Mi0wLjc1Ny0wLjgwMy0wLjc4MS0xLjQyNSAwIDAtMC4wMDEgMC4wMDEtMC4wMDQgMC4wMDMtMC0wLjAwNi0wLjAwMS0wLjAxMi0wLjAwMS0wLjAxOCAwIDAtMC45NDkgMC43MjktMC44MDcgMi43MTctMCAwLjAzMi0wLjAwMSAwLjA2Mi0wLjAwMiAwLjA5Mi0wLjI1NyAwLjM0OC0wLjM4NCAwLjY0MS0wLjM5NCAwLjcwNi0wLjIyOCAwLjQ2My0wLjQ1OCAxLjE2LTAuNjQ2IDIuMjE4IDAgMCAwLjEzMS0wLjQxNyAwLjM5NS0wLjg4OS0wLjE5NCAwLjU5NC0wLjM0NiAxLjUxOC0wLjI1NyAyLjkwNCAwIDAgMC4wMjQtMC4zMDcgMC4xMDctMC43NSAwLjA2NSAwLjg2IDAuMzUyIDEuOTIxIDEuMDc2IDMuMTY5IDEuMzkgMi4zOTYgMy41MjYgMy42MDUgNS44ODcgMy43OTEgMC40MTkgMC4wMzUgMC44NDUgMC4wMzUgMS4yNzIgMC4wMDMgMC4wMzktMC4wMDMgMC4wNzktMC4wMDYgMC4xMTgtMC4wMDkgMC40ODQtMC4wMzQgMC45NzEtMC4xMDcgMS40NTctMC4yMjQgNi42NDMtMS42MDYgNS45MjEtOS42MjggNS45MjEtOS42Mjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDcyIDkuODI1aDMuNjg4YzAuMDI4LTAuMjU2IDAuMDQwLTAuNTE3IDAuMDQwLTAuNzg0IDAtMS4yNTMtMC4zMzYtMi40MjktMC45MjQtMy40NDIgMC42MDctMS42MTQgMC41ODYtMi45ODQtMC4yMjctMy44MDMtMC43NzMtMC43Ny0yLjg0OC0wLjY0NS01LjE5NCAwLjM5NC0wLjE3NC0wLjAxMy0wLjM0OS0wLjAyMC0wLjUyNi0wLjAyMC0zLjIyIDAtNS45MjEgMi4yMTYtNi42NjcgNS4yMDEgMS4wMTAtMS4yOTMgMi4wNzItMi4yMzEgMy40OTItMi45MTMtMC4xMjkgMC4xMjEtMC44ODIgMC44Ny0xLjAwOSAwLjk5Ni0zLjc0MyAzLjc0Mi00LjkyMyA4LjYzLTMuNjUzIDkuOSAwLjk2NSAwLjk2NSAyLjcxNSAwLjgwMiA0LjcyNS0wLjE4MiAwLjkzNCAwLjQ3NiAxLjk5MiAwLjc0NCAzLjExMyAwLjc0NCAzLjAxOCAwIDUuNTc1LTEuOTQyIDYuNTAxLTQuNjQ4aC0zLjcxN2MtMC41MTEgMC45NDMtMS41MTIgMS41ODYtMi42NiAxLjU4NnMtMi4xNDgtMC42NDItMi42Ni0xLjU4NmMtMC4yMjctMC40MjYtMC4zNTgtMC45MTUtMC4zNTgtMS40MzJ2LTAuMDExaDYuMDM1ek01LjQ0MiA4LjAxM2MwLjA4NS0xLjUxNyAxLjM0Ny0yLjcyOCAyLjg4Ny0yLjcyOHMyLjgwMiAxLjIxIDIuODg3IDIuNzI4aC01Ljc3NHpNMTQuMDE1IDIuNTU5YzAuNTI0IDAuNTI5IDAuNTExIDEuNTAzIDAuMDYzIDIuNzE5LTAuNzY4LTEuMTctMS44ODMtMi4wOTMtMy4yLTIuNjE5IDEuNDA4LTAuNjA0IDIuNTUzLTAuNjg0IDMuMTM3LTAuMXpNMS40NjEgMTUuMTEzYy0wLjY2OC0wLjY2OS0wLjQ2Ny0yLjA3MiAwLjM5NC0zLjc2MyAwLjUzNiAxLjUwNCAxLjU4MSAyLjc2NyAyLjkyNyAzLjU4MS0xLjQ5MSAwLjY3Ny0yLjcxMiAwLjc5Mi0zLjMyMSAwLjE4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1FZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAuMjQxIDcuMTAzYzAuNDY5LTMuNyAyLjk5NC03LjA1NiA3LjUxOS03LjEwMyAyLjczMSAwLjA1MyA0Ljk3OCAxLjI5MSA2LjMxNiAzLjY1IDAuNjcyIDEuMjMxIDAuODgxIDIuNTI1IDAuOTI1IDMuOTUzdjEuNjc4aC0xMC4wNDFjMC4wNDcgNC4xNDEgNi4wOTQgNCA4LjY5NyAyLjE3NXYzLjM3MmMtMS41MjUgMC45MTYtNC45ODQgMS43MzQtNy42NjIgMC42ODEtMi4yODEtMC44NTYtMy45MDYtMy4yNDQtMy44OTctNS41NDEtMC4wNzUtMi45NzggMS40ODEtNC45NSAzLjg5Ny02LjA3Mi0wLjUxMyAwLjYzNC0wLjkwMyAxLjMzNC0xLjEwNiAyLjU0N2g1LjY2OWMwIDAgMC4zMzEtMy4zODgtMy4yMDktMy4zODgtMy4zMzggMC4xMTYtNS43NDQgMi4wNTYtNy4xMDYgNC4wNDd2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1TYWZhcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy00LjQxOSAwLTggMy41ODEtOCA4czMuNTgxIDggOCA4IDgtMy41ODEgOC04LTMuNTgxLTgtOC04ek0xNC45NzUgNy4zODhsLTAuMDE2LTAuMTY2YzAuMDAzIDAuMDU2IDAuMDA5IDAuMTA5IDAuMDE2IDAuMTY2ek0xMy44ODEgNC4ybC0wLjExMy0wLjE2OWMwLjAzNyAwLjA1NiAwLjA3NSAwLjExMiAwLjExMyAwLjE2OXpNMTMuNDQ3IDMuNjAzbC0wLjA2OS0wLjA4NGMwLjAyNSAwLjAyOCAwLjA0NyAwLjA1NiAwLjA2OSAwLjA4NHpNMTIuNDc4IDIuNjE5bC0wLjA4NC0wLjA2OWMwLjAzMSAwLjAyNSAwLjA1NiAwLjA0NyAwLjA4NCAwLjA2OXpNMTEuOTY5IDIuMjMxbC0wLjE2OS0wLjExMmMwLjA1NiAwLjAzOCAwLjExMyAwLjA3NSAwLjE2OSAwLjExMnpNOC43NzggMS4wNDRsLTAuMTY5LTAuMDE2YzAuMDU2IDAuMDAzIDAuMTEzIDAuMDA5IDAuMTY5IDAuMDE2ek03LjM4OCAxLjAyNWwtMC4xNjkgMC4wMTZjMC4wNTYtMC4wMDMgMC4xMTItMC4wMDkgMC4xNjktMC4wMTZ6TTQuMiAyLjExOWwtMC4xNjkgMC4xMTJjMC4wNTYtMC4wMzggMC4xMTItMC4wNzUgMC4xNjktMC4xMTJ6TTMuNjAzIDIuNTUzbC0wLjA4MSAwLjA2NmMwLjAyOC0wLjAyMiAwLjA1My0wLjA0NCAwLjA4MS0wLjA2NnpNMi42MTkgMy41MjJsLTAuMDY5IDAuMDg0YzAuMDI1LTAuMDI4IDAuMDQ3LTAuMDU2IDAuMDY5LTAuMDg0ek0yLjIzMSA0LjAzMWwtMC4xMTIgMC4xNjljMC4wMzgtMC4wNTYgMC4wNzUtMC4xMTIgMC4xMTItMC4xNjl6TTEuMDQ0IDcuMjIybC0wLjAxNiAwLjE2OWMwLjAwMy0wLjA1NiAwLjAwOS0wLjExMiAwLjAxNi0wLjE2OXpNMS4wMjUgOC42MTNsMC4wMTYgMC4xNjljLTAuMDAzLTAuMDU2LTAuMDA5LTAuMTEzLTAuMDE2LTAuMTY5ek0yLjExOSAxMS43OTdsMC4xMTIgMC4xNjljLTAuMDM4LTAuMDUzLTAuMDc1LTAuMTA5LTAuMTEyLTAuMTY5ek0yLjI1IDExLjk5NGwxLjI0Ny0wLjgzNC0wLjEzOC0wLjIwOS0xLjI0NyAwLjgzNGMtMC41NjYtMC44NzgtMC45MzgtMS44ODctMS4wNjMtMi45NzVsMC43NDctMC4wNzUtMC4wMjUtMC4yNS0wLjc0NyAwLjA3NWMtMC4wMTItMC4xNDQtMC4wMTktMC4yOTEtMC4wMjItMC40MzhoMS41di0wLjI1aC0xLjVjMC4wMDMtMC4xNDcgMC4wMDktMC4yOTEgMC4wMjItMC40MzhsMC43NDcgMC4wNzIgMC4wMjUtMC4yNS0wLjc0Ny0wLjA3MmMwLjEyNS0xLjA4OCAwLjUtMi4wOTcgMS4wNjYtMi45NzVsMS4yNDcgMC44MzQgMC4xMzgtMC4yMDktMS4yNS0wLjgyOGMwLjA4NC0wLjExOSAwLjE2OS0wLjIzNyAwLjI1OS0wLjM1bDAuNTc4IDAuNDc1IDAuMTU5LTAuMTk0LTAuNTc4LTAuNDc1YzAuMDk0LTAuMTEyIDAuMTk0LTAuMjE5IDAuMjk0LTAuMzI1bDEuMDU5IDEuMDU5IDAuMTc4LTAuMTc4LTEuMDU5LTEuMDU5YzAuMTA2LTAuMSAwLjIxMi0wLjIgMC4zMjItMC4yOTRsMC40NzUgMC41ODEgMC4xOTQtMC4xNTktMC40NzUtMC41NzhjMC4xMTYtMC4wOTEgMC4yMzEtMC4xNzggMC4zNS0wLjI2M2wwLjgzNCAxLjI0NyAwLjIwOS0wLjEzOC0wLjgzNC0xLjI0N2MwLjg3OC0wLjU2NiAxLjg4OC0wLjkzOCAyLjk3NS0xLjA2M2wwLjA3NSAwLjc0NyAwLjI1LTAuMDI1LTAuMDc1LTAuNzQ3YzAuMTQ0LTAuMDEyIDAuMjkxLTAuMDE5IDAuNDM4LTAuMDIydjEuNWgwLjI1di0xLjVjMC4xNDcgMC4wMDMgMC4yOTEgMC4wMDkgMC40MzggMC4wMjJsLTAuMDcyIDAuNzQ3IDAuMjUgMC4wMjUgMC4wNzItMC43NDdjMS4wODggMC4xMjUgMi4wOTcgMC41IDIuOTc1IDEuMDY2bC0wLjgzNCAxLjI0NyAwLjIwOSAwLjEzOCAwLjgzNC0xLjI0N2MwLjExOSAwLjA4NCAwLjIzOCAwLjE2OSAwLjM1IDAuMjU5bC0wLjQ3NSAwLjU3OCAwLjE5NCAwLjE1OSAwLjQ3NS0wLjU3OGMwLjExMyAwLjA5NCAwLjIxOSAwLjE5NCAwLjMyNSAwLjI5NGwtMC40IDAuMzkxLTUuNDY5IDMuNjQ3LTMuNjQ3IDUuNDY5LTAuMzkxIDAuMzkxYy0wLjEtMC4xMDYtMC4yLTAuMjEzLTAuMjk0LTAuMzIybDAuNTc4LTAuNDc1LTAuMTU5LTAuMTk0LTAuNTc4IDAuNDc1Yy0wLjA5MS0wLjExMy0wLjE3NS0wLjIzMS0wLjI1OS0wLjM1ek0yLjYxOSAxMi40NzhjLTAuMDIyLTAuMDI4LTAuMDQ0LTAuMDUzLTAuMDY2LTAuMDgxbDAuMDY2IDAuMDgxek0zLjUyMiAxMy4zODFsMC4wODEgMC4wNjZjLTAuMDI4LTAuMDIyLTAuMDUzLTAuMDQ0LTAuMDgxLTAuMDY2ek00LjAzMSAxMy43NjZsMC4xNjkgMC4xMTNjLTAuMDU2LTAuMDM0LTAuMTEyLTAuMDcyLTAuMTY5LTAuMTEzek03LjIyMiAxNC45NTZsMC4xNjkgMC4wMTZjLTAuMDU2LTAuMDAzLTAuMTEyLTAuMDA5LTAuMTY5LTAuMDE2ek04LjYxMyAxNC45NzVsMC4xNjYtMC4wMTZjLTAuMDU2IDAuMDAzLTAuMTA5IDAuMDA5LTAuMTY2IDAuMDE2ek0xMS44IDEzLjg4MWwwLjE2OS0wLjExM2MtMC4wNTYgMC4wMzctMC4xMTMgMC4wNzUtMC4xNjkgMC4xMTN6TTEyLjM5NyAxMy40NDdsMC4wODQtMC4wNjljLTAuMDI4IDAuMDI1LTAuMDU2IDAuMDQ3LTAuMDg0IDAuMDY5ek0xMi45NDQgMTIuOTU2bDAuMDEyLTAuMDEyYy0wLjAwMyAwLjAwMy0wLjAwOSAwLjAwOS0wLjAxMiAwLjAxMnpNMTMuMzgxIDEyLjQ3OGwwLjA2OS0wLjA4NGMtMC4wMjUgMC4wMjgtMC4wNDcgMC4wNTYtMC4wNjkgMC4wODR6TTEzLjQ5MSAxMi4zNDRsLTAuNTc4LTAuNDc1LTAuMTU5IDAuMTk0IDAuNTc4IDAuNDc1Yy0wLjA5NCAwLjExMy0wLjE5NCAwLjIxOS0wLjI5NCAwLjMyNWwtMS4wNTktMS4wNTktMC4xNzggMC4xNzggMS4wNTkgMS4wNTljLTAuMTA2IDAuMS0wLjIxMyAwLjItMC4zMjIgMC4yOTRsLTAuNDc1LTAuNTgxLTAuMTk0IDAuMTU5IDAuNDc1IDAuNTc4Yy0wLjExNiAwLjA5MS0wLjIzMSAwLjE3OC0wLjM1IDAuMjYybC0wLjgzNC0xLjI0Ny0wLjIwOSAwLjEzNyAwLjgzNCAxLjI0N2MtMC44NzggMC41NjYtMS44ODcgMC45MzgtMi45NzUgMS4wNjNsLTAuMDc1LTAuNzQ3LTAuMjUgMC4wMjUgMC4wNzUgMC43NDdjLTAuMTQ0IDAuMDEyLTAuMjkxIDAuMDE5LTAuNDM4IDAuMDIydi0xLjVoLTAuMjV2MS41Yy0wLjE0Ny0wLjAwMy0wLjI5MS0wLjAwOS0wLjQzOC0wLjAyMmwwLjA3Mi0wLjc0Ny0wLjI1LTAuMDI1LTAuMDcyIDAuNzQ3Yy0xLjA4OC0wLjEyNS0yLjA5Ny0wLjUtMi45NzUtMS4wNjZsMC44MzQtMS4yNDctMC4yMDktMC4xMzctMC44MjggMS4yNDdjLTAuMTE5LTAuMDg0LTAuMjM3LTAuMTY5LTAuMzUtMC4yNTlsMC40NzUtMC41NzgtMC4xOTQtMC4xNTktMC40NzUgMC41NzhjLTAuMTEyLTAuMDk0LTAuMjE5LTAuMTk0LTAuMzI1LTAuMjk0bDAuMzk0LTAuMzkxIDUuNDY5LTMuNjQ3IDMuNjQ3LTUuNDY5IDAuMzkxLTAuMzkxYzAuMSAwLjEwNiAwLjIgMC4yMTIgMC4yOTQgMC4zMjJsLTAuNTc4IDAuNDc1IDAuMTU5IDAuMTk0IDAuNTc4LTAuNDc1YzAuMDkxIDAuMTE2IDAuMTc4IDAuMjMxIDAuMjYyIDAuMzVsLTEuMjQ3IDAuODM0IDAuMTM3IDAuMjA5IDEuMjQ3LTAuODM0YzAuNTY2IDAuODc4IDAuOTM4IDEuODg4IDEuMDYzIDIuOTc1bC0wLjc0NyAwLjA3NSAwLjAyNSAwLjI1IDAuNzQ3LTAuMDc1YzAuMDEyIDAuMTQ0IDAuMDE5IDAuMjkxIDAuMDIyIDAuNDM4aC0xLjV2MC4yNWgxLjVjLTAuMDAzIDAuMTQ3LTAuMDA5IDAuMjkxLTAuMDIyIDAuNDM4bC0wLjc0Ny0wLjA3Mi0wLjAyNSAwLjI1IDAuNzQ3IDAuMDcyYy0wLjEyNSAxLjA4OC0wLjUgMi4wOTctMS4wNjYgMi45NzVsLTEuMjQ3LTAuODM0LTAuMTM3IDAuMjA5IDEuMjQ3IDAuODM0Yy0wLjA4MSAwLjExMy0wLjE2OSAwLjIyOC0wLjI1OSAwLjM0NHpNMTQuOTc1IDguNjA5Yy0wLjAwNiAwLjA1Ni0wLjAwOSAwLjExMy0wLjAxNiAwLjE2OWwwLjAxNi0wLjE2OXpNMTMuODgxIDExLjhjLTAuMDM3IDAuMDU2LTAuMDc1IDAuMTEzLTAuMTEzIDAuMTY5bDAuMTEzLTAuMTY5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzU4IDEuMTExbDAuMjkzIDEuNDcxLTAuMjQ1IDAuMDQ5LTAuMjkzLTEuNDcxIDAuMjQ1LTAuMDQ5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjQ1IDE0Ljg5bC0wLjI5My0xLjQ3MSAwLjI0NS0wLjA0OSAwLjI5MyAxLjQ3MS0wLjI0NSAwLjA0OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjA4OCAxLjI2NGwwLjIxOCAwLjcxOC0wLjIzOSAwLjA3My0wLjIxOC0wLjcxOCAwLjIzOS0wLjA3M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjkxMyAxNC43MzNsLTAuMjE4LTAuNzE4IDAuMjM5LTAuMDczIDAuMjE4IDAuNzE4LTAuMjM5IDAuMDczelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNDM4IDEuNDg2bDAuNTc0IDEuMzg2LTAuMjMxIDAuMDk2LTAuNTc0LTEuMzg2IDAuMjMxLTAuMDk2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU2NCAxNC41MTVsLTAuNTc0LTEuMzg2IDAuMjMxLTAuMDk2IDAuNTc0IDEuMzg2LTAuMjMxIDAuMDk2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTg4IDEuODg1bDAuMjItMC4xMTggMC4zNTQgMC42NjEtMC4yMiAwLjExOC0wLjM1NC0wLjY2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40MDggMTQuMTE0bC0wLjIyIDAuMTE4LTAuMzU0LTAuNjYxIDAuMjItMC4xMTggMC4zNTQgMC42NjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS44ODQgNC41OTFsMC42NjIgMC4zNTMtMC4xMTggMC4yMjEtMC42NjEtMC4zNTMgMC4xMTgtMC4yMjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMTEzIDExLjQwOWwtMC42NjItMC4zNTMgMC4xMTgtMC4yMiAwLjY2MiAwLjM1My0wLjExOCAwLjIyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODcyIDYuMDEwbC0xLjM4Ni0wLjU3NCAwLjA5Ni0wLjIzMSAxLjM4NiAwLjU3NC0wLjA5NiAwLjIzMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4xMyA5Ljk4OWwxLjM4NiAwLjU3NC0wLjA5NiAwLjIzMS0xLjM4Ni0wLjU3NCAwLjA5Ni0wLjIzMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjMzNyA1Ljg1bDAuNzE4IDAuMjE4LTAuMDczIDAuMjM5LTAuNzE4LTAuMjE4IDAuMDczLTAuMjM5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjY2MSAxMC4xNTFsLTAuNzE4LTAuMjE4IDAuMDczLTAuMjM5IDAuNzE4IDAuMjE4LTAuMDczIDAuMjM5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMTU3IDYuNTEybDEuNDcxIDAuMjkzLTAuMDQ5IDAuMjQ1LTEuNDcxLTAuMjkzIDAuMDQ5LTAuMjQ1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0Ljg0IDkuNDg4bC0xLjQ3MS0wLjI5MyAwLjA0OS0wLjI0NSAxLjQ3MSAwLjI5My0wLjA0OSAwLjI0NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjEwOSA5LjI0M2wxLjQ3MS0wLjI5MyAwLjA0OSAwLjI0NS0xLjQ3MSAwLjI5My0wLjA0OS0wLjI0NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC44ODggNi43NTdsLTEuNDcxIDAuMjkzLTAuMDQ5LTAuMjQ1IDEuNDcxLTAuMjkzIDAuMDQ5IDAuMjQ1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMjY1IDkuOTE0bDAuNzE4LTAuMjE4IDAuMDczIDAuMjM5LTAuNzE4IDAuMjE4LTAuMDczLTAuMjM5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjczNCA2LjA4OWwtMC43MTggMC4yMTgtMC4wNzMtMC4yMzkgMC43MTgtMC4yMTggMC4wNzMgMC4yMzl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41OCAxMC43OTZsLTAuMDk2LTAuMjMxIDEuMzg2LTAuNTc0IDAuMDk2IDAuMjMxLTEuMzg2IDAuNTc0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjQxOSA1LjIwN2wwLjA5NiAwLjIzMS0xLjM4NiAwLjU3NC0wLjA5Ni0wLjIzMSAxLjM4Ni0wLjU3NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjg4OCAxMS40MWwtMC4xMTgtMC4yMiAwLjY2MS0wLjM1NCAwLjExOCAwLjIyLTAuNjYxIDAuMzU0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjExNiA0LjU5bDAuMTE4IDAuMjItMC42NjEgMC4zNTQtMC4xMTgtMC4yMiAwLjY2MS0wLjM1NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjgxMSAxNC4yMzJsLTAuMjItMC4xMTggMC4zNTQtMC42NjEgMC4yMiAwLjExOC0wLjM1NCAwLjY2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4xODkgMS43NjdsMC4yMiAwLjExOC0wLjM1MyAwLjY2MS0wLjIyLTAuMTE4IDAuMzUzLTAuNjYxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMjA3IDE0LjQxOWwwLjU3NC0xLjM4NiAwLjIzMSAwLjA5Ni0wLjU3NCAxLjM4Ni0wLjIzMS0wLjA5NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC43OTUgMS41OGwtMC41NzQgMS4zODYtMC4yMzEtMC4wOTYgMC41NzQtMS4zODYgMC4yMzEgMC4wOTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4wODggMTQuNzM1bC0wLjIzOS0wLjA3MyAwLjIxOC0wLjcxOCAwLjIzOSAwLjA3My0wLjIxOCAwLjcxOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjkxMiAxLjI2NGwwLjIzOSAwLjA3My0wLjIxOCAwLjcxOC0wLjIzOS0wLjA3MyAwLjIxOC0wLjcxOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljc1NyAxNC44ODhsLTAuMjQ1LTAuMDQ5IDAuMjkzLTEuNDcxIDAuMjQ1IDAuMDQ5LTAuMjkzIDEuNDcxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjQzIDEuMTA5bDAuMjQ1IDAuMDQ5LTAuMjkzIDEuNDcxLTAuMjQ1LTAuMDQ5IDAuMjkzLTEuNDcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDh2MCAwYzAgMi4zNjktMS4wMzEgNC41LTIuNjY5IDUuOTYzLTIuMDUzIDEtMy45NjYgMC4zLTQuNTk3LTAuMTM3IDIuMDE2LTAuNDQxIDMuNTM3LTIuODc4IDMuNTM3LTUuODI1cy0xLjUyMi01LjM4NC0zLjUzNy01LjgyOGMwLjYzNC0wLjQzOCAyLjU0Ny0xLjEzNyA0LjU5Ny0wLjEzOCAxLjYzNyAxLjQ2NiAyLjY2OSAzLjU5NyAyLjY2OSA1Ljk2NnYwIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zNjYgMy40OTFjLTAuODg0IDEuMDQ0LTEuNDU2IDIuNTg3LTEuNDk0IDQuMzIyIDAgMC4wMDMgMCAwLjM3MiAwIDAuMzc4IDAuMDM4IDEuNzMxIDAuNjEzIDMuMjc1IDEuNDk3IDQuMzE5IDEuMTQ3IDEuNDkxIDIuODUzIDIuNDM0IDQuNzU5IDIuNDM0IDEuMTcyIDAgMi4yNjktMC4zNTYgMy4yMDYtMC45NzgtMS40MTkgMS4yNjYtMy4yODcgMi4wMzQtNS4zMzQgMi4wMzQtMC4xMjggMC0wLjI1Ni0wLjAwMy0wLjM4MS0wLjAwOS00LjI0MS0wLjItNy42MTktMy43LTcuNjE5LTcuOTkxIDAtNC40MTkgMy41ODEtOCA4LTggMC4wMDkgMCAwLjAxOSAwIDAuMDMxIDAgMi4wMzcgMC4wMDYgMy44OTQgMC43NzUgNS4zMDMgMi4wMzgtMC45MzgtMC42MjItMi4wMzQtMC45ODEtMy4yMDYtMC45ODEtMS45MDYgMC0zLjYxMiAwLjk0NC00Ljc2MyAyLjQzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjE1NiA5LjIxMWMtMC4yMTMtMC4yMS0wLjY4Ni0wLjMyMS0xLjQwNi0wLjMzMS0wLjQ4Ny0wLjAwNS0xLjA3MyAwLjAzOC0xLjY5IDAuMTI0LTAuMjc2LTAuMTU5LTAuNTYxLTAuMzMzLTAuNzg0LTAuNTQyLTAuNjAxLTAuNTYxLTEuMTAzLTEuMzQtMS40MTUtMi4xOTcgMC4wMjAtMC4wODAgMC4wMzgtMC4xNSAwLjA1NC0wLjIyMiAwIDAgMC4zMzktMS45MjMgMC4yNDktMi41NzMtMC4wMTItMC4wODktMC4wMjAtMC4xMTUtMC4wNDQtMC4xODRsLTAuMDI5LTAuMDc2Yy0wLjA5Mi0wLjIxMi0wLjI3My0wLjQzNy0wLjU1Ni0wLjQyNWwtMC4xNzEtMC4wMDVjLTAuMzE2IDAtMC41NzMgMC4xNjEtMC42NCAwLjQwMy0wLjIwNSAwLjc1NyAwLjAwNyAxLjg4OSAwLjM5IDMuMzU1bC0wLjA5OCAwLjIzOWMtMC4yNzUgMC42Ny0wLjYxOSAxLjM0NS0wLjkyMyAxLjk0bC0wLjA0MCAwLjA3N2MtMC4zMiAwLjYyNi0wLjYxIDEuMTU3LTAuODczIDEuNjA3bC0wLjI3MSAwLjE0NGMtMC4wMjAgMC4wMTAtMC40ODUgMC4yNTctMC41OTQgMC4zMjMtMC45MjYgMC41NTMtMS41MzkgMS4xOC0xLjY0MSAxLjY3OC0wLjAzMiAwLjE1OS0wLjAwOCAwLjM2MiAwLjE1NiAwLjQ1NmwwLjI2MyAwLjEzMmMwLjExNCAwLjA1NyAwLjIzNCAwLjA4NiAwLjM1NyAwLjA4NiAwLjY1OSAwIDEuNDI1LTAuODIxIDIuNDgtMi42NjIgMS4yMTgtMC4zOTYgMi42MDQtMC43MjYgMy44MTktMC45MDggMC45MjYgMC41MjEgMi4wNjUgMC44ODMgMi43ODMgMC44ODMgMC4xMjggMCAwLjIzOC0wLjAxMiAwLjMyNy0wLjAzNiAwLjEzOC0wLjAzNyAwLjI1NC0wLjExNSAwLjMyNS0wLjIyMiAwLjEzOS0wLjIxIDAuMTY4LTAuNDk5IDAuMTMtMC43OTUtMC4wMTEtMC4wODgtMC4wODEtMC4xOTYtMC4xNTctMC4yNzF6TTMuMzA3IDEyLjcyYzAuMTItMC4zMjkgMC41OTYtMC45NzkgMS4zLTEuNTU2IDAuMDQ0LTAuMDM2IDAuMTUzLTAuMTM4IDAuMjUzLTAuMjMzLTAuNzM2IDEuMTc0LTEuMjI5IDEuNjQyLTEuNTUzIDEuNzg4ek03LjQ3NiAzLjEyYzAuMjEyIDAgMC4zMzMgMC41MzQgMC4zNDMgMS4wMzVzLTAuMTA3IDAuODUzLTAuMjUyIDEuMTEzYy0wLjEyLTAuMzg1LTAuMTc5LTAuOTkyLTAuMTc5LTEuMzg5IDAgMC0wLjAwOS0wLjc1OSAwLjA4OC0wLjc1OXYwek02LjIzMiA5Ljk2MWMwLjE0OC0wLjI2NCAwLjMwMS0wLjU0MyAwLjQ1OC0wLjgzOSAwLjM4My0wLjcyNCAwLjYyNC0xLjI5IDAuODA0LTEuNzU1IDAuMzU4IDAuNjUxIDAuODA0IDEuMjA1IDEuMzI4IDEuNjQ5IDAuMDY1IDAuMDU1IDAuMTM1IDAuMTExIDAuMjA3IDAuMTY2LTEuMDY2IDAuMjExLTEuOTg3IDAuNDY3LTIuNzk4IDAuNzc5djB6TTEyLjk1MiA5LjkwMWMtMC4wNjUgMC4wNDEtMC4yNTEgMC4wNjQtMC4zNyAwLjA2NC0wLjM4NiAwLTAuODY0LTAuMTc2LTEuNTMzLTAuNDY0IDAuMjU3LTAuMDE5IDAuNDkzLTAuMDI5IDAuNzA1LTAuMDI5IDAuMzg3IDAgMC41MDItMC4wMDIgMC44OCAwLjA5NXMwLjM4MyAwLjI5MyAwLjMxOCAwLjMzM3YwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSAzLjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNy43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMy41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoMTEuNWMwLjY4OSAwIDEuMjUtMC41NjEgMS4yNS0xLjI1di05Ljc1YzAtMC4yMjQtMC4wNjgtMC42MTUtMC42NTktMS40MjF2MHpNMTIuMjcxIDIuNzI5YzAuNDggMC40OCAwLjg1NiAwLjkxMiAxLjEzNCAxLjI3MWgtMi40MDZ2LTIuNDA1YzAuMzU5IDAuMjc4IDAuNzkyIDAuNjU0IDEuMjcxIDEuMTM0djB6TTE0IDE0Ljc1YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTExLjVjLTAuMTM1IDAtMC4yNS0wLjExNC0wLjI1LTAuMjV2LTEzLjVjMC0wLjEzNSAwLjExNS0wLjI1IDAuMjUtMC4yNSAwIDAgNy43NDktMCA3Ljc1IDB2My41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMy41djkuNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZU9wZW5vZmZpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzg1IDcuMzdjLTAuOTQ4LTAuNDQ4LTIuMTU2LTAuNTM4LTMuMDQ0IDAuMDk1IDEuMDgwLTAuMTAzIDIuMjY1IDAuMDc2IDMuMDQ5IDAuODkzIDAuNzUtMC44NjEgMS45MzktMS4wMjIgMy4wMTUtMC45MzMtMC44OTgtMC41OTYtMi4wODItMC41MTYtMy4wMTktMC4wNTR2MHpNMTAuNDAxIDkuNDY1Yy0xLjA2OC0wLjAyNS0yLjEwMSAwLjM2Mi0yLjk4NiAwLjkzOS0xLjY3NS0wLjcxMi0zLjc5My0wLjU4LTUuMjE5IDAuNjA5IDAuNDExLTAuMDE1IDAuODEzLTAuMTE2IDEuMjItMC4xNjkgMS40ODctMC4xNDggMy4wNzIgMC4yMjEgNC4xOTYgMS4yNDcgMC40NjUtMC42OCAxLjExOS0xLjIyMyAxLjg3LTEuNTYxIDAuOTg2LTAuNDc3IDIuMDk2LTAuNTI2IDMuMTY5LTAuNTM5LTAuNjUxLTAuNDQ4LTEuNDc4LTAuNTMxLTIuMjQ5LTAuNTI2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjM0MSAzLjU3OWMtMC4zNDctMC40NzMtMC44MzEtMS4wMjctMS4zNjItMS41NThzLTEuMDg1LTEuMDE1LTEuNTU4LTEuMzYyYy0wLjgwNi0wLjU5MS0xLjE5Ny0wLjY1OS0xLjQyMS0wLjY1OWgtNy43NWMtMC42ODkgMC0xLjI1IDAuNTYxLTEuMjUgMS4yNXYxMy41YzAgMC42ODkgMC41NjEgMS4yNSAxLjI1IDEuMjVoMTEuNWMwLjY4OSAwIDEuMjUtMC41NjEgMS4yNS0xLjI1di05Ljc1YzAtMC4yMjQtMC4wNjgtMC42MTUtMC42NTktMS40MjF2MHpNMTIuMjcxIDIuNzI5YzAuNDggMC40OCAwLjg1NiAwLjkxMiAxLjEzNCAxLjI3MWgtMi40MDZ2LTIuNDA1YzAuMzU5IDAuMjc4IDAuNzkyIDAuNjU0IDEuMjcxIDEuMTM0djB6TTE0IDE0Ljc1YzAgMC4xMzYtMC4xMTQgMC4yNS0wLjI1IDAuMjVoLTExLjVjLTAuMTM1IDAtMC4yNS0wLjExNC0wLjI1LTAuMjV2LTEzLjVjMC0wLjEzNSAwLjExNS0wLjI1IDAuMjUtMC4yNSAwIDAgNy43NDktMCA3Ljc1IDB2My41YzAgMC4yNzYgMC4yMjQgMC41IDAuNSAwLjVoMy41djkuNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45OTcgNy40MzZoMC42OTFsLTAuNzk3IDMuNTM0LTEuMDM2LTQuOTY5aC0xLjY2NWwtMS4yMDUgNC45NjktMC45MDMtNC45NjloLTEuNzQxbDEuNzY3IDcuOTk4aDEuNzAxbDEuMTkyLTQuNzMgMS4wNjYgNC43M2gxLjU2OGwyLjAyNS03Ljk5OGgtMi42NjN2MS40MzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMzQxIDMuNTc5Yy0wLjM0Ny0wLjQ3My0wLjgzMS0xLjAyNy0xLjM2Mi0xLjU1OHMtMS4wODUtMS4wMTUtMS41NTgtMS4zNjJjLTAuODA2LTAuNTkxLTEuMTk3LTAuNjU5LTEuNDIxLTAuNjU5aC03Ljc1Yy0wLjY4OSAwLTEuMjUgMC41NjEtMS4yNSAxLjI1djEzLjVjMCAwLjY4OSAwLjU2MSAxLjI1IDEuMjUgMS4yNWgxMS41YzAuNjg5IDAgMS4yNS0wLjU2MSAxLjI1LTEuMjV2LTkuNzVjMC0wLjIyNC0wLjA2OC0wLjYxNS0wLjY1OS0xLjQyMXYwek0xMi4yNzEgMi43MjljMC40OCAwLjQ4IDAuODU2IDAuOTEyIDEuMTM0IDEuMjcxaC0yLjQwNnYtMi40MDVjMC4zNTkgMC4yNzggMC43OTIgMC42NTQgMS4yNzEgMS4xMzR2MHpNMTQgMTQuNzVjMCAwLjEzNi0wLjExNCAwLjI1LTAuMjUgMC4yNWgtMTEuNWMtMC4xMzUgMC0wLjI1LTAuMTE0LTAuMjUtMC4yNXYtMTMuNWMwLTAuMTM1IDAuMTE1LTAuMjUgMC4yNS0wLjI1IDAgMCA3Ljc0OS0wIDcuNzUgMHYzLjVjMCAwLjI3NiAwLjIyNCAwLjUgMC41IDAuNWgzLjV2OS43NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1GaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNjEgNmgtMi4xMTRsLTEuNDk2IDIuMjA0LTEuNDk2LTIuMjA0aC0yLjExNGwyLjUzNCAzLjc4OC0yLjg1OSA0LjIxMmgzLjkzNXYtMS40MzFoLTAuNzg0bDAuNzg0LTEuMTcyIDEuNzQxIDIuNjAzaDIuMTk0bC0yLjg1OS00LjIxMiAyLjUzNC0zLjc4OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4zNDEgMy41NzljLTAuMzQ3LTAuNDczLTAuODMxLTEuMDI3LTEuMzYyLTEuNTU4cy0xLjA4NS0xLjAxNS0xLjU1OC0xLjM2MmMtMC44MDYtMC41OTEtMS4xOTctMC42NTktMS40MjEtMC42NTloLTcuNzVjLTAuNjg5IDAtMS4yNSAwLjU2MS0xLjI1IDEuMjV2MTMuNWMwIDAuNjg5IDAuNTYxIDEuMjUgMS4yNSAxLjI1aDExLjVjMC42ODkgMCAxLjI1LTAuNTYxIDEuMjUtMS4yNXYtOS43NWMwLTAuMjI0LTAuMDY4LTAuNjE1LTAuNjU5LTEuNDIxdjB6TTEyLjI3MSAyLjcyOWMwLjQ4IDAuNDggMC44NTYgMC45MTIgMS4xMzQgMS4yNzFoLTIuNDA2di0yLjQwNWMwLjM1OSAwLjI3OCAwLjc5MiAwLjY1NCAxLjI3MSAxLjEzNHYwek0xNCAxNC43NWMwIDAuMTM2LTAuMTE0IDAuMjUtMC4yNSAwLjI1aC0xMS41Yy0wLjEzNSAwLTAuMjUtMC4xMTQtMC4yNS0wLjI1di0xMy41YzAtMC4xMzUgMC4xMTUtMC4yNSAwLjI1LTAuMjUgMCAwIDcuNzQ5LTAgNy43NSAwdjMuNWMwIDAuMjc2IDAuMjI0IDAuNSAwLjUgMC41aDMuNXY5Ljc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUxpYnJlb2ZmaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMzU0IDAuMzU0Yy0wLjE5NC0wLjE5NC0wLjU3OS0wLjM1NC0wLjg1NC0wLjM1NGgtNmMtMC4yNzUgMC0wLjUgMC4yMjUtMC41IDAuNXYxNWMwIDAuMjc1IDAuMjI1IDAuNSAwLjUgMC41aDEyYzAuMjc1IDAgMC41LTAuMjI1IDAuNS0wLjV2LTljMC0wLjI3NS0wLjE1OS0wLjY1OS0wLjM1NC0wLjg1NGwtNS4yOTMtNS4yOTN6TTEzIDE1aC0xMXYtMTRoNS40ODdjMC4wNDYgMC4wMDggMC4xMzEgMC4wNDMgMC4xNjkgMC4wNzBsNS4yNzQgNS4yNzRjMC4wMjcgMC4wMzggMC4wNjIgMC4xMjMgMC4wNzAgMC4xNjl2OC40ODd6TTEzLjUgMGgtM2MtMC4yNzUgMC0wLjM0MSAwLjE1OS0wLjE0NiAwLjM1NGwzLjI5MyAzLjI5M2MwLjE5NCAwLjE5NCAwLjM1NCAwLjEyOSAwLjM1NC0wLjE0NnYtM2MwLTAuMjc1LTAuMjI1LTAuNS0wLjUtMC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUh0bWxGaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAuOTQ2IDBsMS4yODQgMTQuNCA1Ljc2MiAxLjYgNS43NzctMS42MDIgMS4yODYtMTQuMzk4aC0xNC4xMDh6TTEyLjI2IDQuNzFoLTYuNzU4bDAuMTYxIDEuODA5aDYuNDM3bC0wLjQ4NSA1LjQyMi0zLjYyMyAxLjAwNC0zLjYxOC0xLjAwNC0wLjI0Ny0yLjc3NGgxLjc3M2wwLjEyNiAxLjQxIDEuOTY3IDAuNTMgMC4wMDQtMC4wMDEgMS45NjgtMC41MzEgMC4yMDQtMi4yOWgtNi4xMjFsLTAuNDc2LTUuMzQxaDguODQ3bC0wLjE1OCAxLjc2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1IdG1sRml2ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmVyc2lvblwiOlwiMS4xXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMC45NDYgMGwxLjI4NCAxNC40IDUuNzYyIDEuNiA1Ljc3Ny0xLjYwMiAxLjI4Ni0xNC4zOThoLTE0LjEwOHpNMTIuNjY4IDEzLjQ4MmwtNC42NDQgMS4yODd2MC4wMDdsLTAuMDEyLTAuMDA0LTAuMDEyIDAuMDA0di0wLjAwN2wtNC42NDQtMS4yODctMS4wOTgtMTIuMzA0aDExLjUwOGwtMS4wOTggMTIuMzA0ek0xMC4xNjggOC4yODRsLTAuMjA0IDIuMjktMS45NzIgMC41MzItMS45NjctMC41My0wLjEyNi0xLjQxaC0xLjc3M2wwLjI0NyAyLjc3NCAzLjYyNiAxLjAwMyAzLjYxNS0xLjAwMyAwLjQ4NS01LjQyMmgtNi40MzdsLTAuMTYxLTEuODA5aDYuNzU4bDAuMTU4LTEuNzY2aC04Ljg0N2wwLjQ3NyA1LjM0MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gSW1Dc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZlcnNpb25cIjpcIjEuMVwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMzgxIDAuNzU4bC0wLjUzNyAyLjY4NmgxMC45MzRsLTAuMzQyIDEuNzM1aC0xMC45NGwtMC41MyAyLjY4NmgxMC45MzNsLTAuNjEgMy4wNjMtNC40MDYgMS40Ni0zLjgxOS0xLjQ2IDAuMjYxLTEuMzI5aC0yLjY4NmwtMC42MzkgMy4yMjQgNi4zMTYgMi40MTcgNy4yODEtMi40MTcgMi40MDMtMTIuMDY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS42OTggNy4yODdsLTYuOTg2LTYuOTg2Yy0wLjQwMi0wLjQwMi0xLjA1NS0wLjQwMi0xLjQ1NyAwbC0xLjYyMyAxLjYyMyAxLjIyMSAxLjIyMWMwLjE5Ni0wLjA5NCAwLjQxNS0wLjE0NiAwLjY0Ny0wLjE0NiAwLjgyOCAwIDEuNSAwLjY3MiAxLjUgMS41IDAgMC4yMzItMC4wNTMgMC40NTEtMC4xNDYgMC42NDdsMiAyYzAuMTk2LTAuMDk0IDAuNDE1LTAuMTQ2IDAuNjQ3LTAuMTQ2IDAuODI4IDAgMS41IDAuNjcyIDEuNSAxLjVzLTAuNjcyIDEuNS0xLjUgMS41LTEuNS0wLjY3Mi0xLjUtMS41YzAtMC4yMzIgMC4wNTMtMC40NTEgMC4xNDYtMC42NDdsLTItMmMtMC4wNDggMC4wMjMtMC4wOTcgMC4wNDMtMC4xNDcgMC4wNjF2NC4xNzFjMC41ODMgMC4yMDYgMSAwLjc2MSAxIDEuNDE0IDAgMC44MjgtMC42NzIgMS41LTEuNSAxLjVzLTEuNS0wLjY3Mi0xLjUtMS41YzAtMC42NTMgMC40MTctMS4yMDggMS0xLjQxNHYtNC4xNzFjLTAuNTgzLTAuMjA2LTEtMC43NjEtMS0xLjQxNCAwLTAuMjMyIDAuMDUzLTAuNDUxIDAuMTQ2LTAuNjQ3bC0xLjIyMS0xLjIyMS00LjYyMyA0LjYyM2MtMC40MDIgMC40MDMtMC40MDIgMS4wNTUgMCAxLjQ1OGw2Ljk4NiA2Ljk4NmMwLjQwMiAwLjQwMiAxLjA1NCAwLjQwMiAxLjQ1NyAwbDYuOTUzLTYuOTUzYzAuNDAyLTAuNDAzIDAuNDAyLTEuMDU1LTAtMS40NTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltQ29kZXBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC43NzcgNS43NTFsLTctNC42NjdjLTAuMTY4LTAuMTEyLTAuMzg3LTAuMTEyLTAuNTU1IDBsLTcgNC42NjdjLTAuMTM5IDAuMDkzLTAuMjIzIDAuMjQ5LTAuMjIzIDAuNDE2djQuNjY3YzAgMC4xNjcgMC4wODQgMC4zMjMgMC4yMjMgMC40MTZsNyA0LjY2N2MwLjA4NCAwLjA1NiAwLjE4MSAwLjA4NCAwLjI3NyAwLjA4NHMwLjE5My0wLjAyOCAwLjI3Ny0wLjA4NGw3LTQuNjY3YzAuMTM5LTAuMDkzIDAuMjIzLTAuMjQ5IDAuMjIzLTAuNDE2di00LjY2N2MwLTAuMTY3LTAuMDg0LTAuMzIzLTAuMjIzLTAuNDE2ek03LjUgMTAuMjMybC0yLjU5OS0xLjczMiAyLjU5OS0xLjczMiAyLjU5OSAxLjczMi0yLjU5OSAxLjczMnpNOCA1Ljg5OXYtMy40NjVsNS41OTkgMy43MzItMi41OTkgMS43MzItMy0yek03IDUuODk5bC0zIDItMi41OTktMS43MzIgNS41OTktMy43MzJ2My40NjV6TTMuMDk5IDguNWwtMi4wOTkgMS4zOTl2LTIuNzk4bDIuMDk5IDEuMzk5ek00IDkuMTAxbDMgMnYzLjQ2NWwtNS41OTktMy43MzIgMi41OTktMS43MzJ6TTggMTEuMTAxbDMtMiAyLjU5OSAxLjczMi01LjU5OSAzLjczMnYtMy40NjV6TTExLjkwMSA4LjVsMi4wOTktMS4zOTl2Mi43OThsLTIuMDk5LTEuMzk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBJbVN2ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDYuNWMtMC40NDQgMC0wLjg0MyAwLjE5My0xLjExOCAwLjVoLTIuOTY4bDIuMDk5LTIuMDk5YzAuNDExIDAuMDIzIDAuODMtMC4xMjMgMS4xNDQtMC40MzcgMC41ODYtMC41ODYgMC41ODYtMS41MzYgMC0yLjEyMXMtMS41MzYtMC41ODYtMi4xMjEgMGMtMC4zMTQgMC4zMTQtMC40NiAwLjczMy0wLjQzNyAxLjE0NGwtMi4wOTkgMi4wOTl2LTIuOTY4YzAuMzA3LTAuMjc1IDAuNS0wLjY3NCAwLjUtMS4xMTggMC0wLjgyOC0wLjY3Mi0xLjUtMS41LTEuNXMtMS41IDAuNjcyLTEuNSAxLjVjMCAwLjQ0NCAwLjE5MyAwLjg0MyAwLjUgMS4xMTh2Mi45NjhsLTIuMDk5LTIuMDk5YzAuMDIzLTAuNDExLTAuMTIzLTAuODMtMC40MzctMS4xNDQtMC41ODYtMC41ODYtMS41MzYtMC41ODYtMi4xMjEgMHMtMC41ODYgMS41MzYgMCAyLjEyMWMwLjMxNCAwLjMxNCAwLjczMyAwLjQ2IDEuMTQ0IDAuNDM3bDIuMDk5IDIuMDk5aC0yLjk2OGMtMC4yNzUtMC4zMDctMC42NzQtMC41LTEuMTE4LTAuNS0wLjgyOCAwLTEuNSAwLjY3Mi0xLjUgMS41czAuNjcyIDEuNSAxLjUgMS41YzAuNDQ0IDAgMC44NDMtMC4xOTMgMS4xMTgtMC41aDIuOTY4bC0yLjA5OSAyLjA5OWMtMC40MTEtMC4wMjMtMC44MyAwLjEyMy0xLjE0NCAwLjQzNy0wLjU4NiAwLjU4Ni0wLjU4NiAxLjUzNiAwIDIuMTIxczEuNTM2IDAuNTg2IDIuMTIxIDBjMC4zMTQtMC4zMTQgMC40Ni0wLjczMyAwLjQzNy0xLjE0NGwyLjA5OS0yLjA5OXYyLjk2OGMtMC4zMDcgMC4yNzUtMC41IDAuNjc0LTAuNSAxLjExOCAwIDAuODI4IDAuNjcyIDEuNSAxLjUgMS41czEuNS0wLjY3MiAxLjUtMS41YzAtMC40NDQtMC4xOTMtMC44NDMtMC41LTEuMTE4di0yLjk2OGwyLjA5OSAyLjA5OWMtMC4wMjMgMC40MTEgMC4xMjMgMC44MyAwLjQzNyAxLjE0NCAwLjU4NiAwLjU4NiAxLjUzNiAwLjU4NiAyLjEyMSAwczAuNTg2LTEuNTM2IDAtMi4xMjFjLTAuMzE0LTAuMzE0LTAuNzMzLTAuNDYtMS4xNDQtMC40MzdsLTIuMDk5LTIuMDk5aDIuOTY4YzAuMjc1IDAuMzA3IDAuNjc0IDAuNSAxLjExOCAwLjUgMC44MjggMCAxLjUtMC42NzIgMS41LTEuNXMtMC42NzItMS41LTEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEltSWNvTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2ZXJzaW9uXCI6XCIxLjFcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjA1NSA4YzAtMS4wMjIgMC44MjktMS44NTEgMS44NTEtMS44NTFzMS44NTEgMC44MjkgMS44NTEgMS44NTFjMCAxLjAyMi0wLjgyOSAxLjg1MS0xLjg1MSAxLjg1MXMtMS44NTEtMC44MjktMS44NTEtMS44NTF6TTggMGMtNC40MTggMC04IDMuNTgyLTggOHMzLjU4MiA4IDggOGM0LjQxOCAwIDgtMy41ODIgOC04cy0zLjU4Mi04LTgtOHpNNS45MjggMTQuOTg5Yy0yLjQwNi0xLjQtNC4wMjMtNC4wMDUtNC4wMjMtNi45ODlzMS42MTctNS41ODkgNC4wMjMtNi45ODljMi40MDYgMS4zOTkgNC4wMjUgNC4wMDUgNC4wMjUgNi45ODlzLTEuNjE4IDUuNTg5LTQuMDI1IDYuOTg5elwifX1dfSkocHJvcHMpO1xufTtcbiIsIi8qKiBBIHR5cGUgZGVmaW5pdGlvbiBmb3IgYW4gRW52aXJvbm1lbnQuICovXHJcbmV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0ge1xyXG4gICAgLyoqIFN0cmluZyB3aXRoaW4gdGhlIGhvc3RuYW1lICovXHJcbiAgICBob3N0TmFtZVNlZ21lbnQ6IHN0cmluZztcclxuXHJcbiAgICAvKiogVXNlci1mYWNpbmcgbGFiZWwgb2YgdGhlIGVudmlyb25tZW50ICovXHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG59O1xyXG5cclxuLyoqIEVhY2ggZW52aXJvbm1lbnQsIGFuZCB0aGUgaG9zdG5hbWUgc2VnbWVudCBmb3Igd2hpY2ggdG8gc2VhcmNoICovXHJcbmV4cG9ydCBjb25zdCBlbnZpcm9ubWVudHM6IEVudmlyb25tZW50W10gPSBbXHJcbiAgICB7IGhvc3ROYW1lU2VnbWVudDogXCJsb2NhbGhvc3RcIiwgbGFiZWw6IFwiTG9jYWxob3N0XCIgfSxcclxuICAgIHsgaG9zdE5hbWVTZWdtZW50OiBcIjEyN1wiLCBsYWJlbDogXCJMb2NhbGhvc3RcIiB9LFxyXG4gICAgeyBob3N0TmFtZVNlZ21lbnQ6IFwiZGV2XCIsIGxhYmVsOiBcIkRldmVsb3BtZW50XCIgfSxcclxuICAgIHsgaG9zdE5hbWVTZWdtZW50OiBcInN0Z1wiLCBsYWJlbDogXCJTdGFnaW5nXCIgfSxcclxuICAgIHsgaG9zdE5hbWVTZWdtZW50OiBcInVhdFwiLCBsYWJlbDogXCJVQVRcIiB9LFxyXG4gICAgeyBob3N0TmFtZVNlZ21lbnQ6IFwidGVtcFwiLCBsYWJlbDogXCJUZW1wXCIgfSxcclxuXTtcclxuXHJcbi8qKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBQcm9kdWN0aW9uICovXHJcbmV4cG9ydCBjb25zdCBpc1Byb2R1Y3Rpb24gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT09IFwicG9ydGFsLmJpc3RlY2guY28udWtcIjtcclxuXHJcbi8qKiBSZW5kZXJzIGEgY29sb3VyZWQgYmFubmVyIGZvciBub24tcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgKi9cclxuZXhwb3J0IGNvbnN0IEVudmlyb25tZW50QmFubmVyID0gKCkgPT4ge1xyXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudHMuZmluZCgoeCkgPT4gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLmluY2x1ZGVzKHguaG9zdE5hbWVTZWdtZW50KSk7XHJcblxyXG4gICAgaWYgKCFlbnZpcm9ubWVudCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJlbnZpcm9ubWVudC1iYW5uZXJcIiBkYXRhLWVudmlyb25tZW50LWlkPXtlbnZpcm9ubWVudC5ob3N0TmFtZVNlZ21lbnR9PlxyXG4gICAgICAgICAgICB7ZW52aXJvbm1lbnQubGFiZWx9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgTWVzc2FnZUJhciwgTWVzc2FnZUJhclR5cGUgfSBmcm9tIFwiQGZsdWVudHVpL3JlYWN0XCI7XHJcbmltcG9ydCB7IFN1Ym1pc3Npb25TdGF0ZSB9IGZyb20gXCIuLi9UeXBlcy9TdWJtaXNzaW9uU3RhdGVcIjtcclxuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgSW1TcGlubmVyMiB9IGZyb20gXCJyZWFjdC1pY29ucy9pbVwiO1xyXG5pbXBvcnQgeyBpc1Byb2R1Y3Rpb24gfSBmcm9tIFwiLi9FbnZpcm9ubWVudEJhbm5lclwiO1xyXG5cclxuLyoqIFNob3dzIHRoZSBsYXRlc3Qgc3VjY2VzcyBhbmQgZXJyb3Igbm90aWZpY2F0aW9ucyAqL1xyXG5leHBvcnQgY29uc3QgTm90aWZpY2F0aW9uczogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBsYXRlc3RFcnJvcnMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmxhdGVzdEVycm9ycyk7XHJcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5ub3RpZmljYXRpb25zKTtcclxuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jdXJyZW50UGFnZSk7XHJcbiAgICBjb25zdCBpc0RpcnR5ID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pc0RpcnR5KTtcclxuICAgIGNvbnN0IHNhdmVEaXJ0eVBhZ2UgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnNhdmVEaXJ0eVBhZ2UpO1xyXG4gICAgY29uc3QgW3N1Ym1pc3Npb25TdGF0ZSwgc2V0U3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oeyBzdGF0ZTogXCJpZGxlXCIgfSk7XHJcblxyXG4gICAgY29uc3QgYXBwbGljYWJsZU5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihcclxuICAgICAgICAobm90aWZpY2F0aW9uKSA9PlxyXG4gICAgICAgICAgICBuZXcgRGF0ZSgpIDwgbm90aWZpY2F0aW9uLmRpc3BsYXlVbnRpbCAmJlxyXG4gICAgICAgICAgICBub3RpZmljYXRpb24uZGlzcGxheWVkT25SZWxhdGl2ZVVybCA9PT0gYCR7Y3VycmVudFBhZ2UucGF0aH0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBTSE9XX01BWF9FUlJPUlMgPSAyO1xyXG4gICAgY29uc3QgU0hPV19NQVhfTk9USUZJQ0FUSU9OUyA9IDI7XHJcblxyXG4gICAgY29uc3QgaW52YWxpZFN1Ym1pc3Npb25QcmVyZXF1aXNpdGVzID0gc2F2ZURpcnR5UGFnZT8uc3VibWlzc2lvblByZXJlcXVpc2l0ZXM/LmZpbHRlcihcclxuICAgICAgICAocHJlcmVxdWlzaXQpID0+ICFwcmVyZXF1aXNpdC5pc1ZhbGlkKClcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGRhdGEtaGFzLWJhbm5lcj17IWlzUHJvZHVjdGlvbn0+XHJcbiAgICAgICAgICAgIHtsYXRlc3RFcnJvcnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgbGF0ZXN0RXJyb3JzXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoXywgaSkgPT4gaSA8IFNIT1dfTUFYX0VSUk9SUylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChlcnJvciwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVzc2FnZUJhciBtZXNzYWdlQmFyVHlwZT17TWVzc2FnZUJhclR5cGUuZXJyb3J9IGtleT17aX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXJyb3IubWVzc2FnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NZXNzYWdlQmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICB7YXBwbGljYWJsZU5vdGlmaWNhdGlvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgICAgICAgYXBwbGljYWJsZU5vdGlmaWNhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChfLCBpKSA9PiBpIDwgU0hPV19NQVhfTk9USUZJQ0FUSU9OUylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChub3RpZmljYXRpb24sIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPE1lc3NhZ2VCYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcz17eyBpbm5lclRleHQ6IHsgd2lkdGg6IFwiMTAwJVwiIH0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VCYXJUeXBlPXtNZXNzYWdlQmFyVHlwZS5zdWNjZXNzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJub3RpZmljYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtZXNzYWdlXCI+e25vdGlmaWNhdGlvbi5tZXNzYWdlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRpc21pc3MtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZGlzcGF0Y2goeyB0eXBlOiBcIlJlbW92ZU5vdGlmaWNhdGlvblwiLCBpZDogbm90aWZpY2F0aW9uLmlkIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L01lc3NhZ2VCYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgIHtpc0RpcnR5ICYmIHNhdmVEaXJ0eVBhZ2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPE1lc3NhZ2VCYXJcclxuICAgICAgICAgICAgICAgICAgICBrZXk9ezF9XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUJhclR5cGU9e01lc3NhZ2VCYXJUeXBlLndhcm5pbmd9XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzPXt7IGlubmVyVGV4dDogeyBtYXhIZWlnaHQ6IFwiMzJweFwiIH0gfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IWludmFsaWRTdWJtaXNzaW9uUHJlcmVxdWlzaXRlcz8ubGVuZ3RoID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImlkbGVcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiI1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2FzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcInN1Ym1pdHRpbmdcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2F2ZURpcnR5UGFnZS5zYXZlRnVuY3Rpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0SXNEaXJ0eVwiLCBpc0RpcnR5OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0U2F2ZURpcnR5UGFnZVwiLCBzYXZlRGlydHlQYWdlOiB1bmRlZmluZWQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJBZGRMYXRlc3RFcnJvclwiLCBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImlkbGVcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrIGhlcmUgdG8gc2F2ZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbVNwaW5uZXIyIGNsYXNzTmFtZT1cInNwaW5cIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiBcIjFlbVwiIH19IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbnZhbGlkLXByZXJlcXVpc2l0ZXNcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiBcIjFlbVwiIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnZhbGlkU3VibWlzc2lvblByZXJlcXVpc2l0ZXNbMF0uY3VzdG9tZXJNZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9NZXNzYWdlQmFyPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIHdpZHRoIG9mIGEgZ2l2ZW4gRWxlbWVudC5cclxuICogQHBhcmFtIGVsZW1lbnQgVGhlIEVsZW1lbnQuXHJcbiAqIEByZXR1cm5zIFRoZSB3aWR0aCBvZiB0aGUgRWxlbWVudC5cclxuICovXHJcbmNvbnN0IGdldFdpbmRvd1dpZHRoID0gKCk6IG51bWJlciA9PiB7XHJcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGg7XHJcbn07XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgd2lkdGggb2YgYW4gRWxlbWVudCBhbmQgdXBkYXRlcyBpdCBvbiB3aW5kb3cgcmVzaXplLlxyXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgRWxlbWVudCB0byBnZXQgdGhlIHdpZHRoIG9mLlxyXG4gKiBAcmV0dXJucyBUaGUgd2lkdGggb2YgdGhlIEVsZW1lbnQuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgdXNlV2luZG93V2lkdGggPSAoKSA9PiB7XHJcbiAgICBjb25zdCBbd2luZG93V2lkdGgsIHNldHdpbmRvd1dpZHRoXSA9IHVzZVN0YXRlKGdldFdpbmRvd1dpZHRoKCkpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlUmVzaXplID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBzZXR3aW5kb3dXaWR0aChnZXRXaW5kb3dXaWR0aCgpKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBoYW5kbGVSZXNpemUpO1xyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgaGFuZGxlUmVzaXplKTtcclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICByZXR1cm4gd2luZG93V2lkdGg7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQnJlYWRjcnVtYiB9IGZyb20gXCIuLi9Db21wb25lbnRzL0JyZWFkY3J1bWJcIjtcclxuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0Vycm9yQm91bmRhcnlcIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9ucyB9IGZyb20gXCIuLi9Db21wb25lbnRzL05vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgaXNQcm9kdWN0aW9uIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRW52aXJvbm1lbnRCYW5uZXJcIjtcclxuaW1wb3J0IHsgdXNlV2luZG93V2lkdGggfSBmcm9tIFwiLi4vSG9va3MvdXNlV2luZG93V2lkdGhcIjtcclxuXHJcbi8qKiBBIGJhc2UgcGFnZSBjb21wb25lbnQgZm9yIHJlbmRlcmluZyBwYWdlIGNvbnRlbnQgd2l0aGluICovXHJcbmV4cG9ydCBjb25zdCBCYXNlUGFnZSA9IChwcm9wczogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyB0aXRsZTogc3RyaW5nIH0pID0+IHtcclxuICAgIGNvbnN0IFRBQkxFVF9XSURUSCA9IDEwMjU7XHJcbiAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHVzZVdpbmRvd1dpZHRoKCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9ucyAvPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwYWdlLWNvbnRlbnQgaXMtbW9iaWxlLXdpZHRoXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtaXMtcHJvZHVjdGlvbj17aXNQcm9kdWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3dpbmRvd1dpZHRoIDwgVEFCTEVUX1dJRFRIID8geyBwYWRkaW5nVG9wOiBcIjFlbVwiIH0gOiB7fX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJyZWFkY3J1bWIgLz5cclxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJhc2UtcGFnZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDE+e3Byb3BzLnRpdGxlfTwvaDE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5Pntwcm9wcy5jaGlsZHJlbn08L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuIiwiLyoqIEEgY2xhc3Mgb2YgaGVscGVyIG1ldGhvZHMgZm9yIHRyYW5zb2Zvcm1pbmcgZGF0YSAqL1xyXG5leHBvcnQgY2xhc3MgRGF0ZUhlbHBlciB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm1hdHMgYSBkYXRlIHRvIHRoZSBgZGQvbW0veXl5eSwgSEg6TU1gIGZvcm1hdFxyXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgaW4gZGF0ZSwgbnVtYmVyLCBvciBzdHJpbmcgZm9ybWF0XHJcbiAgICAgKiBAcmV0dXJucyBEYXRlIGZvcm1hdHRlZCB0byBgZGQvbW0veXl5eSwgSEg6TU1gLCBlLmcuIFwiMTgvMDIvMjAyMiwgMTQ6MzJcIlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHRvRGF0ZVN0cmluZyhkYXRlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvTG9jYWxlU3RyaW5nKFwiZW4tR0JcIiwge1xyXG4gICAgICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxyXG4gICAgICAgICAgICBtb250aDogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxyXG4gICAgICAgICAgICBob3VyOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdG9kYXkncyBkYXRlLCB3aXRoIHRoZSB0aW1lIHBhcnQgc2V0IHRvIFwiMDA6MDA6MDBcIi5cclxuICAgICAqIEByZXR1cm5zIFRvZGF5J3MgZGF0ZSwgd2l0aCB0aGUgdGltZSBwYXJ0IHNldCB0byBcIjAwOjAwOjAwXCIuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWlkbmlnaHRUb2RheSgpOiBEYXRlIHtcclxuICAgICAgICBjb25zdCB0b2RheURhdGVDb21wb25lbnQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IERhdGUodG9kYXlEYXRlQ29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdG9tb3Jyb3dzJ3MgZGF0ZSwgd2l0aCB0aGUgdGltZSBwYXJ0IHNldCB0byBcIjAwOjAwOjAwXCIuXHJcbiAgICAgKiBAcmV0dXJucyBUb21vcnJvd3MncyBkYXRlLCB3aXRoIHRoZSB0aW1lIHBhcnQgc2V0IHRvIFwiMDA6MDA6MDBcIi5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRNaWRuaWdodFRvbW9ycm93KCk6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBEYXRlSGVscGVyLmdldE1pZG5pZ2h0VG9kYXkoKTtcclxuICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyAxKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSB0byB0aGUgYGRkL21tL3l5eXlgIGZvcm1hdC5cclxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGluIGRhdGUsIG51bWJlciwgb3Igc3RyaW5nIGZvcm1hdC5cclxuICAgICAqIEByZXR1cm5zIERhdGUgZm9ybWF0dGVkIHRvIGBkZC9tbS95eXl5YC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyB0b0RhdGVPbmx5U3RyaW5nKGRhdGU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9Mb2NhbGVTdHJpbmcoXCJlbi1HQlwiLCB7XHJcbiAgICAgICAgICAgIGRheTogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgICAgIG1vbnRoOiBcIjItZGlnaXRcIixcclxuICAgICAgICAgICAgeWVhcjogXCJudW1lcmljXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSB0byB0aGUgYEhIOk1NYCBmb3JtYXQuXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSBpbiBkYXRlLCBudW1iZXIsIG9yIHN0cmluZyBmb3JtYXQuXHJcbiAgICAgKiBAcmV0dXJucyBEYXRlIGZvcm1hdHRlZCB0byBgSEg6TU1gLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHRvVGltZU9ubHlTdHJpbmcoZGF0ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlKS50b0xvY2FsZVN0cmluZyhcImVuLUdCXCIsIHtcclxuICAgICAgICAgICAgaG91cjogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQWRkcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzIHRvIGEgZGF0ZS5cclxuICAgICAqIEBwYXJhbSBkYXRlIERhdGUuXHJcbiAgICAgKiBAcGFyYW0gc2Vjb25kcyBTZWNvbmRzIHRvIGFkZC5cclxuICAgICAqIEByZXR1cm5zIE5ldyBkYXRlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGFkZFNlY29uZHMoZGF0ZTogRGF0ZSwgc2Vjb25kczogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE51bWJlcihkYXRlKSArIDEwMDAgKiBzZWNvbmRzKTtcclxuICAgIH1cclxufVxyXG4iLCIvLyBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURURcbmltcG9ydCB7IEdlbkljb24gfSBmcm9tICcuLi9saWInO1xuZXhwb3J0IGZ1bmN0aW9uIEZhNTAwUHggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjMgMzQ0LjNjLTYuNS0xNC4yLTYuOS0xOC4zIDcuNC0yMy4xIDI1LjYtOCA4IDkuMiA0My4yIDQ5LjJoLjN2LTkzLjljMS4yLTUwLjIgNDQtOTIuMiA5Ny43LTkyLjIgNTMuOSAwIDk3LjcgNDMuNSA5Ny43IDk2LjggMCA2My40LTYwLjggMTEzLjItMTI4LjUgOTMuMy0xMC41LTQuMi0yLjEtMzEuNyA4LjUtMjguNiA1MyAwIDg5LjQtMTAuMSA4OS40LTY0LjQgMC02MS03Ny4xLTg5LjYtMTE2LjktNDQuNi0yMy41IDI2LjQtMTcuNiA0Mi4xLTE3LjYgMTU3LjYgNTAuNyAzMSAxMTguMyAyMiAxNjAuNC0yMC4xIDI0LjgtMjQuOCAzOC41LTU4IDM4LjUtOTMgMC0zNS4yLTEzLjgtNjguMi0zOC44LTkzLjMtMjQuOC0yNC44LTU3LjgtMzguNS05My4zLTM4LjVzLTY4LjggMTMuOC05My41IDM4LjVjLS4zLjMtMTYgMTYuNS0yMS4yIDIzLjlsLS41LjZjLTMuMyA0LjctNi4zIDkuMS0yMC4xIDYuMS02LjktMS43LTE0LjMtNS44LTE0LjMtMTEuOFYyMGMwLTUgMy45LTEwLjUgMTAuNS0xMC41aDI0MS4zYzguMyAwIDguMyAxMS42IDguMyAxNS4xIDAgMy45IDAgMTUuMS04LjMgMTUuMUgxMzAuM3YxMzIuOWguM2MxMDQuMi0xMDkuOCAyODIuOC0zNiAyODIuOCAxMDguOSAwIDE3OC4xLTI0NC44IDIyMC4zLTMxMC4xIDYyLjh6bTYzLjMtMjYwLjhjLS41IDQuMiA0LjYgMjQuNSAxNC42IDIwLjZDMzA2IDU2LjYgMzg0IDE0NC41IDM5MC42IDE0NC41YzQuOCAwIDIyLjgtMTUuMyAxNC4zLTIyLjgtOTMuMi04OS0yMzQuNS01Ny0yMzguMy0zOC4yek0zOTMgNDE0LjdDMjgzIDUyNC42IDk0IDQ3NS41IDYxIDMxMC41YzAtMTIuMi0zMC40LTcuNC0yOC45IDMuMyAyNCAxNzMuNCAyNDYgMjU2LjkgMzgxLjYgMTIxLjMgNi45LTcuOC0xMi42LTI4LjQtMjAuNy0yMC40ek0yMTMuNiAzMDYuNmMwIDQgNC4zIDcuMyA1LjUgOC41IDMgMyA2LjEgNC40IDguNSA0LjQgMy44IDAgMi42LjIgMjIuMy0xOS41IDE5LjYgMTkuMyAxOS4xIDE5LjUgMjIuMyAxOS41IDUuNCAwIDE4LjUtMTAuNCAxMC43LTE4LjJMMjY1LjYgMjg0bDE4LjItMTguMmM2LjMtNi44LTEwLjEtMjEuOC0xNi4yLTE1LjdMMjQ5LjcgMjY4Yy0xOC42LTE4LjgtMTguNC0xOS41LTIxLjUtMTkuNS01IDAtMTggMTEuNy0xMi40IDE3LjNMMjM0IDI4NGMtMTguMSAxNy45LTIwLjQgMTkuMi0yMC40IDIyLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWNjZXNzaWJsZUljb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIzLjkgMjU1LjhMNDExIDQxMy4xYy0zLjMgNDAuNy02My45IDM1LjEtNjAuNi00LjlsMTAtMTIyLjUtNDEuMSAyLjNjMTAuMSAyMC43IDE1LjggNDMuOSAxNS44IDY4LjUgMCA0MS4yLTE2LjEgNzguNy00Mi4zIDEwNi41bC0zOS4zLTM5LjNjNTcuOS02My43IDEzLjEtMTY3LjItNzQtMTY3LjItMjUuOSAwLTQ5LjUgOS45LTY3LjIgMjZMNzMgMjQzLjJjMjItMjAuNyA1MC4xLTM1LjEgODEuNC00MC4ybDc1LjMtODUuNy00Mi42LTI0LjgtNTEuNiA0NmMtMzAgMjYuOC03MC42LTE4LjUtNDAuNS00NS40bDY4LTYwLjdjOS44LTguOCAyNC4xLTEwLjIgMzUuNS0zLjYgMCAwIDEzOS4zIDgwLjkgMTM5LjUgODEuMSAxNi4yIDEwLjEgMjAuNyAzNiA2LjEgNTIuNkwyODUuNyAyMjlsMTA2LjEtNS45YzE4LjUtMS4xIDMzLjYgMTQuNCAzMi4xIDMyLjd6bS02NC45LTE1NGMyOC4xIDAgNTAuOS0yMi44IDUwLjktNTAuOUM0MDkuOSAyMi44IDM4Ny4xIDAgMzU5IDBjLTI4LjEgMC01MC45IDIyLjgtNTAuOSA1MC45IDAgMjguMSAyMi44IDUwLjkgNTAuOSA1MC45ek0xNzkuNiA0NTYuNWMtODAuNiAwLTEyNy40LTkwLjYtODIuNy0xNTYuMWwtMzkuNy0zOS43QzM2LjQgMjg3IDI0IDMyMC4zIDI0IDM1Ni40YzAgMTMwLjcgMTUwLjcgMjAxLjQgMjUxLjQgMTIyLjVsLTM5LjctMzkuN2MtMTYgMTAuOS0zNS4zIDE3LjMtNTYuMSAxNy4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjY3Vzb2Z0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMi4xIDI1MnYtMWwtNTEuMi02NS44cy0xMiAxLjYtMjUgMTUuMWMtOSA5LjMtMjQyLjEgMjM5LjEtMjQzLjQgMjQwLjktNyAxMCAxLjYgNi44IDE1LjcgMS43LjggMCAxMTQuNS0zNi42IDExNC41LTM2LjYuNS0uNi0uMS0uMS42LS42LS40LTUuMS0uOC0yNi4yLTEtMjcuNy0uNi01LjIgMi4yLTYuOSA3LTguOWw5Mi42LTMzLjhjLjYtLjggODguNS04MS43IDkwLjItODMuM3ptMTYwLjEgMTIwLjFjMTMuMyAxNi4xIDIwLjcgMTMuMyAzMC44IDkuMyAzLjItMS4yIDExNS40LTQ3LjYgMTE3LjgtNDguOSA4LTQuMy0xLjctMTYuNy03LjItMjMuNC0yLjEtMi41LTIwNS4xLTI0NS42LTIwNy4yLTI0OC4zLTkuNy0xMi4yLTE0LjMtMTIuOS0zOC40LTEyLjgtMTAuMiAwLTEwNi44LjUtMTE2LjUuNi0xOS4yLjEtMzIuOS0uMy0xOS4yIDE2LjlDMjUwIDc1IDQ3Ni41IDM2NS4yIDQ4Mi4yIDM3Mi4xem0xNTIuNyAxLjZjLTIuMy0uMy0yNC42LTQuNy0zOC03LjIgMCAwLTExNSA1MC40LTExNy41IDUxLjYtMTYgNy4zLTI2LjktMy4yLTM2LjctMTQuNmwtNTcuMS03NGMtNS40LS45LTYwLjQtOS42LTY1LjMtOS4zLTMuMS4yLTkuNi44LTE0LjQgMi45LTQuOSAyLjEtMTQ1LjIgNTIuOC0xNTAuMiA1NC43LTUuMSAyLTExLjQgMy42LTExLjEgNy42LjIgMi41IDIgMi42IDQuNiAzLjUgMi43LjggMzAwLjkgNjcuNiAzMDggNjkuMSAxNS42IDMuMyAzOC41IDEwLjUgNTMuNiAxLjcgMi4xLTEuMiAxMjMuOC03Ni40IDEyNS44LTc3LjggNS40LTQgNC4zLTYuOC0xLjctOC4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFjcXVpc2l0aW9uc0luY29ycG9yYXRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTcuNDUgNDY4LjJjLTEuMi03LjctMS4zLTcuNi05LjYtNy42LTk5LjguMi0xMTEuOC0yLjQtMTEyLjctMi42LTEyLjMtMS43LTIwLjYtMTAuNS0yMS0yMy4xLS4xLTEuNi0uMi03MS42LTEtMTI5LjEtLjEtNC43IDEuNi02LjQgNS45LTcuNSAxMi41LTMgMjQuOS02LjEgMzcuMy05LjcgNC4zLTEuMyA2LjgtLjIgOC40IDMuNSA0LjUgMTAuMyA4LjggMjAuNiAxMy4yIDMwLjkgMS42IDMuNy4xIDQuNC0zLjQgNC40LTEwLS4yLTIwLS4xLTMwLjQtLjF2MjdoMTE2Yy0xLjQtOS41LTIuNy0xOC4xLTQtMjcuNS03IDAtMTMuOC40LTIwLjQtLjEtMjIuNi0xLjYtMTguMy00LjQtODQtMTU4LjYtOC44LTIwLjEtMjcuOS02Mi4xLTM2LjUtODkuMi00LjQtMTQgNS41LTI1LjQgMTguOS0yNi42IDE4LjYtMS43IDM3LjUtMS42IDU2LjItMiAyMC42LS40IDQxLjItLjQgNjEuOC0uNSAzLjEgMCA0LTEuNCA0LjMtNC4zIDEuMi05LjggMi43LTE5LjUgNC0yOS4yLjgtNS4zIDEuNi0xMC43IDIuNC0xNi4xTDIzLjc1IDBjLTMuNiAwLTUuMyAxLjEtNC42IDUuMyAyLjIgMTMuMi0uOC44IDYuNCA0NS4zIDYzLjQgMCA3MS44LjkgMTAxLjguNSAxMi4zLS4yIDM3IDMuNSAzNy43IDIyLjEuNCAxMS40LTEuMSAxMS4zLTMyLjYgODcuNC01My44IDEyOS44LTUwLjcgMTIwLjMtNjcuMyAxNjEtMS43IDQuMS0zLjYgNS4yLTcuNiA1LjItOC41LS4yLTE3LS4zLTI1LjQuMS0xLjkuMS01LjIgMS44LTUuNSAzLjItMS41IDguMS0yLjIgMTYuMy0zLjIgMjQuOWgxMTQuM3YtMjcuNmMtNi45IDAtMzMuNS40LTM1LjMtMi45IDUuMy0xMi4zIDEwLjQtMjQuNCAxNS43LTM2LjcgMTYuMyA0IDMxLjkgNy44IDQ3LjYgMTEuNyAzLjQuOSA0LjYgMyA0LjYgNi44LS4xIDQyLjkuMSA4NS45LjIgMTI4LjggMCAxMC4yLTUuNSAxOS4xLTE0LjkgMjMuMS02LjUgMi43LTMuMyAzLjQtMTIxLjQgMi40LTUuMyAwLTcuMSAyLTcuNiA2LjgtMS41IDEyLjktMi45IDI1LjktNSAzOC44LS44IDUgMS4zIDUuNyA1LjMgNS43IDE4My4yLjYtMzAuNyAwIDMzNy4xIDAtMi41LTE1LTQuNC0yOS40LTYuNi00My43em0tMTc0LjktMjA1LjdjLTEzLjMtNC4yLTI2LjYtOC4yLTM5LjktMTIuNWE0NC41MyA0NC41MyAwIDAgMS01LjgtMi45YzE3LjItNDQuMyAzNC4yLTg4LjEgNTEuMy0xMzIuMSA3LjUgMi40IDcuOS0uOCA5LjQgMCA5LjMgMjIuNSAxOC4xIDYwLjEgMjcgODIuOCA2LjYgMTYuNyAxMyAzMy41IDE5LjcgNTAuOWEzNS43OCAzNS43OCAwIDAgMS0zLjkgMi4xYy0xMy4xIDMuOS0yNi40IDcuNS0zOS40IDExLjdhMjcuNjYgMjcuNjYgMCAwIDEtMTguNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY3LjVsNjQuOSA5OC44SDE4My4xbDY0LjktOTguOHpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTk5LjggODIuN0wyNDggMTE1LjUgOTkuOCAzMzguN2gzMC40bDMzLjYtNTEuN2gxNjguNmwzMy42IDUxLjdoMzAuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZHZlcnNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuMSAzMkgyOC43QzUuOCAzMiAwIDM3LjkgMCA2MC45djM5MC4yQzAgNDc0LjQgNS44IDQ4MCAyOC43IDQ4MGg0NTMuNGMyNC40IDAgMjkuOS01LjIgMjkuOS0yOS43VjYyLjJjMC0yNC42LTUuNC0zMC4yLTI5LjktMzAuMnpNMTc4LjQgMjIwLjNjLTI3LjUtMjAuMi03Mi4xLTguNy04NC4yIDIzLjQtNC4zIDExLjEtOS4zIDkuNS0xNy41IDguMy05LjctMS41LTE3LjItMy4yLTIyLjUtNS41LTI4LjgtMTEuNCA4LjYtNTUuMyAyNC45LTY0LjMgNDEuMS0yMS40IDgzLjQtMjIuMiAxMjUuMy00LjggNDAuOSAxNi44IDM0LjUgNTkuMiAzNC41IDEyOC41IDIuNyAyNS44LTQuMyA1OC4zIDkuMyA4OC44IDEuOSA0LjQuNCA3LjktMi43IDEwLjctOC40IDYuNy0zOS4zIDIuMi00Ni42LTcuNC0xLjktMi4yLTEuOC0zLjYtMy45LTYuMi0zLjYtMy45LTcuMy0yLjItMTEuOSAxLTU3LjQgMzYuNC0xNDAuMyAyMS40LTE0Ny00My4zLTMuMS0yOS4zIDEyLjQtNTcuMSAzOS42LTcxIDM4LjItMTkuNSAxMTIuMi0xMS44IDExNC0zMC45IDEuMS0xMC4yLTEuOS0yMC4xLTExLjMtMjcuM3ptMjg2LjcgMjIyYzAgMTUuMS0xMS4xIDkuOS0xNy44IDkuOUg1Mi40Yy03LjQgMC0xOC4yIDQuOC0xNy44LTEwLjcuNC0xMy45IDEwLjUtOS4xIDE3LjEtOS4xIDEzMi4zLS40IDI2NC41LS40IDM5Ni44IDAgNi44IDAgMTYuNi00LjQgMTYuNiA5Ljl6bTMuOC0zNDAuNXYyOTFjMCA1LjctLjcgMTMuOS04LjEgMTMuOS0xMi40LS40LTI3LjUgNy4xLTM2LjEtNS42LTUuOC04LjctNy44LTQtMTIuNC0xLjItNTMuNCAyOS43LTEyOC4xIDcuMS0xNDQuNC04NS4yLTYuMS0zMy40LS43LTY3LjEgMTUuNy0xMDAgMTEuOC0yMy45IDU2LjktNzYuMSAxMzYuMS0zMC41di03MWMwLTI2LjItLjEtMjYuMiAyNi0yNi4yIDMuMSAwIDYuNi40IDkuNyAwIDEwLjEtLjggMTMuNiA0LjQgMTMuNiAxNC4zLS4xLjItLjEuMy0uMS41em0tNTEuNSAyMzIuM2MtMTkuNSA0Ny42LTcyLjkgNDMuMy05MCA1LjItMTUuMS0zMy4zLTE1LjUtNjguMi40LTEwMS41IDE2LjMtMzQuMSA1OS43LTM1LjcgODEuNS00LjggMjAuNiAyOC44IDE0LjkgODQuNiA4LjEgMTAxLjF6bS0yOTQuOCAzNS4zYy03LjUtMS4zLTMzLTMuMy0zMy43LTI3LjgtLjQtMTMuOSA3LjgtMjMgMTkuOC0yNS44IDI0LjQtNS45IDQ5LjMtOS45IDczLjctMTQuNyA4LjktMiA3LjQgNC40IDcuOCA5LjUgMS40IDMzLTI2LjEgNTkuMi02Ny42IDU4Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWZmaWxpYXRldGhlbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU5LjcgMjM3LjRDMTA4LjQgMzA4LjMgNDMuMSAzNDguMiAxNCAzMjYuNi0xNS4yIDMwNC45IDIuOCAyMzAgNTQuMiAxNTkuMWM1MS4zLTcwLjkgMTE2LjYtMTEwLjggMTQ1LjctODkuMiAyOS4xIDIxLjYgMTEuMSA5Ni42LTQwLjIgMTY3LjV6bTM1MS4yLTU3LjNDNDM3LjEgMzAzLjUgMzE5IDM2Ny44IDI0Ni40IDMyMy43Yy0yNS0xNS4yLTQxLjMtNDEuMi00OS03My44LTMzLjYgNjQuOC05Mi44IDExMy44LTE2NC4xIDEzMy4yIDQ5LjggNTkuMyAxMjQuMSA5Ni45IDIwNyA5Ni45IDE1MCAwIDI3MS42LTEyMy4xIDI3MS42LTI3NC45LjEtOC41LS4zLTE2LjgtMS0yNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJibmIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDM3My4xMmMtMjUuMjQtMzEuNjctNDAuMDgtNTkuNDMtNDUtODMuMTgtMjIuNTUtODggMTEyLjYxLTg4IDkwLjA2IDAtNS40NSAyNC4yNS0yMC4yOSA1Mi00NSA4My4xOHptMTM4LjE1IDczLjIzYy00Mi4wNiAxOC4zMS04My42Ny0xMC44OC0xMTkuMy01MC40NyAxMDMuOS0xMzAuMDcgNDYuMTEtMjAwLTE4Ljg1LTIwMC01NC45MiAwLTg1LjE2IDQ2LjUxLTczLjI4IDEwMC41IDYuOTMgMjkuMTkgMjUuMjMgNjIuMzkgNTQuNDMgOTkuNS0zMi41MyAzNi4wNS02MC41NSA1Mi42OS04NS4xNSA1NC45Mi01MCA3LjQzLTg5LjExLTQxLjA2LTcxLjMtOTEuMDkgMTUuMS0zOS4xNiAxMTEuNzItMjMxLjE4IDExNS44Ny0yNDEuNTYgMTUuNzUtMzAuMDcgMjUuNTYtNTcuNCA1OS4zOC01Ny40IDMyLjM0IDAgNDMuNCAyNS45NCA2MC4zNyA1OS44NyAzNiA3MC42MiA4OS4zNSAxNzcuNDggMTE0Ljg0IDIzOS4wOSAxMy4xNyAzMy4wNy0xLjM3IDcxLjI5LTM3LjAxIDg2LjY0em00Ny0xMzYuMTJDMjgwLjI3IDM1LjkzIDI3My4xMyAzMiAyMjQgMzJjLTQ1LjUyIDAtNjQuODcgMzEuNjctODQuNjYgNzIuNzlDMzMuMTggMzE3LjEgMjIuODkgMzQ3LjE5IDIyIDM0OS44MS0zLjIyIDQxOS4xNCA0OC43NCA0ODAgMTExLjYzIDQ4MGMyMS43MSAwIDYwLjYxLTYuMDYgMTEyLjM3LTYyLjQgNTguNjggNjMuNzggMTAxLjI2IDYyLjQgMTEyLjM3IDYyLjQgNjIuODkuMDUgMTE0Ljg1LTYwLjg2IDg5LjYxLTEzMC4xOS4wMi0zLjg5LTE2LjgyLTM4LjktMTYuODItMzkuNTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxnb2xpYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjkuMyAxODIuNmMtNDkuMyAwLTg5LjIgMzkuOS04OS4yIDg5LjIgMCA0OS4zIDM5LjkgODkuMiA4OS4yIDg5LjJzODkuMi0zOS45IDg5LjItODkuMmMwLTQ5LjMtNDAtODkuMi04OS4yLTg5LjJ6bTYyLjcgNTYuNmwtNTguOSAzMC42Yy0xLjguOS0zLjgtLjQtMy44LTIuM1YyMDFjMC0xLjUgMS4zLTIuNyAyLjctMi42IDI2LjIgMSA0OC45IDE1LjcgNjEuMSAzNy4xLjcgMS4zLjIgMy0xLjEgMy43ek0zODkuMSAzMkg1OC45QzI2LjQgMzIgMCA1OC40IDAgOTAuOVY0MjFjMCAzMi42IDI2LjQgNTkgNTguOSA1OUgzODljMzIuNiAwIDU4LjktMjYuNCA1OC45LTU4LjlWOTAuOUM0NDggNTguNCA0MjEuNiAzMiAzODkuMSAzMnptLTIwMi42IDg0LjdjMC0xMC44IDguNy0xOS41IDE5LjUtMTkuNWg0NS4zYzEwLjggMCAxOS41IDguNyAxOS41IDE5LjV2MTUuNGMwIDEuOC0xLjcgMy0zLjMgMi41LTEyLjMtMy40LTI1LjEtNS4xLTM4LjEtNS4xLTEzLjUgMC0yNi43IDEuOC0zOS40IDUuNS0xLjcuNS0zLjQtLjgtMy40LTIuNXYtMTUuOHptLTg0LjQgMzdsOS4yLTkuMmM3LjYtNy42IDE5LjktNy42IDI3LjUgMGw3LjcgNy43YzEuMSAxLjEgMSAzLS4zIDQtNi4yIDQuNS0xMi4xIDkuNC0xNy42IDE0LjktNS40IDUuNC0xMC40IDExLjMtMTQuOCAxNy40LTEgMS4zLTIuOSAxLjUtNCAuM2wtNy43LTcuN2MtNy42LTcuNS03LjYtMTkuOCAwLTI3LjR6bTEyNy4yIDI0NC44Yy03MCAwLTEyNi42LTU2LjctMTI2LjYtMTI2LjZzNTYuNy0xMjYuNiAxMjYuNi0xMjYuNmM3MCAwIDEyNi42IDU2LjYgMTI2LjYgMTI2LjYgMCA2OS44LTU2LjcgMTI2LjYtMTI2LjYgMTI2LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpcGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny43NCAzMkg3MC4yNkMzMS40MSAzMiAwIDYzLjQxIDAgMTAyLjI2djMwNy40OEMwIDQ0OC41OSAzMS40MSA0ODAgNzAuMjYgNDgwaDMwNy40OGMzOC41MiAwIDY5Ljc2LTMxLjA4IDcwLjI2LTY5LjYtNDUuOTYtMjUuNjItMTEwLjU5LTYwLjM0LTE3MS42LTg4LjQ0LTMyLjA3IDQzLjk3LTg0LjE0IDgxLTE0OC42MiA4MS03MC41OSAwLTkzLjczLTQ1LjMtOTcuMDQtNzYuMzctMy45Ny0zOS4wMSAxNC44OC04MS41IDk5LjUyLTgxLjUgMzUuMzggMCA3OS4zNSAxMC4yNSAxMjcuMTMgMjQuOTYgMTYuNTMtMzAuMDkgMjYuNDUtNjAuMzQgMjYuNDUtNjAuMzRoLTE3OC4ydi0xNi43aDkyLjA4di0zMS4yNEg4OC4yOHYtMTkuMDFoMTA5LjQ0VjkyLjM0aDUwLjkydjUwLjQyaDEwOS40NHYxOS4wMUgyNDguNjN2MzEuMjRoODguNzdzLTE1LjIxIDQ2LjYyLTM4LjM1IDkwLjkyYzQ4LjkzIDE2LjcgMTAwLjAxIDM2LjA0IDE0OC42MiA1Mi43NFYxMDIuMjZDNDQ3LjgzIDYzLjU3IDQxNi40MyAzMiAzNzcuNzQgMzJ6TTQ3LjI4IDMyMi45NWMuOTkgMjAuMTcgMTAuMjUgNTMuNzMgNjkuOTMgNTMuNzMgNTIuMDcgMCA5Mi41OC0zOS42OCAxMTcuODctNzIuOS00NC42My0xOC42OC04NC40OC0zMS40MS0xMDkuNDQtMzEuNDEtNjcuNDUgMC03OS4zNSAzMy4wNi03OC4zNiA1MC41OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWF6b25QYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMzI1LjNjMi4zLTQuMiA1LjItNC45IDkuNy0yLjUgMTAuNCA1LjYgMjAuNiAxMS40IDMxLjIgMTYuN2E1OTUuODggNTk1Ljg4IDAgMCAwIDEyNy40IDQ2LjMgNjE2LjYxIDYxNi42MSAwIDAgMCA2My4yIDExLjggNjAzLjMzIDYwMy4zMyAwIDAgMCA5NSA1LjJjMTcuNC0uNCAzNC44LTEuOCA1Mi4xLTMuOGE2MDMuNjYgNjAzLjY2IDAgMCAwIDE2My4zLTQyLjhjMi45LTEuMiA1LjktMiA5LjEtMS4yIDYuNyAxLjggOSA5IDQuMSAxMy45YTcwIDcwIDAgMCAxLTkuNiA3LjRjLTMwLjcgMjEuMS02NC4yIDM2LjQtOTkuNiA0Ny45YTQ3My4zMSA0NzMuMzEgMCAwIDEtNzUuMSAxNy42IDQzMSA0MzEgMCAwIDEtNTMuMiA0LjggMjEuMyAyMS4zIDAgMCAwLTIuNS4zSDMwOGEyMS4zIDIxLjMgMCAwIDAtMi41LS4zYy0zLjYtLjItNy4yLS4zLTEwLjctLjRhNDI2LjMgNDI2LjMgMCAwIDEtNTAuNC01LjNBNDQ4LjQgNDQ4LjQgMCAwIDEgMTY0IDQyMGE0NDMuMzMgNDQzLjMzIDAgMCAxLTE0NS42LTg3Yy0xLjgtMS42LTMtMy44LTQuNC01Ljd6TTE3MiA2NS4xbC00LjMuNmE4MC45MiA4MC45MiAwIDAgMC0zOCAxNS4xYy0yLjQgMS43LTQuNiAzLjUtNy4xIDUuNGE0LjI5IDQuMjkgMCAwIDEtLjQtMS40Yy0uNC0yLjctLjgtNS41LTEuMy04LjItLjctNC42LTMtNi42LTcuNi02LjZoLTExLjVjLTYuOSAwLTguMiAxLjMtOC4yIDguMnYyMDkuM2MwIDEgMCAyIC4xIDMgLjIgMyAyIDQuOSA0LjkgNSA3IC4xIDE0LjEuMSAyMS4xIDAgMi45IDAgNC43LTIgNS01IC4xLTEgLjEtMiAuMS0zdi03Mi40YzEuMS45IDEuNyAxLjQgMi4yIDEuOSAxNy45IDE0LjkgMzguNSAxOS44IDYxIDE1LjQgMjAuNC00IDM0LjYtMTYuNSA0My44LTM0LjkgNy0xMy45IDkuOS0yOC43IDEwLjMtNDQuMS41LTE3LjEtMS4yLTMzLjktOC4xLTQ5LjgtOC41LTE5LjYtMjIuNi0zMi41LTQzLjktMzYuOS0zLjItLjctNi41LTEtOS44LTEuNS0yLjgtLjEtNS41LS4xLTguMy0uMXpNMTI0LjYgMTA3YTMuNDggMy40OCAwIDAgMSAxLjctMy4zYzEzLjctOS41IDI4LjgtMTQuNSA0NS42LTEzLjIgMTQuOSAxLjEgMjcuMSA4LjQgMzMuNSAyNS45IDMuOSAxMC43IDQuOSAyMS44IDQuOSAzMyAwIDEwLjQtLjggMjAuNi00IDMwLjYtNi44IDIxLjMtMjIuNCAyOS40LTQyLjYgMjguNS0xNC0uNi0yNi4yLTYtMzcuNC0xMy45YTMuNTcgMy41NyAwIDAgMS0xLjctMy4zYy4xLTE0LjEgMC0yOC4xIDAtNDIuMnMuMS0yOCAwLTQyLjF6bTIwNS43LTQxLjljLTEgLjEtMiAuMy0yLjkuNGExNDggMTQ4IDAgMCAwLTI4LjkgNC4xYy02LjEgMS42LTEyIDMuOC0xNy45IDUuOC0zLjYgMS4yLTUuNCAzLjgtNS4zIDcuNy4xIDMuMy0uMSA2LjYgMCA5LjkuMSA0LjggMi4xIDYuMSA2LjggNC45IDcuOC0yIDE1LjYtNC4yIDIzLjUtNS43IDEyLjMtMi4zIDI0LjctMy4zIDM3LjItMS40IDYuNSAxIDEyLjYgMi45IDE2LjggOC40IDMuNyA0LjggNS4xIDEwLjUgNS4zIDE2LjQuMyA4LjMuMiAxNi42LjMgMjQuOWE3Ljg0IDcuODQgMCAwIDEtLjIgMS40Yy0uNS0uMS0uOSAwLTEuMy0uMWExODAuNTYgMTgwLjU2IDAgMCAwLTMyLTQuOWMtMTEuMy0uNi0yMi41LjEtMzMuMyAzLjktMTIuOSA0LjUtMjMuMyAxMi4zLTI5LjQgMjQuOS00LjcgOS44LTUuNCAyMC4yLTMuOSAzMC43IDIgMTQgOSAyNC44IDIxLjQgMzEuNyAxMS45IDYuNiAyNC44IDcuNCAzNy45IDUuNCAxNS4xLTIuMyAyOC41LTguNyA0MC4zLTE4LjRhNy4zNiA3LjM2IDAgMCAxIDEuNi0xLjFjLjYgMy44IDEuMSA3LjQgMS44IDExIC42IDMuMSAyLjUgNS4xIDUuNCA1LjIgNS40LjEgMTAuOS4xIDE2LjMgMGE0Ljg0IDQuODQgMCAwIDAgNC44LTQuNyAyNi4yIDI2LjIgMCAwIDAgLjEtMi44di0xMDZhODAgODAgMCAwIDAtLjktMTIuOWMtMS45LTEyLjktNy40LTIzLjUtMTktMzAuNC02LjctNC0xNC4xLTYtMjEuOC03LjEtMy42LS41LTcuMi0uOC0xMC44LTEuMy0zLjkuMS03LjkuMS0xMS45LjF6bTM1IDEyNy43YTMuMzMgMy4zMyAwIDAgMS0xLjUgM2MtMTEuMiA4LjEtMjMuNSAxMy41LTM3LjQgMTQuOS01LjcuNi0xMS40LjQtMTYuOC0xLjhhMjAuMDggMjAuMDggMCAwIDEtMTIuNC0xMy4zIDMyLjkgMzIuOSAwIDAgMS0uMS0xOS40YzIuNS04LjMgOC40LTEzIDE2LjQtMTUuNmE2MS4zMyA2MS4zMyAwIDAgMSAyNC44LTIuMmM4LjQuNyAxNi42IDIuMyAyNSAzLjQgMS42LjIgMi4xIDEgMi4xIDIuNi0uMSA0LjggMCA5LjUgMCAxNC4zcy0uMiA5LjQtLjEgMTQuMXptMjU5LjkgMTI5LjRjLTEtNS00LjgtNi45LTkuMS04LjNhODguNDIgODguNDIgMCAwIDAtMjEtMy45IDE0Ny4zMiAxNDcuMzIgMCAwIDAtMzkuMiAxLjljLTE0LjMgMi43LTI3LjkgNy4zLTQwIDE1LjZhMTMuNzUgMTMuNzUgMCAwIDAtMy43IDMuNSA1LjExIDUuMTEgMCAwIDAtLjUgNGMuNCAxLjUgMi4xIDEuOSAzLjYgMS44YTE2LjIgMTYuMiAwIDAgMCAyLjItLjFjNy44LS44IDE1LjUtMS43IDIzLjMtMi41IDExLjQtMS4xIDIyLjktMS44IDM0LjMtLjlhNzEuNjQgNzEuNjQgMCAwIDEgMTQuNCAyLjdjNS4xIDEuNCA3LjQgNS4yIDcuNiAxMC40LjQgOC0xLjQgMTUuNy0zLjUgMjMuMy00LjEgMTUuNC0xMCAzMC4zLTE1LjggNDUuMWExNy42IDE3LjYgMCAwIDAtMSAzYy0uNSAyLjkgMS4yIDQuOCA0LjEgNC4xYTEwLjU2IDEwLjU2IDAgMCAwIDQuOC0yLjUgMTQ1LjkxIDE0NS45MSAwIDAgMCAxMi43LTEzLjRjMTIuOC0xNi40IDIwLjMtMzUuMyAyNC43LTU1LjYuOC0zLjYgMS40LTcuMyAyLjEtMTAuOXYtMTcuM3pNNDkzLjEgMTk5cS0xOS4zNS01My41NS0zOC43LTEwNy4yYy0yLTUuNy00LjItMTEuMy02LjMtMTYuOS0xLjEtMi45LTMuMi00LjgtNi40LTQuOC03LjYtLjEtMTUuMi0uMi0yMi45LS4xLTIuNSAwLTMuNyAyLTMuMiA0LjVhNDMuMSA0My4xIDAgMCAwIDEuOSA2LjFxMjkuNCA3Mi43NSA1OS4xIDE0NS41YzEuNyA0LjEgMi4xIDcuNi4yIDExLjgtMy4zIDcuMy01LjkgMTUtOS4zIDIyLjMtMyA2LjUtOCAxMS40LTE1LjIgMTMuM2E0Mi4xMyA0Mi4xMyAwIDAgMS0xNS40IDEuMWMtMi41LS4yLTUtLjgtNy41LTEtMy40LS4yLTUuMSAxLjMtNS4yIDQuOHEtLjE1IDUgMCA5LjljLjEgNS41IDIgOCA3LjQgOC45YTEwOC4xOCAxMDguMTggMCAwIDAgMTYuOSAyYzE3LjEuNCAzMC43LTYuNSAzOS41LTIxLjRhMTMxLjYzIDEzMS42MyAwIDAgMCA5LjItMTguNHEzNS41NS04OS43IDcwLjYtMTc5LjZhMjYuNjIgMjYuNjIgMCAwIDAgMS42LTUuNWMuNC0yLjgtLjktNC40LTMuNy00LjQtNi42LS4xLTEzLjMgMC0xOS45IDBhNy41NCA3LjU0IDAgMCAwLTcuNyA1LjJjLS41IDEuNC0xLjEgMi43LTEuNiA0LjFsLTM0LjggMTAwYy0yLjUgNy4yLTUuMSAxNC41LTcuNyAyMi4yLS40LTEuMS0uNi0xLjctLjktMi40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtYXpvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuMiAxNjIuN2MtNDguNyAxLjgtMTY5LjUgMTUuNS0xNjkuNSAxMTcuNSAwIDEwOS41IDEzOC4zIDExNCAxODMuNSA0My4yIDYuNSAxMC4yIDM1LjQgMzcuNSA0NS4zIDQ2LjhsNTYuOC01NlMzNDEgMjg4LjkgMzQxIDI2MS40VjExNC4zQzM0MSA4OSAzMTYuNSAzMiAyMjguNyAzMiAxNDAuNyAzMiA5NCA4NyA5NCAxMzYuM2w3My41IDYuOGMxNi4zLTQ5LjUgNTQuMi00OS41IDU0LjItNDkuNSA0MC43LS4xIDM1LjUgMjkuOCAzNS41IDY5LjF6bTAgODYuOGMwIDgwLTg0LjIgNjgtODQuMiAxNy4yIDAtNDcuMiA1MC41LTU2LjcgODQuMi01Ny44djQwLjZ6bTEzNiAxNjMuNWMtNy43IDEwLTcwIDY3LTE3NC41IDY3UzM0LjIgNDA4LjUgOS43IDM3OWMtNi44LTcuNyAxLTExLjMgNS41LTguM0M4OC41IDQxNS4yIDIwMyA0ODguNSAzODcuNyA0MDFjNy41LTMuNyAxMy4zIDIgNS41IDEyem0zOS44IDIuMmMtNi41IDE1LjgtMTYgMjYuOC0yMS4yIDMxLTUuNSA0LjUtOS41IDIuNy02LjUtMy44czE5LjMtNDYuNSAxMi43LTU1Yy02LjUtOC4zLTM3LTQuMy00OC0zLjItMTAuOCAxLTEzIDItMTQtLjMtMi4zLTUuNyAyMS43LTE1LjUgMzcuNS0xNy41IDE1LjctMS44IDQxLS44IDQ2IDUuNyAzLjcgNS4xIDAgMjcuMS02LjUgNDMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbWlsaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjEgMzJjLTYxLjkgMC0xMzEuNSAxNi45LTE4NC4yIDU1LjQtNS4xIDMuMS05LjEgOS4yLTcuMiAxOS40IDEuMSA1LjEgNS4xIDI3LjQgMTAuMiAzOS42IDQuMSAxMC4yIDE0LjIgMTAuMiAyMC4zIDYuMSAzMi41LTIyLjMgOTYuNS00Ny43IDE1Mi4zLTQ3LjcgNTcuOSAwIDU4LjkgMjguNCA1OC45IDczLjF2MzguNUMyMDMgMjI3LjcgNzguMiAyNTEgNDYuNyAyNjQuMiAxMS4yIDI4MC41IDE2LjMgMzU3LjcgMTYuMyAzNzZzMTUuMiAxMDQgMTI0LjkgMTA0YzQ3LjggMCAxMTMuNy0yMC43IDE1My4zLTQyLjF2MjUuNGMwIDMgMi4xIDguMiA2LjEgOS4xIDMuMSAxIDUwLjcgMiA1OS45IDJzNjIuNS4zIDY2LjUtLjdjNC4xLTEgNS4xLTYuMSA1LjEtOS4xVjE2OGMtLjEtODAuMy01Ny45LTEzNi0xOTItMTM2em01MC4yIDM0OGMtMjEuNCAxMy4yLTQ4LjcgMjQuNC03OS4xIDI0LjQtNTIuOCAwLTU4LjktMzMuNS01OS00NC43IDAtMTIuMi0zLTQyLjcgMTguMy01Mi45IDI0LjMtMTMuMiA3NS4xLTI5LjQgMTE5LjgtMzMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmRyb2lkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMC41NSwzMDEuOTNhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtLTI2NS4xLDBhMjQsMjQsMCwxLDEsMjQtMjQsMjQsMjQsMCwwLDEtMjQsMjRtMjczLjctMTQ0LjQ4LDQ3Ljk0LTgzYTEwLDEwLDAsMSwwLTE3LjI3LTEwaDBsLTQ4LjU0LDg0LjA3YTMwMS4yNSwzMDEuMjUsMCwwLDAtMjQ2LjU2LDBMMTE2LjE4LDY0LjQ1YTEwLDEwLDAsMSwwLTE3LjI3LDEwaDBsNDcuOTQsODNDNjQuNTMsMjAyLjIyLDguMjQsMjg1LjU1LDAsMzg0SDU3NmMtOC4yNC05OC40NS02NC41NC0xODEuNzgtMTQ2Ljg1LTIyNi41NVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2VsbGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDcuMSAyMTUuNGMxMS43LTMyLjYgNDUuNC0xMjYuOSA0NS40LTE1Ny4xIDAtMjYuNi0xNS43LTQ4LjktNDMuNy00OC45LTQ0LjYgMC04NC42IDEzMS43LTk3LjEgMTYzLjFDMjQyIDE0NCAxOTYuNiAwIDE1Ni42IDBjLTMxLjEgMC00NS43IDIyLjktNDUuNyA1MS43IDAgMzUuMyAzNC4yIDEyNi44IDQ2LjYgMTYyLTYuMy0yLjMtMTMuMS00LjMtMjAtNC4zLTIzLjQgMC00OC4zIDI5LjEtNDguMyA1Mi42IDAgOC45IDQuOSAyMS40IDggMjkuNy0zNi45IDEwLTUxLjEgMzQuNi01MS4xIDcxLjdDNDYgNDM1LjYgMTE0LjQgNTEyIDIxMC42IDUxMmMxMTggMCAxOTEuNC04OC42IDE5MS40LTIwMi45IDAtNDMuMS02LjktODItNTQuOS05My43ek0zMTEuNyAxMDhjNC0xMi4zIDIxLjEtNjQuMyAzNy4xLTY0LjMgOC42IDAgMTAuOSA4LjkgMTAuOSAxNiAwIDE5LjEtMzguNiAxMjQuNi00Ny4xIDE0OGwtMzQtNiAzMy4xLTkzLjd6TTE0Mi4zIDQ4LjNjMC0xMS45IDE0LjUtNDUuNyA0Ni4zIDQ3LjFsMzQuNiAxMDAuM2MtMTUuNi0xLjMtMjcuNy0zLTM1LjQgMS40LTEwLjktMjguOC00NS41LTExOS43LTQ1LjUtMTQ4Ljh6TTE0MCAyNDRjMjkuMyAwIDY3LjEgOTQuNiA2Ny4xIDEwNy40IDAgNS4xLTQuOSAxMS40LTEwLjYgMTEuNC0yMC45IDAtNzYuOS03Ni45LTc2LjktOTcuNy4xLTcuNyAxMi43LTIxLjEgMjAuNC0yMS4xem0xODQuMyAxODYuM2MtMjkuMSAzMi02Ni4zIDQ4LjYtMTA5LjcgNDguNi01OS40IDAtMTA2LjMtMzIuNi0xMjguOS04OC4zLTE3LjEtNDMuNCAzLjgtNjguMyAyMC42LTY4LjMgMTEuNCAwIDU0LjMgNjAuMyA1NC4zIDczLjEgMCA0LjktNy43IDguMy0xMS43IDguMy0xNi4xIDAtMjIuNC0xNS41LTUxLjEtNTEuNC0yOS43IDI5LjcgMjAuNSA4Ni45IDU4LjMgODYuOSAyNi4xIDAgNDMuMS0yNC4yIDM4LTQyIDMuNyAwIDguMy4zIDExLjctLjYgMS4xIDI3LjEgOS4xIDU5LjQgNDEuNyA2MS43IDAtLjkgMi03LjEgMi03LjQgMC0xNy40LTEwLjYtMzIuNi0xMC42LTUwLjMgMC0yOC4zIDIxLjctNTUuNyA0My43LTcxLjcgOC02IDE3LjctOS43IDI3LjEtMTMuMSA5LjctMy43IDIwLTggMjcuNC0xNS40LTEuMS0xMS4yLTUuNy0yMS4xLTE2LjktMjEuMS0yNy43IDAtMTIwLjYgNC0xMjAuNi0zOS43IDAtNi43LjEtMTMuMSAxNy40LTEzLjEgMzIuMyAwIDExNC4zIDggMTM4LjMgMjkuMSAxOC4xIDE2LjEgMjQuMyAxMTMuMi0zMSAxNzQuN3ptLTk4LjYtMTI2YzkuNyAzLjEgMTkuNyA0IDI5LjcgNi03LjQgNS40LTE0IDEyLTIwLjMgMTkuMS0yLjgtOC41LTYuMi0xNi44LTkuNC0yNS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5Y3JlYXRpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQwIDIzOC4ybC0zLjIgMjguMi0zNC41IDIuMy0yIDE4LjEgMzQuNS0yLjMtMy4yIDI4LjItMzQuNCAyLjItMi4zIDIwLjEgMzQuNC0yLjItMyAyNi4xLTY0LjcgNC4xIDEyLjctMTEzLjJMNTI3IDM2NS4ybC0zMS45IDItMjMuOC0xMTcuOCAzMC4zLTIgMTMuNiA3OS40IDMxLjctODIuNCA5My4xLTYuMnpNNDI2LjggMzcxLjVsMjguMy0xLjhMNDY4IDI0OS42bC0yOC40IDEuOS0xMi44IDEyMHpNMTYyIDM4OC4xbC0xOS40LTM2LTMuNSAzNy40LTI4LjIgMS43IDIuNy0yOS4xYy0xMSAxOC0zMiAzNC4zLTU2LjkgMzUuOEMyMy45IDM5OS45LTMgMzc3IC4zIDMzOS43YzIuNi0yOS4zIDI2LjctNjIuOCA2Ny41LTY1LjQgMzcuNy0yLjQgNDcuNiAyMy4yIDUxLjMgMjguOGwyLjgtMzAuOCAzOC45LTIuNWMyMC4xLTEuMyAzOC43IDMuNyA0Mi41IDIzLjdsMi42LTI2LjYgNjQuOC00LjItMi43IDI3LjktMzYuNCAyLjQtMS43IDE3LjkgMzYuNC0yLjMtMi43IDI3LjktMzYuNCAyLjMtMS45IDE5LjkgMzYuMy0yLjMtMi4xIDIwLjggNTUtMTE3LjIgMjMuOC0xLjZMMzcwLjQgMzY5bDguOS04NS42LTIyLjMgMS40IDIuOS0yNy45IDc1LTQuOS0zIDI4LTI0LjMgMS42LTkuNyA5MS45LTU4IDMuNy00LjMtMTUuNi0zOS40IDIuNS04IDE2LjMtMTI2LjIgNy43em0tNDQuMy03MC4ybC0yNi40IDEuN0M4NC42IDMwNy4yIDc2LjkgMzAzIDY1IDMwMy44Yy0xOSAxLjItMzMuMyAxNy41LTM0LjYgMzMuMy0xLjQgMTYgNy4zIDMyLjUgMjguNyAzMS4yIDEyLjgtLjggMjEuMy04LjYgMjguOS0xOC45bDI3LTEuNyAyLjctMjkuOHptNTYuMS03LjdjMS4yLTEyLjktNy42LTEzLjYtMjYuMS0xMi40bC0yLjcgMjguNWMxNC4yLS45IDI3LjUtMi4xIDI4LjgtMTYuMXptMjEuMSA3MC44bDUuOC02MGMtNSAxMy41LTE0LjcgMjEuMS0yNy45IDI2LjZsMjIuMSAzMy40em0xMzUuNC00NWwtNy45LTM3LjgtMTUuOCAzOS4zIDIzLjctMS41em0tMTcwLjEtNzQuNmwtNC4zLTE3LjUtMzkuNiAyLjYtOC4xIDE4LjItMzEuOSAyLjEgNTctMTIxLjkgMjMuOS0xLjYgMzAuNyAxMDIgOS45LTEwNC43IDI3LTEuOCAzNy44IDYzLjYgNi41LTY2LjYgMjguNS0xLjktNCA0MS4yYzcuNC0xMy41IDIyLjktNDQuNyA2My42LTQ3LjUgNDAuNS0yLjggNTIuNCAyOS4zIDUzLjQgMzAuM2wzLjMtMzIgMzkuMy0yLjdjMTIuNy0uOSAyNy44LjMgMzYuMyA5LjdsLTQuNC0xMS45IDMyLjItMi4yIDEyLjkgNDMuMiAyMy00NS43IDMxLTIuMi00My42IDc4LjQtNC44IDQ0LjMtMjguNCAxLjkgNC44LTQ0LjMtMTUuOC00M2MxIDIyLjMtOS4yIDQwLjEtMzIgNDkuNmwyNS4yIDM4LjgtMzYuNCAyLjQtMTkuMi0zNi44LTQgMzguMy0yOC40IDEuOSAzLjMtMzEuNWMtNi43IDkuMy0xOS43IDM1LjQtNTkuNiAzOC0yNi4yIDEuNy00NS42LTEwLjMtNTUuNC0zOS4ybC00IDQwLjMtMjUgMS42LTM3LjYtNjMuMy02LjMgNjYuMi01Ni44IDMuN3ptMjc2LjYtODIuMWMxMC4yLS43IDE3LjUtMi4xIDIxLjYtNC4zIDQuNS0yLjQgNy02LjQgNy42LTEyLjEuNi01LjMtLjYtOC44LTMuNC0xMC40LTMuNi0yLjEtMTAuNi0yLjgtMjIuOS0ybC0yLjkgMjguOHpNMzI3LjcgMjE0YzUuNiA1LjkgMTIuNyA4LjUgMjEuMyA3LjkgNC43LS4zIDkuMS0xLjggMTMuMy00LjEgNS41LTMgMTAuNi04IDE1LjEtMTQuM2wtMzQuMiAyLjMgMi40LTIzLjkgNjMuMS00LjMgMS4yLTEyLTMxLjIgMi4xYy00LjEtMy43LTcuOC02LjYtMTEuMS04LjEtNC0xLjctOC4xLTIuOC0xMi4yLTIuNS04IC41LTE1LjMgMy42LTIyIDkuMi03LjcgNi40LTEyIDE0LjUtMTIuOSAyNC40LTEuMSA5LjYgMS40IDE3LjMgNy4yIDIzLjN6bS0yMDEuMyA4LjJsMjMuOC0xLjYtOC4zLTM3LjYtMTUuNSAzOS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3VsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg1LjcgMjY4LjFoNzYuMmwtMzguMS05MS42LTM4LjEgOTEuNnpNMjIzLjggMzJMMTYgMTA2LjRsMzEuOCAyNzUuNyAxNzYgOTcuOSAxNzYtOTcuOSAzMS44LTI3NS43ek0zNTQgMzczLjhoLTQ4LjZsLTI2LjItNjUuNEgxNjguNmwtMjYuMiA2NS40SDkzLjdMMjIzLjggODEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZUlvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xMjcgMzg0LjVjLTUuNSA5LjYtMTcuOCAxMi44LTI3LjMgNy4zLTkuNi01LjUtMTIuOC0xNy44LTcuMy0yNy4zbDE0LjMtMjQuN2MxNi4xLTQuOSAyOS4zLTEuMSAzOS42IDExLjRMMTI3IDM4NC41em0xMzguOS01My45SDg0Yy0xMSAwLTIwLTktMjAtMjBzOS0yMCAyMC0yMGg1MWw2NS40LTExMy4yLTIwLjUtMzUuNGMtNS41LTkuNi0yLjItMjEuOCA3LjMtMjcuMyA5LjYtNS41IDIxLjgtMi4yIDI3LjMgNy4zbDguOSAxNS40IDguOS0xNS40YzUuNS05LjYgMTcuOC0xMi44IDI3LjMtNy4zIDkuNiA1LjUgMTIuOCAxNy44IDcuMyAyNy4zbC04NS44IDE0OC42aDYyLjFjMjAuMiAwIDMxLjUgMjMuNyAyMi43IDQwem05OC4xIDBoLTI5bDE5LjYgMzMuOWM1LjUgOS42IDIuMiAyMS44LTcuMyAyNy4zLTkuNiA1LjUtMjEuOCAyLjItMjcuMy03LjMtMzIuOS01Ni45LTU3LjUtOTkuNy03NC0xMjguMS0xNi43LTI5LTQuOC01OCA3LjEtNjcuOCAxMy4xIDIyLjcgMzIuNyA1Ni43IDU4LjkgMTAyaDUyYzExIDAgMjAgOSAyMCAyMCAwIDExLjEtOSAyMC0yMCAyMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBTdG9yZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOSAxMjAuOWw5LjEtMTUuN2M1LjYtOS44IDE4LjEtMTMuMSAyNy45LTcuNSA5LjggNS42IDEzLjEgMTguMSA3LjUgMjcuOWwtODcuNSAxNTEuNWg2My4zYzIwLjUgMCAzMiAyNC4xIDIzLjEgNDAuOEgxMTMuOGMtMTEuMyAwLTIwLjQtOS4xLTIwLjQtMjAuNCAwLTExLjMgOS4xLTIwLjQgMjAuNC0yMC40aDUybDY2LjYtMTE1LjQtMjAuOC0zNi4xYy01LjYtOS44LTIuMy0yMi4yIDcuNS0yNy45IDkuOC01LjYgMjIuMi0yLjMgMjcuOSA3LjVsOC45IDE1Ljd6bS03OC43IDIxOGwtMTkuNiAzNGMtNS42IDkuOC0xOC4xIDEzLjEtMjcuOSA3LjUtOS44LTUuNi0xMy4xLTE4LjEtNy41LTI3LjlsMTQuNi0yNS4yYzE2LjQtNS4xIDI5LjgtMS4yIDQwLjQgMTEuNnptMTY4LjktNjEuN2g1My4xYzExLjMgMCAyMC40IDkuMSAyMC40IDIwLjQgMCAxMS4zLTkuMSAyMC40LTIwLjQgMjAuNGgtMjkuNWwxOS45IDM0LjVjNS42IDkuOCAyLjMgMjIuMi03LjUgMjcuOS05LjggNS42LTIyLjIgMi4zLTI3LjktNy41LTMzLjUtNTguMS01OC43LTEwMS42LTc1LjQtMTMwLjYtMTcuMS0yOS41LTQuOS01OS4xIDcuMi02OS4xIDEzLjQgMjMgMzMuNCA1Ny43IDYwLjEgMTA0ek0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0yMTYgMjQ4YzAgMTE4LjctOTYuMSAyMTYtMjE2IDIxNi0xMTguNyAwLTIxNi05Ni4xLTIxNi0yMTYgMC0xMTguNyA5Ni4xLTIxNiAyMTYtMjE2IDExOC43IDAgMjE2IDk2LjEgMjE2IDIxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Mi4xIDIzOS4xYzIyLjIgMCAyOSAyLjggMzMuNSAxNC42aC44di0yMi45YzAtMTEuMy00LjgtMTUuNC0xNy45LTE1LjQtMTEuMyAwLTE0LjQgMi41LTE1LjEgMTIuOEg0LjhjLjMtMTMuOSAxLjUtMTkuMSA1LjgtMjQuNEMxNy45IDE5NSAyOS41IDE5MiA1Ni43IDE5MmMzMyAwIDQ3LjEgNSA1My45IDE4LjkgMiA0LjMgNCAxNS42IDQgMjMuN3Y3Ni4zSDc2LjNsMS4zLTE5LjFoLTFjLTUuMyAxNS42LTEzLjYgMjAuNC0zNS41IDIwLjQtMzAuMyAwLTQxLjEtMTAuMS00MS4xLTM3LjMgMC0yNS4yIDEyLjMtMzUuOCA0Mi4xLTM1Ljh6bTE3LjEgNDguMWMxMy4xIDAgMTYuOS0zIDE2LjktMTMuNCAwLTkuMS00LjMtMTEuNi0xOS42LTExLjYtMTMuMSAwLTE3LjkgMy0xNy45IDEyLjEtLjEgMTAuNCAzLjcgMTIuOSAyMC42IDEyLjl6bTc3LjgtOTQuOWgzOC4zbC0xLjUgMjAuNmguOGM5LjEtMTcuMSAxNS45LTIwLjkgMzcuNS0yMC45IDE0LjQgMCAyNC43IDMgMzEuNSA5LjEgOS44IDguNiAxMi44IDIwLjQgMTIuOCA0OC4xIDAgMzAtMyA0My4xLTEyLjEgNTIuOS02LjggNy4zLTE2LjQgMTAuMS0zMy4yIDEwLjEtMjAuNCAwLTI5LjItNS41LTMzLjgtMjEuMmgtLjh2NzAuM0gxMzd2LTE2OXptODAuOSA2MC43YzAtMjcuNS0zLjMtMzIuNS0yMC43LTMyLjUtMTYuOSAwLTIwLjcgNS0yMC43IDI4LjcgMCAyOCAzLjUgMzMuNSAyMS4yIDMzLjUgMTYuNCAwIDIwLjItNS42IDIwLjItMjkuN3ptNTcuOS02MC43aDM4LjNsLTEuNSAyMC42aC44YzkuMS0xNy4xIDE1LjktMjAuOSAzNy41LTIwLjkgMTQuNCAwIDI0LjcgMyAzMS41IDkuMSA5LjggOC42IDEyLjggMjAuNCAxMi44IDQ4LjEgMCAzMC0zIDQzLjEtMTIuMSA1Mi45LTYuOCA3LjMtMTYuNCAxMC4xLTMzLjMgMTAuMS0yMC40IDAtMjkuMi01LjUtMzMuOC0yMS4yaC0uOHY3MC4zaC0zOS41di0xNjl6bTgwLjkgNjAuN2MwLTI3LjUtMy4zLTMyLjUtMjAuNy0zMi41LTE2LjkgMC0yMC43IDUtMjAuNyAyOC43IDAgMjggMy41IDMzLjUgMjEuMiAzMy41IDE2LjQgMCAyMC4yLTUuNiAyMC4yLTI5Ljd6bTUzLjgtMy44YzAtMjUuNCAzLjMtMzcuOCAxMi4zLTQ1LjggOC44LTguMSAyMi4yLTExLjMgNDUuMS0xMS4zIDQyLjggMCA1NS43IDEyLjggNTUuNyA1NS43djExLjFoLTc1LjNjLS4zIDItLjMgNC0uMyA0LjggMCAxNi45IDQuNSAyMS45IDIwLjEgMjEuOSAxMy45IDAgMTcuOS0zIDE3LjktMTMuOWgzNy41djIuM2MwIDkuOC0yLjUgMTguOS02LjggMjQuNy03LjMgOS44LTE5LjYgMTMuNi00NC4zIDEzLjYtMjcuNSAwLTQxLjYtMy4zLTUwLjYtMTIuMy04LjUtOC41LTExLjMtMjEuMy0xMS4zLTUwLjh6bTc2LjQtMTEuNmMtLjMtMS44LS4zLTMuMy0uMy0zLjggMC0xMi4zLTMuMy0xNC42LTE5LjYtMTQuNi0xNC40IDAtMTcuMSAzLTE4LjEgMTUuMWwtLjMgMy4zaDM4LjN6bTU1LjYtNDUuM2gzOC4zbC0xLjggMTkuOWguN2M2LjgtMTQuOSAxNC40LTIwLjIgMjkuNy0yMC4yIDEwLjggMCAxOS4xIDMuMyAyMy40IDkuMyA1LjMgNy4zIDYuOCAxNC40IDYuOCAzNCAwIDEuNSAwIDUgLjIgOS4zaC0zNWMuMy0xLjguMy0zLjMuMy00IDAtMTUuNC0yLTE5LjQtMTAuMy0xOS40LTYuMyAwLTEwLjggMy4zLTEzLjEgOS4zLTEgMy0xIDQuMy0xIDEyLjN2NjhoLTM4LjNWMTkyLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwbGVQYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE2LjkgMTU4LjVjLTcuNSA4LjktMTkuNSAxNS45LTMxLjUgMTQuOS0xLjUtMTIgNC40LTI0LjggMTEuMy0zMi42IDcuNS05LjEgMjAuNi0xNS42IDMxLjMtMTYuMSAxLjIgMTIuNC0zLjcgMjQuNy0xMS4xIDMzLjhtMTAuOSAxNy4yYy0xNy40LTEtMzIuMyA5LjktNDAuNSA5LjktOC40IDAtMjEtOS40LTM0LjgtOS4xLTE3LjkuMy0zNC41IDEwLjQtNDMuNiAyNi41LTE4LjggMzIuMy00LjkgODAgMTMuMyAxMDYuMyA4LjkgMTMgMTkuNSAyNy4zIDMzLjUgMjYuOCAxMy4zLS41IDE4LjUtOC42IDM0LjUtOC42IDE2LjEgMCAyMC44IDguNiAzNC44IDguNCAxNC41LS4zIDIzLjYtMTMgMzIuNS0yNiAxMC4xLTE0LjggMTQuMy0yOS4xIDE0LjUtMjkuOS0uMy0uMy0yOC0xMC45LTI4LjMtNDIuOS0uMy0yNi44IDIxLjktMzkuNSAyMi45LTQwLjMtMTIuNS0xOC42LTMyLTIwLjYtMzguOC0yMS4xbTEwMC40LTM2LjJ2MTk0LjloMzAuM3YtNjYuNmg0MS45YzM4LjMgMCA2NS4xLTI2LjMgNjUuMS02NC4zcy0yNi40LTY0LTY0LjEtNjRoLTczLjJ6bTMwLjMgMjUuNWgzNC45YzI2LjMgMCA0MS4zIDE0IDQxLjMgMzguNnMtMTUgMzguOC00MS40IDM4LjhoLTM0LjhWMTY1em0xNjIuMiAxNzAuOWMxOSAwIDM2LjYtOS42IDQ0LjYtMjQuOWguNnYyMy40aDI4di05N2MwLTI4LjEtMjIuNS00Ni4zLTU3LjEtNDYuMy0zMi4xIDAtNTUuOSAxOC40LTU2LjggNDMuNmgyNy4zYzIuMy0xMiAxMy40LTE5LjkgMjguNi0xOS45IDE4LjUgMCAyOC45IDguNiAyOC45IDI0LjV2MTAuOGwtMzcuOCAyLjNjLTM1LjEgMi4xLTU0LjEgMTYuNS01NC4xIDQxLjUuMSAyNS4yIDE5LjcgNDIgNDcuOCA0MnptOC4yLTIzLjFjLTE2LjEgMC0yNi40LTcuOC0yNi40LTE5LjYgMC0xMi4zIDkuOS0xOS40IDI4LjgtMjAuNWwzMy42LTIuMXYxMWMwIDE4LjItMTUuNSAzMS4yLTM2IDMxLjJ6bTEwMi41IDc0LjZjMjkuNSAwIDQzLjQtMTEuMyA1NS41LTQ1LjRMNjQwIDE5M2gtMzAuOGwtMzUuNiAxMTUuMWgtLjZMNTM3LjQgMTkzaC0zMS42TDU1NyAzMzQuOWwtMi44IDguNmMtNC42IDE0LjYtMTIuMSAyMC4zLTI1LjUgMjAuMy0yLjQgMC03LS4zLTguOS0uNXYyMy40YzEuOC40IDkuMy43IDExLjYuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcHBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguNyAyNjguN2MtLjItMzYuNyAxNi40LTY0LjQgNTAtODQuOC0xOC44LTI2LjktNDcuMi00MS43LTg0LjctNDQuNi0zNS41LTIuOC03NC4zIDIwLjctODguNSAyMC43LTE1IDAtNDkuNC0xOS43LTc2LjQtMTkuN0M2My4zIDE0MS4yIDQgMTg0LjggNCAyNzMuNXEwIDM5LjMgMTQuNCA4MS4yYzEyLjggMzYuNyA1OSAxMjYuNyAxMDcuMiAxMjUuMiAyNS4yLS42IDQzLTE3LjkgNzUuOC0xNy45IDMxLjggMCA0OC4zIDE3LjkgNzYuNCAxNy45IDQ4LjYtLjcgOTAuNC04Mi41IDEwMi42LTExOS4zLTY1LjItMzAuNy02MS43LTkwLTYxLjctOTEuOXptLTU2LjYtMTY0LjJjMjcuMy0zMi40IDI0LjgtNjEuOSAyNC03Mi41LTI0LjEgMS40LTUyIDE2LjQtNjcuOSAzNC45LTE3LjUgMTkuOC0yNy44IDQ0LjMtMjUuNiA3MS45IDI2LjEgMiA0OS45LTExLjQgNjkuNS0zNC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFydHN0YXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzNzcuNGw0MyA3NC4zQTUxLjM1IDUxLjM1IDAgMCAwIDkwLjkgNDgwaDI4NS40bC01OS4yLTEwMi42ek01MDEuOCAzNTBMMzM1LjYgNTkuM0E1MS4zOCA1MS4zOCAwIDAgMCAyOTAuMiAzMmgtODguNGwyNTcuMyA0NDcuNiA0MC43LTcwLjVjMS45LTMuMiAyMS0yOS43IDItNTkuMXpNMjc1IDMwNC41bC0xMTUuNS0yMDBMNDQgMzA0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXN5bW1ldHJpayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTcuNSAzMDkuMmMzOC44LTQwIDU4LjEtODAgNTguNS0xMTYuMS44LTY1LjUtNTkuNC0xMTguMi0xNjkuNC0xMzVDMjc3LjkgMzguNCAxMTguMSA3My42IDAgMTQwLjUgNTIgMTE0IDExMC42IDkyLjMgMTcwLjcgODIuM2M3NC41LTIwLjUgMTUzLTI1LjQgMjIxLjMtMTQuOEM1NDQuNSA5MS4zIDU4OC44IDE5NSA0OTAuOCAyOTkuMmMtMTAuMiAxMC44LTIyIDIxLjEtMzUgMzAuNkwzMDQuOSAxMDMuNCAxMTQuNyAzODguOWMtNjUuNi0yOS40LTc2LjUtOTAuMi0xOS4xLTE1MS4yIDIwLjgtMjIuMiA0OC4zLTQxLjkgNzkuNS01OC4xIDIwLTEyLjIgMzkuNy0yMi42IDYyLTMwLjctNjUuMSAyMC4zLTEyMi43IDUyLjktMTYxLjYgOTIuOS0yNy43IDI4LjYtNDEuNCA1Ny4xLTQxLjcgODIuOS0uNSAzNS4xIDIzLjQgNjUuMSA2OC40IDgzbC0zNC41IDUxLjdoMTAxLjZsMjItMzQuNGMyMi4yIDEgNDUuMyAwIDY4LjYtMi43bC0yMi44IDM3LjFoMTM1LjVMMzQwIDQwNi4zYzE4LjYtNS4zIDM2LjktMTEuNSA1NC41LTE4LjdsNDUuOSA3MS44SDU0Mkw0NjguNiAzNDljMTguNS0xMi4xIDM1LTI1LjUgNDguOS0zOS44em0tMTg3LjYgODAuNWwtMjUtNDAuNi0zMi43IDUzLjNjLTIzLjQgMy41LTQ2LjcgNS4xLTY5LjIgNC40bDEwMS45LTE1OS4zIDc4LjcgMTIzYy0xNy4yIDcuNC0zNS4zIDEzLjktNTMuNyAxOS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUF0bGFzc2lhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIuMiAyMzYuNGMtNy43LTguMi0xOS43LTcuNy0yNC44IDIuOEwxLjYgNDkwLjJjLTUgMTAgMi40IDIxLjcgMTMuNCAyMS43aDE3NWM1LjguMSAxMS0zLjIgMTMuNC04LjQgMzcuOS03Ny44IDE1LjEtMTk2LjMtNTEuMi0yNjcuMXpNMjQ0LjQgOC4xYy0xMjIuMyAxOTMuNC04LjUgMzQ4LjYgNjUgNDk1LjUgMi41IDUuMSA3LjcgOC40IDEzLjQgOC40SDQ5N2MxMS4yIDAgMTguNC0xMS44IDEzLjQtMjEuNyAwIDAtMjM0LjUtNDcwLjYtMjQwLjQtNDgyLjMtNS4zLTEwLjYtMTguOC0xMC44LTI1LjYuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdWRpYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAxOTkuOXY1NGwtMzIwIDIwMEwwIDI1NHYtNTRsMzIwIDIwMCAzMjAtMjAwLjF6bS0xOTQuNSA3Mmw0Ny4xLTI5LjRjLTM3LjItNTUuOC0xMDAuNy05Mi42LTE3Mi43LTkyLjYtNzIgMC0xMzUuNSAzNi43LTE3Mi42IDkyLjRoLjNjMi41LTIuMyA1LjEtNC41IDcuNy02LjcgODkuNy03NC40IDIxOS40LTU4LjEgMjkwLjIgMzYuM3ptLTIyMC4xIDE4LjhjMTYuOS0xMS45IDM2LjUtMTguNyA1Ny40LTE4LjcgMzQuNCAwIDY1LjIgMTguNCA4Ni40IDQ3LjZsNDUuNC0yOC40Yy0yMC45LTI5LjktNTUuNi00OS41LTk0LjgtNDkuNS0zOC45IDAtNzMuNCAxOS40LTk0LjQgNDl6TTEwMy42IDE2MS4xYzEzMS44LTEwNC4zIDMxOC4yLTc2LjQgNDE3LjUgNjIuMWwuNyAxIDQ4LjgtMzAuNEM1MTcuMSAxMTIuMSA0MjQuOCA1OC4xIDMxOS45IDU4LjFjLTEwMy41IDAtMTk2LjYgNTMuNS0yNTAuNSAxMzUuNiA5LjktMTAuNSAyMi43LTIzLjUgMzQuMi0zMi42em00NjcgMzIuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdXRvcHJlZml4ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjQgMTZsLTE2MSA0ODBoNzcuNWwyNS40LTgxLjRoMTE5LjVMNDA1IDQ5Nmg3Ny41TDMxOC40IDE2em0tNDAuMyAzNDEuOWw0MS4yLTEzMC40aDEuNWw0MC45IDEzMC40aC04My42ek02NDAgNDA1bC0xMC0zMS40TDQ2Mi4xIDM1OGwxOS40IDU2LjVMNjQwIDQwNXptLTQ2Mi4xLTQ3TDEwIDM3My43IDAgNDA1bDE1OC41IDkuNCAxOS40LTU2LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYW5leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTMuMSAzMmgtMzEyYy0zOC45IDAtNzYuMiAzMS4yLTgzLjMgNjkuN0wxLjIgNDEwLjNDLTUuOSA0NDguOCAxOS45IDQ4MCA1OC45IDQ4MGgzMTJjMzguOSAwIDc2LjItMzEuMiA4My4zLTY5LjdsNTYuNy0zMDguNWM3LTM4LjYtMTguOC02OS44LTU3LjgtNjkuOHptLTU4LjIgMzQ3LjNsLTMyIDEzLjUtMTE1LjQtMTEwYy0xNC43IDEwLTI5LjIgMTkuNS00MS43IDI3LjFsMjIuMSA2NC4yLTE3LjkgMTIuNy00MC42LTYxLTUyLjQtNDguMSAxNS43LTE1LjQgNTggMzEuMWM5LjMtMTAuNSAyMC44LTIyLjYgMzIuOC0zNC45TDIwMyAyMjguOWwtNjguOC05OS44IDE4LjgtMjguOSA4LjktNC44TDI2NSAyMDcuOGw0LjkgNC41YzE5LjQtMTguOCAzMy44LTMyLjQgMzMuOC0zMi40IDcuNy02LjUgMjEuNS0yLjkgMzAuNyA3LjkgOSAxMC41IDEwLjYgMjQuNyAyLjcgMzEuMy0xLjggMS4zLTE1LjUgMTEuNC0zNS4zIDI1LjZsNC41IDcuMyA5NC45IDExOS40LTYuMyA3Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXZpYXRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNy4yIDI4My41bC0xOS00MS44SDM2LjFsLTE5IDQxLjhIMGw2Mi4yLTEzMS40IDYyLjIgMTMxLjRoLTE3LjJ6bS00NS05OC4xbC0xOS42IDQyLjVoMzkuMmwtMTkuNi00Mi41em0xMTIuNyAxMDIuNGwtNjIuMi0xMzEuNGgxNy4xbDQ1LjEgOTYgNDUuMS05NmgxN2wtNjIuMSAxMzEuNHptODAuNi00LjNWMTU2LjRIMjcxdjEyNy4xaC0xNS41em0yMDkuMS0xMTUuNnYxMTUuNmgtMTcuM1YxNjcuOWgtNDEuMnYtMTEuNWg5OS42djExLjVoLTQxLjF6TTY0MCAyMTguOGMwIDkuMi0xLjcgMTcuOC01LjEgMjUuOC0zLjQgOC04LjIgMTUuMS0xNC4yIDIxLjEtNiA2LTEzLjEgMTAuOC0yMS4xIDE0LjItOCAzLjQtMTYuNiA1LjEtMjUuOCA1LjFzLTE3LjgtMS43LTI1LjgtNS4xYy04LTMuNC0xNS4xLTguMi0yMS4xLTE0LjItNi02LTEwLjgtMTMtMTQuMi0yMS4xLTMuNC04LTUuMS0xNi42LTUuMS0yNS44czEuNy0xNy44IDUuMS0yNS44YzMuNC04IDguMi0xNS4xIDE0LjItMjEuMSA2LTYgMTMtOC40IDIxLjEtMTEuOSA4LTMuNCAxNi42LTUuMSAyNS44LTUuMXMxNy44IDEuNyAyNS44IDUuMWM4IDMuNCAxNS4xIDUuOCAyMS4xIDExLjkgNiA2IDEwLjcgMTMuMSAxNC4yIDIxLjEgMy40IDggNS4xIDE2LjYgNS4xIDI1Ljh6bS0xNS41IDBjMC03LjMtMS4zLTE0LTMuOS0yMC4zLTIuNi02LjMtNi4yLTExLjctMTAuOC0xNi4zLTQuNi00LjYtMTAtOC4yLTE2LjItMTAuOS02LjItMi43LTEyLjgtNC0xOS44LTRzLTEzLjYgMS4zLTE5LjggNGMtNi4yIDIuNy0xMS42IDYuMy0xNi4yIDEwLjktNC42IDQuNi04LjIgMTAtMTAuOCAxNi4zLTIuNiA2LjMtMy45IDEzLjEtMy45IDIwLjMgMCA3LjMgMS4zIDE0IDMuOSAyMC4zIDIuNiA2LjMgNi4yIDExLjcgMTAuOCAxNi4zIDQuNiA0LjYgMTAgOC4yIDE2LjIgMTAuOSA2LjIgMi43IDEyLjggNCAxOS44IDRzMTMuNi0xLjMgMTkuOC00YzYuMi0yLjcgMTEuNi02LjMgMTYuMi0xMC45IDQuNi00LjYgOC4yLTEwIDEwLjgtMTYuMyAyLjYtNi4zIDMuOS0xMy4xIDMuOS0yMC4zem0tOTQuOCA5Ni43di02LjNsODguOS0xMC0yNDIuOSAxMy40Yy42LTIuMiAxLjEtNC42IDEuNC03LjIuMy0yIC41LTQuMi42LTYuNWw2NC44LTguMS02NC45IDEuOWMwLS40LS4xLS43LS4xLTEuMS0yLjgtMTcuMi0yNS41LTIzLjctMjUuNS0yMy43bC0xLjEtMjYuM2gyMy44bDE5IDQxLjhoMTcuMUwzNDguNiAxNTJsLTYyLjIgMTMxLjRoMTcuMWwxOS00MS44aDIzLjZMMzQ1IDI2OHMtMjIuNyA2LjUtMjUuNSAyMy43Yy0uMS4zLS4xLjctLjEgMS4xbC02NC45LTEuOSA2NC44IDguMWMuMSAyLjMuMyA0LjQuNiA2LjUuMyAyLjYuOCA1IDEuNCA3LjJMNzguNCAyOTkuMmw4OC45IDEwdjYuM2MtNS45LjktMTAuNSA2LTEwLjUgMTIuMiAwIDYuOCA1LjYgMTIuNCAxMi40IDEyLjQgNi44IDAgMTIuNC01LjYgMTIuNC0xMi40IDAtNi4yLTQuNi0xMS4zLTEwLjUtMTIuMnYtNS44bDgwLjMgOXY1LjRjLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTQuOWwyOC40IDMuMnYyMy43aC01LjlWMzYwaDUuOXYtNi42aDV2Ni42aDUuOXYtMTMuOGgtNS45VjMyM2wzOC4zIDQuM2M4LjEgMTEuNCAxOSAxMy42IDE5IDEzLjZsLS4xIDYuNy01LjEuMi0uMSAxMi4xaDQuMWwuMS01aDUuMmwuMSA1aDQuMWwtLjEtMTIuMS01LjEtLjItLjEtNi43czEwLjktMi4xIDE5LTEzLjZsMzguMy00LjN2MjMuMmgtNS45VjM2MGg1Ljl2LTYuNmg1djYuNmg1Ljl2LTEzLjhoLTUuOXYtMjMuN2wyOC40LTMuMnY0LjljLTUuNyAxLjEtOS45IDYuMi05LjkgMTIuMSAwIDYuOCA1LjYgMTAuMiAxMi40IDEwLjIgNi44IDAgMTIuNC0zLjQgMTIuNC0xMC4yIDAtNi00LjMtMTEtOS45LTEyLjF2LTUuNGw4MC4zLTl2NS44Yy01LjkuOS0xMC41IDYtMTAuNSAxMi4yIDAgNi44IDUuNiAxMi40IDEyLjQgMTIuNCA2LjggMCAxMi40LTUuNiAxMi40LTEyLjQtLjItNi4zLTQuNy0xMS40LTEwLjctMTIuM3ptLTIwMC44LTg3LjZsMTkuNi00Mi41IDE5LjYgNDIuNWgtMTcuOWwtMS43LTQwLjMtMS43IDQwLjNoLTE3Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4MC40MSAyMDMuMDFjLS43MiAyMi42NSAxMC42IDMyLjY4IDEwLjg4IDM5LjA1YTguMTY0IDguMTY0IDAgMCAxLTQuMSA2LjI3bC0xMi44IDguOTZhMTAuNjYgMTAuNjYgMCAwIDEtNS42MyAxLjkyYy0uNDMtLjAyLTguMTkgMS44My0yMC40OC0yNS42MWE3OC42MDggNzguNjA4IDAgMCAxLTYyLjYxIDI5LjQ1Yy0xNi4yOC44OS02MC40LTkuMjQtNTguMTMtNTYuMjEtMS41OS0zOC4yOCAzNC4wNi02Mi4wNiA3MC45My02MC4wNSA3LjEuMDIgMjEuNi4zNyA0Ni45OSA2LjI3di0xNS42MmMyLjY5LTI2LjQ2LTE0LjctNDYuOTktNDQuODEtNDMuOTEtMi40LjAxLTE5LjQtLjUtNDUuODQgMTAuMTEtNy4zNiAzLjM4LTguMyAyLjgyLTEwLjc1IDIuODItNy40MSAwLTQuMzYtMjEuNDgtMi45NC0yNC4yIDUuMjEtNi40IDM1Ljg2LTE4LjM1IDY1Ljk0LTE4LjE4YTc2Ljg1NyA3Ni44NTcgMCAwIDEgNTUuNjkgMTcuMjggNzAuMjg1IDcwLjI4NSAwIDAgMSAxNy42NyA1Mi4zNmwtLjAxIDY5LjI5ek05My45OSAyMzUuNGMzMi40My0uNDcgNDYuMTYtMTkuOTcgNDkuMjktMzAuNDcgMi40Ni0xMC4wNSAyLjA1LTE2LjQxIDIuMDUtMjcuNC05LjY3LTIuMzItMjMuNTktNC44NS0zOS41Ni00Ljg3LTE1LjE1LTEuMTQtNDIuODIgNS42My00MS43NCAzMi4yNi0xLjI0IDE2Ljc5IDExLjEyIDMxLjQgMjkuOTYgMzAuNDh6bTE3MC45MiAyMy4wNWMtNy44Ni43Mi0xMS41Mi00Ljg2LTEyLjY4LTEwLjM3bC00OS44LTE2NC42NWMtLjk3LTIuNzgtMS42MS01LjY1LTEuOTItOC41OGE0LjYxIDQuNjEgMCAwIDEgMy44Ni01LjI1Yy4yNC0uMDQtMi4xMyAwIDIyLjI1IDAgOC43OC0uODggMTEuNjQgNi4wMyAxMi41NSAxMC4zN2wzNS43MiAxNDAuODMgMzMuMTYtMTQwLjgzYy41My0zLjIyIDIuOTQtMTEuMDcgMTIuOC0xMC4yNGgxNy4xNmMyLjE3LS4xOCAxMS4xMS0uNSAxMi42OCAxMC4zN2wzMy40MiAxNDIuNjNMNDIwLjk4IDgwLjFjLjQ4LTIuMTggMi43Mi0xMS4zNyAxMi42OC0xMC4zN2gxOS43MmMuODUtLjEzIDYuMTUtLjgxIDUuMjUgOC41OC0uNDMgMS44NSAzLjQxLTEwLjY2LTUyLjc1IDE2OS45LTEuMTUgNS41MS00LjgyIDExLjA5LTEyLjY4IDEwLjM3aC0xOC42OWMtMTAuOTQgMS4xNS0xMi41MS05LjY2LTEyLjY4LTEwLjc1TDMyOC42NyAxMTAuN2wtMzIuNzggMTM2Ljk5Yy0uMTYgMS4wOS0xLjczIDExLjktMTIuNjggMTAuNzVoLTE4LjN6bTI3My40OCA1LjYzYy01Ljg4LjAxLTMzLjkyLS4zLTU3LjM2LTEyLjI5YTEyLjgwMiAxMi44MDIgMCAwIDEtNy44MS0xMS45MXYtMTAuNzVjMC04LjQ1IDYuMi02LjkgOC44My01Ljg5IDEwLjA0IDQuMDYgMTYuNDggNy4xNCAyOC44MSA5LjYgMzYuNjUgNy41MyA1Mi43Ny0yLjMgNTYuNzItNC40OCAxMy4xNS03LjgxIDE0LjE5LTI1LjY4IDUuMjUtMzQuOTUtMTAuNDgtOC43OS0xNS40OC05LjEyLTUzLjEzLTIxLTQuNjQtMS4yOS00My43LTEzLjYxLTQzLjc5LTUyLjM2LS42MS0yOC4yNCAyNS4wNS01Ni4xOCA2OS41Mi01NS45NSAxMi42Ny0uMDEgNDYuNDMgNC4xMyA1NS41NyAxNS42MiAxLjM1IDIuMDkgMi4wMiA0LjU1IDEuOTIgNy4wNHYxMC4xMWMwIDQuNDQtMS42MiA2LjY2LTQuODcgNi42Ni03LjcxLS44Ni0yMS4zOS0xMS4xNy00OS4xNi0xMC43NS02Ljg5LS4zNi0zOS44OS45MS0zOC40MSAyNC45Ny0uNDMgMTguOTYgMjYuNjEgMjYuMDcgMjkuNyAyNi44OSAzNi40NiAxMC45NyA0OC42NSAxMi43OSA2My4xMiAyOS41OCAxNy4xNCAyMi4yNSA3LjkgNDguMyA0LjM1IDU1LjQ0LTE5LjA4IDM3LjQ5LTY4LjQyIDM0LjQ0LTY5LjI2IDM0LjQyem00MC4yIDEwNC44NmMtNzAuMDMgNTEuNzItMTcxLjY5IDc5LjI1LTI1OC40OSA3OS4yNUE0NjkuMTI3IDQ2OS4xMjcgMCAwIDEgMi44MyAzMjcuNDZjLTYuNTMtNS44OS0uNzctMTMuOTYgNy4xNy05LjQ3YTYzNy4zNyA2MzcuMzcgMCAwIDAgMzE2Ljg4IDg0LjEyIDYzMC4yMiA2MzAuMjIgMCAwIDAgMjQxLjU5LTQ5LjU1YzExLjc4LTUgMjEuNzcgNy44IDEwLjEyIDE2LjM4em0yOS4xOS0zMy4yOWMtOC45Ni0xMS41Mi01OS4yOC01LjM4LTgxLjgxLTIuNjktNi43OS43Ny03Ljk0LTUuMTItMS43OS05LjQ3IDQwLjA3LTI4LjE3IDEwNS44OC0yMC4xIDExMy40NC0xMC42MyA3LjU1IDkuNDctMi4wNSA3NS40MS0zOS41NiAxMDYuOTEtNS43NiA0Ljg3LTExLjI3IDIuMy04LjcxLTQuMSA4LjQ0LTIxLjI1IDI3LjM5LTY4LjQ5IDE4LjQzLTgwLjAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbmRjYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTQ4LjIsMzI2LjFoLTE4MUwyMDcuOSwxNzhoMTgxWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRsZU5ldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDguNjEgMjI1LjYyYzI2Ljg3LjE4IDM1LjU3LTcuNDMgMzguOTItMTIuMzcgMTIuNDctMTYuMzItNy4wNi00Ny42LTUyLjg1LTcxLjMzIDE3Ljc2LTMzLjU4IDMwLjExLTYzLjY4IDM2LjM0LTg1LjMgMy4zOC0xMS44MyAxLjA5LTE5IC40NS0yMC4yNS0xLjcyIDEwLjUyLTE1Ljg1IDQ4LjQ2LTQ4LjIgMTAwLjA1LTI1LTExLjIyLTU2LjUyLTIwLjEtOTMuNzctMjMuOC04Ljk0LTE2Ljk0LTM0Ljg4LTYzLjg2LTYwLjQ4LTg4LjkzQzI1Mi4xOCA3LjE0IDIzOC43IDEuMDcgMjI4LjE4LjIyaC0uMDVjLTEzLjgzLTEuNTUtMjIuNjcgNS44NS0yNy40IDExLTE3LjIgMTguNTMtMjQuMzMgNDguODctMjUgODQuMDctNy4yNC0xMi4zNS0xNy4xNy0yNC42My0yOC41LTI1LjkzaC0uMThjLTIwLjY2LTMuNDgtMzguMzkgMjkuMjItMzYgODEuMjktMzguMzYgMS4zOC03MSA1Ljc1LTkzIDExLjIzLTkuOSAyLjQ1LTE2LjIyIDcuMjctMTcuNzYgOS43MiAxLS4zOCAyMi40LTkuMjIgMTExLjU2LTkuMjIgNS4yMiA1MyAyOS43NSAxMDEuODIgMjYgOTMuMTktOS43MyAxNS40LTM4LjI0IDYyLjM2LTQ3LjMxIDk3LjctNS44NyAyMi44OC00LjM3IDM3LjYxLjE1IDQ3LjE0IDUuNTcgMTIuNzUgMTYuNDEgMTYuNzIgMjMuMiAxOC4yNiAyNSA1LjcxIDU1LjM4LTMuNjMgODYuNy0yMS4xNC03LjUzIDEyLjg0LTEzLjkgMjguNTEtOS4wNiAzOS4zNCA3LjMxIDE5LjY1IDQ0LjQ5IDE4LjY2IDg4LjQ0LTkuNDUgMjAuMTggMzIuMTggNDAuMDcgNTcuOTQgNTUuNyA3NC4xMmEzOS43OSAzOS43OSAwIDAgMCA4Ljc1IDcuMDljNS4xNCAzLjIxIDguNTggMy4zNyA4LjU4IDMuMzctOC4yNC02Ljc1LTM0LTM4LTYyLjU0LTkxLjc4IDIyLjIyLTE2IDQ1LjY1LTM4Ljg3IDY3LjQ3LTY5LjI3IDEyMi44MiA0LjYgMTQzLjI5LTI0Ljc2IDE0OC0zMS42NCAxNC42Ny0xOS44OCAzLjQzLTU3LjQ0LTU3LjMyLTkzLjY5em0tNzcuODUgMTA2LjIyYzIzLjgxLTM3LjcxIDMwLjM0LTY3Ljc3IDI5LjQ1LTkyLjMzIDI3Ljg2IDE3LjU3IDQ3LjE4IDM3LjU4IDQ5LjA2IDU4LjgzIDEuMTQgMTIuOTMtOC4xIDI5LjEyLTc4LjUxIDMzLjV6TTIxNi45IDM4Ny42OWM5Ljc2LTYuMjMgMTkuNTMtMTMuMTIgMjkuMi0yMC40OSA2LjY4IDEzLjMzIDEzLjYgMjYuMSAyMC42IDM4LjE5LTQwLjYgMjEuODYtNjguODQgMTIuNzYtNDkuOC0xNy43em0yMTUtMTcxLjM1Yy0xMC4yOS01LjM0LTIxLjE2LTEwLjM0LTMyLjM4LTE1LjA1YTcyMi40NTkgNzIyLjQ1OSAwIDAgMCAyMi43NC0zNi45YzM5LjA2IDI0LjEgNDUuOSA1My4xOCA5LjY0IDUxLjk1ek0yNzkuMTggMzk4Yy01LjUxLTExLjM1LTExLTIzLjUtMTYuNS0zNi40NCA0My4yNSAxLjI3IDYyLjQyLTE4LjczIDYzLjI4LTIwLjQxIDAgLjA3LTI1IDE1LjY0LTYyLjUzIDEyLjI1YTcxOC43OCA3MTguNzggMCAwIDAgODUuMDYtODRxMTMuMDYtMTUuMzEgMjQuOTMtMzEuMTFjLS4zNi0uMjktMS41NC0zLTE2LjUxLTEyLTUxLjcgNjAuMjctMTAyLjM0IDk4LTEzMi43NSAxMTUuOTItMjAuNTktMTEuMTgtNDAuODQtMzEuNzgtNTUuNzEtNjEuNDktMjAtMzkuOTItMzAtODIuMzktMzEuNTctMTE2LjA3IDEyLjMuOTEgMjUuMjcgMi4xNyAzOC44NSAzLjg4LTIyLjI5IDM2LjgtMTQuMzkgNjMtMTMuNDcgNjQuMjMgMC0uMDctLjk1LTI5LjE3IDIwLjE0LTU5LjU3YTY5NS4yMyA2OTUuMjMgMCAwIDAgNDQuNjcgMTUyLjg0Yy45My0uMzggMS44NC44OCAxOC42Ny04LjI1LTI2LjMzLTc0LjQ3LTMzLjc2LTEzOC4xNy0zNC0xNzMuNDMgMjAtMTIuNDIgNDguMTgtMTkuOCA4MS42My0xNy44MSA0NC41NyAyLjY3IDg2LjM2IDE1LjI1IDExNi4zMiAzMC43MXEtMTAuNjkgMTUuNjYtMjMuMzMgMzIuNDdDMzY1LjYzIDE1MiAzMzkuMSAxNDUuODQgMzM3LjUgMTQ2Yy4xMSAwIDI1LjkgMTQuMDcgNDEuNTIgNDcuMjJhNzE3LjYzIDcxNy42MyAwIDAgMC0xMTUuMzQtMzEuNzEgNjQ2LjYwOCA2NDYuNjA4IDAgMCAwLTM5LjM5LTYuMDVjLS4wNy40NS0xLjgxIDEuODUtMi4xNiAyMC4zM0MzMDAgMTkwLjI4IDM1OC43OCAyMTUuNjggMzg5LjM2IDIzM2MuNzQgMjMuNTUtNi45NSA1MS42MS0yNS40MSA3OS41Ny0yNC42IDM3LjMxLTU2LjM5IDY3LjIzLTg0Ljc3IDg1LjQzem0yNy40LTI4N2MtNDQuNTYtMS42Ni03My41OCA3LjQzLTk0LjY5IDIwLjY3IDItNTIuMyAyMS4zMS03Ni4zOCAzOC4yMS03NS4yOEMyNjcgNTIuMTUgMzA1IDEwOC41NSAzMDYuNTggMTExem0tMTMwLjY1IDMuMWMuNDggMTIuMTEgMS41OSAyNC42MiAzLjIxIDM3LjI4LTE0LjU1LS44NS0yOC43NC0xLjI1LTQyLjQtMS4yNi0uMDggMy4yNC0uMTItNTEgMjQuNjctNDkuNTloLjA5YzUuNzYgMS4wOSAxMC42MyA2Ljg4IDE0LjQzIDEzLjU3em0tMjguMDYgMTYyYzIwLjc2IDM5LjcgNDMuMyA2MC41NyA2NS4yNSA3Mi4zMS00Ni43OSAyNC43Ni03Ny41MyAyMC04NC45MiA0LjUxLS4yLS4yMS0xMS4xMy0xNS4zIDE5LjY3LTc2Ljgxem0yMTAuMDYgNzQuOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlaGFuY2VTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjUgMjkzYzAgMTkuMy0xNCAyNS40LTMxLjIgMjUuNGgtNDUuMXYtNTIuOWg0NmMxOC42LjEgMzAuMyA3LjggMzAuMyAyNy41em0tNy43LTgyLjNjMC0xNy43LTEzLjctMjEuOS0yOC45LTIxLjloLTM5LjZ2NDQuOEgxNTNjMTUuMSAwIDI1LjgtNi42IDI1LjgtMjIuOXptMTMyLjMgMjMuMmMtMTguMyAwLTMwLjUgMTEuNC0zMS43IDI5LjdoNjIuMmMtMS43LTE4LjUtMTEuMy0yOS43LTMwLjUtMjkuN3pNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0yNzEuNyAxODVoNzcuOHYtMTguOWgtNzcuOFYxODV6bS00MyAxMTAuM2MwLTI0LjEtMTEuNC00NC45LTM1LTUxLjYgMTcuMi04LjIgMjYuMi0xNy43IDI2LjItMzcgMC0zOC4yLTI4LjUtNDcuNS02MS40LTQ3LjVINjh2MTkyaDkzLjFjMzQuOS0uMiA2Ny42LTE2LjkgNjcuNi01NS45ek0zODAgMjgwLjVjMC00MS4xLTI0LjEtNzUuNC02Ny42LTc1LjQtNDIuNCAwLTcxLjEgMzEuOC03MS4xIDczLjYgMCA0My4zIDI3LjMgNzMgNzEuMSA3MyAzMy4yIDAgNTQuNy0xNC45IDY1LjEtNDYuOGgtMzMuN2MtMy43IDExLjktMTguNiAxOC4xLTMwLjIgMTguMS0yMi40IDAtMzQuMS0xMy4xLTM0LjEtMzUuM2gxMDAuMmMuMS0yLjMuMy00LjguMy03LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmVoYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzIgMjM3LjJjMzEuOC0xNS4yIDQ4LjQtMzguMiA0OC40LTc0IDAtNzAuNi01Mi42LTg3LjgtMTEzLjMtODcuOEgwdjM1NC40aDE3MS44YzY0LjQgMCAxMjQuOS0zMC45IDEyNC45LTEwMi45IDAtNDQuNS0yMS4xLTc3LjQtNjQuNy04OS43ek03Ny45IDEzNS45SDE1MWMyOC4xIDAgNTMuNCA3LjkgNTMuNCA0MC41IDAgMzAuMS0xOS43IDQyLjItNDcuNSA0Mi4yaC03OXYtODIuN3ptODMuMyAyMzMuN0g3Ny45VjI3Mmg4NC45YzM0LjMgMCA1NiAxNC4zIDU2IDUwLjYgMCAzNS44LTI1LjkgNDctNTcuNiA0N3ptMzU4LjUtMjQwLjdIMzc2Vjk0aDE0My43djM0Ljl6TTU3NiAzMDUuMmMwLTc1LjktNDQuNC0xMzkuMi0xMjQuOS0xMzkuMi03OC4yIDAtMTMxLjMgNTguOC0xMzEuMyAxMzUuOCAwIDc5LjkgNTAuMyAxMzQuNyAxMzEuMyAxMzQuNyA2MS4zIDAgMTAxLTI3LjYgMTIwLjEtODYuM0g1MDljLTYuNyAyMS45LTM0LjMgMzMuNS01NS43IDMzLjUtNDEuMyAwLTYzLTI0LjItNjMtNjUuM2gxODUuMWMuMy00LjIuNi04LjcuNi0xMy4yek0zOTAuNCAyNzRjMi4zLTMzLjcgMjQuNy01NC44IDU4LjUtNTQuOCAzNS40IDAgNTMuMiAyMC44IDU2LjIgNTQuOEgzOTAuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW1vYmplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMySDMyQzE0LjQgMzIgMCA0Ni40IDAgNjR2Mzg0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDM4NGMxNy42IDAgMzItMTQuNCAzMi0zMlY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptLTY0IDI1Ny40YzAgNDkuNC0xMS40IDgyLjYtMTAzLjggODIuNmgtMTYuOWMtNDQuMSAwLTYyLjQtMTQuOS03MC40LTM4LjhoLS45VjM2OEg5NlYxMzZoNjR2NzQuN2gxLjFjNC42LTMwLjUgMzkuNy0zOC44IDY5LjctMzguOGgxNy4zYzkyLjQgMCAxMDMuOCAzMy4xIDEwMy44IDgyLjV2MzV6bS02NC0yOC45djIyLjljMCAyMS43LTMuNCAzMy44LTM4LjQgMzMuOGgtNDUuM2MtMjguOSAwLTQ0LjEtNi41LTQ0LjEtMzUuN3YtMTljMC0yOS4zIDE1LjItMzUuNyA0NC4xLTM1LjdoNDUuM2MzNS0uMiAzOC40IDEyIDM4LjQgMzMuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaXRidWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIuMiAzMkExNiAxNiAwIDAgMCA2IDQ3LjhhMjYuMzUgMjYuMzUgMCAwIDAgLjIgMi44bDY3LjkgNDEyLjFhMjEuNzcgMjEuNzcgMCAwIDAgMjEuMyAxOC4yaDMyNS43YTE2IDE2IDAgMCAwIDE2LTEzLjRMNTA1IDUwLjdhMTYgMTYgMCAwIDAtMTMuMi0xOC4zIDI0LjU4IDI0LjU4IDAgMCAwLTIuOC0uMkwyMi4yIDMyem0yODUuOSAyOTcuOGgtMTA0bC0yOC4xLTE0N2gxNTcuM2wtMjUuMiAxNDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHptLTE0MS42NTEtMzUuMzNjNC45MzctMzIuOTk5LTIwLjE5MS01MC43MzktNTQuNTUtNjIuNTczbDExLjE0Ni00NC43MDItMjcuMjEzLTYuNzgxLTEwLjg1MSA0My41MjRjLTcuMTU0LTEuNzgzLTE0LjUwMi0zLjQ2NC0yMS44MDMtNS4xM2wxMC45MjktNDMuODEtMjcuMTk4LTYuNzgxLTExLjE1MyA0NC42ODZjLTUuOTIyLTEuMzQ5LTExLjczNS0yLjY4Mi0xNy4zNzctNC4wODRsLjAzMS0uMTQtMzcuNTMtOS4zNy03LjIzOSAyOS4wNjJzMjAuMTkxIDQuNjI3IDE5Ljc2NSA0LjkxM2MxMS4wMjIgMi43NTEgMTMuMDE0IDEwLjA0NCAxMi42OCAxNS44MjVsLTEyLjY5NiA1MC45MjVjLjc2LjE5NCAxLjc0NC40NzMgMi44MjkuOTA3LS45MDctLjIyNS0xLjg3Ni0uNDczLTIuODc2LS43MTNsLTE3Ljc5NiA3MS4zMzhjLTEuMzQ5IDMuMzQ4LTQuNzY3IDguMzctMTIuNDcxIDYuNDY0LjI3MS4zOTUtMTkuNzgtNC45MzctMTkuNzgtNC45MzdsLTEzLjUxIDMxLjE0NyAzNS40MTQgOC44MjdjNi41ODggMS42NTEgMTMuMDQ1IDMuMzc5IDE5LjQgNS4wMDZsLTExLjI2MiA0NS4yMTMgMjcuMTgyIDYuNzgxIDExLjE1My00NC43MzNhMTAzOC4yMDkgMTAzOC4yMDkgMCAwIDAgMjEuNjg3IDUuNjI3bC0xMS4xMTUgNDQuNTIzIDI3LjIxMyA2Ljc4MSAxMS4yNjItNDUuMTI4YzQ2LjQwNCA4Ljc4MSA4MS4yOTkgNS4yMzkgOTUuOTg2LTM2LjcyNyAxMS44MzYtMzMuNzktLjU4OS01My4yODEtMjUuMDA0LTY1Ljk5MSAxNy43OC00LjA5OCAzMS4xNzQtMTUuNzkyIDM0Ljc0Ny0zOS45NDl6bS02Mi4xNzcgODcuMTc5Yy04LjQxIDMzLjc5LTY1LjMwOCAxNS41MjMtODMuNzU1IDEwLjk0M2wxNC45NDQtNTkuODk5YzE4LjQ0NiA0LjYwMyA3Ny42IDEzLjcxNyA2OC44MTEgNDguOTU2em04LjQxNy04Ny42NjdjLTcuNjczIDMwLjczNi01NS4wMzEgMTUuMTItNzAuMzkzIDExLjI5MmwxMy41NDgtNTQuMzI3YzE1LjM2MyAzLjgyOCA2NC44MzYgMTAuOTczIDU2Ljg0NSA0My4wMzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03OC40IDY3LjJDMTczLjgtMjIgMzI0LjUtMjQgNDIxLjUgNzFjMTQuMyAxNC4xLTYuNCAzNy4xLTIyLjQgMjEuNS04NC44LTgyLjQtMjE1LjgtODAuMy0yOTguOS0zLjItMTYuMyAxNS4xLTM2LjUtOC4zLTIxLjgtMjIuMXptOTguOSA0MTguNmMxOS4zIDUuNyAyOS4zLTIzLjYgNy45LTMwQzczIDQyMS45IDkuNCAzMDYuMSAzNy43IDE5NC44YzUtMTkuNi0yNC45LTI4LjEtMzAuMi03LjEtMzIuMSAxMjcuNCA0MS4xIDI1OS44IDE2OS44IDI5OC4xem0xNDguMS0yYzEyMS45LTQwLjIgMTkyLjktMTY2LjkgMTY0LjQtMjkxLTQuNS0xOS43LTM0LjktMTMuOC0zMCA3LjkgMjQuMiAxMDcuNy0zNy4xIDIxNy45LTE0My4yIDI1My40LTIxLjIgNy0xMC40IDM2IDguOCAyOS43em0tNjIuOS03OWwuMi03MS44YzAtOC4yLTYuNi0xNC44LTE0LjgtMTQuOC04LjIgMC0xNC44IDYuNy0xNC44IDE0LjhsLS4yIDcxLjhjMCA4LjIgNi42IDE0LjggMTQuOCAxNC44czE0LjgtNi42IDE0LjgtMTQuOHptNzEtMjY5YzIuMSA5MC45IDQuNyAxMzEuOS04NS41IDEzMi41LTkyLjUtLjctODYuOS00NC4zLTg1LjUtMTMyLjUgMC0yMS44LTMyLjUtMTkuNi0zMi41IDB2NzEuNmMwIDY5LjMgNjAuNyA5MC45IDExOCA5MC4xIDU3LjMuOCAxMTgtMjAuOCAxMTgtOTAuMXYtNzEuNmMwLTE5LjYtMzIuNS0yMS44LTMyLjUgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja1RpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMzE2LjUgMzI1LjJMMjI0IDQ0NS45bC05Mi41LTg4LjcgNjQuNS0xODQtNjQuNS04Ni42aDE4NC45TDI1MiAxNzMuMmw2NC41IDE4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGFja2JlcnJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NiAxMTYuOWMwIDIzLjQtMTYuNCA0OS4xLTcyLjUgNDkuMUgyMy40bDIxLTg4LjhoNjcuOGM0Mi4xIDAgNTMuOCAyMy4zIDUzLjggMzkuN3ptMTI2LjItMzkuN2gtNjcuOEwyMDUuNyAxNjZoNzAuMWM1My44IDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjQtMTEuNi0zOS43LTUzLjctMzkuN3pNODguOCAyMDguMUgyMUwwIDI5Ni45aDcwLjFjNTYuMSAwIDcyLjUtMjMuNCA3Mi41LTQ5LjEgMC0xNi4zLTExLjctMzkuNy01My44LTM5Ljd6bTE4MC4xIDBoLTY3LjhsLTE4LjcgODguOGg3MC4xYzUzLjggMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS43LTM5LjctNTMuNy0zOS43em0xODkuMy01My44aC02Ny44bC0xOC43IDg4LjhoNzAuMWM1My44IDAgNzAuMS0yMy40IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3ptLTI4IDEzNy45aC02Ny44TDM0My43IDM4MWg3MC4xYzU2LjEgMCA3MC4xLTIzLjQgNzAuMS00OS4xIDAtMTYuMy0xMS42LTM5LjctNTMuNy0zOS43ek0yNDAuOCAzNDZIMTczbC0xOC43IDg4LjhoNzAuMWM1Ni4xIDAgNzAuMS0yNS43IDcwLjEtNDkuMS4xLTE2LjMtMTEuNi0zOS43LTUzLjctMzkuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDYuNiAyMjIuN2MtMS44LTgtNi44LTE1LjQtMTIuNS0xOC41LTEuOC0xLTEzLTIuMi0yNS0yLjctMjAuMS0uOS0yMi4zLTEuMy0yOC43LTUtMTAuMS01LjktMTIuOC0xMi4zLTEyLjktMjkuNS0uMS0zMy0xMy44LTYzLjctNDAuOS05MS4zLTE5LjMtMTkuNy00MC45LTMzLTY1LjUtNDAuNS01LjktMS44LTE5LjEtMi40LTYzLjMtMi45LTY5LjQtLjgtODQuOC42LTEwOC40IDEwQzQ1LjkgNTkuNSAxNC43IDk2LjEgMy4zIDE0Mi45IDEuMiAxNTEuNy43IDE2NS44LjIgMjQ2LjhjLS42IDEwMS41LjEgMTE2LjQgNi40IDEzNi41IDE1LjYgNDkuNiA1OS45IDg2LjMgMTA0LjQgOTQuMyAxNC44IDIuNyAxOTcuMyAzLjMgMjE2IC44IDMyLjUtNC40IDU4LTE3LjUgODEuOS00MS45IDE3LjMtMTcuNyAyOC4xLTM2LjggMzUuMi02Mi4xIDQuOS0xNy42IDQuNS0xNDIuOCAyLjUtMTUxLjd6bS0zMjIuMS02My42YzcuOC03LjkgMTAtOC4yIDU4LjgtOC4yIDQzLjkgMCA0NS40LjEgNTEuOCAzLjQgOS4zIDQuNyAxMy40IDExLjMgMTMuNCAyMS45IDAgOS41LTMuOCAxNi4yLTEyLjMgMjEuNi00LjYgMi45LTcuMyAzLjEtNTAuMyAzLjMtMjYuNS4yLTQ3LjctLjQtNTAuOC0xLjItMTYuNi00LjctMjIuOC0yOC41LTEwLjYtNDAuOHptMTkxLjggMTk5LjhsLTE0LjkgMi40LTc3LjUuOWMtNjguMS44LTg3LjMtLjQtOTAuOS0yLTcuMS0zLjEtMTMuOC0xMS43LTE0LjktMTkuNC0xLjEtNy4zIDIuNi0xNy4zIDguMi0yMi40IDcuMS02LjQgMTAuMi02LjYgOTcuMy02LjcgODkuNi0uMSA4OS4xLS4xIDk3LjYgNy44IDEyLjEgMTEuMyA5LjUgMzEuMi00LjkgMzkuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi40IDE5NmM0LjgtNC45IDYuMi01LjEgMzYuNC01LjEgMjcuMiAwIDI4LjEuMSAzMi4xIDIuMSA1LjggMi45IDguMyA3IDguMyAxMy42IDAgNS45LTIuNCAxMC03LjYgMTMuNC0yLjggMS44LTQuNSAxLjktMzEuMSAyLjEtMTYuNC4xLTI5LjUtLjItMzEuNS0uOC0xMC4zLTIuOS0xNC4xLTE3LjctNi42LTI1LjN6bTYxLjQgOTQuNWMtNTMuOSAwLTU1LjguMi02MC4yIDQuMS0zLjUgMy4xLTUuNyA5LjQtNS4xIDEzLjkuNyA0LjcgNC44IDEwLjEgOS4yIDEyIDIuMiAxIDE0LjEgMS43IDU2LjMgMS4ybDQ3LjktLjYgOS4yLTEuNWM5LTUuMSAxMC41LTE3LjQgMy4xLTI0LjQtNS4zLTQuNy01LTQuNy02MC40LTQuN3ptMjIzLjQgMTMwLjFjLTMuNSAyOC40LTIzIDUwLjQtNTEuMSA1Ny41LTcuMiAxLjgtOS43IDEuOS0xNzIuOSAxLjgtMTU3LjggMC0xNjUuOS0uMS0xNzItMS44LTguNC0yLjItMTUuNi01LjUtMjIuMy0xMC01LjYtMy44LTEzLjktMTEuOC0xNy0xNi40LTMuOC01LjYtOC4yLTE1LjMtMTAtMjJDLjEgNDIzIDAgNDIwLjMgMCAyNTYuMyAwIDkzLjIgMCA4OS43IDEuOCA4Mi42IDguMSA1Ny45IDI3LjcgMzkgNTMgMzMuNGM3LjMtMS42IDMzMi4xLTEuOSAzNDAtLjMgMjEuMiA0LjMgMzcuOSAxNy4xIDQ3LjYgMzYuNCA3LjcgMTUuMyA3LTEuNSA3LjMgMTgwLjYuMiAxMTUuOCAwIDE2NC41LS43IDE3MC41em0tODUuNC0xODUuMmMtMS4xLTUtNC4yLTkuNi03LjctMTEuNS0xLjEtLjYtOC0xLjMtMTUuNS0xLjctMTIuNC0uNi0xMy44LS44LTE3LjgtMy4xLTYuMi0zLjYtNy45LTcuNi04LTE4LjMgMC0yMC40LTguNS0zOS40LTI1LjMtNTYuNS0xMi0xMi4yLTI1LjMtMjAuNS00MC42LTI1LjEtMy42LTEuMS0xMS44LTEuNS0zOS4yLTEuOC00Mi45LS41LTUyLjUuNC02Ny4xIDYuMi0yNyAxMC43LTQ2LjMgMzMuNC01My40IDYyLjQtMS4zIDUuNC0xLjYgMTQuMi0xLjkgNjQuMy0uNCA2Mi44IDAgNzIuMSA0IDg0LjUgOS43IDMwLjcgMzcuMSA1My40IDY0LjYgNTguNCA5LjIgMS43IDEyMi4yIDIuMSAxMzMuNy41IDIwLjEtMi43IDM1LjktMTAuOCA1MC43LTI1LjkgMTAuNy0xMC45IDE3LjQtMjIuOCAyMS44LTM4LjUgMy4yLTEwLjkgMi45LTg4LjQgMS43LTkzLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmx1ZXRvb3RoQiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTYuNDggMjYwLjAyM2w5Mi42MjYtMTAzLjMzM0wxNDMuMTI1IDB2MjA2LjMzbC04Ni4xMTEtODYuMTExLTMxLjQwNiAzMS40MDUgMTA4LjA2MSAxMDguMzk5TDI1LjYwOCAzNjguNDIybDMxLjQwNiAzMS40MDUgODYuMTExLTg2LjExMUwxNDUuODQgNTEybDE0OC41NTItMTQ4LjY0NC05Ny45MTItMTAzLjMzM3ptNDAuODYtMTAyLjk5NmwtNDkuOTc3IDQ5Ljk3OC0uMzM4LTEwMC4yOTUgNTAuMzE1IDUwLjMxN3pNMTg3LjM2MyAzMTMuMDRsNDkuOTc3IDQ5Ljk3OC01MC4zMTUgNTAuMzE2LjMzOC0xMDAuMjk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJsdWV0b290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTIuNiAxNzEuMUwyNDkuNyAyMTRsLS4zLTg2IDQzLjIgNDMuMW0tNDMuMiAyMTkuOGw0My4xLTQzLjEtNDIuOS00Mi45LS4yIDg2ek00MTYgMjU5LjRDNDE2IDQ2NSAzNDQuMSA1MTIgMjMwLjkgNTEyUzMyIDQ2NSAzMiAyNTkuNCAxMTUuNCAwIDIyOC42IDAgNDE2IDUzLjkgNDE2IDI1OS40em0tMTU4LjUgMGw3OS40LTg4LjZMMjExLjggMzYuNXYxNzYuOUwxMzggMTM5LjZsLTI3IDI2LjkgOTIuNyA5My05Mi43IDkzIDI2LjkgMjYuOSA3My44LTczLjggMi4zIDE3MCAxMjcuNC0xMjcuNS04My45LTg4Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vdHN0cmFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMy41LDIwMS40YzAtMjIuMS0xNS42LTM0LjMtNDMtMzQuM2gtNTAuNHY3MS4yaDQyLjVDMzE1LjQsMjM4LjIsMzMzLjUsMjI1LDMzMy41LDIwMS40eiBNNTE3LDE4OC42IGMtOS41LTMwLjktMTAuOS02OC44LTkuOC05OC4xYzEuMS0zMC41LTIyLjctNTguNS01NC43LTU4LjVIMTIzLjdjLTMyLjEsMC01NS44LDI4LjEtNTQuNyw1OC41YzEsMjkuMy0wLjMsNjcuMi05LjgsOTguMSBjLTkuNiwzMS0yNS43LDUwLjYtNTIuMiw1My4xdjI4LjVjMjYuNCwyLjUsNDIuNiwyMi4xLDUyLjIsNTMuMWM5LjUsMzAuOSwxMC45LDY4LjgsOS44LDk4LjFjLTEuMSwzMC41LDIyLjcsNTguNSw1NC43LDU4LjVoMzI4LjcgYzMyLjEsMCw1NS44LTI4LjEsNTQuNy01OC41Yy0xLTI5LjMsMC4zLTY3LjIsOS44LTk4LjFjOS42LTMxLDI1LjctNTAuNiw1Mi4xLTUzLjF2LTI4LjVDNTQyLjcsMjM5LjIsNTI2LjUsMjE5LjYsNTE3LDE4OC42eiBNMzAwLjIsMzc1LjFoLTk3LjlWMTM2LjhoOTcuNGM0My4zLDAsNzEuNywyMy40LDcxLjcsNTkuNGMwLDI1LjMtMTkuMSw0Ny45LTQzLjUsNTEuOHYxLjNjMzMuMiwzLjYsNTUuNSwyNi42LDU1LjUsNTguMyBDMzgzLjQsMzQ5LjcsMzUyLjEsMzc1LjEsMzAwLjIsMzc1LjF6IE0yOTAuMiwyNjYuNGgtNTAuMXY3OC40aDUyLjNjMzQuMiwwLDUyLjMtMTMuNyw1Mi4zLTM5LjUgQzM0NC43LDI3OS42LDMyNi4xLDI2Ni40LDI5MC4yLDI2Ni40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ0YyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTAuMjA0IDI0Mi42MzhjMjcuNzMtMTQuMTggNDUuMzc3LTM5LjM5IDQxLjI4LTgxLjMtNS4zNTgtNTcuMzUxLTUyLjQ1OC03Ni41NzMtMTE0Ljg1LTgxLjkyOVYwaC00OC41Mjh2NzcuMjAzYy0xMi42MDUgMC0yNS41MjUuMzE1LTM4LjQ0NC42M1YwaC00OC41Mjh2NzkuNDA5Yy0xNy44NDIuNTM5LTM4LjYyMi4yNzYtOTcuMzcgMHY1MS42NzhjMzguMzE0LS42NzggNTguNDE3LTMuMTQgNjMuMDIzIDIxLjQyN3YyMTcuNDI5Yy0yLjkyNSAxOS40OTItMTguNTI0IDE2LjY4NS01My4yNTUgMTYuMDcxTDMuNzY1IDQ0My42OGM4OC40ODEgMCA5Ny4zNy4zMTUgOTcuMzcuMzE1VjUxMmg0OC41Mjh2LTY3LjA2YzEzLjIzNC4zMTUgMjYuMTU0LjMxNSAzOC40NDQuMzE1VjUxMmg0OC41Mjh2LTY4LjAwNWM4MS4yOTktNC40MTIgMTM1LjY0Ny0yNC44OTQgMTQyLjg5NS0xMDEuNDY3IDUuNjcxLTYxLjQ0Ni0yMy4zMi04OC44NjItNjkuMzI2LTk5Ljg5ek0xNTAuNjA4IDEzNC41NTNjMjcuNDE1IDAgMTEzLjEyNi04LjUwNyAxMTMuMTI2IDQ4LjUyOCAwIDU0LjUxNS04NS43MSA0OC4yMTItMTEzLjEyNiA0OC4yMTJ2LTk2Ljc0em0wIDI1MS43NzZWMjc5LjgyMWMzMi43NzIgMCAxMzMuMTI3LTkuMTM4IDEzMy4xMjcgNTMuMjU1LS4wMDEgNjAuMTg2LTEwMC4zNTUgNTMuMjUzLTEzMy4xMjcgNTMuMjUzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1ZmZlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuODQgMzgwLjY3bC0xOTYuNSA5Ny44MmExOC42IDE4LjYgMCAwIDEtMTQuNjcgMEwyMC4xNiAzODAuNjdjLTQtMi00LTUuMjggMC03LjI5TDY3LjIyIDM1MGExOC42NSAxOC42NSAwIDAgMSAxNC42OSAwbDEzNC43NiA2N2ExOC41MSAxOC41MSAwIDAgMCAxNC42NyAwbDEzNC43Ni02N2ExOC42MiAxOC42MiAwIDAgMSAxNC42OCAwbDQ3LjA2IDIzLjQzYzQuMDUgMS45NiA0LjA1IDUuMjQgMCA3LjI0em0wLTEzNi41M2wtNDcuMDYtMjMuNDNhMTguNjIgMTguNjIgMCAwIDAtMTQuNjggMGwtMTM0Ljc2IDY3LjA4YTE4LjY4IDE4LjY4IDAgMCAxLTE0LjY3IDBMODEuOTEgMjIwLjcxYTE4LjY1IDE4LjY1IDAgMCAwLTE0LjY5IDBsLTQ3LjA2IDIzLjQzYy00IDItNCA1LjI5IDAgNy4zMWwxOTYuNTEgOTcuOGExOC42IDE4LjYgMCAwIDAgMTQuNjcgMGwxOTYuNS05Ny44YzQuMDUtMi4wMiA0LjA1LTUuMyAwLTcuMzF6TTIwLjE2IDEzMC40MmwxOTYuNSA5MC4yOWEyMC4wOCAyMC4wOCAwIDAgMCAxNC42NyAwbDE5Ni41MS05MC4yOWM0LTEuODYgNC00Ljg5IDAtNi43NEwyMzEuMzMgMzMuNGExOS44OCAxOS44OCAwIDAgMC0xNC42NyAwbC0xOTYuNSA5MC4yOGMtNC4wNSAxLjg1LTQuMDUgNC44OCAwIDYuNzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVyb21vYmVsZXhwZXJ0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjEyOGgxMjhWMzJIMHptMTIwIDEyMEg4VjQwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjMySDE2MHptMTIwIDEyMEgxNjhWNDBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzJIMzIwem0xMjAgMTIwSDMyOFY0MGgxMTJ2MTEyek0wIDE5MnYxMjhoMTI4VjE5Mkgwem0xMjAgMTIwSDhWMjAwaDExMnYxMTJ6bTQwLTEyMHYxMjhoMTI4VjE5MkgxNjB6bTEyMCAxMjBIMTY4VjIwMGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYxOTJIMzIwem0xMjAgMTIwSDMyOFYyMDBoMTEydjExMnpNMCAzNTJ2MTI4aDEyOFYzNTJIMHptMTIwIDEyMEg4VjM2MGgxMTJ2MTEyem00MC0xMjB2MTI4aDEyOFYzNTJIMTYwem0xMjAgMTIwSDE2OFYzNjBoMTEydjExMnptNDAtMTIwdjEyOGgxMjhWMzUySDMyMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXlOTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDMyQzEzMy4yNyAzMiA3Ljc5IDEzMi4zMiA3Ljc5IDI1NlMxMzMuMjcgNDgwIDI4OCA0ODBzMjgwLjIxLTEwMC4zMiAyODAuMjEtMjI0UzQ0Mi43MyAzMiAyODggMzJ6bS04NS4zOSAzNTcuMTlMNjQuMSAzOTAuNTVsNzcuMjUtMjkwLjc0aDEzMy40NGM2My4xNSAwIDg0LjkzIDI4LjY1IDc4IDcyLjg0YTYwLjI0IDYwLjI0IDAgMCAxLTEuNSA2Ljg1IDc3LjM5IDc3LjM5IDAgMCAwLTE3LjIxLTEuOTNjLTQyLjM1IDAtNzYuNjkgMzMuODgtNzYuNjkgNzUuNjUgMCAzNy4xNCAyNy4xNCA2OCA2Mi45MyA3NC40NS0xOC4yNCAzNy4xNi01Ni4xNiA2MC45Mi0xMTcuNzEgNjEuNTJ6TTM1OCAyMDcuMTFoMzJsLTIyLjE2IDkwLjMxaC0zNS40MWwtMTEuMTktMzUuNjMtNy44MyAzNS42M2gtMzcuODNsMjYuNjMtOTAuMzFoMzEuMzRsMTUgMzYuNzV6bTE0NS44NiAxODIuMDhIMzA2Ljc5TDMyMi42MyAzMjhhNzguOCA3OC44IDAgMCAwIDExLjQ3LjgzYzQyLjM0IDAgNzYuNjktMzMuODcgNzYuNjktNzUuNjUgMC0zMi42NS0yMS02MC40Ni01MC4zOC03MS4wNmwyMS4zMy04Mi4zNWg5Mi41bC01My4wNSAyMDUuMzZoMTAzLjg3ek0yMTEuNyAyNjkuMzlIMTg3bC0xMy44IDU2LjQ3aDI0LjdjMTYuMTQgMCAzMi4xMS0zLjE4IDM3Ljk0LTI2LjY1IDUuNTYtMjIuMzEtNy45OS0yOS44Mi0yNC4xNC0yOS44MnpNMjMzIDE3MGgtMjEuMzRMMjAwIDIxNy43MWgyMS4zN2MxOCAwIDM1LjM4LTE0LjY0IDM5LjIxLTMwLjE0QzI2NS4yMyAxNjguNzEgMjUxLjA3IDE3MCAyMzMgMTcwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1eXNlbGxhZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE1MC43bDQyLjkgMTYwLjdoLTg1LjhMMjI0IDE1MC43ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS02NS4zIDMyNS4zbC05NC41LTI5OC43SDE1OS44TDY1LjMgNDA1LjNIMTU2bDExMS43LTkxLjYgMjQuMiA5MS42aDkwLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FuYWRpYW5NYXBsZUxlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjggMzUxLjdjMi41LTIuNSAxMDUuMi05Mi40IDEwNS4yLTkyLjRsLTE3LjUtNy41Yy0xMC00LjktNy40LTExLjUtNS0xNy40IDIuNC03LjYgMjAuMS02Ny4zIDIwLjEtNjcuM3MtNDcuNyAxMC01Ny43IDEyLjVjLTcuNSAyLjQtMTAtMi41LTEyLjUtNy41cy0xNS0zMi40LTE1LTMyLjQtNTIuNiA1OS45LTU1LjEgNjIuM2MtMTAgNy41LTIwLjEgMC0xNy42LTEwIDAtMTAgMjcuNi0xMjkuNiAyNy42LTEyOS42cy0zMC4xIDE3LjQtNDAuMSAyMi40Yy03LjUgNS0xMi42IDUtMTcuNi01QzI5My41IDcyLjMgMjU1LjkgMCAyNTUuOSAwcy0zNy41IDcyLjMtNDIuNSA3OS44Yy01IDEwLTEwIDEwLTE3LjYgNS0xMC01LTQwLjEtMjIuNC00MC4xLTIyLjRTMTgzLjMgMTgyIDE4My4zIDE5MmMyLjUgMTAtNy41IDE3LjUtMTcuNiAxMC0yLjUtMi41LTU1LjEtNjIuMy01NS4xLTYyLjNTOTguMSAxNjcgOTUuNiAxNzJzLTUgOS45LTEyLjUgNy41QzczIDE3NyAyNS40IDE2NyAyNS40IDE2N3MxNy42IDU5LjcgMjAuMSA2Ny4zYzIuNCA2IDUgMTIuNS01IDE3LjRMMjMgMjU5LjNzMTAyLjYgODkuOSAxMDUuMiA5Mi40YzUuMSA1IDEwIDcuNSA1LjEgMjIuNS01LjEgMTUtMTAuMSAzNS4xLTEwLjEgMzUuMXM5NS4yLTIwLjEgMTA1LjMtMjIuNmM4LjctLjkgMTguMyAyLjUgMTguMyAxMi41UzI0MSA1MTIgMjQxIDUxMmgzMHMtNS44LTEwMi43LTUuOC0xMTIuOCA5LjUtMTMuNCAxOC40LTEyLjVjMTAgMi41IDEwNS4yIDIyLjYgMTA1LjIgMjIuNnMtNS0yMC4xLTEwLTM1LjEgMC0xNy41IDUtMjIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0FtYXpvblBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjQuNyAyMDEuOGMuMS0xMS44IDAtMjMuNSAwLTM1LjN2LTM1LjNjMC0xLjMuNC0yIDEuNC0yLjcgMTEuNS04IDI0LjEtMTIuMSAzOC4yLTExLjEgMTIuNS45IDIyLjcgNyAyOC4xIDIxLjcgMy4zIDguOSA0LjEgMTguMiA0LjEgMjcuNyAwIDguNy0uNyAxNy4zLTMuNCAyNS42LTUuNyAxNy44LTE4LjcgMjQuNy0zNS43IDIzLjktMTEuNy0uNS0yMS45LTUtMzEuNC0xMS43LS45LS44LTEuNC0xLjYtMS4zLTIuOHptMTU0LjkgMTQuNmM0LjYgMS44IDkuMyAyIDE0LjEgMS41IDExLjYtMS4yIDIxLjktNS43IDMxLjMtMTIuNS45LS42IDEuMy0xLjMgMS4zLTIuNS0uMS0zLjkgMC03LjkgMC0xMS44IDAtNC0uMS04IDAtMTIgMC0xLjQtLjQtMi0xLjgtMi4yLTctLjktMTMuOS0yLjItMjAuOS0yLjktNy0uNi0xNC0uMy0yMC44IDEuOS02LjcgMi4yLTExLjcgNi4yLTEzLjcgMTMuMS0xLjYgNS40LTEuNiAxMC44LjEgMTYuMiAxLjYgNS41IDUuMiA5LjIgMTAuNCAxMS4yek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS0yMDcuNSAyMy45Yy40IDEuNy45IDMuNCAxLjYgNS4xIDE2LjUgNDAuNiAzMi45IDgxLjMgNDkuNSAxMjEuOSAxLjQgMy41IDEuNyA2LjQuMiA5LjktMi44IDYuMi00LjkgMTIuNi03LjggMTguNy0yLjYgNS41LTYuNyA5LjUtMTIuNyAxMS4yLTQuMiAxLjEtOC41IDEuMy0xMi45LjktMi4xLS4yLTQuMi0uNy02LjMtLjgtMi44LS4yLTQuMiAxLjEtNC4zIDQtLjEgMi44LS4xIDUuNiAwIDguMy4xIDQuNiAxLjYgNi43IDYuMiA3LjUgNC43LjggOS40IDEuNiAxNC4yIDEuNyAxNC4zLjMgMjUuNy01LjQgMzMuMS0xNy45IDIuOS00LjkgNS42LTEwLjEgNy43LTE1LjQgMTkuOC01MC4xIDM5LjUtMTAwLjMgNTkuMi0xNTAuNS42LTEuNSAxLjEtMyAxLjMtNC42LjQtMi40LS43LTMuNi0zLjEtMy43LTUuNi0uMS0xMS4xIDAtMTYuNyAwLTMuMSAwLTUuMyAxLjQtNi40IDQuMy0uNCAxLjEtLjkgMi4zLTEuMyAzLjRsLTI5LjEgODMuN2MtMi4xIDYuMS00LjIgMTIuMS02LjUgMTguNi0uNC0uOS0uNi0xLjQtLjgtMS45LTEwLjgtMjkuOS0yMS42LTU5LjktMzIuNC04OS44LTEuNy00LjctMy41LTkuNS01LjMtMTQuMi0uOS0yLjUtMi43LTQtNS40LTQtNi40LS4xLTEyLjgtLjItMTkuMi0uMS0yLjIgMC0zLjMgMS42LTIuOCAzLjd6TTI0Mi40IDIwNmMxLjcgMTEuNyA3LjYgMjAuOCAxOCAyNi42IDkuOSA1LjUgMjAuNyA2LjIgMzEuNyA0LjYgMTIuNy0xLjkgMjMuOS03LjMgMzMuOC0xNS41LjQtLjMuOC0uNiAxLjQtMSAuNSAzLjIuOSA2LjIgMS41IDkuMi41IDIuNiAyLjEgNC4zIDQuNSA0LjQgNC42LjEgOS4xLjEgMTMuNyAwIDIuMy0uMSAzLjgtMS42IDQtMy45LjEtLjguMS0xLjYuMS0yLjN2LTg4LjhjMC0zLjYtLjItNy4yLS43LTEwLjgtMS42LTEwLjgtNi4yLTE5LjctMTUuOS0yNS40LTUuNi0zLjMtMTEuOC01LTE4LjItNS45LTMtLjQtNi0uNy05LjEtMS4xaC0xMGMtLjguMS0xLjYuMy0yLjUuMy04LjIuNC0xNi4zIDEuNC0yNC4yIDMuNS01LjEgMS4zLTEwIDMuMi0xNSA0LjktMyAxLTQuNSAzLjItNC40IDYuNS4xIDIuOC0uMSA1LjYgMCA4LjMuMSA0LjEgMS44IDUuMiA1LjcgNC4xIDYuNS0xLjcgMTMuMS0zLjUgMTkuNy00LjggMTAuMy0xLjkgMjAuNy0yLjcgMzEuMS0xLjIgNS40LjggMTAuNSAyLjQgMTQuMSA3IDMuMSA0IDQuMiA4LjggNC40IDEzLjcuMyA2LjkuMiAxMy45LjMgMjAuOCAwIC40LS4xLjctLjIgMS4yLS40IDAtLjggMC0xLjEtLjEtOC44LTIuMS0xNy43LTMuNi0yNi44LTQuMS05LjUtLjUtMTguOS4xLTI3LjkgMy4yLTEwLjggMy44LTE5LjUgMTAuMy0yNC42IDIwLjgtNC4xIDguMy00LjYgMTctMy40IDI1Ljh6TTk4LjcgMTA2Ljl2MTc1LjNjMCAuOCAwIDEuNy4xIDIuNS4yIDIuNSAxLjcgNC4xIDQuMSA0LjIgNS45LjEgMTEuOC4xIDE3LjcgMCAyLjUgMCA0LTEuNyA0LjEtNC4xLjEtLjguMS0xLjcuMS0yLjV2LTYwLjdjLjkuNyAxLjQgMS4yIDEuOSAxLjYgMTUgMTIuNSAzMi4yIDE2LjYgNTEuMSAxMi45IDE3LjEtMy40IDI4LjktMTMuOSAzNi43LTI5LjIgNS44LTExLjYgOC4zLTI0LjEgOC43LTM3IC41LTE0LjMtMS0yOC40LTYuOC00MS43LTcuMS0xNi40LTE4LjktMjcuMy0zNi43LTMwLjktMi43LS42LTUuNS0uOC04LjItMS4yaC03Yy0xLjIuMi0yLjQuMy0zLjYuNS0xMS43IDEuNC0yMi4zIDUuOC0zMS44IDEyLjctMiAxLjQtMy45IDMtNS45IDQuNS0uMS0uNS0uMy0uOC0uNC0xLjItLjQtMi4zLS43LTQuNi0xLjEtNi45LS42LTMuOS0yLjUtNS41LTYuNC01LjZoLTkuN2MtNS45LS4xLTYuOSAxLTYuOSA2Ljh6TTQ5My42IDMzOWMtMi43LS43LTUuMSAwLTcuNiAxLTQzLjkgMTguNC04OS41IDMwLjItMTM2LjggMzUuOC0xNC41IDEuNy0yOS4xIDIuOC00My43IDMuMi0yNi42LjctNTMuMi0uOC03OS42LTQuMy0xNy44LTIuNC0zNS41LTUuNy01My05LjktMzctOC45LTcyLjctMjEuNy0xMDYuNy0zOC44LTguOC00LjQtMTcuNC05LjMtMjYuMS0xNC0zLjgtMi4xLTYuMi0xLjUtOC4yIDIuMXYxLjdjMS4yIDEuNiAyLjIgMy40IDMuNyA0LjggMzYgMzIuMiA3Ni42IDU2LjUgMTIyIDcyLjkgMjEuOSA3LjkgNDQuNCAxMy43IDY3LjMgMTcuNSAxNCAyLjMgMjggMy44IDQyLjIgNC41IDMgLjEgNiAuMiA5IC40LjcgMCAxLjQuMiAyLjEuM2gxNy43Yy43LS4xIDEuNC0uMyAyLjEtLjMgMTQuOS0uNCAyOS44LTEuOCA0NC42LTQgMjEuNC0zLjIgNDIuNC04LjEgNjIuOS0xNC43IDI5LjYtOS42IDU3LjctMjIuNCA4My40LTQwLjEgMi44LTEuOSA1LjctMy44IDgtNi4yIDQuMy00LjQgMi4zLTEwLjQtMy4zLTExLjl6bTUwLjQtMjcuN2MtLjgtNC4yLTQtNS44LTcuNi03LTUuNy0xLjktMTEuNi0yLjgtMTcuNi0zLjMtMTEtLjktMjItLjQtMzIuOCAxLjYtMTIgMi4yLTIzLjQgNi4xLTMzLjUgMTMuMS0xLjIuOC0yLjQgMS44LTMuMSAzLS42LjktLjcgMi4zLS41IDMuNC4zIDEuMyAxLjcgMS42IDMgMS41LjYgMCAxLjIgMCAxLjgtLjFsMTkuNS0yLjFjOS42LS45IDE5LjItMS41IDI4LjgtLjggNC4xLjMgOC4xIDEuMiAxMiAyLjIgNC4zIDEuMSA2LjIgNC40IDYuNCA4LjcuMyA2LjctMS4yIDEzLjEtMi45IDE5LjUtMy41IDEyLjktOC4zIDI1LjQtMTMuMyAzNy44LS4zLjgtLjcgMS43LS44IDIuNS0uNCAyLjUgMSA0IDMuNCAzLjUgMS40LS4zIDMtMS4xIDQtMi4xIDMuNy0zLjYgNy41LTcuMiAxMC42LTExLjIgMTAuNy0xMy44IDE3LTI5LjYgMjAuNy00Ni42LjctMyAxLjItNi4xIDEuNy05LjEuMi00LjcuMi05LjYuMi0xNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQW1leCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjUuMSAxNjcuOGMwLTE2LjQtMTQuMS0xOC40LTI3LjQtMTguNGwtMzkuMS0uM3Y2OS4zSDI3NXYtMjUuMWgxOGMxOC40IDAgMTQuNSAxMC4zIDE0LjggMjUuMWgxNi42di0xMy41YzAtOS4yLTEuNS0xNS4xLTExLTE4LjQgNy40LTMgMTEuOC0xMC43IDExLjctMTguN3ptLTI5LjQgMTEuM0gyNzV2LTE1LjNoMjFjNS4xIDAgMTAuNyAxIDEwLjcgNy40IDAgNi42LTUuMyA3LjktMTEgNy45ek0yNzkgMjY4LjZoLTUyLjdsLTIxIDIyLjgtMjAuNS0yMi44aC02Ni41bC0uMSA2OS4zaDY1LjRsMjEuMy0yMyAyMC40IDIzaDMyLjJsLjEtMjMuM2MxOC45IDAgNDkuMyA0LjYgNDkuMy0yMy4zIDAtMTcuMy0xMi4zLTIyLjctMjcuOS0yMi43em0tMTAzLjggNTQuN2gtNDAuNnYtMTMuOGgzNi4zdi0xNC4xaC0zNi4zdi0xMi41aDQxLjdsMTcuOSAyMC4yem02NS44IDguMmwtMjUuMy0yOC4xTDI0MSAyNzZ6bTM3LjgtMzFoLTIxLjJ2LTE3LjZoMjEuNWM1LjYgMCAxMC4yIDIuMyAxMC4yIDguNCAwIDYuNC00LjYgOS4yLTEwLjUgOS4yem0tMzEuNi0xMzYuN3YtMTQuNmgtNTUuNXY2OS4zaDU1LjV2LTE0LjNoLTM4Ljl2LTEzLjhoMzcuOHYtMTQuMWgtMzcuOHYtMTIuNXpNNTc2IDI1NS40aC0uMnptLTE5NC42IDMxLjljMC0xNi40LTE0LjEtMTguNy0yNy4xLTE4LjdoLTM5LjRsLS4xIDY5LjNoMTYuNmwuMS0yNS4zaDE3LjZjMTEgMCAxNC44IDIgMTQuOCAxMy44bC0uMSAxMS41aDE2LjZsLjEtMTMuOGMwLTguOS0xLjgtMTUuMS0xMS0xOC40IDcuNy0zLjEgMTEuOC0xMC44IDExLjktMTguNHptLTI5LjIgMTEuMmgtMjAuN3YtMTUuNmgyMWM1LjEgMCAxMC43IDEgMTAuNyA3LjQgMCA2LjktNS40IDguMi0xMSA4LjJ6bS0xNzIuOC04MHYtNjkuM2gtMjcuNmwtMTkuNyA0Ny0yMS43LTQ3SDgzLjN2NjUuN2wtMjguMS02NS43SDMwLjdMMSAyMTguNWgxNy45bDYuNC0xNS4zaDM0LjVsNi40IDE1LjNIMTAwdi01NC4ybDI0IDU0LjJoMTQuNmwyNC01NC4ydjU0LjJ6TTMxLjIgMTg4LjhsMTEuMi0yNy42IDExLjUgMjcuNnptNDc3LjQgMTU4Ljl2LTQuNWMtMTAuOCA1LjYtMy45IDQuNS0xNTYuNyA0LjUgMC0yNS4yLjEtMjMuOSAwLTI1LjItMS43LS4xLTMuMi0uMS05LjQtLjEgMCAxNy45LS4xIDYuOC0uMSAyNS4zaC0zOS42YzAtMTIuMS4xLTE1LjMuMS0yOS4yLTEwIDYtMjIuOCA2LjQtMzQuMyA2LjIgMCAxNC43LS4xIDguMy0uMSAyM2gtNDguOWMtNS4xLTUuNy0yLjctMy4xLTE1LjQtMTcuNC0zLjIgMy41LTEyLjggMTMuOS0xNi4xIDE3LjRoLTgydi05Mi4zaDgzLjFjNSA1LjYgMi44IDMuMSAxNS41IDE3LjIgMy4yLTMuNSAxMi4yLTEzLjQgMTUuNy0xNy4yaDU4YzkuOCAwIDE4IDEuOSAyNC4zIDUuNnYtNS42YzU0LjMgMCA2NC4zLTEuNCA3NS43IDUuMXYtNS4xaDc4LjJ2NS4yYzExLjQtNi45IDE5LjYtNS4yIDY0LjktNS4ydjVjMTAuMy01LjkgMTYuNi01LjIgNTQuMy01VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4aC00ODBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djEwOS44YzkuNC0yMS45IDE5LjctNDYgMjMuMS01My45aDM5LjdjNC4zIDEwLjEgMS42IDMuNyA5IDIxLjF2LTIxLjFoNDZjMi45IDYuMiAxMS4xIDI0IDEzLjkgMzAgNS44LTEzLjYgMTAuMS0yMy45IDEyLjYtMzBoMTAzYzAtLjEgMTEuNSAwIDExLjYgMCA0My43LjIgNTMuNi0uOCA2NC40IDUuM3YtNS4zSDM2M3Y5LjNjNy42LTYuMSAxNy45LTkuMyAzMC43LTkuM2gyNy42YzAgLjUgMS45LjMgMi4zLjNINDU2YzQuMiA5LjggMi42IDYgOC44IDIwLjZ2LTIwLjZoNDMuM2M0LjkgOC0xLTEuOCAxMS4yIDE4LjR2LTE4LjRoMzkuOXY5MmgtNDEuNmMtNS40LTktMS40LTIuMi0xMy4yLTIxLjl2MjEuOWgtNTIuOGMtNi40LTE0LjgtLjEtLjMtNi42LTE1LjNoLTE5Yy00LjIgMTAtMi4yIDUuMi02LjQgMTUuM2gtMjYuOGMtMTIuMyAwLTIyLjMtMy0yOS43LTguOXY4LjloLTY2LjVjLS4zLTEzLjktLjEtMjQuOC0uMS0yNC44LTEuOC0uMy0zLjQtLjItOS44LS4ydjI1LjFIMTUxLjJ2LTExLjRjLTIuNSA1LjYtMi43IDUuOS01LjEgMTEuNGgtMjkuNWMtNC04LjktMi45LTYuNC01LjEtMTEuNHYxMS40SDU4LjZjLTQuMi0xMC4xLTIuMi01LjMtNi40LTE1LjNIMzNjLTQuMiAxMC0yLjIgNS4yLTYuNCAxNS4zSDBWNDMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQ4MC4xYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di05MC40Yy0xMi43IDguMy0zMi43IDYuMS02Ny41IDYuMXptMzYuMy02NC41SDU3NXYtMTQuNmgtMzIuOWMtMTIuOCAwLTIzLjggNi42LTIzLjggMjAuNyAwIDMzIDQyLjcgMTIuOCA0Mi43IDI3LjQgMCA1LjEtNC4zIDYuNC04LjQgNi40aC0zMmwtLjEgMTQuOGgzMmM4LjQgMCAxNy42LTEuOCAyMi41LTguOXYtMjUuOGMtMTAuNS0xMy44LTM5LjMtMS4zLTM5LjMtMTMuNSAwLTUuOCA0LjYtNi41IDkuMi02LjV6bS01NyAzOS44aC0zMi4ybC0uMSAxNC44aDMyLjJjMTQuOCAwIDI2LjItNS42IDI2LjItMjIgMC0zMy4yLTQyLjktMTEuMi00Mi45LTI2LjMgMC01LjYgNC45LTYuNCA5LjItNi40aDMwLjR2LTE0LjZoLTMzLjJjLTEyLjggMC0yMy41IDYuNi0yMy41IDIwLjcgMCAzMyA0Mi43IDEyLjUgNDIuNyAyNy40LS4xIDUuNC00LjcgNi40LTguOCA2LjR6bS00Mi4yLTQwLjF2LTE0LjNoLTU1LjJsLS4xIDY5LjNoNTUuMmwuMS0xNC4zLTM4LjYtLjN2LTEzLjhINDQ1di0xNC4xaC0zNy44di0xMi41em0tNTYuMy0xMDguMWMtLjMuMi0xLjQgMi4yLTEuNCA3LjYgMCA2IC45IDcuNyAxLjEgNy45LjIuMSAxLjEuNSAzLjQuNWw3LjMtMTYuOWMtMS4xIDAtMi4xLS4xLTMuMS0uMS01LjYgMC03IC43LTcuMyAxem0yMC40LTEwLjVoLS4xem0tMTYuMi0xNS4yYy0yMy41IDAtMzQgMTItMzQgMzUuMyAwIDIyLjIgMTAuMiAzNCAzMyAzNGgxOS4ybDYuNC0xNS4zaDM0LjNsNi42IDE1LjNoMzMuN3YtNTEuOWwzMS4yIDUxLjloMjMuNnYtNjloLTE2Ljl2NDguMWwtMjkuMS00OC4xaC0yNS4zdjY1LjRsLTI3LjktNjUuNGgtMjQuOGwtMjMuNSA1NC41aC03LjRjLTEzLjMgMC0xNi4xLTguMS0xNi4xLTE5LjkgMC0yMy44IDE1LjctMjAgMzMuMS0xOS43di0xNS4yem00Mi4xIDEyLjFsMTEuMiAyNy42aC0yMi44em0tMTAxLjEtMTJ2NjkuM2gxNi45di02OS4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjQXBwbGVQYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjIgMjE4LjRjMCAxNy4yLTEwLjUgMjcuMS0yOSAyNy4xaC0yNC4zdi01NC4yaDI0LjRjMTguNCAwIDI4LjkgOS44IDI4LjkgMjcuMXptNDcuNSA2Mi42YzAgOC4zIDcuMiAxMy43IDE4LjUgMTMuNyAxNC40IDAgMjUuMi05LjEgMjUuMi0yMS45di03LjdsLTIzLjUgMS41Yy0xMy4zLjktMjAuMiA1LjgtMjAuMiAxNC40ek01NzYgNzl2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY3OWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTEyNy44IDE5Ny4yYzguNC43IDE2LjgtNC4yIDIyLjEtMTAuNCA1LjItNi40IDguNi0xNSA3LjctMjMuNy03LjQuMy0xNi42IDQuOS0yMS45IDExLjMtNC44IDUuNS04LjkgMTQuNC03LjkgMjIuOHptNjAuNiA3NC41Yy0uMi0uMi0xOS42LTcuNi0xOS44LTMwLS4yLTE4LjcgMTUuMy0yNy43IDE2LTI4LjItOC44LTEzLTIyLjQtMTQuNC0yNy4xLTE0LjctMTIuMi0uNy0yMi42IDYuOS0yOC40IDYuOS01LjkgMC0xNC43LTYuNi0yNC4zLTYuNC0xMi41LjItMjQuMiA3LjMtMzAuNSAxOC42LTEzLjEgMjIuNi0zLjQgNTYgOS4zIDc0LjQgNi4yIDkuMSAxMy43IDE5LjEgMjMuNSAxOC43IDkuMy0uNCAxMy02IDI0LjItNiAxMS4zIDAgMTQuNSA2IDI0LjMgNS45IDEwLjItLjIgMTYuNS05LjEgMjIuOC0xOC4yIDYuOS0xMC40IDkuOC0yMC40IDEwLTIxem0xMzUuNC01My40YzAtMjYuNi0xOC41LTQ0LjgtNDQuOS00NC44aC01MS4ydjEzNi40aDIxLjJ2LTQ2LjZoMjkuM2MyNi44IDAgNDUuNi0xOC40IDQ1LjYtNDV6bTkwIDIzLjdjMC0xOS43LTE1LjgtMzIuNC00MC0zMi40LTIyLjUgMC0zOS4xIDEyLjktMzkuNyAzMC41aDE5LjFjMS42LTguNCA5LjQtMTMuOSAyMC0xMy45IDEzIDAgMjAuMiA2IDIwLjIgMTcuMnY3LjVsLTI2LjQgMS42Yy0yNC42IDEuNS0zNy45IDExLjYtMzcuOSAyOS4xIDAgMTcuNyAxMy43IDI5LjQgMzMuNCAyOS40IDEzLjMgMCAyNS42LTYuNyAzMS4yLTE3LjRoLjRWMzEwaDE5LjZ2LTY4ek01MTYgMjEwLjloLTIxLjVsLTI0LjkgODAuNmgtLjRsLTI0LjktODAuNkg0MjJsMzUuOSA5OS4zLTEuOSA2Yy0zLjIgMTAuMi04LjUgMTQuMi0xNy45IDE0LjItMS43IDAtNC45LS4yLTYuMi0uM3YxNi40YzEuMi40IDYuNS41IDguMS41IDIwLjcgMCAzMC40LTcuOSAzOC45LTMxLjhMNTE2IDIxMC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjRGluZXJzQ2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuNyA3OS45Yy05Ni45IDAtMTc1LjggNzguNi0xNzUuOCAxNzUuOCAwIDk2LjkgNzguOSAxNzUuOCAxNzUuOCAxNzUuOCA5Ny4yIDAgMTc1LjgtNzguOSAxNzUuOC0xNzUuOCAwLTk3LjItNzguNi0xNzUuOC0xNzUuOC0xNzUuOHptLTM5LjkgMjc5LjZjLTQxLjctMTUuOS03MS40LTU2LjQtNzEuNC0xMDMuOHMyOS43LTg3LjkgNzEuNC0xMDQuMXYyMDcuOXptNzkuOC4zVjE1MS42YzQxLjcgMTYuMiA3MS40IDU2LjcgNzEuNCAxMDQuMXMtMjkuNyA4Ny45LTcxLjQgMTA0LjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTMyOS43IDQ0OGgtOTAuM2MtMTA2LjIgMC0xOTMuOC04NS41LTE5My44LTE5MC4yQzQ1LjYgMTQzLjIgMTMzLjIgNjQgMjM5LjQgNjRoOTAuM2MxMDUgMCAyMDAuNyA3OS4yIDIwMC43IDE5My44IDAgMTA0LjctOTUuNyAxOTAuMi0yMDAuNyAxOTAuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0Rpc2NvdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyMC40IDE5Ni4xYzAtNy45LTUuNS0xMi4xLTE1LjYtMTIuMWgtNC45djI0LjloNC43YzEwLjMgMCAxNS44LTQuNCAxNS44LTEyLjh6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS00NC4xIDEzOC45YzIyLjYgMCA1Mi45LTQuMSA1Mi45IDI0LjQgMCAxMi42LTYuNiAyMC43LTE4LjcgMjMuMmwyNS44IDM0LjRoLTE5LjZsLTIyLjItMzIuOGgtMi4ydjMyLjhoLTE2em0tNTUuOS4xaDQ1LjN2MTRINDQ0djE4LjJoMjguM1YyMTdINDQ0djIyLjJoMjkuM1YyNTNINDI4em0tNjguNyAwbDIxLjkgNTUuMiAyMi4yLTU1LjJoMTcuNWwtMzUuNSA4NC4yaC04LjZsLTM1LTg0LjJ6bS01NS45LTNjMjQuNyAwIDQ0LjYgMjAgNDQuNiA0NC42IDAgMjQuNy0yMCA0NC42LTQ0LjYgNDQuNi0yNC43IDAtNDQuNi0yMC00NC42LTQ0LjYgMC0yNC43IDIwLTQ0LjYgNDQuNi00NC42em0tNDkuMyA2LjF2MTljLTIwLjEtMjAuMS00Ni44LTQuNy00Ni44IDE5IDAgMjUgMjcuNSAzOC41IDQ2LjggMTkuMnYxOWMtMjkuNyAxNC4zLTYzLjMtNS43LTYzLjMtMzguMiAwLTMxLjIgMzMuMS01MyA2My4zLTM4em0tOTcuMiA2Ni4zYzExLjQgMCAyMi40LTE1LjMtMy4zLTI0LjQtMTUtNS41LTIwLjItMTEuNC0yMC4yLTIyLjcgMC0yMy4yIDMwLjYtMzEuNCA0OS43LTE0LjNsLTguNCAxMC44Yy0xMC40LTExLjYtMjQuOS02LjItMjQuOSAyLjUgMCA0LjQgMi43IDYuOSAxMi4zIDEwLjMgMTguMiA2LjYgMjMuNiAxMi41IDIzLjYgMjUuNiAwIDI5LjUtMzguOCAzNy40LTU2LjYgMTEuM2wxMC4zLTkuOWMzLjcgNy4xIDkuOSAxMC44IDE3LjUgMTAuOHpNNTUuNCAyNTNIMzJ2LTgyaDIzLjRjMjYuMSAwIDQ0LjEgMTcgNDQuMSA0MS4xIDAgMTguNS0xMy4yIDQwLjktNDQuMSA0MC45em02Ny41IDBoLTE2di04MmgxNnpNNTQ0IDQzM2MwIDguMi02LjggMTUtMTUgMTVIMTI4YzE4OS42LTM1LjYgMzgyLjctMTM5LjIgNDE2LTE2MHpNNzQuMSAxOTEuNmMtNS4yLTQuOS0xMS42LTYuNi0yMS45LTYuNkg0OHY1NC4yaDQuMmMxMC4zIDAgMTctMiAyMS45LTYuNCA1LjctNS4yIDguOS0xMi44IDguOS0yMC43cy0zLjItMTUuNS04LjktMjAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY0pjYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzEuNSAyNDQuM1YyMTJjNDEuMiAwIDM4LjUuMiAzOC41LjIgNy4zIDEuMyAxMy4zIDcuMyAxMy4zIDE2IDAgOC44LTYgMTQuNS0xMy4zIDE1LjgtMS4yLjQtMy4zLjMtMzguNS4zem00Mi44IDIwLjJjLTIuOC0uNy0zLjMtLjUtNDIuOC0uNXYzNWMzOS42IDAgNDAgLjIgNDIuOC0uNSA3LjUtMS41IDEzLjUtOCAxMy41LTE3IDAtOC43LTYtMTUuNS0xMy41LTE3ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4MiAxOTIuM2gtNTdjMCA2Ny4xIDEwLjcgMTA5LjctMzUuOCAxMDkuNy0xOS41IDAtMzguOC01LjctNTcuMi0xNC44djI4YzMwIDguMyA2OCA4LjMgNjggOC4zIDk3LjkgMCA4Mi00Ny43IDgyLTEzMS4yem0xNzguNSA0LjVjLTYzLjQtMTYtMTY1LTE0LjktMTY1IDU5LjMgMCA3Ny4xIDEwOC4yIDczLjYgMTY1IDU5LjJWMjg3QzMxMi45IDMxMS43IDI1MyAzMDkgMjUzIDI1NnM1OS44LTU1LjYgMTA3LjUtMzEuMnYtMjh6TTU0NCAyODYuNWMwLTE4LjUtMTYuNS0zMC41LTM4LTMydi0uOGMxOS41LTIuNyAzMC4zLTE1LjUgMzAuMy0zMC4yIDAtMTktMTUuNy0zMC0zNy0zMSAwIDAgNi4zLS4zLTEyMC4zLS4zdjEyNy41aDEyMi43YzI0LjMuMSA0Mi4zLTEyLjkgNDIuMy0zMy4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjTWFzdGVyY2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODIuOSA0MTAuM2MwIDYuOC00LjYgMTEuNy0xMS4yIDExLjctNi44IDAtMTEuMi01LjItMTEuMi0xMS43IDAtNi41IDQuNC0xMS43IDExLjItMTEuNyA2LjYgMCAxMS4yIDUuMiAxMS4yIDExLjd6bS0zMTAuOC0xMS43Yy03LjEgMC0xMS4yIDUuMi0xMS4yIDExLjcgMCA2LjUgNC4xIDExLjcgMTEuMiAxMS43IDYuNSAwIDEwLjktNC45IDEwLjktMTEuNy0uMS02LjUtNC40LTExLjctMTAuOS0xMS43em0xMTcuNS0uM2MtNS40IDAtOC43IDMuNS05LjUgOC43aDE5LjFjLS45LTUuNy00LjQtOC43LTkuNi04Ljd6bTEwNy44LjNjLTYuOCAwLTEwLjkgNS4yLTEwLjkgMTEuNyAwIDYuNSA0LjEgMTEuNyAxMC45IDExLjcgNi44IDAgMTEuMi00LjkgMTEuMi0xMS43IDAtNi41LTQuNC0xMS43LTExLjItMTEuN3ptMTA1LjkgMjYuMWMwIC4zLjMuNS4zIDEuMSAwIC4zLS4zLjUtLjMgMS4xLS4zLjMtLjMuNS0uNS44LS4zLjMtLjUuNS0xLjEuNS0uMy4zLS41LjMtMS4xLjMtLjMgMC0uNSAwLTEuMS0uMy0uMyAwLS41LS4zLS44LS41LS4zLS4zLS41LS41LS41LS44LS4zLS41LS4zLS44LS4zLTEuMSAwLS41IDAtLjguMy0xLjEgMC0uNS4zLS44LjUtMS4xLjMtLjMuNS0uMy44LS41LjUtLjMuOC0uMyAxLjEtLjMuNSAwIC44IDAgMS4xLjMuNS4zLjguMyAxLjEuNXMuMi42LjUgMS4xem0tMi4yIDEuNGMuNSAwIC41LS4zLjgtLjMuMy0uMy4zLS41LjMtLjggMC0uMyAwLS41LS4zLS44LS4zIDAtLjUtLjMtMS4xLS4zaC0xLjZ2My41aC44VjQyNmguM2wxLjEgMS40aC44bC0xLjEtMS4zek01NzYgODF2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MWMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTY0IDIyMC42YzAgNzYuNSA2Mi4xIDEzOC41IDEzOC41IDEzOC41IDI3LjIgMCA1My45LTguMiA3Ni41LTIzLjEtNzIuOS01OS4zLTcyLjQtMTcxLjIgMC0yMzAuNS0yMi42LTE1LTQ5LjMtMjMuMS03Ni41LTIzLjEtNzYuNC0uMS0xMzguNSA2Mi0xMzguNSAxMzguMnptMjI0IDEwOC44YzcwLjUtNTUgNzAuMi0xNjIuMiAwLTIxNy41LTcwLjIgNTUuMy03MC41IDE2Mi42IDAgMjE3LjV6bS0xNDIuMyA3Ni4zYzAtOC43LTUuNy0xNC40LTE0LjctMTQuNy00LjYgMC05LjUgMS40LTEyLjggNi41LTIuNC00LjEtNi41LTYuNS0xMi4yLTYuNS0zLjggMC03LjYgMS40LTEwLjYgNS40VjM5MmgtOC4ydjM2LjdoOC4yYzAtMTguOS0yLjUtMzAuMiA5LTMwLjIgMTAuMiAwIDguMiAxMC4yIDguMiAzMC4yaDcuOWMwLTE4LjMtMi41LTMwLjIgOS0zMC4yIDEwLjIgMCA4LjIgMTAgOC4yIDMwLjJoOC4ydi0yM3ptNDQuOS0xMy43aC03Ljl2NC40Yy0yLjctMy4zLTYuNS01LjQtMTEuNy01LjQtMTAuMyAwLTE4LjIgOC4yLTE4LjIgMTkuMyAwIDExLjIgNy45IDE5LjMgMTguMiAxOS4zIDUuMiAwIDktMS45IDExLjctNS40djQuNmg3LjlWMzkyem00MC41IDI1LjZjMC0xNS0yMi45LTguMi0yMi45LTE1LjIgMC01LjcgMTEuOS00LjggMTguNS0xLjFsMy4zLTYuNWMtOS40LTYuMS0zMC4yLTYtMzAuMiA4LjIgMCAxNC4zIDIyLjkgOC4zIDIyLjkgMTUgMCA2LjMtMTMuNSA1LjgtMjAuNy44bC0zLjUgNi4zYzExLjIgNy42IDMyLjYgNiAzMi42LTcuNXptMzUuNCA5LjNsLTIuMi02LjhjLTMuOCAyLjEtMTIuMiA0LjQtMTIuMi00LjF2LTE2LjZoMTMuMVYzOTJoLTEzLjF2LTExLjJoLTguMlYzOTJoLTcuNnY3LjNoNy42VjQxNmMwIDE3LjYgMTcuMyAxNC40IDIyLjYgMTAuOXptMTMuMy0xMy40aDI3LjVjMC0xNi4yLTcuNC0yMi42LTE3LjQtMjIuNi0xMC42IDAtMTguMiA3LjktMTguMiAxOS4zIDAgMjAuNSAyMi42IDIzLjkgMzMuOCAxNC4ybC0zLjgtNmMtNy44IDYuNC0xOS42IDUuOC0yMS45LTQuOXptNTkuMS0yMS41Yy00LjYtMi0xMS42LTEuOC0xNS4yIDQuNFYzOTJoLTguMnYzNi43aDguMlY0MDhjMC0xMS42IDkuNS0xMC4xIDEyLjgtOC40bDIuNC03LjZ6bTEwLjYgMTguM2MwLTExLjQgMTEuNi0xNS4xIDIwLjctOC40bDMuOC02LjVjLTExLjYtOS4xLTMyLjctNC4xLTMyLjcgMTUgMCAxOS44IDIyLjQgMjMuOCAzMi43IDE1bC0zLjgtNi41Yy05LjIgNi41LTIwLjcgMi42LTIwLjctOC42em02Ni43LTE4LjNINDA4djQuNGMtOC4zLTExLTI5LjktNC44LTI5LjkgMTMuOSAwIDE5LjIgMjIuNCAyNC43IDI5LjkgMTMuOXY0LjZoOC4yVjM5MnptMzMuNyAwYy0yLjQtMS4yLTExLTIuOS0xNS4yIDQuNFYzOTJoLTcuOXYzNi43aDcuOVY0MDhjMC0xMSA5LTEwLjMgMTIuOC04LjRsMi40LTcuNnptNDAuMy0xNC45aC03Ljl2MTkuM2MtOC4yLTEwLjktMjkuOS01LjEtMjkuOSAxMy45IDAgMTkuNCAyMi41IDI0LjYgMjkuOSAxMy45djQuNmg3Ljl2LTUxLjd6bTcuNi03NS4xdjQuNmguOFYzMDJoMS45di0uOGgtNC42di44aDEuOXptNi42IDEyMy44YzAtLjUgMC0xLjEtLjMtMS42LS4zLS4zLS41LS44LS44LTEuMS0uMy0uMy0uOC0uNS0xLjEtLjgtLjUgMC0xLjEtLjMtMS42LS4zLS4zIDAtLjguMy0xLjQuMy0uNS4zLS44LjUtMS4xLjgtLjUuMy0uOC44LS44IDEuMS0uMy41LS4zIDEuMS0uMyAxLjYgMCAuMyAwIC44LjMgMS40IDAgLjMuMy44LjggMS4xLjMuMy41LjUgMS4xLjguNS4zIDEuMS4zIDEuNC4zLjUgMCAxLjEgMCAxLjYtLjMuMy0uMy44LS41IDEuMS0uOC4zLS4zLjUtLjguOC0xLjEuMy0uNi4zLTEuMS4zLTEuNHptMy4yLTEyNC43aC0xLjRsLTEuNiAzLjUtMS42LTMuNWgtMS40djUuNGguOHYtNC4xbDEuNiAzLjVoMS4xbDEuNC0zLjV2NC4xaDEuMXYtNS40em00LjQtODAuNWMwLTc2LjItNjIuMS0xMzguMy0xMzguNS0xMzguMy0yNy4yIDAtNTMuOSA4LjItNzYuNSAyMy4xIDcyLjEgNTkuMyA3My4yIDE3MS41IDAgMjMwLjUgMjIuNiAxNSA0OS41IDIzLjEgNzYuNSAyMy4xIDc2LjQuMSAxMzguNS02MS45IDEzOC41LTEzOC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNjUGF5cGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4zIDI1OC4yYzAgMTIuMi05LjcgMjEuNS0yMiAyMS41LTkuMiAwLTE2LTUuMi0xNi0xNSAwLTEyLjIgOS41LTIyIDIxLjctMjIgOS4zIDAgMTYuMyA1LjcgMTYuMyAxNS41ek04MC41IDIwOS43aC00LjdjLTEuNSAwLTMgMS0zLjIgMi43bC00LjMgMjYuNyA4LjItLjNjMTEgMCAxOS41LTEuNSAyMS41LTE0LjIgMi4zLTEzLjQtNi4yLTE0LjktMTcuNS0xNC45em0yODQgMEgzNjBjLTEuOCAwLTMgMS0zLjIgMi43bC00LjIgMjYuNyA4LS4zYzEzIDAgMjItMyAyMi0xOC0uMS0xMC42LTkuNi0xMS4xLTE4LjEtMTEuMXpNNTc2IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoNDgwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0xMjguMyAyMTUuNGMwLTIxLTE2LjItMjgtMzQuNy0yOGgtNDBjLTIuNSAwLTUgMi01LjIgNC43TDMyIDI5NC4yYy0uMyAyIDEuMiA0IDMuMiA0aDE5YzIuNyAwIDUuMi0yLjkgNS41LTUuN2w0LjUtMjYuNmMxLTcuMiAxMy4yLTQuNyAxOC00LjcgMjguNiAwIDQ2LjEtMTcgNDYuMS00NS44em04NC4yIDguOGgtMTljLTMuOCAwLTQgNS41LTQuMiA4LjItNS44LTguNS0xNC4yLTEwLTIzLjctMTAtMjQuNSAwLTQzLjIgMjEuNS00My4yIDQ1LjIgMCAxOS41IDEyLjIgMzIuMiAzMS43IDMyLjIgOSAwIDIwLjItNC45IDI2LjUtMTEuOS0uNSAxLjUtMSA0LjctMSA2LjIgMCAyLjMgMSA0IDMuMiA0SDIwMGMyLjcgMCA1LTIuOSA1LjUtNS43bDEwLjItNjQuM2MuMy0xLjktMS4yLTMuOS0zLjItMy45em00MC41IDk3LjlsNjMuNy05Mi42Yy41LS41LjUtMSAuNS0xLjcgMC0xLjctMS41LTMuNS0zLjItMy41aC0xOS4yYy0xLjcgMC0zLjUgMS00LjUgMi41bC0yNi41IDM5LTExLTM3LjVjLS44LTIuMi0zLTQtNS41LTRoLTE4LjdjLTEuNyAwLTMuMiAxLjgtMy4yIDMuNSAwIDEuMiAxOS41IDU2LjggMjEuMiA2Mi4xLTIuNyAzLjgtMjAuNSAyOC42LTIwLjUgMzEuNiAwIDEuOCAxLjUgMy4yIDMuMiAzLjJoMTkuMmMxLjgtLjEgMy41LTEuMSA0LjUtMi42em0xNTkuMy0xMDYuN2MwLTIxLTE2LjItMjgtMzQuNy0yOGgtMzkuN2MtMi43IDAtNS4yIDItNS41IDQuN2wtMTYuMiAxMDJjLS4yIDIgMS4zIDQgMy4yIDRoMjAuNWMyIDAgMy41LTEuNSA0LTMuMmw0LjUtMjljMS03LjIgMTMuMi00LjcgMTgtNC43IDI4LjQgMCA0NS45LTE3IDQ1LjktNDUuOHptODQuMiA4LjhoLTE5Yy0zLjggMC00IDUuNS00LjMgOC4yLTUuNS04LjUtMTQtMTAtMjMuNy0xMC0yNC41IDAtNDMuMiAyMS41LTQzLjIgNDUuMiAwIDE5LjUgMTIuMiAzMi4yIDMxLjcgMzIuMiA5LjMgMCAyMC41LTQuOSAyNi41LTExLjktLjMgMS41LTEgNC43LTEgNi4yIDAgMi4zIDEgNCAzLjIgNEg0ODRjMi43IDAgNS0yLjkgNS41LTUuN2wxMC4yLTY0LjNjLjMtMS45LTEuMi0zLjktMy4yLTMuOXptNDcuNS0zMy4zYzAtMi0xLjUtMy41LTMuMi0zLjVoLTE4LjVjLTEuNSAwLTMgMS4yLTMuMiAyLjdsLTE2LjIgMTA0LS4zLjVjMCAxLjggMS41IDMuNSAzLjUgMy41aDE2LjVjMi41IDAgNS0yLjkgNS4yLTUuN0w1NDQgMTkxLjJ2LS4zem0tOTAgNTEuOGMtMTIuMiAwLTIxLjcgOS43LTIxLjcgMjIgMCA5LjcgNyAxNSAxNi4yIDE1IDEyIDAgMjEuNy05LjIgMjEuNy0yMS41LjEtOS44LTYuOS0xNS41LTE2LjItMTUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDY1N0cmlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTIuNCAyMjAuOGMtOC45IDAtMTguNyA2LjctMTguNyAyMi43aDM2LjdjMC0xNi05LjMtMjIuNy0xOC0yMi43ek0zNzUgMjIzLjRjLTguMiAwLTEzLjMgMi45LTE3IDdsLjIgNTIuOGMzLjUgMy43IDguNSA2LjcgMTYuOCA2LjcgMTMuMSAwIDIxLjktMTQuMyAyMS45LTMzLjQgMC0xOC42LTktMzMuMi0yMS45LTMzLjF6TTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTEyMi4yIDI4MS4xYzAgMjUuNi0yMC4zIDQwLjEtNDkuOSA0MC4zLTEyLjIgMC0yNS42LTIuNC0zOC44LTguMXYtMzMuOWMxMiA2LjQgMjcuMSAxMS4zIDM4LjkgMTEuMyA3LjkgMCAxMy42LTIuMSAxMy42LTguNyAwLTE3LTU0LTEwLjYtNTQtNDkuOSAwLTI1LjIgMTkuMi00MC4yIDQ4LTQwLjIgMTEuOCAwIDIzLjUgMS44IDM1LjMgNi41djMzLjRjLTEwLjgtNS44LTI0LjUtOS4xLTM1LjMtOS4xLTcuNSAwLTEyLjEgMi4yLTEyLjEgNy43IDAgMTYgNTQuMyA4LjQgNTQuMyA1MC43em02OC44LTU2LjZoLTI3VjI3NWMwIDIwLjkgMjIuNSAxNC40IDI3IDEyLjZ2MjguOWMtNC43IDIuNi0xMy4zIDQuNy0yNC45IDQuNy0yMS4xIDAtMzYuOS0xNS41LTM2LjktMzYuNWwuMi0xMTMuOSAzNC43LTcuNHYzMC44SDE5MXptNzQgMi40Yy00LjUtMS41LTE4LjctMy42LTI3LjEgNy40djg0LjRoLTM1LjVWMTk0LjJoMzAuN2wyLjIgMTAuNWM4LjMtMTUuMyAyNC45LTEyLjIgMjkuNi0xMC41aC4xem00NC4xIDkxLjhoLTM1LjdWMTk0LjJoMzUuN3ptMC0xNDIuOWwtMzUuNyA3LjZ2LTI4LjlsMzUuNy03LjZ6bTc0LjEgMTQ1LjVjLTEyLjQgMC0yMC01LjMtMjUuMS05bC0uMSA0MC4yLTM1LjUgNy41VjE5NC4yaDMxLjNsMS44IDguOGM0LjktNC41IDEzLjktMTEuMSAyNy44LTExLjEgMjQuOSAwIDQ4LjQgMjIuNSA0OC40IDYzLjggMCA0NS4xLTIzLjIgNjUuNS00OC42IDY1LjZ6bTE2MC40LTUxLjVoLTY5LjVjMS42IDE2LjYgMTMuOCAyMS41IDI3LjYgMjEuNSAxNC4xIDAgMjUuMi0zIDM0LjktNy45VjMxMmMtOS43IDUuMy0yMi40IDkuMi0zOS40IDkuMi0zNC42IDAtNTguOC0yMS43LTU4LjgtNjQuNSAwLTM2LjIgMjAuNS02NC45IDU0LjMtNjQuOSAzMy43IDAgNTEuMyAyOC43IDUxLjMgNjUuMSAwIDMuNS0uMyAxMC45LS40IDEyLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2NWaXNhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MC4xIDIzMS4zczcuNiAzNy4yIDkuMyA0NUg0NDZjMy4zLTguOSAxNi00My41IDE2LTQzLjUtLjIuMyAzLjMtOS4xIDUuMy0xNC45bDIuOCAxMy40ek01NzYgODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE1Mi41IDMzMS4yTDIxNS43IDE3NmgtNDIuNWwtMzkuMyAxMDYtNC4zLTIxLjUtMTQtNzEuNGMtMi4zLTkuOS05LjQtMTIuNy0xOC4yLTEzLjFIMzIuN2wtLjcgMy4xYzE1LjggNCAyOS45IDkuOCA0Mi4yIDE3LjFsMzUuOCAxMzVoNDIuNXptOTQuNC4yTDI3Mi4xIDE3NmgtNDAuMmwtMjUuMSAxNTUuNGg0MC4xem0xMzkuOS01MC44Yy4yLTE3LjctMTAuNi0zMS4yLTMzLjctNDIuMy0xNC4xLTcuMS0yMi43LTExLjktMjIuNy0xOS4yLjItNi42IDcuMy0xMy40IDIzLjEtMTMuNCAxMy4xLS4zIDIyLjcgMi44IDI5LjkgNS45bDMuNiAxLjcgNS41LTMzLjZjLTcuOS0zLjEtMjAuNS02LjYtMzYtNi42LTM5LjcgMC02Ny42IDIxLjItNjcuOCA1MS40LS4zIDIyLjMgMjAgMzQuNyAzNS4yIDQyLjIgMTUuNSA3LjYgMjAuOCAxMi42IDIwLjggMTkuMy0uMiAxMC40LTEyLjYgMTUuMi0yNC4xIDE1LjItMTYgMC0yNC42LTIuNS0zNy43LTguM2wtNS4zLTIuNS01LjYgMzQuOWM5LjQgNC4zIDI2LjggOC4xIDQ0LjggOC4zIDQyLjIuMSA2OS43LTIwLjggNzAtNTN6TTUyOCAzMzEuNEw0OTUuNiAxNzZoLTMxLjFjLTkuNiAwLTE2LjkgMi44LTIxIDEyLjlsLTU5LjcgMTQyLjVINDI2czYuOS0xOS4yIDguNC0yMy4zSDQ4NmMxLjIgNS41IDQuOCAyMy4zIDQuOCAyMy4zSDUyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZW50ZXJjb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyOS4yIDI2OC42Yy0zLjggMzUuMi0zNS40IDYwLjYtNzAuNiA1Ni44LTM1LjItMy44LTYwLjYtMzUuNC01Ni44LTcwLjYgMy44LTM1LjIgMzUuNC02MC42IDcwLjYtNTYuOCAzNS4xIDMuOCA2MC42IDM1LjQgNTYuOCA3MC42em0tODUuOCAyMzUuMUM5Ni43IDQ5Ni04LjIgMzY1LjUgMTAuMSAyMjQuM2MxMS4yLTg2LjYgNjUuOC0xNTYuOSAxMzkuMS0xOTIgMTYxLTc3LjEgMzQ5LjcgMzcuNCAzNTQuNyAyMTYuNiA0LjEgMTQ3LTExOC40IDI2Mi4yLTI2MC41IDI1NC44em0xNzkuOS0xODBjMjcuOS0xMTgtMTYwLjUtMjA1LjktMjM3LjItMjM0LjItNTcuNSA1Ni4zLTY5LjEgMTg4LjYtMzMuOCAzNDQuNCA2OC44IDE1LjggMTY5LjEtMjYuNCAyNzEtMTEwLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2VudG9zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OS42IDk3LjVsMzEuNiAzMS43LTc2LjMgNzYuNVY5Ny41em0tMTYyLjQgMzEuN2w3Ni4zIDc2LjVWOTcuNWgtNDQuN3ptNDEuNS00MS42aDQ0Ljd2MTI3LjlsMTAuOCAxMC44IDEwLjgtMTAuOFY4Ny42aDQ0LjdMMjI0LjIgMzJ6bTI2LjIgMTY4LjFsLTEwLjgtMTAuOEg1NS41di00NC44TDAgMjU1LjdsNTUuNSA1NS42di00NC44aDEyOC42bDEwLjgtMTAuOHptNzkuMy0yMC43aDEwNy45di00NC44bC0zMS42LTMxLjd6bTE3My4zIDIwLjdMMzkyIDIwMC4xdjQ0LjhIMjY0LjNsLTEwLjggMTAuOCAxMC44IDEwLjhIMzkydjQ0LjhsNTUuNS01NS42ek02NS40IDE3Ni4ybDMyLjUtMzEuNyA5MC4zIDkwLjVoMTUuM3YtMTUuM2wtOTAuMy05MC41IDMxLjYtMzEuN0g2NS40em0zMTYuNy03OC43aC03OC41bDMxLjYgMzEuNy05MC4zIDkwLjVWMjM1aDE1LjNsOTAuMy05MC41IDMxLjYgMzEuN3pNMjAzLjUgNDEzLjlWMzA1LjhsLTc2LjMgNzYuNSAzMS42IDMxLjdoNDQuN3pNNjUuNCAyMzVoMTA4LjhsLTc2LjMtNzYuNS0zMi41IDMxLjd6bTMxNi43IDEwMC4ybC0zMS42IDMxLjctOTAuMy05MC41aC0xNS4zdjE1LjNsOTAuMyA5MC41LTMxLjYgMzEuN2g3OC41em0wLTU4LjhIMjc0LjJsNzYuMyA3Ni41IDMxLjYtMzEuN3ptLTYwLjkgMTA1LjhsLTc2LjMtNzYuNXYxMDguMWg0NC43ek05Ny45IDM1Mi45bDc2LjMtNzYuNUg2NS40djQ0Ljh6bTE4MS44IDcwLjlIMjM1VjI5NS45bC0xMC44LTEwLjgtMTAuOCAxMC44djEyNy45aC00NC43bDU1LjUgNTUuNnptLTE2Ni41LTQxLjZsOTAuMy05MC41di0xNS4zaC0xNS4zbC05MC4zIDkwLjUtMzIuNS0zMS43djc4LjdoNzkuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaHJvbWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMxLjUgMjE3LjVMNTUuMSAxMDAuMWM0Ny42LTU5LjIgMTE5LTkxLjggMTkyLTkyLjEgNDIuMy0uMyA4NS41IDEwLjUgMTI0LjggMzMuMiA0My40IDI1LjIgNzYuNCA2MS40IDk3LjQgMTAzTDI2NCAxMzMuNGMtNTguMS0zLjQtMTEzLjQgMjkuMy0xMzIuNSA4NC4xem0zMi45IDM4LjVjMCA0Ni4yIDM3LjQgODMuNiA4My42IDgzLjZzODMuNi0zNy40IDgzLjYtODMuNi0zNy40LTgzLjYtODMuNi04My42LTgzLjYgMzcuMy04My42IDgzLjZ6bTMxNC45LTg5LjJMMzM5LjYgMTc0YzM3LjkgNDQuMyAzOC41IDEwOC4yIDYuNiAxNTcuMkwyMzQuMSA1MDMuNmM0Ni41IDIuNSA5NC40LTcuNyAxMzcuOC0zMi45IDEwNy40LTYyIDE1MC45LTE5MiAxMDcuNC0zMDMuOXpNMTMzLjcgMzAzLjZMNDAuNCAxMjAuMUMxNC45IDE1OS4xIDAgMjA1LjkgMCAyNTZjMCAxMjQgOTAuOCAyMjYuNyAyMDkuNSAyNDQuOWw2My43LTEyNC44Yy01Ny42IDEwLjgtMTEzLjItMjAuOC0xMzkuNS03Mi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNocm9tZWNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ3LjgsNjRINjRjLTIzLjYsMC00Mi43LDE5LjEtNDIuNyw0Mi43djYzLjlINjR2LTYzLjloMzgzLjh2Mjk4LjZIMjk4LjZWNDQ4SDQ0OGMyMy42LDAsNDIuNy0xOS4xLDQyLjctNDIuN1YxMDYuNyBDNDkwLjcsODMuMSw0NzEuNCw2NCw0NDcuOCw2NHogTTIxLjMsMzgzLjZMMjEuMywzODMuNmwwLDYzLjloNjMuOUM4NS4yLDQxMi4yLDU2LjYsMzgzLjYsMjEuMywzODMuNkwyMS4zLDM4My42eiBNMjEuMywyOTguNlYzNDEgYzU4LjksMCwxMDYuNiw0OC4xLDEwNi42LDEwN2g0Mi43QzE3MC43LDM2NS42LDEwMy43LDI5OC43LDIxLjMsMjk4LjZ6IE0yMTMuNCw0NDhoNDIuN2MtMC41LTEyOS41LTEwNS4zLTIzNC4zLTIzNC44LTIzNC42bDAsNDIuNCBDMTI3LjMsMjU1LjYsMjEzLjMsMzQyLDIxMy40LDQ0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZGZsYXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy45MDYsMzE5LjkxM2wtMjMwLjgtMi45MjhhNC41OCw0LjU4LDAsMCwxLTMuNjMyLTEuOTI2LDQuNjQ4LDQuNjQ4LDAsMCwxLS40OTQtNC4xNDcsNi4xNDMsNi4xNDMsMCwwLDEsNS4zNjEtNC4wNzZMNDExLjI4MSwzMDMuOWMyNy42MzEtMS4yNiw1Ny41NDYtMjMuNTc0LDY4LjAyMi01MC43ODRsMTMuMjg2LTM0LjU0MmE3Ljk0NCw3Ljk0NCwwLDAsMCwuNTI0LTIuOTM2LDcuNzM1LDcuNzM1LDAsMCwwLS4xNjQtMS42MzFBMTUxLjkxLDE1MS45MSwwLDAsMCwyMDEuMjU3LDE5OC40LDY4LjEyLDY4LjEyLDAsMCwwLDk0LjIsMjY5LjU5QzQxLjkyNCwyNzEuMTA2LDAsMzEzLjcyOCwwLDM2Ni4xMmE5Ni4wNTQsOTYuMDU0LDAsMCwwLDEuMDI5LDEzLjk1OCw0LjUwOCw0LjUwOCwwLDAsMCw0LjQ0NSwzLjg3MWw0MjYuMS4wNTFjLjA0MywwLC4wOC0uMDE5LjEyMi0uMDJhNS42MDYsNS42MDYsMCwwLDAsNS4yNzEtNGwzLjI3My0xMS4yNjVjMy45LTEzLjQsMi40NDgtMjUuOC00LjEtMzQuOUM0MzAuMTI0LDMyNS40MjMsNDIwLjA5LDMyMC40ODcsNDA3LjkwNiwzMTkuOTEzWk01MTMuODU2LDIyMS4xYy0yLjE0MSwwLTQuMjcxLjA2Mi02LjM5MS4xNjRhMy43NzEsMy43NzEsMCwwLDAtMy4zMjQsMi42NTNsLTkuMDc3LDMxLjE5M2MtMy45LDEzLjQtMi40NDksMjUuNzg2LDQuMSwzNC44OSw2LjAyLDguNCwxNi4wNTQsMTMuMzIzLDI4LjIzOCwxMy45bDQ5LjIsMi45MzlhNC40OTEsNC40OTEsMCwwLDEsMy41MSwxLjg5NCw0LjY0LDQuNjQsMCwwLDEsLjUxNCw0LjE2OSw2LjE1Myw2LjE1MywwLDAsMS01LjM1MSw0LjA3NWwtNTEuMTI1LDIuOTM5Yy0yNy43NTQsMS4yNy01Ny42NjksMjMuNTc0LTY4LjE0NSw1MC43ODRsLTMuNjk1LDkuNjA2YTIuNzE2LDIuNzE2LDAsMCwwLDIuNDI3LDMuNjhjLjA0NiwwLC4wODguMDE3LjEzNi4wMTdoMTc1LjkxYTQuNjksNC42OSwwLDAsMCw0LjUzOS0zLjM3LDEyNC44MDcsMTI0LjgwNywwLDAsMCw0LjY4Mi0zNEM2NDAsMjc3LjMsNTgzLjUyNCwyMjEuMSw1MTMuODU2LDIyMS4xWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc2NhbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE4LjEgMTU0bC05LjQgNy42Yy0yMi41LTE5LjMtNTEuNS0zMy42LTgzLjMtMzMuNkMxNTMuOCAxMjggOTYgMTg4LjggOTYgMjYwLjNjMCA2LjYuNCAxMy4xIDEuNCAxOS40LTItNTYgNDEuOC05Ny40IDkyLjYtOTcuNCAyNC4yIDAgNDYuMiA5LjQgNjIuNiAyNC43bC0yNS4yIDIwLjRjLTguMy0uOS0xNi44IDEuOC0yMy4xIDguMS0xMS4xIDExLTExLjEgMjguOSAwIDQwIDExLjEgMTEgMjguOSAxMSA0MCAwIDYuMy02LjMgOS0xNC45IDguMS0yMy4xbDc1LjItODguOGM2LjMtNi41LTMuMy0xNS45LTkuNS05LjZ6bS04My44IDExMS41Yy01LjYgNS41LTE0LjYgNS41LTIwLjIgMC01LjYtNS42LTUuNi0xNC42IDAtMjAuMnMxNC42LTUuNiAyMC4yIDAgNS42IDE0LjcgMCAyMC4yek0yMjQgMzJDMTAwLjUgMzIgMCAxMzIuNSAwIDI1NnMxMDAuNSAyMjQgMjI0IDIyNCAyMjQtMTAwLjUgMjI0LTIyNFMzNDcuNSAzMiAyMjQgMzJ6bTAgMzg0Yy04OC4yIDAtMTYwLTcxLjgtMTYwLTE2MFMxMzUuOCA5NiAyMjQgOTZzMTYwIDcxLjggMTYwIDE2MC03MS44IDE2MC0xNjAgMTYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3Vkc21pdGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMzMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMyLjUgNDE5LjljMCA0Ni40LTM3LjYgODQuMS04NCA4NC4xcy04NC0zNy43LTg0LTg0LjEgMzcuNi04NCA4NC04NCA4NCAzNy42IDg0IDg0em0tODQtMjQzLjljNDYuNCAwIDgwLTM3LjYgODAtODRzLTMzLjYtODQtODAtODQtODggMzcuNi04OCA4NC0yOS42IDc2LTc2IDc2LTg0IDQxLjYtODQgODggMzcuNiA4MCA4NCA4MCA4NC0zMy42IDg0LTgwIDMzLjYtODAgODAtODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWR2ZXJzaWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OC42IDMwNGM4LjIgNjguNSA2Ny40IDExNS41IDE0NiAxMTEuMyA1MS4yIDQzLjMgMTM2LjggNDUuOCAxODYuNC01LjYgNjkuMiAxLjEgMTE4LjUtNDQuNiAxMzEuNS05OS41IDE0LjgtNjIuNS0xOC4yLTEzMi41LTkyLjEtMTU1LjEtMzMtODguMS0xMzEuNC0xMDEuNS0xODYuNS04NS01Ny4zIDE3LjMtODQuMyA1My4yLTk5LjMgMTA5LjctNy44IDIuNy0yNi41IDguOS00NSAyNC4xIDExLjcgMCAxNS4yIDguOSAxNS4yIDE5LjV2MjAuNGMwIDEwLjctOC43IDE5LjUtMTkuNSAxOS41aC0yMC4yYy0xMC43IDAtMTkuNS02LTE5LjUtMTYuN1YyNDBIOTguOEM5NSAyNDAgODggMjQ0LjMgODggMjUxLjl2NDAuNGMwIDYuNCA1LjMgMTEuOCAxMS43IDExLjhoNDguOXptMjI3LjQgOGMtMTAuNyA0Ni4zIDIxLjcgNzIuNCA1NS4zIDg2LjhDMzI0LjEgNDMyLjYgMjU5LjcgMzQ4IDI5NiAyODhjLTMzLjIgMjEuNi0zMy43IDcxLjItMjkuMiA5Mi45LTE3LjktMTIuNC01My44LTMyLjQtNTcuNC03OS44LTMtMzkuOSAyMS41LTc1LjcgNTctOTMuOUMyOTcgMTkxLjQgMzY5LjkgMTk4LjcgNDAwIDI0OGMtMTQuMS00OC01My44LTcwLjEtMTAxLjgtNzQuOCAzMC45LTMwLjcgNjQuNC01MC4zIDExNC4yLTQzLjcgNjkuOCA5LjMgMTMzLjIgODIuOCA2Ny43IDE1MC41IDM1LTE2LjMgNDguNy01NC40IDQ3LjUtNzYuOWwxMC41IDE5LjZjMTEuOCAyMiAxNS4yIDQ3LjYgOS40IDcyLTkuMiAzOS00MC42IDY4LjgtNzkuNyA3Ni41LTMyLjEgNi4zLTgzLjEtNS4xLTkxLjgtNTkuMnpNMTI4IDIwOEg4OC4yYy04LjkgMC0xNi4yLTcuMy0xNi4yLTE2LjJ2LTM5LjZjMC04LjkgNy4zLTE2LjIgMTYuMi0xNi4ySDEyOGM4LjkgMCAxNi4yIDcuMyAxNi4yIDE2LjJ2MzkuNmMwIDguOS03LjMgMTYuMi0xNi4yIDE2LjJ6TTEwLjEgMTY4QzQuNSAxNjggMCAxNjMuNSAwIDE1Ny45di0yNy44YzAtNS42IDQuNS0xMC4xIDEwLjEtMTAuMWgyNy43YzUuNSAwIDEwLjEgNC41IDEwLjEgMTAuMXYyNy44YzAgNS42LTQuNSAxMC4xLTEwLjEgMTAuMUgxMC4xek0xNjggMTQyLjd2LTIxLjRjMC01LjEgNC4yLTkuMyA5LjMtOS4zaDIxLjRjNS4xIDAgOS4zIDQuMiA5LjMgOS4zdjIxLjRjMCA1LjEtNC4yIDkuMy05LjMgOS4zaC0yMS40Yy01LjEgMC05LjMtNC4yLTkuMy05LjN6TTU2IDIzNS41djI1YzAgNi4zLTUuMSAxMS41LTExLjQgMTEuNUgxOS40QzEzLjEgMjcyIDggMjY2LjggOCAyNjAuNXYtMjVjMC02LjMgNS4xLTExLjUgMTEuNC0xMS41aDI1LjFjNi40IDAgMTEuNSA1LjIgMTEuNSAxMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGVwZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjI4NSAxNTkuNzA0bC0yMzQtMTU2Yy03Ljk4Ny00LjkxNS0xNi41MTEtNC45Ni0yNC41NzEgMGwtMjM0IDE1NkMzLjcxNCAxNjMuNzAzIDAgMTcwLjg0NyAwIDE3Ny45ODl2MTU1Ljk5OWMwIDcuMTQzIDMuNzE0IDE0LjI4NiA5LjcxNSAxOC4yODZsMjM0IDE1Ni4wMjJjNy45ODcgNC45MTUgMTYuNTExIDQuOTYgMjQuNTcxIDBsMjM0LTE1Ni4wMjJjNi0zLjk5OSA5LjcxNS0xMS4xNDMgOS43MTUtMTguMjg2VjE3Ny45ODljLS4wMDEtNy4xNDItMy43MTUtMTQuMjg2LTkuNzE2LTE4LjI4NXpNMjc4IDYzLjEzMWwxNzIuMjg2IDExNC44NTgtNzYuODU3IDUxLjQyOUwyNzggMTY1LjcwM1Y2My4xMzF6bS00NCAwdjEwMi41NzJsLTk1LjQyOSA2My43MTUtNzYuODU3LTUxLjQyOUwyMzQgNjMuMTMxek00NCAyMTkuMTMybDU1LjE0MyAzNi44NTdMNDQgMjkyLjg0NnYtNzMuNzE0em0xOTAgMjI5LjcxNUw2MS43MTQgMzMzLjk4OWw3Ni44NTctNTEuNDI5TDIzNCAzNDYuMjc1djEwMi41NzJ6bTIyLTE0MC44NThsLTc3LjcxNS01MiA3Ny43MTUtNTIgNzcuNzE1IDUyLTc3LjcxNSA1MnptMjIgMTQwLjg1OFYzNDYuMjc1bDk1LjQyOS02My43MTUgNzYuODU3IDUxLjQyOUwyNzggNDQ4Ljg0N3ptMTkwLTE1Ni4wMDFsLTU1LjE0My0zNi44NTdMNDY4IDIxOS4xMzJ2NzMuNzE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZGllcGllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NzIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMi41IDIwMi45YzMwLjcgMCAzMy41IDUzLjEtLjMgNTMuMWgtMTAuOHY0NC4zaC0yNi42di05Ny40aDM3Ljd6TTQ3MiAzNTIuNkM0MjkuOSA0NDQuNSAzNTAuNCA1MDQgMjQ4IDUwNCAxMTEgNTA0IDAgMzkzIDAgMjU2UzExMSA4IDI0OCA4Yzk3LjQgMCAxNzIuOCA1My43IDIxOC4yIDEzOC40bC0xODYgMTA4LjhMNDcyIDM1Mi42em0tMzguNSAxMi41bC02MC4zLTMwLjdjLTI3LjEgNDQuMy03MC40IDcxLjQtMTIyLjQgNzEuNC04Mi41IDAtMTQ5LjItNjYuNy0xNDkuMi0xNDguOSAwLTgyLjUgNjYuNy0xNDkuMiAxNDkuMi0xNDkuMiA0OC40IDAgODguOSAyMy41IDExNi45IDYzLjRsNTkuNS0zNC42Yy00MC43LTYyLjYtMTA0LjctMTAwLTE3OS4yLTEwMC0xMjEuMiAwLTIxOS41IDk4LjMtMjE5LjUgMjE5LjVTMTI2LjggNDc1LjUgMjQ4IDQ3NS41Yzc4LjYgMCAxNDYuNS00Mi4xIDE4NS41LTExMC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbmZsdWVuY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zIDQxMi4yYy00LjUgNy42LTIuMSAxNy41IDUuNSAyMi4ybDEwNS45IDY1LjJjNy43IDQuNyAxNy43IDIuNCAyMi40LTUuMyAwLS4xLjEtLjIuMS0uMiA2Ny4xLTExMi4yIDgwLjUtOTUuOSAyODAuOS0uNyA4LjEgMy45IDE3LjguNCAyMS43LTcuNy4xLS4xLjEtLjMuMi0uNGw1MC40LTExNC4xYzMuNi04LjEtLjEtMTcuNi04LjEtMjEuMy0yMi4yLTEwLjQtNjYuMi0zMS4yLTEwNS45LTUwLjNDMTI3LjUgMTc5IDQ0LjYgMzQ1LjMgMi4zIDQxMi4yem01MDcuNC0zMTIuMWM0LjUtNy42IDIuMS0xNy41LTUuNS0yMi4yTDM5OC40IDEyLjhjLTcuNS01LTE3LjYtMy4xLTIyLjYgNC40LS4yLjMtLjQuNi0uNiAxLTY3LjMgMTEyLjYtODEuMSA5NS42LTI4MC42LjktOC4xLTMuOS0xNy44LS40LTIxLjcgNy43LS4xLjEtLjEuMy0uMi40TDIyLjIgMTQxLjNjLTMuNiA4LjEuMSAxNy42IDguMSAyMS4zIDIyLjIgMTAuNCA2Ni4zIDMxLjIgMTA2IDUwLjQgMjQ4IDEyMCAzMzAuOC00NS40IDM3My40LTExMi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbm5lY3RkZXZlbG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MC41IDI0MWwtNTAuMDg5LTg2Ljc4NmMxLjA3MS0yLjE0MiAxLjg3NS00LjU1MyAxLjg3NS03LjIzMiAwLTguMDM2LTYuNjk2LTE0LjczMy0xNC43MzItMTUuMDAxbC01NS40NDctOTUuODkzYy41MzYtMS42MDcgMS4wNzEtMy4yMTQgMS4wNzEtNC44MjEgMC04LjU3MS02Ljk2NC0xNS4yNjgtMTUuMjY4LTE1LjI2OC00LjgyMSAwLTguODM5IDIuMTQzLTExLjc4NiA1LjYyNUgyOTkuNTE4QzI5Ni44MzkgMTguMTQzIDI5Mi44MjEgMTYgMjg4IDE2cy04LjgzOSAyLjE0My0xMS41MTggNS42MjVIMTcwLjQxMUMxNjcuNDY0IDE4LjE0MyAxNjMuNDQ3IDE2IDE1OC42MjUgMTZjLTguMzAzIDAtMTUuMjY4IDYuNjk2LTE1LjI2OCAxNS4yNjggMCAxLjYwNy41MzYgMy40ODIgMS4wNzIgNC44MjFsLTU1Ljk4MyA5Ny4yMzNjLTUuMzU2IDIuNDEtOS4xMDcgNy41LTkuMTA3IDEzLjY2MSAwIC41MzUuMjY4IDEuMDcxLjI2OCAxLjYwN2wtNTMuMzA0IDkyLjE0M2MtNy4yMzIgMS4zMzktMTIuNTkgNy41LTEyLjU5IDE1IDAgNy4yMzIgNS4wODkgMTMuMzkzIDEyLjA1NCAxNWw1NS4xNzkgOTUuMzU4Yy0uNTM2IDEuNjA3LS44MDQgMi45NDYtLjgwNCA0LjgyMSAwIDcuMjMyIDUuMDg5IDEzLjM5MyAxMi4wNTQgMTQuNzMybDUxLjY5NyA4OS43MzJjLS41MzYgMS42MDctMS4wNzEgMy40ODItMS4wNzEgNS4zNTcgMCA4LjU3MSA2Ljk2NCAxNS4yNjggMTUuMjY4IDE1LjI2OCA0LjgyMSAwIDguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDYuODc1QzI3OS4xNjEgNDkzLjg1NyAyODMuNDQ3IDQ5NiAyODggNDk2czguODM5LTIuMTQzIDExLjUxOC01LjM1N2gxMDcuMTQzYzIuNjc4IDIuOTQ2IDYuNjk2IDQuODIxIDEwLjk4MiA0LjgyMSA4LjU3MSAwIDE1LjI2OC02Ljk2NCAxNS4yNjgtMTUuMjY4IDAtMS42MDctLjI2Ny0yLjk0Ni0uODAzLTQuMjg1bDUxLjY5Ny05MC4yNjhjNi45NjQtMS4zMzkgMTIuMDU0LTcuNSAxMi4wNTQtMTQuNzMyIDAtMS42MDctLjI2OC0zLjIxNC0uODA0LTQuODIxbDU0LjkxMS05NS4zNThjNi45NjQtMS4zMzkgMTIuMzIyLTcuNSAxMi4zMjItMTUtLjAwMi03LjIzMi01LjA5Mi0xMy4zOTMtMTEuNzg4LTE0LjczMnpNMTUzLjUzNSA0NTAuNzMybC00My42Ni03NS44MDNoNDMuNjZ2NzUuODAzem0wLTgzLjgzOWgtNDMuNjZjLS4yNjgtMS4wNzEtLjgwNC0yLjE0Mi0xLjMzOS0zLjIxNGw0NC45OTktNDcuNDF2NTAuNjI0em0wLTYyLjQxMWwtNTAuMzU3IDUzLjMwNGMtMS4zMzktLjUzNi0yLjY3OS0xLjM0LTQuMDE4LTEuNjA3TDQzLjQ0NyAyNTkuNzVjLjUzNS0xLjMzOS41MzUtMi42NzkuNTM1LTQuMDE4czAtMi40MS0uMjY4LTMuNDgybDUxLjk2NS05MGMyLjY3OS0uMjY4IDUuMzU3LTEuMDcyIDcuNzY4LTIuNjc5bDUwLjA4OSA1MS45NjV2OTIuOTQ2em0wLTEwMi4zMjJsLTQ1LjgwMy00Ny40MWMxLjMzOS0yLjE0MyAyLjE0My00LjgyMSAyLjE0My03Ljc2NyAwLS4yNjgtLjI2OC0uODA0LS4yNjgtMS4wNzJsNDMuOTI4LTE1LjgwNHY3Mi4wNTN6bTAtODAuNjI1bC00My42NiAxNS44MDQgNDMuNjYtNzUuNTM2djU5LjczMnptMzI2LjUxOSAzOS4xMDhsLjgwNCAxLjMzOUw0NDUuNSAzMjkuMTI1bC02My43NS02Ny4yMzIgOTguMDM2LTEwMS41MTguMjY4LjI2OHpNMjkxLjc1IDM1NS4xMDdsMTEuNTE4IDExLjc4NkgyODAuNWwxMS4yNS0xMS43ODZ6bS0uMjY4LTExLjI1bC04My4zMDMtODUuNDQ2IDc5LjU1My04NC4zNzUgODMuMDM2IDg3LjU4OS03OS4yODYgODIuMjMyem01LjM1NyA1Ljg5M2w3OS4yODYtODIuMjMyIDY3LjUgNzEuMjUtNS44OTIgMjguMTI1SDMxMy43MTRsLTE2Ljg3NS0xNy4xNDN6TTQxMC40MTEgNDQuMzkzYzEuMDcxLjUzNiAyLjE0MiAxLjA3MiAzLjQ4MiAxLjM0bDU3Ljg1NyAxMDAuNzE0di41MzZjMCAyLjk0Ni44MDMgNS42MjQgMi4xNDMgNy43NjdMMzc2LjM5MyAyNTZsLTgzLjAzNS04Ny41ODlMNDEwLjQxMSA0NC4zOTN6bS05LjEwNy0yLjE0M0wyODcuNzMyIDE2Mi41MThsLTU3LjA1NC02MC4yNjggMTY2LjMzOS02MGg0LjI4N3ptLTEyMy40ODMgMGMyLjY3OCAyLjY3OCA2LjE2IDQuMjg1IDEwLjE3OSA0LjI4NXM3LjUtMS42MDcgMTAuMTc5LTQuMjg1aDc1TDIyNC43ODYgOTUuODIxIDE3My44OTMgNDIuMjVoMTAzLjkyOHptLTExNi4yNDkgNS42MjVsMS4wNzEtMi4xNDJhMzMuODM0IDMzLjgzNCAwIDAgMCAyLjY3OS0uODA0bDUxLjE2MSA1My44NC01NC45MTEgMTkuODIxVjQ3Ljg3NXptMCA3OS4yODZsNjAuODAzLTIxLjk2NCA1OS43MzIgNjMuMjE0LTc5LjU1MyA4NC4xMDctNDAuOTgyLTQyLjA1M3YtODMuMzA0em0wIDkyLjY3OEwxOTggMjU3LjYwN2wtMzYuNDI4IDM4LjMwNHYtNzYuMDcyem0wIDg3Ljg1OGw0Mi4wNTMtNDQuNDY0IDgyLjc2OCA4NS45ODItMTcuMTQzIDE3LjY3OEgxNjEuNTcydi01OS4xOTZ6bTYuOTY0IDE2Mi4wNTNjLTEuNjA3LTEuNjA3LTMuNDgyLTIuNjc4LTUuODkzLTMuNDgybC0xLjA3MS0xLjYwN3YtODkuNzMyaDk5LjkxbC05MS42MDcgOTQuODIxaC0xLjMzOXptMTI5LjkxMSAwYy0yLjY3OS0yLjQxLTYuNDI4LTQuMjg1LTEwLjQ0Ny00LjI4NXMtNy43NjcgMS44NzUtMTAuNDQ3IDQuMjg1aC05Ni40MjlsOTEuNjA3LTk0LjgyMWgzOC4zMDRsOTEuNjA3IDk0LjgyMUgyOTguNDQ3em0xMjAtMTEuNzg2bC00LjI4NiA3LjVjLTEuMzM5LjI2OC0yLjQxLjgwMy0zLjQ4MiAxLjMzOWwtODkuMTk2LTkxLjg3NWgxMTQuMzc2bC0xNy40MTIgODMuMDM2em0xMi44NTYtMjIuMjMybDEyLjg1OC02MC44MDNoMjEuOTY0bC0zNC44MjIgNjAuODAzem0zNC44MjItNjguODM5aC0yMC4zNTdsNC41NTMtMjEuMTYgMTcuMTQzIDE4LjIxNGMtLjUzNS44MDMtMS4wNzEgMS44NzQtMS4zMzkgMi45NDZ6bTY2LjE2MS0xMDcuNDExbC01NS40NDcgOTYuNjk3Yy0xLjMzOS41MzUtMi42NzkgMS4wNzEtNC4wMTggMS44NzRsLTIwLjYyNS0yMS45NjQgMzQuNTU0LTE2My45MjggNDUuODAzIDc5LjI4NmMtLjI2NyAxLjMzOS0uODAzIDIuNjc4LS44MDMgNC4yODUgMCAxLjMzOS4yNjggMi40MTEuNTM2IDMuNzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29udGFvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1LjQgMzA1YzE0LjQgNjcuMSAyNi40IDEyOSA2OC4yIDE3NUgzNGMtMTguNyAwLTM0LTE1LjItMzQtMzRWNjZjMC0xOC43IDE1LjItMzQgMzQtMzRoNTcuN0M3Ny45IDQ0LjYgNjUuNiA1OS4yIDU0LjggNzUuNmMtNDUuNCA3MC0yNyAxNDYuOC05LjQgMjI5LjR6TTQ3OCAzMmgtOTAuMmMyMS40IDIxLjQgMzkuMiA0OS41IDUyLjcgODQuMWwtMTM3LjEgMjkuM2MtMTQuOS0yOS0zNy44LTUzLjMtODIuNi00My45LTI0LjYgNS4zLTQxIDE5LjMtNDguMyAzNC42LTguOCAxOC43LTEzLjIgMzkuOCA4LjIgMTQwLjMgMjEuMSAxMDAuMiAzMy43IDExNy43IDQ5LjUgMTMxLjIgMTIuOSAxMS4xIDMzLjQgMTcgNTguMyAxMS43IDQ0LjUtOS40IDU1LjctNDAuNyA1Ny40LTczLjJsMTM3LjQtMjkuNmMzLjIgNzEuNS0xOC43IDEyNS4yLTU3LjQgMTYzLjZINDc4YzE4LjcgMCAzNC0xNS4yIDM0LTM0VjY2YzAtMTguOC0xNS4yLTM0LTM0LTM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvdHRvbkJ1cmVhdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzQuMzEgMzMwLjQxYy0yMy42NiA5MS44NS05NC4yMyAxNDQuNTktMjAxLjkgMTQ4LjM1VjQyOS42YzAtNDggMjYuNDEtNzQuMzkgNzQuMzktNzQuMzkgNjIgMCA5OS4yLTM3LjIgOTkuMi05OS4yMSAwLTYxLjM3LTM2LjUzLTk4LjI4LTk3LjM4LTk5LjA2LTMzLTY5LjMyLTE0Ni41LTY0LjY1LTE3Ny4yNCAwQzExMC41MiAxNTcuNzIgNzQgMTk0LjYzIDc0IDI1NmMwIDYyLjEzIDM3LjI3IDk5LjQxIDk5LjQgOTkuNDEgNDggMCA3NC41NSAyNi4yMyA3NC41NSA3NC4zOVY0NzljLTEzNC40My01LTIxMS4xLTg1LjA3LTIxMS4xLTIyMyAwLTE0MS44MiA4MS4zNS0yMjMuMiAyMjMuMi0yMjMuMiAxMTQuNzcgMCAxODkuODQgNTMuMiAyMTQuNjkgMTQ4LjgxSDUwMEM0NzMuODggNzEuNTEgMzg4LjIyIDggMjU5LjgyIDggMTA1IDggMTIgMTAxLjE5IDEyIDI1NS44MiAxMiA0MTEuMTQgMTA1LjE5IDUwNC4zNCAyNTkuODIgNTA0YzEyOC4yNyAwIDIxMy44Ny02My44MSAyMzkuNjctMTczLjU5ek0zNTcgMTgyLjMzYzQxLjM3IDMuNDUgNjQuMiAyOSA2NC4yIDczLjY3IDAgNDgtMjYuNDMgNzQuNDEtNzQuNCA3NC40MS0yOC42MSAwLTQ5LjMzLTkuNTktNjEuNTktMjcuMzMgODMuMDYtMTYuNTUgNzUuNTktOTkuNjcgNzEuNzktMTIwLjc1em0tODEuNjggOTcuMzZjLTIuNDYtMTAuMzQtMTYuMzMtODcgNTYuMjMtOTcgMi4yNyAxMC4wOSAxNi41MiA4Ny4xMS01Ni4yNiA5N3pNMjYwIDEzMmMyOC42MSAwIDQ5IDkuNjcgNjEuNDQgMjcuNjEtMjguMzYgNS40OC00OS4zNiAyMC41OS02MS41OSA0My40NS0xMi4yMy0yMi44Ni0zMy4yMy0zOC02MS42LTQzLjQ1IDEyLjQxLTE3LjY5IDMzLjI3LTI3LjM1IDYxLjU3LTI3LjM1em0tNzEuNTIgNTAuNzJjNzMuMTcgMTAuNTcgNTguOTEgODYuODEgNTYuNDkgOTctNzIuNDEtOS44NC01OS04Ni45NS01Ni4yNS05N3pNMTczLjIgMzMwLjQxYy00OCAwLTc0LjQtMjYuNC03NC40LTc0LjQxIDAtNDQuMzYgMjIuODYtNzAgNjQuMjItNzMuNjctNi43NSAzNy4yLTEuMzggMTA2LjUzIDcxLjY1IDEyMC43NS0xMi4xNCAxNy42My0zMi44NCAyNy4zLTYxLjE0IDI3LjN6bTUzLjIxIDEyLjM5QTgwLjggODAuOCAwIDAgMCAyNjAgMzA5LjI1YzcuNzcgMTQuNDkgMTkuMzMgMjUuNTQgMzMuODIgMzMuNTVhODAuMjggODAuMjggMCAwIDAtMzMuNTggMzMuODNjLTgtMTQuNS0xOS4wNy0yNi4yMy0zMy41Ni0zMy44M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcGFuZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEwLjMgMjIwLjJjLTUuNi0yNC44LTI2LjktNDEuMi01MS00MS4yaC0zN2MtNy4xIDAtMTIuNSA0LjUtMTQuMyAxMC45TDczLjEgMzIwbDI0LjctLjFjNi44IDAgMTIuMy00LjUgMTQuMi0xMC43bDI1LjgtOTUuN2gxOS44YzguNCAwIDE2LjIgNS42IDE4LjMgMTQuOCAyLjUgMTAuOS01LjkgMjIuNi0xOC4zIDIyLjZoLTEwLjNjLTcgMC0xMi41IDQuNi0xNC4zIDEwLjhsLTYuNCAyMy44aDMyYzM3LjIgMCA1OC4zLTM2LjIgNTEuNy02NS4zem0tMTU2LjUgMjhoMTguNmM2LjkgMCAxMi40LTQuNCAxNC4zLTEwLjlsNi4yLTIzLjZoLTQwQzMwIDIxMy43IDkgMjI3LjggMS43IDI1NC44LTcgMjg4LjYgMTguNSAzMjAgNTIgMzIwaDEyLjRsNy4xLTI2LjFjMS4yLTQuNC0yLjItOC4zLTYuNC04LjNINTMuOGMtMjQuNyAwLTI0LjktMzcuNCAwLTM3LjR6bTI0Ny41LTM0LjhoLTc3LjlsLTMuNSAxMy40Yy0yLjQgOS42IDQuNSAxOC41IDE0LjIgMTguNWg1Ny41YzQgMCAyLjQgNC4zIDIuMSA1LjNsLTguNiAzMS44Yy0uNCAxLjQtLjkgNS4zLTUuNSA1LjNoLTM0LjljLTUuMyAwLTUuMy03LjkgMC03LjloMjEuNmM2LjggMCAxMi4zLTQuNiAxNC4yLTEwLjhsMy41LTEzLjJoLTQ4LjRjLTM5LjIgMC00My42IDYzLjgtLjcgNjMuOGw1Ny41LjJjMTEuMiAwIDIwLjYtNy4yIDIzLjQtMTcuOGwxNC01MS44YzQuOC0xOS4yLTkuNy0zNi44LTI4LjUtMzYuOHpNNjMzLjEgMTc5aC0xOC45Yy00LjkgMC05LjIgMy4yLTEwLjQgNy45TDU2OC4yIDMyMGMyMC43IDAgMzkuOC0xMy44IDQ0LjktMzQuNWwyNi41LTk4LjJjMS4yLTQuMy0yLTguMy02LjUtOC4zem0tMjM2LjMgMzQuN3YuMWgtNDguM2wtMjYuMiA5OGMtMS4yIDQuNCAyLjIgOC4zIDYuNCA4LjNoMTguOWM0LjggMCA5LjItMyAxMC40LTcuOGwxNy4yLTY0SDM5NWMxMi41IDAgMjEuNCAxMS44IDE4LjEgMjMuNGwtMTAuNiA0MGMtMS4yIDQuMyAxLjkgOC4zIDYuNCA4LjNINDI4YzQuNiAwIDkuMS0yLjkgMTAuMy03LjhsOC44LTMzLjFjOS0zMy4xLTE1LjktNjUuNC01MC4zLTY1LjR6bTk4LjMgNzQuNmMtMy42IDAtNi0zLjQtNS4xLTYuN2w4LTMwYy45LTMuOSAzLjctNiA3LjgtNmgzMi45YzIuNiAwIDQuNiAyLjQgMy45IDUuMWwtLjcgMi42Yy0uNiAyLTEuOSAzLTMuOSAzaC0yMS42Yy03IDAtMTIuNiA0LjYtMTQuMiAxMC44bC0zLjUgMTNoNTMuNGMxMC41IDAgMjAuMy02LjYgMjMuMi0xNy42bDMuMi0xMmM0LjktMTkuMS05LjMtMzYuOC0yOC4zLTM2LjhoLTQ3LjNjLTE3LjkgMC0zMy44IDEyLTM4LjYgMjkuNmwtMTAuOCA0MGMtNSAxNy43IDguMyAzNi43IDI4LjMgMzYuN2g2Ni43YzYuOCAwIDEyLjMtNC41IDE0LjItMTAuN2w1LjctMjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zQnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE0LjkgMTk0LjR2MTAxLjRoLTI4LjN2MTIwLjVoLTc3LjFWMjk1LjloLTI4LjNWMTk0LjRjMC00LjQgMS42LTguMiA0LjYtMTEuMyAzLjEtMy4xIDYuOS00LjcgMTEuMy00LjdIMjk5YzQuMSAwIDcuOCAxLjYgMTEuMSA0LjcgMy4xIDMuMiA0LjggNi45IDQuOCAxMS4zem0tMTAxLjUtNjMuN2MwLTIzLjMgMTEuNS0zNSAzNC41LTM1czM0LjUgMTEuNyAzNC41IDM1YzAgMjMtMTEuNSAzNC41LTM0LjUgMzQuNXMtMzQuNS0xMS41LTM0LjUtMzQuNXpNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmNFdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDcuNyA4QzEwMy42IDggMCAxMjQuOCAwIDI1NmMwIDEzNi4zIDExMS43IDI0OCAyNDcuNyAyNDhDMzc3LjkgNTA0IDQ5NiA0MDMuMSA0OTYgMjU2IDQ5NiAxMTcgMzg4LjQgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIzLjIgMy43LTQ1LjIgMTAuOS02Nmw2NS43IDI5LjFoLTQuN3YyOS41aDIzLjNjMCA2LjItLjQgMy4yLS40IDE5LjVoLTIyLjh2MjkuNWgyN2MxMS40IDY3IDY3LjIgMTAxLjMgMTI0LjYgMTAxLjMgMjYuNiAwIDUwLjYtNy45IDY0LjgtMTUuOGwtMTAtNDYuMWMtOC43IDQuNi0yOC4yIDEwLjgtNDcuMyAxMC44LTI4LjIgMC01OC4xLTEwLjktNjcuMy01MC4yaDkwLjNsMTI4LjMgNTYuOGMtMS41IDIuMS01Ni4yIDEwNC4zLTE3OC44IDEwNC4zem0tMTYuNy0xOTAuNmwtLjUtLjQuOS40aC0uNHptNzcuMi0xOS41aDMuN3YtMjkuNWgtNzAuM2wtMjguNi0xMi42YzIuNS01LjUgNS40LTEwLjUgOC44LTE0LjMgMTIuOS0xNS44IDMxLjEtMjIuNCA1MS4xLTIyLjQgMTguMyAwIDM1LjMgNS40IDQ2LjEgMTBsMTEuNi00Ny4zYy0xNS02LjYtMzctMTIuNC02Mi4zLTEyLjQtMzkgMC03Mi4yIDE1LjgtOTUuOSA0Mi4zLTUuMyA2LjEtOS44IDEyLjktMTMuOSAyMC4xbC04MS42LTM2LjFjNjQuNi05Ni44IDE1Ny43LTkzLjYgMTcwLjctOTMuNiAxMTMgMCAyMDMgOTAuMiAyMDMgMjAzLjQgMCAxOC43LTIuMSAzNi4zLTYuMyA1Mi45bC0xMzYuMS02MC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05jSnAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjcgOEMxMDMuNiA4IDAgMTI0LjggMCAyNTZjMCAxMzYuNCAxMTEuOCAyNDggMjQ3LjcgMjQ4QzM3Ny45IDUwNCA0OTYgNDAzLjIgNDk2IDI1NiA0OTYgMTE3LjIgMzg4LjUgOCAyNDcuNyA4em0uNiA0NTAuN2MtMTEyIDAtMjAzLjYtOTIuNS0yMDMuNi0yMDIuNyAwLTIxLjEgMy00MS4yIDktNjAuM2wxMjcgNTYuNWgtMjcuOXYzOC42aDU4LjFsNS43IDExLjh2MTguN2gtNjMuOFYzNjBoNjMuOHY1Nmg2MS43di01Nmg2NC4ydi0zNS43bDgxIDM2LjFjLTEuNSAyLjItNTcuMSA5OC4zLTE3NS4yIDk4LjN6bTg3LjYtMTM3LjNoLTU3LjZ2LTE4LjdsMi45LTUuNiA1NC43IDI0LjN6bTYuNS01MS40di0xNy44aC0zOC42bDYzLTExNkgzMDFsLTQzLjQgOTYtMjMtMTAuMi0zOS42LTg1LjdoLTY1LjhsMjcuMyA1MS04MS45LTM2LjVjMjcuOC00NC4xIDgyLjYtOTguMSAxNzMuNy05OC4xIDExMi44IDAgMjAzIDkwIDIwMyAyMDMuNCAwIDIxLTIuNyA0MC42LTcuOSA1OWwtMTAxLTQ1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zTmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODcuNCA4IDQ5NiAxMTUuOSA0OTYgMjU2YzAgMTQ3LjItMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuMSA1MDQgMCAzOTMuMiAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHpNNTUuOCAxODkuMWMtNy40IDIwLjQtMTEuMSA0Mi43LTExLjEgNjYuOSAwIDExMC45IDkyLjEgMjAyLjQgMjAzLjcgMjAyLjQgMTIyLjQgMCAxNzcuMi0xMDEuOCAxNzguNS0xMDQuMWwtOTMuNC00MS42Yy03LjcgMzcuMS00MS4yIDUzLTY4LjIgNTUuNHYzOC4xaC0yOC44VjM2OGMtMjcuNS0uMy01Mi42LTEwLjItNzUuMy0yOS43bDM0LjEtMzQuNWMzMS43IDI5LjQgODYuNCAzMS44IDg2LjQtMi4yIDAtNi4yLTIuMi0xMS4yLTYuNi0xNS4xLTE0LjItNi0xLjgtLjEtMjE5LjMtOTcuNHpNMjQ4LjQgNTIuM2MtMzguNCAwLTExMi40IDguNy0xNzAuNSA5M2w5NC44IDQyLjVjMTAtMzEuMyA0MC40LTQyLjkgNjMuOC00NC4zdi0zOC4xaDI4Ljh2MzguMWMyMi43IDEuMiA0My40IDguOSA2MiAyM0wyOTUgMTk5LjdjLTQyLjctMjkuOS04My41LTgtNzAgMTEuMSA1My40IDI0LjEgNDMuOCAxOS44IDkzIDQxLjZsMTI3LjEgNTYuN2M0LjEtMTcuNCA2LjItMzUuMSA2LjItNTMuMSAwLTU3LTE5LjgtMTA1LTU5LjMtMTQzLjktMzkuMy0zOS45LTg3LjItNTkuOC0xNDMuNi01OS44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc05kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem05NCAxNDQuM3Y0Mi41SDE2Mi4xVjE5N2gxODAuM3ptMCA3OS44djQyLjVIMTYyLjF2LTQyLjVoMTgwLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMxMDQuNyA4IDAgMTIzLjEgMCAyNTZjMCAxMzguNSAxMTMuNiAyNDggMjQ3LjYgMjQ4QzM3Ny41IDUwNCA0OTYgNDAzLjEgNDk2IDI1NiA0OTYgMTE4LjEgMzg5LjQgOCAyNDcuNiA4em0uOCA0NTAuOGMtMTEyLjUgMC0yMDMuNy05My0yMDMuNy0yMDIuOCAwLTEwNS40IDg1LjUtMjAzLjMgMjAzLjctMjAzLjMgMTEyLjYgMCAyMDIuOSA4OS41IDIwMi44IDIwMy4zIDAgMTIxLjctOTkuNiAyMDIuOC0yMDIuOCAyMDIuOHpNMzE2LjcgMTg2aC01My4ydjEzNy4yaDUzLjJjMjEuNCAwIDcwLTUuMSA3MC02OC42IDAtNjMuNC00OC42LTY4LjYtNzAtNjguNnptLjggMTA4LjVoLTE5Ljl2LTc5LjdsMTkuNC0uMWMzLjggMCAzNS0yLjEgMzUgMzkuOSAwIDI0LjYtMTAuNSAzOS45LTM0LjUgMzkuOXpNMjAzLjcgMTg2aC02OC4ydjEzNy4zaDM0LjZWMjc5aDI3YzU0LjEgMCA1Ny4xLTM3LjUgNTcuMS00Ni41IDAtMzEtMTYuOC00Ni41LTUwLjUtNDYuNXptLTQuOSA2Ny4zaC0yOS4ydi00MS42aDI4LjNjMzAuOSAwIDI4LjggNDEuNi45IDQxLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zUGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkuMSAwIDI1NmMwIDEzNyAxMTEgMjQ4IDI0OCAyNDhzMjQ4LTExMSAyNDgtMjQ4QzQ5NiAxMTkuMSAzODUgOCAyNDggOHptMCA0NDkuNWMtMTM5LjIgMC0yMzUuOC0xMzgtMTkwLjItMjY3LjlsNzguOCAzNS4xYy0yLjEgMTAuNS0zLjMgMjEuNS0zLjMgMzIuOSAwIDk5IDczLjkgMTI2LjkgMTIwLjQgMTI2LjkgMjIuOSAwIDUzLjUtNi43IDc5LjQtMjkuNUwyOTcgMzExLjFjLTUuNSA2LjMtMTcuNiAxNi43LTM2LjMgMTYuNy0zNy44IDAtNTMuNy0zOS45LTUzLjktNzEuOSAyMzAuNCAxMDIuNiAyMTYuNSA5Ni41IDIxNy45IDk2LjgtMzQuMyA2Mi40LTEwMC42IDEwNC44LTE3Ni43IDEwNC44em0xOTQuMi0xNTBsLTIyNC0xMDBjMTguOC0zNCA1NC45LTMwLjcgNzQuNy0xMWw0MC40LTQxLjZjLTI3LjEtMjMuMy01OC0yNy41LTc4LjEtMjcuNS00Ny40IDAtODAuOSAyMC41LTEwMC43IDUxLjZsLTc0LjktMzMuNGMzNi4xLTU0LjkgOTguMS05MS4yIDE2OC41LTkxLjIgMTExLjEgMCAyMDEuNSA5MC40IDIwMS41IDIwMS41IDAgMTgtMi40IDM1LjQtNi44IDUyLS4zLS4xLS40LS4yLS42LS40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1JlbWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0xNjEuNyAyMDcuN2w0LjkgMi4ydjcwYy03LjIgMy42LTYzLjQgMjcuNS02Ny4zIDI4LjgtNi41LTEuOC0xMTMuNy00Ni44LTEzNy4zLTU2LjJsLTY0LjIgMjYuNi02My4zLTI3LjV2LTYzLjhsNTkuMy0yNC44Yy0uNy0uNy0uNCA1LS40LTcwLjRsNjcuMy0yOS43TDM2MSAxNzguNXY2MS42bDQ5LjEgMjAuM3ptLTcwLjQgODEuNXYtNDMuOGgtLjR2LTEuOGwtMTEzLjgtNDYuNVYyOTVsMTEzLjggNDYuOXYtLjRsLjQuNHptNy41LTU3LjZsMzkuOS0xNi40LTM2LjgtMTUuNS0zOSAxNi40IDM1LjkgMTUuNXptNTIuMyAzOC4xdi00M0wzNTUuMiAyOTh2NDMuNGw0NC4zLTE5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zek0xMzcuNyAyMjFjMTMtODMuOSA4MC41LTk1LjcgMTA4LjktOTUuNyA5OS44IDAgMTI3LjUgODIuNSAxMjcuNSAxMzQuMiAwIDYzLjYtNDEgMTMyLjktMTI4LjkgMTMyLjktMzguOSAwLTk5LjEtMjAtMTA5LjQtOTdoNjIuNWMxLjUgMzAuMSAxOS42IDQ1LjIgNTQuNSA0NS4yIDIzLjMgMCA1OC0xOC4yIDU4LTgyLjggMC04Mi41LTQ5LjEtODAuNi01Ni43LTgwLjYtMzMuMSAwLTUxLjcgMTQuNi01NS44IDQzLjhoMTguMmwtNDkuMiA0OS4yLTQ5LTQ5LjJoMTkuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcmVhdGl2ZUNvbW1vbnNTYW1wbGluZ1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwNyAyMDUuNmMtNC43IDAtOSAyLjgtMTAuNyA3LjJsLTQgOS41LTExLTkyLjhjLTEuNy0xMy45LTIyLTEzLjQtMjMuMS40bC00LjMgNTEuNC01LjItNjguOGMtMS4xLTE0LjMtMjIuMS0xNC4yLTIzLjIgMGwtMy41IDQ0LjktNS45LTk0LjNjLS45LTE0LjUtMjIuMy0xNC40LTIzLjIgMGwtNS4xIDgzLjctNC4zLTY2LjNjLS45LTE0LjQtMjIuMi0xNC40LTIzLjIgMGwtNS4zIDgwLjItNC4xLTU3Yy0xLjEtMTQuMy0yMi0xNC4zLTIzLjItLjJsLTcuNyA4OS44LTEuOC0xMi4yYy0xLjctMTEuNC0xNy4xLTEzLjYtMjItMy4zbC0xMy4yIDI3LjdIODcuNXYyMy4yaDUxLjNjNC40IDAgOC40LTIuNSAxMC40LTYuNGwxMC43IDczLjFjMiAxMy41IDIxLjkgMTMgMjMuMS0uN2wzLjgtNDMuNiA1LjcgNzguM2MxLjEgMTQuNCAyMi4zIDE0LjIgMjMuMi0uMWw0LjYtNzAuNCA0LjggNzMuM2MuOSAxNC40IDIyLjMgMTQuNCAyMy4yLS4xbDQuOS04MC41IDQuNSA3MS44Yy45IDE0LjMgMjIuMSAxNC41IDIzLjIuMmw0LjYtNTguNiA0LjkgNjQuNGMxLjEgMTQuMyAyMiAxNC4yIDIzLjEuMWw2LjgtODMgMi43IDIyLjNjMS40IDExLjggMTcuNyAxNC4xIDIyLjMgMy4xbDE4LTQzLjRoNTAuNVYyNThsLTU4LjQuM3ptLTc4IDUuMmgtMjEuOXYyMS45YzAgNC4xLTMuMyA3LjUtNy41IDcuNS00LjEgMC03LjUtMy4zLTcuNS03LjV2LTIxLjloLTIxLjljLTQuMSAwLTcuNS0zLjMtNy41LTcuNSAwLTQuMSAzLjQtNy41IDcuNS03LjVoMjEuOXYtMjEuOWMwLTQuMSAzLjQtNy41IDcuNS03LjVzNy41IDMuMyA3LjUgNy41djIxLjloMjEuOWM0LjEgMCA3LjUgMy4zIDcuNSA3LjUgMCA0LjEtMy40IDcuNS03LjUgNy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1NhbXBsaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ny42IDhDMzg5LjQgOCA0OTYgMTE4LjEgNDk2IDI1NmMwIDE0Ny4xLTExOC41IDI0OC0yNDguNCAyNDhDMTEzLjYgNTA0IDAgMzk0LjUgMCAyNTYgMCAxMjMuMSAxMDQuNyA4IDI0Ny42IDh6bS44IDQ0LjdDMTMwLjIgNTIuNyA0NC43IDE1MC42IDQ0LjcgMjU2YzAgMTA5LjggOTEuMiAyMDIuOCAyMDMuNyAyMDIuOCAxMDMuMiAwIDIwMi44LTgxLjEgMjAyLjgtMjAyLjguMS0xMTMuOC05MC4yLTIwMy4zLTIwMi44LTIwMy4zem0zLjYgNTMuMmMyLjgtLjMgMTEuNSAxIDExLjUgMTEuNWw2LjYgMTA3LjIgNC45LTU5LjNjMC02IDQuNy0xMC42IDEwLjYtMTAuNiA1LjkgMCAxMC42IDQuNyAxMC42IDEwLjYgMCAyLjUtLjUtNS43IDUuNyA4MS41bDUuOC02NC4yYy4zLTIuOSAyLjktOS4zIDEwLjItOS4zIDMuOCAwIDkuOSAyLjMgMTAuNiA4LjlsMTEuNSA5Ni41IDUuMy0xMi44YzEuOC00LjQgNS4yLTYuNiAxMC4yLTYuNmg1OHYyMS4zaC01MC45bC0xOC4yIDQ0LjNjLTMuOSA5LjktMTkuNSA5LjEtMjAuOC0zLjFsLTQtMzEuOS03LjUgOTIuNmMtLjMgMy0zIDkuMy0xMC4yIDkuMy0zIDAtOS44LTIuMS0xMC42LTkuMyAwLTEuOS42IDUuOC02LjItNzcuOWwtNS4zIDcyLjJjLTEuMSA0LjgtNC44IDkuMy0xMC42IDkuMy0yLjkgMC05LjgtMi0xMC42LTkuMyAwLTEuOS41IDYuNy01LjgtODcuN2wtNS44IDk0LjhjMCA2LjMtMy42IDEyLjQtMTAuNiAxMi40LTUuMiAwLTEwLjYtNC4xLTEwLjYtMTJsLTUuOC04Ny43Yy01LjggOTIuNS01LjMgODQtNS4zIDg1LjktMS4xIDQuOC00LjggOS4zLTEwLjYgOS4zLTMgMC05LjgtMi4xLTEwLjYtOS4zIDAtLjctLjQtMS4xLS40LTIuNmwtNi4yLTg4LjZMMTgyIDM0OGMtLjcgNi41LTYuNyA5LjMtMTAuNiA5LjMtNS44IDAtOS42LTQuMS0xMC42LTguOUwxNDkuNyAyNzJjLTIgNC0zLjUgOC40LTExLjEgOC40SDg3LjJ2LTIxLjNIMTMybDEzLjctMjcuOWM0LjQtOS45IDE4LjItNy4yIDE5LjkgMi43bDMuMSAyMC40IDguNC05Ny45YzAtNiA0LjgtMTAuNiAxMC42LTEwLjYuNSAwIDEwLjYtLjIgMTAuNiAxMi40bDQuOSA2OS4xIDYuNi05Mi42YzAtMTAuMSA5LjUtMTAuNiAxMC4yLTEwLjYuNiAwIDEwLjYuNyAxMC42IDEwLjZsNS4zIDgwLjYgNi4yLTk3LjljLjEtMS4xLS42LTEwLjMgOS45LTExLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlYXRpdmVDb21tb25zU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bTEwMSAxMzIuNGM3LjggMCAxMy43IDYuMSAxMy43IDEzLjd2MTgyLjVjMCA3LjctNi4xIDEzLjctMTMuNyAxMy43SDIxNC4zYy03LjcgMC0xMy43LTYtMTMuNy0xMy43di01NGgtNTRjLTcuOCAwLTEzLjctNi0xMy43LTEzLjdWMTMxLjFjMC04LjIgNi42LTEyLjcgMTIuNC0xMy43aDEzNi40YzcuNyAwIDEzLjcgNiAxMy43IDEzLjd2NTRoNTR6TTE1OS45IDMwMC4zaDQwLjdWMTk4LjljMC03LjQgNS44LTEyLjYgMTItMTMuN2g1NS44di00MC4zSDE1OS45djE1NS40em0xNzYuMi04OC4xSDIyNy42djE1NS40aDEwOC41VjIxMi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9uc1plcm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ3LjYgOEMzODkuNCA4IDQ5NiAxMTguMSA0OTYgMjU2YzAgMTQ3LjEtMTE4LjUgMjQ4LTI0OC40IDI0OEMxMTMuNiA1MDQgMCAzOTQuNSAwIDI1NiAwIDEyMy4xIDEwNC43IDggMjQ3LjYgOHptLjggNDQuN0MxMzAuMiA1Mi43IDQ0LjcgMTUwLjYgNDQuNyAyNTZjMCAxMDkuOCA5MS4yIDIwMi44IDIwMy43IDIwMi44IDEwMy4yIDAgMjAyLjgtODEuMSAyMDIuOC0yMDIuOC4xLTExMy44LTkwLjItMjAzLjMtMjAyLjgtMjAzLjN6bS0uNCA2MC41Yy04MS45IDAtMTAyLjUgNzcuMy0xMDIuNSAxNDIuOCAwIDY1LjUgMjAuNiAxNDIuOCAxMDIuNSAxNDIuOFMzNTAuNSAzMjEuNSAzNTAuNSAyNTZjMC02NS41LTIwLjYtMTQyLjgtMTAyLjUtMTQyLjh6bTAgNTMuOWMzLjMgMCA2LjQuNSA5LjIgMS4yIDUuOSA1LjEgOC44IDEyLjEgMy4xIDIxLjlsLTU0LjUgMTAwLjJjLTEuNy0xMi43LTEuOS0yNS4xLTEuOS0zNC40IDAtMjguOCAyLTg4LjkgNDQuMS04OC45em00MC44IDQ2LjJjMi45IDE1LjQgMy4zIDMxLjQgMy4zIDQyLjcgMCAyOC45LTIgODguOS00NC4xIDg4LjktMTMuNSAwLTMyLjYtNy43LTIwLjEtMjYuNGw2MC45LTEwNS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyZWF0aXZlQ29tbW9ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuODMgMjE0Ljg3bC0zMy4yMiAxNy4yOGMtOS40My0xOS41OC0yNS4yNC0xOS45My0yNy40Ni0xOS45My0yMi4xMyAwLTMzLjIyIDE0LjYxLTMzLjIyIDQzLjg0IDAgMjMuNTcgOS4yMSA0My44NCAzMy4yMiA0My44NCAxNC40NyAwIDI0LjY1LTcuMDkgMzAuNTctMjEuMjZsMzAuNTUgMTUuNWMtNi4xNyAxMS41MS0yNS42OSAzOC45OC02NS4xIDM4Ljk4LTIyLjYgMC03My45Ni0xMC4zMi03My45Ni03Ny4wNSAwLTU4LjY5IDQzLTc3LjA2IDcyLjYzLTc3LjA2IDMwLjcyLS4wMSA1Mi43IDExLjk1IDY1Ljk5IDM1Ljg2em0xNDMuMDUgMGwtMzIuNzggMTcuMjhjLTkuNS0xOS43Ny0yNS43Mi0xOS45My0yNy45LTE5LjkzLTIyLjE0IDAtMzMuMjIgMTQuNjEtMzMuMjIgNDMuODQgMCAyMy41NSA5LjIzIDQzLjg0IDMzLjIyIDQzLjg0IDE0LjQ1IDAgMjQuNjUtNy4wOSAzMC41NC0yMS4yNmwzMSAxNS41Yy0yLjEgMy43NS0yMS4zOSAzOC45OC02NS4wOSAzOC45OC0yMi42OSAwLTczLjk2LTkuODctNzMuOTYtNzcuMDUgMC01OC42NyA0Mi45Ny03Ny4wNiA3Mi42My03Ny4wNiAzMC43MS0uMDEgNTIuNTggMTEuOTUgNjUuNTYgMzUuODZ6TTI0Ny41NiA4LjA1QzEwNC43NCA4LjA1IDAgMTIzLjExIDAgMjU2LjA1YzAgMTM4LjQ5IDExMy42IDI0OCAyNDcuNTYgMjQ4IDEyOS45MyAwIDI0OC40NC0xMDAuODcgMjQ4LjQ0LTI0OCAwLTEzNy44Ny0xMDYuNjItMjQ4LTI0OC40NC0yNDh6bS44NyA0NTAuODFjLTExMi41NCAwLTIwMy43LTkzLjA0LTIwMy43LTIwMi44MSAwLTEwNS40MiA4NS40My0yMDMuMjcgMjAzLjcyLTIwMy4yNyAxMTIuNTMgMCAyMDIuODIgODkuNDYgMjAyLjgyIDIwMy4yNi0uMDEgMTIxLjY5LTk5LjY4IDIwMi44Mi0yMDIuODQgMjAyLjgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNyaXRpY2FsUm9sZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUuODIgMGMuMjYuMTUgMjE2LjU3IDEyNC41MSAyMTcuMTIgMTI0LjcyIDMgMS4xOCAzLjcgMy40NiAzLjcgNi41NnEtLjExIDEyNS4xNyAwIDI1MC4zNmE1Ljg4IDUuODggMCAwIDEtMy4zOCA1Ljc4Yy0yMS4zNyAxMi0yMDcuODYgMTE4LjI5LTIxOC45MyAxMjQuNThoLTNDMTQyIDQ2Ni4zNCAzLjA4IDM4Ni41NiAyLjkzIDM4Ni40OGEzLjI5IDMuMjkgMCAwIDEtMS44OC0zLjI0YzAtLjg3IDAtMjI1Ljk0LS4wNS0yNTMuMWE1IDUgMCAwIDEgMi45My00LjkzQzI3LjE5IDExMi4xMSAyMTMuMiA2IDIyNC4wNyAwek0yMTUuNCAyMC40MmwtLjIyLS4xNlExMTguMDYgNzUuNTUgMjEgMTMwLjg3YzAgLjEyLjA4LjIzLjEzLjM1bDMwLjg2IDExLjY0Yy03LjcxIDYtOC4zMiA2LTEwLjY1IDUuMTMtLjEgMC0yNC4xNy05LjI4LTI2LjgtMTB2MjMwLjQzYy44OC0xLjQxIDY0LjA3LTExMC45MSA2NC4xMy0xMTEgMS42Mi0yLjgyIDMtMS45MiA5LjEyLTEuNTIgMS40LjA5IDEuNDguMjIuNzggMS40Mi00MS4xOSA3MS4zMy0zNi40IDYzLTY3LjQ4IDExNi45NC0uODEgMS40LS42MSAxLjEzIDEuMjUgMS4xM2gxODYuNWMxLjQ0IDAgMS42OS0uMjMgMS43LTEuNjR2LTguODhjMC0xLjM0IDIuMzYtLjgxLTE4LjM3LTEtNy40Ni0uMDctMTQuMTQtMy4yMi0yMS4zOC0xMi43LTcuMzgtOS42Ni0xNC42Mi0xOS40My0yMS44NS0yOS4yMS0yLjI4LTMuMDgtMy40NS0yLjM4LTE2Ljc2LTIuMzgtMS43NSAwLTEuNzggMC0xLjc2IDEuODIuMjkgMjYuMjEuMTUgMjUuMjcgMSAzMi42Ni41MiA0LjM3IDIuMTYgNC4yIDkuNjkgNC44MSAzLjE0LjI2IDMuODggNC4wOC41MiA0LjkyLTEuNTcuMzktMzEuNi41MS0zMy42Ny0uMWEyLjQyIDIuNDIgMCAwIDEgLjMtNC43M2MzLjI5LS43NiA2LjE2LjgxIDYuNjYtNC40NCAxLjMtMTMuNjYgMS4xNy05IDEuMS03OS40MiAwLTEwLjgyLS4zNS0xMi41OC01LjM2LTEzLjU1LTEuMjItLjI0LTMuNTQtLjE2LTQuNjktLjU1LTIuODgtMS0yLTQuODQgMS43Ny00Ljg1IDMzLjY3IDAgNDYuMDgtMS4wNyA1Ni4wNiA0Ljg2IDcuNzQgNC42MSAxMiAxMS40OCAxMi41MSAyMC40Ljg4IDE0LjU5LTYuNTEgMjIuMzUtMTUgMzIuNTlhMS40NiAxLjQ2IDAgMCAwIDAgMi4yMmMyLjYgMy4yNSA1IDYuNjMgNy43MSA5LjgzIDI3LjU2IDMzLjIzIDI0LjExIDMwLjU0IDQxLjI4IDMzLjA2Ljg5LjEzIDEtLjQyIDEtMS4xNXYtMTFjMC0xIC4zMi0xLjQzIDEuNDEtMS4yNmE3Mi4zNyA3Mi4zNyAwIDAgMCAyMy41OC0uM2MxLjA4LS4xNSAxLjUuMiAxLjQ4IDEuMzMgMCAuMTEuODggMjYuNjkuODcgMjYuOC0uMDUgMS41Mi42NyAxLjYyIDEuODkgMS42MmgxODYuNzFRMzg2LjUxIDMwNC42IDM0NiAyMzQuMzNjMi4yNi0uNjYtLjQgMCA2LjY5LTEuMzkgMi0uMzkgMi4wNS0uNDEgMy4xMSAxLjQ0IDcuMzEgMTIuNjQgNzcuMzEgMTM0IDc3LjM3IDEzNC4wNlYxMzhjLTEuNzIuNS0xMDMuMyAzOC43Mi0xMDUuNzYgMzkuNjgtMS4wOC40Mi0xLjU1LjItMS45MS0uODgtLjYzLTEuOS0xLjM0LTMuNzYtMi4wOS01LjYyLS4zMi0uNzktLjA5LTEuMTMuNjUtMS4zOS4xIDAgOTUuNTMtMzUuODUgMTAzLTM4Ljc3LTY1LjQyLTM3LjU3LTEzMC41Ni03NS0xOTYtMTEyLjZsODYuODIgMTUwLjM5LS4yOC4zM2MtOS41Ny0uOS0xMC40Ni0xLjYtMTEuOC0zLjk0LTEtMS42OS03My41LTEyNy43MS04Mi0xNDIuMTYtOS4xIDE0LjY3LTgzLjU2IDE0Ni4yMS04NS4zNyAxNDYuMzItMi45My4xNy01Ljg4LjA4LTkuMjUuMDhxNDMuMjUtNzQuNzQgODYuMTgtMTQ5em01MS45MyAxMjkuOTJhMzcuNjggMzcuNjggMCAwIDAgNS41NC0uODVjMS42OS0uMyAyLjUzLjIgMi42IDEuOTIgMCAuMTEuMDcgMTkuMDYtLjg2IDIwLjQ1cy0xLjg4IDEuMjItMi42LS4xOWMtNS05LjY5IDYuMjItOS42Ni0zOS4xMi0xMi0uNyAwLTEgLjIzLTEgLjkzIDAgLjEzIDMuNzIgMTIyIDMuNzMgMTIyLjExIDAgLjg5LjUyIDEuMiAxLjIxIDEuNTFhODMuOTIgODMuOTIgMCAwIDEgOC43IDQuMDVjNy4zMSA0LjMzIDExLjM4IDEwLjg0IDEyLjQxIDE5LjMxIDEuNDQgMTEuOC0yLjc3IDM1Ljc3LTMyLjIxIDM3LjE0LTIuNzUuMTMtMjguMjYgMS4wOC0zNC4xNC0yMy4yNS00LjY2LTE5LjI2IDguMjYtMzIuNyAxOS44OS0zNi40YTIuNDUgMi40NSAwIDAgMCAyLTIuNjZjLjEtNS42MyAzLTEwNy4xIDMuNzEtMTIxLjM1LjA1LTEuMDgtLjYyLTEuMTYtMS4zNS0xLjE1LTMyLjM1LjUyLTM2Ljc1LS4zNC00MC4yMiA4LjUyLTIuNDIgNi4xOC00LjE0IDEuMzItMy45NS4yM3ExLjU5LTkgMy4zMS0xOGMuNC0yLjExIDEuNDMtMi42MSAzLjQzLTEuODYgNS41OSAyLjExIDYuNzIgMS43IDM3LjI1IDEuOTIgMS43MyAwIDEuNzgtLjA4IDEuODItMS44NS42OC0yNy40OS41OC0yMi41OSAxLTI5LjU1YTIuNjkgMi42OSAwIDAgMC0xLjYzLTIuOGMtNS42LTIuOTEtOC43NS03LjU1LTguOS0xMy44Ny0uMzUtMTQuODEgMTcuNzItMjEuNjcgMjcuMzgtMTEuNTEgNi44NCA3LjE5IDUuOCAxOC45MS0yLjQ1IDI0LjE1YTQuMzUgNC4zNSAwIDAgMC0yLjIyIDQuMzRjMCAuNTktLjExLTQuMzEgMSAzMC4wNSAwIC45LjQzIDEuMTIgMS4yNCAxLjExLjEgMCAyMy0uMDkgMzQuNDctLjM3ek02OC4yNyAxNDEuN2MxOS44NC00LjUxIDMyLjY4LS41NiA1Mi40OSAxLjY5IDIuNzYuMzEgMy43NCAxLjIyIDMuNjIgNC0uMjEgNS0xLjE2IDIyLjMzLTEuMjQgMjMuMTVhMi42NSAyLjY1IDAgMCAxLTEuNjMgMi4zNGMtNC4wNiAxLjctMy42MS00LjQ1LTQtNy4yOS0zLjEzLTIyLjQzLTczLjg3LTMyLjctNzQuNjMgMjUuNC0uMzEgMjMuOTIgMTcgNTMuNjMgNTQuMDggNTAuODggMjcuMjQtMiAxOS0yMC4xOSAyNC44NC0yMC40N2EyLjcyIDIuNzIgMCAwIDEgMyAzLjM2Yy0xLjgzIDEwLjg1LTMuNDIgMTguOTUtMy40NSAxOS4xNS0xLjU0IDkuMTctODYuNyAyMi4wOS05My4zNS00Mi4wNi0yLjcxLTI1Ljg1IDEwLjQ0LTUzLjM3IDQwLjI3LTYwLjE1em04MCA4Ny42N2gtMTkuNDlhMi41NyAyLjU3IDAgMCAxLTIuNjYtMS43OWMyLjM4LTMuNzUgNS44OS45MiA1Ljg2LTYuMTQtLjA4LTI1Ljc1LjIxLTM4IC4yMy00MC4xIDAtMy40Mi0uNTMtNC42NS0zLjMyLTQuOTQtNy0uNzItMy4xMS0zLjM3LTEuMTEtMy4zOCAxMS44NC0uMSAyMi42Mi0uMTggMzAuMDUuNzIgOC43NyAxLjA3IDE2LjcxIDEyLjYzIDcuOTMgMjIuNjItMiAyLjI1LTQgNC40Mi02LjE0IDYuNzMuOTUgMS4xNSA2LjkgOC44MiAxNy4yOCAxOS42OCAyLjY2IDIuNzggNi4xNSAzLjUxIDkuODggMy4xM2EyLjIxIDIuMjEgMCAwIDAgMi4yMy0yLjEyYy4zLTMuNDIuMjYgNC43My40NS00MC41OCAwLTUuNjUtLjM0LTYuNTgtMy4yMy02LjgzLTMuOTUtLjM1LTQtMi4yNi0uNjktMy4zN2wxOS4wOS0uMDljLjMyIDAgNC40OS41MyAxIDMuMzggMCAuMDUtLjE2IDAtLjI0IDAtMy42MS4yNi0zLjk0IDEtNCA0LjYyLS4yNyA0My45My4wNyA0MC4yMy40MSA0Mi44Mi4xMS44NC4yNyAyLjIzIDUuMSAyLjE0IDIuNDkgMCAzLjg2IDMuMzcgMCAzLjQtMTAuMzcuMDgtMjAuNzQgMC0zMS4xMS4wNy0xMC42NyAwLTEzLjQ3LTYuMi0yNC4yMS0yMC44Mi0xLjYtMi4xOC04LjMxLTIuMzYtOC4yLS4zNy44OCAxNi40NyAwIDE3Ljc4IDQgMTcuNjcgNC43NS0uMSA0LjczIDMuNTcuODMgMy41NXptMjc1LTEwLjE1Yy0xLjIxIDcuMTMuMTcgMTAuMzgtNS4zIDEwLjM0LTYxLjU1LS40Mi00Ny44Mi0uMjItNTAuNzItLjMxYTE4LjQgMTguNCAwIDAgMS0zLjYzLS43M2MtMi41My0uNiAxLjQ4LTEuMjMtLjM4LTUuNi0xLjQzLTMuMzctMi43OC02Ljc4LTQuMTEtMTAuMTlhMS45NCAxLjk0IDAgMCAwLTItMS40NCAxMzggMTM4IDAgMCAwLTE0LjU4LjA3IDIuMjMgMi4yMyAwIDAgMC0xLjYyIDEuMDZjLTEuNTggMy42Mi0zLjA3IDcuMjktNC41MSAxMS0xLjI3IDMuMjMgNy44NiAxLjMyIDEyLjE5IDIuMTYgMyAuNTcgNC41MyAzLjcyLjY2IDMuNzNIMzIyLjljLTIuOTIgMC0zLjA5LTMuMTUtLjc0LTMuMjFhNi4zIDYuMyAwIDAgMCA1LjkyLTMuNDdjMS41LTMgMi44LTYgNC4xMS05LjA5IDE4LjE4LTQyLjE0IDE3LjA2LTQwLjE3IDE4LjQyLTQxLjYxYTEuODMgMS44MyAwIDAgMSAzIDBjMi45MyAzLjM0IDE4LjQgNDQuNzEgMjMuNjIgNTEuOTIgMiAyLjcgNS43NCAyIDYuMzYgMiAzLjYxLjEzIDQtMS4xMSA0LjEzLTQuMjkuMDktMS44Ny4wOCAxLjE3LjA3LTQxLjI0IDAtNC40Ni0yLjM2LTMuNzQtNS41NS00LjI3LS4yNiAwLTIuNTYtLjYzLS4wOC0zLjA2LjIxLS4yLS44OS0uMjQgMjEuNy0uMTUgMi4zMiAwIDUuMzIgMi43NS0xLjIxIDMuNDVhMi41NiAyLjU2IDAgMCAwLTIuNjYgMi44M2MtLjA3IDEuNjMtLjE5IDM4Ljg5LjI5IDQxLjIxYTMuMDYgMy4wNiAwIDAgMCAzLjIzIDIuNDNjMTMuMjUuNDMgMTQuOTIuNDQgMTYtMy40MSAxLjY3LTUuNzggNC4xMy0yLjUyIDMuNzMtLjE5em0tMTA0LjcyIDY0LjM3Yy00LjI0IDAtNC40Mi0zLjM5LS42MS0zLjQxIDM1LjkxLS4xNiAyOC4xMS4zOCAzNy4xOS0uNjUgMS42OC0uMTkgMi4zOC4yNCAyLjI1IDEuODktLjI2IDMuMzktLjY0IDYuNzgtMSAxMC4xNi0uMjUgMi4xNi0zLjIgMi42MS0zLjQtLjE1LS4zOC01LjMxLTIuMTUtNC40NS0xNS42My01LjA4LTEuNTgtLjA3LTEuNjQgMC0xLjY0IDEuNTJWMzA0YzAgMS42NSAwIDEuNiAxLjYyIDEuNDcgMy4xMi0uMjUgMTAuMzEuMzQgMTUuNjktMS41Mi40Ny0uMTYgMy4zLTEuNzkgMy4wNyAxLjc2IDAgLjIxLS43NiAxMC4zNS0xLjE4IDExLjM5LS41MyAxLjI5LTEuODggMS41MS0yLjU4LjMyLTEuMTctMiAwLTUuMDgtMy43MS01LjMtMTUuNDItLjktMTIuOTEtMi41NS0xMi45MSA2IDAgMTIuMjUtLjc2IDE2LjExIDMuODkgMTYuMjQgMTYuNjQuNDggMTQuNCAwIDE2LjQzLTUuNzEuODQtMi4zNyAzLjUtMS43NyAzLjE4LjU4LS40NCAzLjIxLS44NSA2LjQzLTEuMjMgOS42NCAwIC4zNi0uMTYgMi40LTQuNjYgMi4zOS0zNy4xNi0uMDgtMzQuNTQtLjE5LTM1LjIxLS4zMS0yLjcyLS41MS0yLjItMyAuMjItMy40NSAxLjEtLjE5IDQgLjU0IDQuMTYtMi41NiAyLjQ0LTU2LjIyLS4wNy01MS4zNC0zLjkxLTUxLjMzem0tLjQxLTEwOS41MmMyLjQ2LjYxIDMuMTMgMS43NiAyLjk1IDQuNjUtLjMzIDUuMy0uMzQgOS0uNTUgOS42OS0uNjYgMi4yMy0zLjE1IDIuMTItMy4zNC0uMjctLjM4LTQuODEtMy4wNS03LjgyLTcuNTctOS4xNS0yNi4yOC03LjczLTMyLjgxIDE1LjQ2LTI3LjE3IDMwLjIyIDUuODggMTUuNDEgMjIgMTUuOTIgMjguODYgMTMuNzggNS45Mi0xLjg1IDUuODgtNi41IDYuOTEtNy41OCAxLjIzLTEuMyAyLjI1LTEuODQgMy4xMiAxLjEgMCAuMS41NyAxMS44OS02IDEyLjc1LTEuNi4yMS0xOS4zOCAzLjY5LTMyLjY4LTMuMzktMjEtMTEuMTktMTYuNzQtMzUuNDctNi44OC00NS4zMyAxNC0xNC4wNiAzOS45MS03LjA2IDQyLjMyLTYuNDd6TTI4OS44IDI4MC4xNGMzLjI4IDAgMy42NiAzIC4xNiAzLjQzLTIuNjEuMzItNS0uNDItNSA1LjQ2IDAgMi0uMTkgMjkuMDUuNCA0MS40NS4xMSAyLjI5IDEuMTUgMy41MiAzLjQ0IDMuNjUgMjIgMS4yMSAxNC45NS0xLjY1IDE4Ljc5LTYuMzQgMS44My0yLjI0IDIuNzYuODQgMi43NiAxLjA4LjM1IDEzLjYyLTQgMTIuMzktNS4xOSAxMi40bC0zOC4xNi0uMTljLTEuOTMtLjIzLTIuMDYtMy0uNDItMy4zOCAyLS40OCA0Ljk0LjQgNS4xMy0yLjggMS0xNS44Ny41Ny00NC42NS4zNC00Ny44MS0uMjctMy43Ny0yLjgtMy4yNy01LjY4LTMuNzEtMi40Ny0uMzgtMi0zLjIyLjM0LTMuMjIgMS40NS0uMDIgMTcuOTctLjAzIDIzLjA5LS4wMnptLTMxLjYzLTU3Ljc5Yy4wNyA0LjA4IDIuODYgMy40NiA2IDMuNTggMi42MS4xIDIuNTMgMy40MS0uMDcgMy40My02LjQ4IDAtMTMuNyAwLTIxLjYxLS4wNi0zLjg0IDAtMy4zOC0zLjM1IDAtMy4zNyA0LjQ5IDAgMy4yNCAxLjYxIDMuNDEtNDUuNTQgMC01LjA4LTMuMjctMy41NC00LjcyLTQuMjMtMi41OC0xLjIzLTEuMzYtMy4wOS40MS0zLjE1IDEuMjkgMCAyMC4xOS0uNDEgMjEuMTcuMjFzMS44NyAxLjY1LS40MiAyLjg2Yy0xIC41Mi0zLjg2LS4yOC00LjE1IDIuNDcgMCAuMjEtLjgyIDEuNjMtLjA3IDQzLjh6bS0zNi45MSAyNzQuMjdhMi45MyAyLjkzIDAgMCAwIDMuMjYgMGMxNy05Ljc5IDE4Mi0xMDMuNTcgMTk3LjQyLTExMi41MS0uMTQtLjQzIDExLjI2LS4xOC0xODEuNTItLjI3LTEuMjIgMC0xLjU3LjM3LTEuNTMgMS41NiAwIC4xIDEuMjUgNDQuNTEgMS4yMiA1MC4zOGEyOC4zMyAyOC4zMyAwIDAgMS0xLjM2IDcuNzFjLS41NSAxLjgzLjM4LS41LTEzLjUgMzIuMjMtLjczIDEuNzItMSAyLjIxLTItLjA4LTQuMTktMTAuMzQtOC4yOC0yMC43Mi0xMi41Ny0zMWEyMy42IDIzLjYgMCAwIDEtMi0xMC43OWMuMTYtMi40Ni44LTE2LjEyIDEuNTEtNDggMC0xLjk1IDAtMi0yLTJoLTE4M2MyLjU4IDEuNjMgMTc4LjMyIDEwMi41NyAxOTYgMTEyLjc2em0tOTAuOS0xODguNzVjMCAyLjQuMzYgMi43OSAyLjc2IDMgMTEuNTQgMS4xNyAyMSAzLjc0IDI1LjY0LTcuMzIgNi0xNC40NiAyLjY2LTM0LjQxLTEyLjQ4LTM4Ljg0LTItLjU5LTE2LTIuNzYtMTUuOTQgMS41MS4wNSA4LjA0LjAxIDExLjYxLjAyIDQxLjY1em0xMDUuNzUtMTUuMDVjMCAyLjEzIDEuMDcgMzguNjggMS4wOSAzOS4xMy4zNCA5Ljk0LTI1LjU4IDUuNzctMjUuMjMtMi41OS4wOC0yIDEuMzctMzcuNDIgMS4xLTM5LjQzLTE0LjEgNy40NC0xNC40MiA0MC4yMSA2LjQ0IDQ4LjhhMTcuOSAxNy45IDAgMCAwIDIyLjM5LTcuMDdjNC45MS03Ljc2IDYuODQtMjkuNDctNS40My0zOWEyLjUzIDIuNTMgMCAwIDEtLjM2LjEyem0tMTIuMjgtMTk4Yy05LjgzIDAtOS43MyAxNC43NS0uMDcgMTQuODdzMTAuMS0xNC44OC4wNy0xNC45MXptLTgwLjE1IDEwMy44M2MwIDEuOC40MSAyLjQgMi4xNyAyLjU4IDEzLjYyIDEuMzkgMTIuNTEtMTEgMTIuMTYtMTMuMzYtMS42OS0xMS4yMi0xNC4zOC0xMC4yLTE0LjM1LTcuODEuMDUgNC41LS4wMyAxMy42OC4wMiAxOC41OXptMjEyLjMyIDYuNGwtNi4xLTE1Ljg0Yy0yLjE2IDUuNDgtNC4xNiAxMC41Ny02LjIzIDE1Ljg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNzczNBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MiA0ODBsMTU3LjEtNTIuMkwzODQgMzJIMHptMzEzLjEgODBsLTQuOCA0Ny4zTDE5MyAyMDguNmwtLjMuMWgxMTEuNWwtMTIuOCAxNDYuNi05OC4yIDI4LjctOTguOC0yOS4yLTYuNC03My45aDQ4LjlsMy4yIDM4LjMgNTIuNiAxMy4zIDU0LjctMTUuNCAzLjctNjEuNi0xNjYuMy0uNXYtLjFsLS4yLjEtMy42LTQ2LjNMMTkzLjEgMTYybDYuNS0yLjdINzYuN0w3MC45IDExMmgyNDIuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDc3MzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAzMmwtNjQgMzY4LTIyMy4zIDgwTDAgNDAwbDE5LjYtOTQuOGg4MmwtOCA0MC42TDIxMCAzOTAuMmwxMzQuMS00NC40IDE4LjgtOTcuMUgyOS41bDE2LTgyaDMzMy43bDEwLjUtNTIuN0g1Ni4zbDE2LjMtODJINDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dHRsZWZpc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ0IDMwNS41Yy0xNy41IDMxLjYtNTcuNCA1NC41LTk2IDU0LjUtNTYuNiAwLTEwNC00Ny40LTEwNC0xMDRzNDcuNC0xMDQgMTA0LTEwNGMzOC42IDAgNzguNSAyMi45IDk2IDU0LjUgMTMuNy01MC45IDQxLjctOTMuMyA4Ny0xMTcuOEMzODUuNyAzOS4xIDMyMC41IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzcyLjUgMCAxMzcuNy0zMS4xIDE4My04MC43LTQ1LjMtMjQuNS03My4zLTY2LjktODctMTE3Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZERCZXlvbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjggMjQxLjVjMTMuOCAwIDIxLTEwLjEgMjQuOC0xNy45LTEtMS4xLTUtNC4yLTcuNC02LjYtMi40IDQuMy04LjIgMTAuNy0xMy45IDEwLjctMTAuMiAwLTE1LjQtMTQuNy0zLjItMjYuNi0uNS0uMi00LjMtMS44LTggMi40IDAtMyAxLTUuMSAyLjEtNi42LTMuNSAxLjMtOS44IDUuNi0xMS40IDcuOS4yLTUuOCAxLjYtNy41LjYtOWwtLjItLjJzLTguNSA1LjYtOS4zIDE0LjdjMCAwIDEuMS0xLjYgMi4xLTEuOS42LS4zIDEuMyAwIC42IDEuOS0uMi42LTUuOCAxNS43IDUuMSAyNi0uNi0xLjYtMS45LTcuNiAyLjQtMS45LS4zLjEgNS44IDcuMSAxNS43IDcuMXptNTIuNC0yMS4xYzAtNC00LjktNC40LTUuNi00LjUgMiAzLjkuOSA3LjUuMiA5IDIuNS0uNCA1LjQtMS42IDUuNC00LjV6bTEwLjMgNS4yYzAtNi40LTYuMi0xMS40LTEzLjUtMTAuNyA4IDEuMyA1LjYgMTMuOC01IDExLjQgMy43LTIuNiAzLjItOS45LTEuMy0xMi41IDEuNCA0LjItMyA4LjItNy40IDQuNi0yLjQtMS45LTgtNi42LTEwLjYtOC42LTIuNC0yLjEtNS41LTEtNi42LTEuOC0xLjMtMS4xLS41LTMuOC0yLjItNS0xLjYtLjgtMy0uMy00LjgtMS0xLjYtLjYtMi43LTEuOS0yLjYtMy41LTIuNSA0LjQgMy40IDYuMyA0LjUgOC41IDEgMS45LS44IDQuOCA0IDguNSAxNC44IDExLjYgOS4xIDggMTAuNCAxOC4xLjYgNC4zIDQuMiA2LjcgNi40IDcuNC0yLjEtMS45LTIuOS02LjQgMC05LjMgMCAxMy45IDE5LjIgMTMuMyAyMy4xIDYuNC0yLjQgMS4xLTctLjItOS0xLjkgNy43IDEgMTQuMi00LjEgMTQuNi0xMC42em0tMzkuNC0xOC40YzIgLjggMS42LjcgNi40IDQuNSAxMC4yLTI0LjUgMjEuNy0xNS43IDIyLTE1LjUgMi4yLTEuOSA5LjgtMy44IDEzLjgtMi43LTIuNC0yLjctNy41LTYuMi0xMy4zLTYuMi00LjcgMC03LjQgMi4yLTggMS4zLS44LTEuNCAzLjItMy40IDMuMi0zLjQtNS40LjItOS42IDYuNy0xMS4yIDUuOS0xLjEtLjUgMS40LTMuNyAxLjQtMy43LTUuMSAyLjktOS4zIDkuMS0xMC4yIDEzIDQuNi01LjggMTMuOC05LjggMTkuNy05LTEwLjUuNS0xOS41IDkuNy0yMy44IDE1Ljh6bTI0Mi41IDUxLjljLTIwLjcgMC00MCAxLjMtNTAuMyAyLjFsNy40IDguMnY3Ny4ybC03LjQgOC4yYzEwLjQuOCAzMC45IDIuMSA1MS42IDIuMSA0Mi4xIDAgNTkuMS0yMC43IDU5LjEtNDguOSAwLTI5LjMtMjMuMi00OC45LTYwLjQtNDguOXptLTE1LjEgNzUuNnYtNTMuM2MzMC4xLTMuMyA0Ni44IDMuOCA0Ni44IDI2LjMgMCAyNS42LTIxLjQgMzAuMi00Ni44IDI3ek0zMDEuNiAxODFjLTEtMy40LS4yLTYuOSAxLjEtOS40IDEgMyAyLjYgNi40IDcuNSA5LS41LTIuNC0uMi01LjYuNS04LTEuNC01LjQgMi4xLTkuOSA2LjQtOS45IDYuOSAwIDguNSA4LjggNC43IDE0LjQgMi4xIDMuMiA1LjUgNS42IDcuNyA3LjggMy4yLTMuNyA1LjUtOS41IDUuNS0xMy44IDAtOC4yLTUuNS0xNS45LTE2LjctMTYuNS0yMC0uOS0yMC4yIDE2LjYtMjAgMTguOS41IDUuMiAzLjQgNy44IDMuMyA3LjV6bS0uNCA2Yy0uNSAxLjgtNyAzLjctMTAuMiA2LjkgNC44LTEgNy0uMiA3LjggMS44LjUgMS40LS4yIDMuNC0uNSA1LjYgMS42LTEuOCA3LTUuNSAxMS02LjItMS0uMy0zLjQtLjgtNC4zLS44IDIuOS0zLjQgOS4zLTQuNSAxMi44LTMuNy0yLjItLjItNi43IDEuMS04LjUgMi42IDEuNi4zIDMgLjYgNC4zIDEuMS0yLjEuOC00LjggMy40LTUuOCA2LjEgNy01IDEzLjEgNS4yIDcgOC4yLjguMiAyLjcgMCAzLjUtLjUtLjMgMS4xLTEuOSAzLTMgMy40IDIuOSAwIDctMS45IDguMi00LjYgMCAwLTEuOC42LTIuNi0uMnMuMy00LjMuMy00LjNjLTIuMyAyLjktMy40LTEuMy0xLjMtNC4yLTEtLjMtMy41LS42LTQuNi0uNSAzLjItMS4xIDEwLjQtMS44IDExLjItLjMuNiAxLjEtMSAzLjQtMSAzLjQgNC0uNSA4LjMgMS4xIDYuNyA1LjEgMi45LTEuNCA1LjUtNS45IDQuOC0xMC40LS4zIDEtMS42IDIuNC0yLjkgMi43LjItMS40LTEtMi4yLTEuOS0yLjYgMS43LTkuNi0xNC42LTE0LjItMTQuMS0yMy45LTEgMS4zLTEuOCA1LS44IDcuMSAyLjcgMy4yIDguNyA2LjcgMTAuMSAxMi4yLTIuNi02LjQtMTUuMS0xMS40LTE0LjYtMjAuMi0xLjYgMS42LTIuNiA3LjgtMS4zIDExIDIuNCAxLjQgNC41IDMuOCA0LjggNi4xLTIuMi01LjEtMTEuNC02LjEtMTMuOS0xMi4yLS42IDIuMi0uMyA1IDEgNi43IDAgMC0yLjItLjgtNy0uNiAxLjcuNiA1LjEgMy41IDQuOCA1LjJ6bTI1LjkgNy40Yy0yLjcgMC0zLjUtMi4xLTQuMi00LjMgMy4zIDEuMyA0LjIgNC4zIDQuMiA0LjN6bTM4LjkgMy43bC0xLS42Yy0xLjEtMS0yLjktMS40LTQuNy0xLjQtMi45IDAtNS44IDEuMy03LjUgMy40LS44LjgtMS40IDEuOC0yLjEgMi42djE1LjdjMy41IDIuNiA3LjEtMi45IDMtNy4yIDEuNS4zIDQuNiAyLjcgNS4xIDMuMiAwIDAgMi42LS41IDUtLjUgMi4xIDAgMy45LjMgNS42IDEuMVYxOTZjLTEuMS41LTIuMiAxLTIuNyAxLjR6TTc5LjkgMzA1LjljMTcuMi00LjYgMTYuMi0xOCAxNi4yLTE5LjkgMC0yMC42LTI0LjEtMjUtMzctMjVIM2w4LjMgOC42djI5LjVIMGwxMS40IDE0LjZWMzQ2TDMgMzU0LjZjNjEuNyAwIDczLjggMS41IDg2LjQtNS45IDYuNy00IDkuOS05LjggOS45LTE3LjYgMC01LjEgMi42LTE4LjgtMTkuNC0yNS4yem0tNDEuMy0yNy41YzIwIDAgMjkuNi0uOCAyOS42IDkuMXYzYzAgMTIuMS0xOSA4LjgtMjkuNiA4Ljh6bTAgNTkuMlYzMTVjMTIuMiAwIDMyLjctMi4zIDMyLjcgOC44djQuNWguMmMwIDExLjItMTIuNSA5LjMtMzIuOSA5LjN6bTEwMS4yLTE5LjNsMjMuMS4ydi0uMmwxNC4xLTIxLjJoLTM3LjJ2LTE0LjloNTIuNGwtMTQuMS0yMXYtLjJsLTczLjUuMiA3LjQgOC4ydjc3LjFsLTcuNCA4LjJoODEuMmwxNC4xLTIxLjItNjAuMS4yem0yMTQuNy02MC4xYy03My45IDAtNzcuNSA5OS4zLS4zIDk5LjMgNzcuOSAwIDc0LjEtOTkuMy4zLTk5LjN6bS0uMyA3Ny41Yy0zNy40IDAtMzYuOS01NS4zLjItNTUuMyAzNi44LjEgMzguOCA1NS4zLS4yIDU1LjN6bS05MS4zLTguM2w0NC4xLTY2LjJoLTQxLjdsNi4xIDcuMi0yMC41IDM3LjJoLS4zbC0yMS0zNy4yIDYuNC03LjJoLTQ0LjlsNDQuMSA2NS44LjIgMTkuNC03LjcgOC4yaDQyLjZsLTcuMi04LjJ6bS0yOC40LTE1MS4zYzEuNiAxLjMgMi45IDIuNCAyLjkgNi42djM4LjhjMCA0LjItLjggNS4zLTIuNyA2LjQtLjEuMS03LjUgNC41LTcuOSA0LjZoMzUuMWMxMCAwIDE3LjQtMS41IDI2LTguNi0uNi01IC4yLTkuNS44LTEyIDAtLjItMS44IDEuNC0yLjcgMy41IDAtNS43IDEuNi0xNS40IDkuNi0yMC41LS4xIDAtMy43LS44LTkgMS4xIDItMy4xIDEwLTcuOSAxMC40LTcuOS04LjItMjYtMzgtMjIuOS0zMi4yLTIyLjktMzAuOSAwLTMyLjYuMy0zOS45LTQgLjEuOC41IDguMiA5LjYgMTQuOXptMjEuNSA1LjVjNC42IDAgMjMuMS0zLjMgMjMuMSAxNy4zIDAgMjAuNy0xOC40IDE3LjMtMjMuMSAxNy4zem0yMjguOSA3OS42bDcgOC4zVjMxMmgtLjNjLTUuNC0xNC40LTQyLjMtNDEuNS00NS4yLTUwLjloLTMxLjZsNy40IDguNXY3Ni45bC03LjIgOC4zaDM5bC03LjQtOC4ydi00Ny40aC4zYzMuNyAxMC42IDQ0LjUgNDIuOSA0OC41IDU1LjZoMjEuM3YtODUuMmw3LjQtOC4zem0tMTA2LjctOTYuMWMtMzIuMiAwLTMyLjguMi0zOS45LTQgLjEuNy41IDguMyA5LjYgMTQuOSAzLjEgMiAyLjkgNC4zIDIuOSA5LjUgMS44LTEuMSAzLjgtMi4yIDYuMS0zLTEuMSAxLjEtMi43IDIuNy0zLjUgNC41IDEtMS4xIDcuNS01LjEgMTQuNi0zLjUtMS42LjMtNCAxLjEtNi4xIDIuOS4xIDAgMi4xLTEuMSA3LjUtLjN2LTQuM2M0LjcgMCAyMy4xLTMuNCAyMy4xIDE3LjMgMCAyMC41LTE4LjUgMTcuMy0xOS43IDE3LjMgNS43IDQuNCA1LjggMTIgMi4yIDE2LjNoLjNjMzMuNCAwIDM2LjctMjcuMyAzNi43LTM0IDAtMy44LTEuMS0zMi0zMy44LTMzLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhREFuZEQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODIuNSA5OC45Yy0uNi0xNy4yIDItMzMuOCAxMi43LTQ4LjIuMyA3LjQgMS4yIDE0LjUgNC4yIDIxLjYgNS45LTI3LjUgMTkuNy00OS4zIDQyLjMtNjUuNS0xLjkgNS45LTMuNSAxMS44LTMgMTcuNyA4LjctNy40IDE4LjgtMTcuOCA0NC40LTIyLjcgMTQuNy0yLjggMjkuNy0yIDQyLjEgMSAzOC41IDkuMyA2MSAzNC4zIDY5LjcgNzIuMyA1LjMgMjMuMS43IDQ1LTguMyA2Ni40LTUuMiAxMi40LTEyIDI0LjQtMjAuNyAzNS4xLTItMS45LTMuOS0zLjgtNS44LTUuNi00Mi44LTQwLjgtMjYuOC0yNS4yLTM3LjQtMzcuNC0xLjEtMS4yLTEtMi4yLS4xLTMuNiA4LjMtMTMuNSAxMS44LTI4LjIgMTAtNDQtMS4xLTkuOC00LjMtMTguOS0xMS4zLTI2LjItMTQuNS0xNS4zLTM5LjItMTUtNTMuNS42LTExLjQgMTIuNS0xNC4xIDI3LjQtMTAuOSA0My42LjIgMS4zLjQgMi43IDAgMy45LTMuNCAxMy43LTQuNiAyNy42LTIuNSA0MS42LjEuNS4xIDEuMS4xIDEuNiAwIC4zLS4xLjUtLjIgMS4xLTIxLjgtMTEtMzYtMjguMy00My4yLTUyLjItOC4zIDE3LjgtMTEuMSAzNS41LTYuNiA1NC4xLTE1LjYtMTUuMi0yMS4zLTM0LjMtMjItNTUuMnptNDY5LjYgMTIzLjJjLTExLjYtMTEuNi0yNS0yMC40LTQwLjEtMjYuNi0xMi44LTUuMi0yNi03LjktMzkuOS03LjEtMTAgLjYtMTkuNiAzLjEtMjkgNi40LTIuNS45LTUuMSAxLjYtNy43IDIuMi00LjkgMS4yLTcuMy0zLjEtNC43LTYuOCAzLjItNC42IDMuNC00LjIgMTUtMTIgLjYtLjQgMS4yLS44IDIuMi0xLjVoLTIuNWMtLjYgMC0xLjIuMi0xLjkuMy0xOS4zIDMuMy0zMC43IDE1LjUtNDguOSAyOS42LTEwLjQgOC4xLTEzLjggMy44LTEyLS41IDEuNC0zLjUgMy4zLTYuNyA1LjEtMTAgMS0xLjggMi4zLTMuNCAzLjUtNS4xLS4yLS4yLS41LS4zLS43LS41LTI3IDE4LjMtNDYuNyA0Mi40LTU3LjcgNzMuMy4zLjMuNy42IDEgLjkuMy0uNi41LTEuMi45LTEuNyAxMC40LTEyLjEgMjIuOC0yMS44IDM2LjYtMjkuOCAxOC4yLTEwLjYgMzcuNS0xOC4zIDU4LjctMjAuMiA0LjMtLjQgOC43LS4xIDEzLjEtLjEtMS44LjctMy41LjktNS4zIDEuMS0xOC41IDIuNC0zNS41IDktNTEuNSAxOC41LTMwLjIgMTcuOS01NC41IDQyLjItNzUuMSA3MC40LS4zLjQtLjQuOS0uNyAxLjMgMTQuNSA1LjMgMjQgMTcuMyAzNi4xIDI1LjYuMi0uMS4zLS4yLjQtLjRsMS4yLTIuN2MxMi4yLTI2LjkgMjctNTIuMyA0Ni43LTc0LjUgMTYuNy0xOC44IDM4LTI1LjMgNjIuNS0yMCA1LjkgMS4zIDExLjQgNC40IDE3LjIgNi44IDIuMy0xLjQgNS4xLTMuMiA4LTQuNyA4LjQtNC4zIDE3LjQtNyAyNi43LTkgMTQuNy0zLjEgMjkuNS00LjkgNDQuNS0xLjN2LS41Yy0uNS0uNC0xLjItLjgtMS43LTEuNHpNMzE2LjcgMzk3LjZjLTM5LjQtMzMtMjIuOC0xOS41LTQyLjctMzUuNi0uOC45IDAtLjItMS45IDMtMTEuMiAxOS4xLTI1LjUgMzUuMy00NCA0Ny42LTEwLjMgNi44LTIxLjUgMTEuOC0zNC4xIDExLjgtMjEuNiAwLTM4LjItOS41LTQ5LjQtMjcuOC0xMi0xOS41LTEzLjMtNDAuNy04LjItNjIuNiA3LjgtMzMuOCAzMC4xLTU1LjIgMzguNi02NC4zLTE4LjctNi4yLTMzIDEuNy00Ni40IDEzLjkuOC0xMy45IDQuMy0yNi4yIDExLjgtMzcuMy0yNC4zIDEwLjYtNDUuOSAyNS02NC44IDQzLjktLjMtNS44IDUuNC00My43IDUuNi00NC43LjMtMi43LS42LTUuMy0zLTcuNC0yNC4yIDI0LjctNDQuNSA1MS44LTU2LjEgODQuNiA3LjQtNS45IDE0LjktMTEuNCAyMy42LTE2LjItOC4zIDIyLjMtMTkuNiA1Mi44LTcuOCAxMDEuMSA0LjYgMTkgMTEuOSAzNi44IDI0LjEgNTIuMyAyLjkgMy43IDYuMyA2LjkgOS41IDEwLjMuMi0uMi40LS4zLjYtLjUtMS40LTctMi4yLTE0LjEtMS41LTIxLjkgMi4yIDMuMiAzLjkgNiA1LjkgOC42IDEyLjYgMTYgMjguNyAyNy40IDQ3LjIgMzUuNiAyNSAxMS4zIDUxLjEgMTMuMyA3Ny45IDguNiA1NC45LTkuNyA5MC43LTQ4LjYgMTE2LTk4LjggMS0xLjguNi0yLjktLjktNC4yem0xNzItNDYuNGMtOS41LTMuMS0yMi4yLTQuMi0yOC43LTIuOSA5LjkgNCAxNC4xIDYuNiAxOC44IDEyIDEyLjYgMTQuNCAxMC40IDM0LjctNS40IDQ1LjYtMTEuNyA4LjEtMjQuOSAxMC41LTM4LjkgOS4xLTEuMi0uMS0yLjMtLjQtMy0uNiAyLjgtMy43IDYtNyA4LjEtMTAuOCA5LjQtMTYuOCA1LjQtNDIuMS04LjctNTYuMS0yLjEtMi4xLTQuNi0zLjktNy01LjktLjMgMS4zLS4xIDIuMS4xIDIuOCA0LjIgMTYuNi04LjEgMzIuNC0yNC44IDMxLjgtNy42LS4zLTEzLjktMy44LTE5LjYtOC41LTE5LjUtMTYuMS0zOS4xLTMyLjEtNTguNS00OC4zLTUuOS00LjktMTIuNS04LjEtMjAuMS04LjctNC42LS40LTkuMy0uNi0xMy45LS45LTUuOS0uNC04LjgtMi44LTEwLjQtOC40LS45LTMuNC0xLjUtNi44LTIuMi0xMC4yLTEuNS04LjEtNi4yLTEzLTE0LjMtMTQuMi00LjQtLjctOC45LTEtMTMuMy0xLjUtMTMtMS40LTE5LjgtNy40LTIyLjYtMjAuMy01IDExLTEuNiAyMi40IDcuMyAyOS45IDQuNSAzLjggOS4zIDcuMyAxMy44IDExLjIgNC42IDMuOCA3LjQgOC43IDcuOSAxNC44LjQgNC43LjggOS41IDEuOCAxNC4xIDIuMiAxMC42IDguOSAxOC40IDE3IDI1LjEgMTYuNSAxMy43IDMzIDI3LjMgNDkuNSA0MS4xIDE3LjkgMTUgMTMuOSAzMi44IDEzIDU2LS45IDIyLjkgMTIuMiA0Mi45IDMzLjUgNTEuMiAxIC40IDIgLjYgMy42IDEuMS0xNS43LTE4LjItMTAuMS00NC4xLjctNTIuMy4zIDIuMi40IDQuMy45IDYuNCA5LjQgNDQuMSA0NS40IDY0LjIgODUgNTYuOSAxNi0yLjkgMzAuNi04LjkgNDIuOS0xOS44IDItMS44IDMuNy00LjEgNS45LTYuNS0xOS4zIDQuNi0zNS44LjEtNTAuOS0xMC42LjctLjMgMS4zLS4zIDEuOS0uMyAyMS4zIDEuOCA0MC42LTMuNCA1Ny0xNy40IDE5LjUtMTYuNiAyNi42LTQyLjkgMTcuNC02Ni04LjMtMjAuMS0yMy42LTMyLjMtNDMuOC0zOC45ek05OS40IDE3OS4zYy01LjMtOS4yLTEzLjItMTUuNi0yMi4xLTIxLjMgMTMuNy0uNSAyNi42LjIgMzkuNiAzLjctNy0xMi4yLTguNS0yNC43LTUtMzguNyA1LjMgMTEuOSAxMy43IDIwLjEgMjMuNiAyNi44IDE5LjcgMTMuMiAzNS43IDE5LjYgNDYuNyAzMC4yIDMuNCAzLjMgNi4zIDcuMSA5LjYgMTAuOS0uOC0yLjEtMS40LTQuMS0yLjItNi01LTEwLjYtMTMtMTguNi0yMi42LTI1LTEuOC0xLjItMi44LTIuNS0zLjQtNC41LTMuMy0xMi41LTMtMjUuMS0uNy0zNy42IDEtNS41IDIuOC0xMC45IDQuNS0xNi4zLjgtMi40IDIuMy00LjYgNC02LjYuNiA2LjkgMCAyNS41IDE5LjYgNDYgMTAuOCAxMS4zIDIyLjQgMjEuOSAzMy45IDMyLjcgOSA4LjUgMTguMyAxNi43IDI1LjUgMjYuOCAxLjEgMS42IDIuMiAzLjMgMy44IDQuNy01LTEzLTE0LjItMjQuMS0yNC4yLTMzLjgtOS42LTkuMy0xOS40LTE4LjQtMjkuMi0yNy40LTMuMy0zLTQuNi02LjctNS4xLTEwLjktMS4yLTEwLjQgMC0yMC42IDQuMy0zMC4yLjUtMSAxLjEtMiAxLjktMy4zLjUgNC4yLjYgNy45IDEuNCAxMS42IDQuOCAyMy4xIDIwLjQgMzYuMyA0OS4zIDYzLjUgMTAgOS40IDE5LjMgMTkuMiAyNS42IDMxLjYgNC44IDkuMyA3LjMgMTkgNS43IDI5LjYtLjEuNi41IDEuNyAxLjEgMiA2LjIgMi42IDEwIDYuOSA5LjcgMTQuMyA3LjctMi42IDEyLjUtOCAxNi40LTE0LjUgNC4yIDIwLjItOS4xIDUwLjMtMjcuMiA1OC43LjQtNC41IDUtMjMuNC0xNi41LTI3LjctNi44LTEuMy0xMi44LTEuMy0yMi45LTIuMSA0LjctOSAxMC40LTIwLjYuNS0yMi40LTI0LjktNC42LTUyLjggMS45LTU3LjggNC42IDguMi40IDE2LjMgMSAyMy41IDMuMy0yIDYuNS00IDEyLjctNS44IDE4LjktMS45IDYuNSAyLjEgMTQuNiA5LjMgOS42IDEuMi0uOSAyLjMtMS45IDMuMy0yLjctMy4xIDE3LjktMi45IDE1LjktMi44IDE4LjMuMyAxMC4yIDkuNSA3LjggMTUuNyA3LjMtMi41IDExLjgtMjkuNSAyNy4zLTQ1LjQgMjUuOCA3LTQuNyAxMi43LTEwLjMgMTUuOS0xNy45LTYuNS44LTEyLjkgMS42LTE5LjIgMi40bC0uMy0uOWM0LjctMy40IDgtNy44IDEwLjItMTMuMSA4LjctMjEuMS0zLjYtMzgtMjUtMzkuOS05LjEtLjgtMTcuOC44LTI1LjkgNS41IDYuMi0xNS42IDE3LjItMjYuNiAzMi42LTM0LjUtMTUuMi00LjMtOC45LTIuNy0yNC42LTYuMyAxNC42LTkuMyAzMC4yLTEzLjIgNDYuNS0xNC42LTUuMi0zLjItNDguMS0zLjYtNzAuMiAyMC45IDcuOSAxLjQgMTUuNSAyLjggMjMuMiA0LjItMjMuOCA3LTQ0IDE5LjctNjIuNCAzNS42IDEuMS00LjggMi43LTkuNSAzLjMtMTQuMy42LTQuNS44LTkuMi4xLTEzLjYtMS41LTkuNC04LjktMTUuMS0xOS43LTE2LjMtNy45LS45LTE1LjYuMS0yMy4zIDEuMy0uOS4xLTEuNy4zLTIuOSAwIDE1LjgtMTQuOCAzNi0yMS43IDUzLjEtMzMuNSA2LTQuNSA2LjgtOC4yIDMtMTQuOXptMTI4LjQgMjYuOGMzLjMgMTYgMTIuNiAyNS41IDIzLjggMjQuMy00LjYtMTEuMy0xMi4xLTE5LjUtMjMuOC0yNC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhaWx5bW90aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC45MywyNjdhNDguNCw0OC40LDAsMCwwLTI0LjM2LTYuMjFxLTE5LjgzLDAtMzMuNDQsMTMuMjd0LTEzLjYxLDMzLjQycTAsMjEuMTYsMTMuMjgsMzQuNnQzMy40MywxMy40NHEyMC41LDAsMzQuMTEtMTMuNzhUMzIyLDMwNy40N0E0Ny4xMyw0Ny4xMywwLDAsMCwzMTUuOSwyODQsNDQuMTMsNDQuMTMsMCwwLDAsMjk4LjkzLDI2N1pNMCwzMlY0ODBINDQ4VjMyWk0zNzQuNzEsNDA1LjI2aC01My4xVjM4MS4zN2gtLjY3cS0xNS43OSwyNi4yLTU1Ljc4LDI2LjItMjcuNTYsMC00OC44OS0xMy4xYTg4LjI5LDg4LjI5LDAsMCwxLTMyLjk0LTM1Ljc3cS0xMS42LTIyLjY4LTExLjU5LTUwLjg5LDAtMjcuNTYsMTEuNzYtNTAuMjJhODkuOSw4OS45LDAsMCwxLDMyLjkzLTM1Ljc4cTIxLjE4LTEzLjA5LDQ3LjcyLTEzLjFhODAuODcsODAuODcsMCwwLDEsMjkuNzQsNS4yMXExMy4yOCw1LjIxLDI1LDE3VjE1M2w1NS43OS0xMi4wOVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEYXNoY3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjYuNiAxMDRIMTEwLjRjLTUxLjEgMC05MS4yIDQzLjMtOTEuMiA5My41VjQyN2MwIDUwLjUgNDAuMSA4NSA5MS4yIDg1aDIyNy4yYzUxLjEgMCA5MS4yLTM0LjUgOTEuMi04NVYwTDMyNi42IDEwNHpNMTUzLjkgNDE2LjVjLTE3LjcgMC0zMi40LTE1LjEtMzIuNC0zMi44VjI0MC44YzAtMTcuNyAxNC43LTMyLjUgMzIuNC0zMi41aDE0MC43YzE3LjcgMCAzMiAxNC44IDMyIDMyLjV2MTIzLjVsNTEuMSA1Mi4zSDE1My45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlZXplciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuNDYsMjQ0LjcxSDU3NlYxNzJINDUxLjQ2Wm0wLTE3My44OXY3Mi42N0g1NzZWNzAuODJabTAsMjc1LjA2SDU3NlYyNzMuMkg0NTEuNDZaTTAsNDQ3LjA5SDEyNC41NFYzNzQuNDJIMFptMTUwLjQ3LDBIMjc1VjM3NC40MkgxNTAuNDdabTE1MC41MiwwSDQyNS41M1YzNzQuNDJIMzAxWm0xNTAuNDcsMEg1NzZWMzc0LjQySDQ1MS40NlpNMzAxLDM0NS44OEg0MjUuNTNWMjczLjJIMzAxWm0tMTUwLjUyLDBIMjc1VjI3My4ySDE1MC40N1ptMC0xMDEuMTdIMjc1VjE3MkgxNTAuNDdaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVsaWNpb3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni41IDY4Yy0uNC0xLjUtLjktMy0xLjQtNC41LS45LTIuNS0yLTQuOC0zLjMtNy4xLTEuNC0yLjQtMy00LjgtNC43LTYuOS0yLjEtMi41LTQuNC00LjgtNi45LTYuOC0xLjEtLjktMi4yLTEuNy0zLjMtMi41LTEuMy0uOS0yLjYtMS43LTQtMi40LTEuOC0xLTMuNi0xLjgtNS41LTIuNS0xLjctLjctMy41LTEuMy01LjQtMS43LTMuOC0xLTcuOS0xLjUtMTItMS41SDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgNC4xLjUgOC4yIDEuNSAxMiAyIDcuNyA1LjggMTQuNiAxMSAyMC4zIDEgMS4xIDIuMSAyLjIgMy4zIDMuMyA1LjcgNS4yIDEyLjYgOSAyMC4zIDExIDMuOCAxIDcuOSAxLjUgMTIgMS41aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMtLjEtNC4xLS42LTguMi0xLjYtMTJ6TTQxNiA0MzJjMCA4LjgtNy4yIDE2LTE2IDE2SDIyNFYyNTZIMzJWODBjMC04LjggNy4yLTE2IDE2LTE2aDE3NnYxOTJoMTkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlcGxveWRvZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODIuMiAxMzZoNTEuN3YyMzkuNmgtNTEuN3YtMjAuN2MtMTkuOCAyNC44LTUyLjggMjQuMS03My44IDE0LjctMjYuMi0xMS43LTQ0LjMtMzguMS00NC4zLTcxLjggMC0yOS44IDE0LjgtNTcuOSA0My4zLTcwLjggMjAuMi05LjEgNTIuNy0xMC42IDc0LjggMTIuOVYxMzZ6bS02NC43IDE2MS44YzAgMTguMiAxMy42IDMzLjUgMzMuMiAzMy41IDE5LjggMCAzMy4yLTE2LjQgMzMuMi0zMi45IDAtMTcuMS0xMy43LTMzLjItMzMuMi0zMy4yLTE5LjYgMC0zMy4yIDE2LjQtMzMuMiAzMi42ek0xODguNSAxMzZoNTEuN3YyMzkuNmgtNTEuN3YtMjAuN2MtMTkuOCAyNC44LTUyLjggMjQuMS03My44IDE0LjctMjYuMi0xMS43LTQ0LjMtMzguMS00NC4zLTcxLjggMC0yOS44IDE0LjgtNTcuOSA0My4zLTcwLjggMjAuMi05LjEgNTIuNy0xMC42IDc0LjggMTIuOVYxMzZ6bS02NC43IDE2MS44YzAgMTguMiAxMy42IDMzLjUgMzMuMiAzMy41IDE5LjggMCAzMy4yLTE2LjQgMzMuMi0zMi45IDAtMTcuMS0xMy43LTMzLjItMzMuMi0zMy4yLTE5LjcgMC0zMy4yIDE2LjQtMzMuMiAzMi42ek00NDggOTZjMTcuNSAwIDMyIDE0LjQgMzIgMzJ2MjU2YzAgMTcuNS0xNC40IDMyLTMyIDMySDY0Yy0xNy41IDAtMzItMTQuNC0zMi0zMlYxMjhjMC0xNy41IDE0LjQtMzIgMzItMzJoMzg0bTAtMzJINjRDMjguOCA2NCAwIDkyLjggMCAxMjh2MjU2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDM4NGMzNS4yIDAgNjQtMjguOCA2NC02NFYxMjhjMC0zNS4yLTI4LjgtNjQtNjQtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVza3BybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDUuOSA1MTJsMzEuMS0zOC40YzEyLjMtLjIgMjUuNi0xLjQgMzYuNS02LjYgMzguOS0xOC42IDM4LjQtNjEuOSAzOC4zLTYzLjgtLjEtNS0uOC00LjQtMjguOS0zNy40SDM2MmMtLjIgNTAuMS03LjMgNjguNS0xMC4yIDc1LjctOS40IDIzLjctNDMuOSA2Mi44LTk1LjIgNjkuNC04LjcgMS4xLTMyLjggMS4yLTUwLjcgMS4xem0yMDAuNC0xNjcuN2MzOC42IDAgNTguNS0xMy42IDczLjctMzAuOWwtMTc1LjUtLjMtMTcuNCAzMS4zIDExOS4yLS4xem0tNDMuNi0yMjMuOXYxNjguM2gtNzMuNWwtMzIuNyA1NS41SDI1MGMtNTIuMyAwLTU4LjEtNTYuNS01OC4zLTU4LjktMS4yLTEzLjItMjEuMy0xMS42LTIwLjEgMS44IDEuNCAxNS44IDguOCA0MCAyNi40IDU3LjFoLTkxYy0yNS41IDAtMTEwLjgtMjYuOC0xMDctMTE0VjE2LjlDMCAuOSA5LjcuMyAxNSAuMWg4MmMuMiAwIC4zLjEuNS4xIDQuMy0uNCA1MC4xLTIuMSA1MC4xIDQzLjcgMCAxMy4zIDIwLjIgMTMuNCAyMC4yIDAgMC0xOC4yLTUuNS0zMi44LTE1LjgtNDMuN2g4NC4yYzEwOC43LS40IDEyNi41IDc5LjQgMTI2LjUgMTIwLjJ6bS0xMzIuNSA1Nmw2NCAyOS4zYzEzLjMtNDUuNS00Mi4yLTcxLjctNjQtMjkuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwLjEyIDIwOC4yOWMtMy44OC0yLjktNy43Ny00LjM1LTExLjY1LTQuMzVIOTEuMDN2MTA0LjQ3aDE3LjQ1YzMuODggMCA3Ljc3LTEuNDUgMTEuNjUtNC4zNSAzLjg4LTIuOSA1LjgyLTcuMjUgNS44Mi0xMy4wNnYtNjkuNjVjLS4wMS01LjgtMS45Ni0xMC4xNi01LjgzLTEzLjA2ek00MDQuMSAzMkg0My45QzE5LjcgMzIgLjA2IDUxLjU5IDAgNzUuOHYzNjAuNEMuMDYgNDYwLjQxIDE5LjcgNDgwIDQzLjkgNDgwaDM2MC4yYzI0LjIxIDAgNDMuODQtMTkuNTkgNDMuOS00My44Vjc1LjhjLS4wNi0yNC4yMS0xOS43LTQzLjgtNDMuOS00My44ek0xNTQuMiAyOTEuMTljMCAxOC44MS0xMS42MSA0Ny4zMS00OC4zNiA0Ny4yNWgtNDYuNFYxNzIuOThoNDcuMzhjMzUuNDQgMCA0Ny4zNiAyOC40NiA0Ny4zNyA0Ny4yOGwuMDEgNzAuOTN6bTEwMC42OC04OC42NkgyMDEuNnYzOC40MmgzMi41N3YyOS41N0gyMDEuNnYzOC40MWg1My4yOXYyOS41N2gtNjIuMThjLTExLjE2LjI5LTIwLjQ0LTguNTMtMjAuNzItMTkuNjlWMTkzLjdjLS4yNy0xMS4xNSA4LjU2LTIwLjQxIDE5LjcxLTIwLjY5aDYzLjE5bC0uMDEgMjkuNTJ6bTEwMy42NCAxMTUuMjljLTEzLjIgMzAuNzUtMzYuODUgMjQuNjMtNDcuNDQgMGwtMzguNTMtMTQ0LjhoMzIuNTdsMjkuNzEgMTEzLjcyIDI5LjU3LTExMy43MmgzMi41OGwtMzguNDYgMTQ0Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGV2aWFudGFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgOTMuMmwtOTguMiAxNzkuMSA3LjQgOS41SDMyMHYxMjcuN0gxNTkuMWwtMTMuNSA5LjItNDMuNyA4NGMtLjMgMC04LjYgOC42LTkuMiA5LjJIMHYtOTMuMmw5My4yLTE3OS40LTcuNC05LjJIMFYxMDIuNWgxNTZsMTMuNS05LjIgNDMuNy04NGMuMyAwIDguNi04LjYgOS4yLTkuMkgzMjB2OTMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM4IDMwMS4yaDU4LjdMMzE5IDI3MWgtNTguN0wyMzggMzAxLjJ6TTAgMjgyLjl2Ni40aDgxLjhsNC43LTYuNEgwek0xNzIuOSAyNzFjLTguNyAwLTYtMy42LTQuNi01LjUgMi44LTMuOCA3LjYtMTAuNCAxMC40LTE0LjEgMi44LTMuNyAyLjgtNS45LTIuOC01LjloLTUxbC00MS4xIDU1LjhoMTAwLjFjMzMuMSAwIDUxLjUtMjIuNSA1Ny4yLTMwLjNoLTY4LjJ6bTMxNy41LTYuOWwzOS4zLTUzLjRoLTYyLjJsLTM5LjMgNTMuNGg2Mi4yek05NS4zIDI3MUgwdjYuNGg5MC42bDQuNy02LjR6bTExMS0yNi42Yy0yLjggMy44LTcuNSAxMC40LTEwLjMgMTQuMi0xLjQgMi00LjEgNS41IDQuNiA1LjVoNDUuNnM3LjMtMTAgMTMuNS0xOC40YzguNC0xMS40LjctMzUtMjkuMi0zNUgxMTIuNmwtMjAuNCAyNy44aDExMS40YzUuNiAwIDUuNSAyLjIgMi43IDUuOXpNMCAzMDEuMmg3My4xbDQuNy02LjRIMHY2LjR6bTMyMyAwaDU4LjdMNDA0IDI3MWgtNTguN2MtLjEgMC0yMi4zIDMwLjItMjIuMyAzMC4yem0yMjIgLjFoOTV2LTYuNGgtOTAuM2wtNC43IDYuNHptMjIuMy0zMC4zbC00LjcgNi40SDY0MFYyNzFoLTcyLjd6bS0xMy41IDE4LjNINjQwdi02LjRoLTgxLjVsLTQuNyA2LjR6bS0xNjQuMi03OC42bC0yMi41IDMwLjZoLTI2LjJsMjIuNS0zMC42aC01OC43bC0zOS4zIDUzLjRINDA5bDM5LjMtNTMuNGgtNTguN3ptMzMuNSA2MC4zcy00LjMgNS45LTYuNCA4LjdjLTcuNCAxMC0uOSAyMS42IDIzLjIgMjEuNmg5NC4zbDIyLjMtMzAuM0g0MjMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFzcG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNjQgMzU0LjU1Yy0xLjQgMC04OCAxMTkuOS04OC43IDExOS45Uzc2LjM0IDQxNCA3NiA0MTMuMjVzODYuNi0xMjUuNyA4Ni42LTEyNy40YzAtMi4yLTEyOS42LTQ0LTEzNy42LTQ3LjEtMS4zLS41IDMxLjQtMTAxLjggMzEuNy0xMDIuMS42LS43IDE0NC40IDQ3IDE0NS41IDQ3IC40IDAgLjktLjYgMS0xLjMuNC0yIDEtMTQ4LjYgMS43LTE0OS42LjgtMS4yIDEwNC41LS43IDEwNS4xLS4zIDEuNSAxIDMuNSAxNTYuMSA2LjEgMTU2LjEgMS40IDAgMTM4LjctNDcgMTM5LjMtNDYuMy44LjkgMzEuOSAxMDIuMiAzMS41IDEwMi42LS45LjktMTQwLjIgNDcuMS0xNDAuNiA0OC44LS4zIDEuNCA4Mi44IDEyMi4xIDgyLjUgMTIyLjlzLTg1LjUgNjMuNS04Ni4zIDYzLjVjLTEtLjItODktMTI1LjUtOTAuOS0xMjUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTgxLjcgMTcyLjNIMHYxNzQuNGgxMzIuN1Y5NmgtNTF2NzYuM3ptMCAxMzMuNEg1MC45di05Mi4zaDMwLjh2OTIuM3ptMjk3LjItMTMzLjR2MTc0LjRoODEuOHYyOC41aC04MS44VjQxNkg1MTJWMTcyLjNIMzc4Ljl6bTgxLjggMTMzLjRoLTMwLjh2LTkyLjNoMzAuOHY5Mi4zem0tMjM1LjYgNDFoODIuMXYyOC41aC04Mi4xVjQxNmgxMzMuM1YxNzIuM0gyMjUuMXYxNzQuNHptNTEuMi0xMzMuM2gzMC44djkyLjNoLTMwLjh2LTkyLjN6TTE1My4zIDk2aDUxLjN2NTFoLTUxLjNWOTZ6bTAgNzYuM2g1MS4zdjE3NC40aC01MS4zVjE3Mi4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpZ2l0YWxPY2VhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04NyA0ODEuOGg3My43di03My42SDg3ek0yNS40IDM0Ni42djYxLjZIODd2LTYxLjZ6bTQ2Ni4yLTE2OS43Yy0yMy03NC4yLTgyLjQtMTMzLjMtMTU2LjYtMTU2LjZDMTY0LjktMzIuOCA4IDkzLjcgOCAyNTUuOWg5NS44YzAtMTAxLjggMTAxLTE4MC41IDIwOC4xLTE0MS43IDM5LjcgMTQuMyA3MS41IDQ2LjEgODUuOCA4NS43IDM5LjEgMTA3LTM5LjcgMjA3LjgtMTQxLjQgMjA4di4zaC0uM1Y1MDRjMTYyLjYgMCAyODguOC0xNTYuOCAyMzUuNi0zMjcuMXptLTIzNS4zIDIzMXYtOTUuM2gtOTUuNnY5NS42SDI1NnYtLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGlzY29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjQuNTMxLDY5LjgzNmExLjUsMS41LDAsMCwwLS43NjQtLjdBNDg1LjA2NSw0ODUuMDY1LDAsMCwwLDQwNC4wODEsMzIuMDNhMS44MTYsMS44MTYsMCwwLDAtMS45MjMuOTEsMzM3LjQ2MSwzMzcuNDYxLDAsMCwwLTE0LjksMzAuNiw0NDcuODQ4LDQ0Ny44NDgsMCwwLDAtMTM0LjQyNiwwLDMwOS41NDEsMzA5LjU0MSwwLDAsMC0xNS4xMzUtMzAuNiwxLjg5LDEuODksMCwwLDAtMS45MjQtLjkxQTQ4My42ODksNDgzLjY4OSwwLDAsMCwxMTYuMDg1LDY5LjEzN2ExLjcxMiwxLjcxMiwwLDAsMC0uNzg4LjY3NkMzOS4wNjgsMTgzLjY1MSwxOC4xODYsMjk0LjY5LDI4LjQzLDQwNC4zNTRhMi4wMTYsMi4wMTYsMCwwLDAsLjc2NSwxLjM3NUE0ODcuNjY2LDQ4Ny42NjYsMCwwLDAsMTc2LjAyLDQ3OS45MThhMS45LDEuOSwwLDAsMCwyLjA2My0uNjc2QTM0OC4yLDM0OC4yLDAsMCwwLDIwOC4xMiw0MzAuNGExLjg2LDEuODYsMCwwLDAtMS4wMTktMi41ODgsMzIxLjE3MywzMjEuMTczLDAsMCwxLTQ1Ljg2OC0yMS44NTMsMS44ODUsMS44ODUsMCwwLDEtLjE4NS0zLjEyNmMzLjA4Mi0yLjMwOSw2LjE2Ni00LjcxMSw5LjEwOS03LjEzN2ExLjgxOSwxLjgxOSwwLDAsMSwxLjktLjI1NmM5Ni4yMjksNDMuOTE3LDIwMC40MSw0My45MTcsMjk1LjUsMGExLjgxMiwxLjgxMiwwLDAsMSwxLjkyNC4yMzNjMi45NDQsMi40MjYsNi4wMjcsNC44NTEsOS4xMzIsNy4xNmExLjg4NCwxLjg4NCwwLDAsMS0uMTYyLDMuMTI2LDMwMS40MDcsMzAxLjQwNywwLDAsMS00NS44OSwyMS44MywxLjg3NSwxLjg3NSwwLDAsMC0xLDIuNjExLDM5MS4wNTUsMzkxLjA1NSwwLDAsMCwzMC4wMTQsNDguODE1LDEuODY0LDEuODY0LDAsMCwwLDIuMDYzLjdBNDg2LjA0OCw0ODYuMDQ4LDAsMCwwLDYxMC43LDQwNS43MjlhMS44ODIsMS44ODIsMCwwLDAsLjc2NS0xLjM1MkM2MjMuNzI5LDI3Ny41OTQsNTkwLjkzMywxNjcuNDY1LDUyNC41MzEsNjkuODM2Wk0yMjIuNDkxLDMzNy41OGMtMjguOTcyLDAtNTIuODQ0LTI2LjU4Ny01Mi44NDQtNTkuMjM5UzE5My4wNTYsMjE5LjEsMjIyLjQ5MSwyMTkuMWMyOS42NjUsMCw1My4zMDYsMjYuODIsNTIuODQzLDU5LjIzOUMyNzUuMzM0LDMxMC45OTMsMjUxLjkyNCwzMzcuNTgsMjIyLjQ5MSwzMzcuNThabTE5NS4zOCwwYy0yOC45NzEsMC01Mi44NDMtMjYuNTg3LTUyLjg0My01OS4yMzlTMzg4LjQzNywyMTkuMSw0MTcuODcxLDIxOS4xYzI5LjY2NywwLDUzLjMwNywyNi44Miw1Mi44NDQsNTkuMjM5QzQ3MC43MTUsMzEwLjk5Myw0NDcuNTM4LDMzNy41OCw0MTcuODcxLDMzNy41OFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXNjb3Vyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjkgMzJDMTAzLjMgMzIgMCAxMzAuNSAwIDI1Mi4xIDAgMjU2IC4xIDQ4MCAuMSA0ODBsMjI1LjgtLjJjMTIyLjcgMCAyMjIuMS0xMDIuMyAyMjIuMS0yMjMuOUM0NDggMTM0LjMgMzQ4LjYgMzIgMjI1LjkgMzJ6TTIyNCAzODRjLTE5LjQgMC0zNy45LTQuMy01NC40LTEyLjFMODguNSAzOTJsMjIuOS03NWMtOS44LTE4LjEtMTUuNC0zOC45LTE1LjQtNjEgMC03MC43IDU3LjMtMTI4IDEyOC0xMjhzMTI4IDU3LjMgMTI4IDEyOC01Ny4zIDEyOC0xMjggMTI4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvY2h1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTcuOSAxNjBIMjU2VjE5LjZMMzk3LjkgMTYwek0zMDQgMTkydjEzMGMwIDY2LjgtMzYuNSAxMDAuMS0xMTMuMyAxMDAuMUg5NlY4NC44aDk0LjdjMTIgMCAyMy4xLjggMzMuMSAyLjV2LTg0QzIxMi45IDEuMSAyMDEuNCAwIDE4OS4yIDBIMHY1MTJoMTg5LjJDMzI5LjcgNTEyIDQwMCA0NDcuNCA0MDAgMzE4LjFWMTkyaC05NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb2NrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQ5LjkgMjM2LjNoLTY2LjF2LTU5LjRoNjYuMXY1OS40em0wLTIwNC4zaC02Ni4xdjYwLjdoNjYuMVYzMnptNzguMiAxNDQuOEgzNjJ2NTkuNGg2Ni4xdi01OS40em0tMTU2LjMtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTc4LjEgMGgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6bTI3Ni44IDEwMGMtMTQuNC05LjctNDcuNi0xMy4yLTczLjEtOC40LTMuMy0yNC0xNi43LTQ0LjktNDEuMS02My43bC0xNC05LjMtOS4zIDE0Yy0xOC40IDI3LjgtMjMuNCA3My42LTMuNyAxMDMuOC04LjcgNC43LTI1LjggMTEuMS00OC40IDEwLjdIMi40Yy04LjcgNTAuOCA1LjggMTE2LjggNDQgMTYyLjEgMzcuMSA0My45IDkyLjcgNjYuMiAxNjUuNCA2Ni4yIDE1Ny40IDAgMjczLjktNzIuNSAzMjguNC0yMDQuMiAyMS40LjQgNjcuNi4xIDkxLjMtNDUuMiAxLjUtMi41IDYuNi0xMy4yIDguNS0xNy4xbC0xMy4zLTguOXptLTUxMS4xLTI3LjloLTY2djU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptNzguMSAwaC02Ni4xdjU5LjRoNjYuMXYtNTkuNHptLTc4LjEtNzIuMWgtNjYuMXY2MC4xaDY2LjF2LTYwLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZnQyRGlnaXRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzk4LjFsLTE0NC04Mi4ydjY0LjdoLTkxLjNjMzAuOC0zNSA4MS44LTk1LjkgMTExLjgtMTQ5LjMgMzUuMi02Mi42IDE2LjEtMTIzLjQtMTIuOC0xNTMuMy00LjQtNC42LTYyLjItNjIuOS0xNjYtNDEuMi01OS4xIDEyLjQtODkuNCA0My40LTEwNC4zIDY3LjMtMTMuMSAyMC45LTE3IDM5LjgtMTguMiA0Ny43LTUuNSAzMyAxOS40IDY3LjEgNTYuNyA2Ny4xIDMxLjcgMCA1Ny4zLTI1LjcgNTcuMy01Ny40IDAtMjcuMS0xOS43LTUyLjEtNDgtNTYuOCAxLjgtNy4zIDE3LjctMjEuMSAyNi4zLTI0LjcgNDEuMS0xNy4zIDc4IDUuMiA4My4zIDMzLjUgOC4zIDQ0LjMtMzcuMSA5MC40LTY5LjcgMTI3LjZDODQuNSAzMjguMSAxOC4zIDM5Ni44IDAgNDE1LjlsMzM2LS4xVjQ4MHpNMzY5LjkgMzcxbDQ3LjEgMjcuMi00Ny4xIDI3LjJ6TTEzNC4yIDE2MS40YzAgMTIuNC0xMCAyMi40LTIyLjQgMjIuNHMtMjIuNC0xMC0yMi40LTIyLjQgMTAtMjIuNCAyMi40LTIyLjQgMjIuNCAxMC4xIDIyLjQgMjIuNHpNODIuNSAzODAuNWMyNS42LTI3LjQgOTcuNy0xMDQuNyAxNTAuOC0xNjkuOSAzNS4xLTQzLjEgNDAuMy04Mi40IDI4LjQtMTEyLjctNy40LTE4LjgtMTcuNS0zMC4yLTI0LjMtMzUuNyA0NS4zIDIuMSA2OCAyMy40IDgyLjIgMzguMyAwIDAgNDIuNCA0OC4yIDUuOCAxMTMuMy0zNyA2NS45LTExMC45IDE0Ny41LTEyOC41IDE2Ni43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkwLjIgMjI4LjJjOC45LTQyLjQgMzcuNC03Ny43IDc1LjctOTUuNyAzLjYgNC45IDI4IDM4LjggNTAuNyA3OS02NCAxNy0xMjAuMyAxNi44LTEyNi40IDE2Ljd6TTMxNC42IDE1NGMtMzMuNi0yOS44LTc5LjMtNDEuMS0xMjIuNi0zMC42IDMuOCA1LjEgMjguNiAzOC45IDUxIDgwIDQ4LjYtMTguMyA2OS4xLTQ1LjkgNzEuNi00OS40ek0xNDAuMSAzNjRjNDAuNSAzMS42IDkzLjMgMzYuNyAxMzcuMyAxOC0yLTEyLTEwLTUzLjgtMjkuMi0xMDMuNi01NS4xIDE4LjgtOTMuOCA1Ni40LTEwOC4xIDg1LjZ6bTk4LjgtMTA4LjJjLTMuNC03LjgtNy4yLTE1LjUtMTEuMS0yMy4yQzE1OS42IDI1MyA5My40IDI1Mi4yIDg3LjQgMjUyYzAgMS40LS4xIDIuOC0uMSA0LjIgMCAzNS4xIDEzLjMgNjcuMSAzNS4xIDkxLjQgMjIuMi0zNy45IDY3LjEtNzcuOSAxMTYuNS05MS44em0zNC45IDE2LjNjMTcuOSA0OS4xIDI1LjEgODkuMSAyNi41IDk3LjQgMzAuNy0yMC43IDUyLjUtNTMuNiA1OC42LTkxLjYtNC42LTEuNS00Mi4zLTEyLjctODUuMS01Ljh6bS0yMC4zLTQ4LjRjNC44IDkuOCA4LjMgMTcuOCAxMiAyNi44IDQ1LjUtNS43IDkwLjcgMy40IDk1LjIgNC40LS4zLTMyLjMtMTEuOC02MS45LTMwLjktODUuMS0yLjkgMy45LTI1LjggMzMuMi03Ni4zIDUzLjl6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY0IDE3NmMwLTg4LjItNzEuOC0xNjAtMTYwLTE2MFM2NCAxNjcuOCA2NCAyNTZzNzEuOCAxNjAgMTYwIDE2MCAxNjAtNzEuOCAxNjAtMTYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4yNTIgOCA4IDExOS4yNTIgOCAyNTZzMTExLjI1MiAyNDggMjQ4IDI0OCAyNDgtMTExLjI1MiAyNDgtMjQ4UzM5Mi43NDggOCAyNTYgOHptMTYzLjk3IDExNC4zNjZjMjkuNTAzIDM2LjA0NiA0Ny4zNjkgODEuOTU3IDQ3LjgzNSAxMzEuOTU1LTYuOTg0LTEuNDc3LTc3LjAxOC0xNS42ODItMTQ3LjUwMi02LjgxOC01Ljc1Mi0xNC4wNDEtMTEuMTgxLTI2LjM5My0xOC42MTctNDEuNjE0IDc4LjMyMS0zMS45NzcgMTEzLjgxOC03Ny40ODIgMTE4LjI4NC04My41MjN6TTM5Ni40MjEgOTcuODdjLTMuODEgNS40MjctMzUuNjk3IDQ4LjI4Ni0xMTEuMDIxIDc2LjUxOS0zNC43MTItNjMuNzc2LTczLjE4NS0xMTYuMTY4LTc5LjA0LTEyNC4wMDggNjcuMTc2LTE2LjE5MyAxMzcuOTY2IDEuMjcgMTkwLjA2MSA0Ny40ODl6bS0yMzAuNDgtMzMuMjVjNS41ODUgNy42NTkgNDMuNDM4IDYwLjExNiA3OC41MzcgMTIyLjUwOS05OS4wODcgMjYuMzEzLTE4Ni4zNiAyNS45MzQtMTk1LjgzNCAyNS44MDlDNjIuMzggMTQ3LjIwNSAxMDYuNjc4IDkyLjU3MyAxNjUuOTQxIDY0LjYyek00NC4xNyAyNTYuMzIzYzAtMi4xNjYuMDQzLTQuMzIyLjEwOC02LjQ3MyA5LjI2OC4xOSAxMTEuOTIgMS41MTMgMjE3LjcwNi0zMC4xNDYgNi4wNjQgMTEuODY4IDExLjg1NyAyMy45MTUgMTcuMTc0IDM1Ljk0OS03Ni41OTkgMjEuNTc1LTE0Ni4xOTQgODMuNTI3LTE4MC41MzEgMTQyLjMwNkM2NC43OTQgMzYwLjQwNSA0NC4xNyAzMTAuNzMgNDQuMTcgMjU2LjMyM3ptODEuODA3IDE2Ny4xMTNjMjIuMTI3LTQ1LjIzMyA4Mi4xNzgtMTAzLjYyMiAxNjcuNTc5LTEzMi43NTYgMjkuNzQgNzcuMjgzIDQyLjAzOSAxNDIuMDUzIDQ1LjE4OSAxNjAuNjM4LTY4LjExMiAyOS4wMTMtMTUwLjAxNSAyMS4wNTMtMjEyLjc2OC0yNy44ODJ6bTI0OC4zOCA4LjQ4OWMtMi4xNzEtMTIuODg2LTEzLjQ0Ni03NC44OTctNDEuMTUyLTE1MS4wMzMgNjYuMzgtMTAuNjI2IDEyNC43IDYuNzY4IDEzMS45NDcgOS4wNTUtOS40NDIgNTguOTQxLTQzLjI3MyAxMDkuODQ0LTkwLjc5NSAxNDEuOTc4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURyb3Bib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUyOCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY0LjQgMTE2LjNsLTEzMiA4NC4zIDEzMiA4NC4zLTEzMiA4NC4zTDAgMjg0LjFsMTMyLjMtODQuM0wwIDExNi4zIDEzMi4zIDMybDEzMi4xIDg0LjN6TTEzMS42IDM5NS43bDEzMi04NC4zIDEzMiA4NC4zLTEzMiA4NC4zLTEzMi04NC4zem0xMzIuOC0xMTEuNmwxMzItODQuMy0xMzItODMuNkwzOTUuNyAzMiA1MjggMTE2LjNsLTEzMi4zIDg0LjNMNTI4IDI4NC44bC0xMzIuMyA4NC4zLTEzMS4zLTg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTkuNSAxMTQuN2MtMjIuMi0xNC00My41LTE5LjUtNjQuNy0zMy41LTEzLTguOC0zMS4zLTMwLTQ2LjUtNDguMy0yLjcgMjkuMy0xMS41IDQxLjItMjIgNDkuNS0yMS4zIDE3LTM0LjggMjIuMi01My41IDMyLjNDMTE3IDEyMyAzMiAxODEuNSAzMiAyOTAuNSAzMiAzOTkuNyAxMjMuOCA0ODAgMjI1LjggNDgwIDMyNy41IDQ4MCA0MTYgNDA2IDQxNiAyOTRjMC0xMTIuMy04My0xNzEtOTYuNS0xNzkuM3ptMi41IDMyNS42Yy0yMC4xIDIwLjEtOTAuMSAyOC43LTExNi43IDQuMi00LjgtNC44LjMtMTIgNi41LTEyIDAgMCAxNyAxMy4zIDUxLjUgMTMuMyAyNyAwIDQ2LTcuNyA1NC41LTE0IDYuMS00LjYgOC40IDQuMyA0LjIgOC41em0tNTQuNS01Mi42YzguNy0zLjYgMjktMy44IDM2LjggMS4zIDQuMSAyLjggMTYuMSAxOC44IDYuMiAyMy43LTguNCA0LjItMS4yLTE1LjctMjYuNS0xNS43LTE0LjcgMC0xOS41IDUuMi0yNi43IDExLTcgNi05LjggOC0xMi4yIDQuNy02LTguMiAxNS45LTIyLjMgMjIuNC0yNXpNMzYwIDQwNWMtMTUuMi0xLTQ1LjUtNDguOC02NS00OS41LTMwLjktLjktMTA0LjEgODAuNy0xNjEuMyA0Mi0zOC44LTI2LjYtMTQuNi0xMDQuOCA1MS44LTEwNS4yIDQ5LjUtLjUgODMuOCA0OSAxMDguNSA0OC41IDIxLjMtLjMgNjEuOC00MS44IDgxLjgtNDEuOCA0OC43IDAgMjMuMyAxMDkuMy0xNS44IDEwNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEeWFsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnYxMTkuMmg2NFY5NmgxMDcuMkMyODQuNiA5NiAzNTIgMTc2LjIgMzUyIDI1NS45IDM1MiAzMzIgMjkzLjQgNDE2IDE3MS4yIDQxNkgwdjY0aDE3MS4yQzMzMS45IDQ4MCA0MTYgMzY3LjMgNDE2IDI1NS45YzAtNTguNy0yMi4xLTExMy40LTYyLjMtMTU0LjNDMzA4LjkgNTYgMjQ1LjcgMzIgMTcxLjIgMzJIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYXJseWJpcmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy4yIDQ3LjVjMS4yLTEzIDIxLjMtMTQgMzYuNi04LjcuOS4zIDI2LjIgOS43IDE5IDE1LjItMjcuOS03LjQtNTYuNCAxOC4yLTU1LjYtNi41em0tMjAxIDYuOWMzMC43LTguMSA2MiAyMCA2MS4xLTcuMS0xLjMtMTQuMi0yMy40LTE1LjMtNDAuMi05LjYtMSAuMy0yOC43IDEwLjUtMjAuOSAxNi43ek0zMTkuNCAxNjBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptLTE1OS43IDBjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMzE4LjUgMTYzLjJjLTkuOSAyNC00MC43IDExLTYzLjktMS4yLTEzLjUgNjkuMS01OC4xIDExMS40LTEyNi4zIDEyNC4yLjMuOS0yLS4xIDI0IDEgMzMuNiAxLjQgNjMuOC0zLjEgOTcuNC04LTE5LjgtMTMuOC0xMS40LTM3LjEtOS44LTM4LjEgMS40LS45IDE0LjcgMS43IDIxLjYgMTEuNSA4LjYtMTIuNSAyOC40LTE0LjggMzAuMi0xMy42IDEuNiAxLjEgNi42IDIwLjktNi45IDM0LjYgNC43LS45IDguMi0xLjYgOS44LTIuMSAyLjYtLjggMTcuNyAxMS4zIDMuMSAxMy4zLTE0LjMgMi4zLTIyLjYgNS4xLTQ3LjEgMTAuOC00NS45IDEwLjctODUuOSAxMS44LTExNy43IDEyLjhsMSAxMS42YzMuOCAxOC4xLTIzLjQgMjQuMy0yNy42IDYuMi44IDE3LjktMjcuMSAyMS44LTI4LjQtMWwtLjUgNS4zYy0uNyAxOC40LTI4LjQgMTcuOS0yOC4zLS42LTcuNSAxMy41LTI4LjEgNi44LTI2LjQtOC41bDEuMi0xMi40Yy0zNi43LjktNTkuNyAzLjEtNjEuOCAzLjEtMjAuOSAwLTIwLjktMzEuNiAwLTMxLjYgMi40IDAgMjcuNyAxLjMgNjMuMiAyLjgtNjEuMS0xNS41LTEwMy43LTU1LTExNC45LTExOC4yLTI1IDEyLjgtNTcuNSAyNi44LTY4LjIuOC0xMC41LTI1LjQgMjEuNS00Mi42IDY2LjgtNzMuNC43LTYuNiAxLjYtMTMuMyAyLjctMTkuOC0xNC40LTE5LjYtMTEuNi0zNi4zLTE2LjEtNjAuNC0xNi44IDIuNC0yMy4yLTkuMS0yMy42LTIzLjEuMy03LjMgMi4xLTE0LjkgMi40LTE1LjQgMS4xLTEuOCAxMC4xLTIgMTIuNy0yLjYgNi0zMS43IDUwLjYtMzMuMiA5MC45LTM0LjUgMTkuNy0yMS44IDQ1LjItNDEuNSA4MC45LTQ4LjNDMjAzLjMgMjkgMjE1LjIgOC41IDIxNi4yIDhjMS43LS44IDIxLjIgNC4zIDI2LjMgMjMuMiA1LjItOC44IDE4LjMtMTEuNCAxOS42LTEwLjcgMS4xLjYgNi40IDE1LTQuOSAyNS45IDQwLjMgMy41IDcyLjIgMjQuNyA5NiA1MC43IDM2LjEgMS41IDcxLjggNS45IDc3LjEgMzQgMi43LjYgMTEuNi44IDEyLjcgMi42LjMuNSAyLjEgOC4xIDIuNCAxNS40LS41IDEzLjktNi44IDI1LjQtMjMuNiAyMy4xLTMuMiAxNy4zLTIuNyAzMi45LTguNyA0Ny43IDIuNCAxMS43IDQgMjMuOCA0LjggMzYuNCAzNyAyNS40IDcwLjMgNDIuNSA2MC4zIDY2Ljl6TTIwNy40IDE1OS45Yy45LTQ0LTM3LjktNDIuMi03OC42LTQwLjMtMjEuNyAxLTM4LjkgMS45LTQ1LjUgMTMuOS0xMS40IDIwLjkgNS45IDkyLjkgMjMuMiAxMDEuMiA5LjggNC43IDczLjQgNy45IDg2LjMtNy4xIDguMi05LjQgMTUtNDkuNCAxNC42LTY3Ljd6bTUyIDU4LjNjLTQuMy0xMi40LTYtMzAuMS0xNS4zLTMyLjctMi0uNS05LS41LTExIDAtMTAgMi44LTEwLjggMjIuMS0xNyAzNy4yIDE1LjQgMCAxOS4zIDkuNyAyMy43IDkuNyA0LjMgMCA2LjMtMTEuMyAxOS42LTE0LjJ6bTEzNS43LTg0LjdjLTYuNi0xMi4xLTI0LjgtMTIuOS00Ni41LTEzLjktNDAuMi0xLjktNzguMi0zLjgtNzcuMyA0MC4zLS41IDE4LjMgNSA1OC4zIDEzLjIgNjcuOCAxMyAxNC45IDc2LjYgMTEuOCA4Ni4zIDcuMSAxNS44LTcuNiAzNi41LTc4LjkgMjQuMy0xMDEuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFYmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwNiAxODkuNWwtNTQuOCAxMDkuOS01NC45LTEwOS45aC0zNy41bDEwLjkgMjAuNmMtMTEuNS0xOS0zNS45LTI2LTYzLjMtMjYtMzEuOCAwLTY3LjkgOC43LTcxLjUgNDMuMWgzMy43YzEuNC0xMy44IDE1LjctMjEuOCAzNS0yMS44IDI2IDAgNDEgOS42IDQxIDMzdjMuNGMtMTIuNyAwLTI4IC4xLTQxLjcuNC00Mi40LjktNjkuNiAxMC03Ni43IDM0LjQgMS01LjIgMS41LTEwLjYgMS41LTE2LjIgMC01Mi4xLTM5LjctNzYuMi03NS40LTc2LjItMjEuMyAwLTQzIDUuNS01OC43IDI0LjJ2LTgwLjZoLTMyLjF2MTY5LjVjMCAxMC4zLS42IDIyLjktMS4xIDMzLjFoMzEuNWMuNy02LjMgMS4xLTEyLjkgMS4xLTE5LjUgMTMuNiAxNi42IDM1LjQgMjQuOSA1OC43IDI0LjkgMzYuOSAwIDY0LjktMjEuOSA3My4zLTU0LjItLjUgMi44LS43IDUuOC0uNyA5IDAgMjQuMSAyMS4xIDQ1IDYwLjYgNDUgMjYuNiAwIDQ1LjgtNS43IDYxLjktMjUuNSAwIDYuNi4zIDEzLjMgMS4xIDIwLjJoMjkuOGMtLjctOC4yLTEtMTcuNS0xLTI2Ljh2LTY1LjZjMC05LjMtMS43LTE3LjItNC44LTIzLjhsNjEuNSAxMTYuMS0yOC41IDU0LjFoMzUuOUw2NDAgMTg5LjV6TTI0My43IDMxMy44Yy0yOS42IDAtNTAuMi0yMS41LTUwLjItNTMuOCAwLTMyLjQgMjAuNi01My44IDUwLjItNTMuOCAyOS44IDAgNTAuMiAyMS40IDUwLjIgNTMuOCAwIDMyLjMtMjAuNCA1My44LTUwLjIgNTMuOHptMjAwLjktNDcuM2MwIDMwLTE3LjkgNDguNC01MS42IDQ4LjQtMjUuMSAwLTM1LTEzLjQtMzUtMjUuOCAwLTE5LjEgMTguMS0yNC40IDQ3LjItMjUuMyAxMy4xLS41IDI3LjYtLjYgMzkuNC0uNnptLTQxMS45IDEuNmgxMjguOHYtOC41YzAtNTEuNy0zMy4xLTc1LjQtNzguNC03NS40LTU2LjggMC04MyAzMC44LTgzIDc3LjYgMCA0Mi41IDI1LjMgNzQgODIuNSA3NCAzMS40IDAgNjgtMTEuNyA3NC40LTQ2LjFoLTMzLjFjLTEyIDM1LjgtODcuNyAzNi43LTkxLjItMjEuNnptOTUtMjEuNEgzMy4zYzYuOS01Ni42IDkyLjEtNTQuNyA5NC40IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZUxlZ2FjeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNS43MSwyMjguMTZsLjM1LS40OGMwLC4xNiwwLC4zMi0uMDcuNDhabTQ2MC41OCwxNS41MWMwLTQ0LTcuNzYtODQuNDYtMjguODEtMTIyLjRDNDE2LjUsNDcuODgsMzQzLjkxLDgsMjU4Ljg5LDgsMTE5LDcuNzIsNDAuNjIsMTEzLjIxLDI2LjA2LDIyNy42OGM0Mi40Mi02MS4zMSwxMTcuMDctMTIxLjM4LDIyMC4zNy0xMjUsMCwwLDEwOS42NywwLDk5LjQyLDEwNUgxNzBjNi4zNy0zNy4zOSwxOC41NS01OSwzNC4zNC03OC45My03NS4wNSwzNC45LTEyMS44NSw5Ni4xLTEyMC43NSwxODguMzIuODMsNzEuNDUsNTAuMTMsMTQ0Ljg0LDEyMC43NSwxNzIsODMuMzUsMzEuODQsMTkyLjc3LDcuMiwyNDAuMTMtMjEuMzNWMzYzLjMxQzM2My42LDQxOS44LDE3My42LDQyNC4yMywxNzIuMjEsMjk1Ljc0SDQ4Ni4yOVYyNDMuNjdaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODEuOTIsMTM0LjQ4QzQ0MC44Nyw1NC4xOCwzNTIuMjYsOCwyNTUuOTEsOCwxMzcuMDUsOCwzNy41MSw5MS42OCwxMy40NywyMDMuNjZjMjYtNDYuNDksODYuMjItNzkuMTQsMTQ5LjQ2LTc5LjE0LDc5LjI3LDAsMTIxLjA5LDQ4LjkzLDEyMi4yNSw1MC4xOCwyMiwyMy44LDMzLDUwLjM5LDMzLDgzLjEsMCwxMC40LTUuMzEsMjUuODItMTUuMTEsMzguNTctMS41NywyLTYuMzksNC44NC02LjM5LDExLDAsNS4wNiwzLjI5LDkuOTIsOS4xNCwxNCwyNy44NiwxOS4zNyw4MC4zNywxNi44MSw4MC41MSwxNi44MUExMTUuMzksMTE1LjM5LDAsMCwwLDQ0NC45NCwzMjJhMTE4LjkyLDExOC45MiwwLDAsMCw1OC45NS0xMDIuNDRDNTA0LjM5LDE3Ni4xMyw0ODguMzksMTQ3LjI2LDQ4MS45MiwxMzQuNDhaTTIxMi43Nyw0NzUuNjdhMTU0Ljg4LDE1NC44OCwwLDAsMS00Ni42NC00NWMtMzIuOTQtNDcuNDItMzQuMjQtOTUuNi0yMC4xLTEzNkExNTUuNSwxNTUuNSwwLDAsMSwyMDMsMjE1Ljc1YzU5LTQ1LjIsOTQuODQtNS42NSw5OS4wNi0xYTgwLDgwLDAsMCwwLTQuODktMTAuMTRjLTkuMjQtMTUuOTMtMjQtMzYuNDEtNTYuNTYtNTMuNTEtMzMuNzItMTcuNjktNzAuNTktMTguNTktNzcuNjQtMTguNTktMzguNzEsMC03Ny45LDEzLTEwNy41MywzNS42OUMzNS42OCwxODMuMywxMi43NywyMDguNzIsOC42LDI0M2MtMS4wOCwxMi4zMS0yLjc1LDYyLjgsMjMsMTE4LjI3YTI0OCwyNDgsMCwwLDAsMjQ4LjMsMTQxLjYxQzI0MS43OCw0OTYuMjYsMjE0LjA1LDQ3Ni4yNCwyMTIuNzcsNDc1LjY3Wm0yNTAuNzItOTguMzNhNy43Niw3Ljc2LDAsMCwwLTcuOTItLjIzLDE4MS42NiwxODEuNjYsMCwwLDEtMjAuNDEsOS4xMiwxOTcuNTQsMTk3LjU0LDAsMCwxLTY5LjU1LDEyLjUyYy05MS42NywwLTE3MS41Mi02My4wNi0xNzEuNTItMTQ0QTYxLjEyLDYxLjEyLDAsMCwxLDIwMC42MSwyMjgsMTY4LjcyLDE2OC43MiwwLDAsMCwxNjEuODUsMjc4Yy0xNC45MiwyOS4zNy0zMyw4OC4xMywxMy4zMywxNTEuNjYsNi41MSw4LjkxLDIzLDMwLDU2LDQ3LjY3LDIzLjU3LDEyLjY1LDQ5LDE5LjYxLDcxLjcsMTkuNjEsMzUuMTQsMCwxMTUuNDMtMzMuNDQsMTYzLTEwOC44N0E3Ljc1LDcuNzUsMCwwLDAsNDYzLjQ5LDM3Ny4zNFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGVtZW50b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI1LjYgMzJIMjIuNEMxMCAzMiAwIDQyIDAgNTQuNHY0MDMuMkMwIDQ3MCAxMCA0ODAgMjIuNCA0ODBoNDAzLjJjMTIuNCAwIDIyLjQtMTAgMjIuNC0yMi40VjU0LjRDNDQ4IDQyIDQzOCAzMiA0MjUuNiAzMk0xNjQuMyAzNTUuNWgtMzkuOHYtMTk5aDM5Ljh2MTk5em0xNTkuMyAwSDIwNC4xdi0zOS44aDExOS41djM5Ljh6bTAtNzkuNkgyMDQuMXYtMzkuOGgxMTkuNXYzOS44em0wLTc5LjdIMjA0LjF2LTM5LjhoMTE5LjV2MzkuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE0My44NCAyODUuMkMzNzUuMzEgMzU4LjUxIDMxNS43OSA0MDQuOCAyNDggNDA0LjhzLTEyNy4zMS00Ni4yOS0xNDMuODQtMTExLjZjLTEuNjUtNy40NCAyLjQ4LTE1LjcxIDkuOTItMTcuMzYgNy40NC0xLjY1IDE1LjcxIDIuNDggMTcuMzYgOS45MiAxNC4wNSA1Mi45MSA2MiA5MC4xMSAxMTYuNTYgOTAuMTFzMTAyLjUxLTM3LjIgMTE2LjU2LTkwLjExYzEuNjUtNy40NCA5LjkyLTEyLjQgMTcuMzYtOS45MiA3LjQ0IDEuNjUgMTIuNCA5LjkyIDkuOTIgMTcuMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW1iZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM5LjkgMjU0LjZjLTEuMS0xMC43LTEwLjctNi44LTEwLjctNi44cy0xNS42IDEyLjEtMjkuMyAxMC43Yy0xMy43LTEuMy05LjQtMzItOS40LTMyczMtMjguMS01LjEtMzAuNGMtOC4xLTIuNC0xOCA3LjMtMTggNy4zcy0xMi40IDEzLjctMTguMyAzMS4ybC0xLjYuNXMxLjktMzAuNi0uMy0zNy42Yy0xLjYtMy41LTE2LjQtMy4yLTE4LjggM3MtMTQuMiA0OS4yLTE1IDY3LjJjMCAwLTIzLjEgMTkuNi00My4zIDIyLjhzLTI1LTkuNC0yNS05LjQgNTQuOC0xNS4zIDUyLjktNTkuMS00NC4yLTI3LjYtNDktMjRjLTQuNiAzLjUtMjkuNCAxOC40LTM2LjYgNTkuNy0uMiAxLjQtLjcgNy41LS43IDcuNXMtMjEuMiAxNC4yLTMzIDE4YzAgMCAzMy01NS42LTcuMy04MC45LTExLjQtNi44LTIxLjMtLjUtMjcuMiA1LjMgMTMuNi0xNy4zIDQ2LjQtNjQuMiAzNi45LTEwNS4yLTUuOC0yNC40LTE4LTI3LjEtMjkuMi0yMy4xLTE3IDYuNy0yMy41IDE2LjctMjMuNSAxNi43cy0yMiAzMi0yNy4xIDc5LjUtMTIuNiAxMDUuMS0xMi42IDEwNS4xLTEwLjUgMTAuMi0yMC4yIDEwLjctNS40LTI4LjctNS40LTI4LjcgNy41LTQ0LjYgNy01Mi4xLTEuMS0xMS42LTkuOS0xNC4yYy04LjktMi43LTE4LjUgOC42LTE4LjUgOC42cy0yNS41IDM4LjctMjcuNyA0NC42bC0xLjMgMi40LTEuMy0xLjZzMTgtNTIuNy44LTUzLjUtMjguNSAxOC44LTI4LjUgMTguOC0xOS42IDMyLjgtMjAuNCAzNi41bC0xLjMtMS42czguMS0zOC4yIDYuNC00Ny42Yy0xLjYtOS40LTEwLjUtNy41LTEwLjUtNy41cy0xMS4zLTEuMy0xNC4yIDUuOS0xMy43IDU1LjMtMTUgNzAuN2MwIDAtMjguMiAyMC4yLTQ2LjggMjAuNC0xOC41LjMtMTYuNy0xMS44LTE2LjctMTEuOHM2OC0yMy4zIDQ5LjQtNjkuMmMtOC4zLTExLjgtMTgtMTUuNS0zMS43LTE1LjMtMTMuNy4zLTMwLjMgOC42LTQxLjMgMzMuMy01LjMgMTEuOC02LjggMjMtNy44IDMxLjUgMCAwLTEyLjMgMi40LTE4LjgtMi45cy0xMCAwLTEwIDAtMTEuMiAxNC0uMSAxOC4zIDI4LjEgNi4xIDI4LjEgNi4xYzEuNiA3LjUgNi4yIDE5LjUgMTkuNiAyOS43IDIwLjIgMTUuMyA1OC44LTEuMyA1OC44LTEuM2wxNS45LTguOHMuNSAxNC42IDEyLjEgMTYuNyAxNi40IDEgMzYuNS00Ny45YzExLjgtMjUgMTIuNi0yMy42IDEyLjYtMjMuNmwxLjMtLjNzLTkuMSA0Ni44LTUuNiA1OS43QzE4Ny43IDMxOS40IDIwMyAzMTggMjAzIDMxOHM4LjMgMi40IDE1LTIxLjIgMTkuNi00OS45IDE5LjYtNDkuOWgxLjZzLTUuNiA0OC4xIDMgNjMuNyAzMC45IDUuMyAzMC45IDUuMyAxNS42LTcuOCAxOC0xMC4yYzAgMCAxOC41IDE1LjggNDQuNiAxMi45IDU4LjMtMTEuNSA3OS4xLTI1LjkgNzkuMS0yNS45czEwIDI0LjQgNDEuMSAyNi43YzM1LjUgMi43IDU0LjgtMTguNiA1NC44LTE4LjZzLS4zIDEzLjUgMTIuMSAxOC42IDIwLjctMjIuOCAyMC43LTIyLjhsMjAuNy01Ny4yaDEuOXMxLjEgMzcuMyAyMS41IDQzLjIgNDctMTMuNyA0Ny0xMy43IDYuNC0zLjUgNS4zLTE0LjN6bS01NzggNS4zYy44LTMyIDIxLjgtNDUuOSAyOS0zOSA3LjMgNyA0LjYgMjItOS4xIDMxLjQtMTMuNyA5LjUtMTkuOSA3LjYtMTkuOSA3LjZ6bTI3Mi44LTEyMy44czE5LjEtNDkuNyAyMy42LTI1LjUtNDAgOTYuMi00MCA5Ni4yYy41LTE2LjIgMTYuNC03MC43IDE2LjQtNzAuN3ptMjIuOCAxMzguNGMtMTIuNiAzMy00My4zIDE5LjYtNDMuMyAxOS42cy0zLjUtMTEuOCA2LjQtNDQuOSAzMy4zLTIwLjIgMzMuMy0yMC4yIDE2LjIgMTIuNCAzLjYgNDUuNXptODQuNi0xNC42cy0zLTEwLjUgOC4xLTMwLjZjMTEtMjAuMiAxOS42LTkuMSAxOS42LTkuMXM5LjQgMTAuMi0xLjMgMjUuNS0yNi40IDE0LjItMjYuNCAxNC4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVtcGlyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODcuNiA1NC4yYy0xMC44LTIuMi0yMi4xLTMuMy0zMy41LTMuNlYzMi40Yzc4LjEgMi4yIDE0Ni4xIDQ0IDE4NC42IDEwNi42bC0xNS44IDkuMWMtNi4xLTkuNy0xMi43LTE4LjgtMjAuMi0yNy4xbC0xOCAxNS41Yy0yNi0yOS42LTYxLjQtNTAuNy0xMDEuOS01OC40bDQuOC0yMy45ek01My40IDMyMi40bDIzLTcuN2MtNi40LTE4LjMtMTAtMzguMi0xMC01OC43czMuMy00MC40IDkuNy01OC43bC0yMi43LTcuN2MzLjYtMTAuOCA4LjMtMjEuMyAxMy42LTMxbC0xNS44LTkuMUMzNCAxODEgMjQuMSAyMTcuNSAyNC4xIDI1NnMxMCA3NSAyNy4xIDEwNi42bDE1LjgtOS4xYy01LjMtMTAtOS43LTIwLjMtMTMuNi0zMS4xek0yMTMuMSA0MzRjLTQwLjQtOC03NS44LTI5LjEtMTAxLjktNTguN2wtMTggMTUuOGMtNy41LTguNi0xNC40LTE3LjctMjAuMi0yNy40bC0xNiA5LjRjMzguNSA2Mi4zIDEwNi44IDEwNC4zIDE4NC45IDEwNi42di0xOC4zYy0xMS4zLS4zLTIyLjctMS43LTMzLjUtMy42bDQuNy0yMy44ek05My4zIDEyMC45bDE4IDE1LjVjMjYtMjkuNiA2MS40LTUwLjcgMTAxLjktNTguNGwtNC43LTIzLjhjMTAuOC0yLjIgMjIuMS0zLjMgMzMuNS0zLjZWMzIuNEMxNjMuOSAzNC42IDk1LjkgNzYuNCA1Ny40IDEzOWwxNS44IDkuMWM2LTkuNyAxMi42LTE4LjkgMjAuMS0yNy4yem0zMDkuNCAyNzAuMmwtMTgtMTUuOGMtMjYgMjkuNi02MS40IDUwLjctMTAxLjkgNTguN2w0LjcgMjMuOGMtMTAuOCAxLjktMjIuMSAzLjMtMzMuNSAzLjZ2MTguM2M3OC4xLTIuMiAxNDYuNC00NC4zIDE4NC45LTEwNi42bC0xNi4xLTkuNGMtNS43IDkuNy0xMi42IDE4LjgtMjAuMSAyNy40ek00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFMwIDM5MyAwIDI1NiAxMTEgOCAyNDggOHMyNDggMTExIDI0OCAyNDh6bS0xMi4yIDBjMC0xMzAuMS0xMDUuNy0yMzUuOC0yMzUuOC0yMzUuOFMxMi4yIDEyNS45IDEyLjIgMjU2IDExNy45IDQ5MS44IDI0OCA0OTEuOCA0ODMuOCAzODYuMSA0ODMuOCAyNTZ6bS0zOS0xMDYuNmwtMTUuOCA5LjFjNS4zIDkuNyAxMCAyMC4yIDEzLjYgMzFsLTIyLjcgNy43YzYuNCAxOC4zIDkuNyAzOC4yIDkuNyA1OC43cy0zLjYgNDAuNC0xMCA1OC43bDIzIDcuN2MtMy45IDEwLjgtOC4zIDIxLTEzLjYgMzFsMTUuOCA5LjFDNDYyIDMzMSA0NzEuOSAyOTQuNSA0NzEuOSAyNTZzLTkuOS03NS0yNy4xLTEwNi42em0tMTgzIDE3Ny43YzE2LjMtMy4zIDMwLjQtMTEuNiA0MC43LTIzLjVsNTEuMiA0NC44YzExLjktMTMuNiAyMS4zLTI5LjMgMjcuMS00Ni44bC02NC4yLTIyLjFjMi41LTcuNSAzLjktMTUuMiAzLjktMjMuNXMtMS40LTE2LjEtMy45LTIzLjVsNjQuNS0yMi4xYy02LjEtMTcuNC0xNS41LTMzLjItMjcuNC00Ni44bC01MS4yIDQ0LjhjLTEwLjItMTEuOS0yNC40LTIwLjUtNDAuNy0yMy44bDEzLjMtNjYuNGMtOC42LTEuOS0xNy43LTIuOC0yNy4xLTIuOC05LjQgMC0xOC41LjgtMjcuMSAyLjhsMTMuMyA2Ni40Yy0xNi4zIDMuMy0zMC40IDExLjktNDAuNyAyMy44bC01MS4yLTQ0LjhjLTExLjkgMTMuNi0yMS4zIDI5LjMtMjcuNCA0Ni44bDY0LjUgMjIuMWMtMi41IDcuNS0zLjkgMTUuMi0zLjkgMjMuNXMxLjQgMTYuMSAzLjkgMjMuNWwtNjQuMiAyMi4xYzUuOCAxNy40IDE1LjIgMzMuMiAyNy4xIDQ2LjhsNTEuMi00NC44YzEwLjIgMTEuOSAyNC40IDIwLjIgNDAuNyAyMy41bC0xMy4zIDY2LjdjOC42IDEuNyAxNy43IDIuOCAyNy4xIDIuOCA5LjQgMCAxOC41LTEuMSAyNy4xLTIuOGwtMTMuMy02Ni43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyYzQ3Ny42IDAgMzY2LjYgMzE3LjMgMzY3LjEgMzY2LjNMNDQ4IDQ4MGgtMjZsLTcwLjQtNzEuMmMtMzkgNC4yLTEyNC40IDM0LjUtMjE0LjQtMzdDNDcgMzAwLjMgNTIgMjE0LjcgMCAzMnptNzkuNyA0NmMtNDkuNy0yMy41LTUuMiA5LjItNS4yIDkuMiA0NS4yIDMxLjIgNjYgNzMuNyA5MC4yIDExOS45IDMxLjUgNjAuMiA3OSAxMzkuNyAxNDQuMiAxNjcuNyA2NSAyOCAzNC4yIDEyLjUgNi04LjUtMjguMi0yMS4yLTY4LjItODctOTEtMTMwLjItMzEuNy02MC02MS0xMTguNi0xNDQuMi0xNTguMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcmxhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODcuMiA1My41SDB2NDA1aDEwMC40Yy00OS43LTUyLjYtNzguOC0xMjUuMy03OC43LTIxMi4xLS4xLTc2LjcgMjQtMTQyLjcgNjUuNS0xOTIuOXptMjM4LjIgOS43Yy00NS45LjEtODUuMSAzMy41LTg5LjIgODMuMmgxNjkuOWMtMS4xLTQ5LjctMzQuNS04My4xLTgwLjctODMuMnptMjMwLjctOS42aC4zbC0uMS0uMXptLjMgMGMzMS40IDQyLjcgNDguNyA5Ny41IDQ2LjIgMTYyLjcuNSA2IC41IDExLjcgMCAyNC4xSDIzMC4yYy0uMiAxMDkuNyAzOC45IDE5NC45IDEzOC42IDE5NS4zIDY4LjUtLjMgMTE4LTUxIDE1MS45LTEwNi4xbDk2LjQgNDguMmMtMTcuNCAzMC45LTM2LjUgNTcuOC01Ny45IDgwLjhINjQwdi00MDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXRoZXJldW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExLjkgMjYwLjhMMTYwIDM1My42IDggMjYwLjggMTYwIDBsMTUxLjkgMjYwLjh6TTE2MCAzODMuNEw4IDI5MC42IDE2MCA1MTJsMTUyLTIyMS40LTE1MiA5Mi44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0c3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM0OGMtMS43NSAxMC43NS0xMy43NSAxMTAtMTUuNSAxMzItMTE3Ljg3OS00LjI5OS0yMTkuODk1LTQuNzQzLTM2OC41IDB2LTI1LjVjNDUuNDU3LTguOTQ4IDYwLjYyNy04LjAxOSA2MS0zNS4yNSAxLjc5My03Mi4zMjIgMy41MjQtMjQ0LjE0MyAwLTMyMi0xLjAyOS0yOC40Ni0xMi4xMy0yNi43NjUtNjEtMzZ2LTI1LjVjNzMuODg2IDIuMzU4IDI1NS45MzMgOC41NTEgMzYyLjk5OS0zLjc1LTMuNSAzOC4yNS03Ljc1IDEyNi41LTcuNzUgMTI2LjVIMzMyQzMyMC45NDcgMTE1LjY2NSAzMTMuMjQxIDY4IDI3Ny4yNSA2OGgtMTM3Yy0xMC4yNSAwLTEwLjc1IDMuNS0xMC43NSA5Ljc1VjI0MS41YzU4IC41IDg4LjUtMi41IDg4LjUtMi41IDI5Ljc3LS45NTEgMjcuNTYtOC41MDIgNDAuNzUtNjUuMjUxaDI1Ljc1Yy00LjQwNyAxMDEuMzUxLTMuOTEgNjEuODI5LTEuNzUgMTYwLjI1SDI1N2MtOS4xNTUtNDAuMDg2LTkuMDY1LTYxLjA0NS0zOS41MDEtNjEuNSAwIDAtMjEuNS0yLTg4LTJ2MTM5YzAgMjYgMTQuMjUgMzguMjUgNDQuMjUgMzguMjVIMjYzYzYzLjYzNiAwIDY2LjU2NC0yNC45OTYgOTguNzUxLTk5Ljc1SDM4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFdmVybm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjAuODIgMTMyLjIxYzEuNiAyMi4zMS0xNy41NSAyMS41OS0yMS42MSAyMS41OS02OC45MyAwLTczLjY0LTEtODMuNTggMy4zNC0uNTYuMjItLjc0IDAtLjM3LS4zN0wxMjMuNzkgNDYuNDVjLjM4LS4zNy42LS4yMi4zOC4zNy00LjM1IDkuOTktMy4zNSAxNS4wOS0zLjM1IDg1LjM5em03OSAzMDhjLTE0LjY4LTM3LjA4IDEzLTc2LjkzIDUyLjUyLTc2LjYyIDE3LjQ5IDAgMjIuNiAyMy4yMSA3Ljk1IDMxLjQyLTYuMTkgMy4zLTI0Ljk1IDEuNzQtMjUuMTQgMTkuMi0uMDUgMTcuMDkgMTkuNjcgMjUgMzEuMiAyNC44OUE0NS42NCA0NS42NCAwIDAgMCAzMTIgMzkzLjQ1di0uMDhjMC0xMS42My03Ljc5LTQ3LjIyLTQ3LjU0LTU1LjM0LTcuNzItMS41NC02NS02LjM1LTY4LjM1LTUwLjUyLTMuNzQgMTYuOTMtMTcuNCA2My40OS00My4xMSA2OS4wOS04Ljc0IDEuOTQtNjkuNjggNy42NC0xMTIuOTItMzYuNzcgMCAwLTE4LjU3LTE1LjIzLTI4LjIzLTU3Ljk1LTMuMzgtMTUuNzUtOS4yOC0zOS43LTExLjE0LTYyIDAtMTggMTEuMTQtMzAuNDUgMjUuMDctMzIuMiA4MSAwIDkwIDIuMzIgMTAxLTcuOCA5LjgyLTkuMjQgNy44LTE1LjUgNy44LTEwMi43OCAxLTguMyA3Ljc5LTMwLjgxIDUzLjQxLTI0LjE0IDYgLjg2IDMxLjkxIDQuMTggMzcuNDggMzAuNjRsNjQuMjYgMTEuMTVjMjAuNDMgMy43MSA3MC45NCA3IDgwLjYgNTcuOTQgMjIuNjYgMTIxLjA5IDguOTEgMjM4LjQ2IDcuOCAyMzguNDZDMzYyLjE1IDQ4NS41MyAyNjcuMDYgNDgwIDI2Ny4wNiA0ODBjLTE4Ljk1LS4yMy01NC4yNS05LjQtNjcuMjctMzkuODN6bTgwLjk0LTIwNC44NGMtMSAxLjkyLTIuMiA2IC44NSA3IDE0LjA5IDQuOTMgMzkuNzUgNi44NCA0NS44OCA1LjUzIDMuMTEtLjI1IDMuMDUtNC40MyAyLjQ4LTYuNjUtMy41My0yMS44NS00MC44My0yNi41LTQ5LjI0LTUuOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhwZWRpdGVkc3NsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA0My40QzEzMC42IDQzLjQgMzUuNCAxMzguNiAzNS40IDI1NlMxMzAuNiA0NjguNiAyNDggNDY4LjYgNDYwLjYgMzczLjQgNDYwLjYgMjU2IDM2NS40IDQzLjQgMjQ4IDQzLjR6bS05Ny40IDEzMi45YzAtNTMuNyA0My43LTk3LjQgOTcuNC05Ny40czk3LjQgNDMuNyA5Ny40IDk3LjR2MjYuNmMwIDUtMy45IDguOS04LjkgOC45aC0xNy43Yy01IDAtOC45LTMuOS04LjktOC45di0yNi42YzAtODIuMS0xMjQtODIuMS0xMjQgMHYyNi42YzAgNS0zLjkgOC45LTguOSA4LjloLTE3LjdjLTUgMC04LjktMy45LTguOS04Ljl2LTI2LjZ6TTM4OS43IDM4MGMwIDkuNy04IDE3LjctMTcuNyAxNy43SDEyNGMtOS43IDAtMTcuNy04LTE3LjctMTcuN1YyMzguM2MwLTkuNyA4LTE3LjcgMTcuNy0xNy43aDI0OGM5LjcgMCAxNy43IDggMTcuNyAxNy43VjM4MHptLTI0OC0xMzcuM3YxMzIuOWMwIDIuNS0xLjkgNC40LTQuNCA0LjRoLTguOWMtMi41IDAtNC40LTEuOS00LjQtNC40VjI0Mi43YzAtMi41IDEuOS00LjQgNC40LTQuNGg4LjljMi41IDAgNC40IDEuOSA0LjQgNC40em0xNDEuNyA0OC43YzAgMTMtNy4yIDI0LjQtMTcuNyAzMC40djMxLjZjMCA1LTMuOSA4LjktOC45IDguOWgtMTcuN2MtNSAwLTguOS0zLjktOC45LTguOXYtMzEuNmMtMTAuNS02LjEtMTcuNy0xNy40LTE3LjctMzAuNCAwLTE5LjcgMTUuOC0zNS40IDM1LjQtMzUuNHMzNS41IDE1LjggMzUuNSAzNS40ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ3OC4zQzEyMSA0ODYuMyAxNy43IDM4MyAxNy43IDI1NlMxMjEgMjUuNyAyNDggMjUuNyA0NzguMyAxMjkgNDc4LjMgMjU2IDM3NSA0ODYuMyAyNDggNDg2LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tGIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OS4xNCAyODhsMTQuMjItOTIuNjZoLTg4Ljkxdi02MC4xM2MwLTI1LjM1IDEyLjQyLTUwLjA2IDUyLjI0LTUwLjA2aDQwLjQyVjYuMjZTMjYwLjQzIDAgMjI1LjM2IDBjLTczLjIyIDAtMTIxLjA4IDQ0LjM4LTEyMS4wOCAxMjQuNzJ2NzAuNjJIMjIuODlWMjg4aDgxLjM5djIyNGgxMDAuMTdWMjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhY2Vib29rTWVzc2VuZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Ni41NSA4QzExNi41MiA4IDggMTEwLjM0IDggMjQ4LjU3YzAgNzIuMyAyOS43MSAxMzQuNzggNzguMDcgMTc3Ljk0IDguMzUgNy41MSA2LjYzIDExLjg2IDguMDUgNTguMjNBMTkuOTIgMTkuOTIgMCAwIDAgMTIyIDUwMi4zMWM1Mi45MS0yMy4zIDUzLjU5LTI1LjE0IDYyLjU2LTIyLjdDMzM3Ljg1IDUyMS44IDUwNCA0MjMuNyA1MDQgMjQ4LjU3IDUwNCAxMTAuMzQgMzk2LjU5IDggMjU2LjU1IDh6bTE0OS4yNCAxODUuMTNsLTczIDExNS41N2EzNy4zNyAzNy4zNyAwIDAgMS01My45MSA5LjkzbC01OC4wOC00My40N2ExNSAxNSAwIDAgMC0xOCAwbC03OC4zNyA1OS40NGMtMTAuNDYgNy45My0yNC4xNi00LjYtMTcuMTEtMTUuNjdsNzMtMTE1LjU3YTM3LjM2IDM3LjM2IDAgMCAxIDUzLjkxLTkuOTNsNTguMDYgNDMuNDZhMTUgMTUgMCAwIDAgMTggMGw3OC40MS01OS4zOGMxMC40NC03Ljk4IDI0LjE0IDQuNTQgMTcuMDkgMTUuNjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFjZWJvb2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QTQ4IDQ4IDAgMCAwIDAgODB2MzUyYTQ4IDQ4IDAgMCAwIDQ4IDQ4aDEzNy4yNVYzMjcuNjloLTYzVjI1Nmg2M3YtNTQuNjRjMC02Mi4xNSAzNy05Ni40OCA5My42Ny05Ni40OCAyNy4xNCAwIDU1LjUyIDQuODQgNTUuNTIgNC44NHY2MWgtMzEuMjdjLTMwLjgxIDAtNDAuNDIgMTkuMTItNDAuNDIgMzguNzNWMjU2aDY4Ljc4bC0xMSA3MS42OWgtNTcuNzhWNDgwSDQwMGE0OCA0OCAwIDAgMCA0OC00OFY4MGE0OCA0OCAwIDAgMC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGYWNlYm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZjMCAxMjMuNzggOTAuNjkgMjI2LjM4IDIwOS4yNSAyNDVWMzI3LjY5aC02M1YyNTZoNjN2LTU0LjY0YzAtNjIuMTUgMzctOTYuNDggOTMuNjctOTYuNDggMjcuMTQgMCA1NS41MiA0Ljg0IDU1LjUyIDQuODR2NjFoLTMxLjI4Yy0zMC44IDAtNDAuNDEgMTkuMTItNDAuNDEgMzguNzNWMjU2aDY4Ljc4bC0xMSA3MS42OWgtNTcuNzhWNTAxQzQxMy4zMSA0ODIuMzggNTA0IDM3OS43OCA1MDQgMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhbnRhc3lGbGlnaHRHYW1lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzIuODZMMzIuODYgMjU2IDI1NiA0NzkuMTQgNDc5LjE0IDI1NiAyNTYgMzIuODZ6TTg4LjM0IDI1NS44M2MxLjk2LTIgMTEuOTItMTIuMyA5Ni40OS05Ny40OCA0MS40NS00MS43NSA4Ni4xOS00My43NyAxMTkuNzctMTguNjkgMjQuNjMgMTguNCA2Mi4wNiA1OC45IDYyLjE1IDU5IC42OC43NCAxLjA3IDIuODYuNTggMy4zOC0xMS4yNyAxMS44NC0yMi42OCAyMy41NC0zMy41IDM0LjY5LTM0LjIxLTMyLjMxLTQwLjUyLTM4LjI0LTQ4LjUxLTQzLjk1LTE3Ljc3LTEyLjY5LTQxLjQtMTAuMTMtNTYuOTggNS4xLTIuMTcgMi4xMy0xLjc5IDMuNDMuMTIgNS4zNSAyLjk0IDIuOTUgMjguMSAyOC4zMyAzNS4wOSAzNS43OC0xMS45NSAxMS42LTIzLjY2IDIyLjk3LTM1LjY5IDM0LjY2LTEyLjAyLTEyLjU0LTI0LjQ4LTI1LjUzLTM2LjU0LTM4LjExLTIxLjM5IDIxLjA5LTQxLjY5IDQxLjExLTYxLjg1IDYwLjk5YTQyNTY5LjAxIDQyNTY5LjAxIDAgMCAxLTQxLjEzLTQwLjcyem0yMzQuODIgMTAxLjZjLTM1LjQ5IDM1LjQzLTc4LjA5IDM4LjE0LTEwNi45OSAyMC40Ny0yMi4wOC0xMy41LTM5LjM4LTMyLjA4LTcyLjkzLTY2Ljg0IDEyLjA1LTEyLjM3IDIzLjc5LTI0LjQyIDM1LjM3LTM2LjMxIDMzLjAyIDMxLjkxIDM3LjA2IDM2LjAxIDQ0LjY4IDQyLjA5IDE4LjQ4IDE0Ljc0IDQyLjUyIDEzLjY3IDU5LjMyLTEuOCAzLjY4LTMuMzkgMy42OS0zLjY0LjE0LTcuMjQtMTAuNTktMTAuNzMtMjEuMTktMjEuNDQtMzEuNzctMzIuMTgtMS4zMi0xLjM0LTMuMDMtMi40OC0uOC00LjY5IDEwLjc5LTEwLjcxIDIxLjQ4LTIxLjUyIDMyLjIxLTMyLjI5LjI2LS4yNi42NS0uMzggMS45MS0xLjA3IDEyLjM3IDEyLjg3IDI0LjkyIDI1LjkyIDM3LjI1IDM4Ljc1IDIxLjAxLTIwLjczIDQxLjI0LTQwLjY4IDYxLjI1LTYwLjQyIDEzLjY4IDEzLjQgMjcuMTMgMjYuNTggNDAuODYgNDAuMDMtMjAuMTcgMjAuODYtODEuNjggODIuNzEtMTAwLjUgMTAxLjV6TTI1NiAwTDAgMjU2bDI1NiAyNTYgMjU2LTI1NkwyNTYgMHpNMTYgMjU2TDI1NiAxNmwyNDAgMjQwLTI0MCAyNDBMMTYgMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZGV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4NiAyODQuNWw1My4zLTU5LjloLTYyLjRsLTIxLjcgMjQuOC0yMi41LTI0LjhINDE0di0xNmg1Ni4xdi00OC4xSDMxOC45VjIzNmgtLjVjLTkuNi0xMS0yMS41LTE0LjgtMzUuNC0xNC44LTI4LjQgMC00OS44IDE5LjQtNTcuMyA0NC45LTE4LTU5LjQtOTcuNC01Ny42LTEyMS45LTE0di0yNC4ySDQ5di0yNi4yaDYwdi00MS4xSDBWMzQ1aDQ5di03Ny41aDQ4LjljLTEuNSA1LjctMi4zIDExLjgtMi4zIDE4LjIgMCA3My4xIDEwMi42IDkxLjQgMTMwLjIgMjMuN2gtNDJjLTE0LjcgMjAuOS00NS44IDguOS00NS44LTE0LjZoODUuNWMzLjcgMzAuNSAyNy40IDU2LjkgNjAuMSA1Ni45IDE0LjEgMCAyNy02LjkgMzQuOS0xOC42aC41VjM0NWgyMTIuMmwyMi4xLTI1IDIyLjMgMjVINjQwbC01NC02MC41em0tNDQ2LjctMTYuNmM2LjEtMjYuMyA0MS43LTI1LjYgNDYuNSAwaC00Ni41em0xNTMuNCA0OC45Yy0zNC42IDAtMzQtNjIuOCAwLTYyLjggMzIuNiAwIDM0LjUgNjIuOCAwIDYyLjh6bTE2Ny44IDE5LjFoLTk0LjRWMTY5LjRoOTV2MzAuMkg0MDV2MzMuOWg1NS41djI4LjFoLTU2LjF2NDQuN2g1Ni4xdjI5LjZ6bS00NS45LTM5Ljh2LTI0LjRoNTYuMXYtNDRsNTAuNyA1Ny01MC43IDU3di00NS42aC01Ni4xem0xMzguNiAxMC4zbC0yNi4xIDI5LjVINDg5bDQ1LjYtNTEuMi00NS42LTUxLjJoMzkuN2wyNi42IDI5LjMgMjUuNi0yOS4zaDM4LjVsLTQ1LjQgNTEgNDYgNTEuNGgtNDAuNWwtMjYuMy0yOS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlZG9yYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjUgMzJDMTAxLjMgMzEuNy44IDEzMS43LjQgMjU1LjRMMCA0MjUuN2E1My42IDUzLjYgMCAwIDAgNTMuNiA1My45bDE3MC4yLjRjMTIzLjcuMyAyMjQuMy05OS43IDIyNC42LTIyMy40UzM0OC43IDMyLjMgMjI1IDMyem0xNjkuOCAxNTcuMkwzMzMgMTI2LjZjMi4zLTQuNyAzLjgtOS4yIDMuOC0xNC4zdi0xLjZsNTUuMiA1Ni4xYTEwMSAxMDEgMCAwIDEgMi44IDIyLjR6TTMzMSA5NC4zYTEwNi4wNiAxMDYuMDYgMCAwIDEgNTguNSA2My44bC01NC4zLTU0LjZhMjYuNDggMjYuNDggMCAwIDAtNC4yLTkuMnpNMTE4LjEgMjQ3LjJhNDkuNjYgNDkuNjYgMCAwIDAtNy43IDExLjRsLTguNS04LjVhODUuNzggODUuNzggMCAwIDEgMTYuMi0yLjl6TTk3IDI1MS40bDExLjggMTEuOS0uOSA4YTM0Ljc0IDM0Ljc0IDAgMCAwIDIuNCAxMi41bC0yNy0yNy4yYTgwLjYgODAuNiAwIDAgMSAxMy43LTUuMnptLTE4LjIgNy40bDM4LjIgMzguNGE1My4xNyA1My4xNyAwIDAgMC0xNC4xIDQuN0w2Ny42IDI2NmExMDcgMTA3IDAgMCAxIDExLjItNy4yem0tMTUuMiA5LjhsMzUuMyAzNS41YTY3LjI1IDY3LjI1IDAgMCAwLTEwLjUgOC41TDUzLjUgMjc4YTY0LjMzIDY0LjMzIDAgMCAxIDEwLjEtOS40em0tMTMuMyAxMi4zbDM0LjkgMzVhNTYuODQgNTYuODQgMCAwIDAtNy43IDExLjRsLTM1LjgtMzUuOWMyLjgtMy44IDUuNy03LjIgOC42LTEwLjV6bS0xMSAxNC4zbDM2LjQgMzYuNmE0OC4yOSA0OC4yOSAwIDAgMC0zLjYgMTUuMmwtMzkuNS0zOS44YTk5LjgxIDk5LjgxIDAgMCAxIDYuNy0xMnptLTguOCAxNi4zbDQxLjMgNDEuOGE2My40NyA2My40NyAwIDAgMCA2LjcgMjYuMkwyNS44IDMyNmMxLjQtNC45IDIuOS05LjYgNC43LTE0LjV6bS03LjkgNDNsNjEuOSA2Mi4yYTMxLjI0IDMxLjI0IDAgMCAwLTMuNiAxNC4zdjEuMWwtNTUuNC01NS43YTg4LjI3IDg4LjI3IDAgMCAxLTIuOS0yMS45em01LjMgMzAuN2w1NC4zIDU0LjZhMjguNDQgMjguNDQgMCAwIDAgNC4yIDkuMiAxMDYuMzIgMTA2LjMyIDAgMCAxLTU4LjUtNjMuOHptLTUuMy0zN2E4MC42OSA4MC42OSAwIDAgMSAyLjEtMTdsNzIuMiA3Mi41YTM3LjU5IDM3LjU5IDAgMCAwLTkuOSA4Ljd6bTI1My4zLTUxLjhsLTQyLjYtLjEtLjEgNTZjLS4yIDY5LjMtNjQuNCAxMTUuOC0xMjUuNyAxMDIuOS01LjcgMC0xOS45LTguNy0xOS45LTI0LjJhMjQuODkgMjQuODkgMCAwIDEgMjQuNS0yNC42YzYuMyAwIDYuMyAxLjYgMTUuNyAxLjZhNTUuOTEgNTUuOTEgMCAwIDAgNTYuMS01NS45bC4xLTQ3YzAtNC41LTQuNS05LTguOS05bC0zMy42LS4xYy0zMi42LS4xLTMyLjUtNDkuNC4xLTQ5LjNsNDIuNi4xLjEtNTZhMTA1LjE4IDEwNS4xOCAwIDAgMSAxMDUuNi0xMDUgODYuMzUgODYuMzUgMCAwIDEgMjAuMiAyLjNjMTEuMiAxLjggMTkuOSAxMS45IDE5LjkgMjQgMCAxNS41LTE0LjkgMjcuOC0zMC4zIDIzLjktMjcuNC01LjktNjUuOSAxNC40LTY2IDU0LjlsLS4xIDQ3YTguOTQgOC45NCAwIDAgMCA4LjkgOWwzMy42LjFjMzIuNS4yIDMyLjQgNDkuNS0uMiA0OS40em0yMy41LS4zYTM1LjU4IDM1LjU4IDAgMCAwIDcuNi0xMS40bDguNSA4LjVhMTAyIDEwMiAwIDAgMS0xNi4xIDIuOXptMjEtNC4yTDMwOC42IDI4MGwuOS04LjFhMzQuNzQgMzQuNzQgMCAwIDAtMi40LTEyLjVsMjcgMjcuMmE3NC44OSA3NC44OSAwIDAgMS0xMy43IDUuM3ptMTgtNy40bC0zOC0zOC40YzQuOS0xLjEgOS42LTIuNCAxMy43LTQuN2wzNi4yIDM1LjljLTMuOCAyLjUtNy45IDUtMTEuOSA3LjJ6bTE1LjUtOS44bC0zNS4zLTM1LjVhNjEuMDYgNjEuMDYgMCAwIDAgMTAuNS04LjVsMzQuOSAzNWExMjQuNTYgMTI0LjU2IDAgMCAxLTEwLjEgOXptMTMuMi0xMi4zbC0zNC45LTM1YTYzLjE4IDYzLjE4IDAgMCAwIDcuNy0xMS40bDM1LjggMzUuOWExMzAuMjggMTMwLjI4IDAgMCAxLTguNiAxMC41em0xMS0xNC4zbC0zNi40LTM2LjZhNDguMjkgNDguMjkgMCAwIDAgMy42LTE1LjJsMzkuNSAzOS44YTg3LjcyIDg3LjcyIDAgMCAxLTYuNyAxMnptMTMuNS0zMC45YTE0MC42MyAxNDAuNjMgMCAwIDEtNC43IDE0LjNMMzQ1LjYgMTkwYTU4LjE5IDU4LjE5IDAgMCAwLTcuMS0yNi4yem0xLTUuNmwtNzEuOS03Mi4xYTMyIDMyIDAgMCAwIDkuOS05LjJsNjQuMyA2NC43YTkwLjkzIDkwLjkzIDAgMCAxLTIuMyAxNi42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpZ21hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDk1Ljc5MjRDMTQgNDIuODg3NyA1Ni44ODc4IDAgMTA5Ljc5MyAwSDI3NC4xNjFDMzI3LjA2NiAwIDM2OS45NTQgNDIuODg3NyAzNjkuOTU0IDk1Ljc5MjRDMzY5Ljk1NCAxMjkuMjkyIDM1Mi43NTggMTU4Ljc3NiAzMjYuNzExIDE3NS44OTdDMzUyLjc1OCAxOTMuMDE5IDM2OS45NTQgMjIyLjUwMiAzNjkuOTU0IDI1Ni4wMDJDMzY5Ljk1NCAzMDguOTA3IDMyNy4wNjYgMzUxLjc5NSAyNzQuMTYxIDM1MS43OTVIMjcyLjA4MUMyNDcuMjc5IDM1MS43OTUgMjI0LjY3OCAzNDIuMzY5IDIwNy42NjYgMzI2LjkwNFY0MTUuMTY3QzIwNy42NjYgNDY4Ljc3NyAxNjMuNjU3IDUxMiAxMTAuMzA5IDUxMkM1Ny41MzYxIDUxMiAxNCA0NjkuMjQzIDE0IDQxNi4yMDdDMTQgMzgyLjcwOSAzMS4xOTQ1IDM1My4yMjcgNTcuMjM5MiAzMzYuMTA1QzMxLjE5NDUgMzE4Ljk4MyAxNCAyODkuNSAxNCAyNTYuMDAyQzE0IDIyMi41MDIgMzEuMTk2IDE5My4wMTkgNTcuMjQyNSAxNzUuODk3QzMxLjE5NiAxNTguNzc2IDE0IDEyOS4yOTIgMTQgOTUuNzkyNFpNMTc2LjI4OCAxOTEuNTg3SDEwOS43OTNDNzQuMjE3MiAxOTEuNTg3IDQ1LjM3NzggMjIwLjQyNyA0NS4zNzc4IDI1Ni4wMDJDNDUuMzc3OCAyOTEuNDQgNzMuOTk0OCAzMjAuMTk0IDEwOS4zODEgMzIwLjQxNkMxMDkuNTE4IDMyMC40MTUgMTA5LjY1NSAzMjAuNDE1IDEwOS43OTMgMzIwLjQxNUgxNzYuMjg4VjE5MS41ODdaTTIwNy42NjYgMjU2LjAwMkMyMDcuNjY2IDI5MS41NzcgMjM2LjUwNSAzMjAuNDE3IDI3Mi4wODEgMzIwLjQxN0gyNzQuMTYxQzMwOS43MzcgMzIwLjQxNyAzMzguNTc2IDI5MS41NzcgMzM4LjU3NiAyNTYuMDAyQzMzOC41NzYgMjIwLjQyNyAzMDkuNzM3IDE5MS41ODcgMjc0LjE2MSAxOTEuNTg3SDI3Mi4wODFDMjM2LjUwNSAxOTEuNTg3IDIwNy42NjYgMjIwLjQyNyAyMDcuNjY2IDI1Ni4wMDJaTTEwOS43OTMgMzUxLjc5NUMxMDkuNjU1IDM1MS43OTUgMTA5LjUxOCAzNTEuNzk0IDEwOS4zODEgMzUxLjc5NEM3My45OTQ4IDM1Mi4wMTUgNDUuMzc3OCAzODAuNzY5IDQ1LjM3NzggNDE2LjIwN0M0NS4zNzc4IDQ1MS42NTIgNzQuNjAyNSA0ODAuNjIyIDExMC4zMDkgNDgwLjYyMkMxNDYuNTkxIDQ4MC42MjIgMTc2LjI4OCA0NTEuMTg2IDE3Ni4yODggNDE1LjE2N1YzNTEuNzk1SDEwOS43OTNaTTEwOS43OTMgMzEuMzc3OEM3NC4yMTcyIDMxLjM3NzggNDUuMzc3OCA2MC4yMTczIDQ1LjM3NzggOTUuNzkyNEM0NS4zNzc4IDEzMS4zNjggNzQuMjE3MiAxNjAuMjA3IDEwOS43OTMgMTYwLjIwN0gxNzYuMjg4VjMxLjM3NzhIMTA5Ljc5M1pNMjA3LjY2NiAxNjAuMjA3SDI3NC4xNjFDMzA5LjczNyAxNjAuMjA3IDMzOC41NzYgMTMxLjM2OCAzMzguNTc2IDk1Ljc5MjRDMzM4LjU3NiA2MC4yMTczIDMwOS43MzcgMzEuMzc3OCAyNzQuMTYxIDMxLjM3NzhIMjA3LjY2NlYxNjAuMjA3WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3hCcm93c2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4OS4zNywxNTIuODZabS01OC43NC0yOS4zN0MxMzAuNzksMTIzLjUsMTMwLjcxLDEyMy41LDEzMC42MywxMjMuNDlabTM1MS40Miw0NS4zNWMtMTAuNjEtMjUuNS0zMi4wOC01My00OC45NC02MS43MywxMy43MiwyNi44OSwyMS42Nyw1My44OCwyNC43LDc0LDAsMCwwLC4xNC4wNS40MS0yNy41OC02OC43NS03NC4zNS05Ni40Ny0xMTIuNTUtMTU2LjgzLTEuOTMtMy4wNS0zLjg2LTYuMTEtNS43NC05LjMzLTEtMS42NS0xLjg2LTMuMzQtMi42OS01LjA1QTQ0Ljg4LDQ0Ljg4LDAsMCwxLDMzMy4yNC42OWEuNjMuNjMsMCwwLDAtLjU1LS42Ni45LjksMCwwLDAtLjQ2LDBsLS4xMi4wNy0uMTguMS4xLS4xNGMtNTQuMjMsMzEuNzctNzYuNzIsODcuMzgtODIuNSwxMjIuNzhhMTMwLDEzMCwwLDAsMC00OC4zMywxMi4zMyw2LjI1LDYuMjUsMCwwLDAtMy4wOSw3Ljc1LDYuMTMsNi4xMywwLDAsMCw3Ljc5LDMuNzlsLjUyLS4yMWExMTcuODQsMTE3Ljg0LDAsMCwxLDQyLjExLTExbDEuNDItLjFjMi0uMTIsNC0uMiw2LS4yMkExMjIuNjEsMTIyLjYxLDAsMCwxLDI5MSwxNDBjLjY3LjIsMS4zMi40MiwyLC42MywxLjg5LjU3LDMuNzYsMS4yLDUuNjIsMS44NywxLjM2LjUsMi43MSwxLDQuMDUsMS41OCwxLjA5LjQ0LDIuMTguODgsMy4yNSwxLjM1cTIuNTIsMS4xMyw1LDIuMzVjLjc1LjM3LDEuNS43NCwyLjI1LDEuMTNxMi40LDEuMjYsNC43NCwyLjYzLDEuNTEuODcsMywxLjhhMTI0Ljg5LDEyNC44OSwwLDAsMSw0Mi42Niw0NC4xM2MtMTMtOS4xNS0zNi4zNS0xOC4xOS01OC44Mi0xNC4yOCw4Ny43NCw0My44Niw2NC4xOCwxOTQuOS01Ny4zOSwxODkuMmExMDguNDMsMTA4LjQzLDAsMCwxLTMxLjc0LTYuMTJjLTIuNDItLjkxLTQuOC0xLjg5LTcuMTYtMi45My0xLjM4LS42My0yLjc2LTEuMjctNC4xMi0yQzE3NC41LDM0NiwxNDkuOSwzMTYuOTIsMTQ2LjgzLDI4MS41OWMwLDAsMTEuMjUtNDEuOTUsODAuNjItNDEuOTUsNy41LDAsMjguOTMtMjAuOTIsMjkuMzMtMjctLjA5LTItNDIuNTQtMTguODctNTkuMDktMzUuMTgtOC44NS04LjcxLTEzLjA1LTEyLjkxLTE2Ljc3LTE2LjA2YTY5LjU4LDY5LjU4LDAsMCwwLTYuMzEtNC43N0ExMTMuMDUsMTEzLjA1LDAsMCwxLDE3My45Miw5N2MtMjUuMDYsMTEuNDEtNDQuNTUsMjkuNDUtNTguNzEsNDUuMzdoLS4xMmMtOS42Ny0xMi4yNS05LTUyLjY1LTguNDMtNjEuMDgtLjEyLS41My03LjIyLDMuNjgtOC4xNSw0LjMxYTE3OC41NCwxNzguNTQsMCwwLDAtMjMuODQsMjAuNDNBMjE0LDIxNCwwLDAsMCw1MS45LDEzMy4zNmwwLDBhLjA4LjA4LDAsMCwxLDAsMCwyMDUuODQsMjA1Ljg0LDAsMCwwLTMyLjczLDczLjljLS4wNi4yNy0yLjMzLDEwLjIxLTQsMjIuNDhxLS40MiwyLjg3LS43OCw1Ljc0Yy0uNTcsMy42OS0xLDcuNzEtMS40NCwxNCwwLC4yNCwwLC40OC0uMDUuNzItLjE4LDIuNzEtLjM0LDUuNDEtLjQ5LDguMTIsMCwuNDEsMCwuODIsMCwxLjI0LDAsMTM0LjcsMTA5LjIxLDI0My44OSwyNDMuOTIsMjQzLjg5LDEyMC42NCwwLDIyMC44Mi04Ny41OCwyNDAuNDMtMjAyLjYyLjQxLTMuMTIuNzQtNi4yNiwxLjExLTkuNDEsNC44NS00MS44My0uNTQtODUuNzktMTUuODItMTIyLjU1WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVmb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjUyLDI0MS40OGMtLjEyLTEuNTYtLjI0LTMuMTItLjI0LTQuNjh2LS4xMmwtLjM2LTQuNjh2LS4xMmEyNDUuODYsMjQ1Ljg2LDAsMCwwLTcuMzItNDEuMTVjMC0uMTIsMC0uMTItLjEyLS4yNGwtMS4wOC00Yy0uMTItLjI0LS4xMi0uNDgtLjI0LS42LS4zNi0xLjItLjcyLTIuNTItMS4wOC0zLjcyLS4xMi0uMjQtLjEyLS42LS4yNC0uODQtLjM2LTEuMi0uNzItMi40LTEuMDgtMy40OC0uMTItLjM2LS4yNC0uNi0uMzYtMS0uMzYtMS4yLS43Mi0yLjI4LTEuMi0zLjQ4bC0uMzYtMS4wOGMtLjM2LTEuMDgtLjg0LTIuMjgtMS4yLTMuMzZhOC4yNyw4LjI3LDAsMCwwLS4zNi0xYy0uNDgtMS4wOC0uODQtMi4yOC0xLjMyLTMuMzYtLjEyLS4yNC0uMjQtLjYtLjM2LS44NC0uNDgtMS4yLTEtMi4yOC0xLjQ0LTMuNDgsMC0uMTItLjEyLS4yNC0uMTItLjM2LTEuNTYtMy44NC0zLjI0LTcuNjgtNS0xMS40bC0uMzYtLjcyYy0uNDgtMS0uODQtMS44LTEuMzItMi42NC0uMjQtLjQ4LS40OC0xLjA4LS43Mi0xLjU2LS4zNi0uODQtLjg0LTEuNTYtMS4yLTIuNC0uMzYtLjYtLjYtMS4yLTEtMS44cy0uODQtMS40NC0xLjItMi4yOGMtLjM2LS42LS43Mi0xLjMyLTEuMDgtMS45MnMtLjg0LTEuNDQtMS4yLTIuMTZhMTguMDcsMTguMDcsMCwwLDAtMS4yLTJjLS4zNi0uNzItLjg0LTEuMzItMS4yLTJzLS44NC0xLjMyLTEuMi0yLS44NC0xLjMyLTEuMi0xLjkyLS44NC0xLjQ0LTEuMzItMi4xNmExNS42MywxNS42MywwLDAsMC0xLjItMS44TDQ2My4yLDExOWExNS42MywxNS42MywwLDAsMC0xLjItMS44Yy0uNDgtLjcyLTEuMDgtMS41Ni0xLjU2LTIuMjgtLjM2LS40OC0uNzItMS4wOC0xLjA4LTEuNTZsLTEuOC0yLjUyYy0uMzYtLjQ4LS42LS44NC0xLTEuMzItMS0xLjMyLTEuOC0yLjUyLTIuNzYtMy43MmEyNDguNzYsMjQ4Ljc2LDAsMCwwLTIzLjUxLTI2LjY0QTE4Ni44MiwxODYuODIsMCwwLDAsNDEyLDYyLjQ2Yy00LTMuNDgtOC4xNi02LjcyLTEyLjQ4LTkuODRhMTYyLjQ5LDE2Mi40OSwwLDAsMC0yNC42LTE1LjEyYy0yLjQtMS4zMi00LjgtMi41Mi03LjItMy43MmEyNTQsMjU0LDAsMCwwLTU1LjQzLTE5LjU2Yy0xLjkyLS4zNi0zLjg0LS44NC01LjY0LTEuMmgtLjEyYy0xLS4xMi0xLjgtLjM2LTIuNzYtLjQ4YTIzNi4zNSwyMzYuMzUsMCwwLDAtMzgtNEgyNTUuMTRhMjM0LjYyLDIzNC42MiwwLDAsMC00NS40OCw1Yy0zMy41OSw3LjA4LTYzLjIzLDIxLjI0LTgyLjkxLDM5LTEuMDgsMS0xLjkyLDEuNjgtMi40LDIuMTZsLS40OC40OEgxMjRsLS4xMi4xMi4xMi0uMTJhLjEyLjEyLDAsMCwwLC4xMi0uMTJsLS4xMi4xMmEuNDIuNDIsMCwwLDEsLjI0LS4xMmMxNC42NC04Ljc2LDM0LjkyLTE2LDQ5LjQ0LTE5LjU2bDUuODgtMS40NGMuMzYtLjEyLjg0LS4xMiwxLjItLjI0LDEuNjgtLjM2LDMuMzYtLjcyLDUuMTYtMS4wOC4yNCwwLC42LS4xMi44NC0uMTJDMjUwLjk0LDIwLjk0LDMxOS4zNCw0MC4xNCwzNjcsODUuNjFhMTcxLjQ5LDE3MS40OSwwLDAsMSwyNi44OCwzMi43NmMzMC4zNiw0OS4yLDI3LjQ4LDExMS4xMSwzLjg0LDE0Ny41OS0zNC40NCw1My0xMTEuMzUsNzEuMjctMTU5LDI0Ljg0YTg0LjE5LDg0LjE5LDAsMCwxLTI1LjU2LTU5LDc0LjA1LDc0LjA1LDAsMCwxLDYuMjQtMzFjMS42OC0zLjg0LDEzLjA4LTI1LjY3LDE4LjI0LTI0LjU5LTEzLjA4LTIuNzYtMzcuNTUsMi42NC01NC43MSwyOC4xOS0xNS4zNiwyMi45Mi0xNC41Miw1OC4yLTUsODMuMjhhMTMyLjg1LDEzMi44NSwwLDAsMS0xMi4xMi0zOS4yNGMtMTIuMjQtODIuNTUsNDMuMzEtMTUzLDk0LjMxLTE3MC41MS0yNy40OC0yNC05Ni40Ny0yMi4zMS0xNDcuNzEsMTUuMzYtMjkuODgsMjItNTEuMjMsNTMuMTYtNjIuNTEsOTAuMzYsMS42OC0yMC44OCw5LjYtNTIuMDgsMjUuOC04My44OC0xNy4xNiw4Ljg4LTM5LDM3LTQ5LjgsNjIuODgtMTUuNiwzNy40My0yMSw4Mi4xOS0xNi4wOCwxMjQuNzkuMzYsMy4yNC43Miw2LjM2LDEuMDgsOS42LDE5LjkyLDExNy4xMSwxMjIsMjA2LjM4LDI0NC43OCwyMDYuMzhDMzkyLjc3LDUwMy40Miw1MDQsMzkyLjE5LDUwNCwyNTUsNTAzLjg4LDI1MC40OCw1MDMuNzYsMjQ1LjkyLDUwMy41MiwyNDEuNDhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RPcmRlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMDMgOCAwIDExOS4wMyAwIDI1NnMxMTEuMDMgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMyAyNDgtMjQ4UzM4NC45NyA4IDI0OCA4em0wIDQ4OC4yMUMxMTUuMzQgNDk2LjIxIDcuNzkgMzg4LjY2IDcuNzkgMjU2UzExNS4zNCAxNS43OSAyNDggMTUuNzkgNDg4LjIxIDEyMy4zNCA0ODguMjEgMjU2IDM4MC42NiA0OTYuMjEgMjQ4IDQ5Ni4yMXptMC00NTkuOTJDMTI2LjY2IDM2LjI5IDI4LjI5IDEzNC42NiAyOC4yOSAyNTZTMTI2LjY2IDQ3NS43MSAyNDggNDc1LjcxIDQ2Ny43MSAzNzcuMzQgNDY3LjcxIDI1NiAzNjkuMzQgMzYuMjkgMjQ4IDM2LjI5em0wIDQzMS4yMmMtMTE2LjgxIDAtMjExLjUxLTk0LjY5LTIxMS41MS0yMTEuNTFTMTMxLjE5IDQ0LjQ5IDI0OCA0NC40OSA0NTkuNTEgMTM5LjE5IDQ1OS41MSAyNTYgMzY0LjgxIDQ2Ny41MSAyNDggNDY3LjUxem0xODYuMjMtMTYyLjk4YTE5MS42MTMgMTkxLjYxMyAwIDAgMS0yMC4xMyA0OC42OWwtNzQuMTMtMzUuODggNjEuNDggNTQuODJhMTkzLjUxNSAxOTMuNTE1IDAgMCAxLTM3LjIgMzcuMjlsLTU0LjgtNjEuNTcgMzUuODggNzQuMjdhMTkwLjk0NCAxOTAuOTQ0IDAgMCAxLTQ4LjYzIDIwLjIzbC0yNy4yOS03OC40NyA0Ljc5IDgyLjkzYy04LjYxIDEuMTgtMTcuNCAxLjgtMjYuMzMgMS44cy0xNy43Mi0uNjItMjYuMzMtMS44bDQuNzYtODIuNDYtMjcuMTUgNzguMDNhMTkxLjM2NSAxOTEuMzY1IDAgMCAxLTQ4LjY1LTIwLjJsMzUuOTMtNzQuMzQtNTQuODcgNjEuNjRhMTkzLjg1IDE5My44NSAwIDAgMS0zNy4yMi0zNy4yOGw2MS41OS01NC45LTc0LjI2IDM1LjkzYTE5MS42MzggMTkxLjYzOCAwIDAgMS0yMC4xNC00OC42OWw3Ny44NC0yNy4xMS04Mi4yMyA0Ljc2Yy0xLjE2LTguNTctMS43OC0xNy4zMi0xLjc4LTI2LjIxIDAtOSAuNjMtMTcuODQgMS44Mi0yNi41MWw4Mi4zOCA0Ljc3LTc3Ljk0LTI3LjE2YTE5MS43MjYgMTkxLjcyNiAwIDAgMSAyMC4yMy00OC42N2w3NC4yMiAzNS45Mi02MS41Mi01NC44NmExOTMuODUgMTkzLjg1IDAgMCAxIDM3LjI4LTM3LjIybDU0Ljc2IDYxLjUzLTM1LjgzLTc0LjE3YTE5MS40OSAxOTEuNDkgMCAwIDEgNDguNjUtMjAuMTNsMjYuODcgNzcuMjUtNC43MS04MS42MWM4LjYxLTEuMTggMTcuMzktMS44IDI2LjMyLTEuOHMxNy43MS42MiAyNi4zMiAxLjhsLTQuNzQgODIuMTYgMjcuMDUtNzcuNzZjMTcuMjcgNC41IDMzLjYgMTEuMzUgNDguNjMgMjAuMTdsLTM1LjgyIDc0LjEyIDU0LjcyLTYxLjQ3YTE5My4xMyAxOTMuMTMgMCAwIDEgMzcuMjQgMzcuMjNsLTYxLjQ1IDU0Ljc3IDc0LjEyLTM1Ljg2YTE5MS41MTUgMTkxLjUxNSAwIDAgMSAyMC4yIDQ4LjY1bC03Ny44MSAyNy4xIDgyLjI0LTQuNzVjMS4xOSA4LjY2IDEuODIgMTcuNSAxLjgyIDI2LjQ5IDAgOC44OC0uNjEgMTcuNjMtMS43OCAyNi4xOWwtODIuMTItNC43NSA3Ny43MiAyNy4wOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJzdE9yZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjkgMjI5LjJjLjEtLjEuMi0uMy4zLS40IDAgLjEgMCAuMy0uMS40aC0uMnpNMjI0IDk2LjZjLTcuMSAwLTE0LjYuNi0yMS40IDEuN2wzLjcgNjcuNC0yMi02NGMtMTQuMyAzLjctMjcuNyA5LjQtNDAgMTYuNmwyOS40IDYxLjQtNDUuMS01MC45Yy0xMS40IDguOS0yMS43IDE5LjEtMzAuNiAzMC45bDUwLjYgNDUuNC02MS4xLTI5LjdjLTcuMSAxMi4zLTEyLjkgMjUuNy0xNi42IDQwbDY0LjMgMjIuNi02OC00Yy0uOSA3LjEtMS40IDE0LjYtMS40IDIycy42IDE0LjYgMS40IDIxLjdsNjcuNy00LTY0IDIyLjZjMy43IDE0LjMgOS40IDI3LjcgMTYuNiA0MC4zbDYxLjEtMjkuN0w5Ny43IDM1MmM4LjkgMTEuNyAxOS4xIDIyLjMgMzAuOSAzMC45bDQ0LjktNTAuOS0yOS41IDYxLjRjMTIuMyA3LjQgMjUuNyAxMy4xIDQwIDE2LjlsMjIuMy02NC42LTQgNjhjNy4xIDEuMSAxNC42IDEuNyAyMS43IDEuNyA3LjQgMCAxNC42LS42IDIxLjctMS43bC00LTY4LjYgMjIuNiA2NS4xYzE0LjMtNCAyNy43LTkuNCA0MC0xNi45TDI3NC45IDMzMmw0NC45IDUwLjljMTEuNy04LjkgMjItMTkuMSAzMC42LTMwLjlsLTUwLjYtNDUuMSA2MS4xIDI5LjRjNy4xLTEyLjMgMTIuOS0yNS43IDE2LjYtNDAuM2wtNjQtMjIuMyA2Ny40IDRjMS4xLTcuMSAxLjQtMTQuMyAxLjQtMjEuN3MtLjMtMTQuOS0xLjQtMjJsLTY3LjcgNCA2NC0yMi4zYy0zLjctMTQuMy05LjEtMjgtMTYuNi00MC4zbC02MC45IDI5LjcgNTAuNi00NS40Yy04LjktMTEuNy0xOS4xLTIyLTMwLjYtMzAuOWwtNDUuMSA1MC45IDI5LjQtNjEuMWMtMTIuMy03LjQtMjUuNy0xMy4xLTQwLTE2LjlMMjQxLjcgMTY2bDQtNjcuN2MtNy4xLTEuMi0xNC4zLTEuNy0yMS43LTEuN3pNNDQzLjQgMTI4djI1NkwyMjQgNTEyIDQuNiAzODRWMTI4TDIyNCAwbDIxOS40IDEyOHptLTE3LjEgMTAuM0wyMjQgMjAuOSAyMS43IDEzOC4zdjIzNS4xTDIyNCA0OTEuMWwyMDIuMy0xMTcuN1YxMzguM3pNMjI0IDM3LjFsMTg3LjcgMTA5LjR2MjE4LjlMMjI0IDQ3NC45IDM2LjMgMzY1LjRWMTQ2LjZMMjI0IDM3LjF6bTAgNTAuOWMtOTIuMyAwLTE2Ni45IDc1LjEtMTY2LjkgMTY4IDAgOTIuNiA3NC42IDE2Ny43IDE2Ni45IDE2Ny43IDkyIDAgMTY2LjktNzUuMSAxNjYuOS0xNjcuNyAwLTkyLjktNzQuOS0xNjgtMTY2LjktMTY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcnN0ZHJhZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2MTI4SDE5MnYxMjhIMHYtMjUuNmgxNjYuNHYtMTI4aDEyOHYtMTI4SDM4NFYxOTJ6bS0yNS42IDM4LjR2MTI4aC0xMjh2MTI4SDY0VjUxMmgxOTJWMzg0aDEyOFYyMzAuNGgtMjUuNnptMjUuNiAxOTJoLTg5LjZWNTEySDMyMHYtNjRoNjR2LTI1LjZ6TTAgMHYzODRoMTI4VjI1NmgxMjhWMTI4aDEyOFYwSDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxpY2tyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0NC41IDMxOWMtMzUuMSAwLTYzLjUtMjguNC02My41LTYzLjVzMjguNC02My41IDYzLjUtNjMuNSA2My41IDI4LjQgNjMuNSA2My41LTI4LjQgNjMuNS02My41IDYzLjV6bTE1OSAwYy0zNS4xIDAtNjMuNS0yOC40LTYzLjUtNjMuNXMyOC40LTYzLjUgNjMuNS02My41IDYzLjUgMjguNCA2My41IDYzLjUtMjguNCA2My41LTYzLjUgNjMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM1OC40IDE3OS4yaC04OS42djg5LjZoLTg5LjZ2ODkuNkg4OS42VjEyMS42aDI2OC44djg5LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5Ny44IDQyNy44YzEyLjkgMTEuNyAzMy43IDMzLjMgMzMuMiA1MC43IDAgLjgtLjEgMS42LS4xIDIuNS0xLjggMTkuOC0xOC44IDMxLjEtMzkuMSAzMS0yNS0uMS0zOS45LTE2LjgtMzguNy0zNS44IDEtMTYuMiAyMC41LTM2LjcgMzIuNC00Ny42IDIuMy0yLjEgMi43LTIuNyA1LjYtMy42IDMuNCAwIDMuOS4zIDYuNyAyLjh6TTMzMS45IDY3LjNjLTE2LjMtMjUuNy0zOC42LTQwLjYtNjMuMy01Mi4xQzI0My4xIDQuNSAyMTQtLjIgMTkyIDBjLTQ0LjEgMC03MS4yIDEzLjItODEuMSAxNy4zQzU3LjMgNDUuMiAyNi41IDg3LjIgMjggMTU4LjZjNy4xIDgyLjIgOTcgMTc2IDE1NS44IDIzMy44IDEuNyAxLjYgNC41IDQuNSA2LjIgNS4xbDMuMy4xYzIuMS0uNyAxLjgtLjUgMy41LTIuMSA1Mi4zLTQ5LjIgMTQwLjctMTQ1LjggMTU1LjktMjE1LjcgNy0zOS4yIDMuMS03Mi41LTIwLjgtMTEyLjV6TTE4Ni44IDM1MS45Yy0yOC01MS4xLTY1LjItMTMwLjctNjkuMy0xODktMy40LTQ3LjUgMTEuNC0xMzEuMiA2OS4zLTEzNi43djMyNS43ek0zMjguNyAxODBjLTE2LjQgNTYuOC03Ny4zIDEyOC0xMTguOSAxNzAuM0MyMzcuNiAyOTguNCAyNzUgMjE3IDI3NyAxNTguNGMxLjYtNDUuOS05LjgtMTA1LjgtNDgtMTMxLjQgODguOCAxOC4zIDExNS41IDk4LjEgOTkuNyAxNTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udEF3ZXNvbWVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QTQ4IDQ4IDAgMCAwIDAgODBWNDMyYTQ4IDQ4IDAgMCAwIDQ4IDQ4SDQwMGE0OCA0OCAwIDAgMCA0OC00OFY4MEE0OCA0OCAwIDAgMCA0MDAgMzJabTE2IDQwMGExNiAxNiAwIDAgMS0xNiAxNkg0OGExNiAxNiAwIDAgMS0xNi0xNlY4MEExNiAxNiAwIDAgMSA0OCA2NEg0MDBhMTYgMTYgMCAwIDEgMTYgMTZaTTIwMS42IDE1MmMtMjUuNCAwLTM3LjQgMTAuNC01Ny42IDE0LjRWMTYwYTE2IDE2IDAgMCAwLTMyIDBWMzUyYTE2IDE2IDAgMCAwIDMyIDBWMTk4LjRjMjAuMi00IDMyLjItMTQuNCA1Ny42LTE0LjQgMzEuNCAwIDQzLjIgMTYgNzQuNiAxNiAxMC4yIDAgMTcuOC0xLjQgMjcuOC00LjZ2OTZjLTEwIDMuMi0xNy42IDQuNi0yNy44IDQuNi0zMS40IDAtNDMuNC0xNi03NC42LTE2YTg1LjkgODUuOSAwIDAgMC0yNS42IDR2MzJhODAgODAgMCAwIDEgMjUuNi00YzMxLjQgMCA0My4yIDE2IDc0LjYgMTYgMTguNiAwIDI4LjItNC44IDU5LjgtMTZWMTUyYy0zMS42IDExLjItNDEuMiAxNi01OS44IDE2QzI0NC44IDE2OCAyMzIuOCAxNTIgMjAxLjYgMTUyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lRmxhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDhWMzg0Yy02MyAyMy04MiAzMi0xMTkgMzItNjMgMC04Ny0zMi0xNTAtMzItMjAgMC0zNiA0LTUxIDhWMzI4YzE1LTQgMzEtOCA1MS04IDYzIDAgODcgMzIgMTUwIDMyIDIwIDAgMzUtMyA1NS05VjEzNWMtMjAgNi0zNSA5LTU1IDktNjMgMC04Ny0zMi0xNTAtMzItNTEgMC03NSAyMS0xMTUgMjlWNDQ4YTMxLjYgMzEuNiAwIDAgMS0zMiAzMkEzMS42IDMxLjYgMCAwIDEgMCA0NDhWNjRBMzEuNiAzMS42IDAgMCAxIDMyIDMyIDMxLjYgMzEuNiAwIDAgMSA2NCA2NFY3N2M0MC04IDY0LTI5IDExNS0yOSA2MyAwIDg3IDMyIDE1MCAzMkMzNjYgODAgMzg1IDcxIDQ0OCA0OFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250QXdlc29tZUxvZ29GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzOTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjA5LjcgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMTMxMS43IDIwMC40IDEyNjcuNSAxNTYuNSAxMjA5LjcgMTU2LjVabTAgMTUyLjdjLTM1LjEgMC01MS44LTI3LjQtNTEuOC01My4yIDAtMjUuOCAxNi43LTUzLjIgNTEuOC01My4yIDM1LjEgMCA1MS44IDI3LjggNTEuOCA1My4yQzEyNjEuMSAyODEuOCAxMjQ0LjggMzA5LjIgMTIwOS43IDMwOS4yWm05NjIuMS0xMzYuMWMtNC40LTEwLjktMTIuMy0xNi41LTIzLjUtMTYuNXMtMTkuMSA1LjYtMjMuNSAxNi41bC01OS40IDE0NS44Yy03LjIgMTcuNyAyLjggMjcuNCA0LjQgMjlhMjQuNiAyNC42IDAgMCAwIDE3LjUgNi44YzEwLjggMCAxOC43LTYgMjMuMS0xOC4xbDQtMTAuMWg2Ny43bDQgMTAuMWM0LjggMTIuMSAxMi4zIDE4LjEgMjMuMSAxOC4xYTI0LjYgMjQuNiAwIDAgMCAxNy41LTYuOGMxMC0xMC4xIDYuOC0yMi42IDQuNC0yOVptLTQzIDExMy42IDE5LjEtNTYgMTkuMSA1NlptLTU3NC41LTEzMC4xYy0xNC4zIDAtMjQuNyAxMC45LTI0LjcgMjUuNHY3Ni41bC02OC41LTg1LjhjLTQuNC01LjYtMTEuNi0xNi4xLTI1LjUtMTYuMS0xOS4xIDAtMjQuMyAxNy43LTI0LjMgMjUuNFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYyNTIuOGw2OC45IDg2LjJjNC44IDUuNiAxMS42IDE2LjEgMjUuNSAxNi4xIDE5LjEgMCAyMy45LTE3LjMgMjMuOS0yNS40VjE4MS45QzE1NzkgMTY3LjQgMTU2OC42IDE1Ni41IDE1NTQuMyAxNTYuNVptLTU1NC4xIDEuNkg5MTYuNWMtMTkuOSAwLTI1LjEgMTcuMy0yNS4xIDI1LjRWMzI4LjFjMCAxOS43IDE2LjcgMjUuNCAyNC43IDI1LjQgOCAwIDI0LjctNS4yIDI0LjctMjUuNFYyODVoNDQuNmMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjEtMjIuNy0yMi4xSDk0MC44VjIwMy42aDU5LjRjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMxMDIyLjkgMTYzIDEwMDcuMyAxNTguMSAxMDAwLjIgMTU4LjFabTgxNS4xIDBIMTY5MS43Yy03LjIgMC0yMi43IDQuNC0yMi43IDIyLjIgMCAxMy4zIDEwIDIyLjYgMjIuNyAyMi42aDM3VjMyNy43YzAgMTQuMSAxMC40IDI1LjQgMjQuNyAyNS40IDE0LjMgMCAyNC43LTEwLjkgMjQuNy0yNS40VjIwMi44aDM3YzEyLjcgMCAyMi43LTkuMyAyMi43LTIyLjZDMTgzNy45IDE2MyAxODIyLjQgMTU4LjEgMTgxNS4yIDE1OC4xWm0xNzg5LjUtMS42Yy05LjYgMC0xNy41IDYtMjUuMSAxOC4xbC00Ni42IDc2LjFMMzQ4Ni40IDE3NC42cS0xMC44LTE4LjEtMjUuMS0xOC4xYy0xOS41IDAtMjQuNyAxOC4xLTI0LjcgMjUuOFYzMjkuN2MwIDE0LjEgMTAuNCAyNS40IDI0LjcgMjUuNHMyNC43LTEwLjkgMjQuNy0yNS40VjI2Mi44TDM1MTAuNyAzMDIuN2M2LjQgMTAuMSAxMy45IDE1LjMgMjIuMyAxNS4zIDguOCAwIDE1LjktNS4yIDIyLjMtMTUuM2wyNC43LTM5Ljl2NjYuOWMwIDE0LjEgMTAuMyAyNS40IDI0LjcgMjUuNCAxNC4zIDAgMjQuNy0xMC45IDI0LjctMjUuNFYxODIuM0MzNjI5LjQgMTc0LjIgMzYyNC42IDE1Ni41IDM2MDQuNyAxNTYuNVptMjQ4LjYgMTQ5LjhoLTY1LjdWMjcyLjloMzkuNGMxMS45IDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS42LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuOCAwIDIyLjctOS4zIDIyLjctMjIuNkMzODc2IDMxMS4yIDM4NjAuNSAzMDYuMyAzODUzLjMgMzA2LjNaTTMyMzUgMTU2LjVjLTU3LjggMC0xMDIgNDMuOS0xMDIgOTkuMSAwIDU2IDQ0LjYgOTkuMSAxMDIgOTkuMSA1Ny40IDAgMTAyLTQzLjEgMTAyLTk5LjFDMzMzNyAyMDAuNCAzMjkyLjggMTU2LjUgMzIzNSAxNTYuNVptMCAxNTIuN2MtMzUuMSAwLTUxLjgtMjcuNC01MS44LTUzLjIgMC0yNS44IDE2LjctNTMuMiA1MS44LTUzLjIgMzUuMSAwIDUxLjggMjcuOCA1MS44IDUzLjJDMzI4Ni44IDI4MS44IDMyNzAuMSAzMDkuMiAzMjM1IDMwOS4yWk0yNTUwLjIgMTU2LjVjLTExLjIgMC0xOS4xIDUuNi0yMy4xIDE2LjVsLTM0LjMgOTQuNy0zMS41LTkyLjJjLTQuNC0xMi41LTEyLjMtMTguOS0yNC4zLTE4LjktMTEuOSAwLTE5LjkgNi40LTI0LjMgMTguOWwtMzEuNSA5Mi4yLTM0LjMtOTUuNXEtNS40LTE1LjctMjIuNy0xNS43Yy02LjggMC0xMi4zIDIuNC0xNy41IDcuMy01LjIgNS4yLTEwLjggMTQuNS00LjggMjguNmw1NS44IDE0NS44YzQgMTEuMyAxMS42IDE2LjkgMjMuMSAxNi45cTE2LjcgMCAyMi43LTE2LjlsMzMuNS05MS44IDMzLjUgOTEuOHE2IDE2LjkgMjIuNyAxNi45YzExLjIgMCAxOS4xLTUuNiAyMy4xLTE2LjlsNTUuOC0xNDUuOGMzLjYtOS4zIDQuNC0xOS4zLTQuOC0yOC42QTIzIDIzIDAgMCAwIDI1NTAuMiAxNTYuNVptNDQ0LjIgODEtMjEuOS05LjNjLTExLjktNC44LTE2LjMtOC41LTE2LjMtMTUuN3EwLTEyLjEgMTYuNy0xMi4xYzEyLjcgMCAxOS41IDcuNyAyNC4zIDEwLjkgNy4yIDUuMiAxOC4zIDYuOCAyNy45LTIgMTAuOC0xMC41IDYuOC0yMy44IDEuMi0zMC42LTEyLjMtMTQuOS0zMC4zLTIyLjItNTMuOC0yMi4yLTE5LjEgMC0zNS4xIDUuMi00Ny40IDE1LjctMTIuMyAxMC41LTE4LjcgMjQuMi0xOC43IDQxLjEgMCAyNC4yIDE1LjkgNDMuNSA0Ny44IDU3LjZsMTkuNSA4LjljMTUuOSA2LjggMTkuMSA5LjcgMTkuMSAxNy43IDAgOS4zLTYuNCAxNC4xLTE5LjUgMTQuMS0xOS4xIDAtMzQuNy0xNC45LTM2LjMtMTYuMS0xMC44LTcuMy0yMS41LTItMjYuMyAyLjgtNi44IDYuNC0xMi43IDIwLjkgMy4yIDM2LjIgNi44IDYuNCAxNS41IDExLjcgMjYuNyAxNS4zYTk0LjYgOTQuNiAwIDAgMCAzMi43IDUuNmMxOS45IDAgMzYuNy01LjIgNDkuOC0xNi4xIDEzLjEtMTAuOSAxOS41LTI1LjQgMTkuNS00My41cTAtMjAuNS0xMi0zMy44QzMwMjIuNyAyNTMuMiAzMDEwLjcgMjQ0LjMgMjk5NC40IDIzNy41Wm0tMjA2LjQgNjguOWgtNjUuN1YyNzIuOWgzOS40YzEyIDAgMjEuMS04LjkgMjEuMS0yMC45IDAtMTIuMS05LjItMjAuOS0yMS4xLTIwLjloLTM5LjRWMjA0LjhoNjIuMWMxMi44IDAgMjIuNy05LjMgMjIuNy0yMi42IDAtMTcuNy0xNS41LTIyLjItMjIuNy0yMi4yaC04Ni40Yy0xOS45IDAtMjUuMSAxNy4zLTI1LjEgMjUuNFYzMjYuNWMwIDguMSA1LjIgMjUuNCAyNS4xIDI1LjRoOTBjMTIuNyAwIDIyLjctOS4zIDIyLjctMjIuNkMyODEwLjggMzExLjIgMjc5NS4yIDMwNi4zIDI3ODggMzA2LjNaTTE3OC4zIDQ5LjFjLTUwLjUgMC03NC40IDIwLjctMTE0LjYgMjguN1Y2NUEzMS44IDMxLjggMCAxIDAgMCA2NVY0NDdhMzEuOCAzMS44IDAgMCAwIDYzLjcgMFYxNDEuNGM0MC4yLTggNjQuMS0yOC43IDExNC42LTI4LjcgNjIuNSAwIDg2IDMxLjggMTQ4LjQgMzEuOCAyMC4zIDAgMzUuNC0yLjggNTUuMy05LjJ2MTkxYy0xOS45IDYuNC0zNSA5LjItNTUuMyA5LjItNjIuNSAwLTg2LjQtMzEuOC0xNDguNC0zMS44LTIwLjMgMC0zNi4yIDMuNi01MC45IDhWMzc1LjRhMTU5LjEgMTU5LjEgMCAwIDEgNTAuOS04YzYyLjUgMCA4NiAzMS44IDE0OC40IDMxLjggMzcgMCA1Ni4xLTkuNiAxMTktMzEuOFY0OS4xQzM4Mi44IDcxLjQgMzYzLjcgODAuOSAzMjYuNyA4MC45IDI2NC4yIDgwLjkgMjQwLjQgNDkuMSAxNzguMyA0OS4xWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbnRBd2Vzb21lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwVjQzMmE0OCA0OCAwIDAgMCA0OCA0OEg0MDBhNDggNDggMCAwIDAgNDgtNDhWODBBNDggNDggMCAwIDAgNDAwIDMyWk0zMzYgMzEyYy0zMS42IDExLjItNDEuMiAxNi01OS44IDE2LTMxLjQgMC00My4yLTE2LTc0LjYtMTZhODAgODAgMCAwIDAtMjUuNiA0VjI4NGE4NS45IDg1LjkgMCAwIDEgMjUuNi00YzMxLjIgMCA0My4yIDE2IDc0LjYgMTYgMTAuMiAwIDE3LjgtMS40IDI3LjgtNC42di05NmMtMTAgMy4yLTE3LjYgNC42LTI3LjggNC42LTMxLjQgMC00My4yLTE2LTc0LjYtMTYtMjUuNCAwLTM3LjQgMTAuNC01Ny42IDE0LjRWMzUyYTE2IDE2IDAgMCAxLTMyIDBWMTYwYTE2IDE2IDAgMCAxIDMyIDB2Ni40YzIwLjItNCAzMi4yLTE0LjQgNTcuNi0xNC40IDMxLjIgMCA0My4yIDE2IDc0LjYgMTYgMTguNiAwIDI4LjItNC44IDU5LjgtMTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udGljb25zRmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE0LjQgMjI0aDkyLjRsLTE1LjIgNTEuMmgtNzYuNFY0MzNjMCA4LTIuOCA5LjIgNC40IDEwbDU5LjYgNS42VjQ4M0gwdi0zNS4ybDI5LjItMi44YzcuMi0uOCA5LjItMy4yIDkuMi0xMC44VjI3OC40YzAtMy4yLTQtMy4yLTgtMy4ySDBWMjI0aDM4LjR2LTI4LjhjMC02OCAzNi40LTk2IDEwNi05NiA0Ni44IDAgODguOCAxMS4yIDg4LjggNzIuNGwtNjkuNiA4LjRjLjQtMjUuNi02LTMxLjYtMjIuNC0zMS42LTI1LjIgMC0yNiAxMy42LTI2IDM3LjZ2MzJjMCAzLjItNC44IDYtLjggNnpNMzg0IDQ4M0gyNDMuMnYtMzQuNGwyOC0zLjZjNy4yLS44IDEwLjQtMi40IDEwLjQtMTBWMjg3YzAtNS42LTQtOS4yLTkuMi0xMC44bC0zMy4yLTguOCA5LjItNDAuNGgxMTB2MjA4YzAgOC0zLjYgOC44IDQgMTBsMjEuNiAzLjZWNDgzem0tMzAtMzQ3LjJsMTIuNCA0NS42LTEwIDEwLTQyLjgtMjIuOC00Mi44IDIyLjgtMTAtMTAgMTIuNC00NS42LTMwLTM2LjQgNC44LTEwaDM4TDMwNy4yIDUxSDMyMGwyMS4yIDM4LjRoMzhsNC44IDEzLjItMzAgMzMuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb250aWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMyem0xODcgMTQwLjljLTE4LjQgMC0xOSA5LjktMTkgMjcuNHYyMy4zYzAgMi40LTMuNSA0LjQtLjYgNC40aDY3LjRsLTExLjEgMzcuM0gxNjh2MTEyLjljMCA1LjgtMiA2LjcgMy4yIDcuM2w0My41IDQuMXYyNS4xSDg0VjM4OWwyMS4zLTJjNS4yLS42IDYuNy0yLjMgNi43LTcuOVYyNjcuN2MwLTIuMy0yLjktMi4zLTUuOC0yLjNIODRWMjI4aDI4di0yMWMwLTQ5LjYgMjYuNS03MCA3Ny4zLTcwIDM0LjEgMCA2NC43IDguMiA2NC43IDUyLjhsLTUwLjcgNi4xYy4zLTE4LjctNC40LTIzLTE2LjMtMjN6bTc0LjMgMjQxLjh2LTI1LjFsMjAuNC0yLjZjNS4yLS42IDcuNi0xLjcgNy42LTcuM1YyNzEuOGMwLTQuMS0yLjktNi43LTYuNy03LjlsLTI0LjItNi40IDYuNy0yOS41aDgwLjJ2MTUxLjdjMCA1LjgtMi42IDYuNCAyLjkgNy4zbDE1LjcgMi42djI1LjF6bTgwLjgtMjU1LjVsOSAzMy4yLTcuMyA3LjMtMzEuMi0xNi42LTMxLjIgMTYuNi03LjMtNy4zIDktMzMuMi0yMS44LTI0LjIgMy41LTkuNmgyNy43bDE1LjUtMjhoOS4zbDE1LjUgMjhoMjcuN2wzLjUgOS42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnRBd2Vzb21lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAyMzcuNGgtMjIuMmMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43SDIwOGMyLjEgMCAzLjctMS42IDMuNy0zLjd2LTUxLjdjMC0yLjEtMS42LTMuNy0zLjctMy43em0xMTguMiAwSDMwNGMtMi4xIDAtMy43IDEuNi0zLjcgMy43djUxLjdjMCAyLjEgMS42IDMuNyAzLjcgMy43aDIyLjJjMi4xIDAgMy43LTEuNiAzLjctMy43di01MS43Yy0uMS0yLjEtMS43LTMuNy0zLjctMy43em0xMzItMTI1LjFjLTIuMy0zLjItNC42LTYuNC03LjEtOS41LTkuOC0xMi41LTIwLjgtMjQtMzIuOC0zNC40LTQuNS0zLjktOS4xLTcuNi0xMy45LTExLjItMS42LTEuMi0zLjItMi4zLTQuOC0zLjVDMzcyIDM0LjEgMzQwLjMgMjAgMzA2IDEzYy0xNi4yLTMuMy0zMi45LTUtNTAtNXMtMzMuOSAxLjctNTAgNWMtMzQuMyA3LjEtNjYgMjEuMi05My4zIDQwLjgtMS42IDEuMS0zLjIgMi4zLTQuOCAzLjUtNC44IDMuNi05LjQgNy4zLTEzLjkgMTEuMi0zIDIuNi01LjkgNS4zLTguOCA4cy01LjcgNS41LTguNCA4LjRjLTUuNSA1LjctMTAuNyAxMS44LTE1LjYgMTgtMi40IDMuMS00LjggNi4zLTcuMSA5LjVDMjUuMiAxNTMgOC4zIDIwMi41IDguMyAyNTZjMCAyIC4xIDQgLjEgNiAuMS43LjEgMS4zLjEgMiAuMSAxLjMuMSAyLjcuMiA0IDAgLjguMSAxLjUuMSAyLjMgMCAxLjMuMSAyLjUuMiAzLjcuMS44LjEgMS42LjIgMi40LjEgMS4xLjIgMi4zLjMgMy41IDAgLjguMSAxLjYuMiAyLjQuMSAxLjIuMyAyLjQuNCAzLjYuMS44LjIgMS41LjMgMi4zLjEgMS4zLjMgMi42LjUgMy45LjEuNi4yIDEuMy4zIDEuOWwuOSA1LjdjLjEuNi4yIDEuMS4zIDEuNy4zIDEuMy41IDIuNy44IDQgLjIuOC4zIDEuNi41IDIuNC4yIDEgLjUgMi4xLjcgMy4yLjIuOS40IDEuNy42IDIuNi4yIDEgLjQgMiAuNyAzIC4yLjkuNSAxLjguNyAyLjcuMyAxIC41IDEuOS44IDIuOS4zLjkuNSAxLjguOCAyLjcuMi45LjUgMS45LjggMi44cy41IDEuOC44IDIuN2MuMyAxIC42IDEuOS45IDIuOC42IDEuNiAxLjEgMy4zIDEuNyA0LjkuNCAxIC43IDEuOSAxIDIuOC4zIDEgLjcgMiAxLjEgMyAuMy44LjYgMS41LjkgMi4zbDEuMiAzYy4zLjcuNiAxLjUuOSAyLjIuNCAxIC45IDIgMS4zIDNsLjkgMi4xYy41IDEgLjkgMiAxLjQgMyAuMy43LjYgMS4zLjkgMiAuNSAxIDEgMi4xIDEuNSAzLjEuMi42LjUgMS4xLjggMS43LjYgMS4xIDEuMSAyLjIgMS43IDMuMy4xLjIuMi4zLjMuNSAyLjIgNC4xIDQuNCA4LjIgNi44IDEyLjIuMi40LjUuOC43IDEuMi43IDEuMSAxLjMgMi4yIDIgMy4zLjMuNS42LjkuOSAxLjQuNiAxLjEgMS4zIDIuMSAyIDMuMi4zLjUuNi45LjkgMS40LjcgMS4xIDEuNCAyLjEgMi4xIDMuMi4yLjQuNS44LjggMS4yLjcgMS4xIDEuNSAyLjIgMi4zIDMuMy4yLjIuMy41LjUuNyAzNy41IDUxLjcgOTQuNCA4OC41IDE2MCA5OS40LjkuMSAxLjcuMyAyLjYuNCAxIC4yIDIuMS40IDMuMS41czEuOS4zIDIuOC40YzEgLjIgMiAuMyAzIC40LjkuMSAxLjkuMiAyLjkuM3MxLjkuMiAyLjkuMyAyLjEuMiAzLjEuM2MuOS4xIDEuOC4xIDIuNy4yIDEuMS4xIDIuMy4xIDMuNC4yLjggMCAxLjcuMSAyLjUuMSAxLjMgMCAyLjYuMSAzLjkuMS43LjEgMS40LjEgMi4xLjEgMiAuMSA0IC4xIDYgLjFzNC0uMSA2LS4xYy43IDAgMS40LS4xIDIuMS0uMSAxLjMgMCAyLjYgMCAzLjktLjEuOCAwIDEuNy0uMSAyLjUtLjEgMS4xLS4xIDIuMy0uMSAzLjQtLjIuOSAwIDEuOC0uMSAyLjctLjIgMS0uMSAyLjEtLjIgMy4xLS4zczEuOS0uMiAyLjktLjNjLjktLjEgMS45LS4yIDIuOS0uM3MyLS4zIDMtLjQgMS45LS4zIDIuOC0uNGMxLS4yIDIuMS0uMyAzLjEtLjUuOS0uMSAxLjctLjMgMi42LS40IDY1LjYtMTEgMTIyLjUtNDcuNyAxNjAuMS0xMDIuNC4yLS4yLjMtLjUuNS0uNy44LTEuMSAxLjUtMi4yIDIuMy0zLjMuMi0uNC41LS44LjgtMS4yLjctMS4xIDEuNC0yLjEgMi4xLTMuMi4zLS41LjYtLjkuOS0xLjQuNi0xLjEgMS4zLTIuMSAyLTMuMi4zLS41LjYtLjkuOS0xLjQuNy0xLjEgMS4zLTIuMiAyLTMuMy4yLS40LjUtLjguNy0xLjIgMi40LTQgNC42LTguMSA2LjgtMTIuMi4xLS4yLjItLjMuMy0uNS42LTEuMSAxLjEtMi4yIDEuNy0zLjMuMi0uNi41LTEuMS44LTEuNy41LTEgMS0yLjEgMS41LTMuMS4zLS43LjYtMS4zLjktMiAuNS0xIDEtMiAxLjQtM2wuOS0yLjFjLjUtMSAuOS0yIDEuMy0zIC4zLS43LjYtMS41LjktMi4ybDEuMi0zYy4zLS44LjYtMS41LjktMi4zLjQtMSAuNy0yIDEuMS0zcy43LTEuOSAxLTIuOGMuNi0xLjYgMS4yLTMuMyAxLjctNC45LjMtMSAuNi0xLjkuOS0yLjhzLjUtMS44LjgtMi43Yy4yLS45LjUtMS45LjgtMi44cy42LTEuOC44LTIuN2MuMy0xIC41LTEuOS44LTIuOS4yLS45LjUtMS44LjctMi43LjItMSAuNS0yIC43LTMgLjItLjkuNC0xLjcuNi0yLjYuMi0xIC41LTIuMS43LTMuMi4yLS44LjMtMS42LjUtMi40LjMtMS4zLjYtMi43LjgtNCAuMS0uNi4yLTEuMS4zLTEuN2wuOS01LjdjLjEtLjYuMi0xLjMuMy0xLjkuMS0xLjMuMy0yLjYuNS0zLjkuMS0uOC4yLTEuNS4zLTIuMy4xLTEuMi4zLTIuNC40LTMuNiAwLS44LjEtMS42LjItMi40LjEtMS4xLjItMi4zLjMtMy41LjEtLjguMS0xLjYuMi0yLjQuMSAxLjcuMS41LjItLjcgMC0uOC4xLTEuNS4xLTIuMy4xLTEuMy4yLTIuNy4yLTQgLjEtLjcuMS0xLjMuMS0yIC4xLTIgLjEtNCAuMS02IDAtNTMuNS0xNi45LTEwMy00NS44LTE0My43ek00NDggMzcxLjVjLTkuNCAxNS41LTIwLjYgMjkuOS0zMy42IDQyLjktMjAuNiAyMC42LTQ0LjUgMzYuNy03MS4yIDQ4LTEzLjkgNS44LTI4LjIgMTAuMy00Mi45IDEzLjJ2LTc1LjhjMC01OC42LTg4LjYtNTguNi04OC42IDB2NzUuOGMtMTQuNy0yLjktMjktNy4zLTQyLjktMTMuMi0yNi43LTExLjMtNTAuNi0yNy40LTcxLjItNDgtMTMtMTMtMjQuMi0yNy40LTMzLjYtNDIuOXYtNzEuM2MwLTIuMSAxLjYtMy43IDMuNy0zLjdoMjIuMWMyLjEgMCAzLjcgMS42IDMuNyAzLjdWMzI2aDI5LjZWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4xYzIuMSAwIDMuNyAxLjYgMy43IDMuN3YyNS45aDI5LjVWMTgyYzAtMi4xIDEuNi0zLjcgMy43LTMuN0gyMDhjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC00LjggNi41LTMuNyA5LjUtMy43Vjg4LjFjLTQuNC0yLTcuNC02LjctNy40LTExLjUgMC0xNi44IDI1LjQtMTYuOCAyNS40IDAgMCA0LjgtMyA5LjQtNy40IDExLjVWOTJjNi4zLTEuNCAxMi43LTIuMyAxOS4yLTIuMyA5LjQgMCAxOC40IDMuNSAyNi4zIDMuNSA3LjIgMCAxNS4yLTMuNSAxOS40LTMuNSAyLjEgMCAzLjcgMS42IDMuNyAzLjd2NDguNGMwIDUuNi0xOC43IDYuNS0yMi40IDYuNS04LjYgMC0xNi42LTMuNS0yNS40LTMuNS03IDAtMTQuMSAxLjItMjAuOCAyLjh2MzAuN2MzIDAgOS41LTEuMSA5LjUgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjJjMi4xIDAgMy43IDEuNiAzLjcgMy43djI1LjloMjkuNVYxODJjMC0yLjEgMS42LTMuNyAzLjctMy43aDIyLjFjMi4xIDAgMy43IDEuNiAzLjcgMy43djE0NGgyOS41di0yNS44YzAtMi4xIDEuNi0zLjcgMy43LTMuN2gyMi4yYzIuMSAwIDMuNyAxLjYgMy43IDMuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J0QXdlc29tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODkuMiAyODcuOWgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMmgtMzYuNlYxNDYuMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42di0zMmMwLTIuNi0yLTQuNi00LjYtNC42aC0yNy40Yy0yLjYgMC00LjYgMi00LjYgNC42djMyaC0zNi42di0zMmMwLTYtOC00LjYtMTEuNy00LjZ2LTM4YzguMy0yIDE3LjEtMy40IDI1LjctMy40IDEwLjkgMCAyMC45IDQuMyAzMS40IDQuMyA0LjYgMCAyNy43LTEuMSAyNy43LTh2LTYwYzAtMi42LTItNC42LTQuNi00LjYtNS4xIDAtMTUuMSA0LjMtMjQgNC4zLTkuNyAwLTIwLjktNC4zLTMyLjYtNC4zLTggMC0xNiAxLjEtMjMuNyAyLjl2LTQuOWM1LjQtMi42IDkuMS04LjMgOS4xLTE0LjMgMC0yMC43LTMxLjQtMjAuOC0zMS40IDAgMCA2IDMuNyAxMS43IDkuMSAxNC4zdjExMS43Yy0zLjcgMC0xMS43LTEuNC0xMS43IDQuNnYzMmgtMzYuNnYtMzJjMC0yLjYtMi00LjYtNC42LTQuNmgtMjcuNGMtMi42IDAtNC42IDItNC42IDQuNnYzMkgxMjh2LTMyYzAtMi42LTItNC42LTQuNi00LjZIOTZjLTIuNiAwLTQuNiAyLTQuNiA0LjZ2MTc4LjNINTQuOHYtMzJjMC0yLjYtMi00LjYtNC42LTQuNkgyMi44Yy0yLjYgMC00LjYgMi00LjYgNC42VjUxMmgxODIuOXYtOTZjMC03Mi42IDEwOS43LTcyLjYgMTA5LjcgMHY5NmgxODIuOVYyOTIuNWMuMS0yLjYtMS45LTQuNi00LjUtNC42em0tMjg4LjEtNC41YzAgMi42LTIgNC42LTQuNiA0LjZoLTI3LjRjLTIuNiAwLTQuNi0yLTQuNi00LjZ2LTY0YzAtMi42IDItNC42IDQuNi00LjZoMjcuNGMyLjYgMCA0LjYgMiA0LjYgNC42djY0em0xNDYuNCAwYzAgMi42LTIgNC42LTQuNiA0LjZoLTI3LjRjLTIuNiAwLTQuNi0yLTQuNi00LjZ2LTY0YzAtMi42IDItNC42IDQuNi00LjZoMjcuNGMyLjYgMCA0LjYgMiA0LjYgNC42djY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvcnVtYmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOCAzMDkuN0MyIDI5Mi43IDAgMjc1LjUgMCAyNTguMyAwIDEzNSA5OS44IDM1IDIyMy4xIDM1YzE2LjYgMCAzMy4zIDIgNDkuMyA1LjVDMTQ5IDg3LjUgNTEuOSAxODYgNS44IDMwOS43em0zOTIuOS0xODkuMkMzODUgMTAzIDM2OSA4Ny44IDM1MC45IDc1LjJjLTE0OS42IDQ0LjMtMjY2LjMgMTYyLjEtMzA5LjcgMzEyIDEyLjUgMTguMSAyOCAzNS42IDQ1LjIgNDkgNDMuMS0xNTEuMyAxNjEuMi0yNzEuNyAzMTIuMy0zMTUuN3ptMTUuOCAyNTIuN2MxNS4yLTI1LjEgMjUuNC01My43IDI5LjUtODIuOC03OS40IDQyLjktMTQ1IDExMC42LTE4Ny42IDE5MC4zIDMwLTQuNCA1OC45LTE1LjMgODQuNi0zMS4zIDM1IDEzLjEgNzAuOSAyNC4zIDEwNyAzMy42LTkuMy0zNi41LTIwLjQtNzQuNS0zMy41LTEwOS44em0yOS43LTE0NS41Yy0yLjYtMTkuNS03LjktMzguNy0xNS44LTU2LjhDMjkwLjUgMjE2LjcgMTgyIDMyNy41IDEzNy4xIDQ2NmMxOC4xIDcuNiAzNyAxMi41IDU2LjYgMTUuMkMyNDAgMzY3LjEgMzMwLjUgMjc0LjQgNDQ0LjIgMjI3Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm91cnNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzY4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMuMSAzSDQ5LjlDMTIuNCAzIDAgMzEuMyAwIDQ5LjF2NDMzLjhjMCAyMC4zIDEyLjEgMjcuNyAxOC4yIDMwLjEgNi4yIDIuNSAyMi44IDQuNiAzMi45LTcuMUMxODAgMzU2LjUgMTgyLjIgMzU0IDE4Mi4yIDM1NGMzLjEtMy40IDMuNC0zLjEgNi44LTMuMWg4My40YzM1LjEgMCA0MC42LTI1LjIgNDQuMy0zOS43bDQ4LjYtMjQzQzM3My44IDI1LjggMzYzLjEgMyAzMjMuMSAzem0tMTYuMyA3My44bC0xMS40IDU5LjdjLTEuMiA2LjUtOS41IDEzLjItMTYuOSAxMy4ySDE3Mi4xYy0xMiAwLTIwLjYgOC4zLTIwLjYgMjAuM3YxM2MwIDEyIDguNiAyMC42IDIwLjYgMjAuNmg5MC40YzguMyAwIDE2LjYgOS4yIDE0LjggMTguMi0xLjggOC45LTEwLjUgNTMuOC0xMS40IDU4LjgtLjkgNC45LTYuOCAxMy41LTE2LjkgMTMuNWgtNzMuNWMtMTMuNSAwLTE3LjIgMS44LTI2LjUgMTIuNiAwIDAtOC45IDExLjQtODkuNSAxMDguMy0uOS45LTEuOC42LTEuOC0uM1Y3NS45YzAtNy43IDYuOC0xNi42IDE2LjYtMTYuNmgyMTljOC4yIDAgMTUuNiA3LjcgMTMuNSAxNy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVDb2RlQ2FtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ny4yMiw5Ni4yMWMxMC4zNi0xMC42NSwxNi0xNy4xMiwxNi0yMS45LDAtMi43Ni0xLjkyLTUuNTEtMy44My03LjQyQTE0LjgxLDE0LjgxLDAsMCwwLDEwMSw2NC4wNWMtOC40OCwwLTIwLjkyLDguNzktMzUuODQsMjUuNjlDMjMuNjgsMTM3LDIuNTEsMTgyLjgxLDMuMzcsMjUwLjM0czE3LjQ3LDExNyw1NC4wNiwxNjEuODdDNzYuMjIsNDM1Ljg2LDkwLjYyLDQ0OCwxMDAuOSw0NDhhMTMuNTUsMTMuNTUsMCwwLDAsOC4zNy0zLjg0YzEuOTEtMi43NiwzLjgxLTUuNjMsMy44MS04LjM4LDAtNS42My0zLjg2LTEyLjItMTMuMi0yMC41NS00NC40NS00Mi4zMy02Ny4zMi05Ny02Ny40OC0xNjVDMzIuMjUsMTg4LjgsNTQsMTM3LjgzLDk3LjIyLDk2LjIxWk0yMzkuNDcsNDIwLjA3Yy41OC4zNy45MS41NS45MS41NVptOTMuNzkuNTUuMTctLjEzQzMzMy4yNCw0MjAuNjIsMzMzLjE3LDQyMC42NywzMzMuMjYsNDIwLjYyWm0zLjEzLTE1OC4xOGMtMTYuMjQtNC4xNSw1MC40MS04Mi44OS02OC4wNS0xNzcuMTcsMCwwLDE1LjU0LDQ5LjM4LTYyLjgzLDE1OS41Ny03NC4yNywxMDQuMzUsMjMuNDYsMTY4LjczLDM0LDE3NS4yMy02LjczLTQuMzUtNDcuNC0zNS43LDkuNTUtMTI4LjY0LDExLTE4LjMsMjUuNTMtMzQuODcsNDMuNS03Mi4xNiwwLDAsMTUuOTEsMjIuNDUsNy42LDcxLjEzQzI4Ny43LDM2NCwzNTQsMzQyLjkxLDM1NSwzNDMuOTRjMjIuNzUsMjYuNzgtMTcuNzIsNzMuNTEtMjEuNTgsNzYuNTUsNS40OS0zLjY1LDExNy43MS03OCwzMy0xODguMUMzNjAuNDMsMjM4LjQsMzUyLjYyLDI2Ni41OSwzMzYuMzksMjYyLjQ0Wk01MTAuODgsODkuNjlDNDk2LDcyLjc5LDQ4My41Miw2NCw0NzUsNjRhMTQuODEsMTQuODEsMCwwLDAtOC4zOSwyLjg0Yy0xLjkxLDEuOTEtMy44Myw0LjY2LTMuODMsNy40MiwwLDQuNzgsNS42LDExLjI2LDE2LDIxLjksNDMuMjMsNDEuNjEsNjUsOTIuNTksNjQuODIsMTU0LjA2LS4xNiw2OC0yMywxMjIuNjMtNjcuNDgsMTY1LTkuMzQsOC4zNS0xMy4xOCwxNC45Mi0xMy4yLDIwLjU1LDAsMi43NSwxLjksNS42MiwzLjgxLDguMzhBMTMuNjEsMTMuNjEsMCwwLDAsNDc1LjEsNDQ4YzEwLjI4LDAsMjQuNjgtMTIuMTMsNDMuNDctMzUuNzksMzYuNTktNDQuODUsNTMuMTQtOTQuMzgsNTQuMDYtMTYxLjg3UzU1Mi4zMiwxMzcsNTEwLjg4LDg5LjY5WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyZWVic2QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAzLjcgOTYuMmMxMS4xLTExLjEgMTE1LjUtNzcgMTM5LjItNTMuMiAyMy43IDIzLjctNDIuMSAxMjguMS01My4yIDEzOS4yLTExLjEgMTEuMS0zOS40LjktNjMuMS0yMi45LTIzLjgtMjMuNy0zNC4xLTUyLTIyLjktNjMuMXpNMTA5LjkgNjguMUM3My42IDQ3LjUgMjIgMjQuNiA1LjYgNDEuMWMtMTYuNiAxNi42IDcuMSA2OS40IDI3LjkgMTA1LjcgMTguNS0zMi4yIDQ0LjgtNTkuMyA3Ni40LTc4Ljd6TTQwNi43IDE3NGMzLjMgMTEuMyAyLjcgMjAuNy0yLjcgMjYuMS0yMC4zIDIwLjMtODcuNS0yNy0xMDkuMy03MC4xLTE4LTMyLjMtMTEuMS01My40IDE0LjktNDguNyA1LjctMy42IDEyLjMtNy42IDE5LjYtMTEuNi0yOS44LTE1LjUtNjMuNi0yNC4zLTk5LjUtMjQuMy0xMTkuMSAwLTIxNS42IDk2LjUtMjE1LjYgMjE1LjYgMCAxMTkgOTYuNSAyMTUuNiAyMTUuNiAyMTUuNlM0NDUuMyAzODAuMSA0NDUuMyAyNjFjMC0zOC40LTEwLjEtNzQuNS0yNy43LTEwNS44LTMuOSA3LTcuNiAxMy4zLTEwLjkgMTguOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdWxjcnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk1Ljc1IDE2NC4xNGwtMzUuMzggNDMuNTVMMjUgMTY0LjE0bDM1LjM4LTQzLjU1ek0xNDQuMjMgMGwtMjAuNTQgMTk4LjE4TDcyLjcyIDI1Nmw1MSA1Ny44MkwxNDQuMjMgNTEyVjMwMC44OUwxMDMuMTUgMjU2bDQxLjA4LTQ0Ljg5em03OS42NyAxNjQuMTRsMzUuMzggNDMuNTUgMzUuMzgtNDMuNTUtMzUuMzgtNDMuNTV6bS00OC40OCA0N0wyMTYuNSAyNTZsLTQxLjA4IDQ0Ljg5VjUxMkwxOTYgMzEzLjgyIDI0NyAyNTZsLTUxLTU3LjgyTDE3NS40MiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDUwNEMxMTEuMjUgNTA0IDAgMzkyLjc1IDAgMjU2UzExMS4yNSA4IDI0OCA4czI0OCAxMTEuMjUgMjQ4IDI0OC0xMTEuMjUgMjQ4LTI0OCAyNDh6bTAtNDc5LjQ3QzEyMC4zNyAyNC41MyAxNi41MyAxMjguMzcgMTYuNTMgMjU2UzEyMC4zNyA0ODcuNDcgMjQ4IDQ4Ny40NyA0NzkuNDcgMzgzLjYzIDQ3OS40NyAyNTYgMzc1LjYzIDI0LjUzIDI0OCAyNC41M3ptMjcuNjIgMjEuODF2MjQuNjJhMTg1LjkzMyAxODUuOTMzIDAgMCAxIDgzLjU3IDM0LjU0bDE3LjM5LTE3LjM2Yy0yOC43NS0yMi4wNi02My4zLTM2Ljg5LTEwMC45Ni00MS44em0tNTUuMzcuMDdjLTM3LjY0IDQuOTQtNzIuMTYgMTkuOC0xMDAuODggNDEuODVsMTcuMjggMTcuMzZoLjA4YzI0LjA3LTE3Ljg0IDUyLjU1LTMwLjA2IDgzLjUyLTM0LjY3VjQ2LjQxem0xMi4yNSA1MC4xN3Y4Mi44N2MtMTAuMDQgMi4wMy0xOS40MiA1Ljk0LTI3LjY3IDExLjQybC01OC42Mi01OC41OS0yMS45MyAyMS45MyA1OC42NyA1OC42N2MtNS40NyA4LjIzLTkuNDUgMTcuNTktMTEuNDcgMjcuNjJoLTgyLjl2MzFoODIuOWMyLjAyIDEwLjAyIDYuMDEgMTkuMzEgMTEuNDcgMjcuNTRsLTU4LjY3IDU4LjY5IDIxLjkzIDIxLjkzIDU4LjYyLTU4LjYyYTc3Ljg3MyA3Ny44NzMgMCAwIDAgMjcuNjcgMTEuNDd2ODIuOWgzMXYtODIuOWMxMC4wNS0yLjAzIDE5LjM3LTYuMDYgMjcuNjItMTEuNTVsNTguNjcgNTguNjkgMjEuOTMtMjEuOTMtNTguNjctNTguNjljNS40Ni04LjIzIDkuNDctMTcuNTIgMTEuNS0yNy41NGg4Mi44N3YtMzFoLTgyLjg3Yy0yLjAyLTEwLjAyLTYuMDMtMTkuMzgtMTEuNS0yNy42Mmw1OC42Ny01OC42Ny0yMS45My0yMS45My01OC42NyA1OC42N2MtOC4yNS01LjQ5LTE3LjU3LTkuNDctMjcuNjItMTEuNVY5Ni41OGgtMzF6bTE4My4yNCAzMC43MmwtMTcuMzYgMTcuMzZhMTg2LjMzNyAxODYuMzM3IDAgMCAxIDM0LjY3IDgzLjY3aDI0LjYyYy00Ljk1LTM3LjY5LTE5LjgzLTcyLjI5LTQxLjkzLTEwMS4wM3ptLTMzNS41NS4xM2MtMjIuMDYgMjguNzItMzYuOTEgNjMuMjYtNDEuODUgMTAwLjkxaDI0LjY1YzQuNi0zMC45NiAxNi43Ni01OS40NSAzNC41OS04My41MmwtMTcuMzktMTcuMzl6TTM4LjM0IDI4My42N2M0LjkyIDM3LjY0IDE5Ljc1IDcyLjE4IDQxLjggMTAwLjlsMTcuMzYtMTcuMzljLTE3LjgxLTI0LjA3LTI5LjkyLTUyLjU3LTM0LjUxLTgzLjUySDM4LjM0em0zOTQuNyAwYy00LjYxIDMwLjk5LTE2LjggNTkuNS0zNC42NyA4My42bDE3LjM2IDE3LjM2YzIyLjA4LTI4Ljc0IDM2Ljk4LTYzLjI5IDQxLjkzLTEwMC45NmgtMjQuNjJ6TTEzNi42NiA0MDYuMzhsLTE3LjM2IDE3LjM2YzI4LjczIDIyLjA5IDYzLjMgMzYuOTggMTAwLjk2IDQxLjkzdi0yNC42NGMtMzAuOTktNC42My01OS41My0xNi43OS04My42LTM0LjY1em0yMjIuNTMuMDVjLTI0LjA5IDE3Ljg0LTUyLjU4IDMwLjA4LTgzLjU3IDM0LjY3djI0LjU3YzM3LjY3LTQuOTIgNzIuMjEtMTkuNzkgMTAwLjk2LTQxLjg1bC0xNy4zMS0xNy4zOWgtLjA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdhbGFjdGljU2VuYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OS44NiAzMy40OHYyNi4wN0MyMzYuMjggODAuMTcgMjI2IDE2OC4xNCAyMjUuMzkgMjc0LjljMTEuNzQtMTUuNjIgMTkuMTMtMzMuMzMgMTkuMTMtNDguMjR2LTE2Ljg4Yy0uMDMtNS4zMi43NS0xMC41MyAyLjE5LTE1LjY1LjY1LTIuMTQgMS4zOS00LjA4IDIuNjItNS44MiAxLjIzLTEuNzUgMy40My0zLjc5IDYuNjgtMy43OSAzLjI0IDAgNS40NSAyLjA1IDYuNjggMy43OSAxLjIzIDEuNzUgMS45NyAzLjY4IDIuNjIgNS44MiAxLjQ0IDUuMTIgMi4yMiAxMC4zMyAyLjE5IDE1LjY1djE2Ljg4YzAgMTQuOTEgNy4zOSAzMi42MiAxOS4xMyA0OC4yNC0uNjMtMTA2Ljc2LTEwLjkxLTE5NC43My0yNC40OS0yMTUuMzVWMzMuNDhoLTEyLjI4em0tMjYuMzQgMTQ3Ljc3Yy05LjUyIDIuMTUtMTguNyA1LjE5LTI3LjQ2IDkuMDggOC45IDE2LjEyIDkuNzYgMzIuNjQgMS43MSAzNy4yOS04IDQuNjItMjEuODUtNC4yMy0zMS4zNi0xOS44Mi0xMS41OCA4Ljc5LTIxLjg4IDE5LjMyLTMwLjU2IDMxLjA5IDE0LjczIDkuNjIgMjIuODkgMjIuOTIgMTguMzIgMzAuNjYtNC41NCA3LjctMjAuMDMgNy4xNC0zNS40Ny0uOTYtNS43OCAxMy4yNS05Ljc1IDI3LjUxLTExLjY1IDQyLjQyIDkuNjguMTggMTguNjcgMi4zOCAyNi4xOCA2LjA0IDE3Ljc4LS4zIDMyLjc3LTEuOTYgNDAuNDktNC4yMiA1LjU1LTI2LjM1IDIzLjAyLTQ4LjIzIDQ2LjMyLTU5LjUxLjczLTI1LjU1IDEuODgtNDkuNjcgMy40OC03Mi4wN3ptNjQuOTYgMGMxLjU5IDIyLjQgMi43NSA0Ni41MiAzLjQ3IDcyLjA3IDIzLjI5IDExLjI4IDQwLjc3IDMzLjE2IDQ2LjMyIDU5LjUxIDcuNzIgMi4yNiAyMi43MSAzLjkyIDQwLjQ5IDQuMjIgNy41MS0zLjY2IDE2LjUtNS44NSAyNi4xOC02LjA0LTEuOS0xNC45MS01Ljg2LTI5LjE3LTExLjY1LTQyLjQyLTE1LjQ0IDguMS0zMC45MyA4LjY2LTM1LjQ3Ljk2LTQuNTctNy43NCAzLjYtMjEuMDUgMTguMzItMzAuNjYtOC42OC0xMS43Ny0xOC45OC0yMi4zLTMwLjU2LTMxLjA5LTkuNTEgMTUuNTktMjMuMzYgMjQuNDQtMzEuMzYgMTkuODItOC4wNS00LjY1LTcuMTktMjEuMTYgMS43MS0zNy4yOWExNDcuNDkgMTQ3LjQ5IDAgMCAwLTI3LjQ1LTkuMDh6bS0zMi40OCA4LjZjLTMuMjMgMC01Ljg2IDguODEtNi4wOSAxOS45M2gtLjA1djE2Ljg4YzAgNDEuNDItNDkuMDEgOTUuMDQtOTMuNDkgOTUuMDQtNTIgMC0xMjIuNzUtMS40NS0xNTYuMzcgMjkuMTd2Mi41MWM5LjQyIDE3LjEyIDIwLjU4IDMzLjE3IDMzLjE4IDQ3Ljk3QzQ1LjcgMzgwLjI2IDg0Ljc3IDM2MC40IDE0MS4yIDM2MGM0NS42OCAxLjAyIDc5LjAzIDIwLjMzIDkwLjc2IDQwLjg3LjAxLjAxLS4wMS4wNCAwIC4wNSA3LjY3IDIuMTQgMTUuODUgMy4yMyAyNC4wNCAzLjIxIDguMTkuMDIgMTYuMzctMS4wNyAyNC4wNC0zLjIxLjAxLS4wMS0uMDEtLjA0IDAtLjA1IDExLjc0LTIwLjU0IDQ1LjA4LTM5Ljg1IDkwLjc2LTQwLjg3IDU2LjQzLjM5IDk1LjQ5IDIwLjI2IDEwOC4wMiA0MS4zNSAxMi42LTE0LjggMjMuNzYtMzAuODYgMzMuMTgtNDcuOTd2LTIuNTFjLTMzLjYxLTMwLjYyLTEwNC4zNy0yOS4xNy0xNTYuMzctMjkuMTctNDQuNDggMC05My40OS01My42Mi05My40OS05NS4wNHYtMTYuODhoLS4wNWMtLjIzLTExLjEyLTIuODYtMTkuOTMtNi4wOS0xOS45M3ptMCA5Ni41OWMyMi40MiAwIDQwLjYgMTguMTggNDAuNiA0MC42cy0xOC4xOCA0MC42NS00MC42IDQwLjY1LTQwLjYtMTguMjMtNDAuNi00MC42NWMwLTIyLjQyIDE4LjE4LTQwLjYgNDAuNi00MC42em0wIDcuNjRjLTE4LjE5IDAtMzIuOTYgMTQuNzctMzIuOTYgMzIuOTZTMjM3LjgxIDM2MCAyNTYgMzYwczMyLjk2LTE0Ljc3IDMyLjk2LTMyLjk2LTE0Ljc3LTMyLjk2LTMyLjk2LTMyLjk2em0wIDYuMTRjMTQuODEgMCAyNi44MiAxMi4wMSAyNi44MiAyNi44MnMtMTIuMDEgMjYuODItMjYuODIgMjYuODItMjYuODItMTIuMDEtMjYuODItMjYuODIgMTIuMDEtMjYuODIgMjYuODItMjYuODJ6bS0xMTQuOCA2Ni42N2MtMTAuMTkuMDctMjEuNi4zNi0zMC41IDEuNjYuNDMgNC40MiAxLjUxIDE4LjYzIDcuMTEgMjkuNzYgOS4xMS0yLjU2IDE4LjM2LTMuOSAyNy42Mi0zLjkgNDEuMjguOTQgNzEuNDggMzQuMzUgNzguMjYgNzQuNDdsLjExIDQuN2MxMC40IDEuOTEgMjEuMTkgMi45NCAzMi4yMSAyLjk0IDExLjAzIDAgMjEuODEtMS4wMiAzMi4yMS0yLjk0bC4xMS00LjdjNi43OC00MC4xMiAzNi45OC03My41MyA3OC4yNi03NC40NyA5LjI2IDAgMTguNTEgMS4zNCAyNy42MiAzLjkgNS42LTExLjEzIDYuNjgtMjUuMzQgNy4xMS0yOS43Ni04LjktMS4zLTIwLjMyLTEuNTgtMzAuNS0xLjY2LTE4Ljc2LjQyLTM1LjE5IDQuMTctNDguNjEgOS42Ny0xMi41NCAxNi4wMy0yOS4xNiAzMC4wMy00OS41OCAzMy4wNy0uMDkuMDItLjE3LjA0LS4yNy4wNS0uMDUuMDEtLjExLjA0LS4xNi4wNS01LjI0IDEuMDctMTAuNjMgMS42LTE2LjE5IDEuNi01LjU1IDAtMTAuOTUtLjUzLTE2LjE5LTEuNi0uMDUtLjAxLS4xMS0uMDQtLjE2LS4wNS0uMS0uMDItLjE3LS4wNC0uMjctLjA1LTIwLjQyLTMuMDMtMzcuMDMtMTcuMDQtNDkuNTgtMzMuMDctMTMuNDItNS40OS0yOS44Ni05LjI1LTQ4LjYxLTkuNjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2V0UG9ja2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy42IDY0aC0zNjdDMTguNSA2NCAwIDgyLjUgMCAxMDQuNnYxMzUuMkMwIDM2NC41IDk5LjcgNDY0IDIyNC4yIDQ2NGMxMjQgMCAyMjMuOC05OS41IDIyMy44LTIyNC4yVjEwNC42YzAtMjIuNC0xNy43LTQwLjYtNDAuNC00MC42em0tMTYyIDI2OC41Yy0xMi40IDExLjgtMzEuNCAxMS4xLTQyLjQgMEM4OS41IDIyMy42IDg4LjMgMjI3LjQgODguMyAyMDkuM2MwLTE2LjkgMTMuOC0zMC43IDMwLjctMzAuNyAxNyAwIDE2LjEgMy44IDEwNS4yIDg5LjMgOTAuNi04Ni45IDg4LjYtODkuMyAxMDUuNS04OS4zIDE2LjkgMCAzMC43IDEzLjggMzAuNyAzMC43IDAgMTcuOC0yLjkgMTUuNy0xMTQuOCAxMjMuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZ0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcgOEMxMjAgOCA5IDExOSA5IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5NCA4IDI1NyA4em0tNDkuNSAzNzQuOEw4MS44IDI1Ny4xbDEyNS43LTEyNS43IDM1LjIgMzUuNC0yNC4yIDI0LjItMTEuMS0xMS4xLTc3LjIgNzcuMiA3Ny4yIDc3LjIgMjYuNi0yNi42LTUzLjEtNTIuOSAyNC40LTI0LjQgNzcuMiA3Ny4yLTc1IDc1LjJ6bTk5LTIuMmwtMzUuMi0zNS4yIDI0LjEtMjQuNCAxMS4xIDExLjEgNzcuMi03Ny4yLTc3LjItNzcuMi0yNi41IDI2LjUgNTMuMSA1Mi45LTI0LjQgMjQuNC03Ny4yLTc3LjIgNzUtNzVMNDMyLjIgMjU1IDMwNi41IDM4MC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OS4yIDIzMC40bDEwMi40IDEwMi40LTEwMi40IDEwMi40TDAgMjU2IDE3OS4yIDc2LjhsNDQuOCA0NC44LTI1LjYgMjUuNi0xOS4yLTE5LjItMTI4IDEyOCAxMjggMTI4IDUxLjUtNTEuNS03Ny4xLTc2LjUgMjUuNi0yNS42ek0zMzIuOCA3Ni44TDIzMC40IDE3OS4ybDEwMi40IDEwMi40IDI1LjYtMjUuNi03Ny4xLTc2LjUgNTEuNS01MS41IDEyOCAxMjgtMTI4IDEyOC0xOS4yLTE5LjItMjUuNiAyNS42IDQ0LjggNDQuOEw1MTIgMjU2IDMzMi44IDc2Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzOS41NSAyMzYuMDVMMjQ0IDQwLjQ1YTI4Ljg3IDI4Ljg3IDAgMCAwLTQwLjgxIDBsLTQwLjY2IDQwLjYzIDUxLjUyIDUxLjUyYzI3LjA2LTkuMTQgNTIuNjggMTYuNzcgNDMuMzkgNDMuNjhsNDkuNjYgNDkuNjZjMzQuMjMtMTEuOCA2MS4xOCAzMSAzNS40NyA1Ni42OS0yNi40OSAyNi40OS03MC4yMS0yLjg3LTU2LTM3LjM0TDI0MC4yMiAxOTl2MTIxLjg1YzI1LjMgMTIuNTQgMjIuMjYgNDEuODUgOS4wOCA1NWEzNC4zNCAzNC4zNCAwIDAgMS00OC41NSAwYy0xNy41Ny0xNy42LTExLjA3LTQ2LjkxIDExLjI1LTU2di0xMjNjLTIwLjgtOC41MS0yNC42LTMwLjc0LTE4LjY0LTQ1TDE0Mi41NyAxMDEgOC40NSAyMzUuMTRhMjguODYgMjguODYgMCAwIDAgMCA0MC44MWwxOTUuNjEgMTk1LjZhMjguODYgMjguODYgMCAwIDAgNDAuOCAwbDE5NC42OS0xOTQuNjlhMjguODYgMjguODYgMCAwIDAgMC00MC44MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAwLjU5IDMzNC4yNGM0OC41NyAzLjMxIDU4Ljk1IDIuMTEgNTguOTUgMTEuOTQgMCAyMC02NS41NSAyMC4wNi02NS41NSAxLjUyLjAxLTUuMDkgMy4yOS05LjQgNi42LTEzLjQ2em0yNy45NS0xMTYuNjRjLTMyLjI5IDAtMzMuNzUgNDQuNDctLjc1IDQ0LjQ3IDMyLjUxIDAgMzEuNzEtNDQuNDcuNzUtNDQuNDd6TTQ0OCA4MHYzNTJhNDggNDggMCAwIDEtNDggNDhINDhhNDggNDggMCAwIDEtNDgtNDhWODBhNDggNDggMCAwIDEgNDgtNDhoMzUyYTQ4IDQ4IDAgMCAxIDQ4IDQ4em0tMjI3IDY5LjMxYzAgMTQuNDkgOC4zOCAyMi44OCAyMi44NiAyMi44OCAxNC43NCAwIDIzLjEzLTguMzkgMjMuMTMtMjIuODhTMjU4LjYyIDEyNyAyNDMuODggMTI3Yy0xNC40OCAwLTIyLjg4IDcuODQtMjIuODggMjIuMzF6TTE5OS4xOCAxOTVoLTQ5LjU1Yy0yNS02LjU1LTgxLjU2LTQuODUtODEuNTYgNDYuNzUgMCAxOC44IDkuNCAzMiAyMS44NSAzOC4xMUM3NC4yMyAyOTQuMjMgNjYuOCAzMDEgNjYuOCAzMTAuNmMwIDYuODcgMi43OSAxMy4yMiAxMS4xOCAxNi43Ni04LjkgOC40LTE0IDE0LjQ4LTE0IDI1LjkyQzY0IDM3My4zNSA4MS41MyAzODUgMTI3LjUyIDM4NWM0NC4yMiAwIDY5Ljg3LTE2LjUxIDY5Ljg3LTQ1LjczIDAtMzYuNjctMjguMjMtMzUuMzItOTQuNzctMzkuMzhsOC4zOC0xMy40M2MxNyA0Ljc0IDc0LjE5IDYuMjMgNzQuMTktNDIuNDMgMC0xMS42OS00LjgzLTE5LjgyLTkuNC0yNS42N2wyMy4zOC0xLjc4em04NC4zNCAxMDkuODRsLTEzLTEuNzhjLTMuODItLjUxLTQuMDctMS00LjA3LTUuMDlWMTkyLjUyaC01Mi42bC0yLjc5IDIwLjU3YzE1Ljc1IDUuNTUgMTcgNC44NiAxNyAxMC4xN1YyOThjMCA1LjYyLS4zMSA0LjU4LTE3IDYuODd2MjAuMDZoNzIuNDJ6TTM4NCAzMTVsLTYuODctMjIuMzdjLTQwLjkzIDE1LjM3LTM3Ljg1LTEyLjQxLTM3Ljg1LTE2Ljczdi02MC43MmgzNy44NXYtMjUuNDFoLTM1LjgyYy0yLjg3IDAtMiAyLjUyLTItMzguNjNoLTI0LjE4Yy0yLjc5IDI3LjctMTEuNjggMzguODgtMzQgNDEuNDJ2MjIuNjJjMjAuNDcgMCAxOS44Mi0uODUgMTkuODIgMi41NHY2Ni41N2MwIDI4LjcyIDExLjQzIDQwLjkxIDQxLjY3IDQwLjkxIDE0LjQ1IDAgMzAuNDUtNC44MyA0MS4zOC0xMC4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYuMjkgMTU4LjM5SDEzN0M5NyAxNDcuOSA2LjUxIDE1MC42MyA2LjUxIDIzMy4xOGMwIDMwLjA5IDE1IDUxLjIzIDM1IDYxLTI1LjEgMjMtMzcgMzMuODUtMzcgNDkuMjEgMCAxMSA0LjQ3IDIxLjE0IDE3Ljg5IDI2LjgxQzguMTMgMzgzLjYxIDAgMzkzLjM1IDAgNDExLjY1YzAgMzIuMTEgMjguMDUgNTAuODIgMTAxLjYzIDUwLjgyIDcwLjc1IDAgMTExLjc5LTI2LjQyIDExMS43OS03My4xOCAwLTU4LjY2LTQ1LjE2LTU2LjUtMTUxLjYzLTYzbDEzLjQzLTIxLjU1YzI3LjI3IDcuNTggMTE4LjcgMTAgMTE4LjctNjcuODkgMC0xOC43LTcuNzMtMzEuNzEtMTUtNDEuMDdsMzcuNDEtMi44NHptLTYzLjQyIDI0MS45YzAgMzIuMDYtMTA0Ljg5IDMyLjEtMTA0Ljg5IDIuNDMgMC04LjE0IDUuMjctMTUgMTAuNTctMjEuNTQgNzcuNzEgNS4zIDk0LjMyIDMuMzcgOTQuMzIgMTkuMTF6bS01MC44MS0xMzQuNThjLTUyLjggMC01MC40Ni03MS4xNiAxLjItNzEuMTYgNDkuNTQgMCA1MC44MiA3MS4xNi0xLjIgNzEuMTZ6bTEzMy4zIDEwMC41MXYtMzIuMWMyNi43NS0zLjY2IDI3LjI0LTIgMjcuMjQtMTFWMjAzLjYxYzAtOC41LTIuMDUtNy4zOC0yNy4yNC0xNi4yNmw0LjQ3LTMyLjkySDMyNHYxNjguNzFjMCA2LjUxLjQgNy4zMiA2LjUxIDguMTRsMjAuNzMgMi44NHYzMi4xem01Mi40NS0yNDQuMzFjLTIzLjE3IDAtMzYuNTktMTMuNDMtMzYuNTktMzYuNjFzMTMuNDItMzUuNzcgMzYuNTktMzUuNzdjMjMuNTggMCAzNyAxMi42MiAzNyAzNS43N3MtMTMuNDIgMzYuNjEtMzcgMzYuNjF6TTUxMiAzNTAuNDZjLTE3LjQ5IDguNTMtNDMuMSAxNi4yNi02Ni4yOCAxNi4yNi00OC4zOCAwLTY2LjY3LTE5LjUtNjYuNjctNjUuNDZWMTk0Ljc1YzAtNS40MiAxLjA1LTQuMDYtMzEuNzEtNC4wNlYxNTQuNWMzNS43OC00LjA3IDUwLTIyIDU0LjQ3LTY2LjI3aDM4LjYzYzAgNjUuODMtMS4zNCA2MS44MSAzLjI2IDYxLjgxSDUwMXY0MC42NWgtNjAuNTZ2OTcuMTVjMCA2LjkyLTQuOTIgNTEuNDEgNjAuNTcgMjYuODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xIDMyOC43YzAgMjAuOS0xMC45IDU1LjEtMzYuNyA1NS4xcy0zNi43LTM0LjItMzYuNy01NS4xIDEwLjktNTUuMSAzNi43LTU1LjEgMzYuNyAzNC4yIDM2LjcgNTUuMXpNNDgwIDI3OC4yYzAgMzEuOS0zLjIgNjUuNy0xNy41IDk1LTM3LjkgNzYuNi0xNDIuMSA3NC44LTIxNi43IDc0LjgtNzUuOCAwLTE4Ni4yIDIuNy0yMjUuNi03NC44LTE0LjYtMjktMjAuMi02My4xLTIwLjItOTUgMC00MS45IDEzLjktODEuNSA0MS41LTExMy42LTUuMi0xNS44LTcuNy0zMi40LTcuNy00OC44IDAtMjEuNSA0LjktMzIuMyAxNC42LTUxLjggNDUuMyAwIDc0LjMgOSAxMDguOCAzNiAyOS02LjkgNTguOC0xMCA4OC43LTEwIDI3IDAgNTQuMiAyLjkgODAuNCA5LjIgMzQtMjYuNyA2My0zNS4yIDEwNy44LTM1LjIgOS44IDE5LjUgMTQuNiAzMC4zIDE0LjYgNTEuOCAwIDE2LjQtMi42IDMyLjctNy43IDQ4LjIgMjcuNSAzMi40IDM5IDcyLjMgMzkgMTE0LjJ6bS02NC4zIDUwLjVjMC00My45LTI2LjctODIuNi03My41LTgyLjYtMTguOSAwLTM3IDMuNC01NiA2LTE0LjkgMi4zLTI5LjggMy4yLTQ1LjEgMy4yLTE1LjIgMC0zMC4xLS45LTQ1LjEtMy4yLTE4LjctMi42LTM3LTYtNTYtNi00Ni44IDAtNzMuNSAzOC43LTczLjUgODIuNiAwIDg3LjggODAuNCAxMDEuMyAxNTAuNCAxMDEuM2g0OC4yYzcwLjMgMCAxNTAuNi0xMy40IDE1MC42LTEwMS4zem0tODIuNi01NS4xYy0yNS44IDAtMzYuNyAzNC4yLTM2LjcgNTUuMXMxMC45IDU1LjEgMzYuNyA1NS4xIDM2LjctMzQuMiAzNi43LTU1LjEtMTAuOS01NS4xLTM2LjctNTUuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRodWJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjc3LjMgNDE1LjdjLTguNCAxLjUtMTEuNS0zLjctMTEuNS04IDAtNS40LjItMzMgLjItNTUuMyAwLTE1LjYtNS4yLTI1LjUtMTEuMy0zMC43IDM3LTQuMSA3Ni05LjIgNzYtNzMuMSAwLTE4LjItNi41LTI3LjMtMTcuMS0zOSAxLjctNC4zIDcuNC0yMi0xLjctNDUtMTMuOS00LjMtNDUuNyAxNy45LTQ1LjcgMTcuOS0xMy4yLTMuNy0yNy41LTUuNi00MS42LTUuNi0xNC4xIDAtMjguNCAxLjktNDEuNiA1LjYgMCAwLTMxLjgtMjIuMi00NS43LTE3LjktOS4xIDIyLjktMy41IDQwLjYtMS43IDQ1LTEwLjYgMTEuNy0xNS42IDIwLjgtMTUuNiAzOSAwIDYzLjYgMzcuMyA2OSA3NC4zIDczLjEtNC44IDQuMy05LjEgMTEuNy0xMC42IDIyLjMtOS41IDQuMy0zMy44IDExLjctNDguMy0xMy45LTkuMS0xNS44LTI1LjUtMTcuMS0yNS41LTE3LjEtMTYuMi0uMi0xLjEgMTAuMi0xLjEgMTAuMiAxMC44IDUgMTguNCAyNC4yIDE4LjQgMjQuMiA5LjcgMjkuNyA1Ni4xIDE5LjcgNTYuMSAxOS43IDAgMTMuOS4yIDM2LjUuMiA0MC42IDAgNC4zLTMgOS41LTExLjUgOC02Ni0yMi4xLTExMi4yLTg0LjktMTEyLjItMTU4LjMgMC05MS44IDcwLjItMTYxLjUgMTYyLTE2MS41UzM4OCAxNjUuNiAzODggMjU3LjRjLjEgNzMuNC00NC43IDEzNi4zLTExMC43IDE1OC4zem0tOTguMS02MS4xYy0xLjkuNC0zLjctLjQtMy45LTEuNy0uMi0xLjUgMS4xLTIuOCAzLTMuMiAxLjktLjIgMy43LjYgMy45IDEuOS4zIDEuMy0xIDIuNi0zIDN6bS05LjUtLjljMCAxLjMtMS41IDIuNC0zLjUgMi40LTIuMi4yLTMuNy0uOS0zLjctMi40IDAtMS4zIDEuNS0yLjQgMy41LTIuNCAxLjktLjIgMy43LjkgMy43IDIuNHptLTEzLjctMS4xYy0uNCAxLjMtMi40IDEuOS00LjEgMS4zLTEuOS0uNC0zLjItMS45LTIuOC0zLjIuNC0xLjMgMi40LTEuOSA0LjEtMS41IDIgLjYgMy4zIDIuMSAyLjggMy40em0tMTIuMy01LjRjLS45IDEuMS0yLjguOS00LjMtLjYtMS41LTEuMy0xLjktMy4yLS45LTQuMS45LTEuMSAyLjgtLjkgNC4zLjYgMS4zIDEuMyAxLjggMy4zLjkgNC4xem0tOS4xLTkuMWMtLjkuNi0yLjYgMC0zLjctMS41cy0xLjEtMy4yIDAtMy45YzEuMS0uOSAyLjgtLjIgMy43IDEuMyAxLjEgMS41IDEuMSAzLjMgMCA0LjF6bS02LjUtOS43Yy0uOS45LTIuNC40LTMuNS0uNi0xLjEtMS4zLTEuMy0yLjgtLjQtMy41LjktLjkgMi40LS40IDMuNS42IDEuMSAxLjMgMS4zIDIuOC40IDMuNXptLTYuNy03LjRjLS40LjktMS43IDEuMS0yLjguNC0xLjMtLjYtMS45LTEuNy0xLjUtMi42LjQtLjYgMS41LS45IDIuOC0uNCAxLjMuNyAxLjkgMS44IDEuNSAyLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2l0aHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NS45IDM5Ny40YzAgMi0yLjMgMy42LTUuMiAzLjYtMy4zLjMtNS42LTEuMy01LjYtMy42IDAtMiAyLjMtMy42IDUuMi0zLjYgMy0uMyA1LjYgMS4zIDUuNiAzLjZ6bS0zMS4xLTQuNWMtLjcgMiAxLjMgNC4zIDQuMyA0LjkgMi42IDEgNS42IDAgNi4yLTJzLTEuMy00LjMtNC4zLTUuMmMtMi42LS43LTUuNS4zLTYuMiAyLjN6bTQ0LjItMS43Yy0yLjkuNy00LjkgMi42LTQuNiA0LjkuMyAyIDIuOSAzLjMgNS45IDIuNiAyLjktLjcgNC45LTIuNiA0LjYtNC42LS4zLTEuOS0zLTMuMi01LjktMi45ek0yNDQuOCA4QzEwNi4xIDggMCAxMTMuMyAwIDI1MmMwIDExMC45IDY5LjggMjA1LjggMTY5LjUgMjM5LjIgMTIuOCAyLjMgMTcuMy01LjYgMTcuMy0xMi4xIDAtNi4yLS4zLTQwLjQtLjMtNjEuNCAwIDAtNzAgMTUtODQuNy0yOS44IDAgMC0xMS40LTI5LjEtMjcuOC0zNi42IDAgMC0yMi45LTE1LjcgMS42LTE1LjQgMCAwIDI0LjkgMiAzOC42IDI1LjggMjEuOSAzOC42IDU4LjYgMjcuNSA3Mi45IDIwLjkgMi4zLTE2IDguOC0yNy4xIDE2LTMzLjctNTUuOS02LjItMTEyLjMtMTQuMy0xMTIuMy0xMTAuNSAwLTI3LjUgNy42LTQxLjMgMjMuNi01OC45LTIuNi02LjUtMTEuMS0zMy4zIDIuNi02Ny45IDIwLjktNi41IDY5IDI3IDY5IDI3IDIwLTUuNiA0MS41LTguNSA2Mi44LTguNXM0Mi44IDIuOSA2Mi44IDguNWMwIDAgNDguMS0zMy42IDY5LTI3IDEzLjcgMzQuNyA1LjIgNjEuNCAyLjYgNjcuOSAxNiAxNy43IDI1LjggMzEuNSAyNS44IDU4LjkgMCA5Ni41LTU4LjkgMTA0LjItMTE0LjggMTEwLjUgOS4yIDcuOSAxNyAyMi45IDE3IDQ2LjQgMCAzMy43LS4zIDc1LjQtLjMgODMuNiAwIDYuNSA0LjYgMTQuNCAxNy4zIDEyLjFDNDI4LjIgNDU3LjggNDk2IDM2Mi45IDQ5NiAyNTIgNDk2IDExMy4zIDM4My41IDggMjQ0LjggOHpNOTcuMiAzNTIuOWMtMS4zIDEtMSAzLjMuNyA1LjIgMS42IDEuNiAzLjkgMi4zIDUuMiAxIDEuMy0xIDEtMy4zLS43LTUuMi0xLjYtMS42LTMuOS0yLjMtNS4yLTF6bS0xMC44LTguMWMtLjcgMS4zLjMgMi45IDIuMyAzLjkgMS42IDEgMy42LjcgNC4zLS43LjctMS4zLS4zLTIuOS0yLjMtMy45LTItLjYtMy42LS4zLTQuMy43em0zMi40IDM1LjZjLTEuNiAxLjMtMSA0LjMgMS4zIDYuMiAyLjMgMi4zIDUuMiAyLjYgNi41IDEgMS4zLTEuMy43LTQuMy0xLjMtNi4yLTIuMi0yLjMtNS4yLTIuNi02LjUtMXptLTExLjQtMTQuN2MtMS42IDEtMS42IDMuNiAwIDUuOSAxLjYgMi4zIDQuMyAzLjMgNS42IDIuMyAxLjYtMS4zIDEuNi0zLjkgMC02LjItMS40LTIuMy00LTMuMy01LjYtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXRrcmFrZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY1LjcgMTE4LjFjLTIuMy02LjEtOS4zLTkuMi0xNS4zLTYuNi01LjcgMi40LTguNSA4LjktNi4zIDE0LjYgMTAuOSAyOSAxNi45IDYwLjUgMTYuOSA5My4zIDAgMTM0LjYtMTAwLjMgMjQ1LjctMjMwLjIgMjYyLjdWMzU4LjRjNy45LTEuNSAxNS41LTMuNiAyMy02LjJ2MTA0YzEwNi43LTI1LjkgMTg1LjktMTIyLjEgMTg1LjktMjM2LjggMC05MS44LTUwLjgtMTcxLjgtMTI1LjgtMjEzLjMtNS43LTMuMi0xMy0uOS0xNS45IDUtMi43IDUuNS0uNiAxMi4yIDQuNyAxNS4xIDY3LjkgMzcuNiAxMTMuOSAxMTAgMTEzLjkgMTkzLjIgMCA5My4zLTU3LjkgMTczLjEtMTM5LjggMjA1LjR2LTkyLjJjMTQuMi00LjUgMjQuOS0xNy43IDI0LjktMzMuNSAwLTEzLjEtNi44LTI0LjQtMTcuMy0zMC41IDguMy03OS41IDQ0LjUtNTguNiA0NC41LTgzLjlWMTcwYzAtMzgtODcuOS0xNjEuOC0xMjktMTY0LjctMi41LS4yLTUtLjItNy42IDBDMjUxLjEgOC4zIDE2My4yIDEzMiAxNjMuMiAxNzB2MTQuOGMwIDI1LjMgMzYuMyA0LjMgNDQuNSA4My45LTEwLjYgNi4xLTE3LjMgMTcuNC0xNy4zIDMwLjUgMCAxNS44IDEwLjYgMjkgMjQuOCAzMy41djkyLjJjLTgxLjktMzIuMi0xMzkuOC0xMTItMTM5LjgtMjA1LjQgMC04My4xIDQ2LTE1NS41IDExMy45LTE5My4yIDUuNC0zIDcuNC05LjYgNC43LTE1LjEtMi45LTUuOS0xMC4xLTguMi0xNS45LTUtNzUgNDEuNS0xMjUuOCAxMjEuNS0xMjUuOCAyMTMuMyAwIDExNC43IDc5LjIgMjEwLjggMTg1LjkgMjM2Ljh2LTEwNGM3LjYgMi41IDE1LjEgNC42IDIzIDYuMnYxMjMuN0MxMzEuNCA0NjUuMiAzMSAzNTQuMSAzMSAyMTkuNWMwLTMyLjggNi02NC4zIDE2LjktOTMuMyAyLjItNS44LS42LTEyLjItNi4zLTE0LjYtNi0yLjYtMTMgLjQtMTUuMyA2LjZDMTQuNSAxNDkuNyA4IDE4My44IDggMjE5LjVjMCAxNTUuMSAxMjIuNiAyODEuNiAyNzYuMyAyODcuOFYzNjEuNGM2LjguNCAxNSAuNSAyMy40IDB2MTQ1LjhDNDYxLjQgNTAxLjEgNTg0IDM3NC42IDU4NCAyMTkuNWMwLTM1LjctNi41LTY5LjgtMTguMy0xMDEuNHpNMzY1LjkgMjc1LjVjMTMgMCAyMy43IDEwLjUgMjMuNyAyMy43IDAgMTMuMS0xMC42IDIzLjctMjMuNyAyMy43LTEzIDAtMjMuNy0xMC41LTIzLjctMjMuNyAwLTEzLjEgMTAuNi0yMy43IDIzLjctMjMuN3ptLTEzOS44IDQ3LjNjLTEzLjIgMC0yMy43LTEwLjctMjMuNy0yMy43czEwLjUtMjMuNyAyMy43LTIzLjdjMTMuMSAwIDIzLjcgMTAuNiAyMy43IDIzLjcgMCAxMy0xMC41IDIzLjctMjMuNyAyMy43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdpdGxhYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuMiAyNC45Yy0zLjEtOC45LTE1LjctOC45LTE4LjkgMEwyOS44IDE5OS43aDEzMmMtLjEgMC01Ni42LTE3NC44LTU2LjYtMTc0Ljh6TS45IDI4Ny43Yy0yLjYgOCAuMyAxNi45IDcuMSAyMmwyNDcuOSAxODQtMjI2LjItMjk0em0xNjAuOC04OGw5NC4zIDI5NCA5NC4zLTI5NHptMzQ5LjQgODhsLTI4LjgtODgtMjI2LjMgMjk0IDI0Ny45LTE4NGM2LjktNS4xIDkuNy0xNCA3LjItMjJ6TTQyNS43IDI0LjljLTMuMS04LjktMTUuNy04LjktMTguOSAwbC01Ni42IDE3NC44aDEzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjYuNCAzMjIuNUgxNlYwaDUwLjR2MzIyLjV6TTE2Ni45IDc2LjFoLTUwLjRWNTEyaDUwLjRWNzYuMXptMTAwLjYgMGgtNTAuNFY1MTJoNTAuNFY3Ni4xek0zNjggNzZoLTUwLjR2MjQ3SDM2OFY3NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZUcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDA3LjEgMjExLjJjLTMuNS0xLjQtMTEuNi0zLjgtMTUuNC0zLjgtMzcuMSAwLTYyLjIgMTYuOC05My41IDM0LjVsLS45LS45YzctNDcuMyAyMy41LTkxLjkgMjMuNS0xNDAuNEMzMjAuOCAyOS4xIDI4Mi42IDAgMjEyLjQgMCA5Ny4zIDAgMzkgMTEzLjcgMzkgMTk4LjQgMzkgMjg2LjMgOTAuMyAzMzUgMTc3LjYgMzM1YzEyIDAgMTEtMSAxMSAzLjgtMTYuOSAxMjguOS05MC44IDEzMy4xLTkwLjggOTQuNiAwLTM5LjIgNDUtNTguNiA0NS41LTYxLS4zLTEyLjItNDctMjcuNi01OC45LTI3LjYtMzMuOS4xLTUyLjQgNTEuMi01Mi40IDc5LjNDMzIgNDc2IDY0LjggNTEyIDExNy41IDUxMmM3Ny40IDAgMTM0LTc3LjggMTUxLjQtMTQ1LjQgMTUuMS02MC41IDExLjItNjMuMyAxOS43LTY3LjYgMzIuMi0xNi4yIDU3LjUtMjcgOTMuOC0yNyAxNy44IDAgMzAuNSAzLjcgNTguOSA4LjQgMi45IDAgNi43LTIuOSA2LjctNS44IDAtOC0zMy40LTYwLjUtNDAuOS02My40em0tMTc1LjMtODQuNGMtOS4zIDQ0LjctMTguNiA4OS42LTI3LjggMTM0LjMtMi4zIDEwLjItMTMuMyA3LjgtMjIgNy44LTM4LjMgMC00OS00MS44LTQ5LTczLjEgMC00NyAxOC0xMDkuMyA2MS44LTEzMy40IDctNC4xIDE0LjgtNi43IDIyLjYtNi43IDE4LjYgMCAyMCAxMy4zIDIwIDI4LjctLjEgMTQuMy0yLjcgMjguNS01LjYgNDIuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGlkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTIuOCAxNDguNmMwIDguOC0xLjYgMTcuNy0zLjQgMjYuNC01LjggMjcuOC0xMS42IDU1LjgtMTcuMyA4My42LTEuNCA2LjMtOC4zIDQuOS0xMy43IDQuOS0yMy44IDAtMzAuNS0yNi0zMC41LTQ1LjUgMC0yOS4zIDExLjItNjguMSAzOC41LTgzLjEgNC4zLTIuNSA5LjItNC4yIDE0LjEtNC4yIDExLjQgMCAxMi4zIDguMyAxMi4zIDE3Ljl6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY0IDE4N2MwLTUuMS0yMC44LTM3LjctMjUuNS0zOS41LTIuMi0uOS03LjItMi4zLTkuNi0yLjMtMjMuMSAwLTM4LjcgMTAuNS01OC4yIDIxLjVsLS41LS41YzQuMy0yOS40IDE0LjYtNTcuMiAxNC42LTg3LjQgMC00NC42LTIzLjgtNjIuNy02Ny41LTYyLjctNzEuNyAwLTEwOCA3MC44LTEwOCAxMjMuNSAwIDU0LjcgMzIgODUgODYuMyA4NSA3LjUgMCA2LjktLjYgNi45IDIuMy0xMC41IDgwLjMtNTYuNSA4Mi45LTU2LjUgNTguOSAwLTI0LjQgMjgtMzYuNSAyOC4zLTM4LS4yLTcuNi0yOS4zLTE3LjItMzYuNy0xNy4yLTIxLjEgMC0zMi43IDMzLTMyLjcgNTAuNiAwIDMyLjMgMjAuNCA1NC43IDUzLjMgNTQuNyA0OC4yIDAgODMuNC00OS43IDk0LjMtOTEuNyA5LjQtMzcuNyA3LTM5LjQgMTIuMy00Mi4xIDIwLTEwLjEgMzUuOC0xNi44IDU4LjQtMTYuOCAxMS4xIDAgMTkgMi4zIDM2LjcgNS4yIDEuOC4xIDQuMS0xLjcgNC4xLTMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb2ZvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI0IDMxOS44aC0xMy4ydjM0LjdjLTI0LjUgMjMuMS01Ni4zIDM1LjgtODkuOSAzNS44LTczLjIgMC0xMzIuNC02MC4yLTEzMi40LTEzNC40IDAtNzQuMSA1OS4yLTEzNC40IDEzMi40LTEzNC40IDM1LjMgMCA2OC42IDE0IDkzLjYgMzkuNGw2Mi4zLTYzLjNDMzM1IDU1LjMgMjc5LjcgMzIgMjIwLjcgMzIgOTggMzIgMCAxMzIuNiAwIDI1NmMwIDEyMi41IDk3IDIyNCAyMjAuNyAyMjQgNjMuMiAwIDEyNC41LTI2LjIgMTcxLTgyLjUtMi0yNy42LTEzLjQtNzcuNy02Ny43LTc3Ljd6bS0xMi4xLTExMi41SDIwNS42djg5SDMyNGMzMy41IDAgNjAuNSAxNS4xIDc2IDQxLjh2LTMwLjZjMC02NS4yLTQwLjQtMTAwLjItODguMS0xMDAuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29kcmVhZHNHIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyLjYgNDAzLjNoMi44YzEyLjcgMCAyNS41IDAgMzguMi4xIDEuNiAwIDMuMS0uNCAzLjYgMi4xIDcuMSAzNC45IDMwIDU0LjYgNjIuOSA2My45IDI2LjkgNy42IDU0LjEgNy44IDgxLjMgMS44IDMzLjgtNy40IDU2LTI4LjMgNjgtNjAuNCA4LTIxLjUgMTAuNy00My44IDExLTY2LjUuMS01LjguMy00Ny0uMi01Mi44bC0uOS0uM2MtLjggMS41LTEuNyAyLjktMi41IDQuNC0yMi4xIDQzLjEtNjEuMyA2Ny40LTEwNS40IDY5LjEtMTAzIDQtMTY5LjQtNTctMTcyLTE3Ni4yLS41LTIzLjcgMS44LTQ2LjkgOC4zLTY5LjdDNTguMyA0Ny43IDExMi4zLjYgMTkxLjYgMGM2MS4zLS40IDEwMS41IDM4LjcgMTE2LjIgNzAuMy41IDEuMSAxLjMgMi4zIDIuNCAxLjlWMTAuNmg0NC4zYzAgMjgwLjMuMSAzMzIuMi4xIDMzMi4yLS4xIDc4LjUtMjYuNyAxNDMuNy0xMDMgMTYyLjItNjkuNSAxNi45LTE1OSA0LjgtMTk2LTU3LjItOC0xMy41LTExLjgtMjguMy0xMy00NC41ek0xODguOSAzNi41Yy01Mi41LS41LTEwOC41IDQwLjctMTE1IDEzMy44LTQuMSA1OSAxNC44IDEyMi4yIDcxLjUgMTQ4LjYgMjcuNiAxMi45IDc0LjMgMTUgMTA4LjMtOC43IDQ3LjYtMzMuMiA2Mi43LTk3IDU0LjgtMTU0LTkuNy03MS4xLTQ3LjgtMTIwLTExOS42LTExOS43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2RyZWFkcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTkuOSAxOTEuMmM1LjEgMzcuMy00LjcgNzktMzUuOSAxMDAuNy0yMi4zIDE1LjUtNTIuOCAxNC4xLTcwLjggNS43LTM3LjEtMTcuMy00OS41LTU4LjYtNDYuOC05Ny4yIDQuMy02MC45IDQwLjktODcuOSA3NS4zLTg3LjUgNDYuOS0uMiA3MS44IDMxLjggNzguMiA3OC4zek00NDggODh2MzM2YzAgMzAuOS0yNS4xIDU2LTU2IDU2SDU2Yy0zMC45IDAtNTYtMjUuMS01Ni01NlY4OGMwLTMwLjkgMjUuMS01NiA1Ni01NmgzMzZjMzAuOSAwIDU2IDI1LjEgNTYgNTZ6TTMzMCAzMTMuMnMtLjEtMzQtLjEtMjE3LjNoLTI5djQwLjNjLS44LjMtMS4yLS41LTEuNi0xLjItOS42LTIwLjctMzUuOS00Ni4zLTc2LTQ2LTUxLjkuNC04Ny4yIDMxLjItMTAwLjYgNzcuOC00LjMgMTQuOS01LjggMzAuMS01LjUgNDUuNiAxLjcgNzcuOSA0NS4xIDExNy44IDExMi40IDExNS4yIDI4LjktMS4xIDU0LjUtMTcgNjktNDUuMi41LTEgMS4xLTEuOSAxLjctMi45LjIuMS40LjEuNi4yLjMgMy44LjIgMzAuNy4xIDM0LjUtLjIgMTQuOC0yIDI5LjUtNy4yIDQzLjUtNy44IDIxLTIyLjMgMzQuNy00NC41IDM5LjUtMTcuOCAzLjktMzUuNiAzLjgtNTMuMi0xLjItMjEuNS02LjEtMzYuNS0xOS00MS4xLTQxLjgtLjMtMS42LTEuMy0xLjMtMi4zLTEuM2gtMjYuOGMuOCAxMC42IDMuMiAyMC4zIDguNSAyOS4yIDI0LjIgNDAuNSA4Mi43IDQ4LjUgMTI4LjIgMzcuNCA0OS45LTEyLjMgNjcuMy01NC45IDY3LjQtMTA2LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlRHJpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM5IDMxNC45TDE3NS40IDMyaDE2MS4ybDE2My42IDI4Mi45SDMzOXptLTEzNy41IDIzLjZMMTIwLjkgNDgwaDMxMC41TDUxMiAzMzguNUgyMDEuNXpNMTU0LjEgNjcuNEwwIDMzOC41IDgwLjYgNDgwIDIzNyAyMDguOCAxNTQuMSA2Ny40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNzIsMjE1djQxLjI1aDU3LjFhNDkuNjYsNDkuNjYsMCwwLDEtMjEuMTQsMzIuNmMtOS41NCw2LjU1LTIxLjcyLDEwLjI4LTM2LDEwLjI4LTI3LjYsMC01MC45My0xOC45MS01OS4zLTQ0LjIyYTY1LjYxLDY1LjYxLDAsMCwxLDAtNDFsMCwwYzguMzctMjUuNDYsMzEuNy00NC4zNyw1OS4zLTQ0LjM3YTU2LjQzLDU2LjQzLDAsMCwxLDQwLjUxLDE2LjA4TDE3Ni40NywxNTVhMTAxLjI0LDEwMS4yNCwwLDAsMC03MC43NS0yNy44NCwxMDUuNTUsMTA1LjU1LDAsMCwwLTk0LjM4LDU5LjExLDEwNy42NCwxMDcuNjQsMCwwLDAsMCw5Ni4xOHYuMTVhMTA1LjQxLDEwNS40MSwwLDAsMCw5NC4zOCw1OWMyOC40NywwLDUyLjU1LTkuNTMsNzAtMjUuOTEsMjAtMTguNjEsMzEuNDEtNDYuMTUsMzEuNDEtNzguOTFBMTMzLjc2LDEzMy43NiwwLDAsMCwyMDUuMzgsMjE1Wm0zODkuNDEtNGMtMTAuMTMtOS4zOC0yMy45My0xNC4xNC00MS4zOS0xNC4xNC0yMi40NiwwLTM5LjM0LDguMzQtNTAuNSwyNC44NmwyMC44NSwxMy4yNnExMS40NS0xNywzMS4yNi0xN2EzNC4wNSwzNC4wNSwwLDAsMSwyMi43NSw4Ljc5QTI4LjE0LDI4LjE0LDAsMCwxLDQ4Ny43OSwyNDh2NS41MWMtOS4xLTUuMDctMjAuNTUtNy43NS0zNC42NC03Ljc1LTE2LjQ0LDAtMjkuNjUsMy44OC0zOS40OSwxMS43N3MtMTQuODIsMTguMzEtMTQuODIsMzEuNTZhMzkuNzQsMzkuNzQsMCwwLDAsMTMuOTQsMzEuMjdjOS4yNSw4LjM0LDIxLDEyLjUxLDM0Ljc5LDEyLjUxLDE2LjI5LDAsMjkuMjEtNy4zLDM5LTIxLjg5aDF2MTcuNzJoMjIuNjFWMjUwQzUxMC4yNSwyMzMuNDUsNTA1LjI2LDIyMC4zNCw0OTUuMTMsMjExWk00NzUuOSwzMDAuM2EzNy4zMiwzNy4zMiwwLDAsMS0yNi41NywxMS4xNkEyOC42MSwyOC42MSwwLDAsMSw0MzEsMzA1LjIxYTE5LjQxLDE5LjQxLDAsMCwxLTcuNzctMTUuNjNjMC03LDMuMjItMTIuODEsOS41NC0xNy40MnMxNC41My03LDI0LjA3LTdDNDcwLDI2NSw0ODAuMywyNjgsNDg3LjY0LDI3My45NCw0ODcuNjQsMjg0LjA3LDQ4My42OCwyOTIuODUsNDc1LjksMzAwLjNabS05My42NS0xNDJBNTUuNzEsNTUuNzEsMCwwLDAsMzQxLjc0LDE0MkgyNzkuMDdWMzI4Ljc0SDMwMi43VjI1My4xaDM5YzE2LDAsMjkuNS01LjM2LDQwLjUxLTE1LjkzLjg4LS44OSwxLjc2LTEuNzksMi42NS0yLjY4QTU0LjQ1LDU0LjQ1LDAsMCwwLDM4Mi4yNSwxNTguMjZabS0xNi41OCw2Mi4yM2EzMC42NSwzMC42NSwwLDAsMS0yMy4zNCw5LjY4SDMwMi43VjE2NWgzOS42M2EzMiwzMiwwLDAsMSwyMi42LDkuMjNBMzMuMTgsMzMuMTgsMCwwLDEsMzY1LjY3LDIyMC40OVpNNjE0LjMxLDIwMSw1NzcuNzcsMjkyLjdoLS40NUw1MzkuOSwyMDFINTE0LjIxTDU2NiwzMjAuNTVsLTI5LjM1LDY0LjMySDU2MUw2NDAsMjAxWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI1LjMgMjM0LjNMMTA0LjYgMTNsMjgwLjggMTYxLjItNjAuMSA2MC4xek00NyAwQzM0IDYuOCAyNS4zIDE5LjIgMjUuMyAzNS4zdjQ0MS4zYzAgMTYuMSA4LjcgMjguNSAyMS43IDM1LjNsMjU2LjYtMjU2TDQ3IDB6bTQyNS4yIDIyNS42bC01OC45LTM0LjEtNjUuNyA2NC41IDY1LjcgNjQuNSA2MC4xLTM0LjFjMTgtMTQuMyAxOC00Ni41LTEuMi02MC44ek0xMDQuNiA0OTlsMjgwLjgtMTYxLjItNjAuMS02MC4xTDEwNC42IDQ5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVQbHVzRyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODYuMDYxIDIyOC40OTZjMS44MzQgOS42OTIgMy4xNDMgMTkuMzg0IDMuMTQzIDMxLjk1NkMzODkuMjA0IDM3MC4yMDUgMzE1LjU5OSA0NDggMjA0LjggNDQ4Yy0xMDYuMDg0IDAtMTkyLTg1LjkxNS0xOTItMTkyczg1LjkxNi0xOTIgMTkyLTE5MmM1MS44NjQgMCA5NS4wODMgMTguODU5IDEyOC42MTEgNTAuMjkybC01Mi4xMjYgNTAuMDNjLTE0LjE0NS0xMy42MjEtMzkuMDI4LTI5LjU5OS03Ni40ODUtMjkuNTk5LTY1LjQ4NCAwLTExOC45MiA1NC4yMjEtMTE4LjkyIDEyMS4yNzcgMCA2Ny4wNTYgNTMuNDM2IDEyMS4yNzcgMTE4LjkyIDEyMS4yNzcgNzUuOTYxIDAgMTA0LjUxMy01NC43NDUgMTA4Ljk2NS04Mi43NzNIMjA0Ljh2LTY2LjAwOWgxODEuMjYxem0xODUuNDA2IDYuNDM3VjE3OS4yaC01Ni4wMDF2NTUuNzMzaC01NS43MzN2NTYuMDAxaDU1LjczM3Y1NS43MzNoNTYuMDAxdi01NS43MzNINjI3LjJ2LTU2LjAwMWgtNTUuNzMzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZVBsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTY0IDM1NmMtNTUuMyAwLTEwMC00NC43LTEwMC0xMDBzNDQuNy0xMDAgMTAwLTEwMGMyNyAwIDQ5LjUgOS44IDY3IDI2LjJsLTI3LjEgMjYuMWMtNy40LTcuMS0yMC4zLTE1LjQtMzkuOC0xNS40LTM0LjEgMC02MS45IDI4LjItNjEuOSA2My4yIDAgMzQuOSAyNy44IDYzLjIgNjEuOSA2My4yIDM5LjYgMCA1NC40LTI4LjUgNTYuOC00My4xSDE2NHYtMzQuNGg5NC40YzEgNSAxLjYgMTAuMSAxLjYgMTYuNiAwIDU3LjEtMzguMyA5Ny42LTk2IDk3LjZ6bTIyMC04MS44aC0yOXYyOWgtMjkuMnYtMjloLTI5VjI0NWgyOXYtMjlIMzU1djI5aDI5djI5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR29vZ2xlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYsOEMxMTkuMSw4LDgsMTE5LjEsOCwyNTZTMTE5LjEsNTA0LDI1Niw1MDQsNTA0LDM5Mi45LDUwNCwyNTYsMzkyLjksOCwyNTYsOFpNMTg1LjMsMzgwYTEyNCwxMjQsMCwwLDEsMC0yNDhjMzEuMywwLDYwLjEsMTEsODMsMzIuM2wtMzMuNiwzMi42Yy0xMy4yLTEyLjktMzEuMy0xOS4xLTQ5LjQtMTkuMS00Mi45LDAtNzcuMiwzNS41LTc3LjIsNzguMVMxNDIuMywzMzQsMTg1LjMsMzM0YzMyLjYsMCw2NC45LTE5LjEsNzAuMS01My4zSDE4NS4zVjIzOC4xSDMwMi4yYTEwOS4yLDEwOS4yLDAsMCwxLDEuOSwyMC43YzAsNzAuOC00Ny41LDEyMS4yLTExOC44LDEyMS4yWk00MTUuNSwyNzMuOHYzNS41SDM4MFYyNzMuOEgzNDQuNVYyMzguM0gzODBWMjAyLjhoMzUuNXYzNS41aDM1LjJ2MzUuNVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHb29nbGVXYWxsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU2LjggMTI2LjhjMzcuNiA2MC42IDY0LjIgMTEzLjEgODQuMyAxNjIuNS04LjMgMzMuOC0xOC44IDY2LjUtMzEuMyA5OC4zLTEzLjItNTIuMy0yNi41LTEwMS4zLTU2LTE0OC41IDYuNS0zNi40IDIuMy03My42IDMtMTEyLjN6TTEwOS4zIDIwMEgxNi4xYy02LjUgMC0xMC41IDcuNS02LjUgMTIuN0M1MS44IDI2NyA4MS4zIDMzMC41IDEwMS4zIDQwMGgxMDMuNWMtMTYuMi02OS43LTM4LjctMTMzLjctODIuNS0xOTMuNS0zLTQtOC02LjUtMTMtNi41em00Ny44LTg4YzY4LjUgMTA4IDEzMCAyMzQuNSAxMzguMiAzNjhINDA5Yy0xMi0xMzgtNjguNC0yNjUtMTQzLjItMzY4SDE1Ny4xem0yNTEuOC02OC41Yy0xLjgtNi44LTguMi0xMS41LTE1LjItMTEuNWgtODguM2MtNS4zIDAtOSA1LTcuOCAxMC4zIDEzLjIgNDYuNSAyMi4zIDk1LjUgMjYuNSAxNDYgNDguMiA4Ni4yIDc5LjcgMTc4LjMgOTAuNiAyNzAuOCAxNS44LTYwLjUgMjUuMy0xMzMuNSAyNS4zLTIwMyAwLTczLjYtMTIuMS0xNDUuMS0zMS4xLTIxMi42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvb2dsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMjYxLjhDNDg4IDQwMy4zIDM5MS4xIDUwNCAyNDggNTA0IDExMC44IDUwNCAwIDM5My4yIDAgMjU2UzExMC44IDggMjQ4IDhjNjYuOCAwIDEyMyAyNC41IDE2Ni4zIDY0LjlsLTY3LjUgNjQuOUMyNTguNSA1Mi42IDk0LjMgMTE2LjYgOTQuMyAyNTZjMCA4Ni41IDY5LjEgMTU2LjYgMTUzLjcgMTU2LjYgOTguMiAwIDEzNS03MC40IDE0MC44LTEwNi45SDI0OHYtODUuM2gyMzYuMWMyLjMgMTIuNyAzLjkgMjQuOSAzLjkgNDEuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF0aXBheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMSA4IDAgMTE5LjEgMCAyNTZzMTExLjEgMjQ4IDI0OCAyNDggMjQ4LTExMS4xIDI0OC0yNDhTMzg0LjkgOCAyNDggOHptMTE0LjYgMjI2LjRsLTExMyAxNTIuNy0xMTIuNy0xNTIuN2MtOC43LTExLjktMTkuMS01MC40IDEzLjYtNzIgMjguMS0xOC4xIDU0LjYtNC4yIDY4LjUgMTEuOSAxNS45IDE3LjkgNDYuNiAxNi45IDYxLjcgMCAxMy45LTE2LjEgNDAuNC0zMCA2OC4xLTExLjkgMzIuOSAyMS42IDIyLjYgNjAgMTMuOCA3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmF2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4xIDIxMmM0LjQgNC40IDQuNCAxMS45IDAgMTYuM2wtOS43IDkuN2MtNC40IDQuNy0xMS45IDQuNy0xNi42IDBsLTEwLjUtMTAuNWMtNC40LTQuNy00LjQtMTEuOSAwLTE2LjZsOS43LTkuN2M0LjQtNC40IDExLjktNC40IDE2LjYgMGwxMC41IDEwLjh6bS0zMC4yLTE5LjdjMy0zIDMtNy44IDAtMTAuNS0yLjgtMy03LjUtMy0xMC41IDAtMi44IDIuOC0yLjggNy41IDAgMTAuNSAzLjEgMi44IDcuOCAyLjggMTAuNSAwem0tMjYgNS4zYy0zIDIuOC0zIDcuNSAwIDEwLjIgMi44IDMgNy41IDMgMTAuNSAwIDIuOC0yLjggMi44LTcuNSAwLTEwLjItMy0zLTcuNy0zLTEwLjUgMHptNzIuNS0xMy4zYy0xOS45LTE0LjQtMzMuOC00My4yLTExLjktNjguMSAyMS42LTI0LjkgNDAuNy0xNy4yIDU5LjguOCAxMS45IDExLjMgMjkuMyAyNC45IDE3LjIgNDguMi0xMi41IDIzLjUtNDUuMSAzMy4yLTY1LjEgMTkuMXptNDcuNy00NC41Yy04LjktMTAtMjMuMyA2LjktMTUuNSAxNi4xIDcuNCA5IDMyLjEgMi40IDE1LjUtMTYuMXpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tNjYuMiA0Mi42YzIuNS0xNi4xLTIwLjItMTYuNi0yNS4yLTI1LjctMTMuNi0yNC4xLTI3LjctMzYuOC01NC41LTMwLjQgMTEuNi04IDIzLjUtNi4xIDIzLjUtNi4xLjMtNi40IDAtMTMtOS40LTI0LjkgMy45LTEyLjUuMy0yMi40LjMtMjIuNCAxNS41LTguNiAyNi44LTI0LjQgMjkuMS00My4yIDMuNi0zMS0xOC44LTU5LjItNDkuOC02Mi44LTIyLjEtMi41LTQzLjcgNy43LTU0LjMgMjUuNy0yMy4yIDQwLjEgMS40IDcwLjkgMjIuNCA4MS40LTE0LjQtMS40LTM0LjMtMTEuOS00MC4xLTM0LjMtNi42LTI1LjcgMi44LTQ5LjggOC45LTYxLjQgMCAwLTQuNC01LjgtOC04LjkgMCAwLTEzLjggMC0yNC42IDUuMyAxMS45LTE1LjIgMjUuMi0xNC40IDI1LjItMTQuNCAwLTYuNC0uNi0xNC45LTMuNi0yMS42LTUuNC0xMS0yMy44LTEyLjktMzEuNyAyLjguMS0uMi4zLS40LjQtLjUtNSAxMS45LTEuMSA1NS45IDE2LjkgODcuMi0yLjUgMS40LTkuMSA2LjEtMTMgMTAtMjEuNiA5LjctNTYuMiA2MC4zLTU2LjIgNjAuMy0yOC4yIDEwLjgtNzcuMiA1MC45LTcwLjYgNzkuNy4zIDMgMS40IDUuNSAzIDcuNS0yLjggMi4yLTUuNSA1LTguMyA4LjMtMTEuOSAxMy44LTUuMyAzNS4yIDE3LjcgMjQuNCAxNS44LTcuMiAyOS42LTIwLjIgMzYuMy0zMC40IDAgMC01LjUtNS0xNi4zLTQuNCAyNy43LTYuNiAzNC4zLTkuNCA0Ni4yLTkuMSA4IDMuOSA4LTM0LjMgOC0zNC4zIDAtMTQuNy0yLjItMzEtMTEuMS00MS41IDEyLjUgMTIuMiAyOS4xIDMyLjcgMjggNjAuNi0uOCAxOC4zLTE1LjIgMjMtMTUuMiAyMy05LjEgMTYuNi00My4yIDY1LjktMzAuNCAxMDYgMCAwLTkuNy0xNC45LTEwLjItMjIuMS0xNy40IDE5LjQtNDYuNSA1Mi4zLTI0LjYgNjQuNSAyNi42IDE0LjcgMTA4LjgtODguNiAxMjYuMi0xNDIuMyAzNC42LTIwLjggNTUuNC00Ny4zIDYzLjktNjUgMjIgNDMuNSA5NS4zIDk0LjUgMTAxLjEgNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpcGZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyLjUgMzAxLjRjMC03My44IDEwNS4xLTEyMi41IDEwNS4xLTIwMyAwLTQ3LjEtMzQtODgtMzkuMS05MC40LjQgMy4zLjYgNi43LjYgMTBDMTc5LjEgMTEwLjEgMzIgMTcxLjkgMzIgMjg2LjZjMCA0OS44IDMyLjIgNzkuMiA2Ni41IDEwOC4zIDY1LjEgNDYuNyA3OC4xIDcxLjQgNzguMSA4Ni42IDAgMTAuMS00LjggMTctNC44IDIyLjMgMTMuMS0xNi43IDE3LjQtMzEuOSAxNy41LTQ2LjQgMC0yOS42LTIxLjctNTYuMy00NC4yLTg2LjUtMTYtMjIuMy0zMi42LTQyLjYtMzIuNi02OS41em0yMDUuMy0zOWMtMTIuMS02Ni44LTc4LTEyNC40LTk0LjctMTMwLjlsNCA3LjJjMi40IDUuMSAzLjQgMTAuOSAzLjQgMTcuMSAwIDQ0LjctNTQuMiAxMTEuMi01Ni42IDExNi43LTIuMiA1LjEtMy4yIDEwLjUtMy4yIDE1LjggMCAyMC4xIDE1LjIgNDIuMSAxNy45IDQyLjEgMi40IDAgNTYuNi01NS40IDU4LjEtODcuNyA2LjQgMTEuNyA5LjEgMjIuNiA5LjEgMzMuNCAwIDQxLjItNDEuOCA5Ni45LTQxLjggOTYuOSAwIDExLjYgMzEuOSA1My4yIDM1LjUgNTMuMiAxIDAgMi4yLTEuNCAzLjItMi40IDM3LjktMzkuMyA2Ny4zLTg1IDY3LjMtMTM2LjggMC04LS43LTE2LjItMi4yLTI0LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3J1bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuMyAxODkuM2MtMS4xIDEwIDUuMiAxOS4xIDUuMiAxOS4xLjctNy41IDIuMi0xMi44IDQtMTYuNi40IDEwLjMgMy4yIDIzLjUgMTIuOCAzNC4xIDYuOSA3LjYgMzUuNiAyMy4zIDU0LjkgNi4xIDEgMi40IDIuMSA1LjMgMyA4LjUgMi45IDEwLjMtMi43IDI1LjMtMi43IDI1LjNzMTUuMS0xNy4xIDEzLjktMzIuNWMxMC44LS41IDIxLjQtOC40IDIxLjEtMTkuNSAwIDAtMTguOSAxMC40LTM1LjUtOC44LTkuNy0xMS4yLTQwLjktNDItODMuMS0zMS44IDQuMyAxIDguOSAyLjQgMTMuNSA0LjFoLS4xYy00LjIgMi02LjUgNy4xLTcgMTJ6bTI4LjMtMS44YzE5LjUgMTEgMzcuNCAyNS43IDQ0LjkgMzctNS43IDMuMy0yMS43IDEwLjQtMzgtMS43LTEwLjMtNy42LTkuOC0yNi4yLTYuOS0zNS4zem0xNDIuMSA0NS44Yy0xLjIgMTUuNSAxMy45IDMyLjUgMTMuOSAzMi41cy01LjYtMTUtMi43LTI1LjNjLjktMy4yIDItNiAzLTguNSAxOS4zIDE3LjMgNDggMS41IDU0LjgtNi4xIDkuNi0xMC42IDEyLjMtMjMuOCAxMi44LTM0LjEgMS44IDMuOCAzLjQgOS4xIDQgMTYuNiAwIDAgNi40LTkuMSA1LjItMTkuMS0uNi01LTIuOS0xMC03LTExLjhoLS4xYzQuNi0xLjggOS4yLTMuMiAxMy41LTQuMS00Mi4zLTEwLjItNzMuNCAyMC42LTgzLjEgMzEuOC0xNi43IDE5LjItMzUuNSA4LjgtMzUuNSA4LjgtLjIgMTAuOSAxMC40IDE4LjkgMjEuMiAxOS4zem02Mi43LTQ1LjhjMyA5LjEgMy40IDI3LjctNyAzNS40LTE2LjMgMTIuMS0zMi4yIDUtMzcuOSAxLjYgNy41LTExLjQgMjUuNC0yNiA0NC45LTM3ek0xNjAgNDE4LjVoLTI5LjRjLTUuNSAwLTguMiAxLjYtOS41IDIuOS0xLjkgMi0yLjIgNC43LS45IDguMSAzLjUgOS4xIDExLjQgMTYuNSAxMy43IDE4LjYgMy4xIDIuNyA3LjUgNC4zIDExLjggNC4zIDQuNCAwIDguMy0xLjcgMTEtNC42IDcuNS04LjIgMTEuOS0xNy4xIDEzLTE5LjguNi0xLjUgMS4zLTQuNS0uOS02LjgtMS44LTEuOC00LjctMi43LTguOC0yLjd6bTE4OS4yLTEwMS4yYy0yLjQgMTcuOS0xMyAzMy44LTI0LjYgNDMuNy0zLjEtMjIuNy0zLjctNTUuNS0zLjctNjIuNCAwLTE0LjcgOS41LTI0LjUgMTIuMi0yNi4xIDIuNS0xLjUgNS40LTMgOC4zLTQuNiAxOC05LjYgNDAuNC0yMS42IDQwLjQtNDMuNyAwLTE2LjItOS4zLTIzLjItMTUuNC0yNy44LS44LS42LTEuNS0xLjEtMi4yLTEuNy0yLjEtMS43LTMuNy0zLTQuMy00LjQtNC40LTkuOC0zLjYtMzQuMi0xLjctMzcuNi42LS42IDE2LjctMjAuOSAxMS44LTM5LjItMi03LjQtNi45LTEzLjMtMTQuMS0xNy01LjMtMi43LTExLjktNC4yLTE5LjUtNC41LS4xLTItLjUtMy45LS45LTUuOS0uNi0yLjYtMS4xLTUuMy0uOS04LjEuNC00LjcuOC05IDIuMi0xMS4zIDguNC0xMy4zIDI4LjgtMTcuNiAyOS0xNy42bDEyLjMtMi40LTguMS05LjVjLS4xLS4yLTE3LjMtMTcuNS00Ni4zLTE3LjUtNy45IDAtMTYgMS4zLTI0LjEgMy45LTI0LjIgNy44LTQyLjkgMzAuNS00OS40IDM5LjMtMy4xLTEtNi4zLTEuOS05LjYtMi43LTQuMi0xNS44IDktMzguNSA5LTM4LjVzLTEzLjYtMy0zMy43IDE1LjJjLTIuNi02LjUtOC4xLTIwLjUtMS44LTM3LjJDMTg0LjYgMTAuMSAxNzcuMiAyNiAxNzUgNDAuNGMtNy42LTUuNC02LjctMjMuMS03LjItMjcuNi03LjUuOS0yOS4yIDIxLjktMjguMiA0OC4zLTIgLjUtMy45IDEuMS01LjkgMS43LTYuNS04LjgtMjUuMS0zMS41LTQ5LjQtMzkuMy03LjktMi4yLTE2LTMuNS0yMy45LTMuNS0yOSAwLTQ2LjEgMTcuMy00Ni4zIDE3LjVMNiA0Ni45bDEyLjMgMi40Yy4yIDAgMjAuNiA0LjMgMjkgMTcuNiAxLjQgMi4yIDEuOCA2LjYgMi4yIDExLjMuMiAyLjgtLjQgNS41LS45IDguMS0uNCAxLjktLjggMy45LS45IDUuOS03LjcuMy0xNC4yIDEuOC0xOS41IDQuNS03LjIgMy43LTEyLjEgOS42LTE0LjEgMTctNSAxOC4yIDExLjIgMzguNSAxMS44IDM5LjIgMS45IDMuNCAyLjcgMjcuOC0xLjcgMzcuNi0uNiAxLjQtMi4yIDIuNy00LjMgNC40LS43LjUtMS40IDEuMS0yLjIgMS43LTYuMSA0LjYtMTUuNCAxMS43LTE1LjQgMjcuOCAwIDIyLjEgMjIuNCAzNC4xIDQwLjQgNDMuNyAzIDEuNiA1LjggMy4xIDguMyA0LjYgMi43IDEuNiAxMi4yIDExLjQgMTIuMiAyNi4xIDAgNi45LS42IDM5LjctMy43IDYyLjQtMTEuNi05LjktMjIuMi0yNS45LTI0LjYtNDMuOCAwIDAtMjkuMiAyMi42LTIwLjYgNzAuOCA1LjIgMjkuNSAyMy4yIDQ2LjEgNDcgNTQuNyA4LjggMTkuMSAyOS40IDQ1LjcgNjcuMyA0OS42QzE0MyA1MDQuMyAxNjMgNTEyIDE5Mi4yIDUxMmguMmMyOS4xIDAgNDkuMS03LjcgNjMuNi0xOS41IDM3LjktMy45IDU4LjUtMzAuNSA2Ny4zLTQ5LjYgMjMuOC04LjcgNDEuNy0yNS4yIDQ3LTU0LjcgOC4yLTQ4LjQtMjEuMS03MC45LTIxLjEtNzAuOXpNMzA1LjcgMzcuN2M1LjYtMS44IDExLjYtMi43IDE3LjctMi43IDExIDAgMTkuOSAzIDI0LjcgNS0zLjEgMS40LTYuNCAzLjItOS43IDUuMy0yLjQtLjQtNS42LS44LTkuMi0uOC0xMC41IDAtMjAuNSAzLjEtMjguNyA4LjktMTIuMyA4LjctMTggMTYuOS0yMC43IDIyLjQtMi4yLTEuMy00LjUtMi41LTcuMS0zLjctMS42LS44LTMuMS0xLjUtNC43LTIuMiA2LjEtOS4xIDE5LjktMjYuNSAzNy43LTMyLjJ6bTIxIDE4LjJjLS44IDEtMS42IDIuMS0yLjMgMy4yLTMuMyA1LjItMy45IDExLjYtNC40IDE3LjgtLjUgNi40LTEuMSAxMi41LTQuNCAxNy00LjIuOC04LjEgMS43LTExLjUgMi43LTIuMy0zLjEtNS42LTctMTAuNS0xMS4yIDEuNC00LjggNS41LTE2LjEgMTMuNS0yMi41IDUuNi00LjMgMTIuMi02LjcgMTkuNi03ek00NS42IDQ1LjNjLTMuMy0yLjItNi42LTQtOS43LTUuMyA0LjgtMiAxMy43LTUgMjQuNy01IDYuMSAwIDEyIC45IDE3LjcgMi43IDE3LjggNS44IDMxLjYgMjMuMiAzNy43IDMyLjEtMS42LjctMy4yIDEuNC00LjggMi4yLTIuNSAxLjItNC45IDIuNS03LjEgMy43LTIuNi01LjQtOC4zLTEzLjctMjAuNy0yMi40LTguMy01LjgtMTguMi04LjktMjguOC04LjktMy40LjEtNi42LjUtOSAuOXptNDQuNyA0MC4xYy00LjkgNC4yLTguMyA4LTEwLjUgMTEuMi0zLjQtLjktNy4zLTEuOS0xMS41LTIuN0M2NSA4OS41IDY0LjUgODMuNCA2NCA3N2MtLjUtNi4yLTEuMS0xMi42LTQuNC0xNy44LS43LTEuMS0xLjUtMi4yLTIuMy0zLjIgNy40LjMgMTQgMi42IDE5LjUgNyA4IDYuMyAxMi4xIDE3LjYgMTMuNSAyMi40ek01OC4xIDI1OS45Yy0yLjctMS42LTUuNi0zLjEtOC40LTQuNi0xNC45LTgtMzAuMi0xNi4zLTMwLjItMzAuNSAwLTExLjEgNC4zLTE0LjYgOC45LTE4LjJsLjUtLjRjLjctLjYgMS40LTEuMiAyLjItMS44LS45IDcuMi0xLjkgMTMuMy0yLjcgMTQuOSAwIDAgMTIuMS0xNSAxNS43LTQ0LjMgMS40LTExLjUtMS4xLTM0LjMtNS4xLTQzIC4yIDQuOSAwIDkuOC0uMyAxNC40LS40LS44LS44LTEuNi0xLjMtMi4yLTMuMi00LTExLjgtMTcuNS05LjQtMjYuNi45LTMuNSAzLjEtNiA2LjctNy44IDMuOC0xLjkgOC44LTIuOSAxNS4xLTIuOSAxMi4zIDAgMjUuOSAzLjcgMzIuOSA2IDI1LjEgOCA1NS40IDMwLjkgNjQuMSAzNy43LjIuMi40LjMuNC4zbDUuNiAzLjktMy41LTUuOGMtLjItLjMtMTkuMS0zMS40LTUzLjItNDYuNSAyLTIuOSA3LjQtOC4xIDIxLjYtMTUuMSAyMS40LTEwLjUgNDYuNS0xNS44IDc0LjMtMTUuOCAyNy45IDAgNTIuOSA1LjMgNzQuMyAxNS44IDE0LjIgNi45IDE5LjYgMTIuMiAyMS42IDE1LjEtMzQgMTUuMS01Mi45IDQ2LjItNTMuMSA0Ni41bC0zLjUgNS44IDUuNi0zLjlzLjItLjEuNC0uM2M4LjctNi44IDM5LTI5LjggNjQuMS0zNy43IDctMi4yIDIwLjYtNiAzMi45LTYgNi4zIDAgMTEuMyAxIDE1LjEgMi45IDMuNSAxLjggNS43IDQuNCA2LjcgNy44IDIuNSA5LjEtNi4xIDIyLjYtOS40IDI2LjYtLjUuNi0uOSAxLjMtMS4zIDIuMi0uMy00LjYtLjUtOS41LS4zLTE0LjQtNCA4LjgtNi41IDMxLjUtNS4xIDQzIDMuNiAyOS4zIDE1LjcgNDQuMyAxNS43IDQ0LjMtLjgtMS42LTEuOC03LjctMi43LTE0LjkuNy42IDEuNSAxLjIgMi4yIDEuOGwuNS40YzQuNiAzLjcgOC45IDcuMSA4LjkgMTguMiAwIDE0LjItMTUuNCAyMi41LTMwLjIgMzAuNS0yLjkgMS41LTUuNyAzLjEtOC40IDQuNi04LjcgNS0xOCAxNi43LTE5LjEgMzQuMi0uOSAxNC42LjkgNDkuOSAzLjQgNzUuOS0xMi40IDQuOC0yNi43IDYuNC0zOS43IDYuOC0yLTQuMS0zLjktOC41LTUuNS0xMy4xLS43LTItMTkuNi01MS4xLTI2LjQtNjIuMiA1LjUgMzkgMTcuNSA3My43IDIzLjUgODkuNi0zLjUtLjUtNy4zLS43LTExLjctLjdoLTExN2MtNC40IDAtOC4zLjMtMTEuNy43IDYtMTUuOSAxOC4xLTUwLjYgMjMuNS04OS42LTYuOCAxMS4yLTI1LjcgNjAuMy0yNi40IDYyLjItMS42IDQuNi0zLjUgOS01LjUgMTMuMS0xMy0uNC0yNy4yLTItMzkuNy02LjggMi41LTI2IDQuMy02MS4yIDMuNC03NS45LS45LTE3LjQtMTAuMy0yOS4yLTE5LTM0LjJ6TTM0LjggNDA0LjZjLTEyLjEtMjAtOC43LTU0LjEtMy43LTU5LjEgMTAuOSAzNC40IDQ3LjIgNDQuMyA3NC40IDQ1LjQtMi43IDQuMi01LjIgNy42LTcgMTBsLTEuNCAxLjRjLTcuMiA3LjgtOC42IDE4LjUtNC4xIDMxLjgtMjIuNy0uMS00Ni4zLTkuOC01OC4yLTI5LjV6bTQ1LjcgNDMuNWM2IDEuMSAxMi4yIDEuOSAxOC42IDIuNCAzLjUgOCA3LjQgMTUuOSAxMi4zIDIzLjEtMTQuNC01LjktMjQuNC0xNi0zMC45LTI1LjV6TTE5MiA0OTguMmMtNjAuNi0uMS03OC4zLTQ1LjgtODQuOS02NC43LTMuNy0xMC41LTMuNC0xOC4yLjktMjMuMSAyLjktMy4zIDkuNS03LjIgMjQuNi03LjJoMTE4LjhjMTUuMSAwIDIxLjggMy45IDI0LjYgNy4yIDQuMiA0LjggNC41IDEyLjYuOSAyMy4xLTYuNiAxOC44LTI0LjMgNjQuNi04NC45IDY0Ljd6bTgwLjYtMjQuNmM0LjktNy4yIDguOC0xNS4xIDEyLjMtMjMuMSA2LjQtLjUgMTIuNi0xLjMgMTguNi0yLjQtNi41IDkuNS0xNi41IDE5LjYtMzAuOSAyNS41em03Ni42LTY5Yy0xMiAxOS43LTM1LjYgMjkuMy01OC4xIDI5LjcgNC41LTEzLjMgMy4xLTI0LjEtNC4xLTMxLjgtLjQtLjUtLjktMS0xLjQtMS41LTEuOC0yLjQtNC4zLTUuOC03LTEwIDI3LjItMS4yIDYzLjUtMTEgNzQuNC00NS40IDUgNSA4LjQgMzkuMS0zLjggNTl6TTE5MS45IDE4Ny43aC4yYzEyLjctLjEgMjcuMi0xNy44IDI3LjItMTcuOC05LjkgNi0xOC44IDguMS0yNy4zIDguMy04LjUtLjItMTcuNC0yLjMtMjcuMy04LjMgMCAwIDE0LjUgMTcuNiAyNy4yIDE3Ljh6bTYxLjcgMjMwLjdoLTI5LjRjLTQuMiAwLTcuMi45LTguOSAyLjctMi4yIDIuMy0xLjUgNS4yLS45IDYuNyAxIDIuNiA1LjUgMTEuMyAxMyAxOS4zIDIuNyAyLjkgNi42IDQuNSAxMSA0LjVzOC43LTEuNiAxMS44LTQuMmMyLjMtMiAxMC4yLTkuMiAxMy43LTE4LjEgMS4zLTMuMyAxLTYtLjktNy45LTEuMy0xLjMtNC0yLjktOS40LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3VpbGRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuNDI3LDY0SDQuNTcxYzAsMTAzLjI2LDIyLjE5MiwxODAuMDYsNDMuNDE4LDIyMi4zNThDMTEyLjA0Niw0MTQuMTM1LDIyNCw0NDgsMjI1LjI1Niw0NDhhMzEyLjgyNCwzMTIuODI0LDAsMCwwLDE0MC41NS0xMDMuNDc3YzI1LjkwNy0zMy45MjMsNTMuMS04Ny4xOSw2NS45MTYtMTQ1Ljc2MUgxNzEuODMzYzQuMTQsMzYuNDI5LDIyLjE3Nyw2Ny45NDYsNDUuMSw4Ni45NDRoODguNTg5Yy0xNy4wMTIsMjguMjEzLTQ4LjE4Niw1NC40LTgwLjQ1Niw2OS40ODItMzEuMjMyLTEzLjI1OS02OS4wOS00Ni41NDQtOTYuNTQ4LTk4LjM2Mi0yNi43MjYtNTMuODMzLTI3LjA5Mi0xMDUuODgzLTI3LjA5Mi0xMDUuODgzSDQzNy41NzNBNjI1LjkxLDYyNS45MSwwLDAsMCw0NDMuNDI3LDY0WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUd1bHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjggMzkxLjFsLTE0LjEgMjQuNi00LjYgODAuMmMwIDguOS0yOC4zIDE2LjEtNjMuMSAxNi4xcy02My4xLTcuMi02My4xLTE2LjFsLTUuOC03OS40LTE0LjktMjUuNGM0MS4yIDE3LjMgMTI2IDE2LjcgMTY1LjYgMHptLTE5Ni0yNTMuM2wxMy42IDEyNS41YzUuOS0yMCAyMC44LTQ3IDQwLTU1LjIgNi4zLTIuNyAxMi43LTIuNyAxOC43LjkgNS4yIDMgOS42IDkuMyAxMC4xIDExLjggMS4yIDYuNS0yIDkuMS00LjUgOS4xLTMgMC01LjMtNC42LTYuOC03LjMtNC4xLTcuMy0xMC4zLTcuNi0xNi45LTIuOC02LjkgNS0xMi45IDEzLjQtMTcuMSAyMC43LTUuMSA4LjgtOS40IDE4LjUtMTIgMjguMi0xLjUgNS42LTIuOSAxNC42LS42IDE5LjkgMSAyLjIgMi41IDMuNiA0LjkgMy42IDUgMCAxMi4zLTYuNiAxNS44LTEwLjEgNC41LTQuNSAxMC4zLTExLjUgMTIuNS0xNmw1LjItMTUuNWMyLjYtNi44IDkuOS01LjYgOS45IDAgMCAxMC4yLTMuNyAxMy42LTEwIDM0LjctNS44IDE5LjUtNy42IDI1LjgtNy42IDI1LjgtLjcgMi44LTMuNCA3LjUtNi4zIDcuNS0xLjIgMC0yLjEtLjQtMi42LTEuMi0xLTEuNC0uOS01LjMtLjgtNi4zLjItMy4yIDYuMy0yMi4yIDcuMy0yNS4yLTIgMi4yLTQuMSA0LjQtNi40IDYuNi01LjQgNS4xLTE0LjEgMTEuOC0yMS41IDExLjgtMy40IDAtNS42LS45LTcuNy0yLjRsNy42IDc5LjZjMiA1IDM5LjIgMTcuMSA4OC4yIDE3LjEgNDkuMSAwIDg2LjMtMTIuMiA4OC4yLTE3LjFsMTAuOS05NC42Yy01LjcgNS4yLTEyLjMgMTEuNi0xOS42IDE0LjgtNS40IDIuMy0xNy40IDMuOC0xNy40LTUuNyAwLTUuMiA5LjEtMTQuOCAxNC40LTIxLjUgMS40LTEuNyA0LjctNS45IDQuNy04LjEgMC0yLjktNi0yLjItMTEuNyAyLjUtMy4yIDIuNy02LjIgNi4zLTguNyA5LjctNC4zIDYtNi42IDExLjItOC41IDE1LjUtNi4yIDE0LjItNC4xIDguNi05LjEgMjItNSAxMy4zLTQuMiAxMS44LTUuMiAxNC0uOSAxLjktMi4yIDMuNS00IDQuNS0xLjkgMS00LjUuOS02LjEtLjMtLjktLjYtMS4zLTEuOS0xLjMtMy43IDAtLjkuMS0xLjguMy0yLjcgMS41LTYuMSA3LjgtMTguMSAxNS0zNC4zIDEuNi0zLjcgMS0yLjYuOC0yLjMtNi4yIDYtMTAuOSA4LjktMTQuNCAxMC41LTUuOCAyLjYtMTMgMi42LTE0LjUtNC4xLS4xLS40LS4xLS44LS4yLTEuMi0xMS44IDkuMi0yNC4zIDExLjctMjAtOC4xLTQuNiA4LjItMTIuNiAxNC45LTIyLjQgMTQuOS00LjEgMC03LjEtMS40LTguNi01LjEtMi4zLTUuNSAxLjMtMTQuOSA0LjYtMjMuOCAxLjctNC41IDQtOS45IDcuMS0xNi4yIDEuNi0zLjQgNC4yLTUuNCA3LjYtNC41LjYuMiAxLjEuNCAxLjYuNyAyLjYgMS44IDEuNiA0LjUuMyA3LjItMy44IDcuNS03LjEgMTMtOS4zIDIwLjgtLjkgMy4zLTIgOSAxLjUgOSAyLjQgMCA0LjctLjggNi45LTIuNCA0LjYtMy40IDguMy04LjUgMTEuMS0xMy41IDItMy42IDQuNC04LjMgNS42LTEyLjMuNS0xLjcgMS4xLTMuMyAxLjgtNC44IDEuMS0yLjUgMi42LTUuMSA1LjItNS4xIDEuMyAwIDIuNC41IDMuMiAxLjUgMS43IDIuMiAxLjMgNC41LjQgNi45LTIgNS42LTQuNyAxMC42LTYuOSAxNi43LTEuMyAzLjUtMi43IDgtMi43IDExLjcgMCAzLjQgMy43IDIuNiA2LjggMS4yIDIuNC0xLjEgNC44LTIuOCA2LjgtNC41IDEuMi00LjkuOS0zLjggMjYuNC02OC4yIDEuMy0zLjMgMy43LTQuNyA2LjEtNC43IDEuMiAwIDIuMi40IDMuMiAxLjEgMS43IDEuMyAxLjcgNC4xIDEgNi4yLS43IDEuOS0uNiAxLjMtNC41IDEwLjUtNS4yIDEyLjEtOC42IDIwLjgtMTMuMiAzMS45LTEuOSA0LjYtNy43IDE4LjktOC43IDIyLjMtLjYgMi4yLTEuMyA1LjggMSA1LjggNS40IDAgMTkuMy0xMy4xIDIzLjEtMTcgLjItLjMuNS0uNC45LS42LjYtMS45IDEuMi0zLjcgMS43LTUuNSAxLjQtMy44IDIuNy04LjIgNS4zLTExLjMuOC0xIDEuNy0xLjYgMi43LTEuNiAyLjggMCA0LjIgMS4yIDQuMiA0IDAgMS4xLS43IDUuMS0xLjEgNi4yIDEuNC0xLjUgMi45LTMgNC41LTQuNSAxNS0xMy45IDI1LjctNi44IDI1LjcuMiAwIDcuNC04LjkgMTcuNy0xMy44IDIzLjQtMS42IDEuOS00LjkgNS40LTUgNi40IDAgMS4zLjkgMS44IDIuMiAxLjggMiAwIDYuNC0zLjUgOC00LjcgNS0zLjkgMTEuOC05LjkgMTYuNi0xNC4xbDE0LjgtMTM2LjhjLTMwLjUgMTcuMS0xOTcuNiAxNy4yLTIyOC4zLjJ6bTIyOS43LTguNWMwIDIxLTIzMS4yIDIxLTIzMS4yIDAgMC04LjggNTEuOC0xNS45IDExNS42LTE1LjkgOSAwIDE3LjguMSAyNi4zLjRsMTIuNi00OC43TDIyOC4xLjZjMS40LTEuNCA1LjgtLjIgOS45IDMuNXM2LjYgNy45IDUuMyA5LjNsLS4xLjFMMTg1LjkgNzRsLTEwIDQwLjdjMzkuOSAyLjYgNjcuNiA4LjEgNjcuNiAxNC42em0tNjkuNCA0LjZjMC0uOC0uOS0xLjUtMi41LTIuMWwtLjIuOGMwIDEuMy01IDIuNC0xMS4xIDIuNHMtMTEuMS0xLjEtMTEuMS0yLjRjMC0uMSAwLS4yLjEtLjNsLjItLjdjLTEuOC42LTMgMS40LTMgMi4zIDAgMi4xIDYuMiAzLjcgMTMuNyAzLjcgNy43LjEgMTMuOS0xLjYgMTMuOS0zLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMS4yIDIyOS4ySDIxYy4xLS4xLjItLjMuMy0uNCAwIC4xIDAgLjMtLjEuNHptMjE4IDUzLjlWMzg0aC0zMS40VjI4MS4zTDEyOCAxMjhoMzcuM2M1Mi41IDk4LjMgNDkuMiAxMDEuMiA1OS4zIDEyNS42IDEyLjMtMjcgNS44LTI0LjQgNjAuNi0xMjUuNkgzMjBsLTgwLjggMTU1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFja2VyTmV3cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMydjQ0OGg0NDhWMzJIMHptMjEuMiAxOTcuMkgyMWMuMS0uMS4yLS4zLjMtLjQgMCAuMSAwIC4zLS4xLjR6bTIxOCA1My45VjM4NGgtMzEuNFYyODEuM0wxMjggMTI4aDM3LjNjNTIuNSA5OC4zIDQ5LjIgMTAxLjIgNTkuMyAxMjUuNiAxMi4zLTI3IDUuOC0yNC40IDYwLjYtMTI1LjZIMzIwbC04MC44IDE1NS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhY2tlcnJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc3LjUgMTI4QzQ2MyAxMDMuMDUgMjg1LjEzIDAgMjU2LjE2IDBTNDkuMjUgMTAyLjc5IDM0Ljg0IDEyOHMtMTQuNDkgMjMwLjggMCAyNTYgMTkyLjM4IDEyOCAyMjEuMzIgMTI4UzQ2MyA0MDkuMDggNDc3LjQ5IDM4NHMxNC41MS0yMzEgLjAxLTI1NnpNMzE2LjEzIDQxNC4yMmMtNCAwLTQwLjkxLTM1Ljc3LTM4LTM4LjY5Ljg3LS44NyA2LjI2LTEuNDggMTcuNTUtMS44MyAwLTI2LjIzLjU5LTY4LjU5Ljk0LTg2LjMyIDAtMi0uNDQtMy40My0uNDQtNS44NWgtNzkuOTNjMCA3LjEtLjQ2IDM2LjIgMS4zNyA3Mi44OC4yMyA0LjU0LTEuNTggNi01Ljc0IDUuOTQtMTAuMTMgMC0yMC4yNy0uMTEtMzAuNDEtLjA4LTQuMSAwLTUuODctMS41My01Ljc0LTYuMTEuOTItMzMuNDQgMy04NC0uMTUtMjEyLjY3di0zLjE3Yy05LjY3LS4zNS0xNi4zOC0xLTE3LjI2LTEuODQtMi45Mi0yLjkyIDM0LjU0LTM4LjY5IDM4LjQ5LTM4LjY5czQxLjE3IDM1Ljc4IDM4LjI3IDM4LjY5Yy0uODcuODctNy45IDEuNDktMTYuNzcgMS44NHYzLjE2Yy0yLjQyIDI1Ljc1LTIgNzkuNTktMi42MyAxMDUuMzloODAuMjZjMC00LjU1LjM5LTM0Ljc0LTEuMi04My42NC0uMS0zLjM5Ljk1LTUuMTcgNC4yMS01LjIgMTEuMDctLjA4IDIyLjE1LS4xMyAzMy4yMy0uMDYgMy40NiAwIDQuNTcgMS43MiA0LjUgNS4zOEMzMzMgMzU0LjY0IDMzNiAzNDEuMjkgMzM2IDM3My42OWM4Ljg3LjM1IDE2LjgyIDEgMTcuNjkgMS44NCAyLjg4IDIuOTEtMzMuNjIgMzguNjktMzcuNTggMzguNjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGlwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTEuNiAxNTcuNmMwLTEuOS0uOS0yLjgtMi44LTIuOGgtNDAuOWMtMS42IDAtMi43IDEuNC0yLjcgMi44djIwMS44YzAgMS40IDEuMSAyLjggMi43IDIuOGg0MC45YzEuOSAwIDIuOC0uOSAyLjgtMi44ek0xNTYuNSAxNjhjLTE2LjEtMTEuOC0zNi4zLTE3LjktNjAuMy0xOC0xOC4xLS4xLTM0LjYgMy43LTQ5LjggMTEuNFY4MC4yYzAtMS44LS45LTIuNy0yLjgtMi43SDIuN2MtMS44IDAtMi43LjktMi43IDIuN3YyNzkuMmMwIDEuOS45IDIuOCAyLjcgMi44aDQxYzEuOSAwIDIuOC0uOSAyLjgtMi44VjIyMy4zYzAtLjgtMi44LTI3IDQ1LjgtMjcgNDguNSAwIDQ1LjggMjYuMSA0NS44IDI3djEyMi42YzAgOSA3LjMgMTYuMyAxNi40IDE2LjNoMjcuM2MxLjggMCAyLjctLjkgMi43LTIuOFYyMjMuM2MwLTIzLjQtOS4zLTQxLjgtMjgtNTUuM3ptNDc4LjQgMTEwLjFjLTYuOC0xNS43LTE4LjQtMjctMzQuOS0zNC4xbC01Ny42LTI1LjNjLTguNi0zLjYtOS4yLTExLjItMi42LTE2LjEgNy40LTUuNSA0NC4zLTEzLjkgODQgNi44IDEuNyAxIDQtLjMgNC0yLjR2LTQ0LjdjMC0xLjMtLjYtMi4xLTEuOS0yLjYtMTcuNy02LjYtMzYuMS05LjktNTUuMS05LjktMjYuNSAwLTQ1LjMgNS44LTU4LjUgMTUuNC0uNS40LTI4LjQgMjAtMjIuNyA1My43IDMuNCAxOS42IDE1LjggMzQuMiAzNy4yIDQzLjZsNTMuNiAyMy41YzExLjYgNS4xIDE1LjIgMTMuMyAxMi4yIDIxLjItMy43IDkuMS0xMy4yIDEzLjYtMzYuNSAxMy42LTI0LjMgMC00NC43LTguOS01OC40LTE5LjEtMi4xLTEuNC00LjQuMi00LjQgMi4zdjM0LjRjMCAxMC40IDQuOSAxNy4zIDE0LjYgMjAuNyAxNS42IDUuNSAzMS42IDguMiA0OC4yIDguMiAxMi43IDAgMjUuOC0xLjIgMzYuMy00LjMuNy0uMyAzNi04LjkgNDUuNi00NS44IDMuNS0xMy41IDIuNC0yNi41LTMuMS0zOS4xek0zNzYuMiAxNDkuOGMtMzEuNyAwLTEwNC4yIDIwLjEtMTA0LjIgMTAzLjV2MTgzLjVjMCAuOC42IDIuNyAyLjcgMi43aDQwLjljMS45IDAgMi44LS45IDIuOC0yLjdWMzQ4YzE2LjUgMTIuNyAzNS44IDE5LjEgNTcuNyAxOS4xIDYwLjUgMCAxMDguNy00OC41IDEwOC43LTEwOC43LjEtNjAuMy00OC4yLTEwOC42LTEwOC42LTEwOC42em0wIDE3MC45Yy0xNy4yIDAtMzEuOS02LjEtNDQtMTguMi0xMi4yLTEyLjItMTguMi0yNi44LTE4LjItNDQgMC0zNC41IDI3LjYtNjIuMiA2Mi4yLTYyLjIgMzQuNSAwIDYyLjIgMjcuNiA2Mi4yIDYyLjIuMSAzNC4zLTI3LjMgNjIuMi02Mi4yIDYyLjJ6TTIyOC4zIDcyLjVjLTE1LjkgMC0yOC44IDEyLjktMjguOSAyOC45IDAgMTUuNiAxMi43IDI4LjkgMjguOSAyOC45czI4LjktMTMuMSAyOC45LTI4LjljMC0xNi4yLTEzLTI4LjktMjguOS0yOC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpcmVBSGVscGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My4xIDBINzEuOUM2Ny45IDM3LjMgMzcuNCA2Ny44IDAgNzEuN3YzNzEuNWMzNy40IDQuOSA2NiAzMi40IDcxLjkgNjguOGgzNzIuMmMzLTM2LjQgMzIuNS02NS44IDY3LjktNjkuOFY3MS43Yy0zNi40LTUuOS02NS0zNS4zLTY4LjktNzEuN3ptLTM3IDQwNC45Yy0zNi4zIDAtMTguOC0yLTU1LjEtMi0zNS44IDAtMjEgMi01Ni4xIDItNS45IDAtNC45LTguMiAwLTkuOCAyMi44LTcuNiAyMi45LTEwLjIgMjQuNi0xMi44IDEwLjQtMTUuNiA1LjktODMgNS45LTExMyAwLTUuMy02LjQtMTIuOC0xMy44LTEyLjhIMjAwLjRjLTcuNCAwLTEzLjggNy41LTEzLjggMTIuOCAwIDMwLTQuNSA5Ny40IDUuOSAxMTMgMS43IDIuNSAxLjggNS4yIDI0LjYgMTIuOCA0LjkgMS42IDYgOS44IDAgOS44LTM1LjEgMC0yMC4zLTItNTYuMS0yLTM2LjMgMC0xOC44IDItNTUuMSAyLTcuOSAwLTUuOC0xMC44IDAtMTAuOCAxMC4yLTMuNCAxMy41LTMuNSAyMS43LTEzLjggNy43LTEyLjkgNy45LTQ0LjQgNy45LTEyNy44VjE1MS4zYzAtMjIuMi0xMi4yLTI4LjMtMjguNi0zMi40LTguOC0yLjItNC0xMS44IDEtMTEuOCAzNi41IDAgMjAuNiAyIDU3LjEgMiAzMi43IDAgMTYuNS0yIDQ5LjItMiAzLjMgMCA4LjUgOC4zIDEgMTAuOC00LjkgMS42LTI3LjYgMy43LTI3LjYgMzkuMyAwIDQ1LjYtLjIgNTUuOCAxIDY4LjggMCAxLjMgMi4zIDEyLjggMTIuOCAxMi44aDEwOS4yYzEwLjUgMCAxMi44LTExLjUgMTIuOC0xMi44IDEuMi0xMyAxLTIzLjIgMS02OC44IDAtMzUuNi0yMi43LTM3LjctMjcuNi0zOS4zLTcuNS0yLjUtMi4zLTEwLjggMS0xMC44IDMyLjcgMCAxNi41IDIgNDkuMiAyIDM2LjUgMCAyMC42LTIgNTcuMS0yIDQuOSAwIDkuOSA5LjYgMSAxMS44LTE2LjQgNC4xLTI4LjYgMTAuMy0yOC42IDMyLjR2MTAxLjJjMCA4My40LjEgMTE0LjkgNy45IDEyNy44IDguMiAxMC4yIDExLjQgMTAuNCAyMS43IDEzLjggNS44IDAgNy44IDEwLjggMCAxMC44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjM1MywyNTQuODc4LDEzMS41MzgsMzMuMWEyLjIwOCwyLjIwOCwwLDAsMC0zLjgyOS4wMDlMLjMsMjU0Ljg4N0EyLjIzNCwyLjIzNCwwLDAsMCwuMywyNTcuMTIyTDEyOS4xMTYsNDc4LjlhMi4yMDgsMi4yMDgsMCwwLDAsMy44My0uMDA5TDI2MC4zNTgsMjU3LjExM0EyLjIzOSwyLjIzOSwwLDAsMCwyNjAuMzUzLDI1NC44NzhabTM5LjA3OC0yNS43MTNhMi4xOSwyLjE5LDAsMCwwLDEuOSwxLjExMWg2Ni41MDlhMi4yMjYsMi4yMjYsMCwwLDAsMS45LTMuMzQxTDI1OS4xMTUsMzMuMTExYTIuMTg3LDIuMTg3LDAsMCwwLTEuOS0xLjExMUgxOTAuNzA3YTIuMjI2LDIuMjI2LDAsMCwwLTEuOSwzLjM0MVpNNTExLjcsMjU0Ljg4NiwzODQuOSwzMy4xMTJBMi4yLDIuMiwwLDAsMCwzODIuOTksMzJoLTY2LjZhMi4yMjYsMi4yMjYsMCwwLDAtMS45MDYsMy4zNEw0NDAuNjUyLDI1NiwzMTQuNDgxLDQ3Ni42NmEyLjIyNiwyLjIyNiwwLDAsMCwxLjkwNiwzLjM0aDY2LjZhMi4yLDIuMiwwLDAsMCwxLjkwNi0xLjExMkw1MTEuNywyNTcuMTE0QTIuMjQzLDIuMjQzLDAsMCwwLDUxMS43LDI1NC44ODZaTTM2Ni4wMTYsMjg0LjkxN0gyOTkuNTA4YTIuMTg3LDIuMTg3LDAsMCwwLTEuOSwxLjExMWwtMTA4LjgsMTkwLjYzMWEyLjIyNiwyLjIyNiwwLDAsMCwxLjksMy4zNDFoNjYuNTA5YTIuMTg3LDIuMTg3LDAsMCwwLDEuOS0xLjExMWwxMDguOC0xOTAuNjMxQTIuMjI2LDIuMjI2LDAsMCwwLDM2Ni4wMTYsMjg0LjkxN1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb29saSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuNSAzNTJsMzguMy44Yy0xMy4yLTQuNi0yNi0xMC4yLTM4LjMtMTYuOHptNTcuNy01LjN2NS4zbC0xOS40LjhjMzYuNSAxMi41IDY5LjkgMTQuMiA5NC43IDcuMi0xOS45LjItNDUuOC0yLjYtNzUuMy0xMy4zem00MDguOS0xMTUuMmMxNS45IDAgMjguOS0xMi45IDI4LjktMjguOXMtMTIuOS0yNC41LTI4LjktMjQuNWMtMTUuOSAwLTI4LjkgOC42LTI4LjkgMjQuNXMxMi45IDI4LjkgMjguOSAyOC45em0tMjkgMTIwLjVINjQwVjI0MS41aC01Ny45em0tNzMuNyAwaDU3LjlWMTU2LjdMNTA4LjQgMTg0em0tMzEtMTE5LjRjLTE4LjItMTguMi01MC40LTE3LjEtNTAuNC0xNy4xcy0zMi4zLTEuMS01MC40IDE3LjFjLTE4LjIgMTguMi0xNi44IDMzLjktMTYuOCA1Mi42cy0xLjQgMzQuMyAxNi44IDUyLjUgNTAuNCAxNy4xIDUwLjQgMTcuMSAzMi4zIDEuMSA1MC40LTE3LjFjMTguMi0xOC4yIDE2LjgtMzMuOCAxNi44LTUyLjUtLjEtMTguOCAxLjMtMzQuNS0xNi44LTUyLjZ6bS0zOS44IDcxLjljMCAzLjYtMS44IDEyLjUtMTAuNyAxMi41cy0xMC43LTguOS0xMC43LTEyLjV2LTQwLjRjMC04LjcgNy4zLTEwLjkgMTAuNy0xMC45czEwLjcgMi4xIDEwLjcgMTAuOXptLTEwNi4yLTcxLjljLTE4LjItMTguMi01MC40LTE3LjEtNTAuNC0xNy4xcy0zMi4yLTEuMS01MC40IDE3LjFjLTEuOSAxLjktMy43IDMuOS01LjMgNi0zOC4yLTI5LjYtNzIuNS00Ni41LTEwMi4xLTYxLjF2LTIwLjdsLTIyLjUgMTAuNmMtNTQuNC0yMi4xLTg5LTE4LjItOTcuMy4xIDAgMC0yNC45IDMyLjggNjEuOCAxMTAuOFYzNTJoNTcuOXYtMjguNmMtNi41LTQuMi0xMy04LjctMTkuNC0xMy42LTE0LjgtMTEuMi0yNy40LTIxLjYtMzguNC0zMS40di0zMWMxMy4xIDE0LjcgMzAuNSAzMS40IDUzLjQgNTAuM2w0LjUgMy42di0yOS44YzAtNi45IDEuNy0xOC4yIDEwLjgtMTguMnMxMC42IDYuOSAxMC42IDE1VjMxN2MxOCAxMi4yIDM3LjMgMjIuMSA1Ny43IDI5LjZ2LTkzLjljMC0xOC43LTEzLjQtMzcuNC00MC42LTM3LjQtMTUuOC0uMS0zMC41IDguMi0zOC41IDIxLjl2LTU0LjNjNDEuOSAyMC45IDgzLjkgNDYuNSA5OS45IDU4LjMtMTAuMiAxNC42LTkuMyAyOC4xLTkuMyA0My43IDAgMTguNy0xLjQgMzQuMyAxNi44IDUyLjVzNTAuNCAxNy4xIDUwLjQgMTcuMSAzMi4zIDEuMSA1MC40LTE3LjFjMTguMi0xOC4yIDE2LjctMzMuOCAxNi43LTUyLjUgMC0xOC41IDEuNS0zNC4yLTE2LjctNTIuM3pNNjUuMiAxODR2NjMuM2MtNDguNy01NC41LTM4LjktNzYtMzUuMi03OS4xIDEzLjUtMTEuNCAzNy41LTggNjQuNCAyLjF6bTIyNi41IDEyMC41YzAgMy42LTEuOCAxMi41LTEwLjcgMTIuNXMtMTAuNy04LjktMTAuNy0xMi41di00MC40YzAtOC43IDcuMy0xMC45IDEwLjctMTAuOXMxMC43IDIuMSAxMC43IDEwLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9ybmJpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzYuMzggMzcwLjNhMzcuOCAzNy44IDAgMSAxLTMyLjA3LTMyLjQyYy03OC4yOC0xMTEuMzUgNTItMTkwLjUzIDUyLTE5MC41My01Ljg2IDQzLTguMjQgOTEuMTYtOC4yNCA5MS4xNi02Ny4zMSA0MS40OS45MyA2NC4wNiAzOS44MSA3Mi44N2ExNDAuMzggMTQwLjM4IDAgMCAwIDEzMS42NiA5MS45NGMxLjkyIDAgMy43Ny0uMjEgNS42Ny0uMjhsLjExIDE4Ljg2Yy05OS4yMiAxLjM5LTE1OC43LTI5LjE0LTE4OC45NC01MS42em0xMDgtMzI3LjdBMzcuNTcgMzcuNTcgMCAwIDAgMTgxIDIxLjQ1YTM3Ljk1IDM3Ljk1IDAgMSAwLTMxLjE3IDU0LjIyYy0yMi41NSAyOS45MS01My44MyA4OS41Ny01Mi40MiAxOTBsMjEuODQtLjE1YzAtLjktLjE0LTEuNzctLjE0LTIuNjhBMTQwLjQyIDE0MC40MiAwIDAgMSAyMDcgMTMyLjcxYzgtMzcuNzEgMzAuNy0xMTQuMyA3My44LTQ0LjI5IDAgMCA0OC4xNCAyLjM4IDkxLjE4IDguMjQgMCAwLTc3Ljg0LTEyOC0xODcuNTktNTQuMDZ6bTMwNC4xOSAxMzQuMTdhMzcuOTQgMzcuOTQgMCAxIDAtNTMuODQtMjguN0M0MDMgMTI2LjEzIDM0NC44OSA5OSAyNTEuMjggMTAwLjMzbC4xNCAyMi41YzIuNy0uMTUgNS4zOS0uNDEgOC4xNC0uNDFhMTQwLjM3IDE0MC4zNyAwIDAgMSAxMzAuNDkgODguNzZjMzkuMSA5IDEwNS4wNiAzMS41OCAzOC40NiA3Mi41NCAwIDAtMi4zNCA0OC4xMy04LjIxIDkxLjE2IDAgMCAxMzMuNDUtODEuMTYgNDktMTk0LjYxYTM3LjQ1IDM3LjQ1IDAgMCAwIDE5LjMxLTMuNXpNMzc0LjA2IDQzNi4yNGMyMS40My0zMi40NiA0Ni40Mi04OS42OSA0NS4xNC0xNzkuNjZsLTE5LjUyLjE0Yy4wOCAyLjA2LjMgNC4wNy4zIDYuMTVhMTQwLjM0IDE0MC4zNCAwIDAgMS05MS4zOSAxMzEuNDVjLTguODUgMzguOTUtMzEuNDQgMTA2LjY2LTcyLjc3IDM5LjQ5IDAgMC00OC4xMi0yLjM0LTkxLjE5LTguMjIgMCAwIDc5LjkyIDEzMS4zNCAxOTEuOSA1MWEzNy41IDM3LjUgMCAwIDAgMy42NCAxNCAzNy45MyAzNy45MyAwIDEgMCAzMy44OS01NC4yOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RqYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE0LjkgMTYxLjVDMzQwLjIgMjkgMTIxLjEgMCAxMjEuMSAwUzIyMi4yIDExMC40IDkzIDE5Ny43QzExLjMgMjUyLjgtMjEgMzI0LjQgMTQgNDAyLjZjMjYuOCA1OS45IDgzLjUgODQuMyAxNDQuNiA5My40LTI5LjItNTUuMS02LjYtMTIyLjQtNC4xLTEyOS42IDU3LjEgODYuNCAxNjUgMCAxMTAuOC05My45IDcxIDE1LjQgODEuNiAxMzguNiAyNy4xIDIxNS41IDgwLjUtMjUuMyAxMzQuMS04OC45IDE0OC44LTE0NS42IDE1LjUtNTkuMyAzLjctMTI3LjktMjYuMy0xODAuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3V6eiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuOSAzMzAuN0gxNzEuM1Y0ODBIMTdWMzJoMTA5LjV2MTA0LjVsMzA1LjEgODUuNlY0ODBIMjc1Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHRtbDUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMmwzNC45IDM5NS44TDE5MS41IDQ4MGwxNTcuNi01Mi4yTDM4NCAzMkgwem0zMDguMiAxMjcuOUgxMjQuNGw0LjEgNDkuNGgxNzUuNmwtMTMuNiAxNDguNC05Ny45IDI3di4zaC0xLjFsLTk4LjctMjcuMy02LTc1LjhoNDcuN0wxMzggMzIwbDUzLjUgMTQuNSA1My43LTE0LjUgNi02Mi4ySDg0LjNMNzEuNSAxMTIuMmgyNDEuMWwtNC40IDQ3Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSHVic3BvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjcuNCAyMTEuNmMtMjUuMSAyMy43LTQwLjggNTcuMy00MC44IDk0LjYgMCAyOS4zIDkuNyA1Ni4zIDI2IDc4TDIwMy4xIDQzNGMtNC40LTEuNi05LjEtMi41LTE0LTIuNS0xMC44IDAtMjAuOSA0LjItMjguNSAxMS44LTcuNiA3LjYtMTEuOCAxNy44LTExLjggMjguNnM0LjIgMjAuOSAxMS44IDI4LjVjNy42IDcuNiAxNy44IDExLjYgMjguNSAxMS42IDEwLjggMCAyMC45LTMuOSAyOC42LTExLjYgNy42LTcuNiAxMS44LTE3LjggMTEuOC0yOC41IDAtNC4yLS42LTguMi0xLjktMTIuMWw1MC01MC4yYzIyIDE2LjkgNDkuNCAyNi45IDc5LjMgMjYuOSA3MS45IDAgMTMwLTU4LjMgMTMwLTEzMC4yIDAtNjUuMi00Ny43LTExOS4yLTExMC4yLTEyOC43VjExNmMxNy41LTcuNCAyOC4yLTIzLjggMjguMi00Mi45IDAtMjYuMS0yMC45LTQ3LjktNDctNDcuOVMzMTEuMiA0NyAzMTEuMiA3My4xYzAgMTkuMSAxMC43IDM1LjUgMjguMiA0Mi45djYxLjJjLTE1LjIgMi4xLTI5LjYgNi43LTQyLjcgMTMuNi0yNy42LTIwLjktMTE3LjUtODUuNy0xNjguOS0xMjQuOCAxLjItNC40IDItOSAyLTEzLjhDMTI5LjggMjMuNCAxMDYuMyAwIDc3LjQgMCA0OC42IDAgMjUuMiAyMy40IDI1LjIgNTIuMmMwIDI4LjkgMjMuNCA1Mi4zIDUyLjIgNTIuMyA5LjggMCAxOC45LTIuOSAyNi44LTcuNmwxNjMuMiAxMTQuN3ptODkuNSAxNjMuNmMtMzguMSAwLTY5LTMwLjktNjktNjlzMzAuOS02OSA2OS02OSA2OSAzMC45IDY5IDY5LTMwLjkgNjktNjkgNjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRlYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI1LjYxLDE2NS40OGE0OS4wNyw0OS4wNywwLDEsMCw0OS4wNiw0OS4wNkE0OS4wOCw0OS4wOCwwLDAsMCwxMjUuNjEsMTY1LjQ4Wk04Ni4xNSw0MjUuODRoNzguOTRWMjg1LjMySDg2LjE1Wm0xNTEuNDYtMjExLjZjMC0yMC0xMC0yMi41My0xOC43NC0yMi41M0gyMDQuODJWMjM3LjVoMTQuMDVDMjI4LjYyLDIzNy41LDIzNy42MSwyMzQuNjksMjM3LjYxLDIxNC4yNFptMjAxLjY5LDQ2VjE2OC45M2gyMi43NVYyMzcuNWgzMy42OUM0ODYuNSwxMTMuMDgsMzg4LjYxLDg2LjE5LDI5OS42Nyw4Ni4xOUgyMDQuODRWMTY5aDE0YzI1LjYsMCw0MS41LDE3LjM1LDQxLjUsNDUuMjYsMCwyOC44MS0xNS41Miw0Ni00MS41LDQ2aC0xNFY0MjUuODhoOTQuODNjMTQ0LjYxLDAsMTk0Ljk0LTY3LjE2LDE5Ni43Mi0xNjUuNjRabS0xMDkuNzUsMEgyNzMuM1YxNjloNTQuNDN2MjIuNzNIMjk2djEwLjU4aDMwVjIyNUgyOTZWMjM3LjVoMzMuNTFabTc0LjY2LDAtNS4xNi0xNy42N0gzNjkuMzFsLTUuMTgsMTcuNjdIMzQwLjQ3TDM2OCwxNjguOTJoMzIuMzVsMjcuNTMsOTEuMzRaTTI5OS42NSwzMkgzMlY0ODBIMjk5LjY1YzE2MS44NSwwLDI1MS03OS43MywyNTEtMjI0LjUyQzU1MC42MiwxNzIsNTE4LDMyLDI5OS42NSwzMlptMCw0MjYuOTJINTMuMDdWNTMuMDdIMjk5LjY1YzE0Mi4xLDAsMjI5LjksNjQuNjEsMjI5LjksMjAyLjQxQzUyOS41NSwzODkuNTcsNDQ4LjU1LDQ1OC45MiwyOTkuNjUsNDU4LjkyWm04My44Ni0yNjQuODVMMzc2LDIxOS44OEgzOTIuNGwtNy41Mi0yNS44MVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbWRiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIxLjMgMjI5LjJIMjFjLjEtLjEuMi0uMy4zLS40ek05NyAzMTkuOEg2NFYxOTJoMzN6bTExMy4yIDBoLTI4Ljd2LTg2LjRsLTExLjYgODYuNGgtMjAuNmwtMTIuMi04NC41djg0LjVoLTI5VjE5Mmg0Mi44YzMuMyAxOS44IDYgMzkuOSA4LjcgNTkuOWw3LjYtNTkuOWg0M3ptMTEuNCAwVjE5MmgyNC42YzE3LjYgMCA0NC43LTEuNiA0OSAyMC45IDEuNyA3LjYgMS40IDE2LjMgMS40IDI0LjQgMCA4OC41IDExLjEgODIuNi03NSA4Mi41em0xNjAuOS0yOS4yYzAgMTUuNy0yLjQgMzAuOS0yMi4yIDMwLjktOSAwLTE1LjItMy0yMC45LTkuOGwtMS45IDguMWgtMjkuOFYxOTJoMzEuN3Y0MS43YzYtNi41IDEyLTkuMiAyMC45LTkuMiAyMS40IDAgMjIuMiAxMi44IDIyLjIgMzAuMXpNMjY1IDIyOS45YzAtOS43IDEuNi0xNi0xMC4zLTE2djgzLjdjMTIuMi4zIDEwLjMtOC43IDEwLjMtMTguNHptODUuNSAyNi4xYzAtNS40IDEuMS0xMi43LTYuMi0xMi43LTYgMC00LjkgOC45LTQuOSAxMi43IDAgLjYtMS4xIDM5LjYgMS4xIDQ0LjcuOCAxLjYgMi4yIDIuNCAzLjggMi40IDcuOCAwIDYuMi05IDYuMi0xNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUlubm9zb2Z0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMi41NTksMTU5LjcxYTI3LjM3OSwyNy4zNzksMCwwLDAtMTMuODY2LTIzLjMzNywyNi40MiwyNi40MiwwLDAsMC0yNi4yMTEuMTMzTDczLjk0MywzMTQuNjQ3VjE3Ni4yNjFhMTEuOTU1LDExLjk1NSwwLDAsMSw2LjA0Ny0xMC4zNEwyMTguMDY2LDg2LjIwOGExMi4xNTMsMTIuMTUzLDAsMCwxLDExLjkyMi4wMjVsMzIuNjU2LDE4Ljg1M0wxMTIuNTgxLDE5MS43MjN2NTZMMzU5LjY0MiwxMDUuMDg2LDI0MS4xMjksMzYuNjc5Yy0xMC45OTItNi4xMjktMjIuMy02LjI1NS0zMy44LS4yN2wtMTY0LjYsOTUuMDI2Yy0xMC42MzQsNi4xMi0xNi43NzEsMTYuMzktMTcuMjksMjkuMTI0bDAsMTkxLjVjLjE3LDEwLjEzNSw1LjA4LDE4LjY3MiwxMy40NzQsMjMuNDI4YTI3LjAzNywyNy4wMzcsMCwwLDAsMjYuNzM2LS4wNDVMMzc0LjA1NywxOTcuMzc2VjMzNS42NTdhMTEuOTc2LDExLjk3NiwwLDAsMS01LjkyLDEwLjM2OEwyMzAuMDI1LDQyNS43N2ExMi4xNzUsMTIuMTc1LDAsMCwxLTExLjkzNy4wNjJsLTMyLjcyMy0xOC45LDE1MC4wNTEtODYuNjI3di01Nkw4OC4zNjcsNDA2LjkzMmwxMTguNzk0LDY4LjU4M2EzMy44OCwzMy44OCwwLDAsMCwzNC4yNS0uMzI3bDE2NC41MjctOTQuOTk1YzEwLjc0Ni02LjYzMSwxNi42NDktMTcuMTE4LDE2LjYyNC0yOS41MjhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCwyMDIuNjZBNTMuMzQsNTMuMzQsMCwxLDAsMjc3LjM2LDI1Niw1My4zOCw1My4zOCwwLDAsMCwyMjQsMjAyLjY2Wm0xMjQuNzEtNDFhNTQsNTQsMCwwLDAtMzAuNDEtMzAuNDFjLTIxLTguMjktNzEtNi40My05NC4zLTYuNDNzLTczLjI1LTEuOTMtOTQuMzEsNi40M2E1NCw1NCwwLDAsMC0zMC40MSwzMC40MWMtOC4yOCwyMS02LjQzLDcxLjA1LTYuNDMsOTQuMzNTOTEsMzI5LjI2LDk5LjMyLDM1MC4zM2E1NCw1NCwwLDAsMCwzMC40MSwzMC40MWMyMSw4LjI5LDcxLDYuNDMsOTQuMzEsNi40M3M3My4yNCwxLjkzLDk0LjMtNi40M2E1NCw1NCwwLDAsMCwzMC40MS0zMC40MWM4LjM1LTIxLDYuNDMtNzEuMDUsNi40My05NC4zM1MzNTcuMSwxODIuNzQsMzQ4Ljc1LDE2MS42N1pNMjI0LDMzOGE4Miw4MiwwLDEsMSw4Mi04MkE4MS45LDgxLjksMCwwLDEsMjI0LDMzOFptODUuMzgtMTQ4LjNhMTkuMTQsMTkuMTQsMCwxLDEsMTkuMTMtMTkuMTRBMTkuMSwxOS4xLDAsMCwxLDMwOS40MiwxODkuNzRaTTQwMCwzMkg0OEE0OCw0OCwwLDAsMCwwLDgwVjQzMmE0OCw0OCwwLDAsMCw0OCw0OEg0MDBhNDgsNDgsMCwwLDAsNDgtNDhWODBBNDgsNDgsMCwwLDAsNDAwLDMyWk0zODIuODgsMzIyYy0xLjI5LDI1LjYzLTcuMTQsNDguMzQtMjUuODUsNjdzLTQxLjQsMjQuNjMtNjcsMjUuODVjLTI2LjQxLDEuNDktMTA1LjU5LDEuNDktMTMyLDAtMjUuNjMtMS4yOS00OC4yNi03LjE1LTY3LTI1Ljg1cy0yNC42My00MS40Mi0yNS44NS02N2MtMS40OS0yNi40Mi0xLjQ5LTEwNS42MSwwLTEzMiwxLjI5LTI1LjYzLDcuMDctNDguMzQsMjUuODUtNjdzNDEuNDctMjQuNTYsNjctMjUuNzhjMjYuNDEtMS40OSwxMDUuNTktMS40OSwxMzIsMCwyNS42MywxLjI5LDQ4LjMzLDcuMTUsNjcsMjUuODVzMjQuNjMsNDEuNDIsMjUuODUsNjcuMDVDMzg0LjM3LDIxNi40NCwzODQuMzcsMjk1LjU2LDM4Mi44OCwzMjJaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5zdGFncmFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4xIDE0MWMtNjMuNiAwLTExNC45IDUxLjMtMTE0LjkgMTE0LjlzNTEuMyAxMTQuOSAxMTQuOSAxMTQuOVMzMzkgMzE5LjUgMzM5IDI1NS45IDI4Ny43IDE0MSAyMjQuMSAxNDF6bTAgMTg5LjZjLTQxLjEgMC03NC43LTMzLjUtNzQuNy03NC43czMzLjUtNzQuNyA3NC43LTc0LjcgNzQuNyAzMy41IDc0LjcgNzQuNy0zMy42IDc0LjctNzQuNyA3NC43em0xNDYuNC0xOTQuM2MwIDE0LjktMTIgMjYuOC0yNi44IDI2LjgtMTQuOSAwLTI2LjgtMTItMjYuOC0yNi44czEyLTI2LjggMjYuOC0yNi44IDI2LjggMTIgMjYuOCAyNi44em03Ni4xIDI3LjJjLTEuNy0zNS45LTkuOS02Ny43LTM2LjItOTMuOS0yNi4yLTI2LjItNTgtMzQuNC05My45LTM2LjItMzctMi4xLTE0Ny45LTIuMS0xODQuOSAwLTM1LjggMS43LTY3LjYgOS45LTkzLjkgMzYuMXMtMzQuNCA1OC0zNi4yIDkzLjljLTIuMSAzNy0yLjEgMTQ3LjkgMCAxODQuOSAxLjcgMzUuOSA5LjkgNjcuNyAzNi4yIDkzLjlzNTggMzQuNCA5My45IDM2LjJjMzcgMi4xIDE0Ny45IDIuMSAxODQuOSAwIDM1LjktMS43IDY3LjctOS45IDkzLjktMzYuMiAyNi4yLTI2LjIgMzQuNC01OCAzNi4yLTkzLjkgMi4xLTM3IDIuMS0xNDcuOCAwLTE4NC44ek0zOTguOCAzODhjLTcuOCAxOS42LTIyLjkgMzQuNy00Mi42IDQyLjYtMjkuNSAxMS43LTk5LjUgOS0xMzIuMSA5cy0xMDIuNyAyLjYtMTMyLjEtOWMtMTkuNi03LjgtMzQuNy0yMi45LTQyLjYtNDIuNi0xMS43LTI5LjUtOS05OS41LTktMTMyLjFzLTIuNi0xMDIuNyA5LTEzMi4xYzcuOC0xOS42IDIyLjktMzQuNyA0Mi42LTQyLjYgMjkuNS0xMS43IDk5LjUtOSAxMzIuMS05czEwMi43LTIuNiAxMzIuMSA5YzE5LjYgNy44IDM0LjcgMjIuOSA0Mi42IDQyLjYgMTEuNyAyOS41IDkgOTkuNSA5IDEzMi4xczIuNyAxMDIuNy05IDEzMi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluc3RhbG9kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImRhdGFOYW1lXCI6XCJMYXllciAxXCIsXCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTMuMzg0LDQ4MEgzODcuMTEzTDUwMi41NTQsMjc1Ljc2NSwyMDQuMjI5LDMzMy4yMTFaTTUwNC43MjYsMjQwLjA3OCwzODcuMTEzLDMySDE1NS42NjlMMzYwLjIzLDI2Ny45Wk0xMjQuMzg2LDQ4LjgwOSw3LjI3NCwyNTYsMTIzLjIzNiw0NjEuMTU0LDIyNS42MjcsMTY1LjU2MVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbnRlcmNvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTIgMzJINTZDMjUuMSAzMiAwIDU3LjEgMCA4OHYzMzZjMCAzMC45IDI1LjEgNTYgNTYgNTZoMzM2YzMwLjkgMCA1Ni0yNS4xIDU2LTU2Vjg4YzAtMzAuOS0yNS4xLTU2LTU2LTU2em0tMTA4LjMgODIuMWMwLTE5LjggMjkuOS0xOS44IDI5LjkgMHYxOTkuNWMwIDE5LjgtMjkuOSAxOS44LTI5LjkgMFYxMTQuMXptLTc0LjYtNy41YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjIxNi41YzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjEwNi42em0tNzQuNyA3LjVjMC0xOS44IDI5LjktMTkuOCAyOS45IDB2MTk5LjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTE0LjF6TTU5LjcgMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zYzAgMTkuOC0yOS45IDE5LjgtMjkuOSAwVjE0NHptMzIzLjQgMjI3LjhjLTcyLjggNjMtMjQxLjcgNjUuNC0zMTguMSAwLTE1LTEyLjggNC40LTM1LjUgMTkuNC0yMi43IDY1LjkgNTUuMyAyMTYuMSA1My45IDI3OS4zIDAgMTQuOS0xMi45IDM0LjMgOS44IDE5LjQgMjIuN3ptNS4yLTkzLjVjMCAxOS44LTI5LjkgMTkuOC0yOS45IDBWMTQ0YzAtMTkuOCAyOS45LTE5LjggMjkuOSAwdjEzNC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludGVybmV0RXhwbG9yZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjA0OSAxNTkuNzA2YzEwLjg1NS0yNC41NzUgMjEuNDI0LTYwLjQzOCAyMS40MjQtODcuODcxIDAtNzIuNzIyLTc5LjY0MS05OC4zNzEtMjA5LjY3My0zOC41NzctMTA3LjYzMi03LjE4MS0yMTEuMjIxIDczLjY3LTIzNy4wOTggMTg2LjQ1NyAzMC44NTItMzQuODYyIDc4LjI3MS04Mi4yOTggMTIxLjk3Ny0xMDEuMTU4QzEyNS40MDQgMTY2Ljg1IDc5LjEyOCAyMjguMDAyIDQzLjk5MiAyOTEuNzI1IDIzLjI0NiAzMjkuNjUxIDAgMzkwLjk0IDAgNDM2Ljc0N2MwIDk4LjU3NSA5Mi44NTQgODYuNSAxODAuMjUxIDQyLjAwNiAzMS40MjMgMTUuNDMgNjYuNTU5IDE1LjU3MyAxMDEuNjk1IDE1LjU3MyA5Ny4xMjQgMCAxODQuMjQ5LTU0LjI5NCAyMTYuODE0LTE0Ni4wMjJIMzc3LjkyN2MtNTIuNTA5IDg4LjU5My0xOTYuODE5IDUyLjk5Ni0xOTYuODE5LTQ3LjQzNkg1MDkuOWM2LjQwNy00My41ODEtMS42NTUtOTUuNzE1LTI2Ljg1MS0xNDEuMTYyek02NC41NTkgMzQ2Ljg3N2MxNy43MTEgNTEuMTUgNTMuNzAzIDk1Ljg3MSAxMDAuMjY2IDEyMy4zMDQtODguNzQxIDQ4Ljk0LTE3My4yNjcgMjkuMDk2LTEwMC4yNjYtMTIzLjMwNHptMTE1Ljk3Ny0xMDguODczYzItNTUuMTUxIDUwLjI3Ni05NC44NzEgMTAzLjk4LTk0Ljg3MSA1My40MTggMCAxMDEuOTgxIDM5LjcyIDEwMy45ODEgOTQuODcxSDE4MC41MzZ6bTE4NC41MzYtMTg3LjZjMjEuNDI1LTEwLjI4NyA0OC41NjMtMjIuMDAzIDcyLjU1OC0yMi4wMDMgMzEuNDIyIDAgNTQuMjc0IDIxLjcxNyA1NC4yNzQgNTMuNzIyIDAgMjAuMDAzLTcuNDI3IDQ5LjAwNy0xNC41NjkgNjcuODY3LTI2LjI4LTQyLjI5Mi02NS45ODYtODEuNTg0LTExMi4yNjMtOTkuNTg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUludmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNy40IDMySDQwLjZDMTguMiAzMiAwIDUwLjIgMCA3Mi42djM2Ni44QzAgNDYxLjggMTguMiA0ODAgNDAuNiA0ODBoMzY2LjhjMjIuNCAwIDQwLjYtMTguMiA0MC42LTQwLjZWNzIuNmMwLTIyLjQtMTguMi00MC42LTQwLjYtNDAuNnpNMTc2LjEgMTQ1LjZjLjQgMjMuNC0yMi40IDI3LjMtMjYuNiAyNy40LTE0LjkgMC0yNy4xLTEyLTI3LjEtMjcgLjEtMzUuMiA1My4xLTM1LjUgNTMuNy0uNHpNMzMyLjggMzc3Yy02NS42IDAtMzQuMS03NC0yNS0xMDYuNiAxNC4xLTQ2LjQtNDUuMi01OS01OS45LjdsLTI1LjggMTAzLjNIMTc3bDguMS0zMi41Yy0zMS41IDUxLjgtOTQuNiA0NC40LTk0LjYtNC4zLjEtMTQuMy45LTE0IDIzLTEwNC4xSDgxLjdsOS43LTM1LjZoNzYuNGMtMzMuNiAxMzMuNy0zMi42IDEyNi45LTMyLjkgMTM4LjIgMCAyMC45IDQwLjkgMTMuNSA1Ny40LTIzLjJsMTkuOC03OS40aC0zMi4zbDkuNy0zNS42aDY4LjhsLTguOSA0MC41YzQwLjUtNzUuNSAxMjcuOS00Ny44IDEwMS44IDM4LTE0LjIgNTEuMS0xNC42IDUwLjctMTQuOSA1OC44IDAgMTUuNSAxNy41IDIyLjYgMzEuOC0xNi45TDM4NiAzMjVjLTEwLjUgMzYuNy0yOS40IDUyLTUzLjIgNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW94aG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MTYgMTYwaC02Ny4zQzUxMS4yIDcwLjcgNDIyLjkgOCAzMjAgOCAxODMgOCA3MiAxMTkgNzIgMjU2YzAgMTYuNCAxLjYgMzIuNSA0LjcgNDhIMjRjLTEzLjMgMC0yNCAxMC44LTI0IDI0IDAgMTMuMyAxMC43IDI0IDI0IDI0aDY3LjNjMzcuNSA4OS4zIDEyNS44IDE1MiAyMjguNyAxNTIgMTM3IDAgMjQ4LTExMSAyNDgtMjQ4IDAtMTYuNC0xLjYtMzIuNS00LjctNDhINjE2YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0em0tOTYgOTZjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwLTc1LjcgMC0xNDEuNi00Mi0xNzUuNS0xMDRINDI0YzEzLjMgMCAyNC0xMC44IDI0LTI0IDAtMTMuMy0xMC43LTI0LTI0LTI0SDEyNS44Yy0zLjgtMTUuNC01LjgtMzEuNC01LjgtNDggMC0xMTAuNSA4OS41LTIwMCAyMDAtMjAwIDc1LjcgMCAxNDEuNiA0MiAxNzUuNSAxMDRIMjE2Yy0xMy4zIDAtMjQgMTAuOC0yNCAyNCAwIDEzLjMgMTAuNyAyNCAyNCAyNGgyOTguMmMzLjggMTUuNCA1LjggMzEuNCA1LjggNDh6bS0zMDQtMjRoMjA4YzEzLjMgMCAyNCAxMC43IDI0IDI0IDAgMTMuMi0xMC43IDI0LTI0IDI0SDIxNmMtMTMuMyAwLTI0LTEwLjctMjQtMjQgMC0xMy4yIDEwLjctMjQgMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXRjaElvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcxLjkyIDM0Ljc3QzUwLjIgNDcuNjcgNy40IDk2Ljg0IDcgMTA5LjczdjIxLjM0YzAgMjcuMDYgMjUuMjkgNTAuODQgNDguMjUgNTAuODQgMjcuNTcgMCA1MC41NC0yMi44NSA1MC41NC01MCAwIDI3LjEyIDIyLjE4IDUwIDQ5Ljc2IDUwczQ5LTIyLjg1IDQ5LTUwYzAgMjcuMTIgMjMuNTkgNTAgNTEuMTYgNTBoLjVjMjcuNTcgMCA1MS4xNi0yMi44NSA1MS4xNi01MCAwIDI3LjEyIDIxLjQ3IDUwIDQ5IDUwczQ5Ljc2LTIyLjg1IDQ5Ljc2LTUwYzAgMjcuMTIgMjMgNTAgNTAuNTQgNTAgMjMgMCA0OC4yNS0yMy43OCA0OC4yNS01MC44NHYtMjEuMzRjLS40LTEyLjktNDMuMi02Mi4wNy02NC45Mi03NUMzNzIuNTYgMzIuNCAzMjUuNzYgMzIgMjU2IDMyUzkxLjE0IDMzLjEgNzEuOTIgMzQuNzd6bTEzMi4zMiAxMzQuMzljLTIyIDM4LjQtNzcuOSAzOC43MS05OS44NS4yNS0xMy4xNyAyMy4xNC00My4xNyAzMi4wNy01NiAyNy42Ni0zLjg3IDQwLjE1LTEzLjY3IDIzNy4xMyAxNy43MyAyNjkuMTUgODAgMTguNjcgMzAyLjA4IDE4LjEyIDM3OS43NiAwIDMxLjY1LTMyLjI3IDIxLjMyLTIzMiAxNy43NS0yNjkuMTUtMTIuOTIgNC40NC00Mi44OC00LjYtNTYtMjcuNjYtMjIgMzguNTItNzcuODUgMzguMS05OS44NS0uMjQtNy4xIDEyLjQ5LTIzLjA1IDI4Ljk0LTUxLjc2IDI4Ljk0YTU3LjU0IDU3LjU0IDAgMCAxLTUxLjc1LTI4Ljk0em0tNDEuNTggNTMuNzdjMTYuNDcgMCAzMS4wOSAwIDQ5LjIyIDE5Ljc4YTQzNi45MSA0MzYuOTEgMCAwIDEgODguMTggMEMzMTguMjIgMjIzIDMzMi44NSAyMjMgMzQ5LjMxIDIyM2M1Mi4zMyAwIDY1LjIyIDc3LjUzIDgzLjg3IDE0NC40NSAxNy4yNiA2Mi4xNS01LjUyIDYzLjY3LTMzLjk1IDYzLjczLTQyLjE1LTEuNTctNjUuNDktMzIuMTgtNjUuNDktNjIuNzktMzkuMjUgNi40My0xMDEuOTMgOC43OS0xNTUuNTUgMCAwIDMwLjYxLTIzLjM0IDYxLjIyLTY1LjQ5IDYyLjc5LTI4LjQyLS4wNi01MS4yLTEuNTgtMzMuOTQtNjMuNzMgMTguNjctNjcgMzEuNTYtMTQ0LjQ1IDgzLjg4LTE0NC40NXpNMjU2IDI3MC43OXMtNDQuMzggNDAuNzctNTIuMzUgNTUuMjFsMjktMS4xN3YyNS4zMmMwIDEuNTUgMjEuMzQuMTYgMjMuMzMuMTYgMTEuNjUuNTQgMjMuMzEgMSAyMy4zMS0uMTZ2LTI1LjI4bDI5IDEuMTdjLTgtMTQuNDgtNTIuMzUtNTUuMjQtNTIuMzUtNTUuMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXR1bmVzTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODEuOSAzODguMmMtNi40IDI3LjQtMjcuMiA0Mi44LTU1LjEgNDgtMjQuNSA0LjUtNDQuOSA1LjYtNjQuNS0xMC4yLTIzLjktMjAuMS0yNC4yLTUzLjQtMi43LTc0LjQgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDYuNC03LjIgNC40LTQuMSA0LjQtMTYzLjIgMC0xMS4yLTUuNS0xNC4zLTE3LTEyLjMtOC4yIDEuNC0xODUuNyAzNC42LTE4NS43IDM0LjYtMTAuMiAyLjItMTMuNCA1LjItMTMuNCAxNi43IDAgMjM0LjcgMS4xIDIyMy45LTIuNSAyMzkuNS00LjIgMTguMi0xNS40IDMxLjktMzAuMiAzOS41LTE2LjggOS4zLTQ3LjIgMTMuNC02My40IDEwLjQtNDMuMi04LjEtNTguNC01OC0yOS4xLTg2LjYgMTctMTYuMiA0MC45LTE5LjUgNzYuOC0yNS44IDYtMS4xIDExLjItMi41IDE1LjYtNy40IDEwLjEtMTEuNSAxLjgtMjU2LjYgNS4yLTI3MC4yLjgtNS4yIDMtOS42IDcuMS0xMi45IDQuMi0zLjUgMTEuOC01LjUgMTMuNC01LjUgMjA0LTM4LjIgMjI4LjktNDMuMSAyMzIuNC00My4xIDExLjUtLjggMTguMSA2IDE4LjEgMTcuNi4yIDM0NC41IDEuMSAzMjYtMS44IDMzOC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUl0dW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuNiA4MC4zQzEyOSA4MC4zIDUyLjUgMTU3IDUyLjUgMjUxLjVTMTI5IDQyMi44IDIyMy42IDQyMi44czE3MS4yLTc2LjcgMTcxLjItMTcxLjJjMC05NC42LTc2LjctMTcxLjMtMTcxLjItMTcxLjN6bTc5LjQgMjQwYy0zLjIgMTMuNi0xMy41IDIxLjItMjcuMyAyMy44LTEyLjEgMi4yLTIyLjIgMi44LTMxLjktNS0xMS44LTEwLTEyLTI2LjQtMS40LTM2LjggOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyAzLjItMy42IDIuMi0yIDIuMi04MC44IDAtNS42LTIuNy03LjEtOC40LTYuMS00IC43LTkxLjkgMTcuMS05MS45IDE3LjEtNSAxLjEtNi43IDIuNi02LjcgOC4zIDAgMTE2LjEuNSAxMTAuOC0xLjIgMTE4LjUtMi4xIDktNy42IDE1LjgtMTQuOSAxOS42LTguMyA0LjYtMjMuNCA2LjYtMzEuNCA1LjItMjEuNC00LTI4LjktMjguNy0xNC40LTQyLjkgOC40LTggMjAuMy05LjYgMzgtMTIuOCAzLS41IDUuNi0xLjIgNy43LTMuNyA1LTUuNy45LTEyNyAyLjYtMTMzLjcuNC0yLjYgMS41LTQuOCAzLjUtNi40IDIuMS0xLjcgNS44LTIuNyA2LjctMi43IDEwMS0xOSAxMTMuMy0yMS40IDExNS4xLTIxLjQgNS43LS40IDkgMyA5IDguNy0uMSAxNzAuNi40IDE2MS40LTEgMTY3LjZ6TTM0NS4yIDMySDEwMi44QzQ1LjkgMzIgMCA3Ny45IDAgMTM0Ljh2MjQyLjRDMCA0MzQuMSA0NS45IDQ4MCAxMDIuOCA0ODBoMjQyLjRjNTcgMCAxMDIuOC00NS45IDEwMi44LTEwMi44VjEzNC44QzQ0OCA3Ny45IDQwMi4xIDMyIDM0NS4yIDMyek0yMjMuNiA0NDRjLTEwNi4zIDAtMTkyLjUtODYuMi0xOTIuNS0xOTIuNVMxMTcuMyA1OSAyMjMuNiA1OXMxOTIuNSA4Ni4yIDE5Mi41IDE5Mi41UzMyOS45IDQ0NCAyMjMuNiA0NDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmF2YSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzcuNzQgMzEyLjljOS44LTYuNyAyMy40LTEyLjUgMjMuNC0xMi41cy0zOC43IDctNzcuMiAxMC4yYy00Ny4xIDMuOS05Ny43IDQuNy0xMjMuMSAxLjMtNjAuMS04IDMzLTMwLjEgMzMtMzAuMXMtMzYuMS0yLjQtODAuNiAxOWMtNTIuNSAyNS40IDEzMCAzNyAyMjQuNSAxMi4xem0tODUuNC0zMi4xYy0xOS00Mi43LTgzLjEtODAuMiAwLTE0NS44QzI5NiA1My4yIDI0Mi44NCAwIDI0Mi44NCAwYzIxLjUgODQuNS03NS42IDExMC4xLTExMC43IDE2Mi42LTIzLjkgMzUuOSAxMS43IDc0LjQgNjAuMiAxMTguMnptMTE0LjYtMTc2LjJjLjEgMC0xNzUuMiA0My44LTkxLjUgMTQwLjIgMjQuNyAyOC40LTYuNSA1NC02LjUgNTRzNjIuNy0zMi40IDMzLjktNzIuOWMtMjYuOS0zNy44LTQ3LjUtNTYuNiA2NC4xLTEyMS4zem0tNi4xIDI3MC41YTEyLjE5IDEyLjE5IDAgMCAxLTIgMi42YzEyOC4zLTMzLjcgODEuMS0xMTguOSAxOS44LTk3LjNhMTcuMzMgMTcuMzMgMCAwIDAtOC4yIDYuMyA3MC40NSA3MC40NSAwIDAgMSAxMS0zYzMxLTYuNSA3NS41IDQxLjUtMjAuNiA5MS40ek0zNDggNDM3LjRzMTQuNSAxMS45LTE1LjkgMjEuMmMtNTcuOSAxNy41LTI0MC44IDIyLjgtMjkxLjYuNy0xOC4zLTcuOSAxNi0xOSAyNi44LTIxLjMgMTEuMi0yLjQgMTcuNy0yIDE3LjctMi0yMC4zLTE0LjMtMTMxLjMgMjguMS01Ni40IDQwLjJDMjMyLjg0IDUwOS40IDQwMSA0NjEuMyAzNDggNDM3LjR6TTEyNC40NCAzOTZjLTc4LjcgMjIgNDcuOSA2Ny40IDE0OC4xIDI0LjVhMTg1Ljg5IDE4NS44OSAwIDAgMS0yOC4yLTEzLjhjLTQ0LjcgOC41LTY1LjQgOS4xLTEwNiA0LjUtMzMuNS0zLjgtMTMuOS0xNS4yLTEzLjktMTUuMnptMTc5LjggOTcuMmMtNzguNyAxNC44LTE3NS44IDEzLjEtMjMzLjMgMy42IDAtLjEgMTEuOCA5LjcgNzIuNCAxMy42IDkyLjIgNS45IDIzMy44LTMuMyAyMzcuMS00Ni45IDAgMC02LjQgMTYuNS03Ni4yIDI5Ljd6TTI2MC42NCAzNTNjLTU5LjIgMTEuNC05My41IDExLjEtMTM2LjggNi42LTMzLjUtMy41LTExLjYtMTkuNy0xMS42LTE5LjctODYuOCAyOC44IDQ4LjIgNjEuNCAxNjkuNSAyNS45YTYwLjM3IDYwLjM3IDAgMCAxLTIxLjEtMTIuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKZWRpT3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk4LjUgMzczLjZjOTUuOS0xMjIuMSAxNy4yLTIzMy4xIDE3LjItMjMzLjEgNDUuNCA4NS44LTQxLjQgMTcwLjUtNDEuNCAxNzAuNSAxMDUtMTcxLjUtNjAuNS0yNzEuNS02MC41LTI3MS41IDk2LjkgNzIuNy0xMC4xIDE5MC43LTEwLjEgMTkwLjcgODUuOCAxNTguNC02OC42IDIzMC4xLTY4LjYgMjMwLjFzLS40LTE2LjktMi4yLTg1LjdjNC4zIDQuNSAzNC41IDM2LjIgMzQuNSAzNi4ybC0yNC4yLTQ3LjQgNjIuNi05LjEtNjIuNi05LjEgMjAuMi01NS41LTMxLjQgNDUuOWMtMi4yLTg3LjctNy44LTMwNS4xLTcuOS0zMDYuOXYtMi40IDEtMSAyLjRjMCAxLTUuNiAyMTktNy45IDMwNi45bC0zMS40LTQ1LjkgMjAuMiA1NS41LTYyLjYgOS4xIDYyLjYgOS4xLTI0LjIgNDcuNCAzNC41LTM2LjJjLTEuOCA2OC44LTIuMiA4NS43LTIuMiA4NS43cy0xNTQuNC03MS43LTY4LjYtMjMwLjFjMCAwLTEwNy0xMTguMS0xMC4xLTE5MC43IDAgMC0xNjUuNSA5OS45LTYwLjUgMjcxLjUgMCAwLTg2LjgtODQuOC00MS40LTE3MC41IDAgMC03OC43IDExMSAxNy4yIDIzMy4xIDAgMC0yNi4yLTE2LjEtNDkuNC03Ny43IDAgMCAxNi45IDE4My4zIDIyMiAxODUuN2g0LjFjMjA1LTIuNCAyMjItMTg1LjcgMjIyLTE4NS43LTIzLjYgNjEuNS00OS45IDc3LjctNDkuOSA3Ny43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplbmtpbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg3LjEgNDI1Yy0xLjQtMTEuMi0xOS0yMy4xLTI4LjItMzEuOS01LjEtNS0yOS0yMy4xLTMwLjQtMjkuOS0xLjQtNi42IDkuNy0yMS41IDEzLjMtMjguOSA1LjEtMTAuNyA4LjgtMjMuNyAxMS4zLTMyLjYgMTguOC02Ni4xIDIwLjctMTU2LjktNi4yLTIxMS4yLTEwLjItMjAuNi0zOC42LTQ5LTU2LjQtNjIuNS00Mi0zMS43LTExOS42LTM1LjMtMTcwLjEtMTYuNi0xNC4xIDUuMi0yNy44IDkuOC00MC4xIDE3LjEtMzMuMSAxOS40LTY4LjMgMzIuNS03OC4xIDcxLjYtMjQuMiAxMC44LTMxLjUgNDEuOC0zMC4zIDc3LjguMiA3IDQuMSAxNS44IDIuNyAyMi40LS43IDMuMy01LjIgNy42LTYuMSA5LjgtMTEuNiAyNy43LTIuMyA2NCAxMS4xIDgzLjcgOC4xIDExLjkgMjEuNSAyMi40IDM5LjIgMjUuMi43IDEwLjYgMy4zIDE5LjcgOC4yIDMwLjQgMy4xIDYuOCAxNC43IDE5IDEwLjQgMjcuNy0yLjIgNC40LTIxIDEzLjgtMjcuMyAxNy42Qzg5IDQwNy4yIDczLjcgNDE1IDU0LjIgNDI5Yy0xMi42IDktMzIuMyAxMC4yLTI5LjIgMzEuMSAyLjEgMTQuMSAxMC4xIDMxLjYgMTQuNyA0NS44LjcgMiAxLjQgNC4xIDIuMSA2aDQyMmM0LjktMTUuMyA5LjctMzAuOSAxNC42LTQ3LjIgMy40LTExLjQgMTAuMi0yNy44IDguNy0zOS43ek0yMDUuOSAzMy43YzEuOC0uNSAzLjQuNyA0LjkgMi40LS4yIDUuMi01LjQgNS4xLTguOSA2LjgtNS40IDYuNy0xMy40IDkuOC0yMCAxNy4yLTYuOCA3LjUtMTQuNCAyNy43LTIzLjQgMzAtNC41IDEuMS05LjctLjgtMTMuNi0uNS0xMC40LjctMTcuNyA2LTI4LjMgNy41IDEzLjYtMjkuOSA1Ni4xLTU0IDg5LjMtNjMuNHptLTEwNC44IDkzLjZjMTMuNS0xNC45IDMyLjEtMjQuMSA1NC44LTI1LjkgMTEuNyAyOS43LTguNCA2NS0uOSA5Ny42IDIuMyA5LjkgMTAuMiAyNS40LTIuNCAyNS43LjMtMjguMy0zNC44LTQ2LjMtNjEuMy0yOS42LTEuOC0yMS41LTQuOS01MS43IDkuOC02Ny44em0zNi43IDIwMC4yYy0xLTQuMS0yLjctMTIuOS0yLjMtMTUuMSAxLjYtOC43IDE3LjEtMTIuNSAxMS0yNC43LTExLjMtLjEtMTMuOCAxMC4yLTI0LjEgMTEuMy0yNi43IDIuNi00NS42LTM1LjQtNDQuNC01OC40IDEtMTkuNSAxNy42LTM4LjIgNDAuMS0zNS44IDE2IDEuOCAyMS40IDE5LjIgMjQuNSAzNC43IDkuMi41IDIyLjUtLjQgMjYuOS03LjYtLjYtMTcuNS04LjgtMzEuNi04LjItNDcuNyAxLTMwLjMgMTcuNS01Ny42IDQuOC04Ny40IDEzLjYtMzAuOSA1My41LTU1LjMgODMuMS03MCAzNi42LTE4LjMgOTQuOS0zLjcgMTI5LjMgMTUuOCAxOS43IDExLjEgMzQuNCAzMi43IDQ4LjMgNTAuNy0xOS41LTUuOC0zNi4xIDQuMi0zMy4xIDIwLjMgMTYuMy0xNC45IDQ0LjItLjIgNTIuNSAxNi40IDcuOSAxNS44IDcuOCAzOS4zIDkgNjIuOCAyLjkgNTctMTAuNCAxMTUuOS0zOS4xIDE1Ny4xLTcuNyAxMS0xNC4xIDIzLTI0LjkgMzAuNi0yNiAxOC4yLTY1LjQgMzQuNy05OS4yIDIzLjQtNDQuNy0xNS02NS00NC44LTg5LjUtNzguOC43IDE4LjcgMTMuOCAzNC4xIDI2LjggNDguNCAxMS4zIDEyLjUgMjUgMjYuNiAzOS43IDMyLjQtMTIuMy0yLjktMzEuMS0zLjgtMzYuMiA3LjItMjguNi0xLjktNTUuMS00LjgtNjguNy0yNC4yLTEwLjYtMTUuNC0yMS40LTQxLjQtMjYuMy02MS40em0yMjIgMTI0LjFjNC4xLTMgMTEuMS0yLjkgMTcuNC0zLjYtNS40LTIuNy0xMy0zLjctMTkuMy0yLjItLjEtNC4yLTItNi44LTMuMi0xMC4yIDEwLjYtMy44IDM1LjUtMjguNSA0OS42LTIwLjMgNi43IDMuOSA5LjUgMjYuMiAxMC4xIDM3IC40IDktLjggMTgtNC41IDIyLjgtMTguOC0uNi0zNS44LTIuOC01MC43LTcgLjktNi4xLTEtMTIuMS42LTE2LjV6bS0xNy4yLTIwYy0xNi44LjgtMjYtMS4yLTM4LjMtMTAuOC4yLS44IDEuNC0uNSAxLjUtMS40IDE4IDggNDAuOC0zLjMgNTktNC45LTcuOSA1LjEtMTQuNiAxMS42LTIyLjIgMTcuMXptLTEyLjEgMzMuMmMtMS42LTkuNC0zLjUtMTItMi44LTIwLjIgMjUtMTYuNiAyOS43IDI4LjYgMi44IDIwLjJ6TTIyNiA0MzguNmMtMTEuNi0uNy00OC4xLTE0LTM4LjUtMjMuNyA5LjQgNi41IDI3LjUgNC45IDQxLjMgNy4zLjggNC40LTIuOCAxMC4yLTIuOCAxNi40ek01Ny43IDQ5Ny4xYy00LjMtMTIuNy05LjItMjUuMS0xNC44LTM2LjkgMzAuOC0yMy44IDY1LjMtNDguOSAxMDIuMi02My41IDIuOC0xLjEgMjMuMiAyNS40IDI2LjIgMjcuNiAxNi41IDExLjcgMzcgMjEgNTYuMiAzMC4yIDEuMiA4LjggMy45IDIwLjIgOC43IDM1LjUuNyAyLjMgMS40IDQuNyAyLjIgNy4ySDU3Ljd6bTI0MC42IDUuN2gtLjhjLjMtLjIuNS0uNC44LS41di41em03LjUtNS43YzIuMS0xLjQgNC4zLTIuOCA2LjQtNC4zIDEuMSAxLjQgMi4yIDIuOCAzLjIgNC4zaC05LjZ6bTE1LjEtMjQuN2MtMTAuOCA3LjMtMjAuNiAxOC4zLTMzLjMgMjUuMi02IDMuMy0yNyAxMS43LTMzLjQgMTAuMi0zLjYtLjgtMy45LTUuMy01LjQtOS41LTMuMS05LTEwLjEtMjMuNC0xMC44LTM3LS44LTE3LjItMi41LTQ2IDE2LTQyLjQgMTQuOSAyLjkgMzIuMyA5LjcgNDMuOSAxNi4xIDcuMSAzLjkgMTEuMSA4LjYgMjEuOSA5LjUtLjEgMS40LS4xIDIuOC0uMiA0LjMtNS45IDMuOS0xNS4zIDMuOC0yMS44IDcuMSA5LjUuNCAxNyAyLjcgMjMuNSA1LjktLjEgMy40LS4zIDctLjQgMTAuNnptNTMuNCAyNC43aC0xNGMtLjEtMy4yLTIuOC01LjgtNi4xLTUuOHMtNS45IDIuNi02LjEgNS44aC0xNy40Yy0yLjgtNC40LTUuNy04LjYtOC45LTEyLjUgMi4xLTIuMiA0LTQuNyA2LTYuOSA5IDMuNyAxNC44LTQuOSAyMS43LTQuMiA3LjkuOCAxNC4yIDExLjcgMjUuNCAxMWwtLjYgMTIuNnptOC43IDBjLjItNCAuNC03LjguNi0xMS41IDE1LjYtNy4zIDI5IDEuMyAzNS43IDExLjVIMzgzem04My40LTM3Yy0yLjMgMTEuMi01LjggMjQtOS45IDM3LjEtLjItLjEtLjQtLjEtLjYtLjFINDI4Yy42LTEuMSAxLjItMi4yIDEuOS0zLjMtMi42LTYuMS05LTguNy0xMC45LTE1LjUgMTIuMS0yMi43IDYuNS05My40LTI0LjItNzguNSA0LjMtNi4zIDE1LjYtMTEuNSAyMC44LTE5LjMgMTMgMTAuNCAyMC44IDIwLjMgMzMuMiAzMS40IDYuOCA2IDIwIDEzLjMgMjEuNCAyMy4xLjggNS41LTIuNiAxOC45LTMuOCAyNS4xek0yMjIuMiAxMzAuNWM1LjQtMTQuOSAyNy4yLTM0LjcgNDUtMzIgNy43IDEuMiAxOCA4LjIgMTIuMiAxNy43LTMwLjItNy00NS4yIDEyLjYtNTQuNCAzMy4xLTguMS0yLTQuOS0xMy4xLTIuOC0xOC44em0xODQuMSA2My4xYzguMi0zLjYgMjIuNC0uNyAyOS42LTUuMy00LjItMTEuNS0xMC4zLTIxLjQtOS4zLTM3LjcuNSAwIDEgMCAxLjQuMSA2LjggMTQuMiAxMi43IDI5LjIgMjEuNCA0MS43LTUuNyAxMy41LTQzLjYgMjUuNC00My4xIDEuMnptMjAuNC00M3ptLTExNy4yIDQ1LjdjLTYuOC0xMC45LTE5LTMyLjUtMTQuNS00NS4zIDYuNSAxMS45IDguNiAyNC40IDE3LjggMzMuMyA0LjEgNCAxMi4yIDkgOC4yIDIwLjItLjkgMi43LTcuOCA4LjYtMTEuNyA5LjctMTQuNCA0LjMtNDcuOS45LTM2LjYtMTcuMSAxMS45LjcgMjcuOSA3LjggMzYuOC0uOHptMjcuMyA3MGMzLjggNi42IDEuNCAxOC43IDEyLjEgMjAuNiAyMC4yIDMuNCA0My42LTEyLjMgNTguMS0xNy44IDktMTUuMi0uOC0yMC43LTguOS0zMC41LTE2LjYtMjAtMzguOC00NC44LTM4LTc0LjcgNi43LTQuOSA3LjMgNy40IDguMiA5LjcgOC43IDIwLjMgMzAuNCA0Ni4yIDQ2LjMgNjMuNSAzLjkgNC4zIDEwLjMgOC40IDExIDExLjIgMi4xIDguMi01LjQgMTgtNC41IDIzLjUtMjEuNyAxMy45LTQ1LjggMjkuMS04MS40IDI1LjYtNy40LTYuNy0xMC4zLTIxLjQtMi45LTMxLjF6bS0yMDEuMy05LjJjLTYuOC0zLjktOC40LTIxLTE2LjQtMjEuNC0xMS40LS43LTkuMyAyMi4yLTkuMyAzNS41LTcuOC03LjEtOS4yLTI5LjEtMy41LTQwLjMtNi42LTMuMi05LjUgMy42LTEzLjEgNS45IDQuNy0zNC4xIDQ5LjgtMTUuOCA0Mi4zIDIwLjN6bTI5OS42IDI4LjhjLTEwLjEgMTkuMi0yNC40IDQwLjQtNTQgNDEtLjYtNi4yLTEuMS0xNS42IDAtMTkuNCAyMi43LTIuMiAzNi42LTEzLjcgNTQtMjEuNnptLTE0MS45IDEyLjRjMTguOSA5LjkgNTMuNiAxMSA3OS4zIDEwLjIgMS40IDUuNiAxLjMgMTIuNiAxLjQgMTkuNC0zMyAxLjgtNzItNi40LTgwLjctMjkuNnptOTIuMiA0Ni43Yy0xLjcgNC4zLTUuMyA5LjMtOS44IDExLjEtMTIuMSA0LjktNDUuNiA4LjctNjIuNC0uMy0xMC43LTUuNy0xNy41LTE4LjUtMjMuNC0yNi0yLjgtMy42LTE2LjktMTIuOS0uMi0xMi45IDEzLjEgMzIuNyA1OCAyOSA5NS44IDI4LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSmlyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTAgMjQxLjdDNDE3LjEgMTY5IDMyMC42IDcxLjggMjQ4LjUgMCA4MyAxNjQuOSA2IDI0MS43IDYgMjQxLjdjLTcuOSA3LjktNy45IDIwLjcgMCAyOC43QzEzOC44IDQwMi43IDY3LjggMzMxLjkgMjQ4LjUgNTEyYzM3OS40LTM3OCAxNS43LTE2LjcgMjQxLjUtMjQxLjcgOC03LjkgOC0yMC43IDAtMjguNnptLTI0MS41IDkwbC03Ni03NS43IDc2LTc1LjcgNzYgNzUuNy03NiA3NS43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvZ2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3OC4xIDQ1QzMzNy42IDE5LjkgMjkyLjYgOCAyNDguMiA4IDE2NSA4IDgzLjggNDkuOSAzNi45IDEyNS45Yy03MS45IDExNi42LTM1LjYgMjY5LjMgODEgMzQxLjJzMjY5LjMgMzUuNiAzNDEuMi04MC45YzcxLjktMTE2LjYgMzUuNi0yNjkuNC04MS0zNDEuMnptNTEuOCAzMjMuMmMtNDAuNCA2NS41LTExMC40IDEwMS41LTE4MiAxMDEuNS02LjggMC0xMy42LS40LTIwLjQtMS05LTEzLjYtMTkuOS0zMy4zLTIzLjctNDIuNC01LjctMTMuNy0yNy4yLTQ1LjYgMzEuMi02Ny4xIDUxLjctMTkuMSAxNzYuNy0xNi41IDIwOC44LTE3LjYtNCA5LTguNiAxNy45LTEzLjkgMjYuNnptLTIwMC44LTg2LjNjLTU1LjUtMS40LTgxLjctMjAuOC01OC41LTQ4LjJzNTEuMS00MC43IDY4LjktNTEuMmMxNy45LTEwLjUgMjcuMy0zMy43LTIzLjYtMjkuN0M4Ny4zIDE2MS41IDQ4LjYgMjUyLjEgMzcuNiAyOTNjLTguOC00OS43LS4xLTEwMi43IDI4LjUtMTQ5LjFDMTI4IDQzLjQgMjU5LjYgMTIuMiAzNjAuMSA3NC4xYzc0LjggNDYuMSAxMTEuMiAxMzAuOSA5OS4zIDIxMi43LTI0LjktLjUtMTc5LjMtMy42LTIzMC4zLTQuOXptMTgzLjgtNTQuOGMtMjIuNy02LTU3IDExLjMtODYuNyAyNy4yLTI5LjcgMTUuOC0zMS4xIDguMi0zMS4xIDguMnM0MC4yLTI4LjEgNTAuNy0zNC41IDMxLjktMTQgMTMuNC0yNC42Yy0zLjItMS44LTYuNy0yLjctMTAuNC0yLjctMTcuOCAwLTQxLjUgMTguNy02Ny41IDM1LjYtMzEuNSAyMC41LTY1LjMgMzEuMy02NS4zIDMxLjNsMTY5LjUtMS42IDQ2LjUtMjMuNHMzLjYtOS41LTE5LjEtMTUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKb29tbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjYgOTIuMUMuNiA1OC44IDI3LjQgMzIgNjAuNCAzMmMzMCAwIDU0LjUgMjEuOSA1OS4yIDUwLjIgMzIuNi03LjYgNjcuMS42IDk2LjUgMzBsLTQ0LjMgNDQuM2MtMjAuNS0yMC41LTQyLjYtMTYuMy01NS40LTMuNS0xNC4zIDE0LjMtMTQuMyAzNy45IDAgNTIuMmw5OS41IDk5LjUtNDQgNDQuM2MtODcuNy04Ny4yLTQ5LjctNDkuNy05OS44LTk5LjctMjYuOC0yNi41LTM1LTY0LjgtMjQuOC05OC45QzIwLjQgMTQ0LjYuNiAxMjAuNy42IDkyLjF6bTEyOS41IDExNi40bDQ0LjMgNDQuM2MxMC0xMCA4OS43LTg5LjcgOTkuNy05OS44IDE0LjMtMTQuMyAzNy42LTE0LjMgNTEuOSAwIDEyLjggMTIuOCAxNyAzNS0zLjUgNTUuNGw0NCA0NC4zYzMxLjItMzEuMiAzOC41LTY3LjYgMjguOS0xMDEuMiAyOS4yLTQuMSA1MS45LTI5LjIgNTEuOS01OS41IDAtMzMuMi0yNi44LTYwLjEtNTkuOC02MC4xLTMwLjMgMC01NS40IDIyLjUtNTkuNSA1MS42LTMzLjgtOS45LTcxLjctMS41LTk4LjMgMjUuMS0xOC4zIDE5LjEtNzEuMSA3MS41LTk5LjYgOTkuOXptMjY2LjMgMTUyLjJjOC4yLTMyLjctLjktNjguNS0yNi4zLTkzLjktMTEuOC0xMi4yIDUgNC43LTk5LjUtOTkuN2wtNDQuMyA0NC4zIDk5LjcgOTkuN2MxNC4zIDE0LjMgMTQuMyAzNy42IDAgNTEuOS0xMi44IDEyLjgtMzUgMTctNTUuNC0zLjVsLTQ0IDQ0LjNjMjcuNiAzMC4yIDY4IDM4LjggMTAyLjcgMjggNS41IDI3LjQgMjkuNyA0OC4xIDU4LjkgNDguMSAzMyAwIDU5LjgtMjYuOCA1OS44LTYwLjEgMC0zMC4yLTIyLjUtNTUtNTEuNi01OS4xem0tODQuMy01My4xbC00NC00NC4zYy04NyA4Ni40LTUwLjQgNTAuNC05OS43IDk5LjgtMTQuMyAxNC4zLTM3LjYgMTQuMy01MS45IDAtMTMuMS0xMy40LTE2LjktMzUuMyAzLjItNTUuNGwtNDQtNDQuM2MtMzAuMiAzMC4yLTM4IDY1LjItMjkuNSA5OC4zLTI2LjcgNi00Ni4yIDI5LjktNDYuMiA1OC4yQzAgNDUzLjIgMjYuOCA0ODAgNTkuOCA0ODBjMjguNiAwIDUyLjUtMTkuOCA1OC42LTQ2LjcgMzIuNyA4LjIgNjguNS0uNiA5NC4yLTI2IDMyLjEtMzIgMTIuMi0xMi40IDk5LjUtOTkuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKc1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNDMuOCAzODEuNGMwIDQzLjYtMjUuNiA2My41LTYyLjkgNjMuNS0zMy43IDAtNTMuMi0xNy40LTYzLjItMzguNWwzNC4zLTIwLjdjNi42IDExLjcgMTIuNiAyMS42IDI3LjEgMjEuNiAxMy44IDAgMjIuNi01LjQgMjIuNi0yNi41VjIzNy43aDQyLjF2MTQzLjd6bTk5LjYgNjMuNWMtMzkuMSAwLTY0LjQtMTguNi03Ni43LTQzbDM0LjMtMTkuOGM5IDE0LjcgMjAuOCAyNS42IDQxLjUgMjUuNiAxNy40IDAgMjguNi04LjcgMjguNi0yMC44IDAtMTQuNC0xMS40LTE5LjUtMzAuNy0yOGwtMTAuNS00LjVjLTMwLjQtMTIuOS01MC41LTI5LjItNTAuNS02My41IDAtMzEuNiAyNC4xLTU1LjYgNjEuNi01NS42IDI2LjggMCA0NiA5LjMgNTkuOCAzMy43TDM2OCAyOTBjLTcuMi0xMi45LTE1LTE4LTI3LjEtMTgtMTIuMyAwLTIwLjEgNy44LTIwLjEgMTggMCAxMi42IDcuOCAxNy43IDI1LjkgMjUuNmwxMC41IDQuNWMzNS44IDE1LjMgNTUuOSAzMSA1NS45IDY2LjIgMCAzNy44LTI5LjggNTguNi02OS43IDU4LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI0My44IDM0OS40YzAgNDMuNi0yNS42IDYzLjUtNjIuOSA2My41LTMzLjcgMC01My4yLTE3LjQtNjMuMi0zOC41bDM0LjMtMjAuN2M2LjYgMTEuNyAxMi42IDIxLjYgMjcuMSAyMS42IDEzLjggMCAyMi42LTUuNCAyMi42LTI2LjVWMjM3LjdoNDIuMXYxNDMuN3ptOTkuNiA2My41Yy0zOS4xIDAtNjQuNC0xOC42LTc2LjctNDNsMzQuMy0xOS44YzkgMTQuNyAyMC44IDI1LjYgNDEuNSAyNS42IDE3LjQgMCAyOC42LTguNyAyOC42LTIwLjggMC0xNC40LTExLjQtMTkuNS0zMC43LTI4bC0xMC41LTQuNWMtMzAuNC0xMi45LTUwLjUtMjkuMi01MC41LTYzLjUgMC0zMS42IDI0LjEtNTUuNiA2MS42LTU1LjYgMjYuOCAwIDQ2IDkuMyA1OS44IDMzLjdMMzY4IDI5MGMtNy4yLTEyLjktMTUtMTgtMjcuMS0xOC0xMi4zIDAtMjAuMSA3LjgtMjAuMSAxOCAwIDEyLjYgNy44IDE3LjcgMjUuOSAyNS42bDEwLjUgNC41YzM1LjggMTUuMyA1NS45IDMxIDU1LjkgNjYuMiAwIDM3LjgtMjkuOCA1OC42LTY5LjcgNTguNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFKc2ZpZGRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNjM0IDIzNy40NjJjLTQuNzI3LTIuNjIxLTUuNjY0LTUuNzQ4LTYuMzgxLTEwLjc3Ni0yLjM1Mi0xNi40ODgtMy41MzktMzMuNjE5LTkuMDk3LTQ5LjA5NS0zNS44OTUtOTkuOTU3LTE1My45OS0xNDMuMzg2LTI0Ni44NDktOTEuNjQ2LTI3LjM3IDE1LjI1LTQ4Ljk3MSAzNi4zNjktNjUuNDkzIDYzLjkwMy0zLjE4NC0xLjUwOC01LjQ1OC0yLjcxLTcuODI0LTMuNjg2LTMwLjEwMi0xMi40MjEtNTkuMDQ5LTEwLjEyMS04NS4zMzEgOS4xNjctMjUuNTMxIDE4LjczNy0zNi40MjIgNDQuNTQ4LTMyLjY3NiA3Ni40MDguMzU1IDMuMDI1LTEuOTY3IDcuNjIxLTQuNTE0IDkuNTQ1LTM5LjcxMiAyOS45OTItNTYuMDMxIDc4LjA2NS00MS45MDIgMTI0LjYxNSAxMy44MzEgNDUuNTY5IDU3LjUxNCA3OS43OTYgMTA1LjYwOCA4MS40MzMgMzAuMjkxIDEuMDMxIDYwLjYzNy41NDYgOTAuOTU5LjUzOSA4NC4wNDEtLjAyMSAxNjguMDkuNTMxIDI1Mi4xMi0uNDggNTIuNjY0LS42MzQgOTYuMTA4LTM2Ljg3MyAxMDguMjEyLTg3LjI5MyAxMS41NC00OC4wNzQtMTEuMTQ0LTk3LjMtNTYuODMyLTEyMi42MzR6bTIxLjEwNyAxNTYuODhjLTE4LjIzIDIyLjQzMi00Mi4zNDMgMzUuMjUzLTcxLjI4IDM1LjY1LTU2Ljg3NC43ODEtMTEzLjc2Ny4yMy0xNzAuNjUyLjIzIDAgLjctMTYzLjAyOC4xNTktMTYzLjcyOC4xNTQtNDMuODYxLS4zMzItNzYuNzM5LTE5Ljc2Ni05NS4xNzUtNTkuOTk1LTE4LjkwMi00MS4yNDUtNC4wMDQtOTAuODQ4IDM0LjE4Ni0xMTYuMTA2IDkuMTgyLTYuMDczIDEyLjUwNS0xMS41NjYgMTAuMDk2LTIzLjEzNi01LjQ5LTI2LjM2MSA0LjQ1My00Ny45NTYgMjYuNDItNjIuOTgxIDIyLjk4Ny0xNS43MjMgNDcuNDIyLTE2LjE0NiA3Mi4wMzQtMy4wODMgMTAuMjY5IDUuNDUgMTQuNjA3IDExLjU2NCAyMi4xOTgtMi41MjcgMTQuMjIyLTI2LjM5OSAzNC41NTctNDYuNzI3IDYwLjY3MS02MS4yOTQgOTcuNDYtNTQuMzY2IDIyOC4zNyA3LjU2OCAyMzAuMjQgMTMyLjY5Ny4xMjIgOC4xNSAyLjQxMiAxMi40MjggOS44NDggMTUuODk0IDU3LjU2IDI2LjgyOSA3NC40NTYgOTYuMTIyIDM1LjE0MiAxNDQuNDk3em0tODcuNzg5LTgwLjQ5OWMtNS44NDggMzEuMTU3LTM0LjYyMiA1NS4wOTYtNjYuNjY2IDU1LjA5NS0xNi45NTMtLjAwMS0zMi4wNTgtNi41NDUtNDQuMDc5LTE3LjcwNS0yNy42OTctMjUuNzEzLTcxLjE0MS03NC45OC05NS45MzctOTMuMzg3LTIwLjA1Ni0xNC44ODgtNDEuOTktMTIuMzMzLTYwLjI3MiAzLjc4Mi00OS45OTYgNDQuMDcxIDE1Ljg1OSAxMjEuNzc1IDY3LjA2MyA3Ny4xODggNC41NDgtMy45NiA3Ljg0LTkuNTQzIDEyLjc0NC0xMi44NDQgOC4xODQtNS41MDkgMjAuNzY2LS44ODQgMTMuMTY4IDEwLjYyMi0xNy4zNTggMjYuMjg0LTQ5LjMzIDM4LjE5Ny03OC44NjMgMjkuMzAxLTI4Ljg5Ny04LjcwNC00OC44NC0zNS45NjgtNDguNjI2LTcwLjE3OSAxLjIyNS0yMi40ODUgMTIuMzY0LTQzLjA2IDM1LjQxNC01NS45NjUgMjIuNTc1LTEyLjYzOCA0Ni4zNjktMTMuMTQ2IDY2Ljk5MSAyLjQ3NEMyOTUuNjggMjgwLjcgMzIwLjQ2NyAzMjMuOTcgMzUyLjE4NSAzNDMuNDdjMjQuNTU4IDE1LjA5OSA1NC4yNTQgNy4zNjMgNjguODIzLTE3LjUwNiAyOC44My00OS4yMDktMzQuNTkyLTEwNS4wMTYtNzguODY4LTYzLjQ2LTMuOTg5IDMuNzQ0LTYuOTE3IDguOTMyLTExLjQxIDExLjcyLTEwLjk3NSA2LjgxMS0xNy4zMzMtNC4xMTMtMTIuODA5LTEwLjM1MyAyMC43MDMtMjguNTU0IDUwLjQ2NC00MC40NCA4My4yNzEtMjguMjE0IDMxLjQyOSAxMS43MTQgNDkuMTA4IDQ0LjM2NiA0Mi43NiA3OC4xODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2FnZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNC4yIDUwMS41TDE1OC40IDMyMC4zIDI5OC4yIDE4NWMyLjYtMi43IDEuNy0xMC41LTUuMy0xMC41aC02OS4yYy0zLjUgMC03IDEuOC0xMC41IDUuM0w4MC45IDMxMy41VjcuNXEwLTcuNS03LjUtNy41SDIxLjVRMTQgMCAxNCA3LjV2NDk3cTAgNy41IDcuNSA3LjVoNTEuOXE3LjUgMCA3LjUtNy41di0xMDlsMzAuOC0yOS4zIDExMC41IDE0MC42YzMgMy41IDYuNSA1LjMgMTAuNSA1LjNoNjYuOXE1LjI1IDAgNi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtleWJhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg2LjE3IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHptMTExLjkyLTE0Ny42Yy05LjUtMTQuNjItMzkuMzctNTIuNDUtODcuMjYtNzMuNzFxLTkuMS00LjA2LTE4LjM4LTcuMjdhNzguNDMgNzguNDMgMCAwIDAtNDcuODgtMTA0LjEzYy0xMi40MS00LjEtMjMuMzMtNi0zMi40MS01Ljc3LS42LTItMS44OS0xMSA5LjQtMzVMMTk4LjY2IDMybC01LjQ4IDcuNTZjLTguNjkgMTIuMDYtMTYuOTIgMjMuNTUtMjQuMzQgMzQuODlhNTEgNTEgMCAwIDAtOC4yOS0xLjI1Yy00MS41My0yLjQ1LTM5LTIuMzMtNDEuMDYtMi4zMy01MC42MSAwLTUwLjc1IDUyLjEyLTUwLjc1IDQ1Ljg4bC0yLjM2IDM2LjY4Yy0xLjYxIDI3IDE5Ljc1IDUwLjIxIDQ3LjYzIDUxLjg1bDguOTMuNTRhMjE0IDIxNCAwIDAgMC00Ni4yOSAzNS41NEMxNCAzMDQuNjYgMTQgMzc0IDE0IDQyOS43N3YzMy42NGwyMy4zMi0yOS44YTE0OC42IDE0OC42IDAgMCAwIDE0LjU2IDM3LjU2YzUuNzggMTAuMTMgMTQuODcgOS40NSAxOS42NCA3LjMzIDQuMjEtMS44NyAxMC02LjkyIDMuNzUtMjAuMTFhMTc4LjI5IDE3OC4yOSAwIDAgMS0xNS43Ni01My4xM2w0Ni44Mi01OS44My0yNC42NiA3NC4xMWM1OC4yMy00Mi40IDE1Ny4zOC02MS43NiAyMzYuMjUtMzguNTkgMzQuMiAxMC4wNSA2Ny40NS42OSA4NC43NC0yMy44NC43Mi0xIDEuMi0yLjE2IDEuODUtMy4yMmExNTYuMDkgMTU2LjA5IDAgMCAxIDIuOCAyOC40M2MwIDIzLjMtMy42OSA1Mi45My0xNC44OCA4MS42NC0yLjUyIDYuNDYgMS43NiAxNC41IDguNiAxNS43NCA3LjQyIDEuNTcgMTUuMzMtMy4xIDE4LjM3LTExLjE1QzQyOSA0NDMgNDM0IDQxNCA0MzQgMzgyLjMyYzAtMzguNTgtMTMtNzcuNDYtMzUuOTEtMTEwLjkyek0xNDIuMzcgMTI4LjU4bC0xNS43LS45My0xLjM5IDIxLjc5IDEzLjEzLjc4YTkzIDkzIDAgMCAwIC4zMiAxOS41N2wtMjIuMzgtMS4zNGExMi4yOCAxMi4yOCAwIDAgMS0xMS43Ni0xMi43OUwxMDcgMTE5YzEtMTIuMTcgMTMuODctMTEuMjcgMTMuMjYtMTEuMzJsMjkuMTEgMS43M2ExNDQuMzUgMTQ0LjM1IDAgMCAwLTcgMTkuMTd6bTE0OC40MiAxNzIuMThhMTAuNTEgMTAuNTEgMCAwIDEtMTQuMzUtMS4zOWwtOS42OC0xMS40OS0zNC40MiAyN2E4LjA5IDguMDkgMCAwIDEtMTEuMTMtMS4wOGwtMTUuNzgtMTguNjRhNy4zOCA3LjM4IDAgMCAxIDEuMzQtMTAuMzRsMzQuNTctMjcuMTgtMTQuMTQtMTYuNzQtMTcuMDkgMTMuNDVhNy43NSA3Ljc1IDAgMCAxLTEwLjU5LTFzLTMuNzItNC40Mi0zLjgtNC41M2E3LjM4IDcuMzggMCAwIDEgMS4zNy0xMC4zNEwyMTQgMjI1LjE5cy0xOC41MS0yMi0xOC42LTIyLjE0YTkuNTYgOS41NiAwIDAgMSAxLjc0LTEzLjQyIDEwLjM4IDEwLjM4IDAgMCAxIDE0LjMgMS4zN2w4MS4wOSA5Ni4zMmE5LjU4IDkuNTggMCAwIDEtMS43NCAxMy40NHpNMTg3LjQ0IDQxOWExOCAxOCAwIDEgMCAxOCAxOCAxOCAxOCAwIDAgMC0xOC0xOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXljZG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMuOCA0MDkuM2w2MC41LTU5YzMyLjEgNDIuOCA3MS4xIDY2IDEyNi42IDY3LjQgMzAuNS43IDYwLjMtNyA4Ni40LTIyLjQgNS4xIDUuMyAxOC41IDE5LjUgMjAuOSAyMi0zMi4yIDIwLjctNjkuNiAzMS4xLTEwOC4xIDMwLjItNDMuMy0xLjEtODQuNi0xNi43LTExNy43LTQ0LjQuMy0uNi0zOC4yIDM3LjUtMzguNiAzNy45IDkuNSAyOS44LTEzLjEgNjIuNC00Ni4zIDYyLjRDMjAuNyA1MDMuMyAwIDQ4MS43IDAgNDU0LjljMC0zNC4zIDMzLjEtNTYuNiA2My44LTQ1LjZ6bTM1NC45LTI1Mi40YzE5LjEgMzEuMyAyOS42IDY3LjQgMjguNyAxMDQtMS4xIDQ0LjgtMTkgODcuNS00OC42IDEyMSAuMy4zIDIzLjggMjUuMiAyNC4xIDI1LjUgOS42LTEuMyAxOS4yIDIgMjUuOSA5LjEgMTEuMyAxMiAxMC45IDMwLjktMS4xIDQyLjQtMTIgMTEuMy0zMC45IDEwLjktNDIuNC0xLjEtNi43LTctOS40LTE2LjgtNy42LTI2LjMtMjQuOS0yNi42LTQ0LjQtNDcuMi00NC40LTQ3LjIgNDIuNy0zNC4xIDYzLjMtNzkuNiA2NC40LTEyNC4yLjctMjguOS03LjItNTcuMi0yMS4xLTgyLjJsMjIuMS0yMXpNMTA0IDUzLjFjNi43IDcgOS40IDE2LjggNy42IDI2LjNsNDUuOSA0OC4xYy00LjcgMy44LTEzLjMgMTAuNC0yMi44IDIxLjMtMjUuNCAyOC41LTM5LjYgNjQuOC00MC43IDEwMi45LS43IDI4LjkgNi4xIDU3LjIgMjAgODIuNGwtMjIgMjEuNUM3Mi43IDMyNCA2My4xIDI4Ny45IDY0LjIgMjUwLjljMS00NC42IDE4LjMtODcuNiA0Ny41LTEyMS4xbC0yNS4zLTI2LjRjLTkuNiAxLjMtMTkuMi0yLTI1LjktOS4xLTExLjMtMTItMTAuOS0zMC45IDEuMS00Mi40QzczLjUgNDAuNyA5Mi4yIDQxIDEwNCA1My4xek00NjQuOSA4YzI2IDAgNDcuMSAyMi40IDQ3LjEgNDguM1M0OTAuOSAxMDQgNDY0LjkgMTA0Yy02LjMuMS0xNC0xLjEtMTUuOS0xLjhsLTYyLjkgNTkuN2MtMzIuNy00My42LTc2LjctNjUuOS0xMjYuOS02Ny4yLTMwLjUtLjctNjAuMyA2LjgtODYuMiAyMi40bC0yMS4xLTIyQzE4NC4xIDc0LjMgMjIxLjUgNjQgMjYwIDY0LjljNDMuMyAxLjEgODQuNiAxNi43IDExNy43IDQ0LjZsNDEuMS0zOC42Yy0xLjUtNC43LTIuMi05LjYtMi4yLTE0LjVDNDE2LjUgMjkuNyA0MzguOSA4IDQ2NC45IDh6TTI1Ni43IDExMy40YzUuNSAwIDEwLjkuNCAxNi40IDEuMSA3OC4xIDkuOCAxMzMuNCA4MS4xIDEyMy44IDE1OS4xLTkuOCA3OC4xLTgxLjEgMTMzLjQtMTU5LjEgMTIzLjgtNzguMS05LjgtMTMzLjQtODEuMS0xMjMuOC0xNTkuMiA5LjMtNzIuNCA3MC4xLTEyNC42IDE0Mi43LTEyNC44em0tNTkgMTE5LjRjLjYgMjIuNyAxMi4yIDQxLjggMzIuNCA1Mi4ybC0xMSA1MS43aDczLjdsLTExLTUxLjdjMjAuMS0xMC45IDMyLjEtMjkgMzIuNC01Mi4yLS40LTMyLjgtMjUuOC01Ny41LTU4LjMtNTguMy0zMi4xLjgtNTcuMyAyNC44LTU4LjIgNTguM3pNMjU2IDE2MFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpY2tzdGFydGVySyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDcuMyAxMTQuNGMwLTU2LjItMzIuNS04Mi40LTczLjQtODIuNEMyNi4yIDMyIDAgNjguMiAwIDExMy40djI4M2MwIDQ3LjMgMjUuMyA4My40IDc0LjkgODMuNCAzOS44IDAgNzIuNC0yNS42IDcyLjQtODMuNHYtNzYuNWwxMTIuMSAxMzguM2MyMi43IDI3LjIgNzIuMSAzMC43IDEwMy4yIDAgMjctMjcuNiAyNy4zLTY3LjQgNy40LTkyLjJsLTkwLjgtMTE0LjggNzQuOS0xMDcuNGMxNy40LTI0LjcgMTcuNS02My4xLTEwLjQtODkuOC0zMC4zLTI5LTgyLjQtMzEuNi0xMTMuNiAxMi44TDE0Ny4zIDE4NXYtNzAuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaWNrc3RhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDgwSDQ4Yy0yNi40IDAtNDgtMjEuNi00OC00OFY4MGMwLTI2LjQgMjEuNi00OCA0OC00OGgzNTJjMjYuNCAwIDQ4IDIxLjYgNDggNDh2MzUyYzAgMjYuNC0yMS42IDQ4LTQ4IDQ4ek0xOTkuNiAxNzguNWMwLTMwLjctMTcuNi00NS4xLTM5LjctNDUuMS0yNS44IDAtNDAgMTkuOC00MCA0NC41djE1NC44YzAgMjUuOCAxMy43IDQ1LjYgNDAuNSA0NS42IDIxLjUgMCAzOS4yLTE0IDM5LjItNDUuNnYtNDEuOGw2MC42IDc1LjdjMTIuMyAxNC45IDM5IDE2LjggNTUuOCAwIDE0LjYtMTUuMSAxNC44LTM2LjggNC01MC40bC00OS4xLTYyLjggNDAuNS01OC43YzkuNC0xMy41IDkuNS0zNC41LTUuNi00OS4xLTE2LjQtMTUuOS00NC42LTE3LjMtNjEuNCA3bC00NC44IDY0Ljd2LTM4Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS29ydnVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Ni41IDM0aC0zMjdDMjYuOCAzNCAwIDYwLjggMCA5My41djMyNy4xQzAgNDUzLjIgMjYuOCA0ODAgNTkuNSA0ODBoMzI3LjFjMzMgMCA1OS41LTI2LjggNTkuNS01OS41di0zMjdDNDQ2IDYwLjggNDE5LjIgMzQgMzg2LjUgMzR6TTg3LjEgMTIwLjhoOTZ2MTE2bDYxLjgtMTE2aDExMC45bC04MS4yIDEzMkg4Ny4xdi0xMzJ6bTE2MS44IDI3Mi4xbC02NS43LTExMy42djExMy42aC05NlYyNjIuMWgxOTEuNWw4OC42IDEzMC44SDI0OC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcmF2ZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjQsMTE1LjgzYTUuNzIsNS43MiwwLDAsMC0uMjgtLjY4LDguNTIsOC41MiwwLDAsMC0uNTMtMS4yNSw2LDYsMCwwLDAtLjU0LS43MSw5LjM2LDkuMzYsMCwwLDAtLjcyLS45NGMtLjIzLS4yMi0uNTItLjQtLjc3LS42YTguODQsOC44NCwwLDAsMC0uOS0uNjhMNDA0LjQsNTUuNTVhOCw4LDAsMCwwLTgsMEwzMDAuMTIsMTExaDBhOC4wNyw4LjA3LDAsMCwwLS44OC42OSw3LjY4LDcuNjgsMCwwLDAtLjc4LjYsOC4yMyw4LjIzLDAsMCwwLS43Mi45M2MtLjE3LjI0LS4zOS40NS0uNTQuNzFhOS43LDkuNywwLDAsMC0uNTIsMS4yNWMtLjA4LjIzLS4yMS40NC0uMjguNjhhOC4wOCw4LjA4LDAsMCwwLS4yOCwyLjA4VjIyMy4xOGwtODAuMjIsNDYuMTlWNjMuNDRhNy44LDcuOCwwLDAsMC0uMjgtMi4wOWMtLjA2LS4yNC0uMi0uNDUtLjI4LS42OGE4LjM1LDguMzUsMCwwLDAtLjUyLTEuMjRjLS4xNC0uMjYtLjM3LS40Ny0uNTQtLjcyYTkuMzYsOS4zNiwwLDAsMC0uNzItLjk0LDkuNDYsOS40NiwwLDAsMC0uNzgtLjYsOS44LDkuOCwwLDAsMC0uODgtLjY4aDBMMTE1LjYxLDEuMDdhOCw4LDAsMCwwLTgsMEwxMS4zNCw1Ni40OWgwYTYuNTIsNi41MiwwLDAsMC0uODguNjksNy44MSw3LjgxLDAsMCwwLS43OS42LDguMTUsOC4xNSwwLDAsMC0uNzEuOTNjLS4xOC4yNS0uNC40Ni0uNTUuNzJhNy44OCw3Ljg4LDAsMCwwLS41MSwxLjI0LDYuNDYsNi40NiwwLDAsMC0uMjkuNjcsOC4xOCw4LjE4LDAsMCwwLS4yOCwyLjF2MzI5LjdhOCw4LDAsMCwwLDQsNi45NWwxOTIuNSwxMTAuODRhOC44Myw4LjgzLDAsMCwwLDEuMzMuNTRjLjIxLjA4LjQxLjIuNjMuMjZhNy45Miw3LjkyLDAsMCwwLDQuMSwwYy4yLS4wNS4zNy0uMTYuNTUtLjIyYTguNiw4LjYsMCwwLDAsMS40LS41OEw0MDQuNCw0MDAuMDlhOCw4LDAsMCwwLDQtNi45NVYyODcuODhsOTIuMjQtNTMuMTFhOCw4LDAsMCwwLDQtN1YxMTcuOTJBOC42Myw4LjYzLDAsMCwwLDUwNC40LDExNS44M1pNMTExLjYsMTcuMjhoMGw4MC4xOSw0Ni4xNS04MC4yLDQ2LjE4TDMxLjQxLDYzLjQ0Wm04OC4yNSw2MFYyNzguNmwtNDYuNTMsMjYuNzktMzMuNjksMTkuNFYxMjMuNWw0Ni41My0yNi43OVptMCw0MTIuNzhMMjMuMzcsMzg4LjVWNzcuMzJMNTcuMDYsOTYuN2w0Ni41MiwyNi44VjMzOC42OGE2Ljk0LDYuOTQsMCwwLDAsLjEyLjksOCw4LDAsMCwwLC4xNiwxLjE4aDBhNS45Miw1LjkyLDAsMCwwLC4zOC45LDYuMzgsNi4zOCwwLDAsMCwuNDIsMXYwYTguNTQsOC41NCwwLDAsMCwuNi43OCw3LjYyLDcuNjIsMCwwLDAsLjY2Ljg0bDAsMGMuMjMuMjIuNTIuMzguNzcuNThhOC45Myw4LjkzLDAsMCwwLC44Ni42NmwwLDAsMCwwLDkyLjE5LDUyLjE4Wm04LTEwNi4xNy04MC4wNi00NS4zMiw4NC4wOS00OC40MSw5Mi4yNi01My4xMSw4MC4xMyw0Ni4xMy01OC44LDMzLjU2Wm0xODQuNTIsNC41N0wyMTUuODgsNDkwLjExVjM5Ny44TDM0Ni42LDMyMy4ybDQ1Ljc3LTI2LjE1Wm0wLTExOS4xM0wzNTguNjgsMjUwbC00Ni41My0yNi43OVYxMzEuNzlsMzMuNjksMTkuNEwzOTIuMzcsMTc4Wm04LTEwNS4yOC04MC4yLTQ2LjE3LDgwLjItNDYuMTYsODAuMTgsNDYuMTVabTgsMTA1LjI4VjE3OEw0NTUsMTUxLjE5bDMzLjY4LTE5LjR2OTEuMzloMFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm1TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTkyLjIgMzEyLjljLTYzLjQgMC04NS40LTI4LjYtOTcuMS02NC4xLTE2LjMtNTEtMjEuNS04NC4zLTYzLTg0LjMtMjIuNCAwLTQ1LjEgMTYuMS00NS4xIDYxLjIgMCAzNS4yIDE4IDU3LjIgNDMuMyA1Ny4yIDI4LjYgMCA0Ny42LTIxLjMgNDcuNi0yMS4zbDExLjcgMzEuOXMtMTkuOCAxOS40LTYxLjIgMTkuNGMtNTEuMyAwLTc5LjktMzAuMS03OS45LTg1LjggMC01Ny45IDI4LjYtOTIgODIuNS05MiA3My41IDAgODAuOCA0MS40IDEwMC44IDEwMS45IDguOCAyNi44IDI0LjIgNDYuMiA2MS4yIDQ2LjIgMjQuOSAwIDM4LjEtNS41IDM4LjEtMTkuMSAwLTE5LjktMjEuOC0yMi00OS45LTI4LjYtMzAuNC03LjMtNDIuNS0yMy4xLTQyLjUtNDggMC00MCAzMi4zLTUyLjQgNjUuMi01Mi40IDM3LjQgMCA2MC4xIDEzLjYgNjMgNDYuNmwtMzYuNyA0LjRjLTEuNS0xNS44LTExLTIyLjQtMjguNi0yMi40LTE2LjEgMC0yNiA3LjMtMjYgMTkuOCAwIDExIDQuOCAxNy42IDIwLjkgMjEuMyAzMi43IDcuMSA3MS44IDEyIDcxLjggNTcuNS4xIDM2LjctMzAuNyA1MC42LTc2LjEgNTAuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXN0Zm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI1LjggMzY3LjFsLTE4LjgtNTFzLTMwLjUgMzQtNzYuMiAzNGMtNDAuNSAwLTY5LjItMzUuMi02OS4yLTkxLjUgMC03Mi4xIDM2LjQtOTcuOSA3Mi4xLTk3LjkgNjYuNSAwIDc0LjggNTMuMyAxMDAuOSAxMzQuOSAxOC44IDU2LjkgNTQgMTAyLjYgMTU1LjQgMTAyLjYgNzIuNyAwIDEyMi0yMi4zIDEyMi04MC45IDAtNzIuOS02Mi43LTgwLjYtMTE1LTkyLjEtMjUuOC01LjktMzMuNC0xNi40LTMzLjQtMzQgMC0xOS45IDE1LjgtMzEuNyA0MS42LTMxLjcgMjguMiAwIDQzLjQgMTAuNiA0NS43IDM1LjhsNTguNi03Yy00LjctNTIuOC00MS4xLTc0LjUtMTAwLjktNzQuNS01Mi44IDAtMTA0LjQgMTkuOS0xMDQuNCA4My45IDAgMzkuOSAxOS40IDY1LjEgNjggNzYuOCA0NC45IDEwLjYgNzkuOCAxMy44IDc5LjggNDUuNyAwIDIxLjctMjEuMSAzMC41LTYxIDMwLjUtNTkuMiAwLTgzLjktMzEuMS05Ny45LTczLjktMzItOTYuOC00My42LTE2My0xNjEuMy0xNjNDNDUuNyAxMTMuOCAwIDE2OC4zIDAgMjYxYzAgODkuMSA0NS43IDEzNy4yIDEyNy45IDEzNy4yIDY2LjIgMCA5Ny45LTMxLjEgOTcuOS0zMS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlYW5wdWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg2LjUzOSAxMTEuNDg1bDE1LjA5NiAyNDguOTU1LTEwLjk3OS0uMjc1Yy0zNi4yMzItLjgyNC03MS42NCA4Ljc4My0xMDIuNjU3IDI3Ljk5Ny0zMS4wMTYtMTkuMjE0LTY2LjQyNC0yNy45OTctMTAyLjY1Ny0yNy45OTctNDUuNTY0IDAtODIuMDcgMTAuNzA1LTEyMy41MTYgMjcuNzIzTDkzLjExNyAxMjkuNmMyOC41NDYtMTEuODAzIDYxLjQ4NC0xOC4xMTUgOTIuMjI2LTE4LjExNSA0MS4xNzMgMCA3My44MzYgMTMuMTc1IDEwMi42NTcgNDIuNTQ0IDI3LjcyMy0yOC4yNzEgNTkuMDEzLTQxLjcyMSA5OC41MzktNDIuNTQ0ek01NjkuMDcgNDQ4Yy0yNS41MjYgMC00Ny40ODUtNS4yMTUtNzAuNTQyLTE1LjY0NS0zNC4zMS0xNS42NDUtNjkuOTkzLTI0Ljk3OC0xMDcuODcxLTI0Ljk3OC0zOC45NzcgMC03NC45MzQgMTIuOTAxLTEwMi42NTcgNDAuNjIzLTI3LjcyMy0yNy43MjMtNjMuNjgtNDAuNjIzLTEwMi42NTctNDAuNjIzLTM3Ljg3OCAwLTczLjU2MSA5LjMzMy0xMDcuODcxIDI0Ljk3OEM1NS4yMzkgNDQyLjIzNiAzMi43MzEgNDQ4IDguMzAzIDQ0OEg2LjkzTDQ5LjQ3NSA5OC44NTlDODguNzI2IDc2LjYyNiAxMzYuNDg2IDY0IDE4MS43NzUgNjQgMjE4LjgzIDY0IDI1Ni45ODQgNzEuNjg1IDI4OCA5My4wOTUgMzE5LjAxNiA3MS42ODUgMzU3LjE3IDY0IDM5NC4yMjUgNjRjNDUuMjg5IDAgOTMuMDQ5IDEyLjYyNiAxMzIuMyAzNC44NTlMNTY5LjA3IDQ0OHptLTQzLjM2OC00NC43NDFsLTM0LjAzNi0yODAuMjQ2Yy0zMC43NDItMTMuOTk5LTY3LjI0OC0yMS40MS0xMDEuMDA5LTIxLjQxLTM4LjQyOCAwLTc0LjM4NSAxMi4wNzctMTAyLjY1NyAzOC43MDItMjguMjcyLTI2LjYyNS02NC4yMjgtMzguNzAyLTEwMi42NTctMzguNzAyLTMzLjc2MSAwLTcwLjI2NyA3LjQxMS0xMDEuMDA5IDIxLjQxTDUwLjI5OCA0MDMuMjU5YzQ3LjIxMS0xOS40ODcgODIuODk0LTMzLjQ4NiAxMzUuMDQ1LTMzLjQ4NiAzNy42MDQgMCA3MC44MTcgOS42MDYgMTAyLjY1NyAyOS42NDQgMzEuODQtMjAuMDM4IDY1LjA1Mi0yOS42NDQgMTAyLjY1Ny0yOS42NDQgNTIuMTUxIDAgODcuODM0IDEzLjk5OSAxMzUuMDQ1IDMzLjQ4NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMi43IDIxOWMwLTIwLjUgMy4yLTMyLjYgMy4yLTU0LjYgMC0zNC4yLTEyLjYtNDUuMi00MC41LTQ1LjJoLTIwLjV2MjQuMmg2LjNjMTQuMiAwIDE3LjMgNC43IDE3LjMgMjIuMSAwIDE2LjMtMS42IDMyLjYtMS42IDUxLjUgMCAyNC4yIDcuOSAzMy42IDIzLjYgMzcuM3YxLjZjLTE1LjggMy43LTIzLjYgMTMuMS0yMy42IDM3LjMgMCAxOC45IDEuNiAzNC4yIDEuNiA1MS41IDAgMTcuOS0zLjcgMjIuNi0xNy4zIDIyLjZ2LjVoLTYuM1YzOTNoMjAuNWMyNy44IDAgNDAuNS0xMSA0MC41LTQ1LjIgMC0yMi42LTMuMi0zNC4yLTMuMi01NC42IDAtMTEgNi44LTIyLjYgMjcuMy0yMy42di0yNy4zYy0yMC41LS43LTI3LjMtMTIuMy0yNy4zLTIzLjN6bS0xMDUuNiAzMmMtMTUuOC02LjMtMzAuNS0xMC0zMC41LTIwLjUgMC03LjkgNi4zLTEyLjYgMTcuOS0xMi42czIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIxIDMwLjVjMTUuOCAxMy4xIDM5LjkgMjIuMSA1OS45IDIyLjEgNDIgMCA2NC42LTIyLjEgNjQuNi01MXMtMjIuNS00MS00My00Ny44em0tMzU4LjkgNTkuNGMtMy43IDAtOC40LTMuMi04LjQtMTMuMVYxMTkuMUg2NS4yYy0yOC40IDAtNDEgMTEtNDEgNDUuMiAwIDIyLjYgMy4yIDM1LjIgMy4yIDU0LjYgMCAxMS02LjggMjIuNi0yNy4zIDIzLjZ2MjcuM2MyMC41LjUgMjcuMyAxMi4xIDI3LjMgMjMuMSAwIDE5LjQtMy4yIDMxLTMuMiA1My42IDAgMzQuMiAxMi42IDQ1LjIgNDAuNSA0NS4yaDIwLjV2LTI0LjJoLTYuM2MtMTMuMSAwLTE3LjMtNS4zLTE3LjMtMjIuNnMxLjYtMzIuMSAxLjYtNTEuNWMwLTI0LjItNy45LTMzLjYtMjMuNi0zNy4zdi0xLjZjMTUuOC0zLjcgMjMuNi0xMy4xIDIzLjYtMzcuMyAwLTE4LjktMS42LTM0LjItMS42LTUxLjVzMy43LTIyLjEgMTcuMy0yMi4xSDkzdjE1MC44YzAgMzIuMSAxMSA1My4xIDQzLjEgNTMuMSAxMCAwIDE3LjktMS42IDIzLjYtMy43bC01LjMtMzQuMmMtMy4xLjgtNC42LjgtNi4yLjh6TTM3OS45IDI1MWMtMTYuMy02LjMtMzEtMTAtMzEtMjAuNSAwLTcuOSA2LjMtMTIuNiAxNy45LTEyLjYgMTEuNiAwIDIyLjEgNC43IDMzLjYgMTMuMWwyMS0yNy44Yy0xMy4xLTEwLTMxLTIwLjUtNTUuMi0yMC41LTM1LjcgMC01OS45IDIwLjUtNTkuOSA0OS40IDAgMjUuNyAyMi42IDM4LjkgNDEuNSA0Ni4yIDE2LjMgNi4zIDMyLjEgMTEuNiAzMi4xIDIyLjEgMCA3LjktNi4zIDEzLjEtMjAuNSAxMy4xLTEzLjEgMC0yNi4zLTUuMy00MC41LTE2LjNsLTIwLjUgMzAuNWMxNS44IDEzLjEgMzkuOSAyMi4xIDU5LjkgMjIuMSA0MiAwIDY0LjYtMjIuMSA2NC42LTUxIC4xLTI4LjktMjIuNS00MS00My00Ny44em0tMTU1LTY4LjhjLTM4LjQgMC03NS4xIDMyLjEtNzQuMSA4Mi41IDAgNTIgMzQuMiA4Mi41IDc5LjMgODIuNSAxOC45IDAgMzkuOS02LjggNTYuMi0xNy45bC0xNS44LTI3LjhjLTExLjYgNi44LTIyLjYgMTAtMzQuMiAxMC0yMSAwLTM3LjMtMTAtNDEuNS0zNC4ySDI5MGMuNS0zLjcgMS42LTExIDEuNi0xOS40LjYtNDIuNi0yMi42LTc1LjctNjYuNy03NS43em0tMzAgNjYuMmMzLjItMjEgMTUuOC0zMSAzMC41LTMxIDE4LjkgMCAyNi4zIDEzLjEgMjYuMyAzMWgtNTYuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3Mi4xIDIwNC4ydjcxLjFjMCAxLjgtMS40IDMuMi0zLjIgMy4yaC0xMS40Yy0xLjEgMC0yLjEtLjYtMi42LTEuM2wtMzIuNi00NHY0Mi4yYzAgMS44LTEuNCAzLjItMy4yIDMuMmgtMTEuNGMtMS44IDAtMy4yLTEuNC0zLjItMy4ydi03MS4xYzAtMS44IDEuNC0zLjIgMy4yLTMuMkgyMTljMSAwIDIuMS41IDIuNiAxLjRsMzIuNiA0NHYtNDIuMmMwLTEuOCAxLjQtMy4yIDMuMi0zLjJoMTEuNGMxLjgtLjEgMy4zIDEuNCAzLjMgMy4xem0tODItMy4yaC0xMS40Yy0xLjggMC0zLjIgMS40LTMuMiAzLjJ2NzEuMWMwIDEuOCAxLjQgMy4yIDMuMiAzLjJoMTEuNGMxLjggMCAzLjItMS40IDMuMi0zLjJ2LTcxLjFjMC0xLjctMS40LTMuMi0zLjItMy4yem0tMjcuNSA1OS42aC0zMS4xdi01Ni40YzAtMS44LTEuNC0zLjItMy4yLTMuMmgtMTEuNGMtMS44IDAtMy4yIDEuNC0zLjIgMy4ydjcxLjFjMCAuOS4zIDEuNi45IDIuMi42LjUgMS4zLjkgMi4yLjloNDUuN2MxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjMC0xLjctMS40LTMuMi0zLjEtMy4yek0zMzIuMSAyMDFoLTQ1LjdjLTEuNyAwLTMuMiAxLjQtMy4yIDMuMnY3MS4xYzAgMS43IDEuNCAzLjIgMy4yIDMuMmg0NS43YzEuOCAwIDMuMi0xLjQgMy4yLTMuMnYtMTEuNGMwLTEuOC0xLjQtMy4yLTMuMi0zLjJIMzAxdi0xMmgzMS4xYzEuOCAwIDMuMi0xLjQgMy4yLTMuMlYyMzRjMC0xLjgtMS40LTMuMi0zLjItMy4ySDMwMXYtMTJoMzEuMWMxLjggMCAzLjItMS40IDMuMi0zLjJ2LTExLjRjLS4xLTEuNy0xLjUtMy4yLTMuMi0zLjJ6TTQ0OCAxMTMuN1YzOTljLS4xIDQ0LjgtMzYuOCA4MS4xLTgxLjcgODFIODFjLTQ0LjgtLjEtODEuMS0zNi45LTgxLTgxLjdWMTEzYy4xLTQ0LjggMzYuOS04MS4xIDgxLjctODFIMzY3YzQ0LjguMSA4MS4xIDM2LjggODEgODEuN3ptLTYxLjYgMTIyLjZjMC03My03My4yLTEzMi40LTE2My4xLTEzMi40LTg5LjkgMC0xNjMuMSA1OS40LTE2My4xIDEzMi40IDAgNjUuNCA1OCAxMjAuMiAxMzYuNCAxMzAuNiAxOS4xIDQuMSAxNi45IDExLjEgMTIuNiAzNi44LS43IDQuMS0zLjMgMTYuMSAxNC4xIDguOCAxNy40LTcuMyA5My45LTU1LjMgMTI4LjItOTQuNyAyMy42LTI2IDM0LjktNTIuMyAzNC45LTgxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlua2VkaW5JbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuMjggNDQ4SDcuNFYxNDguOWg5Mi44OHpNNTMuNzkgMTA4LjFDMjQuMDkgMTA4LjEgMCA4My41IDAgNTMuOGE1My43OSA1My43OSAwIDAgMSAxMDcuNTggMGMwIDI5LjctMjQuMSA1NC4zLTUzLjc5IDU0LjN6TTQ0Ny45IDQ0OGgtOTIuNjhWMzAyLjRjMC0zNC43LS43LTc5LjItNDguMjktNzkuMi00OC4yOSAwLTU1LjY5IDM3LjctNTUuNjkgNzYuN1Y0NDhoLTkyLjc4VjE0OC45aDg5LjA4djQwLjhoMS4zYzEyLjQtMjMuNSA0Mi42OS00OC4zIDg3Ljg4LTQ4LjMgOTQgMCAxMTEuMjggNjEuOSAxMTEuMjggMTQyLjNWNDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbmtlZGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMkgzMS45QzE0LjMgMzIgMCA0Ni41IDAgNjQuM3YzODMuNEMwIDQ2NS41IDE0LjMgNDgwIDMxLjkgNDgwSDQxNmMxNy42IDAgMzItMTQuNSAzMi0zMi4zVjY0LjNjMC0xNy44LTE0LjQtMzIuMy0zMi0zMi4zek0xMzUuNCA0MTZINjlWMjAyLjJoNjYuNVY0MTZ6bS0zMy4yLTI0M2MtMjEuMyAwLTM4LjUtMTcuMy0zOC41LTM4LjVTODAuOSA5NiAxMDIuMiA5NmMyMS4yIDAgMzguNSAxNy4zIDM4LjUgMzguNSAwIDIxLjMtMTcuMiAzOC41LTM4LjUgMzguNXptMjgyLjEgMjQzaC02Ni40VjMxMmMwLTI0LjgtLjUtNTYuNy0zNC41LTU2LjctMzQuNiAwLTM5LjkgMjctMzkuOSA1NC45VjQxNmgtNjYuNFYyMDIuMmg2My43djI5LjJoLjljOC45LTE2LjggMzAuNi0zNC41IDYyLjktMzQuNSA2Ny4yIDAgNzkuNyA0NC4zIDc5LjcgMTAxLjlWNDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbm9kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuNCAyMjYuM2MtLjMtLjktLjktMS40LTEuNC0ybC03MC0zOC42Yy0uOS0uNi0yLS42LTMuMSAwbC01OC45IDM2Yy0uOS42LTEuNCAxLjctMS40IDIuNmwtLjkgMzEuNC0yNC0xNmMtLjktLjYtMi4zLS42LTMuMSAwTDI0MCAyNjAuOWwtMS40LTM1LjFjMC0uOS0uNi0yLTEuNC0yLjNsLTM2LTI0LjMgMzMuNy0xNy40YzEuMS0uNiAxLjctMS43IDEuNy0yLjlsLTUuNy0xMzIuM2MwLS45LS45LTItMS43LTIuNkwxMzguNi4zYy0uOS0uMy0xLjctLjMtMi4zLS4zTDEyLjYgMzguNmMtMS40LjYtMi4zIDItMiAzLjdMMzggMTc1LjRjLjkgMy40IDM0IDI3LjQgMzguNiAzMC45bC0yNi45IDEyLjljLTEuNC45LTIgMi4zLTEuNyAzLjRsMjAuNiAxMDAuM2MuNiAyLjkgMjMuNyAyMy4xIDI3LjEgMjYuM2wtMTcuNCAxMC42Yy0uOS42LTEuNyAyLTEuNCAzLjEgMS40IDcuMSAxNS40IDc3LjcgMTYuOSA3OS4xbDY1LjEgNjkuMWMuNi42IDEuNC42IDIuMy45LjYgMCAxLjEtLjMgMS43LS42bDgzLjctNjYuOWMuOS0uNiAxLjEtMS40IDEuMS0yLjNsLTItNDYgMjggMjMuN2MxLjEuOSAyLjkuOSA0IDBsNjYuOS01My40Yy45LS42IDEuMS0xLjQgMS4xLTIuM2wyLjMtMzMuNCAyMC4zIDE0YzEuMS45IDIuNi45IDMuNyAwbDU0LjYtNDMuN2MuNi0uMyAxLjEtMS4xIDEuMS0yIC45LTYuNSAxMC4zLTcwLjggOS43LTcyLjh6bS0yMDQuOCA0LjhsNCA5Mi42LTkwLjYgNjEuMi0xNC05Ni42IDEwMC42LTU3LjJ6bS03LjctMTgwbDUuNCAxMjYtMTA2LjYgNTUuNEwxMDQgOTcuN2wxMjAuOS00Ni42ek00NCAxNzMuMUwxOCA0OGw3OS43IDQ5LjQgMTkuNCAxMzIuOUw0NCAxNzMuMXptMzAuNiAxNDcuOEw1NS43IDIzMGw3MCA1OC4zIDEzLjcgOTMuNC02NC44LTYwLjh6bTI0LjMgMTE3LjdsLTEzLjctNjcuMSA2MS43IDYwLjkgOS43IDY3LjQtNTcuNy02MS4yem02NC41IDY0LjVsLTEwLjYtNzAuOSA4NS43LTYxLjQgMy4xIDcwLTc4LjIgNjIuM3ptODItMTE1LjFjMC0zLjQuOS0yMi45LTItMjUuMWwtMjQuMy0yMCAyMi4zLTE0LjljMi4zLTEuNyAxLjEtNS43IDEuMS04bDI5LjQgMjIuNi42IDY4LjMtMjcuMS0yMi45em05NC4zLTI1LjRsLTYwLjkgNDguNi0uNi02OC42IDY1LjctNDYuOS00LjIgNjYuOXptMjcuNy0yNS43bC0xOS4xLTEzLjQgMi0zNGMuMy0uOS0uMy0yLTEuMS0yLjZMMzA4IDI1OS43bC42LTMwIDY0LjYgNDAuNi01LjggNjYuNnptNTQuNi0zOS44bC00OC4zIDM4LjMgNS43LTY1LjEgNTEuMS0zNi42LTguNSA2My40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxpbnV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMC44IDEyMy4zYzEgLjUgMS44IDEuNyAzIDEuNyAxLjEgMCAyLjgtLjQgMi45LTEuNS4yLTEuNC0xLjktMi4zLTMuMi0yLjktMS43LS43LTMuOS0xLTUuNS0uMS0uNC4yLS44LjctLjYgMS4xLjMgMS4zIDIuMyAxLjEgMy40IDEuN3ptLTIxLjkgMS43YzEuMiAwIDItMS4yIDMtMS43IDEuMS0uNiAzLjEtLjQgMy41LTEuNi4yLS40LS4yLS45LS42LTEuMS0xLjYtLjktMy44LS42LTUuNS4xLTEuMy42LTMuNCAxLjUtMy4yIDIuOS4xIDEgMS44IDEuNSAyLjggMS40ek00MjAgNDAzLjhjLTMuNi00LTUuMy0xMS42LTcuMi0xOS43LTEuOC04LjEtMy45LTE2LjgtMTAuNS0yMi40LTEuMy0xLjEtMi42LTIuMS00LTIuOS0xLjMtLjgtMi43LTEuNS00LjEtMiA5LjItMjcuMyA1LjYtNTQuNS0zLjctNzkuMS0xMS40LTMwLjEtMzEuMy01Ni40LTQ2LjUtNzQuNC0xNy4xLTIxLjUtMzMuNy00MS45LTMzLjQtNzJDMzExLjEgODUuNCAzMTUuNy4xIDIzNC44IDAgMTMyLjQtLjIgMTU4IDEwMy40IDE1Ni45IDEzNS4yYy0xLjcgMjMuNC02LjQgNDEuOC0yMi41IDY0LjctMTguOSAyMi41LTQ1LjUgNTguOC01OC4xIDk2LjctNiAxNy45LTguOCAzNi4xLTYuMiA1My4zLTYuNSA1LjgtMTEuNCAxNC43LTE2LjYgMjAuMi00LjIgNC4zLTEwLjMgNS45LTE3IDguM3MtMTQgNi0xOC41IDE0LjVjLTIuMSAzLjktMi44IDguMS0yLjggMTIuNCAwIDMuOS42IDcuOSAxLjIgMTEuOCAxLjIgOC4xIDIuNSAxNS43LjggMjAuOC01LjIgMTQuNC01LjkgMjQuNC0yLjIgMzEuNyAzLjggNy4zIDExLjQgMTAuNSAyMC4xIDEyLjMgMTcuMyAzLjYgNDAuOCAyLjcgNTkuMyAxMi41IDE5LjggMTAuNCAzOS45IDE0LjEgNTUuOSAxMC40IDExLjYtMi42IDIxLjEtOS42IDI1LjktMjAuMiAxMi41LS4xIDI2LjMtNS40IDQ4LjMtNi42IDE0LjktMS4yIDMzLjYgNS4zIDU1LjEgNC4xLjYgMi4zIDEuNCA0LjYgMi41IDYuN3YuMWM4LjMgMTYuNyAyMy44IDI0LjMgNDAuMyAyMyAxNi42LTEuMyAzNC4xLTExIDQ4LjMtMjcuOSAxMy42LTE2LjQgMzYtMjMuMiA1MC45LTMyLjIgNy40LTQuNSAxMy40LTEwLjEgMTMuOS0xOC4zLjQtOC4yLTQuNC0xNy4zLTE1LjUtMjkuN3pNMjIzLjcgODcuM2M5LjgtMjIuMiAzNC4yLTIxLjggNDQtLjQgNi41IDE0LjIgMy42IDMwLjktNC4zIDQwLjQtMS42LS44LTUuOS0yLjYtMTIuNi00LjkgMS4xLTEuMiAzLjEtMi43IDMuOS00LjYgNC44LTExLjgtLjItMjctOS4xLTI3LjMtNy4zLS41LTEzLjkgMTAuOC0xMS44IDIzLTQuMS0yLTkuNC0zLjUtMTMtNC40LTEtNi45LS4zLTE0LjYgMi45LTIxLjh6TTE4MyA3NS44YzEwLjEgMCAyMC44IDE0LjIgMTkuMSAzMy41LTMuNSAxLTcuMSAyLjUtMTAuMiA0LjYgMS4yLTguOS0zLjMtMjAuMS05LjYtMTkuNi04LjQuNy05LjggMjEuMi0xLjggMjguMSAxIC44IDEuOS0uMi01LjkgNS41LTE1LjYtMTQuNi0xMC41LTUyLjEgOC40LTUyLjF6bS0xMy42IDYwLjdjNi4yLTQuNiAxMy42LTEwIDE0LjEtMTAuNSA0LjctNC40IDEzLjUtMTQuMiAyNy45LTE0LjIgNy4xIDAgMTUuNiAyLjMgMjUuOSA4LjkgNi4zIDQuMSAxMS4zIDQuNCAyMi42IDkuMyA4LjQgMy41IDEzLjcgOS43IDEwLjUgMTguMi0yLjYgNy4xLTExIDE0LjQtMjIuNyAxOC4xLTExLjEgMy42LTE5LjggMTYtMzguMiAxNC45LTMuOS0uMi03LTEtOS42LTIuMS04LTMuNS0xMi4yLTEwLjQtMjAtMTUtOC42LTQuOC0xMy4yLTEwLjQtMTQuNy0xNS4zLTEuNC00LjkgMC05IDQuMi0xMi4zem0zLjMgMzM0Yy0yLjcgMzUuMS00My45IDM0LjQtNzUuMyAxOC0yOS45LTE1LjgtNjguNi02LjUtNzYuNS0yMS45LTIuNC00LjctMi40LTEyLjcgMi42LTI2LjR2LS4yYzIuNC03LjYuNi0xNi0uNi0yMy45LTEuMi03LjgtMS44LTE1IC45LTIwIDMuNS02LjcgOC41LTkuMSAxNC44LTExLjMgMTAuMy0zLjcgMTEuOC0zLjQgMTkuNi05LjkgNS41LTUuNyA5LjUtMTIuOSAxNC4zLTE4IDUuMS01LjUgMTAtOC4xIDE3LjctNi45IDguMSAxLjIgMTUuMSA2LjggMjEuOSAxNmwxOS42IDM1LjZjOS41IDE5LjkgNDMuMSA0OC40IDQxIDY4Ljl6bS0xLjQtMjUuOWMtNC4xLTYuNi05LjYtMTMuNi0xNC40LTE5LjYgNy4xIDAgMTQuMi0yLjIgMTYuNy04LjkgMi4zLTYuMiAwLTE0LjktNy40LTI0LjktMTMuNS0xOC4yLTM4LjMtMzIuNS0zOC4zLTMyLjUtMTMuNS04LjQtMjEuMS0xOC43LTI0LjYtMjkuOXMtMy0yMy4zLS4zLTM1LjJjNS4yLTIyLjkgMTguNi00NS4yIDI3LjItNTkuMiAyLjMtMS43LjggMy4yLTguNyAyMC44LTguNSAxNi4xLTI0LjQgNTMuMy0yLjYgODIuNC42LTIwLjcgNS41LTQxLjggMTMuOC02MS41IDEyLTI3LjQgMzcuMy03NC45IDM5LjMtMTEyLjcgMS4xLjggNC42IDMuMiA2LjIgNC4xIDQuNiAyLjcgOC4xIDYuNyAxMi42IDEwLjMgMTIuNCAxMCAyOC41IDkuMiA0Mi40IDEuMiA2LjItMy41IDExLjItNy41IDE1LjktOSA5LjktMy4xIDE3LjgtOC42IDIyLjMtMTUgNy43IDMwLjQgMjUuNyA3NC4zIDM3LjIgOTUuNyA2LjEgMTEuNCAxOC4zIDM1LjUgMjMuNiA2NC42IDMuMy0uMSA3IC40IDEwLjkgMS40IDEzLjgtMzUuNy0xMS43LTc0LjItMjMuMy04NC45LTQuNy00LjYtNC45LTYuNi0yLjYtNi41IDEyLjYgMTEuMiAyOS4yIDMzLjcgMzUuMiA1OSAyLjggMTEuNiAzLjMgMjMuNy40IDM1LjcgMTYuNCA2LjggMzUuOSAxNy45IDMwLjcgMzQuOC0yLjItLjEtMy4yIDAtNC4yIDAgMy4yLTEwLjEtMy45LTE3LjYtMjIuOC0yNi4xLTE5LjYtOC42LTM2LTguNi0zOC4zIDEyLjUtMTIuMSA0LjItMTguMyAxNC43LTIxLjQgMjcuMy0yLjggMTEuMi0zLjYgMjQuNy00LjQgMzkuOS0uNSA3LjctMy42IDE4LTYuOCAyOS0zMi4xIDIyLjktNzYuNyAzMi45LTExNC4zIDcuMnptMjU3LjQtMTEuNWMtLjkgMTYuOC00MS4yIDE5LjktNjMuMiA0Ni41LTEzLjIgMTUuNy0yOS40IDI0LjQtNDMuNiAyNS41cy0yNi41LTQuOC0zMy43LTE5LjNjLTQuNy0xMS4xLTIuNC0yMy4xIDEuMS0zNi4zIDMuNy0xNC4yIDkuMi0yOC44IDkuOS00MC42LjgtMTUuMiAxLjctMjguNSA0LjItMzguNyAyLjYtMTAuMyA2LjYtMTcuMiAxMy43LTIxLjEuMy0uMi43LS4zIDEtLjUuOCAxMy4yIDcuMyAyNi42IDE4LjggMjkuNSAxMi42IDMuMyAzMC43LTcuNSAzOC40LTE2LjMgOS0uMyAxNS43LS45IDIyLjYgNS4xIDkuOSA4LjUgNy4xIDMwLjMgMTcuMSA0MS42IDEwLjYgMTEuNiAxNCAxOS41IDEzLjcgMjQuNnpNMTczLjMgMTQ4LjdjMiAxLjkgNC43IDQuNSA4IDcuMSA2LjYgNS4yIDE1LjggMTAuNiAyNy4zIDEwLjYgMTEuNiAwIDIyLjUtNS45IDMxLjgtMTAuOCA0LjktMi42IDEwLjktNyAxNC44LTEwLjRzNS45LTYuMyAzLjEtNi42LTIuNiAyLjYtNiA1LjFjLTQuNCAzLjItOS43IDcuNC0xMy45IDkuOC03LjQgNC4yLTE5LjUgMTAuMi0yOS45IDEwLjJzLTE4LjctNC44LTI0LjktOS43Yy0zLjEtMi41LTUuNy01LTcuNy02LjktMS41LTEuNC0xLjktNC42LTQuMy00LjktMS40LS4xLTEuOCAzLjcgMS43IDYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMeWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgODEuMWg3Ny44djIwOC43YzAgMzMuMSAxNSA1Mi44IDI3LjIgNjEtMTIuNyAxMS4xLTUxLjIgMjAuOS04MC4yLTIuOEM3LjggMzM0IDAgMzEwLjcgMCAyODlWODEuMXptNDg1LjkgMTczLjV2LTIyaDIzLjh2LTc2LjhoLTI2LjFjLTEwLjEtNDYuMy01MS4yLTgwLjctMTAwLjMtODAuNy01Ni42IDAtMTAyLjcgNDYtMTAyLjcgMTAyLjdWMzU3YzE2IDIuMyAzNS40LS4zIDUxLjctMTQgMTcuMS0xNCAyNC44LTM3LjIgMjQuOC01OXYtNi43aDM4Ljh2LTc2LjhoLTM4Ljh2LTIzLjNjMC0zNC42IDUyLjItMzQuNiA1Mi4yIDB2NzcuMWMwIDU2LjYgNDYgMTAyLjcgMTAyLjcgMTAyLjd2LTc2LjVjLTE0LjUgMC0yNi4xLTExLjctMjYuMS0yNS45em0tMjk0LjMtOTl2MTEzYzAgMTUuNC0yMy44IDE1LjQtMjMuOCAwdi0xMTNIOTF2MTMyLjdjMCAyMy44IDggNTQgNDUgNjMuOSAzNyA5LjggNTguMi0xMC42IDU4LjItMTAuNi0yLjEgMTMuNC0xNC41IDIzLjMtMzQuOSAyNS4zLTE1LjUgMS42LTM1LjItMy42LTQ1LTcuOHY3MC4zYzI1LjEgNy41IDUxLjUgOS44IDc3LjYgNC43IDQ3LjEtOS4xIDc2LjgtNDguNCA3Ni44LTEwMC44VjE1NS4xaC03Ny4xdi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hZ2VudG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ1LjcgMTI3LjlWMzg0bC02My40IDM2LjVWMTY0LjdMMjIzLjggNzMuMSA2NS4yIDE2NC43bC40IDI1NS45TDIuMyAzODRWMTI4LjFMMjI0LjIgMGwyMjEuNSAxMjcuOXpNMjU1LjYgNDIwLjVMMjI0IDQzOC45bC0zMS44LTE4LjJ2LTI1NmwtNjMuMyAzNi42LjEgMjU1LjkgOTQuOSA1NC45IDk1LjEtNTQuOXYtMjU2bC02My40LTM2LjZ2MjU1Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFpbGNoaW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMC42MSAyNDMuNTJhMzYuMTUgMzYuMTUgMCAwIDEgOS4zIDBjMS42Ni0zLjgzIDEuOTUtMTAuNDMuNDUtMTcuNjEtMi4yMy0xMC42Ny01LjI1LTE3LjE0LTExLjQ4LTE2LjEzcy02LjQ3IDguNzQtNC4yNCAxOS40MmMxLjI2IDYgMy40OSAxMS4xNCA2IDE0LjMyek0yNzcuMDUgMjUyYzQuNDcgMiA3LjIgMy4yNiA4LjI4IDIuMTMgMS44OS0xLjk0LTMuNDgtOS4zOS0xMi4xMi0xMy4wOWEzMS40NCAzMS40NCAwIDAgMC0zMC42MSAzLjY4Yy0zIDIuMTgtNS44MSA1LjIyLTUuNDEgNy4wNi44NSAzLjc0IDEwLTIuNzEgMjIuNi0zLjQ4IDctLjQ0IDEyLjggMS43NSAxNy4yNiAzLjcxem0tOSA1LjEzYy05LjA3IDEuNDItMTUgNi41My0xMy40NyAxMC4xLjkuMzQgMS4xNy44MSA1LjIxLS44MWEzNyAzNyAwIDAgMSAxOC43Mi0xLjk1YzIuOTIuMzQgNC4zMS41MiA0Ljk0LS40OSAxLjQ2LTIuMjItNS43MS04LTE1LjM5LTYuODV6bTU0LjE3IDE3LjFjMy4zOC02Ljg3LTEwLjktMTMuOTMtMTQuMy03czEwLjkyIDEzLjg4IDE0LjMyIDYuOTd6bTE1LjY2LTIwLjQ3Yy03LjY2LS4xMy03Ljk1IDE1LjgtLjI2IDE1LjkzczcuOTgtMTUuODEuMjgtMTUuOTZ6bS0yMTguNzkgNzguOWMtMS4zMi4zMS02IDEuNDUtOC40Ny0yLjM1LTUuMi04IDExLjExLTIwLjM4IDMtMzUuNzctOS4xLTE3LjQ3LTI3LjgyLTEzLjU0LTM1LjA1LTUuNTQtOC43MSA5LjYtOC43MiAyMy41NC01IDI0LjA4IDQuMjcuNTcgNC4wOC02LjQ3IDcuMzgtMTEuNjNhMTIuODMgMTIuODMgMCAwIDEgMTcuODUtMy43MmMxMS41OSA3LjU5IDEuMzcgMTcuNzYgMi4yOCAyOC42MiAxLjM5IDE2LjY4IDE4LjQyIDE2LjM3IDIxLjU4IDlhMi4wOCAyLjA4IDAgMCAwLS4yLTIuMzNjLjAzLjg5LjY4LTEuMy0zLjM1LS4zOXptMjk5LjcyLTE3LjA3Yy0zLjM1LTExLjczLTIuNTctOS4yMi02Ljc4LTIwLjUyIDIuNDUtMy42NyAxNS4yOS0yNC0zLjA3LTQzLjI1LTEwLjQtMTAuOTItMzMuOS0xNi41NC00MS4xLTE4LjU0LTEuNS0xMS4zOSA0LjY1LTU4LjctMjEuNTItODMgMjAuNzktMjEuNTUgMzMuNzYtNDUuMjkgMzMuNzMtNjUuNjUtLjA2LTM5LjE2LTQ4LjE1LTUxLTEwNy40Mi0yNi40N2wtMTIuNTUgNS4zM2MtLjA2LS4wNS0yMi43MS0yMi4yNy0yMy4wNS0yMi41N0MxNjkuNS0xOC00MS43NyAyMTYuODEgMjUuNzggMjczLjg1bDE0Ljc2IDEyLjUxYTcyLjQ5IDcyLjQ5IDAgMCAwLTQuMSAzMy41YzMuMzYgMzMuNCAzNiA2MC40MiA2Ny41MyA2MC4zOCA1Ny43MyAxMzMuMDYgMjY3LjkgMTMzLjI4IDMyMi4yOSAzIDEuNzQtNC40NyA5LjExLTI0LjYxIDkuMTEtNDIuMzhzLTEwLjA5LTI1LjI3LTE2LjUzLTI1LjI3em0tMzE2IDQ4LjE2Yy0yMi44Mi0uNjEtNDcuNDYtMjEuMTUtNDkuOTEtNDUuNTEtNi4xNy02MS4zMSA3NC4yNi03NS4yNyA4NC0xMi4zMyA0LjU0IDI5LjY0LTQuNjcgNTguNDktMzQuMTIgNTcuODF6TTg0LjMgMjQ5LjU1QzY5LjE0IDI1Mi41IDU1Ljc4IDI2MS4wOSA0Ny42IDI3M2MtNC44OC00LjA3LTE0LTEyLTE1LjU5LTE1LTEzLjAxLTI0Ljg1IDE0LjI0LTczIDMzLjMtMTAwLjIxQzExMi40MiA5MC41NiAxODYuMTkgMzkuNjggMjIwLjM2IDQ4LjkxYzUuNTUgMS41NyAyMy45NCAyMi44OSAyMy45NCAyMi44OXMtMzQuMTUgMTguOTQtNjUuOCA0NS4zNWMtNDIuNjYgMzIuODUtNzQuODkgODAuNTktOTQuMiAxMzIuNHpNMzIzLjE4IDM1MC43cy0zNS43NCA1LjMtNjkuNTEtNy4wN2M2LjIxLTIwLjE2IDI3IDYuMSA5Ni40LTEzLjgxIDE1LjI5LTQuMzggMzUuMzctMTMgNTEtMjUuMzVhMTAyLjg1IDEwMi44NSAwIDAgMSA3LjEyIDI0LjI4YzMuNjYtLjY2IDE0LjI1LS41MiAxMS40NCAxOC4xLTMuMjkgMTkuODctMTEuNzMgMzYtMjUuOTMgNTAuODRBMTA2Ljg2IDEwNi44NiAwIDAgMSAzNjIuNTUgNDIxYTEzMi40NSAxMzIuNDUgMCAwIDEtMjAuMzQgOC41OGMtNTMuNTEgMTcuNDgtMTA4LjMtMS43NC0xMjYtNDNhNjYuMzMgNjYuMzMgMCAwIDEtMy41NS05Ljc0Yy03LjUzLTI3LjItMS4xNC01OS44MyAxOC44NC04MC4zNyAxLjIzLTEuMzEgMi40OC0yLjg1IDIuNDgtNC43OWE4LjQ1IDguNDUgMCAwIDAtMS45Mi00LjU0Yy03LTEwLjEzLTMxLjE5LTI3LjQtMjYuMzMtNjAuODMgMy41LTI0IDI0LjQ5LTQwLjkxIDQ0LjA3LTM5LjkxbDUgLjI5YzguNDguNSAxNS44OSAxLjU5IDIyLjg4IDEuODggMTEuNjkuNSAyMi4yLTEuMTkgMzQuNjQtMTEuNTYgNC4yLTMuNSA3LjU3LTYuNTQgMTMuMjYtNy41MWExNy40NSAxNy40NSAwIDAgMSAxMy42IDIuMjRjMTAgNi42NCAxMS40IDIyLjczIDExLjkyIDM0LjQ5LjI5IDYuNzIgMS4xIDIzIDEuMzggMjcuNjMuNjMgMTAuNjcgMy40MyAxMi4xNyA5LjExIDE0IDMuMTkgMS4wNSA2LjE1IDEuODMgMTAuNTEgMy4wNiAxMy4yMSAzLjcxIDIxIDcuNDggMjYgMTIuMzFhMTYuMzggMTYuMzggMCAwIDEgNC43NCA5LjI5YzEuNTYgMTEuMzctOC44MiAyNS40LTM2LjMxIDM4LjE2LTQ2LjcxIDIxLjY4LTkzLjY4IDE0LjQ1LTEwMC40OCAxMy42OC0yMC4xNS0yLjcxLTMxLjYzIDIzLjMyLTE5LjU1IDQxLjE1IDIyLjY0IDMzLjQxIDEyMi40IDIwIDE1MS4zNy0yMS4zNS42OS0xIC4xMi0xLjU5LS43My0xLTQxLjc3IDI4LjU4LTk3LjA2IDM4LjIxLTEyOC40NiAyNi00Ljc3LTEuODUtMTQuNzMtNi40NC0xNS45NC0xNi42NyA0My42IDEzLjQ5IDcxIC43NCA3MSAuNzRzMi4wMy0yLjc5LS41Ni0yLjUzem0tNjguNDctNS43em0tODMuNC0xODcuNWMxNi43NC0xOS4zNSAzNy4zNi0zNi4xOCA1NS44My00NS42M2EuNzMuNzMgMCAwIDEgMSAxYy0xLjQ2IDIuNjYtNC4yOSA4LjM0LTUuMTkgMTIuNjVhLjc1Ljc1IDAgMCAwIDEuMTYuNzljMTEuNDktNy44MyAzMS40OC0xNi4yMiA0OS0xNy4zYS43Ny43NyAwIDAgMSAuNTIgMS4zOCA0MS44NiA0MS44NiAwIDAgMC03LjcxIDcuNzQuNzUuNzUgMCAwIDAgLjU5IDEuMTljMTIuMzEuMDkgMjkuNjYgNC40IDQxIDEwLjc0Ljc2LjQzLjIyIDEuOTEtLjY0IDEuNzItNjkuNTUtMTUuOTQtMTIzLjA4IDE4LjUzLTEzNC41IDI2LjgzYS43Ni43NiAwIDAgMS0xLTEuMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFuZGFsb3JpYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyLjI3IDUxMS44OWMtMS0zLjI2LTEuNjktMTUuODMtMS4zOS0yNC41OC41NS0xNS44OSAxLTI0LjcyIDEuNC0yOC43Ni42NC02LjIgMi44Ny0yMC43MiAzLjI4LTIxLjM4LjYtMSAuNC0yNy44Ny0uMjQtMzMuMTMtLjMxLTIuNTgtLjYzLTExLjktLjY5LTIwLjczLS4xMy0xNi40Ny0uNTMtMjAuMTItMi43My0yNC43Ni0xLjEtMi4zMi0xLjIzLTMuODQtMS0xMS40M2E5Mi4zOCA5Mi4zOCAwIDAgMC0uMzQtMTIuNzFjLTItMTMtMy40Ni0yNy43LTMuMjUtMzMuOXMuNDMtNy4xNSAyLjA2LTkuNjdjMy4wNS00LjcxIDYuNTEtMTQgOC42Mi0yMy4yNyAyLjI2LTkuODYgMy44OC0xNy4xOCA0LjU5LTIwLjc0YTEwOS41NCAxMDkuNTQgMCAwIDEgNC40Mi0xNS4wNWMyLjI3LTYuMjUgMi40OS0xNS4zOS4zNy0xNS4zOS0uMyAwLTEuMzggMS4yMi0yLjQxIDIuNzFzLTQuNzYgNC44LTguMjkgNy4zNmMtOC4zNyA2LjA4LTExLjcgOS4zOS0xMi42NiAxMi41OHMtMSA3LjIzLS4xNiA3Ljc2Yy4zNC4yMSAxLjI5IDIuNCAyLjExIDQuODhhMjguODMgMjguODMgMCAwIDEgLjcyIDE1LjM2Yy0uMzkgMS43Ny0xIDUuNDctMS40NiA4LjIzcy0xIDYuNDYtMS4yNSA4LjIyYTkuODUgOS44NSAwIDAgMS0xLjU1IDQuMjZjLTEgMS0xLjE0LjkxLTIuMDUtLjUzYTE0Ljg3IDE0Ljg3IDAgMCAxLTEuNDQtNC43NWMtLjI1LTEuNzQtMS42My03LjExLTMuMDgtMTEuOTMtMy4yOC0xMC45LTMuNTItMTYuMTUtMS0yMWExNC4yNCAxNC4yNCAwIDAgMCAxLjY3LTQuNjFjMC0yLjM5LTIuMi01LjMyLTcuNDEtOS44OS03LTYuMTgtOC42My03LjkyLTEwLjIzLTExLjMtMS43MS0zLjYtMy4wNi00LjA2LTQuNTQtMS41NC0xLjc4IDMtMi42IDkuMTEtMyAyMmwtLjM0IDEyLjE5IDIgMi4yNWMzLjIxIDMuNyAxMi4wNyAxNi40NSAxMy43OCAxOS44MyAzLjQxIDYuNzQgNC4zNCAxMS42OSA0LjQxIDIzLjU2cy45NSAyMi43NSAyIDI0LjcxYy4zNi42Ni41MSAxLjM1LjM0IDEuNTJzLjQxIDIuMDkgMS4yOSA0LjI3YTM4LjE0IDM4LjE0IDAgMCAxIDIuMDYgOSA5MSA5MSAwIDAgMCAxLjcxIDEwLjM3YzIuMjMgOS41NiAyLjc3IDE0LjA4IDIuMzkgMjAuMTQtLjIgMy4yNy0uNTMgMTEuMDctLjczIDE3LjMyLTEuMzEgNDEuNzYtMS44NSA1OC0yIDYxLjIxLS4xMiAyLS4zOSAxMS41MS0uNiAyMS4wNy0uMzYgMTYuMy0xLjMgMjcuMzctMi40MiAyOC42NS0uNjQuNzMtOC4wNy00LjkxLTEyLjUyLTkuNDktMy43NS0zLjg3LTQtNC43OS0yLjgzLTkuOTUuNy0zIDIuMjYtMTguMjkgMy4zMy0zMi42Mi4zNi00Ljc4LjgxLTEwLjUgMS0xMi43MS44My05LjM3IDEuNjYtMjAuMzUgMi42MS0zNC43OC41Ni04LjQ2IDEuMzMtMTYuNDQgMS43Mi0xNy43M3MuODktOS44OSAxLjEzLTE5LjExbC40My0xNi43Ny0yLjI2LTQuM2MtMS43Mi0zLjI4LTQuODctNi45NC0xMy4yMi0xNS4zNC02LTYuMDctMTEuODQtMTIuMy0xMi45MS0xMy44NWwtMS45NS0yLjgxLjc1LTEwLjljMS4wOS0xNS43MSAxLjEtNDguNTcgMC01OS4wNmwtLjg5LTguNy0zLjI4LTQuNTJjLTUuODYtOC4wOC01LjgtNy43NS02LjIyLTMzLjI3LS4xLTYuMDctLjM4LTExLjUtLjYzLTEyLjA2LS44My0xLjg3LTMuMDUtMi42Ni04LjU0LTMuMDUtOC44Ni0uNjItMTEtMS45LTIzLjg1LTE0LjU1LTYuMTUtNi0xMi4zNC0xMi0xMy43NS0xMy4xOS0yLjgxLTIuNDItMi43OS0yLS41Ni05LjYzbDEuMzUtNC42NS0xLjY5LTNhMzIuMjIgMzIuMjIgMCAwIDAtMi41OS00LjA3Yy0xLjMzLTEuNTEtNS41LTEwLjg5LTYtMTMuNDlhNC4yNCA0LjI0IDAgMCAxIC44Ny0zLjljMi4yMy0yLjg2IDMuNC01LjY4IDQuNDUtMTAuNzMgMi4zMy0xMS4xOSA3Ljc0LTI2LjA5IDEwLjYtMjkuMjIgMy4xOC0zLjQ3IDcuNy0xIDkuNDEgNSAxLjM0IDQuNzkgMS4zNyA5Ljc5LjEgMTguNTVhMTAxLjIgMTAxLjIgMCAwIDAtMSAxMS4xMWMwIDQgLjE5IDQuNjkgMi4yNSA3LjM5IDMuMzMgNC4zNyA3LjczIDcuNDEgMTUuMiAxMC41MmExOC42NyAxOC42NyAwIDAgMSA0LjcyIDIuODVjMTEuMTcgMTAuNzIgMTguNjIgMTYuMTggMjIuOTUgMTYuODUgNS4xOC44IDggNC41NCAxMCAxMy4zOSAxLjMxIDUuNjUgNCAxMS4xNCA1LjQ2IDExLjE0YTkuMzggOS4zOCAwIDAgMCAzLjMzLTEuMzljMi0xLjIyIDIuMjUtMS43MyAyLjI1LTQuMThhMTMyLjg4IDEzMi44OCAwIDAgMC0yLTE3Ljg0Yy0uMzctMS42Ni0uNzgtNC4wNi0uOTMtNS4zNXMtLjYxLTMuODUtMS01LjY5Yy0yLjU1LTExLjE2LTMuNjUtMTUuNDYtNC4xLTE2LTEuNTUtMi00LjA4LTEwLjItNC45My0xNS45Mi0xLjY0LTExLjExLTQtMTQuMjMtMTIuOTEtMTcuMzlBNDMuMTUgNDMuMTUgMCAwIDEgMTY1LjI0IDc4Yy0xLjE1LTEtNC0zLjIyLTYuMzUtNS4wNnMtNC40MS0zLjUzLTQuNi0zLjc2YTIyLjcgMjIuNyAwIDAgMC0yLjY5LTJjLTYuMjQtNC4yMi04Ljg0LTctMTEuMjYtMTJsLTIuNDQtNS0uMjItMTMtLjIyLTEzIDYuOTEtNi41NWMzLjk1LTMuNzUgOC40OC03LjM1IDEwLjU5LTguNDMgMy4zMS0xLjY5IDQuNDUtMS44OSAxMS4zNy0yIDguNTMtLjE5IDEwLjEyIDAgMTEuNjYgMS41NnMxLjM2IDYuNC0uMjkgOC41YTYuNjYgNi42NiAwIDAgMC0xLjM0IDIuMzJjMCAuNTgtMi42MSA0LjkxLTUuNDIgOWEzMC4zOSAzMC4zOSAwIDAgMC0yLjM3IDYuODJjMjAuNDQgMTMuMzkgMjEuNTUgMy43NyAxNC4wNyAyOUwxOTQgNjYuOTJjMy4xMS04LjY2IDYuNDctMTcuMjYgOC42MS0yNi4yMi4yOS03LjYzLTEyLTQuMTktMTUuNC04LjY4LTIuMzMtNS45MyAzLjEzLTE0LjE4IDYuMDYtMTkuMiAxLjYtMi4zNCA2LjYyLTQuNyA4LjgyLTQuMTUuODguMjIgNC4xNi0uMzUgNy4zNy0xLjI4YTQ1LjMgNDUuMyAwIDAgMSA3LjU1LTEuNjggMjkuNTcgMjkuNTcgMCAwIDAgNi0xLjI5YzMuNjUtMS4xMSA0LjUtMS4xNyA2LjM1LS40YTI5LjU0IDI5LjU0IDAgMCAwIDUuODIgMS4zNiAxOC4xOCAxOC4xOCAwIDAgMSA2IDEuOTEgMjIuNjcgMjIuNjcgMCAwIDAgNSAyLjE3YzIuNTEuNjggMyAuNTcgNy4wNS0xLjY3bDQuMzUtMi40TDI2OC4zMiA1YzEwLjQ0LS40IDEwLjgxLS40NyAxNS4yNi0yLjY4TDI4OC4xNiAwbDIuNDYgMS40M2MxLjc2IDEgMy4xNCAyLjczIDQuODUgNiAyLjM2IDQuNTEgMi4zOCA0LjU4IDEuMzcgNy4zNy0uODggMi40NC0uODkgMy4zLS4xIDYuMzlhMzUuNzYgMzUuNzYgMCAwIDAgMi4xIDUuOTEgMTMuNTUgMTMuNTUgMCAwIDEgMS4zMSA0Yy4zMSA0LjMzIDAgNS4zLTIuNDEgNi45Mi0yLjE3IDEuNDctNyA3LjkxLTcgOS4zNGExNC43NyAxNC43NyAwIDAgMS0xLjA3IDNjLTUgMTEuNTEtNi43NiAxMy41Ni0xNC4yNiAxNy05LjIgNC4yLTEyLjMgNS4xOS0xNi4yMSA1LjE5LTMuMSAwLTQgLjI1LTQuNTQgMS4yNmExOC4zMyAxOC4zMyAwIDAgMS00LjA5IDMuNzEgMTMuNjIgMTMuNjIgMCAwIDAtNC4zOCA0Ljc4IDUuODkgNS44OSAwIDAgMS0yLjQ5IDIuOTEgNi44OCA2Ljg4IDAgMCAwLTIuNDUgMS43MSA2Ny42MiA2Ny42MiAwIDAgMS03IDUuMzhjLTMuMzMgMi4zNC02Ljg3IDUtNy44NyA2QTcuMjcgNy4yNyAwIDAgMSAyMjQgMTAwYTUuNzYgNS43NiAwIDAgMC0yLjEzIDEuNjVjLTEuMzEgMS4zOS0xLjQ5IDIuMTEtMS4xNCA0LjZhMzYuNDUgMzYuNDUgMCAwIDAgMS40MiA1Ljg4YzEuMzIgMy44IDEuMzEgNy44NiAwIDEwLjU3cy0uODkgNi42NSAxLjM1IDkuNTljMiAyLjYzIDIuMTYgNC41Ni43MSA4Ljg0YTMzLjQ1IDMzLjQ1IDAgMCAwLTEuMDYgOC45MWMwIDQuODguMjIgNi4yOCAxLjQ2IDguMzhzMS44MiAyLjQ4IDMuMjQgMi4zMmMyLS4yMyAyLjMtMS4wNSA0LjcxLTEyLjEyIDIuMTgtMTAgMy43MS0xMS45MiAxMy43Ni0xNy4wOCAyLjk0LTEuNTEgNy40Ni00IDEwLTUuNDRzNi43OS0zLjY5IDkuMzctNC45MWE0MC4wOSA0MC4wOSAwIDAgMCAxNS4yMi0xMS42N2M3LjExLTguNzkgMTAtMTYuMjIgMTIuODUtMzMuM2ExOC4zNyAxOC4zNyAwIDAgMSAyLjg2LTcuNzMgMjAuMzkgMjAuMzkgMCAwIDAgMi44OS03LjMxYzEtNS4zIDIuODUtOS4wOCA1LjU4LTExLjUxIDQuNy00LjE4IDYtMS4wOSA0LjU5IDEwLjg3LS40NiAzLjg2LTEuMSAxMC4zMy0xLjQ0IDE0LjM4bC0uNjEgNy4zNiA0LjQ1IDQuMDkgNC40NSA0LjA5LjExIDguNDJjLjA2IDQuNjMuNDcgOS41My45MiAxMC44OWwuODIgMi40Ny02LjQzIDYuMjhjLTguNTQgOC4zMy0xMi44OCAxMy45My0xNi43NiAyMS42MS0xLjc3IDMuNDktMy43NCA3LjExLTQuMzggOC0yLjE4IDMuMTEtNi40NiAxMy04Ljc2IDIwLjI2bC0yLjI5IDcuMjItNyA2LjQ5Yy0zLjgzIDMuNTctOCA3LjI1LTkuMTcgOC4xNy0zLjA1IDIuMzItNC4yNiA1LjE1LTQuMjYgMTBhMTQuNjIgMTQuNjIgMCAwIDAgMS41OSA3LjI2IDQyIDQyIDAgMCAxIDIuMDkgNC44MyA5LjI4IDkuMjggMCAwIDAgMS41NyAyLjg5YzEuNCAxLjU5IDEuOTIgMTYuMTIuODMgMjMuMjItLjY4IDQuNDgtMy42MyAxMi00LjcgMTItMS43OSAwLTQuMDYgOS4yNy01LjA3IDIwLjc0LS4xOCAyLS42MiA1Ljk0LTEgOC43cy0xIDEwLTEuMzUgMTYuMDVjLS43NyAxMi4yMi0uMTkgMTguNzcgMiAyMy4xNSAzLjQxIDYuNjkuNTIgMTIuNjktMTEgMjIuODRsLTQgMy40OS4wNyA1LjE5YTQwLjgxIDQwLjgxIDAgMCAwIDEuMTQgOC44N2M0LjYxIDE2IDQuNzMgMTYuOTIgNC4zOCAzNy4xMy0uNDYgMjYuNC0uMjYgNDAuMjcuNjMgNDQuMTVhNjEuMzEgNjEuMzEgMCAwIDEgMS4wOCA3Yy4xNyAyIC42NiA1LjMzIDEuMDggNy4zNi40NyAyLjI2Ljc4IDExIC43OSAyMi43NHYxOS4wNmwtMS44MSAyLjYzYy0yLjcxIDMuOTEtMTUuMTEgMTMuNTQtMTUuNDkgMTIuMjl6bTI5LjUzLTQ1LjExYy0uMTgtLjMtLjMzLTYuODctLjMzLTE0LjU5IDAtMTQuMDYtLjg5LTI3LjU0LTIuMjYtMzQuNDUtLjQtMi0uODEtOS43LS45LTE3LjA2LS4xNS0xMS45My0xLjQtMjQuMzctMi42NC0yNi4zOC0uNjYtMS4wNy0zLTE3LjY2LTMtMjEuMyAwLTQuMjMgMS02IDUuMjgtOS4xM3M0Ljg2LTMuMTQgNS40OC0uNzJjLjI4IDEuMSAxLjQ1IDUuNjIgMi42IDEwIDMuOTMgMTUuMTIgNC4xNCAxNi4yNyA0LjA1IDIxLjc0LS4xIDUuNzgtLjEzIDYuMTMtMS43NCAxNy43My0xIDcuMDctMS4xNyAxMi4zOS0xIDI4LjQzLjE3IDE5LjQtLjY0IDM1LjczLTIgNDEuMjctLjcxIDIuNzgtMi44IDUuNDgtMy40MyA0LjQzem0tNzEtMzcuNThhMTAxIDEwMSAwIDAgMS0xLjczLTEwLjc5IDEwMC41IDEwMC41IDAgMCAwLTEuNzMtMTAuNzkgMzcuNTMgMzcuNTMgMCAwIDEtMS02LjQ5Yy0uMzEtMy4xOS0uOTEtNy40Ni0xLjMzLTkuNDgtMS00Ljc5LTMuMzUtMTkuMzUtMy40Mi0yMS4wNyAwLS43NC0uMzQtNC4wNS0uNy03LjM2LS42Ny02LjIxLS44NC0yNy42Ny0uMjItMjguMjkgMS0xIDYuNjMgMi43NiAxMS4zMyA3LjQzbDUuMjggNS4yNS0uNDUgNi40N2MtLjI1IDMuNTYtLjYgMTAuMjMtLjc4IDE0Ljgzcy0uNDkgOS44Ny0uNjcgMTEuNzEtLjYxIDkuMzYtLjk0IDE2LjcyYy0uNzkgMTcuNDEtMS45NCAzMS4yOS0yLjY1IDMyYS42Mi42MiAwIDAgMS0xLS4xNHptLTg3LjE4LTI2Ni41OWMyMS4wNyAxMi43OSAxNy44NCAxNC4xNSAyOC40OSAxNy42NiAxMyA0LjI5IDE4Ljg3IDcuMTMgMjMuMTUgMTYuODdDMTExLjYgMjMzLjI4IDg2LjI1IDI1NSA3OC41NSAyNjhjLTMxIDUyLTYgMTAxLjU5IDYyLjc1IDg3LjIxLTE0LjE4IDI5LjIzLTc4IDI4LjYzLTk4LjY4LTQuOS0yNC42OC0zOS45NS0yMi4wOS0xMTguMyA2MS0xODcuNjZ6bTIxMC43OSAxNzljNTYuNjYgNi44OCA4Mi4zMi0zNy43NCA0Ni41NC04OS4yMyAwIDAtMjYuODctMjkuMzQtNjQuMjgtNjggMy0xNS40NSA5LjQ5LTMyLjEyIDMwLjU3LTUzLjgyIDg5LjIgNjMuNTEgOTIgMTQxLjYxIDkyLjQ2IDE0OS4zNiA0LjMgNzAuNjQtNzguNyA5MS4xOC0xMDUuMjkgNjEuNzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFya2Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkzLjggNTkuMUg0Ni4yQzIwLjcgNTkuMSAwIDc5LjggMCAxMDUuMnYzMDEuNWMwIDI1LjUgMjAuNyA0Ni4yIDQ2LjIgNDYuMmg1NDcuN2MyNS41IDAgNDYuMi0yMC43IDQ2LjEtNDYuMVYxMDUuMmMwLTI1LjQtMjAuNy00Ni4xLTQ2LjItNDYuMXpNMzM4LjUgMzYwLjZIMjc3di0xMjBsLTYxLjUgNzYuOS02MS41LTc2Ljl2MTIwSDkyLjNWMTUxLjRoNjEuNWw2MS41IDc2LjkgNjEuNS03Ni45aDYxLjV2MjA5LjJ6bTEzNS4zIDMuMUwzODEuNSAyNTZINDQzVjE1MS40aDYxLjVWMjU2SDU2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXN0b2RvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMgMTc5LjExYzAtOTcuMi02My43MS0xMjUuNy02My43MS0xMjUuNy02Mi41Mi0yOC43LTIyOC41Ni0yOC40LTI5MC40OCAwIDAgMC02My43MiAyOC41LTYzLjcyIDEyNS43IDAgMTE1LjctNi42IDI1OS40IDEwNS42MyAyODkuMSA0MC41MSAxMC43IDc1LjMyIDEzIDEwMy4zMyAxMS40IDUwLjgxLTIuOCA3OS4zMi0xOC4xIDc5LjMyLTE4LjFsLTEuNy0zNi45cy0zNi4zMSAxMS40LTc3LjEyIDEwLjFjLTQwLjQxLTEuNC04My00LjQtODkuNjMtNTRhMTAyLjU0IDEwMi41NCAwIDAgMS0uOS0xMy45Yzg1LjYzIDIwLjkgMTU4LjY1IDkuMSAxNzguNzUgNi43IDU2LjEyLTYuNyAxMDUtNDEuMyAxMTEuMjMtNzIuOSA5LjgtNDkuOCA5LTEyMS41IDktMTIxLjV6bS03NS4xMiAxMjUuMmgtNDYuNjN2LTExNC4yYzAtNDkuNy02NC01MS42LTY0IDYuOXY2Mi41aC00Ni4zM1YxOTdjMC01OC41LTY0LTU2LjYtNjQtNi45djExNC4ySDkwLjE5YzAtMTIyLjEtNS4yLTE0Ny45IDE4LjQxLTE3NSAyNS45LTI4LjkgNzkuODItMzAuOCAxMDMuODMgNi4xbDExLjYgMTkuNSAxMS42LTE5LjVjMjQuMTEtMzcuMSA3OC4xMi0zNC44IDEwMy44My02LjEgMjMuNzEgMjcuMyAxOC40IDUzIDE4LjQgMTc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1heGNkbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMSA0NDIuN2gtOTcuNEw0MTUuNiAyMDBjMi4zLTEwLjIuOS0xOS41LTQuNC0yNS43LTUtNi4xLTEzLjctOS42LTI0LjItOS42aC00OS4zbC01OS41IDI3OGgtOTcuNGw1OS41LTI3OGgtODMuNGwtNTkuNSAyNzhIMGw1OS41LTI3OC00NC42LTk1LjRIMzg3YzM5LjQgMCA3NS4zIDE2LjMgOTguMyA0NC45IDIzLjMgMjguNiAzMS44IDY3LjQgMjMuNiAxMDUuOWwtNDcuOCAyMjIuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuMzcgMTYwLjQxTDcgMzUyaDQzLjkxbDUuNTktNzkuODNMODQuNDMgMzUyaDQ0LjcxbDI1LjU0LTc3LjQzIDQuNzkgNzcuNDNIMjA1bC0xMi43OS0xOTEuNTlIMTQ2LjdMMTA2IDI3Ny43NCA2My42NyAxNjAuNDF6bTI4MSAwaC00Ny45VjM1Mmg0Ny45czk1IC44IDk0LjItOTUuNzljLS43OC05NC4yMS05NC4xOC05NS43OC05NC4xOC05NS43OHptLTEuMiAxNDYuNDZWMjA0Ljc4czQ2IDQuMjcgNDYuOCA1MC41Ny00Ni43OCA1MS41NC00Ni43OCA1MS41NHptMjM4LjI5LTc0LjI0YTU2LjE2IDU2LjE2IDAgMCAwIDgtMzguMzFjLTUuMzQtMzUuNzYtNTUuMDgtMzQuMzItNTUuMDgtMzQuMzJoLTUxLjl2MTkxLjU4SDQ4MnM4NyA0Ljc5IDg3LTYzLjg1YzAtNDMuMTQtMzMuNTItNTUuMDgtMzMuNTItNTUuMDh6bS01MS45LTMxLjk0czEzLjU3LTEuNTkgMTYgOS41OWMxLjQzIDYuNjYtNCAxMi00IDEyaC0xMnYtMjEuNTd6bS0uMSAxMDkuNDZsLjEtMjQuOTJWMjY3aC4wOHM0MS41OC00LjczIDQxLjE5IDIyLjQzYy0uMzMgMjUuNjUtNDEuMzUgMjAuNzQtNDEuMzUgMjAuNzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVkYXBwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTguMyAyMzguNGMzLjUtMTIuNSA2LjktMzMuNiAxMy4yLTMzLjYgOC4zIDEuOCA5LjYgMjMuNCAxOC42IDM2LjYgNC42LTIzLjUgNS4zLTg1LjEgMTQuMS04Ni43IDktLjcgMTkuNyA2Ni41IDIyIDc3LjUgOS45IDQuMSA0OC45IDYuNiA0OC45IDYuNiAxLjkgNy4zLTI0IDcuNi00MCA3LjgtNC42IDE0LjgtNS40IDI3LjctMTEuNCAyOC00LjcuMi04LjItMjguOC0xNy41LTQ5LjZsLTkuNCA2NS41Yy00LjQgMTMtMTUuNS0yMi41LTIxLjktMzkuMy0zLjMtLjEtNjIuNC0xLjYtNDcuNi03LjhsMzEtNXpNMjI4IDQ0OGMyMS4yIDAgMjEuMi0zMiAwLTMySDkyYy0yMS4yIDAtMjEuMiAzMiAwIDMyaDEzNnptLTI0IDY0YzIxLjIgMCAyMS4yLTMyIDAtMzJoLTg4Yy0yMS4yIDAtMjEuMiAzMiAwIDMyaDg4em0zNC4yLTE0MS41YzMuMi0xOC45IDUuMi0zNi40IDExLjktNDguOCA3LjktMTQuNyAxNi4xLTI4LjEgMjQtNDEgMjQuNi00MC40IDQ1LjktNzUuMiA0NS45LTEyNS41QzMyMCA2OS42IDI0OC4yIDAgMTYwIDBTMCA2OS42IDAgMTU1LjJjMCA1MC4yIDIxLjMgODUuMSA0NS45IDEyNS41IDcuOSAxMi45IDE2IDI2LjMgMjQgNDEgNi43IDEyLjUgOC43IDI5LjggMTEuOSA0OC45IDMuNSAyMSAzNi4xIDE1LjcgMzIuNi01LjEtMy42LTIxLjctNS42LTQwLjctMTUuMy01OC42QzY2LjUgMjQ2LjUgMzMgMjExLjMgMzMgMTU1LjIgMzMgODcuMyA5MCAzMiAxNjAgMzJzMTI3IDU1LjMgMTI3IDEyMy4yYzAgNTYuMS0zMy41IDkxLjMtNjYuMSAxNTEuNi05LjcgMTgtMTEuNyAzNy40LTE1LjMgNTguNi0zLjQgMjAuNiAyOSAyNi40IDMyLjYgNS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGl1bU0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzEuNSAxNDIuM2MuNi01LjktMS43LTExLjgtNi4xLTE1LjhMMjAuMyA3Mi4xVjY0aDE0MC4ybDEwOC40IDIzNy43TDM2NC4yIDY0aDEzMy43djguMWwtMzguNiAzN2MtMy4zIDIuNS01IDYuNy00LjMgMTAuOHYyNzJjLS43IDQuMSAxIDguMyA0LjMgMTAuOGwzNy43IDM3djguMUgzMDcuM3YtOC4xbDM5LjEtMzcuOWMzLjgtMy44IDMuOC01IDMuOC0xMC44VjE3MS4yTDI0MS41IDQ0Ny4xaC0xNC43TDEwMC40IDE3MS4ydjE4NC45Yy0xLjEgNy44IDEuNSAxNS42IDcgMjEuMmw1MC44IDYxLjZ2OC4xaC0xNDR2LThMNjUgMzc3LjNjNS40LTUuNiA3LjktMTMuNSA2LjUtMjEuMlYxNDIuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRpdW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTM3Mi4yIDEwNi4xbC0yNCAyM2MtMi4xIDEuNi0zLjEgNC4yLTIuNyA2Ljd2MTY5LjNjLS40IDIuNi42IDUuMiAyLjcgNi43bDIzLjUgMjN2NS4xaC0xMThWMzY3bDI0LjMtMjMuNmMyLjQtMi40IDIuNC0zLjEgMi40LTYuN1YxOTkuOGwtNjcuNiAxNzEuNmgtOS4xTDEyNSAxOTkuOHYxMTVjLS43IDQuOCAxIDkuNyA0LjQgMTMuMmwzMS42IDM4LjN2NS4xSDcxLjJ2LTUuMWwzMS42LTM4LjNjMy40LTMuNSA0LjktOC40IDQuMS0xMy4ydi0xMzNjLjQtMy43LTEtNy4zLTMuOC05LjhMNzUgMTM4LjFWMTMzaDg3LjNsNjcuNCAxNDhMMjg5IDEzMy4xaDgzLjJ2NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNZWRydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTQ0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTMuNyAyNTZjMCAxMjEuOCA4My45IDIyMi44IDE5My41IDI0MS4xLTE4LjcgNC41LTM4LjIgNi45LTU4LjIgNi45QzExMS40IDUwNCAwIDM5MyAwIDI1NlMxMTEuNCA4IDI0OC45IDhjMjAuMSAwIDM5LjYgMi40IDU4LjIgNi45QzE5Ny41IDMzLjIgMTEzLjcgMTM0LjIgMTEzLjcgMjU2bTI5Ny40IDEwMC4zYy03Ny43IDU1LjQtMTc5LjYgNDcuNS0yNDAuNC0xNC42IDUuNSAxNC4xIDEyLjcgMjcuNyAyMS43IDQwLjUgNjEuNiA4OC4yIDE4Mi40IDEwOS4zIDI2OS43IDQ3IDg3LjMtNjIuMyAxMDguMS0xODQuMyA0Ni41LTI3Mi42LTktMTIuOS0xOS4zLTI0LjMtMzAuNS0zNC4yIDM3LjQgNzguOCAxMC43IDE3OC41LTY3IDIzMy45bS0yMTguOC0yNDRjLTEuNCAxLTIuNyAyLjEtNCAzLjEgNjQuMy0xNy44IDEzNS45IDQgMTc4LjkgNjAuNSAzNS43IDQ3IDQyLjkgMTA2LjYgMjQuNCAxNTggNTYuNy01Ni4yIDY3LjYtMTQyLjEgMjIuMy0yMDEuOC01MC02NS41LTE0OS4xLTc0LjQtMjIxLjYtMTkuOE0yOTYgMjI0Yy00LjQgMC04LTMuNi04LTh2LTQwYzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY0MGMwIDQuNC0zLjYgOC04IDhoLTQwYy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDQwYzQuNCAwIDggMy42IDggOHY0MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di00MGMwLTQuNCAzLjYtOCA4LThoNDBjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThoLTQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZXR1cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05OSA0MTQuM2MxLjEgNS43LTIuMyAxMS4xLTggMTIuMy01LjQgMS4xLTEwLjktMi4zLTEyLTgtMS4xLTUuNCAyLjMtMTEuMSA3LjctMTIuMyA1LjQtMS4yIDExLjEgMi4zIDEyLjMgOHptMTQzLjEgNzEuNGMtNi4zIDQuNi04IDEzLjQtMy43IDIwIDQuNiA2LjYgMTMuNCA4LjMgMjAgMy43IDYuMy00LjYgOC0xMy40IDMuNC0yMC00LjItNi41LTEzLjEtOC4zLTE5LjctMy43em0tODYtNDYyLjNjNi4zLTEuNCAxMC4zLTcuNyA4LjktMTQtMS4xLTYuNi03LjQtMTAuNi0xMy43LTkuMS02LjMgMS40LTEwLjMgNy43LTkuMSAxNCAxLjQgNi42IDcuNiAxMC42IDEzLjkgOS4xek0zNC40IDIyNi4zYy0xMC02LjktMjMuNy00LjMtMzAuNiA2LTYuOSAxMC00LjMgMjQgNS43IDMwLjkgMTAgNy4xIDIzLjcgNC42IDMwLjYtNS43IDYuOS0xMC40IDQuMy0yNC4xLTUuNy0zMS4yem0yNzItMTcwLjljMTAuNi02LjMgMTMuNy0yMCA3LjctMzAuMy02LjMtMTAuNi0xOS43LTE0LTMwLTcuN3MtMTMuNyAyMC03LjQgMzAuNmM2IDEwLjMgMTkuNCAxMy43IDI5LjcgNy40em0tMTkxLjEgNThjNy43LTUuNCA5LjQtMTYgNC4zLTIzLjdzLTE1LjctOS40LTIzLjEtNC4zYy03LjcgNS40LTkuNCAxNi00LjMgMjMuNyA1LjEgNy44IDE1LjYgOS41IDIzLjEgNC4zem0zNzIuMyAxNTZjLTcuNCAxLjctMTIuMyA5LjEtMTAuNiAxNi45IDEuNCA3LjQgOC45IDEyLjMgMTYuMyAxMC42IDcuNC0xLjQgMTIuMy04LjkgMTAuNi0xNi42LTEuNS03LjQtOC45LTEyLjMtMTYuMy0xMC45em0zOS43LTU2LjhjLTEuMS01LjctNi42LTkuMS0xMi04LTUuNyAxLjEtOS4xIDYuOS04IDEyLjYgMS4xIDUuNCA2LjYgOS4xIDEyLjMgOCA1LjQtMS41IDkuMS02LjkgNy43LTEyLjZ6TTQ0NyAxMzguOWMtOC42IDYtMTAuNiAxNy43LTQuOSAyNi4zIDUuNyA4LjYgMTcuNCAxMC42IDI2IDQuOSA4LjMtNiAxMC4zLTE3LjcgNC42LTI2LjMtNS43LTguNy0xNy40LTEwLjktMjUuNy00Ljl6bS02LjMgMTM5LjRjMjYuMyA0My4xIDE1LjEgMTAwLTI2LjMgMTI5LjEtMTcuNCAxMi4zLTM3LjEgMTcuNy01Ni45IDE3LjEtMTIgNDcuMS02OS40IDY0LjYtMTA1LjEgMzIuNi0xLjEuOS0yLjYgMS43LTMuNyAyLjktMzkuMSAyNy4xLTkyLjMgMTcuNC0xMTkuNC0yMi4zLTkuNy0xNC4zLTE0LjYtMzAuNi0xNS4xLTQ2LjktNjUuNC0xMC45LTkwLTk0LTQxLjEtMTM5LjctMjguMy00Ni45LjYtMTA3LjQgNTMuNC0xMTQuOUMxNTEuNiA3MCAyMzQuMSAzOC42IDI5MC4xIDgyYzY3LjQtMjIuMyAxMzYuMyAyOS40IDEzMC45IDEwMS4xIDQxLjEgMTIuNiA1Mi44IDY2LjkgMTkuNyA5NS4yem0tNzAgNzQuM2MtMy4xLTIwLjYtNDAuOS00LjYtNDMuMS0yNy4xLTMuMS0zMiA0My43LTEwMS4xIDQwLTEyOC0zLjQtMjQtMTkuNC0yOS4xLTMzLjQtMjkuNC0xMy40LS4zLTE2LjkgMi0yMS40IDQuNi0yLjkgMS43LTYuNiA0LjktMTEuNy0uMy02LjMtNi0xMS4xLTExLjctMTkuNC0xMi45LTEyLjMtMi0xNy43IDItMjYuNiA5LjctMy40IDIuOS0xMiAxMi45LTIwIDkuMS0zLjQtMS43LTE1LjQtNy43LTI0LTExLjQtMTYuMy03LjEtNDAgNC42LTQ4LjYgMjAtMTIuOSAyMi45LTM4IDExMy4xLTQxLjcgMTI1LjEtOC42IDI2LjYgMTAuOSA0OC42IDM2LjkgNDcuMSAxMS4xLS42IDE4LjMtNC42IDI1LjQtMTcuNCA0LTcuNCA0MS43LTEwNy43IDQ0LjYtMTEyLjYgMi0zLjQgOC45LTggMTQuNi01LjEgNS43IDMuMSA2LjkgOS40IDYgMTUuMS0xLjEgOS43LTI4IDcwLjktMjguOSA3Ny43LTMuNCAyMi45IDI2LjkgMjYuNiAzOC42IDQgMy43LTcuMSA0NS43LTkyLjYgNDkuNC05OC4zIDQuMy02LjMgNy40LTguMyAxMS43LTggMy4xIDAgOC4zLjkgNy4xIDEwLjktMS40IDkuNC0zNS4xIDcyLjMtMzguOSA4Ny43LTQuNiAyMC42IDYuNiA0MS40IDI0LjkgNTAuNiAxMS40IDUuNyA2Mi41IDE1LjcgNTguNS0xMS4xem01LjcgOTIuM2MtMTAuMyA3LjQtMTIuOSAyMi01LjcgMzIuNiA3LjEgMTAuNiAyMS40IDEzLjEgMzIgNiAxMC42LTcuNCAxMy4xLTIyIDYtMzIuNi03LjQtMTAuNi0yMS43LTEzLjUtMzIuMy02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZ2Fwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC41IDIwOS42djY2LjJsMzMuNSAzMy41IDMzLjMtMzMuM3YtNjYuNGwtMzMuNC0zMy40ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDUuMSA0MTQuNEwzNjcgNDQxLjZsLTI2LTE5LjJ2LTY1LjVsLTMzLjQtMzMuNC0zMy40IDMzLjR2NjUuNUwyNDggNDQxLjZsLTI2LjEtMTkuMnYtNjUuNWwtMzMuNC0zMy40LTMzLjUgMzMuNHY2NS41bC0yNi4xIDE5LjItMjYuMS0xOS4ydi04N2w1OS41LTU5LjVWMTg4bDU5LjUtNTkuNVY1Mi45bDI2LjEtMTkuMkwyNzQgNTIuOXY3NS42bDU5LjUgNTkuNXY4Ny42bDU5LjcgNTkuN3Y4Ny4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lbmRlbGV5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNC42IDMyNS4yYy0xMi4zLTEyLjQtMjkuNy0xOS4yLTQ4LjQtMTcuMi00My4zLTEtNDkuNy0zNC45LTM3LjUtOTguOCAyMi44LTU3LjUtMTQuOS0xMzEuNS04Ny40LTEzMC44LTc3LjQuNy04MS43IDgyLTEzMC45IDgyLTQ4LjEgMC01NC04MS4zLTEzMC45LTgyLTcyLjktLjgtMTEwLjEgNzMuMy04Ny40IDEzMC44IDEyLjIgNjMuOSA1LjggOTcuOC0zNy41IDk4LjgtMjEuMi0yLjMtMzcgNi41LTUzIDIyLjUtMTkuOSAxOS43LTE5LjMgOTQuOCA0Mi42IDEwMi42IDQ3LjEgNS45IDgxLjYtNDIuOSA2MS4yLTg3LjgtNDcuMy0xMDMuNyAxODUuOS0xMDYuMSAxNDYuNS04LjItLjEuMS0uMi4yLS4zLjQtMjYuOCA0Mi44IDYuOCA5Ny40IDU4LjggOTUuMiA1Mi4xIDIuMSA4NS40LTUyLjYgNTguOC05NS4yLS4xLS4yLS4yLS4zLS4zLS40LTM5LjQtOTcuOSAxOTMuOC05NS41IDE0Ni41IDguMi00LjYgMTAtNi43IDIxLjMtNS43IDMzIDQuOSA1My40IDY4LjcgNzQuMSAxMDQuOSAzNS4yIDE3LjgtMTQuOCAyMy4xLTY1LjYgMC04OC4zem0tMzAzLjktMTkuMWgtLjZjLTQzLjQgMC02Mi44LTM3LjUtNjIuOC02Mi44IDAtMzQuNyAyOC4yLTYyLjggNjIuOC02Mi44aC42YzM0LjcgMCA2Mi44IDI4LjEgNjIuOCA2Mi44IDAgMjUtMTkuMiA2Mi44LTYyLjggNjIuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2Jsb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk5LjM2LDM2Mi4yM2MyOS40OS0zNC42OSw0Ny4xLTc4LjM0LDQ3LjEtMTI1Ljc5QzQ0Ni40NiwxMjMuNDksMzQ2Ljg2LDMyLDIyNCwzMlMxLjU0LDEyMy40OSwxLjU0LDIzNi40NCwxMDEuMTQsNDQwLjg3LDIyNCw0NDAuODdhMjM5LjI4LDIzOS4yOCwwLDAsMCw3OS40NC0xMy40NCw3LjE4LDcuMTgsMCwwLDEsOC4xMiwyLjU2YzE4LjU4LDI1LjA5LDQ3LjYxLDQyLjc0LDc5Ljg5LDQ5LjkyYTQuNDIsNC40MiwwLDAsMCw1LjIyLTMuNDMsNC4zNyw0LjM3LDAsMCwwLS44NS0zLjYyLDg3LDg3LDAsMCwxLDMuNjktMTEwLjY5Wk0zMjkuNTIsMjEyLjRsLTU3LjMsNDMuNDlMMjkzLDMyNC43NWE2LjUsNi41LDAsMCwxLTkuOTQsNy4yMkwyMjQsMjkwLjkyLDE2NC45NCwzMzJhNi41MSw2LjUxLDAsMCwxLTkuOTUtNy4yMmwyMC43OS02OC44Ni01Ny4zLTQzLjQ5YTYuNSw2LjUsMCwwLDEsMy44LTExLjY4bDcxLjg4LTEuNTEsMjMuNjYtNjcuOTJhNi41LDYuNSwwLDAsMSwxMi4yOCwwbDIzLjY2LDY3LjkyLDcxLjg4LDEuNTFhNi41LDYuNSwwLDAsMSwzLjg4LDExLjY4WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3Jvc29mdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMyaDIxNC42djIxNC42SDBWMzJ6bTIzMy40IDBINDQ4djIxNC42SDIzMy40VjMyek0wIDI2NS40aDIxNC42VjQ4MEgwVjI2NS40em0yMzMuNCAwSDQ0OFY0ODBIMjMzLjRWMjY1LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNjR2MzQ4LjljMCA1Ni4yIDg4IDU4LjEgODggMFYxNzQuM2M3LjktNTIuOSA4OC01MC40IDg4IDYuNXYxNzUuM2MwIDU3LjkgOTYgNTggOTYgMFYyNDBjNS4zLTU0LjcgODgtNTIuNSA4OCA0LjN2MjMuOGMwIDU5LjkgODggNTYuNiA4OCAwVjY0SDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl4Y2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQzIDIxOS43MjlDNDE2LjEyNCAxMzQuNzI3IDM0NC4xMzUgNjggMjU2LjkxOSA2OGMtNzIuMjY2IDAtMTM2LjIyNCA0Ni41MTYtMTU5LjIwNSAxMTQuMDc0LTU0LjU0NSA4LjAyOS05Ni42MyA1NC44MjItOTYuNjMgMTExLjU4MiAwIDYyLjI5OCA1MC42NjggMTEyLjk2NiAxMTMuMjQzIDExMi45NjZoMjg5LjYxNGM1Mi4zMjkgMCA5NC45NjktNDIuMzYyIDk0Ljk2OS05NC42OTMgMC00NS4xMzEtMzIuMTE4LTgzLjA2My03NC40OC05Mi4yem0tMjAuNDg5IDE0NC41M0gxMTQuMzI3Yy0zOS4wNCAwLTcwLjg4MS0zMS41NjQtNzAuODgxLTcwLjYwNHMzMS44NDEtNzAuNjA0IDcwLjg4MS03MC42MDRjMTguODI3IDAgMzYuNTQ4IDcuNDc1IDQ5LjgzOCAyMC43NjYgMTkuOTYzIDE5Ljk2MyA1MC4xMzMtMTAuMjI3IDMwLjE4LTMwLjE4LTE0LjY3NS0xNC4zOTgtMzIuNjcyLTI0LjM2NS01Mi4wNTMtMjkuMzQ5IDE5LjkzNS00NC4zIDY0Ljc5LTczLjkyNiAxMTQuNjI4LTczLjkyNiA2OS40OTYgMCAxMjUuOTc5IDU2LjQ4MyAxMjUuOTc5IDEyNS43MDIgMCAxMy41NjgtMi4yMTUgMjYuODU3LTYuMzY5IDM5LjU5NC04Ljk0MyAyNy41MTcgMzIuMTMzIDM4LjkzOSA0MC4xNDcgMTMuMjkgMi43NjktOC4zMDYgNC45ODQtMTYuODg5IDYuMzY5LTI1LjQ3MiAxOS4zODEgNy40NzYgMzMuNTAyIDI2LjMwMyAzMy41MDIgNDguNDUzIDAgMjguNzk1LTIzLjUzNSA1Mi4zMy01Mi42MDcgNTIuMzN6bTIzNS4wNjktNTIuMzNjMCA0NC4wMjQtMTIuNzM3IDg2LjM4Ni0zNy4xMDIgMTIyLjY1Ny00LjE1MyA2LjA5Mi0xMC43OTggOS40MTQtMTcuNzIgOS40MTQtMTYuMzE3IDAtMjcuMTI3LTE4LjgyNi0xNy40NDMtMzIuOTQ5IDE5LjM4MS0yOS4zNDkgMjkuOTAzLTYzLjY4MiAyOS45MDMtOTkuMTIycy0xMC41MjEtNjkuNzczLTI5LjkwMy05OC44NDVjLTE1LjY1NS0yMi44MzEgMTkuMzYxLTQ3LjI0IDM1LjE2My0yMy41MzQgMjQuMzY2IDM1Ljk5MyAzNy4xMDIgNzguMzU2IDM3LjEwMiAxMjIuMzc5em0tNzAuODggMGMwIDMxLjU2NS05LjEzNyA2Mi4wMjEtMjYuODU3IDg4LjMyNS00LjE1MyA2LjA5MS0xMC43OTggOS4xMzYtMTcuNzIgOS4xMzYtMTcuMjAxIDAtMjcuMDIyLTE4Ljk3OS0xNy40NDMtMzIuOTQ4IDEzLjAxMy0xOS4xMDQgMTkuNjU4LTQxLjI1NSAxOS42NTgtNjQuNTEzIDAtMjIuOTgxLTYuNjQ1LTQ1LjQwOC0xOS42NTgtNjQuNTEyLTE1Ljc2MS0yMi45ODYgMTkuMDA4LTQ3LjA5NSAzNS4xNjMtMjMuNTM1IDE3LjcxOSAyNi4wMjYgMjYuODU3IDU2LjQ4MyAyNi44NTcgODguMDQ3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1peGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExNC41Nyw3Ni4wN2E0NS43MSw0NS43MSwwLDAsMC02Ny41MS02LjQxYy0xNy41OCwxNi4xOC0xOSw0My41Mi00Ljc1LDYyLjc3bDkxLjc4LDEyM0w0MS43NiwzNzkuNThjLTE0LjIzLDE5LjI1LTEzLjExLDQ2LjU5LDQuNzQsNjIuNzdBNDUuNzEsNDUuNzEsMCwwLDAsMTE0LDQzNS45NEwyNDIuODksMjYyLjdhMTIuMTQsMTIuMTQsMCwwLDAsMC0xNC4yM1pNNDcwLjI0LDM3OS41OCwzNzcuOTEsMjU1LjQ1bDkxLjc4LTEyM2MxNC4yMi0xOS4yNSwxMi44My00Ni41OS00Ljc1LTYyLjc3YTQ1LjcxLDQ1LjcxLDAsMCwwLTY3LjUxLDYuNDFsLTEyOCwxNzIuMTJhMTIuMTQsMTIuMTQsMCwwLDAsMCwxNC4yM0wzOTgsNDM1Ljk0YTQ1LjcxLDQ1LjcxLDAsMCwwLDY3LjUxLDYuNDFDNDgzLjM1LDQyNi4xNyw0ODQuNDcsMzk4LjgzLDQ3MC4yNCwzNzkuNThaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl6dW5pIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5LjEgMCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OEM0OTYgMTE5LjEgMzg1IDggMjQ4IDh6bS04MCAzNTEuOWMtMzEuNCAxMC42LTU4LjggMjcuMy04MCA0OC4yVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIyMy45em0xMjAtOS45Yy0xMi45LTItMjYuMi0zLjEtMzkuOC0zLjEtMTMuOCAwLTI3LjIgMS4xLTQwLjIgMy4xVjEzNmMwLTIyLjEgMTcuOS00MCA0MC00MHM0MCAxNy45IDQwIDQwdjIxNHptMTIwIDU3LjdjLTIxLjItMjAuOC00OC42LTM3LjQtODAtNDhWMTM2YzAtMjIuMSAxNy45LTQwIDQwLTQwczQwIDE3LjkgNDAgNDB2MjcxLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9keCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTYgMjQxLjhsMzYuNyAyMy43VjQ4MGwtMTMzLTgzLjhMMzU2IDI0MS44ek00NDAgNzVIMjI2LjNsLTIzIDM3LjggMTUzLjUgOTYuNUw0NDAgNzV6bS04OSAxNDIuOEw1NS4yIDMydjIxNC41bDQ2IDI5TDM1MSAyMTcuOHpNOTcgMjk0LjJMOCA0MzdoMjEzLjdsMTI1LTIwMC41TDk3IDI5NC4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzg0aDEwOC40QzQxNyA0NTUuOSAzMzguMSA1MDQgMjQ4IDUwNFM3OSA0NTUuOSAzNS42IDM4NEgxNDRWMjU2LjJMMjQ4IDM2MWwxMDQtMTA1djEyOHpNODggMzM2VjEyOGwxNTkuNCAxNTkuNEw0MDggMTI4djIwOGg3NC44YzguNS0yNS4xIDEzLjItNTIgMTMuMi04MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2YzAgMjggNC42IDU0LjkgMTMuMiA4MEg4OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOYXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4zIDM3My42Yy0xNC4yIDEzLjYtMzEuMyAyNC4xLTUwLjQgMzAuNS0xOS02LjQtMzYuMi0xNi45LTUwLjMtMzAuNWgxMDAuN3ptNDQtMTk5LjZjMjAtMTYuOSA0My42LTI5LjIgNjkuNi0zNi4yVjI5OWMwIDIxOS40LTMyOCAyMTcuNi0zMjggLjNWMTM3LjdjMjUuOSA2LjkgNDkuNiAxOS42IDY5LjUgMzYuNCA1Ni44LTQwIDEzMi41LTM5LjkgMTg4LjktLjF6bS0yMDguOC01OC41YzY0LjQtNjAgMTY0LjMtNjAuMSAyMjguOS0uMi03LjEgMy41LTEzLjkgNy4zLTIwLjYgMTEuNS01OC43LTMwLjUtMTI5LjItMzAuNC0xODcuOS4xLTYuMy00LTEzLjktOC4yLTIwLjQtMTEuNHpNNDMuOCA5My4ydjY5LjNjLTU4LjQgMzYuNS01OC40IDEyMS4xLjEgMTU4LjMgMjYuNCAyNDUuMSAzODEuNyAyNDAuMyA0MDcuNiAxLjVsLjMtMS43YzU4LjctMzYuMyA1OC45LTEyMS43LjItMTU4LjJWOTMuMmMtMTcuMy41LTM0IDMtNTAuMSA3LjQtODItOTEuNS0yMjUuNS05MS41LTMwNy41LjEtMTYuMy00LjQtMzMuMS03LTUwLjYtNy41ek0yNTkuMiAzNTJzMzYtLjMgNjEuMy0xLjVjMTAuMi0uNSAyMS4xLTQgMjUuNS02LjUgMjYuMy0xNS4xIDI1LjQtMzkuMiAyNi4yLTQ3LjQtNzkuNS0uNi05OS45LTMuOS0xMTMgNTUuNHptLTEzNS41LTU1LjNjLjggOC4yLS4xIDMyLjMgMjYuMiA0Ny40IDQuNCAyLjUgMTUuMiA2IDI1LjUgNi41IDI1LjMgMS4xIDYxLjMgMS41IDYxLjMgMS41LTEzLjItNTkuNC0zMy43LTU2LjEtMTEzLTU1LjR6bTE2OS4xIDEyMy40Yy0zLjItNS4zLTYuOS03LjMtNi45LTcuMy0yNC44IDcuMy01Mi4yIDYuOS03NS45IDAgMCAwLTIuOSAxLjUtNi40IDYuNi0yLjggNC4xLTMuNyA5LjYtMy43IDkuNiAyOS4xIDE3LjYgNjcuMSAxNy42IDk2LjIgMC0uMS0uMS0uMy00LTMuMy04Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmVvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuNDQgNTEyaC05NS4xMUwyMTIuMTIgMzU3LjQ2djkxLjFMMTI1LjY5IDUxMkgyOFYyOS44Mkw2OC40NyAwaDEwOC4wNWwxMjMuNzQgMTc2LjEzVjYzLjQ1TDM4Ni42OSAwaDk3LjY5djQ2MS41ek0zOC43NyAzNS4yN1Y0OTZsNzItNTIuODhWMTk0bDIxNS41IDMwNy42NGg4NC43OWw1Mi4zNS0zOC4xN2gtNzguMjdMNjkgMTN6bTgyLjU0IDQ2Ni42MWw4MC01OC43OHYtMTAxbC03OS43Ni0xMTQuNHYyMjAuOTRMNDkgNTAxLjg5aDcyLjM0ek04MC42MyAxMC43N2wzMTAuNiA0NDIuNTdoODIuMzdWMTAuNzdoLTc5Ljc1djMxNy41NkwxNzAuOTEgMTAuNzd6TTMxMSAxOTEuNjVsNzIgMTAyLjgxVjE1LjkzbC03MiA1M3YxMjIuNzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmltYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0Ni42IDI5OS4yOWMxNS41NyAwIDI3LjE1IDExLjQ2IDI3LjE1IDI3cy0xMS42MiAyNy0yNy4xNSAyN2MtMTUuNyAwLTI3LjE1LTExLjU3LTI3LjE1LTI3czExLjU1LTI3IDI3LjE1LTI3ek0xMTMgMzI2LjI1YzAtMTUuNjEgMTEuNjgtMjcgMjcuMTUtMjdzMjcuMTUgMTEuNDYgMjcuMTUgMjctMTEuNDcgMjctMjcuMTUgMjdjLTE1LjQ0IDAtMjcuMTUtMTEuMzEtMjcuMTUtMjdNMTkxLjc2IDE1OUMxNTcgMTU5IDg5LjQ1IDE3OC43NyA1OS4yNSAyMjdMMTQgMHYzMzUuNDhDMTQgNDMzLjEzIDkzLjYxIDUxMiAxOTEuNzYgNTEyczE3Ny43Ni03OC45NSAxNzcuNzYtMTc2LjUyUzI5MC4xMyAxNTkgMTkxLjc2IDE1OXptMCAzMDguMTJjLTczLjI3IDAtMTMyLjUxLTU4LjktMTMyLjUxLTEzMS41OXM1OS4yNC0xMzEuNTkgMTMyLjUxLTEzMS41OSAxMzIuNTEgNTguODYgMTMyLjUxIDEzMS41NFMyNjUgNDY3LjA3IDE5MS43NiA0NjcuMDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTm9kZUpzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCA1MDhjLTYuNyAwLTEzLjUtMS44LTE5LjQtNS4ybC02MS43LTM2LjVjLTkuMi01LjItNC43LTctMS43LTggMTIuMy00LjMgMTQuOC01LjIgMjcuOS0xMi43IDEuNC0uOCAzLjItLjUgNC42LjRsNDcuNCAyOC4xYzEuNyAxIDQuMSAxIDUuNyAwbDE4NC43LTEwNi42YzEuNy0xIDIuOC0zIDIuOC01VjE0OS4zYzAtMi4xLTEuMS00LTIuOS01LjFMMjI2LjggMzcuN2MtMS43LTEtNC0xLTUuNyAwTDM2LjYgMTQ0LjNjLTEuOCAxLTIuOSAzLTIuOSA1LjF2MjEzLjFjMCAyIDEuMSA0IDIuOSA0LjlsNTAuNiAyOS4yYzI3LjUgMTMuNyA0NC4zLTIuNCA0NC4zLTE4LjdWMTY3LjVjMC0zIDIuNC01LjMgNS40LTUuM2gyMy40YzIuOSAwIDUuNCAyLjMgNS40IDUuM1YzNzhjMCAzNi42LTIwIDU3LjYtNTQuNyA1Ny42LTEwLjcgMC0xOS4xIDAtNDIuNS0xMS42bC00OC40LTI3LjlDOC4xIDM4OS4yLjcgMzc2LjMuNyAzNjIuNFYxNDkuM2MwLTEzLjggNy40LTI2LjggMTkuNC0zMy43TDIwNC42IDljMTEuNy02LjYgMjcuMi02LjYgMzguOCAwbDE4NC43IDEwNi43YzEyIDYuOSAxOS40IDE5LjggMTkuNCAzMy43djIxMy4xYzAgMTMuOC03LjQgMjYuNy0xOS40IDMzLjdMMjQzLjQgNTAyLjhjLTUuOSAzLjQtMTIuNiA1LjItMTkuNCA1LjJ6bTE0OS4xLTIxMC4xYzAtMzkuOS0yNy01MC41LTgzLjctNTgtNTcuNC03LjYtNjMuMi0xMS41LTYzLjItMjQuOSAwLTExLjEgNC45LTI1LjkgNDcuNC0yNS45IDM3LjkgMCA1MS45IDguMiA1Ny43IDMzLjguNSAyLjQgMi43IDQuMiA1LjIgNC4yaDI0YzEuNSAwIDIuOS0uNiAzLjktMS43czEuNS0yLjYgMS40LTQuMWMtMy43LTQ0LjEtMzMtNjQuNi05Mi4yLTY0LjYtNTIuNyAwLTg0LjEgMjIuMi04NC4xIDU5LjUgMCA0MC40IDMxLjMgNTEuNiA4MS44IDU2LjYgNjAuNSA1LjkgNjUuMiAxNC44IDY1LjIgMjYuNyAwIDIwLjYtMTYuNiAyOS40LTU1LjUgMjkuNC00OC45IDAtNTkuNi0xMi4zLTYzLjItMzYuNi0uNC0yLjYtMi42LTQuNS01LjMtNC41aC0yMy45Yy0zIDAtNS4zIDIuNC01LjMgNS4zIDAgMzEuMSAxNi45IDY4LjIgOTcuOCA2OC4yIDU4LjQtLjEgOTItMjMuMiA5Mi02My40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzE2LjMgNDUyYy0yLjEgMC00LjItLjYtNi4xLTEuNkwyOTEgNDM5Yy0yLjktMS42LTEuNS0yLjItLjUtMi41IDMuOC0xLjMgNC42LTEuNiA4LjctNCAuNC0uMiAxLS4xIDEuNC4xbDE0LjggOC44Yy41LjMgMS4zLjMgMS44IDBMMzc1IDQwOGMuNS0uMy45LS45LjktMS42di02Ni43YzAtLjctLjMtMS4zLS45LTEuNmwtNTcuOC0zMy4zYy0uNS0uMy0xLjItLjMtMS44IDBsLTU3LjggMzMuM2MtLjYuMy0uOSAxLS45IDEuNnY2Ni43YzAgLjYuNCAxLjIuOSAxLjVsMTUuOCA5LjFjOC42IDQuMyAxMy45LS44IDEzLjktNS44di02NS45YzAtLjkuNy0xLjcgMS43LTEuN2g3LjNjLjkgMCAxLjcuNyAxLjcgMS43djY1LjljMCAxMS41LTYuMiAxOC0xNy4xIDE4LTMuMyAwLTYgMC0xMy4zLTMuNmwtMTUuMi04LjdjLTMuNy0yLjItNi4xLTYuMi02LjEtMTAuNXYtNjYuN2MwLTQuMyAyLjMtOC40IDYuMS0xMC41bDU3LjgtMzMuNGMzLjctMi4xIDguNS0yLjEgMTIuMSAwbDU3LjggMzMuNGMzLjcgMi4yIDYuMSA2LjIgNi4xIDEwLjV2NjYuN2MwIDQuMy0yLjMgOC40LTYuMSAxMC41bC01Ny44IDMzLjRjLTEuNyAxLjEtMy44IDEuNy02IDEuN3ptNDYuNy02NS44YzAtMTIuNS04LjQtMTUuOC0yNi4yLTE4LjItMTgtMi40LTE5LjgtMy42LTE5LjgtNy44IDAtMy41IDEuNS04LjEgMTQuOC04LjEgMTEuOSAwIDE2LjMgMi42IDE4LjEgMTAuNi4yLjguOCAxLjMgMS42IDEuM2g3LjVjLjUgMCAuOS0uMiAxLjItLjUuMy0uNC41LS44LjQtMS4zLTEuMi0xMy44LTEwLjMtMjAuMi0yOC44LTIwLjItMTYuNSAwLTI2LjMgNy0yNi4zIDE4LjYgMCAxMi43IDkuOCAxNi4xIDI1LjYgMTcuNyAxOC45IDEuOSAyMC40IDQuNiAyMC40IDguMyAwIDYuNS01LjIgOS4yLTE3LjQgOS4yLTE1LjMgMC0xOC43LTMuOC0xOS44LTExLjQtLjEtLjgtLjgtMS40LTEuNy0xLjRoLTcuNWMtLjkgMC0xLjcuNy0xLjcgMS43IDAgOS43IDUuMyAyMS4zIDMwLjYgMjEuMyAxOC41IDAgMjktNy4yIDI5LTE5Ljh6bTU0LjUtNTAuMWMwIDYuMS01IDExLjEtMTEuMSAxMS4xcy0xMS4xLTUtMTEuMS0xMS4xYzAtNi4zIDUuMi0xMS4xIDExLjEtMTEuMSA2LS4xIDExLjEgNC44IDExLjEgMTEuMXptLTEuOCAwYzAtNS4yLTQuMi05LjMtOS40LTkuMy01LjEgMC05LjMgNC4xLTkuMyA5LjMgMCA1LjIgNC4yIDkuNCA5LjMgOS40IDUuMi0uMSA5LjQtNC4zIDkuNC05LjR6bS00LjUgNi4yaC0yLjZjLS4xLS42LS41LTMuOC0uNS0zLjktLjItLjctLjQtMS4xLTEuMy0xLjFoLTIuMnY1aC0yLjR2LTEyLjVoNC4zYzEuNSAwIDQuNCAwIDQuNCAzLjMgMCAyLjMtMS41IDIuOC0yLjQgMy4xIDEuNy4xIDEuOCAxLjIgMi4xIDIuOC4xIDEgLjMgMi43LjYgMy4zem0tMi44LTguOGMwLTEuNy0xLjItMS43LTEuOC0xLjdoLTJ2My41aDEuOWMxLjYgMCAxLjktMS4xIDEuOS0xLjh6TTEzNy4zIDE5MWMwLTIuNy0xLjQtNS4xLTMuNy02LjRsLTYxLjMtMzUuM2MtMS0uNi0yLjItLjktMy40LTFoLS42Yy0xLjIgMC0yLjMuNC0zLjQgMUwzLjcgMTg0LjZDMS40IDE4NS45IDAgMTg4LjQgMCAxOTFsLjEgOTVjMCAxLjMuNyAyLjUgMS44IDMuMiAxLjEuNyAyLjUuNyAzLjcgMEw0MiAyNjguM2MyLjMtMS40IDMuNy0zLjggMy43LTYuNHYtNDQuNGMwLTIuNiAxLjQtNS4xIDMuNy02LjRsMTUuNS04LjljMS4yLS43IDIuNC0xIDMuNy0xIDEuMyAwIDIuNi4zIDMuNyAxbDE1LjUgOC45YzIuMyAxLjMgMy43IDMuOCAzLjcgNi40djQ0LjRjMCAyLjYgMS40IDUuMSAzLjcgNi40bDM2LjQgMjAuOWMxLjEuNyAyLjYuNyAzLjcgMCAxLjEtLjYgMS44LTEuOSAxLjgtMy4ybC4yLTk1ek00NzIuNSA4Ny4zdjE3Ni40YzAgMi42LTEuNCA1LjEtMy43IDYuNGwtNjEuMyAzNS40Yy0yLjMgMS4zLTUuMSAxLjMtNy40IDBsLTYxLjMtMzUuNGMtMi4zLTEuMy0zLjctMy44LTMuNy02LjR2LTcwLjhjMC0yLjYgMS40LTUuMSAzLjctNi40bDYxLjMtMzUuNGMyLjMtMS4zIDUuMS0xLjMgNy40IDBsMTUuMyA4LjhjMS43IDEgMy45LS4zIDMuOS0yLjJ2LTk0YzAtMi44IDMtNC42IDUuNS0zLjJsMzYuNSAyMC40YzIuMyAxLjIgMy44IDMuNyAzLjggNi40em0tNDYgMTI4LjljMC0uNy0uNC0xLjMtLjktMS42bC0yMS0xMi4yYy0uNi0uMy0xLjMtLjMtMS45IDBsLTIxIDEyLjJjLS42LjMtLjkuOS0uOSAxLjZ2MjQuM2MwIC43LjQgMS4zLjkgMS42bDIxIDEyLjFjLjYuMyAxLjMuMyAxLjggMGwyMS0xMi4xYy42LS4zLjktLjkuOS0xLjZ2LTI0LjN6bTIwOS44LS43YzIuMy0xLjMgMy43LTMuOCAzLjctNi40VjE5MmMwLTIuNi0xLjQtNS4xLTMuNy02LjRsLTYwLjktMzUuNGMtMi4zLTEuMy01LjEtMS4zLTcuNCAwbC02MS4zIDM1LjRjLTIuMyAxLjMtMy43IDMuOC0zLjcgNi40djcwLjhjMCAyLjcgMS40IDUuMSAzLjcgNi40bDYwLjkgMzQuN2MyLjIgMS4zIDUgMS4zIDcuMyAwbDM2LjgtMjAuNWMyLjUtMS40IDIuNS01IDAtNi40TDU1MCAyNDEuNmMtMS4yLS43LTEuOS0xLjktMS45LTMuMnYtMjIuMmMwLTEuMy43LTIuNSAxLjktMy4ybDE5LjItMTEuMWMxLjEtLjcgMi42LS43IDMuNyAwbDE5LjIgMTEuMWMxLjEuNyAxLjkgMS45IDEuOSAzLjJ2MTcuNGMwIDIuOCAzLjEgNC42IDUuNiAzLjJsMzYuNy0yMS4zek01NTkgMjE5Yy0uNC4zLS43LjctLjcgMS4ydjEzLjZjMCAuNS4zIDEgLjcgMS4ybDExLjggNi44Yy40LjMgMSAuMyAxLjQgMEw1ODQgMjM1Yy40LS4zLjctLjcuNy0xLjJ2LTEzLjZjMC0uNS0uMy0xLS43LTEuMmwtMTEuOC02LjhjLS40LS4zLTEtLjMtMS40IDBMNTU5IDIxOXptLTI1NC4yIDQzLjV2LTcwLjRjMC0yLjYtMS42LTUuMS0zLjktNi40bC02MS4xLTM1LjJjLTIuMS0xLjItNS0xLjQtNy40IDBsLTYxLjEgMzUuMmMtMi4zIDEuMy0zLjkgMy43LTMuOSA2LjR2NzAuNGMwIDIuOCAxLjkgNS4yIDQgNi40bDYxLjIgMzUuMmMyLjQgMS40IDUuMiAxLjMgNy40IDBsNjEtMzUuMmMxLjgtMSAzLjEtMi43IDMuNi00LjcuMS0uNS4yLTEuMS4yLTEuN3ptLTc0LjMtMTI0LjlsLS44LjVoMS4xbC0uMy0uNXptNzYuMiAxMzAuMmwtLjQtLjd2LjlsLjQtLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnBtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyODhoLTMydi02NGgzMnY2NHptMjg4LTEyOHYxOTJIMjg4djMySDE2MHYtMzJIMFYxNjBoNTc2em0tNDE2IDMySDMydjEyOGg2NHYtOTZoMzJ2OTZoMzJWMTkyem0xNjAgMEgxOTJ2MTYwaDY0di0zMmg2NFYxOTJ6bTIyNCAwSDM1MnYxMjhoNjR2LTk2aDMydjk2aDMydi05NmgzMnY5NmgzMlYxOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTnM4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC4zMjQsMjY5LjE3MmgyNi4wNjdWMjQyLjk5NEgxMDQuMzI0Wm01Mi40NjYtMjYuMTc4LS4wNTUtMjYuMTc4di0uOTQxYTM5LjMyNSwzOS4zMjUsMCwwLDAtNzguNjQ0Ljk0MXYuMTY2aDI2LjR2LS4xNjZhMTIuOTgsMTIuOTgsMCwwLDEsMjUuOTU2LDB2MjYuMTc4Wm01Mi4zNTYsMjUuODQ2YTkxLjEsOTEuMSwwLDAsMS05MS4xLDkxLjFoLS42MDlhOTEuMSw5MS4xLDAsMCwxLTkxLjEtOTEuMUgwdi4xNjZBMTE3LjMzLDExNy4zMywwLDAsMCwxMTcuNDQsMzg2LjI4aC43NzVBMTE3LjMzMSwxMTcuMzMxLDAsMCwwLDIzNS40OSwyNjguODRWMjQyLjgyOEgyMDkuMTQ2Wm0tMTU3LjIzMywwYTY1LjM2Miw2NS4zNjIsMCwwLDAsMTMwLjcyMywwSDE1Ni4yOTJhMzkuMDIzLDM5LjAyMywwLDAsMS03OC4wMzUsMFYyNDIuODgzSDUxLjk2OHYtMjYuNjJBNjUuNDIsNjUuNDIsMCwwLDEsMTgyLjgsMjE3LjQ4djI1LjI5M2gyNi4zNDRWMjE3LjQ4YTkxLjc2MSw5MS43NjEsMCwwLDAtMTgzLjUyMiwwdjI1LjRINTEuOTEzWm00MTguNC03MS4xNzNjMTMuNjcsMCwyNC41NzMsNi42NDIsMzAuMDUyLDE4LjI2NGwuNzE5LDEuNTQ5LDIzLjI0NS0xMS41MTEtLjYwOS0xLjQzOWMtOC4wMjUtMTkuMjYtMjguNS0zMS4yNy01My40MDctMzEuMjctMjMuMTM0LDAtNDMuNjExLDExLjQtNTAuOTcyLDI4LjQ0Ny0uMTIzLDI2Ljg3Ni0uMTU4LDIzLjksMCwyNC44NSw0LjcsMTEuMDEzLDE0LjU1NSwxOS4zNywyOC42NjgsMjQuMjQxYTEwMi4wMzMsMTAyLjAzMywwLDAsMCwxOS44MTMsMy45ODRjNS40NzkuNzIsMTAuNjI2LDEuMzg0LDE1LjgyOSwzLjEsNi4zNjQsMi4xLDEwLjQ2LDUuMjU3LDEyLjg0LDkuODUxdjkuODUxYy0zLjcwOCw3LjUyNy0xMy43ODEsMTIuMzQyLTI1Ljc5MSwxMi4zNDItMTQuMzM0LDAtMjUuOTU2LTYuOTE4LTMxLjkzMy0xOS4wMzlsLS43Mi0xLjQ5NEw0MTUuMDI2LDI4MC45bC41NTMsMS40MzljNy45MTUsMTkuNDI2LDI5LjYwOSwzMi4wNDQsNTUuMjg5LDMyLjA0NCwyMy42MzIsMCw0NC42MDgtMTEuNCw1Mi4zLTI4LjQ0N2wuMTY2LTI1LjktLjE2Ni0uNjY0Yy00Ljg3LTExLjAxNC0xNS4yMTktMTkuNjQ3LTI4Ljk0NC0yNC4yNDEtNy42OTMtMi43MTItMTQuMzM1LTMuNi0yMC43LTQuNDI3YTgzLjc3Nyw4My43NzcsMCwwLDEtMTQuODMyLTIuODc4Yy02LjMxLTEuOTM3LTEwLjQtNS4wOTItMTIuNjE5LTkuNjN2LTguNDEyQzQ0OS40NSwyMDIuNDI3LDQ1OC45NjksMTk3LjY2Nyw0NzAuMzE1LDE5Ny42NjdaTTI4Ny41NjgsMzExLjM0NGgyNi4wNjd2LTY4LjRIMjg3LjU2OFptMzUyLjI2Ni01My4zYy0yLjkzMy02LjI1NC04LjMtMTIuMDEtMTUuNDQxLTE2LjcxNEEzNy45OSwzNy45OSwwLDAsMCw2MzcuNCwyMjZsLjE2Ni0yNS4zNDctLjE2Ni0uNjY0QzYzMC4wMzgsMTg0LDYxMC42NjcsMTczLjI2LDU4OS4yNSwxNzMuMjZTNTQ4LjQ2MSwxODQsNTQxLjEsMTk5Ljk5MmwtLjE2NiwyNS4zNDcuMTY2LjY2NGEzOS42NDMsMzkuNjQzLDAsMCwwLDEzLjAwNiwxNS4zMzFjLTcuMiw0LjctMTIuNTA4LDEwLjQ2LTE1LjQ0MSwxNi43MTRsLS4xNjYsMjguODg5LjE2Ni43MmM3LjU4MiwxNS45OTQsMjcuODkzLDI2LjczMSw1MC41ODUsMjYuNzMxczQzLjA1Ny0xMC43MzcsNTAuNTg0LTI2LjczMWwuMTY2LTI4Ljg5Wm0tNzMuMjItNTAuODA2YzMuNi02LjMxLDEyLjU2My0xMC41MTYsMjIuNTgtMTAuNTE2czE5LjAzOCw0LjIwNiwyMi42MzYsMTAuNTE2djEzLjcyNWMtMy41NDIsNi4yLTEyLjU2MywxMC4zNDktMjIuNjM2LDEwLjM0OXMtMTkuMDk0LTQuMTUtMjIuNTgtMTAuMzQ5Wm00Ny4zMTksNzIuMTY5Yy0zLjc2NCw2LjY0MS0xMy4zMzgsMTAuOS0yNC42ODMsMTAuOS0xMS4xMjUsMC0yMC45NzYtNC4zNzItMjQuNjg0LTEwLjlWMjYzLjI1YzMuNzA4LTYuMzA5LDEzLjUtMTAuNTE1LDI0LjY4NC0xMC41MTUsMTEuMzQ1LDAsMjAuOTE5LDQuMTUsMjQuNjgzLDEwLjUxNVpNMzc2LjQsMjY1Ljk2MmwtNTkuODI3LTg5LjcxM2gtMjl2NDAuNjIzaDI2LjUxdi4zODdsNjIuNTM5LDk0LjA4NUg0MDIuM1YxNzYuMjQ5SDM3Ni40WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU51dHJpdGlvbml4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTg4IDguMVMyMjEuNC0uMSAyMDkgMTEyLjVjMCAwIDE5LjEtNzQuOSAxMDMtNDAuNiAwIDAtMTcuNyA3NC04OCA1NiAwIDAgMTQuNi01NC42IDY2LjEtNTYuNiAwIDAtMzkuOS0xMC4zLTgyLjEgNDguOCAwIDAtMTkuOC05NC41LTkzLjYtOTkuNyAwIDAgNzUuMiAxOS40IDc3LjYgMTA3LjUgMCAuMS0xMDYuNCA3LTEwNC0xMTkuOHptMzEyIDMxNS42YzAgNDguNS05LjcgOTUuMy0zMiAxMzIuMy00Mi4yIDMwLjktMTA1IDQ4LTE2OCA0OC02Mi45IDAtMTI1LjgtMTcuMS0xNjgtNDhDOS43IDQxOSAwIDM3Mi4yIDAgMzIzLjcgMCAyNzUuMyAxNy43IDIyOSA0MCAxOTJjNDIuMi0zMC45IDk3LjEtNDguNiAxNjAtNDguNiA2MyAwIDExNy44IDE3LjYgMTYwIDQ4LjYgMjIuMyAzNyA0MCA4My4zIDQwIDEzMS43ek0xMjAgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHpNMTkyIDQyOGMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6bTAtNjYuMmMwLTE1LjUtMTIuNS0yOC0yOC0yOHMtMjggMTIuNS0yOCAyOCAxMi41IDI4IDI4IDI4IDI4LTEyLjUgMjgtMjh6TTI2NCA0MjhjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4em0wLTY2LjJjMC0xNS41LTEyLjUtMjgtMjgtMjhzLTI4IDEyLjUtMjggMjggMTIuNSAyOCAyOCAyOCAyOC0xMi41IDI4LTI4ek0zMzYgNDI4YzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMC02Ni4yYzAtMTUuNS0xMi41LTI4LTI4LTI4cy0yOCAxMi41LTI4IDI4IDEyLjUgMjggMjggMjggMjgtMTIuNSAyOC0yOHptMjQtMzkuNmMtNC44LTIyLjMtNy40LTM2LjktMTYtNTYtMzguOC0xOS45LTkwLjUtMzItMTQ0LTMyUzk0LjggMTgwLjEgNTYgMjAwYy04LjggMTkuNS0xMS4yIDMzLjktMTYgNTYgNDIuMi03LjkgOTguNy0xNC44IDE2MC0xNC44czExNy44IDYuOSAxNjAgMTQuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPY3RvcHVzRGVwbG95IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS42LDM0OS4yYy00NS44OTEtMzkuMDktMzYuNjctNzcuODc3LTE2LjA5NS0xMjguMTFDNDc1LjE2LDEzNC4wNCw0MTUuOTY3LDM0LjE0LDMyOS45Myw4LjMsMjM3LjA0LTE5LjYsMTM0LjI1MiwyNC4zNDEsOTkuNjc3LDExNy4xNDdhMTgwLjg2MiwxODAuODYyLDAsMCwwLTEwLjk4OCw3My41NDRjMS43MzMsMjkuNTQzLDE0LjcxNyw1Mi45NywyNC4wOSw4MC4zLDE3LjIsNTAuMTYxLTI4LjEsOTIuNzQzLTY2LjY2MiwxMTcuNTgyLTQ2LjgwNiwzMC4yLTM2LjMxOSwzOS44NTctOC40MjgsNDEuODU4LDIzLjM3OCwxLjY4LDQ0LjQ3OC00LjU0OCw2NS4yNjUtMTUuMDQ1LDkuMi00LjY0Nyw0MC42ODctMTguOTMxLDQ1LjEzLTI4LjU4OEMxMzUuOSw0MTMuMzg4LDExMS4xMjIsNDU5LjUsMTI2LjYyMSw0ODguOWMxOS4xLDM2LjIyOSw2Ny4xMTItMzEuNzcsNzYuNzA5LTQ1LjgxMiw4LjU5MS0xMi41NzIsNDIuOTYzLTgxLjI3OSw2My42MjctNDYuOTI2LDE4Ljg2NSwzMS4zNjEsOC42LDc2LjM5MSwzNS43MzgsMTA0LjYyMiwzMi44NTQsMzQuMiw1MS4xNTUtMTguMzEyLDUxLjQxMi00NC4yMjEuMTYzLTE2LjQxMS02LjEtOTUuODUyLDI5LjktNTkuOTQ0QzQwNS40MjgsNDE4LDQzNi45MTIsNDY3LjgsNDcyLjU2OCw0NjMuNjQyYzM4LjczNi00LjUxNi0yMi4xMjMtNjcuOTY3LTI4LjI2Mi03OC42OTUsNS4zOTMsNC4yNzksNTMuNjY1LDM0LjEyOCw1My44MTgsOS41MkM0OTguMjM0LDM3NS42NzgsNDY4LjAzOSwzNTkuOCw0NTUuNiwzNDkuMlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPZG5va2xhc3NuaWtpU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NC4yIDE3Ny4xYzAtMjIuMSAxNy45LTQwIDM5LjgtNDBzMzkuOCAxNy45IDM5LjggNDBjMCAyMi0xNy45IDM5LjgtMzkuOCAzOS44cy0zOS44LTE3LjktMzkuOC0zOS44ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS0zMDUuMSA5Ny4xYzAgNDQuNiAzNi40IDgwLjkgODEuMSA4MC45czgxLjEtMzYuMiA4MS4xLTgwLjljMC00NC44LTM2LjQtODEuMS04MS4xLTgxLjFzLTgxLjEgMzYuMi04MS4xIDgxLjF6bTE3NC41IDkwLjdjLTQuNi05LjEtMTcuMy0xNi44LTM0LjEtMy42IDAgMC0yMi43IDE4LTU5LjMgMThzLTU5LjMtMTgtNTkuMy0xOGMtMTYuOC0xMy4yLTI5LjUtNS41LTM0LjEgMy42LTcuOSAxNi4xIDEuMSAyMy43IDIxLjQgMzcgMTcuMyAxMS4xIDQxLjIgMTUuMiA1Ni42IDE2LjhsLTEyLjkgMTIuOWMtMTguMiAxOC0zNS41IDM1LjUtNDcuNyA0Ny43LTE3LjYgMTcuNiAxMC43IDQ1LjggMjguNCAyOC42bDQ3LjctNDcuOWMxOC4yIDE4LjIgMzUuNyAzNS43IDQ3LjcgNDcuOSAxNy42IDE3LjIgNDYtMTAuNyAyOC42LTI4LjZsLTQ3LjctNDcuNy0xMy0xMi45YzE1LjUtMS42IDM5LjEtNS45IDU2LjItMTYuOCAyMC40LTEzLjMgMjkuMy0yMSAyMS41LTM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9kbm9rbGFzc25pa2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc1LjEgMzM0Yy0yNy40IDE3LjQtNjUuMSAyNC4zLTkwIDI2LjlsMjAuOSAyMC42IDc2LjMgNzYuM2MyNy45IDI4LjYtMTcuNSA3My4zLTQ1LjcgNDUuNy0xOS4xLTE5LjQtNDcuMS00Ny40LTc2LjMtNzYuNkw4NCA1MDMuNGMtMjguMiAyNy41LTczLjYtMTcuNi00NS40LTQ1LjcgMTkuNC0xOS40IDQ3LjEtNDcuNCA3Ni4zLTc2LjNsMjAuNi0yMC42Yy0yNC42LTIuNi02Mi45LTkuMS05MC42LTI2LjktMzIuNi0yMS00Ni45LTMzLjMtMzQuMy01OSA3LjQtMTQuNiAyNy43LTI2LjkgNTQuNi01LjcgMCAwIDM2LjMgMjguOSA5NC45IDI4LjlzOTQuOS0yOC45IDk0LjktMjguOWMyNi45LTIxLjEgNDcuMS04LjkgNTQuNiA1LjcgMTIuNCAyNS43LTEuOSAzOC0zNC41IDU5LjF6TTMwLjMgMTI5LjdDMzAuMyA1OCA4OC42IDAgMTYwIDBzMTI5LjcgNTggMTI5LjcgMTI5LjdjMCA3MS40LTU4LjMgMTI5LjQtMTI5LjcgMTI5LjRzLTEyOS43LTU4LTEyOS43LTEyOS40em02NiAwYzAgMzUuMSAyOC42IDYzLjcgNjMuNyA2My43czYzLjctMjguNiA2My43LTYzLjdjMC0zNS40LTI4LjYtNjQtNjMuNy02NHMtNjMuNyAyOC42LTYzLjcgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT2xkUmVwdWJsaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1Ljc2IDEwLjIzYzcuNS0uMzEgMTUtLjI4IDIyLjUtLjA5IDMuNjEuMTQgNy4yLjQgMTAuNzkuNzMgNC45Mi4yNyA5Ljc5IDEuMDMgMTQuNjcgMS42MiAyLjkzLjQzIDUuODMuOTggOC43NSAxLjQ2IDcuOSAxLjMzIDE1LjY3IDMuMjggMjMuMzkgNS40IDEyLjI0IDMuNDcgMjQuMTkgNy45MiAzNS43NiAxMy4yMSAyNi41NiAxMi4yNCA1MC45NCAyOS4yMSA3MS42MyA0OS44OCAyMC4wMyAyMC4wOSAzNi43MiA0My41NSA0OC44OSA2OS4xOSAxLjEzIDIuNTkgMi40NCA1LjEgMy40NyA3Ljc0IDIuODEgNi40MyA1LjM5IDEyLjk3IDcuNTggMTkuNjMgNC4xNCAxMi4zMyA3LjM0IDI0Ljk5IDkuNDIgMzcuODMuNTcgMy4xNCAxLjA0IDYuMyAxLjQgOS40Ny41NSAzLjgzLjk0IDcuNjkgMS4xOCAxMS41Ni44MyA4LjM0Ljg0IDE2LjczLjc3IDI1LjEtLjA3IDQuOTctLjI2IDkuOTQtLjc1IDE0Ljg5LS4yNCAzLjM4LS41MSA2Ljc2LS45OCAxMC4xMi0uMzkgMi43Mi0uNjMgNS40Ni0xLjExIDguMTctLjkgNS4xNS0xLjcgMTAuMzEtMi44NyAxNS40MS00LjEgMTguNS0xMC4zIDM2LjU1LTE4LjUxIDUzLjYzLTE1Ljc3IDMyLjgzLTM4LjgzIDYyLjE3LTY3LjEyIDg1LjEyYTI0Ni41MDMgMjQ2LjUwMyAwIDAgMS01Ni45MSAzNC44NmMtNi4yMSAyLjY4LTEyLjQ2IDUuMjUtMTguODcgNy40MS0zLjUxIDEuMTYtNy4wMSAyLjM4LTEwLjU3IDMuMzktNi42MiAxLjg4LTEzLjI5IDMuNjQtMjAuMDQgNS00LjY2LjkxLTkuMzQgMS43My0xNC4wMyAyLjQ4LTUuMjUuNjYtMTAuNSAxLjQ0LTE1Ljc5IDEuNzQtNi42OS42Ni0xMy40MS44NC0yMC4xMi44MS02LjgyLjAzLTEzLjY1LS4xMi0yMC40NS0uNzktMy4yOS0uMjMtNi41Ny0uNS05LjgzLS45NS0yLjcyLS4zOS01LjQ2LS42My04LjE3LTEuMTEtNC4xMi0uNzItOC4yNS0xLjM3LTEyLjM1LTIuMjItNC4yNS0uOTQtOC40OS0xLjg5LTEyLjY5LTMuMDItOC42My0yLjE3LTE3LjA4LTUuMDEtMjUuNDEtOC4xMy0xMC40OS00LjEyLTIwLjc5LTguNzUtMzAuNjQtMTQuMjUtMi4xNC0xLjE1LTQuMjgtMi4yOS02LjM1LTMuNTctMTEuMjItNi41OC0yMS44Ni0xNC4xLTMxLjkyLTIyLjM0LTM0LjY4LTI4LjQxLTYxLjQxLTY2LjQzLTc2LjM1LTEwOC43LTMuMDktOC43NC01LjcxLTE3LjY1LTcuOC0yNi42OC0xLjQ4LTYuMTYtMi41Mi0xMi40Mi0zLjU4LTE4LjY2LS40LTIuMzUtLjYxLTQuNzMtLjk1LTcuMDktLjYtMy45Ni0uNzUtNy45Ni0xLjE3LTExLjk0LS44LTkuNDctLjcxLTE4Ljk5LS41MS0yOC40OS4xNC0zLjUxLjM0LTcuMDEuNy0xMC41MS4zMS0zLjE3LjQ2LTYuMzcuOTItOS41Mi40MS0yLjgxLjY1LTUuNjUgMS4xNi04LjQ0LjctMy45NCAxLjMtNy45IDIuMTItMTEuODIgMy40My0xNi41MiA4LjQ3LTMyLjczIDE1LjI2LTQ4LjE4IDEuMTUtMi45MiAyLjU5LTUuNzIgMy44Ni04LjU5IDguMDUtMTYuNzEgMTcuOS0zMi41NiAyOS40OS00Ny4wNiAyMC0yNS4zOCA0NS4xLTQ2LjY4IDczLjI3LTYyLjQ3IDcuNS00LjE1IDE1LjE2LTguMDUgMjMuMDctMTEuMzcgMTUuODItNi44OCAzMi40MS0xMS45NSA0OS4zMS0xNS4zOCAzLjUxLS42NyA3LjA0LTEuMjQgMTAuNTYtMS44NSAyLjYyLS40NyA1LjI4LS43IDcuOTEtMS4wOCAzLjUzLS41MyA3LjEtLjY4IDEwLjY1LTEuMDQgMi40Ni0uMjQgNC45MS0uMzYgNy4zNi0uNTFtOC42NCAyNC40MWMtOS4yMy4xLTE4LjQzLjk5LTI3LjU3IDIuMjMtNy4zIDEuMDgtMTQuNTMgMi42LTIxLjcxIDQuMy0xMy45MSAzLjUtMjcuNDggOC4zNC00MC40NiAxNC40Mi0xMC40NiA0Ljk5LTIwLjU5IDEwLjctMzAuMTggMTcuMjItNC4xOCAyLjkyLTguNCA1LjgtMTIuMzQgOS4wMy01LjA4IDMuOTctOS45OCA4LjE3LTE0LjY4IDEyLjU5LTIuNTEgMi4yNC00LjgxIDQuNy03LjIyIDcuMDYtMjguMjIgMjguNzktNDguNDQgNjUuMzktNTcuNSAxMDQuNjktMi4wNCA4LjQ0LTMuNTQgMTcuMDItNC40NCAyNS42NS0xLjEgOC44OS0xLjQ0IDE3Ljg1LTEuNDEgMjYuOC4xMSA3LjE0LjM4IDE0LjI4IDEuMjIgMjEuMzcuNjIgNy4xMiAxLjg3IDE0LjE2IDMuMiAyMS4xOCAxLjA3IDQuNjUgMi4wMyA5LjMyIDMuMzMgMTMuOTEgNi4yOSAyMy4zOCAxNi41IDQ1LjcgMzAuMDcgNjUuNzUgOC42NCAxMi45OCAxOC43OCAyNC45MyAyOS45OCAzNS43NyAxNi4yOCAxNS44MiAzNS4wNSAyOS4wNCA1NS4zNCAzOS4yMiA3LjI4IDMuNTIgMTQuNjYgNi44NyAyMi4yNyA5LjYzIDUuMDQgMS43NiAxMC4wNiAzLjU3IDE1LjIyIDQuOTggMTEuMjYgMy4yMyAyMi43NyA1LjYgMzQuMzkgNy4wNiAyLjkxLjI5IDUuODEuNjEgOC43Mi45IDEzLjgyIDEuMDggMjcuNzQgMSA0MS41NC0uNDMgNC40NS0uNiA4LjkyLS45OSAxMy4zNS0xLjc4IDMuNjMtLjY3IDcuMjgtMS4yNSAxMC44Ny0yLjEgNC4xMy0uOTggOC4yOC0xLjkxIDEyLjM2LTMuMDcgMjYuNS03LjM0IDUxLjU4LTE5LjcxIDczLjU4LTM2LjIgMTUuNzgtMTEuODIgMjkuOTYtMjUuNzYgNDIuMTItNDEuMjggMy4yNi00LjAyIDYuMTctOC4zMSA5LjEzLTEyLjU1IDMuMzktNS4wNiA2LjU4LTEwLjI1IDkuNi0xNS41NCAyLjQtNC40NCA0Ljc0LTguOTEgNi45NS0xMy40NSA1LjY5LTEyLjA1IDEwLjI4LTI0LjYyIDEzLjc1LTM3LjQ5IDIuNTktMTAuMDEgNC43NS0yMC4xNiA1LjktMzAuNDUgMS43Ny0xMy40NyAxLjk0LTI3LjEgMS4yOS00MC42NS0uMjktMy44OS0uNjctNy43Ny0xLTExLjY2LTIuMjMtMTkuMDgtNi43OS0zNy45MS0xMy44Mi01NS44LTUuOTUtMTUuMTMtMTMuNTMtMjkuNjMtMjIuNjEtNDMuMTMtMTIuNjktMTguOC0yOC4yNC0zNS42OC00NS45Ny00OS44My0yNS4wNS0yMC01NC40Ny0zNC41NS04NS42NS00Mi4wOC03Ljc4LTEuOTMtMTUuNjktMy4zNC0yMy42My00LjQ1LTMuOTEtLjU5LTcuODUtLjgyLTExLjc3LTEuMjQtNy4zOS0uNTctMTQuODEtLjcyLTIyLjIyLS41OHpNMTM5LjI2IDgzLjUzYzEzLjMtOC44OSAyOC4wOC0xNS4zOCA0My4zLTIwLjE4LTMuMTcgMS43Ny02LjQ0IDMuMzgtOS41MyA1LjI5LTExLjIxIDYuNjgtMjEuNTIgMTQuOS0zMC4zOCAyNC40OS02LjggNy40My0xMi43NiAxNS43My0xNy4wMSAyNC44OS0zLjI5IDYuODYtNS42NCAxNC4xOS02Ljg2IDIxLjcxLS45MyA0Ljg1LTEuMyA5LjgxLTEuMTcgMTQuNzUuMTMgMTMuNjYgNC40NCAyNy4wOCAxMS4yOSAzOC44MiA1LjkyIDEwLjIyIDEzLjYzIDE5LjMzIDIyLjM2IDI3LjI2IDQuODUgNC4zNiAxMC4yNCA4LjA5IDE0Ljk1IDEyLjYgMi4yNiAyLjE5IDQuNDkgNC40MiA2LjQzIDYuOTEgMi42MiAzLjMxIDQuODkgNi45OSA1Ljk5IDExLjEuOSAzLjAyLjY2IDYuMi42OSA5LjMxLjAyIDQuMS0uMDQgOC4yLjAzIDEyLjMuMTQgMy41NC0uMDIgNy4wOS4xMSAxMC42My4wOCAyLjM4LjAyIDQuNzYuMDUgNy4xNC4xNiA1Ljc3LjA2IDExLjUzLjE1IDE3LjMuMTEgMi45MS4wMiA1LjgyLjEzIDguNzQuMDMgMS42My4xMyAzLjI4LS4wMyA0LjkxLS45MS4xMi0xLjgyLjE4LTIuNzMuMTYtMTAuOTkgMC0yMS44OC0yLjYzLTMxLjk1LTYuOTMtNi0yLjctMTEuODEtNS44OS0xNy4wOS05LjgzLTUuNzUtNC4xOS0xMS4wOS04Ljk2LTE1Ljc5LTE0LjMxLTYuNTMtNy4yNC0xMS45OC0xNS4zOS0xNi42Mi0yMy45NS0xLjA3LTIuMDMtMi4yNC00LjAyLTMuMTgtNi4xMi0xLjE2LTIuNjQtMi42Mi01LjE0LTMuNjctNy44Mi00LjA1LTkuNjgtNi41Ny0xOS45NC04LjA4LTMwLjMxLS40OS00LjQ0LTEuMDktOC44OC0xLjItMTMuMzUtLjctMTUuNzMuODQtMzEuNTUgNC42Ny00Ni44MiAyLjEyLTguMTUgNC43Ny0xNi4xOCA4LjMxLTIzLjgzIDYuMzItMTQuMiAxNS4zNC0yNy4xOCAyNi4zLTM4LjE5IDYuMjgtNi4yIDEzLjEzLTExLjg0IDIwLjUzLTE2LjY3em0xNzUuMzctMjAuMTJjMi43NC43NCA1LjQxIDEuNzQgOC4wOSAyLjY4IDYuMzYgMi4zMyAxMi42OCA0Ljg0IDE4LjcxIDcuOTYgMTMuMTEgNi40NCAyNS4zMSAxNC44MSAzNS44MiAyNC45NyAxMC4yIDkuOTUgMTguNzQgMjEuNiAyNS4xNCAzNC4zNCAxLjI4IDIuNzUgMi42NCA1LjQ2IDMuODEgOC4yNiA2LjMxIDE1LjEgMTAgMzEuMjYgMTEuMjMgNDcuNTcuNDEgNC41NC40NCA5LjA5LjQ1IDEzLjY0LjA3IDExLjY0LTEuNDkgMjMuMjUtNC4zIDM0LjUzLTEuOTcgNy4yNy00LjM1IDE0LjQ5LTcuODYgMjEuMTgtMy4xOCA2LjY0LTYuNjggMTMuMTYtMTAuODQgMTkuMjQtNi45NCAxMC40Ny0xNS42IDE5Ljg3LTI1LjgyIDI3LjIyLTEwLjQ4IDcuNjQtMjIuNjQgMTMuMDItMzUuNCAxNS4zOC0zLjUxLjY5LTcuMDggMS4wOC0xMC42NiAxLjIxLTEuODUuMDYtMy43Mi4xNi01LjU2LS4xLS4yOC0yLjE1IDAtNC4zMS0uMDEtNi40Ni0uMDMtMy43My4xNC03LjQ1LjEtMTEuMTcuMTktNy4wMi4wMi0xNC4wNS4yMS0yMS4wNy4wMy0yLjM4LS4wMy00Ljc2LjAzLTcuMTQuMTctNS4wNy0uMDQtMTAuMTQuMTQtMTUuMjEuMS0yLjk5LS4yNC02LjA0LjUxLTguOTYuNjYtMi41IDEuNzgtNC44NiAzLjA5LTcuMDggNC40Ni03LjMxIDExLjA2LTEyLjk2IDE3LjY4LTE4LjI2IDUuMzgtNC4xOCAxMC40Ny04Ljc3IDE1LjAyLTEzLjg0IDcuNjgtOC4zNyAxNC4xNy0xNy44OCAxOC43OC0yOC4yNyAyLjUtNS45MyA0LjUyLTEyLjEgNS41NS0xOC40Ni44Ni00LjM3IDEuMDYtOC44MyAxLjAxLTEzLjI3LS4wMi03Ljg1LTEuNC0xNS42NS0zLjY0LTIzLjE3LTEuNzUtNS43My00LjI3LTExLjE4LTcuMDktMTYuNDUtMy44Ny02LjkzLTguNjUtMTMuMzEtMTMuOTYtMTkuMi05Ljk0LTEwLjg1LTIxLjc1LTE5Ljk0LTM0LjYtMjcuMS0xLjg1LTEuMDItMy44NC0xLjgyLTUuNjMtMi45N3ptLTEwMC44IDU4LjQ1Yy45OC0xLjE4IDEuOTktMi4zMyAzLjEyLTMuMzgtLjYxLjkzLTEuMjcgMS44MS0xLjk1IDIuNjgtMy4xIDMuODgtNS41NCA4LjMxLTcuMDMgMTMuMDYtLjg3IDMuMjctMS42OCA2LjYtMS43MyAxMC0uMDcgMi41Mi0uMDggNS4wNy4zMiA3LjU3IDEuMTMgNy42MyA0LjMzIDE0Ljg1IDguNzcgMjEuMTIgMiAyLjcgNC4yNSA1LjI3IDYuOTIgNy4zMyAxLjYyIDEuMjcgMy41MyAyLjA5IDUuMzQgMy4wNSAzLjExIDEuNjggNi4zMiAzLjIzIDkuMDcgNS40OCAyLjY3IDIuMDkgNC41NSA1LjMzIDQuNCA4Ljc5LS4wMSA3My42NyAwIDE0Ny4zNC0uMDEgMjIxLjAyIDAgMS4zNS0uMDggMi43LjA0IDQuMDQuMTMgMS40OC44MiAyLjgzIDEuNDcgNC4xNS44NiAxLjY2IDEuNzggMy4zNCAzLjE4IDQuNjIuODUuNzcgMS45NyAxLjQgMy4xNSAxLjI0IDEuNS0uMiAyLjY2LTEuMzUgMy40NS0yLjU3Ljk2LTEuNTEgMS42OC0zLjE2IDIuMjgtNC44NS43Ni0yLjEzLjQ0LTQuNDIuNTQtNi42My4xNC00LjAzLS4wMi04LjA2LjE0LTEyLjA5LjAzLTUuODkuMDMtMTEuNzcuMDYtMTcuNjYuMTQtMy42Mi4wMy03LjI0LjExLTEwLjg2LjE1LTQuMDMtLjAyLTguMDYuMTQtMTIuMDkuMDMtNS45OS4wMy0xMS45OC4wNy0xNy45Ny4xNC0zLjYyLjAyLTcuMjQuMTEtMTAuODYuMTQtMy45My0uMDItNy44Ni4xNC0xMS43OC4wMy01Ljk5LjAzLTExLjk4LjA2LTE3Ljk3LjE2LTMuOTQtLjAxLTcuODguMTktMTEuODIuMjkgMS40NC4xMyAyLjkyLjIyIDQuMzguMTkgMy42MS40MiA3LjIzLjc2IDEwLjg0LjMyIDMuNDQuNDQgNi44OS44NiAxMC4zMi4zNyAzLjEuNTEgNi4yMi45NSA5LjMxLjU3IDQuMDkuODcgOC4yMSAxLjU0IDEyLjI5IDEuNDYgOS4wNCAyLjgzIDE4LjExIDUuMDkgMjYuOTkgMS4xMyA0LjgyIDIuNCA5LjYxIDQgMTQuMyAyLjU0IDcuOSA1LjcyIDE1LjY3IDEwLjMxIDIyLjYyIDEuNzMgMi42NCAzLjg3IDQuOTggNi4xIDcuMjEuMjcuMjUuNTUuNTEuODguNzEuNi4yNSAxLjMxLS4wNyAxLjctLjU3LjcxLS44OCAxLjE3LTEuOTQgMS43LTIuOTMgNC4wNS03LjggOC4xOC0xNS41NiAxMi4zNC0yMy4zMS43LTEuMzEgMS40NC0yLjYyIDIuNTYtMy42MSAxLjc1LTEuNTcgMy44NC0yLjY5IDUuOTgtMy42MyAyLjg4LTEuMjIgNS45LTIuMTkgOS4wMy0yLjQyIDYuNTgtLjYyIDEzLjExLjc1IDE5LjU2IDEuODUgMy42OS41OCA3LjQgMS4xNyAxMS4xMyAxLjQxIDMuNzQuMSA3LjQ4LjA1IDExLjIxLS4yOCA4LjU1LS45MiAxNi45OS0yLjk2IDI0Ljk0LTYuMjUgNS4zLTIuMjQgMTAuNDYtNC44MyAxNS4zMS03LjkzIDExLjQ2LTcuMjEgMjEuNDYtMTYuNTcgMzAuMDQtMjcuMDEgMS4xNy0xLjQyIDIuMjUtMi45IDMuNDYtNC4yOC0xLjIgMy4yNC0yLjY3IDYuMzctNC4xNiA5LjQ4LTEuMjUgMi45LTIuODQgNS42MS00LjI3IDguNDItNS4xNiA5LjYzLTExLjAyIDE4LjkxLTE3Ljc1IDI3LjUyLTQuMDMgNS4yMS04LjUzIDEwLjA1LTEzLjMzIDE0LjU3LTYuNjQgNi4wNS0xNC4wNyAxMS4zNy0yMi40MyAxNC43Ni04LjIxIDMuMzctMTcuMzEgNC42My0yNi4wOSAzLjI5LTMuNTYtLjU4LTcuMDEtMS42OS0xMC40MS0yLjg4LTIuNzktLjk3LTUuMzktMi4zOC04LjAzLTMuNjktMy40My0xLjcxLTYuNjQtMy44MS05LjcxLTYuMDggMi43MSAzLjA2IDUuNjkgNS44NiA4LjcgOC42MSA0LjI3IDMuNzYgOC43NCA3LjMxIDEzLjYzIDEwLjIzIDMuOTggMi40NSA4LjI5IDQuNCAxMi44NCA1LjUxIDEuNDYuMzcgMi45Ni40NiA0LjQ1LjYtMS4yNSAxLjEtMi42MyAyLjA0LTMuOTkgMi45OC05LjYxIDYuNTQtMjAuMDEgMTEuODYtMzAuNjkgMTYuNDMtMjAuODYgOC43LTQzLjE3IDEzLjk3LTY1Ljc0IDE1LjM0LTQuNjYuMjQtOS4zMi4zNi0xMy45OC4zNi00Ljk4LS4xMS05Ljk3LS4xMy0xNC45Mi0uNjUtMTEuMi0uNzYtMjIuMjktMi43My0zMy4xNy01LjQzLTEwLjM1LTIuNzEtMjAuNTUtNi4xMi0zMC4zLTEwLjU1LTguNzEtMy44Ni0xNy4xMi04LjQyLTI0Ljk5LTEzLjc5LTEuODMtMS4zMS0zLjc0LTIuNTMtNS4zNy00LjA4IDYuNi0xLjE5IDEzLjAzLTMuMzkgMTguOTktNi40OCA1Ljc0LTIuODYgMTAuOTktNi42NiAxNS42My0xMS4wNyAyLjI0LTIuMTkgNC4yOS00LjU5IDYuMTktNy4wOS0zLjQzIDIuMTMtNi45MyA0LjE1LTEwLjYyIDUuNzgtNC40MSAyLjE2LTkuMDcgMy43Ny0xMy44MSA1LjAyLTUuNzMgMS41Mi0xMS43NCAxLjczLTE3LjYxIDEuMTQtOC4xMy0uOTUtMTUuODYtNC4yNy0yMi41MS04Ljk4LTQuMzItMi45NC04LjIyLTYuNDMtMTEuOTYtMTAuMDYtOS45My0xMC4xNi0xOC4yLTIxLjgxLTI1LjY2LTMzLjg2LTMuOTQtNi4yNy03LjUzLTEyLjc1LTExLjEyLTE5LjIyLTEuMDUtMi4wNC0yLjE1LTQuMDUtMy4xOC02LjEgMi44NSAyLjkyIDUuNTcgNS45NyA4LjQzIDguODggOC45OSA4Ljk3IDE4LjU2IDE3LjQ0IDI5LjE2IDI0LjQ4IDcuNTUgNC45IDE1LjY3IDkuMjMgMjQuNTYgMTEuMDMgMy4xMS43MyA2LjMyLjQ3IDkuNDcuODEgMi43Ny4yOCA1LjU2LjIgOC4zNC4zIDUuMDUuMDYgMTAuMTEuMDQgMTUuMTYtLjE2IDMuNjUtLjE2IDcuMjctLjY2IDEwLjg5LTEuMDkgMi4wNy0uMjUgNC4xMS0uNzEgNi4xNC0xLjIgMy44OC0uOTUgOC4xMS0uOTYgMTEuODMuNjEgNC43NiAxLjg1IDguNDQgNS42NCAxMS4zOCA5LjcxIDIuMTYgMy4wMiA0LjA2IDYuMjIgNS42NiA5LjU4IDEuMTYgMi40MyAyLjQ2IDQuNzkgMy41NSA3LjI2IDEgMi4yNCAyLjE1IDQuNDIgMy40MiA2LjUyLjY3IDEuMDIgMS40IDIuMTUgMi42MiAyLjU1IDEuMDYtLjc1IDEuNzEtMS45MSAyLjI4LTMuMDMgMi4xLTQuMTYgMy40Mi04LjY1IDQuODktMTMuMDUgMi4wMi02LjU5IDMuNzgtMTMuMjcgNS4xOS0yMC4wMiAyLjIxLTkuMjUgMy4yNS0xOC43MiA0LjU0LTI4LjEzLjU2LTMuOTguODMtNy45OSAxLjMxLTExLjk3Ljg3LTEwLjY0IDEuOS0yMS4yNyAyLjI0LTMxLjk0LjA4LTEuODYuMjQtMy43MS4yNS01LjU3LjAxLTQuMzUuMjUtOC42OS4yMi0xMy4wMy0uMDEtMi4zOC0uMDEtNC43NiAwLTcuMTMuMDUtNS4wNy0uMi0xMC4xNC0uMjItMTUuMjEtLjItNi42MS0uNzEtMTMuMi0xLjI5LTE5Ljc4LS43My01Ljg4LTEuNTUtMTEuNzgtMy4xMi0xNy41MS0yLjA1LTcuNzUtNS41OS0xNS4wMy05LjgtMjEuODItMy4xNi01LjA3LTYuNzktOS44OC0xMS4wOS0xNC4wMy0zLjg4LTMuODYtOC41OC03LjA4LTEzLjk0LTguNDUtMS41LS40MS0zLjA2LS40NS00LjU5LS42NC4wNy0yLjk5LjctNS45MyAxLjI2LTguODUgMS41OS03LjcxIDMuOC0xNS4zIDYuNzYtMjIuNiAxLjUyLTQuMDMgMy40MS03LjkgNS4zOS0xMS43MiAzLjQ1LTYuNTYgNy42Mi0xMi43OSAxMi40Ni0xOC40NnptMzEuMjcgMS43Yy4zNS0uMDYuNzEtLjEyIDEuMDctLjE5LjE5IDEuNzkuMDkgMy41OC4xIDUuMzd2MzguMTNjLS4wMSAxLjc0LjEzIDMuNDktLjE1IDUuMjItLjM2LS4wMy0uNzEtLjA1LTEuMDYtLjA1LS45NS0zLjc1LTEuNzItNy41NS0yLjYyLTExLjMxLS4zOC0xLjUzLS41OC0zLjA5LTEuMDctNC41OS0xLjctLjI0LTMuNDMtLjE3LTUuMTUtLjItNS4wNi0uMDEtMTAuMTMgMC0xNS4xOS0uMDEtMS42Ni0uMDEtMy4zMi4wOS00Ljk4LS4wMy0uMDMtLjM5LS4yNi0uOTEuMTYtMS4xOCAxLjI4LS42NSAyLjcyLS44OCA0LjA2LTEuMzUgMy40My0xLjE0IDYuODgtMi4xNiAxMC4zMS0zLjMxIDEuMzktLjQ4IDIuOS0uNzIgNC4xNi0xLjU0LjA0LS41Ni4wMi0xLjEzLS4wNS0xLjY4LTEuMjMtLjU1LTIuNTMtLjg3LTMuODEtMS4yOC0zLjEzLTEuMDMtNi4yOS0xLjk2LTkuNDEtMy4wMi0xLjc5LS42Mi0zLjY3LTEtNS40MS0xLjc5LS4wMy0uMzctLjA3LS43My0uMTEtMS4wOSA1LjA5LS4xOSAxMC4yLjA2IDE1LjMtLjEyIDMuMzYtLjEzIDYuNzMuMDggMTAuMDktLjA3LjEyLS4zOS4yNi0uNzcuMzctMS4xNiAxLjA4LTQuOTQgMi4zMy05LjgzIDMuMzktMTQuNzV6bTUuOTctLjJjLjM2LjA1LjcyLjEyIDEuMDguMi45OCAzLjg1IDEuNzMgNy43NiAyLjcxIDExLjYxLjM2IDEuNDIuNTYgMi44OCAxLjAzIDQuMjcgMi41My4xOCA1LjA3LS4wMSA3LjYxLjA1IDUuMTYuMTIgMTAuMzMuMTIgMTUuNDkuMDcuNzYtLjAxIDEuNTIuMDMgMi4yOC4wOC0uMDQuMzYtLjA3LjcyLS4xIDEuMDgtMS44Mi44My0zLjc4IDEuMjUtNS42NyAxLjg5LTMuNzMgMS4yMy03LjQ4IDIuMzktMTEuMjIgMy41Ny0uNTcuMTctMS4xMi40Mi0xLjY3LjY0LS4xNS41NS0uMTggMS4xMi0uMTIgMS42OS44Ny40OCAxLjgyLjgxIDIuNzcgMS4wOSA0Ljg4IDEuNTIgOS43MyAzLjE0IDE0LjYzIDQuNi4zOC4xMy43OC4yNyAxLjEzLjQ5LjQuMjcuMjMuNzkuMTUgMS4xOC0xLjY2LjEzLTMuMzEuMDMtNC45Ny4wNC01LjE3LjAxLTEwLjMzLS4wMS0xNS41LjAxLTEuNjEuMDMtMy4yMi0uMDItNC44Mi4yMS0uNTIgMS42Ny0uNzIgMy40Mi0xLjE3IDUuMTEtLjk0IDMuNTctMS41MiA3LjI0LTIuNTQgMTAuNzgtLjM2LjAxLS43MS4wMi0xLjA2LjA2LS4yOS0xLjczLS4xNS0zLjQ4LS4xNS01LjIydi0zOC4xM2MuMDItMS43OC0uMDgtMy41OC4xMS01LjM3ek02NS4wNSAxNjguMzNjMS4xMi0yLjE1IDIuMDgtNC40IDMuMzctNi40Ni0xLjgyIDcuNTYtMi45MSAxNS4yNy0zLjYyIDIzLS44IDcuNzEtLjg1IDE1LjQ5LS41NCAyMy4yMyAxLjA1IDE5Ljk0IDUuNTQgMzkuODMgMTQuMjMgNTcuODggMi45OSA1Ljk5IDYuMzUgMTEuODMgMTAuNSAxNy4xMSA2LjEyIDcuNDcgMTIuNTMgMTQuNzYgMTkuODQgMjEuMDkgNC44IDQuMSA5Ljk5IDcuNzggMTUuNTQgMTAuOCAzLjI3IDEuNjUgNi41MSAzLjM5IDkuOTQgNC42OCA1LjAxIDIuMDMgMTAuMTkgMy42MSAxNS40MiA0Ljk0IDMuODMuOTYgNy43OCAxLjQxIDExLjUyIDIuNzEgNSAxLjU3IDkuNDcgNC42MSAxMy4wMyA4LjQzIDQuOTMgNS4yMyA4LjA5IDExLjg3IDEwLjIgMTguNjcuOTkgMi45IDEuNTkgNS45MSAyLjE3IDguOTIuMTUuNzUuMjIgMS41Mi4xNiAyLjI5LTYuNSAyLjc4LTEzLjI2IDUuMDYtMjAuMjYgNi4xOC00LjExLjc4LTguMjkuOTktMTIuNDYgMS4wOC0xMC4yNS4yNC0yMC40Ny0xLjc2LTMwLjEyLTUuMTItMy43NC0xLjQyLTcuNDktMi44NS0xMS4wMy00LjcyLTguMDYtMy44NC0xNS42NC04LjctMjIuNDYtMTQuNDYtMi45Mi0yLjU1LTUuODMtNS4xMy04LjQtOC4wMy05LjE2LTkuODMtMTYuMy0yMS40MS0yMS43OS0zMy42NS0yLjM5LTUuNTUtNC42MS0xMS4xOC02LjM3LTE2Ljk2LTEuMTctMy45NC0yLjM2LTcuODktMy4yNi0xMS45MS0uNzUtMi45NC0xLjIyLTUuOTUtMS44Ny04LjkyLS40Ni0yLjE0LS42OS00LjMyLTEuMDMtNi40OC0uODUtNS40My0xLjI4LTEwLjkzLTEuMzMtMTYuNDMuMTEtNi4xOC4yNS0xMi4zNyAxLjA3LTE4LjUuNC0yLjg2LjY3LTUuNzQgMS4xNS04LjYuOTgtNS43IDIuMTQtMTEuMzcgMy43MS0xNi45MyAzLjA5LTExLjY1IDcuNDgtMjIuOTUgMTIuNjktMzMuODR6bTM2My43My02LjQ0YzEuMSAxLjY2IDEuOTEgMy40OCAyLjc4IDUuMjYgMi4xIDQuNDUgNC4yNCA4LjkgNi4wMiAxMy40OSA3LjYxIDE4Ljc2IDEyLjMgMzguNzkgMTMuMDQgNTkuMDUuMDIgMS43Ni4wNyAzLjUyLjExIDUuMjkuMTMgOS41Ny0xLjI3IDE5LjA5LTMuMTggMjguNDUtLjczIDMuNTktMS41NCA3LjE3LTIuNTggMTAuNjktNC4wNCAxNC43Mi0xMCAyOS0xOC40MSA0MS43OC04LjIxIDEyLjU3LTE5LjAxIDIzLjU1LTMxLjg0IDMxLjQxLTUuNzMgMy41OS0xMS43OSA2LjY0LTE4LjA1IDkuMTktNS43OCAyLjE5LTExLjcxIDQuMDMtMTcuOCA1LjExLTYuNCAxLjA1LTEyLjkxIDEuNTItMTkuNCAxLjIzLTcuOTItLjQ4LTE1Ljc4LTIuMDctMjMuMjEtNC44NS0xLjk0LS44LTMuOTQtMS40Ni01Ljg0LTIuMzMtLjIxLTEuNTEuMjUtMi45OS41My00LjQ2IDEuMTYtNS43NCAzLjAzLTExLjM2IDUuNy0xNi41OCAyLjM3LTQuNTEgNS41Mi04LjY1IDkuNDYtMTEuOSAyLjQzLTIuMDUgNS4yNC0zLjYxIDguMTYtNC44MyAzLjU4LTEuNSA3LjQ3LTEuOTcgMTEuMjQtMi44MyA3LjIzLTEuNzEgMTQuMzctMy45MyAyMS4xNS03IDEwLjM1LTQuNjUgMTkuNzEtMTEuMzggMjcuNjUtMTkuNDYgMS41OS0xLjYxIDMuMjMtMy4xOCA0Ljc0LTQuODcgMy4zNy0zLjc2IDYuNzEtNy41NyA5Ljg1LTExLjUzIDcuNDgtMTAuMDcgMTIuODItMjEuNTkgMTYuNzEtMzMuNDggMS41OC01LjMgMy4yMS0xMC42IDQuMjEtMTYuMDUuNjMtMi44NyAxLjA0LTUuNzggMS41Mi04LjY4Ljg3LTYuMDkgMS41OS0xMi4yMiAxLjY4LTE4LjM4LjEyLTYuNjUuMTQtMTMuMzItLjUzLTE5Ljk0LS43My03Ljk5LTEuODctMTUuOTYtMy43MS0yMy43OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuY2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjMuMyA0NDAuN2MwIDI1LjMtMjAuMyA0NS42LTQ1LjYgNDUuNnMtNDUuOC0yMC4zLTQ1LjgtNDUuNiAyMC42LTQ1LjggNDUuOC00NS44YzI1LjQgMCA0NS42IDIwLjUgNDUuNiA0NS44em0tMjUzLjktNDUuOGMtMjUuMyAwLTQ1LjYgMjAuNi00NS42IDQ1LjhzMjAuMyA0NS42IDQ1LjYgNDUuNiA0NS44LTIwLjMgNDUuOC00NS42LTIwLjUtNDUuOC00NS44LTQ1Ljh6bTI5MS43LTI3MEMxNTguOSAxMjQuOSA4MS45IDExMi4xIDAgMjUuN2MzNC40IDUxLjcgNTMuMyAxNDguOSAzNzMuMSAxNDQuMiAzMzMuMy01IDEzMCA4Ni4xIDcwLjggMTg4LjkgMTg2LjctMTY2LjcgMzE5LjQtMjMzLjkgMTcuMi0yMzMuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPcGVuaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcxLjUgNDMybC02OCAzMkM4OC41IDQ1My43IDAgMzkyLjUgMCAzMTguMmMwLTcxLjUgODIuNS0xMzEgMTkxLjctMTQ0LjN2NDNjLTcxLjUgMTIuNS0xMjQgNTMtMTI0IDEwMS4zIDAgNTEgNTguNSA5My4zIDEzNS43IDEwM3YtMzQwbDY4LTMzLjJ2Mzg0ek00NDggMjkxbC0xMzEuMy0yOC41IDM2LjgtMjAuN2MtMTkuNS0xMS41LTQzLjUtMjAtNzAtMjQuOHYtNDNjNDYuMiA1LjUgODcuNyAxOS41IDEyMC4zIDM5LjNsMzUtMTkuOEw0NDggMjkxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9wZXJhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy45IDMyLjdjLTE3MC4yIDAtMjUyLjYgMjIzLjgtMTQ3LjUgMzU1LjEgMzYuNSA0NS40IDg4LjYgNzUuNiAxNDcuNSA3NS42IDM2LjMgMCA3MC4zLTExLjEgOTkuNC0zMC40LTQzLjggMzkuMi0xMDEuOSA2My0xNjUuMyA2My0zLjkgMC04IDAtMTEuOS0uM0MxMDQuNiA0ODkuNiAwIDM4MS4xIDAgMjQ4IDAgMTExIDExMSAwIDI0OCAwaC44YzYzLjEuMyAxMjAuNyAyNC4xIDE2NC40IDYzLjEtMjktMTkuNC02My4xLTMwLjQtOTkuMy0zMC40em0xMDEuOCAzOTcuN2MtNDAuOSAyNC43LTkwLjcgMjMuNi0xMzItNS44IDU2LjItMjAuNSA5Ny43LTkxLjYgOTcuNy0xNzYuNiAwLTg0LjctNDEuMi0xNTUuOC05Ny40LTE3Ni42IDQxLjgtMjkuMiA5MS4yLTMwLjMgMTMyLjktNSAxMDUuOSA5OC43IDEwNS41IDI2NS43LTEuMiAzNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3B0aW5Nb25zdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3Mi42IDQyMS40YzUuNi05LjUgNC43LTE1LjItNS40LTExLjYtMy00LjktNy05LjUtMTEuMS0xMy44IDIuOS05LjctLjctMTQuMi0xMC44LTkuMi00LjYtMy4yLTEwLjMtNi41LTE1LjktOS4yIDAtMTUuMS0xMS42LTExLjYtMTcuNi01LjctMTAuNC0xLjUtMTguNy0uMy0yNi44IDUuNy4zLTYuNS4zLTEzIC4zLTE5LjcgMTIuNiAwIDQwLjItMTEgNDUuOS0zNi4yIDEuNC02LjggMS42LTEzLjgtLjMtMjEuOS0zLTEzLjUtMTQuMy0yMS4zLTI1LjEtMjUuNy0uOC01LjktNy42LTE0LjMtMTQuOS0xNS45cy0xMi40IDQuOS0xNC4xIDEwLjNjLTguNSAwLTE5LjIgMi44LTIxLjEgOC40LTUuNC0uNS0xMS4xLTEuNC0xNi44LTEuOSAyLjctMS45IDUuNC0zLjUgOC40LTQuNiA1LjQtOS4yIDE0LjYtMTEuNCAyNS43LTExLjZWMjU2YzE5LjUtLjUgNDMtNS45IDUzLjgtMTguMSAxMi43LTEzLjggMTQuNi0zNy4zIDEyLjQtNTUuMS0yLjQtMTcuMy05LjctMzcuNi0yNC42LTQ4LjEtOC40LTUuOS0yMS42LS44LTIyLjcgOS41LTIuMiAxOS42IDEuMiAzMC0zOC42IDI1LjEtMTAuMy0yMy44LTI0LjYtNDQuNi00Mi43LTYwQzM0MSA0OS42IDI0Mi45IDU1LjUgMTY2LjQgNzEuN2MxOS43IDQuNiA0MS4xIDguNiA1OS43IDE2LjUtMjYuMiAyLjQtNTIuNyAxMS4zLTc2LjIgMjMuMi0zMi44IDE3LTQ0IDI5LjktNTYuNyA0Mi40IDE0LjktMi4yIDI4LjktNS4xIDQzLjgtMy44LTkuNyA1LjQtMTguNCAxMi4yLTI2LjUgMjAtMjUuOC45LTIzLjgtNS4zLTI2LjItMjUuOS0xLjEtMTAuNS0xNC4zLTE1LjQtMjIuNy05LjctMjguMSAxOS45LTMzLjUgNzkuOS0xMi4yIDEwMy41IDEwLjggMTIuMiAzNS4xIDE3LjMgNTQuOSAxNy44LS4zIDEuMS0uMyAxLjktLjMgMi43IDEwLjguNSAxOS41IDIuNyAyNC42IDExLjYgMyAxLjEgNS43IDIuNyA4LjEgNC42LTUuNC41LTExLjEgMS40LTE2LjUgMS45LTMuMy02LjYtMTMuNy04LjEtMjEuMS04LjEtMS42LTUuNy02LjUtMTIuMi0xNC4xLTEwLjMtNi44IDEuOS0xNC4xIDEwLTE0LjkgMTUuOS0yMi41IDkuNS0zMC4xIDI2LjgtMjUuMSA0Ny42IDUuMyAyNC44IDMzIDM2LjIgNDUuOSAzNi4ydjE5LjdjLTYuNi01LTE0LjMtNy41LTI2LjgtNS43LTUuNS01LjUtMTcuMy0xMC4xLTE3LjMgNS43LTUuOSAyLjctMTEuNCA1LjktMTUuOSA5LjItOS44LTQuOS0xMy42LTEuNy0xMS4xIDkuMi00LjEgNC4zLTcuOCA4LjYtMTEuMSAxMy44LTEwLjItMy43LTExIDIuMi01LjQgMTEuNi0xLjEgMy41LTEuNiA3LTEuOSAxMC44LS41IDMxLjYgNDQuNiA2NCA3My41IDY1LjEgMTcuMy41IDM0LjYtOC40IDQzLTIzLjUgMTEzLjIgNC45IDIyNi43IDQuMSAzNDAuMiAwIDguMSAxNS4xIDI1LjQgMjQuMyA0Mi43IDIzLjUgMjkuMi0xLjEgNzQuMy0zMy41IDczLjUtNjUuMS4yLTMuNy0uNy03LjItMS43LTEwLjd6bS03My44LTI1NGMxLjEtMyAyLjQtOC40IDIuNC0xNC42IDAtNS45IDYuOC04LjEgMTQuMS0uOCAxMS4xIDExLjYgMTQuOSA0MC41IDEzLjggNTEuMS00LjEtMTMuNi0xMy0yOS0zMC4zLTM1Ljd6bS00LjYgNi43YzE5LjUgNi4yIDI4LjYgMjcuNiAyOS43IDQ4LjktMS4xIDIuNy0zIDUuNC00LjkgNy42LTUuNyA1LjktMTUuNCAxMC0yNi4yIDEyLjIgNC4zLTIxLjMuMy00Ny4zLTEyLjctNjMgNC45LS44IDEwLjktMi40IDE0LjEtNS43em0tMjQuMSA2LjhjMTMuOCAxMS45IDIwIDM5LjIgMTQuMSA2My41LTQuMS41LTguMS44LTExLjYuOC0xLjktMjEuOS02LjgtNDQtMTQuMy02NC42IDMuNy4zIDguMS4zIDExLjguM3pNNDcuNSAyMDNjLTEuMS0xMC41IDIuNC0zOS41IDEzLjgtNTEuMSA3LTcuMyAxNC4xLTUuMSAxNC4xLjggMCA2LjIgMS40IDExLjYgMi40IDE0LjYtMTcuMyA2LjgtMjYuMiAyMi4yLTMwLjMgMzUuN3ptOS43IDI3LjZjLTEuOS0yLjItMy41LTQuOS00LjktNy42IDEuNC0yMS4zIDEwLjMtNDIuNyAyOS43LTQ4LjkgMy4yIDMuMiA5LjIgNC45IDE0LjEgNS43LTEzIDE1LjctMTcgNDEuNi0xMi43IDYzLTEwLjgtMi4yLTIwLjUtNi0yNi4yLTEyLjJ6bTQ3LjkgMTQuNmMtNC4xIDAtOC4xLS4zLTEyLjctLjgtNC42LTE4LjYtMS45LTM4LjkgNS40LTUzdi4zbDEyLjItNS4xYzQuOS0xLjkgOS43LTMuOCAxNC45LTQuOS0xMC43IDE5LjctMTcuNCA0MS4zLTE5LjggNjMuNXptMTg0LTE2Mi43YzQxLjkgMCA3Ni4yIDM0IDc2LjIgNzUuOSAwIDQyLjItMzQuMyA3Ni4yLTc2LjIgNzYuMnMtNzYuMi0zNC03Ni4yLTc2LjJjMC00MS44IDM0LjMtNzUuOSA3Ni4yLTc1Ljl6bTExNS42IDE3NC4zYy0uMyAxNy44LTcgNDguOS0yMyA1Ny0xMy4yIDYuNi02LjUtNy41LTE2LjUtNTguMSAxMy4zLjMgMjYuNi4zIDM5LjUgMS4xem0tNTQtMS42Yy44IDQuOSAzLjggNDAuMy0xLjYgNDEuOS0xMS42IDMuNS00MCA0LjMtNTEuMS0xLjEtNC4xLTMtNC42LTM1LjktNC4zLTQxLjF2LjNjMTguOS0uMyAzOC4xLS4zIDU3IDB6TTI3OC4zIDMwOWMtMTMgMy41LTQxLjYgNC4xLTU0LjYtMS42LTYuNS0yLjctMy44LTQyLjQtMS45LTUxLjYgMTkuMi0uNSAzOC40LS41IDU3LjgtLjh2LjNjMS4xIDguMyAzLjMgNTEuMi0xLjMgNTMuN3ptLTEwNi41LTUxLjFjMTIuMi0uOCAyNC42LTEuNCAzNi44LTEuNi0yLjQgMTUuNC0zIDQzLjUtNC45IDUyLjItMS4xIDYuOC00LjMgNi44LTkuNyA0LjMtMjEuOS05LjgtMjcuNi0zNS4yLTIyLjItNTQuOXptLTM1LjQgMzEuM2M3LjgtMS4xIDE1LjctMS45IDIzLjUtMi43IDEuNiA2LjIgMy44IDExLjkgNyAxNy42IDEwIDE3IDQ0IDM1LjcgNDUuMSA3IDYuMiAxNC45IDQwLjggMTIuMiA1NC45IDEwLjggMTUuNy0xLjQgMjMuOC0xLjQgMjYuOC0xNC4zIDEyLjQgNC4zIDMwLjggNC4xIDQ0IDMgMTEuMy0uOCAyMC44LS41IDI0LjYtOC45IDEuMSA1LjEgMS45IDExLjYgNC42IDE2LjggMTAuOCAyMS4zIDM3LjMgMS40IDQ2LjgtMzEuNiA4LjYuOCAxNy42IDEuOSAyNi41IDIuNy0uNCAxLjMtMy44IDcuMyA3LjMgMTEuNi00Ny42IDQ3LTk1LjcgODcuOC0xNjMuMiAxMDctNjMuMi0yMC44LTExMi4xLTU5LjUtMTU1LjktMTA2LjUgOS42LTMuNCAxMC40LTguOCA4LTEyLjV6bS0yMS42IDE3Mi41Yy0zLjggMTcuOC0yMS45IDI5LjctMzkuNyAyOC45LTE5LjItLjgtNDYuNS0xNy01OS4yLTM2LjUtMi43LTMxLjEgNDMuOC02MS4zIDY2LjItNTQuNiAxNC45IDQuMyAyNy44IDMwLjggMzMuNSA1NCAwIDMtLjMgNS43LS44IDguMnptLTguNy02NmMtLjUtMTMuNS0uNS0yNy0uMy00MC41aC4zYzIuNy0xLjYgNS43LTMuOCA3LjgtNi41IDYuNS0xLjYgMTMtNS4xIDE1LjEtOS4yIDMuMy03LjEtNy03LjUtNS40LTEyLjQgMi43LTEuMSA1LjctMi4yIDcuOC0zLjUgMjkuMiAyOS4yIDU4LjYgNTYuNSA5Ny4zIDc3LTM2LjggMTEuMy03Mi40IDI3LjYtMTA1LjkgNDctMS4yLTE4LjYtNy43LTM1LjktMTYuNy01MS45em0zMzcuNiA2NC42Yy0xMDMgMy41LTIwNi4yIDQuMS0zMDkuNCAwIDAgLjMgMCAuMy0uMy4zdi0uM2guM2MzNS4xLTIxLjYgNzIuMi0zOS4yIDExMi40LTUwLjggMTEuNiA1LjEgMjMgOS41IDM0LjkgMTMuMiAyLjIuOCAyLjIuOCA0LjMgMCAxNC4zLTQuMSAyOC40LTkuMiA0Mi4yLTE1LjQgNDEuNSAxMS43IDc4LjggMzEuNyAxMTUuNiA1M3ptMTAuNS0xMi40Yy0zNS45LTE5LjUtNzMtMzUuOS0xMTEuOS00Ny42IDM4LjEtMjAgNzEuOS00Ny4zIDEwMy41LTc2LjcgMi4yIDEuNCA0LjYgMi40IDcuNiAzLjIgMCAuOC4zIDEuOS41IDIuNC00LjYgMi43LTcuOCA2LjItNS45IDEwLjMgMi4yIDMuOCA4LjYgNy42IDE1LjEgOC45IDIuNCAyLjcgNS4xIDUuMSA4LjEgNi44IDAgMTMuOC0uMyAyNy42LS44IDQxLjNsLjMtLjNjLTkuMyAxNS45LTE1LjUgMzctMTYuNSA1MS43em0xMDUuOSA2LjJjLTEyLjcgMTkuNS00MCAzNS43LTU5LjIgMzYuNS0xOS4zLjktNDAuNS0xMy4yLTQwLjUtMzcgNS43LTIzLjIgMTguOS00OS43IDMzLjUtNTQgMjIuNy02LjkgNjkuMiAyMy40IDY2LjIgNTQuNXpNMzcyLjkgNzUuMmMtMy44LTcyLjEtMTAwLjgtNzkuNy0xMjYtMjMuNSA0NC42LTI0LjMgOTAuMy0xNS43IDEyNiAyMy41ek03NC44IDQwNy4xYy0xNS43IDEuNi00OS41IDI1LjQtNDkuNSA0My4yIDAgMTEuNiAxNS43IDE5LjUgMzIuMiAxNC45IDEyLjItMy4yIDMxLjEtMTcuNiAzNS45LTI3LjMgNi0xMS42LTMuNy0zMi43LTE4LjYtMzAuOHptMjE1LjktMTc2LjJjMjguNiAwIDUxLjktMjEuNiA1MS45LTQ4LjQgMC0zNi4xLTQwLjUtNTguMS03Mi4yLTQ0LjMgOS41IDMgMTYuNSAxMS42IDE2LjUgMjEuNiAwIDIzLjMtMzMuMyAzMi00Ni41IDExLjMtNy4zIDM0LjEgMTkuNCA1OS44IDUwLjMgNTkuOHpNNjggNDc0LjFjLjUgNi41IDEyLjIgMTIuNyAyMS42IDkuNSA2LjgtMi43IDE0LjYtMTAuNSAxNy4zLTE2LjIgMy03LTEuMS0yMC05LjctMTguNC04LjkgMS42LTI5LjcgMTYuNy0yOS4yIDI1LjF6bTQzMy4yLTY3Yy0xNC45LTEuOS0yNC42IDE5LjItMTguOSAzMC44IDQuOSA5LjcgMjQuMSAyNC4xIDM2LjIgMjcuMyAxNi41IDQuNiAzMi4yLTMuMiAzMi4yLTE0LjkgMC0xNy44LTMzLjgtNDEuNi00OS41LTQzLjJ6TTQ3OC44IDQ0OWMtOC40LTEuNi0xMi40IDExLjMtOS41IDE4LjQgMi40IDUuNyAxMC4zIDEzLjUgMTcuMyAxNi4yIDkuMiAzLjIgMjEuMS0zIDIxLjMtOS41LjktOC40LTIwLjItMjMuNS0yOS4xLTI1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3JjaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0Ljc1IDE4OC4xOWgtNDUuOTJWMzQyaDQ3LjQ3YzY3LjYyIDAgODMuMTItNTEuMzQgODMuMTItNzYuOTEgMC00MS42NC0yNi41NC03Ni45LTg0LjY3LTc2Ljl6TTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS04MC43OSAzNjAuNzZoLTI5Ljg0di0yMDcuNWgyOS44NHptLTE0LjkyLTIzMS4xNGExOS41NyAxOS41NyAwIDEgMSAxOS41Ny0xOS41NyAxOS42NCAxOS42NCAwIDAgMS0xOS41NyAxOS41N3pNMzAwIDM2OWgtODFWMTYxLjI2aDgwLjZjNzYuNzMgMCAxMTAuNDQgNTQuODMgMTEwLjQ0IDEwMy44NUM0MTAgMzE4LjM5IDM2OC4zOCAzNjkgMzAwIDM2OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPc2kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNjYuNDRDMTAuMyAxMzAuNjQgMTA1LjQgMzQgMjIxLjggMTguMzRjMTM4LjgtMTguNiAyNTUuNiA3NS44IDI3OCAyMDEuMSAyMS4zIDExOC44LTQ0IDIzMC0xNTEuNiAyNzQtOS4zIDMuOC0xNC40IDEuNy0xOC03LjdxLTI2LjctNjkuNDUtNTMuNC0xMzljLTMuMS04LjEtMS0xMy4yIDctMTYuOCAyNC4yLTExIDM5LjMtMjkuNCA0My4zLTU1LjhhNzEuNDcgNzEuNDcgMCAwIDAtNjQuNS04Mi4yYy0zOS0zLjQtNzEuOCAyMy43LTc3LjUgNTkuNy01LjIgMzMgMTEuMSA2My43IDQxLjkgNzcuNyA5LjYgNC40IDExLjUgOC42IDcuOCAxOC40cS0yNi44NSA2OS45LTUzLjcgMTM5LjljLTIuNiA2LjktOC4zIDkuMy0xNS41IDYuNS01Mi42LTIwLjMtMTAxLjQtNjEtMTMwLjgtMTE5LTI0LjktNDkuMi0yNS4yLTg3LjctMjYuOC0xMDguN3ptMjAuOS0xLjljLjQgNi42LjYgMTQuMyAxLjMgMjIuMSA2LjMgNzEuOSA0OS42IDE0My41IDEzMSAxODMuMSAzLjIgMS41IDQuNC44IDUuNi0yLjNxMjIuMzUtNTguNjUgNDUtMTE3LjNjMS4zLTMuMy42LTQuOC0yLjQtNi43LTMxLjYtMTkuOS00Ny4zLTQ4LjUtNDUuNi04NiAxLTIxLjYgOS4zLTQwLjUgMjMuOC01Ni4zIDMwLTMyLjcgNzctMzkuOCAxMTUuNS0xNy42YTkxLjY0IDkxLjY0IDAgMCAxIDQ1LjIgOTAuNGMtMy42IDMwLjYtMTkuMyA1My45LTQ1LjcgNjkuOC0yLjcgMS42LTMuNSAyLjktMi4zIDZxMjIuOCA1OC44IDQ1LjIgMTE3LjdjMS4yIDMuMSAyLjQgMy44IDUuNiAyLjMgMzUuNS0xNi42IDY1LjItNDAuMyA4OC4xLTcyIDM0LjgtNDguMiA0OS4xLTEwMS45IDQyLjMtMTYxLTEzLjctMTE3LjUtMTE5LjQtMjE0LjgtMjU1LjUtMTk4LTEwNi4xIDEzLTE5NS4zIDEwMi41LTE5Ny4xIDIyNS44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA1MDRDMTExIDUwNCAwIDM5MyAwIDI1NlMxMTEgOCAyNDggOGMyMC45IDAgNDEuMyAyLjYgNjAuNyA3LjVMNDIuMyAzOTJIMjQ4djExMnptMC0xNDMuNlYxNDYuOEw5OC42IDM2MC40SDI0OHptOTYgMzEuNnY5Mi43YzQ1LjctMTkuMiA4NC41LTUxLjcgMTExLjQtOTIuN0gzNDR6bTU3LjQtMTM4LjJsLTIxLjIgOC40IDIxLjIgOC4zdi0xNi43em0tMjAuMyA1NC41Yy02LjcgMC04IDYuMy04IDEyLjl2Ny43aDE2LjJ2LTEwYzAtNS45LTIuMy0xMC42LTguMi0xMC42ek00OTYgMjU2YzAgMzcuMy04LjIgNzIuNy0yMyAxMDQuNEgzNDRWMjcuM0M0MzMuMyA2NC44IDQ5NiAxNTMuMSA0OTYgMjU2ek0zNjAuNCAxNDMuNmg2OC4yVjk2aC0xMy45djMyLjZoLTEzLjlWOTloLTEzLjl2MjkuNmgtMTIuN1Y5NmgtMTMuOXY0Ny42em02OC4xIDE4NS4zSDQwMnYtMTFjMC0xNS40LTUuNi0yNS4yLTIwLjktMjUuMi0xNS40IDAtMjAuNyAxMC42LTIwLjcgMjUuOXYyNS4zaDY4LjJ2LTE1em0wLTEwM2wtNjguMiAyOS43VjI2OGw2OC4yIDI5LjV2LTE2LjZsLTE0LjQtNS43di0yNi41bDE0LjQtNS45di0xNi45em0tNC44LTY4LjVoLTM1LjZWMTg0SDQwMnYtMTIuMmgxMWM4LjYgMTUuOCAxLjMgMzUuMy0xOC42IDM1LjMtMjIuNSAwLTI4LjMtMjUuMy0xNS41LTM3LjdsLTExLjYtMTAuNmMtMTYuMiAxNy41LTEyLjIgNjMuOSAyNy4xIDYzLjkgMzQgMCA0NC43LTM1LjkgMjkuMy02NS4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VsaW5lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzEyLjdjLTU1LjEgMTM2LjctMTg3LjEgNTQtMTg3LjEgNTQtNDAuNSA4MS44LTEwNy40IDEzNC40LTE4NC42IDEzNC43LTE2LjEgMC0xNi42LTI0LjQgMC0yNC40IDY0LjQtLjMgMTIwLjUtNDIuNyAxNTcuMi0xMTAuMS00MS4xIDE1LjktMTE4LjYgMjcuOS0xNjEuNi04Mi4yIDEwOS00NC45IDE1OS4xIDExLjIgMTc4LjMgNDUuNSA5LjktMjQuNCAxNy01MC45IDIxLjYtNzkuNyAwIDAtMTM5LjcgMjEuOS0xNDkuNS05OC4xIDExOS4xLTQ3LjkgMTUyLjYgNzYuNyAxNTIuNiA3Ni43IDEuNi0xNi43IDMuMy01Mi42IDMuMy01My40IDAgMC0xMDYuMy03My43LTM4LjEtMTY1LjIgMTI0LjYgNDMgNjEuNCAxNjIuNCA2MS40IDE2Mi40LjUgMS42LjUgMjMuOCAwIDMzLjQgMCAwIDQ1LjItODkgMTM2LjQtNTcuNS00LjIgMTM0LTE0MS45IDEwNi40LTE0MS45IDEwNi40LTQuNCAyNy40LTExLjIgNTMuNC0yMCA3Ny41IDAgMCA4My05MS44IDE3Mi0yMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWxmZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0LjkgMTkzLjljMC00Ny40LTU1LjItNDQuMi05NS40LTI5LjgtMS4zIDM5LjQtMi41IDgwLjctMyAxMTkuOC43IDIuOCAyLjYgNi4yIDE1LjEgNi4yIDM2LjggMCA4My40LTQyLjggODMuMy05Ni4yem0tMTk0LjUgNzIuMmMuMiAwIDYuNS0yLjcgMTEuMi0yLjcgMjYuNiAwIDIwLjcgNDQuMS0xNC40IDQ0LjEtMjEuNSAwLTM3LjEtMTguMS0zNy4xLTQzIDAtNDIgNDIuOS05NS42IDEwMC43LTEyNi41IDEtMTIuNCAzLTIyIDEwLjUtMjguMiAxMS4yLTkgMjYuNi0zLjUgMjkuNSAxMS4xIDcyLjItMjIuMiAxMzUuMiAxIDEzNS4yIDcyIDAgNzcuOS03OS4zIDE1Mi42LTE0MC4xIDEzOC4yLS4xIDM5LjQuOSA3NC40IDIuNyAxMDB2LjJjLjIgMy40LjYgMTIuNS01LjMgMTkuMS05LjYgMTAuNi0zMy40IDEwLTM2LjQtMjIuMy00LjEtNDQuNC4yLTIwNi4xIDEuNC0yNDIuNS0yMS41IDE1LTU4LjUgNTAuMy01OC41IDc1LjkuMiAyLjUuNCA0IC42IDQuNnpNOCAxODEuMXMtLjEgMzcuNCAzOC40IDM3LjRoMzBsMjIuNCAyMTcuMnMwIDQ0LjMgNDQuNyA0NC4zaDI4OC45czQ0LjctLjQgNDQuNy00NC4zbDIyLjQtMjE3LjJoMzBzMzguNCAxLjIgMzguNC0zNy40YzAgMCAuMS0zNy40LTM4LjQtMzcuNGgtMzAuMWMtNy4zLTI1LjYtMzAuMi03NC4zLTExOS40LTc0LjNoLTI4VjUwLjNzLTIuNy0xOC40LTIxLjEtMTguNGgtODUuOHMtMjEuMSAwLTIxLjEgMTguNHYxOS4xaC0yOC4xcy0xMDUgNC4yLTEyMC41IDc0LjNoLTI5UzggMTQyLjUgOCAxODEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXRyZW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxOTQuOGMwIDEwMS4zLTgyLjQgMTgzLjgtMTgzLjggMTgzLjgtMTAxLjcgMC0xODQuNC04Mi40LTE4NC40LTE4My44IDAtMTAxLjYgODIuNy0xODQuMyAxODQuNC0xODQuM0M0MjkuNiAxMC41IDUxMiA5My4yIDUxMiAxOTQuOHpNMCA1MDEuNWg5MHYtNDkxSDB2NDkxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyOTUuOWMtMy41IDE5LjItMTcuNCAxMDguNy0yMS41IDEzNC0uMyAxLjgtMSAyLjUtMyAyLjVIMTIuM2MtNy42IDAtMTMuMS02LjYtMTIuMS0xMy45TDU4LjggNDYuNmMxLjUtOS42IDEwLjEtMTYuOSAyMC0xNi45IDE1Mi4zIDAgMTY1LjEtMy43IDIwNCAxMS40IDYwLjEgMjMuMyA2NS42IDc5LjUgNDQgMTQwLjMtMjEuNSA2Mi42LTcyLjUgODkuNS0xNDAuMSA5MC4zLTQzLjQuNy02OS41LTctNzUuMyAyNC4yek0zNTcuMSAxNTJjLTEuOC0xLjMtMi41LTEuOC0zIDEuMy0yIDExLjQtNS4xIDIyLjUtOC44IDMzLjYtMzkuOSAxMTMuOC0xNTAuNSAxMDMuOS0yMDQuNSAxMDMuOS02LjEgMC0xMC4xIDMuMy0xMC45IDkuNC0yMi42IDE0MC40LTI3LjEgMTY5LjctMjcuMSAxNjkuNy0xIDcuMSAzLjUgMTIuOSAxMC42IDEyLjloNjMuNWM4LjYgMCAxNS43LTYuMyAxNy40LTE0LjkuNy01LjQtMS4xIDYuMSAxNC40LTkxLjMgNC42LTIyIDE0LjMtMTkuNyAyOS4zLTE5LjcgNzEgMCAxMjYuNC0yOC44IDE0Mi45LTExMi4zIDYuNS0zNC44IDQuNi03MS40LTIzLjgtOTIuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5ueUFyY2FkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjEuOTEgMTY0LjI3Yy00LjQ5IDE5LjQ1LTEuNCA2LjA2LTE1LjEgNjUuMjlsMzkuNzMtMTAuNjFjLTIyLjM0LTQ5LjYxLTE3LjI5LTM4LjQxLTI0LjYzLTU0LjY4em0tMjA2LjA5IDUxLjExYy0yMC4xOSA1LjQtMTEuMzEgMy4wMy0zOS42MyAxMC41OGw0LjQ2IDQ2LjE5YzI4LjE3LTcuNTkgMjAuNjItNS41NyAzNC44Mi05LjM0IDQyLjMtOS43OSAzMi44NS01Ni40Mi4zNS00Ny40M3ptMzI2LjE2LTI2LjE5bC00NS40Ny05OS4yYy01LjY5LTEyLjM3LTE5LjQ2LTE4Ljg0LTMyLjYyLTE1LjMzLTcwLjI3IDE4Ljc1LTM4LjcyIDEwLjMyLTEzNS41OSAzNi4yM2EyNy42MTggMjcuNjE4IDAgMCAwLTE4Ljg5IDE3LjQxQzE0NC4yNiAxMTMuMjcgMCAxNTMuNzUgMCAyMjYuNjdjMCAzMy41IDMwLjY3IDY3LjExIDgwLjkgOTUuMzdsMS43NCAxNy44OGEyNy44OTEgMjcuODkxIDAgMCAwLTE3Ljc3IDI4LjY3bDQuMyA0NC40OGMxLjM5IDE0LjMxIDEzLjQzIDI1LjIxIDI3LjggMjUuMiA1LjE4LS4wMS0zLjAxIDEuNzggMTIyLjUzLTMxLjc2IDEyLjU3LTMuMzcgMjEuMTItMTUuMDIgMjAuNTgtMjguMDIgMjE2LjU5IDQ1LjUgNDAxLjk5LTUuOTggMzk5Ljg5LTg0LjgzLjAxLTI4LjE1LTIyLjE5LTY2LjU2LTk3Ljk5LTEwNC40N3pNMjU1LjE0IDI5OC4zbC0yMS45MSA1Ljg4LTQ4LjQ0IDEyLjkxIDIuNDYgMjMuNTUgMjAuNTMtNS41MSA0LjUxIDQ0LjUxLTExNS4zMSAzMC43OC00LjMtNDQuNTIgMjAuMDItNS4zNS0xMS4xMS0xMTQuNjQtMjAuMTIgNS4zOS00LjM1LTQ0LjVjMTc4LjE1LTQ3LjU0IDE3MC4xOC00Ni40MiAxODYuMjItNDYuNjUgNTYuNjYtMS4xMyA2NC4xNSA3MS44NCA0Mi41NSAxMDQuNDNhODYuNyA4Ni43IDAgMCAxLTUwLjc1IDMzLjcyem0xOTkuMTggMTYuNjJsLTMuODktMzkuNDkgMTQuOS0zLjk4LTYuNjEtMTQuNjgtNTcuNzYgMTUuNDItNC4xIDE3LjU0IDE5LjItNS4xMiA0LjA1IDM5LjU0LTExMi44NSAzMC4wNy00LjQ2LTQ0LjQzIDIwLjk5LTUuNTkgMzMuMDgtMTI2LjQ3LTE3LjE1IDQuNTYtNC4yLTQ0LjQ4YzkzLjM2LTI0Ljk5IDY1LjAxLTE3LjQxIDEzNS41OS0zNi4yNGw2Ni42NyAxNDUuNDcgMjAuNzktNS41NiA0LjMgNDQuNDgtMTA4LjU1IDI4Ljk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcmJ5dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA1LjMxNCwyODQuNTc4SDI0Ni42VjM4My4zaDU4LjcxMXEyNC40MjMsMCwzOC4xOTMtMTMuNzd0MTMuNzctMzYuMTFxMC0yMS44MjYtMTQuMDMyLTM1LjMzNVQzMDUuMzE0LDI4NC41NzhaTTE0OS40MzUsMTI4LjdIOTAuNzI0djk4LjcyM2g1OC43MTFxMjQuNDIsMCwzOC4xOS0xMy43NzN0MTMuNzctMzYuMTA3cTAtMjEuODI2LTE0LjAyOS0zNS4zMzhUMTQ5LjQzNSwxMjguN1pNMzY2LjY0NywzMkg4MS4zNTNBODEuNDQ1LDgxLjQ0NSwwLDAsMCwwLDExMy4zNTJWMzk4LjY0N0E4MS40NDUsODEuNDQ1LDAsMCwwLDgxLjM1Myw0ODBIMzY2LjY0N0E4MS40NDUsODEuNDQ1LDAsMCwwLDQ0OCwzOTguNjQ3VjExMy4zNTJBODEuNDQ1LDgxLjQ0NSwwLDAsMCwzNjYuNjQ3LDMyWm02My42MzUsMzY2LjY0N2E2My43MDYsNjMuNzA2LDAsMCwxLTYzLjYzNSw2My42MzVIODEuMzUzYTYzLjcwNiw2My43MDYsMCwwLDEtNjMuNjM1LTYzLjYzNVYxMTMuMzUyQTYzLjcwNiw2My43MDYsMCwwLDEsODEuMzUzLDQ5LjcxOEgzNjYuNjQ3YTYzLjcwNiw2My43MDYsMCwwLDEsNjMuNjM1LDYzLjYzNFpNMzA1LjMxNCwxMjguN0gyNDYuNnY5OC43MjNoNTguNzExcTI0LjQyMywwLDM4LjE5My0xMy43NzN0MTMuNzctMzYuMTA3cTAtMjEuODI2LTE0LjAzMi0zNS4zMzhUMzA1LjMxNCwxMjguN1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJpc2NvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcwIDYzLjZDMzMxLjQgMjIuNiAyODAuNSAwIDIyNi42IDAgMTExLjkgMCAxOC41IDk2LjIgMTguNSAyMTQuNGMwIDc1LjEgNTcuOCAxNTkuOCA4Mi43IDE5Mi43QzEzNy44IDQ1NS41IDE5Mi42IDUxMiAyMjYuNiA1MTJjNDEuNiAwIDExMi45LTk0LjIgMTIwLjktMTA1IDI0LjYtMzMuMSA4Mi0xMTguMyA4Mi0xOTIuNiAwLTU2LjUtMjEuMS0xMTAuMS01OS41LTE1MC44ek0yMjYuNiA0OTMuOWMtNDIuNSAwLTE5MC0xNjcuMy0xOTAtMjc5LjQgMC0xMDcuNCA4My45LTE5Ni4zIDE5MC0xOTYuMyAxMDAuOCAwIDE4NC43IDg5IDE4NC43IDE5Ni4zLjEgMTEyLjEtMTQ3LjQgMjc5LjQtMTg0LjcgMjc5LjR6TTMzOCAyMDYuOGMwIDU5LjEtNTEuMSAxMDkuNy0xMTAuOCAxMDkuNy0xMDAuNiAwLTE1MC43LTEwOC4yLTkyLjktMTgxLjh2LjRjMCAyNC41IDIwLjEgNDQuNCA0NC44IDQ0LjQgMjQuNyAwIDQ0LjgtMTkuOSA0NC44LTQ0LjQgMC0xOC4yLTExLjEtMzMuOC0yNi45LTQwLjcgNzYuNi0xOS4yIDE0MSAzOS4zIDE0MSAxMTIuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaGFicmljYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjMgMjYyLjFsLS4xLTEzczIxLjctMTkuOCAyMS4xLTIxLjJsLTkuNS0yMGMtLjYtMS40LTI5LjUtLjUtMjkuNS0uNWwtOS40LTkuM3MuMi0yOC41LTEuMi0yOS4xbC0yMC4xLTkuMmMtMS40LS42LTIwLjcgMjEtMjAuNyAyMWwtMTMuMS0uMnMtMjAuNS0yMS40LTIxLjktMjAuOGwtMjAgOC4zYy0xLjQuNS4yIDI4LjkuMiAyOC45bC05LjEgOS4xcy0yOS4yLS45LTI5LjcuNGwtOC4xIDE5LjhjLS42IDEuNCAyMSAyMSAyMSAyMWwuMSAxMi45cy0yMS43IDE5LjgtMjEuMSAyMS4ybDkuNSAyMGMuNiAxLjQgMjkuNS41IDI5LjUuNWw5LjQgOS4zcy0uMiAzMS44IDEuMiAzMi4zbDIwLjEgOC4zYzEuNC42IDIwLjctMjMuNSAyMC43LTIzLjVsMTMuMS4yczIwLjUgMjMuOCAyMS44IDIzLjNsMjAtNy41YzEuNC0uNi0uMi0zMi4xLS4yLTMyLjFsOS4xLTkuMXMyOS4yLjkgMjkuNy0uNWw4LjEtMTkuOGMuNy0xLjEtMjAuOS0yMC43LTIwLjktMjAuN3ptLTQ0LjktOC43Yy43IDE3LjEtMTIuOCAzMS42LTMwLjEgMzIuNC0xNy4zLjgtMzIuMS0xMi41LTMyLjgtMjkuNi0uNy0xNy4xIDEyLjgtMzEuNiAzMC4xLTMyLjMgMTcuMy0uOCAzMi4xIDEyLjUgMzIuOCAyOS41em0yMDEuMi0zNy45bC05Ny05Ny0uMS4xYy03NS4xLTczLjMtMTk1LjQtNzIuOC0yNjkuOCAxLjYtNTAuOSA1MS0yNy44IDI3LjktOTUuNyA5NS4zLTIyLjMgMjIuMy0yMi4zIDU4LjcgMCA4MSA2OS45IDY5LjQgNDYuNCA0NiA5Ny40IDk3bC4xLS4xYzc1LjEgNzMuMyAxOTUuNCA3Mi45IDI2OS44LTEuNiA1MS01MC45IDI3LjktMjcuOSA5NS4zLTk1LjMgMjIuMy0yMi4zIDIyLjMtNTguNyAwLTgxek0xNDAuNCAzNjMuOGMtNTkuNi01OS41LTU5LjYtMTU2IDAtMjE1LjUgNTkuNS01OS42IDE1Ni01OS41IDIxNS42IDAgNTkuNSA1OS41IDU5LjYgMTU2IDAgMjE1LjYtNTkuNiA1OS41LTE1NiA1OS40LTIxNS42LS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob2VuaXhGcmFtZXdvcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjkgMzQ0LjNjMy44LS4xIDIyLjgtMS40IDI1LjYtMi4yLTIuNC0yLjYtNDMuNi0xLTY4LTQ5LjYtNC4zLTguNi03LjUtMTcuNi02LjQtMjcuNiAyLjktMjUuNSAzMi45LTMwIDUyLTE4LjUgMzYgMjEuNiA2My4zIDkxLjMgMTEzLjcgOTcuNSAzNyA0LjUgODQuNi0xNyAxMDguMi00NS40LS42LS4xLS44LS4yLTEtLjEtLjQuMS0uOC4yLTEuMS4zLTMzLjMgMTIuMS05NC4zIDkuNy0xMzQuNy0xNC44LTM3LjYtMjIuOC01My4xLTU4LjctNTEuOC03NC42IDEuOC0yMS4zIDIyLjktMjMuMiAzNS45LTE5LjYgMTQuNCAzLjkgMjQuNCAxNy42IDM4LjkgMjcuNCAxNS42IDEwLjQgMzIuOSAxMy43IDUxLjMgMTAuMyAxNC45LTIuNyAzNC40LTEyLjMgMzYuNS0xNC41LTEuMS0uMS0xLjgtLjEtMi41LS4yLTYuMi0uNi0xMi40LS44LTE4LjUtMS43QzI3OS44IDE5NC41IDI2Mi4xIDQ3LjQgMTM4LjUgMzcuOSA5NC4yIDM0LjUgMzkuMSA0NiAyLjIgNzIuOWMtLjguNi0xLjUgMS4yLTIuMiAxLjguMS4yLjEuMy4yLjUuOCAwIDEuNi0uMSAyLjQtLjIgNi4zLTEgMTIuNS0uOCAxOC43LjMgMjMuOCA0LjMgNDcuNyAyMy4xIDU1LjkgNzYuNSA1LjMgMzQuMy0uNyA1MC44IDggODYuMSAxOSA3Ny4xIDkxIDEwNy42IDEyNy43IDEwNi40ek03NS4zIDY0LjljLS45LTEtLjktMS4yLTEuMy0yIDEyLjEtMi42IDI0LjItNC4xIDM2LjYtNC44LTEuMSAxNC43LTIyLjIgMjEuMy0zNS4zIDYuOHptMTk2LjkgMzUwLjVjLTQyLjggMS4yLTkyLTI2LjctMTIzLjUtNjEuNC00LjYtNS0xNi44LTIwLjItMTguNi0yMy40bC40LS40YzYuNiA0LjEgMjUuNyAxOC42IDU0LjggMjcgMjQuMiA3IDQ4LjEgNi4zIDcxLjYtMy4zIDIyLjctOS4zIDQxLS41IDQzLjEgMi45LTE4LjUgMy44LTIwLjEgNC40LTI0IDcuOS01LjEgNC40LTQuNiAxMS43IDcgMTcuMiAyNi4yIDEyLjQgNjMtMi44IDk3LjIgMjUuNCAyLjQgMiA4LjEgNy44IDEwLjEgMTAuNy0uMS4yLS4zLjMtLjQuNS00LjgtMS41LTE2LjQtNy41LTQwLjItOS4zLTI0LjctMi00Ni4zIDUuMy03Ny41IDYuMnptMTc0LjgtMjUyYzE2LjQtNS4yIDQxLjMtMTMuNCA2Ni41LTMuMyAxNi4xIDYuNSAyNi4yIDE4LjcgMzIuMSAzNC42IDMuNSA5LjQgNS4xIDE5LjcgNS4xIDI4LjctLjIgMC0uNCAwLS42LjEtLjItLjQtLjQtLjktLjUtMS4zLTUtMjItMjkuOS00My44LTY3LjYtMjkuOS01MC4yIDE4LjYtMTMwLjQgOS43LTE3Ni45LTQ4LS43LS45LTIuNC0xLjctMS4zLTMuMi4xLS4yIDIuMS42IDMgMS4zIDE4LjEgMTMuNCAzOC4zIDIxLjkgNjAuMyAyNi4yIDMwLjUgNi4xIDU0LjYgMi45IDc5LjktNS4yem0xMDIuNyAxMTcuNWMtMzIuNC4yLTMzLjggNTAuMS0xMDMuNiA2NC40LTE4LjIgMy43LTM4LjcgNC42LTQ0LjkgNC4ydi0uNGMyLjgtMS41IDE0LjctMi42IDI5LjctMTYuNiA3LjktNy4zIDE1LjMtMTUuMSAyMi44LTIyLjkgMTkuNS0yMC4yIDQxLjQtNDIuMiA4MS45LTM5IDIzLjEgMS44IDI5LjMgOC4yIDM2LjEgMTIuNy4zLjIuNC41LjcuOS0uNSAwLS43LjEtLjkgMC03LTIuNy0xNC4zLTMuMy0yMS44LTMuM3ptLTEyLjMtMjQuMWMtLjEuMi0uMS40LS4yLjYtMjguOS00LjQtNDgtNy45LTY4LjUgNC0xNyA5LjktMzEuNCAyMC41LTYyIDI0LjQtMjcuMSAzLjQtNDUuMSAyLjQtNjYuMS04LS4zLS4yLS42LS40LTEtLjYgMC0uMi4xLS4zLjEtLjUgMjQuOSAzLjggMzYuNCA1LjEgNTUuNS01LjggMjIuMy0xMi45IDQwLjEtMjYuNiA3MS4zLTMxIDI5LjYtNC4xIDUxLjMgMi41IDcwLjkgMTYuOXpNMjY4LjYgOTcuM2MtLjYtLjYtMS4xLTEuMi0yLjEtMi4zIDcuNiAwIDI5LjctMS4yIDUzLjQgOC40IDE5LjcgOCAzMi4yIDIxIDUwLjIgMzIuOSAxMS4xIDcuMyAyMy40IDkuMyAzNi40IDguMSA0LjMtLjQgOC41LTEuMiAxMi44LTEuNy40LS4xLjkgMCAxLjUuMy0uNi40LTEuMi45LTEuOCAxLjItOC4xIDQtMTYuNyA2LjMtMjUuNiA3LjEtMjYuMSAyLjYtNTAuMy0zLjctNzMuNC0xNS40LTE5LjMtOS45LTM2LjQtMjIuOS01MS40LTM4LjZ6TTY0MCAzMzUuN2MtMy41IDMuMS0yMi43IDExLjYtNDIuNyA1LjMtMTIuMy0zLjktMTkuNS0xNC45LTMxLjYtMjQuMS0xMC03LjYtMjAuOS03LjktMjguMS04LjQuNi0uOC45LTEuMiAxLjItMS40IDE0LjgtOS4yIDMwLjUtMTIuMiA0Ny4zLTYuNSAxMi41IDQuMiAxOS4yIDEzLjUgMzAuNCAyNC4yIDEwLjggMTAuNCAyMSA5LjkgMjMuMSAxMC41LjEtLjEuMiAwIC40LjR6bS0yMTIuNSAxMzdjMi4yIDEuMiAxLjYgMS41IDEuNSAyLTE4LjUtMS40LTMzLjktNy42LTQ2LjgtMjIuMi0yMS44LTI0LjctNDEuNy0yNy45LTQ4LjYtMjkuNy41LS4yLjgtLjQgMS4xLS40IDEzLjEuMSAyNi4xLjcgMzguOSAzLjkgMjUuMyA2LjQgMzUgMjUuNCA0MS42IDM1LjMgMy4yIDQuOCA3LjMgOC4zIDEyLjMgMTEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9lbml4U3F1YWRyb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjMuMzhDMTQyLjQ5IDI3LjI1IDIwMS41NSA3LjMxIDI2MC41MSA4LjgxYzI5LjU4LS4zOCA1OS4xMSA1LjM3IDg2LjkxIDE1LjMzLTI0LjEzLTQuNjMtNDktNi4zNC03My4zOC0yLjQ1QzIzMS4xNyAyNyAxOTEgNDguODQgMTYyLjIxIDgwLjg3YzUuNjctMSAxMC43OC0zLjY3IDE2LTUuODYgMTguMTQtNy44NyAzNy40OS0xMy4yNiA1Ny4yMy0xNC44MyAxOS43NC0yLjEzIDM5LjY0LS40MyA1OS4yOCAxLjkyLTE0LjQyIDIuNzktMjkuMTIgNC41Ny00MyA5LjU5LTM0LjQzIDExLjA3LTY1LjI3IDMzLjE2LTg2LjMgNjIuNjMtMTMuOCAxOS43MS0yMy42MyA0Mi44Ni0yNC42NyA2Ny4xMy0uMzUgMTYuNDkgNS4yMiAzNC44MSAxOS44MyA0NGE1My4yNyA1My4yNyAwIDAgMCAzNy41MiA2Ljc0YzE1LjQ1LTIuNDYgMzAuMDctOC42NCA0My42LTE2LjMzIDExLjUyLTYuODIgMjIuNjctMTQuNTUgMzItMjQuMjUgMy43OS0zLjIyIDIuNTMtOC40NSAyLjYyLTEyLjc5LTIuMTItLjM0LTQuMzgtMS4xMS02LjMuM2EyMDMgMjAzIDAgMCAxLTM1LjgyIDE1LjM3Yy0yMCA2LjE3LTQyLjE2IDguNDYtNjIuMS43OCAxMi43OSAxLjczIDI2LjA2LjMxIDM3Ljc0LTUuNDQgMjAuMjMtOS43MiAzNi44MS0yNS4yIDU0LjQ0LTM4Ljc3YTUyNi41NyA1MjYuNTcgMCAwIDEgODguOS01NS4zMWMyNS43MS0xMiA1Mi45NC0yMi43OCA4MS41Ny0yNC4xMi0xNS42MyAxMy43Mi0zMi4xNSAyNi41Mi00Ni43OCA0MS4zOC0xNC41MSAxNC0yNy40NiAyOS41LTQwLjExIDQ1LjE4LTMuNTIgNC42LTguOTUgNi45NC0xMy41OCAxMC4xNmExNTAuNyAxNTAuNyAwIDAgMC01MS44OSA2MC4xYy05LjMzIDE5LjY4LTE0LjUgNDEuODUtMTEuNzcgNjMuNjUgMS45NCAxMy42OSA4LjcxIDI3LjU5IDIwLjkgMzQuOTEgMTIuOSA4IDI5LjA1IDguMDcgNDMuNDggNS4xIDMyLjgtNy40NSA2MS40My0yOC44OSA4MS01NS44NCAyMC40NC0yNy41MiAzMC41Mi02Mi4yIDI5LjE2LTk2LjM1LS41Mi03LjUtMS41Ny0xNS0xLjY2LTIyLjQ5IDggMTkuNDggMTQuODIgMzkuNzEgMTYuNjUgNjAuODMgMiAxNC4yOC43NSAyOC43Ni0xLjYyIDQyLjktMS45MSAxMS01LjY3IDIxLjUxLTcuNzggMzIuNDNhMTY1IDE2NSAwIDAgMCAzOS4zNC04MS4wNyAxODMuNjQgMTgzLjY0IDAgMCAwLTE0LjIxLTEwNC42NGMyMC43OCAzMiAzMi4zNCA2OS41OCAzNS43MSAxMDcuNDguNDkgMTIuNzMuNDkgMjUuNTEgMCAzOC4yM0EyNDMuMjEgMjQzLjIxIDAgMCAxIDQ4MiAzNzEuMzRjLTI2LjEyIDQ3LjM0LTY4IDg1LjYzLTExNy4xOSAxMDgtNzguMjkgMzYuMjMtMTc0LjY4IDMxLjMyLTI0OC0xNC42OEEyNDguMzQgMjQ4LjM0IDAgMCAxIDI1LjM2IDM2NiAyMzguMzQgMjM4LjM0IDAgMCAxIDAgMjczLjA4di0zMS4zNEMzLjkzIDE3MiA0MC44NyAxMDUuODIgOTYgNjMuMzhtMjIyIDgwLjMzYTc5LjEzIDc5LjEzIDAgMCAwIDE2LTQuNDhjNS0xLjc3IDkuMjQtNS45NCAxMC4zMi0xMS4yMi04Ljk2IDQuOTktMTcuOTggOS45Mi0yNi4zMiAxNS43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBocCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMTA0LjVjMTcxLjQgMCAzMDMuMiA3Mi4yIDMwMy4yIDE1MS41UzQ5MS4zIDQwNy41IDMyMCA0MDcuNWMtMTcxLjQgMC0zMDMuMi03Mi4yLTMwMy4yLTE1MS41UzE0OC43IDEwNC41IDMyMCAxMDQuNW0wLTE2LjhDMTQzLjMgODcuNyAwIDE2MyAwIDI1NnMxNDMuMyAxNjguMyAzMjAgMTY4LjNTNjQwIDM0OSA2NDAgMjU2IDQ5Ni43IDg3LjcgMzIwIDg3Ljd6TTIxOC4yIDI0Mi41Yy03LjkgNDAuNS0zNS44IDM2LjMtNzAuMSAzNi4zbDEzLjctNzAuNmMzOCAwIDYzLjgtNC4xIDU2LjQgMzQuM3pNOTcuNCAzNTAuM2gzNi43bDguNy00NC44YzQxLjEgMCA2Ni42IDMgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43aC03MC43TDk3LjQgMzUwLjN6bTE4NS43LTIxMy42aDM2LjVsLTguNyA0NC44YzMxLjUgMCA2MC43LTIuMyA3NC44IDEwLjcgMTQuOCAxMy42IDcuNyAzMS04LjMgMTEzLjFoLTM3YzE1LjQtNzkuNCAxOC4zLTg2IDEyLjctOTItNS40LTUuOC0xNy43LTQuNi00Ny40LTQuNmwtMTguOCA5Ni42aC0zNi41bDMyLjctMTY4LjZ6TTUwNSAyNDIuNWMtOCA0MS4xLTM2LjcgMzYuMy03MC4xIDM2LjNsMTMuNy03MC42YzM4LjIgMCA2My44LTQuMSA1Ni40IDM0LjN6TTM4NC4yIDM1MC4zSDQyMWw4LjctNDQuOGM0My4yIDAgNjcuMSAyLjUgOTAuMi0xOS4xIDI2LjEtMjQgMzIuOS02Ni43IDE0LjMtODguMS05LjctMTEuMi0yNS4zLTE2LjctNDYuNS0xNi43SDQxN2wtMzIuOCAxNjguN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ0IDI0NmMtMy4yLTItNi4zLTIuOS0xMC4xLTIuOS02LjYgMC0xMi42IDMuMi0xOS4zIDMuN2wxLjcgNC45em0xMzUuOSAxOTcuOWMtMTkgMC02NC4xIDkuNS03OS45IDE5LjhsNi45IDQ1LjFjMzUuNyA2LjEgNzAuMSAzLjYgMTA2LTkuOC00LjgtMTAtMjMuNS01NS4xLTMzLTU1LjF6TTM0MC44IDE3N2M2LjYgMi44IDExLjUgOS4yIDIyLjcgMjIuMSAyLTEuNCA3LjUtNS4yIDcuNS04LjYgMC00LjktMTEuOC0xMy4yLTEzLjItMjMgMTEuMi01LjcgMjUuMi02IDM3LjYtOC45IDY4LjEtMTYuNCAxMTYuMy01Mi45IDE0Ni44LTExNi43QzU0OC4zIDI5LjMgNTU0IDE2LjEgNTU0LjYgMmwtMiAyLjZjLTI4LjQgNTAtMzMgNjMuMi04MS4zIDEwMC0zMS45IDI0LjQtNjkuMiA0MC4yLTEwNi42IDU0LjZsLTYuMy0uM3YtMjEuOGMtMTkuNiAxLjYtMTkuNy0xNC42LTMxLjYtMjMtMTguNyAyMC42LTMxLjYgNDAuOC01OC45IDUxLjEtMTIuNyA0LjgtMTkuNiAxMC0yNS45IDIxLjggMzQuOS0xNi40IDkxLjItMTMuNSA5OC44LTEwek01NTUuNSAwbC0uNiAxLjEtLjMuOS42LS42em0tNTkuMiAzODIuMWMtMzMuOS01Ni45LTc1LjMtMTE4LjQtMTUwLTExNS41bC0uMy02Yy0xLjEtMTMuNSAzMi44IDMuMiAzNS4xLTMxbC0xNC40IDcuMmMtMTkuOC00NS43LTguNi01NC4zLTY1LjUtNTQuMy0xNC43IDAtMjYuNyAxLjctNDEuNCA0LjYgMi45IDE4LjYgMi4yIDM2LjctMTAuOSA1MC4zbDE5LjUgNS41Yy0xLjcgMy4yLTIuOSA2LjMtMi45IDkuOCAwIDIxIDQyLjggMi45IDQyLjggMzMuNiAwIDE4LjQtMzYuOCA2MC4xLTU0LjkgNjAuMS04IDAtNTMuNy01MC01My40LTYwLjFsLjMtNC42IDUyLjMtMTEuNWMxMy0yLjYgMTIuMy0yMi43LTIuOS0yMi43LTMuNyAwLTQzLjEgOS4yLTQ5LjQgMTAuNi0yLTUuMi03LjUtMTQuMS0xMy44LTE0LjEtMy4yIDAtNi4zIDMuMi05LjUgNC05LjIgMi42LTMxIDIuOS0yMS41IDIwLjFMMTUuOSAyOTguNWMtNS41IDEuMS04LjkgNi4zLTguOSAxMS44IDAgNiA1LjUgMTAuOSAxMS41IDEwLjkgOCAwIDEzMS4zLTI4LjQgMTQ3LjQtMzIuMiAyLjYgMy4yIDQuNiA2LjMgNy44IDguNiAyMC4xIDE0LjQgNTkuOCA4NS45IDc2LjQgODUuOSAyNC4xIDAgNTgtMjIuNCA3MS4zLTQxLjkgMy4yLTQuMyA2LjktNy41IDEyLjQtNi45LjYgMTMuOC0zMS42IDM0LjItMzMgNDMuNy0xLjQgMTAuMi0xIDM1LjItLjMgNDEuMSAyNi43IDguMSA1Mi0zLjYgNzcuOS0yLjkgNC4zLTIxIDEwLjYtNDEuOSA5LjgtNjMuNWwtLjMtOS41Yy0xLjQtMzQuMi0xMC45LTM4LjUtMzQuOC01OC42LTEuMS0xLjEtMi42LTIuNi0zLjctNCAyLjItMS40IDEuMS0xIDQuNi0xLjcgODguNSAwIDU2LjMgMTgzLjYgMTExLjUgMjI5LjkgMzMuMS0xNSA3Mi41LTI3LjkgMTAzLjUtNDcuMi0yOS0yNS42LTUyLjYtNDUuNy03Mi43LTc5Ljl6bS0xOTYuMiA0Ni4xdjI3LjJsMTEuOC0zLjQtMi45LTIzLjh6bS02OC43LTE1MC40bDI0LjEgNjEuMiAyMS0xMy44LTMxLjMtNTAuOXptODQuNCAxNTQuOWwyIDEyLjRjOS0xLjUgNTguNC02LjYgNTguNC0xNC4xIDAtMS40LS42LTMuMi0uOS00LjYtMjYuOCAwLTM2LjkgMy44LTU5LjUgNi4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlckhhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMjQuOWMtODAuOCA1My42LTg5LjQgOTIuNS05Ni40IDEwNC40LTYuNyAxMi4yLTExLjcgNjAuMy0yMy4zIDgzLjYtMTEuNyAyMy42LTU0LjIgNDIuMi02Ni4xIDUwLTExLjcgNy44LTI4LjMgMzguMS00MS45IDY0LjItMTA4LjEtNC40LTE2Ny40IDM4LjgtMjU5LjIgOTMuNiAyOS40LTkuNyA0My4zLTE2LjcgNDMuMy0xNi43IDk0LjItMzYgMTM5LjMtNjguMyAyODEuMS00OS4yIDEuMSAwIDEuOS42IDIuOC44IDMuOSAyLjIgNS4zIDYuOSAzLjEgMTAuOGwtNTMuOSA5NS44Yy0yLjUgNC43LTcuOCA3LjItMTMuMSA2LjEtMTI2LjgtMjMuOC0yMjYuOSAxNy4zLTMxOC45IDE4LjZDMjQuMSA0ODggMCA0NTMuNCAwIDQ1MS44YzAtMS4xLjYtMS43IDEuNy0xLjcgMCAwIDM4LjMgMCAxMDMuMS0xNS4zQzE3OC40IDI5NC41IDI0NCAyNDUuNCAzMTUuNCAyNDUuNGMwIDAgNzEuNyAwIDkwLjYgNjEuOSAyMi44LTM5LjcgMjguMy00OS4yIDI4LjMtNDkuMiA1LjMtOS40IDM1LTc3LjIgODYuNC0xNDEuNCA1MS41LTY0IDkwLjQtNzkuOSAxMTkuMy05MS44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpZWRQaXBlclBwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNS4zIDE3NC42YzAgMjEuMS0xNC4yIDM4LjEtMzEuNyAzOC4xLTcuMSAwLTEyLjgtMS4yLTE3LjItMy43di02OGM0LjQtMi43IDEwLjEtNC4yIDE3LjItNC4yIDE3LjUgMCAzMS43IDE2LjkgMzEuNyAzNy44em01Mi42IDY3Yy03LjEgMC0xMi44IDEuNS0xNy4yIDQuMnY2OGM0LjQgMi41IDEwLjEgMy43IDE3LjIgMy43IDE3LjQgMCAzMS43LTE2LjkgMzEuNy0zNy44IDAtMjEuMS0xNC4zLTM4LjEtMzEuNy0zOC4xek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTE4NSAyNTUuMWM0MSAwIDc0LjItMzUuNiA3NC4yLTc5LjYgMC00NC0zMy4yLTc5LjYtNzQuMi03OS42LTEyIDAtMjQuMSAzLjItMzQuNiA4LjhoLTQ1LjdWMzExbDUxLjgtMTAuMXYtNTAuNmM4LjYgMy4xIDE4LjEgNC44IDI4LjUgNC44em0xNTguNCAyNS4zYzAtNDQtMzMuMi03OS42LTczLjktNzkuNi0zLjIgMC02LjQuMi05LjYuNy0zLjcgMTIuNS0xMC4xIDIzLjgtMTkuMiAzMy40LTEzLjggMTUtMzIuMiAyMy44LTUxLjggMjQuOFY0MTZsNTEuOC0xMC4xdi01MC42YzguNiAzLjIgMTguMiA0LjcgMjguNyA0LjcgNDAuOCAwIDc0LTM1LjYgNzQtNzkuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWVkUGlwZXJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDE5TDAgNDc5LjJsLjgtMzI4Qy44IDg1LjMgNTQgMzIgMTIwIDMyaDMyNy4yYy05MyAyOC45LTE4OS45IDk0LjItMjUzLjkgMTY4LjZDMTIyLjcgMjgyIDgyLjYgMzM4IDMyIDQxOU00NDggMzJTMzA1LjIgOTguOCAyNjEuNiAxOTkuMWMtMjMuMiA1My42LTI4LjkgMTE4LjEtNzEgMTU4LjYtMjguOSAyNy44LTY5LjggMzguMi0xMDUuMyA1Ni4zLTIzLjIgMTItNjYuNCA0MC41LTg0LjkgNjZoMzI4LjRjNjYgMCAxMTkuMy01My4zIDExOS4zLTExOS4yLS4xIDAtLjEtMzI4LjgtLjEtMzI4Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGllZFBpcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NS45MywyMy4yQzQyOS4yMywzMCwzODcuNzksNTEuNjksMzQxLjM1LDkwLjY2QTIwNiwyMDYsMCwwLDAsMjQwLDY0QzEyNS4xMyw2NCwzMiwxNTcuMTIsMzIsMjcyczkzLjEzLDIwOCwyMDgsMjA4LDIwOC05My4xMywyMDgtMjA4YTIwNy4yNSwyMDcuMjUsMCwwLDAtNTguNzUtMTQ0LjgxLDE1NS4zNSwxNTUuMzUsMCwwLDAtMTcsMjcuNEExNzYuMTYsMTc2LjE2LDAsMCwxLDQxNy4xLDI3MmMwLDk3LjY2LTc5LjQ0LDE3Ny4xMS0xNzcuMDksMTc3LjExYTE3NS44MSwxNzUuODEsMCwwLDEtODcuNjMtMjMuNGM4Mi45NC0xMDcuMzMsMTUwLjc5LTM3Ljc3LDE4NC4zMS0yMjYuNjUsNS43OS0zMi42MiwyOC05NC4yNiwxMjYuMjMtMTYwLjE4QzQ3MSwzMy40NSw0NjUuMzUsMjAuOCw0NTUuOTMsMjMuMlpNMTI1LDQwNi40QTE3Ni42NiwxNzYuNjYsMCwwLDEsNjIuOSwyNzJDNjIuOSwxNzQuMzQsMTQyLjM1LDk0LjksMjQwLDk0LjlhMTc0LDE3NCwwLDAsMSw3Ni42MywxNy43NUMyNTAuNjQsMTc0Ljc2LDE4OS43NywyNjUuNTIsMTI1LDQwNi40WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdFAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0IDYuNUMxMDEuNCA2LjUgMCA3NC45IDAgMTg1LjYgMCAyNTYgMzkuNiAyOTYgNjMuNiAyOTZjOS45IDAgMTUuNi0yNy42IDE1LjYtMzUuNCAwLTkuMy0yMy43LTI5LjEtMjMuNy02Ny44IDAtODAuNCA2MS4yLTEzNy40IDE0MC40LTEzNy40IDY4LjEgMCAxMTguNSAzOC43IDExOC41IDEwOS44IDAgNTMuMS0yMS4zIDE1Mi43LTkwLjMgMTUyLjctMjQuOSAwLTQ2LjItMTgtNDYuMi00My44IDAtMzcuOCAyNi40LTc0LjQgMjYuNC0xMTMuNCAwLTY2LjItOTMuOS01NC4yLTkzLjkgMjUuOCAwIDE2LjggMi4xIDM1LjQgOS42IDUwLjctMTMuOCA1OS40LTQyIDE0Ny45LTQyIDIwOS4xIDAgMTguOSAyLjcgMzcuNSA0LjUgNTYuNCAzLjQgMy44IDEuNyAzLjQgNi45IDEuNSA1MC40LTY5IDQ4LjYtODIuNSA3MS40LTE3Mi44IDEyLjMgMjMuNCA0NC4xIDM2IDY5LjMgMzYgMTA2LjIgMCAxNTMuOS0xMDMuNSAxNTMuOS0xOTYuOEMzODQgNzEuMyAyOTguMiA2LjUgMjA0IDYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaW50ZXJlc3RTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEgxNTQuNGM5LjgtMTYuNCAyMi40LTQwIDI3LjQtNTkuMyAzLTExLjUgMTUuMy01OC40IDE1LjMtNTguNCA4IDE1LjMgMzEuNCAyOC4yIDU2LjMgMjguMiA3NC4xIDAgMTI3LjQtNjguMSAxMjcuNC0xNTIuNyAwLTgxLjEtNjYuMi0xNDEuOC0xNTEuNC0xNDEuOC0xMDYgMC0xNjIuMiA3MS4xLTE2Mi4yIDE0OC42IDAgMzYgMTkuMiA4MC44IDQ5LjggOTUuMSA0LjcgMi4yIDcuMSAxLjIgOC4yLTMuMy44LTMuNCA1LTIwLjEgNi44LTI3LjguNi0yLjUuMy00LjYtMS43LTctMTAuMS0xMi4zLTE4LjMtMzQuOS0xOC4zLTU2IDAtNTQuMiA0MS0xMDYuNiAxMTAuOS0xMDYuNiA2MC4zIDAgMTAyLjYgNDEuMSAxMDIuNiA5OS45IDAgNjYuNC0zMy41IDExMi40LTc3LjIgMTEyLjQtMjQuMSAwLTQyLjEtMTkuOS0zNi40LTQ0LjQgNi45LTI5LjIgMjAuMy02MC43IDIwLjMtODEuOCAwLTUzLTc1LjUtNDUuNy03NS41IDI1IDAgMjEuNyA3LjMgMzYuNSA3LjMgMzYuNS0zMS40IDEzMi44LTM2LjEgMTM0LjUtMjkuNiAxOTIuNmwyLjIuOEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbnRlcmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OC0yNS42IDAtNTAuMi0zLjktNzMuNC0xMS4xIDEwLjEtMTYuNSAyNS4yLTQzLjUgMzAuOC02NSAzLTExLjYgMTUuNC01OSAxNS40LTU5IDguMSAxNS40IDMxLjcgMjguNSA1Ni44IDI4LjUgNzQuOCAwIDEyOC43LTY4LjggMTI4LjctMTU0LjMgMC04MS45LTY2LjktMTQzLjItMTUyLjktMTQzLjItMTA3IDAtMTYzLjkgNzEuOC0xNjMuOSAxNTAuMSAwIDM2LjQgMTkuNCA4MS43IDUwLjMgOTYuMSA0LjcgMi4yIDcuMiAxLjIgOC4zLTMuMy44LTMuNCA1LTIwLjMgNi45LTI4LjEuNi0yLjUuMy00LjctMS43LTcuMS0xMC4xLTEyLjUtMTguMy0zNS4zLTE4LjMtNTYuNiAwLTU0LjcgNDEuNC0xMDcuNiAxMTItMTA3LjYgNjAuOSAwIDEwMy42IDQxLjUgMTAzLjYgMTAwLjkgMCA2Ny4xLTMzLjkgMTEzLjYtNzggMTEzLjYtMjQuMyAwLTQyLjYtMjAuMS0zNi43LTQ0LjggNy0yOS41IDIwLjUtNjEuMyAyMC41LTgyLjYgMC0xOS0xMC4yLTM0LjktMzEuNC0zNC45LTI0LjkgMC00NC45IDI1LjctNDQuOSA2MC4yIDAgMjIgNy40IDM2LjggNy40IDM2LjhzLTI0LjUgMTAzLjgtMjkgMTIzLjJjLTUgMjEuNC0zIDUxLjYtLjkgNzEuMkM2NS40IDQ1MC45IDAgMzYxLjEgMCAyNTYgMCAxMTkgMTExIDggMjQ4IDhzMjQ4IDExMSAyNDggMjQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXlzdGF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MC45IDM3Mi4zYy0xMS4zIDE0LjItMzguOCAyNC4zLTM4LjggMjQuM0wzMjcgNDcwLjJ2LTU0LjNsMTUwLjktNTMuOGMxNy4xLTYuMSAxOS44LTE0LjggNS44LTE5LjQtMTMuOS00LjYtMzkuMS0zLjMtNTYuMiAyLjlMMzI3IDM4MS4xdi01Ni40YzIzLjItNy44IDQ3LjEtMTMuNiA3NS43LTE2LjggNDAuOS00LjUgOTAuOS42IDEzMC4yIDE1LjUgNDQuMiAxNCA0OS4yIDM0LjcgMzggNDguOXptLTIyNC40LTkyLjV2LTEzOWMwLTE2LjMtMy0zMS4zLTE4LjMtMzUuNi0xMS43LTMuOC0xOSA3LjEtMTkgMjMuNHYzNDcuOWwtOTMuOC0yOS44VjMyYzM5LjkgNy40IDk4IDI0LjkgMTI5LjIgMzUuNEM0MjQuMSA5NC43IDQ1MSAxMjguNyA0NTEgMjA1LjJjMCA3NC41LTQ2IDEwMi44LTEwNC41IDc0LjZ6TTQzLjIgNDEwLjJjLTQ1LjQtMTIuOC01My0zOS41LTMyLjMtNTQuOCAxOS4xLTE0LjIgNTEuNy0yNC45IDUxLjctMjQuOWwxMzQuNS00Ny44djU0LjVsLTk2LjggMzQuNmMtMTcuMSA2LjEtMTkuNyAxNC44LTUuOCAxOS40IDEzLjkgNC42IDM5LjEgMy4zIDU2LjItMi45bDQ2LjQtMTYuOXY0OC44Yy01MS42IDkuMy0xMDEuNCA3LjMtMTUzLjktMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvZHVjdEh1bnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzI2LjMgMjE4LjhjMCAyMC41LTE2LjcgMzcuMi0zNy4yIDM3LjJoLTcwLjN2LTc0LjRoNzAuM2MyMC41IDAgMzcuMiAxNi43IDM3LjIgMzcuMnpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tMTI4LjEtMzcuMmMwLTQ3LjktMzguOS04Ni44LTg2LjgtODYuOEgxNjkuMnYyNDhoNDkuNnYtNzQuNGg3MC4zYzQ3LjkgMCA4Ni44LTM4LjkgODYuOC04Ni44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1c2hlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDMyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDcgMTExLjlsLTk4LjUtOSAxNC0zMy40YzEwLjQtMjMuNS0xMC44LTQwLjQtMjguNy0zN0wyMi41IDc2LjljLTE1LjEgMi43LTI2IDE4LjMtMjEuNCAzNi42bDEwNS4xIDM0OC4zYzYuNSAyMS4zIDM2LjcgMjQuMiA0Ny43IDdsMzUuMy04MC44IDIzNS4yLTIzMS4zYzE2LjQtMTYuOCA0LjMtNDIuOS0xNy40LTQ0Ljh6TTI5Ny42IDUzLjZjNS4xLS43IDcuNSAyLjUgNS4yIDcuNEwyODYgMTAwLjkgMTA4LjYgODQuNmwxODktMzF6TTIyLjcgMTA3LjljLTMuMS01LjEgMS0xMCA2LjEtOS4xbDI0OC43IDIyLjctOTYuOSAyMzAuN0wyMi43IDEwNy45ek0xMzYgNDU2LjRjLTIuNiA0LTcuOSAzLjEtOS40LTEuMkw0My41IDE3OS43bDEyNy43IDE5Ny42Yy03IDE1LTM1LjIgNzkuMS0zNS4yIDc5LjF6bTI3Mi44LTMxNC41TDIxMC4xIDMzNy4zbDg5LjctMjEzLjcgMTA2LjQgOS43YzQgMS4xIDUuNyA1LjMgMi42IDguNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQeXRob24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjggMjAwLjVjLTcuNy0zMC45LTIyLjMtNTQuMi01My40LTU0LjJoLTQwLjF2NDcuNGMwIDM2LjgtMzEuMiA2Ny44LTY2LjggNjcuOEgxNzIuN2MtMjkuMiAwLTUzLjQgMjUtNTMuNCA1NC4zdjEwMS44YzAgMjkgMjUuMiA0NiA1My40IDU0LjMgMzMuOCA5LjkgNjYuMyAxMS43IDEwNi44IDAgMjYuOS03LjggNTMuNC0yMy41IDUzLjQtNTQuM3YtNDAuN0gyMjYuMnYtMTMuNmgxNjAuMmMzMS4xIDAgNDIuNi0yMS43IDUzLjQtNTQuMiAxMS4yLTMzLjUgMTAuNy02NS43IDAtMTA4LjZ6TTI4Ni4yIDQwNGMxMS4xIDAgMjAuMSA5LjEgMjAuMSAyMC4zIDAgMTEuMy05IDIwLjQtMjAuMSAyMC40LTExIDAtMjAuMS05LjItMjAuMS0yMC40LjEtMTEuMyA5LjEtMjAuMyAyMC4xLTIwLjN6TTE2Ny44IDI0OC4xaDEwNi44YzI5LjcgMCA1My40LTI0LjUgNTMuNC01NC4zVjkxLjljMC0yOS0yNC40LTUwLjctNTMuNC01NS42LTM1LjgtNS45LTc0LjctNS42LTEwNi44LjEtNDUuMiA4LTUzLjQgMjQuNy01My40IDU1LjZ2NDAuN2gxMDYuOXYxMy42aC0xNDdjLTMxLjEgMC01OC4zIDE4LjctNjYuOCA1NC4yLTkuOCA0MC43LTEwLjIgNjYuMSAwIDEwOC42IDcuNiAzMS42IDI1LjcgNTQuMiA1Ni44IDU0LjJIMTAxdi00OC44YzAtMzUuMyAzMC41LTY2LjQgNjYuOC02Ni40em0tNi43LTE0Mi42Yy0xMS4xIDAtMjAuMS05LjEtMjAuMS0yMC4zLjEtMTEuMyA5LTIwLjQgMjAuMS0yMC40IDExIDAgMjAuMSA5LjIgMjAuMSAyMC40cy05IDIwLjMtMjAuMSAyMC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVFxIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMy43NTQgNDIwLjQ0NWMtMTEuNTI2IDEuMzkzLTQ0Ljg2LTUyLjc0MS00NC44Ni01Mi43NDEgMCAzMS4zNDUtMTYuMTM2IDcyLjI0Ny01MS4wNTEgMTAxLjc4NiAxNi44NDIgNS4xOTIgNTQuODQzIDE5LjE2NyA0NS44MDMgMzQuNDIxLTcuMzE2IDEyLjM0My0xMjUuNTEgNy44ODEtMTU5LjYzMiA0LjAzNy0zNC4xMjIgMy44NDQtMTUyLjMxNiA4LjMwNi0xNTkuNjMyLTQuMDM3LTkuMDQ1LTE1LjI1IDI4LjkxOC0yOS4yMTQgNDUuNzgzLTM0LjQxNS0zNC45Mi0yOS41MzktNTEuMDU5LTcwLjQ0NS01MS4wNTktMTAxLjc5MiAwIDAtMzMuMzM0IDU0LjEzNC00NC44NTkgNTIuNzQxLTUuMzctLjY1LTEyLjQyNC0yOS42NDQgOS4zNDctOTkuNzA0IDEwLjI2MS0zMy4wMjQgMjEuOTk1LTYwLjQ3OCA0MC4xNDQtMTA1Ljc3OUM2MC42ODMgOTguMDYzIDEwOC45ODIuMDA2IDIyNCAwYzExMy43MzcuMDA2IDE2My4xNTYgOTYuMTMzIDE2MC4yNjQgMjE0Ljk2MyAxOC4xMTggNDUuMjIzIDI5LjkxMiA3Mi44NSA0MC4xNDQgMTA1Ljc3OCAyMS43NjggNzAuMDYgMTQuNzE2IDk5LjA1MyA5LjM0NiA5OS43MDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVpbnNjYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMy42IDQ3NC42aC0xYTE1OC4xIDE1OC4xIDAgMCAxIDAtMzE2LjJjOTQuOSAwIDE2OC4yIDgzLjEgMTU3IDE3Ni42IDQgNS4xIDguMiA5LjYgMTEuMiAxNS4zIDEzLjQtMzAuMyAyMC4zLTYyLjQgMjAuMy05Ny43QzUwMS4xIDExNy41IDM5MS42IDggMjU2LjUgOFMxMiAxMTcuNSAxMiAyNTIuNnMxMDkuNSAyNDQuNiAyNDQuNSAyNDQuNmEyMzcuMzYgMjM3LjM2IDAgMCAwIDcwLjQtMTAuMWMtNS4yLTMuNS04LjktOC4xLTEzLjMtMTIuNXptLS4xLS4xbC40LjF6bTc4LjQtMTY4LjlhOTkuMiA5OS4yIDAgMSAwIDk5LjIgOTkuMiA5OS4xOCA5OS4xOCAwIDAgMC05OS4yLTk5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjUgMzg2LjdoLTI5LjNjLTEuNSAxMy41LTEwLjUgMzAuOC0zMyAzMC44LTIwLjUgMC0zNS4zLTE0LjItNDkuNS0zNS44IDQ0LjItMzQuMiA3NC43LTg3LjUgNzQuNy0xNTNDNDAzLjUgMTExLjIgMzA2LjggMzIgMjA1IDMyIDEwNS4zIDMyIDcuMyAxMTEuNyA3LjMgMjI4LjdjMCAxMzQuMSAxMzEuMyAyMjEuNiAyNDkgMTg5QzI3NiA0NTEuMyAzMDIgNDgwIDM1MS41IDQ4MGM4MS44IDAgOTAuOC03NS4zIDg5LTkzLjN6TTI5NyAzMjkuMkMyNzcuNSAzMDAgMjUzLjMgMjc3IDIwNS41IDI3N2MtMzAuNSAwLTU0LjMgMTAtNjkgMjIuOGwxMi4yIDI0LjNjNi4yLTMgMTMtNCAxOS44LTQgMzUuNSAwIDUzLjcgMzAuOCA2OS4yIDYxLjMtMTAgMy0yMC43IDQuMi0zMi43IDQuMi03NSAwLTEwNy41LTUzLTEwNy41LTE1Ni43Qzk3LjUgMTI0LjUgMTMwIDcxIDIwNSA3MWM3Ni4yIDAgMTA4LjcgNTMuNSAxMDguNyAxNTcuNy4xIDQxLjgtNS40IDc1LjYtMTYuNyAxMDAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSUHJvamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTgxIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01ODEgMjI2LjZDNTgxIDExOS4xIDQ1MC45IDMyIDI5MC41IDMyUzAgMTE5LjEgMCAyMjYuNkMwIDMyMi40IDEwMy4zIDQwMiAyMzkuNCA0MTguMVY0ODBoOTkuMXYtNjEuNWMyNC4zLTIuNyA0Ny42LTcuNCA2OS40LTEzLjlMNDQ4IDQ4MGgxMTJsLTY3LjQtMTEzLjdjNTQuNS0zNS40IDg4LjQtODQuOSA4OC40LTEzOS43em0tNDY2LjggMTQuNWMwLTczLjUgOTguOS0xMzMgMjIwLjgtMTMzczIxMS45IDQwLjcgMjExLjkgMTMzYzAgNTAuMS0yNi41IDg1LTcwLjMgMTA2LjQtMi40LTEuNi00LjctMi45LTYuNC0zLjctMTAuMi01LjItMjcuOC0xMC41LTI3LjgtMTAuNXM4Ni42LTYuNCA4Ni42LTkyLjctOTAuNi04Ny45LTkwLjYtODcuOWgtMTk5VjM2MWMtNzQuMS0yMS41LTEyNS4yLTY3LjEtMTI1LjItMTE5Ljl6bTIyNS4xIDM4LjN2LTU1LjZjNTcuOCAwIDg3LjgtNi44IDg3LjggMjcuMyAwIDM2LjUtMzguMiAyOC4zLTg3LjggMjguM3ptLS45IDcyLjVIMzY1YzEwLjggMCAxOC45IDExLjcgMjQgMTkuMi0xNi4xIDEuOS0zMyAyLjgtNTAuNiAyLjl2LTIyLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFzcGJlcnJ5UGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQwNyA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDIzMi41bC0zLjctNi41Yy4xLTQ2LjQtMjEuNC02NS4zLTQ2LjUtNzkuNyA3LjYtMiAxNS40LTMuNiAxNy42LTEzLjIgMTMuMS0zLjMgMTUuOC05LjQgMTcuMS0xNS44IDMuNC0yLjMgMTQuOC04LjcgMTMuNi0xOS43IDYuNC00LjQgMTAtMTAuMSA4LjEtMTguMSA2LjktNy41IDguNy0xMy43IDUuOC0xOS40IDguMy0xMC4zIDQuNi0xNS42IDEuMS0yMC45IDYuMi0xMS4yLjctMjMuMi0xNi42LTIxLjItNi45LTEwLjEtMjEuOS03LjgtMjQuMi03LjgtMi42LTMuMi02LTYtMTYuNS00LjctNi44LTYuMS0xNC40LTUtMjIuMy0yLjEtOS4zLTcuMy0xNS41LTEuNC0yMi42LjhDMjcxLjYuNiAyNjkgNS41IDI2My41IDcuNmMtMTIuMy0yLjYtMTYuMSAzLTIyIDguOWwtNi45LS4xYy0xOC42IDEwLjgtMjcuOCAzMi44LTMxLjEgNDQuMS0zLjMtMTEuMy0xMi41LTMzLjMtMzEuMS00NC4xbC02LjkuMWMtNS45LTUuOS05LjctMTEuNS0yMi04LjktNS42LTItOC4xLTctMTkuNC0zLjQtNC42LTEuNC04LjktNC40LTEzLjktNC4zLTIuNi4xLTUuNSAxLTguNyAzLjUtNy45LTMtMTUuNS00LTIyLjMgMi4xLTEwLjUtMS4zLTE0IDEuNC0xNi41IDQuNy0yLjMgMC0xNy4zLTIuMy0yNC4yIDcuOEMyMS4yIDE2IDE1LjggMjggMjIgMzkuMmMtMy41IDUuNC03LjIgMTAuNyAxLjEgMjAuOS0yLjkgNS43LTEuMSAxMS45IDUuOCAxOS40LTEuOCA4IDEuOCAxMy43IDguMSAxOC4xLTEuMiAxMSAxMC4yIDE3LjQgMTMuNiAxOS43IDEuMyA2LjQgNCAxMi40IDE3LjEgMTUuOCAyLjIgOS41IDEwIDExLjIgMTcuNiAxMy4yLTI1LjEgMTQuNC00Ni42IDMzLjMtNDYuNSA3OS43bC0zLjcgNi41Yy0yOC44IDE3LjItNTQuNyA3Mi43LTE0LjIgMTE3LjcgMi42IDE0LjEgNy4xIDI0LjIgMTEgMzUuNCA1LjkgNDUuMiA0NC41IDY2LjMgNTQuNiA2OC44IDE0LjkgMTEuMiAzMC44IDIxLjggNTIuMiAyOS4yQzE1OSA1MDQuMiAxODEgNTEyIDIwMyA1MTJoMWMyMi4xIDAgNDQtNy44IDY0LjItMjguNCAyMS41LTcuNCAzNy4zLTE4IDUyLjItMjkuMiAxMC4yLTIuNSA0OC43LTIzLjYgNTQuNi02OC44IDMuOS0xMS4yIDguNC0yMS4zIDExLTM1LjQgNDAuNi00NS4xIDE0LjctMTAwLjUtMTQtMTE3Ljd6bS0yMi4yLThjLTEuNSAxOC43LTk4LjktNjUuMS04Mi4xLTY3LjkgNDUuNy03LjUgODMuNiAxOS4yIDgyLjEgNjcuOXptLTQzIDkzLjFjLTI0LjUgMTUuOC01OS44IDUuNi03OC44LTIyLjhzLTE0LjYtNjQuMiA5LjktODBjMjQuNS0xNS44IDU5LjgtNS42IDc4LjggMjIuOHMxNC42IDY0LjItOS45IDgwek0yMzguOSAyOS4zYy44IDQuMiAxLjggNi44IDIuOSA3LjYgNS40LTUuOCA5LjgtMTEuNyAxNi44LTE3LjMgMCAzLjMtMS43IDYuOCAyLjUgOS40IDMuNy01IDguOC05LjUgMTUuNS0xMy4zLTMuMiA1LjYtLjYgNy4zIDEuMiA5LjYgNS4xLTQuNCAxMC04LjggMTkuNC0xMi4zLTIuNiAzLjEtNi4yIDYuMi0yLjQgOS44IDUuMy0zLjMgMTAuNi02LjYgMjMuMS04LjktMi44IDMuMS04LjcgNi4zLTUuMSA5LjQgNi42LTIuNSAxNC00LjQgMjIuMS01LjQtMy45IDMuMi03LjEgNi4zLTMuOSA4LjggNy4xLTIuMiAxNi45LTUuMSAyNi40LTIuNmwtNiA2LjFjLS43LjggMTQuMS42IDIzLjkuOC0zLjYgNS03LjIgOS43LTkuMyAxOC4yIDEgMSA1LjguNCAxMC40IDAtNC43IDkuOS0xMi44IDEyLjMtMTQuNyAxNi42IDIuOSAyLjIgNi44IDEuNiAxMS4yLjEtMy40IDYuOS0xMC40IDExLjctMTYgMTcuMyAxLjQgMSAzLjkgMS42IDkuNy45LTUuMiA1LjUtMTEuNCAxMC41LTE4LjggMTUgMS4zIDEuNSA1LjggMS41IDEwIDEuNi02LjcgNi41LTE1LjMgOS45LTIzLjQgMTQuMiA0IDIuNyA2LjkgMi4xIDEwIDIuMS01LjcgNC43LTE1LjQgNy4xLTI0LjQgMTAgMS43IDIuNyAzLjQgMy40IDcuMSA0LjEtOS41IDUuMy0yMy4yIDIuOS0yNyA1LjYuOSAyLjcgMy42IDQuNCA2LjcgNS44LTE1LjQuOS01Ny4zLS42LTY1LjQtMzIuMyAxNS43LTE3LjMgNDQuNC0zNy41IDkzLjctNjIuNi0zOC40IDEyLjgtNzMgMzAtMTAyIDUzLjUtMzQuMy0xNS45LTEwLjgtNTUuOSA1LjgtNzEuOHptLTM0LjQgMTE0LjZjMjQuMi0uMyA1NC4xIDE3LjggNTQgMzQuNy0uMSAxNS0yMSAyNy4xLTUzLjggMjYuOS0zMi4xLS40LTUzLjctMTUuMi01My42LTI5LjggMC0xMS45IDI2LjItMzIuNSA1My40LTMxLjh6bS0xMjMtMTIuOGMzLjctLjcgNS40LTEuNSA3LjEtNC4xLTktMi44LTE4LjctNS4zLTI0LjQtMTAgMy4xIDAgNiAuNyAxMC0yLjEtOC4xLTQuMy0xNi43LTcuNy0yMy40LTE0LjIgNC4yLS4xIDguNyAwIDEwLTEuNi03LjQtNC41LTEzLjYtOS41LTE4LjgtMTUgNS44LjcgOC4zLjEgOS43LS45LTUuNi01LjYtMTIuNy0xMC40LTE2LTE3LjMgNC4zIDEuNSA4LjMgMiAxMS4yLS4xLTEuOS00LjItMTAtNi43LTE0LjctMTYuNiA0LjYuNCA5LjQgMSAxMC40IDAtMi4xLTguNS01LjgtMTMuMy05LjMtMTguMiA5LjgtLjEgMjQuNiAwIDIzLjktLjhsLTYtNi4xYzkuNS0yLjUgMTkuMy40IDI2LjQgMi42IDMuMi0yLjUtLjEtNS42LTMuOS04LjggOC4xIDEuMSAxNS40IDIuOSAyMi4xIDUuNCAzLjUtMy4xLTIuMy02LjMtNS4xLTkuNCAxMi41IDIuMyAxNy44IDUuNiAyMy4xIDguOSAzLjgtMy42LjItNi43LTIuNC05LjggOS40IDMuNCAxNC4zIDcuOSAxOS40IDEyLjMgMS43LTIuMyA0LjQtNCAxLjItOS42IDYuNyAzLjggMTEuOCA4LjMgMTUuNSAxMy4zIDQuMS0yLjYgMi41LTYuMiAyLjUtOS40IDcgNS42IDExLjQgMTEuNSAxNi44IDE3LjMgMS4xLS44IDItMy40IDIuOS03LjYgMTYuNiAxNS45IDQwLjEgNTUuOSA2IDcxLjgtMjktMjMuNS02My42LTQwLjctMTAyLTUzLjUgNDkuMyAyNSA3OCA0NS4zIDkzLjcgNjIuNi04IDMxLjgtNTAgMzMuMi02NS40IDMyLjMgMy4xLTEuNCA1LjgtMy4yIDYuNy01LjgtNC0yLjgtMTcuNi0uNC0yNy4yLTUuNnptNjAuMSAyNC4xYzE2LjggMi44LTgwLjYgODYuNS04Mi4xIDY3LjktMS41LTQ4LjcgMzYuNS03NS41IDgyLjEtNjcuOXpNMzguMiAzNDJjLTIzLjctMTguOC0zMS4zLTczLjcgMTIuNi05OC4zIDI2LjUtNyA5IDEwNy44LTEyLjYgOTguM3ptOTEgOTguMmMtMTMuMyA3LjktNDUuOCA0LjctNjguOC0yNy45LTE1LjUtMjcuNC0xMy41LTU1LjItMi42LTYzLjQgMTYuMy05LjggNDEuNSAzLjQgNjAuOSAyNS42IDE2LjkgMjAgMjQuNiA1NS4zIDEwLjUgNjUuN3ptLTI2LjQtMTE5LjdjLTI0LjUtMTUuOC0yOC45LTUxLjYtOS45LTgwczU0LjMtMzguNiA3OC44LTIyLjggMjguOSA1MS42IDkuOSA4MGMtMTkuMSAyOC40LTU0LjQgMzguNi03OC44IDIyLjh6TTIwNSA0OTZjLTI5LjQgMS4yLTU4LjItMjMuNy01Ny44LTMyLjMtLjQtMTIuNyAzNS44LTIyLjYgNTkuMy0yMiAyMy43LTEgNTUuNiA3LjUgNTUuNyAxOC45LjUgMTEtMjguOCAzNS45LTU3LjIgMzUuNHptNTguOS0xMjQuOWMuMiAyOS43LTI2LjIgNTMuOC01OC44IDU0LTMyLjYuMi01OS4yLTIzLjgtNTkuNC01My40di0uNmMtLjItMjkuNyAyNi4yLTUzLjggNTguOC01NCAzMi42LS4yIDU5LjIgMjMuOCA1OS40IDUzLjR2LjZ6bTgyLjIgNDIuN2MtMjUuMyAzNC42LTU5LjYgMzUuOS03Mi4zIDI2LjMtMTMuMy0xMi40LTMuMi01MC45IDE1LjEtNzIgMjAuOS0yMy4zIDQzLjMtMzguNSA1OC45LTI2LjYgMTAuNSAxMC4zIDE2LjcgNDkuMS0xLjcgNzIuM3ptMjIuOS03My4yYy0yMS41IDkuNC0zOS0xMDUuMy0xMi42LTk4LjMgNDMuOSAyNC43IDM2LjMgNzkuNiAxMi42IDk4LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmF2ZWxyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMjUyLDIzNC4yMjNjLTEuMjA4LTEwLjM0LTEuNy0yMC44MjYtMy43NDYtMzFhMzEwLjMwNiwzMTAuMzA2LDAsMCwwLTkuNjIyLTM2LjYsMTg0LjA2OCwxODQuMDY4LDAsMCwwLTMwLjg3NC01Ny41LDI1MS4xNTQsMjUxLjE1NCwwLDAsMC0xOC44MTgtMjEuNjg5LDIzNy4zNjIsMjM3LjM2MiwwLDAsMC00Ny4xMTMtMzYuMTE2QTI0MC44LDI0MC44LDAsMCwwLDMzMS4zNTYsMjYuNjVjLTExLjAxOC0zLjEtMjIuMjcyLTUuNDMxLTMzLjUxNS03LjYxNS02Ljc4LTEuMzE0LTEzLjc0OS0xLjY2Ny0yMC42MjctMi40ODItLjMxNi0uMDM2LS42LS4zNTgtLjktLjU1M3EtMTYuMTQzLjAwOS0zMi4yODguMDA2Yy0yLjQxLjM4OS00LjgwOC45MjUtNy4yMzYsMS4xNWExNzkuMzMxLDE3OS4zMzEsMCwwLDAtMzQuMjU2LDcuMSwyMjEuNSwyMjEuNSwwLDAsMC0zOS43NjgsMTYuMzU1LDI4MS4zODUsMjgxLjM4NSwwLDAsMC0zOC4wOCwyNC4xNThjLTYuMTY3LDQuNjEtMTIuMjY4LDkuMzYtMTcuOTc0LDE0LjUxOEM5Ni41MzksODguNDk0LDg2LjM0LDk3LjcyLDc2Ljc4NSwxMDcuNTU1YTI0My44NzgsMjQzLjg3OCwwLDAsMC0zMy42NDgsNDMuOTUsMjA2LjQ4OCwyMDYuNDg4LDAsMCwwLTIwLjQ5NCw0NC42LDE5OC4yLDE5OC4yLDAsMCwwLTcuNjkxLDM0Ljc1OUEyMDEuMTMsMjAxLjEzLDAsMCwwLDEzLjQsMjY2LjM4NWEyOTkuNzE2LDI5OS43MTYsMCwwLDAsNC40MjUsNDAuMjQsMjI2Ljg2NSwyMjYuODY1LDAsMCwwLDE2LjczLDUzLjMsMjEwLjU0MywyMTAuNTQzLDAsMCwwLDI0LDM5LjUyOCwyMTMuNTg5LDIxMy41ODksMCwwLDAsMjYuMzU4LDI4LjQxNkEyNTEuMzEzLDI1MS4zMTMsMCwwLDAsMTI2LjcsNDU4LjQ1NWEyODcuODMxLDI4Ny44MzEsMCwwLDAsNTUuOSwyNS4yNzcsMjY5LjUsMjY5LjUsMCwwLDAsNDAuNjQxLDkuODM1YzYuMDcxLDEuMDEsMTIuMjc1LDEuMjUzLDE4LjQxMiwxLjg3M2E0LjE0OSw0LjE0OSwwLDAsMSwxLjE5LjU2aDMyLjI4OWMyLjUwNy0uMzg5LDUtLjkzNyw3LjUyNy0xLjE0MywxNi4zMzYtMS4zMzIsMzIuMTA3LTUuMzM1LDQ3LjQ4OS0xMC43MTdBMjE5Ljk5MiwyMTkuOTkyLDAsMCwwLDM3OS4xLDQ2MC4zMjJjOS43NDktNi40NDcsMTkuMzk1LTEzLjA3NywyOC43MzctMjAuMSw1Ljc4NS00LjM0OCwxMC45ODgtOS41LDE2LjMtMTQuNDU3LDMuOTY0LTMuNyw3Ljc2NC03LjU3OCwxMS41MS0xMS41YTIzMi4xNjIsMjMyLjE2MiwwLDAsMCwzMS40MjctNDEuNjM5YzkuNTQyLTE2LjA0NSwxNy4zNTUtMzIuOTA1LDIyLjMtNTAuOTI2LDIuODU5LTEwLjQxMyw0Ljk0Ny0yMS4wNDUsNy4wMTctMzEuNjUyLDEuMDMyLTUuMjc5LDEuMjUxLTEwLjcyMywxLjg3LTE2LjA4Ny4wMzYtLjMxNy4zNTgtLjYuNTUyLS45VjIzNi4wMDVBOS43NTcsOS43NTcsMCwwLDEsNDk4LjI1MiwyMzQuMjIzWm0tMTYxLjExNy0xLjE1cy0xNi41NzItMi45OC0yOC40Ny0yLjk4Yy0yNy4yLDAtMzMuNTcsMTQuOS0zMy41NywzNy4wNFYzNjAuOEgyMDEuNTgyVjE3MC4wNjJIMjc1LjF2MzEuOTMxYzguOTI0LTI2LjgyMiwyNi43NzEtMzYuMTg5LDYyLjA0LTM2LjE4OVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTguMiAxNzcuMmMtNS40LTEuOC0xMC44LTMuNS0xNi4yLTUuMS45LTMuNyAxLjctNy40IDIuNS0xMS4xIDEyLjMtNTkuNiA0LjItMTA3LjUtMjMuMS0xMjMuMy0yNi4zLTE1LjEtNjkuMi42LTExMi42IDM4LjQtNC4zIDMuNy04LjUgNy42LTEyLjUgMTEuNS0yLjctMi42LTUuNS01LjItOC4zLTcuNy00NS41LTQwLjQtOTEuMS01Ny40LTExOC40LTQxLjUtMjYuMiAxNS4yLTM0IDYwLjMtMjMgMTE2LjcgMS4xIDUuNiAyLjMgMTEuMSAzLjcgMTYuNy02LjQgMS44LTEyLjcgMy44LTE4LjYgNS45QzM4LjMgMTk2LjIgMCAyMjUuNCAwIDI1NS42YzAgMzEuMiA0MC44IDYyLjUgOTYuMyA4MS41IDQuNSAxLjUgOSAzIDEzLjYgNC4zLTEuNSA2LTIuOCAxMS45LTQgMTgtMTAuNSA1NS41LTIuMyA5OS41IDIzLjkgMTE0LjYgMjcgMTUuNiA3Mi40LS40IDExNi42LTM5LjEgMy41LTMuMSA3LTYuMyAxMC41LTkuNyA0LjQgNC4zIDkgOC40IDEzLjYgMTIuNCA0Mi44IDM2LjggODUuMSA1MS43IDExMS4yIDM2LjYgMjctMTUuNiAzNS44LTYyLjkgMjQuNC0xMjAuNS0uOS00LjQtMS45LTguOS0zLTEzLjUgMy4yLS45IDYuMy0xLjkgOS40LTIuOSA1Ny43LTE5LjEgOTkuNS01MCA5OS41LTgxLjcgMC0zMC4zLTM5LjQtNTkuNy05My44LTc4LjR6TTI4Mi45IDkyLjNjMzcuMi0zMi40IDcxLjktNDUuMSA4Ny43LTM2IDE2LjkgOS43IDIzLjQgNDguOSAxMi44IDEwMC40LS43IDMuNC0xLjQgNi43LTIuMyAxMC0yMi4yLTUtNDQuNy04LjYtNjcuMy0xMC42LTEzLTE4LjYtMjcuMi0zNi40LTQyLjYtNTMuMSAzLjktMy43IDcuNy03LjIgMTEuNy0xMC43ek0xNjcuMiAzMDcuNWM1LjEgOC43IDEwLjMgMTcuNCAxNS44IDI1LjktMTUuNi0xLjctMzEuMS00LjItNDYuNC03LjUgNC40LTE0LjQgOS45LTI5LjMgMTYuMy00NC41IDQuNiA4LjggOS4zIDE3LjUgMTQuMyAyNi4xem0tMzAuMy0xMjAuM2MxNC40LTMuMiAyOS43LTUuOCA0NS42LTcuOC01LjMgOC4zLTEwLjUgMTYuOC0xNS40IDI1LjQtNC45IDguNS05LjcgMTcuMi0xNC4yIDI2LTYuMy0xNC45LTExLjYtMjkuNS0xNi00My42em0yNy40IDY4LjljNi42LTEzLjggMTMuOC0yNy4zIDIxLjQtNDAuNnMxNS44LTI2LjIgMjQuNC0zOC45YzE1LTEuMSAzMC4zLTEuNyA0NS45LTEuN3MzMSAuNiA0NS45IDEuN2M4LjUgMTIuNiAxNi42IDI1LjUgMjQuMyAzOC43czE0LjkgMjYuNyAyMS43IDQwLjRjLTYuNyAxMy44LTEzLjkgMjcuNC0yMS42IDQwLjgtNy42IDEzLjMtMTUuNyAyNi4yLTI0LjIgMzktMTQuOSAxLjEtMzAuNCAxLjYtNDYuMSAxLjZzLTMwLjktLjUtNDUuNi0xLjRjLTguNy0xMi43LTE2LjktMjUuNy0yNC42LTM5cy0xNC44LTI2LjgtMjEuNS00MC42em0xODAuNiA1MS4yYzUuMS04LjggOS45LTE3LjcgMTQuNi0yNi43IDYuNCAxNC41IDEyIDI5LjIgMTYuOSA0NC4zLTE1LjUgMy41LTMxLjIgNi4yLTQ3IDggNS40LTguNCAxMC41LTE3IDE1LjUtMjUuNnptMTQuNC03Ni41Yy00LjctOC44LTkuNS0xNy42LTE0LjUtMjYuMi00LjktOC41LTEwLTE2LjktMTUuMy0yNS4yIDE2LjEgMiAzMS41IDQuNyA0NS45IDgtNC42IDE0LjgtMTAgMjkuMi0xNi4xIDQzLjR6TTI1Ni4yIDExOC4zYzEwLjUgMTEuNCAyMC40IDIzLjQgMjkuNiAzNS44LTE5LjgtLjktMzkuNy0uOS01OS41IDAgOS44LTEyLjkgMTkuOS0yNC45IDI5LjktMzUuOHpNMTQwLjIgNTdjMTYuOC05LjggNTQuMSA0LjIgOTMuNCAzOSAyLjUgMi4yIDUgNC42IDcuNiA3LTE1LjUgMTYuNy0yOS44IDM0LjUtNDIuOSA1My4xLTIyLjYgMi00NSA1LjUtNjcuMiAxMC40LTEuMy01LjEtMi40LTEwLjMtMy41LTE1LjUtOS40LTQ4LjQtMy4yLTg0LjkgMTIuNi05NHptLTI0LjUgMjYzLjZjLTQuMi0xLjItOC4zLTIuNS0xMi40LTMuOS0yMS4zLTYuNy00NS41LTE3LjMtNjMtMzEuMi0xMC4xLTctMTYuOS0xNy44LTE4LjgtMjkuOSAwLTE4LjMgMzEuNi00MS43IDc3LjItNTcuNiA1LjctMiAxMS41LTMuOCAxNy4zLTUuNSA2LjggMjEuNyAxNSA0MyAyNC41IDYzLjYtOS42IDIwLjktMTcuOSA0Mi41LTI0LjggNjQuNXptMTE2LjYgOThjLTE2LjUgMTUuMS0zNS42IDI3LjEtNTYuNCAzNS4zLTExLjEgNS4zLTIzLjkgNS44LTM1LjMgMS4zLTE1LjktOS4yLTIyLjUtNDQuNS0xMy41LTkyIDEuMS01LjYgMi4zLTExLjIgMy43LTE2LjcgMjIuNCA0LjggNDUgOC4xIDY3LjkgOS44IDEzLjIgMTguNyAyNy43IDM2LjYgNDMuMiA1My40LTMuMiAzLjEtNi40IDYuMS05LjYgOC45em0yNC41LTI0LjNjLTEwLjItMTEtMjAuNC0yMy4yLTMwLjMtMzYuMyA5LjYuNCAxOS41LjYgMjkuNS42IDEwLjMgMCAyMC40LS4yIDMwLjQtLjctOS4yIDEyLjctMTkuMSAyNC44LTI5LjYgMzYuNHptMTMwLjcgMzBjLS45IDEyLjItNi45IDIzLjYtMTYuNSAzMS4zLTE1LjkgOS4yLTQ5LjgtMi44LTg2LjQtMzQuMi00LjItMy42LTguNC03LjUtMTIuNy0xMS41IDE1LjMtMTYuOSAyOS40LTM0LjggNDIuMi01My42IDIyLjktMS45IDQ1LjctNS40IDY4LjItMTAuNSAxIDQuMSAxLjkgOC4yIDIuNyAxMi4yIDQuOSAyMS42IDUuNyA0NC4xIDIuNSA2Ni4zem0xOC4yLTEwNy41Yy0yLjguOS01LjYgMS44LTguNSAyLjYtNy0yMS44LTE1LjYtNDMuMS0yNS41LTYzLjggOS42LTIwLjQgMTcuNy00MS40IDI0LjUtNjIuOSA1LjIgMS41IDEwLjIgMy4xIDE1IDQuNyA0Ni42IDE2IDc5LjMgMzkuOCA3OS4zIDU4IDAgMTkuNi0zNC45IDQ0LjktODQuOCA2MS40em0tMTQ5LjctMTVjMjUuMyAwIDQ1LjgtMjAuNSA0NS44LTQ1LjhzLTIwLjUtNDUuOC00NS44LTQ1LjhjLTI1LjMgMC00NS44IDIwLjUtNDUuOCA0NS44czIwLjUgNDUuOCA0NS44IDQ1Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVhY3RldXJvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjUwLjYgMjExLjc0bDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xLTIuMy02LjgtMi4zIDYuOC03LjIuMSA1LjcgNC4zem02My43IDBsNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuMy03LjItLjEtMi4zLTYuOC0yLjMgNi44LTcuMi4xIDUuNyA0LjN6bS05MS4zIDUwLjVoLTMuNGMtNC44IDAtMy44IDQtMy44IDEyLjEgMCA0LjctMi4zIDYuMS01LjggNi4xcy01LjgtMS40LTUuOC02LjF2LTM2LjZjMC00LjcgMi4zLTYuMSA1LjgtNi4xczUuOCAxLjQgNS44IDYuMWMwIDcuMi0uNyAxMC41IDMuOCAxMC41aDMuNGM0LjctLjEgMy44LTMuOSAzLjgtMTIuMyAwLTkuOS02LjctMTQuMS0xNi44LTE0LjFoLS4yYy0xMC4xIDAtMTYuOCA0LjItMTYuOCAxNC4xVjI3NmMwIDEwLjQgNi43IDE0LjEgMTYuOCAxNC4xaC4yYzEwLjEgMCAxNi44LTMuOCAxNi44LTE0LjEgMC05Ljg2IDEuMS0xMy43Ni0zLjgtMTMuNzZ6bS04MC43IDE3LjRoLTE0Ljd2LTE5LjNIMTM5YzIuNSAwIDMuOC0xLjMgMy44LTMuOHYtMi4xYzAtMi41LTEuMy0zLjgtMy44LTMuOGgtMTEuNHYtMTguM0gxNDJjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yMS43Yy0yLjQtLjEtMy43IDEuMy0zLjcgMy44djU5LjFjMCAyLjUgMS4zIDMuOCAzLjggMy44aDIxLjljMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44em0tNDItMTguNWM0LjYtMiA3LjMtNiA3LjMtMTIuNHYtMTEuOWMwLTEwLjEtNi43LTE0LjEtMTYuOC0xNC4xSDc3LjRjLTIuNSAwLTMuOCAxLjMtMy44IDMuOHY1OS4xYzAgMi41IDEuMyAzLjggMy44IDMuOGgzLjRjMi41IDAgMy44LTEuMyAzLjgtMy44di0yMi45aDUuNmw3LjQgMjMuNWE0LjEgNC4xIDAgMCAwIDQuMyAzLjJoMy4zYzIuOCAwIDQtMS44IDMuMi00LjR6bS0zLjgtMTRjMCA0LjgtMi41IDYuMS02LjEgNi4xaC01Ljh2LTIwLjloNS44YzMuNiAwIDYuMSAxLjMgNi4xIDYuMXpNMTc2IDIyNmEzLjgyIDMuODIgMCAwIDAtNC4yLTMuNGgtNi45YTMuNjggMy42OCAwIDAgMC00IDMuNGwtMTEgNTkuMmMtLjUgMi43LjkgNC4xIDMuNCA0LjFoM2EzLjc0IDMuNzQgMCAwIDAgNC4xLTMuNWwxLjgtMTEuM2gxMi4ybDEuOCAxMS4zYTMuNzQgMy43NCAwIDAgMCA0LjEgMy41aDMuNWMyLjYgMCAzLjktMS40IDMuNC00LjF6bS0xMi4zIDM5LjNsNC43LTI5LjcgNC43IDI5Ljd6bTg5LjMgMjAuMnYtNTMuMmg3LjVjMi41IDAgMy44LTEuMyAzLjgtMy44di0yLjFjMC0yLjUtMS4zLTMuOC0zLjgtMy44aC0yNS44Yy0yLjUgMC0zLjggMS4zLTMuOCAzLjh2Mi4xYzAgMi41IDEuMyAzLjggMy44IDMuOGg3LjN2NTMuMmMwIDIuNSAxLjMgMy44IDMuOCAzLjhoMy40YzIuNS4wNCAzLjgtMS4zIDMuOC0zLjc2em0yNDgtLjhoLTE5LjRWMjU4aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjYyIDEuNjIgMCAwIDAtMiAxLjh2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45SDUwMWExLjgxIDEuODEgMCAwIDAgMi0xLjl2LS44YTEuODQgMS44NCAwIDAgMC0yLTEuOTZ6bS05My4xLTYyLjloLS44Yy0xMC4xIDAtMTUuMyA0LjctMTUuMyAxNC4xVjI3NmMwIDkuMyA1LjIgMTQuMSAxNS4zIDE0LjFoLjhjMTAuMSAwIDE1LjMtNC44IDE1LjMtMTQuMXYtNDAuMWMwLTkuMzYtNS4yLTE0LjA2LTE1LjMtMTQuMDZ6bTEwLjIgNTIuNGMtLjEgOC0zIDExLjEtMTAuNSAxMS4xcy0xMC41LTMuMS0xMC41LTExLjF2LTM2LjZjMC03LjkgMy0xMS4xIDEwLjUtMTEuMXMxMC41IDMuMiAxMC41IDExLjF6bS00Ni41LTE0LjVjNi4xLTEuNiA5LjItNi4xIDkuMi0xMy4zdi05LjdjMC05LjQtNS4yLTE0LjEtMTUuMy0xNC4xaC0xMy43YTEuODEgMS44MSAwIDAgMC0yIDEuOXY2M2ExLjgxIDEuODEgMCAwIDAgMiAxLjloMS4yYTEuNzQgMS43NCAwIDAgMCAxLjktMS45di0yNi45aDExLjZsMTAuNCAyNy4yYTIuMzIgMi4zMiAwIDAgMCAyLjMgMS41aDEuNWMxLjQgMCAyLTEgMS41LTIuM3ptLTYuNC0zLjlIMzU1di0yOC41aDEwLjJjNy41IDAgMTAuNSAzLjEgMTAuNSAxMS4xdjYuNGMwIDcuODQtMyAxMS4wNC0xMC41IDExLjA0em04NS45LTMzLjFoLTEzLjdhMS42MiAxLjYyIDAgMCAwLTIgMS44djYzYTEuODEgMS44MSAwIDAgMCAyIDEuOWgxLjJhMS43NCAxLjc0IDAgMCAwIDEuOS0xLjl2LTI2LjFoMTAuNmMxMC4xIDAgMTUuMy00LjggMTUuMy0xNC4xdi0xMC41YzAtOS40LTUuMi0xNC4xLTE1LjMtMTQuMXptMTAuMiAyMi44YzAgNy45LTMgMTEuMS0xMC41IDExLjFoLTEwLjJ2LTI5LjJoMTAuMmM3LjUtLjEgMTAuNSAzLjEgMTAuNSAxMXpNMjU5LjUgMzA4bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTIyNy42LTEzNi4xYTM2NC40MiAzNjQuNDIgMCAwIDAtMzUuNi0xMS4zYzE5LjYtNzggMTEuNi0xMzQuNy0yMi4zLTE1My45QzM5NC43LTEyLjY2IDM0My4zIDExIDI5MSA2MS45NHE1LjEgNC45NSAxMC4yIDEwLjJjODIuNS04MCAxMTkuNi01My41IDEyMC45LTUyLjggMjIuNCAxMi43IDM2IDU1LjggMTUuNSAxMzcuOGE1ODcuODMgNTg3LjgzIDAgMCAwLTg0LjYtMTNDMjgxLjEgNDMuNjQgMjEyLjQgMiAxNzAuOCAyIDE0MCAyIDEyNyAyMyAxMjMuMiAyOS43NGMtMTguMSAzMi0xMy4zIDg0LjIuMSAxMzMuOC03MC41IDIwLjMtMTIwLjcgNTQuMS0xMjAuMyA5NSAuNSA1OS42IDEwMy4yIDg3LjggMTIyLjEgOTIuOC0yMC41IDgxLjktMTAuMSAxMzUuNiAyMi4zIDE1My45IDI4IDE1LjggNzUuMSA2IDEzOC4yLTU1LjJxLTUuMS00Ljk1LTEwLjItMTAuMmMtODIuNSA4MC0xMTkuNyA1My41LTEyMC45IDUyLjgtMjIuMy0xMi42LTM2LTU1LjYtMTUuNS0xMzcuOSAxMi40IDIuOSA0MS44IDkuNSA4NC42IDEzIDcxLjkgMTAwLjQgMTQwLjYgMTQyIDE4Mi4xIDE0MiAzMC44IDAgNDMuOC0yMSA0Ny42LTI3LjcgMTgtMzEuOSAxMy4zLTg0LjEtLjEtMTMzLjggMTUyLjMtNDMuOCAxNTYuMi0xMzAuMiAzMy45LTE3Ni4zek0xMzUuOSAzNi44NGMyLjktNS4xIDExLjktMjAuMyAzNC45LTIwLjMgMzYuOCAwIDk4LjggMzkuNiAxNjMuMyAxMjYuMmE3MTQgNzE0IDAgMCAwLTkzLjkuOSA1NDcuNzYgNTQ3Ljc2IDAgMCAxIDQyLjItNTIuNFEyNzcuMyA4NiAyNzIuMiA4MWE1OTguMjUgNTk4LjI1IDAgMCAwLTUwLjcgNjQuMiA1NjkuNjkgNTY5LjY5IDAgMCAwLTg0LjQgMTQuNmMtLjItMS40LTI0LjMtODIuMi0xLjItMTIzem0zMDQuOCA0MzguM2MtMi45IDUuMS0xMS44IDIwLjMtMzQuOSAyMC4zLTM2LjcgMC05OC43LTM5LjQtMTYzLjMtMTI2LjJhNjk1LjM4IDY5NS4zOCAwIDAgMCA5My45LS45IDU0Ny43NiA1NDcuNzYgMCAwIDEtNDIuMiA1Mi40cTUuMSA1LjI1IDEwLjIgMTAuMmE1ODguNDcgNTg4LjQ3IDAgMCAwIDUwLjctNjQuMmM0Ny4zLTQuNyA4MC4zLTEzLjUgODQuNC0xNC42IDIyLjcgODQuNCA0LjUgMTE3IDEuMiAxMjN6bTkuMS0xMzguNmMtMy42LTExLjktNy43LTI0LjEtMTIuNC0zNi40YTEyLjY3IDEyLjY3IDAgMCAxLTEwLjctNS43bC0uMS4xYTE5LjYxIDE5LjYxIDAgMCAxLTUuNCAzLjZjNS43IDE0LjMgMTAuNiAyOC40IDE0LjcgNDIuMmE1MzUuMyA1MzUuMyAwIDAgMS03MiAxM2MzLjUtNS4zIDE3LjItMjYuMiAzMi4yLTU0LjJhMjQuNiAyNC42IDAgMCAxLTYtMy4yYy0xLjEgMS4yLTMuNiA0LjItMTAuOSA0LjItNi4yIDExLjItMTcuNCAzMC45LTMzLjkgNTUuMmE3MTEuOTEgNzExLjkxIDAgMCAxLTExMi40IDFjLTcuOS0xMS4yLTIxLjUtMzEuMS0zNi44LTU3LjhhMjEgMjEgMCAwIDEtMy0xLjVjLTEuOSAxLjYtMy45IDMuMi0xMi42IDMuMiA2LjMgMTEuMiAxNy41IDMwLjcgMzMuOCA1NC42YTU0OC44MSA1NDguODEgMCAwIDEtNzIuMi0xMS43cTUuODUtMjEgMTQuMS00Mi45Yy0zLjIgMC01LjQuMi04LjQtMWExNy41OCAxNy41OCAwIDAgMS02LjkgMWMtNC45IDEzLjQtOS4xIDI2LjUtMTIuNyAzOS40Qy0zMS43IDI5Ny0xMi4xIDIxNiAxMjYuNyAxNzUuNjRjMy42IDExLjkgNy43IDI0LjEgMTIuNCAzNi40IDEwLjQgMCAxMi45IDMuNCAxNC40IDUuM2ExMiAxMiAwIDAgMSAyLjMtMi4yYy01LjgtMTQuNy0xMC45LTI5LjItMTUuMi00My4zIDctMS44IDMyLjQtOC40IDcyLTEzLTE1LjkgMjQuMy0yNi43IDQzLjktMzIuOCA1NS4zYTE0LjIyIDE0LjIyIDAgMCAxIDYuNCA4IDIzLjQyIDIzLjQyIDAgMCAxIDEwLjItOC40YzYuNS0xMS43IDE3LjktMzEuOSAzNC44LTU2LjlhNzExLjcyIDcxMS43MiAwIDAgMSAxMTIuNC0xYzMxLjUgNDQuNiAyOC45IDQ4LjEgNDIuNSA2NC41YTIxLjQyIDIxLjQyIDAgMCAxIDEwLjQtNy40Yy02LjQtMTEuNC0xNy42LTMxLTM0LjMtNTUuNSA0MC40IDQuMSA2NSAxMCA3Mi4yIDExLjctNCAxNC40LTguOSAyOS4yLTE0LjYgNDQuMmEyMC43NCAyMC43NCAwIDAgMSA2LjggNC4zbC4xLjFhMTIuNzIgMTIuNzIgMCAwIDEgOC45LTUuNmM0LjktMTMuNCA5LjItMjYuNiAxMi44LTM5LjVhMzU5LjcxIDM1OS43MSAwIDAgMSAzNC41IDExYzEwNi4xIDM5LjkgNzQgODcuOSA3Mi42IDkwLjQtMTkuOCAzNS4xLTgwLjEgNTUuMi0xMDUuNyA2Mi41em0tMTE0LjQtMTE0aC0xLjJhMS43NCAxLjc0IDAgMCAwLTEuOSAxLjl2NDkuOGMwIDcuOS0yLjYgMTEuMS0xMC4xIDExLjFzLTEwLjEtMy4xLTEwLjEtMTEuMXYtNDkuOGExLjY5IDEuNjkgMCAwIDAtMS45LTEuOUgzMDlhMS44MSAxLjgxIDAgMCAwLTIgMS45djUxLjVjMCA5LjYgNSAxNC4xIDE1LjEgMTQuMWguNGMxMC4xIDAgMTUuMS00LjYgMTUuMS0xNC4xdi01MS41YTIgMiAwIDAgMC0yLjItMS45ek0zMjEuNyAzMDhsLTIuMy02LjgtMi4zIDYuOC03LjEuMSA1LjcgNC4zLTIuMSA2LjggNS44LTQuMSA1LjggNC4xLTIuMS02LjggNS43LTQuM3ptLTMxLjEgNy40bC0yLjMtNi44LTIuMyA2LjgtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjN6bTUuMS0zMC44aC0xOS40di0yNi43aDE2LjFhMS44OSAxLjg5IDAgMCAwIDItMnYtLjhhMS44OSAxLjg5IDAgMCAwLTItMmgtMTYuMXYtMjUuOGgxOS4xYTEuODkgMS44OSAwIDAgMCAyLTJ2LS44YTEuNzcgMS43NyAwIDAgMC0yLTEuOWgtMjIuMmExLjgxIDEuODEgMCAwIDAtMiAxLjl2NjNhMS44MSAxLjgxIDAgMCAwIDIgMS45aDIyLjVhMS43NyAxLjc3IDAgMCAwIDItMS45di0uOGExLjgzIDEuODMgMCAwIDAtMi0yLjA2em0tNy40LTk5LjRMMjg2IDE5MmwtNy4xLjEgNS43IDQuMy0yLjEgNi44IDUuOC00LjEgNS44IDQuMS0yLjEtNi44IDUuNy00LjMtNy4xLS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlYWRtZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMyA0Ni41SDM4OC41Yy00OC4xIDAtODkuOSAzMy4zLTEwMC40IDgwLjMtMTAuNi00Ny01Mi4zLTgwLjMtMTAwLjQtODAuM0g0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MjQ1LjhjMCAyNi41IDIxLjUgNDggNDggNDhoODkuN2MxMDIuMiAwIDEzMi43IDI0LjQgMTQ3LjMgNzUgLjcgMi44IDUuMiAyLjggNiAwIDE0LjctNTAuNiA0NS4yLTc1IDE0Ny4zLTc1SDUyOGMyNi41IDAgNDgtMjEuNSA0OC00OFY5NC42YzAtMjYuNC0yMS4zLTQ3LjktNDcuNy00OC4xek0yNDIgMzExLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyODljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDc4LjJjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41VjI1MXptMC02MC45YzAgMS45LTEuNSAzLjUtMy41IDMuNUg3OC4yYy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjljMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0yNTkuMyAxMjEuN2MwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNXYtMjIuOWMwLTEuOSAxLjUtMy41IDMuNS0zLjVoMTYwLjRjMS45IDAgMy41IDEuNSAzLjUgMy41djIyLjl6bTAtNjAuOWMwIDEuOS0xLjUgMy41LTMuNSAzLjVIMzM3LjVjLTEuOSAwLTMuNS0xLjUtMy41LTMuNVYyMjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNXYyMi45em0wLTYwLjljMCAxLjktMS41IDMuNS0zLjUgMy41SDMzNy41Yy0xLjkgMC0zLjUtMS41LTMuNS0zLjV2LTIyLjhjMC0xLjkgMS41LTMuNSAzLjUtMy41aDE2MC40YzEuOSAwIDMuNSAxLjUgMy41IDMuNVYxOTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmViZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjUgNTA0QzExNy4yIDUwNCA5IDM4Ny44IDEzLjIgMjQ5LjkgMTYgMTcwLjcgNTYuNCA5Ny43IDEyOS43IDQ5LjVjLjMgMCAxLjktLjYgMS4xLjgtNS44IDUuNS0xMTEuMyAxMjkuOC0xNC4xIDIyNi40IDQ5LjggNDkuNSA5MCAyLjUgOTAgMi41IDM4LjUtNTAuMS0uNi0xMjUuOS0uNi0xMjUuOS0xMC0yNC45LTQ1LjctNDAuMS00NS43LTQwLjFsMjguOC0zMS44YzI0LjQgMTAuNSA0My4yIDM4LjcgNDMuMiAzOC43LjgtMjkuNi0yMS45LTYxLjQtMjEuOS02MS40TDI1NS4xIDhsNDQuMyA1MC4xYy0yMC41IDI4LjgtMjEuOSA2Mi42LTIxLjkgNjIuNiAxMy44LTIzIDQzLjUtMzkuMyA0My41LTM5LjNsMjguNSAzMS44Yy0yNy40IDguOS00NS40IDM5LjktNDUuNCAzOS45LTE1LjggMjguNS0yNy4xIDg5LjQuNiAxMjcuMyAzMi40IDQ0LjYgODcuNy0yLjggODcuNy0yLjggMTAyLjctOTEuOS0xMC41LTIyNS0xMC41LTIyNS02LjEtNS41LjgtMi44LjgtMi44IDUwLjEgMzYuNSAxMTQuNiA4NC40IDExNi4yIDIwNC44QzUwMC45IDQwMC4yIDM5OSA1MDQgMjU2LjUgNTA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZFJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1My4yIDMySDk0LjhDNDIuNCAzMiAwIDc0LjQgMCAxMjYuOHYyNTguNEMwIDQzNy42IDQyLjQgNDgwIDk0LjggNDgwaDI1OC40YzUyLjQgMCA5NC44LTQyLjQgOTQuOC05NC44VjEyNi44YzAtNTIuNC00Mi40LTk0LjgtOTQuOC05NC44ek0xNDQuOSAyMDAuOXY1Ni4zYzAgMjctMjEuOSA0OC45LTQ4LjkgNDguOVYxNTEuOWMwLTEzLjIgMTAuNy0yMy45IDIzLjktMjMuOWgxNTQuMmMwIDI3LTIxLjkgNDguOS00OC45IDQ4LjloLTU2LjNjLTEyLjMtLjYtMjQuNiAxMS42LTI0IDI0em0xNzYuMyA3MmgtNTYuM2MtMTIuMy0uNi0yNC42IDExLjYtMjQgMjR2NTYuM2MwIDI3LTIxLjkgNDguOS00OC45IDQ4LjlWMjQ3LjljMC0xMy4yIDEwLjctMjMuOSAyMy45LTIzLjloMTU0LjJjMCAyNy0yMS45IDQ4LjktNDguOSA0OC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZGRpdEFsaWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDIwMy41Yy0xNSAwLTI4LjIgNi4yLTM3LjkgMTUuOS0zNS43LTI0LjctODMuOC00MC42LTEzNy4xLTQyLjNMMjkzIDUyLjNsODguMiAxOS44YzAgMjEuNiAxNy42IDM5LjIgMzkuMiAzOS4yIDIyIDAgMzkuNy0xOC4xIDM5LjctMzkuN3MtMTcuNi0zOS43LTM5LjctMzkuN2MtMTUuNCAwLTI4LjcgOS4zLTM1LjMgMjJsLTk3LjQtMjEuNmMtNC45LTEuMy05LjcgMi4yLTExIDcuMUwyNDYuMyAxNzdjLTUyLjkgMi4yLTEwMC41IDE4LjEtMTM2LjMgNDIuOC05LjctMTAuMS0yMy40LTE2LjMtMzguNC0xNi4zLTU1LjYgMC03My44IDc0LjYtMjIuOSAxMDAuMS0xLjggNy45LTIuNiAxNi4zLTIuNiAyNC43IDAgODMuOCA5NC40IDE1MS43IDIxMC4zIDE1MS43IDExNi40IDAgMjEwLjgtNjcuOSAyMTAuOC0xNTEuNyAwLTguNC0uOS0xNy4yLTMuMS0yNS4xIDQ5LjktMjUuNiAzMS41LTk5LjctMjMuOC05OS43ek0xMjkuNCAzMDguOWMwLTIyIDE3LjYtMzkuNyAzOS43LTM5LjcgMjEuNiAwIDM5LjIgMTcuNiAzOS4yIDM5LjcgMCAyMS42LTE3LjYgMzkuMi0zOS4yIDM5LjItMjIgLjEtMzkuNy0xNy42LTM5LjctMzkuMnptMjE0LjMgOTMuNWMtMzYuNCAzNi40LTEzOS4xIDM2LjQtMTc1LjUgMC00LTMuNS00LTkuNyAwLTEzLjcgMy41LTMuNSA5LjctMy41IDEzLjIgMCAyNy44IDI4LjUgMTIwIDI5IDE0OSAwIDMuNS0zLjUgOS43LTMuNSAxMy4yIDAgNC4xIDQgNC4xIDEwLjIuMSAxMy43em0tLjgtNTQuMmMtMjEuNiAwLTM5LjItMTcuNi0zOS4yLTM5LjIgMC0yMiAxNy42LTM5LjcgMzkuMi0zOS43IDIyIDAgMzkuNyAxNy42IDM5LjcgMzkuNy0uMSAyMS41LTE3LjcgMzkuMi0zOS43IDM5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4My4yIDM0NS41YzIuNyAyLjcgMi43IDYuOCAwIDkuMi0yNC41IDI0LjUtOTMuOCAyNC42LTExOC40IDAtMi43LTIuNC0yLjctNi41IDAtOS4yIDIuNC0yLjQgNi41LTIuNCA4LjkgMCAxOC43IDE5LjIgODEgMTkuNiAxMDAuNSAwIDIuNC0yLjMgNi42LTIuMyA5IDB6bS05MS4zLTUzLjhjMC0xNC45LTExLjktMjYuOC0yNi41LTI2LjgtMTQuOSAwLTI2LjggMTEuOS0yNi44IDI2LjggMCAxNC42IDExLjkgMjYuNSAyNi44IDI2LjUgMTQuNiAwIDI2LjUtMTEuOSAyNi41LTI2LjV6bTkwLjctMjYuOGMtMTQuNiAwLTI2LjUgMTEuOS0yNi41IDI2LjggMCAxNC42IDExLjkgMjYuNSAyNi41IDI2LjUgMTQuOSAwIDI2LjgtMTEuOSAyNi44LTI2LjUgMC0xNC45LTExLjktMjYuOC0yNi44LTI2Ljh6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTk5LjcgMTQwLjZjLTEwLjEgMC0xOSA0LjItMjUuNiAxMC43LTI0LjEtMTYuNy01Ni41LTI3LjQtOTIuNS0yOC42bDE4LjctODQuMiA1OS41IDEzLjRjMCAxNC42IDExLjkgMjYuNSAyNi41IDI2LjUgMTQuOSAwIDI2LjgtMTIuMiAyNi44LTI2LjggMC0xNC42LTExLjktMjYuOC0yNi44LTI2LjgtMTAuNCAwLTE5LjMgNi4yLTIzLjggMTQuOWwtNjUuNy0xNC42Yy0zLjMtLjktNi41IDEuNS03LjQgNC44bC0yMC41IDkyLjhjLTM1LjcgMS41LTY3LjggMTIuMi05MS45IDI4LjktNi41LTYuOC0xNS44LTExLTI1LjktMTEtMzcuNSAwLTQ5LjggNTAuNC0xNS41IDY3LjUtMS4yIDUuNC0xLjggMTEtMS44IDE2LjcgMCA1Ni41IDYzLjcgMTAyLjMgMTQxLjkgMTAyLjMgNzguNSAwIDE0Mi4yLTQ1LjggMTQyLjItMTAyLjMgMC01LjctLjYtMTEuNi0yLjEtMTcgMzMuNi0xNy4yIDIxLjItNjcuMi0xNi4xLTY3LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDMwNS41Yy0xMy44IDAtMjQuOS0xMS4xLTI0LjktMjQuNiAwLTEzLjggMTEuMS0yNC45IDI0LjktMjQuOSAxMy42IDAgMjQuNiAxMS4xIDI0LjYgMjQuOSAwIDEzLjYtMTEuMSAyNC42LTI0LjYgMjQuNnpNNTA0IDI1NmMwIDEzNy0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTYgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4em0tMTMyLjMtNDEuMmMtOS40IDAtMTcuNyAzLjktMjMuOCAxMC0yMi40LTE1LjUtNTIuNi0yNS41LTg2LjEtMjYuNmwxNy40LTc4LjMgNTUuNCAxMi41YzAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjMgMjQuOS0yNC45cy0xMS4xLTI0LjktMjQuOS0yNC45Yy05LjcgMC0xOCA1LjgtMjIuMSAxMy44bC02MS4yLTEzLjZjLTMtLjgtNi4xIDEuNC02LjkgNC40bC0xOS4xIDg2LjRjLTMzLjIgMS40LTYzLjEgMTEuMy04NS41IDI2LjgtNi4xLTYuNC0xNC43LTEwLjItMjQuMS0xMC4yLTM0LjkgMC00Ni4zIDQ2LjktMTQuNCA2Mi44LTEuMSA1LTEuNyAxMC4yLTEuNyAxNS41IDAgNTIuNiA1OS4yIDk1LjIgMTMyIDk1LjIgNzMuMSAwIDEzMi4zLTQyLjYgMTMyLjMtOTUuMiAwLTUuMy0uNi0xMC44LTEuOS0xNS44IDMxLjMtMTYgMTkuOC02Mi41LTE0LjktNjIuNXpNMzAyLjggMzMxYy0xOC4yIDE4LjItNzYuMSAxNy45LTkzLjYgMC0yLjItMi4yLTYuMS0yLjItOC4zIDAtMi41IDIuNS0yLjUgNi40IDAgOC42IDIyLjggMjIuOCA4Ny4zIDIyLjggMTEwLjIgMCAyLjUtMi4yIDIuNS02LjEgMC04LjYtMi4yLTIuMi02LjEtMi4yLTguMyAwem03LjctNzVjLTEzLjYgMC0yNC42IDExLjEtMjQuNiAyNC45IDAgMTMuNiAxMS4xIDI0LjYgMjQuNiAyNC42IDEzLjggMCAyNC45LTExLjEgMjQuOS0yNC42IDAtMTMuOC0xMS0yNC45LTI0LjktMjQuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWRoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQxLjUyIDI4NS41NmMzMy42NSAwIDgyLjM0LTYuOTQgODIuMzQtNDcgLjIyLTYuNzQuODYtMS44Mi0yMC44OC05Ni4yNC00LjYyLTE5LjE1LTguNjgtMjcuODQtNDIuMzEtNDQuNjUtMjYuMDktMTMuMzQtODIuOTItMzUuMzctOTkuNzMtMzUuMzctMTUuNjYgMC0yMC4yIDIwLjE3LTM4Ljg3IDIwLjE3LTE4IDAtMzEuMzEtMTUuMDYtNDguMTItMTUuMDYtMTYuMTQgMC0yNi42NiAxMS0zNC43OCAzMy42Mi0yNy41IDc3LjU1LTI2LjI4IDc0LjI3LTI2LjEyIDc4LjI3IDAgMjQuOCA5Ny42NCAxMDYuMTEgMjI4LjQ3IDEwNi4xMU00MjkgMjU0Ljg0YzQuNjUgMjIgNC42NSAyNC4zNSA0LjY1IDI3LjI1IDAgMzcuNjYtNDIuMzMgNTguNTYtOTggNTguNTYtMTI1Ljc0LjA4LTIzNS45MS03My42NS0yMzUuOTEtMTIyLjMzYTQ5LjU1IDQ5LjU1IDAgMCAxIDQuMDYtMTkuNzJDNTguNTYgMjAwLjg2IDAgMjA4LjkzIDAgMjYwLjYzYzAgODQuNjcgMjAwLjYzIDE4OSAzNTkuNDkgMTg5IDEyMS43OSAwIDE1Mi41MS01NS4wOCAxNTIuNTEtOTguNTggMC0zNC4yMS0yOS41OS03My4wNS04Mi45My05Ni4yNFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlbnJlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTQgMTY5LjFjMCAxMTAuNC02MSAyMDUuNC0xNDcuNiAyNDcuNEMzMCAzNzMuMiA4IDMxNy43IDggMjU2LjYgOCAxMzMuOSA5Ny4xIDMyLjIgMjE0IDEyLjV2MTU2LjZ6TTI1NSA1MDRjLTQyLjkgMC04My4zLTExLTExOC41LTMwLjRDMTkzLjcgNDM3LjUgMjM5LjkgMzgyLjkgMjU1IDMxOWMxNS41IDYzLjkgNjEuNyAxMTguNSAxMTguOCAxNTQuN0MzMzguNyA0OTMgMjk4LjMgNTA0IDI1NSA1MDR6bTE5MC42LTg3LjVDMzU5IDM3NC41IDI5OCAyNzkuNiAyOTggMTY5LjFWMTIuNWMxMTYuOSAxOS43IDIwNiAxMjEuNCAyMDYgMjQ0LjEgMCA2MS4xLTIyIDExNi42LTU4LjQgMTU5Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0ODBIMTI4QzU3LjYgNDgwIDAgNDIyLjQgMCAzNTJWMTYwQzAgODkuNiA1Ny42IDMyIDEyOCAzMmgxOTJjNzAuNCAwIDEyOCA1Ny42IDEyOCAxMjh2MTkyYzAgNzAuNC01Ny42IDEyOC0xMjggMTI4ek0xOTMuNCAyNzMuMmMtNi4xLTItMTEuNi0zLjEtMTYuNC0zLjEtNy4yIDAtMTMuNSAxLjktMTguOSA1LjYtNS40IDMuNy05LjYgOS0xMi44IDE1LjhoLTEuMWwtNC4yLTE4LjNoLTI4djEzOC45aDM2LjF2LTg5LjdjMS41LTUuNCA0LjQtOS44IDguNy0xMy4yIDQuMy0zLjQgOS44LTUuMSAxNi4yLTUuMSA0LjYgMCA5LjggMSAxNS42IDMuMWw0LjgtMzR6bTExNS4yIDEwMy40Yy0zLjIgMi40LTcuNyA0LjgtMTMuNyA3LjEtNiAyLjMtMTIuOCAzLjUtMjAuNCAzLjUtMTIuMiAwLTIxLjEtMy0yNi41LTguOS01LjUtNS45LTguNS0xNC43LTktMjYuNGg4My4zYy45LTQuOCAxLjYtOS40IDIuMS0xMy45LjUtNC40LjctOC42LjctMTIuNSAwLTEwLjctMS42LTE5LjctNC43LTI2LjktMy4yLTcuMi03LjMtMTMtMTIuNS0xNy4yLTUuMi00LjMtMTEuMS03LjMtMTcuOC05LjItNi43LTEuOC0xMy41LTIuOC0yMC42LTIuOC0yMS4xIDAtMzcuNSA2LjEtNDkuMiAxOC4zcy0xNy41IDMwLjUtMTcuNSA1NWMwIDIyLjggNS4yIDQwLjcgMTUuNiA1My43IDEwLjQgMTMuMSAyNi44IDE5LjYgNDkuMiAxOS42IDEwLjcgMCAyMC45LTEuNSAzMC40LTQuNiA5LjUtMy4xIDE3LjEtNi44IDIyLjYtMTEuMmwtMTItMjMuNnptLTIxLjgtNzAuM2MzLjggNS40IDUuMyAxMy4xIDQuNiAyMy4xaC01MS43Yy45LTkuNCAzLjctMTcgOC4yLTIyLjYgNC41LTUuNiAxMS41LTguNSAyMS04LjUgOC4yLS4xIDE0LjEgMi42IDE3LjkgOHptNzkuOSAyLjVjNC4xIDMuOSA5LjQgNS44IDE2LjEgNS44IDcgMCAxMi42LTEuOSAxNi43LTUuOHM2LjEtOS4xIDYuMS0xNS42LTItMTEuNi02LjEtMTUuNGMtNC4xLTMuOC05LjYtNS43LTE2LjctNS43LTYuNyAwLTEyIDEuOS0xNi4xIDUuNy00LjEgMy44LTYuMSA4LjktNi4xIDE1LjRzMiAxMS43IDYuMSAxNS42em0wIDEwMC41YzQuMSAzLjkgOS40IDUuOCAxNi4xIDUuOCA3IDAgMTIuNi0xLjkgMTYuNy01LjhzNi4xLTkuMSA2LjEtMTUuNi0yLTExLjYtNi4xLTE1LjRjLTQuMS0zLjgtOS42LTUuNy0xNi43LTUuNy02LjcgMC0xMiAxLjktMTYuMSA1LjctNC4xIDMuOC02LjEgOC45LTYuMSAxNS40IDAgNi42IDIgMTEuNyA2LjEgMTUuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXNlYXJjaGdhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzMnY0NDhoNDQ4VjMySDB6bTI2Mi4yIDMzNC40Yy02LjYgMy0zMy4yIDYtNTAtMTQuMi05LjItMTAuNi0yNS4zLTMzLjMtNDIuMi02My42LTguOSAwLTE0LjcgMC0yMS40LS42djQ2LjRjMCAyMy41IDYgMjEuMiAyNS44IDIzLjl2OC4xYy02LjktLjMtMjMuMS0uOC0zNS42LS44LTEzLjEgMC0yNi4xLjYtMzMuNi44di04LjFjMTUuNS0yLjkgMjItMS4zIDIyLTIzLjlWMjI1YzAtMjIuNi02LjQtMjEtMjItMjMuOVYxOTNjMjUuOCAxIDUzLjEtLjYgNzAuOS0uNiAzMS43IDAgNTUuOSAxNC40IDU1LjkgNDUuNiAwIDIxLjEtMTYuNyA0Mi4yLTM5LjIgNDcuNSAxMy42IDI0LjIgMzAgNDUuNiA0Mi4yIDU4LjkgNy4yIDcuOCAxNy4yIDE0LjcgMjcuMiAxNC43djcuM3ptMjIuOS0xMzVjLTIzLjMgMC0zMi4yLTE1LjctMzIuMi0zMi4yVjE2N2MwLTEyLjIgOC44LTMwLjQgMzQtMzAuNHMzMC40IDE3LjkgMzAuNCAxNy45bC0xMC43IDcuMnMtNS41LTEyLjUtMTkuNy0xMi41Yy03LjkgMC0xOS43IDcuMy0xOS43IDE5Ljd2MjYuOGMwIDEzLjQgNi42IDIzLjMgMTcuOSAyMy4zIDE0LjEgMCAyMS41LTEwLjkgMjEuNS0yNi44aC0xNy45di0xMC43aDMwLjRjMCAyMC41IDQuNyA0OS45LTM0IDQ5Ljl6bS0xMTYuNSA0NC43Yy05LjQgMC0xMy42LS4zLTIwLS44di02OS43YzYuNC0uNiAxNS0uNiAyMi41LS42IDIzLjMgMCAzNy4yIDEyLjIgMzcuMiAzNC41IDAgMjEuOS0xNSAzNi42LTM5LjcgMzYuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXNvbHZpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjgxLjIgMjc4LjJjNDYtMTMuMyA0OS42LTIzLjUgNDQtNDMuNEwzMTQgMTk1LjVjLTYuMS0yMC45LTE4LjQtMjguMS03MS4xLTEyLjhMNTQuNyAyMzYuOGwyOC42IDk4LjYgMTk3LjktNTcuMnpNMjQ4LjUgOEMxMzEuNCA4IDMzLjIgODguNyA3LjIgMTk3LjVsMjIxLjktNjMuOWMzNC44LTEwLjIgNTQuMi0xMS43IDc5LjMtOC4yIDM2LjMgNi4xIDUyLjcgMjUgNjEuNCA1NS4ybDEwLjcgMzcuOGM4LjIgMjguMSAxIDUwLjYtMjMuNSA3My42LTE5LjQgMTcuNC0zMS4yIDI0LjUtNjEuNCAzMy4yTDIwMyAzNTEuOGwyMjAuNCAyNy4xIDkuNyAzNC4yLTQ4LjEgMTMuMy0yODYuOC0zNy4zIDIzIDgwLjJjMzYuOCAyMiA4MC4zIDM0LjcgMTI2LjMgMzQuNyAxMzcgMCAyNDguNS0xMTEuNCAyNDguNS0yNDguM0M0OTcgMTE5LjQgMzg1LjUgOCAyNDguNSA4ek0zOC4zIDM4OC42TDAgMjU2LjhjMCA0OC41IDE0LjMgOTMuNCAzOC4zIDEzMS44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODkuNjcgMjc0Ljg5YTY1LjU3IDY1LjU3IDAgMSAxLTY1LjU2LTY1LjU2IDY1LjY0IDY1LjY0IDAgMCAxIDY1LjU2IDY1LjU2em0xMzkuNTUtNS4wNWgtLjEzYTIwNC42OSAyMDQuNjkgMCAwIDAtNzQuMzItMTUzbC00NS4zOCAyNi4yYTE1Ny4wNyAxNTcuMDcgMCAwIDEgNzEuODEgMTMxLjg0QzM4MS4yIDM2MS41IDMxMC43MyA0MzIgMjI0LjExIDQzMlM2NyAzNjEuNSA2NyAyNzQuODhjMC04MS44OCA2My0xNDkuMjcgMTQzLTE1Ni40M3YzOS4xMmwxMDguNzctNjIuNzlMMjEwIDMydjM4LjMyYy0xMDYuNyA3LjI1LTE5MSA5Ni0xOTEgMjA0LjU3IDAgMTExLjU5IDg5LjEyIDIwMi4yOSAyMDAuMDYgMjA1di4xMWgyMTAuMTZWMjY5Ljg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tldGNoYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg0LjA0NiwyMjQuOGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE3LDM0LjIxNywwLDAsMCwyODQuMDQ2LDIyNC44Wm0tMTEwLjQ1LDBhMzQuMTE0LDM0LjExNCwwLDEsMCwzNC4zMTcsMzQuMTEzQTM0LjIxNywzNC4yMTcsMCwwLDAsMTczLjYsMjI0LjhabTIyMC45MjMsMGEzNC4xMTQsMzQuMTE0LDAsMSwwLDM0LjMxNywzNC4xMTNBMzQuMjE1LDM0LjIxNSwwLDAsMCwzOTQuNTE5LDIyNC44Wm0xNTMuODA3LTU1LjMxOWMtMTUuNTM1LTI0LjE3Mi0zNy4zMS00NS41Ny02NC42ODEtNjMuNjE4LTUyLjg4Ni0zNC44MTctMTIyLjM3NC01NC0xOTUuNjY2LTU0YTQwNS45NzUsNDA1Ljk3NSwwLDAsMC03Mi4wMzIsNi4zNTcsMjM4LjUyNCwyMzguNTI0LDAsMCwwLTQ5LjUxLTM2LjU4OEM5OS42ODQtMTEuNyw0MC44NTkuNzExLDExLjEzNSwxMS40MjFBMTQuMjkxLDE0LjI5MSwwLDAsMCw1LjU4LDM0Ljc4MkMyNi41NDIsNTYuNDU4LDYxLjIyMiw5OS4zLDUyLjcsMTM4LjI1MmMtMzMuMTQyLDMzLjktNTEuMTEyLDc0Ljc3Ni01MS4xMTIsMTE3LjMzNywwLDQzLjM3MiwxNy45Nyw4NC4yNDgsNTEuMTEyLDExOC4xNDgsOC41MjYsMzguOTU2LTI2LjE1NCw4MS44MTYtNDcuMTE2LDEwMy40OTFhMTQuMjg0LDE0LjI4NCwwLDAsMCw1LjU1NSwyMy4zNGMyOS43MjQsMTAuNzA5LDg4LjU0OSwyMy4xNDcsMTU1LjMyNC0xMC4yYTIzOC42NzksMjM4LjY3OSwwLDAsMCw0OS41MS0zNi41ODlBNDA1Ljk3Miw0MDUuOTcyLDAsMCwwLDI4OCw0NjAuMTRjNzMuMzEzLDAsMTQyLjgtMTkuMTU5LDE5NS42NjctNTMuOTc1LDI3LjM3MS0xOC4wNDksNDkuMTQ1LTM5LjQyNiw2NC42NzktNjMuNjE5LDE3LjMwOS0yNi45MjMsMjYuMDctNTUuOTE2LDI2LjA3LTg2LjEyNUM1NzQuMzk0LDIyNS40LDU2NS42MzQsMTk2LjQzLDU0OC4zMjYsMTY5LjQ4NVpNMjg0Ljk4Nyw0MDkuOWEzNDUuNjUsMzQ1LjY1LDAsMCwxLTg5LjQ0Ni0xMS41bC0yMC4xMjksMTkuMzkzYTE4NC4zNjYsMTg0LjM2NiwwLDAsMS0zNy4xMzgsMjcuNTg1LDE0NS43NjcsMTQ1Ljc2NywwLDAsMS01Mi41MjIsMTQuODdjLjk4My0xLjc3MSwxLjg4MS0zLjU2MywyLjg0Mi01LjM1NnEzMC4yNTgtNTUuNjgsMTYuMzI1LTEwMC4wNzhjLTMyLjk5Mi0yNS45NjItNTIuNzc4LTU5LjItNTIuNzc4LTk1LjQsMC04My4xLDEwNC4yNTQtMTUwLjQ2OSwyMzIuODQ2LTE1MC40NjlzMjMyLjg2Nyw2Ny4zNzMsMjMyLjg2NywxNTAuNDY5QzUxNy44NTQsMzQyLjUyNSw0MTMuNiw0MDkuOSwyODQuOTg3LDQwOS45WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvY2tybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTU3LjQgNDE5LjVoLTkwbC0xMTItMTMxLjNjLTE3LjktMjAuNC0zLjktNTYuMSAyNi42LTU2LjFoNzUuM2wtODQuNi05OS4zLTg0LjMgOTguOWgtOTBMMTkzLjUgNjcuMmMxNC40LTE4LjQgNDEuMy0xNy4zIDU0LjUgMGwxNTcuNyAxODUuMWMxOSAyMi44IDIgNTcuMi0yNy42IDU2LjEtLjYgMC03NC4yLjItNzQuMi4ybDEwMS41IDExOC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA4LjUyLDI0OS43NSw0ODYuNywyMzYuMjRjLS4xNy0yLS4zNC0zLjkzLS41NS01Ljg4bDE4LjcyLTE3LjVhNy4zNSw3LjM1LDAsMCwwLTIuNDQtMTIuMjVsLTI0LTljLS41NC0xLjg4LTEuMDgtMy43OC0xLjY3LTUuNjRsMTUtMjAuODNhNy4zNSw3LjM1LDAsMCwwLTQuNzktMTEuNTRsLTI1LjQyLTQuMTVjLS45LTEuNzMtMS43OS0zLjQ1LTIuNzMtNS4xNWwxMC42OC0yMy40MmE3LjM1LDcuMzUsMCwwLDAtNi45NS0xMC4zOWwtMjUuODIuOTFxLTEuNzktMi4yMi0zLjYxLTQuNEw0MzksODEuODRBNy4zNiw3LjM2LDAsMCwwLDQzMC4xNiw3M0w0MDUsNzguOTNxLTIuMTctMS44My00LjQtMy42MWwuOTEtMjUuODJhNy4zNSw3LjM1LDAsMCwwLTEwLjM5LTdMMzY3LjcsNTMuMjNjLTEuNy0uOTQtMy40My0xLjg0LTUuMTUtMi43M0wzNTguNCwyNS4wOGE3LjM1LDcuMzUsMCwwLDAtMTEuNTQtNC43OUwzMjYsMzUuMjZjLTEuODYtLjU5LTMuNzUtMS4xMy01LjY0LTEuNjdsLTktMjRhNy4zNSw3LjM1LDAsMCwwLTEyLjI1LTIuNDRsLTE3LjUsMTguNzJjLTEuOTUtLjIxLTMuOTEtLjM4LTUuODgtLjU1TDI2Mi4yNSwzLjQ4YTcuMzUsNy4zNSwwLDAsMC0xMi41LDBMMjM2LjI0LDI1LjNjLTIsLjE3LTMuOTMuMzQtNS44OC41NUwyMTIuODYsNy4xM2E3LjM1LDcuMzUsMCwwLDAtMTIuMjUsMi40NGwtOSwyNGMtMS44OS41NS0zLjc5LDEuMDgtNS42NiwxLjY4bC0yMC44Mi0xNWE3LjM1LDcuMzUsMCwwLDAtMTEuNTQsNC43OWwtNC4xNSwyNS40MWMtMS43My45LTMuNDUsMS43OS01LjE2LDIuNzNMMTIwLjg4LDQyLjU1YTcuMzUsNy4zNSwwLDAsMC0xMC4zOSw3bC45MiwyNS44MWMtMS40OSwxLjE5LTMsMi4zOS00LjQyLDMuNjFMODEuODQsNzNBNy4zNiw3LjM2LDAsMCwwLDczLDgxLjg0TDc4LjkzLDEwN2MtMS4yMywxLjQ1LTIuNDMsMi45My0zLjYyLDQuNDFsLTI1LjgxLS45MWE3LjQyLDcuNDIsMCwwLDAtNi4zNywzLjI2LDcuMzUsNy4zNSwwLDAsMC0uNTcsNy4xM2wxMC42NiwyMy40MWMtLjk0LDEuNy0xLjgzLDMuNDMtMi43Myw1LjE2TDI1LjA4LDE1My42YTcuMzUsNy4zNSwwLDAsMC00Ljc5LDExLjU0bDE1LDIwLjgyYy0uNTksMS44Ny0xLjEzLDMuNzctMS42OCw1LjY2bC0yNCw5YTcuMzUsNy4zNSwwLDAsMC0yLjQ0LDEyLjI1bDE4LjcyLDE3LjVjLS4yMSwxLjk1LS4zOCwzLjkxLS41NSw1Ljg4TDMuNDgsMjQ5Ljc1YTcuMzUsNy4zNSwwLDAsMCwwLDEyLjVMMjUuMywyNzUuNzZjLjE3LDIsLjM0LDMuOTIuNTUsNS44N0w3LjEzLDI5OS4xM2E3LjM1LDcuMzUsMCwwLDAsMi40NCwxMi4yNWwyNCw5Yy41NSwxLjg5LDEuMDgsMy43OCwxLjY4LDUuNjVsLTE1LDIwLjgzYTcuMzUsNy4zNSwwLDAsMCw0Ljc5LDExLjU0bDI1LjQyLDQuMTVjLjksMS43MiwxLjc5LDMuNDUsMi43Myw1LjE0TDQyLjU2LDM5MS4xMmE3LjM1LDcuMzUsMCwwLDAsLjU3LDcuMTMsNy4xMyw3LjEzLDAsMCwwLDYuMzcsMy4yNmwyNS44My0uOTFxMS43NywyLjIyLDMuNiw0LjRMNzMsNDMwLjE2QTcuMzYsNy4zNiwwLDAsMCw4MS44NCw0MzlMMTA3LDQzMy4wN3EyLjE4LDEuODMsNC40MSwzLjYxbC0uOTIsMjUuODJhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LDYuOTVsMjMuNDMtMTAuNjhjMS42OS45NCwzLjQyLDEuODMsNS4xNCwyLjczbDQuMTUsMjUuNDJhNy4zNCw3LjM0LDAsMCwwLDExLjU0LDQuNzhsMjAuODMtMTVjMS44Ni42LDMuNzYsMS4xMyw1LjY1LDEuNjhsOSwyNGE3LjM2LDcuMzYsMCwwLDAsMTIuMjUsMi40NGwxNy41LTE4LjcyYzEuOTUuMjEsMy45Mi4zOCw1Ljg4LjU1bDEzLjUxLDIxLjgyYTcuMzUsNy4zNSwwLDAsMCwxMi41LDBsMTMuNTEtMjEuODJjMi0uMTcsMy45My0uMzQsNS44OC0uNTZsMTcuNSwxOC43M2E3LjM2LDcuMzYsMCwwLDAsMTIuMjUtMi40NGw5LTI0YzEuODktLjU1LDMuNzgtMS4wOCw1LjY1LTEuNjhsMjAuODIsMTVhNy4zNCw3LjM0LDAsMCwwLDExLjU0LTQuNzhsNC4xNS0yNS40MmMxLjcyLS45LDMuNDUtMS43OSw1LjE1LTIuNzNsMjMuNDIsMTAuNjhhNy4zNSw3LjM1LDAsMCwwLDEwLjM5LTYuOTVsLS45MS0yNS44MnEyLjIyLTEuNzksNC40LTMuNjFMNDMwLjE2LDQzOWE3LjM2LDcuMzYsMCwwLDAsOC44NC04Ljg0TDQzMy4wNyw0MDVxMS44My0yLjE3LDMuNjEtNC40bDI1LjgyLjkxYTcuMjMsNy4yMywwLDAsMCw2LjM3LTMuMjYsNy4zNSw3LjM1LDAsMCwwLC41OC03LjEzTDQ1OC43NywzNjcuN2MuOTQtMS43LDEuODMtMy40MywyLjczLTUuMTVsMjUuNDItNC4xNWE3LjM1LDcuMzUsMCwwLDAsNC43OS0xMS41NGwtMTUtMjAuODNjLjU5LTEuODcsMS4xMy0zLjc2LDEuNjctNS42NWwyNC05YTcuMzUsNy4zNSwwLDAsMCwyLjQ0LTEyLjI1bC0xOC43Mi0xNy41Yy4yMS0xLjk1LjM4LTMuOTEuNTUtNS44N2wyMS44Mi0xMy41MWE3LjM1LDcuMzUsMCwwLDAsMC0xMi41Wm0tMTUxLDEyOS4wOEExMy45MSwxMy45MSwwLDAsMCwzNDEsMzg5LjUxbC03LjY0LDM1LjY3QTE4Ny41MSwxODcuNTEsMCwwLDEsMTc3LDQyNC40NGwtNy42NC0zNS42NmExMy44NywxMy44NywwLDAsMC0xNi40Ni0xMC42OGwtMzEuNTEsNi43NmExODcuMzgsMTg3LjM4LDAsMCwxLTE2LjI2LTE5LjIxSDI1OC4zYzEuNzIsMCwyLjg5LS4yOSwyLjg5LTEuOTFWMzA5LjU1YzAtMS41Ny0xLjE3LTEuOTEtMi44OS0xLjkxSDIxMy40N2wuMDUtMzQuMzVIMjYyYzQuNDEsMCwyMy42NiwxLjI4LDI5Ljc5LDI1Ljg3LDEuOTEsNy41NSw2LjE3LDMyLjE0LDkuMDYsNDAsMi44OSw4LjgyLDE0LjYsMjYuNDYsMjcuMSwyNi40Nkg0MDdhMTg3LjMsMTg3LjMsMCwwLDEtMTcuMzQsMjAuMDlabTI1Ljc3LDM0LjQ5QTE1LjI0LDE1LjI0LDAsMSwxLDM2OCwzOTguMDhoLjQ0QTE1LjIzLDE1LjIzLDAsMCwxLDM4My4yNCw0MTMuMzJabS0yMjUuNjItLjY4YTE1LjI0LDE1LjI0LDAsMSwxLTE1LjI1LTE1LjI1aC40NUExNS4yNSwxNS4yNSwwLDAsMSwxNTcuNjIsNDEyLjY0Wk02OS41NywyMzQuMTVsMzIuODMtMTQuNmExMy44OCwxMy44OCwwLDAsMCw3LjA2LTE4LjMzTDEwMi42OSwxODZoMjYuNTZWMzA1LjczSDc1LjY1QTE4Ny42NSwxODcuNjUsMCwwLDEsNjkuNTcsMjM0LjE1Wk01OC4zMSwxOTguMDlhMTUuMjQsMTUuMjQsMCwwLDEsMTUuMjMtMTUuMjVINzRhMTUuMjQsMTUuMjQsMCwxLDEtMTUuNjcsMTUuMjRabTE1NS4xNiwyNC40OS4wNS0zNS4zMmg2My4yNmMzLjI4LDAsMjMuMDcsMy43NywyMy4wNywxOC42MiwwLDEyLjI5LTE1LjE5LDE2LjctMjcuNjgsMTYuN1pNMzk5LDMwNi43MWMtOS44LDEuMTMtMjAuNjMtNC4xMi0yMi0xMC4wOS01Ljc4LTMyLjQ5LTE1LjM5LTM5LjQtMzAuNTctNTEuNCwxOC44Ni0xMS45NSwzOC40Ni0yOS42NCwzOC40Ni01My4yNiwwLTI1LjUyLTE3LjQ5LTQxLjU5LTI5LjQtNDkuNDgtMTYuNzYtMTEtMzUuMjgtMTMuMjMtNDAuMjctMTMuMjNIMTE2LjMyQTE4Ny40OSwxODcuNDksMCwwLDEsMjIxLjIxLDcwLjA2bDIzLjQ3LDI0LjZhMTMuODIsMTMuODIsMCwwLDAsMTkuNi40NGwyNi4yNi0yNWExODcuNTEsMTg3LjUxLDAsMCwxLDEyOC4zNyw5MS40M2wtMTgsNDAuNTdBMTQsMTQsMCwwLDAsNDA4LDIyMC40M2wzNC41OSwxNS4zM2ExODcuMTIsMTg3LjEyLDAsMCwxLC40LDMyLjU0SDQyMy43MWMtMS45MSwwLTIuNjksMS4yNy0yLjY5LDMuMTN2OC44MkM0MjEsMzAxLDQwOS4zMSwzMDUuNTgsMzk5LDMwNi43MVpNMjQwLDYwLjIxQTE1LjI0LDE1LjI0LDAsMCwxLDI1NS4yMSw0NWguNDVBMTUuMjQsMTUuMjQsMCwxLDEsMjQwLDYwLjIxWk00MzYuODQsMjE0YTE1LjI0LDE1LjI0LDAsMSwxLDAtMzAuNDhoLjQ0YTE1LjI0LDE1LjI0LDAsMCwxLS40NCwzMC40OFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWZhcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc0LjY5LDI3NC42OWwtMzcuMzgtMzcuMzhMMTY2LDM0NlpNMjU2LDhDMTE5LDgsOCwxMTksOCwyNTZTMTE5LDUwNCwyNTYsNTA0LDUwNCwzOTMsNTA0LDI1NiwzOTMsOCwyNTYsOFpNNDExLjg1LDE4Mi43OWwxNC43OC02LjEzQTgsOCwwLDAsMSw0MzcuMDgsMTgxaDBhOCw4LDAsMCwxLTQuMzMsMTAuNDZMNDE4LDE5Ny41N2E4LDgsMCwwLDEtMTAuNDUtNC4zM2gwQTgsOCwwLDAsMSw0MTEuODUsMTgyLjc5Wk0zMTQuNDMsOTRsNi4xMi0xNC43OEE4LDgsMCwwLDEsMzMxLDc0LjkyaDBhOCw4LDAsMCwxLDQuMzMsMTAuNDVsLTYuMTMsMTQuNzhhOCw4LDAsMCwxLTEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMzE0LjQzLDk0Wk0yNTYsNjBoMGE4LDgsMCwwLDEsOCw4Vjg0YTgsOCwwLDAsMS04LDhoMGE4LDgsMCwwLDEtOC04VjY4QTgsOCwwLDAsMSwyNTYsNjBaTTE4MSw3NC45MmE4LDgsMCwwLDEsMTAuNDYsNC4zM0wxOTcuNTcsOTRhOCw4LDAsMSwxLTE0Ljc4LDYuMTJsLTYuMTMtMTQuNzhBOCw4LDAsMCwxLDE4MSw3NC45MlptLTYzLjU4LDQyLjQ5aDBhOCw4LDAsMCwxLDExLjMxLDBMMTQwLDEyOC43MkE4LDgsMCwwLDEsMTQwLDE0MGgwYTgsOCwwLDAsMS0xMS4zMSwwbC0xMS4zMS0xMS4zMUE4LDgsMCwwLDEsMTE3LjQxLDExNy40MVpNNjAsMjU2aDBhOCw4LDAsMCwxLDgtOEg4NGE4LDgsMCwwLDEsOCw4aDBhOCw4LDAsMCwxLTgsOEg2OEE4LDgsMCwwLDEsNjAsMjU2Wm00MC4xNSw3My4yMS0xNC43OCw2LjEzQTgsOCwwLDAsMSw3NC45MiwzMzFoMGE4LDgsMCwwLDEsNC4zMy0xMC40Nkw5NCwzMTQuNDNhOCw4LDAsMCwxLDEwLjQ1LDQuMzNoMEE4LDgsMCwwLDEsMTAwLjE1LDMyOS4yMVptNC4zMy0xMzZoMEE4LDgsMCwwLDEsOTQsMTk3LjU3bC0xNC43OC02LjEyQTgsOCwwLDAsMSw3NC45MiwxODFoMGE4LDgsMCwwLDEsMTAuNDUtNC4zM2wxNC43OCw2LjEzQTgsOCwwLDAsMSwxMDQuNDgsMTkzLjI0Wk0xOTcuNTcsNDE4bC02LjEyLDE0Ljc4YTgsOCwwLDAsMS0xNC43OS02LjEybDYuMTMtMTQuNzhBOCw4LDAsMSwxLDE5Ny41Nyw0MThaTTI2NCw0NDRhOCw4LDAsMCwxLTgsOGgwYTgsOCwwLDAsMS04LThWNDI4YTgsOCwwLDAsMSw4LThoMGE4LDgsMCwwLDEsOCw4Wm02Ny02LjkyaDBhOCw4LDAsMCwxLTEwLjQ2LTQuMzNMMzE0LjQzLDQxOGE4LDgsMCwwLDEsNC4zMy0xMC40NWgwYTgsOCwwLDAsMSwxMC40NSw0LjMzbDYuMTMsMTQuNzhBOCw4LDAsMCwxLDMzMSw0MzcuMDhabTYzLjU4LTQyLjQ5aDBhOCw4LDAsMCwxLTExLjMxLDBMMzcyLDM4My4yOEE4LDgsMCwwLDEsMzcyLDM3MmgwYTgsOCwwLDAsMSwxMS4zMSwwbDExLjMxLDExLjMxQTgsOCwwLDAsMSwzOTQuNTksMzk0LjU5Wk0yODYuMjUsMjg2LjI1LDExMC4zNCw0MDEuNjYsMjI1Ljc1LDIyNS43NSw0MDEuNjYsMTEwLjM0Wk00MzcuMDgsMzMxaDBhOCw4LDAsMCwxLTEwLjQ1LDQuMzNsLTE0Ljc4LTYuMTNhOCw4LDAsMCwxLTQuMzMtMTAuNDVoMEE4LDgsMCwwLDEsNDE4LDMxNC40M2wxNC43OCw2LjEyQTgsOCwwLDAsMSw0MzcuMDgsMzMxWk00NDQsMjY0SDQyOGE4LDgsMCwwLDEtOC04aDBhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4aDBBOCw4LDAsMCwxLDQ0NCwyNjRaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FsZXNmb3JjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDguODkgMjQ1LjY0aC0yNi4zNWMuNjktNS4xNiAzLjMyLTE0LjEyIDEzLjY0LTE0LjEyIDYuNzUgMCAxMS45NyAzLjgyIDEyLjcxIDE0LjEyem0xMzYuNjYtMTMuODhjLS40NyAwLTE0LjExLTEuNzctMTQuMTEgMjBzMTMuNjMgMjAgMTQuMTEgMjBjMTMgMCAxNC4xMS0xMy41NCAxNC4xMS0yMCAwLTIxLjc2LTEzLjY2LTIwLTE0LjExLTIwem0tMjQzLjIyIDIzLjc2YTguNjMgOC42MyAwIDAgMC0zLjI5IDcuMjljMCA0Ljc4IDIuMDggNi4wNSAzLjI5IDcuMDUgNC43IDMuNyAxNS4wNyAyLjEyIDIwLjkzLjk1di0xNi45NGMtNS4zMi0xLjA3LTE2LjczLTEuOTYtMjAuOTMgMS42NXpNNjQwIDIzMmMwIDg3LjU4LTgwIDE1NC4zOS0xNjUuMzYgMTM2LjQzLTE4LjM3IDMzLTcwLjczIDcwLjc1LTEzMi4yIDQxLjYzLTQxLjE2IDk2LjA1LTE3Ny44OSA5Mi4xOC0yMTMuODEtNS4xN0M4LjkxIDQyOC43OC01MC4xOSAyNjYuNTIgNTMuMzYgMjA1LjYxIDE4LjYxIDEyNi4xOCA3NiAzMiAxNjcuNjcgMzJhMTI0LjI0IDEyNC4yNCAwIDAgMSA5OC41NiA0OC43YzIwLjctMjEuNCA0OS40LTM0LjgxIDgxLjE1LTM0LjgxIDQyLjM0IDAgNzkgMjMuNTIgOTguOCA1OC41N0M1MzkgNjMuNzggNjQwIDEzMi42OSA2NDAgMjMyem0tNTE5LjU1IDMxLjhjMC0xMS43Ni0xMS42OS0xNS4xNy0xNy44Ny0xNy4xNy01LjI3LTIuMTEtMTMuNDEtMy41MS0xMy40MS04Ljk0IDAtOS40NiAxNy02LjY2IDI1LjE3LTIuMTIgMCAwIDEuMTcuNzEgMS42NC0uNDcuMjQtLjcgMi4zNi02LjU4IDIuNTktNy4yOWExLjEzIDEuMTMgMCAwIDAtLjctMS40MWMtMTIuMzMtNy42My00MC43LTguNTEtNDAuNyAxMi43IDAgMTIuNDYgMTEuNDkgMTUuNDQgMTcuODggMTcuMTcgNC43MiAxLjU4IDEzLjE3IDMgMTMuMTcgOC43IDAgNC0zLjUzIDcuMDYtOS4xNyA3LjA2YTMxLjc2IDMxLjc2IDAgMCAxLTE5LTYuMzVjLS40Ny0uMjMtMS40Mi0uNzEtMS42NS43MWwtMi40IDcuNDdjLS40Ny45NC4yMyAxLjE4LjIzIDEuNDEgMS43NSAxLjQgMTAuMyA2LjU5IDIyLjgyIDYuNTkgMTMuMTcgMCAyMS40LTcuMDYgMjEuNC0xOC4xMXptMzItNDIuNThjLTEwLjEzIDAtMTguNjYgMy4xNy0yMS40IDUuMThhMSAxIDAgMCAwLS4yNCAxLjQxbDIuNTkgNy4wNmExIDEgMCAwIDAgMS4xOC43Yy42NSAwIDYuOC00IDE2LjkzLTQgNCAwIDcuMDYuNzEgOS4xOCAyLjM2IDMuNiAyLjggMy4wNiA4LjI5IDMuMDYgMTAuNTgtNC43OS0uMy0xOS4xMS0zLjQ0LTI5LjQxIDMuNzZhMTYuOTIgMTYuOTIgMCAwIDAtNy4zNCAxNC41NGMwIDUuOSAxLjUxIDEwLjQgNi41OSAxNC4zNSAxMi4yNCA4LjE2IDM2LjI4IDIgMzguMSAxLjQxIDEuNTgtLjMyIDMuNTMtLjY2IDMuNTMtMS44OHYtMzMuODhjLjA0LTQuNjEuMzItMjEuNjQtMjIuNzgtMjEuNjR6TTE5OSAyMDAuMjRhMS4xMSAxLjExIDAgMCAwLTEuMTgtMS4xOEgxODhhMS4xMSAxLjExIDAgMCAwLTEuMTcgMS4xOHY3OWExLjExIDEuMTEgMCAwIDAgMS4xNyAxLjE4aDkuODhhMS4xMSAxLjExIDAgMCAwIDEuMTgtMS4xOHptNTUuNzUgMjguOTNjLTIuMS0yLjMxLTYuNzktNy41My0xNy42NS03LjUzLTMuNTEgMC0xNC4xNi4yMy0yMC43IDguOTQtNi4zNSA3LjYzLTYuNTggMTguMTEtNi41OCAyMS40MSAwIDMuMTIuMTUgMTQuMjYgNy4wNiAyMS4xNyAyLjY0IDIuOTEgOS4wNiA4LjIzIDIyLjgxIDguMjMgMTAuODIgMCAxNi40Ny0yLjM1IDE4LjU4LTMuNzYuNDctLjI0LjcxLS43MS4yNC0xLjg4bC0yLjM1LTYuODNhMS4yNiAxLjI2IDAgMCAwLTEuNDEtLjdjLTIuNTkuOTQtNi4zNSAyLjgyLTE1LjI5IDIuODItMTcuNDIgMC0xNi44NS0xNC43NC0xNi45NC0xNi43aDM3LjE3YTEuMjMgMS4yMyAwIDAgMCAxLjE3LS45NGMtLjI5IDAgMi4wNy0xNC43LTYuMDktMjQuMjN6bTM2LjY5IDUyLjY5YzEzLjE3IDAgMjEuNDEtNy4wNiAyMS40MS0xOC4xMSAwLTExLjc2LTExLjctMTUuMTctMTcuODgtMTcuMTctNC4xNC0xLjY2LTEzLjQxLTMuMzgtMTMuNDEtOC45NCAwLTMuNzYgMy4yOS02LjM1IDguNDctNi4zNWEzOC4xMSAzOC4xMSAwIDAgMSAxNi43IDQuMjNzMS4xOC43MSAxLjY1LS40N2MuMjMtLjcgMi4zNS02LjU4IDIuNTgtNy4yOWExLjEzIDEuMTMgMCAwIDAtLjctMS40MWMtNy45MS00LjktMTYuNzQtNC45NC0yMC4yMy00Ljk0LTEyIDAtMjAuNDYgNy4yOS0yMC40NiAxNy42NCAwIDEyLjQ2IDExLjQ4IDE1LjQ0IDE3Ljg3IDE3LjE3IDYuMTEgMiAxMy4xNyAzLjI2IDEzLjE3IDguNyAwIDQtMy41MiA3LjA2LTkuMTcgNy4wNmEzMS44IDMxLjggMCAwIDEtMTktNi4zNSAxIDEgMCAwIDAtMS42NS43MWwtMi4zNSA3LjUyYy0uNDcuOTQuMjMgMS4xOC4yMyAxLjQxIDEuNzIgMS40IDEwLjMzIDYuNTkgMjIuNzkgNi41OXpNMzU3LjA5IDIyNGMwLS43MS0uMjQtMS4xOC0xLjE4LTEuMThoLTExLjc2YzAtLjE0Ljk0LTguOTQgNC40Ny0xMi40NyA0LjE2LTQuMTUgMTEuNzYtMS42NCAxMi0xLjY0IDEuMTcuNDcgMS40MSAwIDEuNjQtLjQ3bDIuODMtNy43N2MuNy0uOTQgMC0xLjE3LS4yNC0xLjQxLTUuMDktMi0xNy4zNS0yLjg3LTI0LjQ2IDQuMjQtNS40OCA1LjQ4LTcgMTMuOTItOCAxOS41MmgtOC40N2ExLjI4IDEuMjggMCAwIDAtMS4xNyAxLjE4bC0xLjQyIDcuNzZjMCAuNy4yNCAxLjE3IDEuMTggMS4xN2g4LjIzYy04LjUxIDQ3LjktOC43NSA1MC4yMS0xMC4zNSA1NS41Mi0xLjA4IDMuNjItMy4yOSA2LjktNS44OCA3Ljc2LS4wOSAwLTMuODggMS42OC05LjY0LS4yNCAwIDAtLjk0LS40Ny0xLjQxLjcxLS4yNC43MS0yLjU5IDYuODItMi44MyA3LjUzczAgMS40MS40NyAxLjQxYzUuMTEgMiAxMyAxLjc3IDE3Ljg4IDAgNi4yOC0yLjI4IDkuNzItNy44OSAxMS41My0xMi45NCAyLjc1LTcuNzEgMi44MS05Ljc5IDExLjc2LTU5Ljc0aDEyLjIzYTEuMjkgMS4yOSAwIDAgMCAxLjE4LTEuMTh6bTUzLjM5IDE2Yy0uNTYtMS42OC01LjEtMTguMTEtMjUuMTctMTguMTEtMTUuMjUgMC0yMyAxMC0yNS4xNiAxOC4xMS0xIDMtMy4xOCAxNCAwIDIzLjUyLjA5LjMgNC40MSAxOC4xMiAyNS4xNiAxOC4xMiAxNC45NSAwIDIyLjktOS42MSAyNS4xNy0xOC4xMiAzLjIxLTkuNjEgMS4wMS0yMC41MiAwLTIzLjUyem00NS40LTE2LjdjLTUtMS42NS0xNi42Mi0xLjktMjIuMTEgNS40MXYtNC40N2ExLjExIDEuMTEgMCAwIDAtMS4xOC0xLjE3aC05LjRhMS4xMSAxLjExIDAgMCAwLTEuMTggMS4xN3Y1NS4yOGExLjEyIDEuMTIgMCAwIDAgMS4xOCAxLjE4aDkuNjRhMS4xMiAxLjEyIDAgMCAwIDEuMTgtMS4xOHYtMjcuNzdjMC0yLjkxLjA1LTExLjM3IDQuNDYtMTUuMDUgNC45LTQuOSAxMi0zLjM2IDEzLjQxLTMuMDZhMS41NyAxLjU3IDAgMCAwIDEuNDEtLjk0IDc0IDc0IDAgMCAwIDMuMDYtOCAxLjE2IDEuMTYgMCAwIDAtLjQ3LTEuNDF6bTQ2LjgxIDU0LjFsLTIuMTItNy4yOWMtLjQ3LTEuMTgtMS40MS0uNzEtMS40MS0uNzEtNC4yMyAxLjgyLTEwLjE1IDEuODktMTEuMjkgMS44OS00LjY0IDAtMTcuMTctMS4xMy0xNy4xNy0xOS43NiAwLTYuMjMgMS44NS0xOS43NiAxNi40Ny0xOS43NmEzNC44NSAzNC44NSAwIDAgMSAxMS41MiAxLjY1cy45NC40NyAxLjE4LS43MWMuOTQtMi41OSAxLjY0LTQuNDcgMi41OS03LjUzLjIzLS45NC0uNDctMS4xNy0uNzEtMS4xNy0xMS41OS0zLjg3LTIyLjM0LTIuNTMtMjcuNzYgMC0xLjU5Ljc0LTE2LjIzIDYuNDktMTYuMjMgMjcuNTIgMCAyLjktLjU4IDMwLjExIDI4Ljk0IDMwLjExYTQ0LjQ1IDQ0LjQ1IDAgMCAwIDE1LjUyLTIuODMgMS4zIDEuMyAwIDAgMCAuNDctMS40MnptNTMuODctMzkuNTJjLS44LTMtNS4zNy0xNi4yMy0yMi4zNS0xNi4yMy0xNiAwLTIzLjUyIDEwLjExLTI1LjY0IDE4LjU5YTM4LjU4IDM4LjU4IDAgMCAwLTEuNjUgMTEuNzZjMCAyNS44NyAxOC44NCAyOS40IDI5Ljg4IDI5LjQgMTAuODIgMCAxNi40Ni0yLjM1IDE4LjU4LTMuNzYuNDctLjI0LjcxLS43MS4yNC0xLjg4bC0yLjM2LTYuODNhMS4yNiAxLjI2IDAgMCAwLTEuNDEtLjdjLTIuNTkuOTQtNi4zNSAyLjgyLTE1LjI5IDIuODItMTcuNDIgMC0xNi44NS0xNC43NC0xNi45My0xNi43aDM3LjE2YTEuMjUgMS4yNSAwIDAgMCAxLjE4LS45NGMtLjI0LS4wMS45NC03LjA3LTEuNDEtMTUuNTR6bS0yMy4yOS02LjM1Yy0xMC4zMyAwLTEzIDktMTMuNjQgMTQuMTJINTQ2Yy0uODgtMTEuOTItNy42Mi0xNC4xMy0xMi43My0xNC4xM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS44NCAzNzguOTJjLS4zLjYtLjYgMS4wOCAwIDB6bTI0OS4xMy04N2ExMzEuMTYgMTMxLjE2IDAgMCAwLTU4IDEzLjVjLTUuOS0xMS45LTEyLTIyLjMtMTMtMzAuMS0xLjItOS4xLTIuNS0xNC41LTEuMS0yNS4zczcuNy0yNi4xIDcuNi0yNy4yLTEuNC02LjYtMTQuMy02LjctMjQgMi41LTI1LjI5IDUuOWExMjIuODMgMTIyLjgzIDAgMCAwLTUuMyAxOS4xYy0yLjMgMTEuNy0yNS43OSA1My41LTM5LjA5IDc1LjMtNC40LTguNS04LjEtMTYtOC45LTIyLTEuMi05LjEtMi41LTE0LjUtMS4xLTI1LjNzNy43LTI2LjEgNy42LTI3LjItMS40LTYuNi0xNC4yOS02LjctMjQgMi41LTI1LjMgNS45LTIuNyAxMS40LTUuMyAxOS4xLTMzLjg5IDc3LjMtNDIuMDggOTUuNGMtNC4yIDkuMi03LjggMTYuNi0xMC40IDIxLjYtLjQuOC0uNyAxLjMtLjkgMS43LjMtLjUuNS0xIC41LS44LTIuMiA0LjMtMy41IDYuNy0zLjUgNi43di4xYy0xLjcgMy4yLTMuNiA2LjEtNC41IDYuMS0uNiAwLTEuOS04LjQuMy0xOS45IDQuNy0yNC4yIDE1LjgtNjEuOCAxNS43LTYzLjEtLjEtLjcgMi4xLTcuMi03LjMtMTAuNy05LjEtMy4zLTEyLjQgMi4yLTEzLjIgMi4ycy0xLjQgMi0xLjQgMiAxMC4xLTQyLjQtMTkuMzktNDIuNGMtMTguNCAwLTQ0IDIwLjItNTYuNTggMzguNS03LjkgNC4zLTI1IDEzLjYtNDMgMjMuNS02LjkgMy44LTE0IDcuNy0yMC43IDExLjQtLjUtLjUtLjktMS0xLjQtMS41LTM1Ljc5LTM4LjItMTAxLjg3LTY1LjItOTkuMDctMTE2LjUgMS0xOC43IDcuNS02Ny44IDEyNy4wNy0xMjcuNCA5OC00OC44IDE3Ni4zNS0zNS40IDE4OS44NC01LjYgMTkuNCA0Mi41LTQxLjg5IDEyMS42LTE0My42NiAxMzMtMzguNzkgNC4zLTU5LjE4LTEwLjctNjQuMjgtMTYuMy01LjMtNS45LTYuMS02LjItOC4xLTUuMS0zLjMgMS44LTEuMiA3IDAgMTAuMSAzIDcuOSAxNS41IDIxLjkgMzYuNzkgMjguOSAxOC43IDYuMSA2NC4xOCA5LjUgMTE5LjE3LTExLjggNjEuNzgtMjMuOCAxMDkuODctOTAuMSA5NS43Ny0xNDUuNkMzODYuNTIgMTguMzIgMjkzLS4xOCAyMDQuNTcgMzEuMjJjLTUyLjY5IDE4LjctMTA5LjY3IDQ4LjEtMTUwLjY2IDg2LjQtNDguNjkgNDUuNi01Ni40OCA4NS4zLTUzLjI4IDEwMS45IDExLjM5IDU4LjkgOTIuNTcgOTcuMyAxMjUuMDYgMTI1LjctMS42LjktMy4xIDEuNy00LjUgMi41LTE2LjI5IDguMS03OC4xOCA0MC41LTkzLjY3IDc0LjctMTcuNSAzOC44IDIuOSA2Ni42IDE2LjI5IDcwLjQgNDEuNzkgMTEuNiA4NC41OC05LjMgMTA3LjU3LTQzLjZzMjAuMi03OS4xIDkuNi05OS41Yy0uMS0uMy0uMy0uNS0uNC0uOCA0LjItMi41IDguNS01IDEyLjgtNy41IDguMjktNC45IDE2LjM5LTkuNCAyMy40OS0xMy4zLTQgMTAuOC02LjkgMjMuOC04LjQgNDIuNi0xLjggMjIgNy4zIDUwLjUgMTkuMSA2MS43IDUuMiA0LjkgMTEuNDkgNSAxNS4zOSA1IDEzLjggMCAyMC0xMS40IDI2Ljg5LTI1IDguNS0xNi42IDE2LTM1LjkgMTYtMzUuOXMtOS40IDUyLjIgMTYuMyA1Mi4yYzkuMzkgMCAxOC43OS0xMi4xIDIzLTE4LjN2LjFzLjItLjQuNy0xLjJjMS0xLjUgMS41LTIuNCAxLjUtMi40di0uM2MzLjgtNi41IDEyLjEtMjEuNCAyNC41OS00NiAxNi4yLTMxLjggMzEuNjktNzEuNSAzMS42OS03MS41YTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi44IDkuNSA4LjcgMTkuOSAxMy40IDMwLTMuOCA1LjItNi4xIDguMi02LjEgOC4yYS4zMS4zMSAwIDAgMCAuMS4yYy0zIDQtNi40IDguMy05LjkgMTIuNS0xMi43OSAxNS4yLTI4IDMyLjYtMzAgMzcuNi0yLjQgNS45LTEuOCAxMC4zIDIuOCAxMy43IDMuNCAyLjYgOS40IDMgMTUuNjkgMi41IDExLjUtLjggMTkuNi0zLjYgMjMuNS01LjRhODIuMiA4Mi4yIDAgMCAwIDIwLjE5LTEwLjZjMTIuNS05LjIgMjAuMS0yMi40IDE5LjQtMzkuOC0uNC05LjYtMy41LTE5LjItNy4zLTI4LjIgMS4xLTEuNiAyLjMtMy4zIDMuNC01QzQzNC44IDMwMS43MiA0NTAuMSAyNzAgNDUwLjEgMjcwYTIwMS4yNCAyMDEuMjQgMCAwIDAgNi4yIDI1LjhjMi40IDguMSA3LjA5IDE3IDExLjM5IDI1LjctMTguNTkgMTUuMS0zMC4wOSAzMi42LTM0LjA5IDQ0LjEtNy40IDIxLjMtMS42IDMwLjkgOS4zIDMzLjEgNC45IDEgMTEuOS0xLjMgMTcuMS0zLjVhNzkuNDYgNzkuNDYgMCAwIDAgMjEuNTktMTEuMWMxMi41LTkuMiAyNC41OS0yMi4xIDIzLjc5LTM5LjYtLjMtNy45LTIuNS0xNS44LTUuNC0yMy40IDE1LjctNi42IDM2LjA5LTEwLjIgNjIuMDktNy4yIDU1LjY4IDYuNSA2Ni41OCA0MS4zIDY0LjQ4IDU1LjhzLTEzLjggMjIuNi0xNy43IDI1LTUuMSAzLjMtNC44IDUuMWMuNSAyLjYgMi4zIDIuNSA1LjYgMS45IDQuNi0uOCAyOS4xOS0xMS44IDMwLjI5LTM4LjcgMS42LTM0LTMxLjA5LTcxLjQtODktNzEuMXptLTQyOS4xOCAxNDQuN2MtMTguMzkgMjAuMS00NC4xOSAyNy43LTU1LjI4IDIxLjNDNTQuNjEgNDUxIDU5LjMxIDQyMS40MiA4MiA0MDBjMTMuOC0xMyAzMS41OS0yNSA0My4zOS0zMi40IDIuNy0xLjYgNi42LTQgMTEuNC02LjkuOC0uNSAxLjItLjcgMS4yLS43LjktLjYgMS45LTEuMSAyLjktMS43IDguMjkgMzAuNC4zIDU3LjItMTkuMSA3OC4zem0xMzQuMzYtOTEuNGMtNi40IDE1LjctMTkuODkgNTUuNy0yOC4wOSA1My42LTctMS44LTExLjMtMzIuMy0xLjQtNjIuMyA1LTE1LjEgMTUuNi0zMy4xIDIxLjktNDAuMSAxMC4wOS0xMS4zIDIxLjE5LTE0LjkgMjMuNzktMTAuNCAzLjUgNS45LTEyLjIgNDkuNC0xNi4yIDU5LjJ6bTExMSA1M2MtMi43IDEuNC01LjIgMi4zLTYuNCAxLjYtLjktLjUgMS4xLTIuNCAxLjEtMi40czEzLjktMTQuOSAxOS40LTIxLjdjMy4yLTQgNi45LTguNyAxMC44OS0xMy45IDAgLjUuMSAxIC4xIDEuNi0uMTMgMTcuOS0xNy4zMiAzMC0yNS4xMiAzNC44em04NS41OC0xOS41Yy0yLTEuNC0xLjctNi4xIDUtMjAuNyAyLjYtNS43IDguNTktMTUuMyAxOS0yNC41YTM2LjE4IDM2LjE4IDAgMCAxIDEuOSAxMC44Yy0uMSAyMi41LTE2LjIgMzAuOS0yNS44OSAzNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaGxpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAuNSAxNTcuN2wtNTQuMi00Ni4xIDczLjQtMzkgNzguMyA0NC4yLTk3LjUgNDAuOXpNMTkyIDEyMi4xbDQ1LjctMjguMiAzNC43IDM0LjYtNTUuNCAyOS0yNS0zNS40em0tNjUuMSA2LjZsMzEuOS0yMi4xTDE3NiAxMzVsLTM2LjcgMjIuNS0xMi40LTI4Ljh6bS0yMy4zIDg4LjJsLTguOC0zNC44IDI5LjYtMTguMyAxMy4xIDM1LjMtMzMuOSAxNy44em0tMjEuMi04My43bDIzLjktMTguMSA4LjkgMjQtMjYuNyAxOC4zLTYuMS0yNC4yek01OSAyMDYuNWwtMy42LTI4LjQgMjIuMy0xNS41IDYuMSAyOC43TDU5IDIwNi41em0tMzAuNiAxNi42bDIwLjgtMTIuOCAzLjMgMzMuNC0yMi45IDEyLTEuMi0zMi42ek0xLjQgMjY4bDE5LjItMTAuMi40IDM4LjItMjEgOC44TDEuNCAyNjh6bTU5LjEgNTkuM2wtMjguMyA4LjMtMS42LTQ2LjggMjUuMS0xMC43IDQuOCA0OS4yek05OSAyNjMuMmwtMzEuMSAxMy01LjItNDAuOEw5MC4xIDIyMWw4LjkgNDIuMnpNMTIzLjIgMzc3bC00MS42IDUuOS04LjEtNjMuNSAzNS4yLTEwLjggMTQuNSA2OC40em0yOC41LTEzOS45bDIxLjIgNTcuMS00Ni4yIDEzLjYtMTMuNy01NC4xIDM4LjctMTYuNnptODUuNyAyMzAuNWwtNzAuOS0zLjMtMjQuMy05NS44IDU1LjItOC42IDQwIDEwNy43em0tODQuOS0yNzkuN2w0Mi4yLTIyLjQgMjggNDUuOS01MC44IDIxLjMtMTkuNC00NC44em00MSA5NC45bDYxLjMtMTguNyA1Mi44IDg2LjYtNzkuOCAxMS4zLTM0LjMtNzkuMnptNTEuNC04NS42bDY3LjMtMjguOCA2NS41IDY1LjQtODguNiAyNi4yLTQ0LjItNjIuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTY3JpYmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuMyAyNTIuN2MtMTYuMS0xOS0yNC43LTQ1LjktMjQuOC03OS45IDAtMTAwLjQgNzUuMi0xNTMuMSAxNjcuMi0xNTMuMSA5OC42LTEuNiAxNTYuOCA0OSAxODQuMyA3MC42bC01MC41IDcyLjEtMzcuMy0yNC42IDI2LjktMzguNmMtMzYuNS0yNC03OS40LTM2LjUtMTIzLTM1LjgtNTAuNy0uOC0xMTEuNyAyNy4yLTExMS43IDc2LjIgMCAxOC43IDExLjIgMjAuNyAyOC42IDE1LjYgMjMuMy01LjMgNDEuOS42IDU1LjggMTQgMjYuNCAyNC4zIDIzLjIgNjcuNi0uNyA5MS45LTI5LjIgMjkuNS04NS4yIDI3LjMtMTE0LjgtOC40em0zMTcuNyA1LjljLTE1LjUtMTguOC0zOC45LTI5LjQtNjMuMi0yOC42LTM4LjEtMi03MS4xIDI4LTcwLjUgNjcuMi0uNyAxNi44IDYgMzMgMTguNCA0NC4zIDE0LjEgMTMuOSAzMyAxOS43IDU2LjMgMTQuNCAxNy40LTUuMSAyOC42LTMuMSAyOC42IDE1LjYgMCA0LjMtLjUgOC41LTEuNCAxMi43LTE2LjcgNDAuOS01OS41IDY0LjQtMTIxLjQgNjQuNC01MS45LjItMTAyLjQtMTYuNC0xNDQuMS00Ny4zbDMzLjctMzkuNC0zNS42LTI3LjRMMCA0MDYuM2wxNS40IDEzLjhjNTIuNSA0Ni44IDEyMC40IDcyLjUgMTkwLjcgNzIuMiA1MS40IDAgOTQuNC0xMC41IDEzMy42LTQ0LjEgNTcuMS01MS40IDU0LjItMTQ5LjIgMjAuMy0xODkuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hlbmdpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDYwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjAuNiAxMzAuM2wtNjcuMiAyOC4yVjQzLjJMOTguNyAyMzMuNWw1NC43LTI0LjJ2MTMwLjNsNjcuMi0yMDkuM3ptLTgzLjItOTYuN2wtMS4zIDQuNy0xNS4yIDUyLjlDODAuNiAxMDYuNyA1MiAxNDUuOCA1MiAxOTEuNWMwIDUyLjMgMzQuMyA5NS45IDgzLjQgMTA1LjV2NTMuNkM1Ny41IDM0MC4xIDAgMjcyLjQgMCAxOTEuNmMwLTgwLjUgNTkuOC0xNDcuMiAxMzcuNC0xNTh6bTMxMS40IDQ0Ny4yYy0xMS4yIDExLjItMjMuMSAxMi4zLTI4LjYgMTAuNS01LjQtMS44LTI3LjEtMTkuOS02MC40LTQ0LjQtMzMuMy0yNC42LTMzLjYtMzUuNy00My01Ni43LTkuNC0yMC45LTMwLjQtNDIuNi01Ny41LTUyLjRsLTkuNy0xNC43Yy0yNC43IDE2LjktNTMgMjYuOS04MS4zIDI4LjdsMi4xLTYuNiAxNS45LTQ5LjVjNDYuNS0xMS45IDgwLjktNTQgODAuOS0xMDQuMiAwLTU0LjUtMzguNC0xMDIuMS05Ni0xMDcuMVYzMi4zQzI1NC40IDM3LjQgMzIwIDEwNi44IDMyMCAxOTEuNmMwIDMzLjYtMTEuMiA2NC43LTI5IDkwLjRsMTQuNiA5LjZjOS44IDI3LjEgMzEuNSA0OCA1Mi40IDU3LjRzMzIuMiA5LjcgNTYuOCA0M2MyNC42IDMzLjIgNDIuNyA1NC45IDQ0LjUgNjAuM3MuNyAxNy4zLTEwLjUgMjguNXptLTkuOS0xNy45YzAtNC40LTMuNi04LTgtOHMtOCAzLjYtOCA4IDMuNiA4IDggOCA4LTMuNiA4LTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VsbGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUzLjQgMzJIOTQuN0M0Mi42IDMyIDAgNzQuNiAwIDEyNi42djI1OC43QzAgNDM3LjQgNDIuNiA0ODAgOTQuNyA0ODBoMjU4LjdjNTIuMSAwIDk0LjctNDIuNiA5NC43LTk0LjZWMTI2LjZjMC01Mi00Mi42LTk0LjYtOTQuNy05NC42em0tNTAgMzE2LjRjLTI3LjkgNDguMi04OS45IDY0LjktMTM4LjIgMzcuMi0yMi45IDM5LjgtNTQuOSA4LjYtNDIuMy0xMy4ybDE1LjctMjcuMmM1LjktMTAuMyAxOS4yLTEzLjkgMjkuNS03LjkgMTguNiAxMC44LS4xLS4xIDE4LjUgMTAuNyAyNy42IDE1LjkgNjMuNCA2LjMgNzkuNC0yMS4zIDE1LjktMjcuNiA2LjMtNjMuNC0yMS4zLTc5LjQtMTcuOC0xMC4yLS42LS40LTE4LjYtMTAuNi0yNC42LTE0LjItMy40LTUxLjkgMjEuNi0zNy41IDE4LjYgMTAuOC0uMS0uMSAxOC41IDEwLjcgNDguNCAyOCA2NS4xIDkwLjMgMzcuMiAxMzguNXptMjEuOC0yMDguOGMtMTcgMjkuNS0xNi4zIDI4LjgtMTkgMzEuNS02LjUgNi41LTE2LjMgOC43LTI2LjUgMy42LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTI3LjYtMTUuOS02My40LTYuMy03OS40IDIxLjNzLTYuMyA2My40IDIxLjMgNzkuNGMwIDAgMTguNSAxMC42IDE4LjYgMTAuNiAyNC42IDE0LjIgMy40IDUxLjktMjEuNiAzNy41LTE4LjYtMTAuOC4xLjEtMTguNS0xMC43LTQ4LjItMjcuOC02NC45LTkwLjEtMzcuMS0xMzguNCAyNy45LTQ4LjIgODkuOS02NC45IDEzOC4yLTM3LjJsNC44LTguNGMxNC4zLTI0LjkgNTItMy4zIDM3LjcgMjEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWxsc3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM5LjcxIDIzNy4zMDhjMy4wNjQtMTIuMjU3IDQuMjktMjQuODIxIDQuMjktMzcuMzg0QzU0NCAxMDcuMzgyIDQ2OC42MTggMzIgMzc2LjA3NiAzMmMtNzcuMjIgMC0xNDQuNjM0IDUzLjAxMi0xNjMuMDIgMTI3Ljc4MS0xNS4zMjItMTMuMTc2LTM0LjkzNC0yMC41My01NS4xNTctMjAuNTMtNDYuMjcxIDAtODMuOTYyIDM3LjY5LTgzLjk2MiA4My45NjEgMCA3LjM1NC45MiAxNS4wMTUgMy4wNjUgMjIuMzY5LTQyLjkgMjAuMjI1LTcwLjc4NSA2My43MzgtNzAuNzg1IDExMS4yMzRDNi4yMTYgNDI0Ljg0MyA2MS42OCA0ODAgMTI5LjQwMSA0ODBoMzgxLjE5OGM2Ny43MiAwIDEyMy4xODQtNTUuMTU3IDEyMy4xODQtMTIzLjE4NC4wMDEtNTYuMzg0LTM4LjkxNi0xMDYuMDI1LTk0LjA3My0xMTkuNTA4ek0xOTkuODggNDAxLjU1NGMwIDguMjc0LTcuMDQ4IDE1LjMyMS0xNS4zMjEgMTUuMzIxSDE1My42MWMtOC4yNzQgMC0xNS4zMjEtNy4wNDgtMTUuMzIxLTE1LjMyMVYyOTAuNjI2YzAtOC4yNzMgNy4wNDgtMTUuMzIxIDE1LjMyMS0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIxIDcuMDQ4IDE1LjMyMSAxNS4zMjF2MTEwLjkyOHptODkuNDc3IDBjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIyIDE1LjMyMWgtMzAuOTQ5Yy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjI3MC4wOTZjMC04LjI3NCA3LjA0OC0xNS4zMjEgMTUuMzIxLTE1LjMyMWgzMC45NDljOC4yNzQgMCAxNS4zMjIgNy4wNDggMTUuMzIyIDE1LjMyMXYxMzEuNDU4em04OS40NzcgMGMwIDguMjc0LTcuMDQ3IDE1LjMyMS0xNS4zMjEgMTUuMzIxaC0zMC45NDljLTguMjc0IDAtMTUuMzIyLTcuMDQ4LTE1LjMyMi0xNS4zMjFWMjM4Ljg0YzAtOC4yNzQgNy4wNDgtMTUuMzIxIDE1LjMyMi0xNS4zMjFoMzAuOTQ5YzguMjc0IDAgMTUuMzIxIDcuMDQ4IDE1LjMyMSAxNS4zMjF2MTYyLjcxNHptODcuMDI3IDBjMCA4LjI3NC03LjA0OCAxNS4zMjEtMTUuMzIyIDE1LjMyMWgtMjguNDk3Yy04LjI3NCAwLTE1LjMyMS03LjA0OC0xNS4zMjEtMTUuMzIxVjE3Ni45NDFjMC04LjU3OSA3LjA0Ny0xNS42MjggMTUuMzIxLTE1LjYyOGgyOC40OTdjOC4yNzQgMCAxNS4zMjIgNy4wNDggMTUuMzIyIDE1LjYyOHYyMjQuNjEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlcnZpY2VzdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04OCAyMTZjODEuNyAxMC4yIDI3My43IDEwMi4zIDMwNCAyMzJIMGM5OS41LTguMSAxODQuNS0xMzcgODgtMjMyem0zMi0xNTJjMzIuMyAzNS42IDQ3LjcgODMuOSA0Ni40IDEzMy42QzI0OS4zIDIzMS4zIDM3My43IDMyMS4zIDQwMCA0NDhoOTZDNDU1LjMgMjMxLjkgMjIyLjggNzkuNSAxMjAgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcnRzaW5idWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwMCA0MTAuM2wzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTM5LjQgMTcuNWwzMC42IDEzLjQgNC40LTkuOS0zMC42LTEzLjR6bTE3Mi4xLTE0bDQuNCA5LjkgMzAuNi0xMy40LTQuNC05Ljl6TTE3OS4xIDQ0NWwzMC4zIDEzLjcgNC40LTkuOS0zMC4zLTEzLjR6TTYwLjQgMzkyLjhMOTEgNDA2LjJsNC40LTkuNi0zMC42LTEzLjd6bTIxMS40IDM4LjVsNC40IDkuOSAzMC42LTEzLjQtNC40LTkuOXptLTM5LjMgMTcuNWw0LjQgOS45IDMwLjYtMTMuNy00LjQtOS42em0xMTguNC01Mi4ybDQuNCA5LjYgMzAuNi0xMy40LTQuNC05Ljl6TTE3MCA0Ni42aC0zMy41djEwLjVIMTcwem0tNDcuMiAwSDg5LjJ2MTAuNWgzMy41em0tNDcuMyAwSDQyLjN2MTAuNWgzMy4zem0xNDEuNSAwaC0zMy4ydjEwLjVIMjE3em05NC41IDBIMjc4djEwLjVoMzMuNXptNDcuMyAwaC0zMy41djEwLjVoMzMuNXptLTk0LjYgMEgyMzF2MTAuNWgzMy4yem0xNDEuNSAwaC0zMy4zdjEwLjVoMzMuM3pNNTIuOCAzNTEuMUg0MnYzMy41aDEwLjh6bTcwLTIxNS45SDg5LjJ2MTAuNWgzMy41em0tNzAgMTAuNmgyMi44di0xMC41SDQydjMzLjVoMTAuOHptMTY4LjkgMjI4LjZjNTAuNSAwIDkxLjMtNDAuOCA5MS4zLTkxLjMgMC01MC4yLTQwLjgtOTEuMy05MS4zLTkxLjMtNTAuMiAwLTkxLjMgNDEuMS05MS4zIDkxLjMgMCA1MC41IDQxLjEgOTEuMyA5MS4zIDkxLjN6bS00OC4yLTExMS4xYzAtMjUuNCAyOS41LTMxLjggNDkuNi0zMS44IDE2LjkgMCAyOS4yIDUuOCA0NC4zIDEybC04LjggMTYuOWgtLjljLTYuNC05LjktMjQuOC0xMy4xLTM1LjYtMTMuMS05IDAtMjkuOCAxLjgtMjkuOCAxNC45IDAgMjEuNiA3OC41LTEwLjIgNzguNSAzNy45IDAgMjUuNC0zMS41IDMxLjItNTEgMzEuMi0xOC4xIDAtMzIuNC0yLjktNDcuMi0xMi4ybDktMTguNGguOWM2LjEgMTIuMiAyMy42IDE0LjkgMzUuOSAxNC45IDguNyAwIDMyLjctMS4yIDMyLjctMTQuMyAwLTI2LjEtNzcuNiA2LjMtNzcuNi0zOHpNNTIuOCAxNzguNEg0MlYyMTJoMTAuOHptMzQyLjQgMjA2LjJINDA2di0zMy41aC0xMC44ek01Mi44IDMwNy45SDQydjMzLjVoMTAuOHpNMCAzLjd2NDA2bDIyMS43IDk4LjZMNDQ4IDQwOS43VjMuN3ptNDE4LjggMzg3LjFMMjIyIDQ3Ni41IDI5LjIgMzkwLjhWMTIwLjdoMzg5Ljd2MjcwLjF6bTAtMjk5LjNIMjkuMlYzMi45aDM4OS43djU4LjZ6bS0zNjYgMTMwLjFINDJ2MzMuNWgxMC44em0wIDQzLjJINDJ2MzMuNWgxMC44ek0xNzAgMTM1LjJoLTMzLjV2MTAuNUgxNzB6bTIyNS4yIDE2My4xSDQwNnYtMzMuNWgtMTAuOHptMC00My4ySDQwNnYtMzMuNWgtMTAuOHpNMjE3IDEzNS4yaC0zMy4ydjEwLjVIMjE3ek0zOTUuMiAyMTJINDA2di0zMy41aC0xMC44em0wIDEyOS41SDQwNlYzMDhoLTEwLjh6bS0xMzEtMjA2LjNIMjMxdjEwLjVoMzMuMnptNDcuMyAwSDI3OHYxMC41aDMzLjV6bTgzLjcgMzMuNkg0MDZ2LTMzLjVoLTMzLjV2MTAuNWgyMi44em0tMzYuNC0zMy42aC0zMy41djEwLjVoMzMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG9waWZ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4OC4zMiwxMDQuMWE0LjY2LDQuNjYsMCwwLDAtNC40LTRjLTIsMC0zNy4yMy0uOC0zNy4yMy0uOHMtMjEuNjEtMjAuODItMjkuNjItMjguODNWNTAzLjJMNDQyLjc2LDQ3MlMzODguNzIsMTA2LjUsMzg4LjMyLDEwNC4xWk0yODguNjUsNzAuNDdhMTE2LjY3LDExNi42NywwLDAsMC03LjIxLTE3LjYxQzI3MSwzMi44NSwyNTUuNDIsMjIsMjM3LDIyYTE1LDE1LDAsMCwwLTQsLjRjLS40LS44LTEuMi0xLjItMS42LTJDMjIzLjQsMTEuNjMsMjEzLDcuNjMsMjAwLjU4LDhjLTI0LC44LTQ4LDE4LTY3LjI1LDQ4LjgzLTEzLjYxLDIxLjYyLTI0LDQ4Ljg0LTI2LjgyLDcwLjA2LTI3LjYyLDguNC00Ni44MywxNC40MS00Ny4yMywxNC44MS0xNCw0LjQtMTQuNDEsNC44LTE2LDE4LTEuMiwxMC0zOCwyOTEuODItMzgsMjkxLjgyTDMwNy44Niw1MDRWNjUuNjdhNDEuNjYsNDEuNjYsMCwwLDAtNC40LjRTMjk3Ljg2LDY3LjY3LDI4OC42NSw3MC40N1pNMjMzLjQxLDg3LjY5Yy0xNiw0LjgtMzMuNjMsMTAuNC01MC44NCwxNS42MSw0LjgtMTguODIsMTQuNDEtMzcuNjMsMjUuNjItNTAsNC40LTQuNCwxMC40MS05LjYxLDE3LjIxLTEyLjgxQzIzMi4yMSw1NC44NiwyMzMuODEsNzQuNDgsMjMzLjQxLDg3LjY5Wk0yMDAuNTgsMjQuNDRBMjcuNDksMjcuNDksMCwwLDEsMjE1LDI4Yy02LjQsMy4yLTEyLjgxLDguNDEtMTguODEsMTQuNDEtMTUuMjEsMTYuNDItMjYuODIsNDItMzEuNjIsNjYuNDUtMTQuNDIsNC40MS0yOC44Myw4LjgxLTQyLDEyLjgxQzEzMS4zMyw4My4yOCwxNjMuNzUsMjUuMjQsMjAwLjU4LDI0LjQ0Wk0xNTQuMTUsMjQ0LjYxYzEuNiwyNS42MSw2OS4yNSwzMS4yMiw3My4yNSw5MS42NiwyLjgsNDcuNjQtMjUuMjIsODAuMDYtNjUuNjUsODIuNDctNDguODMsMy4yLTc1LjY1LTI1LjYyLTc1LjY1LTI1LjYybDEwLjQtNDRzMjYuODIsMjAuNDIsNDguNDQsMTguODJjMTQtLjgsMTkuMjItMTIuNDEsMTguODEtMjAuNDItMi0zMy42Mi01Ny4yNC0zMS42Mi02MC44NC04Ni44Ni0zLjItNDYuNDQsMjcuMjItOTMuMjcsOTQuNDctOTcuNjgsMjYtMS42LDM5LjIzLDQuODEsMzkuMjMsNC44MUwyMjEuNCwyMjUuMzlzLTE3LjIxLTgtMzcuNjMtNi40QzE1NC4xNSwyMjEsMTUzLjc1LDIzOS44LDE1NC4xNSwyNDQuNjFaTTI0OS40Miw4Mi44OGMwLTEyLTEuNi0yOS4yMi03LjIxLTQzLjYzLDE4LjQyLDMuNiwyNy4yMiwyNCwzMS4yMywzNi40M1EyNjIuNjMsNzguNjgsMjQ5LjQyLDgyLjg4WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3B3YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMy41IDQ1NS40MUEyNDYuMTcgMjQ2LjE3IDAgMCAxIDI1NiA1MDRDMTE4LjgxIDUwNCA4IDM5MyA4IDI1NiA4IDExOC44MSAxMTkgOCAyNTYgOGEyNDcuMzkgMjQ3LjM5IDAgMCAxIDE2NS43IDYzLjUgMy41NyAzLjU3IDAgMCAxLTIuODYgNi4xOEE0MTguNjIgNDE4LjYyIDAgMCAwIDM2Mi4xMyA3NGMtMTI5LjM2IDAtMjIyLjQgNTMuNDctMjIyLjQgMTU1LjM1IDAgMTA5IDkyLjEzIDE0NS44OCAxNzYuODMgMTc4LjczIDMzLjY0IDEzIDY1LjQgMjUuMzYgODcgNDEuNTlhMy41OCAzLjU4IDAgMCAxIDAgNS43MnpNNTAzIDIzMy4wOWEzLjY0IDMuNjQgMCAwIDAtMS4yNy0yLjQ0Yy01MS43Ni00My05My42Mi02MC40OC0xNDQuNDgtNjAuNDgtODQuMTMgMC04MC4yNSA1Mi4xNy04MC4yNSA1My42MyAwIDQyLjYgNTIuMDYgNjIgMTEyLjM0IDg0LjQ5IDMxLjA3IDExLjU5IDYzLjE5IDIzLjU3IDkyLjY4IDM5LjkzYTMuNTcgMy41NyAwIDAgMCA1LTEuODJBMjQ5IDI0OSAwIDAgMCA1MDMgMjMzLjA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpbXBseWJ1aWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MS4yIDY0aC0xMDZjLTE0LjUgMC0yNi42IDExLjgtMjYuNiAyNi4zdjM5LjZIMTYzLjNWOTAuM2MwLTE0LjUtMTItMjYuMy0yNi42LTI2LjNoLTEwNkMxNi4xIDY0IDQuMyA3NS44IDQuMyA5MC4zdjMzMS40YzAgMTQuNSAxMS44IDI2LjMgMjYuNiAyNi4zaDQ1MC40YzE0LjggMCAyNi42LTExLjggMjYuNi0yNi4zVjkwLjNjLS4yLTE0LjUtMTItMjYuMy0yNi43LTI2LjN6TTE0OS44IDM1NS44Yy0zNi42IDAtNjYuNC0yOS43LTY2LjQtNjYuNCAwLTM2LjkgMjkuNy02Ni42IDY2LjQtNjYuNiAzNi45IDAgNjYuNiAyOS43IDY2LjYgNjYuNiAwIDM2LjctMjkuNyA2Ni40LTY2LjYgNjYuNHptMjEyLjQgMGMtMzYuOSAwLTY2LjYtMjkuNy02Ni42LTY2LjYgMC0zNi42IDI5LjctNjYuNCA2Ni42LTY2LjQgMzYuNiAwIDY2LjQgMjkuNyA2Ni40IDY2LjQgMCAzNi45LTI5LjggNjYuNi02Ni40IDY2LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lzdHJpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggNDQ5TDMwMS4yIDMwMC4yYzIwLTI3LjkgMzEuOS02Mi4yIDMxLjktOTkuMiAwLTkzLjEtNzQuNy0xNjguOS0xNjYuNS0xNjguOUM3NC43IDMyIDAgMTA3LjggMCAyMDAuOXM3NC43IDE2OC45IDE2Ni41IDE2OC45YzM5LjggMCA3Ni4zLTE0LjIgMTA1LTM3LjlsMTQ2IDE0OC4xIDMwLjUtMzF6TTE2Ni41IDMzMC44Yy03MC42IDAtMTI4LjEtNTguMy0xMjguMS0xMjkuOVM5NS45IDcxIDE2Ni41IDcxczEyOC4xIDU4LjMgMTI4LjEgMTI5LjktNTcuNCAxMjkuOS0xMjguMSAxMjkuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzJsNjkuNzEgMTE4Ljc1LTU4Ljg2LTExLjUyIDY5Ljg0IDkxLjAzYTE0Ni43NDEgMTQ2Ljc0MSAwIDAgMCAwIDUxLjQ1bC02OS44NCA5MS4wMyA1OC44Ni0xMS41MkwwIDQ4MGwxMTguNzUtNjkuNzEtMTEuNTIgNTguODYgOTEuMDMtNjkuODRjMTcuMDIgMy4wNCAzNC40NyAzLjA0IDUxLjQ4IDBsOTEuMDMgNjkuODQtMTEuNTItNTguODZMNDQ4IDQ4MGwtNjkuNzEtMTE4Ljc4IDU4Ljg2IDExLjUyLTY5Ljg0LTkxLjAzYzMuMDMtMTcuMDEgMy4wNC0zNC40NCAwLTUxLjQ1bDY5Ljg0LTkxLjAzLTU4Ljg2IDExLjUyTDQ0OCAzMmwtMTE4Ljc1IDY5LjcxIDExLjUyLTU4LjktOTEuMDYgNjkuODdjLTguNS0xLjUyLTE3LjEtMi4yOS0yNS43MS0yLjI5cy0xNy4yMS43OC0yNS43MSAyLjI5bC05MS4wNi02OS44NyAxMS41MiA1OC45TDAgMzJ6bTIyNCA5OS43OGMzMS44IDAgNjMuNiAxMi4xMiA4Ny44NSAzNi4zNyA0OC41IDQ4LjUgNDguNDkgMTI3LjIxIDAgMTc1LjdzLTEyNy4yIDQ4LjQ2LTE3NS43LS4wM2MtNDguNS00OC41LTQ4LjQ5LTEyNy4yMSAwLTE3NS43IDI0LjI0LTI0LjI1IDU2LjA1LTM2LjM0IDg3Ljg1LTM2LjM0em0wIDM2LjY2Yy0yMi40MiAwLTQ0LjgzIDguNTItNjEuOTIgMjUuNjEtMzQuMTggMzQuMTgtMzQuMTkgODkuNjggMCAxMjMuODdzODkuNjUgMzQuMTggMTIzLjg0IDBjMzQuMTgtMzQuMTggMzQuMTktODkuNjggMC0xMjMuODctMTcuMDktMTcuMDktMzkuNS0yNS42MS02MS45Mi0yNS42MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa2V0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcuNSAxNjIuMkw5IDE4Ny4xaDkwLjVsNi45LTEzMC43LTc4LjkgMTA1Ljh6TTM5Ni4zIDQ1LjdMMjY3LjcgMzJsMTM1LjcgMTQ3LjItNy4xLTEzMy41ek0xMTIuMiAyMTguM2wtMTEuMi0yMkg5LjlMMjM0LjggNDU4em0yLTMxLjJoMjg0bC04MS41LTg4LjVMMjU2LjMgMzN6bTI5Ny4zIDkuMUwyNzcuNiA0NThsMjI0LjgtMjYxLjdoLTkwLjl6TTQxNS40IDY5TDQwNiA1Ni40bC45IDE3LjMgNi4xIDExMy40aDkwLjN6TTExMy41IDkzLjVsLTQuNiA4NS42TDI0NC43IDMyIDExNi4xIDQ1Ljd6bTI4Ny43IDEwMi43aC0yOTBsNDIuNCA4Mi45TDI1Ni4zIDQ4MGwxNDQuOS0yODMuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTa3lhdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgMzI5LjNjMCA2NS45LTUyLjUgMTE0LjQtMTE3LjUgMTE0LjQtMTY1LjkgMC0xOTYuNi0yNDkuNy0zNTkuNy0yNDkuNy0xNDYuOSAwLTE0Ny4xIDIxMi4yIDUuNiAyMTIuMiA0Mi41IDAgOTAuOS0xNy44IDEyNS4zLTQyLjUgNS42LTQuMSAxNi45LTE2LjMgMjIuOC0xNi4zczEwLjkgNSAxMC45IDEwLjljMCA3LjgtMTMuMSAxOS4xLTE4LjcgMjQuMS00MC45IDM1LjYtMTAwLjMgNjEuMi0xNTQuNyA2MS4yLTgzLjQuMS0xNTQtNTktMTU0LTE0NC45czY3LjUtMTQ5LjEgMTUyLjgtMTQ5LjFjMTg1LjMgMCAyMjIuNSAyNDUuOSAzNjEuOSAyNDUuOSA5OS45IDAgOTQuOC0xMzkuNyAzLjQtMTM5LjctMTcuNSAwLTM1IDExLjYtNDYuOSAxMS42LTguNCAwLTE1LjktNy4yLTE1LjktMTUuNiAwLTExLjYgNS4zLTIzLjcgNS4zLTM2LjMgMC02Ni42LTUwLjktMTE0LjctMTE2LjktMTE0LjctNTMuMSAwLTgwIDM2LjktODguOCAzNi45LTYuMiAwLTExLjItNS0xMS4yLTExLjIgMC01LjYgNC4xLTEwLjMgNy44LTE0LjQgMjUuMy0yOC44IDY0LjctNDMuNyAxMDIuOC00My43IDc5LjQgMCAxMzkuMSA1OC40IDEzOS4xIDEzNy44IDAgNi45LS4zIDEzLjctMS4yIDIwLjYgMTEuOS0zLjEgMjQuMS00LjcgMzUuOS00LjcgNjAuNyAwIDExMS45IDQ1LjMgMTExLjkgMTA3LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2t5cGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjcgMjk5LjhjMi45LTE0IDQuNy0yOC45IDQuNy00My44IDAtMTEzLjUtOTEuOS0yMDUuMy0yMDUuMy0yMDUuMy0xNC45IDAtMjkuNyAxLjctNDMuOCA0LjdDMTYxLjMgNDAuNyAxMzcuNyAzMiAxMTIgMzIgNTAuMiAzMiAwIDgyLjIgMCAxNDRjMCAyNS43IDguNyA0OS4zIDIzLjMgNjguMi0yLjkgMTQtNC43IDI4LjktNC43IDQzLjggMCAxMTMuNSA5MS45IDIwNS4zIDIwNS4zIDIwNS4zIDE0LjkgMCAyOS43LTEuNyA0My44LTQuNyAxOSAxNC42IDQyLjYgMjMuMyA2OC4yIDIzLjMgNjEuOCAwIDExMi01MC4yIDExMi0xMTIgLjEtMjUuNi04LjYtNDkuMi0yMy4yLTY4LjF6bS0xOTQuNiA5MS41Yy02NS42IDAtMTIwLjUtMjkuMi0xMjAuNS02NSAwLTE2IDktMzAuNiAyOS41LTMwLjYgMzEuMiAwIDM0LjEgNDQuOSA4OC4xIDQ0LjkgMjUuNyAwIDQyLjMtMTEuNCA0Mi4zLTI2LjMgMC0xOC43LTE2LTIxLjYtNDItMjgtNjIuNS0xNS40LTExNy44LTIyLTExNy44LTg3LjIgMC01OS4yIDU4LjYtODEuMSAxMDkuMS04MS4xIDU1LjEgMCAxMTAuOCAyMS45IDExMC44IDU1LjQgMCAxNi45LTExLjQgMzEuOC0zMC4zIDMxLjgtMjguMyAwLTI5LjItMzMuNS03NS0zMy41LTI1LjcgMC00MiA3LTQyIDIyLjUgMCAxOS44IDIwLjggMjEuOCA2OS4xIDMzIDQxLjQgOS4zIDkwLjcgMjYuOCA5MC43IDc3LjYgMCA1OS4xLTU3LjEgODYuNS0xMTIgODYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGFja0hhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjIgMjcwLjRjLTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOWwtNDUuNCAxNS4xLTMwLjMtOTAgNDUuNC0xNS4xYzE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45LTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOWwtNDUuNCAxNS4xLTE1LjctNDdjLTYuMi0xOS0yNi45LTI5LjEtNDYtMjIuOS0xOS4xIDYuMi0yOS4xIDI2LjgtMjMgNDUuOWwxNS43IDQ3LTkzLjQgMzEuMi0xNS43LTQ3Yy02LjItMTktMjYuOS0yOS4xLTQ2LTIyLjktMTkuMSA2LjItMjkuMSAyNi44LTIzIDQ1LjlsMTUuNyA0Ny00NS4zIDE1Yy0xOS4xIDYuMi0yOS4xIDI2LjgtMjMgNDUuOSA1IDE0LjUgMTkuMSAyNCAzMy42IDI0LjYgNi44IDEgMTItMS42IDU3LjctMTYuOGwzMC4zIDkwTDc4IDM1NC44Yy0xOSA2LjItMjkuMSAyNi45LTIzIDQ1LjkgNSAxNC41IDE5LjEgMjQgMzMuNiAyNC42IDYuOCAxIDEyLTEuNiA1Ny43LTE2LjhsMTUuNyA0N2M1LjkgMTYuOSAyNC43IDI5IDQ2IDIyLjkgMTkuMS02LjIgMjkuMS0yNi44IDIzLTQ1LjlsLTE1LjctNDcgOTMuNi0zMS4zIDE1LjcgNDdjNS45IDE2LjkgMjQuNyAyOSA0NiAyMi45IDE5LjEtNi4yIDI5LjEtMjYuOCAyMy00NS45bC0xNS43LTQ3IDQ1LjQtMTUuMWMxOS02IDI5LjEtMjYuNyAyMi45LTQ1Ljd6bS0yNTQuMSA0Ny4ybC0zMC4zLTkwLjIgOTMuNS0zMS4zIDMwLjMgOTAuMi05My41IDMxLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTQuMTIgMzE1LjFjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2UzAgMzQxIDAgMzE1LjFjMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDQ3LjA2djQ3LjA2em0yMy43MiAwYzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNnM0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnYxMTcuODRjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2cy00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlYzMTUuMXptNDcuMDYtMTg4Ljk4Yy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZTMTM5IDMyIDE2NC45IDMyczQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2djQ3LjA2SDE2NC45em0wIDIzLjcyYzI1LjkgMCA0Ny4wNiAyMS4xNiA0Ny4wNiA0Ny4wNnMtMjEuMTYgNDcuMDYtNDcuMDYgNDcuMDZINDcuMDZDMjEuMTYgMjQzLjk2IDAgMjIyLjggMCAxOTYuOXMyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNkgxNjQuOXptMTg4Ljk4IDQ3LjA2YzAtMjUuOSAyMS4xNi00Ny4wNiA0Ny4wNi00Ny4wNiAyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDZzLTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2aC00Ny4wNlYxOTYuOXptLTIzLjcyIDBjMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2LTI1LjkgMC00Ny4wNi0yMS4xNi00Ny4wNi00Ny4wNlY3OS4wNmMwLTI1LjkgMjEuMTYtNDcuMDYgNDcuMDYtNDcuMDYgMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2VjE5Ni45ek0yODMuMSAzODUuODhjMjUuOSAwIDQ3LjA2IDIxLjE2IDQ3LjA2IDQ3LjA2IDAgMjUuOS0yMS4xNiA0Ny4wNi00Ny4wNiA0Ny4wNi0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDZ2LTQ3LjA2aDQ3LjA2em0wLTIzLjcyYy0yNS45IDAtNDcuMDYtMjEuMTYtNDcuMDYtNDcuMDYgMC0yNS45IDIxLjE2LTQ3LjA2IDQ3LjA2LTQ3LjA2aDExNy44NGMyNS45IDAgNDcuMDYgMjEuMTYgNDcuMDYgNDcuMDYgMCAyNS45LTIxLjE2IDQ3LjA2LTQ3LjA2IDQ3LjA2SDI4My4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsaWRlc2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg3LjcgMTUzLjdjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuN3M2MS43LTI2IDYxLjctNTcuN2MwLTMyLTI3LjctNTcuNy02MS43LTU3Ljd6bTE0My40IDBjLTM0IDAtNjEuNyAyNS43LTYxLjcgNTcuNyAwIDMxLjcgMjcuNyA1Ny43IDYxLjcgNTcuNyAzNC4zIDAgNjEuNy0yNiA2MS43LTU3LjcuMS0zMi0yNy40LTU3LjctNjEuNy01Ny43em0xNTYuNiA5MGwtNiA0LjNWNDkuN2MwLTI3LjQtMjAuNi00OS43LTQ2LTQ5LjdINzYuNmMtMjUuNCAwLTQ2IDIyLjMtNDYgNDkuN1YyNDhjLTItMS40LTQuMy0yLjktNi4zLTQuMy0xNS4xLTEwLjYtMjUuMSA0LTE2IDE3LjcgMTguMyAyMi42IDUzLjEgNTAuMyAxMDYuMyA3MkM1OC4zIDUyNS4xIDI1MiA1NTUuNyAyNDguOSA0NTcuNWMwLS43LjMtNTYuNi4zLTk2LjYgNS4xIDEuMSA5LjQgMi4zIDEzLjcgMy4xIDAgMzkuNy4zIDkyLjguMyA5My41LTMuMSA5OC4zIDE5MC42IDY3LjcgMTM0LjMtMTI0IDUzLjEtMjEuNyA4OC00OS40IDEwNi4zLTcyIDkuMS0xMy44LS45LTI4LjMtMTYuMS0xNy44em0tMzAuNSAxOS4yYy02OC45IDM3LjQtMTI4LjMgMzEuMS0xNjAuNiAyOS43LTIzLjctLjktMzIuNiA5LjEtMzMuNyAyNC45LTEwLjMtNy43LTE4LjYtMTUuNS0yMC4zLTE3LjEtNS4xLTUuNC0xMy43LTgtMjcuMS03LjctMzEuNyAxLjEtODkuNyA3LjQtMTU3LjQtMjhWNzIuM2MwLTM0LjkgOC45LTQ1LjcgNDAuNi00NS43aDMxNy43YzMwLjMgMCA0MC45IDEyLjkgNDAuOSA0NS43djE5MC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0R2hvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjg0NiAzOTIuNjczYy01LjIxMSAxMi4xNTctMjcuMjM5IDIxLjA4OS02Ny4zNiAyNy4zMTgtMi4wNjQgMi43ODYtMy43NzUgMTQuNjg2LTYuNTA3IDIzLjk1Ni0xLjYyNSA1LjU2Ni01LjYyMyA4Ljg2OS0xMi4xMjggOC44NjlsLS4yOTctLjAwNWMtOS4zOTUgMC0xOS4yMDMtNC4zMjMtMzguODUyLTQuMzIzLTI2LjUyMSAwLTM1LjY2MiA2LjA0My01Ni4yNTQgMjAuNTg4LTIxLjgzMiAxNS40MzgtNDIuNzcxIDI4Ljc2NC03NC4wMjcgMjcuMzk5LTMxLjY0NiAyLjMzNC01OC4wMjUtMTYuOTA4LTcyLjg3MS0yNy40MDQtMjAuNzE0LTE0LjY0My0yOS44MjgtMjAuNTgyLTU2LjI0MS0yMC41ODItMTguODY0IDAtMzAuNzM2IDQuNzItMzguODUyIDQuNzItOC4wNzMgMC0xMS4yMTMtNC45MjItMTIuNDIyLTkuMDQtMi43MDMtOS4xODktNC40MDQtMjEuMjYzLTYuNTIzLTI0LjEzLTIwLjY3OS0zLjIwOS02Ny4zMS0xMS4zNDQtNjguNDk4LTMyLjE1YTEwLjYyNyAxMC42MjcgMCAwIDEgOC44NzctMTEuMDY5YzY5LjU4My0xMS40NTUgMTAwLjkyNC04Mi45MDEgMTAyLjIyNy04NS45MzQuMDc0LS4xNzYuMTU1LS4zNDQuMjM3LS41MTUgMy43MTMtNy41MzcgNC41NDQtMTMuODQ5IDIuNDYzLTE4Ljc1My01LjA1LTExLjg5Ni0yNi44NzItMTYuMTY0LTM2LjA1My0xOS43OTYtMjMuNzE1LTkuMzY2LTI3LjAxNS0yMC4xMjgtMjUuNjEyLTI3LjUwNCAyLjQzNy0xMi44MzYgMjEuNzI1LTIwLjczNSAzMy4wMDItMTUuNDUzIDguOTE5IDQuMTgxIDE2Ljg0MyA2LjI5NyAyMy41NDcgNi4yOTcgNS4wMjIgMCA4LjIxMi0xLjIwNCA5Ljk2LTIuMTcxLTIuMDQzLTM1LjkzNi03LjEwMS04Ny4yOSA1LjY4Ny0xMTUuOTY5QzE1OC4xMjIgMjEuMzA0IDIyOS43MDUgMTUuNDIgMjUwLjgyNiAxNS40MmMuOTQ0IDAgOS4xNDEtLjA4OSAxMC4xMS0uMDg5IDUyLjE0OCAwIDEwMi4yNTQgMjYuNzggMTI2LjcyMyA4MS42NDMgMTIuNzc3IDI4LjY1IDcuNzQ5IDc5Ljc5MiA1LjY5NSAxMTYuMDA5IDEuNTgyLjg3MiA0LjM1NyAxLjk0MiA4LjU5OSAyLjEzOSA2LjM5Ny0uMjg2IDEzLjgxNS0yLjM4OSAyMi4wNjktNi4yNTcgNi4wODUtMi44NDYgMTQuNDA2LTIuNDYxIDIwLjQ4LjA1OGwuMDI5LjAxYzkuNDc2IDMuMzg1IDE1LjQzOSAxMC4yMTUgMTUuNTg5IDE3Ljg3LjE4NCA5Ljc0Ny04LjUyMiAxOC4xNjUtMjUuODc4IDI1LjAxOC0yLjExOC44MzUtNC42OTQgMS42NTUtNy40MzQgMi41MjUtOS43OTcgMy4xMDYtMjQuNiA3LjgwNS0yOC42MTYgMTcuMjcxLTIuMDc5IDQuOTA0LTEuMjU2IDExLjIxMSAyLjQ2IDE4Ljc0OC4wODcuMTY4LjE2Ni4zNDIuMjM5LjUxNSAxLjMwMSAzLjAzIDMyLjYxNSA3NC40NiAxMDIuMjMgODUuOTM0IDYuNDI3IDEuMDU4IDExLjE2MyA3Ljg3NyA3LjcyNSAxNS44NTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25hcGNoYXRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTYuNSAzMTQuOWMtMy41IDguMS0xOC4xIDE0LTQ0LjggMTguMi0xLjQgMS45LTIuNSA5LjgtNC4zIDE1LjktMS4xIDMuNy0zLjcgNS45LTguMSA1LjloLS4yYy02LjIgMC0xMi44LTIuOS0yNS44LTIuOS0xNy42IDAtMjMuNyA0LTM3LjQgMTMuNy0xNC41IDEwLjMtMjguNCAxOS4xLTQ5LjIgMTguMi0yMSAxLjYtMzguNi0xMS4yLTQ4LjUtMTguMi0xMy44LTkuNy0xOS44LTEzLjctMzcuNC0xMy43LTEyLjUgMC0yMC40IDMuMS0yNS44IDMuMS01LjQgMC03LjUtMy4zLTguMy02LTEuOC02LjEtMi45LTE0LjEtNC4zLTE2LTEzLjgtMi4xLTQ0LjgtNy41LTQ1LjUtMjEuNC0uMi0zLjYgMi4zLTYuOCA1LjktNy40IDQ2LjMtNy42IDY3LjEtNTUuMSA2OC01Ny4xIDAtLjEuMS0uMi4yLS4zIDIuNS01IDMtOS4yIDEuNi0xMi41LTMuNC03LjktMTcuOS0xMC43LTI0LTEzLjItMTUuOC02LjItMTgtMTMuNC0xNy0xOC4zIDEuNi04LjUgMTQuNC0xMy44IDIxLjktMTAuMyA1LjkgMi44IDExLjIgNC4yIDE1LjcgNC4yIDMuMyAwIDUuNS0uOCA2LjYtMS40LTEuNC0yMy45LTQuNy01OCAzLjgtNzcuMUMxNTkuMSAxMDAgMjA2LjcgOTYgMjIwLjcgOTZjLjYgMCA2LjEtLjEgNi43LS4xIDM0LjcgMCA2OCAxNy44IDg0LjMgNTQuMyA4LjUgMTkuMSA1LjIgNTMuMSAzLjggNzcuMSAxLjEuNiAyLjkgMS4zIDUuNyAxLjQgNC4zLS4yIDkuMi0xLjYgMTQuNy00LjIgNC0xLjkgOS42LTEuNiAxMy42IDAgNi4zIDIuMyAxMC4zIDYuOCAxMC40IDExLjkuMSA2LjUtNS43IDEyLjEtMTcuMiAxNi42LTEuNC42LTMuMSAxLjEtNC45IDEuNy02LjUgMi4xLTE2LjQgNS4yLTE5IDExLjUtMS40IDMuMy0uOCA3LjUgMS42IDEyLjUuMS4xLjEuMi4yLjMuOSAyIDIxLjcgNDkuNSA2OCA1Ny4xIDQgMSA3LjEgNS41IDQuOSAxMC44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNuYXBjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE2OS41IDMzOC45Yy0zLjUgOC4xLTE4LjEgMTQtNDQuOCAxOC4yLTEuNCAxLjktMi41IDkuOC00LjMgMTUuOS0xLjEgMy43LTMuNyA1LjktOC4xIDUuOWgtLjJjLTYuMiAwLTEyLjgtMi45LTI1LjgtMi45LTE3LjYgMC0yMy43IDQtMzcuNCAxMy43LTE0LjUgMTAuMy0yOC40IDE5LjEtNDkuMiAxOC4yLTIxIDEuNi0zOC42LTExLjItNDguNS0xOC4yLTEzLjgtOS43LTE5LjgtMTMuNy0zNy40LTEzLjctMTIuNSAwLTIwLjQgMy4xLTI1LjggMy4xLTUuNCAwLTcuNS0zLjMtOC4zLTYtMS44LTYuMS0yLjktMTQuMS00LjMtMTYtMTMuOC0yLjEtNDQuOC03LjUtNDUuNS0yMS40LS4yLTMuNiAyLjMtNi44IDUuOS03LjQgNDYuMy03LjYgNjcuMS01NS4xIDY4LTU3LjEgMC0uMS4xLS4yLjItLjMgMi41LTUgMy05LjIgMS42LTEyLjUtMy40LTcuOS0xNy45LTEwLjctMjQtMTMuMi0xNS44LTYuMi0xOC0xMy40LTE3LTE4LjMgMS42LTguNSAxNC40LTEzLjggMjEuOS0xMC4zIDUuOSAyLjggMTEuMiA0LjIgMTUuNyA0LjIgMy4zIDAgNS41LS44IDYuNi0xLjQtMS40LTIzLjktNC43LTU4IDMuOC03Ny4xQzE4My4xIDEwMCAyMzAuNyA5NiAyNDQuNyA5NmMuNiAwIDYuMS0uMSA2LjctLjEgMzQuNyAwIDY4IDE3LjggODQuMyA1NC4zIDguNSAxOS4xIDUuMiA1My4xIDMuOCA3Ny4xIDEuMS42IDIuOSAxLjMgNS43IDEuNCA0LjMtLjIgOS4yLTEuNiAxNC43LTQuMiA0LTEuOSA5LjYtMS42IDEzLjYgMCA2LjMgMi4zIDEwLjMgNi44IDEwLjQgMTEuOS4xIDYuNS01LjcgMTIuMS0xNy4yIDE2LjYtMS40LjYtMy4xIDEuMS00LjkgMS43LTYuNSAyLjEtMTYuNCA1LjItMTkgMTEuNS0xLjQgMy4zLS44IDcuNSAxLjYgMTIuNS4xLjEuMS4yLjIuMy45IDIgMjEuNyA0OS41IDY4IDU3LjEgNCAxIDcuMSA1LjUgNC45IDEwLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291bmRjbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTEuNCAyNTYuM2w1LjggNjUtNS44IDY4LjNjLS4zIDIuNS0yLjIgNC40LTQuNCA0LjRzLTQuMi0xLjktNC4yLTQuNGwtNS42LTY4LjMgNS42LTY1YzAtMi4yIDEuOS00LjIgNC4yLTQuMiAyLjIgMCA0LjEgMiA0LjQgNC4yem0yMS40LTQ1LjZjLTIuOCAwLTQuNyAyLjItNSA1bC01IDEwNS42IDUgNjguM2MuMyAyLjggMi4yIDUgNSA1IDIuNSAwIDQuNy0yLjIgNC43LTVsNS44LTY4LjMtNS44LTEwNS42YzAtMi44LTIuMi01LTQuNy01em0yNS41LTI0LjFjLTMuMSAwLTUuMyAyLjItNS42IDUuM2wtNC40IDEzMCA0LjQgNjcuOGMuMyAzLjEgMi41IDUuMyA1LjYgNS4zIDIuOCAwIDUuMy0yLjIgNS4zLTUuM2w1LjMtNjcuOC01LjMtMTMwYzAtMy4xLTIuNS01LjMtNS4zLTUuM3pNNy4yIDI4My4yYy0xLjQgMC0yLjIgMS4xLTIuNSAyLjVMMCAzMjEuM2w0LjcgMzVjLjMgMS40IDEuMSAyLjUgMi41IDIuNXMyLjItMS4xIDIuNS0yLjVsNS42LTM1LTUuNi0zNS42Yy0uMy0xLjQtMS4xLTIuNS0yLjUtMi41em0yMy42LTIxLjljLTEuNCAwLTIuNSAxLjEtMi41IDIuNWwtNi40IDU3LjUgNi40IDU2LjFjMCAxLjcgMS4xIDIuOCAyLjUgMi44czIuNS0xLjEgMi44LTIuNWw3LjItNTYuNC03LjItNTcuNWMtLjMtMS40LTEuNC0yLjUtMi44LTIuNXptMjUuMy0xMS40Yy0xLjcgMC0zLjEgMS40LTMuMyAzLjNMNDcgMzIxLjNsNS44IDY1LjhjLjMgMS43IDEuNyAzLjEgMy4zIDMuMSAxLjcgMCAzLjEtMS40IDMuMS0zLjFsNi45LTY1LjgtNi45LTY4LjFjMC0xLjktMS40LTMuMy0zLjEtMy4zem0yNS4zLTIuMmMtMS45IDAtMy42IDEuNC0zLjYgMy42bC01LjggNzAgNS44IDY3LjhjMCAyLjIgMS43IDMuNiAzLjYgMy42czMuNi0xLjQgMy45LTMuNmw2LjQtNjcuOC02LjQtNzBjLS4zLTIuMi0yLTMuNi0zLjktMy42em0yNDEuNC0xMTAuOWMtMS4xLS44LTIuOC0xLjQtNC4yLTEuNC0yLjIgMC00LjIuOC01LjYgMS45LTEuOSAxLjctMy4xIDQuMi0zLjMgNi43di44bC0zLjMgMTc2LjcgMS43IDMyLjUgMS43IDMxLjdjLjMgNC43IDQuMiA4LjYgOC45IDguNnM4LjYtMy45IDguNi04LjZsMy45LTY0LjItMy45LTE3Ny41Yy0uNC0zLTItNS44LTQuNS03LjJ6bS0yNi43IDE1LjNjLTEuNC0uOC0yLjgtMS40LTQuNC0xLjRzLTMuMS42LTQuNCAxLjRjLTIuMiAxLjQtMy42IDMuOS0zLjYgNi43bC0uMyAxLjctMi44IDE2MC44czAgLjMgMy4xIDY1LjZ2LjNjMCAxLjcuNiAzLjMgMS43IDQuNyAxLjcgMS45IDMuOSAzLjEgNi40IDMuMSAyLjIgMCA0LjItMS4xIDUuNi0yLjUgMS43LTEuNCAyLjUtMy4zIDIuNS01LjZsLjMtNi43IDMuMS01OC42LTMuMy0xNjIuOGMtLjMtMi44LTEuNy01LjMtMy45LTYuN3ptLTExMS40IDIyLjVjLTMuMSAwLTUuOCAyLjgtNS44IDYuMWwtNC40IDE0MC42IDQuNCA2Ny4yYy4zIDMuMyAyLjggNS44IDUuOCA1LjggMy4zIDAgNS44LTIuNSA2LjEtNS44bDUtNjcuMi01LTE0MC42Yy0uMi0zLjMtMi43LTYuMS02LjEtNi4xem0zNzYuNyA2Mi44Yy0xMC44IDAtMjEuMSAyLjItMzAuNiA2LjEtNi40LTcwLjgtNjUuOC0xMjYuNC0xMzguMy0xMjYuNC0xNy44IDAtMzUgMy4zLTUwLjMgOS40LTYuMSAyLjItNy44IDQuNC03LjggOS4ydjI0OS43YzAgNSAzLjkgOC42IDguNiA5LjJoMjE4LjNjNDMuMyAwIDc4LjYtMzUgNzguNi03OC4zLjEtNDMuNi0zNS4yLTc4LjktNzguNS03OC45em0tMjk2LjctNjAuM2MtNC4yIDAtNy41IDMuMy03LjggNy44bC0zLjMgMTM2LjcgMy4zIDY1LjZjLjMgNC4yIDMuNiA3LjUgNy44IDcuNSA0LjIgMCA3LjUtMy4zIDcuNS03LjVsMy45LTY1LjYtMy45LTEzNi43Yy0uMy00LjUtMy4zLTcuOC03LjUtNy44em0tNTMuNi03LjhjLTMuMyAwLTYuNCAzLjEtNi40IDYuN2wtMy45IDE0NS4zIDMuOSA2Ni45Yy4zIDMuNiAzLjEgNi40IDYuNCA2LjQgMy42IDAgNi40LTIuOCA2LjctNi40bDQuNC02Ni45LTQuNC0xNDUuM2MtLjMtMy42LTMuMS02LjctNi43LTYuN3ptMjYuNyAzLjRjLTMuOSAwLTYuOSAzLjEtNi45IDYuOUwyMjcgMzIxLjNsMy45IDY2LjRjLjMgMy45IDMuMSA2LjkgNi45IDYuOXM2LjktMy4xIDYuOS02LjlsNC4yLTY2LjQtNC4yLTE0MS43YzAtMy45LTMtNi45LTYuOS02Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU291cmNldHJlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjcuMiAyMDNjMC0xMTIuMS05MC45LTIwMy0yMDMtMjAzQzExMi4xLS4yIDIxLjIgOTAuNiAyMSAyMDIuNkEyMDIuODYgMjAyLjg2IDAgMCAwIDE2MS41IDM5NnYxMDEuN2ExNC4zIDE0LjMgMCAwIDAgMTQuMyAxNC4zaDk2LjRhMTQuMyAxNC4zIDAgMCAwIDE0LjMtMTQuM1YzOTYuMUEyMDMuMTggMjAzLjE4IDAgMCAwIDQyNy4yIDIwM3ptLTI3MS42IDBjMC05MC44IDEzNy4zLTkwLjggMTM3LjMgMC0uMSA4OS45LTEzNy4zIDkxLTEzNy4zIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlYWthcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAzOTEuNzhDLTE1LjQxIDMwMy41OS04IDE2Ny40MiA4MC42NCA4Ny42NHMyMjQuOC03MyAzMDQuMjEgMTUuMjQgNzIgMjI0LjM2LTE2LjY0IDMwNC4xNGMtMTguNzQgMTYuODcgNjQgNDMuMDkgNDIgNTIuMjYtODIuMDYgMzQuMjEtMjUzLjkxIDM1LTM0Ni4yMy02Ny41em0yMTMuMzEtMjExLjZsMzguNS00MC44NmMtOS42MS04Ljg5LTMyLTI2LjgzLTc2LjE3LTI3LjYtNTIuMzMtLjkxLTk1Ljg2IDI4LjMtOTYuNzcgODAtLjIgMTEuMzMuMjkgMzYuNzIgMjkuNDIgNTQuODMgMzQuNDYgMjEuNDIgODYuNTIgMjEuNTEgODYgNTIuMjYtLjM3IDIxLjI4LTI2LjQyIDI1LjgxLTM4LjU5IDI1LjYtMy0uMDUtMzAuMjMtLjQ2LTQ3LjYxLTI0LjYybC00MCA0Mi42MWMyOC4xNiAyNyA1OSAzMi42MiA4My40OSAzMy4wNSAxMC4yMy4xOCA5Ni40Mi4zMyA5Ny44NC04MSAuMjgtMTUuODEtMi4wNy0zOS43Mi0yOC44Ni01Ni41OS0zNC4zNi0yMS42NC04NS0xOS40NS04NC40My00OS43NS40MS0yMy4yNSAzMS0yNS4zNyAzNy41My0yNS4yNi40MyAwIDI2LjYyLjI2IDM5LjYyIDE3LjM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNwZWFrZXJEZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxMy44NiAyOTZIMTAwYTEwMCAxMDAgMCAwIDEgMC0yMDBoMTMyLjg0YTQwIDQwIDAgMCAxIDAgODBIOThjLTI2LjQ3IDAtMjYuNDUgNDAgMCA0MGgxMTMuODJhMTAwIDEwMCAwIDAgMSAwIDIwMEg0MGE0MCA0MCAwIDAgMSAwLTgwaDE3My44NmMyNi40OCAwIDI2LjQ2LTQwIDAtNDB6TTI5OCA0MTZhMTIwLjIxIDEyMC4yMSAwIDAgMCA1MS4xMS04MGg2NC41NWExOS44MyAxOS44MyAwIDAgMCAxOS42Ni0yMFYxOTZhMTkuODMgMTkuODMgMCAwIDAtMTkuNjYtMjBIMjk2LjQyYTYwLjc3IDYwLjc3IDAgMCAwIDAtODBoMTM2LjkzYzQzLjQ0IDAgNzguNjUgMzUuODIgNzguNjUgODB2MTYwYzAgNDQuMTgtMzUuMjEgODAtNzguNjUgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BvdGlmeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEuMSA4IDAgMTE5LjEgMCAyNTZzMTExLjEgMjQ4IDI0OCAyNDggMjQ4LTExMS4xIDI0OC0yNDhTMzg0LjkgOCAyNDggOHptMTAwLjcgMzY0LjljLTQuMiAwLTYuOC0xLjMtMTAuNy0zLjYtNjIuNC0zNy42LTEzNS0zOS4yLTIwNi43LTI0LjUtMy45IDEtOSAyLjYtMTEuOSAyLjYtOS43IDAtMTUuOC03LjctMTUuOC0xNS44IDAtMTAuMyA2LjEtMTUuMiAxMy42LTE2LjggODEuOS0xOC4xIDE2NS42LTE2LjUgMjM3IDI2LjIgNi4xIDMuOSA5LjcgNy40IDkuNyAxNi41cy03LjEgMTUuNC0xNS4yIDE1LjR6bTI2LjktNjUuNmMtNS4yIDAtOC43LTIuMy0xMi4zLTQuMi02Mi41LTM3LTE1NS43LTUxLjktMjM4LjYtMjkuNC00LjggMS4zLTcuNCAyLjYtMTEuOSAyLjYtMTAuNyAwLTE5LjQtOC43LTE5LjQtMTkuNHM1LjItMTcuOCAxNS41LTIwLjdjMjcuOC03LjggNTYuMi0xMy42IDk3LjgtMTMuNiA2NC45IDAgMTI3LjYgMTYuMSAxNzcgNDUuNSA4LjEgNC44IDExLjMgMTEgMTEuMyAxOS43LS4xIDEwLjgtOC41IDE5LjUtMTkuNCAxOS41em0zMS03Ni4yYy01LjIgMC04LjQtMS4zLTEyLjktMy45LTcxLjItNDIuNS0xOTguNS01Mi43LTI4MC45LTI5LjctMy42IDEtOC4xIDIuNi0xMi45IDIuNi0xMy4yIDAtMjMuMy0xMC4zLTIzLjMtMjMuNiAwLTEzLjYgOC40LTIxLjMgMTcuNC0yMy45IDM1LjItMTAuMyA3NC42LTE1LjIgMTE3LjUtMTUuMiA3MyAwIDE0OS41IDE1LjIgMjA1LjQgNDcuOCA3LjggNC41IDEyLjkgMTAuNyAxMi45IDIyLjYgMCAxMy42LTExIDIzLjMtMjMuMiAyMy4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZXNwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4Ni4xMiAzNDMuMzRjLTkuNjUgOS42NS05LjY1IDI1LjI5IDAgMzQuOTQgOS42NSA5LjY1IDI1LjI5IDkuNjUgMzQuOTQgMEwzNzguMjQgMjIxLjFjMTkuMjktMTkuMjkgNTAuNTctMTkuMjkgNjkuODYgMHMxOS4yOSA1MC41NyAwIDY5Ljg2TDI5My45NSA0NDUuMWMxOS4yNyAxOS4yOSA1MC41MyAxOS4zMSA2OS44Mi4wNGwuMDQtLjA0IDExOS4yNS0xMTkuMjRjMzguNTktMzguNTkgMzguNTktMTAxLjE0IDAtMTM5LjcyLTM4LjU5LTM4LjU5LTEwMS4xNS0zOC41OS0xMzkuNzIgMGwtMTU3LjIyIDE1Ny4yem0yNDQuNTMtMTA0LjhjLTkuNjUtOS42NS0yNS4yOS05LjY1LTM0LjkzIDBsLTE1Ny4yIDE1Ny4xOGMtMTkuMjcgMTkuMjktNTAuNTMgMTkuMzEtNjkuODIuMDVsLS4wNS0uMDVjLTkuNjQtOS42NC0yNS4yNy05LjY1LTM0LjkyLS4wMWwtLjAxLjAxYy05LjY1IDkuNjQtOS42NiAyNS4yOC0uMDIgMzQuOTNsLjAyLjAyYzM4LjU4IDM4LjU3IDEwMS4xNCAzOC41NyAxMzkuNzIgMGwxNTcuMi0xNTcuMmM5LjY1LTkuNjUgOS42NS0yNS4yOS4wMS0zNC45M3ptLTI2MS45OSA4Ny4zM2wxNTcuMTgtMTU3LjE4YzkuNjQtOS42NSA5LjY0LTI1LjI5IDAtMzQuOTQtOS42NC05LjY0LTI1LjI3LTkuNjQtMzQuOTEgMEwxMzMuNzIgMjkwLjkzYy0xOS4yOCAxOS4yOS01MC41NiAxOS4zLTY5Ljg1LjAxbC0uMDEtLjAxYy0xOS4yOS0xOS4yOC0xOS4zMS01MC41NC0uMDMtNjkuODRsLjAzLS4wM0wyMTguMDMgNjYuODljLTE5LjI4LTE5LjI5LTUwLjU1LTE5LjMtNjkuODUtLjAybC0uMDIuMDJMMjguOTMgMTg2LjE0Yy0zOC41OCAzOC41OS0zOC41OCAxMDEuMTQgMCAxMzkuNzIgMzguNiAzOC41OSAxMDEuMTMgMzguNTkgMTM5LjczLjAxem0tODcuMzMtNTIuNGM5LjY0IDkuNjQgMjUuMjcgOS42NCAzNC45MSAwbDE1Ny4yMS0xNTcuMTljMTkuMjgtMTkuMjkgNTAuNTUtMTkuMyA2OS44NC0uMDJsLjAyLjAyYzkuNjUgOS42NSAyNS4yOSA5LjY1IDM0LjkzIDAgOS42NS05LjY1IDkuNjUtMjUuMjkgMC0zNC45My0zOC41OS0zOC41OS0xMDEuMTMtMzguNTktMTM5LjcyIDBMODEuMzMgMjM4LjU0Yy05LjY1IDkuNjQtOS42NSAyNS4yOC0uMDEgMzQuOTNoLjAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrRXhjaGFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcuNyAzMzIuM2g0MTIuN3YyMmMwIDM3LjctMjkuMyA2OC02NS4zIDY4aC0xOUwyNTkuMyA1MTJ2LTg5LjdIODNjLTM2IDAtNjUuMy0zMC4zLTY1LjMtNjh2LTIyem0wLTIzLjZoNDEyLjd2LTg1SDE3Ljd2ODV6bTAtMTA5LjRoNDEyLjd2LTg1SDE3Ljd2ODV6TTM2NSAwSDgzQzQ3IDAgMTcuNyAzMC4zIDE3LjcgNjcuN1Y5MGg0MTIuN1Y2Ny43QzQzMC4zIDMwLjMgNDAxIDAgMzY1IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RhY2tPdmVyZmxvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuNyAzMTFMOTUgMjY5LjcgODYuOCAzMDlsMTk1LjcgNDF6bTUxLTg3TDE4OC4yIDk1LjdsLTI1LjUgMzAuOCAxNTMuNSAxMjguM3ptLTMxLjIgMzkuN0wxMjkuMiAxNzlsLTE2LjcgMzYuNUwyOTMuNyAzMDB6TTI2MiAzMmwtMzIgMjQgMTE5LjMgMTYwLjMgMzItMjR6bTIwLjUgMzI4aC0yMDB2MzkuN2gyMDB6bTM5LjcgODBINDIuN1YzMjBoLTQwdjE2MGgzNTkuNVYzMjBoLTQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YWNrcGF0aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDQuNiAyMzIuNGMwIDguNS00LjI2IDIwLjQ5LTIxLjM0IDIwLjQ5aC0xOS42MXYtNDEuNDdoMTkuNjFjMTcuMTMgMCAyMS4zNCAxMi4zNiAyMS4zNCAyMC45OHpNNDQ4IDMydjQ0OEgwVjMyek0xNTEuMyAyODcuODRjMC0yMS4yNC0xMi4xMi0zNC41NC00Ni43Mi00NC44NS0yMC41Ny03LjQxLTI2LTEwLjkxLTI2LTE4LjYzczctMTQuNjEgMjAuNDEtMTQuNjFjMTQuMDkgMCAyMC43OSA4LjQ1IDIwLjc5IDE4LjM1aDMwLjdsLjE5LS41N2MuNS0xOS41Ny0xNS4wNi00MS42NS01MS4xMi00MS42NS0yMy4zNyAwLTUyLjU1IDEwLjc1LTUyLjU1IDM4LjI5IDAgMTkuNCA5LjI1IDMxLjI5IDUwLjc0IDQ0LjM3IDE3LjI2IDYuMTUgMjEuOTEgMTAuNCAyMS45MSAxOS40OCAwIDE1LjItMTkuMTMgMTQuMjMtMTkuNDcgMTQuMjMtMjAuNCAwLTI1LjY1LTkuMS0yNS42NS0yMS45aC0zMC44bC0uMTguNTZjLS42OCAzMS4zMiAyOC4zOCA0NS4yMiA1Ni42MyA0NS4yMiAyOS45OCAwIDUxLjEyLTEzLjU1IDUxLjEyLTM4LjI5em0xMjUuMzgtNTUuNjNjMC0yNS4zLTE4LjQzLTQ1LjQ2LTUzLjQyLTQ1LjQ2aC01MS43OHYxMzguMThoMzIuMTd2LTQ3LjM2aDE5LjYxYzMwLjI1IDAgNTMuNDItMTUuOTUgNTMuNDItNDUuMzZ6TTI5Ny45NCAzMjVMMzQ3IDE4Ni43OGgtMzEuMDlMMjY4IDMyNXptMTA2LjUyLTEzOC4yMmgtMzEuMDlMMzI1LjQ2IDMyNWgyOS45NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGF5bGlua2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4Mi43IDI5Mi41bDIuNyAyLjctMTcwLTE2Ny4zYy0zLjUtMy41LTkuNy0zLjctMTMuOC0uNUwxNDQuMyAxNzFjLTQuMiAzLjItNC42IDguNy0xLjEgMTIuMmw2OC4xIDY0LjNjMy42IDMuNSA5LjkgMy43IDE0IC41bC4xLS4xYzQuMS0zLjIgMTAuNC0zIDE0IC41bDg0IDgxLjNjMy42IDMuNSAzLjIgOS0uOSAxMi4ybC05My4yIDc0Yy00LjIgMy4zLTEwLjUgMy4xLTE0LjItLjRMNjMuMiAyNjhjLTMuNS0zLjUtOS43LTMuNy0xMy45LS41TDMuNSAzMDIuNGMtNC4yIDMuMi00LjcgOC43LTEuMiAxMi4yTDIxMSA1MTAuN3M3LjQgNi44IDE3LjMtLjhsMTk4LTE2My45YzQtMy4yIDQuNC04LjcuNy0xMi4yem01NC41LTgzLjRMMjI2LjcgMi41Yy0xLjUtMS4yLTgtNS41LTE2LjMgMS4xTDMuNiAxNjUuN2MtNC4yIDMuMi00LjggOC43LTEuMiAxMi4ybDQyLjMgNDEuNyAxNzEuNyAxNjUuMWMzLjcgMy41IDEwLjEgMy43IDE0LjMuNGw1MC4yLTM4LjgtLjMtLjMgNy43LTZjNC4yLTMuMiA0LjYtOC43LjktMTIuMmwtNTcuMS01NC40Yy0zLjYtMy41LTEwLTMuNy0xNC4yLS41bC0uMS4xYy00LjIgMy4yLTEwLjUgMy4xLTE0LjItLjRMMTA5IDE4MC44Yy0zLjYtMy41LTMuMS04LjkgMS4xLTEyLjJsOTIuMi03MS41YzQuMS0zLjIgMTAuMy0zIDEzLjkuNWwxNjAuNCAxNTljMy43IDMuNSAxMCAzLjcgMTQuMS41bDQ1LjgtMzUuOGM0LjEtMy4yIDQuNC04LjcuNy0xMi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZWFtU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4NS4yIDM1Ni41YzcuNy0xOC41LTEtMzkuNy0xOS42LTQ3LjRsLTI5LjUtMTIuMmMxMS40LTQuMyAyNC4zLTQuNSAzNi40LjUgMTIuMiA1LjEgMjEuNiAxNC42IDI2LjcgMjYuNyA1IDEyLjIgNSAyNS42LS4xIDM3LjctMTAuNSAyNS4xLTM5LjQgMzctNjQuNiAyNi41LTExLjYtNC44LTIwLjQtMTMuNi0yNS40LTI0LjJsMjguNSAxMS44YzE4LjYgNy44IDM5LjktLjkgNDcuNi0xOS40ek00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYxNjAuN2wxMTYuNiA0OC4xYzEyLTguMiAyNi4yLTEyLjEgNDAuNy0xMS4zbDU1LjQtODAuMnYtMS4xYzAtNDguMiAzOS4zLTg3LjUgODcuNi04Ny41czg3LjYgMzkuMyA4Ny42IDg3LjVjMCA0OS4yLTQwLjkgODguNy04OS42IDg3LjVsLTc5IDU2LjNjMS42IDM4LjUtMjkuMSA2OC44LTY1LjcgNjguOC0zMS44IDAtNTguNS0yMi43LTY0LjUtNTIuN0wwIDMxOS4yVjQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS05OS43IDIyMi41Yy0zMi4yIDAtNTguNC0yNi4xLTU4LjQtNTguM3MyNi4yLTU4LjMgNTguNC01OC4zIDU4LjQgMjYuMiA1OC40IDU4LjMtMjYuMiA1OC4zLTU4LjQgNTguM3ptLjEtMTQuNmMyNC4yIDAgNDMuOS0xOS42IDQzLjktNDMuOCAwLTI0LjItMTkuNi00My44LTQzLjktNDMuOC0yNC4yIDAtNDMuOSAxOS42LTQzLjkgNDMuOCAwIDI0LjIgMTkuNyA0My44IDQzLjkgNDMuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGVhbVN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTUuNSAxNzcuNWMwIDMzLjgtMjcuNSA2MS02MSA2MS0zMy44IDAtNjEtMjcuMy02MS02MXMyNy4zLTYxIDYxLTYxYzMzLjUgMCA2MSAyNy4yIDYxIDYxem01Mi41LjJjMCA2My01MSAxMTMuOC0xMTMuNyAxMTMuOEwyMjUgMzcxLjNjLTQgNDMtNDAuNSA3Ni44LTg0LjUgNzYuOC00MC41IDAtNzQuNy0yOC44LTgzLTY3TDAgMzU4VjI1MC43TDk3LjIgMjkwYzE1LjEtOS4yIDMyLjItMTMuMyA1Mi0xMS41bDcxLTEwMS43Yy41LTYyLjMgNTEuNS0xMTIuOCAxMTQtMTEyLjhDMzk3IDY0IDQ0OCAxMTUgNDQ4IDE3Ny43ek0yMDMgMzYzYzAtMzQuNy0yNy44LTYyLjUtNjIuNS02Mi41LTQuNSAwLTkgLjUtMTMuNSAxLjVsMjYgMTAuNWMyNS41IDEwLjIgMzggMzkgMjcuNyA2NC41LTEwLjIgMjUuNS0zOS4yIDM4LTY0LjcgMjcuNS0xMC4yLTQtMjAuNS04LjMtMzAuNy0xMi4yIDEwLjUgMTkuNyAzMS4yIDMzLjIgNTUuMiAzMy4yIDM0LjcgMCA2Mi41LTI3LjggNjIuNS02Mi41em0yMDcuNS0xODUuM2MwLTQyLTM0LjMtNzYuMi03Ni4yLTc2LjItNDIuMyAwLTc2LjUgMzQuMi03Ni41IDc2LjIgMCA0Mi4yIDM0LjMgNzYuMiA3Ni41IDc2LjIgNDEuOS4xIDc2LjItMzMuOSA3Ni4yLTc2LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmMwIDEzNy0xMTEuMiAyNDgtMjQ4LjQgMjQ4LTExMy44IDAtMjA5LjYtNzYuMy0yMzktMTgwLjRsOTUuMiAzOS4zYzYuNCAzMi4xIDM0LjkgNTYuNCA2OC45IDU2LjQgMzkuMiAwIDcxLjktMzIuNCA3MC4yLTczLjVsODQuNS02MC4yYzUyLjEgMS4zIDk1LjgtNDAuOSA5NS44LTkzLjUgMC01MS42LTQyLTkzLjUtOTMuNy05My41cy05My43IDQyLTkzLjcgOTMuNXYxLjJMMTc2LjYgMjc5Yy0xNS41LS45LTMwLjcgMy40LTQzLjUgMTIuMUwwIDIzNi4xQzEwLjIgMTA4LjQgMTE3LjEgOCAyNDcuNiA4IDM4NC44IDggNDk2IDExOSA0OTYgMjU2ek0xNTUuNyAzODQuM2wtMzAuNS0xMi42YTUyLjc5IDUyLjc5IDAgMCAwIDI3LjIgMjUuOGMyNi45IDExLjIgNTcuOC0xLjYgNjktMjguNCA1LjQtMTMgNS41LTI3LjMuMS00MC4zLTUuNC0xMy0xNS41LTIzLjItMjguNS0yOC42LTEyLjktNS40LTI2LjctNS4yLTM4LjktLjZsMzEuNSAxM2MxOS44IDguMiAyOS4yIDMwLjkgMjAuOSA1MC43LTguMyAxOS45LTMxIDI5LjItNTAuOCAyMXptMTczLjgtMTI5LjljLTM0LjQgMC02Mi40LTI4LTYyLjQtNjIuM3MyOC02Mi4zIDYyLjQtNjIuMyA2Mi40IDI4IDYyLjQgNjIuMy0yNy45IDYyLjMtNjIuNCA2Mi4zem0uMS0xNS42YzI1LjkgMCA0Ni45LTIxIDQ2LjktNDYuOCAwLTI1LjktMjEtNDYuOC00Ni45LTQ2LjhzLTQ2LjkgMjEtNDYuOSA0Ni44Yy4xIDI1LjggMjEuMSA0Ni44IDQ2LjkgNDYuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGlja2VyTXVsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjEuNyAxOTkuNmMtMS4zLjMuMyAwIDAgMHptLTYuMi03Ny40Yy03LjctMjIuMy01LjEtNy4yLTEzLjQtMzYuOS0xLjYtNi41LTMuNi0xNC41LTYuMi0yMC00LjQtOC43LTQuNi03LjUtNC42LTkuNSAwLTUuMyAzMC43LTQ1LjMgMTktNDYuOS01LjctLjYtMTIuMiAxMS42LTIwLjYgMTctOC42IDQuMi04IDUtMTAuMyA1LTIuNiAwLTUuNy0zLTYuMi01LTItNS43IDEuOS0yNS45LTMuNi0yNS45LTMuNiAwLTEyLjMgMjQuOC0xNyAyNS44LTUuMiAxLjMtMjcuOS0xMS40LTc1LjEgMTgtMjUuMyAxMy4yLTg2LjkgNjUuMi04NyA2NS4zLTYuNyA0LjctMjAgNC43LTM1LjUgMTYtNDQuNCAzMC4xLTEwOS42IDkuNC0xMTAuNyA5LTExMC42LTI2LjgtMTI4LTE1LjItMTU5IDExLjUtMjAuOCAxNy45LTIzLjcgMzYuNS0yNC4yIDM4LjktNC4yIDIwLjQgNS4yIDQ4LjMgNi43IDY0LjMgMS44IDE5LjMtMi43IDE3LjcgNy43IDk4LjMuNSAxIDQuMSAwIDUuMSAxLjUgMCA4LjQtMy44IDEyLjEtNC4xIDEzLTEuNSA0LjUtMS41IDEwLjUgMCAxNiAyLjMgOC4yIDguMiAzNy4yIDguMiA0Ni45IDAgNDEuOC40IDQ0IDIuNiA0OS40IDMuOSAxMCAxMi41IDkuMSAxNyAxMiAzLjEgMy41LS41IDguNSAxIDEyLjUuNSAyIDMuNiA0IDYuMiA1IDkuMiAzLjYgMjcgLjMgMjkuOS0yLjUgMS42LTEuNS41LTQuNSAzLjEtNSA1LjEgMCAxMC44LS41IDE0LjQtMi41IDUuMS0yLjUgNC4xLTYgMS41LTEwLjUtLjQtLjgtNy0xMy4zLTkuOC0xNi0yLjEtMi01LjEtMy03LjItNC41LTUuOC00LjktMTAuMy0xOS40LTEwLjMtMTkuNS00LjYtMTkuNC0xMC4zLTQ2LjMtNC4xLTY2LjggNC42LTE3LjIgMzkuNS04Ny43IDM5LjYtODcuOCA0LjEtNi41IDE3LTExLjUgMjcuMy03IDYgMS45IDE5LjMgMjIgNjUuNCAzMC45IDQ3LjkgOC43IDk3LjQtMiAxMTIuMi0yIDIuOCAyLTEuOSAxMy0uNSAzOC45IDAgMjYuNC0uNCAxMy43LTQuMSAyOS45LTIuMiA5LjcgMy40IDIzLjItMS41IDQ2LjktMS40IDkuOC05LjkgMzIuNy04LjIgNDMuNC41IDEgMSAyIDEuNSAzLjUuNSA0LjUgMS41IDguNSA0LjYgMTAgNy4zIDMuNiAxMi0zLjUgOS44IDExLjUtLjcgMy4xLTIuNiAxMiAxLjUgMTUgNC40IDMuNyAzMC42IDMuNCAzNi41LjUgMi42LTEuNSAxLjYtNC41IDYuNC03LjQgMS45LS45IDExLjMtLjQgMTEuMy02LjUuMy0xLjgtOS4yLTE5LjktOS4zLTIwLTIuNi0zLjUtOS4yLTQuNS0xMS4zLTgtNi45LTEwLjEtMS43LTUyLjYuNS01OS40IDMtMTEgNS42LTIyLjQgOC43LTMyLjQgMTEtNDIuNSAxMC4zLTUwLjYgMTYuNS02OC4zLjgtMS44IDYuNC0yMy4xIDEwLjMtMjkuOSA5LjMtMTcgMjEuNy0zMi40IDMzLjUtNDcuNCAxOC0yMi45IDM0LTQ2LjkgNTItNjkuOCA2LjEtNyA4LjItMTMuNyAxOC04IDEwLjggNS43IDIxLjYgNyAzMS45IDE3IDE0LjYgMTIuOCAxMC4yIDE4LjIgMTEuOCAyMi45IDEuNSA1IDcuNyAxMC41IDE0LjkgOS41IDEwLjQtMiAxMy0yLjUgMTMuNC0yLjUgMi42LS41IDUuNy01IDcuMi04IDMuMS01LjUgNy4yLTkgNy4yLTE2LjUgMC03LjctLjQtMi44LTIwLjYtNTIuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJhdmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU4LjQgMEw3IDI5Mmg4OS4ybDYyLjItMTE2LjFMMjIwLjEgMjkyaDg4LjV6bTE1MC4yIDI5MmwtNDMuOSA4OC4yLTQ0LjYtODguMmgtNjcuNmwxMTIuMiAyMjAgMTExLjUtMjIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmlwZVMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU1LjMgMTU0LjZjMC0yMi4zIDE4LjYtMzAuOSA0OC40LTMwLjkgNDMuNCAwIDk4LjUgMTMuMyAxNDEuOSAzNi43VjI2LjFDMjk4LjMgNy4yIDI1MS4xIDAgMjAzLjggMCA4OC4xIDAgMTEgNjAuNCAxMSAxNjEuNGMwIDE1Ny45IDIxNi44IDEzMi4zIDIxNi44IDIwMC40IDAgMjYuNC0yMi45IDM0LjktNTQuNyAzNC45LTQ3LjIgMC0xMDguMi0xOS41LTE1Ni4xLTQ1LjV2MTI4LjVhMzk2LjA5IDM5Ni4wOSAwIDAgMCAxNTYgMzIuNGMxMTguNiAwIDIwMC4zLTUxIDIwMC4zLTE1My42IDAtMTcwLjItMjE4LTEzOS43LTIxOC0yMDMuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY1IDE0NC43bC00My4zIDkuMi0uMiAxNDIuNGMwIDI2LjMgMTkuOCA0My4zIDQ2LjEgNDMuMyAxNC42IDAgMjUuMy0yLjcgMzEuMi01Ljl2LTMzLjhjLTUuNyAyLjMtMzMuNyAxMC41LTMzLjctMTUuN1YyMjFoMzMuN3YtMzcuOGgtMzMuN3ptODkuMSA1MS42bC0yLjctMTMuMUgyMTN2MTUzLjJoNDQuM1YyMzMuM2MxMC41LTEzLjggMjguMi0xMS4xIDMzLjktOS4zdi00MC44Yy02LTIuMS0yNi43LTYtMzcuMSAxMy4xem05Mi4zLTcyLjNsLTQ0LjYgOS41djM2LjJsNDQuNi05LjV6TTQ0LjkgMjI4LjNjMC02LjkgNS44LTkuNiAxNS4xLTkuNyAxMy41IDAgMzAuNyA0LjEgNDQuMiAxMS40di00MS44Yy0xNC43LTUuOC0yOS40LTguMS00NC4xLTguMS0zNiAwLTYwIDE4LjgtNjAgNTAuMiAwIDQ5LjIgNjcuNSA0MS4yIDY3LjUgNjIuNCAwIDguMi03LjEgMTAuOS0xNyAxMC45LTE0LjcgMC0zMy43LTYuMS00OC42LTE0LjJ2NDBjMTYuNSA3LjEgMzMuMiAxMC4xIDQ4LjUgMTAuMSAzNi45IDAgNjIuMy0xNS44IDYyLjMtNDcuOCAwLTUyLjktNjcuOS00My40LTY3LjktNjMuNHpNNjQwIDI2MS42YzAtNDUuNS0yMi04MS40LTY0LjItODEuNHMtNjcuOSAzNS45LTY3LjkgODEuMWMwIDUzLjUgMzAuMyA3OC4yIDczLjUgNzguMiAyMS4yIDAgMzcuMS00LjggNDkuMi0xMS41di0zMy40Yy0xMi4xIDYuMS0yNiA5LjgtNDMuNiA5LjgtMTcuMyAwLTMyLjUtNi4xLTM0LjUtMjYuOWg4Ni45Yy4yLTIuMy42LTExLjYuNi0xNS45em0tODcuOS0xNi44YzAtMjAgMTIuMy0yOC40IDIzLjQtMjguNCAxMC45IDAgMjIuNSA4LjQgMjIuNSAyOC40em0tMTEyLjktNjQuNmMtMTcuNCAwLTI4LjYgOC4yLTM0LjggMTMuOWwtMi4zLTExSDM2M3YyMDQuOGw0NC40LTkuNC4xLTUwLjJjNi40IDQuNyAxNS45IDExLjIgMzEuNCAxMS4yIDMxLjggMCA2MC44LTIzLjIgNjAuOC03OS42LjEtNTEuNi0yOS4zLTc5LjctNjAuNS03OS43em0tMTAuNiAxMjIuNWMtMTAuNCAwLTE2LjYtMy44LTIwLjktOC40bC0uMy02NmM0LjYtNS4xIDExLTguOCAyMS4yLTguOCAxNi4yIDAgMjcuNCAxOC4yIDI3LjQgNDEuNC4xIDIzLjktMTAuOSA0MS44LTI3LjQgNDEuOHptLTEyNi43IDMzLjdoNDQuNlYxODMuMmgtNDQuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVkaW92aW5hcmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjMgMTg3LjdsNC4yIDI4djI4bC0yNS4xIDQ0LjEtMzkuOCA3OC40LTU2LjEgNjcuNS03OS4xIDM3LjgtMTcuNyAyNC41LTcuNyAxMi05LjYgNHMxNy4zLTYzLjYgMTkuNC02My42YzIuMSAwIDIwLjMuNyAyMC4zLjdsNjYuNy0zOC42LTkyLjUgMjYuMS01NS45IDM2LjgtMjIuOCAyOC02LjYgMS40IDIwLjgtNzMuNiA2LjktNS41IDIwLjcgMTIuOSA4OC4zLTQ1LjIgNTYuOC01MS41IDE0LjgtNjguNC0xMjUuNCAyMy4zIDE1LjItMTguMi0xNzMuNC01My4zIDgxLjktMTAuNS0xNjYtMTIyLjlMMTMzLjUgMTA4IDMyLjIgMGwyNTIuOSAxMjYuNi0zMS41LTM4TDM3OCAxNjMgMjM0LjcgNjRsMTguNyAzOC40LTQ5LjYtMTguMUwxNTguMyAwbDE5NC42IDEyMkwzMTAgNjYuMmwxMDggOTYuNCAxMi04LjktMjEtMTYuNCA0LjItMzcuOEw0NTEgODkuMWwyOS4yIDI0LjcgMTEuNSA0LjItNyA2LjIgOC41IDEyLTEzLjEgNy40LTEwLjMgMjAuMiAxMC41IDIzLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3R1bWJsZXVwb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCAxNzcuNWMtOS44IDAtMTcuOCA4LTE3LjggMTcuOHYxMDYuOWMwIDQwLjktMzMuOSA3My45LTc0LjkgNzMuOS00MS40IDAtNzQuOS0zMy41LTc0LjktNzQuOXYtNDYuNWg1Ny4zdjQ1LjhjMCAxMCA4IDE3LjggMTcuOCAxNy44czE3LjgtNy45IDE3LjgtMTcuOFYyMDAuMWMwLTQwIDM0LjItNzIuMSA3NC43LTcyLjEgNDAuNyAwIDc0LjcgMzIuMyA3NC43IDcyLjZ2MjMuN2wtMzQuMSAxMC4xLTIyLjktMTAuN3YtMjAuNmMuMS05LjYtNy45LTE3LjYtMTcuNy0xNy42em0xNjcuNiAxMjMuNmMwIDQxLjQtMzMuNSA3NC45LTc0LjkgNzQuOS00MS4yIDAtNzQuOS0zMy4yLTc0LjktNzQuMlYyNjNsMjIuOSAxMC43IDM0LjEtMTAuMXY0Ny4xYzAgOS44IDggMTcuNiAxNy44IDE3LjZzMTcuOC03LjkgMTcuOC0xNy42di00OGg1Ny4zYy0uMSA0NS45LS4xIDQ2LjQtLjEgNDYuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHVtYmxldXBvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuOSAyNjZ2NjkuN2MwIDYyLjEtNTAuMyAxMTIuNC0xMTIuNCAxMTIuNC02MS44IDAtMTEyLjQtNDkuOC0xMTIuNC0xMTEuM3YtNzAuMmwzNC4zIDE2IDUxLjEtMTUuMlYzMzhjMCAxNC43IDEyIDI2LjUgMjYuNyAyNi41UzQxNyAzNTIuNyA0MTcgMzM4di03Mmg4NS45em0tMjI0LjctNTguMmwzNC4zIDE2IDUxLjEtMTUuMlYxNzNjMC02MC41LTUxLjEtMTA5LTExMi4xLTEwOS02MC44IDAtMTEyLjEgNDguMi0xMTIuMSAxMDguMnYxNjIuNGMwIDE0LjktMTIgMjYuNy0yNi43IDI2LjdTODYgMzQ5LjUgODYgMzM0LjZWMjY2SDB2NjkuN0MwIDM5Ny43IDUwLjMgNDQ4IDExMi40IDQ0OGM2MS42IDAgMTEyLjQtNDkuNSAxMTIuNC0xMTAuOFYxNzYuOWMwLTE0LjcgMTItMjYuNyAyNi43LTI2LjdzMjYuNyAxMiAyNi43IDI2Ljd2MzAuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdXBlcnBvd2VycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzJjLTgzLjMgMTEtMTY2LjggMjItMjUwIDMzLTkyIDEyLjUtMTYzLjMgODYuNy0xNjkgMTgwLTMuMyA1NS41IDE4IDEwOS41IDU3LjggMTQ4LjJMMCA0ODBjODMuMy0xMSAxNjYuNS0yMiAyNDkuOC0zMyA5MS44LTEyLjUgMTYzLjMtODYuOCAxNjguNy0xNzkuOCAzLjUtNTUuNS0xOC0xMDkuNS01Ny43LTE0OC4yTDQ0OCAzMnptLTc5LjcgMjMyLjNjLTQuMiA3OS41LTc0IDEzOS4yLTE1Mi44IDEzNC41LTc5LjUtNC43LTE0MC43LTcxLTEzNi4zLTE1MSA0LjUtNzkuMiA3NC4zLTEzOS4zIDE1My0xMzQuNSA3OS4zIDQuNyAxNDAuNSA3MSAxMzYuMSAxNTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VwcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjIuNWMwIDY0LjEtMTA5IDExNi4xLTI0My41IDExNi4xLTI0LjggMC00OC42LTEuOC03MS4xLTUgNy43LjQgMTUuNS42IDIzLjQuNiAxMzQuNSAwIDI0My41LTU2LjkgMjQzLjUtMTI3LjEgMC0yOS40LTE5LjEtNTYuNC01MS4yLTc4IDYwIDIxLjEgOTguOSA1NS4xIDk4LjkgOTMuNHpNNDcuNyAyMjcuOWMtLjEtNzAuMiAxMDguOC0xMjcuMyAyNDMuMy0xMjcuNiA3LjkgMCAxNS42LjIgMjMuMy41LTIyLjUtMy4yLTQ2LjMtNC45LTcxLTQuOUMxMDguOCA5Ni4zLS4xIDE0OC41IDAgMjEyLjZjLjEgMzguMyAzOS4xIDcyLjMgOTkuMyA5My4zLTMyLjMtMjEuNS01MS41LTQ4LjYtNTEuNi03OHptNjAuMiAzOS45czEwLjUgMTMuMiAyOS4zIDEzLjJjMTcuOSAwIDI4LjQtMTEuNSAyOC40LTI1LjEgMC0yOC00MC4yLTI1LjEtNDAuMi0zOS43IDAtNS40IDUuMy05LjEgMTIuNS05LjEgNS43IDAgMTEuMyAyLjYgMTEuMyA2LjZ2My45aDE0LjJ2LTcuOWMwLTEyLjEtMTUuNC0xNi44LTI1LjQtMTYuOC0xNi41IDAtMjguNSAxMC4yLTI4LjUgMjQuMSAwIDI2LjYgNDAuMiAyNS40IDQwLjIgMzkuOSAwIDYuNi01LjggMTAuMS0xMi4zIDEwLjEtMTEuOSAwLTIwLjctMTAuMS0yMC43LTEwLjFsLTguOCAxMC45em0xMjAuOC03My42djU0LjRjMCAxMS4zLTcuMSAxNy44LTE3LjggMTcuOC0xMC43IDAtMTcuOC02LjUtMTcuOC0xNy43di01NC41aC0xNS44djU1YzAgMTguOSAxMy40IDMxLjkgMzMuNyAzMS45IDIwLjEgMCAzMy40LTEzIDMzLjQtMzEuOXYtNTVoLTE1Ljd6bTM0LjQgODUuNGgxNS44di0yOS41aDE1LjVjMTYgMCAyNy4yLTExLjUgMjcuMi0yOC4xcy0xMS4yLTI3LjgtMjcuMi0yNy44aC0zOS4xdjEzLjRoNy44djcyem0xNS44LTQzdi0yOS4xaDEyLjljOC43IDAgMTMuNyA1LjcgMTMuNyAxNC40IDAgOC45LTUuMSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3IDQzaDE1Ljh2LTI5LjVoMTUuNWMxNiAwIDI3LjItMTEuNSAyNy4yLTI4LjFzLTExLjItMjcuOC0yNy4yLTI3LjhoLTM5LjF2MTMuNGg3Ljh2NzJ6bTE1LjctNDN2LTI5LjFoMTIuOWM4LjcgMCAxMy43IDUuNyAxMy43IDE0LjQgMCA4LjktNSAxNC43LTE0IDE0LjdoLTEyLjZ6bTU3LjEgMzQuOGMwIDUuOCAyLjQgOC4yIDguMiA4LjJoMzcuNmM1LjggMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOC42Yy0xLjcgMC0yLjYtMS0yLjYtMi42di02MS4yYzAtNS43LTIuNC04LjItOC4yLTguMkg0MDF2MTMuNGg1LjJjMS43IDAgMi42IDEgMi42IDIuNnY2MS4yem02My40IDBjMCA1LjggMi40IDguMiA4LjIgOC4ySDUxOWM1LjcgMCA4LjItMi40IDguMi04LjJ2LTEzaC0xNC4zdjUuMmMwIDEuNy0xIDIuNi0yLjYgMi42aC0xOS43Yy0xLjcgMC0yLjYtMS0yLjYtMi42di0yMC4zaDI3Ljd2LTEzLjRINDg4di0yMi40aDE5LjJjMS43IDAgMi42IDEgMi42IDIuNnY1LjJINTI0di0xM2MwLTUuNy0yLjUtOC4yLTguMi04LjJoLTUxLjZ2MTMuNGg3Ljh2NjMuOXptNTguOS03NnY1LjloMS42di01LjloMi43di0xLjJoLTd2MS4yaDIuN3ptNS43LTEuMnY3LjFoMS41di01LjdsMi4zIDUuN2gxLjNsMi4zLTUuN3Y1LjdoMS41di03LjFoLTIuM2wtMi4xIDUuMS0yLjEtNS4xaC0yLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzEuMDggMTAyLjY2cy0uMyAxOC4zLS4zIDIwLjNjLTkuMS0zLTc0LjQtMjQuMS0xMzUuNy0yNi4zLTUxLjktMS44LTEyMi44LTQuMy0yMjMgNTcuMy0xOS40IDEyLjQtNzMuOSA0Ni4xLTk5LjYgMTA5LjdDNyAyNzctLjEyIDMwNyA3IDMzNS4wNmExMTEgMTExIDAgMCAwIDE2LjUgMzUuN2MxNy40IDI1IDQ2LjYgNDEuNiA3OC4xIDQ0LjQgNDQuNCAzLjkgNzguMS0xNiA5MC01My4zIDguMi0yNS44IDAtNjMuNi0zMS41LTgyLjktMjUuNi0xNS43LTUzLjMtMTIuMS02OS4yLTEuNi0xMy45IDkuMi0yMS44IDIzLjUtMjEuNiAzOS4yLjMgMjcuOCAyNC4zIDQyLjYgNDEuNSA0Mi42YTQ5IDQ5IDAgMCAwIDE1LjgtMi43YzYuNS0xLjggMTMuMy02LjUgMTMuMy0xNC45IDAtMTIuMS0xMS42LTE0LjgtMTYuOC0xMy45LTIuOS41LTQuNSAyLTExLjggMi40LTItLjItMTItMy4xLTEyLTE0VjMxNmMuMi0xMi4zIDEzLjItMTggMjUuNS0xNi45IDMyLjMgMi44IDQ3LjcgNDAuNyAyOC41IDY1LjctMTguMyAyMy43LTc2LjYgMjMuMi05OS43LTIwLjQtMjYtNDkuMiAxMi43LTExMS4yIDg3LTk4LjQgMzMuMiA1LjcgODMuNiAzNS41IDEwMi40IDEwNC4zaDQ1LjljLTUuNy0xNy42LTguOS02OC4zIDQyLjctNjguMyA1Ni43IDAgNjMuOSAzOS45IDc5LjggNjguM0g0NjBjLTEyLjgtMTguMy0yMS43LTM4LjctMTguOS01NS44IDUuNi0zMy44IDM5LjctMTguNCA4Mi40LTE3LjQgNjYuNS40IDEwMi4xLTI3IDEwMy4xLTI4IDMuNy0zLjEgNi41LTE1LjggNy0xNy43IDEuMy01LjEtMy4yLTIuNC0zLjItMi40LTguNyA1LjItMzAuNSAxNS4yLTUwLjkgMTUuNi0yNS4zLjUtNzYuMi0yNS40LTgxLjYtMjguMi0uMy0uNC4xIDEuMi0xMS0yNS41IDg4LjQgNTguMyAxMTguMyA0MC41IDE0NS4yIDIxLjcuOC0uNiA0LjMtMi45IDMuNi01LjctMTMuOC00OC4xLTIyLjQtNjIuNy0zNC41LTY5LjYtMzctMjEuNi0xMjUtMzQuNy0xMjkuMi0zNS4zLjEtLjEtLjktLjMtLjkuN3ptNjAuNCA3Mi44YTM3LjU0IDM3LjU0IDAgMCAxIDM4LjktMzYuM2MzMy40IDEuMiA0OC44IDQyLjMgMjQuNCA2NS4yLTI0LjIgMjIuNy02NC40IDQuNi02My4zLTI4Ljl6bTM4LjYtMjUuM2EyNi4yNyAyNi4yNyAwIDEgMCAyNS40IDI3LjIgMjYuMTkgMjYuMTkgMCAwIDAtMjUuNC0yNy4yem00LjMgMjguOGMtMTUuNCAwLTE1LjQtMTUuNiAwLTE1LjZzMTUuNCAxNS42NCAwIDE1LjY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3aWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxNTYuMDljMC00LjUxLS4wOC05LS4yLTEzLjUyYTE5Ni4zMSAxOTYuMzEgMCAwIDAtMi41OC0yOS40MiA5OS42MiA5OS42MiAwIDAgMC05LjIyLTI4QTk0LjA4IDk0LjA4IDAgMCAwIDM5NC44NCA0NGE5OS4xNyA5OS4xNyAwIDAgMC0yOC05LjIyIDE5NSAxOTUgMCAwIDAtMjkuNDMtMi41OWMtNC41MS0uMTItOS0uMTctMTMuNTItLjJIMTI0LjE0Yy00LjUxIDAtOSAuMDgtMTMuNTIuMi0yLjQ1LjA3LTQuOTEuMTUtNy4zNy4yN2ExNzEuNjggMTcxLjY4IDAgMCAwLTIyLjA2IDIuMzIgMTAzLjA2IDEwMy4wNiAwIDAgMC0yMS4yMSA2LjFxLTMuNDYgMS40NS02LjgxIDMuMTJhOTQuNjYgOTQuNjYgMCAwIDAtMTguMzkgMTIuMzJjLTEuODggMS42MS0zLjY5IDMuMjgtNS40MyA1QTkzLjg2IDkzLjg2IDAgMCAwIDEyIDg1LjE3YTk5LjQ1IDk5LjQ1IDAgMCAwLTkuMjIgMjggMTk2LjMxIDE5Ni4zMSAwIDAgMC0yLjU0IDI5LjRjLS4xMyA0LjUxLS4xOCA5LS4yMSAxMy41MnYxOTkuODNjMCA0LjUxLjA4IDkgLjIxIDEzLjUxYTE5Ni4wOCAxOTYuMDggMCAwIDAgMi41OCAyOS40MiA5OS4zIDk5LjMgMCAwIDAgOS4yMiAyOEE5NC4zMSA5NC4zMSAwIDAgMCA1My4xNyA0NjhhOTkuNDcgOTkuNDcgMCAwIDAgMjggOS4yMSAxOTUgMTk1IDAgMCAwIDI5LjQzIDIuNTljNC41LjEyIDkgLjE3IDEzLjUyLjJIMzIzLjkxYzQuNTEgMCA5LS4wOCAxMy41Mi0uMmExOTYuNTkgMTk2LjU5IDAgMCAwIDI5LjQ0LTIuNTkgOTkuNTcgOTkuNTcgMCAwIDAgMjgtOS4yMUE5NC4yMiA5NC4yMiAwIDAgMCA0MzYgNDI2Ljg0YTk5LjMgOTkuMyAwIDAgMCA5LjIyLTI4IDE5NC43OSAxOTQuNzkgMCAwIDAgMi41OS0yOS40MmMuMTItNC41LjE3LTkgLjItMTMuNTFWMTcyLjE0Yy0uMDEtNS4zNS0uMDEtMTAuNy0uMDEtMTYuMDV6bS02OS44OCAyNDFjLTIwLTM4LjkzLTU3LjIzLTI5LjI3LTc2LjMxLTE5LjQ3LTEuNzIgMS0zLjQ4IDItNS4yNSAzbC0uNDIuMjVjLTM5LjUgMjEtOTIuNTMgMjIuNTQtMTQ1Ljg1LS4zOEEyMzQuNjQgMjM0LjY0IDAgMCAxIDQ1IDI5MC4xMmEyMzAuNjMgMjMwLjYzIDAgMCAwIDM5LjE3IDIzLjM3YzU2LjM2IDI2LjQgMTEzIDI0LjQ5IDE1MyAwLTU3LTQzLjg1LTEwNC42LTEwMS0xNDEuMDktMTQ3LjIyYTE5Ny4wOSAxOTcuMDkgMCAwIDEtMTguNzgtMjUuOWM0My43IDQwIDExMi43IDkwLjIyIDEzNy40OCAxMDQuMTItNTIuNTctNTUuNDktOTguODktMTIzLjk0LTk2LjcyLTEyMS43NCA4Mi43OSA4My40MiAxNTkuMTggMTMwLjU5IDE1OS4xOCAxMzAuNTkgMi44OCAxLjU4IDUgMi44NSA2LjczIDRhMTI3LjQ0IDEyNy40NCAwIDAgMCA0LjE2LTEyLjQ3YzEzLjIyLTQ4LjMzLTEuNjYtMTAzLjU4LTM1LjMxLTE0OS4yQzMyOS42MSAxNDEuNzUgMzc1IDIyOS4zNCAzNTYuNCAzMDMuNDJjLS40NCAxLjczLS45NSAzLjQtMS40NCA1LjA5IDM4LjUyIDQ3LjQgMjguMDQgOTguMTcgMjMuMTMgODguNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ltZm9ueSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMzMuNzQgMTQzLjU0Yy0xMS40Ny40MS0xOS40LTYuNDUtMTkuNzctMTYuODctLjI3LTkuMTggNi42OC0xMy40NCA2LjUzLTE4Ljg1LS4yMy02LjU1LTEwLjE2LTYuODItMTIuODctNi42Ny0zOS43OCAxLjI5LTQ4LjU5IDU3LTU4Ljg5IDExMy44NSAyMS40MyAzLjE1IDM2LjY1LS43MiA0NS4xNC02LjIyIDEyLTcuNzUtMy4zNC0xNS43Mi0xLjQyLTI0LjU2IDQtMTguMTYgMzIuNTUtMTkgMzIgNS4zLS4zNiAxNy44Ni0yNS45MiA0MS44MS03Ny42IDM1LjctMTAuNzYgNTkuNTItMTguMzUgMTE1LTU4LjIgMTYxLjcyLTI5IDM0LjQ2LTU4LjQgMzkuODItNzEuNTggNDAuMjYtMjQuNjUuODUtNDEtMTIuMzEtNDEuNTgtMjkuODQtLjU2LTE3IDE0LjQ1LTI2LjI2IDI0LjMxLTI2LjU5IDIxLjg5LS43NSAzMC4xMiAyNS42NyAxNC44OCAzNC0xMi4wOSA5LjcxLjExIDEyLjYxIDIuMDUgMTIuNTUgMTAuNDItLjM2IDE3LjM0LTUuNTEgMjIuMTgtOSAyNC0yMCAzMy4yNC01NC44NiA0NS4zNS0xMTguMzUgOC4xOS00OS42NiAxNy03OCAxOC4yMy04Mi0xNi45My0xMi43NS0yNy4wOC0yOC41NS00OS44NS0zNC43Mi0xNS42MS00LjIzLTI1LjEyLS42My0zMS44MSA3LjgzLTcuOTIgMTAtNS4yOSAyMyAyLjM3IDMwLjdsMTIuNjMgMTRjMTUuNTEgMTcuOTMgMjQgMzEuODcgMjAuOCA1MC42Mi01LjA2IDI5LjkzLTQwLjcyIDUyLjktODIuODggMzkuOTQtMzYtMTEuMTEtNDIuNy0zNi41Ni0zOC4zOC01MC42MiA3LjUxLTI0LjE1IDQyLjM2LTExLjcyIDM0LjYyIDEzLjYtMi43OSA4LjYtNC45MiA4LjY4LTYuMjggMTMuMDctNC41NiAxNC43NyA0MS44NSAyOC40IDUxLTEuMzkgNC40Ny0xNC41Mi01LjMtMjEuNzEtMjIuMjUtMzkuODUtMjguNDctMzEuNzUtMTYtNjUuNDkgMi45NS03OS42N0MyMDQuMjMgMTQwLjEzIDI1MS45NCAxOTcgMjYyIDIwNS4yOWMzNy4xNy0xMDkgMTAwLjUzLTEwNS40NiAxMDIuNDMtMTA1LjUzIDI1LjE2LS44MSA0NC4xOSAxMC41OSA0NC44MyAyOC42NS4yNSA3LjY5LTQuMTcgMjIuNTktMTkuNTIgMjMuMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVhbXNwZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0NC4yIDM0Ni43OWMyLjQtMTIuMy0xMi0zMC0zMi40LTQ4LjctMjAuOS0xOS4yLTQ4LjItMzkuMS02My40LTQ2LjYtMjEuNy0xMi00MS43LTEuOC00Ni4zIDIyLjctNSAyNi4yIDAgNTEuNCAxNC41IDczLjkgMTAuMiAxNS41IDI1LjQgMjIuNyA0My40IDI0IDExLjYuNiA1Mi41IDIuMiA2MS43LTEgMTEuOS00LjMgMjAuMS0xMS44IDIyLjUtMjQuM3ptMjA1IDIwLjhhNS4yMiA1LjIyIDAgMCAwLTguMyAyLjRjLTggMjUuNC00NC43IDExMi41LTE3Mi4xIDEyMS41LTE0OS43IDEwLjUgODAuMyA0My42IDE0NS40LTYuNCAyMi43LTE3LjQgNDcuNi0zNSA0Ni42LTg1LjQtLjQtMTAuMS00LjktMjYuNjktMTEuNi0zMi4xem02Mi0xMjIuNGMtLjMtMTguOS04LjYtMzMuNC0yNi00Mi4yLTIuOS0xLjMtNS0yLjctNS45LTYuNEEyMjIuNjQgMjIyLjY0IDAgMCAwIDQzOC45IDEwM2MtMS4xLTEuNS0zLjUtMy4yLTIuMi01IDguNS0xMS41LS4zLTE4LTctMjQuNFEzMjEuNC0zMS4xMSAxNzcuNCAxMy4wOWMtNDAuMSAxMi4zLTczLjkgMzUuNi0xMDIgNjcuNC00IDQuMy02LjcgOS4xLTMgMTQuNSAzIDQgMS4zIDYuMi0xIDkuM0M1MS42IDEzMiAzOC4yIDE2Mi41OSAzMi4xIDE5NmMtLjcgNC4zLTIuOSA2LTYuNCA3LjgtMTQuMiA3LTIyLjUgMTguNS0yNC45IDM0TDAgMjY0LjI5djIwLjljMCAzMC44IDIxIDUwLjQgNTEuOCA0OSA3LjctLjMgMTEuNy00LjMgMTItMTEuNSAyLTc3LjUtMi40LTk1LjQgMy43LTEyNS44QzkyLjEgNzIuMzkgMjM0LjMgNSAzNDUuMyA2NS4zOSA0MTEuNCAxMDIgNDQ1LjcgMTU5IDQ0Ny42IDIzNC43OWMuOCAyOC4yIDAgNTYuNSAwIDg0LjYgMCA3IDIuMiAxMi41IDkuNCAxNC4yIDI0LjEgNSA0OS4yLTEyIDUzLjItMzYuNyAyLjktMTcuMSAxLTM0LjUgMS01MS43em0tMTU5LjYgMTMxLjVjMzYuNSAyLjggNTkuMy0yOC41IDU4LjQtNjAuNS0yLjEtNDUuMi02Ni4yLTE2LjUtODcuOC04LTczLjIgMjguMS00NSA1NC45LTIyLjIgNjAuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUZWxlZ3JhbVBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ni43IDk4LjZsLTY3LjYgMzE4LjhjLTUuMSAyMi41LTE4LjQgMjguMS0zNy4zIDE3LjVsLTEwMy03NS45LTQ5LjcgNDcuOGMtNS41IDUuNS0xMC4xIDEwLjEtMjAuNyAxMC4xbDcuNC0xMDQuOSAxOTAuOS0xNzIuNWM4LjMtNy40LTEuOC0xMS41LTEyLjktNC4xTDExNy44IDI4NCAxNi4yIDI1Mi4yYy0yMi4xLTYuOS0yMi41LTIyLjEgNC42LTMyLjdMNDE4LjIgNjYuNGMxOC40LTYuOSAzNC41IDQuMSAyOC41IDMyLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVsZWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMTIxLjggMTY5LjlsLTQwLjcgMTkxLjhjLTMgMTMuNi0xMS4xIDE2LjktMjIuNCAxMC41bC02Mi00NS43LTI5LjkgMjguOGMtMy4zIDMuMy02LjEgNi4xLTEyLjUgNi4xbDQuNC02My4xIDExNC45LTEwMy44YzUtNC40LTEuMS02LjktNy43LTIuNWwtMTQyIDg5LjQtNjEuMi0xOS4xYy0xMy4zLTQuMi0xMy42LTEzLjMgMi44LTE5LjdsMjM5LjEtOTIuMmMxMS4xLTQgMjAuOCAyLjcgMTcuMiAxOS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmNlbnRXZWlibyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Mi4zIDQ5NS44YzEuNCAxOS45LTI3LjYgMjIuMi0yOS43IDIuOUMzMSAzNjguOCA3My43IDI1OS4yIDE0NCAxODUuNWMtMTUuNi0zNCA5LjItNzcuMSA1MC42LTc3LjEgMzAuMyAwIDU1LjEgMjQuNiA1NS4xIDU1LjEgMCA0NC00OS41IDcwLjgtODYuOSA0NS4xLTY1LjcgNzEuMy0xMDEuNCAxNjkuOC05MC41IDI4Ny4yek0xOTIgLjFDNjYuMS4xLTEyLjMgMTM0LjMgNDMuNyAyNDIuNCA1Mi40IDI1OS44IDc5IDI0Ni45IDcwIDIyOSAyMy43IDEzNi40IDkxIDI5LjggMTkyIDI5LjhjNzUuNCAwIDEzNi45IDYxLjQgMTM2LjkgMTM2LjkgMCA5MC44LTg2LjkgMTUzLjktMTY3LjcgMTMzLjEtMTkuMS00LjEtMjUuNiAyNC40LTYuNiAyOS4xIDExMC43IDIzLjIgMjA0LTYwIDIwNC0xNjIuM0MzNTguNiA3NC43IDI4NCAuMSAxOTIgLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlUmVkWWV0aSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODguMjMgMjQxLjdsMjAuNyA3LjFjLTkuNi0yMy45LTIzLjktMzctMzEuNy00NC44bDcuMS0xOC4yYy4yIDAgMTIuMy0yNy44LTIuNS0zMC43LS42LTExLjMtNi42LTI3LTE4LjQtMjctNy42LTEwLjYtMTcuNy0xMi4zLTMwLjctNS45YTEyMi4yIDEyMi4yIDAgMCAwLTI1LjMgMTYuNWMtNS4zLTYuNC0zIC40LTMtMjkuOC0zNy4xLTI0LjMtNDUuNC0xMS43LTc0LjggM2wuNS41YTIzOS4zNiAyMzkuMzYgMCAwIDAtNjguNC0xMy4zYy01LjUtOC43LTE4LjYtMTkuMS0yNS4xLTI1LjFsMjQuOCA3LjFjLTUuNS01LjUtMjYuOC0xMi45LTM0LjItMTUuMiAxOC4yLTQuMSAyOS44LTIwLjggNDIuNS0zMy0zNC45LTEwLjEtNjcuOS01LjktOTcuOSAxMS44bDEyLTQ0LjJMMTgyIDBjLTMxLjYgMjQuMi0zMyA0MS45LTMzLjcgNDUuNS0uOS0yLjQtNi4zLTE5LjYtMTUuMi0yN2EzNS4xMiAzNS4xMiAwIDAgMC0uNSAyNS4zYzMgOC40IDUuOSAxNC44IDguNCAxOC45LTE2LTMuMy0yOC4zLTQuOS00OS4yIDBoLTMuN2wzMyAxNC4zYTE5NC4yNiAxOTQuMjYgMCAwIDAtNDYuNyA2Ny40bC0xLjcgOC40IDEuNyAxLjcgNy42LTQuN2MtMy4zIDExLjYtNS4zIDE5LjQtNi42IDI1LjhhMjAwLjE4IDIwMC4xOCAwIDAgMC0yNy44IDQwLjNjLTE1IDEtMzEuOCAxMC44LTQwLjMgMTQuM2wzIDMuNCAyOC44IDFjLS41IDEtLjcgMi4yLTEuMiAzLjItNy4zIDYuNC0zOS44IDM3LjctMzMgODAuN2wyMC4yLTIyLjRjLjUgMS43LjcgMy40IDEuMiA1LjIgMCAyNS41LjQgODkuNiA2NC45IDE1MC41IDQzLjYgNDAgOTYgNjAuMiAxNTcuNSA2MC4yIDEyMS43IDAgMjIzLTg3LjMgMjIzLTIxMS41IDYuOC05LjctMS4yIDMgMTYuNy0yNS4xbDEzIDE0LjMgMi41LS41QTE4MS44NCAxODEuODQgMCAwIDAgNDk1IDI1NWE0NC43NCA0NC43NCAwIDAgMC02LjgtMTMuM3pNMzk4IDExMS4ybC0uNSAyMS45YzUuNSAxOC4xIDE2LjkgMTcuMiAyMi40IDE3LjJsLTMuNC00LjcgMjIuNC01LjRhMjQyLjQ0IDI0Mi40NCAwIDAgMS0yNyAwYzEyLjgtMi4xIDMzLjMtMjkgNDMtMTEuMyAzLjQgNy42IDYuNCAxNy4yIDkuMyAyNy44bDEuNy01LjlhNTYuMzggNTYuMzggMCAwIDEtMS43LTE1LjJjNS40LjUgOC44IDMuNCA5LjMgMTAuMS41IDYuNCAxLjcgMTQuOCAzLjQgMjUuM2w0LjctMTEuM2M0LjYgMCA0LjUtMy42LTIuNSAyMC43LTIwLjktOC43LTM1LjEtOC40LTQ2LjUtOC40bDE4LjItMTZjLTI1LjMgOC4yLTMzIDEwLjgtNTQuOCAyMC45LTEuMS01LjQtNS0xMy41LTE2LTE5LjktMy4yIDMuOC0yLjguOS0uNyAxNC44aC0yLjVhNjIuMzIgNjIuMzIgMCAwIDAtOC40LTIzLjFsNC4yLTMuNGM4LjQtNy4xIDExLjgtMTQuMyAxMC42LTIxLjktLjUtNi40LTUuNC0xMy41LTEzLjUtMjAuNyA1LjYtMy40IDE1LjItLjQgMjguMyA4LjV6bS0zOS42LTEwLjFjMi43IDEuOSAxMS40IDUuNCAxOC45IDE3LjIgNC4yIDguNCA0IDkuOCAzLjQgMTEuMS0uNSAyLjQtLjUgNC4zLTMgNy4xLTEuNyAyLjUtNS40IDQuNy0xMS44IDcuNi03LjYtMTMtMTYuNS0yMy42LTI3LjgtMzEuMnpNOTEgMTQzLjFsMS4yLTEuN2MxLjItMi45IDQuMi03LjYgOS4zLTE1LjJsMi41LTMuNC0xMyAxMi4zIDUuNC00LjctMTAuMSA5LjMtNC4yIDEuMmMxMi4zLTI0LjEgMjMuMS00MS4zIDMyLjUtNTAuMiA5LjMtOS4zIDE2LTE2IDIwLjItMTkuNGwtNi40IDEuMmMtMTEuMy00LjItMTkuNC03LjEtMjQuOC04LjQgMi41LS41IDMuNy0uNSAzLjItLjUgMTAuMyAwIDE3LjUuNSAyMC45IDEuMmE1Mi4zNSA1Mi4zNSAwIDAgMCAxNiAyLjVsLjUtMS43LTguNC0zNS44IDEzLjUgMjlhNDIuODkgNDIuODkgMCAwIDAgNS45LTE0LjNjMS43LTYuNCA1LjQtMTMgMTAuMS0xOS40czcuNi0xMC42IDkuMy0xMS4zYTIzNC42OCAyMzQuNjggMCAwIDAtNi40IDI1LjNsLTEuNyA3LjEtLjUgNC43IDIuNSAyLjVDMTkwLjQgMzkuOSAyMTQgMzQgMjM5LjggMzQuNWwyMS4xLjVjLTExLjggMTMuNS0yNy44IDIxLjktNDguNSAyNC44YTIwMS4yNiAyMDEuMjYgMCAwIDEtMjMuNCAyLjlsLS4yLS41LTIuNS0xLjJhMjAuNzUgMjAuNzUgMCAwIDAtMTQgMmMtMi41LS4yLTQuOS0uNS03LjEtLjdsLTIuNSAxLjcuNSAxLjJjMiAuMiAzLjkuNSA2LjIuN2wtMiAzLjQgMy40LS41LTEwLjYgMTEuM2MtNC4yIDMtNS40IDYuNC00LjIgOS4zbDUuNC0zLjRoMS4yYTM5LjQgMzkuNCAwIDAgMSAyNS4zLTE1LjJ2LTNjNi40LjUgMTMgMSAxOS40IDEuMiA2LjQgMCA4LjQuNSA1LjQgMS4yYTE4OS42IDE4OS42IDAgMCAxIDIwLjcgMTMuNWMxMy41IDEwLjEgMjMuNiAyMS45IDMwIDM1LjQgOC44IDE4LjIgMTMuNSAzNy4xIDEzLjUgNTYuNmExNDEuMTMgMTQxLjEzIDAgMCAxLTMgMjguMyAyMDkuOTEgMjA5LjkxIDAgMCAxLTE2IDQ2bDIuNS41YzE4LjItMTkuNyA0MS45LTE2IDQ5LjItMTZsLTYuNCA1LjkgMjIuNCAxNy43LTEuNyAzMC43Yy01LjQtMTIuMy0xNi41LTIxLjEtMzMtMjcuOCAxNi41IDE0LjggMjMuNiAyMS4xIDIxLjkgMjAuMi00LjgtMi44LTMuNS0xLjktMTAuOC0zLjcgNC4xIDQuMSAxNy41IDE4LjggMTguMiAyMC43bC4yLjItLjIuMmMwIDEuOCAxLjYtMS4yLTE0IDIyLjktNzUuMi0xNS4zLTEwNi4yNy00Mi43LTE0MS4yLTYzLjJsMTEuOCAxLjJjLTExLjgtMTguNS0xNS42LTE3LjctMzguNC0yNi4xTDE0OSAyMjVjLTguOC0zLTE4LjItMy0yOC4zLjVsNy42LTEwLjYtMS4yLTEuN2MtMTQuOSA0LjMtMTkuOCA5LjItMjIuNiAxMS4zLTEuMS01LjUtMi44LTEyLjQtMTIuMy0yOC44bC0xLjIgMjctMTMuMi01YzEuNS0yNS4yIDUuNC01MC41IDEzLjItNzQuNnptMjc2LjUgMzMwYy00OS45IDI1LTU2LjEgMjIuNC01OSAyMy45LTI5LjgtMTEuOC01MC45LTMxLjctNjMuNS01OC44bDMwIDE2LjVjLTkuOC05LjMtMTguMy0xNi41LTM4LjQtNDQuM2wxMS44IDIzLjEtMTcuNy03LjZjMTQuMiAyMS4xIDIzLjUgNTEuNyA2Ni42IDczLjUtMTIwLjggMjQuMi0xOTktNzIuMS0yMDAuOS03NC4zYTI2Mi41NyAyNjIuNTcgMCAwIDAgMzUuNCAyNC44YzMuNCAxLjcgNy4xIDIuNSAxMC4xIDEuMmwtMTYtMjAuN2M5LjIgNC4yIDkuNSA0LjUgNjkuMSAyOS00Mi41LTIwLjctNzMuOC00MC44LTkzLjItNjAuMi0uNSA2LjQtMS4yIDEwLjEtMS4yIDEwLjFhODAuMjUgODAuMjUgMCAwIDEgMjAuNyAyNi42Yy0zOS0xOC45LTU3LjYtNDcuNi03MS4zLTgyLjYgNDkuOSA1NS4xIDExOC45IDM3LjUgMTIwLjUgMzcuMSAzNC44IDE2LjQgNjkuOSAyMy42IDExMy45IDEwLjYgMy4zIDAgMjAuMyAxNyAyNS4zIDM5LjFsNC4yLTMtMi41LTIzLjZjOSA5IDI0LjkgMjIuNiAzNC40IDEzLTE1LjYtNS4zLTIzLjUtOS41LTI5LjUtMzEuNyA0LjYgNC4yIDcuNiA5IDI3LjggMTVsMS4yLTEuMi0xMC41LTE0LjJjMTEuNy00LjgtMy41IDEgMzItMTAuOCA0LjMgMzQuMyA5IDQ5LjIuNyA4OS41em0xMTUuMy0yMTQuNGwtMi41LjUgMyA5LjNjLTMuNSA1LjktMjMuNyA0NC4zLTcxLjYgNzkuNy0zOS41IDI5LjgtNzYuNiAzOS4xLTgwLjkgNDAuM2wtNy42LTcuMS0xLjIgMyAxNC4zIDE2LTcuMS00LjcgMy40IDQuMmgtMS4ybC0yMS45LTEzLjUgOS4zIDI2LjYtMTktMjcuOS0xLjIgMi41IDcuNiAyOWMtNi4xLTguMi0yMS0zMi42LTU2LjgtMzkuNmwzMi41IDIxLjJhMjE0LjgyIDIxNC44MiAwIDAgMS05My4yLTYuNGMtNC4yLTEuMi04LjktMi41LTEzLjUtNC4ybDEuMi0zLTQ0LjgtMjIuNCAyNi4xIDIyLjRjLTU3LjcgOS4xLTExMy0yNS40LTEyNi40LTgzLjRsLTIuNS0xNi40LTIyLjI3IDIyLjNjMTkuNS01Ny41IDI1LjYtNTcuOSA1MS40LTcwLjEtOS4xLTUuMy0xLjYtMy4zLTM4LjQtOS4zIDE1LjgtNS44IDMzLTE1LjQgNzMgNS4yYTE4LjUgMTguNSAwIDAgMSAzLjctMS43Yy42LTMuMi40LS44IDEtMTEuOCAzLjkgMTAgMy42IDguNyAzIDkuM2wxLjcuNWMxMi43LTYuNSA4LjktNC41IDE3LTguOWwtNS40IDEzLjUgMjIuMy01LjgtOC40IDguNCAyLjUgMi41YzQuNS0xLjggMzAuMyAzLjQgNDAuOCAxNmwtMjMuNi0yLjVjMzkuNCAyMyA1MS41IDU0IDU1LjggNjkuNmwxLjctMS4yYy0yLjgtMjIuMy0xMi40LTMzLjktMTYtNDAuMSA0LjIgNSAzOS4yIDM0LjYgMTEwLjQgNDYtMTEuMy0uNS0yMy4xIDUuNC0zNC45IDE4LjlsNDYuNy0yMC4yLTkuMyAyMS45YzcuNi0xMC4xIDE0LjgtMjMuNiAyMS4yLTM5LjZ2LS41bDEuMi0zLTEuMiAxNmMxMy41LTQxLjggMjUuMy03OC41IDM1LjQtMTA5LjdsMTMuNS0yNy44di0ybC01LjQtNC4yaDEwLjFsNS45IDQuMiAyLjUtMS4yLTMuNC0xNiAxMi4zIDE4LjkgNDEuOC0yMC4yLTE0LjggMTMgLjUgMi45IDE3LjctLjVhMTg0IDE4NCAwIDAgMSAzMyA0LjJsLTIzLjYgMi41LTEuMiAzIDI2LjYgMjMuMWEyNTQuMjEgMjU0LjIxIDAgMCAxIDI3IDMyYy0xMS4yLTMuMy0xMC4zLTMuNC0yMS4yLTMuNGwxMi4zIDMyLjV6bS02LjEtNzEuM2wtMy45IDEzLTE0LjMtMTEuOHptLTI1NC44IDcuMWMxLjcgMTAuNiA0LjcgMTcuNyA4LjggMjEuOS05LjMgNi42LTI3LjUgMTMuOS00Ni41IDE2bC41IDEuMmE1MC4yMiA1MC4yMiAwIDAgMCAyNC44LTIuNWwtNy4xIDEzYzQuMi0xLjcgMTAuMS03LjEgMTcuNy0xNC44IDExLjktNS41IDEyLjctNS4xIDIwLjItMTYtMTIuNy02LjQtMTUuNy0xMy43LTE4LjQtMTguOHptMy43LTEwMi4zYy02LjQtMy40LTEwLjYgMy0xMi4zIDE4LjlzMi41IDI5LjUgMTEuOCAzOS42IDE4LjIgMTAuNiAyNi4xIDMgMy40LTIzLjYtMTEuMy00Ny43YTM5LjU3IDM5LjU3IDAgMCAwLTE0LjI3LTEzLjh6bS00LjcgNDYuM2M1LjQgMi4yIDEwLjUgMS45IDEyLjMtMTAuNnYtNC43bC0xLjIuNWMtNC4zLTMuMS0yLjUtNC41LTEuNy02LjJsLjUtLjVjLS45LTEuMi01LTguMS0xMi41IDQuNy0uNS0xMy41LjUtMjEuOSAzLTI0LjggMS4yLTIuNSA0LjctMS4yIDExLjMgNC4yIDYuNCA1LjQgMTEuMyAxNiAxNS4yIDMyLjUgNi41IDI4LTE5LjggMjYuMi0yNi45IDQuOXptLTQ1LTUuNWMxLjYuMyA5LjMtMS4xIDkuMy0xNC44aC0uNWMtNS40LTEuMS0yLjItNS41LS43LTUuOS0xLjctMy0zLjQtNC4yLTUuNC00LjctOC4xIDAtMTEuNiAxMi43LTguMSAyMS4yYTcuNTEgNy41MSAwIDAgMCA1LjQzIDQuMnpNMjE2IDgyLjlsLTIuNS41LjUgM2E0OC45NCA0OC45NCAwIDAgMSAyNi4xIDUuOWMtMi41LTUuNS0xMC0xNC4zLTI4LjMtMTQuM2wuNSAyLjV6bS03MS44IDQ5LjRjMjEuNyAxNi44IDE2LjUgMjEuNCA0Ni41IDIzLjZsLTIuOS00LjdhNDIuNjcgNDIuNjcgMCAwIDAgMTQuOC0yOC4zYzEuNy0xNi0xLjItMjkuNS04LjgtNDEuM2wxMy03LjZhMi4yNiAyLjI2IDAgMCAwLS41LTEuNyAxNC4yMSAxNC4yMSAwIDAgMC0xMy41IDEuN2MtMTIuNyA2LjctMjggMjAuOS0yOSAyMi40LTEuNyAxLjctMy40IDUuOS01LjQgMTMuNWE5OS42MSA5OS42MSAwIDAgMC0yLjkgMjMuNmMtNC43LTgtMTAuNS02LjQtMTkuOS01LjlsNy4xIDcuNmMtMTYuNSAwLTIzLjMgMTUuNC0yMy42IDE2IDYuOCAwIDQuNi03LjYgMzAtMTIuMy00LjMtNi4zLTMuMy01LTQuOS02LjZ6bTE4LjctMTguN2MxLjItNy42IDMuNC0xMyA2LjQtMTcuMiA1LjQtNi40IDEwLjYtMTAuMSAxNi0xMS44IDQuMi0xLjcgNy4xIDEuMiAxMC4xIDkuM2E3Mi4xNCA3Mi4xNCAwIDAgMSAzIDI1LjNjLS41IDkuMy0zLjQgMTcuMi04LjQgMjMuMS0yLjkgMy40LTUuNCA1LjktNi40IDcuNmEzOS4yMSAzOS4yMSAwIDAgMS0xMS4zLS41bC03LjEtMy40LTUuNC02LjRjLjgtMTAgMS4zLTE4LjggMy4xLTI2em00MiA1Ni4xYy0zNC44IDE0LjQtMzQuNyAxNC0zNi4xIDE0LjMtMjAuOCA0LjctMTktMjQuNC0xOC45LTI0LjhsNS45LTEuMi0uNS0yLjVjLTIwLjItMi42LTMxIDQuMi0zMi41IDQuOS41LjUgMyAzLjQgNS45IDkuMyA0LjItNi40IDguOC0xMC4xIDE1LjItMTAuNmE4My40NyA4My40NyAwIDAgMCAxLjcgMzMuN2MuMS41IDIuNiAxNy40IDI3LjUgMjQuMSAxMS4zIDMgMjcgMS4yIDQ4LjktNS40bC05LjIuNWMtNC4yLTE0LjgtNi40LTI0LjgtNS45LTI5LjUgMTEuMy04LjggMjEuOS0xMS4zIDMwLjctNy42aDIuNWwtMTEuOC03LjYtNy4xLjVjLTUuOSAxLjItMTIuMyA0LjItMTkuNCA4LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlbWVjbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuOSA4LjQzYzkuOS01LjczIDI2LTUuODIgMzUuOTUtLjIxTDQzMCAxMTUuODVjMTAgNS42IDE4IDE5LjQ0IDE4IDMwLjg2VjM2NGMwIDExLjQ0LTguMDYgMjUuMjktMTggMzFMMjM4LjgxIDUwMy43NGMtOS45MyA1LjY2LTI2IDUuNTctMzUuODUtLjIxTDE3Ljg2IDM5NS4xMkM4IDM4OS4zNCAwIDM3NS4zOCAwIDM2NFYxNDYuNzFjMC0xMS40NCA4LTI1LjM2IDE3LjkxLTMxLjA4em0tNzcuNCAxOTkuODNjLTE1Ljk0IDAtMzEuODkuMTQtNDcuODMuMTR2MTAxLjQ1SDk2LjhWMjgwaDI4LjdjNDkuNzEgMCA0OS41Ni03MS43NCAwLTcxLjc0em0xNDAuMTQgMTAwLjI5bC0zMC43My0zNC42NGMzNy03LjUxIDM0LjgtNjUuMjMtMTAuODctNjUuNTEtMTYuMDkgMC0zMi4xNy0uMTQtNDguMjYtLjE0djEwMS41OWgxOS4xM3YtMzMuOTFoMTguNDFsMjkuNTYgMzMuOTFoMjIuNzZ6bS00MS41OS04Mi4zMmMyMy4zNCAwIDIzLjI2IDMyLjQ2IDAgMzIuNDZoLTI5LjEzdi0zMi40NnptLTk1LjU2LTEuNmMyMS4xOCAwIDIxLjExIDM4Ljg1IDAgMzguODVIOTYuMTh2LTM4Ljg0em0xOTIuNjUtMTguMjVjLTY4LjQ2IDAtNzEgMTA1LjggMCAxMDUuOCA2OS40OC0uMDEgNjkuNDEtMTA1LjggMC0xMDUuOHptMCAxNy4zOWM0NC4xMiAwIDQ0LjggNzAuODYgMCA3MC44NnMtNDQuNDMtNzAuODYgMC03MC44NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVtZWlzbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDg4LjI4NmMwLTEwIDYuMjg2LTIxLjcxNCAxNy43MTUtMjEuNzE0IDExLjE0MiAwIDE3LjcxNCAxMS43MTQgMTcuNzE0IDIxLjcxNCAwIDEwLjI4NS02LjU3MiAyMS43MTQtMTcuNzE0IDIxLjcxNEMyMTQuMjg2IDExMCAyMDggOTguNTcxIDIwOCA4OC4yODZ6bTMwNCAxNjBjMCAzNi4wMDEtMTEuNDI5IDEwMi4yODYtMzYuMjg2IDEyOS43MTQtMjIuODU4IDI0Ljg1OC04Ny40MjggNjEuMTQzLTEyMC44NTcgNzAuNTcybC0xLjE0My4yODZ2MzIuNTcxYzAgMTYuMjg2LTEyLjU3MiAzMC41NzEtMjkuMTQzIDMwLjU3MS0xMCAwLTE5LjQyOS01LjcxNC0yNC41NzItMTQuMjg2LTUuNDI3IDguNTcyLTE0Ljg1NiAxNC4yODYtMjQuODU2IDE0LjI4Ni0xMCAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQyIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcgMTQuMjg2LTEwLjI4NiAwLTE5LjQyOS01LjcxNC0yNC44NTgtMTQuMjg2LTUuMTQzIDguNTcyLTE0LjU3MSAxNC4yODYtMjQuNTcxIDE0LjI4Ni0xOC44NTcgMC0yOS40MjktMTUuNzE0LTI5LjQyOS0zMi44NTctMTYuMjg2IDEyLjI4NS0zNS43MTUgMTkuNDI4LTU2LjU3MSAxOS40MjgtMjIgMC00My40MjktOC4yODUtNjAuMjg2LTIyLjg1NyAxMC4yODUtLjI4NiAyMC41NzEtMi4yODYgMzAuMjg1LTUuNzE0LTIwLjg1Ny01LjcxNC0zOS40MjgtMTguODU3LTUyLTM2LjI4NiAyMS4zNyA0LjY0NSA0Ni4yMDkgMS42NzMgNjcuMTQzLTExLjE0My0yMi0yMi01Ni41NzEtNTguODU3LTY4LjU3Mi04Ny40MjhDMS4xNDMgMzIxLjcxNCAwIDMwMy43MTQgMCAyODkuNDI5YzAtNDkuNzE0IDIwLjI4Ni0xNjAgODYuMjg2LTE2MCAxMC41NzEgMCAxOC44NTcgNC44NTggMjMuMTQzIDE0Ljg1N2ExNTguNzkyIDE1OC43OTIgMCAwIDEgMTItMTUuNDI4YzItMi41NzIgNS43MTQtNS40MjkgNy4xNDMtOC4yODYgNy45OTktMTIuNTcxIDExLjcxNC0yMS4xNDIgMjEuNzE0LTM0QzE4Mi41NzEgNDUuNDI4IDIzMiAxNy4xNDMgMjg1LjE0MyAxNy4xNDNjNiAwIDEyIC4yODUgMTcuNzE0IDEuMTQzQzMxMy43MTQgNi41NzEgMzI4Ljg1NyAwIDM0NC41NzIgMGMxNC41NzEgMCAyOS43MTQgNiA0MCAxNi4yODYuODU3Ljg1OCAxLjQyOCAyLjI4NiAxLjQyOCAzLjQyOCAwIDMuNzE0LTEwLjI4NSAxMy40MjktMTIuODU3IDE2LjI4NiA0LjI4NiAxLjQyOSAxNS43MTQgNi44NTggMTUuNzE0IDEyIDAgMi44NTctMi44NTcgNS4xNDMtNC41NzEgNy4xNDMgMzEuNDI5IDI3LjcxNCA0OS40MjkgNjcuMTQzIDU2LjI4NiAxMDggNC4yODYtNS4xNDMgMTAuMjg1LTguNTcyIDE3LjE0My04LjU3MiAxMC41NzEgMCAyMC44NTcgNy4xNDQgMjguNTcxIDE0LjAwMUM1MDcuMTQzIDE4Ny4xNDMgNTEyIDIyMS43MTQgNTEyIDI0OC4yODZ6TTE4OCA4OS40MjhjMCAxOC4yODYgMTIuNTcxIDM3LjE0MyAzMi4yODYgMzcuMTQzIDE5LjcxNCAwIDMyLjI4NS0xOC44NTcgMzIuMjg1LTM3LjE0MyAwLTE4LTEyLjU3MS0zNi44NTctMzIuMjg1LTM2Ljg1Ny0xOS43MTUgMC0zMi4yODYgMTguODU4LTMyLjI4NiAzNi44NTd6TTIzNy43MTQgMTk0YzAtMTkuNzE0IDMuNzE0LTM5LjE0MyA4LjU3MS01OC4yODYtNTIuMDM5IDc5LjUzNC0xMy41MzEgMTg0LjU3MSA2OC44NTggMTg0LjU3MSAyMS40MjggMCA0Mi41NzEtNy43MTQgNjAtMjAgMi03LjQyOSAzLjcxNC0xNC44NTcgMy43MTQtMjIuNTcyIDAtMTQuMjg2LTYuMjg2LTIxLjQyOC0yMC41NzItMjEuNDI4LTQuNTcxIDAtOS4xNDMuODU3LTEzLjQyOSAxLjcxNC02My4zNDMgMTIuNjY4LTEwNy4xNDIgMy42NjktMTA3LjE0Mi02My45OTl6bS00MS4xNDIgMjU0Ljg1OGMwLTExLjE0My04Ljg1OC0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjkgMC0yMCA5LjcxNS0yMCAyMC44NTd2MzIuNTcxYzAgMTEuMTQzIDguNTcxIDIxLjE0MiAyMCAyMS4xNDIgMTEuNDI4IDAgMjAuMjg2LTkuNzE1IDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXptNDkuMTQzIDBjMC0xMS4xNDMtOC41NzItMjAuODU3LTIwLTIwLjg1Ny0xMS40MjkgMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTcgMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI4IDAgMjAtMTAgMjAtMjEuMTQydi0zMi41NzF6bTQ5LjcxMyAwYzAtMTEuMTQzLTguODU3LTIwLjg1Ny0yMC4yODUtMjAuODU3LTExLjQyOSAwLTIwLjI4NiA5LjcxNS0yMC4yODYgMjAuODU3djMyLjU3MWMwIDExLjE0MyA4Ljg1NyAyMS4xNDIgMjAuMjg2IDIxLjE0MiAxMS40MjggMCAyMC4yODUtOS43MTUgMjAuMjg1LTIxLjE0MnYtMzIuNTcxem00OS43MTUgMGMwLTExLjE0My04Ljg1Ny0yMC44NTctMjAuMjg2LTIwLjg1Ny0xMS40MjggMC0yMC4yODYgOS43MTUtMjAuMjg2IDIwLjg1N3YzMi41NzFjMCAxMS4xNDMgOC44NTggMjEuMTQyIDIwLjI4NiAyMS4xNDIgMTEuNDI5IDAgMjAuMjg2LTEwIDIwLjI4Ni0yMS4xNDJ2LTMyLjU3MXpNNDIxLjcxNCAyODZjLTMwLjg1NyA1OS4xNDItOTAuMjg1IDEwMi41NzItMTU4LjU3MSAxMDIuNTcyLTk2LjU3MSAwLTE2MC41NzEtODQuNTcyLTE2MC41NzEtMTc2LjU3MiAwLTE2Ljg1NyAyLTMzLjQyOSA2LTQ5LjcxNC0yMCAzMy43MTUtMjkuNzE0IDcyLjU3Mi0yOS43MTQgMTExLjQyOSAwIDYwLjI4NiAyNC44NTcgMTIxLjcxNSA3MS40MjkgMTYwLjg1NyA1LjE0My05LjcxNCAxNC44NTctMTYuMjg2IDI2LTE2LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0LjU3MS0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC41NzEgMTQuMjg2IDUuNDI5LTguNTcxIDE0Ljg1Ny0xNC4yODYgMjQuODU4LTE0LjI4NiAxMCAwIDE5LjQyOCA1LjcxNCAyNC44NTcgMTQuMjg2IDUuMTQzLTguNTcxIDE0LjU3MS0xNC4yODYgMjQuNTcyLTE0LjI4NiAxMC44NTcgMCAyMC44NTcgNi41NzIgMjUuNzE0IDE2IDQzLjQyNy0zNi4yODYgNjguNTY5LTkyIDcxLjQyNi0xNDguMjg2em0xMC41NzItOTkuNzE0YzAtNTMuNzE0LTM0LjU3MS0xMDUuNzE0LTkyLjU3Mi0xMDUuNzE0LTMwLjI4NSAwLTU4LjU3MSAxNS4xNDMtNzguODU3IDM2Ljg1N0MyNDAuODYyIDE4My44MTIgMjMzLjQxIDI1NCAzMDIuMjg2IDI1NGMyOC44MDUgMCA5Ny4zNTctMjguNTM4IDg0LjI4NiAzNi44NTcgMjguODU3LTI2IDQ1LjcxNC02NS43MTQgNDUuNzE0LTEwNC41NzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhpbmtQZWFrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjUuNCA0MDkuNGw4Ny4xLTE1MC4yLTMyLS4zLTU1LjEgOTVMMjU5LjIgMCAyMyA0MDcuNGwzMiAuM0wyNTkuMiA1NS42em0tMzU1LjMtNDQuMWgzMi4xbDExNy40LTIwMi41TDQ2MyA1MTEuOWwzMi41LjEtMjM1LjgtNDA0LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlrdG9rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCwyMDkuOTFhMjEwLjA2LDIxMC4wNiwwLDAsMS0xMjIuNzctMzkuMjVWMzQ5LjM4QTE2Mi41NSwxNjIuNTUsMCwxLDEsMTg1LDE4OC4zMVYyNzguMmE3NC42Miw3NC42MiwwLDEsMCw1Mi4yMyw3MS4xOFYwbDg4LDBhMTIxLjE4LDEyMS4xOCwwLDAsMCwxLjg2LDIyLjE3aDBBMTIyLjE4LDEyMi4xOCwwLDAsMCwzODEsMTAyLjM5YTEyMS40MywxMjEuNDMsMCwwLDAsNjcsMjAuMTRaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhZGVGZWRlcmF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4LjhjLTEzNyAwLTI0OCAxMTEtMjQ4IDI0OHMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4LTExMS0yNDgtMjQ4LTI0OHptMCA0ODIuOGMtMTI5LjcgMC0yMzQuOC0xMDUuMS0yMzQuOC0yMzQuOFMxMTguMyAyMiAyNDggMjJzMjM0LjggMTA1LjEgMjM0LjggMjM0LjhTMzc3LjcgNDkxLjYgMjQ4IDQ5MS42em0xNTUuMS0zMjguNXYtNDYuOEgyMDkuM1YxOThINTQuMmwzNi43IDQ2aDExNy43djE5Ni44aDQ4LjhWMjQ1aDgzLjN2LTQ3aC04My4zdi0zNC44aDE0NS43em0tNzMuMyA0NS4xdjIzLjloLTgyLjl2MTk3LjRoLTI2LjhWMjMyLjFIOTYuM2wtMjAuMS0yMy45aDE0My45di04MC42aDE3MS44VjE1MmgtMTQ1djU2LjJ6bS0xNjEuMy02OWwtMTIuNC0yMC43IDIuMSAyMy44LTIzLjUgNS40IDIzLjMgNS40LTIuMSAyNCAxMi4zLTIwLjUgMjIuMiA5LjUtMTUuNy0xOC4xIDE1LjgtMTguMXptLTI5LjYtMTkuN2w5LjMtMTEuNS0xMi43IDUuOS04LTEyLjQgMS43IDEzLjktMTQuMyAzLjggMTMuNyAyLjctLjggMTQuNyA2LjgtMTIuMiAxMy44IDUuM3ptMTY1LjQgMTQ1LjJsLTEzLjEgNS42LTcuMy0xMi4yIDEuMyAxNC4yLTEzLjkgMy4yIDEzLjkgMy4yLTEuMiAxNC4yIDcuMy0xMi4yIDEzLjEgNS41LTkuNC0xMC43em0xMDYuOS03Ny4ybC0yMC45IDkuMS0xMi0xOS42IDIuMiAyMi43LTIyLjMgNS40IDIyLjIgNC45LTEuOCAyMi45IDExLjUtMTkuNiAyMS4yIDguOC0xNS4xLTE3ek0yNDggMjkuOWMtMTI1LjMgMC0yMjYuOSAxMDEuNi0yMjYuOSAyMjYuOVMxMjIuNyA0ODMuNyAyNDggNDgzLjdzMjI2LjktMTAxLjYgMjI2LjktMjI2LjlTMzczLjMgMjkuOSAyNDggMjkuOXpNMzQyLjYgMTk2djUxaC04My4zdjE5NS43aC01Mi43VjI0NS45SDg5LjlsLTQwLTQ5LjloMTU3LjR2LTgxLjZoMTk3Ljh2NTAuN0gyNTkuNFYxOTZ6TTI0OCA0My4yYzYwLjMgMCAxMTQuOCAyNSAxNTMuNiA2NS4ySDIwMi41VjE5MEg0NS4xQzczLjEgMTA0LjggMTUzLjQgNDMuMiAyNDggNDMuMnptMCA0MjcuMWMtMTE3LjkgMC0yMTMuNi05NS42LTIxMy42LTIxMy41IDAtMjEuMiAzLjEtNDEuOCA4LjktNjEuMUw4Ny4xIDI1MmgxMTQuN3YxOTYuOGg2NC42VjI1M2g4My4zdi02Mi43aC04My4ydi0xOS4yaDE0NS42di01MC44YzMwLjggMzcgNDkuMyA4NC42IDQ5LjMgMTM2LjUuMSAxMTcuOS05NS41IDIxMy41LTIxMy40IDIxMy41ek0xNzguOCAyNzVsLTExLTIxLjQgMS43IDI0LjUtMjMuNyAzLjkgMjMuOCA1LjktMy43IDIzLjggMTMtMjAuOSAyMS41IDEwLjgtMTUuOC0xOC44IDE2LjktMTcuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmVsbG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyLjMgMzJINTYuMUMyNS4xIDMyIDAgNTcuMSAwIDg4Yy0uMSAwIDAtNCAwIDMzNiAwIDMwLjkgMjUuMSA1NiA1NiA1NmgzMzYuMmMzMC44LS4yIDU1LjctMjUuMiA1NS43LTU2Vjg4Yy4xLTMwLjgtMjQuOC01NS44LTU1LjYtNTZ6TTE5NyAzNzEuM2MtLjIgMTQuNy0xMi4xIDI2LjYtMjYuOSAyNi42SDg3LjRjLTE0LjguMS0yNi45LTExLjgtMjctMjYuNlYxMTcuMWMwLTE0LjggMTItMjYuOSAyNi45LTI2LjloODIuOWMxNC44IDAgMjYuOSAxMiAyNi45IDI2Ljl2MjU0LjJ6bTE5My4xLTExMmMwIDE0LjgtMTIgMjYuOS0yNi45IDI2LjloLTgxYy0xNC44IDAtMjYuOS0xMi0yNi45LTI2LjlWMTE3LjJjMC0xNC44IDEyLTI2LjkgMjYuOC0yNi45aDgxLjFjMTQuOCAwIDI2LjkgMTIgMjYuOSAyNi45djE0Mi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyaXBhZHZpc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOC45MSwxNzguODIsNTc2LDEyNy41OEg0NzEuNjZhMzI2LjExLDMyNi4xMSwwLDAsMC0zNjcsMEgwbDQ3LjA5LDUxLjI0QTE0My45MTEsMTQzLjkxMSwwLDAsMCwyNDEuODYsMzkwLjczTDI4OCw0NDAuOTNsNDYuMTEtNTAuMTdBMTQzLjk0LDE0My45NCwwLDAsMCw1NzUuODgsMjg1LjE4aC0uMDNBMTQzLjU2LDE0My41NiwwLDAsMCw1MjguOTEsMTc4LjgyWk0xNDQuMDYsMzgyLjU3YTk3LjM5LDk3LjM5LDAsMSwxLDk3LjM5LTk3LjM5QTk3LjM5LDk3LjM5LDAsMCwxLDE0NC4wNiwzODIuNTdaTTI4OCwyODIuMzdjMC02NC4wOS00Ni42Mi0xMTkuMDgtMTA4LjA5LTE0Mi41OWEyODEsMjgxLDAsMCwxLDIxNi4xNywwQzMzNC42MSwxNjMuMywyODgsMjE4LjI5LDI4OCwyODIuMzdabTE0My44OCwxMDAuMmgtLjAxYTk3LjQwNSw5Ny40MDUsMCwxLDEsLjAxLDBaTTE0NC4wNiwyMzQuMTJoLS4wMWE1MS4wNiw1MS4wNiwwLDEsMCw1MS4wNiw1MS4wNnYtLjExQTUxLDUxLDAsMCwwLDE0NC4wNiwyMzQuMTJabTI4Ny44MiwwYTUxLjA2LDUxLjA2LDAsMSwwLDUxLjA2LDUxLjA2QTUxLjA2LDUxLjA2LDAsMCwwLDQzMS44OCwyMzQuMTJaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS04Mi4zIDM2NC4yYy04LjUgOS4xLTMxLjIgMTkuOC02MC45IDE5LjgtNzUuNSAwLTkxLjktNTUuNS05MS45LTg3Ljl2LTkwaC0yOS43Yy0zLjQgMC02LjItMi44LTYuMi02LjJ2LTQyLjVjMC00LjUgMi44LTguNSA3LjEtMTAgMzguOC0xMy43IDUwLjktNDcuNSA1Mi43LTczLjIuNS02LjkgNC4xLTEwLjIgMTAtMTAuMmg0NC4zYzMuNCAwIDYuMiAyLjggNi4yIDYuMnY3Mmg1MS45YzMuNCAwIDYuMiAyLjggNi4yIDYuMnY1MS4xYzAgMy40LTIuOCA2LjItNi4yIDYuMmgtNTIuMVYzMjFjMCAyMS40IDE0LjggMzMuNSA0Mi41IDIyLjQgMy0xLjIgNS42LTIgOC0xLjQgMi4yLjUgMy42IDIuMSA0LjYgNC45bDEzLjggNDAuMmMxIDMuMiAyIDYuNy0uMyA5LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHVtYmxyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwOS44IDQ4MC4zYy0xMy42IDE0LjUtNTAgMzEuNy05Ny40IDMxLjctMTIwLjggMC0xNDctODguOC0xNDctMTQwLjZ2LTE0NEgxNy45Yy01LjUgMC0xMC00LjUtMTAtMTB2LTY4YzAtNy4yIDQuNS0xMy42IDExLjMtMTYgNjItMjEuOCA4MS41LTc2IDg0LjMtMTE3LjEuOC0xMSA2LjUtMTYuMyAxNi4xLTE2LjNoNzAuOWM1LjUgMCAxMCA0LjUgMTAgMTB2MTE1LjJoODNjNS41IDAgMTAgNC40IDEwIDkuOXY4MS43YzAgNS41LTQuNSAxMC0xMCAxMGgtODMuNFYzNjBjMCAzNC4yIDIzLjcgNTMuNiA2OCAzNS44IDQuOC0xLjkgOS0zLjIgMTIuNy0yLjIgMy41LjkgNS44IDMuNCA3LjQgNy45bDIyIDY0LjNjMS44IDUgMy4zIDEwLjYtLjQgMTQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkxLjE3LDEwMy40N0gzNTIuNTR2MTA5LjdoMzguNjNaTTI4NSwxMDNIMjQ2LjM3VjIxMi43NUgyODVaTTEyMC44MywwLDI0LjMxLDkxLjQyVjQyMC41OEgxNDAuMTRWNTEybDk2LjUzLTkxLjQyaDc3LjI1TDQ4Ny42OSwyNTZWMFpNNDQ5LjA3LDIzNy43NWwtNzcuMjIsNzMuMTJIMjk0LjYxbC02Ny42LDY0di02NEgxNDAuMTRWMzYuNThINDQ5LjA3WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVR3aXR0ZXJTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTQ4LjkgMTU4LjhjLjIgMi44LjIgNS43LjIgOC41IDAgODYuNy02NiAxODYuNi0xODYuNiAxODYuNi0zNy4yIDAtNzEuNy0xMC44LTEwMC43LTI5LjQgNS4zLjYgMTAuNC44IDE1LjguOCAzMC43IDAgNTguOS0xMC40IDgxLjQtMjgtMjguOC0uNi01My0xOS41LTYxLjMtNDUuNSAxMC4xIDEuNSAxOS4yIDEuNSAyOS42LTEuMi0zMC02LjEtNTIuNS0zMi41LTUyLjUtNjQuNHYtLjhjOC43IDQuOSAxOC45IDcuOSAyOS42IDguM2E2NS40NDcgNjUuNDQ3IDAgMCAxLTI5LjItNTQuNmMwLTEyLjIgMy4yLTIzLjQgOC45LTMzLjEgMzIuMyAzOS44IDgwLjggNjUuOCAxMzUuMiA2OC42LTkuMy00NC41IDI0LTgwLjYgNjQtODAuNiAxOC45IDAgMzUuOSA3LjkgNDcuOSAyMC43IDE0LjgtMi44IDI5LTguMyA0MS42LTE1LjgtNC45IDE1LjItMTUuMiAyOC0yOC44IDM2LjEgMTMuMi0xLjQgMjYtNS4xIDM3LjgtMTAuMi04LjkgMTMuMS0yMC4xIDI0LjctMzIuOSAzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUd2l0dGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1OS4zNyAxNTEuNzE2Yy4zMjUgNC41NDguMzI1IDkuMDk3LjMyNSAxMy42NDUgMCAxMzguNzItMTA1LjU4MyAyOTguNTU4LTI5OC41NTggMjk4LjU1OC01OS40NTIgMC0xMTQuNjgtMTcuMjE5LTE2MS4xMzctNDcuMTA2IDguNDQ3Ljk3NCAxNi41NjggMS4yOTkgMjUuMzQgMS4yOTkgNDkuMDU1IDAgOTQuMjEzLTE2LjU2OCAxMzAuMjc0LTQ0LjgzMi00Ni4xMzItLjk3NS04NC43OTItMzEuMTg4LTk4LjExMi03Mi43NzIgNi40OTguOTc0IDEyLjk5NSAxLjYyNCAxOS44MTggMS42MjQgOS40MjEgMCAxOC44NDMtMS4zIDI3LjYxNC0zLjU3My00OC4wODEtOS43NDctODQuMTQzLTUxLjk4LTg0LjE0My0xMDIuOTg1di0xLjI5OWMxMy45NjkgNy43OTcgMzAuMjE0IDEyLjY3IDQ3LjQzMSAxMy4zMTktMjguMjY0LTE4Ljg0My00Ni43ODEtNTEuMDA1LTQ2Ljc4MS04Ny4zOTEgMC0xOS40OTIgNS4xOTctMzcuMzYgMTQuMjk0LTUyLjk1NCA1MS42NTUgNjMuNjc1IDEyOS4zIDEwNS4yNTggMjE2LjM2NSAxMDkuODA3LTEuNjI0LTcuNzk3LTIuNTk5LTE1LjkxOC0yLjU5OS0yNC4wNCAwLTU3LjgyOCA0Ni43ODItMTA0LjkzNCAxMDQuOTM0LTEwNC45MzQgMzAuMjEzIDAgNTcuNTAyIDEyLjY3IDc2LjY3IDMzLjEzNyAyMy43MTUtNC41NDggNDYuNDU2LTEzLjMyIDY2LjU5OS0yNS4zNC03Ljc5OCAyNC4zNjYtMjQuMzY2IDQ0LjgzMy00Ni4xMzIgNTcuODI3IDIxLjExNy0yLjI3MyA0MS41ODQtOC4xMjIgNjAuNDI2LTE2LjI0My0xNC4yOTIgMjAuNzkxLTMyLjE2MSAzOS4zMDgtNTIuNjI4IDU0LjI1M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUeXBvMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzguNyA3OC40YzAtMjQuNyA1LjQtMzIuNCAxMy45LTM5LjQtNjkuNSA4LjUtMTQ5LjMgMzQtMTc2LjMgNjYuNC01LjQgNy43LTkuMyAyMC44LTkuMyAzNy4xQzcgMjQ2IDExMy44IDQ4MCAxOTEuMSA0ODBjMzYuMyAwIDk3LjMtNTkuNSAxNDYuNy0xMzktNyAyLjMtMTEuNiAyLjMtMTguNSAyLjMtNTcuMiAwLTE0MC42LTE5OC41LTE0MC42LTI2NC45ek0zMDEuNSAzMmMtMzAuMSAwLTQxLjcgNS40LTQxLjcgMzYuMyAwIDY2LjQgNTMuOCAxOTguNSAxMDEuNyAxOTguNSAyNi4zIDAgNzguOC05OS43IDc4LjgtMTgyLjMgMC00MC45LTY3LTUyLjUtMTM4LjgtNTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4xIDMySDMzLjlDMTUuMiAzMiAwIDQ3LjIgMCA2NS45VjQ0NmMwIDE4LjggMTUuMiAzNCAzMy45IDM0SDQxNGMxOC43IDAgMzMuOS0xNS4yIDMzLjktMzMuOVY2NS45QzQ0OCA0Ny4yIDQzMi44IDMyIDQxNC4xIDMyek0yMzcuNiAzOTEuMUMxNjMgMzk4LjYgOTYuNCAzNDQuMiA4OC45IDI2OS42aDk0LjRWMjkwYzAgMy43IDMgNi44IDYuOCA2LjhIMjU4YzMuNyAwIDYuOC0zIDYuOC02Ljh2LTY3LjljMC0zLjctMy02LjgtNi44LTYuOGgtNjcuOWMtMy43IDAtNi44IDMtNi44IDYuOHYyMC40SDg4LjljNy02OS40IDY1LjQtMTIyLjIgMTM1LjEtMTIyLjIgNjkuNyAwIDEyOC4xIDUyLjggMTM1LjEgMTIyLjIgNy41IDc0LjUtNDYuOSAxNDEuMS0xMjEuNSAxNDguNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVYnVudHUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNTIuNyA5M2M4LjgtMTUuMiAyOC4zLTIwLjUgNDMuNS0xMS43IDE1LjMgOC44IDIwLjUgMjguMyAxMS43IDQzLjYtOC44IDE1LjItMjguMyAyMC41LTQzLjUgMTEuNy0xNS4zLTguOS0yMC41LTI4LjQtMTEuNy00My42ek04Ny40IDI4Ny45Yy0xNy42IDAtMzEuOS0xNC4zLTMxLjktMzEuOSAwLTE3LjYgMTQuMy0zMS45IDMxLjktMzEuOSAxNy42IDAgMzEuOSAxNC4zIDMxLjkgMzEuOSAwIDE3LjYtMTQuMyAzMS45LTMxLjkgMzEuOXptMjguMSAzLjFjMjIuMy0xNy45IDIyLjQtNTEuOSAwLTY5LjkgOC42LTMyLjggMjkuMS02MC43IDU2LjUtNzkuMWwyMy43IDM5LjZjLTUxLjUgMzYuMy01MS41IDExMi41IDAgMTQ4LjhMMTcyIDM3MGMtMjcuNC0xOC4zLTQ3LjgtNDYuMy01Ni41LTc5em0yMjguNyAxMzEuN2MtMTUuMyA4LjgtMzQuNyAzLjYtNDMuNS0xMS43LTguOC0xNS4zLTMuNi0zNC44IDExLjctNDMuNiAxNS4yLTguOCAzNC43LTMuNiA0My41IDExLjcgOC44IDE1LjMgMy42IDM0LjgtMTEuNyA0My42em0uMy02OS41Yy0yNi43LTEwLjMtNTYuMSA2LjYtNjAuNSAzNS01LjIgMS40LTQ4LjkgMTQuMy05Ni43LTkuNGwyMi41LTQwLjNjNTcgMjYuNSAxMjMuNC0xMS43IDEyOC45LTc0LjRsNDYuMS43Yy0yLjMgMzQuNS0xNy4zIDY1LjUtNDAuMyA4OC40em0tNS45LTEwNS4zYy01LjQtNjItNzEuMy0xMDEuMi0xMjguOS03NC40bC0yMi41LTQwLjNjNDcuOS0yMy43IDkxLjUtMTAuOCA5Ni43LTkuNCA0LjQgMjguMyAzMy44IDQ1LjMgNjAuNSAzNSAyMy4xIDIyLjkgMzggNTMuOSA0MC4yIDg4LjVsLTQ2IC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVpa2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0My45IDEyOHYyNTZMMjE4IDUxMiAwIDM4NFYxNjkuN2w4Ny42IDQ1LjF2MTE3bDEzMy41IDc1LjUgMTM1LjgtNzUuNXYtMTUxbC0xMDEuMS01Ny42IDg3LjYtNTMuMUw0NDMuOSAxMjh6TTMwOC42IDQ5LjFMMjIzLjggMGwtODguNiA1NC44IDg2IDQ3LjMgODcuNC01M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbWJyYWNvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS4zNSA4QzExOC4zNiA3LjgzIDcuMTQgMTE4LjcyIDcgMjU1LjY4Yy0uMDcgMTM3IDExMSAyNDguMiAyNDggMjQ4LjI3IDEzNi44NSAwIDI0Ny44Mi0xMTAuNyAyNDgtMjQ3LjY3UzM5Mi4zNCA4LjE3IDI1NS4zNSA4em0xNDUgMjY2cS0xLjE0IDQwLjY4LTE0IDY1dC00My41MSAzNXEtMzAuNjEgMTAuNy04NS40NSAxMC40N2gtNC42cS01NC43OC4yMi04NS40NC0xMC40N3QtNDMuNTItMzVxLTEyLjg1LTI0LjM2LTE0LTY1YTIyNC44MSAyMjQuODEgMCAwIDEgMC0zMC43MSA0MTguMzcgNDE4LjM3IDAgMCAxIDMuNi00My44OGMxLjg4LTEzLjM5IDMuNTctMjIuNTggNS40LTMyIDEtNC44OCAxLjI4LTYuNDIgMS44Mi04LjQ1YTUuMDkgNS4wOSAwIDAgMSA0LjktMy44OWguNjlsMzIgNWE1LjA3IDUuMDcgMCAwIDEgNC4xNiA1IDUgNSAwIDAgMSAwIC43N2wtMS43IDguNzhxLTIuNDEgMTMuMjUtNC44NCAzMy42OGEzODAuNjIgMzgwLjYyIDAgMCAwLTIuNjQgNDIuMTVxLS4yOCA0MC40MyA4LjEzIDU5LjgzYTQzLjg3IDQzLjg3IDAgMCAwIDMxLjMxIDI1LjE4QTI0MyAyNDMgMCAwIDAgMjUwIDM0MC42aDEwLjI1YTI0Mi42NCAyNDIuNjQgMCAwIDAgNTcuMjctNS4xNiA0My44NiA0My44NiAwIDAgMCAzMS4xNS0yNS4yM3E4LjUzLTE5LjQyIDguMTMtNTkuNzhhMzg4IDM4OCAwIDAgMC0yLjYtNDIuMTVxLTIuNDgtMjAuMzgtNC44OS0zMy42OGwtMS42OS04Ljc4YTUgNSAwIDAgMSAwLS43NyA1IDUgMCAwIDEgNC4yLTVsMzItNWguODJhNSA1IDAgMCAxIDQuOSAzLjg5Yy41NSAyLjA1LjgxIDMuNTcgMS44MyA4LjQ1IDEuODIgOS42MiAzLjUyIDE4Ljc4IDUuMzkgMzJhNDE1LjcxIDQxNS43MSAwIDAgMSAzLjYxIDQzLjg4IDIyOC4wNiAyMjguMDYgMCAwIDEtLjA0IDMwLjczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuY2hhcnRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzEuNzMsMjMyLjgxM0E1LjM4MSw1LjM4MSwwLDAsMCwxNzYuNywyMjkuNSw0OC4wODEsNDguMDgxLDAsMCwxLDE5MS42LDIwNC4yNDRjMS4yNDMtLjgyOCwxLjY1Ny0yLjQ4NCwxLjY1Ny00LjE0MWE0LjIyLDQuMjIsMCwwLDAtMi4wNzEtMy4zMTJMNzQuNDI5LDEyOC40NzMsMTQ4Ljk1OCw4NWE5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MSw5LjEwOCw5LjEwOCwwLDAsMC00Ljk2OC04LjI4MUwxMjYuNiw1NS42YTkuNzQ4LDkuNzQ4LDAsMCwwLTkuNTIzLDBsLTEwMC4yLDU3Ljk2NmE5Ljk0Myw5Ljk0MywwLDAsMC00Ljk2OSw4LjI4MVYyMzYuOTU0YTkuMTA5LDkuMTA5LDAsMCwwLDQuOTY5LDguMjgxTDM5LjIzNSwyNTguMDdhOC44MjksOC44MjksMCwwLDAsNC45NjgsMS4yNDIsOS40LDkuNCwwLDAsMCw2LjYyNS0yLjQ4NCwxMC44LDEwLjgsMCwwLDAsMi45LTcuMDM5VjE2NC41TDE2OS42NiwyMzIuNEE0LjUsNC41LDAsMCwwLDE3MS43MywyMzIuODEzWk0zMjMuMjcyLDM3Ny43M2ExMi40NzgsMTIuNDc4LDAsMCwwLTQuOTY5LDEuMjQybC03NC41MjgsNDMuMDYyVjI4Ny44ODJjMC0yLjktMi45LTUuOC02LjIxMS00LjU1NWE1My4wMzYsNTMuMDM2LDAsMCwxLTI4Ljk4NC40MTQsNC44Niw0Ljg2LDAsMCwwLTYuMjEsNC41NTVWNDIxLjYxOWwtNzQuNTI5LTQzLjA2MWE4LjgzLDguODMsMCwwLDAtNC45NjktMS4yNDIsOS42MzEsOS42MzEsMCwwLDAtOS41MjMsOS41MjN2MjYuMDg1YTkuMTA3LDkuMTA3LDAsMCwwLDQuOTY5LDguMjgxbDEwMC4yLDU3LjU1M0E4LjgyOSw4LjgyOSwwLDAsMCwyMjMuNDg2LDQ4MGExMS4wMjcsMTEuMDI3LDAsMCwwLDQuOTY5LTEuMjQybDEwMC4yLTU3LjU1M2E5Ljk0MSw5Ljk0MSwwLDAsMCw0Ljk2OC04LjI4MVYzODYuODM5QzMzMi44LDM4Mi4yODUsMzI4LjI0LDM3Ny43MywzMjMuMjcyLDM3Ny43M1pNMjg2LjAwNyw3OGEyMywyMywwLDEsMC0yMy0yM0EyMywyMywwLDAsMCwyODYuMDA3LDc4Wm02My42MjctMTAuMDg2YTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsNjcuOTE0Wk00MTIuODE2LDE1MS42YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMTUxLjZabS02My4xODItOS4yYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDM0OS42MzQsMTQyLjRabS02My42MjcsODMuMjQ0YTIzLDIzLDAsMSwwLTIzLTIzQTIzLDIzLDAsMCwwLDI4Ni4wMDcsMjI1LjY0OFptLTYyLjA3NCwzNi4zNThhMjMsMjMsMCwxLDAtMjMtMjNBMjMsMjMsMCwwLDAsMjIzLjkzMywyNjIuMDA2Wm0xODguODgzLTgyLjM1OGEyMywyMywwLDEsMCwyMywyM0EyMywyMywwLDAsMCw0MTIuODE2LDE3OS42NDhabTAsNzIuMjcyYTIzLDIzLDAsMSwwLDIzLDIzQTIzLDIzLDAsMCwwLDQxMi44MTYsMjUxLjkyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXJlZ2lzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiA0ODBjMzkuNSAwIDc2LjItMTEuOCAxMDYuOC0zMi4ySDg1LjNDMTE1LjggNDY4LjIgMTUyLjUgNDgwIDE5MiA0ODB6bS04OS4xLTE5My4xdi0xMi40SDB2MTIuNGMwIDIuNSAwIDUgLjEgNy40aDEwMy4xYy0uMi0yLjQtLjMtNC45LS4zLTcuNHptMjAuNSA1N0g4LjVjMi42IDguNSA1LjggMTYuOCA5LjYgMjQuOGgxMzguM2MtMTIuOS01LjctMjQuMS0xNC4yLTMzLTI0Ljh6bS0xNy43LTM0LjdIMS4zYy45IDcuNiAyLjIgMTUgMy45IDIyLjNoMTA5LjdjLTQtNi45LTcuMi0xNC40LTkuMi0yMi4zem0tMi44LTY5LjNIMHYxNy4zaDEwMi45em0wLTE3My4ySDB2NC45aDEwMi45em0wLTM0LjdIMHYyLjVoMTAyLjl6bTAgNjkuM0gwdjcuNGgxMDIuOXptMCAxMDRIMHYxNC44aDEwMi45em0wLTY5LjNIMHY5LjloMTAyLjl6bTAgMzQuNkgwVjE4M2gxMDIuOXptMTY2LjIgMTYwLjloMTA5LjdjMS44LTcuMyAzLjEtMTQuNyAzLjktMjIuM0gyNzguM2MtMi4xIDcuOS01LjIgMTUuNC05LjIgMjIuM3ptMTItMTg1LjdIMzg0VjEzNkgyODEuMXptMCAzNy4ySDM4NHYtMTIuNEgyODEuMXptMC03NC4zSDM4NHYtNy40SDI4MS4xem0wLTc2Ljd2Mi41SDM4NFYzMnptLTIwMyA0MTAuOWgyMjcuN2MxMS44LTguNyAyMi43LTE4LjYgMzIuMi0yOS43SDQ0LjljOS42IDExIDIxLjQgMjEgMzMuMiAyOS43em0yMDMtMzcxLjNIMzg0di00LjlIMjgxLjF6bTAgMTQ4LjVIMzg0di0xNC44SDI4MS4xek0zOC44IDQwNS43aDMwNS4zYzYuNy04LjUgMTIuNi0xNy42IDE3LjgtMjcuMkgyM2M1LjIgOS42IDkuMiAxOC43IDE1LjggMjcuMnptMTg4LjgtMzcuMUgzNjdjMy43LTggNS44LTE2LjIgOC41LTI0LjhoLTExNWMtOC44IDEwLjctMjAuMSAxOS4yLTMyLjkgMjQuOHptNTMuNS04MS43YzAgMi41LS4xIDUtLjQgNy40aDEwMy4xYy4xLTIuNS4yLTQuOS4yLTcuNHYtMTIuNEgyODEuMXptMC0yOS43SDM4NHYtMTcuM0gyODEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbml0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTguMTEsMjA2LjQsNDQ1LjMxLDE0LjcyLDI0OC4yLDY2LjA4LDIxOSwxMTYuMTRsLTU5LjItLjQzTDE1LjU0LDI1NiwxNTkuODIsMzk2LjMybDU5LjE3LS40MywyOS4yNCw1MCwxOTcuMDgsNTEuMzYsNTIuOC0xOTEuNjItMzAtNDkuNjNaTTIyMy43NywxMjQuMiwzNzQuNTUsODYuNTEsMjg4LDIzMi4zM0gxMTQuODdabTAsMjYzLjYzTDExNC44NywyNzkuNzFIMjg4bDg2LjU1LDE0NS44MVptMTkzLDE0TDMzMC4xNywyNTZsODYuNTgtMTQ1Ljg0TDQ1OC41NiwyNTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5zcGxhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4LDIzMC4xN1Y0ODBIMFYyMzAuMTdIMTQxLjEzVjM1NS4wOUgzMDYuODdWMjMwLjE3Wk0zMDYuODcsMzJIMTQxLjEzVjE1Ni45MUgzMDYuODdaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW50YXBwZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDEuMyA0OS45Yy03OS44IDE2MC4xLTg0LjYgMTUyLjUtODcuOSAxNzMuMmwtNS4yIDMyLjhjLTEuOSAxMi02LjYgMjMuNS0xMy43IDMzLjRMMTQ1LjYgNDk3LjFjLTcuNiAxMC42LTIwLjQgMTYuMi0zMy40IDE0LjYtNDAuMy01LTc3LjgtMzIuMi05NS4zLTY4LjUtNS43LTExLjgtNC41LTI1LjggMy4xLTM2LjRsMTQ4LjktMjA3LjljNy4xLTkuOSAxNi40LTE4IDI3LjItMjMuN2wyOS4zLTE1LjVjMTguNS05LjggOS43LTExLjkgMTM1LjYtMTM4LjkgMS00LjggMS03LjMgMy42LTggMy0uNyA2LjYtMSA2LjMtNC42bC0uNC00LjZjLS4yLTEuOSAxLjMtMy42IDMuMi0zLjYgNC41LS4xIDEzLjIgMS4yIDI1LjYgMTAgMTIuMyA4LjkgMTYuNCAxNi44IDE3LjcgMjEuMS42IDEuOC0uNiAzLjctMi40IDQuMmwtNC41IDEuMWMtMy40LjktMi41IDQuNC0yLjMgNy40LjEgMi44LTIuMyAzLjYtNi41IDYuMXpNMjMwLjEgMzYuNGMzLjQuOSAyLjUgNC40IDIuMyA3LjQtLjIgMi43IDIuMSAzLjUgNi40IDYgNy45IDE1LjkgMTUuMyAzMC41IDIyLjIgNDQgLjcgMS4zIDIuMyAxLjUgMy4zLjUgMTEuMi0xMiAyNC42LTI2LjIgNDAuNS00Mi42IDEuMy0xLjQgMS40LTMuNS4xLTQuOS04LTguMi0xNi41LTE2LjktMjUuNi0yNi4xLTEtNC43LTEtNy4zLTMuNi04LTMtLjgtNi42LTEtNi4zLTQuNi4zLTMuMyAxLjQtOC4xLTIuOC04LjItNC41LS4xLTEzLjIgMS4xLTI1LjYgMTAtMTIuMyA4LjktMTYuNCAxNi44LTE3LjcgMjEuMS0xLjQgNC4yIDMuNiA0LjYgNi44IDUuNHpNNjIwIDQwNi43TDQ3MS4yIDE5OC44Yy0xMy4yLTE4LjUtMjYuNi0yMy40LTU2LjQtMzkuMS0xMS4yLTUuOS0xNC4yLTEwLjktMzAuNS0yOC45LTEtMS4xLTIuOS0uOS0zLjYuNS00Ni4zIDg4LjgtNDcuMSA4Mi44LTQ5IDk0LjgtMS43IDEwLjctMS4zIDIwIC4zIDI5LjggMS45IDEyIDYuNiAyMy41IDEzLjcgMzMuNGwxNDguOSAyMDcuOWM3LjYgMTAuNiAyMC4yIDE2LjIgMzMuMSAxNC43IDQwLjMtNC45IDc4LTMyIDk1LjctNjguNiA1LjQtMTEuOSA0LjMtMjUuOS0zLjQtMzYuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAzLjIgMzAzYy01LjIgMy42LTMyLjYgMTMuMS0zMi42LTE5VjE4MEgzNy45djEwMi42YzAgNzQuOSA4MC4yIDUxLjEgOTcuOSAzOVYxODBoLTMyLjZ6TTQgNzQuODJ2MjIwLjljMCAxMDMuNyA3NC45IDEzNS4yIDE4Ny43IDE4NC4xIDExMi40LTQ4LjkgMTg3LjctODAuMiAxODcuNy0xODQuMVY3NC44MmMtMTE2LjMtNjEuNi0yODEuOC00OS42LTM3NS40IDB6bTM1OC4xIDIyMC45YzAgODYuNi01My4yIDExMy42LTE3MC40IDE2NS4zLTExNy41LTUxLjgtMTcwLjUtNzguNy0xNzAuNS0xNjUuM3YtMTI2LjRjMTAyLjMtOTMuOCAyMzEuNi0xMDAgMzQwLjktODkuOHptLTIwOS42LTEwNy40djIxMi44aDMyLjd2LTY4LjdjMjQuNCA3LjMgNzEuNy0yLjYgNzEuNy03OC41IDAtOTcuNC04MC43LTgwLjkyLTEwNC40LTY1LjZ6bTMyLjcgMTE3LjN2LTEwMC4zYzguNC00LjIgMzguNC0xMi43IDM4LjQgNDkuMyAwIDY3LjktMzYuNCA1MS44LTM4LjQgNTF6bTc5LjEtODYuNGMuMSA0Ny4zIDUxLjYgNDIuNSA1Mi4yIDcwLjQuNiAyMy41LTMwLjQgMjMtNTAuOCA0Ljl2MzAuMWMzNi4yIDIxLjUgODEuOSA4LjEgODMuMi0zMy41IDEuNy01MS41LTU0LjEtNDYuNi01My40LTczLjIuNi0yMC4zIDMwLjYtMjAuNSA0OC41LTIuMnYtMjguNGMtMjguNS0yMi03OS45LTkuMi03OS43IDMxLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MS41IDI1NmMwIDMuMS0xLjcgNi4xLTQuNSA3LjVMNTQ3LjkgMzE3Yy0xLjQuOC0yLjggMS40LTQuNSAxLjQtMS40IDAtMy4xLS4zLTQuNS0xLjEtMi44LTEuNy00LjUtNC41LTQuNS03Ljh2LTM1LjZIMjk1LjdjMjUuMyAzOS42IDQwLjUgMTA2LjkgNjkuNiAxMDYuOUgzOTJWMzU0YzAtNSAzLjktOC45IDguOS04LjlINDkwYzUgMCA4LjkgMy45IDguOSA4Ljl2ODkuMWMwIDUtMy45IDguOS04LjkgOC45aC04OS4xYy01IDAtOC45LTMuOS04LjktOC45di0yNi43aC0yNi43Yy03NS40IDAtODEuMS0xNDIuNS0xMjQuNy0xNDIuNUgxNDAuM2MtOC4xIDMwLjYtMzUuOSA1My41LTY5IDUzLjVDMzIgMzI3LjMgMCAyOTUuMyAwIDI1NnMzMi03MS4zIDcxLjMtNzEuM2MzMy4xIDAgNjEgMjIuOCA2OSA1My41IDM5LjEgMCA0My45IDkuNSA3NC42LTYwLjRDMjU1IDg4LjcgMjczIDk1LjcgMzIzLjggOTUuN2M3LjUtMjAuOSAyNy0zNS42IDUwLjQtMzUuNiAyOS41IDAgNTMuNSAyMy45IDUzLjUgNTMuNXMtMjMuOSA1My41LTUzLjUgNTMuNWMtMjMuNCAwLTQyLjktMTQuOC01MC40LTM1LjZIMjk0Yy0yOS4xIDAtNDQuMyA2Ny40LTY5LjYgMTA2LjloMzEwLjF2LTM1LjZjMC0zLjMgMS43LTYuMSA0LjUtNy44IDIuOC0xLjcgNi40LTEuNCA4LjkuM2w4OS4xIDUzLjVjMi44IDEuMSA0LjUgNC4xIDQuNSA3LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNwcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjAuMyAyNDEuN2MyNS44LTQxLjMgMTUuMi00OC44LTExLjctNDguOGgtMjdjLS4xIDAtMS41LTEuNC0xMC45IDgtMTEuMiA1LjYtMzcuOSA2LjMtMzcuOSA4LjcgMCA0LjUgNzAuMy0zLjEgODguMSAwIDkuNSAxLjUtMS41IDIwLjQtNC40IDMyLS41IDQuNSAyLjQgMi4zIDMuOC4xem0tMTEyLjEgMjIuNmM2NC0yMS4zIDk3LjMtMjMuOSAxMDItMjYuMiA0LjQtMi45LTQuNC02LjYtMjYuMi01LjgtNTEuNyAyLjItMTM3LjYgMzcuMS0xNzIuNiA1My45bC0zMC43LTkzLjNoMTk2LjZjLTIuNy0yOC4yLTE1Mi45LTIyLjYtMzM3LjktMjIuNkwyNyA0MTUuOGMxOTYuNC05Ny4zIDI1OC45LTEzMC4zIDMyMS4yLTE1MS41ek05NC43IDk2YzI1My4zIDUzLjcgMzMwIDY1LjcgMzMyLjEgODUuMiAzNi40IDAgNDUuOSAwIDUyLjQgNi42IDIxLjEgMTkuNy0xNC42IDY3LjctMTQuNiA2Ny43LTQuNCAyLjktNDA2LjQgMTYwLjItNDA2LjQgMTYwLjJoNDIzLjFMNTQ5IDk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzc3VubmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ni44IDI4NS4xbDUuNyAxNC40aC04LjJjLTEuMy0zLjItMy4xLTcuNy0zLjgtOS41LTIuNS02LjMtMS4xLTguNCAwLTEwIDEuOS0yLjcgMy4yLTQuNCAzLjYtNS4yIDAgMi4yLjggNS43IDIuNyAxMC4zem0yOTcuMyAxOC44Yy0yLjEgMTMuOC01LjcgMjcuMS0xMC41IDM5LjdsNDMgMjMuNC00NC44LTE4LjhjLTUuMyAxMy4yLTEyIDI1LjYtMTkuOSAzNy4ybDM0LjIgMzAuMi0zNi44LTI2LjRjLTguNCAxMS44LTE4IDIyLjYtMjguNyAzMi4zbDI0LjkgMzQuNy0yOC4xLTMxLjhjLTExIDkuNi0yMy4xIDE4LTM2LjEgMjUuMWwxNS43IDM3LjItMTkuMy0zNS4zYy0xMy4xIDYuOC0yNyAxMi4xLTQxLjYgMTUuOWw2LjcgMzguNC0xMC41LTM3LjRjLTE0LjMgMy40LTI5LjIgNS4zLTQ0LjUgNS40TDI1NiA1MTJsLTEuOS0zOC40Yy0xNS4zLS4xLTMwLjItMi00NC41LTUuM0wxOTkgNTA1LjZsNi43LTM4LjJjLTE0LjYtMy43LTI4LjYtOS4xLTQxLjctMTUuOGwtMTkuMiAzNS4xIDE1LjYtMzdjLTEzLTctMjUuMi0xNS40LTM2LjItMjUuMWwtMjcuOSAzMS42IDI0LjctMzQuNGMtMTAuNy05LjctMjAuNC0yMC41LTI4LjgtMzIuM2wtMzYuNSAyNi4yIDMzLjktMjkuOWMtNy45LTExLjYtMTQuNi0yNC4xLTIwLTM3LjNsLTQ0LjQgMTguN0w2Ny44IDM0NGMtNC44LTEyLjctOC40LTI2LjEtMTAuNS0zOS45bC01MSA5IDUwLjMtMTQuMmMtMS4xLTguNS0xLjctMTcuMS0xLjctMjUuOSAwLTQuNy4yLTkuNC41LTE0LjFMMCAyNTZsNTYtMi44YzEuMy0xMy4xIDMuOC0yNS44IDcuNS0zOC4xTDYuNCAxOTlsNTguOSAxMC40YzQtMTIgOS4xLTIzLjUgMTUuMi0zNC40bC01NS4xLTMwIDU4LjMgMjQuNkM5MCAxNTkgOTcuMiAxNDkuMiAxMDUuMyAxNDBMNTUuOCA5Ni40bDUzLjkgMzguN2M4LjEtOC42IDE3LTE2LjUgMjYuNi0yMy42bC00MC01NS42IDQ1LjYgNTEuNmM5LjUtNi42IDE5LjctMTIuMyAzMC4zLTE3LjJsLTI3LjMtNjQuOSAzMy44IDYyLjFjMTAuNS00LjQgMjEuNC03LjkgMzIuNy0xMC40TDE5OSA2LjRsMTkuNSA2OS4yYzExLTIuMSAyMi4zLTMuMiAzMy44LTMuNEwyNTYgMGwzLjYgNzIuMmMxMS41LjIgMjIuOCAxLjQgMzMuOCAzLjVMMzEzIDYuNGwtMTIuNCA3MC43YzExLjMgMi42IDIyLjIgNi4xIDMyLjYgMTAuNWwzMy45LTYyLjItMjcuNCA2NS4xYzEwLjYgNC45IDIwLjcgMTAuNyAzMC4yIDE3LjJsNDUuOC01MS44LTQwLjEgNTUuOWM5LjUgNy4xIDE4LjQgMTUgMjYuNSAyMy42bDU0LjItMzguOS00OS43IDQzLjljOCA5LjEgMTUuMiAxOC45IDIxLjUgMjkuNGw1OC43LTI0LjctNTUuNSAzMC4yYzYuMSAxMC45IDExLjEgMjIuMyAxNS4xIDM0LjNsNTkuMy0xMC40LTU3LjUgMTYuMmMzLjcgMTIuMiA2LjIgMjQuOSA3LjUgMzcuOUw1MTIgMjU2bC01NiAyLjhjLjMgNC42LjUgOS4zLjUgMTQuMSAwIDguNy0uNiAxNy4zLTEuNiAyNS44bDUwLjcgMTQuMy01MS41LTkuMXptLTIxLjgtMzFjMC05Ny41LTc5LTE3Ni41LTE3Ni41LTE3Ni41cy0xNzYuNSA3OS0xNzYuNSAxNzYuNSA3OSAxNzYuNSAxNzYuNSAxNzYuNSAxNzYuNS03OSAxNzYuNS0xNzYuNXptLTI0IDBjMCA4NC4zLTY4LjMgMTUyLjYtMTUyLjYgMTUyLjZzLTE1Mi42LTY4LjMtMTUyLjYtMTUyLjYgNjguMy0xNTIuNiAxNTIuNi0xNTIuNiAxNTIuNiA2OC4zIDE1Mi42IDE1Mi42ek0xOTUgMjQxYzAgMi4xIDEuMyAzLjggMy42IDUuMSAzLjMgMS45IDYuMiA0LjYgOC4yIDguMiAyLjgtNS43IDQuMy05LjUgNC4zLTExLjIgMC0yLjItMS4xLTQuNC0zLjItNy0yLjEtMi41LTMuMi01LjItMy4zLTcuNy02LjUgNi44LTkuNiAxMC45LTkuNiAxMi42em0tNDAuNy0xOWMwIDIuMSAxLjMgMy44IDMuNiA1LjEgMy41IDEuOSA2LjIgNC42IDguMiA4LjIgMi44LTUuNyA0LjMtOS41IDQuMy0xMS4yIDAtMi4yLTEuMS00LjQtMy4yLTctMi4xLTIuNS0zLjItNS4yLTMuMy03LjctNi41IDYuOC05LjYgMTAuOS05LjYgMTIuNnptLTE5IDBjMCAyLjEgMS4zIDMuOCAzLjYgNS4xIDMuMyAxLjkgNi4yIDQuNiA4LjIgOC4yIDIuOC01LjcgNC4zLTkuNSA0LjMtMTEuMiAwLTIuMi0xLjEtNC40LTMuMi03LTIuMS0yLjUtMy4yLTUuMi0zLjMtNy43LTYuNCA2LjgtOS42IDEwLjktOS42IDEyLjZ6bTIwNC45IDg3LjljLTguNC0zLTguNy02LjgtOC43LTE1LjZWMTgyYy04LjIgMTIuNS0xNC4yIDE4LjYtMTggMTguNiA2LjMgMTQuNCA5LjUgMjMuOSA5LjUgMjguM3Y2NC4zYzAgMi4yLTIuMiA2LjUtNC43IDYuNWgtMThjLTIuOC03LjUtMTAuMi0yNi45LTE1LjMtNDAuMy0yIDIuNS03LjIgOS4yLTEwLjcgMTMuNyAyLjQgMS42IDQuMSAzLjYgNS4yIDYuMyAyLjYgNi43IDYuNCAxNi41IDcuOSAyMC4yaC05LjJjLTMuOS0xMC40LTkuNi0yNS40LTExLjgtMzEuMS0yIDIuNS03LjIgOS4yLTEwLjcgMTMuNyAyLjQgMS42IDQuMSAzLjYgNS4yIDYuMy44IDIgMi44IDcuMyA0LjMgMTAuOUgyNTZjLTEuNS00LjEtNS42LTE0LjYtOC40LTIyLTIgMi41LTcuMiA5LjItMTAuNyAxMy43IDIuNSAxLjYgNC4zIDMuNiA1LjIgNi4zLjIuNi41IDEuNC42IDEuN0gyMjVjLTQuNi0xMy45LTExLjQtMjcuNy0xMS40LTM0LjEgMC0yLjIuMy01LjEgMS4xLTguMi04LjggMTAuOC0xNCAxNS45LTE0IDI1IDAgNy41IDEwLjQgMjguMyAxMC40IDMzLjMgMCAxLjctLjUgMy4zLTEuNCA0LjktOS42LTEyLjctMTUuNS0yMC43LTE4LjgtMjAuN2gtMTJsLTExLjItMjhjLTMuOC05LjYtNS43LTE2LTUuNy0xOC44IDAtMy44LjUtNy43IDEuNy0xMi4yLTEgMS4zLTMuNyA0LjctNS41IDcuMS0uOC0yLjEtMy4xLTcuNy00LjYtMTEuNS0yLjEgMi41LTcuNSA5LjEtMTEuMiAxMy42LjkgMi4zIDMuMyA4LjEgNC45IDEyLjItMi41IDMuMy05LjEgMTEuOC0xMy42IDE3LjctNCA1LjMtNS44IDEzLjMtMi43IDIxLjggMi41IDYuNyAyIDcuOS0xLjcgMTQuMUgxOTFjNS41IDAgMTQuMyAxNCAxNS41IDIyIDEzLjItMTYgMTUuNC0xOS42IDE2LjgtMjEuNmgxMDdjMy45IDAgNy4yLTEuOSA5LjktNS44em0yMC4xLTI2LjZWMTgxLjdjLTkgMTIuNS0xNS45IDE4LjYtMjAuNyAxOC42IDcuMSAxNC40IDEwLjcgMjMuOSAxMC43IDI4LjN2NjYuM2MwIDE3LjUgOC42IDIwLjQgMjQgMjAuNCA4LjEgMCAxMi41LS44IDEzLjctMi43LTQuMy0xLjYtNy42LTIuNS05LjktMy4zLTguMS0zLjItMTcuOC03LjQtMTcuOC0yNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWYWFkaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjUgMTQwLjdjMS41LTE3LjYgNC45LTUyLjcgNDkuOC01Mi43aDk4LjZjMjAuNyAwIDMyLjEtNy44IDMyLjEtMjEuNlY1NC4xYzAtMTIuMiA5LjMtMjIuMSAyMS41LTIyLjFTNDQ4IDQxLjkgNDQ4IDU0LjF2MzYuNWMwIDQyLjktMjEuNSA2Mi02Ni44IDYySDI4MC43Yy0zMC4xIDAtMzMgMTQuNy0zMyAyNy4xIDAgMS4zLS4xIDIuNS0uMiAzLjctLjcgMTIuMy0xMC45IDIyLjItMjMuNCAyMi4ycy0yMi43LTkuOC0yMy40LTIyLjJjLS4xLTEuMi0uMi0yLjQtLjItMy43IDAtMTIuMy0zLTI3LjEtMzMtMjcuMUg2Ni44Yy00NS4zIDAtNjYuOC0xOS4xLTY2LjgtNjJWNTQuMUMwIDQxLjkgOS40IDMyIDIxLjYgMzJzMjEuNSA5LjkgMjEuNSAyMi4xdjEyLjNDNDMuMSA4MC4yIDU0LjUgODggNzUuMiA4OGg5OC42YzQ0LjggMCA0OC4zIDM1LjEgNDkuOCA1Mi43aC45ek0yMjQgNDU2YzExLjUgMCAyMS40LTcgMjUuNy0xNi4zIDEuMS0xLjggOTcuMS0xNjkuNiA5OC4yLTE3MS40IDExLjktMTkuNi0zLjItNDQuMy0yNy4yLTQ0LjMtMTMuOSAwLTIzLjMgNi40LTI5LjggMjAuM0wyMjQgMzYybC02Ni45LTExNy43Yy02LjQtMTMuOS0xNS45LTIwLjMtMjkuOC0yMC4zLTI0IDAtMzkuMSAyNC42LTI3LjIgNDQuMyAxLjEgMS45IDk3LjEgMTY5LjYgOTguMiAxNzEuNCA0LjMgOS4zIDE0LjIgMTYuMyAyNS43IDE2LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlhY29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJoLTY0bC04MC43IDE5MmgtOTQuNUw2NCAzMkgwbDQ4IDExMkgwdjQ4aDY4LjVsMTMuOCAzMkgwdjQ4aDEwMi44TDE5MiA0ODBsODkuMi0yMDhIMzg0di00OGgtODIuM2wxMy44LTMySDM4NHYtNDhoLTQ4bDQ4LTExMnpNMTkyIDMzNmwtMjctNjRoNTRsLTI3IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWRlb1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODAuNyAzODEuMmMtNDIuNCA0Ni4yLTEyMCA0Ni42LTE2Mi40IDAtNjgtNzMuNi0xOS44LTE5Ni4xIDgxLjItMTk2LjEgMTMuMyAwIDI2LjYgMi4xIDM5LjEgNi43LTQuMyA4LjQtNy4zIDE3LjYtOC40IDI3LjEtOS43LTQuMS0yMC4yLTYtMzAuNy02LTQ4LjggMC04NC42IDQxLjctODQuNiA4OC45IDAgNDMgMjguNSA3OC43IDY5LjUgODUuOSA2MS41LTI0IDcyLjktMTE3LjYgNzIuOS0xNzUgMC03LjMgMC0xNC44LS42LTIyLjEtMTEuMi0zMi45LTI2LjYtNjQuNi00NC4yLTk0LjUgMjcuMSAxOC4zIDQxLjkgNjIuNSA0NC4yIDk0LjF2LjRjNy43IDIyLjUgMTEuOCA0Ni4yIDExLjggNzAgMCA1NC4xLTIxLjkgOTktNjguMyAxMjguMmwtMi40LjJjNTAgMSA4Ni4yLTM4LjYgODYuMi04Ny4yIDAtMTIuMi0yLjEtMjQuMy02LjktMzUuNyA5LjUtMS45IDE4LjUtNS42IDI2LjQtMTAuNSAxNS4zIDM2LjYgMTIuNiA4Ny4zLTIyLjggMTI1LjZ6TTMwOSAyMzMuN2MtMTMuMyAwLTI1LjEtNy4xLTM0LjQtMTYuMSAyMS45LTEyIDQ5LjYtMzAuNyA2Mi4zLTUzIDEuNS0zIDQuMS04LjYgNC41LTEyLTEyLjUgMjcuOS00NC4yIDQ5LjgtNzMuOSA1Ni43LTQuNy03LjMtNy41LTE1LjUtNy41LTI0LjMgMC0xMC4zIDUuMi0yNC4xIDEyLjktMzEuNiAyMS42LTIwLjUgNTMtOC41IDcyLjQtNTAgMzIuNSA0Ni4yIDEzLjEgMTMwLjMtMzYuMyAxMzAuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWFkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjc2LjIgMTUwLjV2LjdDMjU4LjMgOTguNiAyMzMuNiA0Ny44IDIwNS40IDBjNDMuMyAyOS4yIDY3IDEwMCA3MC44IDE1MC41em0zMi43IDEyMS43YzcuNiAxOC4yIDExIDM3LjUgMTEgNTcgMCA3Ny43LTU3LjggMTQxLTEzNy44IDEzOS40bDMuOC0uM2M3NC4yLTQ2LjcgMTA5LjMtMTE4LjYgMTA5LjMtMjA1LjEgMC0zOC4xLTYuNS03NS45LTE4LjktMTEyIDEgMTEuNyAxIDIzLjcgMSAzNS40IDAgOTEuOC0xOC4xIDI0MS42LTExNi42IDI4MEM5NSA0NTUuMiA0OS40IDM5OCA0OS40IDMyOS4yYzAtNzUuNiA1Ny40LTE0Mi4zIDEzNS40LTE0Mi4zIDE2LjggMCAzMy43IDMuMSA0OS4xIDkuNiAxLjctMTUuMSA2LjUtMjkuOSAxMy40LTQzLjMtMTkuOS03LjItNDEuMi0xMC43LTYyLjUtMTAuNy0xNjEuNSAwLTIzOC43IDE5NS45LTEyOS45IDMxMy43IDY3LjkgNzQuNiAxOTIgNzMuOSAyNTkuOCAwIDU2LjYtNjEuMyA2MC45LTE0Mi40IDM2LjQtMjAxLTEyLjcgOC0yNy4xIDEzLjktNDIuMiAxN3pNNDE4LjEgMTEuN2MtMzEgNjYuNS04MS4zIDQ3LjItMTE1LjggODAuMS0xMi40IDEyLTIwLjYgMzQtMjAuNiA1MC41IDAgMTQuMSA0LjUgMjcuMSAxMiAzOC44IDQ3LjQtMTEgOTguMy00NiAxMTguMi05MC43LS43IDUuNS00LjggMTQuNC03LjIgMTkuMi0yMC4zIDM1LjctNjQuNiA2NS42LTk5LjcgODQuOSAxNC44IDE0LjQgMzMuNyAyNS44IDU1IDI1LjggNzkgMCAxMTAuMS0xMzQuNiA1OC4xLTIwOC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NCA0OS45QzQzMS4zIDM4LjIgMzc5LjkuOSAyNjUuMy40YzAgMC0xMzUuMS04LjEtMjAwLjkgNTIuM0MyNy44IDg5LjMgMTQuOSAxNDMgMTMuNSAyMDkuNWMtMS40IDY2LjUtMy4xIDE5MS4xIDExNyAyMjQuOWguMWwtLjEgNTEuNnMtLjggMjAuOSAxMyAyNS4xYzE2LjYgNS4yIDI2LjQtMTAuNyA0Mi4zLTI3LjggOC43LTkuNCAyMC43LTIzLjIgMjkuOC0zMy43IDgyLjIgNi45IDE0NS4zLTguOSAxNTIuNS0xMS4yIDE2LjYtNS40IDExMC41LTE3LjQgMTI1LjctMTQyIDE1LjgtMTI4LjYtNy42LTIwOS44LTQ5LjgtMjQ2LjV6TTQ1Ny45IDI4N2MtMTIuOSAxMDQtODkgMTEwLjYtMTAzIDExNS4xLTYgMS45LTYxLjUgMTUuNy0xMzEuMiAxMS4yIDAgMC01MiA2Mi43LTY4LjIgNzktNS4zIDUuMy0xMS4xIDQuOC0xMS01LjcgMC02LjkuNC04NS43LjQtODUuNy0uMSAwLS4xIDAgMCAwLTEwMS44LTI4LjItOTUuOC0xMzQuMy05NC43LTE4OS44IDEuMS01NS41IDExLjYtMTAxIDQyLjYtMTMxLjYgNTUuNy01MC41IDE3MC40LTQzIDE3MC40LTQzIDk2LjkuNCAxNDMuMyAyOS42IDE1NC4xIDM5LjQgMzUuNyAzMC42IDUzLjkgMTAzLjggNDAuNiAyMTEuMXptLTEzOS04MC44Yy40IDguNi0xMi41IDkuMi0xMi45LjYtMS4xLTIyLTExLjQtMzIuNy0zMi42LTMzLjktOC42LS41LTcuOC0xMy40LjctMTIuOSAyNy45IDEuNSA0My40IDE3LjUgNDQuOCA0Ni4yem0yMC4zIDExLjNjMS00Mi40LTI1LjUtNzUuNi03NS44LTc5LjMtOC41LS42LTcuNi0xMy41LjktMTIuOSA1OCA0LjIgODguOSA0NC4xIDg3LjggOTIuNS0uMSA4LjYtMTMuMSA4LjItMTIuOS0uM3ptNDcgMTMuNGMuMSA4LjYtMTIuOSA4LjctMTIuOS4xLS42LTgxLjUtNTQuOS0xMjUuOS0xMjAuOC0xMjYuNC04LjUtLjEtOC41LTEyLjkgMC0xMi45IDczLjcuNSAxMzMgNTEuNCAxMzMuNyAxMzkuMnpNMzc0LjkgMzI5di4yYy0xMC44IDE5LTMxIDQwLTUxLjggMzMuM2wtLjItLjNjLTIxLjEtNS45LTcwLjgtMzEuNS0xMDIuMi01Ni41LTE2LjItMTIuOC0zMS0yNy45LTQyLjQtNDIuNC0xMC4zLTEyLjktMjAuNy0yOC4yLTMwLjgtNDYuNi0yMS4zLTM4LjUtMjYtNTUuNy0yNi01NS43LTYuNy0yMC44IDE0LjItNDEgMzMuMy01MS44aC4yYzkuMi00LjggMTgtMy4yIDIzLjkgMy45IDAgMCAxMi40IDE0LjggMTcuNyAyMi4xIDUgNi44IDExLjcgMTcuNyAxNS4yIDIzLjggNi4xIDEwLjkgMi4zIDIyLTMuNyAyNi42bC0xMiA5LjZjLTYuMSA0LjktNS4zIDE0LTUuMyAxNHMxNy44IDY3LjMgODQuMyA4NC4zYzAgMCA5LjEuOCAxNC01LjNsOS42LTEyYzQuNi02IDE1LjctOS44IDI2LjYtMy43IDE0LjcgOC4zIDMzLjQgMjEuMiA0NS44IDMyLjkgNyA1LjcgOC42IDE0LjQgMy44IDIzLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2LjIgMTQ5LjZjLTEuNCAzMS4xLTIzLjIgNzMuOC02NS4zIDEyNy45LTQzLjUgNTYuNS04MC4zIDg0LjgtMTEwLjQgODQuOC0xOC43IDAtMzQuNC0xNy4yLTQ3LjMtNTEuNi0yNS4yLTkyLjMtMzUuOS0xNDYuNC01Ni43LTE0Ni40LTIuNCAwLTEwLjggNS0yNS4xIDE1LjFMNjQgMTkyYzM2LjktMzIuNCA3Mi4xLTY4LjQgOTQuMS03MC40IDI0LjktMi40IDQwLjIgMTQuNiA0NiA1MS4xIDIwLjUgMTI5LjYgMjkuNiAxNDkuMiA2Ni44IDkwLjUgMTMuNC0yMS4yIDIwLjYtMzcuMiAyMS41LTQ4LjMgMy40LTMyLjgtMjUuNi0zMC42LTQ1LjItMjIuMiAxNS43LTUxLjUgNDUuOC03Ni41IDkwLjEtNzUuMSAzMi45IDEgNDguNCAyMi40IDQ2LjUgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW9WIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0Ny44IDE1My42Yy0yIDQzLjYtMzIuNCAxMDMuMy05MS40IDE3OS4xLTYwLjkgNzkuMi0xMTIuNCAxMTguOC0xNTQuNiAxMTguOC0yNi4xIDAtNDguMi0yNC4xLTY2LjMtNzIuM0MxMDAuMyAyNTAgODUuMyAxNzQuMyA1Ni4yIDE3NC4zYy0zLjQgMC0xNS4xIDcuMS0zNS4yIDIxLjFMMCAxNjguMmM1MS42LTQ1LjMgMTAwLjktOTUuNyAxMzEuOC05OC41IDM0LjktMy40IDU2LjMgMjAuNSA2NC40IDcxLjUgMjguNyAxODEuNSA0MS40IDIwOC45IDkzLjYgMTI2LjcgMTguNy0yOS42IDI4LjgtNTIuMSAzMC4yLTY3LjYgNC44LTQ1LjktMzUuOC00Mi44LTYzLjMtMzEgMjItNzIuMSA2NC4xLTEwNy4xIDEyNi4yLTEwNS4xIDQ1LjggMS4yIDY3LjUgMzEuMSA2NC45IDg5LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmltZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAzLjIgMzJINDQuOEMyMC4xIDMyIDAgNTIuMSAwIDc2Ljh2MzU4LjRDMCA0NTkuOSAyMC4xIDQ4MCA0NC44IDQ4MGgzNTguNGMyNC43IDAgNDQuOC0yMC4xIDQ0LjgtNDQuOFY3Ni44YzAtMjQuNy0yMC4xLTQ0LjgtNDQuOC00NC44ek0zNzcgMTgwLjhjLTEuNCAzMS41LTIzLjQgNzQuNy02NiAxMjkuNC00NCA1Ny4yLTgxLjMgODUuOC0xMTEuNyA4NS44LTE4LjkgMC0zNC44LTE3LjQtNDcuOS01Mi4zLTI1LjUtOTMuMy0zNi40LTE0OC01Ny40LTE0OC0yLjQgMC0xMC45IDUuMS0yNS40IDE1LjJsLTE1LjItMTkuNmMzNy4zLTMyLjggNzIuOS02OS4yIDk1LjItNzEuMiAyNS4yLTIuNCA0MC43IDE0LjggNDYuNSA1MS43IDIwLjcgMTMxLjIgMjkuOSAxNTEgNjcuNiA5MS42IDEzLjUtMjEuNCAyMC44LTM3LjcgMjEuOC00OC45IDMuNS0zMy4yLTI1LjktMzAuOS00NS44LTIyLjQgMTUuOS01Mi4xIDQ2LjMtNzcuNCA5MS4yLTc2IDMzLjMuOSA0OSAyMi41IDQ3LjEgNjQuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAyNTQuN3Y1Mi4xYy0xOC40IDQuMi0zNi45IDYuMS01Mi4xIDYuMS0zNi45IDc3LjQtMTAzIDE0My44LTEyNS4xIDE1Ni4yLTE0IDcuOS0yNy4xIDguNC00Mi43LS44QzEzNyA0NTIgMzQuMiAzNjcuNyAwIDEwMi43aDc0LjVDOTMuMiAyNjEuOCAxMzkgMzQzLjQgMTg5LjMgNDA0LjVjMjcuOS0yNy45IDU0LjgtNjUuMSA3NS42LTEwNi45LTQ5LjgtMjUuMy04MC4xLTgwLjktODAuMS0xNDUuNiAwLTY1LjYgMzcuNy0xMTUuMSAxMDIuMi0xMTUuMSAxMTQuOSAwIDEwNi4yIDEyNy45IDgxLjYgMTgxLjUgMCAwLTQ2LjQgOS4yLTYzLjUtMjAuNSAzLjQtMTEuMyA4LjItMzAuOCA4LjItNDguNSAwLTMxLjMtMTEuMy00Ni42LTI4LjQtNDYuNi0xOC4yIDAtMzAuOCAxNy4xLTMwLjggNTAgLjEgNzkuMiA1OS40IDExOC43IDEyOS45IDEwMS45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NSAxMTcuN2MzLjctMTIuNSAwLTIxLjctMTcuOC0yMS43aC01OC45Yy0xNSAwLTIxLjkgNy45LTI1LjYgMTYuNyAwIDAtMzAgNzMuMS03Mi40IDEyMC41LTEzLjcgMTMuNy0yMCAxOC4xLTI3LjUgMTguMS0zLjcgMC05LjQtNC40LTkuNC0xNi45VjExNy43YzAtMTUtNC4yLTIxLjctMTYuNi0yMS43aC05Mi42Yy05LjQgMC0xNSA3LTE1IDEzLjUgMCAxNC4yIDIxLjIgMTcuNSAyMy40IDU3LjV2ODYuOGMwIDE5LTMuNCAyMi41LTEwLjkgMjIuNS0yMCAwLTY4LjYtNzMuNC05Ny40LTE1Ny40LTUuOC0xNi4zLTExLjUtMjIuOS0yNi42LTIyLjlIMzguOGMtMTYuOCAwLTIwLjIgNy45LTIwLjIgMTYuNyAwIDE1LjYgMjAgOTMuMSA5My4xIDE5NS41QzE2MC40IDM3OC4xIDIyOSA0MTYgMjkxLjQgNDE2YzM3LjUgMCA0Mi4xLTguNCA0Mi4xLTIyLjkgMC02Ni44LTMuNC03My4xIDE1LjQtNzMuMSA4LjcgMCAyMy43IDQuNCA1OC43IDM4LjEgNDAgNDAgNDYuNiA1Ny45IDY5IDU3LjloNTguOWMxNi44IDAgMjUuMy04LjQgMjAuNC0yNS0xMS4yLTM0LjktODYuOS0xMDYuNy05MC4zLTExMS41LTguNy0xMS4yLTYuMi0xNi4yIDAtMjYuMi4xLS4xIDcyLTEwMS4zIDc5LjQtMTM1LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm52IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNC45IDM1MmMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRMMi42IDIxMC4xUy03LjggMTkyIDEzIDE5MmgzMi44YzEwLjQgMCAxMy4yIDguNyAxOC44IDE4LjFsMzYuNyA3NC41czUuMiAxMy4xIDIxLjEgMTMuMSAyMS4xLTEzLjEgMjEuMS0xMy4xbDM2LjctNzQuNWM1LjYtOS41IDguNC0xOC4xIDE4LjgtMTguMWgzMi44YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS44IDExMS41UzE3NC4yIDM1MiAxNDAgMzUyaC0zNS4xem0zOTUgMGMtMzQuMSAwLTQ2LjQtMzAuNC00Ni40LTMwLjRsLTU1LjktMTExLjVTMzg3LjIgMTkyIDQwOCAxOTJoMzIuOGMxMC40IDAgMTMuMiA4LjcgMTguOCAxOC4xbDM2LjcgNzQuNXM1LjIgMTMuMSAyMS4xIDEzLjEgMjEuMS0xMy4xIDIxLjEtMTMuMWwzNi44LTc0LjVjNS42LTkuNSA4LjQtMTguMSAxOC44LTE4LjFINjI3YzIwLjggMCAxMC40IDE4LjEgMTAuNCAxOC4xbC01NS45IDExMS41UzU2OS4zIDM1MiA1MzUuMSAzNTJoLTM1LjJ6TTMzNy42IDE5MmMzNC4xIDAgNDYuNCAzMC40IDQ2LjQgMzAuNGw1NS45IDExMS41czEwLjQgMTguMS0xMC40IDE4LjFoLTMyLjhjLTEwLjQgMC0xMy4yLTguNy0xOC44LTE4LjFsLTM2LjctNzQuNXMtNS4yLTEzLjEtMjEuMS0xMy4xYy0xNS45IDAtMjEuMSAxMy4xLTIxLjEgMTMuMWwtMzYuNyA3NC41Yy01LjYgOS40LTguNCAxOC4xLTE4LjggMTguMWgtMzIuOWMtMjAuOCAwLTEwLjQtMTguMS0xMC40LTE4LjFsNTUuOS0xMTEuNXMxMi4yLTMwLjQgNDYuNC0zMC40aDM1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVnVlanMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzU2LjkgNjQuM0gyODBsLTU2IDg4LjYtNDgtODguNkgwTDIyNCA0NDggNDQ4IDY0LjNoLTkxLjF6bS0zMDEuMiAzMmg1My44TDIyNCAyOTQuNSAzMzguNCA5Ni4zaDUzLjhMMjI0IDM4NC41IDU1LjcgOTYuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYXRjaG1hbk1vbml0b3JpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LDE2QzEyMy40NTIsMTYsMTYsMTIzLjQ1MiwxNiwyNTZTMTIzLjQ1Miw0OTYsMjU2LDQ5Niw0OTYsMzg4LjU0OCw0OTYsMjU2LDM4OC41NDgsMTYsMjU2LDE2Wk0xMjEuNjksNDI5LjEyMkM3MC4wNTYsMzg4Ljk3MiwzNi43NDEsMzI2LjMyMiwzNi43NDEsMjU2YTIxOC41MTksMjE4LjUxOSwwLDAsMSw5LjU4Ny02NC4xMjJsMTAyLjktMTcuODk1LS4xMjEsMTAuOTY3LTEzLjk0MywyLjAxM3MtLjE0NCwxMi41LS4xNDQsMTkuNTQ5YTEyLjc3OCwxMi43NzgsMCwwLDAsNC44ODcsMTAuMzQ5bDkuNDY4LDcuNFptMTA1LjY5Mi0yODMuMjcsOC40OC03LjYxOHM2LjkzNC01LjM4LS4xNDMtOS4zNDRjLTcuMTg4LTQuMDI0LTM5LjUzLTM0LjUtMzkuNTMtMzQuNS01LjM0OC01LjQ3Ny04LjI1Ny03LjM0Ny0xNS40NiwwLDAsMC0zMi4zNDIsMzAuNDc0LTM5LjUyOSwzNC41LTcuMDc4LDMuOTY0LS4xNDQsOS4zNDQtLjE0NCw5LjM0NGw4LjQ4MSw3LjYxOC0uMDQ4LDQuMzY5TDc1Ljk4MiwxMzEuMDQ1YzM5LjY0NC01Ni45MzgsMTA1LjUzMi05NC4zLDE4MC4wMTgtOTQuM0EyMTguNzU0LDIxOC43NTQsMCwwLDEsNDIwLjkzNCwxMTEuNzdsLTE5My41MTIsMzcuN1ptMzQuMDYzLDMyOS4yNjktMzMuOS0yNTAuODU3LDkuNDY3LTcuNGExMi43NzgsMTIuNzc4LDAsMCwwLDQuODg4LTEwLjM0OWMwLTcuMDQ0LS4xNDQtMTkuNTQ5LS4xNDQtMTkuNTQ5bC0xMy45NDMtMi4wMTMtLjExNi0xMC40NzQsMjQxLjcxMSwzMS4zOTFBMjE4Ljg3MiwyMTguODcyLDAsMCwxLDQ3NS4yNTksMjU2QzQ3NS4yNTksMzc1LjA3NCwzNzkuODMxLDQ3Mi4yMTIsMjYxLjQ0NSw0NzUuMTIxWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjE3IDIwMS42N0M1MTYuNjkgMjg3LjUzIDQ3MS4yMyAzNjkuNTkgMzg5IDQwOS44YzEzIDM0LjEtMTIuNCA3MC4yLTQ4LjMyIDcwLjJhNTEuNjggNTEuNjggMCAwIDEtNTEuNTctNDljLTYuNDQuMTktNjQuMiAwLTc2LjMzLS42NEE1MS42OSA1MS42OSAwIDAgMSAxNTkgNDc5LjkyYy0zMy44Ni0xLjM2LTU3Ljk1LTM0Ljg0LTQ3LTY3LjkyLTM3LjIxLTEzLjExLTcyLjU0LTM0Ljg3LTk5LjYyLTcwLjgtMTMtMTcuMjgtLjQ4LTQxLjggMjAuODQtNDEuOCA0Ni4zMSAwIDMyLjIyLTU0LjE3IDQzLjE1LTExMC4yNkM5NC44IDk1LjIgMTkzLjEyIDMyIDI4OC4wOSAzMmMxMDIuNDggMCAxOTcuMTUgNzAuNjcgMjE0LjA4IDE2OS42N3pNMzczLjUxIDM4OC4yOGM0Mi0xOS4xOCA4MS4zMy01Ni43MSA5Ni4yOS0xMDIuMTQgNDAuNDgtMTIzLjA5LTY0LjE1LTIyOC0xODEuNzEtMjI4LTgzLjQ1IDAtMTcwLjMyIDU1LjQyLTE4Ni4wNyAxMzYtOS41MyA0OC45MSA1IDEzMS4zNS02OC43NSAxMzEuMzVDNTguMjEgMzU4LjYgOTEuNiAzNzguMTEgMTI3IDM4OS41NGMyNC42Ni0yMS44IDYzLjg3LTE1LjQ3IDc5LjgzIDE0LjM0IDE0LjIyIDEgNzkuMTkgMS4xOCA4Ny45LjgyYTUxLjY5IDUxLjY5IDAgMCAxIDc4Ljc4LTE2LjQyek0yMDUuMTIgMTg3LjEzYzAtMzQuNzQgNTAuODQtMzQuNzUgNTAuODQgMHMtNTAuODQgMzQuNzQtNTAuODQgMHptMTE2LjU3IDBjMC0zNC43NCA1MC44Ni0zNC43NSA1MC44NiAwcy01MC44NiAzNC43NS01MC44NiAwem0tMTIyLjYxIDcwLjY5Yy0zLjQ0LTE2Ljk0IDIyLjE4LTIyLjE4IDI1LjYyLTUuMjFsLjA2LjI4YzQuMTQgMjEuNDIgMjkuODUgNDQgNjQuMTIgNDMuMDcgMzUuNjgtLjk0IDU5LjI1LTIyLjIxIDY0LjExLTQyLjc3IDQuNDYtMTYuMDUgMjguNi0xMC4zNiAyNS40NyA2LTUuMjMgMjIuMTgtMzEuMjEgNjItOTEuNDYgNjIuOS00Mi41NSAwLTgwLjg4LTI3Ljg0LTg3LjktNjQuMjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VlYmx5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyNS4wOSA2NS44M2MtMzkuODggMC03My4yOCAyNS43My04My42NiA2NC4zMy0xOC4xNi01OC4wNi02NS41LTY0LjMzLTg0Ljk1LTY0LjMzLTE5Ljc4IDAtNjYuOCA2LjI4LTg1LjI4IDY0LjMzLTEwLjM4LTM4LjYtNDMuNDUtNjQuMzMtODMuNjYtNjQuMzNDMzguNTkgNjUuODMgMCA5OS43MiAwIDE0My4wM2MwIDI4Ljk2IDQuMTggMzMuMjcgNzcuMTcgMjMzLjQ4IDIyLjM3IDYwLjU3IDY3Ljc3IDY5LjM1IDkyLjc0IDY5LjM1IDM5LjIzIDAgNzAuMDQtMTkuNDYgODUuOTMtNTMuOTggMTUuODkgMzQuODMgNDYuNjkgNTQuMjkgODUuOTMgNTQuMjkgMjQuOTcgMCA3MC4zNi05LjEgOTIuNzQtNjkuNjcgNzYuNTUtMjA4LjY1IDc3LjUtMjA1LjU4IDc3LjUtMjI3LjIuNjMtNDguMzItMzYuMDEtODMuNDctODYuOTItODMuNDd6bTI2LjM0IDExNC44MWwtNjUuNTcgMTc2LjQ0Yy03LjkyIDIxLjQ5LTIxLjIyIDM3LjIyLTQ2LjI0IDM3LjIyLTIzLjQ0IDAtMzcuMzgtMTIuNDEtNDQuMDMtMzMuOWwtMzkuMjgtMTE3LjQyaC0uOTVMMjE2LjA4IDM2MC40Yy02Ljk2IDIxLjUtMjAuOSAzMy42LTQ0LjAyIDMzLjYtMjUuMDIgMC0zOC4zMy0xNS43NC00Ni4yNC0zNy4yMkw2MC44OCAxODEuNTVjLTUuMzgtMTQuODMtNy45Mi0yMy45MS03LjkyLTM0LjUgMC0xNi4zNCAxNS44NC0yOS4zNiAzOC4zMy0yOS4zNiAxOC42OSAwIDMxLjk5IDExLjggMzYuMTEgMjkuMDVsNDQuMDMgMTM5LjgyaC45NWw0NC42Ni0xMzYuNzljNi4wMi0xOS42NyAxNi40Ny0zMi4wOCAzOC45Ni0zMi4wOHMzMi45NCAxMi4xMSAzOC45NiAzMi4wOGw0NC42NiAxMzYuNzloLjk1bDQ0LjAzLTEzOS44MmM0LjEyLTE3LjI1IDE3LjQyLTI5LjA1IDM2LjExLTI5LjA1IDIyLjE3IDAgMzguMzMgMTMuMzIgMzguMzMgMzUuNzEtLjMyIDcuODctNC4xMiAxNi4wNC03LjYxIDI3LjI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdlaWJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwNyAxNzcuNmM3LjYtMjQtMTMuNC00Ni44LTM3LjQtNDEuNy0yMiA0LjgtMjguOC0yOC4xLTcuMS0zMi44IDUwLjEtMTAuOSA5Mi4zIDM3LjEgNzYuNSA4NC44LTYuOCAyMS4yLTM4LjggMTAuOC0zMi0xMC4zek0yMTQuOCA0NDYuN0MxMDguNSA0NDYuNyAwIDM5NS4zIDAgMzEwLjRjMC00NC4zIDI4LTk1LjQgNzYuMy0xNDMuN0MxNzYgNjcgMjc5LjUgNjUuOCAyNDkuOSAxNjFjLTQgMTMuMSAxMi4zIDUuNyAxMi4zIDYgNzkuNS0zMy42IDE0MC41LTE2LjggMTE0IDUxLjQtMy43IDkuNCAxLjEgMTAuOSA4LjMgMTMuMSAxMzUuNyA0Mi4zIDM0LjggMjE1LjItMTY5LjcgMjE1LjJ6bTE0My43LTE0Ni4zYy01LjQtNTUuNy03OC41LTk0LTE2My40LTg1LjctODQuOCA4LjYtMTQ4LjggNjAuMy0xNDMuNCAxMTZzNzguNSA5NCAxNjMuNCA4NS43Yzg0LjgtOC42IDE0OC44LTYwLjMgMTQzLjQtMTE2ek0zNDcuOSAzNS4xYy0yNS45IDUuNi0xNi44IDQzLjcgOC4zIDM4LjMgNzIuMy0xNS4yIDEzNC44IDUyLjggMTExLjcgMTI0LTcuNCAyNC4yIDI5LjEgMzcgMzcuNCAxMiAzMS45LTk5LjgtNTUuMS0xOTUuOS0xNTcuNC0xNzQuM3ptLTc4LjUgMzExYy0xNy4xIDM4LjgtNjYuOCA2MC0xMDkuMSA0Ni4zLTQwLjgtMTMuMS01OC01My40LTQwLjMtODkuNyAxNy43LTM1LjQgNjMuMS01NS40IDEwMy40LTQ1LjEgNDIgMTAuOCA2My4xIDUwLjIgNDYgODguNXptLTg2LjMtMzBjLTEyLjktNS40LTMwIC4zLTM4IDEyLjktOC4zIDEyLjktNC4zIDI4IDguNiAzNCAxMy4xIDYgMzAuOC4zIDM5LjEtMTIuOSA4LTEzLjEgMy43LTI4LjMtOS43LTM0em0zMi42LTEzLjRjLTUuMS0xLjctMTEuNC42LTE0LjMgNS40LTIuOSA1LjEtMS40IDEwLjYgMy43IDEyLjkgNS4xIDIgMTEuNy0uMyAxNC42LTUuNCAyLjgtNS4yIDEuMS0xMC45LTQtMTIuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWl4aW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg1LjIgMTY3LjZjNi40IDAgMTIuNi4zIDE4LjggMS4xQzM4Ny40IDkwLjMgMzAzLjMgMzIgMjA3LjcgMzIgMTAwLjUgMzIgMTMgMTA0LjggMTMgMTk3LjRjMCA1My40IDI5LjMgOTcuNSA3Ny45IDEzMS42bC0xOS4zIDU4LjYgNjgtMzQuMWMyNC40IDQuOCA0My44IDkuNyA2OC4yIDkuNyA2LjIgMCAxMi4xLS4zIDE4LjMtLjgtNC0xMi45LTYuMi0yNi42LTYuMi00MC44LS4xLTg0LjkgNzIuOS0xNTQgMTY1LjMtMTU0em0tMTA0LjUtNTIuOWMxNC41IDAgMjQuMiA5LjcgMjQuMiAyNC40IDAgMTQuNS05LjcgMjQuMi0yNC4yIDI0LjItMTQuOCAwLTI5LjMtOS43LTI5LjMtMjQuMi4xLTE0LjcgMTQuNi0yNC40IDI5LjMtMjQuNHptLTEzNi40IDQ4LjZjLTE0LjUgMC0yOS4zLTkuNy0yOS4zLTI0LjIgMC0xNC44IDE0LjgtMjQuNCAyOS4zLTI0LjQgMTQuOCAwIDI0LjQgOS43IDI0LjQgMjQuNCAwIDE0LjYtOS42IDI0LjItMjQuNCAyNC4yek01NjMgMzE5LjRjMC03Ny45LTc3LjktMTQxLjMtMTY1LjQtMTQxLjMtOTIuNyAwLTE2NS40IDYzLjQtMTY1LjQgMTQxLjNTMzA1IDQ2MC43IDM5Ny42IDQ2MC43YzE5LjMgMCAzOC45LTUuMSA1OC42LTkuOWw1My40IDI5LjMtMTQuOC00OC42QzUzNCA0MDIuMSA1NjMgMzYzLjIgNTYzIDMxOS40em0tMjE5LjEtMjQuNWMtOS43IDAtMTkuMy05LjctMTkuMy0xOS42IDAtOS43IDkuNy0xOS4zIDE5LjMtMTkuMyAxNC44IDAgMjQuNCA5LjcgMjQuNCAxOS4zIDAgMTAtOS43IDE5LjYtMjQuNCAxOS42em0xMDcuMSAwYy05LjcgMC0xOS4zLTkuNy0xOS4zLTE5LjYgMC05LjcgOS43LTE5LjMgMTkuMy0xOS4zIDE0LjUgMCAyNC40IDkuNyAyNC40IDE5LjMuMSAxMC05LjkgMTkuNi0yNC40IDE5LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2hhdHNhcHBTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEyMi44Yy03Mi43IDAtMTMxLjggNTkuMS0xMzEuOSAxMzEuOCAwIDI0LjkgNyA0OS4yIDIwLjIgNzAuMWwzLjEgNS0xMy4zIDQ4LjYgNDkuOS0xMy4xIDQuOCAyLjljMjAuMiAxMiA0My40IDE4LjQgNjcuMSAxOC40aC4xYzcyLjYgMCAxMzMuMy01OS4xIDEzMy4zLTEzMS44IDAtMzUuMi0xNS4yLTY4LjMtNDAuMS05My4yLTI1LTI1LTU4LTM4LjctOTMuMi0zOC43em03Ny41IDE4OC40Yy0zLjMgOS4zLTE5LjEgMTcuNy0yNi43IDE4LjgtMTIuNiAxLjktMjIuNC45LTQ3LjUtOS45LTM5LjctMTcuMi02NS43LTU3LjItNjcuNy01OS44LTItMi42LTE2LjItMjEuNS0xNi4yLTQxczEwLjItMjkuMSAxMy45LTMzLjFjMy42LTQgNy45LTUgMTAuNi01IDIuNiAwIDUuMyAwIDcuNi4xIDIuNC4xIDUuNy0uOSA4LjkgNi44IDMuMyA3LjkgMTEuMiAyNy40IDEyLjIgMjkuNHMxLjcgNC4zLjMgNi45Yy03LjYgMTUuMi0xNS43IDE0LjYtMTEuNiAyMS42IDE1LjMgMjYuMyAzMC42IDM1LjQgNTMuOSA0Ny4xIDQgMiA2LjMgMS43IDguNi0xIDIuMy0yLjYgOS45LTExLjYgMTIuNS0xNS41IDIuNi00IDUuMy0zLjMgOC45LTIgMy42IDEuMyAyMy4xIDEwLjkgMjcuMSAxMi45czYuNiAzIDcuNiA0LjZjLjkgMS45LjkgOS45LTIuNCAxOS4xek00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMjMuOSA0MTMuMmMtMjYuNiAwLTUyLjctNi43LTc1LjgtMTkuM0w2NCA0MTZsMjIuNS04Mi4yYy0xMy45LTI0LTIxLjItNTEuMy0yMS4yLTc5LjNDNjUuNCAxNjcuMSAxMzYuNSA5NiAyMjMuOSA5NmM0Mi40IDAgODIuMiAxNi41IDExMi4yIDQ2LjUgMjkuOSAzMCA0Ny45IDY5LjggNDcuOSAxMTIuMiAwIDg3LjQtNzIuNyAxNTguNS0xNjAuMSAxNTguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaGF0c2FwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODAuOSA5Ny4xQzMzOSA1NS4xIDI4My4yIDMyIDIyMy45IDMyYy0xMjIuNCAwLTIyMiA5OS42LTIyMiAyMjIgMCAzOS4xIDEwLjIgNzcuMyAyOS42IDExMUwwIDQ4MGwxMTcuNy0zMC45YzMyLjQgMTcuNyA2OC45IDI3IDEwNi4xIDI3aC4xYzEyMi4zIDAgMjI0LjEtOTkuNiAyMjQuMS0yMjIgMC01OS4zLTI1LjItMTE1LTY3LjEtMTU3em0tMTU3IDM0MS42Yy0zMy4yIDAtNjUuNy04LjktOTQtMjUuN2wtNi43LTQtNjkuOCAxOC4zTDcyIDM1OS4ybC00LjQtN2MtMTguNS0yOS40LTI4LjItNjMuMy0yOC4yLTk4LjIgMC0xMDEuNyA4Mi44LTE4NC41IDE4NC42LTE4NC41IDQ5LjMgMCA5NS42IDE5LjIgMTMwLjQgNTQuMSAzNC44IDM0LjkgNTYuMiA4MS4yIDU2LjEgMTMwLjUgMCAxMDEuOC04NC45IDE4NC42LTE4Ni42IDE4NC42em0xMDEuMi0xMzguMmMtNS41LTIuOC0zMi44LTE2LjItMzcuOS0xOC01LjEtMS45LTguOC0yLjgtMTIuNSAyLjgtMy43IDUuNi0xNC4zIDE4LTE3LjYgMjEuOC0zLjIgMy43LTYuNSA0LjItMTIgMS40LTMyLjYtMTYuMy01NC0yOS4xLTc1LjUtNjYtNS43LTkuOCA1LjctOS4xIDE2LjMtMzAuMyAxLjgtMy43LjktNi45LS41LTkuNy0xLjQtMi44LTEyLjUtMzAuMS0xNy4xLTQxLjItNC41LTEwLjgtOS4xLTkuMy0xMi41LTkuNS0zLjItLjItNi45LS4yLTEwLjYtLjItMy43IDAtOS43IDEuNC0xNC44IDYuOS01LjEgNS42LTE5LjQgMTktMTkuNCA0Ni4zIDAgMjcuMyAxOS45IDUzLjcgMjIuNiA1Ny40IDIuOCAzLjcgMzkuMSA1OS43IDk0LjggODMuOCAzNS4yIDE1LjIgNDkgMTYuNSA2Ni42IDEzLjkgMTAuNy0xLjYgMzIuOC0xMy40IDM3LjQtMjYuNCA0LjYtMTMgNC42LTI0LjEgMy4yLTI2LjQtMS4zLTIuNS01LTMuOS0xMC41LTYuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaG1jcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMTYxdi0yMS4zbC0yOC41LTguOC0yLjItMTAuNCAyMC4xLTIwLjdMNDI3IDgwLjRsLTI5IDcuNS03LjItNy41IDcuNS0yOC4yLTE5LjEtMTEuNi0yMS4zIDIxLTEwLjctMy4yLTctMjYuNGgtMjIuNmwtNi4yIDI2LjQtMTIuMSAzLjItMTkuNy0yMS0xOS40IDExIDguMSAyNy43LTguMSA4LjQtMjguNS03LjUtMTEgMTkuMSAyMC43IDIxLTIuOSAxMC40LTI4LjUgNy44LS4zIDIxLjcgMjguOCA3LjUgMi40IDEyLjEtMjAuMSAxOS45IDEwLjQgMTguNSAyOS42LTcuNSA3LjIgOC42LTguMSAyNi45IDE5LjkgMTEuNiAxOS40LTIwLjQgMTEuNiAyLjkgNi43IDI4LjUgMjIuNi4zIDYuNy0yOC44IDExLjYtMy41IDIwLjcgMjEuNiAyMC40LTEyLjEtOC44LTI4IDcuOC04LjEgMjguOCA4LjggMTAuMy0yMC4xLTIwLjktMTguOCAyLjItMTIuMSAyOS4xLTd6bS0xMTkuMiA0NS4yYy0zMS4zIDAtNTYuOC0yNS40LTU2LjgtNTYuOHMyNS40LTU2LjggNTYuOC01Ni44IDU2LjggMjUuNCA1Ni44IDU2LjhjMCAzMS41LTI1LjQgNTYuOC01Ni44IDU2Ljh6bTcyLjMgMTYuNGw0Ni45IDE0LjVWMjc3bC01NS4xIDEzLjQtNC4xIDIyLjcgMzguOSAzNS4zLTE5LjIgMzcuOS01NC0xNi43LTE0LjYgMTUuMiAxNi43IDUyLjUtMzguMyAyMi43LTM4LjktNDAuNS0yMS43IDYuNi0xMi42IDU0LTQyLjQtLjUtMTIuNi01My42LTIxLjctNS42LTM2LjQgMzguNC0zNy40LTIxLjcgMTUuMi01MC41LTEzLjctMTYuMS01NS41IDE0LjEtMTkuNy0zNC44IDM3LjktMzcuNC00LjgtMjIuOC01NC0xNC4xLjUtNDAuOUw1NCAyMTkuOWw1LjctMTkuNy0zOC45LTM5LjRMNDEuNSAxMjVsNTMuNiAxNC4xIDE1LjItMTUuNy0xNS4yLTUyIDM2LjQtMjAuNyAzNi44IDM5LjRMMTkxIDg0bDExLjYtNTJIMjQ1bDExLjYgNDUuOUwyMzQgNzJsLTYuMy0xLjctMy4zIDUuNy0xMSAxOS4xLTMuMyA1LjYgNC42IDQuNiAxNy4yIDE3LjQtLjMgMS0yMy44IDYuNS02LjIgMS43LS4xIDYuNC0uMiAxMi45QzE1My44IDE2MS42IDExOCAyMDQgMTE4IDI1NC43YzAgNTguMyA0Ny4zIDEwNS43IDEwNS43IDEwNS43IDUwLjUgMCA5Mi43LTM1LjQgMTAzLjItODIuOGwxMy4yLjIgNi45LjEgMS42LTYuNyA1LjYtMjQgMS45LS42IDE3LjEgMTcuOCA0LjcgNC45IDUuOC0zLjQgMjAuNC0xMi4xIDUuOC0zLjUtMi02LjUtNi44LTIxLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2lraXBlZGlhVyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NDAgNTEuMmwtLjMgMTIuMmMtMjguMS44LTQ1IDE1LjgtNTUuOCA0MC4zLTI1IDU3LjgtMTAzLjMgMjQwLTE1NS4zIDM1OC42SDQxNWwtODEuOS0xOTMuMWMtMzIuNSA2My42LTY4LjMgMTMwLTk5LjIgMTkzLjEtLjMuMy0xNSAwLTE1LS4zQzE3MiAzNTIuMyAxMjIuOCAyNDMuNCA3NS44IDEzMy40IDY0LjQgMTA2LjcgMjYuNCA2My40LjIgNjMuN2MwLTMuMS0uMy0xMC0uMy0xNC4yaDE2MS45djEzLjljLTE5LjIgMS4xLTUyLjggMTMuMy00My4zIDM0LjIgMjEuOSA0OS43IDEwMy42IDI0MC4zIDEyNS42IDI4OC42IDE1LTI5LjcgNTcuOC0xMDkuMiA3NS4zLTE0Mi44LTEzLjktMjguMy01OC42LTEzMy45LTcyLjgtMTYwLTkuNy0xNy44LTM2LjEtMTkuNC01NS44LTE5LjdWNDkuOGwxNDIuNS4zdjEzLjFjLTE5LjQuNi0zOC4xIDcuOC0yOS40IDI2LjEgMTguOSA0MCAzMC42IDY4LjEgNDguMSAxMDQuNyA1LjYtMTAuOCAzNC43LTY5LjQgNDguMS0xMDAuOCA4LjktMjAuNi0zLjktMjguNi0zOC42LTI5LjQuMy0zLjYgMC0xMC4zLjMtMTMuNiA0NC40LS4zIDExMS4xLS4zIDEyMy4xLS42djEzLjZjLTIyLjUuOC00NS44IDEyLjgtNTguMSAzMS43bC01OS4yIDEyMi44YzYuNCAxNi4xIDYzLjMgMTQyLjggNjkuMiAxNTYuN0w1NTkuMiA5MS44Yy04LjYtMjMuMS0zNi40LTI4LjEtNDcuMi0yOC4zVjQ5LjZsMTI3LjggMS4xLjIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOTMuN2wxODMuNi0yNS4zdjE3Ny40SDBWOTMuN3ptMCAzMjQuNmwxODMuNiAyNS4zVjI2OC40SDB2MTQ5Ljl6bTIwMy44IDI4TDQ0OCA0ODBWMjY4LjRIMjAzLjh2MTc3Ljl6bTAtMzgwLjZ2MTgwLjFINDQ4VjMyTDIwMy44IDY1Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2l4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM5My4zOCAxMzEuNjljMCAxMy4wMyAyLjA4IDMyLjY5LTI4LjY4IDQzLjgzLTkuNTIgMy40NS0xNS45NSA5LjY2LTE1Ljk1IDkuNjYgMC0zMSA0LjcyLTQyLjIyIDE3LjQtNDguODYgOS43NS01LjExIDI3LjIzLTQuNjMgMjcuMjMtNC42M3ptLTExNS44IDM1LjU0bC0zNC4yNCAxMzIuNjYtMjguNDgtMTA4LjU3Yy03LjY5LTMxLjk5LTIwLjgxLTQ4LjUzLTQ4LjQzLTQ4LjUzLTI3LjM3IDAtNDAuNjYgMTYuMTgtNDguNDMgNDguNTNMODkuNTIgMjk5Ljg5IDU1LjI4IDE2Ny4yM0M0OS43MyAxNDAuNTEgMjMuODYgMTI4Ljk2IDAgMTMxLjk2bDY1LjU3IDI0Ny45M3MyMS42MyAxLjU2IDMyLjQ2LTMuOTZjMTQuMjItNy4yNSAyMC45OC0xMi44NCAyOS41OS00Ni41NyA3LjY3LTMwLjA3IDI5LjExLTExOC40MSAzMS4xMi0xMjQuNyA0Ljc2LTE0Ljk0IDExLjA5LTEzLjgxIDE1LjQgMCAxLjk3IDYuMyAyMy40NSA5NC42MyAzMS4xMiAxMjQuNyA4LjYgMzMuNzMgMTUuMzcgMzkuMzIgMjkuNTkgNDYuNTcgMTAuODIgNS41MiAzMi40NiAzLjk2IDMyLjQ2IDMuOTZsNjUuNTctMjQ3LjkzYy0yNC40Mi0zLjA3LTQ5LjgyIDguOTMtNTUuMyAzNS4yN3ptMTE1Ljc4IDUuMjFzLTQuMSA2LjM0LTEzLjQ2IDExLjU3Yy02LjAxIDMuMzYtMTEuNzggNS42NC0xNy45NyA4LjYxLTE1LjE0IDcuMjYtMTMuMTggMTMuOTUtMTMuMTggMzUuMnYxNTIuMDdzMTYuNTUgMi4wOSAyNy4zNy0zLjQzYzEzLjkzLTcuMSAxNy4xMy0xMy45NSAxNy4yNi00NC43OFYxODEuNDFsLS4wMi4wMXYtOC45OHptMTYzLjQ0IDg0LjA4TDY0MCAxMzIuNzhzLTM1LjExLTUuOTgtNTIuNSA5Ljg1Yy0xMy4zIDEyLjEtMjQuNDEgMjkuNTUtNTQuMTggNzIuNDctLjQ3LjczLTYuMjUgMTAuNTQtMTMuMDcgMC0yOS4yOS00Mi4yMy00MC44LTYwLjI5LTU0LjE4LTcyLjQ3LTE3LjM5LTE1LjgzLTUyLjUtOS44NS01Mi41LTkuODVsODMuMiAxMjMuNzQtODIuOTcgMTIzLjM2czM2LjU3IDQuNjIgNTMuOTUtMTEuMjFjMTEuNDktMTAuNDYgMTcuNTgtMjAuMzcgNTIuNTEtNzAuNzIgNi44MS0xMC41MiAxMi41Ny0uNzcgMTMuMDcgMCAyOS40IDQyLjM4IDM5LjIzIDU4LjA2IDUzLjE0IDcwLjcyIDE3LjM5IDE1LjgzIDUzLjMyIDExLjIxIDUzLjMyIDExLjIxTDU1Ni44IDI1Ni41MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaXphcmRzT2ZUaGVDb2FzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTkuMTkgMzQ1LjY5Yy0xLjkgMS4zOC0xMS4wNyA4LjQ0LS4yNiAyMy41NyA0LjY0IDYuNDIgMTQuMTEgMTIuNzkgMjEuNzMgNi41NSA2LjUtNC44OCA3LjM1LTEyLjkyLjI2LTIzLjA0LTUuNDctNy43Ni0xNC4yOC0xMi44OC0yMS43My03LjA4em0zMzYuNzUgNzUuOTRjLS4zNCAxLjctLjU1IDEuNjcuNzkgMCAyLjA5LTQuMTkgNC4xOS0xMC4yMSA0Ljk4LTE5LjkgMy4xNC0zOC40OS00MC4zMy03MS40OS0xMDEuMzQtNzguMDMtNTQuNzMtNi4wMi0xMjQuMzggOS4xNy0xODguOCA2MC40OWwtLjI2IDEuNTdjMi42MiA0Ljk4IDQuOTggMTAuNzQgMy40IDIxLjIxbC43OS4yNmM2My44OS01OC40IDEzMS4xOS03Ny4yNSAxODQuMzUtNzMuODUgNTguNCAzLjY3IDEwMC4wMyAzNC4wNCAxMDAuMDMgNjguMDgtLjAxIDkuOTYtMi42MyAxNS43Mi0zLjk0IDIwLjE3ek0zOTIuMjggMjQwLjQyYy43OSA3LjA3IDQuMTkgMTAuMjEgOS4xNyAxMC40NyA1LjUuMjYgOS40My0yLjYyIDEwLjQ3LTYuNTUuNzktMy40IDIuMDktMjkuODUgMi4wOS0yOS44NXMtMTEuMjYgNi41NS0xNC45MyAxMC40N2MtMy42NiAzLjY4LTcuMzMgOC4zOS02LjggMTUuNDZ6bS01MC4wMi0xNTEuMUMxMzcuNzUgODkuMzIgMTMuMSAyMjYuOC43OSAyNDEuMmMtMS4wNS41Mi0xLjMxLjc5Ljc5IDEuMzEgNjAuNDkgMTYuNSAxNTUuODEgODEuMTggMTk2LjEzIDIwMi4xNmwxLjA1LjI2YzU1LjI1LTY5LjkyIDE0MC44OC0xMjguMDUgMjM2Ljk5LTEyOC4wNSA4MC45MiAwIDEzMC4xNSA0Mi4xNiAxMzAuMTUgODAuMzkgMCAxOC4zMy02LjU1IDMzLjUyLTIyLjI2IDQ2LjM1IDAgLjk2LS4yLjc5Ljc5Ljc5IDE0LjY2LTEwLjc0IDI3LjUtMjguOCAyNy41LTQ4LjE4IDAtMjIuNzgtMTIuMDUtMzguMjMtMTIuMDUtMzguMjMgNy4wNyA3LjA3IDEwLjc0IDE2LjI0IDEwLjc0IDE2LjI0IDUuNzYtNDAuODUgMjYuOTctNjIuMzIgMjYuOTctNjIuMzItMi4zNi05LjY5LTYuODEtMTcuODEtNi44MS0xNy44MSA3LjU5IDguMTIgMTQuNCAyNy41IDE0LjQgNDEuMzcgMCAxMC40Ny0zLjQgMjIuNzgtMTIuNTcgMzEuOTVsLjI2LjUyYzguMTItNC45OCAxNi41LTE2Ljc2IDE2LjUtMzcuOTcgMC0xNS43MS00LjcxLTI1LjkyLTQuNzEtMjUuOTIgNS43Ni01LjI0IDExLjI2LTkuMTcgMTUuOTctMTEuNzguNzkgMy40IDIuMDkgOS42OSAyLjM2IDE0LjkzIDAgMS4wNS43OSAxLjgzIDEuMDUgMCAuNzktNS43Ni0uMjYtMTYuMjQtLjI2LTE2LjUgNi4wMi0zLjE0IDkuNjktNC40NSA5LjY5LTQuNDVDNjE3Ljc0IDE3NiA0ODkuNDMgODkuMzIgMzQyLjI2IDg5LjMyem0tOTkuMjQgMjg5LjYyYy0xMS4wNiA4Ljk5LTI0LjIgNC4wOC0zMC42NC00LjE5LTcuNDUtOS41OC02Ljc2LTI0LjA5IDQuMTktMzIuNDcgMTQuODUtMTEuMzUgMjcuMDgtLjQ5IDMxLjE2IDUuNS4yOC4zOSAxMi4xMyAxNi41Ny00LjcxIDMxLjE2em0yLjA5LTEzNi40M2w5LjQzLTE3LjgxIDExLjc4IDcwLjk2LTEyLjU3IDYuMDItMjQuNjItMjguOCAxNC4xNC0yNi43MSAzLjY3IDQuNDUtMS44My04LjExem0xOC41OSAxMTcuNThsLS4yNi0uMjZjMi4wNS00LjEtMi41LTYuNjEtMTcuNTQtMzEuNjktMS4zMS0yLjM2LTMuMTQtMi44OC00LjQ1LTIuNjJsLS4yNi0uNTJjNy44Ni01Ljc2IDE1LjQ1LTEwLjIxIDI1LjQtMTUuNzFsLjUyLjI2YzEuMzEgMS44MyAyLjA5IDIuODggMy40IDQuNzFsLS4yNi41MmMtMS4wNS0uMjYtMi4zNi0uNzktNS4yNC4yNi0yLjA5Ljc5LTcuODYgMy42Ny0xMi4zMSA3LjU5djEuMzFjMS41NyAyLjM2IDMuOTMgNi41NSA1Ljc2IDkuNjloLjI2YzEwLjA1LTYuMjggNy41Ni00LjU1IDExLjUyLTcuODZoLjI2Yy41MiAxLjgzLjUyIDEuODMgMS44MyA1LjVsLS4yNi4yNmMtMy4wNi42MS00LjY1LjM0LTExLjUyIDUuNXYuMjZjOS40NiAxNy4wMiAxMS4wMSAxNi43NSAxMi41NyAxNS45N2wuMjYuMjZjLTIuMzQgMS41OS02LjI3IDQuMjEtOS42OCA2LjU3em01NS4yNi0zMi40N2MtMy4xNCAxLjU3LTYuMDIgMi44OC05Ljk1IDQuOThsLS4yNi0uMjZjMS4yOS0yLjU5IDEuMTYtMi43MS0xMS43OC0zMi40N2wtLjI2LS4yNmMtLjE1IDAtOC45IDMuNjUtOS45NSA3LjMzaC0uNTJsLTEuMDUtNS43Ni4yNi0uNTJjNy4yOS00LjU2IDI1LjUzLTExLjY0IDI3Ljc2LTEyLjU3bC41Mi4yNiAzLjE0IDQuOTgtLjI2LjUyYy0zLjUzLTEuNzYtNy4zNS43Ni0xMi4zMSAyLjYydi4yNmMxMi4zMSAzMi4wMSAxMi42NyAzMC42NCAxNC42NiAzMC42NHYuMjV6bTQ0Ljc3LTE2LjVjLTQuMTkgMS4wNS01LjI0IDEuMzEtOS42OSAyLjg4bC0uMjYtLjI2LjUyLTQuNDVjLTEuMDUtMy40LTMuMTQtMTEuNTItMy42Ny0xMy42MmwtLjI2LS4yNmMtMy40Ljc5LTguOSAyLjYyLTEyLjgzIDMuOTNsLS4yNi4yNmMuNzkgMi42MiAzLjE0IDkuOTUgNC4xOSAxMy44OC43OSAyLjM2IDEuODMgMi44OCAyLjg4IDMuMTR2LjUyYy0zLjY3IDEuMDUtNy4wNyAyLjYyLTEwLjIxIDMuOTNsLS4yNi0uMjZjMS4wNS0xLjMxIDEuMDUtMi44OC4yNi00Ljk4LTEuMDUtMy4xNC04LjEyLTIzLjgzLTkuMTctMjcuMjMtLjUyLTEuODMtMS41Ny0zLjE0LTIuNjItMy4xNHYtLjUyYzMuMTQtMS4wNSA2LjAyLTIuMDkgMTAuNzQtMy40bC4yNi4yNi0uMjYgNC43MWMxLjMxIDMuOTMgMi4zNiA3LjU5IDMuMTQgOS42OWguMjZjMy45My0xLjMxIDkuNDMtMi44OCAxMi44My0zLjkzbC4yNi0uMjYtMi42Mi05LjQzYy0uNTItMS44My0xLjA1LTMuNC0yLjYyLTMuOTN2LS4yNmM0LjQ1LTEuMDUgNy4zMy0xLjgzIDEwLjc0LTIuMzZsLjI2LjI2Yy0xLjA1IDEuMzEtMS4wNSAyLjg4LS41MiA0LjQ1IDEuNTcgNi4yOCA0LjcxIDIwLjQzIDYuMjggMjYuNDUuNTQgMi42MiAxLjg1IDMuNDEgMi42MyAzLjkzem0zMi4yMS02LjgxbC0uMjYuMjZjLTQuNzEuNTItMTQuMTQgMi4zNi0yMi41MiA0LjE5bC0uMjYtLjI2Ljc5LTQuMTljLTEuNTctNy44Ni0zLjQtMTguNTktNC45OC0yNi4xOS0uMjYtMS44My0uNzktMi44OC0yLjYyLTMuNjdsLjc5LS41MmM5LjE3LTEuNTcgMjAuMTYtMi4zNiAyNC44OC0yLjYybC4yNi4yNmMuNTIgMi4zNi43OSAzLjE0IDEuNTcgNS41bC0uMjYuMjZjLTEuMTQtMS4xNC0zLjM0LTMuMi0xNi4yNC0uNzlsLS4yNi4yNmMuMjYgMS41NyAxLjA1IDYuNTUgMS41NyA5Ljk1bC4yNi4yNmM5LjUyLTEuNjggNC43Ni0uMDYgMTAuNzQtMi4zNmguMjZjMCAxLjU3LS4yNiAxLjgzLS4yNiA1LjI0aC0uMjZjLTQuODEtMS4wMy0yLjE1LS45LTEwLjIxIDBsLS4yNi4yNmMuMjYgMi4wOSAxLjU3IDkuNDMgMi4wOSAxMi41N2wuMjYuMjZjMS4xNS4zOCAxNC4yMS0uNjUgMTYuMjQtNC43MWguMjZjLS41MyAyLjM4LTEuMDUgNC4yMS0xLjU4IDYuMDR6bTEwLjc0LTQ0LjUxYy00LjQ1IDIuMzYtOC4xMiAyLjg4LTExIDIuODgtLjI1LjAyLTExLjQxIDEuMDktMTcuNTQtOS45NS02Ljc0LTEwLjc5LS45OC0yNS4yIDUuNS0zMS42OSA4LjgtOC4xMiAyMy4zNS0xMC4xIDI4LjU0LTE3LjAyIDguMDMtMTAuMzMtMTMuMDQtMjIuMzEtMjkuNTktNS43NmwtMi42Mi0yLjg4IDUuMjQtMTYuMjRjMjUuNTktMS41NyA0NS4yLTMuMDQgNTAuMDIgMTYuMjQuNzkgMy4xNCAwIDkuNDMtLjI2IDEyLjA1IDAgMi42Mi0xLjgzIDE4Ljg1LTIuMDkgMjMuMDQtLjUyIDQuMTktLjc5IDE4LjMzLS43OSAyMC42OS4yNiAyLjM2LjUyIDQuMTkgMS41NyA1LjUgMS41NyAxLjgzIDUuNzYgMS44MyA1Ljc2IDEuODNsLS43OSA0LjcxYy0xMS44Mi0xLjA3LTEwLjI4LS41OS0yMC40My0xLjA1LTMuMjItNS4xNS0yLjIzLTMuMjgtNC4xOS03Ljg2IDAgLjAxLTQuMTkgMy45NC03LjMzIDUuNTF6bTM3LjE4IDIxLjIxYy02LjM1LTEwLjU4LTE5LjgyLTcuMTYtMjEuNzMgNS41LTIuNjMgMTcuMDggMTQuMyAxOS43OSAyMC42OSAxMC4yMWwuMjYuMjZjLS41MiAxLjgzLTEuODMgNi4wMi0xLjgzIDYuMjhsLS41Mi41MmMtMTAuMyA2Ljg3LTI4LjUtMi41LTI1LjY2LTE4LjU5IDEuOTQtMTAuODcgMTQuNDQtMTguOTMgMjguOC05Ljk1bC4yNi41MmMwIDEuMDYtLjI3IDMuNDEtLjI3IDUuMjV6bTUuNzctODcuNzN2LTYuNTVjLjY5IDAgMTkuNjUgMy4yOCAyNy43NiA3LjMzbC0xLjU3IDE3LjU0czEwLjIxLTkuNDMgMTUuNDUtMTAuNzRjNS4yNC0xLjU3IDE0LjkzIDcuMzMgMTQuOTMgNy4zM2wtMTEuMjYgMTEuMjZjLTEyLjA3LTYuMzUtMTkuNTktLjA4LTIwLjY5Ljc5LTUuMjkgMzguNzItOC42IDQyLjE3IDQuNDUgNDYuMDlsLS41MiA0LjcxYy0xNy41NS00LjI5LTE4LjUzLTQuNS0zNi45Mi03LjMzbC43OS00LjcxYzcuMjUgMCA3LjQ4LTUuMzIgNy41OS02LjgxIDAgMCA0Ljk4LTUzLjE2IDQuOTgtNTUuMjUtLjAyLTIuODctNC45OS0zLjY2LTQuOTktMy42NnptMTAuOTkgMTE0LjQ0Yy04LjEyLTIuMDktMTQuMTQtMTEtMTAuNzQtMjAuNjkgMy4xNC05LjQzIDEyLjMxLTEyLjMxIDE4Ljg1LTEwLjIxIDkuMTcgMi42MiAxMi44MyAxMS43OCAxMC43NCAxOS4zOC0yLjYxIDguOS05LjQyIDEzLjg3LTE4Ljg1IDExLjUyem00Mi4xNiA5LjY5Yy0yLjM2LS41Mi03LjA3LTIuMzYtOC42NC0yLjg4di0uMjZsMS41Ny0xLjgzYy41OS04LjI0LjU5LTcuMjcuMjYtNy41OS00LjgyLTEuODEtNi42Ni0yLjM2LTcuMDctMi4zNi0xLjMxIDEuODMtMi44OCA0LjQ1LTMuNjcgNS41bC0uNzkgMy40di4yNmMtMS4zMS0uMjYtMy45My0xLjMxLTYuMDItMS41N3YtLjI2bDIuNjItMS44M2MzLjQtNC43MSA5Ljk1LTE0LjE0IDEzLjg4LTIwLjE2di0yLjA5bC41Mi0uMjZjMi4wOS43OSA1LjUgMi4wOSA3LjU5IDIuODguNDguNDguMTgtMS44Ny0xLjA1IDI1LjE0LS4yNCAxLjgxLjAyIDIuNi44IDMuOTF6bS00LjcxLTg5LjgyYzExLjI1LTE4LjI3IDMwLjc2LTE2LjE5IDM0LjA0LTMuNEw1MzkuNyAxOThjMi4zNC02LjI1LTIuODItOS45LTQuNDUtMTEuMjZsMS44My0zLjY3YzEyLjIyIDEwLjM3IDE2LjM4IDEzLjk3IDIyLjUyIDIwLjQzLTI1LjkxIDczLjA3LTMwLjc2IDgwLjgxLTI0LjYyIDg0LjMybC0xLjgzIDQuNDVjLTYuMzctMy4zNS04LjktNC40Mi0xNy44MS04LjY0bDIuMDktNi44MWMtLjI2LS4yNi0zLjkzIDMuOTMtOS42OSAzLjY3LTE5LjA2LTEuMy0yMi44OS0zMS43NS05LjY3LTUyLjl6bTI5LjMzIDc5LjM0YzAtNS43MS02LjM0LTcuODktNy44Ni01LjI0LTEuMzEgMi4wOSAxLjA1IDQuOTggMi44OCA4LjM4IDEuNTcgMi42MiAyLjYyIDYuMjggMS4wNSA5LjQzLTIuNjQgNi4zNC0xMi40IDUuMzEtMTUuNDUtLjc5IDAtLjctLjI3LjA5IDEuODMtNC43MWwuNzktLjI2Yy0uNTcgNS42NiA2LjA2IDkuNjEgOC4zOCA0Ljk4IDEuMDUtMi4wOS0uNTItNS41LTIuMDktOC4zOC0xLjU3LTIuNjItMy42Ny02LjI4LTEuODMtOS42OSAyLjcyLTUuMDYgMTEuMjUtNC40NyAxNC42NiAyLjM2di41MmwtMi4zNiAzLjR6bTIxLjIxIDEzLjM2Yy0xLjk2LTMuMjctLjkxLTIuMTQtNC40NS00LjcxaC0uMjZjLTIuMzYgNC4xOS01Ljc2IDEwLjQ3LTguNjQgMTYuMjQtMS4zMSAyLjM2LTEuMDUgMy40LS43OSAzLjkzbC0uMjYuMjYtNS43Ni00LjQ1LjI2LS4yNiAyLjA5LTEuMzFjMy4xNC01Ljc2IDYuNTUtMTIuMDUgOS4xNy0xNy4wMnYtLjI2Yy0yLjY0LTEuOTgtMS4yMi0xLjUxLTYuMDItMS44M3YtLjI2bDMuMTQtMy40aC4yNmMzLjY3IDIuMzYgOS45NSA2LjgxIDEyLjMxIDguOWwuMjYuMjYtMS4zMSAzLjkxem0yNy4yMy00NC4yNmwtMi44OC0yLjg4Yy43OS0yLjM2IDEuODMtNC45OCAyLjA5LTcuNTkuNzUtOS43NC0xMS41Mi0xMS44NC0xMS41Mi00Ljk4IDAgNC45OCA3Ljg2IDE5LjM4IDcuODYgMjcuNzYgMCAxMC4yMS01Ljc2IDE1LjcxLTEzLjg4IDE2LjUtOC4zOC43OS0yMC4xNi0xMC40Ny0yMC4xNi0xMC40N2w0Ljk4LTE0LjQgMi44OCAyLjA5Yy0yLjk3IDE3LjggMTcuNjggMjAuMzcgMTMuMzUgNS4yNC0xLjA2LTQuMDItMTguNzUtMzQuMiAyLjA5LTM4LjIzIDEzLjYyLTIuMzYgMjMuMDQgMTYuNSAyMy4wNCAxNi41bC03Ljg1IDEwLjQ2em0zNS42Mi0xMC4yMWMtMTEtMzAuMzgtNjAuNDktMTI3LjUzLTE5MS45NS0xMjkuNjItNTMuNDItMS4wNS05NC4yNyAxNS40NS0xMzIuNzYgMzcuOTdsODUuNjMtOS4xNy05MS4zOSAyMC42OSAyNS4xNCAxOS42NC0zLjkzLTE2LjVjNy41LTEuNzEgMzkuMTUtOC40NSA2Ni43Ny04LjlsLTIyLjI2IDgwLjM5YzEzLjYxLS43IDE4Ljk3LTguOTggMTkuNjQtMjIuNzhsNC45OC0xLjA1LjI2IDI2LjcxYy0yMi40NiAzLjIxLTM3LjMgNi42OS00OS40OSA5Ljk1bDEzLjA5LTQzLjIxLTYxLjU0LTM2LjY2IDIuMzYgOC4xMiAxMC4yMSA0Ljk4YzYuMjggMTguNTkgMTkuMzggNTYuNTYgMjAuNDMgNTguNjYgMS45NSA0LjI4IDMuMTYgNS43OCAxMi4wNSA0LjQ1bDEuMDUgNC45OGMtMTYuMDggNC44Ni0yMy42NiA3LjYxLTM5LjAyIDE0LjRsLTIuMzYtNC43MWM0LjQtMi45NCA4LjczLTMuOTQgNS41LTEyLjgzLTIzLjctNjIuNS0yMS40OC01OC4xNC0yMi43OC01OS40NGwyLjM2LTQuNDUgMzMuNTIgNjcuM2MtMy44NC0xMS44NyAxLjY4IDEuNjktMzIuOTktNzguODJsLTQxLjkgODguNTEgNC43MS0xMy44OC0zNS44OC00Mi4xNiAyNy43NiA5My40OC0xMS43OCA4LjM4Qzk1IDIyOC41OCAxMDEuMDUgMjMxLjg3IDkzLjIzIDIzMS41MmMtNS41LS4yNi0xMy42MiA1LjUtMTMuNjIgNS41TDc0LjYzIDIzMWMzMC41Ni0yMy41MyAzMS42Mi0yNC4zMyA1OC40LTQyLjY4bDQuMTkgNy4wN3MtNS43NiA0LjE5LTcuODYgNy4wN2MtNS45IDkuMjggMS42NyAxMy4yOCA2MS44IDc1LjY4bC0xOC44NS01OC45MiAzOS44LTEwLjIxIDI1LjY2IDMwLjY0IDQuNDUtMTIuMzEtNC45OC0yNC42MiAxMy4wOS0zLjQuNTIgMy4xNCAzLjY3LTEwLjQ3LTk0LjI3IDI5LjMzIDExLjI2LTQuOTgtMTMuNjItNDIuNDIgMTcuMjgtOS4xNyAzMC4xMSAzNi4xNCAyOC41NC0xMy4wOWMtMS40MS03LjQ3LTIuNDctMTQuNS00LjcxLTE5LjY0bDE3LjI4IDEzLjg4IDQuNzEtMi4wOS01OS4xOC00Mi42OCAyMy4wOCAxMS41YzE4Ljk4LTYuMDcgMjUuMjMtNy40NyAzMi4yMS05LjY5bDIuNjIgMTFjLTEyLjU1IDEyLjU1IDEuNDMgMTYuODIgNi41NSAxOS4zOGwtMTMuNjItNjEuMDEgMTIuMDUgMjguMjhjNC4xOS0xLjMxIDcuMzMtMi4wOSA3LjMzLTIuMDlsMi42MiA4LjY0cy0zLjE0IDEuMDUtNi4yOCAyLjA5bDguOSAyMC45NSAzMy43OC02NS43My0yMC42OSA2MS4wMWM0Mi40Mi0yNC4wOSA4MS40NC0zNi42NiAxMzEuOTgtMzUuODggNjcuMDQgMS4wNSAxNjcuMzMgNDAuODUgMTk5LjggMTM5LjgzLjc4IDIuMS0uMDEgMi42My0uNzkuMjd6TTIwMy40OCAxNTIuNDNzMS44My0uNTIgNC4xOS0xLjMxbDkuNDMgNy41OWMtLjQgMC0zLjQ0LS4yNS0xMS4yNiAyLjM2bC0yLjM2LTguNjR6bTE0My43NiAzOC41Yy0xLjU3LS42LTI2LjQ2LTQuODEtMzMuMjYgMjAuNjlsMjEuNzMgMTcuMDIgMTEuNTMtMzcuNzF6TTMxOC40MyA2Ny4wN2MtNTguNCAwLTEwNi4wNSAxMi4wNS0xMTQuOTYgMTQuNHYuNzljOC4zOCAyLjA5IDE0LjQgNC4xOSAyMS4yMSAxMS43OGwxLjU3LjI2YzYuNTUtMS44MyA0OC45Ny0xMy44OCAxMTAuMjQtMTMuODggMTgwLjE2IDAgMzAxLjY3IDExNi43OSAzMDEuNjcgMjIzLjM3djkuOTVjMCAxLjMxLjc5IDIuNjIgMS4wNS41Mi41Mi0yLjA5Ljc5LTguNjQuNzktMTkuNjQuMjYtODMuNzktOTYuNjMtMjI3LjU1LTMyMS41Ny0yMjcuNTV6bTIxMS4wNiAxNjkuNjhjMS4zMS01Ljc2IDAtMTIuMzEtNy4zMy0xMy4wOS05LjYyLTEuMTMtMTYuMTQgMjMuNzktMTcuMDIgMzMuNTItLjc5IDUuNS0xLjMxIDE0LjkzIDYuMDIgMTQuOTMgNC42OC0uMDEgOS43Mi0uOTEgMTguMzMtMzUuMzZ6bS02MS41MyA0Mi45NWMtMi42Mi0uNzktOS40My0uNzktMTIuNTcgMTAuNDctMS44MyA2LjgxLjUyIDEzLjM1IDYuMDIgMTQuNjYgMy42NyAxLjA1IDguOS41MiAxMS43OC0xMC43NCAyLjYyLTkuOTQtMS44My0xMy42MS01LjIzLTE0LjM5ek00OTEgMzAwLjY1YzEuODMuNTIgMy4xNCAxLjA1IDUuNzYgMS44MyAwLTEuODMuNTItOC4zOC43OS0xMi4wNS0xLjA1IDEuMzEtNS41IDguMTItNi41NSA5Ljk1di4yN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb2R1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3OC40MTQgMzM5LjcwNkgxNDEuMUwxMTIuMTY2IDIyMy40NzVoLS40NzhMODMuMjI4IDMzOS43MDZINDUuMkwwIDE2OC45NDZIMzcuNTQ4TDY0LjU3NCAyODUuMTc3aC40NzhMOTQuNzA3IDE2OC45NDZoMzUuMTU3bDI5LjE3OCAxMTcuNjY3aC40NzlMMTg3LjUgMTY4Ljk0NmgzNi44MzF6TTI3MS40IDIxMi43MTNjMzguOTg0IDAgNjQuMSAyNS44MjggNjQuMSA2NS4yOTEgMCAzOS4yMjItMjUuMTExIDY1LjA1LTY0LjEgNjUuMDUtMzguNzQzIDAtNjMuODU1LTI1LjgyOC02My44NTUtNjUuMDVDMjA3LjU0NyAyMzguNTQxIDIzMi42NTkgMjEyLjcxMyAyNzEuNCAyMTIuNzEzem0wIDEwNC43NTNjMjMuMiAwIDMwLjEzMy0xOS44NTIgMzAuMTMzLTM5LjQ2MiAwLTE5Ljg1Mi02LjkzNC0zOS43LTMwLjEzMy0zOS43LTI3LjcgMC0yOS44OTQgMTkuODUtMjkuODk0IDM5LjdDMjQxLjUwOCAyOTcuNjE0IDI0OC40NDMgMzE3LjQ2NiAyNzEuNCAzMTcuNDY2ek00MzUuMDg0IDMyMy45MjJoLS40NzhjLTcuODkzIDEzLjM5Mi0yMS43NjUgMTkuMTMyLTM3LjU0OCAxOS4xMzItMzcuMzEgMC01NS40ODUtMzIuMDQ1LTU1LjQ4NS02Ni4yNDYgMC0zMy4yNDMgMTguNDE1LTY0LjA5NSA1NC43NjctNjQuMDk1IDE0LjU4OSAwIDI4LjkzOCA2LjIxOCAzNi44MzEgMTguNDE2aC4yNFYxNjguOTQ2aDMzLjk2djE3MC43Nkg0MzUuMDg0ek00MDUuNDI4IDIzOC4zYy0yMi4yNCAwLTI5Ljg5NCAxOS4xMzQtMjkuODk0IDM5LjQ2MyAwIDE5LjM3MSA4Ljg0OCAzOS43IDI5Ljg5NCAzOS43IDIyLjQ4MiAwIDI5LjE3OC0xOS42MTMgMjkuMTc4LTM5Ljk0QzQzNC42MDYgMjU3LjQzNiA0MjcuNDMyIDIzOC4zIDQwNS40MjggMjM4LjN6TTU5Mi45NiAzMzkuNzA2SDU2MC42NzNWMzIyLjQ4N2gtLjcxOGMtOC42MDkgMTMuODctMjMuNDM2IDIwLjU2Ny0zNy43ODYgMjAuNTY3LTM2LjExMyAwLTQ1LjItMjAuMzI4LTQ1LjItNTAuOTQxVjIxNi4wNjFoMzMuOTU5VjI4NS45YzAgMjAuMzI5IDUuOTc5IDMwLjM3MiAyMS43NjUgMzAuMzcyIDE4LjQxNSAwIDI2LjMwNi0xMC4yODMgMjYuMzA2LTM1LjM5M1YyMTYuMDYxSDU5Mi45NnpNNjAyLjQ1MyAzMDIuODc2SDY0MHYzNi44M0g2MDIuNDUzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvbGZQYWNrQmF0dGFsaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2Ny43MyA0NzEuNTNsMTAuNTYgMTUuODQgNS4yOC0xMi4zMiA1LjI4IDdWNTEyYzIxLjA2LTcuOTIgMjEuMTEtNjYuODYgMjUuNTEtOTcuMjEgNC42Mi0zMS44OS0uODgtOTIuODEgODEuMzctMTQ5LjExLTguODgtMjMuNjEtMTItNDkuNDMtMi42NC04MC4wNUM0MjEgMTg5IDQ0NyAxOTYuMjEgNDU2LjQzIDIzOS43M2wtMzAuMzUgOC4zNmMxMS4xNSAyMyAxNyA0Ni43NiAxMy4yIDcyLjE0TDQxMiAzMTMuMThsLTYuMTYgMzMuNDMtMTguNDctNy04LjggMzMuMzktMTkuMzUtNyAyNi4zOSAyMS4xMSA4LjgtMjguMTVMNDE5IDM2NC4ybDctMzUuNjMgMjYuMzkgMTQuNTJjLjI1LTIwIDctNTguMDYtOC44LTg0LjQ1bDI2LjM5IDUuMjhjNC0yMi4wNy0yLjM4LTM5LjIxLTcuOTItNTYuNzRsMjIuNDMgOS42OGMtLjQ0LTI1LjA3LTI5Ljk0LTU2Ljc5LTYxLjU4LTU4LjUtMjAuMjItMS4wOS01Ni43NC0yNS4xNy01NC4xLTUxLjkgMi0xOS44NyAxNy40NS00Mi42MiA0My4xMS00OS43LTQ0IDM2LjUxLTkuNjggNjcuMyA1LjI4IDczLjQ2IDQuNC0xMS40NCAxNy41NC02OS4wOCAwLTEzMC4yLTQwLjM5IDIyLjg3LTg5LjY1IDY1LjEtOTMuMiAxNDcuNzlsLTU4IDM4LjcxLTMuNTIgOTMuMjVMMzY5Ljc4IDIyMGw3IDctMTcuNTkgMy41Mi00NCAzOC43MS0xNS44NC01LjI4LTI4LjEgNDkuMjUtMy41MiAxMTkuNjQgMjEuMTEgMTUuODQtMzIuNTUgMTUuODQtMzIuNTUtMTUuODQgMjEuMTEtMTUuODQtMy41Mi0xMTkuNjQtMjguMTUtNDkuMjYtMTUuODQgNS4yOC00NC0zOC43MS0xNy41OC0zLjUxIDctNyAxMDcuMzMgNTkuODItMy41Mi05My4yNS01OC4wNi0zOC43MUMxODUgNjUuMSAxMzUuNzcgMjIuODcgOTUuMyAwYy0xNy41NCA2MS4xMi00LjQgMTE4Ljc2IDAgMTMwLjIgMTUtNi4xNiA0OS4yNi0zNi45NSA1LjI4LTczLjQ2IDI1LjY2IDcuMDggNDEuMTUgMjkuODMgNDMuMTEgNDkuNyAyLjYzIDI2Ljc0LTMzLjg4IDUwLjgxLTU0LjEgNTEuOS0zMS42NSAxLjcyLTYxLjE1IDMzLjQ0LTYxLjU5IDU4LjUxbDIyLjQzLTkuNjhjLTUuNTQgMTcuNTMtMTEuOTEgMzQuNjctNy45MiA1Ni43NGwyNi4zOS01LjI4Yy0xNS43NiAyNi4zOS05LjA1IDY0LjQzLTguOCA4NC40NWwyNi4zOS0xNC41MiA3IDM1LjYzIDI0LjYzLTUuMjggOC44IDI4LjE1TDE1My4zNSAzNjYgMTM0IDM3M2wtOC44LTMzLjQzLTE4LjQ3IDctNi4xNi0zMy40My0yNy4yNyA3Yy0zLjgyLTI1LjM4IDItNDkuMSAxMy4yLTcyLjE0bC0zMC4zNS04LjM2YzkuNC00My41MiAzNS40Ny01MC43NyA2My4zNC01NC4xIDkuMzYgMzAuNjIgNi4yNCA1Ni40NS0yLjY0IDgwLjA1IDgyLjI1IDU2LjMgNzYuNzUgMTE3LjIzIDgxLjM3IDE0OS4xMSA0LjQgMzAuMzUgNC40NSA4OS4yOSAyNS41MSA5Ny4yMXYtMjkuODNsNS4yOC03IDUuMjggMTIuMzIgMTAuNTYtMTUuODQgMTEuNDQgMjEuMTEgMTEuNDMtMjEuMXptNzkuMTctOTVMMzMxLjA2IDM2NmM3LjQ3LTQuMzYgMTMuNzYtOC40MiAxOS4zNS0xMi4zMi0uNiA3LjIyLS4yNyAxMy44NC0zLjUxIDIyLjg0em0yOC4xNS00OS4yNmMtLjQgMTAuOTQtLjkgMjEuNjYtMS43NiAzMS42Ny03Ljg1LTEuODYtMTUuNTctMy44LTIxLjExLTcgOC4yNC03Ljk0IDE1LjU1LTE2LjMyIDIyLjg3LTI0LjY4em0yNC42MyA1LjI4YzAtMTMuNDMtMi4wNS0yNC4yMS01LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDEtMTguNDcgMjcuMjd6bTMuNTItODAuOTRjMTkuNDQgMTIuODEgMjcuOCAzMy42NiAyOS45MSA1Ni4zLTEyLjMyLTQuNTMtMjQuNjMtOS4zMS0zNi45NS0xMC41NiA1LjA2LTEyIDYuNjUtMjguMTQgNy00NS43NHptLTEuNzYtNDUuNzRjLjgxIDE0LjMgMS44NCAyOC44MiAxLjc2IDQyLjIzIDE5LjIyLTguMTEgMjkuNzgtOS43MiA0NC0xNC4wOC0xMC42MS0xOC45Ni0yNy4yLTI1LjUzLTQ1Ljc2LTI4LjE2ek0xNjUuNjggMzc2LjUyTDE4MS41MiAzNjZjLTcuNDctNC4zNi0xMy43Ni04LjQyLTE5LjM1LTEyLjMyLjYgNy4yNi4yNyAxMy44OCAzLjUxIDIyLjg4em0tMjguMTUtNDkuMjZjLjQgMTAuOTQuOSAyMS42NiAxLjc2IDMxLjY3IDcuODUtMS44NiAxNS41Ny0zLjggMjEuMTEtNy04LjI0LTcuOTMtMTUuNTUtMTYuMzEtMjIuODctMjQuNjd6bS0yNC42NCA1LjI4YzAtMTMuNDMgMi0yNC4yMSA1LjI4LTMzLjQzYTIzNSAyMzUgMCAwIDAgMTguNDcgMjcuMjd6bS0zLjUyLTgwLjk0Yy0xOS40NCAxMi44MS0yNy44IDMzLjY2LTI5LjkxIDU2LjMgMTIuMzItNC41MyAyNC42My05LjMxIDM3LTEwLjU2LTUtMTItNi42NS0yOC4xNC03LTQ1Ljc0em0xLjc2LTQ1Ljc0Yy0uODEgMTQuMy0xLjg0IDI4LjgyLTEuNzYgNDIuMjMtMTkuMjItOC4xMS0yOS43OC05LjcyLTQ0LTE0LjA4IDEwLjYzLTE4Ljk1IDI3LjIzLTI1LjUyIDQ1Ljc2LTI4LjE1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdvcmRwcmVzc1NpbXBsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMyA4IDggMTE5LjIgOCAyNTZjMCAxMzYuNyAxMTEuMyAyNDggMjQ4IDI0OHMyNDgtMTExLjMgMjQ4LTI0OEM1MDQgMTE5LjIgMzkyLjcgOCAyNTYgOHpNMzMgMjU2YzAtMzIuMyA2LjktNjMgMTkuMy05MC43bDEwNi40IDI5MS40Qzg0LjMgNDIwLjUgMzMgMzQ0LjIgMzMgMjU2em0yMjMgMjIzYy0yMS45IDAtNDMtMy4yLTYzLTkuMWw2Ni45LTE5NC40IDY4LjUgMTg3LjhjLjUgMS4xIDEgMi4xIDEuNiAzLjEtMjMuMSA4LjEtNDggMTIuNi03NCAxMi42em0zMC43LTMyNy41YzEzLjQtLjcgMjUuNS0yLjEgMjUuNS0yLjEgMTItMS40IDEwLjYtMTkuMS0xLjQtMTguNCAwIDAtMzYuMSAyLjgtNTkuNCAyLjgtMjEuOSAwLTU4LjctMi44LTU4LjctMi44LTEyLS43LTEzLjQgMTcuNy0xLjQgMTguNCAwIDAgMTEuNCAxLjQgMjMuNCAyLjFsMzQuNyA5NS4yTDIwMC42IDM5M2wtODEuMi0yNDEuNWMxMy40LS43IDI1LjUtMi4xIDI1LjUtMi4xIDEyLTEuNCAxMC42LTE5LjEtMS40LTE4LjQgMCAwLTM2LjEgMi44LTU5LjQgMi44LTQuMiAwLTkuMS0uMS0xNC40LS4zQzEwOS42IDczIDE3OC4xIDMzIDI1NiAzM2M1OCAwIDExMC45IDIyLjIgMTUwLjYgNTguNS0xLS4xLTEuOS0uMi0yLjktLjItMjEuOSAwLTM3LjQgMTkuMS0zNy40IDM5LjYgMCAxOC40IDEwLjYgMzMuOSAyMS45IDUyLjMgOC41IDE0LjggMTguNCAzMy45IDE4LjQgNjEuNSAwIDE5LjEtNy4zIDQxLjItMTcgNzIuMWwtMjIuMiA3NC4zLTgwLjctMjM5LjZ6bTgxLjQgMjk3LjJsNjguMS0xOTYuOWMxMi43LTMxLjggMTctNTcuMiAxNy03OS45IDAtOC4yLS41LTE1LjgtMS41LTIyLjkgMTcuNCAzMS44IDI3LjMgNjguMiAyNy4zIDEwNyAwIDgyLjMtNDQuNiAxNTQuMS0xMTAuOSAxOTIuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXb3JkcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEuNyAxNjkuNGwxMDEuNSAyNzhDOTIuMiA0MTMgNDMuMyAzNDAuMiA0My4zIDI1NmMwLTMwLjkgNi42LTYwLjEgMTguNC04Ni42em0zMzcuOSA3NS45YzAtMjYuMy05LjQtNDQuNS0xNy41LTU4LjctMTAuOC0xNy41LTIwLjktMzIuNC0yMC45LTQ5LjkgMC0xOS42IDE0LjgtMzcuOCAzNS43LTM3LjguOSAwIDEuOC4xIDIuOC4yLTM3LjktMzQuNy04OC4zLTU1LjktMTQzLjctNTUuOS03NC4zIDAtMTM5LjcgMzguMS0xNzcuOCA5NS45IDUgLjIgOS43LjMgMTMuNy4zIDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc3LjUgMjMwLjRMMjQ5LjggMjQ3bC0zMy4xLTkwLjhjLTExLjUtLjctMjIuMy0yLTIyLjMtMi0xMS41LS43LTEwLjEtMTguMiAxLjMtMTcuNSAwIDAgMzUuMSAyLjcgNTYgMi43IDIyLjIgMCA1Ni43LTIuNyA1Ni43LTIuNyAxMS41LS43IDEyLjggMTYuMiAxLjQgMTcuNSAwIDAtMTEuNSAxLjMtMjQuMyAybDc2LjkgMjI4LjcgMjEuMi03MC45YzktMjkuNCAxNi01MC41IDE2LTY4Ljd6bS0xMzkuOSAyOS4zbC02My44IDE4NS41YzE5LjEgNS42IDM5LjIgOC43IDYwLjEgOC43IDI0LjggMCA0OC41LTQuMyA3MC42LTEyLjEtLjYtLjktMS4xLTEuOS0xLjUtMi45bC02NS40LTE3OS4yem0xODMtMTIwLjdjLjkgNi44IDEuNCAxNCAxLjQgMjEuOSAwIDIxLjYtNCA0NS44LTE2LjIgNzYuMmwtNjUgMTg3LjlDNDI2LjIgNDAzIDQ2OC43IDMzNC41IDQ2OC43IDI1NmMwLTM3LTkuNC03MS44LTI2LTEwMi4xek01MDQgMjU2YzAgMTM2LjgtMTExLjMgMjQ4LTI0OCAyNDhDMTE5LjIgNTA0IDggMzkyLjcgOCAyNTYgOCAxMTkuMiAxMTkuMiA4IDI1NiA4YzEzNi43IDAgMjQ4IDExMS4yIDI0OCAyNDh6bS0xMS40IDBjMC0xMzAuNS0xMDYuMi0yMzYuNi0yMzYuNi0yMzYuNkMxMjUuNSAxOS40IDE5LjQgMTI1LjUgMTkuNCAyNTZTMTI1LjYgNDkyLjYgMjU2IDQ5Mi42YzEzMC41IDAgMjM2LjYtMTA2LjEgMjM2LjYtMjM2LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV3BiZWdpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjIuNzk5IDMyMi4zNzRDNTE5LjAxIDM4Ni42ODIgNDY2Ljk2MSA0ODAgMzcwLjk0NCA0ODBjLTM5LjYwMiAwLTc4LjgyNC0xNy42ODctMTAwLjE0Mi01MC4wNC02Ljg4Ny4zNTYtMjIuNzAyLjM1Ni0yOS41OSAwQzIxOS44NDggNDYyLjM4MSAxODAuNTg4IDQ4MCAxNDEuMDY5IDQ4MGMtOTUuNDkgMC0xNDguMzQ4LTkyLjk5Ni05MS44NTUtMTU3LjYyNkMtMjkuOTI1IDE5MC41MjMgODAuNDc5IDMyIDI1Ni4wMDYgMzJjMTc1LjYzMiAwIDI4NS44NyAxNTguNjI2IDIwNi43OTMgMjkwLjM3NHptLTMzOS42NDctODIuOTcyaDQxLjUyOXYtNTguMDc1aC00MS41Mjl2NTguMDc1em0yMTcuMTggODYuMDcydi0yMy44MzljLTYwLjUwNiAyMC45MTUtMTMyLjM1NSA5LjE5OC0xODcuNTg5LTMzLjk3MWwuMjQ2IDI0Ljg5N2M1MS4xMDEgNDYuMzY3IDEzMS43NDYgNTcuODc1IDE4Ny4zNDMgMzIuOTEzem0tMTUwLjc1My04Ni4wNzJoMTY2LjA1OHYtNTguMDc1SDE4OS41Nzl2NTguMDc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZXhwbG9yZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDI1NmMwIDE0MS4yLTExNC43IDI1Ni0yNTYgMjU2QzExNC44IDUxMiAwIDM5Ny4zIDAgMjU2UzExNC43IDAgMjU2IDBzMjU2IDExNC43IDI1NiAyNTZ6bS0zMiAwYzAtMTIzLjItMTAwLjMtMjI0LTIyNC0yMjRDMTMyLjUgMzIgMzIgMTMyLjUgMzIgMjU2czEwMC41IDIyNCAyMjQgMjI0IDIyNC0xMDAuNSAyMjQtMjI0ek0xNjAuOSAxMjQuNmw4Ni45IDM3LjEtMzcuMSA4Ni45LTg2LjktMzcuMSAzNy4xLTg2Ljl6bTExMCAxNjkuMWw0Ni42IDk0aC0xNC42bC01MC0xMDAtNDguOSAxMDBoLTE0bDUxLjEtMTA2LjktMjIuMy05LjQgNi0xNCA2OC42IDI5LjEtNiAxNC4zLTE2LjUtNy4xem0tMTEuOC0xMTYuM2w2OC42IDI5LjQtMjkuNCA2OC4zTDIzMCAyNDZsMjkuMS02OC42em04MC4zIDQyLjlsNTQuNiAyMy4xLTIzLjQgNTQuMy01NC4zLTIzLjEgMjMuMS01NC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdwZm9ybXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDc1LjJ2MzYxLjdjMCAyNC4zLTE5IDQzLjItNDMuMiA0My4ySDQzLjJDMTkuMyA0ODAgMCA0NjEuNCAwIDQzNi44Vjc1LjJDMCA1MS4xIDE4LjggMzIgNDMuMiAzMmgzNjEuN2MyNCAwIDQzLjEgMTguOCA0My4xIDQzLjJ6bS0zNy4zIDM2MS42Vjc1LjJjMC0zLTIuNi01LjgtNS44LTUuOGgtOS4zTDI4NS4zIDE0NCAyMjQgOTQuMSAxNjIuOCAxNDQgNTIuNSA2OS4zaC05LjNjLTMuMiAwLTUuOCAyLjgtNS44IDUuOHYzNjEuN2MwIDMgMi42IDUuOCA1LjggNS44aDM2MS43YzMuMi4xIDUuOC0yLjcgNS44LTUuOHpNMTUwLjIgMTg2djM3SDc2Ljd2LTM3aDczLjV6bTAgNzQuNHYzNy4zSDc2Ljd2LTM3LjNoNzMuNXptMTEuMS0xNDcuM2w1NC00My43SDk2LjhsNjQuNSA0My43em0yMTAgNzIuOXYzN2gtMTk2di0zN2gxOTZ6bTAgNzQuNHYzNy4zaC0xOTZ2LTM3LjNoMTk2em0tODQuNi0xNDcuM2w2NC41LTQzLjdIMjMyLjhsNTMuOSA0My43ek0zNzEuMyAzMzV2MzcuM2gtOTkuNFYzMzVoOTkuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcHJlc3NyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTE3MS4zMyAxNTguNmMtMTUuMTggMzQuNTEtMzAuMzcgNjkuMDItNDUuNjMgMTAzLjUtMi40NCA1LjUxLTYuODkgOC4yNC0xMi45NyA4LjI0LTIzLjAyLS4wMS00Ni4wMy4wNi02OS4wNS0uMDUtNS4xMi0uMDMtOC4yNSAxLjg5LTEwLjM0IDYuNzItMTAuMTkgMjMuNTYtMjAuNjMgNDctMzAuOTUgNzAuNS0xLjU0IDMuNTEtNC4wNiA1LjI5LTcuOTIgNS4yOS00NS45NC0uMDEtOTEuODctLjAyLTEzNy44MSAwLTMuMTMgMC01LjYzLTEuMTUtNy43Mi0zLjQ1LTExLjIxLTEyLjMzLTIyLjQ2LTI0LjYzLTMzLjY4LTM2Ljk0LTIuNjktMi45NS0yLjc5LTYuMTgtMS4yMS05LjczIDguNjYtMTkuNTQgMTcuMjctMzkuMSAyNS44OS01OC42NiAxMi45My0yOS4zNSAyNS44OS01OC42OSAzOC43NS04OC4wOCAxLjctMy44OCA0LjI4LTUuNjggOC41NC01LjY1IDE0LjI0LjEgMjguNDguMDIgNDIuNzIuMDUgNi4yNC4wMSA5LjIgNC44NCA2LjY2IDEwLjU5LTEzLjYgMzAuNzctMjcuMTcgNjEuNTUtNDAuNzQgOTIuMzMtNS43MiAxMi45OS0xMS40MiAyNS45OS0xNy4wOSAzOS0zLjkxIDguOTUgNy4wOCAxMS45NyAxMC45NSA1LjYuMjMtLjM3LTEuNDIgNC4xOCAzMC4wMS02Ny42OSAxLjM2LTMuMSAzLjQxLTQuNCA2Ljc3LTQuMzkgMTUuMjEuMDggMzAuNDMuMDIgNDUuNjQuMDQgNS41Ni4wMSA3LjkxIDMuNjQgNS42NiA4Ljc1LTguMzMgMTguOTYtMTYuNzEgMzcuOS0yNC45OCA1Ni44OS00Ljk4IDExLjQzIDguMDggMTIuNDkgMTEuMjggNS4zMy4wNC0uMDggMjcuODktNjMuMzMgMzIuMTktNzMuMTYgMi4wMi00LjYxIDUuNDQtNi41MSAxMC4zNS02LjUgMjYuNDMuMDUgNTIuODYgMCA3OS4yOS4wNSAxMi40NC4wMiAxMy45My0xMy42NSAzLjktMTMuNjQtMjUuMjYuMDMtNTAuNTIuMDItNzUuNzguMDItNi4yNyAwLTcuODQtMi40Ny01LjI3LTguMjcgNS43OC0xMy4wNiAxMS41OS0yNi4xMSAxNy4zLTM5LjIxIDEuNzMtMy45NiA0LjUyLTUuNzkgOC44NC01Ljc4IDIzLjA5LjA2IDI1Ljk4LjAyIDEzMC43OC4wMyA2LjA4LS4wMSA4LjAzIDIuNzkgNS42MiA4LjI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVhib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgMzE4LjJjNDQuMyA1NC4zIDY0LjcgOTguOCA1NC40IDExOC43LTcuOSAxNS4xLTU2LjcgNDQuNi05Mi42IDU1LjktMjkuNiA5LjMtNjguNCAxMy4zLTEwMC40IDEwLjItMzguMi0zLjctNzYuOS0xNy40LTExMC4xLTM5QzkzLjMgNDQ1LjggODcgNDM4LjMgODcgNDIzLjRjMC0yOS45IDMyLjktODIuMyA4OS4yLTE0Mi4xIDMyLTMzLjkgNzYuNS03My43IDgxLjQtNzIuNiA5LjQgMi4xIDg0LjMgNzUuMSAxMTIuMyAxMDkuNXpNMTg4LjYgMTQzLjhjLTI5LjctMjYuOS01OC4xLTUzLjktODYuNC02My40LTE1LjItNS4xLTE2LjMtNC44LTI4LjcgOC4xLTI5LjIgMzAuNC01My41IDc5LjctNjAuMyAxMjIuNC01LjQgMzQuMi02LjEgNDMuOC00LjIgNjAuNSA1LjYgNTAuNSAxNy4zIDg1LjQgNDAuNSAxMjAuOSA5LjUgMTQuNiAxMi4xIDE3LjMgOS4zIDkuOS00LjItMTEtLjMtMzcuNSA5LjUtNjQgMTQuMy0zOSA1My45LTExMi45IDEyMC4zLTE5NC40em0zMTEuNiA2My41QzQ4My4zIDEyNy4zIDQzMi43IDc3IDQyNS42IDc3Yy03LjMgMC0yNC4yIDYuNS0zNiAxMy45LTIzLjMgMTQuNS00MSAzMS40LTY0LjMgNTIuOEMzNjcuNyAxOTcgNDI3LjUgMjgzLjEgNDQ4LjIgMzQ2YzYuOCAyMC43IDkuNyA0MS4xIDcuNCA1Mi4zLTEuNyA4LjUtMS43IDguNSAxLjQgNC42IDYuMS03LjcgMTkuOS0zMS4zIDI1LjQtNDMuNSA3LjQtMTYuMiAxNS00MC4yIDE4LjYtNTguNyA0LjMtMjIuNSAzLjktNzAuOC0uOC05My40ek0xNDEuMyA0M0MxODkgNDAuNSAyNTEgNzcuNSAyNTUuNiA3OC40Yy43LjEgMTAuNC00LjIgMjEuNi05LjcgNjMuOS0zMS4xIDk0LTI1LjggMTA3LjQtMjUuMi02My45LTM5LjMtMTUyLjctNTAtMjMzLjktMTEuNy0yMy40IDExLjEtMjQgMTEuOS05LjQgMTEuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE0MC40IDMyMC4ySDkzLjhjLTUuNSAwLTguNy01LjMtNi0xMC4zbDQ5LjMtODYuN2MuMSAwIC4xLS4xIDAtLjJsLTMxLjQtNTRjLTMtNS42LjItMTAuMSA2LTEwLjFoNDYuNmM1LjIgMCA5LjUgMi45IDEyLjkgOC43bDMxLjkgNTUuM2MtMS4zIDIuMy0xOCAzMS43LTUwLjEgODguMi0zLjUgNi4yLTcuNyA5LjEtMTIuNiA5LjF6bTIxOS43LTIxNC4xTDI1Ny4zIDI4Ni44di4ybDY1LjUgMTE5YzIuOCA1LjEuMSAxMC4xLTYgMTAuMWgtNDYuNmMtNS41IDAtOS43LTIuOS0xMi45LTguN2wtNjYtMTIwLjNjMi4zLTQuMSAzNi44LTY0LjkgMTAzLjQtMTgyLjMgMy4zLTUuOCA3LjQtOC43IDEyLjUtOC43aDQ2LjljNS43LS4xIDguOCA0LjcgNiAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2Mi43IDIxMGMtMS44IDMuMy0yNS4yIDQ0LjQtNzAuMSAxMjMuNS00LjkgOC4zLTEwLjggMTIuNS0xNy43IDEyLjVIOS44Yy03LjcgMC0xMi4xLTcuNS04LjUtMTQuNGw2OS0xMjEuM2MuMiAwIC4yLS4xIDAtLjNsLTQzLjktNzUuNmMtNC4zLTcuOC4zLTE0LjEgOC41LTE0LjFIMTAwYzcuMyAwIDEzLjMgNC4xIDE4IDEyLjJsNDQuNyA3Ny41ek0zODIuNiA0Ni4xbC0xNDQgMjUzdi4zTDMzMC4yIDQ2NmMzLjkgNy4xLjIgMTQuMS04LjUgMTQuMWgtNjUuMmMtNy42IDAtMTMuNi00LTE4LTEyLjJsLTkyLjQtMTY4LjVjMy4zLTUuOCA1MS41LTkwLjggMTQ0LjgtMjU1LjIgNC42LTguMSAxMC40LTEyLjIgMTcuNS0xMi4yaDY1LjdjOCAwIDEyLjMgNi43IDguNSAxNC4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlDb21iaW5hdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzMnY0NDhIMFYzMmg0NDh6TTIzNiAyODcuNUwzMTMuNSAxNDJoLTMyLjdMMjM1IDIzM2MtNC43IDkuMy05IDE4LjMtMTIuOCAyNi44TDIxMCAyMzNsLTQ1LjItOTFoLTM1bDc2LjcgMTQzLjh2OTQuNUgyMzZ2LTkyLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFob28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjIzLjY5LDE0MS4wNiwxNjcsMjg0LjIzLDExMSwxNDEuMDZIMTQuOTNMMTIwLjc2LDM5MC4xOSw4Mi4xOSw0ODBoOTQuMTdMMzE3LjI3LDE0MS4wNlptMTA1LjQsMTM1Ljc5YTU4LjIyLDU4LjIyLDAsMSwwLDU4LjIyLDU4LjIyQTU4LjIyLDU4LjIyLDAsMCwwLDMyOS4wOSwyNzYuODVaTTM5NC42NSwzMmwtOTMsMjIzLjQ3SDQwNi40NEw0OTkuMDcsMzJaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFtbWVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMS43OCAxNTIuMTdBMjMuMDYgMjMuMDYgMCAwIDAgNDAwLjkgMTEyYy0uODMuNDMtMS43MS45LTIuNjMgMS40LTE1LjI1IDguNC0xMTguMzMgODAuNjItMTA2LjY5IDg4Ljc3czgyLjA0LTIzLjYxIDEzMC4yLTUwem0wIDIxNy4xN2MtNDguMTYtMjYuMzgtMTE4LjY0LTU4LjEtMTMwLjItNTBzOTEuNDIgODAuMzUgMTA2LjY5IDg4Ljc0Yy45Mi41MSAxLjggMSAyLjYzIDEuNDFhMjMuMDcgMjMuMDcgMCAwIDAgMjAuODgtNDAuMTV6TTQ2NC4yMSAyMzdjLS45NSAwLTEuOTUtLjA2LTMtLjA2LTE3LjQgMC0xNDIuNTIgMTMuNzYtMTM2LjI0IDI2LjUxczgzLjMgMTguNzQgMTM4LjIxIDE4Ljc2YTIzIDIzIDAgMCAwIDEtNDUuMjF6TTMxIDk2LjY1YTI0Ljg4IDI0Ljg4IDAgMCAxIDQ2LjE0LTE4LjRsODEgMjA1LjA2aDEuMjFsNzctMjAzLjUzYTIzLjUyIDIzLjUyIDAgMCAxIDQ0LjQ1IDE1LjI3TDE3MS4yIDM2OC40NEMxNTIuNjUgNDE1LjY2IDEzNC4wOCA0NDggNzcuOTEgNDQ4YTEzOS42NyAxMzkuNjcgMCAwIDEtMjMuODEtMS45NSAyMS4zMSAyMS4zMSAwIDAgMSA2LjktNDEuNzdjLjY2LjA2IDEwLjkxLjY2IDEzLjg2LjY2IDMwLjQ3IDAgNDMuNzQtMTguOTQgNTguMDctNTkuNDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFuZGV4SW50ZXJuYXRpb25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjkuNSA1MTJWMzQ1LjlMMTguNSA0OGg1NS44bDgxLjggMjI5LjdMMjUwLjIgMGg1MS4zTDE4MC44IDM0Ny44VjUxMmgtNTEuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZYW5kZXggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUzLjEgMzE1LjhMNjUuNyA1MTJIMmw5Ni0yMDkuOGMtNDUuMS0yMi45LTc1LjItNjQuNC03NS4yLTE0MS4xQzIyLjcgNTMuNyA5MC44IDAgMTcxLjcgMEgyNTR2NTEyaC01NS4xVjMxNS44aC00NS44em00NS44LTI2OS4zaC0yOS40Yy00NC40IDAtODcuNCAyOS40LTg3LjQgMTE0LjYgMCA4Mi4zIDM5LjQgMTA4LjggODcuNCAxMDguOGgyOS40VjQ2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWWFybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTMuOSAzNDUuMmMtMzkgOS4zLTQ4LjQgMzIuMS0xMDQgNDcuNCAwIDAtMi43IDQtMTAuNCA1LjgtMTMuNCAzLjMtNjMuOSA2LTY4LjUgNi4xLTEyLjQuMS0xOS45LTMuMi0yMi04LjItNi40LTE1LjMgOS4yLTIyIDkuMi0yMi04LjEtNS05LTkuOS05LjgtOC4xLTIuNCA1LjgtMy42IDIwLjEtMTAuMSAyNi41LTguOCA4LjktMjUuNSA1LjktMzUuMy44LTEwLjgtNS43LjgtMTkuMi44LTE5LjJzLTUuOCAzLjQtMTAuNS0zLjZjLTYtOS4zLTE3LjEtMzcuMyAxMS41LTYyLTEuMy0xMC4xLTQuNi01My43IDQwLjYtODUuNiAwIDAtMjAuNi0yMi44LTEyLjktNDMuMyA1LTEzLjQgNy0xMy4zIDguNi0xMy45IDUuNy0yLjIgMTEuMy00LjYgMTUuNC05LjEgMjAuNi0yMi4yIDQ2LjgtMTggNDYuOC0xOHMxMi40LTM3LjggMjMuOS0zMC40YzMuNSAyLjMgMTYuMyAzMC42IDE2LjMgMzAuNnMxMy42LTcuOSAxNS4xLTVjOC4yIDE2IDkuMiA0Ni41IDUuNiA2NS4xLTYuMSAzMC42LTIxLjQgNDcuMS0yNy42IDU3LjUtMS40IDIuNCAxNi41IDEwIDI3LjggNDEuMyAxMC40IDI4LjYgMS4xIDUyLjcgMi44IDU1LjMuOCAxLjQgMTMuNy44IDM2LjQtMTMuMiAxMi44LTcuOSAyOC4xLTE2LjkgNDUuNC0xNyAxNi43LS41IDE3LjYgMTkuMiA0LjkgMjIuMnpNNDk2IDI1NmMwIDEzNi45LTExMS4xIDI0OC0yNDggMjQ4UzAgMzkyLjkgMCAyNTYgMTExLjEgOCAyNDggOHMyNDggMTExLjEgMjQ4IDI0OHptLTc5LjMgNzUuMmMtMS43LTEzLjYtMTMuMi0yMy0yOC0yMi44LTIyIC4zLTQwLjUgMTEuNy01Mi44IDE5LjItNC44IDMtOC45IDUuMi0xMi40IDYuOCAzLjEtNDQuNS0yMi41LTczLjEtMjguNy03OS40IDcuOC0xMS4zIDE4LjQtMjcuOCAyMy40LTUzLjIgNC4zLTIxLjcgMy01NS41LTYuOS03NC41LTEuNi0zLjEtNy40LTExLjItMjEtNy40LTkuNy0yMC0xMy0yMi4xLTE1LjYtMjMuOC0xLjEtLjctMjMuNi0xNi40LTQxLjQgMjgtMTIuMi45LTMxLjMgNS4zLTQ3LjUgMjIuOC0yIDIuMi01LjkgMy44LTEwLjEgNS40aC4xYy04LjQgMy0xMi4zIDkuOS0xNi45IDIyLjMtNi41IDE3LjQuMiAzNC42IDYuOCA0NS43LTE3LjggMTUuOS0zNyAzOS44LTM1LjcgODIuNS0zNCAzNi0xMS44IDczLTUuNiA3OS42LTEuNiAxMS4xIDMuNyAxOS40IDEyIDIzLjggMTIuNiA2LjcgMzAuMyA5LjYgNDMuOSAyLjggNC45IDUuMiAxMy44IDEwLjEgMzAgMTAuMSA2LjggMCA1OC0yLjkgNzIuNi02LjUgNi44LTEuNiAxMS41LTQuNSAxNC42LTcuMSA5LjgtMy4xIDM2LjgtMTIuMyA2Mi4yLTI4LjcgMTgtMTEuNyAyNC4yLTE0LjIgMzcuNi0xNy40IDEyLjktMy4yIDIxLTE1LjEgMTkuNC0yOC4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVllbHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDIuOSAyNDAuMzJsOTkuNjIgNDguNjFjMTkuMiA5LjQgMTYuMiAzNy41MS00LjUgNDIuNzFMMzAuNSAzNTguNDVhMjIuNzkgMjIuNzkgMCAwIDEtMjguMjEtMTkuNiAxOTcuMTYgMTk3LjE2IDAgMCAxIDktODUuMzIgMjIuOCAyMi44IDAgMCAxIDMxLjYxLTEzLjIxem00NCAyMzkuMjVhMTk5LjQ1IDE5OS40NSAwIDAgMCA3OS40MiAzMi4xMUEyMi43OCAyMi43OCAwIDAgMCAxOTIuOTQgNDkwbDMuOS0xMTAuODJjLjctMjEuMy0yNS41LTMxLjkxLTM5LjgxLTE2LjFsLTc0LjIxIDgyLjRhMjIuODIgMjIuODIgMCAwIDAgNC4wOSAzNC4wOXptMTQ1LjM0LTEwOS45Mmw1OC44MSA5NGEyMi45MyAyMi45MyAwIDAgMCAzNCA1LjUgMTk4LjM2IDE5OC4zNiAwIDAgMCA1Mi43MS02Ny42MUEyMyAyMyAwIDAgMCAzNjQuMTcgMzcwbC0xMDUuNDItMzQuMjZjLTIwLjMxLTYuNS0zNy44MSAxNS44LTI2LjUxIDMzLjkxem0xNDguMzMtMTMyLjIzYTE5Ny40NCAxOTcuNDQgMCAwIDAtNTAuNDEtNjkuMzEgMjIuODUgMjIuODUgMCAwIDAtMzQgNC40bC02MiA5MS45MmMtMTEuOSAxNy43IDQuNyA0MC42MSAyNS4yIDM0LjcxTDM2NiAyNjguNjNhMjMgMjMgMCAwIDAgMTQuNjEtMzEuMjF6TTYyLjExIDMwLjE4YTIyLjg2IDIyLjg2IDAgMCAwLTkuOSAzMmwxMDQuMTIgMTgwLjQ0YzExLjcgMjAuMiA0Mi42MSAxMS45IDQyLjYxLTExLjRWMjIuODhhMjIuNjcgMjIuNjcgMCAwIDAtMjQuNS0yMi44IDMyMC4zNyAzMjAuMzcgMCAwIDAtMTEyLjMzIDMwLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhWW9hc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTEuMyA3NmgxODZsLTcgMTguOWgtMTc5Yy0zOS43IDAtNzEuOSAzMS42LTcxLjkgNzAuM3YyMDUuNGMwIDM1LjQgMjQuOSA3MC4zIDg0IDcwLjNWNDYwSDkxLjNDNDEuMiA0NjAgMCA0MTkuOCAwIDM3MC41VjE2NS4yQzAgMTE1LjkgNDAuNyA3NiA5MS4zIDc2em0yMjkuMS01Nmg2Ni41QzI0My4xIDM5OC4xIDI0MS4yIDQxOC45IDIwMi4yIDQ1OS4zYy0yMC44IDIxLjYtNDkuMyAzMS43LTc4LjMgMzIuN3YtNTEuMWM0OS4yLTcuNyA2NC42LTQ5LjkgNjQuNi03NS4zIDAtMjAuMS42LTEyLjYtODIuMS0yMjMuMmg2MS40TDIxOC4yIDI5OSAzMjAuNCAyMHpNNDQ4IDE2MS41VjQ2MEgyMzRjNi42LTkuNiAxMC43LTE2LjMgMTIuMS0xOS40aDE4Mi41VjE2MS41YzAtMzIuNS0xNy4xLTUxLjktNDguMi02Mi45bDYuNy0xNy42YzQxLjcgMTMuNiA2MC45IDQzLjEgNjAuOSA4MC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg2LjggMjAyLjFsOTUuMiA1NC4xLTk1LjIgNTQuMVYyMDIuMXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDIgMTc2LjNzMC01OS42LTcuNi04OC4yYy00LjItMTUuOC0xNi41LTI4LjItMzIuMi0zMi40QzMzNy45IDEyOCAyMjQgMTI4IDIyNCAxMjhzLTExMy45IDAtMTQyLjIgNy43Yy0xNS43IDQuMi0yOCAxNi42LTMyLjIgMzIuNC03LjYgMjguNS03LjYgODguMi03LjYgODguMnMwIDU5LjYgNy42IDg4LjJjNC4yIDE1LjggMTYuNSAyNy43IDMyLjIgMzEuOUMxMTAuMSAzODQgMjI0IDM4NCAyMjQgMzg0czExMy45IDAgMTQyLjItNy43YzE1LjctNC4yIDI4LTE2LjEgMzIuMi0zMS45IDcuNi0yOC41IDcuNi04OC4xIDcuNi04OC4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlvdXR1YmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ5LjY1NSAxMjQuMDgzYy02LjI4MS0yMy42NS0yNC43ODctNDIuMjc2LTQ4LjI4NC00OC41OTdDNDU4Ljc4MSA2NCAyODggNjQgMjg4IDY0UzExNy4yMiA2NCA3NC42MjkgNzUuNDg2Yy0yMy40OTcgNi4zMjItNDIuMDAzIDI0Ljk0Ny00OC4yODQgNDguNTk3LTExLjQxMiA0Mi44NjctMTEuNDEyIDEzMi4zMDUtMTEuNDEyIDEzMi4zMDVzMCA4OS40MzggMTEuNDEyIDEzMi4zMDVjNi4yODEgMjMuNjUgMjQuNzg3IDQxLjUgNDguMjg0IDQ3LjgyMUMxMTcuMjIgNDQ4IDI4OCA0NDggMjg4IDQ0OHMxNzAuNzggMCAyMTMuMzcxLTExLjQ4NmMyMy40OTctNi4zMjEgNDIuMDAzLTI0LjE3MSA0OC4yODQtNDcuODIxIDExLjQxMi00Mi44NjcgMTEuNDEyLTEzMi4zMDUgMTEuNDEyLTEzMi4zMDVzMC04OS40MzgtMTEuNDEyLTEzMi4zMDV6bS0zMTcuNTEgMjEzLjUwOFYxNzUuMTg1bDE0Mi43MzkgODEuMjA1LTE0Mi43MzkgODEuMjAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVpoaWh1IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3MC41NCAxNDguMTN2MjE3LjU0bDIzLjQzLjAxIDcuNzEgMjYuMzcgNDIuMDEtMjYuMzdoNDkuNTNWMTQ4LjEzSDE3MC41NHptOTcuNzUgMTkzLjkzaC0yNy45NGwtMjcuOSAxNy41MS01LjA4LTE3LjQ3LTExLjktLjA0VjE3MS43NWg3Mi44MnYxNzAuMzF6bS0xMTguNDYtOTQuMzlIOTcuNWMxLjc0LTI3LjEgMi4yLTUxLjU5IDIuMi03My40Nmg1MS4xNnMxLjk3LTIyLjU2LTguNTgtMjIuMzFoLTg4LjVjMy40OS0xMy4xMiA3Ljg3LTI2LjY2IDEzLjEyLTQwLjY3IDAgMC0yNC4wNyAwLTMyLjI3IDIxLjU3LTMuMzkgOC45LTEzLjIxIDQzLjE0LTMwLjcgNzguMTIgNS44OS0uNjQgMjUuMzctMS4xOCAzNi44NC0yMi4yMSAyLjExLTUuODkgMi41MS02LjY2IDUuMTQtMTQuNTNoMjguODdjMCAxMC41LTEuMiA2Ni44OC0xLjY4IDczLjQ0SDIwLjgzYy0xMS43NCAwLTE1LjU2IDIzLjYyLTE1LjU2IDIzLjYyaDY1LjU4QzY2LjQ1IDMyMS4xIDQyLjgzIDM2My4xMiAwIDM5Ni4zNGMyMC40OSA1Ljg1IDQwLjkxLS45MyA1MS05LjkgMCAwIDIyLjk4LTIwLjkgMzUuNTktNjkuMjVsNTMuOTYgNjQuOTRzNy45MS0yNi44OS0xLjI0LTM5Ljk5Yy03LjU4LTguOTItMjguMDYtMzMuMDYtMzYuNzktNDEuODFMODcuOSAzMTEuOTVjNC4zNi0xMy45OCA2Ljk5LTI3LjU1IDcuODctNDAuNjdoNjEuNjVzLS4wOS0yMy42Mi03LjU5LTIzLjYydi4wMXptNDEyLjAyLTEuNmMyMC44My0yNS42NCA0NC45OC01OC41NyA0NC45OC01OC41N3MtMTguNjUtMTQuOC0yNy4zOC00LjA2Yy02IDguMTUtMzYuODMgNDguMi0zNi44MyA0OC4ybDE5LjIzIDE0LjQzem0tMTUwLjA5LTU5LjA5Yy05LjAxLTguMjUtMjUuOTEgMi4xMy0yNS45MSAyLjEzczM5LjUyIDU1LjA0IDQxLjEyIDU3LjQ1bDE5LjQ2LTEzLjczcy0yNS42Ny0zNy42MS0zNC42Ni00NS44NmgtLjAxek02NDAgMjU4LjM1Yy0xOS43OCAwLTEzMC45MS45My0xMzEuMDYuOTN2LTEwMWM0LjgxIDAgMTIuNDItLjQgMjIuODUtMS4yIDQwLjg4LTIuNDEgNzAuMTMtNCA4Ny43Ny00LjgxIDAgMCAxMi4yMi0yNy4xOS0uNTktMzMuNDQtMy4wNy0xLjE4LTIzLjE3IDQuNTgtMjMuMTcgNC41OHMtMTY1LjIyIDE2LjQ5LTIzMi4zNiAxOC4wNWMxLjYgOC44MiA3LjYyIDE3LjA4IDE1Ljc4IDE5LjU1IDEzLjMxIDMuNDggMjIuNjkgMS43IDQ5LjE1Ljg5IDI0LjgzLTEuNiA0My42OC0yLjQzIDU2LjUxLTIuNDN2OTkuODFIMzUxLjQxczIuODIgMjIuMzEgMjUuNTEgMjIuODVoMTA3Ljk0djcwLjkyYzAgMTMuOTctMTEuMTkgMjEuOTktMjQuNDggMjEuMTItMTQuMDguMTEtMjYuMDgtMS4xNS00MS42OS0xLjgxIDEuOTkgMy45NyA2LjMzIDE0LjM5IDE5LjMxIDIxLjg0IDkuODggNC44MSAxNi4xNyA2LjU3IDI2LjAyIDYuNTcgMjkuNTYgMCA0NS42Ny0xNy4yOCA0NC44OS00NS4zMXYtNzMuMzJoMTIyLjM2YzkuNjggMCA4LjctMjMuNzggOC43LTIzLjc4bC4wMy0uMDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTU3LjUyIDI3MmgzNi45NkwxNzYgMjE4Ljc4IDE1Ny41MiAyNzJ6TTM1MiAyNTZjLTEzLjIzIDAtMjQgMTAuNzctMjQgMjRzMTAuNzcgMjQgMjQgMjQgMjQtMTAuNzcgMjQtMjQtMTAuNzctMjQtMjQtMjR6TTQ2NCA2NEg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHpNMjUwLjU4IDM1MmgtMTYuOTRjLTYuODEgMC0xMi44OC00LjMyLTE1LjEyLTEwLjc1TDIxMS4xNSAzMjBoLTcwLjI5bC03LjM4IDIxLjI1QTE2IDE2IDAgMCAxIDExOC4zNiAzNTJoLTE2Ljk0Yy0xMS4wMSAwLTE4LjczLTEwLjg1LTE1LjEyLTIxLjI1TDE0MCAxNzYuMTJBMjMuOTk1IDIzLjk5NSAwIDAgMSAxNjIuNjcgMTYwaDI2LjY2QTIzLjk5IDIzLjk5IDAgMCAxIDIxMiAxNzYuMTNsNTMuNjkgMTU0LjYyYzMuNjEgMTAuNC00LjExIDIxLjI1LTE1LjExIDIxLjI1ek00MjQgMzM2YzAgOC44NC03LjE2IDE2LTE2IDE2aC0xNmMtNC44NSAwLTkuMDQtMi4yNy0xMS45OC01LjY4LTguNjIgMy42Ni0xOC4wOSA1LjY4LTI4LjAyIDUuNjgtMzkuNyAwLTcyLTMyLjMtNzItNzJzMzIuMy03MiA3Mi03MmM4LjQ2IDAgMTYuNDYgMS43MyAyNCA0LjQyVjE3NmMwLTguODQgNy4xNi0xNiAxNi0xNmgxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWRkcmVzc0Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjBWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzMjBjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQ4aDIwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMHYtNjRoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMHptLTIyOC0zMmMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTE4LjRDMTA2IDM4NCA5NiAzNzUuNCA5NiAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzUyIDk2YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkg4Ni40Qzc0IDM4NCA2NCAzNzUuNCA2NCAzNjQuOHYtMTkuMmMwLTMxLjggMzAuMS01Ny42IDY3LjItNTcuNmg1YzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDVjMzcuMSAwIDY3LjIgMjUuOCA2Ny4yIDU3LjZ2MTkuMnpNNTEyIDMxMmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTY0YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtNjRjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBZGp1c3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZjMCAxMzYuOTY2IDExMS4wMzMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY2IDggMjU2IDggOCAxMTkuMDMzIDggMjU2em0yNDggMTg0VjcyYzEwMS43MDUgMCAxODQgODIuMzExIDE4NCAxODQgMCAxMDEuNzA1LTgyLjMxMSAxODQtMTg0IDE4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBaXJGcmVzaGVuZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDE2MEg5NkM0MyAxNjAgMCAyMDMgMCAyNTZWNDgwQzAgNDk3LjYyNSAxNC4zNzUgNTEyIDMyIDUxMkgyODhDMzA1LjYyNSA1MTIgMzIwIDQ5Ny42MjUgMzIwIDQ4MFYyNTZDMzIwIDIwMyAyNzcgMTYwIDIyNCAxNjBaTTE2MCA0MTZDMTE1Ljg3NSA0MTYgODAgMzgwLjEyNSA4MCAzMzZTMTE1Ljg3NSAyNTYgMTYwIDI1NlMyNDAgMjkxLjg3NSAyNDAgMzM2UzIwNC4xMjUgNDE2IDE2MCA0MTZaTTIyNCAzMkMyMjQgMTQuMzc1IDIwOS42MjUgMCAxOTIgMEgxMjhDMTEwLjM3NSAwIDk2IDE0LjM3NSA5NiAzMlYxMjhIMjI0VjMyWk0zODEuNzgxIDUxLjU3OEMzODMgNTAuOTY5IDM4NCA0OS4zNTkgMzg0IDQ4QzM4NCA0Ni42MjUgMzgzIDQ1LjAzMSAzODEuNzgxIDQ0LjQyMkwzNTIgMzJMMzM5LjU2MiAyLjIxOUMzMzguOTY5IDEgMzM3LjM3NSAwIDMzNiAwUzMzMy4wMzEgMSAzMzIuNDA2IDIuMjE5TDMyMCAzMkwyOTAuMjE5IDQ0LjQyMkMyODkgNDUuMDMxIDI4OCA0Ni42MjUgMjg4IDQ4QzI4OCA0OS4zNTkgMjg5IDUwLjk2OSAyOTAuMjE5IDUxLjU3OEwzMjAgNjRMMzMyLjQwNiA5My43ODFDMzMzLjAzMSA5NSAzMzQuNjI1IDk2IDMzNiA5NlMzMzguOTY5IDk1IDMzOS41NjIgOTMuNzgxTDM1MiA2NEwzODEuNzgxIDUxLjU3OFpNNDQ4IDY0TDQ2MC40MDYgOTMuNzgxQzQ2MS4wMzEgOTUgNDYyLjYyNSA5NiA0NjQgOTZTNDY2Ljk2OSA5NSA0NjcuNTYyIDkzLjc4MUw0ODAgNjRMNTA5Ljc4MSA1MS41NzhDNTExIDUwLjk2OSA1MTIgNDkuMzU5IDUxMiA0OEM1MTIgNDYuNjI1IDUxMSA0NS4wMzEgNTA5Ljc4MSA0NC40MjJMNDgwIDMyTDQ2Ny41NjIgMi4yMTlDNDY2Ljk2OSAxIDQ2NS4zNzUgMCA0NjQgMFM0NjEuMDMxIDEgNDYwLjQwNiAyLjIxOUw0NDggMzJMNDE4LjIxOSA0NC40MjJDNDE3IDQ1LjAzMSA0MTYgNDYuNjI1IDQxNiA0OEM0MTYgNDkuMzU5IDQxNyA1MC45NjkgNDE4LjIxOSA1MS41NzhMNDQ4IDY0Wk00ODAgMjI0TDQ2Ny41NjIgMTk0LjIxOUM0NjYuOTY5IDE5MyA0NjUuMzc1IDE5MiA0NjQgMTkyUzQ2MS4wMzEgMTkzIDQ2MC40MDYgMTk0LjIxOUw0NDggMjI0TDQxOC4yMTkgMjM2LjQyMkM0MTcgMjM3LjAzMSA0MTYgMjM4LjYyNSA0MTYgMjQwQzQxNiAyNDEuMzU5IDQxNyAyNDIuOTY5IDQxOC4yMTkgMjQzLjU3OEw0NDggMjU2TDQ2MC40MDYgMjg1Ljc4MUM0NjEuMDMxIDI4NyA0NjIuNjI1IDI4OCA0NjQgMjg4UzQ2Ni45NjkgMjg3IDQ2Ny41NjIgMjg1Ljc4MUw0ODAgMjU2TDUwOS43ODEgMjQzLjU3OEM1MTEgMjQyLjk2OSA1MTIgMjQxLjM1OSA1MTIgMjQwQzUxMiAyMzguNjI1IDUxMSAyMzcuMDMxIDUwOS43ODEgMjM2LjQyMkw0ODAgMjI0Wk00NDUuNzgxIDE0Ny41NzhDNDQ3IDE0Ni45NjkgNDQ4IDE0NS4zNTkgNDQ4IDE0NEM0NDggMTQyLjYyNSA0NDcgMTQxLjAzMSA0NDUuNzgxIDE0MC40MjJMNDE2IDEyOEw0MDMuNTYyIDk4LjIxOUM0MDIuOTY5IDk3IDQwMS4zNzUgOTYgNDAwIDk2UzM5Ny4wMzEgOTcgMzk2LjQwNiA5OC4yMTlMMzg0IDEyOEwzNTQuMjE5IDE0MC40MjJDMzUzIDE0MS4wMzEgMzUyIDE0Mi42MjUgMzUyIDE0NEMzNTIgMTQ1LjM1OSAzNTMgMTQ2Ljk2OSAzNTQuMjE5IDE0Ny41NzhMMzg0IDE2MEwzOTYuNDA2IDE4OS43ODFDMzk3LjAzMSAxOTEgMzk4LjYyNSAxOTIgNDAwIDE5MlM0MDIuOTY5IDE5MSA0MDMuNTYyIDE4OS43ODFMNDE2IDE2MEw0NDUuNzgxIDE0Ny41NzhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxpZ25DZW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xMDguMSA5NmgyMzEuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzUyIDgzLjlWNDQuMDlBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDMySDEwOC4xQTEyLjA5IDEyLjA5IDAgMCAwIDk2IDQ0LjA5VjgzLjlBMTIuMSAxMi4xIDAgMCAwIDEwOC4xIDk2em0yMzEuODEgMjU2QTEyLjA5IDEyLjA5IDAgMCAwIDM1MiAzMzkuOXYtMzkuODFBMTIuMDkgMTIuMDkgMCAwIDAgMzM5LjkxIDI4OEgxMDguMUExMi4wOSAxMi4wOSAwIDAgMCA5NiAzMDAuMDl2MzkuODFhMTIuMSAxMi4xIDAgMCAwIDEyLjEgMTIuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkp1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMyIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTEyOEgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbGlnbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODMgMzUyaDI2Mi4zNEExMi44MiAxMi44MiAwIDAgMCAyODggMzM5LjE3di0zOC4zNEExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMjg4SDEyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDEyLjgzIDM1MnptMC0yNTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDI4OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCAyNzUuMTcgMzJIMTIuODNBMTIuODIgMTIuODIgMCAwIDAgMCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxMi44MyA5NnpNNDMyIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wIDI1NkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFsaWduUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMjI0aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQxNiAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0zODRIMTcyLjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE2MCA0NC44M3YzOC4zNEExMi44MiAxMi44MiAwIDAgMCAxNzIuODMgOTZoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCA4My4xN1Y0NC44M0ExMi44MiAxMi44MiAwIDAgMCA0MzUuMTcgMzJ6bTAgMjU2SDE3Mi44M0ExMi44MiAxMi44MiAwIDAgMCAxNjAgMzAwLjgzdjM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDE3Mi44MyAzNTJoMjYyLjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQ0OCAzMzkuMTd2LTM4LjM0QTEyLjgyIDEyLjgyIDAgMCAwIDQzNS4xNyAyODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQWxsZXJnaWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxMTJjLTE3LjYgMC0zMiAxNC40LTMyIDMydjcyYzAgNC40LTMuNiA4LTggOGgtMTZjLTQuNCAwLTgtMy42LTgtOFY2NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxNTJjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04VjMyYzAtMTcuNi0xNC40LTMyLTMyLTMycy0zMiAxNC40LTMyIDMydjE4NGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWNjRjMC0xNy42LTE0LjQtMzItMzItMzJTOTYgNDYuNCA5NiA2NHYyNDFsLTIzLjYtMzIuNWMtMTMtMTcuOS0zOC0yMS44LTU1LjktOC44cy0yMS44IDM4LTguOCA1NS45bDEyNS42IDE3Mi43YzkgMTIuNCAyMy41IDE5LjggMzguOCAxOS44aDE5Ny42YzIyLjMgMCA0MS42LTE1LjMgNDYuNy0zN2wyNi41LTExMi43YzMuMi0xMy43IDQuOS0yOC4zIDUuMS00Mi4zVjE0NGMwLTE3LjYtMTQuNC0zMi0zMi0zMnpNMTc2IDQxNmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTY0IDEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTk2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTY0IDMyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyIDY0Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTMyLTEyOGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtYnVsYW5jZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTE0NC0yNDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4em0xNzYgMjQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFtZXJpY2FuU2lnbkxhbmd1YWdlSW50ZXJwcmV0aW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5MC41NDcgMTg5LjAzOWMtMjAuMjk1LTEwLjE0OS00NC4xNDctMTEuMTk5LTY0LjczOS0zLjg5IDQyLjYwNiAwIDcxLjIwOCAyMC40NzUgODUuNTc4IDUwLjU3NiA4LjU3NiAxNy44OTktNS4xNDggMzguMDcxLTIzLjYxNyAzOC4wNzEgMTguNDI5IDAgMzIuMjExIDIwLjEzNiAyMy42MTcgMzguMDcxLTE0LjcyNSAzMC44NDYtNDYuMTIzIDUwLjg1NC04MC4yOTggNTAuODU0LS41NTcgMC05NC40NzEtOC42MTUtOTQuNDcxLTguNjE1bC02Ni40MDYgMzMuMzQ3Yy05LjM4NCA0LjY5My0xOS44MTUuMzc5LTIzLjg5NS03Ljc4MUwxLjg2IDI5MC43NDdjLTQuMTY3LTguNjE1LTEuMTExLTE4Ljg5NyA2Ljk0Ni0yMy42MjFsNTguMDcyLTMzLjA2OUwxMDggMTU5Ljg2MWM2LjM5LTU3LjI0NSAzNC43MzEtMTA5Ljc2NyA3OS43NDMtMTQ2LjcyNiAxMS4zOTEtOS40NDggMjguMzQxLTcuNzgxIDM3LjUxIDMuNjEzIDkuNDQ2IDExLjM5NCA3Ljc4IDI4LjA2Ny0zLjYxMiAzNy41MTYtMTIuNTAzIDEwLjU1OS0yMy42MTggMjIuNTA5LTMyLjUwOSAzNS41NyAyMS42NzItMTQuNzI5IDQ2LjY3OS0yNC43MzIgNzQuMTg2LTI4LjA2NyAxNC43MjUtMS45NDUgMjguMDYzIDguMzM2IDI5LjczIDIzLjA2NSAxLjk0NSAxNC43MjgtOC4zMzYgMjguMDY3LTIzLjA2MiAyOS43MzQtMTYuMTE2IDEuOTQ1LTMxLjEyIDcuNTAzLTQ0LjE3OCAxNS4yODQgMjYuMTE0LTUuNzEzIDU4LjcxMi0zLjEzOCA4OC4wNzkgMTEuMTE1IDEzLjMzNiA2LjY2OSAxOC44OTMgMjIuNTA5IDEyLjIyNCAzNS44NDgtNi4zODkgMTMuMDYtMjIuNTA0IDE4LjYxNy0zNS41NjQgMTIuMjI2em0tMjcuMjI5IDY5LjQ3MmMtNi4xMTItMTIuNTA1LTE4LjMzOC0yMC4yODYtMzIuMjMxLTIwLjI4NmEzNS40NiAzNS40NiAwIDAgMC0zNS41NjUgMzUuNTdjMCAyMS40MjggMTcuODA4IDM1LjU3IDM1LjU2NSAzNS41NyAxMy44OTMgMCAyNi4xMTktNy43ODEgMzIuMjMxLTIwLjI4NiA0LjQ0Ni05LjQ0OSAxMy42MTQtMTUuMDA2IDIzLjMzOS0xNS4yODQtOS43MjUtLjI3Ny0xOC44OTMtNS44MzUtMjMuMzM5LTE1LjI4NHptMzc0LjgyMS0zNy4yMzdjNC4xNjggOC42MTUgMS4xMTEgMTguODk3LTYuOTQ2IDIzLjYyMWwtNTguMDcxIDMzLjA2OUw1MzIgMzUyLjE2Yy02LjM5IDU3LjI0NS0zNC43MzEgMTA5Ljc2Ny03OS43NDMgMTQ2LjcyNi0xMC45MzIgOS4xMTItMjcuNzk5IDguMTQ0LTM3LjUxLTMuNjEzLTkuNDQ2LTExLjM5NC03Ljc4LTI4LjA2NyAzLjYxMy0zNy41MTYgMTIuNTAzLTEwLjU1OSAyMy42MTctMjIuNTA5IDMyLjUwOC0zNS41Ny0yMS42NzIgMTQuNzI5LTQ2LjY3OSAyNC43MzItNzQuMTg2IDI4LjA2Ny0xMC4wMjEgMi41MDYtMjcuNTUyLTUuNjQzLTI5LjczLTIzLjA2NS0xLjk0NS0xNC43MjggOC4zMzYtMjguMDY3IDIzLjA2Mi0yOS43MzQgMTYuMTE2LTEuOTQ2IDMxLjEyLTcuNTAzIDQ0LjE3OC0xNS4yODQtMjYuMTE0IDUuNzEzLTU4LjcxMiAzLjEzOC04OC4wNzktMTEuMTE1LTEzLjMzNi02LjY2OS0xOC44OTMtMjIuNTA5LTEyLjIyNC0zNS44NDggNi4zODktMTMuMDYxIDIyLjUwNS0xOC42MTkgMzUuNTY1LTEyLjIyNyAyMC4yOTUgMTAuMTQ5IDQ0LjE0NyAxMS4xOTkgNjQuNzM5IDMuODktNDIuNjA2IDAtNzEuMjA4LTIwLjQ3NS04NS41NzgtNTAuNTc2LTguNTc2LTE3Ljg5OSA1LjE0OC0zOC4wNzEgMjMuNjE3LTM4LjA3MS0xOC40MjkgMC0zMi4yMTEtMjAuMTM2LTIzLjYxNy0zOC4wNzEgMTQuMDMzLTI5LjM5NiA0NC4wMzktNTAuODg3IDgxLjk2Ni01MC44NTRsOTIuODAzIDguNjE1IDY2LjQwNi0zMy4zNDdjOS40MDgtNC43MDQgMTkuODI4LS4zNTQgMjMuODk0IDcuNzgxbDQ0LjQ1NSA4OC45MjZ6bS0yMjkuMjI3LTE4LjYxOGMtMTMuODkzIDAtMjYuMTE5IDcuNzgxLTMyLjIzMSAyMC4yODYtNC40NDYgOS40NDktMTMuNjE0IDE1LjAwNi0yMy4zMzkgMTUuMjg0IDkuNzI1LjI3OCAxOC44OTMgNS44MzYgMjMuMzM5IDE1LjI4NCA2LjExMiAxMi41MDUgMTguMzM4IDIwLjI4NiAzMi4yMzEgMjAuMjg2YTM1LjQ2IDM1LjQ2IDAgMCAwIDM1LjU2NS0zNS41N2MwLTIxLjQyOS0xNy44MDgtMzUuNTctMzUuNTY1LTM1LjU3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuY2hvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45NzEgMzUyaDMyLjM5NEM2Ny4xNzIgNDU0LjczNSAxODEuOTQ0IDUxMiAyODggNTEyYzEwNi4yMjkgMCAyMjAuODUzLTU3LjM4IDI0Mi42MzUtMTYwaDMyLjM5NGMxMC42OTEgMCAxNi4wNDUtMTIuOTI2IDguNDg1LTIwLjQ4NWwtNjcuMDI5LTY3LjAyOWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwbC02Ny4wMjkgNjcuMDI5Yy03LjU2IDcuNTYtMi4yMDYgMjAuNDg1IDguNDg1IDIwLjQ4NWgzNS4xNDZjLTIwLjI5IDU0LjMxNy04NC45NjMgODYuNTg4LTE0NC4xMTcgOTQuMDE1VjI1Nmg1MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01MnYtNS40N2MzNy4yODEtMTMuMTc4IDYzLjk5NS00OC43MjUgNjQtOTAuNTE4QzM4NC4wMDUgNDMuNzcyIDM0MS42MDUuNzM4IDI4OS4zNy4wMSAyMzUuNzIzLS43MzkgMTkyIDQyLjUyNSAxOTIgOTZjMCA0MS43OTggMjYuNzE2IDc3LjM1IDY0IDkwLjUzVjE5MmgtNTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYxOTAuMDE1Yy01OC45MzYtNy4zOTktMTIzLjgyLTM5LjY3OS0xNDQuMTE3LTk0LjAxNWgzNS4xNDZjMTAuNjkxIDAgMTYuMDQ1LTEyLjkyNiA4LjQ4NS0yMC40ODVsLTY3LjAyOS02Ny4wMjljLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw0LjQ4NSAzMzEuNTE1Qy0zLjA3NCAzMzkuMDc0IDIuMjggMzUyIDEyLjk3MSAzNTJ6TTI4OCA2NGMxNy42NDUgMCAzMiAxNC4zNTUgMzIgMzJzLTE0LjM1NSAzMi0zMiAzMi0zMi0xNC4zNTUtMzItMzIgMTQuMzU1LTMyIDMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDMgMjU2LjNMNyAxMjAuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBMMzEzIDg2LjNjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlsLTEzNiAxMzZjLTkuNCA5LjUtMjQuNiA5LjUtMzQgLjF6bTM0IDE5MmwxMzYtMTM2YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0yMi42LTIyLjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE2MCAzNTIuMWwtOTYuNC05Ni40Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDI3OC4zYy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMzYgMTM2YzkuNCA5LjUgMjQuNiA5LjUgMzQgLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVEb3VibGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy43IDIzOWwxMzYtMTM2YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOUwzMTkuOSAyNTZsOTYuNCA5Ni40YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDM5My43IDQwOWMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTEzNi0xMzZjLTkuNS05LjQtOS41LTI0LjYtLjEtMzR6bS0xOTIgMzRsMTM2IDEzNmM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyMi42LTIyLjZjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMTI3LjkgMjU2bDk2LjQtOTYuNGM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyMDEuNyAxMDNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMzYgMTM2Yy05LjUgOS40LTkuNSAyNC42LS4xIDM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ2xlRG91YmxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0LjMgMjczbC0xMzYgMTM2Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuNi0yMi42Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWw5Ni40LTk2LjQtOTYuNC05Ni40Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOUw1NC4zIDEwM2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMzYgMTM2YzkuNSA5LjQgOS41IDI0LjYuMSAzNHptMTkyLTM0bC0xMzYtMTM2Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjIuNiAyMi42Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWw5Ni40IDk2LjQtOTYuNCA5Ni40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwyMi42IDIyLjZjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTM2LTEzNmM5LjQtOS4yIDkuNC0yNC40IDAtMzMuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvdWJsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NyAyNTUuN2wxMzYgMTM2YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0yMi42IDIyLjZjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDE2MCAzNTEuOWwtOTYuNCA5Ni40Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDQyNS43Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOWwxMzYtMTM2YzkuNC05LjUgMjQuNi05LjUgMzQtLjF6bS0zNC0xOTJMNyAxOTkuN2MtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMjIuNiAyMi42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDk2LjQtOTYuNCA5Ni40IDk2LjRjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjIuNi0yMi42YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xMzYtMTM2Yy05LjItOS40LTI0LjQtOS40LTMzLjggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQzIDM1Mi4zTDcgMjE2LjNjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjYtMjIuNmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw5Ni40IDk2LjQgOTYuNC05Ni40YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDIyLjYgMjIuNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMTM2IDEzNmMtOS4yIDkuNC0yNC40IDkuNC0zMy44IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxLjcgMjM5bDEzNi0xMzZjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDEyNy45IDI1Nmw5Ni40IDk2LjRjOS40IDkuNCA5LjQgMjQuNiAwIDMzLjlMMjAxLjcgNDA5Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMTM2LTEzNmMtOS41LTkuNC05LjUtMjQuNi0uMS0zNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBbmdsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNC4zIDI3M2wtMTM2IDEzNmMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBsLTIyLjYtMjIuNmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsOTYuNC05Ni40LTk2LjQtOTYuNGMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMNTQuMyAxMDNjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMTM2IDEzNmM5LjUgOS40IDkuNSAyNC42LjEgMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5nbGVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzcgMTU5LjdsMTM2IDEzNmM5LjQgOS40IDkuNCAyNC42IDAgMzMuOWwtMjIuNiAyMi42Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwxNjAgMjU1LjlsLTk2LjQgOTYuNGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMNyAzMjkuN2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMTM2LTEzNmM5LjQtOS41IDI0LjYtOS41IDM0LS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFuZ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyNDBjMC05LjMgNC4xLTE3LjUgMTAuNS0yMy40bC0zMS05LjNjLTguNS0yLjUtMTMuMy0xMS41LTEwLjctMTkuOSAyLjUtOC41IDExLjQtMTMuMiAxOS45LTEwLjdsODAgMjRjOC41IDIuNSAxMy4zIDExLjUgMTAuNyAxOS45LTIuMSA2LjktOC40IDExLjQtMTUuMyAxMS40LS41IDAtMS4xLS4yLTEuNy0uMi43IDIuNyAxLjcgNS4zIDEuNyA4LjIgMCAxNy43LTE0LjMgMzItMzIgMzJTMTM2IDI1Ny43IDEzNiAyNDB6bTE2OCAxNTQuMmMtMjcuOC0zMy40LTg0LjItMzMuNC0xMTIuMSAwLTEzLjUgMTYuMy0zOC4yLTQuMi0yNC42LTIwLjUgMjAtMjQgNDkuNC0zNy44IDgwLjYtMzcuOHM2MC42IDEzLjggODAuNiAzNy44YzEzLjggMTYuNS0xMS4xIDM2LjYtMjQuNSAyMC41em03Ni42LTE4Ni45bC0zMSA5LjNjNi4zIDUuOCAxMC41IDE0LjEgMTAuNSAyMy40IDAgMTcuNy0xNC4zIDMyLTMyIDMycy0zMi0xNC4zLTMyLTMyYzAtMi45LjktNS42IDEuNy04LjItLjYuMS0xLjEuMi0xLjcuMi02LjkgMC0xMy4yLTQuNS0xNS4zLTExLjQtMi41LTguNSAyLjMtMTcuNCAxMC43LTE5LjlsODAtMjRjOC40LTIuNSAxNy40IDIuMyAxOS45IDEwLjcgMi41IDguNS0yLjMgMTcuNC0xMC44IDE5Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQW5raCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMjU2aC00NC42MkMyNzIuNDYgMjIyLjAxIDI4OCAxODEuNjUgMjg4IDE0NCAyODggNTUuNjMgMjMwLjY5IDAgMTYwIDBTMzIgNTUuNjMgMzIgMTQ0YzAgMzcuNjUgMTUuNTQgNzguMDEgMzYuNjIgMTEySDI0Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djMyYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoOTZ2MTUyYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoMzJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNFYzMzZoOTZjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtMzJjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTYwIDgwYzI5LjYxIDAgNDggMjQuNTIgNDggNjQgMCAzNC42Ni0yNy4xNCA3OC4xNC00OCAxMDAuODctMjAuODYtMjIuNzItNDgtNjYuMjEtNDgtMTAwLjg3IDAtMzkuNDggMTguMzktNjQgNDgtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXBwbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUwLjg1IDEyOWMyNS45NyA0LjY3IDQ3LjI3IDE4LjY3IDYzLjkyIDQyIDE0LjY1IDIwLjY3IDI0LjY0IDQ2LjY3IDI5Ljk2IDc4IDQuNjcgMjguNjcgNC4zMiA1Ny4zMy0xIDg2LTcuOTkgNDcuMzMtMjMuOTcgODctNDcuOTQgMTE5LTI4LjY0IDM4LjY3LTY0LjU5IDU4LTEwNy44NyA1OC0xMC42NiAwLTIyLjMtMy4zMy0zNC45Ni0xMC04LjY2LTUuMzMtMTguMzEtOC0yOC45Ny04cy0yMC4zIDIuNjctMjguOTcgOGMtMTIuNjYgNi42Ny0yNC4zIDEwLTM0Ljk2IDEwLTQzLjI4IDAtNzkuMjMtMTkuMzMtMTA3Ljg3LTU4LTIzLjk3LTMyLTM5Ljk1LTcxLjY3LTQ3Ljk0LTExOS01LjMyLTI4LjY3LTUuNjctNTcuMzMtMS04NiA1LjMyLTMxLjMzIDE1LjMxLTU3LjMzIDI5Ljk2LTc4IDE2LjY1LTIzLjMzIDM3Ljk1LTM3LjMzIDYzLjkyLTQyIDE1Ljk4LTIuNjcgMzcuOTUtLjMzIDY1LjkyIDcgMjMuOTcgNi42NyA0NC4yOCAxNC42NyA2MC45MyAyNCAxNi42NS05LjMzIDM2Ljk2LTE3LjMzIDYwLjkzLTI0IDI3Ljk4LTcuMzMgNDkuOTYtOS42NyA2NS45NC03em0tNTQuOTQtNDFjLTkuMzIgOC42Ny0yMS42NSAxNS0zNi45NiAxOS0xMC42NiAzLjMzLTIyLjMgNS0zNC45NiA1bC0xNC45OC0xYy0xLjMzLTkuMzMtMS4zMy0yMCAwLTMyIDIuNjctMjQgMTAuMzItNDIuMzMgMjIuOTctNTUgOS4zMi04LjY3IDIxLjY1LTE1IDM2Ljk2LTE5IDEwLjY2LTMuMzMgMjIuMy01IDM0Ljk2LTVsMTQuOTggMSAxIDE1YzAgMTIuNjctMS42NyAyNC4zMy00Ljk5IDM1LTMuOTkgMTUuMzMtMTAuMzEgMjcuNjctMTguOTggMzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA0NDhjMCAxNy43IDE0LjMgMzIgMzIgMzJoMzg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE2MEgzMnYyODh6bTE2MC0yMTJjMC02LjYgNS40LTEyIDEyLTEyaDEwNGM2LjYgMCAxMiA1LjQgMTIgMTJ2OGMwIDYuNi01LjQgMTItMTIgMTJIMjA0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTh6TTQ4MCAzMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djQ4YzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2VjY0YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFyY2h3YXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDQ0OGgtMTZWOTZIMzJ2MzUySDE2LjAyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNkgxNzZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzIwYzAtNTMuMDIgNDIuOTgtOTYgOTYtOTZzOTYgNDIuOTggOTYgOTZsLjAyIDE2MHYxNmMwIDguODQgNy4xNiAxNiAxNiAxNkg1NjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0wLTQ0OEgxNkM3LjE2IDAgMCA3LjE2IDAgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNTQ0YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTIxMiAxNDB2MTE2aC03MC45Yy0xMC43IDAtMTYuMSAxMy04LjUgMjAuNWwxMTQuOSAxMTQuM2M0LjcgNC43IDEyLjIgNC43IDE2LjkgMGwxMTQuOS0xMTQuM2M3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDMwMFYxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02NGMtNi42IDAtMTIgNS40LTEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTA0QzExOSA1MDQgOCAzOTMgOCAyNTZTMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OHptMTE2LTI5MkgyNTZ2LTcwLjljMC0xMC43LTEzLTE2LjEtMjAuNS04LjVMMTIxLjIgMjQ3LjVjLTQuNyA0LjctNC43IDEyLjIgMCAxNi45bDExNC4zIDExNC45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWMzAwaDExNmM2LjYgMCAxMi01LjQgMTItMTJ2LTY0YzAtNi42LTUuNC0xMi0xMi0xMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0FsdENpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6TTE0MCAzMDBoMTE2djcwLjljMCAxMC43IDEzIDE2LjEgMjAuNSA4LjVsMTE0LjMtMTE0LjljNC43LTQuNyA0LjctMTIuMiAwLTE2LjlsLTExNC4zLTExNWMtNy42LTcuNi0yMC41LTIuMi0yMC41IDguNVYyMTJIMTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NjRjMCA2LjYgNS40IDEyIDEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZDOCAxMTkgMTE5IDggMjU2IDhzMjQ4IDExMSAyNDggMjQ4LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NnptMjkyIDExNlYyNTZoNzAuOWMxMC43IDAgMTYuMS0xMyA4LjUtMjAuNUwyNjQuNSAxMjEuMmMtNC43LTQuNy0xMi4yLTQuNy0xNi45IDBsLTExNSAxMTQuM2MtNy42IDcuNi0yLjIgMjAuNSA4LjUgMjAuNUgyMTJ2MTE2YzAgNi42IDUuNCAxMiAxMiAxMmg2NGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTZjMCAxMzctMTExIDI0OC0yNDggMjQ4UzggMzkzIDggMjU2IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OHptLTE0My42LTI4LjlMMjg4IDMwMi42VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtMTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE4Mi42bC03Mi40LTc1LjVjLTkuMy05LjctMjQuOC05LjktMzQuMy0uNGwtMTAuOSAxMWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlMMjM5IDQwNC4zYzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDEzMi43LTEzMi43YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xMC45LTExYy05LjUtOS41LTI1LTkuMy0zNC4zLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MDRDMTE5IDUwNCA4IDM5MyA4IDI1NlMxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4em0yOC45LTE0My42TDIwOS40IDI4OEgzOTJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDIwOS40bDc1LjUtNzIuNGM5LjctOS4zIDkuOS0yNC44LjQtMzQuM2wtMTEtMTAuOWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTA3LjcgMjM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMzIuNyAxMzIuN2M5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwxMS0xMC45YzkuNS05LjUgOS4zLTI1LS40LTM0LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dDaXJjbGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOGMxMzcgMCAyNDggMTExIDI0OCAyNDhTMzkzIDUwNCAyNTYgNTA0IDggMzkzIDggMjU2IDExOSA4IDI1NiA4em0tMjguOSAxNDMuNmw3NS41IDcyLjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxODIuNmwtNzUuNSA3Mi40Yy05LjcgOS4zLTkuOSAyNC44LS40IDM0LjNsMTEgMTAuOWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMEw0MDQuMyAyNzNjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjcxLjYgMTA2LjNjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwbC0xMSAxMC45Yy05LjUgOS42LTkuMyAyNS4xLjQgMzQuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0NpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTE0My42IDI4LjlsNzIuNC03NS41VjM5MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyMDkuNGw3Mi40IDc1LjVjOS4zIDkuNyAyNC44IDkuOSAzNC4zLjRsMTAuOS0xMWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOUwyNzMgMTA3LjdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDEwNi4zIDI0MC40Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOWwxMC45IDExYzkuNiA5LjUgMjUuMSA5LjMgMzQuNC0uNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDEzLjEgMjIyLjVsMjIuMiAyMi4yYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDI0MSA0NzNjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDEyLjcgMjc4LjZjLTkuNC05LjQtOS40LTI0LjYgMC0zMy45bDIyLjItMjIuMmM5LjUtOS41IDI1LTkuMyAzNC4zLjRMMTg0IDM0My40VjU2YzAtMTMuMyAxMC43LTI0IDI0LTI0aDMyYzEzLjMgMCAyNCAxMC43IDI0IDI0djI4Ny40bDExNC44LTEyMC41YzkuMy05LjggMjQuOC0xMCAzNC4zLS40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTcuNSA0NDUuMWwtMjIuMiAyMi4yYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEw3IDI3M2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjAxLjQgNDQuN2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwyMi4yIDIyLjJjOS41IDkuNSA5LjMgMjUtLjQgMzQuM0wxMzYuNiAyMTZINDI0YzEzLjMgMCAyNCAxMC43IDI0IDI0djMyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDEzNi42bDEyMC41IDExNC44YzkuOCA5LjMgMTAgMjQuOC40IDM0LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTAuNSA2Ni45bDIyLjItMjIuMmM5LjQtOS40IDI0LjYtOS40IDMzLjkgMEw0NDEgMjM5YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDI0Ni42IDQ2Ny4zYy05LjQgOS40LTI0LjYgOS40LTMzLjkgMGwtMjIuMi0yMi4yYy05LjUtOS41LTkuMy0yNSAuNC0zNC4zTDMxMS40IDI5NkgyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjR2LTMyYzAtMTMuMyAxMC43LTI0IDI0LTI0aDI4Ny40TDE5MC45IDEwMS4yYy05LjgtOS4zLTEwLTI0LjgtLjQtMzQuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0LjkgMjg5LjVsLTIyLjItMjIuMmMtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlMMjA3IDM5YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDE5NC4zIDE5NC4zYzkuNCA5LjQgOS40IDI0LjYgMCAzMy45TDQxMyAyODkuNGMtOS41IDkuNS0yNSA5LjMtMzQuMy0uNEwyNjQgMTY4LjZWNDU2YzAgMTMuMy0xMC43IDI0LTI0IDI0aC0zMmMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTY4LjZMNjkuMiAyODkuMWMtOS4zIDkuOC0yNC44IDEwLTM0LjMuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3Ny45NDEgMTY5Ljk0MVYyMTZIMTM0LjA1OXYtNDYuMDU5YzAtMjEuMzgyLTI1Ljg1MS0zMi4wOS00MC45NzEtMTYuOTcxTDcuMDI5IDIzOS4wMjljLTkuMzczIDkuMzczLTkuMzczIDI0LjU2OCAwIDMzLjk0MWw4Ni4wNTkgODYuMDU5YzE1LjExOSAxNS4xMTkgNDAuOTcxIDQuNDExIDQwLjk3MS0xNi45NzFWMjk2aDI0My44ODJ2NDYuMDU5YzAgMjEuMzgyIDI1Ljg1MSAzMi4wOSA0MC45NzEgMTYuOTcxbDg2LjA1OS04Ni4wNTljOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY4IDAtMzMuOTQxbC04Ni4wNTktODYuMDU5Yy0xNS4xMTktMTUuMTItNDAuOTcxLTQuNDEyLTQwLjk3MSAxNi45N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBcnJvd3NBbHRWIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNC4wNTkgMzc3Ljk0MUgxNjhWMTM0LjA1OWg0Ni4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFMMTQ0Ljk3MSA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY4LTkuMzczLTMzLjk0MSAwTDI0Ljk3MSA5My4wODhjLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh2MjQzLjg4Mkg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY4IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTItMTUuMTE5IDQuNDEyLTQwLjk3MS0xNi45Ny00MC45NzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXJyb3dzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Mi4yMDEgNDI1Ljc3NWwtNzkuMTk2IDc5LjE5NmMtOS4zNzMgOS4zNzMtMjQuNTY4IDkuMzczLTMzLjk0MSAwbC03OS4xOTYtNzkuMTk2Yy0xNS4xMTktMTUuMTE5LTQuNDExLTQwLjk3MSAxNi45NzEtNDAuOTdoNTEuMTYyTDIyOCAyODRIMTI3LjE5NnY1MS4xNjJjMCAyMS4zODItMjUuODUxIDMyLjA5LTQwLjk3MSAxNi45NzFMNy4wMjkgMjcyLjkzN2MtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDg2LjIyNSAxNTkuOGMxNS4xMTktMTUuMTE5IDQwLjk3MS00LjQxMSA0MC45NzEgMTYuOTcxVjIyOEgyMjhWMTI3LjE5NmgtNTEuMjNjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDc5LjE5Ni03OS4xOTZjOS4zNzMtOS4zNzMgMjQuNTY4LTkuMzczIDMzLjk0MSAwbDc5LjE5NiA3OS4xOTZjMTUuMTE5IDE1LjExOSA0LjQxMSA0MC45NzEtMTYuOTcxIDQwLjk3MWgtNTEuMTYyVjIyOGgxMDAuODA0di01MS4xNjJjMC0yMS4zODIgMjUuODUxLTMyLjA5IDQwLjk3LTE2Ljk3MWw3OS4xOTYgNzkuMTk2YzkuMzczIDkuMzczIDkuMzczIDI0LjU2OSAwIDMzLjk0MUw0MjUuNzczIDM1Mi4yYy0xNS4xMTkgMTUuMTE5LTQwLjk3MSA0LjQxMS00MC45Ny0xNi45NzFWMjg0SDI4NHYxMDAuODA0aDUxLjIzYzIxLjM4MiAwIDMyLjA5IDI1Ljg1MSAxNi45NzEgNDAuOTcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzc2lzdGl2ZUxpc3RlbmluZ1N5c3RlbXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bS04MCAyMzZjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnpNMzIgNDQ4Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTQ4MC0xODcuOTkzYzAtMS41MTgtLjAxMi0zLjAyNS0uMDQ1LTQuNTMxQzUxMC4wNzYgMTQwLjUyNSA0MzYuMTU3IDM4LjQ3IDMyNy45OTQgMS41MTFjLTE0LjYzMy00Ljk5OC0zMC41NDkgMi44MDktMzUuNTUgMTcuNDQyLTUgMTQuNjMzIDIuODEgMzAuNTQ5IDE3LjQ0MiAzNS41NSA4NS45MDYgMjkuMzU0IDE0NC42MSAxMTAuNTEzIDE0Ni4wNzcgMjAxLjk1M2wuMDAzLjE4OGMuMDI2IDEuMTE4LjAzMyAyLjIzNi4wMzMgMy4zNjMgMCAxNS40NjQgMTIuNTM2IDI4IDI4IDI4czI4LjAwMS0xMi41MzYgMjguMDAxLTI4ek0xNTIuOTcxIDQzOS4wMjlsLTgwLTgwTDM5LjAzIDM5Mi45N2w4MCA4MCAzMy45NDEtMzMuOTQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUFzdGVyaXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3OC4yMSAzMzQuMDkzTDMzNiAyNTZsMTQyLjIxLTc4LjA5M2MxMS43OTUtNi40NzcgMTUuOTYxLTIxLjM4NCA5LjIzMi0zMy4wMzdsLTE5LjQ4LTMzLjc0MWMtNi43MjgtMTEuNjUzLTIxLjcyLTE1LjQ5OS0zMy4yMjctOC41MjNMMjk2IDE4Ni43MThsMy40NzUtMTYyLjIwNEMyOTkuNzYzIDExLjA2MSAyODguOTM3IDAgMjc1LjQ4IDBoLTM4Ljk2Yy0xMy40NTYgMC0yNC4yODMgMTEuMDYxLTIzLjk5NCAyNC41MTRMMjE2IDE4Ni43MTggNzcuMjY1IDEwMi42MDdjLTExLjUwNi02Ljk3Ni0yNi40OTktMy4xMy0zMy4yMjcgOC41MjNsLTE5LjQ4IDMzLjc0MWMtNi43MjggMTEuNjUzLTIuNTYyIDI2LjU2IDkuMjMzIDMzLjAzN0wxNzYgMjU2IDMzLjc5IDMzNC4wOTNjLTExLjc5NSA2LjQ3Ny0xNS45NjEgMjEuMzg0LTkuMjMyIDMzLjAzN2wxOS40OCAzMy43NDFjNi43MjggMTEuNjUzIDIxLjcyMSAxNS40OTkgMzMuMjI3IDguNTIzTDIxNiAzMjUuMjgybC0zLjQ3NSAxNjIuMjA0QzIxMi4yMzcgNTAwLjkzOSAyMjMuMDY0IDUxMiAyMzYuNTIgNTEyaDM4Ljk2MWMxMy40NTYgMCAyNC4yODMtMTEuMDYxIDIzLjk5NS0yNC41MTRMMjk2IDMyNS4yODJsMTM4LjczNSA4NC4xMTFjMTEuNTA2IDYuOTc2IDI2LjQ5OSAzLjEzIDMzLjIyNy04LjUyM2wxOS40OC0zMy43NDFjNi43MjgtMTEuNjUzIDIuNTYzLTI2LjU1OS05LjIzMi0zMy4wMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE4Ljk0MSA4IDggMTE4LjkxOSA4IDI1NmMwIDEzNy4wNTkgMTEwLjkxOSAyNDggMjQ4IDI0OCA0OC4xNTQgMCA5NS4zNDItMTQuMTQgMTM1LjQwOC00MC4yMjMgMTIuMDA1LTcuODE1IDE0LjYyNS0yNC4yODggNS41NTItMzUuMzcybC0xMC4xNzctMTIuNDMzYy03LjY3MS05LjM3MS0yMS4xNzktMTEuNjY3LTMxLjM3My01LjEyOUMzMjUuOTIgNDI5Ljc1NyAyOTEuMzE0IDQ0MCAyNTYgNDQwYy0xMDEuNDU4IDAtMTg0LTgyLjU0Mi0xODQtMTg0UzE1NC41NDIgNzIgMjU2IDcyYzEwMC4xMzkgMCAxODQgNTcuNjE5IDE4NCAxNjAgMCAzOC43ODYtMjEuMDkzIDc5Ljc0Mi01OC4xNyA4My42OTMtMTcuMzQ5LS40NTQtMTYuOTEtMTIuODU3LTEzLjQ3Ni0zMC4wMjRsMjMuNDMzLTEyMS4xMUMzOTQuNjUzIDE0OS43NSAzODMuMzA4IDEzNiAzNjguMjI1IDEzNmgtNDQuOTgxYTEzLjUxOCAxMy41MTggMCAwIDAtMTMuNDMyIDExLjk5M2wtLjAxLjA5MmMtMTQuNjk3LTE3LjkwMS00MC40NDgtMjEuNzc1LTU5Ljk3MS0yMS43NzUtNzQuNTggMC0xMzcuODMxIDYyLjIzNC0xMzcuODMxIDE1MS40NiAwIDY1LjMwMyAzNi43ODUgMTA1Ljg3IDk2IDEwNS44NyAyNi45ODQgMCA1Ny4zNjktMTUuNjM3IDc0Ljk5MS0zOC4zMzMgOS41MjIgMzQuMTA0IDQwLjYxMyAzNC4xMDMgNzAuNzEgMzQuMTAzQzQ2Mi42MDkgMzc5LjQxIDUwNCAzMDcuNzk4IDUwNCAyMzIgNTA0IDk1LjY1MyAzOTQuMDIzIDggMjU2IDh6bS0yMS42OCAzMDQuNDNjLTIyLjI0OSAwLTM2LjA3LTE1LjYyMy0zNi4wNy00MC43NzEgMC00NC45OTMgMzAuNzc5LTcyLjcyOSA1OC42My03Mi43MjkgMjIuMjkyIDAgMzUuNjAxIDE1LjI0MSAzNS42MDEgNDAuNzcgMCA0NS4wNjEtMzMuODc1IDcyLjczLTU4LjE2MSA3Mi43M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFBdGxhcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTguMzggMjA4aC0zOS4wOWMtMS40OSAyNy4wMy02LjU0IDUxLjM1LTE0LjIxIDcwLjQxIDI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDF6bTAtMzJjLTUuMjktMzEuMjItMjUuNTktNTcuMTctNTMuMy03MC40MSA3LjY4IDE5LjA2IDEyLjcyIDQzLjM4IDE0LjIxIDcwLjQxaDM5LjA5ek0yMjQgOTcuMzFjLTcuNjkgNy40NS0yMC43NyAzNC40Mi0yMy40MyA3OC42OWg0Ni44N2MtMi42Ny00NC4yNi0xNS43NS03MS4yNC0yMy40NC03OC42OXptLTQxLjA4IDguMjhjLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDFoMzkuMDljMS40OS0yNy4wMyA2LjUzLTUxLjM1IDE0LjIxLTcwLjQxem0wIDE3Mi44MmMtNy42OC0xOS4wNi0xMi43Mi00My4zOC0xNC4yMS03MC40MWgtMzkuMDljNS4yOCAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxek0yNDcuNDMgMjA4aC00Ni44N2MyLjY2IDQ0LjI2IDE1Ljc0IDcxLjI0IDIzLjQzIDc4LjY5IDcuNy03LjQ1IDIwLjc4LTM0LjQzIDIzLjQ0LTc4LjY5ek00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0yMjQgNjRjNzAuNjkgMCAxMjggNTcuMzEgMTI4IDEyOHMtNTcuMzEgMTI4LTEyOCAxMjhTOTYgMjYyLjY5IDk2IDE5MiAxNTMuMzEgNjQgMjI0IDY0em0xNjAgMzg0SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODh2NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjMuOTk5MDgsMjI0YTMyLDMyLDAsMSwwLDMyLjAwNzgyLDMyQTMyLjA2NDMxLDMyLjA2NDMxLDAsMCwwLDIyMy45OTkwOCwyMjRabTIxNC4xNzItOTZjLTEwLjg3Ny0xOS41LTQwLjUwOTc5LTUwLjc1LTExNi4yNzU0NC00MS44NzVDMzAwLjM5MTY4LDM0Ljg3NSwyNjcuNjMzODYsMCwyMjMuOTk5MDgsMHMtNzYuMzkwNjYsMzQuODc1LTk3Ljg5NjUzLDg2LjEyNUM1MC4zMzY5LDc3LjM3NSwyMC43MDYsMTA4LjUsOS44MjkwNywxMjgtNi41NDk4NCwxNTcuMzc1LTUuMTc0ODQsMjAxLjEyNSwzNC45NTgsMjU2LTUuMTc0ODQsMzEwLjg3NS02LjU0OTg0LDM1NC42MjUsOS44MjkwNywzODRjMjkuMTMwODcsNTIuMzc1LDEwMS42NDY1Miw0My42MjUsMTE2LjI3MzQ4LDQxLjg3NUMxNDcuNjA4NDIsNDc3LjEyNSwxODAuMzY0MjksNTEyLDIyMy45OTkwOCw1MTJzNzYuMzkyNi0zNC44NzUsOTcuODk2NTItODYuMTI1YzE0LjYyODkxLDEuNzUsODcuMTQ0NTYsMTAuNSwxMTYuMjc1NDQtNDEuODc1QzQ1NC41NSwzNTQuNjI1LDQ1My4xNzUsMzEwLjg3NSw0MTMuMDQwMTcsMjU2LDQ1My4xNzUsMjAxLjEyNSw0NTQuNTUsMTU3LjM3NSw0MzguMTcxLDEyOFpNNjMuMzM4ODYsMzUyYy00LTcuMjUtLjEyNS0yNC43NSwxNS4wMDM5MS00OC4yNSw2Ljg3Njk1LDYuNSwxNC4xMjg5MSwxMi44NzUsMjEuODgwODcsMTkuMTI1LDEuNjI1LDEzLjc1LDQsMjcuMTI1LDYuNzUsNDAuMTI1QzgyLjM0NDcyLDM2My44NzUsNjcuMDkwODEsMzU4LjYyNSw2My4zMzg4NiwzNTJabTM2Ljg4NDc4LTE2Mi44NzVjLTcuNzUyLDYuMjUtMTUuMDAzOTIsMTIuNjI1LTIxLjg4MDg3LDE5LjEyNS0xNS4xMjg5MS0yMy41LTE5LjAwMzkyLTQxLTE1LjAwMzkxLTQ4LjI1LDMuMzc3LTYuMTI1LDE2LjM3ODkxLTExLjUsMzcuODg0NzgtMTEuNSwxLjc1LDAsMy44NzUuMzc1LDUuNzUuMzc1QzEwNC4wOTg2NCwxNjIuMjUsMTAxLjg0ODY0LDE3NS42MjUsMTAwLjIyMzY0LDE4OS4xMjVaTTIyMy45OTkwOCw2NGM5LjUwMTk1LDAsMjIuMjU1ODYsMTMuNSwzMy44ODI4MiwzNy4yNS0xMS4yNTIsMy43NS0yMi41MDM5MSw4LTMzLjg4MjgyLDEyLjg3NS0xMS4zNzctNC44NzUtMjIuNjI4OTItOS4xMjUtMzMuODgyODMtMTIuODc1QzIwMS43NDUxNiw3Ny41LDIxNC40OTcxMiw2NCwyMjMuOTk5MDgsNjRabTAsMzg0Yy05LjUwMiwwLTIyLjI1MzkyLTEzLjUtMzMuODgyODMtMzcuMjUsMTEuMjUzOTEtMy43NSwyMi41MDU4Ny04LDMzLjg4MjgzLTEyLjg3NUMyMzUuMzc4LDQwMi43NSwyNDYuNjI5OTQsNDA3LDI1Ny44ODE5LDQxMC43NSwyNDYuMjU0OTQsNDM0LjUsMjMzLjUwMSw0NDgsMjIzLjk5OTA4LDQ0OFptMC0xMTJhODAsODAsMCwxLDEsODAtODBBODAuMDAwMjMsODAuMDAwMjMsMCwwLDEsMjIzLjk5OTA4LDMzNlpNMzg0LjY1OTMsMzUyYy0zLjYyNSw2LjYyNS0xOS4wMDM5MiwxMS44NzUtNDMuNjM0NzksMTEsMi43NTItMTMsNS4xMjctMjYuMzc1LDYuNzUyLTQwLjEyNSw3Ljc1MTk1LTYuMjUsMTUuMDAzOTEtMTIuNjI1LDIxLjg3ODkxLTE5LjEyNUMzODQuNzg0MywzMjcuMjUsMzg4LjY1OTMsMzQ0Ljc1LDM4NC42NTkzLDM1MlpNMzY5LjY1NTM4LDIwOC4yNWMtNi44NzUtNi41LTE0LjEyNy0xMi44NzUtMjEuODc4OTEtMTkuMTI1LTEuNjI1LTEzLjUtMy44NzUtMjYuODc1LTYuNzUyLTQwLjI1LDEuODc1LDAsNC4wMDItLjM3NSw1Ljc1Mi0uMzc1LDIxLjUwMzkxLDAsMzQuNTA3ODIsNS4zNzUsMzcuODgyODMsMTEuNUMzODguNjU5MywxNjcuMjUsMzg0Ljc4NDMsMTg0Ljc1LDM2OS42NTUzOCwyMDguMjVaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXVkaW9EZXNjcmlwdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjIuOTI1IDIzOC43MDlsOC44MjIgMzAuNjU1aC0yNS42MDZsOS4wNDEtMzAuNjUyYzEuMjc3LTQuNDIxIDIuNjUxLTkuOTk0IDMuODcyLTE1LjI0NSAxLjIyIDUuMjUxIDIuNTk0IDEwLjgyMyAzLjg3MSAxNS4yNDJ6bTE2Ni40NzQtMzIuMDk5aC0xNC41MjN2OTguNzgxaDE0LjUyM2MyOS43NzYgMCA0Ni4xNzUtMTcuNjc4IDQ2LjE3NS00OS43NzYgMC0zMi4yMzktMTcuNDktNDkuMDA1LTQ2LjE3NS00OS4wMDV6TTUxMiAxMTJ2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTI0NS40NTkgMzM2LjEzOWwtNTcuMDk3LTE2OEExMi4wMDEgMTIuMDAxIDAgMCAwIDE3NyAxNjBoLTM1Ljg5NGExMi4wMDEgMTIuMDAxIDAgMCAwLTExLjM2MiA4LjEzOWwtNTcuMDk3IDE2OEM3MC4wMDMgMzQzLjkyMiA3NS43ODkgMzUyIDg0LjAwOSAzNTJoMjkuMTMzYTEyIDEyIDAgMCAwIDExLjUzNS04LjY5M2w4LjU3NC0yOS45MDZoNTEuMzY3bDguNzkzIDI5Ljk3N0ExMiAxMiAwIDAgMCAyMDQuOTI2IDM1MmgyOS4xNzJjOC4yMiAwIDE0LjAwNi04LjA3OCAxMS4zNjEtMTUuODYxem0xODQuNzAxLTgwLjUyNWMwLTU4Ljk3Ny0zNy45MTktOTUuNjE0LTk4Ljk2LTk1LjYxNGgtNTcuMzY2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjE2OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEySDMzMS4yYzYxLjA0MSAwIDk4Ljk2LTM2LjkzMyA5OC45Ni05Ni4zODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQXdhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMTIgMzYyLjYzYy04LjY5LTguNjktNC4xNi02LjI0LTI1LjEyLTExLjg1LTkuNTEtMi41NS0xNy44Ny03LjQ1LTI1LjQzLTEzLjMyTDEuMiA0NDguN2MtNC4zOSAxMC43NyAzLjgxIDIyLjQ3IDE1LjQzIDIyLjAzbDUyLjY5LTIuMDFMMTA1LjU2IDUwN2M4IDguNDQgMjIuMDQgNS44MSAyNi40My00Ljk2bDUyLjA1LTEyNy42MmMtMTAuODQgNi4wNC0yMi44NyA5LjU4LTM1LjMxIDkuNTgtMTkuNSAwLTM3LjgyLTcuNTktNTEuNjEtMjEuMzd6TTM4Mi44IDQ0OC43bC00NS4zNy0xMTEuMjRjLTcuNTYgNS44OC0xNS45MiAxMC43Ny0yNS40MyAxMy4zMi0yMS4wNyA1LjY0LTE2LjQ1IDMuMTgtMjUuMTIgMTEuODUtMTMuNzkgMTMuNzgtMzIuMTIgMjEuMzctNTEuNjIgMjEuMzctMTIuNDQgMC0yNC40Ny0zLjU1LTM1LjMxLTkuNThMMjUyIDUwMi4wNGM0LjM5IDEwLjc3IDE4LjQ0IDEzLjQgMjYuNDMgNC45NmwzNi4yNS0zOC4yOCA1Mi42OSAyLjAxYzExLjYyLjQ0IDE5LjgyLTExLjI3IDE1LjQzLTIyLjAzek0yNjMgMzQwYzE1LjI4LTE1LjU1IDE3LjAzLTE0LjIxIDM4Ljc5LTIwLjE0IDEzLjg5LTMuNzkgMjQuNzUtMTQuODQgMjguNDctMjguOTggNy40OC0yOC40IDUuNTQtMjQuOTcgMjUuOTUtNDUuNzUgMTAuMTctMTAuMzUgMTQuMTQtMjUuNDQgMTAuNDItMzkuNTgtNy40Ny0yOC4zOC03LjQ4LTI0LjQyIDAtNTIuODMgMy43Mi0xNC4xNC0uMjUtMjkuMjMtMTAuNDItMzkuNTgtMjAuNDEtMjAuNzgtMTguNDctMTcuMzYtMjUuOTUtNDUuNzUtMy43Mi0xNC4xNC0xNC41OC0yNS4xOS0yOC40Ny0yOC45OC0yNy44OC03LjYxLTI0LjUyLTUuNjItNDQuOTUtMjYuNDEtMTAuMTctMTAuMzUtMjUtMTQuNC0zOC44OS0xMC42MS0yNy44NyA3LjYtMjMuOTggNy42MS01MS45IDAtMTMuODktMy43OS0yOC43Mi4yNS0zOC44OSAxMC42MS0yMC40MSAyMC43OC0xNy4wNSAxOC44LTQ0Ljk0IDI2LjQxLTEzLjg5IDMuNzktMjQuNzUgMTQuODQtMjguNDcgMjguOTgtNy40NyAyOC4zOS01LjU0IDI0Ljk3LTI1Ljk1IDQ1Ljc1LTEwLjE3IDEwLjM1LTE0LjE1IDI1LjQ0LTEwLjQyIDM5LjU4IDcuNDcgMjguMzYgNy40OCAyNC40IDAgNTIuODItMy43MiAxNC4xNC4yNSAyOS4yMyAxMC40MiAzOS41OSAyMC40MSAyMC43OCAxOC40NyAxNy4zNSAyNS45NSA0NS43NSAzLjcyIDE0LjE0IDE0LjU4IDI1LjE5IDI4LjQ3IDI4Ljk4QzEwNC42IDMyNS45NiAxMDYuMjcgMzI1IDEyMSAzNDBjMTMuMjMgMTMuNDcgMzMuODQgMTUuODggNDkuNzQgNS44MmEzOS42NzYgMzkuNjc2IDAgMCAxIDQyLjUzIDBjMTUuODkgMTAuMDYgMzYuNSA3LjY1IDQ5LjczLTUuODJ6TTk3LjY2IDE3NS45NmMwLTUzLjAzIDQyLjI0LTk2LjAyIDk0LjM0LTk2LjAyczk0LjM0IDQyLjk5IDk0LjM0IDk2LjAyLTQyLjI0IDk2LjAyLTk0LjM0IDk2LjAyLTk0LjM0LTQyLjk5LTk0LjM0LTk2LjAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhYnlDYXJyaWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQuOCAxN2MtMTEuMy0xNy44LTM3LjItMjIuOC01NC05LjRDMzUuMyA1MS45IDAgMTE4IDAgMTkyaDI1NkwxNDQuOCAxN3pNNDk2IDk2aC00OGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2NjRIMGMwIDUwLjYgMjMgOTYuNCA2MC4zIDEzMC43QzI1LjcgMzYzLjYgMCAzOTQuNyAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtOC45LTEuOC0xNy4yLTQuNC0yNS4yIDIxLjYgNS45IDQ0LjYgOS4yIDY4LjQgOS4yczQ2LjktMy4zIDY4LjQtOS4yYy0yLjcgOC00LjQgMTYuMy00LjQgMjUuMiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzcuMy0yNS43LTY4LjQtNjAuMy03Ny4zQzQyNSAzMjAuNCA0NDggMjc0LjYgNDQ4IDIyNHYtNjRoNDhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6TTgwIDQ2NGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTMyMC0zMmMwIDE3LjYtMTQuNCAzMi0zMiAzMnMtMzItMTQuNC0zMi0zMiAxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFieSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTYwYzQ0LjIgMCA4MC0zNS44IDgwLTgwUzIzNi4yIDAgMTkyIDBzLTgwIDM1LjgtODAgODAgMzUuOCA4MCA4MCA4MHptLTUzLjQgMjQ4LjhsMjUuNi0zMi02MS41LTUxLjJMNTYuOCAzODNjLTExLjQgMTQuMi0xMS43IDM0LjQtLjggNDlsNDggNjRjNy45IDEwLjUgMTkuOSAxNiAzMiAxNiA4LjMgMCAxNi44LTIuNiAyNC04IDE3LjctMTMuMiAyMS4yLTM4LjMgOC01NmwtMjkuNC0zOS4yem0xNDIuNy04My4ybC02MS41IDUxLjIgMjUuNiAzMkwyMTYgNDQ4Yy0xMy4yIDE3LjctOS43IDQyLjggOCA1NiA3LjIgNS40IDE1LjYgOCAyNCA4IDEyLjIgMCAyNC4yLTUuNSAzMi0xNmw0OC02NGMxMC45LTE0LjYgMTAuNi0zNC44LS44LTQ5bC00NS45LTU3LjR6TTM3Ni43IDE0NWMtMTIuNy0xOC4xLTM3LjYtMjIuNC01NS43LTkuOGwtNDAuNiAyOC41Yy01Mi43IDM3LTEyNC4yIDM3LTE3Ni44IDBMNjMgMTM1LjNDNDQuOSAxMjIuNiAyMCAxMjcgNy4zIDE0NS01LjQgMTYzLjEtMSAxODggMTcgMjAwLjdsNDAuNiAyOC41YzE3IDExLjkgMzUuNCAyMC45IDU0LjQgMjcuOVYyODhoMTYwdi0zMC44YzE5LTcgMzcuNC0xNiA1NC40LTI3LjlsNDAuNi0yOC41YzE4LjEtMTIuOCAyMi40LTM3LjcgOS43LTU1Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFja3NwYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiA2NEgyMDUuMjZBNjMuOTcgNjMuOTcgMCAwIDAgMTYwIDgyLjc1TDkuMzcgMjMzLjM3Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1TDE2MCA0MjkuMjVjMTIgMTIgMjguMjggMTguNzUgNDUuMjUgMTguNzVINTc2YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWMTI4YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS04NC42OSAyNTQuMDZjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M2wtMjIuNjIgMjIuNjJjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBMMzg0IDMwMS4yNWwtNjIuMDYgNjIuMDZjLTYuMjUgNi4yNS0xNi4zOCA2LjI1LTIyLjYzIDBsLTIyLjYyLTIyLjYyYy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzTDMzOC43NSAyNTZsLTYyLjA2LTYyLjA2Yy02LjI1LTYuMjUtNi4yNS0xNi4zOCAwLTIyLjYzbDIyLjYyLTIyLjYyYzYuMjUtNi4yNSAxNi4zOC02LjI1IDIyLjYzIDBMMzg0IDIxMC43NWw2Mi4wNi02Mi4wNmM2LjI1LTYuMjUgMTYuMzgtNi4yNSAyMi42MyAwbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNMNDI5LjI1IDI1Nmw2Mi4wNiA2Mi4wNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDI4MC42bDE5MiAxNjBjMjAuNiAxNy4yIDUyLjUgMi44IDUyLjUtMjQuNlY5NmMwLTI3LjQtMzEuOS00MS44LTUyLjUtMjQuNmwtMTkyIDE2MGMtMTUuMyAxMi44LTE1LjMgMzYuNCAwIDQ5LjJ6bTI1NiAwbDE5MiAxNjBjMjAuNiAxNy4yIDUyLjUgMi44IDUyLjUtMjQuNlY5NmMwLTI3LjQtMzEuOS00MS44LTUyLjUtMjQuNmwtMTkyIDE2MGMtMTUuMyAxMi44LTE1LjMgMzYuNCAwIDQ5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE4LjkyIDMzNi4zOWMzNC44OS0zNC44OSA0NC4yLTU5LjcgNTQuMDUtODYgMTAuNjEtMjguMjkgMjEuNTktNTcuNTQgNjEuMzctOTcuMzRzNjkuMDUtNTAuNzcgOTcuMzUtNjEuMzhjMjMuODgtOSA0Ni42NC0xNy42OCA3Ni43OS00NS4zN0w0NzAuODEgOC45MWEzMSAzMSAwIDAgMC00MC4xOC0yLjgzYy0xMy42NCAxMC4xLTI1LjE1IDE0LjM5LTQxIDIwLjNDMjQ3IDc5LjUyIDIwOS4yNiAxOTEuMjkgMjAwLjY1IDIxNC4xYy0yOS43NSA3OC44My04OS41NSA5NC42OC05OC43MiA5OC4wOS0yNC44NiA5LjI2LTU0LjczIDIwLjM4LTkxLjA3IDUwLjM2Qy0zIDM3NC0zLjYzIDM5NSA5LjA3IDQwNy42MWwzNS43NiAzNS41MUM4MCA0MTAuNTIgMTA3IDQwMC4xNSAxMzMgMzkwLjM5YzI2LjI3LTkuODQgNTEuMDYtMTkuMTIgODUuOTItNTR6bTM0OC0yMzJsLTM1Ljc1LTM1LjUxYy0zNS4xOSAzMi42My02Mi4xOCA0My04OC4yNSA1Mi43OS0yNi4yNiA5Ljg1LTUxLjA2IDE5LjE2LTg1Ljk1IDU0cy00NC4xOSA1OS42OS01NCA4NkMyOTIuMzMgMjkwIDI4MS4zNCAzMTkuMjIgMjQxLjU1IDM1OXMtNjkgNTAuNzMtOTcuMyA2MS4zMmMtMjMuODYgOS00Ni42MSAxNy42Ni03Ni43MiA0NS4zM2wzNy42OCAzNy40M2EzMSAzMSAwIDAgMCA0MC4xOCAyLjgyYzEzLjYtMTAuMDYgMjUuMDktMTQuMzQgNDAuOTQtMjAuMjQgMTQyLjItNTMgMTgwLTE2NC4xIDE4OC45NC0xODcuNjlDNDA1IDIxOS4xOCA0NjQuOCAyMDMuMyA0NzQgMTk5Ljg2YzI0Ljg3LTkuMjcgNTQuNzQtMjAuNCA5MS4xMS01MC40MSAxMy44OS0xMS40IDE0LjUyLTMyLjQ1IDEuODItNDUuMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyLjM1LDIyNi40QTE3LjcxLDE3LjcxLDAsMCwwLDI4MS40NiwyMDNsLTQtOS4wOGExMjEuMjksMTIxLjI5LDAsMCwxLDEyLjM2LTMuMDhBODMuMzQsODMuMzQsMCwwLDAsMzIzLjU3LDE3N2wxMCw5YTE3Ljc2LDE3Ljc2LDAsMSwwLDIzLjkyLTI2LjI3bC05LjcyLTguNzZhODMuMTIsODMuMTIsMCwwLDAsMTEuNjUtNDguMThsMTEuODUtMy41MWExNy43MywxNy43MywwLDEsMC0xMC4xNS0zNGwtMTEuMzQsMy4zNmE4NCw4NCwwLDAsMC0zNi4zOC0zNS41N2wyLjg0LTEwLjg1YTE3LjgsMTcuOCwwLDAsMC0zNC40Ny04LjkzbC0yLjgyLDEwLjc4YTgzLjI1LDgzLjI1LDAsMCwwLTE2Ljc0LDEuMUMyNTAuODMsMjcsMjQwLDMwLjIyLDIyOS4xLDMzLjM5bC0zLjM4LTkuNDZhMTcuOCwxNy44LDAsMCwwLTMzLjU2LDExLjg5bDMuNDksOS44YTI4Ni43NCwyODYuNzQsMCwwLDAtNDMuOTQsMjMuNTdsLTYuMzItOC40M2ExNy45LDE3LjksMCwwLDAtMjQuOTQtMy42QTE3LjY5LDE3LjY5LDAsMCwwLDExNi44NCw4Mmw2LjQ1LDguNjFhMjg2LjU5LDI4Ni41OSwwLDAsMC0zNC45NSwzNS4zM2wtOC44Mi02LjQyYTE3Ljg0LDE3Ljg0LDAsMCwwLTI0Ljg5LDMuODYsMTcuNjYsMTcuNjYsMCwwLDAsMy44OCwyNC43N2w4Ljg4LDYuNDdhMjg2LjYsMjg2LjYsMCwwLDAtMjMsNDMuOTFsLTEwLjQ4LTMuNTlhMTcuNzMsMTcuNzMsMCwxLDAtMTEuNTksMzMuNTJMMzIuNjcsMjMyYy0yLjc5LDEwLTUuNzksMTkuODQtNy41MiwzMC4yMmE4My4xNiw4My4xNiwwLDAsMC0uODIsMTlsLTExLjU4LDMuNDNhMTcuNzMsMTcuNzMsMCwxLDAsMTAuMTMsMzRsMTEuMjctMy4zM2E4My41MSw4My41MSwwLDAsMCwzNi4zOSwzNS40M2wtMi44OCwxMS4wNmExNy44MSwxNy44MSwwLDAsMCwzNC40OCw4LjkybDIuODctMTFjMSwwLDIuMDcuMjYsMy4xLjI2YTgzLjM5LDgzLjM5LDAsMCwwLDQ1LjY1LTEzLjg4bDguNTksOC44YTE3Ljc3LDE3Ljc3LDAsMCwwLDI1LjU2LTI0LjdsLTkuMTQtOS4zN2E4My40MSw4My40MSwwLDAsMCwxMi4wOC0zMS4wNSwxMTkuMDgsMTE5LjA4LDAsMCwxLDMuODctMTUuNTNsOSw0LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLDE1LjE1LTMyLjA5bC04LjgtNC4xMWMuNjctMSwxLjItMi4wOCwxLjktMy4wNWExMTkuODksMTE5Ljg5LDAsMCwxLDcuODctOS40MSwxMjEuNzMsMTIxLjczLDAsMCwxLDExLjY1LTExLjQsMTE5LjQ5LDExOS40OSwwLDAsMSw5Ljk0LTcuODJjMS4xMi0uNzcsMi4zMi0xLjQyLDMuNDctMi4xNWwzLjkyLDguODVhMTcuODYsMTcuODYsMCwwLDAsMTYuMzIsMTAuNThBMTguMTQsMTguMTQsMCwwLDAsMjcyLjM1LDIyNi40Wk0xMjgsMjU2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDEyOCwyNTZabTgwLTk2YTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDIwOCwxNjBabTQzMS4yNiw0NS4zYTE3Ljc5LDE3Ljc5LDAsMCwwLTE3LjA2LTEyLjY5LDE3LjU1LDE3LjU1LDAsMCwwLTUuMDguNzRsLTExLjI3LDMuMzNhODMuNjEsODMuNjEsMCwwLDAtMzYuMzktMzUuNDNsMi44OC0xMS4wNmExNy44MSwxNy44MSwwLDAsMC0zNC40OC04LjkxbC0yLjg3LDExYy0xLDAtMi4wNy0uMjYtMy4xLS4yNmE4My4zMiw4My4zMiwwLDAsMC00NS42NSwxMy44OWwtOC41OS04LjgxYTE3Ljc3LDE3Ljc3LDAsMCwwLTI1LjU2LDI0LjdsOS4xNCw5LjM3YTgzLjI4LDgzLjI4LDAsMCwwLTEyLjA4LDMxLjA2LDExOS4zNCwxMTkuMzQsMCwwLDEtMy44NywxNS41MmwtOS00LjIyYTE3Ljc0LDE3Ljc0LDAsMSwwLTE1LjE1LDMyLjA5bDguOCw0LjExYy0uNjcsMS0xLjIsMi4wOC0xLjg5LDMuMDVhMTE3LjcxLDExNy43MSwwLDAsMS03Ljk0LDkuNDcsMTE5LDExOSwwLDAsMS0xMS41NywxMS4zMywxMjEuNTksMTIxLjU5LDAsMCwxLTEwLDcuODNjLTEuMTIuNzctMi4zMiwxLjQyLTMuNDcsMi4xNWwtMy45Mi04Ljg1YTE3Ljg2LDE3Ljg2LDAsMCwwLTE2LjMyLTEwLjU4LDE4LjE0LDE4LjE0LDAsMCwwLTcuMTgsMS41QTE3LjcxLDE3LjcxLDAsMCwwLDM1OC41NCwzMDlsNCw5LjA4YTExOC43MSwxMTguNzEsMCwwLDEtMTIuMzYsMy4wOCw4My4zNCw4My4zNCwwLDAsMC0zMy43NywxMy45bC0xMC05YTE3Ljc3LDE3Ljc3LDAsMSwwLTIzLjkyLDI2LjI4bDkuNzIsOC43NWE4My4xMiw4My4xMiwwLDAsMC0xMS42NSw0OC4xOGwtMTEuODYsMy41MWExNy43MywxNy43MywwLDEsMCwxMC4xNiwzNGwxMS4zNC0zLjM2QTg0LDg0LDAsMCwwLDMyNi42MSw0NzlsLTIuODQsMTAuODVhMTcuOCwxNy44LDAsMCwwLDM0LjQ3LDguOTNMMzYxLjA2LDQ4OGE4My4zLDgzLjMsMCwwLDAsMTYuNzQtMS4xYzExLjM3LTEuODksMjIuMjQtNS4wNywzMy4xLTguMjRsMy4zOCw5LjQ2YTE3LjgsMTcuOCwwLDAsMCwzMy41Ni0xMS44OWwtMy40OS05Ljc5YTI4Ny42NiwyODcuNjYsMCwwLDAsNDMuOTQtMjMuNThsNi4zMiw4LjQzYTE3Ljg4LDE3Ljg4LDAsMCwwLDI0LjkzLDMuNkExNy42NywxNy42NywwLDAsMCw1MjMuMTYsNDMwbC02LjQ1LTguNjFhMjg3LjM3LDI4Ny4zNywwLDAsMCwzNC45NS0zNS4zNGw4LjgyLDYuNDJhMTcuNzYsMTcuNzYsMCwxLDAsMjEtMjguNjNsLTguODgtNi40NmEyODcuMTcsMjg3LjE3LDAsMCwwLDIzLTQzLjkybDEwLjQ4LDMuNTlhMTcuNzMsMTcuNzMsMCwxLDAsMTEuNTktMzMuNTJMNjA3LjMzLDI4MGMyLjc5LTEwLDUuNzktMTkuODQsNy41Mi0zMC4yMWE4My4yNyw4My4yNywwLDAsMCwuODItMTkuMDVsMTEuNTgtMy40M0ExNy43LDE3LjcsMCwwLDAsNjM5LjI2LDIwNS4zWk00MTYsNDE2YTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDQxNiw0MTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFjdGVyaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMSwxMDIuOTNBMjMuNzYsMjMuNzYsMCwwLDAsNDgxLjQ3LDg3bC0xNS4xMiw0LjQ4YTExMS44NSwxMTEuODUsMCwwLDAtNDguNS00Ny40MmwzLjc5LTE0LjQ3YTIzLjc0LDIzLjc0LDAsMCwwLTQ2LTExLjkxbC0zLjc2LDE0LjM3YTExMS45NCwxMTEuOTQsMCwwLDAtMjIuMzMsMS40NywzODYuNzQsMzg2Ljc0LDAsMCwwLTQ0LjMzLDEwLjQxbC00LjMtMTJhMjMuNzQsMjMuNzQsMCwwLDAtNDQuNzUsMTUuODVsNC4zLDEyLjA1YTM4My40LDM4My40LDAsMCwwLTU4LjY5LDMxLjgzbC04LTEwLjYzYTIzLjg1LDIzLjg1LDAsMCwwLTMzLjI0LTQuOCwyMy41NywyMy41NywwLDAsMC00LjgzLDMzLjA5bDgsMTAuNjNhMzg2LjE0LDM4Ni4xNCwwLDAsMC00Ni43LDQ3LjQ0bC0xMS04YTIzLjY4LDIzLjY4LDAsMSwwLTI4LDM4LjE3bDExLjA5LDguMDZhMzgzLjQ1LDM4My40NSwwLDAsMC0zMC45Miw1OC43NWwtMTIuOTMtNC40M2EyMy42NSwyMy42NSwwLDEsMC0xNS40Nyw0NC42OWwxMyw0LjQ4YTM4NS44MSwzODUuODEsMCwwLDAtOS4zLDQwLjUzQTExMS41OCwxMTEuNTgsMCwwLDAsMzIuNDQsMzc1TDE3LDM3OS41NmEyMy42NCwyMy42NCwwLDAsMCwxMy41MSw0NS4zMWwxNS00LjQ0YTExMS40OSwxMTEuNDksMCwwLDAsNDguNTMsNDcuMjRsLTMuODUsMTQuNzVhMjMuNjYsMjMuNjYsMCwwLDAsMTcsMjguODMsMjQuNywyNC43LDAsMCwwLDYsLjc1LDIzLjczLDIzLjczLDAsMCwwLDIzLTE3LjdMMTQwLDQ3OS42N2MxLjM3LjA1LDIuNzcuMzUsNC4xMy4zNUExMTEuMjIsMTExLjIyLDAsMCwwLDIwNSw0NjEuNWwxMS40NSwxMS43NGEyMy43LDIzLjcsMCwwLDAsMzQuMDgtMzIuOTNsLTEyLjE5LTEyLjVhMTExLDExMSwwLDAsMCwxNi4xMS00MS40LDE1OC42OSwxNTguNjksMCwwLDEsNS4xNi0yMC43MWwxMiw1LjY0YTIzLjY2LDIzLjY2LDAsMSwwLDIwLjE5LTQyLjc5bC0xMS43Mi01LjQ5Yy44OS0xLjMyLDEuNTktMi43NywyLjUyLTQuMDZhMTU3Ljg2LDE1Ny44NiwwLDAsMSwxMC40Ni0xMi40OSwxNTkuNSwxNTkuNSwwLDAsMSwxNS41OS0xNS4yOCwxNjIuMTgsMTYyLjE4LDAsMCwxLDEzLjIzLTEwLjRjMS41LTEsMy4xLTEuODksNC42My0yLjg3bDUuMjMsMTEuOGEyMy43NCwyMy43NCwwLDAsMCw0My40OC0xOS4wOGwtNS4zNi0xMi4xMWExNTguODcsMTU4Ljg3LDAsMCwxLDE2LjQ5LTQuMSwxMTEsMTExLDAsMCwwLDQ1LTE4LjU0bDEzLjMzLDEyYTIzLjY5LDIzLjY5LDAsMSwwLDMxLjg4LTM1bC0xMi45NC0xMS42N0ExMTAuODMsMTEwLjgzLDAsMCwwLDQ3OS4yMSwxMzdMNDk1LDEzMi4zMkEyMy42MSwyMy42MSwwLDAsMCw1MTEsMTAyLjkzWk0xNjAsMzY4YTQ4LDQ4LDAsMSwxLDQ4LTQ4QTQ4LDQ4LDAsMCwxLDE2MCwzNjhabTgwLTEzNmEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSwyNDAsMjMyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhaGFpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ni4yNSAyMDIuNTJsLTExMC0xNS40NCA0MS44Mi0xMDQuMzRjNi42Ny0xNi42NC0xMS42LTMyLjE4LTI2LjU5LTIyLjYzTDMwNy40NCAxMjAgMjczLjM1IDEyLjgyQzI3MC42NCA0LjI3IDI2My4zMiAwIDI1NiAwYy03LjMyIDAtMTQuNjQgNC4yNy0xNy4zNSAxMi44MmwtMzQuMDkgMTA3LjE5LTk0LjA0LTU5Ljg5Yy0xNC45OS05LjU1LTMzLjI1IDUuOTktMjYuNTkgMjIuNjNsNDEuODIgMTA0LjM0LTExMCAxNS40M2MtMTcuNTQgMi40Ni0yMS42OCAyNi4yNy02LjAzIDM0LjY3bDk4LjE2IDUyLjY2LTc0LjQ4IDgzLjU0Yy0xMC45MiAxMi4yNS0xLjcyIDMwLjkzIDEzLjI5IDMwLjkzIDEuMzEgMCAyLjY3LS4xNCA0LjA3LS40NWwxMDguNTctMjMuNjUtNC4xMSAxMTIuNTVjLS40MyAxMS42NSA4Ljg3IDE5LjIyIDE4LjQxIDE5LjIyIDUuMTUgMCAxMC4zOS0yLjIxIDE0LjItNy4xOGw2OC4xOC04OC45IDY4LjE4IDg4LjljMy44MSA0Ljk3IDkuMDQgNy4xOCAxNC4yIDcuMTggOS41NCAwIDE4Ljg0LTcuNTcgMTguNDEtMTkuMjJsLTQuMTEtMTEyLjU1IDEwOC41NyAyMy42NWMxNy4zNiAzLjc2IDI5LjIxLTE3LjIgMTcuMzUtMzAuNDlsLTc0LjQ4LTgzLjU0IDk4LjE2LTUyLjY2YzE1LjY0LTguMzkgMTEuNS0zMi4yLTYuMDQtMzQuNjZ6TTMzOC41MSAzMTEuNjhsLTUxLjg5LTExLjMgMS45NyA1My43OUwyNTYgMzExLjY4bC0zMi41OSA0Mi40OSAxLjk2LTUzLjc5LTUxLjg5IDExLjMgMzUuNi0zOS45My00Ni45Mi0yNS4xNyA1Mi41Ny03LjM4LTE5Ljk5LTQ5Ljg3IDQ0Ljk1IDI4LjYyTDI1NiAxNjYuNzJsMTYuMjkgNTEuMjMgNDQuOTUtMjguNjItMTkuOTkgNDkuODcgNTIuNTcgNy4zOC00Ni45MiAyNS4xNyAzNS42MSAzOS45M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYWxhbmNlU2NhbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA0NDhIMzUyVjE1My4yNWMyMC40Mi04Ljk0IDM2LjEtMjYuMjIgNDMuMzgtNDcuNDdsMTMyLTQ0LjI2YzguMzgtMi44MSAxMi44OS0xMS44OCAxMC4wOC0yMC4yNmwtMTAuMTctMzAuMzRDNTI0LjQ4IDIuNTQgNTE1LjQxLTEuOTcgNTA3LjAzLjg0TDM4OS4xMSA0MC4zN0MzNzUuMyAxNi4zNiAzNDkuNjkgMCAzMjAgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MCAwIDMuNDMuNTkgNi43MSAxLjAxIDEwLjAzbC0xMjguMzkgNDMuMDVjLTguMzggMi44MS0xMi44OSAxMS44OC0xMC4wOCAyMC4yNmwxMC4xNyAzMC4zNGMyLjgxIDguMzggMTEuODggMTIuODkgMjAuMjYgMTAuMDhsMTQyLjA1LTQ3LjYzYzQuMDcgMi43NyA4LjQzIDUuMTIgMTIuOTkgNy4xMlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAxLTguODQtNy4xNy0xNi0xNi4wMS0xNnptMTExLjk4LTE0NGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMjg4bDcyLTE0NCA3MiAxNDRINDQwem0tMjY5LjA3LTM3LjUxYy0xNy42NS0zNS4yOS02OC4xOS0zNS4zNi04NS44NyAwQy0yLjA2IDQyNC43NS4wMiA0MTYuMzMuMDIgNDMySDBjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyYzAtMTYuMTggMS4zNC04LjczLTg1LjA1LTE4MS41MXpNNTYgNDE2bDcyLTE0NCA3MiAxNDRINTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFsYW5jZVNjYWxlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNDY0djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNTMuMjVjNC41Ni0yIDguOTItNC4zNSAxMi45OS03LjEybDE0Mi4wNSA0Ny42M2M4LjM4IDIuODEgMTcuNDUtMS43MSAyMC4yNi0xMC4wOGwxMC4xNy0zMC4zNGMyLjgxLTguMzgtMS43MS0xNy40NS0xMC4wOC0yMC4yNmwtMTI4LjQtNDMuMDVjLjQyLTMuMzIgMS4wMS02LjYgMS4wMS0xMC4wMyAwLTQ0LjE4LTM1LjgyLTgwLTgwLTgwLTI5LjY5IDAtNTUuMyAxNi4zNi02OS4xMSA0MC4zN0wxMzIuOTYuODNjLTguMzgtMi44MS0xNy40NSAxLjcxLTIwLjI2IDEwLjA4bC0xMC4xNyAzMC4zNGMtMi44MSA4LjM4IDEuNzEgMTcuNDUgMTAuMDggMjAuMjZsMTMyIDQ0LjI2YzcuMjggMjEuMjUgMjIuOTYgMzguNTQgNDMuMzggNDcuNDdWNDQ4SDExMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ6TTAgMzA0YzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODBoLS4wMmMwLTE1LjY3IDIuMDgtNy4yNS04NS4wNS0xODEuNTEtMTcuNjgtMzUuMzYtNjguMjItMzUuMjktODUuODcgMEMtMS4zMiAyOTUuMjcuMDIgMjg3LjgyLjAyIDMwNEgwem01Ni0xNmw3Mi0xNDQgNzIgMTQ0SDU2em0zMjguMDIgMTQ0SDM4NGMwIDQ0LjE4IDU3LjMxIDgwIDEyOCA4MHMxMjgtMzUuODIgMTI4LTgwaC0uMDJjMC0xNS42NyAyLjA4LTcuMjUtODUuMDUtMTgxLjUxLTE3LjY4LTM1LjM2LTY4LjIyLTM1LjI5LTg1Ljg3IDAtODYuMzggMTcyLjc4LTg1LjA0IDE2NS4zMy04NS4wNCAxODEuNTF6TTQ0MCA0MTZsNzItMTQ0IDcyIDE0NEg0NDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFsYW5jZVNjYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMzZoLS4wMmMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMEMtMi4wNiAzMjguNzUuMDIgMzIwLjMzLjAyIDMzNkgwYzAgNDQuMTggNTcuMzEgODAgMTI4IDgwczEyOC0zNS44MiAxMjgtODB6TTEyOCAxNzZsNzIgMTQ0SDU2bDcyLTE0NHptNTExLjk4IDE2MGMwLTE2LjE4IDEuMzQtOC43My04NS4wNS0xODEuNTEtMTcuNjUtMzUuMjktNjguMTktMzUuMzYtODUuODcgMC04Ny4xMiAxNzQuMjYtODUuMDQgMTY1Ljg0LTg1LjA0IDE4MS41MUgzODRjMCA0NC4xOCA1Ny4zMSA4MCAxMjggODBzMTI4LTM1LjgyIDEyOC04MGgtLjAyek00NDAgMzIwbDcyLTE0NCA3MiAxNDRINDQwem04OCAxMjhIMzUyVjE1My4yNWMyMy41MS0xMC4yOSA0MS4xNi0zMS40OCA0Ni4zOS01Ny4yNUg1MjhjOC44NCAwIDE2LTcuMTYgMTYtMTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzgzLjY0QzM2OS4wNCAxMi42OCAzNDYuMDkgMCAzMjAgMHMtNDkuMDQgMTIuNjgtNjMuNjQgMzJIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMjkuNjFjNS4yMyAyNS43NiAyMi44NyA0Ni45NiA0Ni4zOSA1Ny4yNVY0NDhIMTEyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0MTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkuMDM0IDggOCAxMTkuMDMzIDggMjU2czExMS4wMzQgMjQ4IDI0OCAyNDggMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDh6bTEzMC4xMDggMTE3Ljg5MmM2NS40NDggNjUuNDQ4IDcwIDE2NS40ODEgMjAuNjc3IDIzNS42MzdMMTUwLjQ3IDEwNS4yMTZjNzAuMjA0LTQ5LjM1NiAxNzAuMjI2LTQ0LjczNSAyMzUuNjM4IDIwLjY3NnpNMTI1Ljg5MiAzODYuMTA4Yy02NS40NDgtNjUuNDQ4LTcwLTE2NS40ODEtMjAuNjc3LTIzNS42MzdMMzYxLjUzIDQwNi43ODRjLTcwLjIwMyA0OS4zNTYtMTcwLjIyNiA0NC43MzYtMjM1LjYzOC0yMC42NzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFuZEFpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2MHYxOTJjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZWOTZINjRjLTM1LjMgMC02NCAyOC43LTY0IDY0em01NzYtNjRoLTk2djMyMGg5NmMzNS4zIDAgNjQtMjguNyA2NC02NFYxNjBjMC0zNS4zLTI4LjctNjQtNjQtNjR6TTE5MiA0MTZoMjU2Vjk2SDE5MnYzMjB6bTE3Ni0yMzJjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0wIDk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTk2LTk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMCA5NmMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFyY29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ0OFY2NGgxOHYzODRIMHptMjYuODU3LS4yNzNWNjRIMzZ2MzgzLjcyN2gtOS4xNDN6bTI3LjE0MyAwVjY0aDguODU3djM4My43MjdINTR6bTQ0Ljg1NyAwVjY0aDguODU3djM4My43MjdoLTguODU3em0zNiAwVjY0aDE3LjcxNHYzODMuNzI3aC0xNy43MTR6bTQ0Ljg1NyAwVjY0aDguODU3djM4My43MjdoLTguODU3em0xOCAwVjY0aDguODU3djM4My43MjdoLTguODU3em0xOCAwVjY0aDguODU3djM4My43MjdoLTguODU3em0zNS43MTUgMFY2NGgxOHYzODMuNzI3aC0xOHptNDQuODU3IDBWNjRoMTh2MzgzLjcyN2gtMTh6bTM1Ljk5OSAwVjY0aDE4LjAwMXYzODMuNzI3aC0xOC4wMDF6bTM2LjAwMSAwVjY0aDE4LjAwMXYzODMuNzI3aC0xOC4wMDF6bTI2Ljg1NyAwVjY0aDE4djM4My43MjdoLTE4em00NS4xNDMgMFY2NGgyNi44NTd2MzgzLjcyN2gtMjYuODU3em0zNS43MTQgMFY2NGg5LjE0M3YzODMuNzI3SDQ3NnptMTggLjI3M1Y2NGgxOHYzODRoLTE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTMyaDQxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2Vjc2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZIMTZDNy4xNjMgNjAgMCA2Ny4xNjMgMCA3NnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2em0wIDE2MGg0MTZjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNDBjMC04LjgzNy03LjE2My0xNi0xNi0xNkgxNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhc2ViYWxsQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjguNSAzNjMuOWwyOC44LTEzLjljMTEuMSAyMi45IDI2IDQzLjIgNDQuMSA2MC45IDM0LTQyLjUgNTQuNS05Ni4zIDU0LjUtMTU0LjkgMC01OC41LTIwLjQtMTEyLjItNTQuMi0xNTQuNi0xNy44IDE3LjMtMzIuNiAzNy4xLTQzLjYgNTkuNWwtMjguNy0xNC4xYzEyLjgtMjYgMzAtNDkgNTAuOC02OUMzNzUuNiAzNC43IDMxNSA4IDI0OCA4IDE4MS4xIDggMTIwLjUgMzQuNiA3NS45IDc3LjdjMjAuNyAxOS45IDM3LjkgNDIuOSA1MC43IDY4LjhsLTI4LjcgMTQuMWMtMTEtMjIuMy0yNS43LTQyLjEtNDMuNS01OS40QzIwLjQgMTQzLjcgMCAxOTcuNCAwIDI1NmMwIDU4LjYgMjAuNCAxMTIuMyA1NC40IDE1NC43IDE4LjItMTcuNyAzMy4yLTM4IDQ0LjMtNjFsMjguOCAxMy45Yy0xMi45IDI2LjctMzAuMyA1MC4zLTUxLjUgNzAuNyA0NC41IDQzLjEgMTA1LjEgNjkuNyAxNzIgNjkuNyA2Ni44IDAgMTI3LjMtMjYuNSAxNzEuOS02OS41LTIxLjEtMjAuNC0zOC41LTQzLjktNTEuNC03MC42em0tMjI4LjMtMzJsLTMwLjUtOS44YzE0LjktNDYuNCAxMi43LTkzLjgtLjYtMTM0bDMwLjQtMTBjMTUgNDUuNiAxOCA5OS45LjcgMTUzLjh6bTIxNi4zLTE1My40bDMwLjQgMTBjLTEzLjIgNDAuMS0xNS41IDg3LjUtLjYgMTM0bC0zMC41IDkuOGMtMTcuMy01NC0xNC4zLTEwOC4zLjctMTUzLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmFza2V0YmFsbEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjMgMTAuM2MtNDMuOCA2LjMtODYuMiAyNC4xLTEyMi4yIDUzLjhsNzcuNCA3Ny40YzI3LjgtMzUuOCA0My4zLTgxLjIgNDQuOC0xMzEuMnpNMjQ4IDIyMkw0MDUuOSA2NC4xYy00Mi40LTM1LTkzLjYtNTMuNS0xNDUuNS01Ni4xLTEuMiA2My45LTIxLjUgMTIyLjMtNTguNyAxNjcuN0wyNDggMjIyek01Ni4xIDk4LjFjLTI5LjcgMzYtNDcuNSA3OC40LTUzLjggMTIyLjIgNTAtMS41IDk1LjUtMTcgMTMxLjItNDQuOEw1Ni4xIDk4LjF6bTI3Mi4yIDIwNC4yYzQ1LjMtMzcuMSAxMDMuNy01Ny40IDE2Ny43LTU4LjctMi42LTUxLjktMjEuMS0xMDMuMS01Ni4xLTE0NS41TDI4MiAyNTZsNDYuMyA0Ni4zek0yNDggMjkwTDkwLjEgNDQ3LjljNDIuNCAzNC45IDkzLjYgNTMuNSAxNDUuNSA1Ni4xIDEuMy02NCAyMS42LTEyMi40IDU4LjctMTY3LjdMMjQ4IDI5MHptMTkxLjkgMTIzLjljMjkuNy0zNiA0Ny41LTc4LjQgNTMuOC0xMjIuMi01MC4xIDEuNi05NS41IDE3LjEtMTMxLjIgNDQuOGw3Ny40IDc3LjR6TTE2Ny43IDIwOS43QzEyMi4zIDI0Ni45IDYzLjkgMjY3LjMgMCAyNjguNGMyLjYgNTEuOSAyMS4xIDEwMy4xIDU2LjEgMTQ1LjVMMjE0IDI1NmwtNDYuMy00Ni4zem0xMTYgMjkyYzQzLjgtNi4zIDg2LjItMjQuMSAxMjIuMi01My44bC03Ny40LTc3LjRjLTI3LjcgMzUuNy00My4yIDgxLjItNDQuOCAxMzEuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDM4NGE5NS40LDk1LjQsMCwwLDAsMzIsNzEuMDlWNDk2YTE2LDE2LDAsMCwwLDE2LDE2aDMyYTE2LDE2LDAsMCwwLDE2LTE2VjQ4MEgzODR2MTZhMTYsMTYsMCwwLDAsMTYsMTZoMzJhMTYsMTYsMCwwLDAsMTYtMTZWNDU1LjA5QTk1LjQsOTUuNCwwLDAsMCw0ODAsMzg0VjMzNkgzMlpNNDk2LDI1Nkg4MFY2OS4yNWEyMS4yNiwyMS4yNiwwLDAsMSwzNi4yOC0xNWwxOS4yNywxOS4yNmMtMTMuMTMsMjkuODgtNy42MSw1OS4xMSw4LjYyLDc5LjczbC0uMTcuMTdBMTYsMTYsMCwwLDAsMTQ0LDE3NmwxMS4zMSwxMS4zMWExNiwxNiwwLDAsMCwyMi42MywwTDI4My4zMSw4MS45NGExNiwxNiwwLDAsMCwwLTIyLjYzTDI3Miw0OGExNiwxNiwwLDAsMC0yMi42MiwwbC0uMTcuMTdjLTIwLjYyLTE2LjIzLTQ5LjgzLTIxLjc1LTc5LjczLTguNjJMMTUwLjIyLDIwLjI4QTY5LjI1LDY5LjI1LDAsMCwwLDMyLDY5LjI1VjI1NkgxNkExNiwxNiwwLDAsMCwwLDI3MnYxNmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMjcyQTE2LDE2LDAsMCwwLDQ5NiwyNTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeUVtcHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeUZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MHY2NGgzMnY2NGgtMzJ2NjRINjRWMTYwaDQ4MG0xNi02NEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg1MTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtMTZoOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtOHYtMTZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTQ4IDk2SDk2djEyOGg0MTZWMTkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJhdHRlcnlIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxNjB2NjRoMzJ2NjRoLTMydjY0SDY0VjE2MGg0ODBtMTYtNjRINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNTEyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh2LTE2aDhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE4NGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTh2LTE2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS0yNDAgOTZIOTZ2MTI4aDIyNFYxOTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmF0dGVyeVF1YXJ0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTQ0IDE2MHY2NGgzMnY2NGgtMzJ2NjRINjRWMTYwaDQ4MG0xNi02NEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg1MTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtMTZoOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNGgtOHYtMTZjMC0yNi41MS0yMS40OS00OC00OC00OHptLTMzNiA5Nkg5NnYxMjhoMTI4VjE5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCYXR0ZXJ5VGhyZWVRdWFydGVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTYwdjY0aDMydjY0aC0zMnY2NEg2NFYxNjBoNDgwbTE2LTY0SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDUxMmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di0xNmg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxODRjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC04di0xNmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMTQ0IDk2SDk2djEyOGgzMjBWMTkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjU2YzQ0LjExIDAgODAtMzUuODkgODAtODBzLTM1Ljg5LTgwLTgwLTgwLTgwIDM1Ljg5LTgwIDgwIDM1Ljg5IDgwIDgwIDgwem0zNTItMTI4SDMwNGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0SDY0VjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgNjQgMCA3MS4xNiAwIDgwdjM1MmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjI0MGMwLTYxLjg2LTUwLjE0LTExMi0xMTItMTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDk2aC00OFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2NDAwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgyNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di00Mi4xMWw4MC42MDYtMzUuOTc3QzQyOS4zOTYgMzY1LjA2MyA0NDggMzM2LjM4OCA0NDggMzA0Ljg2VjE3NmMwLTQ0LjExMi0zNS44ODgtODAtODAtODB6bTE2IDIwOC44NmExNi4wMTggMTYuMDE4IDAgMCAxLTkuNDc5IDE0LjYxMUwzMjAgMzQzLjgwNVYxNjBoNDhjOC44MjIgMCAxNiA3LjE3OCAxNiAxNnYxMjguODZ6TTIwOCAzODRjLTguODM2IDAtMTYtNy4xNjQtMTYtMTZWMTQ0YzAtOC44MzYgNy4xNjQtMTYgMTYtMTZzMTYgNy4xNjQgMTYgMTZ2MjI0YzAgOC44MzYtNy4xNjQgMTYtMTYgMTZ6bS05NiAwYy04LjgzNiAwLTE2LTcuMTY0LTE2LTE2VjE0NGMwLTguODM2IDcuMTY0LTE2IDE2LTE2czE2IDcuMTY0IDE2IDE2djIyNGMwIDguODM2LTcuMTY0IDE2LTE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuODIgNDU4LjFsLTkwLjYyLTcwLjA1Yy4xOS0xLjM4LjgtMi42Ni44LTQuMDYuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzEtMTkuMzItMjAuNzYtNTUuNDctNTEuOTktNTUuNDctMTU0LjI5IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0Yy00MC4zMyA4LjM4LTc0LjY2IDMxLjA3LTk3LjU5IDYyLjU3TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNSA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQyLTYuOTcgNC4xNy0xNy4wMi0yLjgxLTIyLjQ1ek0xNTcuMjMgMjUxLjU0Yy04LjYxIDY3Ljk2LTM2LjQxIDkzLjMzLTUyLjYyIDExMC43NS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgyNDEuOTJMMTU3LjIzIDI1MS41NHpNMzIwIDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDI1Ni4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0em0yMTUuMzktMTQ5LjcxYy0xOS4zMi0yMC43Ni01NS40Ny01MS45OS01NS40Ny0xNTQuMjkgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRDMTE4LjU2IDY4LjEgNjQuMDggMTMwLjMgNjQuMDggMjA4YzAgMTAyLjMtMzYuMTUgMTMzLjUzLTU1LjQ3IDE1NC4yOS02IDYuNDUtOC42NiAxNC4xNi04LjYxIDIxLjcxLjExIDE2LjQgMTIuOTggMzIgMzIuMSAzMmgzODMuOGMxOS4xMiAwIDMyLTE1LjYgMzIuMS0zMiAuMDUtNy41NS0yLjYxLTE1LjI3LTguNjEtMjEuNzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmV6aWVyQ3VydmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMjA4IDg4aC04NC43NUMxMTMuNzUgNjQuNTYgOTAuODQgNDggNjQgNDggMjguNjYgNDggMCA3Ni42NSAwIDExMnMyOC42NiA2NCA2NCA2NGMyNi44NCAwIDQ5Ljc1LTE2LjU2IDU5LjI1LTQwaDc5LjczYy01NS4zNyAzMi41Mi05NS44NiA4Ny4zMi0xMDkuNTQgMTUyaDQ5LjRjMTEuMy00MS42MSAzNi43Ny03Ny4yMSA3MS4wNC0xMDEuNTYtMy43LTguMDgtNS44OC0xNi45OS01Ljg4LTI2LjQ0Vjg4em0tNDggMjMySDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNTc2IDQ4Yy0yNi44NCAwLTQ5Ljc1IDE2LjU2LTU5LjI1IDQwSDQzMnY3MmMwIDkuNDUtMi4xOSAxOC4zNi01Ljg4IDI2LjQ0IDM0LjI3IDI0LjM1IDU5Ljc0IDU5Ljk1IDcxLjA0IDEwMS41Nmg0OS40Yy0xMy42OC02NC42OC01NC4xNy0xMTkuNDgtMTA5LjU0LTE1Mmg3OS43M2M5LjUgMjMuNDQgMzIuNDEgNDAgNTkuMjUgNDAgMzUuMzQgMCA2NC0yOC42NSA2NC02NHMtMjguNjYtNjQtNjQtNjR6bTAgMjcyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDM1OC40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMTQ0IDE0NGMwLTguODQgNy4xNi0xNiAxNi0xNmg0OFY4MGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY0OGg0OGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtNDh2MTEyYzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMTkyaC00OGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyem0yMzYuOCAzMDRIOTZjLTE5LjIgMC0zMi0xMi44LTMyLTMyczE2LTMyIDMyLTMyaDI4NC44djY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpY3ljbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyLjUwOSAxOTIuMDAxYy0xNi4zNzMtLjA2NC0zMi4wMyAyLjk1NS00Ni40MzYgOC40OTVsLTc3LjY4LTEyNS4xNTNBMjQgMjQgMCAwIDAgMzY4LjAwMSA2NGgtNjRjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg1MC42NDlsMTQuODk2IDI0SDI1Ni4wMDJ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTg3LjQ1OWMtMTMuNDQxIDAtMjQuNzc3IDEwLjk5OS0yNC41MzYgMjQuNDM3LjIzMiAxMy4wNDQgMTAuODc2IDIzLjU2MyAyMy45OTUgMjMuNTYzaDQ4LjcyNmwtMjkuNDE3IDQ3LjUyYy0xMy40MzMtNC44My0yNy45MDQtNy40ODMtNDIuOTkyLTcuNTJDNTguMDk0IDE5MS44My40MTIgMjQ5LjAxMi4wMDIgMzE5LjIzNi0uNDEzIDM5MC4yNzkgNTcuMDU1IDQ0OCAxMjguMDAyIDQ0OGM1OS42NDIgMCAxMDkuNzU4LTQwLjc5MyAxMjMuOTY3LTk2aDUyLjAzM2EyNCAyNCAwIDAgMCAyMC40MDYtMTEuMzY3TDQxMC4zNyAyMDEuNzdsMTQuOTM4IDI0LjA2N2MtMjUuNDU1IDIzLjQ0OC00MS4zODUgNTcuMDgxLTQxLjMwNyA5NC40MzcuMTQ1IDY4LjgzMyA1Ny44OTkgMTI3LjA1MSAxMjYuNzI5IDEyNy43MTkgNzAuNjA2LjY4NSAxMjguMTgxLTU1LjgwMyAxMjkuMjU1LTEyNS45OTYgMS4wODYtNzAuOTQxLTU2LjUyNi0xMjkuNzItMTI3LjQ3Ni0xMjkuOTk2ek0xODYuNzUgMjY1Ljc3MmM5LjcyNyAxMC41MjkgMTYuNjczIDIzLjY2MSAxOS42NDIgMzguMjI4aC00My4zMDZsMjMuNjY0LTM4LjIyOHpNMTI4LjAwMiA0MDBjLTQ0LjExMiAwLTgwLTM1Ljg4OC04MC04MHMzNS44ODgtODAgODAtODBjNS44NjkgMCAxMS41ODYuNjUzIDE3LjA5OSAxLjg1OWwtNDUuNTA1IDczLjUwOUM4OS43MTUgMzMxLjMyNyAxMDEuMjEzIDM1MiAxMjAuMDAyIDM1Mmg4MS4zYy0xMi4zNyAyOC4yMjUtNDAuNTYyIDQ4LTczLjMgNDh6bTE2Mi42My05NmgtMzUuNjI0Yy0zLjk2LTMxLjc1Ni0xOS41NTYtNTkuODk0LTQyLjM4My04MC4wMjZMMjM3LjM3MSAxODRoMTI3LjU0N2wtNzQuMjg2IDEyMHptMjE3LjA1NyA5NS44ODZjLTQxLjAzNi0yLjE2NS03NC4wNDktMzUuNjkyLTc1LjYyNy03Ni43NTUtLjgxMi0yMS4xMjEgNi42MzMtNDAuNTE4IDE5LjMzNS01NS4yNjNsNDQuNDMzIDcxLjU4NmM0LjY2IDcuNTA4IDE0LjUyNCA5LjgxNiAyMi4wMzIgNS4xNTZsMTMuNTk0LTguNDM3YzcuNTA4LTQuNjYgOS44MTctMTQuNTI0IDUuMTU2LTIyLjAzMmwtNDQuNDY4LTcxLjY0M2E3OS45MDEgNzkuOTAxIDAgMCAxIDE5Ljg1OC0yLjQ5N2M0NC4xMTIgMCA4MCAzNS44ODggODAgODAtLjAwMSA0NS41NC0zOC4yNTIgODIuMzE2LTg0LjMxMyA3OS44ODV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA5NmE0OCA0OCAwIDEgMC00OC00OCA0OCA0OCAwIDAgMCA0OCA0OHptLTQgMTIxYTMxLjkgMzEuOSAwIDAgMCAyMCA3aDY0YTMyIDMyIDAgMCAwIDAtNjRoLTUyLjc4TDM1NiAxMDNhMzEuOTQgMzEuOTQgMCAwIDAtNDAuODEuNjhsLTExMiA5NmEzMiAzMiAwIDAgMCAzLjA4IDUwLjkyTDI4OCAzMDUuMTJWNDE2YTMyIDMyIDAgMCAwIDY0IDBWMjg4YTMyIDMyIDAgMCAwLTE0LjI1LTI2LjYybC00MS4zNi0yNy41NyA1OC4yNS00OS45MnptMTE2IDM5YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjggMTI4IDAgMCAwLTEyOC0xMjh6bTAgMTkyYTY0IDY0IDAgMSAxIDY0LTY0IDY0IDY0IDAgMCAxLTY0IDY0ek0xMjggMjU2YTEyOCAxMjggMCAxIDAgMTI4IDEyOCAxMjggMTI4IDAgMCAwLTEyOC0xMjh6bTAgMTkyYTY0IDY0IDAgMSAxIDY0LTY0IDY0IDY0IDAgMCAxLTY0IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJpbm9jdWxhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhoOTZWNDh6TTYzLjkxIDE1OS45OUM2MS40IDI1My44NCAzLjQ2IDI3NC4yMiAwIDQwNHY0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjg4aDMyVjEyOEg5NS44NGMtMTcuNjMgMC0zMS40NSAxNC4zNy0zMS45MyAzMS45OXptMzg0LjE4IDBjLS40OC0xNy42Mi0xNC4zLTMxLjk5LTMxLjkzLTMxLjk5SDMyMHYxNjBoMzJ2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNDRjLTMuNDYtMTI5Ljc4LTYxLjQtMTUwLjE2LTYzLjkxLTI0NC4wMXpNMTc2IDMyaC02NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhoOTZWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTQ4IDI1Nmg2NFYxMjhoLTY0djE2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCaW9oYXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg3LjkgMTEyYzE4LjYgMCAzNi4yIDMuOCA1Mi44IDkuNiAxMy4zLTEwLjMgMjMuNi0yNC4zIDI5LjUtNDAuNy0yNS4yLTEwLjktNTMtMTctODIuMi0xNy0yOS4xIDAtNTYuOSA2LTgyLjEgMTYuOSA1LjkgMTYuNCAxNi4yIDMwLjQgMjkuNSA0MC43IDE2LjUtNS43IDM0LTkuNSA1Mi41LTkuNXpNMTYzLjYgNDM4LjdjMTItMTEuOCAyMC40LTI2LjQgMjQuNS00Mi40LTMyLjktMjYuNC01NC44LTY1LjMtNTguOS0xMDkuNi04LjUtMi44LTE3LjItNC42LTI2LjQtNC42LTcuNiAwLTE1LjIgMS0yMi41IDMuMSA0LjEgNjIuOCAzNS44IDExOCA4My4zIDE1My41em0yMjQuMi00Mi42YzQuMSAxNiAxMi41IDMwLjcgMjQuNSA0Mi41IDQ3LjQtMzUuNSA3OS4xLTkwLjcgODMtMTUzLjUtNy4yLTItMTQuNy0zLTIyLjItMy05LjIgMC0xOCAxLjktMjYuNiA0LjctNC4xIDQ0LjItMjYgODIuOS01OC43IDEwOS4zem0xMTMuNS0yMDVjLTE3LjYtMTAuNC0zNi4zLTE2LjYtNTUuMy0xOS45IDYtMTcuNyAxMC0zNi40IDEwLTU2LjIgMC00MS0xNC41LTgwLjgtNDEtMTEyLjItMi41LTMtNi42LTMuNy0xMC0xLjgtMy4zIDEuOS00LjggNi0zLjYgOS43IDQuNSAxMy44IDYuNiAyNi4zIDYuNiAzOC41IDAgNjcuOC01My44IDEyMi45LTEyMCAxMjIuOVMxNjggMTE3IDE2OCA0OS4yYzAtMTIuMSAyLjItMjQuNyA2LjYtMzguNSAxLjItMy43LS4zLTcuOC0zLjYtOS43LTMuNC0xLjktNy41LTEuMi0xMCAxLjhDMTM0LjYgMzQuMiAxMjAgNzQgMTIwIDExNWMwIDE5LjggMy45IDM4LjUgMTAgNTYuMi0xOC45IDMuMy0zNy43IDkuNS01NS4zIDE5LjktMzQuNiAyMC41LTYxIDUzLjMtNzQuMyA5Mi40LTEuMyAzLjcuMiA3LjcgMy41IDkuOCAzLjMgMiA3LjUgMS4zIDEwLTEuNiA5LjQtMTAuOCAxOS0xOS4xIDI5LjItMjUuMSA1Ny4zLTMzLjkgMTMwLjgtMTMuNyAxNjMuOSA0NSAzMy4xIDU4LjcgMTMuNCAxMzQtNDMuOSAxNjcuOS0xMC4yIDYuMS0yMiAxMC40LTM1LjggMTMuNC0zLjcuOC02LjQgNC4yLTYuNCA4LjEuMSA0IDIuNyA3LjMgNi41IDggMzkuNyA3LjggODAuNi44IDExNS4yLTE5LjcgMTgtMTAuNiAzMi45LTI0LjUgNDUuMy00MC4xIDEyLjQgMTUuNiAyNy4zIDI5LjUgNDUuMyA0MC4xIDM0LjYgMjAuNSA3NS41IDI3LjUgMTE1LjIgMTkuNyAzLjgtLjcgNi40LTQgNi41LTggMC0zLjktMi42LTcuMy02LjQtOC4xLTEzLjktMi45LTI1LjYtNy4zLTM1LjgtMTMuNC01Ny4zLTMzLjktNzctMTA5LjItNDMuOS0xNjcuOXMxMDYuNi03OC45IDE2My45LTQ1YzEwLjIgNi4xIDE5LjggMTQuMyAyOS4yIDI1LjEgMi41IDIuOSA2LjcgMy42IDEwIDEuNnM0LjgtNi4xIDMuNS05LjhjLTEzLjEtMzkuMS0zOS41LTcyLTc0LjEtOTIuNHptLTIxMy40IDEyOWMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmlydGhkYXlDYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzODRjLTI4LjAyIDAtMzEuMjYtMzItNzQuNS0zMi00My40MyAwLTQ2LjgyNSAzMi03NC43NSAzMi0yNy42OTUgMC0zMS40NTQtMzItNzQuNzUtMzItNDIuODQyIDAtNDcuMjE4IDMyLTc0LjUgMzItMjguMTQ4IDAtMzEuMjAyLTMyLTc0Ljc1LTMyLTQzLjU0NyAwLTQ2LjY1MyAzMi03NC43NSAzMnYtODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMTZWMTEyaDY0djE0NGg2NFYxMTJoNjR2MTQ0aDY0VjExMmg2NHYxNDRoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDh2ODB6bTAgMTI4SDB2LTk2YzQzLjM1NiAwIDQ2Ljc2Ny0zMiA3NC43NS0zMiAyNy45NTEgMCAzMS4yNTMgMzIgNzQuNzUgMzIgNDIuODQzIDAgNDcuMjE3LTMyIDc0LjUtMzIgMjguMTQ4IDAgMzEuMjAxIDMyIDc0Ljc1IDMyIDQzLjM1NyAwIDQ2Ljc2Ny0zMiA3NC43NS0zMiAyNy40ODggMCAzMS4yNTIgMzIgNzQuNSAzMnY5NnpNOTYgOTZjLTE3Ljc1IDAtMzItMTQuMjUtMzItMzIgMC0zMSAzMi0yMyAzMi02NCAxMiAwIDMyIDI5LjUgMzIgNTZzLTE0LjI1IDQwLTMyIDQwem0xMjggMGMtMTcuNzUgMC0zMi0xNC4yNS0zMi0zMiAwLTMxIDMyLTIzIDMyLTY0IDEyIDAgMzIgMjkuNSAzMiA1NnMtMTQuMjUgNDAtMzIgNDB6bTEyOCAwYy0xNy43NSAwLTMyLTE0LjI1LTMyLTMyIDAtMzEgMzItMjMgMzItNjQgMTIgMCAzMiAyOS41IDMyIDU2cy0xNC4yNSA0MC0zMiA0MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbGVuZGVyUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzkyIDY0aDE2Ni41NEw1NzYgMEgxOTJ2MzUyaDI4OGwxNy40Ni02NEgzOTJjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTQuMThsMTcuNDYtNjRIMzkyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTQwLjM2bDE3LjQ2LTY0SDM5MmMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LTh6TTE1OC44IDMzNS4wMWwtMjUuNzgtNjMuMjZjLTIuNzgtNi44MS05LjgtMTAuOTktMTcuMjQtMTAuMjZsLTQ1LjAzIDQuNDJjLTE3LjI4LTQ2Ljk0LTE3LjY1LTk5Ljc4IDAtMTQ3LjcybDQ1LjAzIDQuNDJjNy40My43MyAxNC40Ni0zLjQ2IDE3LjI0LTEwLjI2bDI1Ljc4LTYzLjI2YzMuMDItNy4zOS4yLTE1Ljg1LTYuNjgtMjAuMDdsLTM5LjI4LTI0LjFDOTguNTEtMy44NyA4MC4wOS0uNSA2OC45NSAxMS45N2MtOTIuNTcgMTAzLjYtOTIgMjU5LjU1IDIuMSAzNjIuNDkgOS44NyAxMC44IDI5LjEyIDEyLjQ4IDQxLjY1IDQuOGwzOS40MS0yNC4xOGM2Ljg5LTQuMjIgOS43LTEyLjY3IDYuNjktMjAuMDd6TTQ4MCAzODRIMTkyYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzUyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS0xNDQgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxlbmRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzg0SDE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0em0tMTI4IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem00MC00MTZoMTY2LjU0TDUxMiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djE2MGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDEwMy4yN2w4LjczIDk2aDI1NmwxNy40Ni02NEgzMjhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgxMTQuMThsMTcuNDYtNjRIMzI4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTQwLjM2bDE3LjQ2LTY0SDMyOGMtNC40MiAwLTgtMy41OC04LThWNzJjMC00LjQyIDMuNTgtOCA4LTh6TTY0IDE5MlY2NGg2OS44MmwxMS42NCAxMjhINjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQmxpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgwLjE1IDUxMC44MzdhOCA4IDAgMCAxLTEwLjk4OS0yLjY4N2wtMTI1LjMzLTIwNi40MjdhMzEuOTIzIDMxLjkyMyAwIDAgMCAxMi45NTgtOS40ODVsMTI2LjA0OCAyMDcuNjA4YTggOCAwIDAgMS0yLjY4NyAxMC45OTF6TTE0Mi44MDMgMzE0LjMzOGwtMzIuNTQgODkuNDg1IDM2LjEyIDg4LjI4NWM2LjY5MyAxNi4zNiAyNS4zNzcgMjQuMTkyIDQxLjczMyAxNy41MDEgMTYuMzU3LTYuNjkyIDI0LjE5My0yNS4zNzYgMTcuNTAxLTQxLjczNGwtNjIuODE0LTE1My41Mzd6TTk2IDg4YzI0LjMwMSAwIDQ0LTE5LjY5OSA0NC00NFMxMjAuMzAxIDAgOTYgMCA1MiAxOS42OTkgNTIgNDRzMTkuNjk5IDQ0IDQ0IDQ0em0xNTQuODM3IDE2OS4xMjhsLTEyMC0xNTJjLTQuNzMzLTUuOTk1LTExLjc1LTkuMTA4LTE4LjgzNy05LjExMlY5Nkg4MHYuMDI2Yy03LjE0Ni4wMDMtMTQuMjE3IDMuMTYxLTE4Ljk0NCA5LjI0TDAgMTgzLjc2NnY5NS42OTRjMCAxMy40NTUgMTEuMDExIDI0Ljc5MSAyNC40NjQgMjQuNTM2QzM3LjUwNSAzMDMuNzQ4IDQ4IDI5My4xIDQ4IDI4MHYtNzkuNzY2bDE2LTIwLjU3MXYxNDAuNjk4TDkuOTI3IDQ2OS4wNTVjLTYuMDQgMTYuNjA5IDIuNTI4IDM0Ljk2OSAxOS4xMzggNDEuMDA5IDE2LjYwMiA2LjAzOSAzNC45NjgtMi41MjQgNDEuMDA5LTE5LjEzOEwxMzYgMzA5LjYzOFYyMDIuNDQxbC0zMS40MDYtMzkuODE2YTQgNCAwIDEgMSA2LjI2OS00Ljk3MWwxMDIuMyAxMjkuMjE3YzkuMTQ1IDExLjU4NCAyNC4zNjggMTEuMzM5IDMzLjcwOCAzLjk2NSAxMC40MS04LjIxNiAxMi4xNTktMjMuMzM0IDMuOTY2LTMzLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCbG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yIDIyNi44Yy0xNC42LTIuOS0yOC4yIDguOS0yOC4yIDIzLjhWMzAxYzAgMTAuMiA3LjEgMTguNCAxNi43IDIyIDE4LjIgNi44IDMxLjMgMjQuNCAzMS4zIDQ1IDAgMjYuNS0yMS41IDQ4LTQ4IDQ4cy00OC0yMS41LTQ4LTQ4VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNEgyNGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MjQ4YzAgODkuNSA4Mi4xIDE2MC4yIDE3NSAxNDAuNyA1NC40LTExLjQgOTguMy01NS40IDEwOS43LTEwOS43IDE3LjQtODIuOS0zNy0xNTcuMi0xMTIuNS0xNzIuMnpNMjA5IDBjLTkuMi0uNS0xNyA2LjgtMTcgMTZ2MzEuNmMwIDguNSA2LjYgMTUuNSAxNSAxNS45IDEyOS40IDcgMjMzLjQgMTEyIDI0MC45IDI0MS41LjUgOC40IDcuNSAxNSAxNS45IDE1aDMyLjFjOS4yIDAgMTYuNS03LjggMTYtMTdDNTAzLjQgMTM5LjggMzcyLjIgOC42IDIwOSAwem0uMyA5NmMtOS4zLS43LTE3LjMgNi43LTE3LjMgMTYuMXYzMi4xYzAgOC40IDYuNSAxNS4zIDE0LjggMTUuOSA3Ni44IDYuMyAxMzggNjguMiAxNDQuOSAxNDUuMi44IDguMyA3LjYgMTQuNyAxNS45IDE0LjdoMzIuMmM5LjMgMCAxNi44LTggMTYuMS0xNy4zLTguNC0xMTAuMS05Ni41LTE5OC4yLTIwNi42LTIwNi43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMzLjQ5IDIzOGExMjIgMTIyIDAgMCAwIDI3LTY1LjIxQzM2Ny44NyA5Ni40OSAzMDggMzIgMjMzLjQyIDMySDM0YTE2IDE2IDAgMCAwLTE2IDE2djQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMxLjg3djI4OEgzNGExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmgyMDkuMzJjNzAuOCAwIDEzNC4xNC01MS43NSAxNDEtMTIyLjQgNC43NC00OC40NS0xNi4zOS05Mi4wNi01MC44My0xMTkuNnpNMTQ1LjY2IDExMmg4Ny43NmE0OCA0OCAwIDAgMSAwIDk2aC04Ny43NnptODcuNzYgMjg4aC04Ny43NlYyODhoODcuNzZhNTYgNTYgMCAwIDEgMCAxMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9sdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMTYwSDE4MC42bDQyLjYtMTI5LjhDMjI3LjIgMTUgMjE1LjcgMCAyMDAgMEg1NkM0NCAwIDMzLjggOC45IDMyLjIgMjAuOGwtMzIgMjQwQy0xLjcgMjc1LjIgOS41IDI4OCAyNCAyODhoMTE4LjdMOTYuNiA0ODIuNWMtMy42IDE1LjIgOCAyOS41IDIzLjMgMjkuNSA4LjQgMCAxNi40LTQuNCAyMC44LTEybDE3Ni0zMDRjOS4zLTE1LjktMi4yLTM2LTIwLjctMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9tYiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDAuNSA4OC41bC01MiA1Mkw0MTUgMTY3YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0xNy40IDE3LjRjMTEuOCAyNi4xIDE4LjQgNTUuMSAxOC40IDg1LjYgMCAxMTQuOS05My4xIDIwOC0yMDggMjA4UzAgNDE4LjkgMCAzMDQgOTMuMSA5NiAyMDggOTZjMzAuNSAwIDU5LjUgNi42IDg1LjYgMTguNEwzMTEgOTdjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjYuNSAyNi41IDUyLTUyIDE3LjEgMTd6TTUwMCA2MGgtMjRjLTYuNiAwLTEyIDUuNC0xMiAxMnM1LjQgMTIgMTIgMTJoMjRjNi42IDAgMTItNS40IDEyLTEycy01LjQtMTItMTItMTJ6TTQ0MCAwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MjRjMCA2LjYgNS40IDEyIDEyIDEyczEyLTUuNCAxMi0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6bTMzLjkgNTVsMTctMTdjNC43LTQuNyA0LjctMTIuMyAwLTE3LTQuNy00LjctMTIuMy00LjctMTcgMGwtMTcgMTdjLTQuNyA0LjctNC43IDEyLjMgMCAxNyA0LjggNC43IDEyLjQgNC43IDE3IDB6bS02Ny44IDBjNC43IDQuNyAxMi4zIDQuNyAxNyAwIDQuNy00LjcgNC43LTEyLjMgMC0xN2wtMTctMTdjLTQuNy00LjctMTIuMy00LjctMTcgMC00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTcgMTd6bTY3LjggMzRjLTQuNy00LjctMTIuMy00LjctMTcgMC00LjcgNC43LTQuNyAxMi4zIDAgMTdsMTcgMTdjNC43IDQuNyAxMi4zIDQuNyAxNyAwIDQuNy00LjcgNC43LTEyLjMgMC0xN2wtMTctMTd6TTExMiAyNzJjMC0zNS4zIDI4LjctNjQgNjQtNjQgOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTZjLTUyLjkgMC05NiA0My4xLTk2IDk2IDAgOC44IDcuMiAxNiAxNiAxNnMxNi03LjIgMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTguODggMjQ0LjU2YzI1LjItMTIuNiA0MS4xMi0zOC4zNiA0MS4xMi02Ni41M3YtNy42NEM2NDAgMTI5LjMgNjA2LjcgOTYgNTY1LjYxIDk2Yy0zMi4wMiAwLTYwLjQ0IDIwLjQ5LTcwLjU3IDUwLjg2LTcuNjggMjMuMDMtMTEuNiA0NS4xNC0zOC4xMSA0NS4xNEgxODMuMDZjLTI3LjM4IDAtMzEuNTgtMjUuNTQtMzguMTEtNDUuMTRDMTM0LjgzIDExNi40OSAxMDYuNCA5NiA3NC4zOSA5NiAzMy4zIDk2IDAgMTI5LjMgMCAxNzAuMzl2Ny42NGMwIDI4LjE3IDE1LjkyIDUzLjkzIDQxLjEyIDY2LjUzIDkuNDMgNC43MSA5LjQzIDE4LjE3IDAgMjIuODhDMTUuOTIgMjgwLjA0IDAgMzA1LjggMCAzMzMuOTd2Ny42NEMwIDM4Mi43IDMzLjMgNDE2IDc0LjM4IDQxNmMzMi4wMiAwIDYwLjQ0LTIwLjQ5IDcwLjU3LTUwLjg2IDcuNjgtMjMuMDMgMTEuNi00NS4xNCAzOC4xMS00NS4xNGgyNzMuODdjMjcuMzggMCAzMS41OCAyNS41NCAzOC4xMSA0NS4xNEM1MDUuMTcgMzk1LjUxIDUzMy42IDQxNiA1NjUuNjEgNDE2YzQxLjA4IDAgNzQuMzgtMzMuMyA3NC4zOC03NC4zOXYtNy42NGMwLTI4LjE4LTE1LjkyLTUzLjkzLTQxLjEyLTY2LjUzLTkuNDItNC43MS05LjQyLTE4LjE3LjAxLTIyLjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjUgNTEyYzIzLjE4IDAgNDQuNDMtMTIuNTggNTYtMzIuNjZDMzc0LjY5IDQ1MS4yNiAzODQgNDE4Ljc1IDM4NCAzODRjMC0zNi4xMi0xMC4wOC02OS44MS0yNy40NC05OC42Mkw0MDAgMjQxLjk0bDkuMzggOS4zOGM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDExLjMtMTEuMzJjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtNTIuNjktNTIuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDkuMzggOS4zOC0zOS40MSAzOS40MWMtMTEuNTYtMTEuMzctMjQuNTMtMjEuMzMtMzguNjUtMjkuNTFWNjMuNzRsMTUuOTctLjAyYzguODItLjAxIDE1Ljk3LTcuMTYgMTUuOTgtMTUuOThsLjA0LTMxLjcyQzMyMCA3LjE3IDMxMi44Mi0uMDEgMzAzLjk3IDBMODAuMDMuMjZjLTguODIuMDEtMTUuOTcgNy4xNi0xNS45OCAxNS45OGwtLjA0IDMxLjczYy0uMDEgOC44NSA3LjE3IDE2LjAyIDE2LjAyIDE2LjAxTDk2IDYzLjk2djE1My45M0MzOC42NyAyNTEuMSAwIDMxMi45NyAwIDM4NGMwIDM0Ljc1IDkuMzEgNjcuMjcgMjUuNSA5NS4zNEMzNy4wOCA0OTkuNDIgNTguMzMgNTEyIDgxLjUgNTEyaDIyMXpNMTIwLjA2IDI1OS40M0wxNDQgMjQ1LjU2VjYzLjkxbDk2LS4xMXYxODEuNzZsMjMuOTQgMTMuODdjMjQuODEgMTQuMzcgNDQuMTIgMzUuNzMgNTYuNTYgNjAuNTdoLTI1N2MxMi40NS0yNC44NCAzMS43NS00Ni4yIDU2LjU2LTYwLjU3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tEZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAxMzZjOC44IDAgMTYtNy4yIDE2LTE2cy03LjItMTYtMTYtMTYtMTYgNy4yLTE2IDE2IDcuMiAxNiAxNiAxNnptMTc2IDIyMi40VjI1LjZjMC0xNi05LjYtMjUuNi0yNS42LTI1LjZIOTZDNDEuNiAwIDAgNDEuNiAwIDk2djMyMGMwIDU0LjQgNDEuNiA5NiA5NiA5NmgzMjYuNGMxMi44IDAgMjUuNi05LjYgMjUuNi0yNS42di0xNmMwLTYuNC0zLjItMTIuOC05LjYtMTkuMi0zLjItMTYtMy4yLTYwLjggMC03My42IDYuNC0zLjIgOS42LTkuNiA5LjYtMTkuMnpNMjQwIDU2YzQ0LjIgMCA4MCAyOC43IDgwIDY0IDAgMjAuOS0xMi43IDM5LjItMzIgNTAuOVYxODRjMCA4LjgtNy4yIDE2LTE2IDE2aC02NGMtOC44IDAtMTYtNy4yLTE2LTE2di0xMy4xYy0xOS4zLTExLjctMzItMzAtMzItNTAuOSAwLTM1LjMgMzUuOC02NCA4MC02NHpNMTI0LjggMjIzLjNsNi4zLTE0LjdjMS43LTQuMSA2LjQtNS45IDEwLjUtNC4ybDk4LjMgNDIuMSA5OC40LTQyLjFjNC4xLTEuNyA4LjguMSAxMC41IDQuMmw2LjMgMTQuN2MxLjcgNC4xLS4xIDguOC00LjIgMTAuNUwyODAuNiAyNjRsNzAuMyAzMC4xYzQuMSAxLjcgNS45IDYuNCA0LjIgMTAuNWwtNi4zIDE0LjdjLTEuNyA0LjEtNi40IDUuOS0xMC41IDQuMkwyNDAgMjgxLjRsLTk4LjMgNDIuMmMtNC4xIDEuNy04LjgtLjEtMTAuNS00LjJsLTYuMy0xNC43Yy0xLjctNC4xLjEtOC44IDQuMi0xMC41bDcwLjQtMzAuMS03MC41LTMwLjNjLTQuMS0xLjctNS45LTYuNC00LjItMTAuNXptMjU2IDIyNC43SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpNMjA4IDEzNmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNTguNFYyNS42YzAtMTYtOS42LTI1LjYtMjUuNi0yNS42SDk2QzQxLjYgMCAwIDQxLjYgMCA5NnYzMjBjMCA1NC40IDQxLjYgOTYgOTYgOTZoMzI2LjRjMTIuOCAwIDI1LjYtOS42IDI1LjYtMjUuNnYtMTZxMC05LjYtOS42LTE5LjJjLTMuMi0xNi0zLjItNjAuOCAwLTczLjZxOS42LTQuOCA5LjYtMTkuMnpNMTQ0IDE2OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHY0OGE4IDggMCAwIDEtOCA4aC01NnY1NmE4IDggMCAwIDEtOCA4aC00OGE4IDggMCAwIDEtOC04di01NmgtNTZhOCA4IDAgMCAxLTgtOHptMjM2LjggMjgwSDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb29rT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDIuMjIgMzIuMDVjLTU0LjggMy4xMS0xNjMuNzIgMTQuNDMtMjMwLjk2IDU1LjU5LTQuNjQgMi44NC03LjI3IDcuODktNy4yNyAxMy4xN3YzNjMuODdjMCAxMS41NSAxMi42MyAxOC44NSAyMy4yOCAxMy40OSA2OS4xOC0zNC44MiAxNjkuMjMtNDQuMzIgMjE4LjctNDYuOTIgMTYuODktLjg5IDMwLjAyLTE0LjQzIDMwLjAyLTMwLjY2VjYyLjc1Yy4wMS0xNy43MS0xNS4zNS0zMS43NC0zMy43Ny0zMC43ek0yNjQuNzMgODcuNjRDMTk3LjUgNDYuNDggODguNTggMzUuMTcgMzMuNzggMzIuMDUgMTUuMzYgMzEuMDEgMCA0NS4wNCAwIDYyLjc1VjQwMC42YzAgMTYuMjQgMTMuMTMgMjkuNzggMzAuMDIgMzAuNjYgNDkuNDkgMi42IDE0OS41OSAxMi4xMSAyMTguNzcgNDYuOTUgMTAuNjIgNS4zNSAyMy4yMS0xLjk0IDIzLjIxLTEzLjQ2VjEwMC42M2MwLTUuMjktMi42Mi0xMC4xNC03LjI3LTEyLjk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2tSZWFkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzUyIDk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2IDQyLjk4IDk2IDk2IDk2IDk2LTQyLjk4IDk2LTk2ek0yMzMuNTkgMjQxLjFjLTU5LjMzLTM2LjMyLTE1NS40My00Ni4zLTIwMy43OS00OS4wNUMxMy41NSAxOTEuMTMgMCAyMDMuNTEgMCAyMTkuMTR2MjIyLjhjMCAxNC4zMyAxMS41OSAyNi4yOCAyNi40OSAyNy4wNSA0My42NiAyLjI5IDEzMS45OSAxMC42OCAxOTMuMDQgNDEuNDMgOS4zNyA0LjcyIDIwLjQ4LTEuNzEgMjAuNDgtMTEuODdWMjUyLjU2Yy0uMDEtNC42Ny0yLjMyLTguOTUtNi40Mi0xMS40NnptMjQ4LjYxLTQ5LjA1Yy00OC4zNSAyLjc0LTE0NC40NiAxMi43My0yMDMuNzggNDkuMDUtNC4xIDIuNTEtNi40MSA2Ljk2LTYuNDEgMTEuNjN2MjQ1Ljc5YzAgMTAuMTkgMTEuMTQgMTYuNjMgMjAuNTQgMTEuOSA2MS4wNC0zMC43MiAxNDkuMzItMzkuMTEgMTkyLjk3LTQxLjQgMTQuOS0uNzggMjYuNDktMTIuNzMgMjYuNDktMjcuMDZWMjE5LjE0Yy0uMDEtMTUuNjMtMTMuNTYtMjguMDEtMjkuODEtMjcuMDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzYwVjI0YzAtMTMuMy0xMC43LTI0LTI0LTI0SDk2QzQzIDAgMCA0MyAwIDk2djMyMGMwIDUzIDQzIDk2IDk2IDk2aDMyOGMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtMTZjMC03LjUtMy41LTE0LjMtOC45LTE4LjctNC4yLTE1LjQtNC4yLTU5LjMgMC03NC43IDUuNC00LjMgOC45LTExLjEgOC45LTE4LjZ6TTEyOCAxMzRjMC0zLjMgMi43LTYgNi02aDIxMmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDEzNGMtMy4zIDAtNi0yLjctNi02di0yMHptMCA2NGMwLTMuMyAyLjctNiA2LTZoMjEyYzMuMyAwIDYgMi43IDYgNnYyMGMwIDMuMy0yLjcgNi02IDZIMTM0Yy0zLjMgMC02LTIuNy02LTZ2LTIwem0yNTMuNCAyNTBIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyIDAtMTcuNiAxNC40LTMyIDMyLTMyaDI4NS40Yy0xLjkgMTcuMS0xLjkgNDYuOSAwIDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNTEyVjQ4QzAgMjEuNDkgMjEuNDkgMCA0OCAwaDI4OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djQ2NEwxOTIgNDAwIDAgNTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlckFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMzJIMzJBMzIgMzIgMCAwIDAgMCA2NHYzODRhMzIgMzIgMCAwIDAgMzIgMzJoMzg0YTMyIDMyIDAgMCAwIDMyLTMyVjY0YTMyIDMyIDAgMCAwLTMyLTMyem0tMzIgNjR2MTI4SDI1NlY5NnptLTE5MiAwdjEyOEg2NFY5NnpNNjQgNDE2VjI4OGgxMjh2MTI4em0xOTIgMFYyODhoMTI4djEyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3JkZXJOb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAyMjRoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0yODggMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAxOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYgMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMjQwIDMyMGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTE5MmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tOTYgMjg4aC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2LTM4NGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em05NiAwaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpNNDggMjI0SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCAxOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xOTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJvcmRlclN0eWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA0MTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTk2IDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMTkyIDBoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptOTYtMTkyaC0zMmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgOTZoLTMyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMCA5NmgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTI4OGgtMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTk2SDMyQTMyIDMyIDAgMCAwIDAgNjR2NDAwYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2Vjk2aDM2OGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3dsaW5nQmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xMjAgMTkyYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptNjQtOTZjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTQ4IDE0NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQm94T3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjUuNyAyNTZjLTE2LjkgMC0zMi44LTktNDEuNC0yMy40TDMyMCAxMjZsLTY0LjIgMTA2LjZjLTguNyAxNC41LTI0LjYgMjMuNS00MS41IDIzLjUtNC41IDAtOS0uNi0xMy4zLTEuOUw2NCAyMTV2MTc4YzAgMTQuNyAxMCAyNy41IDI0LjIgMzFsMjE2LjIgNTQuMWMxMC4yIDIuNSAyMC45IDIuNSAzMSAwTDU1MS44IDQyNGMxNC4yLTMuNiAyNC4yLTE2LjQgMjQuMi0zMVYyMTVsLTEzNyAzOS4xYy00LjMgMS4zLTguOCAxLjktMTMuMyAxLjl6bTIxMi42LTExMi4yTDU4Ni44IDQxYy0zLjEtNi4yLTkuOC05LjgtMTYuNy04LjlMMzIwIDY0bDkxLjcgMTUyLjFjMy44IDYuMyAxMS40IDkuMyAxOC41IDcuM2wxOTcuOS01Ni41YzkuOS0yLjkgMTQuNy0xMy45IDEwLjItMjMuMXpNNTMuMiA0MUwxLjcgMTQzLjhjLTQuNiA5LjIuMyAyMC4yIDEwLjEgMjNsMTk3LjkgNTYuNWM3LjEgMiAxNC43LTEgMTguNS03LjNMMzIwIDY0IDY5LjggMzIuMWMtNi45LS44LTEzLjUgMi43LTE2LjYgOC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveFRpc3N1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODMuODgsMjg3LjgybDY0LTE5MkgzMzguNDdhNzAuMiw3MC4yLDAsMCwxLTY2LjU5LTQ4LDcwLjIxLDcwLjIxLDAsMCwwLTY2LjYtNDhINjMuODhsNjQsMjg4Wm0tMzg0LDE5MmEzMiwzMiwwLDAsMCwzMiwzMmg0NDhhMzIsMzIsMCwwLDAsMzItMzJ2LTY0SC0uMTJabTQ4MC0yNTZINDM4Ljk0bC0yMS4zMyw2NGgxNC4yN2ExNiwxNiwwLDAsMSwwLDMyaC0zNTJhMTYsMTYsMCwxLDEsMC0zMkg5NS4wOWwtMTQuMjItNjRoLTQ5YTMyLDMyLDAsMCwwLTMyLDMydjEyOGg1MTJ2LTEyOEEzMiwzMiwwLDAsMCw0NzkuODgsMjIzLjgyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDkuNSAxODQuNkw0NTguOSAzMi44QzQ1Mi40IDEzLjIgNDM0LjEgMCA0MTMuNCAwSDI3MnYxOTJoMjM4LjdjLS40LTIuNS0uNC01LTEuMi03LjR6TTI0MCAwSDk4LjZjLTIwLjcgMC0zOSAxMy4yLTQ1LjUgMzIuOEwyLjUgMTg0LjZjLS44IDIuNC0uOCA0LjktMS4yIDcuNEgyNDBWMHpNMCAyMjR2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYyMjRIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCb3hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgMjg4aC04MHY5NmwtMzItMjEuMy0zMiAyMS4zdi05NmgtODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnptLTM4NC02NGgyMjRjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtODB2OTZsLTMyLTIxLjNMMjU2IDk2VjBoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTkyYzAgOC44IDcuMiAxNiAxNiAxNnptNjQgNjRoLTgwdjk2bC0zMi0yMS4zTDk2IDM4NHYtOTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYxOTJjMCA4LjggNy4yIDE2IDE2IDE2aDIyNGM4LjggMCAxNi03LjIgMTYtMTZWMzA0YzAtOC44LTcuMi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcmFpbGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAyNTZjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0UzAgMjkxLjM0NiAwIDI1NnMyOC42NTQtNjQgNjQtNjQgNjQgMjguNjU0IDY0IDY0ek02NCAzODRjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJDMjguNjU0IDMyIDAgNjAuNjU0IDAgOTZzMjguNjU0IDY0IDY0IDY0IDY0LTI4LjY1NCA2NC02NC0yOC42NTQtNjQtNjQtNjR6bTE2MCAxOTJjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMCAxNjBjLTE3LjY3MyAwLTMyIDE0LjMyNy0zMiAzMnMxNC4zMjcgMzIgMzIgMzIgMzItMTQuMzI3IDMyLTMyLTE0LjMyNy0zMi0zMi0zMnptMC0zNTJjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHMyOC42NTQgNjQgNjQgNjQgNjQtMjguNjU0IDY0LTY0LTI4LjY1NC02NC02NC02NHptMjI0IDE5MmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wIDE2MGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0wLTM1MmMtMzUuMzQ2IDAtNjQgMjguNjU0LTY0IDY0czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0em0xNjAgMTkyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAgMTYwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6bTAtMzIwYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJzMTQuMzI3IDMyIDMyIDMyIDMyLTE0LjMyNyAzMi0zMi0xNC4zMjctMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA4IDBjLTI5LjkgMC01NC43IDIwLjUtNjEuOCA0OC4yLS44IDAtMS40LS4yLTIuMi0uMi0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDQuOC42IDkuNSAxLjcgMTRDNTIuNSAxMzggMzIgMTY2LjYgMzIgMjAwYzAgMTIuNiAzLjIgMjQuMyA4LjMgMzQuOUMxNi4zIDI0OC43IDAgMjc0LjMgMCAzMDRjMCAzMy4zIDIwLjQgNjEuOSA0OS40IDczLjktLjkgNC42LTEuNCA5LjMtMS40IDE0LjEgMCAzOS44IDMyLjIgNzIgNzIgNzIgNC4xIDAgOC4xLS41IDEyLTEuMiA5LjYgMjguNSAzNi4yIDQ5LjIgNjggNDkuMiAzOS44IDAgNzItMzIuMiA3Mi03MlY2NGMwLTM1LjMtMjguNy02NC02NC02NHptMzY4IDMwNGMwLTI5LjctMTYuMy01NS4zLTQwLjMtNjkuMSA1LjItMTAuNiA4LjMtMjIuMyA4LjMtMzQuOSAwLTMzLjQtMjAuNS02Mi00OS43LTc0IDEtNC41IDEuNy05LjIgMS43LTE0IDAtMzUuMy0yOC43LTY0LTY0LTY0LS44IDAtMS41LjItMi4yLjJDNDIyLjcgMjAuNSAzOTcuOSAwIDM2OCAwYy0zNS4zIDAtNjQgMjguNi02NCA2NHYzNzZjMCAzOS44IDMyLjIgNzIgNzIgNzIgMzEuOCAwIDU4LjQtMjAuNyA2OC00OS4yIDMuOS43IDcuOSAxLjIgMTIgMS4yIDM5LjggMCA3Mi0zMi4yIDcyLTcyIDAtNC44LS41LTkuNS0xLjQtMTQuMSAyOS0xMiA0OS40LTQwLjYgNDkuNC03My45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyZWFkU2xpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDBDMTA4IDAgMCA5My40IDAgMTY5LjE0IDAgMTk5LjQ0IDI0LjI0IDIyNCA2NCAyMjR2MjU2YzAgMTcuNjcgMTYuMTIgMzIgMzYgMzJoMzc2YzE5Ljg4IDAgMzYtMTQuMzMgMzYtMzJWMjI0YzM5Ljc2IDAgNjQtMjQuNTYgNjQtNTQuODZDNTc2IDkzLjQgNDY4IDAgMjg4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJpZWZjYXNlTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMTI4aC04MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djQ4SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYyODhjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjE3NmMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDk2aDEyOHYzMkgxOTJWOTZ6bTE2MCAyNDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzM2YzAgOC44NC03LjE2IDE2LTE2IDE2aC05NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTQ4SDB2MTQ0YzAgMjUuNiAyMi40IDQ4IDQ4IDQ4aDQxNmMyNS42IDAgNDgtMjIuNCA0OC00OFYyODhIMzIwdjQ4em0xNDQtMjA4aC04MFY4MGMwLTI1LjYtMjIuNC00OC00OC00OEgxNzZjLTI1LjYgMC00OCAyMi40LTQ4IDQ4djQ4SDQ4Yy0yNS42IDAtNDggMjIuNC00OCA0OHY4MGg1MTJ2LTgwYzAtMjUuNi0yMi40LTQ4LTQ4LTQ4em0tMTQ0IDBIMTkyVjk2aDEyOHYzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCcm9hZGNhc3RUb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTAuOTQgMTkyaDMzLjczYzExLjAxIDAgMTguNjEtMTAuODMgMTQuODYtMjEuMTgtNC45My0xMy41OC03LjU1LTI3Ljk4LTcuNTUtNDIuODJzMi42Mi0yOS4yNCA3LjU1LTQyLjgyQzIwMy4yOSA3NC44MyAxOTUuNjggNjQgMTg0LjY3IDY0aC0zMy43M2MtNy4wMSAwLTEzLjQ2IDQuNDktMTUuNDEgMTEuMjNDMTMwLjY0IDkyLjIxIDEyOCAxMDkuODggMTI4IDEyOGMwIDE4LjEyIDIuNjQgMzUuNzkgNy41NCA1Mi43NiAxLjk0IDYuNzQgOC4zOSAxMS4yNCAxNS40IDExLjI0ek04OS45MiAyMy4zNEM5NS41NiAxMi43MiA4Ny45NyAwIDc1Ljk2IDBINDAuNjNjLTYuMjcgMC0xMi4xNCAzLjU5LTE0Ljc0IDkuMzFDOS40IDQ1LjU0IDAgODUuNjUgMCAxMjhjMCAyNC43NSAzLjEyIDY4LjMzIDI2LjY5IDExOC44NiAyLjYyIDUuNjMgOC40MiA5LjE0IDE0LjYxIDkuMTRoMzQuODRjMTIuMDIgMCAxOS42MS0xMi43NCAxMy45NS0yMy4zNy00OS43OC05My4zMi0xNi43MS0xNzguMTUtLjE3LTIwOS4yOXpNNjE0LjA2IDkuMjlDNjExLjQ2IDMuNTggNjA1LjYgMCA1OTkuMzMgMGgtMzUuNDJjLTExLjk4IDAtMTkuNjYgMTIuNjYtMTQuMDIgMjMuMjUgMTguMjcgMzQuMjkgNDguNDIgMTE5LjQyLjI4IDIwOS4yMy01LjcyIDEwLjY4IDEuOCAyMy41MiAxMy45MSAyMy41MmgzNS4yM2M2LjI3IDAgMTIuMTMtMy41OCAxNC43My05LjI5QzYzMC41NyAyMTAuNDggNjQwIDE3MC4zNiA2NDAgMTI4cy05LjQyLTgyLjQ4LTI1Ljk0LTExOC43MXpNNDg5LjA2IDY0aC0zMy43M2MtMTEuMDEgMC0xOC42MSAxMC44My0xNC44NiAyMS4xOCA0LjkzIDEzLjU4IDcuNTUgMjcuOTggNy41NSA0Mi44MnMtMi42MiAyOS4yNC03LjU1IDQyLjgyYy0zLjc2IDEwLjM1IDMuODUgMjEuMTggMTQuODYgMjEuMThoMzMuNzNjNy4wMiAwIDEzLjQ2LTQuNDkgMTUuNDEtMTEuMjQgNC45LTE2Ljk3IDcuNTMtMzQuNjQgNy41My01Mi43NiAwLTE4LjEyLTIuNjQtMzUuNzktNy41NC01Mi43Ni0xLjk0LTYuNzUtOC4zOS0xMS4yNC0xNS40LTExLjI0em0tMTE2LjMgMTAwLjEyYzcuMDUtMTAuMjkgMTEuMi0yMi43MSAxMS4yLTM2LjEyIDAtMzUuMzUtMjguNjMtNjQtNjMuOTYtNjQtMzUuMzIgMC02My45NiAyOC42NS02My45NiA2NCAwIDEzLjQxIDQuMTUgMjUuODMgMTEuMiAzNi4xMmwtMTMwLjUgMzEzLjQxYy0zLjQgOC4xNS40NiAxNy41MiA4LjYxIDIwLjkybDI5LjUxIDEyLjMxYzguMTUgMy40IDE3LjUyLS40NiAyMC45MS04LjYxTDI0NC45NiAzODRoMTUwLjA3bDQ5LjIgMTE4LjE1YzMuNCA4LjE2IDEyLjc2IDEyLjAxIDIwLjkxIDguNjFsMjkuNTEtMTIuMzFjOC4xNS0zLjQgMTItMTIuNzcgOC42MS0yMC45MmwtMTMwLjUtMzEzLjQxek0yNzEuNjIgMzIwTDMyMCAyMDMuODEgMzY4LjM4IDMyMGgtOTYuNzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnJvb20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjQ3IDIxNi43N2w4Ni43MyAxMDkuMThzLTE2LjYgMTAyLjM2LTc2LjU3IDE1MC4xMkMyMDYuNjYgNTIzLjg1IDAgNTEwLjE5IDAgNTEwLjE5czMuOC0yMy4xNCAxMS01NS40M2w5NC42Mi0xMTIuMTdjMy45Ny00LjctLjg3LTExLjYyLTYuNjUtOS41bC02MC40IDIyLjA5YzE0LjQ0LTQxLjY2IDMyLjcyLTgwLjA0IDU0LjYtOTcuNDcgNTkuOTctNDcuNzYgMTYzLjMtNDAuOTQgMTYzLjMtNDAuOTR6TTYzNi41MyAzMS4wM2wtMTkuODYtMjVjLTUuNDktNi45LTE1LjUyLTguMDUtMjIuNDEtMi41NmwtMjMyLjQ4IDE3Ny44LTM0LjE0LTQyLjk3Yy01LjA5LTYuNDEtMTUuMTQtNS4yMS0xOC41OSAyLjIxbC0yNS4zMyA1NC41NSA4Ni43MyAxMDkuMTggNTguOC0xMi40NWM4LTEuNjkgMTEuNDItMTEuMiA2LjM0LTE3LjZsLTM0LjA5LTQyLjkyIDIzMi40OC0xNzcuOGM2Ljg5LTUuNDggOC4wNC0xNS41MyAyLjU1LTIyLjQ0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJydXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAwSDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjIyNGgzODRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMCAzMjBjMCAzNS4zNSAyOC42NiA2NCA2NCA2NGg2NHY2NGMwIDM1LjM1IDI4LjY2IDY0IDY0IDY0czY0LTI4LjY1IDY0LTY0di02NGg2NGMzNS4zNCAwIDY0LTI4LjY1IDY0LTY0di0zMkgwdjMyem0xOTIgMTA0YzEzLjI1IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHMtMjQtMTAuNzUtMjQtMjRjMC0xMy4yNiAxMC43NS0yNCAyNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTExLjk4OCAyODguOWMtLjQ3OCAxNy40My0xNS4yMTcgMzEuMS0zMi42NTMgMzEuMUg0MjR2MTZjMCAyMS44NjQtNC44ODIgNDIuNTg0LTEzLjYgNjEuMTQ1bDYwLjIyOCA2MC4yMjhjMTIuNDk2IDEyLjQ5NyAxMi40OTYgMzIuNzU4IDAgNDUuMjU1LTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMGwtNTQuNzM2LTU0LjczNkMzNDUuODg2IDQ2Ny45NjUgMzE0LjM1MSA0ODAgMjgwIDQ4MFYyMzZjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjRjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjQ0Yy0zNC4zNTEgMC02NS44ODYtMTIuMDM1LTkwLjYzNi0zMi4xMDhsLTU0LjczNiA1NC43MzZjLTEyLjQ5OCAxMi40OTctMzIuNzU5IDEyLjQ5Ni00NS4yNTYgMC0xMi40OTYtMTIuNDk3LTEyLjQ5Ni0zMi43NTggMC00NS4yNTVsNjAuMjI4LTYwLjIyOEM5Mi44ODIgMzc4LjU4NCA4OCAzNTcuODY0IDg4IDMzNnYtMTZIMzIuNjY2QzE1LjIzIDMyMCAuNDkxIDMwNi4zMy4wMTMgMjg4LjktLjQ4NCAyNzAuODE2IDE0LjAyOCAyNTYgMzIgMjU2aDU2di01OC43NDVsLTQ2LjYyOC00Ni42MjhjLTEyLjQ5Ni0xMi40OTctMTIuNDk2LTMyLjc1OCAwLTQ1LjI1NSAxMi40OTgtMTIuNDk3IDMyLjc1OC0xMi40OTcgNDUuMjU2IDBMMTQxLjI1NSAxNjBoMjI5LjQ4OWw1NC42MjctNTQuNjI3YzEyLjQ5OC0xMi40OTcgMzIuNzU4LTEyLjQ5NyA0NS4yNTYgMCAxMi40OTYgMTIuNDk3IDEyLjQ5NiAzMi43NTggMCA0NS4yNTVMNDI0IDE5Ny4yNTVWMjU2aDU2YzE3Ljk3MiAwIDMyLjQ4NCAxNC44MTYgMzEuOTg4IDMyLjl6TTI1NyAwYy02MS44NTYgMC0xMTIgNTAuMTQ0LTExMiAxMTJoMjI0QzM2OSA1MC4xNDQgMzE4Ljg1NiAwIDI1NyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiA0ODBoLTIwVjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDU2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjIwaDQ0OHYtMjBjMC02LjYyNy01LjM3My0xMi0xMi0xMnpNMTI4IDc2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMlY3NnptMCA5NmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwem01MiAxNDhoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi00MGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDQwYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NDBjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptNzYgMTYwaC02NHYtODRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjg0em02NC0xNzJjMCA2LjYyNy01LjM3MyAxMi0xMiAxMmgtNDBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTQwYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHptMC05NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwem0wLTk2YzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjc2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdWxsaG9ybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzYgMjQwYzAtMjMuNjMtMTIuOTUtNDQuMDQtMzItNTUuMTJWMzIuMDFDNTQ0IDIzLjI2IDUzNy4wMiAwIDUxMiAwYy03LjEyIDAtMTQuMTkgMi4zOC0xOS45OCA3LjAybC04NS4wMyA2OC4wM0MzNjQuMjggMTA5LjE5IDMxMC42NiAxMjggMjU2IDEyOEg2NGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHY5NmMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMzLjdjLTEuMzkgMTAuNDgtMi4xOCAyMS4xNC0yLjE4IDMyIDAgMzkuNzcgOS4yNiA3Ny4zNSAyNS41NiAxMTAuOTQgNS4xOSAxMC42OSAxNi41MiAxNy4wNiAyOC40IDE3LjA2aDc0LjI4YzI2LjA1IDAgNDEuNjktMjkuODQgMjUuOS01MC41Ni0xNi40LTIxLjUyLTI2LjE1LTQ4LjM2LTI2LjE1LTc3LjQ0IDAtMTEuMTEgMS42Mi0yMS43OSA0LjQxLTMySDI1NmM1NC42NiAwIDEwOC4yOCAxOC44MSAxNTAuOTggNTIuOTVsODUuMDMgNjguMDNhMzIuMDIzIDMyLjAyMyAwIDAgMCAxOS45OCA3LjAyYzI0LjkyIDAgMzItMjIuNzggMzItMzJWMjk1LjEzQzU2My4wNSAyODQuMDQgNTc2IDI2My42MyA1NzYgMjQwem0tOTYgMTQxLjQybC0zMy4wNS0yNi40NEMzOTIuOTUgMzExLjc4IDMyNS4xMiAyODggMjU2IDI4OHYtOTZjNjkuMTIgMCAxMzYuOTUtMjMuNzggMTkwLjk1LTY2Ljk4TDQ4MCA5OC41OHYyODIuODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVsbHNleWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0MzJjLTEwMS42OSAwLTE4NC04Mi4yOS0xODQtMTg0IDAtMTAxLjY5IDgyLjI5LTE4NCAxODQtMTg0IDEwMS42OSAwIDE4NCA4Mi4yOSAxODQgMTg0IDAgMTAxLjY5LTgyLjI5IDE4NC0xODQgMTg0em0wLTMxMmMtNzAuNjkgMC0xMjggNTcuMzEtMTI4IDEyOHM1Ny4zMSAxMjggMTI4IDEyOCAxMjgtNTcuMzEgMTI4LTEyOC01Ny4zMS0xMjgtMTI4LTEyOHptMCAxOTJjLTM1LjI5IDAtNjQtMjguNzEtNjQtNjRzMjguNzEtNjQgNjQtNjQgNjQgMjguNzEgNjQgNjQtMjguNzEgNjQtNjQgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVybiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMEM3OS43IDEwMS4zIDAgMjIwLjkgMCAzMDAuNSAwIDQyNSA3OSA1MTIgMTkyIDUxMnMxOTItODcgMTkyLTIxMS41YzAtNzkuOS04MC4yLTE5OS42LTE5Mi0zMDAuNXptMCA0NDhjLTU2LjUgMC05Ni0zOS05Ni05NC44IDAtMTMuNSA0LjYtNjEuNSA5Ni0xNjEuMiA5MS40IDk5LjcgOTYgMTQ3LjcgOTYgMTYxLjIgMCA1NS44LTM5LjUgOTQuOC05NiA5NC44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUJ1c0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMTI4aC04VjgwYzAtNDQuOC05OS4yLTgwLTIyNC04MFMzMiAzNS4yIDMyIDgwdjQ4aC04Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0djgwYzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoOHYxNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDYuNGMxNiAwIDI1LjYtMTIuOCAyNS42LTI1LjZWMjU2aDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtODBjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTYwIDcyYzAtNC40MiAzLjU4LTggOC04aDE3NmM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEgxNjhjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0tNDggMzI4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xMjgtMTEySDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnYtOTZjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgxMTJ2MTYwem0zMiAwVjEyOGgxMTJjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnY5NmMwIDE3LjY3LTE0LjMzIDMyLTMyIDMySDI3MnptMTI4IDExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFCdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4IDEyOGgtOFY4MGMwLTQ0LjgtOTkuMi04MC0yMjQtODBTMzIgMzUuMiAzMiA4MHY0OGgtOGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDh2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmgxOTJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmg2LjRjMTYgMCAyNS42LTEyLjggMjUuNi0yNS42VjI1Nmg4YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjR2LTgwYzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6TTExMiA0MDBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2LTExMmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxMjhjMC0xNy42NyAxNC4zMy0zMiAzMi0zMmgyNTZjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnYxMjhjMCAxNy42Ny0xNC4zMyAzMi0zMiAzMkgxMjh6bTI3MiAxMTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQnVzaW5lc3NUaW1lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRjLTc5LjU5IDAtMTQ0IDY0LjQxLTE0NCAxNDRzNjQuNDEgMTQ0IDE0NCAxNDQgMTQ0LTY0LjQxIDE0NC0xNDQtNjQuNDEtMTQ0LTE0NC0xNDR6bTY0IDE1MC4yOWMwIDUuMzQtNC4zNyA5LjcxLTkuNzEgOS43MWgtNjAuNTdjLTUuMzQgMC05LjcxLTQuMzctOS43MS05Ljcxdi03Ni41N2MwLTUuMzQgNC4zNy05LjcxIDkuNzEtOS43MWgxMi41N2M1LjM0IDAgOS43MSA0LjM3IDkuNzEgOS43MVYzNTJoMzguMjljNS4zNCAwIDkuNzEgNC4zNyA5LjcxIDkuNzF2MTIuNTh6TTQ5NiAxOTJjNS40IDAgMTAuNzIuMzMgMTYgLjgxVjE0NGMwLTI1LjYtMjIuNC00OC00OC00OGgtODBWNDhjMC0yNS42LTIyLjQtNDgtNDgtNDhIMTc2Yy0yNS42IDAtNDggMjIuNC00OCA0OHY0OEg0OGMtMjUuNiAwLTQ4IDIyLjQtNDggNDh2ODBoMzk1LjEyYzI4LjYtMjAuMDkgNjMuMzUtMzIgMTAwLjg4LTMyek0zMjAgOTZIMTkyVjY0aDEyOHYzMnptNi44MiAyMjRIMjA4Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNDhIMHYxNDRjMCAyNS42IDIyLjQgNDggNDggNDhoMjkxLjQzQzMyNy4xIDQyMy45NiAzMjAgMzk2LjgyIDMyMCAzNjhjMC0xNi42NiAyLjQ4LTMyLjcyIDYuODItNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsY3VsYXRvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMEg0OEMyMi40IDAgMCAyMi40IDAgNDh2NDE2YzAgMjUuNiAyMi40IDQ4IDQ4IDQ4aDM1MmMyNS42IDAgNDgtMjIuNCA0OC00OFY0OGMwLTI1LjYtMjIuNC00OC00OC00OHpNMTI4IDQzNS4yYzAgNi40LTYuNCAxMi44LTEyLjggMTIuOEg3Ni44Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTAtMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOEg3Ni44Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTEyOCAxMjhjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6bTAtMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0xMjggMTI4YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44VjI2OC44YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYxNjYuNHptMC0yNTZjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44SDc2LjhjLTYuNCAwLTEyLjgtNi40LTEyLjgtMTIuOFY3Ni44QzY0IDcwLjQgNzAuNCA2NCA3Ni44IDY0aDI5NC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYxMDIuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkySDB2Mjcyem0zMjAtMTk2YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek0xOTIgMjY4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MHptMCAxMjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek02NCAyNjhjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDB6bTAgMTI4YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek00MDAgNjRoLTQ4VjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEgxNjBWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjQ4aDQ0OHYtNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0zNmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY1MmgxMjhWMTJjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjUyaDQ4YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI2MGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjIwNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyem0zMzMuMjk2IDk1Ljk0N2wtMjguMTY5LTI4LjM5OGMtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjhMMTk0LjEyIDM2NC42NjVsLTQ1Ljk4LTQ2LjM1MmMtNC42NjctNC43MDUtMTIuMjY2LTQuNzM2LTE2Ljk3MS0uMDY4bC0yOC4zOTcgMjguMTdjLTQuNzA1IDQuNjY3LTQuNzM2IDEyLjI2NS0uMDY4IDE2Ljk3bDgyLjYwMSA4My4yNjljNC42NjcgNC43MDUgMTIuMjY1IDQuNzM2IDE2Ljk3LjA2OGwxNDIuOTUzLTE0MS44MDVjNC43MDUtNC42NjcgNC43MzYtMTIuMjY1LjA2OC0xNi45N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhckRheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTkySDB2Mjcyem02NC0xOTJjMC04LjggNy4yLTE2IDE2LTE2aDk2YzguOCAwIDE2IDcuMiAxNiAxNnY5NmMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtOTZ6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNiAxNjBIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzZjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHYzNmMwIDYuNi01LjQgMTItMTIgMTJ6TTEyIDE5Mmg0MjRjNi42IDAgMTIgNS40IDEyIDEydjI2MGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMjA0YzAtNi42IDUuNC0xMiAxMi0xMnptMzA0IDE5MmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkgxMzJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwSDEyYy02LjYgMC0xMi01LjQtMTItMTJ2LTM2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh2MzZjMCA2LjYtNS40IDEyLTEyIDEyek0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTMxNiAxNDBjMC02LjYtNS40LTEyLTEyLTEyaC02MHYtNjBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjYwaC02MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg2MHY2MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi02MGg2MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbGVuZGFyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE2MEgxMmMtNi42IDAtMTItNS40LTEyLTEydi0zNmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM2YzAgNi42LTUuNCAxMi0xMiAxMnpNMTIgMTkyaDQyNGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjYwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYyMDRjMC02LjYgNS40LTEyIDEyLTEyem0yNTcuMyAxNjBsNDguMS00OC4xYzQuNy00LjcgNC43LTEyLjMgMC0xN2wtMjguMy0yOC4zYy00LjctNC43LTEyLjMtNC43LTE3IDBMMjI0IDMwNi43bC00OC4xLTQ4LjFjLTQuNy00LjctMTIuMy00LjctMTcgMGwtMjguMyAyOC4zYy00LjcgNC43LTQuNyAxMi4zIDAgMTdsNDguMSA0OC4xLTQ4LjEgNDguMWMtNC43IDQuNy00LjcgMTIuMyAwIDE3bDI4LjMgMjguM2M0LjcgNC43IDEyLjMgNC43IDE3IDBsNDguMS00OC4xIDQ4LjEgNDguMWM0LjcgNC43IDEyLjMgNC43IDE3IDBsMjguMy0yOC4zYzQuNy00LjcgNC43LTEyLjMgMC0xN0wyNjkuMyAzNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FsZW5kYXJXZWVrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFYxOTJIMHYyNzJ6bTY0LTE5MmMwLTguOCA3LjItMTYgMTYtMTZoMjg4YzguOCAwIDE2IDcuMiAxNiAxNnY2NGMwIDguOC03LjIgMTYtMTYgMTZIODBjLTguOCAwLTE2LTcuMi0xNi0xNnYtNjR6TTQwMCA2NGgtNDhWMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2MFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2NDhoNDQ4di00OGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYWxlbmRhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxOTJoNDI0YzYuNiAwIDEyIDUuNCAxMiAxMnYyNjBjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjIwNGMwLTYuNiA1LjQtMTIgMTItMTJ6bTQzNi00NHYtMzZjMC0yNi41LTIxLjUtNDgtNDgtNDhoLTQ4VjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1MkgxNjBWMTJjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjUySDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MjRjNi42IDAgMTItNS40IDEyLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYVJldHJvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDMyQzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OEg0OHptMCAzMmgxMDZjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgzOGMtMy4zIDAtNi0yLjctNi02VjgwYzAtOC44IDcuMi0xNiAxNi0xNnptNDI2IDk2SDM4Yy0zLjMgMC02LTIuNy02LTZ2LTM2YzAtMy4zIDIuNy02IDYtNmgxMzhsMzAuMi00NS4zYzEuMS0xLjcgMy0yLjcgNS0yLjdINDY0YzguOCAwIDE2IDcuMiAxNiAxNnY3NGMwIDMuMy0yLjcgNi02IDZ6TTI1NiA0MjRjLTY2LjIgMC0xMjAtNTMuOC0xMjAtMTIwczUzLjgtMTIwIDEyMC0xMjAgMTIwIDUzLjggMTIwIDEyMC01My44IDEyMC0xMjAgMTIwem0wLTIwOGMtNDguNSAwLTg4IDM5LjUtODggODhzMzkuNSA4OCA4OCA4OCA4OC0zOS41IDg4LTg4LTM5LjUtODgtODgtODh6bS00OCAxMDRjLTguOCAwLTE2LTcuMi0xNi0xNiAwLTM1LjMgMjguNy02NCA2NC02NCA4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNmMtMTcuNiAwLTMyIDE0LjQtMzIgMzIgMCA4LjgtNy4yIDE2LTE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbWVyYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMTQ0djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTQ0YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDg4bDEyLjMtMzIuOWM3LTE4LjcgMjQuOS0zMS4xIDQ0LjktMzEuMWgxMjUuNWMyMCAwIDM3LjkgMTIuNCA0NC45IDMxLjFMMzc2IDk2aDg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zNzYgMjg4YzAtNjYuMi01My44LTEyMC0xMjAtMTIwcy0xMjAgNTMuOC0xMjAgMTIwIDUzLjggMTIwIDEyMCAxMjAgMTIwLTUzLjggMTIwLTEyMHptLTMyIDBjMCA0OC41LTM5LjUgODgtODggODhzLTg4LTM5LjUtODgtODggMzkuNS04OCA4OC04OCA4OCAzOS41IDg4IDg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbXBncm91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDQ0OGgtMjQuNjhMMzU5LjU0IDExNy43NWw1My40MS03My41NWM1LjE5LTcuMTUgMy42MS0xNy4xNi0zLjU0LTIyLjM1bC0yNS45LTE4Ljc5Yy03LjE1LTUuMTktMTcuMTUtMy42MS0yMi4zNSAzLjU1TDMyMCA2My4zIDI3OC44MyA2LjZjLTUuMTktNy4xNS0xNS4yLTguNzQtMjIuMzUtMy41NWwtMjUuODggMTguOGMtNy4xNSA1LjE5LTguNzQgMTUuMi0zLjU0IDIyLjM1bDUzLjQxIDczLjU1TDQwLjY4IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjA4YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMzIwIDI4OGwxMTYuMzYgMTYwSDIwMy42NEwzMjAgMjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhbmR5Q2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuNSA5MkM0NjkuNiAzMy4xIDQxMS44IDAgMzUyLjQgMGMtMjcuOSAwLTU2LjIgNy4zLTgxLjggMjIuNkwyNDMuMSAzOWMtMTUuMiA5LjEtMjAuMSAyOC43LTExIDQzLjlsMzIuOCA1NC45YzYgMTAgMTYuNiAxNS42IDI3LjUgMTUuNiA1LjYgMCAxMS4yLTEuNSAxNi40LTQuNWwyNy41LTE2LjRjNS4xLTMuMSAxMC44LTQuNSAxNi40LTQuNSAxMC45IDAgMjEuNSA1LjYgMjcuNSAxNS42IDkuMSAxNS4xIDQuMSAzNC44LTExIDQzLjlMMTUuNiAzOTcuNmMtMTUuMiA5LjEtMjAuMSAyOC43LTExIDQzLjlsMzIuOCA1NC45YzYgMTAgMTYuNiAxNS42IDI3LjUgMTUuNiA1LjYgMCAxMS4yLTEuNSAxNi40LTQuNUw0MjguNiAzMDFjNzEuNy00Mi45IDEwNC42LTEzMy41IDY4LjktMjA5em0tMTc3LjcgMTNsLTIuNSAxLjVMMjk2LjggNDVjOS43LTQuNyAxOS44LTguMSAzMC4zLTEwLjJsMjAuNiA2MS44Yy05LjguOC0xOS40IDMuMy0yNy45IDguNHpNMTQ1LjkgNDMxLjhsLTYwLjUtMzguNSAzMC44LTE4LjMgNjAuNSAzOC41LTMwLjggMTguM3ptMTA3LjUtNjMuOWwtNjAuNS0zOC41IDMwLjgtMTguMyA2MC41IDM4LjUtMzAuOCAxOC4zek0zNjQuMyAzMDJsLTYwLjUtMzguNSAzMC44LTE4LjMgNjAuNSAzOC41LTMwLjggMTguM3ptMjAuNC0xOTcuM2w0Ni00NmM4LjQgNi41IDE2IDE0LjEgMjIuNiAyMi42TDQwNy42IDEyN2MtNS43LTkuMy0xMy43LTE2LjktMjIuOS0yMi4zem04Mi4xIDEwNy44bC01OS41LTE5LjhjMy4yLTUuMyA1LjgtMTAuOSA3LjQtMTcuMSAxLjEtNC41IDEuNy05LjEgMS44LTEzLjZsNjAuNCAyMC4xYy0yLjEgMTAuNC01LjUgMjAuNi0xMC4xIDMwLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FubmFiaXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAzLjQ3IDM2MC4yNWMtMS41Ni0uODItMzIuMzktMTYuODktNzYuNzgtMjUuODEgNjQuMjUtNzUuMTIgODQuMDUtMTYxLjY3IDg0LjkzLTE2NS42NCAxLjE4LTUuMzMtLjQ0LTEwLjktNC4zLTE0Ljc3LTMuMDMtMy4wNC03LjEyLTQuNy0xMS4zMi00LjctMS4xNCAwLTIuMjkuMTItMy40NC4zOC0zLjg4Ljg1LTg2LjU0IDE5LjU5LTE2MC41OCA3OS43Ni4wMS0xLjQ2LjAxLTIuOTMuMDEtNC40IDAtMTE4Ljc5LTU5Ljk4LTIxMy43Mi02Mi41My0yMTcuN0ExNS45NzMgMTUuOTczIDAgMCAwIDI1NiAwYy01LjQ1IDAtMTAuNTMgMi43OC0xMy40NyA3LjM3LTIuNTUgMy45OC02Mi41MyA5OC45MS02Mi41MyAyMTcuNyAwIDEuNDcuMDEgMi45NC4wMSA0LjQtNzQuMDMtNjAuMTYtMTU2LjY5LTc4LjktMTYwLjU4LTc5Ljc2LTEuMTQtLjI1LTIuMjktLjM4LTMuNDQtLjM4LTQuMiAwLTguMjkgMS42Ni0xMS4zMiA0LjdBMTUuOTg2IDE1Ljk4NiAwIDAgMCAuMzggMTY4LjhjLjg4IDMuOTcgMjAuNjggOTAuNTIgODQuOTMgMTY1LjY0LTQ0LjM5IDguOTItNzUuMjEgMjQuOTktNzYuNzggMjUuODFhMTYuMDAzIDE2LjAwMyAwIDAgMC0uMDIgMjguMjljMi40NSAxLjI5IDYwLjc2IDMxLjcyIDEzMy40OSAzMS43MiA2LjE0IDAgMTEuOTYtLjEgMTcuNS0uMzEtMTEuMzcgMjIuMjMtMTYuNTIgMzguMzEtMTYuODEgMzkuMjItMS44IDUuNjgtLjI5IDExLjg5IDMuOTEgMTYuMTFhMTYuMDE5IDE2LjAxOSAwIDAgMCAxNi4xIDMuOTljMS44My0uNTcgMzcuNzItMTEuOTkgNzcuMy0zOS4yOVY1MDRjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LTh2LTY0LjAxYzM5LjU4IDI3LjMgNzUuNDcgMzguNzEgNzcuMyAzOS4yOWExNi4wMTkgMTYuMDE5IDAgMCAwIDE2LjEtMy45OWM0LjItNC4yMiA1LjcxLTEwLjQzIDMuOTEtMTYuMTEtLjI5LS45MS01LjQ1LTE2Ljk5LTE2LjgxLTM5LjIyIDUuNTQuMjEgMTEuMzcuMzEgMTcuNS4zMSA3Mi43MiAwIDEzMS4wNC0zMC40MyAxMzMuNDktMzEuNzIgNS4yNC0yLjc4IDguNTItOC4yMiA4LjUxLTE0LjE1LS4wMS01Ljk0LTMuMjktMTEuMzktOC41My0xNC4xNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXBzdWxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTUuMyAzMDAuMUw0MjQuMiAxMTIuOEM0MDEuOSA4MSAzNjYuNCA2NCAzMzAuNCA2NGMtMjIuNiAwLTQ1LjUgNi43LTY1LjUgMjAuNy0xOS43IDEzLjgtMzMuNyAzMi44LTQxLjUgNTMuOEMyMjAuNSA3OS4yIDE3MiAzMiAxMTIgMzIgNTAuMSAzMiAwIDgyLjEgMCAxNDR2MjI0YzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyczExMi01MC4xIDExMi0xMTJWMjE4LjljMy4zIDguNiA3LjMgMTcuMSAxMi44IDI1TDM2OCA0MzEuMmMyMi4yIDMxLjggNTcuNyA0OC44IDkzLjggNDguOCAyMi43IDAgNDUuNS02LjcgNjUuNS0yMC43IDUxLjctMzYuMiA2NC4yLTEwNy41IDI4LTE1OS4yek0xNjAgMjU2SDY0VjE0NGMwLTI2LjUgMjEuNS00OCA0OC00OHM0OCAyMS41IDQ4IDQ4djExMnptMTk0LjggNDQuOWwtNjUuNi05My43Yy03LjctMTEtMTAuNy0yNC40LTguMy0zNy42IDIuMy0xMy4yIDkuNy0yNC44IDIwLjctMzIuNSA4LjUtNiAxOC41LTkuMSAyOC44LTkuMSAxNi41IDAgMzEuOSA4IDQxLjMgMjEuNWw2NS42IDkzLjctODIuNSA1Ny43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDgwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNjYgMjEyLjMzbC0xMS4yNC0yOC4xLTE5LjkzLTQ5LjgzQzM5MC4zOCA5MS42MyAzNDkuNTcgNjQgMzAzLjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNGwtMTkuOTMgNDkuODMtMTEuMjQgMjguMUMxNy4yMiAyMjEuNSAwIDI0NC42NiAwIDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTI3LjM0LTE3LjIyLTUwLjUtNDEuMzQtNTkuNjd6bS0zMDYuNzMtNTQuMTZjNy4yOS0xOC4yMiAyNC45NC0zMC4xNyA0NC41Ny0zMC4xN2gxMjdjMTkuNjMgMCAzNy4yOCAxMS45NSA0NC41NyAzMC4xN0wzNjggMjA4SDExMmwxOS45My00OS44M3pNODAgMzE5LjhjLTE5LjIgMC0zMi0xMi43Ni0zMi0zMS45UzYwLjggMjU2IDgwIDI1NnM0OCAyOC43MSA0OCA0Ny44NS0yOC44IDE1Ljk1LTQ4IDE1Ljk1em0zMjAgMGMtMTkuMiAwLTQ4IDMuMTktNDgtMTUuOTVTMzgwLjggMjU2IDQwMCAyNTZzMzIgMTIuNzYgMzIgMzEuOS0xMi44IDMxLjktMzIgMzEuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJCYXR0ZXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxMjhoLTMyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhIMTkyVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMTkyIDI2NGMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDExMmM0LjQyIDAgOCAzLjU4IDggOHYxNnptMjU2IDBjMCA0LjQyLTMuNTggOC04IDhoLTQwdjQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTQwaC00MGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDQwdi00MGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHY0MGg0MGM0LjQyIDAgOCAzLjU4IDggOHYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJDcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDMuMjUgMjIwLjgxbC0xMi40MiA0Ni4zN2MtMy4wMSAxMS4yNS0zLjYzIDIyLjg5LTIuNDEgMzQuMzlsLTM1LjIgMjguOThjLTYuNTcgNS40MS0xNi4zMS0uNDMtMTQuNjItOC43N2wxNS40NC03Ni42OGMxLjA2LTUuMjYtMi42Ni0xMC4yOC04LTEwLjc5bC03Ny44Ni03LjU1Yy04LjQ3LS44Mi0xMS4yMy0xMS44My00LjE0LTE2LjU0bDY1LjE1LTQzLjNjNC40Ni0yLjk3IDUuMzgtOS4xNSAxLjk4LTEzLjI5TDIxLjQ2IDkzLjIyYy01LjQxLTYuNTcuNDMtMTYuMyA4Ljc4LTE0LjYybDc2LjY4IDE1LjQ0YzUuMjYgMS4wNiAxMC4yOC0yLjY2IDEwLjgtOGw3LjU1LTc3Ljg2Yy44Mi04LjQ4IDExLjgzLTExLjIzIDE2LjU1LTQuMTRsNDMuMyA2NS4xNGMyLjk3IDQuNDYgOS4xNSA1LjM4IDEzLjI5IDEuOThsNjAuNC00OS43MWM2LjU3LTUuNDEgMTYuMy40MyAxNC42MiA4Ljc3TDI2Mi4xIDg2LjM4Yy0yLjcxIDMuMDUtNS40MyA2LjA5LTcuOTEgOS40bC0zMi4xNSA0Mi45Ny0xMC43MSAxNC4zMmMtMzIuNzMgOC43Ni01OS4xOCAzNC41My02OC4wOCA2Ny43NHptNDk0LjU3IDEzMi41MWwtMTIuNDIgNDYuMzZjLTMuMTMgMTEuNjgtOS4zOCAyMS42MS0xNy41NSAyOS4zNmE2Ni44NzYgNjYuODc2IDAgMCAxLTguNzYgN2wtMTMuOTkgNTIuMjNjLTEuMTQgNC4yNy0zLjEgOC4xLTUuNjUgMTEuMzgtNy42NyA5Ljg0LTIwLjc0IDE0LjY4LTMzLjU0IDExLjI1TDUxNSA1MDIuNjJjLTE3LjA3LTQuNTctMjcuMi0yMi4xMi0yMi42My0zOS4xOWw4LjI4LTMwLjkxLTI0Ny4yOC02Ni4yNi04LjI4IDMwLjkxYy00LjU3IDE3LjA3LTIyLjEyIDI3LjItMzkuMTkgMjIuNjNsLTMwLjkxLTguMjhjLTEyLjgtMy40My0yMS43LTE0LjE2LTIzLjQyLTI2LjUxLS41Ny00LjEyLS4zNS04LjQyLjc5LTEyLjY4bDEzLjk5LTUyLjIzYTY2LjYyIDY2LjYyIDAgMCAxLTQuMDktMTAuNDVjLTMuMi0xMC43OS0zLjY1LTIyLjUyLS41Mi0zNC4ybDEyLjQyLTQ2LjM3YzUuMzEtMTkuOCAxOS4zNi0zNC44MyAzNi44OS00Mi4yMWE2NC4zMzYgNjQuMzM2IDAgMCAxIDE4LjQ5LTQuNzJsMTguMTMtMjQuMjMgMzIuMTUtNDIuOTdjMy40NS00LjYxIDcuMTktOC45IDExLjItMTIuODQgOC03Ljg5IDE3LjAzLTE0LjQ0IDI2Ljc0LTE5LjUxIDQuODYtMi41NCA5Ljg5LTQuNzEgMTUuMDUtNi40OSAxMC4zMy0zLjU4IDIxLjE5LTUuNjMgMzIuMjQtNi4wNCAxMS4wNS0uNDEgMjIuMzEuODIgMzMuNDMgMy44bDEyMi42OCAzMi44N2MxMS4xMiAyLjk4IDIxLjQ4IDcuNTQgMzAuODUgMTMuNDNhMTExLjExIDExMS4xMSAwIDAgMSAzNC42OSAzNC41YzguODIgMTMuODggMTQuNjQgMjkuODQgMTYuNjggNDYuOTlsNi4zNiA1My4yOSAzLjU5IDMwLjA1YTY0LjQ5IDY0LjQ5IDAgMCAxIDIyLjc0IDI5LjkzYzQuMzkgMTEuODggNS4yOSAyNS4xOSAxLjc1IDM4LjM5ek0yNTUuNTggMjM0LjM0Yy0xOC41NS00Ljk3LTM0LjIxIDQuMDQtMzkuMTcgMjIuNTMtNC45NiAxOC40OSA0LjExIDM0LjEyIDIyLjY1IDM5LjA5IDE4LjU1IDQuOTcgNDUuNTQgMTUuNTEgNTAuNDktMi45OCA0Ljk2LTE4LjQ5LTE1LjQzLTUzLjY3LTMzLjk3LTU4LjY0em0yOTAuNjEgMjguMTdsLTYuMzYtNTMuMjljLS41OC00Ljg3LTEuODktOS41My0zLjgyLTEzLjg2LTUuOC0xMi45OS0xNy4yLTIzLjAxLTMxLjQyLTI2LjgybC0xMjIuNjgtMzIuODdhNDguMDA4IDQ4LjAwOCAwIDAgMC01MC44NiAxNy42MWwtMzIuMTUgNDIuOTcgMTcyIDQ2LjA4IDc1LjI5IDIwLjE4em0xOC40OSA1NC42NWMtMTguNTUtNC45Ny01My44IDE1LjMxLTU4Ljc1IDMzLjc5LTQuOTUgMTguNDkgMjMuNjkgMjIuODYgNDIuMjQgMjcuODMgMTguNTUgNC45NyAzNC4yMS00LjA0IDM5LjE3LTIyLjUzIDQuOTUtMTguNDgtNC4xMS0zNC4xMi0yMi42Ni0zOS4wOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJTaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxOTJoLTE2TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgxNTUuMzNjLTI2LjE3IDAtNDkuNyAxNS45My01OS40MiA0MC4yM0w0OCAxOTQuMjZDMjAuNDQgMjAxLjQgMCAyMjYuMjEgMCAyNTZ2MTEyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoMTI4YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTgwYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCA0MzJjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6bTcyLTI0MEgxMTYuOTNsMzguNC05NkgyMzJ2OTZ6bTQ4IDBWOTZoODkuMjRsNzYuOCA5NkgyODB6bTIwMCAyNDBjLTI2LjQ3IDAtNDgtMjEuNTMtNDgtNDhzMjEuNTMtNDggNDgtNDggNDggMjEuNTMgNDggNDgtMjEuNTMgNDgtNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5OS45OSAxNzZoLTU5Ljg3bC0xNi42NC00MS42QzQwNi4zOCA5MS42MyAzNjUuNTcgNjQgMzE5LjUgNjRoLTEyN2MtNDYuMDYgMC04Ni44OCAyNy42My0xMDMuOTkgNzAuNEw3MS44NyAxNzZIMTIuMDFDNC4yIDE3Ni0xLjUzIDE4My4zNC4zNyAxOTAuOTFsNiAyNEM3LjcgMjIwLjI1IDEyLjUgMjI0IDE4LjAxIDIyNGgyMC4wN0MyNC42NSAyMzUuNzMgMTYgMjUyLjc4IDE2IDI3MnY0OGMwIDE2LjEyIDYuMTYgMzAuNjcgMTYgNDEuOTNWNDE2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJoMjU2djMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNTQuMDdjOS44NC0xMS4yNSAxNi0yNS44IDE2LTQxLjkzdi00OGMwLTE5LjIyLTguNjUtMzYuMjctMjIuMDctNDhINDk0YzUuNTEgMCAxMC4zMS0zLjc1IDExLjY0LTkuMDlsNi0yNGMxLjg5LTcuNTctMy44NC0xNC45MS0xMS42NS0xNC45MXptLTM1Mi4wNi0xNy44M2M3LjI5LTE4LjIyIDI0Ljk0LTMwLjE3IDQ0LjU3LTMwLjE3aDEyN2MxOS42MyAwIDM3LjI4IDExLjk1IDQ0LjU3IDMwLjE3TDM4NCAyMDhIMTI4bDE5LjkzLTQ5Ljgzek05NiAzMTkuOGMtMTkuMiAwLTMyLTEyLjc2LTMyLTMxLjlTNzYuOCAyNTYgOTYgMjU2czQ4IDI4LjcxIDQ4IDQ3Ljg1LTI4LjggMTUuOTUtNDggMTUuOTV6bTMyMCAwYy0xOS4yIDAtNDggMy4xOS00OC0xNS45NVMzOTYuOCAyNTYgNDE2IDI1NnMzMiAxMi43NiAzMiAzMS45LTEyLjggMzEuOS0zMiAzMS45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmF2YW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2LDIwOGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MTYsMjA4Wk02MjQsMzIwSDU3NlYxNjBBMTYwLDE2MCwwLDAsMCw0MTYsMEg2NEE2NCw2NCwwLDAsMCwwLDY0VjMyMGE2NCw2NCwwLDAsMCw2NCw2NEg5NmE5Niw5NiwwLDAsMCwxOTIsMEg2MjRhMTYsMTYsMCwwLDAsMTYtMTZWMzM2QTE2LDE2LDAsMCwwLDYyNCwzMjBaTTE5Miw0MzJhNDgsNDgsMCwxLDEsNDgtNDhBNDguMDUsNDguMDUsMCwwLDEsMTkyLDQzMlptNjQtMjQwYTMyLDMyLDAsMCwxLTMyLDMySDk2YTMyLDMyLDAsMCwxLTMyLTMyVjEyOEEzMiwzMiwwLDAsMSw5Niw5NkgyMjRhMzIsMzIsMCwwLDEsMzIsMzJaTTQ0OCwzMjBIMzIwVjEyOGEzMiwzMiwwLDAsMSwzMi0zMmg2NGEzMiwzMiwwLDAsMSwzMiwzMlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEuMyAxOTJoMjU3LjNjMTcuOCAwIDI2LjcgMjEuNSAxNC4xIDM0LjFMMTc0LjEgMzU0LjhjLTcuOCA3LjgtMjAuNSA3LjgtMjguMyAwTDE3LjIgMjI2LjFDNC42IDIxMy41IDEzLjUgMTkyIDMxLjMgMTkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMTI3LjMzOHYyNTcuMzI0YzAgMTcuODE4LTIxLjU0MyAyNi43NDEtMzQuMTQyIDE0LjE0MkwyOS4xOTYgMjcwLjE0MmMtNy44MS03LjgxLTcuODEtMjAuNDc0IDAtMjguMjg0bDEyOC42NjItMTI4LjY2MmMxMi41OTktMTIuNiAzNC4xNDItMy42NzYgMzQuMTQyIDE0LjE0MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAxOTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMzg0LjY2MlYxMjcuMzM4YzAtMTcuODE4IDIxLjU0My0yNi43NDEgMzQuMTQyLTE0LjE0MmwxMjguNjYyIDEyOC42NjJjNy44MSA3LjgxIDcuODEgMjAuNDc0IDAgMjguMjg0TDM0LjE0MiAzOTguODA0QzIxLjU0MyA0MTEuNDA0IDAgNDAyLjQ4IDAgMzg0LjY2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFNxdWFyZURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek05Mi41IDIyMC41bDEyMyAxMjNjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDEyMy0xMjNjNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNUgxMDFjLTEwLjcgMC0xNi4xIDEyLjktOC41IDIwLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMjU5LjUxNSAxMjQuNDg1bC0xMjMuMDMgMTIzLjAzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMTIzLjAyOSAxMjMuMDI5YzcuNTYgNy41NiAyMC40ODUgMi4yMDYgMjAuNDg1LTguNDg1VjEzMi45NzFjLjAwMS0xMC42OTEtMTIuOTI1LTE2LjA0NS0yMC40ODQtOC40ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzMmgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4em0xNDAuNDg1IDM1NS41MTVsMTIzLjAyOS0xMjMuMDI5YzQuNjg2LTQuNjg2IDQuNjg2LTEyLjI4NCAwLTE2Ljk3MWwtMTIzLjAyOS0xMjMuMDNjLTcuNTYtNy41Ni0yMC40ODUtMi4yMDYtMjAuNDg1IDguNDg1djI0Ni4wNTljMCAxMC42OTEgMTIuOTI2IDE2LjA0NSAyMC40ODUgOC40ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FyZXRTcXVhcmVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMlY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM1MmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4em0zNTUuNTE1LTE0MC40ODVsLTEyMy4wMy0xMjMuMDNjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw5Mi40ODUgMjkxLjUxNWMtNy41NiA3LjU2LTIuMjA2IDIwLjQ4NSA4LjQ4NSAyMC40ODVoMjQ2LjA1OWMxMC42OTEgMCAxNi4wNDUtMTIuOTI2IDguNDg2LTIwLjQ4NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXJldFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OC42NjIgMzUySDMxLjMzOGMtMTcuODE4IDAtMjYuNzQxLTIxLjU0My0xNC4xNDItMzQuMTQybDEyOC42NjItMTI4LjY2MmM3LjgxLTcuODEgMjAuNDc0LTcuODEgMjguMjg0IDBsMTI4LjY2MiAxMjguNjYyYzEyLjYgMTIuNTk5IDMuNjc2IDM0LjE0Mi0xNC4xNDIgMzQuMTQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNhcnJvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMiAxNTYuNmMtNTIuNy0yNS43LTExNC41LTEwLjUtMTUwLjIgMzIuOGw1NS4yIDU1LjJjNi4zIDYuMyA2LjMgMTYuNCAwIDIyLjYtMy4xIDMuMS03LjIgNC43LTExLjMgNC43cy04LjItMS42LTExLjMtNC43TDEzMC40IDIxNyAyLjMgNDc5LjdjLTIuOSA2LTMuMSAxMy4zIDAgMTkuNyA1LjQgMTEuMSAxOC45IDE1LjcgMzAgMTAuM2wxMzMuNi02NS4yLTQ5LjItNDkuMmMtNi4zLTYuMi02LjMtMTYuNCAwLTIyLjYgNi4zLTYuMiAxNi40LTYuMiAyMi42IDBsNTcgNTcgMTAyLTQ5LjhjMjQtMTEuNyA0NC41LTMxLjMgNTcuMS01Ny4xIDMwLjEtNjEuNyA0LjUtMTM2LjEtNTcuMi0xNjYuMnptOTIuMS0zNC45QzQwOS44IDgxIDM5OS43IDMyLjkgMzYwIDBjLTUwLjMgNDEuNy01Mi41IDEwNy41LTcuOSAxNTEuOWw4IDhjNDQuNCA0NC42IDExMC4zIDQyLjQgMTUxLjktNy45LTMyLjktMzkuNy04MS00OS44LTEyMS43LTMwLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydEFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuNzE3IDMyMEgyMTEuNTcybDYuNTQ1IDMyaDI2OC40MThjMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC01LjUxNyAyNC4yNzZDNTIzLjExMiA0MTQuNjY4IDUzNiA0MzMuODI4IDUzNiA0NTZjMCAzMS4yMDItMjUuNTE5IDU2LjQ0NC01Ni44MjQgNTUuOTk0LTI5LjgyMy0uNDI5LTU0LjM1LTI0LjYzMS01NS4xNTUtNTQuNDQ3LS40NC0xNi4yODcgNi4wODUtMzEuMDQ5IDE2LjgwMy00MS41NDhIMjMxLjE3NkMyNDEuNTUzIDQyNi4xNjUgMjQ4IDQ0MC4zMjYgMjQ4IDQ1NmMwIDMxLjgxMy0yNi41MjggNTcuNDMxLTU4LjY3IDU1LjkzOC0yOC41NC0xLjMyNS01MS43NTEtMjQuMzg1LTUzLjI1MS01Mi45MTctMS4xNTgtMjIuMDM0IDEwLjQzNi00MS40NTUgMjguMDUxLTUxLjU4Nkw5My44ODMgNjRIMjRDMTAuNzQ1IDY0IDAgNTMuMjU1IDAgNDBWMjRDMCAxMC43NDUgMTAuNzQ1IDAgMjQgMGgxMDIuNTI5YzExLjQwMSAwIDIxLjIyOCA4LjAyMSAyMy41MTMgMTkuMTlMMTU5LjIwOCA2NEg1NTEuOTljMTUuNDAxIDAgMjYuODE2IDE0LjMwMSAyMy40MDMgMjkuMzE5bC00Ny4yNzMgMjA4QzUyNS42MzcgMzEyLjI0NiA1MTUuOTIzIDMyMCA1MDQuNzE3IDMyMHpNNDAzLjAyOSAxOTJIMzYwdi02MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY2MGgtNDMuMDI5Yy0xMC42OTEgMC0xNi4wNDUgMTIuOTI2LTguNDg1IDIwLjQ4NWw2Ny4wMjkgNjcuMDI5YzQuNjg2IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMGw2Ny4wMjktNjcuMDI5YzcuNTU5LTcuNTU5IDIuMjA1LTIwLjQ4NS04LjQ4Ni0yMC40ODV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FydFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0LjcxNyAzMjBIMjExLjU3Mmw2LjU0NSAzMmgyNjguNDE4YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNS41MTcgMjQuMjc2QzUyMy4xMTIgNDE0LjY2OCA1MzYgNDMzLjgyOCA1MzYgNDU2YzAgMzEuMjAyLTI1LjUxOSA1Ni40NDQtNTYuODI0IDU1Ljk5NC0yOS44MjMtLjQyOS01NC4zNS0yNC42MzEtNTUuMTU1LTU0LjQ0Ny0uNDQtMTYuMjg3IDYuMDg1LTMxLjA0OSAxNi44MDMtNDEuNTQ4SDIzMS4xNzZDMjQxLjU1MyA0MjYuMTY1IDI0OCA0NDAuMzI2IDI0OCA0NTZjMCAzMS44MTMtMjYuNTI4IDU3LjQzMS01OC42NyA1NS45MzgtMjguNTQtMS4zMjUtNTEuNzUxLTI0LjM4NS01My4yNTEtNTIuOTE3LTEuMTU4LTIyLjAzNCAxMC40MzYtNDEuNDU1IDI4LjA1MS01MS41ODZMOTMuODgzIDY0SDI0QzEwLjc0NSA2NCAwIDUzLjI1NSAwIDQwVjI0QzAgMTAuNzQ1IDEwLjc0NSAwIDI0IDBoMTAyLjUyOWMxMS40MDEgMCAyMS4yMjggOC4wMjEgMjMuNTEzIDE5LjE5TDE1OS4yMDggNjRINTUxLjk5YzE1LjQwMSAwIDI2LjgxNiAxNC4zMDEgMjMuNDAzIDI5LjMxOWwtNDcuMjczIDIwOEM1MjUuNjM3IDMxMi4yNDYgNTE1LjkyMyAzMjAgNTA0LjcxNyAzMjB6TTQwOCAxNjhoLTQ4di00MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0xNmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnY0MGgtNDhjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2MTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg0OHY0MGMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDE2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTQwaDQ4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTE2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2FzaFJlZ2lzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS4xIDM3OC44bC0yNi43LTE2MGMtMi42LTE1LjQtMTUuOS0yNi43LTMxLjYtMjYuN0gyMDh2LTY0aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY5NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZ2NjRINTkuMWMtMTUuNiAwLTI5IDExLjMtMzEuNiAyNi43TC44IDM3OC43Yy0uNiAzLjUtLjkgNy0uOSAxMC41VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg0NDhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTkwLjdjLjEtMy41LS4yLTctLjgtMTAuNXpNMjgwIDI0OGMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZ6bS0zMiA2NGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZ6bS0zMi04MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZ6TTgwIDgwVjQ4aDE5MnYzMkg4MHptNDAgMjAwaC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2di0xNmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djE2YzAgOC44LTcuMiAxNi0xNiAxNnptMTYgNjR2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZjMCA4LjgtNy4yIDE2LTE2IDE2aC0xNmMtOC44IDAtMTYtNy4yLTE2LTE2em0yMTYgMTEyYzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE3NmM0LjQgMCA4IDMuNiA4IDh2MTZ6bTI0LTExMmMwIDguOC03LjIgMTYtMTYgMTZoLTE2Yy04LjggMC0xNi03LjItMTYtMTZ2LTE2YzAtOC44IDcuMi0xNiAxNi0xNmgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTZ6bTQ4LTgwYzAgOC44LTcuMiAxNi0xNiAxNmgtMTZjLTguOCAwLTE2LTcuMi0xNi0xNnYtMTZjMC04LjggNy4yLTE2IDE2LTE2aDE2YzguOCAwIDE2IDcuMiAxNiAxNnYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjkwLjU5IDE5MmMtMjAuMTggMC0xMDYuODIgMS45OC0xNjIuNTkgODUuOTVWMTkyYzAtNTIuOTQtNDMuMDYtOTYtOTYtOTYtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMmMxNy42NCAwIDMyIDE0LjM2IDMyIDMydjI1NmMwIDM1LjMgMjguNyA2NCA2NCA2NGgxNzZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTMybDEyOC05NnYxNDRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg5Ljg2Yy0xMC4yOSAyLjY3LTIwLjg5IDQuNTQtMzIgNC41NC02MS44MSAwLTExMy41Mi00NC4wNS0xMjUuNDEtMTAyLjR6TTQ0OCA5NmgtNjRsLTY0LTY0djEzNC40YzAgNTMuMDIgNDIuOTggOTYgOTYgOTZzOTYtNDIuOTggOTYtOTZWMzJsLTY0IDY0em0tNzIgODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em04MCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDZXJ0aWZpY2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNjIyIDI1NS45Mmw0NS45ODUtNDUuMDA1YzEzLjcwOC0xMi45NzcgNy4zMTYtMzYuMDM5LTEwLjY2NC00MC4zMzlsLTYyLjY1LTE1Ljk5IDE3LjY2MS02Mi4wMTVjNC45OTEtMTcuODM4LTExLjgyOS0zNC42NjMtMjkuNjYxLTI5LjY3MWwtNjEuOTk0IDE3LjY2Ny0xNS45ODQtNjIuNjcxQzMzNy4wODUuMTk3IDMxMy43NjUtNi4yNzYgMzAwLjk5IDcuMjI4TDI1NiA1My41NyAyMTEuMDExIDcuMjI5Yy0xMi42My0xMy4zNTEtMzYuMDQ3LTcuMjM0LTQwLjMyNSAxMC42NjhsLTE1Ljk4NCA2Mi42NzEtNjEuOTk1LTE3LjY2N0M3NC44NyA1Ny45MDcgNTguMDU2IDc0LjczOCA2My4wNDYgOTIuNTcybDE3LjY2MSA2Mi4wMTUtNjIuNjUgMTUuOTlDLjA2OSAxNzQuODc4LTYuMzEgMTk3Ljk0NCA3LjM5MiAyMTAuOTE1bDQ1Ljk4NSA0NS4wMDUtNDUuOTg1IDQ1LjAwNGMtMTMuNzA4IDEyLjk3Ny03LjMxNiAzNi4wMzkgMTAuNjY0IDQwLjMzOWw2Mi42NSAxNS45OS0xNy42NjEgNjIuMDE1Yy00Ljk5MSAxNy44MzggMTEuODI5IDM0LjY2MyAyOS42NjEgMjkuNjcxbDYxLjk5NC0xNy42NjcgMTUuOTg0IDYyLjY3MWM0LjQzOSAxOC41NzUgMjcuNjk2IDI0LjAxOCA0MC4zMjUgMTAuNjY4TDI1NiA0NTguNjFsNDQuOTg5IDQ2LjAwMWMxMi41IDEzLjQ4OCAzNS45ODcgNy40ODYgNDAuMzI1LTEwLjY2OGwxNS45ODQtNjIuNjcxIDYxLjk5NCAxNy42NjdjMTcuODM2IDQuOTk0IDM0LjY1MS0xMS44MzcgMjkuNjYxLTI5LjY3MWwtMTcuNjYxLTYyLjAxNSA2Mi42NS0xNS45OWMxNy45ODctNC4zMDIgMjQuMzY2LTI3LjM2NyAxMC42NjQtNDAuMzM5bC00NS45ODQtNDUuMDA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWlyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAxMjhjMC0yOS41IDE2LjItNTUgNDAtNjguOVYyNTZoNDhWNDhoNDh2MjA4aDQ4VjU5LjFjMjMuOCAxMy45IDQwIDM5LjQgNDAgNjguOXYxMjhoNDhWMTI4QzM4NCA1Ny4zIDMyNi43IDAgMjU2IDBoLTY0QzEyMS4zIDAgNjQgNTcuMyA2NCAxMjh2MTI4aDQ4em0zMzQuMyAyMTMuOWwtMTAuNy0zMmMtNC40LTEzLjEtMTYuNi0yMS45LTMwLjQtMjEuOUg0Mi43Yy0xMy44IDAtMjYgOC44LTMwLjQgMjEuOWwtMTAuNyAzMkMtNS4yIDM2Mi42IDEwLjIgMzg0IDMyIDM4NHYxMTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzODRoMjU2djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjM4NGMyMS44IDAgMzcuMi0yMS40IDMwLjMtNDIuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFsa2JvYXJkVGVhY2hlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDggMzUyYy0yLjM5IDAtNC43OC4zNS03LjA2IDEuMDlDMTg3Ljk4IDM1Ny4zIDE3NC4zNSAzNjAgMTYwIDM2MGMtMTQuMzUgMC0yNy45OC0yLjctNDAuOTUtNi45MS0yLjI4LS43NC00LjY2LTEuMDktNy4wNS0xLjA5QzQ5Ljk0IDM1Mi0uMzMgNDAyLjQ4IDAgNDY0LjYyLjE0IDQ5MC44OCAyMS43MyA1MTIgNDggNTEyaDIyNGMyNi4yNyAwIDQ3Ljg2LTIxLjEyIDQ4LTQ3LjM4LjMzLTYyLjE0LTQ5Ljk0LTExMi42Mi0xMTItMTEyLjYyem0tNDgtMzJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NnMtNDIuOTgtOTYtOTYtOTYtOTYgNDIuOTgtOTYgOTYgNDIuOTggOTYgOTYgOTZ6TTU5MiAwSDIwOGMtMjYuNDcgMC00OCAyMi4yNS00OCA0OS41OVY5NmMyMy40MiAwIDQ1LjEgNi43OCA2NCAxNy44VjY0aDM1MnYyODhoLTY0di02NEgzODR2NjRoLTc2LjI0YzE5LjEgMTYuNjkgMzMuMTIgMzguNzMgMzkuNjkgNjRINTkyYzI2LjQ3IDAgNDgtMjIuMjUgNDgtNDkuNTlWNDkuNTlDNjQwIDIyLjI1IDYxOC40NyAwIDU5MiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYWxrYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgNjRoNDQ4djM1Mmg2NFY0MGMwLTIyLjA2LTE3Ljk0LTQwLTQwLTQwSDcyQzQ5Ljk0IDAgMzIgMTcuOTQgMzIgNDB2Mzc2aDY0VjY0em01MjggMzg0SDQ4MHYtNjRIMjg4djY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJnaW5nU3RhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0yMDgtMzIwVjgwYzAtOC44NC03LjE2LTE2LTE2LTE2cy0xNiA3LjE2LTE2IDE2djQ4aC0zMlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNnMtMTYgNy4xNi0xNiAxNnY0OGgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgMzUuNzYgMjMuNjIgNjUuNjkgNTYgNzUuOTN2MTE4LjQ5YzAgMTMuOTUtOS41IDI2LjkyLTIzLjI2IDI5LjE5QzQzMS4yMiA0MDIuNSA0MTYgMzg4Ljk5IDQxNiAzNzJ2LTI4YzAtNDguNi0zOS40LTg4LTg4LTg4aC04VjY0YzAtMzUuMzUtMjguNjUtNjQtNjQtNjRIOTZDNjAuNjUgMCAzMiAyOC42NSAzMiA2NHYzNTJoMjg4VjMwNGg4YzIyLjA5IDAgNDAgMTcuOTEgNDAgNDB2MjQuNjFjMCAzOS42NyAyOC45MiA3NS4xNiA2OC40MSA3OS4wMUM0ODEuNzEgNDUyLjA1IDUyMCA0MTYuNDEgNTIwIDM3MlYyNTEuOTNjMzIuMzgtMTAuMjQgNTYtNDAuMTcgNTYtNzUuOTN2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNnptLTI4My45MSA0Ny43NmwtOTMuNyAxMzljLTIuMiAzLjMzLTYuMjEgNS4yNC0xMC4zOSA1LjI0LTcuNjcgMC0xMy40Ny02LjI4LTExLjY3LTEyLjkyTDE2Ny4zNSAyMjRIMTA4Yy03LjI1IDAtMTIuODUtNS41OS0xMS44OS0xMS44OWwxNi0xMDdDMTEyLjkgOTkuOSAxMTcuOTggOTYgMTI0IDk2aDY4YzcuODggMCAxMy42MiA2LjU0IDExLjYgMTMuMjFMMTkyIDE2MGg1Ny43YzkuMjQgMCAxNS4wMSA4Ljc4IDEwLjM5IDE1Ljc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QXJlYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAgMzg0YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJIMTJjLTYuNiAwLTEyLTUuNC0xMi0xMlY3NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjMwOGg0MzZ6TTM3Mi43IDE1OS41TDI4OCAyMTZsLTg1LjMtMTEzLjdjLTUuMS02LjgtMTUuNS02LjMtMTkuOSAxTDk2IDI0OHYxMDRoMzg0bC04OS45LTE4Ny44Yy0zLjItNi41LTExLjQtOC43LTE3LjQtNC43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoYXJ0QmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzMi44IDMyMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxNzIuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bTk2IDBoMzguNGM2LjQgMCAxMi44LTYuNCAxMi44LTEyLjhWNzYuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYyMzAuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6bS0yODggMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOHYtNzAuNGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHY3MC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgzOC40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYxMDguOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTM4LjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxOTguNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiAzODRINjRWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGFydExpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEg2NFY4MGMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDY0IDAgNzEuMTYgMCA4MHYzMzZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NjQgOTZIMzQ1Ljk0Yy0yMS4zOCAwLTMyLjA5IDI1Ljg1LTE2Ljk3IDQwLjk3bDMyLjQgMzIuNEwyODggMjQyLjc1bC03My4zNy03My4zN2MtMTIuNS0xMi41LTMyLjc2LTEyLjUtNDUuMjUgMGwtNjguNjkgNjguNjljLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjIgMjIuNjJjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMEwxOTIgMjM3LjI1bDczLjM3IDczLjM3YzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsOTYtOTYgMzIuNCAzMi40YzE1LjEyIDE1LjEyIDQwLjk3IDQuNDEgNDAuOTctMTYuOTdWMTEyYy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hhcnRQaWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU0NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI3Ljc5IDI4OEgyOTAuNWwxNTguMDMgMTU4LjAzYzYuMDQgNi4wNCAxNS45OCA2LjUzIDIyLjE5LjY4IDM4LjctMzYuNDYgNjUuMzItODUuNjEgNzMuMTMtMTQwLjg2IDEuMzQtOS40Ni02LjUxLTE3Ljg1LTE2LjA2LTE3Ljg1em0tMTUuODMtNjQuOEM1MDMuNzIgMTAzLjc0IDQwOC4yNiA4LjI4IDI4OC44LjA0IDI3OS42OC0uNTkgMjcyIDcuMSAyNzIgMTYuMjRWMjQwaDIyMy43N2M5LjE0IDAgMTYuODItNy42OCAxNi4xOS0xNi44ek0yMjQgMjg4VjUwLjcxYzAtOS41NS04LjM5LTE3LjQtMTcuODQtMTYuMDZDODYuOTkgNTEuNDktNC4xIDE1NS42LjE0IDI4MC4zNyA0LjUgNDA4LjUxIDExNC44MyA1MTMuNTkgMjQzLjAzIDUxMS45OGM1MC40LS42MyA5Ni45Ny0xNi44NyAxMzUuMjYtNDQuMDMgNy45LTUuNiA4LjQyLTE3LjIzIDEuNTctMjQuMDhMMjI0IDI4OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVja0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk2Ny0xMTEuMDMzIDI0OC0yNDggMjQ4UzggMzkyLjk2NyA4IDI1NiAxMTkuMDMzIDggMjU2IDhzMjQ4IDExMS4wMzMgMjQ4IDI0OHpNMjI3LjMxNCAzODcuMzE0bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OS0xNi4zNzktNi4yNDktMjIuNjI4IDBMMjE2IDMwOC4xMThsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNDkgMTYuMzc5IDYuMjQ5IDIyLjYyOC4wMDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlY2tEb3VibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1IDE3NC44bC0zOS42LTM5LjZjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDE5MiAzNzQuNyA4MC42IDI2My4yYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEw3IDMwMi45Yy05LjQgOS40LTkuNCAyNC42IDAgMzRMMTc1IDUwNWM5LjQgOS40IDI0LjYgOS40IDMzLjkgMGwyOTYtMjk2LjJjOS40LTkuNSA5LjQtMjQuNy4xLTM0em0tMzI0LjMgMTA2YzYuMiA2LjMgMTYuNCA2LjMgMjIuNiAwbDIwOC0yMDguMmM2LjItNi4zIDYuMi0xNi40IDAtMjIuNkwzNjYuMSA0LjdjLTYuMi02LjMtMTYuNC02LjMtMjIuNiAwTDE5MiAxNTYuMmwtNTUuNC01NS41Yy02LjItNi4zLTE2LjQtNi4zLTIyLjYgMEw2OC43IDE0NmMtNi4yIDYuMy02LjIgMTYuNCAwIDIyLjZsMTEyIDExMi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OHptLTIwNC42ODYtOTguMDU5bDE4NC0xODRjNi4yNDgtNi4yNDggNi4yNDgtMTYuMzc5IDAtMjIuNjI3bC0yMi42MjctMjIuNjI3Yy02LjI0OC02LjI0OC0xNi4zNzktNi4yNDktMjIuNjI4IDBMMTg0IDMwMi43NDVsLTcwLjA1OS03MC4wNTljLTYuMjQ4LTYuMjQ4LTE2LjM3OS02LjI0OC0yMi42MjggMGwtMjIuNjI3IDIyLjYyN2MtNi4yNDggNi4yNDgtNi4yNDggMTYuMzc5IDAgMjIuNjI3bDEwNCAxMDRjNi4yNDkgNi4yNSAxNi4zNzkgNi4yNSAyMi42MjguMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3My44OTggNDM5LjQwNGwtMTY2LjQtMTY2LjRjLTkuOTk3LTkuOTk3LTkuOTk3LTI2LjIwNiAwLTM2LjIwNGwzNi4yMDMtMzYuMjA0YzkuOTk3LTkuOTk4IDI2LjIwNy05Ljk5OCAzNi4yMDQgMEwxOTIgMzEyLjY5IDQzMi4wOTUgNzIuNTk2YzkuOTk3LTkuOTk3IDI2LjIwNy05Ljk5NyAzNi4yMDQgMGwzNi4yMDMgMzYuMjA0YzkuOTk3IDkuOTk3IDkuOTk3IDI2LjIwNiAwIDM2LjIwNGwtMjk0LjQgMjk0LjQwMWMtOS45OTggOS45OTctMjYuMjA3IDkuOTk3LTM2LjIwNC0uMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZWVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI4OHYxNjBhMzIgMzIgMCAwIDAgMzIgMzJoNDQ4YTMyIDMyIDAgMCAwIDMyLTMyVjI4OHpNMjk5LjgzIDMyYTMyIDMyIDAgMCAwLTIxLjEzIDdMMCAyNTZoNTEyYzAtMTE5Ljg5LTk0LTIxNy44LTIxMi4xNy0yMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCaXNob3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyODcuODhjMCA1MS42NCAyMi4xNCA3My44MyA1NiA4NC42VjQxNmgxOTJ2LTQzLjUyYzMzLjg2LTEwLjc3IDU2LTMzIDU2LTg0LjYgMC0zMC42MS0xMC43My02Ny4xLTI2LjY5LTEwMi41NkwxODUgMjg1LjY1YTggOCAwIDAgMS0xMS4zMSAwbC0xMS4zMS0xMS4zMWE4IDggMCAwIDEgMC0xMS4zMUwyNzAuMjcgMTU1LjFjLTIwLjgtMzcuOTEtNDYuNDctNzIuMS03MC44Ny05Mi41OUMyMTMuNCA1OS4wOSAyMjQgNDcuMDUgMjI0IDMyYTMyIDMyIDAgMCAwLTMyLTMyaC02NGEzMiAzMiAwIDAgMC0zMiAzMmMwIDE1IDEwLjYgMjcuMDkgMjQuNiAzMC41MUM2Ny44MSAxMDYuOCA4IDIxNC41IDggMjg3Ljg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NCb2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTUuOS4yaC02NHY2NGg2NHpNMCA2NC4xN3Y2NGg2NHYtNjR6TTEyOCAuMkg2NHY2NGg2NHptNjQgMjU1Ljl2NjRoNjR2LTY0ek0wIDE5Mi4xMnY2NGg2NHYtNjR6TTM4My44NS4yaC02NHY2NGg2NHptMTI4IDBoLTY0djY0aDY0ek0xMjggMjU2LjFINjR2NjRoNjR6TTUxMS44IDQ0OHYtNjRoLTY0djY0em0wLTEyOHYtNjRoLTY0djY0ek0zODMuODUgNTEyaDY0di02NGgtNjR6bTEyOC0zMTkuODh2LTY0aC02NHY2NHpNMTI4IDUxMmg2NHYtNjRoLTY0ek0wIDUxMmg2NHYtNjRIMHptMjU1LjkgMGg2NHYtNjRoLTY0ek0wIDMyMC4wN3Y2NGg2NHYtNjR6bTMxOS44OC0xOTEuOTJ2LTY0aC02NHY2NHptLTY0IDEyOGg2NHYtNjRoLTY0em0tNjQgMTI4djY0aDY0di02NHptMTI4LTY0aDY0di02NGgtNjR6bTAtMTI3Ljk1aDY0di02NGgtNjR6bTAgMTkxLjkzdjY0aDY0di02NHpNNjQgMzg0LjA1djY0aDY0di02NHptMTI4LTI1NS45di02NGgtNjR2NjR6bTE5MS45MiAyNTUuOWg2NHYtNjRoLTY0em0tMTI4LTE5MS45M3YtNjRoLTY0djY0em0xMjgtMTI3Ljk1djY0aDY0di02NHptLTEyOCAyNTUuOXY2NGg2NHYtNjR6bS02NC0xMjcuOTVIMTI4djY0aDY0em0xOTEuOTIgNjRoNjR2LTY0aC02NHpNMTI4IDEyOC4xNUg2NHY2NGg2NHptMCAxOTEuOTJ2NjRoNjR2LTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXNzS2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgNDQ4SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTE2LTI4OEgyNTZ2LTQ4aDQwYTggOCAwIDAgMCA4LThWNTZhOCA4IDAgMCAwLTgtOGgtNDBWOGE4IDggMCAwIDAtOC04aC00OGE4IDggMCAwIDAtOCA4djQwaC00MGE4IDggMCAwIDAtOCA4djQ4YTggOCAwIDAgMCA4IDhoNDB2NDhIMzJhMzIgMzIgMCAwIDAtMzAuNTIgNDEuNTRMNzQuNTYgNDE2aDI5OC44OGw3My4wOC0yMTQuNDZBMzIgMzIgMCAwIDAgNDE2IDE2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc0tuaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOSAyNzIuNDdsNDAuNjMgMTguMDZhMzIgMzIgMCAwIDAgMjQuODguNDdsMTIuNzgtNS4xMmEzMiAzMiAwIDAgMCAxOC43Ni0yMC41bDkuMjItMzAuNjVhMjQgMjQgMCAwIDEgMTIuNTUtMTUuNjVMMTU5Ljk0IDIwOHY1MC4zM2E0OCA0OCAwIDAgMS0yNi41MyA0Mi45NGwtNTcuMjIgMjguNjVBODAgODAgMCAwIDAgMzIgNDAxLjQ4VjQxNmgzMTkuODZWMjI0YzAtMTA2LTg1LjkyLTE5Mi0xOTEuOTItMTkySDEyQTEyIDEyIDAgMCAwIDAgNDRhMTYuOSAxNi45IDAgMCAwIDEuNzkgNy41OEwxNiA4MGwtOSA5YTI0IDI0IDAgMCAwLTcgMTd2MTM3LjIxYTMyIDMyIDAgMCAwIDE5IDI5LjI2ek01MiAxMjhhMjAgMjAgMCAxIDEtMjAgMjAgMjAgMjAgMCAwIDEgMjAtMjB6bTMxNiAzMjBIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzUyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Bhd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA1LjEgMjI0SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDE2djUuNDljMCA0NC00LjE0IDg2LjYtMjQgMTIyLjUxaDE3NmMtMTkuODktMzUuOTEtMjQtNzguNTEtMjQtMTIyLjUxVjI4OGgxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTI1LjFjMjkuMzktMTguMzggNDkuMS01MC43OCA0OS4xLTg4YTEwNCAxMDQgMCAwIDAtMjA4IDBjMCAzNy4yMiAxOS43MSA2OS42MiA0OS4xIDg4ek0zMDQgNDQ4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI4OGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3NRdWVlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTEyYTU2IDU2IDAgMSAwLTU2LTU2IDU2IDU2IDAgMCAwIDU2IDU2em0xNzYgMzM2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTcyLjg3LTI2My44NGwtMjguNTEtMTUuOTJjLTcuNDQtNS0xNi45MS0yLjQ2LTIyLjI5IDQuNjhhNDcuNTkgNDcuNTkgMCAwIDEtNDcuMjMgMTguMjNDMzgzLjcgMTg2Ljg2IDM2OCAxNjQuOTMgMzY4IDE0MS40YTEzLjQgMTMuNCAwIDAgMC0xMy40LTEzLjRoLTM4Ljc3Yy02IDAtMTEuNjEgNC0xMi44NiA5LjkxYTQ4IDQ4IDAgMCAxLTkzLjk0IDBjLTEuMjUtNS45Mi02LjgyLTkuOTEtMTIuODYtOS45MUgxNTcuNGExMy40IDEzLjQgMCAwIDAtMTMuNCAxMy40YzAgMjUuNjktMTkgNDguNzUtNDQuNjcgNTAuNDlhNDcuNSA0Ny41IDAgMCAxLTQxLjU0LTE5LjE1Yy01LjI4LTcuMDktMTQuNzMtOS40NS0yMi4wOS00LjU0bC0yOC41NyAxNmExNiAxNiAwIDAgMC01LjQ0IDIwLjQ3TDEwNC4yNCA0MTZoMzAzLjUybDEwMi41NS0yMTEuMzdhMTYgMTYgMCAwIDAtNS40NC0yMC40N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGVzc1Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDMyaC01NmExNiAxNiAwIDAgMC0xNiAxNnY0OGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTgwYTE2IDE2IDAgMCAwLTE2IDE2djQ4SDg4LjFWNDhhMTYgMTYgMCAwIDAtMTYtMTZIMTZBMTYgMTYgMCAwIDAgMCA0OHYxNzZsNjQgMzJjMCA0OC4zMy0xLjU0IDk1LTEzLjIxIDE2MGgyODIuNDJDMzIxLjU0IDM1MSAzMjAgMzAzLjcyIDMyMCAyNTZsNjQtMzJWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6TTIyNCAzMjBoLTY0di02NGEzMiAzMiAwIDAgMSA2NCAwem0xNDQgMTI4SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDM1MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzQgMjA4SDY0YTE2IDE2IDAgMCAwLTE2IDE2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE1Ljk0QTUzNS43OCA1MzUuNzggMCAwIDEgNjQgMzg0aDEyOGE1MzUuNzggNTM1Ljc4IDAgMCAxLTE1Ljk0LTEyOEgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTE2YTE2IDE2IDAgMCAwLTE2LTE2aC0xMGwzMy44OS05MC4zOGExNiAxNiAwIDAgMC0xNS0yMS42MkgxNDRWNjRoMjRhOCA4IDAgMCAwIDgtOFY0MGE4IDggMCAwIDAtOC04aC0yNFY4YTggOCAwIDAgMC04LThoLTE2YTggOCAwIDAgMC04IDh2MjRIODhhOCA4IDAgMCAwLTggOHYxNmE4IDggMCAwIDAgOCA4aDI0djMySDU1LjA5YTE2IDE2IDAgMCAwLTE1IDIxLjYyem0xNzMuMTYgMjUxLjU4TDIyNCA0NDh2LTE2YTE2IDE2IDAgMCAwLTE2LTE2SDQ4YTE2IDE2IDAgMCAwLTE2IDE2djE2TDguODUgNDU5LjU4QTE2IDE2IDAgMCAwIDAgNDczLjg5VjQ5NmExNiAxNiAwIDAgMCAxNiAxNmgyMjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTIyLjExYTE2IDE2IDAgMCAwLTguODQtMTQuMzF6bTkyLjc3LTE1Ny43OGwtMy4yOSA4Mi4yaDEyNi43MmwtMy4yOS04Mi4yMSAyNC42LTIwLjc5QTMyIDMyIDAgMCAwIDQ5NiAyNTYuNTRWMTk4YTYgNiAwIDAgMC02LTZoLTI2LjM4YTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDM3My4xYTYgNiAwIDAgMC02IDZ2MjZoLTI0Ljcxdi0yNmE2IDYgMCAwIDAtNi02SDMxMGE2IDYgMCAwIDAtNiA2djU4LjZhMzIgMzIgMCAwIDAgMTEuMzYgMjQuNHpNMzg0IDMwNGExNiAxNiAwIDAgMSAzMiAwdjMyaC0zMnptMTE5LjE2IDE1NS41OEw0ODAgNDQ4di0xNmExNiAxNiAwIDAgMC0xNi0xNkgzMzZhMTYgMTYgMCAwIDAtMTYgMTZ2MTZsLTIzLjE1IDExLjU4YTE2IDE2IDAgMCAwLTguODUgMTQuMzFWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMjIuMTFhMTYgMTYgMCAwIDAtOC44NC0xNC4zMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uQ2lyY2xlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM3LTExMSAyNDgtMjQ4IDI0OFM4IDM5MyA4IDI1NiAxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDh6TTI3MyAzNjkuOWwxMzUuNS0xMzUuNWM5LjQtOS40IDkuNC0yNC42IDAtMzMuOWwtMTctMTdjLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwTDI1NiAyODUuMSAxNTQuNCAxODMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyMzkgMzY5LjljOS40IDkuNCAyNC42IDkuNCAzNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25DaXJjbGVMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MDRDMTE5IDUwNCA4IDM5MyA4IDI1NlMxMTkgOCAyNTYgOHMyNDggMTExIDI0OCAyNDgtMTExIDI0OC0yNDggMjQ4ek0xNDIuMSAyNzNsMTM1LjUgMTM1LjVjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMTctMTdjOS40LTkuNCA5LjQtMjQuNiAwLTMzLjlMMjI2LjkgMjU2bDEwMS42LTEwMS42YzkuNC05LjQgOS40LTI0LjYgMC0zMy45bC0xNy0xN2MtOS40LTkuNC0yNC42LTkuNC0zMy45IDBMMTQyLjEgMjM5Yy05LjQgOS40LTkuNCAyNC42IDAgMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4YzEzNyAwIDI0OCAxMTEgMjQ4IDI0OFMzOTMgNTA0IDI1NiA1MDQgOCAzOTMgOCAyNTYgMTE5IDggMjU2IDh6bTExMy45IDIzMUwyMzQuNCAxMDMuNWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDBsLTE3IDE3Yy05LjQgOS40LTkuNCAyNC42IDAgMzMuOUwyODUuMSAyNTYgMTgzLjUgMzU3LjZjLTkuNCA5LjQtOS40IDI0LjYgMCAzMy45bDE3IDE3YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwTDM2OS45IDI3M2M5LjQtOS40IDkuNC0yNC42IDAtMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkNpcmNsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMjU2QzggMTE5IDExOSA4IDI1NiA4czI0OCAxMTEgMjQ4IDI0OC0xMTEgMjQ4LTI0OCAyNDhTOCAzOTMgOCAyNTZ6bTIzMS0xMTMuOUwxMDMuNSAyNzcuNmMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjlsMTcgMTdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBMMjU2IDIyNi45bDEwMS42IDEwMS42YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDE3LTE3YzkuNC05LjQgOS40LTI0LjYgMC0zMy45TDI3MyAxNDIuMWMtOS40LTkuNC0yNC42LTkuNC0zNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwNy4wMjkgMzgxLjQ3NkwxMi42ODYgMTg3LjEzMmMtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxbDIyLjY2Ny0yMi42NjdjOS4zNTctOS4zNTcgMjQuNTIyLTkuMzc1IDMzLjkwMS0uMDRMMjI0IDI4NC41MDVsMTU0Ljc0NS0xNTQuMDIxYzkuMzc5LTkuMzM1IDI0LjU0NC05LjMxNyAzMy45MDEuMDRsMjIuNjY3IDIyLjY2N2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFMMjQwLjk3MSAzODEuNDc2Yy05LjM3MyA5LjM3Mi0yNC41NjkgOS4zNzItMzMuOTQyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2hldnJvblJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4NS40NzYgMjcyLjk3MUw5MS4xMzIgNDY3LjMxNGMtOS4zNzMgOS4zNzMtMjQuNTY5IDkuMzczLTMzLjk0MSAwbC0yMi42NjctMjIuNjY3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxODguNTA1IDI1NiAzNC40ODQgMTAxLjI1NWMtOS4zMzUtOS4zNzktOS4zMTctMjQuNTQ0LjA0LTMzLjkwMWwyMi42NjctMjIuNjY3YzkuMzczLTkuMzczIDI0LjU2OS05LjM3MyAzMy45NDEgMEwyODUuNDc1IDIzOS4wM2M5LjM3MyA5LjM3MiA5LjM3MyAyNC41NjguMDAxIDMzLjk0MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaGV2cm9uVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjk3MSAxMzAuNTI0bDE5NC4zNDMgMTk0LjM0M2M5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFsLTIyLjY2NyAyMi42NjdjLTkuMzU3IDkuMzU3LTI0LjUyMiA5LjM3NS0zMy45MDEuMDRMMjI0IDIyNy40OTUgNjkuMjU1IDM4MS41MTZjLTkuMzc5IDkuMzM1LTI0LjU0NCA5LjMxNy0zMy45MDEtLjA0bC0yMi42NjctMjIuNjY3Yy05LjM3My05LjM3My05LjM3My0yNC41NjkgMC0zMy45NDFMMjA3LjAzIDEzMC41MjVjOS4zNzItOS4zNzMgMjQuNTY4LTkuMzczIDMzLjk0MS0uMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNoaWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyMCA3MmMwLTM5Ljc2NSAzMi4yMzUtNzIgNzItNzJzNzIgMzIuMjM1IDcyIDcyYzAgMzkuNzY0LTMyLjIzNSA3Mi03MiA3MnMtNzItMzIuMjM2LTcyLTcyem0yNTQuNjI3IDEuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDBMMjQyLjc0NSAxNjBIMTQxLjI1NEw1NC42MjcgNzMuMzczYy0xMi40OTYtMTIuNDk3LTMyLjc1OC0xMi40OTctNDUuMjU0IDAtMTIuNDk3IDEyLjQ5Ny0xMi40OTcgMzIuNzU4IDAgNDUuMjU1TDEwNCAyMTMuMjU0VjQ4MGMwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMTZjMTcuNjczIDAgMzItMTQuMzI3IDMyLTMyVjM2OGgxNnYxMTJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyaDE2YzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMlYyMTMuMjU0bDk0LjYyNy05NC42MjdjMTIuNDk3LTEyLjQ5NyAxMi40OTctMzIuNzU3IDAtNDUuMjU0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNodXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQuNDYgMjQ2LjY4TDM1MiAxNzkuMlYxMjhoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQ4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OHY1MS4ybC0xMTIuNDYgNjcuNDhBMzEuOTk3IDMxLjk5NyAwIDAgMCAxNjAgMjc0LjEyVjUxMmg5NnYtOTZjMC0zNS4zNSAyOC42NS02NCA2NC02NHM2NCAyOC42NSA2NCA2NHY5Nmg5NlYyNzQuMTJjMC0xMS4yNC01LjktMjEuNjYtMTUuNTQtMjcuNDR6TTAgMzk1Ljk2VjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxMTJWMzIwTDE5LjM5IDM2Ni41NEEzMi4wMjQgMzIuMDI0IDAgMCAwIDAgMzk1Ljk2em02MjAuNjEtMjkuNDJMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmMwLTEyLjgtNy42My0yNC4zNy0xOS4zOS0yOS40MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDaXJjbGVOb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzkuMDU2djE2LjY1OWMwIDEwLjgwNCA3LjI4MSAyMC4xNTkgMTcuNjg2IDIzLjA2NkMzODMuMjA0IDEwMC40MzQgNDQwIDE3MS41MTggNDQwIDI1NmMwIDEwMS42ODktODIuMjk1IDE4NC0xODQgMTg0LTEwMS42ODkgMC0xODQtODIuMjk1LTE4NC0xODQgMC04NC40NyA1Ni43ODYtMTU1LjU2NCAxMzQuMzEyLTE3Ny4yMTlDMjE2LjcxOSA3NS44NzQgMjI0IDY2LjUxNyAyMjQgNTUuNzEyVjM5LjA2NGMwLTE1LjcwOS0xNC44MzQtMjcuMTUzLTMwLjA0Ni0yMy4yMzRDODYuNjAzIDQzLjQ4MiA3LjM5NCAxNDEuMjA2IDguMDAzIDI1Ny4zMzJjLjcyIDEzNy4wNTIgMTExLjQ3NyAyNDYuOTU2IDI0OC41MzEgMjQ2LjY2N0MzOTMuMjU1IDUwMy43MTEgNTA0IDM5Mi43ODggNTA0IDI1NmMwLTExNS42MzMtNzkuMTQtMjEyLjc3OS0xODYuMjExLTI0MC4yMzZDMzAyLjY3OCAxMS44ODkgMjg4IDIzLjQ1NiAyODggMzkuMDU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNpdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjE2IDE5Mkg0ODBWMjRjMC0xMy4yNi0xMC43NC0yNC0yNC0yNEgzMTJjLTEzLjI2IDAtMjQgMTAuNzQtMjQgMjR2NzJoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2ODBoLTY0VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDgwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY4MEgyNGMtMTMuMjYgMC0yNCAxMC43NC0yNCAyNHYzNjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYyMTZjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTI4IDQwNGMwIDYuNjMtNS4zNyAxMi0xMiAxMkg3NmMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEySDc2Yy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJINzZjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTI4IDE5MmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMC05NmMwIDYuNjMtNS4zNyAxMi0xMiAxMmgtNDBjLTYuNjMgMC0xMi01LjM3LTEyLTEydi00MGMwLTYuNjMgNS4zNy0xMiAxMi0xMmg0MGM2LjYzIDAgMTIgNS4zNyAxMiAxMnY0MHptMTYwIDk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJ2LTQwYzAtNi42MyA1LjM3LTEyIDEyLTEyaDQwYzYuNjMgMCAxMiA1LjM3IDEyIDEydjQwem0wLTk2YzAgNi42My01LjM3IDEyLTEyIDEyaC00MGMtNi42MyAwLTEyLTUuMzctMTItMTJWNzZjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTE2MCAyODhjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6bTAtOTZjMCA2LjYzLTUuMzcgMTItMTIgMTJoLTQwYy02LjYzIDAtMTItNS4zNy0xMi0xMnYtNDBjMC02LjYzIDUuMzctMTIgMTItMTJoNDBjNi42MyAwIDEyIDUuMzcgMTIgMTJ2NDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xpbmljTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTE1TDY5LjQ3IDMwNy43MWMtMS42MiAxLjQ2LTMuNjkgMi4xNC01LjQ3IDMuMzVWNDk2YTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlYzMTEuMWMtMS43LTEuMTYtMy43Mi0xLjgyLTUuMjYtMy4yem05NiAyNjFhOCA4IDAgMCAxLTggOGgtNTZ2NTZhOCA4IDAgMCAxLTggOGgtNDhhOCA4IDAgMCAxLTgtOHYtNTZoLTU2YTggOCAwIDAgMS04LTh2LTQ4YTggOCAwIDAgMSA4LThoNTZ2LTU2YTggOCAwIDAgMSA4LThoNDhhOCA4IDAgMCAxIDggOHY1Nmg1NmE4IDggMCAwIDEgOCA4em0xODYuNjktMTM5LjcybC0yNTUuOTQtMjI2YTM5Ljg1IDM5Ljg1IDAgMCAwLTUzLjQ1IDBsLTI1NiAyMjZhMTYgMTYgMCAwIDAtMS4yMSAyMi42TDI1LjUgMjgyLjdhMTYgMTYgMCAwIDAgMjIuNiAxLjIxTDI3Ny40MiA4MS42M2ExNiAxNiAwIDAgMSAyMS4xNyAwTDUyNy45MSAyODMuOWExNiAxNiAwIDAgMCAyMi42LTEuMjFsMjEuNC0yMy44MmExNiAxNiAwIDAgMC0xLjIyLTIyLjU5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsaXBib2FyZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE5MiA0MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNC0yNC0xMC43LTI0LTI0IDEwLjctMjQgMjQtMjR6bTEyMS4yIDIzMS44bC0xNDMgMTQxLjhjLTQuNyA0LjctMTIuMyA0LjYtMTctLjFsLTgyLjYtODMuM2MtNC43LTQuNy00LjYtMTIuMy4xLTE3TDk5LjEgMjg1YzQuNy00LjcgMTIuMy00LjYgMTcgLjFsNDYgNDYuNCAxMDYtMTA1LjJjNC43LTQuNyAxMi4zLTQuNiAxNyAuMWwyOC4yIDI4LjRjNC43IDQuOCA0LjYgMTIuMy0uMSAxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmRMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiA2NGgtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRzLTY0IDI4LjctNjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTk2IDQyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6bTAtOTZjLTEzLjMgMC0yNC0xMC43LTI0LTI0czEwLjctMjQgMjQtMjQgMjQgMTAuNyAyNCAyNC0xMC43IDI0LTI0IDI0em0wLTk2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjQtMTAuNyAyNC0yNCAyNHptOTYtMTkyYzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptMTI4IDM2OGMwIDQuNC0zLjYgOC04IDhIMTY4Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2em0wLTk2YzAgNC40LTMuNiA4LTggOEgxNjhjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbGlwYm9hcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDExMnYzNTJjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg4MGMwLTM1LjI5IDI4LjcxLTY0IDY0LTY0czY0IDI4LjcxIDY0IDY0aDgwYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTE5MiA0MGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0bTk2IDExNHYtMjBhNiA2IDAgMCAwLTYtNkgxMDJhNiA2IDAgMCAwLTYgNnYyMGE2IDYgMCAwIDAgNiA2aDE4MGE2IDYgMCAwIDAgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1Niw4QzExOSw4LDgsMTE5LDgsMjU2UzExOSw1MDQsMjU2LDUwNCw1MDQsMzkzLDUwNCwyNTYsMzkzLDgsMjU2LDhabTkyLjQ5LDMxM2gwbC0yMCwyNWExNiwxNiwwLDAsMS0yMi40OSwyLjVoMGwtNjctNDkuNzJhNDAsNDAsMCwwLDEtMTUtMzEuMjNWMTEyYTE2LDE2LDAsMCwxLDE2LTE2aDMyYTE2LDE2LDAsMCwxLDE2LDE2VjI1Nmw1OCw0Mi41QTE2LDE2LDAsMCwxLDM0OC40OSwzMjFaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OEgxNzZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWNDhjMC0yNi41MSAyMS40OS00OCA0OC00OGgyODhNMTc2IDQxNmMtNDQuMTEyIDAtODAtMzUuODg4LTgwLTgwVjEyOEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyODhjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhIMTc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3NlZENhcHRpb25pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjI4OGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yMTguMSAyODcuN2MyLjgtMi41IDcuMS0yLjEgOS4yLjlsMTkuNSAyNy43YzEuNyAyLjQgMS41IDUuNi0uNSA3LjctNTMuNiA1Ni44LTE3Mi44IDMyLjEtMTcyLjgtNjcuOSAwLTk3LjMgMTIxLjctMTE5LjUgMTcyLjUtNzAuMSAyLjEgMiAyLjUgMy4yIDEgNS43bC0xNy41IDMwLjVjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIuMSA0OCA1MS4xIDcwLjUgOTIuMyAzMi42em0xOTAuNCAwYzIuOC0yLjUgNy4xLTIuMSA5LjIuOWwxOS41IDI3LjdjMS43IDIuNCAxLjUgNS42LS41IDcuNy01My41IDU2LjktMTcyLjcgMzIuMS0xNzIuNy02Ny45IDAtOTcuMyAxMjEuNy0xMTkuNSAxNzIuNS03MC4xIDIuMSAyIDIuNSAzLjIgMSA1LjdMNDIwIDIyMi4yYy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWREb3dubG9hZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6bS0xMzIuOSA4OC43TDI5OS4zIDQyMC43Yy02LjIgNi4yLTE2LjQgNi4yLTIyLjYgMEwxNzEuMyAzMTUuM2MtMTAuMS0xMC4xLTIuOS0yNy4zIDExLjMtMjcuM0gyNDhWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ2MTEyaDY1LjRjMTQuMiAwIDIxLjQgMTcuMiAxMS4zIDI3LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRNZWF0YmFsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAzNTJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em00MTYgMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDhzMjEuNSA0OCA0OCA0OCA0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDh6bS0xMTkgMTEuMWM0LjYtMTQuNSAxLjYtMzAuOC05LjgtNDIuMy0xMS41LTExLjUtMjcuOC0xNC40LTQyLjMtOS45LTctMTMuNS0yMC43LTIzLTM2LjktMjNzLTI5LjkgOS41LTM2LjkgMjNjLTE0LjUtNC42LTMwLjgtMS42LTQyLjMgOS45LTExLjUgMTEuNS0xNC40IDI3LjgtOS45IDQyLjMtMTMuNSA3LTIzIDIwLjctMjMgMzYuOXM5LjUgMjkuOSAyMyAzNi45Yy00LjYgMTQuNS0xLjYgMzAuOCA5LjkgNDIuMyA4LjIgOC4yIDE4LjkgMTIuMyAyOS43IDEyLjMgNC4zIDAgOC41LTEuMSAxMi42LTIuNSA3IDEzLjUgMjAuNyAyMyAzNi45IDIzczI5LjktOS41IDM2LjktMjNjNC4xIDEuMyA4LjMgMi41IDEyLjYgMi41IDEwLjggMCAyMS41LTQuMSAyOS43LTEyLjMgMTEuNS0xMS41IDE0LjQtMjcuOCA5LjgtNDIuMyAxMy41LTcgMjMtMjAuNyAyMy0zNi45cy05LjUtMjkuOS0yMy0zNi45ek01MTIgMjI0YzAtNTMtNDMtOTYtOTYtOTYtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjEgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoNDMuNGMzLjYtOCA4LjQtMTUuNCAxNC44LTIxLjggMTMuNS0xMy41IDMxLjUtMjEuMSA1MC44LTIxLjMgMTMuNS0xMy4yIDMxLjctMjAuOSA1MS0yMC45czM3LjUgNy43IDUxIDIwLjljMTkuMy4yIDM3LjMgNy44IDUwLjggMjEuMyA2LjQgNi40IDExLjMgMTMuOCAxNC44IDIxLjhINDE2YzUzIDAgOTYtNDMgOTYtOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRNb29uUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMyNy42IDIzMi45IDAgMjY1LjIgMCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0yMTcuNC0xLjdjLTcwLjQgMTMuMy0xMzUtNDAuMy0xMzUtMTEwLjggMC00MC42IDIxLjktNzggNTcuNS05OC4xIDUuNS0zLjEgNC4xLTExLjQtMi4xLTEyLjVDNDc5LjYuOCA0NzAuNyAwIDQ2MS44IDBjLTc3LjkgMC0xNDEuMSA2MS4yLTE0NC40IDEzNy45IDI2LjcgMTEuOSA0OC4yIDMzLjggNTguOSA2MS43IDM3LjEgMTQuMyA2NCA0Ny40IDcwLjIgODYuOCA1LjEuNSAxMCAxLjUgMTUuMiAxLjUgNDQuNyAwIDg1LjYtMjAuMiAxMTIuNi01My4zIDQuMi00LjgtLjItMTItNi40LTEwLjh6TTM2NC41IDQxOC4xYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZE1vb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQyLjggMzUyLjdjNS43LTkuNiA5LjItMjAuNyA5LjItMzIuNyAwLTM1LjMtMjguNy02NC02NC02NC0xNy4yIDAtMzIuOCA2LjktNDQuMyAxNy45LTE2LjMtMjkuNi00Ny41LTQ5LjktODMuNy00OS45LTUzIDAtOTYgNDMtOTYgOTYgMCAyIC41IDMuOC42IDUuN0MyNy4xIDMzOC44IDAgMzc0LjEgMCA0MTZjMCA1MyA0MyA5NiA5NiA5NmgyNDBjNDQuMiAwIDgwLTM1LjggODAtODAgMC00MS45LTMyLjMtNzUuOC03My4yLTc5LjN6bTIyMi41LTU0LjNjLTkzLjEgMTcuNy0xNzguNS01My43LTE3OC41LTE0Ny43IDAtNTQuMiAyOS0xMDQgNzYuMS0xMzAuOCA3LjMtNC4xIDUuNC0xNS4xLTIuOC0xNi43QzQ0OC40IDEuMSA0MzYuNyAwIDQyNSAwIDMxOS4xIDAgMjMzLjEgODUuOSAyMzMuMSAxOTJjMCA4LjUuNyAxNi44IDEuOCAyNSA1LjkgNC4zIDExLjYgOC45IDE2LjcgMTQuMiAxMS40LTQuNyAyMy43LTcuMiAzNi40LTcuMiA1Mi45IDAgOTYgNDMuMSA5NiA5NiAwIDMuNi0uMiA3LjItLjYgMTAuNyAyMy42IDEwLjggNDIuNCAyOS41IDUzLjUgNTIuNiA1NC40LTMuNCAxMDMuNy0yOS4zIDEzNy4xLTcwLjQgNS4zLTYuNS0uNS0xNi4xLTguNy0xNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTI4Yy0uNiAwLTEuMS4yLTEuNi4yIDEuMS01LjIgMS42LTEwLjYgMS42LTE2LjIgMC00NC4yLTM1LjgtODAtODAtODAtMjQuNiAwLTQ2LjMgMTEuMy02MSAyOC44QzI1Ni40IDI0LjggMjE5LjMgMCAxNzYgMCAxMTQuMSAwIDY0IDUwLjEgNjQgMTEyYzAgNy4zLjggMTQuMyAyLjEgMjEuMkMyNy44IDE0NS44IDAgMTgxLjUgMCAyMjRjMCA1MyA0MyA5NiA5NiA5NmgzMjBjNTMgMCA5Ni00MyA5Ni05NnMtNDMtOTYtOTYtOTZ6TTg4IDM3NC4yYy0xMi44IDQ0LjQtNDAgNTYuNC00MCA4Ny43IDAgMjcuNyAyMS41IDUwLjEgNDggNTAuMXM0OC0yMi40IDQ4LTUwLjFjMC0zMS40LTI3LjItNDMuMS00MC04Ny43LTIuMi04LjEtMTMuNS04LjUtMTYgMHptMTYwIDBjLTEyLjggNDQuNC00MCA1Ni40LTQwIDg3LjcgMCAyNy43IDIxLjUgNTAuMSA0OCA1MC4xczQ4LTIyLjQgNDgtNTAuMWMwLTMxLjQtMjcuMi00My4xLTQwLTg3LjctMi4yLTguMS0xMy41LTguNS0xNiAwem0xNjAgMGMtMTIuOCA0NC40LTQwIDU2LjQtNDAgODcuNyAwIDI3LjcgMjEuNSA1MC4xIDQ4IDUwLjFzNDgtMjIuNCA0OC01MC4xYzAtMzEuNC0yNy4yLTQzLjEtNDAtODcuNy0yLjItOC4xLTEzLjUtOC41LTE2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTaG93ZXJzSGVhdnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTgzLjkgMzcwLjFjLTcuNi00LjQtMTcuNC0xLjgtMjEuOCA2bC02NCAxMTJjLTQuNCA3LjctMS43IDE3LjUgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDY0LTExMmM0LjQtNy42IDEuNy0xNy40LTYtMjEuOHptOTYgMGMtNy42LTQuNC0xNy40LTEuOC0yMS44IDZsLTY0IDExMmMtNC40IDcuNy0xLjcgMTcuNSA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsNjQtMTEyYzQuNC03LjYgMS43LTE3LjQtNi0yMS44em0tMTkyIDBjLTcuNi00LjQtMTcuNC0xLjgtMjEuOCA2bC02NCAxMTJjLTQuNCA3LjctMS43IDE3LjUgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDY0LTExMmM0LjQtNy42IDEuNy0xNy40LTYtMjEuOHptMzg0IDBjLTcuNi00LjQtMTcuNC0xLjgtMjEuOCA2bC02NCAxMTJjLTQuNCA3LjctMS43IDE3LjUgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDY0LTExMmM0LjQtNy42IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjQtMTcuNC0xLjgtMjEuOCA2bC02NCAxMTJjLTQuNCA3LjctMS43IDE3LjUgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDY0LTExMmM0LjQtNy42IDEuNy0xNy40LTYtMjEuOHpNNDE2IDEyOGMtLjYgMC0xLjEuMi0xLjYuMiAxLjEtNS4yIDEuNi0xMC42IDEuNi0xNi4yIDAtNDQuMi0zNS44LTgwLTgwLTgwLTI0LjYgMC00Ni4zIDExLjMtNjEgMjguOEMyNTYuNCAyNC44IDIxOS4zIDAgMTc2IDAgMTE0LjIgMCA2NCA1MC4xIDY0IDExMmMwIDcuMy44IDE0LjMgMi4xIDIxLjJDMjcuOCAxNDUuOCAwIDE4MS41IDAgMjI0YzAgNTMgNDMgOTYgOTYgOTZoMzIwYzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkU3VuUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNSAyMjUuNWMtNi45LTM3LjItMzkuMy02NS41LTc4LjUtNjUuNS0xMi4zIDAtMjMuOSAzLTM0LjMgOC0xNy40LTI0LjEtNDUuNi00MC03Ny43LTQwLTUzIDAtOTYgNDMtOTYgOTYgMCAuNS4yIDEuMS4yIDEuNkMxODcuNiAyMzMgMTYwIDI2NS4yIDE2MCAzMDRjMCA0NC4yIDM1LjggODAgODAgODBoMjU2YzQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtMzkuMi0yOC4yLTcxLjctNjUuNS03OC41em0tMzg2LjQgMzQuNGMtMzcuNC0zNy40LTM3LjQtOTguMyAwLTEzNS44IDM0LjYtMzQuNiA4OS4xLTM2LjggMTI2LjctNy40IDIwLTEyLjkgNDMuNi0yMC43IDY5LjItMjAuNy43IDAgMS4zLjIgMiAuMmw4LjktMjYuN2MzLjQtMTAuMi02LjMtMTkuOC0xNi41LTE2LjRsLTc1LjMgMjUuMS0zNS41LTcxYy00LjgtOS42LTE4LjUtOS42LTIzLjMgMGwtMzUuNSA3MS03NS4zLTI1LjFjLTEwLjItMy40LTE5LjggNi4zLTE2LjQgMTYuNWwyNS4xIDc1LjMtNzEgMzUuNWMtOS42IDQuOC05LjYgMTguNSAwIDIzLjNsNzEgMzUuNS0yNS4xIDc1LjNjLTMuNCAxMC4yIDYuMyAxOS44IDE2LjUgMTYuNWw1OS4yLTE5LjdjLS4yLTIuNC0uNy00LjctLjctNy4yIDAtMTIuNSAyLjMtMjQuNSA2LjItMzUuOS0zLjYtMi43LTcuMS01LjItMTAuMi04LjN6bTY5LjgtNThjNC4zLTI0LjUgMTUuOC00Ni40IDMxLjktNjQtOS44LTYuMi0yMS40LTkuOS0zMy44LTkuOS0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDE4LjcgOC4yIDM1LjQgMjEuMSA0Ny4xIDExLjMtMTUuOSAyNi42LTI4LjkgNDQuOC0zNy4yem0zMzAuNiAyMTYuMmMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6bS05NiAwYy03LjYtNC4zLTE3LjQtMS44LTIxLjggNmwtMzYuNiA2NGMtNC40IDcuNy0xLjcgMTcuNCA2IDIxLjggMi41IDEuNCA1LjIgMi4xIDcuOSAyLjEgNS41IDAgMTAuOS0yLjkgMTMuOS04LjFsMzYuNi02NGM0LjMtNy43IDEuNy0xNy40LTYtMjEuOHptLTk2IDBjLTcuNi00LjMtMTcuNC0xLjgtMjEuOCA2bC0zNi42IDY0Yy00LjQgNy43LTEuNyAxNy40IDYgMjEuOCAyLjUgMS40IDUuMiAyLjEgNy45IDIuMSA1LjUgMCAxMC45LTIuOSAxMy45LTguMWwzNi42LTY0YzQuMy03LjcgMS43LTE3LjQtNi0yMS44em0tOTYgMGMtNy42LTQuMy0xNy40LTEuOC0yMS44IDZsLTM2LjYgNjRjLTQuNCA3LjctMS43IDE3LjQgNiAyMS44IDIuNSAxLjQgNS4yIDIuMSA3LjkgMi4xIDUuNSAwIDEwLjktMi45IDEzLjktOC4xbDM2LjYtNjRjNC4zLTcuNyAxLjctMTcuNC02LTIxLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ2xvdWRTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjIgMzI1LjdjLjItMS45LjgtMy43LjgtNS42IDAtMzUuMy0yOC43LTY0LTY0LTY0LTEyLjYgMC0yNC4yIDMuOC0zNC4xIDEwLTE3LjYtMzguOC01Ni41LTY2LTEwMS45LTY2LTYxLjggMC0xMTIgNTAuMS0xMTIgMTEyIDAgMyAuNyA1LjguOSA4LjctNDkuNiAzLjctODguOSA0NC43LTg4LjkgOTUuMyAwIDUzIDQzIDk2IDk2IDk2aDI3MmM1MyAwIDk2LTQzIDk2LTk2IDAtNDIuMS0yNy4yLTc3LjQtNjQuOC05MC40em0tNDMwLjQtMjIuNmMtNDMuNy00My43LTQzLjctMTE0LjcgMC0xNTguMyA0My43LTQzLjcgMTE0LjctNDMuNyAxNTguNCAwIDkuNyA5LjcgMTYuOSAyMC45IDIyLjMgMzIuNyA5LjgtMy43IDIwLjEtNiAzMC43LTcuNUwzODYgODEuMWM0LTExLjktNy4zLTIzLjEtMTkuMi0xOS4yTDI3OSA5MS4yIDIzNy41IDguNEMyMzItMi44IDIxNi0yLjggMjEwLjQgOC40TDE2OSA5MS4yIDgxLjEgNjEuOUM2OS4zIDU4IDU4IDY5LjMgNjEuOSA4MS4xbDI5LjMgODcuOC04Mi44IDQxLjVjLTExLjIgNS42LTExLjIgMjEuNSAwIDI3LjFsODIuOCA0MS40LTI5LjMgODcuOGMtNCAxMS45IDcuMyAyMy4xIDE5LjIgMTkuMmw3Ni4xLTI1LjNjNi4xLTEyLjQgMTQtMjMuNyAyMy42LTMzLjUtMTMuMS01LjQtMjUuNC0xMy40LTM2LTI0em0tNC44LTc5LjJjMCA0MC44IDI5LjMgNzQuOCA2Ny45IDgyLjMgOC00LjcgMTYuMy04LjggMjUuMi0xMS43IDUuNC00NC4zIDMxLTgyLjUgNjcuNC0xMDVDMjg3LjMgMTYwLjQgMjU4IDE0MCAyMjQgMTQwYy00Ni4zIDAtODQgMzcuNi04NCA4My45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNsb3VkVXBsb2FkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzNy42IDIyNi42YzQuMS0xMC43IDYuNC0yMi40IDYuNC0zNC42IDAtNTMtNDMtOTYtOTYtOTYtMTkuNyAwLTM4LjEgNi01My4zIDE2LjJDMzY3IDY0LjIgMzE1LjMgMzIgMjU2IDMyYy04OC40IDAtMTYwIDcxLjYtMTYwIDE2MCAwIDIuNy4xIDUuNC4yIDguMUM0MC4yIDIxOS44IDAgMjczLjIgMCAzMzZjMCA3OS41IDY0LjUgMTQ0IDE0NCAxNDRoMzY4YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4IDAtNjEuOS00NC0xMTMuNi0xMDIuNC0xMjUuNHpNMzkzLjQgMjg4SDMyOHYxMTJjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjI4OGgtNjUuNGMtMTQuMyAwLTIxLjQtMTcuMi0xMS4zLTI3LjNsMTA1LjQtMTA1LjRjNi4yLTYuMiAxNi40LTYuMiAyMi42IDBsMTA1LjQgMTA1LjRjMTAuMSAxMC4xIDIuOSAyNy4zLTExLjMgMjcuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDbG91ZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MzcuNiAyMjYuNmM0LjEtMTAuNyA2LjQtMjIuNCA2LjQtMzQuNiAwLTUzLTQzLTk2LTk2LTk2LTE5LjcgMC0zOC4xIDYtNTMuMyAxNi4yQzM2NyA2NC4yIDMxNS4zIDMyIDI1NiAzMmMtODguNCAwLTE2MCA3MS42LTE2MCAxNjAgMCAyLjcuMSA1LjQuMiA4LjFDNDAuMiAyMTkuOCAwIDI3My4yIDAgMzM2YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0aDM2OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOCAwLTYxLjktNDQtMTEzLjYtMTAyLjQtMTI1LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ja3RhaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDQ2NGgtNTZWMzM4Ljc4bDE2OC43NC0xNjguNzNjMTUuNTItMTUuNTIgNC41My00Mi4wNS0xNy40Mi00Mi4wNUgyNC42OGMtMjEuOTUgMC0zMi45NCAyNi41My0xNy40MiA0Mi4wNUwxNzYgMzM4Ljc4VjQ2NGgtNTZjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjQwYzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6TTQzMiAwYy02Mi42MSAwLTExNS4zNSA0MC4yLTEzNS4xOCA5Nmg1Mi41NGMxNi42NS0yOC41NSA0Ny4yNy00OCA4Mi42NC00OCA1Mi45MyAwIDk2IDQzLjA2IDk2IDk2cy00My4wNyA5Ni05NiA5NmMtMTQuMDQgMC0yNy4yOS0zLjItMzkuMzItOC42NGwtMzUuMjYgMzUuMjZDMzc5LjIzIDI3OS45MiA0MDQuNTkgMjg4IDQzMiAyODhjNzkuNTMgMCAxNDQtNjQuNDcgMTQ0LTE0NFM1MTEuNTMgMCA0MzIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb2RlQnJhbmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxNDRjMC00NC4yLTM1LjgtODAtODAtODBzLTgwIDM1LjgtODAgODBjMCAzNi40IDI0LjMgNjcuMSA1Ny41IDc2LjgtLjYgMTYuMS00LjIgMjguNS0xMSAzNi45LTE1LjQgMTkuMi00OS4zIDIyLjQtODUuMiAyNS43LTI4LjIgMi42LTU3LjQgNS40LTgxLjMgMTYuOXYtMTQ0YzMyLjUtMTAuMiA1Ni00MC41IDU2LTc2LjMgMC00NC4yLTM1LjgtODAtODAtODBTMCAzNS44IDAgODBjMCAzNS44IDIzLjUgNjYuMSA1NiA3Ni4zdjE5OS4zQzIzLjUgMzY1LjkgMCAzOTYuMiAwIDQzMmMwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtMzQtMjEuMi02My4xLTUxLjItNzQuNiAzLjEtNS4yIDcuOC05LjggMTQuOS0xMy40IDE2LjItOC4yIDQwLjQtMTAuNCA2Ni4xLTEyLjggNDIuMi0zLjkgOTAtOC40IDExOC4yLTQzLjQgMTQtMTcuNCAyMS4xLTM5LjggMjEuNi02Ny45IDMxLjYtMTAuOCA1NC40LTQwLjcgNTQuNC03NS45ek04MCA2NGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTYgNy4yLTE2IDE2LTE2em0wIDM4NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0yMjQtMzIwYzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2LTE2LTcuMi0xNi0xNiA3LjItMTYgMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguOSA1MTEuNWwtNjEtMTcuN2MtNi40LTEuOC0xMC04LjUtOC4yLTE0LjlMMzQ2LjIgOC43YzEuOC02LjQgOC41LTEwIDE0LjktOC4ybDYxIDE3LjdjNi40IDEuOCAxMCA4LjUgOC4yIDE0LjlMMjkzLjggNTAzLjNjLTEuOSA2LjQtOC41IDEwLjEtMTQuOSA4LjJ6bS0xMTQtMTEyLjJsNDMuNS00Ni40YzQuNi00LjkgNC4zLTEyLjctLjgtMTcuMkwxMTcgMjU2bDkwLjYtNzkuN2M1LjEtNC41IDUuNS0xMi4zLjgtMTcuMmwtNDMuNS00Ni40Yy00LjUtNC44LTEyLjEtNS4xLTE3LS41TDMuOCAyNDcuMmMtNS4xIDQuNy01LjEgMTIuOCAwIDE3LjVsMTQ0LjEgMTM1LjFjNC45IDQuNiAxMi41IDQuNCAxNy0uNXptMzI3LjIuNmwxNDQuMS0xMzUuMWM1LjEtNC43IDUuMS0xMi44IDAtMTcuNUw0OTIuMSAxMTIuMWMtNC44LTQuNS0xMi40LTQuMy0xNyAuNUw0MzEuNiAxNTljLTQuNiA0LjktNC4zIDEyLjcuOCAxNy4yTDUyMyAyNTZsLTkwLjYgNzkuN2MtNS4xIDQuNS01LjUgMTIuMy0uOCAxNy4ybDQzLjUgNDYuNGM0LjUgNC45IDEyLjEgNS4xIDE3IC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvZmZlZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0aDE5MmM1MyAwIDk2LTQzIDk2LTk2aDMyYzcwLjYgMCAxMjgtNTcuNCAxMjgtMTI4UzU4Mi42IDMyIDUxMiAzMkgxMjBjLTEzLjMgMC0yNCAxMC43LTI0IDI0djIzMmMwIDUzIDQzIDk2IDk2IDk2ek01MTIgOTZjMzUuMyAwIDY0IDI4LjcgNjQgNjRzLTI4LjcgNjQtNjQgNjRoLTMyVjk2aDMyem00Ny43IDM4NEg0OC4zYy00Ny42IDAtNjEtNjQtMzYtNjRoNTgzLjNjMjUgMCAxMS44IDY0LTM1LjkgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4Ny40IDMxNS43bC00Mi42LTI0LjZjNC4zLTIzLjIgNC4zLTQ3IDAtNzAuMmw0Mi42LTI0LjZjNC45LTIuOCA3LjEtOC42IDUuNS0xNC0xMS4xLTM1LjYtMzAtNjcuOC01NC43LTk0LjYtMy44LTQuMS0xMC01LjEtMTQuOC0yLjNMMzgwLjggMTEwYy0xNy45LTE1LjQtMzguNS0yNy4zLTYwLjgtMzUuMVYyNS44YzAtNS42LTMuOS0xMC41LTkuNC0xMS43LTM2LjctOC4yLTc0LjMtNy44LTEwOS4yIDAtNS41IDEuMi05LjQgNi4xLTkuNCAxMS43Vjc1Yy0yMi4yIDcuOS00Mi44IDE5LjgtNjAuOCAzNS4xTDg4LjcgODUuNWMtNC45LTIuOC0xMS0xLjktMTQuOCAyLjMtMjQuNyAyNi43LTQzLjYgNTguOS01NC43IDk0LjYtMS43IDUuNC42IDExLjIgNS41IDE0TDY3LjMgMjIxYy00LjMgMjMuMi00LjMgNDcgMCA3MC4ybC00Mi42IDI0LjZjLTQuOSAyLjgtNy4xIDguNi01LjUgMTQgMTEuMSAzNS42IDMwIDY3LjggNTQuNyA5NC42IDMuOCA0LjEgMTAgNS4xIDE0LjggMi4zbDQyLjYtMjQuNmMxNy45IDE1LjQgMzguNSAyNy4zIDYwLjggMzUuMXY0OS4yYzAgNS42IDMuOSAxMC41IDkuNCAxMS43IDM2LjcgOC4yIDc0LjMgNy44IDEwOS4yIDAgNS41LTEuMiA5LjQtNi4xIDkuNC0xMS43di00OS4yYzIyLjItNy45IDQyLjgtMTkuOCA2MC44LTM1LjFsNDIuNiAyNC42YzQuOSAyLjggMTEgMS45IDE0LjgtMi4zIDI0LjctMjYuNyA0My42LTU4LjkgNTQuNy05NC42IDEuNS01LjUtLjctMTEuMy01LjYtMTQuMXpNMjU2IDMzNmMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIuMSAxOTFsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBMNTUyIDYuM2MzLTUuMyA5LjQtNy41IDE1LjEtNS40IDExLjggNC40IDIyLjYgMTAuNyAzMi4xIDE4LjYgNC42IDMuOCA1LjggMTAuNSAyLjggMTUuN2wtOC4yIDE0LjNjNi45IDggMTIuMyAxNy4zIDE1LjkgMjcuNGgxNi41YzYgMCAxMS4yIDQuMyAxMi4yIDEwLjMgMiAxMiAyLjEgMjQuNiAwIDM3LjEtMSA2LTYuMiAxMC40LTEyLjIgMTAuNGgtMTYuNWMtMy42IDEwLjEtOSAxOS40LTE1LjkgMjcuNGw4LjIgMTQuM2MzIDUuMiAxLjkgMTEuOS0yLjggMTUuNy05LjUgNy45LTIwLjQgMTQuMi0zMi4xIDE4LjYtNS43IDIuMS0xMi4xLS4xLTE1LjEtNS40bC04LjItMTQuM2MtMTAuNCAxLjktMjEuMiAxLjktMzEuNyAwem0tMTAuNS01OC44YzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNy04Mi40IDE0LjMtNTIuOCA1Mi44ek0zODYuMyAyODYuMWwzMy43IDE2LjhjMTAuMSA1LjggMTQuNSAxOC4xIDEwLjUgMjkuMS04LjkgMjQuMi0yNi40IDQ2LjQtNDIuNiA2NS44LTcuNCA4LjktMjAuMiAxMS4xLTMwLjMgNS4zbC0yOS4xLTE2LjhjLTE2IDEzLjctMzQuNiAyNC42LTU0LjkgMzEuN3YzMy42YzAgMTEuNi04LjMgMjEuNi0xOS43IDIzLjYtMjQuNiA0LjItNTAuNCA0LjQtNzUuOSAwLTExLjUtMi0yMC0xMS45LTIwLTIzLjZWNDE4Yy0yMC4zLTcuMi0zOC45LTE4LTU0LjktMzEuN0w3NCA0MDNjLTEwIDUuOC0yMi45IDMuNi0zMC4zLTUuMy0xNi4yLTE5LjQtMzMuMy00MS42LTQyLjItNjUuNy00LTEwLjkuNC0yMy4yIDEwLjUtMjkuMWwzMy4zLTE2LjhjLTMuOS0yMC45LTMuOS00Mi40IDAtNjMuNEwxMiAyMDUuOGMtMTAuMS01LjgtMTQuNi0xOC4xLTEwLjUtMjkgOC45LTI0LjIgMjYtNDYuNCA0Mi4yLTY1LjggNy40LTguOSAyMC4yLTExLjEgMzAuMy01LjNsMjkuMSAxNi44YzE2LTEzLjcgMzQuNi0yNC42IDU0LjktMzEuN1Y1Ny4xYzAtMTEuNSA4LjItMjEuNSAxOS42LTIzLjUgMjQuNi00LjIgNTAuNS00LjQgNzYtLjEgMTEuNSAyIDIwIDExLjkgMjAgMjMuNnYzMy42YzIwLjMgNy4yIDM4LjkgMTggNTQuOSAzMS43bDI5LjEtMTYuOGMxMC01LjggMjIuOS0zLjYgMzAuMyA1LjMgMTYuMiAxOS40IDMzLjIgNDEuNiA0Mi4xIDY1LjggNCAxMC45LjEgMjMuMi0xMCAyOS4xbC0zMy43IDE2LjhjMy45IDIxIDMuOSA0Mi41IDAgNjMuNXptLTExNy42IDIxLjFjNTkuMi03Ny0yOC43LTE2NC45LTEwNS43LTEwNS43LTU5LjIgNzcgMjguNyAxNjQuOSAxMDUuNyAxMDUuN3ptMjQzLjQgMTgyLjdsLTguMiAxNC4zYy0zIDUuMy05LjQgNy41LTE1LjEgNS40LTExLjgtNC40LTIyLjYtMTAuNy0zMi4xLTE4LjYtNC42LTMuOC01LjgtMTAuNS0yLjgtMTUuN2w4LjItMTQuM2MtNi45LTgtMTIuMy0xNy4zLTE1LjktMjcuNGgtMTYuNWMtNiAwLTExLjItNC4zLTEyLjItMTAuMy0yLTEyLTIuMS0yNC42IDAtMzcuMSAxLTYgNi4yLTEwLjQgMTIuMi0xMC40aDE2LjVjMy42LTEwLjEgOS0xOS40IDE1LjktMjcuNGwtOC4yLTE0LjNjLTMtNS4yLTEuOS0xMS45IDIuOC0xNS43IDkuNS03LjkgMjAuNC0xNC4yIDMyLjEtMTguNiA1LjctMi4xIDEyLjEuMSAxNS4xIDUuNGw4LjIgMTQuM2MxMC41LTEuOSAyMS4yLTEuOSAzMS43IDBsOC4yLTE0LjNjMy01LjMgOS40LTcuNSAxNS4xLTUuNCAxMS44IDQuNCAyMi42IDEwLjcgMzIuMSAxOC42IDQuNiAzLjggNS44IDEwLjUgMi44IDE1LjdsLTguMiAxNC4zYzYuOSA4IDEyLjMgMTcuMyAxNS45IDI3LjRoMTYuNWM2IDAgMTEuMiA0LjMgMTIuMiAxMC4zIDIgMTIgMi4xIDI0LjYgMCAzNy4xLTEgNi02LjIgMTAuNC0xMi4yIDEwLjRoLTE2LjVjLTMuNiAxMC4xLTkgMTkuNC0xNS45IDI3LjRsOC4yIDE0LjNjMyA1LjIgMS45IDExLjktMi44IDE1LjctOS41IDcuOS0yMC40IDE0LjItMzIuMSAxOC42LTUuNyAyLjEtMTIuMS0uMS0xNS4xLTUuNGwtOC4yLTE0LjNjLTEwLjQgMS45LTIxLjIgMS45LTMxLjcgMHpNNTAxLjYgNDMxYzM4LjUgMjkuNiA4Mi40LTE0LjMgNTIuOC01Mi44LTM4LjUtMjkuNi04Mi40IDE0LjMtNTIuOCA1Mi44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvaW5zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNDA1LjNWNDQ4YzAgMzUuMyA4NiA2NCAxOTIgNjRzMTkyLTI4LjcgMTkyLTY0di00Mi43QzM0Mi43IDQzNC40IDI2Ny4yIDQ0OCAxOTIgNDQ4UzQxLjMgNDM0LjQgMCA0MDUuM3pNMzIwIDEyOGMxMDYgMCAxOTItMjguNyAxOTItNjRTNDI2IDAgMzIwIDAgMTI4IDI4LjcgMTI4IDY0czg2IDY0IDE5MiA2NHpNMCAzMDAuNFYzNTJjMCAzNS4zIDg2IDY0IDE5MiA2NHMxOTItMjguNyAxOTItNjR2LTUxLjZjLTQxLjMgMzQtMTE2LjkgNTEuNi0xOTIgNTEuNlM0MS4zIDMzNC40IDAgMzAwLjR6bTQxNiAxMWM1Ny4zLTExLjEgOTYtMzEuNyA5Ni01NS40di00Mi43Yy0yMy4yIDE2LjQtNTcuMyAyNy42LTk2IDM0LjV2NjMuNnpNMTkyIDE2MEM4NiAxNjAgMCAxOTUuOCAwIDI0MHM4NiA4MCAxOTIgODAgMTkyLTM1LjggMTkyLTgwLTg2LTgwLTE5Mi04MHptMjE5LjMgNTYuM2M2MC0xMC44IDEwMC43LTMyIDEwMC43LTU2LjN2LTQyLjdjLTM1LjUgMjUuMS05Ni41IDM4LjYtMTYwLjcgNDEuOCAyOS41IDE0LjMgNTEuMiAzMy41IDYwIDU3LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTIyNCA0MTZINjRWMTYwaDE2MHYyNTZ6bTIyNCAwSDI4OFYxNjBoMTYwdjI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHYyODhjMCAzNS4zIDI4LjcgNjQgNjQgNjRoOTZ2ODRjMCA5LjggMTEuMiAxNS41IDE5LjEgOS43TDMwNCA0MTZoMTQ0YzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0YzAtMzUuMy0yOC43LTY0LTY0LTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnREb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42MiAzMiAwIDEyNS4xMiAwIDI0MGMwIDQ5LjU2IDIxLjQxIDk1LjAxIDU3LjAyIDEzMC43NEM0NC40NiA0MjEuMDUgMi43IDQ2NS45NyAyLjIgNDY2LjVBNy45OTUgNy45OTUgMCAwIDAgOCA0ODBjNjYuMjYgMCAxMTUuOTktMzEuNzUgMTQwLjYtNTEuMzhDMTgxLjI5IDQ0MC45MyAyMTcuNTkgNDQ4IDI1NiA0NDhjMTQxLjM4IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM4IDMyIDI1NiAzMnptMjQgMzAyLjQ0VjM1MmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNy43M2MtMTEuNDItMS4zNS0yMi4yOC01LjE5LTMxLjc4LTExLjQ2LTYuMjItNC4xMS02LjgyLTEzLjExLTEuNTUtMTguMzhsMTcuNTItMTcuNTJjMy43NC0zLjc0IDkuMzEtNC4yNCAxNC4xMS0yLjAzIDMuMTggMS40NiA2LjY2IDIuMjIgMTAuMjYgMi4yMmgzMi43OGM0LjY2IDAgOC40NC0zLjc4IDguNDQtOC40MiAwLTMuNzUtMi41Mi03LjA4LTYuMTItOC4xMWwtNTAuMDctMTQuM2MtMjIuMjUtNi4zNS00MC4wMS0yNC43MS00Mi45MS00Ny42Ny00LjA1LTMyLjA3IDE5LjAzLTU5LjQzIDQ5LjMyLTYzLjA1VjEyOGMwLTguODQgNy4xNi0xNiAxNi0xNmgxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNy43M2MxMS40MiAxLjM1IDIyLjI4IDUuMTkgMzEuNzggMTEuNDYgNi4yMiA0LjExIDYuODIgMTMuMTEgMS41NSAxOC4zOGwtMTcuNTIgMTcuNTJjLTMuNzQgMy43NC05LjMxIDQuMjQtMTQuMTEgMi4wM2EyNC41MTYgMjQuNTE2IDAgMCAwLTEwLjI2LTIuMjJoLTMyLjc4Yy00LjY2IDAtOC40NCAzLjc4LTguNDQgOC40MiAwIDMuNzUgMi41MiA3LjA4IDYuMTIgOC4xMWw1MC4wNyAxNC4zYzIyLjI1IDYuMzYgNDAuMDEgMjQuNzEgNDIuOTEgNDcuNjcgNC4wNSAzMi4wNi0xOS4wMyA1OS40Mi00OS4zMiA2My4wNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguN1M0LjggNDgwIDggNDgwYzY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnpNMTI4IDI3MmMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOCAwYy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptMTI4IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAzMkMxMTQuNjIgMzIgMCAxMjUuMTIgMCAyNDBjMCA0OS41NiAyMS40MSA5NSA1NyAxMzAuNzRDNDQuNDYgNDIxLjA1IDIuNyA0NjYgMi4yIDQ2Ni41QTggOCAwIDAgMCA4IDQ4MGM2Ni4yNiAwIDExNi0zMS43NSAxNDAuNi01MS4zOEEzMDQuNjYgMzA0LjY2IDAgMCAwIDI1NiA0NDhjMTQxLjM5IDAgMjU2LTkzLjEyIDI1Ni0yMDhTMzk3LjM5IDMyIDI1NiAzMnptOTYgMjMyYTggOCAwIDAgMS04IDhoLTU2djU2YTggOCAwIDAgMS04IDhoLTQ4YTggOCAwIDAgMS04LTh2LTU2aC01NmE4IDggMCAwIDEtOC04di00OGE4IDggMCAwIDEgOC04aDU2di01NmE4IDggMCAwIDEgOC04aDQ4YTggOCAwIDAgMSA4IDh2NTZoNTZhOCA4IDAgMCAxIDggOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21tZW50U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgMjQwYzAgNDkuNiAyMS40IDk1IDU3IDEzMC43LTEyLjYgNTAuMy01NC4zIDk1LjItNTQuOCA5NS44LTIuMiAyLjMtMi44IDUuNy0xLjUgOC43IDEuMyAyLjkgNC4xIDQuOCA3LjMgNC44IDY2LjMgMCAxMTYtMzEuOCAxNDAuNi01MS40IDMyLjcgMTIuMyA2OSAxOS40IDEwNy40IDE5LjQgMjcuNCAwIDUzLjctMy42IDc4LjQtMTBMNzIuOSAxODYuNGMtNS42IDE3LjEtOC45IDM1LTguOSA1My42em01NjkuOCAyMTguMWwtMTE0LjQtODguNEM1NTQuNiAzMzQuMSA1NzYgMjg5LjIgNTc2IDI0MGMwLTExNC45LTExNC42LTIwOC0yNTYtMjA4LTY1LjEgMC0xMjQuMiAyMC4xLTE2OS40IDUyLjdMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC42IDMyIDAgMTI1LjEgMCAyNDBjMCA0OS42IDIxLjQgOTUgNTcgMTMwLjdDNDQuNSA0MjEuMSAyLjcgNDY2IDIuMiA0NjYuNWMtMi4yIDIuMy0yLjggNS43LTEuNSA4LjdTNC44IDQ4MCA4IDQ4MGM2Ni4zIDAgMTE2LTMxLjggMTQwLjYtNTEuNCAzMi43IDEyLjMgNjkgMTkuNCAxMDcuNCAxOS40IDE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tbWVudHNEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDE5MmMwLTg4LjM3LTkzLjEyLTE2MC0yMDgtMTYwUzAgMTAzLjYzIDAgMTkyYzAgMzQuMjcgMTQuMTMgNjUuOTUgMzcuOTcgOTEuOThDMjQuNjEgMzE0LjIyIDIuNTIgMzM4LjE2IDIuMiAzMzguNUE3Ljk5NSA3Ljk5NSAwIDAgMCA4IDM1MmMzNi41OCAwIDY2LjkzLTEyLjI1IDg4LjczLTI0Ljk4QzEyOC45MyAzNDIuNzYgMTY3LjAyIDM1MiAyMDggMzUyYzExNC44OCAwIDIwOC03MS42MyAyMDgtMTYwem0tMjI0IDk2di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWOTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNSA0NC40NC00Mi42NyA0NS4wN1YyODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptMzQ2LjAxIDEyMy45OUM1NjEuODcgMzg1Ljk2IDU3NiAzNTQuMjcgNTc2IDMyMGMwLTY2Ljk0LTUzLjQ5LTEyNC4yLTEyOS4zMy0xNDguMDcuODYgNi42IDEuMzMgMTMuMjkgMS4zMyAyMC4wNyAwIDEwNS44Ny0xMDcuNjYgMTkyLTI0MCAxOTItMTAuNzggMC0yMS4zMi0uNzctMzEuNzMtMS44OEMyMDcuOCA0MzkuNjMgMjgxLjc3IDQ4MCAzNjggNDgwYzQwLjk4IDAgNzkuMDctOS4yNCAxMTEuMjctMjQuOThDNTAxLjA3IDQ2Ny43NSA1MzEuNDIgNDgwIDU2OCA0ODBjMy4yIDAgNi4wOS0xLjkxIDcuMzQtNC44NCAxLjI3LTIuOTQuNjYtNi4zNC0xLjU1LTguNjctLjMxLS4zMy0yMi40Mi0yNC4yNC0zNS43OC01NC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbW1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAxOTJjMC04OC40LTkzLjEtMTYwLTIwOC0xNjBTMCAxMDMuNiAwIDE5MmMwIDM0LjMgMTQuMSA2NS45IDM4IDkyLTEzLjQgMzAuMi0zNS41IDU0LjItMzUuOCA1NC41LTIuMiAyLjMtMi44IDUuNy0xLjUgOC43UzQuOCAzNTIgOCAzNTJjMzYuNiAwIDY2LjktMTIuMyA4OC43LTI1IDMyLjIgMTUuNyA3MC4zIDI1IDExMS4zIDI1IDExNC45IDAgMjA4LTcxLjYgMjA4LTE2MHptMTIyIDIyMGMyMy45LTI2IDM4LTU3LjcgMzgtOTIgMC02Ni45LTUzLjUtMTI0LjItMTI5LjMtMTQ4LjEuOSA2LjYgMS4zIDEzLjMgMS4zIDIwLjEgMCAxMDUuOS0xMDcuNyAxOTItMjQwIDE5Mi0xMC44IDAtMjEuMy0uOC0zMS43LTEuOUMyMDcuOCA0MzkuNiAyODEuOCA0ODAgMzY4IDQ4MGM0MSAwIDc5LjEtOS4yIDExMS4zLTI1IDIxLjggMTIuNyA1Mi4xIDI1IDg4LjcgMjUgMy4yIDAgNi4xLTEuOSA3LjMtNC44IDEuMy0yLjkuNy02LjMtMS41LTguNy0uMy0uMy0yMi40LTI0LjItMzUuOC01NC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXBhY3REaXNjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTg4IDI1Nkg1NmMwLTEwNS45IDg2LjEtMTkyIDE5Mi0xOTJ2MzJjLTg4LjIgMC0xNjAgNzEuOC0xNjAgMTYwem0xNjAgOTZjLTUzIDAtOTYtNDMtOTYtOTZzNDMtOTYgOTYtOTYgOTYgNDMgOTYgOTYtNDMgOTYtOTYgOTZ6bTAtMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNS4zOCAyMzMuMzdjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjUgMTIuNDkgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDAgMTIuNS0xMi41IDEyLjUtMzIuNzYgMC00NS4yNS0xMi41LTEyLjQ5LTMyLjc2LTEyLjQ5LTQ1LjI1IDB6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTEyNi4xNCAxNDguMDVMMzA4LjE3IDMwMC40YTMxLjkzOCAzMS45MzggMCAwIDEtMTUuNzcgMTUuNzdsLTE0NC4zNCA2NS45N2MtMTYuNjUgNy42MS0zMy44MS05LjU1LTI2LjItMjYuMmw2NS45OC0xNDQuMzVhMzEuOTM4IDMxLjkzOCAwIDAgMSAxNS43Ny0xNS43N2wxNDQuMzQtNjUuOTdjMTYuNjUtNy42IDMzLjggOS41NSAyNi4xOSAyNi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUNvbXByZXNzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjg2IDQyNy4zMTRMMTA0IDMyOGwtMzIuOTIyLTMxLjAyOUM1NS45NTggMjgxLjg1MSA2Ni42NjYgMjU2IDg4LjA0OCAyNTZoMTEyQzIxMy4zMDMgMjU2IDIyNCAyNjYuNzQ1IDIyNCAyODB2MTEyYzAgMjEuMzgyLTI1LjgwMyAzMi4wOS00MC45MjIgMTYuOTcxTDE1MiAzNzZsLTk5LjMxNCA5OS4zMTRjLTYuMjQ4IDYuMjQ4LTE2LjM3OSA2LjI0OC0yMi42MjcgMEw0LjY4NiA0NDkuOTQxYy02LjI0OC02LjI0OC02LjI0OC0xNi4zNzkgMC0yMi42Mjd6TTQ0My4zMTQgODQuNjg2TDM0NCAxODRsMzIuOTIyIDMxLjAyOWMxNS4xMiAxNS4xMiA0LjQxMiA0MC45NzEtMTYuOTcgNDAuOTcxaC0xMTJDMjM0LjY5NyAyNTYgMjI0IDI0NS4yNTUgMjI0IDIzMlYxMjBjMC0yMS4zODIgMjUuODAzLTMyLjA5IDQwLjkyMi0xNi45NzFMMjk2IDEzNmw5OS4zMTQtOTkuMzE0YzYuMjQ4LTYuMjQ4IDE2LjM3OS02LjI0OCAyMi42MjcgMGwyNS4zNzMgMjUuMzczYzYuMjQ4IDYuMjQ4IDYuMjQ4IDE2LjM3OSAwIDIyLjYyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb21wcmVzc0Fycm93c0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDAgMjg4SDg4Yy0yMS40IDAtMzIuMSAyNS44LTE3IDQxbDMyLjkgMzEtOTkuMiA5OS4zYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNmwyNS40IDI1LjRjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBMMTUyIDQwOGwzMS4xIDMzYzE1LjEgMTUuMSA0MC45IDQuNCA0MC45LTE3VjMxMmMwLTEzLjMtMTAuNy0yNC0yNC0yNHptMTEyLTY0aDExMmMyMS40IDAgMzIuMS0yNS45IDE3LTQxbC0zMy0zMSA5OS4zLTk5LjNjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZMNDgxLjkgNC43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwzNjAgMTA0bC0zMS4xLTMzQzMxMy44IDU1LjkgMjg4IDY2LjYgMjg4IDg4djExMmMwIDEzLjMgMTAuNyAyNCAyNCAyNHptOTYgMTM2bDMzLTMxLjFjMTUuMS0xNS4xIDQuNC00MC45LTE3LTQwLjlIMzEyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxMTJjMCAyMS40IDI1LjkgMzIuMSA0MSAxN2wzMS0zMi45IDk5LjMgOTkuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwyNS40LTI1LjRjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZMNDA4IDM2MHpNMTgzIDcxLjFMMTUyIDEwNCA1Mi43IDQuN2MtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBMNC43IDMwLjFjLTYuMiA2LjItNi4yIDE2LjQgMCAyMi42TDEwNCAxNTJsLTMzIDMxLjFDNTUuOSAxOTguMiA2Ni42IDIyNCA4OCAyMjRoMTEyYzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMjEuMy0yNS45LTMyLTQxLTE2Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29tcHJlc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM2IDE5MkgzMTJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ0YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODRoODRjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptLTI3Ni0yNFY0NGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2ODRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0em0wIDMwMFYzNDRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptMTkyIDB2LTg0aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEySDMxMmMtMTMuMyAwLTI0IDEwLjctMjQgMjR2MTI0YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29uY2llcmdlQmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTMwLjU0VjExMmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlY4MGMwLTguODQtNy4xNi0xNi0xNi0xNmgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2djE4LjU0QzExNS40OSAxNDYuMTEgMzIgMjM5LjE4IDMyIDM1Mmg0NDhjMC0xMTIuODItODMuNDktMjA1Ljg5LTE5Mi0yMjEuNDZ6TTQ5NiAzODRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llQml0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuNTIgMjU1LjgyYy02OS45Ny0uODUtMTI2LjQ3LTU3LjY5LTEyNi40Ny0xMjcuODYtNzAuMTcgMC0xMjctNTYuNDktMTI3Ljg2LTEyNi40NS0yNy4yNi00LjE0LTU1LjEzLjMtNzkuNzIgMTIuODJsLTY5LjEzIDM1LjIyYTEzMi4yMjEgMTMyLjIyMSAwIDAgMC01Ny43OSA1Ny44MWwtMzUuMSA2OC44OGExMzIuNjQ1IDEzMi42NDUgMCAwIDAtMTIuODIgODAuOTVsMTIuMDggNzYuMjdhMTMyLjUyMSAxMzIuNTIxIDAgMCAwIDM3LjE2IDcyLjk2bDU0Ljc3IDU0Ljc2YTEzMi4wMzYgMTMyLjAzNiAwIDAgMCA3Mi43MSAzNy4wNmw3Ni43MSAxMi4xNWMyNy41MSA0LjM2IDU1LjctLjExIDgwLjUzLTEyLjc2bDY5LjEzLTM1LjIxYTEzMi4yNzMgMTMyLjI3MyAwIDAgMCA1Ny43OS01Ny44MWwzNS4xLTY4Ljg4YzEyLjU2LTI0LjY0IDE3LjAxLTUyLjU4IDEyLjkxLTc5Ljkxek0xNzYgMzY4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0zMi0xNjBjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE2MCAxMjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29va2llIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC4zNyAyNTQuNzlsLTEyLjA4LTc2LjI2YTEzMi40OTMgMTMyLjQ5MyAwIDAgMC0zNy4xNi03Mi45NWwtNTQuNzYtNTQuNzVjLTE5LjczLTE5LjcyLTQ1LjE4LTMyLjctNzIuNzEtMzcuMDVsLTc2LjctMTIuMTVjLTI3LjUxLTQuMzYtNTUuNjkuMTEtODAuNTIgMTIuNzZMMTA3LjMyIDQ5LjZhMTMyLjI1IDEzMi4yNSAwIDAgMC01Ny43OSA1Ny44bC0zNS4xIDY4Ljg4YTEzMi42MDIgMTMyLjYwMiAwIDAgMC0xMi44MiA4MC45NGwxMi4wOCA3Ni4yN2ExMzIuNDkzIDEzMi40OTMgMCAwIDAgMzcuMTYgNzIuOTVsNTQuNzYgNTQuNzVhMTMyLjA4NyAxMzIuMDg3IDAgMCAwIDcyLjcxIDM3LjA1bDc2LjcgMTIuMTRjMjcuNTEgNC4zNiA1NS42OS0uMTEgODAuNTItMTIuNzVsNjkuMTItMzUuMjFhMTMyLjMwMiAxMzIuMzAyIDAgMCAwIDU3Ljc5LTU3LjhsMzUuMS02OC44N2MxMi43MS0yNC45NiAxNy4yLTUzLjMgMTIuODItODAuOTZ6TTE3NiAzNjhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTMyLTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTYwIDEyOGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDb3B5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0NDh2NDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMTIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGg3MnYyOTZjMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDE2OHptMC0zNDRWMEgxNTJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYzNjhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDI3MmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTI4SDM0NGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTEyMC45NzEtMzEuMDI5TDM3NS4wMjkgNy4wMjlBMjQgMjQgMCAwIDAgMzU4LjA1OSAwSDM1MnY5Nmg5NnYtNi4wNTlhMjQgMjQgMCAwIDAtNy4wMjktMTYuOTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ29weXJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMTE3LjEzNCAzNDYuNzUzYy0xLjU5MiAxLjg2Ny0zOS43NzYgNDUuNzMxLTEwOS44NTEgNDUuNzMxLTg0LjY5MiAwLTE0NC40ODQtNjMuMjYtMTQ0LjQ4NC0xNDUuNTY3IDAtODEuMzAzIDYyLjAwNC0xNDMuNDAxIDE0My43NjItMTQzLjQwMSA2Ni45NTcgMCAxMDEuOTY1IDM3LjMxNSAxMDMuNDIyIDM4LjkwNGExMiAxMiAwIDAgMSAxLjIzOCAxNC42MjNsLTIyLjM4IDM0LjY1NWMtNC4wNDkgNi4yNjctMTIuNzc0IDcuMzUxLTE4LjIzNCAyLjI5NS0uMjMzLS4yMTQtMjYuNTI5LTIzLjg4LTYxLjg4LTIzLjg4LTQ2LjExNiAwLTczLjkxNiAzMy41NzUtNzMuOTE2IDc2LjA4MiAwIDM5LjYwMiAyNS41MTQgNzkuNjkyIDc0LjI3NyA3OS42OTIgMzguNjk3IDAgNjUuMjgtMjguMzM4IDY1LjU0NC0yOC42MjUgNS4xMzItNS41NjUgMTQuMDU5LTUuMDMzIDE4LjUwOCAxLjA1M2wyNC41NDcgMzMuNTcyYTEyLjAwMSAxMi4wMDEgMCAwIDEtLjU1MyAxNC44NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ291Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDIyNHY2NGgzMjB2LTY0YzAtMzUuMyAyOC43LTY0IDY0LTY0aDMyYzAtNTMtNDMtOTYtOTYtOTZIMTYwYy01MyAwLTk2IDQzLTk2IDk2aDMyYzM1LjMgMCA2NCAyOC43IDY0IDY0em00MTYtMzJoLTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NkgxMjh2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NCAwIDIzLjYgMTMgNDQgMzIgNTUuMVY0MzJjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMzg0djE2YzAgOC44IDcuMiAxNiAxNiAxNmg2NGM4LjggMCAxNi03LjIgMTYtMTZWMzExLjFjMTktMTEuMSAzMi0zMS41IDMyLTU1LjEgMC0zNS4zLTI4LjctNjQtNjQtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjU2SDB2MTc2em0xOTItNjhjMC02LjYgNS40LTEyIDEyLTEyaDEzNmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDIwNGMtNi42IDAtMTItNS40LTEyLTEydi00MHptLTEyOCAwYzAtNi42IDUuNC0xMiAxMi0xMmg3MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwek01NzYgODB2NDhIMFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGg0ODBjMjYuNSAwIDQ4IDIxLjUgNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggMzUyaC00MFY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MnY5NmgxNjB2MzI4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDBoNDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpNMTYwIDI0YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjRIODhDNzQuNzUgMCA2NCAxMC43NCA2NCAyNHY0MEgyNEMxMC43NSA2NCAwIDc0Ljc0IDAgODh2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0MHYyNTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyMjR2LTk2SDE2MFYyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAzNTJoLTQwVjEwOS4yNWw1OS4zMS01OS4zMWM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDQ4NC42OSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwTDQwMi43NSA2NEgxOTJ2OTZoMTE0Ljc1TDE2MCAzMDYuNzVWMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNEg4OEM3NC43NSAwIDY0IDEwLjc0IDY0IDI0djQwSDI0QzEwLjc1IDY0IDAgNzQuNzQgMCA4OHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwdjI2NGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDIzMnYtOTZIMjA1LjI1TDM1MiAyMDUuMjVWNDg4YzAgMTMuMjUgMTAuNzUgMjQgMjQgMjRoNDhjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDBoNDBjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHYtNDhjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm9zcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMTI4aC05NlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjU2aDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3Jvc3NoYWlycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAgMjI0aC0zMC4zNjRDNDU1LjcyNCAxMzAuMzI1IDM4MS42NzUgNTYuMjc2IDI4OCA0Mi4zNjRWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAuMzY0QzEzMC4zMjUgNTYuMjc2IDU2LjI3NiAxMzAuMzI1IDQyLjM2NCAyMjRIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzMC4zNjRDNTYuMjc2IDM4MS42NzUgMTMwLjMyNSA0NTUuNzI0IDIyNCA0NjkuNjM2VjUwMGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTMwLjM2NEMzODEuNjc1IDQ1NS43MjQgNDU1LjcyNCAzODEuNjc1IDQ2OS42MzYgMjg4SDUwMGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyek0yODggNDA0LjYzNFYzNjRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDAuNjM0QzE2NS44MjYgMzkyLjIzMiAxMTkuNzgzIDM0Ni4yNDMgMTA3LjM2NiAyODhIMTQ4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwLjYzNEMxMTkuNzY4IDE2NS44MjYgMTY1Ljc1NyAxMTkuNzgzIDIyNCAxMDcuMzY2VjE0OGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwLjYzNEMzNDYuMTc0IDExOS43NjggMzkyLjIxNyAxNjUuNzU3IDQwNC42MzQgMjI0SDM2NGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwLjYzNEMzOTIuMjMyIDM0Ni4xNzQgMzQ2LjI0MyAzOTIuMjE3IDI4OCA0MDQuNjM0ek0yODggMjU2YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnMtMzItMTQuMzI3LTMyLTMyYzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnMzMiAxNC4zMjcgMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3JvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMzJoLTE2LjM2QzUxMy4wNCAxMi42OCA0OTAuMDkgMCA0NjQgMGMtNDQuMTggMC04MCAzNS44Mi04MCA4MHYyMC45OEwxMi4wOSAzOTMuNTdBMzAuMjE2IDMwLjIxNiAwIDAgMCAwIDQxNy43NGMwIDIyLjQ2IDIzLjY0IDM3LjA3IDQzLjczIDI3LjAzTDE2NS4yNyAzODRoOTYuNDlsNDQuNDEgMTIwLjFjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4TDMxMi45NCAzODRIMzUyYzEuOTEgMCAzLjc2LS4yMyA1LjY2LS4yOWw0NC41MSAxMjAuMzhjMi4yNyA2LjIzIDkuMTUgOS40NCAxNS4zOCA3LjE3bDIyLjU1LTguMjFjNi4yMy0yLjI3IDkuNDQtOS4xNSA3LjE3LTE1LjM4bC00MS4yNC0xMTEuNTNDNDg1Ljc0IDM1Mi44IDU0NCAyNzkuMjYgNTQ0IDE5MnYtODBsOTYtMTZjMC0zNS4zNS00Mi45OC02NC05Ni02NHptLTgwIDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFDcm93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDQ4SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0MTZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTY0LTMyMGMtMjYuNSAwLTQ4IDIxLjUtNDggNDggMCA3LjEgMS42IDEzLjcgNC40IDE5LjhMNDc2IDIzOS4yYy0xNS40IDkuMi0zNS4zIDQtNDQuMi0xMS42TDM1MC4zIDg1QzM2MSA3Ni4yIDM2OCA2MyAzNjggNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhzLTQ4IDIxLjUtNDggNDhjMCAxNSA3IDI4LjIgMTcuNyAzN2wtODEuNSAxNDIuNmMtOC45IDE1LjYtMjguOSAyMC44LTQ0LjIgMTEuNmwtNzIuMy00My40YzIuNy02IDQuNC0xMi43IDQuNC0xOS44IDAtMjYuNS0yMS41LTQ4LTQ4LTQ4UzAgMTQ5LjUgMCAxNzZzMjEuNSA0OCA0OCA0OGMyLjYgMCA1LjItLjQgNy43LS44TDEyOCA0MTZoMzg0bDcyLjMtMTkyLjhjMi41LjQgNS4xLjggNy43LjggMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3J1dGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNy4zMSAxODUuNzFsLTE4MS0xODFhMTYgMTYgMCAwIDAtMjIuNjIgMEwyODEgMjcuMzFhMTYgMTYgMCAwIDAgMCAyMi42M2wxODEgMTgxYTE2IDE2IDAgMCAwIDIyLjYzIDBsMjIuNjItMjIuNjNhMTYgMTYgMCAwIDAgLjA2LTIyLjZ6bS0xNzkuNTQgNjYuNDFsLTY3Ljg5LTY3Ljg5IDU1LjEtNTUuMS00NS4yNS00NS4yNS0xMDkuNjcgMTA5LjY3YTk2LjA4IDk2LjA4IDAgMCAwLTI1LjY3IDQ2LjI5TDEwNi42NSAzNjAuMWwtMTAyIDEwMmExNiAxNiAwIDAgMCAwIDIyLjYzbDIyLjYyIDIyLjYyYTE2IDE2IDAgMCAwIDIyLjYzIDBsMTAyLTEwMiAxMjAuMjUtMjcuNzVhOTUuODggOTUuODggMCAwIDAgNDYuMjktMjUuNjVsMTA5LjY4LTEwOS42OEwzODIuODcgMTk3em0tNTQuNTcgNTQuNTdhMzIgMzIgMCAwIDEtMTUuNDUgOC41NGwtNzkuMyAxOC4zMiAxOC4zLTc5LjNhMzIuMjIgMzIuMjIgMCAwIDEgOC41Ni0xNS40NWw5LjMxLTkuMzEgNjcuODkgNjcuODl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhQ3ViZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzkuMSA2LjNsLTIwOCA3OGMtMTguNyA3LTMxLjEgMjUtMzEuMSA0NXYyMjUuMWMwIDE4LjIgMTAuMyAzNC44IDI2LjUgNDIuOWwyMDggMTA0YzEzLjUgNi44IDI5LjQgNi44IDQyLjkgMGwyMDgtMTA0YzE2LjMtOC4xIDI2LjUtMjQuOCAyNi41LTQyLjlWMTI5LjNjMC0yMC0xMi40LTM3LjktMzEuMS00NC45bC0yMDgtNzhDMjYyIDIuMiAyNTAgMi4yIDIzOS4xIDYuM3pNMjU2IDY4LjRsMTkyIDcydjEuMWwtMTkyIDc4LTE5Mi03OHYtMS4xbDE5Mi03MnptMzIgMzU2VjI3NS41bDE2MC02NXYxMzMuOWwtMTYwIDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1YmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OC42IDI1MC4yTDM5MiAyMTRWMTA1LjVjMC0xNS05LjMtMjguNC0yMy40LTMzLjdsLTEwMC0zNy41Yy04LjEtMy4xLTE3LjEtMy4xLTI1LjMgMGwtMTAwIDM3LjVjLTE0LjEgNS4zLTIzLjQgMTguNy0yMy40IDMzLjdWMjE0bC05Ni42IDM2LjJDOS4zIDI1NS41IDAgMjY4LjkgMCAyODMuOVYzOTRjMCAxMy42IDcuNyAyNi4xIDE5LjkgMzIuMmwxMDAgNTBjMTAuMSA1LjEgMjIuMSA1LjEgMzIuMiAwbDEwMy45LTUyIDEwMy45IDUyYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDAtNTBjMTIuMi02LjEgMTkuOS0xOC42IDE5LjktMzIuMlYyODMuOWMwLTE1LTkuMy0yOC40LTIzLjQtMzMuN3pNMzU4IDIxNC44bC04NSAzMS45di02OC4ybDg1LTM3djczLjN6TTE1NCAxMDQuMWwxMDItMzguMiAxMDIgMzguMnYuNmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42em04NCAyOTEuMWwtODUgNDIuNXYtNzkuMWw4NS0zOC44djc1LjR6bTAtMTEybC0xMDIgNDEuNC0xMDItNDEuNHYtLjZsMTAyLTM4LjIgMTAyIDM4LjJ2LjZ6bTI0MCAxMTJsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUN1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzguMDYgMjU2TDQ0NC40OCA4OS41N2M0LjY5LTQuNjkgNC42OS0xMi4yOSAwLTE2Ljk3LTMyLjgtMzIuOC04NS45OS0zMi44LTExOC43OSAwTDIxMC4xOCAxODguMTJsLTI0Ljg2LTI0Ljg2YzQuMzEtMTAuOTIgNi42OC0yMi44MSA2LjY4LTM1LjI2IDAtNTMuMDItNDIuOTgtOTYtOTYtOTZTMCA3NC45OCAwIDEyOHM0Mi45OCA5NiA5NiA5NmM0LjU0IDAgOC45OS0uMzIgMTMuMzYtLjkzTDE0Mi4yOSAyNTZsLTMyLjkzIDMyLjkzYy00LjM3LS42MS04LjgzLS45My0xMy4zNi0uOTMtNTMuMDIgMC05NiA0Mi45OC05NiA5NnM0Mi45OCA5NiA5NiA5NiA5Ni00Mi45OCA5Ni05NmMwLTEyLjQ1LTIuMzctMjQuMzQtNi42OC0zNS4yNmwyNC44Ni0yNC44NkwzMjUuNjkgNDM5LjRjMzIuOCAzMi44IDg1Ljk5IDMyLjggMTE4Ljc5IDAgNC42OS00LjY4IDQuNjktMTIuMjggMC0xNi45N0wyNzguMDYgMjU2ek05NiAxNjBjLTE3LjY0IDAtMzItMTQuMzYtMzItMzJzMTQuMzYtMzIgMzItMzIgMzIgMTQuMzYgMzIgMzItMTQuMzYgMzItMzIgMzJ6bTAgMjU2Yy0xNy42NCAwLTMyLTE0LjM2LTMyLTMyczE0LjM2LTMyIDMyLTMyIDMyIDE0LjM2IDMyIDMyLTE0LjM2IDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURhdGFiYXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA3My4xNDN2NDUuNzE0QzQ0OCAxNTkuMTQzIDM0Ny42NjcgMTkyIDIyNCAxOTJTMCAxNTkuMTQzIDAgMTE4Ljg1N1Y3My4xNDNDMCAzMi44NTcgMTAwLjMzMyAwIDIyNCAwczIyNCAzMi44NTcgMjI0IDczLjE0M3pNNDQ4IDE3NnYxMDIuODU3QzQ0OCAzMTkuMTQzIDM0Ny42NjcgMzUyIDIyNCAzNTJTMCAzMTkuMTQzIDAgMjc4Ljg1N1YxNzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMjA5LjE0MyA0NDggMTc2em0wIDE2MHYxMDIuODU3QzQ0OCA0NzkuMTQzIDM0Ny42NjcgNTEyIDIyNCA1MTJTMCA0NzkuMTQzIDAgNDM4Ljg1N1YzMzZjNDguMTI1IDMzLjE0MyAxMzYuMjA4IDQ4LjU3MiAyMjQgNDguNTcyUzM5OS44NzQgMzY5LjE0MyA0NDggMzM2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURlYWYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDI2MGMwIDE1LjQ2NC0xMi41MzYgMjgtMjggMjhzLTI4LTEyLjUzNi0yOC0yOGMwLTQ0LjExMiAzNS44ODgtODAgODAtODBzODAgMzUuODg4IDgwIDgwYzAgMTUuNDY0LTEyLjUzNiAyOC0yOCAyOHMtMjgtMTIuNTM2LTI4LTI4YzAtMTMuMjM0LTEwLjc2Ny0yNC0yNC0yNHMtMjQgMTAuNzY2LTI0IDI0em0yNC0xNzZjLTk3LjA0NyAwLTE3NiA3OC45NTMtMTc2IDE3NiAwIDE1LjQ2NCAxMi41MzYgMjggMjggMjhzMjgtMTIuNTM2IDI4LTI4YzAtNjYuMTY4IDUzLjgzMi0xMjAgMTIwLTEyMHMxMjAgNTMuODMyIDEyMCAxMjBjMCA3NS4xNjQtNzEuMDA5IDcwLjMxMS03MS45OTcgMTQzLjYyMkwyODggNDA0YzAgMjguNjczLTIzLjMyNyA1Mi01MiA1Mi0xNS40NjQgMC0yOCAxMi41MzYtMjggMjhzMTIuNTM2IDI4IDI4IDI4YzU5LjQ3NSAwIDEwNy44NzYtNDguMzI4IDEwOC0xMDcuNzc0LjU5NS0zNC40MjggNzItNDguMjQgNzItMTQ0LjIyNiAwLTk3LjA0Ny03OC45NTMtMTc2LTE3Ni0xNzZ6bTI2OC40ODUtNTIuMjAxTDQ4MC4yIDMuNTE1Yy00LjY4Ny00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMzc2LjIgOTAuNTQ0Yy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFsMjguMjg1IDI4LjI4NWM0LjY4NiA0LjY4NiAxMi4yODQgNC42ODYgMTYuOTcgMGw4Ny4wMy04Ny4wMjljNC42ODctNC42ODggNC42ODctMTIuMjg2IDAtMTYuOTcyek0xNjguOTcgMzE0Ljc0NWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3IDBMMy41MTUgNDYzLjIzYy00LjY4NiA0LjY4Ni00LjY4NiAxMi4yODQgMCAxNi45NzFMMzEuOCA1MDguNDg1YzQuNjg3IDQuNjg2IDEyLjI4NCA0LjY4NiAxNi45NzEgMEwxOTcuMjU2IDM2MGM0LjY4Ni00LjY4NiA0LjY4Ni0xMi4yODQgMC0xNi45NzFsLTI4LjI4Ni0yOC4yODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGVtb2NyYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM3LjMgMjU2LjlsLTE5LjYtMjkuNGMtMjguMi00Mi4zLTc1LjMtNjcuNS0xMjYuMS02Ny41SDI1NmwtODEuMi04MS4yYzIwLjEtMjAuMSAyMi42LTUxLjEgNy41LTczLjktMy40LTUuMi0xMC44LTUuOS0xNS4yLTEuNWwtNDEuOCA0MS44TDgyLjQgMi40Yy0zLjYtMy42LTkuNi0zLTEyLjQgMS4yLTEyLjMgMTguNi0xMC4zIDQ0IDYuMSA2MC40IDMuMyAzLjMgNy4zIDUuMyAxMS4zIDcuNS0yLjIgMS43LTQuNyAzLjEtNi40IDUuNEw2LjQgMTc2LjJjLTcuMyA5LjctOC40IDIyLjctMyAzMy41bDE0LjMgMjguNmM1LjQgMTAuOCAxNi41IDE3LjcgMjguNiAxNy43aDMxYzguNSAwIDE2LjYtMy40IDIyLjYtOS40TDEzOCAyMTJsNTQgMTA4aDM1MnYtNzcuOGMxNi4yIDEyLjIgMTguMyAxNy42IDQwLjEgNTAuMyA0LjkgNy40IDE0LjggOS4zIDIyLjIgNC40bDI2LjYtMTcuN2M3LjMtNSA5LjMtMTQuOSA0LjQtMjIuM3ptLTM0MS4xLTEzLjZsLTE2LjUgMTYuMSAzLjkgMjIuN2MuNyA0LjEtMy42IDcuMi03LjIgNS4zTDI1NiAyNzYuN2wtMjAuNCAxMC43Yy0zLjYgMS45LTcuOS0xLjItNy4yLTUuM2wzLjktMjIuNy0xNi41LTE2LjFjLTMtMi45LTEuMy03LjkgMi44LTguNWwyMi44LTMuMyAxMC4yLTIwLjdjMS44LTMuNyA3LjEtMy43IDkgMGwxMC4yIDIwLjcgMjIuOCAzLjNjNCAuNiA1LjYgNS42IDIuNiA4LjV6bTExMiAwbC0xNi41IDE2LjEgMy45IDIyLjdjLjcgNC4xLTMuNiA3LjItNy4yIDUuM0wzNjggMjc2LjdsLTIwLjQgMTAuN2MtMy42IDEuOS03LjktMS4yLTcuMi01LjNsMy45LTIyLjctMTYuNS0xNi4xYy0zLTIuOS0xLjMtNy45IDIuOC04LjVsMjIuOC0zLjMgMTAuMi0yMC43YzEuOC0zLjcgNy4xLTMuNyA5IDBsMTAuMiAyMC43IDIyLjggMy4zYzQgLjYgNS42IDUuNiAyLjYgOC41em0xMTIgMGwtMTYuNSAxNi4xIDMuOSAyMi43Yy43IDQuMS0zLjYgNy4yLTcuMiA1LjNMNDgwIDI3Ni43bC0yMC40IDEwLjdjLTMuNiAxLjktNy45LTEuMi03LjItNS4zbDMuOS0yMi43LTE2LjUtMTYuMWMtMy0yLjktMS4zLTcuOSAyLjgtOC41bDIyLjgtMy4zIDEwLjItMjAuN2MxLjgtMy43IDcuMS0zLjcgOSAwbDEwLjIgMjAuNyAyMi44IDMuM2M0IC42IDUuNiA1LjYgMi42IDguNXpNMTkyIDQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di04MGgxNjB2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNlYzNTJIMTkydjE0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEZXNrdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTkybC0xNiA0OGgtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjRoMjcyYzEzLjMgMCAyNC0xMC43IDI0LTI0cy0xMC43LTI0LTI0LTI0aC03MmwtMTYtNDhoMTkyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTYgMzUySDY0VjY0aDQ0OHYyODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGhhcm1hY2hha3JhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NSAyMjUuMDZsLTE3LjIyIDEuMDhjLTUuMjctMzkuNDktMjAuNzktNzUuNjQtNDMuODYtMTA1Ljg0bDEyLjk1LTExLjQzYzYuOTItNi4xMSA3LjI1LTE2Ljc5LjczLTIzLjMxTDQyNi40NCA2NC40Yy02LjUzLTYuNTMtMTcuMjEtNi4xOS0yMy4zMS43M0wzOTEuNyA3OC4wN2MtMzAuMi0yMy4wNi02Ni4zNS0zOC41OC0xMDUuODMtNDMuODZMMjg2Ljk0IDE3Yy41OC05LjIxLTYuNzQtMTctMTUuOTctMTdoLTI5Ljk0Yy05LjIzIDAtMTYuNTQgNy43OS0xNS45NyAxN2wxLjA4IDE3LjIyYy0zOS40OSA1LjI3LTc1LjY0IDIwLjc5LTEwNS44MyA0My44NmwtMTEuNDMtMTIuOTVjLTYuMTEtNi45Mi0xNi43OS03LjI1LTIzLjMxLS43M0w2NC40IDg1LjU2Yy02LjUzIDYuNTMtNi4xOSAxNy4yMS43MyAyMy4zMWwxMi45NSAxMS40M2MtMjMuMDYgMzAuMi0zOC41OCA2Ni4zNS00My44NiAxMDUuODRMMTcgMjI1LjA2Yy05LjIxLS41OC0xNyA2Ljc0LTE3IDE1Ljk3djI5Ljk0YzAgOS4yMyA3Ljc5IDE2LjU0IDE3IDE1Ljk3bDE3LjIyLTEuMDhjNS4yNyAzOS40OSAyMC43OSA3NS42NCA0My44NiAxMDUuODNsLTEyLjk1IDExLjQzYy02LjkyIDYuMTEtNy4yNSAxNi43OS0uNzMgMjMuMzFsMjEuMTcgMjEuMTdjNi41MyA2LjUzIDE3LjIxIDYuMTkgMjMuMzEtLjczbDExLjQzLTEyLjk1YzMwLjIgMjMuMDYgNjYuMzUgMzguNTggMTA1Ljg0IDQzLjg2TDIyNS4wNiA0OTVjLS41OCA5LjIxIDYuNzQgMTcgMTUuOTcgMTdoMjkuOTRjOS4yMyAwIDE2LjU0LTcuNzkgMTUuOTctMTdsLTEuMDgtMTcuMjJjMzkuNDktNS4yNyA3NS42NC0yMC43OSAxMDUuODQtNDMuODZsMTEuNDMgMTIuOTVjNi4xMSA2LjkyIDE2Ljc5IDcuMjUgMjMuMzEuNzNsMjEuMTctMjEuMTdjNi41My02LjUzIDYuMTktMTcuMjEtLjczLTIzLjMxbC0xMi45NS0xMS40M2MyMy4wNi0zMC4yIDM4LjU4LTY2LjM1IDQzLjg2LTEwNS44M2wxNy4yMiAxLjA4YzkuMjEuNTggMTctNi43NCAxNy0xNS45N3YtMjkuOTRjLS4wMS05LjIzLTcuOC0xNi41NC0xNy4wMS0xNS45N3pNMjgxLjg0IDk4LjYxYzI0LjgxIDQuMDcgNDcuNjMgMTMuNjYgNjcuMjMgMjcuNzhsLTQyLjYyIDQ4LjI5Yy04LjczLTUuNDQtMTguMzItOS41NC0yOC42Mi0xMS45NWw0LjAxLTY0LjEyem0tNTEuNjggMGw0LjAxIDY0LjEyYy0xMC4yOSAyLjQxLTE5Ljg5IDYuNTItMjguNjIgMTEuOTVsLTQyLjYyLTQ4LjI5YzE5LjYtMTQuMTIgNDIuNDItMjMuNzEgNjcuMjMtMjcuNzh6bS0xMDMuNzcgNjQuMzNsNDguMyA0Mi42MWMtNS40NCA4LjczLTkuNTQgMTguMzMtMTEuOTYgMjguNjJsLTY0LjEyLTQuMDFjNC4wNy0yNC44MSAxMy42Ni00Ny42MiAyNy43OC02Ny4yMnptLTI3Ljc4IDExOC45bDY0LjEyLTQuMDFjMi40MSAxMC4yOSA2LjUyIDE5Ljg5IDExLjk1IDI4LjYybC00OC4yOSA0Mi42MmMtMTQuMTItMTkuNi0yMy43MS00Mi40Mi0yNy43OC02Ny4yM3ptMTMxLjU1IDEzMS41NWMtMjQuODEtNC4wNy00Ny42My0xMy42Ni02Ny4yMy0yNy43OGw0Mi42MS00OC4zYzguNzMgNS40NCAxOC4zMyA5LjU0IDI4LjYyIDExLjk2bC00IDY0LjEyek0yNTYgMjg4Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0yNS44NCAxMjUuMzlsLTQuMDEtNjQuMTJjMTAuMjktMi40MSAxOS44OS02LjUyIDI4LjYyLTExLjk2bDQyLjYxIDQ4LjNjLTE5LjYgMTQuMTItNDIuNDEgMjMuNzEtNjcuMjIgMjcuNzh6bTEwMy43Ny02NC4zM2wtNDguMjktNDIuNjJjNS40NC04LjczIDkuNTQtMTguMzIgMTEuOTUtMjguNjJsNjQuMTIgNC4wMWMtNC4wNyAyNC44Mi0xMy42NiA0Ny42NC0yNy43OCA2Ny4yM3ptLTM2LjM0LTExNC44OWMtMi40MS0xMC4yOS02LjUyLTE5Ljg5LTExLjk2LTI4LjYybDQ4LjMtNDIuNjFjMTQuMTIgMTkuNiAyMy43MSA0Mi40MiAyNy43OCA2Ny4yM2wtNjQuMTIgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWFnbm9zZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI1NmM4LjggMCAxNi03LjIgMTYtMTZzLTcuMi0xNi0xNi0xNi0xNiA3LjItMTYgMTYgNy4yIDE2IDE2IDE2em0tMTc2LTgwYzQ4LjUgMCA4OC0zOS41IDg4LTg4UzM2OC41IDAgMzIwIDBzLTg4IDM5LjUtODggODggMzkuNSA4OCA4OCA4OHpNNTkuOCAzNjRjMTAuMiAxNS4zIDI5LjMgMTcuOCA0Mi45IDkuOCAxNi4yLTkuNiA1Ni4yLTMxLjcgMTA1LjMtNDguNlY0MTZoMjI0di05MC43YzQ5LjEgMTYuOCA4OS4xIDM5IDEwNS4zIDQ4LjYgMTMuNiA4IDMyLjcgNS4zIDQyLjktOS44bDE3LjgtMjYuN2M4LjgtMTMuMiA3LjYtMzQuNi0xMC00NS4xLTExLjktNy4xLTI5LjctMTctNTEuMS0yNy40LTI4LjEgNDYuMS05OS40IDE3LjgtODcuNy0zNS4xQzQwOS4zIDIxNy4yIDM2NS4xIDIwOCAzMjAgMjA4Yy01NyAwLTExMi45IDE0LjUtMTYwIDMyLjItLjIgNDAuMi00Ny42IDYzLjMtNzkuMiAzNi0xMS4yIDYtMjEuMyAxMS42LTI4LjcgMTYtMTcuNiAxMC41LTE4LjggMzEuOC0xMCA0NS4xTDU5LjggMzY0ek0zNjggMzQ0YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTk2LTk2YzEzLjMgMCAyNCAxMC43IDI0IDI0cy0xMC43IDI0LTI0IDI0LTI0LTEwLjctMjQtMjQgMTAuNy0yNCAyNC0yNHptLTE2MCA4YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6bTUxMiAxOTJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VEMjAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA2Ljc1IDIxNS4wNkwxLjIgMzcwLjk1Yy0zLjA4IDUgLjEgMTEuNSA1LjkzIDEyLjE0bDIwOC4yNiAyMi4wNy0xMDguNjQtMTkwLjF6TTcuNDEgMzE1LjQzTDgyLjcgMTkzLjA4IDYuMDYgMTQ3LjFjLTIuNjctMS42LTYuMDYuMzItNi4wNiAzLjQzdjE2Mi44MWMwIDQuMDMgNS4yOSA1LjUzIDcuNDEgMi4wOXpNMTguMjUgNDIzLjZsMTk0LjQgODcuNjZjNS4zIDIuNDUgMTEuMzUtMS40MyAxMS4zNS03LjI2di02NS42N2wtMjAzLjU1LTIyLjNjLTQuNDUtLjUtNi4yMyA1LjU5LTIuMiA3LjU3em04MS4yMi0yNTcuNzhMMTc5LjQgMjIuODhjNC4zNC03LjA2LTMuNTktMTUuMjUtMTAuNzgtMTEuMTRMMTcuODEgMTEwLjM1Yy0yLjQ3IDEuNjItMi4zOSA1LjI2LjEzIDYuNzhsODEuNTMgNDguNjl6TTI0MCAxNzZoMTA5LjIxTDI1My42MyA3LjYyQzI1MC41IDIuNTQgMjQ1LjI1IDAgMjQwIDBzLTEwLjUgMi41NC0xMy42MyA3LjYyTDEzMC43OSAxNzZIMjQwem0yMzMuOTQtMjguOWwtNzYuNjQgNDUuOTkgNzUuMjkgMTIyLjM1YzIuMTEgMy40NCA3LjQxIDEuOTQgNy40MS0yLjFWMTUwLjUzYzAtMy4xMS0zLjM5LTUuMDMtNi4wNi0zLjQzem0tOTMuNDEgMTguNzJsODEuNTMtNDguN2MyLjUzLTEuNTIgMi42LTUuMTYuMTMtNi43OGwtMTUwLjgxLTk4LjZjLTcuMTktNC4xMS0xNS4xMiA0LjA4LTEwLjc4IDExLjE0bDc5LjkzIDE0Mi45NHptNzkuMDIgMjUwLjIxTDI1NiA0MzguMzJ2NjUuNjdjMCA1Ljg0IDYuMDUgOS43MSAxMS4zNSA3LjI2bDE5NC40LTg3LjY2YzQuMDMtMS45NyAyLjI1LTguMDYtMi4yLTcuNTZ6bS04Ni4zLTIwMC45N2wtMTA4LjYzIDE5MC4xIDIwOC4yNi0yMi4wN2M1LjgzLS42NSA5LjAxLTcuMTQgNS45My0xMi4xNEwzNzMuMjUgMjE1LjA2ek0yNDAgMjA4SDEzOS41N0wyNDAgMzgzLjc1IDM0MC40MyAyMDhIMjQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VENiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjIuMTkgMTA5Ljk1TDI1Ni4yMSA5LjA3Yy0xOS45MS0xMi4xLTQ0LjUyLTEyLjEtNjQuNDMgMEwyNS44MSAxMDkuOTVjLTUuMzIgMy4yMy01LjI5IDExLjI3LjA2IDE0LjQ2TDIyNCAyNDIuNTVsMTk4LjE0LTExOC4xNGM1LjM1LTMuMTkgNS4zOC0xMS4yMi4wNS0xNC40NnptMTMuODQgNDQuNjNMMjQwIDI3MS40NnYyMjMuODJjMCAxMi44OCAxMy4zOSAyMC45MSAyNC4wNSAxNC40M2wxNTIuMTYtOTIuNDhjMTkuNjgtMTEuOTYgMzEuNzktMzMuOTQgMzEuNzktNTcuN3YtMTk3LjdjMC02LjQxLTYuNjQtMTAuNDMtMTEuOTctNy4yNXpNMCAxNjEuODN2MTk3LjdjMCAyMy43NyAxMi4xMSA0NS43NCAzMS43OSA1Ny43bDE1Mi4xNiA5Mi40N2MxMC42NyA2LjQ4IDI0LjA1LTEuNTQgMjQuMDUtMTQuNDNWMjcxLjQ2TDExLjk3IDE1NC41OEM2LjY0IDE1MS40IDAgMTU1LjQyIDAgMTYxLjgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VGaXZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDM4NGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem05NiA5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZUZvdXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0wLTE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMTkyIDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMC0xOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZU9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyMGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6TTIyNCAyODhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVNpeCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zODQgMzJINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDMyMGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0Vjk2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6TTEyOCAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTE5MiAxOTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGljZVRocmVlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAzMkg2NEMyOC42NSAzMiAwIDYwLjY1IDAgOTZ2MzIwYzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzIwYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRWOTZjMC0zNS4zNS0yOC42NS02NC02NC02NHpNMTI4IDE5MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptOTYgOTZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTk2IDk2Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2VUd28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMySDY0QzI4LjY1IDMyIDAgNjAuNjUgMCA5NnYzMjBjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgzMjBjMzUuMzUgMCA2NC0yOC42NSA2NC02NFY5NmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0ek0xMjggMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xOTIgMTkyYy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkyIDE5Mkg0NzMuMjZjMTIuNjkgMjkuNTkgNy4xMiA2NS4yLTE3IDg5LjMyTDMyMCA0MTcuNThWNDY0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjQwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTQ4MCAzNzZjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0tNDYuMzctMTg2LjdMMjU4LjcgMTQuMzdjLTE5LjE2LTE5LjE2LTUwLjIzLTE5LjE2LTY5LjM5IDBMMTQuMzcgMTg5LjNjLTE5LjE2IDE5LjE2LTE5LjE2IDUwLjIzIDAgNjkuMzlMMTg5LjMgNDMzLjYzYzE5LjE2IDE5LjE2IDUwLjIzIDE5LjE2IDY5LjM5IDBMNDMzLjYzIDI1OC43YzE5LjE2LTE5LjE3IDE5LjE2LTUwLjI0IDAtNjkuNHpNOTYgMjQ4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMTI4IDEyOGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTAtMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHptMC0xMjhjLTEzLjI1IDAtMjQtMTAuNzUtMjQtMjQgMC0xMy4yNiAxMC43NS0yNCAyNC0yNHMyNCAxMC43NCAyNCAyNGMwIDEzLjI1LTEwLjc1IDI0LTI0IDI0em0xMjggMTI4Yy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaWdpdGFsVGFjaG9ncmFwaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggOTZIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MjU2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTI4YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTMwNCAzNTJjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di04YzAtNC40MiAzLjU4LTggOC04aDIyNGM0LjQyIDAgOCAzLjU4IDggOHY4ek03MiAyODh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDgwYy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNjQgMHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHptNDAtNjRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIODBjLTguODQgMC0xNi03LjE2LTE2LTE2di00OGMwLTguODQgNy4xNi0xNiAxNi0xNmgyMDhjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NDh6bTI3MiAxMjhjMCA0LjQyLTMuNTggOC04IDhIMzQ0Yy00LjQyIDAtOC0zLjU4LTgtOHYtOGMwLTQuNDIgMy41OC04IDgtOGgyMjRjNC40MiAwIDggMy41OCA4IDh2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXJlY3Rpb25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi42MSAyMzMuMzJMMjc4LjY4IDkuMzljLTEyLjUyLTEyLjUyLTMyLjgzLTEyLjUyLTQ1LjM2IDBMOS4zOSAyMzMuMzJjLTEyLjUyIDEyLjUzLTEyLjUyIDMyLjgzIDAgNDUuMzZsMjIzLjkzIDIyMy45M2MxMi41MiAxMi41MyAzMi44MyAxMi41MyA0NS4zNiAwbDIyMy45My0yMjMuOTNjMTIuNTItMTIuNTMgMTIuNTItMzIuODMgMC00NS4zNnptLTEwMC45OCAxMi41NmwtODQuMjEgNzcuNzNjLTUuMTIgNC43My0xMy40MyAxLjEtMTMuNDMtNS44OFYyNjRoLTk2djY0YzAgNC40Mi0zLjU4IDgtOCA4aC0zMmMtNC40MiAwLTgtMy41OC04LTh2LTgwYzAtMTcuNjcgMTQuMzMtMzIgMzItMzJoMTEydi01My43M2MwLTYuOTcgOC4zLTEwLjYxIDEzLjQzLTUuODhsODQuMjEgNzcuNzNjMy40MyAzLjE3IDMuNDMgOC41OSAwIDExLjc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURpc2Vhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcyLjI5IDE5NS45bC02Ny4wNi0yM2MtMTkuMjgtNi42LTMzLjU0LTIwLjkyLTM4LjE0LTM4LjMxbC0xNi02MC40NWMtMTEuNTgtNDMuNzctNzYuNTctNTcuMTMtMTEwLTIyLjYyTDE5NSA5OS4yNGMtMTMuMjYgMTMuNzEtMzMuNTQgMjAuOTMtNTQuMiAxOS4zMWwtNzEuOS01LjYyYy01Mi00LjA3LTg2LjkzIDQ0Ljg5LTU5IDgyLjg0bDM4LjU0IDUyLjQyYzExLjA4IDE1LjA3IDEyLjgyIDMzLjg2IDQuNjQgNTAuMjRsLTI4LjQzIDU3QzQgMzk2LjY3IDQ3LjQ2IDQ0MC4yOSA5OC4xMSA0MjkuMjNsNzAtMTUuMjhjMjAuMTEtNC4zOSA0MS40NSAwIDU3LjA3IDExLjczbDU0LjMyIDQwLjgzYzM5LjMyIDI5LjU2IDEwMSA3LjU3IDEwNC40NS0zNy4yMmw0LjctNjEuODZjMS4zNS0xNy44IDEyLjgtMzMuODcgMzAuNjMtNDNsNjItMzEuNzRjNDQuODQtMjIuOTYgMzkuNTUtODAuMTctOC45OS05Ni43OXpNMTYwIDI1NmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptMTI4IDk2YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0xNi0xMjhhMTYgMTYgMCAxIDEgMTYtMTYgMTYgMTYgMCAwIDEtMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRGl2aWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAzNTJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjQgNjQtMjguNjUgNjQtNjQtMjguNjUtNjQtNjQtNjR6bTAtMTkyYzM1LjM1IDAgNjQtMjguNjUgNjQtNjRzLTI4LjY1LTY0LTY0LTY0LTY0IDI4LjY1LTY0IDY0IDI4LjY1IDY0IDY0IDY0em0xOTIgNDhIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzODRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tOTYgMjA2LjZsLTI4LjcgMjguN2MtMTQuOCAxNC44LTM3LjgtNy41LTIyLjYtMjIuNmwyOC43LTI4LjctMjguNy0yOC43Yy0xNS0xNSA3LjctMzcuNiAyMi42LTIyLjZsMjguNyAyOC43IDI4LjctMjguN2MxNS0xNSAzNy42IDcuNyAyMi42IDIyLjZMMTc0LjYgMTkybDI4LjcgMjguN2MxNS4yIDE1LjItNy45IDM3LjQtMjIuNiAyMi42TDE1MiAyMTQuNnpNMjQ4IDQxNmMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bTE0Ny4zLTE5NS4zYzE1LjIgMTUuMi03LjkgMzcuNC0yMi42IDIyLjZMMzQ0IDIxNC42bC0yOC43IDI4LjdjLTE0LjggMTQuOC0zNy44LTcuNS0yMi42LTIyLjZsMjguNy0yOC43LTI4LjctMjguN2MtMTUtMTUgNy43LTM3LjYgMjIuNi0yMi42bDI4LjcgMjguNyAyOC43LTI4LjdjMTUtMTUgMzcuNiA3LjcgMjIuNiAyMi42TDM2Ni42IDE5MmwyOC43IDI4Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG5hIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4xIDQ5NC4xYy0xLjEgOS41IDYuMyAxNy44IDE1LjkgMTcuOGwzMi4zLjFjOC4xIDAgMTQuOS01LjkgMTYtMTMuOS43LTQuOSAxLjgtMTEuMSAzLjQtMTguMUgzODBjMS42IDYuOSAyLjkgMTMuMiAzLjUgMTguMSAxLjEgOCA3LjkgMTQgMTYgMTMuOWwzMi4zLS4xYzkuNiAwIDE3LjEtOC4zIDE1LjktMTcuOC00LjYtMzcuOS0yNS42LTEyOS0xMTguOS0yMDcuNy0xNy42IDEyLjQtMzcuMSAyNC4yLTU4LjUgMzUuNCA2LjIgNC42IDExLjQgOS40IDE3IDE0LjJIMTU5LjdjMjEuMy0xOC4xIDQ3LTM1LjYgNzguNy01MS40QzQxMC41IDE5OS4xIDQ0Mi4xIDY1LjggNDQ3LjkgMTcuOSA0NDkgOC40IDQ0MS42LjEgNDMyIC4xTDM5OS42IDBjLTguMSAwLTE0LjkgNS45LTE2IDEzLjktLjcgNC45LTEuOCAxMS4xLTMuNCAxOC4xSDY3LjhjLTEuNi03LTIuNy0xMy4xLTMuNC0xOC4xLTEuMS04LTcuOS0xNC0xNi0xMy45TDE2LjEuMUM2LjUuMS0xIDguNC4xIDE3LjkgNS4zIDYwLjggMzEuNCAxNzEuOCAxNjAgMjU2IDMxLjUgMzQwLjIgNS4zIDQ1MS4yLjEgNDk0LjF6TTIyNCAyMTkuNmMtMjUuMS0xMy43LTQ2LjQtMjguNC02NC4zLTQzLjZoMTI4LjVjLTE3LjggMTUuMi0zOS4xIDMwLTY0LjIgNDMuNnpNMzU1LjEgOTZjLTUuOCAxMC40LTEyLjggMjEuMS0yMSAzMkgxMTRjLTguMy0xMC45LTE1LjMtMjEuNi0yMS0zMmgyNjIuMXpNOTIuOSA0MTZjNS44LTEwLjQgMTIuOC0yMS4xIDIxLTMyaDIxOS40YzguMyAxMC45IDE1LjQgMjEuNiAyMS4yIDMySDkyLjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5OC4wNiwyMjQsNDQ4LDI3Ny41NVY0OTZhMTYsMTYsMCwwLDEtMTYsMTZIMzY4YTE2LDE2LDAsMCwxLTE2LTE2VjM4NEgxOTJWNDk2YTE2LDE2LDAsMCwxLTE2LDE2SDExMmExNiwxNiwwLDAsMS0xNi0xNlYyODIuMDlDNTguODQsMjY4Ljg0LDMyLDIzMy42NiwzMiwxOTJhMzIsMzIsMCwwLDEsNjQsMCwzMi4wNiwzMi4wNiwwLDAsMCwzMiwzMlpNNTQ0LDExMnYzMmE2NCw2NCwwLDAsMS02NCw2NEg0NDh2MzUuNThMMzIwLDE5Ny44N1Y0OGMwLTE0LjI1LDE3LjIyLTIxLjM5LDI3LjMxLTExLjMxTDM3NC41OSw2NGg1My42M2MxMC45MSwwLDIzLjc1LDcuOTIsMjguNjIsMTcuNjlMNDY0LDk2aDY0QTE2LDE2LDAsMCwxLDU0NCwxMTJabS0xMTIsMGExNiwxNiwwLDEsMC0xNiwxNkExNiwxNiwwLDAsMCw0MzIsMTEyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbGxhclNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA5LjIgMjMzLjRsLTEwOC0zMS42Qzg4LjcgMTk4LjIgODAgMTg2LjUgODAgMTczLjVjMC0xNi4zIDEzLjItMjkuNSAyOS41LTI5LjVoNjYuM2MxMi4yIDAgMjQuMiAzLjcgMzQuMiAxMC41IDYuMSA0LjEgMTQuMyAzLjEgMTkuNS0ybDM0LjgtMzRjNy4xLTYuOSA2LjEtMTguNC0xLjgtMjQuNUMyMzggNzQuOCAyMDcuNCA2NC4xIDE3NiA2NFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDhoLTIuNUM0NS44IDY0LTUuNCAxMTguNy41IDE4My42YzQuMiA0Ni4xIDM5LjQgODMuNiA4My44IDk2LjZsMTAyLjUgMzBjMTIuNSAzLjcgMjEuMiAxNS4zIDIxLjIgMjguMyAwIDE2LjMtMTMuMiAyOS41LTI5LjUgMjkuNWgtNjYuM0MxMDAgMzY4IDg4IDM2NC4zIDc4IDM1Ny41Yy02LjEtNC4xLTE0LjMtMy4xLTE5LjUgMmwtMzQuOCAzNGMtNy4xIDYuOS02LjEgMTguNCAxLjggMjQuNSAyNC41IDE5LjIgNTUuMSAyOS45IDg2LjUgMzB2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDguMmM0Ni42LS45IDkwLjMtMjguNiAxMDUuNy03Mi43IDIxLjUtNjEuNi0xNC42LTEyNC44LTcyLjUtMTQxLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHlGbGF0YmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCAzMjBoMzg0YzguOCAwIDE2LTcuMiAxNi0xNlY0OGMwLTguOC03LjItMTYtMTYtMTZINDQ4djEyOGwtNDgtMzItNDggMzJWMzJIMjA4Yy04LjggMC0xNiA3LjItMTYgMTZ2MjU2YzAgOC44IDcuMiAxNiAxNiAxNnptNDE2IDY0SDEyOFYxNmMwLTguOC03LjItMTYtMTYtMTZIMTZDNy4yIDAgMCA3LjIgMCAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNDh2MzY4YzAgOC44IDcuMiAxNiAxNiAxNmg4Mi45Yy0xLjggNS0yLjkgMTAuNC0yLjkgMTYgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTUuNi0xLjItMTEtMi45LTE2SDQ1MWMtMS44IDUtMi45IDEwLjQtMi45IDE2IDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC01LjYtMS4yLTExLTIuOS0xNkg2MjRjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9sbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk0LjIgMjc3LjdjMTggNSAzNC43IDEzLjQgNDkuNSAyNC43bDE2MS41LTUzLjhjOC40LTIuOCAxMi45LTExLjkgMTAuMS0yMC4yTDQ1NC45IDQ3LjJjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtNjEuMSAyMC40IDMzLjEgOTkuNEwzNDYgMTc3bC0zMy4xLTk5LjQtNjEuNiAyMC41Yy04LjQgMi44LTEyLjkgMTEuOS0xMC4xIDIwLjJsNTMgMTU5LjR6bTI4MSA0OC43TDU2NSAyOTZjLTIuOC04LjQtMTEuOS0xMi45LTIwLjItMTAuMWwtMjEzLjUgNzEuMmMtMTcuMi0yMi00My42LTM2LjQtNzMuNS0zN0wxNTguNCAyMS45QzE1NCA4LjggMTQxLjggMCAxMjggMEgxNkM3LjIgMCAwIDcuMiAwIDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4OC45bDkyLjIgMjc2LjdjLTI2LjEgMjAuNC00MS43IDUzLjYtMzYgOTAuNSA2LjEgMzkuNCAzNy45IDcyLjMgNzcuMyA3OS4yIDYwLjIgMTAuNyAxMTIuMy0zNC44IDExMy40LTkyLjZsMjEzLjMtNzEuMmM4LjMtMi44IDEyLjktMTEuOCAxMC4xLTIwLjJ6TTI1NiA0NjRjLTI2LjUgMC00OC0yMS41LTQ4LTQ4czIxLjUtNDggNDgtNDggNDggMjEuNSA0OCA0OC0yMS41IDQ4LTQ4IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvbmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDE2YzExNC45IDAgMjA4LTkzLjEgMjA4LTIwOFMzNzAuOSAwIDI1NiAwIDQ4IDkzLjEgNDggMjA4czkzLjEgMjA4IDIwOCAyMDh6TTIzMy44IDk3LjRWODAuNmMwLTkuMiA3LjQtMTYuNiAxNi42LTE2LjZoMTEuMWM5LjIgMCAxNi42IDcuNCAxNi42IDE2LjZ2MTdjMTUuNS44IDMwLjUgNi4xIDQzIDE1LjQgNS42IDQuMSA2LjIgMTIuMyAxLjIgMTcuMUwzMDYgMTQ1LjZjLTMuOCAzLjctOS41IDMuOC0xNCAxLTUuNC0zLjQtMTEuNC01LjEtMTcuOC01LjFoLTM4LjljLTkgMC0xNi4zIDguMi0xNi4zIDE4LjMgMCA4LjIgNSAxNS41IDEyLjEgMTcuNmw2Mi4zIDE4LjdjMjUuNyA3LjcgNDMuNyAzMi40IDQzLjcgNjAuMSAwIDM0LTI2LjQgNjEuNS01OS4xIDYyLjR2MTYuOGMwIDkuMi03LjQgMTYuNi0xNi42IDE2LjZoLTExLjFjLTkuMiAwLTE2LjYtNy40LTE2LjYtMTYuNnYtMTdjLTE1LjUtLjgtMzAuNS02LjEtNDMtMTUuNC01LjYtNC4xLTYuMi0xMi4zLTEuMi0xNy4xbDE2LjMtMTUuNWMzLjgtMy43IDkuNS0zLjggMTQtMSA1LjQgMy40IDExLjQgNS4xIDE3LjggNS4xaDM4LjljOSAwIDE2LjMtOC4yIDE2LjMtMTguMyAwLTguMi01LTE1LjUtMTIuMS0xNy42bC02Mi4zLTE4LjdjLTI1LjctNy43LTQzLjctMzIuNC00My43LTYwLjEuMS0zNCAyNi40LTYxLjUgNTkuMS02Mi40ek00ODAgMzUyaC0zMi41Yy0xOS42IDI2LTQ0LjYgNDcuNy03MyA2NGg2My44YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThoNjMuOGMtMjguNC0xNi4zLTUzLjMtMzgtNzMtNjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDQ0OGMxNy43IDAgMzItMTQuMyAzMi0zMnYtOTZjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRG9vckNsb3NlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDQ4SDUxMlY1MC44QzUxMiAyMi43OCA0OTAuNDcgMCA0NjQgMEgxNzUuOTljLTI2LjQ3IDAtNDggMjIuNzgtNDggNTAuOFY0NDhIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDYwOGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTQxNS45OSAyODhjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzJjLjAxIDE3LjY3LTE0LjMyIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURvb3JPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0NDhoLTgwVjExMy40NUM1NDQgODYuMTkgNTIyLjQ3IDY0IDQ5NiA2NEgzODR2NjRoOTZ2Mzg0aDE0NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTMxMi4yNCAxLjAxbC0xOTIgNDkuNzRDMTA1Ljk5IDU0LjQ0IDk2IDY3LjcgOTYgODIuOTJWNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMzZWMzMuMThjMC0yMS41OC0xOS41Ni0zNy40MS0zOS43Ni0zMi4xN3pNMjY0IDI4OGMtMTMuMjUgMC0yNC0xNC4zMy0yNC0zMnMxMC43NS0zMiAyNC0zMiAyNCAxNC4zMyAyNCAzMi0xMC43NSAzMi0yNCAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3RDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em04MCAyNDhjMCA0NC4xMTItMzUuODg4IDgwLTgwIDgwcy04MC0zNS44ODgtODAtODAgMzUuODg4LTgwIDgwLTgwIDgwIDM1Ljg4OCA4MCA4MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNjcuMnYtMjguMWMtMjguMi0zNi4zLTQ3LjEtNzkuMy01NC4xLTEyNS4yLTIuMS0xMy41LTE5LTE4LjgtMjcuOC04LjMtMjEuMSAyNC45LTM3LjcgNTQuMS00OC45IDg2LjUgMzQuMiAzOC4zIDgwIDY0LjYgMTMwLjggNzUuMXpNNDAwIDY0Yy00NC4yIDAtODAgMzUuOS04MCA4MC4xdjU5LjRDMjE1LjYgMTk3LjMgMTI3IDEzMyA4NyA0MS44Yy01LjUtMTIuNS0yMy4yLTEzLjItMjktLjlDNDEuNCA3NiAzMiAxMTUuMiAzMiAxNTYuNmMwIDcwLjggMzQuMSAxMzYuOSA4NS4xIDE4NS45IDEzLjIgMTIuNyAyNi4xIDIzLjIgMzguOSAzMi44bC0xNDMuOSAzNkMxLjQgNDE0LTMuNCA0MjYuNCAyLjYgNDM1LjcgMjAgNDYyLjYgNjMgNTA4LjIgMTU1LjggNTEyYzggLjMgMTYtMi42IDIyLjEtNy45bDY1LjItNTYuMUgzMjBjODguNCAwIDE2MC03MS41IDE2MC0xNTkuOVYxMjhsMzItNjRINDAwem0wIDk2LjFjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMGg4MGMxMy4zIDAgMjQgMTAuNyAyNCAyNHYxNjhoODcuN2MxNy44IDAgMjYuNyAyMS41IDE0LjEgMzQuMUwyNjkuNyAzNzguM2MtNy41IDcuNS0xOS44IDcuNS0yNy4zIDBMOTAuMSAyMjYuMWMtMTIuNi0xMi42LTMuNy0zNC4xIDE0LjEtMzQuMUgxOTJWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjR6bTI5NiAzNzZ2MTEyYzAgMTMuMy0xMC43IDI0LTI0IDI0SDI0Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNFYzNzZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTQ2LjdsNDkgNDljMjAuMSAyMC4xIDUyLjUgMjAuMSA3Mi42IDBsNDktNDlINDg4YzEzLjMgMCAyNCAxMC43IDI0IDI0em0tMTI0IDg4YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMCA5IDIwIDIwIDIwIDIwLTkgMjAtMjB6bTY0IDBjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEcmFmdGluZ0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDU3LjAxIDM0NC40MmMtMjUuMDUgMjAuMzMtNTIuNjMgMzcuMTgtODIuNTQgNDkuMDVsNTQuMzggOTQuMTkgNTMuOTUgMjMuMDRjOS44MSA0LjE5IDIwLjg5LTIuMjEgMjIuMTctMTIuOGw3LjAyLTU4LjI1LTU0Ljk4LTk1LjIzem00Mi40OS05NC41NmM0Ljg2LTcuNjcgMS44OS0xNy45OS02LjA1LTIyLjM5bC0yOC4wNy0xNS41N2MtNy40OC00LjE1LTE2LjYxLTEuNDYtMjEuMjYgNS43MkM0MDMuMDEgMjgxLjE1IDMzMi4yNSAzMjAgMjU2IDMyMGMtMjMuOTMgMC00Ny4yMy00LjI1LTY5LjQxLTExLjUzbDY3LjM2LTExNi42OGMuNy4wMiAxLjM0LjIxIDIuMDQuMjFzMS4zNS0uMTkgMi4wNC0uMjFsNTEuMDkgODguNWMzMS4yMy04Ljk2IDU5LjU2LTI1Ljc1IDgyLjYxLTQ4LjkybC01MS43OS04OS43MUMzNDcuMzkgMTI4LjAzIDM1MiAxMTIuNjMgMzUyIDk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2YzAgMTYuNjMgNC42MSAzMi4wMyAxMi4wNSA0NS42NmwtNjguMyAxMTguMzFjLTEyLjU1LTExLjYxLTIzLjk2LTI0LjU5LTMzLjY4LTM5LTQuNzktNy4xLTEzLjk3LTkuNjItMjEuMzgtNS4zM2wtMjcuNzUgMTYuMDdjLTcuODUgNC41NC0xMC42MyAxNC45LTUuNjQgMjIuNDcgMTUuNTcgMjMuNjQgMzQuNjkgNDQuMjEgNTUuOTggNjIuMDJMMCA0MzkuNjZsNy4wMiA1OC4yNWMxLjI4IDEwLjU5IDEyLjM2IDE2Ljk5IDIyLjE3IDEyLjhsNTMuOTUtMjMuMDQgNzAuOC0xMjIuNjNDMTg2LjEzIDM3Ny4yOCAyMjAuNjIgMzg0IDI1NiAzODRjOTkuMDUgMCAxOTAuODgtNTEuMDEgMjQzLjUtMTM0LjE0ek0yNTYgNjRjMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnMtMTQuMzMgMzItMzIgMzItMzItMTQuMzMtMzItMzIgMTQuMzMtMzIgMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE4LjMyIDI1NS43OEwxOTIgMjIzLjk2bC05MS4yOCA2OC42OWMtMTAuMDggMTAuMDgtMi45NCAyNy4zMSAxMS4zMSAyNy4zMWgyMjIuN2MtOS40NC0yNi40LTE0LjczLTU0LjQ3LTE0LjczLTgzLjM4di00Mi4yN2wtMTE5LjczLTg3LjZjLTIzLjgyLTE1Ljg4LTU1LjI5LTE0LjAxLTc3LjA2IDQuNTlMNS44MSAyMjcuNjRjLTEyLjM4IDEwLjMzLTMuNDUgMzAuNDIgMTIuNTEgMjguMTR6bTU1Ni44NyAzNC4xbC0xMDAuNjYtNTAuMzFBNDcuOTkyIDQ3Ljk5MiAwIDAgMSA0NDggMTk2LjY1di0zNi42OWg2NGwyOC4wOSAyMi42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3aDMwLjk3YTMyIDMyIDAgMCAwIDI4LjYyLTE3LjY5bDE0LjMxLTI4LjYyYTMyLjAwNSAzMi4wMDUgMCAwIDAtMy4wMi0zMy41MWwtNzQuNTMtOTkuMzhDNTUzLjAyIDQuNyA1NDMuNTQgMCA1MzMuNDcgMEgyOTYuMDJjLTcuMTMgMC0xMC43IDguNTctNS42NiAxMy42MUwzNTIgNjMuOTYgMjkyLjQyIDg4LjhjLTUuOSAyLjk1LTUuOSAxMS4zNiAwIDE0LjMxTDM1MiAxMjcuOTZ2MTA4LjYyYzAgNzIuMDggMzYuMDMgMTM5LjM5IDk2IDE3OS4zOC0xOTUuNTkgNi44MS0zNDQuNTYgNDEuMDEtNDM0LjEgNjAuOTFDNS43OCA0NzguNjcgMCA0ODUuODggMCA0OTQuMiAwIDUwNCA3Ljk1IDUxMiAxNy43NiA1MTJoNDk5LjA4YzYzLjI5LjAxIDExOS42MS00Ny41NiAxMjIuOTktMTEwLjc2IDIuNTItNDcuMjgtMjIuNzMtOTAuNC02NC42NC0xMTEuMzZ6TTQ4OS4xOCA2Ni4yNWw0NS42NSAxMS40MWMtMi43NSAxMC45MS0xMi40NyAxOC44OS0yNC4xMyAxOC4yNi0xMi45Ni0uNzEtMjUuODUtMTIuNTMtMjEuNTItMjkuNjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHJhd1BvbHlnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDM1MmMtLjM1IDAtLjY3LjEtMS4wMi4xbC0zOS4yLTY1LjMyYzUuMDctOS4xNyA4LjIyLTE5LjU2IDguMjItMzAuNzhzLTMuMTQtMjEuNjEtOC4yMi0zMC43OGwzOS4yLTY1LjMyYy4zNS4wMS42Ny4xIDEuMDIuMSAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0cy0yOC42NS02NC02NC02NGMtMjMuNjMgMC00NC4wNCAxMi45NS01NS4xMiAzMkgxMTkuMTJDMTA4LjA0IDQ0Ljk1IDg3LjYzIDMyIDY0IDMyIDI4LjY1IDMyIDAgNjAuNjUgMCA5NmMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEydjIwOS43NUMxMi45NSAzNzEuOTYgMCAzOTIuMzcgMCA0MTZjMCAzNS4zNSAyOC42NSA2NCA2NCA2NCAyMy42MyAwIDQ0LjA0LTEyLjk1IDU1LjEyLTMyaDIwOS43NWMxMS4wOSAxOS4wNSAzMS40OSAzMiA1NS4xMiAzMiAzNS4zNSAwIDY0LTI4LjY1IDY0LTY0IC4wMS0zNS4zNS0yOC42NC02NC02My45OS02NHptLTI4OCA4Ljg4VjE1MS4xMkE2My44MjUgNjMuODI1IDAgMCAwIDExOS4xMiAxMjhoMjA4LjM2bC0zOC40NiA2NC4xYy0uMzUtLjAxLS42Ny0uMS0xLjAyLS4xLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjRjLjM1IDAgLjY3LS4xIDEuMDItLjFsMzguNDYgNjQuMUgxMTkuMTJBNjMuNzQ4IDYzLjc0OCAwIDAgMCA5NiAzNjAuODh6TTI3MiAyNTZjMC04LjgyIDcuMTgtMTYgMTYtMTZzMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTZ6TTQwMCA5NmMwIDguODItNy4xOCAxNi0xNiAxNnMtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2IDE2IDcuMTggMTYgMTZ6TTY0IDgwYzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2LTE2LTcuMTgtMTYtMTYgNy4xOC0xNiAxNi0xNnpNNDggNDE2YzAtOC44MiA3LjE4LTE2IDE2LTE2czE2IDcuMTggMTYgMTYtNy4xOCAxNi0xNiAxNi0xNi03LjE4LTE2LTE2em0zMzYgMTZjLTguODIgMC0xNi03LjE4LTE2LTE2czcuMTgtMTYgMTYtMTYgMTYgNy4xOCAxNiAxNi03LjE4IDE2LTE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1TdGVlbHBhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMzJDMTI4Ljk0IDMyIDAgODkuMzEgMCAxNjB2MTkyYzAgNzAuNjkgMTI4Ljk0IDEyOCAyODggMTI4czI4OC01Ny4zMSAyODgtMTI4VjE2MGMwLTcwLjY5LTEyOC45NC0xMjgtMjg4LTEyOHptLTgyLjk5IDE1OC4zNmMtNC40NSAxNi42MS0xNC41NCAzMC41Ny0yOC4zMSA0MC40OEMxMDAuMjMgMjE3LjQ2IDQ4IDE5MC43OCA0OCAxNjBjMC0zMC4xNiA1MC4xMS01Ni4zOSAxMjQuMDQtNzAuMDNsMjUuNiA0NC4zNGM5Ljg2IDE3LjA5IDEyLjQ4IDM2Ljk5IDcuMzcgNTYuMDV6TTI4OCAyNDBjLTIxLjA4IDAtNDEuNDEtMS02MC44OS0yLjcgOC4wNi0yNi4xMyAzMi4xNS00NS4zIDYwLjg5LTQ1LjNzNTIuODMgMTkuMTcgNjAuODkgNDUuM0MzMjkuNDEgMjM5IDMwOS4wOCAyNDAgMjg4IDI0MHptNjQtMTQ0YzAgMzUuMjktMjguNzEgNjQtNjQgNjRzLTY0LTI4LjcxLTY0LTY0VjgyLjk2YzIwLjQtMS44OCA0MS44LTIuOTYgNjQtMi45NnM0My42IDEuMDggNjQgMi45NlY5NnptNDYuOTMgMTM0LjljLTEzLjgxLTkuOTEtMjMuOTQtMjMuOS0yOC40LTQwLjU0LTUuMTEtMTkuMDYtMi40OS0zOC45NiA3LjM4LTU2LjA0bDI1LjY1LTQ0LjQyQzQ3Ny43MiAxMDMuNSA1MjggMTI5Ljc5IDUyOCAxNjBjMCAzMC44My01Mi40IDU3LjU0LTEyOS4wNyA3MC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMxLjM0IDEyMi4wNWw3My41My00Ny40MmExNiAxNiAwIDAgMCA0LjQ0LTIyLjE5bC04Ljg3LTEzLjMxYTE2IDE2IDAgMCAwLTIyLjE5LTQuNDRsLTExMC4wNiA3MUMzMTguNDMgOTYuOTEgMjcxLjIyIDk2IDI1NiA5NiAyMTkuNTUgOTYgMCAxMDAuNTUgMCAyMDguMTV2MTYwLjIzYzAgMzAuMjcgMjcuNSA1Ny42OCA3MiA3Ny44NnYtMTAxLjlhMjQgMjQgMCAxIDEgNDggMHYxMTguOTNjMzMuMDUgOS4xMSA3MS4wNyAxNS4wNiAxMTIgMTYuNzNWMzc2LjM5YTI0IDI0IDAgMSAxIDQ4IDBWNDgwYzQwLjkzLTEuNjcgNzguOTUtNy42MiAxMTItMTYuNzNWMzQ0LjM0YTI0IDI0IDAgMSAxIDQ4IDB2MTAxLjljNDQuNS0yMC4xOCA3Mi00Ny41OSA3Mi03Ny44NlYyMDguMTVjMC00My4zMi0zNS43Ni02OS43Ni04MC42Ni04Ni4xek0yNTYgMjcyLjI0Yy0xMTQuODggMC0yMDgtMjguNjktMjA4LTY0LjA5czkzLjEyLTY0LjA4IDIwOC02NC4wOGMxNy4xNSAwIDMzLjczLjcxIDQ5LjY4IDEuOTFsLTcyLjgxIDQ3YTE2IDE2IDAgMCAwLTQuNDMgMjIuMTlsOC44NyAxMy4zMWExNiAxNiAwIDAgMCAyMi4xOSA0LjQ0bDExOC42NC03Ni41MkM0MzAuMDkgMTY4IDQ2NCAxODYuODQgNDY0IDIwOC4xNWMwIDM1LjQtOTMuMTMgNjQuMDktMjA4IDY0LjA5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYURydW1zdGlja0JpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDYyLjggNDkuNTdhMTY5LjQ0IDE2OS40NCAwIDAgMC0yMzkuNSAwQzE4Ny44MiA4NSAxNjAuMTMgMTI4IDE2MC4xMyAxOTJ2ODUuODNsLTQwLjYyIDQwLjU5Yy05LjcgOS42OS0yNCAxMS4wNy0zNi43OCA2YTYwLjMzIDYwLjMzIDAgMCAwLTY1IDk4LjcyQzMzIDQzOC4zOSA1NC4yNCA0NDIuNyA3My44NSA0MzguMjFjLTQuNSAxOS42LS4xOCA0MC44MyAxNS4xIDU2LjFhNjAuMzUgNjAuMzUgMCAwIDAgOTguOC02NWMtNS4wOS0xMi43My0zLjcyLTI3IDYtMzYuNzVMMjM0LjM2IDM1Mmg4NS44OWExODcuODcgMTg3Ljg3IDAgMCAwIDYxLjg5LTEwYy0zOS42NC00My44OS0zOS44My0xMTAuMjMgMS4wNS0xNTEuMDcgMzQuMzgtMzQuMzYgODYuNzYtMzkuNDYgMTI4Ljc0LTE2LjggMS4zLTQ0Ljk2LTE0LjgxLTkwLjI4LTQ5LjEzLTEyNC41NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFEdW1iYmVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDQgOTZINTZjLTEzLjMgMC0yNCAxMC43LTI0IDI0djEwNEg4Yy00LjQgMC04IDMuNi04IDh2NDhjMCA0LjQgMy42IDggOCA4aDI0djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bTUyOCAxMjhoLTI0VjEyMGMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI3MmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyODhoMjRjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LTh6TTQ1NiAzMmgtNDhjLTEzLjMgMC0yNCAxMC43LTI0IDI0djE2OEgyNTZWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTQ4Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjg4aDEyOHYxNjhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoNDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWNTZjMC0xMy4zLTEwLjctMjQtMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVtcHN0ZXJGaXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxOC43IDEwNC4xbC4yLS4yLTE0LjQtNzJIMzA0djEyOGg2MC44YzE2LjItMTkuMyAzNC4yLTM4LjIgNTMuOS01NS44ek0yNzIgMzJIMTcxLjVsLTI1LjYgMTI4SDI3MlYzMnptMTg5LjMgNzIuMWMxOC4yIDE2LjMgMzUuNSAzMy43IDUxLjEgNTEuNSA1LjctNS42IDExLjQtMTEuMSAxNy4zLTE2LjNsMjEuMy0xOSAyMS4zIDE5YzEuMS45IDIuMSAyLjEgMy4xIDMuMS0uMS0uOC4yLTEuNSAwLTIuM2wtMjQtOTZDNTQ5LjcgMzcgNTQzLjMgMzIgNTM2IDMyaC05OC45bDEyLjMgNjEuNSAxMS45IDEwLjZ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptMzI0LjYgMzJIMzJsNCAzMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgyOGwyMCAxNjB2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtMTZoMjA4LjhjLTMwLjItMzMuNy00OC44LTc3LjktNDguOC0xMjYuNCAwLTM1LjkgMTkuOS04Mi45IDUyLjYtMTI5LjZ6bTIxMC41LTI4LjhjLTE0LjkgMTMuMy0yOC4zIDI3LjItNDAuMiA0MS4yLTE5LjUtMjUuOC00My42LTUyLTcxLTc2LjQtNzAuMiA2Mi43LTEyMCAxNDQuMy0xMjAgMTkzLjYgMCA4Ny41IDcxLjYgMTU4LjQgMTYwIDE1OC40czE2MC03MC45IDE2MC0xNTguNGMuMS0zNi42LTM3LTExMi4yLTg4LjgtMTU4LjR6bS0xOC42IDIyOS40Yy0xNC43IDEwLjctMzIuOSAxNy01Mi41IDE3LTQ5IDAtODguOS0zMy41LTg4LjktODggMC0yNy4xIDE2LjUtNTEgNDkuNC05MS45IDQuNyA1LjYgNjcuMSA4OC4xIDY3LjEgODguMWwzOS44LTQ3YzIuOCA0LjggNS40IDkuNSA3LjcgMTQgMTguNiAzNi43IDEwLjggODMuNi0yMi42IDEwNy44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUR1bXBzdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MCAxNjBjMTAuNCAwIDE4LTkuOCAxNS41LTE5LjlsLTI0LTk2QzU0OS43IDM3IDU0My4zIDMyIDUzNiAzMmgtOTguOWwyNS42IDEyOEg1NjB6TTI3MiAzMkgxNzEuNWwtMjUuNiAxMjhIMjcyVjMyem0xMzIuNSAwSDMwNHYxMjhoMTI2LjFMNDA0LjUgMzJ6TTE2IDE2MGg5Ny4zbDI1LjYtMTI4SDQwYy03LjMgMC0xMy43IDUtMTUuNSAxMi4xbC0yNCA5NkMtMiAxNTAuMiA1LjYgMTYwIDE2IDE2MHptNTQ0IDY0aC0yMGw0LTMySDMybDQgMzJIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMjhsMjAgMTYwdjE2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2aDMyMHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmwyMC0xNjBoMjhjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRHVuZ2VvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjguNzMgMTk1LjMybC04Mi44MS01MS43NmMtOC4wNC01LjAyLTE4Ljk5LTIuMTctMjIuOTMgNi40NUEyNTQuMTkgMjU0LjE5IDAgMCAwIC41NCAyMzkuMjhDLS4wNSAyNDguMzcgNy41OSAyNTYgMTYuNjkgMjU2aDk3LjEzYzcuOTYgMCAxNC4wOC02LjI1IDE1LjAxLTE0LjE2IDEuMDktOS4zMyAzLjI0LTE4LjMzIDYuMjQtMjYuOTQgMi41Ni03LjM0LjI1LTE1LjQ2LTYuMzQtMTkuNTh6TTMxOS4wMyA4QzI5OC44NiAyLjgyIDI3Ny43NyAwIDI1NiAwcy00Mi44NiAyLjgyLTYzLjAzIDhjLTkuMTcgMi4zNS0xMy45MSAxMi42LTEwLjM5IDIxLjM5bDM3LjQ3IDEwNC4wM0ExNi4wMDMgMTYuMDAzIDAgMCAwIDIzNS4xIDE0NGg0MS44YzYuNzUgMCAxMi43Ny00LjIzIDE1LjA1LTEwLjU4bDM3LjQ3LTEwNC4wM2MzLjUyLTguNzktMS4yMi0xOS4wMy0xMC4zOS0yMS4zOXpNMTEyIDI4OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em03Ny4zMS0yODMuNjdsLTM2LjMyLTkwLjhjLTMuNTMtOC44My0xNC4xMy0xMi45OS0yMi40Mi04LjMxYTI1Ny4zMDggMjU3LjMwOCAwIDAgMC03MS42MSA1OS44OWMtNi4wNiA3LjMyLTMuODUgMTguNDggNC4yMiAyMy41Mmw4Mi45MyA1MS44M2M2LjUxIDQuMDcgMTQuNjYgMi42MiAyMC4xMS0yLjc5IDUuMTgtNS4xNSAxMC43OS05Ljg1IDE2Ljc5LTE0LjA1IDYuMjgtNC40MSA5LjE1LTEyLjE3IDYuMy0xOS4yOXpNMzk4LjE4IDI1Nmg5Ny4xM2M5LjEgMCAxNi43NC03LjYzIDE2LjE1LTE2LjcyYTI1NC4xMzUgMjU0LjEzNSAwIDAgMC0yMi40NS04OS4yN2MtMy45NC04LjYyLTE0Ljg5LTExLjQ3LTIyLjkzLTYuNDVsLTgyLjgxIDUxLjc2Yy02LjU5IDQuMTItOC45IDEyLjI0LTYuMzQgMTkuNTggMy4wMSA4LjYxIDUuMTUgMTcuNjIgNi4yNCAyNi45NC45MyA3LjkxIDcuMDUgMTQuMTYgMTUuMDEgMTQuMTZ6bTU0Ljg1LTE2Mi44OWEyNTcuMzA4IDI1Ny4zMDggMCAwIDAtNzEuNjEtNTkuODljLTguMjgtNC42OC0xOC44OC0uNTItMjIuNDIgOC4zMWwtMzYuMzIgOTAuOGMtMi44NSA3LjEyLjAyIDE0Ljg4IDYuMyAxOS4yOCA2IDQuMiAxMS42MSA4LjkgMTYuNzkgMTQuMDUgNS40NCA1LjQxIDEzLjYgNi44NiAyMC4xMSAyLjc5bDgyLjkzLTUxLjgzYzguMDctNS4wMyAxMC4yOS0xNi4xOSA0LjIyLTIzLjUxek00OTYgMjg4aC05NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTY0YzAtOC44NC03LjE2LTE2LTE2LTE2em0wIDEyOGgtOTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDk2YzguODQgMCAxNi03LjE2IDE2LTE2di02NGMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjQwIDE3Ny42MlY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTc3LjYyYy01LjIzLS44OS0xMC41Mi0xLjYyLTE2LTEuNjJzLTEwLjc3LjczLTE2IDEuNjJ6bS02NCA0MS41MVY0NzJjMCA0LjQyIDMuNTggOCA4IDhoMTZjNC40MiAwIDgtMy41OCA4LThWMTg5LjM2Yy0xMi43OCA3LjQ1LTIzLjg0IDE3LjQ3LTMyIDI5Ljc3em0xMjgtMjkuNzdWNDcyYzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04VjIxOS4xM2MtOC4xNi0xMi4zLTE5LjIyLTIyLjMyLTMyLTI5Ljc3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAyLjYgODMuMmw5MC4yIDkwLjJjMy44IDMuOCAzLjggMTAgMCAxMy44TDI3NC40IDQwNS42bC05Mi44IDEwLjNjLTEyLjQgMS40LTIyLjktOS4xLTIxLjUtMjEuNWwxMC4zLTkyLjhMMzg4LjggODMuMmMzLjgtMy44IDEwLTMuOCAxMy44IDB6bTE2Mi0yMi45bC00OC44LTQ4LjhjLTE1LjItMTUuMi0zOS45LTE1LjItNTUuMiAwbC0zNS40IDM1LjRjLTMuOCAzLjgtMy44IDEwIDAgMTMuOGw5MC4yIDkwLjJjMy44IDMuOCAxMCAzLjggMTMuOCAwbDM1LjQtMzUuNGMxNS4yLTE1LjMgMTUuMi00MCAwLTU1LjJ6TTM4NCAzNDYuMlY0NDhINjRWMTI4aDIyOS44YzMuMiAwIDYuMi0xLjMgOC41LTMuNWw0MC00MGM3LjYtNy42IDIuMi0yMC41LTguNS0yMC41SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA2LjJjMC0xMC43LTEyLjktMTYtMjAuNS04LjVsLTQwIDQwYy0yLjIgMi4zLTMuNSA1LjMtMy41IDguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFZ2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDBDODYgMCAwIDIxNCAwIDMyMHM4NiAxOTIgMTkyIDE5MiAxOTItODYgMTkyLTE5MlMyOTggMCAxOTIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFamVjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzg0djY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMkgzMmMtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMydi02NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoMzg0YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnpNNDguMDUzIDMyMGgzNTEuODg2YzQxLjY1MSAwIDYzLjU4MS00OS42NzQgMzUuMzgzLTgwLjQzNUwyNTkuMzgzIDQ3LjU1OGMtMTkuMDE0LTIwLjc0My01MS43NTEtMjAuNzQ0LTcwLjc2NyAwTDEyLjY3IDIzOS41NjVDLTE1LjQ3NSAyNzAuMjY4IDYuMzI0IDMyMCA0OC4wNTMgMzIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVsbGlwc2lzSCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjggMjU2YzAgMzkuOC0zMi4yIDcyLTcyIDcycy03Mi0zMi4yLTcyLTcyIDMyLjItNzIgNzItNzIgNzIgMzIuMiA3MiA3MnptMTA0LTcyYy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnptLTM1MiAwYy0zOS44IDAtNzIgMzIuMi03MiA3MnMzMi4yIDcyIDcyIDcyIDcyLTMyLjIgNzItNzItMzIuMi03Mi03Mi03MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFbGxpcHNpc1YgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDE5MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMTg0YzM5LjggMCA3MiAzMi4yIDcyIDcycy0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzIgMzIuMi03MiA3Mi03MnpNMjQgODBjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03MlMxMzUuOCA4IDk2IDggMjQgNDAuMiAyNCA4MHptMCAzNTJjMCAzOS44IDMyLjIgNzIgNzIgNzJzNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyLTcyIDMyLjItNzIgNzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVPcGVuVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMjE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNnptLTE2IDgwYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNnptOTYgMTIxLjEzYy0xNi40MiAwLTMyLjg0LTUuMDYtNDYuODYtMTUuMTlMMCAyNTAuODZWNDY0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjUwLjg2TDMwMi44NiA0MDEuOTRjLTE0LjAyIDEwLjEyLTMwLjQ0IDE1LjE5LTQ2Ljg2IDE1LjE5em0yMzcuNjEtMjU0LjE4Yy04Ljg1LTYuOTQtMTcuMjQtMTMuNDctMjkuNjEtMjIuODFWOTZjMC0yNi41MS0yMS40OS00OC00OC00OGgtNzcuNTVjLTMuMDQtMi4yLTUuODctNC4yNi05LjA0LTYuNTZDMzEyLjYgMjkuMTcgMjc5LjItLjM1IDI1NiAwYy0yMy4yLS4zNS01Ni41OSAyOS4xNy03My40MSA0MS40NC0zLjE3IDIuMy02IDQuMzYtOS4wNCA2LjU2SDk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4djQ0LjE0Yy0xMi4zNyA5LjMzLTIwLjc2IDE1Ljg3LTI5LjYxIDIyLjgxQTQ3Ljk5NSA0Ny45OTUgMCAwIDAgMCAyMDAuNzJ2MTAuNjVsOTYgNjkuMzVWOTZoMzIwdjE4NC43Mmw5Ni02OS4zNXYtMTAuNjVjMC0xNC43NC02Ljc4LTI4LjY3LTE4LjM5LTM3Ljc3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNDY0YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMjAwLjcyNGE0OCA0OCAwIDAgMSAxOC4zODctMzcuNzc2YzI0LjkxMy0xOS41MjkgNDUuNTAxLTM1LjM2NSAxNjQuMi0xMjEuNTExQzE5OS40MTIgMjkuMTcgMjMyLjc5Ny0uMzQ3IDI1NiAuMDAzYzIzLjE5OC0uMzU0IDU2LjU5NiAyOS4xNzIgNzMuNDEzIDQxLjQzMyAxMTguNjg3IDg2LjEzNyAxMzkuMzAzIDEwMS45OTUgMTY0LjIgMTIxLjUxMkE0OCA0OCAwIDAgMSA1MTIgMjAwLjcyNFY0NjR6bS02NS42NjYtMTk2LjYwNWMtMi41NjMtMy43MjgtNy43LTQuNTk1LTExLjMzOS0xLjkwNy0yMi44NDUgMTYuODczLTU1LjQ2MiA0MC43MDUtMTA1LjU4MiA3Ny4wNzktMTYuODI1IDEyLjI2Ni01MC4yMSA0MS43ODEtNzMuNDEzIDQxLjQzLTIzLjIxMS4zNDQtNTYuNTU5LTI5LjE0My03My40MTMtNDEuNDMtNTAuMTE0LTM2LjM3LTgyLjczNC02MC4yMDQtMTA1LjU4Mi03Ny4wNzktMy42MzktMi42ODgtOC43NzYtMS44MjEtMTEuMzM5IDEuOTA3bC05LjA3MiAxMy4xOTZhNy45OTggNy45OTggMCAwIDAgMS44MzkgMTAuOTY3YzIyLjg4NyAxNi44OTkgNTUuNDU0IDQwLjY5IDEwNS4zMDMgNzYuODY4IDIwLjI3NCAxNC43ODEgNTYuNTI0IDQ3LjgxMyA5Mi4yNjQgNDcuNTczIDM1LjcyNC4yNDIgNzEuOTYxLTMyLjc3MSA5Mi4yNjMtNDcuNTczIDQ5Ljg1LTM2LjE3OSA4Mi40MTgtNTkuOTcgMTA1LjMwMy03Ni44NjhhNy45OTggNy45OTggMCAwIDAgMS44MzktMTAuOTY3bC05LjA3MS0xMy4xOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRW52ZWxvcGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0xNzguMTE3IDI2Mi4xMDRDODcuNDI5IDE5Ni4yODcgODguMzUzIDE5Ni4xMjEgNjQgMTc3LjE2N1YxNTJjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDI3MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MjUuMTY3Yy0yNC4zNzEgMTguOTY5LTIzLjQzNCAxOS4xMjQtMTE0LjExNyA4NC45MzgtMTAuNSA3LjY1NS0zMS4zOTIgMjYuMTItNDUuODgzIDI1Ljg5NC0xNC41MDMuMjE4LTM1LjM2Ny0xOC4yMjctNDUuODgzLTI1Ljg5NXpNMzg0IDIxNy43NzVWMzYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEg4OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIxNy43NzVjMTMuOTU4IDEwLjc5NCAzMy4zMjkgMjUuMjM2IDk1LjMwMyA3MC4yMTQgMTQuMTYyIDEwLjM0MSAzNy45NzUgMzIuMTQ1IDY0LjY5NCAzMi4wMSAyNi44ODcuMTM0IDUxLjAzNy0yMi4wNDEgNjQuNzItMzIuMDI1IDYxLjk1OC00NC45NjUgODEuMzI1LTU5LjQwNiA5NS4yODMtNzAuMTk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVudmVsb3BlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMi4zIDE5MC44YzMuOS0zLjEgOS43LS4yIDkuNyA0LjdWNDAwYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxOTUuNmMwLTUgNS43LTcuOCA5LjctNC43IDIyLjQgMTcuNCA1Mi4xIDM5LjUgMTU0LjEgMTEzLjYgMjEuMSAxNS40IDU2LjcgNDcuOCA5Mi4yIDQ3LjYgMzUuNy4zIDcyLTMyLjggOTIuMy00Ny42IDEwMi03NC4xIDEzMS42LTk2LjMgMTU0LTExMy43ek0yNTYgMzIwYzIzLjIuNCA1Ni42LTI5LjIgNzMuNC00MS40IDEzMi43LTk2LjMgMTQyLjgtMTA0LjcgMTczLjQtMTI4LjcgNS44LTQuNSA5LjItMTEuNSA5LjItMTguOXYtMTljMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2MTljMCA3LjQgMy40IDE0LjMgOS4yIDE4LjkgMzAuNiAyMy45IDQwLjcgMzIuNCAxNzMuNCAxMjguNyAxNi44IDEyLjIgNTAuMiA0MS44IDczLjQgNDEuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFcXVhbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDMwNEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wLTE5MkgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDM4NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUVyYXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDI3My45NDFjMTguNzQ1LTE4Ljc0NSAxOC43NDUtNDkuMTM3IDAtNjcuODgybC0xNjAtMTYwYy0xOC43NDUtMTguNzQ1LTQ5LjEzNi0xOC43NDYtNjcuODgzIDBsLTI1NiAyNTZjLTE4Ljc0NSAxOC43NDUtMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4Mmw5NiA5NkE0OC4wMDQgNDguMDA0IDAgMCAwIDE0NCA0ODBoMzU2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMzU1Ljg4M2wxNDIuMDU4LTE0Mi4wNTl6bS0zMDIuNjI3LTYyLjYyN2wxMzcuMzczIDEzNy4zNzNMMjY1LjM3MyA0MTZIMTUwLjYyOGwtODAtODAgMTI0LjY4Ni0xMjQuNjg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV0aGVybmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxOTJoLTQ4di00OGMwLTguOC03LjItMTYtMTYtMTZoLTQ4VjgwYzAtOC44LTcuMi0xNi0xNi0xNkgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnY0OEg4MGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MjI0YzAgOC44IDcuMiAxNiAxNiAxNmg4MFYzMjBoMzJ2MTI4aDY0VjMyMGgzMnYxMjhoNjRWMzIwaDMydjEyOGg2NFYzMjBoMzJ2MTI4aDgwYzguOCAwIDE2LTcuMiAxNi0xNlYyMDhjMC04LjgtNy4yLTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV1cm9TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMC43MDYgNDEzLjc2NWMtMS4zMTQtNi42My03LjgzNS0xMC44NzItMTQuNDI0LTkuMzY5LTEwLjY5MiAyLjQzOS0yNy40MjIgNS40MTMtNDUuNDI2IDUuNDEzLTU2Ljc2MyAwLTEwMS45MjktMzQuNzktMTIxLjQ2MS04NS40NDloMTEzLjY4OWExMiAxMiAwIDAgMCAxMS43MDgtOS4zNjlsNi4zNzMtMjguMzZjMS42ODYtNy41MDItNC4wMTktMTQuNjMxLTExLjcwOC0xNC42MzFIMTE1LjIyYy0xLjIxLTE0LjMyOC0xLjQxNC0yOC4yODcuMTM3LTQyLjI0NUgyNjEuOTVhMTIgMTIgMCAwIDAgMTEuNzIzLTkuNDM0bDYuNTEyLTI5Ljc1NWMxLjYzOC03LjQ4NC00LjA2MS0xNC41NjYtMTEuNzIzLTE0LjU2NkgxMzAuMTg0YzIwLjYzMy00NC45OTEgNjIuNjktNzUuMDMgMTE3LjYxOS03NS4wMyAxNC40ODYgMCAyOC41NjQgMi4yNSAzNy44NTEgNC4xNDUgNi4yMTYgMS4yNjggMTIuMzQ3LTIuNDk4IDE0LjAwMi04LjYyM2wxMS45OTEtNDQuMzY4YzEuODIyLTYuNzQxLTIuNDY1LTEzLjYxNi05LjMyNi0xNC45MTdDMjkwLjIxNyAzNC45MTIgMjcwLjcxIDMyIDI0OS42MzUgMzIgMTUyLjQ1MSAzMiA3NC4wMyA5Mi4yNTIgNDUuMDc1IDE3NkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOS43NTVjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMS41NjljLTEuMDA5IDEzLjYwNy0xLjE4MSAyOS4yODctLjE4MSA0Mi4yNDVIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjguMzZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzMC4xMTRDNjcuMTM5IDQxNC42OTIgMTQ1LjI2NCA0ODAgMjQ5LjYzNSA0ODBjMjYuMzAxIDAgNDguNTYyLTQuNTQ0IDYxLjEwMS03Ljc4OCA2LjE2Ny0xLjU5NSAxMC4wMjctNy43MDggOC43ODgtMTMuOTU3bC04LjgxOC00NC40OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNoYW5nZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE2OHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDM2MFY4MGMwLTIxLjM2NyAyNS44OTktMzIuMDQyIDQwLjk3MS0xNi45NzFsODAgODBjOS4zNzIgOS4zNzMgOS4zNzIgMjQuNTY5IDAgMzMuOTQxbC04MCA4MEM0MDkuOTU2IDI3MS45ODIgMzg0IDI2MS40NTYgMzg0IDI0MHYtNDhIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptNDg4IDE1MkgxMjh2LTQ4YzAtMjEuMzE0LTI1Ljg2Mi0zMi4wOC00MC45NzEtMTYuOTcxbC04MCA4MGMtOS4zNzIgOS4zNzMtOS4zNzIgMjQuNTY5IDAgMzMuOTQxbDgwIDgwQzEwMi4wNTcgNDYzLjk5NyAxMjggNDUzLjQzNyAxMjggNDMydi00OGgzNjBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhjbGFtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNi45OTctMTExLjA0MyAyNDgtMjQ4IDI0OFM4IDM5Mi45OTcgOCAyNTZDOCAxMTkuMDgzIDExOS4wNDMgOCAyNTYgOHMyNDggMTExLjA4MyAyNDggMjQ4em0tMjQ4IDUwYy0yNS40MDUgMC00NiAyMC41OTUtNDYgNDZzMjAuNTk1IDQ2IDQ2IDQ2IDQ2LTIwLjU5NSA0Ni00Ni0yMC41OTUtNDYtNDYtNDZ6bS00My42NzMtMTY1LjM0Nmw3LjQxOCAxMzZjLjM0NyA2LjM2NCA1LjYwOSAxMS4zNDYgMTEuOTgyIDExLjM0Nmg0OC41NDZjNi4zNzMgMCAxMS42MzUtNC45ODIgMTEuOTgyLTExLjM0Nmw3LjQxOC0xMzZjLjM3NS02Ljg3NC01LjA5OC0xMi42NTQtMTEuOTgyLTEyLjY1NGgtNjMuMzgzYy02Ljg4NCAwLTEyLjM1NiA1Ljc4LTExLjk4MSAxMi42NTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhjbGFtYXRpb25UcmlhbmdsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjkuNTE3IDQ0MC4wMTNDNTg3Ljk3NSA0NzIuMDA3IDU2NC44MDYgNTEyIDUyNy45NCA1MTJINDguMDU0Yy0zNi45MzcgMC01OS45OTktNDAuMDU1LTQxLjU3Ny03MS45ODdMMjQ2LjQyMyAyMy45ODVjMTguNDY3LTMyLjAwOSA2NC43Mi0zMS45NTEgODMuMTU0IDBsMjM5Ljk0IDQxNi4wMjh6TTI4OCAzNTRjLTI1LjQwNSAwLTQ2IDIwLjU5NS00NiA0NnMyMC41OTUgNDYgNDYgNDYgNDYtMjAuNTk1IDQ2LTQ2LTIwLjU5NS00Ni00Ni00NnptLTQzLjY3My0xNjUuMzQ2bDcuNDE4IDEzNmMuMzQ3IDYuMzY0IDUuNjA5IDExLjM0NiAxMS45ODIgMTEuMzQ2aDQ4LjU0NmM2LjM3MyAwIDExLjYzNS00Ljk4MiAxMS45ODItMTEuMzQ2bDcuNDE4LTEzNmMuMzc1LTYuODc0LTUuMDk4LTEyLjY1NC0xMS45ODItMTIuNjU0aC02My4zODNjLTYuODg0IDAtMTIuMzU2IDUuNzgtMTEuOTgxIDEyLjY1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgNDMyYzAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHMtODAtMzUuODg4LTgwLTgwIDM1Ljg4OC04MCA4MC04MCA4MCAzNS44ODggODAgODB6TTI1LjI2IDI1LjE5OWwxMy42IDI3MkMzOS40OTkgMzA5Ljk3MiA1MC4wNDEgMzIwIDYyLjgzIDMyMGg2Ni4zNGMxMi43ODkgMCAyMy4zMzEtMTAuMDI4IDIzLjk3LTIyLjgwMWwxMy42LTI3MkMxNjcuNDI1IDExLjQ5IDE1Ni40OTYgMCAxNDIuNzcgMEg0OS4yM0MzNS41MDQgMCAyNC41NzUgMTEuNDkgMjUuMjYgMjUuMTk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4cGFuZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTIuNjg2IDMxNS4zMTRMMTIwIDQwOGwzMi45MjIgMzEuMDI5YzE1LjEyIDE1LjEyIDQuNDEyIDQwLjk3MS0xNi45NyA0MC45NzFoLTExMkMxMC42OTcgNDgwIDAgNDY5LjI1NSAwIDQ1NlYzNDRjMC0yMS4zODIgMjUuODAzLTMyLjA5IDQwLjkyMi0xNi45NzFMNzIgMzYwbDkyLjY4Ni05Mi42ODZjNi4yNDgtNi4yNDggMTYuMzc5LTYuMjQ4IDIyLjYyNyAwbDI1LjM3MyAyNS4zNzNjNi4yNDkgNi4yNDggNi4yNDkgMTYuMzc4IDAgMjIuNjI3em0yMi42MjgtMTE4LjYyOEwzMjggMTA0bC0zMi45MjItMzEuMDI5QzI3OS45NTggNTcuODUxIDI5MC42NjYgMzIgMzEyLjA0OCAzMmgxMTJDNDM3LjMwMyAzMiA0NDggNDIuNzQ1IDQ0OCA1NnYxMTJjMCAyMS4zODItMjUuODAzIDMyLjA5LTQwLjkyMiAxNi45NzFMMzc2IDE1MmwtOTIuNjg2IDkyLjY4NmMtNi4yNDggNi4yNDgtMTYuMzc5IDYuMjQ4LTIyLjYyNyAwbC0yNS4zNzMtMjUuMzczYy02LjI0OS02LjI0OC02LjI0OS0xNi4zNzggMC0yMi42Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXhwYW5kQXJyb3dzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAzNDR2MTEyYTIzLjk0IDIzLjk0IDAgMCAxLTI0IDI0SDMxMmMtMjEuMzkgMC0zMi4wOS0yNS45LTE3LTQxbDM2LjItMzYuMkwyMjQgMjk1LjYgMTE2Ljc3IDQwMi45IDE1MyA0MzljMTUuMDkgMTUuMSA0LjM5IDQxLTE3IDQxSDI0YTIzLjk0IDIzLjk0IDAgMCAxLTI0LTI0VjM0NGMwLTIxLjQgMjUuODktMzIuMSA0MS0xN2wzNi4xOSAzNi4yTDE4NC40NiAyNTYgNzcuMTggMTQ4LjcgNDEgMTg1Yy0xNS4xIDE1LjEtNDEgNC40LTQxLTE3VjU2YTIzLjk0IDIzLjk0IDAgMCAxIDI0LTI0aDExMmMyMS4zOSAwIDMyLjA5IDI1LjkgMTcgNDFsLTM2LjIgMzYuMkwyMjQgMjE2LjRsMTA3LjIzLTEwNy4zTDI5NSA3M2MtMTUuMDktMTUuMS00LjM5LTQxIDE3LTQxaDExMmEyMy45NCAyMy45NCAwIDAgMSAyNCAyNHYxMTJjMCAyMS40LTI1Ljg5IDMyLjEtNDEgMTdsLTM2LjE5LTM2LjJMMjYzLjU0IDI1NmwxMDcuMjggMTA3LjNMNDA3IDMyNy4xYzE1LjEtMTUuMiA0MS00LjUgNDEgMTYuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeHBhbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxODBWNTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTI0YzYuNiAwIDEyIDUuNCAxMiAxMnY0MGMwIDYuNi01LjQgMTItMTIgMTJINjR2ODRjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6TTI4OCA0NHY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoODR2ODRjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMlY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNEgzMDBjLTYuNiAwLTEyIDUuNC0xMiAxMnptMTQ4IDI3NmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY4NGgtODRjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMTI0YzEzLjMgMCAyNC0xMC43IDI0LTI0VjMzMmMwLTYuNi01LjQtMTItMTItMTJ6TTE2MCA0Njh2LTQwYzAtNi42LTUuNC0xMi0xMi0xMkg2NHYtODRjMC02LjYtNS40LTEyLTEyLTEySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2MTI0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEyNGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXh0ZXJuYWxMaW5rQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiwzMjBINDAwYTE2LDE2LDAsMCwwLTE2LDE2VjQ0OEg2NFYxMjhIMjA4YTE2LDE2LDAsMCwwLDE2LTE2VjgwYTE2LDE2LDAsMCwwLTE2LTE2SDQ4QTQ4LDQ4LDAsMCwwLDAsMTEyVjQ2NGE0OCw0OCwwLDAsMCw0OCw0OEg0MDBhNDgsNDgsMCwwLDAsNDgtNDhWMzM2QTE2LDE2LDAsMCwwLDQzMiwzMjBaTTQ4OCwwaC0xMjhjLTIxLjM3LDAtMzIuMDUsMjUuOTEtMTcsNDFsMzUuNzMsMzUuNzNMMTM1LDMyMC4zN2EyNCwyNCwwLDAsMCwwLDM0TDE1Ny42NywzNzdhMjQsMjQsMCwwLDAsMzQsMEw0MzUuMjgsMTMzLjMyLDQ3MSwxNjljMTUsMTUsNDEsNC41LDQxLTE3VjI0QTI0LDI0LDAsMCwwLDQ4OCwwWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV4dGVybmFsTGlua1NxdWFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTg4IDE2SDI0OC4wMjljLTIxLjMxMyAwLTMyLjA4IDI1Ljg2MS0xNi45NzEgNDAuOTcxbDMxLjk4NCAzMS45ODdMNjcuNTE1IDM2NC40ODVjLTQuNjg2IDQuNjg2LTQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwzMS4wMjkgMzEuMDI5YzQuNjg3IDQuNjg2IDEyLjI4NSA0LjY4NiAxNi45NzEgMGwxOTUuNTI2LTE5NS41MjYgMzEuOTg4IDMxLjk5MUMzNTguMDU4IDI2My45NzcgMzg0IDI1My40MjUgMzg0IDIzMS45NzlWMTIwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFFeWVEcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwLjc1IDMzMy4yNWMtMTIgMTItMTguNzUgMjguMjgtMTguNzUgNDUuMjZWNDI0TDAgNDgwbDMyIDMyIDU2LTMyaDQ1LjQ5YzE2Ljk3IDAgMzMuMjUtNi43NCA0NS4yNS0xOC43NGwxMjYuNjQtMTI2LjYyLTEyOC0xMjhMNTAuNzUgMzMzLjI1ek00ODMuODggMjguMTJjLTM3LjQ3LTM3LjUtOTguMjgtMzcuNS0xMzUuNzUgMGwtNzcuMDkgNzcuMDktMTMuMS0xMy4xYy05LjQ0LTkuNDQtMjQuNjUtOS4zMS0zMy45NCAwbC00MC45NyA0MC45N2MtOS4zNyA5LjM3LTkuMzcgMjQuNTcgMCAzMy45NGwxNjEuOTQgMTYxLjk0YzkuNDQgOS40NCAyNC42NSA5LjMxIDMzLjk0IDBMNDE5Ljg4IDI4OGM5LjM3LTkuMzcgOS4zNy0yNC41NyAwLTMzLjk0bC0xMy4xLTEzLjEgNzcuMDktNzcuMDljMzcuNTEtMzcuNDggMzcuNTEtOTguMjYuMDEtMTM1Ljc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUV5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0MDBjLTc1Ljg1IDAtMTM3LjI1LTU4LjcxLTE0Mi45LTEzMy4xMUw3Mi4yIDE4NS44MmMtMTMuNzkgMTcuMy0yNi40OCAzNS41OS0zNi43MiA1NS41OWEzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcxIDM3Ni40MSAxOTcuMDcgNDQ4IDMyMCA0NDhjMjYuOTEgMCA1Mi44Ny00IDc3Ljg5LTEwLjQ2TDM0NiAzOTcuMzlhMTQ0LjEzIDE0NC4xMyAwIDAgMS0yNiAyLjYxem0zMTMuODIgNTguMWwtMTEwLjU1LTg1LjQ0YTMzMS4yNSAzMzEuMjUgMCAwIDAgODEuMjUtMTAyLjA3IDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0YTMwOC4xNSAzMDguMTUgMCAwIDAtMTQ3LjMyIDM3LjdMNDUuNDYgMy4zN0ExNiAxNiAwIDAgMCAyMyA2LjE4TDMuMzcgMzEuNDVBMTYgMTYgMCAwIDAgNi4xOCA1My45bDU4OC4zNiA0NTQuNzNhMTYgMTYgMCAwIDAgMjIuNDYtMi44MWwxOS42NC0yNS4yN2ExNiAxNiAwIDAgMC0yLjgyLTIyLjQ1em0tMTgzLjcyLTE0MmwtMzkuMy0zMC4zOEE5NC43NSA5NC43NSAwIDAgMCA0MTYgMjU2YTk0Ljc2IDk0Ljc2IDAgMCAwLTEyMS4zMS05Mi4yMUE0Ny42NSA0Ny42NSAwIDAgMSAzMDQgMTkyYTQ2LjY0IDQ2LjY0IDAgMCAxLTEuNTQgMTBsLTczLjYxLTU2Ljg5QTE0Mi4zMSAxNDIuMzEgMCAwIDEgMzIwIDExMmExNDMuOTIgMTQzLjkyIDAgMCAxIDE0NCAxNDRjMCAyMS42My01LjI5IDQxLjc5LTEzLjkgNjAuMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3Mi41MiAyNDEuNEM1MTguMjkgMTM1LjU5IDQxMC45MyA2NCAyODggNjRTNTcuNjggMTM1LjY0IDMuNDggMjQxLjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAgMjkuMTlDNTcuNzEgMzc2LjQxIDE2NS4wNyA0NDggMjg4IDQ0OHMyMzAuMzItNzEuNjQgMjg0LjUyLTE3Ny40MWEzMi4zNSAzMi4zNSAwIDAgMCAwLTI5LjE5ek0yODggNDAwYTE0NCAxNDQgMCAxIDEgMTQ0LTE0NCAxNDMuOTMgMTQzLjkzIDAgMCAxLTE0NCAxNDR6bTAtMjQwYTk1LjMxIDk1LjMxIDAgMCAwLTI1LjMxIDMuNzkgNDcuODUgNDcuODUgMCAwIDEtNjYuOSA2Ni45QTk1Ljc4IDk1Ljc4IDAgMSAwIDI4OCAxNjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1Mi41NyAxMjhjLTI4LjA5IDAtNTQuMDkgNC41Mi03Ny4wNiAxMi44NmwxMi40MS0xMjMuMTFDMjg5IDcuMzEgMjc5LjgxLTEuMTggMjY5LjMzLjEzIDE4OS42MyAxMC4xMyAxMjggNzcuNjQgMTI4IDE1OS40M2MwIDI4LjA5IDQuNTIgNTQuMDkgMTIuODYgNzcuMDZMMTcuNzUgMjI0LjA4QzcuMzEgMjIzLTEuMTggMjMyLjE5LjEzIDI0Mi42N2MxMCA3OS43IDc3LjUxIDE0MS4zMyAxNTkuMyAxNDEuMzMgMjguMDkgMCA1NC4wOS00LjUyIDc3LjA2LTEyLjg2bC0xMi40MSAxMjMuMTFjLTEuMDUgMTAuNDMgOC4xMSAxOC45MyAxOC41OSAxNy42MiA3OS43LTEwIDE0MS4zMy03Ny41MSAxNDEuMzMtMTU5LjMgMC0yOC4wOS00LjUyLTU0LjA5LTEyLjg2LTc3LjA2bDEyMy4xMSAxMi40MWMxMC40NCAxLjA1IDE4LjkzLTguMTEgMTcuNjItMTguNTktMTAtNzkuNy03Ny41MS0xNDEuMzMtMTU5LjMtMTQxLjMzek0yNTYgMjg4YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhc3RCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQzNlY3NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjE1MS45TDIzNS41IDcxLjRDMjU2LjEgNTQuMyAyODggNjguNiAyODggOTZ2MTMxLjlMNDU5LjUgNzEuNEM0ODAuMSA1NC4zIDUxMiA2OC42IDUxMiA5NnYzMjBjMCAyNy40LTMxLjkgNDEuNy01Mi41IDI0LjZMMjg4IDI4NS4zVjQxNmMwIDI3LjQtMzEuOSA0MS43LTUyLjUgMjQuNkw2NCAyODUuM1Y0MzZjMCA2LjYtNS40IDEyLTEyIDEySDEyYy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmFzdEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDc2djM2MGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJWMjg0LjFMMjc2LjUgNDQwLjZjLTIwLjYgMTcuMi01Mi41IDIuOC01Mi41LTI0LjZWMjg0LjFMNTIuNSA0NDAuNkMzMS45IDQ1Ny44IDAgNDQzLjQgMCA0MTZWOTZjMC0yNy40IDMxLjktNDEuNyA1Mi41LTI0LjZMMjI0IDIyNi44Vjk2YzAtMjcuNCAzMS45LTQxLjcgNTIuNS0yNC42TDQ0OCAyMjYuOFY3NmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZhdWNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIsMjU2SDMxMy4zOWMtMTUuNzEtMTMuNDQtMzUuNDYtMjMuMDctNTcuMzktMjhWMTgwLjQ0bC0zMi0zLjM4LTMyLDMuMzhWMjI4Yy0yMS45Myw1LTQxLjY4LDE0LjYtNTcuMzksMjhIMTZBMTYsMTYsMCwwLDAsMCwyNzJ2OTZhMTYsMTYsMCwwLDAsMTYsMTZoOTIuNzlDMTI5LjM4LDQyMS43MywxNzMsNDQ4LDIyNCw0NDhzOTQuNjItMjYuMjcsMTE1LjIxLTY0SDM1MmEzMiwzMiwwLDAsMSwzMiwzMiwzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMkExNjAsMTYwLDAsMCwwLDM1MiwyNTZaTTgxLjU5LDE1OS45MWwxNDIuNDEtMTUsMTQyLjQxLDE1YzkuNDIsMSwxNy41OS02LjgxLDE3LjU5LTE2LjhWMTEyLjg5YzAtMTAtOC4xNy0xNy44LTE3LjU5LTE2LjgxTDI1NiwxMDcuNzRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMjA4YTE2LDE2LDAsMCwwLTE2LDE2djI3Ljc0TDgxLjU5LDk2LjA4QzcyLjE3LDk1LjA5LDY0LDEwMi45LDY0LDExMi44OXYzMC4yMkM2NCwxNTMuMSw3Mi4xNywxNjAuOTEsODEuNTksMTU5LjkxWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZheCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMTYwVjc3LjI1YTMyIDMyIDAgMCAwLTkuMzgtMjIuNjNMNDI1LjM3IDkuMzdBMzIgMzIgMCAwIDAgNDAyLjc1IDBIMTYwYTMyIDMyIDAgMCAwLTMyIDMydjQ0OGEzMiAzMiAwIDAgMCAzMiAzMmgzMjBhMzIgMzIgMCAwIDAgMzItMzJWMTkyYTMyIDMyIDAgMCAwLTMyLTMyek0yODggNDMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTAtMTI4YTE2IDE2IDAgMCAxLTE2IDE2aC0zMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJhMTYgMTYgMCAwIDEgMTYgMTZ6bTEyOCAxMjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMmExNiAxNiAwIDAgMSAxNiAxNnptMC0xMjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMmExNiAxNiAwIDAgMSAxNiAxNnptMC0xMTJIMTkyVjY0aDE2MHY0OGExNiAxNiAwIDAgMCAxNiAxNmg0OHpNNjQgMTI4SDMyYTMyIDMyIDAgMCAwLTMyIDMydjMyMGEzMiAzMiAwIDAgMCAzMiAzMmgzMmEzMiAzMiAwIDAgMCAzMi0zMlYxNjBhMzIgMzIgMCAwIDAtMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVhdGhlckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgMEM0NjAuMjIgMy41NiA5Ni40NCAzOC4yIDcxLjAxIDI4Ny42MWMtMy4wOSAyNi42Ni00Ljg0IDUzLjQ0LTUuOTkgODAuMjRsMTc4Ljg3LTE3OC42OWM2LjI1LTYuMjUgMTYuNC02LjI1IDIyLjY1IDBzNi4yNSAxNi4zOCAwIDIyLjYzTDcuMDQgNDcxLjAzYy05LjM4IDkuMzctOS4zOCAyNC41NyAwIDMzLjk0IDkuMzggOS4zNyAyNC41OSA5LjM3IDMzLjk4IDBsNTcuMTMtNTcuMDdjNDIuMDktLjE0IDg0LjE1LTIuNTMgMTI1Ljk2LTcuMzYgNTMuNDgtNS40NCA5Ny4wMi0yNi40NyAxMzIuNTgtNTYuNTRIMjU1Ljc0bDE0Ni43OS00OC44OGMxMS4yNS0xNC44OSAyMS4zNy0zMC43MSAzMC40NS00Ny4xMmgtODEuMTRsMTA2LjU0LTUzLjIxQzUwMC4yOSAxMzIuODYgNTEwLjE5IDI2LjI2IDUxMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZlYXRoZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY3LjE0IDQ0Ljg0Yy02Mi41NS02Mi40OC0xNjEuNjctNjQuNzgtMjUyLjI4IDI1LjczLTc4LjYxIDc4LjUyLTYwLjk4IDYwLjkyLTg1Ljc1IDg1LjY2LTYwLjQ2IDYwLjM5LTcwLjM5IDE1MC44My02My42NCAyMTEuMTdsMTc4LjQ0LTE3OC4yNWM2LjI2LTYuMjUgMTYuNC02LjI1IDIyLjY1IDBzNi4yNSAxNi4zOCAwIDIyLjYzTDcuMDQgNDcxLjAzYy05LjM4IDkuMzctOS4zOCAyNC41NyAwIDMzLjk0IDkuMzggOS4zNyAyNC42IDkuMzcgMzMuOTggMGw2Ni4xLTY2LjAzQzE1OS40MiA0NTQuNjUgMjc5IDQ1Ny4xMSAzNTMuOTUgMzg0aC05OC4xOWwxNDcuNTctNDkuMTRjNDkuOTktNDkuOTMgMzYuMzgtMzYuMTggNDYuMzEtNDYuODZoLTk3Ljc4bDEzMS41NC00My44YzQ1LjQ0LTc0LjQ2IDM0LjMxLTE0OC44NC0xNi4yNi0xOTkuMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmVtYWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAwYzM1LjM0NiAwIDY0IDI4LjY1NCA2NCA2NHMtMjguNjU0IDY0LTY0IDY0Yy0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjRTOTIuNjU0IDAgMTI4IDBtMTE5LjI4MyAzNTQuMTc5bC00OC0xOTJBMjQgMjQgMCAwIDAgMTc2IDE0NGgtMTEuMzZjLTIyLjcxMSAxMC40NDMtNDkuNTkgMTAuODk0LTczLjI4IDBIODBhMjQgMjQgMCAwIDAtMjMuMjgzIDE4LjE3OWwtNDggMTkyQzQuOTM1IDM2OS4zMDUgMTYuMzgzIDM4NCAzMiAzODRoNTZ2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMzg0aDU2YzE1LjU5MSAwIDI3LjA3MS0xNC42NzEgMjMuMjgzLTI5LjgyMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWdodGVySmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAyMjRsLTEyOC0xNi00OC0xNmgtMjRMMjI3LjE1OCA0NGgzOS41MDlDMjc4LjMzMyA0NCAyODggNDEuMzc1IDI4OCAzOHMtOS42NjctNi0yMS4zMzMtNkgxNTJ2MTJoMTZ2MTY0aC00OGwtNjYuNjY3LTgwSDE4LjY2N0w4IDEzOC42NjdWMjA4aDh2MTZoNDh2Mi42NjZsLTY0IDh2NDIuNjY3bDY0IDhWMjg4SDE2djE2SDh2NjkuMzMzTDE4LjY2NyAzODRoMzQuNjY3TDEyMCAzMDRoNDh2MTY0aC0xNnYxMmgxMTQuNjY3YzExLjY2NyAwIDIxLjMzMy0yLjYyNSAyMS4zMzMtNnMtOS42NjctNi0yMS4zMzMtNmgtMzkuNTA5TDM0NCAzMjBoMjRsNDgtMTYgMTI4LTE2Yzk2LTIxLjMzMyA5Ni0yNi41ODMgOTYtMzIgMC01LjQxNyAwLTEwLjY2Ny05Ni0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjQgMjM2YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTY0YzAgNi42LTUuNCAxMi0xMiAxMkgxMDhjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOGMwLTYuNiA1LjQtMTIgMTItMTJoMTY4YzYuNiAwIDEyIDUuNCAxMiAxMnY4em0wLTcydjhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45ek0xMjguNCAzMzZjLTE3LjkgMC0zMi40IDEyLjEtMzIuNCAyNyAwIDE1IDE0LjYgMjcgMzIuNSAyN3MzMi40LTEyLjEgMzIuNC0yNy0xNC42LTI3LTMyLjUtMjd6TTIyNCAxMzZWMGgtNjMuNnYzMmgtMzJWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNOTUuOSAzMmgzMnYzMmgtMzJ6bTMyLjMgMzg0Yy0zMy4yIDAtNTgtMzAuNC01MS40LTYyLjlMOTYuNCAyNTZ2LTMyaDMydi0zMmgtMzJ2LTMyaDMydi0zMmgtMzJWOTZoMzJWNjRoMzJ2MzJoLTMydjMyaDMydjMyaC0zMnYzMmgzMnYzMmgtMzJ2MzJoMjIuMWM1LjcgMCAxMC43IDQuMSAxMS44IDkuN2wxNy4zIDg3LjdjNi40IDMyLjQtMTguNCA2Mi42LTUxLjQgNjIuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQXVkaW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0tNjQgMjY4YzAgMTAuNy0xMi45IDE2LTIwLjUgOC41TDEwNCAzNzZINzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDI4bDM1LjUtMzYuNWM3LjYtNy42IDIwLjUtMi4yIDIwLjUgOC41djEzNnptMzMuMi00Ny42YzkuMS05LjMgOS4xLTI0LjEgMC0zMy40LTIyLjEtMjIuOCAxMi4yLTU2LjIgMzQuNC0zMy41IDI3LjIgMjcuOSAyNy4yIDcyLjQgMCAxMDAuNC0yMS44IDIyLjMtNTYuOS0xMC40LTM0LjQtMzMuNXptODYtMTE3LjFjNTQuNCA1NS45IDU0LjQgMTQ0LjggMCAyMDAuOC0yMS44IDIyLjQtNTctMTAuMy0zNC40LTMzLjUgMzYuMi0zNy4yIDM2LjMtOTYuNSAwLTEzMy44LTIyLjEtMjIuOCAxMi4zLTU2LjMgMzQuNC0zMy41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHpNMTIzLjIwNiA0MDAuNTA1YTUuNCA1LjQgMCAwIDEtNy42MzMuMjQ2bC02NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgMC03Ljg3OWw2NC44NjYtNjAuODEyYTUuNCA1LjQgMCAwIDEgNy42MzMuMjQ2bDE5LjU3OSAyMC44ODVhNS40IDUuNCAwIDAgMS0uMzcyIDcuNzQ3TDEwMS42NSAzMzZsNDAuNzYzIDM1Ljg3NGE1LjQgNS40IDAgMCAxIC4zNzIgNy43NDdsLTE5LjU3OSAyMC44ODR6bTUxLjI5NSA1MC40NzlsLTI3LjQ1My03Ljk3YTUuNDAyIDUuNDAyIDAgMCAxLTMuNjgxLTYuNjkybDYxLjQ0LTIxMS42MjZhNS40MDIgNS40MDIgMCAwIDEgNi42OTItMy42ODFsMjcuNDUyIDcuOTdhNS40IDUuNCAwIDAgMSAzLjY4IDYuNjkybC02MS40NCAyMTEuNjI2YTUuMzk3IDUuMzk3IDAgMCAxLTYuNjkgMy42ODF6bTE2MC43OTItMTExLjA0NWwtNjQuODY2IDYwLjgxMmE1LjQgNS40IDAgMCAxLTcuNjMzLS4yNDZsLTE5LjU4LTIwLjg4NWE1LjQgNS40IDAgMCAxIC4zNzItNy43NDdMMjg0LjM1IDMzNmwtNDAuNzYzLTM1Ljg3NGE1LjQgNS40IDAgMCAxLS4zNzItNy43NDdsMTkuNTgtMjAuODg1YTUuNCA1LjQgMCAwIDEgNy42MzMtLjI0Nmw2NC44NjYgNjAuODEyYTUuNCA1LjQgMCAwIDEtLjAwMSA3Ljg3OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ29udHJhY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0ek02NCA3MmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LThWNzJ6bTAgNjRjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04di0xNnptMTkyLjgxIDI0OEgzMDRjOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTZoLTQ3LjE5Yy0xNi40NSAwLTMxLjI3LTkuMTQtMzguNjQtMjMuODYtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRhMTUuOTg2IDE1Ljk4NiAwIDAgMS0xNC4zMSA4Ljg0Yy0uMzggMC0uNzUtLjAyLTEuMTQtLjA1LTYuNDUtLjQ1LTEyLTQuNzUtMTQuMDMtMTAuODlMMTQ0IDM1NC41OWwtMTAuNjEgMzEuODhjLTUuODkgMTcuNjYtMjIuMzggMjkuNTMtNDEgMjkuNTNIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMTIuMzljNC44MyAwIDkuMTEtMy4wOCAxMC42NC03LjY2bDE4LjE5LTU0LjY0YzMuMy05LjgxIDEyLjQ0LTE2LjQxIDIyLjc4LTE2LjQxczE5LjQ4IDYuNTkgMjIuNzcgMTYuNDFsMTMuODggNDEuNjRjMTkuNzctMTYuMTkgNTQuMDUtOS43IDY2IDE0LjE2IDIuMDIgNC4wNiA1Ljk2IDYuNSAxMC4xNiA2LjV6TTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlQ3N2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptLTk2IDE0NGMwIDQuNDItMy41OCA4LTggOGgtOGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoOGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOGgtOGMtMjYuNTEgMC00OC0yMS40OS00OC00OHYtMzJjMC0yNi41MSAyMS40OS00OCA0OC00OGg4YzQuNDIgMCA4IDMuNTggOCA4djE2em00NC4yNyAxMDRIMTYwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTIuMjdjNS45NSAwIDEwLjQxLTMuNSAxMC40MS02LjYyIDAtMS4zLS43NS0yLjY2LTIuMTItMy44NGwtMjEuODktMTguNzdjLTguNDctNy4yMi0xMy4zMy0xNy40OC0xMy4zMy0yOC4xNCAwLTIxLjMgMTkuMDItMzguNjIgNDIuNDEtMzguNjJIMjAwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4aC0xMi4yN2MtNS45NSAwLTEwLjQxIDMuNS0xMC40MSA2LjYyIDAgMS4zLjc1IDIuNjYgMi4xMiAzLjg0bDIxLjg5IDE4Ljc3YzguNDcgNy4yMiAxMy4zMyAxNy40OCAxMy4zMyAyOC4xNC4wMSAyMS4yOS0xOSAzOC42Mi00Mi4zOSAzOC42MnpNMjU2IDI2NHYyMC44YzAgMjAuMjcgNS43IDQwLjE3IDE2IDU2Ljg4IDEwLjMtMTYuNyAxNi0zNi42MSAxNi01Ni44OFYyNjRjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MjAuOGMwIDM1LjQ4LTEyLjg4IDY4Ljg5LTM2LjI4IDk0LjA5LTMuMDIgMy4yNS03LjI3IDUuMTEtMTEuNzIgNS4xMXMtOC43LTEuODYtMTEuNzItNS4xMWMtMjMuNC0yNS4yLTM2LjI4LTU4LjYxLTM2LjI4LTk0LjA5VjI2NGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHptMTIxLTE1OUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVEb3dubG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTc2LjQ1IDIxMS4zNmwtOTYuNDIgOTUuN2MtNi42NSA2LjYxLTE3LjM5IDYuNjEtMjQuMDQgMGwtOTYuNDItOTUuN0M3My40MiAzMzcuMjkgODAuNTQgMzIwIDk0LjgyIDMyMEgxNjB2LTgwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djgwaDY1LjE4YzE0LjI4IDAgMjEuNCAxNy4yOSAxMS4yNyAyNy4zNnpNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVFeGNlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMTM2VjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTYwLjEgMTA2LjVMMjI0IDMzNmw2MC4xIDkzLjVjNS4xIDgtLjYgMTguNS0xMC4xIDE4LjVoLTM0LjljLTQuNCAwLTguNS0yLjQtMTAuNi02LjNDMjA4LjkgNDA1LjUgMTkyIDM3MyAxOTIgMzczYy02LjQgMTQuOC0xMCAyMC0zNi42IDY4LjgtMi4xIDMuOS02LjEgNi4zLTEwLjUgNi4zSDExMGMtOS41IDAtMTUuMi0xMC41LTEwLjEtMTguNWw2MC4zLTkzLjUtNjAuMy05My41Yy01LjItOCAuNi0xOC41IDEwLjEtMTguNWgzNC44YzQuNCAwIDguNSAyLjQgMTAuNiA2LjMgMjYuMSA0OC44IDIwIDMzLjYgMzYuNiA2OC41IDAgMCA2LjEtMTEuNyAzNi42LTY4LjUgMi4xLTMuOSA2LjItNi4zIDEwLjYtNi4zSDI3NGM5LjUtLjEgMTUuMiAxMC40IDEwLjEgMTguNHpNMzg0IDEyMS45djYuMUgyNTZWMGg2LjFjNi40IDAgMTIuNSAyLjUgMTcgN2w5Ny45IDk4YzQuNSA0LjUgNyAxMC42IDcgMTYuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlRXhwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOWMwLTYuMy0yLjUtMTIuNC03LTE2LjlMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHpNNTcxIDMwOGwtOTUuNy05Ni40Yy0xMC4xLTEwLjEtMjcuNC0zLTI3LjQgMTEuM1YyODhoLTY0djY0aDY0djY1LjJjMCAxNC4zIDE3LjMgMjEuNCAyNy40IDExLjNMNTcxIDMzMmM2LjYtNi42IDYuNi0xNy40IDAtMjR6bS0zNzkgMjh2LTMyYzAtOC44IDcuMi0xNiAxNi0xNmgxNzZWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzNTJIMjA4Yy04LjggMC0xNi03LjItMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZUltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWEyNCAyNCAwIDAgMSAxNi45NyA3LjAyOWw5Ny45NDEgOTcuOTQxYTI0LjAwMiAyNC4wMDIgMCAwIDEgNy4wMyAxNi45NzF6TTI0OCAxNjBjLTEzLjIgMC0yNC0xMC44LTI0LTI0VjBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHY0NjRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwSDI0OHptLTEzNS40NTUgMTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHMtMjEuNDkgNDgtNDggNDgtNDgtMjEuNDktNDgtNDggMjEuNDkxLTQ4IDQ4LTQ4em0yMDggMjQwaC0yNTZsLjQ4NS00OC40ODVMMTA0LjU0NSAzMjhjNC42ODYtNC42ODYgMTEuNzk5LTQuMjAxIDE2LjQ4NS40ODVMMTYwLjU0NSAzNjggMjY0LjA2IDI2NC40ODVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDMyMC41NDUgMzA0djExMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlSW1wb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDI4OGMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmgxMTJ2LTY0em00ODktMTgzTDQwNy4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMzg0djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgxNTJjLTEzLjMgMC0yNCAxMC43LTI0IDI0djI2NGgxMjh2LTY1LjJjMC0xNC4zIDE3LjMtMjEuNCAyNy40LTExLjNMMzc5IDMwOGM2LjYgNi43IDYuNiAxNy40IDAgMjRsLTk1LjcgOTYuNGMtMTAuMSAxMC4xLTI3LjQgMy0yNy40LTExLjNWMzUySDEyOHYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgzNzZjLTEzLjIgMC0yNC0xMC44LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlRG9sbGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3NyAxMDVMMjc5LjEgN2MtNC41LTQuNS0xMC42LTctMTctN0gyNTZ2MTI4aDEyOHYtNi4xYzAtNi4zLTIuNS0xMi40LTctMTYuOXptLTE1MyAzMVYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0ek02NCA3MmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNmMwIDQuNDItMy41OCA4LTggOEg3MmMtNC40MiAwLTgtMy41OC04LThWNzJ6bTAgODB2LTE2YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHptMTQ0IDI2My44OFY0NDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMjQuMjljLTExLjI5LS41OC0yMi4yNy00LjUyLTMxLjM3LTExLjM1LTMuOS0yLjkzLTQuMS04Ljc3LS41Ny0xMi4xNGwxMS43NS0xMS4yMWMyLjc3LTIuNjQgNi44OS0yLjc2IDEwLjEzLS43MyAzLjg3IDIuNDIgOC4yNiAzLjcyIDEyLjgyIDMuNzJoMjguMTFjNi41IDAgMTEuOC01LjkyIDExLjgtMTMuMTkgMC01Ljk1LTMuNjEtMTEuMTktOC43Ny0xMi43M2wtNDUtMTMuNWMtMTguNTktNS41OC0zMS41OC0yMy40Mi0zMS41OC00My4zOSAwLTI0LjUyIDE5LjA1LTQ0LjQ0IDQyLjY3LTQ1LjA3VjIzMmMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYyNC4yOWMxMS4yOS41OCAyMi4yNyA0LjUxIDMxLjM3IDExLjM1IDMuOSAyLjkzIDQuMSA4Ljc3LjU3IDEyLjE0bC0xMS43NSAxMS4yMWMtMi43NyAyLjY0LTYuODkgMi43Ni0xMC4xMy43My0zLjg3LTIuNDMtOC4yNi0zLjcyLTEyLjgyLTMuNzJoLTI4LjExYy02LjUgMC0xMS44IDUuOTItMTEuOCAxMy4xOSAwIDUuOTUgMy42MSAxMS4xOSA4Ljc3IDEyLjczbDQ1IDEzLjVjMTguNTkgNS41OCAzMS41OCAyMy40MiAzMS41OCA0My4zOSAwIDI0LjUzLTE5LjA1IDQ0LjQ0LTQyLjY3IDQ1LjA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVJbnZvaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZIOTZ2NjRoMTkydi02NHptODktMTUxTDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6bS0xNTMgMzFWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHpNNjQgNzJjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZjMCA0LjQyLTMuNTggOC04IDhINzJjLTQuNDIgMC04LTMuNTgtOC04Vjcyem0wIDY0YzAtNC40MiAzLjU4LTggOC04aDgwYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTI1NiAzMDRjMCA0LjQyLTMuNTggOC04IDhoLTgwYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODBjNC40MiAwIDggMy41OCA4IDh2MTZ6bTAtMjAwdjk2YzAgOC44NC03LjE2IDE2LTE2IDE2SDgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtOTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMjI0YzguODQgMCAxNiA3LjE2IDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVNZWRpY2FsQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxMzZWMEg4OEM3NC43IDAgNjQgMTAuNyA2NCAyNHYyMzJIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgxNDAuOWMzIDAgNS44IDEuNyA3LjIgNC40bDE5LjkgMzkuOCA1Ni44LTExMy43YzIuOS01LjkgMTEuNC01LjkgMTQuMyAwbDM0LjcgNjkuNUgzNTJjOC44IDAgMTYgNy4yIDE2IDE2cy03LjIgMTYtMTYgMTZoLTg5LjlMMjQwIDI3NS44bC01Ni44IDExMy43Yy0yLjkgNS45LTExLjQgNS45LTE0LjMgMEwxMzQuMSAzMjBINjR2MTY4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMzEyYy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptMTUzLTMxTDM0My4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMzIwdjEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc3IDEwNUwyNzkuMSA3Yy00LjUtNC41LTEwLjYtNy0xNy03SDI1NnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTY0IDE2MHY0OGMwIDQuNC0zLjYgOC04IDhoLTU2djU2YzAgNC40LTMuNiA4LTggOGgtNDhjLTQuNCAwLTgtMy42LTgtOHYtNTZoLTU2Yy00LjQgMC04LTMuNi04LTh2LTQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODEuOSAyNTYuMWMtNS0xNi00LjktNDYuOS0yLTQ2LjkgOC40IDAgNy42IDM2LjkgMiA0Ni45em0tMS43IDQ3LjJjLTcuNyAyMC4yLTE3LjMgNDMuMy0yOC40IDYyLjcgMTguMy03IDM5LTE3LjIgNjIuOS0yMS45LTEyLjctOS42LTI0LjktMjMuNC0zNC41LTQwLjh6TTg2LjEgNDI4LjFjMCAuOCAxMy4yLTUuNCAzNC45LTQwLjItNi43IDYuMy0yOS4xIDI0LjUtMzQuOSA0MC4yek0yNDggMTYwaDEzNnYzMjhjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjI0QzAgMTAuNyAxMC43IDAgMjQgMGgyMDB2MTM2YzAgMTMuMiAxMC44IDI0IDI0IDI0em0tOCAxNzEuOGMtMjAtMTIuMi0zMy4zLTI5LTQyLjctNTMuOCA0LjUtMTguNSAxMS42LTQ2LjYgNi4yLTY0LjItNC43LTI5LjQtNDIuNC0yNi41LTQ3LjgtNi44LTUgMTguMy0uNCA0NC4xIDguMSA3Ny0xMS42IDI3LjYtMjguNyA2NC42LTQwLjggODUuOC0uMSAwLS4xLjEtLjIuMS0yNy4xIDEzLjktNzMuNiA0NC41LTU0LjUgNjggNS42IDYuOSAxNiAxMCAyMS41IDEwIDE3LjkgMCAzNS43LTE4IDYxLjEtNjEuOCAyNS44LTguNSA1NC4xLTE5LjEgNzktMjMuMiAyMS43IDExLjggNDcuMSAxOS41IDY0IDE5LjUgMjkuMiAwIDMxLjItMzIgMTkuNy00My40LTEzLjktMTMuNi01NC4zLTkuNy03My42LTcuMnpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tNzQuMSAyNTUuM2M0LjEtMi43LTIuNS0xMS45LTQyLjgtOSAzNy4xIDE1LjggNDIuOCA5IDQyLjggOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUG93ZXJwb2ludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTMuNyAyNzEuMmM4LjggMCAxNS41IDIuNyAyMC4zIDguMSA5LjYgMTAuOSA5LjggMzIuNy0uMiA0NC4xLTQuOSA1LjYtMTEuOSA4LjUtMjEuMSA4LjVoLTI2Ljl2LTYwLjdoMjcuOXpNMzc3IDEwNUwyNzkgN2MtNC41LTQuNS0xMC42LTctMTctN2gtNnYxMjhoMTI4di02LjFjMC02LjMtMi41LTEyLjQtNy0xNi45em0tMTUzIDMxVjBIMjRDMTAuNyAwIDAgMTAuNyAwIDI0djQ2NGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgzMzZjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjR6bTUzIDE2NS4yYzAgOTAuMy04OC44IDc3LjYtMTExLjEgNzcuNlY0MzZjMCA2LjYtNS40IDEyLTEyIDEyaC0zMC44Yy02LjYgMC0xMi01LjQtMTItMTJWMjM2LjJjMC02LjYgNS40LTEyIDEyLTEyaDgxYzQ0LjUgMCA3Mi45IDMyLjggNzIuOSA3N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjguNTMgMTc5LjQ4bDExLjMxIDExLjMxYzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTI5LjkgMjkuOUwzMDQgNDA5LjM4YzYuMjUgNi4yNSA2LjI1IDE2LjM4IDAgMjIuNjNsLTExLjMxIDExLjMxYy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDI0MCA0MTMuMjVsLTMwLjA2IDMwLjA2Yy02LjI1IDYuMjUtMTYuMzggNi4yNS0yMi42MyAwTDE3NiA0MzJjLTYuMjUtNi4yNS02LjI1LTE2LjM4IDAtMjIuNjNsMzAuMDYtMzAuMDZMMTQ2Ljc0IDMyMEgxMjh2NDhjMCA4Ljg0LTcuMTYgMTYtMTYgMTZIOTZjLTguODQgMC0xNi03LjE2LTE2LTE2VjIwOGMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0IDAgMjQuMjItMTMuNjIgNDUuMDUtMzMuNDYgNTUuOTJMMjQwIDM0NS4zOGwyOS45LTI5LjljNi4yNS02LjI1IDE2LjM4LTYuMjUgMjIuNjMgMHpNMTc2IDI3MmgtNDh2LTMyaDQ4YzguODIgMCAxNiA3LjE4IDE2IDE2cy03LjE4IDE2LTE2IDE2em0yMDgtMTUwLjF2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE4LjE3IDQyNC4xNGMtMi45NS01LjkyLTguMDktNi41Mi0xMC4xNy02LjUycy03LjIyLjU5LTEwLjAyIDYuMTlsLTcuNjcgMTUuMzRjLTYuMzcgMTIuNzgtMjUuMDMgMTEuMzctMjkuNDgtMi4wOUwxNDQgMzg2LjU5bC0xMC42MSAzMS44OGMtNS44OSAxNy42Ni0yMi4zOCAyOS41My00MSAyOS41M0g4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNmgxMi4zOWM0LjgzIDAgOS4xMS0zLjA4IDEwLjY0LTcuNjZsMTguMTktNTQuNjRjMy4zLTkuODEgMTIuNDQtMTYuNDEgMjIuNzgtMTYuNDFzMTkuNDggNi41OSAyMi43NyAxNi40MWwxMy44OCA0MS42NGMxOS43NS0xNi4xOSA1NC4wNi05LjcgNjYgMTQuMTYgMS44OSAzLjc4IDUuNDkgNS45NSA5LjM2IDYuMjZ2LTgyLjEybDEyOC0xMjcuMDlWMTYwSDI0OGMtMTMuMiAwLTI0LTEwLjgtMjQtMjRWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtNDBsLTEyOC0uMTFjLTE2LjEyLS4zMS0zMC41OC05LjI4LTM3LjgzLTIzLjc1ek0zODQgMTIxLjljMC02LjMtMi41LTEyLjQtNy0xNi45TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMXptLTk2IDIyNS4wNlY0MTZoNjguOTlsMTYxLjY4LTE2Mi43OC02Ny44OC02Ny44OEwyODggMzQ2Ljk2em0yODAuNTQtMTc5LjYzbC0zMS44Ny0zMS44N2MtOS45NC05Ljk0LTI2LjA3LTkuOTQtMzYuMDEgMGwtMjcuMjUgMjcuMjUgNjcuODggNjcuODggMjcuMjUtMjcuMjVjOS45NS05Ljk0IDkuOTUtMjYuMDcgMC0zNi4wMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaWxlVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNjUuMTggMjE2LjAxSDIyNHY4MGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di04MEg5NC44MmMtMTQuMjggMC0yMS40MS0xNy4yOS0xMS4yNy0yNy4zNmw5Ni40Mi05NS43YzYuNjUtNi42MSAxNy4zOS02LjYxIDI0LjA0IDBsOTYuNDIgOTUuN2MxMC4xNSAxMC4wNyAzLjAzIDI3LjM2LTExLjI1IDI3LjM2ek0zNzcgMTA1TDI3OS4xIDdjLTQuNS00LjUtMTAuNi03LTE3LTdIMjU2djEyOGgxMjh2LTYuMWMwLTYuMy0yLjUtMTIuNC03LTE2Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsZVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCAxMjEuOTQxVjEyOEgyNTZWMGg2LjA1OWM2LjM2NSAwIDEyLjQ3IDIuNTI5IDE2Ljk3MSA3LjAyOWw5Ny45NDEgOTcuOTQxQTI0LjAwNSAyNC4wMDUgMCAwIDEgMzg0IDEyMS45NDF6TTIyNCAxMzZWMEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djQ2NGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptOTYgMTQ0LjAxNnYxMTEuOTYzYzAgMjEuNDQ1LTI1Ljk0MyAzMS45OTgtNDAuOTcxIDE2Ljk3MUwyMjQgMzUzLjk0MVYzOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDg4Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRWMjgwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djM4LjA1OWw1NS4wMjktNTUuMDEzYzE1LjAxMS0xNS4wMSA0MC45NzEtNC40OTEgNDAuOTcxIDE2Ljk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGVXb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxMzZWMEgyNEMxMC43IDAgMCAxMC43IDAgMjR2NDY0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMzNmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxNjBIMjQ4Yy0xMy4yIDAtMjQtMTAuOC0yNC0yNHptNTcuMSAxMjBIMzA1YzcuNyAwIDEzLjQgNy4xIDExLjcgMTQuN2wtMzggMTY4Yy0xLjIgNS41LTYuMSA5LjMtMTEuNyA5LjNoLTM4Yy01LjUgMC0xMC4zLTMuOC0xMS42LTkuMS0yNS44LTEwMy41LTIwLjgtODEuMi0yNS42LTExMC41aC0uNWMtMS4xIDE0LjMtMi40IDE3LjQtMjUuNiAxMTAuNS0xLjMgNS4zLTYuMSA5LjEtMTEuNiA5LjFIMTE3Yy01LjYgMC0xMC41LTMuOS0xMS43LTkuNGwtMzcuOC0xNjhjLTEuNy03LjUgNC0xNC42IDExLjctMTQuNmgyNC41YzUuNyAwIDEwLjcgNCAxMS44IDkuNyAxNS42IDc4IDIwLjEgMTA5LjUgMjEgMTIyLjIgMS42LTEwLjIgNy4zLTMyLjcgMjkuNC0xMjIuNyAxLjMtNS40IDYuMS05LjEgMTEuNy05LjFoMjkuMWM1LjYgMCAxMC40IDMuOCAxMS43IDkuMiAyNCAxMDAuNCAyOC44IDEyNCAyOS42IDEyOS40LS4yLTExLjItMi42LTE3LjggMjEuNi0xMjkuMiAxLTUuNiA1LjktOS41IDExLjUtOS41ek0zODQgMTIxLjl2Ni4xSDI1NlYwaDYuMWM2LjQgMCAxMi41IDIuNSAxNyA3bDk3LjkgOThjNC41IDQuNSA3IDEwLjYgNyAxNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDEzNlYwSDI0QzEwLjcgMCAwIDEwLjcgMCAyNHY0NjRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzM2YzEzLjMgMCAyNC0xMC43IDI0LTI0VjE2MEgyNDhjLTEzLjIgMC0yNC0xMC44LTI0LTI0em0xNjAtMTQuMXY2LjFIMjU2VjBoNi4xYzYuNCAwIDEyLjUgMi41IDE3IDdsOTcuOSA5OGM0LjUgNC41IDcgMTAuNiA3IDE2Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbERyaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDMyMHMtNjQgOTIuNjUtNjQgMTI4YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRzNjQtMjguNjUgNjQtNjQtNjQtMTI4LTY0LTEyOHptLTkuMzctMTAyLjk0TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43NmMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42Mmw4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDgtMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NCAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODctMjguMTJsMjIxLjU3LTIyMS41N2MxMi41LTEyLjUgMTIuNS0zMi43NS4wMS00NS4yNXptLTExNi4yMiA3MC45N0g2NS45M2MxLjM2LTMuODQgMy41Ny03Ljk4IDcuNDMtMTEuODNsMTMuMTUtMTMuMTUgODEuNjEtODEuNjEgNTguNiA1OC42YzEyLjQ5IDEyLjQ5IDMyLjc1IDEyLjQ5IDQ1LjI0IDBzMTIuNDktMzIuNzUgMC00NS4yNGwtNTguNi01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NCAxNjIuNDQtNDguMzQgNDguMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE3LjA2TDI5NC45NCA5LjM3QzI4OC42OSAzLjEyIDI4MC41IDAgMjcyLjMxIDBzLTE2LjM4IDMuMTItMjIuNjIgOS4zN2wtODEuNTggODEuNThMODEuOTMgNC43N2MtNi4yNC02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwzNi42OSAyNy4zOGMtNi4yNCA2LjI1LTYuMjQgMTYuMzggMCAyMi42M2w4Ni4xOSA4Ni4xOC05NC43NiA5NC43NmMtMzcuNDkgMzcuNDktMzcuNDkgOTguMjYgMCAxMzUuNzVsMTE3LjE5IDExNy4xOWMxOC43NSAxOC43NCA0My4zMSAyOC4xMiA2Ny44NyAyOC4xMiAyNC41NyAwIDQ5LjEzLTkuMzcgNjcuODgtMjguMTJsMjIxLjU3LTIyMS41N2MxMi40OS0xMi41IDEyLjQ5LTMyLjc2IDAtNDUuMjZ6bS0xMTYuMjIgNzAuOTdINjUuOTNjMS4zNi0zLjg0IDMuNTctNy45OCA3LjQzLTExLjgzbDEzLjE1LTEzLjE1IDgxLjYxLTgxLjYxIDU4LjYxIDU4LjZjMTIuNDkgMTIuNDkgMzIuNzUgMTIuNDkgNDUuMjQgMCAxMi40OS0xMi40OSAxMi40OS0zMi43NSAwLTQ1LjI0bC01OC42MS01OC42IDU4Ljk1LTU4Ljk1IDE2Mi40NSAxNjIuNDQtNDguMzUgNDguMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlsbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODggNjRoLTh2MjBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyVjY0SDk2djIwYzAgNi42LTUuNCAxMi0xMiAxMkg0NGMtNi42IDAtMTItNS40LTEyLTEyVjY0aC04QzEwLjcgNjQgMCA3NC43IDAgODh2MzM2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDh2LTIwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2MjBoMzIwdi0yMGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjIwaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWODhjMC0xMy4zLTEwLjctMjQtMjQtMjR6TTk2IDM3MmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJINDRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMjcyIDIwOGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0wLTE2OGMwIDYuNi01LjQgMTItMTIgMTJIMTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTk2YzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjk2em0xMTIgMTUyYzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHptMC05NmMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtOTZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpbHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODcuOTc2IDBIMjQuMDI4QzIuNzEgMC04LjA0NyAyNS44NjYgNy4wNTggNDAuOTcxTDE5MiAyMjUuOTQxVjQzMmMwIDcuODMxIDMuODIxIDE1LjE3IDEwLjIzNyAxOS42NjJsODAgNTUuOThDMjk4LjAyIDUxOC42OSAzMjAgNTA3LjQ5MyAzMjAgNDg3Ljk4VjIyNS45NDFsMTg0Ljk0Ny0xODQuOTdDNTIwLjAyMSAyNS44OTYgNTA5LjMzOCAwIDQ4Ny45NzYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaW5nZXJwcmludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuMTIgMjQ1Ljk2Yy0xMy4yNSAwLTI0IDEwLjc0LTI0IDI0IDEuMTQgNzIuMjUtOC4xNCAxNDEuOS0yNy43IDIxMS41NS0yLjczIDkuNzIgMi4xNSAzMC40OSAyMy4xMiAzMC40OSAxMC40OCAwIDIwLjExLTYuOTIgMjMuMDktMTcuNTIgMTMuNTMtNDcuOTEgMzEuMDQtMTI1LjQxIDI5LjQ4LTIyNC41Mi4wMS0xMy4yNS0xMC43My0yNC0yMy45OS0yNHptLS44Ni04MS43M0MxOTQgMTY0LjE2IDE1MS4yNSAyMTEuMyAxNTIuMSAyNjUuMzJjLjc1IDQ3Ljk0LTMuNzUgOTUuOTEtMTMuMzcgMTQyLjU1LTIuNjkgMTIuOTggNS42NyAyNS42OSAxOC42NCAyOC4zNiAxMy4wNSAyLjY3IDI1LjY3LTUuNjYgMjguMzYtMTguNjQgMTAuMzQtNTAuMDkgMTUuMTctMTAxLjU4IDE0LjM3LTE1My4wMi0uNDEtMjUuOTUgMTkuOTItNTIuNDkgNTQuNDUtNTIuMzQgMzEuMzEuNDcgNTcuMTUgMjUuMzQgNTcuNjIgNTUuNDcuNzcgNDguMDUtMi44MSA5Ni4zMy0xMC42MSAxNDMuNTUtMi4xNyAxMy4wNiA2LjY5IDI1LjQyIDE5Ljc2IDI3LjU4IDE5Ljk3IDMuMzMgMjYuODEtMTUuMSAyNy41OC0xOS43NyA4LjI4LTUwLjAzIDEyLjA2LTEwMS4yMSAxMS4yNy0xNTIuMTEtLjg4LTU1LjgtNDcuOTQtMTAxLjg4LTEwNC45MS0xMDIuNzJ6bS0xMTAuNjktMTkuNzhjLTEwLjMtOC4zNC0yNS4zNy02LjgtMzMuNzYgMy40OC0yNS42MiAzMS41LTM5LjM5IDcxLjI4LTM4Ljc1IDExMiAuNTkgMzcuNTgtMi40NyA3NS4yNy05LjExIDExMi4wNS0yLjM0IDEzLjA1IDYuMzEgMjUuNTMgMTkuMzYgMjcuODkgMjAuMTEgMy41IDI3LjA3LTE0LjgxIDI3Ljg5LTE5LjM2IDcuMTktMzkuODQgMTAuNS04MC42NiA5Ljg2LTEyMS4zMy0uNDctMjkuODggOS4yLTU3Ljg4IDI4LTgwLjk3IDguMzUtMTAuMjggNi43OS0yNS4zOS0zLjQ5LTMzLjc2em0xMDkuNDctNjIuMzNjLTE1LjQxLS40MS0zMC44NyAxLjQ0LTQ1Ljc4IDQuOTctMTIuODkgMy4wNi0yMC44NyAxNS45OC0xNy44MyAyOC44OSAzLjA2IDEyLjg5IDE2IDIwLjgzIDI4Ljg5IDE3LjgzIDExLjA1LTIuNjEgMjIuNDctMy43NyAzNC0zLjY5IDc1LjQzIDEuMTMgMTM3LjczIDYxLjUgMTM4Ljg4IDEzNC41OC41OSAzNy44OC0xLjI4IDc2LjExLTUuNTggMTEzLjYzLTEuNSAxMy4xNyA3Ljk1IDI1LjA4IDIxLjExIDI2LjU4IDE2LjcyIDEuOTUgMjUuNTEtMTEuODggMjYuNTgtMjEuMTFhOTI5LjA2IDkyOS4wNiAwIDAgMCA1Ljg5LTExOS44NWMtMS41Ni05OC43NS04NS4wNy0xODAuMzMtMTg2LjE2LTE4MS44M3ptMjUyLjA3IDEyMS40NWMtMi44Ni0xMi45Mi0xNS41MS0yMS4yLTI4LjYxLTE4LjI3LTEyLjk0IDIuODYtMjEuMTIgMTUuNjYtMTguMjYgMjguNjEgNC43MSAyMS40MSA0LjkxIDM3LjQxIDQuNyA2MS42LS4xMSAxMy4yNyAxMC41NSAyNC4wOSAyMy44IDI0LjJoLjJjMTMuMTcgMCAyMy44OS0xMC42MSAyNC0yMy44LjE4LTIyLjE4LjQtNDQuMTEtNS44My03Mi4zNHptLTQwLjEyLTkwLjcyQzQxNy4yOSA0My40NiAzMzcuNiAxLjI5IDI1Mi44MS4wMiAxODMuMDItLjgyIDExOC40NyAyNC45MSA3MC40NiA3Mi45NCAyNC4wOSAxMTkuMzctLjkgMTgxLjA0LjE0IDI0Ni42NWwtLjEyIDIxLjQ3Yy0uMzkgMTMuMjUgMTAuMDMgMjQuMzEgMjMuMjggMjQuNjkuMjMuMDIuNDguMDIuNzIuMDIgMTIuOTIgMCAyMy41OS0xMC4zIDIzLjk3LTIzLjNsLjE2LTIzLjY0Yy0uODMtNTIuNSAxOS4xNi0xMDEuODYgNTYuMjgtMTM5IDM4Ljc2LTM4LjggOTEuMzQtNTkuNjcgMTQ3LjY4LTU4Ljg2IDY5LjQ1IDEuMDMgMTM0LjczIDM1LjU2IDE3NC42MiA5Mi4zOSA3LjYxIDEwLjg2IDIyLjU2IDEzLjQ1IDMzLjQyIDUuODYgMTAuODQtNy42MiAxMy40Ni0yMi41OSA1Ljg0LTMzLjQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIzLjU2IDUxLjJjLTIwLjggMTkuMy0zOS41OCAzOS41OS01Ni4yMiA1OS45N0MyNDAuMDggNzMuNjIgMjA2LjI4IDM1LjUzIDE2OCAwIDY5Ljc0IDkxLjE3IDAgMjA5Ljk2IDAgMjgxLjYgMCA0MDguODUgMTAwLjI5IDUxMiAyMjQgNTEyczIyNC0xMDMuMTUgMjI0LTIzMC40YzAtNTMuMjctNTEuOTgtMTYzLjE0LTEyNC40NC0yMzAuNHptLTE5LjQ3IDM0MC42NUMyODIuNDMgNDA3LjAxIDI1NS43MiA0MTYgMjI2Ljg2IDQxNiAxNTQuNzEgNDE2IDk2IDM2OC4yNiA5NiAyOTAuNzVjMC0zOC42MSAyNC4zMS03Mi42MyA3Mi43OS0xMzAuNzUgNi45MyA3Ljk4IDk4LjgzIDEyNS4zNCA5OC44MyAxMjUuMzRsNTguNjMtNjYuODhjNC4xNCA2Ljg1IDcuOTEgMTMuNTUgMTEuMjcgMTkuOTcgMjcuMzUgNTIuMTkgMTUuODEgMTE4Ljk3LTMzLjQzIDE1My40MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXJlRXh0aW5ndWlzaGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzNC4wMjcgMjYuMzI5bC0xNjggMjhDMjU0LjY5MyA1Ni4yMTggMjU2IDY3LjggMjU2IDcyaC01OC4zMzJDMjA4LjM1MyAzNi4xMDggMTgxLjQ0NiAwIDE0NCAwYy0zOS40MzUgMC02Ni4zNjggMzkuNjc2LTUyLjIyOCA3Ni4yMDMtNTIuMDM5IDEzLjA1MS03NS4zODEgNTQuMjEzLTkwLjA0OSA5MC44ODQtNC45MjMgMTIuMzA3IDEuMDYzIDI2LjI3NCAxMy4zNyAzMS4xOTcgMTIuMzE3IDQuOTI2IDI2LjI3OS0xLjA3NSAzMS4xOTYtMTMuMzdDNzUuMDU4IDExMi45OSAxMDYuOTY0IDEyMCAxNjggMTIwdjI3LjA3NmMtNDEuNTQzIDEwLjg2Mi03MiA0OS4yMzUtNzIgOTQuMTI5VjQ4OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTQ0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNDBjMC00NC43MzEtMzAuNTk2LTgyLjMxMi03Mi05Mi45N1YxMjBoNDBjMCAyLjk3NC0xLjcwMyAxNS43MTYgMTAuMDI3IDE3LjY3MWwxNjggMjhDNDQxLjM0MiAxNjYuODkgNDQ4IDE2MS4yNSA0NDggMTUzLjgzNFYzOC4xNjZjMC03LjQxNi02LjY1OC0xMy4wNTYtMTMuOTczLTExLjgzN3pNMTQ0IDcyYy04LjgyMiAwLTE2LTcuMTc4LTE2LTE2czcuMTc4LTE2IDE2LTE2IDE2IDcuMTc4IDE2IDE2LTcuMTc4IDE2LTE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZpcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDIzLjg2YzAtMjMuOC0zMC42NS0zMi43Ny00NC4xNS0xMy4wNEM0OCAxOTEuODUgMjI0IDIwMCAyMjQgMjg4YzAgMzUuNjMtMjkuMTEgNjQuNDYtNjQuODUgNjMuOTktMzUuMTctLjQ1LTYzLjE1LTI5Ljc3LTYzLjE1LTY0Ljk0di04NS41MWMwLTIxLjctMjYuNDctMzIuMjMtNDEuNDMtMTYuNUMyNy44IDIxMy4xNiAwIDI2MS4zMyAwIDMyMGMwIDEwNS44NyA4Ni4xMyAxOTIgMTkyIDE5MnMxOTItODYuMTMgMTkyLTE5MmMwLTE3MC4yOS0xNjgtMTkzLTE2OC0yOTYuMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlyc3RBaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDhWMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHptMTI4IDQwMGgzMjBWMzJIMTI4djQ0OHptNjQtMjQ4YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpNNTI4IDMyaC00OHY0NDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmlzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjcuMSA5NmMtODkuOTcgMC0xNjguNTQgNTQuNzctMjEyLjI3IDEwMS42M0wyNy41IDEzMS41OGMtMTIuMTMtOS4xOC0zMC4yNC42LTI3LjE0IDE0LjY2TDI0LjU0IDI1NiAuMzUgMzY1Ljc3Yy0zLjEgMTQuMDYgMTUuMDEgMjMuODMgMjcuMTQgMTQuNjZsODcuMzMtNjYuMDVDMTU4LjU1IDM2MS4yMyAyMzcuMTMgNDE2IDMyNy4xIDQxNiA0NjQuNTYgNDE2IDU3NiAyODggNTc2IDI1NlM0NjQuNTYgOTYgMzI3LjEgOTZ6bTg3LjQzIDE4NGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0IDEzLjI2IDAgMjQgMTAuNzQgMjQgMjQgMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGaXN0UmFpc2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS45OCAxNjBWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDYuOTNjNS4wMi0xLjc4IDEwLjM0LTIuOTMgMTUuOTctMi45M2g0OC4wM3ptMTI4IDk1Ljk5Yy0uMDEtMzUuMzQtMjguNjYtNjMuOTktNjMuOTktNjMuOTlIMjA3Ljg1Yy04Ljc4IDAtMTUuOSA3LjA3LTE1LjkgMTUuODV2LjU2YzAgMjYuMjcgMjEuMyA0Ny41OSA0Ny41NyA0Ny41OWgzNS4yNmM5LjY4IDAgMTMuMiAzLjU4IDEzLjIgOHYxNi4yYzAgNC4yOS0zLjU5IDcuNzgtNy44OCA4LTQ0LjUyIDIuMjgtNjQuMTYgMjQuNzEtOTYuMDUgNzIuNTVsLTYuMzEgOS40N2E3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIybC0xMy4zMS04Ljg4YTcuOTk0IDcuOTk0IDAgMCAxLTIuMjItMTEuMDlsNi4zMS05LjQ3YzE1LjczLTIzLjYgMzAuMi00My4yNiA0Ny4zMS01OC4wOC0xNy4yNy01LjUxLTMxLjQtMTguMTItMzguODctMzQuNDUtNi41OSAzLjQxLTEzLjk2IDUuNTItMjEuODcgNS41MmgtMzJjLTEyLjM0IDAtMjMuNDktNC44MS0zMi0xMi40OEM3MS40OCAyNTEuMTkgNjAuMzMgMjU2IDQ4IDI1NkgxNmMtNS42NCAwLTEwLjk3LTEuMTUtMTYtMi45NXY3Ny45M2MwIDMzLjk1IDEzLjQ4IDY2LjUgMzcuNDkgOTAuNTFMNjMuOTkgNDQ4djY0aDI1NS45OHYtNjMuOTZsMzUuOTEtMzUuOTJBOTYuMDM1IDk2LjAzNSAwIDAgMCAzODQgMzQ0LjIxbC0uMDItODguMjJ6bS0zMi4wMS05MC4wOVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmgzMmMxMS4yOCAwIDIxLjk0IDIuMzEgMzIgNS45ek0xNiAyMjRoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MTI4YzAgOC44NCA3LjE2IDE2IDE2IDE2em05NS45OSAwaDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTYwYzAgOC44NCA3LjE2IDE2IDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZsYWdDaGVja2VyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQzLjIgMTg5LjlWMjU4YzI2LjEgNS45IDQ5LjMgMTUuNiA3My42IDIyLjN2LTY4LjJjLTI2LTUuOC00OS40LTE1LjUtNzMuNi0yMi4yem0yMjMuMy0xMjNjLTM0LjMgMTUuOS03Ni41IDMxLjktMTE3IDMxLjlDMjk2IDk4LjggMjUxLjcgNjQgMTg0LjMgNjRjLTI1IDAtNDcuMyA0LjQtNjggMTIgMi44LTcuMyA0LjEtMTUuMiAzLjYtMjMuNkMxMTguMSAyNCA5NC44IDEuMiA2Ni4zIDAgMzQuMy0xLjMgOCAyNC4zIDggNTZjMCAxOSA5LjUgMzUuOCAyNCA0NS45VjQ4OGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxNmMxMy4zIDAgMjQtMTAuNyAyNC0yNHYtOTQuNGMyOC4zLTEyLjEgNjMuNi0yMi4xIDExNC40LTIyLjEgNTMuNiAwIDk3LjggMzQuOCAxNjUuMiAzNC44IDQ4LjIgMCA4Ni43LTE2LjMgMTIyLjUtNDAuOSA4LjctNiAxMy44LTE1LjggMTMuOC0yNi40Vjk1LjljLjEtMjMuMy0yNC4yLTM4LjgtNDUuNC0yOXpNMTY5LjYgMzI1LjVjLTI1LjggMi43LTUwIDguMi03My42IDE2LjZ2LTcwLjVjMjYuMi05LjMgNDcuNS0xNSA3My42LTE3LjR6TTQ2NCAxOTFjLTIzLjYgOS44LTQ2LjMgMTkuNS03My42IDIzLjlWMjg2YzI0LjgtMy40IDUxLjQtMTEuOCA3My42LTI2djcwLjVjLTI1LjEgMTYuMS00OC41IDI0LjctNzMuNiAyNy4xVjI4NmMtMjcgMy43LTQ3LjkgMS41LTczLjYtNS42djY3LjRjLTIzLjktNy40LTQ3LjMtMTYuNy03My42LTIxLjNWMjU4Yy0xOS43LTQuNC00MC44LTYuOC03My42LTMuOHYtNzBjLTIyLjQgMy4xLTQ0LjYgMTAuMi03My42IDIwLjl2LTcwLjVjMzMuMi0xMi4yIDUwLjEtMTkuOCA3My42LTIydjcxLjZjMjctMy43IDQ4LjQtMS4zIDczLjYgNS43di02Ny40YzIzLjcgNy40IDQ3LjIgMTYuNyA3My42IDIxLjN2NjguNGMyMy43IDUuMyA0Ny42IDYuOSA3My42IDIuN1YxNDNjMjctNC44IDUyLjMtMTMuNiA3My42LTIyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRmxhZ1VzYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiAwQzE0LjMgMCAwIDE0LjMgMCAzMnY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMkM2NCAxNC4zIDQ5LjcgMCAzMiAwem0yNjcuOSAzMDMuNmMtNTcuMi0xNS4xLTExMS43LTI4LjgtMjAzLjkgMTEuMVYzODRjMTg1LjctOTIuMiAyMjEuNyA1My4zIDM5Ny41LTIzLjEgMTEuNC01IDE4LjUtMTYuNSAxOC41LTI4Ljh2LTM2Yy00My42IDE3LjMtODAuMiAyNC4xLTExMi4xIDI0LjEtMzcuNC0uMS02OC45LTguNC0xMDAtMTYuNnptMC05NmMtNTcuMi0xNS4xLTExMS43LTI4LjgtMjAzLjkgMTEuMXY2MS41Yzk0LjgtMzcuNiAxNTQuNi0yMi43IDIxMi4xLTcuNiA1Ny4yIDE1LjEgMTExLjcgMjguOCAyMDMuOS0xMS4xVjIwMGMtNDMuNiAxNy4zLTgwLjIgMjQuMS0xMTIuMSAyNC4xLTM3LjQgMC02OC45LTguMy0xMDAtMTYuNXptOS41LTEyNS45YzUxLjggMTUuNiA5Ny40IDI5IDIwMi42LTIwLjFWMzAuOGMwLTI1LjEtMjYuOC0zOC4xLTQ5LjQtMjYuNkMyOTEuMyA5MS41IDMwNS40LTYyLjIgOTYgMzIuNHYxNTEuOWM5NC44LTM3LjUgMTU0LjYtMjIuNyAyMTIuMS03LjYgNTcuMiAxNSAxMTEuNyAyOC43IDIwMy45LTExLjFWOTYuN2MtNTMuNiAyMy41LTkzLjMgMzEuNC0xMjYuMSAzMS40cy01OS03LjgtODUuNy0xNS45Yy00LTEuMi04LjEtMi40LTEyLjEtMy41Vjc1LjVjNy4yIDIgMTQuMyA0LjEgMjEuMyA2LjJ6TTE2MCAxMjguMWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTU1LjhjLTguOCAwLTE2LTcuMS0xNi0xNiAwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4xIDE2IDE2YzAgOC44LTcuMiAxNi0xNiAxNnptNjQgNDcuOWMtOC44IDAtMTYtNy4xLTE2LTE2IDAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjEgMTYgMTZjMCA4LjgtNy4yIDE2LTE2IDE2em0wLTU1LjljLTguOCAwLTE2LTcuMS0xNi0xNiAwLTguOCA3LjItMTYgMTYtMTZzMTYgNy4xIDE2IDE2YzAgOC44LTcuMiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0OS41NjUgOTguNzgzQzI5NS45NzggOTguNzgzIDI1MS43MjEgNjQgMTg0LjM0OCA2NGMtMjQuOTU1IDAtNDcuMzA5IDQuMzg0LTY4LjA0NSAxMi4wMTNhNTUuOTQ3IDU1Ljk0NyAwIDAgMCAzLjU4Ni0yMy41NjJDMTE4LjExNyAyNC4wMTUgOTQuODA2IDEuMjA2IDY2LjMzOC4wNDggMzQuMzQ1LTEuMjU0IDggMjQuMjk2IDggNTZjMCAxOS4wMjYgOS40OTcgMzUuODI1IDI0IDQ1Ljk0NVY0ODhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDE2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtOTQuNGMyOC4zMTEtMTIuMDY0IDYzLjU4Mi0yMi4xMjIgMTE0LjQzNS0yMi4xMjIgNTMuNTg4IDAgOTcuODQ0IDM0Ljc4MyAxNjUuMjE3IDM0Ljc4MyA0OC4xNjkgMCA4Ni42NjctMTYuMjk0IDEyMi41MDUtNDAuODU4QzUwNi44NCAzNTkuNDUyIDUxMiAzNDkuNTcxIDUxMiAzMzkuMDQ1di0yNDMuMWMwLTIzLjM5My0yNC4yNjktMzguODctNDUuNDg1LTI5LjAxNi0zNC4zMzggMTUuOTQ4LTc2LjQ1NCAzMS44NTQtMTE2Ljk1IDMxLjg1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbGFzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMiA0MDMuNUwzMjAgMjE1VjY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTIwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYxNmMwIDEzLjMgMTAuNyAyNCAyNCAyNGg4djE1MUwxMC44IDQwMy41Qy0xOC41IDQ1MC42IDE1LjMgNTEyIDcwLjkgNTEyaDMwNi4yYzU1LjcgMCA4OS40LTYxLjUgNjAuMS0xMDguNXpNMTM3LjkgMzIwbDQ4LjItNzcuNmMzLjctNS4yIDUuOC0xMS42IDUuOC0xOC40VjY0aDY0djE2MGMwIDYuOSAyLjIgMTMuMiA1LjggMTguNGw0OC4yIDc3LjZoLTE3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGbHVzaGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM0NCAyMDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em0tMTkyIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek04MCAyMjRjMC0zOS44IDMyLjItNzIgNzItNzJzNzIgMzIuMiA3MiA3Mi0zMi4yIDcyLTcyIDcyLTcyLTMyLjItNzItNzJ6bTIzMiAxNzZIMTg0Yy0yMS4yIDAtMjEuMi0zMiAwLTMyaDEyOGMyMS4yIDAgMjEuMiAzMiAwIDMyem0zMi0xMDRjLTM5LjggMC03Mi0zMi4yLTcyLTcyczMyLjItNzIgNzItNzIgNzIgMzIuMiA3MiA3Mi0zMi4yIDcyLTcyIDcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tOTYgMTY4YzAgOC44NC03LjE2IDE2LTE2IDE2SDE2MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDE5MmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3Mi42OTQgMjkyLjA5M0w1MDAuMjcgNDE2LjI0OEE2My45OTcgNjMuOTk3IDAgMCAxIDQ0NC45ODkgNDQ4SDQ1LjAyNWMtMTguNTIzIDAtMzAuMDY0LTIwLjA5My0yMC43MzEtMzYuMDkzbDcyLjQyNC0xMjQuMTU1QTY0IDY0IDAgMCAxIDE1MiAyNTZoMzk5Ljk2NGMxOC41MjMgMCAzMC4wNjQgMjAuMDkzIDIwLjczIDM2LjA5M3pNMTUyIDIyNGgzMjh2LTQ4YzAtMjYuNTEtMjEuNDktNDgtNDgtNDhIMjcybC02NC02NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI3OC4wNDZsNjkuMDc3LTExOC40MThDODYuMjE0IDI0Mi4yNSAxMTcuOTg5IDIyNCAxNTIgMjI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZvbGRlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0LDEyOEgyNzJMMjA4LDY0SDQ4QTQ4LDQ4LDAsMCwwLDAsMTEyVjQwMGE0OCw0OCwwLDAsMCw0OCw0OEg0NjRhNDgsNDgsMCwwLDAsNDgtNDhWMTc2QTQ4LDQ4LDAsMCwwLDQ2NCwxMjhaTTM1OS41LDI5NmExNiwxNiwwLDAsMS0xNiwxNmgtNjR2NjRhMTYsMTYsMCwwLDEtMTYsMTZoLTE2YTE2LDE2LDAsMCwxLTE2LTE2VjMxMmgtNjRhMTYsMTYsMCwwLDEtMTYtMTZWMjgwYTE2LDE2LDAsMCwxLDE2LTE2aDY0VjIwMGExNiwxNiwwLDAsMSwxNi0xNmgxNmExNiwxNiwwLDAsMSwxNiwxNnY2NGg2NGExNiwxNiwwLDAsMSwxNiwxNlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb2xkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDEyOEgyNzJsLTY0LTY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTc2YzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgNDE2aC0yMy40MUwyNzcuODggNTMuNjlBMzIgMzIgMCAwIDAgMjQ3LjU4IDMyaC00Ny4xNmEzMiAzMiAwIDAgMC0zMC4zIDIxLjY5TDM5LjQxIDQxNkgxNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0xOS41OGwyMy4zLTY0aDE1Mi41NmwyMy4zIDY0SDMwNGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0xNzYuODUgMjcyTDIyNCAxNDIuNTEgMjcxLjE1IDI3MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb290YmFsbEJhbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgxLjUgNjAuM2MtNC44LTE4LjItMTkuMS0zMi41LTM3LjMtMzcuNEM0MjAuMyAxNi41IDM4MyA4LjkgMzM5LjQgOEw0OTYgMTY0LjhjLS44LTQzLjUtOC4yLTgwLjYtMTQuNS0xMDQuNXptLTQ2NyAzOTEuNGM0LjggMTguMiAxOS4xIDMyLjUgMzcuMyAzNy40IDIzLjkgNi40IDYxLjIgMTQgMTA0LjggMTQuOUwwIDM0Ny4yYy44IDQzLjUgOC4yIDgwLjYgMTQuNSAxMDQuNXpNNC4yIDI4My40TDIyMC40IDUwMGMxMzIuNS0xOS40IDI0OC44LTExOC43IDI3MS41LTI3MS40TDI3NS42IDEyQzE0My4xIDMxLjQgMjYuOCAxMzAuNyA0LjIgMjgzLjR6bTMxNy4zLTEyMy42YzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMTEuMyAxMS4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTI4LjMgMjguMyAyOC4zIDI4LjNjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM2wtMTEuMyAxMS4zYy0zLjEgMy4xLTguMiAzLjEtMTEuMyAwbC0yOC4zLTI4LjMtMjIuNiAyMi43IDI4LjMgMjguM2MzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBMMjQ4IDI3OC42bC0yMi42IDIyLjYgMjguMyAyOC4zYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMjguMy0yOC4zLTI4LjMgMjguM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtMTEuMy0xMS4zYy0zLjEtMy4xLTMuMS04LjIgMC0xMS4zbDI4LjMtMjguMy0yOC4zLTI4LjJjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDIyLjYtMjIuNi0yOC4zLTI4LjNjLTMuMS0zLjEtMy4xLTguMiAwLTExLjNsMTEuMy0xMS4zYzMuMS0zLjEgOC4yLTMuMSAxMS4zIDBsMjguMyAyOC4zIDI4LjMtMjguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMC41IDIzMS40bC0xOTItMTYwQzI4Ny45IDU0LjMgMjU2IDY4LjYgMjU2IDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yem0tMjU2IDBsLTE5Mi0xNjBDMzEuOSA1NC4zIDAgNjguNiAwIDk2djMyMGMwIDI3LjQgMzEuOSA0MS44IDUyLjUgMjQuNmwxOTItMTYwYzE1LjMtMTIuOCAxNS4zLTM2LjQgMC00OS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ2LjUzIDk3LjQzQzQzOS42NyA2MC4yMyA0MDcuMTkgMzIgMzY4IDMyYy0zOS4yMyAwLTcxLjcyIDI4LjI5LTc4LjU0IDY1LjU0QzEyNi43NSAxMTIuOTYtLjUgMjUwLjEyIDAgNDE2Ljk4LjExIDQ1MS45IDI5LjA4IDQ4MCA2NCA0ODBoMzA0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMTcuNjctMTQuMzMtMzItMzItMzJoLTc5LjQ5bDM1LjgtNDguMzNjMjQuMTQtMzYuMjMgMTAuMzUtODguMjgtMzMuNzEtMTA2LjYtMjMuODktOS45My01MS41NS00LjY1LTcyLjI0IDEwLjg4bC0zMi43NiAyNC41OWMtNy4wNiA1LjMxLTE3LjA5IDMuOTEtMjIuNDEtMy4xOS01LjMtNy4wOC0zLjg4LTE3LjExIDMuMTktMjIuNDFsMzQuNzgtMjYuMDljMzYuODQtMjcuNjYgODguMjgtMjcuNjIgMTI1LjEzIDAgMTAuODcgOC4xNSA0NS44NyAzOS4wNiA0MC44IDkzLjIxTDQ2OS42MiA0ODBINTYwYzguODQgMCAxNi03LjE2IDE2LTE2IDAtMTcuNjctMTQuMzMtMzItMzItMzJoLTUzLjYzbC05OC41Mi0xMDQuNjggMTU0LjQ0LTg2LjY1QTU4LjE2IDU4LjE2IDAgMCAwIDU3NiAxODkuOTRjMC0yMS40LTExLjcyLTQwLjk1LTMwLjQ4LTUxLjIzLTQwLjU2LTIyLjIyLTk4Ljk5LTQxLjI4LTk4Ljk5LTQxLjI4ek0zNjggMTM2Yy0xMy4yNiAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzQtMjQgMjQtMjQgMTMuMjUgMCAyNCAxMC43NCAyNCAyNCAwIDEzLjI1LTEwLjc1IDI0LTI0IDI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xMzYgMjA4YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyem0xODcuMyAxODMuM2MtMzEuMi05LjYtNTkuNC0xNS4zLTc1LjMtMTUuM3MtNDQuMSA1LjctNzUuMyAxNS4zYy0xMS41IDMuNS0yMi41LTYuMy0yMC41LTE4LjEgNy00MCA2MC4xLTYxLjIgOTUuOC02MS4yczg4LjggMjEuMyA5NS44IDYxLjJjMiAxMS45LTkuMSAyMS42LTIwLjUgMTguMXpNMzI4IDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptODAgMTY4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptLTE2MCAwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMTcwLjIgMjE4LjJDMzE1LjggMzY3LjQgMjgyLjkgMzUyIDI0OCAzNTJzLTY3LjggMTUuNC05MC4yIDQyLjJjLTEzLjUgMTYuMy0zOC4xLTQuMi0yNC42LTIwLjVDMTYxLjcgMzM5LjYgMjAzLjYgMzIwIDI0OCAzMjBzODYuMyAxOS42IDExNC43IDUzLjhjMTMuNiAxNi4yLTExIDM2LjctMjQuNSAyMC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUZ1bm5lbERvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuNDYgMTY1Ljk0bDEwMS4yLTExMS44N0M1NTQuNjEgMzQuMTIgNTQwLjQ4IDAgNTEyLjI2IDBIMzEuNzRDMy41MiAwLTEwLjYxIDM0LjEyIDkuMzQgNTQuMDdMMTkyIDI1NnYxNTUuOTJjMCAxMi41OSA1LjkzIDI0LjQ0IDE2IDMybDc5Ljk5IDYwYzIwLjg2IDE1LjY0IDQ4LjQ3IDYuOTcgNTkuMjItMTMuNTdDMzEwLjggNDU1LjM4IDI4OCA0MDYuMzUgMjg4IDM1MmMwLTg5Ljc5IDYyLjA1LTE2NS4xNyAxNDUuNDYtMTg2LjA2ek00ODAgMTkyYy04OC4zNyAwLTE2MCA3MS42My0xNjAgMTYwczcxLjYzIDE2MCAxNjAgMTYwIDE2MC03MS42MyAxNjAtMTYwLTcxLjYzLTE2MC0xNjAtMTYwem0xNiAyMzkuODhWNDQ4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTE2LjI5Yy0xMS4yOS0uNTgtMjIuMjctNC41Mi0zMS4zNy0xMS4zNS0zLjktMi45My00LjEtOC43Ny0uNTctMTIuMTRsMTEuNzUtMTEuMjFjMi43Ny0yLjY0IDYuODktMi43NiAxMC4xMy0uNzMgMy44NyAyLjQyIDguMjYgMy43MiAxMi44MiAzLjcyaDI4LjExYzYuNSAwIDExLjgtNS45MiAxMS44LTEzLjE5IDAtNS45NS0zLjYxLTExLjE5LTguNzctMTIuNzNsLTQ1LTEzLjVjLTE4LjU5LTUuNTgtMzEuNTgtMjMuNDItMzEuNTgtNDMuMzkgMC0yNC41MiAxOS4wNS00NC40NCA0Mi42Ny00NS4wN1YyNTZjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTYuMjljMTEuMjkuNTggMjIuMjcgNC41MSAzMS4zNyAxMS4zNSAzLjkgMi45MyA0LjEgOC43Ny41NyAxMi4xNGwtMTEuNzUgMTEuMjFjLTIuNzcgMi42NC02Ljg5IDIuNzYtMTAuMTMuNzMtMy44Ny0yLjQzLTguMjYtMy43Mi0xMi44Mi0zLjcyaC0yOC4xMWMtNi41IDAtMTEuOCA1LjkyLTExLjggMTMuMTkgMCA1Ljk1IDMuNjEgMTEuMTkgOC43NyAxMi43M2w0NSAxMy41YzE4LjU5IDUuNTggMzEuNTggMjMuNDIgMzEuNTggNDMuMzkgMCAyNC41My0xOS4wNCA0NC40NC00Mi42NyA0NS4wN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFGdXRib2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NmMwIDEzNi45NjctMTExLjAzMyAyNDgtMjQ4IDI0OFM4IDM5Mi45NjcgOCAyNTYgMTE5LjAzMyA4IDI1NiA4czI0OCAxMTEuMDMzIDI0OCAyNDh6bS00OCAwbC0uMDAzLS4yODItMjYuMDY0IDIyLjc0MS02Mi42NzktNTguNSAxNi40NTQtODQuMzU1IDM0LjMwMyAzLjA3MmMtMjQuODg5LTM0LjIxNi02MC4wMDQtNjAuMDg5LTEwMC43MDktNzMuMTQxbDEzLjY1MSAzMS45MzlMMjU2IDEzOWwtNzQuOTUzLTQxLjUyNSAxMy42NTEtMzEuOTM5Yy00MC42MzEgMTMuMDI4LTc1Ljc4IDM4Ljg3LTEwMC43MDkgNzMuMTQxbDM0LjU2NS0zLjA3MyAxNi4xOTIgODQuMzU1LTYyLjY3OCA1OC41LTI2LjA2NC0yMi43NDEtLjAwMy4yODJjMCA0My4wMTUgMTMuNDk3IDgzLjk1MiAzOC40NzIgMTE3Ljk5MWw3LjcwNC0zMy44OTcgODUuMTM4IDEwLjQ0NyAzNi4zMDEgNzcuODI2LTI5LjkwMiAxNy43ODZjNDAuMjAyIDEzLjEyMiA4NC4yOSAxMy4xNDggMTI0LjU3MiAwbC0yOS45MDItMTcuNzg2IDM2LjMwMS03Ny44MjYgODUuMTM4LTEwLjQ0NyA3LjcwNCAzMy44OTdDNDQyLjUwMyAzMzkuOTUyIDQ1NiAyOTkuMDE1IDQ1NiAyNTZ6bS0yNDguMTAyIDY5LjU3MWwtMjkuODk0LTkxLjMxMkwyNTYgMTc3LjczMmw3Ny45OTYgNTYuNTI3LTI5LjYyMiA5MS4zMTJoLTk2LjQ3NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYW1lcGFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MC4wNyA5NkgxNjBhMTYwIDE2MCAwIDEgMCAxMTQuMjQgMjcyaDkxLjUyQTE2MCAxNjAgMCAxIDAgNDgwLjA3IDk2ek0yNDggMjY4YTEyIDEyIDAgMCAxLTEyIDEyaC01MnY1MmExMiAxMiAwIDAgMS0xMiAxMmgtMjRhMTIgMTIgMCAwIDEtMTItMTJ2LTUySDg0YTEyIDEyIDAgMCAxLTEyLTEydi0yNGExMiAxMiAwIDAgMSAxMi0xMmg1MnYtNTJhMTIgMTIgMCAwIDEgMTItMTJoMjRhMTIgMTIgMCAwIDEgMTIgMTJ2NTJoNTJhMTIgMTIgMCAwIDEgMTIgMTJ6bTIxNiA3NmE0MCA0MCAwIDEgMSA0MC00MCA0MCA0MCAwIDAgMS00MCA0MHptNjQtOTZhNDAgNDAgMCAxIDEgNDAtNDAgNDAgNDAgMCAwIDEtNDAgNDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2FzUHVtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDQ4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMyMGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMTU3LjItMzQwLjdsLTgxLTgxYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMGwtMTEuMyAxMS4zYy02LjIgNi4yLTYuMiAxNi40IDAgMjIuNkw0MTYgOTcuOVYxNjBjMCAyOC4xIDIwLjkgNTEuMyA0OCA1NS4yVjM3NmMwIDEzLjItMTAuOCAyNC0yNCAyNHMtMjQtMTAuOC0yNC0yNHYtMzJjMC00OC42LTM5LjQtODgtODgtODhoLThWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjRIOTZDNjAuNyAwIDMyIDI4LjcgMzIgNjR2MzUyaDI4OFYzMDRoOGMyMi4xIDAgNDAgMTcuOSA0MCA0MHYyNy44YzAgMzcuNyAyNyA3MiA2NC41IDc1LjkgNDMgNC4zIDc5LjUtMjkuNSA3OS41LTcxLjdWMTUyLjZjMC0xNy02LjgtMzMuMy0xOC44LTQ1LjN6TTI1NiAxOTJIOTZWNjRoMTYwdjEyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHYXZlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQuOTcxIDE5OS4zNjJsLTIyLjYyNy0yMi42MjdjLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMGwtNS42NTcgNS42NTdMMzI5LjYwOCA2OS4yNTVsNS42NTctNS42NTdjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDMxMi42MzggNy4wMjljLTkuMzczLTkuMzczLTI0LjU2OS05LjM3My0zMy45NDEgMEwxNTQuMjQ2IDEzMS40OGMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDIyLjYyNyAyMi42MjdjOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDUuNjU3LTUuNjU3IDM5LjU5OCAzOS41OTgtODEuMDQgODEuMDQtNS42NTctNS42NTdjLTEyLjQ5Ny0xMi40OTctMzIuNzU4LTEyLjQ5Ny00NS4yNTUgMEw5LjM3MyA0MTIuMTE4Yy0xMi40OTcgMTIuNDk3LTEyLjQ5NyAzMi43NTggMCA0NS4yNTVsNDUuMjU1IDQ1LjI1NWMxMi40OTcgMTIuNDk3IDMyLjc1OCAxMi40OTcgNDUuMjU1IDBsMTE0Ljc0NS0xMTQuNzQ1YzEyLjQ5Ny0xMi40OTcgMTIuNDk3LTMyLjc1OCAwLTQ1LjI1NWwtNS42NTctNS42NTcgODEuMDQtODEuMDQgMzkuNTk4IDM5LjU5OC01LjY1NyA1LjY1N2MtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDIyLjYyNyAyMi42MjdjOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDEyNC40NTEtMTI0LjQ1MWM5LjM3Mi05LjM3MiA5LjM3Mi0yNC41NjggMC0zMy45NDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2VtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4NS41IDBMNTc2IDE2MEg0NzQuOUw0MDUuNyAwaDc5Ljh6bS0xMjggMGw2OS4yIDE2MEgxNDkuM0wyMTguNSAwaDEzOXptLTI2NyAwaDc5LjhsLTY5LjIgMTYwSDBMOTAuNSAwek0wIDE5MmgxMDAuN2wxMjMgMjUxLjdjMS41IDMuMS0yLjcgNS45LTUgMy4zTDAgMTkyem0xNDguMiAwaDI3OS42bC0xMzcgMzE4LjJjLTEgMi40LTQuNSAyLjQtNS41IDBMMTQ4LjIgMTkyem0yMDQuMSAyNTEuN2wxMjMtMjUxLjdINTc2TDM1Ny4zIDQ0Ni45Yy0yLjMgMi43LTYuNS0uMS01LTMuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHZW5kZXJsZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAxNzZjNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MCAzNS45LTgwIDgwLTgwbTAtNjRDNjQuNSAxMTIgMCAxNzYuNSAwIDI1NnM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDQtNjQuNS0xNDQtMTQ0LTE0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaG9zdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODYuMS4wOUM4MS4wMSAzLjI0IDAgOTQuOTIgMCAyMDAuMDV2MjYzLjkyYzAgMTQuMjYgMTcuMjMgMjEuMzkgMjcuMzEgMTEuMzFsMjQuOTItMTguNTNjNi42Ni00Ljk1IDE2LTMuOTkgMjEuNTEgMi4yMWw0Mi45NSA0OC4zNWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDQwLjcyLTQ1Ljg1YzYuMzctNy4xNyAxNy41Ni03LjE3IDIzLjkyIDBsNDAuNzIgNDUuODVjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw0Mi45NS00OC4zNWM1LjUxLTYuMiAxNC44NS03LjE3IDIxLjUxLTIuMjFsMjQuOTIgMTguNTNjMTAuMDggMTAuMDggMjcuMzEgMi45NCAyNy4zMS0xMS4zMVYxOTJDMzg0IDg0IDI5NC44My0zLjE3IDE4Ni4xLjA5ek0xMjggMjI0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyem0xMjggMGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHaWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxNjBWMzIwSDMydjEyOHptMjU2IDMyaDE2MGMxNy43IDAgMzItMTQuMyAzMi0zMlYzMjBIMjg4djE2MHptMTkyLTMyMGgtNDIuMWM2LjItMTIuMSAxMC4xLTI1LjUgMTAuMS00MCAwLTQ4LjUtMzkuNS04OC04OC04OC00MS42IDAtNjguNSAyMS4zLTEwMyA2OC4zLTM0LjUtNDctNjEuNC02OC4zLTEwMy02OC4zLTQ4LjUgMC04OCAzOS41LTg4IDg4IDAgMTQuNSAzLjggMjcuOSAxMC4xIDQwSDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY4MGMwIDguOCA3LjIgMTYgMTYgMTZoNDgwYzguOCAwIDE2LTcuMiAxNi0xNnYtODBjMC0xNy43LTE0LjMtMzItMzItMzJ6bS0zMjYuMSAwYy0yMi4xIDAtNDAtMTcuOS00MC00MHMxNy45LTQwIDQwLTQwYzE5LjkgMCAzNC42IDMuMyA4Ni4xIDgwaC04Ni4xem0yMDYuMSAwaC04Ni4xYzUxLjQtNzYuNSA2NS43LTgwIDg2LjEtODAgMjIuMSAwIDQwIDE3LjkgNDAgNDBzLTE3LjkgNDAtNDAgNDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2lmdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQwLjYgMTk0LjFjMS45LTMwLjggMTcuMy02MS4yIDQ0LTc5LjhDMjc5LjQgMTAzLjUgMjY4LjcgOTYgMjU2IDk2aC0yOS40bDMwLjctMjJjNy4yLTUuMSA4LjktMTUuMSAzLjctMjIuM2wtOS4zLTEzYy01LjEtNy4yLTE1LjEtOC45LTIyLjMtMy43bC0zMiAyMi45IDExLjUtMzAuNmMzLjEtOC4zLTEuMS0xNy41LTkuNC0yMC42bC0xNS01LjZjLTguMy0zLjEtMTcuNSAxLjEtMjAuNiA5LjRsLTE5LjkgNTMtMTkuOS01My4xQzEyMSAyLjEgMTExLjgtMi4xIDEwMy41IDFsLTE1IDUuNkM4MC4yIDkuNyA3NiAxOSA3OS4yIDI3LjJsMTEuNSAzMC42TDU4LjYgMzVjLTcuMi01LjEtMTcuMi0zLjUtMjIuMyAzLjdsLTkuMyAxM2MtNS4xIDcuMi0zLjUgMTcuMiAzLjcgMjIuM2wzMC43IDIySDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnYzNTJjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTY4LjljLTUuNS05LjUtOC45LTIwLjMtOC45LTMyVjI1NmMwLTI5LjkgMjAuOC01NSA0OC42LTYxLjl6TTIyNCA0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMTYwVjM4NEgyMjR2OTZ6bTIyNCAzMmgxNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2SDQ0OHYxMjh6bTE2MC0yODhoLTIwLjRjMi42LTcuNiA0LjQtMTUuNSA0LjQtMjMuOCAwLTM1LjUtMjctNzIuMi03Mi4xLTcyLjItNDguMSAwLTc1LjkgNDcuNy04Ny45IDc1LjMtMTIuMS0yNy42LTM5LjktNzUuMy04Ny45LTc1LjMtNDUuMSAwLTcyLjEgMzYuNy03Mi4xIDcyLjIgMCA4LjMgMS43IDE2LjIgNC40IDIzLjhIMjU2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmgxOTJWMjI0aDE1LjNsLjctLjIuNy4ySDQ0OHYxMjhoMTkydi05NmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTI3MiAwYy0yLjctMS40LTUuMS0zLTcuMi00LjgtNy4zLTYuNC04LjgtMTMuOC04LjgtMTkgMC05LjcgNi40LTI0LjIgMjQuMS0yNC4yIDE4LjcgMCAzNS42IDI3LjQgNDQuNSA0OEgzMzZ6bTE5OS4yLTQuOGMtMi4xIDEuOC00LjUgMy40LTcuMiA0LjhoLTUyLjZjOC44LTIwLjMgMjUuOC00OCA0NC41LTQ4IDE3LjcgMCAyNC4xIDE0LjUgMjQuMSAyNC4yIDAgNS4yLTEuNSAxMi42LTguOCAxOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbGFzc0NoZWVycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzkuNCA0MzMuNmMtOC40LTIwLjQtMzEuOC0zMC4xLTUyLjItMjEuNmwtMjIuMSA5LjItMzguNy0xMDEuOWM0Ny45LTM1IDY0LjgtMTAwLjMgMzQuNS0xNTIuOEw0NzQuMyAxNmMtOC0xMy45LTI1LjEtMTkuNy00MC0xMy42TDMyMCA0OS44IDIwNS43IDIuNGMtMTQuOS02LjItMzItLjMtNDAgMTMuNkw3OS4xIDE2Ni41QzQ4LjkgMjE5IDY1LjcgMjg0LjMgMTEzLjYgMzE5LjJMNzQuOSA0MjEuMWwtMjIuMS05LjJjLTIwLjQtOC41LTQzLjcgMS4yLTUyLjIgMjEuNi0xLjcgNC4xLjIgOC44IDQuMyAxMC41bDE2Mi4zIDY3LjRjNC4xIDEuNyA4LjctLjIgMTAuNC00LjMgOC40LTIwLjQtMS4yLTQzLjgtMjEuNi01Mi4zbC0yMi4xLTkuMkwxNzMuMyAzNDJjNC40LjUgOC44IDEuMyAxMy4xIDEuMyA1MS43IDAgOTkuNC0zMy4xIDExMy40LTg1LjNsMjAuMi03NS40IDIwLjIgNzUuNGMxNCA1Mi4yIDYxLjcgODUuMyAxMTMuNCA4NS4zIDQuMyAwIDguNy0uOCAxMy4xLTEuM0w1MDYgNDQ1LjZsLTIyLjEgOS4yYy0yMC40IDguNS0zMC4xIDMxLjktMjEuNiA1Mi4zIDEuNyA0LjEgNi40IDYgMTAuNCA0LjNMNjM1LjEgNDQ0YzQtMS43IDYtNi4zIDQuMy0xMC40ek0yNzUuOSAxNjIuMWwtMTEyLjEtNDYuNSAzNi41LTYzLjQgOTQuNSAzOS4yLTE4LjkgNzAuN3ptODguMiAwbC0xOC45LTcwLjcgOTQuNS0zOS4yIDM2LjUgNjMuNC0xMTIuMSA0Ni41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42ek00NDMuNzcgNDhsLTQ4IDQ4SDExNi4yNGwtNDgtNDhoMzc1LjUzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzTWFydGluaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuMDUgNTcuNkM1MjMuMyAzNi4zNCA1MDguMjUgMCA0NzguMiAwSDMzLjhDMy43NSAwLTExLjMgMzYuMzQgOS45NSA1Ny42TDIyNCAyNzEuNjRWNDY0aC01NmMtMjIuMDkgMC00MCAxNy45MS00MCA0MCAwIDQuNDIgMy41OCA4IDggOGgyNDBjNC40MiAwIDgtMy41OCA4LTggMC0yMi4wOS0xNy45MS00MC00MC00MGgtNTZWMjcxLjY0TDUwMi4wNSA1Ny42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdsYXNzV2hpc2tleSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzJIMzJDMTIuNSAzMi0yLjQgNDkuMi4zIDY4LjVsNTYgMzU2LjVjNC41IDMxLjUgMzEuNSA1NC45IDYzLjQgNTQuOWgyNzNjMzEuOCAwIDU4LjktMjMuNCA2My40LTU0LjlsNTUuNi0zNTYuNUM1MTQuNCA0OS4yIDQ5OS41IDMyIDQ4MCAzMnptLTM3LjQgNjRsLTMwIDE5MmgtMzEzTDY5LjQgOTZoMzczLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzQuMSAyODAuMzdMNTI4Ljc1IDk4LjY2Yy01LjkxLTIzLjctMjEuNTktNDQuMDUtNDMtNTUuODEtMjEuNDQtMTEuNzMtNDYuOTctMTQuMTEtNzAuMTktNi4zM2wtMTUuMjUgNS4wOGMtOC4zOSAyLjc5LTEyLjkyIDExLjg2LTEwLjEyIDIwLjI0bDUuMDYgMTUuMThjMi43OSA4LjM4IDExLjg1IDEyLjkxIDIwLjIzIDEwLjEybDEzLjE4LTQuMzljMTAuODctMy42MiAyMy0zLjU3IDMzLjE2IDEuNzMgMTAuMjkgNS4zNyAxNy41NyAxNC41NiAyMC4zNyAyNS44MmwzOC40NiAxNTMuODJjLTIyLjE5LTYuODEtNDkuNzktMTIuNDYtODEuMi0xMi40Ni0zNC43NyAwLTczLjk4IDcuMDItMTE0Ljg1IDI2Ljc0aC03My4xOGMtNDAuODctMTkuNzQtODAuMDgtMjYuNzUtMTE0Ljg2LTI2Ljc1LTMxLjQyIDAtNTkuMDIgNS42NS04MS4yMSAxMi40NmwzOC40Ni0xNTMuODNjMi43OS0xMS4yNSAxMC4wOS0yMC40NSAyMC4zOC0yNS44MSAxMC4xNi01LjMgMjIuMjgtNS4zNSAzMy4xNS0xLjczbDEzLjE3IDQuMzljOC4zOCAyLjc5IDE3LjQ0LTEuNzQgMjAuMjMtMTAuMTJsNS4wNi0xNS4xOGMyLjgtOC4zOC0xLjczLTE3LjQ1LTEwLjEyLTIwLjI0bC0xNS4yNS01LjA4Yy0yMy4yMi03Ljc4LTQ4Ljc1LTUuNDEtNzAuMTkgNi4zMy0yMS40MSAxMS43Ny0zNy4wOSAzMi4xMS00MyA1NS44TDEuOSAyODAuMzdBNjQuMjE4IDY0LjIxOCAwIDAgMCAwIDI5NS44NnY3MC4yNUMwIDQyOS4wMSA1MS41OCA0ODAgMTE1LjIgNDgwaDM3LjEyYzYwLjI4IDAgMTEwLjM3LTQ1Ljk0IDExNC44OC0xMDUuMzdsMi45My0zOC42M2gzNS43NWwyLjkzIDM4LjYzQzMxMy4zMSA0MzQuMDYgMzYzLjQgNDgwIDQyMy42OCA0ODBoMzcuMTJjNjMuNjIgMCAxMTUuMi01MC45OSAxMTUuMi0xMTMuODh2LTcwLjI1YzAtNS4yMy0uNjQtMTAuNDMtMS45LTE1LjV6bS0zNzAuNzIgODkuNDJjLTEuOTcgMjUuOTEtMjQuNCA0Ni4yMS01MS4wNiA0Ni4yMUgxMTUuMkM4Ni45NyA0MTYgNjQgMzkzLjYyIDY0IDM2Ni4xMXYtMzcuNTRjMTguMTItNi40OSA0My40Mi0xMi45MiA3Mi41OC0xMi45MiAyMy44NiAwIDQ3LjI2IDQuMzMgNjkuOTMgMTIuOTJsLTMuMTMgNDEuMjJ6TTUxMiAzNjYuMTJjMCAyNy41MS0yMi45NyA0OS44OC01MS4yIDQ5Ljg4aC0zNy4xMmMtMjYuNjcgMC00OS4xLTIwLjMtNTEuMDYtNDYuMjFsLTMuMTMtNDEuMjJjMjIuNjctOC41OSA0Ni4wOC0xMi45MiA2OS45NS0xMi45MiAyOS4xMiAwIDU0LjQzIDYuNDQgNzIuNTUgMTIuOTN2MzcuNTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBZnJpY2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTYwIDIxNS41djYuOTNjMCA1Ljg3LTMuMzIgMTEuMjQtOC41NyAxMy44NmwtMTUuMzkgNy43YTE1LjQ4NSAxNS40ODUgMCAwIDEtMTUuNTMtLjk3bC0xOC4yMS0xMi4xNGExNS41MiAxNS41MiAwIDAgMC0xMy41LTEuODFsLTIuNjUuODhjLTkuNyAzLjIzLTEzLjY2IDE0Ljc5LTcuOTkgMjMuM2wxMy4yNCAxOS44NmMyLjg3IDQuMzEgNy43MSA2LjkgMTIuODkgNi45aDguMjFjOC41NiAwIDE1LjUgNi45NCAxNS41IDE1LjV2MTEuMzRjMCAzLjM1LTEuMDkgNi42Mi0zLjEgOS4zbC0xOC43NCAyNC45OGMtMS40MiAxLjktMi4zOSA0LjEtMi44MyA2LjQzbC00LjMgMjIuODNjLS42MiAzLjI5LTIuMjkgNi4yOS00Ljc2IDguNTZhMTU5LjYwOCAxNTkuNjA4IDAgMCAwLTI1IDI5LjE2bC0xMy4wMyAxOS41NWEyNy43NTYgMjcuNzU2IDAgMCAxLTIzLjA5IDEyLjM2Yy0xMC41MSAwLTIwLjEyLTUuOTQtMjQuODItMTUuMzRhNzguOTAyIDc4LjkwMiAwIDAgMS04LjMzLTM1LjI5VjM2Ny41YzAtOC41Ni02Ljk0LTE1LjUtMTUuNS0xNS41aC0yNS44OGMtMTQuNDkgMC0yOC4zOC01Ljc2LTM4LjYzLTE2YTU0LjY1OSA1NC42NTkgMCAwIDEtMTYtMzguNjN2LTE0LjA2YzAtMTcuMTkgOC4xLTMzLjM4IDIxLjg1LTQzLjdsMjcuNTgtMjAuNjlhNTQuNjYzIDU0LjY2MyAwIDAgMSAzMi43OC0xMC45M2guODljOC40OCAwIDE2Ljg1IDEuOTcgMjQuNDMgNS43N2wxNC43MiA3LjM2YzMuNjggMS44NCA3LjkzIDIuMTQgMTEuODMuODRsNDcuMzEtMTUuNzdjNi4zMy0yLjExIDEwLjYtOC4wMyAxMC42LTE0LjcgMC04LjU2LTYuOTQtMTUuNS0xNS41LTE1LjVoLTEwLjA5Yy00LjExIDAtOC4wNS0xLjYzLTEwLjk2LTQuNTRsLTYuOTItNi45MmExNS40OTMgMTUuNDkzIDAgMCAwLTEwLjk2LTQuNTRIMTk5LjVjLTguNTYgMC0xNS41LTYuOTQtMTUuNS0xNS41di00LjRjMC03LjExIDQuODQtMTMuMzEgMTEuNzQtMTUuMDRsMTQuNDUtMy42MWMzLjc0LS45NCA3LTMuMjMgOS4xNC02LjQ0bDguMDgtMTIuMTFjMi44Ny00LjMxIDcuNzEtNi45IDEyLjg5LTYuOWgyNC4yMWM4LjU2IDAgMTUuNS02Ljk0IDE1LjUtMTUuNXYtMjEuN0MzNTkuMjMgNzEuNjMgNDIyLjg2IDEzMS4wMiA0NDEuOTMgMjA4SDQyMy41Yy04LjU2IDAtMTUuNSA2Ljk0LTE1LjUgMTUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZUFtZXJpY2FzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTgyLjI5IDM1Ny42Yy0zLjkgMy44OC03Ljk5IDcuOTUtMTEuMzEgMTEuMjgtMi45OSAzLTUuMSA2LjctNi4xNyAxMC43MS0xLjUxIDUuNjYtMi43MyAxMS4zOC00Ljc3IDE2Ljg3bC0xNy4zOSA0Ni44NWMtMTMuNzYgMy0yOCA0LjY5LTQyLjY1IDQuNjl2LTI3LjM4YzEuNjktMTIuNjItNy42NC0zNi4yNi0yMi42My01MS4yNS02LTYtOS4zNy0xNC4xNC05LjM3LTIyLjYzdi0zMi4wMWMwLTExLjY0LTYuMjctMjIuMzQtMTYuNDYtMjcuOTctMTQuMzctNy45NS0zNC44MS0xOS4wNi00OC44MS0yNi4xMS0xMS40OC01Ljc4LTIyLjEtMTMuMTQtMzEuNjUtMjEuNzVsLS44LS43MmExMTQuNzkyIDExNC43OTIgMCAwIDEtMTguMDYtMjAuNzRjLTkuMzgtMTMuNzctMjQuNjYtMzYuNDItMzQuNTktNTEuMTQgMjAuNDctNDUuNSA1Ny4zNi04Mi4wNCAxMDMuMi0xMDEuODlsMjQuMDEgMTIuMDFDMjAzLjQ4IDg5Ljc0IDIxNiA4Mi4wMSAyMTYgNzAuMTF2LTExLjNjNy45OS0xLjI5IDE2LjEyLTIuMTEgMjQuMzktMi40MmwyOC4zIDI4LjNjNi4yNSA2LjI1IDYuMjUgMTYuMzggMCAyMi42M0wyNjQgMTEybC0xMC4zNCAxMC4zNGMtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxbDQuNjkgNC42OWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTggOGE4LjAwOCA4LjAwOCAwIDAgMS01LjY2IDIuMzRoLTguOTljLTIuMDggMC00LjA4LjgxLTUuNTggMi4yN2wtOS45MiA5LjY1YTguMDA4IDguMDA4IDAgMCAwLTEuNTggOS4zMWwxNS41OSAzMS4xOWMyLjY2IDUuMzItMS4yMSAxMS41OC03LjE1IDExLjU4aC01LjY0Yy0xLjkzIDAtMy43OS0uNy01LjI0LTEuOTZsLTkuMjgtOC4wNmExNi4wMTcgMTYuMDE3IDAgMCAwLTE1LjU1LTMuMWwtMzEuMTcgMTAuMzlhMTEuOTUgMTEuOTUgMCAwIDAtOC4xNyAxMS4zNGMwIDQuNTMgMi41NiA4LjY2IDYuNjEgMTAuNjlsMTEuMDggNS41NGM5LjQxIDQuNzEgMTkuNzkgNy4xNiAzMC4zMSA3LjE2czIyLjU5IDI3LjI5IDMyIDMyaDY2Ljc1YzguNDkgMCAxNi42MiAzLjM3IDIyLjYzIDkuMzdsMTMuNjkgMTMuNjlhMzAuNTAzIDMwLjUwMyAwIDAgMSA4LjkzIDIxLjU3IDQ2LjUzNiA0Ni41MzYgMCAwIDEtMTMuNzIgMzIuOTh6TTQxNyAyNzQuMjVjLTUuNzktMS40NS0xMC44NC01LTE0LjE1LTkuOTdsLTE3Ljk4LTI2Ljk3YTIzLjk3IDIzLjk3IDAgMCAxIDAtMjYuNjJsMTkuNTktMjkuMzhjMi4zMi0zLjQ3IDUuNS02LjI5IDkuMjQtOC4xNWwxMi45OC02LjQ5QzQ0MC4yIDE5My41OSA0NDggMjIzLjg3IDQ0OCAyNTZjMCA4LjY3LS43NCAxNy4xNi0xLjgyIDI1LjU0TDQxNyAyNzQuMjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR2xvYmVBc2lhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bS0xMS4zNCAyNDAuMjNjLTIuODkgNC44Mi04LjEgNy43Ny0xMy43MiA3Ljc3aC0uMzFjLTQuMjQgMC04LjMxIDEuNjktMTEuMzEgNC42OWwtNS42NiA1LjY2Yy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFsNS42NiA1LjY2YzMgMyA0LjY5IDcuMDcgNC42OSAxMS4zMVYzMDRjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTYuMTFjLTYuMDYgMC0xMS42LTMuNDItMTQuMzEtOC44NWwtMjIuNjItNDUuMjNjLTIuNDQtNC44OC04Ljk1LTUuOTQtMTIuODEtMi4wOGwtMTkuNDcgMTkuNDZjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OUg1MC44MUM0OS4xMiAyNzcuNTUgNDggMjY2LjkyIDQ4IDI1NmMwLTExMC4yOCA4OS43Mi0yMDAgMjAwLTIwMCAyMS41MSAwIDQyLjIgMy41MSA2MS42MyA5LjgybC01MC4xNiAzOC41M2MtNS4xMSAzLjQxLTQuNjMgMTEuMDYuODYgMTMuODFsMTAuODMgNS40MWM1LjQyIDIuNzEgOC44NCA4LjI1IDguODQgMTQuMzFWMjE2YzAgNC40Mi0zLjU4IDgtOCA4aC0zLjA2Yy0zLjAzIDAtNS44LTEuNzEtNy4xNS00LjQyLTEuNTYtMy4xMi01Ljk2LTMuMjktNy43Ni0uM2wtMTcuMzcgMjguOTV6TTQwOCAzNTguNDNjMCA0LjI0LTEuNjkgOC4zMS00LjY5IDExLjMxbC05LjU3IDkuNTdjLTMgMy03LjA3IDQuNjktMTEuMzEgNC42OWgtMTUuMTZjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTMuMDEtMTMuMDFhMjYuNzY3IDI2Ljc2NyAwIDAgMC0yNS40Mi03LjA0bC0yMS4yNyA1LjMyYy0xLjI3LjMyLTIuNTcuNDgtMy44OC40OGgtMTAuMzRjLTQuMjQgMC04LjMxLTEuNjktMTEuMzEtNC42OWwtMTEuOTEtMTEuOTFhOC4wMDggOC4wMDggMCAwIDEtMi4zNC01LjY2di0xMC4yYzAtMy4yNyAxLjk5LTYuMjEgNS4wMy03LjQzbDM5LjM0LTE1Ljc0YzEuOTgtLjc5IDMuODYtMS44MiA1LjU5LTMuMDVsMjMuNzEtMTYuODlhNy45NzggNy45NzggMCAwIDEgNC42NC0xLjQ4aDEyLjA5YzMuMjMgMCA2LjE1IDEuOTQgNy4zOSA0LjkzbDUuMzUgMTIuODVhNCA0IDAgMCAwIDMuNjkgMi40NmgzLjhjMS43OCAwIDMuMzUtMS4xOCAzLjg0LTIuODhsNC4yLTE0LjQ3Yy41LTEuNzEgMi4wNi0yLjg4IDMuODQtMi44OGg2LjA2YzIuMjEgMCA0IDEuNzkgNCA0djEyLjkzYzAgMi4xMi44NCA0LjE2IDIuMzQgNS42NmwxMS45MSAxMS45MWMzIDMgNC42OSA3LjA3IDQuNjkgMTEuMzF2MjQuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZUV1cm9wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0yMDAgMjQ4YzAgMjIuNS0zLjkgNDQuMi0xMC44IDY0LjRoLTIwLjNjLTQuMyAwLTguNC0xLjctMTEuNC00LjhsLTMyLTMyLjZjLTQuNS00LjYtNC41LTEyLjEuMS0xNi43bDEyLjUtMTIuNXYtOC43YzAtMy0xLjItNS45LTMuMy04bC05LjQtOS40Yy0yLjEtMi4xLTUtMy4zLTgtMy4zaC0xNmMtNi4yIDAtMTEuMy01LjEtMTEuMy0xMS4zIDAtMyAxLjItNS45IDMuMy04bDkuNC05LjRjMi4xLTIuMSA1LTMuMyA4LTMuM2gzMmM2LjIgMCAxMS4zLTUuMSAxMS4zLTExLjN2LTkuNGMwLTYuMi01LjEtMTEuMy0xMS4zLTExLjNoLTM2LjdjLTguOCAwLTE2IDcuMi0xNiAxNnY0LjVjMCA2LjktNC40IDEzLTEwLjkgMTUuMmwtMzEuNiAxMC41Yy0zLjMgMS4xLTUuNSA0LjEtNS41IDcuNnYyLjJjMCA0LjQtMy42IDgtOCA4aC0xNmMtNC40IDAtOC0zLjYtOC04cy0zLjYtOC04LThIMjQ3Yy0zIDAtNS44IDEuNy03LjIgNC40bC05LjQgMTguN2MtMi43IDUuNC04LjIgOC44LTE0LjMgOC44SDE5NGMtOC44IDAtMTYtNy4yLTE2LTE2VjE5OWMwLTQuMiAxLjctOC4zIDQuNy0xMS4zbDIwLjEtMjAuMWM0LjYtNC42IDcuMi0xMC45IDcuMi0xNy41IDAtMy40IDIuMi02LjUgNS41LTcuNmw0MC0xMy4zYzEuNy0uNiAzLjItMS41IDQuNC0yLjdsMjYuOC0yNi44YzIuMS0yLjEgMy4zLTUgMy4zLTggMC02LjItNS4xLTExLjMtMTEuMy0xMS4zSDI1OGwtMTYgMTZ2OGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LTh2LTIwYzAtMi41IDEuMi00LjkgMy4yLTYuNGwyOC45LTIxLjdjMS45LS4xIDMuOC0uMyA1LjctLjNDMzU4LjMgNTYgNDQ4IDE0NS43IDQ0OCAyNTZ6TTEzMC4xIDE0OS4xYzAtMyAxLjItNS45IDMuMy04bDI1LjQtMjUuNGMyLjEtMi4xIDUtMy4zIDgtMy4zIDYuMiAwIDExLjMgNS4xIDExLjMgMTEuM3YxNmMwIDMtMS4yIDUuOS0zLjMgOGwtOS40IDkuNGMtMi4xIDIuMS01IDMuMy04IDMuM2gtMTZjLTYuMiAwLTExLjMtNS4xLTExLjMtMTEuM3ptMTI4IDMwNi40di03LjFjMC04LjgtNy4yLTE2LTE2LTE2aC0yMC4yYy0xMC44IDAtMjYuNy01LjMtMzUuNC0xMS44bC0yMi4yLTE2LjdjLTExLjUtOC42LTE4LjItMjIuMS0xOC4yLTM2LjR2LTIzLjljMC0xNiA4LjQtMzAuOCAyMi4xLTM5bDQyLjktMjUuN2M3LjEtNC4yIDE1LjItNi41IDIzLjQtNi41aDMxLjJjMTAuOSAwIDIxLjQgMy45IDI5LjYgMTAuOWw0My4yIDM3LjFoMTguM2M4LjUgMCAxNi42IDMuNCAyMi42IDkuNGwxNy4zIDE3LjNjMy40IDMuNCA4LjEgNS4zIDEyLjkgNS4zSDQyM2MtMzIuNCA1OC45LTkzLjggOTkuNS0xNjQuOSAxMDMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYuNSAxNjBDMzIyIDcwLjcgMjg3LjggOCAyNDggOHMtNzQgNjIuNy04OC41IDE1MmgxNzd6TTE1MiAyNTZjMCAyMi4yIDEuMiA0My41IDMuMyA2NGgxODUuM2MyLjEtMjAuNSAzLjMtNDEuOCAzLjMtNjRzLTEuMi00My41LTMuMy02NEgxNTUuM2MtMi4xIDIwLjUtMy4zIDQxLjgtMy4zIDY0em0zMjQuNy05NmMtMjguNi02Ny45LTg2LjUtMTIwLjQtMTU4LTE0MS42IDI0LjQgMzMuOCA0MS4yIDg0LjcgNTAgMTQxLjZoMTA4ek0xNzcuMiAxOC40QzEwNS44IDM5LjYgNDcuOCA5Mi4xIDE5LjMgMTYwaDEwOGM4LjctNTYuOSAyNS41LTEwNy44IDQ5LjktMTQxLjZ6TTQ4Ny40IDE5MkgzNzIuN2MyLjEgMjEgMy4zIDQyLjUgMy4zIDY0cy0xLjIgNDMtMy4zIDY0aDExNC42YzUuNS0yMC41IDguNi00MS44IDguNi02NHMtMy4xLTQzLjUtOC41LTY0ek0xMjAgMjU2YzAtMjEuNSAxLjItNDMgMy4zLTY0SDguNkMzLjIgMjEyLjUgMCAyMzMuOCAwIDI1NnMzLjIgNDMuNSA4LjYgNjRoMTE0LjZjLTItMjEtMy4yLTQyLjUtMy4yLTY0em0zOS41IDk2YzE0LjUgODkuMyA0OC43IDE1MiA4OC41IDE1MnM3NC02Mi43IDg4LjUtMTUyaC0xNzd6bTE1OS4zIDE0MS42YzcxLjQtMjEuMiAxMjkuNC03My43IDE1OC0xNDEuNmgtMTA4Yy04LjggNTYuOS0yNS42IDEwNy44LTUwIDE0MS42ek0xOS4zIDM1MmMyOC42IDY3LjkgODYuNSAxMjAuNCAxNTggMTQxLjYtMjQuNC0zMy44LTQxLjItODQuNy01MC0xNDEuNmgtMTA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvbGZCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQxNmgyMjRjMCAxNy43LTE0LjMgMzItMzIgMzJoLTE2Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnYyMGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTIwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC0xNmMtMTcuNyAwLTMyLTE0LjMtMzItMzJ6bTMyMC0yMDhjMCA3NC4yLTM5IDEzOS4yLTk3LjUgMTc2aC0yMjFDMzkgMzQ3LjIgMCAyODIuMiAwIDIwOCAwIDkzLjEgOTMuMSAwIDIwOCAwczIwOCA5My4xIDIwOCAyMDh6bS0xODAuMSA0My45YzE4LjMgMCAzMy4xLTE0LjggMzMuMS0zMy4xIDAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xem00OS4xIDQ2LjljMC0xNC40LTkuMy0yNi4zLTIyLjEtMzAuOSA5LjYgMjYuOC0xNS42IDUxLjMtNDEuOSA0MS45IDQuNiAxMi44IDE2LjUgMjIuMSAzMC45IDIyLjEgMTguMyAwIDMzLjEtMTQuOSAzMy4xLTMzLjF6bTY0LTY0YzAtMTQuNC05LjMtMjYuMy0yMi4xLTMwLjkgOS42IDI2LjgtMTUuNiA1MS4zLTQxLjkgNDEuOSA0LjYgMTIuOCAxNi41IDIyLjEgMzAuOSAyMi4xIDE4LjMgMCAzMy4xLTE0LjkgMzMuMS0zMy4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdvcHVyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM1MmgtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZ2LTgwYzAtOC44LTcuMi0xNi0xNi0xNmgtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTZoLTY0VjE2YzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djE2aC02NFYxNmMwLTguOC03LjItMTYtMTYtMTZzLTE2IDcuMi0xNiAxNnYxNmgtNjRWMTZjMC04LjgtNy4yLTE2LTE2LTE2Uzk2IDcuMiA5NiAxNnYxMTJIODBjLTguOCAwLTE2IDcuMi0xNiAxNnY4MEg0OGMtOC44IDAtMTYgNy4yLTE2IDE2djExMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djEyOGMwIDguOCA3LjIgMTYgMTYgMTZoODBWMzUyaDMyVjIyNGgzMnYtOTZoMzJ2OTZoLTMydjEyOGgtMzJ2MTYwaDgwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoNjRjOC44IDAgMTYgNy4yIDE2IDE2djgwaDgwVjM1MmgtMzJWMjI0aC0zMnYtOTZoMzJ2OTZoMzJ2MTI4aDMydjE2MGg4MGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnpNMjMyIDE3NmMwLTguOCA3LjItMTYgMTYtMTZoMTZjOC44IDAgMTYgNy4yIDE2IDE2djQ4aC00OHptNTYgMTc2aC02NHYtNjRjMC04LjggNy4yLTE2IDE2LTE2aDMyYzguOCAwIDE2IDcuMiAxNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmFkdWF0aW9uQ2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMi4zNCAxNTMuMkwzNDMuNCA2Ny41Yy0xNS4yLTQuNjctMzEuNi00LjY3LTQ2Ljc5IDBMMTcuNjYgMTUzLjJjLTIzLjU0IDcuMjMtMjMuNTQgMzguMzYgMCA0NS41OWw0OC42MyAxNC45NGMtMTAuNjcgMTMuMTktMTcuMjMgMjkuMjgtMTcuODggNDYuOUMzOC43OCAyNjYuMTUgMzIgMjc2LjExIDMyIDI4OGMwIDEwLjc4IDUuNjggMTkuODUgMTMuODYgMjUuNjVMMjAuMzMgNDI4LjUzQzE4LjExIDQzOC41MiAyNS43MSA0NDggMzUuOTQgNDQ4aDU2LjExYzEwLjI0IDAgMTcuODQtOS40OCAxNS42Mi0xOS40N0w4Mi4xNCAzMTMuNjVDOTAuMzIgMzA3Ljg1IDk2IDI5OC43OCA5NiAyODhjMC0xMS41Ny02LjQ3LTIxLjI1LTE1LjY2LTI2Ljg3Ljc2LTE1LjAyIDguNDQtMjguMyAyMC42OS0zNi43MkwyOTYuNiAyODQuNWM5LjA2IDIuNzggMjYuNDQgNi4yNSA0Ni43OSAwbDI3OC45NS04NS43YzIzLjU1LTcuMjQgMjMuNTUtMzguMzYgMC00NS42ek0zNTIuNzkgMzE1LjA5Yy0yOC41MyA4Ljc2LTUyLjg0IDMuOTItNjUuNTkgMGwtMTQ1LjAyLTQ0LjU1TDEyOCAzODRjMCAzNS4zNSA4NS45NiA2NCAxOTIgNjRzMTkyLTI4LjY1IDE5Mi02NGwtMTQuMTgtMTEzLjQ3LTE0NS4wMyA0NC41NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmVhdGVyVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1LjIyIDEwNy42OWwxNzUuNTYgNjguMDktMTc1LjQ0IDY4LjA1Yy0xOC4zOSA2LjAzLTI3Ljg4IDI0LjM5LTIxLjIgNDFsMTIuMDkgMzAuMDhjNi42OCAxNi42MSAyNi45OSAyNS4xOSA0NS4zOCAxOS4xNUwzOTMuMDIgMjE0LjJjMTMuNzctNC41MiAyMi45OC0xNi42MSAyMi45OC0zMC4xN3YtMTUuOTZjMC0xMy41Ni05LjIxLTI1LjY1LTIyLjk4LTMwLjE3TDkxLjMgMTcuOTJjLTE4LjI5LTYtMzguNTEgMi41My00NS4xNSAxOS4wNkwzNC4xMiA2Ni45Yy02LjY0IDE2LjUzIDIuODEgMzQuNzkgMjEuMSA0MC43OXpNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyZWF0ZXJUaGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2NS41MiAyMDkuODVMNTkuMjIgNjcuMDFjLTE2LjA2LTcuNDktMzUuMTUtLjU0LTQyLjY0IDE1LjUyTDMuMDEgMTExLjYxYy03LjQ5IDE2LjA2LS41NCAzNS4xNSAxNS41MiA0Mi42NEwyMzYuOTYgMjU2LjEgMTguNDkgMzU3Ljk5QzIuNDcgMzY1LjQ2LTQuNDYgMzg0LjUgMy4wMSA0MDAuNTJsMTMuNTIgMjlDMjQgNDQ1LjU0IDQzLjA0IDQ1Mi40NyA1OS4wNiA0NDVsMzA2LjQ3LTE0Mi45MWEzMi4wMDMgMzIuMDAzIDAgMCAwIDE4LjQ4LTI5di0zNC4yM2MtLjAxLTEyLjQ1LTcuMjEtMjMuNzYtMTguNDktMjkuMDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbWFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4ek0xNDQgNDAwaC04Yy0xNy43IDAtMzItMTQuMy0zMi0zMnYtOGg0MHY0MHptMC01NmgtNDB2LThjMC0xNy43IDE0LjMtMzIgMzItMzJoOHY0MHptLTgtMTM2YzAtMTcuNyAxNC4zLTMyIDMyLTMyczMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyem03MiAxOTJoLTQ4di00MGg0OHY0MHptMC01NmgtNDh2LTQwaDQ4djQwem02NCA1NmgtNDh2LTQwaDQ4djQwem0wLTU2aC00OHYtNDBoNDh2NDB6bTY0IDU2aC00OHYtNDBoNDh2NDB6bTAtNTZoLTQ4di00MGg0OHY0MHptLTgtMTA0Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnptNjQgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMyaC04di00MGg0MHY4em0wLTI0aC00MHYtNDBoOGMxNy43IDAgMzIgMTQuMyAzMiAzMnY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjMuNyAxMjguN2M3LjYtMTEuNCAyNC43LTExLjcgMzIuNyAwIDEyLjQgMTguNCAxNS4xIDM2LjkgMTUuNyA1NS4zLS41IDE4LjQtMy4zIDM2LjktMTUuNyA1NS4zLTcuNiAxMS40LTI0LjcgMTEuNy0zMi43IDAtMTIuNC0xOC40LTE1LjEtMzYuOS0xNS43LTU1LjMuNS0xOC40IDMuMy0zNi45IDE1LjctNTUuM3ptLTE2MCAwYzcuNi0xMS40IDI0LjctMTEuNyAzMi43IDAgMTIuNCAxOC40IDE1LjEgMzYuOSAxNS43IDU1LjMtLjUgMTguNC0zLjMgMzYuOS0xNS43IDU1LjMtNy42IDExLjQtMjQuNyAxMS43LTMyLjcgMC0xMi40LTE4LjQtMTUuMS0zNi45LTE1LjctNTUuMy41LTE4LjQgMy4zLTM2LjkgMTUuNy01NS4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNiAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluQmVhbVN3ZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ1NiAxMjhjMjYuNSAwIDQ4LTIxIDQ4LTQ3IDAtMjAtMjguNS02MC40LTQxLjYtNzcuOC0zLjItNC4zLTkuNi00LjMtMTIuOCAwQzQzNi41IDIwLjYgNDA4IDYxIDQwOCA4MWMwIDI2IDIxLjUgNDcgNDggNDd6bTAgMzJjLTQ0LjEgMC04MC0zNS40LTgwLTc5IDAtNC40LjMtMTQuMiA4LjEtMzIuMkMzNDUgMjMuMSAyOTguMyA4IDI0OCA4IDExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhjMC0zNS4xLTcuNC02OC40LTIwLjUtOTguNi02LjMgMS41LTEyLjcgMi42LTE5LjUgMi42em0tMTI4LThjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em0tMTYwIDBjMjMuOCAwIDUyLjcgMjkuMyA1NiA3MS40LjcgOC42LTEwLjggMTItMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS41LTMuNyAyMi42IDYuMiAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5CZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE0NGMyMy44IDAgNTIuNyAyOS4zIDU2IDcxLjQuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjEgNy4zLTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMS00Mi4xIDMyLTcxLjQgNTUuOC03MS40em04MCAyODBjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS45IDkuNC0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5IZWFydHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNOTAuNCAxODMuNmM2LjctMTcuNiAyNi43LTI2LjcgNDQuOS0yMS45bDcuMSAxLjkgMi03LjFjNS0xOC4xIDIyLjgtMzAuOSA0MS41LTI3LjkgMjEuNCAzLjQgMzQuNCAyNC4yIDI4LjggNDQuNUwxOTUuMyAyNDNjLTEuMiA0LjUtNS45IDcuMi0xMC41IDZsLTcwLjItMTguMmMtMjAuNC01LjQtMzEuOS0yNy0yNC4yLTQ3LjJ6TTI0OCA0MzJjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMi0yMS41IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS40LTMuNiAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zem0xMzMuNC0yMDEuM2wtNzAuMiAxOC4yYy00LjUgMS4yLTkuMi0xLjUtMTAuNS02TDI4MS4zIDE3M2MtNS42LTIwLjMgNy40LTQxLjEgMjguOC00NC41IDE4LjYtMyAzNi40IDkuOCA0MS41IDI3LjlsMiA3LjEgNy4xLTEuOWMxOC4yLTQuNyAzOC4yIDQuMyA0NC45IDIxLjkgNy43IDIwLjMtMy44IDQxLjktMjQuMiA0Ny4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5TcXVpbnRUZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDkuNiAxMTEuOWMyMi42LTMuMiA3My41LTEyIDg4LjMtMjYuOCAxOS4yLTE5LjIgMTguOS01MC42LS43LTcwLjJTNDQ2LTUgNDI2LjkgMTQuMmMtMTQuOCAxNC44LTIzLjUgNjUuNy0yNi44IDg4LjMtLjggNS41IDMuOSAxMC4yIDkuNSA5LjR6TTEwMi40IDQwMC4xYy0yMi42IDMuMi03My41IDEyLTg4LjMgMjYuOC0xOS4xIDE5LjEtMTguOCA1MC42LjggNzAuMnM1MSAxOS45IDcwLjIuN2MxNC44LTE0LjggMjMuNS02NS43IDI2LjgtODguMy44LTUuNS0zLjktMTAuMi05LjUtOS40em0zMTEuNy0yNTYuNWMtMzMgMy45LTQ4LjYtMjUuMS00NS43LTQ1LjcgMy40LTI0IDcuNC00Mi4xIDExLjUtNTYuNUMyODUuMS0xMy40IDE2MS44LS41IDgwLjYgODAuNi0uNSAxNjEuNy0xMy40IDI4NSA0MS40IDM3OS45YzE0LjQtNC4xIDMyLjQtOCA1Ni41LTExLjUgMzMuMi0zLjkgNDguNiAyNS4yIDQ1LjcgNDUuNy0zLjQgMjQtNy40IDQyLjEtMTEuNSA1Ni41IDk0LjggNTQuOCAyMTguMSA0MS45IDI5OS4zLTM5LjJzOTQtMjA0LjQgMzkuMi0yOTkuM2MtMTQuNCA0LjEtMzIuNSA4LTU2LjUgMTEuNXpNMjU1LjcgMTA2YzMuMy0xMy4yIDIyLjQtMTEuNSAyMy42IDEuOGw0LjggNTIuMyA1Mi4zIDQuOGMxMy40IDEuMiAxNC45IDIwLjMgMS44IDIzLjZsLTkwLjUgMjIuNmMtOC45IDIuMi0xNi43LTUuOS0xNC41LTE0LjVsMjIuNS05MC42em0tOTAuOSAyMzAuM0wxNjAgMjg0bC01Mi4zLTQuOGMtMTMuNC0xLjItMTQuOS0yMC4zLTEuOC0yMy42bDkwLjUtMjIuNmM4LjgtMi4yIDE2LjcgNS44IDE0LjUgMTQuNUwxODguMyAzMzhjLTMuMSAxMy4yLTIyLjIgMTEuNy0yMy41LTEuN3ptMjE1LjcgNDQuMmMtMjkuMyAyOS4zLTc1LjcgNTAuNC0xMTYuNyA1MC40LTE4LjkgMC0zNi42LTQuNS01MS0xNC43LTkuOC02LjktOC43LTIxLjggMi0yNy4yIDI4LjMtMTQuNiA2My45LTQyLjQgOTcuOC03Ni4zczYxLjctNjkuNiA3Ni4zLTk3LjhjNS40LTEwLjUgMjAuMi0xMS45IDI3LjMtMiAzMi4zIDQ1LjMgNy4xIDEyNC43LTM1LjcgMTY3LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0zMy44IDE4OS43bDgwLTQ4YzExLjYtNi45IDI0IDcuNyAxNS40IDE4TDM0My42IDIwOGwzMy42IDQwLjNjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuNy00LjctNy43LTE1LjkgMC0yMC42em0tMTYzLTMwYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuOCA0LjcgNy44IDE1LjkgMCAyMC42bC04MCA0OGMtMTEuNSA2LjgtMjQtNy42LTE1LjQtMThsMzMuNi00MC4zLTMzLjYtNDAuM3pNMjQ4IDQzMmMtNjAuNiAwLTEzNC41LTM4LjMtMTQzLjgtOTMuMy0yLTExLjkgOS40LTIxLjYgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjUtMy43IDIyLjYgNi4yIDIwLjcgMTcuOS05LjMgNTUtODMuMiA5My4zLTE0My44IDkzLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpblN0YXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTk0LjYgMTY4LjlsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjIgMSA4LjkgOC42IDQuMyAxMy4ybC0yNS40IDI0LjYgNiAzNC45YzEgNi4yLTUuMyAxMS0xMSA3LjlMMTUyIDIzMy4zbC0zMS4zIDE2LjNjLTUuNyAzLjEtMTItMS43LTExLTcuOWw2LTM0LjktMjUuNC0yNC42Yy00LjYtNC43LTEuOS0xMi4zIDQuMy0xMy4zek0yNDggNDMyYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuOCA5LjMtMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNS0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3ptMTU3LjctMjQ5LjlsLTI1LjQgMjQuNiA2IDM0LjljMSA2LjItNS4zIDExLTExIDcuOUwzNDQgMjMzLjNsLTMxLjMgMTYuM2MtNS43IDMuMS0xMi0xLjctMTEtNy45bDYtMzQuOS0yNS40LTI0LjZjLTQuNS00LjYtMS45LTEyLjIgNC4zLTEzLjJsMzQuOS01IDE1LjUtMzEuNmMyLjktNS44IDExLTUuOCAxMy45IDBsMTUuNSAzMS42IDM0LjkgNWM2LjMuOSA5IDguNSA0LjQgMTMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAyLjQgMjU2LjFjLTIyLjYgMy4yLTczLjUgMTItODguMyAyNi44LTE5LjEgMTkuMS0xOC44IDUwLjYuOCA3MC4yczUxIDE5LjkgNzAuMi43YzE0LjgtMTQuOCAyMy41LTY1LjcgMjYuOC04OC4zLjgtNS41LTMuOS0xMC4yLTkuNS05LjR6bTUyMy40IDI2LjhjLTE0LjgtMTQuOC02NS43LTIzLjUtODguMy0yNi44LTUuNS0uOC0xMC4zIDMuOS05LjUgOS41IDMuMiAyMi42IDEyIDczLjUgMjYuOCA4OC4zIDE5LjIgMTkuMiA1MC42IDE4LjkgNzAuMi0uN3MyMC01MS4yLjgtNzAuM3ptLTEyOS40LTEyLjhjLTMuOC0yNi42IDE5LjEtNDkuNSA0NS43LTQ1LjcgOC45IDEuMyAxNi44IDIuNyAyNC4zIDQuMUM1NTIuNyAxMDQuNSA0NDcuNyA4IDMyMCA4Uzg3LjMgMTA0LjUgNzMuNiAyMjguNWM3LjUtMS40IDE1LjQtMi44IDI0LjMtNC4xIDMzLjItMy45IDQ4LjYgMjUuMyA0NS43IDQ1LjctMTEuOCA4Mi4zLTI5LjkgMTAwLjQtMzUuOCAxMDYuNC0uOS45LTIgMS42LTMgMi41IDQyLjcgNzQuNiAxMjMgMTI1IDIxNS4yIDEyNXMxNzIuNS01MC40IDIxNS4yLTEyNS4xYy0xLS45LTIuMS0xLjUtMy0yLjUtNS45LTUuOS0yNC0yNC0zNS44LTEwNi4zek00MDAgMTUyYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptLTE2MCAwYzIzLjggMCA1Mi43IDI5LjMgNTYgNzEuNC43IDguNi0xMC44IDEyLTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjIgNy40LTE1LjYgNC0xNC45LTQuNSAzLjEtNDIuMSAzMi03MS40IDU1LjgtNzEuNHptODAgMjgwYy02MC42IDAtMTM0LjUtMzguMy0xNDMuOC05My4zLTItMTEuNyA5LjItMjEuNiAyMC43LTE3LjlDMjI3LjEgMzMwLjUgMjcyIDMzNiAzMjAgMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTkuMyA1NS04My4yIDkzLjMtMTQzLjggOTMuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI5My4xIDM3NC42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NmMwIDEwNi4zIDY3IDE5Ni43IDE2MSAyMzItNS42LTEyLjItOS0yNS43LTktNDB2LTQ1LjVjLTI0LjctMTYuMi00My41LTM4LjEtNDcuOC02My44LTItMTEuOCA5LjItMjEuNSAyMC43LTE3LjlDMTU1LjEgMzMwLjUgMjAwIDMzNiAyNDggMzM2czkyLjktNS41IDEyMy4xLTE1LjJjMTEuNC0zLjcgMjIuNiA2LjEgMjAuNyAxNy45LTQuMyAyNS43LTIzLjEgNDcuNi00Ny44IDYzLjhWNDQ4YzAgMTQuMy0zLjQgMjcuOC05IDQwIDk0LTM1LjMgMTYxLTEyNS43IDE2MS0yMzJDNDk2IDExOSAzODUgOCAyNDggOHptLTMzLjggMjEwLjNsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zYy04LjYtMTAuMyAzLjgtMjQuOSAxNS40LTE4bDgwIDQ4YzcuNyA0LjcgNy43IDE1LjkgMCAyMC42em0xNjMgMzBjOC43IDEwLjQtMy45IDI0LjgtMTUuNCAxOGwtODAtNDhjLTcuOC00LjctNy44LTE1LjkgMC0yMC42bDgwLTQ4YzExLjctNi45IDIzLjkgNy43IDE1LjQgMThMMzQzLjYgMjA4bDMzLjYgNDAuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQgMTg0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHpNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjUtMy43IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS01NiAyMjVsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwxMTIgMjMzYy04LjUgNy40LTIxLjYuMy0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjMS42IDExLjEtMTEuNiAxOC4yLTIwIDEwLjh6bTE1MiAzOWMtMzUuMyAwLTY0LTI4LjctNjQtNjRzMjguNy02NCA2NC02NCA2NCAyOC43IDY0IDY0LTI4LjcgNjQtNjQgNjR6bS01MC45IDEwMi42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZjMCAxMDYuMyA2NyAxOTYuNyAxNjEgMjMyLTUuNi0xMi4yLTktMjUuNy05LTQwdi00NS41Yy0yNC43LTE2LjItNDMuNS0zOC4xLTQ3LjgtNjMuOC0yLTExLjggOS4zLTIxLjUgMjAuNy0xNy45QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjQtMy42IDIyLjYgNi4xIDIwLjcgMTcuOS00LjMgMjUuNy0yMy4xIDQ3LjYtNDcuOCA2My44VjQ0OGMwIDE0LjMtMy40IDI3LjgtOSA0MCA5NC0zNS4zIDE2MS0xMjUuNyAxNjEtMjMyQzQ5NiAxMTkgMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bS0zNC45IDEzNC42Yy0xNC40LTYuNS0zMS4xIDIuMi0zNC42IDE3LjZsLTEuOCA3LjhjLTIuMSA5LjItMTUuMiA5LjItMTcuMyAwbC0xLjgtNy44Yy0zLjUtMTUuNC0yMC4yLTI0LjEtMzQuNi0xNy42LS45LjQuMy0uMi0xOC45IDkuNHY2M2MwIDM1LjIgMjggNjQuNSA2My4xIDY0LjkgMzUuNy41IDY0LjktMjguNCA2NC45LTY0di02NGMtMTkuNS05LjYtMTguMi04LjktMTktOS4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaW5XaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDggMCAxMTkgMCAyNTZ6bTIwMC00OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzJ6bTE2OCAyNWwtOS41LTguNWMtMTQuOC0xMy4yLTQ2LjItMTMuMi02MSAwTDI4OCAyMzNjLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVMzODQgMTk3IDM4OCAyMjIuMmMxLjYgMTEtMTEuNSAxOC4yLTIwIDEwLjh6bS0yNDMuMSA4Ny44QzE1NS4xIDMzMC41IDIwMCAzMzYgMjQ4IDMzNnM5Mi45LTUuNSAxMjMuMS0xNS4yYzExLjMtMy43IDIyLjYgNiAyMC43IDE3LjktOS4yIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zcy0xMzQuNS0zOC4zLTE0My44LTkzLjNjLTItMTEuOSA5LjMtMjEuNiAyMC43LTE3Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0tMTYwIDBjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem04MCAyNTZjLTYwLjYgMC0xMzQuNS0zOC4zLTE0My44LTkzLjMtMi0xMS44IDkuMy0yMS42IDIwLjctMTcuOUMxNTUuMSAzMzAuNSAyMDAgMzM2IDI0OCAzMzZzOTIuOS01LjUgMTIzLjEtMTUuMmMxMS4zLTMuNyAyMi42IDYuMSAyMC43IDE3LjktOS4zIDU1LTgzLjIgOTMuMy0xNDMuOCA5My4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUdyaXBIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDI4OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTE2MCAwaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTk2IDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMTYwIDBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXNWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiA0OTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ6bTEyOCAwVjE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY0ODBjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwTGluZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDI4OEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg0ODBjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTI4SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHcmlwVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYgMzJIMzJDMTQuMzMgMzIgMCA0Ni4zMyAwIDY0djY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0wIDE2MEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bTAgMTYwSDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMjg4IDMyaC02NGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY2NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMCAxNjBoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNjRjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFHdWl0YXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYzIDM5TDQ3MyA5LjM3YTMyIDMyIDAgMCAwLTQ1LjI2IDBMMzgxLjQ2IDU1LjdhMzUuMTQgMzUuMTQgMCAwIDAtOC41MyAxMy43OUwzNjAuNzcgMTA2bC03Ni4yNiA3Ni4yNmMtMTIuMTYtOC43Ni0yNS41LTE1Ljc0LTQwLjEtMTkuMTQtMzMuNDUtNy43OC02Ny0uODgtODkuODggMjJhODIuNDUgODIuNDUgMCAwIDAtMjAuMjQgMzMuNDdjLTYgMTguNTYtMjMuMjEgMzIuNjktNDIuMTUgMzQuNDYtMjMuNyAyLjI3LTQ1LjczIDExLjQ1LTYyLjYxIDI4LjQ0Qy0xNi4xMSAzMjctNy45IDQwOSA0Ny41OCA0NjQuNDVTMTg1IDUyOCAyMzAuNTYgNDgyLjUyYzE3LTE2Ljg4IDI2LjE2LTM4LjkgMjguNDUtNjIuNzEgMS43Ni0xOC44NSAxNS44OS0zNi4xMyAzNC40My00Mi4xNGE4Mi42IDgyLjYgMCAwIDAgMzMuNDgtMjAuMjVjMjIuODctMjIuODggMjkuNzQtNTYuMzYgMjItODkuNzUtMy4zOS0xNC42NC0xMC4zNy0yOC0xOS4xNi00MC4yTDQwNiAxNTEuMjNsMzYuNDgtMTIuMTZhMzUuMTQgMzUuMTQgMCAwIDAgMTMuNzktOC41M2w0Ni4zMy00Ni4zMmEzMiAzMiAwIDAgMCAuMDMtNDUuMjJ6TTIwOCAzNTJhNDggNDggMCAxIDEgNDgtNDggNDggNDggMCAwIDEtNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggODB2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWODBjMC0yNi41MSAyMS40OS00OCA0OC00OGgzNTJjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTExMiA0OGgtMzJjLTguODM3IDAtMTYgNy4xNjMtMTYgMTZ2ODBIMTYwdi04MGMwLTguODM3LTcuMTYzLTE2LTE2LTE2aC0zMmMtOC44MzcgMC0xNiA3LjE2My0xNiAxNnYyMjRjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04MGgxMjh2ODBjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgzMmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjE0NGMwLTguODM3LTcuMTYzLTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbWJ1cmdlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2SDQ4YTQ4IDQ4IDAgMCAwIDAgOTZoNDE2YTQ4IDQ4IDAgMCAwIDAtOTZ6bTE2IDEyOEgzMmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NCA2NCAwIDAgMCA2NCA2NGgzNTJhNjQgNjQgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2ek01OC42NCAyMjRoMzk0LjcyYzM0LjU3IDAgNTQuNjItNDMuOSAzNC44Mi03NS44OEM0NDggODMuMiAzNTkuNTUgMzIuMSAyNTYgMzJjLTEwMy41NC4xLTE5MiA1MS4yLTIzMi4xOCAxMTYuMTFDNCAxODAuMDkgMjQuMDcgMjI0IDU4LjY0IDIyNHpNMzg0IDExMmExNiAxNiAwIDEgMS0xNiAxNiAxNiAxNiAwIDAgMSAxNi0xNnpNMjU2IDgwYTE2IDE2IDAgMSAxLTE2IDE2IDE2IDE2IDAgMCAxIDE2LTE2em0tMTI4IDMyYTE2IDE2IDAgMSAxLTE2IDE2IDE2IDE2IDAgMCAxIDE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbW1lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzEuMzEgMTkzLjk0bC0yMi42My0yMi42M2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMTEuMzEgMTEuMzEtMjguOS0yOC45YzUuNjMtMjEuMzEuMzYtNDQuOS0xNi4zNS02MS42MWwtNDUuMjUtNDUuMjVjLTYyLjQ4LTYyLjQ4LTE2My43OS02Mi40OC0yMjYuMjggMGw5MC41MSA0NS4yNXYxOC43NWMwIDE2Ljk3IDYuNzQgMzMuMjUgMTguNzUgNDUuMjVsNDkuMTQgNDkuMTRjMTYuNzEgMTYuNzEgNDAuMyAyMS45OCA2MS42MSAxNi4zNWwyOC45IDI4LjktMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjMgMjIuNjNjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw5MC41MS05MC41MWM2LjIzLTYuMjQgNi4yMy0xNi4zNy0uMDItMjIuNjJ6bS0yODYuNzItMTUuMmMtMy43LTMuNy02Ljg0LTcuNzktOS44NS0xMS45NUwxOS42NCA0MDQuOTZjLTI1LjU3IDIzLjg4LTI2LjI2IDY0LjE5LTEuNTMgODguOTNzNjUuMDUgMjQuMDUgODguOTMtMS41M2wyMzguMTMtMjU1LjA3Yy0zLjk2LTIuOTEtNy45LTUuODctMTEuNDQtOS40MWwtNDkuMTQtNDkuMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFtc2EgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA5LjM0IDMwNy4yNUM1MDQuMjggMjk1LjU2IDQ5Mi43NSAyODggNDgwIDI4OGgtNjRWODBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTM0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWNDBjMC0yMi0xOC00MC00MC00MHMtNDAgMTgtNDAgNDB2MTc0YzAgNS41Mi00LjQ4IDEwLTEwIDEwaC0yMGMtNS41MiAwLTEwLTQuNDgtMTAtMTBWODBjMC0yMi0xOC00MC00MC00MFM5NiA1OCA5NiA4MHYyMDhIMzJjLTEyLjc1IDAtMjQuMjggNy41Ni0yOS4zNCAxOS4yNWEzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQgMzQuNThsMTAyLjY5IDExMC4wM0MxNDYuOTcgNDkwLjA4IDE5OS42OSA1MTIgMjU2IDUxMnMxMDkuMDMtMjEuOTIgMTQ0LjcyLTYwLjE0TDUwMy40IDM0MS44M2EzMS45NjYgMzEuOTY2IDAgMCAwIDUuOTQtMzQuNTh6TTI1NiA0MTZjLTUzLjAyIDAtOTYtNjQtOTYtNjRzNDIuOTgtNjQgOTYtNjQgOTYgNjQgOTYgNjQtNDIuOTggNjQtOTYgNjR6bTAtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzUuMyAyNTAuNWM3IDcuNCAxOC40IDcuNCAyNS41IDBsMTA4LjktMTE0LjJjMzEuNi0zMy4yIDI5LjgtODguMi01LjYtMTE4LjgtMzAuOC0yNi43LTc2LjctMjEuOS0xMDQuOSA3LjdMMjg4IDM2LjlsLTExLjEtMTEuNkMyNDguNy00LjQgMjAyLjgtOS4yIDE3MiAxNy41Yy0zNS4zIDMwLjYtMzcuMiA4NS42LTUuNiAxMTguOGwxMDguOSAxMTQuMnptMjkwIDc3LjZjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRIb2xkaW5nTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTkuODgsMTc1LjgyaDY0djY0YTE2LDE2LDAsMCwwLDE2LDE2aDY0YTE2LDE2LDAsMCwwLDE2LTE2di02NGg2NGExNiwxNiwwLDAsMCwxNi0xNnYtNjRhMTYsMTYsMCwwLDAtMTYtMTZoLTY0di02NGExNiwxNiwwLDAsMC0xNi0xNmgtNjRhMTYsMTYsMCwwLDAtMTYsMTZ2NjRoLTY0YTE2LDE2LDAsMCwwLTE2LDE2djY0QTE2LDE2LDAsMCwwLDE1OS44OCwxNzUuODJaTTU2OC4wNywzMzYuMTNhMzkuOTEsMzkuOTEsMCwwLDAtNTUuOTMtOC40N0wzOTIuNDcsNDE1Ljg0SDI3MS44NmExNiwxNiwwLDAsMSwwLTMySDM1MC4xYzE2LDAsMzAuNzUtMTAuODcsMzMuMzctMjYuNjFhMzIuMDYsMzIuMDYsMCwwLDAtMzEuNjItMzcuMzhoLTE2MGExMTcuNywxMTcuNywwLDAsMC03NC4xMiwyNi4yNWwtNDYuNSwzNy43NEgxNS44N2ExNi4xMSwxNi4xMSwwLDAsMC0xNiwxNnY5NmExNi4xMSwxNi4xMSwwLDAsMCwxNiwxNmgzNDdhMTA0LjgsMTA0LjgsMCwwLDAsNjEuNy0yMC4yN0w1NTkuNiwzOTJBNDAsNDAsMCwwLDAsNTY4LjA3LDMzNi4xM1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1VzZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzEuMDYsMTQ0LjNsNTQuMjcsMTQuM2E4LjU5LDguNTksMCwwLDEsNi42Myw4LjFjMCw0LjYtNC4wOSw4LjQtOS4xMiw4LjRoLTM1LjZhMzAsMzAsMCwwLDEtMTEuMTktMi4yYy01LjI0LTIuMi0xMS4yOC0xLjctMTUuMywybC0xOSwxNy41YTExLjY4LDExLjY4LDAsMCwwLTIuMjUsMi42NiwxMS40MiwxMS40MiwwLDAsMCwzLjg4LDE1Ljc0LDgzLjc3LDgzLjc3LDAsMCwwLDM0LjUxLDExLjVWMjQwYzAsOC44LDcuODMsMTYsMTcuMzcsMTZoMTcuMzdjOS41NSwwLDE3LjM4LTcuMiwxNy4zOC0xNlYyMjIuNGMzMi45My0zLjYsNTcuODQtMzEsNTMuNS02My0zLjE1LTIzLTIyLjQ2LTQxLjMtNDYuNTYtNDcuN0wyODIuNjgsOTcuNGE4LjU5LDguNTksMCwwLDEtNi42My04LjFjMC00LjYsNC4wOS04LjQsOS4xMi04LjRoMzUuNkEzMCwzMCwwLDAsMSwzMzIsODMuMWM1LjIzLDIuMiwxMS4yOCwxLjcsMTUuMy0ybDE5LTE3LjVBMTEuMzEsMTEuMzEsMCwwLDAsMzY4LjQ3LDYxYTExLjQzLDExLjQzLDAsMCwwLTMuODQtMTUuNzgsODMuODIsODMuODIsMCwwLDAtMzQuNTItMTEuNVYxNmMwLTguOC03LjgyLTE2LTE3LjM3LTE2SDI5NS4zN0MyODUuODIsMCwyNzgsNy4yLDI3OCwxNlYzMy42Yy0zMi44OSwzLjYtNTcuODUsMzEtNTMuNTEsNjNDMjI3LjYzLDExOS42LDI0NywxMzcuOSwyNzEuMDYsMTQ0LjNaTTU2NS4yNywzMjguMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiwwTDQzMC4yNyw0MDJhNjMuNjQsNjMuNjQsMCwwLDEtNDAsMTRIMjcyYTE2LDE2LDAsMCwxLDAtMzJoNzguMjljMTUuOSwwLDMwLjcxLTEwLjksMzMuMjUtMjYuNmEzMS4yLDMxLjIsMCwwLDAsLjQ2LTUuNDZBMzIsMzIsMCwwLDAsMzUyLDMyMEgxOTJhMTE3LjY2LDExNy42NiwwLDAsMC03NC4xLDI2LjI5TDcxLjQsMzg0SDE2QTE2LDE2LDAsMCwwLDAsNDAwdjk2YTE2LDE2LDAsMCwwLDE2LDE2SDM3Mi43N2E2NCw2NCwwLDAsMCw0MC0xNEw1NjQsMzc3YTMyLDMyLDAsMCwwLDEuMjgtNDguOVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kSG9sZGluZ1dhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAyNTZjNTMgMCA5Ni00Mi4xIDk2LTk0IDAtNDAtNTcuMS0xMjAuNy04My4yLTE1NS42LTYuNC04LjUtMTkuMi04LjUtMjUuNiAwQzI0OS4xIDQxLjMgMTkyIDEyMiAxOTIgMTYyYzAgNTEuOSA0MyA5NCA5NiA5NHptMjc3LjMgNzIuMWMtMTEuOC0xMC43LTMwLjItMTAtNDIuNiAwTDQzMC4zIDQwMmMtMTEuMyA5LjEtMjUuNCAxNC00MCAxNEgyNzJjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTZoNzguM2MxNS45IDAgMzAuNy0xMC45IDMzLjMtMjYuNiAzLjMtMjAtMTIuMS0zNy40LTMxLjYtMzcuNEgxOTJjLTI3IDAtNTMuMSA5LjMtNzQuMSAyNi4zTDcxLjQgMzg0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2aDM1Ni44YzE0LjUgMCAyOC42LTQuOSA0MC0xNEw1NjQgMzc3YzE1LjItMTIuMSAxNi40LTM1LjMgMS4zLTQ4Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZEhvbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY1LjMgMzI4LjFjLTExLjgtMTAuNy0zMC4yLTEwLTQyLjYgMEw0MzAuMyA0MDJjLTExLjMgOS4xLTI1LjQgMTQtNDAgMTRIMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDc4LjNjMTUuOSAwIDMwLjctMTAuOSAzMy4zLTI2LjYgMy4zLTIwLTEyLjEtMzcuNC0zMS42LTM3LjRIMTkyYy0yNyAwLTUzLjEgOS4zLTc0LjEgMjYuM0w3MS40IDM4NEgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djk2YzAgOC44IDcuMiAxNiAxNiAxNmgzNTYuOGMxNC41IDAgMjguNi00LjkgNDAtMTRMNTY0IDM3N2MxNS4yLTEyLjEgMTYuNC0zNS4zIDEuMy00OC45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ4MGgxOTJWMzYzLjc3OGE5NS45OTggOTUuOTk4IDAgMCAwLTE0LjgzMy01MS4yNjNMMzk4LjEyNyA1NC4zNjhBNDggNDggMCAwIDAgMzU3LjU0NCAzMkgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnYxNmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZoMjI5Ljk4MWMxMi44NDQgMCAyMS41NTYgMTMuMDY3IDE2LjYxNSAyNC45MjNsLTIxLjQxIDUxLjM4NUEzMiAzMiAwIDAgMSAyNTEuNjQ4IDIyNEgxMjhjLTM1LjM0NiAwLTY0IDI4LjY1NC02NCA2NHY4YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNDcuNDA2YTQ3Ljk5NSA0Ny45OTUgMCAwIDEgMjUuNjkyIDcuNDU1bDExMS43NDggNzAuODExQTI0LjAwMSAyNC4wMDEgMCAwIDEgMzg0IDQxOC41MzlWNDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRNaWRkbGVGaW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc5LjkzIDMxNy4xMmEzNy4zMyAzNy4zMyAwIDAgMC0yOC4yOC0zNi4xOUw0MTYgMjcydi00OS41OWMwLTExLjQ0LTkuNjktMjEuMjktMjMuMTUtMjMuNTRsLTM4LjQtNi40QzMzNi42MyAxODkuNSAzMjAgMjAwLjg2IDMyMCAyMTZ2MzJhOCA4IDAgMCAxLTE2IDBWNTBjMC0yNi4yOC0yMC4yNS00OS4yLTQ2LjUyLTUwQTQ4IDQ4IDAgMCAwIDIwOCA0OHYyMDBhOCA4IDAgMCAxLTE2IDB2LTMyYzAtMTUuMTUtMTYuNjMtMjYuNTEtMzQuNDUtMjMuNTRsLTMwLjY4IDUuMTJjLTE4IDMtMzAuODcgMTYuMTItMzAuODcgMzEuMzhWMzc2YTggOCAwIDAgMS0xNiAwdi03NmwtMjcuMzYgMTVBMzcuMzQgMzcuMzQgMCAwIDAgMzIgMzQ4LjR2NzMuNDdhMzcuMzEgMzcuMzEgMCAwIDAgMTAuOTMgMjYuMzlsMzAuOTMgMzAuOTNBMTEyIDExMiAwIDAgMCAxNTMuMDUgNTEyaDIxNUExMTIgMTEyIDAgMCAwIDQ4MCA0MDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOC43ODEgMTI4LjAwN0MzODYuMzU2IDEyNy41NzggMzY4IDE0Ni4zNiAzNjggMTY4Ljc5VjI1NmgtOFY3OS43OWMwLTIyLjQzLTE4LjM1Ni00MS4yMTItNDAuNzgxLTQwLjc4M0MyOTcuNDg4IDM5LjQyMyAyODAgNTcuMTY5IDI4MCA3OXYxNzdoLThWNDAuNzlDMjcyIDE4LjM2IDI1My42NDQtLjQyMiAyMzEuMjE5LjAwNyAyMDkuNDg4LjQyMyAxOTIgMTguMTY5IDE5MiA0MHYyMTZoLThWODAuNzljMC0yMi40My0xOC4zNTYtNDEuMjEyLTQwLjc4MS00MC43ODNDMTIxLjQ4OCA0MC40MjMgMTA0IDU4LjE2OSAxMDQgODB2MjM1Ljk5MmwtMzEuNjQ4LTQzLjUxOWMtMTIuOTkzLTE3Ljg2Ni0zOC4wMDktMjEuODE3LTU1Ljg3Ny04LjgyMy0xNy44NjUgMTIuOTk0LTIxLjgxNSAzOC4wMS04LjgyMiA1NS44NzdsMTI1LjYwMSAxNzIuNzA1QTQ4IDQ4IDAgMCAwIDE3Mi4wNzMgNTEyaDE5Ny41OWMyMi4yNzQgMCA0MS42MjItMTUuMzI0IDQ2LjcyNC0zNy4wMDZsMjYuNTA4LTExMi42NmExOTIuMDExIDE5Mi4wMTEgMCAwIDAgNS4xMDQtNDMuOTc1VjE2OGMuMDAxLTIxLjgzMS0xNy40ODctMzkuNTc3LTM5LjIxOC0zOS45OTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBlYWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwOCAyMTZjLTIyLjA5MiAwLTQwIDE3LjkwOS00MCA0MGgtOHYtMzJjMC0yMi4wOTEtMTcuOTA4LTQwLTQwLTQwcy00MCAxNy45MDktNDAgNDB2MzJoLThWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHMtNDggMjEuNDktNDggNDh2MjA4aC0xMy41NzJMOTIuNjg4IDc4LjQ0OUM4Mi45OTQgNTMuNzc0IDU1LjEzNCA0MS42MyAzMC40NjEgNTEuMzI0IDUuNzg3IDYxLjAxNy02LjM1NiA4OC44NzcgMy4zMzcgMTEzLjU1MWw3NC43NjUgMTkwLjM0Mi0zMS4wOSAyNC44NzJjLTE1LjM4MSAxMi4zMDYtMTkuNTE1IDMzLjk3OC05Ljc0MSA1MS4wODFsNjQgMTEyQTM5Ljk5OCAzOS45OTggMCAwIDAgMTM2IDUxMmgyNDBjMTguNTYyIDAgMzQuNjg2LTEyLjc3IDM4LjkzNy0zMC44MzhsMzItMTM2QTM5Ljk3IDM5Ljk3IDAgMCAwIDQ0OCAzMzZ2LTgwYzAtMjIuMDkxLTE3LjkwOC00MC00MC00MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkxLjgyNiA0NjcuMlYzMTcuOTY2Yy04LjI0OCA1Ljg0MS0xNi41NTggMTAuNTctMjQuOTE4IDE0LjE1M0MzNS4wOTggMzQ1Ljc1Mi0uMDE0IDMyMi4yMjIgMCAyODhjLjAwOC0xOC42MTYgMTAuODk3LTMyLjIwMyAyOS4wOTItNDAgMjguMjg2LTEyLjEyMiA2NC4zMjktNzguNjQ4IDc3LjMyMy0xMDcuNTM0IDcuOTU2LTE3Ljg1NyAyNS40NzktMjguNDUzIDQzLjg0NS0yOC40NjRsLjAwMS0uMDAyaDE3MS41MjZjMTEuODEyIDAgMjEuODk3IDguNTk2IDIzLjcwMyAyMC4yNjkgNy4yNSA0Ni44MzcgMzguNDgzIDYxLjc2IDM4LjMxNSAxMjMuNzMxLS4wMDcgMi43MjQuMTk1IDEzLjI1NC4xOTUgMTYgMCA1MC42NTQtMjIuMTIyIDgxLjU3NC03MS4yNjMgNzIuNi05LjI5NyAxOC41OTctMzkuNDg2IDMwLjczOC02Mi4zMTUgMTYuNDUtMjEuMTc3IDI0LjY0NS01My44OTYgMjIuNjM5LTcwLjk0NCA2LjI5OVY0NjcuMmMwIDI0LjE1LTIwLjIwMSA0NC44LTQzLjgyNiA0NC44LTIzLjI4MyAwLTQzLjgyNi0yMS4zNS00My44MjYtNDQuOHpNMTEyIDcyVjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxOTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djQ4YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgxMzZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHptMjEyLTI0YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0LjggMTU1LjgyNmgxNDkuMjM0Yy01Ljg0MS04LjI0OC0xMC41Ny0xNi41NTgtMTQuMTUzLTI0LjkxOEMxNjYuMjQ4IDk5LjA5OCAxODkuNzc4IDYzLjk4NiAyMjQgNjRjMTguNjE2LjAwOCAzMi4yMDMgMTAuODk3IDQwIDI5LjA5MiAxMi4xMjIgMjguMjg2IDc4LjY0OCA2NC4zMjkgMTA3LjUzNCA3Ny4zMjMgMTcuODU3IDcuOTU2IDI4LjQ1MyAyNS40NzkgMjguNDY0IDQzLjg0NWwuMDAyLjAwMXYxNzEuNTI2YzAgMTEuODEyLTguNTk2IDIxLjg5Ny0yMC4yNjkgMjMuNzAzLTQ2LjgzNyA3LjI1LTYxLjc2IDM4LjQ4My0xMjMuNzMxIDM4LjMxNS0yLjcyNC0uMDA3LTEzLjI1NC4xOTUtMTYgLjE5NS01MC42NTQgMC04MS41NzQtMjIuMTIyLTcyLjYtNzEuMjYzLTE4LjU5Ny05LjI5Ny0zMC43MzgtMzkuNDg2LTE2LjQ1LTYyLjMxNS0yNC42NDUtMjEuMTc3LTIyLjYzOS01My44OTYtNi4yOTktNzAuOTQ0SDQ0LjhjLTI0LjE1IDAtNDQuOC0yMC4yMDEtNDQuOC00My44MjYgMC0yMy4yODMgMjEuMzUtNDMuODI2IDQ0LjgtNDMuODI2ek00NDAgMTc2aDQ4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC00OGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjIwMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bTI0IDIxMmMxMS4wNDYgMCAyMC04Ljk1NCAyMC0yMHMtOC45NTQtMjAtMjAtMjAtMjAgOC45NTQtMjAgMjAgOC45NTQgMjAgMjAgMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFBvaW50UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDE5OS42NTJjMCAyMy42MjUtMjAuNjUgNDMuODI2LTQ0LjggNDMuODI2aC05OS44NTFjMTYuMzQgMTcuMDQ4IDE4LjM0NiA0OS43NjYtNi4yOTkgNzAuOTQ0IDE0LjI4OCAyMi44MjkgMi4xNDcgNTMuMDE3LTE2LjQ1IDYyLjMxNUMzNTMuNTc0IDQyNS44NzggMzIyLjY1NCA0NDggMjcyIDQ0OGMtMi43NDYgMC0xMy4yNzYtLjIwMy0xNi0uMTk1LTYxLjk3MS4xNjgtNzYuODk0LTMxLjA2NS0xMjMuNzMxLTM4LjMxNUMxMjAuNTk2IDQwNy42ODMgMTEyIDM5Ny41OTkgMTEyIDM4NS43ODZWMjE0LjI2MWwuMDAyLS4wMDFjLjAxMS0xOC4zNjYgMTAuNjA3LTM1Ljg4OSAyOC40NjQtNDMuODQ1IDI4Ljg4Ni0xMi45OTQgOTUuNDEzLTQ5LjAzOCAxMDcuNTM0LTc3LjMyMyA3Ljc5Ny0xOC4xOTQgMjEuMzg0LTI5LjA4NCA0MC0yOS4wOTIgMzQuMjIyLS4wMTQgNTcuNzUyIDM1LjA5OCA0NC4xMTkgNjYuOTA4LTMuNTgzIDguMzU5LTguMzEyIDE2LjY3LTE0LjE1MyAyNC45MThINDY3LjJjMjMuNDUgMCA0NC44IDIwLjU0MyA0NC44IDQzLjgyNnpNOTYgMjAwdjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMjRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYyMDBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDQ4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHpNNjggMzY4YzAtMTEuMDQ2LTguOTU0LTIwLTIwLTIwcy0yMCA4Ljk1NC0yMCAyMCA4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzUuNjUyIDBjMjMuNjI1IDAgNDMuODI2IDIwLjY1IDQzLjgyNiA0NC44djk5Ljg1MWMxNy4wNDgtMTYuMzQgNDkuNzY2LTE4LjM0NiA3MC45NDQgNi4yOTkgMjIuODI5LTE0LjI4OCA1My4wMTctMi4xNDcgNjIuMzE1IDE2LjQ1QzM2MS44NzggMTU4LjQyNiAzODQgMTg5LjM0NiAzODQgMjQwYzAgMi43NDYtLjIwMyAxMy4yNzYtLjE5NSAxNiAuMTY4IDYxLjk3MS0zMS4wNjUgNzYuODk0LTM4LjMxNSAxMjMuNzMxQzM0My42ODMgMzkxLjQwNCAzMzMuNTk5IDQwMCAzMjEuNzg2IDQwMEgxNTAuMjYxbC0uMDAxLS4wMDJjLTE4LjM2Ni0uMDExLTM1Ljg4OS0xMC42MDctNDMuODQ1LTI4LjQ2NEM5My40MjEgMzQyLjY0OCA1Ny4zNzcgMjc2LjEyMiAyOS4wOTIgMjY0IDEwLjg5NyAyNTYuMjAzLjAwOCAyNDIuNjE2IDAgMjI0Yy0uMDE0LTM0LjIyMiAzNS4wOTgtNTcuNzUyIDY2LjkwOC00NC4xMTkgOC4zNTkgMy41ODMgMTYuNjcgOC4zMTIgMjQuOTE4IDE0LjE1M1Y0NC44YzAtMjMuNDUgMjAuNTQzLTQ0LjggNDMuODI2LTQ0Ljh6TTEzNiA0MTZoMTkyYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHY0OGMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMTM2Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTQ4YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHptMTY4IDI4Yy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHM4Ljk1NCAyMCAyMCAyMCAyMC04Ljk1NCAyMC0yMC04Ljk1NC0yMC0yMC0yMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMjQwdjk2YzAgMy4wODQtLjM1NiA2LjE1OS0xLjA2MyA5LjE2MmwtMzIgMTM2QzQxMC42ODYgNDk5LjIzIDM5NC41NjIgNTEyIDM3NiA1MTJIMTY4YTQwLjAwNCA0MC4wMDQgMCAwIDEtMzIuMzUtMTYuNDczbC0xMjcuOTk3LTE3NmMtMTIuOTkzLTE3Ljg2Ni05LjA0My00Mi44ODMgOC44MjItNTUuODc2IDE3Ljg2Ny0xMi45OTQgNDIuODg0LTkuMDQzIDU1Ljg3NyA4LjgyM0wxMDQgMzE1Ljk5MlY0MGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwdjIwMGg4di00MGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwdjQwaDh2LTI0YzAtMjIuMDkxIDE3LjkwOC00MCA0MC00MHM0MCAxNy45MDkgNDAgNDB2MjRoOGMwLTIyLjA5MSAxNy45MDgtNDAgNDAtNDBzNDAgMTcuOTA5IDQwIDQwem0tMjU2IDgwaC04djk2aDh2LTk2em04OCAwaC04djk2aDh2LTk2em04OCAwaC04djk2aDh2LTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRSb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NC44IDgwYy0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4aC04Vjk2LjhjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjgtMjYuOS0uNC00OC44IDIxLjItNDguOCA0OHYzMmgtOFY4MC44YzAtMjYuMy0yMC45LTQ4LjMtNDcuMi00OC44LTI2LjktLjQtNDguOCAyMS4yLTQ4LjggNDh2NDhoLThWOTYuOGMwLTI2LjMtMjAuOS00OC4zLTQ3LjItNDguOC0yNi45LS40LTQ4LjggMjEuMi00OC44IDQ4djEzNmwtOC03LjF2LTQ4LjFjMC0yNi4zLTIwLjktNDguMy00Ny4yLTQ4LjhDMjEuOSAxMjcuNiAwIDE0OS4yIDAgMTc2djY2LjRjMCAyNy40IDExLjcgNTMuNSAzMi4yIDcxLjhsMTExLjcgOTkuM2MxMC4yIDkuMSAxNi4xIDIyLjIgMTYuMSAzNS45djYuN2MwIDEzLjMgMTAuNyAyNCAyNCAyNGgyNDBjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTIuOWMwLTEyLjggMi42LTI1LjUgNy41LTM3LjNsNDktMTE2LjNjNS0xMS44IDcuNS0yNC41IDcuNS0zNy4zVjEyOC44YzAtMjYuMy0yMC45LTQ4LjQtNDcuMi00OC44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRTY2lzc29ycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgNDQwYzAtMjIuMDkyIDE3LjkwOS00MCA0MC00MHYtOGgtMzJjLTIyLjA5MSAwLTQwLTE3LjkwOC00MC00MHMxNy45MDktNDAgNDAtNDBoMzJ2LThINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDhoMjA4di0xMy41NzJsLTE3Ny41NTEtNjkuNzRjLTI0LjY3NC05LjY5NC0zNi44MTgtMzcuNTU1LTI3LjEyNS02Mi4yMjggOS42OTMtMjQuNjc0IDM3LjU1NC0zNi44MTcgNjIuMjI4LTI3LjEyNGwxOTAuMzQyIDc0Ljc2NSAyNC44NzItMzEuMDljMTIuMzA2LTE1LjM4MSAzMy45NzgtMTkuNTE1IDUxLjA4MS05Ljc0MWwxMTIgNjRBNDAuMDAyIDQwLjAwMiAwIDAgMSA1MTIgMTY4djI0MGMwIDE4LjU2Mi0xMi43NyAzNC42ODYtMzAuODM4IDM4LjkzN2wtMTM2IDMyQTM5Ljk4MiAzOS45ODIgMCAwIDEgMzM2IDQ4MGgtODBjLTIyLjA5MSAwLTQwLTE3LjkwOC00MC00MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kU3BhcmtsZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA2LjY2LDE3MC42NGwuMDksMCw0OS41NS0yMC42NWE3LjMyLDcuMzIsMCwwLDAsMy42OC02aDBhNy4yOSw3LjI5LDAsMCwwLTMuNjgtNmwtNDkuNTctMjAuNjctLjA3LDBMODYsNjcuNjhhNi42Niw2LjY2LDAsMCwwLTExLjkyLDBsLTIwLjcsNDkuNjMtLjA1LDBMMy43LDEzOEE3LjI5LDcuMjksMCwwLDAsMCwxNDRIMGE3LjMyLDcuMzIsMCwwLDAsMy42OCw2TDUzLjI3LDE3MC42bC4wNywwTDc0LDIyMC4yNmE2LjY1LDYuNjUsMCwwLDAsMTEuOTIsMGwyMC42OS00OS42MlpNNDcxLjM4LDQ2Ny40MWwtMS0uNDItMS0uNWEzOC42NywzOC42NywwLDAsMSwwLTY5LjE0bDEtLjQ5LDEtLjQzLDM3LjQ5LTE1LjYzLDE1LjYzLTM3LjQ4LjQxLTEsLjQ3LS45NWMzLjg1LTcuNzQsMTAuNTgtMTMuNjMsMTguMzUtMTcuMzQsMC0xLjMzLjI1LTIuNjkuMjctNFYxNDRhMzIsMzIsMCwwLDAtNjQsMHY3MmE4LDgsMCwwLDEtOCw4SDQ1NmE4LDgsMCwwLDEtOC04VjY0YTMyLDMyLDAsMCwwLTY0LDBWMjE2YTgsOCwwLDAsMS04LDhIMzYwYTgsOCwwLDAsMS04LThWMzJhMzIsMzIsMCwwLDAtNjQsMFYyMTZhOCw4LDAsMCwxLTgsOEgyNjRhOCw4LDAsMCwxLTgtOFY2NGEzMiwzMiwwLDAsMC02NCwwdjI0MWwtMjMuNTktMzIuNDlhNDAsNDAsMCwwLDAtNjQuNzEsNDcuMDlMMjI5LjMsNDkyLjIxQTQ4LjA3LDQ4LjA3LDAsMCwwLDI2OC4wOSw1MTJINDY1LjdjMTkuMjQsMCwzNS42NS0xMS43Myw0My4yNC0yOC43OWwtLjA3LS4xN1pNMzQ5Ljc5LDMzOS41MiwzMjAsMzUxLjkzbC0xMi40MiwyOS43OGE0LDQsMCwwLDEtNy4xNSwwTDI4OCwzNTEuOTNsLTI5Ljc5LTEyLjQxYTQsNCwwLDAsMSwwLTcuMTZMMjg4LDMxOS45NGwxMi40Mi0yOS43OGE0LDQsMCwwLDEsNy4xNSwwTDMyMCwzMTkuOTRsMjkuNzksMTIuNDJhNCw0LDAsMCwxLDAsNy4xNlpNNjQwLDQzMS45MWE3LjI4LDcuMjgsMCwwLDAtMy42OC02bC00OS41Ny0yMC42Ny0uMDcsMEw1NjYsMzU1LjYzYTYuNjYsNi42NiwwLDAsMC0xMS45MiwwbC0yMC43LDQ5LjYzLS4wNSwwTDQ4My43LDQyNmE3LjI4LDcuMjgsMCwwLDAtMy42OCw2aDBhNy4yOSw3LjI5LDAsMCwwLDMuNjgsNS45NWw0OS41NywyMC42Ny4wNywwTDU1NCw1MDguMjFhNi42NSw2LjY1LDAsMCwwLDExLjkyLDBsMjAuNjktNDkuNjJoMGwuMDksMCw0OS41NS0yMC42NmE3LjI5LDcuMjksMCwwLDAsMy42OC01Ljk1aDBaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZFNwb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMC45MDA1LDE0NS4yNzAyNyw0NDIuNjA0LDQzMi4wOTM5MUExMDMuOTk1MDcsMTAzLjk5NTA3LDAsMCwxLDM0MS40Mzc0NSw1MTJIMjE0LjA3NGExMzUuOTY5NjgsMTM1Ljk2OTY4LDAsMCwxLTkzLjE4NDg5LTM2Ljk1MjkxTDEyLjU5MDcyLDM3My4xMjcyM2EzOS45OTIsMzkuOTkyLDAsMCwxLDU0LjgxMjItNTguMjQ5ODhsNjAuNTkzNDIsNTcuMDI1Mjh2MGEyODMuMjQ4NDksMjgzLjI0ODQ5LDAsMCwwLTExLjY3MDMtODAuNDY3MzRMNzMuNjM3MjYsMTQ3LjM2MDExYTQwLjAwNTc1LDQwLjAwNTc1LDAsMSwxLDc2LjcxODMzLTIyLjcxODdsMzcuMTU0NTgsMTI1LjM5NDc3YTguMzMxMTMsOC4zMzExMywwLDAsMCwxNi4wNTY1Ni00LjQ0MTRMMTUzLjI2MTgzLDQ5Ljk1NDA2QTM5Ljk5NjM4LDM5Ljk5NjM4LDAsMSwxLDIzMC43MzAxNSwzMC4wMTY2bDU2LjA5NDkxLDIxOC4xNTgyNWExMC40MjA0NywxMC40MjA0NywwLDAsMCwyMC4zMDAxOC0uNTAxTDM0NC44MDc2Niw2My45Njk2NmE0MC4wNTIsNDAuMDUyLDAsMCwxLDUxLjMwMjQ1LTMwLjA4OTNjMTkuODYwNzMsNi4yOTk4LDMwLjg2MjYyLDI3LjY3Mzc4LDI2LjY3NTY0LDQ4LjA4NDg3bC0zMy44Mzg2OSwxNjQuOTY2YTcuNTUxNzIsNy41NTE3MiwwLDAsMCwxNC43NDQwNiwzLjI2NjZsMjkuMzk3My0xMjMuNDU4NzRhMzkuOTk0MTQsMzkuOTk0MTQsMCwxLDEsNzcuODEyMDgsMTguNTMxMjFaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNIZWxwaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4OCAxOTJIMzM2djU2YzAgMzkuNy0zMi4zIDcyLTcyIDcycy03Mi0zMi4zLTcyLTcyVjEyNi40bC02NC45IDM5QzEwNy44IDE3Ni45IDk2IDE5Ny44IDk2IDIyMC4ydjQ3LjNsLTgwIDQ2LjJDLjcgMzIyLjUtNC42IDM0Mi4xIDQuMyAzNTcuNGw4MCAxMzguNmM4LjggMTUuMyAyOC40IDIwLjUgNDMuNyAxMS43TDIzMS40IDQ0OEgzNjhjMzUuMyAwIDY0LTI4LjcgNjQtNjRoMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTY0aDhjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTQ4YzAtMTMuMy0xMC43LTI0LTI0LTI0em0xNDcuNy0zNy40TDU1NS43IDE2QzU0Ni45LjcgNTI3LjMtNC41IDUxMiA0LjNMNDA4LjYgNjRIMzA2LjRjLTEyIDAtMjMuNyAzLjQtMzMuOSA5LjdMMjM5IDk0LjZjLTkuNCA1LjgtMTUgMTYuMS0xNSAyNy4xVjI0OGMwIDIyLjEgMTcuOSA0MCA0MCA0MHM0MC0xNy45IDQwLTQwdi04OGgxODRjMzAuOSAwIDU2IDI1LjEgNTYgNTZ2MjguNWw4MC00Ni4yYzE1LjMtOC45IDIwLjUtMjguNCAxMS43LTQzLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHNXYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiwyMjRhNDgsNDgsMCwxLDAtNDgtNDhBNDgsNDgsMCwwLDAsNDk2LDIyNFpNMzExLjQ3LDE3OC40NUE1Ni43Nyw1Ni43NywwLDAsMSwzMjgsMTc2YTU2LDU2LDAsMCwxLDE5LDMuNDlsMTUuMzUtNDguNjFBMjQsMjQsMCwwLDAsMzQyLDk5Ljc0Yy0xMS41My0xLjM1LTIyLjIxLDYuNDQtMjUuNzEsMTcuNTFsLTIwLjksNjYuMTdaTTkzLjY1LDM4Ni4zM2MuOC0uMTksMS41NC0uNTQsMi4zNS0uNzFWMzU5LjkzYTE1NiwxNTYsMCwwLDEsMTA3LjA2LTE0OGw3My43LTIyLjc2TDMxMC45Miw4MS4wNWEyNCwyNCwwLDAsMC0yMC4zMy0zMS4xMWMtMTEuNTMtMS4zNC0yMi4yMiw2LjQ1LTI1LjcyLDE3LjUyTDIzMS40MiwxNzMuODhhOCw4LDAsMCwxLTE1LjI2LTQuODNMMjU5LjUzLDMxLjI2QTI0LDI0LDAsMCwwLDIzOS4yLjE1QzIyNy42Ny0xLjE5LDIxNyw2LjYsMjEzLjQ5LDE3LjY2TDE2NS41NiwxNjkuMzdhOCw4LDAsMSwxLTE1LjI2LTQuODJsMzguNTYtMTIyYTI0LDI0LDAsMCwwLTIwLjMzLTMxLjExQzE1NywxMCwxNDYuMzIsMTcuODMsMTQyLjgyLDI4LjlsLTYwLDE4OS44NUw4MC43NiwxNjguN0EyNCwyNCwwLDAsMCw1Ni45LDE0NC41NWMtMTMuMjMtLjA1LTI0LjcyLDEwLjU0LTI0LjksMjMuODZWMjgxLjE0QTEyMy42OSwxMjMuNjksMCwwLDAsOTMuNjUsMzg2LjMzWk01MTkuMSwzMzZIMzYwYTgsOCwwLDAsMSwwLTE2SDQ4OGEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM1MDkuMzUsMjc5Ljg0LDQ5OC43MSwyNzIsNDg3LjEsMjcySDI4OGw0Ny4wOS0xNy4wNmEyNCwyNCwwLDAsMC0xNC4xOC00NS44OEwyMTMuMTksMjQyLjMxQTEyMy44OCwxMjMuODgsMCwwLDAsMTI4LDM2MHYyNS42NWE3OS43OCw3OS43OCwwLDAsMSw1OCwxMDguNjNBMTE4LjksMTE4LjksMCwwLDAsMjQ4LDUxMkg0NTZhMjQsMjQsMCwwLDAsMjMuNTQtMjguNzZDNDc3LjM1LDQ3MS44NCw0NjYuNzEsNDY0LDQ1NS4xLDQ2NEgzNjBhOCw4LDAsMCwxLDAtMTZINDg4YTI0LDI0LDAsMCwwLDIzLjU0LTI4Ljc2QzUwOS4zNSw0MDcuODQsNDk4LjcxLDQwMCw0ODcuMSw0MDBIMzYwYTgsOCwwLDAsMSwwLTE2SDUyMGEyNCwyNCwwLDAsMCwyMy41NC0yOC43NkM1NDEuMzUsMzQzLjg0LDUzMC43MSwzMzYsNTE5LjEsMzM2Wk00MTYsNjRhMzIsMzIsMCwxLDAtMzItMzJBMzIsMzIsMCwwLDAsNDE2LDY0Wk0xMTIsNDE2YTQ4LDQ4LDAsMSwwLDQ4LDQ4QTQ4LDQ4LDAsMCwwLDExMiw0MTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFuZHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0LjggMjMwLjRjLTEwLjYtMTQuMS0zMC43LTE3LTQ0LjgtNi40LTE0LjEgMTAuNi0xNyAzMC43LTYuNCA0NC44bDM4LjEgNTAuOGM0LjggNi40IDQuMSAxNS4zLTEuNSAyMC45bC0xMi44IDEyLjhjLTYuNyA2LjctMTcuNiA2LjItMjMuNi0xLjFMNjQgMjQ0LjRWOTZjMC0xNy43LTE0LjMtMzItMzItMzJTMCA3OC4zIDAgOTZ2MjE4LjRjMCAxMC45IDMuNyAyMS41IDEwLjUgMzBsMTA0LjEgMTM0LjNjNSA2LjUgOC40IDEzLjkgMTAuNCAyMS43IDEuOCA2LjkgOC4xIDExLjYgMTUuMyAxMS42SDI3MmM4LjggMCAxNi03LjIgMTYtMTZWMzg0YzAtMjcuNy05LTU0LjYtMjUuNi03Ni44bC01Ny42LTc2Ljh6TTYwOCA2NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTQ4LjRsLTg5LjggMTA3LjhjLTYgNy4yLTE3IDcuNy0yMy42IDEuMWwtMTIuOC0xMi44Yy01LjYtNS42LTYuMy0xNC41LTEuNS0yMC45bDM4LjEtNTAuOGMxMC42LTE0LjEgNy43LTM0LjItNi40LTQ0LjgtMTQuMS0xMC42LTM0LjItNy43LTQ0LjggNi40bC01Ny42IDc2LjhDMzYxIDMyOS40IDM1MiAzNTYuMyAzNTIgMzg0djExMmMwIDguOCA3LjIgMTYgMTYgMTZoMTMxLjdjNy4xIDAgMTMuNS00LjcgMTUuMy0xMS42IDItNy44IDUuNC0xNS4yIDEwLjQtMjEuN2wxMDQuMS0xMzQuM2M2LjgtOC41IDEwLjUtMTkuMSAxMC41LTMwVjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhhbmRzaGFrZUFsdFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1OC41OSwxOTUuNiw1MDQuMiwzMTMuOGE2My40LDYzLjQsMCwwLDEsMjIuMjEsMzcuOTFINjI0YTE2LjA1LDE2LjA1LDAsMCwwLDE2LTE2VjE0My45MUExNiwxNiwwLDAsMCw2MjQsMTI4SDUxMkw0NTcuNDEsNzMuNDFBMzIsMzIsMCwwLDAsNDM0LjgsNjRIMzQ4LjkxYTMyLDMyLDAsMCwwLTIxLjYxLDguNDFsLTg4LjEyLDgwLjY4LTI1LjY5LTE5Ljg1TDI4OS4wOSw2NEgyMDUuM2EzMiwzMiwwLDAsMC0yMi42LDkuNDFsLTIwLjM0LDIwLjNMNDUuNDcsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzgsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOSw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjQtMjUuMjdhMTYsMTYsMCwwLDAtMi44MS0yMi40NUwzMDMuNCwyMDIuNzJsMzIuNjktMjkuOTIsMjctMjQuN2ExNiwxNiwwLDAsMSwyMS42MSwyMy42MVpNMTYsMTI4QTE2LjA1LDE2LjA1LDAsMCwwLDAsMTQ0VjMzNS45MWExNiwxNiwwLDAsMCwxNiwxNkgxNDYuM2w5MC41LDgxLjg5YTY0LDY0LDAsMCwwLDkwLTkuM2wuMi0uMiwxNy45MSwxNS41YTM3LjE2LDM3LjE2LDAsMCwwLDUyLjI5LTUuMzlsOC44LTEwLjgyTDIzLjU2LDEyOFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2VTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wLDEyOC4yMVYzODRINjRhMzIsMzIsMCwwLDAsMzItMzJWMTg0TDIzLjgzLDEyOC4yMVpNNDgsMzIwLjFhMTYsMTYsMCwxLDEtMTYsMTZBMTYsMTYsMCwwLDEsNDgsMzIwLjFabTgwLDMxLjgxaDE4LjNsOTAuNSw4MS44OWE2NCw2NCwwLDAsMCw5MC05LjNsLjItLjIsMTcuOTEsMTUuNWEzNy4xNiwzNy4xNiwwLDAsMCw1Mi4yOS01LjM5bDguOC0xMC44MkwxMjgsMjA4LjcyWm00MTYtMjIzLjdWMzUyLjFhMzIsMzIsMCwwLDAsMzIsMzJoNjRWMTI4LjIxWk01OTIsMzUyLjFhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsNTkyLDM1Mi4xWk0zMDMuMzMsMjAyLjY3bDU5LjU4LTU0LjU3YTE2LDE2LDAsMCwxLDIxLjU5LDIzLjYxTDM1OC40MSwxOTUuNiw1MDQsMzEzLjhhNzMuMDgsNzMuMDgsMCwwLDEsNy45MSw3LjdWMTI4TDQ1Ny4zLDczLjQxQTMxLjc2LDMxLjc2LDAsMCwwLDQzNC43LDY0SDM0OC44YTMxLjkzLDMxLjkzLDAsMCwwLTIxLjYsOC40MWwtODguMDcsODAuNjQtMjUuNjQtMTkuODFMMjg5LjA5LDY0SDIwNS4zYTMyLDMyLDAsMCwwLTIyLjYsOS40MUwxNjIuMzYsOTMuNzIsNDUuNDcsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzgsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOSw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODJsMTkuNjUtMjUuMjdhMTYsMTYsMCwwLDAtMi44Mi0yMi40NVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjcgNjRoLTg1LjljLTggMC0xNS43IDMtMjEuNiA4LjRsLTk4LjMgOTBjLS4xLjEtLjIuMy0uMy40LTE2LjYgMTUuNi0xNi4zIDQwLjUtMi4xIDU2IDEyLjcgMTMuOSAzOS40IDE3LjYgNTYuMSAyLjcuMS0uMS4zLS4xLjQtLjJsNzkuOS03My4yYzYuNS01LjkgMTYuNy01LjUgMjIuNiAxIDYgNi41IDUuNSAxNi42LTEgMjIuNmwtMjYuMSAyMy45TDUwNCAzMTMuOGMyLjkgMi40IDUuNSA1IDcuOSA3LjdWMTI4bC01NC42LTU0LjZjLTUuOS02LTE0LjEtOS40LTIyLjYtOS40ek01NDQgMTI4LjJ2MjIzLjljMCAxNy43IDE0LjMgMzIgMzIgMzJoNjRWMTI4LjJoLTk2em00OCAyMjMuOWMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0wIDM4NGg2NGMxNy43IDAgMzItMTQuMyAzMi0zMlYxMjguMkgwVjM4NHptNDgtNjMuOWM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNi0xNi03LjItMTYtMTZjMC04LjkgNy4yLTE2IDE2LTE2em00MzUuOSAxOC42TDMzNC42IDIxNy41bC0zMCAyNy41Yy0yOS43IDI3LjEtNzUuMiAyNC41LTEwMS43LTQuNC0yNi45LTI5LjQtMjQuOC03NC45IDQuNC0xMDEuN0wyODkuMSA2NGgtODMuOGMtOC41IDAtMTYuNiAzLjQtMjIuNiA5LjRMMTI4IDEyOHYyMjMuOWgxOC4zbDkwLjUgODEuOWMyNy40IDIyLjMgNjcuNyAxOC4xIDkwLTkuM2wuMi0uMiAxNy45IDE1LjVjMTUuOSAxMyAzOS40IDEwLjUgNTIuMy01LjRsMzEuNC0zOC42IDUuNCA0LjRjMTMuNyAxMS4xIDMzLjkgOS4xIDQ1LTQuN2w5LjUtMTEuN2MxMS4yLTEzLjggOS4xLTMzLjktNC42LTQ1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGFudWtpYWggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjMyIDE2MGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bS02NCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptMjI0IDBjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjhjMC00LjQyLTMuNTgtOC04LThoLTE2em02NCAwYy00LjQyIDAtOCAzLjU4LTggOHYxMjBoMzJWMTY4YzAtNC40Mi0zLjU4LTgtOC04aC0xNnptODggOGMwLTQuNDItMy41OC04LTgtOGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djEyMGgzMlYxNjh6bS00NDAtOGMtNC40MiAwLTggMy41OC04IDh2MTIwaDMyVjE2OGMwLTQuNDItMy41OC04LTgtOGgtMTZ6bTUyMCAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTEyYzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMzUyVjEyOGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE5Mkg5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxNzZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djExMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDE5MnY2NEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzUydi02NGgxOTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlYxNzZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS0xNi0zMmMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzYwOCA0OCA2MDggNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzU5NC43NSAxMjggNjA4IDEyOHptLTU3NiAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMzIgNDggMzIgNDggOCA4Ni42MSA4IDEwMS4zMyAxOC43NSAxMjggMzIgMTI4em0yODgtNDhjMTMuMjUgMCAyNC0xMS45NCAyNC0yNi42N1MzMjAgMCAzMjAgMHMtMjQgMzguNjEtMjQgNTMuMzNTMzA2Ljc1IDgwIDMyMCA4MHptLTIwOCA0OGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzExMiA0OCAxMTIgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzk4Ljc1IDEyOCAxMTIgMTI4em02NCAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMTc2IDQ4IDE3NiA0OHMtMjQgMzguNjEtMjQgNTMuMzNTMTYyLjc1IDEyOCAxNzYgMTI4em02NCAwYzEzLjI1IDAgMjQtMTEuOTQgMjQtMjYuNjdTMjQwIDQ4IDI0MCA0OHMtMjQgMzguNjEtMjQgNTMuMzNTMjI2Ljc1IDEyOCAyNDAgMTI4em0xNjAgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzQwMCA0OCA0MDAgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzM4Ni43NSAxMjggNDAwIDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzQ2NCA0OCA0NjQgNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzQ1MC43NSAxMjggNDY0IDEyOHptNjQgMGMxMy4yNSAwIDI0LTExLjk0IDI0LTI2LjY3UzUyOCA0OCA1MjggNDhzLTI0IDM4LjYxLTI0IDUzLjMzUzUxNC43NSAxMjggNTI4IDEyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXJkSGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAyODhjMC04MC4yNS00OS4yOC0xNDguOTItMTE5LjE5LTE3Ny42MkwzMjAgMTkyVjgwYTE2IDE2IDAgMCAwLTE2LTE2aC05NmExNiAxNiAwIDAgMC0xNiAxNnYxMTJsLTQwLjgxLTgxLjYyQzgxLjI4IDEzOS4wOCAzMiAyMDcuNzUgMzIgMjg4djY0aDQ0OHptMTYgOTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDgwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXNodGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC42NjcgMTgyLjEwOWw3LjE0My00MGMxLjMxMy03LjM1NS00LjM0Mi0xNC4xMDktMTEuODEzLTE0LjEwOWgtNzQuODFsMTQuNjIzLTgxLjg5MUMzNzcuMTIzIDM4Ljc1NCAzNzEuNDY4IDMyIDM2My45OTcgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMjk2LjE3NSAxMjhIMTk3LjU0bDE0LjYyMy04MS44OTFDMjEzLjQ3NyAzOC43NTQgMjA3LjgyMiAzMiAyMDAuMzUgMzJoLTQwLjYzMmExMiAxMiAwIDAgMC0xMS44MTMgOS44OTFMMTMyLjUyOCAxMjhINTMuNDMyYTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDMzMuMTYzIDE4NS4yNDYgMzguODE4IDE5MiA0Ni4yODkgMTkyaDc0LjgxTDk4LjI0MiAzMjBIMTkuMTQ2YTEyIDEyIDAgMCAwLTExLjgxMyA5Ljg5MWwtNy4xNDMgNDBDLTEuMTIzIDM3Ny4yNDYgNC41MzIgMzg0IDEyLjAwMyAzODRoNzQuODFMNzIuMTkgNDY1Ljg5MUM3MC44NzcgNDczLjI0NiA3Ni41MzIgNDgwIDg0LjAwMyA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwxNTEuODI2IDM4NGg5OC42MzRsLTE0LjYyMyA4MS44OTFDMjM0LjUyMyA0NzMuMjQ2IDI0MC4xNzggNDgwIDI0Ny42NSA0ODBoNDAuNjMyYTEyIDEyIDAgMCAwIDExLjgxMy05Ljg5MUwzMTUuNDcyIDM4NGg3OS4wOTZhMTIgMTIgMCAwIDAgMTEuODEzLTkuODkxbDcuMTQzLTQwYzEuMzEzLTcuMzU1LTQuMzQyLTE0LjEwOS0xMS44MTMtMTQuMTA5aC03NC44MWwyMi44NTctMTI4aDc5LjA5NmExMiAxMiAwIDAgMCAxMS44MTMtOS44OTF6TTI2MS44ODkgMzIwaC05OC42MzRsMjIuODU3LTEyOGg5OC42MzRsLTIyLjg1NyAxMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGF0Q293Ym95U2lkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNjAuOCAyOTEuMDZjLTI4LjYzLTIyLjk0LTYyLTM1LjA2LTk2LjQtMzUuMDZDODcgMjU2IDIxLjQ3IDMxOC43MiAxLjQzIDQxMi4wNmMtMy41NSAxNi42LS40MyAzMy44MyA4LjU3IDQ3LjNDMTguNzUgNDcyLjQ3IDMxLjgzIDQ4MCA0NS44OCA0ODBINTkyYy0xMDMuMjEgMC0xNTUtMzcuMDctMjMzLjE5LTEwNC40NnptMjM0LjY1LTE4LjI5TDQ2OC40IDExNi4yQTY0IDY0IDAgMCAwIDM5MiA2NC40MUwyMDAuODUgMTA1YTY0IDY0IDAgMCAwLTUwLjM1IDU1Ljc5TDE0My42MSAyMjZjNi45LS44MyAxMy43LTIgMjAuNzktMiA0MS43OSAwIDgyIDE0LjU1IDExNy4yOSA0Mi44Mmw5OCA4NC40OEM0NTAuNzYgNDEyLjU0IDQ5NC45IDQ0OCA1OTIgNDQ4YTQ4IDQ4IDAgMCAwIDQ4LTQ4YzAtMjUuMzktMjkuNi0xMTkuMzMtMTQ0LjU1LTEyNy4yM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRDb3dib3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkwIDI5Ni45QzQ4MC41MSAyMzkuNTEgNDUwLjUxIDY0IDM5Mi4zIDY0Yy0xNCAwLTI2LjQ5IDUuOTMtMzcgMTRhNTguMjEgNTguMjEgMCAwIDEtNzAuNTggMGMtMTAuNTEtOC0yMy0xNC0zNy0xNC01OC4yIDAtODguMiAxNzUuNDctOTcuNzEgMjMyLjg4QzE4OC44MSAzMDkuNDcgMjQzLjczIDMyMCAzMjAgMzIwczEzMS4yMy0xMC41MSAxNzAtMjMuMXptMTQyLjktMzcuMThhMTYgMTYgMCAwIDAtMTkuNzUgMS41Yy0xIC45LTEwMS4yNyA5MC43OC0yOTMuMTYgOTAuNzgtMTkwLjgyIDAtMjkyLjIyLTg5Ljk0LTI5My4yNC05MC44NEExNiAxNiAwIDAgMCAxIDI3OC41M0MxLjczIDI4MC41NSA3OC4zMiA0ODAgMzIwIDQ4MHMzMTguMjctMTk5LjQ1IDMxOS0yMDEuNDdhMTYgMTYgMCAwIDAtNi4wOS0xOC44MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIYXRXaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTMwNC02NGwtNjQtMzIgNjQtMzIgMzItNjQgMzIgNjQgNjQgMzItNjQgMzItMTYgMzJoMjA4bC04Ni40MS0yMDEuNjNhNjMuOTU1IDYzLjk1NSAwIDAgMS0xLjg5LTQ1LjQ1TDQxNiAwIDIyOC40MiAxMDcuMTlhMTI3Ljk4OSAxMjcuOTg5IDAgMCAwLTUzLjQ2IDU5LjE1TDY0IDQxNmgxNDRsLTE2LTMyem02NC0yMjRsMTYtMzIgMTYgMzIgMzIgMTYtMzIgMTYtMTYgMzItMTYtMzItMzItMTYgMzItMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAzMDR2OTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OHYtOTZjMC0yNi41MSAyMS40OS00OCA0OC00OGg0ODBjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHptLTQ4LTgwYTc5LjU1NyA3OS41NTcgMCAwIDEgMzAuNzc3IDYuMTY1TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEwxNy4yMjMgMjMwLjE2NUE3OS41NTcgNzkuNTU3IDAgMCAxIDQ4IDIyNGg0ODB6bS00OCA5NmMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyem0tOTYgMGMtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMyczE0LjMyNyAzMiAzMiAzMiAzMi0xNC4zMjcgMzItMzItMTQuMzI3LTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRTaWRlQ291Z2hTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTQuMTEsMzE5LjIxYzE5LjU2LTMuODEsMzEuNjItMjUsMjMuMTEtNDQuMjEtMjEtNDcuMTItNDguNS0xNTEuNzUtNzMuMTItMTg2Ljc1QTIwOC4xMywyMDguMTMsMCwwLDAsMjM0LjEsMEgxOTJBMTkwLjY0LDE5MC42NCwwLDAsMCw4NC4xOCwzMy4zTDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTMxMy4zOSwyMTAuNDUsMjYzLjYxLDE3MmM1Ljg4LTcuMTQsMTQuNDMtMTIsMjQuMzYtMTJhMzIuMDYsMzIuMDYsMCwwLDEsMzIsMzJDMzIwLDE5OSwzMTcuMjQsMjA1LjE3LDMxMy4zOSwyMTAuNDVaTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFptLTY0LDY0YTI0LDI0LDAsMSwwLTI0LTI0QTI0LDI0LDAsMCwwLDU1MiwzNjhaTTI4OCwzODRhMzIsMzIsMCwwLDEsMzItMzJoMTkuNTRMMjAuNzMsMTA1LjU5QTE5MC44NiwxOTAuODYsMCwwLDAsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMEEzMiwzMiwwLDAsMSwyODgsMzg0Wm0zMjgtMjRhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNjE2LDM2MFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZUNvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxNiwzMDRhMjQsMjQsMCwxLDAtMjQtMjRBMjQsMjQsMCwwLDAsNjE2LDMwNFpNNTUyLDQxNmEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw1NTIsNDE2Wm0tNjQtNTZhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNDg4LDM2MFpNNjE2LDQ2NGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsNDY0Wm0wLTEwNGEyNCwyNCwwLDEsMCwyNCwyNEEyNCwyNCwwLDAsMCw2MTYsMzYwWm0tNjQtNDBhMjQsMjQsMCwxLDAsMjQsMjRBMjQsMjQsMCwwLDAsNTUyLDMyMFptLTc0Ljc4LTQ1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjEzLDIwOC4xMywwLDAsMCwyMzQuMSwwSDE5MkM4NiwwLDAsODYsMCwxOTJjMCw1Ni43NSwyNC43NSwxMDcuNjIsNjQsMTQyLjg4VjUxMkgyODhWNDgwaDY0YTY0LDY0LDAsMCwwLDY0LTY0SDMyMGEzMiwzMiwwLDAsMSwwLTY0aDk2VjMyMGgzMkEzMiwzMiwwLDAsMCw0NzcuMjIsMjc1Wk0yODgsMjI0YTMyLDMyLDAsMSwxLDMyLTMyQTMyLjA3LDMyLjA3LDAsMCwxLDI4OCwyMjRaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZFNpZGVNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4xNSwxODQuNDJDLTIuMTcsMjQ0LjIxLDIzLDI5OC4wNiw2NCwzMzQuODhWNTEySDIyNFYzMTYuNTFMMy42NywxNTYuMjVBMTgyLjI4LDE4Mi4yOCwwLDAsMCwuMTUsMTg0LjQyWk01MDkuMjIsMjc1Yy0yMS00Ny4xMi00OC41LTE1MS43NS03My4xMi0xODYuNzVBMjA4LjExLDIwOC4xMSwwLDAsMCwyNjYuMTEsMEgyMDBDMTE3LDAsNDIuNDgsNTAuNTcsMTMuMjUsMTIzLjY1TDIzOS4yMSwyODhINTExLjc2QTMxLjM1LDMxLjM1LDAsMCwwLDUwOS4yMiwyNzVaTTMyMCwyMjRhMzIsMzIsMCwxLDEsMzItMzJBMzIuMDcsMzIuMDcsMCwwLDEsMzIwLDIyNFptMTYsMTQ0SDQ5NmwxNi00OEgyNTZWNTEySDQwMS44OGE2NCw2NCwwLDAsMCw2MC43MS00My43Nkw0NjQsNDY0SDMzNmExNiwxNiwwLDAsMSwwLTMySDQ3NC42N2wxMC42Ny0zMkgzMzZhMTYsMTYsMCwwLDEsMC0zMlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkU2lkZVZpcnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiwyNDBhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsMjcyLDI0MFptLTY0LTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDIwOCwxNzZabTMwMS4yLDk5Yy0yMC45My00Ny4xMi00OC40My0xNTEuNzMtNzMuMDctMTg2Ljc1QTIwNy45LDIwNy45LDAsMCwwLDI2Ni4wOSwwSDE5MkM4NiwwLDAsODYsMCwxOTJBMTkxLjIzLDE5MS4yMywwLDAsMCw2NCwzMzQuODFWNTEySDMyMFY0NDhoNjRhNjQsNjQsMCwwLDAsNjQtNjRWMzIwSDQ4MEEzMiwzMiwwLDAsMCw1MDkuMiwyNzVaTTM2OCwyNDBIMzU1Ljg4Yy0yOC41MSwwLTQyLjc5LDM0LjQ3LTIyLjYzLDU0LjYzbDguNTgsOC41N2ExNiwxNiwwLDEsMS0yMi42MywyMi42M2wtOC41Ny04LjU4QzI5MC40NywyOTcuMDksMjU2LDMxMS4zNywyNTYsMzM5Ljg4VjM1MmExNiwxNiwwLDAsMS0zMiwwVjMzOS44OGMwLTI4LjUxLTM0LjQ3LTQyLjc5LTU0LjYzLTIyLjYzbC04LjU3LDguNThhMTYsMTYsMCwwLDEtMjIuNjMtMjIuNjNsOC41OC04LjU3YzIwLjE2LTIwLjE2LDUuODgtNTQuNjMtMjIuNjMtNTQuNjNIMTEyYTE2LDE2LDAsMCwxLDAtMzJoMTIuMTJjMjguNTEsMCw0Mi43OS0zNC40NywyMi42My01NC42M2wtOC41OC04LjU3YTE2LDE2LDAsMCwxLDIyLjYzLTIyLjYzbDguNTcsOC41OGMyMC4xNiwyMC4xNiw1NC42Myw1Ljg4LDU0LjYzLTIyLjYzVjk2YTE2LDE2LDAsMCwxLDMyLDB2MTIuMTJjMCwyOC41MSwzNC40Nyw0Mi43OSw1NC42MywyMi42M2w4LjU3LTguNThhMTYsMTYsMCwwLDEsMjIuNjMsMjIuNjNsLTguNTgsOC41N0MzMTMuMDksMTczLjUzLDMyNy4zNywyMDgsMzU1Ljg4LDIwOEgzNjhhMTYsMTYsMCwwLDEsMCwzMlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYzMjBoMzJhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZIMzIwYTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgzMlYyODhIMTYwdjEyOGgzMmExNiAxNiAwIDAgMSAxNiAxNnYzMmExNiAxNiAwIDAgMS0xNiAxNkgzMmExNiAxNiAwIDAgMS0xNi0xNnYtMzJhMTYgMTYgMCAwIDEgMTYtMTZoMzJWOTZIMzJhMTYgMTYgMCAwIDEtMTYtMTZWNDhhMTYgMTYgMCAwIDEgMTYtMTZoMTYwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2aC0zMnYxMjhoMTkyVjk2aC0zMmExNiAxNiAwIDAgMS0xNi0xNlY0OGExNiAxNiAwIDAgMSAxNi0xNmgxNjBhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhZHBob25lc0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC0xNmMtMzUuMzUgMC02NCAyOC43LTY0IDY0LjEydjYzLjc2YzAgMzUuNDEgMjguNjUgNjQuMTIgNjQgNjQuMTJoMTZjMTcuNjcgMCAzMi0xNC4zNiAzMi0zMi4wNlYzMjAuMDZjMC0xNy43MS0xNC4zMy0zMi4wNi0zMi0zMi4wNnptMjA4IDBoLTE2Yy0xNy42NyAwLTMyIDE0LjM1LTMyIDMyLjA2djEyNy44OGMwIDE3LjcgMTQuMzMgMzIuMDYgMzIgMzIuMDZoMTZjMzUuMzUgMCA2NC0yOC43MSA2NC02NC4xMnYtNjMuNzZjMC0zNS40MS0yOC42NS02NC4xMi02NC02NC4xMnpNMjU2IDMyQzExMi45MSAzMiA0LjU3IDE1MS4xMyAwIDI4OHYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjg4YzAtMTE0LjY3IDkzLjMzLTIwNy44IDIwOC0yMDcuODIgMTE0LjY3LjAyIDIwOCA5My4xNSAyMDggMjA3LjgydjExMmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhDNTA3LjQzIDE1MS4xMyAzOTkuMDkgMzIgMjU2IDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYWRwaG9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDMyQzExNC41MiAzMiAwIDE0Ni40OTYgMCAyODh2NDhhMzIgMzIgMCAwIDAgMTcuNjg5IDI4LjYyMmwxNC4zODMgNy4xOTFDMzQuMDgzIDQzMS45MDMgODMuNDIxIDQ4MCAxNDQgNDgwaDI0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC0yNGMtMzEuMzQyIDAtNTkuNjcxIDEyLjg3OS04MCAzMy42MjdWMjg4YzAtMTA1Ljg2OSA4Ni4xMzEtMTkyIDE5Mi0xOTJzMTkyIDg2LjEzMSAxOTIgMTkydjEuNjI3QzQyNy42NzEgMjY4Ljg3OSAzOTkuMzQyIDI1NiAzNjggMjU2aC0yNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE3NmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjRjNjAuNTc5IDAgMTA5LjkxNy00OC4wOTggMTExLjkyOC0xMDguMTg3bDE0LjM4Mi03LjE5MUEzMiAzMiAwIDAgMCA1MTIgMzM2di00OGMwLTE0MS40NzktMTE0LjQ5Ni0yNTYtMjU2LTI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE5MiAyMDhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMTZjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjR2NDhjMCAzNS4zNSAyOC42NSA2NCA2NCA2NGgxNmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjIwOHptMTc2IDE0NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0di00OGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0aC0xNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNnpNMjU2IDBDMTEzLjE4IDAgNC41OCAxMTguODMgMCAyNTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtMTE0LjY5IDkzLjMxLTIwOCAyMDgtMjA4czIwOCA5My4zMSAyMDggMjA4aC0uMTJjLjA4IDIuNDMuMTIgMTY1LjcyLjEyIDE2NS43MiAwIDIzLjM1LTE4LjkzIDQyLjI4LTQyLjI4IDQyLjI4SDMyMGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0zMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OGgxODEuNzJjNDkuODYgMCA5MC4yOC00MC40MiA5MC4yOC05MC4yOFYyNTZDNTA3LjQyIDExOC44MyAzOTguODIgMCAyNTYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIZWFydEJyb2tlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzMuNyA3My44bC0yLjQtMi41Yy00Ni00Ny0xMTgtNTEuNy0xNjkuNi0xNC44TDMzNiAxNTkuOWwtOTYgNjQgNDggMTI4LTE0NC0xNDQgOTYtNjQtMjguNi04Ni41QzE1OS43IDE5LjYgODcgMjQgNDAuNyA3MS40bC0yLjQgMi40Qy0xMC40IDEyMy42LTEyLjUgMjAyLjkgMzEgMjU2bDIxMi4xIDIxOC42YzcuMSA3LjMgMTguNiA3LjMgMjUuNyAwTDQ4MSAyNTUuOWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Mi4zIDYyLjZDNDA3LjUgMTUuOSAzMjYgMjQuMyAyNzUuNyA3Ni4yTDI1NiA5Ni41bC0xOS43LTIwLjNDMTg2LjEgMjQuMyAxMDQuNSAxNS45IDQ5LjcgNjIuNmMtNjIuOCA1My42LTY2LjEgMTQ5LjgtOS45IDIwNy45bDE5My41IDE5OS44YzEyLjUgMTIuOSAzMi44IDEyLjkgNDUuMyAwbDE5My41LTE5OS44YzU2LjMtNTguMSA1My0xNTQuMy05LjgtMjA3Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSGVhcnRiZWF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4yIDI0My44bC00OS43IDk5LjRjLTYgMTIuMS0yMy40IDExLjctMjguOS0uNmwtNTYuOS0xMjYuMy0zMCA3MS43SDYwLjZsMTgyLjUgMTg2LjVjNy4xIDcuMyAxOC42IDcuMyAyNS43IDBMNDUxLjQgMjg4SDM0Mi4zbC0yMi4xLTQ0LjJ6TTQ3My43IDczLjlsLTIuNC0yLjVjLTUxLjUtNTIuNi0xMzUuOC01Mi42LTE4Ny40IDBMMjU2IDEwMGwtMjcuOS0yOC41Yy01MS41LTUyLjctMTM1LjktNTIuNy0xODcuNCAwbC0yLjQgMi40Qy0xMC40IDEyMy43LTEyLjUgMjAzIDMxIDI1NmgxMDIuNGwzNS45LTg2LjJjNS40LTEyLjkgMjMuNi0xMy4yIDI5LjQtLjRsNTguMiAxMjkuMyA0OS05Ny45YzUuOS0xMS44IDIyLjctMTEuOCAyOC42IDBsMjcuNiA1NS4ySDQ4MWM0My41LTUzIDQxLjQtMTMyLjMtNy4zLTE4Mi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhlbGljb3B0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDM4NGgyNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMiAwLTEyMy43MS0xMDAuMjktMjI0LTIyNC0yMjRWNjRoMTc2YzguODQgMCAxNi03LjE2IDE2LTE2VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDE0NGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTc2djY0SDExMkw2OC44IDcwLjRDNjUuNzggNjYuMzcgNjEuMDMgNjQgNTYgNjRIMTYuMDFDNS42IDY0LTIuMDQgNzMuNzguNDkgODMuODhMMzIgMTkybDE2MCA2NCA4Ni40IDExNS4yQTMxLjk5MiAzMS45OTIgMCAwIDAgMzA0IDM4NHptMTEyLTE4OC40OUM0NzguNTUgMjA4LjMgNTI4LjAzIDI1Ny40NCA1NDAuNzkgMzIwSDQxNlYxOTUuNTF6bTIxOS4zNyAyNjMuM2wtMjIuMTUtMjIuMmMtNi4yNS02LjI2LTE2LjI0LTYuMS0yMi42NC4wMS03LjA5IDYuNzctMTMuODQgMTEuMjUtMjQuNjQgMTEuMjVIMjQwYy04Ljg0IDAtMTYgNy4xOC0xNiAxNi4wM3YzMi4wNmMwIDguODUgNy4xNiAxNi4wMyAxNiAxNi4wM2gzMjUuOTRjMTQuODggMCAzNS4zLS40NyA2OC40NS0yOS41MiA3LjAyLTYuMTQgNy41Ny0xNy4wNS45OC0yMy42NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaWdobGlnaHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTQ0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ3OS45OEw5OS45MiA1MTJsMzUuNDUtMzUuNDUtNjcuMDQtNjcuMDRMMCA0NzkuOTh6bTEyNC42MS0yNDAuMDFhMzYuNTkyIDM2LjU5MiAwIDAgMC0xMC43OSAzOC4xbDEzLjA1IDQyLjgzLTUwLjkzIDUwLjk0IDk2LjIzIDk2LjIzIDUwLjg2LTUwLjg2IDQyLjc0IDEzLjA4YzEzLjczIDQuMiAyOC42NS0uMDEgMzguMTUtMTAuNzhsMzUuNTUtNDEuNjQtMTczLjM0LTE3My4zNC00MS41MiAzNS40NHptNDAzLjMxLTE2MC43bC02My4yLTYzLjJjLTIwLjQ5LTIwLjQ5LTUzLjM4LTIxLjUyLTc1LjEyLTIuMzVMMTkwLjU1IDE4My42OGwxNjkuNzcgMTY5Ljc4TDUzMC4yNyAxNTQuNGMxOS4xOC0yMS43NCAxOC4xNS01NC42My0yLjM1LTc1LjEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhpa2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MC45NSA0NzIuMjNjLTQuMjggMTcuMTYgNi4xNCAzNC41MyAyMy4yOCAzOC44MSAyLjYxLjY2IDUuMjIuOTUgNy44Ljk1IDE0LjMzIDAgMjcuMzctOS43IDMxLjAyLTI0LjIzbDI1LjI0LTEwMC45Ny01Mi43OC01Mi43OC0zNC41NiAxMzguMjJ6bTE0Ljg5LTE5Ni4xMkwxMzcgMTE3YzIuMTktOC40Mi0zLjE0LTE2Ljk1LTExLjkyLTE5LjA2LTQzLjg4LTEwLjUyLTg4LjM1IDE1LjA3LTk5LjMyIDU3LjE3TC40OSAyNTMuMjRjLTIuMTkgOC40MiAzLjE0IDE2Ljk1IDExLjkyIDE5LjA2bDYzLjU2IDE1LjI1YzguNzkgMi4xIDE3LjY4LTMuMDIgMTkuODctMTEuNDR6TTM2OCAxNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmgtMzQuNzVsLTQ2Ljc4LTQ2Ljc4QzI0My4zOCAxMzQuMTEgMjI4LjYxIDEyOCAyMTIuOTEgMTI4Yy0yNy4wMiAwLTUwLjQ3IDE4LjMtNTcuMDMgNDQuNTJsLTI2LjkyIDEwNy43MmEzMi4wMTIgMzIuMDEyIDAgMCAwIDguNDIgMzAuMzlMMjI0IDM5Ny4yNVY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnMzMi0xNC4zMyAzMi0zMnYtODIuNzVjMC0xNy4wOS02LjY2LTMzLjE2LTE4Ljc1LTQ1LjI1bC00Ni44Mi00Ni44MmMuMTUtLjUuNDktLjg5LjYyLTEuNDFsMTkuODktNzkuNTcgMjIuNDMgMjIuNDNjNiA2IDE0LjE0IDkuMzggMjIuNjIgOS4zOGg0OHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTc2Yy4wMS04Ljg0LTcuMTUtMTYtMTUuOTktMTZ6TTI0MCA5NmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4UzI2Ni41MSAwIDI0MCAwcy00OCAyMS40OS00OCA0OCAyMS40OSA0OCA0OCA0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXBwbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01ODEuMTIgOTYuMmMtMjcuNjctLjE1LTUyLjUgMTcuNTgtNzYuNiAyNi42MkM0ODkuOTggODguMjcgNDU1LjgzIDY0IDQxNiA2NGMtMTEuMjggMC0yMS45NSAyLjMtMzIgNS44OFY1NmMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0aC0xNmMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OC45OEMyODYuMDEgNzkuNTggMjQxLjI0IDY0IDE5MiA2NCA4NS45NiA2NCAwIDEzNS42NCAwIDIyNHYyNDBjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTcwLjc5QzEyOC4zNSA0MDcuNTcgMTY2LjcyIDQxNiAyMDggNDE2czc5LjY1LTguNDMgMTEyLTIyLjc5VjQ2NGMwIDguODQgNy4xNiAxNiAxNiAxNmg2NGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyODhoMTI4djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05Mi4wMmMwLTM0LjA5LTI0Ljc5LTY3LjU5LTU4Ljg4LTY3Ljc4ek00NDggMTc2Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIaXN0b3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAyNTUuNTMxYy4yNTMgMTM2LjY0LTExMS4xOCAyNDguMzcyLTI0Ny44MiAyNDguNDY4LTU5LjAxNS4wNDItMTEzLjIyMy0yMC41My0xNTUuODIyLTU0LjkxMS0xMS4wNzctOC45NC0xMS45MDUtMjUuNTQxLTEuODM5LTM1LjYwN2wxMS4yNjctMTEuMjY3YzguNjA5LTguNjA5IDIyLjM1My05LjU1MSAzMS44OTEtMS45ODRDMTczLjA2MiA0MjUuMTM1IDIxMi43ODEgNDQwIDI1NiA0NDBjMTAxLjcwNSAwIDE4NC04Mi4zMTEgMTg0LTE4NCAwLTEwMS43MDUtODIuMzExLTE4NC0xODQtMTg0LTQ4LjgxNCAwLTkzLjE0OSAxOC45NjktMTI2LjA2OCA0OS45MzJsNTAuNzU0IDUwLjc1NGMxMC4wOCAxMC4wOCAyLjk0MSAyNy4zMTQtMTEuMzEzIDI3LjMxNEgyNGMtOC44MzcgMC0xNi03LjE2My0xNi0xNlYzOC42MjdjMC0xNC4yNTQgMTcuMjM0LTIxLjM5MyAyNy4zMTQtMTEuMzE0bDQ5LjM3MiA0OS4zNzJDMTI5LjIwOSAzNC4xMzYgMTg5LjU1MiA4IDI1NiA4YzEzNi44MSAwIDI0Ny43NDcgMTEwLjc4IDI0OCAyNDcuNTMxem0tMTgwLjkxMiA3OC43ODRsOS44MjMtMTIuNjNjOC4xMzgtMTAuNDYzIDYuMjUzLTI1LjU0Mi00LjIxLTMzLjY3OUwyODggMjU2LjM0OVYxNTJjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0aC0xNmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djEzNS42NTFsNjUuNDA5IDUwLjg3NGMxMC40NjMgOC4xMzcgMjUuNTQxIDYuMjUzIDMzLjY3OS00LjIxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvY2tleVB1Y2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNjBjMC01MyAxMTQuNi05NiAyNTYtOTZzMjU2IDQzIDI1NiA5Ni0xMTQuNiA5Ni0yNTYgOTZTMCAyMTMgMCAxNjB6bTAgODIuMlYzNTJjMCA1MyAxMTQuNiA5NiAyNTYgOTZzMjU2LTQzIDI1Ni05NlYyNDIuMmMtMTEzLjQgODIuMy0zOTguNSA4Mi40LTUxMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvbGx5QmVycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQ0IDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OHMtMjEuNS00OC00OC00OC00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTExMi00OGMwIDI2LjUgMjEuNSA0OCA0OCA0OHM0OC0yMS41IDQ4LTQ4LTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OHptLTMyLTQ4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzI1MC41IDAgMjI0IDBzLTQ4IDIxLjUtNDggNDggMjEuNSA0OCA0OCA0OHptLTE2LjIgMTM5LjFjLjEtMTIuNC0xMy4xLTIwLjEtMjMuOC0xMy43LTM0LjMgMjAuMy03MS40IDMyLjctMTA4LjcgMzYuMi05LjcuOS0xNS42IDExLjMtMTEuNiAyMC4yIDYuMiAxMy45IDExLjEgMjguNiAxNC43IDQzLjggMy42IDE1LjItNS4zIDMwLjYtMjAuMiAzNS4xLTE0LjkgNC41LTMwLjEgNy42LTQ1LjMgOS4xLTkuNyAxLTE1LjcgMTEuMy0xMS43IDIwLjIgMTUgMzIuOCAyMi45IDY5LjUgMjMgMTA3LjcuMSAxNC40IDE1LjIgMjMuMSAyNy42IDE2IDMzLjItMTkgNjguOS0zMC41IDEwNC44LTMzLjkgOS43LS45IDE1LjYtMTEuMyAxMS42LTIwLjItNi4yLTEzLjktMTEuMS0yOC42LTE0LjctNDMuOC0zLjYtMTUuMiA1LjMtMzAuNiAyMC4yLTM1LjEgMTQuOS00LjUgMzAuMS03LjYgNDUuMy05LjEgOS43LTEgMTUuNy0xMS4zIDExLjctMjAuMi0xNS41LTM0LjItMjMuMy03Mi41LTIyLjktMTEyLjN6TTQzNSAzNjUuNmMtMTUuMi0xLjYtMzAuMy00LjctNDUuMy05LjEtMTQuOS00LjUtMjMuOC0xOS45LTIwLjItMzUuMSAzLjYtMTUuMiA4LjUtMjkuOCAxNC43LTQzLjggNC04LjktMS45LTE5LjMtMTEuNi0yMC4yLTM3LjMtMy41LTc0LjQtMTUuOS0xMDguNy0zNi4yLTEwLjctNi4zLTIzLjkgMS40LTIzLjggMTMuNyAwIDEuNi0uMiAzLjItLjIgNC45LjIgMzMuMyA3IDY1LjcgMTkuOSA5NCA1LjcgMTIuNCA1LjIgMjYuNi0uNiAzOC45IDQuOSAxLjIgOS45IDIuMiAxNC44IDMuNyAxNC45IDQuNSAyMy44IDE5LjkgMjAuMiAzNS4xLTMuNiAxNS4yLTguNSAyOS44LTE0LjcgNDMuOC00IDguOSAxLjkgMTkuMyAxMS42IDIwLjIgMzUuOSAzLjQgNzEuNiAxNC45IDEwNC44IDMzLjkgMTIuNSA3LjEgMjcuNi0xLjYgMjcuNi0xNiAuMi0zOC4yIDgtNzUgMjMtMTA3LjcgNC4zLTguNy0xLjgtMTkuMS0xMS41LTIwLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9tZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODAuMzcgMTQ4LjI2TDk2IDMwMC4xMVY0NjRhMTYgMTYgMCAwIDAgMTYgMTZsMTEyLjA2LS4yOWExNiAxNiAwIDAgMCAxNS45Mi0xNlYzNjhhMTYgMTYgMCAwIDEgMTYtMTZoNjRhMTYgMTYgMCAwIDEgMTYgMTZ2OTUuNjRhMTYgMTYgMCAwIDAgMTYgMTYuMDVMNDY0IDQ4MGExNiAxNiAwIDAgMCAxNi0xNlYzMDBMMjk1LjY3IDE0OC4yNmExMi4xOSAxMi4xOSAwIDAgMC0xNS4zIDB6TTU3MS42IDI1MS40N0w0ODggMTgyLjU2VjQ0LjA1YTEyIDEyIDAgMCAwLTEyLTEyaC01NmExMiAxMiAwIDAgMC0xMiAxMnY3Mi42MUwzMTguNDcgNDNhNDggNDggMCAwIDAtNjEgMEw0LjM0IDI1MS40N2ExMiAxMiAwIDAgMC0xLjYgMTYuOWwyNS41IDMxQTEyIDEyIDAgMCAwIDQ1LjE1IDMwMWwyMzUuMjItMTkzLjc0YTEyLjE5IDEyLjE5IDAgMCAxIDE1LjMgMEw1MzAuOSAzMDFhMTIgMTIgMCAwIDAgMTYuOS0xLjZsMjUuNS0zMWExMiAxMiAwIDAgMC0xLjctMTYuOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2VIZWFkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOS44IDMzMi41bC02OS45LTE2NC4zYy0xNC45LTQxLjItNTAuNC03MS05My03OS4yIDE4LTEwLjYgNDYuMy0zNS45IDM0LjItODIuMy0xLjMtNS03LjEtNy45LTEyLTYuMUwxNjYuOSA3Ni4zQzM1LjkgMTIzLjQgMCAyMzguOSAwIDM5OC44VjQ4MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgyMzYuMmMyMy44IDAgMzkuMy0yNSAyOC42LTQ2LjNMMjU2IDM4NHYtLjdjLTQ1LjYtMy41LTg0LjYtMzAuNy0xMDQuMy02OS42LTEuNi0zLjEtLjktNi45IDEuNi05LjNsMTIuMS0xMi4xYzMuOS0zLjkgMTAuNi0yLjcgMTIuOSAyLjQgMTQuOCAzMy43IDQ4LjIgNTcuNCA4Ny40IDU3LjQgMTcuMiAwIDMzLTUuMSA0Ni44LTEzLjJsNDYgNjMuOWM2IDguNCAxNS43IDEzLjMgMjYgMTMuM2g1MC4zYzguNSAwIDE2LjYtMy40IDIyLjYtOS40bDQ1LjMtMzkuOGM4LjktOS4xIDExLjctMjIuNiA3LjEtMzQuNHpNMzI4IDIyNGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNCAyNCAxMC43IDI0IDI0LTEwLjcgMjQtMjQgMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG9yc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjkyIDc2LjZjLS4wMS04LjEzLTMuMDItMTUuODctOC41OC0yMS44LTMuNzgtNC4wMy04LjU4LTkuMTItMTMuNjktMTQuNSAxMS4wNi02Ljg0IDE5LjUtMTcuNDkgMjIuMTgtMzAuNjZDNTc2Ljg1IDQuNjggNTcyLjk2IDAgNTY3LjkgMEg0NDcuOTJjLTcwLjY5IDAtMTI4IDU3LjMxLTEyOCAxMjhIMTYwYy0yOC44NCAwLTU0LjQgMTIuOTgtNzIgMzMuMTFWMTYwYy00OC41MyAwLTg4IDM5LjQ3LTg4IDg4djU2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NmMwLTEzLjIyIDYuODctMjQuMzkgMTYuNzgtMzEuNjgtLjIxIDIuNTgtLjc4IDUuMDUtLjc4IDcuNjggMCAyNy42NCAxMS44NCA1Mi4zNiAzMC41NCA2OS44OGwtMjUuNzIgNjguNmE2My45NDUgNjMuOTQ1IDAgMCAwLTIuMTYgMzcuOTlsMjQuODUgOTkuNDFBMTUuOTgyIDE1Ljk4MiAwIDAgMCAxMDcuMDIgNTEyaDY1Ljk2YzEwLjQxIDAgMTguMDUtOS43OCAxNS41Mi0xOS44OGwtMjYuMzEtMTA1LjI2IDIzLjg0LTYzLjU5TDMyMCAzNDUuNlY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMzE4LjIyYzE5Ljc0LTIwLjE5IDMyLTQ3Ljc1IDMyLTc4LjIyIDAtLjIyLS4wNy0uNDItLjA4LS42NFYxMzYuODlsMTYgNy4xMSAxOC45IDM3LjdjNy40NSAxNC44NyAyNS4wNSAyMS41NSA0MC40OSAxNS4zN2wzMi41NS0xMy4wMmEzMS45OTcgMzEuOTk3IDAgMCAwIDIwLjEyLTI5Ljc0bC0uMDYtNzcuNzF6bS02NCAxOS40Yy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgOTZINDE2VjMyYzAtMTcuNy0xNC4zLTMyLTMyLTMySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NjRIMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjM2OGMwIDguOCA3LjIgMTYgMTYgMTZoNTQ0YzguOCAwIDE2LTcuMiAxNi0xNlYxMjhjMC0xNy43LTE0LjMtMzItMzItMzJ6TTE2MCA0MzZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTE2MCAxMjhjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwem0wLTEyOGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTE2LTE3MGMwIDMuMy0yLjcgNi02IDZoLTI2djI2YzAgMy4zLTIuNyA2LTYgNmgtMjBjLTMuMyAwLTYtMi43LTYtNnYtMjZoLTI2Yy0zLjMgMC02LTIuNy02LTZ2LTIwYzAtMy4zIDIuNy02IDYtNmgyNlY4NmMwLTMuMyAyLjctNiA2LTZoMjBjMy4zIDAgNiAyLjcgNiA2djI2aDI2YzMuMyAwIDYgMi43IDYgNnYyMHptMTQ0IDI5OGMwIDYuNi01LjQgMTItMTIgMTJoLTQwYy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDB6bTAtMTI4YzAgNi42LTUuNCAxMi0xMiAxMmgtNDBjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY0MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3NwaXRhbFN5bWJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMTEyIDM3NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTg4aC05NnY4OGMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LThWMTM2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2ODhoOTZ2LTg4YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2MjQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMzIwYTk2IDk2IDAgMSAwLTk2LTk2IDk2IDk2IDAgMCAwIDk2IDk2em00OCAzMmEyMi44OCAyMi44OCAwIDAgMC03LjA2IDEuMDkgMTI0Ljc2IDEyNC43NiAwIDAgMS04MS44OSAwQTIyLjgyIDIyLjgyIDAgMCAwIDQzMiAzNTJhMTEyIDExMiAwIDAgMC0xMTIgMTEyLjYyYy4xNCAyNi4yNiAyMS43MyA0Ny4zOCA0OCA0Ny4zOGgyMjRjMjYuMjcgMCA0Ny44Ni0yMS4xMiA0OC00Ny4zOEExMTIgMTEyIDAgMCAwIDUyOCAzNTJ6bS0xOTguMDkgMTAuNDVBMTQ1LjE5IDE0NS4xOSAwIDAgMSAzNTIgMzQ0LjYyVjEyOGEzMiAzMiAwIDAgMC0zMi0zMmgtMzJWMzJhMzIgMzIgMCAwIDAtMzItMzJIOTZhMzIgMzIgMCAwIDAtMzIgMzJ2NjRIMzJhMzIgMzIgMCAwIDAtMzIgMzJ2MzY4YTE2IDE2IDAgMCAwIDE2IDE2aDI4OC4zMUE3OC42MiA3OC42MiAwIDAgMSAyODggNDY0Ljc5YTE0My4wNiAxNDMuMDYgMCAwIDEgNDEuOTEtMTAyLjM0ek0xNDQgNDA0YTEyIDEyIDAgMCAxLTEyIDEySDkyYTEyIDEyIDAgMCAxLTEyLTEydi00MGExMiAxMiAwIDAgMSAxMi0xMmg0MGExMiAxMiAwIDAgMSAxMiAxMnptMC0xMjhhMTIgMTIgMCAwIDEtMTIgMTJIOTJhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem00OC0xMjJhNiA2IDAgMCAxLTYgNmgtMjBhNiA2IDAgMCAxLTYtNnYtMjZoLTI2YTYgNiAwIDAgMS02LTZ2LTIwYTYgNiAwIDAgMSA2LTZoMjZWNzBhNiA2IDAgMCAxIDYtNmgyMGE2IDYgMCAwIDEgNiA2djI2aDI2YTYgNiAwIDAgMSA2IDZ2MjBhNiA2IDAgMCAxLTYgNmgtMjZ6bTgwIDI1MGExMiAxMiAwIDAgMS0xMiAxMmgtNDBhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyem0wLTEyOGExMiAxMiAwIDAgMS0xMiAxMmgtNDBhMTIgMTIgMCAwIDEtMTItMTJ2LTQwYTEyIDEyIDAgMCAxIDEyLTEyaDQwYTEyIDEyIDAgMCAxIDEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvc3BpdGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0OTJ2MjBIMHYtMjBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMFYxMjBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDg4VjI0YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMTJjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djcyaDg4YzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHYzNjBoMjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnpNMzA4IDE5MmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTY4IDY0aDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTEwNCAxMjhoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjg0aDY0di04NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem02NC05NmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyem0tMTE2IDEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDB6TTE4MiA5NmgyNnYyNmE2IDYgMCAwIDAgNiA2aDIwYTYgNiAwIDAgMCA2LTZWOTZoMjZhNiA2IDAgMCAwIDYtNlY3MGE2IDYgMCAwIDAtNi02aC0yNlYzOGE2IDYgMCAwIDAtNi02aC0yMGE2IDYgMCAwIDAtNiA2djI2aC0yNmE2IDYgMCAwIDAtNiA2djIwYTYgNiAwIDAgMCA2IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG90VHViIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNC4yMSAxNzcuNjVjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzM3OC45NiA2LjE0IDM3Mi4yMiAwIDM2NC4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0em0tMTA4IDBjMS4wMiA4LjIxIDcuNzUgMTQuMzUgMTUuNzUgMTQuMzVoMTYuMTJjOS41MSAwIDE3LjA4LTguNTcgMTYtMTguMzUtNC4zNC0zOS4xMS0yMi40LTc0LjUzLTUwLjEzLTk3LjE2LTE3LjM3LTE0LjE3LTI4LjgyLTM2Ljc1LTMxLjk4LTYyLjE1QzI3MC45NiA2LjE0IDI2NC4yMiAwIDI1Ni4yMyAwaC0xNi4xMmMtOS41MSAwLTE3LjA5IDguNTctMTYgMTguMzUgNC4zNCAzOS4xMSAyMi40IDc0LjUzIDUwLjEzIDk3LjE2IDE3LjM2IDE0LjE3IDI4LjgyIDM2Ljc1IDMxLjk3IDYyLjE0ek00ODAgMjU2SDI1NmwtMTEwLjkzLTgzLjJhNjMuOTkgNjMuOTkgMCAwIDAtMzguNC0xMi44SDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djIyNGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM4NGMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0VjI4OGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xMjggNDQwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnptOTYgMGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04VjMyOGMwLTQuNDIgMy41OC04IDgtOGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxMTJ6bTk2IDBjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOFYzMjhjMC00LjQyIDMuNTgtOCA4LThoMTZjNC40MiAwIDggMy41OCA4IDh2MTEyem05NiAwYzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LThWMzI4YzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djExMnpNNjQgMTI4YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRTOTkuMzUgMCA2NCAwIDAgMjguNjUgMCA2NHMyOC42NSA2NCA2NCA2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3Rkb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg4LjU2IDIzLjQ0YTgwIDgwIDAgMCAwLTExMy4xMiAwbC0zNTIgMzUyYTgwIDgwIDAgMSAwIDExMy4xMiAxMTMuMTJsMzUyLTM1MmE4MCA4MCAwIDAgMCAwLTExMy4xMnptLTQ5LjkzIDk1LjE5Yy0xOS42IDE5LjU5LTM3LjUyIDIyLjY3LTUxLjkzIDI1LjE0QzM3My43NiAxNDYgMzY0LjQgMTQ3LjYgMzUyIDE2MHMtMTQgMjEuNzYtMTYuMjMgMzQuNzFjLTIuNDggMTQuNC01LjU1IDMyLjMzLTI1LjE1IDUxLjkycy0zNy41MiAyMi42Ny01MS45MiAyNS4xNUMyNDUuNzUgMjc0IDIzNi40IDI3NS42IDIyNCAyODhzLTE0IDIxLjc1LTE2LjIzIDM0LjdjLTIuNDcgMTQuNC01LjU0IDMyLjMzLTI1LjE0IDUxLjkycy0zNy41MyAyMi42OC01MS45MyAyNS4xNUMxMTcuNzYgNDAyIDEwOC40IDQwMy42IDk2IDQxNmExNiAxNiAwIDAgMS0yMi42My0yMi42M2MxOS42LTE5LjU5IDM3LjUyLTIyLjY3IDUxLjkyLTI1LjE0IDEzLTIuMjIgMjIuMy0zLjgyIDM0LjcxLTE2LjIzczE0LTIxLjc1IDE2LjIyLTM0LjdjMi40OC0xNC40IDUuNTUtMzIuMzMgMjUuMTUtNTEuOTJzMzcuNTItMjIuNjcgNTEuOTItMjUuMTRjMTMtMi4yMiAyMi4zLTMuODMgMzQuNy0xNi4yM3MxNC0yMS43NiAxNi4yNC0zNC43MWMyLjQ3LTE0LjQgNS41NC0zMi4zMyAyNS4xNC01MS45MnMzNy41Mi0yMi42OCA1MS45Mi0yNS4xNUMzOTQuMjQgMTEwIDQwMy41OSAxMDguNDEgNDE2IDk2YTE2IDE2IDAgMCAxIDIyLjYzIDIyLjYzek0zMS40NCAzMjIuMThMMzIyLjE4IDMxLjQ0bC0xMS41NC0xMS41NWMtMjUtMjUtNjMuODUtMjYuNjYtODYuNzktMy43MkwxNi4xNyAyMjMuODVjLTIyLjk0IDIyLjk0LTIxLjI3IDYxLjc5IDMuNzIgODYuNzh6bTQ0OS4xMi0xMzIuMzZMMTg5LjgyIDQ4MC41NmwxMS41NCAxMS41NWMyNSAyNSA2My44NSAyNi42NiA4Ni43OSAzLjcybDIwNy42OC0yMDcuNjhjMjIuOTQtMjIuOTQgMjEuMjctNjEuNzktMy43Mi04Ni43OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3RlbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAgNjRjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiAwIDAgNy4xNiAwIDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE1Ljk4djM4NEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMjQwdi04MGMwLTguOCA3LjItMTYgMTYtMTZoMzJjOC44IDAgMTYgNy4yIDE2IDE2djgwaDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTE2VjY0aDE2em0tMzA0IDQ0LjhjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bTAgOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6bS0xMjgtOTZjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDM4LjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjRjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC0zOC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjR6TTE3OS4yIDI1NmgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOHpNMTkyIDM4NGMwLTUzLjAyIDQyLjk4LTk2IDk2LTk2czk2IDQyLjk4IDk2IDk2SDE5MnptMjU2LTE0MC44YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40em0wLTk2YzAgNi40LTYuNCAxMi44LTEyLjggMTIuOGgtMzguNGMtNi40IDAtMTIuOC02LjQtMTIuOC0xMi44di0zOC40YzAtNi40IDYuNC0xMi44IDEyLjgtMTIuOGgzOC40YzYuNCAwIDEyLjggNi40IDEyLjggMTIuOHYzOC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc0VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjAgNjRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMCAwIDEwLjc0NSAwIDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCAwIDkwLjk2NSA1MS4wMTYgMTY3LjczNCAxMjAuODQyIDE5MkM3NS4wMTYgMjgwLjI2NiAyNCAzNTcuMDM1IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQgMC05MC45NjUtNTEuMDE2LTE2Ny43MzQtMTIwLjg0Mi0xOTJDMzA4Ljk4NCAyMzEuNzM0IDM2MCAxNTQuOTY1IDM2MCA2NHpNMTkyIDIwOGMtNTcuNzg3IDAtMTA0LTY2LjUxOC0xMDQtMTQ0aDIwOGMwIDc3Ljk0NS00Ni41MSAxNDQtMTA0IDE0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3NIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0IDAgOTAuOTY1IDUxLjAxNiAxNjcuNzM0IDEyMC44NDIgMTkyQzc1LjAxNiAyODAuMjY2IDI0IDM1Ny4wMzUgMjQgNDQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNCAwLTkwLjk2NS01MS4wMTYtMTY3LjczNC0xMjAuODQyLTE5MkMzMDguOTg0IDIzMS43MzQgMzYwIDE1NC45NjUgMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bS03NS4wNzggMzg0SDk5LjA4YzE3LjA1OS00Ni43OTcgNTIuMDk2LTgwIDkyLjkyLTgwIDQwLjgyMSAwIDc1Ljg2MiAzMy4xOTYgOTIuOTIyIDgwem0uMDE5LTI1Nkg5OS4wNzhDOTEuOTg4IDEwOC41NDggODggODYuNzQ4IDg4IDY0aDIwOGMwIDIyLjgwNS0zLjk4NyA0NC41ODctMTEuMDU5IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhvdXJnbGFzc1N0YXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCAwSDI0QzEwLjc0NSAwIDAgMTAuNzQ1IDAgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0IDAgOTAuOTY1IDUxLjAxNiAxNjcuNzM0IDEyMC44NDIgMTkyQzc1LjAxNiAyODAuMjY2IDI0IDM1Ny4wMzUgMjQgNDQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTE2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNCAwLTkwLjk2NS01MS4wMTYtMTY3LjczNC0xMjAuODQyLTE5MkMzMDguOTg0IDIzMS43MzQgMzYwIDE1NC45NjUgMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6bS02NCA0NDhIODhjMC03Ny40NTggNDYuMjA0LTE0NCAxMDQtMTQ0IDU3Ljc4NiAwIDEwNCA2Ni41MTcgMTA0IDE0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYwIDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjQgMCA5MC45NjUgNTEuMDE2IDE2Ny43MzQgMTIwLjg0MiAxOTJDNzUuMDE2IDI4MC4yNjYgMjQgMzU3LjAzNSAyNCA0NDhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMzM2YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtMTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0IDAtOTAuOTY1LTUxLjAxNi0xNjcuNzM0LTEyMC44NDItMTkyQzMwOC45ODQgMjMxLjczNCAzNjAgMTU0Ljk2NSAzNjAgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VEYW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDExNC45Nkw2OS40NyAzMDcuNzFjLTEuNjIgMS40Ni0zLjY5IDIuMTQtNS40NyAzLjM1VjQ5NmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNDkuMjNMMTkyIDQzOS4xOWwxMDQuMTEtNjQtNjAuMTYtMTE5LjIyTDM4NCAzOTIuNzVsLTEwNC4xMSA2NEwzMTkuODEgNTEySDQ5NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYzMTEuMWMtMS43LTEuMTYtMy43Mi0xLjgyLTUuMjYtMy4yTDI4OCAxMTQuOTZ6bTI4Mi42OSAxMjEuMzJMNTEyIDE4NC40NVY0OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtNjRjLTguODQgMC0xNiA3LjE2LTE2IDE2djUxLjY5TDMxNC43NSAxMC4zMUMzMDcuMTIgMy40NSAyOTcuNTYuMDEgMjg4IDBzLTE5LjEgMy40MS0yNi43IDEwLjI3TDUuMzEgMjM2LjI4Yy02LjU3IDUuOTEtNy4xMiAxNi4wMi0xLjIxIDIyLjZsMjEuNCAyMy44MmM1LjkgNi41NyAxNi4wMiA3LjEyIDIyLjYgMS4yMUwyNzcuNDIgODEuNjNjNi4wNS01LjMzIDE1LjEyLTUuMzMgMjEuMTcgMEw1MjcuOTEgMjgzLjljNi41NyA1LjkgMTYuNjkgNS4zNiAyMi42LTEuMjFsMjEuNC0yMy44MmM1LjktNi41NyA1LjM2LTE2LjY5LTEuMjItMjIuNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSG91c2VVc2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3MC42OSwyMzYuMjcsNTEyLDE4NC40NFY0OGExNiwxNiwwLDAsMC0xNi0xNkg0MzJhMTYsMTYsMCwwLDAtMTYsMTZWOTkuNjdMMzE0Ljc4LDEwLjNDMzA4LjUsNC42MSwyOTYuNTMsMCwyODgsMHMtMjAuNDYsNC42MS0yNi43NCwxMC4zbC0yNTYsMjI2QTE4LjI3LDE4LjI3LDAsMCwwLDAsMjQ4LjJhMTguNjQsMTguNjQsMCwwLDAsNC4wOSwxMC43MUwyNS41LDI4Mi43YTIxLjE0LDIxLjE0LDAsMCwwLDEyLDUuMywyMS42NywyMS42NywwLDAsMCwxMC42OS00LjExbDE1LjktMTRWNDgwYTMyLDMyLDAsMCwwLDMyLDMySDQ4MGEzMiwzMiwwLDAsMCwzMi0zMlYyNjkuODhsMTUuOTEsMTRBMjEuOTQsMjEuOTQsMCwwLDAsNTM4LjYzLDI4OGEyMC44OSwyMC44OSwwLDAsMCwxMS44Ny01LjMxbDIxLjQxLTIzLjgxQTIxLjY0LDIxLjY0LDAsMCwwLDU3NiwyNDguMTksMjEsMjEsMCwwLDAsNTcwLjY5LDIzNi4yN1pNMjg4LDE3NmE2NCw2NCwwLDEsMS02NCw2NEE2NCw2NCwwLDAsMSwyODgsMTc2Wk00MDAsNDQ4SDE3NmExNiwxNiwwLDAsMS0xNi0xNiw5Niw5NiwwLDAsMSw5Ni05Nmg2NGE5Niw5NiwwLDAsMSw5Niw5NkExNiwxNiwwLDAsMSw0MDAsNDQ4WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUhyeXZuaWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDI0MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTQxLjg2YzEzLjQxLTI4LjYzIDEzLjc0LTYzLjMzLTQuMTMtOTQuMDVDMzAzLjM0IDQ5Ljg0IDI2Ny4xIDMyIDIyOS45NiAzMmgtNzguODJjLTI0LjMyIDAtNDcuODYgOC41My02Ni41NCAyNC4wOUw3Mi44MyA2NS45Yy0xMC4xOCA4LjQ5LTExLjU2IDIzLjYyLTMuMDcgMzMuOGwyMC40OSAyNC41OWM4LjQ5IDEwLjE5IDIzLjYyIDExLjU2IDMzLjgxIDMuMDdsMTEuNzMtOS43OGM0LjMyLTMuNiA5Ljc3LTUuNTcgMTUuMzktNS41N2g4My42MmMxMS42OSAwIDIxLjIgOS41MiAyMS4yIDIxLjIgMCA1LjkxLTIuNDggMTEuNTgtNi44MSAxNS41OEwyMTkuNyAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDEzNC4zN2wtMzQuNjcgMzJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxLjg2Yy0xMy40MSAyOC42My0xMy43NCA2My4zMyA0LjEzIDk0LjA1QzgwLjY2IDQ2Mi4xNSAxMTYuOSA0ODAgMTU0LjA0IDQ4MGg3OC44MmMyNC4zMiAwIDQ3Ljg2LTguNTMgNjYuNTQtMjQuMDlsMTEuNzctOS44MWMxMC4xOC04LjQ5IDExLjU2LTIzLjYyIDMuMDctMzMuOGwtMjAuNDktMjQuNTljLTguNDktMTAuMTktMjMuNjItMTEuNTYtMzMuODEtMy4wN2wtMTEuNzUgOS44YTIzLjk5MiAyMy45OTIgMCAwIDEtMTUuMzYgNS41NkgxNDkuMmMtMTEuNjkgMC0yMS4yLTkuNTItMjEuMi0yMS4yIDAtNS45MSAyLjQ4LTExLjU4IDYuODEtMTUuNThMMTY0LjMgMzM2SDM2OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjMzLjYzbDM0LjY3LTMySDM2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJQ3Vyc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1Mi4wNDhWMTIuMDY1QzI1NiA1LjQ5NiAyNTAuNzI2LjE0OCAyNDQuMTU4LjA2NiAyMTEuNjIxLS4zNDQgMTY2LjQ2OS4wMTEgMTI4IDM3Ljk1OSA5MC4yNjYuNzM2IDQ2Ljk3OS0uMTE0IDExLjkxMy4xMTQgNS4zMTguMTU3IDAgNS41MTkgMCAxMi4xMTR2MzkuNjQ1YzAgNi42ODcgNS40NTggMTIuMDc4IDEyLjE0NSAxMS45OThDMzguMTExIDYzLjQ0NyA5NiA2Ny4yNDMgOTYgMTEyLjE4MlYyMjRINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzNnYxMTJjMCA0NC45MzItNTYuMDc1IDQ4LjAzMS04My45NSA0Ny45NTlDNS40MDQgNDQ3Ljk0MiAwIDQ1My4zMDYgMCA0NTkuOTUydjM5Ljk4M2MwIDYuNTY5IDUuMjc0IDExLjkxNyAxMS44NDIgMTEuOTk5IDMyLjUzNy40MDkgNzcuNjg5LjA1NCAxMTYuMTU4LTM3Ljg5NCAzNy43MzQgMzcuMjIzIDgxLjAyMSAzOC4wNzMgMTE2LjA4NyAzNy44NDUgNi41OTUtLjA0MyAxMS45MTMtNS40MDUgMTEuOTEzLTEyVjQ2MC4yNGMwLTYuNjg3LTUuNDU4LTEyLjA3OC0xMi4xNDUtMTEuOTk4QzIxNy44ODkgNDQ4LjU1MyAxNjAgNDQ0LjkzOSAxNjAgNDAwVjI4OGgzNmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxMTIuMTgyYzAtNDQuOTMyIDU2LjA3NS00OC4yMTMgODMuOTUtNDguMTQyIDYuNjQ2LjAxOCAxMi4wNS01LjM0NiAxMi4wNS0xMS45OTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNlQ3JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDE2MGgtLjk0YTE0NCAxNDQgMCAxIDAtMjg2LjEyIDBIODBhNDggNDggMCAwIDAgMCA5NmgyODhhNDggNDggMCAwIDAgMC05NnpNMTk1LjM4IDQ5My42OWEzMS41MiAzMS41MiAwIDAgMCA1Ny4yNCAwTDM1MiAyODhIOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNpY2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTEuNCAzNy45QzUxNS4xIDE4LjIgNTAwIDAgNDgwIDBIMzJDMTAuNiAwLTQuOCAyMC43IDEuNCA0MS4ybDg3LjEgMjczLjRjMi41IDcuMiAxMi43IDcuMiAxNS4xIDBMMTQwIDE5MC41bDQ0LjIgMTg3LjNjMS45IDguMyAxMy43IDguMyAxNS42IDBsNDYuNS0xOTYuOSAzNC4xIDEzMy40YzIuMyA3LjYgMTMgNy42IDE1LjMgMGw0NS44LTE3Mi41IDY2LjcgMzYzLjhjMS43IDguNiAxNCA4LjYgMTUuNyAwbDg3LjUtNDY3Ljd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWNvbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE2LjY1IDIxOS4zNWExNS42OCAxNS42OCAwIDAgMCAyMi42NSAwbDk2Ljc1LTk5LjgzYzI4LjE1LTI5IDI2LjUtNzcuMS00LjkxLTEwMy44OEMyMDMuNzUtNy43IDE2My0zLjUgMTM3Ljg2IDIyLjQ0TDEyOCAzMi41OGwtOS44NS0xMC4xNEM5My4wNS0zLjUgNTIuMjUtNy43IDI0Ljg2IDE1LjY0Yy0zMS40MSAyNi43OC0zMyA3NC44NS01IDEwMy44OHptMTQzLjkyIDEwMC40OWgtNDhsLTcuMDgtMTQuMjRhMjcuMzkgMjcuMzkgMCAwIDAtMjUuNjYtMTcuNzhoLTcxLjcxYTI3LjM5IDI3LjM5IDAgMCAwLTI1LjY2IDE3Ljc4bC03IDE0LjI0aC00OEEyNy40NSAyNy40NSAwIDAgMCAwIDM0Ny4zdjEzNy4yNUEyNy40NCAyNy40NCAwIDAgMCAyNy40MyA1MTJoMjMzLjE0QTI3LjQ1IDI3LjQ1IDAgMCAwIDI4OCA0ODQuNTVWMzQ3LjNhMjcuNDUgMjcuNDUgMCAwIDAtMjcuNDMtMjcuNDZ6TTE0NCA0NjhhNTIgNTIgMCAxIDEgNTItNTIgNTIgNTIgMCAwIDEtNTIgNTJ6bTM1NS40LTExNS45aC02MC41OGwyMi4zNi01MC43NWMyLjEtNi42NS0zLjkzLTEzLjIxLTEyLjE4LTEzLjIxaC03NS41OWMtNi4zIDAtMTEuNjYgMy45LTEyLjUgOS4xbC0xNi44IDEwNi45M2MtMSA2LjMgNC44OCAxMS44OSAxMi41IDExLjg5aDYyLjMxbC0yNC4yIDgzYy0xLjg5IDYuNjUgNC4yIDEyLjkgMTIuMjMgMTIuOWExMy4yNiAxMy4yNiAwIDAgMCAxMC45Mi01LjI1bDkyLjQtMTM4LjkxYzQuODgtNi45MS0xLjE2LTE1LjctMTAuODctMTUuN3pNNDc4LjA4LjMzTDMyOS41MSAyMy4xN0MzMTQuODcgMjUuNDIgMzA0IDM4LjkyIDMwNCA1NC44M1YxNjEuNmE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2Vjk5LjY2bDExMi0xNy4yMnY0Ny4xOGE4My4yNSA4My4yNSAwIDAgMC0xNi0xLjdjLTM1LjM1IDAtNjQgMjEuNDgtNjQgNDhzMjguNjUgNDggNjQgNDhjMzUuMiAwIDYzLjczLTIxLjMyIDY0LTQ3LjY2VjMyYzAtMTkuNDgtMTYtMzQuNDItMzMuOTItMzEuNjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRCYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTQ0IDMyaDk2YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2aC05NmMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNnptNDggMTI4YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptMTEyIDIzNi44YzAgMTAuNi0xMCAxOS4yLTIyLjQgMTkuMkgxMDIuNEM5MCA0MTYgODAgNDA3LjQgODAgMzk2Ljh2LTE5LjJjMC0zMS44IDMwLjEtNTcuNiA2Ny4yLTU3LjZoNWMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg1YzM3LjEgMCA2Ny4yIDI1LjggNjcuMiA1Ny42djE5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWRDYXJkQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCA2NEgzODR2OTZIMTkyVjY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yODggMjI0YzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHptOTMuMyAyMjRIMTk0LjdjLTEwLjQgMC0xOC44LTEwLTE1LjYtMTkuOCA4LjMtMjUuNiAzMi40LTQ0LjIgNjAuOS00NC4yaDguMmMxMi4zIDUuMSAyNS43IDggMzkuOCA4czI3LjYtMi45IDM5LjgtOGg4LjJjMjguNCAwIDUyLjUgMTguNSA2MC45IDQ0LjIgMy4yIDkuOC01LjIgMTkuOC0xNS42IDE5Ljh6TTM1MiAzMmMwLTE3LjctMTQuMy0zMi0zMi0zMmgtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjk2aDEyOFYzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJZENhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MTZoNTc2VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0wIDQzMmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTI4SDB2MzA0em0zNTItMjMyYzAtNC40IDMuNi04IDgtOGgxNDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzNjBjLTQuNCAwLTgtMy42LTgtOHYtMTZ6bTAgNjRjMC00LjQgMy42LTggOC04aDE0NGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDM2MGMtNC40IDAtOC0zLjYtOC04di0xNnptMCA2NGMwLTQuNCAzLjYtOCA4LThoMTQ0YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIMzYwYy00LjQgMC04LTMuNi04LTh2LTE2ek0xNzYgMTkyYzM1LjMgMCA2NCAyOC43IDY0IDY0cy0yOC43IDY0LTY0IDY0LTY0LTI4LjctNjQtNjQgMjguNy02NCA2NC02NHpNNjcuMSAzOTYuMkM3NS41IDM3MC41IDk5LjYgMzUyIDEyOCAzNTJoOC4yYzEyLjMgNS4xIDI1LjcgOCAzOS44IDhzMjcuNi0yLjkgMzkuOC04aDguMmMyOC40IDAgNTIuNSAxOC41IDYwLjkgNDQuMiAzLjIgOS45LTUuMiAxOS44LTE1LjYgMTkuOEg4Mi43Yy0xMC40IDAtMTguOC0xMC0xNS42LTE5Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSWdsb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDMzLjljLTEwLjUtMS4yLTIxLjItMS45LTMyLTEuOS05OS44IDAtMTg3LjggNTAuOC0yMzkuNCAxMjhIMzIwVjMzLjl6TTk2IDE5MkgzMC4zQzExLjEgMjMwLjYgMCAyNzQgMCAzMjBoOTZWMTkyek0zNTIgMzkuNFYxNjBoMTc1LjRDNDg3LjIgOTkuOSA0MjQuOCA1NS45IDM1MiAzOS40ek00ODAgMzIwaDk2YzAtNDYtMTEuMS04OS40LTMwLjMtMTI4SDQ4MHYxMjh6bS02NCA2NHY5NmgxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2SDQxMS41YzIuNiAxMC4zIDQuNSAyMC45IDQuNSAzMnptMzItMTkySDEyOHYxMjhoNDkuOGMyMi4yLTM4LjEgNjMtNjQgMTEwLjItNjRzODggMjUuOSAxMTAuMiA2NEg0NDhWMTkyek0wIDQ0OGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxMjh2LTk2YzAtMTEuMSAxLjktMjEuNyA0LjUtMzJIMHY5NnptMjg4LTE2MGMtNTMgMC05NiA0My05NiA5NnY5NmgxOTJ2LTk2YzAtNTMtNDMtOTYtOTYtOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OHpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2ek02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0MTZ2MTZjMCAyNi41MS0yMS40OSA0OC00OCA0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxNzZjMC0yNi41MSAyMS40OS00OCA0OC00OGgxNnYyMDhjMCA0NC4xMTIgMzUuODg4IDgwIDgwIDgwaDMzNnptOTYtODBWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNDRjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MjU2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzg0YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDh6TTI1NiAxMjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS05NiAxNDRsNTUuNTE1LTU1LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjcyIDI1NmwxMzUuNTE1LTEzNS41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDUxMiAyMDh2MTEySDE2MHYtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5ib3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY3LjkzOCAyNDMuOTA4TDQ2Mi4yNSA4NS4zNzRBNDguMDAzIDQ4LjAwMyAwIDAgMCA0MjIuMzExIDY0SDE1My42ODlhNDggNDggMCAwIDAtMzkuOTM4IDIxLjM3NEw4LjA2MiAyNDMuOTA4QTQ3Ljk5NCA0Ny45OTQgMCAwIDAgMCAyNzAuNTMzVjQwMGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQ4MGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjI3MC41MzNhNDcuOTk0IDQ3Ljk5NCAwIDAgMC04LjA2Mi0yNi42MjV6TTE2Mi4yNTIgMTI4aDI1MS40OTdsODUuMzMzIDEyOEgzNzZsLTMyIDY0SDIzMmwtMzItNjRINzYuOTE4bDg1LjMzNC0xMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5kZW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3LjMxIDM2My4zbDk2LTk2YTE2IDE2IDAgMCAwIDAtMjIuNjJsLTk2LTk2QzE3LjI3IDEzOC42NiAwIDE0NS43OCAwIDE2MHYxOTJjMCAxNC4zMSAxNy4zMyAyMS4zIDI3LjMxIDExLjN6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUluZHVzdHJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NS4xMTUgMTYzLjc4MUwzMzYgMjUyLjMwOXYtNjguMjhjMC0xOC45MTYtMjAuOTMxLTMwLjM5OS0zNi44ODUtMjAuMjQ4TDE2MCAyNTIuMzA5VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyNEMxMC43NDUgMzIgMCA0Mi43NDUgMCA1NnY0MDBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQ2NGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTg0LjAyOWMwLTE4LjkxNy0yMC45MzEtMzAuMzk5LTM2Ljg4NS0yMC4yNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5maW5pdHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcxLjEgOTZDNDA1IDk2IDM1My4zIDEzNy4zIDMyMCAxNzQuNiAyODYuNyAxMzcuMyAyMzUgOTYgMTY4LjkgOTYgNzUuOCA5NiAwIDE2Ny44IDAgMjU2czc1LjggMTYwIDE2OC45IDE2MGM2Ni4xIDAgMTE3LjgtNDEuMyAxNTEuMS03OC42IDMzLjMgMzcuMyA4NSA3OC42IDE1MS4xIDc4LjYgOTMuMSAwIDE2OC45LTcxLjggMTY4LjktMTYwUzU2NC4yIDk2IDQ3MS4xIDk2ek0xNjguOSAzMjBjLTQwLjIgMC03Mi45LTI4LjctNzIuOS02NHMzMi43LTY0IDcyLjktNjRjMzguMiAwIDczLjQgMzYuMSA5NCA2NC0yMC40IDI3LjYtNTUuOSA2NC05NCA2NHptMzAyLjIgMGMtMzguMiAwLTczLjQtMzYuMS05NC02NCAyMC40LTI3LjYgNTUuOS02NCA5NC02NCA0MC4yIDAgNzIuOSAyOC43IDcyLjkgNjRzLTMyLjcgNjQtNzIuOSA2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFJbmZvQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgMTEwYzIzLjE5NiAwIDQyIDE4LjgwNCA0MiA0MnMtMTguODA0IDQyLTQyIDQyLTQyLTE4LjgwNC00Mi00MiAxOC44MDQtNDIgNDItNDJ6bTU2IDI1NGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC04OGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMnYtNjRoLTEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDY0YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MTAwaDEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSW5mbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMCA0MjQuMjI5aDIwVjI3OS43NzFIMjBjLTExLjA0NiAwLTIwLTguOTU0LTIwLTIwVjIxMmMwLTExLjA0NiA4Ljk1NC0yMCAyMC0yMGgxMTJjMTEuMDQ2IDAgMjAgOC45NTQgMjAgMjB2MjEyLjIyOWgyMGMxMS4wNDYgMCAyMCA4Ljk1NCAyMCAyMFY0OTJjMCAxMS4wNDYtOC45NTQgMjAtMjAgMjBIMjBjLTExLjA0NiAwLTIwLTguOTU0LTIwLTIwdi00Ny43NzFjMC0xMS4wNDYgOC45NTQtMjAgMjAtMjB6TTk2IDBDNTYuMjM1IDAgMjQgMzIuMjM1IDI0IDcyczMyLjIzNSA3MiA3MiA3MiA3Mi0zMi4yMzUgNzItNzJTMTM1Ljc2NCAwIDk2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCA0OHYzMmExNiAxNiAwIDAgMS0xNiAxNmgtNjIuNzZsLTgwIDMyMEgyMDhhMTYgMTYgMCAwIDEgMTYgMTZ2MzJhMTYgMTYgMCAwIDEtMTYgMTZIMTZhMTYgMTYgMCAwIDEtMTYtMTZ2LTMyYTE2IDE2IDAgMCAxIDE2LTE2aDYyLjc2bDgwLTMyMEgxMTJhMTYgMTYgMCAwIDEtMTYtMTZWNDhhMTYgMTYgMCAwIDEgMTYtMTZoMTkyYTE2IDE2IDAgMCAxIDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUplZGkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTM1Ljk1MzA4LDM1MmMtNDIuNjQwNjksOTQuMTcxODgtMTM3LjY0MDg2LDE2MC0yNDcuOTg0OCwxNjBxLTYuMzk4NDQsMC0xMi44NDM3Ny0uMjk2ODhDMTcxLjE1NTU4LDUwNi45Mzc1LDgxLjI2NDgxLDQ0Mi4yMzQzOCw0MC4wMTQ3NCwzNTJINzkuOTM2NjhMMjEuMzI3MiwyOTMuNDA2MjVhMjY0LjgyNTIyLDI2NC44MjUyMiwwLDAsMS01LjEwOTM4LTM5LjQyMTg3LDI3My42NjUzLDI3My42NjUzLDAsMCwxLC41LTI5Ljk4NDM4SDYzLjkzNjY1TDIyLjU0NiwxODIuNjI1QTI2OS43OTc4MiwyNjkuNzk3ODIsMCwwLDEsMTMwLjUxNDg5LDIwLjU0Njg4YTE2LjA2MzkzLDE2LjA2MzkzLDAsMCwxLDkuMjgxMjctMywxNi4zNjMzMiwxNi4zNjMzMiwwLDAsMSwxMy41LDcuMjUsMTYuMDI3MzksMTYuMDI3MzksMCwwLDEsMS42MjUsMTUuMDkzNzQsMTM4LjM4NywxMzguMzg3LDAsMCwwLTkuODQzNzYsNTEuMjY1NjNjMCw0NS4xMDkzNywyMS4wNDY5MSw4Ni41NzgxMyw1Ny43MTg4NCwxMTMuNzM0MzdhMTYuMjk5ODksMTYuMjk5ODksMCwwLDEsMS4yMDMxMywyNS4zOTA2M2MtMjYuNTQ2OTIsMjMuOTg0MzctNDEuMTcxOTQsNTYuNS00MS4xNzE5NCw5MS41NzgxMywwLDYwLjAzMTI0LDQyLjk1MzE5LDExMC4yODEyNCw5OS44OTA3OSwxMjEuOTIxODdsMi41LTY1LjI2NTYzTDIzOC4wNjIsMzk3YTguMzM5MTEsOC4zMzkxMSwwLDAsMS0xMC0uNzUsOC4wMjUsOC4wMjUsMCwwLDEtMS4zOTA2My05LjkzNzVsMjAuMTI1LTMzLjc2NTYyLTQyLjA2MjU3LTguNzM0MzhhNy45ODk4LDcuOTg5OCwwLDAsMSwwLTE1LjY1NjI1bDQyLjA2MjU3LTguNzE4NzUtMjAuMTA5NDEtMzMuNzM0MzhhNy45OTEyMiw3Ljk5MTIyLDAsMCwxLDExLjM1OTM5LTEwLjcxODc0TDI2OC40MzcsMjk1LjY0MDYyLDI3OS45NTI2NSw3LjY3MTg4YTcuOTcxMzgsNy45NzEzOCwwLDAsMSw4LTcuNjcxODhoLjA0Njg3YTguMDIwNjQsOC4wMjA2NCwwLDAsMSw3Ljk1MzE0LDcuNzAzMTJMMzA3LjQ4Mzk0LDI5NS42MjVsMzAuMzkwNjgtMjAuNjcxODhhOC4wODMyNyw4LjA4MzI3LDAsMCwxLDEwLC44MTI1LDcuOTk4NjYsNy45OTg2NiwwLDAsMSwxLjM5MDYyLDkuOTA2MjZMMzI5LjEyNDYxLDMxOS40Mzc1bDQyLjA3ODE5LDguNzM0MzhhNy45OTM3Myw3Ljk5MzczLDAsMCwxLDAsMTUuNjU2MjRsLTQyLjA3ODE5LDguNzE4NzYsMjAuMTA5NCwzMy43MzQzN2E3Ljk3NzkxLDcuOTc3OTEsMCwwLDEtMS4zMjgxMiw5LjkyMTg3QTguMjU3MzksOC4yNTczOSwwLDAsMSwzMzcuODc0NjIsMzk3TDMxMC43MDI3LDM3OC41MzEyNWwyLjUsNjUuMzQzNzVjNDguNDg0NDYtOS40MDYyNSw4Ny41NzgyOC00OC4xNTYyNSw5Ny4zMTI2Ny05Ni41QTEyMy41MjY1MiwxMjMuNTI2NTIsMCwwLDAsMzcxLjk1MjgsMjMwLjI5Njg4YTE2LjMwNjM0LDE2LjMwNjM0LDAsMCwxLDEuMjAzMTMtMjUuNDIxODhjMzYuNjU2MzEtMjcuMTcxODgsNTcuNjg3Ni02OC42MDkzOCw1Ny42ODc2LTExMy43MzQzOGExMzguMDE2ODksMTM4LjAxNjg5LDAsMCwwLTkuODU5MzktNTEuMzEyNSwxNS45ODEzMiwxNS45ODEzMiwwLDAsMSwxLjYwOTM3LTE1LjA5Mzc0LDE2LjM2OTE0LDE2LjM2OTE0LDAsMCwxLDEzLjUtNy4yMzQzOCwxNi4wMjQ1MywxNi4wMjQ1MywwLDAsMSw5LjI1LDIuOTg0MzhBMjcxLjI2OTQ3LDI3MS4yNjk0NywwLDAsMSw1NTMuMjUsMTgyLjc2NTYyTDUxMS45OTk5MiwyMjRoNDYuOTUzMkM1NTkuMzEyNSwyMjkuNzY1NjIsNTYwLDIzNS40NTMxMiw1NjAsMjQxLjI2NTYyYTI3MC4wOTIsMjcwLjA5MiwwLDAsMS01LjEyNSw1MS44NTkzOEw0OTUuOTg0MjcsMzUyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUpvaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0NC4zNCAxODEuMWMyMi4zOCAxNS42OCAzNS42NiA0MS4xNiAzNS42NiA2OC41OVYyODBjMCA0LjQyIDMuNTggOCA4IDhoNDhjNC40MiAwIDgtMy41OCA4LTh2LTMwLjMxYzAtNDMuMjQtMjEuMDEtODMuNDEtNTYuMzQtMTA4LjA2QzQ2My44NSAxMjUuMDIgNDQ4IDk5LjM0IDQ0OCA3MC4zMVY4YzAtNC40Mi0zLjU4LTgtOC04aC00OGMtNC40MiAwLTggMy41OC04IDh2NjYuNGMwIDQzLjY5IDI0LjU2IDgxLjYzIDYwLjM0IDEwNi43ek0xOTQuOTcgMzU4Ljk4QzEyNi4wMyAzNzAuMDcgNTkuNjkgMzk0LjY5IDAgNDMyYzgzLjY1IDUyLjI4IDE4MC4zIDgwIDI3OC45NCA4MGg4OC41N0wyNTQuNzkgMzgwLjQ5Yy0xNC43NC0xNy4yLTM3LjQ1LTI1LjExLTU5LjgyLTIxLjUxek01NTMuMjggODcuMDljLTUuNjctMy44LTkuMjgtOS45Ni05LjI4LTE2Ljc4VjhjMC00LjQyLTMuNTgtOC04LThoLTQ4Yy00LjQyIDAtOCAzLjU4LTggOHY2Mi4zMWMwIDIyLjAyIDEwLjE3IDQzLjQxIDI4LjY0IDU1LjM5QzU1MC43OSAxNTMuMDQgNTc2IDE5OS41NCA1NzYgMjQ5LjY5VjI4MGMwIDQuNDIgMy41OCA4IDggOGg0OGM0LjQyIDAgOC0zLjU4IDgtOHYtMzAuMzFjMC02NS40NC0zMi40MS0xMjYuMTktODYuNzItMTYyLjZ6TTM2MC44OSAzNTIuMDVjLTM0LjQuMDYtODYuODEuMTUtODguMjEuMTdsMTE3LjggMTM3LjQzQTYzLjk4NyA2My45ODcgMCAwIDAgNDM5LjA3IDUxMmg4OC40NUw0MDkuNTcgMzc0LjRhNjMuOTU1IDYzLjk1NSAwIDAgMC00OC42OC0yMi4zNXpNNjE2IDM1Mkg0MzJsMTE3Ljk5IDEzNy42NUE2My45ODcgNjMuOTg3IDAgMCAwIDU5OC41OCA1MTJINjE2YzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMzc2YzAtMTMuMjYtMTAuNzUtMjQtMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhSm91cm5hbFdoaWxscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzguNDA2MjUsMzc3LjU5Mzc1Yy0zLjIwMzEzLDEyLjgxMjUtMy4yMDMxMyw1Ny42MDkzNywwLDczLjYwOTM3UTQ0Ny45OTIyLDQ2MC43ODkwNyw0NDgsNDcwLjQwNjI1djE2YzAsMTYtMTIuNzk2ODgsMjUuNTkzNzUtMjUuNTkzNzUsMjUuNTkzNzVIOTZjLTU0LjQwNjI1LDAtOTYtNDEuNTkzNzUtOTYtOTZWOTZDMCw0MS41OTM3NSw0MS41OTM3NSwwLDk2LDBINDIyLjQwNjI1QzQzOC40MDYyNSwwLDQ0OCw5LjU5Mzc1LDQ0OCwyNS41OTM3NXYzMzIuODEyNVE0NDgsMzcyLjc5Njg4LDQzOC40MDYyNSwzNzcuNTkzNzVaTTM4MC43OTY4OCwzODRIOTZjLTE2LDAtMzIsMTIuNzk2ODgtMzIsMzJzMTIuNzk2ODgsMzIsMzIsMzJIMzgwLjc5Njg4Wk0xMjguMDE1NjIsMTc2LjAxNTYyYzAsLjUxNTYzLjE0MDYzLjk4NDM4LjE0MDYzLDEuNWwzNy4xMDkzNywzMi40Njg3NkE3Ljk5OTU0LDcuOTk5NTQsMCwwLDEsMTYwLDIyNGgtLjAxNTYyYTkuMTc2NzgsOS4xNzY3OCwwLDAsMS01LjI1LTEuOTg0MzhMMTMxLjE0MDYyLDIwMS4zNzVDMTQyLjY4NzUsMjUwLjk1MzEyLDE4Ni45MDYyNSwyODgsMjQwLDI4OHM5Ny4zMTI1LTM3LjA0Njg4LDEwOC44NzUtODYuNjI1bC0yMy41OTM3NSwyMC42NDA2MmE4LjAyNTE2LDguMDI1MTYsMCwwLDEtNS4yNjU2MywxLjk2ODc2SDMyMGE5LjE0NjQxLDkuMTQ2NDEsMCwwLDEtNi4wMTU2Mi0yLjcxODc2QTkuMjY1MDgsOS4yNjUwOCwwLDAsMSwzMTIsMjE2YTkuMDk3LDkuMDk3LDAsMCwxLDIuNzM0MzgtNi4wMTU2MmwzNy4xMDkzNy0zMi40Njg3NmMuMDE1NjMtLjUzMTI0LjE1NjI1LTEsLjE1NjI1LTEuNTE1NjIsMC0xMS4wNDY4OC0yLjA5Mzc1LTIxLjUxNTYyLTUuMDYyNTEtMzEuNTkzNzVsLTIxLjI2NTYyLDIxLjI1YTguMDA0NjcsOC4wMDQ2NywwLDAsMS0xMS4zMjgxMi0xMS4zMTI1bDI2LjQyMTg3LTI2LjQwNjI1YTExMS44MTUxNywxMTEuODE1MTcsMCwwLDAtNDYuMzU5MzctNDkuMjY1NjIsNjMuMDIzMzYsNjMuMDIzMzYsMCwwLDEtMTQuMDYyNSw4Mi42NDA2MkE1NS44Mzg0Niw1NS44Mzg0NiwwLDAsMSwyNTEuNjI1LDI1NC43MzQzOGwtMS40MjE4OC0zNC4yODEyNiwxMi42NzE4OCw4LjYyNWEzLjk2NywzLjk2NywwLDAsMCwyLjI1LjY4NzUsMy45ODA1OSwzLjk4MDU5LDAsMCwwLDMuNDM3NDktNi4wMzEyNGwtOC41MzEyNC0xNC4zMTI1LDE3LjkwNjI1LTMuNzE4NzZhNC4wMDY0Nyw0LjAwNjQ3LDAsMCwwLDAtNy44NDM3NGwtMTcuOTA2MjUtMy43MTg3Niw4LjUzMTI0LTE0LjMxMjVhMy45ODA1OSwzLjk4MDU5LDAsMCwwLTMuNDM3NDktNi4wMzEyNCw0LjcyNiw0LjcyNiwwLDAsMC0yLjI1LjY3MTg3TDI0OC42ODc1LDE4NC4xMjUsMjQ0LDcxLjgyODEyYTQuMDAzODYsNC4wMDM4NiwwLDAsMC04LDBsLTQuNjI1LDExMC44MTI1LTEyLTguMTU2MjRhNC4wMDMsNC4wMDMsMCwwLDAtNS42ODc1MSw1LjM1OTM3bDguNTMxMjYsMTQuMzEyNUwyMDQuMzEyNSwxOTcuODc1YTMuOTk2ODYsMy45OTY4NiwwLDAsMCwwLDcuODI4MTJsMTcuOTA2MjUsMy43MzQzOC04LjUzMTI2LDE0LjI5Njg4YTQuNzI0NjksNC43MjQ2OSwwLDAsMC0uNTYyNDksMi4wNDY4Nyw0LjU5NTQ3LDQuNTk1NDcsMCwwLDAsMS4yNSwyLjkwNjI1LDQuMDEwNTksNC4wMTA1OSwwLDAsMCwyLjc1LDEuMDkzNzUsNC4wOTAxNiw0LjA5MDE2LDAsMCwwLDIuMjUtLjY4NzVsMTAuMzU5MzctNy4wNDY4N0wyMjguMzc1LDI1NC43NjU2MmE1NS44NjQxNCw1NS44NjQxNCwwLDAsMS0yOC43MTg3NS05My40NTMxMiw2My4wMTExOSw2My4wMTExOSwwLDAsMS0xNC4wNDY4OC04Mi42NTYyNSwxMTEuOTMxNTgsMTExLjkzMTU4LDAsMCwwLTQ2LjM3NSw0OS4yNjU2M2wyNi40MjE4NywyNi40MjE4N2E3Ljk5OTE3LDcuOTk5MTcsMCwwLDEtMTEuMzEyNSwxMS4zMTI1bC0yMS4yNjU2My0yMS4yNjU2M0MxMzAuMDkzNzUsMTU0LjQ4NDM4LDEyOCwxNjQuOTUzMTIsMTI4LjAxNTYyLDE3Ni4wMTU2MlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLYWFiYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTQuMTIgODMuNTFMMzE4LjM2IDQuOTNhOTUuOTYyIDk1Ljk2MiAwIDAgMC02MC43MSAwTDIxLjg4IDgzLjUxQTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTMuODd2NDkuMDFsMjY1LjAyLTc5LjUxYzE1LjAzLTQuNSAzMC45Mi00LjUgNDUuOTggMGwyNjUgNzkuNTF2LTQ5LjAxYzAtMTMuNzctOC44MS0yNi0yMS44OC0zMC4zNnptLTI3OS45IDMwLjUyTDAgMTk2LjN2MjI4LjM4YzAgMTUgMTAuNDIgMjcuOTggMjUuMDYgMzEuMjRsMjQyLjEyIDUzLjhhOTUuOTM3IDk1LjkzNyAwIDAgMCA0MS42NSAwbDI0Mi4xMi01My44YzE0LjY0LTMuMjUgMjUuMDYtMTYuMjQgMjUuMDYtMzEuMjRWMTk2LjI5bC0yNzQuMi04Mi4yNmMtOS4wNC0yLjcyLTE4LjU5LTIuNzItMjcuNTkgMHpNMTI4IDIzMC4xMWMwIDMuNjEtMi40MSA2Ljc3LTUuODkgNy43MmwtODAgMjEuODJDMzcuMDIgMjYxLjAzIDMyIDI1Ny4yIDMyIDI1MS45M3YtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsODAtMjEuODJjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTQ0LTM5LjI4YzAgMy42MS0yLjQxIDYuNzctNS44OSA3LjcybC05NiAyNi4xOGMtNS4wOSAxLjM5LTEwLjExLTIuNDQtMTAuMTEtNy43MnYtMTYuNThjMC0zLjYxIDIuNDEtNi43NyA1Ljg5LTcuNzJsOTYtMjYuMThjNS4wOS0xLjM5IDEwLjExIDIuNDQgMTAuMTEgNy43MnYxNi41OHptMTc2IDIyLjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDgwIDIxLjgyYzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTgwLTIxLjgyYTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6bS0xNDQtMzkuMjdjMC01LjI4IDUuMDItOS4xMSAxMC4xMS03LjcybDk2IDI2LjE4YzMuNDguOTUgNS44OSA0LjExIDUuODkgNy43MnYxNi41OGMwIDUuMjgtNS4wMiA5LjExLTEwLjExIDcuNzJsLTk2LTI2LjE4YTcuOTk3IDcuOTk3IDAgMCAxLTUuODktNy43MnYtMTYuNTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhS2V5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiAxNzYuMDAxQzUxMiAyNzMuMjAzIDQzMy4yMDIgMzUyIDMzNiAzNTJjLTExLjIyIDAtMjIuMTktMS4wNjItMzIuODI3LTMuMDY5bC0yNC4wMTIgMjcuMDE0QTIzLjk5OSAyMy45OTkgMCAwIDEgMjYxLjIyMyAzODRIMjI0djQwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNGgtNDB2NDBjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDI0Yy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjR2LTc4LjA1OWMwLTYuMzY1IDIuNTI5LTEyLjQ3IDcuMDI5LTE2Ljk3MWwxNjEuODAyLTE2MS44MDJDMTYzLjEwOCAyMTMuODE0IDE2MCAxOTUuMjcxIDE2MCAxNzYgMTYwIDc4Ljc5OCAyMzguNzk3LjAwMSAzMzUuOTk5IDAgNDMzLjQ4OC0uMDAxIDUxMiA3OC41MTEgNTEyIDE3Ni4wMDF6TTMzNiAxMjhjMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OC00OCAyMS40OS00OCA0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMjggMTgwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS0zMzYgOTZ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0yODggMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtoYW5kYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTUuODEgNjZjLTYuMzctMy41LTE0LjM3LTIuMzMtMTkuMzYgMy4wMmExNS45NzQgMTUuOTc0IDAgMCAwLTEuOTEgMTkuNTJjMTYuNDkgMjYuMTYgMjUuMiA1Ni4zOSAyNS4yIDg3LjQxLS4xOSA1My4yNS0yNi43NyAxMDIuNjktNzEuMjcgMTMyLjQxbC03Ni42MyA1My4zNXYtMjAuMWw0NC4wNS0zNi4wOWMzLjkyLTQuMiA1LTEwLjA5IDIuODEtMTUuMjhMMzEwLjg1IDI3M2MzMy44NC0xOS4yNiA1Ni45NC01NS4yNSA1Ni45NC05Ni45OSAwLTQwLjc5LTIyLjAyLTc2LjEzLTU0LjU5LTk1LjcxbDUuMjItMTEuNDRjMi4zNC01LjUzLjkzLTExLjgzLTMuNTctMTYuMDRMMjU1Ljg2IDBsLTU4Ljk5IDUyLjgxYy00LjUgNC4yMS01LjkgMTAuNTEtMy41NyAxNi4wNGw1LjIyIDExLjQ0Yy0zMi41NyAxOS41OC01NC41OSA1NC45My01NC41OSA5NS43MiAwIDQxLjc1IDIzLjA5IDc3LjczIDU2Ljk0IDk2Ljk5bC03Ljg1IDE3LjI0Yy0yLjE5IDUuMTgtMS4xIDExLjA3IDIuODEgMTUuMjhsNDQuMDUgMzYuMDl2MTkuOWwtNzYuNTktNTMuMzNDMTE5LjAyIDI3OC42MiA5Mi40NCAyMjkuMTkgOTIuMjYgMTc2YzAtMzEuMDggOC43MS02MS4zMSAyNS4yLTg3LjQ3IDMuODctNi4xNiAyLjQtMTMuNzctMi41OS0xOS4wOC01LTUuMzQtMTMuNjgtNi4yLTIwLjAyLTIuN0MxNi4zMiAxMDkuNi0yMi4zIDIwNS4zIDEzLjM2IDI5NS45OWM3LjA3IDE3Ljk5IDE3Ljg5IDM0LjM4IDMwLjQ2IDQ5LjA2bDU1Ljk3IDY1LjM2YzQuODcgNS42OSAxMy4wNCA3LjI0IDE5LjY1IDMuNzJsNzkuMzUtNDIuMjNMMjI4IDM5Mi4yM2wtNDcuMDggMzIuNzhjLTEuNjctLjM3LTMuMjMtMS4wMS01LjAxLTEuMDEtMTMuMjUgMC0yMy45OSAxMC43NC0yMy45OSAyNCAwIDEzLjI1IDEwLjc0IDI0IDIzLjk5IDI0IDEyLjEgMCAyMS42OS05LjExIDIzLjMzLTIwLjc2bDQwLjYzLTI4LjI4djI5Ljk1Yy05LjM5IDUuNTctMTUuOTkgMTUuMzgtMTUuOTkgMjcuMSAwIDE3LjY3IDE0LjMyIDMyIDMxLjk4IDMyczMxLjk4LTE0LjMzIDMxLjk4LTMyYzAtMTEuNzEtNi42MS0yMS41Mi0xNS45OS0yNy4xdi0zMC4xNWw0MC45MSAyOC40OEMzMTQuNDEgNDYyLjg5IDMyNCA0NzIgMzM2LjA5IDQ3MmMxMy4yNSAwIDIzLjk5LTEwLjc1IDIzLjk5LTI0IDAtMTMuMjYtMTAuNzQtMjQtMjMuOTktMjQtMS43OCAwLTMuMzQuNjQtNS4wMSAxLjAxTDI4NCAzOTIuMjNsMjkuMjEtMjAuMzQgNzkuMzUgNDIuMjNjNi42MSAzLjUyIDE0Ljc4IDEuOTcgMTkuNjUtMy43MWw1Mi41MS02MS4zMWMxOC44Ny0yMi4wMiAzNC00Ny41IDQxLjI1LTc1LjU5IDIxLjYyLTgzLjY2LTE2LjQ1LTE2Ny4yNy05MC4xNi0yMDcuNTF6bS05NS45OSAxMTBjMCAyMi4zLTExLjQ5IDQxLjkyLTI4LjgzIDUzLjM4bC01LjY1LTEyLjQxYy04Ljc1LTI0LjUyLTguNzUtNTEuMDQgMC03NS41Nmw3LjgzLTE3LjE4YzE2LjA3IDExLjY1IDI2LjY1IDMwLjQ1IDI2LjY1IDUxLjc3em0tMTI3LjkzIDBjMC0yMS4zMiAxMC41OC00MC4xMiAyNi42Ni01MS43Nmw3LjgzIDE3LjE4YzguNzUgMjQuNTIgOC43NSA1MS4wMyAwIDc1LjU2bC01LjY1IDEyLjQxYy0xNy4zNC0xMS40Ni0yOC44NC0zMS4wOS0yOC44NC01My4zOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0tMzkgMjE5LjlsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy41IDguNS0xMC45IDEyLTE1LjEgNC41ek0zMDQgMzk2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptNjUtMTY4LjFsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMSA3LjMtMTUuNiA0LTE0LjktNC41IDMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy41IDguNS0xMC45IDEyLTE1LjEgNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUtpc3NXaW5rSGVhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUwNCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjEgNDAyLjVjLTgtMjAuOC0zMS41LTMxLjUtNTMuMS0yNS45bC04LjQgMi4yLTIuMy04LjRjLTUuOS0yMS40LTI3LTM2LjUtNDktMzMtMjUuMiA0LTQwLjYgMjguNi0zNCA1Mi42bDIyLjkgODIuNmMxLjUgNS4zIDcgOC41IDEyLjQgNy4xbDgzLTIxLjVjMjQuMS02LjMgMzcuNy0zMS44IDI4LjUtNTUuN3ptLTE3Ny42LTRjLTUuNi0yMC4zLTIuMy00MiA5LTU5LjcgMjkuNy00Ni4zIDk4LjctNDUuNSAxMjcuOCA0LjMgNi40LjEgMTIuNiAxLjQgMTguNiAyLjkgMTAuOS0yNy45IDE3LjEtNTguMiAxNy4xLTkwQzQ5NiAxMTkgMzg1IDggMjQ4IDhTMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4YzM1LjQgMCA2OC45LTcuNSA5OS40LTIwLjktLjMtLjctMjMuOS04NC42LTIzLjktODQuNnpNMTY4IDI0MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyMCAxNTZjMCAxOS4yLTI4LjcgNDEuNS03MS41IDQ0LTguNS44LTEyLjEtMTEuOC0zLjYtMTUuNGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtNi0yLjUtNS43LTEyLjMgMC0xNC44bDE3LTcuMmMxMy01LjUgMjAuOC0xMy41IDIwLjgtMjEuNXMtNy44LTE2LTIwLjgtMjEuNWwtMTctNy4yYy04LjgtMy43LTQuNi0xNi42IDMuNi0xNS40IDQyLjggMi41IDcxLjUgMjQuOCA3MS41IDQ0IDAgMTMtMTMuNCAyNy4zLTM1LjIgMzZDMjc0LjYgMzY4LjcgMjg4IDM4MyAyODggMzk2em0xNi0xNzljLTguMyA3LjQtMjEuNi40LTE5LjgtMTAuOCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTgxIDQwNCAyMDYuMmMxLjcgMTEuMS0xMS4zIDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMzA0IDIxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMzYgMTU2YzAgMTkuMi0yOC43IDQxLjUtNzEuNSA0NC04LjUuOC0xMi4xLTExLjgtMy42LTE1LjRsMTctNy4yYzEzLTUuNSAyMC44LTEzLjUgMjAuOC0yMS41cy03LjgtMTYtMjAuOC0yMS41bC0xNy03LjJjLTYtMi41LTYuMS0xMi4yIDAtMTQuOGwxNy03LjJjMTMtNS41IDIwLjgtMTMuNSAyMC44LTIxLjVzLTcuOC0xNi0yMC44LTIxLjVsLTE3LTcuMmMtOC42LTMuNi00LjgtMTYuNSAzLjYtMTUuNCA0Mi44IDIuNSA3MS41IDI0LjggNzEuNSA0NCAwIDEzLTEzLjQgMjcuMy0zNS4yIDM2QzI5MC42IDM2OC43IDMwNCAzODMgMzA0IDM5NnptMjQtMTU2Yy0xNy43IDAtMzItMTQuMy0zMi0zMnMxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzItMTQuMyAzMi0zMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFLaXdpQmlyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NzUuODEgMjE3Ljk4QzU3Mi42NCAxNTcuNDEgNTE4LjI4IDExMiA0NTcuNjMgMTEyaC05LjM3Yy01Mi44MiAwLTEwNC4yNS0xNi4yNS0xNDcuNzQtNDYuMjQtNDEuOTktMjguOTYtOTYuMDQtNDEuNjItMTUzLjIxLTI4LjdDMTI5LjMgNDEuMTItLjA4IDc4LjI0IDAgMjI0Yy4wNCA3MC45NSAzOC42OCAxMzIuOCA5NS45OSAxNjYuMDFWNDY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzguODQgMCAxNi03LjE2IDE2LTE2di01NC4yNmMxNS4zNiAzLjk2IDMxLjQgNi4yNiA0OCA2LjI2IDUuNDQgMCAxMC42OC0uNzMgMTYtMS4xOFY0NjRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTU5LjQzYzE0LjI0LTUuMDYgMjcuODgtMTEuMzkgNDAuMzQtMTkuNTFDMzQyLjA3IDM1NS4yNSAzOTMuODYgMzM2IDQ0OC40NiAzMzZjMjUuNDggMCAxNi4wMS0uMzEgMjMuMDUtLjc4bDc0LjQxIDEzNi40NGMyLjg2IDUuMjMgOC4zIDguMzQgMTQuMDUgOC4zNCAxLjMxIDAgMi42NC0uMTYgMy45NS0uNSA3LjA5LTEuOCAxMi4wNS04LjE5IDEyLjA1LTE1LjUgMCAwIC4xNC0yNDAuMjQtLjE2LTI0Ni4wMnpNNDYzLjk3IDI0OGMtMTMuMjUgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6bTgwIDE1My4yNWwtMzkuODYtNzMuMDhjMTUuMTItNS44MyAyOC43My0xNC42IDM5Ljg2LTI1Ljk4djk5LjA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhbmRtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwMS42MiA5Mi4xMUwyNjcuMjQgMi4wNGEzMS45NTggMzEuOTU4IDAgMCAwLTIyLjQ3IDBMMTAuMzggOTIuMTFBMTYuMDAxIDE2LjAwMSAwIDAgMCAwIDEwNy4wOVYxNDRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDgwYzguODQgMCAxNi03LjE2IDE2LTE2di0zNi45MWMwLTYuNjctNC4xNC0xMi42NC0xMC4zOC0xNC45OHpNNjQgMTkydjE2MEg0OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhoNDQ4di00OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZWMTkyaC02NHYxNjBoLTk2VjE5MmgtNjR2MTYwaC05NlYxOTJINjR6bTQzMiAyNTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGFuZ3VhZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUyLjEgMjM2LjJjLTMuNS0xMi4xLTcuOC0zMy4yLTcuOC0zMy4yaC0uNXMtNC4zIDIxLjEtNy44IDMzLjJsLTExLjEgMzcuNUgxNjN6TTYxNiA5NkgzMzZ2MzIwaDI4MGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYxMjBjMC0xMy4zLTEwLjctMjQtMjQtMjR6bS0yNCAxMjBjMCA2LjYtNS40IDEyLTEyIDEyaC0xMS40Yy02LjkgMjMuNi0yMS43IDQ3LjQtNDIuNyA2OS45IDguNCA2LjQgMTcuMSAxMi41IDI2LjEgMTggNS41IDMuNCA3LjMgMTAuNSA0LjEgMTYuMmwtNy45IDEzLjljLTMuNCA1LjktMTAuOSA3LjgtMTYuNyA0LjMtMTIuNi03LjgtMjQuNS0xNi4xLTM1LjQtMjQuOS0xMC45IDguNy0yMi43IDE3LjEtMzUuNCAyNC45LTUuOCAzLjUtMTMuMyAxLjYtMTYuNy00LjNsLTcuOS0xMy45Yy0zLjItNS42LTEuNC0xMi44IDQuMi0xNi4yIDkuMy01LjcgMTgtMTEuNyAyNi4xLTE4LTcuOS04LjQtMTQuOS0xNy0yMS0yNS43LTQtNS43LTIuMi0xMy42IDMuNy0xNy4xbDYuNS0zLjkgNy4zLTQuM2M1LjQtMy4yIDEyLjQtMS43IDE2IDMuNCA1IDcgMTAuOCAxNCAxNy40IDIwLjkgMTMuNS0xNC4yIDIzLjgtMjguOSAzMC00My4ySDQxMmMtNi42IDAtMTItNS40LTEyLTEydi0xNmMwLTYuNiA1LjQtMTIgMTItMTJoNjR2LTE2YzAtNi42IDUuNC0xMiAxMi0xMmgxNmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTZoNjRjNi42IDAgMTIgNS40IDEyIDEyek0wIDEyMHYyNzJjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMjgwVjk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHptNTguOSAyMTYuMUwxMTYuNCAxNjdjMS43LTQuOSA2LjItOC4xIDExLjQtOC4xaDMyLjVjNS4xIDAgOS43IDMuMyAxMS40IDguMWw1Ny41IDE2OS4xYzIuNiA3LjgtMy4xIDE1LjktMTEuNCAxNS45aC0yMi45YTEyIDEyIDAgMCAxLTExLjUtOC42bC05LjQtMzEuOWgtNjAuMmwtOS4xIDMxLjhjLTEuNSA1LjEtNi4yIDguNy0xMS41IDguN0g3MC4zYy04LjIgMC0xNC04LjEtMTEuNC0xNS45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcENvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU1LjAzIDI2MS42NWM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDExLjMxLTExLjMxYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMMjUzLjI1IDE5MmwzNS43MS0zNS43MmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC0xMS4zMS0xMS4zMWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtNTguMzQgNTguMzRjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsNTguMzUgNTguMzR6bTk2LjAxLTExLjNsMTEuMzEgMTEuMzFjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGw1OC4zNC01OC4zNGM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzbC01OC4zNC01OC4zNGMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMGwtMTEuMzEgMTEuMzFjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNMMzg2Ljc1IDE5MmwtMzUuNzEgMzUuNzJjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjN6TTYyNCA0MTZIMzgxLjU0Yy0uNzQgMTkuODEtMTQuNzEgMzItMzIuNzQgMzJIMjg4Yy0xOC42OSAwLTMzLjAyLTE3LjQ3LTMyLjc3LTMySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCAzNS4yIDI4LjggNjQgNjQgNjRoNTEyYzM1LjIgMCA2NC0yOC44IDY0LTY0di0xNmMwLTguOC03LjItMTYtMTYtMTZ6TTU3NiA0OGMwLTI2LjQtMjEuNi00OC00OC00OEgxMTJDODUuNiAwIDY0IDIxLjYgNjQgNDh2MzM2aDUxMlY0OHptLTY0IDI3MkgxMjhWNjRoMzg0djI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BIb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIsMjg4SDIwOGExNiwxNiwwLDAsMS0xNi0xNlYyMDhhMTYsMTYsMCwwLDEsMTYtMTZoNjRhMTYsMTYsMCwwLDEsMTYsMTZ2MzcuMTJDMjk5LjExLDIzMi4yNCwzMTUsMjI0LDMzMi44LDIyNEg0NjkuNzRsNi42NS03LjUzQTE2LjUxLDE2LjUxLDAsMCwwLDQ4MCwyMDdhMTYuMzEsMTYuMzEsMCwwLDAtNC43NS0xMC42MUw0MTYsMTQ0VjQ4YTE2LDE2LDAsMCwwLTE2LTE2SDM2OGExNiwxNiwwLDAsMC0xNiwxNlY4Ny4zTDI2My41LDguOTJDMjU4LDQsMjQ3LjQ1LDAsMjQwLjA1LDBzLTE3LjkzLDQtMjMuNDcsOC45Mkw0Ljc4LDE5Ni40MkExNi4xNSwxNi4xNSwwLDAsMCwwLDIwN2ExNi40LDE2LjQsMCwwLDAsMy41NSw5LjM5TDIyLjM0LDIzNy43QTE2LjIyLDE2LjIyLDAsMCwwLDMzLDI0Mi40OCwxNi41MSwxNi41MSwwLDAsMCw0Mi4zNCwyMzlMNjQsMjE5Ljg4VjM4NGEzMiwzMiwwLDAsMCwzMiwzMkgyNzJaTTYyOS4zMyw0NDhINTkyVjI4OGMwLTE3LjY3LTEyLjg5LTMyLTI4LjgtMzJIMzMyLjhjLTE1LjkxLDAtMjguOCwxNC4zMy0yOC44LDMyVjQ0OEgyNjYuNjdBMTAuNjcsMTAuNjcsMCwwLDAsMjU2LDQ1OC42N3YxMC42NkE0Mi44Miw0Mi44MiwwLDAsMCwyOTguNiw1MTJINTk3LjRBNDIuODIsNDIuODIsMCwwLDAsNjQwLDQ2OS4zM1Y0NTguNjdBMTAuNjcsMTAuNjcsMCwwLDAsNjI5LjMzLDQ0OFpNNTQ0LDQ0OEgzNTJWMzA0SDU0NFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXB0b3BNZWRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMiAyMjRoNTZ2NTZhOCA4IDAgMCAwIDggOGg0OGE4IDggMCAwIDAgOC04di01Nmg1NmE4IDggMCAwIDAgOC04di00OGE4IDggMCAwIDAtOC04aC01NnYtNTZhOCA4IDAgMCAwLTgtOGgtNDhhOCA4IDAgMCAwLTggOHY1NmgtNTZhOCA4IDAgMCAwLTggOHY0OGE4IDggMCAwIDAgOCA4ek01NzYgNDhhNDguMTQgNDguMTQgMCAwIDAtNDgtNDhIMTEyYTQ4LjE0IDQ4LjE0IDAgMCAwLTQ4IDQ4djMzNmg1MTJ6bS02NCAyNzJIMTI4VjY0aDM4NHptMTEyIDk2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy0xNy40Ny0zMi43Ny0zMkgxNmExNiAxNiAwIDAgMC0xNiAxNnYxNmE2NC4xOSA2NC4xOSAwIDAgMCA2NCA2NGg1MTJhNjQuMTkgNjQuMTkgMCAwIDAgNjQtNjR2LTE2YTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhcHRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDE2SDM4MS41NGMtLjc0IDE5LjgxLTE0LjcxIDMyLTMyLjc0IDMySDI4OGMtMTguNjkgMC0zMy4wMi0xNy40Ny0zMi43Ny0zMkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djE2YzAgMzUuMiAyOC44IDY0IDY0IDY0aDUxMmMzNS4yIDAgNjQtMjguOCA2NC02NHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2ek01NzYgNDhjMC0yNi40LTIxLjYtNDgtNDgtNDhIMTEyQzg1LjYgMCA2NCAyMS42IDY0IDQ4djMzNmg1MTJWNDh6bS02NCAyNzJIMTI4VjY0aDM4NHYyNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2hCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTI0IDE5OS40YzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMiA3LjQtMTUuOCA0LjEtMTUuMS00LjV6bS0xNjAgMGMzLjMtNDIuMSAzMi4yLTcxLjQgNTYtNzEuNHM1Mi43IDI5LjMgNTYgNzEuNGMuNyA4LjYtMTAuOCAxMS45LTE0LjkgNC41bC05LjUtMTdjLTcuNy0xMy43LTE5LjItMjEuNi0zMS41LTIxLjZzLTIzLjggNy45LTMxLjUgMjEuNmwtOS41IDE3Yy00LjMgNy40LTE1LjggNC0xNS4xLTQuNXpNMzk4LjkgMzA2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTMzLjggMTYxLjdsODAtNDhjMTEuNi02LjkgMjQgNy43IDE1LjQgMThMMzQzLjYgMTgwbDMzLjYgNDAuM2M4LjcgMTAuNC0zLjkgMjQuOC0xNS40IDE4bC04MC00OGMtNy43LTQuNy03LjctMTUuOSAwLTIwLjZ6bS0xNjMtMzBjLTguNi0xMC4zIDMuOC0yNC45IDE1LjQtMThsODAgNDhjNy44IDQuNyA3LjggMTUuOSAwIDIwLjZsLTgwIDQ4Yy0xMS41IDYuOC0yNC03LjYtMTUuNC0xOGwzMy42LTQwLjMtMzMuNi00MC4zek0zOTguOSAzMDZDMzkwIDM3NyAzMjkuNCA0MzIgMjU2IDQzMmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGF1Z2hXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTIwLjEgMTk4LjFjNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFzNTUuOSAxNi45IDU5LjkgNDIuMWMxLjcgMTEuMS0xMS40IDE4LjMtMTkuOCAxMC44bC05LjUtOC41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMjg4IDIxN2MtOC40IDcuNC0yMS42LjMtMTkuOS0xMC45ek0xNjggMTYwYzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnptMjMwLjkgMTQ2QzM5MCAzNzcgMzI5LjQgNDMyIDI1NiA0MzJoLTE2Yy03My40IDAtMTM0LTU1LTE0Mi45LTEyNi0xLjItOS41IDYuMy0xOCAxNS45LTE4aDI3MGM5LjYgMCAxNy4xIDguNCAxNS45IDE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxhdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE1MmMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTg4IDI3MmgtMTZjLTczLjQgMC0xMzQtNTUtMTQyLjktMTI2LTEuMi05LjUgNi4zLTE4IDE1LjktMThoMjcwYzkuNiAwIDE3LjEgOC40IDE1LjkgMTgtOC45IDcxLTY5LjUgMTI2LTE0Mi45IDEyNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMYXllckdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQxIDE0OC4wMmwyMzIuOTQgMTA1LjY3YzYuOCAzLjA5IDE0LjQ5IDMuMDkgMjEuMjkgMGwyMzIuOTQtMTA1LjY3YzE2LjU1LTcuNTEgMTYuNTUtMzIuNTIgMC00MC4wM0wyNjYuNjUgMi4zMWEyNS42MDcgMjUuNjA3IDAgMCAwLTIxLjI5IDBMMTIuNDEgMTA3Ljk4Yy0xNi41NSA3LjUxLTE2LjU1IDMyLjUzIDAgNDAuMDR6bTQ4Ny4xOCA4OC4yOGwtNTguMDktMjYuMzMtMTYxLjY0IDczLjI3Yy03LjU2IDMuNDMtMTUuNTkgNS4xNy0yMy44NiA1LjE3cy0xNi4yOS0xLjc0LTIzLjg2LTUuMTdMNzAuNTEgMjA5Ljk3bC01OC4xIDI2LjMzYy0xNi41NSA3LjUtMTYuNTUgMzIuNSAwIDQwbDIzMi45NCAxMDUuNTljNi44IDMuMDggMTQuNDkgMy4wOCAyMS4yOSAwTDQ5OS41OSAyNzYuM2MxNi41NS03LjUgMTYuNTUtMzIuNSAwLTQwem0wIDEyNy44bC01Ny44Ny0yNi4yMy0xNjEuODYgNzMuMzdjLTcuNTYgMy40My0xNS41OSA1LjE3LTIzLjg2IDUuMTdzLTE2LjI5LTEuNzQtMjMuODYtNS4xN0w3MC4yOSAzMzcuODcgMTIuNDEgMzY0LjFjLTE2LjU1IDcuNS0xNi41NSAzMi41IDAgNDBsMjMyLjk0IDEwNS41OWM2LjggMy4wOCAxNC40OSAzLjA4IDIxLjI5IDBMNDk5LjU5IDQwNC4xYzE2LjU1LTcuNSAxNi41NS0zMi41IDAtNDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVhZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDYuMiA5LjdjLTUuNi0xMi41LTIxLjYtMTMtMjguMy0xLjJDNDg2LjkgNjIuNCA0MzEuNCA5NiAzNjggOTZoLTgwQzE4MiA5NiA5NiAxODIgOTYgMjg4YzAgNyAuOCAxMy43IDEuNSAyMC41QzE2MS4zIDI2Mi44IDI1My40IDIyNCAzODQgMjI0YzguOCAwIDE2IDcuMiAxNiAxNnMtNy4yIDE2LTE2IDE2QzEzMi42IDI1NiAyNiA0MTAuMSAyLjQgNDY4Yy02LjYgMTYuMyAxLjIgMzQuOSAxNy41IDQxLjYgMTYuNCA2LjggMzUtMS4xIDQxLjgtMTcuMyAxLjUtMy42IDIwLjktNDcuOSA3MS45LTkwLjYgMzIuNCA0My45IDk0IDg1LjggMTc0LjkgNzcuMkM0NjUuNSA0NjcuNSA1NzYgMzI2LjcgNTc2IDE1NC4zYzAtNTAuMi0xMC44LTEwMi4yLTI5LjgtMTQ0LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGVtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg5LjAzOCAyMi45NjNDNDY1Ljk0NC0uMTMgNDM0LjY0OC01LjkzIDQxMy45NDcgNi4xMjljLTU4LjkwNiAzNC4zMTItMTgxLjI1LTUzLjA3Ny0zMjEuMDczIDg2Ljc0NlM0MC40NDEgMzU1LjA0MSA2LjEyOSA0MTMuOTQ1Yy0xMi4wNTkgMjAuNzAyLTYuMjYgNTEuOTk5IDE2LjgzMyA3NS4wOTMgMjMuMDk1IDIzLjA5NSA1NC4zOTIgMjguODkxIDc1LjA5NSAxNi44MzIgNTguOTAxLTM0LjMxIDE4MS4yNDYgNTMuMDc5IDMyMS4wNjgtODYuNzQzUzQ3MS41NiAxNTYuOTYgNTA1Ljg3MSA5OC4wNTZjMTIuMDU5LTIwLjcwMiA2LjI2MS01MS45OTktMTYuODMzLTc1LjA5M3pNMjQzLjg4MSA5NS41MjJjLTU4LjE4OSAxNC41NDctMTMzLjgwOCA5MC4xNTUtMTQ4LjM1OCAxNDguMzU4LTEuODE3IDcuMjctOC4zNDIgMTIuMTI0LTE1LjUxMSAxMi4xMjQtMS4yODQgMC0yLjU5LS4xNTYtMy44OTMtLjQ4MS04LjU3Mi0yLjE0NC0xMy43ODQtMTAuODMtMTEuNjQyLTE5LjQwM0M4MS45MDEgMTY2LjQyNyAxNjYuMzE2IDgxLjkzIDIzNi4xMTkgNjQuNDc4YzguNTc1LTIuMTQzIDE3LjI2MSAzLjA2OSAxOS40MDMgMTEuNjQycy0zLjA2OSAxNy4yNTktMTEuNjQxIDE5LjQwMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXNzVGhhbkVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0Ljk4IDIxNC4ybDMwMS40MSAxMTkuODdjMTguMzkgNi4wMyAzOC43MS0yLjU0IDQ1LjM4LTE5LjE1bDEyLjA5LTMwLjA4YzYuNjgtMTYuNjEtMi44Mi0zNC45Ny0yMS4yMS00MWwtMTc1LjQ0LTY4LjA1IDE3NS41Ni02OC4wOWMxOC4yOS02IDI3Ljc0LTI0LjI3IDIxLjEtNDAuNzlsLTEyLjAzLTI5LjkyYy02LjY0LTE2LjUzLTI2Ljg2LTI1LjA2LTQ1LjE1LTE5LjA2TDU0Ljk4IDEzNy44OUM0MS4yMSAxNDIuNDEgMzIgMTU0LjUgMzIgMTY4LjA3djE1Ljk2YzAgMTMuNTYgOS4yMSAyNS42NSAyMi45OCAzMC4xN3pNNDI0IDQwMEgyNGMtMTMuMjUgMC0yNCAxMC43NC0yNCAyNHY0OGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDQwMGMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di00OGMwLTEzLjI2LTEwLjc1LTI0LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxlc3NUaGFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2NS40NiAzNTcuNzRMMTQ3LjA0IDI1NS44OWwyMTguNDctMTAxLjg4YzE2LjAyLTcuNDcgMjIuOTUtMjYuNTEgMTUuNDgtNDIuNTNsLTEzLjUyLTI5QzM2MCA2Ni40NiAzNDAuOTYgNTkuNTMgMzI0Ljk0IDY3TDE4LjQ4IDIwOS45MWEzMi4wMTQgMzIuMDE0IDAgMCAwLTE4LjQ4IDI5djM0LjI0YzAgMTIuNDQgNy4yMSAyMy43NSAxOC40OCAyOWwzMDYuMzEgMTQyLjgzYzE2LjA2IDcuNDkgMzUuMTUuNTQgNDIuNjQtMTUuNTJsMTMuNTYtMjkuMDhjNy40OS0xNi4wNi41NC0zNS4xNS0xNS41My00Mi42NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMZXZlbERvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjU1MyAzOTIuMzMxTDIwOS41ODcgNTA0LjMzNGMtOS40ODUgMTAuMjE0LTI1LjY3NiAxMC4yMjktMzUuMTc0IDBMNzAuNDM4IDM5Mi4zMzFDNTYuMjMyIDM3Ny4wMzEgNjcuMDYyIDM1MiA4OC4wMjUgMzUySDE1MlY4MEg2OC4wMjRhMTEuOTk2IDExLjk5NiAwIDAgMS04LjQ4NS0zLjUxNWwtNTYtNTZDLTQuMDIxIDEyLjkyNiAxLjMzMyAwIDEyLjAyNCAwSDIwOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MzI4aDYzLjk2NmMyMC44NzggMCAzMS44NTEgMjQuOTY5IDE3LjU4NyA0MC4zMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGV2ZWxVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNTUzIDExOS42NjlMMjA5LjU4NyA3LjY2NmMtOS40ODUtMTAuMjE0LTI1LjY3Ni0xMC4yMjktMzUuMTc0IDBMNzAuNDM4IDExOS42NjlDNTYuMjMyIDEzNC45NjkgNjcuMDYyIDE2MCA4OC4wMjUgMTYwSDE1MnYyNzJINjguMDI0YTExLjk5NiAxMS45OTYgMCAwIDAtOC40ODUgMy41MTVsLTU2IDU2Qy00LjAyMSA0OTkuMDc0IDEuMzMzIDUxMiAxMi4wMjQgNTEySDIwOGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTYwaDYzLjk2NmMyMC44NzggMCAzMS44NTEtMjQuOTY5IDE3LjU4Ny00MC4zMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlmZVJpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5LjAzMyA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4em0xNzMuNjk2IDExOS41NTlsLTYzLjM5OSA2My4zOTljLTEwLjk4Ny0xOC41NTktMjYuNjctMzQuMjUyLTQ1LjI1NS00NS4yNTVsNjMuMzk5LTYzLjM5OWEyMTguMzk2IDIxOC4zOTYgMCAwIDEgNDUuMjU1IDQ1LjI1NXpNMjU2IDM1MmMtNTMuMDE5IDAtOTYtNDIuOTgxLTk2LTk2czQyLjk4MS05NiA5Ni05NiA5NiA0Mi45ODEgOTYgOTYtNDIuOTgxIDk2LTk2IDk2ek0xMjcuNTU5IDgyLjMwNGw2My4zOTkgNjMuMzk5Yy0xOC41NTkgMTAuOTg3LTM0LjI1MiAyNi42Ny00NS4yNTUgNDUuMjU1bC02My4zOTktNjMuMzk5YTIxOC4zNzIgMjE4LjM3MiAwIDAgMSA0NS4yNTUtNDUuMjU1ek04Mi4zMDQgMzg0LjQ0MWw2My4zOTktNjMuMzk5YzEwLjk4NyAxOC41NTkgMjYuNjcgMzQuMjUyIDQ1LjI1NSA0NS4yNTVsLTYzLjM5OSA2My4zOTlhMjE4LjM5NiAyMTguMzk2IDAgMCAxLTQ1LjI1NS00NS4yNTV6bTMwMi4xMzcgNDUuMjU1bC02My4zOTktNjMuMzk5YzE4LjU1OS0xMC45ODcgMzQuMjUyLTI2LjY3IDQ1LjI1NS00NS4yNTVsNjMuMzk5IDYzLjM5OWEyMTguNDAzIDIxOC40MDMgMCAwIDEtNDUuMjU1IDQ1LjI1NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaWdodGJ1bGIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYuMDYgNDU0LjM1Yy4wMSA2LjI5IDEuODcgMTIuNDUgNS4zNiAxNy42OWwxNy4wOSAyNS42OWEzMS45OSAzMS45OSAwIDAgMCAyNi42NCAxNC4yOGg2MS43MWEzMS45OSAzMS45OSAwIDAgMCAyNi42NC0xNC4yOGwxNy4wOS0yNS42OWEzMS45ODkgMzEuOTg5IDAgMCAwIDUuMzYtMTcuNjlsLjA0LTM4LjM1SDk2LjAxbC4wNSAzOC4zNXpNMCAxNzZjMCA0NC4zNyAxNi40NSA4NC44NSA0My41NiAxMTUuNzggMTYuNTIgMTguODUgNDIuMzYgNTguMjMgNTIuMjEgOTEuNDUuMDQuMjYuMDcuNTIuMTEuNzhoMTYwLjI0Yy4wNC0uMjYuMDctLjUxLjExLS43OCA5Ljg1LTMzLjIyIDM1LjY5LTcyLjYgNTIuMjEtOTEuNDVDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjYxIDI3Mi45MS0uMyAxNzUuNDUgMCA3My40NC4zMSAwIDgyLjk3IDAgMTc2em0xNzYtODBjLTQ0LjExIDAtODAgMzUuODktODAgODAgMCA4Ljg0LTcuMTYgMTYtMTYgMTZzLTE2LTcuMTYtMTYtMTZjMC02MS43NiA1MC4yNC0xMTIgMTEyLTExMiA4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNi42MTIgMTg1LjM5MWM1OS43NDcgNTkuODA5IDU4LjkyNyAxNTUuNjk4LjM2IDIxNC41OS0uMTEuMTItLjI0LjI1LS4zNi4zN2wtNjcuMiA2Ny4yYy01OS4yNyA1OS4yNy0xNTUuNjk5IDU5LjI2Mi0yMTQuOTYgMC01OS4yNy01OS4yNi01OS4yNy0xNTUuNyAwLTIxNC45NmwzNy4xMDYtMzcuMTA2YzkuODQtOS44NCAyNi43ODYtMy4zIDI3LjI5NCAxMC42MDYuNjQ4IDE3LjcyMiAzLjgyNiAzNS41MjcgOS42OSA1Mi43MjEgMS45ODYgNS44MjIuNTY3IDEyLjI2Mi0zLjc4MyAxNi42MTJsLTEzLjA4NyAxMy4wODdjLTI4LjAyNiAyOC4wMjYtMjguOTA1IDczLjY2LTEuMTU1IDEwMS45NiAyOC4wMjQgMjguNTc5IDc0LjA4NiAyOC43NDkgMTAyLjMyNS41MWw2Ny4yLTY3LjE5YzI4LjE5MS0yOC4xOTEgMjguMDczLTczLjc1NyAwLTEwMS44My0zLjcwMS0zLjY5NC03LjQyOS02LjU2NC0xMC4zNDEtOC41NjlhMTYuMDM3IDE2LjAzNyAwIDAgMS02Ljk0Ny0xMi42MDZjLS4zOTYtMTAuNTY3IDMuMzQ4LTIxLjQ1NiAxMS42OTgtMjkuODA2bDIxLjA1NC0yMS4wNTVjNS41MjEtNS41MjEgMTQuMTgyLTYuMTk5IDIwLjU4NC0xLjczMWExNTIuNDgyIDE1Mi40ODIgMCAwIDEgMjAuNTIyIDE3LjE5N3pNNDY3LjU0NyA0NC40NDljLTU5LjI2MS01OS4yNjItMTU1LjY5LTU5LjI3LTIxNC45NiAwbC02Ny4yIDY3LjJjLS4xMi4xMi0uMjUuMjUtLjM2LjM3LTU4LjU2NiA1OC44OTItNTkuMzg3IDE1NC43ODEuMzYgMjE0LjU5YTE1Mi40NTQgMTUyLjQ1NCAwIDAgMCAyMC41MjEgMTcuMTk2YzYuNDAyIDQuNDY4IDE1LjA2NCAzLjc4OSAyMC41ODQtMS43MzFsMjEuMDU0LTIxLjA1NWM4LjM1LTguMzUgMTIuMDk0LTE5LjIzOSAxMS42OTgtMjkuODA2YTE2LjAzNyAxNi4wMzcgMCAwIDAtNi45NDctMTIuNjA2Yy0yLjkxMi0yLjAwNS02LjY0LTQuODc1LTEwLjM0MS04LjU2OS0yOC4wNzMtMjguMDczLTI4LjE5MS03My42MzkgMC0xMDEuODNsNjcuMi02Ny4xOWMyOC4yMzktMjguMjM5IDc0LjMtMjguMDY5IDEwMi4zMjUuNTEgMjcuNzUgMjguMyAyNi44NzIgNzMuOTM0LTEuMTU1IDEwMS45NmwtMTMuMDg3IDEzLjA4N2MtNC4zNSA0LjM1LTUuNzY5IDEwLjc5LTMuNzgzIDE2LjYxMiA1Ljg2NCAxNy4xOTQgOS4wNDIgMzQuOTk5IDkuNjkgNTIuNzIxLjUwOSAxMy45MDYgMTcuNDU0IDIwLjQ0NiAyNy4yOTQgMTAuNjA2bDM3LjEwNi0zNy4xMDZjNTkuMjcxLTU5LjI1OSA1OS4yNzEtMTU1LjY5OS4wMDEtMjE0Ljk1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMaXJhU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzEuOTk0IDI1NmgtNDguMDE5QzMxNy42NCAyNTYgMzEyIDI2MC45MTIgMzEyIDI2Ny4yNDYgMzEyIDM2OCAyMzAuMTc5IDQxNiAxNDQgNDE2VjI1Ni43ODFsMTM0LjYwMy0yOS45MTJBMTIgMTIgMCAwIDAgMjg4IDIxNS4xNTV2LTQwLjk3NmMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDE5MS4yMTlWMTYwLjc4bDEzNC42MDMtMjkuOTEyQTEyIDEyIDAgMCAwIDI4OCAxMTkuMTU0Vjc4LjE3OWMwLTcuNjc3LTcuMTA5LTEzLjM4LTE0LjYwMy0xMS43MTRMMTQ0IDk1LjIxOVY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDc2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjY4Ljk5N0w5LjM5NyAxMjUuMTMxQTEyIDEyIDAgMCAwIDAgMTM2Ljg0NXY0MC45NzZjMCA3LjY3NyA3LjEwOSAxMy4zOCAxNC42MDMgMTEuNzE0TDY0IDE3OC41NTh2MzAuNDM5TDkuMzk3IDIyMS4xMzFBMTIgMTIgMCAwIDAgMCAyMzIuODQ1djQwLjk3NmMwIDcuNjc3IDcuMTA5IDEzLjM4IDE0LjYwMyAxMS43MTRMNjQgMjc0LjU1OFY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3OS41ODNjMTM0LjA5MSAwIDIyMy4yNTUtNzcuODM0IDIyOC40MDgtMjExLjU5Mi4yNjEtNi43ODItNS4yMTEtMTIuNDA4LTExLjk5Ny0xMi40MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNDgwSDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2MzUyYzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTEyOCAxMjBjLTIyLjA5MSAwLTQwIDE3LjkwOS00MCA0MHMxNy45MDkgNDAgNDAgNDAgNDAtMTcuOTA5IDQwLTQwLTE3LjkwOS00MC00MC00MHptMCA5NmMtMjIuMDkxIDAtNDAgMTcuOTA5LTQwIDQwczE3LjkwOSA0MCA0MCA0MCA0MC0xNy45MDkgNDAtNDAtMTcuOTA5LTQwLTQwLTQwem0wIDk2Yy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6bTI4OC0xMzZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTAgOTZ2LTMyYzAtNi42MjctNS4zNzMtMTItMTItMTJIMjA0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjMyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjAwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdE9sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxLjc3IDQwMWwxNy41LTIwLjE1YTE5LjkyIDE5LjkyIDAgMCAwIDUuMDctMTQuMTl2LTMuMzFDODQuMzQgMzU2IDgwLjUgMzUyIDczIDM1MkgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDhoMjIuODNhMTU3LjQxIDE1Ny40MSAwIDAgMC0xMSAxMi4zMWwtNS42MSA3Yy00IDUuMDctNS4yNSAxMC4xMy0yLjggMTQuODhsMS4wNSAxLjkzYzMgNS43NiA2LjI5IDcuODggMTIuMjUgNy44OGg0LjczYzEwLjMzIDAgMTUuOTQgMi40NCAxNS45NCA5LjA5IDAgNC43Mi00LjIgOC4yMi0xNC4zNiA4LjIyYTQxLjU0IDQxLjU0IDAgMCAxLTE1LjQ3LTMuMTJjLTYuNDktMy44OC0xMS43NC0zLjUtMTUuNiAzLjEybC01LjU5IDkuMzFjLTMuNzIgNi4xMy0zLjE5IDExLjcyIDIuNjMgMTUuOTQgNy43MSA0LjY5IDIwLjM4IDkuNDQgMzcgOS40NCAzNC4xNiAwIDQ4LjUtMjIuNzUgNDguNS00NC4xMi0uMDMtMTQuMzgtOS4xMi0yOS43Ni0yOC43My0zNC44OHpNNDk2IDIyNEgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0xNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAzMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg2NGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDY0VjQwYTggOCAwIDAgMC04LThIMzJhOCA4IDAgMCAwLTcuMTQgNC40MmwtOCAxNkE4IDggMCAwIDAgMjQgNjRoOHY2NEgxNmE4IDggMCAwIDAtOCA4djE2YTggOCAwIDAgMCA4IDh6bS0zLjkxIDE2MEg4MGE4IDggMCAwIDAgOC04di0xNmE4IDggMCAwIDAtOC04SDQxLjMyYzMuMjktMTAuMjkgNDguMzQtMTguNjggNDguMzQtNTYuNDQgMC0yOS4wNi0yNS0zOS41Ni00NC40Ny0zOS41Ni0yMS4zNiAwLTMzLjggMTAtNDAuNDYgMTguNzUtNC4zNyA1LjU5LTMgMTAuODQgMi44IDE1LjM3bDguNTggNi44OGM1LjYxIDQuNTYgMTEgMi40NyAxNi4xMi0yLjQ0YTEzLjQ0IDEzLjQ0IDAgMCAxIDkuNDYtMy44NGMzLjMzIDAgOS4yOCAxLjU2IDkuMjggOC43NUM1MSAyNDguMTkgMCAyNTcuMzEgMCAzMDQuNTl2NEMwIDMxNiA1LjA4IDMyMCAxMi4wOSAzMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdFVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4IDQ4YTQ4IDQ4IDAgMSAwIDQ4IDQ4IDQ4IDQ4IDAgMCAwLTQ4LTQ4em0wIDE2MGE0OCA0OCAwIDEgMCA0OCA0OCA0OCA0OCAwIDAgMC00OC00OHptMCAxNjBhNDggNDggMCAxIDAgNDggNDggNDggNDggMCAwIDAtNDgtNDh6bTQ0OCAxNkgxNzZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzIwYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMC0zMjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNlY4MGExNiAxNiAwIDAgMC0xNi0xNnptMCAxNjBIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04MCAzNjhIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2NjRhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTY0YTE2IDE2IDAgMCAwLTE2LTE2em0wLTMyMEgxNkExNiAxNiAwIDAgMCAwIDY0djY0YTE2IDE2IDAgMCAwIDE2IDE2aDY0YTE2IDE2IDAgMCAwIDE2LTE2VjY0YTE2IDE2IDAgMCAwLTE2LTE2em0wIDE2MEgxNmExNiAxNiAwIDAgMC0xNiAxNnY2NGExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtNjRhMTYgMTYgMCAwIDAtMTYtMTZ6bTQxNiAxNzZIMTc2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyMGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bTAtMzIwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6bTAgMTYwSDE3NmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2F0aW9uQXJyb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ0LjUyIDMuNTJMMjguNzQgMTk1LjQyYy00Ny45NyAyMi4zOS0zMS45OCA5Mi43NSAxOS4xOSA5Mi43NWgxNzUuOTF2MTc1LjkxYzAgNTEuMTcgNzAuMzYgNjcuMTcgOTIuNzUgMTkuMTlsMTkxLjktNDE1Ljc4YzE1Ljk5LTM4LjM5LTI1LjU5LTc5Ljk3LTYzLjk3LTYzLjk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2tPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQyMy41IDBDMzM5LjUuMyAyNzIgNjkuNSAyNzIgMTUzLjVWMjI0SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxOTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjI3MmMwLTI2LjUtMjEuNS00OC00OC00OGgtNDh2LTcxLjFjMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2ODBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTgwQzU3NiA2OCA1MDcuNS0uMyA0MjMuNSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDIyNGgtMjR2LTcyQzM3NiA2OC4yIDMwNy44IDAgMjI0IDBTNzIgNjguMiA3MiAxNTJ2NzJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE5MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMjcyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMTA0IDBIMTUydi03MmMwLTM5LjcgMzIuMy03MiA3Mi03MnM3MiAzMi4zIDcyIDcydjcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYUxvbmdBcnJvd0FsdERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDM0NS45NDFWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNTZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MzAxLjk0MUg0MS45NDFjLTIxLjM4MiAwLTMyLjA5IDI1Ljg1MS0xNi45NzEgNDAuOTcxbDg2LjA1OSA4Ni4wNTljOS4zNzMgOS4zNzMgMjQuNTY5IDkuMzczIDMzLjk0MSAwbDg2LjA1OS04Ni4wNTljMTUuMTE5LTE1LjExOSA0LjQxMS00MC45NzEtMTYuOTcxLTQwLjk3MUgxNjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzQuMDU5IDI5Nkg0MzZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNTZjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMzQuMDU5di00Ni4wNTljMC0yMS4zODItMjUuODUxLTMyLjA5LTQwLjk3MS0xNi45NzFMNy4wMjkgMjM5LjAyOWMtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDg2LjA1OSA4Ni4wNTljMTUuMTE5IDE1LjExOSA0MC45NzEgNC40MTEgNDAuOTcxLTE2Ljk3MVYyOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEzLjk0MSAyMTZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgzMDEuOTQxdjQ2LjA1OWMwIDIxLjM4MiAyNS44NTEgMzIuMDkgNDAuOTcxIDE2Ljk3MWw4Ni4wNTktODYuMDU5YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MWwtODYuMDU5LTg2LjA1OWMtMTUuMTE5LTE1LjExOS00MC45NzEtNC40MTEtNDAuOTcxIDE2Ljk3MVYyMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG9uZ0Fycm93QWx0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNODggMTY2LjA1OVY0NjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyVjE2Ni4wNTloNDYuMDU5YzIxLjM4MiAwIDMyLjA5LTI1Ljg1MSAxNi45NzEtNDAuOTcxbC04Ni4wNTktODYuMDU5Yy05LjM3My05LjM3My0yNC41NjktOS4zNzMtMzMuOTQxIDBsLTg2LjA1OSA4Ni4wNTljLTE1LjExOSAxNS4xMTktNC40MTEgNDAuOTcxIDE2Ljk3MSA0MC45NzFIODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTG93VmlzaW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OS4zNDQgMjMxLjYzMUM1MTIuOTYgMTM1Ljk0OSA0MDcuODEgNzIgMjg4IDcyYy0yOC40NjggMC01Ni4xMDIgMy42MTktODIuNDUxIDEwLjQwOUwxNTIuNzc4IDEwLjI0Yy03LjYwMS0xMC44NTgtMjIuNTY0LTEzLjUtMzMuNDIzLTUuOWwtMTMuMTE0IDkuMTc4Yy0xMC44NiA3LjYwMS0xMy41MDIgMjIuNTY2LTUuOSAzMy40MjZsNDMuMTMxIDU4LjM5NUM4OS40NDkgMTMxLjczIDQwLjIyOCAxNzQuNjgzIDYuNjgyIDIzMS41ODFjLS4wMS4wMTctLjAyMy4wMzMtLjAzNC4wNS04Ljc2NSAxNC44NzUtOC45NjQgMzMuNTI4IDAgNDguNzM5IDM4LjUgNjUuMzMyIDk5Ljc0MiAxMTUuODYyIDE3Mi44NTkgMTQxLjM0OUw1NS4zMTYgMjQ0LjMwMkEyNzIuMTk0IDI3Mi4xOTQgMCAwIDEgODMuNjEgMjA4LjM5bDExOS40IDE3MC41OGguMDFsNDAuNjMgNTguMDRhMzMwLjA1NSAzMzAuMDU1IDAgMCAwIDc4Ljk0IDEuMTdsLTE4OS45OC0yNzEuNGEyNzcuNjI4IDI3Ny42MjggMCAwIDEgMzguNzc3LTIxLjU2M2wyNTEuODM2IDM1Ni41NDRjNy42MDEgMTAuODU4IDIyLjU2NCAxMy40OTkgMzMuNDIzIDUuOWwxMy4xMTQtOS4xNzhjMTAuODYtNy42MDEgMTMuNTAyLTIyLjU2NyA1LjktMzMuNDI2bC00My4xMi01OC4zNzctLjAwNy0uMDA5YzU3LjE2MS0yNy45NzggMTA0LjgzNS03Mi4wNCAxMzYuODEtMTI2LjMwMWE0Ny45MzggNDcuOTM4IDAgMCAwIC4wMDEtNDguNzM5ek0zOTAuMDI2IDM0NS45NGwtMTkuMDY2LTI3LjIzYzI0LjY4Mi0zMi41NjcgMjcuNzExLTc2LjM1MyA4LjgtMTExLjY4di4wM2MwIDIzLjY1LTE5LjE3IDQyLjgyLTQyLjgyIDQyLjgyLTIzLjgyOCAwLTQyLjgyLTE5LjM0OS00Mi44Mi00Mi44MiAwLTIzLjY1IDE5LjE3LTQyLjgyIDQyLjgyLTQyLjgyaC4wM2MtMjQuNzUtMTMuMjQ5LTUzLjUyMi0xNS42NDMtNzkuNTEtNy42OGwtMTkuMDY4LTI3LjIzN0MyNTMuNzU4IDEyMy4zMDYgMjcwLjQ4OCAxMjAgMjg4IDEyMGM3NS4xNjIgMCAxMzYgNjAuODI2IDEzNiAxMzYgMCAzNC41MDQtMTIuODMzIDY1Ljk3NS0zMy45NzQgODkuOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVnZ2FnZUNhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyMGgzMlY5NmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTYwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJ6bTM1Mi0zMlYxMjhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJ2MjI0aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ6bTQ4IDk2SDEyOFYxNmMwLTguODQtNy4xNi0xNi0xNi0xNkgxNkM3LjE2IDAgMCA3LjE2IDAgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2MzY4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDgyLjk0Yy0xLjc5IDUuMDMtMi45NCAxMC4zNi0yLjk0IDE2IDAgMjYuNTEgMjEuNDkgNDggNDggNDhzNDgtMjEuNDkgNDgtNDhjMC01LjY0LTEuMTUtMTAuOTctMi45NC0xNmgxOTcuODhjLTEuNzkgNS4wMy0yLjk0IDEwLjM2LTIuOTQgMTYgMCAyNi41MSAyMS40OSA0OCA0OCA0OHM0OC0yMS40OSA0OC00OGMwLTUuNjQtMS4xNS0xMC45Ny0yLjk0LTE2SDYyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTQ4MCA5NlY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC05NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyNzJoMTkyVjk2em0tNDggMGgtOTZWNDhoOTZ2NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTHVuZ3NWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDQsMTUwLjY4VjE2QTE2LDE2LDAsMCwwLDMyOCwwSDMxMmExNiwxNiwwLDAsMC0xNiwxNlYxNTAuNjhhNDYuNDUsNDYuNDUsMCwwLDEsNDgsMFpNMTk1LjU0LDQ0NC40NmE0OC4wNiw0OC4wNiwwLDAsMSwwLTY3Ljg4bDguNTgtOC41OEgxOTJhNDgsNDgsMCwwLDEsMC05NmgxMi4xMmwtOC41OC04LjU3YTQ4LDQ4LDAsMCwxLDYwLjQ2LTc0VjE2MS43NUMyNTYsMTI1LjM4LDIyNC42Miw5NiwxODYsOTZjLTQ0LDAtNTgsMjguNS04MC4xMiw2My4xM2E4MTkuNTIsODE5LjUyLDAsMCwwLTEwMiwyMzFBMTEzLjE2LDExMy4xNiwwLDAsMCwwLDQxOS43NUMwLDQ4MSw2Mi41LDUyNS4yNiwxMjUuMjUsNTA4LjM4bDU5LjUtMTUuODdhOTguNTEsOTguNTEsMCwwLDAsNTIuNS0zNC43NSw0Ni40OSw0Ni40OSwwLDAsMS00MS43MS0xMy4zWm0yMjYuMjktMjIuNjNhMTYsMTYsMCwwLDAsMC0yMi42MmwtOC41OC04LjU4QzM5My4wOSwzNzAuNDcsNDA3LjM3LDMzNiw0MzUuODgsMzM2SDQ0OGExNiwxNiwwLDAsMCwwLTMySDQzNS44OGMtMjguNTEsMC00Mi43OS0zNC40Ny0yMi42My01NC42Mmw4LjU4LTguNThhMTYsMTYsMCwwLDAtMjIuNjMtMjIuNjNsLTguNTcsOC41OEMzNzAuNDcsMjQ2LjkxLDMzNiwyMzIuNjMsMzM2LDIwNC4xMlYxOTJhMTYsMTYsMCwwLDAtMzIsMHYxMi4xMmMwLDI4LjUxLTM0LjQ3LDQyLjc5LTU0LjYzLDIyLjYzbC04LjU3LTguNThhMTYsMTYsMCwwLDAtMjIuNjMsMjIuNjNsOC41OCw4LjU4YzIwLjE2LDIwLjE1LDUuODgsNTQuNjItMjIuNjMsNTQuNjJIMTkyYTE2LDE2LDAsMCwwLDAsMzJoMTIuMTJjMjguNTEsMCw0Mi43OSwzNC40NywyMi42Myw1NC42M2wtOC41OCw4LjU4YTE2LDE2LDAsMSwwLDIyLjYzLDIyLjYybDguNTctOC41N0MyNjkuNTMsMzkzLjEsMzA0LDQwNy4zOCwzMDQsNDM1Ljg4VjQ0OGExNiwxNiwwLDAsMCwzMiwwVjQzNS44OGMwLTI4LjUsMzQuNDctNDIuNzgsNTQuNjMtMjIuNjJsOC41Nyw4LjU3YTE2LDE2LDAsMCwwLDIyLjYzLDBaTTI4OCwzMDRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMjg4LDMwNFptNjQsNjRhMTYsMTYsMCwxLDEsMTYtMTZBMTYsMTYsMCwwLDEsMzUyLDM2OFptMjg0LjEyLDIyLjEzYTgxOS41Miw4MTkuNTIsMCwwLDAtMTAyLTIzMUM1MTIsMTI0LjUsNDk4LDk2LDQ1NCw5NmMtMzguNjIsMC03MCwyOS4zOC03MCw2NS43NXYyNy43MmE0OCw0OCwwLDAsMSw2MC40Niw3NEw0MzUuODgsMjcySDQ0OGE0OCw0OCwwLDAsMSwwLDk2SDQzNS44OGw4LjU4LDguNThhNDcuNyw0Ny43LDAsMCwxLTQxLjcxLDgxLjE4LDk4LjUxLDk4LjUxLDAsMCwwLDUyLjUsMzQuNzVsNTkuNSwxNS44N0M1NzcuNSw1MjUuMjYsNjQwLDQ4MSw2NDAsNDE5Ljc1QTExMy4xNiwxMTMuMTYsMCwwLDAsNjM2LjEyLDM5MC4xM1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFMdW5ncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzYuMTEgMzkwLjE1QzYxNC40NCAzMDguODUgNTgwLjA3IDIzMSA1MzQuMSAxNTkuMTMgNTExLjk4IDEyNC41NiA0OTguMDMgOTYgNDU0LjA1IDk2IDQxNS4zNiA5NiAzODQgMTI1LjQyIDM4NCAxNjEuNzF2NjAuMTFsLTMyLjg4LTIxLjkyYTE1Ljk5NiAxNS45OTYgMCAwIDEtNy4xMi0xMy4zMVYxNmMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE3MC41OWMwIDUuMzUtMi42NyAxMC4zNC03LjEyIDEzLjMxTDI1NiAyMjEuODJ2LTYwLjExQzI1NiAxMjUuNDIgMjI0LjY0IDk2IDE4NS45NSA5NmMtNDMuOTggMC01Ny45MyAyOC41Ni04MC4wNSA2My4xM0M1OS45MyAyMzEgMjUuNTYgMzA4Ljg1IDMuODkgMzkwLjE1IDEuMyAzOTkuODQgMCA0MDkuNzkgMCA0MTkuNzhjMCA2MS4yMyA2Mi40OCAxMDUuNDQgMTI1LjI0IDg4LjYybDU5LjUtMTUuOTVjNDIuMTgtMTEuMyA3MS4yNi00Ny40NyA3MS4yNi04OC42MnYtODcuNDlsLTg1Ljg0IDU3LjIzYTcuOTkyIDcuOTkyIDAgMCAxLTExLjA5LTIuMjJsLTguODgtMTMuMzFhNy45OTIgNy45OTIgMCAwIDEgMi4yMi0xMS4wOUwzMjAgMjM1LjIzbDE2Ny41OSAxMTEuNzJhNy45OTQgNy45OTQgMCAwIDEgMi4yMiAxMS4wOWwtOC44OCAxMy4zMWE3Ljk5NCA3Ljk5NCAwIDAgMS0xMS4wOSAyLjIyTDM4NCAzMTYuMzR2ODcuNDljMCA0MS4xNSAyOS4wOCA3Ny4zMSA3MS4yNiA4OC42Mmw1OS41IDE1Ljk1QzU3Ny41MiA1MjUuMjIgNjQwIDQ4MS4wMSA2NDAgNDE5Ljc4YzAtOS45OS0xLjMtMTkuOTQtMy44OS0yOS42M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYWdpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgOTZsMTYtMzIgMzItMTYtMzItMTYtMTYtMzItMTYgMzItMzIgMTYgMzIgMTYgMTYgMzJ6TTgwIDE2MGwyNi42Ni01My4zM0wxNjAgODBsLTUzLjM0LTI2LjY3TDgwIDAgNTMuMzQgNTMuMzMgMCA4MGw1My4zNCAyNi42N0w4MCAxNjB6bTM1MiAxMjhsLTI2LjY2IDUzLjMzTDM1MiAzNjhsNTMuMzQgMjYuNjdMNDMyIDQ0OGwyNi42Ni01My4zM0w1MTIgMzY4bC01My4zNC0yNi42N0w0MzIgMjg4em03MC42Mi0xOTMuNzdMNDE3Ljc3IDkuMzhDNDExLjUzIDMuMTIgNDAzLjM0IDAgMzk1LjE1IDBjLTguMTkgMC0xNi4zOCAzLjEyLTIyLjYzIDkuMzhMOS4zOCAzNzIuNTJjLTEyLjUgMTIuNS0xMi41IDMyLjc2IDAgNDUuMjVsODQuODUgODQuODVjNi4yNSA2LjI1IDE0LjQ0IDkuMzcgMjIuNjIgOS4zNyA4LjE5IDAgMTYuMzgtMy4xMiAyMi42My05LjM3bDM2My4xNC0zNjMuMTVjMTIuNS0xMi40OCAxMi41LTMyLjc1IDAtNDUuMjR6TTM1OS40NSAyMDMuNDZsLTUwLjkxLTUwLjkxIDg2LjYtODYuNiA1MC45MSA1MC45MS04Ni42IDg2LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFnbmV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2NC4wNyAxNDguMUgxMmExMiAxMiAwIDAgMS0xMi0xMnYtODBhMzYgMzYgMCAwIDEgMzYtMzZoMTA0YTM2IDM2IDAgMCAxIDM2IDM2djgwYTExLjg5IDExLjg5IDAgMCAxLTExLjkzIDEyem0zNDcuOTMtMTJWNTZhMzYgMzYgMCAwIDAtMzYtMzZIMzcyYTM2IDM2IDAgMCAwLTM2IDM2djgwYTEyIDEyIDAgMCAwIDEyIDEyaDE1MmExMS44OSAxMS44OSAwIDAgMCAxMi0xMS45em0tMTY0IDQ0YTEyIDEyIDAgMCAwLTEyIDEydjUyYzAgMTI4LjEtMTYwIDEyNy45LTE2MCAwdi01MmExMiAxMiAwIDAgMC0xMi0xMkgxMi4xYTEyIDEyIDAgMCAwLTEyIDEyLjFjLjEgMjEuNC42IDQwLjMgMCA1My4zIDAgMTUwLjYgMTM2LjE3IDI0Ni42IDI1Ni43NSAyNDYuNnMyNTUtOTYgMjU1LTI0Ni43Yy0uNi0xMi44LS4yLTMzIDAtNTMuMmExMiAxMiAwIDAgMC0xMi0xMi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1haWxCdWxrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2MCA0NDhjLTI1LjYgMC01MS4yLTIyLjQtNjQtMzItNjQtNDQuOC04My4yLTYwLjgtOTYtNzAuNFY0ODBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyNTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNDUuNmMtMTIuOCA5LjYtMzIgMjUuNi05NiA3MC40LTEyLjggOS42LTM4LjQgMzItNjQgMzJ6bTEyOC0xOTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTZjMjUuNiAxOS4yIDIyLjQgMTkuMiAxMTUuMiA4Ni40IDkuNiA2LjQgMjguOCAyNS42IDQ0LjggMjUuNnMzNS4yLTE5LjIgNDQuOC0yMi40YzkyLjgtNjcuMiA4OS42LTY3LjIgMTE1LjItODYuNFYyODhjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptMjU2LTk2SDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmg5NmMzMy4yMSAwIDYwLjU5IDI1LjQyIDYzLjcxIDU3LjgybC4yOS0uMjJWNDE2aDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjE5MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMzIgMTI4aC02NHYtNjRoNjR2NjR6bS0zNTItOTZjMC0zNS4yOSAyOC43MS02NCA2NC02NGgyMjRWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkg5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE5Mmg5NnYtMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05NiAwYzM1LjM0NiAwIDY0IDI4LjY1NCA2NCA2NHMtMjguNjU0IDY0LTY0IDY0LTY0LTI4LjY1NC02NC02NFM2MC42NTQgMCA5NiAwbTQ4IDE0NGgtMTEuMzZjLTIyLjcxMSAxMC40NDMtNDkuNTkgMTAuODk0LTczLjI4IDBINDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2MTM2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNnYxMzZjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDY0YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYzNTJoMTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjE5MmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6bTAgMTY4Yy0yMy4yIDAtNDItMTguOC00Mi00MnMxOC44LTQyIDQyLTQyIDQyIDE4LjggNDIgNDItMTguOCA0Mi00MiA0MnpNMjAuMTIgMjE1Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAyNDUuNjZ2MjUwLjMyYzAgMTEuMzIgMTEuNDMgMTkuMDYgMjEuOTQgMTQuODZMMTYwIDQ0OFYyMTQuOTJjLTguODQtMTUuOTgtMTYuMDctMzEuNTQtMjEuMjUtNDYuNDJMMjAuMTIgMjE1Ljk1ek0yODggMzU5LjY3Yy0xNC4wNyAwLTI3LjM4LTYuMTgtMzYuNTEtMTYuOTYtMTkuNjYtMjMuMi00MC41Ny00OS42Mi01OS40OS03Ni43MnYxODJsMTkyIDY0VjI2NmMtMTguOTIgMjcuMDktMzkuODIgNTMuNTItNTkuNDkgNzYuNzItOS4xMyAxMC43Ny0yMi40NCAxNi45NS0zNi41MSAxNi45NXptMjY2LjA2LTE5OC41MUw0MTYgMjI0djI4OGwxMzkuODgtNTUuOTVBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgNDI2LjM0VjE3Ni4wMmMwLTExLjMyLTExLjQzLTE5LjA2LTIxLjk0LTE0Ljg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcE1hcmtlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtNjkuNTkgMC0xMjYgNTYuNDEtMTI2IDEyNiAwIDU2LjI2IDgyLjM1IDE1OC44IDExMy45IDE5Ni4wMiA2LjM5IDcuNTQgMTcuODIgNy41NCAyNC4yIDBDMzMxLjY1IDI4NC44IDQxNCAxODIuMjYgNDE0IDEyNiA0MTQgNTYuNDEgMzU3LjU5IDAgMjg4IDB6TTIwLjEyIDIxNS45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMjQ1LjY2djI1MC4zMmMwIDExLjMyIDExLjQzIDE5LjA2IDIxLjk0IDE0Ljg2TDE2MCA0NDhWMjE0LjkyYy04Ljg0LTE1Ljk4LTE2LjA3LTMxLjU0LTIxLjI1LTQ2LjQyTDIwLjEyIDIxNS45NXpNMjg4IDM1OS42N2MtMTQuMDcgMC0yNy4zOC02LjE4LTM2LjUxLTE2Ljk2LTE5LjY2LTIzLjItNDAuNTctNDkuNjItNTkuNDktNzYuNzJ2MTgybDE5MiA2NFYyNjZjLTE4LjkyIDI3LjA5LTM5LjgyIDUzLjUyLTU5LjQ5IDc2LjcyLTkuMTMgMTAuNzctMjIuNDQgMTYuOTUtMzYuNTEgMTYuOTV6bTI2Ni4wNi0xOTguNTFMNDE2IDIyNHYyODhsMTM5Ljg4LTU1Ljk1QTMxLjk5NiAzMS45OTYgMCAwIDAgNTc2IDQyNi4zNFYxNzYuMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBNYXJrZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTcyLjI2OCA1MDEuNjdDMjYuOTcgMjkxLjAzMSAwIDI2OS40MTMgMCAxOTIgMCA4NS45NjEgODUuOTYxIDAgMTkyIDBzMTkyIDg1Ljk2MSAxOTIgMTkyYzAgNzcuNDEzLTI2Ljk3IDk5LjAzMS0xNzIuMjY4IDMwOS42Ny05LjUzNSAxMy43NzQtMjkuOTMgMTMuNzczLTM5LjQ2NCAwek0xOTIgMjcyYzQ0LjE4MyAwIDgwLTM1LjgxNyA4MC04MHMtMzUuODE3LTgwLTgwLTgwLTgwIDM1LjgxNy04MCA4MCAzNS44MTcgODAgODAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFwTWFya2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3Mi4yNjggNTAxLjY3QzI2Ljk3IDI5MS4wMzEgMCAyNjkuNDEzIDAgMTkyIDAgODUuOTYxIDg1Ljk2MSAwIDE5MiAwczE5MiA4NS45NjEgMTkyIDE5MmMwIDc3LjQxMy0yNi45NyA5OS4wMzEtMTcyLjI2OCAzMDkuNjctOS41MzUgMTMuNzc0LTI5LjkzIDEzLjc3My0zOS40NjQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXBQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEyIDMxNi45NHYxNTYuNjlsMjIuMDIgMzMuMDJjNC43NSA3LjEyIDE1LjIyIDcuMTIgMTkuOTcgMEwxNzYgNDczLjYzVjMxNi45NGMtMTAuMzkgMS45Mi0yMS4wNiAzLjA2LTMyIDMuMDZzLTIxLjYxLTEuMTQtMzItMy4wNnpNMTQ0IDBDNjQuNDcgMCAwIDY0LjQ3IDAgMTQ0czY0LjQ3IDE0NCAxNDQgMTQ0IDE0NC02NC40NyAxNDQtMTQ0UzIyMy41MyAwIDE0NCAwem0wIDc2Yy0zNy41IDAtNjggMzAuNS02OCA2OCAwIDYuNjItNS4zOCAxMi0xMiAxMnMtMTItNS4zOC0xMi0xMmMwLTUwLjczIDQxLjI4LTkyIDkyLTkyIDYuNjIgMCAxMiA1LjM4IDEyIDEycy01LjM4IDEyLTEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcFNpZ25zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNy4zMSA4NC42OUw0NjQgNDEuMzdjLTYtNi0xNC4xNC05LjM3LTIyLjYzLTkuMzdIMjg4VjE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZINTZjLTEzLjI1IDAtMjQgMTAuNzUtMjQgMjR2ODBjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGgzODUuMzdjOC40OSAwIDE2LjYyLTMuMzcgMjIuNjMtOS4zN2w0My4zMS00My4zMWM2LjI1LTYuMjYgNi4yNS0xNi4zOCAwLTIyLjYzek0yMjQgNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2VjM4NGgtNjR2MTEyem0yMzItMjcySDI4OHYtMzJoLTY0djMySDcwLjYzYy04LjQ5IDAtMTYuNjIgMy4zNy0yMi42MyA5LjM3TDQuNjkgMjc2LjY5Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDQ4IDM0Mi42M2M2IDYgMTQuMTQgOS4zNyAyMi42MyA5LjM3SDQ1NmMxMy4yNSAwIDI0LTEwLjc1IDI0LTI0di04MGMwLTEzLjI1LTEwLjc1LTI0LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExNy42NnYzNDYuMzJjMCAxMS4zMiAxMS40MyAxOS4wNiAyMS45NCAxNC44NkwxNjAgNDE2VjMyTDIwLjEyIDg3Ljk1QTMyLjAwNiAzMi4wMDYgMCAwIDAgMCAxMTcuNjZ6TTE5MiA0MTZsMTkyIDY0Vjk2TDE5MiAzMnYzODR6TTU1NC4wNiAzMy4xNkw0MTYgOTZ2Mzg0bDEzOS44OC01NS45NUEzMS45OTYgMzEuOTk2IDAgMCAwIDU3NiAzOTQuMzRWNDguMDJjMC0xMS4zMi0xMS40My0xOS4wNi0yMS45NC0xNC44NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTMuOTUgMjkwLjAzQTMyNy4wMzggMzI3LjAzOCAwIDAgMCAuMTcgNDg1LjExbC0uMDMuMjNjLTEuNyAxNS4yOCAxMS4yMSAyOC4yIDI2LjQ5IDI2LjUxYTMyNy4wMiAzMjcuMDIgMCAwIDAgMTk1LjM0LTkzLjhsNzUuNC03NS40LTEyOC4wMi0xMjguMDItNzUuNCA3NS40ek00ODUuNDkgMjYuNTFjLTM1LjM1LTM1LjM1LTkyLjY3LTM1LjM1LTEyOC4wMiAwbC0yMS43NiAyMS43Ni0zNi41Ni0zNi41NWMtMTUuNjItMTUuNjItNDAuOTUtMTUuNjItNTYuNTYgMEwxMzguNDcgMTE1Ljg0Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsODcuMTUtODcuMTUgMTkuNTkgMTkuNTlMMTkxLjk4IDE5MiAzMjAgMzIwLjAybDE2NS40OS0xNjUuNDljMzUuMzUtMzUuMzUgMzUuMzUtOTIuNjYgMC0xMjguMDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDAgMGgtNzljLTEwLjcgMC0xNiAxMi45LTguNSAyMC41bDE2LjkgMTYuOS00OC43IDQ4LjdDMTk4LjUgNzIuMSAxNzIuMiA2NCAxNDQgNjQgNjQuNSA2NCAwIDEyOC41IDAgMjA4czY0LjUgMTQ0IDE0NCAxNDQgMTQ0LTY0LjUgMTQ0LTE0NGMwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjUgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAyODhjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwem0zNTYtMTI4LjFoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43Yy0xOC4yLTExLjQtMzktMTguOS02MS41LTIxLjMtMi4xIDIxLjgtOC4yIDQzLjMtMTguNCA2My4zIDEuMSAwIDIuMi0uMSAzLjItLjEgNDQuMSAwIDgwIDM1LjkgODAgODBzLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MGMwLTEuMSAwLTIuMi4xLTMuMi0yMCAxMC4yLTQxLjUgMTYuNC02My4zIDE4LjRDMTY4LjQgNDU1LjYgMjI5LjYgNTEyIDMwNCA1MTJjNzkuNSAwIDE0NC02NC41IDE0NC0xNDQgMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w0OC43LTQ4LjcgMTYuOSAxNi45YzIuNCAyLjQgNS40IDMuNSA4LjQgMy41IDYuMiAwIDEyLjEtNC44IDEyLjEtMTJ2LTc5YzAtNi43LTUuNC0xMi4xLTEyLTEyLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZUggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjIgMjQ3LjVsLTU1LjktNTUuOWMtNy42LTcuNi0yMC41LTIuMi0yMC41IDguNVYyMjRIMzc2di0yMGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2MjBoLTI3LjZjLTUuOC0yNS42LTE4LjctNDkuOS0zOC42LTY5LjhDMTg5LjYgOTggOTguNCA5OCA0Mi4yIDE1NC4yYy01Ni4yIDU2LjItNTYuMiAxNDcuNCAwIDIwMy42IDU2LjIgNTYuMiAxNDcuNCA1Ni4yIDIwMy42IDAgMTkuOS0xOS45IDMyLjgtNDQuMiAzOC42LTY5LjhIMzEydjIwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTIwaDIzLjl2MjMuOWMwIDEwLjcgMTIuOSAxNiAyMC41IDguNWw1NS45LTU1LjljNC42LTQuNyA0LjYtMTIuMy0uMS0xN3ptLTI3NS42IDY1LjFjLTMxLjIgMzEuMi04MS45IDMxLjItMTEzLjEgMC0zMS4yLTMxLjItMzEuMi04MS45IDAtMTEzLjEgMzEuMi0zMS4yIDgxLjktMzEuMiAxMTMuMSAwIDMxLjIgMzEuMSAzMS4yIDgxLjkgMCAxMTMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXJzU3Ryb2tlViAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDUuOCAyMzQuMmMtMTkuOS0xOS45LTQ0LjItMzIuOC02OS44LTM4LjZ2LTI1LjRoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwVjgxLjRoMjMuOWMxMC43IDAgMTYtMTIuOSA4LjUtMjAuNUwxNTIuNSA1LjFjLTQuNy00LjctMTIuMy00LjctMTcgMEw3OS42IDYxYy03LjYgNy42LTIuMiAyMC41IDguNSAyMC41SDExMnYyNC43SDkyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDIwdjI1LjRjLTI1LjYgNS44LTQ5LjkgMTguNy02OS44IDM4LjYtNTYuMiA1Ni4yLTU2LjIgMTQ3LjQgMCAyMDMuNiA1Ni4yIDU2LjIgMTQ3LjQgNTYuMiAyMDMuNiAwIDU2LjMtNTYuMiA1Ni4zLTE0Ny40IDAtMjAzLjZ6bS00NS4yIDE1OC40Yy0zMS4yIDMxLjItODEuOSAzMS4yLTExMy4xIDAtMzEuMi0zMS4yLTMxLjItODEuOSAwLTExMy4xIDMxLjItMzEuMiA4MS45LTMxLjIgMTEzLjEgMCAzMS4yIDMxLjEgMzEuMiA4MS45IDAgMTEzLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFyc1N0cm9rZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktMTcuNSAxNy41LTE0LjEtMTQuMWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDIyNC41IDEzM2MtNC43IDQuNy00LjcgMTIuMyAwIDE3bDE0LjEgMTQuMS0xOCAxOGMtMjIuMi0xNC00OC41LTIyLjEtNzYuNy0yMi4xQzY0LjUgMTYwIDAgMjI0LjUgMCAzMDRzNjQuNSAxNDQgMTQ0IDE0NCAxNDQtNjQuNSAxNDQtMTQ0YzAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsMTgtMTggMTQuMSAxNC4xYzQuNyA0LjcgMTIuMyA0LjcgMTcgMGwyOC4zLTI4LjNjNC43LTQuNyA0LjctMTIuMyAwLTE3TDMyOS4yIDE2NGwxNy41LTE3LjUgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjLS4xLTYuNi01LjUtMTItMTIuMS0xMnpNMTQ0IDM4NGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIgNjRoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43Yy0yMi4yLTE0LTQ4LjUtMjIuMS03Ni43LTIyLjFDNjQuNSAxNjAgMCAyMjQuNSAwIDMwNHM2NC41IDE0NCAxNDQgMTQ0IDE0NC02NC41IDE0NC0xNDRjMC0yOC4yLTguMS01NC41LTIyLjEtNzYuN2w4MC43LTgwLjcgMTYuOSAxNi45YzcuNiA3LjYgMjAuNSAyLjIgMjAuNS04LjVWNzZjMC02LjYtNS40LTEyLTEyLTEyek0xNDQgMzg0Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC42NyA2NGMtNDQyLjYgMC0zNTcuNTcgMzg0LTE1OC40NiAzODQgMzkuOSAwIDc3LjQ3LTIwLjY5IDEwMS40Mi01NS44NmwyNS43My0zNy43OWMxNS42Ni0yMi45OSA0Ni45Ny0yMi45OSA2Mi42MyAwbDI1LjczIDM3Ljc5QzQwMS42NiA0MjcuMzEgNDM5LjIzIDQ0OCA0NzkuMTMgNDQ4YzE4OS44NiAwIDI5MC42My0zODQtMTU4LjQ2LTM4NHpNMTg0IDMwOC4zNmMtNDEuMDYgMC02Ny43Ni0yNS42Ni04MC4wOC00MS4wNS01LjIzLTYuNTMtNS4yMy0xNi4wOSAwLTIyLjYzIDEyLjMyLTE1LjQgMzkuMDEtNDEuMDUgODAuMDgtNDEuMDVzNjcuNzYgMjUuNjYgODAuMDggNDEuMDVjNS4yMyA2LjUzIDUuMjMgMTYuMDkgMCAyMi42My0xMi4zMiAxNS40LTM5LjAyIDQxLjA1LTgwLjA4IDQxLjA1em0yNzIgMGMtNDEuMDYgMC02Ny43Ni0yNS42Ni04MC4wOC00MS4wNS01LjIzLTYuNTMtNS4yMy0xNi4wOSAwLTIyLjYzIDEyLjMyLTE1LjQgMzkuMDEtNDEuMDUgODAuMDgtNDEuMDVzNjcuNzYgMjUuNjYgODAuMDggNDEuMDVjNS4yMyA2LjUzIDUuMjMgMTYuMDkgMCAyMi42My0xMi4zMiAxNS40LTM5LjAyIDQxLjA1LTgwLjA4IDQxLjA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1lZGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyMy43NSAxMzAuNzVMMTU0LjYyIDE1LjU0QTMxLjk5NyAzMS45OTcgMCAwIDAgMTI3LjE4IDBIMTYuMDNDMy4wOCAwLTQuNSAxNC41NyAyLjkyIDI1LjE4bDExMS4yNyAxNTguOTZjMjkuNzItMjcuNzcgNjcuNTItNDYuODMgMTA5LjU2LTUzLjM5ek00OTUuOTcgMEgzODQuODJjLTExLjI0IDAtMjEuNjYgNS45LTI3LjQ0IDE1LjU0bC02OS4xMyAxMTUuMjFjNDIuMDQgNi41NiA3OS44NCAyNS42MiAxMDkuNTYgNTMuMzhMNTA5LjA4IDI1LjE4QzUxNi41IDE0LjU3IDUwOC45MiAwIDQ5NS45NyAwek0yNTYgMTYwYy05Ny4yIDAtMTc2IDc4LjgtMTc2IDE3NnM3OC44IDE3NiAxNzYgMTc2IDE3Ni03OC44IDE3Ni0xNzYtNzguOC0xNzYtMTc2LTE3NnptOTIuNTIgMTU3LjI2bC0zNy45MyAzNi45NiA4Ljk3IDUyLjIyYzEuNiA5LjM2LTguMjYgMTYuNTEtMTYuNjUgMTIuMDlMMjU2IDM5My44OGwtNDYuOSAyNC42NWMtOC40IDQuNDUtMTguMjUtMi43NC0xNi42NS0xMi4wOWw4Ljk3LTUyLjIyLTM3LjkzLTM2Ljk2Yy02LjgyLTYuNjQtMy4wNS0xOC4yMyA2LjM1LTE5LjU5bDUyLjQzLTcuNjQgMjMuNDMtNDcuNTJjMi4xMS00LjI4IDYuMTktNi4zOSAxMC4yOC02LjM5IDQuMTEgMCA4LjIyIDIuMTQgMTAuMzMgNi4zOWwyMy40MyA0Ny41MiA1Mi40MyA3LjY0YzkuNCAxLjM2IDEzLjE3IDEyLjk1IDYuMzUgMTkuNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVka2l0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDQ4MGgzMjBWMTI4aC0zMlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg5NnYzNTJ6bTk2LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhoLTE2VjEyOGgxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4ek02NCA0ODBINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTc2YzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMTZ2MzUyem0yODgtMjA4djMyYzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTQ4djQ4YzAgOC44MzctNy4xNjMgMTYtMTYgMTZoLTMyYy04LjgzNyAwLTE2LTcuMTYzLTE2LTE2di00OGgtNDhjLTguODM3IDAtMTYtNy4xNjMtMTYtMTZ2LTMyYzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoNDh2LTQ4YzAtOC44MzcgNy4xNjMtMTYgMTYtMTZoMzJjOC44MzcgMCAxNiA3LjE2MyAxNiAxNnY0OGg0OGM4LjgzNyAwIDE2IDcuMTYzIDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1laEJsYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAyMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNjAgMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVoUm9sbGluZ0V5ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNODggMjI0YzAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjRzLTY0LTI4LjctNjQtNjR6bTIyNCAxNzZIMTg0Yy0yMS4yIDAtMjEuMi0zMiAwLTMyaDEyOGMyMS4yIDAgMjEuMiAzMiAwIDMyem0zMi0xMTJjLTM1LjMgMC02NC0yOC43LTY0LTY0IDAtMjQuMyAxMy43LTQ1LjIgMzMuNi01Ni0uNyAyLjYtMS42IDUuMi0xLjYgOCAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtMi44LS45LTUuNC0xLjYtOCAxOS45IDEwLjggMzMuNiAzMS43IDMzLjYgNTYgMCAzNS4zLTI4LjcgNjQtNjQgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bS04MCAxNjhjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNzYgMTkySDE1MmMtMjEuMiAwLTIxLjItMzIgMC0zMmgxOTJjMjEuMiAwIDIxLjIgMzIgMCAzMnptLTE2LTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVtb3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAxMzAuOTRWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzQuOTRjMTguNiA2LjYxIDMyIDI0LjE5IDMyIDQ1LjA2cy0xMy40IDM4LjQ1LTMyIDQ1LjA2VjMyMGg2NDB2LTk4Ljk0Yy0xOC42LTYuNjEtMzItMjQuMTktMzItNDUuMDZzMTMuNC0zOC40NSAzMi00NS4wNnpNMjI0IDI1NmgtNjRWMTI4aDY0djEyOHptMTI4IDBoLTY0VjEyOGg2NHYxMjh6bTEyOCAwaC02NFYxMjhoNjR2MTI4ek0wIDQ0OGg2NHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoMTI4di0yNi42N2MwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2VjQ0OGgxMjh2LTI2LjY3YzAtOC44NCA3LjE2LTE2IDE2LTE2czE2IDcuMTYgMTYgMTZWNDQ4aDEyOHYtMjYuNjdjMC04Ljg0IDcuMTYtMTYgMTYtMTZzMTYgNy4xNiAxNiAxNlY0NDhoNjR2LTk2SDB2OTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVub3JhaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMTI4aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTE5MiAwaC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTQ0aDY0VjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNnptOTYgMGgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGg2NFYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTgwLTMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTNjA4IDAgNjA4IDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzUxMiAwIDUxMiAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlM0MTYgMCA0MTYgMHMtMzIgNDYuMzMtMzIgNjQgMTQuMzMgMzIgMzIgMzJ6bS05NiAwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJTMzIwIDAgMzIwIDBzLTMyIDQ2LjMzLTMyIDY0IDE0LjMzIDMyIDMyIDMyem0tOTYgMGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyUzIyNCAwIDIyNCAwcy0zMiA0Ni4zMy0zMiA2NCAxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMxMjggMCAxMjggMCA5NiA0Ni4zMyA5NiA2NHMxNC4zMyAzMiAzMiAzMnptLTk2IDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlMzMiAwIDMyIDAgMCA0Ni4zMyAwIDY0czE0LjMzIDMyIDMyIDMyem01NDQgMTkyYzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMzUyVjE0NGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMzJjLTguODQgMC0xNiA3LjE2LTE2IDE2djE3Nkg5NmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djE0NGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDE5MnY2NEgxMTJjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMzUydi02NGgxOTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NlYxNDRjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWVyY3VyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjg4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMjA4YzAtNDQuMi0xOS45LTgzLjctNTEuMi0xMTAuMSAyLjUtMS44IDQuOS0zLjggNy4yLTUuOCAyNC43LTIxLjIgMzkuOC00OC44IDQzLjItNzguOC45LTcuMS00LjctMTMuMy0xMS45LTEzLjNoLTQwLjVDMjI5IDAgMjI0LjEgNC4xIDIyMyA5LjhjLTIuNCAxMi41LTkuNiAyNC4zLTIwLjcgMzMuOEMxODcgNTYuOCAxNjYuMyA2NCAxNDQgNjRzLTQzLTcuMi01OC40LTIwLjRDNzQuNSAzNC4xIDY3LjQgMjIuMyA2NC45IDkuOCA2My44IDQuMSA1OC45IDAgNTMuMiAwSDEyLjdDNS41IDAtLjEgNi4yLjggMTMuMyA0LjIgNDMuNCAxOS4yIDcxIDQ0IDkyLjJjMi4zIDIgNC43IDMuOSA3LjIgNS44QzE5LjkgMTI0LjMgMCAxNjMuOCAwIDIwOGMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWNDAwSDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWV0ZW9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS4zMjgsMjAuODAyN2MtMTEuNjA3NTksMzguNzAyNjQtMzQuMzA3MjQsMTExLjcwMTczLTYxLjMwMzExLDE4Ny43MDA3Nyw2Ljk5ODkzLDIuMDkzNzIsMTMuNDA0Miw0LDE4LjYwNjUzLDUuNTkzNjhhMTYuMDYxNTgsMTYuMDYxNTgsMCwwLDEsOS40OTg1NCwyMi45MDZjLTIyLjEwNiw0Mi4yOTYzNS04Mi42OTA0NywxNTIuNzk1LTE0Mi40NzgxOSwyMTQuNDAzNTYtLjk5OTg0LDEuMDkzNzMtMS45OTk2OSwyLjUtMi45OTk1NCwzLjQ5OTk1QTE5NC44MzA0NiwxOTQuODMwNDYsMCwxLDEsNTcuMDg1LDE3OS40MTAwOWMuOTk5ODUtMSwyLjQwNTg4LTIsMy40OTk0Ny0zLDYxLjU5OTk0LTU5LjkwNTQ5LDE3MS45NzM2Ny0xMjAuNDA0NzMsMjE0LjM3MzQzLTE0Mi40OTgyYTE2LjA1OCwxNi4wNTgsMCwwLDEsMjIuOTAyNzQsOS40OTk4OGMxLjU5MzUxLDUuMDkzNjgsMy40OTk0NywxMS41OTM2LDUuNTkyOSwxOC41OTM1MUMzNzkuMzQ4MTgsMzUuMDA1NjUsNDUyLjQzMDc0LDEyLjMwMjgxLDQ5MS4xMjc5NC43MDkyMUExNi4xODMyNSwxNi4xODMyNSwwLDAsMSw1MTEuMzI4LDIwLjgwMjdaTTMxOS45NTEsMzIwLjAwMjA3QTEyNy45ODA0MSwxMjcuOTgwNDEsMCwxLDAsMTkxLjk3MDYxLDQ0OC4wMDA0NiwxMjcuOTc1NzMsMTI3Ljk3NTczLDAsMCwwLDMxOS45NTEsMzIwLjAwMjA3Wm0tMTI3Ljk4MDQxLTMxLjk5OTZhMzEuOTk1MSwzMS45OTUxLDAsMSwxLTMxLjk5NTEtMzEuOTk5NkEzMS45NTksMzEuOTU5LDAsMCwxLDE5MS45NzA2MSwyODguMDAyNDdabTMxLjk5NTEsNzkuOTk5YTE1Ljk5NzU1LDE1Ljk5NzU1LDAsMSwxLTE1Ljk5NzU1LTE1Ljk5OThBMTYuMDQ5NzUsMTYuMDQ5NzUsMCwwLDEsMjIzLjk2NTcxLDM2OC4wMDE0N1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb2NoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDQ4djQxNmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE0NGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY0OGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDIyNGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4em05NiA1OHYxMmE2IDYgMCAwIDEtNiA2aC0xOHY2YTYgNiAwIDAgMS02IDZoLTQyVjg4aDQyYTYgNiAwIDAgMSA2IDZ2NmgxOGE2IDYgMCAwIDEgNiA2em0wIDk2djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJ2LTQ4aDQyYTYgNiAwIDAgMSA2IDZ2NmgxOGE2IDYgMCAwIDEgNiA2em0wIDk2djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJ2LTQ4aDQyYTYgNiAwIDAgMSA2IDZ2NmgxOGE2IDYgMCAwIDEgNiA2em0wIDk2djEyYTYgNiAwIDAgMS02IDZoLTE4djZhNiA2IDAgMCAxLTYgNmgtNDJ2LTQ4aDQyYTYgNiAwIDAgMSA2IDZ2NmgxOGE2IDYgMCAwIDEgNiA2ek0zMCAzNzZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnptMC05Nmg0MnY0OEgzMGE2IDYgMCAwIDEtNi02di02SDZhNiA2IDAgMCAxLTYtNnYtMTJhNiA2IDAgMCAxIDYtNmgxOHYtNmE2IDYgMCAwIDEgNi02em0wLTk2aDQydjQ4SDMwYTYgNiAwIDAgMS02LTZ2LTZINmE2IDYgMCAwIDEtNi02di0xMmE2IDYgMCAwIDEgNi02aDE4di02YTYgNiAwIDAgMSA2LTZ6bTAtOTZoNDJ2NDhIMzBhNiA2IDAgMCAxLTYtNnYtNkg2YTYgNiAwIDAgMS02LTZ2LTEyYTYgNiAwIDAgMSA2LTZoMTh2LTZhNiA2IDAgMCAxIDYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0U2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMzLjgyIDQ1OC4xTDQ3Ni4yNiAzMzYuMzNDNDg4Ljc0IDMxMi4yMSA0OTYgMjg0Ljk4IDQ5NiAyNTZ2LTQ4YzAtOC44NC03LjE2LTE2LTE2LTE2aC0xNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NDhjMCAxNy45Mi0zLjk2IDM0LjgtMTAuNzIgNTAuMmwtMjYuNTUtMjAuNTJjMy4xLTkuNCA1LjI4LTE5LjIyIDUuMjgtMjkuNjdoLTQzLjY3bC00MS40LTMySDQxNnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThINDE2di0zMmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEg0MTZjMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZ2NDUuMzZMNDUuNDcgMy4zN0MzOC40OS0yLjA1IDI4LjQzLS44IDIzLjAxIDYuMThMMy4zNyAzMS40NUMtMi4wNSAzOC40Mi0uOCA0OC40NyA2LjE4IDUzLjlsNTg4LjM2IDQ1NC43M2M2Ljk4IDUuNDMgMTcuMDMgNC4xNyAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YzUuNDEtNi45NyA0LjE2LTE3LjAyLTIuODItMjIuNDV6TTQwMCA0NjRoLTU2di0zMy43OGMxMS43MS0xLjYyIDIzLjEtNC4yOCAzMy45Ni04LjA4bC01MC40LTM4Ljk2Yy02LjcxLjQtMTMuNDEuODctMjAuMzUuMi01NS44NS01LjQ1LTk4Ljc0LTQ4LjYzLTExMS4xOC0xMDEuODVMMTQ0IDI0MS4zMXY2Ljg1YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0aC01NmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaWNyb3Bob25lQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAxOTJoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6TTE3NiAzNTJjNTMuMDIgMCA5Ni00Mi45OCA5Ni05NmgtODUuMzNjLTUuODkgMC0xMC42Ny0zLjU4LTEwLjY3LTh2LTE2YzAtNC40MiA0Ljc4LTggMTAuNjctOEgyNzJ2LTMyaC04NS4zM2MtNS44OSAwLTEwLjY3LTMuNTgtMTAuNjctOHYtMTZjMC00LjQyIDQuNzgtOCAxMC42Ny04SDI3MnYtMzJoLTg1LjMzYy01Ljg5IDAtMTAuNjctMy41OC0xMC42Ny04di0xNmMwLTQuNDIgNC43OC04IDEwLjY3LThIMjcyYzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9waG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMWwtMTU3LjgtMTIxLjk2QzQ4OC42MSAzMTIuMTMgNDk2IDI4NS4wMSA0OTYgMjU2di00OGMwLTguODQtNy4xNi0xNi0xNi0xNmgtMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4YzAgMTcuOTItMy45NiAzNC44LTEwLjcyIDUwLjJsLTI2LjU1LTIwLjUyYzMuMS05LjQgNS4yOC0xOS4yMiA1LjI4LTI5LjY3Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZzLTk2IDQyLjk4LTk2IDk2djQ1LjM2TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNiA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQxLTYuOTcgNC4xNi0xNy4wMi0yLjgyLTIyLjQ1ek00MDAgNDY0aC01NnYtMzMuNzdjMTEuNjYtMS42IDIyLjg1LTQuNTQgMzMuNjctOC4zMWwtNTAuMTEtMzguNzNjLTYuNzEuNC0xMy40MS44Ny0yMC4zNS4yLTU1Ljg1LTUuNDUtOTguNzQtNDguNjMtMTExLjE4LTEwMS44NUwxNDQgMjQxLjMxdjYuODVjMCA4OS42NCA2My45NyAxNjkuNTUgMTUyIDE4MS42OVY0NjRoLTU2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1pY3JvcGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmM1My4wMiAwIDk2LTQyLjk4IDk2LTk2Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZTODAgNDIuOTggODAgOTZ2MTYwYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZ6bTE2MC0xNjBoLTE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY0OGMwIDc0LjgtNjQuNDkgMTM0LjgyLTE0MC43OSAxMjcuMzhDOTYuNzEgMzc2Ljg5IDQ4IDMxNy4xMSA0OCAyNTAuM1YyMDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djQwLjE2YzAgODkuNjQgNjMuOTcgMTY5LjU1IDE1MiAxODEuNjlWNDY0SDk2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgxNjBjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2aC01NnYtMzMuNzdDMjg1LjcxIDQxOC40NyAzNTIgMzQ0LjkgMzUyIDI1NnYtNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWljcm9zY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMzIwaDEydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQwYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJWMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTY0Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYyMjRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnptMzA0IDEyOGgtMS4yOUM0OTMuMjQgNDEzLjk5IDUxMiAzNjkuMiA1MTIgMzIwYzAtMTA1Ljg4LTg2LjEyLTE5Mi0xOTItMTkydjY0YzcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjhzLTU3LjQyIDEyOC0xMjggMTI4SDQ4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4IDAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNiAwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMzYwLTMyaDIwOGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LThIMTA0Yy00LjQyIDAtOCAzLjU4LTggOHYxNmMwIDQuNDIgMy41OCA4IDggOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaW51c0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4ek0xMjQgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkgxMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWludXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpNOTIgMjk2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmgyNjRjNi42IDAgMTIgNS40IDEyIDEydjU2YzAgNi42LTUuNCAxMi0xMiAxMkg5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMjA4SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTWl0dGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0MTZINDhjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzIwYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2em01Ny0yMDkuMWMtMjcuMi0yMi42LTY3LjUtMTktOTAuMSA4LjJsLTIwLjkgMjUtMjkuNi0xMjguNGMtMTgtNzcuNS05NS40LTEyNS45LTE3Mi44LTEwOEMzNC4yIDIxLjYtMTQuMiA5OC45IDMuNyAxNzYuNEw1MS42IDM4NGgzMDlsNzIuNS04N2MyMi43LTI3LjIgMTktNjcuNS04LjEtOTAuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xMTItMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgyMDBjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb2JpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyMjRjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTE2MCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMjg4aC0xNnYtODhjMC00LjQyLTMuNTgtOC04LThoLTEzLjU4Yy00Ljc0IDAtOS4zNyAxLjQtMTMuMzEgNC4wM2wtMTUuMzMgMTAuMjJhNy45OTQgNy45OTQgMCAwIDAtMi4yMiAxMS4wOWw4Ljg4IDEzLjMxYTcuOTk0IDcuOTk0IDAgMCAwIDExLjA5IDIuMjJsLjQ3LS4zMVYyODhoLTE2Yy00LjQyIDAtOCAzLjU4LTggOHYxNmMwIDQuNDIgMy41OCA4IDggOGg2NGM0LjQyIDAgOC0zLjU4IDgtOHYtMTZjMC00LjQyLTMuNTgtOC04LTh6TTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTc2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNNDggNDAwdi02NGMzNS4zNSAwIDY0IDI4LjY1IDY0IDY0SDQ4em0wLTIyNHYtNjRoNjRjMCAzNS4zNS0yOC42NSA2NC02NCA2NHptMjcyIDE5MmMtNTMuMDIgMC05Ni01MC4xNS05Ni0xMTIgMC02MS44NiA0Mi45OC0xMTIgOTYtMTEyczk2IDUwLjE0IDk2IDExMmMwIDYxLjg3LTQzIDExMi05NiAxMTJ6bTI3MiAzMmgtNjRjMC0zNS4zNSAyOC42NS02NCA2NC02NHY2NHptMC0yMjRjLTM1LjM1IDAtNjQtMjguNjUtNjQtNjRoNjR2NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNMzIwIDM1MmMtNDQuMTkgMC04MC00Mi45OS04MC05NiAwLTUzLjAyIDM1LjgyLTk2IDgwLTk2czgwIDQyLjk4IDgwIDk2YzAgNTMuMDMtMzUuODMgOTYtODAgOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlCaWxsV2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMTYgNTQuNDZDNTgyLjM3IDM4LjE5IDU0My41NSAzMiA1MDQuNzUgMzJjLTEyMy4xNy0uMDEtMjQ2LjMzIDYyLjM0LTM2OS41IDYyLjM0LTMwLjg5IDAtNjEuNzYtMy45Mi05Mi42NS0xMy43Mi0zLjQ3LTEuMS02Ljk1LTEuNjItMTAuMzUtMS42MkMxNS4wNCA3OSAwIDkyLjMyIDAgMTEwLjgxdjMxNy4yNmMwIDEyLjYzIDcuMjMgMjQuNiAxOC44NCAyOS40NkM1Ny42MyA0NzMuODEgOTYuNDUgNDgwIDEzNS4yNSA0ODBjMTIzLjE3IDAgMjQ2LjM0LTYyLjM1IDM2OS41MS02Mi4zNSAzMC44OSAwIDYxLjc2IDMuOTIgOTIuNjUgMTMuNzIgMy40NyAxLjEgNi45NSAxLjYyIDEwLjM1IDEuNjIgMTcuMjEgMCAzMi4yNS0xMy4zMiAzMi4yNS0zMS44MVY4My45M2MtLjAxLTEyLjY0LTcuMjQtMjQuNi0xOC44NS0yOS40N3pNNDggMTMyLjIyYzIwLjEyIDUuMDQgNDEuMTIgNy41NyA2Mi43MiA4LjkzQzEwNC44NCAxNzAuNTQgNzkgMTkyLjY5IDQ4IDE5Mi42OXYtNjAuNDd6bTAgMjg1di00Ny43OGMzNC4zNyAwIDYyLjE4IDI3LjI3IDYzLjcxIDYxLjQtMjIuNTMtMS44MS00My41OS02LjMxLTYzLjcxLTEzLjYyek0zMjAgMzUyYy00NC4xOSAwLTgwLTQyLjk5LTgwLTk2IDAtNTMuMDIgMzUuODItOTYgODAtOTZzODAgNDIuOTggODAgOTZjMCA1My4wMy0zNS44MyA5Ni04MCA5NnptMjcyIDI3Ljc4Yy0xNy41Mi00LjM5LTM1LjcxLTYuODUtNTQuMzItOC40NCA1Ljg3LTI2LjA4IDI3LjUtNDUuODggNTQuMzItNDkuMjh2NTcuNzJ6bTAtMjM2LjExYy0zMC44OS0zLjkxLTU0Ljg2LTI5LjctNTUuODEtNjEuNTUgMTkuNTQgMi4xNyAzOC4wOSA2LjIzIDU1LjgxIDEyLjY2djQ4Ljg5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5QmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggNjRIMzJDMTQuMzMgNjQgMCA3OC4zMyAwIDk2djMyMGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTQ4IDQwMHYtNjRjMzUuMzUgMCA2NCAyOC42NSA2NCA2NEg0OHptMC0yMjR2LTY0aDY0YzAgMzUuMzUtMjguNjUgNjQtNjQgNjR6bTI3MiAxNzZjLTQ0LjE5IDAtODAtNDIuOTktODAtOTYgMC01My4wMiAzNS44Mi05NiA4MC05NnM4MCA0Mi45OCA4MCA5NmMwIDUzLjAzLTM1LjgzIDk2LTgwIDk2em0yNzIgNDhoLTY0YzAtMzUuMzUgMjguNjUtNjQgNjQtNjR2NjR6bTAtMjI0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0aDY0djY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vbmV5Q2hlY2tBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYzODRjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNzYgMzI3Ljg4VjM0NGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di0xNi4yOWMtMTEuMjktLjU4LTIyLjI3LTQuNTItMzEuMzctMTEuMzUtMy45LTIuOTMtNC4xLTguNzctLjU3LTEyLjE0bDExLjc1LTExLjIxYzIuNzctMi42NCA2Ljg5LTIuNzYgMTAuMTMtLjczIDMuODcgMi40MiA4LjI2IDMuNzIgMTIuODIgMy43MmgyOC4xMWM2LjUgMCAxMS44LTUuOTIgMTEuOC0xMy4xOSAwLTUuOTUtMy42MS0xMS4xOS04Ljc3LTEyLjczbC00NS0xMy41Yy0xOC41OS01LjU4LTMxLjU4LTIzLjQyLTMxLjU4LTQzLjM5IDAtMjQuNTIgMTkuMDUtNDQuNDQgNDIuNjctNDUuMDdWMTUyYzAtNC40MiAzLjU4LTggOC04aDE2YzQuNDIgMCA4IDMuNTggOCA4djE2LjI5YzExLjI5LjU4IDIyLjI3IDQuNTEgMzEuMzcgMTEuMzUgMy45IDIuOTMgNC4xIDguNzcuNTcgMTIuMTRsLTExLjc1IDExLjIxYy0yLjc3IDIuNjQtNi44OSAyLjc2LTEwLjEzLjczLTMuODctMi40My04LjI2LTMuNzItMTIuODItMy43MmgtMjguMTFjLTYuNSAwLTExLjggNS45Mi0xMS44IDEzLjE5IDAgNS45NSAzLjYxIDExLjE5IDguNzcgMTIuNzNsNDUgMTMuNWMxOC41OSA1LjU4IDMxLjU4IDIzLjQyIDMxLjU4IDQzLjM5IDAgMjQuNTMtMTkuMDUgNDQuNDQtNDIuNjcgNDUuMDd6TTQxNiAzMTJjMCA0LjQyLTMuNTggOC04IDhIMjk2Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2em0xNjAgMGMwIDQuNDItMy41OCA4LTggOGgtODBjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4MGM0LjQyIDAgOCAzLjU4IDggOHYxNnptMC05NmMwIDQuNDItMy41OCA4LTggOEgyOTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGgyNzJjNC40MiAwIDggMy41OCA4IDh2MTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9uZXlDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDU3NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjEyOEgwdjMyMHptNDQ4LTIwOGMwLTguODQgNy4xNi0xNiAxNi0xNmg5NmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMnptMCAxMjBjMC00LjQyIDMuNTgtOCA4LThoMTEyYzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDQ1NmMtNC40MiAwLTgtMy41OC04LTh2LTE2ek02NCAyNjRjMC00LjQyIDMuNTgtOCA4LThoMzA0YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6bTAgOTZjMC00LjQyIDMuNTgtOCA4LThoMTc2YzQuNDIgMCA4IDMuNTggOCA4djE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZ6TTYyNCAzMkgxNkM3LjE2IDMyIDAgMzkuMTYgMCA0OHY0OGg2NDBWNDhjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9udW1lbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY4IDQ0OEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzUyYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTc4Ljg2LTM0Ny4yNmEzMS45NyAzMS45NyAwIDAgMC05LjIxLTE5LjQ0TDIwMy4zMSA0LjY5Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC03Ni42IDc2LjYxYTMxLjk3IDMxLjk3IDAgMCAwLTkuMjEgMTkuNDRMNjQgNDE2aDI1NmwtMzAuODYtMzE1LjI2ek0yNDAgMzA3LjJjMCA2LjQtNi40IDEyLjgtMTIuOCAxMi44aC03MC40Yy02LjQgMC0xMi44LTYuNC0xMi44LTEyLjh2LTM4LjRjMC02LjQgNi40LTEyLjggMTIuOC0xMi44aDcwLjRjNi40IDAgMTIuOCA2LjQgMTIuOCAxMi44djM4LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODMuMjExIDUxMmM3OC45NjIgMCAxNTEuMDc5LTM1LjkyNSAxOTguODU3LTk0Ljc5MiA3LjA2OC04LjcwOC0uNjM5LTIxLjQzLTExLjU2Mi0xOS4zNS0xMjQuMjAzIDIzLjY1NC0yMzguMjYyLTcxLjU3Ni0yMzguMjYyLTE5Ni45NTQgMC03Mi4yMjIgMzguNjYyLTEzOC42MzUgMTAxLjQ5OC0xNzQuMzk0IDkuNjg2LTUuNTEyIDcuMjUtMjAuMTk3LTMuNzU2LTIyLjIzQTI1OC4xNTYgMjU4LjE1NiAwIDAgMCAyODMuMjExIDBjLTE0MS4zMDkgMC0yNTYgMTE0LjUxMS0yNTYgMjU2IDAgMTQxLjMwOSAxMTQuNTExIDI1NiAyNTYgMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vcnRhclBlc3RsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuNTQgNjAuOTFjMTcuMjItMTcuMjIgMTIuNTEtNDYuMjUtOS4yNy01Ny4xNGEzNS42OTYgMzUuNjk2IDAgMCAwLTM3LjM3IDMuMzdMMjUxLjA5IDE2MGgxNTEuMzdsOTkuMDgtOTkuMDl6TTQ5NiAxOTJIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDE2YzAgODAuOTggNTAuMiAxNTAuMTEgMTIxLjEzIDE3OC4zMi0xMi43NiAxNi44Ny0yMS43MiAzNi44LTI0Ljk1IDU4LjY5LTEuNDYgOS45MiA2LjA0IDE4Ljk4IDE2LjA3IDE4Ljk4aDIyMy41YzEwLjAzIDAgMTcuNTMtOS4wNiAxNi4wNy0xOC45OC0zLjIyLTIxLjg5LTEyLjE4LTQxLjgyLTI0Ljk1LTU4LjY5QzQyOS44IDQwNi4xMSA0ODAgMzM2Ljk4IDQ4MCAyNTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU1vc3F1ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDQ4MGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMTYwSDB2MzIwem01NzkuMTYtMTkyYzE3Ljg2LTE3LjM5IDI4Ljg0LTM3LjM0IDI4Ljg0LTU4LjkxIDAtNTIuODYtNDEuNzktOTMuNzktODcuOTItMTIyLjktNDEuOTQtMjYuNDctODAuNjMtNTcuNzctMTExLjk2LTk2LjIyTDQwMCAwbC04LjEyIDkuOTdjLTMxLjMzIDM4LjQ1LTcwLjAxIDY5Ljc2LTExMS45NiA5Ni4yMkMyMzMuNzkgMTM1LjMgMTkyIDE3Ni4yMyAxOTIgMjI5LjA5YzAgMjEuNTcgMTAuOTggNDEuNTIgMjguODQgNTguOTFoMzU4LjMyek02MDggMzIwSDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMnYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGg2NHYtNzJjMC00OCA0OC03MiA0OC03MnM0OCAyNCA0OCA3MnY3Mmg2NHYtNjRjMC0xNy42NyAxNC4zMy0zMiAzMi0zMnMzMiAxNC4zMyAzMiAzMnY2NGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek02NCAwUzAgMzIgMCA5NnYzMmgxMjhWOTZjMC02NC02NC05Ni02NC05NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3RvcmN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMi45IDE5MmMtMTQuOS0uMS0yOS4xIDIuMy00Mi40IDYuOUw0MzcuNiAxNDRINTIwYzEzLjMgMCAyNC0xMC43IDI0LTI0Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0aC00NS4zYy02LjggMC0xMy4zIDIuOS0xNy44IDcuOWwtMzcuNSA0MS43LTIyLjgtMzhDMzkyLjIgNjguNCAzODQuNCA2NCAzNzYgNjRoLTgwYy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDY2LjRsMTkuMiAzMkgyMjcuOWMtMTcuNy0yMy4xLTQ0LjktNDAtOTkuOS00MEg3Mi41QzU5IDEwNCA0Ny43IDExNSA0OCAxMjguNWMuMiAxMyAxMC45IDIzLjUgMjQgMjMuNWg1NmMyNC41IDAgMzguNyAxMC45IDQ3LjggMjQuOGwtMTEuMyAyMC41Yy0xMy0zLjktMjYuOS01LjctNDEuMy01LjJDNTUuOSAxOTQuNSAxLjYgMjQ5LjYgMCAzMTdjLTEuNiA3Mi4xIDU2LjMgMTMxIDEyOCAxMzEgNTkuNiAwIDEwOS43LTQwLjggMTI0LTk2aDg0LjJjMTMuNyAwIDI0LjYtMTEuNCAyNC0yNS4xLTIuMS00Ny4xIDE3LjUtOTMuNyA1Ni4yLTEyNWwxMi41IDIwLjhjLTI3LjYgMjMuNy00NS4xIDU4LjktNDQuOCA5OC4yLjUgNjkuNiA1Ny4yIDEyNi41IDEyNi44IDEyNy4xIDcxLjYuNyAxMjkuOC01Ny41IDEyOS4yLTEyOS4xLS43LTY5LjYtNTcuNi0xMjYuNC0xMjcuMi0xMjYuOXpNMTI4IDQwMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MGM0LjIgMCA4LjQuMyAxMi41IDFMOTkgMzE2LjRjLTguOCAxNiAyLjggMzUuNiAyMSAzNS42aDgxLjNjLTEyLjQgMjguMi00MC42IDQ4LTczLjMgNDh6bTQ2My45LTc1LjZjLTIuMiA0MC42LTM1IDczLjQtNzUuNSA3NS41LTQ2LjEgMi41LTg0LjQtMzQuMy04NC40LTc5LjkgMC0yMS40IDguNC00MC44IDIyLjEtNTUuMWw0OS40IDgyLjRjNC41IDcuNiAxNC40IDEwIDIyIDUuNWwxMy43LTguMmM3LjYtNC41IDEwLTE0LjQgNS41LTIybC00OC42LTgwLjljNS4yLTEuMSAxMC41LTEuNiAxNS45LTEuNiA0NS42LS4xIDgyLjMgMzguMiA3OS45IDg0LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91bnRhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM0LjkyIDQ2Mi43bC0yODgtNDQ4QzM0MS4wMyA1LjU0IDMzMC44OSAwIDMyMCAwcy0yMS4wMyA1LjU0LTI2LjkyIDE0LjdsLTI4OCA0NDhhMzIuMDAxIDMyLjAwMSAwIDAgMC0xLjE3IDMyLjY0QTMyLjAwNCAzMi4wMDQgMCAwIDAgMzIgNTEyaDU3NmMxMS43MSAwIDIyLjQ4LTYuMzkgMjguMDktMTYuNjdhMzEuOTgzIDMxLjk4MyAwIDAgMC0xLjE3LTMyLjYzek0zMjAgOTEuMThMNDA1LjM5IDIyNEgzMjBsLTY0IDY0LTM4LjA2LTM4LjA2TDMyMCA5MS4xOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFNb3VzZVBvaW50ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDMyMCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzAyLjE4OSAzMjkuMTI2SDE5Ni4xMDVsNTUuODMxIDEzNS45OTNjMy44ODkgOS40MjgtLjU1NSAxOS45OTktOS40NDQgMjMuOTk5bC00OS4xNjUgMjEuNDI3Yy05LjE2NSA0LTE5LjQ0My0uNTcxLTIzLjMzMi05LjcxNGwtNTMuMDUzLTEyOS4xMzYtODYuNjY0IDg5LjEzOEMxOC43MjkgNDcyLjcxIDAgNDYzLjU1NCAwIDQ0Ny45NzdWMTguMjk5QzAgMS44OTkgMTkuOTIxLTYuMDk2IDMwLjI3NyA1LjQ0M2wyODQuNDEyIDI5Mi41NDJjMTEuNDcyIDExLjE3OSAzLjAwNyAzMS4xNDEtMTIuNSAzMS4xNDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTW91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzNTJhMTYwIDE2MCAwIDAgMCAxNjAgMTYwaDY0YTE2MCAxNjAgMCAwIDAgMTYwLTE2MFYyMjRIMHpNMTc2IDBoLTE2QTE2MCAxNjAgMCAwIDAgMCAxNjB2MzJoMTc2em00OCAwaC0xNnYxOTJoMTc2di0zMkExNjAgMTYwIDAgMCAwIDIyNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU11Z0hvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjcuMSAxNDYuNWMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzExMS44IDUuOSAxMDUgMCA5Ni44IDBIODAuNEM3MC42IDAgNjMgOC41IDY0LjEgMThjMy45IDMxLjkgMTggNjEuMyA0MC42IDg0LjQgMTIgMTIuMiAxOS43IDI3LjUgMjIuNCA0NC4xem0xMTIgMGMxLjMgNy43IDggMTMuNSAxNiAxMy41aDE2LjVjOS44IDAgMTcuNi04LjUgMTYuMy0xOC0zLjgtMjguMi0xNi40LTU0LjItMzYuNi03NC43LTE0LjQtMTQuNy0yMy42LTMzLjMtMjYuNC01My41QzIyMy44IDUuOSAyMTcgMCAyMDguOCAwaC0xNi40Yy05LjggMC0xNy41IDguNS0xNi4zIDE4IDMuOSAzMS45IDE4IDYxLjMgNDAuNiA4NC40IDEyIDEyLjIgMTkuNyAyNy41IDIyLjQgNDQuMXpNNDAwIDE5MkgzMmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MTkyYzAgNTMgNDMgOTYgOTYgOTZoMTkyYzUzIDAgOTYtNDMgOTYtOTZoMTZjNjEuOCAwIDExMi01MC4yIDExMi0xMTJzLTUwLjItMTEyLTExMi0xMTJ6bTAgMTYwaC0xNnYtOTZoMTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTXVzaWMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDcwLjM4IDEuNTFMMTUwLjQxIDk2QTMyIDMyIDAgMCAwIDEyOCAxMjYuNTF2MjYxLjQxQTEzOSAxMzkgMCAwIDAgOTYgMzg0Yy01MyAwLTk2IDI4LjY2LTk2IDY0czQzIDY0IDk2IDY0IDk2LTI4LjY2IDk2LTY0VjIxNC4zMmwyNTYtNzV2MTg0LjYxYTEzOC40IDEzOC40IDAgMCAwLTMyLTMuOTNjLTUzIDAtOTYgMjguNjYtOTYgNjRzNDMgNjQgOTYgNjQgOTYtMjguNjUgOTYtNjRWMzJhMzIgMzIgMCAwIDAtNDEuNjItMzAuNDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhTmV0d29ya1dpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0MCAyNjR2LTE2YzAtOC44NC03LjE2LTE2LTE2LTE2SDM0NHYtNDBoNzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDIyNGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg3MnY0MEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTA0djQwSDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE2MGMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjM1MmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC01NnYtNDBoMzA0djQwaC01NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxMjhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzNTJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNTZ2LTQwaDEwNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnpNMjU2IDEyOFY2NGgxMjh2NjRIMjU2em0tNjQgMzIwSDk2di02NGg5NnY2NHptMzUyIDBoLTk2di02NGg5NnY2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFOZXV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDE3NmMwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NFMwIDk2LjUgMCAxNzZjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQ2OGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyVjMxNi40YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0xNDQgODBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5ld3NwYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NTIgNjRIODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0NzJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTU2IDQwMGE4IDggMCAwIDEtOC04VjE0NGgxNnYyNDhhOCA4IDAgMCAxLTggOHptMjM2LTE2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0tMjA4LTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtOGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE1MmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjhjMCA2LjYyNy01LjM3MyAxMi0xMiAxMnptMjA4IDBIMzQ4Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi04YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTUyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyem0wLTk2SDE0MGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgzNjBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0MGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdEVxdWFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAyMDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjMuODhsNTEuODctNjYuODFjNS4zNy03LjAyIDQuMDQtMTcuMDYtMi45Ny0yMi40M0w0MTUuNjEgMy4zYy03LjAyLTUuMzgtMTcuMDYtNC4wNC0yMi40NCAyLjk3TDMxMS4wOSAxMTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgyMDQuNTZsLTc0LjUzIDk2SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNTUuNDlsLTUxLjg3IDY2LjgxYy01LjM3IDcuMDEtNC4wNCAxNy4wNSAyLjk3IDIyLjQzTDY0IDUwOC43YzcuMDIgNS4zOCAxNy4wNiA0LjA0IDIyLjQzLTIuOTdMMTY4LjUyIDQwMEg0MTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgyNDMuMDVsNzQuNTMtOTZINDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU5vdGVzTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em05NiAzMDRjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OGMwLTQuNCAzLjYtOCA4LThoNTZ2LTU2YzAtNC40IDMuNi04IDgtOGg0OGM0LjQgMCA4IDMuNiA4IDh2NTZoNTZjNC40IDAgOCAzLjYgOCA4djQ4em0wLTE5MmMwIDQuNC0zLjYgOC04IDhIMTA0Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxNzZjNC40IDAgOCAzLjYgOCA4djE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9iamVjdEdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxMjhWOTZoMjBjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyMEg2NFY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyMHYzMjBIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yMGgzODR2MjBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yMFYxMjh6TTk2IDI3NlYxNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNjhjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYxMzZjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgxMDhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTMyMCA5NmMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDIzNmMtNi42MjcgMC0xMi01LjM3My0xMi0xMnYtNTJoNzJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di03Mmg4NGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjEzNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPYmplY3RVbmdyb3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0IDMyMHYyNmE2IDYgMCAwIDEtNiA2SDZhNiA2IDAgMCAxLTYtNnYtNTJhNiA2IDAgMCAxIDYtNmgyNlY5Nkg2YTYgNiAwIDAgMS02LTZWMzhhNiA2IDAgMCAxIDYtNmg1MmE2IDYgMCAwIDEgNiA2djI2aDI4OFYzOGE2IDYgMCAwIDEgNi02aDUyYTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtMjZ2MTkyaDI2YTYgNiAwIDAgMSA2IDZ2NTJhNiA2IDAgMCAxLTYgNmgtNTJhNiA2IDAgMCAxLTYtNnYtMjZINjR6bTQ4MC02NHYtMzJoMjZhNiA2IDAgMCAwIDYtNnYtNTJhNiA2IDAgMCAwLTYtNmgtNTJhNiA2IDAgMCAwLTYgNnYyNkg0MDh2NzJoOGMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NjRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC02NGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04SDE5MnY3MmgtMjZhNiA2IDAgMCAwLTYgNnY1MmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTI2aDI4OHYyNmE2IDYgMCAwIDAgNiA2aDUyYTYgNiAwIDAgMCA2LTZ2LTUyYTYgNiAwIDAgMC02LTZoLTI2VjI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPaWxDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI5LjggMTYwLjMxTDQxNiAyMjRsLTUwLjQ5LTI1LjI0YTY0LjA3IDY0LjA3IDAgMCAwLTI4LjYyLTYuNzZIMjgwdi00OGg1NmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTc2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmg1NnY0OGgtNTZMMzcuNzIgMTY2Ljg2YTMxLjkgMzEuOSAwIDAgMC01Ljc5LS41M0MxNC42NyAxNjYuMzMgMCAxODAuMzYgMCAxOTguMzR2OTQuOTVjMCAxNS40NiAxMS4wNiAyOC43MiAyNi4yOCAzMS40OEw5NiAzMzcuNDZWMzg0YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMjc0LjYzYzguNTUgMCAxNi43NS0zLjQyIDIyLjc2LTkuNTFsMjEyLjI2LTIxNC43NWMxLjUtMS41IDIuMzQtMy41NCAyLjM0LTUuNjZWMTY4Yy4wMS01LjMxLTUuMDgtOS4xNS0xMC4xOS03LjY5ek05NiAyODguNjdsLTQ4LTguNzN2LTYyLjQzbDQ4IDguNzN2NjIuNDN6bTQ1My4zMyA4NC42NmMwIDIzLjU2IDE5LjEgNDIuNjcgNDIuNjcgNDIuNjdzNDIuNjctMTkuMSA0Mi42Ny00Mi42N1M1OTIgMjg4IDU5MiAyODhzLTQyLjY3IDYxLjc3LTQyLjY3IDg1LjMzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYU9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MC42IDYwLjk0YTEwLjQzIDEwLjQzIDAgMCAwIDE0Ljc2IDBsMjEuNTctMjEuNTZhMTAuNDMgMTAuNDMgMCAwIDAgMC0xNC43NkwzNzUuMzUgMy4wNmMtNC4wOC00LjA3LTEwLjY4LTQuMDctMTQuNzYgMGwtMjEuNTcgMjEuNTZhMTAuNDMgMTAuNDMgMCAwIDAgMCAxNC43NmwyMS41OCAyMS41NnpNNDEyLjExIDE5MmMtMjYuNjkgMC01MS43NyAxMC4zOS03MC42NCAyOS4yNWwtMjQuMjUgMjQuMjVjLTYuNzggNi43Ny0xNS43OCAxMC41LTI1LjM4IDEwLjVIMjQ1YzEwLjU0LTIyLjEgMTQuMTctNDguMTEgNy43My03NS4yMy0xMC4xLTQyLjU1LTQ2LjM2LTc2LjExLTg5LjUyLTgzLjE5LTM2LjE1LTUuOTMtNzAuOSA1LjA0LTk2LjAxIDI4Ljc4LTcuMzYgNi45Ni02Ljk3IDE4Ljg1IDEuMTIgMjQuOTNsMjYuMTUgMTkuNjNjNS43MiA0LjMgMTMuNjYgNC4zMiAxOS4yLS4yMSA4LjQ1LTYuOSAxOS4wMi0xMC43MSAzMC4yNy0xMC43MSAyNi40NyAwIDQ4LjAxIDIxLjUzIDQ4LjAxIDQ4cy0yMS41NCA0OC00OC4wMSA0OGgtMzEuOWMtMTEuOTYgMC0xOS43NCAxMi41OC0xNC4zOSAyMy4yOGwxNi4wOSAzMi4xN2MyLjUzIDUuMDYgNy42IDguMSAxMy4xNyA4LjU1aDMzLjAzYzM1LjMgMCA2NC4wMSAyOC43IDY0LjAxIDY0cy0yOC43MSA2NC02NC4wMSA2NGMtOTYuMDIgMC0xMjIuMzUtNTQuMDItMTQ1LjE1LTkyLjAzLTQuNTMtNy41NS0xNC43Ny0zLjU4LTE0Ljc5IDUuMjJDLS4wOSA0MTYgNDEuMTMgNTEyIDE1OS45NCA1MTJjNzAuNTkgMCAxMjguMDItNTcuNDIgMTI4LjAyLTEyOCAwLTIzLjQyLTYuNzgtNDUuMS0xNy44MS02NGgyMS42OWMyNi42OSAwIDUxLjc3LTEwLjM5IDcwLjY0LTI5LjI1bDI0LjI1LTI0LjI1YzYuNzgtNi43NyAxNS43OC0xMC41IDI1LjM4LTEwLjUgMTkuNzggMCAzNS44OCAxNi4wOSAzNS44OCAzNS44OFYzOTJjMCAxMy4yMy0xOC43NyAyNC0zMi4wMSAyNC0zOS40IDAtNjYuNjctMjQuMjQtODEuODItNDIuODktNC43Ny01Ljg3LTE0LjItMi41NC0xNC4yIDUuMDJWNDE2czAgNjQgOTYuMDIgNjRjNDguNTQgMCA5Ni4wMi0zOS40NyA5Ni4wMi04OFYyOTEuODhjMC01NS4wOC00NC44LTk5Ljg4LTk5Ljg5LTk5Ljg4em00Mi4xOC0xMjQuNzNjLTg1LjU1IDY1LjEyLTE2OS4wNSAyLjc1LTE3Mi41OC4wNS02LjAyLTQuNjItMTQuNDQtNC4zOC0yMC4xNC41NS01Ljc0IDQuOTItNy4yNyAxMy4xNy0zLjY2IDE5LjggMS42MSAyLjk1IDQwLjM3IDcyLjM0IDExOC44IDcyLjM0IDc5LjkyIDAgOTguNzgtMzEuMzYgMTAxLjc1LTM3LjY2IDEuMDItMi4xMiAxLjUzLTQuNDcgMS41My02LjgzVjgwYzAtMTMuMjItMTUuMTQtMjAuNjktMjUuNy0xMi43M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFPdHRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzJoLTMybC0xMy4yNS0xMy4yNUE2My45NyA2My45NyAwIDAgMCA1MTcuNDkgMEg0OTdjLTExLjE0IDAtMjIuMDggMi45MS0zMS43NSA4LjQzTDMxMiA5NmgtNTZDMTQ5Ljk2IDk2IDY0IDE4MS45NiA2NCAyODh2MS42MWMwIDMyLjc1LTE2IDYyLjE0LTM5LjU2IDg0Ljg5LTE4LjE5IDE3LjU4LTI4LjEgNDMuNjgtMjMuMTkgNzEuOCA2Ljc2IDM4LjggNDIuOSA2NS43IDgyLjI4IDY1LjdIMTkyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMySDgwYy04LjgzIDAtMTYtNy4xNy0xNi0xNnM3LjE3LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtNjRsMTQ5LjQ5LTgwLjVMNDQ4IDQxNmg4MGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMjguMjJsLTU1LjExLTExMC4yMUw1MjEuMTQgMTkySDU0NGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2VjY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS05NiAxNmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnMtNy4xNiAxNi0xNiAxNi0xNi03LjE2LTE2LTE2IDcuMTYtMTYgMTYtMTZ6bTMyIDk2aC0zNC45Nkw0MDcuMiAxOTguODRsLTEzLjc3LTI3LjU1TDUxMiAxMTJoNzcuMDVjLTYuNjIgMTguNTgtMjQuMjIgMzItNDUuMDUgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhT3V0ZGVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDAuNjkgMzYzLjI5YzEwIDEwIDI3LjMxIDIuOTMgMjcuMzEtMTEuMzFWMTYwYzAtMTQuMzItMTcuMzMtMjEuMzEtMjcuMzEtMTEuMzFsLTk2IDk2YTE2IDE2IDAgMCAwIDAgMjIuNjJ6TTQzMiA0MTZIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptMy4xNy0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAzMDAuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDM1MmgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDMzOS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDI4OHptMC0xMjhIMjA0LjgzQTEyLjgyIDEyLjgyIDAgMCAwIDE5MiAxNzIuODN2MzguMzRBMTIuODIgMTIuODIgMCAwIDAgMjA0LjgzIDIyNGgyMzAuMzRBMTIuODIgMTIuODIgMCAwIDAgNDQ4IDIxMS4xN3YtMzguMzRBMTIuODIgMTIuODIgMCAwIDAgNDM1LjE3IDE2MHpNNDMyIDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhZ2VyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA2NEg2NGE2NCA2NCAwIDAgMC02NCA2NHYyNTZhNjQgNjQgMCAwIDAgNjQgNjRoMzg0YTY0IDY0IDAgMCAwIDY0LTY0VjEyOGE2NCA2NCAwIDAgMC02NC02NHpNMTYwIDM2OEg4MGExNiAxNiAwIDAgMS0xNi0xNnYtMTZhMTYgMTYgMCAwIDEgMTYtMTZoODB6bTEyOC0xNmExNiAxNiAwIDAgMS0xNiAxNmgtODB2LTQ4aDgwYTE2IDE2IDAgMCAxIDE2IDE2em0xNjAtMTI4YTMyIDMyIDAgMCAxLTMyIDMySDk2YTMyIDMyIDAgMCAxLTMyLTMydi02NGEzMiAzMiAwIDAgMSAzMi0zMmgzMjBhMzIgMzIgMCAwIDEgMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFpbnRCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjcuMDIgMzA5LjM0Yy00MC4xMiAyLjU4LTc2LjUzIDE3Ljg2LTk3LjE5IDcyLjMtMi4zNSA2LjIxLTggOS45OC0xNC41OSA5Ljk4LTExLjExIDAtNDUuNDYtMjcuNjctNTUuMjUtMzQuMzVDMCA0MzkuNjIgMzcuOTMgNTEyIDEyOCA1MTJjNzUuODYgMCAxMjgtNDMuNzcgMTI4LTEyMC4xOSAwLTMuMTEtLjY1LTYuMDgtLjk3LTkuMTNsLTg4LjAxLTczLjM0ek00NTcuODkgMGMtMTUuMTYgMC0yOS4zNyA2LjcxLTQwLjIxIDE2LjQ1QzIxMy4yNyAxOTkuMDUgMTkyIDIwMy4zNCAxOTIgMjU3LjA5YzAgMTMuNyAzLjI1IDI2Ljc2IDguNzMgMzguN2w2My44MiA1My4xOGM3LjIxIDEuOCAxNC42NCAzLjAzIDIyLjM5IDMuMDMgNjIuMTEgMCA5OC4xMS00NS40NyAyMTEuMTYtMjU2LjQ2IDcuMzgtMTQuMzUgMTMuOS0yOS44NSAxMy45LTQ1Ljk5QzUxMiAyMC42NCA0ODYgMCA0NTcuODkgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYWludFJvbGxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgMTI4VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzNTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptMzItNjR2MTI4YzAgMTcuNjctMTQuMzMgMzItMzIgMzJIMjU2Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0djMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDY0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ2LTMyaDE2MGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2di02NGMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhbGV0dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA0LjMgNUMxMDQuOSAyNC40IDI0LjggMTA0LjMgNS4yIDIwMy40Yy0zNyAxODcgMTMxLjcgMzI2LjQgMjU4LjggMzA2LjcgNDEuMi02LjQgNjEuNC01NC42IDQyLjUtOTEuNy0yMy4xLTQ1LjQgOS45LTk4LjQgNjAuOS05OC40aDc5LjdjMzUuOCAwIDY0LjgtMjkuNiA2NC45LTY1LjNDNTExLjUgOTcuMSAzNjguMS0yNi45IDIwNC4zIDV6TTk2IDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTMyLTEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOC02NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bTEyOCA2NGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0NCAyNTZoMzUyYzguOCAwIDE2LTcuMiAxNi0xNlYxNmMwLTguOC03LjItMTYtMTYtMTZIMzg0djEyOGwtNjQtMzItNjQgMzJWMEgxNDRjLTguOCAwLTE2IDcuMi0xNiAxNnYyMjRjMCA4LjggNy4yIDE2IDE2IDE2em00ODAgMTI4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDQ4djY0SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNmgtNDh2LTY0aDQ4em0tMzM2IDY0SDEyOHYtNjRoMTYwdjY0em0yMjQgMEgzNTJ2LTY0aDE2MHY2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3NiAzLjJMMTIuNSAyNzAuNmMtMTguMSAxMC40LTE1LjggMzUuNiAyLjIgNDMuMkwxMjEgMzU4LjRsMjg3LjMtMjUzLjJjNS41LTQuOSAxMy4zIDIuNiA4LjYgOC4zTDE3NiA0MDd2ODAuNWMwIDIzLjYgMjguNSAzMi45IDQyLjUgMTUuOEwyODIgNDI2bDEyNC42IDUyLjJjMTQuMiA2IDMwLjQtMi45IDMzLTE4LjJsNzItNDMyQzUxNSA3LjggNDkzLjMtNi44IDQ3NiAzLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFwZXJjbGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzLjI0NiA0NjYuMTQyYy01OC40My02MC4yODktNTcuMzQxLTE1Ny41MTEgMS4zODYtMjE3LjU4MUwyNTQuMzkyIDM0YzQ0LjMxNi00NS4zMzIgMTE2LjM1MS00NS4zMzYgMTYwLjY3MSAwIDQzLjg5IDQ0Ljg5NCA0My45NDMgMTE3LjMyOSAwIDE2Mi4yNzZMMjMyLjIxNCAzODMuMTI4Yy0yOS44NTUgMzAuNTM3LTc4LjYzMyAzMC4xMTEtMTA3Ljk4Mi0uOTk4LTI4LjI3NS0yOS45Ny0yNy4zNjgtNzcuNDczIDEuNDUyLTEwNi45NTNsMTQzLjc0My0xNDYuODM1YzYuMTgyLTYuMzE0IDE2LjMxMi02LjQyMiAyMi42MjYtLjI0MWwyMi44NjEgMjIuMzc5YzYuMzE1IDYuMTgyIDYuNDIyIDE2LjMxMi4yNDEgMjIuNjI2TDE3MS40MjcgMzE5LjkyN2MtNC45MzIgNS4wNDUtNS4yMzYgMTMuNDI4LS42NDggMTguMjkyIDQuMzcyIDQuNjM0IDExLjI0NSA0LjcxMSAxNS42ODguMTY1bDE4Mi44NDktMTg2Ljg1MWMxOS42MTMtMjAuMDYyIDE5LjYxMy01Mi43MjUtLjAxMS03Mi43OTgtMTkuMTg5LTE5LjYyNy00OS45NTctMTkuNjM3LTY5LjE1NCAwTDkwLjM5IDI5My4yOTVjLTM0Ljc2MyAzNS41Ni0zNS4yOTkgOTMuMTItMS4xOTEgMTI4LjMxMyAzNC4wMSAzNS4wOTMgODguOTg1IDM1LjEzNyAxMjMuMDU4LjI4NmwxNzIuMDYtMTc1Ljk5OWM2LjE3Ny02LjMxOSAxNi4zMDctNi40MzMgMjIuNjI2LS4yNTZsMjIuODc3IDIyLjM2NGM2LjMxOSA2LjE3NyA2LjQzNCAxNi4zMDcuMjU2IDIyLjYyNmwtMTcyLjA2IDE3NS45OThjLTU5LjU3NiA2MC45MzgtMTU1Ljk0MyA2MC4yMTYtMjE0Ljc3LS40ODV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFyYWNodXRlQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMS45IDE3NWMtOS4xLTc1LjYtNzguNC0xMzIuNC0xNTguMy0xNTguN0MzOTAgNTUuNyA0MTYgMTE2LjkgNDE2IDE5MmgyOC4xTDMyNy41IDMyMS41Yy0yLjUtLjYtNC44LTEuNS03LjUtMS41aC00OFYxOTJoMTEyQzM4NCA3Ni44IDMxNS4xIDAgMjU2IDBTMTI4IDc2LjggMTI4IDE5MmgxMTJ2MTI4aC00OGMtMi43IDAtNSAuOS03LjUgMS41TDY3LjkgMTkySDk2YzAtNzUuMSAyNi0xMzYuMyA2Mi40LTE3NS43Qzc4LjUgNDIuNyA5LjIgOTkuNS4xIDE3NWMtMS4xIDkuMSA2LjggMTcgMTYgMTdoOC43bDEzNi43IDE1MS45Yy0uNyAyLjYtMS42IDUuMi0xLjYgOC4xdjEyOGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzUyYzAtMi45LS45LTUuNC0xLjYtOC4xTDQ4Ny4xIDE5Mmg4LjdjOS4zIDAgMTcuMi03LjggMTYuMS0xN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXJhZ3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDQ4djMyYTE2IDE2IDAgMCAxLTE2IDE2aC00OHYzNjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2Vjk2aC0zMnYzNjhhMTYgMTYgMCAwIDEtMTYgMTZoLTMyYTE2IDE2IDAgMCAxLTE2LTE2VjM1MmgtMzJhMTYwIDE2MCAwIDAgMSAwLTMyMGgyNDBhMTYgMTYgMCAwIDEgMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGFya2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0yNDAgMzIwaC00OHY0OGMwIDguOC03LjIgMTYtMTYgMTZoLTMyYy04LjggMC0xNi03LjItMTYtMTZWMTQ0YzAtOC44IDcuMi0xNiAxNi0xNmg5NmM1Mi45IDAgOTYgNDMuMSA5NiA5NnMtNDMuMSA5Ni05NiA5NnptMC0xMjhoLTQ4djY0aDQ4YzE3LjYgMCAzMi0xNC40IDMyLTMycy0xNC40LTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3Nwb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOS42MiAxNzZoMzkuMDljMS40OS0yNy4wMyA2LjU0LTUxLjM1IDE0LjIxLTcwLjQxLTI3LjcxIDEzLjI0LTQ4LjAyIDM5LjE5LTUzLjMgNzAuNDF6bTAgMzJjNS4yOSAzMS4yMiAyNS41OSA1Ny4xNyA1My4zIDcwLjQxLTcuNjgtMTkuMDYtMTIuNzItNDMuMzgtMTQuMjEtNzAuNDFoLTM5LjA5ek0yMjQgMjg2LjY5YzcuNjktNy40NSAyMC43Ny0zNC40MiAyMy40My03OC42OWgtNDYuODdjMi42NyA0NC4yNiAxNS43NSA3MS4yNCAyMy40NCA3OC42OXpNMjAwLjU3IDE3Nmg0Ni44N2MtMi42Ni00NC4yNi0xNS43NC03MS4yNC0yMy40My03OC42OS03LjcgNy40NS0yMC43OCAzNC40My0yMy40NCA3OC42OXptNjQuNTEgMTAyLjQxYzI3LjcxLTEzLjI0IDQ4LjAyLTM5LjE5IDUzLjMtNzAuNDFoLTM5LjA5Yy0xLjQ5IDI3LjAzLTYuNTMgNTEuMzUtMTQuMjEgNzAuNDF6TTQxNiAwSDY0QzI4LjY1IDAgMCAyOC42NSAwIDY0djM4NGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM1MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6bS04MCA0MTZIMTEyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2aDIyNGM4LjggMCAxNiA3LjIgMTYgMTZzLTcuMiAxNi0xNiAxNnptLTExMi05NmMtNzAuNjkgMC0xMjgtNTcuMzEtMTI4LTEyOFMxNTMuMzEgNjQgMjI0IDY0czEyOCA1Ny4zMSAxMjggMTI4LTU3LjMxIDEyOC0xMjggMTI4em00MS4wOC0yMTQuNDFjNy42OCAxOS4wNiAxMi43MiA0My4zOCAxNC4yMSA3MC40MWgzOS4wOWMtNS4yOC0zMS4yMi0yNS41OS01Ny4xNy01My4zLTcwLjQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3RhZmFyaWFuaXNtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNC41NCAzNDcuNjdjLTMyLjctMTIuNTItNTcuMzYgNC4yNS03NS4zNyAxNi40NS0xNy4wNiAxMS41My0yMy4yNSAxNC40Mi0zMS40MSAxMS4zNi04LjEyLTMuMDktMTAuODMtOS4zOC0xNS44OS0yOS4zOC0zLjMzLTEzLjE1LTcuNDQtMjkuMzItMTcuOTUtNDIuNjUgMi4yNC0yLjkxIDQuNDMtNS43OSA2LjM4LTguNTdDNTAwLjQ3IDMwNC40NSA1MTMuNzEgMzEyIDUzMiAzMTJjMzMuOTUgMCA1MC44Ny0yNS43OCA2Mi4wNi00Mi44MyAxMC41OS0xNi4xNCAxNS0yMS4xNyAyMS45NC0yMS4xNyAxMy4yNSAwIDI0LTEwLjc1IDI0LTI0cy0xMC43NS0yNC0yNC0yNGMtMzMuOTUgMC01MC44NyAyNS43OC02Mi4wNiA0Mi44My0xMC42IDE2LjE0LTE1IDIxLjE3LTIxLjk0IDIxLjE3LTE3LjMxIDAtMzcuNDgtNjEuNDMtOTcuMjYtMTAxLjkxbDE3LjI1LTM0LjVDNDg1LjQzIDEyNS41IDUxMiA5Ny45OCA1MTIgNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHMtNjQgMjguNjUtNjQgNjRjMCAxMy4wMiAzLjk0IDI1LjEgMTAuNjIgMzUuMjFsLTE4LjE1IDM2LjNjLTE2Ljk4LTQuNi0zNS42LTcuNTEtNTYuNDYtNy41MXMtMzkuNDkgMi45MS01Ni40NiA3LjUxbC0xOC4xNS0zNi4zQzI1Mi4wNiA4OS4xIDI1NiA3Ny4wMiAyNTYgNjRjMC0zNS4zNS0yOC42NS02NC02NC02NHMtNjQgMjguNjUtNjQgNjRjMCAzMy45OCAyNi41NiA2MS41IDYwLjAyIDYzLjZsMTcuMjUgMzQuNUMxNDUuNjggMjAyLjQ0IDEyNS4xNSAyNjQgMTA4IDI2NGMtNi45NCAwLTExLjM0LTUuMDMtMjEuOTQtMjEuMTdDNzQuODggMjI1Ljc4IDU3Ljk2IDIwMCAyNCAyMDBjLTEzLjI1IDAtMjQgMTAuNzUtMjQgMjRzMTAuNzUgMjQgMjQgMjRjNi45NCAwIDExLjM0IDUuMDMgMjEuOTQgMjEuMTdDNTcuMTMgMjg2LjIyIDc0LjA1IDMxMiAxMDggMzEyYzE4LjI5IDAgMzEuNTMtNy41NSA0MS43LTE3LjExIDEuOTUgMi43OSA0LjE0IDUuNjYgNi4zOCA4LjU3LTEwLjUxIDEzLjMzLTE0LjYyIDI5LjUtMTcuOTUgNDIuNjUtNS4wNiAyMC03Ljc3IDI2LjI4LTE1Ljg5IDI5LjM4LTguMTEgMy4wNi0xNC4zMy4xNy0zMS40MS0xMS4zNi0xOC4wMy0xMi4yLTQyLjcyLTI4LjkyLTc1LjM3LTE2LjQ1LTEyLjM5IDQuNzItMTguNTkgMTguNTgtMTMuODcgMzAuOTcgNC43MiAxMi40MSAxOC42MSAxOC42MSAzMC45NyAxMy44OCA4LjE2LTMuMDkgMTQuMzQtLjE5IDMxLjM5IDExLjM2IDEzLjU1IDkuMTYgMzAuODMgMjAuODYgNTIuNDIgMjAuODQgNy4xNyAwIDE0LjgzLTEuMjggMjIuOTctNC4zOSAzMi42Ni0xMi40NCAzOS45OC00MS4zMyA0NS4zMy02Mi40NCAyLjIxLTguNzIgMy45OS0xNC40OSA1Ljk1LTE4Ljg3IDE2LjYyIDEzLjYxIDM2Ljk1IDI1Ljg4IDYxLjY0IDM0LjE3LTkuOTYgMzctMzIuMTggOTAuOC02MC4yNiA5MC44LTEzLjI1IDAtMjQgMTAuNzUtMjQgMjRzMTAuNzUgMjQgMjQgMjRjNjYuNzQgMCA5Ny4wNS04OC42MyAxMDcuNDItMTI5LjE0IDYuNjkuNiAxMy40MiAxLjE0IDIwLjU4IDEuMTRzMTMuODktLjU0IDIwLjU4LTEuMTRDMzUwLjk1IDQyMy4zNyAzODEuMjYgNTEyIDQ0OCA1MTJjMTMuMjUgMCAyNC0xMC43NSAyNC0yNHMtMTAuNzUtMjQtMjQtMjRjLTI3Ljk0IDAtNTAuMjEtNTMuODEtNjAuMjItOTAuODEgMjQuNjktOC4yOSA0NS0yMC41NiA2MS42Mi0zNC4xNiAxLjk2IDQuMzggMy43NCAxMC4xNSA1Ljk1IDE4Ljg3IDUuMzQgMjEuMTEgMTIuNjcgNTAgNDUuMzMgNjIuNDQgOC4xNCAzLjExIDE1LjggNC4zOSAyMi45NyA0LjM5IDIxLjU5IDAgMzguODctMTEuNjkgNTIuNDItMjAuODQgMTcuMDUtMTEuNTUgMjMuMjgtMTQuNDUgMzEuMzktMTEuMzYgMTIuMzkgNC43NSAyNi4yNy0xLjQ3IDMwLjk3LTEzLjg4IDQuNzEtMTIuNC0xLjQ5LTI2LjI2LTEzLjg5LTMwLjk4ek00NDggNDhjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2em0tMjU2IDBjOC44MiAwIDE2IDcuMTggMTYgMTZzLTcuMTggMTYtMTYgMTYtMTYtNy4xOC0xNi0xNiA3LjE4LTE2IDE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhc3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxODRjMC0zMC44NzkgMjUuMTIyLTU2IDU2LTU2aDEzNlY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRoLTgwLjYxQzIwNC4zMDYgMTIuODkgMTgzLjYzNyAwIDE2MCAwcy00NC4zMDYgMTIuODktNTUuMzkgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2MzM2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRWMTg0em0zMi0xNDRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHptMTg0IDI0OGgxMDR2MjAwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgxODRjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFYxODRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDEzNnYxMDRjMCAxMy4yIDEwLjggMjQgMjQgMjR6bTEwNC0zOC4wNTlWMjU2aC05NnYtOTZoNi4wNTlhMjQgMjQgMCAwIDEgMTYuOTcgNy4wMjlsNjUuOTQxIDY1Ljk0MWEyNC4wMDIgMjQuMDAyIDAgMCAxIDcuMDMgMTYuOTcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bS0xNiAzMjhjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHptMTEyIDBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2djE2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXVzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgNDc5SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY3OWMwLTI2LjUgMjEuNS00OCA0OC00OGg5NmMyNi41IDAgNDggMjEuNSA0OCA0OHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDh6bTMwNC00OFY3OWMwLTI2LjUtMjEuNS00OC00OC00OGgtOTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg5NmMyNi41IDAgNDgtMjEuNSA0OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQYXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDIyNGMtNzkuNDEgMC0xOTIgMTIyLjc2LTE5MiAyMDAuMjUgMCAzNC45IDI2LjgxIDU1Ljc1IDcxLjc0IDU1Ljc1IDQ4Ljg0IDAgODEuMDktMjUuMDggMTIwLjI2LTI1LjA4IDM5LjUxIDAgNzEuODUgMjUuMDggMTIwLjI2IDI1LjA4IDQ0LjkzIDAgNzEuNzQtMjAuODUgNzEuNzQtNTUuNzVDNDQ4IDM0Ni43NiAzMzUuNDEgMjI0IDI1NiAyMjR6bS0xNDcuMjgtMTIuNjFjLTEwLjQtMzQuNjUtNDIuNDQtNTcuMDktNzEuNTYtNTAuMTMtMjkuMTIgNi45Ni00NC4yOSA0MC42OS0zMy44OSA3NS4zNCAxMC40IDM0LjY1IDQyLjQ0IDU3LjA5IDcxLjU2IDUwLjEzIDI5LjEyLTYuOTYgNDQuMjktNDAuNjkgMzMuODktNzUuMzR6bTg0LjcyLTIwLjc4YzMwLjk0LTguMTQgNDYuNDItNDkuOTQgMzQuNTgtOTMuMzZzLTQ2LjUyLTcyLjAxLTc3LjQ2LTYzLjg3LTQ2LjQyIDQ5Ljk0LTM0LjU4IDkzLjM2YzExLjg0IDQzLjQyIDQ2LjUzIDcyLjAyIDc3LjQ2IDYzLjg3em0yODEuMzktMjkuMzRjLTI5LjEyLTYuOTYtNjEuMTUgMTUuNDgtNzEuNTYgNTAuMTMtMTAuNCAzNC42NSA0Ljc3IDY4LjM4IDMzLjg5IDc1LjM0IDI5LjEyIDYuOTYgNjEuMTUtMTUuNDggNzEuNTYtNTAuMTMgMTAuNC0zNC42NS00Ljc3LTY4LjM4LTMzLjg5LTc1LjM0em0tMTU2LjI3IDI5LjM0YzMwLjk0IDguMTQgNjUuNjItMjAuNDUgNzcuNDYtNjMuODcgMTEuODQtNDMuNDItMy42NC04NS4yMS0zNC41OC05My4zNnMtNjUuNjIgMjAuNDUtNzcuNDYgNjMuODdjLTExLjg0IDQzLjQyIDMuNjQgODUuMjIgMzQuNTggOTMuMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMTg0IDI0OGMwIDMxLjkzLTguMiA2MS45Ny0yMi41NyA4OC4xN0wyODAgMjQwLjYzVjc0Ljk3Yzg2LjIzIDE1LjIxIDE1MiA5MC41IDE1MiAxODEuMDN6TTIxNiA0MzcuMDNjLTMzLjg2LTUuOTctNjQuNDktMjEuMi04OS4yOS00My4wMkwyMTYgMzIyLjU3djExNC40NnptNjQtMTE0LjQ2TDM2OS4yOSAzOTRjLTI0LjggMjEuODItNTUuNDMgMzcuMDUtODkuMjkgNDMuMDJWMzIyLjU3em0tNjQtMjQ3LjZ2MTY1LjY2TDg2LjU3IDM0NC4xN0M3Mi4yIDMxNy45NyA2NCAyODcuOTMgNjQgMjU2YzAtOTAuNTMgNjUuNzctMTY1LjgyIDE1Mi0xODEuMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5Ny45NCA3NC4xN2wtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXptLTI0Ni44LTIwLjUzYy0xNS42Mi0xNS42Mi00MC45NC0xNS42Mi01Ni41NiAwTDc1LjggMTcyLjQzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYybDIyLjYzIDIyLjYzYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBsMTAxLjgyLTEwMS44MiAyMi42MyAyMi42Mkw5My45NSAyOTAuMDNBMzI3LjAzOCAzMjcuMDM4IDAgMCAwIC4xNyA0ODUuMTFsLS4wMy4yM2MtMS43IDE1LjI4IDExLjIxIDI4LjIgMjYuNDkgMjYuNTFhMzI3LjAyIDMyNy4wMiAwIDAgMCAxOTUuMzQtOTMuOGwxOTYuNzktMTk2Ljc5LTgyLjc3LTgyLjc3LTg0Ljg1LTg0Ljg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbkZhbmN5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTc5LjE4IDI4Mi45NGEzMi4wMDUgMzIuMDA1IDAgMCAwLTIwLjI0IDIwLjI0TDAgNDgwbDQuNjkgNC42OSA5Mi44OS05Mi44OWMtLjY2LTIuNTYtMS41Ny01LjAzLTEuNTctNy44IDAtMTcuNjcgMTQuMzMtMzIgMzItMzJzMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJjLTIuNzcgMC01LjI0LS45MS03LjgtMS41N2wtOTIuODkgOTIuODlMMzIgNTEybDE3Ni44Mi01OC45NGEzMS45ODMgMzEuOTgzIDAgMCAwIDIwLjI0LTIwLjI0bDMzLjA3LTg0LjA3LTk4Ljg4LTk4Ljg4LTg0LjA3IDMzLjA3ek0zNjkuMjUgMjguMzJMMTg2LjE0IDIyNy44MWw5Ny44NSA5Ny44NSAxOTkuNDktMTgzLjExQzU2OC40IDY3LjQ4IDQ0My43My01NS45NCAzNjkuMjUgMjguMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVuTmliIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi42IDEzOC43OWE2NC4wMDMgNjQuMDAzIDAgMCAwLTQzLjMxIDQxLjM1TDAgNDYwbDE0LjY5IDE0LjY5TDE2NC44IDMyNC41OGMtMi45OS02LjI2LTQuOC0xMy4xOC00LjgtMjAuNTggMC0yNi41MSAyMS40OS00OCA0OC00OHM0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OGMtNy40IDAtMTQuMzItMS44MS0yMC41OC00LjhMMzcuMzEgNDk3LjMxIDUyIDUxMmwyNzkuODYtOTMuMjlhNjQuMDAzIDY0LjAwMyAwIDAgMCA0MS4zNS00My4zMUw0MTYgMjI0IDI4OCA5NmwtMTUxLjQgNDIuNzl6bTM2MS4zNC02NC42MmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzUgMTguNzUtNDkuMTUgMC02Ny45MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OHpNMjM4LjEgMTc3LjlMMTAyLjQgMzEzLjZsLTYuMyA1Ny4xYy0uOCA3LjYgNS42IDE0LjEgMTMuMyAxMy4zbDU3LjEtNi4zTDMwMi4yIDI0MmMyLjMtMi4zIDIuMy02LjEgMC04LjVMMjQ2LjcgMTc4Yy0yLjUtMi40LTYuMy0yLjQtOC42LS4xek0zNDUgMTY1LjFMMzE0LjkgMTM1Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMGwtMjMuMSAyMy4xYy0yLjMgMi4zLTIuMyA2LjEgMCA4LjVsNTUuNSA1NS41YzIuMyAyLjMgNi4xIDIuMyA4LjUgMEwzNDUgMTk5YzkuMy05LjMgOS4zLTI0LjUgMC0zMy45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTAuNzQgOTMuMjRsMTI4LjAyIDEyOC4wMi0yNzcuOTkgMjc3Ljk5LTExNC4xNCAxMi42QzExLjM1IDUxMy41NC0xLjU2IDUwMC42Mi4xNCA0ODUuMzRsMTIuNy0xMTQuMjIgMjc3LjktMjc3Ljg4em0yMDcuMi0xOS4wNmwtNjAuMTEtNjAuMTFjLTE4Ljc1LTE4Ljc1LTQ5LjE2LTE4Ljc1LTY3LjkxIDBsLTU2LjU1IDU2LjU1IDEyOC4wMiAxMjguMDIgNTYuNTUtNTYuNTVjMTguNzUtMTguNzYgMTguNzUtNDkuMTYgMC02Ny45MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjkgMTQyLjFsLTQ2LjEgNDYuMWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0xMTEtMTExYy00LjctNC43LTQuNy0xMi4zIDAtMTdsNDYuMS00Ni4xYzE4LjctMTguNyA0OS4xLTE4LjcgNjcuOSAwbDYwLjEgNjAuMWMxOC44IDE4LjcgMTguOCA0OS4xIDAgNjcuOXpNMjg0LjIgOTkuOEwyMS42IDM2Mi40LjQgNDgzLjljLTIuOSAxNi40IDExLjQgMzAuNiAyNy44IDI3LjhsMTIxLjUtMjEuMyAyNjIuNi0yNjIuNmM0LjctNC43IDQuNy0xMi4zIDAtMTdsLTExMS0xMTFjLTQuOC00LjctMTIuNC00LjctMTcuMSAwek0xMjQuMSAzMzkuOWMtNS41LTUuNS01LjUtMTQuMyAwLTE5LjhsMTU0LTE1NGM1LjUtNS41IDE0LjMtNS41IDE5LjggMHM1LjUgMTQuMyAwIDE5LjhsLTE1NCAxNTRjLTUuNSA1LjUtMTQuMyA1LjUtMTkuOCAwek04OCA0MjRoNDh2MzYuM2wtNjQuNSAxMS4zLTMxLjEtMzEuMUw1MS43IDM3Nkg4OHY0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW5jaWxSdWxlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuNDYgMjQ0LjA0bDEzNC41OC0xMzQuNTYtNDQuMTItNDQuMTItNjEuNjggNjEuNjhhNy45MTkgNy45MTkgMCAwIDEtMTEuMjEgMGwtMTEuMjEtMTEuMjFjLTMuMS0zLjEtMy4xLTguMTIgMC0xMS4yMWw2MS42OC02MS42OC0zMy42NC0zMy42NUMxMzEuNDctMy4xIDExMS4zOS0zLjEgOTkgOS4yOUw5LjI5IDk5Yy0xMi4zOCAxMi4zOS0xMi4zOSAzMi40NyAwIDQ0Ljg2bDEwMC4xNyAxMDAuMTh6bTM4OC40Ny0xMTYuOGMxOC43Ni0xOC43NiAxOC43NS00OS4xNyAwLTY3LjkzbC00NS4yNS00NS4yNWMtMTguNzYtMTguNzYtNDkuMTgtMTguNzYtNjcuOTUgMGwtNDYuMDIgNDYuMDEgMTEzLjIgMTEzLjIgNDYuMDItNDYuMDN6TTMxNi4wOCA4Mi43MWwtMjk3IDI5Ni45NkwuMzIgNDg3LjExYy0yLjUzIDE0LjQ5IDEwLjA5IDI3LjExIDI0LjU5IDI0LjU2bDEwNy40NS0xOC44NEw0MjkuMjggMTk1LjkgMzE2LjA4IDgyLjcxem0xODYuNjMgMjg1LjQzbC0zMy42NC0zMy42NC02MS42OCA2MS42OGMtMy4xIDMuMS04LjEyIDMuMS0xMS4yMSAwbC0xMS4yMS0xMS4yMWMtMy4wOS0zLjEtMy4wOS04LjEyIDAtMTEuMjFsNjEuNjgtNjEuNjgtNDQuMTQtNDQuMTRMMjY3LjkzIDQwMi41bDEwMC4yMSAxMDAuMmMxMi4zOSAxMi4zOSAzMi40NyAxMi4zOSA0NC44NiAwbDg5LjcxLTg5LjdjMTIuMzktMTIuMzkgMTIuMzktMzIuNDcgMC00NC44NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZW9wbGVBcnJvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTYsMTI4QTY0LDY0LDAsMSwwLDMyLDY0LDY0LDY0LDAsMCwwLDk2LDEyOFptMCwxNzYuMDhhNDQuMTEsNDQuMTEsMCwwLDEsMTMuNjQtMzJMMTgxLjc3LDIwNGMxLjY1LTEuNTUsMy43Ny0yLjMxLDUuNjEtMy41N0E2My45MSw2My45MSwwLDAsMCwxMjgsMTYwSDY0QTY0LDY0LDAsMCwwLDAsMjI0djk2YTMyLDMyLDAsMCwwLDMyLDMyVjQ4MGEzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMlYzODMuNjFsLTUwLjM2LTQ3LjUzQTQ0LjA4LDQ0LjA4LDAsMCwxLDk2LDMwNC4wOFpNNDgwLDEyOGE2NCw2NCwwLDEsMC02NC02NEE2NCw2NCwwLDAsMCw0ODAsMTI4Wm0zMiwzMkg0NDhhNjMuOTEsNjMuOTEsMCwwLDAtNTkuMzgsNDAuNDJjMS44NCwxLjI3LDQsMiw1LjYyLDMuNTlsNzIuMTIsNjguMDZhNDQuMzcsNDQuMzcsMCwwLDEsMCw2NEw0MTYsMzgzLjYyVjQ4MGEzMiwzMiwwLDAsMCwzMiwzMmg2NGEzMiwzMiwwLDAsMCwzMi0zMlYzNTJhMzIsMzIsMCwwLDAsMzItMzJWMjI0QTY0LDY0LDAsMCwwLDUxMiwxNjBaTTQ0NC40LDI5NS4zNGwtNzIuMTItNjguMDZBMTIsMTIsMCwwLDAsMzUyLDIzNnYzNkgyMjRWMjM2YTEyLDEyLDAsMCwwLTIwLjI4LTguNzNMMTMxLjYsMjk1LjM0YTEyLjQsMTIuNCwwLDAsMCwwLDE3LjQ3bDcyLjEyLDY4LjA3QTEyLDEyLDAsMCwwLDIyNCwzNzIuMTRWMzM2SDM1MnYzNi4xNGExMiwxMiwwLDAsMCwyMC4yOCw4Ljc0bDcyLjEyLTY4LjA3QTEyLjQsMTIuNCwwLDAsMCw0NDQuNCwyOTUuMzRaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVvcGxlQ2FycnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzE1NC41IDAgMTI4IDAgODAgMjEuNSA4MCA0OHMyMS41IDQ4IDQ4IDQ4em0zODQgMGMyNi41IDAgNDgtMjEuNSA0OC00OFM1MzguNSAwIDUxMiAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTEyNS43IDM3Mi4xbC00NC0xMTAtNDEuMSA0Ni40LTIgMTguMiAyNy43IDY5LjJjNSAxMi41IDE3IDIwLjEgMjkuNyAyMC4xIDQgMCA4LS43IDExLjktMi4zIDE2LjQtNi42IDI0LjQtMjUuMiAxNy44LTQxLjZ6bS0zNC4yLTIwOS44TDU4NSAxNzguMWMtNC42LTIwLTE4LjYtMzYuOC0zNy41LTQ0LjktMTguNS04LTM5LTYuNy01Ni4xIDMuMy0yMi43IDEzLjQtMzkuNyAzNC41LTQ4LjEgNTkuNEw0MzIgMjI5LjggNDE2IDI0MHYtOTZjMC04LjgtNy4yLTE2LTE2LTE2SDI0MGMtOC44IDAtMTYgNy4yLTE2IDE2djk2bC0xNi4xLTEwLjItMTEuMy0zMy45Yy04LjMtMjUtMjUuNC00Ni00OC4xLTU5LjQtMTcuMi0xMC0zNy42LTExLjMtNTYuMS0zLjMtMTguOSA4LjEtMzIuOSAyNC45LTM3LjUgNDQuOWwtMTguNCA4MC4yYy00LjYgMjAgLjcgNDEuMiAxNC40IDU2LjdsNjcuMiA3NS45IDEwLjEgOTIuNkMxMzAgNDk5LjggMTQzLjggNTEyIDE2MCA1MTJjMS4yIDAgMi4zLS4xIDMuNS0uMiAxNy42LTEuOSAzMC4yLTE3LjcgMjguMy0zNS4zbC0xMC4xLTkyLjhjLTEuNS0xMy02LjktMjUuMS0xNS42LTM1bC00My4zLTQ5IDE3LjYtNzAuMyA2LjggMjAuNGM0LjEgMTIuNSAxMS45IDIzLjQgMjQuNSAzMi42bDUxLjEgMzIuNWM0LjYgMi45IDEyLjEgNC42IDE3LjIgNWgxNjBjNS4xLS40IDEyLjYtMi4xIDE3LjItNWw1MS4xLTMyLjVjMTIuNi05LjIgMjAuNC0yMCAyNC41LTMyLjZsNi44LTIwLjQgMTcuNiA3MC4zLTQzLjMgNDljLTguNyA5LjktMTQuMSAyMi0xNS42IDM1bC0xMC4xIDkyLjhjLTEuOSAxNy42IDEwLjggMzMuNCAyOC4zIDM1LjMgMS4yLjEgMi4zLjIgMy41LjIgMTYuMSAwIDMwLTEyLjEgMzEuOC0yOC41bDEwLjEtOTIuNiA2Ny4yLTc1LjljMTMuNi0xNS41IDE5LTM2LjcgMTQuNC01Ni43ek00Ni4zIDM1OC4xbC00NCAxMTBjLTYuNiAxNi40IDEuNCAzNSAxNy44IDQxLjYgMTYuOCA2LjYgMzUuMS0xLjcgNDEuNi0xNy44bDI3LjctNjkuMi0yLTE4LjItNDEuMS00Ni40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBlcHBlckhvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzAuNjcgMjYzLjEyVjE3My40bC01Mi43NS0yNC4yMkMyMTkuNDQgMjE4Ljc2IDE5Ny41OCA0MDAgNTYgNDAwYTU2IDU2IDAgMCAwIDAgMTEyYzIxMi42NCAwIDM3MC42NS0xMjIuODcgNDE5LjE4LTIxMC4zNGwtMzcuMDUtMzguNTR6bTEzMS4wOS0xMjguMzdDNDkzLjkyIDc0LjkxIDQ3Ny4xOCAyNi40OCA0NTguNjIgM2E4IDggMCAwIDAtMTEuOTMtLjU5bC0yMi45IDIzYTguMDYgOC4wNiAwIDAgMC0uODkgMTAuMjNjNi44NiAxMC4zNiAxNy4wNSAzNS4xLTEuNCA3Mi4zMkExNDIuODUgMTQyLjg1IDAgMCAwIDM2NC4zNCA5NmMtMjggMC01NCA4LjU0LTc2LjM0IDIyLjU5bDc0LjY3IDM0LjI5djc4LjI0aDg5LjA5TDUwNi40NCAyODhjMy4yNi0xMi42MiA1LjU2LTI1LjYzIDUuNTYtMzkuMzFhMTU0IDE1NCAwIDAgMC01MC4yNC0xMTMuOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTIgMjI0YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzE3My45IDAgMTEyIDAgMCA1MC4xIDAgMTEyczUwLjEgMTEyIDExMiAxMTJ6bTAtMTYwYzI2LjUgMCA0OCAyMS41IDQ4IDQ4cy0yMS41IDQ4LTQ4IDQ4LTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OHptMjI0IDIyNGMtNjEuOSAwLTExMiA1MC4xLTExMiAxMTJzNTAuMSAxMTIgMTEyIDExMiAxMTItNTAuMSAxMTItMTEyLTUwLjEtMTEyLTExMi0xMTJ6bTAgMTYwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpNMzkyLjMuMmwzMS42LS4xYzE5LjQtLjEgMzAuOSAyMS44IDE5LjcgMzcuOEw3Ny40IDUwMS42YTIzLjk1IDIzLjk1IDAgMCAxLTE5LjYgMTAuMmwtMzMuNC4xYy0xOS41IDAtMzAuOS0yMS45LTE5LjctMzcuOGwzNjgtNDYzLjdDMzc3LjIgNCAzODQuNS4yIDM5Mi4zLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGVyY2VudGFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDkuMjUgMTczLjI1YzI0Ljk5LTI0Ljk5IDI0Ljk5LTY1LjUyIDAtOTAuNTEtMjQuOTktMjQuOTktNjUuNTItMjQuOTktOTAuNTEgMC0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxIDI1IDI1IDY1LjUyIDI1IDkwLjUxIDB6bTI1NiAxNjUuNDljLTI0Ljk5LTI0Ljk5LTY1LjUyLTI0Ljk5LTkwLjUxIDAtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTIgMCA5MC41MSAyNC45OSAyNC45OSA2NS41MiAyNC45OSA5MC41MSAwIDI1LTI0Ljk5IDI1LTY1LjUxIDAtOTAuNTF6bS0xLjk0LTIzMS40M2wtMjIuNjItMjIuNjJjLTEyLjUtMTIuNS0zMi43Ni0xMi41LTQ1LjI1IDBMMjAuNjkgMzU5LjQ0Yy0xMi41IDEyLjUtMTIuNSAzMi43NiAwIDQ1LjI1bDIyLjYyIDIyLjYyYzEyLjUgMTIuNSAzMi43NiAxMi41IDQ1LjI1IDBsMjc0Ljc1LTI3NC43NWMxMi41LTEyLjQ5IDEyLjUtMzIuNzUgMC00NS4yNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQZXJzb25Cb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwaC02NHYxNzZ6bTMyLTI3MmgtNTAuOWwtNDUuMi00NS4zQzExNS44IDE2Ni42IDk5LjcgMTYwIDgyLjcgMTYwSDY0Yy0xNy4xIDAtMzMuMiA2LjctNDUuMyAxOC44QzYuNyAxOTAuOSAwIDIwNyAwIDIyNC4xTC4yIDMyMCAwIDQ4MGMwIDE3LjcgMTQuMyAzMiAzMS45IDMyIDE3LjYgMCAzMi0xNC4zIDMyLTMybC4xLTEwMC43Yy45LjUgMS42IDEuMyAyLjUgMS43bDI5LjEgNDN2NTZjMCAxNy43IDE0LjMgMzIgMzIgMzJzMzItMTQuMyAzMi0zMnYtNTYuNWMwLTkuOS0yLjMtMTkuOC02LjctMjguNmwtNDEuMi02MS4zVjI1M2wyMC45IDIwLjljOS4xIDkuMSAyMS4xIDE0LjEgMzMuOSAxNC4xSDIyNGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMnpNNjQgMTI4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4UzkwLjUgMzIgNjQgMzIgMTYgNTMuNSAxNiA4MHMyMS41IDQ4IDQ4IDQ4em0yMjQtOTZsMzEuNSAyMjMuMS0zMC45IDE1NC42Yy00LjMgMjEuNiAxMyAzOC4zIDMxLjQgMzguMyAxNS4yIDAgMjgtOS4xIDMyLjMtMzAuNC45IDE2LjkgMTQuNiAzMC40IDMxLjcgMzAuNCAxNy43IDAgMzItMTQuMyAzMi0zMiAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyVjBIMjg4djMyem0tOTYgMHYxNjBoNjRWMGgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyek01NDQgMGgtMzJ2NDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzJjMC0xNy43LTE0LjMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk3LjM5IDM2MS44bC0xMTItNDhhMjQgMjQgMCAwIDAtMjggNi45bC00OS42IDYwLjZBMzcwLjY2IDM3MC42NiAwIDAgMSAxMzAuNiAyMDQuMTFsNjAuNi00OS42YTIzLjk0IDIzLjk0IDAgMCAwIDYuOS0yOGwtNDgtMTEyQTI0LjE2IDI0LjE2IDAgMCAwIDEyMi42LjYxbC0xMDQgMjRBMjQgMjQgMCAwIDAgMCA0OGMwIDI1Ni41IDIwNy45IDQ2NCA0NjQgNDY0YTI0IDI0IDAgMCAwIDIzLjQtMTguNmwyNC0xMDRhMjQuMjkgMjQuMjkgMCAwIDAtMTQuMDEtMjcuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaG9uZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4yIDM4MS40bC00OS42LTYwLjZjLTYuOC04LjMtMTguMi0xMS4xLTI4LTYuOWwtMTEyIDQ4Yy0xMC43IDQuNi0xNi41IDE2LjEtMTMuOSAyNy41bDI0IDEwNGMyLjUgMTAuOCAxMi4xIDE4LjYgMjMuNCAxOC42IDEwMC43IDAgMTkzLjctMzIuNCAyNjkuNy04Ni45bC04MC02MS44Yy0xMC45IDYuNS0yMi4xIDEyLjctMzMuNiAxOC4xem0zNjUuNiA3Ni43TDQ3NS4xIDMzNS41QzUzNy45IDI1Ni40IDU3NiAxNTYuOSA1NzYgNDhjMC0xMS4yLTcuNy0yMC45LTE4LjYtMjMuNGwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0xMi4yIDI2LjEtMjcuOSA1MC4zLTQ2IDcyLjhMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRsNTg4LjQgNDU0LjdjNyA1LjQgMTcgNC4yIDIyLjUtMi44bDE5LjYtMjUuM2M1LjQtNi44IDQuMS0xNi45LTIuOS0yMi4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lU3F1YXJlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEE0OCA0OCAwIDAgMCAwIDgwdjM1MmE0OCA0OCAwIDAgMCA0OCA0OGgzNTJhNDggNDggMCAwIDAgNDgtNDhWODBhNDggNDggMCAwIDAtNDgtNDh6bS0xNi4zOSAzMDcuMzdsLTE1IDY1QTE1IDE1IDAgMCAxIDM1NCA0MTZDMTk0IDQxNiA2NCAyODYuMjkgNjQgMTI2YTE1LjcgMTUuNyAwIDAgMSAxMS42My0xNC42MWw2NS0xNUExOC4yMyAxOC4yMyAwIDAgMSAxNDQgOTZhMTYuMjcgMTYuMjcgMCAwIDEgMTMuNzkgOS4wOWwzMCA3MEExNy45IDE3LjkgMCAwIDEgMTg5IDE4MWExNyAxNyAwIDAgMS01LjUgMTEuNjFsLTM3Ljg5IDMxYTIzMS45MSAyMzEuOTEgMCAwIDAgMTEwLjc4IDExMC43OGwzMS0zNy44OUExNyAxNyAwIDAgMSAyOTkgMjkxYTE3Ljg1IDE3Ljg1IDAgMCAxIDUuOTEgMS4yMWw3MCAzMEExNi4yNSAxNi4yNSAwIDAgMSAzODQgMzM2YTE3LjQxIDE3LjQxIDAgMCAxLS4zOSAzLjM3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob25lU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNOTQgNDE2Yy03LjAzMyAwLTEzLjA1Ny00Ljg3My0xNC42MTYtMTEuNjI3bC0xNC45OTgtNjVhMTUgMTUgMCAwIDEgOC43MDctMTcuMTZsNjkuOTk4LTI5Ljk5OWExNSAxNSAwIDAgMSAxNy41MTggNC4yODlsMzAuOTk3IDM3Ljg4NWM0OC45NDQtMjIuOTYzIDg4LjI5Ny02Mi44NTggMTEwLjc4MS0xMTAuNzhsLTM3Ljg4Ni0zMC45OTdhMTUuMDAxIDE1LjAwMSAwIDAgMS00LjI4OS0xNy41MThsMzAtNjkuOTk4YTE1IDE1IDAgMCAxIDE3LjE2LTguNzA3bDY1IDE0Ljk5OEExNC45OTcgMTQuOTk3IDAgMCAxIDM4NCAxMjZjMCAxNjAuMjkyLTEyOS45NDUgMjkwLTI5MCAyOTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmVWb2x1bWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOTcuMzMzIDUwNi45NjZjLTEyOS44NzQtMTI5Ljg3NC0xMjkuNjgxLTM0MC4yNTIgMC00NjkuOTMzIDUuNjk4LTUuNjk4IDE0LjUyNy02LjYzMiAyMS4yNjMtMi40MjJsNjQuODE3IDQwLjUxM2ExNy4xODcgMTcuMTg3IDAgMCAxIDYuODQ5IDIwLjk1OGwtMzIuNDA4IDgxLjAyMWExNy4xODggMTcuMTg4IDAgMCAxLTE3LjY2OSAxMC43MTlsLTU1LjgxLTUuNThjLTIxLjA1MSA1OC4yNjEtMjAuNjEyIDEyMi40NzEgMCAxNzkuNTE1bDU1LjgxMS01LjU4MWExNy4xODggMTcuMTg4IDAgMCAxIDE3LjY2OSAxMC43MTlsMzIuNDA4IDgxLjAyMmExNy4xODggMTcuMTg4IDAgMCAxLTYuODQ5IDIwLjk1OGwtNjQuODE3IDQwLjUxM2ExNy4xOSAxNy4xOSAwIDAgMS0yMS4yNjQtMi40MjJ6TTI0Ny4xMjYgOTUuNDczYzExLjgzMiAyMC4wNDcgMTEuODMyIDQ1LjAwOCAwIDY1LjA1NS0zLjk1IDYuNjkzLTEzLjEwOCA3Ljk1OS0xOC43MTggMi41ODFsLTUuOTc1LTUuNzI2Yy0zLjkxMS0zLjc0OC00Ljc5My05LjYyMi0yLjI2MS0xNC40MWEzMi4wNjMgMzIuMDYzIDAgMCAwIDAtMjkuOTQ1Yy0yLjUzMy00Ljc4OC0xLjY1LTEwLjY2MiAyLjI2MS0xNC40MWw1Ljk3NS01LjcyNmM1LjYxLTUuMzc4IDE0Ljc2OC00LjExMiAxOC43MTggMi41ODF6bTkxLjc4Ny05MS4xODdjNjAuMTQgNzEuNjA0IDYwLjA5MiAxNzUuODgyIDAgMjQ3LjQyOC00LjQ3NCA1LjMyNy0xMi41MyA1Ljc0Ni0xNy41NTIuOTMzbC01Ljc5OC01LjU1N2MtNC41Ni00LjM3MS00Ljk3Ny0xMS41MjktLjkzLTE2LjM3OSA0OS42ODctNTkuNTM4IDQ5LjY0Ni0xNDUuOTMzIDAtMjA1LjQyMi00LjA0Ny00Ljg1LTMuNjMxLTEyLjAwOC45My0xNi4zNzlsNS43OTgtNS41NTdjNS4wMjItNC44MTMgMTMuMDc4LTQuMzk0IDE3LjU1Mi45MzN6bS00NS45NzIgNDQuOTQxYzM2LjA1IDQ2LjMyMiAzNi4xMDggMTExLjE0OSAwIDE1Ny41NDYtNC4zOSA1LjY0MS0xMi42OTcgNi4yNTEtMTcuODU2IDEuMzA0bC01LjgxOC01LjU3OWMtNC40LTQuMjE5LTQuOTk4LTExLjA5NS0xLjI4NS0xNS45MzEgMjYuNTM2LTM0LjU2NCAyNi41MzQtODIuNTcyIDAtMTE3LjEzNC0zLjcxMy00LjgzNi0zLjExNS0xMS43MTEgMS4yODUtMTUuOTMxbDUuODE4LTUuNTc5YzUuMTU5LTQuOTQ3IDEzLjQ2Ni00LjMzNyAxNy44NTYgMS4zMDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDkzLjQgMjQuNmwtMTA0LTI0Yy0xMS4zLTIuNi0yMi45IDMuMy0yNy41IDEzLjlsLTQ4IDExMmMtNC4yIDkuOC0xLjQgMjEuMyA2LjkgMjhsNjAuNiA0OS42Yy0zNiA3Ni43LTk4LjkgMTQwLjUtMTc3LjIgMTc3LjJsLTQ5LjYtNjAuNmMtNi44LTguMy0xOC4yLTExLjEtMjgtNi45bC0xMTIgNDhDMy45IDM2Ni41LTIgMzc4LjEuNiAzODkuNGwyNCAxMDRDMjcuMSA1MDQuMiAzNi43IDUxMiA0OCA1MTJjMjU2LjEgMCA0NjQtMjA3LjUgNDY0LTQ2NCAwLTExLjItNy43LTIwLjktMTguNi0yMy40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBob3RvVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjA4IDBIMTYwYTMyIDMyIDAgMCAwLTMyIDMydjk2aDE2MFY2NGgxOTJ2MzIwaDEyOGEzMiAzMiAwIDAgMCAzMi0zMlYzMmEzMiAzMiAwIDAgMC0zMi0zMnpNMjMyIDEwM2E5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05VjczYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMzUyIDIwOGE5IDkgMCAwIDEtOSA5aC0zMGE5IDkgMCAwIDEtOS05di0zMGE5IDkgMCAwIDEgOS05aDMwYTkgOSAwIDAgMSA5IDl6bTAtMTA0YTkgOSAwIDAgMS05IDloLTMwYTkgOSAwIDAgMS05LTl2LTMwYTkgOSAwIDAgMSA5LTloMzBhOSA5IDAgMCAxIDkgOXptMC0xMDRhOSA5IDAgMCAxLTkgOWgtMzBhOSA5IDAgMCAxLTktOVY3M2E5IDkgMCAwIDEgOS05aDMwYTkgOSAwIDAgMSA5IDl6bS0xNjggNTdIMzJhMzIgMzIgMCAwIDAtMzIgMzJ2Mjg4YTMyIDMyIDAgMCAwIDMyIDMyaDM4NGEzMiAzMiAwIDAgMCAzMi0zMlYxOTJhMzIgMzIgMCAwIDAtMzItMzJ6TTk2IDIyNGEzMiAzMiAwIDEgMS0zMiAzMiAzMiAzMiAwIDAgMSAzMi0zMnptMjg4IDIyNEg2NHYtMzJsNjQtNjQgMzIgMzIgMTI4LTEyOCA5NiA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaWdneUJhbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTYwIDIyNGgtMjkuNWMtOC44LTIwLTIxLjYtMzcuNy0zNy40LTUyLjVMNTEyIDk2aC0zMmMtMjkuNCAwLTU1LjQgMTMuNS03MyAzNC4zLTcuNi0xLjEtMTUuMS0yLjMtMjMtMi4zSDI1NmMtNzcuNCAwLTE0MS45IDU1LTE1Ni44IDEyOEg1NmMtMTQuOCAwLTI2LjUtMTMuNS0yMy41LTI4LjhDMzQuNyAyMTUuOCA0NS40IDIwOCA1NyAyMDhoMWMzLjMgMCA2LTIuNyA2LTZ2LTIwYzAtMy4zLTIuNy02LTYtNi0yOC41IDAtNTMuOSAyMC40LTU3LjUgNDguNkMtMy45IDI1OC44IDIyLjcgMjg4IDU2IDI4OGg0MGMwIDUyLjIgMjUuNCA5OC4xIDY0IDEyNy4zVjQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoNjRjOC44IDAgMTYtNy4yIDE2LTE2di00OGgxMjh2NDhjMCA4LjggNy4yIDE2IDE2IDE2aDY0YzguOCAwIDE2LTcuMiAxNi0xNnYtODAuN2MxMS44LTguOSAyMi4zLTE5LjQgMzEuMy0zMS4zSDU2MGM4LjggMCAxNi03LjIgMTYtMTZWMjQwYzAtOC44LTcuMi0xNi0xNi0xNnptLTEyOCA2NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2ek0yNTYgOTZoMTI4YzUuNCAwIDEwLjcuNCAxNS45LjggMC0uMy4xLS41LjEtLjggMC01My00My05Ni05Ni05NnMtOTYgNDMtOTYgOTZjMCAyLjEuNSA0LjEuNiA2LjIgMTUuMi0zLjkgMzEtNi4yIDQ3LjQtNi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBpbGxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExMiAzMkM1MC4xIDMyIDAgODIuMSAwIDE0NHYyMjRjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJzMTEyLTUwLjEgMTEyLTExMlYxNDRjMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6bTQ4IDIyNEg2NFYxNDRjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxMTJ6bTEzOS43LTI5LjdjLTMuNS0zLjUtOS40LTMuMS0xMi4zLjgtNDUuMyA2Mi41LTQwLjQgMTUwLjEgMTUuOSAyMDYuNCA1Ni4zIDU2LjMgMTQzLjkgNjEuMiAyMDYuNCAxNS45IDQtMi45IDQuMy04LjguOC0xMi4zTDI5OS43IDIyNi4zem0yMjkuOC0xOWMtNTYuMy01Ni4zLTE0My45LTYxLjItMjA2LjQtMTUuOS00IDIuOS00LjMgOC44LS44IDEyLjNsMjEwLjggMjEwLjhjMy41IDMuNSA5LjQgMy4xIDEyLjMtLjggNDUuMy02Mi42IDQwLjUtMTUwLjEtMTUuOS0yMDYuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQaXp6YVNsaWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1OC44Ny4xNWMtMTYuMTYtMS41Mi0zMS4yIDguNDItMzUuMzMgMjQuMTJsLTE0LjgxIDU2LjI3YzE4Ny42MiA1LjQ5IDMxNC41NCAxMzAuNjEgMzIyLjQ4IDMxN2w1Ni45NC0xNS43OGMxNS43Mi00LjM2IDI1LjQ5LTE5LjY4IDIzLjYyLTM1LjlDNDkwLjg5IDE2NS4wOCAzNDAuNzggMTcuMzIgMTU4Ljg3LjE1em0tNTguNDcgMTEyTC41NSA0OTEuNjRhMTYuMjEgMTYuMjEgMCAwIDAgMjAgMTkuNzVsMzc5LTEwNS4xYy00LjI3LTE3NC44OS0xMjMuMDgtMjkyLjE0LTI5OS4xNS0yOTQuMXpNMTI4IDQxNmEzMiAzMiAwIDEgMSAzMi0zMiAzMiAzMiAwIDAgMS0zMiAzMnptNDgtMTUyYTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyem0xMDQgMTA0YTMyIDMyIDAgMSAxIDMyLTMyIDMyIDMyIDAgMCAxLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYWNlT2ZXb3JzaGlwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMC42MSAzNjYuNTVMNTEyIDMyMHYxOTJoMTEyYzguODQgMCAxNi03LjE2IDE2LTE2VjM5NS45NmEzMiAzMiAwIDAgMC0xOS4zOS0yOS40MXpNMCAzOTUuOTZWNDk2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDExMlYzMjBMMTkuMzkgMzY2LjU1QTMyIDMyIDAgMCAwIDAgMzk1Ljk2em00NjQuNDYtMTQ5LjI4TDQxNiAyMTcuNlYxMDIuNjNjMC04LjQ5LTMuMzctMTYuNjItOS4zOC0yMi42M0wzMzEuMzEgNC42OWMtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjIgMEwyMzMuMzggODBjLTYgNi05LjM4IDE0LjE0LTkuMzggMjIuNjNWMjE3LjZsLTQ4LjQ2IDI5LjA4QTMxLjk5NyAzMS45OTcgMCAwIDAgMTYwIDI3NC4xMlY1MTJoOTZ2LTk2YzAtMzUuMzUgMjguNjYtNjQgNjQtNjRzNjQgMjguNjUgNjQgNjR2OTZoOTZWMjc0LjEyYzAtMTEuMjQtNS45LTIxLjY2LTE1LjU0LTI3LjQ0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lQXJyaXZhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek00NC44MSAyMDUuNjZsODguNzQgODBhNjIuNjA3IDYyLjYwNyAwIDAgMCAyNS40NyAxMy45M2wyODcuNiA3OC4zNWMyNi40OCA3LjIxIDU0LjU2IDguNzIgODEgMS4zNiAyOS42Ny04LjI3IDQzLjQ0LTIxLjIxIDQ3LjI1LTM1LjcxIDMuODMtMTQuNS0xLjczLTMyLjcxLTIzLjM3LTU0Ljk2LTE5LjI4LTE5LjgyLTQ0LjM1LTMyLjc5LTcwLjgzLTQwbC05Ny41MS0yNi41NkwyODIuOCAzMC4yMmMtMS41MS01LjgxLTUuOTUtMTAuMzUtMTEuNjYtMTEuOTFMMjA2LjA1LjU4Yy0xMC41Ni0yLjg4LTIwLjkgNS4zMi0yMC43MSAxNi40NGw0Ny45MiAxNjQuMjEtMTAyLjItMjcuODQtMjcuNTktNjcuODhjLTEuOTMtNC44OS02LjAxLTguNTctMTEuMDItOS45M0w1Mi43MiA2NC43NWMtMTAuMzQtMi44Mi0yMC41MyA1LTIwLjcyIDE1Ljg4bC4yMyAxMDEuNzhjLjE5IDguOTEgNi4wMyAxNy4zNCAxMi41OCAyMy4yNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZURlcGFydHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgNDQ4SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg2MDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2ek04MC41NSAzNDEuMjdjNi4yOCA2Ljg0IDE1LjEgMTAuNzIgMjQuMzMgMTAuNzFsMTMwLjU0LS4xOGE2NS42MiA2NS42MiAwIDAgMCAyOS42NC03LjEybDI5MC45Ni0xNDcuNjVjMjYuNzQtMTMuNTcgNTAuNzEtMzIuOTQgNjcuMDItNTguMzEgMTguMzEtMjguNDggMjAuMy00OS4wOSAxMy4wNy02My42NS03LjIxLTE0LjU3LTI0Ljc0LTI1LjI3LTU4LjI1LTI3LjQ1LTI5Ljg1LTEuOTQtNTkuNTQgNS45Mi04Ni4yOCAxOS40OGwtOTguNTEgNDkuOTktMjE4LjctODIuMDZhMTcuNzk5IDE3Ljc5OSAwIDAgMC0xOC0xLjExTDkwLjYyIDY3LjI5Yy0xMC42NyA1LjQxLTEzLjI1IDE5LjY1LTUuMTcgMjguNTNsMTU2LjIyIDk4LjEtMTAzLjIxIDUyLjM4LTcyLjM1LTM2LjQ3YTE3LjgwNCAxNy44MDQgMCAwIDAtMTYuMDcuMDJMOS45MSAyMzAuMjJjLTEwLjQ0IDUuMy0xMy4xOSAxOS4xMi01LjU3IDI4LjA4bDc2LjIxIDgyLjk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYW5lU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIuNDgsMTQ3Ljg4LDY0LDI1NiwzMi40OCwzNjQuMTNBMTYsMTYsMCwwLDAsNDgsMzg0SDg4YTE2LDE2LDAsMCwwLDEyLjgtNi40MUwxNDQsMzIwSDI0Ni44NWwtNDksMTcxLjU5QTE2LDE2LDAsMCwwLDIxMy4yLDUxMmg2NS41YTE2LDE2LDAsMCwwLDEzLjg5LTguMDZsNjYuNi0xMTYuNTRMMzQuMzUsMTM2LjM0QTE1LjQ3LDE1LjQ3LDAsMCwwLDMyLjQ4LDE0Ny44OFpNNjMzLjgyLDQ1OC4wOSw0NTUuMTQsMzIwSDUxMmMzNS4zNCwwLDk2LTI4LjY2LDk2LTY0cy02MC42Ni02NC05Ni02NEgzOTcuN0wyOTIuNjEsOC4wNkMyOTAuMDYsMy42MSwyODMuODQsMCwyNzguNzEsMEgyMTMuMmExNiwxNiwwLDAsMC0xNS4zOCwyMC4zOWwzNi45NCwxMjkuMjlMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbGFuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODAgMTkySDM2NS43MUwyNjAuNjEgOC4wNkExNi4wMTQgMTYuMDE0IDAgMCAwIDI0Ni43MSAwaC02NS41Yy0xMC42MyAwLTE4LjMgMTAuMTctMTUuMzggMjAuMzlMMjE0Ljg2IDE5MkgxMTJsLTQzLjItNTcuNmMtMy4wMi00LjAzLTcuNzctNi40LTEyLjgtNi40SDE2LjAxQzUuNiAxMjgtMi4wNCAxMzcuNzguNDkgMTQ3Ljg4TDMyIDI1NiAuNDkgMzY0LjEyQy0yLjA0IDM3NC4yMiA1LjYgMzg0IDE2LjAxIDM4NEg1NmM1LjA0IDAgOS43OC0yLjM3IDEyLjgtNi40TDExMiAzMjBoMTAyLjg2bC00OS4wMyAxNzEuNmMtMi45MiAxMC4yMiA0Ljc1IDIwLjQgMTUuMzggMjAuNGg2NS41YzUuNzQgMCAxMS4wNC0zLjA4IDEzLjg5LTguMDZMMzY1LjcxIDMyMEg0ODBjMzUuMzUgMCA5Ni0yOC42NSA5Ni02NHMtNjAuNjUtNjQtOTYtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0xMTUuNyAyNzJsLTE3NiAxMDFjLTE1LjggOC44LTM1LjctMi41LTM1LjctMjFWMTUyYzAtMTguNCAxOS44LTI5LjggMzUuNy0yMWwxNzYgMTA3YzE2LjQgOS4yIDE2LjQgMzIuOSAwIDQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDI0LjQgMjE0LjdMNzIuNCA2LjZDNDMuOC0xMC4zIDAgNi4xIDAgNDcuOVY0NjRjMCAzNy41IDQwLjcgNjAuMSA3Mi40IDQxLjNsMzUyLTIwOGMzMS40LTE4LjUgMzEuNS02NC4xIDAtODIuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQbHVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMCwzMmEzMiwzMiwwLDAsMC02NCwwdjk2aDY0Wm00OCwxMjhIMTZBMTYsMTYsMCwwLDAsMCwxNzZ2MzJhMTYsMTYsMCwwLDAsMTYsMTZIMzJ2MzJBMTYwLjA3LDE2MC4wNywwLDAsMCwxNjAsNDEyLjhWNTEyaDY0VjQxMi44QTE2MC4wNywxNjAuMDcsMCwwLDAsMzUyLDI1NlYyMjRoMTZhMTYsMTYsMCwwLDAsMTYtMTZWMTc2QTE2LDE2LDAsMCwwLDM2OCwxNjBaTTEyOCwzMmEzMiwzMiwwLDAsMC02NCwwdjk2aDY0WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMTQ0IDI3NmMwIDYuNi01LjQgMTItMTIgMTJoLTkydjkyYzAgNi42LTUuNCAxMi0xMiAxMmgtNTZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtOTJoLTkyYy02LjYgMC0xMi01LjQtMTItMTJ2LTU2YzAtNi42IDUuNC0xMiAxMi0xMmg5MnYtOTJjMC02LjYgNS40LTEyIDEyLTEyaDU2YzYuNiAwIDEyIDUuNCAxMiAxMnY5Mmg5MmM2LjYgMCAxMiA1LjQgMTIgMTJ2NTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUGx1c1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tMzIgMjUyYzAgNi42LTUuNCAxMi0xMiAxMmgtOTJ2OTJjMCA2LjYtNS40IDEyLTEyIDEyaC01NmMtNi42IDAtMTItNS40LTEyLTEydi05Mkg5MmMtNi42IDAtMTItNS40LTEyLTEydi01NmMwLTYuNiA1LjQtMTIgMTItMTJoOTJ2LTkyYzAtNi42IDUuNC0xMiAxMi0xMmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ2OTJoOTJjNi42IDAgMTIgNS40IDEyIDEydjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDIwOEgyNzJWNjRjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTQ0SDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjMyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTQ0djE0NGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzA0aDE0NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvZGNhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY3LjQyOSA0ODguNTYzQzI2Mi4yODYgNTA3LjU3MyAyNDIuODU4IDUxMiAyMjQgNTEyYy0xOC44NTcgMC0zOC4yODYtNC40MjctNDMuNDI4LTIzLjQzN0MxNzIuOTI3IDQ2MC4xMzQgMTYwIDM4OC44OTggMTYwIDM1NS43NWMwLTM1LjE1NiAzMS4xNDItNDMuNzUgNjQtNDMuNzVzNjQgOC41OTQgNjQgNDMuNzVjMCAzMi45NDktMTIuODcxIDEwNC4xNzktMjAuNTcxIDEzMi44MTN6TTE1Ni44NjcgMjg4LjU1NGMtMTguNjkzLTE4LjMwOC0yOS45NTgtNDQuMTczLTI4Ljc4NC03Mi41OTkgMi4wNTQtNDkuNzI0IDQyLjM5NS04OS45NTYgOTIuMTI0LTkxLjg4MUMyNzQuODYyIDEyMS45NTggMzIwIDE2NS44MDcgMzIwIDIyMGMwIDI2LjgyNy0xMS4wNjQgNTEuMTE2LTI4Ljg2NiA2OC41NTItMi42NzUgMi42Mi0yLjQwMSA2Ljk4Ni42MjggOS4xODcgOS4zMTIgNi43NjUgMTYuNDYgMTUuMzQzIDIxLjIzNCAyNS4zNjMgMS43NDEgMy42NTQgNi40OTcgNC42NiA5LjQ0OSAxLjg5MSAyOC44MjYtMjcuMDQzIDQ2LjU1My02NS43ODMgNDUuNTExLTEwOC41NjUtMS44NTUtNzYuMjA2LTYzLjU5NS0xMzguMjA4LTEzOS43OTMtMTQwLjM2OUMxNDYuODY5IDczLjc1MyA4MCAxMzkuMjE1IDgwIDIyMGMwIDQxLjM2MSAxNy41MzIgNzguNyA0NS41NSAxMDQuOTg5IDIuOTUzIDIuNzcxIDcuNzExIDEuNzcgOS40NTMtMS44ODcgNC43NzQtMTAuMDIxIDExLjkyMy0xOC41OTggMjEuMjM1LTI1LjM2MyAzLjAyOS0yLjIgMy4zMDQtNi41NjYuNjI5LTkuMTg1ek0yMjQgMEMxMDAuMjA0IDAgMCAxMDAuMTg1IDAgMjI0YzAgODkuOTkyIDUyLjYwMiAxNjUuNjQ3IDEyNS43MzkgMjAxLjQwOCA0LjMzMyAyLjExOCA5LjI2Ny0xLjU0NCA4LjUzNS02LjMxLTIuMzgyLTE1LjUxMi00LjM0Mi0zMC45NDYtNS40MDYtNDQuMzM5LS4xNDYtMS44MzYtMS4xNDktMy40ODYtMi42NzgtNC41MTItNDcuNC0zMS44MDYtNzguNTY0LTg2LjAxNi03OC4xODctMTQ3LjM0Ny41OTItOTYuMjM3IDc5LjI5LTE3NC42NDggMTc1LjUyOS0xNzQuODk5QzMyMC43OTMgNDcuNzQ3IDQwMCAxMjYuNzk3IDQwMCAyMjRjMCA2MS45MzItMzIuMTU4IDExNi40OS04MC42NSAxNDcuODY3LS45OTkgMTQuMDM3LTMuMDY5IDMwLjU4OC01LjYyNCA0Ny4yMy0uNzMyIDQuNzY3IDQuMjAzIDguNDI5IDguNTM1IDYuMzFDMzk1LjIyNyAzODkuNzI3IDQ0OCAzMTQuMTg3IDQ0OCAyMjQgNDQ4IDEwMC4yMDUgMzQ3LjgxNSAwIDIyNCAwem0wIDE2MGMtMzUuMzQ2IDAtNjQgMjguNjU0LTY0IDY0czI4LjY1NCA2NCA2NCA2NCA2NC0yOC42NTQgNjQtNjQtMjguNjU0LTY0LTY0LTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvbGxIIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA0MzJWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4ek0xMTIgMTkyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtMzJjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMTI4YzguODQgMCAxNiA3LjE2IDE2IDE2djMyYzAgOC44NC03LjE2IDE2LTE2IDE2SDExMnptMCA5NmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDIyNGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNkgxMTJ6bTAgOTZjLTguODQgMC0xNi03LjE2LTE2LTE2di0zMmMwLTguODQgNy4xNi0xNiAxNi0xNmg2NGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYzMmMwIDguODQtNy4xNiAxNi0xNiAxNmgtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xNjAgMzY4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZWMjQwYzAtOC44NCA3LjE2LTE2IDE2LTE2aDMyYzguODQgMCAxNiA3LjE2IDE2IDE2djEyOHptOTYgMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2VjE0NGMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYyMjR6bTk2IDBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTMyYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9vU3Rvcm0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA4IDMzNmgtNTcuN2wxNy4zLTY0LjljMi03LjYtMy43LTE1LjEtMTEuNi0xNS4xaC02OGMtNiAwLTExLjEgNC41LTExLjkgMTAuNGwtMTYgMTIwYy0xIDcuMiA0LjYgMTMuNiAxMS45IDEzLjZoNTkuM2wtMjMgOTcuMmMtMS44IDcuNiA0IDE0LjggMTEuNyAxNC44IDQuMiAwIDguMi0yLjIgMTAuNC02bDg4LTE1MmM0LjYtOC0xLjItMTgtMTAuNC0xOHptNjYuNC0xMTEuM2M1LjktOS42IDkuNi0yMC42IDkuNi0zMi43IDAtMzUuMy0yOC43LTY0LTY0LTY0aC01LjljMy42LTEwLjEgNS45LTIwLjcgNS45LTMyIDAtNTMtNDMtOTYtOTYtOTYtNS4yIDAtMTAuMi43LTE1LjEgMS41QzIxOC4zIDE0LjYgMjI0IDMwLjYgMjI0IDQ4YzAgNDQuMi0zNS44IDgwLTgwIDgwaC0xNmMtMzUuMyAwLTY0IDI4LjctNjQgNjQgMCAxMi4xIDMuNyAyMy4xIDkuNiAzMi43QzMyLjYgMjI4IDAgMjYyLjIgMCAzMDRjMCA0NCAzNiA4MCA4MCA4MGg0OC4zYy4xLS42IDAtMS4yIDAtMS44bDE2LTEyMGMzLTIxLjggMjEuNy0zOC4yIDQzLjctMzguMmg2OGMxMy44IDAgMjYuNSA2LjMgMzQuOSAxNy4yczExLjIgMjQuOCA3LjYgMzguMWwtNi42IDI0LjdoMTZjMTUuNyAwIDMwLjMgOC40IDM4LjEgMjIgNy44IDEzLjYgNy44IDMwLjUgMCA0NGwtOC4xIDE0aDMwYzQ0IDAgODAtMzYgODAtODAgLjEtNDEuOC0zMi41LTc2LTczLjUtNzkuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb28gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDUxLjQgMzY5LjFDNDY4LjcgMzU2IDQ4MCAzMzUuNCA0ODAgMzEyYzAtMzkuOC0zMi4yLTcyLTcyLTcyaC0xNC4xYzEzLjQtMTEuNyAyMi4xLTI4LjggMjIuMS00OCAwLTM1LjMtMjguNy02NC02NC02NGgtNS45YzMuNi0xMC4xIDUuOS0yMC43IDUuOS0zMiAwLTUzLTQzLTk2LTk2LTk2LTUuMiAwLTEwLjIuNy0xNS4xIDEuNUMyNTAuMyAxNC42IDI1NiAzMC42IDI1NiA0OGMwIDQ0LjItMzUuOCA4MC04MCA4MGgtMTZjLTM1LjMgMC02NCAyOC43LTY0IDY0IDAgMTkuMiA4LjcgMzYuMyAyMi4xIDQ4SDEwNGMtMzkuOCAwLTcyIDMyLjItNzIgNzIgMCAyMy40IDExLjMgNDQgMjguNiA1Ny4xQzI2LjMgMzc0LjYgMCA0MDQuMSAwIDQ0MGMwIDM5LjggMzIuMiA3MiA3MiA3MmgzNjhjMzkuOCAwIDcyLTMyLjIgNzItNzIgMC0zNS45LTI2LjMtNjUuNC02MC42LTcwLjl6TTE5MiAyNTZjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzItMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyem0xNTkuNSAxMzlDMzQxIDQyMi45IDI5MyA0NDggMjU2IDQ0OHMtODUtMjUuMS05NS41LTUzYy0yLTUuMyAyLTExIDcuOC0xMWgxNzUuNGM1LjggMCA5LjggNS43IDcuOCAxMXpNMzIwIDMyMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG9vcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTEuMzYgMzY5LjE0QzQ2OC42NiAzNTUuOTkgNDgwIDMzNS40MSA0ODAgMzEyYzAtMzkuNzctMzIuMjQtNzItNzItNzJoLTE0LjA3YzEzLjQyLTExLjczIDIyLjA3LTI4Ljc4IDIyLjA3LTQ4IDAtMzUuMzUtMjguNjUtNjQtNjQtNjRoLTUuODhjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05Ni01LjE3IDAtMTAuMTUuNzQtMTUuMTEgMS41MkMyNTAuMzEgMTQuNjQgMjU2IDMwLjYyIDI1NiA0OGMwIDQ0LjE4LTM1LjgyIDgwLTgwIDgwaC0xNmMtMzUuMzUgMC02NCAyOC42NS02NCA2NCAwIDE5LjIyIDguNjUgMzYuMjcgMjIuMDcgNDhIMTA0Yy0zOS43NiAwLTcyIDMyLjIzLTcyIDcyIDAgMjMuNDEgMTEuMzQgNDMuOTkgMjguNjQgNTcuMTRDMjYuMzEgMzc0LjYyIDAgNDA0LjEyIDAgNDQwYzAgMzkuNzYgMzIuMjQgNzIgNzIgNzJoMzY4YzM5Ljc2IDAgNzItMzIuMjQgNzItNzIgMC0zNS44OC0yNi4zMS02NS4zOC02MC42NC03MC44NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQb3J0cmFpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgMEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFY0OGMwLTI2LjUtMjEuNS00OC00OC00OHpNMTkyIDEyOGMzNS4zIDAgNjQgMjguNyA2NCA2NHMtMjguNyA2NC02NCA2NC02NC0yOC43LTY0LTY0IDI4LjctNjQgNjQtNjR6bTExMiAyMzYuOGMwIDEwLjYtMTAgMTkuMi0yMi40IDE5LjJIMTAyLjRDOTAgMzg0IDgwIDM3NS40IDgwIDM2NC44di0xOS4yYzAtMzEuOCAzMC4xLTU3LjYgNjcuMi01Ny42aDVjMTIuMyA1LjEgMjUuNyA4IDM5LjggOHMyNy42LTIuOSAzOS44LThoNWMzNy4xIDAgNjcuMiAyNS44IDY3LjIgNTcuNnYxOS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVBvdW5kU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggMzUyaC00NS40OTVjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTAuODQ4SDEyOFYyODhoODRjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtODR2LTYzLjU1NmMwLTMyLjI2NiAyNC41NjItNTcuMDg2IDYxLjc5Mi01Ny4wODYgMjMuNjU4IDAgNDUuODc4IDExLjUwNSA1Ny42NTIgMTguODQ5IDUuMTUxIDMuMjEzIDExLjg4OCAyLjA1MSAxNS42ODgtMi42ODVsMjguNDkzLTM1LjUxM2M0LjIzMy01LjI3NiAzLjI3OS0xMy4wMDUtMi4xMTktMTcuMDgxQzI3My4xMjQgNTQuNTYgMjM2LjU3NiAzMiAxODcuOTMxIDMyIDEwNi4wMjYgMzIgNDggODQuNzQyIDQ4IDE1Ny45NjFWMjI0SDIwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjh2MTI4SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjk2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMzY0YzAtNi42MjctNS4zNzMtMTItMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUG93ZXJPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDU0LjFjNjMgNDUgMTA0IDExOC42IDEwNCAyMDEuOSAwIDEzNi44LTExMC44IDI0Ny43LTI0Ny41IDI0OEMxMjAgNTA0LjMgOC4yIDM5MyA4IDI1Ni40IDcuOSAxNzMuMSA0OC45IDk5LjMgMTExLjggNTQuMmMxMS43LTguMyAyOC00LjggMzUgNy43TDE2Mi42IDkwYzUuOSAxMC41IDMuMSAyMy44LTYuNiAzMS00MS41IDMwLjgtNjggNzkuNi02OCAxMzQuOS0uMSA5Mi4zIDc0LjUgMTY4LjEgMTY4IDE2OC4xIDkxLjYgMCAxNjguNi03NC4yIDE2OC0xNjkuMS0uMy01MS44LTI0LjctMTAxLjgtNjguMS0xMzQtOS43LTcuMi0xMi40LTIwLjUtNi41LTMwLjlsMTUuOC0yOC4xYzctMTIuNCAyMy4yLTE2LjEgMzQuOC03Ljh6TTI5NiAyNjRWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRoLTMyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHYyNDBjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMTI4YzM1LjM1IDAgNjQtMjguNjUgNjQtNjRTMjkxLjM1IDAgMjU2IDBzLTY0IDI4LjY1LTY0IDY0IDI4LjY1IDY0IDY0IDY0em0tMzAuNjMgMTY5Ljc1YzE0LjA2IDE2LjcyIDM5IDE5LjA5IDU1Ljk3IDUuMjJsODgtNzIuMDJjMTcuMDktMTMuOTggMTkuNTktMzkuMTkgNS42Mi01Ni4yOC0xMy45Ny0xNy4xMS0zOS4xOS0xOS41OS01Ni4zMS01LjYybC01Ny40NCA0Ny0zOC45MS00Ni4zMWMtMTUuNDQtMTguMzktMzkuMjItMjcuOTItNjQtMjUuMzMtMjQuMTkgMi40OC00NS4yNSAxNi4yNy01Ni4zNyAzNi45MmwtNDkuMzcgOTIuMDNjLTIzLjQgNDMuNjQtOC42OSA5Ni4zNyAzNC4xOSAxMjMuNzVMMTMxLjU2IDQzMkg0MGMtMjIuMDkgMC00MCAxNy45MS00MCA0MHMxNy45MSA0MCA0MCA0MGgyMDhjMzQuMDggMCA1My43Ny00Mi43OSAyOC4yOC02OC4yOEwxNjYuNDIgMzMzLjg2bDM0LjgtNjQuODcgMjQuMTUgMjguNzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJheWluZ0hhbmRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3MiAxOTEuOTFjLTE3LjYgMC0zMiAxNC40LTMyIDMydjgwYzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di03Ni41NWMwLTE3LjM5IDQuNzItMzQuNDcgMTMuNjktNDkuMzlsNzcuNzUtMTI5LjU5YzkuMDktMTUuMTYgNC4xOS0zNC44MS0xMC45Ny00My45MS0xNC40NS04LjY3LTMyLjcyLTQuMy00Mi4zIDkuMjEtLjIuMjMtLjYyLjIxLS43OS40OGwtMTE3LjI2IDE3NS45QzExNy41NiAyMDUuOSAxMTIgMjI0LjMxIDExMiAyNDMuMjl2ODAuMjNsLTkwLjEyIDMwLjA0QTMxLjk3NCAzMS45NzQgMCAwIDAgMCAzODMuOTF2OTZjMCAxMC44MiA4LjUyIDMyIDMyIDMyIDIuNjkgMCA1LjQxLS4zNCA4LjA2LTEuMDNsMTc5LjE5LTQ2LjYyQzI2OS4xNiA0NDkuOTkgMzA0IDQwMy44IDMwNCAzNTEuOTF2LTEyOGMwLTE3LjYtMTQuNC0zMi0zMi0zMnptMzQ2LjEyIDE2MS43M0w1MjggMzIzLjZ2LTgwLjIzYzAtMTguOTgtNS41Ni0zNy4zOS0xNi4xMi01My4yM0wzOTQuNjIgMTQuMjVjLS4xOC0uMjctLjU5LS4yNC0uNzktLjQ4LTkuNTgtMTMuNTEtMjcuODUtMTcuODgtNDIuMy05LjIxLTE1LjE2IDkuMDktMjAuMDYgMjguNzUtMTAuOTcgNDMuOTFsNzcuNzUgMTI5LjU5YzguOTcgMTQuOTIgMTMuNjkgMzIgMTMuNjkgNDkuMzlWMzA0YzAgOC44NC03LjE2IDE2LTE2IDE2cy0xNi03LjE2LTE2LTE2di04MGMwLTE3LjYtMTQuNC0zMi0zMi0zMnMtMzIgMTQuNC0zMiAzMnYxMjhjMCA1MS44OSAzNC44NCA5OC4wOCA4NC43NSAxMTIuMzRsMTc5LjE5IDQ2LjYyYzIuNjYuNjkgNS4zOCAxLjAzIDguMDYgMS4wMyAyMy40OCAwIDMyLTIxLjE4IDMyLTMydi05NmMwLTEzLjc3LTguODEtMjUuOTktMjEuODgtMzAuMzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uQm90dGxlQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6TTMyIDQ4MGMwIDE3LjYgMTQuNCAzMiAzMiAzMmgyNTZjMTcuNiAwIDMyLTE0LjQgMzItMzJWMTI4SDMydjM1MnptNjQtMTg0YzAtNC40IDMuNi04IDgtOGg1NnYtNTZjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHY1Nmg1NmM0LjQgMCA4IDMuNiA4IDh2NDhjMCA0LjQtMy42IDgtOCA4aC01NnY1NmMwIDQuNC0zLjYgOC04IDhoLTQ4Yy00LjQgMC04LTMuNi04LTh2LTU2aC01NmMtNC40IDAtOC0zLjYtOC04di00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcmVzY3JpcHRpb25Cb3R0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgMTkyaDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0aDEyMGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMydjY0YzAgMTcuNiAxNC40IDMyIDMyIDMyaDI1NmMxNy42IDAgMzItMTQuNCAzMi0zMlYxMjhIMzJ2NjR6TTM2MCAwSDI0QzEwLjggMCAwIDEwLjggMCAyNHY0OGMwIDEzLjIgMTAuOCAyNCAyNCAyNGgzMzZjMTMuMiAwIDI0LTEwLjggMjQtMjRWMjRjMC0xMy4yLTEwLjgtMjQtMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJlc2NyaXB0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwMS4yNiAzNTJsNzguMDYtNzguMDZjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMMjU2IDMwNi43NGwtODMuOTYtODMuOTZDMjE5LjMxIDIxNi44IDI1NiAxNzYuODkgMjU2IDEyOGMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2SDE2QzcuMTYgMzIgMCAzOS4xNiAwIDQ4djI1NmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtODBoMTguNzVsMTI4IDEyOC03OC4wNiA3OC4wNmMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wyMi42MyAyMi42M2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwTDI1NiAzOTcuMjVsNzguMDYgNzguMDZjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzTDMwMS4yNiAzNTJ6TTY0IDk2aDk2YzE3LjY0IDAgMzIgMTQuMzYgMzIgMzJzLTE0LjM2IDMyLTMyIDMySDY0Vjk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVByaW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCAxOTJWNzcuMjVjMC04LjQ5LTMuMzctMTYuNjItOS4zNy0yMi42M0wzOTMuMzcgOS4zN2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0g5NkM3OC4zMyAwIDY0IDE0LjMzIDY0IDMydjE2MGMtMzUuMzUgMC02NCAyOC42NS02NCA2NHYxMTJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjU2YzAtMzUuMzUtMjguNjUtNjQtNjQtNjR6bS02NCAyNTZIMTI4di05NmgyNTZ2OTZ6bTAtMjI0SDEyOFY2NGgxOTJ2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDh2OTZ6bTQ4IDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQcm9jZWR1cmVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAyMjRIMjcyYy04LjggMC0xNiA3LjItMTYgMTZ2MTQ0SDY0VjE0NGMwLTguOC03LjItMTYtMTYtMTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzNTJjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNDhoNTEydjQ4YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzM2YzAtNjEuOS01MC4xLTExMi0xMTItMTEyek0xMzYgOTZoMTI2LjFsMjcuNiA1NS4yYzUuOSAxMS44IDIyLjcgMTEuOCAyOC42IDBMMzY4IDUxLjggMzkwLjEgOTZINTEyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2SDQwOS45TDM4Mi4zIDguOEMzNzYuNC0zIDM1OS42LTMgMzUzLjcgOC44TDMwNCAxMDguMmwtMTkuOS0zOS44Yy0xLjQtMi43LTQuMS00LjQtNy4yLTQuNEgxMzZjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTI0IDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHJvamVjdERpYWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDMyMEgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzUyYzAtMTcuNjctMTQuMzMtMzItMzItMzJ6TTE5MiAzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjEyOGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk1LjcybDczLjE2IDEyOC4wNEMyMTEuOTggMzAwLjk4IDIzMi40IDI4OCAyNTYgMjg4aC4yOEwxOTIgMTc1LjUxVjEyOGgyMjRWNjRIMTkyVjMyek02MDggMEg0ODBjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTI4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFQdW1wTWVkaWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMzUuNTEsMTU5LjgySDg0LjI0QTY0LDY0LDAsMCwwLDIwLjUxLDIxOEwuMTQsNDQyYTY0LDY0LDAsMCwwLDYzLjc0LDY5LjhoMTkyQTY0LDY0LDAsMCwwLDMxOS42MSw0NDJMMjk5LjI0LDIxOEE2NCw2NCwwLDAsMCwyMzUuNTEsMTU5LjgyWm00LjM3LDE3My4zM2ExMy4zNSwxMy4zNSwwLDAsMS0xMy4zNCwxMy4zNGgtNDB2NDBhMTMuMzMsMTMuMzMsMCwwLDEtMTMuMzMsMTMuMzNIMTQ2LjU0YTEzLjMzLDEzLjMzLDAsMCwxLTEzLjMzLTEzLjMzdi00MGgtNDBhMTMuMzQsMTMuMzQsMCwwLDEtMTMuMzMtMTMuMzRWMzA2LjQ5YTEzLjMzLDEzLjMzLDAsMCwxLDEzLjMzLTEzLjM0aDQwdi00MGExMy4zMywxMy4zMywwLDAsMSwxMy4zMy0xMy4zM2gyNi42N2ExMy4zMywxMy4zMywwLDAsMSwxMy4zMywxMy4zM3Y0MGg0MGExMy4zNCwxMy4zNCwwLDAsMSwxMy4zNCwxMy4zNFpNMzc5LjE5LDkzLjg4LDMzNS44Nyw1MC41NmE2NCw2NCwwLDAsMC00NS4yNC0xOC43NEgyMjMuODhhMzIsMzIsMCwwLDAtMzItMzJoLTY0YTMyLDMyLDAsMCwwLTMyLDMydjk2aDEyOHYtMzJoNjYuNzVsNDMuMzEsNDMuMzFhMTYsMTYsMCwwLDAsMjIuNjMsMGwyMi42Mi0yMi42MkExNiwxNiwwLDAsMCwzNzkuMTksOTMuODhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUHVtcFNvYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM1LjYzLDE2MEg4NC4zN2E2NCw2NCwwLDAsMC02My43NCw1OC4yMUwuMjcsNDQyLjIxQTY0LDY0LDAsMCwwLDY0LDUxMkgyNTZhNjQsNjQsMCwwLDAsNjMuNzQtNjkuNzlsLTIwLjM2LTIyNEE2NCw2NCwwLDAsMCwyMzUuNjMsMTYwWk0xNjAsNDE2Yy0zMy4xMiwwLTYwLTI2LjMzLTYwLTU4Ljc1LDAtMjUsMzUuNy03NS40Nyw1Mi05Ny4yN0ExMCwxMCwwLDAsMSwxNjgsMjYwYzE2LjMzLDIxLjgsNTIsNzIuMjcsNTIsOTcuMjdDMjIwLDM4OS42NywxOTMuMTIsNDE2LDE2MCw0MTZaTTM3OS4zMSw5NC4wNiwzMzYsNTAuNzRBNjQsNjQsMCwwLDAsMjkwLjc1LDMySDIyNEEzMiwzMiwwLDAsMCwxOTIsMEgxMjhBMzIsMzIsMCwwLDAsOTYsMzJ2OTZIMjI0Vjk2aDY2Ljc1bDQzLjMxLDQzLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBsMjIuNjItMjIuNjJBMTYsMTYsMCwwLDAsMzc5LjMxLDk0LjA2WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVB1enpsZVBpZWNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxOS40NDIgMjg4LjY1MWMtNDEuNTE5IDAtNTkuNSAzMS41OTMtODIuMDU4IDMxLjU5M0MzNzcuNDA5IDMyMC4yNDQgNDMyIDE0NCA0MzIgMTQ0cy0xOTYuMjg4IDgwLTE5Ni4yODgtMy4yOTdjMC0zNS44MjcgMzYuMjg4LTQ2LjI1IDM2LjI4OC04NS45ODVDMjcyIDE5LjIxNiAyNDMuODg1IDAgMjEwLjUzOSAwYy0zNC42NTQgMC02Ni4zNjYgMTguODkxLTY2LjM2NiA1Ni4zNDYgMCA0MS4zNjQgMzEuNzExIDU5LjI3NyAzMS43MTEgODEuNzVDMTc1Ljg4NSAyMDcuNzE5IDAgMTY2Ljc1OCAwIDE2Ni43NTh2MzMzLjIzN3MxNzguNjM1IDQxLjA0NyAxNzguNjM1LTI4LjY2MmMwLTIyLjQ3My00MC00MC4xMDctNDAtODEuNDcxIDAtMzcuNDU2IDI5LjI1LTU2LjM0NiA2My41NzctNTYuMzQ2IDMzLjY3MyAwIDYxLjc4OCAxOS4yMTYgNjEuNzg4IDU0LjcxNyAwIDM5LjczNS0zNi4yODggNTAuMTU4LTM2LjI4OCA4NS45ODUgMCA2MC44MDMgMTI5LjY3NSAyNS43MyAxODEuMjMgMjUuNzMgMCAwLTM0LjcyNS0xMjAuMTAxIDI1LjgyNy0xMjAuMTAxIDM1Ljk2MiAwIDQ2LjQyMyAzNi4xNTIgODYuMzA4IDM2LjE1MkM1NTYuNzEyIDQxNiA1NzYgMzg3Ljk5IDU3NiAzNTQuNDQzYzAtMzQuMTk5LTE4Ljk2Mi02NS43OTItNTYuNTU4LTY1Ljc5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRcmNvZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjRoMTkyVjMySDB2MTkyek02NCA5Nmg2NHY2NEg2NFY5NnptMTkyLTY0djE5MmgxOTJWMzJIMjU2em0xMjggMTI4aC02NFY5Nmg2NHY2NHpNMCA0ODBoMTkyVjI4OEgwdjE5MnptNjQtMTI4aDY0djY0SDY0di02NHptMzUyLTY0aDMydjEyOGgtOTZ2LTMyaC0zMnY5NmgtNjRWMjg4aDk2djMyaDY0di0zMnptMCAxNjBoMzJ2MzJoLTMydi0zMnptLTY0IDBoMzJ2MzJoLTMydi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWVzdGlvbkNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2YzAgMTM2Ljk5Ny0xMTEuMDQzIDI0OC0yNDggMjQ4UzggMzkyLjk5NyA4IDI1NkM4IDExOS4wODMgMTE5LjA0MyA4IDI1NiA4czI0OCAxMTEuMDgzIDI0OCAyNDh6TTI2Mi42NTUgOTBjLTU0LjQ5NyAwLTg5LjI1NSAyMi45NTctMTE2LjU0OSA2My43NTgtMy41MzYgNS4yODYtMi4zNTMgMTIuNDE1IDIuNzE1IDE2LjI1OGwzNC42OTkgMjYuMzFjNS4yMDUgMy45NDcgMTIuNjIxIDMuMDA4IDE2LjY2NS0yLjEyMiAxNy44NjQtMjIuNjU4IDMwLjExMy0zNS43OTcgNTcuMzAzLTM1Ljc5NyAyMC40MjkgMCA0NS42OTggMTMuMTQ4IDQ1LjY5OCAzMi45NTggMCAxNC45NzYtMTIuMzYzIDIyLjY2Ny0zMi41MzQgMzMuOTc2QzI0Ny4xMjggMjM4LjUyOCAyMTYgMjU0Ljk0MSAyMTYgMjk2djRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xLjMzM2MwLTI4LjQ2MiA4My4xODYtMjkuNjQ3IDgzLjE4Ni0xMDYuNjY3IDAtNTguMDAyLTYwLjE2NS0xMDItMTE2LjUzMS0xMDJ6TTI1NiAzMzhjLTI1LjM2NSAwLTQ2IDIwLjYzNS00NiA0NiAwIDI1LjM2NCAyMC42MzUgNDYgNDYgNDZzNDYtMjAuNjM2IDQ2LTQ2YzAtMjUuMzY1LTIwLjYzNS00Ni00Ni00NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWVzdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMDIuMDIxIDBDMTIyLjIwMiAwIDcwLjUwMyAzMi43MDMgMjkuOTE0IDkxLjAyNmMtNy4zNjMgMTAuNTgtNS4wOTMgMjUuMDg2IDUuMTc4IDMyLjg3NGw0My4xMzggMzIuNzA5YzEwLjM3MyA3Ljg2NSAyNS4xMzIgNi4wMjYgMzMuMjUzLTQuMTQ4IDI1LjA0OS0zMS4zODEgNDMuNjMtNDkuNDQ5IDgyLjc1Ny00OS40NDkgMzAuNzY0IDAgNjguODE2IDE5Ljc5OSA2OC44MTYgNDkuNjMxIDAgMjIuNTUyLTE4LjYxNyAzNC4xMzQtNDguOTkzIDUxLjE2NC0zNS40MjMgMTkuODYtODIuMjk5IDQ0LjU3Ni04Mi4yOTkgMTA2LjQwNVYzMjBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDcyLjQ3MWMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTUuNzczYzAtNDIuODYgMTI1LjI2OC00NC42NDUgMTI1LjI2OC0xNjAuNjI3QzM3Ny41MDQgNjYuMjU2IDI4Ni45MDIgMCAyMDIuMDIxIDB6TTE5MiAzNzMuNDU5Yy0zOC4xOTYgMC02OS4yNzEgMzEuMDc1LTY5LjI3MSA2OS4yNzEgMCAzOC4xOTUgMzEuMDc1IDY5LjI3IDY5LjI3MSA2OS4yN3M2OS4yNzEtMzEuMDc1IDY5LjI3MS02OS4yNzEtMzEuMDc1LTY5LjI3LTY5LjI3MS02OS4yN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdWlkZGl0Y2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2LjUgMjE2LjhMMzQzLjIgMzI2cy0xNi42IDEwMi40LTc2LjYgMTUwLjFDMjA2LjcgNTIzLjggMCA1MTAuMiAwIDUxMC4yczMuOC0yMy4xIDExLTU1LjRsOTQuNi0xMTIuMmM0LTQuNy0uOS0xMS42LTYuNi05LjVsLTYwLjQgMjIuMWMxNC40LTQxLjcgMzIuNy04MCA1NC42LTk3LjUgNTkuOS00Ny44IDE2My4zLTQwLjkgMTYzLjMtNDAuOXptMjM4IDEzNWMtNDQgMC03OS44IDM1LjgtNzkuOCA3OS45IDAgNDQuMSAzNS43IDc5LjkgNzkuOCA3OS45IDQ0LjEgMCA3OS44LTM1LjggNzkuOC03OS45IDAtNDQuMi0zNS44LTc5LjktNzkuOC03OS45ek02MzYuNSAzMUw2MTYuNyA2Yy01LjUtNi45LTE1LjUtOC0yMi40LTIuNkwzNjEuOCAxODEuM2wtMzQuMS00M2MtNS4xLTYuNC0xNS4xLTUuMi0xOC42IDIuMmwtMjUuMyA1NC42IDg2LjcgMTA5LjIgNTguOC0xMi40YzgtMS43IDExLjQtMTEuMiA2LjMtMTcuNmwtMzQuMS00Mi45TDYzNCA1My41YzYuOS01LjUgOC0xNS42IDIuNS0yMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVF1b3RlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMjU2aC04MHYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOGMtODguNCAwLTE2MCA3MS42LTE2MCAxNjB2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg5NnYtNjRjMC0zNS4zIDI4LjctNjQgNjQtNjRoOGMxMy4zIDAgMjQtMTAuNyAyNC0yNFY1NmMwLTEzLjMtMTAuNy0yNC0yNC0yNGgtOEM3MS42IDMyIDAgMTAzLjYgMCAxOTJ2MjQwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDEyOGMyNi41IDAgNDgtMjEuNSA0OC00OFYzMDRjMC0yNi41LTIxLjUtNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUXVvdGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJIMzM2Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxMjhjMCAyNi41IDIxLjUgNDggNDggNDhoODB2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLThjLTEzLjMgMC0yNCAxMC43LTI0IDI0djQ4YzAgMTMuMyAxMC43IDI0IDI0IDI0aDhjODguNCAwIDE2MC03MS42IDE2MC0xNjBWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0yODggMEg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjEyOGMwIDI2LjUgMjEuNSA0OCA0OCA0OGg4MHY2NGMwIDM1LjMtMjguNyA2NC02NCA2NGgtOGMtMTMuMyAwLTI0IDEwLjctMjQgMjR2NDhjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOGM4OC40IDAgMTYwLTcxLjYgMTYwLTE2MFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFRdXJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzU4LjRWMjUuNmMwLTE2LTkuNi0yNS42LTI1LjYtMjUuNkg5NkM0MS42IDAgMCA0MS42IDAgOTZ2MzIwYzAgNTQuNCA0MS42IDk2IDk2IDk2aDMyNi40YzEyLjggMCAyNS42LTkuNiAyNS42LTI1LjZ2LTE2YzAtNi40LTMuMi0xMi44LTkuNi0xOS4yLTMuMi0xNi0zLjItNjAuOCAwLTczLjYgNi40LTMuMiA5LjYtOS42IDkuNi0xOS4yek0zMDEuMDggMTQ1LjgyYy42LTEuMjEgMS43Ni0xLjgyIDIuOTItMS44MnMyLjMyLjYxIDIuOTIgMS44MmwxMS4xOCAyMi42NSAyNSAzLjYzYzIuNjcuMzkgMy43NCAzLjY3IDEuODEgNS41NmwtMTguMDkgMTcuNjMgNC4yNyAyNC44OWMuMzYgMi4xMS0xLjMxIDMuODItMy4yMSAzLjgyLS41IDAtMS4wMi0uMTItMS41Mi0uMzhMMzA0IDIxMS44N2wtMjIuMzYgMTEuNzVjLS41LjI2LTEuMDIuMzgtMS41Mi4zOC0xLjkgMC0zLjU3LTEuNzEtMy4yMS0zLjgybDQuMjctMjQuODktMTguMDktMTcuNjNjLTEuOTQtMS44OS0uODctNS4xNyAxLjgxLTUuNTZsMjQuOTktMy42MyAxMS4xOS0yMi42NXptLTU3Ljg5LTY5LjAxYzEzLjY3IDAgMjcuMjYgMi40OSA0MC4zOCA3LjQxYTYuNzc1IDYuNzc1IDAgMSAxLTIuMzggMTMuMTJjLS42NyAwLTMuMDktLjIxLTQuMTMtLjIxLTUyLjMxIDAtOTQuODYgNDIuNTUtOTQuODYgOTQuODYgMCA1Mi4zIDQyLjU1IDk0Ljg2IDk0Ljg2IDk0Ljg2IDEuMDMgMCAzLjQ4LS4yMSA0LjEzLS4yMSAzLjkzIDAgNi44IDMuMTQgNi44IDYuNzggMCAyLjk4LTEuOTQgNS41MS00LjYyIDYuNDItMTMuMDcgNC44Ny0yNi41OSA3LjM0LTQwLjE5IDcuMzRDMTc5LjY3IDMwNy4xOSAxMjggMjU1LjUxIDEyOCAxOTJjMC02My41MiA1MS42Ny0xMTUuMTkgMTE1LjE5LTExNS4xOXpNMzgwLjggNDQ4SDk2Yy0xOS4yIDAtMzItMTIuOC0zMi0zMnMxNi0zMiAzMi0zMmgyODQuOHY2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWRpYXRpb25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzEyIDI1Nmg3OS4xYzkuMiAwIDE2LjktNy43IDE2LTE2LjgtNC42LTQzLjYtMjctODEuOC01OS41LTEwNy44LTcuNi02LjEtMTguOC00LjUtMjQgMy44TDI4MS45IDIwMmMxOCAxMS4yIDMwLjEgMzEuMiAzMC4xIDU0em0tOTcuOCA1NC4xTDE3Mi40IDM3N2MtNC45IDcuOC0yLjQgMTguNCA1LjggMjIuNSAyMS4xIDEwLjQgNDQuNyAxNi41IDY5LjggMTYuNXM0OC43LTYuMSA2OS45LTE2LjVjOC4yLTQuMSAxMC42LTE0LjcgNS44LTIyLjVsLTQxLjgtNjYuOWMtOS44IDYuMi0yMS40IDkuOS0zMy44IDkuOXMtMjQuMS0zLjctMzMuOS05Ljl6TTEwNC45IDI1NkgxODRjMC0yMi44IDEyLjEtNDIuOCAzMC4yLTU0LjFsLTQxLjctNjYuOGMtNS4yLTguMy0xNi40LTkuOS0yNC0zLjgtMzIuNiAyNi01NC45IDY0LjItNTkuNSAxMDcuOC0xLjEgOS4yIDYuNyAxNi45IDE1LjkgMTYuOXpNMjQ4IDUwNGMxMzcgMCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4em0wLTQzMmMxMDEuNSAwIDE4NCA4Mi41IDE4NCAxODRzLTgyLjUgMTg0LTE4NCAxODRTNjQgMzU3LjUgNjQgMjU2IDE0Ni41IDcyIDI0OCA3MnptMCAyMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJhZGlhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjguMiAyNTUuOGgxNTEuNmM5LjEgMCAxNi44LTcuNyAxNi4yLTE2LjgtNS4xLTc1LjgtNDQuNC0xNDIuMi0xMDIuNS0xODQuMi03LjQtNS4zLTE3LjktMi45LTIyLjcgNC44TDI5MC40IDE4OGMyMi42IDE0LjMgMzcuOCAzOS4yIDM3LjggNjcuOHptLTM3LjggNjcuN2MtMTIuMyA3LjctMjYuOCAxMi40LTQyLjQgMTIuNC0xNS42IDAtMzAtNC43LTQyLjQtMTIuNEwxMjUuMiA0NTJjLTQuOCA3LjctMi40IDE4LjEgNS42IDIyLjRDMTY1LjcgNDkzLjIgMjA1LjYgNTA0IDI0OCA1MDRzODIuMy0xMC44IDExNy4yLTI5LjZjOC00LjMgMTAuNC0xNC44IDUuNi0yMi40bC04MC40LTEyOC41ek0yNDggMzAzLjhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhzLTIxLjUtNDgtNDgtNDgtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0tMjMxLjgtNDhoMTUxLjZjMC0yOC42IDE1LjItNTMuNSAzNy44LTY3LjdMMTI1LjIgNTkuN2MtNC44LTcuNy0xNS4zLTEwLjItMjIuNy00LjhDNDQuNCA5Ni45IDUuMSAxNjMuMyAwIDIzOS4xYy0uNiA5IDcuMSAxNi43IDE2LjIgMTYuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI2OC4zIDMyLjdDMTE1LjQgNDIuOSAwIDE3Ni45IDAgMzMwLjJWNDY0YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMzIwQzY0IDE4Ni44IDE4MC45IDgwLjMgMzE3LjUgOTcuOSA0MzAuNCAxMTIuNCA1MTIgMjE0IDUxMiAzMjcuOFY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xNjUuMy0xNDAtMjk4LjYtMzA3LjctMjg3LjN6bS01LjYgOTYuOUMxNjYgMTQyIDk2IDIyOS4xIDk2IDMyNi43VjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTc0LjggNjQuNS0xMzQuOCAxNDAuOC0xMjcuNCA2Ni41IDYuNSAxMTUuMiA2Ni4yIDExNS4yIDEzMy4xVjQ2NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMGMwLTExNC4yLTEwMC4yLTIwNS40LTIxNy4zLTE5MC40em02LjIgOTYuM2MtNDUuNiA4LjktNzYuOSA1MS41LTc2LjkgOTcuOVY0NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC0xNy42IDE0LjMtMzIgMzItMzJzMzIgMTQuNCAzMiAzMnYxNDRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYzMjBjMC01OS4yLTUzLjgtMTA2LTExNS4xLTk0LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmFuZG9tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNC45NzEgMzU5LjAyOWM5LjM3MyA5LjM3MyA5LjM3MyAyNC41NjkgMCAzMy45NDFsLTgwIDc5Ljk4NGMtMTUuMDEgMTUuMDEtNDAuOTcxIDQuNDktNDAuOTcxLTE2Ljk3MVY0MTZoLTU4Ljc4NWExMi4wMDQgMTIuMDA0IDAgMCAxLTguNzczLTMuODEybC03MC41NTYtNzUuNTk2IDUzLjMzMy01Ny4xNDNMMzUyIDMzNmgzMnYtMzkuOTgxYzAtMjEuNDM4IDI1Ljk0My0zMS45OTggNDAuOTcxLTE2Ljk3MWw4MCA3OS45ODF6TTEyIDE3Nmg4NGw1Mi43ODEgNTYuNTUxIDUzLjMzMy01Ny4xNDMtNzAuNTU2LTc1LjU5NkExMS45OTkgMTEuOTk5IDAgMCAwIDEyMi43ODUgOTZIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTZjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptMzcyIDB2MzkuOTg0YzAgMjEuNDYgMjUuOTYxIDMxLjk4IDQwLjk3MSAxNi45NzFsODAtNzkuOTg0YzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MWwtODAtNzkuOTgxQzQwOS45NDMgMjQuMDIxIDM4NCAzNC41ODIgMzg0IDU2LjAxOVY5NmgtNTguNzg1YTEyLjAwNCAxMi4wMDQgMCAwIDAtOC43NzMgMy44MTJMOTYgMzM2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjU2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTEwLjc4NWMzLjMyNiAwIDYuNTAzLTEuMzgxIDguNzczLTMuODEyTDM1MiAxNzZoMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjZWlwdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguNCAzLjJMMzIwIDQ4IDI2NS42IDMuMmExNS45IDE1LjkgMCAwIDAtMTkuMiAwTDE5MiA0OCAxMzcuNiAzLjJhMTUuOSAxNS45IDAgMCAwLTE5LjIgMEw2NCA0OCAyNS42IDMuMkMxNS00LjcgMCAyLjggMCAxNnY0ODBjMCAxMy4yIDE1IDIwLjcgMjUuNiAxMi44TDY0IDQ2NGw1NC40IDQ0LjhhMTUuOSAxNS45IDAgMCAwIDE5LjIgMEwxOTIgNDY0bDU0LjQgNDQuOGExNS45IDE1LjkgMCAwIDAgMTkuMiAwTDMyMCA0NjRsMzguNCA0NC44YzEwLjUgNy45IDI1LjYuNCAyNS42LTEyLjhWMTZjMC0xMy4yLTE1LTIwLjctMjUuNi0xMi44ek0zMjAgMzYwYzAgNC40LTMuNiA4LTggOEg3MmMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMjQwYzQuNCAwIDggMy42IDggOHYxNnptMC05NmMwIDQuNC0zLjYgOC04IDhINzJjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDI0MGM0LjQgMCA4IDMuNiA4IDh2MTZ6bTAtOTZjMCA0LjQtMy42IDgtOCA4SDcyYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgyNDBjNC40IDAgOCAzLjYgOCA4djE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlY29yZFZpbnlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAxNTJhMTA0IDEwNCAwIDEgMCAxMDQgMTA0IDEwNCAxMDQgMCAwIDAtMTA0LTEwNHptMCAxMjhhMjQgMjQgMCAxIDEgMjQtMjQgMjQgMjQgMCAwIDEtMjQgMjR6bTAtMjcyQzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgMzc2YTEyOCAxMjggMCAxIDEgMTI4LTEyOCAxMjggMTI4IDAgMCAxLTEyOCAxMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVjeWNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xODQuNTYxIDI2MS45MDNjMy4yMzIgMTMuOTk3LTEyLjEyMyAyNC42MzUtMjQuMDY4IDE3LjE2OGwtNDAuNzM2LTI1LjQ1NS01MC44NjcgODEuNDAyQzU1LjYwNiAzNTYuMjczIDcwLjk2IDM4NCA5Ni4wMTIgMzg0SDE0OGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJIOTYuMTE1Yy03NS4zMzQgMC0xMjEuMzAyLTgzLjA0OC04MS40MDgtMTQ2Ljg4bDUwLjgyMi04MS4zODgtNDAuNzI1LTI1LjQ0OGMtMTIuMDgxLTcuNTQ3LTguOTY2LTI1Ljk2MSA0Ljg3OS0yOS4xNThsMTEwLjIzNy0yNS40NWM4LjYxMS0xLjk4OCAxNy4yMDEgMy4zODEgMTkuMTg5IDExLjk5bDI1LjQ1MiAxMTAuMjM3em05OC41NjEtMTgyLjkxNWw0MS4yODkgNjYuMDc2LTQwLjc0IDI1LjQ1N2MtMTIuMDUxIDcuNTI4LTkgMjUuOTUzIDQuODc5IDI5LjE1OGwxMTAuMjM3IDI1LjQ1YzguNjcyIDEuOTk5IDE3LjIxNS0zLjQzOCAxOS4xODktMTEuOTlsMjUuNDUtMTEwLjIzN2MzLjE5Ny0xMy44NDQtMTEuOTktMjQuNzE5LTI0LjA2OC0xNy4xNjhsLTQwLjY4NyAyNS40MjQtNDEuMjYzLTY2LjA4MmMtMzcuNTIxLTYwLjAzMy0xMjUuMjA5LTYwLjE3MS0xNjIuODE2IDBsLTE3Ljk2MyAyOC43NjZjLTMuNTEgNS42Mi0xLjggMTMuMDIxIDMuODIgMTYuNTMzbDMzLjkxOSAyMS4xOTVjNS42MiAzLjUxMiAxMy4wMjQgMS44MDMgMTYuNTM2LTMuODE3bDE3Ljk2MS0yOC43NDNjMTIuNzEyLTIwLjM0MSA0MS45NzMtMTkuNjc2IDU0LjI1Ny0uMDIyek00OTcuMjg4IDMwMS4xMmwtMjcuNTE1LTQ0LjA2NWMtMy41MTEtNS42MjMtMTAuOTE2LTcuMzM0LTE2LjUzOC0zLjgyMWwtMzMuODYxIDIxLjE1OWMtNS42MiAzLjUxMi03LjMzIDEwLjkxNS0zLjgxOCAxNi41MzZsMjcuNTY0IDQ0LjExMmMxMy4yNTcgMjEuMjExLTIuMDU3IDQ4Ljk2LTI3LjEzNiA0OC45NkgzMjBWMzM2LjAyYzAtMTQuMjEzLTE3LjI0Mi0yMS4zODMtMjcuMzEzLTExLjMxM2wtODAgNzkuOTgxYy02LjI0OSA2LjI0OC02LjI0OSAxNi4zNzkgMCAyMi42MjdsODAgNzkuOTg5QzMwMi42ODkgNTE3LjMwOCAzMjAgNTEwLjMgMzIwIDQ5NS45ODlWNDQ4aDk1Ljg4Yzc1LjI3NCAwIDEyMS4zMzUtODIuOTk3IDgxLjQwOC0xNDYuODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkb0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYuNDU1IDhjNjYuMjY5LjExOSAxMjYuNDM3IDI2LjIzMyAxNzAuODU5IDY4LjY4NWwzNS43MTUtMzUuNzE1QzQ3OC4xNDkgMjUuODUxIDUwNCAzNi41NTkgNTA0IDU3Ljk0MVYxOTJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0SDM0NS45NDFjLTIxLjM4MiAwLTMyLjA5LTI1Ljg1MS0xNi45NzEtNDAuOTcxbDQxLjc1LTQxLjc1Yy0zMC44NjQtMjguODk5LTcwLjgwMS00NC45MDctMTEzLjIzLTQ1LjI3My05Mi4zOTgtLjc5OC0xNzAuMjgzIDczLjk3Ny0xNjkuNDg0IDE2OS40NDJDODguNzY0IDM0OC4wMDkgMTYyLjE4NCA0MjQgMjU2IDQyNGM0MS4xMjcgMCA3OS45OTctMTQuNjc4IDExMC42MjktNDEuNTU2IDQuNzQzLTQuMTYxIDExLjkwNi0zLjkwOCAxNi4zNjguNTUzbDM5LjY2MiAzOS42NjJjNC44NzIgNC44NzIgNC42MzEgMTIuODE1LS40ODIgMTcuNDMzQzM3OC4yMDIgNDc5LjgxMyAzMTkuOTI2IDUwNCAyNTYgNTA0IDExOS4wMzQgNTA0IDguMDAxIDM5Mi45NjcgOCAyNTYuMDAyIDcuOTk5IDExOS4xOTMgMTE5LjY0NiA3Ljc1NSAyNTYuNDU1IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVkbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAuMzMgMGgtNDcuNDFhMTIgMTIgMCAwIDAtMTIgMTIuNTdsNCA4Mi43NkEyNDcuNDIgMjQ3LjQyIDAgMCAwIDI1NiA4QzExOS4zNCA4IDcuOSAxMTkuNTMgOCAyNTYuMTkgOC4xIDM5My4wNyAxMTkuMSA1MDQgMjU2IDUwNGEyNDcuMSAyNDcuMSAwIDAgMCAxNjYuMTgtNjMuOTEgMTIgMTIgMCAwIDAgLjQ4LTE3LjQzbC0zNC0zNGExMiAxMiAwIDAgMC0xNi4zOC0uNTVBMTc2IDE3NiAwIDEgMSA0MDIuMSAxNTcuOGwtMTAxLjUzLTQuODdhMTIgMTIgMCAwIDAtMTIuNTcgMTJ2NDcuNDFhMTIgMTIgMCAwIDAgMTIgMTJoMjAwLjMzYTEyIDEyIDAgMCAwIDEyLTEyVjEyYTEyIDEyIDAgMCAwLTEyLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ2lzdGVyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg1LjM2MyAyMDcuNDc1YzAgMTguNi05LjgzMSAyOC40MzEtMjguNDMxIDI4LjQzMWgtMjkuODc2di01Ni4xNGgyMy4zNzhjMjguNjY4IDAgMzQuOTI5IDguNzczIDM0LjkyOSAyNy43MDl6TTUwNCAyNTZjMCAxMzYuOTY3LTExMS4wMzMgMjQ4LTI0OCAyNDhTOCAzOTIuOTY3IDggMjU2IDExOS4wMzMgOCAyNTYgOHMyNDggMTExLjAzMyAyNDggMjQ4ek0zNjMuNDExIDM2MC40MTRjLTQ2LjcyOS04NC44MjUtNDMuMjk5LTc4LjYzNi00NC43MDItODAuOTggMjMuNDMyLTE1LjE3MiAzNy45NDUtNDIuOTc5IDM3Ljk0NS03NC40ODYgMC01NC4yNDQtMzEuNS04OS4yNTItMTA1LjQ5OC04OS4yNTJoLTcwLjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0VjM3MmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjIuNTY3YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtNzEuNjYzaDI1LjU1Nmw0NC4xMjkgODIuOTM3YTI0LjAwMSAyNC4wMDEgMCAwIDAgMjEuMTg4IDEyLjcyN2gyNC40NjRjMTguMjYxLS4wMDEgMjkuODI5LTE5LjU5MSAyMS4wMTgtMzUuNTg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlbW92ZUZvcm1hdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNDE2aC0xMS4xN2w5LjI2LTI3Ljc3TDI2NyAzMzYuNCAyNDAuNDkgNDE2SDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0yOTcuODIgNDIuMUwzNzcgMjU5LjU5IDQyNi4xNyAxMTJINTQ0djMyYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDE3NmExNiAxNiAwIDAgMC0xNiAxNnY0My45TDQ1LjQ2IDMuMzhBMTYgMTYgMCAwIDAgMjMgNi4xOUwzLjM3IDMxLjQ2YTE2IDE2IDAgMCAwIDIuODEgMjIuNDVsNTg4LjM2IDQ1NC43MmExNiAxNiAwIDAgMCAyMi40Ni0yLjgxbDE5LjY0LTI1LjI3YTE2IDE2IDAgMCAwLTIuODItMjIuNDV6TTMwOS45MSAyMDcuNzZMMjI0IDE0MS4zNlYxMTJoMTE3LjgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzNi4zMDkgMTg5LjgzNkwzMTIuMzEzIDM3Ljg1MUMzMjcuNzIgMjQuNTQ2IDM1MiAzNS4zNDggMzUyIDU2LjAxNXY4Mi43NjNjMTI5LjE4MiAxMC4yMzEgMjI0IDUyLjIxMiAyMjQgMTgzLjU0OCAwIDYxLjQ0MS0zOS41ODIgMTIyLjMwOS04My4zMzMgMTU0LjEzMi0xMy42NTMgOS45MzEtMzMuMTExLTIuNTMzLTI4LjA3Ny0xOC42MzEgMzguNTEyLTEyMy4xNjItMy45MjItMTY5LjQ4Mi0xMTIuNTktMTgyLjAxNXY4NC4xNzVjMCAyMC43MDEtMjQuMyAzMS40NTMtMzkuNjg3IDE4LjE2NEwxMzYuMzA5IDIyNi4xNjRjLTExLjA3MS05LjU2MS0xMS4wODYtMjYuNzUzIDAtMzYuMzI4em0tMTI4IDM2LjMyOEwxODQuMzEzIDM3OC4xNUMxOTkuNyAzOTEuNDM5IDIyNCAzODAuNjg3IDIyNCAzNTkuOTg2di0xNS44MThsLTEwOC42MDYtOTMuNzg1QTU1Ljk2IDU1Ljk2IDAgMCAxIDk2IDIwNy45OThhNTUuOTUzIDU1Ljk1MyAwIDAgMSAxOS4zOTMtNDIuMzhMMjI0IDcxLjgzMlY1Ni4wMTVjMC0yMC42NjctMjQuMjgtMzEuNDY5LTM5LjY4Ny0xOC4xNjRMOC4zMDkgMTg5LjgzNmMtMTEuMDg2IDkuNTc1LTExLjA3MSAyNi43NjcgMCAzNi4zMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4zMDkgMTg5LjgzNkwxODQuMzEzIDM3Ljg1MUMxOTkuNzE5IDI0LjU0NiAyMjQgMzUuMzQ3IDIyNCA1Ni4wMTV2ODAuMDUzYzE2MC42MjkgMS44MzkgMjg4IDM0LjAzMiAyODggMTg2LjI1OCAwIDYxLjQ0MS0zOS41ODEgMTIyLjMwOS04My4zMzMgMTU0LjEzMi0xMy42NTMgOS45MzEtMzMuMTExLTIuNTMzLTI4LjA3Ny0xOC42MzEgNDUuMzQ0LTE0NS4wMTItMjEuNTA3LTE4My41MS0xNzYuNTktMTg1Ljc0MlYzNjBjMCAyMC43LTI0LjMgMzEuNDUzLTM5LjY4NyAxOC4xNjRsLTE3Ni4wMDQtMTUyYy0xMS4wNzEtOS41NjItMTEuMDg2LTI2Ljc1MyAwLTM2LjMyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZXB1YmxpY2FuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAxOTJjMC04OC40LTcxLjYtMTYwLTE2MC0xNjBIMTYwQzcxLjYgMzIgMCAxMDMuNiAwIDE5MnY2NGg1NDR2LTY0em0tMzY3LjctMjEuNmwtMTkuOCAxOS4zIDQuNyAyNy4zYy44IDQuOS00LjMgOC42LTguNyA2LjNMMTI4IDIxMC40bC0yNC41IDEyLjljLTQuMyAyLjMtOS41LTEuNC04LjctNi4zbDQuNy0yNy4zLTE5LjgtMTkuM2MtMy42LTMuNS0xLjYtOS41IDMuMy0xMC4ybDI3LjQtNCAxMi4yLTI0LjhjMi4yLTQuNSA4LjYtNC40IDEwLjcgMGwxMi4yIDI0LjggMjcuNCA0YzUgLjcgNi45IDYuNyAzLjQgMTAuMnptMTQ0IDBsLTE5LjggMTkuMyA0LjcgMjcuM2MuOCA0LjktNC4zIDguNi04LjcgNi4zTDI3MiAyMTAuNGwtMjQuNSAxMi45Yy00LjMgMi4zLTkuNS0xLjQtOC43LTYuM2w0LjctMjcuMy0xOS44LTE5LjNjLTMuNi0zLjUtMS42LTkuNSAzLjMtMTAuMmwyNy40LTQgMTIuMi0yNC44YzIuMi00LjUgOC42LTQuNCAxMC43IDBsMTIuMiAyNC44IDI3LjQgNGM1IC43IDYuOSA2LjcgMy40IDEwLjJ6bTE0NCAwbC0xOS44IDE5LjMgNC43IDI3LjNjLjggNC45LTQuMyA4LjYtOC43IDYuM0w0MTYgMjEwLjRsLTI0LjUgMTIuOWMtNC4zIDIuMy05LjUtMS40LTguNy02LjNsNC43LTI3LjMtMTkuOC0xOS4zYy0zLjYtMy41LTEuNi05LjUgMy4zLTEwLjJsMjcuNC00IDEyLjItMjQuOGMyLjItNC41IDguNi00LjQgMTAuNyAwbDEyLjIgMjQuOCAyNy40IDRjNSAuNyA2LjkgNi43IDMuNCAxMC4yek02MjQgMzIwaC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0YzAgOC44LTcuMiAxNi0xNiAxNnMtMTYtNy4yLTE2LTE2VjI4OEgwdjE3NmMwIDguOCA3LjIgMTYgMTYgMTZoOTZjOC44IDAgMTYtNy4yIDE2LTE2di04MGgxOTJ2ODBjMCA4LjggNy4yIDE2IDE2IDE2aDk2YzguOCAwIDE2LTcuMiAxNi0xNlYzNTJoMzJ2NDMuM2MwIDQxLjggMzAgODAuMSA3MS42IDg0LjMgNDcuOCA0LjkgODguNC0zMi43IDg4LjQtNzkuNnYtNjRjMC04LjgtNy4yLTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlc3Ryb29tIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxMjhjMzUuMyAwIDY0LTI4LjcgNjQtNjRTMTYzLjMgMCAxMjggMCA2NCAyOC43IDY0IDY0czI4LjcgNjQgNjQgNjR6bTM4NCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0UzU0Ny4zIDAgNTEyIDBzLTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMTI3LjMgMjI2LjVsLTQ1LjYtMTg1LjhjLTMuMy0xMy41LTE1LjUtMjMtMjkuOC0yNC4yLTE1IDkuNy0zMi44IDE1LjUtNTIgMTUuNS0xOS4yIDAtMzctNS44LTUyLTE1LjUtMTQuMyAxLjItMjYuNSAxMC43LTI5LjggMjQuMmwtNDUuNiAxODUuOEMzODEgMzY5LjYgMzkzIDM4NCA0MDkuMiAzODRINDY0djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGg0OGMxMy4zIDAgMjQtMTAuNyAyNC0yNFYzODRoNTQuOGMxNi4yIDAgMjguMi0xNC40IDI0LjUtMjkuNXpNMzM2IDBoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDgwYzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2ek0xODAuMSAxNDQuNGMtMTUgOS44LTMyLjkgMTUuNi01Mi4xIDE1LjYtMTkuMiAwLTM3LjEtNS44LTUyLjEtMTUuNkM1MS4zIDE0Ni41IDMyIDE2Ni45IDMyIDE5MnYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoOHYxMzZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoODBjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMzUyaDhjMTMuMyAwIDI0LTEwLjcgMjQtMjRWMTkyYzAtMjUuMS0xOS4zLTQ1LjUtNDMuOS00Ny42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJldHdlZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI5LjY1NyAzNDMuNTk4TDUyOC45NzEgNDQ0LjI4NGMtOS4zNzMgOS4zNzItMjQuNTY4IDkuMzcyLTMzLjk0MSAwTDM5NC4zNDMgMzQzLjU5OGMtOS4zNzMtOS4zNzMtOS4zNzMtMjQuNTY5IDAtMzMuOTQxbDEwLjgyMy0xMC44MjNjOS41NjItOS41NjIgMjUuMTMzLTkuMzQgMzQuNDE5LjQ5Mkw0ODAgMzQyLjExOFYxNjBIMjkyLjQ1MWEyNC4wMDUgMjQuMDA1IDAgMCAxLTE2Ljk3MS03LjAyOWwtMTYtMTZDMjQ0LjM2MSAxMjEuODUxIDI1NS4wNjkgOTYgMjc2LjQ1MSA5Nkg1MjBjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0djIyMi4xMThsNDAuNDE2LTQyLjc5MmM5LjI4NS05LjgzMSAyNC44NTYtMTAuMDU0IDM0LjQxOS0uNDkybDEwLjgyMyAxMC44MjNjOS4zNzIgOS4zNzIgOS4zNzIgMjQuNTY5LS4wMDEgMzMuOTQxem0tMjY1LjEzOCAxNS40MzFBMjMuOTk5IDIzLjk5OSAwIDAgMCAzNDcuNTQ4IDM1MkgxNjBWMTY5Ljg4MWw0MC40MTYgNDIuNzkyYzkuMjg2IDkuODMxIDI0Ljg1NiAxMC4wNTQgMzQuNDE5LjQ5MWwxMC44MjItMTAuODIyYzkuMzczLTkuMzczIDkuMzczLTI0LjU2OSAwLTMzLjk0MUwxNDQuOTcxIDY3LjcxNmMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDEwLjM0MyAxNjguNDAyYy05LjM3MyA5LjM3My05LjM3MyAyNC41NjkgMCAzMy45NDFsMTAuODIyIDEwLjgyMmM5LjU2MiA5LjU2MiAyNS4xMzMgOS4zNCAzNC40MTktLjQ5MUw5NiAxNjkuODgxVjM5MmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMjQzLjU0OWMyMS4zODIgMCAzMi4wOS0yNS44NTEgMTYuOTcxLTQwLjk3MWwtMTYuMDAxLTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJpYmJvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjEgNDQ0LjNjLTkuNiAxMC44LTcuNSAyNy42IDQuNSAzNS43bDY4LjggMjcuOWM5LjkgNi43IDIzLjMgNSAzMS4zLTMuOGw5MS44LTEwMS45LTc5LjItODcuOS0xMTcuMiAxMzB6bTQzNS44IDBzLTI5Mi0zMjQuNi0yOTUuNC0zMzAuMWMxNS40LTguNCA0MC4yLTE3LjkgNzcuNS0xNy45czYyLjEgOS41IDc3LjUgMTcuOWMtMy4zIDUuNi01NiA2NC42LTU2IDY0LjZsNzkuMSA4Ny43IDM0LjItMzhjMjguNy0zMS45IDMzLjMtNzguNiAxMS40LTExNS41bC00My43LTczLjVjLTQuMy03LjItOS45LTEzLjMtMTYuOC0xOC00MC43LTI3LjYtMTI3LjQtMjkuNy0xNzEuNCAwLTYuOSA0LjctMTIuNSAxMC44LTE2LjggMThsLTQzLjYgNzMuMmMtMS41IDIuNS0zNy4xIDYyLjIgMTEuNSAxMTZMMzM3LjUgNTA0YzggOC45IDIxLjQgMTAuNSAzMS4zIDMuOGw2OC44LTI3LjljMTEuOS04IDE0LTI0LjggNC4zLTM1LjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNjRDMTEwLjA2IDY0IDAgMTI1LjkxIDAgMjA4djk4LjEzQzAgMzg0LjQ4IDExNC42MiA0NDggMjU2IDQ0OHMyNTYtNjMuNTIgMjU2LTE0MS44N1YyMDhjMC04Mi4wOS0xMTAuMDYtMTQ0LTI1Ni0xNDR6bTAgNjRjMTA2LjA0IDAgMTkyIDM1LjgyIDE5MiA4MCAwIDkuMjYtMy45NyAxOC4xMi0xMC45MSAyNi4zOUMzOTIuMTUgMjA4LjIxIDMyOC4yMyAxOTIgMjU2IDE5MnMtMTM2LjE1IDE2LjIxLTE4MS4wOSA0Mi4zOUM2Ny45NyAyMjYuMTIgNjQgMjE3LjI2IDY0IDIwOGMwLTQ0LjE4IDg1Ljk2LTgwIDE5Mi04MHpNMTIwLjQzIDI2NC42NEMxNTUuMDQgMjQ5LjkzIDIwMS42NCAyNDAgMjU2IDI0MHMxMDAuOTYgOS45MyAxMzUuNTcgMjQuNjRDMzU2Ljg0IDI3OS4wNyAzMDguOTMgMjg4IDI1NiAyODhzLTEwMC44NC04LjkzLTEzNS41Ny0yMy4zNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3My4xOSA0MDIuNjdsLTEzOS43OS0zMjBDNDI4LjQzIDcxLjI5IDQxNy42IDY0IDQwNS42OCA2NGgtOTcuNTlsMi40NSAyMy4xNmMuNSA0LjcyLTMuMjEgOC44NC03Ljk2IDguODRoLTI5LjE2Yy00Ljc1IDAtOC40Ni00LjEyLTcuOTYtOC44NEwyNjcuOTEgNjRoLTk3LjU5Yy0xMS45MyAwLTIyLjc2IDcuMjktMjcuNzMgMTguNjdMMi44IDQwMi42N0MtNi40NSA0MjMuODYgOC4zMSA0NDggMzAuNTQgNDQ4aDE5Ni44NGwxMC4zMS05Ny42OGMuODYtOC4xNCA3LjcyLTE0LjMyIDE1LjkxLTE0LjMyaDY4LjhjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJMMzQ4LjYyIDQ0OGgxOTYuODRjMjIuMjMgMCAzNi45OS0yNC4xNCAyNy43My00NS4zM3pNMjYwLjQgMTM1LjE2YTggOCAwIDAgMSA3Ljk2LTcuMTZoMzkuMjljNC4wOSAwIDcuNTMgMy4wOSA3Ljk2IDcuMTZsNC42IDQzLjU4Yy43NSA3LjA5LTQuODEgMTMuMjYtMTEuOTMgMTMuMjZoLTQwLjU0Yy03LjEzIDAtMTIuNjgtNi4xNy0xMS45My0xMy4yNmw0LjU5LTQzLjU4ek0zMTUuNjQgMzA0aC01NS4yOWMtOS41IDAtMTYuOTEtOC4yMy0xNS45MS0xNy42OGw1LjA3LTQ4Yy44Ni04LjE0IDcuNzItMTQuMzIgMTUuOTEtMTQuMzJoNDUuMTVjOC4xOSAwIDE1LjA1IDYuMTggMTUuOTEgMTQuMzJsNS4wNyA0OGMxIDkuNDUtNi40MSAxNy42OC0xNS45MSAxNy42OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2JvdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiwyMjRINjRWNDE2SDMyQTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLDAsMzg0VjI1NkEzMS45NjE2NiwzMS45NjE2NiwwLDAsMSwzMiwyMjRabTUxMi00OFY0NDhhNjQuMDYzMjgsNjQuMDYzMjgsMCwwLDEtNjQsNjRIMTYwYTY0LjA2MzI4LDY0LjA2MzI4LDAsMCwxLTY0LTY0VjE3NmE3OS45NzQsNzkuOTc0LDAsMCwxLDgwLTgwSDI4OFYzMmEzMiwzMiwwLDAsMSw2NCwwVjk2SDQ2NEE3OS45NzQsNzkuOTc0LDAsMCwxLDU0NCwxNzZaTTI2NCwyNTZhNDAsNDAsMCwxLDAtNDAsNDBBMzkuOTk3LDM5Ljk5NywwLDAsMCwyNjQsMjU2Wm0tOCwxMjhIMTkydjMyaDY0Wm05NiwwSDI4OHYzMmg2NFpNNDU2LDI1NmE0MCw0MCwwLDEsMC00MCw0MEEzOS45OTcsMzkuOTk3LDAsMCwwLDQ1NiwyNTZabS04LDEyOEgzODR2MzJoNjRaTTY0MCwyNTZWMzg0YTMxLjk2MTY2LDMxLjk2MTY2LDAsMCwxLTMyLDMySDU3NlYyMjRoMzJBMzEuOTYxNjYsMzEuOTYxNjYsMCwwLDEsNjQwLDI1NlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSb2NrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjEyMDE5LDE5LjA5Mzc1Yy0xLjE4OTQ1LTUuNTMxMjUtNi42NTgxOS0xMS0xMi4yMDctMTIuMTg3NUM0NjAuNzE2LDAsNDM1LjUwNywwLDQxMC40MDc0NywwLDMwNy4xNzUyMywwLDI0NS4yNjkwOSw1NS4yMDMxMiwxOTkuMDUyMzgsMTI4SDk0LjgzNzcyYy0xNi4zNDc2My4wMTU2Mi0zNS41NTY1OCwxMS44NzUtNDIuODg2NjQsMjYuNDg0MzhMMi41MTU2MiwyNTMuMjk2ODhBMjguNCwyOC40LDAsMCwwLDAsMjY0YTI0LjAwODY3LDI0LjAwODY3LDAsMCwwLDI0LjAwNTgyLDI0SDEyNy44MTYxOGwtMjIuNDc0NTcsMjIuNDY4NzVjLTExLjM2NTIxLDExLjM2MTMzLTEyLjk5NjA3LDMyLjI1NzgxLDAsNDUuMjVMMTU2LjI0NTgyLDQwNi42MjVjMTEuMTU2MjMsMTEuMTg3NSwzMi4xNTYxOSwxMy4xNTYyNSw0NS4yNzcyNiwwbDIyLjQ3NDU3LTIyLjQ2ODc1VjQ4OGEyNC4wMDg2NywyNC4wMDg2NywwLDAsMCwyNC4wMDU4MSwyNCwyOC41NTkzNCwyOC41NTkzNCwwLDAsMCwxMC43MDctMi41MTU2Mmw5OC43MjgzNC00OS4zOTA2M2MxNC42Mjg4OC03LjI5Njg3LDI2LjUwNzc2LTI2LjUsMjYuNTA3NzYtNDIuODU5MzdWMzEyLjc5Njg4YzcyLjU5NzUzLTQ2LjMxMjUsMTI4LjAzNDkzLTEwOC40MDYyNiwxMjguMDM0OTMtMjExLjA5Mzc2QzUxMi4wNzUyNiw3Ni41LDUxMi4wNzUyNiw1MS4yOTY4OCw1MDUuMTIwMTksMTkuMDkzNzVaTTM4NC4wNDAzMywxNjhBNDAsNDAsMCwxLDEsNDI0LjA1LDEyOCw0MC4wMjMyMiw0MC4wMjMyMiwwLDAsMSwzODQuMDQwMzMsMTY4WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJvdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAzMjBoLTk2Yy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyaDk2czk2LTEwNyA5Ni0xNjAtNDMtOTYtOTYtOTYtOTYgNDMtOTYgOTZjMCAyNS41IDIyLjIgNjMuNCA0NS4zIDk2SDMyMGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5Nmg5NmMxNy42IDAgMzIgMTQuNCAzMiAzMnMtMTQuNCAzMi0zMiAzMkgxODUuNWMtMTYgMjQuOC0zMy44IDQ3LjctNDcuMyA2NEg0MTZjNTIuOSAwIDk2LTQzLjEgOTYtOTZzLTQzLjEtOTYtOTYtOTZ6bTAtMjU2YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzIgMTQuMy0zMiAzMi0zMnpNOTYgMjU2Yy01MyAwLTk2IDQzLTk2IDk2czk2IDE2MCA5NiAxNjAgOTYtMTA3IDk2LTE2MC00My05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzc1NxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDAgMzJINDhDMjEuNDkgMzIgMCA1My40OSAwIDgwdjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjgwYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6TTExMiA0MTZjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTE1Ny41MzMgMGgtMzQuMzM1Yy02LjAxMSAwLTExLjA1MS00LjYzNi0xMS40NDItMTAuNjM0LTUuMjE0LTgwLjA1LTY5LjI0My0xNDMuOTItMTQ5LjEyMy0xNDkuMTIzLTUuOTk3LS4zOS0xMC42MzMtNS40MzEtMTAuNjMzLTExLjQ0MXYtMzQuMzM1YzAtNi41MzUgNS40NjgtMTEuNzc3IDExLjk5NC0xMS40MjUgMTEwLjU0NiA1Ljk3NCAxOTguOTk3IDk0LjUzNiAyMDQuOTY0IDIwNC45NjQuMzUyIDYuNTI2LTQuODkgMTEuOTk0LTExLjQyNSAxMS45OTR6bTEwMy4wMjcgMGgtMzQuMzM0Yy02LjE2MSAwLTExLjE3NS00Ljg4Mi0xMS40MjctMTEuMDM4LTUuNTk4LTEzNi41MzUtMTE1LjIwNC0yNDYuMTYxLTI1MS43Ni0yNTEuNzZDNjguODgyIDE1Mi45NDkgNjQgMTQ3LjkzNSA2NCAxNDEuNzc0VjEwNy40NGMwLTYuNDU0IDUuMzM4LTExLjY2NCAxMS43ODctMTEuNDMyIDE2Ny44MyA2LjAyNSAzMDIuMjEgMTQxLjE5MSAzMDguMjA1IDMwOC4yMDUuMjMyIDYuNDQ5LTQuOTc4IDExLjc4Ny0xMS40MzIgMTEuNzg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjguMDgxIDQxNS45NTljMCAzNS4zNjktMjguNjcyIDY0LjA0MS02NC4wNDEgNjQuMDQxUzAgNDUxLjMyOCAwIDQxNS45NTlzMjguNjcyLTY0LjA0MSA2NC4wNDEtNjQuMDQxIDY0LjA0IDI4LjY3MyA2NC4wNCA2NC4wNDF6bTE3NS42NiA0Ny4yNWMtOC4zNTQtMTU0LjYtMTMyLjE4NS0yNzguNTg3LTI4Ni45NS0yODYuOTVDNy42NTYgMTc1Ljc2NSAwIDE4My4xMDUgMCAxOTIuMjUzdjQ4LjA2OWMwIDguNDE1IDYuNDkgMTUuNDcyIDE0Ljg4NyAxNi4wMTggMTExLjgzMiA3LjI4NCAyMDEuNDczIDk2LjcwMiAyMDguNzcyIDIwOC43NzIuNTQ3IDguMzk3IDcuNjA0IDE0Ljg4NyAxNi4wMTggMTQuODg3aDQ4LjA2OWM5LjE0OS4wMDEgMTYuNDg5LTcuNjU1IDE1Ljk5NS0xNi43OXptMTQ0LjI0OS4yODhDNDM5LjU5NiAyMjkuNjc3IDI1MS40NjUgNDAuNDQ1IDE2LjUwMyAzMi4wMSA3LjQ3MyAzMS42ODYgMCAzOC45ODEgMCA0OC4wMTZ2NDguMDY4YzAgOC42MjUgNi44MzUgMTUuNjQ1IDE1LjQ1MyAxNS45OTkgMTkxLjE3OSA3LjgzOSAzNDQuNjI3IDE2MS4zMTYgMzUyLjQ2NSAzNTIuNDY1LjM1MyA4LjYxOCA3LjM3MyAxNS40NTMgMTUuOTk5IDE1LjQ1M2g0OC4wNjhjOS4wMzQtLjAwMSAxNi4zMjktNy40NzQgMTYuMDA1LTE2LjUwNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWJsZVNpZ24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjM5LjM2IDMyMEMzMjQuNDggMzIwIDM4NCAyNjAuNTQyIDM4NCAxNzUuMDcxUzMyNC40OCAzMiAyMzkuMzYgMzJINzZjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjA2LjYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMlYzMDhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg1MnYzMkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDUydjUyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNTguNTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNTJIMzA4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQ2LjU2di0zMmg5Mi44em0tOTIuOC0yMTkuMjUyaDc4LjcyYzQ2LjcyIDAgNzQuODggMjkuMTEgNzQuODggNzQuMzIzIDAgNDUuODMyLTI4LjE2IDc1LjU2MS03Ni4xNiA3NS41NjFoLTc3LjQ0VjEwMC43NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXJDb21iaW5lZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNjAgMjg4aC01NmMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDU2di02NGgtNTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg1NlY5NmgtNTZjLTQuNDIgMC04LTMuNTgtOC04VjcyYzAtNC40MiAzLjU4LTggOC04aDU2VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIMzJDMTQuMzMgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMi43Ny45MSA1LjI0IDEuNTcgNy44TDE2MCAzMjkuMzhWMjg4em0zMjAgNjRoLTMydjU2YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTU2aC02NHY1NmMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di01NmgtNjR2NTZjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtNTZoLTQxLjM3TDI0LjIgNTEwLjQzYzIuNTYuNjYgNS4wNCAxLjU3IDcuOCAxLjU3aDQ0OGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1bGVySG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NDQgMTI4aC00OHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhoLTE2Yy00LjQyIDAtOC0zLjU4LTgtOHYtODhoLTY0djg4YzAgNC40Mi0zLjU4IDgtOCA4aC0xNmMtNC40MiAwLTgtMy41OC04LTh2LTg4aC02NHY4OGMwIDQuNDItMy41OCA4LTggOGgtMTZjLTQuNDIgMC04LTMuNTgtOC04di04OGgtNjR2ODhjMCA0LjQyLTMuNTggOC04IDhIODhjLTQuNDIgMC04LTMuNTgtOC04di04OEgzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYxOTJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1MTJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSdWxlclZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyNTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2OCA0MTZjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OHYtNjRoLTg4Yy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoODh2LTY0aC04OGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDg4di02NGgtODhjLTQuNDIgMC04LTMuNTgtOC04di0xNmMwLTQuNDIgMy41OC04IDgtOGg4OFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDMyQzE0LjMzIDAgMCAxNC4zMyAwIDMydjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDE5MmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi02NGgtODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM1LjcgMTY3LjJMNTU2LjEgMzEuN2MtOC44LTE1LTI4LjMtMjAuMS00My41LTExLjVsLTY5IDM5LjFMNTAzLjMgMTYxYzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45TDQxNiA3NWwtNTUuMiAzMS4zIDI3LjkgNDcuNGMyLjIgMy44LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOUwzMzMuMiAxMjIgMjc4IDE1My4zIDMzNy44IDI1NWMyLjIgMy43LjkgOC41LTIuOSAxMC43bC0xMy44IDcuOGMtMy44IDIuMi04LjcuOS0xMC45LTIuOWwtNTkuNy0xMDEuNy01NS4yIDMxLjMgMjcuOSA0Ny40YzIuMiAzLjguOSA4LjUtMi45IDEwLjdsLTEzLjggNy44Yy0zLjggMi4yLTguNy45LTEwLjktMi45bC0yNy45LTQ3LjUtNTUuMiAzMS4zIDU5LjcgMTAxLjdjMi4yIDMuNy45IDguNS0yLjkgMTAuN2wtMTMuOCA3LjhjLTMuOCAyLjItOC43LjktMTAuOS0yLjlMODQuOSAyNjIuOWwtNjkgMzkuMUMuNyAzMTAuNy00LjYgMzI5LjggNC4yIDM0NC44bDc5LjYgMTM1LjZjOC44IDE1IDI4LjMgMjAuMSA0My41IDExLjVMNjI0LjEgMjEwYzE1LjItOC42IDIwLjQtMjcuOCAxMS42LTQyLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUnVubmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDE2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgOTZjMjYuNTEgMCA0OC0yMS40OSA0OC00OFMyOTguNTEgMCAyNzIgMHMtNDggMjEuNDktNDggNDggMjEuNDkgNDggNDggNDh6TTExMy42OSAzMTcuNDdsLTE0LjggMzQuNTJIMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzJoNzcuNDVjMTkuMjUgMCAzNi41OC0xMS40NCA0NC4xMS0yOS4wOWw4Ljc5LTIwLjUyLTEwLjY3LTYuM2MtMTcuMzItMTAuMjMtMzAuMDYtMjUuMzctMzcuOTktNDIuNjF6TTM4NCAyMjMuOTloLTQ0LjAzbC0yNi4wNi01My4yNWMtMTIuNS0yNS41NS0zNS40NS00NC4yMy02MS43OC01MC45NGwtNzEuMDgtMjEuMTRjLTI4LjMtNi44LTU3Ljc3LS41NS04MC44NCAxNy4xNGwtMzkuNjcgMzAuNDFjLTE0LjAzIDEwLjc1LTE2LjY5IDMwLjgzLTUuOTIgNDQuODZzMzAuODQgMTYuNjYgNDQuODYgNS45MmwzOS42OS0zMC40MWM3LjY3LTUuODkgMTcuNDQtOCAyNS4yNy02LjE0bDE0LjcgNC4zNy0zNy40NiA4Ny4zOWMtMTIuNjIgMjkuNDgtMS4zMSA2NC4wMSAyNi4zIDgwLjMxbDg0Ljk4IDUwLjE3LTI3LjQ3IDg3LjczYy01LjI4IDE2Ljg2IDQuMTEgMzQuODEgMjAuOTcgNDAuMDkgMy4xOSAxIDYuNDEgMS40OCA5LjU4IDEuNDggMTMuNjEgMCAyNi4yMy04Ljc3IDMwLjUyLTIyLjQ1bDMxLjY0LTEwMS4wNmM1LjkxLTIwLjc3LTIuODktNDMuMDgtMjEuNjQtNTQuMzlsLTYxLjI0LTM2LjE0IDMxLjMxLTc4LjI4IDIwLjI3IDQxLjQzYzggMTYuMzQgMjQuOTIgMjYuODkgNDMuMTEgMjYuODlIMzg0YzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMxLjk5LTMyLTMxLjk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJ1cGVlU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDggOTZjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NDQuNzQ4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoODUuMjhjMjcuMzA4IDAgNDguMjYxIDkuOTU4IDYwLjk3IDI3LjI1MkgxMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE1OC43NTdjLTYuMjE3IDM2LjA4Ni0zMi45NjEgNTguNjMyLTc0Ljc1NyA1OC42MzJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTMuMDEyYzAgMy4zNDkgMS40IDYuNTQ2IDMuODYxIDguODE4bDE2NS4wNTIgMTUyLjM1NmExMi4wMDEgMTIuMDAxIDAgMCAwIDguMTM5IDMuMTgyaDgyLjU2MmMxMC45MjQgMCAxNi4xNjYtMTMuNDA4IDguMTM5LTIwLjgxOEwxMTYuODcxIDMxOS45MDZjNzYuNDk5LTIuMzQgMTMxLjE0NC01My4zOTUgMTM4LjMxOC0xMjcuOTA2SDMwOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC01OC42OWMtMy40ODYtMTEuNTQxLTguMjgtMjIuMjQ2LTE0LjI1Mi0zMkgzMDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2YzAgOTAuMSA0OC4yIDE2OC43IDEyMCAyMTIuMVYyODhjMC04LjggNy4yLTE2IDE2LTE2czE2IDcuMiAxNiAxNnYxOTYuN2MyOS41IDEyLjQgNjIgMTkuMyA5NiAxOS4zczY2LjUtNi45IDk2LTE5LjNWMjg4YzAtOC44IDcuMi0xNiAxNi0xNnMxNiA3LjIgMTYgMTZ2MTgwLjFDNDQ3LjggNDI0LjcgNDk2IDM0NiA0OTYgMjU2IDQ5NiAxMTkgMzg1IDggMjQ4IDh6bS02NS41IDIxNi41Yy0xNC44LTEzLjItNDYuMi0xMy4yLTYxIDBMMTEyIDIzM2MtMy44IDMuMy05LjMgNC0xMy43IDEuNi00LjQtMi40LTYuOS03LjQtNi4xLTEyLjQgNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMjA4IDE5NyAyMTIgMjIyLjJjLjggNS0xLjcgMTAtNi4xIDEyLjQtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNy04LjV6TTI0OCA0MTZjLTI2LjUgMC00OC0yOC43LTQ4LTY0czIxLjUtNjQgNDgtNjQgNDggMjguNyA0OCA2NC0yMS41IDY0LTQ4IDY0em0xNDkuOC0xODEuNWMtNS44IDMuMS0xMS4yLjctMTMuNy0xLjZsLTkuNS04LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwzMDQgMjMzYy0zLjggMy4zLTkuMyA0LTEzLjcgMS42LTQuNC0yLjQtNi45LTcuNC02LjEtMTIuNCA0LTI1LjIgMzQuMi00Mi4xIDU5LjktNDIuMVM0MDAgMTk3IDQwNCAyMjIuMmMuNiA0LjktMS44IDkuOS02LjIgMTIuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYWRUZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6TTE1MiA0MTZjLTI2LjUgMC00OC0yMS00OC00NyAwLTIwIDI4LjUtNjAuNCA0MS42LTc3LjggMy4yLTQuMyA5LjYtNC4zIDEyLjggMEMxNzEuNSAzMDguNiAyMDAgMzQ5IDIwMCAzNjljMCAyNi0yMS41IDQ3LTQ4IDQ3em0xNi0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNzAuMiAxNTQuMkMzMTUuOCAzNjcuNCAyODIuOSAzNTIgMjQ4IDM1MmMtMjEuMiAwLTIxLjItMzIgMC0zMiA0NC40IDAgODYuMyAxOS42IDExNC43IDUzLjggMTMuOCAxNi40LTExLjIgMzYuNS0yNC41IDIwLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F0ZWxsaXRlRGlzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDUuNDQ5NTQsNDYyLjU5YzcuMzkxNTcsNy4yOTc5Miw2LjE4ODI5LDIwLjA5NjYxLTMuMDAwMzgsMjUuMDAzNTYtNzcuNzEzLDQxLjgwMjgxLTE3Ni43MjU1OSwyOS45MTA1LTI0Mi4zNDMzMS0zNS43MDgyQy01LjQ5NjI0LDM4Ni4yODIyNy0xNy40MDQsMjg3LjM2MiwyNC40MTM4MSwyMDkuNTU0YzQuODkxMjUtOS4wOTUsMTcuNjg5NzUtMTAuMjk4MzQsMjUuMDAzMTgtMy4wMDA0M0wxNjYuMjI4NzIsMzIzLjM2NzA4bDI3LjM5NDExLTI3LjM5NDUyYy0uNjg3NTktMi42MDk3NC0xLjU5NC01LjAwMDcxLTEuNTk0LTcuODEzNjFhMzIuMDA0MDcsMzIuMDA0MDcsMCwxLDEsMzIuMDA0MDcsMzIuMDA0NTVjLTIuNzk3MjMsMC01LjIwMzc4LS44OTA3NS03Ljc5Nzg2LTEuNTk0bC0yNy40MDk3NCwyNy40MTAxNVpNNTExLjk3NTgsMzAzLjA2NzMyYTE2LjEwMzM2LDE2LjEwMzM2LDAsMCwxLTE2LjAwMiwxNy4wMDI0Mkg0NjMuODYwMzFhMTUuOTY5NTYsMTUuOTY5NTYsMCwwLDEtMTUuODkyNjUtMTUuMDAyMTNDNDQwLjQ2NjcxLDE3NS41NDkyLDMzNi40NTM0OCw3MC41MzQyNywyMDcuMDMwNzgsNjMuNTMzMjhhMTUuODQ0ODYsMTUuODQ0ODYsMCwwLDEtMTUuMDAxOTEtMTUuOTA4NTJWMTYuMDI2NTJBMTYuMDkzODksMTYuMDkzODksMCwwLDEsMjA5LjAzMS4wMjQyNUMzNzIuMjU0OTEsOC42MTkyMiw1MDMuNDc0NzIsMTM5Ljg0MSw1MTEuOTc1OCwzMDMuMDY3MzJabS05Ni4wMTIyMS0uMjk2OTJhMTYuMjEwOTMsMTYuMjEwOTMsMCwwLDEtMTYuMTExNDIsMTcuMjk5MzRIMzY3LjY0NWExNi4wNjg2MiwxNi4wNjg2MiwwLDAsMS0xNS44OTI2NS0xNC43MDUyMmMtNi45MDcxMi03Ny4wMTA5NC02OC4xMTgtMTM4LjkxMDM3LTE0NC45MjQ2Ny0xNDUuMjIzNzZhMTUuOTQsMTUuOTQsMCwwLDEtMTQuNzk4NzYtMTUuODkyODlWMTEyLjEzMzkzYTE2LjEzNCwxNi4xMzQsMCwwLDEsMTcuMjk5MDgtMTYuMDk2QzMxOS40NTEzMiwxMDQuNTM5MSw0MDcuNTU2MjcsMTkyLjY0NTM4LDQxNS45NjM1OSwzMDIuNzcwNFpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTYXRlbGxpdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAyLjYwOTY5LDMxMC4wNDIwNmwtOTYuNzAzOTMsOTYuNzE2MjVhMzEuODgxNTEsMzEuODgxNTEsMCwwLDEtNDUuMDA3NjUsMEwyODAuNTcyLDMyNi4zNDExNWwtOS44OTIzMSw5LjkwNzU5YTE5MC41NjM0MywxOTAuNTYzNDMsMCwwLDEtNS40MDcxNiwxNjguNTIyODdjLTQuNTAwNzcsOC41MDExNS0xNi4zOTM0Miw5LjU5NTA1LTIzLjIwNzA3LDIuNzk3MjVMMTM0LjU0NzE1LDQwMC4wNTQyOGwtMTcuNzk5OSwxNy43OTkyOWMuNzAzMjQsMi42MDk3MiwxLjYwOTY1LDUuMDAwNjcsMS42MDk2NSw3Ljc5NzkzYTMyLjAwNTQ0LDMyLjAwNTQ0LDAsMSwxLTMyLjAwNTQ0LTMyLjAwNDM0YzIuNzk3MzUsMCw1LjE4ODM4LjkwNjM3LDcuNzk4MiwxLjYwOTU5bDE3Ljc5OTktMTcuNzk5MjlMNC40MzEyOSwyNjkuOTQyODdjLTYuNzk4LTYuODEzNDItNS43MDQwOS0xOC42MTE5LDIuNzk3MzUtMjMuMjA2MjdhMTkwLjU4MTYxLDE5MC41ODE2MSwwLDAsMSwxNjguNTI4NjQtNS40MDdsOS43OTg1NC05Ljc5ODIxLTgwLjMxMDUzLTgwLjQxNzE2YTMyLjAwMiwzMi4wMDIsMCwwLDEsMC00NS4wOTk4N0wyMDEuOTY0NzQsOS4yOTgxNEEzMS42MjYzOSwzMS42MjYzOSwwLDAsMSwyMjQuNDY4NjgsMGEzMS45OTk1MSwzMS45OTk1MSwwLDAsMSwyMi41OTc1OSw5LjI5ODE0bDgwLjMyNjE1LDgwLjMwNzc3LDQ3LjgwNS00Ny44OTcxM2EzMy42MDc1LDMzLjYwNzUsMCwwLDEsNDcuNTA4MDgsMGw0Ny41MDgwNyw0Ny41MDY0NWEzMy42MzMwOCwzMy42MzMwOCwwLDAsMSwwLDQ3LjUwNjQ0bC00Ny44MDUsNDcuODk3MTNMNTAyLjcxOTA4LDI2NS4wMzZBMzEuNzg5MzgsMzEuNzg5MzgsMCwwLDEsNTAyLjYwOTY5LDMxMC4wNDIwNlpNMjE5LjU2MTU5LDE5Ny40MzNsNzMuODI1MDUtNzMuODIyNTItNjguOTE4LTY4LjktNzMuODA5NDIsNzMuODA2ODlabTIzNy43NDM1Miw5MC4xMDYtNjguOTAyMzMtNjguOTE1Ni03My44MjUsNzMuODIyNTIsNjguOTE4LDY4LjlaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuOTQxIDEyOS45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMzE2LjExOCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTYzLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0yMjQgNDE2Yy0zNS4zNDYgMC02NC0yOC42NTQtNjQtNjQgMC0zNS4zNDYgMjguNjU0LTY0IDY0LTY0czY0IDI4LjY1NCA2NCA2NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjR6bTk2LTMwNC41MlYyMTJjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg3NmMtNi42MjcgMC0xMi01LjM3My0xMi0xMlYxMDhjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgyMjguNTJjMy4xODMgMCA2LjIzNSAxLjI2NCA4LjQ4NSAzLjUxNWwzLjQ4IDMuNDhBMTEuOTk2IDExLjk5NiAwIDAgMSAzMjAgMTExLjQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjaG9vbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDIyNHYyNzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoODBWMTkySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyem0zNjAtNDhoLTI0di00MGMwLTQuNDItMy41OC04LTgtOGgtMTZjLTQuNDIgMC04IDMuNTgtOCA4djY0YzAgNC40MiAzLjU4IDggOCA4aDQ4YzQuNDIgMCA4LTMuNTggOC04di0xNmMwLTQuNDItMy41OC04LTgtOHptMTM3Ljc1LTYzLjk2bC0xNjAtMTA2LjY3YTMyLjAyIDMyLjAyIDAgMCAwLTM1LjUgMGwtMTYwIDEwNi42N0EzMi4wMDIgMzIuMDAyIDAgMCAwIDEyOCAxMzguNjZWNTEyaDEyOFYzNjhjMC04Ljg0IDcuMTYtMTYgMTYtMTZoOTZjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTQ0aDEyOFYxMzguNjdjMC0xMC43LTUuMzUtMjAuNy0xNC4yNS0yNi42M3pNMzIwIDI1NmMtNDQuMTggMC04MC0zNS44Mi04MC04MHMzNS44Mi04MCA4MC04MCA4MCAzNS44MiA4MCA4MC0zNS44MiA4MC04MCA4MHptMjg4LTY0aC02NHYzMjBoODBjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjI0YzAtMTcuNjctMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2NyZXdkcml2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBMMzIwIDk2djYyLjA2bC04My4wMyA4My4wM2M2Ljc5IDQuMjUgMTMuMjcgOS4wNiAxOS4wNyAxNC44NyA1LjggNS44IDEwLjYyIDEyLjI4IDE0Ljg3IDE5LjA3TDM1My45NCAxOTJINDE2bDk2LTEyOC02NC02NHpNMTI4IDI3OC41OUwxMC45MiAzOTUuNjdjLTE0LjU1IDE0LjU1LTE0LjU1IDM4LjE1IDAgNTIuNzFsNTIuNyA1Mi43YzE0LjU2IDE0LjU2IDM4LjE1IDE0LjU2IDUyLjcxIDBMMjMzLjQxIDM4NGMyOS4xMS0yOS4xMSAyOS4xMS03Ni4zIDAtMTA1LjQxcy03Ni4zLTI5LjExLTEwNS40MSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNjcm9sbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OCAwQzIxLjUzIDAgMCAyMS41MyAwIDQ4djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDgwVjQ4Qzk2IDIxLjUzIDc0LjQ3IDAgNDggMHptMjA4IDQxMi41N1YzNTJoMjg4Vjk2YzAtNTIuOTQtNDMuMDYtOTYtOTYtOTZIMTExLjU5QzEyMS43NCAxMy40MSAxMjggMjkuOTIgMTI4IDQ4djM2OGMwIDM4Ljg3IDM0LjY1IDY5LjY1IDc0Ljc1IDYzLjEyQzIzNC4yMiA0NzQgMjU2IDQ0NC40NiAyNTYgNDEyLjU3ek0yODggMzg0djMyYzAgNTIuOTMtNDMuMDYgOTYtOTYgOTZoMzM2YzYxLjg2IDAgMTEyLTUwLjE0IDExMi0xMTIgMC04Ljg0LTcuMTYtMTYtMTYtMTZIMjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMEgxMjhMMCAxMjh2MzIwYzAgMzUuMyAyOC43IDY0IDY0IDY0aDI1NmMzNS4zIDAgNjQtMjguNyA2NC02NFY2NGMwLTM1LjMtMjguNy02NC02NC02NHpNMTYwIDE2MGgtNDhWNjRoNDh2OTZ6bTgwIDBoLTQ4VjY0aDQ4djk2em04MCAwaC00OFY2NGg0OHY5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hEb2xsYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA1LjA0IDQ0Mi42NmwtOTkuNzEtOTkuNjljLTQuNS00LjUtMTAuNi03LTE3LTdoLTE2LjNjMjcuNi0zNS4zIDQ0LTc5LjY5IDQ0LTEyNy45OUM0MTYuMDMgOTMuMDkgMzIyLjkyIDAgMjA4LjAyIDBTMCA5My4wOSAwIDIwNy45OHM5My4xMSAyMDcuOTggMjA4LjAyIDIwNy45OGM0OC4zIDAgOTIuNzEtMTYuNCAxMjguMDEtNDR2MTYuM2MwIDYuNCAyLjUgMTIuNSA3IDE3bDk5LjcxIDk5LjY5YzkuNCA5LjQgMjQuNiA5LjQgMzMuOSAwbDI4LjMtMjguM2M5LjQtOS40IDkuNC0yNC41OS4xLTMzLjk5em0tMjk3LjAyLTkwLjdjLTc5LjU0IDAtMTQ0LTY0LjM0LTE0NC0xNDMuOTggMC03OS41MyA2NC4zNS0xNDMuOTggMTQ0LTE0My45OCA3OS41NCAwIDE0NCA2NC4zNCAxNDQgMTQzLjk4IDAgNzkuNTMtNjQuMzUgMTQzLjk4LTE0NCAxNDMuOTh6bTI3LjExLTE1Mi41NGwtNDUuMDEtMTMuNWMtNS4xNi0xLjU1LTguNzctNi43OC04Ljc3LTEyLjczIDAtNy4yNyA1LjMtMTMuMTkgMTEuOC0xMy4xOWgyOC4xMWM0LjU2IDAgOC45NiAxLjI5IDEyLjgyIDMuNzIgMy4yNCAyLjAzIDcuMzYgMS45MSAxMC4xMy0uNzNsMTEuNzUtMTEuMjFjMy41My0zLjM3IDMuMzMtOS4yMS0uNTctMTIuMTQtOS4xLTYuODMtMjAuMDgtMTAuNzctMzEuMzctMTEuMzVWMTEyYzAtNC40Mi0zLjU4LTgtOC04aC0xNmMtNC40MiAwLTggMy41OC04IDh2MTYuMTJjLTIzLjYzLjYzLTQyLjY4IDIwLjU1LTQyLjY4IDQ1LjA3IDAgMTkuOTcgMTIuOTkgMzcuODEgMzEuNTggNDMuMzlsNDUuMDEgMTMuNWM1LjE2IDEuNTUgOC43NyA2Ljc4IDguNzcgMTIuNzMgMCA3LjI3LTUuMyAxMy4xOS0xMS44IDEzLjE5aC0yOC4xYy00LjU2IDAtOC45Ni0xLjI5LTEyLjgyLTMuNzItMy4yNC0yLjAzLTcuMzYtMS45MS0xMC4xMy43M2wtMTEuNzUgMTEuMjFjLTMuNTMgMy4zNy0zLjMzIDkuMjEuNTcgMTIuMTQgOS4xIDYuODMgMjAuMDggMTAuNzcgMzEuMzcgMTEuMzVWMzA0YzAgNC40MiAzLjU4IDggOCA4aDE2YzQuNDIgMCA4LTMuNTggOC04di0xNi4xMmMyMy42My0uNjMgNDIuNjgtMjAuNTQgNDIuNjgtNDUuMDcgMC0xOS45Ny0xMi45OS0zNy44MS0zMS41OS00My4zOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTZWFyY2hMb2NhdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDUuMDQgNDQyLjY2bC05OS43MS05OS42OWMtNC41LTQuNS0xMC42LTctMTctN2gtMTYuM2MyNy42LTM1LjMgNDQtNzkuNjkgNDQtMTI3Ljk5QzQxNi4wMyA5My4wOSAzMjIuOTIgMCAyMDguMDIgMFMwIDkzLjA5IDAgMjA3Ljk4czkzLjExIDIwNy45OCAyMDguMDIgMjA3Ljk4YzQ4LjMgMCA5Mi43MS0xNi40IDEyOC4wMS00NHYxNi4zYzAgNi40IDIuNSAxMi41IDcgMTdsOTkuNzEgOTkuNjljOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjU5LjEtMzMuOTl6bS0yOTcuMDItOTAuN2MtNzkuNTQgMC0xNDQtNjQuMzQtMTQ0LTE0My45OCAwLTc5LjUzIDY0LjM1LTE0My45OCAxNDQtMTQzLjk4IDc5LjU0IDAgMTQ0IDY0LjM0IDE0NCAxNDMuOTggMCA3OS41My02NC4zNSAxNDMuOTgtMTQ0IDE0My45OHptLjAyLTIzOS45NmMtNDAuNzggMC03My44NCAzMy4wNS03My44NCA3My44MyAwIDMyLjk2IDQ4LjI2IDkzLjA1IDY2Ljc1IDExNC44NmE5LjI0IDkuMjQgMCAwIDAgMTQuMTggMGMxOC40OS0yMS44MSA2Ni43NS04MS44OSA2Ni43NS0xMTQuODYgMC00MC43OC0zMy4wNi03My44My03My44NC03My44M3ptMCA5NmMtMTMuMjYgMC0yNC0xMC43NS0yNC0yNCAwLTEzLjI2IDEwLjc1LTI0IDI0LTI0czI0IDEwLjc0IDI0IDI0YzAgMTMuMjUtMTAuNzUgMjQtMjQgMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDE5MnYzMmMwIDYuNi01LjQgMTItMTIgMTJIMTI0Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0yMDEgMjg0LjdMNDc2LjcgNTA1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwzNDMgNDA1LjNjLTQuNS00LjUtNy0xMC42LTctMTdWMzcyYy0zNS4zIDI3LjYtNzkuNyA0NC0xMjggNDRDOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDBzMjA4IDkzLjEgMjA4IDIwOGMwIDQ4LjMtMTYuNCA5Mi43LTQ0IDEyOGgxNi4zYzYuNCAwIDEyLjUgMi41IDE3IDdsOTkuNyA5OS43YzkuMyA5LjQgOS4zIDI0LjYgMCAzNHpNMzQ0IDIwOGMwLTc1LjItNjAuOC0xMzYtMTM2LTEzNlM3MiAxMzIuOCA3MiAyMDhzNjAuOCAxMzYgMTM2IDEzNiAxMzYtNjAuOCAxMzYtMTM2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNlYXJjaFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDE5MnYzMmMwIDYuNi01LjQgMTItMTIgMTJoLTU2djU2YzAgNi42LTUuNCAxMi0xMiAxMmgtMzJjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNTZoLTU2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTMyYzAtNi42IDUuNC0xMiAxMi0xMmg1NnYtNTZjMC02LjYgNS40LTEyIDEyLTEyaDMyYzYuNiAwIDEyIDUuNCAxMiAxMnY1Nmg1NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTIwMSAyODQuN0w0NzYuNyA1MDVjLTkuNCA5LjQtMjQuNiA5LjQtMzMuOSAwTDM0MyA0MDUuM2MtNC41LTQuNS03LTEwLjYtNy0xN1YzNzJjLTM1LjMgMjcuNi03OS43IDQ0LTEyOCA0NEM5My4xIDQxNiAwIDMyMi45IDAgMjA4UzkzLjEgMCAyMDggMHMyMDggOTMuMSAyMDggMjA4YzAgNDguMy0xNi40IDkyLjctNDQgMTI4aDE2LjNjNi40IDAgMTIuNSAyLjUgMTcgN2w5OS43IDk5LjdjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0zNDQgMjA4YzAtNzUuMi02MC44LTEzNi0xMzYtMTM2UzcyIDEzMi44IDcyIDIwOHM2MC44IDEzNiAxMzYgMTM2IDEzNi02MC44IDEzNi0xMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VhcmNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNSA0NDIuN0w0MDUuMyAzNDNjLTQuNS00LjUtMTAuNi03LTE3LTdIMzcyYzI3LjYtMzUuMyA0NC03OS43IDQ0LTEyOEM0MTYgOTMuMSAzMjIuOSAwIDIwOCAwUzAgOTMuMSAwIDIwOHM5My4xIDIwOCAyMDggMjA4YzQ4LjMgMCA5Mi43LTE2LjQgMTI4LTQ0djE2LjNjMCA2LjQgMi41IDEyLjUgNyAxN2w5OS43IDk5LjdjOS40IDkuNCAyNC42IDkuNCAzMy45IDBsMjguMy0yOC4zYzkuNC05LjQgOS40LTI0LjYuMS0zNHpNMjA4IDMzNmMtNzAuNyAwLTEyOC01Ny4yLTEyOC0xMjggMC03MC43IDU3LjItMTI4IDEyOC0xMjggNzAuNyAwIDEyOCA1Ny4yIDEyOCAxMjggMCA3MC43LTU3LjIgMTI4LTEyOCAxMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VlZGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjQgOTZIMGMwIDEyMy43IDEwMC4zIDIyNCAyMjQgMjI0djE0NGMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjMyMEMyODggMTk2LjMgMTg3LjcgOTYgNjQgOTZ6bTM4NC02NGMtODQuMiAwLTE1Ny40IDQ2LjUtMTk1LjcgMTE1LjIgMjcuNyAzMC4yIDQ4LjIgNjYuOSA1OSAxMDcuNkM0MjQgMjQzLjEgNTEyIDE0Ny45IDUxMiAzMmgtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2VydmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCAxNjBIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMlY2NGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJoNDQ4YzE3LjY3MyAwIDMyIDE0LjMyNyAzMiAzMnY2NGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJ6bS00OC04OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0tNjQgMGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0czEwLjc0NSAyNCAyNCAyNCAyNC0xMC43NDUgMjQtMjQtMTAuNzQ1LTI0LTI0LTI0em0xMTIgMjQ4SDMyYy0xNy42NzMgMC0zMi0xNC4zMjctMzItMzJ2LTY0YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMmg0NDhjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjY0YzAgMTcuNjczLTE0LjMyNyAzMi0zMiAzMnptLTQ4LTg4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bS02NCAwYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjRzMTAuNzQ1IDI0IDI0IDI0IDI0LTEwLjc0NSAyNC0yNC0xMC43NDUtMjQtMjQtMjR6bTExMiAyNDhIMzJjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMnYtNjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyaDQ0OGMxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJ2NjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMyem0tNDgtODhjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHptLTY0IDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHMxMC43NDUgMjQgMjQgMjQgMjQtMTAuNzQ1IDI0LTI0LTEwLjc0NS0yNC0yNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFwZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LDI1NkExMjgsMTI4LDAsMSwwLDI1NiwzODQsMTI4LDEyOCwwLDAsMCwxMjgsMjU2Wm0zNzktNTQuODZMNDAwLjA3LDE4LjI5YTM3LjI2LDM3LjI2LDAsMCwwLTY0LjE0LDBMMjI5LDIwMS4xNEMyMTQuNzYsMjI1LjUyLDIzMi41OCwyNTYsMjYxLjA5LDI1Nkg0NzQuOTFDNTAzLjQyLDI1Niw1MjEuMjQsMjI1LjUyLDUwNywyMDEuMTRaTTQ4MCwyODhIMzIwYTMyLDMyLDAsMCwwLTMyLDMyVjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkg0ODBhMzIsMzIsMCwwLDAsMzItMzJWMzIwQTMyLDMyLDAsMCwwLDQ4MCwyODhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hhcmVBbHRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDgwdjM1MmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjgwYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoMzUyYzI2LjUxIDAgNDggMjEuNDkgNDggNDh6TTMwNCAyOTZjLTE0LjU2MiAwLTI3LjgyMyA1LjU2MS0zNy43ODMgMTQuNjcxbC02Ny45NTgtNDAuNzc1YTU2LjMzOSA1Ni4zMzkgMCAwIDAgMC0yNy43OTNsNjcuOTU4LTQwLjc3NUMyNzYuMTc3IDIxMC40MzkgMjg5LjQzOCAyMTYgMzA0IDIxNmMzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZzLTI1LjA3Mi01Ni01Ni01Ni01NiAyNS4wNzItNTYgNTZjMCA0Ljc5Ny42MDUgOS40NTMgMS43NCAxMy44OTdsLTY3Ljk1OCA0MC43NzVDMTcxLjgyMyAyMDUuNTYxIDE1OC41NjIgMjAwIDE0NCAyMDBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTZjMTQuNTYyIDAgMjcuODIzLTUuNTYxIDM3Ljc4My0xNC42NzFsNjcuOTU4IDQwLjc3NWE1Ni4wODggNTYuMDg4IDAgMCAwLTEuNzQgMTMuODk3YzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnM1Ni0yNS4wNzIgNTYtNTZDMzYwIDMyMS4wNzIgMzM0LjkyOCAyOTYgMzA0IDI5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTIgMzIwYy0yMi42MDggMC00My4zODcgNy44MTktNTkuNzkgMjAuODk1bC0xMDIuNDg2LTY0LjA1NGE5Ni41NTEgOTYuNTUxIDAgMCAwIDAtNDEuNjgzbDEwMi40ODYtNjQuMDU0QzMwOC42MTMgMTg0LjE4MSAzMjkuMzkyIDE5MiAzNTIgMTkyYzUzLjAxOSAwIDk2LTQyLjk4MSA5Ni05NlM0MDUuMDE5IDAgMzUyIDBzLTk2IDQyLjk4MS05NiA5NmMwIDcuMTU4Ljc5IDE0LjEzIDIuMjc2IDIwLjg0MUwxNTUuNzkgMTgwLjg5NUMxMzkuMzg3IDE2Ny44MTkgMTE4LjYwOCAxNjAgOTYgMTYwYy01My4wMTkgMC05NiA0Mi45ODEtOTYgOTZzNDIuOTgxIDk2IDk2IDk2YzIyLjYwOCAwIDQzLjM4Ny03LjgxOSA1OS43OS0yMC44OTVsMTAyLjQ4NiA2NC4wNTRBOTYuMzAxIDk2LjMwMSAwIDAgMCAyNTYgNDE2YzAgNTMuMDE5IDQyLjk4MSA5NiA5NiA5NnM5Ni00Mi45ODEgOTYtOTYtNDIuOTgxLTk2LTk2LTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC40ODIgMTc3LjQ0OEw0MjQuNDc5IDMxMy40MzNDNDA5LjMgMzI3Ljc2OCAzODQgMzE3LjE0IDM4NCAyOTUuOTg1di03MS45NjNjLTE0NC41NzUuOTctMjA1LjU2NiAzNS4xMTMtMTY0Ljc3NSAxNzEuMzUzIDQuNDgzIDE0Ljk3My0xMi44NDYgMjYuNTY3LTI1LjAwNiAxNy4zM0MxNTUuMjUyIDM4My4xMDUgMTIwIDMyNi40ODggMTIwIDI2OS4zMzljMC0xNDMuOTM3IDExNy41OTktMTcyLjUgMjY0LTE3My4zMTJWMjQuMDEyYzAtMjEuMTc0IDI1LjMxNy0zMS43NjggNDAuNDc5LTE3LjQ0OGwxNDQuMDAzIDEzNS45ODhjMTAuMDIgOS40NjMgMTAuMDI4IDI1LjQyNSAwIDM0Ljg5NnpNMzg0IDM3OS4xMjhWNDQ4SDY0VjEyOGg1MC45MTZhMTEuOTkgMTEuOTkgMCAwIDAgOC42NDgtMy42OTNjMTQuOTUzLTE1LjU2OCAzMi4yMzctMjcuODkgNTEuMDE0LTM3LjY3NkMxODUuNzA4IDgwLjgzIDE4MS41ODQgNjQgMTY5LjAzMyA2NEg0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjM1MmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDM1MmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4di04OC44MDZjMC04LjI4OC04LjE5Ny0xNC4wNjYtMTYuMDExLTExLjMwMmE3MS44MyA3MS44MyAwIDAgMS0zNC4xODkgMy4zNzdjLTcuMjctMS4wNDYtMTMuOCA0LjUxNC0xMy44IDExLjg1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDMuNjkxIDE4OS44MzZMMzI3LjY4NyAzNy44NTFDMzEyLjI4MSAyNC41NDYgMjg4IDM1LjM0NyAyODggNTYuMDE1djgwLjA1M0MxMjcuMzcxIDEzNy45MDcgMCAxNzAuMSAwIDMyMi4zMjZjMCA2MS40NDEgMzkuNTgxIDEyMi4zMDkgODMuMzMzIDE1NC4xMzIgMTMuNjUzIDkuOTMxIDMzLjExMS0yLjUzMyAyOC4wNzctMTguNjMxQzY2LjA2NiAzMTIuODE0IDEzMi45MTcgMjc0LjMxNiAyODggMjcyLjA4NVYzNjBjMCAyMC43IDI0LjMgMzEuNDUzIDM5LjY4NyAxOC4xNjRsMTc2LjAwNC0xNTJjMTEuMDcxLTkuNTYyIDExLjA4Ni0yNi43NTMgMC0zNi4zMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hla2VsU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggMTY4djE2OGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNjhjMC03NS4xMS02MC44OS0xMzYtMTM2LTEzNkgyNEMxMC43NSAzMiAwIDQyLjc0IDAgNTZ2NDA4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjExMmgxMTJjMzAuOTMgMCA1NiAyNS4wNyA1NiA1NnpNNDMyIDMyaC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2Mjk2YzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZIMjAwVjE3NmMwLTguODQtNy4xNi0xNi0xNi0xNmgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djI4MGMwIDEzLjI1IDEwLjc1IDI0IDI0IDI0aDE2OGM3NS4xMSAwIDEzNi02MC44OSAxMzYtMTM2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaWVsZEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjYuNSA4My43bC0xOTItODBhNDguMTUgNDguMTUgMCAwIDAtMzYuOSAwbC0xOTIgODBDMjcuNyA5MS4xIDE2IDEwOC42IDE2IDEyOGMwIDE5OC41IDExNC41IDMzNS43IDIyMS41IDM4MC4zIDExLjggNC45IDI1LjEgNC45IDM2LjkgMEMzNjAuMSA0NzIuNiA0OTYgMzQ5LjMgNDk2IDEyOGMwLTE5LjQtMTEuNy0zNi45LTI5LjUtNDQuM3pNMjU2LjEgNDQ2LjNsLS4xLTM4MSAxNzUuOSA3My4zYy0zLjMgMTUxLjQtODIuMSAyNjEuMS0xNzUuOCAzMDcuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaGllbGRWaXJ1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQsMTkyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDIyNCwxOTJaTTQ2Ni41LDgzLjY4bC0xOTItODBBNTcuNCw1Ny40LDAsMCwwLDI1Ni4wNSwwYTU3LjQsNTcuNCwwLDAsMC0xOC40NiwzLjY3bC0xOTIsODBBNDcuOTMsNDcuOTMsMCwwLDAsMTYsMTI4QzE2LDMyNi41LDEzMC41LDQ2My43MiwyMzcuNSw1MDguMzJhNDguMDksNDguMDksMCwwLDAsMzYuOTEsMEMzNjAuMDksNDcyLjYxLDQ5NiwzNDkuMyw0OTYsMTI4QTQ4LDQ4LDAsMCwwLDQ2Ni41LDgzLjY4Wk0zODQsMjU2SDM3MS44OGMtMjguNTEsMC00Mi43OSwzNC40Ny0yMi42Myw1NC42M2w4LjU4LDguNTdhMTYsMTYsMCwxLDEtMjIuNjMsMjIuNjNsLTguNTctOC41OEMzMDYuNDcsMzEzLjA5LDI3MiwzMjcuMzcsMjcyLDM1NS44OFYzNjhhMTYsMTYsMCwwLDEtMzIsMFYzNTUuODhjMC0yOC41MS0zNC40Ny00Mi43OS01NC42My0yMi42M2wtOC41Nyw4LjU4YTE2LDE2LDAsMCwxLTIyLjYzLTIyLjYzbDguNTgtOC41N2MyMC4xNi0yMC4xNiw1Ljg4LTU0LjYzLTIyLjYzLTU0LjYzSDEyOGExNiwxNiwwLDAsMSwwLTMyaDEyLjEyYzI4LjUxLDAsNDIuNzktMzQuNDcsMjIuNjMtNTQuNjNsLTguNTgtOC41N2ExNiwxNiwwLDAsMSwyMi42My0yMi42M2w4LjU3LDguNThjMjAuMTYsMjAuMTYsNTQuNjMsNS44OCw1NC42My0yMi42M1YxMTJhMTYsMTYsMCwwLDEsMzIsMHYxMi4xMmMwLDI4LjUxLDM0LjQ3LDQyLjc5LDU0LjYzLDIyLjYzbDguNTctOC41OGExNiwxNiwwLDAsMSwyMi42MywyMi42M2wtOC41OCw4LjU3QzMyOS4wOSwxODkuNTMsMzQzLjM3LDIyNCwzNzEuODgsMjI0SDM4NGExNiwxNiwwLDAsMSwwLDMyWm0tOTYsMGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwyODgsMjU2WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNoaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjYxNiAzNzIuNjM5bDcwLjAxMi03MC4wMTJjMTYuODk5LTE2LjkgOS45NDItNDUuNzcxLTEyLjgzNi01My4wOTJMNTEyIDIzNi4xMDJWOTZjMC0xNy42NzMtMTQuMzI3LTMyLTMyLTMyaC02NFYyNGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjQ4Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2NDBoLTY0Yy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MTQwLjEwMmwtNDEuNzkyIDEzLjQzM2MtMjIuNzUzIDcuMzEzLTI5Ljc1NCAzNi4xNzMtMTIuODM2IDUzLjA5Mmw3MC4wMTIgNzAuMDEyQzEyNS44MjggNDE2LjI4NyA4NS41ODcgNDQ4IDI0IDQ0OGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNCA2MS4wMjMgMCAxMDcuNDk5LTIwLjYxIDE0My4yNTgtNTkuMzk2QzE4MS42NzcgNDg3LjQzMiAyMTYuMDIxIDUxMiAyNTYgNTEyaDEyOGMzOS45NzkgMCA3NC4zMjMtMjQuNTY4IDg4Ljc0Mi01OS4zOTZDNTA4LjQ5NSA0OTEuMzg0IDU1NC45NjggNTEyIDYxNiA1MTJjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjQtNjAuODE3IDAtMTAxLjU0Mi0zMS4wMDEtMTE5LjM4NC03NS4zNjF6TTE5MiAxMjhoMjU2djg3LjUzMWwtMTE4LjIwOC0zNy45OTVhMzEuOTk1IDMxLjk5NSAwIDAgMC0xOS41ODQgMEwxOTIgMjE1LjUzMVYxMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hpcHBpbmdGYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNTJoLTE2VjI0My45YzAtMTIuNy01LjEtMjQuOS0xNC4xLTMzLjlMNDk0IDExMC4xYy05LTktMjEuMi0xNC4xLTMzLjktMTQuMUg0MTZWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTEyQzg1LjUgMCA2NCAyMS41IDY0IDQ4djQ4SDhjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjcyYzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhINDBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDhoMjA4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIOGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOGgyMDhjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEg2NHYxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob2VQcmludHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDE2MGgzMlYzMmgtMzJjLTM1LjM1IDAtNjQgMjguNjUtNjQgNjRzMjguNjUgNjQgNjQgNjR6TTAgNDE2YzAgMzUuMzUgMjguNjUgNjQgNjQgNjRoMzJWMzUySDY0Yy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0em0zMzcuNDYtMTI4Yy0zNC45MSAwLTc2LjE2IDEzLjEyLTEwNC43MyAzMi0yNC43OSAxNi4zOC00NC41MiAzMi0xMDQuNzMgMzJ2MTI4bDU3LjUzIDE1Ljk3YzI2LjIxIDcuMjggNTMuMDEgMTMuMTIgODAuMzEgMTUuMDUgMzIuNjkgMi4zMSA2NS42LjY3IDk3LjU4LTYuMkM0NzIuOSA0ODEuMyA1MTIgNDI5LjIyIDUxMiAzODRjMC02NC04NC4xOC05Ni0xNzQuNTQtOTZ6TTQ5MS40MiA3LjE5QzQ1OS40NC4zMiA0MjYuNTMtMS4zMyAzOTMuODQuOTljLTI3LjMgMS45My01NC4xIDcuNzctODAuMzEgMTUuMDRMMjU2IDMydjEyOGM2MC4yIDAgNzkuOTQgMTUuNjIgMTA0LjczIDMyIDI4LjU3IDE4Ljg4IDY5LjgyIDMyIDEwNC43MyAzMkM1NTUuODIgMjI0IDY0MCAxOTIgNjQwIDEyOGMwLTQ1LjIyLTM5LjEtOTcuMy0xNDguNTgtMTIwLjgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAxNjB2LTMyQzM1MiA1Ny40MiAyOTQuNTc5IDAgMjI0IDAgMTUzLjQyIDAgOTYgNTcuNDIgOTYgMTI4djMySDB2MjcyYzAgNDQuMTgzIDM1LjgxNyA4MCA4MCA4MGgyODhjNDQuMTgzIDAgODAtMzUuODE3IDgwLTgwVjE2MGgtOTZ6bS0xOTItMzJjMC0zNS4yOSAyOC43MS02NCA2NC02NHM2NCAyOC43MSA2NCA2NHYzMkgxNjB2LTMyem0xNjAgMTIwYy0xMy4yNTUgMC0yNC0xMC43NDUtMjQtMjRzMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjR6bS0xOTIgMGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNob3BwaW5nQmFza2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU3NiAyMTZ2MTZjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0aC04bC0yNi4xMTMgMTgyLjc4OEM1MTQuNTA5IDQ2Mi40MzUgNDk0LjI1NyA0ODAgNDcwLjM3IDQ4MEgxMDUuNjNjLTIzLjg4NyAwLTQ0LjEzOS0xNy41NjUtNDcuNTE4LTQxLjIxMkwzMiAyNTZoLThjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtMTZjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDY3LjM0MWwxMDYuNzgtMTQ2LjgyMWMxMC4zOTUtMTQuMjkyIDMwLjQwNy0xNy40NTMgNDQuNzAxLTcuMDU4IDE0LjI5MyAxMC4zOTUgMTcuNDUzIDMwLjQwOCA3LjA1OCA0NC43MDFMMTcwLjQ3NyAxOTJoMjM1LjA0NkwzMjYuMTIgODIuODIxYy0xMC4zOTUtMTQuMjkyLTcuMjM0LTM0LjMwNiA3LjA1OS00NC43MDEgMTQuMjkxLTEwLjM5NSAzNC4zMDYtNy4yMzUgNDQuNzAxIDcuMDU4TDQ4NC42NTkgMTkySDU1MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTMxMiAzOTJWMjgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHMtMjQgMTAuNzQ1LTI0IDI0djExMmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRzMjQtMTAuNzQ1IDI0LTI0em0xMTIgMFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6bS0yMjQgMFYyODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0cy0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHMyNC0xMC43NDUgMjQtMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2hvcHBpbmdDYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOC4xMiAzMDEuMzE5bDQ3LjI3My0yMDhDNTc4LjgwNiA3OC4zMDEgNTY3LjM5MSA2NCA1NTEuOTkgNjRIMTU5LjIwOGwtOS4xNjYtNDQuODFDMTQ3Ljc1OCA4LjAyMSAxMzcuOTMgMCAxMjYuNTI5IDBIMjRDMTAuNzQ1IDAgMCAxMC43NDUgMCAyNHYxNmMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoNjkuODgzbDcwLjI0OCAzNDMuNDM1QzE0Ny4zMjUgNDE3LjEgMTM2IDQzNS4yMjIgMTM2IDQ1NmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZzNTYtMjUuMDcyIDU2LTU2YzAtMTUuNjc0LTYuNDQ3LTI5LjgzNS0xNi44MjQtNDBoMjA5LjY0N0M0MzAuNDQ3IDQyNi4xNjUgNDI0IDQ0MC4zMjYgNDI0IDQ1NmMwIDMwLjkyOCAyNS4wNzIgNTYgNTYgNTZzNTYtMjUuMDcyIDU2LTU2YzAtMjIuMTcyLTEyLjg4OC00MS4zMzItMzEuNTc5LTUwLjQwNWw1LjUxNy0yNC4yNzZjMy40MTMtMTUuMDE4LTguMDAyLTI5LjMxOS0yMy40MDMtMjkuMzE5SDIxOC4xMTdsLTYuNTQ1LTMyaDI5My4xNDVjMTEuMjA2IDAgMjAuOTItNy43NTQgMjMuNDAzLTE4LjY4MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaG93ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LDMyMGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzIwWm0zMi05NmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMzYsMjI0Wm0zMiw2NGExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCwzNjgsMjg4Wm0tMzIsMzJhMTYsMTYsMCwxLDAtMTYtMTZBMTYsMTYsMCwwLDAsMzM2LDMyMFptLTMyLTY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMwNCwyNTZabTEyOC0zMmExNiwxNiwwLDEsMC0xNi0xNkExNiwxNiwwLDAsMCw0MzIsMjI0Wm0tNDgsMTZhMTYsMTYsMCwxLDAsMTYtMTZBMTYsMTYsMCwwLDAsMzg0LDI0MFptLTE2LTQ4YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDM2OCwxOTJabTk2LDMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ2NCwyMjRabTMyLTMyYTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDQ5NiwxOTJabS02NCw2NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCw0MzIsMjU2Wm0tMzIsMzJhMTYsMTYsMCwxLDAsMTYsMTZBMTYsMTYsMCwwLDAsNDAwLDI4OFptLTY0LDY0YTE2LDE2LDAsMSwwLDE2LDE2QTE2LDE2LDAsMCwwLDMzNiwzNTJabS0zMiwzMmExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzMDQsMzg0Wm02NC02NGExNiwxNiwwLDEsMCwxNiwxNkExNiwxNiwwLDAsMCwzNjgsMzIwWm0yMS42NS0yMTguMzUtMTEuMy0xMS4zMWExNiwxNiwwLDAsMC0yMi42MywwTDM1MC4wNSw5NkExMTEuMTksMTExLjE5LDAsMCwwLDI3Miw2NGMtMTkuMjQsMC0zNy4wOCw1LjMtNTIuOSwxMy44NWwtMTAtMTBBMTIxLjcyLDEyMS43MiwwLDAsMCwxMjMuNDQsMzJDNTUuNDksMzEuNSwwLDkyLjkxLDAsMTYwLjg1VjQ2NGExNiwxNiwwLDAsMCwxNiwxNkg0OGExNiwxNiwwLDAsMCwxNi0xNlYxNTguNGMwLTMwLjE1LDIxLTU4LjIsNTEtNjEuOTNhNTguMzgsNTguMzgsMCwwLDEsNDguOTMsMTYuNjdsMTAsMTBDMTY1LjMsMTM4LjkyLDE2MCwxNTYuNzYsMTYwLDE3NmExMTEuMjMsMTExLjIzLDAsMCwwLDMyLDc4LjA1bC01LjY2LDUuNjdhMTYsMTYsMCwwLDAsMCwyMi42MmwxMS4zLDExLjMxYTE2LDE2LDAsMCwwLDIyLjYzLDBMMzg5LjY1LDEyNC4yOEExNiwxNiwwLDAsMCwzODkuNjUsMTAxLjY1WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNodXR0bGVWYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI4Ljg4IDIxMC42NUw0OTQuMzkgNDkuMjdBNDguMDEgNDguMDEgMCAwIDAgNDU3LjUyIDMySDMyQzE0LjMzIDMyIDAgNDYuMzMgMCA2NHYyODhjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmgzMmMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDEyOGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2czk2LTQyLjk4IDk2LTk2aDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJWMjQxLjM4YzAtMTEuMjMtMy45NC0yMi4xLTExLjEyLTMwLjczek02NCAxOTJWOTZoOTZ2OTZINjR6bTk2IDI0MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMTYwLTI0MGgtOTZWOTZoOTZ2OTZ6bTE2MCAyNDBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bS05Ni0yNDBWOTZoNjYuMDJsODAgOTZIMzg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25JbkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYgNDQ4aC04NGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyaC04NGMtNi42IDAtMTItNS40LTEyLTEyVjc2YzAtNi42IDUuNC0xMiAxMi0xMmg4NGM1MyAwIDk2IDQzIDk2IDk2djE5MmMwIDUzLTQzIDk2LTk2IDk2em0tNDctMjAxTDIwMSA3OWMtMTUtMTUtNDEtNC41LTQxIDE3djk2SDI0Yy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY5NmMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMzZ2OTZjMCAyMS41IDI2IDMyIDQxIDE3bDE2OC0xNjhjOS4zLTkuNCA5LjMtMjQuNiAwLTM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25MYW5ndWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05MS40MzQgNDgzLjk4N2MtLjMwNy0xNi4wMTggMTMuMTA5LTI5LjEyOSAyOS4xMy0yOS4xMjloNjIuMjkzdi01LjcxNEg1Ni45OTNjLTE2LjAyMSAwLTI5LjQzNy0xMy4xMTEtMjkuMTMtMjkuMTI5QzI4LjE2IDQwNC40OTEgNDAuODM1IDM5MiA1Ni40MjggMzkyaDEyNi40Mjl2LTUuNzE0SDI5LjEzNmMtMTYuMDIxIDAtMjkuNDM3LTEzLjExMS0yOS4xMy0yOS4xMjkuMjk3LTE1LjUyMiAxMi45NzMtMjguMDEzIDI4LjU2Ni0yOC4wMTNoMTU0LjI4NnYtNS43MTRINTcuNzA3Yy0xNi4wMjEgMC0yOS40MzctMTMuMTExLTI5LjEzLTI5LjEyOS4yOTctMTUuNTIyIDEyLjk3My0yOC4wMTMgMjguNTY2LTI4LjAxM2gxNjguNTY2bC0zMS4wODUtMjIuNjA2Yy0xMi43NjItOS4yODEtMTUuNTgzLTI3LjE0OS02LjMwMi0zOS45MTIgOS4yODEtMTIuNzYxIDI3LjE1LTE1LjU4MiAzOS45MTItNi4zMDJsMTIzLjM2MSA4OS43MTVhMzQuMjg3IDM0LjI4NyAwIDAgMSAxNC4xMiAyNy43Mjh2MTQxLjEzNmMwIDE1LjkxLTEwLjk0NiAyOS43My0yNi40MzMgMzMuMzc0bC04MC40NzEgMTguOTM0YTEzNy4xNiAxMzcuMTYgMCAwIDEtMzEuNDExIDMuNjQ2SDEyMGMtMTUuNTkzLS4wMDEtMjguMjY5LTEyLjQ5Mi0yOC41NjYtMjguMDE0em03My4yNDktMjI1LjcwMWgzNi40MjNsLTExLjE4Ny04LjEzNmMtMTguNTc5LTEzLjUxMS0yMC4zMTMtNDAuODg3LTMuMTctNTYuNTM2bC0xMy4wMDQtMTYuN2MtOS44NDMtMTIuNjQxLTI4LjQzLTE1LjE3MS00MC44OC01LjA4OC0xMi4wNjUgOS43NzEtMTQuMTMzIDI3LjQ0Ny00LjU1MyAzOS43NWwzNi4zNzEgNDYuNzF6bTI4My4yOTgtMi4xMDNsLTUuMDAzLTE1Mi40NTJjLS41MTgtMTUuNzcxLTEzLjcyMi0yOC4xMzYtMjkuNDkzLTI3LjYxOS0xNS43NzMuNTE4LTI4LjEzNyAxMy43MjItMjcuNjE5IDI5LjQ5M2wxLjI2MiAzOC40MTVMMjgzLjU2NSAxMS4wMTljLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNzYuODg5IDk4Ljc0NS00LjUwOSAzLjUxMS05NC43OS0xMjEuNzM0Yy05LjU4LTEyLjMwMy0yNy4yMjMtMTQuNjMtMzkuNjUzLTUuMzI4LTEyLjgyNyA5LjU5OS0xNC45MjkgMjguMjQtNS4wODYgNDAuODgxbDk0LjQ0MyAxMjEuMjg4LTQuNTA5IDMuNTExLTc3LjY3NS05OS43NTRjLTkuNTgtMTIuMzAzLTI3LjIyMy0xNC42My0zOS42NTMtNS4zMjgtMTIuODI3IDkuNTk5LTE0LjkyOSAyOC4yNC01LjA4NiA0MC44ODFsNTIuMDUzIDY2Ljg0OWMxMi40OTctOC4yNTcgMjkuMDU1LTguMjg1IDQxLjY5LjkwNGwxMjMuMzYgODkuNzE0YzEwLjkwNCA3LjkzIDE3LjQxNSAyMC43MTUgMTcuNDE1IDM0LjE5OHYxNi45OTlsNjEuMDY0LTQ3LjU0OWEzNC4yODUgMzQuMjg1IDAgMCAwIDEzLjIwMi0yOC4xNzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2lnbk91dEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcgMjczTDMyOSA0NDFjLTE1IDE1LTQxIDQuNS00MS0xN3YtOTZIMTUyYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHYtOTZjMC0xMy4zIDEwLjctMjQgMjQtMjRoMTM2Vjg4YzAtMjEuNCAyNS45LTMyIDQxLTE3bDE2OCAxNjhjOS4zIDkuNCA5LjMgMjQuNiAwIDM0ek0xOTIgNDM2di00MGMwLTYuNi01LjQtMTItMTItMTJIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE2MGMwLTE3LjcgMTQuMy0zMiAzMi0zMmg4NGM2LjYgMCAxMi01LjQgMTItMTJWNzZjMC02LjYtNS40LTEyLTEyLTEySDk2Yy01MyAwLTk2IDQzLTk2IDk2djE5MmMwIDUzIDQzIDk2IDk2IDk2aDg0YzYuNiAwIDEyLTUuNCAxMi0xMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiA2NEgxMjhWMTZjMC04LjgtNy4yLTE2LTE2LTE2SDgwYy04LjggMC0xNiA3LjItMTYgMTZ2NDhIMTZDNy4yIDY0IDAgNzEuMiAwIDgwdjMyYzAgOC44IDcuMiAxNiAxNiAxNmg0OHYzNjhjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNlYxMjhoMzY4YzguOCAwIDE2LTcuMiAxNi0xNlY4MGMwLTguOC03LjItMTYtMTYtMTZ6TTE2MCAzODRoMzIwVjE2MEgxNjB2MjI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMTYgMjg4aC00OGMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MTkyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4YzguODQgMCAxNi03LjE2IDE2LTE2VjMwNGMwLTguODQtNy4xNi0xNi0xNi0xNnpNODggMzg0SDQwYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY5NmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtOTZjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bTI1Ni0xOTJoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYyODhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMjA4YzAtOC44NC03LjE2LTE2LTE2LTE2em0xMjgtOTZoLTQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzODRjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZWMTEyYzAtOC44NC03LjE2LTE2LTE2LTE2ek02MDAgMGgtNDhjLTguODQgMC0xNiA3LjE2LTE2IDE2djQ4MGMwIDguODQgNy4xNiAxNiAxNiAxNmg0OGM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYxNmMwLTguODQtNy4xNi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaWduYXR1cmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjIzLjIgMTkyYy01MS44IDMuNS0xMjUuNyA1NC43LTE2My4xIDcxLjUtMjkuMSAxMy4xLTU0LjIgMjQuNC03Ni4xIDI0LjQtMjIuNiAwLTI2LTE2LjItMjEuMy01MS45IDEuMS04IDExLjctNzkuMi00Mi43LTc2LjEtMjUuMSAxLjUtNjQuMyAyNC44LTE2OS41IDEyNkwxOTIgMTgyLjJjMzAuNC03NS45LTUzLjItMTUxLjUtMTI5LjctMTAyLjhMNy40IDExNi4zQzAgMTIxLTIuMiAxMzAuOSAyLjUgMTM4LjRsMTcuMiAyN2M0LjcgNy41IDE0LjYgOS43IDIyLjEgNC45bDU4LTM4LjljMTguNC0xMS43IDQwLjcgNy4yIDMyLjcgMjcuMUwzNC4zIDQwNC4xQzI3LjUgNDIxIDM3IDQ0OCA2NCA0NDhjOC4zIDAgMTYuNS0zLjIgMjIuNi05LjQgNDIuMi00Mi4yIDE1NC43LTE1MC43IDIxMS4yLTE5NS44LTIuMiAyOC41LTIuMSA1OC45IDIwLjYgODMuOCAxNS4zIDE2LjggMzcuMyAyNS4zIDY1LjUgMjUuMyAzNS42IDAgNjgtMTQuNiAxMDIuMy0zMCAzMy0xNC44IDk5LTYyLjYgMTM4LjQtNjUuOCA4LjUtLjcgMTUuMi03LjMgMTUuMi0xNS44di0zMi4xYy4yLTkuMS03LjUtMTYuOC0xNi42LTE2LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2ltQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDY0djM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGgyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTI4TDI1NiAwSDY0QzI4LjcgMCAwIDI4LjcgMCA2NHptMjI0IDE5MmgtNjR2LTY0aDY0djY0em05NiAwaC02NHYtNjRoMzJjMTcuNyAwIDMyIDE0LjMgMzIgMzJ2MzJ6bS02NCAxMjhoNjR2MzJjMCAxNy43LTE0LjMgMzItMzIgMzJoLTMydi02NHptLTk2IDBoNjR2NjRoLTY0di02NHptLTk2IDBoNjR2NjRIOTZjLTE3LjcgMC0zMi0xNC4zLTMyLTMydi0zMnptMC05NmgyNTZ2NjRINjR2LTY0em0wLTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDMydjY0SDY0di0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyLDQxNmE5Niw5NiwwLDAsMCw5Niw5NkgzODRhOTYsOTYsMCwwLDAsOTYtOTZWMzg0SDMyWk00OTYsMjg4SDQwMFYyNTZoNjRhMTYsMTYsMCwwLDAsMTYtMTZWMjI0YTE2LDE2LDAsMCwwLTE2LTE2SDM4NGEzMiwzMiwwLDAsMC0zMiwzMnY0OEgyODhWOTZhMzIsMzIsMCwwLDEsNjQsMHYxNmExNiwxNiwwLDAsMCwxNiwxNmgzMmExNiwxNiwwLDAsMCwxNi0xNlY5NkE5Ni4xNiw5Ni4xNiwwLDAsMCwzMDAuODcsMS44NkMyNTUuMjksMTAuNzEsMjI0LDUzLjM2LDIyNCw5OS43OVYyODhIMTYwVjI0MGEzMiwzMiwwLDAsMC0zMi0zMkg0OGExNiwxNiwwLDAsMC0xNiwxNnYxNmExNiwxNiwwLDAsMCwxNiwxNmg2NHYzMkgxNkExNiwxNiwwLDAsMCwwLDMwNHYzMmExNiwxNiwwLDAsMCwxNiwxNkg0OTZhMTYsMTYsMCwwLDAsMTYtMTZWMzA0QTE2LDE2LDAsMCwwLDQ5NiwyODhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2l0ZW1hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjggMzUySDMyYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnptLTI0LTgwaDE5MnY0OGg0OHYtNDhoMTkydjQ4aDQ4di01Ny41OWMwLTIxLjE3LTE3LjIzLTM4LjQxLTM4LjQxLTM4LjQxSDM0NHYtNjRoNDBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDI1NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDQwdjY0SDk0LjQxQzczLjIzIDIyNCA1NiAyNDEuMjMgNTYgMjYyLjQxVjMyMGg0OHYtNDh6bTI2NCA4MGgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0yNDAgMGgtOTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg5NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrYXRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBjLTI2LjUgMC00OCAyMS41LTQ4IDQ4czIxLjUgNDggNDggNDggNDgtMjEuNSA0OC00OC0yMS41LTQ4LTQ4LTQ4em0wIDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2cy03LjIgMTYtMTYgMTZoLTk2Yy04LjggMC0xNiA3LjItMTYgMTZzNy4yIDE2IDE2IDE2aDk2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4IDAtOC44LTcuMi0xNi0xNi0xNnptLTI4Mi4yIDguNmMtNi4yIDYuMi0xNi40IDYuMy0yMi42IDBsLTY3LjktNjcuOWMtNi4yLTYuMi0xNi40LTYuMi0yMi42IDBzLTYuMiAxNi40IDAgMjIuNmw2Ny45IDY3LjljOS40IDkuNCAyMS43IDE0IDM0IDE0czI0LjYtNC43IDMzLjktMTRjNi4yLTYuMiA2LjItMTYuNCAwLTIyLjZzLTE2LjQtNi4zLTIyLjcgMHptNTYuMS0xNzkuOGwtOTMuNyA5My43Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuMiA2LjIgNi4yIDE0LjQgOS40IDIyLjYgOS40czE2LjQtMy4xIDIyLjYtOS40bDkxLjktOTEuOS0zMC4yLTMwLjJjLTUtNS05LjQtMTAuNy0xMy4yLTE2Ljh6TTEyOCAxNjBoMTA1LjVsLTIwLjEgMTcuMmMtMTMuNSAxMS41LTIxLjYgMjguNC0yMi4zIDQ2LjEtLjcgMTcuOCA2LjEgMzUuMiAxOC43IDQ3LjdsNzguMiA3OC4yVjQzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMydi04OS40YzAtMTIuNi01LjEtMjUtMTQuMS0zMy45bC02MS02MWMuNS0uNCAxLjItLjYgMS43LTEuMWw4Mi4zLTgyLjNjMTEuNS0xMS41IDE0LjktMjguNiA4LjctNDMuNi02LjItMTUtMjAuNy0yNC43LTM3LTI0LjdIMTI4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZ05vcmRpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTMzYyLjUgMCAzMzYgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yMTYgMzIwYy0xMy4yIDAtMjQgMTAuNy0yNCAyNCAwIDEzLjItMTAuOCAyNC0yNCAyNGgtNjkuNUw0NjAgMjg1LjZjMTEuNy00LjcgMjAuMS0xNi4yIDIwLjEtMjkuNiAwLTE3LjctMTQuMy0zMi0zMi0zMmgtNDRMMzc4IDE3MC44Yy0xMi41LTI1LjUtMzUuNS00NC4yLTYxLjgtNTAuOUwyNDUgOTguN2MtMjguMy02LjgtNTcuOC0uNS04MC44IDE3LjFsLTM5LjcgMzAuNGMtMTQgMTAuNy0xNi43IDMwLjgtNS45IDQ0LjkuNy45IDEuNyAxLjMgMi40IDIuMUw2Ni45IDQ2NEgyNGMtMTMuMiAwLTI0IDEwLjctMjQgMjRzMTAuOCAyNCAyNCAyNGg0ODBjMzkuNyAwIDcyLTMyLjMgNzItNzIgMC0xMy4yLTEwLjgtMjQtMjQtMjR6bS0yNjAuNSA0OGgtOTYuOWw0My4xLTkxLTIyLTEzYy0xMi4xLTcuMi0yMS45LTE2LjktMjkuNS0yNy44TDEyMy43IDQ2NEg5OS41bDUyLjMtMjYxLjRjNC4xLTEgOC4xLTIuOSAxMS43LTUuNmwzOS43LTMwLjRjNy43LTUuOSAxNy40LTggMjUuMy02LjFsMTQuNyA0LjQtMzcuNSA4Ny40Yy0xMi42IDI5LjUtMS4zIDY0IDI2LjMgODAuM2w4NSA1MC4yLTI1LjUgODEuMnptMTEwLjYgMGgtNDMuNmwyMy42LTc1LjVjNS45LTIwLjgtMi45LTQzLjEtMjEuNi01NC40TDI5OS4zIDI5OGwzMS4zLTc4LjMgMjAuMyA0MS40YzggMTYuMyAyNC45IDI2LjkgNDMuMSAyNi45aDMzLjNsLTI1LjIgMTc2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNraWluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTNDU4LjUgMCA0MzIgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em03MyAzNTYuMWMtOS40LTkuNC0yNC42LTkuNC0zMy45IDAtMTIuMSAxMi4xLTMwLjUgMTUuNC00NS4xIDguN2wtMTM1LjgtNzAuMiA0OS4yLTczLjhjMTIuNy0xOSAxMC4yLTQ0LjUtNi02MC42TDI5MyAyMTUuN2wtMTA3LTUzLjFjLTIuOSAxOS45IDMuNCA0MCAxNy43IDU0LjRsNzUuMSA3NS4yLTQ1LjkgNjguOEwzNSAyNTguN2MtMTEuNy02LTI2LjItMS41LTMyLjMgMTAuMy02LjEgMTEuOC0xLjUgMjYuMyAxMC4zIDMyLjNsMzkxLjkgMjAyLjVjMTEuOSA1LjUgMjQuNSA4LjEgMzcuMSA4LjEgMjMuMiAwIDQ2LTkgNjMtMjYgOS4zLTkuMyA5LjMtMjQuNSAwLTMzLjh6TTEyMCA5MS42bC0xMS41IDIyLjVjMTQuNCA3LjMgMzEuMiA0LjkgNDIuOC00LjhsNDcuMiAyMy40Yy0uMS4xLS4xLjItLjIuM2wxMTQuNSA1Ni44IDMyLjQtMTMgNi40IDE5LjFjNCAxMi4xIDEyLjYgMjIgMjQgMjcuN2w1OC4xIDI5YzE1LjkgNy45IDM1IDEuNSA0Mi45LTE0LjMgNy45LTE1LjggMS41LTM1LTE0LjMtNDIuOWwtNTIuMS0yNi4xLTE3LjEtNTEuMmMtOC4xLTI0LjItNDAuOS01Ni42LTg0LjUtMzkuMmwtODEuMiAzMi41LTYyLjUtMzFjLjMtMTQuNS03LjItMjguNi0yMC45LTM1LjZsLTExLjEgMjEuN2gtLjJsLTM0LjQtN2MtMS44LS40LTMuNy4yLTUgMS43LTEuOSAyLjItMS43IDUuNS41IDcuNGwyNi4yIDIzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsQ3Jvc3Nib25lcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzkuMTUgNDUzLjA2TDI5Ny4xNyAzODRsMTQxLjk5LTY5LjA2YzcuOS0zLjk1IDExLjExLTEzLjU2IDcuMTUtMjEuNDZMNDMyIDI2NC44NWMtMy45NS03LjktMTMuNTYtMTEuMTEtMjEuNDctNy4xNkwyMjQgMzQ4LjQxIDM3LjQ3IDI1Ny42OWMtNy45LTMuOTUtMTcuNTEtLjc1LTIxLjQ3IDcuMTZMMS42OSAyOTMuNDhjLTMuOTUgNy45LS43NSAxNy41MSA3LjE1IDIxLjQ2TDE1MC44MyAzODQgOC44NSA0NTMuMDZjLTcuOSAzLjk1LTExLjExIDEzLjU2LTcuMTUgMjEuNDdsMTQuMzEgMjguNjNjMy45NSA3LjkgMTMuNTYgMTEuMTEgMjEuNDcgNy4xNUwyMjQgNDE5LjU5bDE4Ni41MyA5MC43MmM3LjkgMy45NSAxNy41MS43NSAyMS40Ny03LjE1bDE0LjMxLTI4LjYzYzMuOTUtNy45MS43NC0xNy41Mi03LjE2LTIxLjQ3ek0xNTAgMjM3LjI4bC01LjQ4IDI1Ljg3Yy0yLjY3IDEyLjYyIDUuNDIgMjQuODUgMTYuNDUgMjQuODVoMTI2LjA4YzExLjAzIDAgMTkuMTItMTIuMjMgMTYuNDUtMjQuODVsLTUuNS0yNS44N2M0MS43OC0yMi40MSA3MC02Mi43NSA3MC0xMDkuMjhDMzY4IDU3LjMxIDMwMy41MyAwIDIyNCAwUzgwIDU3LjMxIDgwIDEyOGMwIDQ2LjUzIDI4LjIyIDg2Ljg3IDcwIDEwOS4yOHpNMjgwIDExMmMxNy42NSAwIDMyIDE0LjM1IDMyIDMycy0xNC4zNSAzMi0zMiAzMi0zMi0xNC4zNS0zMi0zMiAxNC4zNS0zMiAzMi0zMnptLTExMiAwYzE3LjY1IDAgMzIgMTQuMzUgMzIgMzJzLTE0LjM1IDMyLTMyIDMyLTMyLTE0LjM1LTMyLTMyIDE0LjM1LTMyIDMyLTMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNrdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiAwQzExNC42IDAgMCAxMDAuMyAwIDIyNGMwIDcwLjEgMzYuOSAxMzIuNiA5NC41IDE3My43IDkuNiA2LjkgMTUuMiAxOC4xIDEzLjUgMjkuOWwtOS40IDY2LjJjLTEuNCA5LjYgNiAxOC4yIDE1LjcgMTguMkgxOTJ2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNjR2LTU2YzAtNC40IDMuNi04IDgtOGgxNmM0LjQgMCA4IDMuNiA4IDh2NTZoNzcuN2M5LjcgMCAxNy4xLTguNiAxNS43LTE4LjJsLTkuNC02Ni4yYy0xLjctMTEuNyAzLjgtMjMgMTMuNS0yOS45QzQ3NS4xIDM1Ni42IDUxMiAyOTQuMSA1MTIgMjI0IDUxMiAxMDAuMyAzOTcuNCAwIDI1NiAwem0tOTYgMzIwYy0zNS4zIDAtNjQtMjguNy02NC02NHMyOC43LTY0IDY0LTY0IDY0IDI4LjcgNjQgNjQtMjguNyA2NC02NCA2NHptMTkyIDBjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU5NC41MyA1MDguNjNMNi4xOCA1My45Yy02Ljk3LTUuNDItOC4yMy0xNS40Ny0yLjgxLTIyLjQ1TDIzLjAxIDYuMThDMjguNDMtLjggMzguNDktMi4wNiA0NS40NyAzLjM3TDYzMy44MiA0NTguMWM2Ljk3IDUuNDIgOC4yMyAxNS40NyAyLjgxIDIyLjQ1bC0xOS42NCAyNS4yN2MtNS40MiA2Ljk4LTE1LjQ4IDguMjMtMjIuNDYgMi44MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbGVpZ2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEyLjcgMzUwLjdsLTkuMy03LjRjLTYuOS01LjUtMTctNC40LTIyLjUgMi41bC0xMCAxMi41Yy01LjUgNi45LTQuNCAxNyAyLjUgMjIuNWw5LjMgNy40YzUuOSA0LjcgOS4yIDExLjcgOS4yIDE5LjIgMCAxMy42LTExIDI0LjYtMjQuNiAyNC42SDQ4Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDUxNmMzOSAwIDczLjctMjkuMyA3NS45LTY4LjMgMS40LTIzLjgtOC43LTQ2LjMtMjcuMi02MXpNMzIgMjI0YzAgNTkuNiA0MC45IDEwOS4yIDk2IDEyMy41VjQwMGg2NHYtNDhoMTkydjQ4aDY0di00OGM1MyAwIDk2LTQzIDk2LTk2di05NmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmgtOTZ2NjRjMCAzNS4zLTI4LjcgNjQtNjQgNjRoLTIwLjdjLTY1LjggMC0xMjUuOS0zNy4yLTE1NS4zLTk2LTI5LjQtNTguOC04OS42LTk2LTE1NS4zLTk2SDMyQzE0LjMgMzIgMCA0Ni4zIDAgNjRzMTQuMyAzMiAzMiAzMnYxMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU2xpZGVyc0ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2IDM4NEgxNjB2LTE2YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNmg4MHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgzMzZjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bTAtMTYwaC04MHYtMTZjMC04LjgtNy4yLTE2LTE2LTE2aC0zMmMtOC44IDAtMTYgNy4yLTE2IDE2djE2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDMzNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmg4MGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptMC0xNjBIMjg4VjQ4YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnYxNkgxNkM3LjIgNjQgMCA3MS4yIDAgODB2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDIwOHYxNmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2di0xNmgyMDhjOC44IDAgMTYtNy4yIDE2LTE2VjgwYzAtOC44LTcuMi0xNi0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbWlsZUJlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHpNMTEyIDIyMy40YzMuMy00Mi4xIDMyLjItNzEuNCA1Ni03MS40czUyLjcgMjkuMyA1NiA3MS40Yy43IDguNi0xMC44IDExLjktMTQuOSA0LjVsLTkuNS0xN2MtNy43LTEzLjctMTkuMi0yMS42LTMxLjUtMjEuNnMtMjMuOCA3LjktMzEuNSAyMS42bC05LjUgMTdjLTQuMyA3LjQtMTUuOCA0LTE1LjEtNC41em0yNTAuOCAxMjIuOEMzMzQuMyAzODAuNCAyOTIuNSA0MDAgMjQ4IDQwMHMtODYuMy0xOS42LTExNC44LTUzLjhjLTEzLjUtMTYuMyAxMS0zNi43IDI0LjYtMjAuNSAyMi40IDI2LjkgNTUuMiA0Mi4yIDkwLjIgNDIuMnM2Ny44LTE1LjQgOTAuMi00Mi4yYzEzLjYtMTYuMiAzOC4xIDQuMyAyNC42IDIwLjV6bTYuMi0xMTguM2wtOS41LTE3Yy03LjctMTMuNy0xOS4yLTIxLjYtMzEuNS0yMS42cy0yMy44IDcuOS0zMS41IDIxLjZsLTkuNSAxN2MtNC4xIDcuMy0xNS42IDQtMTQuOS00LjUgMy4zLTQyLjEgMzIuMi03MS40IDU2LTcxLjRzNTIuNyAyOS4zIDU2IDcxLjRjLjYgOC42LTExIDExLjktMTUuMSA0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMjU2YzAgMTM3IDExMSAyNDggMjQ4IDI0OHMyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDggMCAxMTkgMCAyNTZ6bTIwMC00OGMwIDE3LjctMTQuMyAzMi0zMiAzMnMtMzItMTQuMy0zMi0zMiAxNC4zLTMyIDMyLTMyIDMyIDE0LjMgMzIgMzJ6bTE1OC41IDE2LjVjLTE0LjgtMTMuMi00Ni4yLTEzLjItNjEgMEwyODggMjMzYy04LjMgNy40LTIxLjYuNC0xOS44LTEwLjggNC0yNS4yIDM0LjItNDIuMSA1OS45LTQyLjFTMzg0IDE5NyAzODggMjIyLjJjMS43IDExLjEtMTEuNCAxOC4zLTE5LjggMTAuOGwtOS43LTguNXpNMTU3LjggMzI1LjhDMTgwLjIgMzUyLjcgMjEzIDM2OCAyNDggMzY4czY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNi0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNUMzMzQuMyAzODAuNCAyOTIuNSA0MDAgMjQ4IDQwMHMtODYuMy0xOS42LTExNC44LTUzLjhjLTEzLjUtMTYuMyAxMS4yLTM2LjcgMjQuNi0yMC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTgwIDE2OGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS0xNjAgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bTE5NC44IDE3MC4yQzMzNC4zIDM4MC40IDI5Mi41IDQwMCAyNDggNDAwcy04Ni4zLTE5LjYtMTE0LjgtNTMuOGMtMTMuNi0xNi4zIDExLTM2LjcgMjQuNi0yMC41IDIyLjQgMjYuOSA1NS4yIDQyLjIgOTAuMiA0Mi4yczY3LjgtMTUuNCA5MC4yLTQyLjJjMTMuNC0xNi4yIDM4LjEgNC4yIDI0LjYgMjAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbW9nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAzNjhIODBjLTguOCAwLTE2IDcuMi0xNiAxNnYxNmMwIDguOCA3LjIgMTYgMTYgMTZoNTQ0YzguOCAwIDE2LTcuMiAxNi0xNnYtMTZjMC04LjgtNy4yLTE2LTE2LTE2em0tNDgwIDk2SDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDEyOGM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnptNDE2IDBIMjI0Yy04LjggMC0xNiA3LjItMTYgMTZ2MTZjMCA4LjggNy4yIDE2IDE2IDE2aDMzNmM4LjggMCAxNi03LjIgMTYtMTZ2LTE2YzAtOC44LTcuMi0xNi0xNi0xNnpNMTQ0IDI4OGgxNTYuMWMyMi41IDE5LjcgNTEuNiAzMiA4My45IDMyczYxLjMtMTIuMyA4My45LTMySDUyOGM2MS45IDAgMTEyLTUwLjEgMTEyLTExMlM1ODkuOSA2NCA1MjggNjRjLTE4IDAtMzQuNyA0LjYtNDkuNyAxMi4xQzQ1NCAzMSA0MDYuOCAwIDM1MiAwYy00MSAwLTc3LjggMTcuMy0xMDQgNDQuOEMyMjEuOCAxNy4zIDE4NSAwIDE0NCAwIDY0LjUgMCAwIDY0LjUgMCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTbW9raW5nQmFuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDMwNGMwIDguOCA3LjIgMTYgMTYgMTZoMTE3LjVsLTk2LTk2SDExMmMtOC44IDAtMTYgNy4yLTE2IDE2djY0ek0yNTYgMEMxMTQuNiAwIDAgMTE0LjYgMCAyNTZzMTE0LjYgMjU2IDI1NiAyNTYgMjU2LTExNC42IDI1Ni0yNTZTMzk3LjQgMCAyNTYgMHptMCA0NDhjLTEwNS45IDAtMTkyLTg2LjEtMTkyLTE5MiAwLTQxLjQgMTMuMy03OS43IDM1LjctMTExLjFsMjY3LjQgMjY3LjRDMzM1LjcgNDM0LjcgMjk3LjQgNDQ4IDI1NiA0NDh6bTQ1LjItMTkySDM4NHYzMmgtNTAuOGwtMzItMzJ6bTExMS4xIDExMS4xTDM2NS4yIDMyMEg0MDBjOC44IDAgMTYtNy4yIDE2LTE2di02NGMwLTguOC03LjItMTYtMTYtMTZIMjY5LjJMMTQ0LjkgOTkuN0MxNzYuMyA3Ny4zIDIxNC42IDY0IDI1NiA2NGMxMDUuOSAwIDE5MiA4Ni4xIDE5MiAxOTIgMCA0MS40LTEzLjMgNzkuNy0zNS43IDExMS4xek0zMjAuNiAxMjhjLTE1LjYgMC0yOC42LTExLjItMzEuNC0yNS45LS43LTMuNi00LTYuMS03LjctNi4xaC0xNi4yYy01IDAtOC43IDQuNS04IDkuNCA0LjYgMzAuOSAzMS4yIDU0LjYgNjMuMyA1NC42IDE1LjYgMCAyOC42IDExLjIgMzEuNCAyNS45LjcgMy42IDQgNi4xIDcuNyA2LjFoMTYuMmM1IDAgOC43LTQuNSA4LTkuNC00LjYtMzAuOS0zMS4yLTU0LjYtNjMuMy01NC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtb2tpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMyIDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04ek01NTMuMyA4Ny4xYy01LjctMy44LTkuMy0xMC05LjMtMTYuOFY4YzAtNC40LTMuNi04LTgtOGgtNDhjLTQuNCAwLTggMy42LTggOHY2Mi4zYzAgMjIgMTAuMiA0My40IDI4LjYgNTUuNCA0Mi4yIDI3LjMgNjcuNCA3My44IDY3LjQgMTI0VjI4MGMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04di0zMC4zYzAtNjUuNS0zMi40LTEyNi4yLTg2LjctMTYyLjZ6TTQzMiAzNTJINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM4NGM4LjggMCAxNi03LjIgMTYtMTZWMzY4YzAtOC44LTcuMi0xNi0xNi0xNnptLTMyIDExMkgyMjR2LTY0aDE3NnY2NHptODcuNy0zMjIuNEM0NjMuOCAxMjUgNDQ4IDk5LjMgNDQ4IDcwLjNWOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2NjYuNGMwIDQzLjcgMjQuNiA4MS42IDYwLjMgMTA2LjcgMjIuNCAxNS43IDM1LjcgNDEuMiAzNS43IDY4LjZWMjgwYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LTh2LTMwLjNjMC00My4zLTIxLTgzLjQtNTYuMy0xMDguMXpNNTM2IDM1MmgtNDhjLTQuNCAwLTggMy42LTggOHYxNDRjMCA0LjQgMy42IDggOCA4aDQ4YzQuNCAwIDgtMy42IDgtOFYzNjBjMC00LjQtMy42LTgtOC04elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNtcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ5LjYgMjEuNCA5NSA1NyAxMzAuN0M0NC41IDQyMS4xIDIuNyA0NjYgMi4yIDQ2Ni41Yy0yLjIgMi4zLTIuOCA1LjctMS41IDguNyAxLjMgMyA0LjEgNC44IDcuMyA0LjggNjYuMyAwIDExNi0zMS44IDE0MC42LTUxLjQgMzIuNyAxMi4zIDY5IDE5LjQgMTA3LjQgMTkuNCAxNDEuNCAwIDI1Ni05My4xIDI1Ni0yMDhTMzk3LjQgMzIgMjU2IDMyek0xMjguMiAzMDRIMTE2Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMi4zYzYgMCAxMC40LTMuNSAxMC40LTYuNiAwLTEuMy0uOC0yLjctMi4xLTMuOGwtMjEuOS0xOC44Yy04LjUtNy4yLTEzLjMtMTcuNS0xMy4zLTI4LjEgMC0yMS4zIDE5LTM4LjYgNDIuNC0zOC42SDE1NmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4aC0xMi4zYy02IDAtMTAuNCAzLjUtMTAuNCA2LjYgMCAxLjMuOCAyLjcgMi4xIDMuOGwyMS45IDE4LjhjOC41IDcuMiAxMy4zIDE3LjUgMTMuMyAyOC4xLjEgMjEuMy0xOSAzOC42LTQyLjQgMzguNnptMTkxLjgtOGMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LTh2LTY4LjJsLTI0LjggNTUuOGMtMi45IDUuOS0xMS40IDUuOS0xNC4zIDBMMjI0IDIyNy44VjI5NmMwIDQuNC0zLjYgOC04IDhoLTE2Yy00LjQgMC04LTMuNi04LThWMTkyYzAtOC44IDcuMi0xNiAxNi0xNmgxNmM2LjEgMCAxMS42IDMuNCAxNC4zIDguOGwxNy43IDM1LjQgMTcuNy0zNS40YzIuNy01LjQgOC4zLTguOCAxNC4zLTguOGgxNmM4LjggMCAxNiA3LjIgMTYgMTZ2MTA0em00OC4zIDhIMzU2Yy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMi4zYzYgMCAxMC40LTMuNSAxMC40LTYuNiAwLTEuMy0uOC0yLjctMi4xLTMuOGwtMjEuOS0xOC44Yy04LjUtNy4yLTEzLjMtMTcuNS0xMy4zLTI4LjEgMC0yMS4zIDE5LTM4LjYgNDIuNC0zOC42SDM5NmM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4aC0xMi4zYy02IDAtMTAuNCAzLjUtMTAuNCA2LjYgMCAxLjMuOCAyLjcgMi4xIDMuOGwyMS45IDE4LjhjOC41IDcuMiAxMy4zIDE3LjUgMTMuMyAyOC4xLjEgMjEuMy0xOC45IDM4LjYtNDIuMyAzOC42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dib2FyZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgOTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhTNDU4LjUgMCA0MzIgMHMtNDggMjEuNS00OCA0OCAyMS41IDQ4IDQ4IDQ4em0yOC44IDE1My42YzUuOCA0LjMgMTIuNSA2LjQgMTkuMiA2LjQgOS43IDAgMTkuMy00LjQgMjUuNi0xMi44IDEwLjYtMTQuMSA3LjgtMzQuMi02LjQtNDQuOGwtMTExLjQtODMuNWMtMTMuOC0xMC4zLTI5LjEtMTguNC00NS40LTIzLjhsLTYzLjctMjEuMi0yNi4xLTUyLjFDMjQ0LjcgMiAyMjUuNS00LjQgMjA5LjcgMy41Yy0xNS44IDcuOS0yMi4yIDI3LjEtMTQuMyA0Mi45bDI5LjEgNTguMWM1LjcgMTEuNCAxNS42IDE5LjkgMjcuNyAyNGwxNi40IDUuNS00MS4yIDIwLjZjLTIxLjggMTAuOS0zNS40IDMyLjgtMzUuNCA1Ny4ydjUzLjFsLTc0LjEgMjQuN2MtMTYuOCA1LjYtMjUuOCAyMy43LTIwLjIgNDAuNSAxLjcgNS4yIDQuOSA5LjQgOC43IDEyLjlsLTM4LjctMTQuMWMtOS43LTMuNS0xNy40LTEwLjYtMjEuOC0yMC01LjYtMTItMTkuOS0xNy4yLTMxLjktMTEuNnMtMTcuMiAxOS45LTExLjYgMzEuOWM5LjggMjEgMjcuMSAzNi45IDQ4LjkgNDQuOGwzNjQuOCAxMzIuN2M5LjcgMy41IDE5LjcgNS4zIDI5LjcgNS4zIDEyLjUgMCAyNC45LTIuNyAzNi41LTguMiAxMi01LjYgMTcuMi0xOS45IDExLjYtMzEuOVM0NzQgNDU0LjcgNDYyIDQ2MC4zYy05LjMgNC40LTE5LjggNC44LTI5LjUgMS4zbC05MC44LTMzLjFjOC43LTQuMSAxNS42LTExLjggMTcuOC0yMS45bDIxLjktMTAyYzMuOS0xOC4yLTMuMi0zNy4yLTE4LjEtNDguNGwtNTItMzkgNjYtMzAuNSA4My41IDYyLjl6bS0xNDQuNCA1MS43bC0xOS43IDkyYy0xLjUgNy4xLS4xIDEzLjkgMi44IDIwbC0xNjkuNC02MS42YzIuNy0uMiA1LjQtLjQgOC0xLjNsODUtMjguNGMxOS42LTYuNSAzMi44LTI0LjggMzIuOC00NS41VjI1Nmw2MC41IDQ1LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd2ZsYWtlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MC4zIDM0NS4ybC0zMy44LTE5LjUgMjYtN2M4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTQtMTQuOWMtMi4yLTguMi0xMC43LTEzLjEtMTguOS0xMC45bC03MC44IDE5LTYzLjktMzcgNjMuOC0zNi45IDcwLjggMTljOC4yIDIuMiAxNi43LTIuNyAxOC45LTEwLjlsNC0xNC45YzIuMi04LjItMi43LTE2LjctMTAuOS0xOC45bC0yNi03IDMzLjgtMTkuNWM3LjQtNC4zIDkuOS0xMy43IDUuNy0yMS4xTDQzMC40IDExOWMtNC4zLTcuNC0xMy43LTkuOS0yMS4xLTUuN2wtMzMuOCAxOS41IDctMjZjMi4yLTguMi0yLjctMTYuNy0xMC45LTE4LjlsLTE0LjktNGMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTE5IDcwLjgtNjIuOCAzNi4ydi03Ny41bDUzLjctNTMuN2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNmwtMTEuMy0xMS4zYy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwyNTYgNTYuNFYxNmMwLTguOC03LjItMTYtMTYtMTZoLTMyYy04LjggMC0xNiA3LjItMTYgMTZ2NDAuNGwtMTkuNy0xOS43Yy02LjItNi4yLTE2LjQtNi4yLTIyLjYgMEwxMzguMyA0OGMtNi4zIDYuMi02LjMgMTYuNCAwIDIyLjZsNTMuNyA1My43djc3LjVsLTYyLjgtMzYuMi0xOS03MC44Yy0yLjItOC4yLTEwLjctMTMuMS0xOC45LTEwLjlsLTE0LjkgNGMtOC4yIDIuMi0xMy4xIDEwLjctMTAuOSAxOC45bDcgMjYtMzMuOC0xOS41Yy03LjQtNC4zLTE2LjgtMS43LTIxLjEgNS43TDIuMSAxNDUuN2MtNC4zIDcuNC0xLjcgMTYuOCA1LjcgMjEuMWwzMy44IDE5LjUtMjYgN2MtOC4zIDIuMi0xMy4yIDEwLjctMTEgMTlsNCAxNC45YzIuMiA4LjIgMTAuNyAxMy4xIDE4LjkgMTAuOWw3MC44LTE5IDYzLjggMzYuOS02My44IDM2LjktNzAuOC0xOWMtOC4yLTIuMi0xNi43IDIuNy0xOC45IDEwLjlsLTQgMTQuOWMtMi4yIDguMiAyLjcgMTYuNyAxMC45IDE4LjlsMjYgNy0zMy44IDE5LjZjLTcuNCA0LjMtOS45IDEzLjctNS43IDIxLjFsMTUuNSAyNi44YzQuMyA3LjQgMTMuNyA5LjkgMjEuMSA1LjdsMzMuOC0xOS41LTcgMjZjLTIuMiA4LjIgMi43IDE2LjcgMTAuOSAxOC45bDE0LjkgNGM4LjIgMi4yIDE2LjctMi43IDE4LjktMTAuOWwxOS03MC44IDYyLjgtMzYuMnY3Ny41bC01My43IDUzLjdjLTYuMyA2LjItNi4zIDE2LjQgMCAyMi42bDExLjMgMTEuM2M2LjIgNi4yIDE2LjQgNi4yIDIyLjYgMGwxOS43LTE5LjdWNDk2YzAgOC44IDcuMiAxNiAxNiAxNmgzMmM4LjggMCAxNi03LjIgMTYtMTZ2LTQwLjRsMTkuNyAxOS43YzYuMiA2LjIgMTYuNCA2LjIgMjIuNiAwbDExLjMtMTEuM2M2LjItNi4yIDYuMi0xNi40IDAtMjIuNkwyNTYgMzg3Ljd2LTc3LjVsNjIuOCAzNi4yIDE5IDcwLjhjMi4yIDguMiAxMC43IDEzLjEgMTguOSAxMC45bDE0LjktNGM4LjItMi4yIDEzLjEtMTAuNyAxMC45LTE4LjlsLTctMjYgMzMuOCAxOS41YzcuNCA0LjMgMTYuOCAxLjcgMjEuMS01LjdsMTUuNS0yNi44YzQuMy03LjMgMS44LTE2LjgtNS42LTIxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNub3dtYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEwLjkgMTUyLjNsLTUuOS0xNC41Yy0zLjMtOC0xMi42LTExLjktMjAuOC04LjdMNDU2IDE0MC42di0yOWMwLTguNi03LjItMTUuNi0xNi0xNS42aC0xNmMtOC44IDAtMTYgNy0xNiAxNS42djQ2LjljMCAuNS4zIDEgLjMgMS41bC01Ni40IDIzYy01LjktMTAtMTMuMy0xOC45LTIyLTI2LjYgMTMuNi0xNi42IDIyLTM3LjQgMjItNjAuNSAwLTUzLTQzLTk2LTk2LTk2cy05NiA0My05NiA5NmMwIDIzLjEgOC41IDQzLjkgMjIgNjAuNS04LjcgNy43LTE2IDE2LjYtMjIgMjYuNmwtNTYuNC0yM2MuMS0uNS4zLTEgLjMtMS41di00Ni45QzEwNCAxMDMgOTYuOCA5NiA4OCA5Nkg3MmMtOC44IDAtMTYgNy0xNiAxNS42djI5bC0yOC4xLTExLjVjLTguMi0zLjItMTcuNS43LTIwLjggOC43bC01LjkgMTQuNWMtMy4zIDggLjcgMTcuMSA4LjkgMjAuM2wxMzUuMiA1NS4yYy0uNCA0LTEuMiA4LTEuMiAxMi4yIDAgMTAuMSAxLjcgMTkuNiA0LjIgMjguOUMxMjAuOSAyOTYuNCAxMDQgMzM0LjIgMTA0IDM3NmMwIDU0IDI4LjQgMTAwLjkgNzAuOCAxMjcuOCA5LjMgNS45IDIwLjMgOC4yIDMxLjMgOC4yaDk5LjJjMTMuMyAwIDI2LjMtNC4xIDM3LjItMTEuNyA0Ni41LTMyLjMgNzQuNC04OS40IDYyLjktMTUyLjYtNS41LTMwLjItMjAuNS01Ny42LTQxLjYtNzkgMi41LTkuMiA0LjItMTguNyA0LjItMjguNyAwLTQuMi0uOC04LjEtMS4yLTEyLjJMNTAyIDE3Mi42YzguMS0zLjEgMTIuMS0xMi4yIDguOS0yMC4zek0yMjQgOTZjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMzIgMjcyYy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6bTAtNjRjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnptMC02NGMtOC44IDAtMTYtNy4yLTE2LTE2czcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtNy4yIDE2LTE2IDE2em0wLTg4cy0xNi0yMy4yLTE2LTMyIDcuMi0xNiAxNi0xNiAxNiA3LjIgMTYgMTYtMTYgMzItMTYgMzJ6bTMyLTU2Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNi03LjIgMTYtMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU25vd3Bsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIwIDM3NmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTgwIDBjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em04MCAwYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHMxMC43IDI0IDI0IDI0IDI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNHptODAgMGMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTIzOC42IDQ5LjRjLTE0LjUtMTQuNS0yMi42LTM0LjEtMjIuNi01NC42VjI2OS4yYzAtMjAuNSA4LjEtNDAuMSAyMi42LTU0LjZsMzYuNy0zNi43YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0yMi42LTIyLjZjLTYuMi02LjItMTYuNC02LjItMjIuNiAwbC0zNi43IDM2LjdjLTI2LjUgMjYuNS00MS40IDYyLjQtNDEuNCA5OS45VjI4OGgtNjR2LTUwLjljMC04LjctMS44LTE3LjItNS4yLTI1LjJMMzY0LjUgMjkuMUMzNTYuOSAxMS40IDMzOS42IDAgMzIwLjMgMEgxNzZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djExMmgtMTZjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djkxLjJDMjYuMyAzMTcuMiAwIDM1NS40IDAgNDAwYzAgNjEuOSA1MC4xIDExMiAxMTIgMTEyaDI1NmM2MS45IDAgMTEyLTUwLjEgMTEyLTExMiAwLTE3LjMtNC4yLTMzLjQtMTEuMi00OEg1MTJ2MTguN2MwIDM3LjUgMTQuOSA3My40IDQxLjQgOTkuOWwzNi43IDM2LjdjNi4yIDYuMiAxNi40IDYuMiAyMi42IDBsMjIuNi0yMi42YzYuMi02LjIgNi4yLTE2LjQgMC0yMi42bC0zNi43LTM2Ljd6TTE5MiA2NGgxMTcuOGw2OC42IDE2MEgyNTZsLTY0LTY0VjY0em0xNzYgMzg0SDExMmMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OGgyNTZjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MTYsMTkyYTk1LjQyLDk1LjQyLDAsMCwxLTMwLjk0LDcwLjIxQTk1LjgsOTUuOCwwLDAsMSwzNTIsNDQ4SDE2MGE5Niw5NiwwLDAsMSwwLTE5Mmg4OC45MUE5NS4zLDk1LjMsMCwwLDEsMjI0LDE5Mkg5NkE5Niw5NiwwLDAsMCwwLDI4OFY0MTZhOTYsOTYsMCwwLDAsOTYsOTZINDE2YTk2LDk2LDAsMCwwLDk2LTk2VjI4OEE5Niw5NiwwLDAsMCw0MTYsMTkyWm0tOTYsNjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQsNjQsMCwwLDAsMzIwLDI1NlpNMjA4LDk2YTQ4LDQ4LDAsMSwwLTQ4LTQ4QTQ4LDQ4LDAsMCwwLDIwOCw5NlpNMzg0LDY0YTMyLDMyLDAsMSwwLTMyLTMyQTMyLDMyLDAsMCwwLDM4NCw2NFpNMTYwLDI4OGE2NCw2NCwwLDAsMCwwLDEyOEgzNTJhNjQsNjQsMCwwLDAsMC0xMjhaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ja3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE0LjY2IDMxMS4wMUwyODggMjU2Vjk2SDEyOHYxNzZsLTg2LjY1IDY0LjYxYy0zOS40IDI5LjU2LTUzLjg2IDg0LjQyLTI5LjIxIDEyNy4wNkMzMC4zOSA0OTUuMjUgNjMuMjcgNTEyIDk2LjA4IDUxMmMyMC4wMyAwIDQwLjI1LTYuMjUgNTcuNTItMTkuMmwyMS44Ni0xNi4zOWMtMjkuODUtNTUuMzgtMTMuNTQtMTI1Ljg0IDM5LjItMTY1LjR6TTI4OCAzMmMwLTExLjA1IDMuMDctMjEuMyA4LjAyLTMwLjM4QzI5My40LjkyIDI5MC44NSAwIDI4OCAwSDE2MGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgxNjBWMzJ6TTQ4MCAwSDM1MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgxOTJWMzJjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMnpNMzIwIDI3MmwtODYuMTMgNjQuNjFjLTM5LjQgMjkuNTYtNTMuODYgODQuNDItMjkuMjEgMTI3LjA2IDE4LjI1IDMxLjU4IDUwLjYxIDQ4LjMzIDgzLjQyIDQ4LjMzIDIwLjAzIDAgNDAuMjUtNi4yNSA1Ny41Mi0xOS4ybDExNS4yLTg2LjRBMTI3Ljk5NyAxMjcuOTk3IDAgMCAwIDUxMiAzMDRWOTZIMzIwdjE3NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb2xhclBhbmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMS45OCA0NDguMDFsLTQ3Ljk3LjA1VjQxNmgtMTI4djMyLjIxbC00Ny45OC4wNWMtOC44Mi4wMS0xNS45NyA3LjE2LTE1Ljk4IDE1Ljk5bC0uMDUgMzEuNzNjLS4wMSA4Ljg1IDcuMTcgMTYuMDMgMTYuMDIgMTYuMDJsMjIzLjk2LS4yNmM4LjgyLS4wMSAxNS45Ny03LjE2IDE1Ljk4LTE1Ljk4bC4wNC0zMS43M2MuMDEtOC44NS03LjE3LTE2LjAzLTE2LjAyLTE2LjAyek01ODUuMiAyNi43NEM1ODIuNTggMTEuMzEgNTY4Ljk5IDAgNTUzLjA2IDBIODYuOTNDNzEgMCA1Ny40MSAxMS4zMSA1NC43OSAyNi43NC0zLjMyIDM2OS4xNi4wNCAzNDguMDguMDMgMzUyYy0uMDMgMTcuMzIgMTQuMjkgMzIgMzIuNiAzMmg1NzQuNzRjMTguMjMgMCAzMi41MS0xNC41NiAzMi41OS0zMS43OS4wMi00LjA4IDMuMzUgMTYuOTUtNTQuNzYtMzI1LjQ3ek0yNTkuODMgNjRoMTIwLjMzbDkuNzcgOTZIMjUwLjA2bDkuNzctOTZ6bS03NS4xNyAyNTZINzEuMDlMOTAuMSAyMDhoMTA1Ljk3bC0xMS40MSAxMTJ6bTE2LjI5LTE2MEg5OC4yNGwxNi4yOS05Nmg5Ni4xOWwtOS43NyA5NnptMzIuODIgMTYwbDExLjQtMTEyaDE0OS42NWwxMS40IDExMkgyMzMuNzd6bTE5NS41LTI1Nmg5Ni4xOWwxNi4yOSA5Nkg0MzkuMDRsLTkuNzctOTZ6bTI2LjA2IDI1NmwtMTEuNC0xMTJINTQ5LjlsMTkuMDEgMTEySDQ1NS4zM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0QWxwaGFEb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiAzNTJoLTQ4VjQ4YTE2IDE2IDAgMCAwLTE2LTE2SDgwYTE2IDE2IDAgMCAwLTE2IDE2djMwNEgxNmMtMTQuMTkgMC0yMS4zNiAxNy4yNC0xMS4yOSAyNy4zMWw4MCA5NmExNiAxNiAwIDAgMCAyMi42MiAwbDgwLTk2QzE5Ny4zNSAzNjkuMjYgMTkwLjIyIDM1MiAxNzYgMzUyem0xMTItMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1MmgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM2IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6bTI0MC02NEgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiA0NDYuMzdWNDY0YTE2IDE2IDAgMCAwIDE2IDE2aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiAzMjEuNjNWMzA0YTE2IDE2IDAgMCAwLTE2LTE2em0zMS4wNi04NS4zOGwtNTkuMjctMTYwQTE2IDE2IDAgMCAwIDM3Mi43MiAzMmgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgMjI0aDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgMjI0SDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDE0NEwzNTIgOTZsMTYuMzkgNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFscGhhVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMWwtODAtOTZhMTYgMTYgMCAwIDAtMjIuNjIgMGwtODAgOTZDLTUuMzUgMTQyLjc0IDEuNzggMTYwIDE2IDE2MHptMjcyIDY0aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZoLTU2bDYxLjI2LTcwLjQ1QTMyIDMyIDAgMCAwIDQzMiA2NS42M1Y0OGExNiAxNiAwIDAgMC0xNi0xNkgyODhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNTZsLTYxLjI2IDcwLjQ1QTMyIDMyIDAgMCAwIDI3MiAxOTAuMzdWMjA4YTE2IDE2IDAgMCAwIDE2IDE2em0xNTkuMDYgMjM0LjYybC01OS4yNy0xNjBBMTYgMTYgMCAwIDAgMzcyLjcyIDI4OGgtNDEuNDRhMTYgMTYgMCAwIDAtMTUuMDcgMTAuNjJsLTU5LjI3IDE2MEExNiAxNiAwIDAgMCAyNzIgNDgwaDI0LjgzYTE2IDE2IDAgMCAwIDE1LjIzLTExLjA4bDQuNDItMTIuOTJoNzFsNC40MSAxMi45MkExNiAxNiAwIDAgMCA0MDcuMTYgNDgwSDQzMmExNiAxNiAwIDAgMCAxNS4wNi0yMS4zOHpNMzM1LjYxIDQwMEwzNTIgMzUybDE2LjM5IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbHBoYVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjB6bTQwMCAxMjhIMjg4YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDU2bC02MS4yNiA3MC40NUEzMiAzMiAwIDAgMCAyNzIgNDQ2LjM3VjQ2NGExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC01Nmw2MS4yNi03MC40NUEzMiAzMiAwIDAgMCA0MzIgMzIxLjYzVjMwNGExNiAxNiAwIDAgMC0xNi0xNnptMzEuMDYtODUuMzhsLTU5LjI3LTE2MEExNiAxNiAwIDAgMCAzNzIuNzIgMzJoLTQxLjQ0YTE2IDE2IDAgMCAwLTE1LjA3IDEwLjYybC01OS4yNyAxNjBBMTYgMTYgMCAwIDAgMjcyIDIyNGgyNC44M2ExNiAxNiAwIDAgMCAxNS4yMy0xMS4wOGw0LjQyLTEyLjkyaDcxbDQuNDEgMTIuOTJBMTYgMTYgMCAwIDAgNDA3LjE2IDIyNEg0MzJhMTYgMTYgMCAwIDAgMTUuMDYtMjEuMzh6TTMzNS42MSAxNDRMMzUyIDk2bDE2LjM5IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbW91bnREb3duQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0tNjQgMGgtNDhWNDhhMTYgMTYgMCAwIDAtMTYtMTZIODBhMTYgMTYgMCAwIDAtMTYgMTZ2MzA0SDE2Yy0xNC4xOSAwLTIxLjM3IDE3LjI0LTExLjI5IDI3LjMxbDgwIDk2YTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtOTZDMTk3LjM1IDM2OS4yNiAxOTAuMjIgMzUyIDE3NiAzNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFtb3VudERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDQxNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNjRhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMTI4LTY0aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzcgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjU2LTE5MkgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTkyYTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnptLTY0IDEyOEgyNDBhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMTI4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNNDk2IDMySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydEFtb3VudFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCA5Nmg2NGExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNjRhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTAgMTI4aDEyOGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2em0yNTYgMTkySDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyNTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tMjU2LTY0aDE5MmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2ek0xNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM5LTE3LjI0IDExLjMxLTI3LjMxbC04MC05NmExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRBbW91bnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDE2aC02NGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg2NGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTE2IDE2MGg0OHYzMDRhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTYwaDQ4YzE0LjIxIDAgMjEuMzgtMTcuMjQgMTEuMzEtMjcuMzFsLTgwLTk2YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc3IDE2MCAxNiAxNjB6bTQxNiAwSDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxOTJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0tNjQgMTI4SDI0MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek00OTYgMzJIMjQwYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDI1NmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MSAyODhoMjM4YzIxLjQgMCAzMi4xIDI1LjkgMTcgNDFMMTc3IDQ0OGMtOS40IDkuNC0yNC42IDkuNC0zMy45IDBMMjQgMzI5Yy0xNS4xLTE1LjEtNC40LTQxIDE3LTQxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNzYgMzUyaC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnptMjI0IDY0aC0xNlYzMDRhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCAzNTJoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzMwLjE3IDM0LjkxYTc5IDc5IDAgMCAwLTU1IDU0LjE3Yy0xNC4yNyA1MS4wNSAyMS4xOSA5Ny43NyA2OC44MyAxMDIuNTNhODQuMDcgODQuMDcgMCAwIDEtMjAuODUgMTIuOTFjLTcuNTcgMy40LTEwLjggMTIuNDctOC4xOCAyMC4zNGw5LjkgMjBjMi44NyA4LjYzIDEyLjUzIDEzLjQ5IDIwLjkgOS45MSA1OC0yNC43NyA4Ni4yNS02MS42MSA4Ni4yNS0xMzJWMTEyYy0uMDItNTEuMjEtNDguNC05MS4zNC0xMDEuODUtNzcuMDl6TTM1MiAxMzJhMjAgMjAgMCAxIDEgMjAtMjAgMjAgMjAgMCAwIDEtMjAgMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU29ydE51bWVyaWNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCA5NmgxNnY2NGgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgMzA0IDk2em0yNi4xNSAxNjIuOTFhNzkgNzkgMCAwIDAtNTUgNTQuMTdjLTE0LjI1IDUxLjA1IDIxLjIxIDk3Ljc3IDY4Ljg1IDEwMi41M2E4NC4wNyA4NC4wNyAwIDAgMS0yMC44NSAxMi45MWMtNy41NyAzLjQtMTAuOCAxMi40Ny04LjE4IDIwLjM0bDkuOSAyMGMyLjg3IDguNjMgMTIuNTMgMTMuNDkgMjAuOSA5LjkxIDU4LTI0Ljc2IDg2LjI1LTYxLjYxIDg2LjI1LTEzMlYzMzZjLS4wMi01MS4yMS00OC40LTkxLjM0LTEwMS44NS03Ny4wOXpNMzUyIDM1NmEyMCAyMCAwIDEgMSAyMC0yMCAyMCAyMCAwIDAgMS0yMCAyMHptLTE3Ni00aC00OFY0OGExNiAxNiAwIDAgMC0xNi0xNkg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMDRIMTZjLTE0LjE5IDAtMjEuMzYgMTcuMjQtMTEuMjkgMjcuMzFsODAgOTZhMTYgMTYgMCAwIDAgMjIuNjIgMGw4MC05NkMxOTcuMzUgMzY5LjI2IDE5MC4yMiAzNTIgMTc2IDM1MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0TnVtZXJpY1VwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwNy4zMSAzNi42OWExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA5NkMtNS4zNSAxNDIuNzQgMS43OCAxNjAgMTYgMTYwaDQ4djMwNGExNiAxNiAwIDAgMCAxNiAxNmgzMmExNiAxNiAwIDAgMCAxNi0xNlYxNjBoNDhjMTQuMjEgMCAyMS4zOC0xNy4yNCAxMS4zMS0yNy4zMXpNNDAwIDQxNmgtMTZWMzA0YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCAzMDQgMzUyaDE2djY0aC0xNmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmg5NmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6TTMzMC4xNyAzNC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzcgODYuMjUtNjEuNjEgODYuMjUtMTMyVjExMmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMTMyYTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnROdW1lcmljVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzMwLjE3IDI1OC45MWE3OSA3OSAwIDAgMC01NSA1NC4xN2MtMTQuMjcgNTEuMDUgMjEuMTkgOTcuNzcgNjguODMgMTAyLjUzYTg0LjA3IDg0LjA3IDAgMCAxLTIwLjg1IDEyLjkxYy03LjU3IDMuNC0xMC44IDEyLjQ3LTguMTggMjAuMzRsOS45IDIwYzIuODcgOC42MyAxMi41MyAxMy40OSAyMC45IDkuOTEgNTgtMjQuNzYgODYuMjUtNjEuNjEgODYuMjUtMTMyVjMzNmMtLjAyLTUxLjIxLTQ4LjQtOTEuMzQtMTAxLjg1LTc3LjA5ek0zNTIgMzU2YTIwIDIwIDAgMSAxIDIwLTIwIDIwIDIwIDAgMCAxLTIwIDIwek0zMDQgOTZoMTZ2NjRoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNmgtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZoLTQ4YTE2IDE2IDAgMCAwLTE0LjI5IDguODNsLTE2IDMyQTE2IDE2IDAgMCAwIDMwNCA5NnpNMTA3LjMxIDM2LjY5YTE2IDE2IDAgMCAwLTIyLjYyIDBsLTgwIDk2Qy01LjM1IDE0Mi43NCAxLjc4IDE2MCAxNiAxNjBoNDh2MzA0YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2MGg0OGMxNC4yMSAwIDIxLjM4LTE3LjI0IDExLjMxLTI3LjMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNvcnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzIwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzkgMjI0SDQxYy0yMS40IDAtMzIuMS0yNS45LTE3LTQxTDE0MyA2NGM5LjQtOS40IDI0LjYtOS40IDMzLjkgMGwxMTkgMTE5YzE1LjIgMTUuMSA0LjUgNDEtMTYuOSA0MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTb3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxIDI4OGgyMzhjMjEuNCAwIDMyLjEgMjUuOSAxNyA0MUwxNzcgNDQ4Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMEwyNCAzMjljLTE1LjEtMTUuMS00LjQtNDEgMTctNDF6bTI1NS0xMDVMMTc3IDY0Yy05LjQtOS40LTI0LjYtOS40LTMzLjkgMEwyNCAxODNjLTE1LjEgMTUuMS00LjQgNDEgMTcgNDFoMjM4YzIxLjQgMCAzMi4xLTI1LjkgMTctNDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2OC4yNSAxOTJjLTI5LjA0LjEzLTEzNS4wMSA2LjE2LTIxMy44NCA4My0zMy4xMiAyOS42My01My4zNiA2My4zLTY2LjQxIDk0Ljg2LTEzLjA1LTMxLjU2LTMzLjI5LTY1LjIzLTY2LjQxLTk0Ljg2LTc4LjgzLTc2Ljg0LTE4NC44LTgyLjg3LTIxMy44NC04My00LjQxLS4wMi03Ljc5IDMuNC03Ljc1IDcuODIuMjMgMjcuOTIgNy4xNCAxMjYuMTQgODguNzcgMTk5LjNDMTcyLjc5IDQ4MC45NCAyNTYgNDgwIDI4OCA0ODBzMTE1LjE5Ljk1IDE5OS4yMy04MC44OGM4MS42NC03My4xNyA4OC41NC0xNzEuMzggODguNzctMTk5LjMuMDQtNC40Mi0zLjM0LTcuODQtNy43NS03Ljgyek0yODcuOTggMzAyLjZjMTIuODItMTguODUgMjcuNi0zNS43OCA0NC4wOS01MC41MiAxOS4wOS0xOC42MSAzOS41OC0zMy4zIDYwLjI2LTQ1LjE4LTE2LjQ0LTcwLjUtNTEuNzItMTMzLjA1LTk2LjczLTE3Mi4yMi00LjExLTMuNTgtMTEuMDItMy41OC0xNS4xNCAwLTQ0Ljk5IDM5LjE0LTgwLjI3IDEwMS42My05Ni43NCAxNzIuMDcgMjAuMzcgMTEuNyA0MC41IDI2LjE0IDU5LjIyIDQ0LjM5YTI4Mi43NjggMjgyLjc2OCAwIDAgMSA0NS4wNCA1MS40NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcGFjZVNodXR0bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTkyLjYwNCAyMDguMjQ0QzU1OS43MzUgMTkyLjgzNiA1MTUuNzc3IDE4NCA0NzIgMTg0SDE4Ni4zMjdjLTQuOTUyLTYuNTU1LTEwLjU4NS0xMS45NzgtMTYuNzItMTZIMzc2QzIyOS4xNTcgMTM3Ljc0NyAyMTkuNDAzIDMyIDk2LjAwMyAzMkg5NnYxMjhIODBWMzJjLTI2LjUxIDAtNDggMjguNjU0LTQ4IDY0djY0Yy0yMy4xOTcgMC0zMiAxMC4wMzItMzIgMjR2NDBjMCAxMy45ODMgOC44MTkgMjQgMzIgMjR2MTZjLTIzLjE5NyAwLTMyIDEwLjAzMi0zMiAyNHY0MGMwIDEzLjk4MyA4LjgxOSAyNCAzMiAyNHY2NGMwIDM1LjM0NiAyMS40OSA2NCA0OCA2NFYzNTJoMTZ2MTI4aC4wMDNjMTIzLjQgMCAxMzMuMTU0LTEwNS43NDcgMjc5Ljk5Ny0xMzZIMTY5LjYwNmM2LjEzNS00LjAyMiAxMS43NjgtOS40NDUgMTYuNzItMTZINDcyYzQzLjc3NyAwIDg3LjczNS04LjgzNiAxMjAuNjA0LTI0LjI0NEM2MjIuMjgyIDI4OS44NDUgNjQwIDI3MS45OTIgNjQwIDI1NnMtMTcuNzE4LTMzLjg0NS00Ny4zOTYtNDcuNzU2ek00ODggMjk2YTggOCAwIDAgMS04LTh2LTY0YTggOCAwIDAgMSA4LThjMzEuOTA5IDAgMzEuOTQyIDgwIDAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BlbGxDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzIgMjU2aDkxLjM2YzQzLjIgMCA4Mi0zMi4yIDg0LjUxLTc1LjM0YTc5LjgyIDc5LjgyIDAgMCAwLTI1LjI2LTYzLjA3IDc5LjgxIDc5LjgxIDAgMCAwIDkuMDYtNDQuOTFDNDI3LjkgMzAuNTcgMzg5LjMgMCAzNDcgMGgtNzVhMTYgMTYgMCAwIDAtMTYgMTZ2MjI0YTE2IDE2IDAgMCAwIDE2IDE2em00MC0yMDBoNDBhMjQgMjQgMCAwIDEgMCA0OGgtNDB6bTAgOTZoNTZhMjQgMjQgMCAwIDEgMCA0OGgtNTZ6TTE1NS4xMiAyMi4yNUEzMiAzMiAwIDAgMCAxMjQuNjQgMEg5OS4zNmEzMiAzMiAwIDAgMC0zMC40OCAyMi4yNUwuNTkgMjM1LjczQTE2IDE2IDAgMCAwIDE2IDI1NmgyNC45M2ExNiAxNiAwIDAgMCAxNS40Mi0xMS43M0w2OC4yOSAyMDhoODcuNDJsMTEuOTQgMzYuMjdBMTYgMTYgMCAwIDAgMTgzLjA3IDI1NkgyMDhhMTYgMTYgMCAwIDAgMTUuNDItMjAuMjd6TTg5LjM3IDE0NEwxMTIgNzUuM2wyMi42MyA2OC43em00ODIgMTMyLjQ4bC00NS4yMS00NS4zYTE1Ljg4IDE1Ljg4IDAgMCAwLTIyLjU5IDBsLTE1MS41IDE1MS41LTU1LjQxLTU1LjVhMTUuODggMTUuODggMCAwIDAtMjIuNTkgMGwtNDUuMyA0NS4zYTE2IDE2IDAgMCAwIDAgMjIuNTlsMTEyIDExMi4yMWExNS44OSAxNS44OSAwIDAgMCAyMi42IDBsMjA4LTIwOC4yMWExNiAxNiAwIDAgMC0uMDItMjIuNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3BpZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1MS4xNyAxNjcuMzVMMTc3LjEgMTc2aDQuNjdsNS4yMi0yNi4xMmMuNzItMy41OCAxLjgtNy41OCAzLjIxLTExLjc5bC0yMC4yOS00MC41OCAyMy44LTcxLjM5YzIuNzktOC4zOC0xLjczLTE3LjQ0LTEwLjEyLTIwLjI0TDE2OC40Mi44MmMtOC4zOC0yLjgtMTcuNDUgMS43My0yMC4yNCAxMC4xMmwtMjUuODkgNzcuNjhhMzIuMDQgMzIuMDQgMCAwIDAgMS43MyAyNC40M2wyNy4xNSA1NC4zem00MjIuMTQgMTgyLjAzbC01Mi43NS03OS4xMmEzMi4wMDIgMzIuMDAyIDAgMCAwLTI2LjYyLTE0LjI1SDQxNmw2OC45OS0yNC4zNmEzMi4wMyAzMi4wMyAwIDAgMCAxNi41MS0xMi42MWw1My42LTgwLjQxYzQuOS03LjM1IDIuOTEtMTcuMjktNC40NC0yMi4xOWwtMTMuMzEtOC44OGMtNy4zNS00LjktMTcuMjktMi45MS0yMi4xOSA0LjQ0bC01MC41NiA3NS44M0w0MDQuMSAyMDhIMzY4bC0xMC4zNy01MS44NUMzNTUuNDQgMTQ1LjE4IDM0MC4yNiA5NiAyODggOTZjLTUyLjI2IDAtNjcuNDQgNDkuMTgtNjkuNjMgNjAuMTVMMjA4IDIwOGgtMzYuMWwtNjAuNDktMjAuMTdMNjAuODQgMTEyYy00LjktNy4zNS0xNC44My05LjM0LTIyLjE5LTQuNDRsLTEzLjMxIDguODhjLTcuMzUgNC45LTkuMzQgMTQuODMtNC40NCAyMi4xOWw1My42IDgwLjQxYTMyLjAzIDMyLjAzIDAgMCAwIDE2LjUxIDEyLjYxTDE2MCAyNTZIODIuMDZhMzIuMDIgMzIuMDIgMCAwIDAtMjYuNjMgMTQuMjVMMi42OSAzNDkuMzhjLTQuOSA3LjM1LTIuOTIgMTcuMjkgNC40NCAyMi4xOWwxMy4zMSA4Ljg4YzcuMzUgNC45IDE3LjI5IDIuOTEgMjIuMTktNC40NGw0OC03Mmg0Ny4wNmwtNjAuODMgOTcuMzNBMzEuOTg4IDMxLjk4OCAwIDAgMCA3MiA0MTguM1Y0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTczLjExbDc0LjA4LTExOC41M2MtMS4wMSAxNC4wNS0yLjA4IDI4LjExLTIuMDggNDIuMjFDMTkyIDM5OS42NCAyMzIuNzYgNDQ4IDI4OCA0NDhzOTYtNDguMzYgOTYtMTAxLjQzYzAtMTQuMS0xLjA4LTI4LjE2LTIuMDgtNDIuMjFMNDU2IDQyMi44OVY0OTZjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTc3LjcxYzAtNi0xLjY5LTExLjg4LTQuODYtMTYuOTZMNDM4LjMxIDMwNGg0Ny4wNmw0OCA3MmM0LjkgNy4zNSAxNC44NCA5LjM0IDIyLjE5IDQuNDRsMTMuMzEtOC44OGM3LjM2LTQuOSA5LjM0LTE0LjgzIDQuNDQtMjIuMTh6TTQwNi4wOSA5Ny41MWwtMjAuMjkgNDAuNThjMS40MSA0LjIxIDIuNDkgOC4yMSAzLjIxIDExLjc5bDUuMjIgMjYuMTJoNC42N2wyNS45My04LjY1IDI3LjE1LTU0LjNhMzEuOTk1IDMxLjk5NSAwIDAgMCAxLjczLTI0LjQzbC0yNS44OS03Ny42OEM0MjUuMDMgMi41NiA0MTUuOTYtMS45OCA0MDcuNTguODJsLTE1LjE3IDUuMDZjLTguMzggMi44LTEyLjkxIDExLjg2LTEwLjEyIDIwLjI0bDIzLjggNzEuMzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bpbm5lciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMDQgNDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDggMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDh6bS00OCAzNjhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bTIwOC0yMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6TTk2IDI1NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4UzAgMjI5LjQ5IDAgMjU2czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4em0xMi45MjIgOTkuMDc4Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5MS00OC00OC00OHptMjk0LjE1NiAwYy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4czIxLjQ5IDQ4IDQ4IDQ4IDQ4LTIxLjQ5IDQ4LTQ4YzAtMjYuNTA5LTIxLjQ5LTQ4LTQ4LTQ4ek0xMDguOTIyIDYwLjkyMmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OTEtNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Bsb3RjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzIuMjkgMTk1Ljg5bC02Ny4wNi0yMi45NWMtMTkuMjgtNi42LTMzLjU0LTIwLjkyLTM4LjE0LTM4LjNMMzUxLjEgNzQuMTljLTExLjU4LTQzLjc3LTc2LjU3LTU3LjEzLTEwOS45OC0yMi42MmwtNDYuMTQgNDcuNjdjLTEzLjI2IDEzLjcxLTMzLjU0IDIwLjkzLTU0LjIgMTkuMzFsLTcxLjg4LTUuNjJjLTUyLjA1LTQuMDctODYuOTMgNDQuODgtNTkuMDMgODIuODNsMzguNTQgNTIuNDJjMTEuMDggMTUuMDcgMTIuODIgMzMuODYgNC42NCA1MC4yNEwyNC42MiAzNTUuNGMtMjAuNTkgNDEuMjUgMjIuODQgODQuODcgNzMuNDkgNzMuODFsNjkuOTYtMTUuMjhjMjAuMTEtNC4zOSA0MS40NSAwIDU3LjA3IDExLjczbDU0LjMyIDQwLjgzYzM5LjMyIDI5LjU2IDEwMS4wNCA3LjU3IDEwNC40NS0zNy4yMmw0LjctNjEuODZjMS4zNS0xNy43OSAxMi44LTMzLjg2IDMwLjYzLTQyLjk5bDYyLTMxLjc0YzQ0Ljg4LTIyLjk2IDM5LjU5LTgwLjE3LTguOTUtOTYuNzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3ByYXlDYW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2aDEyOFYzMnptMjU2IDk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem0tMjU2IDMySDk2Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2djIyNGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDI1NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjI1NmMwLTUzLjAyLTQyLjk4LTk2LTk2LTk2em0tNjQgMjU2Yy00NC4xOCAwLTgwLTM1LjgyLTgwLTgwczM1LjgyLTgwIDgwLTgwIDgwIDM1LjgyIDgwIDgwLTM1LjgyIDgwLTgwIDgwek00ODAgOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnMtMTQuMzMtMzItMzItMzItMzIgMTQuMzMtMzIgMzIgMTQuMzMgMzIgMzIgMzJ6bS05NiAzMmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnptLTk2LTk2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAwYy0xNy42NyAwLTMyIDE0LjMzLTMyIDMyczE0LjMzIDMyIDMyIDMyIDMyLTE0LjMzIDMyLTMyLTE0LjMzLTMyLTMyLTMyem05NiAxOTJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJzMTQuMzMgMzIgMzIgMzIgMzItMTQuMzMgMzItMzItMTQuMzMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3F1YXJlRnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTIgNTEySDBWMGg1MTJ2NTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVNxdWFyZVJvb3RBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTcxLjMxIDI1MS4zMWwtMjIuNjItMjIuNjJjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBMNDgwIDI3NC43NWwtNDYuMDYtNDYuMDZjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYyIDIyLjYyYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzTDQzNC43NSAzMjBsLTQ2LjA2IDQ2LjA2Yy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbDIyLjYyIDIyLjYyYzYuMjUgNi4yNSAxNi4zOCA2LjI1IDIyLjYzIDBMNDgwIDM2NS4yNWw0Ni4wNiA0Ni4wNmM2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYyLTIyLjYyYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNMNTI1LjI1IDMyMGw0Ni4wNi00Ni4wNmM2LjI1LTYuMjUgNi4yNS0xNi4zOCAwLTIyLjYzek01NTIgMEgzMDcuNjVjLTE0LjU0IDAtMjcuMjYgOS44LTMwLjk1IDIzLjg3bC04NC43OSAzMjIuOC01OC40MS0xMDYuMUEzMi4wMDggMzIuMDA4IDAgMCAwIDEwNS40NyAyMjRIMjRjLTEzLjI1IDAtMjQgMTAuNzQtMjQgMjR2NDhjMCAxMy4yNSAxMC43NSAyNCAyNCAyNGg0My42Mmw4OC44OCAxNjMuNzNDMTY4Ljk5IDUwMy41IDE4Ni4zIDUxMiAyMDQuOTQgNTEyYzE3LjI3IDAgNDQuNDQtOSA1NC4yOC00MS40OEwzNTcuMDMgOTZINTUyYzEzLjI1IDAgMjQtMTAuNzUgMjQtMjRWMjRjMC0xMy4yNi0xMC43NS0yNC0yNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFtcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMiA1MTJoNDQ4di02NEgzMnY2NHptMzg0LTI1NmgtNjYuNTZjLTE2LjI2IDAtMjkuNDQtMTMuMTgtMjkuNDQtMjkuNDR2LTkuNDZjMC0yNy4zNyA4Ljg4LTUzLjQxIDIxLjQ2LTc3LjcyIDkuMTEtMTcuNjEgMTIuOS0zOC4zOSA5LjA1LTYwLjQyLTYuNzctMzguNzgtMzguNDctNzAuNy03Ny4yNi03Ny40NUMyMTIuNjItOS4wNCAxNjAgMzcuMzMgMTYwIDk2YzAgMTQuMTYgMy4xMiAyNy41NCA4LjY5IDM5LjU4QzE4Mi4wMiAxNjQuNDMgMTkyIDE5NC43IDE5MiAyMjYuNDl2LjA3YzAgMTYuMjYtMTMuMTggMjkuNDQtMjkuNDQgMjkuNDRIOTZjLTUzLjAyIDAtOTYgNDIuOTgtOTYgOTZ2MzJjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg0NDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtMzJjMC01My4wMi00Mi45OC05Ni05Ni05NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyQW5kQ3Jlc2NlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzQwLjQ3IDQ2Ni4zNmMtMS40NSAwLTYuODkuNDYtOS4xOC40Ni0xMTYuMjUgMC0yMTAuODItOTQuNTctMjEwLjgyLTIxMC44MlMyMTUuMDQgNDUuMTggMzMxLjI5IDQ1LjE4YzIuMzIgMCA3LjcuNDYgOS4xOC40NiA3LjEzIDAgMTMuMzMtNS4wMyAxNC43NS0xMi4wNyAxLjQ2LTcuMjUtMi41NS0xNC40OS05LjQ3LTE3LjA5QzMxNi41OCA1LjU0IDI4Ni4zOSAwIDI1NiAwIDExNC44NCAwIDAgMTE0Ljg0IDAgMjU2czExNC44NCAyNTYgMjU2IDI1NmMzMC4yMyAwIDYwLjI4LTUuNDkgODkuMzItMTYuMzIgNS45Ni0yLjAyIDEwLjI4LTcuNjQgMTAuMjgtMTQuMjYgMC04LjA5LTYuMzktMTUuMDYtMTUuMTMtMTUuMDZ6bTE2Mi45OS0yNTIuNWwtNzYuMzgtMTEuMS0zNC4xNi02OS4yMWMtMS44My0zLjctNS4zOC01LjU1LTguOTMtNS41NXMtNy4xIDEuODUtOC45MyA1LjU1bC0zNC4xNiA2OS4yMS03Ni4zOCAxMS4xYy04LjE3IDEuMTgtMTEuNDMgMTEuMjItNS41MiAxNi45OWw1NS4yNyA1My44Ny0xMy4wNSA3Ni4wN2MtMS4xMSA2LjQ0IDQuMDEgMTEuNjYgOS44MSAxMS42NiAxLjUzIDAgMy4xMS0uMzYgNC42NC0xLjE3TDM4NCAzMzUuMzdsNjguMzEgMzUuOTFjMS41My44IDMuMTEgMS4xNyA0LjY0IDEuMTcgNS44IDAgMTAuOTItNS4yMyA5LjgxLTExLjY2bC0xMy4wNS03Ni4wNyA1NS4yNy01My44N2M1LjkxLTUuNzcgMi42NS0xNS44MS01LjUyLTE2Ljk5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0YXJIYWxmQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwOC41NSAxNzEuNTFMMzYyLjE4IDE1MC4yIDI5Ni43NyAxNy44MUMyOTAuODkgNS45OCAyNzkuNDIgMCAyNjcuOTUgMGMtMTEuNCAwLTIyLjc5IDUuOS0yOC42OSAxNy44MWwtNjUuNDMgMTMyLjM4LTE0Ni4zOCAyMS4yOWMtMjYuMjUgMy44LTM2Ljc3IDM2LjA5LTE3Ljc0IDU0LjU5bDEwNS44OSAxMDMtMjUuMDYgMTQ1LjQ4Qzg2Ljk4IDQ5NS4zMyAxMDMuNTcgNTEyIDEyMi4xNSA1MTJjNC45MyAwIDEwLTEuMTcgMTQuODctMy43NWwxMzAuOTUtNjguNjggMTMwLjk0IDY4LjdjNC44NiAyLjU1IDkuOTIgMy43MSAxNC44MyAzLjcxIDE4LjYgMCAzNS4yMi0xNi42MSAzMS42Ni0zNy40bC0yNS4wMy0xNDUuNDkgMTA1LjkxLTEwMi45OGMxOS4wNC0xOC41IDguNTItNTAuOC0xNy43My01NC42em0tMTIxLjc0IDEyMy4ybC0xOC4xMiAxNy42MiA0LjI4IDI0Ljg4IDE5LjUyIDExMy40NS0xMDIuMTMtNTMuNTktMjIuMzgtMTEuNzQuMDMtMzE3LjE5IDUxLjAzIDEwMy4yOSAxMS4xOCAyMi42MyAyNS4wMSAzLjY0IDExNC4yMyAxNi42My04Mi42NSA4MC4zOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZWMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZEYXZpZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDY0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDUuNjggMjU2bDUzLjIxLTg5LjM5QzQ3My4zIDE0Mi40IDQ1NS40OCAxMTIgNDI2Ljg4IDExMkgzMTkuOTZsLTU1Ljk1LTkzLjk4QzI1Ni44NiA2LjAxIDI0NC40MyAwIDIzMiAwcy0yNC44NiA2LjAxLTMyLjAxIDE4LjAyTDE0NC4wNCAxMTJIMzcuMTFjLTI4LjYgMC00Ni40MiAzMC40LTMyLjAxIDU0LjYxTDU4LjMyIDI1NiA1LjEgMzQ1LjM5Qy05LjMxIDM2OS42IDguNTEgNDAwIDM3LjExIDQwMGgxMDYuOTNsNTUuOTUgOTMuOThDMjA3LjE0IDUwNS45OSAyMTkuNTcgNTEyIDIzMiA1MTJzMjQuODYtNi4wMSAzMi4wMS0xOC4wMkwzMTkuOTYgNDAwaDEwNi45M2MyOC42IDAgNDYuNDItMzAuNCAzMi4wMS01NC42MUw0MDUuNjggMjU2em0tMTIuNzgtODhsLTE5LjggMzMuMjZMMzUzLjMgMTY4aDM5LjZ6bS01Mi4zOSA4OGwtNTIuMzkgODhIMTc1Ljg4bC01Mi4zOS04OCA1Mi4zOC04OGgxMTIuMjVsNTIuMzkgODh6TTIzMiA3My43MkwyNTQuNzkgMTEyaC00NS41N0wyMzIgNzMuNzJ6TTcxLjEgMTY4aDM5LjZsLTE5LjggMzMuMjZMNzEuMSAxNjh6bTAgMTc2bDE5LjgtMzMuMjZMMTEwLjcgMzQ0SDcxLjF6TTIzMiA0MzguMjhMMjA5LjIxIDQwMGg0NS41N0wyMzIgNDM4LjI4ek0zNTMuMjkgMzQ0bDE5LjgtMzMuMjZMMzkyLjkgMzQ0aC0zOS42MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyT2ZMaWZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ3MS45OSAzMzQuNDNMMzM2LjA2IDI1NmwxMzUuOTMtNzguNDNjNy42Ni00LjQyIDEwLjI4LTE0LjIgNS44Ni0yMS44NmwtMzIuMDItNTUuNDNjLTQuNDItNy42NS0xNC4yMS0xMC4yOC0yMS44Ny01Ljg2bC0xMzUuOTMgNzguNDNWMTZjMC04Ljg0LTcuMTctMTYtMTYuMDEtMTZoLTY0LjA0Yy04Ljg0IDAtMTYuMDEgNy4xNi0xNi4wMSAxNnYxNTYuODZMNTYuMDQgOTQuNDNjLTcuNjYtNC40Mi0xNy40NS0xLjc5LTIxLjg3IDUuODZMMi4xNSAxNTUuNzFjLTQuNDIgNy42NS0xLjggMTcuNDQgNS44NiAyMS44NkwxNDMuOTQgMjU2IDguMDEgMzM0LjQzYy03LjY2IDQuNDItMTAuMjggMTQuMjEtNS44NiAyMS44NmwzMi4wMiA1NS40M2M0LjQyIDcuNjUgMTQuMjEgMTAuMjcgMjEuODcgNS44NmwxMzUuOTMtNzguNDNWNDk2YzAgOC44NCA3LjE3IDE2IDE2LjAxIDE2aDY0LjA0YzguODQgMCAxNi4wMS03LjE2IDE2LjAxLTE2VjMzOS4xNGwxMzUuOTMgNzguNDNjNy42NiA0LjQyIDE3LjQ1IDEuOCAyMS44Ny01Ljg2bDMyLjAyLTU1LjQzYzQuNDItNy42NSAxLjgtMTcuNDMtNS44Ni0yMS44NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1OS4zIDE3LjhMMTk0IDE1MC4yIDQ3LjkgMTcxLjVjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMyAyMy4yIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZsMTMwLjcgNjguN2MyMy4yIDEyLjIgNTAuOS03LjQgNDYuNC0zMy43bC0yNS0xNDUuNSAxMDUuNy0xMDNjMTktMTguNSA4LjUtNTAuOC0xNy43LTU0LjZMMzgyIDE1MC4yIDMxNi43IDE3LjhjLTExLjctMjMuNi00NS42LTIzLjktNTcuNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0ZXBCYWNrd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCA0NjhWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnYxNzYuNGwxOTUuNS0xODFDMzUyLjEgMjIuMyAzODQgMzYuNiAzODQgNjR2Mzg0YzAgMjcuNC0zMS45IDQxLjctNTIuNSAyNC42TDEzNiAyOTIuN1Y0NjhjMCA2LjYtNS40IDEyLTEyIDEySDc2Yy02LjYgMC0xMi01LjQtMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RlcEZvcndhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDQ0djQyNGMwIDYuNi01LjQgMTItMTIgMTJoLTQ4Yy02LjYgMC0xMi01LjQtMTItMTJWMjkxLjZsLTE5NS41IDE4MUM5NS45IDQ4OS43IDY0IDQ3NS40IDY0IDQ0OFY2NGMwLTI3LjQgMzEuOS00MS43IDUyLjUtMjQuNkwzMTIgMjE5LjNWNDRjMC02LjYgNS40LTEyIDEyLTEyaDQ4YzYuNiAwIDEyIDUuNCAxMiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGV0aG9zY29wZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDcuMSAxMTJjLTM0LjIuNS02Mi4zIDI4LjQtNjMgNjIuNi0uNSAyNC4zIDEyLjUgNDUuNiAzMiA1Ni44VjM0NGMwIDU3LjMtNTAuMiAxMDQtMTEyIDEwNC02MCAwLTEwOS4yLTQ0LjEtMTExLjktOTkuMkMyNjUgMzMzLjggMzIwIDI2OS4yIDMyMCAxOTJWMzYuNmMwLTExLjQtOC4xLTIxLjMtMTkuMy0yMy41TDIzNy44LjVjLTEzLTIuNi0yNS42IDUuOC0yOC4yIDE4LjhMMjA2LjQgMzVjLTIuNiAxMyA1LjggMjUuNiAxOC44IDI4LjJsMzAuNyA2LjF2MTIxLjRjMCA1Mi45LTQyLjIgOTYuNy05NS4xIDk3LjItNTMuNC41LTk2LjktNDIuNy05Ni45LTk2VjY5LjRsMzAuNy02LjFjMTMtMi42IDIxLjQtMTUuMiAxOC44LTI4LjJsLTMuMS0xNS43QzEwNy43IDYuNCA5NS4xLTIgODIuMS42TDE5LjMgMTNDOC4xIDE1LjMgMCAyNS4xIDAgMzYuNlYxOTJjMCA3Ny4zIDU1LjEgMTQyIDEyOC4xIDE1Ni44QzEzMC43IDQzOS4yIDIwOC42IDUxMiAzMDQgNTEyYzk3IDAgMTc2LTc1LjQgMTc2LTE2OFYyMzEuNGMxOS4xLTExLjEgMzItMzEuNyAzMi01NS40IDAtMzUuNy0yOS4yLTY0LjUtNjQuOS02NHptLjkgODBjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2LTcuMiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdGlja3lOb3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxMiAzMjBoMTM2VjU2YzAtMTMuMy0xMC43LTI0LTI0LTI0SDI0QzEwLjcgMzIgMCA0Mi43IDAgNTZ2NDAwYzAgMTMuMyAxMC43IDI0IDI0IDI0aDI2NFYzNDRjMC0xMy4yIDEwLjgtMjQgMjQtMjR6bTEyOSA1NWwtOTggOThjLTQuNSA0LjUtMTAuNiA3LTE3IDdoLTZWMzUyaDEyOHY2LjFjMCA2LjMtMi41IDEyLjQtNyAxNi45elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3BDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9wd2F0Y2gyMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zOTguNSwxOTAuOTFsLjU5LS42MSwyNi41OS0yNi41OGExNiwxNiwwLDAsMCwwLTIyLjYzTDQwMywxMTguNDFhMTYsMTYsMCwwLDAtMjIuNjMsMGwtMjQuNjgsMjQuNjhBMjA2LjY4LDIwNi42OCwwLDAsMCwyNTYsOTguNVY2NGgzMmExNiwxNiwwLDAsMCwxNi0xNlYxNkExNiwxNiwwLDAsMCwyODgsMEgxNjBhMTYuMDUsMTYuMDUsMCwwLDAtMTYsMTZWNDhhMTYuMDUsMTYuMDUsMCwwLDAsMTYsMTZoMzJWOTguNUEyMDcuOTIsMjA3LjkyLDAsMCwwLDE2LjA5LDI5Ny41N0MxMi42NCw0MTEuNSwxMDYuNzYsNTEwLjIyLDIyMC43Miw1MTIsMzM3LjEzLDUxMy43Nyw0MzIsNDIwLDQzMiwzMDRBMjA2LDIwNiwwLDAsMCwzOTguNSwxOTAuOTFaTTIwNC4zNywzNzcuNTVhOC4yLDguMiwwLDAsMSw4LjMyLDguMDd2MjIuMzFhOC4yLDguMiwwLDAsMS04LjMyLDguMDdIMTIxLjUyYTE2LjQ2LDE2LjQ2LDAsMCwxLTE2LjYxLTE3LjYyYzIuNzgtMzUuMjIsMTQuNjctNTcuNDEsMzguNDUtOTEuMzcsMjAuNDItMjkuMTksMjcuMS0zNy4zMiwyNy4xLTYyLjM0LDAtMTYuOTItMS43OS0yNC4yNy0xMi4yMS0yNC4yNy05LjM5LDAtMTIuNjksNy40LTEyLjY5LDIyLjY4djUuMjNhOC4yLDguMiwwLDAsMS04LjMzLDguMDdoLTI0LjlhOC4yLDguMiwwLDAsMS04LjMzLTguMDd2LTQuMDdjMC0yNy4zLDguNDgtNjAuMjQsNTYuNDMtNjAuMjQsNDMsMCw1NS41NywyNS44NSw1NS41Nyw2MSwwLDM1LjU4LTEyLjQ0LDUxLjIxLTM0LjM1LDgxLjMxLTExLjU2LDE1LTI0LjYxLDM1LjU3LTI2LjQxLDUxLjJaTTM0NCwzNTIuMzJjMCwzNS4xNi0xMi4zLDYzLjY4LTU3LjIzLDYzLjY4QzI0My4xOSw0MTYsMjMyLDM4Ni40OCwyMzIsMzUyLjU1VjI0Ny4yMmMwLTQwLjczLDE5LjU4LTYzLjIyLDU2LjItNjMuMjJDMzI1LDE4NCwzNDQsMjA2LjY0LDM0NCwyNDUuM1pNMjg3Ljg3LDIyMS43M2MtOS40MSwwLTEzLjIzLDcuNS0xMy4yMywyMFYzNTcuNjhjMCwxMy4xMSwzLjU5LDIwLjU5LDEzLjIzLDIwLjU5czEzLTgsMTMtMjEuMjdWMjQxLjA2QzMwMC44OSwyMjkuNzksMjk3Ljg4LDIyMS43MywyODcuODcsMjIxLjczWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzA0YzAgMTE0LjktOTMuMSAyMDgtMjA4IDIwOFMxNiA0MTguOSAxNiAzMDRjMC0xMDQgNzYuMy0xOTAuMiAxNzYtMjA1LjVWNjRoLTI4Yy02LjYgMC0xMi01LjQtMTItMTJWMTJjMC02LjYgNS40LTEyIDEyLTEyaDEyMGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC0yOHYzNC41YzM3LjUgNS44IDcxLjcgMjEuNiA5OS43IDQ0LjZsMjcuNS0yNy41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwyOC4zIDI4LjNjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yOS40IDI5LjQtLjYuNkM0MTkuNyAyMjMuMyA0MzIgMjYyLjIgNDMyIDMwNHptLTE3NiAzNlYxODguNWMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJWMzQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RvcmVBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNy44OSwxMjMuNjIsNS41MSwxNDIuMmMtMTQuMiwyMS4zLDEsNDkuOCwyNi41OSw0OS44aDc0LjI2Wk01NzYsNDEzLjQyVjIyNEg1MTJWMzY0TDM4NCwyNjVWMjI0SDMzMC45MmwtNDEuNC0zMkg2MDhjMjUuNSwwLDQwLjctMjguNSwyNi41OS00OS44bC04NS4yOS0xMjhBMzIuMTgsMzIuMTgsMCwwLDAsNTIyLjYsMEgxMTcuNDJBMzEuODcsMzEuODcsMCwwLDAsOTAuODEsMTQuMmwtMTAuNjYsMTZMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDZBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTMsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZhMTYsMTYsMCwwLDAtMi44MS0yMi40NVpNMzIwLDM4NEgxMjhWMjI0SDY0VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgzNTJhMzIsMzIsMCwwLDAsMzItMzJWNDA2LjU5bC02NC00OS40N1pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdG9yZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjAgMzg0SDEyOFYyMjRINjR2MjU2YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDI1NmMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRoLTY0djE2MHptMzE0LjYtMjQxLjhsLTg1LjMtMTI4Yy02LTguOS0xNi0xNC4yLTI2LjctMTQuMkgxMTcuNGMtMTAuNyAwLTIwLjcgNS4zLTI2LjYgMTQuMmwtODUuMyAxMjhjLTE0LjIgMjEuMyAxIDQ5LjggMjYuNiA0OS44SDYwOGMyNS41IDAgNDAuNy0yOC41IDI2LjYtNDkuOHpNNTEyIDQ5NmMwIDguOCA3LjIgMTYgMTYgMTZoMzJjOC44IDAgMTYtNy4yIDE2LTE2VjIyNGgtNjR2MjcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIxLjUxLDM4NFYyODQuMmExMTkuNDMsMTE5LjQzLDAsMCwxLTI4LDMuOCwxMjMuNDYsMTIzLjQ2LDAsMCwxLTE3LjEtMS4yLDExNC44OCwxMTQuODgsMCwwLDEtMTUuNTgtMy42VjQ4MGMwLDE3LjcsMTMuNTksMzIsMzAuNCwzMkg1MDUuNzVMMzQ4LjQyLDM4NFptLTI4LTEyOC4wOWMyNS4xLDAsNDcuMjktMTAuNzIsNjQtMjcuMjRMMjQsMTIwLjA1Yy0zMC41Miw1My4zOS0yLjQ1LDEyNi41Myw1Ni40OSwxMzVBOTUuNjgsOTUuNjgsMCwwLDAsOTMuNDgsMjU1LjkxWk02MDIuMTMsNDU4LjA5LDU0Ny4yLDQxMy40MVYyODMuMmE5My41LDkzLjUsMCwwLDEtMTUuNTcsMy42LDEyNy4zMSwxMjcuMzEsMCwwLDEtMTcuMjksMS4yLDExNC44OSwxMTQuODksMCwwLDEtMjgtMy44djc5LjY4TDM0OC41MiwyNTEuNzdhODguMDYsODguMDYsMCwwLDAsMjUuNDEsNC4xNGMyOC4xMSwwLDUzLTEzLDcwLjExLTMzLjExLDE3LjE5LDIwLjExLDQyLjA4LDMzLjExLDcwLjExLDMzLjExYTk0LjMxLDk0LjMxLDAsMCwwLDEzLS45MWM1OS42Ni04LjQxLDg4LTgyLjgsNTYuMDYtMTM2LjRMNTIxLjU1LDE1QTMwLjEsMzAuMSwwLDAsMCw0OTUuODEsMEgxMTJBMzAuMTEsMzAuMTEsMCwwLDAsODYuMjcsMTVMNzYuODgsMzAuNzgsNDMuMTksMy4zOEExNC42OCwxNC42OCwwLDAsMCwyMS44Niw2LjE5TDMuMiwzMS40NUExNi41OCwxNi41OCwwLDAsMCw1Ljg3LDUzLjkxTDU2NC44MSw1MDguNjNhMTQuNjksMTQuNjksMCwwLDAsMjEuMzMtMi44MmwxOC42Ni0yNS4yNkExNi41OCwxNi41OCwwLDAsMCw2MDIuMTMsNDU4LjA5WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2MTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwMiAxMTguNkw1MzcuMSAxNUM1MzEuMyA1LjcgNTIxIDAgNTEwIDBIMTA2Qzk1IDAgODQuNyA1LjcgNzguOSAxNUwxNCAxMTguNmMtMzMuNSA1My41LTMuOCAxMjcuOSA1OC44IDEzNi40IDQuNS42IDkuMS45IDEzLjcuOSAyOS42IDAgNTUuOC0xMyA3My44LTMzLjEgMTggMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDI5LjYgMCA1NS44LTEzIDczLjgtMzMuMSAxOCAyMC4xIDQ0LjMgMzMuMSA3My44IDMzLjEgMjkuNiAwIDU1LjgtMTMgNzMuOC0zMy4xIDE4LjEgMjAuMSA0NC4zIDMzLjEgNzMuOCAzMy4xIDQuNyAwIDkuMi0uMyAxMy43LS45IDYyLjgtOC40IDkyLjYtODIuOCA1OS0xMzYuNHpNNTI5LjUgMjg4Yy0xMCAwLTE5LjktMS41LTI5LjUtMy44VjM4NEgxMTZ2LTk5LjhjLTkuNiAyLjItMTkuNSAzLjgtMjkuNSAzLjgtNiAwLTEyLjEtLjQtMTgtMS4yLTUuNi0uOC0xMS4xLTIuMS0xNi40LTMuNlY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjI4My4yYy01LjQgMS42LTEwLjggMi45LTE2LjQgMy42LTYuMS44LTEyLjEgMS4yLTE4LjIgMS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN0cmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxMjhoNDE2YzguODQgMCAxNi03LjE2IDE2LTE2VjQ4YzAtOC44NC03LjE2LTE2LTE2LTE2SDE2QzcuMTYgMzIgMCAzOS4xNiAwIDQ4djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2em00ODAgODBIODBjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNjRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS02NCAxNzZIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djY0YzAgOC44NCA3LjE2IDE2IDE2IDE2aDQxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNjRjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3RyZWV0VmlldyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjcuOSAzMjkuNzZjLTQuNjIgNS4zLTkuNzggMTAuMS0xNS45IDEzLjY1djIyLjk0YzY2LjUyIDkuMzQgMTEyIDI4LjA1IDExMiA0OS42NSAwIDMwLjkzLTkzLjEyIDU2LTIwOCA1NlM0OCA0NDYuOTMgNDggNDE2YzAtMjEuNiA0NS40OC00MC4zIDExMi00OS42NXYtMjIuOTRjLTYuMTItMy41NS0xMS4yOC04LjM1LTE1LjktMTMuNjVDNTguODcgMzQ1LjM0IDAgMzc4LjA1IDAgNDE2YzAgNTMuMDIgMTE0LjYyIDk2IDI1NiA5NnMyNTYtNDIuOTggMjU2LTk2YzAtMzcuOTUtNTguODctNzAuNjYtMTQ0LjEtODYuMjR6TTI1NiAxMjhjMzUuMzUgMCA2NC0yOC42NSA2NC02NFMyOTEuMzUgMCAyNTYgMHMtNjQgMjguNjUtNjQgNjQgMjguNjUgNjQgNjQgNjR6bS02NCAxOTJ2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg2NGMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMxNy42NyAwIDMyLTE0LjMzIDMyLTMydi05NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4aC0xMS44Yy0xMS4wNyA1LjAzLTIzLjI2IDgtMzYuMiA4cy0yNS4xMy0yLjk3LTM2LjItOEgyMDhjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2OTZjMCAxNy42NyAxNC4zMyAzMiAzMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdHJpa2V0aHJvdWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRIMjkzLjlsLTg3LjE3LTI2LjgzQTQzLjU1IDQzLjU1IDAgMCAxIDIxOS41NSAxMTJoNjYuNzlBNDkuODkgNDkuODkgMCAwIDEgMzMxIDEzOS41OGExNiAxNiAwIDAgMCAyMS40NiA3LjE1bDQyLjk0LTIxLjQ3YTE2IDE2IDAgMCAwIDcuMTYtMjEuNDZsLS41My0xQTEyOCAxMjggMCAwIDAgMjg3LjUxIDMyaC02OGExMjMuNjggMTIzLjY4IDAgMCAwLTEyMyAxMzUuNjRjMiAyMC44OSAxMC4xIDM5LjgzIDIxLjc4IDU2LjM2SDE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQ4MGExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZ6bS0xODAuMjQgOTZBNDMgNDMgMCAwIDEgMzM2IDM1Ni40NSA0My41OSA0My41OSAwIDAgMSAyOTIuNDUgNDAwaC02Ni43OUE0OS44OSA0OS44OSAwIDAgMSAxODEgMzcyLjQyYTE2IDE2IDAgMCAwLTIxLjQ2LTcuMTVsLTQyLjk0IDIxLjQ3YTE2IDE2IDAgMCAwLTcuMTYgMjEuNDZsLjUzIDFBMTI4IDEyOCAwIDAgMCAyMjQuNDkgNDgwaDY4YTEyMy42OCAxMjMuNjggMCAwIDAgMTIzLTEzNS42NCAxMTQuMjUgMTE0LjI1IDAgMCAwLTUuMzQtMjQuMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Ryb29wd2FmZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg4LjEyIDIxMC43NEwxNDIuODYgMjU2bDQ1LjI1IDQ1LjI1TDIzMy4zNyAyNTZsLTQ1LjI1LTQ1LjI2em0xMTMuMTMtMjIuNjJMMjU2IDE0Mi44NmwtNDUuMjUgNDUuMjVMMjU2IDIzMy4zN2w0NS4yNS00NS4yNXptLTkwLjUgMTM1Ljc2TDI1NiAzNjkuMTRsNDUuMjYtNDUuMjZMMjU2IDI3OC42M2wtNDUuMjUgNDUuMjV6TTI1NiAwQzExNC42MiAwIDAgMTE0LjYyIDAgMjU2czExNC42MiAyNTYgMjU2IDI1NiAyNTYtMTE0LjYyIDI1Ni0yNTZTMzk3LjM4IDAgMjU2IDB6bTE4Ni42OCAyOTUuNmwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMjguMjktMjguMjktNDUuMjUgNDUuMjUgMzMuOTQgMzMuOTQgMTYuOTctMTYuOTdjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDExLjMxIDExLjMxYzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTYuOTcgMTYuOTcgMTYuOTcgMTYuOTdjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xMS4zMSAxMS4zMWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xNi45Ny0xNi45Ny0xNi45NyAxNi45N2MtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDE2Ljk3LTE2Ljk3LTMzLjk0LTMzLjk0LTQ1LjI2IDQ1LjI2IDI4LjI5IDI4LjI5YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMEwyNTYgNDE0LjM5bC0yOC4yOSAyOC4yOWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDI4LjI5LTI4LjI5LTQ1LjI1LTQ1LjI2LTMzLjk0IDMzLjk0IDE2Ljk3IDE2Ljk3YzMuMTIgMy4xMiAzLjEyIDguMTkgMCAxMS4zMWwtMTEuMzEgMTEuMzFjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTYuOTctMTYuOTctMTYuOTcgMTYuOTdjLTMuMTIgMy4xMi04LjE5IDMuMTItMTEuMzEgMGwtMTEuMzEtMTEuMzFjLTMuMTItMy4xMi0zLjEyLTguMTkgMC0xMS4zMWwxNi45Ny0xNi45Ny0xNi45Ny0xNi45N2MtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxNi45NyAxNi45NyAzMy45NC0zMy45NC00NS4yNS00NS4yNS0yOC4yOSAyOC4yOWMtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwTDY5LjMyIDI5NS42Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFMOTcuNjEgMjU2bC0yOC4yOS0yOC4yOWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwyOC4yOSAyOC4yOSA0NS4yNS00NS4yNi0zMy45NC0zMy45NC0xNi45NyAxNi45N2MtMy4xMiAzLjEyLTguMTkgMy4xMi0xMS4zMSAwbC0xMS4zMS0xMS4zMWMtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDE2Ljk3LTE2Ljk3LTE2Ljk3LTE2Ljk3Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwbDE2Ljk3IDE2Ljk3IDE2Ljk3LTE2Ljk3YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTE2Ljk3IDE2Ljk3IDMzLjk0IDMzLjk0IDQ1LjI2LTQ1LjI1LTI4LjI5LTI4LjI5Yy0zLjEyLTMuMTItMy4xMi04LjE5IDAtMTEuMzFsMTEuMzEtMTEuMzFjMy4xMi0zLjEyIDguMTktMy4xMiAxMS4zMSAwTDI1NiA5Ny42MWwyOC4yOS0yOC4yOWMzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0yOC4yOSAyOC4yOSA0NS4yNiA0NS4yNSAzMy45NC0zMy45NC0xNi45Ny0xNi45N2MtMy4xMi0zLjEyLTMuMTItOC4xOSAwLTExLjMxbDExLjMxLTExLjMxYzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxNi45NyAxNi45NyAxNi45Ny0xNi45N2MzLjEyLTMuMTIgOC4xOS0zLjEyIDExLjMxIDBsMTEuMzEgMTEuMzFjMy4xMiAzLjEyIDMuMTIgOC4xOSAwIDExLjMxbC0xNi45NyAxNi45NyAxNi45NyAxNi45N2MzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFsLTExLjMxIDExLjMxYy0zLjEyIDMuMTItOC4xOSAzLjEyLTExLjMxIDBsLTE2Ljk3LTE2Ljk3LTMzLjk0IDMzLjk0IDQ1LjI1IDQ1LjI2IDI4LjI5LTI4LjI5YzMuMTItMy4xMiA4LjE5LTMuMTIgMTEuMzEgMGwxMS4zMSAxMS4zMWMzLjEyIDMuMTIgMy4xMiA4LjE5IDAgMTEuMzFMNDE0LjM5IDI1NmwyOC4yOSAyOC4yOGE4LjAxNSA4LjAxNSAwIDAgMSAwIDExLjMyek0yNzguNjMgMjU2bDQ1LjI2IDQ1LjI1TDM2OS4xNCAyNTZsLTQ1LjI1LTQ1LjI2TDI3OC42MyAyNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vic2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiA0NDhoLTE2VjMwNGExNiAxNiAwIDAgMC0xNi0xNmgtNDhhMTYgMTYgMCAwIDAtMTQuMjkgOC44M2wtMTYgMzJBMTYgMTYgMCAwIDAgNDAwIDM1MmgxNnY5NmgtMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoOTZhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2ek0zMzYgNjRoLTY3YTE2IDE2IDAgMCAwLTEzLjE0IDYuODdsLTc5LjkgMTE1LTc5LjktMTE1QTE2IDE2IDAgMCAwIDgzIDY0SDE2QTE2IDE2IDAgMCAwIDAgODB2NDhhMTYgMTYgMCAwIDAgMTYgMTZoMzMuNDhsNzcuODEgMTEyLTc3LjgxIDExMkgxNmExNiAxNiAwIDAgMC0xNiAxNnY0OGExNiAxNiAwIDAgMCAxNiAxNmg2N2ExNiAxNiAwIDAgMCAxMy4xNC02Ljg3bDc5LjktMTE1IDc5LjkgMTE1QTE2IDE2IDAgMCAwIDI2OSA0NDhoNjdhMTYgMTYgMCAwIDAgMTYtMTZ2LTQ4YTE2IDE2IDAgMCAwLTE2LTE2aC0zMy40OGwtNzcuODEtMTEyIDc3LjgxLTExMkgzMzZhMTYgMTYgMCAwIDAgMTYtMTZWODBhMTYgMTYgMCAwIDAtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3Vid2F5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0OCA5NnYyNTZjMCA1MS44MTUtNjEuNjI0IDk2LTEzMC4wMjIgOTZsNjIuOTggNDkuNzIxQzM4Ni45MDUgNTAyLjQxNyAzODMuNTYyIDUxMiAzNzYgNTEySDcyYy03LjU3OCAwLTEwLjg5Mi05LjU5NC00Ljk1Ny0xNC4yNzlMMTMwLjAyMiA0NDhDNjEuODIgNDQ4IDAgNDAzLjk1NCAwIDM1MlY5NkMwIDQyLjk4MSA2NCAwIDEyOCAwaDE5MmM2NSAwIDEyOCA0Mi45ODEgMTI4IDk2ek0yMDAgMjMyVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRINzJjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxMTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR6bTIwMCAwVjEyMGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tNDggNTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6bS0yNTYgMGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHMyMS40OSA0OCA0OCA0OCA0OC0yMS40OSA0OC00OC0yMS40OS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdWl0Y2FzZVJvbGxpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDE2MEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYyMjRjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgxNnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZoMTI4djE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmgxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjIwOGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0tMTYgMjE2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMjQwYzQuNDIgMCA4IDMuNTggOCA4djE2em0wLTk2YzAgNC40Mi0zLjU4IDgtOCA4SDcyYy00LjQyIDAtOC0zLjU4LTgtOHYtMTZjMC00LjQyIDMuNTgtOCA4LThoMjQwYzQuNDIgMCA4IDMuNTggOCA4djE2ek0xNDQgNDhoOTZ2ODBoNDhWNDhjMC0yNi41MS0yMS40OS00OC00OC00OGgtOTZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2ODBoNDhWNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3VpdGNhc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDQ4MGgyNTZWODBjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTc2Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0MDB6bTY0LTM4NGgxMjh2MzJIMTkyVjk2em0zMjAgODB2MjU2YzAgMjYuNS0yMS41IDQ4LTQ4IDQ4aC00OFYxMjhoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6TTk2IDQ4MEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4djM1MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDE2MGMtNTIuOSAwLTk2IDQzLjEtOTYgOTZzNDMuMSA5NiA5NiA5NiA5Ni00My4xIDk2LTk2LTQzLjEtOTYtOTYtOTZ6bTI0Ni40IDgwLjVsLTk0LjctNDcuMyAzMy41LTEwMC40YzQuNS0xMy42LTguNC0yNi41LTIxLjktMjEuOWwtMTAwLjQgMzMuNS00Ny40LTk0LjhjLTYuNC0xMi44LTI0LjYtMTIuOC0zMSAwbC00Ny4zIDk0LjdMOTIuNyA3MC44Yy0xMy42LTQuNS0yNi41IDguNC0yMS45IDIxLjlsMzMuNSAxMDAuNC05NC43IDQ3LjRjLTEyLjggNi40LTEyLjggMjQuNiAwIDMxbDk0LjcgNDcuMy0zMy41IDEwMC41Yy00LjUgMTMuNiA4LjQgMjYuNSAyMS45IDIxLjlsMTAwLjQtMzMuNSA0Ny4zIDk0LjdjNi40IDEyLjggMjQuNiAxMi44IDMxIDBsNDcuMy05NC43IDEwMC40IDMzLjVjMTMuNiA0LjUgMjYuNS04LjQgMjEuOS0yMS45bC0zMy41LTEwMC40IDk0LjctNDcuM2MxMy02LjUgMTMtMjQuNy4yLTMxLjF6bS0xNTUuOSAxMDZjLTQ5LjkgNDkuOS0xMzEuMSA0OS45LTE4MSAwLTQ5LjktNDkuOS00OS45LTEzMS4xIDAtMTgxIDQ5LjktNDkuOSAxMzEuMS00OS45IDE4MSAwIDQ5LjkgNDkuOSA0OS45IDEzMS4xIDAgMTgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cGVyc2NyaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxNjBoLTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2aC00OGExNiAxNiAwIDAgMC0xNC4yOSA4LjgzbC0xNiAzMkExNiAxNiAwIDAgMCA0MDAgNjRoMTZ2OTZoLTE2YTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDk2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpNMzM2IDY0aC02N2ExNiAxNiAwIDAgMC0xMy4xNCA2Ljg3bC03OS45IDExNS03OS45LTExNUExNiAxNiAwIDAgMCA4MyA2NEgxNkExNiAxNiAwIDAgMCAwIDgwdjQ4YTE2IDE2IDAgMCAwIDE2IDE2aDMzLjQ4bDc3LjgxIDExMi03Ny44MSAxMTJIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2NDhhMTYgMTYgMCAwIDAgMTYgMTZoNjdhMTYgMTYgMCAwIDAgMTMuMTQtNi44N2w3OS45LTExNSA3OS45IDExNUExNiAxNiAwIDAgMCAyNjkgNDQ4aDY3YTE2IDE2IDAgMCAwIDE2LTE2di00OGExNiAxNiAwIDAgMC0xNi0xNmgtMzMuNDhsLTc3LjgxLTExMiA3Ny44MS0xMTJIMzM2YTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN1cnByaXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6TTEzNiAyMDhjMC0xNy43IDE0LjMtMzIgMzItMzJzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyLTMyLTE0LjMtMzItMzJ6bTExMiAyMDhjLTM1LjMgMC02NC0yOC43LTY0LTY0czI4LjctNjQgNjQtNjQgNjQgMjguNyA2NCA2NC0yOC43IDY0LTY0IDY0em04MC0xNzZjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3YXRjaGJvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM0LjY2LDE2Ny43MWgwTDM0NC41LDc3LjM2YTMxLjgzLDMxLjgzLDAsMCwwLTQ1LS4wN2gwbC0uMDcuMDdMMjI0LDE1Mi44OFY0MjRMNDM0LjY2LDIxMi45QTMyLDMyLDAsMCwwLDQzNC42NiwxNjcuNzFaTTQ4MCwzMjBIMzczLjA5TDE4Ni42OCw1MDYuNTFjLTIuMDYsMi4wNy00LjUsMy41OC02LjY4LDUuNDlINDgwYTMyLDMyLDAsMCwwLDMyLTMyVjM1MkEzMiwzMiwwLDAsMCw0ODAsMzIwWk0xOTIsMzJBMzIsMzIsMCwwLDAsMTYwLDBIMzJBMzIsMzIsMCwwLDAsMCwzMlY0MTZhOTYsOTYsMCwwLDAsMTkyLDBaTTk2LDQ0MGEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSw5Niw0NDBabTMyLTE4NEg2NFYxOTJoNjRabTAtMTI4SDY0VjY0aDY0WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN3aW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg5LjYxIDMxMC41OGMzLjU0IDMuMjYgMTUuMjcgOS40MiAzNC4zOSA5LjQyczMwLjg2LTYuMTYgMzQuMzktOS40MmMxNi4wMi0xNC43NyAzNC41LTIyLjU4IDUzLjQ2LTIyLjU4aDE2LjNjMTguOTYgMCAzNy40NSA3LjgxIDUzLjQ2IDIyLjU4IDMuNTQgMy4yNiAxNS4yNyA5LjQyIDM0LjM5IDkuNDJzMzAuODYtNi4xNiAzNC4zOS05LjQyYzE0Ljg2LTEzLjcxIDMxLjg4LTIxLjEyIDQ5LjM5LTIyLjE2bC0xMTIuODQtODAuNiAxOC0xMi44NmMzLjY0LTIuNTggOC4yOC0zLjUyIDEyLjYyLTIuNjFsMTAwLjM1IDIxLjUzYzI1LjkxIDUuNTMgNTEuNDQtMTAuOTcgNTctMzYuODggNS41NS0yNS45Mi0xMC45NS01MS40NC0zNi44OC01N0w0MzcuNjggOTguNDdjLTMwLjczLTYuNTgtNjMuMDIuMTItODguNTYgMTguMzhsLTgwLjAyIDU3LjE3Yy0xMC4zOCA3LjM5LTE5LjM2IDE2LjQ0LTI2LjcyIDI2Ljk0TDE3My43NSAyOTljNS40NyAzLjIzIDEwLjgyIDYuOTMgMTUuODYgMTEuNTh6TTYyNCAzNTJoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggMzQzLjU4IDQ0Mi4wNCAzNTIgNDE2IDM1MnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggMzQzLjU4IDI1MC4wNCAzNTIgMjI0IDM1MnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCAzNDMuNTggNTguMDQgMzUyIDMyIDM1MkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS01MTItOTZjNDQuMTggMCA4MC0zNS44MiA4MC04MHMtMzUuODItODAtODAtODAtODAgMzUuODItODAgODAgMzUuODIgODAgODAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3dpbW1pbmdQb29sIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCA0MTZoLTE2Yy0yNi4wNCAwLTQ1LjgtOC40Mi01Ni4wOS0xNy45LTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNDYxLjggNDA3LjU4IDQ0Mi4wNCA0MTYgNDE2IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDMjY5LjggNDA3LjU4IDI1MC4wNCA0MTYgMjI0IDQxNnMtNDUuOC04LjQyLTU2LjA5LTE3LjljLTguOS04LjIxLTE5LjY2LTE0LjEtMzEuNzctMTQuMWgtMTYuM2MtMTIuMTEgMC0yMi44NyA1Ljg5LTMxLjc3IDE0LjFDNzcuOCA0MDcuNTggNTguMDQgNDE2IDMyIDQxNkgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTZjMzguNjIgMCA3Mi43Mi0xMi4xOSA5Ni0zMS44NCAyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NHM3Mi43Mi0xMi4xOSA5Ni0zMS44NGMyMy4yOCAxOS42NiA1Ny4zOCAzMS44NCA5NiAzMS44NGgxNmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6bS00MDAtMzJ2LTk2aDE5MnY5NmMxOS4xMiAwIDMwLjg2LTYuMTYgMzQuMzktOS40MiA5LjE3LTguNDYgMTkuMi0xNC4zNCAyOS42MS0xOC4wN1YxMjhjMC0xNy42NCAxNC4zNi0zMiAzMi0zMnMzMiAxNC4zNiAzMiAzMnYxNmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtMTZjMC01Mi45NC00My4wNi05Ni05Ni05NnMtOTYgNDMuMDYtOTYgOTZ2OTZIMjI0di05NmMwLTE3LjY0IDE0LjM2LTMyIDMyLTMyczMyIDE0LjM2IDMyIDMydjE2YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTUyLjk0LTQzLjA2LTk2LTk2LTk2cy05NiA0My4wNi05NiA5NnYyMjguNWMxMC40MSAzLjczIDIwLjQ0IDkuNjIgMjkuNjEgMTguMDcgMy41MyAzLjI3IDE1LjI3IDkuNDMgMzQuMzkgOS40M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeW5hZ29ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNzAgMTk2LjUxTDYuNjcgMjY4LjI5QTI2LjY0MyAyNi42NDMgMCAwIDAgMCAyODUuOTNWNTEyaDEyOFYyMzkuNThsLTM4LTQzLjA3Yy01LjMxLTYuMDEtMTQuNjktNi4wMS0yMCAwem01NjMuMzMgNzEuNzhMNTcwIDE5Ni41MWMtNS4zMS02LjAyLTE0LjY5LTYuMDItMjAgMGwtMzggNDMuMDdWNTEyaDEyOFYyODUuOTNjMC02LjUtMi4zNy0xMi43Ny02LjY3LTE3LjY0ek0zMzkuOTkgNy4wMWMtMTEuNjktOS4zNS0yOC4yOS05LjM1LTM5Ljk4IDBsLTEyOCAxMDIuNEEzMi4wMDUgMzIuMDA1IDAgMCAwIDE2MCAxMzQuNFY1MTJoOTZ2LTkyLjU3YzAtMzEuODggMjEuNzgtNjEuNDMgNTMuMjUtNjYuNTVDMzQ5LjM0IDM0Ni4zNSAzODQgMzc3LjEzIDM4NCA0MTZ2OTZoOTZWMTM0LjRjMC05LjcyLTQuNDItMTguOTItMTIuMDEtMjQuOTlsLTEyOC0xMDIuNHptNTIuMDcgMjE1LjU1YzEuOTggMy4xNS0uMjkgNy4yNC00IDcuMjRoLTM4Ljk0TDMyNCAyNjkuNzljLTEuODUgMi45NS02LjE1IDIuOTUtOCAwbC0yNS4xMi0zOS45OGgtMzguOTRjLTMuNzIgMC01Ljk4LTQuMDktNC03LjI0bDE5LjItMzAuNTYtMTkuMi0zMC41NmMtMS45OC0zLjE1LjI5LTcuMjQgNC03LjI0aDM4Ljk0bDI1LjEyLTQwYzEuODUtMi45NSA2LjE1LTIuOTUgOCAwbDI1LjEyIDM5Ljk4aDM4Ljk1YzMuNzEgMCA1Ljk4IDQuMDkgNCA3LjI0TDM3Mi44NyAxOTJsMTkuMTkgMzAuNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhU3luY0FsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzAuNzIgMTMzLjI4QzMzOS40NTggMTA0LjAwOCAyOTguODg4IDg3Ljk2MiAyNTUuODQ4IDg4Yy03Ny40NTguMDY4LTE0NC4zMjggNTMuMTc4LTE2Mi43OTEgMTI2Ljg1LTEuMzQ0IDUuMzYzLTYuMTIyIDkuMTUtMTEuNjUxIDkuMTVIMjQuMTAzYy03LjQ5OCAwLTEzLjE5NC02LjgwNy0xMS44MDctMTQuMTc2QzMzLjkzMyA5NC45MjQgMTM0LjgxMyA4IDI1NiA4YzY2LjQ0OCAwIDEyNi43OTEgMjYuMTM2IDE3MS4zMTUgNjguNjg1TDQ2My4wMyA0MC45N0M0NzguMTQ5IDI1Ljg1MSA1MDQgMzYuNTU5IDUwNCA1Ny45NDFWMTkyYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgzNDUuOTQxYy0yMS4zODIgMC0zMi4wOS0yNS44NTEtMTYuOTcxLTQwLjk3MWw0MS43NS00MS43NDl6TTMyIDI5NmgxMzQuMDU5YzIxLjM4MiAwIDMyLjA5IDI1Ljg1MSAxNi45NzEgNDAuOTcxbC00MS43NSA0MS43NWMzMS4yNjIgMjkuMjczIDcxLjgzNSA0NS4zMTkgMTE0Ljg3NiA0NS4yOCA3Ny40MTgtLjA3IDE0NC4zMTUtNTMuMTQ0IDE2Mi43ODctMTI2Ljg0OSAxLjM0NC01LjM2MyA2LjEyMi05LjE1IDExLjY1MS05LjE1aDU3LjMwNGM3LjQ5OCAwIDEzLjE5NCA2LjgwNyAxMS44MDcgMTQuMTc2QzQ3OC4wNjcgNDE3LjA3NiAzNzcuMTg3IDUwNCAyNTYgNTA0Yy02Ni40NDggMC0xMjYuNzkxLTI2LjEzNi0xNzEuMzE1LTY4LjY4NUw0OC45NyA0NzEuMDNDMzMuODUxIDQ4Ni4xNDkgOCA0NzUuNDQxIDggNDU0LjA1OVYzMjBjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVN5bmMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjY1IDEyLjU3bDQgODIuNzdBMjQ3LjE2IDI0Ny4xNiAwIDAgMCAyNTUuODMgOEMxMzQuNzMgOCAzMy45MSA5NC45MiAxMi4yOSAyMDkuODJBMTIgMTIgMCAwIDAgMjQuMDkgMjI0aDQ5LjA1YTEyIDEyIDAgMCAwIDExLjY3LTkuMjYgMTc1LjkxIDE3NS45MSAwIDAgMSAzMTctNTYuOTRsLTEwMS40Ni00Ljg2YTEyIDEyIDAgMCAwLTEyLjU3IDEydjQ3LjQxYTEyIDEyIDAgMCAwIDEyIDEySDUwMGExMiAxMiAwIDAgMCAxMi0xMlYxMmExMiAxMiAwIDAgMC0xMi0xMmgtNDcuMzdhMTIgMTIgMCAwIDAtMTEuOTggMTIuNTd6TTI1NS44MyA0MzJhMTc1LjYxIDE3NS42MSAwIDAgMS0xNDYtNzcuOGwxMDEuOCA0Ljg3YTEyIDEyIDAgMCAwIDEyLjU3LTEydi00Ny40YTEyIDEyIDAgMCAwLTEyLTEySDEyYTEyIDEyIDAgMCAwLTEyIDEyVjUwMGExMiAxMiAwIDAgMCAxMiAxMmg0Ny4zNWExMiAxMiAwIDAgMCAxMi0xMi42bC00LjE1LTgyLjU3QTI0Ny4xNyAyNDcuMTcgMCAwIDAgMjU1LjgzIDUwNGMxMjEuMTEgMCAyMjEuOTMtODYuOTIgMjQzLjU1LTIwMS44MmExMiAxMiAwIDAgMC0xMS44LTE0LjE4aC00OS4wNWExMiAxMiAwIDAgMC0xMS42NyA5LjI2QTE3NS44NiAxNzUuODYgMCAwIDEgMjU1LjgzIDQzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFTeXJpbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMS41IDE3NC44bDU1LjcgNTUuOGMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTU1LjctNTUuOC00NS4zIDQ1LjMgNTUuOCA1NS44YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwxMTEgMjY1LjJsLTI2LjQgMjYuNGMtMTcuMyAxNy4zLTI1LjYgNDEuMS0yMyA2NS40bDcuMSA2My42TDIuMyA0ODdjLTMuMSAzLjEtMy4xIDguMiAwIDExLjNsMTEuMyAxMS4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsNjYuMy02Ni4zIDYzLjYgNy4xYzIzLjkgMi42IDQ3LjktNS40IDY1LjQtMjNsMTgxLjktMTgxLjktMTM1LjctMTM1LjctNjQuOSA2NXptMzA4LjItOTMuM0w0MzAuNSAyLjNjLTMuMS0zLjEtOC4yLTMuMS0xMS4zIDBsLTExLjMgMTEuM2MtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wyOC4zIDI4LjMtNDUuMyA0NS4zLTU2LjYtNTYuNi0xNy0xN2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMzMuOSAzMy45Yy0zLjEgMy4xLTMuMSA4LjIgMCAxMS4zbDE3IDE3TDQyNC44IDIyM2wxNyAxN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDMzLjktMzRjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM2wtNzMuNS03My41IDQ1LjMtNDUuMyAyOC4zIDI4LjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwxMS4zLTExLjNjMy4xLTMuMiAzLjEtOC4yIDAtMTEuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZVRlbm5pcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYuMiAyOTYuNUM1MjcuNyAyMTguNyA1MTIgMTI2LjIgNDQ5IDYzLjEgMzY1LjEtMjEgMjI5LTIxIDE0NS4xIDYzLjFsLTU2IDU2LjEgMjExLjUgMjExLjVjNDYuMS02Mi4xIDEzMS41LTc3LjQgMTk1LjYtMzQuMnptLTIxNy45IDc5LjdMNTcuOSAxNTUuOWMtMjcuMyA0NS4zLTIxLjcgMTA1IDE3LjMgMTQ0LjFsMzQuNSAzNC42TDYuNyA0MjRjLTguNiA3LjUtOS4xIDIwLjctMSAyOC44bDUzLjQgNTMuNWM4IDguMSAyMS4yIDcuNiAyOC43LTFMMTc3LjEgNDAybDM1LjcgMzUuN2MxOS43IDE5LjcgNDQuNiAzMC41IDcwLjMgMzMuMy03LjEtMTctMTEtMzUuNi0xMS01NS4xLS4xLTEzLjggMi41LTI3IDYuMi0zOS43ek00MTYgMzIwYy01MyAwLTk2IDQzLTk2IDk2czQzIDk2IDk2IDk2IDk2LTQzIDk2LTk2LTQzLTk2LTk2LTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHpNMjI0IDQxNkg2NHYtOTZoMTYwdjk2em0wLTE2MEg2NHYtOTZoMTYwdjk2em0yMjQgMTYwSDI4OHYtOTZoMTYwdjk2em0wLTE2MEgyODh2LTk2aDE2MHY5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyNCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0xNzYtMTA4YzAgNi42LTUuNCAxMi0xMiAxMkg2MGMtNi42IDAtMTItNS40LTEyLTEyVjYwYzAtNi42IDUuNC0xMiAxMi0xMmgzMjhjNi42IDAgMTIgNS40IDEyIDEydjMxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWJsZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDBINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6TTIyNCA0ODBjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhYmxldHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYwIDE5MkM3OC45IDE5MiAxMi41IDI1MC41LjEgMzI2LjdjLS44IDQuOCAzLjMgOS4zIDguMyA5LjNoMzAzLjNjNSAwIDkuMS00LjUgOC4zLTkuM0MzMDcuNSAyNTAuNSAyNDEuMSAxOTIgMTYwIDE5MnptMTUxLjYgMTc2SDguNGMtNSAwLTkuMSA0LjUtOC4zIDkuM0MxMi41IDQ1My41IDc4LjkgNTEyIDE2MCA1MTJzMTQ3LjUtNTguNSAxNTkuOS0xMzQuN2MuOC00LjgtMy4zLTkuMy04LjMtOS4zek01OTMuNCA0Ni42Yy01Ni41LTU2LjUtMTQ0LjItNjEuNC0yMDYuOS0xNi00IDIuOS00LjMgOC45LS44IDEyLjNMNTk3IDI1NC4zYzMuNSAzLjUgOS41IDMuMiAxMi4zLS44IDQ1LjUtNjIuNyA0MC42LTE1MC40LTE1LjktMjA2Ljl6TTM2MyA2NS43Yy0zLjUtMy41LTkuNS0zLjItMTIuMy44LTQ1LjQgNjIuNy00MC41IDE1MC40IDE1LjkgMjA2LjkgNTYuNSA1Ni41IDE0NC4yIDYxLjQgMjA2LjkgMTUuOSA0LTIuOSA0LjMtOC45LjgtMTIuM0wzNjMgNjUuN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYWNob21ldGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAzMkMxMjguOTQgMzIgMCAxNjAuOTQgMCAzMjBjMCA1Mi44IDE0LjI1IDEwMi4yNiAzOS4wNiAxNDQuOCA1LjYxIDkuNjIgMTYuMyAxNS4yIDI3LjQ0IDE1LjJoNDQzYzExLjE0IDAgMjEuODMtNS41OCAyNy40NC0xNS4yQzU2MS43NSA0MjIuMjYgNTc2IDM3Mi44IDU3NiAzMjBjMC0xNTkuMDYtMTI4Ljk0LTI4OC0yODgtMjg4em0wIDY0YzE0LjcxIDAgMjYuNTggMTAuMTMgMzAuMzIgMjMuNjUtMS4xMSAyLjI2LTIuNjQgNC4yMy0zLjQ1IDYuNjdsLTkuMjIgMjcuNjdjLTUuMTMgMy40OS0xMC45NyA2LjAxLTE3LjY0IDYuMDEtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMlMyNzAuMzMgOTYgMjg4IDk2ek05NiAzODRjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTQ4LTE2MGMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjQ2Ljc3LTcyLjQxbC02MS4zMyAxODRDMzQzLjEzIDM0Ny4zMyAzNTIgMzY0LjU0IDM1MiAzODRjMCAxMS43Mi0zLjM4IDIyLjU1LTguODggMzJIMjMyLjg4Yy01LjUtOS40NS04Ljg4LTIwLjI4LTguODgtMzIgMC0zMy45NCAyNi41LTYxLjQzIDU5LjktNjMuNTlsNjEuMzQtMTg0LjAxYzQuMTctMTIuNTYgMTcuNzMtMTkuNDUgMzAuMzYtMTUuMTcgMTIuNTcgNC4xOSAxOS4zNSAxNy43OSAxNS4xNyAzMC4zNnptMTQuNjYgNTcuMmwxNS41Mi00Ni41NWMzLjQ3LTEuMjkgNy4xMy0yLjIzIDExLjA1LTIuMjMgMTcuNjcgMCAzMiAxNC4zMyAzMiAzMnMtMTQuMzMgMzItMzIgMzJjLTExLjM4LS4wMS0yMC44OS02LjI4LTI2LjU3LTE1LjIyek00ODAgMzg0Yy0xNy42NyAwLTMyLTE0LjMzLTMyLTMyczE0LjMzLTMyIDMyLTMyIDMyIDE0LjMzIDMyIDMyLTE0LjMzIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDI1Mi4xMThWNDhDMCAyMS40OSAyMS40OSAwIDQ4IDBoMjA0LjExOGE0OCA0OCAwIDAgMSAzMy45NDEgMTQuMDU5bDIxMS44ODIgMjExLjg4MmMxOC43NDUgMTguNzQ1IDE4Ljc0NSA0OS4xMzcgMCA2Ny44ODJMMjkzLjgyMyA0OTcuOTQxYy0xOC43NDUgMTguNzQ1LTQ5LjEzNyAxOC43NDUtNjcuODgyIDBMMTQuMDU5IDI4Ni4wNTlBNDggNDggMCAwIDEgMCAyNTIuMTE4ek0xMTIgNjRjLTI2LjUxIDAtNDggMjEuNDktNDggNDhzMjEuNDkgNDggNDggNDggNDgtMjEuNDkgNDgtNDgtMjEuNDktNDgtNDgtNDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGFncyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTcuOTQxIDIyNS45NDFMMjg2LjA1OSAxNC4wNTlBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djIwNC4xMThhNDggNDggMCAwIDAgMTQuMDU5IDMzLjk0MWwyMTEuODgyIDIxMS44ODJjMTguNzQ0IDE4Ljc0NSA0OS4xMzYgMTguNzQ2IDY3Ljg4MiAwbDIwNC4xMTgtMjA0LjExOGMxOC43NDUtMTguNzQ1IDE4Ljc0NS00OS4xMzcgMC02Ny44ODJ6TTExMiAxNjBjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTUxMy45NDEgMTMzLjgyM0w0MjEuODIzIDQ5Ny45NDFjLTE4Ljc0NSAxOC43NDUtNDkuMTM3IDE4Ljc0NS02Ny44ODIgMGwtLjM2LS4zNkw1MjcuNjQgMzIzLjUyMmMxNi45OTktMTYuOTk5IDI2LjM2LTM5LjYgMjYuMzYtNjMuNjRzLTkuMzYyLTQ2LjY0MS0yNi4zNi02My42NEwzMzEuMzk3IDBoNDguNzIxYTQ4IDQ4IDAgMCAxIDMzLjk0MSAxNC4wNTlsMjExLjg4MiAyMTEuODgyYzE4Ljc0NSAxOC43NDUgMTguNzQ1IDQ5LjEzNyAwIDY3Ljg4MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXBlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAxOTJjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0em00MDAgMjI0SDM4MC42YzQxLjUtNDAuNyA2Ny40LTk3LjMgNjcuNC0xNjAgMC0xMjMuNy0xMDAuMy0yMjQtMjI0LTIyNFMwIDEzMi4zIDAgMjU2czEwMC4zIDIyNCAyMjQgMjI0aDQwMGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMC02NGMtNTMgMC05Ni00My05Ni05NnM0My05NiA5Ni05NiA5NiA0MyA5NiA5Ni00MyA5Ni05NiA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXNrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMzkuNjEgMzUuNWExMiAxMiAwIDAgMC0xNyAwTDU4LjkzIDk4LjgxbC0yMi43LTIyLjEyYTEyIDEyIDAgMCAwLTE3IDBMMy41MyA5Mi40MWExMiAxMiAwIDAgMCAwIDE3bDQ3LjU5IDQ3LjRhMTIuNzggMTIuNzggMCAwIDAgMTcuNjEgMGwxNS41OS0xNS42MkwxNTYuNTIgNjlhMTIuMDkgMTIuMDkgMCAwIDAgLjA5LTE3em0wIDE1OS4xOWExMiAxMiAwIDAgMC0xNyAwbC02My42OCA2My43Mi0yMi43LTIyLjFhMTIgMTIgMCAwIDAtMTcgMEwzLjUzIDI1MmExMiAxMiAwIDAgMCAwIDE3TDUxIDMxNi41YTEyLjc3IDEyLjc3IDAgMCAwIDE3LjYgMGwxNS43LTE1LjY5IDcyLjItNzIuMjJhMTIgMTIgMCAwIDAgLjA5LTE2Ljl6TTY0IDM2OGMtMjYuNDkgMC00OC41OSAyMS41LTQ4LjU5IDQ4UzM3LjUzIDQ2NCA2NCA0NjRhNDggNDggMCAwIDAgMC05NnptNDMyIDE2SDIwOGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgyODhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2em0wLTMyMEgyMDhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2VjgwYTE2IDE2IDAgMCAwLTE2LTE2em0wIDE2MEgyMDhhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMjg4YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUYXhpIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2MiAyNDEuNjRsLTIyLTg0Ljg0Yy05LjYtMzUuMi00MS42LTYwLjgtNzYuOC02MC44SDM1MlY2NGMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnYzMmgtMTEuMmMtMzUuMiAwLTY3LjIgMjUuNi03Ni44IDYwLjhsLTIyIDg0Ljg0QzIxLjQxIDI0OC4wNCAwIDI3My40NyAwIDMwNHY0OGMwIDIzLjYzIDEyLjk1IDQ0LjA0IDMyIDU1LjEyVjQ0OGMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTMyaDI1NnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMyYzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTQwLjg4YzE5LjA1LTExLjA5IDMyLTMxLjUgMzItNTUuMTJ2LTQ4YzAtMzAuNTMtMjEuNDEtNTUuOTYtNTAtNjIuMzZ6TTk2IDM1MmMtMTcuNjcgMC0zMi0xNC4zMy0zMi0zMnMxNC4zMy0zMiAzMi0zMiAzMiAxNC4zMyAzMiAzMi0xNC4zMyAzMi0zMiAzMnptMjAuNTUtMTEybDE3LjItNjYuMzZjMi4yMy04LjE2IDkuNTktMTMuNjQgMTUuMDYtMTMuNjRoMjE0LjRjNS40NyAwIDEyLjgzIDUuNDggMTQuODUgMTIuODZMMzk1LjQ1IDI0MGgtMjc4Ljl6TTQxNiAzNTJjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVldGhPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAwSDk2QzQyLjk4IDAgMCA0Mi45OCAwIDk2djY0YzAgMzUuMzUgMjguNjYgNjQgNjQgNjRoNTEyYzM1LjM0IDAgNjQtMjguNjUgNjQtNjRWOTZjMC01My4wMi00Mi45OC05Ni05Ni05NnpNMTYwIDE3NmMwIDguODQtNy4xNiAxNi0xNiAxNkg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2MzJ6bTE0NCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTU2YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2NTZ6bTE0NCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC04MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTU2YzAtMzAuOTMgMjUuMDctNTYgNTYtNTZzNTYgMjUuMDcgNTYgNTZ2NTZ6bTEyOCAwYzAgOC44NC03LjE2IDE2LTE2IDE2aC02NGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTMyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2MzJ6bTAgMTQ0SDY0Yy0zNS4zNCAwLTY0IDI4LjY1LTY0IDY0djMyYzAgNTMuMDIgNDIuOTggOTYgOTYgOTZoNDQ4YzUzLjAyIDAgOTYtNDIuOTggOTYtOTZ2LTMyYzAtMzUuMzUtMjguNjYtNjQtNjQtNjR6bS00MTYgODBjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyem0xNDQtOGMwIDMwLjkzLTI1LjA3IDU2LTU2IDU2cy01Ni0yNS4wNy01Ni01NnYtMjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoODBjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MjR6bTE0NCAwYzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZzLTU2LTI1LjA3LTU2LTU2di0yNGMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYyNHptMTI4IDhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTMyYzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlZXRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU0NCAwSDk2QzQyLjk4IDAgMCA0Mi45OCAwIDk2djMyMGMwIDUzLjAyIDQyLjk4IDk2IDk2IDk2aDQ0OGM1My4wMiAwIDk2LTQyLjk4IDk2LTk2Vjk2YzAtNTMuMDItNDIuOTgtOTYtOTYtOTZ6TTE2MCAzNjhjMCAyNi41MS0yMS40OSA0OC00OCA0OHMtNDgtMjEuNDktNDgtNDh2LTY0YzAtOC44NCA3LjE2LTE2IDE2LTE2aDY0YzguODQgMCAxNiA3LjE2IDE2IDE2djY0em0wLTEyOGMwIDguODQtNy4xNiAxNi0xNiAxNkg4MGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTY0YzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2NjR6bTE0NCAxMjBjMCAzMC45My0yNS4wNyA1Ni01NiA1NnMtNTYtMjUuMDctNTYtNTZ2LTU2YzAtOC44NCA3LjE2LTE2IDE2LTE2aDgwYzguODQgMCAxNiA3LjE2IDE2IDE2djU2em0wLTEyMGMwIDguODQtNy4xNiAxNi0xNiAxNmgtODBjLTguODQgMC0xNi03LjE2LTE2LTE2di04OGMwLTMwLjkzIDI1LjA3LTU2IDU2LTU2czU2IDI1LjA3IDU2IDU2djg4em0xNDQgMTIwYzAgMzAuOTMtMjUuMDcgNTYtNTYgNTZzLTU2LTI1LjA3LTU2LTU2di01NmMwLTguODQgNy4xNi0xNiAxNi0xNmg4MGM4Ljg0IDAgMTYgNy4xNiAxNiAxNnY1NnptMC0xMjBjMCA4Ljg0LTcuMTYgMTYtMTYgMTZoLTgwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnYtODhjMC0zMC45MyAyNS4wNy01NiA1Ni01NnM1NiAyNS4wNyA1NiA1NnY4OHptMTI4IDEyOGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4cy00OC0yMS40OS00OC00OHYtNjRjMC04Ljg0IDcuMTYtMTYgMTYtMTZoNjRjOC44NCAwIDE2IDcuMTYgMTYgMTZ2NjR6bTAtMTI4YzAgOC44NC03LjE2IDE2LTE2IDE2aC02NGMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTY0YzAtMjYuNTEgMjEuNDktNDggNDgtNDhzNDggMjEuNDkgNDggNDh2NjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQxNiAwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMCAxMjhjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzIgMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyem0tMTYwLTE2QzI1NiA1MC4xIDIwNS45IDAgMTQ0IDBTMzIgNTAuMSAzMiAxMTJ2MTY2LjVDMTIuMyAzMDMuMiAwIDMzNCAwIDM2OGMwIDc5LjUgNjQuNSAxNDQgMTQ0IDE0NHMxNDQtNjQuNSAxNDQtMTQ0YzAtMzQtMTIuMy02NC45LTMyLTg5LjVWMTEyek0xNDQgNDQ4Yy00NC4xIDAtODAtMzUuOS04MC04MCAwLTI1LjUgMTIuMi00OC45IDMyLTYzLjhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4czQ4IDIxLjUgNDggNDh2MTkyLjJjMTkuOCAxNC44IDMyIDM4LjMgMzIgNjMuOCAwIDQ0LjEtMzUuOSA4MC04MCA4MHptMTYtMTI1LjFWMTEyYzAtOC44LTcuMi0xNi0xNi0xNnMtMTYgNy4yLTE2IDE2djIxMC45Yy0xOC42IDYuNi0zMiAyNC4yLTMyIDQ1LjEgMCAyNi41IDIxLjUgNDggNDggNDhzNDgtMjEuNSA0OC00OGMwLTIwLjktMTMuNC0zOC41LTMyLTQ1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVtcGVyYXR1cmVMb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDE2IDBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0wIDEyOGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMiAzMiAxNC4zIDMyIDMyLTE0LjMgMzItMzIgMzJ6bS0xNjAtMTZDMjU2IDUwLjEgMjA1LjkgMCAxNDQgMFMzMiA1MC4xIDMyIDExMnYxNjYuNUMxMi4zIDMwMy4yIDAgMzM0IDAgMzY4YzAgNzkuNSA2NC41IDE0NCAxNDQgMTQ0czE0NC02NC41IDE0NC0xNDRjMC0zNC0xMi4zLTY0LjktMzItODkuNVYxMTJ6TTE0NCA0NDhjLTQ0LjEgMC04MC0zNS45LTgwLTgwIDAtMjUuNSAxMi4yLTQ4LjkgMzItNjMuOFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhzNDggMjEuNSA0OCA0OHYxOTIuMmMxOS44IDE0LjggMzIgMzguMyAzMiA2My44IDAgNDQuMS0zNS45IDgwLTgwIDgwem0xNi0xMjUuMVYzMDRjMC04LjgtNy4yLTE2LTE2LTE2cy0xNiA3LjItMTYgMTZ2MTguOWMtMTguNiA2LjYtMzIgMjQuMi0zMiA0NS4xIDAgMjYuNSAyMS41IDQ4IDQ4IDQ4czQ4LTIxLjUgNDgtNDhjMC0yMC45LTEzLjQtMzguNS0zMi00NS4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRlbmdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM3MiAxNjBIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY1NmMwIDYuNiA1LjQgMTIgMTIgMTJoMTQwdjIyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNTZjNi42IDAgMTItNS40IDEyLTEyVjI0MGgxNDBjNi42IDAgMTItNS40IDEyLTEydi01NmMwLTYuNi01LjQtMTItMTItMTJ6bTAtMTI4SDEyQzUuNCAzMiAwIDM3LjQgMCA0NHY1NmMwIDYuNiA1LjQgMTIgMTIgMTJoMzYwYzYuNiAwIDEyLTUuNCAxMi0xMlY0NGMwLTYuNi01LjQtMTItMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU3Ljk4MSAyNzIuOTcxTDYzLjYzOCA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBMNy4wMjkgNDQ0LjY0N2MtOS4zNTctOS4zNTctOS4zNzUtMjQuNTIyLS4wNC0zMy45MDFMMTYxLjAxMSAyNTYgNi45OSAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI1Ny45ODEgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OCAwIDMzLjk0MXpNNjQwIDQ1NnYtMzJjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDMxMmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djMyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRleHRIZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0IDMySDE2QTE2IDE2IDAgMCAwIDAgNDh2OTZhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyaDU2djMwNEg4MGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxNjBhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC00MFYxMTJoNTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoMzJhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6bTI1NiAzMzZoLTQ4VjE0NGg0OGMxNC4zMSAwIDIxLjMzLTE3LjMxIDExLjMxLTI3LjMxbC04MC04MGExNiAxNiAwIDAgMC0yMi42MiAwbC04MCA4MEMzNzkuMzYgMTI2IDM4NC4zNiAxNDQgNDAwIDE0NGg0OHYyMjRoLTQ4Yy0xNC4zMSAwLTIxLjMyIDE3LjMxLTExLjMxIDI3LjMxbDgwIDgwYTE2IDE2IDAgMCAwIDIyLjYyIDBsODAtODBDNTgwLjY0IDM4NiA1NzUuNjQgMzY4IDU2MCAzNjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGV4dFdpZHRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQzMiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djgwYTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2di0xNmgxMjB2MTEyaC0yNGExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgxMjhhMTYgMTYgMCAwIDAgMTYtMTZ2LTMyYTE2IDE2IDAgMCAwLTE2LTE2aC0yNFYxMTJoMTIwdjE2YTE2IDE2IDAgMCAwIDE2IDE2aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjQ4YTE2IDE2IDAgMCAwLTE2LTE2em0tNjguNjkgMjYwLjY5QzM1NCAyODMuMzYgMzM2IDI4OC4zNiAzMzYgMzA0djQ4SDExMnYtNDhjMC0xNC4zMS0xNy4zMS0yMS4zMi0yNy4zMS0xMS4zMWwtODAgODBhMTYgMTYgMCAwIDAgMCAyMi42Mmw4MCA4MEM5NCA0ODQuNjQgMTEyIDQ3OS42NCAxMTIgNDY0di00OGgyMjR2NDhjMCAxNC4zMSAxNy4zMSAyMS4zMyAyNy4zMSAxMS4zMWw4MC04MGExNiAxNiAwIDAgMCAwLTIyLjYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoTGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjk2IDMyaDE5MmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2MTYwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNFY1NmMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjR6bS04MCAwSDI0QzEwLjc0NSAzMiAwIDQyLjc0NSAwIDU2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTAgMjk2djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI5NiAxODRoMTkyYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFYyOTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djE2MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0OS4zMzMgMjE2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0di04MGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRoMTAxLjMzM2MxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR6TTAgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6TTEyNS4zMzMgMzJIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHptODAgNDQ4SDQ4OGMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0em0tMjQtNDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjU2YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR6bTI0IDI2NEg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjA1LjMzM2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDkuMzMzIDU2djgwYzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgyNGMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0VjU2YzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNGgxMDEuMzMzYzEzLjI1NSAwIDI0IDEwLjc0NSAyNCAyNHptMTgxLjMzNCAyNDB2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgyMDUuMzMzYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU2IDAgMjQuMDAxLTEwLjc0NSAyNC4wMDEtMjR6bTMyLTI0MHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0em0tMzIgODBWNTZjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTYgMCAyNC4wMDEtMTAuNzQ1IDI0LjAwMS0yNHptLTIwNS4zMzQgNTZIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTAxLjMzM2MxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjR2LTgwYzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNMCAzNzZ2ODBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwMS4zMzNjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHptMzg2LjY2Ny01Nkg0ODhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0di04MGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMzg2LjY2N2MtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNHptMCAxNjBINDg4YzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDM4Ni42NjdjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHY4MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjR6TTE4MS4zMzMgMzc2djgwYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxMDEuMzMzYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNHYtODBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDIwNS4zMzNjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVhdGVyTWFza3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA2Ljg2IDI0NS4xNWMtMzUuODggMTAuNDUtNTkuOTUgNDEuMi01Ny41MyA3NC4xIDExLjQtMTIuNzIgMjguODEtMjMuNyA0OS45LTMwLjkybDcuNjMtNDMuMTh6TTk1LjgxIDI5NUw2NC4wOCAxMTUuNDljLS4yOS0xLjYyLjI4LTIuNjIuMjQtMi42NSA1Ny43Ni0zMi4wNiAxMjMuMTItNDkuMDEgMTg5LjAxLTQ5LjAxIDEuNjEgMCAzLjIzLjE3IDQuODUuMTkgMTMuOTUtMTMuNDcgMzEuNzMtMjIuODMgNTEuNTktMjYgMTguODktMy4wMiAzOC4wNS00LjU1IDU3LjE4LTUuMzItOS45OS0xMy45NS0yNC40OC0yNC4yMy00MS43Ny0yN0MzMDEuMjcgMS44OSAyNzcuMjQgMCAyNTMuMzIgMCAxNzYuNjYgMCAxMDEuMDIgMTkuNDIgMzMuMiA1Ny4wNiA5LjAzIDcwLjQ4LTMuOTIgOTguNDggMS4wNSAxMjYuNThsMzEuNzMgMTc5LjUxYzE0LjIzIDgwLjUyIDEzNi4zMyAxNDIuMDggMjA0LjQ1IDE0Mi4wOCAzLjU5IDAgNi43NS0uNDYgMTAuMDEtLjgtMTMuNTItMTcuMDgtMjguOTQtNDAuNDgtMzkuNS02Ny41OC00Ny42MS0xMi45OC0xMDYuMDYtNTEuNjItMTExLjkzLTg0Ljc5em05Ny41NS0xMzcuNDZjLS43My00LjEyLTIuMjMtNy44Ny00LjA3LTExLjQtOC4yNSA4LjkxLTIwLjY3IDE1Ljc1LTM1LjMyIDE4LjMyLTE0LjY1IDIuNTgtMjguNjcuNC0zOS40OC01LjE3LS41MiAzLjk0LS42NCA3Ljk4LjA5IDEyLjEgMy44NCAyMS43IDI0LjU4IDM2LjE5IDQ2LjM0IDMyLjM3IDIxLjc1LTMuODIgMzYuMjgtMjQuNTIgMzIuNDQtNDYuMjJ6TTYwNi44IDEyMC45Yy04OC45OC00OS4zOC0xOTEuNDMtNjcuNDEtMjkxLjk4LTUxLjM1LTI3LjMxIDQuMzYtNDkuMDggMjYuMjYtNTQuMDQgNTQuMzZsLTMxLjczIDE3OS41MWMtMTUuMzkgODcuMDUgOTUuMjggMTk2LjI3IDE1OC4zMSAyMDcuMzUgNjMuMDMgMTEuMDkgMjA0LjQ3LTUzLjc5IDIxOS44Ni0xNDAuODRsMzEuNzMtMTc5LjUxYzQuOTctMjguMTEtNy45OC01Ni4xMS0zMi4xNS02OS41MnptLTI3My4yNCA5Ni44YzMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNiAyMS43NiAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEyLTIuMjMgNy44Ny00LjA3IDExLjQtOC4yNS04LjkxLTIwLjY3LTE1Ljc1LTM1LjMyLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTMtMy45NS0uNjUtNy45OS4wOC0xMi4xMXptNzAuNDcgMTk4Ljc2Yy01NS42OC05Ljc5LTkzLjUyLTU5LjI3LTg5LjA0LTExMi45IDIwLjYgMjUuNTQgNTYuMjEgNDYuMTcgOTkuNDkgNTMuNzggNDMuMjggNy42MSA4My44Mi4zNyAxMTEuOTMtMTYuNi0xNC4xOCA1MS45NC02Ni43MSA4NS41MS0xMjIuMzggNzUuNzJ6bTEzMC4zLTE1MS4zNGMtOC4yNS04LjkxLTIwLjY4LTE1Ljc1LTM1LjMzLTE4LjMyLTE0LjY1LTIuNTgtMjguNjctLjQtMzkuNDggNS4xNy0uNTItMy45NC0uNjQtNy45OC4wOS0xMi4xIDMuODQtMjEuNyAyNC41OC0zNi4xOSA0Ni4zNC0zMi4zNyAyMS43NSAzLjgzIDM2LjI4IDI0LjUyIDMyLjQ1IDQ2LjIyLS43MyA0LjEzLTIuMjMgNy44OC00LjA3IDExLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXJFbXB0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMzUuMzQ2IDI4LjY1NC02NCA2NC02NHM2NCAyOC42NTQgNjQgNjR6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlckZ1bGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDk2YzAtNTMuMDE5LTQyLjk4MS05Ni05Ni05NlMzMiA0Mi45ODEgMzIgOTZ2MjAzLjM0N0MxMi4yMjUgMzIxLjc1Ni4xNjYgMzUxLjEzNi4wMDIgMzgzLjMzM2MtLjM1OSA3MC4zMDMgNTYuNzg3IDEyOC4xNzYgMTI3LjA4OSAxMjguNjY0LjI5OS4wMDIuNjEuMDAzLjkwOS4wMDMgNzAuNjk4IDAgMTI4LTU3LjMwNCAxMjgtMTI4IDAtMzIuNDU5LTEyLjA4OC02Mi4wOS0zMi04NC42NTNWOTZ6bS05NiAzNjhsLS41NzYtLjAwMmMtNDMuODYtLjMwNC03OS42NDctMzYuNTQ0LTc5LjQyMy04MC40Mi4xNzMtMzMuOTggMTkuMjY2LTUxLjY1MiAzMS45OTktNjYuMDhWOTZjMC0yNi40NjcgMjEuNTMzLTQ4IDQ4LTQ4czQ4IDIxLjUzMyA0OCA0OHYyMjEuNDk4YzEyLjYzIDE0LjMxMiAzMiAzMi4xNjQgMzIgNjYuNTAyIDAgNDQuMTEyLTM1Ljg4OCA4MC04MCA4MHptNjQtODBjMCAzNS4zNDYtMjguNjU0IDY0LTY0IDY0cy02NC0yOC42NTQtNjQtNjRjMC0yMy42ODUgMTIuODc2LTQ0LjM0OSAzMi01NS40MTdWOTZjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYyMzIuNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjRzLTY0LTI4LjY1NC02NC02NGMwLTIzLjY4NSAxMi44NzYtNDQuMzQ5IDMyLTU1LjQxN1YyMjRjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYxMDQuNTgzYzE5LjEyNCAxMS4wNjggMzIgMzEuNzMyIDMyIDU1LjQxN3ptMzItODQuNjUzYzE5LjkxMiAyMi41NjMgMzIgNTIuMTk0IDMyIDg0LjY1MyAwIDcwLjY5Ni01Ny4zMDMgMTI4LTEyOCAxMjgtLjI5OSAwLS42MDktLjAwMS0uOTA5LS4wMDNDNTYuNzg5IDUxMS41MDktLjM1NyA0NTMuNjM2LjAwMiAzODMuMzMzLjE2NiAzNTEuMTM1IDEyLjIyNSAzMjEuNzU1IDMyIDI5OS4zNDdWOTZjMC01My4wMTkgNDIuOTgxLTk2IDk2LTk2czk2IDQyLjk4MSA5NiA5NnYyMDMuMzQ3ek0yMDggMzg0YzAtMzQuMzM5LTE5LjM3LTUyLjE5LTMyLTY2LjUwMlY5NmMwLTI2LjQ2Ny0yMS41MzMtNDgtNDgtNDhTODAgNjkuNTMzIDgwIDk2djIyMS40OThjLTEyLjczMiAxNC40MjgtMzEuODI1IDMyLjEtMzEuOTk5IDY2LjA4LS4yMjQgNDMuODc2IDM1LjU2MyA4MC4xMTYgNzkuNDIzIDgwLjQyTDEyOCA0NjRjNDQuMTEyIDAgODAtMzUuODg4IDgwLTgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRoZXJtb21ldGVyUXVhcnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMjU2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMzg0YzAgMzUuMzQ2LTI4LjY1NCA2NC02NCA2NHMtNjQtMjguNjU0LTY0LTY0YzAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjI4OGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjQwLjU4M2MxOS4xMjQgMTEuMDY4IDMyIDMxLjczMiAzMiA1NS40MTd6bTMyLTg0LjY1M2MxOS45MTIgMjIuNTYzIDMyIDUyLjE5NCAzMiA4NC42NTMgMCA3MC42OTYtNTcuMzAzIDEyOC0xMjggMTI4LS4yOTkgMC0uNjA5LS4wMDEtLjkwOS0uMDAzQzU2Ljc4OSA1MTEuNTA5LS4zNTcgNDUzLjYzNi4wMDIgMzgzLjMzMy4xNjYgMzUxLjEzNSAxMi4yMjUgMzIxLjc1NSAzMiAyOTkuMzQ3Vjk2YzAtNTMuMDE5IDQyLjk4MS05NiA5Ni05NnM5NiA0Mi45ODEgOTYgOTZ2MjAzLjM0N3pNMjA4IDM4NGMwLTM0LjMzOS0xOS4zNy01Mi4xOS0zMi02Ni41MDJWOTZjMC0yNi40NjctMjEuNTMzLTQ4LTQ4LTQ4UzgwIDY5LjUzMyA4MCA5NnYyMjEuNDk4Yy0xMi43MzIgMTQuNDI4LTMxLjgyNSAzMi4xLTMxLjk5OSA2Ni4wOC0uMjI0IDQzLjg3NiAzNS41NjMgODAuMTE2IDc5LjQyMyA4MC40MkwxMjggNDY0YzQ0LjExMiAwIDgwLTM1Ljg4OCA4MC04MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaGVybW9tZXRlclRocmVlUXVhcnRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTkyIDM4NGMwIDM1LjM0Ni0yOC42NTQgNjQtNjQgNjQtMzUuMzQ2IDAtNjQtMjguNjU0LTY0LTY0IDAtMjMuNjg1IDEyLjg3Ni00NC4zNDkgMzItNTUuNDE3VjE2MGMwLTE3LjY3MyAxNC4zMjctMzIgMzItMzJzMzIgMTQuMzI3IDMyIDMydjE2OC41ODNjMTkuMTI0IDExLjA2OCAzMiAzMS43MzIgMzIgNTUuNDE3em0zMi04NC42NTNjMTkuOTEyIDIyLjU2MyAzMiA1Mi4xOTQgMzIgODQuNjUzIDAgNzAuNjk2LTU3LjMwMyAxMjgtMTI4IDEyOC0uMjk5IDAtLjYwOS0uMDAxLS45MDktLjAwM0M1Ni43ODkgNTExLjUwOS0uMzU3IDQ1My42MzYuMDAyIDM4My4zMzMuMTY2IDM1MS4xMzUgMTIuMjI1IDMyMS43NTUgMzIgMjk5LjM0N1Y5NmMwLTUzLjAxOSA0Mi45ODEtOTYgOTYtOTZzOTYgNDIuOTgxIDk2IDk2djIwMy4zNDd6TTIwOCAzODRjMC0zNC4zMzktMTkuMzctNTIuMTktMzItNjYuNTAyVjk2YzAtMjYuNDY3LTIxLjUzMy00OC00OC00OFM4MCA2OS41MzMgODAgOTZ2MjIxLjQ5OGMtMTIuNzMyIDE0LjQyOC0zMS44MjUgMzIuMS0zMS45OTkgNjYuMDgtLjIyNCA0My44NzYgMzUuNTYzIDgwLjExNiA3OS40MjMgODAuNDJMMTI4IDQ2NGM0NC4xMTIgMCA4MC0zNS44ODggODAtODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGhlcm1vbWV0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc2LjggMjAuNGMtMzcuNS0zMC43LTk1LjUtMjYuMy0xMzEuOSAxMC4ybC00NS43IDQ2IDUwLjUgNTAuNWMzLjEgMy4xIDMuMSA4LjIgMCAxMS4zbC0xMS4zIDExLjNjLTMuMSAzLjEtOC4yIDMuMS0xMS4zIDBsLTUwLjQtNTAuNS00NS4xIDQ1LjQgNTAuMyA1MC40YzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMEwyMDkgMTY3LjRsLTQ1LjEgNDUuNEwyMTQgMjYzYzMuMSAzLjEgMy4xIDguMiAwIDExLjNsLTExLjMgMTEuM2MtMy4xIDMuMS04LjIgMy4xLTExLjMgMGwtNTAuMS01MC4yTDk2IDI4MS4xVjM4Mkw3IDQ3MWMtOS40IDkuNC05LjQgMjQuNiAwIDMzLjkgOS40IDkuNCAyNC42IDkuNCAzMy45IDBsODktODloOTkuOUw0ODQgMTYyLjZjMzQuOS0zNC45IDQyLjItMTAxLjUtNy4yLTE0Mi4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1ic0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA1NnYyNDBjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDgwYzEzLjI1NSAwIDI0LTEwLjc0NSAyNC0yNFY1NmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjRIMjRDMTAuNzQ1IDMyIDAgNDIuNzQ1IDAgNTZ6bTQwIDIwMGMwLTEzLjI1NSAxMC43NDUtMjQgMjQtMjRzMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNC0yNC0xMC43NDUtMjQtMjR6bTI3MiAyNTZjLTIwLjE4MyAwLTI5LjQ4NS0zOS4yOTMtMzMuOTMxLTU3Ljc5NS01LjIwNi0yMS42NjYtMTAuNTg5LTQ0LjA3LTI1LjM5My01OC45MDItMzIuNDY5LTMyLjUyNC00OS41MDMtNzMuOTY3LTg5LjExNy0xMTMuMTExYTExLjk4IDExLjk4IDAgMCAxLTMuNTU4LTguNTIxVjU5LjkwMWMwLTYuNTQxIDUuMjQzLTExLjg3OCAxMS43ODMtMTEuOTk4IDE1LjgzMS0uMjkgMzYuNjk0LTkuMDc5IDUyLjY1MS0xNi4xNzhDMjU2LjE4OSAxNy41OTggMjk1LjcwOS4wMTcgMzQzLjk5NSAwaDIuODQ0YzQyLjc3NyAwIDkzLjM2My40MTMgMTEzLjc3NCAyOS43MzcgOC4zOTIgMTIuMDU3IDEwLjQ0NiAyNy4wMzQgNi4xNDggNDQuNjMyIDE2LjMxMiAxNy4wNTMgMjUuMDYzIDQ4Ljg2MyAxNi4zODIgNzQuNzU3IDE3LjU0NCAyMy40MzIgMTkuMTQzIDU2LjEzMiA5LjMwOCA3OS40NjlsLjExLjExYzExLjg5MyAxMS45NDkgMTkuNTIzIDMxLjI1OSAxOS40MzkgNDkuMTk3LS4xNTYgMzAuMzUyLTI2LjE1NyA1OC4wOTgtNTkuNTUzIDU4LjA5OEgzNTAuNzIzQzM1OC4wMyAzNjQuMzQgMzg0IDM4OC4xMzIgMzg0IDQzMC41NDggMzg0IDUwNCAzMzYgNTEyIDMxMiA1MTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGh1bWJzVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTA0IDIyNEgyNGMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djI0MGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODBjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0OGMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTY0IDQ3MmMtMTMuMjU1IDAtMjQtMTAuNzQ1LTI0LTI0czEwLjc0NS0yNCAyNC0yNCAyNCAxMC43NDUgMjQgMjQtMTAuNzQ1IDI0LTI0IDI0ek0zODQgODEuNDUyYzAgNDIuNDE2LTI1Ljk3IDY2LjIwOC0zMy4yNzcgOTQuNTQ4aDEwMS43MjNjMzMuMzk3IDAgNTkuMzk3IDI3Ljc0NiA1OS41NTMgNTguMDk4LjA4NCAxNy45MzgtNy41NDYgMzcuMjQ5LTE5LjQzOSA0OS4xOTdsLS4xMS4xMWM5LjgzNiAyMy4zMzcgOC4yMzcgNTYuMDM3LTkuMzA4IDc5LjQ2OSA4LjY4MSAyNS44OTUtLjA2OSA1Ny43MDQtMTYuMzgyIDc0Ljc1NyA0LjI5OCAxNy41OTggMi4yNDQgMzIuNTc1LTYuMTQ4IDQ0LjYzMkM0NDAuMjAyIDUxMS41ODcgMzg5LjYxNiA1MTIgMzQ2LjgzOSA1MTJsLTIuODQ1LS4wMDFjLTQ4LjI4Ny0uMDE3LTg3LjgwNi0xNy41OTgtMTE5LjU2LTMxLjcyNS0xNS45NTctNy4wOTktMzYuODIxLTE1Ljg4Ny01Mi42NTEtMTYuMTc4LTYuNTQtLjEyLTExLjc4My01LjQ1Ny0xMS43ODMtMTEuOTk4di0yMTMuNzdjMC0zLjIgMS4yODItNi4yNzEgMy41NTgtOC41MjEgMzkuNjE0LTM5LjE0NCA1Ni42NDgtODAuNTg3IDg5LjExNy0xMTMuMTExIDE0LjgwNC0xNC44MzIgMjAuMTg4LTM3LjIzNiAyNS4zOTMtNTguOTAyQzI4Mi41MTUgMzkuMjkzIDI5MS44MTcgMCAzMTIgMGMyNCAwIDcyIDggNzIgODEuNDUyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRodW1idGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTguMDI4IDIxNC4yNjdMMjg1Ljc5MyA5NkgzMjhjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjI0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEg1NkM0Mi43NDUgMCAzMiAxMC43NDUgMzIgMjR2NDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDQyLjIwN0w4NS45NzIgMjE0LjI2N0MzNy40NjUgMjM2LjgyIDAgMjc3LjI2MSAwIDMyOGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTM2djEwNC4wMDdjMCAxLjI0Mi4yODkgMi40NjcuODQ1IDMuNTc4bDI0IDQ4YzIuOTQxIDUuODgyIDExLjM2NCA1Ljg5MyAxNC4zMTEgMGwyNC00OGE4LjAwOCA4LjAwOCAwIDAgMCAuODQ1LTMuNTc4VjM1MmgxMzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0LS4wMDEtNTEuMTgzLTM3Ljk4My05MS40Mi04NS45NzMtMTEzLjczM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUaWNrZXRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDE2MGgzMjB2MTkySDEyOFYxNjB6bTQwMCA5NmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4djk2YzAgMjYuNTEtMjEuNDkgNDgtNDggNDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDh2LTk2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhzLTIxLjQ5LTQ4LTQ4LTQ4di05NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQ4MGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djk2Yy0yNi41MSAwLTQ4IDIxLjQ5LTQ4IDQ4em0tNDgtMTA0YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNEgxMjBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYyMDhjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDMzNmMxMy4yNTUgMCAyNC0xMC43NDUgMjQtMjRWMTUyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbWVzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTEyMS42IDMxMy4xYzQuNyA0LjcgNC43IDEyLjMgMCAxN0wzMzggMzc3LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMzEybC02NS4xIDY1LjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwxMzQuNCAzMzhjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2NS42LTY1LTY1LjYtNjUuMWMtNC43LTQuNy00LjctMTIuMyAwLTE3bDM5LjYtMzkuNmM0LjctNC43IDEyLjMtNC43IDE3IDBsNjUgNjUuNyA2NS4xLTY1LjZjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDM5LjYgMzkuNmM0LjcgNC43IDQuNyAxMi4zIDAgMTdMMzEyIDI1Nmw2NS42IDY1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQyLjcyIDI1NmwxMDAuMDctMTAwLjA3YzEyLjI4LTEyLjI4IDEyLjI4LTMyLjE5IDAtNDQuNDhsLTIyLjI0LTIyLjI0Yy0xMi4yOC0xMi4yOC0zMi4xOS0xMi4yOC00NC40OCAwTDE3NiAxODkuMjggNzUuOTMgODkuMjFjLTEyLjI4LTEyLjI4LTMyLjE5LTEyLjI4LTQ0LjQ4IDBMOS4yMSAxMTEuNDVjLTEyLjI4IDEyLjI4LTEyLjI4IDMyLjE5IDAgNDQuNDhMMTA5LjI4IDI1NiA5LjIxIDM1Ni4wN2MtMTIuMjggMTIuMjgtMTIuMjggMzIuMTkgMCA0NC40OGwyMi4yNCAyMi4yNGMxMi4yOCAxMi4yOCAzMi4yIDEyLjI4IDQ0LjQ4IDBMMTc2IDMyMi43MmwxMDAuMDcgMTAwLjA3YzEyLjI4IDEyLjI4IDMyLjIgMTIuMjggNDQuNDggMGwyMi4yNC0yMi4yNGMxMi4yOC0xMi4yOCAxMi4yOC0zMi4xOSAwLTQ0LjQ4TDI0Mi43MiAyNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGludFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44MiA0NTguMUw0OTQuOTcgMzUwLjc4Yy41Mi01LjU3IDEuMDMtMTEuMTYgMS4wMy0xNi44NyAwLTExMS43Ni05OS43OS0xNTMuMzQtMTQ2Ljc4LTMxMS44Mi03Ljk0LTI4Ljc4LTQ5LjQ0LTMwLjEyLTU4LjQ0IDAtMTUuNTIgNTIuMzQtMzYuODcgOTEuOTYtNTguNDkgMTI1LjY4TDQ1LjQ3IDMuMzdDMzguNDktMi4wNSAyOC40My0uOCAyMy4wMSA2LjE4TDMuMzcgMzEuNDVDLTIuMDUgMzguNDItLjggNDguNDcgNi4xOCA1My45bDU4OC4zNiA0NTQuNzNjNi45OCA1LjQzIDE3LjAzIDQuMTcgMjIuNDYtMi44MWwxOS42NC0yNS4yN2M1LjQxLTYuOTcgNC4xNi0xNy4wMi0yLjgyLTIyLjQ1ek0xNDQgMzMzLjkxQzE0NCA0MzIuMzUgMjIyLjcyIDUxMiAzMjAgNTEyYzQ0LjcxIDAgODUuMzctMTYuOTYgMTE2LjQtNDQuN0wxNjIuNzIgMjU1Ljc4Yy0xMS40MSAyMy41LTE4LjcyIDQ4LjM1LTE4LjcyIDc4LjEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRpbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM1MiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA1LjIyIDIyLjA5Yy03Ljk0LTI4Ljc4LTQ5LjQ0LTMwLjEyLTU4LjQ0IDBDMTAwLjAxIDE3OS44NSAwIDIyMi43MiAwIDMzMy45MSAwIDQzMi4zNSA3OC43MiA1MTIgMTc2IDUxMnMxNzYtNzkuNjUgMTc2LTE3OC4wOWMwLTExMS43NS05OS43OS0xNTMuMzQtMTQ2Ljc4LTMxMS44MnpNMTc2IDQ0OGMtNjEuNzUgMC0xMTItNTAuMjUtMTEyLTExMiAwLTguODQgNy4xNi0xNiAxNi0xNnMxNiA3LjE2IDE2IDE2YzAgNDQuMTEgMzUuODkgODAgODAgODAgOC44NCAwIDE2IDcuMTYgMTYgMTZzLTcuMTYgMTYtMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVGlyZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMzMuOCAxODkuN2w4MC00OGMxMS42LTYuOSAyNCA3LjcgMTUuNCAxOEwzNDMuNiAyMDhsMzMuNiA0MC4zYzguNyAxMC40LTMuOSAyNC44LTE1LjQgMThsLTgwLTQ4Yy03LjctNC43LTcuNy0xNS45IDAtMjAuNnptLTE2My0zMGMtOC42LTEwLjMgMy44LTI0LjkgMTUuNC0xOGw4MCA0OGM3LjggNC43IDcuOCAxNS45IDAgMjAuNmwtODAgNDhjLTExLjUgNi44LTI0LTcuNi0xNS40LTE4bDMzLjYtNDAuMy0zMy42LTQwLjN6TTI0OCAyODhjNTEuOSAwIDExNS4zIDQzLjggMTIzLjIgMTA2LjcgMS43IDEzLjYtOCAyNC42LTE3LjcgMjAuNC0yNS45LTExLjEtNjQuNC0xNy40LTEwNS41LTE3LjRzLTc5LjYgNi4zLTEwNS41IDE3LjRjLTkuOCA0LjItMTkuNC03LTE3LjctMjAuNEMxMzIuNyAzMzEuOCAxOTYuMSAyODggMjQ4IDI4OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2dnbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDY0SDE5MkM4NS45NjEgNjQgMCAxNDkuOTYxIDAgMjU2czg1Ljk2MSAxOTIgMTkyIDE5MmgxOTJjMTA2LjAzOSAwIDE5Mi04NS45NjEgMTkyLTE5MlM0OTAuMDM5IDY0IDM4NCA2NHpNNjQgMjU2YzAtNzAuNzQxIDU3LjI0OS0xMjggMTI4LTEyOCA3MC43NDEgMCAxMjggNTcuMjQ5IDEyOCAxMjggMCA3MC43NDEtNTcuMjQ5IDEyOC0xMjggMTI4LTcwLjc0MSAwLTEyOC01Ny4yNDktMTI4LTEyOHptMzIwIDEyOGgtNDguOTA1YzY1LjIxNy03Mi44NTggNjUuMjM2LTE4My4xMiAwLTI1NkgzODRjNzAuNzQxIDAgMTI4IDU3LjI0OSAxMjggMTI4IDAgNzAuNzQtNTcuMjQ5IDEyOC0xMjggMTI4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvZ2dsZU9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM4NCA2NEgxOTJDODYgNjQgMCAxNTAgMCAyNTZzODYgMTkyIDE5MiAxOTJoMTkyYzEwNiAwIDE5Mi04NiAxOTItMTkyUzQ5MCA2NCAzODQgNjR6bTAgMzIwYy03MC44IDAtMTI4LTU3LjMtMTI4LTEyOCAwLTcwLjggNTcuMy0xMjggMTI4LTEyOCA3MC44IDAgMTI4IDU3LjMgMTI4IDEyOCAwIDcwLjgtNTcuMyAxMjgtMTI4IDEyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb2lsZXRQYXBlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTY0LDE5MlYzNjQuMTNjMCw0MS4xMi05Ljc1LDYyLjc1LTMxLjEyLDEyNi44N0ExNiwxNiwwLDAsMCw0OCw1MTJIMzI4Ljg2YTMxLjg3LDMxLjg3LDAsMCwwLDMwLjM4LTIxLjg3YzkuMzEtMjcuODMsMTgtNTMuMzUsMjIuMTgtODUuNTVsLTMxNi0yNDQuMjVDNjQuNTMsMTcwLjY2LDY0LDE4MS4xOSw2NCwxOTJaTTYzMy44Miw0NTguMDlsLTEwMi03OC44MUM1NzUuMjgsMzYwLjkxLDYwOCwyODQuMzIsNjA4LDE5Miw2MDgsODYsNTY1LDAsNTEyLDBzLTk2LDg2LTk2LDE5MmMwLDQyLDcsODAuNCwxOC40MywxMTJMMzg0LDI2NVYxOTJjMC04My42MiwyMy42My0xNTMuNSw2MC41LTE5MkgxNjBjLTIzLjMzLDAtNDQuNjMsMTYuODMtNjEuMjYsNDQuNTNMNDUuNDYsMy4zOEExNiwxNiwwLDAsMCwyMyw2LjE5TDMuMzcsMzEuNDVBMTYsMTYsMCwwLDAsNi4xOCw1My45MUw1OTQuNTQsNTA4LjYzQTE2LDE2LDAsMCwwLDYxNyw1MDUuODFsMTkuNjQtMjUuMjZBMTYsMTYsMCwwLDAsNjMzLjgyLDQ1OC4wOVpNNTEyLDI1NmMtMTcuNjMsMC0zMi0yOC42Mi0zMi02NHMxNC4zNy02NCwzMi02NCwzMiwyOC42MywzMiw2NFM1MjkuNjIsMjU2LDUxMiwyNTZaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9pbGV0UGFwZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDBDNzQuOTggMCAzMiA4NS45NiAzMiAxOTJ2MTcyLjA3YzAgNDEuMTItOS44IDYyLjc3LTMxLjE3IDEyNi44N0MtMi42MiA1MDEuMyA1LjA5IDUxMiAxNi4wMSA1MTJoMjgwLjkyYzEzLjc3IDAgMjYtOC44MSAzMC4zNi0yMS44OCAxMi44My0zOC40OCAyNC43MS03Mi40IDI0LjcxLTEyNi4wNVYxOTJjMC04My42IDIzLjY3LTE1My41MiA2MC40NC0xOTJIMTI4ek05NiAyMjRjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2em02NCAwYy04Ljg0IDAtMTYtNy4xNi0xNi0xNnM3LjE2LTE2IDE2LTE2IDE2IDcuMTYgMTYgMTYtNy4xNiAxNi0xNiAxNnptNjQgMGMtOC44NCAwLTE2LTcuMTYtMTYtMTZzNy4xNi0xNiAxNi0xNiAxNiA3LjE2IDE2IDE2LTcuMTYgMTYtMTYgMTZ6bTY0IDBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTYgMTYgNy4xNiAxNiAxNi03LjE2IDE2LTE2IDE2ek00ODAgMGMtNTMuMDIgMC05NiA4NS45Ni05NiAxOTJzNDIuOTggMTkyIDk2IDE5MiA5Ni04NS45NiA5Ni0xOTJTNTMzLjAyIDAgNDgwIDB6bTAgMjU2Yy0xNy42NyAwLTMyLTI4LjY1LTMyLTY0czE0LjMzLTY0IDMyLTY0IDMyIDI4LjY1IDMyIDY0LTE0LjMzIDY0LTMyIDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvaWxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjggNDhjOC44IDAgMTYtNy4yIDE2LTE2VjE2YzAtOC44LTcuMi0xNi0xNi0xNkgxNkM3LjIgMCAwIDcuMiAwIDE2djE2YzAgOC44IDcuMiAxNiAxNiAxNmgxNnYxNTYuN0MxMS44IDIxNC44IDAgMjI2LjkgMCAyNDBjMCA2Ny4yIDM0LjYgMTI2LjIgODYuOCAxNjAuNWwtMjEuNCA3MC4yQzU5LjEgNDkxLjIgNzQuNSA1MTIgOTYgNTEyaDE5MmMyMS41IDAgMzYuOS0yMC44IDMwLjYtNDEuM2wtMjEuNC03MC4yQzM0OS40IDM2Ni4yIDM4NCAzMDcuMiAzODQgMjQwYzAtMTMuMS0xMS44LTI1LjItMzItMzUuM1Y0OGgxNnpNODAgNzJjMC00LjQgMy42LTggOC04aDQ4YzQuNCAwIDggMy42IDggOHYxNmMwIDQuNC0zLjYgOC04IDhIODhjLTQuNCAwLTgtMy42LTgtOFY3MnptMTEyIDIwMGMtNzcuMSAwLTEzOS42LTE0LjMtMTM5LjYtMzJzNjIuNS0zMiAxMzkuNi0zMiAxMzkuNiAxNC4zIDEzOS42IDMyLTYyLjUgMzItMTM5LjYgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVG9vbGJveCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDIuNjMgMjE0LjYzbC00NS4yNS00NS4yNWMtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0gzODRWODBjMC0yNi41MS0yMS40OS00OC00OC00OEgxNzZjLTI2LjUxIDAtNDggMjEuNDktNDggNDh2ODBINzcuMjVjLTguNDkgMC0xNi42MiAzLjM3LTIyLjYzIDkuMzdMOS4zNyAyMTQuNjNjLTYgNi05LjM3IDE0LjE0LTkuMzcgMjIuNjNWMzIwaDEyOHYtMTZjMC04Ljg0IDcuMTYtMTYgMTYtMTZoMzJjOC44NCAwIDE2IDcuMTYgMTYgMTZ2MTZoMTI4di0xNmMwLTguODQgNy4xNi0xNiAxNi0xNmgzMmM4Ljg0IDAgMTYgNy4xNiAxNiAxNnYxNmgxMjh2LTgyLjc1YzAtOC40OC0zLjM3LTE2LjYyLTkuMzctMjIuNjJ6TTMyMCAxNjBIMTkyVjk2aDEyOHY2NHptNjQgMjA4YzAgOC44NC03LjE2IDE2LTE2IDE2aC0zMmMtOC44NCAwLTE2LTcuMTYtMTYtMTZ2LTE2SDE5MnYxNmMwIDguODQtNy4xNiAxNi0xNiAxNmgtMzJjLTguODQgMC0xNi03LjE2LTE2LTE2di0xNkgwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDQ4YzE3LjY3IDAgMzItMTQuMzMgMzItMzJ2LTk2SDM4NHYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb29scyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDEuMSAzOTUuN0wzODQgMjc4LjZjLTIzLjEtMjMuMS01Ny42LTI3LjYtODUuNC0xMy45TDE5MiAxNTguMVY5Nkw2NCAwIDAgNjRsOTYgMTI4aDYyLjFsMTA2LjYgMTA2LjZjLTEzLjYgMjcuOC05LjIgNjIuMyAxMy45IDg1LjRsMTE3LjEgMTE3LjFjMTQuNiAxNC42IDM4LjIgMTQuNiA1Mi43IDBsNTIuNy01Mi43YzE0LjUtMTQuNiAxNC41LTM4LjIgMC01Mi43ek0zMzEuNyAyMjVjMjguMyAwIDU0LjkgMTEgNzQuOSAzMWwxOS40IDE5LjRjMTUuOC02LjkgMzAuOC0xNi41IDQzLjgtMjkuNSAzNy4xLTM3LjEgNDkuNy04OS4zIDM3LjktMTM2LjctMi4yLTktMTMuNS0xMi4xLTIwLjEtNS41bC03NC40IDc0LjQtNjcuOS0xMS4zTDMzNCA5OC45bDc0LjQtNzQuNGM2LjYtNi42IDMuNC0xNy45LTUuNy0yMC4yLTQ3LjQtMTEuNy05OS42LjktMTM2LjYgMzcuOS0yOC41IDI4LjUtNDEuOSA2Ni4xLTQxLjIgMTAzLjZsODIuMSA4Mi4xYzguMS0xLjkgMTYuNS0yLjkgMjQuNy0yLjl6bS0xMDMuOSA4MmwtNTYuNy01Ni43TDE4LjcgNDAyLjhjLTI1IDI1LTI1IDY1LjUgMCA5MC41czY1LjUgMjUgOTAuNSAwbDEyMy42LTEyMy42Yy03LjYtMTkuOS05LjktNDEuNi01LTYyLjd6TTY0IDQ3MmMtMTMuMiAwLTI0LTEwLjgtMjQtMjQgMC0xMy4zIDEwLjctMjQgMjQtMjRzMjQgMTAuNyAyNCAyNGMwIDEzLjItMTAuNyAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUb290aCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDMuOTggOTYuMjVjLTExLjAxLTQ1LjIyLTQ3LjExLTgyLjA2LTkyLjAxLTkzLjcyLTMyLjE5LTguMzYtNjMgNS4xLTg5LjE0IDI0LjMzLTMuMjUgMi4zOS02Ljk2IDMuNzMtMTAuNSA1LjQ4bDI4LjMyIDE4LjIxYzcuNDIgNC43NyA5LjU4IDE0LjY3IDQuOCAyMi4xMS00LjQ2IDYuOTUtMTQuMjcgOS44Ni0yMi4xMSA0LjhMMTYyLjgzIDEyLjg0Yy0yMC43LTEwLjg1LTQzLjM4LTE2LjQtNjYuODEtMTAuMzEtNDQuOSAxMS42Ny04MSA0OC41LTkyLjAxIDkzLjcyLTEwLjEzIDQxLjYyLS40MiA4MC44MSAyMS41IDExMC40MyAyMy4zNiAzMS41NyAzMi42OCA2OC42NiAzNi4yOSAxMDcuMzUgNC40IDQ3LjE2IDEwLjMzIDk0LjE2IDIwLjk0IDE0MC4zMmw3LjggMzMuOTVjMy4xOSAxMy44NyAxNS40OSAyMy43IDI5LjY3IDIzLjcgMTMuOTcgMCAyNi4xNS05LjU1IDI5LjU0LTIzLjE2bDM0LjQ3LTEzOC40MmM0LjU2LTE4LjMyIDIwLjk2LTMxLjE2IDM5Ljc2LTMxLjE2czM1LjIgMTIuODUgMzkuNzYgMzEuMTZsMzQuNDcgMTM4LjQyYzMuMzkgMTMuNjEgMTUuNTcgMjMuMTYgMjkuNTQgMjMuMTYgMTQuMTggMCAyNi40OC05LjgzIDI5LjY3LTIzLjdsNy44LTMzLjk1YzEwLjYxLTQ2LjE1IDE2LjUzLTkzLjE2IDIwLjk0LTE0MC4zMiAzLjYxLTM4LjcgMTIuOTMtNzUuNzggMzYuMjktMTA3LjM1IDIxLjk1LTI5LjYxIDMxLjY2LTY4LjggMjEuNTMtMTEwLjQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmFoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyMC4wNSAzNjYuNDhsMTcuNzItMjkuNjRoLTM1LjQ2em05OS4yMS0xNjZIMzgyLjRsMTguNDYgMzAuODJ6TTQ4IDBDMjEuNDkgMCAwIDE0LjMzIDAgMzJ2NDQ4YzAgMTcuNjcgMjEuNDkgMzIgNDggMzJzNDgtMTQuMzMgNDgtMzJWMzJDOTYgMTQuMzMgNzQuNTEgMCA0OCAwem0xNzIuNzQgMzExLjVoMzYuODVsLTE4LjQ2LTMwLjgyem0xNjEuNzEgMGgzNi44NmwtMTguNDUtMzAuOHpNMTI4IDQ2NGgzODRWNDhIMTI4em02Ni43Ny0yNzguMTNhMjEuMjIgMjEuMjIgMCAwIDEgMTguNDgtMTAuNzFoNTkuNDVsMjkuMTMtNDguNzFhMjEuMTMgMjEuMTMgMCAwIDEgMTguMjItMTAuMzdBMjAuNzYgMjAuNzYgMCAwIDEgMzM4IDEyNi4yOWwyOS4yNSA0OC44Nmg1OS41MmEyMS4xMiAyMS4xMiAwIDAgMSAxOC4xIDMyTDQxNS42MyAyNTYgNDQ1IDMwNWEyMC42OSAyMC42OSAwIDAgMSAuMjQgMjEuMTIgMjEuMjUgMjEuMjUgMCAwIDEtMTguNDggMTAuNzJoLTU5LjQ3bC0yOS4xMyA0OC43YTIxLjEzIDIxLjEzIDAgMCAxLTE4LjE2IDEwLjQgMjAuNzkgMjAuNzkgMCAwIDEtMTgtMTAuMjJsLTI5LjI1LTQ4Ljg4aC01OS41YTIxLjExIDIxLjExIDAgMCAxLTE4LjEtMzJMMjI0LjM2IDI1NiAxOTUgMjA3YTIwLjcgMjAuNyAwIDAgMS0uMjMtMjEuMTN6TTU5MiAwYy0yNi41MSAwLTQ4IDE0LjMzLTQ4IDMydjQ0OGMwIDE3LjY3IDIxLjQ5IDMyIDQ4IDMyczQ4LTE0LjMzIDQ4LTMyVjMyYzAtMTcuNjctMjEuNDktMzItNDgtMzJ6TTMyMCAxNDUuNTNsLTE3Ljc4IDI5LjYyaDM1LjQ2em0tNjIuNDUgNTVoLTM2LjgxbDE4LjQ0IDMwLjh6bTI5LjU4IDExMWg2NS43OUwzODYuMDkgMjU2bC0zMy4yMy01NS41MmgtNjUuNzlMMjUzLjkgMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRvcmlpR2F0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzYuNDUgMzJoLTI0MC45QTMwMy4xNyAzMDMuMTcgMCAwIDEgMCAwdjk2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMzJ2NjRIMTZjLTguODQgMC0xNiA3LjE2LTE2IDE2djMyYzAgOC44NCA3LjE2IDE2IDE2IDE2aDQ4djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoMjU2djI0MGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNlYyNTZoNDhjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2aC00OHYtNjRoMzJjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlYwYTMwMy4xNyAzMDMuMTcgMCAwIDEtMTM1LjU1IDMyek0xMjggMTI4aDk2djY0aC05NnYtNjR6bTI1NiA2NGgtOTZ2LTY0aDk2djY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWN0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTI4IDMzNmMtNDguNiAwLTg4IDM5LjQtODggODhzMzkuNCA4OCA4OCA4OCA4OC0zOS40IDg4LTg4LTM5LjQtODgtODgtODh6bTAgMTEyYy0xMy4yMyAwLTI0LTEwLjc3LTI0LTI0czEwLjc3LTI0IDI0LTI0IDI0IDEwLjc3IDI0IDI0LTEwLjc3IDI0LTI0IDI0em04MC0yODhoLTY0di00MC4yYzAtMTQuMTIgNC43LTI3Ljc2IDEzLjE1LTM4Ljg0IDQuNDItNS44IDMuNTUtMTQuMDYtMS4zMi0xOS40OUw1MzQuMiAzNy4zYy02LjY2LTcuNDUtMTguMzItNi45Mi0yNC43Ljc4QzQ5MC41OCA2MC45IDQ4MCA4OS44MSA0ODAgMTE5LjhWMTYwSDM3Ny42N0wzMjEuNTggMjkuMTRBNDcuOTE0IDQ3LjkxNCAwIDAgMCAyNzcuNDUgMEgxNDRjLTI2LjQ3IDAtNDggMjEuNTMtNDggNDh2MTQ2LjUyYy04LjYzLTYuNzMtMjAuOTYtNi40Ni0yOC44OSAxLjQ3TDM2IDIyNy4xYy04LjU5IDguNTktOC41OSAyMi41MiAwIDMxLjExbDUuMDYgNS4wNmMtNC45OSA5LjI2LTguOTYgMTguODItMTEuOTEgMjguNzJIMjJjLTEyLjE1IDAtMjIgOS44NS0yMiAyMnY0NGMwIDEyLjE1IDkuODUgMjIgMjIgMjJoNy4xNGMyLjk2IDkuOTEgNi45MiAxOS40NiAxMS45MSAyOC43M2wtNS4wNiA1LjA2Yy04LjU5IDguNTktOC41OSAyMi41MiAwIDMxLjExTDY3LjEgNDc2YzguNTkgOC41OSAyMi41MiA4LjU5IDMxLjExIDBsNS4wNi01LjA2YzkuMjYgNC45OSAxOC44MiA4Ljk2IDI4LjcyIDExLjkxVjQ5MGMwIDEyLjE1IDkuODUgMjIgMjIgMjJoNDRjMTIuMTUgMCAyMi05Ljg1IDIyLTIydi03LjE0YzkuOS0yLjk1IDE5LjQ2LTYuOTIgMjguNzItMTEuOTFsNS4wNiA1LjA2YzguNTkgOC41OSAyMi41MiA4LjU5IDMxLjExIDBsMzEuMTEtMzEuMTFjOC41OS04LjU5IDguNTktMjIuNTIgMC0zMS4xMWwtNS4wNi01LjA2YzQuOTktOS4yNiA4Ljk2LTE4LjgyIDExLjkxLTI4LjcySDMzMGMxMi4xNSAwIDIyLTkuODUgMjItMjJ2LTZoODAuNTRjMjEuOTEtMjguOTkgNTYuMzItNDggOTUuNDYtNDggMTguNjQgMCAzNi4wNyA0LjYxIDUxLjggMTIuMmw1MC44Mi01MC44MmM2LTYgOS4zNy0xNC4xNCA5LjM3LTIyLjYzVjE5MmMuMDEtMTcuNjctMTQuMzItMzItMzEuOTktMzJ6TTE3NiA0MTZjLTQ0LjE4IDAtODAtMzUuODItODAtODBzMzUuODItODAgODAtODAgODAgMzUuODIgODAgODAtMzUuODIgODAtODAgODB6bTIyLTI1NmgtMzhWNjRoMTA2Ljg5bDQxLjE1IDk2SDE5OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFkZW1hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjYwLjYgOTZIMTJjLTYuNiAwLTEyIDUuNC0xMiAxMnY0My4xYzAgNi42IDUuNCAxMiAxMiAxMmg4NS4xVjQwNGMwIDYuNiA1LjQgMTIgMTIgMTJoNTQuM2M2LjYgMCAxMi01LjQgMTItMTJWMTYzLjFoODUuMWM2LjYgMCAxMi01LjQgMTItMTJWMTA4Yy4xLTYuNi01LjMtMTItMTEuOS0xMnpNNjQwIDQwM2wtMjQtMjk2Yy0uNS02LjItNS43LTExLTEyLTExaC02NS40Yy01LjEgMC05LjcgMy4zLTExLjMgOC4xbC00My44IDEyNy4xYy03LjIgMjAuNi0xNi4xIDUyLjgtMTYuMSA1Mi44aC0uOXMtOC45LTMyLjItMTYuMS01Mi44bC00My44LTEyNy4xYy0xLjctNC44LTYuMi04LjEtMTEuMy04LjFoLTY1LjRjLTYuMiAwLTExLjQgNC44LTEyIDExbC0yNC40IDI5NmMtLjYgNyA0LjkgMTMgMTIgMTNIMzYwYzYuMyAwIDExLjUtNC45IDEyLTExLjJsOS4xLTEzMi45YzEuOC0yNC4yIDAtNTMuNyAwLTUzLjdoLjlzMTAuNyAzMy42IDE3LjkgNTMuN2wzMC43IDg0LjdjMS43IDQuNyA2LjIgNy45IDExLjMgNy45aDUwLjNjNS4xIDAgOS42LTMuMiAxMS4zLTcuOWwzMC43LTg0LjdjNy4yLTIwLjEgMTcuOS01My43IDE3LjktNTMuN2guOXMtMS44IDI5LjUgMCA1My43bDkuMSAxMzIuOWMuNCA2LjMgNS43IDExLjIgMTIgMTEuMkg2MjhjNyAwIDEyLjUtNiAxMi0xM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFmZmljTGlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzg0IDE5MmgtNjR2LTM3Ljg4YzM3LjItMTMuMjIgNjQtNDguMzggNjQtOTAuMTJoLTY0VjMyYzAtMTcuNjctMTQuMzMtMzItMzItMzJIOTZDNzguMzMgMCA2NCAxNC4zMyA2NCAzMnYzMkgwYzAgNDEuNzQgMjYuOCA3Ni45IDY0IDkwLjEyVjE5MkgwYzAgNDEuNzQgMjYuOCA3Ni45IDY0IDkwLjEyVjMyMEgwYzAgNDIuODQgMjguMjUgNzguNjkgNjYuOTkgOTEuMDVDNzkuNDIgNDY4LjcyIDEzMC42IDUxMiAxOTIgNTEyczExMi41OC00My4yOCAxMjUuMDEtMTAwLjk1QzM1NS43NSAzOTguNjkgMzg0IDM2Mi44NCAzODQgMzIwaC02NHYtMzcuODhjMzcuMi0xMy4yMiA2NC00OC4zOCA2NC05MC4xMnpNMTkyIDQxNmMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptMC0xMjhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhzMjEuNDktNDggNDgtNDggNDggMjEuNDkgNDggNDgtMjEuNDkgNDgtNDggNDh6bTAtMTI4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4czIxLjQ5LTQ4IDQ4LTQ4IDQ4IDIxLjQ5IDQ4IDQ4LTIxLjQ5IDQ4LTQ4IDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYWlsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LDMyMEg1NDRWODBhMTYsMTYsMCwwLDAtMTYtMTZIMTZBMTYsMTYsMCwwLDAsMCw4MFYzNjhhMTYsMTYsMCwwLDAsMTYsMTZINjUuNjFjNy44My01NC4yMSw1NC05NiwxMTAuMzktOTZzMTAyLjU2LDQxLjc5LDExMC4zOSw5Nkg2MjRhMTYsMTYsMCwwLDAsMTYtMTZWMzM2QTE2LDE2LDAsMCwwLDYyNCwzMjBaTTk2LDI0My42OGExNzYuMjksMTc2LjI5LDAsMCwwLTMyLDIwLjcxVjEzNmE4LDgsMCwwLDEsOC04SDg4YTgsOCwwLDAsMSw4LDhabTk2LTE4LjU0Yy01LjMxLS40OS0xMC41Ny0xLjE0LTE2LTEuMTRzLTEwLjY5LjY1LTE2LDEuMTRWMTM2YTgsOCwwLDAsMSw4LThoMTZhOCw4LDAsMCwxLDgsOFptOTYsMzkuMjVhMTc2LjI5LDE3Ni4yOSwwLDAsMC0zMi0yMC43MVYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wk0zODQsMzIwSDM1MlYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wm05NiwwSDQ0OFYxMzZhOCw4LDAsMCwxLDgtOGgxNmE4LDgsMCwwLDEsOCw4Wm0tMzA0LDBhODAsODAsMCwxLDAsODAsODBBODAsODAsMCwwLDAsMTc2LDMyMFptMCwxMTJhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTc2LDQzMlpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggOTZ2MjU2YzAgNTEuODE1LTYxLjYyNCA5Ni0xMzAuMDIyIDk2bDYyLjk4IDQ5LjcyMUMzODYuOTA1IDUwMi40MTcgMzgzLjU2MiA1MTIgMzc2IDUxMkg3MmMtNy41NzggMC0xMC44OTItOS41OTQtNC45NTctMTQuMjc5TDEzMC4wMjIgNDQ4QzYxLjgyIDQ0OCAwIDQwMy45NTQgMCAzNTJWOTZDMCA0Mi45ODEgNjQgMCAxMjggMGgxOTJjNjUgMCAxMjggNDIuOTgxIDEyOCA5NnptLTQ4IDEzNlYxMjBjMC0xMy4yNTUtMTAuNzQ1LTI0LTI0LTI0SDcyYy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MTEyYzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgzMDRjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0em0tMTc2IDY0Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggNjRjMTcuNyAwIDMyLTE0LjMgMzItMzJTMzA1LjcgMCAyODggMHMtMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0yMjMuNS0xMi4xYy0yLjMtOC42LTExLTEzLjYtMTkuNi0xMS4zbC00ODAgMTI4Yy04LjUgMi4zLTEzLjYgMTEtMTEuMyAxOS42QzIuNSAxOTUuMyA4LjkgMjAwIDE2IDIwMGMxLjQgMCAyLjgtLjIgNC4xLS41TDI0MCAxNDAuOFYyMjRINjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjIyNGMwIDE3LjcgMTQuMyAzMiAzMiAzMmgzODRjMTcuNyAwIDMyLTE0LjMgMzItMzJWMjU2YzAtMTcuNy0xNC4zLTMyLTMyLTMySDI3MnYtOTEuN2wyMjguMS02MC44YzguNi0yLjMgMTMuNi0xMS4xIDExLjQtMTkuNnpNMTc2IDM4NEg4MHYtOTZoOTZ2OTZ6bTE2MC05Nmg5NnY5NmgtOTZ2LTk2em0tMzIgMHY5NmgtOTZ2LTk2aDk2ek0xOTIgOTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYW5zZ2VuZGVyQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0ODAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2OCAwaC03OWMtMTAuNyAwLTE2IDEyLjktOC41IDIwLjVsMTYuOSAxNi45LTgwLjcgODAuN0MyOTQuNSAxMDQuMSAyNjguMiA5NiAyNDAgOTZjLTI4LjIgMC01NC41IDguMS03Ni43IDIyLjFsLTE2LjUtMTYuNSAxOS44LTE5LjhjNC43LTQuNyA0LjctMTIuMyAwLTE3bC0yOC4zLTI4LjNjLTQuNy00LjctMTIuMy00LjctMTcgMGwtMTkuOCAxOS44LTE5LTE5IDE2LjktMTYuOUMxMDcuMSAxMi45IDEwMS43IDAgOTEgMEgxMkM1LjQgMCAwIDUuNCAwIDEydjc5YzAgMTAuNyAxMi45IDE2IDIwLjUgOC41bDE2LjktMTYuOSAxOSAxOS0xOS44IDE5LjhjLTQuNyA0LjctNC43IDEyLjMgMCAxN2wyOC4zIDI4LjNjNC43IDQuNyAxMi4zIDQuNyAxNyAwbDE5LjgtMTkuOCAxNi41IDE2LjVDMTA0LjEgMTg1LjUgOTYgMjExLjggOTYgMjQwYzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFY0MDhoLTM2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djI4YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTI4aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtMjcuNmM2NC4xLTE0LjYgMTEyLTcxLjkgMTEyLTE0MC40IDAtMjguMi04LjEtNTQuNS0yMi4xLTc2LjdsODAuNy04MC43IDE2LjkgMTYuOWM3LjYgNy42IDIwLjUgMi4yIDIwLjUtOC41VjEyYzAtNi42LTUuNC0xMi0xMi0xMnpNMjQwIDMyMGMtNDQuMSAwLTgwLTM1LjktODAtODBzMzUuOS04MCA4MC04MCA4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJhbnNnZW5kZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcyIDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktODAuNyA4MC43QzE5OC41IDEwNC4xIDE3Mi4yIDk2IDE0NCA5NiA2NC41IDk2IDAgMTYwLjUgMCAyNDBjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwOEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYyOGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0yOGgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTI3LjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDgwLjctODAuNyAxNi45IDE2LjljNy42IDcuNiAyMC41IDIuMiAyMC41LTguNVYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCAzMjBjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyYXNoQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDQ2NGE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4SDMyem0yNzItMjU2YTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6bS05NiAwYTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6bS05NiAwYTE2IDE2IDAgMCAxIDMyIDB2MjI0YTE2IDE2IDAgMCAxLTMyIDB6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaFJlc3RvcmVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIgNDY0YTQ4IDQ4IDAgMCAwIDQ4IDQ4aDI4OGE0OCA0OCAwIDAgMCA0OC00OFYxMjhIMzJ6bTkxLjMxLTE3Mi44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaFJlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTMuMiA0NjdhNDggNDggMCAwIDAgNDcuOSA0NWgyNDUuOGE0OCA0OCAwIDAgMCA0Ny45LTQ1TDQxNiAxMjhIMzJ6bTcwLjExLTE3NS44bDg5LjM4LTk0LjI2YTE1LjQxIDE1LjQxIDAgMCAxIDIyLjYyIDBsODkuMzggOTQuMjZjMTAuMDggMTAuNjIgMi45NCAyOC44LTExLjMyIDI4LjhIMjU2djExMmExNiAxNiAwIDAgMS0xNiAxNmgtMzJhMTYgMTYgMCAwIDEtMTYtMTZWMzIwaC01Ny4zN2MtMTQuMjYgMC0yMS40LTE4LjE4LTExLjMyLTI4Ljh6TTQzMiAzMkgzMTJsLTkuNC0xOC43QTI0IDI0IDAgMCAwIDI4MS4xIDBIMTY2LjhhMjMuNzIgMjMuNzIgMCAwIDAtMjEuNCAxMy4zTDEzNiAzMkgxNkExNiAxNiAwIDAgMCAwIDQ4djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNlY0OGExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcmFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzIgMzJIMzEybC05LjQtMTguN0EyNCAyNCAwIDAgMCAyODEuMSAwSDE2Ni44YTIzLjcyIDIzLjcyIDAgMCAwLTIxLjQgMTMuM0wxMzYgMzJIMTZBMTYgMTYgMCAwIDAgMCA0OHYzMmExNiAxNiAwIDAgMCAxNiAxNmg0MTZhMTYgMTYgMCAwIDAgMTYtMTZWNDhhMTYgMTYgMCAwIDAtMTYtMTZ6TTUzLjIgNDY3YTQ4IDQ4IDAgMCAwIDQ3LjkgNDVoMjQ1LjhhNDggNDggMCAwIDAgNDcuOS00NUw0MTYgMTI4SDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzc4LjMxIDM3OC40OUwyOTguNDIgMjg4aDMwLjYzYzkuMDEgMCAxNi45OC01IDIwLjc4LTEzLjA2IDMuOC04LjA0IDIuNTUtMTcuMjYtMy4yOC0yNC4wNUwyNjguNDIgMTYwaDI4Ljg5YzkuMSAwIDE3LjMtNS4zNSAyMC44Ni0xMy42MSAzLjUyLTguMTMgMS44Ni0xNy41OS00LjI0LTI0LjA4TDIwMy42NiA0LjgzYy02LjAzLTYuNDUtMTcuMjgtNi40NS0yMy4zMiAwTDcwLjA2IDEyMi4zMWMtNi4xIDYuNDktNy43NSAxNS45NS00LjI0IDI0LjA4QzY5LjM4IDE1NC42NSA3Ny41OSAxNjAgODYuNjkgMTYwaDI4Ljg5bC03OC4xNCA5MC45MWMtNS44MSA2Ljc4LTcuMDYgMTUuOTktMy4yNyAyNC4wNEMzNy45NyAyODMgNDUuOTMgMjg4IDU0Ljk1IDI4OGgzMC42M0w1LjY5IDM3OC40OWMtNiA2Ljc5LTcuMzYgMTYuMDktMy41NiAyNC4yNiAzLjc1IDguMDUgMTIgMTMuMjUgMjEuMDEgMTMuMjVIMTYwdjI0LjQ1bC0zMC4yOSA0OC40Yy01LjMyIDEwLjY0IDIuNDIgMjMuMTYgMTQuMzEgMjMuMTZoOTUuOTZjMTEuODkgMCAxOS42My0xMi41MiAxNC4zMS0yMy4xNkwyMjQgNDQwLjQ1VjQxNmgxMzYuODZjOS4wMSAwIDE3LjI2LTUuMiAyMS4wMS0xMy4yNSAzLjgtOC4xNyAyLjQ0LTE3LjQ3LTMuNTYtMjQuMjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJvcGh5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEg0NDhWMjRjMC0xMy4zLTEwLjctMjQtMjQtMjRIMTUyYy0xMy4zIDAtMjQgMTAuNy0yNCAyNHY0MEgyNEMxMC43IDY0IDAgNzQuNyAwIDg4djU2YzAgMzUuNyAyMi41IDcyLjQgNjEuOSAxMDAuNyAzMS41IDIyLjcgNjkuOCAzNy4xIDExMCA0MS43QzIwMy4zIDMzOC41IDI0MCAzNjAgMjQwIDM2MHY3MmgtNDhjLTM1LjMgMC02NCAyMC43LTY0IDU2djEyYzAgNi42IDUuNCAxMiAxMiAxMmgyOTZjNi42IDAgMTItNS40IDEyLTEydi0xMmMwLTM1LjMtMjguNy01Ni02NC01NmgtNDh2LTcyczM2LjctMjEuNSA2OC4xLTczLjZjNDAuMy00LjYgNzguNi0xOSAxMTAtNDEuNyAzOS4zLTI4LjMgNjEuOS02NSA2MS45LTEwMC43Vjg4YzAtMTMuMy0xMC43LTI0LTI0LTI0ek05OS4zIDE5Mi44Qzc0LjkgMTc1LjIgNjQgMTU1LjYgNjQgMTQ0di0xNmg2NC4yYzEgMzIuNiA1LjggNjEuMiAxMi44IDg2LjItMTUuMS01LjItMjkuMi0xMi40LTQxLjctMjEuNHpNNTEyIDE0NGMwIDE2LjEtMTcuNyAzNi4xLTM1LjMgNDguOC0xMi41IDktMjYuNyAxNi4yLTQxLjggMjEuNCA3LTI1IDExLjgtNTMuNiAxMi44LTg2LjJINTEydjE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRydWNrTG9hZGluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MC4yIDM3NS42YzIuMyA4LjUgMTEuMSAxMy42IDE5LjYgMTEuM2wyMTYuNC01OGM4LjUtMi4zIDEzLjYtMTEuMSAxMS4zLTE5LjZsLTQ5LjctMTg1LjVjLTIuMy04LjUtMTEuMS0xMy42LTE5LjYtMTEuM0wxNTEgMTMzLjNsMjQuOCA5Mi43LTYxLjggMTYuNS0yNC44LTkyLjctNzcuMyAyMC43QzMuNCAxNzIuOC0xLjcgMTgxLjYuNiAxOTAuMWw0OS42IDE4NS41ek0zODQgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzIzLjZMNS45IDQ1MGMtNC4zIDEuMi02LjggNS42LTUuNiA5LjhsMTIuNiA0Ni4zYzEuMiA0LjMgNS42IDYuOCA5LjggNS42bDM5My43LTEwNy40QzQxOC44IDQ2NC4xIDQ2Ny42IDUxMiA1MjggNTEyYzYxLjkgMCAxMTItNTAuMSAxMTItMTEyVjBIMzg0em0xNDQgNDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vbnN0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIyNGgtMTZ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTczLjZMNDE5LjIyIDI0LjAyQTY0LjAyNSA2NC4wMjUgMCAwIDAgMzY5LjI0IDBIMjU2Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjk2SDQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY4MEgxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2MzJjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMTYuNzJjMjkuMjEtMzguNjUgNzUuMS02NCAxMjcuMjgtNjRzOTguMDcgMjUuMzUgMTI3LjI4IDY0aDY1LjQ1YzI5LjIxLTM4LjY1IDc1LjEtNjQgMTI3LjI4LTY0czk4LjA3IDI1LjM1IDEyNy4yOCA2NEg2MjRjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTMyYzAtOC44NC03LjE2LTE2LTE2LTE2em0tMzM2LTk2VjY0aDgxLjI0bDUxLjIgNjRIMjg4em0zMDQgMjI0aC01LjJjLTIuMi03LjMzLTUuMDctMTQuMjgtOC42NS0yMC44OWwzLjY3LTMuNjdjNi4yNS02LjI1IDYuMjUtMTYuMzggMC0yMi42M2wtMjIuNjMtMjIuNjNjLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTMuNjcgMy42N0ExMTAuODUgMTEwLjg1IDAgMCAwIDUxMiAyNzcuMlYyNzJjMC04Ljg0LTcuMTYtMTYtMTYtMTZoLTMyYy04Ljg0IDAtMTYgNy4xNi0xNiAxNnY1LjJjLTcuMzMgMi4yLTE0LjI4IDUuMDctMjAuODkgOC42NWwtMy42Ny0zLjY3Yy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0yMi42MyAyMi42M2MtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wzLjY3IDMuNjdBMTEwLjg1IDExMC44NSAwIDAgMCAzNzMuMiAzNTJIMzY4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg1LjJjMi4yIDcuMzMgNS4wNyAxNC4yOCA4LjY1IDIwLjg5bC0zLjY3IDMuNjdjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjMgMjIuNjNjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwzLjY3LTMuNjdjNi42MSAzLjU3IDEzLjU3IDYuNDUgMjAuOSA4LjY1djUuMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNS4yYzcuMzMtMi4yIDE0LjI4LTUuMDcgMjAuOS04LjY1bDMuNjcgMy42N2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTMuNjctMy42N2ExMTAuODUgMTEwLjg1IDAgMCAwIDguNjUtMjAuODloNS4yYzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMtLjAyLTguODQtNy4xOC0xNi0xNi4wMi0xNnptLTExMiA4MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHptLTIwOC04MGgtNS4yYy0yLjItNy4zMy01LjA3LTE0LjI4LTguNjUtMjAuODlsMy42Ny0zLjY3YzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTIyLjYzLTIyLjYzYy02LjI1LTYuMjUtMTYuMzgtNi4yNS0yMi42MyAwbC0zLjY3IDMuNjdBMTEwLjg1IDExMC44NSAwIDAgMCAxOTIgMjc3LjJWMjcyYzAtOC44NC03LjE2LTE2LTE2LTE2aC0zMmMtOC44NCAwLTE2IDcuMTYtMTYgMTZ2NS4yYy03LjMzIDIuMi0xNC4yOCA1LjA3LTIwLjg5IDguNjVsLTMuNjctMy42N2MtNi4yNS02LjI1LTE2LjM4LTYuMjUtMjIuNjMgMEw1OC4xOCAzMDQuOGMtNi4yNSA2LjI1LTYuMjUgMTYuMzggMCAyMi42M2wzLjY3IDMuNjdhMTEwLjg1IDExMC44NSAwIDAgMC04LjY1IDIwLjg5SDQ4Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg1LjJjMi4yIDcuMzMgNS4wNyAxNC4yOCA4LjY1IDIwLjg5bC0zLjY3IDMuNjdjLTYuMjUgNi4yNS02LjI1IDE2LjM4IDAgMjIuNjNsMjIuNjMgMjIuNjNjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwzLjY3LTMuNjdjNi42MSAzLjU3IDEzLjU3IDYuNDUgMjAuOSA4LjY1djUuMmMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNS4yYzcuMzMtMi4yIDE0LjI4LTUuMDcgMjAuOS04LjY1bDMuNjcgMy42N2M2LjI1IDYuMjUgMTYuMzggNi4yNSAyMi42MyAwbDIyLjYzLTIyLjYzYzYuMjUtNi4yNSA2LjI1LTE2LjM4IDAtMjIuNjNsLTMuNjctMy42N2ExMTAuODUgMTEwLjg1IDAgMCAwIDguNjUtMjAuODloNS4yYzguODQgMCAxNi03LjE2IDE2LTE2di0zMkMyODggMzU5LjE2IDI4MC44NCAzNTIgMjcyIDM1MnptLTExMiA4MGMtMjYuNTEgMC00OC0yMS40OS00OC00OHMyMS40OS00OCA0OC00OCA0OCAyMS40OSA0OCA0OC0yMS40OSA0OC00OCA0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVja01vdmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjEuMyAyMzcuM2wtNTguNS01OC41Yy0xMi0xMi0yOC4zLTE4LjctNDUuMy0xOC43SDQ4MFY2NGMwLTE3LjctMTQuMy0zMi0zMi0zMkgzMkMxNC4zIDMyIDAgNDYuMyAwIDY0djMzNmMwIDQ0LjIgMzUuOCA4MCA4MCA4MCAyNi4zIDAgNDkuNC0xMi45IDY0LTMyLjQgMTQuNiAxOS42IDM3LjcgMzIuNCA2NCAzMi40IDQ0LjIgMCA4MC0zNS44IDgwLTgwIDAtNS41LS42LTEwLjgtMS42LTE2aDE2My4yYy0xLjEgNS4yLTEuNiAxMC41LTEuNiAxNiAwIDQ0LjIgMzUuOCA4MCA4MCA4MHM4MC0zNS44IDgwLTgwYzAtNS41LS42LTEwLjgtMS42LTE2SDYyNGM4LjggMCAxNi03LjIgMTYtMTZ2LTg1LjVjMC0xNy02LjctMzMuMi0xOC43LTQ1LjJ6TTgwIDQzMmMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6bTEyOCAwYy0xNy42IDAtMzItMTQuNC0zMi0zMnMxNC40LTMyIDMyLTMyIDMyIDE0LjQgMzIgMzItMTQuNCAzMi0zMiAzMnptMjcyLTIyNGgzNy41YzQuMyAwIDguMyAxLjcgMTEuMyA0LjdsNDMuMyA0My4zSDQ4MHYtNDh6bTQ4IDIyNGMtMTcuNiAwLTMyLTE0LjQtMzItMzJzMTQuNC0zMiAzMi0zMiAzMiAxNC40IDMyIDMyLTE0LjQgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHJ1Y2tQaWNrdXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDI4OGgtMTZ2LTY0YzAtMTcuNjctMTQuMzMtMzItMzItMzJoLTQ4TDQxOS4yMiA1Ni4wMkE2NC4wMjUgNjQuMDI1IDAgMCAwIDM2OS4yNCAzMkgyNTZjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MTI4SDY0Yy0xNy42NyAwLTMyIDE0LjMzLTMyIDMydjY0SDE2Yy04Ljg0IDAtMTYgNy4xNi0xNiAxNnYzMmMwIDguODQgNy4xNiAxNiAxNiAxNmg0OS42MWMtLjc2IDUuMjctMS42MSAxMC41Mi0xLjYxIDE2IDAgNjEuODYgNTAuMTQgMTEyIDExMiAxMTJzMTEyLTUwLjE0IDExMi0xMTJjMC01LjQ4LS44NS0xMC43My0xLjYxLTE2aDY3LjIzYy0uNzYgNS4yNy0xLjYxIDEwLjUyLTEuNjEgMTYgMCA2MS44NiA1MC4xNCAxMTIgMTEyIDExMnMxMTItNTAuMTQgMTEyLTExMmMwLTUuNDgtLjg1LTEwLjczLTEuNjEtMTZINjI0YzguODQgMCAxNi03LjE2IDE2LTE2di0zMmMwLTguODQtNy4xNi0xNi0xNi0xNnpNMjg4IDk2aDgxLjI0bDc2LjggOTZIMjg4Vjk2ek0xNzYgNDE2Yy0yNi40NyAwLTQ4LTIxLjUzLTQ4LTQ4czIxLjUzLTQ4IDQ4LTQ4IDQ4IDIxLjUzIDQ4IDQ4LTIxLjUzIDQ4LTQ4IDQ4em0yODggMGMtMjYuNDcgMC00OC0yMS41My00OC00OHMyMS41My00OCA0OC00OCA0OCAyMS41MyA0OCA0OC0yMS41MyA0OC00OCA0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUcnVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MjQgMzUyaC0xNlYyNDMuOWMwLTEyLjctNS4xLTI0LjktMTQuMS0zMy45TDQ5NCAxMTAuMWMtOS05LTIxLjItMTQuMS0zMy45LTE0LjFINDE2VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHYzMjBjMCAyNi41IDIxLjUgNDggNDggNDhoMTZjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05NmgxMjhjMCA1MyA0MyA5NiA5NiA5NnM5Ni00MyA5Ni05Nmg0OGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNMTYwIDQ2NGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTMyMCAwYy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptODAtMjA4SDQxNlYxNDRoNDQuMWw5OS45IDk5LjlWMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVRzaGlydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzEuMiA5Ni41TDQzNi41IDBDNDE2LjQgMjcuOCAzNzEuOSA0Ny4yIDMyMCA0Ny4yUzIyMy42IDI3LjggMjAzLjUgMEw4LjggOTYuNWMtNy45IDQtMTEuMSAxMy42LTcuMiAyMS41bDU3LjIgMTE0LjVjNCA3LjkgMTMuNiAxMS4xIDIxLjUgNy4ybDU2LjYtMjcuN2MxMC42LTUuMiAyMyAyLjUgMjMgMTQuNFY0ODBjMCAxNy43IDE0LjMgMzIgMzIgMzJoMjU2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIyNi4zYzAtMTEuOCAxMi40LTE5LjYgMjMtMTQuNGw1Ni42IDI3LjdjNy45IDQgMTcuNS44IDIxLjUtNy4yTDYzOC4zIDExOGM0LTcuOS44LTE3LjYtNy4xLTIxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVHR5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzcgMTAzLjgyMmMxMzguNTMyLTEzOC41MzIgMzYyLjkzNi0xMzguMzI2IDUwMS4yNjIgMCA2LjA3OCA2LjA3OCA3LjA3NCAxNS40OTYgMi41ODMgMjIuNjgxbC00My4yMTQgNjkuMTM4YTE4LjMzMiAxOC4zMzIgMCAwIDEtMjIuMzU2IDcuMzA1bC04Ni40MjItMzQuNTY5YTE4LjMzNSAxOC4zMzUgMCAwIDEtMTEuNDM0LTE4Ljg0NkwzNTEuNzQxIDkwYy02Mi4xNDUtMjIuNDU0LTEzMC42MzYtMjEuOTg2LTE5MS40ODMgMGw1Ljk1MyA1OS41MzJhMTguMzMxIDE4LjMzMSAwIDAgMS0xMS40MzQgMTguODQ2bC04Ni40MjMgMzQuNTY4YTE4LjMzNCAxOC4zMzQgMCAwIDEtMjIuMzU2LTcuMzA1TDIuNzg3IDEyNi41MDJhMTguMzMzIDE4LjMzMyAwIDAgMSAyLjU4My0yMi42OHpNOTYgMzA4di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0tMzM2IDk2di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDkyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg0MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpNOTYgNTAwdi00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDQ0Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMjg4IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJIMTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjMyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFUdiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01OTIgMEg0OEE0OCA0OCAwIDAgMCAwIDQ4djMyMGE0OCA0OCAwIDAgMCA0OCA0OGgyNDB2MzJIMTEyYTE2IDE2IDAgMCAwLTE2IDE2djMyYTE2IDE2IDAgMCAwIDE2IDE2aDQxNmExNiAxNiAwIDAgMCAxNi0xNnYtMzJhMTYgMTYgMCAwIDAtMTYtMTZIMzUydi0zMmgyNDBhNDggNDggMCAwIDAgNDgtNDhWNDhhNDggNDggMCAwIDAtNDgtNDh6bS0xNiAzNTJINjRWNjRoNTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVtYnJlbGxhQmVhY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE1LjM4IDEzNi45bDEwMi4xMSAzNy4xOGMzNS4xOS04MS41NCA4Ni4yMS0xNDQuMjkgMTM5LTE3My43LTk1Ljg4LTQuODktMTg4Ljc4IDM2Ljk2LTI0OC41MyAxMTEuOC02LjY5IDguNC0yLjY2IDIxLjA1IDcuNDIgMjQuNzJ6bTEzMi4yNSA0OC4xNmwyMzguNDggODYuODNjMzUuNzYtMTIxLjM4IDE4LjctMjMxLjY2LTQyLjYzLTI1My45OC03LjQtMi43LTE1LjEzLTQtMjMuMDktNC01OC4wMi4wMS0xMjguMjcgNjkuMTctMTcyLjc2IDE3MS4xNXpNNTIxLjQ4IDYwLjVjNi4yMiAxNi4zIDEwLjgzIDM0LjYgMTMuMiA1NS4xOSA1Ljc0IDQ5Ljg5LTEuNDIgMTA4LjIzLTE4Ljk1IDE2Ni45OGwxMDIuNjIgMzcuMzZjMTAuMDkgMy42NyAyMS4zMS0zLjQzIDIxLjU3LTE0LjE3IDIuMzItOTUuNjktNDEuOTEtMTg3LjQ0LTExOC40NC0yNDUuMzZ6TTU2MCA0NDcuOThIMzIxLjA2TDM4NiAyNjkuNWwtNjAuMTQtMjEuOS03Mi45IDIwMC4zN0gxNmMtOC44NCAwLTE2IDcuMTYtMTYgMTYuMDF2MzIuMDFDMCA1MDQuODMgNy4xNiA1MTIgMTYgNTEyaDU0NGM4Ljg0IDAgMTYtNy4xNyAxNi0xNi4wMXYtMzIuMDFjMC04Ljg0LTcuMTYtMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW1icmVsbGEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTc1LjcgMjgwLjhDNTQ3LjEgMTQ0LjUgNDM3LjMgNjIuNiAzMjAgNDkuOVYzMmMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMnYxNy45QzEzOC4zIDYyLjYgMjkuNSAxNDQuNS4zIDI4MC44Yy0yLjIgMTAuMSA4LjUgMjEuMyAxOC43IDExLjQgNTItNTUgMTA3LjctNTIuNCAxNTguNiAzNyA1LjMgOS41IDE0LjkgOC42IDE5LjcgMCAyMC4yLTM1LjQgNDQuOS03My4yIDkwLjctNzMuMiA1OC41IDAgODguMiA2OC44IDkwLjcgNzMuMiA0LjggOC42IDE0LjQgOS41IDE5LjcgMCA1MS04OS41IDEwNy4xLTkxLjQgMTU4LjYtMzcgMTAuMyAxMCAyMC45LTEuMyAxOC43LTExLjR6TTI1NiAzMDEuN1Y0MzJjMCA4LjgtNy4yIDE2LTE2IDE2LTcuOCAwLTEzLjItNS4zLTE1LjEtMTAuNy01LjktMTYuNy0yNC4xLTI1LjQtNDAuOC0xOS41LTE2LjcgNS45LTI1LjQgMjQuMi0xOS41IDQwLjggMTEuMiAzMS45IDQxLjYgNTMuMyA3NS40IDUzLjMgNDQuMSAwIDgwLTM1LjkgODAtODBWMzAxLjZjLTkuMS03LjktMTkuOC0xMy42LTMyLTEzLjYtMTIuMy4xLTIyLjQgNC44LTMyIDEzLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyIDY0aDMydjE2MGMwIDg4LjIyIDcxLjc4IDE2MCAxNjAgMTYwczE2MC03MS43OCAxNjAtMTYwVjY0aDMyYTE2IDE2IDAgMCAwIDE2LTE2VjE2YTE2IDE2IDAgMCAwLTE2LTE2SDI3MmExNiAxNiAwIDAgMC0xNiAxNnYzMmExNiAxNiAwIDAgMCAxNiAxNmgzMnYxNjBhODAgODAgMCAwIDEtMTYwIDBWNjRoMzJhMTYgMTYgMCAwIDAgMTYtMTZWMTZhMTYgMTYgMCAwIDAtMTYtMTZIMzJhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZ6bTQwMCAzODRIMTZhMTYgMTYgMCAwIDAtMTYgMTZ2MzJhMTYgMTYgMCAwIDAgMTYgMTZoNDE2YTE2IDE2IDAgMCAwIDE2LTE2di0zMmExNiAxNiAwIDAgMC0xNi0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmRvQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NS41NDUgOGMtNjYuMjY5LjExOS0xMjYuNDM4IDI2LjIzMy0xNzAuODYgNjguNjg1TDQ4Ljk3MSA0MC45NzFDMzMuODUxIDI1Ljg1MSA4IDM2LjU1OSA4IDU3Ljk0MVYxOTJjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEzNC4wNTljMjEuMzgyIDAgMzIuMDktMjUuODUxIDE2Ljk3MS00MC45NzFsLTQxLjc1LTQxLjc1YzMwLjg2NC0yOC44OTkgNzAuODAxLTQ0LjkwNyAxMTMuMjMtNDUuMjczIDkyLjM5OC0uNzk4IDE3MC4yODMgNzMuOTc3IDE2OS40ODQgMTY5LjQ0MkM0MjMuMjM2IDM0OC4wMDkgMzQ5LjgxNiA0MjQgMjU2IDQyNGMtNDEuMTI3IDAtNzkuOTk3LTE0LjY3OC0xMTAuNjMtNDEuNTU2LTQuNzQzLTQuMTYxLTExLjkwNi0zLjkwOC0xNi4zNjguNTUzTDg5LjM0IDQyMi42NTljLTQuODcyIDQuODcyLTQuNjMxIDEyLjgxNS40ODIgMTcuNDMzQzEzMy43OTggNDc5LjgxMyAxOTIuMDc0IDUwNCAyNTYgNTA0YzEzNi45NjYgMCAyNDcuOTk5LTExMS4wMzMgMjQ4LTI0Ny45OThDNTA0LjAwMSAxMTkuMTkzIDM5Mi4zNTQgNy43NTUgMjU1LjU0NSA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuZG8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjEyLjMzMyAyMjQuMzMzSDEyYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyVjEyQzAgNS4zNzMgNS4zNzMgMCAxMiAwaDQ4YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2NzguMTEyQzExNy43NzMgMzkuMjc5IDE4NC4yNiA3LjQ3IDI1OC4xNzUgOC4wMDdjMTM2LjkwNi45OTQgMjQ2LjQ0OCAxMTEuNjIzIDI0Ni4xNTcgMjQ4LjUzMkM1MDQuMDQxIDM5My4yNTggMzkzLjEyIDUwNCAyNTYuMzMzIDUwNGMtNjQuMDg5IDAtMTIyLjQ5Ni0yNC4zMTMtMTY2LjUxLTY0LjIxNS01LjA5OS00LjYyMi01LjMzNC0xMi41NTQtLjQ2Ny0xNy40MmwzMy45NjctMzMuOTY3YzQuNDc0LTQuNDc0IDExLjY2Mi00LjcxNyAxNi40MDEtLjUyNUMxNzAuNzYgNDE1LjMzNiAyMTEuNTggNDMyIDI1Ni4zMzMgNDMyYzk3LjI2OCAwIDE3Ni03OC43MTYgMTc2LTE3NiAwLTk3LjI2Ny03OC43MTYtMTc2LTE3Ni0xNzYtNTguNDk2IDAtMTEwLjI4IDI4LjQ3Ni0xNDIuMjc0IDcyLjMzM2g5OC4yNzRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY0OGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVuaXZlcnNhbEFjY2VzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNDhjMTE0Ljk1MyAwIDIwOCA5My4wMjkgMjA4IDIwOCAwIDExNC45NTMtOTMuMDI5IDIwOC0yMDggMjA4LTExNC45NTMgMC0yMDgtOTMuMDI5LTIwOC0yMDggMC0xMTQuOTUzIDkzLjAyOS0yMDggMjA4LTIwOG0wLTQwQzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA1NkMxNDkuOTYxIDY0IDY0IDE0OS45NjEgNjQgMjU2czg1Ljk2MSAxOTIgMTkyIDE5MiAxOTItODUuOTYxIDE5Mi0xOTJTMzYyLjAzOSA2NCAyNTYgNjR6bTAgNDRjMTkuODgyIDAgMzYgMTYuMTE4IDM2IDM2cy0xNi4xMTggMzYtMzYgMzYtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNnptMTE3Ljc0MSA5OC4wMjNjLTI4LjcxMiA2Ljc3OS01NS41MTEgMTIuNzQ4LTgyLjE0IDE1LjgwNy44NTEgMTAxLjAyMyAxMi4zMDYgMTIzLjA1MiAyNS4wMzcgMTU1LjYyMSAzLjYxNyA5LjI2LS45NTcgMTkuNjk4LTEwLjIxNyAyMy4zMTUtOS4yNjEgMy42MTctMTkuNjk5LS45NTctMjMuMzE2LTEwLjIxNy04LjcwNS0yMi4zMDgtMTcuMDg2LTQwLjYzNi0yMi4yNjEtNzguNTQ5aC05LjY4NmMtNS4xNjcgMzcuODUxLTEzLjUzNCA1Ni4yMDgtMjIuMjYyIDc4LjU0OS0zLjYxNSA5LjI1NS0xNC4wNSAxMy44MzYtMjMuMzE1IDEwLjIxNy05LjI2LTMuNjE3LTEzLjgzNC0xNC4wNTYtMTAuMjE3LTIzLjMxNSAxMi43MTMtMzIuNTQxIDI0LjE4NS01NC41NDEgMjUuMDM3LTE1NS42MjEtMjYuNjI5LTMuMDU4LTUzLjQyOC05LjAyNy04Mi4xNDEtMTUuODA3LTguNi0yLjAzMS0xMy45MjYtMTAuNjQ4LTExLjg5NS0xOS4yNDlzMTAuNjQ3LTEzLjkyNiAxOS4yNDktMTEuODk1Yzk2LjY4NiAyMi44MjkgMTI0LjI4MyAyMi43ODMgMjIwLjc3NSAwIDguNTk5LTIuMDMgMTcuMjE4IDMuMjk0IDE5LjI0OSAxMS44OTUgMi4wMjkgOC42MDEtMy4yOTcgMTcuMjE5LTExLjg5NyAxOS4yNDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5pdmVyc2l0eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00OTYgMTI4djE2YTggOCAwIDAgMS04IDhoLTI0djEyYzAgNi42MjctNS4zNzMgMTItMTIgMTJINjBjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTEySDI0YTggOCAwIDAgMS04LTh2LTE2YTggOCAwIDAgMSA0Ljk0MS03LjM5MmwyMzItODhhNy45OTYgNy45OTYgMCAwIDEgNi4xMTggMGwyMzIgODhBOCA4IDAgMCAxIDQ5NiAxMjh6bS0yNCAzMDRINDBjLTEzLjI1NSAwLTI0IDEwLjc0NS0yNCAyNHYxNmE4IDggMCAwIDAgOCA4aDQ2NGE4IDggMCAwIDAgOC04di0xNmMwLTEzLjI1NS0xMC43NDUtMjQtMjQtMjR6TTk2IDE5MnYxOTJINjBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjBoNDE2di0yMGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0zNlYxOTJoLTY0djE5MmgtNjRWMTkyaC02NHYxOTJoLTY0VjE5Mkg5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzA0LjA4MyA0MDUuOTA3YzQuNjg2IDQuNjg2IDQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwtNDQuNjc0IDQ0LjY3NGMtNTkuMjYzIDU5LjI2Mi0xNTUuNjkzIDU5LjI2Ni0yMTQuOTYxIDAtNTkuMjY0LTU5LjI2NS01OS4yNjQtMTU1LjY5NiAwLTIxNC45Nmw0NC42NzUtNDQuNjc1YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMGwzOS41OTggMzkuNTk4YzQuNjg2IDQuNjg2IDQuNjg2IDEyLjI4NCAwIDE2Ljk3MWwtNDQuNjc1IDQ0LjY3NGMtMjguMDcyIDI4LjA3My0yOC4wNzIgNzMuNzUgMCAxMDEuODIzIDI4LjA3MiAyOC4wNzIgNzMuNzUgMjguMDczIDEwMS44MjQgMGw0NC42NzQtNDQuNjc0YzQuNjg2LTQuNjg2IDEyLjI4NC00LjY4NiAxNi45NzEgMGwzOS41OTcgMzkuNTk4em0tNTYuNTY4LTI2MC4yMTZjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDQ0LjY3NC00NC42NzRjMjguMDcyLTI4LjA3NSA3My43NS0yOC4wNzMgMTAxLjgyNCAwIDI4LjA3MiAyOC4wNzMgMjguMDcyIDczLjc1IDAgMTAxLjgyM2wtNDQuNjc1IDQ0LjY3NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDM5LjU5OCAzOS41OThjNC42ODYgNC42ODYgMTIuMjg0IDQuNjg2IDE2Ljk3MSAwbDQ0LjY3NS00NC42NzVjNTkuMjY1LTU5LjI2NSA1OS4yNjUtMTU1LjY5NSAwLTIxNC45Ni01OS4yNjYtNTkuMjY0LTE1NS42OTUtNTkuMjY0LTIxNC45NjEgMGwtNDQuNjc0IDQ0LjY3NGMtNC42ODYgNC42ODYtNC42ODYgMTIuMjg0IDAgMTYuOTcxbDM5LjU5NyAzOS41OTh6bTIzNC44MjggMzU5LjI4bDIyLjYyNy0yMi42MjdjOS4zNzMtOS4zNzMgOS4zNzMtMjQuNTY5IDAtMzMuOTQxTDYzLjU5OCA3LjAyOWMtOS4zNzMtOS4zNzMtMjQuNTY5LTkuMzczLTMzLjk0MSAwTDcuMDI5IDI5LjY1N2MtOS4zNzMgOS4zNzMtOS4zNzMgMjQuNTY5IDAgMzMuOTQxbDQ0MS4zNzMgNDQxLjM3M2M5LjM3MyA5LjM3MiAyNC41NjkgOS4zNzIgMzMuOTQxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVW5sb2NrQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAyNTZIMTUyVjE1Mi45YzAtMzkuNiAzMS43LTcyLjUgNzEuMy03Mi45IDQwLS40IDcyLjcgMzIuMSA3Mi43IDcydjE2YzAgMTMuMyAxMC43IDI0IDI0IDI0aDMyYzEzLjMgMCAyNC0xMC43IDI0LTI0di0xNkMzNzYgNjggMzA3LjUtLjMgMjIzLjUgMCAxMzkuNS4zIDcyIDY5LjUgNzIgMTUzLjVWMjU2SDQ4Yy0yNi41IDAtNDggMjEuNS00OCA0OHYxNjBjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjMwNGMwLTI2LjUtMjEuNS00OC00OC00OHpNMjY0IDQwOGMwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MHYtNDhjMC0yMi4xIDE3LjktNDAgNDAtNDBzNDAgMTcuOSA0MCA0MHY0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVbmxvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDI1NkgxNTJWMTUyLjljMC0zOS42IDMxLjctNzIuNSA3MS4zLTcyLjkgNDAtLjQgNzIuNyAzMi4xIDcyLjcgNzJ2MTZjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMzJjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2QzM3NiA2OCAzMDcuNS0uMyAyMjMuNSAwIDEzOS41LjMgNzIgNjkuNSA3MiAxNTMuNVYyNTZINDhjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djE2MGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMzA0YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yOTYgMzg0aC04MGMtMTMuMyAwLTI0LTEwLjctMjQtMjRWMTkyaC04Ny43Yy0xNy44IDAtMjYuNy0yMS41LTE0LjEtMzQuMUwyNDIuMyA1LjdjNy41LTcuNSAxOS44LTcuNSAyNy4zIDBsMTUyLjIgMTUyLjJjMTIuNiAxMi42IDMuNyAzNC4xLTE0LjEgMzQuMUgzMjB2MTY4YzAgMTMuMy0xMC43IDI0LTI0IDI0em0yMTYtOHYxMTJjMCAxMy4zLTEwLjcgMjQtMjQgMjRIMjRjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjM3NmMwLTEzLjMgMTAuNy0yNCAyNC0yNGgxMzZ2OGMwIDMwLjkgMjUuMSA1NiA1NiA1Nmg4MGMzMC45IDAgNTYtMjUuMSA1Ni01NnYtOGgxMzZjMTMuMyAwIDI0IDEwLjcgMjQgMjR6bS0xMjQgODhjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwIDkgMjAgMjAgMjAgMjAtOSAyMC0yMHptNjQgMGMwLTExLTktMjAtMjAtMjBzLTIwIDktMjAgMjAgOSAyMCAyMCAyMCAyMC05IDIwLTIwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBbHRTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOCA0NTguMUwzODkuNiAyNjkuM0M0MzMuOCAyNDQuNyA0NjQgMTk4LjEgNDY0IDE0NCA0NjQgNjQuNSAzOTkuNSAwIDMyMCAwYy02Ny4xIDAtMTIzIDQ2LjEtMTM5IDEwOC4yTDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNMTk4LjQgMzIwQzEyNC4yIDMyMCA2NCAzODAuMiA2NCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzgyLjJMMjQ1LjggMzIwaC00Ny40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDI4OGM3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NFMzMzUuNSAwIDI1NiAwIDExMiA2NC41IDExMiAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMTI4IDMyaC01NS4xYy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2SDEyOEM1Ny4zIDMyMCAwIDM3Ny4zIDAgNDQ4djE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMTZjMC03MC43LTU3LjMtMTI4LTEyOC0xMjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckFzdHJvbmF1dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02NCAyMjRoMTMuNWMyNC43IDU2LjUgODAuOSA5NiAxNDYuNSA5NnMxMjEuOC0zOS41IDE0Ni41LTk2SDM4NGM4LjggMCAxNi03LjIgMTYtMTZ2LTk2YzAtOC44LTcuMi0xNi0xNi0xNmgtMTMuNUMzNDUuOCAzOS41IDI4OS42IDAgMjI0IDBTMTAyLjIgMzkuNSA3Ny41IDk2SDY0Yy04LjggMC0xNiA3LjItMTYgMTZ2OTZjMCA4LjggNy4yIDE2IDE2IDE2em00MC04OGMwLTIyLjEgMjEuNS00MCA0OC00MGgxNDRjMjYuNSAwIDQ4IDE3LjkgNDggNDB2MjRjMCA1My00MyA5Ni05NiA5NmgtNDhjLTUzIDAtOTYtNDMtOTYtOTZ2LTI0em03MiA3MmwxMi0zNiAzNi0xMi0zNi0xMi0xMi0zNi0xMiAzNi0zNiAxMiAzNiAxMiAxMiAzNnptMTUxLjYgMTEzLjRDMjk3LjcgMzQwLjcgMjYyLjIgMzUyIDIyNCAzNTJzLTczLjctMTEuMy0xMDMuNi0zMC42QzUyLjkgMzI4LjUgMCAzODUgMCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoODB2LTY0YzAtMTcuNyAxNC4zLTMyIDMyLTMyaDEyOGMxNy43IDAgMzIgMTQuMyAzMiAzMnY2NGg4MGMyNi41IDAgNDgtMjEuNSA0OC00OHYtOS42YzAtNjkuNC01Mi45LTEyNS45LTEyMC40LTEzM3pNMjcyIDQ0OGMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNiAxNi03LjIgMTYtMTYtNy4yLTE2LTE2LTE2em0tOTYgMGMtOC44IDAtMTYgNy4yLTE2IDE2djQ4aDMydi00OGMwLTguOC03LjItMTYtMTYtMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40em0zMjMtMTI4LjRsLTI3LjgtMjguMWMtNC42LTQuNy0xMi4xLTQuNy0xNi44LS4xbC0xMDQuOCAxMDQtNDUuNS00NS44Yy00LjYtNC43LTEyLjEtNC43LTE2LjgtLjFsLTI4LjEgMjcuOWMtNC43IDQuNi00LjcgMTIuMS0uMSAxNi44bDgxLjcgODIuM2M0LjYgNC43IDEyLjEgNC43IDE2LjguMWwxNDEuMy0xNDAuMmM0LjYtNC43IDQuNy0xMi4yLjEtMTYuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgOTZjNDguNiAwIDg4IDM5LjQgODggODhzLTM5LjQgODgtODggODgtODgtMzkuNC04OC04OCAzOS40LTg4IDg4LTg4em0wIDM0NGMtNTguNyAwLTExMS4zLTI2LjYtMTQ2LjUtNjguMiAxOC44LTM1LjQgNTUuNi01OS44IDk4LjUtNTkuOCAyLjQgMCA0LjguNCA3LjEgMS4xIDEzIDQuMiAyNi42IDYuOSA0MC45IDYuOSAxNC4zIDAgMjgtMi43IDQwLjktNi45IDIuMy0uNyA0LjctMS4xIDcuMS0xLjEgNDIuOSAwIDc5LjcgMjQuNCA5OC41IDU5LjhDMzU5LjMgNDIxLjQgMzA2LjcgNDQ4IDI0OCA0NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckNsb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAyMjRjLTc5LjYgMC0xNDQgNjQuNC0xNDQgMTQ0czY0LjQgMTQ0IDE0NCAxNDQgMTQ0LTY0LjQgMTQ0LTE0NC02NC40LTE0NC0xNDQtMTQ0em02NCAxNTAuM2MwIDUuMy00LjQgOS43LTkuNyA5LjdoLTYwLjZjLTUuMyAwLTkuNy00LjQtOS43LTkuN3YtNzYuNmMwLTUuMyA0LjQtOS43IDkuNy05LjdoMTIuNmM1LjMgMCA5LjcgNC40IDkuNyA5LjdWMzUyaDM4LjNjNS4zIDAgOS43IDQuNCA5LjcgOS43djEyLjZ6TTMyMCAzNjhjMC0yNy44IDYuNy01NC4xIDE4LjItNzcuNS04LTEuNS0xNi4yLTIuNS0yNC42LTIuNWgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4OCAwIDM0OC4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM0Ny4xYy00NS4zLTMxLjktNzUuMS04NC41LTc1LjEtMTQ0em0tOTYtMTEyYzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyQ29nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYxMC41IDM3My4zYzIuNi0xNC4xIDIuNi0yOC41IDAtNDIuNmwyNS44LTE0LjljMy0xLjcgNC4zLTUuMiAzLjMtOC41LTYuNy0yMS42LTE4LjItNDEuMi0zMy4yLTU3LjQtMi4zLTIuNS02LTMuMS05LTEuNGwtMjUuOCAxNC45Yy0xMC45LTkuMy0yMy40LTE2LjUtMzYuOS0yMS4zdi0yOS44YzAtMy40LTIuNC02LjQtNS43LTcuMS0yMi4zLTUtNDUtNC44LTY2LjIgMC0zLjMuNy01LjcgMy43LTUuNyA3LjF2MjkuOGMtMTMuNSA0LjgtMjYgMTItMzYuOSAyMS4zbC0yNS44LTE0LjljLTIuOS0xLjctNi43LTEuMS05IDEuNC0xNSAxNi4yLTI2LjUgMzUuOC0zMy4yIDU3LjQtMSAzLjMuNCA2LjggMy4zIDguNWwyNS44IDE0LjljLTIuNiAxNC4xLTIuNiAyOC41IDAgNDIuNmwtMjUuOCAxNC45Yy0zIDEuNy00LjMgNS4yLTMuMyA4LjUgNi43IDIxLjYgMTguMiA0MS4xIDMzLjIgNTcuNCAyLjMgMi41IDYgMy4xIDkgMS40bDI1LjgtMTQuOWMxMC45IDkuMyAyMy40IDE2LjUgMzYuOSAyMS4zdjI5LjhjMCAzLjQgMi40IDYuNCA1LjcgNy4xIDIyLjMgNSA0NSA0LjggNjYuMiAwIDMuMy0uNyA1LjctMy43IDUuNy03LjF2LTI5LjhjMTMuNS00LjggMjYtMTIgMzYuOS0yMS4zbDI1LjggMTQuOWMyLjkgMS43IDYuNyAxLjEgOS0xLjQgMTUtMTYuMiAyNi41LTM1LjggMzMuMi01Ny40IDEtMy4zLS40LTYuOC0zLjMtOC41bC0yNS44LTE0Ljl6TTQ5NiA0MDAuNWMtMjYuOCAwLTQ4LjUtMjEuOC00OC41LTQ4LjVzMjEuOC00OC41IDQ4LjUtNDguNSA0OC41IDIxLjggNDguNSA0OC41LTIxLjcgNDguNS00OC41IDQ4LjV6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em0yMDEuMiAyMjYuNWMtMi4zLTEuMi00LjYtMi42LTYuOC0zLjlsLTcuOSA0LjZjLTYgMy40LTEyLjggNS4zLTE5LjYgNS4zLTEwLjkgMC0yMS40LTQuNi0yOC45LTEyLjYtMTguMy0xOS44LTMyLjMtNDMuOS00MC4yLTY5LjYtNS41LTE3LjcgMS45LTM2LjQgMTcuOS00NS43bDcuOS00LjZjLS4xLTIuNi0uMS01LjIgMC03LjhsLTcuOS00LjZjLTE2LTkuMi0yMy40LTI4LTE3LjktNDUuNy45LTIuOSAyLjItNS44IDMuMi04LjctMy44LS4zLTcuNS0xLjItMTEuNC0xLjJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMTAuMSAwIDE5LjUtMy4yIDI3LjItOC41LTEuMi0zLjgtMi03LjctMi0xMS44di05LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckVkaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyNzQuOWMtMi40LTYuOC0zLjQtMTQtMi42LTIxLjNsNi44LTYwLjkgMS4yLTExLjEgNy45LTcuOSA3Ny4zLTc3LjNjLTI0LjUtMjcuNy02MC00NS41LTk5LjktNDUuNXptNDUuMyAxNDUuM2wtNi44IDYxYy0xLjEgMTAuMiA3LjUgMTguOCAxNy42IDE3LjZsNjAuOS02LjggMTM3LjktMTM3LjktNzEuNy03MS43LTEzNy45IDEzNy44ek02MzMgMjY4LjlMNTk1LjEgMjMxYy05LjMtOS4zLTI0LjUtOS4zLTMzLjggMGwtMzcuOCAzNy44LTQuMSA0LjEgNzEuOCA3MS43IDQxLjgtNDEuOGM5LjMtOS40IDkuMy0yNC41IDAtMzMuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyRnJpZW5kcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xOTIgMjU2YzYxLjkgMCAxMTItNTAuMSAxMTItMTEyUzI1My45IDMyIDE5MiAzMiA4MCA4Mi4xIDgwIDE0NHM1MC4xIDExMiAxMTIgMTEyem03Ni44IDMyaC04LjNjLTIwLjggMTAtNDMuOSAxNi02OC41IDE2cy00Ny42LTYtNjguNS0xNmgtOC4zQzUxLjYgMjg4IDAgMzM5LjYgMCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yek00ODAgMjU2YzUzIDAgOTYtNDMgOTYtOTZzLTQzLTk2LTk2LTk2LTk2IDQzLTk2IDk2IDQzIDk2IDk2IDk2em00OCAzMmgtMy44Yy0xMy45IDQuOC0yOC42IDgtNDQuMiA4cy0zMC4zLTMuMi00NC4yLThINDMyYy0yMC40IDAtMzkuMiA1LjktNTUuNyAxNS40IDI0LjQgMjYuMyAzOS43IDYxLjIgMzkuNyA5OS44djM4LjRjMCAyLjItLjUgNC4zLS42IDYuNEg1OTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDggMC02MS45LTUwLjEtMTEyLTExMi0xMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlckdyYWR1YXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS40IDMyMC42TDIyNCA0MTZsLTk1LjQtOTUuNEM1Ny4xIDMyMy43IDAgMzgyLjIgMCA0NTQuNHY5LjZjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di05LjZjMC03Mi4yLTU3LjEtMTMwLjctMTI4LjYtMTMzLjh6TTEzLjYgNzkuOGw2LjQgMS41djU4LjRjLTcgNC4yLTEyIDExLjUtMTIgMjAuMyAwIDguNCA0LjYgMTUuNCAxMS4xIDE5LjdMMy41IDI0MmMtMS43IDYuOSAyLjEgMTQgNy42IDE0aDQxLjhjNS41IDAgOS4zLTcuMSA3LjYtMTRsLTE1LjYtNjIuM0M1MS40IDE3NS40IDU2IDE2OC40IDU2IDE2MGMwLTguOC01LTE2LjEtMTItMjAuM1Y4Ny4xbDY2IDE1LjljLTguNiAxNy4yLTE0IDM2LjQtMTQgNTcgMCA3MC43IDU3LjMgMTI4IDEyOCAxMjhzMTI4LTU3LjMgMTI4LTEyOGMwLTIwLjYtNS4zLTM5LjgtMTQtNTdsOTYuMy0yMy4yYzE4LjItNC40IDE4LjItMjcuMSAwLTMxLjVsLTE5MC40LTQ2Yy0xMy0zLjEtMjYuNy0zLjEtMzkuNyAwTDEzLjYgNDguMmMtMTguMSA0LjQtMTguMSAyNy4yIDAgMzEuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VySW5qdXJlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNzcuMzcgMTEuOThDMjYxLjA4IDQuNDcgMjQzLjExIDAgMjI0IDBjLTUzLjY5IDAtOTkuNSAzMy4xMy0xMTguNTEgODBoODEuMTlsOTAuNjktNjguMDJ6TTM0Mi41MSA4MGMtNy45LTE5LjQ3LTIwLjY3LTM2LjItMzYuNDktNDkuNTJMMjM5Ljk5IDgwaDEwMi41MnpNMjI0IDI1NmM3MC42OSAwIDEyOC01Ny4zMSAxMjgtMTI4IDAtNS40OC0uOTUtMTAuNy0xLjYxLTE2SDk3LjYxYy0uNjcgNS4zLTEuNjEgMTAuNTItMS42MSAxNiAwIDcwLjY5IDU3LjMxIDEyOCAxMjggMTI4ek04MCAyOTkuN1Y1MTJoMTI4LjI2bC05OC40NS0yMjEuNTJBMTMyLjgzNSAxMzIuODM1IDAgMCAwIDgwIDI5OS43ek0wIDQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4VjMyMC4yNEMxOC44OCAzNDQuODkgMCAzODEuMjYgMCA0MjIuNFY0NjR6bTI1Ni00OGgtNTUuMzhsNDIuNjcgOTZIMjU2YzI2LjQ3IDAgNDgtMjEuNTMgNDgtNDhzLTIxLjUzLTQ4LTQ4LTQ4em01Ny42LTEyOGgtMTYuNzFjLTIyLjI0IDEwLjE4LTQ2Ljg4IDE2LTcyLjg5IDE2cy01MC42NS01LjgyLTcyLjg5LTE2aC03LjM3bDQyLjY3IDk2SDI1NmM0NC4xMSAwIDgwIDM1Ljg5IDgwIDgwIDAgMTguMDgtNi4yNiAzNC41OS0xNi40MSA0OEg0MDBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDEuNmMwLTc0LjIzLTYwLjE3LTEzNC40LTEzNC40LTEzNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJMb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZBMTI4IDEyOCAwIDEgMCA5NiAxMjhhMTI4IDEyOCAwIDAgMCAxMjggMTI4em05NiA2NGE2My4wOCA2My4wOCAwIDAgMSA4LjEtMzAuNWMtNC44LS41LTkuNS0xLjUtMTQuNS0xLjVoLTE2LjdhMTc0LjA4IDE3NC4wOCAwIDAgMS0xNDUuOCAwaC0xNi43QTEzNC40MyAxMzQuNDMgMCAwIDAgMCA0MjIuNFY0NjRhNDggNDggMCAwIDAgNDggNDhoMjgwLjlhNjMuNTQgNjMuNTQgMCAwIDEtOC45LTMyem0yODgtMzJoLTMydi04MGE4MCA4MCAwIDAgMC0xNjAgMHY4MGgtMzJhMzIgMzIgMCAwIDAtMzIgMzJ2MTYwYTMyIDMyIDAgMCAwIDMyIDMyaDIyNGEzMiAzMiAwIDAgMCAzMi0zMlYzMjBhMzIgMzIgMCAwIDAtMzItMzJ6TTQ5NiA0MzJhMzIgMzIgMCAxIDEgMzItMzIgMzIgMzIgMCAwIDEtMzIgMzJ6bTMyLTE0NGgtNjR2LTgwYTMyIDMyIDAgMCAxIDY0IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4ek0xMDQgNDI0YzAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjQtMTAuNy0yNC0yNC0yNC0yNCAxMC43LTI0IDI0em0yMTYtMTM1LjR2NDljMzYuNSA3LjQgNjQgMzkuOCA2NCA3OC40djQxLjdjMCA3LjYtNS40IDE0LjItMTIuOSAxNS43bC0zMi4yIDYuNGMtNC4zLjktOC41LTEuOS05LjQtNi4zbC0zLjEtMTUuN2MtLjktNC4zIDEuOS04LjYgNi4zLTkuNGwxOS4zLTMuOVY0MTZjMC02Mi44LTk2LTY1LjEtOTYgMS45djI2LjdsMTkuMyAzLjljNC4zLjkgNy4xIDUuMSA2LjMgOS40bC0zLjEgMTUuN2MtLjkgNC4zLTUuMSA3LjEtOS40IDYuM2wtMzEuMi00LjJjLTcuOS0xLjEtMTMuOC03LjgtMTMuOC0xNS45VjQxNmMwLTM4LjYgMjcuNS03MC45IDY0LTc4LjR2LTQ1LjJjLTIuMi43LTQuNCAxLjEtNi42IDEuOS0xOCA2LjMtMzcuMyA5LjgtNTcuNCA5LjhzLTM5LjQtMy41LTU3LjQtOS44Yy03LjQtMi42LTE0LjktNC4yLTIyLjYtNS4ydjgxLjZjMjMuMSA2LjkgNDAgMjguMSA0MCA1My40IDAgMzAuOS0yNS4xIDU2LTU2IDU2cy01Ni0yNS4xLTU2LTU2YzAtMjUuMyAxNi45LTQ2LjUgNDAtNTMuNHYtODAuNEM0OC41IDMwMSAwIDM1NS44IDAgNDIyLjR2NDQuOEMwIDQ5MS45IDIwLjEgNTEyIDQ0LjggNTEyaDM1OC40YzI0LjcgMCA0NC44LTIwLjEgNDQuOC00NC44di00NC44YzAtNzItNTYuOC0xMzAuMy0xMjgtMTMzLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyNCAyMDhINDMyYy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDE5MmM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnptLTQwMCA0OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck5pbmphIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMyNS40IDI4OS4yTDIyNCAzOTAuNiAxMjIuNiAyODkuMkM1NCAyOTUuMyAwIDM1Mi4yIDAgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDEuNmMwLTcwLjItNTQtMTI3LjEtMTIyLjYtMTMzLjJ6TTMyIDE5MmMyNy4zIDAgNTEuOC0xMS41IDY5LjItMjkuNyAxNS4xIDUzLjkgNjQgOTMuNyAxMjIuOCA5My43IDcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDBjLTUwLjQgMC05My42IDI5LjQtMTE0LjUgNzEuOEM5Mi4xIDQ3LjggNjQgMzIgMzIgMzJjMCAzMy40IDE3LjEgNjIuOCA0My4xIDgwLTI2IDE3LjItNDMuMSA0Ni42LTQzLjEgODB6bTE0NC05Nmg5NmMxNy43IDAgMzIgMTQuMyAzMiAzMkgxNDRjMC0xNy43IDE0LjMtMzIgMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlck51cnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMxOS40MSwzMjAsMjI0LDQxNS4zOSwxMjguNTksMzIwQzU3LjEsMzIzLjEsMCwzODEuNiwwLDQ1My43OUE1OC4yMSw1OC4yMSwwLDAsMCw1OC4yMSw1MTJIMzg5Ljc5QTU4LjIxLDU4LjIxLDAsMCwwLDQ0OCw0NTMuNzlDNDQ4LDM4MS42LDM5MC45LDMyMy4xLDMxOS40MSwzMjBaTTIyNCwzMDRBMTI4LDEyOCwwLDAsMCwzNTIsMTc2VjY1LjgyYTMyLDMyLDAsMCwwLTIwLjc2LTMwTDI0Ni40Nyw0LjA3YTY0LDY0LDAsMCwwLTQ0Ljk0LDBMMTE2Ljc2LDM1Ljg2QTMyLDMyLDAsMCwwLDk2LDY1LjgyVjE3NkExMjgsMTI4LDAsMCwwLDIyNCwzMDRaTTE4NCw3MS42N2E1LDUsMCwwLDEsNS01aDIxLjY3VjQ1YTUsNSwwLDAsMSw1LTVoMTYuNjZhNSw1LDAsMCwxLDUsNVY2Ni42N0gyNTlhNSw1LDAsMCwxLDUsNVY4OC4zM2E1LDUsMCwwLDEtNSw1SDIzNy4zM1YxMTVhNSw1LDAsMCwxLTUsNUgyMTUuNjdhNSw1LDAsMCwxLTUtNVY5My4zM0gxODlhNSw1LDAsMCwxLTUtNVpNMTQ0LDE2MEgzMDR2MTZhODAsODAsMCwwLDEtMTYwLDBaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0IDIwOGgtNjR2LTY0YzAtOC44LTcuMi0xNi0xNi0xNmgtMzJjLTguOCAwLTE2IDcuMi0xNiAxNnY2NGgtNjRjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjR2NjRjMCA4LjggNy4yIDE2IDE2IDE2aDMyYzguOCAwIDE2LTcuMiAxNi0xNnYtNjRoNjRjOC44IDAgMTYtNy4yIDE2LTE2di0zMmMwLTguOC03LjItMTYtMTYtMTZ6bS00MDAgNDhjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJTZWNyZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzgzLjkgMzA4LjNsMjMuOS02Mi42YzQtMTAuNS0zLjctMjEuNy0xNS0yMS43aC01OC41YzExLTE4LjkgMTcuOC00MC42IDE3LjgtNjR2LS4zYzM5LjItNy44IDY0LTE5LjEgNjQtMzEuNyAwLTEzLjMtMjcuMy0yNS4xLTcwLjEtMzMtOS4yLTMyLjgtMjctNjUuOC00MC42LTgyLjgtOS41LTExLjktMjUuOS0xNS42LTM5LjUtOC44bC0yNy42IDEzLjhjLTkgNC41LTE5LjYgNC41LTI4LjYgMEwxODIuMSAzLjRjLTEzLjYtNi44LTMwLTMuMS0zOS41IDguOC0xMy41IDE3LTMxLjQgNTAtNDAuNiA4Mi44LTQyLjcgNy45LTcwIDE5LjctNzAgMzMgMCAxMi42IDI0LjggMjMuOSA2NCAzMS43di4zYzAgMjMuNCA2LjggNDUuMSAxNy44IDY0SDU2LjNjLTExLjUgMC0xOS4yIDExLjctMTQuNyAyMi4zbDI1LjggNjAuMkMyNy4zIDMyOS44IDAgMzcyLjcgMCA0MjIuNHY0NC44QzAgNDkxLjkgMjAuMSA1MTIgNDQuOCA1MTJoMzU4LjRjMjQuNyAwIDQ0LjgtMjAuMSA0NC44LTQ0Ljh2LTQ0LjhjMC00OC40LTI1LjgtOTAuNC02NC4xLTExNC4xek0xNzYgNDgwbC00MS42LTE5MiA0OS42IDMyIDI0IDQwLTMyIDEyMHptOTYgMGwtMzItMTIwIDI0LTQwIDQ5LjYtMzJMMjcyIDQ4MHptNDEuNy0yOTguNWMtMy45IDExLjktNyAyNC42LTE2LjUgMzMuNC0xMC4xIDkuMy00OCAyMi40LTY0LTI1LTIuOC04LjQtMTUuNC04LjQtMTguMyAwLTE3IDUwLjItNTYgMzIuNC02NCAyNS05LjUtOC44LTEyLjctMjEuNS0xNi41LTMzLjQtLjgtMi41LTYuMy01LjctNi4zLTUuOHYtMTAuOGMyOC4zIDMuNiA2MSA1LjggOTYgNS44czY3LjctMi4xIDk2LTUuOHYxMC44Yy0uMS4xLTUuNiAzLjItNi40IDUuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyU2hpZWxkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYyMi4zIDI3MS4xbC0xMTUuMi00NWMtNC4xLTEuNi0xMi42LTMuNy0yMi4yIDBsLTExNS4yIDQ1Yy0xMC43IDQuMi0xNy43IDE0LTE3LjcgMjQuOSAwIDExMS42IDY4LjcgMTg4LjggMTMyLjkgMjEzLjkgOS42IDMuNyAxOCAxLjYgMjIuMiAwQzU1OC40IDQ4OS45IDY0MCA0MjAuNSA2NDAgMjk2YzAtMTAuOS03LTIwLjctMTcuNy0yNC45ek00OTYgNDYyLjRWMjczLjNsOTUuNSAzNy4zYy01LjYgODcuMS02MC45IDEzNS40LTk1LjUgMTUxLjh6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em05NiA0MGMwLTIuNS44LTQuOCAxLjEtNy4yLTIuNS0uMS00LjktLjgtNy41LS44aC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzYuOCAwIDEzLjMtMS41IDE5LjItNC01NC00Mi45LTk5LjItMTE2LjctOTkuMi0yMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMy44IDQ1OC4xTDM2Mi4zIDI0OC4zQzQxMi4xIDIzMC43IDQ0OCAxODMuOCA0NDggMTI4IDQ0OCA1Ny4zIDM5MC43IDAgMzIwIDBjLTY3LjEgMC0xMjEuNSA1MS44LTEyNi45IDExNy40TDQ1LjUgMy40QzM4LjUtMiAyOC41LS44IDIzIDYuMkwzLjQgMzEuNGMtNS40IDctNC4yIDE3IDIuOCAyMi40bDU4OC40IDQ1NC43YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS40LTYuOCA0LjEtMTYuOS0yLjktMjIuM3pNOTYgNDIyLjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MC4yTDIwNy40IDI5MC4zQzE0NC4yIDMwMS4zIDk2IDM1NiA5NiA0MjIuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVc2VyVGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzMC42IDM2NC45bC05MC4zLTkwLjJjLTEyLTEyLTI4LjMtMTguNy00NS4zLTE4LjdoLTc5LjNjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjc5LjJjMCAxNyA2LjcgMzMuMiAxOC43IDQ1LjJsOTAuMyA5MC4yYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDkyLjUtOTIuNWMxMi42LTEyLjUgMTIuNi0zMi43LjEtNDUuMnptLTE4Mi44LTIxYy0xMy4zIDAtMjQtMTAuNy0yNC0yNHMxMC43LTI0IDI0LTI0IDI0IDEwLjcgMjQgMjRjMCAxMy4yLTEwLjcgMjQtMjQgMjR6bS0yMjMuOC04OGM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOEMzNTIgNTcuMyAyOTQuNyAwIDIyNCAwUzk2IDU3LjMgOTYgMTI4YzAgNzAuNiA1Ny4zIDEyNy45IDEyOCAxMjcuOXptMTI3LjggMTExLjJWMjk0Yy0xMi4yLTMuNi0yNC45LTYuMi0zOC4yLTYuMmgtMTYuN2MtMjIuMiAxMC4yLTQ2LjkgMTYtNzIuOSAxNnMtNTAuNi01LjgtNzIuOS0xNmgtMTYuN0M2MC4yIDI4Ny45IDAgMzQ4LjEgMCA0MjIuM3Y0MS42YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMxNS41IDAgMjkuMS03LjUgMzcuOS0xOC45bC01OC01OGMtMTguMS0xOC4xLTI4LjEtNDIuMi0yOC4xLTY3Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRpZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yMjQgMjU2YzcwLjcgMCAxMjgtNTcuMyAxMjgtMTI4UzI5NC43IDAgMjI0IDAgOTYgNTcuMyA5NiAxMjhzNTcuMyAxMjggMTI4IDEyOHptOTUuOCAzMi42TDI3MiA0ODBsLTMyLTEzNiAzMi01NmgtOTZsMzIgNTYtMzIgMTM2LTQ3LjgtMTkxLjRDNTYuOSAyOTIgMCAzNTAuMyAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03Mi4xLTU2LjktMTMwLjQtMTI4LjItMTMzLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlclRpbWVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU4OS42IDI0MGw0NS42LTQ1LjZjNi4zLTYuMyA2LjMtMTYuNSAwLTIyLjhsLTIyLjgtMjIuOGMtNi4zLTYuMy0xNi41LTYuMy0yMi44IDBMNTQ0IDE5NC40bC00NS42LTQ1LjZjLTYuMy02LjMtMTYuNS02LjMtMjIuOCAwbC0yMi44IDIyLjhjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDQ1LjYgNDUuNi00NS42IDQ1LjZjLTYuMyA2LjMtNi4zIDE2LjUgMCAyMi44bDIyLjggMjIuOGM2LjMgNi4zIDE2LjUgNi4zIDIyLjggMGw0NS42LTQ1LjYgNDUuNiA0NS42YzYuMyA2LjMgMTYuNSA2LjMgMjIuOCAwbDIyLjgtMjIuOGM2LjMtNi4zIDYuMy0xNi41IDAtMjIuOEw1ODkuNiAyNDB6TTIyNCAyNTZjNzAuNyAwIDEyOC01Ny4zIDEyOC0xMjhTMjk0LjcgMCAyMjQgMCA5NiA1Ny4zIDk2IDEyOHM1Ny4zIDEyOCAxMjggMTI4em04OS42IDMyaC0xNi43Yy0yMi4yIDEwLjItNDYuOSAxNi03Mi45IDE2cy01MC42LTUuOC03Mi45LTE2aC0xNi43QzYwLjIgMjg4IDAgMzQ4LjIgMCA0MjIuNFY0NjRjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4di00MS42YzAtNzQuMi02MC4yLTEzNC40LTEzNC40LTEzNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjI0IDI1NmM3MC43IDAgMTI4LTU3LjMgMTI4LTEyOFMyOTQuNyAwIDIyNCAwIDk2IDU3LjMgOTYgMTI4czU3LjMgMTI4IDEyOCAxMjh6bTg5LjYgMzJoLTE2LjdjLTIyLjIgMTAuMi00Ni45IDE2LTcyLjkgMTZzLTUwLjYtNS44LTcyLjktMTZoLTE2LjdDNjAuMiAyODggMCAzNDguMiAwIDQyMi40VjQ2NGMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDh2LTQxLjZjMC03NC4yLTYwLjItMTM0LjQtMTM0LjQtMTM0LjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXNlcnNDb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjEwLjUgMzQxLjNjMi42LTE0LjEgMi42LTI4LjUgMC00Mi42bDI1LjgtMTQuOWMzLTEuNyA0LjMtNS4yIDMuMy04LjUtNi43LTIxLjYtMTguMi00MS4yLTMzLjItNTcuNC0yLjMtMi41LTYtMy4xLTktMS40bC0yNS44IDE0LjljLTEwLjktOS4zLTIzLjQtMTYuNS0zNi45LTIxLjN2LTI5LjhjMC0zLjQtMi40LTYuNC01LjctNy4xLTIyLjMtNS00NS00LjgtNjYuMiAwLTMuMy43LTUuNyAzLjctNS43IDcuMXYyOS44Yy0xMy41IDQuOC0yNiAxMi0zNi45IDIxLjNsLTI1LjgtMTQuOWMtMi45LTEuNy02LjctMS4xLTkgMS40LTE1IDE2LjItMjYuNSAzNS44LTMzLjIgNTcuNC0xIDMuMy40IDYuOCAzLjMgOC41bDI1LjggMTQuOWMtMi42IDE0LjEtMi42IDI4LjUgMCA0Mi42bC0yNS44IDE0LjljLTMgMS43LTQuMyA1LjItMy4zIDguNSA2LjcgMjEuNiAxOC4yIDQxLjEgMzMuMiA1Ny40IDIuMyAyLjUgNiAzLjEgOSAxLjRsMjUuOC0xNC45YzEwLjkgOS4zIDIzLjQgMTYuNSAzNi45IDIxLjN2MjkuOGMwIDMuNCAyLjQgNi40IDUuNyA3LjEgMjIuMyA1IDQ1IDQuOCA2Ni4yIDAgMy4zLS43IDUuNy0zLjcgNS43LTcuMXYtMjkuOGMxMy41LTQuOCAyNi0xMiAzNi45LTIxLjNsMjUuOCAxNC45YzIuOSAxLjcgNi43IDEuMSA5LTEuNCAxNS0xNi4yIDI2LjUtMzUuOCAzMy4yLTU3LjQgMS0zLjMtLjQtNi44LTMuMy04LjVsLTI1LjgtMTQuOXpNNDk2IDM2OC41Yy0yNi44IDAtNDguNS0yMS44LTQ4LjUtNDguNXMyMS44LTQ4LjUgNDguNS00OC41IDQ4LjUgMjEuOCA0OC41IDQ4LjUtMjEuNyA0OC41LTQ4LjUgNDguNXpNOTYgMjI0YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMjI0IDMyYzEuOSAwIDMuNy0uNSA1LjYtLjYgOC4zLTIxLjcgMjAuNS00Mi4xIDM2LjMtNTkuMiA3LjQtOCAxNy45LTEyLjYgMjguOS0xMi42IDYuOSAwIDEzLjcgMS44IDE5LjYgNS4zbDcuOSA0LjZjLjgtLjUgMS42LS45IDIuNC0xLjQgNy0xNC42IDExLjItMzAuOCAxMS4yLTQ4IDAtNjEuOS01MC4xLTExMi0xMTItMTEyUzIwOCA4Mi4xIDIwOCAxNDRjMCA2MS45IDUwLjEgMTEyIDExMiAxMTJ6bTEwNS4yIDE5NC41Yy0yLjMtMS4yLTQuNi0yLjYtNi44LTMuOS04LjIgNC44LTE1LjMgOS44LTI3LjUgOS44LTEwLjkgMC0yMS40LTQuNi0yOC45LTEyLjYtMTguMy0xOS44LTMyLjMtNDMuOS00MC4yLTY5LjYtMTAuNy0zNC41IDI0LjktNDkuNyAyNS44LTUwLjMtLjEtMi42LS4xLTUuMiAwLTcuOGwtNy45LTQuNmMtMy44LTIuMi03LTUtOS44LTguMS0zLjMuMi02LjUuNi05LjguNi0yNC42IDAtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjU1LjRjLTMuNy02LTYuMi0xMi44LTYuMi0yMC4zdi05LjJ6TTE3My4xIDI3NC42QzE2MS41IDI2My4xIDE0NS42IDI1NiAxMjggMjU2SDY0Yy0zNS4zIDAtNjQgMjguNy02NCA2NHYzMmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg2NS45YzYuMy00Ny40IDM0LjktODcuMyA3NS4yLTEwOS40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMyLjY1LDIxMi4zMiwzNi4yMSwxMzcuNzhBNjMuNCw2My40LDAsMCwwLDMyLDE2MGE2My44NCw2My44NCwwLDAsMCwxMDAuNjUsNTIuMzJabTQwLjQ0LDYyLjI4QTYzLjc5LDYzLjc5LDAsMCwwLDEyOCwyNTZINjRBNjQuMDYsNjQuMDYsMCwwLDAsMCwzMjB2MzJhMzIsMzIsMCwwLDAsMzIsMzJIOTcuOTFBMTQ2LjYyLDE0Ni42MiwwLDAsMSwxNzMuMDksMjc0LjZaTTU0NCwyMjRhNjQsNjQsMCwxLDAtNjQtNjRBNjQuMDYsNjQuMDYsMCwwLDAsNTQ0LDIyNFpNNTAwLjU2LDM1NS4xMWExMTQuMjQsMTE0LjI0LDAsMCwwLTg0LjQ3LTY1LjI4TDM2MSwyNDcuMjNjNDEuNDYtMTYuMyw3MS01NS45Miw3MS0xMDMuMjNBMTExLjkzLDExMS45MywwLDAsMCwzMjAsMzJjLTU3LjE0LDAtMTAzLjY5LDQyLjgzLTExMC42LDk4LjA4TDQ1LjQ2LDMuMzhBMTYsMTYsMCwwLDAsMjMsNi4xOUwzLjM3LDMxLjQ2QTE2LDE2LDAsMCwwLDYuMTgsNTMuOTFMNTk0LjUzLDUwOC42M0ExNiwxNiwwLDAsMCw2MTcsNTA1LjgybDE5LjY0LTI1LjI3YTE2LDE2LDAsMCwwLTIuODEtMjIuNDVaTTEyOCw0MDMuMjFWNDMyYTQ4LDQ4LDAsMCwwLDQ4LDQ4SDQ2NGE0Ny40NSw0Ny40NSwwLDAsMCwxMi41Ny0xLjg3TDIzMiwyODkuMTNDMTczLjc0LDI5NC44MywxMjgsMzQzLjQyLDEyOCw0MDMuMjFaTTU3NiwyNTZINTEyYTYzLjc5LDYzLjc5LDAsMCwwLTQ1LjA5LDE4LjZBMTQ2LjI5LDE0Ni4yOSwwLDAsMSw1NDIsMzg0aDY2YTMyLDMyLDAsMCwwLDMyLTMyVjMyMEE2NC4wNiw2NC4wNiwwLDAsMCw1NzYsMjU2WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVVzZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTk2IDIyNGMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6bTQ0OCAwYzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptMzIgMzJoLTY0Yy0xNy42IDAtMzMuNSA3LjEtNDUuMSAxOC42IDQwLjMgMjIuMSA2OC45IDYyIDc1LjEgMTA5LjRoNjZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTMyYzAtMzUuMy0yOC43LTY0LTY0LTY0em0tMjU2IDBjNjEuOSAwIDExMi01MC4xIDExMi0xMTJTMzgxLjkgMzIgMzIwIDMyIDIwOCA4Mi4xIDIwOCAxNDRzNTAuMSAxMTIgMTEyIDExMnptNzYuOCAzMmgtOC4zYy0yMC44IDEwLTQzLjkgMTYtNjguNSAxNnMtNDcuNi02LTY4LjUtMTZoLTguM0MxNzkuNiAyODggMTI4IDMzOS42IDEyOCA0MDMuMlY0MzJjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0yOC44YzAtNjMuNi01MS42LTExNS4yLTExNS4yLTExNS4yem0tMjIzLjctMTMuNEMxNjEuNSAyNjMuMSAxNDUuNiAyNTYgMTI4IDI1Nkg2NGMtMzUuMyAwLTY0IDI4LjctNjQgNjR2MzJjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjUuOWM2LjMtNDcuNCAzNC45LTg3LjMgNzUuMi0xMDkuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFVdGVuc2lsU3Bvb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwLjEgMzEuOWMtNTUtNTUuMS0xNjQuOS0zNC41LTIyNy44IDI4LjUtNDkuMyA0OS4zLTU1LjEgMTEwLTI4LjggMTYwLjRMOSA0MTMuMmMtMTEuNiAxMC41LTEyLjEgMjguNS0xIDM5LjVMNTkuMyA1MDRjMTEgMTEgMjkuMSAxMC41IDM5LjUtMS4xbDE5Mi40LTIxNC40YzUwLjQgMjYuMyAxMTEuMSAyMC41IDE2MC40LTI4LjggNjMtNjIuOSA4My42LTE3Mi44IDI4LjUtMjI3Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVXRlbnNpbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQxNiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjA3LjkgMTUuMmMuOCA0LjcgMTYuMSA5NC41IDE2LjEgMTI4LjggMCA1Mi4zLTI3LjggODkuNi02OC45IDEwNC42TDE2OCA0ODYuN2MuNyAxMy43LTEwLjIgMjUuMy0yNCAyNS4zSDgwYy0xMy43IDAtMjQuNy0xMS41LTI0LTI1LjNsMTIuOS0yMzguMUMyNy43IDIzMy42IDAgMTk2LjIgMCAxNDQgMCAxMDkuNiAxNS4zIDE5LjkgMTYuMSAxNS4yIDE5LjMtNS4xIDYxLjQtNS40IDY0IDE2LjN2MTQxLjJjMS4zIDMuNCAxNS4xIDMuMiAxNiAwIDEuNC0yNS4zIDcuOS0xMzkuMiA4LTE0MS44IDMuMy0yMC44IDQ0LjctMjAuOCA0Ny45IDAgLjIgMi43IDYuNiAxMTYuNSA4IDE0MS44LjkgMy4yIDE0LjggMy40IDE2IDBWMTYuM2MyLjYtMjEuNiA0NC44LTIxLjQgNDgtMS4xem0xMTkuMiAyODUuN2wtMTUgMTg1LjFjLTEuMiAxNCA5LjkgMjYgMjMuOSAyNmg1NmMxMy4zIDAgMjQtMTAuNyAyNC0yNFYyNGMwLTEzLjItMTAuNy0yNC0yNC0yNC04Mi41IDAtMjIxLjQgMTc4LjUtNjQuOSAzMDAuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZWN0b3JTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTEyIDEyOFYzMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyaC05NmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMkgxNjBjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMkgzMkMxNC4zMyAwIDAgMTQuMzMgMCAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMydjE5MmMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnY5NmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDk2YzE3LjY3IDAgMzItMTQuMzMgMzItMzJoMTkyYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoOTZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnYtOTZjMC0xNy42Ny0xNC4zMy0zMi0zMi0zMlYxNjBjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMnptLTk2LTY0aDMydjMyaC0zMlY2NHpNNjQgNjRoMzJ2MzJINjRWNjR6bTMyIDM4NEg2NHYtMzJoMzJ2MzJ6bTM1MiAwaC0zMnYtMzJoMzJ2MzJ6bS0zMi05NmgtMzJjLTE3LjY3IDAtMzIgMTQuMzMtMzIgMzJ2MzJIMTYwdi0zMmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMySDk2VjE2MGgzMmMxNy42NyAwIDMyLTE0LjMzIDMyLTMyVjk2aDE5MnYzMmMwIDE3LjY3IDE0LjMzIDMyIDMyIDMyaDMydjE5MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c0RvdWJsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTc2YzAtNzkuNS02NC41LTE0NC0xNDQtMTQ0UzAgOTYuNSAwIDE3NmMwIDY4LjUgNDcuOSAxMjUuOSAxMTIgMTQwLjRWMzY4SDc2Yy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDM2djM2YzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDM2YzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0zNnYtNTEuNmM2NC4xLTE0LjUgMTEyLTcxLjkgMTEyLTE0MC40em0tMjI0IDBjMC00NC4xIDM1LjktODAgODAtODBzODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwLTgwLTM1LjktODAtODB6bTMzNiAxNDAuNFYzNjhoMzZjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMmgtMzZ2MzZjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEydi0zNmgtMzZjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNDBjMC02LjYgNS40LTEyIDEyLTEyaDM2di01MS42Yy0yMS4yLTQuOC00MC42LTE0LjMtNTcuMi0yNy4zIDE0LTE2LjcgMjUtMzYgMzIuMS01Ny4xIDE0LjUgMTQuOCAzNC43IDI0IDU3LjEgMjQgNDQuMSAwIDgwLTM1LjkgODAtODBzLTM1LjktODAtODAtODBjLTIyLjMgMC00Mi42IDkuMi01Ny4xIDI0LTcuMS0yMS4xLTE4LTQwLjQtMzIuMS01Ny4xQzMwMy40IDQzLjYgMzM0LjMgMzIgMzY4IDMyYzc5LjUgMCAxNDQgNjQuNSAxNDQgMTQ0IDAgNjguNS00Ny45IDEyNS45LTExMiAxNDAuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZW51c01hcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY0IDBoLTc5Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWwxNi45IDE2LjktNDguNyA0OC43QzQyMi41IDcyLjEgMzk2LjIgNjQgMzY4IDY0Yy0zMy43IDAtNjQuNiAxMS42LTg5LjIgMzAuOSAxNCAxNi43IDI1IDM2IDMyLjEgNTcuMSAxNC41LTE0LjggMzQuNy0yNCA1Ny4xLTI0IDQ0LjEgMCA4MCAzNS45IDgwIDgwcy0zNS45IDgwLTgwIDgwYy0yMi4zIDAtNDIuNi05LjItNTcuMS0yNC03LjEgMjEuMS0xOCA0MC40LTMyLjEgNTcuMSAyNC41IDE5LjQgNTUuNSAzMC45IDg5LjIgMzAuOSA3OS41IDAgMTQ0LTY0LjUgMTQ0LTE0NCAwLTI4LjItOC4xLTU0LjUtMjIuMS03Ni43bDQ4LjctNDguNyAxNi45IDE2LjljMi40IDIuNCA1LjQgMy41IDguNCAzLjUgNi4yIDAgMTIuMS00LjggMTIuMS0xMlYxMmMwLTYuNi01LjQtMTItMTItMTJ6TTE0NCA2NEM2NC41IDY0IDAgMTI4LjUgMCAyMDhjMCA2OC41IDQ3LjkgMTI1LjkgMTEyIDE0MC40VjQwMEg3NmMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmgzNnYzNmMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi0zNmgzNmM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMzZ2LTUxLjZjNjQuMS0xNC42IDExMi03MS45IDExMi0xNDAuNCAwLTc5LjUtNjQuNS0xNDQtMTQ0LTE0NHptMCAyMjRjLTQ0LjEgMC04MC0zNS45LTgwLTgwczM1LjktODAgODAtODAgODAgMzUuOSA4MCA4MC0zNS45IDgwLTgwIDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZlbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAyODggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI4OCAxNzZjMC03OS41LTY0LjUtMTQ0LTE0NC0xNDRTMCA5Ni41IDAgMTc2YzAgNjguNSA0Ny45IDEyNS45IDExMiAxNDAuNFYzNjhINzZjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoMzZ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtMzZoMzZjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTM2di01MS42YzY0LjEtMTQuNSAxMTItNzEuOSAxMTItMTQwLjR6bS0yMjQgMGMwLTQ0LjEgMzUuOS04MCA4MC04MHM4MCAzNS45IDgwIDgwLTM1LjkgODAtODAgODAtODAtMzUuOS04MC04MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWZXN0UGF0Y2hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMjUyLDIzOS44NzcsMzg0LDE2MFYzMkEzMiwzMiwwLDAsMCwzNTIsMEgzMjBhMjMuOTgyLDIzLjk4MiwwLDAsMC0xMy4zMTIsNC4wMzFsLTI1LDE2LjY3MmExMDMuNzk0LDEwMy43OTQsMCwwLDEtMTE1LjM3NiwwbC0yNS0xNi42NzJBMjMuOTgyLDIzLjk4MiwwLDAsMCwxMjgsMEg5NkEzMiwzMiwwLDAsMCw2NCwzMlYxNjBMMTAuNzQ4LDIzOS44NzdBNjQsNjQsMCwwLDAsMCwyNzUuMzc3VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgxOTJWMjg4YTMxLjk4NywzMS45ODcsMCwwLDEsMS42NDMtMTAuMTE5TDIwNy4xMzUsMjM3LjQsMTUwLjE4OCw2Ni41NjFBMTUxLjU3OSwxNTEuNTc5LDAsMCwwLDIyNCw4Ni4yMzRhMTUxLjU2NSwxNTEuNTY1LDAsMCwwLDczLjgxMS0xOS42NjhMMjI0LDI4OFY1MTJINDE2YTMyLDMyLDAsMCwwLDMyLTMyVjI3NS4zNzdBNjQsNjQsMCwwLDAsNDM3LjI1MiwyMzkuODc3Wk02My41LDI3Mi40ODRhMTIuMDEsMTIuMDEsMCwwLDEsMTctMTYuOTY4bDE1LjUsMTUuNSwxNS41LTE1LjVhMTIuMDEsMTIuMDEsMCwwLDEsMTcsMTYuOTY4TDExMi45ODQsMjg4LDEyOC41LDMwMy41MTZhMTIuMDEsMTIuMDEsMCwwLDEtMTcsMTYuOTY4TDk2LDMwNC45ODRsLTE1LjUsMTUuNWExMi4wMSwxMi4wMSwwLDAsMS0xNy0xNi45NjhMNzkuMDE2LDI4OFpNOTYsNDU2YTQwLDQwLDAsMSwxLDQwLTQwQTQwLDQwLDAsMCwxLDk2LDQ1NlpNMzU5LjIyNywzMzUuNzg1LDMxMC43LDMzNmE2LjY3MSw2LjY3MSwwLDAsMS02LjctNi43bC4yMTUtNDguNTc0QTI0Ljk4NywyNC45ODcsMCwwLDEsMzMxLjQzLDI1Ni4xYzEyLjc4OSwxLjE2MiwyMi4xMjksMTIuNjE5LDIyLjA1NiwyNS40MTlsLS4wMzcsNS4wNTcsNS4wNTEtLjAzN2MxMi44MjYtLjAzNSwyNC4yMzYsOS4yNzUsMjUuNCwyMi4wNzZBMjQuOTQ4LDI0Ljk0OCwwLDAsMSwzNTkuMjI3LDMzNS43ODVaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmVzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzcuMjUyLDIzOS44NzcsMzg0LDE2MFYzMkEzMiwzMiwwLDAsMCwzNTIsMEgzMjBhMjQuMDIxLDI0LjAyMSwwLDAsMC0xMy4zMTIsNC4wMzFsLTI1LDE2LjY3MmExMDMuNzk0LDEwMy43OTQsMCwwLDEtMTE1LjM3NiwwbC0yNS0xNi42NzJBMjQuMDIxLDI0LjAyMSwwLDAsMCwxMjgsMEg5NkEzMiwzMiwwLDAsMCw2NCwzMlYxNjBMMTAuNzQ4LDIzOS44NzdBNjQsNjQsMCwwLDAsMCwyNzUuMzc3VjQ4MGEzMiwzMiwwLDAsMCwzMiwzMkgxOTJWMjg4YTMxLjk4NywzMS45ODcsMCwwLDEsMS42NDMtMTAuMTE5TDIwNy4xMzUsMjM3LjQsMTUwLjE4OCw2Ni41NjRBMTUxLjUxOCwxNTEuNTE4LDAsMCwwLDIyNCw4Ni4yMzRhMTUxLjU1LDE1MS41NSwwLDAsMCw3My44MTItMTkuNjcyTDIyNCwyODhWNTEySDQxNmEzMiwzMiwwLDAsMCwzMi0zMlYyNzUuMzc3QTY0LDY0LDAsMCwwLDQzNy4yNTIsMjM5Ljg3N1pNMTMxLjMxMiwzNzEuMzEybC00OCw0OGExNiwxNiwwLDAsMS0yMi42MjQtMjIuNjI0bDQ4LTQ4YTE2LDE2LDAsMCwxLDIyLjYyNCwyMi42MjRabTI1Niw0OGExNS45OTIsMTUuOTkyLDAsMCwxLTIyLjYyNCwwbC00OC00OGExNiwxNiwwLDAsMSwyMi42MjQtMjIuNjI0bDQ4LDQ4QTE1Ljk5MywxNS45OTMsMCwwLDEsMzg3LjMxMiw0MTkuMzEyWlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ4MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDc3LjcgMTg2LjFMMzA5LjUgMTguM2MtMy4xLTMuMS04LjItMy4xLTExLjMgMGwtMzQgMzMuOWMtMy4xIDMuMS0zLjEgOC4yIDAgMTEuM2wxMS4yIDExLjFMMzMgMzE2LjVjLTM4LjggMzguNy00NS4xIDEwMi05LjQgMTQzLjUgMjAuNiAyNCA0OS41IDM2IDc4LjQgMzUuOSAyNi40IDAgNTIuOC0xMCA3Mi45LTMwLjFsMjQ2LjMtMjQ1LjcgMTEuMiAxMS4xYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBsMzQtMzMuOWMzLjEtMyAzLjEtOC4xIDAtMTEuMnpNMzE4IDI1NkgxNjFsMTQ4LTE0Ny43IDc4LjUgNzguM0wzMTggMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpYWxzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcyIDY0aDI0djI0MGMwIDQ0LjEgMzUuOSA4MCA4MCA4MHM4MC0zNS45IDgwLTgwVjY0aDI0YzQuNCAwIDgtMy42IDgtOFY4YzAtNC40LTMuNi04LTgtOEg3MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptNzIgMGg2NHY5NmgtNjRWNjR6bTQ4MCAzODRIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoNjA4YzguOCAwIDE2LTcuMiAxNi0xNnYtMzJjMC04LjgtNy4yLTE2LTE2LTE2ek0zNjAgNjRoMjR2MjQwYzAgNDQuMSAzNS45IDgwIDgwIDgwczgwLTM1LjkgODAtODBWNjRoMjRjNC40IDAgOC0zLjYgOC04VjhjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHptNzIgMGg2NHY5NmgtNjRWNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlkZW9TbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOCA0NTguMWwtNTUtNDIuNWMxNS40LTEuNCAyOS4yLTEzLjcgMjkuMi0zMS4xdi0yNTdjMC0yNS41LTI5LjEtNDAuNC01MC40LTI1LjhMNDQ4IDE3Ny4zdjEzNy4ybC0zMi0yNC43di0xNzhjMC0yNi40LTIxLjQtNDcuOC00Ny44LTQ3LjhIMTIzLjlMNDUuNSAzLjRDMzguNS0yIDI4LjUtLjggMjMgNi4yTDMuNCAzMS40Yy01LjQgNy00LjIgMTcgMi44IDIyLjRMNDIuNyA4MiA0MTYgMzcwLjZsMTc4LjUgMTM4YzcgNS40IDE3IDQuMiAyMi41LTIuOGwxOS42LTI1LjNjNS41LTYuOSA0LjItMTctMi44LTIyLjR6TTMyIDQwMC4yYzAgMjYuNCAyMS40IDQ3LjggNDcuOCA0Ny44aDI4OC40YzExLjIgMCAyMS40LTQgMjkuNi0xMC41TDMyIDE1NC43djI0NS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpZGVvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi4yIDY0SDQ3LjhDMjEuNCA2NCAwIDg1LjQgMCAxMTEuOHYyODguNEMwIDQyNi42IDIxLjQgNDQ4IDQ3LjggNDQ4aDI4OC40YzI2LjQgMCA0Ny44LTIxLjQgNDcuOC00Ny44VjExMS44YzAtMjYuNC0yMS40LTQ3LjgtNDcuOC00Ny44em0xODkuNCAzNy43TDQxNiAxNzcuM3YxNTcuNGwxMDkuNiA3NS41YzIxLjIgMTQuNiA1MC40LS4zIDUwLjQtMjUuOFYxMjcuNWMwLTI1LjQtMjkuMS00MC40LTUwLjQtMjUuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWaWhhcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjMyLjg4IDQwMC43MUw1NDQgMzUydi02NGw1NS4xNi0xNy42OWMxMS43OS01LjkgMTEuNzktMjIuNzIgMC0yOC42Mkw0ODAgMTkydi02NGwyNy4zMS0xNi4zYzcuNzItNy43MiA1LjYxLTIwLjc0LTQuMTYtMjUuNjJMMzIwIDAgMTM2Ljg1IDg2LjA3Yy05Ljc3IDQuODgtMTEuODggMTcuOS00LjE2IDI1LjYyTDE2MCAxMjh2NjRMNDAuODQgMjQxLjY5Yy0xMS43OSA1LjktMTEuNzkgMjIuNzIgMCAyOC42Mkw5NiAyODh2NjRMNy4xMiA0MDAuNzFjLTUuNDIgMy42Mi03LjcgOS42My03IDE1LjI5LjYyIDUuMDEgMy41NyA5Ljc1IDguNzIgMTIuMzNMNjQgNDQ4djQ4YzAgOC44NCA3LjE2IDE2IDE2IDE2aDMyYzguODQgMCAxNi03LjE2IDE2LTE2di00OGgxNjB2NDhjMCA4Ljg0IDcuMTYgMTYgMTYgMTZoMzJjOC44NCAwIDE2LTcuMTYgMTYtMTZ2LTQ4aDE2MHY0OGMwIDguODQgNy4xNiAxNiAxNiAxNmgzMmM4Ljg0IDAgMTYtNy4xNiAxNi0xNnYtNDhsNTUuMTUtMTkuNjdjNS4xNi0yLjU4IDguMS03LjMyIDguNzItMTIuMzMuNzEtNS42Ny0xLjU3LTExLjY4LTYuOTktMTUuMjl6TTIyNCAxMjhoMTkydjY0SDIyNHYtNjR6bS02NCAyMjR2LTY0aDMyMHY2NEgxNjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXNTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTQsMjI3LjZIOTIuNEM3Ni43LDIyNy42LDY0LDI0MC4zLDY0LDI1NnMxMi43LDI4LjQsMjguNCwyOC40SDExNGM1MC43LDAsNzYuMSw2MS4zLDQwLjIsOTcuMUwxMzksMzk2LjggYy0xMS41LDEwLjctMTIuMiwyOC43LTEuNiw0MC4yczI4LjcsMTIuMiw0MC4yLDEuNmMwLjUtMC41LDEuMS0xLDEuNi0xLjZsMTUuMi0xNS4yYzM1LjgtMzUuOCw5Ny4xLTEwLjUsOTcuMSw0MC4ydjIxLjUgYzAsMTUuNywxMi44LDI4LjQsMjguNSwyOC40YzE1LjcsMCwyOC40LTEyLjcsMjguNC0yOC40VjQ2MmMwLTI2LjYsMTctNDUuOSwzOC4yLTUzLjRsLTI0NC41LTE4OSBDMTMzLjcsMjI0LjcsMTIzLjksMjI3LjUsMTE0LDIyNy42eiBNNjE3LDUwNS44bDE5LjYtMjUuM2M1LjQtNyw0LjItMTctMi44LTIyLjVMNDcwLjYsMzMyYzQuMi0yNS40LDI0LjktNDcuNSw1NS40LTQ3LjVoMjEuNSBjMTUuNywwLDI4LjQtMTIuNywyOC40LTI4LjRzLTEyLjctMjguNC0yOC40LTI4LjRINTI2Yy01MC43LDAtNzYuMS02MS4zLTQwLjItOTcuMWwxNS4yLTE1LjNjMTAuNy0xMS41LDEwLTI5LjUtMS42LTQwLjIgYy0xMC45LTEwLjEtMjcuNy0xMC4xLTM4LjYsMGwtMTUuMiwxNS4yYy0zNS44LDM1LjgtOTcuMSwxMC41LTk3LjEtNDAuMlYyOC41QzM0OC40LDEyLjcsMzM1LjcsMCwzMjAsMCBjLTE1LjcsMC0yOC40LDEyLjctMjguNCwyOC40VjUwYzAsNTAuNy02MS4zLDc2LjEtOTcuMSw0MC4yTDE3OS4yLDc1Yy0xMS4xLTExLjEtMjkuNC0xMC42LTQwLjUsMC41TDQ1LjUsMy40IGMtNy01LjQtMTctNC4yLTIyLjUsMi44TDMuNCwzMS41Yy01LjQsNy00LjIsMTcsMi44LDIyLjVsNTg4LjQsNDU0LjdDNjAxLjUsNTE0LjEsNjExLjYsNTEyLjgsNjE3LDUwNS44eiBNMzM1LjQsMjI3LjVsLTYyLjktNDguNiBjNC45LTEuOCwxMC4yLTIuOCwxNS40LTIuOWMyNi41LDAsNDgsMjEuNSw0OCw0OEMzMzYsMjI1LjIsMzM1LjUsMjI2LjMsMzM1LjQsMjI3LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVmlydXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgzLjU1LDIyNy41NUg0NjJjLTUwLjY4LDAtNzYuMDctNjEuMjctNDAuMjMtOTcuMTFMNDM3LDExNS4xOUEyOC40NCwyOC40NCwwLDAsMCwzOTYuOCw3NUwzODEuNTYsOTAuMjJjLTM1Ljg0LDM1LjgzLTk3LjExLDEwLjQ1LTk3LjExLTQwLjIzVjI4LjQ0YTI4LjQ1LDI4LjQ1LDAsMCwwLTU2LjksMFY1MGMwLDUwLjY4LTYxLjI3LDc2LjA2LTk3LjExLDQwLjIzTDExNS4yLDc1QTI4LjQ0LDI4LjQ0LDAsMCwwLDc1LDExNS4xOWwxNS4yNSwxNS4yNWMzNS44NCwzNS44NCwxMC40NSw5Ny4xMS00MC4yMyw5Ny4xMUgyOC40NWEyOC40NSwyOC40NSwwLDEsMCwwLDU2Ljg5SDUwYzUwLjY4LDAsNzYuMDcsNjEuMjgsNDAuMjMsOTcuMTJMNzUsMzk2LjhBMjguNDUsMjguNDUsMCwwLDAsMTE1LjIsNDM3bDE1LjI0LTE1LjI1YzM1Ljg0LTM1Ljg0LDk3LjExLTEwLjQ1LDk3LjExLDQwLjIzdjIxLjU0YTI4LjQ1LDI4LjQ1LDAsMCwwLDU2LjksMFY0NjJjMC01MC42OCw2MS4yNy03Ni4wNyw5Ny4xMS00MC4yM0wzOTYuOCw0MzdBMjguNDUsMjguNDUsMCwwLDAsNDM3LDM5Ni44bC0xNS4yNS0xNS4yNGMtMzUuODQtMzUuODQtMTAuNDUtOTcuMTIsNDAuMjMtOTcuMTJoMjEuNTRhMjguNDUsMjguNDUsMCwxLDAsMC01Ni44OVpNMjI0LDI3MmE0OCw0OCwwLDEsMSw0OC00OEE0OCw0OCwwLDAsMSwyMjQsMjcyWm04MCw1NmEyNCwyNCwwLDEsMSwyNC0yNEEyNCwyNCwwLDAsMSwzMDQsMzI4WlwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZpcnVzZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjI0LDM1Mkg2MTEuODhjLTI4LjUxLDAtNDIuNzktMzQuNDctMjIuNjMtNTQuNjNsOC41OC04LjU3YTE2LDE2LDAsMSwwLTIyLjYzLTIyLjYzbC04LjU3LDguNThDNTQ2LjQ3LDI5NC45MSw1MTIsMjgwLjYzLDUxMiwyNTIuMTJWMjQwYTE2LDE2LDAsMCwwLTMyLDB2MTIuMTJjMCwyOC41MS0zNC40Nyw0Mi43OS01NC42MywyMi42M2wtOC41Ny04LjU4YTE2LDE2LDAsMCwwLTIyLjYzLDIyLjYzbDguNTgsOC41N2MyMC4xNiwyMC4xNiw1Ljg4LDU0LjYzLTIyLjYzLDU0LjYzSDM2OGExNiwxNiwwLDAsMCwwLDMyaDEyLjEyYzI4LjUxLDAsNDIuNzksMzQuNDcsMjIuNjMsNTQuNjNsLTguNTgsOC41N2ExNiwxNiwwLDEsMCwyMi42MywyMi42M2w4LjU3LTguNThjMjAuMTYtMjAuMTYsNTQuNjMtNS44OCw1NC42MywyMi42M1Y0OTZhMTYsMTYsMCwwLDAsMzIsMFY0ODMuODhjMC0yOC41MSwzNC40Ny00Mi43OSw1NC42My0yMi42M2w4LjU3LDguNThhMTYsMTYsMCwxLDAsMjIuNjMtMjIuNjNsLTguNTgtOC41N0M1NjkuMDksNDE4LjQ3LDU4My4zNywzODQsNjExLjg4LDM4NEg2MjRhMTYsMTYsMCwwLDAsMC0zMlpNNDgwLDM4NGEzMiwzMiwwLDEsMSwzMi0zMkEzMiwzMiwwLDAsMSw0ODAsMzg0Wk0zNDYuNTEsMjEzLjMzaDE2LjE2YTIxLjMzLDIxLjMzLDAsMCwwLDAtNDIuNjZIMzQ2LjUxYy0zOCwwLTU3LjA1LTQ2LTMwLjE3LTcyLjg0bDExLjQzLTExLjQ0QTIxLjMzLDIxLjMzLDAsMCwwLDI5Ny42LDU2LjIzTDI4Ni4xNyw2Ny42NmMtMjYuODgsMjYuODgtNzIuODQsNy44NS03Mi44NC0zMC4xN1YyMS4zM2EyMS4zMywyMS4zMywwLDAsMC00Mi42NiwwVjM3LjQ5YzAsMzgtNDYsNTcuMDUtNzIuODQsMzAuMTdMODYuNCw1Ni4yM0EyMS4zMywyMS4zMywwLDAsMCw1Ni4yMyw4Ni4zOUw2Ny42Niw5Ny44M2MyNi44OCwyNi44OCw3Ljg1LDcyLjg0LTMwLjE3LDcyLjg0SDIxLjMzYTIxLjMzLDIxLjMzLDAsMCwwLDAsNDIuNjZIMzcuNDljMzgsMCw1Ny4wNSw0NiwzMC4xNyw3Mi44NEw1Ni4yMywyOTcuNkEyMS4zMywyMS4zMywwLDEsMCw4Ni40LDMyNy43N2wxMS40My0xMS40M2MyNi44OC0yNi44OCw3Mi44NC03Ljg1LDcyLjg0LDMwLjE3djE2LjE2YTIxLjMzLDIxLjMzLDAsMCwwLDQyLjY2LDBWMzQ2LjUxYzAtMzgsNDYtNTcuMDUsNzIuODQtMzAuMTdsMTEuNDMsMTEuNDNhMjEuMzMsMjEuMzMsMCwwLDAsMzAuMTctMzAuMTdsLTExLjQzLTExLjQzQzI4OS40NiwyNTkuMjksMzA4LjQ5LDIxMy4zMywzNDYuNTEsMjEzLjMzWk0xNjAsMTkyYTMyLDMyLDAsMSwxLDMyLTMyQTMyLDMyLDAsMCwxLDE2MCwxOTJabTgwLDMyYTE2LDE2LDAsMSwxLDE2LTE2QTE2LDE2LDAsMCwxLDI0MCwyMjRaXCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NiAxMjhhMTQ0IDE0NCAwIDAgMC0xMTkuNzQgMjI0SDI2My43NEExNDQgMTQ0IDAgMSAwIDE0NCA0MTZoMzUyYTE0NCAxNDQgMCAwIDAgMC0yODh6TTY0IDI3MmE4MCA4MCAwIDEgMSA4MCA4MCA4MCA4MCAwIDAgMS04MC04MHptNDMyIDgwYTgwIDgwIDAgMSAxIDgwLTgwIDgwIDgwIDAgMCAxLTgwIDgwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbGxleWJhbGxCYWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIzMS4zOSAyNDMuNDhhMjg1LjU2IDI4NS41NiAwIDAgMC0yMi43LTEwNS43Yy05MC44IDQyLjQtMTU3LjUgMTIyLjQtMTgwLjMgMjE2LjhhMjQ5IDI0OSAwIDAgMCA1Ni45IDgxLjEgMzMzLjg3IDMzMy44NyAwIDAgMSAxNDYuMS0xOTIuMnptLTM2LjktMTM0LjRhMjg0LjIzIDI4NC4yMyAwIDAgMC01Ny40LTcwLjdjLTkxIDQ5LjgtMTQ0LjggMTUyLjktMTI1IDI2Mi4yIDMzLjQtODMuMSA5OC40LTE1MiAxODIuNC0xOTEuNXptMTg3LjYgMTY1LjFjOC42LTk5LjgtMjcuMy0xOTcuNS05Ny41LTI2NC40LTE0LjctMS43LTUxLjYtNS41LTk4LjkgOC41QTMzMy44NyAzMzMuODcgMCAwIDEgMjc5LjE5IDI0MWEyODUgMjg1IDAgMCAwIDEwMi45IDMzLjE4em0tMTI0LjcgOS41YTI4Ni4zMyAyODYuMzMgMCAwIDAtODAuMiA3Mi42YzgyIDU3LjMgMTg0LjUgNzUuMSAyNzcuNSA0Ny44YTI0Ny4xNSAyNDcuMTUgMCAwIDAgNDIuMi04OS45IDMzNi4xIDMzNi4xIDAgMCAxLTgwLjkgMTAuNGMtNTQuNi0uMS0xMDguOS0xNC4xLTE1OC42LTQwLjl6bS05OC4zIDk5LjdjLTE1LjIgMjYtMjUuNyA1NC40LTMyLjEgODQuMmEyNDcuMDcgMjQ3LjA3IDAgMCAwIDI4OS0yMi4xYy0xMTIuOSAxNi4xLTIwMy4zLTI0LjgtMjU2LjktNjIuMXptMTgwLjMtMzYwLjZjNTUuMyA3MC40IDgyLjUgMTYxLjIgNzQuNiAyNTMuNmEyODYuNTkgMjg2LjU5IDAgMCAwIDg5LjctMTQuMmMwLTIgLjMtNCAuMy02IDAtMTA3LjgtNjguNy0xOTkuMS0xNjQuNi0yMzMuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3Mi4wNEwxMjYuMDYgMTYxSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg5LjAyYzAtMjEuNDctMjUuOTYtMzEuOTgtNDAuOTctMTYuOTh6bTEyMy4yIDEwOC4wOGMtMTEuNTgtNi4zMy0yNi4xOS0yLjE2LTMyLjYxIDkuNDUtNi4zOSAxMS42MS0yLjE2IDI2LjIgOS40NSAzMi42MUMzMjcuOTggMjI5LjI4IDMzNiAyNDIuNjIgMzM2IDI1N2MwIDE0LjM4LTguMDIgMjcuNzItMjAuOTIgMzQuODEtMTEuNjEgNi40MS0xNS44NCAyMS05LjQ1IDMyLjYxIDYuNDMgMTEuNjYgMjEuMDUgMTUuOCAzMi42MSA5LjQ1IDI4LjIzLTE1LjU1IDQ1Ljc3LTQ1IDQ1Ljc3LTc2Ljg4cy0xNy41NC02MS4zMi00NS43OC03Ni44N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3MS4wNUwxMjYuMDYgMTYwSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg4LjAyYzAtMjEuNDYtMjUuOTYtMzEuOTgtNDAuOTctMTYuOTd6TTQ2MS42NCAyNTZsNDUuNjQtNDUuNjRjNi4zLTYuMyA2LjMtMTYuNTIgMC0yMi44MmwtMjIuODItMjIuODJjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBMNDE2IDIxMC4zNmwtNDUuNjQtNDUuNjRjLTYuMy02LjMtMTYuNTItNi4zLTIyLjgyIDBsLTIyLjgyIDIyLjgyYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgyTDM3MC4zNiAyNTZsLTQ1LjYzIDQ1LjYzYy02LjMgNi4zLTYuMyAxNi41MiAwIDIyLjgybDIyLjgyIDIyLjgyYzYuMyA2LjMgMTYuNTIgNi4zIDIyLjgyIDBMNDE2IDMwMS42NGw0NS42NCA0NS42NGM2LjMgNi4zIDE2LjUyIDYuMyAyMi44MiAwbDIyLjgyLTIyLjgyYzYuMy02LjMgNi4zLTE2LjUyIDAtMjIuODJMNDYxLjY0IDI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI1NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE1IDcxbC04OSA4OUgyNGEyNCAyNCAwIDAgMC0yNCAyNHYxNDRhMjQgMjQgMCAwIDAgMjQgMjRoMTAyLjA2TDIxNSA0NDFjMTUgMTUgNDEgNC40NyA0MS0xN1Y4OGMwLTIxLjQ3LTI2LTMyLTQxLTE3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZvbHVtZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIxNS4wMyA3MS4wNUwxMjYuMDYgMTYwSDI0Yy0xMy4yNiAwLTI0IDEwLjc0LTI0IDI0djE0NGMwIDEzLjI1IDEwLjc0IDI0IDI0IDI0aDEwMi4wNmw4OC45NyA4OC45NWMxNS4wMyAxNS4wMyA0MC45NyA0LjQ3IDQwLjk3LTE2Ljk3Vjg4LjAyYzAtMjEuNDYtMjUuOTYtMzEuOTgtNDAuOTctMTYuOTd6bTIzMy4zMi01MS4wOGMtMTEuMTctNy4zMy0yNi4xOC00LjI0LTMzLjUxIDYuOTUtNy4zNCAxMS4xNy00LjIyIDI2LjE4IDYuOTUgMzMuNTEgNjYuMjcgNDMuNDkgMTA1LjgyIDExNi42IDEwNS44MiAxOTUuNTggMCA3OC45OC0zOS41NSAxNTIuMDktMTA1LjgyIDE5NS41OC0xMS4xNyA3LjMyLTE0LjI5IDIyLjM0LTYuOTUgMzMuNSA3LjA0IDEwLjcxIDIxLjkzIDE0LjU2IDMzLjUxIDYuOTVDNTI4LjI3IDQzOS41OCA1NzYgMzUxLjMzIDU3NiAyNTZTNTI4LjI3IDcyLjQzIDQ0OC4zNSAxOS45N3pNNDgwIDI1NmMwLTYzLjUzLTMyLjA2LTEyMS45NC04NS43Ny0xNTYuMjQtMTEuMTktNy4xNC0yNi4wMy0zLjgyLTMzLjEyIDcuNDZzLTMuNzggMjYuMjEgNy40MSAzMy4zNkM0MDguMjcgMTY1Ljk3IDQzMiAyMDkuMTEgNDMyIDI1NnMtMjMuNzMgOTAuMDMtNjMuNDggMTE1LjQyYy0xMS4xOSA3LjE0LTE0LjUgMjIuMDctNy40MSAzMy4zNiA2LjUxIDEwLjM2IDIxLjEyIDE1LjE0IDMzLjEyIDcuNDZDNDQ3Ljk0IDM3Ny45NCA0ODAgMzE5LjU0IDQ4MCAyNTZ6bS0xNDEuNzctNzYuODdjLTExLjU4LTYuMzMtMjYuMTktMi4xNi0zMi42MSA5LjQ1LTYuMzkgMTEuNjEtMi4xNiAyNi4yIDkuNDUgMzIuNjFDMzI3Ljk4IDIyOC4yOCAzMzYgMjQxLjYzIDMzNiAyNTZjMCAxNC4zOC04LjAyIDI3LjcyLTIwLjkyIDM0LjgxLTExLjYxIDYuNDEtMTUuODQgMjEtOS40NSAzMi42MSA2LjQzIDExLjY2IDIxLjA1IDE1LjggMzIuNjEgOS40NSAyOC4yMy0xNS41NSA0NS43Ny00NSA0NS43Ny03Ni44OHMtMTcuNTQtNjEuMzItNDUuNzgtNzYuODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhVm90ZVllYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MDggMzIwaC02NHY2NGgyMi40YzUuMyAwIDkuNiAzLjYgOS42IDh2MTZjMCA0LjQtNC4zIDgtOS42IDhINzMuNmMtNS4zIDAtOS42LTMuNi05LjYtOHYtMTZjMC00LjQgNC4zLTggOS42LThIOTZ2LTY0SDMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY5NmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg1NzZjMTcuNyAwIDMyLTE0LjMgMzItMzJ2LTk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tOTYgNjRWNjQuM2MwLTE3LjktMTQuNS0zMi4zLTMyLjMtMzIuM0gxNjAuNEMxNDIuNSAzMiAxMjggNDYuNSAxMjggNjQuM1YzODRoMzg0ek0yMTEuMiAyMDJsMjUuNS0yNS4zYzQuMi00LjIgMTEtNC4yIDE1LjIuMWw0MS4zIDQxLjYgOTUuMi05NC40YzQuMi00LjIgMTEtNC4yIDE1LjIuMWwyNS4zIDI1LjVjNC4yIDQuMiA0LjIgMTEtLjEgMTUuMkwzMDAuNSAyOTJjLTQuMiA0LjItMTEgNC4yLTE1LjItLjFsLTc0LjEtNzQuN2MtNC4zLTQuMi00LjItMTEgMC0xNS4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVZyQ2FyZGJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYwOCA2NEgzMkMxNC4zMyA2NCAwIDc4LjMzIDAgOTZ2MzIwYzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoMTYwLjIyYzI1LjE5IDAgNDguMDMtMTQuNzcgNTguMzYtMzcuNzRsMjcuNzQtNjEuNjRDMjg2LjIxIDMzMS4wOCAzMDIuMzUgMzIwIDMyMCAzMjBzMzMuNzkgMTEuMDggNDEuNjggMjguNjJsMjcuNzQgNjEuNjRDMzk5Ljc1IDQzMy4yMyA0MjIuNiA0NDggNDQ3Ljc4IDQ0OEg2MDhjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyek0xNjAgMzA0Yy0zNS4zNSAwLTY0LTI4LjY1LTY0LTY0czI4LjY1LTY0IDY0LTY0IDY0IDI4LjY1IDY0IDY0LTI4LjY1IDY0LTY0IDY0em0zMjAgMGMtMzUuMzUgMC02NC0yOC42NS02NC02NHMyOC42NS02NCA2NC02NCA2NCAyOC42NSA2NCA2NC0yOC42NSA2NC02NCA2NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXYWxraW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzMjAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwOCA5NmMyNi41IDAgNDgtMjEuNSA0OC00OFMyMzQuNSAwIDIwOCAwcy00OCAyMS41LTQ4IDQ4IDIxLjUgNDggNDggNDh6bTk0LjUgMTQ5LjFsLTIzLjMtMTEuOC05LjctMjkuNGMtMTQuNy00NC42LTU1LjctNzUuOC0xMDIuMi03NS45LTM2LS4xLTU1LjkgMTAuMS05My4zIDI1LjItMjEuNiA4LjctMzkuMyAyNS4yLTQ5LjcgNDYuMkwxNy42IDIxM2MtNy44IDE1LjgtMS41IDM1IDE0LjIgNDIuOSAxNS42IDcuOSAzNC42IDEuNSA0Mi41LTE0LjNMODEgMjI4YzMuNS03IDkuMy0xMi41IDE2LjUtMTUuNGwyNi44LTEwLjgtMTUuMiA2MC43Yy01LjIgMjAuOC40IDQyLjkgMTQuOSA1OC44bDU5LjkgNjUuNGM3LjIgNy45IDEyLjMgMTcuNCAxNC45IDI3LjdsMTguMyA3My4zYzQuMyAxNy4xIDIxLjcgMjcuNiAzOC44IDIzLjMgMTcuMS00LjMgMjcuNi0yMS43IDIzLjMtMzguOGwtMjIuMi04OWMtMi42LTEwLjMtNy43LTE5LjktMTQuOS0yNy43bC00NS41LTQ5LjcgMTcuMi02OC43IDUuNSAxNi41YzUuMyAxNi4xIDE2LjcgMjkuNCAzMS43IDM3bDIzLjMgMTEuOGMxNS42IDcuOSAzNC42IDEuNSA0Mi41LTE0LjMgNy43LTE1LjcgMS40LTM1LjEtMTQuMy00M3pNNzMuNiAzODUuOGMtMy4yIDguMS04IDE1LjQtMTQuMiAyMS41bC01MCA1MC4xYy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi43IDEyLjUgNDUuMiAwbDU5LjQtNTkuNGM2LjEtNi4xIDEwLjktMTMuNCAxNC4yLTIxLjVsMTMuNS0zMy44Yy01NS4zLTYwLjMtMzguNy00MS44LTQ3LjQtNTMuN2wtMjAuNyA1MS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhbGxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjEuMiAxMjhIODBjLTguODQgMC0xNi03LjE2LTE2LTE2czcuMTYtMTYgMTYtMTZoMzg0YzguODQgMCAxNi03LjE2IDE2LTE2IDAtMjYuNTEtMjEuNDktNDgtNDgtNDhINjRDMjguNjUgMzIgMCA2MC42NSAwIDk2djMyMGMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0aDM5Ny4yYzI4LjAyIDAgNTAuOC0yMS41MyA1MC44LTQ4VjE3NmMwLTI2LjQ3LTIyLjc4LTQ4LTUwLjgtNDh6TTQxNiAzMzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2FyZWhvdXNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUwNCAzNTJIMTM2LjRjLTQuNCAwLTggMy42LTggOGwtLjEgNDhjMCA0LjQgMy42IDggOCA4SDUwNGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHptMCA5NkgxMzYuMWMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0wLTE5MkgxMzYuNmMtNC40IDAtOCAzLjYtOCA4bC0uMSA0OGMwIDQuNCAzLjYgOCA4IDhINTA0YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04em0xMDYuNS0xMzlMMzM4LjQgMy43YTQ4LjE1IDQ4LjE1IDAgMCAwLTM2LjkgMEwyOS41IDExN0MxMS43IDEyNC41IDAgMTQxLjkgMCAxNjEuM1Y1MDRjMCA0LjQgMy42IDggOCA4aDgwYzQuNCAwIDgtMy42IDgtOFYyNTZjMC0xNy42IDE0LjYtMzIgMzIuNi0zMmgzODIuOGMxOCAwIDMyLjYgMTQuNCAzMi42IDMydjI0OGMwIDQuNCAzLjYgOCA4IDhoODBjNC40IDAgOC0zLjYgOC04VjE2MS4zYzAtMTkuNC0xMS43LTM2LjgtMjkuNS00NC4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdhdGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2Mi4xIDM4My45Yy0yMS41LTIuNC00Mi4xLTEwLjUtNTcuOS0yMi45LTE0LjEtMTEuMS0zNC4yLTExLjMtNDguMiAwLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6bTAtMTQ0Yy0yMS41LTIuNC00Mi4xLTEwLjUtNTcuOS0yMi45LTE0LjEtMTEuMS0zNC4yLTExLjMtNDguMiAwLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6bTAtMTQ0QzU0MC42IDkzLjQgNTIwIDg1LjQgNTA0LjIgNzMgNDkwLjEgNjEuOSA0NzAgNjEuNyA0NTYgNzNjLTM3LjkgMzAuNC0xMDcuMiAzMC40LTE0NS43LTEuNS0xMy41LTExLjItMzMtOS4xLTQ2LjcgMS44LTM4IDMwLjEtMTA2LjkgMzAtMTQ1LjItMS43LTEzLjUtMTEuMi0zMy4zLTguOS00Ny4xIDItMTUuNSAxMi4yLTM2IDIwLjEtNTcuNyAyMi40LTcuOS44LTEzLjYgNy44LTEzLjYgMTUuN3YzMi4yYzAgOS4xIDcuNiAxNi44IDE2LjcgMTYgMjguOC0yLjUgNTYuMS0xMS40IDc5LjQtMjUuOSA1Ni41IDM0LjYgMTM3IDM0LjEgMTkyIDAgNTYuNSAzNC42IDEzNyAzNC4xIDE5MiAwIDIzLjMgMTQuMiA1MC45IDIzLjMgNzkuMSAyNS44IDkuMS44IDE2LjctNi45IDE2LjctMTZ2LTMxLjZjLjEtOC01LjctMTUuNC0xMy44LTE2LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2F2ZVNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NzYgNDgwSDMyNGEzNiAzNiAwIDAgMS0zNi0zNlY5NmgtOTZ2MTU2YTM2IDM2IDAgMCAxLTM2IDM2SDE2YTE2IDE2IDAgMCAxLTE2LTE2di0zMmExNiAxNiAwIDAgMSAxNi0xNmgxMTJWNjhhMzYgMzYgMCAwIDEgMzYtMzZoMTUyYTM2IDM2IDAgMCAxIDM2IDM2djM0OGg5NlYyNjBhMzYgMzYgMCAwIDEgMzYtMzZoMTQwYTE2IDE2IDAgMCAxIDE2IDE2djMyYTE2IDE2IDAgMCAxLTE2IDE2SDUxMnYxNTZhMzYgMzYgMCAwIDEtMzYgMzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2VpZ2h0SGFuZ2luZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MTAuMjggNDQ1Ljg2bC03My4wMy0yOTIuMTNjLTMuOC0xNS4xOS0xNi40NC0yNS43Mi0zMC44Ny0yNS43MmgtNjAuMjVjMy41Ny0xMC4wNSA1Ljg4LTIwLjcyIDUuODgtMzIgMC01My4wMi00Mi45OC05Ni05Ni05NnMtOTYgNDIuOTgtOTYgOTZjMCAxMS4yOCAyLjMgMjEuOTUgNS44OCAzMmgtNjAuMjVjLTE0LjQzIDAtMjcuMDggMTAuNTQtMzAuODcgMjUuNzJMMS43MiA0NDUuODZDLTYuNjEgNDc5LjE3IDE2LjM4IDUxMiA0OC4wMyA1MTJoNDE1Ljk1YzMxLjY0IDAgNTQuNjMtMzIuODMgNDYuMy02Ni4xNHpNMjU2IDEyOGMtMTcuNjQgMC0zMi0xNC4zNi0zMi0zMnMxNC4zNi0zMiAzMi0zMiAzMiAxNC4zNiAzMiAzMi0xNC4zNiAzMi0zMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXZWlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDY0aC0yNS45OEM0MzguNDQgOTIuMjggNDQ4IDEyNS4wMSA0NDggMTYwYzAgMTA1Ljg3LTg2LjEzIDE5Mi0xOTIgMTkyUzY0IDI2NS44NyA2NCAxNjBjMC0zNC45OSA5LjU2LTY3LjcyIDI1Ljk4LTk2SDY0QzI4LjcxIDY0IDAgOTIuNzEgMCAxMjh2MzIwYzAgMzUuMjkgMjguNzEgNjQgNjQgNjRoMzg0YzM1LjI5IDAgNjQtMjguNzEgNjQtNjRWMTI4YzAtMzUuMjktMjguNzEtNjQtNjQtNjR6TTI1NiAzMjBjODguMzcgMCAxNjAtNzEuNjMgMTYwLTE2MFMzNDQuMzcgMCAyNTYgMCA5NiA3MS42MyA5NiAxNjBzNzEuNjMgMTYwIDE2MCAxNjB6bS0uMy0xNTEuOTRsMzMuNTgtNzguMzZjMy41LTguMTcgMTIuOTQtMTEuOTIgMjEuMDMtOC40MSA4LjEyIDMuNDggMTEuODggMTIuODkgOC40MSAyMWwtMzMuNjcgNzguNTVDMjkxLjczIDE4OCAyOTYgMTk3LjQ1IDI5NiAyMDhjMCAyMi4wOS0xNy45MSA0MC00MCA0MHMtNDAtMTcuOTEtNDAtNDBjMC0yMS45OCAxNy43Ni0zOS43NyAzOS43LTM5Ljk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdoZWVsY2hhaXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk2LjEwMSAzODUuNjY5bDE0LjIyNyAyOC42NjNjMy45MjkgNy45MTUuNjk3IDE3LjUxNi03LjIxOCAyMS40NDVsLTY1LjQ2NSAzMi44ODZjLTE2LjA0OSA3Ljk2Ny0zNS41NTYgMS4xOTQtNDMuMTg5LTE1LjA1NUwzMzEuNjc5IDMyMEgxOTJjLTE1LjkyNSAwLTI5LjQyNi0xMS43MS0zMS42NzktMjcuNDc1QzEyNi40MzMgNTUuMzA4IDEyOC4zOCA3MC4wNDQgMTI4IDY0YzAtMzYuMzU4IDMwLjMxOC02NS42MzUgNjcuMDUyLTYzLjkyOSAzMy4yNzEgMS41NDUgNjAuMDQ4IDI4LjkwNSA2MC45MjUgNjIuMjAxLjg2OCAzMi45MzMtMjMuMTUyIDYwLjQyMy01NC42MDggNjUuMDM5bDQuNjcgMzIuNjlIMzM2YzguODM3IDAgMTYgNy4xNjMgMTYgMTZ2MzJjMCA4LjgzNy03LjE2MyAxNi0xNiAxNkgyMTUuMTgybDQuNTcyIDMySDM1MmEzMiAzMiAwIDAgMSAyOC45NjIgMTguMzkyTDQzOC40NzcgMzk2LjhsMzYuMTc4LTE4LjM0OWM3LjkxNS0zLjkyOSAxNy41MTctLjY5NyAyMS40NDYgNy4yMTh6TTMxMS4zNTggMzUyaC0yNC41MDZjLTcuNzg4IDU0LjIwNC01NC41MjggOTYtMTEwLjg1MiA5Ni02MS43NTcgMC0xMTItNTAuMjQzLTExMi0xMTIgMC00MS41MDUgMjIuNjk0LTc3LjgwOSA1Ni4zMjQtOTcuMTU2LTMuNzEyLTI1Ljk2NS02Ljg0NC00Ny44Ni05LjQ4OC02Ni4zMzNDNDUuOTU2IDE5OC40NjQgMCAyNjEuOTYzIDAgMzM2YzAgOTcuMDQ3IDc4Ljk1MyAxNzYgMTc2IDE3NiA3MS44NyAwIDEzMy44MDYtNDMuMzA4IDE2MS4xMS0xMDUuMTkyTDMxMS4zNTggMzUyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVdpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNjM0LjkxIDE1NC44OEM0NTcuNzQtOC45OSAxODIuMTktOC45MyA1LjA5IDE1NC44OGMtNi42NiA2LjE2LTYuNzkgMTYuNTktLjM1IDIyLjk4bDM0LjI0IDMzLjk3YzYuMTQgNi4xIDE2LjAyIDYuMjMgMjIuNC4zOCAxNDUuOTItMTMzLjY4IDM3MS4zLTEzMy43MSA1MTcuMjUgMCA2LjM4IDUuODUgMTYuMjYgNS43MSAyMi40LS4zOGwzNC4yNC0zMy45N2M2LjQzLTYuMzkgNi4zLTE2LjgyLS4zNi0yMi45OHpNMzIwIDM1MmMtMzUuMzUgMC02NCAyOC42NS02NCA2NHMyOC42NSA2NCA2NCA2NCA2NC0yOC42NSA2NC02NC0yOC42NS02NC02NC02NHptMjAyLjY3LTgzLjU5Yy0xMTUuMjYtMTAxLjkzLTI5MC4yMS0xMDEuODItNDA1LjM0IDAtNi45IDYuMS03LjEyIDE2LjY5LS41NyAyMy4xNWwzNC40NCAzMy45OWM2IDUuOTIgMTUuNjYgNi4zMiAyMi4wNS44IDgzLjk1LTcyLjU3IDIwOS43NC03Mi40MSAyOTMuNDkgMCA2LjM5IDUuNTIgMTYuMDUgNS4xMyAyMi4wNS0uOGwzNC40NC0zMy45OWM2LjU2LTYuNDYgNi4zMy0xNy4wNi0uNTYtMjMuMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTYuNyAyNTZIMTZjLTguOCAwLTE2IDcuMi0xNiAxNnYzMmMwIDguOCA3LjIgMTYgMTYgMTZoMTQyLjJjMTUuOSAwIDMwLjggMTAuOSAzMy40IDI2LjYgMy4zIDIwLTEyLjEgMzcuNC0zMS42IDM3LjQtMTQuMSAwLTI2LjEtOS4yLTMwLjQtMjEuOS0yLjEtNi4zLTguNi0xMC4xLTE1LjItMTAuMUg4MS42Yy05LjggMC0xNy43IDguOC0xNS45IDE4LjQgOC42IDQ0LjEgNDcuNiA3Ny42IDk0LjIgNzcuNiA1Ny4xIDAgMTAyLjctNTAuMSA5NS4yLTEwOC42QzI0OSAyOTEgMjA1LjQgMjU2IDE1Ni43IDI1NnpNMTYgMjI0aDMzNmM1OS43IDAgMTA2LjgtNTQuOCA5My44LTExNi43LTcuNi0zNi4yLTM2LjktNjUuNS03My4xLTczLjEtNTUuNC0xMS42LTEwNS4xIDI0LjktMTE0LjkgNzUuNS0xLjkgOS42IDYuMSAxOC4zIDE1LjggMTguM2gzMi44YzYuNyAwIDEzLjEtMy44IDE1LjItMTAuMUMzMjUuOSAxMDUuMiAzMzcuOSA5NiAzNTIgOTZjMTkuNCAwIDM0LjkgMTcuNCAzMS42IDM3LjQtMi42IDE1LjctMTcuNCAyNi42LTMzLjQgMjYuNkgxNmMtOC44IDAtMTYgNy4yLTE2IDE2djMyYzAgOC44IDcuMiAxNiAxNiAxNnptMzg0IDMySDI0My43YzE5LjMgMTYuNiAzMy4yIDM4LjggMzkuOCA2NEg0MDBjMjYuNSAwIDQ4IDIxLjUgNDggNDhzLTIxLjUgNDgtNDggNDhjLTE3LjkgMC0zMy4zLTkuOS00MS42LTI0LjQtMi45LTUtOC43LTcuNi0xNC41LTcuNmgtMzMuOGMtMTAuOSAwLTE5IDEwLjgtMTUuMyAyMS4xIDE3LjggNTAuNiA3MC41IDg0LjggMTI5LjQgNzIuMyA0MS4yLTguNyA3NS4xLTQxLjYgODQuNy04Mi43QzUyNiAzMjEuNSA0NzAuNSAyNTYgNDAwIDI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dDbG9zZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0tODMuNiAyOTAuNWM0LjggNC44IDQuOCAxMi42IDAgMTcuNGwtNDAuNSA0MC41Yy00LjggNC44LTEyLjYgNC44LTE3LjQgMEwyNTYgMzEzLjNsLTY2LjUgNjcuMWMtNC44IDQuOC0xMi42IDQuOC0xNy40IDBsLTQwLjUtNDAuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNjcuMS02Ni41LTY3LjEtNjYuNWMtNC44LTQuOC00LjgtMTIuNiAwLTE3LjRsNDAuNS00MC41YzQuOC00LjggMTIuNi00LjggMTcuNCAwbDY2LjUgNjcuMSA2Ni41LTY3LjFjNC44LTQuOCAxMi42LTQuOCAxNy40IDBsNDAuNSA0MC41YzQuOCA0LjggNC44IDEyLjYgMCAxNy40TDMxMy4zIDI1Nmw2Ny4xIDY2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWF4aW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDMySDQ4QzIxLjUgMzIgMCA1My41IDAgODB2MzUyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFY4MGMwLTI2LjUtMjEuNS00OC00OC00OHptLTE2IDE2MEg2NHYtODRjMC02LjYgNS40LTEyIDEyLTEyaDM2MGM2LjYgMCAxMiA1LjQgMTIgMTJ2ODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZG93TWluaW1pemUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDM1Mkg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzJjMCAyNi41IDIxLjUgNDggNDggNDhoNDE2YzI2LjUgMCA0OC0yMS41IDQ4LTQ4di0zMmMwLTI2LjUtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5kb3dSZXN0b3JlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUxMiA0OHYyODhjMCAyNi41LTIxLjUgNDgtNDggNDhoLTQ4VjE3NmMwLTQ0LjEtMzUuOS04MC04MC04MEgxMjhWNDhjMC0yNi41IDIxLjUtNDggNDgtNDhoMjg4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4ek0zODQgMTc2djI4OGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTc2YzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDI4OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTY4IDI4YzAtNi42LTUuNC0xMi0xMi0xMkg3NmMtNi42IDAtMTIgNS40LTEyIDEydjUyaDI1MnYtNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV2luZUJvdHRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDcuMzEgNzIuNTdMNDM5LjQzIDQuNjljLTYuMjUtNi4yNS0xNi4zOC02LjI1LTIyLjYzIDBsLTIyLjYzIDIyLjYzYy02LjI1IDYuMjUtNi4yNSAxNi4zOCAwIDIyLjYzbC03Ni42NyA3Ni42N2MtNDYuNTgtMTkuNy0xMDIuNC0xMC43My0xNDAuMzcgMjcuMjNMMTguNzUgMzEyLjIzYy0yNC45OSAyNC45OS0yNC45OSA2NS41MiAwIDkwLjUxbDkwLjUxIDkwLjUxYzI0Ljk5IDI0Ljk5IDY1LjUyIDI0Ljk5IDkwLjUxIDBsMTU4LjM5LTE1OC4zOWMzNy45Ni0zNy45NiA0Ni45My05My43OSAyNy4yMy0xNDAuMzdsNzYuNjctNzYuNjdjNi4yNSA2LjI1IDE2LjM4IDYuMjUgMjIuNjMgMGwyMi42My0yMi42M2M2LjI0LTYuMjQgNi4yNC0xNi4zNy0uMDEtMjIuNjJ6TTE3OS4yMiA0MjMuMjlsLTkwLjUxLTkwLjUxIDEyMi4wNC0xMjIuMDQgOTAuNTEgOTAuNTEtMTIyLjA0IDEyMi4wNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3NBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6TTYxLjc1IDQ4aDE2NC41bDcuMTcgODBINTQuNThsNy4xNy04MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXaW5lR2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDI4OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjE2IDQ2NGgtNDBWMzQ2LjgxYzY4LjQ3LTE1Ljg5IDExOC4wNS03OS45MSAxMTEuNC0xNTQuMTZsLTE1Ljk1LTE3OC4xQzI3MC43MSA2LjMxIDI2My45IDAgMjU1Ljc0IDBIMzIuMjZjLTguMTUgMC0xNC45NyA2LjMxLTE1LjcgMTQuNTVMLjYgMTkyLjY2Qy02LjA1IDI2Ni45MSA0My41MyAzMzAuOTMgMTEyIDM0Ni44MlY0NjRINzJjLTIyLjA5IDAtNDAgMTcuOTEtNDAgNDAgMCA0LjQyIDMuNTggOCA4IDhoMjA4YzQuNDIgMCA4LTMuNTggOC04IDAtMjIuMDktMTcuOTEtNDAtNDAtNDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhV29uU2lnbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjQgMTkyYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00OGwxOC42LTgwLjZjMS43LTcuNS00LTE0LjctMTEuNy0xNC43aC00Ni4xYy01LjcgMC0xMC42IDQtMTEuNyA5LjVMNDUwLjcgMTI4SDM0MC44bC0xOS43LTg2Yy0xLjMtNS41LTYuMS05LjMtMTEuNy05LjNoLTQ0Yy01LjYgMC0xMC40IDMuOC0xMS43IDkuM2wtMjAgODZIMTI1bC0xNy41LTg1LjdjLTEuMS01LjYtNi4xLTkuNi0xMS44LTkuNkg1My42Yy03LjcgMC0xMy40IDcuMS0xMS43IDE0LjZMNjAgMTI4SDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDYyLjNsNy4yIDMySDEyYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDgzLjlsNDAuOSAxODIuNmMxLjIgNS41IDYuMSA5LjQgMTEuNyA5LjRoNTYuOGM1LjYgMCAxMC40LTMuOSAxMS43LTkuM0wyNTkuMyAyODhoNTUuMWw0Mi40IDE4Mi43YzEuMyA1LjQgNi4xIDkuMyAxMS43IDkuM2g1Ni44YzUuNiAwIDEwLjQtMy45IDExLjctOS4zTDQ3OS4xIDI4OEg1NjRjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTcwLjFsNy40LTMyek0xODMuOCAzNDJjLTYuMiAyNS44LTYuOCA0Ny4yLTcuMyA0Ny4yaC0xLjFzLTEuNy0yMi02LjgtNDcuMmwtMTEtNTRoMzguOHptMjcuNS0xMThoLTY2LjhsLTYuNS0zMmg4MC44em02Mi45IDBsMi04LjZjMS45LTggMy41LTE2IDQuOC0yMy40aDExLjhjMS4zIDcuNCAyLjkgMTUuNCA0LjggMjMuNGwyIDguNnptMTMwLjkgMTE4Yy01LjEgMjUuMi02LjggNDcuMi02LjggNDcuMmgtMS4xYy0uNiAwLTEuMS0yMS40LTcuMy00Ny4ybC0xMi40LTU0aDM5LjF6bTI1LjItMTE4aC02Ny40bC03LjMtMzJoODEuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFXcmVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA3LjczIDEwOS4xYy0yLjI0LTkuMDMtMTMuNTQtMTIuMDktMjAuMTItNS41MWwtNzQuMzYgNzQuMzYtNjcuODgtMTEuMzEtMTEuMzEtNjcuODggNzQuMzYtNzQuMzZjNi42Mi02LjYyIDMuNDMtMTcuOS01LjY2LTIwLjE2LTQ3LjM4LTExLjc0LTk5LjU1LjkxLTEzNi41OCAzNy45My0zOS42NCAzOS42NC01MC41NSA5Ny4xLTM0LjA1IDE0Ny4yTDE4Ljc0IDQwMi43NmMtMjQuOTkgMjQuOTktMjQuOTkgNjUuNTEgMCA5MC41IDI0Ljk5IDI0Ljk5IDY1LjUxIDI0Ljk5IDkwLjUgMGwyMTMuMjEtMjEzLjIxYzUwLjEyIDE2LjcxIDEwNy40NyA1LjY4IDE0Ny4zNy0zNC4yMiAzNy4wNy0zNy4wNyA0OS43LTg5LjMyIDM3LjkxLTEzNi43M3pNNjQgNDcyYy0xMy4yNSAwLTI0LTEwLjc1LTI0LTI0IDAtMTMuMjYgMTAuNzUtMjQgMjQtMjRzMjQgMTAuNzQgMjQgMjRjMCAxMy4yNS0xMC43NSAyNC0yNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFYUmF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0MCAzODRjLTguOCAwLTE2IDcuMi0xNiAxNnM3LjIgMTYgMTYgMTYgMTYtNy4yIDE2LTE2LTcuMi0xNi0xNi0xNnptMTYwIDMyYzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2LTE2IDcuMi0xNiAxNiA3LjIgMTYgMTYgMTZ6TTYyNCAwSDE2QzcuMiAwIDAgNy4yIDAgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZWMTZjMC04LjgtNy4yLTE2LTE2LTE2em0wIDQ0OGgtNDhWOTZINjR2MzUySDE2Yy04LjggMC0xNiA3LjItMTYgMTZ2MzJjMCA4LjggNy4yIDE2IDE2IDE2aDYwOGM4LjggMCAxNi03LjIgMTYtMTZ2LTMyYzAtOC44LTcuMi0xNi0xNi0xNnpNNDgwIDI0OGMwIDQuNC0zLjYgOC04IDhIMzM2djMyaDEwNGM0LjQgMCA4IDMuNiA4IDh2MTZjMCA0LjQtMy42IDgtOCA4SDMzNnYzMmg2NGMyNi41IDAgNDggMjEuNSA0OCA0OHMtMjEuNSA0OC00OCA0OC00OC0yMS41LTQ4LTQ4di0xNmgtNjR2MTZjMCAyNi41LTIxLjUgNDgtNDggNDhzLTQ4LTIxLjUtNDgtNDggMjEuNS00OCA0OC00OGg2NHYtMzJIMjAwYy00LjQgMC04LTMuNi04LTh2LTE2YzAtNC40IDMuNi04IDgtOGgxMDR2LTMySDE2OGMtNC40IDAtOC0zLjYtOC04di0xNmMwLTQuNCAzLjYtOCA4LThoMTM2di0zMkgyMDBjLTQuNCAwLTgtMy42LTgtOHYtMTZjMC00LjQgMy42LTggOC04aDEwNHYtMjRjMC00LjQgMy42LTggOC04aDE2YzQuNCAwIDggMy42IDggOHYyNGgxMDRjNC40IDAgOCAzLjYgOCA4djE2YzAgNC40LTMuNiA4LTggOEgzMzZ2MzJoMTM2YzQuNCAwIDggMy42IDggOHYxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFZZW5TaWduIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MS4yIDMyaC02NS4zYy00LjYgMC04LjggMi42LTEwLjggNi43bC01NS40IDExMy4yYy0xNC41IDM0LjctMjcuMSA3MS45LTI3LjEgNzEuOWgtMS4zcy0xMi42LTM3LjItMjcuMS03MS45TDEwOC44IDM4LjdjLTItNC4xLTYuMi02LjctMTAuOC02LjdIMzIuOGMtOS4xIDAtMTQuOCA5LjctMTAuNiAxNy42TDEwMi4zIDIwMEg0NGMtNi42IDAtMTIgNS40LTEyIDEydjMyYzAgNi42IDUuNCAxMiAxMiAxMmg4OC4ybDE5LjggMzcuMlYzMjBINDRjLTYuNiAwLTEyIDUuNC0xMiAxMnYzMmMwIDYuNiA1LjQgMTIgMTIgMTJoMTA4djkyYzAgNi42IDUuNCAxMiAxMiAxMmg1NmM2LjYgMCAxMi01LjQgMTItMTJ2LTkyaDEwOGM2LjYgMCAxMi01LjQgMTItMTJ2LTMyYzAtNi42LTUuNC0xMi0xMi0xMkgyMzJ2LTI2LjhsMTkuOC0zNy4ySDM0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTMyYzAtNi42LTUuNC0xMi0xMi0xMmgtNTguM2w4MC4xLTE1MC40YzQuMy03LjktMS41LTE3LjYtMTAuNi0xNy42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVlpbllhbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCAzNzZjLTE3LjY3IDAtMzItMTQuMzMtMzItMzJzMTQuMzMtMzIgMzItMzIgMzIgMTQuMzMgMzIgMzItMTQuMzMgMzItMzIgMzJ6bTAtMTI4Yy01My4wMiAwLTk2IDQyLjk4LTk2IDk2czQyLjk4IDk2IDk2IDk2Yy0xMDYuMDQgMC0xOTItODUuOTYtMTkyLTE5MlMxNDEuOTYgNjQgMjQ4IDY0YzUzLjAyIDAgOTYgNDIuOTggOTYgOTZzLTQyLjk4IDk2LTk2IDk2em0wLTEyOGMtMTcuNjcgMC0zMiAxNC4zMy0zMiAzMnMxNC4zMyAzMiAzMiAzMiAzMi0xNC4zMyAzMi0zMi0xNC4zMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQm9vayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzYgMTYwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC0yMFY0OGMwLTI2LjUtMjEuNS00OC00OC00OEg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoMjBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTIwdi02NGgyMGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtMjB2LTY0aDIwem0tNjggMzA0SDQ4VjQ4aDMyMHY0MTZ6TTIwOCAyNTZjMzUuMyAwIDY0LTI4LjcgNjQtNjRzLTI4LjctNjQtNjQtNjQtNjQgMjguNy02NCA2NCAyOC43IDY0IDY0IDY0em0tODkuNiAxMjhoMTc5LjJjMTIuNCAwIDIyLjQtOC42IDIyLjQtMTkuMnYtMTkuMmMwLTMxLjgtMzAuMS01Ny42LTY3LjItNTcuNi0xMC44IDAtMTguNyA4LTQ0LjggOC0yNi45IDAtMzMuNC04LTQ0LjgtOC0zNy4xIDAtNjcuMiAyNS44LTY3LjIgNTcuNnYxOS4yYzAgMTAuNiAxMCAxOS4yIDIyLjQgMTkuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBZGRyZXNzQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggMzJINDhDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoNDgwYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjgwYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQwMEg0OFY4MGg0ODB2MzUyek0yMDggMjU2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptLTg5LjYgMTI4aDE3OS4yYzEyLjQgMCAyMi40LTguNiAyMi40LTE5LjJ2LTE5LjJjMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjZ2MTkuMmMwIDEwLjYgMTAgMTkuMiAyMi40IDE5LjJ6TTM2MCAzMjBoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptMC02NGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0wLTY0aDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQW5ncnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0wLTE0NGMtMzMuNiAwLTY1LjIgMTQuOC04Ni44IDQwLjYtOC41IDEwLjItNy4xIDI1LjMgMy4xIDMzLjhzMjUuMyA3LjIgMzMuOC0zYzI0LjgtMjkuNyA3NS0yOS43IDk5LjggMCA4LjEgOS43IDIzLjIgMTEuOSAzMy44IDMgMTAuMi04LjUgMTEuNS0yMy42IDMuMS0zMy44LTIxLjYtMjUuOC01My4yLTQwLjYtODYuOC00MC42em0tNDgtNzJjMTAuMyAwIDE5LjktNi43IDIzLTE3LjEgMy44LTEyLjctMy40LTI2LjEtMTYuMS0yOS45bC04MC0yNGMtMTIuOC0zLjktMjYuMSAzLjQtMjkuOSAxNi4xLTMuOCAxMi43IDMuNCAyNi4xIDE2LjEgMjkuOWwyOC4yIDguNWMtMy4xIDQuOS01LjMgMTAuNC01LjMgMTYuNiAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC40IDMyLTMyLjF6bTE5OS01NC45Yy0zLjgtMTIuNy0xNy4xLTE5LjktMjkuOS0xNi4xbC04MCAyNGMtMTIuNyAzLjgtMTkuOSAxNy4yLTE2LjEgMjkuOSAzLjEgMTAuNCAxMi43IDE3LjEgMjMgMTcuMSAwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyYzAtNi4yLTIuMi0xMS43LTUuMy0xNi42bDI4LjItOC41YzEyLjctMy43IDE5LjktMTcuMSAxNi4xLTI5Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQXJyb3dBbHRDaXJjbGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptLTMyLTMxNnYxMTZoLTY3Yy0xMC43IDAtMTYgMTIuOS04LjUgMjAuNWw5OSA5OWM0LjcgNC43IDEyLjMgNC43IDE3IDBsOTktOTljNy42LTcuNiAyLjItMjAuNS04LjUtMjAuNWgtNjdWMTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdBcnJvd0FsdENpcmNsZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyNTZjMCAxMzcgMTExIDI0OCAyNDggMjQ4czI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOCA4IDExOSA4IDI1NnptNDQ4IDBjMCAxMTAuNS04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NiAxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMHptLTcyLTIwdjQwYzAgNi42LTUuNCAxMi0xMiAxMkgyNTZ2NjdjMCAxMC43LTEyLjkgMTYtMjAuNSA4LjVsLTk5LTk5Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsOTktOTljNy42LTcuNiAyMC41LTIuMiAyMC41IDguNXY2N2gxMTZjNi42IDAgMTIgNS40IDEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Fycm93QWx0Q2lyY2xlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTA0IDI1NkM1MDQgMTE5IDM5MyA4IDI1NiA4UzggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDh6bS00NDggMGMwLTExMC41IDg5LjUtMjAwIDIwMC0yMDBzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NnptNzIgMjB2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgxMTZ2LTY3YzAtMTAuNyAxMi45LTE2IDIwLjUtOC41bDk5IDk5YzQuNyA0LjcgNC43IDEyLjMgMCAxN2wtOTkgOTljLTcuNiA3LjYtMjAuNSAyLjItMjAuNS04LjV2LTY3SDE0MGMtNi42IDAtMTItNS40LTEyLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Fycm93QWx0Q2lyY2xlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDUwNGMxMzcgMCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4em0wLTQ0OGMxMTAuNSAwIDIwMCA4OS41IDIwMCAyMDBzLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2IDE0NS41IDU2IDI1NiA1NnptMjAgMzI4aC00MGMtNi42IDAtMTItNS40LTEyLTEyVjI1NmgtNjdjLTEwLjcgMC0xNi0xMi45LTguNS0yMC41bDk5LTk5YzQuNy00LjcgMTIuMy00LjcgMTcgMGw5OSA5OWM3LjYgNy42IDIuMiAyMC41LTguNSAyMC41aC02N3YxMTZjMCA2LjYtNS40IDEyLTEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGxTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02MzMuOTkgNDcxLjAyTDM2IDMuNTFDMjkuMS0yLjAxIDE5LjAzLS45IDEzLjUxIDZsLTEwIDEyLjQ5Qy0yLjAyIDI1LjM5LS45IDM1LjQ2IDYgNDAuOThsNTk4IDQ2Ny41MWM2LjkgNS41MiAxNi45NiA0LjQgMjIuNDktMi40OWwxMC0xMi40OWM1LjUyLTYuOSA0LjQxLTE2Ljk3LTIuNS0yMi40OXpNMTYzLjUzIDM2OGMxNi43MS0yMi4wMyAzNC40OC01NS44IDQxLjQtMTEwLjU4bC00NS40Ny0zNS41NWMtMy4yNyA5MC43My0zNi40NyAxMjAuNjgtNTQuODQgMTQwLjQyLTYgNi40NS04LjY2IDE0LjE2LTguNjEgMjEuNzEuMTEgMTYuNCAxMi45OCAzMiAzMi4xIDMyaDI3OS42NmwtNjEuNC00OEgxNjMuNTN6TTMyMCA5NmM2MS44NiAwIDExMiA1MC4xNCAxMTIgMTEyIDAgLjItLjA2LjM4LS4wNi41OC4wMiAxNi44NCAxLjE2IDMxLjc3IDIuNzkgNDUuNzNsNTkuNTMgNDYuNTRjLTguMzEtMjIuMTMtMTQuMzQtNTEuNDktMTQuMzQtOTIuODUgMC03Ny43LTU0LjQ4LTEzOS45LTEyNy45NC0xNTUuMTZWMzJjMC0xNy42Ny0xNC4zMi0zMi0zMS45OC0zMnMtMzEuOTggMTQuMzMtMzEuOTggMzJ2MjAuODRjLTI2LjAyIDUuNDEtNDkuNDUgMTYuOTQtNjkuMTMgMzIuNzJsMzguMTcgMjkuODRDMjc1IDEwMy4xOCAyOTYuNjUgOTYgMzIwIDk2em0wIDQxNmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDI1Ni4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0JlbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDM5LjM5IDM2Mi4yOWMtMTkuMzItMjAuNzYtNTUuNDctNTEuOTktNTUuNDctMTU0LjI5IDAtNzcuNy01NC40OC0xMzkuOS0xMjcuOTQtMTU1LjE2VjMyYzAtMTcuNjctMTQuMzItMzItMzEuOTgtMzJzLTMxLjk4IDE0LjMzLTMxLjk4IDMydjIwLjg0QzExOC41NiA2OC4xIDY0LjA4IDEzMC4zIDY0LjA4IDIwOGMwIDEwMi4zLTM2LjE1IDEzMy41My01NS40NyAxNTQuMjktNiA2LjQ1LTguNjYgMTQuMTYtOC42MSAyMS43MS4xMSAxNi40IDEyLjk4IDMyIDMyLjEgMzJoMzgzLjhjMTkuMTIgMCAzMi0xNS42IDMyLjEtMzIgLjA1LTcuNTUtMi42MS0xNS4yNy04LjYxLTIxLjcxek02Ny41MyAzNjhjMjEuMjItMjcuOTcgNDQuNDItNzQuMzMgNDQuNTMtMTU5LjQyIDAtLjItLjA2LS4zOC0uMDYtLjU4IDAtNjEuODYgNTAuMTQtMTEyIDExMi0xMTJzMTEyIDUwLjE0IDExMiAxMTJjMCAuMi0uMDYuMzgtLjA2LjU4LjExIDg1LjEgMjMuMzEgMTMxLjQ2IDQ0LjUzIDE1OS40Mkg2Ny41M3pNMjI0IDUxMmMzNS4zMiAwIDYzLjk3LTI4LjY1IDYzLjk3LTY0SDE2MC4wM2MwIDM1LjM1IDI4LjY1IDY0IDYzLjk3IDY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Jvb2ttYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQ2NGwxOTItMTEyIDE5MiAxMTJWNDhjMC0yNi41MS0yMS40OS00OC00OC00OHptMCA0MjguNDNsLTE0NC04NC0xNDQgODRWNTRhNiA2IDAgMCAxIDYtNmgyNzZjMy4zMTQgMCA2IDIuNjgzIDYgNS45OTZWNDI4LjQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0J1aWxkaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyOCAxNDh2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC00MGMtNi42IDAtMTItNS40LTEyLTEyem0xNDAgMTJoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0tMTI4IDk2aDQwYzYuNiAwIDEyLTUuNCAxMi0xMnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMnptMTI4IDBoNDBjNi42IDAgMTItNS40IDEyLTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyem0tNzYgODR2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem03NiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJ6bTE4MCAxMjR2MzZIMHYtMzZjMC02LjYgNS40LTEyIDEyLTEyaDE5LjVWMjRjMC0xMy4zIDEwLjctMjQgMjQtMjRoMzM3YzEzLjMgMCAyNCAxMC43IDI0IDI0djQ0MEg0MzZjNi42IDAgMTIgNS40IDEyIDEyek03OS41IDQ2M0gxOTJ2LTY3YzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NjdoMTEyLjVWNDlMODAgNDhsLS41IDQxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhckFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDggMjg4aC00MGMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjQwYzAgNi42LTUuNCAxMi0xMiAxMnptMTA4LTEydi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptOTYgMHYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bS05NiA5NnYtNDBjMC02LjYtNS40LTEyLTEyLTEyaC00MGMtNi42IDAtMTIgNS40LTEyIDEydjQwYzAgNi42IDUuNCAxMiAxMiAxMmg0MGM2LjYgMCAxMi01LjQgMTItMTJ6bS05NiAwdi00MGMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NDBjMCA2LjYgNS40IDEyIDEyIDEyaDQwYzYuNiAwIDEyLTUuNCAxMi0xMnptMTkyIDB2LTQwYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY0MGMwIDYuNiA1LjQgMTIgMTIgMTJoNDBjNi42IDAgMTItNS40IDEyLTEyem05Ni0yNjB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlYxNjBINDh2Mjk4YzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY1MkgxNjBWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NTJINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWMTYwaDM1MnYyOThhNiA2IDAgMCAxLTYgNnptLTUyLjg0OS0yMDAuNjVMMTk4Ljg0MiA0MDQuNTE5Yy00LjcwNSA0LjY2Ny0xMi4zMDMgNC42MzctMTYuOTcxLS4wNjhsLTc1LjA5MS03NS42OTljLTQuNjY3LTQuNzA1LTQuNjM3LTEyLjMwMy4wNjgtMTYuOTcxbDIyLjcxOS0yMi41MzZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OWw0NC4xMDQgNDQuNDYxIDExMS4wNzItMTEwLjE4MWM0LjcwNS00LjY2NyAxMi4zMDMtNC42MzcgMTYuOTcxLjA2OGwyMi41MzYgMjIuNzE4YzQuNjY3IDQuNzA1IDQuNjM2IDEyLjMwMy0uMDY5IDE2Ljk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI0IDMyOGMtNi42IDAtMTItNS40LTEyLTEydi0yNGMwLTYuNiA1LjQtMTIgMTItMTJoMjAwYzYuNiAwIDEyIDUuNCAxMiAxMnYyNGMwIDYuNi01LjQgMTItMTIgMTJIMTI0em0zMjQtMjE2djM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWMTEyYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDQ4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoMTI4VjEyYzAtNi42IDUuNC0xMiAxMi0xMmg0MGM2LjYgMCAxMiA1LjQgMTIgMTJ2NTJoNDhjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWMTYwSDQ4djI5OGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzM2IDI5MnYyNGMwIDYuNi01LjQgMTItMTIgMTJoLTc2djc2YzAgNi42LTUuNCAxMi0xMiAxMmgtMjRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtNzZoLTc2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTI0YzAtNi42IDUuNC0xMiAxMi0xMmg3NnYtNzZjMC02LjYgNS40LTEyIDEyLTEyaDI0YzYuNiAwIDEyIDUuNCAxMiAxMnY3Nmg3NmM2LjYgMCAxMiA1LjQgMTIgMTJ6bTExMi0xODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFYxMTJjMC0yNi41IDIxLjUtNDggNDgtNDhoNDhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1MmgxMjhWMTJjMC02LjYgNS40LTEyIDEyLTEyaDQwYzYuNiAwIDEyIDUuNCAxMiAxMnY1Mmg0OGMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlYxNjBINDh2Mjk4YzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhbGVuZGFyVGltZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzExLjcgMzc0LjdsLTE3IDE3Yy00LjcgNC43LTEyLjMgNC43LTE3IDBMMjI0IDMzNy45bC01My43IDUzLjdjLTQuNyA0LjctMTIuMyA0LjctMTcgMGwtMTctMTdjLTQuNy00LjctNC43LTEyLjMgMC0xN2w1My43LTUzLjctNTMuNy01My43Yy00LjctNC43LTQuNy0xMi4zIDAtMTdsMTctMTdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDUzLjcgNTMuNyA1My43LTUzLjdjNC43LTQuNyAxMi4zLTQuNyAxNyAwbDE3IDE3YzQuNyA0LjcgNC43IDEyLjMgMCAxN0wyNTcuOSAzMDRsNTMuNyA1My43YzQuOCA0LjcgNC44IDEyLjMuMSAxN3pNNDQ4IDExMnYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGg0OFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDEyOFYxMmMwLTYuNiA1LjQtMTIgMTItMTJoNDBjNi42IDAgMTIgNS40IDEyIDEydjUyaDQ4YzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2VjE2MEg0OHYyOThjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2FsZW5kYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDY0aC00OFYxMmMwLTYuNi01LjQtMTItMTItMTJoLTQwYy02LjYgMC0xMiA1LjQtMTIgMTJ2NTJIMTYwVjEyYzAtNi42LTUuNC0xMi0xMi0xMmgtNDBjLTYuNiAwLTEyIDUuNC0xMiAxMnY1Mkg0OEMyMS41IDY0IDAgODUuNSAwIDExMnYzNTJjMCAyNi41IDIxLjUgNDggNDggNDhoMzUyYzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjExMmMwLTI2LjUtMjEuNS00OC00OC00OHptLTYgNDAwSDU0Yy0zLjMgMC02LTIuNy02LTZWMTYwaDM1MnYyOThjMCAzLjMtMi43IDYtNiA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhcmV0U3F1YXJlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMjUuMSAyMDhoMTk3LjhjMTAuNyAwIDE2LjEgMTMgOC41IDIwLjVsLTk4LjkgOTguM2MtNC43IDQuNy0xMi4yIDQuNy0xNi45IDBsLTk4LjktOTguM2MtNy43LTcuNS0yLjMtMjAuNSA4LjQtMjAuNXpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDYXJldFNxdWFyZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjcyIDE1Ny4xdjE5Ny44YzAgMTAuNy0xMyAxNi4xLTIwLjUgOC41bC05OC4zLTk4LjljLTQuNy00LjctNC43LTEyLjIgMC0xNi45bDk4LjMtOTguOWM3LjUtNy43IDIwLjUtMi4zIDIwLjUgOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhcmV0U3F1YXJlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTc2IDM1NC45VjE1Ny4xYzAtMTAuNyAxMy0xNi4xIDIwLjUtOC41bDk4LjMgOTguOWM0LjcgNC43IDQuNyAxMi4yIDAgMTYuOWwtOTguMyA5OC45Yy03LjUgNy43LTIwLjUgMi4zLTIwLjUtOC40ek00NDggODB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NhcmV0U3F1YXJlVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIyLjkgMzA0SDEyNS4xYy0xMC43IDAtMTYuMS0xMy04LjUtMjAuNWw5OC45LTk4LjNjNC43LTQuNyAxMi4yLTQuNyAxNi45IDBsOTguOSA5OC4zYzcuNyA3LjUgMi4zIDIwLjUtOC40IDIwLjV6TTQ0OCA4MHYzNTJjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjgwYzAtMjYuNSAyMS41LTQ4IDQ4LTQ4aDM1MmMyNi41IDAgNDggMjEuNSA0OCA0OHptLTQ4IDM0NlY4NmMwLTMuMy0yLjctNi02LTZINTRjLTMuMyAwLTYgMi43LTYgNnYzNDBjMCAzLjMgMi43IDYgNiA2aDM0MGMzLjMgMCA2LTIuNyA2LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hhcnRCYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzk2LjggMzUyaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjEwOC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djIzMC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptLTE5MiAwaDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44VjE0MC44YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djE5OC40YzAgNi40IDYuNCAxMi44IDEyLjggMTIuOHptOTYgMGgyMi40YzYuNCAwIDEyLjgtNi40IDEyLjgtMTIuOFYyMDQuOGMwLTYuNC02LjQtMTIuOC0xMi44LTEyLjhoLTIyLjRjLTYuNCAwLTEyLjggNi40LTEyLjggMTIuOHYxMzQuNGMwIDYuNCA2LjQgMTIuOCAxMi44IDEyLjh6TTQ5NiA0MDBINDhWODBjMC04Ljg0LTcuMTYtMTYtMTYtMTZIMTZDNy4xNiA2NCAwIDcxLjE2IDAgODB2MzM2YzAgMTcuNjcgMTQuMzMgMzIgMzIgMzJoNDY0YzguODQgMCAxNi03LjE2IDE2LTE2di0xNmMwLTguODQtNy4xNi0xNi0xNi0xNnptLTM4Ny4yLTQ4aDIyLjRjNi40IDAgMTIuOC02LjQgMTIuOC0xMi44di03MC40YzAtNi40LTYuNC0xMi44LTEyLjgtMTIuOGgtMjIuNGMtNi40IDAtMTIuOCA2LjQtMTIuOCAxMi44djcwLjRjMCA2LjQgNi40IDEyLjggMTIuOCAxMi44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA0OGMxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDAtMTEwLjUzMiAwLTIwMC04OS40NTEtMjAwLTIwMCAwLTExMC41MzIgODkuNDUxLTIwMCAyMDAtMjAwbTE0MC4yMDQgMTMwLjI2N2wtMjIuNTM2LTIyLjcxOGMtNC42NjctNC43MDUtMTIuMjY1LTQuNzM2LTE2Ljk3LS4wNjhMMjE1LjM0NiAzMDMuNjk3bC01OS43OTItNjAuMjc3Yy00LjY2Ny00LjcwNS0xMi4yNjUtNC43MzYtMTYuOTctLjA2OWwtMjIuNzE5IDIyLjUzNmMtNC43MDUgNC42NjctNC43MzYgMTIuMjY1LS4wNjggMTYuOTcxbDkwLjc4MSA5MS41MTZjNC42NjcgNC43MDUgMTIuMjY1IDQuNzM2IDE2Ljk3LjA2OGwxNzIuNTg5LTE3MS4yMDRjNC43MDQtNC42NjggNC43MzQtMTIuMjY2LjA2Ny0xNi45NzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2hlY2tTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDAwIDMySDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTJjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzNTJjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDQwMEg0OFY4MGgzNTJ2MzUyem0tMzUuODY0LTI0MS43MjRMMTkxLjU0NyAzNjEuNDhjLTQuNzA1IDQuNjY3LTEyLjMwMyA0LjYzNy0xNi45Ny0uMDY4bC05MC43ODEtOTEuNTE2Yy00LjY2Ny00LjcwNS00LjYzNy0xMi4zMDMuMDY5LTE2Ljk3MWwyMi43MTktMjIuNTM2YzQuNzA1LTQuNjY3IDEyLjMwMy00LjYzNyAxNi45Ny4wNjlsNTkuNzkyIDYwLjI3NyAxNDEuMzUyLTE0MC4yMTZjNC43MDUtNC42NjcgMTIuMzAzLTQuNjM3IDE2Ljk3LjA2OGwyMi41MzYgMjIuNzE4YzQuNjY3IDQuNzA2IDQuNjM3IDEyLjMwNC0uMDY4IDE2Ljk3MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptMCA0NDhjLTExMC41IDAtMjAwLTg5LjUtMjAwLTIwMFMxNDUuNSA1NiAyNTYgNTZzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMzYgNjRoLTgwYzAtMzUuMy0yOC43LTY0LTY0LTY0cy02NCAyOC43LTY0IDY0SDQ4QzIxLjUgNjQgMCA4NS41IDAgMTEydjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTEyYzAtMjYuNS0yMS41LTQ4LTQ4LTQ4ek0xOTIgNDBjMTMuMyAwIDI0IDEwLjcgMjQgMjRzLTEwLjcgMjQtMjQgMjQtMjQtMTAuNy0yNC0yNCAxMC43LTI0IDI0LTI0em0xNDQgNDE4YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDJ2MzZjMCA2LjYgNS40IDEyIDEyIDEyaDE2OGM2LjYgMCAxMi01LjQgMTItMTJ2LTM2aDQyYzMuMyAwIDYgMi43IDYgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTYxLjgtMTA0LjRsLTg0LjktNjEuN2MtMy4xLTIuMy00LjktNS45LTQuOS05LjdWMTE2YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MTQxLjdsNjYuOCA0OC42YzUuNCAzLjkgNi41IDExLjQgMi42IDE2LjhMMzM0LjYgMzQ5Yy0zLjkgNS4zLTExLjQgNi41LTE2LjggMi42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Nsb25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAwSDE0NGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgzMjBjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoNDhjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY0OGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4ek0zNjIgNDY0SDU0YTYgNiAwIDAgMS02LTZWMTUwYTYgNiAwIDAgMSA2LTZoNDJ2MjI0YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjI0djQyYTYgNiAwIDAgMS02IDZ6bTk2LTk2SDE1MGE2IDYgMCAwIDEtNi02VjU0YTYgNiAwIDAgMSA2LTZoMzA4YTYgNiAwIDAgMSA2IDZ2MzA4YTYgNiAwIDAgMS02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ2xvc2VkQ2FwdGlvbmluZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQxNmMyNi41IDAgNDgtMjEuNSA0OC00OFYxMTJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDMzNkg1NGMtMy4zIDAtNi0yLjctNi02VjExOGMwLTMuMyAyLjctNiA2LTZoNDA0YzMuMyAwIDYgMi43IDYgNnYyNzZjMCAzLjMtMi43IDYtNiA2em0tMjExLjEtODUuN2MxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOC0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN2wtMTcuNSAzMC41Yy0xLjkgMy4xLTYuMiA0LTkuMSAxLjctNDAuOC0zMi05NC42LTE0LjktOTQuNiAzMS4yIDAgNDggNTEgNzAuNSA5Mi4yIDMyLjYgMi44LTIuNSA3LjEtMi4xIDkuMi45bDE5LjYgMjcuN3ptMTkwLjQgMGMxLjcgMi40IDEuNSA1LjYtLjUgNy43LTUzLjYgNTYuOS0xNzIuOCAzMi4xLTE3Mi44LTY3LjkgMC05Ny4zIDEyMS43LTExOS41IDE3Mi41LTcwLjEgMi4xIDIgMi41IDMuMiAxIDUuN0w0MjAgMjIwLjJjLTEuOSAzLjEtNi4yIDQtOS4xIDEuNy00MC44LTMyLTk0LjYtMTQuOS05NC42IDMxLjIgMCA0OCA1MSA3MC41IDkyLjIgMzIuNiAyLjgtMi41IDcuMS0yLjEgOS4yLjlsMTkuNiAyNy43elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnRBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQ4IDBINjRDMjguNyAwIDAgMjguNyAwIDY0djI4OGMwIDM1LjMgMjguNyA2NCA2NCA2NGg5NnY4NGMwIDcuMSA1LjggMTIgMTIgMTIgMi40IDAgNC45LS43IDcuMS0yLjRMMzA0IDQxNmgxNDRjMzUuMyAwIDY0LTI4LjcgNjQtNjRWNjRjMC0zNS4zLTI4LjctNjQtNjQtNjR6bTE2IDM1MmMwIDguOC03LjIgMTYtMTYgMTZIMjg4bC0xMi44IDkuNkwyMDggNDI4di02MEg2NGMtOC44IDAtMTYtNy4yLTE2LTE2VjY0YzAtOC44IDcuMi0xNiAxNi0xNmgzODRjOC44IDAgMTYgNy4yIDE2IDE2djI4OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDb21tZW50RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDQgMjA4Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptMTEyIDBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xMTIgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6TTI1NiAzMkMxMTQuNiAzMiAwIDEyNS4xIDAgMjQwYzAgNDcuNiAxOS45IDkxLjIgNTIuOSAxMjYuM0MzOCA0MDUuNyA3IDQzOS4xIDYuNSA0MzkuNWMtNi42IDctOC40IDE3LjItNC42IDI2UzE0LjQgNDgwIDI0IDQ4MGM2MS41IDAgMTEwLTI1LjcgMTM5LjEtNDYuM0MxOTIgNDQyLjggMjIzLjIgNDQ4IDI1NiA0NDhjMTQxLjQgMCAyNTYtOTMuMSAyNTYtMjA4UzM5Ny40IDMyIDI1NiAzMnptMCAzNjhjLTI2LjcgMC01My4xLTQuMS03OC40LTEyLjFsLTIyLjctNy4yLTE5LjUgMTMuOGMtMTQuMyAxMC4xLTMzLjkgMjEuNC01Ny41IDI5IDcuMy0xMi4xIDE0LjQtMjUuNyAxOS45LTQwLjJsMTAuNi0yOC4xLTIwLjYtMjEuOEM2OS43IDMxNC4xIDQ4IDI4Mi4yIDQ4IDI0MGMwLTg4LjIgOTMuMy0xNjAgMjA4LTE2MHMyMDggNzEuOCAyMDggMTYwLTkzLjMgMTYwLTIwOCAxNjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tbWVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgMzJDMTE0LjYgMzIgMCAxMjUuMSAwIDI0MGMwIDQ3LjYgMTkuOSA5MS4yIDUyLjkgMTI2LjNDMzggNDA1LjcgNyA0MzkuMSA2LjUgNDM5LjVjLTYuNiA3LTguNCAxNy4yLTQuNiAyNlMxNC40IDQ4MCAyNCA0ODBjNjEuNSAwIDExMC0yNS43IDEzOS4xLTQ2LjNDMTkyIDQ0Mi44IDIyMy4yIDQ0OCAyNTYgNDQ4YzE0MS40IDAgMjU2LTkzLjEgMjU2LTIwOFMzOTcuNCAzMiAyNTYgMzJ6bTAgMzY4Yy0yNi43IDAtNTMuMS00LjEtNzguNC0xMi4xbC0yMi43LTcuMi0xOS41IDEzLjhjLTE0LjMgMTAuMS0zMy45IDIxLjQtNTcuNSAyOSA3LjMtMTIuMSAxNC40LTI1LjcgMTkuOS00MC4ybDEwLjYtMjguMS0yMC42LTIxLjhDNjkuNyAzMTQuMSA0OCAyODIuMiA0OCAyNDBjMC04OC4yIDkzLjMtMTYwIDIwOC0xNjBzMjA4IDcxLjggMjA4IDE2MC05My4zIDE2MC0yMDggMTYwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvbW1lbnRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUzMiAzODYuMmMyNy41LTI3LjEgNDQtNjEuMSA0NC05OC4yIDAtODAtNzYuNS0xNDYuMS0xNzYuMi0xNTcuOUMzNjguMyA3Mi41IDI5NC4zIDMyIDIwOCAzMiA5My4xIDMyIDAgMTAzLjYgMCAxOTJjMCAzNyAxNi41IDcxIDQ0IDk4LjItMTUuMyAzMC43LTM3LjMgNTQuNS0zNy43IDU0LjktNi4zIDYuNy04LjEgMTYuNS00LjQgMjUgMy42IDguNSAxMiAxNCAyMS4yIDE0IDUzLjUgMCA5Ni43LTIwLjIgMTI1LjItMzguOCA5LjIgMi4xIDE4LjcgMy43IDI4LjQgNC45QzIwOC4xIDQwNy42IDI4MS44IDQ0OCAzNjggNDQ4YzIwLjggMCA0MC44LTIuNCA1OS44LTYuOEM0NTYuMyA0NTkuNyA0OTkuNCA0ODAgNTUzIDQ4MGM5LjIgMCAxNy41LTUuNSAyMS4yLTE0IDMuNi04LjUgMS45LTE4LjMtNC40LTI1LS40LS4zLTIyLjUtMjQuMS0zNy44LTU0Ljh6bS0zOTIuOC05Mi4zTDEyMi4xIDMwNWMtMTQuMSA5LjEtMjguNSAxNi4zLTQzLjEgMjEuNCAyLjctNC43IDUuNC05LjcgOC0xNC44bDE1LjUtMzEuMUw3Ny43IDI1NkM2NC4yIDI0Mi42IDQ4IDIyMC43IDQ4IDE5MmMwLTYwLjcgNzMuMy0xMTIgMTYwLTExMnMxNjAgNTEuMyAxNjAgMTEyLTczLjMgMTEyLTE2MCAxMTJjLTE2LjUgMC0zMy0xLjktNDktNS42bC0xOS44LTQuNXpNNDk4LjMgMzUybC0yNC43IDI0LjQgMTUuNSAzMS4xYzIuNiA1LjEgNS4zIDEwLjEgOCAxNC44LTE0LjYtNS4xLTI5LTEyLjMtNDMuMS0yMS40bC0xNy4xLTExLjEtMTkuOSA0LjZjLTE2IDMuNy0zMi41IDUuNi00OSA1LjYtNTQgMC0xMDIuMi0yMC4xLTEzMS4zLTQ5LjdDMzM4IDMzOS41IDQxNiAyNzIuOSA0MTYgMTkyYzAtMy40LS40LTYuNy0uNy0xMEM0NzkuNyAxOTYuNSA1MjggMjM4LjggNTI4IDI4OGMwIDI4LjctMTYuMiA1MC42LTI5LjcgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29tcGFzcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNDcuOTQgMTI5Ljg2TDIwMy42IDE5NS44M2EzMS45MzggMzEuOTM4IDAgMCAwLTE1Ljc3IDE1Ljc3bC02NS45NyAxNDQuMzRjLTcuNjEgMTYuNjUgOS41NCAzMy44MSAyNi4yIDI2LjJsMTQ0LjM0LTY1Ljk3YTMxLjkzOCAzMS45MzggMCAwIDAgMTUuNzctMTUuNzdsNjUuOTctMTQ0LjM0YzcuNjEtMTYuNjYtOS41NC0zMy44MS0yNi4yLTI2LjJ6bS03Ny4zNiAxNDguNzJjLTEyLjQ3IDEyLjQ3LTMyLjY5IDEyLjQ3LTQ1LjE2IDAtMTIuNDctMTIuNDctMTIuNDctMzIuNjkgMC00NS4xNiAxMi40Ny0xMi40NyAzMi42OS0xMi40NyA0NS4xNiAwIDEyLjQ3IDEyLjQ3IDEyLjQ3IDMyLjY5IDAgNDUuMTZ6TTI0OCA4QzExMS4wMyA4IDAgMTE5LjAzIDAgMjU2czExMS4wMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzIDI0OC0yNDhTMzg0Ljk3IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMjggMC0yMDAtODkuNzItMjAwLTIwMFMxMzcuNzIgNTYgMjQ4IDU2czIwMCA4OS43MiAyMDAgMjAwLTg5LjcyIDIwMC0yMDAgMjAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0NvcHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDMzLjk0MSA2NS45NDFsLTUxLjg4Mi01MS44ODJBNDggNDggMCAwIDAgMzQ4LjExOCAwSDE3NmMtMjYuNTEgMC00OCAyMS40OS00OCA0OHY0OEg0OGMtMjYuNTEgMC00OCAyMS40OS00OCA0OHYzMjBjMCAyNi41MSAyMS40OSA0OCA0OCA0OGgyMjRjMjYuNTEgMCA0OC0yMS40OSA0OC00OHYtNDhoODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFY5OS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMjY2IDQ2NEg1NGE2IDYgMCAwIDEtNi02VjE1MGE2IDYgMCAwIDEgNi02aDc0djIyNGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDk2djQyYTYgNiAwIDAgMS02IDZ6bTEyOC05NkgxODJhNiA2IDAgMCAxLTYtNlY1NGE2IDYgMCAwIDEgNi02aDEwNnY4OGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoODh2MjAyYTYgNiAwIDAgMS02IDZ6bTYtMjU2aC02NFY0OGg5LjYzMmMxLjU5MSAwIDMuMTE3LjYzMiA0LjI0MyAxLjc1N2w0OC4zNjggNDguMzY4YTYgNiAwIDAgMSAxLjc1NyA0LjI0M1YxMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnQ29weXJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA0NDhjLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMxIDg5LjQ1MS0yMDAgMjAwLTIwMCAxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDB6bTEwNy4zNTEtMTAxLjA2NGMtOS42MTQgOS43MTItNDUuNTMgNDEuMzk2LTEwNC4wNjUgNDEuMzk2LTgyLjQzIDAtMTQwLjQ4NC02MS40MjUtMTQwLjQ4NC0xNDEuNTY3IDAtNzkuMTUyIDYwLjI3NS0xMzkuNDAxIDEzOS43NjItMTM5LjQwMSA1NS41MzEgMCA4OC43MzggMjYuNjIgOTcuNTkzIDM0Ljc3OWExMS45NjUgMTEuOTY1IDAgMCAxIDEuOTM2IDE1LjMyMmwtMTguMTU1IDI4LjExM2MtMy44NDEgNS45NS0xMS45NjYgNy4yODItMTcuNDk5IDIuOTIxLTguNTk1LTYuNzc2LTMxLjgxNC0yMi41MzgtNjEuNzA4LTIyLjUzOC00OC4zMDMgMC03Ny45MTYgMzUuMzMtNzcuOTE2IDgwLjA4MiAwIDQxLjU4OSAyNi44ODggODMuNjkyIDc4LjI3NyA4My42OTIgMzIuNjU3IDAgNTYuODQzLTE5LjAzOSA2NS43MjYtMjcuMjI1IDUuMjctNC44NTcgMTMuNTk2LTQuMDM5IDE3LjgyIDEuNzM4bDE5Ljg2NSAyNy4xN2ExMS45NDcgMTEuOTQ3IDAgMCAxLTEuMTUyIDE1LjUxOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdDcmVkaXRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDMySDQ4LjFDMjEuNSAzMiAwIDUzLjUgMCA4MHYzNTJjMCAyNi41IDIxLjUgNDggNDguMSA0OGg0NzkuOGMyNi42IDAgNDguMS0yMS41IDQ4LjEtNDhWODBjMC0yNi41LTIxLjUtNDgtNDguMS00OHpNNTQuMSA4MGg0NjcuOGMzLjMgMCA2IDIuNyA2IDZ2NDJINDguMVY4NmMwLTMuMyAyLjctNiA2LTZ6bTQ2Ny44IDM1Mkg1NC4xYy0zLjMgMC02LTIuNy02LTZWMjU2aDQ3OS44djE3MGMwIDMuMy0yLjcgNi02IDZ6TTE5MiAzMzJ2NDBjMCA2LjYtNS40IDEyLTEyIDEyaC03MmMtNi42IDAtMTItNS40LTEyLTEydi00MGMwLTYuNiA1LjQtMTIgMTItMTJoNzJjNi42IDAgMTIgNS40IDEyIDEyem0xOTIgMHY0MGMwIDYuNi01LjQgMTItMTIgMTJIMjM2Yy02LjYgMC0xMi01LjQtMTItMTJ2LTQwYzAtNi42IDUuNC0xMiAxMi0xMmgxMzZjNi42IDAgMTIgNS40IDEyIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Rpenp5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTMzLjgtMjE3LjljNy44LTcuOCA3LjgtMjAuNSAwLTI4LjNMMTk2LjMgMTkybDE3LjktMTcuOWM3LjgtNy44IDcuOC0yMC41IDAtMjguMy03LjgtNy44LTIwLjUtNy44LTI4LjMgMEwxNjggMTYzLjdsLTE3LjgtMTcuOGMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDAtNy44IDcuOC03LjggMjAuNSAwIDI4LjNsMTcuOSAxNy45LTE3LjkgMTcuOWMtNy44IDcuOC03LjggMjAuNSAwIDI4LjMgNy44IDcuOCAyMC41IDcuOCAyOC4zIDBsMTcuOC0xNy44IDE3LjggMTcuOGM3LjkgNy43IDIwLjUgNy43IDI4LjQtLjJ6bTE2MC05Mi4yYy03LjgtNy44LTIwLjUtNy44LTI4LjMgMEwzMjggMTYzLjdsLTE3LjgtMTcuOGMtNy44LTcuOC0yMC41LTcuOC0yOC4zIDAtNy44IDcuOC03LjggMjAuNSAwIDI4LjNsMTcuOSAxNy45LTE3LjkgMTcuOWMtNy44IDcuOC03LjggMjAuNSAwIDI4LjMgNy44IDcuOCAyMC41IDcuOCAyOC4zIDBsMTcuOC0xNy44IDE3LjggMTcuOGM3LjggNy44IDIwLjUgNy44IDI4LjMgMCA3LjgtNy44IDcuOC0yMC41IDAtMjguM2wtMTcuOC0xOCAxNy45LTE3LjljNy43LTcuOCA3LjctMjAuNCAwLTI4LjJ6TTI0OCAyNzJjLTM1LjMgMC02NCAyOC43LTY0IDY0czI4LjcgNjQgNjQgNjQgNjQtMjguNyA2NC02NC0yOC43LTY0LTY0LTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0RvdENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgNTZjMTEwLjUzMiAwIDIwMCA4OS40NTEgMjAwIDIwMCAwIDExMC41MzItODkuNDUxIDIwMC0yMDAgMjAwLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMyIDg5LjQ1MS0yMDAgMjAwLTIwMG0wLTQ4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCAxNjhjLTQ0LjE4MyAwLTgwIDM1LjgxNy04MCA4MHMzNS44MTcgODAgODAgODAgODAtMzUuODE3IDgwLTgwLTM1LjgxNy04MC04MC04MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFZGl0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMi4zIDM0NC45bDMyLTMyYzUtNSAxMy43LTEuNSAxMy43IDUuN1Y0NjRjMCAyNi41LTIxLjUgNDgtNDggNDhINDhjLTI2LjUgMC00OC0yMS41LTQ4LTQ4VjExMmMwLTI2LjUgMjEuNS00OCA0OC00OGgyNzMuNWM3LjEgMCAxMC43IDguNiA1LjcgMTMuN2wtMzIgMzJjLTEuNSAxLjUtMy41IDIuMy01LjcgMi4zSDQ4djM1MmgzNTJWMzUwLjVjMC0yLjEuOC00LjEgMi4zLTUuNnptMTU2LjYtMjAxLjhMMjk2LjMgNDA1LjdsLTkwLjQgMTBjLTI2LjIgMi45LTQ4LjUtMTkuMi00NS42LTQ1LjZsMTAtOTAuNEw0MzIuOSAxNy4xYzIyLjktMjIuOSA1OS45LTIyLjkgODIuNyAwbDQzLjIgNDMuMmMyMi45IDIyLjkgMjIuOSA2MCAuMSA4Mi44ek00NjAuMSAxNzRMNDAyIDExNS45IDIxNi4yIDMwMS44bC03LjMgNjUuMyA2NS4zLTcuM0w0NjAuMSAxNzR6bTY0LjgtNzkuN2wtNDMuMi00My4yYy00LjEtNC4xLTEwLjgtNC4xLTE0LjggMEw0MzYgODJsNTguMSA1OC4xIDMwLjktMzAuOWM0LTQuMiA0LTEwLjgtLjEtMTQuOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDk0LjU4NiAxNjQuNTE2Yy00LjY5Ny0zLjg4My0xMTEuNzIzLTg5Ljk1LTEzNS4yNTEtMTA4LjY1N0MzMzcuMjMxIDM4LjE5MSAyOTkuNDM3IDAgMjU2IDBjLTQzLjIwNSAwLTgwLjYzNiAzNy43MTctMTAzLjMzNSA1NS44NTktMjQuNDYzIDE5LjQ1LTEzMS4wNyAxMDUuMTk1LTEzNS4xNSAxMDguNTQ5QTQ4LjAwNCA0OC4wMDQgMCAwIDAgMCAyMDEuNDg1VjQ2NGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjIwMS41MDlhNDggNDggMCAwIDAtMTcuNDE0LTM2Ljk5M3pNNDY0IDQ1OGE2IDYgMCAwIDEtNiA2SDU0YTYgNiAwIDAgMS02LTZWMjA0LjM0N2MwLTEuODEzLjgxNi0zLjUyNiAyLjIyNi00LjY2NSAxNS44Ny0xMi44MTQgMTA4Ljc5My04Ny41NTQgMTMyLjM2NC0xMDYuMjkzQzIwMC43NTUgNzguODggMjMyLjM5OCA0OCAyNTYgNDhjMjMuNjkzIDAgNTUuODU3IDMxLjM2OSA3My40MSA0NS4zODkgMjMuNTczIDE4Ljc0MSAxMTYuNTAzIDkzLjQ5MyAxMzIuMzY2IDEwNi4zMTZhNS45OSA1Ljk5IDAgMCAxIDIuMjI0IDQuNjYzVjQ1OHptLTMxLjk5MS0xODcuNzA0YzQuMjQ5IDUuMTU5IDMuNDY1IDEyLjc5NS0xLjc0NSAxNi45ODEtMjguOTc1IDIzLjI4My01OS4yNzQgNDcuNTk3LTcwLjkyOSA1Ni44NjNDMzM2LjYzNiAzNjIuMjgzIDI5OS4yMDUgNDAwIDI1NiA0MDBjLTQzLjQ1MiAwLTgxLjI4Ny0zOC4yMzctMTAzLjMzNS01NS44Ni0xMS4yNzktOC45NjctNDEuNzQ0LTMzLjQxMy03MC45MjctNTYuODY1LTUuMjEtNC4xODctNS45OTMtMTEuODIyLTEuNzQ1LTE2Ljk4MWwxNS4yNTgtMTguNTI4YzQuMTc4LTUuMDczIDExLjY1Ny01Ljg0MyAxNi43NzktMS43MjYgMjguNjE4IDIzLjAwMSA1OC41NjYgNDcuMDM1IDcwLjU2IDU2LjU3MUMyMDAuMTQzIDMyMC42MzEgMjMyLjMwNyAzNTIgMjU2IDM1MmMyMy42MDIgMCA1NS4yNDYtMzAuODggNzMuNDEtNDUuMzg5IDExLjk5NC05LjUzNSA0MS45NDQtMzMuNTcgNzAuNTYzLTU2LjU2OCA1LjEyMi00LjExNiAxMi42MDEtMy4zNDYgMTYuNzc4IDEuNzI3bDE1LjI1OCAxOC41MjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRW52ZWxvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bTAgNDh2NDAuODA1Yy0yMi40MjIgMTguMjU5LTU4LjE2OCA0Ni42NTEtMTM0LjU4NyAxMDYuNDktMTYuODQxIDEzLjI0Ny01MC4yMDEgNDUuMDcyLTczLjQxMyA0NC43MDEtMjMuMjA4LjM3NS01Ni41NzktMzEuNDU5LTczLjQxMy00NC43MDFDMTA2LjE4IDE5OS40NjUgNzAuNDI1IDE3MS4wNjcgNDggMTUyLjgwNVYxMTJoNDE2ek00OCA0MDBWMjE0LjM5OGMyMi45MTQgMTguMjUxIDU1LjQwOSA0My44NjIgMTA0LjkzOCA4Mi42NDYgMjEuODU3IDE3LjIwNSA2MC4xMzQgNTUuMTg2IDEwMy4wNjIgNTQuOTU1IDQyLjcxNy4yMzEgODAuNTA5LTM3LjE5OSAxMDMuMDUzLTU0Ljk0NyA0OS41MjgtMzguNzgzIDgyLjAzMi02NC40MDEgMTA0Ljk0Ny04Mi42NTNWNDAwSDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZVNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA2NDAgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYzNCA0NzFMMzYgMy41MUExNiAxNiAwIDAgMCAxMy41MSA2bC0xMCAxMi40OUExNiAxNiAwIDAgMCA2IDQxbDU5OCA0NjcuNDlhMTYgMTYgMCAwIDAgMjIuNDktMi40OWwxMC0xMi40OUExNiAxNiAwIDAgMCA2MzQgNDcxek0yOTYuNzkgMTQ2LjQ3bDEzNC43OSAxMDUuMzhDNDI5LjM2IDE5MS45MSAzODAuNDggMTQ0IDMyMCAxNDRhMTEyLjI2IDExMi4yNiAwIDAgMC0yMy4yMSAyLjQ3em00Ni40MiAyMTkuMDdMMjA4LjQyIDI2MC4xNkMyMTAuNjUgMzIwLjA5IDI1OS41MyAzNjggMzIwIDM2OGExMTMgMTEzIDAgMCAwIDIzLjIxLTIuNDZ6TTMyMCAxMTJjOTguNjUgMCAxODkuMDkgNTUgMjM3LjkzIDE0NGEyODUuNTMgMjg1LjUzIDAgMCAxLTQ0IDYwLjJsMzcuNzQgMjkuNWEzMzMuNyAzMzMuNyAwIDAgMCA1Mi45LTc1LjExIDMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTlDNTUwLjI5IDEzNS41OSA0NDIuOTMgNjQgMzIwIDY0Yy0zNi43IDAtNzEuNzEgNy0xMDQuNjMgMTguODFsNDYuNDEgMzYuMjljMTguOTQtNC4zIDM4LjM0LTcuMSA1OC4yMi03LjF6bTAgMjg4Yy05OC42NSAwLTE4OS4wOC01NS0yMzcuOTMtMTQ0YTI4NS40NyAyODUuNDcgMCAwIDEgNDQuMDUtNjAuMTlsLTM3Ljc0LTI5LjVhMzMzLjYgMzMzLjYgMCAwIDAtNTIuODkgNzUuMSAzMi4zNSAzMi4zNSAwIDAgMCAwIDI5LjE5Qzg5LjcyIDM3Ni40MSAxOTcuMDggNDQ4IDMyMCA0NDhjMzYuNyAwIDcxLjcxLTcuMDUgMTA0LjYzLTE4LjgxbC00Ni40MS0zNi4yOEMzNTkuMjggMzk3LjIgMzM5Ljg5IDQwMCAzMjAgNDAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yODggMTQ0YTExMC45NCAxMTAuOTQgMCAwIDAtMzEuMjQgNSA1NS40IDU1LjQgMCAwIDEgNy4yNCAyNyA1NiA1NiAwIDAgMS01NiA1NiA1NS40IDU1LjQgMCAwIDEtMjctNy4yNEExMTEuNzEgMTExLjcxIDAgMSAwIDI4OCAxNDR6bTI4NC41MiA5Ny40QzUxOC4yOSAxMzUuNTkgNDEwLjkzIDY0IDI4OCA2NFM1Ny42OCAxMzUuNjQgMy40OCAyNDEuNDFhMzIuMzUgMzIuMzUgMCAwIDAgMCAyOS4xOUM1Ny43MSAzNzYuNDEgMTY1LjA3IDQ0OCAyODggNDQ4czIzMC4zMi03MS42NCAyODQuNTItMTc3LjQxYTMyLjM1IDMyLjM1IDAgMCAwIDAtMjkuMTl6TTI4OCA0MDBjLTk4LjY1IDAtMTg5LjA5LTU1LTIzNy45My0xNDRDOTguOTEgMTY3IDE4OS4zNCAxMTIgMjg4IDExMnMxODkuMDkgNTUgMjM3LjkzIDE0NEM0NzcuMSAzNDUgMzg2LjY2IDQwMCAyODggNDAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDI0OHYyOGMwIDYuNi01LjQgMTItMTIgMTJIMTA4Yy02LjYgMC0xMi01LjQtMTItMTJ2LTI4YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0tMTIgNzJIMTA4Yy02LjYgMC0xMiA1LjQtMTIgMTJ2MjhjMCA2LjYgNS40IDEyIDEyIDEyaDE2OGM2LjYgMCAxMi01LjQgMTItMTJ2LTI4YzAtNi42LTUuNC0xMi0xMi0xMnptMTA4LTE4OC4xVjQ2NGMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWNDhDMCAyMS41IDIxLjUgMCA0OCAwaDIwNC4xQzI2NC44IDAgMjc3IDUuMSAyODYgMTQuMUwzNjkuOSA5OGM5IDguOSAxNC4xIDIxLjIgMTQuMSAzMy45em0tMTI4LTgwVjEyOGg3Ni4xTDI1NiA1MS45ek0zMzYgNDY0VjE3NkgyMzJjLTEzLjMgMC0yNC0xMC43LTI0LTI0VjQ4SDQ4djQxNmgyODh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUFyY2hpdmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4LjMgMTYwdjMyaDMydi0zMnptNjQtOTZoLTMydjMyaDMyem0tNjQgMzJ2MzJoMzJWOTZ6bTY0IDMyaC0zMnYzMmgzMnptMTc3LjYtMzAuMUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0yNTYgNTEuOWw3Ni4xIDc2LjFIMjU2ek0zMzYgNDY0SDQ4VjQ4aDc5Ljd2MTZoMzJWNDhIMjA4djEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR6TTE5NC4yIDI2NS43Yy0xLjEtNS42LTYtOS43LTExLjgtOS43aC0yMi4xdi0zMmgtMzJ2MzJsLTE5LjcgOTcuMUMxMDIgMzg1LjYgMTI2LjggNDE2IDE2MCA0MTZjMzMuMSAwIDU3LjktMzAuMiA1MS41LTYyLjZ6bS0zMy45IDEyNC40Yy0xNy45IDAtMzIuNC0xMi4xLTMyLjQtMjdzMTQuNS0yNyAzMi40LTI3IDMyLjQgMTIuMSAzMi40IDI3LTE0LjUgMjctMzIuNCAyN3ptMzItMTk4LjFoLTMydjMyaDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVBdWRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOTQxIDk3Ljk0MWwtODMuODgyLTgzLjg4MkE0OCA0OCAwIDAgMCAyNTIuMTE4IDBINDhDMjEuNDkgMCAwIDIxLjQ5IDAgNDh2NDE2YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjg4YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTMxLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0zMzIuMTE4IDEyOEgyNTZWNTEuODgyTDMzMi4xMTggMTI4ek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjI1NSAxMC43NDUgMjQgMjQgMjRoMTA0djI4OEg0OHptMTQ0LTc2LjAyNGMwIDEwLjY5MS0xMi45MjYgMTYuMDQ1LTIwLjQ4NSA4LjQ4NUwxMzYgMzYwLjQ4NmgtMjhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTU2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMjhsMzUuNTE1LTM2Ljk0N2M3LjU2LTcuNTYgMjAuNDg1LTIuMjA2IDIwLjQ4NSA4LjQ4NXYxMzUuOTUyem00MS4yMDEtNDcuMTNjOS4wNTEtOS4yOTcgOS4wNi0yNC4xMzMuMDAxLTMzLjQzOS0yMi4xNDktMjIuNzUyIDEyLjIzNS01Ni4yNDYgMzQuMzk1LTMzLjQ4MSAyNy4xOTggMjcuOTQgMjcuMjEyIDcyLjQ0NC4wMDEgMTAwLjQwMS0yMS43OTMgMjIuMzg2LTU2Ljk0Ny0xMC4zMTUtMzQuMzk3LTMzLjQ4MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNDkuOSAzNDkuMWwtLjItLjItMzIuOC0yOC45IDMyLjgtMjguOWMzLjYtMy4yIDQtOC44LjgtMTIuNGwtLjItLjItMTcuNC0xOC42Yy0zLjQtMy42LTktMy43LTEyLjQtLjRsLTU3LjcgNTQuMWMtMy43IDMuNS0zLjcgOS40IDAgMTIuOGw1Ny43IDU0LjFjMS42IDEuNSAzLjggMi40IDYgMi40IDIuNCAwIDQuOC0xIDYuNC0yLjhsMTcuNC0xOC42YzMuMy0zLjUgMy4xLTkuMS0uNC0xMi40em0yMjAtMjUxLjJMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMjU2IDUxLjlsNzYuMSA3Ni4xSDI1NnpNMzM2IDQ2NEg0OFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHpNMjA5LjYgMjE0Yy00LjctMS40LTkuNSAxLjMtMTAuOSA2TDE0NCA0MDguMWMtMS40IDQuNyAxLjMgOS42IDYgMTAuOWwyNC40IDcuMWM0LjcgMS40IDkuNi0xLjQgMTAuOS02TDI0MCAyMzEuOWMxLjQtNC43LTEuMy05LjYtNi0xMC45em0yNC41IDc2LjlsLjIuMiAzMi44IDI4LjktMzIuOCAyOC45Yy0zLjYgMy4yLTQgOC44LS44IDEyLjRsLjIuMiAxNy40IDE4LjZjMy4zIDMuNSA4LjkgMy43IDEyLjQuNGw1Ny43LTU0LjFjMy43LTMuNSAzLjctOS40IDAtMTIuOGwtNTcuNy01NC4xYy0zLjUtMy4zLTkuMS0zLjItMTIuNC40bC0xNy40IDE4LjZjLTMuMyAzLjUtMy4xIDkuMS40IDEyLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZUV4Y2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjEyLTI0MGgtMjguOGMtNC40IDAtOC40IDIuNC0xMC41IDYuMy0xOCAzMy4xLTIyLjIgNDIuNC0yOC42IDU3LjctMTMuOS0yOS4xLTYuOS0xNy4zLTI4LjYtNTcuNy0yLjEtMy45LTYuMi02LjMtMTAuNi02LjNIMTI0Yy05LjMgMC0xNSAxMC0xMC40IDE4bDQ2LjMgNzgtNDYuMyA3OGMtNC43IDggMS4xIDE4IDEwLjQgMThoMjguOWM0LjQgMCA4LjQtMi40IDEwLjUtNi4zIDIxLjctNDAgMjMtNDUgMjguNi01Ny43IDE0LjkgMzAuMiA1LjkgMTUuOSAyOC42IDU3LjcgMi4xIDMuOSA2LjIgNi4zIDEwLjYgNi4zSDI2MGM5LjMgMCAxNS0xMCAxMC40LTE4TDIyNCAzMjBjLjctMS4xIDMwLjMtNTAuNSA0Ni4zLTc4IDQuNy04LTEuMS0xOC0xMC4zLTE4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZpbGVJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTMyLTQ4aDIyNFYyODhsLTIzLjUtMjMuNWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDE3NiAzNTJsLTM5LjUtMzkuNWMtNC43LTQuNy0xMi4zLTQuNy0xNyAwTDgwIDM1MnY2NHptNDgtMjQwYy0yNi41IDAtNDggMjEuNS00OCA0OHMyMS41IDQ4IDQ4IDQ4IDQ4LTIxLjUgNDgtNDgtMjEuNS00OC00OC00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlUGRmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHptMjUwLjItMTQzLjdjLTEyLjItMTItNDctOC43LTY0LjQtNi41LTE3LjItMTAuNS0yOC43LTI1LTM2LjgtNDYuMyAzLjktMTYuMSAxMC4xLTQwLjYgNS40LTU2LTQuMi0yNi4yLTM3LjgtMjMuNi00Mi42LTUuOS00LjQgMTYuMS0uNCAzOC41IDcgNjcuMS0xMCAyMy45LTI0LjkgNTYtMzUuNCA3NC40LTIwIDEwLjMtNDcgMjYuMi01MSA0Ni4yLTMuMyAxNS44IDI2IDU1LjIgNzYuMS0zMS4yIDIyLjQtNy40IDQ2LjgtMTYuNSA2OC40LTIwLjEgMTguOSAxMC4yIDQxIDE3IDU1LjggMTcgMjUuNSAwIDI4LTI4LjIgMTcuNS0zOC43em0tMTk4LjEgNzcuOGM1LjEtMTMuNyAyNC41LTI5LjUgMzAuNC0zNS0xOSAzMC4zLTMwLjQgMzUuNy0zMC40IDM1em04MS42LTE5MC42YzcuNCAwIDYuNyAzMi4xIDEuOCA0MC44LTQuNC0xMy45LTQuMy00MC44LTEuOC00MC44em0tMjQuNCAxMzYuNmM5LjctMTYuOSAxOC0zNyAyNC43LTU0LjcgOC4zIDE1LjEgMTguOSAyNy4yIDMwLjEgMzUuNS0yMC44IDQuMy0zOC45IDEzLjEtNTQuOCAxOS4yem0xMzEuNi01cy01IDYtMzcuMy03LjhjMzUuMS0yLjYgNDAuOSA1LjQgMzcuMyA3Ljh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRmlsZVBvd2VycG9pbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5LjkgOTcuOUwyODYgMTRDMjc3IDUgMjY0LjgtLjEgMjUyLjEtLjFINDhDMjEuNSAwIDAgMjEuNSAwIDQ4djQxNmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgyODhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWMTMxLjljMC0xMi43LTUuMS0yNS0xNC4xLTM0ek0zMzIuMSAxMjhIMjU2VjUxLjlsNzYuMSA3Ni4xek00OCA0NjRWNDhoMTYwdjEwNGMwIDEzLjMgMTAuNyAyNCAyNCAyNGgxMDR2Mjg4SDQ4em03Mi02MFYyMzZjMC02LjYgNS40LTEyIDEyLTEyaDY5LjJjMzYuNyAwIDYyLjggMjcgNjIuOCA2Ni4zIDAgNzQuMy02OC43IDY2LjUtOTUuNSA2Ni41VjQwNGMwIDYuNi01LjQgMTItMTIgMTJIMTMyYy02LjYgMC0xMi01LjQtMTItMTJ6bTQ4LjUtODcuNGgyM2M3LjkgMCAxMy45LTIuNCAxOC4xLTcuMiA4LjUtOS44IDguNC0yOC41LjEtMzcuOC00LjEtNC42LTkuOS03LTE3LjQtN2gtMjMuOXY1MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlVmlkZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDM4NCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzY5Ljk0MSA5Ny45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMjUyLjExOCAwSDQ4QzIxLjQ5IDAgMCAyMS40OSAwIDQ4djQxNmMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDI4OGMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjEzMS44ODJhNDggNDggMCAwIDAtMTQuMDU5LTMzLjk0MXpNMzMyLjExOCAxMjhIMjU2VjUxLjg4MkwzMzIuMTE4IDEyOHpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4yNTUgMTAuNzQ1IDI0IDI0IDI0aDEwNHYyODhINDh6bTIyOC42ODctMjExLjMwM0wyMjQgMzA1LjM3NFYyNjhjMC0xMS4wNDYtOC45NTQtMjAtMjAtMjBIMTAwYy0xMS4wNDYgMC0yMCA4Ljk1NC0yMCAyMHYxMDRjMCAxMS4wNDYgOC45NTQgMjAgMjAgMjBoMTA0YzExLjA0NiAwIDIwLTguOTU0IDIwLTIwdi0zNy4zNzRsNTIuNjg3IDUyLjY3NEMyODYuNzA0IDM5Ny4zMTggMzA0IDM5MC4yOCAzMDQgMzc1Ljk4NlYyNjQuMDExYzAtMTQuMzExLTE3LjMwOS0yMS4zMTktMjcuMzEzLTExLjMxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlV29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgMzg0IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6TTMzMi4xIDEyOEgyNTZWNTEuOWw3Ni4xIDc2LjF6TTQ4IDQ2NFY0OGgxNjB2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYyODhINDh6bTIyMC4xLTIwOGMtNS43IDAtMTAuNiA0LTExLjcgOS41LTIwLjYgOTcuNy0yMC40IDk1LjQtMjEgMTAzLjUtLjItMS4yLS40LTIuNi0uNy00LjMtLjgtNS4xLjMuMi0yMy42LTk5LjUtMS4zLTUuNC02LjEtOS4yLTExLjctOS4yaC0xMy4zYy01LjUgMC0xMC4zIDMuOC0xMS43IDkuMS0yNC40IDk5LTI0IDk2LjItMjQuOCAxMDMuNy0uMS0xLjEtLjItMi41LS41LTQuMi0uNy01LjItMTQuMS03My4zLTE5LjEtOTktMS4xLTUuNi02LTkuNy0xMS44LTkuN2gtMTYuOGMtNy44IDAtMTMuNSA3LjMtMTEuNyAxNC44IDggMzIuNiAyNi43IDEwOS41IDMzLjIgMTM2IDEuMyA1LjQgNi4xIDkuMSAxMS43IDkuMWgyNS4yYzUuNSAwIDEwLjMtMy43IDExLjYtOS4xbDE3LjktNzEuNGMxLjUtNi4yIDIuNS0xMiAzLTE3LjNsMi45IDE3LjNjLjEuNCAxMi42IDUwLjUgMTcuOSA3MS40IDEuMyA1LjMgNi4xIDkuMSAxMS42IDkuMWgyNC43YzUuNSAwIDEwLjMtMy43IDExLjYtOS4xIDIwLjgtODEuOSAzMC4yLTExOSAzNC41LTEzNiAxLjktNy42LTMuOC0xNC45LTExLjYtMTQuOWgtMTUuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OS45IDk3LjlMMjg2IDE0QzI3NyA1IDI2NC44LS4xIDI1Mi4xLS4xSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjEzMS45YzAtMTIuNy01LjEtMjUtMTQuMS0zNHpNMzMyLjEgMTI4SDI1NlY1MS45bDc2LjEgNzYuMXpNNDggNDY0VjQ4aDE2MHYxMDRjMCAxMy4zIDEwLjcgMjQgMjQgMjRoMTA0djI4OEg0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGbGFnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNi4xNzQgODBjLTQ5LjEzMiAwLTkzLjMwNS0zMi0xNjEuOTEzLTMyLTMxLjMwMSAwLTU4LjMwMyA2LjQ4Mi04MC43MjEgMTUuMTY4YTQ4LjA0IDQ4LjA0IDAgMCAwIDIuMTQyLTIwLjcyN0M5My4wNjcgMTkuNTc1IDc0LjE2NyAxLjU5NCA1MS4yMDEuMTA0IDIzLjI0Mi0xLjcxIDAgMjAuNDMxIDAgNDhjMCAxNy43NjQgOS42NTcgMzMuMjYyIDI0IDQxLjU2MlY0OTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmgxNmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2di04My40NDNDMTA5Ljg2OSAzOTUuMjggMTQzLjI1OSAzODQgMTk5LjgyNiAzODRjNDkuMTMyIDAgOTMuMzA1IDMyIDE2MS45MTMgMzIgNTguNDc5IDAgMTAxLjk3Mi0yMi42MTcgMTI4LjU0OC0zOS45ODFDNTAzLjg0NiAzNjcuMTYxIDUxMiAzNTIuMDUxIDUxMiAzMzUuODU1Vjk1LjkzN2MwLTM0LjQ1OS0zNS4yNjQtNTcuNzY4LTY2LjkwNC00NC4xMTdDNDA5LjE5MyA2Ny4zMDkgMzcxLjY0MSA4MCAzMzYuMTc0IDgwek00NjQgMzM2Yy0yMS43ODMgMTUuNDEyLTYwLjgyNCAzMi0xMDIuMjYxIDMyLTU5Ljk0NSAwLTEwMi4wMDItMzItMTYxLjkxMy0zMi00My4zNjEgMC05Ni4zNzkgOS40MDMtMTI3LjgyNiAyNFYxMjhjMjEuNzg0LTE1LjQxMiA2MC44MjQtMzIgMTAyLjI2MS0zMiA1OS45NDUgMCAxMDIuMDAyIDMyIDE2MS45MTMgMzIgNDMuMjcxIDAgOTYuMzItMTcuMzY2IDEyNy44MjYtMzJ2MjQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0ZsdXNoZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem05Ni0zMTJjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODAgODAtMzUuOCA4MC04MC0zNS44LTgwLTgwLTgwem0wIDEyOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0em0tMTEyIDI0YzAtNDQuMi0zNS44LTgwLTgwLTgwcy04MCAzNS44LTgwIDgwIDM1LjggODAgODAgODAgODAtMzUuOCA4MC04MHptLTgwIDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC03MmMtMTMuMyAwLTI0IDEwLjctMjQgMjRzMTAuNyAyNCAyNCAyNCAyNC0xMC43IDI0LTI0LTEwLjctMjQtMjQtMjR6bTE2MCAxNDRIMTg0Yy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0aDEyOGMxMy4yIDAgMjQtMTAuOCAyNC0yNHMtMTAuOC0yNC0yNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb2xkZXJPcGVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyNy45IDIyNEg0ODB2LTQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4SDI3MmwtNjQtNjRINDhDMjEuNSA2NCAwIDg1LjUgMCAxMTJ2Mjg4YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDQwMGMxNi41IDAgMzEuOS04LjUgNDAuNy0yMi42bDc5LjktMTI4YzIwLTMxLjktMy03My40LTQwLjctNzMuNHpNNDggMTE4YzAtMy4zIDIuNy02IDYtNmgxMzQuMWw2NCA2NEg0MjZjMy4zIDAgNiAyLjcgNiA2djQySDE1MmMtMTYuOCAwLTMyLjQgOC44LTQxLjEgMjMuMkw0OCAzNTEuNHptNDAwIDI4Mkg3Mmw3Ny4yLTEyOEg1Mjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRm9sZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAxMjhIMjcybC01NC42My01NC42M2MtNi02LTE0LjE0LTkuMzctMjIuNjMtOS4zN0g0OEMyMS40OSA2NCAwIDg1LjQ5IDAgMTEydjI4OGMwIDI2LjUxIDIxLjQ5IDQ4IDQ4IDQ4aDQxNmMyNi41MSAwIDQ4LTIxLjQ5IDQ4LTQ4VjE3NmMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4em0wIDI3Mkg0OFYxMTJoMTQwLjEybDU0LjYzIDU0LjYzYzYgNiAxNC4xNCA5LjM3IDIyLjYzIDkuMzdINDY0djIyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdGb250QXdlc29tZUxvZ29GdWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzOTkyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTQuNiAwSDU3LjRDMjUuOSAwIDAgMjUuOSAwIDU3LjR2Mzk3LjNDMCA0ODYuMSAyNS45IDUxMiA1Ny40IDUxMmgzOTcuM2MzMS40IDAgNTcuNC0yNS45IDU3LjQtNTcuNFY1Ny40QzUxMiAyNS45IDQ4Ni4xIDAgNDU0LjYgMHptLTU4LjkgMzI0LjljMCA0LjgtNC4xIDYuOS04LjkgOC45LTE5LjIgOC4xLTM5LjcgMTUuNy02MS41IDE1LjctNDAuNSAwLTY4LjctNDQuOC0xNjMuMiAyLjV2NTEuOGMwIDMwLjMtNDUuNyAzMC4yLTQ1LjcgMHYtMjUwYy05LTctMTUtMTcuOS0xNS0zMC4zIDAtMjEgMTcuMS0zOC4yIDM4LjItMzguMiAyMSAwIDM4LjIgMTcuMSAzOC4yIDM4LjIgMCAxMi4yLTUuOCAyMy4yLTE0LjkgMzAuMnYyMWMzNy4xLTEyIDY1LjUtMzQuNCAxNDYuMS0zLjQgMjYuNiAxMS40IDY4LjctMTUuNyA3Ni41LTE1LjcgNS41IDAgMTAuMyA0LjEgMTAuMyA4Ljl2MTYwLjR6bTQzMi45LTE3NC4yaC0xMzd2NzAuMUg4MjVjMzkuOCAwIDQwLjQgNjIuMiAwIDYyLjJINjkxLjZ2MTA1LjZjMCA0NS41LTcwLjcgNDYuNC03MC43IDBWMTI4LjNjMC0yMiAxOC0zOS44IDM5LjgtMzkuOGgxNjcuOGMzOS42IDAgNDAuNSA2Mi4yLjEgNjIuMnptMTkxLjEgMjMuNGMtMTY5LjMgMC0xNjkuMSAyNTIuNCAwIDI1Mi40IDE2OS45IDAgMTY5LjktMjUyLjQgMC0yNTIuNHptMCAxOTYuMWMtODEuNiAwLTgyLjEtMTM5LjggMC0xMzkuOCA4Mi41IDAgODIuNCAxMzkuOCAwIDEzOS44em0zNzIuNCA1My40Yy0xNy41IDAtMzEuNC0xMy45LTMxLjQtMzEuNHYtMTE3YzAtNjIuNC03Mi42LTUyLjUtOTkuMS0xNi40djEzMy40YzAgNDEuNS02My4zIDQxLjgtNjMuMyAwVjIwOGMwLTQwIDYzLjEtNDEuNiA2My4xIDB2My40YzQzLjMtNTEuNiAxNjIuNC02MC40IDE2Mi40IDM5LjN2MTQxLjVjLjMgMzAuNC0zMS41IDMxLjQtMzEuNyAzMS40em0xNzkuNyAyLjljLTQ0LjMgMC02OC4zLTIyLjktNjguMy02NS44VjIzNS4ySDE0ODhjLTM1LjYgMC0zNi43LTU1LjMgMC01NS4zaDE1LjV2LTM3LjNjMC00MS4zIDYzLjgtNDIuMSA2My44IDB2MzcuNWgyNC45YzM1LjQgMCAzNS43IDU1LjMgMCA1NS4zaC0yNC45djEwOC41YzAgMjkuNiAyNi4xIDI2LjMgMjcuNCAyNi4zIDMxLjQgMCA1Mi42IDU2LjMtMjIuOSA1Ni4zek0xOTkyIDEyM2MtMTkuNS01MC4yLTk1LjUtNTAtMTE0LjUgMC0xMDcuMyAyNzUuNy05OS41IDI1Mi43LTk5LjUgMjYyLjggMCA0Mi44IDU4LjMgNTEuMiA3Mi4xIDE0LjRsMTMuNS0zNS45SDIwMDZsMTMgMzUuOWMxNC4yIDM3LjcgNzIuMSAyNy4yIDcyLjEtMTQuNCAwLTEwLjEgNS4zIDYuOC05OS4xLTI2Mi44em0tMTA4LjkgMTc5LjFsNTEuNy0xNDIuOSA1MS44IDE0Mi45aC0xMDMuNXptNTkxLjMtODUuNmwtNTMuNyAxNzYuM2MtMTIuNCA0MS4yLTcyIDQxLTg0IDBsLTQyLjMtMTM1LjktNDIuMyAxMzUuOWMtMTIuNCA0MC45LTcyIDQxLjItODQuNSAwbC01NC4yLTE3Ni4zYy0xMi41LTM5LjQgNDkuOC01Ni4xIDYwLjItMTYuOUwyMjEzIDM0Mmw0NS4zLTEzOS41YzEwLjktMzIuNyA1OS42LTM0LjcgNzEuMiAwbDQ1LjMgMTM5LjUgMzkuMy0xNDIuNGMxMC4zLTM4LjMgNzIuNi0yMy44IDYwLjMgMTYuOXptMjc1LjQgNzUuMWMwLTQyLjQtMzMuOS0xMTcuNS0xMTkuNS0xMTcuNS03My4yIDAtMTI0LjQgNTYuMy0xMjQuNCAxMjYgMCA3Ny4yIDU1LjMgMTI2LjQgMTI4LjUgMTI2LjQgMzEuNyAwIDkzLTExLjUgOTMtMzkuOCAwLTE4LjMtMjEuMS0zMS41LTM5LjMtMjIuNC00OS40IDI2LjItMTA5IDguNC0xMTUuOS00My44aDE0OC4zYzE2LjMgMCAyOS4zLTEzLjQgMjkuMy0yOC45ek0yNTcxIDI3Ny43YzkuNS03My40IDExMy45LTY4LjYgMTE4LjYgMEgyNTcxem0zMTYuNyAxNDguOGMtMzEuNCAwLTgxLjYtMTAuNS05Ni42LTMxLjktMTIuNC0xNyAyLjUtMzkuOCAyMS44LTM5LjggMTYuMyAwIDM2LjggMjIuOSA3Ny43IDIyLjkgMjcuNCAwIDQwLjQtMTEgNDAuNC0yNS44IDAtMzkuOC0xNDIuOS03LjQtMTQyLjktMTAyIDAtNDAuNCAzNS4zLTc1LjcgOTguNi03NS43IDMxLjQgMCA3NC4xIDkuOSA4Ny42IDI5LjQgMTAuOCAxNC44LTEuNCAzNi4yLTIwLjkgMzYuMi0xNS4xIDAtMjYuNy0xNy4zLTY2LjItMTcuMy0yMi45IDAtMzcuOCAxMC41LTM3LjggMjMuOCAwIDM1LjkgMTQyLjQgNiAxNDIuNCAxMDMuMS0uMSA0My43LTM3LjQgNzcuMS0xMDQuMSA3Ny4xem0yNjYuOC0yNTIuNGMtMTY5LjMgMC0xNjkuMSAyNTIuNCAwIDI1Mi40IDE3MC4xIDAgMTY5LjYtMjUyLjQgMC0yNTIuNHptMCAxOTYuMWMtODEuOCAwLTgyLTEzOS44IDAtMTM5LjggODIuNSAwIDgyLjQgMTM5LjggMCAxMzkuOHptNDc2LjkgMjJWMjY4LjdjMC01My44LTYxLjQtNDUuOC04NS43LTEwLjV2MTM0YzAgNDEuMy02My44IDQyLjEtNjMuOCAwVjI2OC43YzAtNTIuMS01OS41LTQ3LjQtODUuNy0xMC4xdjEzMy42YzAgNDEuNS02My4zIDQxLjgtNjMuMyAwVjIwOGMwLTQwIDYzLjEtNDEuNiA2My4xIDB2My40YzkuOS0xNC40IDQxLjgtMzcuMyA3OC42LTM3LjMgMzUuMyAwIDU3LjcgMTYuNCA2Ni43IDQzLjggMTMuOS0yMS44IDQ1LjgtNDMuOCA4Mi42LTQzLjggNDQuMyAwIDcwLjcgMjMuNCA3MC43IDcyLjd2MTQ1LjNjLjUgMTcuMy0xMy41IDMxLjQtMzEuOSAzMS40IDMuNS4xLTMxLjMgMS4xLTMxLjMtMzEuM3pNMzk5MiAyOTEuNmMwLTQyLjQtMzIuNC0xMTcuNS0xMTcuOS0xMTcuNS03My4yIDAtMTI3LjUgNTYuMy0xMjcuNSAxMjYgMCA3Ny4yIDU4LjMgMTI2LjQgMTMxLjYgMTI2LjQgMzEuNyAwIDkxLjUtMTEuNSA5MS41LTM5LjggMC0xOC4zLTIxLjEtMzEuNS0zOS4zLTIyLjQtNDkuNCAyNi4yLTExMC41IDguNC0xMTcuNS00My44aDE0OS44YzE2LjMgMCAyOS4xLTEzLjQgMjkuMy0yOC45em0tMTgwLjUtMTMuOWM5LjctNzQuNCAxMTUuOS02OC4zIDEyMC4xIDBoLTEyMC4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Zyb3duT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS00OC0yNDhjMC0xNy43LTE0LjMtMzItMzItMzJzLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyem0xMjgtMzJjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0tODAgMTEyYy0zNS42IDAtODguOCAyMS4zLTk1LjggNjEuMi0yIDExLjggOSAyMS41IDIwLjUgMTguMSAzMS4yLTkuNiA1OS40LTE1LjMgNzUuMy0xNS4zczQ0LjEgNS43IDc1LjMgMTUuM2MxMS40IDMuNSAyMi41LTYuMyAyMC41LTE4LjEtNy0zOS45LTYwLjItNjEuMi05NS44LTYxLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwLTY0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnptLTgwIDEyOGMtNDAuMiAwLTc4IDE3LjctMTAzLjggNDguNi04LjUgMTAuMi03LjEgMjUuMyAzLjEgMzMuOCAxMC4yIDguNCAyNS4zIDcuMSAzMy44LTMuMSAxNi42LTE5LjkgNDEtMzEuNCA2Ni45LTMxLjRzNTAuMyAxMS40IDY2LjkgMzEuNGM4LjEgOS43IDIzLjEgMTEuOSAzMy44IDMuMSAxMC4yLTguNSAxMS41LTIzLjYgMy4xLTMzLjhDMzI2IDMyMS43IDI4OC4yIDMwNCAyNDggMzA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0Z1dGJvbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00ODMuOCAxNzkuNEM0NDkuOCA3NC42IDM1Mi42IDggMjQ4LjEgOGMtMjUuNCAwLTUxLjIgMy45LTc2LjcgMTIuMkM0MS4yIDYyLjUtMzAuMSAyMDIuNCAxMi4yIDMzMi42IDQ2LjIgNDM3LjQgMTQzLjQgNTA0IDI0Ny45IDUwNGMyNS40IDAgNTEuMi0zLjkgNzYuNy0xMi4yIDEzMC4yLTQyLjMgMjAxLjUtMTgyLjIgMTU5LjItMzEyLjR6bS03NC41IDE5My43bC01Mi4yIDYuNC00My43LTYwLjkgMjQuNC03NS4yIDcxLjEtMjIuMSAzOC45IDM2LjRjLS4yIDMwLjctNy40IDYxLjEtMjEuNyA4OS4yLTQuNyA5LjMtMTAuNyAxNy44LTE2LjggMjYuMnptMC0yMzUuNGwtMTAuNCA1My4xLTcwLjcgMjItNjQuMi00Ni41VjkyLjVsNDcuNC0yNi4yYzM5LjIgMTMgNzMuNCAzOCA5Ny45IDcxLjR6TTE4NC45IDY2LjRMMjMyIDkyLjV2NzMuOGwtNjQuMiA0Ni41LTcwLjYtMjItMTAuMS01Mi41YzI0LjMtMzMuNCA1Ny45LTU4LjYgOTcuOC03MS45ek0xMzkgMzc5LjVMODUuOSAzNzNjLTE0LjQtMjAuMS0zNy4zLTU5LjYtMzcuOC0xMTUuM2wzOS0zNi40IDcxLjEgMjIuMiAyNC4zIDc0LjMtNDMuNSA2MS43em00OC4yIDY3bC0yMi40LTQ4LjEgNDMuNi02MS43SDI4N2w0NC4zIDYxLjctMjIuNCA0OC4xYy02LjIgMS44LTU3LjYgMjAuNC0xMjEuNyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dlbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjQgMEgxMTJjLTQgMC03LjggMi0xMCA1LjRMMiAxNTIuNmMtMi45IDQuNC0yLjYgMTAuMi43IDE0LjJsMjc2IDM0MC44YzQuOCA1LjkgMTMuOCA1LjkgMTguNiAwbDI3Ni0zNDAuOGMzLjMtNC4xIDMuNi05LjguNy0xNC4yTDQ3NC4xIDUuNEM0NzEuOCAyIDQ2OC4xIDAgNDY0IDB6bS0xOS4zIDQ4bDYzLjMgOTZoLTY4LjRsLTUxLjctOTZoNTYuOHptLTIwMi4xIDBoOTAuN2w1MS43IDk2SDE5MWw1MS42LTk2em0tMTExLjMgMGg1Ni44bC01MS43IDk2SDY4bDYzLjMtOTZ6bS00MyAxNDRoNTEuNEwyMDggMzUyIDg4LjMgMTkyem0xMDIuOSAwaDE5My42TDI4OCA0MzUuMyAxOTEuMiAxOTJ6TTM2OCAzNTJsNjguMi0xNjBoNTEuNEwzNjggMzUyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW1hY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem0tODAtMjE2YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNiAxNkgxNTJjLTI2LjUgMC00OCAyMS41LTQ4IDQ4djMyYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDE5MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMzJjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS0xNjggOTZoLTI0Yy04LjggMC0xNi03LjItMTYtMTZ2LThoNDB2MjR6bTAtNDBoLTQwdi04YzAtOC44IDcuMi0xNiAxNi0xNmgyNHYyNHptNjQgNDBoLTQ4di0yNGg0OHYyNHptMC00MGgtNDh2LTI0aDQ4djI0em02NCA0MGgtNDh2LTI0aDQ4djI0em0wLTQwaC00OHYtMjRoNDh2MjR6bTU2IDI0YzAgOC44LTcuMiAxNi0xNiAxNmgtMjR2LTI0aDQwdjh6bTAtMjRoLTQwdi0yNGgyNGM4LjggMCAxNiA3LjIgMTYgMTZ2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIwMC4zIDI0OGMxMi40LTE4LjcgMTUuMS0zNy4zIDE1LjctNTYtLjUtMTguNy0zLjMtMzcuMy0xNS43LTU2LTgtMTItMjUuMS0xMS40LTMyLjcgMC0xMi40IDE4LjctMTUuMSAzNy4zLTE1LjcgNTYgLjUgMTguNyAzLjMgMzcuMyAxNS43IDU2IDguMSAxMiAyNS4yIDExLjQgMzIuNyAwem0xMjggMGMxMi40LTE4LjcgMTUuMS0zNy4zIDE1LjctNTYtLjUtMTguNy0zLjMtMzcuMy0xNS43LTU2LTgtMTItMjUuMS0xMS40LTMyLjcgMC0xMi40IDE4LjctMTUuMSAzNy4zLTE1LjcgNTYgLjUgMTguNyAzLjMgMzcuMyAxNS43IDU2IDguMSAxMiAyNS4yIDExLjQgMzIuNyAwek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5CZWFtU3dlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwIDE2MGMyOS41IDAgNTMuMy0yNi4zIDUzLjMtNTguNyAwLTI1LTMxLjctNzUuNS00Ni4yLTk3LjMtMy42LTUuMy0xMC43LTUuMy0xNC4yIDAtMTQuNSAyMS44LTQ2LjIgNzIuMy00Ni4yIDk3LjMgMCAzMi40IDIzLjggNTguNyA1My4zIDU4Ljd6TTI0OCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3ptMTA1LjMtNTIuOWMtMjQuNiAxNS43LTQ2IDEyLjktNDYuNCAxMi45IDYuOSAyMC4yIDEwLjggNDEuOCAxMC44IDY0LjMgMCAxMTAuMy04OS43IDIwMC0yMDAgMjAwUzQ4IDM2Ni4zIDQ4IDI1NiAxMzcuNyA1NiAyNDggNTZjMzkuOCAwIDc2LjggMTEuOCAxMDggMzEuOSAxLjctOS41IDYuMy0yNC4xIDE3LjItNDUuN0MzMzYuNCAyMC42IDI5My43IDggMjQ4IDggMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OGMwLTI3LTQuNC01Mi45LTEyLjQtNzcuMnpNMTY4IDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluQmVhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjM1LjktNzIuOWMzLjUgMS4xIDcuNC0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA2LTQuNSA1LjctOC4zLTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjMgMy43IDIuMSA3LjIgNS43IDguM3ptMTYwIDBjMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbkhlYXJ0cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTMuNiAzMDQuNmMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDcuOSA0Ny4yIDcxLjMgODAgMTIzLjMgODBzMTE1LjMtMzIuOSAxMjMuMy04MGMxLjYtOS44LTcuNy0xOC40LTE3LjctMTUuM3ptLTE1Mi44LTQ4LjljNC41IDEuMiA5LjItMS41IDEwLjUtNmwxOS40LTY5LjljNS42LTIwLjMtNy40LTQxLjEtMjguOC00NC41LTE4LjYtMy0zNi40IDkuOC00MS41IDI3LjlsLTIgNy4xLTcuMS0xLjljLTE4LjItNC43LTM4LjIgNC4zLTQ0LjkgMjItNy43IDIwLjIgMy44IDQxLjkgMjQuMiA0Ny4ybDcwLjIgMTguMXptMTg4LjgtNjUuM2MtNi43LTE3LjYtMjYuNy0yNi43LTQ0LjktMjJsLTcuMSAxLjktMi03LjFjLTUtMTguMS0yMi44LTMwLjktNDEuNS0yNy45LTIxLjQgMy40LTM0LjQgMjQuMi0yOC44IDQ0LjVsMTkuNCA2OS45YzEuMiA0LjUgNS45IDcuMiAxMC41IDZsNzAuMi0xOC4yYzIwLjQtNS4zIDMxLjktMjYuOSAyNC4yLTQ3LjF6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluU3F1aW50VGVhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTE3LjEgMzg0LjFjLTI1LjggMy43LTg0IDEzLjctMTAwLjkgMzAuNi0yMS45IDIxLjktMjEuNSA1Ny45LjkgODAuM3M1OC4zIDIyLjggODAuMy45QzExNC4zIDQ3OSAxMjQuMyA0MjAuOCAxMjggMzk1Yy44LTYuNC00LjYtMTEuOC0xMC45LTEwLjl6bS00MS4yLTQxLjdDNDAuMyAyNjggNTMgMTc2LjEgMTE0LjYgMTE0LjYgMTUyLjQgNzYuOCAyMDIuNiA1NiAyNTYgNTZjMzYuMiAwIDcwLjggOS44IDEwMS4yIDI3LjcgMy44LTIwLjMgOC0zNi4xIDEyLTQ4LjNDMzMzLjggMTcuMiAyOTQuOSA4IDI1NiA4IDE5Mi41IDggMTI5LjEgMzIuMiA4MC42IDgwLjZjLTc0LjEgNzQuMS05MS4zIDE4My40LTUyIDI3NCAxMi4yLTQuMSAyNy43LTguMyA0Ny4zLTEyLjJ6bTM1Mi4zLTE4Ny42YzQ1IDc2LjYgMzQuOSAxNzYuOS0zMC44IDI0Mi42LTM3LjggMzcuOC04OCA1OC42LTE0MS40IDU4LjYtMzAuNSAwLTU5LjgtNy04Ni40LTE5LjgtMy45IDE5LjUtOCAzNS0xMi4yIDQ3LjIgMzEuNCAxMy42IDY1IDIwLjYgOTguNyAyMC42IDYzLjUgMCAxMjYuOS0yNC4yIDE3NS40LTcyLjYgNzguMS03OC4xIDkzLjEtMTk1LjQgNDUuMi0yODguNi0xMi4zIDQtMjguMiA4LjEtNDguNSAxMnptLTMzLjMtMjYuOWMyNS44LTMuNyA4NC0xMy43IDEwMC45LTMwLjYgMjEuOS0yMS45IDIxLjUtNTcuOS0uOS04MC4zcy01OC4zLTIyLjgtODAuMy0uOUMzOTcuNyAzMyAzODcuNyA5MS4yIDM4NCAxMTdjLS44IDYuNCA0LjYgMTEuOCAxMC45IDEwLjl6bS0xODcgMTA4LjNjLTMtMy03LjItNC4yLTExLjQtMy4yTDEwNiAyNTUuN2MtNS43IDEuNC05LjUgNi43LTkuMSAxMi42LjUgNS44IDUuMSAxMC41IDEwLjkgMTFsNTIuMyA0LjggNC44IDUyLjNjLjUgNS44IDUuMiAxMC40IDExIDEwLjloLjljNS41IDAgMTAuMy0zLjcgMTEuNy05LjFsMjIuNi05MC41YzEtNC4yLS4yLTguNS0zLjItMTEuNXptMzkuNy0yNS4xbDkwLjUtMjIuNmM1LjctMS40IDkuNS02LjcgOS4xLTEyLjYtLjUtNS44LTUuMS0xMC41LTEwLjktMTFsLTUyLjMtNC44LTQuOC01Mi4zYy0uNS01LjgtNS4yLTEwLjQtMTEtMTAuOS01LjYtLjEtMTEuMiAzLjQtMTIuNiA5LjFMMjMzIDE5Ni41Yy0xIDQuMS4yIDguNCAzLjIgMTEuNCA1IDUgMTEuMyAzLjIgMTEuNCAzLjJ6bTUyIDg4LjVjLTI5LjEgMjkuMS01OS43IDUyLjktODMuOSA2NS40LTkuMiA0LjgtMTAgMTcuNS0xLjcgMjMuNCAzOC45IDI3LjcgMTA3IDYuMiAxNDMuNy0zMC42UzQxNiAyNTMgMzg4LjMgMjE0LjFjLTUuOC04LjItMTguNS03LjYtMjMuNCAxLjctMTIuMyAyNC4yLTM2LjIgNTQuNy02NS4zIDgzLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpblNxdWludCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuNC0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjM0LjctNDAuOGMzLjYgNC4yIDkuOSA1LjcgMTUuMyAyLjVsODAtNDhjMy42LTIuMiA1LjgtNi4xIDUuOC0xMC4zcy0yLjItOC4xLTUuOC0xMC4zbC04MC00OGMtNS4xLTMtMTEuNC0xLjktMTUuMyAyLjUtMy44IDQuNS0zLjggMTEtLjEgMTUuNWwzMy42IDQwLjMtMzMuNiA0MC4zYy0zLjggNC41LTMuNyAxMS4xLjEgMTUuNXptMjQyLjkgMi41YzUuNCAzLjIgMTEuNyAxLjcgMTUuMy0yLjUgMy44LTQuNSAzLjgtMTEgLjEtMTUuNUwzNDMuNiAyMDhsMzMuNi00MC4zYzMuOC00LjUgMy43LTExLS4xLTE1LjUtMy44LTQuNC0xMC4yLTUuNC0xNS4zLTIuNWwtODAgNDhjLTMuNiAyLjItNS44IDYuMS01LjggMTAuM3MyLjIgOC4xIDUuOCAxMC4zbDgwIDQ4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5TdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS44LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgNy45IDQ3LjIgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zem0tMjI3LjktNTcuNWMtMSA2LjIgNS40IDExIDExIDcuOWwzMS4zLTE2LjMgMzEuMyAxNi4zYzUuNiAzLjEgMTItMS43IDExLTcuOWwtNi0zNC45IDI1LjQtMjQuNmM0LjUtNC41IDEuOS0xMi4yLTQuMy0xMy4ybC0zNC45LTUtMTUuNS0zMS42Yy0yLjktNS44LTExLTUuOC0xMy45IDBsLTE1LjUgMzEuNi0zNC45IDVjLTYuMi45LTguOSA4LjYtNC4zIDEzLjJsMjUuNCAyNC42LTYuMSAzNC45em0yNTkuNy03Mi43bC0zNC45LTUtMTUuNS0zMS42Yy0yLjktNS44LTExLTUuOC0xMy45IDBsLTE1LjUgMzEuNi0zNC45IDVjLTYuMi45LTguOSA4LjYtNC4zIDEzLjJsMjUuNCAyNC42LTYgMzQuOWMtMSA2LjIgNS40IDExIDExIDcuOWwzMS4zLTE2LjMgMzEuMyAxNi4zYzUuNiAzLjEgMTItMS43IDExLTcuOWwtNi0zNC45IDI1LjQtMjQuNmM0LjUtNC42IDEuOC0xMi4yLTQuNC0xMy4yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5UZWFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNjQwIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMTcuMSAyNTYuMWMtMjUuOCAzLjctODQgMTMuNy0xMDAuOSAzMC42LTIxLjkgMjEuOS0yMS41IDU3LjkuOSA4MC4zczU4LjMgMjIuOCA4MC4zLjlDMTE0LjMgMzUxIDEyNC4zIDI5Mi44IDEyOCAyNjdjLjgtNi40LTQuNi0xMS44LTEwLjktMTAuOXptNTA2LjcgMzAuNmMtMTYuOS0xNi45LTc1LjEtMjYuOS0xMDAuOS0zMC42LTYuMy0uOS0xMS43IDQuNS0xMC44IDEwLjggMy43IDI1LjggMTMuNyA4NCAzMC42IDEwMC45IDIxLjkgMjEuOSA1Ny45IDIxLjUgODAuMy0uOSAyMi4zLTIyLjMgMjIuNy01OC4zLjgtODAuMnptLTEyNi42IDYxLjdDNDYzLjggNDEyLjMgMzk2LjkgNDU2IDMyMCA0NTZjLTc2LjkgMC0xNDMuOC00My43LTE3Ny4yLTEwNy42LTEyLjUgMzcuNC0yNS4yIDQzLjktMjguMyA0Ni41QzE1OS4xIDQ2MC43IDIzNC41IDUwNCAzMjAgNTA0czE2MC45LTQzLjMgMjA1LjUtMTA5LjFjLTMuMi0yLjctMTUuOS05LjItMjguMy00Ni41ek0xMjIuNyAyMjQuNUMxMzcuOSAxMjkuMiAyMjAuNSA1NiAzMjAgNTZjOTkuNSAwIDE4Mi4xIDczLjIgMTk3LjMgMTY4LjUgMi4xLS4yIDUuMi0yLjQgNDkuNSA3QzU1NC40IDEwNiA0NDguNyA4IDMyMCA4Uzg1LjYgMTA2IDczLjIgMjMxLjRjNDQuNS05LjQgNDcuMS03LjIgNDkuNS02Ljl6TTMyMCA0MDBjNTEuOSAwIDExNS4zLTMyLjkgMTIzLjMtODAgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOC0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDggNDcuMSA3MS40IDgwIDEyMy4zIDgwem0xMzAuMy0xNjguM2MzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjRzLTUyLjcgMjkuMy01NiA3MS40Yy0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy42IDYuMiA0LjYgOS4zIDMuN3pNMjQwIDE4OS40YzEyLjMgMCAyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy41IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTdjNy43LTEzLjggMTkuMi0yMS42IDMxLjUtMjEuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluVG9uZ3VlU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTY0IDQwMGMwIDM1LjYtMjkuMSA2NC41LTY0LjkgNjQtMzUuMS0uNS02My4xLTI5LjgtNjMuMS02NXYtNDIuOGwxNy43LTguOGMxNS03LjUgMzEuNSAxLjcgMzQuOSAxNi41bDIuOCAxMi4xYzIuMSA5LjIgMTUuMiA5LjIgMTcuMyAwbDIuOC0xMi4xYzMuNC0xNC44IDE5LjgtMjQuMSAzNC45LTE2LjVsMTcuNyA4LjhWNDA4em0yOC4yIDI1LjNjMi4yLTguMSAzLjgtMTYuNSAzLjgtMjUuM3YtNDMuNWMxNC4yLTEyLjQgMjQuNC0yNy41IDI3LjMtNDQuNSAxLjctOS45LTcuNy0xOC41LTE3LjctMTUuMy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuMy0xNy43IDE1LjMgMi45IDE3IDEzLjEgMzIuMSAyNy4zIDQ0LjVWNDA4YzAgOC44IDEuNiAxNy4yIDMuOCAyNS4zQzkxLjggMzk5LjkgNDggMzMzIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDc3LTQzLjggMTQzLjktMTA3LjggMTc3LjN6bTM2LjktMjgxLjFjLTMuOC00LjQtMTAuMy01LjUtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjcgMS43IDE1LjMtMi41IDMuOC00LjUgMy44LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6bS0xNjIuOSA0NS41bC04MC00OGMtNS0zLTExLjQtMi0xNS4zIDIuNS0zLjggNC41LTMuOCAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy42IDQuMiA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3MtMi4yLTguMS01LjgtMTAuM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluVG9uZ3VlV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNTIgMTgwYy0yNS43IDAtNTUuOSAxNi45LTU5LjggNDIuMS0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4yIDggNC43IDEzLjcgMS42IDQuNC0yLjQgNi45LTcuNCA2LjEtMTIuNC0zLjktMjUuMi0zNC4xLTQyLjEtNTkuOC00Mi4xem0xNzYtNTJjLTQ0LjIgMC04MCAzNS44LTgwIDgwczM1LjggODAgODAgODAgODAtMzUuOCA4MC04MC0zNS44LTgwLTgwLTgwem0wIDEyOGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhzMjEuNS00OCA0OC00OCA0OCAyMS41IDQ4IDQ4LTIxLjUgNDgtNDggNDh6bTAtNzJjLTEzLjMgMC0yNCAxMC43LTI0IDI0czEwLjcgMjQgMjQgMjQgMjQtMTAuNyAyNC0yNC0xMC43LTI0LTI0LTI0ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em02NCA0MDBjMCAzNS42LTI5LjEgNjQuNS02NC45IDY0LTM1LjEtLjUtNjMuMS0yOS44LTYzLjEtNjV2LTQyLjhsMTcuNy04LjhjMTUtNy41IDMxLjUgMS43IDM0LjkgMTYuNWwyLjggMTIuMWMyLjEgOS4yIDE1LjIgOS4yIDE3LjMgMGwyLjgtMTIuMWMzLjQtMTQuOCAxOS44LTI0LjEgMzQuOS0xNi41bDE3LjcgOC44VjQwOHptMjguMiAyNS4zYzIuMi04LjEgMy44LTE2LjUgMy44LTI1LjN2LTQzLjVjMTQuMi0xMi40IDI0LjQtMjcuNSAyNy4zLTQ0LjUgMS43LTkuOS03LjctMTguNS0xNy43LTE1LjMtMjUuOSA4LjMtNjQuNCAxMy4xLTEwNS42IDEzLjFzLTc5LjYtNC44LTEwNS42LTEzLjFjLTkuOS0zLjEtMTkuNCA1LjMtMTcuNyAxNS4zIDIuOSAxNyAxMy4xIDMyLjEgMjcuMyA0NC41VjQwOGMwIDguOCAxLjYgMTcuMiAzLjggMjUuM0M5MS44IDM5OS45IDQ4IDMzMyA0OCAyNTZjMC0xMTAuMyA4OS43LTIwMCAyMDAtMjAwczIwMCA4OS43IDIwMCAyMDBjMCA3Ny00My44IDE0My45LTEwNy44IDE3Ny4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0dyaW5Ub25ndWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptNjQgNDAwYzAgMzUuNi0yOS4xIDY0LjUtNjQuOSA2NC0zNS4xLS41LTYzLjEtMjkuOC02My4xLTY1di00Mi44bDE3LjctOC44YzE1LTcuNSAzMS41IDEuNyAzNC45IDE2LjVsMi44IDEyLjFjMi4xIDkuMiAxNS4yIDkuMiAxNy4zIDBsMi44LTEyLjFjMy40LTE0LjggMTkuOC0yNC4xIDM0LjktMTYuNWwxNy43IDguOFY0MDh6bTI4LjIgMjUuM2MyLjItOC4xIDMuOC0xNi41IDMuOC0yNS4zdi00My41YzE0LjItMTIuNCAyNC40LTI3LjUgMjcuMy00NC41IDEuNy05LjktNy43LTE4LjUtMTcuNy0xNS4zLTI1LjkgOC4zLTY0LjQgMTMuMS0xMDUuNiAxMy4xcy03OS42LTQuOC0xMDUuNi0xMy4xYy05LjktMy4xLTE5LjQgNS4zLTE3LjcgMTUuMyAyLjkgMTcgMTMuMSAzMi4xIDI3LjMgNDQuNVY0MDhjMCA4LjggMS42IDE3LjIgMy44IDI1LjNDOTEuOCAzOTkuOSA0OCAzMzMgNDggMjU2YzAtMTEwLjMgODkuNy0yMDAgMjAwLTIwMHMyMDAgODkuNyAyMDAgMjAwYzAgNzctNDMuOCAxNDMuOS0xMDcuOCAxNzcuM3pNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTE2MCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdHcmluV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMjggMTgwYy0yNS42OSAwLTU1Ljg4IDE2LjkyLTU5Ljg2IDQyLjEyLTEuNzUgMTEuMjIgMTEuNSAxOC4yNCAxOS44MyAxMC44NGw5LjU1LTguNDhjMTQuODEtMTMuMTkgNDYuMTYtMTMuMTkgNjAuOTcgMGw5LjU1IDguNDhjOC40OCA3LjQzIDIxLjU2LjI1IDE5LjgzLTEwLjg0QzM4My44OCAxOTYuOTIgMzUzLjY5IDE4MCAzMjggMTgwem0tMTYwIDYwYzE3LjY3IDAgMzItMTQuMzMgMzItMzJzLTE0LjMzLTMyLTMyLTMyLTMyIDE0LjMzLTMyIDMyIDE0LjMzIDMyIDMyIDMyem0xODUuNTUgNjQuNjRjLTI1LjkzIDguMy02NC40IDEzLjA2LTEwNS41NSAxMy4wNnMtNzkuNjItNC43NS0xMDUuNTUtMTMuMDZjLTkuOTQtMy4xMy0xOS40IDUuMzctMTcuNzEgMTUuMzRDMTMyLjY3IDM2Ny4xMyAxOTYuMDYgNDAwIDI0OCA0MDBzMTE1LjMzLTMyLjg3IDEyMy4yNi04MC4wMmMxLjY4LTkuODktNy42Ny0xOC40OC0xNy43MS0xNS4zNHpNMjQ4IDhDMTExLjAzIDggMCAxMTkuMDMgMCAyNTZzMTExLjAzIDI0OCAyNDggMjQ4IDI0OC0xMTEuMDMgMjQ4LTI0OFMzODQuOTcgOCAyNDggOHptMCA0NDhjLTExMC4yOCAwLTIwMC04OS43Mi0yMDAtMjAwUzEzNy43MiA1NiAyNDggNTZzMjAwIDg5LjcyIDIwMCAyMDAtODkuNzIgMjAwLTIwMCAyMDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnR3JpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTEwNS42LTE1MS40Yy0yNS45IDguMy02NC40IDEzLjEtMTA1LjYgMTMuMXMtNzkuNi00LjgtMTA1LjYtMTMuMWMtOS45LTMuMS0xOS40IDUuNC0xNy43IDE1LjMgNy45IDQ3LjEgNzEuMyA4MCAxMjMuMyA4MHMxMTUuMy0zMi45IDEyMy4zLTgwYzEuNi05LjgtNy43LTE4LjQtMTcuNy0xNS4zek0xNjggMjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwIDBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRMaXphcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTU2LjY4NiAyOTAuNTQyTDQxMC4zMjggNjQuODI5QzM5Ny4wMDEgNDQuMjcyIDM3NC40MTcgMzIgMzQ5LjkxNyAzMkg1NkMyNS4xMjEgMzIgMCA1Ny4xMjIgMCA4OHY4YzAgNDQuMTEyIDM1Ljg4OCA4MCA4MCA4MGgxOTYuMDQybC0xOC4zMzMgNDhIMTQ0Yy00OC41MjMgMC04OCAzOS40NzctODggODggMCAzMC44NzkgMjUuMTIxIDU2IDU2IDU2aDEzMS41NTJjMi45ODcgMCA1LjkxNC41NDkgOC42OTcgMS42MzFMMzUyIDQwOC40MThWNDgwaDIyNFYzNTUuODI5YzAtMjMuMjI1LTYuNjc5LTQ1LjgwMS0xOS4zMTQtNjUuMjg3ek01MjggNDMySDQwMHYtMjMuNTgyYzAtMTkuOTQ4LTEyLjAxNC0zNy41MDgtMzAuNjA0LTQ0LjczNmwtOTkuNzUxLTM4Ljc4OEE3MS43MzMgNzEuNzMzIDAgMCAwIDI0My41NTIgMzIwSDExMmMtNC40MTEgMC04LTMuNTg5LTgtOCAwLTIyLjA1NiAxNy45NDQtNDAgNDAtNDBoMTEzLjcwOWMxOS43NjcgMCAzNy43ODYtMTIuNDA3IDQ0Ljg0LTMwLjg3M2wyNC41NTItNjQuMjgxYzguOTk2LTIzLjU1My04LjQyOC00OC44NDYtMzMuNjMtNDguODQ2SDgwYy0xNy42NDUgMC0zMi0xNC4zNTUtMzItMzJ2LThjMC00LjQxMSAzLjU4OS04IDgtOGgyOTMuOTE3YzguMTY2IDAgMTUuNjkzIDQuMDkgMjAuMTM3IDEwLjk0MmwxNDYuMzU4IDIyNS43MTVBNzEuODQgNzEuODQgMCAwIDEgNTI4IDM1NS44MjlWNDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQYXBlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNzIuNTcgMTEyLjY0MXYtMTAuODI1YzAtNDMuNjEyLTQwLjUyLTc2LjY5MS04My4wMzktNjUuNTQ2LTI1LjYyOS00OS41LTk0LjA5LTQ3LjQ1LTExNy45ODIuNzQ3QzEzMC4yNjkgMjYuNDU2IDg5LjE0NCA1Ny45NDUgODkuMTQ0IDEwMnYxMjYuMTNjLTE5Ljk1My03LjQyNy00My4zMDgtNS4wNjgtNjIuMDgzIDguODcxLTI5LjM1NSAyMS43OTYtMzUuNzk0IDYzLjMzMy0xNC41NSA5My4xNTNMMTMyLjQ4IDQ5OC41NjlhMzIgMzIgMCAwIDAgMjYuMDYyIDEzLjQzMmgyMjIuODk3YzE0LjkwNCAwIDI3LjgzNS0xMC4yODkgMzEuMTgyLTI0LjgxM2wzMC4xODQtMTMwLjk1OEEyMDMuNjM3IDIwMy42MzcgMCAwIDAgNDQ4IDMxMC41NjRWMTc5YzAtNDAuNjItMzUuNTIzLTcxLjk5Mi03NS40My02Ni4zNTl6bTI3LjQyNyAxOTcuOTIyYzAgMTEuNzMxLTEuMzM0IDIzLjQ2OS0zLjk2NSAzNC44ODZMMzY4LjcwNyA0NjRoLTIwMS45Mkw1MS41OTEgMzAyLjMwM2MtMTQuNDM5LTIwLjI3IDE1LjAyMy00Mi43NzYgMjkuMzk0LTIyLjYwNWwyNy4xMjggMzguMDc5YzguOTk1IDEyLjYyNiAyOS4wMzEgNi4yODcgMjkuMDMxLTkuMjgzVjEwMmMwLTI1LjY0NSAzNi41NzEtMjQuODEgMzYuNTcxLjY5MVYyNTZjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2VjY3YzAtMjUuNjYzIDM2LjU3MS0yNC44MSAzNi41NzEuNjkxVjI1NmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZWMTAxLjEyNWMwLTI1LjY3MiAzNi41Ny0yNC44MSAzNi41Ny42OTFWMjU2YzAgOC44MzcgNy4xNjMgMTYgMTYgMTZoNi44NTdjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtNzYuMzA5YzAtMjYuMjQyIDM2LjU3LTI1LjY0IDM2LjU3LS42OTF2MTMxLjU2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzYyLjE0NiAxOTEuOTc2Yy0xMy43MS0yMS42NDktMzguNzYxLTM0LjAxNi02NS4wMDYtMzAuMzQxVjc0YzAtNDAuODA0LTMyLjgxMS03NC03My4xNDEtNzQtNDAuMzMgMC03My4xNCAzMy4xOTYtNzMuMTQgNzRMMTYwIDE2OGwtMTguNjc5LTc4Ljg1QzEyNi41NzggNTAuODQzIDgzLjg1IDMyLjExIDQ2LjIwOSA0Ny4yMDggOC43MzUgNjIuMjM4LTkuNTcxIDEwNC45NjMgNS4wMDggMTQyLjg1bDU1Ljc1NyAxNDQuOTI3Yy0zMC41NTcgMjQuOTU2LTQzLjk5NCA1Ny44MDktMjQuNzMzIDkyLjIxOGw1NC44NTMgOTcuOTk5QzEwMi42MjUgNDk4Ljk3IDEyNC43MyA1MTIgMTQ4LjU3NSA1MTJoMjA1LjcwMmMzMC43NDQgMCA1Ny41NTgtMjEuNDQgNjQuNTU1LTUxLjc5N2wyNy40MjctMTE4Ljk5OWE2Ny44MDEgNjcuODAxIDAgMCAwIDEuNzI5LTE1LjIwM0w0NDggMjU2YzAtNDQuOTU2LTQzLjI2My03Ny4zNDMtODUuODU0LTY0LjAyNHpNMzk5Ljk4NyAzMjZjMCAxLjQ4OC0uMTY5IDIuOTc3LS41MDIgNC40MjNsLTI3LjQyNyAxMTkuMDAxYy0xLjk3OCA4LjU4Mi05LjI5IDE0LjU3Ni0xNy43ODIgMTQuNTc2SDE0OC41NzVjLTYuNDg2IDAtMTIuNTQyLTMuNjIxLTE1LjgwNS05LjQ0OWwtNTQuODU0LTk4Yy00LjU1Ny04LjE0MS0yLjYxOS0xOC42NjggNC41MDgtMjQuNDg4bDI2LjY0Ny0yMS43NjRhMTYgMTYgMCAwIDAgNC44MTItMTguMTM5bC02NC4wOS0xNjYuNTQ5QzM3LjIyNiA5Mi45NTYgODQuMzcgNzQuODM3IDk2LjUxIDEwNi4zODlsNTkuNzg0IDE1NS4zNTdBMTYgMTYgMCAwIDAgMTcxLjIyNyAyNzJoMTEuNjMyYzguODM3IDAgMTYtNy4xNjMgMTYtMTZWNzRjMC0zNC4zNzUgNTAuMjgxLTM0LjQzIDUwLjI4MSAwdjE4MmMwIDguODM3IDcuMTYzIDE2IDE2IDE2aDYuODU2YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTI4YzAtMjUuMTIyIDM2LjU2Ny0yNS4xNTkgMzYuNTY3IDB2MjhjMCA4LjgzNyA3LjE2MyAxNiAxNiAxNmg2Ljg1NmM4LjgzNyAwIDE2LTcuMTYzIDE2LTE2IDAtMjUuMTIgMzYuNTY3LTI1LjE2IDM2LjU2NyAwdjcwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludERvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTg4LjggNTEyYzQ1LjYxNiAwIDgzLjItMzcuNzY1IDgzLjItODMuMnYtMzUuNjQ3YTkzLjE0OCA5My4xNDggMCAwIDAgMjIuMDY0LTcuOTI5YzIyLjAwNiAyLjUwNyA0NC45NzgtMy41MDMgNjIuNzkxLTE1Ljk4NUM0MDkuMzQyIDM2OC4xIDQ0OCAzMzEuODQxIDQ0OCAyNjkuMjk5VjI0OGMwLTYwLjA2My00MC05OC41MTItNDAtMTI3LjJ2LTIuNjc5YzQuOTUyLTUuNzQ3IDgtMTMuNTM2IDgtMjIuMTJWMzJjMC0xNy42NzMtMTIuODk0LTMyLTI4LjgtMzJIMTU2LjhDMTQwLjg5NCAwIDEyOCAxNC4zMjcgMTI4IDMydjY0YzAgOC41ODQgMy4wNDggMTYuMzczIDggMjIuMTJ2Mi42NzljMCA2Ljk2NC02LjE5MyAxNC44NjItMjMuNjY4IDMwLjE4M2wtLjE0OC4xMjktLjE0Ni4xMzFjLTkuOTM3IDguODU2LTIwLjg0MSAxOC4xMTYtMzMuMjUzIDI1Ljg1MUM0OC41MzcgMTk1Ljc5OCAwIDIwNy40ODYgMCAyNTIuOGMwIDU2LjkyOCAzNS4yODYgOTIgODMuMiA5MiA4LjAyNiAwIDE1LjQ4OS0uODE0IDIyLjQtMi4xNzZWNDI4LjhjMCA0NS4wOTkgMzguMTAxIDgzLjIgODMuMiA4My4yem0wLTQ4Yy0xOC43IDAtMzUuMi0xNi43NzUtMzUuMi0zNS4yVjI3MC40Yy0xNy4zMjUgMC0zNS4yIDI2LjQtNzAuNCAyNi40LTI2LjQgMC0zNS4yLTIwLjYyNS0zNS4yLTQ0IDAtOC43OTQgMzIuNzEyLTIwLjQ0NSA1Ni4xLTM0LjkyNiAxNC41NzUtOS4wNzQgMjcuMjI1LTE5LjUyNCAzOS44NzUtMzAuNzk5IDE4LjM3NC0xNi4xMDkgMzYuNjMzLTMzLjgzNiAzOS41OTYtNTkuMDc1aDE3Ni43NTJDMzY0LjA4NyAxNzAuNzkgNDAwIDIwMi41MDkgNDAwIDI0OHYyMS4yOTljMCA0MC41MjQtMjIuMTk3IDU3LjEyNC02MS4zMjUgNTAuNjAxLTguMDAxIDE0LjYxMi0zMy45NzkgMjQuMTUxLTUzLjYyNSAxMi45MjUtMTguMjI1IDE5LjM2NS00Ni4zODEgMTcuNzg3LTYxLjA1IDQuOTVWNDI4LjhjMCAxOC45NzUtMTYuMjI1IDM1LjItMzUuMiAzNS4yek0zMjggNjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0czI0IDEwLjc0NSAyNCAyNC0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0hhbmRQb2ludExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyMjAuOEMwIDI2Ni40MTYgMzcuNzY1IDMwNCA4My4yIDMwNGgzNS42NDdhOTMuMTQ4IDkzLjE0OCAwIDAgMCA3LjkyOSAyMi4wNjRjLTIuNTA3IDIyLjAwNiAzLjUwMyA0NC45NzggMTUuOTg1IDYyLjc5MUMxNDMuOSA0NDEuMzQyIDE4MC4xNTkgNDgwIDI0Mi43MDEgNDgwSDI2NGM2MC4wNjMgMCA5OC41MTItNDAgMTI3LjItNDBoMi42NzljNS43NDcgNC45NTIgMTMuNTM2IDggMjIuMTIgOGg2NGMxNy42NzMgMCAzMi0xMi44OTQgMzItMjguOFYxODguOGMwLTE1LjkwNi0xNC4zMjctMjguOC0zMi0yOC44aC02NGMtOC41ODQgMC0xNi4zNzMgMy4wNDgtMjIuMTIgOEgzOTEuMmMtNi45NjQgMC0xNC44NjItNi4xOTMtMzAuMTgzLTIzLjY2OGwtLjEyOS0uMTQ4LS4xMzEtLjE0NmMtOC44NTYtOS45MzctMTguMTE2LTIwLjg0MS0yNS44NTEtMzMuMjUzQzMxNi4yMDIgODAuNTM3IDMwNC41MTQgMzIgMjU5LjIgMzJjLTU2LjkyOCAwLTkyIDM1LjI4Ni05MiA4My4yIDAgOC4wMjYuODE0IDE1LjQ4OSAyLjE3NiAyMi40SDgzLjJDMzguMTAxIDEzNy42IDAgMTc1LjcwMSAwIDIyMC44em00OCAwYzAtMTguNyAxNi43NzUtMzUuMiAzNS4yLTM1LjJoMTU4LjRjMC0xNy4zMjUtMjYuNC0zNS4yLTI2LjQtNzAuNCAwLTI2LjQgMjAuNjI1LTM1LjIgNDQtMzUuMiA4Ljc5NCAwIDIwLjQ0NSAzMi43MTIgMzQuOTI2IDU2LjEgOS4wNzQgMTQuNTc1IDE5LjUyNCAyNy4yMjUgMzAuNzk5IDM5Ljg3NSAxNi4xMDkgMTguMzc0IDMzLjgzNiAzNi42MzMgNTkuMDc1IDM5LjU5NnYxNzYuNzUyQzM0MS4yMSAzOTYuMDg3IDMwOS40OTEgNDMyIDI2NCA0MzJoLTIxLjI5OWMtNDAuNTI0IDAtNTcuMTI0LTIyLjE5Ny01MC42MDEtNjEuMzI1LTE0LjYxMi04LjAwMS0yNC4xNTEtMzMuOTc5LTEyLjkyNS01My42MjUtMTkuMzY1LTE4LjIyNS0xNy43ODctNDYuMzgxLTQuOTUtNjEuMDVIODMuMkM2NC4yMjUgMjU2IDQ4IDIzOS43NzUgNDggMjIwLjh6TTQ0OCAzNjBjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MjguOCAxMzcuNmgtODYuMTc3YTExNS41MiAxMTUuNTIgMCAwIDAgMi4xNzYtMjIuNGMwLTQ3LjkxNC0zNS4wNzItODMuMi05Mi04My4yLTQ1LjMxNCAwLTU3LjAwMiA0OC41MzctNzUuNzA3IDc4Ljc4NC03LjczNSAxMi40MTMtMTYuOTk0IDIzLjMxNy0yNS44NTEgMzMuMjUzbC0uMTMxLjE0Ni0uMTI5LjE0OEMxMzUuNjYyIDE2MS44MDcgMTI3Ljc2NCAxNjggMTIwLjggMTY4aC0yLjY3OWMtNS43NDctNC45NTItMTMuNTM2LTgtMjIuMTItOEgzMmMtMTcuNjczIDAtMzIgMTIuODk0LTMyIDI4Ljh2MjMwLjRDMCA0MzUuMTA2IDE0LjMyNyA0NDggMzIgNDQ4aDY0YzguNTg0IDAgMTYuMzczLTMuMDQ4IDIyLjEyLThoMi42NzljMjguNjg4IDAgNjcuMTM3IDQwIDEyNy4yIDQwaDIxLjI5OWM2Mi41NDIgMCA5OC44LTM4LjY1OCA5OS45NC05MS4xNDUgMTIuNDgyLTE3LjgxMyAxOC40OTEtNDAuNzg1IDE1Ljk4NS02Mi43OTFBOTMuMTQ4IDkzLjE0OCAwIDAgMCAzOTMuMTUyIDMwNEg0MjguOGM0NS40MzUgMCA4My4yLTM3LjU4NCA4My4yLTgzLjIgMC00NS4wOTktMzguMTAxLTgzLjItODMuMi04My4yem0wIDExOC40aC05MS4wMjZjMTIuODM3IDE0LjY2OSAxNC40MTUgNDIuODI1LTQuOTUgNjEuMDUgMTEuMjI3IDE5LjY0NiAxLjY4NyA0NS42MjQtMTIuOTI1IDUzLjYyNSA2LjUyNCAzOS4xMjgtMTAuMDc2IDYxLjMyNS01MC42IDYxLjMyNUgyNDhjLTQ1LjQ5MSAwLTc3LjIxLTM1LjkxMy0xMjAtMzkuNjc2VjIxNS41NzFjMjUuMjM5LTIuOTY0IDQyLjk2Ni0yMS4yMjIgNTkuMDc1LTM5LjU5NiAxMS4yNzUtMTIuNjUgMjEuNzI1LTI1LjMgMzAuNzk5LTM5Ljg3NUMyMzIuMzU1IDExMi43MTIgMjQ0LjAwNiA4MCAyNTIuOCA4MGMyMy4zNzUgMCA0NCA4LjggNDQgMzUuMiAwIDM1LjItMjYuNCA1My4wNzUtMjYuNCA3MC40aDE1OC40YzE4LjQyNSAwIDM1LjIgMTYuNSAzNS4yIDM1LjIgMCAxOC45NzUtMTYuMjI1IDM1LjItMzUuMiAzNS4yek04OCAzODRjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0cy0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMDUuNiA4My4ydjg2LjE3N2ExMTUuNTIgMTE1LjUyIDAgMCAwLTIyLjQtMi4xNzZjLTQ3LjkxNCAwLTgzLjIgMzUuMDcyLTgzLjIgOTIgMCA0NS4zMTQgNDguNTM3IDU3LjAwMiA3OC43ODQgNzUuNzA3IDEyLjQxMyA3LjczNSAyMy4zMTcgMTYuOTk0IDMzLjI1MyAyNS44NTFsLjE0Ni4xMzEuMTQ4LjEyOUMxMjkuODA3IDM3Ni4zMzggMTM2IDM4NC4yMzYgMTM2IDM5MS4ydjIuNjc5Yy00Ljk1MiA1Ljc0Ny04IDEzLjUzNi04IDIyLjEydjY0YzAgMTcuNjczIDEyLjg5NCAzMiAyOC44IDMyaDIzMC40YzE1LjkwNiAwIDI4LjgtMTQuMzI3IDI4LjgtMzJ2LTY0YzAtOC41ODQtMy4wNDgtMTYuMzczLTgtMjIuMTJWMzkxLjJjMC0yOC42ODggNDAtNjcuMTM3IDQwLTEyNy4ydi0yMS4yOTljMC02Mi41NDItMzguNjU4LTk4LjgtOTEuMTQ1LTk5Ljk0LTE3LjgxMy0xMi40ODItNDAuNzg1LTE4LjQ5MS02Mi43OTEtMTUuOTg1QTkzLjE0OCA5My4xNDggMCAwIDAgMjcyIDExOC44NDdWODMuMkMyNzIgMzcuNzY1IDIzNC40MTYgMCAxODguOCAwYy00NS4wOTkgMC04My4yIDM4LjEwMS04My4yIDgzLjJ6bTExOC40IDB2OTEuMDI2YzE0LjY2OS0xMi44MzcgNDIuODI1LTE0LjQxNSA2MS4wNSA0Ljk1IDE5LjY0Ni0xMS4yMjcgNDUuNjI0LTEuNjg3IDUzLjYyNSAxMi45MjUgMzkuMTI4LTYuNTI0IDYxLjMyNSAxMC4wNzYgNjEuMzI1IDUwLjZWMjY0YzAgNDUuNDkxLTM1LjkxMyA3Ny4yMS0zOS42NzYgMTIwSDE4My41NzFjLTIuOTY0LTI1LjIzOS0yMS4yMjItNDIuOTY2LTM5LjU5Ni01OS4wNzUtMTIuNjUtMTEuMjc1LTI1LjMtMjEuNzI1LTM5Ljg3NS0zMC43OTlDODAuNzEyIDI3OS42NDUgNDggMjY3Ljk5NCA0OCAyNTkuMmMwLTIzLjM3NSA4LjgtNDQgMzUuMi00NCAzNS4yIDAgNTMuMDc1IDI2LjQgNzAuNCAyNi40VjgzLjJjMC0xOC40MjUgMTYuNS0zNS4yIDM1LjItMzUuMiAxOC45NzUgMCAzNS4yIDE2LjIyNSAzNS4yIDM1LjJ6TTM1MiA0MjRjMTMuMjU1IDAgMjQgMTAuNzQ1IDI0IDI0cy0xMC43NDUgMjQtMjQgMjQtMjQtMTAuNzQ1LTI0LTI0IDEwLjc0NS0yNCAyNC0yNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUG9pbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zNTguMTgyIDE3OS4zNjFjLTE5LjQ5My0yNC43NjgtNTIuNjc5LTMxLjk0NS03OS44NzItMTkuMDk4LTE1LjEyNy0xNS42ODctMzYuMTgyLTIyLjQ4Ny01Ni41OTUtMTkuNjI5VjY3YzAtMzYuOTQ0LTI5LjczNi02Ny02Ni4yODYtNjdTODkuMTQzIDMwLjA1NiA4OS4xNDMgNjd2MTYxLjEyOWMtMTkuOTA5LTcuNDEtNDMuMjcyLTUuMDk0LTYyLjA4MyA4Ljg3Mi0yOS4zNTUgMjEuNzk1LTM1Ljc5MyA2My4zMzMtMTQuNTUgOTMuMTUybDEwOS42OTkgMTU0LjAwMUMxMzQuNjMyIDUwMS41OSAxNTQuNzQxIDUxMiAxNzYgNTEyaDE3OC4yODZjMzAuODAyIDAgNTcuNTc0LTIxLjUgNjQuNTU3LTUxLjc5N2wyNy40MjktMTE4Ljk5OUE2Ny44NzMgNjcuODczIDAgMCAwIDQ0OCAzMjZ2LTg0YzAtNDYuODQ0LTQ2LjYyNS03OS4yNzMtODkuODE4LTYyLjYzOXpNODAuOTg1IDI3OS42OTdsMjcuMTI2IDM4LjA3OWM4Ljk5NSAxMi42MjYgMjkuMDMxIDYuMjg3IDI5LjAzMS05LjI4M1Y2N2MwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYxNzVjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg2Ljg1N2M4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0zNWMwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYzNWMwIDguODM2IDcuMTYzIDE2IDE2IDE2SDI3MmM4LjgzNyAwIDE2LTcuMTY0IDE2LTE2di0yMWMwLTI1LjEyIDM2LjU3MS0yNS4xNiAzNi41NzEgMHYyMWMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDYuODU3YzguODM3IDAgMTYtNy4xNjQgMTYtMTYgMC0yNS4xMjEgMzYuNTcxLTI1LjE2IDM2LjU3MSAwdjg0YzAgMS40ODgtLjE2OSAyLjk3Ny0uNTAyIDQuNDIzbC0yNy40MyAxMTkuMDAxYy0xLjk3OCA4LjU4Mi05LjI5IDE0LjU3Ni0xNy43ODIgMTQuNTc2SDE3NmMtNS43NjkgMC0xMS4yNjMtMi44NzgtMTQuNjk3LTcuNjk3bC0xMDkuNzEyLTE1NGMtMTQuNDA2LTIwLjIyMyAxNC45OTQtNDIuODE4IDI5LjM5NC0yMi42MDZ6TTE3Ni4xNDMgNDAwdi05NmMwLTguODM3IDYuMjY4LTE2IDE0LTE2aDZjNy43MzIgMCAxNCA3LjE2MyAxNCAxNnY5NmMwIDguODM3LTYuMjY4IDE2LTE0IDE2aC02Yy03LjczMyAwLTE0LTcuMTYzLTE0LTE2em03NS40MjggMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzIgMC0xNC03LjE2My0xNC0xNnpNMzI3IDQwMHYtOTZjMC04LjgzNyA2LjI2OC0xNiAxNC0xNmg2YzcuNzMyIDAgMTQgNy4xNjMgMTQgMTZ2OTZjMCA4LjgzNy02LjI2OCAxNi0xNCAxNmgtNmMtNy43MzIgMC0xNC03LjE2My0xNC0xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kUm9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MDguODY0IDc5LjA1MmMtMjIuNDAxLTMzLjg5OC02Ni4xMDgtNDIuMjczLTk4LjgxMy0yMy41ODgtMjkuNDc0LTMxLjQ2OS03OS4xNDUtMzEuMDkzLTEwOC4zMzQtLjAyMi00Ny4xNi0yNy4wMi0xMDguNzEgNS4wNTUtMTEwLjY3MSA2MC44MDZDNDQuODQ2IDEwNS40MDcgMCAxNDAuMDAxIDAgMTg3LjQyOXY1Ni45NTNjMCAzMi43NDEgMTQuMjggNjMuOTU0IDM5LjE4IDg1LjYzNGw5Ny43MSA4NS4wODFjNC4yNTIgMy43MDIgMy4xMSA1LjU3MyAzLjExIDMyLjkwMyAwIDE3LjY3MyAxNC4zMjcgMzIgMzIgMzJoMjUyYzE3LjY3MyAwIDMyLTE0LjMyNyAzMi0zMiAwLTIzLjUxMy0xLjAxNS0zMC43NDUgMy45ODItNDIuMzdsNDIuODM1LTk5LjY1NmM2LjA5NC0xNC4xNzcgOS4xODMtMjkuMTcyIDkuMTgzLTQ0LjU2OFYxNDYuOTYzYzAtNTIuODM5LTU0LjMxNC04OC42NjItMTAzLjEzNi02Ny45MTF6TTQ2NCAyNjEuNDA2YTY0LjUwNSA2NC41MDUgMCAwIDEtNS4yODIgMjUuNjEzbC00Mi44MzUgOTkuNjU1Yy01LjIzIDEyLjE3MS03Ljg4MyAyNS4wNC03Ljg4MyAzOC4yNVY0MzJIMTg4di0xMC4yODZjMC0xNi4zNy03LjE0LTMxLjk3Ny0xOS41OS00Mi44MTdsLTk3LjcxLTg1LjA4QzU2LjI3NCAyODEuMjU1IDQ4IDI2My4yMzYgNDggMjQ0LjM4MXYtNTYuOTUzYzAtMzMuMjA4IDUyLTMzLjUzNyA1MiAuNjc3djQxLjIyOGExNiAxNiAwIDAgMCA1LjQ5MyAxMi4wNjdsNyA2LjA5NUExNiAxNiAwIDAgMCAxMzkgMjM1LjQyOVYxMTguODU3YzAtMzMuMDk3IDUyLTMzLjcyNSA1MiAuNjc3djI2Ljc1MWMwIDguODM2IDcuMTY0IDE2IDE2IDE2aDdjOC44MzYgMCAxNi03LjE2NCAxNi0xNnYtNDEuMTQzYzAtMzMuMTM0IDUyLTMzLjY3NSA1MiAuNjc3djQwLjQ2NmMwIDguODM2IDcuMTYzIDE2IDE2IDE2aDdjOC44MzcgMCAxNi03LjE2NCAxNi0xNnYtMjcuNDI5YzAtMzMuMDMgNTItMzMuNzggNTIgLjY3N3YyNi43NTFjMCA4LjgzNiA3LjE2MyAxNiAxNiAxNmg3YzguODM3IDAgMTYtNy4xNjQgMTYtMTYgMC0zMy4xNDYgNTItMzMuNjEzIDUyIC42Nzd2MTE0LjQ0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU2Npc3NvcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjU2IDQ4MGw3MC0uMDEzYzUuMTE0IDAgMTAuMjMxLS41ODMgMTUuMjAzLTEuNzI5bDExOC45OTktMjcuNDI3QzQ5MC41NiA0NDMuODM1IDUxMiA0MTcuMDIgNTEyIDM4Ni4yNzdWMTgwLjU3NWMwLTIzLjg0NS0xMy4wMy00NS45NTEtMzQuMDA1LTU3LjY5bC05Ny45OTktNTQuODUzYy0zNC40MDktMTkuMjYxLTY3LjI2My01LjgyNC05Mi4yMTggMjQuNzMzTDE0Mi44NSAzNy4wMDhjLTM3Ljg4Ny0xNC41NzktODAuNjEyIDMuNzI3LTk1LjY0MiA0MS4yMDEtMTUuMDk4IDM3LjY0MiAzLjYzNSA4MC4zNyA0MS45NDIgOTUuMTEyTDE2OCAxOTJsLTk0LTkuMTQxYy00MC44MDQgMC03NCAzMi44MTEtNzQgNzMuMTQgMCA0MC4zMyAzMy4xOTYgNzMuMTQxIDc0IDczLjE0MWg4Ny42MzVjLTMuNjc1IDI2LjI0NSA4LjY5MiA1MS4yOTcgMzAuMzQxIDY1LjAwNkMxNzguNjU3IDQzNi43MzcgMjExLjA0NCA0ODAgMjU2IDQ4MHptMC00OC4wMTNjLTI1LjE2IDAtMjUuMTItMzYuNTY3IDAtMzYuNTY3IDguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZoLTI4Yy0yNS4xNTkgMC0yNS4xMjItMzYuNTY3IDAtMzYuNTY3aDI4YzguODM3IDAgMTYtNy4xNjMgMTYtMTZ2LTYuODU2YzAtOC44MzctNy4xNjMtMTYtMTYtMTZINzRjLTM0LjQzIDAtMzQuMzc1LTUwLjI4MSAwLTUwLjI4MWgxODJjOC44MzcgMCAxNi03LjE2MyAxNi0xNnYtMTEuNjMyYTE2IDE2IDAgMCAwLTEwLjI1NC0xNC45MzNMMTA2LjM4OSAxMjguNTFjLTMxLjU1Mi0xMi4xNC0xMy40MzItNTkuMjgzIDE5LjIyMi00Ni43MTdsMTY2LjU0OSA2NC4wOTFhMTYuMDAxIDE2LjAwMSAwIDAgMCAxOC4xMzktNC44MTJsMjEuNzY0LTI2LjY0N2M1LjgyLTcuMTI3IDE2LjM0OC05LjA2NCAyNC40ODgtNC41MDhsOTggNTQuODU0YzUuODI4IDMuMjYzIDkuNDQ5IDkuMzE4IDkuNDQ5IDE1LjgwNXYyMDUuNzAxYzAgOC40OTEtNS45OTQgMTUuODA0LTE0LjU3NiAxNy43ODJsLTExOS4wMDEgMjcuNDI3YTE5Ljc0MyAxOS43NDMgMCAwIDEtNC40MjMuNTAyaC03MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kU3BvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTAxLjAzMDUzLDExNi4xNzYwNWMtMTkuMzkwNTktMzEuNTA3NzktNTEuMjQ0MDYtMzUuNzI4NDktNjYuMzEwNDQtMzUuMDE3NTYtMTQuMTEzMjUtNTAuODEwNTEtNjIuMDAzOC01NC4wOC03MC43MzgxNi01NC4wOGE3NC4wMzA5MSw3NC4wMzA5MSwwLDAsMC03Mi4yMzgxNiw1OC45MTZsLTQuNjQ2NDgsMjIuNjYwMTQtMTMuNjgzNTctNTMuMjA3Yy05LjA5NTY5LTM1LjM3MTA3LTQ2LjQxMi02NC4wNTA3NC04OS42Ni01My4wNzIyM2E3My44OTc0OSw3My44OTc0OSwwLDAsMC01NS4xMjEsNzguOTQ3MjIsNzMuNjgyNzMsNzMuNjgyNzMsMCwwLDAtNjQuODQ5NSw5NC40MjE4MWwyNC4zNTkzMyw4Mi4xOTcyMWMtMzguMjQwMTctNy41NDQ5Mi02Mi43OTY3NywxNi4xODM1OC02OC4xMTUxMiwyMS44NDc2NGE3My42NzkxLDczLjY3OTEsMCwwLDAsMy4xOTkyMSwxMDQuMTkzMjlsOTEuMzY1MDksODUuOTc2NUExNTQuMTY0LDE1NC4xNjQsMCwwLDAsMjIwLjYyMjc5LDUxMmgxMDcuNDU0OUExMjcuMzAwNzksMTI3LjMwMDc5LDAsMCwwLDQ1Mi4zMzkyLDQxMy44NjEzOWw1Ny42MjMtMjQxLjk2MjcyQTczLjIwMjc0LDczLjIwMjc0LDAsMCwwLDUwMS4wMzA1MywxMTYuMTc2MDVabS0zNy43NTk3LDQ0LjYwNTQ0TDQwNS42NDc4OCw0MDIuNzQ4MTJhNzkuNDY2MTYsNzkuNDY2MTYsMCwwLDEtNzcuNTcwMTksNjEuMjU5NzJIMjIwLjYyMjc5YTEwNi4zNDA1MiwxMDYuMzQwNTIsMCwwLDEtNzMuMTM2Ni0yOC45OThsLTkxLjM2OS04NS45ODA0MUMzMS4zNDM4MSwzMjUuNzI2NjksNjYuNjExMzMsMjg4LjEzMSw5MS4zOTY0NCwzMTEuNTM5Mmw1MS4xMjMsNDguMTA3MzljNS40MjU3Nyw1LjEwOTM3LDEzLjQ4MjM5LjcxNjc5LDEzLjQ4MjM5LTUuODI2MTdhMjQ2Ljc5OTE0LDI0Ni43OTkxNCwwLDAsMC0xMC4xNzc3MS03MC4xNTIzbC0zNi4wMTM2Mi0xMjEuNTM5Yy05LjczMjQtMzIuODgyNzksMzkuNjk5MTYtNDcuMjcxNDUsNDkuMzg2NjQtMTQuNjI1bDMxLjM0MzcsMTA1Ljc3OTIzYzUuNTkzNzQsMTguOTA0MjgsMzMuNzgxMTksMTAuNzEyODgsMjguOTY0OC04LjAwNzgxTDE3Ny4wNjQyNyw4MC4yMzY2MmMtOC41MDM4OS0zMy4xMDM1LDQxLjQzMTU3LTQ1LjY0NjQ2LDQ5Ljg2NTE1LTEyLjgzNTkzbDQ3LjMyNjA5LDE4NC4wMzVjNC40Mjc3MywxNy4yNDIxOCwyOS4xNjIwNywxNi41MDM5LDMyLjcxMDg5LS44MDQ2OGwzMS43OTEtMTU0Ljk3MDZjNi44MTA1NC0zMy4xMDc0LDU3LjUxNzQ4LTI0LjEwNzQxLDUwLjExOTA2LDExLjk2Mjg4TDM2MC4zMjc2NCwyNDYuNzg5MjRjLTMuNzIyNjUsMTguMTA5MzYsMjMuNjY3OTMsMjQuNjMwODQsMjguMDU2NTksNi4yMTY3OUw0MTMuMTg1LDE0OC44NTk2MkM0MjEuMTQ5OCwxMTUuNTEyLDQ3MS4xNCwxMjcuNzk3MTMsNDYzLjI3MDgzLDE2MC43ODE0OVpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIYW5kc2hha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTE5LjIgMTI3LjlsLTQ3LjYtNDcuNkE1Ni4yNTIgNTYuMjUyIDAgMCAwIDQzMiA2NEgyMDUuMmMtMTQuOCAwLTI5LjEgNS45LTM5LjYgMTYuM0wxMTggMTI3LjlIMHYyNTUuN2g2NGMxNy42IDAgMzEuOC0xNC4yIDMxLjktMzEuN2g5LjFsODQuNiA3Ni40YzMwLjkgMjUuMSA3My44IDI1LjcgMTA1LjYgMy44IDEyLjUgMTAuOCAyNiAxNS45IDQxLjEgMTUuOSAxOC4yIDAgMzUuMy03LjQgNDguOC0yNCAyMi4xIDguNyA0OC4yIDIuNiA2NC0xNi44bDI2LjItMzIuM2M1LjYtNi45IDkuMS0xNC44IDEwLjktMjNoNTcuOWMuMSAxNy41IDE0LjQgMzEuNyAzMS45IDMxLjdoNjRWMTI3LjlINTE5LjJ6TTQ4IDM1MS42Yy04LjggMC0xNi03LjItMTYtMTZzNy4yLTE2IDE2LTE2IDE2IDcuMiAxNiAxNmMwIDguOS03LjIgMTYtMTYgMTZ6bTM5MC02LjlsLTI2LjEgMzIuMmMtMi44IDMuNC03LjggNC0xMS4zIDEuMmwtMjMuOS0xOS40LTMwIDM2LjVjLTYgNy4zLTE1IDQuOC0xOCAyLjRsLTM2LjgtMzEuNS0xNS42IDE5LjJjLTEzLjkgMTcuMS0zOS4yIDE5LjctNTUuMyA2LjZsLTk3LjMtODhIOTZWMTc1LjhoNDEuOWw2MS43LTYxLjZjMi0uOCAzLjctMS41IDUuNy0yLjNIMjYybC0zOC43IDM1LjVjLTI5LjQgMjYuOS0zMS4xIDcyLjMtNC40IDEwMS4zIDE0LjggMTYuMiA2MS4yIDQxLjIgMTAxLjUgNC40bDguMi03LjUgMTA4LjIgODcuOGMzLjQgMi44IDMuOSA3LjkgMS4yIDExLjN6bTEwNi00MC44aC02OS4yYy0yLjMtMi44LTQuOS01LjQtNy43LTcuN2wtMTAyLjctODMuNCAxMi41LTExLjRjNi41LTYgNy0xNi4xIDEtMjIuNkwzNjcgMTY3LjFjLTYtNi41LTE2LjEtNi45LTIyLjYtMWwtNTUuMiA1MC42Yy05LjUgOC43LTI1LjcgOS40LTM0LjYgMC05LjMtOS45LTguNS0yNS4xIDEuMi0zMy45bDY1LjYtNjAuMWM3LjQtNi44IDE3LTEwLjUgMjctMTAuNWw4My43LS4yYzIuMSAwIDQuMS44IDUuNSAyLjNsNjEuNyA2MS42SDU0NHYxMjh6bTQ4IDQ3LjdjLTguOCAwLTE2LTcuMi0xNi0xNnM3LjItMTYgMTYtMTYgMTYgNy4yIDE2IDE2YzAgOC45LTcuMiAxNi0xNiAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNTY3LjQwMyAyMzUuNjQyTDQ2Mi4zMjMgODQuNTg5QTQ4IDQ4IDAgMCAwIDQyMi45MTkgNjRIMTUzLjA4MWE0OCA0OCAwIDAgMC0zOS40MDQgMjAuNTg5TDguNTk3IDIzNS42NDJBNDguMDAxIDQ4LjAwMSAwIDAgMCAwIDI2My4wNTRWNDAwYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDgwYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMjYzLjA1NGMwLTkuODAxLTMtMTkuMzY2LTguNTk3LTI3LjQxMnpNMTUzLjA4MSAxMTJoMjY5LjgzOGw3Ny45MTMgMTEySDc1LjE2OGw3Ny45MTMtMTEyek01MjggNDAwSDQ4VjI3Mmg0ODB2MTI4em0tMzItNjRjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnptLTk2IDBjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzIgMTQuMzI3LTMyIDMyLTMyIDMyIDE0LjMyNyAzMiAzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdIZWFydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NTguNCA2NC4zQzQwMC42IDE1LjcgMzExLjMgMjMgMjU2IDc5LjMgMjAwLjcgMjMgMTExLjQgMTUuNiA1My42IDY0LjMtMjEuNiAxMjcuNi0xMC42IDIzMC44IDQzIDI4NS41bDE3NS40IDE3OC43YzEwIDEwLjIgMjMuNCAxNS45IDM3LjYgMTUuOSAxNC4zIDAgMjcuNi01LjYgMzcuNi0xNS44TDQ2OSAyODUuNmM1My41LTU0LjcgNjQuNy0xNTcuOS0xMC42LTIyMS4zem0tMjMuNiAxODcuNUwyNTkuNCA0MzAuNWMtMi40IDIuNC00LjQgMi40LTYuOCAwTDc3LjIgMjUxLjhjLTM2LjUtMzcuMi00My45LTEwNy42IDcuMy0xNTAuNyAzOC45LTMyLjcgOTguOS0yNy44IDEzNi41IDEwLjVsMzUgMzUuNyAzNS0zNS43YzM3LjgtMzguNSA5Ny44LTQzLjIgMTM2LjUtMTAuNiA1MS4xIDQzLjEgNDMuNSAxMTMuOSA3LjMgMTUwLjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG9zcGl0YWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTI4IDI0NHYtNDBjMC02LjYyNyA1LjM3My0xMiAxMi0xMmg0MGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQwYzAgNi42MjctNS4zNzMgMTItMTIgMTJoLTQwYy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0xNDAgMTJoNDBjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNDBjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNDBjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NDBjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMnptLTc2IDg0di00MGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00MGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnY0MGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTc2IDEyaDQwYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTQwYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTQwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjQwYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTE4MCAxMjR2MzZIMHYtMzZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxOS41Vjg1LjAzNUMzMS41IDczLjQxOCA0Mi4yNDUgNjQgNTUuNSA2NEgxNDRWMjRjMC0xMy4yNTUgMTAuNzQ1LTI0IDI0LTI0aDExMmMxMy4yNTUgMCAyNCAxMC43NDUgMjQgMjR2NDBoODguNWMxMy4yNTUgMCAyNCA5LjQxOCAyNCAyMS4wMzVWNDY0SDQzNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEyek03OS41IDQ2M0gxOTJ2LTY3YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoNDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnY2N2gxMTIuNVYxMTJIMzA0djI0YzAgMTMuMjU1LTEwLjc0NSAyNC0yNCAyNEgxNjhjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHYtMjRINzkuNXYzNTF6TTI2NiA2NGgtMjZWMzhhNiA2IDAgMCAwLTYtNmgtMjBhNiA2IDAgMCAwLTYgNnYyNmgtMjZhNiA2IDAgMCAwLTYgNnYyMGE2IDYgMCAwIDAgNiA2aDI2djI2YTYgNiAwIDAgMCA2IDZoMjBhNiA2IDAgMCAwIDYtNlY5NmgyNmE2IDYgMCAwIDAgNi02VjcwYTYgNiAwIDAgMC02LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSG91cmdsYXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM2OCA0OGg0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAwIDAgNS4zNzMgMCAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDRjMCA4MC41NjQgMzIuMTg4IDE2NS44MDcgOTcuMTggMjA4QzQ3Ljg5OSAyOTguMzgxIDE2IDM4My45IDE2IDQ2NGgtNGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDM2MGM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0yNGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC00YzAtODAuNTY0LTMyLjE4OC0xNjUuODA3LTk3LjE4LTIwOEMzMzYuMTAyIDIxMy42MTkgMzY4IDEyOC4xIDM2OCA0OHpNNjQgNDhoMjU2YzAgMTAxLjYyLTU3LjMwNyAxODQtMTI4IDE4NFM2NCAxNDkuNjIxIDY0IDQ4em0yNTYgNDE2SDY0YzAtMTAxLjYyIDU3LjMwOC0xODQgMTI4LTE4NHMxMjggODIuMzggMTI4IDE4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJZEJhZGdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzODQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMzNiAwSDQ4QzIxLjUgMCAwIDIxLjUgMCA0OHY0MTZjMCAyNi41IDIxLjUgNDggNDggNDhoMjg4YzI2LjUgMCA0OC0yMS41IDQ4LTQ4VjQ4YzAtMjYuNS0yMS41LTQ4LTQ4LTQ4em0wIDQ2NEg0OFY0OGgyODh2NDE2ek0xNDQgMTEyaDk2YzguOCAwIDE2LTcuMiAxNi0xNnMtNy4yLTE2LTE2LTE2aC05NmMtOC44IDAtMTYgNy4yLTE2IDE2czcuMiAxNiAxNiAxNnptNDggMTc2YzM1LjMgMCA2NC0yOC43IDY0LTY0cy0yOC43LTY0LTY0LTY0LTY0IDI4LjctNjQgNjQgMjguNyA2NCA2NCA2NHptLTg5LjYgMTI4aDE3OS4yYzEyLjQgMCAyMi40LTguNiAyMi40LTE5LjJ2LTE5LjJjMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjZ2MTkuMmMwIDEwLjYgMTAgMTkuMiAyMi40IDE5LjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSWRDYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUyOCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0ODBjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bTAgNDAwSDMwMy4yYy45LTQuNS44IDMuNi44LTIyLjQgMC0zMS44LTMwLjEtNTcuNi02Ny4yLTU3LjYtMTAuOCAwLTE4LjcgOC00NC44IDgtMjYuOSAwLTMzLjQtOC00NC44LTgtMzcuMSAwLTY3LjIgMjUuOC02Ny4yIDU3LjYgMCAyNi0uMiAxNy45LjggMjIuNEg0OFYxNDRoNDgwdjI4OHptLTE2OC04MGgxMTJjNC40IDAgOC0zLjYgOC04di0xNmMwLTQuNC0zLjYtOC04LThIMzYwYy00LjQgMC04IDMuNi04IDh2MTZjMCA0LjQgMy42IDggOCA4em0wLTY0aDExMmM0LjQgMCA4LTMuNiA4LTh2LTE2YzAtNC40LTMuNi04LTgtOEgzNjBjLTQuNCAwLTggMy42LTggOHYxNmMwIDQuNCAzLjYgOCA4IDh6bTAtNjRoMTEyYzQuNCAwIDgtMy42IDgtOHYtMTZjMC00LjQtMy42LTgtOC04SDM2MGMtNC40IDAtOCAzLjYtOCA4djE2YzAgNC40IDMuNiA4IDggOHptLTE2OCA5NmMzNS4zIDAgNjQtMjguNyA2NC02NHMtMjguNy02NC02NC02NC02NCAyOC43LTY0IDY0IDI4LjcgNjQgNjQgNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDY0SDQ4QzIxLjQ5IDY0IDAgODUuNDkgMCAxMTJ2Mjg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTEyYzAtMjYuNTEtMjEuNDktNDgtNDgtNDh6bS02IDMzNkg1NGE2IDYgMCAwIDEtNi02VjExOGE2IDYgMCAwIDEgNi02aDQwNGE2IDYgMCAwIDEgNiA2djI3NmE2IDYgMCAwIDEtNiA2ek0xMjggMTUyYy0yMi4wOTEgMC00MCAxNy45MDktNDAgNDBzMTcuOTA5IDQwIDQwIDQwIDQwLTE3LjkwOSA0MC00MC0xNy45MDktNDAtNDAtNDB6TTk2IDM1MmgzMjB2LTgwbC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMTkyIDMwNGwtMzkuNTE1LTM5LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDk2IDMwNHY0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdJbWFnZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDgwIDQxNnYxNmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjE3NmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDE2djQ4SDU0YTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZ2LTEwaDQ4em00Mi0zMzZIMTUwYTYgNiAwIDAgMC02IDZ2MjQ0YTYgNiAwIDAgMCA2IDZoMzcyYTYgNiAwIDAgMCA2LTZWODZhNiA2IDAgMCAwLTYtNnptNi00OGMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI1NmMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDE0NGMtMjYuNTEgMC00OC0yMS40OS00OC00OFY4MGMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDM4NHpNMjY0IDE0NGMwIDIyLjA5MS0xNy45MDkgNDAtNDAgNDBzLTQwLTE3LjkwOS00MC00MCAxNy45MDktNDAgNDAtNDAgNDAgMTcuOTA5IDQwIDQwem0tNzIgOTZsMzkuNTE1LTM5LjUxNWM0LjY4Ni00LjY4NiAxMi4yODQtNC42ODYgMTYuOTcxIDBMMjg4IDI0MGwxMDMuNTE1LTEwMy41MTVjNC42ODYtNC42ODYgMTIuMjg0LTQuNjg2IDE2Ljk3MSAwTDQ4MCAyMDh2ODBIMTkydi00OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLZXlib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjggNjRINDhDMjEuNDkgNjQgMCA4NS40OSAwIDExMnYyODhjMCAyNi41MSAyMS40OSA0OCA0OCA0OGg0ODBjMjYuNTEgMCA0OC0yMS40OSA0OC00OFYxMTJjMC0yNi41MS0yMS40OS00OC00OC00OHptOCAzMzZjMCA0LjQxMS0zLjU4OSA4LTggOEg0OGMtNC40MTEgMC04LTMuNTg5LTgtOFYxMTJjMC00LjQxMSAzLjU4OS04IDgtOGg0ODBjNC40MTEgMCA4IDMuNTg5IDggOHYyODh6TTE3MCAyNzB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptLTMzNiA4MnYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMkg4MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTM4NCAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6TTEyMiAxODh2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJIODJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bTk2IDB2LTI4YzAtNi42MjctNS4zNzMtMTItMTItMTJoLTI4Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI4YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjhjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptOTYgMHYtMjhjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMjhjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjhjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgyOGM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem05NiAwdi0yOGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0yOGMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyOGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6bS05OCAxNTh2LTE2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTgwYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjE2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMjE2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnS2lzc0JlYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDE1MmMtMjMuOCAwLTUyLjcgMjkuMy01NiA3MS40LS4zIDMuNyAyIDcuMiA1LjYgOC4zIDMuNSAxIDcuNS0uNSA5LjMtMy43bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjMi4xIDMuNyA2LjIgNC43IDkuMyAzLjcgMy42LTEuMSA1LjktNC41IDUuNi04LjMtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6TTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptNTYtMTQ4YzAtMTkuMi0yOC44LTQxLjUtNzEuNS00NC0zLjgtLjQtNy40IDIuNC04LjIgNi4yLS45IDMuOCAxLjEgNy43IDQuNyA5LjJsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtNS43IDIuNC02IDEyLjIgMCAxNC44bDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTMuNiAxLjUtNS42IDUuNC00LjcgOS4yLjggMy42IDQuMSA2LjIgNy44IDYuMmguNWM0Mi44LTIuNSA3MS41LTI0LjggNzEuNS00NCAwLTEzLTEzLjQtMjcuMy0zNS4yLTM2QzI5MC42IDMzNS4zIDMwNCAzMjEgMzA0IDMwOHptMjQtMTU2Yy0yMy44IDAtNTIuNyAyOS4zLTU2IDcxLjQtLjMgMy43IDIgNy4yIDUuNiA4LjMgMy41IDEgNy41LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDUuOS00LjUgNS42LTguMy0zLjEtNDIuMS0zMi03MS40LTU1LjgtNzEuNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdLaXNzV2lua0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MDQgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMwNCAzMDguNWMwLTE5LjItMjguOC00MS41LTcxLjUtNDQtMy44LS40LTcuNCAyLjQtOC4yIDYuMi0uOSAzLjggMS4xIDcuNyA0LjcgOS4ybDE2LjkgNy4yYzEzIDUuNSAyMC44IDEzLjUgMjAuOCAyMS41cy03LjggMTYtMjAuNyAyMS41bC0xNyA3LjJjLTUuNyAyLjQtNiAxMi4yIDAgMTQuOGwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy0zLjYgMS41LTUuNiA1LjQtNC43IDkuMi44IDMuNiA0LjEgNi4yIDcuOCA2LjJoLjVjNDIuOC0yLjUgNzEuNS0yNC44IDcxLjUtNDQgMC0xMy0xMy40LTI3LjMtMzUuMi0zNiAyMS43LTkuMSAzNS4xLTIzLjQgMzUuMS0zNi40em03MC41LTgzLjVsOS41IDguNWMzLjggMy4zIDkuMyA0IDEzLjcgMS42IDQuNC0yLjQgNi45LTcuNCA2LjEtMTIuNC00LTI1LjItMzQuMi00Mi4xLTU5LjgtNDIuMXMtNTUuOSAxNi45LTU5LjggNDIuMWMtLjggNSAxLjcgMTAgNi4xIDEyLjQgNS44IDMuMSAxMS4yLjcgMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDB6TTEzNiAyMDguNWMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMnptMzY1LjEgMTk0Yy04LTIwLjgtMzEuNS0zMS41LTUzLjEtMjUuOWwtOC40IDIuMi0yLjMtOC40Yy01LjktMjEuNC0yNy0zNi41LTQ5LTMzLTI1LjIgNC00MC42IDI4LjYtMzQgNTIuNmwyMi45IDgyLjZjMS41IDUuMyA3IDguNSAxMi40IDcuMWw4My0yMS41YzI0LjEtNi4zIDM3LjctMzEuOCAyOC41LTU1Ljd6TTMzNCA0MzYuM2MtMjYuMSAxMi41LTU1LjIgMTkuNy04NiAxOS43LTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMGMwIDIyLjEtMy43IDQzLjMtMTAuNCA2My4yIDkgNi40IDE3IDE0LjIgMjIuNiAyMy45IDYuNC4xIDEyLjYgMS40IDE4LjYgMi45IDEwLjktMjcuOSAxNy4xLTU4LjIgMTcuMS05MEM0OTYgMTE5IDM4NSA4IDI0OCA4UzAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OGMzNS40IDAgNjguOS03LjUgOTkuNC0yMC45LTIuNS03LjMgNC4zIDE3LjItMTMuNC00Ni44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0tpc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTY4IDE3NmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bTEzNiAxMzJjMC0xOS4yLTI4LjgtNDEuNS03MS41LTQ0LTMuOC0uNC03LjQgMi40LTguMiA2LjItLjkgMy44IDEuMSA3LjcgNC43IDkuMmwxNi45IDcuMmMxMyA1LjUgMjAuOCAxMy41IDIwLjggMjEuNXMtNy44IDE2LTIwLjcgMjEuNWwtMTcgNy4yYy01LjcgMi40LTYgMTIuMiAwIDE0LjhsMTYuOSA3LjJjMTMgNS41IDIwLjggMTMuNSAyMC44IDIxLjVzLTcuOCAxNi0yMC43IDIxLjVsLTE3IDcuMmMtMy42IDEuNS01LjYgNS40LTQuNyA5LjIuOCAzLjYgNC4xIDYuMiA3LjggNi4yaC41YzQyLjgtMi41IDcxLjUtMjQuOCA3MS41LTQ0IDAtMTMtMTMuNC0yNy4zLTM1LjItMzZDMjkwLjYgMzM1LjMgMzA0IDMyMSAzMDQgMzA4ek0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTgwLTI4MGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGF1Z2hCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uNyA4LjYgMTAuOCAxMS45IDE0LjkgNC41bDkuNS0xN2M3LjctMTMuNyAxOS4yLTIxLjYgMzEuNS0yMS42czIzLjggNy45IDMxLjUgMjEuNmw5LjUgMTdjNC4xIDcuNCAxNS42IDQgMTQuOS00LjUtMy4xLTQyLjEtMzItNzEuNC01NS44LTcxLjR6bS0yMDEgNzUuOWw5LjUtMTdjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzQuMSA3LjQgMTUuNiA0IDE0LjktNC41LTMuMy00Mi4xLTMyLjItNzEuNC01Ni03MS40cy01Mi43IDI5LjMtNTYgNzEuNGMtLjYgOC41IDEwLjkgMTEuOSAxNS4xIDQuNXpNMzYyLjQgMjg4SDEzMy42Yy04LjIgMC0xNC41IDctMTMuNSAxNSA3LjUgNTkuMiA1OC45IDEwNSAxMjEuMSAxMDVoMTMuNmM2Mi4yIDAgMTEzLjYtNDUuOCAxMjEuMS0xMDUgMS04LTUuMy0xNS0xMy41LTE1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xhdWdoU3F1aW50IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZTNDggMzA5LjQgNDggMjU2czIwLjgtMTAzLjYgNTguNi0xNDEuNFMxOTQuNiA1NiAyNDggNTZzMTAzLjYgMjAuOCAxNDEuNCA1OC42UzQ0OCAyMDIuNiA0NDggMjU2cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTM0My42IDE5NmwzMy42LTQwLjNjOC42LTEwLjMtMy44LTI0LjgtMTUuNC0xOGwtODAgNDhjLTcuOCA0LjctNy44IDE1LjkgMCAyMC42bDgwIDQ4YzExLjUgNi44IDI0LTcuNiAxNS40LTE4TDM0My42IDE5NnptLTIwOS40IDU4LjNsODAtNDhjNy44LTQuNyA3LjgtMTUuOSAwLTIwLjZsLTgwLTQ4Yy0xMS42LTYuOS0yNCA3LjctMTUuNCAxOGwzMy42IDQwLjMtMzMuNiA0MC4zYy04LjcgMTAuNCAzLjggMjQuOCAxNS40IDE4ek0zNjIuNCAyODhIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGF1Z2hXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0MS40IDM4OS40Yy0zNy44IDM3LjgtODggNTguNi0xNDEuNCA1OC42cy0xMDMuNi0yMC44LTE0MS40LTU4LjZDNjguOCAzNTkuNiA0OCAzMDkuNCA0OCAyNTZzMjAuOC0xMDMuNiA1OC42LTE0MS40QzE0NC40IDc2LjggMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNmMzNy44IDM3LjggNTguNiA4OCA1OC42IDE0MS40cy0yMC44IDEwMy42LTU4LjYgMTQxLjR6TTMyOCAxNjRjLTI1LjcgMC01NS45IDE2LjktNTkuOSA0Mi4xLTEuNyAxMS4yIDExLjUgMTguMiAxOS44IDEwLjhsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWM4LjUgNy40IDIxLjYuMyAxOS44LTEwLjgtMy44LTI1LjItMzQtNDIuMS01OS43LTQyLjF6bS0xNjAgNjBjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xOTQuNCA2NEgxMzMuNmMtOC4yIDAtMTQuNSA3LTEzLjUgMTUgNy41IDU5LjIgNTguOSAxMDUgMTIxLjEgMTA1aDEzLjZjNjIuMiAwIDExMy42LTQ1LjggMTIxLjEtMTA1IDEtOC01LjMtMTUtMTMuNS0xNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMYXVnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0xNDEuNCAzODkuNGMtMzcuOCAzNy44LTg4IDU4LjYtMTQxLjQgNTguNnMtMTAzLjYtMjAuOC0xNDEuNC01OC42UzQ4IDMwOS40IDQ4IDI1NnMyMC44LTEwMy42IDU4LjYtMTQxLjRTMTk0LjYgNTYgMjQ4IDU2czEwMy42IDIwLjggMTQxLjQgNTguNlM0NDggMjAyLjYgNDQ4IDI1NnMtMjAuOCAxMDMuNi01OC42IDE0MS40ek0zMjggMjI0YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptLTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTk0LjQgNjRIMTMzLjZjLTguMiAwLTE0LjUgNy0xMy41IDE1IDcuNSA1OS4yIDU4LjkgMTA1IDEyMS4xIDEwNWgxMy42YzYyLjIgMCAxMTMuNi00NS44IDEyMS4xLTEwNSAxLTgtNS4zLTE1LTEzLjUtMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGVtb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDg0LjExMiAyNy44ODlDNDU1Ljk4OS0uMjMzIDQxNi4xMDgtOC4wNTcgMzg3LjA1OSA4Ljg2NSAzNDcuNjA0IDMxLjg0OCAyMjMuNTA0LTQxLjExMSA5MS4xOTYgOTEuMTk3LTQxLjI3NyAyMjMuNjcyIDMxLjkyMyAzNDcuNDcyIDguODY2IDM4Ny4wNThjLTE2LjkyMiAyOS4wNTEtOS4xIDY4LjkzMiAxOS4wMjIgOTcuMDU0IDI4LjEzNSAyOC4xMzUgNjguMDExIDM1LjkzOCA5Ny4wNTcgMTkuMDIxIDM5LjQyMy0yMi45NyAxNjMuNTU3IDQ5Ljk2OSAyOTUuODU4LTgyLjMyOSAxMzIuNDc0LTEzMi40NzcgNTkuMjczLTI1Ni4yNzcgODIuMzMxLTI5NS44NjEgMTYuOTIyLTI5LjA1IDkuMS02OC45MzEtMTkuMDIyLTk3LjA1NHptLTIyLjQwNSA3Mi44OTRjLTM4LjggNjYuNjA5IDQ1LjYgMTY1LjYzNS03NC44NDUgMjg2LjA4LTEyMC40NCAxMjAuNDQzLTIxOS40NzUgMzYuMDQ4LTI4Ni4wNzYgNzQuODQzLTIyLjY3OSAxMy4yMDctNjQuMDM1LTI3LjI0MS01MC40OTMtNTAuNDg4IDM4LjgtNjYuNjA5LTQ1LjYtMTY1LjYzNSA3NC44NDUtMjg2LjA4QzI0NS41NzMgNC43MDIgMzQ0LjYxNiA4OS4wODYgNDExLjIxOSA1MC4yOTJjMjIuNzMtMTMuMjQgNjQuMDA1IDI3LjI4OCA1MC40ODggNTAuNDkxem0tMTY5Ljg2MSA4LjczNmMxLjM3IDEwLjk2LTYuNDA0IDIwLjk1Ny0xNy4zNjUgMjIuMzI3LTU0Ljg0NiA2Ljg1NS0xMzUuNzc5IDg3Ljc4Ny0xNDIuNjM1IDE0Mi42MzUtMS4zNzMgMTAuOTg5LTExLjM5OSAxOC43MzQtMjIuMzI2IDE3LjM2NS0xMC45NjEtMS4zNy0xOC43MzUtMTEuMzY2LTE3LjM2NS0yMi4zMjYgOS4xNjItNzMuMjg2IDEwNC4xNjctMTY4LjIxNSAxNzcuMzY1LTE3Ny4zNjUgMTAuOTUzLTEuMzY4IDIwLjk1NiA2LjQwMyAyMi4zMjYgMTcuMzY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ0xpZmVSaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA1MDRjMTM2Ljk2NyAwIDI0OC0xMTEuMDMzIDI0OC0yNDhTMzkyLjk2NyA4IDI1NiA4IDggMTE5LjAzMyA4IDI1NnMxMTEuMDMzIDI0OCAyNDggMjQ4em0tMTAzLjM5OC03Ni43Mmw1My40MTEtNTMuNDExYzMxLjgwNiAxMy41MDYgNjguMTI4IDEzLjUyMiA5OS45NzQgMGw1My40MTEgNTMuNDExYy02My4yMTcgMzguMzE5LTE0My41NzkgMzguMzE5LTIwNi43OTYgMHpNMzM2IDI1NmMwIDQ0LjExMi0zNS44ODggODAtODAgODBzLTgwLTM1Ljg4OC04MC04MCAzNS44ODgtODAgODAtODAgODAgMzUuODg4IDgwIDgwem05MS4yOCAxMDMuMzk4bC01My40MTEtNTMuNDExYzEzLjUwNS0zMS44MDYgMTMuNTIyLTY4LjEyOCAwLTk5Ljk3NGw1My40MTEtNTMuNDExYzM4LjMxOSA2My4yMTcgMzguMzE5IDE0My41NzkgMCAyMDYuNzk2ek0zNTkuMzk3IDg0LjcybC01My40MTEgNTMuNDExYy0zMS44MDYtMTMuNTA1LTY4LjEyOC0xMy41MjItOTkuOTczIDBMMTUyLjYwMiA4NC43MmM2My4yMTctMzguMzE5IDE0My41NzktMzguMzE5IDIwNi43OTUgMHpNODQuNzIgMTUyLjYwMmw1My40MTEgNTMuNDExYy0xMy41MDYgMzEuODA2LTEzLjUyMiA2OC4xMjggMCA5OS45NzRMODQuNzIgMzU5LjM5OGMtMzguMzE5LTYzLjIxNy0zOC4zMTktMTQzLjU3OSAwLTIwNi43OTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCAzNTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE3NiA4MGMtNTIuOTQgMC05NiA0My4wNi05NiA5NiAwIDguODQgNy4xNiAxNiAxNiAxNnMxNi03LjE2IDE2LTE2YzAtMzUuMyAyOC43Mi02NCA2NC02NCA4Ljg0IDAgMTYtNy4xNiAxNi0xNnMtNy4xNi0xNi0xNi0xNnpNOTYuMDYgNDU5LjE3YzAgMy4xNS45MyA2LjIyIDIuNjggOC44NGwyNC41MSAzNi44NGMyLjk3IDQuNDYgNy45NyA3LjE0IDEzLjMyIDcuMTRoNzguODVjNS4zNiAwIDEwLjM2LTIuNjggMTMuMzItNy4xNGwyNC41MS0zNi44NGMxLjc0LTIuNjIgMi42Ny01LjcgMi42OC04Ljg0bC4wNS00My4xOEg5Ni4wMmwuMDQgNDMuMTh6TTE3NiAwQzczLjcyIDAgMCA4Mi45NyAwIDE3NmMwIDQ0LjM3IDE2LjQ1IDg0Ljg1IDQzLjU2IDExNS43OCAxNi42NCAxOC45OSA0Mi43NCA1OC44IDUyLjQyIDkyLjE2di4wNmg0OHYtLjEyYy0uMDEtNC43Ny0uNzItOS41MS0yLjE1LTE0LjA3LTUuNTktMTcuODEtMjIuODItNjQuNzctNjIuMTctMTA5LjY3LTIwLjU0LTIzLjQzLTMxLjUyLTUzLjE1LTMxLjYxLTg0LjE0LS4yLTczLjY0IDU5LjY3LTEyOCAxMjcuOTUtMTI4IDcwLjU4IDAgMTI4IDU3LjQyIDEyOCAxMjggMCAzMC45Ny0xMS4yNCA2MC44NS0zMS42NSA4NC4xNC0zOS4xMSA0NC42MS01Ni40MiA5MS40Ny02Mi4xIDEwOS40NmE0Ny41MDcgNDcuNTA3IDAgMCAwLTIuMjIgMTQuM3YuMWg0OHYtLjA1YzkuNjgtMzMuMzcgMzUuNzgtNzMuMTggNTIuNDItOTIuMTZDMzM1LjU1IDI2MC44NSAzNTIgMjIwLjM3IDM1MiAxNzYgMzUyIDc4LjggMjczLjIgMCAxNzYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdMaXN0QWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoNDE2YzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWODBjMC0yNi41MS0yMS40OS00OC00OC00OHptLTYgNDAwSDU0YTYgNiAwIDAgMS02LTZWODZhNiA2IDAgMCAxIDYtNmg0MDRhNiA2IDAgMCAxIDYgNnYzNDBhNiA2IDAgMCAxLTYgNnptLTQyLTkydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0wLTk2djI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0wLTk2djI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMjA0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEydi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDIwMGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyem0tMjUyIDEyYzAgMTkuODgyLTE2LjExOCAzNi0zNiAzNnMtMzYtMTYuMTE4LTM2LTM2IDE2LjExOC0zNiAzNi0zNiAzNiAxNi4xMTggMzYgMzZ6bTAgOTZjMCAxOS44ODItMTYuMTE4IDM2LTM2IDM2cy0zNi0xNi4xMTgtMzYtMzYgMTYuMTE4LTM2IDM2LTM2IDM2IDE2LjExOCAzNiAzNnptMCA5NmMwIDE5Ljg4Mi0xNi4xMTggMzYtMzYgMzZzLTM2LTE2LjExOC0zNi0zNiAxNi4xMTgtMzYgMzYtMzYgMzYgMTYuMTE4IDM2IDM2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01hcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjAuMDIgMzJjLTEuOTYgMC0zLjk4LjM3LTUuOTYgMS4xNkwzODQuMDEgOTZIMzg0TDIxMiAzNS4yOEE2NC4yNTIgNjQuMjUyIDAgMCAwIDE5MS43NiAzMmMtNi42OSAwLTEzLjM3IDEuMDUtMTkuODEgMy4xNEwyMC4xMiA4Ny45NUEzMi4wMDYgMzIuMDA2IDAgMCAwIDAgMTE3LjY2djM0Ni4zMkMwIDQ3My4xNyA3LjUzIDQ4MCAxNS45OSA0ODBjMS45NiAwIDMuOTctLjM3IDUuOTYtMS4xNkwxOTIgNDE2bDE3MiA2MC43MWE2My45OCA2My45OCAwIDAgMCA0MC4wNS4xNWwxNTEuODMtNTIuODFBMzEuOTk2IDMxLjk5NiAwIDAgMCA1NzYgMzk0LjM0VjQ4LjAyYzAtOS4xOS03LjUzLTE2LjAyLTE1Ljk4LTE2LjAyek0yMjQgOTAuNDJsMTI4IDQ1LjE5djI4NS45N2wtMTI4LTQ1LjE5VjkwLjQyek00OCA0MTguMDVWMTI5LjA3bDEyOC00NC41M3YyODYuMmwtLjY0LjIzTDQ4IDQxOC4wNXptNDgwLTM1LjEzbC0xMjggNDQuNTNWMTQxLjI2bC42NC0uMjRMNTI4IDkzLjk1djI4OC45N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNZWhCbGFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yODBjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem0xNjAgMGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTWVoUm9sbGluZ0V5ZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ5NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjQ4IDhDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTExMC4zIDAtMjAwLTg5LjctMjAwLTIwMFMxMzcuNyA1NiAyNDggNTZzMjAwIDg5LjcgMjAwIDIwMC04OS43IDIwMC0yMDAgMjAwem04OC0zMDRjLTM5LjggMC03MiAzMi4yLTcyIDcyczMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03Mi0zMi4yLTcyLTcyLTcyem0wIDExMmMtMjIuMSAwLTQwLTE3LjktNDAtNDAgMC0xMy42IDcuMy0yNS4xIDE3LjctMzIuMy0xIDIuNi0xLjcgNS4zLTEuNyA4LjMgMCAxMy4zIDEwLjcgMjQgMjQgMjRzMjQtMTAuNyAyNC0yNGMwLTIuOS0uNy01LjctMS43LTguMyAxMC40IDcuMiAxNy43IDE4LjcgMTcuNyAzMi4zIDAgMjIuMS0xNy45IDQwLTQwIDQwem0tMTA0LTQwYzAtMzkuOC0zMi4yLTcyLTcyLTcycy03MiAzMi4yLTcyIDcyIDMyLjIgNzIgNzIgNzIgNzItMzIuMiA3Mi03MnptLTExMiAwYzAtMTMuNiA3LjMtMjUuMSAxNy43LTMyLjMtMSAyLjYtMS43IDUuMy0xLjcgOC4zIDAgMTMuMyAxMC43IDI0IDI0IDI0czI0LTEwLjcgMjQtMjRjMC0yLjktLjctNS43LTEuNy04LjMgMTAuNCA3LjIgMTcuNyAxOC43IDE3LjcgMzIuMyAwIDIyLjEtMTcuOSA0MC00MCA0MHMtNDAtMTcuOS00MC00MHptMTkyIDEyOEgxODRjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTI4YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01laCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bS04MC0yMTZjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzItMzIgMTQuMy0zMiAzMiAxNC4zIDMyIDMyIDMyem0xNjAtNjRjLTE3LjcgMC0zMiAxNC4zLTMyIDMyczE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMi0xNC4zLTMyLTMyLTMyem04IDE0NEgxNjBjLTEzLjIgMC0yNCAxMC44LTI0IDI0czEwLjggMjQgMjQgMjRoMTc2YzEzLjIgMCAyNC0xMC44IDI0LTI0cy0xMC44LTI0LTI0LTI0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ01pbnVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwOCAyODRjLTYuNiAwLTEyLTUuNC0xMi0xMnYtMzJjMC02LjYgNS40LTEyIDEyLTEyaDIzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2MzJjMCA2LjYtNS40IDEyLTEyIDEySDEwOHpNNDQ4IDgwdjM1MmMwIDI2LjUtMjEuNSA0OC00OCA0OEg0OGMtMjYuNSAwLTQ4LTIxLjUtNDgtNDhWODBjMC0yNi41IDIxLjUtNDggNDgtNDhoMzUyYzI2LjUgMCA0OCAyMS41IDQ4IDQ4em0tNDggMzQ2Vjg2YzAtMy4zLTIuNy02LTYtNkg1NGMtMy4zIDAtNiAyLjctNiA2djM0MGMwIDMuMyAyLjcgNiA2IDZoMzQwYzMuMyAwIDYtMi43IDYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNb25leUJpbGxBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDY0MCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzIwIDE0NGMtNTMuMDIgMC05NiA1MC4xNC05NiAxMTIgMCA2MS44NSA0Mi45OCAxMTIgOTYgMTEyIDUzIDAgOTYtNTAuMTMgOTYtMTEyIDAtNjEuODYtNDIuOTgtMTEyLTk2LTExMnptNDAgMTY4YzAgNC40Mi0zLjU4IDgtOCA4aC02NGMtNC40MiAwLTgtMy41OC04LTh2LTE2YzAtNC40MiAzLjU4LTggOC04aDE2di01NS40NGwtLjQ3LjMxYTcuOTkyIDcuOTkyIDAgMCAxLTExLjA5LTIuMjJsLTguODgtMTMuMzFhNy45OTIgNy45OTIgMCAwIDEgMi4yMi0xMS4wOWwxNS4zMy0xMC4yMmEyMy45OSAyMy45OSAwIDAgMSAxMy4zMS00LjAzSDMyOGM0LjQyIDAgOCAzLjU4IDggOHY4OGgxNmM0LjQyIDAgOCAzLjU4IDggOHYxNnpNNjA4IDY0SDMyQzE0LjMzIDY0IDAgNzguMzMgMCA5NnYzMjBjMCAxNy42NyAxNC4zMyAzMiAzMiAzMmg1NzZjMTcuNjcgMCAzMi0xNC4zMyAzMi0zMlY5NmMwLTE3LjY3LTE0LjMzLTMyLTMyLTMyem0tMTYgMjcyYy0zNS4zNSAwLTY0IDI4LjY1LTY0IDY0SDExMmMwLTM1LjM1LTI4LjY1LTY0LTY0LTY0VjE3NmMzNS4zNSAwIDY0LTI4LjY1IDY0LTY0aDQxNmMwIDM1LjM1IDI4LjY1IDY0IDY0IDY0djE2MHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI3OS4xMzUgNTEyYzc4Ljc1NiAwIDE1MC45ODItMzUuODA0IDE5OC44NDQtOTQuNzc1IDI4LjI3LTM0LjgzMS0yLjU1OC04NS43MjItNDYuMjQ5LTc3LjQwMS04Mi4zNDggMTUuNjgzLTE1OC4yNzItNDcuMjY4LTE1OC4yNzItMTMwLjc5MiAwLTQ4LjQyNCAyNi4wNi05Mi4yOTIgNjcuNDM0LTExNS44MzYgMzguNzQ1LTIyLjA1IDI4Ljk5OS04MC43ODgtMTUuMDIyLTg4LjkxOUEyNTcuOTM2IDI1Ny45MzYgMCAwIDAgMjc5LjEzNSAwYy0xNDEuMzYgMC0yNTYgMTE0LjU3NS0yNTYgMjU2IDAgMTQxLjM2IDExNC41NzYgMjU2IDI1NiAyNTZ6bTAtNDY0YzEyLjk4NSAwIDI1LjY4OSAxLjIwMSAzOC4wMTYgMy40NzgtNTQuNzYgMzEuMTYzLTkxLjY5MyA5MC4wNDItOTEuNjkzIDE1Ny41NTQgMCAxMTMuODQ4IDEwMy42NDEgMTk5LjIgMjE1LjI1MiAxNzcuOTQ0QzQwMi41NzQgNDMzLjk2NCAzNDQuMzY2IDQ2NCAyNzkuMTM1IDQ2NGMtMTE0Ljg3NSAwLTIwOC05My4xMjUtMjA4LTIwOHM5My4xMjUtMjA4IDIwOC0yMDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU1MiA2NEgxMTJjLTIwLjg1OCAwLTM4LjY0MyAxMy4zNzctNDUuMjQ4IDMySDI0Yy0xMy4yNTUgMC0yNCAxMC43NDUtMjQgMjR2MjcyYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1Nmg0OTZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0Vjg4YzAtMTMuMjU1LTEwLjc0NS0yNC0yNC0yNHpNNDggMzkyVjE0NGgxNnYyNDhjMCA0LjQxMS0zLjU4OSA4LTggOHMtOC0zLjU4OS04LTh6bTQ4MCA4SDExMS40MjJjLjM3NC0yLjYxNC41NzgtNS4yODMuNTc4LThWMTEyaDQxNnYyODh6TTE3MiAyODBoMTM2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjk2YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJ6bTI4LTgwaDgwdjQwaC04MHYtNDB6bS00MCAxNDB2LTI0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTM2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgxNzJjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTE5MiAwdi0yNGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDEwNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzY0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wLTE0NHYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnptMCA3MnYtMjRjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxMDRjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDM2NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdPYmplY3RHcm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDAgMTI4YzYuNjI3IDAgMTItNS4zNzMgMTItMTJWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtNzJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZWNDRjMC02LjYyNy01LjM3My0xMi0xMi0xMkgxMkM1LjM3MyAzMiAwIDM3LjM3MyAwIDQ0djcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2SDEyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjcyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoNzJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtNzJjMC02LjYyNy01LjM3My0xMi0xMi0xMmgtMTJWMTI4aDEyem0tNTItNjRoMzJ2MzJoLTMyVjY0ek0zMiA2NGgzMnYzMkgzMlY2NHptMzIgMzg0SDMydi0zMmgzMnYzMnptNDE2IDBoLTMydi0zMmgzMnYzMnptLTQwLTY0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NnYtMTJjMC02LjYyNy01LjM3My0xMi0xMi0xMkg3MlYxMjhoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnYtMTJoMzIwdjEyYzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTJ2MjU2em0tMzYtMTkyaC04NHYtNTJjMC02LjYyOC01LjM3My0xMi0xMi0xMkgxMDhjLTYuNjI3IDAtMTIgNS4zNzItMTIgMTJ2MTY4YzAgNi42MjggNS4zNzMgMTIgMTIgMTJoODR2NTJjMCA2LjYyOCA1LjM3MyAxMiAxMiAxMmgyMDBjNi42MjcgMCAxMi01LjM3MiAxMi0xMlYyMDRjMC02LjYyOC01LjM3My0xMi0xMi0xMnptLTI2OC0yNGgxNDR2MTEySDEzNlYxNjh6bTI0MCAxNzZIMjMydi0yNGg3NmM2LjYyNyAwIDEyLTUuMzcyIDEyLTEydi03Nmg1NnYxMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnT2JqZWN0VW5ncm91cCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01NjQgMjI0YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTcyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjEyaC04OHYtMjRoMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC03MmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkg5NlY0NGMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDEyQzUuMzczIDMyIDAgMzcuMzczIDAgNDR2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMnYxNjBIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xMmg4OHYyNGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2NzJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi0xMmgyMjR2MTJjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmg3MmM2LjYyNyAwIDEyLTUuMzczIDEyLTEydi03MmMwLTYuNjI3LTUuMzczLTEyLTEyLTEyaC0xMlYyMjRoMTJ6TTM1MiA2NGgzMnYzMmgtMzJWNjR6bTAgMjU2aDMydjMyaC0zMnYtMzJ6TTY0IDM1MkgzMnYtMzJoMzJ2MzJ6bTAtMjU2SDMyVjY0aDMydjMyem0zMiAyMTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJINzJWMTI4aDEyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTEyaDIyNHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MGgtMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MTJIOTZ6bTEyOCAxMzZoLTMydi0zMmgzMnYzMnptMjgwLTY0aC0xMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYxMkgyNTZ2LTEyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEydi0yNGg4OHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDcyYzYuNjI3IDAgMTItNS4zNzMgMTItMTJ2LTcyYzAtNi42MjctNS4zNzMtMTItMTItMTJoLTEydi04OGg4OHYxMmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDEydjE2MHptNDAgNjRoLTMydi0zMmgzMnYzMnptMC0yNTZoLTMydi0zMmgzMnYzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQYXBlclBsYW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ0MCA2LjVMMjQgMjQ2LjRjLTM0LjQgMTkuOS0zMS4xIDcwLjggNS43IDg1LjlMMTQ0IDM3OS42VjQ2NGMwIDQ2LjQgNTkuMiA2NS41IDg2LjYgMjguNmw0My44LTU5LjEgMTExLjkgNDYuMmM1LjkgMi40IDEyLjEgMy42IDE4LjMgMy42IDguMiAwIDE2LjMtMi4xIDIzLjYtNi4yIDEyLjgtNy4yIDIxLjYtMjAgMjMuOS0zNC41bDU5LjQtMzg3LjJjNi4xLTQwLjEtMzYuOS02OC44LTcxLjUtNDguOXpNMTkyIDQ2NHYtNjQuNmwzNi42IDE1LjFMMTkyIDQ2NHptMjEyLjYtMjguN2wtMTUzLjgtNjMuNUwzOTEgMTY5LjVjMTAuNy0xNS41LTkuNS0zMy41LTIzLjctMjEuMkwxNTUuOCAzMzIuNiA0OCAyODggNDY0IDQ4bC01OS40IDM4Ny4zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BhdXNlQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOSA4IDggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzkzIDggMjU2IDh6bTAgNDQ4Yy0xMTAuNSAwLTIwMC04OS41LTIwMC0yMDBTMTQ1LjUgNTYgMjU2IDU2czIwMCA4OS41IDIwMCAyMDAtODkuNSAyMDAtMjAwIDIwMHptOTYtMjgwdjE2MGMwIDguOC03LjIgMTYtMTYgMTZoLTQ4Yy04LjggMC0xNi03LjItMTYtMTZWMTc2YzAtOC44IDcuMi0xNiAxNi0xNmg0OGM4LjggMCAxNiA3LjIgMTYgMTZ6bS0xMTIgMHYxNjBjMCA4LjgtNy4yIDE2LTE2IDE2aC00OGMtOC44IDAtMTYtNy4yLTE2LTE2VjE3NmMwLTguOCA3LjItMTYgMTYtMTZoNDhjOC44IDAgMTYgNy4yIDE2IDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1BsYXlDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMzcxLjcgMjM4bC0xNzYtMTA3Yy0xNS44LTguOC0zNS43IDIuNS0zNS43IDIxdjIwOGMwIDE4LjQgMTkuOCAyOS44IDM1LjcgMjFsMTc2LTEwMWMxNi40LTkuMSAxNi40LTMyLjggMC00MnpNNTA0IDI1NkM1MDQgMTE5IDM5MyA4IDI1NiA4UzggMTE5IDggMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDh6bS00NDggMGMwLTExMC41IDg5LjUtMjAwIDIwMC0yMDBzMjAwIDg5LjUgMjAwIDIwMC04OS41IDIwMC0yMDAgMjAwUzU2IDM2Ni41IDU2IDI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdQbHVzU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTM1MiAyNDB2MzJjMCA2LjYtNS40IDEyLTEyIDEyaC04OHY4OGMwIDYuNi01LjQgMTItMTIgMTJoLTMyYy02LjYgMC0xMi01LjQtMTItMTJ2LTg4aC04OGMtNi42IDAtMTItNS40LTEyLTEydi0zMmMwLTYuNiA1LjQtMTIgMTItMTJoODh2LTg4YzAtNi42IDUuNC0xMiAxMi0xMmgzMmM2LjYgMCAxMiA1LjQgMTIgMTJ2ODhoODhjNi42IDAgMTIgNS40IDEyIDEyem05Ni0xNjB2MzUyYzAgMjYuNS0yMS41IDQ4LTQ4IDQ4SDQ4Yy0yNi41IDAtNDgtMjEuNS00OC00OFY4MGMwLTI2LjUgMjEuNS00OCA0OC00OGgzNTJjMjYuNSAwIDQ4IDIxLjUgNDggNDh6bS00OCAzNDZWODZjMC0zLjMtMi43LTYtNi02SDU0Yy0zLjMgMC02IDIuNy02IDZ2MzQwYzAgMy4zIDIuNyA2IDYgNmgzNDBjMy4zIDAgNi0yLjcgNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1F1ZXN0aW9uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wNDMgOCA4IDExOS4wODMgOCAyNTZjMCAxMzYuOTk3IDExMS4wNDMgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMDMgMjQ4LTI0OEM1MDQgMTE5LjA4MyAzOTIuOTU3IDggMjU2IDh6bTAgNDQ4Yy0xMTAuNTMyIDAtMjAwLTg5LjQzMS0yMDAtMjAwIDAtMTEwLjQ5NSA4OS40NzItMjAwIDIwMC0yMDAgMTEwLjQ5MSAwIDIwMCA4OS40NzEgMjAwIDIwMCAwIDExMC41My04OS40MzEgMjAwLTIwMCAyMDB6bTEwNy4yNDQtMjU1LjJjMCA2Ny4wNTItNzIuNDIxIDY4LjA4NC03Mi40MjEgOTIuODYzVjMwMGMwIDYuNjI3LTUuMzczIDEyLTEyIDEyaC00NS42NDdjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ2LTguNjU5YzAtMzUuNzQ1IDI3LjEtNTAuMDM0IDQ3LjU3OS02MS41MTYgMTcuNTYxLTkuODQ1IDI4LjMyNC0xNi41NDEgMjguMzI0LTI5LjU3OSAwLTE3LjI0Ni0yMS45OTktMjguNjkzLTM5Ljc4NC0yOC42OTMtMjMuMTg5IDAtMzMuODk0IDEwLjk3Ny00OC45NDIgMjkuOTY5LTQuMDU3IDUuMTItMTEuNDYgNi4wNzEtMTYuNjY2IDIuMTI0bC0yNy44MjQtMjEuMDk4Yy01LjEwNy0zLjg3Mi02LjI1MS0xMS4wNjYtMi42NDQtMTYuMzYzQzE4NC44NDYgMTMxLjQ5MSAyMTQuOTQgMTEyIDI2MS43OTQgMTEyYzQ5LjA3MSAwIDEwMS40NSAzOC4zMDQgMTAxLjQ1IDg4Ljh6TTI5OCAzNjhjMCAyMy4xNTktMTguODQxIDQyLTQyIDQycy00Mi0xOC44NDEtNDItNDIgMTguODQxLTQyIDQyLTQyIDQyIDE4Ljg0MSA0MiA0MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdSZWdpc3RlcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI1NiA4QzExOS4wMzMgOCA4IDExOS4wMzMgOCAyNTZzMTExLjAzMyAyNDggMjQ4IDI0OCAyNDgtMTExLjAzMyAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOHptMCA0NDhjLTExMC41MzIgMC0yMDAtODkuNDUxLTIwMC0yMDAgMC0xMTAuNTMxIDg5LjQ1MS0yMDAgMjAwLTIwMCAxMTAuNTMyIDAgMjAwIDg5LjQ1MSAyMDAgMjAwIDAgMTEwLjUzMi04OS40NTEgMjAwLTIwMCAyMDB6bTExMC40NDItODEuNzkxYy01My4wNDYtOTYuMjg0LTUwLjI1LTkxLjQ2OC01My4yNzEtOTYuMDg1IDI0LjI2Ny0xMy44NzkgMzkuNDgyLTQxLjU2MyAzOS40ODItNzMuMTc2IDAtNTIuNTAzLTMwLjI0Ny04NS4yNTItMTAxLjQ5OC04NS4yNTJoLTc4LjY2N2MtNi42MTcgMC0xMiA1LjM4My0xMiAxMlYzODBjMCA2LjYxNyA1LjM4MyAxMiAxMiAxMmgzOC41NjhjNi42MTcgMCAxMi01LjM4MyAxMi0xMnYtODMuNjYzaDMxLjk1OGw0Ny41MTUgODkuMzAzYTExLjk4IDExLjk4IDAgMCAwIDEwLjU5MyA2LjM2aDQyLjgxYzkuMTQgMCAxNC45MTQtOS43OTkgMTAuNTEtMTcuNzkxek0yNTYuOTMzIDIzOS45MDZoLTMzLjg3NXYtNjQuMTRoMjcuMzc3YzMyLjQxNyAwIDM4LjkyOSAxMi4xMzMgMzguOTI5IDMxLjcwOS0uMDAxIDIwLjkxMy0xMS41MTggMzIuNDMxLTMyLjQzMSAzMi40MzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkQ3J5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTE0NCAzODYuNFYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTUxLjRDMzE1LjUgNDQ3IDI4Mi44IDQ1NiAyNDggNDU2cy02Ny41LTktOTYtMjQuNlYyODBjMC0xMy4yLTEwLjgtMjQtMjQtMjRzLTI0IDEwLjgtMjQgMjR2MTE0LjRjLTM0LjYtMzYtNTYtODQuNy01Ni0xMzguNCAwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDUzLjctMjEuNCAxMDIuNS01NiAxMzguNHpNMjA1LjggMjM0LjVjNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTQtMjUuMi0zNC4yLTQyLjEtNTkuOC00Mi4xcy01NS45IDE2LjktNTkuOCA0Mi4xYy0uOCA1IDEuNyAxMCA2LjEgMTIuNCA0LjQgMi40IDkuOSAxLjggMTMuNy0xLjZsOS41LTguNWMxNC44LTEzLjIgNDYuMi0xMy4yIDYxIDBsOS41IDguNWMyLjUgMi4zIDcuOSA0LjggMTMuNyAxLjZ6TTM0NCAxODBjLTI1LjcgMC01NS45IDE2LjktNTkuOCA0Mi4xLS44IDUgMS43IDEwIDYuMSAxMi40IDQuNSAyLjQgOS45IDEuOCAxMy43LTEuNmw5LjUtOC41YzE0LjgtMTMuMiA0Ni4yLTEzLjIgNjEgMGw5LjUgOC41YzIuNSAyLjIgOCA0LjcgMTMuNyAxLjYgNC40LTIuNCA2LjktNy40IDYuMS0xMi40LTMuOS0yNS4yLTM0LjEtNDIuMS01OS44LTQyLjF6bS05NiA5MmMtMzAuOSAwLTU2IDI4LjctNTYgNjRzMjUuMSA2NCA1NiA2NCA1Ni0yOC43IDU2LTY0LTI1LjEtNjQtNTYtNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2FkVGVhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTgtMTUyYy0xMy4yIDAtMjQgMTAuOC0yNCAyNHMxMC44IDI0IDI0IDI0YzIzLjggMCA0Ni4zIDEwLjUgNjEuNiAyOC44IDguMSA5LjggMjMuMiAxMS45IDMzLjggMy4xIDEwLjItOC41IDExLjYtMjMuNiAzLjEtMzMuOEMzMzAgMzIwLjggMjk0LjEgMzA0IDI1NiAzMDR6bS04OC02NGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MC02NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJzMTQuMyAzMiAzMiAzMiAzMi0xNC4zIDMyLTMyLTE0LjMtMzItMzItMzJ6bS0xNjUuNiA5OC44QzE1MSAyOTAuMSAxMjYgMzI1LjQgMTI2IDM0Mi45YzAgMjIuNyAxOC44IDQxLjEgNDIgNDEuMXM0Mi0xOC40IDQyLTQxLjFjMC0xNy41LTI1LTUyLjgtMzYuNC02OC4xLTIuOC0zLjctOC40LTMuNy0xMS4yIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00MzMuOTQxIDEyOS45NDFsLTgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgMzE2LjExOCAzMkg0OEMyMS40OSAzMiAwIDUzLjQ5IDAgODB2MzUyYzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMzUyYzI2LjUxIDAgNDgtMjEuNDkgNDgtNDhWMTYzLjg4MmE0OCA0OCAwIDAgMC0xNC4wNTktMzMuOTQxek0yNzIgODB2ODBIMTQ0VjgwaDEyOHptMTIyIDM1Mkg1NGE2IDYgMCAwIDEtNi02Vjg2YTYgNiAwIDAgMSA2LTZoNDJ2MTA0YzAgMTMuMjU1IDEwLjc0NSAyNCAyNCAyNGgxNzZjMTMuMjU1IDAgMjQtMTAuNzQ1IDI0LTI0VjgzLjg4Mmw3OC4yNDMgNzguMjQzYTYgNiAwIDAgMSAxLjc1NyA0LjI0M1Y0MjZhNiA2IDAgMCAxLTYgNnpNMjI0IDIzMmMtNDguNTIzIDAtODggMzkuNDc3LTg4IDg4czM5LjQ3NyA4OCA4OCA4OCA4OC0zOS40NzcgODgtODgtMzkuNDc3LTg4LTg4LTg4em0wIDEyOGMtMjIuMDU2IDAtNDAtMTcuOTQ0LTQwLTQwczE3Ljk0NC00MCA0MC00MCA0MCAxNy45NDQgNDAgNDAtMTcuOTQ0IDQwLTQwIDQwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NoYXJlU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1NzYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTU2MS45MzggMTU4LjA2TDQxNy45NCAxNC4wOTJDMzg3LjkyNi0xNS45MjIgMzM2IDUuMDk3IDMzNiA0OC4wMzJ2NTcuMTk4Yy00Mi40NSAxLjg4LTg0LjAzIDYuNTUtMTIwLjc2IDE3Ljk5LTM1LjE3IDEwLjk1LTYzLjA3IDI3LjU4LTgyLjkxIDQ5LjQyQzEwOC4yMiAxOTkuMiA5NiAyMzIuNiA5NiAyNzEuOTRjMCA2MS42OTcgMzMuMTc4IDExMi40NTUgODQuODcgMTQ0Ljc2IDM3LjU0NiAyMy41MDggODUuMjQ4LTEyLjY1MSA3MS4wMi01NS43NC0xNS41MTUtNDcuMTE5LTE3LjE1Ni03MC45MjMgODQuMTEtNzguNzZWMzM2YzAgNDIuOTkzIDUxLjk2OCA2My45MTMgODEuOTQgMzMuOTRsMTQzLjk5OC0xNDRjMTguNzUtMTguNzQgMTguNzUtNDkuMTQgMC02Ny44OHpNMzg0IDMzNlYyMzIuMTZDMjU1LjMwOSAyMzQuMDgyIDE2Ni40OTIgMjU1LjM1IDIwNi4zMSAzNzYgMTc2Ljc5IDM1Ny41NSAxNDQgMzI0LjA4IDE0NCAyNzEuOTRjMC0xMDkuMzM0IDEyOS4xNC0xMTguOTQ3IDI0MC0xMTkuODVWNDhsMTQ0IDE0NC0xNDQgMTQ0em0yNC43NCA4NC40OTNhODIuNjU4IDgyLjY1OCAwIDAgMCAyMC45NzQtOS4zMDNjNy45NzYtNC45NTIgMTguMjg2LjgyNiAxOC4yODYgMTAuMjE0VjQ2NGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDEzMmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjQuNDg2YzAgNC45MTctMi45ODcgOS4zNjktNy41NjkgMTEuMTUyLTEzLjcwMiA1LjMzMS0yNi4zOTYgMTEuNTM3LTM4LjA1IDE4LjU4NWExMi4xMzggMTIuMTM4IDAgMCAxLTYuMjggMS43NzdINTRhNiA2IDAgMCAwLTYgNnYzNDBhNiA2IDAgMCAwIDYgNmgzNDBhNiA2IDAgMCAwIDYtNnYtMjUuOTY2YzAtNS4zNyAzLjU3OS0xMC4wNTkgOC43NC0xMS41NDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU21pbGVCZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptODQtMTQzLjRjLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy42LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44LTEwLjItOC40LTI1LjMtNy4xLTMzLjggMy4xek0xMzYuNSAyMTFjNy43LTEzLjcgMTkuMi0yMS42IDMxLjUtMjEuNnMyMy44IDcuOSAzMS41IDIxLjZsOS41IDE3YzIuMSAzLjcgNi4yIDQuNyA5LjMgMy43IDMuNi0xLjEgNi00LjUgNS43LTguMy0zLjMtNDIuMS0zMi4yLTcxLjQtNTYtNzEuNHMtNTIuNyAyOS4zLTU2IDcxLjRjLS4zIDMuNyAyLjEgNy4yIDUuNyA4LjMgMy40IDEuMSA3LjQtLjUgOS4zLTMuN2w5LjUtMTd6TTMyOCAxNTJjLTIzLjggMC01Mi43IDI5LjMtNTYgNzEuNC0uMyAzLjcgMi4xIDcuMiA1LjcgOC4zIDMuNSAxLjEgNy40LS41IDkuMy0zLjdsOS41LTE3YzcuNy0xMy43IDE5LjItMjEuNiAzMS41LTIxLjZzMjMuOCA3LjkgMzEuNSAyMS42bDkuNSAxN2MyLjEgMy43IDYuMiA0LjcgOS4zIDMuNyAzLjYtMS4xIDYtNC41IDUuNy04LjMtMy4zLTQyLjEtMzIuMi03MS40LTU2LTcxLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU21pbGVXaW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTE3LjgtMTQ2LjRjLTEwLjItOC41LTI1LjMtNy4xLTMzLjggMy4xLTIwLjggMjUtNTEuNSAzOS40LTg0IDM5LjRzLTYzLjItMTQuMy04NC0zOS40Yy04LjUtMTAuMi0yMy43LTExLjUtMzMuOC0zLjEtMTAuMiA4LjUtMTEuNSAyMy42LTMuMSAzMy44IDMwIDM2IDc0LjEgNTYuNiAxMjAuOSA1Ni42czkwLjktMjAuNiAxMjAuOS01Ni42YzguNS0xMC4yIDcuMS0yNS4zLTMuMS0zMy44ek0xNjggMjQwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptMTYwLTYwYy0yNS43IDAtNTUuOSAxNi45LTU5LjkgNDIuMS0xLjcgMTEuMiAxMS41IDE4LjIgMTkuOCAxMC44bDkuNS04LjVjMTQuOC0xMy4yIDQ2LjItMTMuMiA2MSAwbDkuNSA4LjVjOC41IDcuNCAyMS42LjMgMTkuOC0xMC44LTMuOC0yNS4yLTM0LTQyLjEtNTkuNy00Mi4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1NtaWxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptLTgwLTIxNmMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMi0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzJ6bTE2MCAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMyLTMyIDE0LjMtMzIgMzIgMTQuMyAzMiAzMiAzMnptNCA3Mi42Yy0yMC44IDI1LTUxLjUgMzkuNC04NCAzOS40cy02My4yLTE0LjMtODQtMzkuNGMtOC41LTEwLjItMjMuNy0xMS41LTMzLjgtMy4xLTEwLjIgOC41LTExLjUgMjMuNi0zLjEgMzMuOCAzMCAzNiA3NC4xIDU2LjYgMTIwLjkgNTYuNnM5MC45LTIwLjYgMTIwLjktNTYuNmM4LjUtMTAuMiA3LjEtMjUuMy0zLjEtMzMuOC0xMC4xLTguNC0yNS4zLTcuMS0zMy44IDMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTbm93Zmxha2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDQwLjEgMzU1LjJsLTM5LjItMjMgMzQuMS05LjNjOC40LTIuMyAxMy40LTExLjEgMTEuMS0xOS42bC00LjEtMTUuNWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDM0MyAyOTguMiAyNzEuMiAyNTZsNzEuOS00Mi4yIDc5LjcgMjEuN2M4LjQgMi4zIDE3LTIuOCAxOS4zLTExLjNsNC4xLTE1LjVjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTM0LjEtOS4zIDM5LjItMjNjNy41LTQuNCAxMC4xLTE0LjIgNS44LTIxLjlsLTcuOS0xMy45Yy00LjMtNy43LTE0LTEwLjMtMjEuNS01LjlsLTM5LjIgMjMgOS4xLTM0LjdjMi4yLTguNS0yLjctMTcuMy0xMS4xLTE5LjZsLTE1LjItNC4xYy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTIxLjMgODEtNzEuOSA0Mi4ydi04NC41TDMwNiA3MC40YzYuMS02LjIgNi4xLTE2LjQgMC0yMi42bC0xMS4xLTExLjNjLTYuMS02LjItMTYuMS02LjItMjIuMiAwbC0yNC45IDI1LjRWMTZjMC04LjgtNy0xNi0xNS43LTE2aC0xNS43Yy04LjcgMC0xNS43IDcuMi0xNS43IDE2djQ2LjFsLTI0LjktMjUuNGMtNi4xLTYuMi0xNi4xLTYuMi0yMi4yIDBMMTQyLjEgNDhjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDU4LjMgNTkuM3Y4NC41bC03MS45LTQyLjItMjEuMy04MWMtMi4yLTguNS0xMC45LTEzLjYtMTkuMy0xMS4zTDcyLjcgODRjLTguNCAyLjMtMTMuNCAxMS4xLTExLjEgMTkuNmw5LjEgMzQuNy0zOS4yLTIzYy03LjUtNC40LTE3LjEtMS44LTIxLjUgNS45bC03LjkgMTMuOWMtNC4zIDcuNy0xLjggMTcuNCA1LjggMjEuOWwzOS4yIDIzLTM0LjEgOS4xYy04LjQgMi4zLTEzLjQgMTEuMS0xMS4xIDE5LjZMNiAyMjQuMmMyLjIgOC41IDEwLjkgMTMuNiAxOS4zIDExLjNsNzkuNy0yMS43IDcxLjkgNDIuMi03MS45IDQyLjItNzkuNy0yMS43Yy04LjQtMi4zLTE3IDIuOC0xOS4zIDExLjNsLTQuMSAxNS41Yy0yLjIgOC41IDIuNyAxNy4zIDExLjEgMTkuNmwzNC4xIDkuMy0zOS4yIDIzYy03LjUgNC40LTEwLjEgMTQuMi01LjggMjEuOUwxMCAzOTFjNC4zIDcuNyAxNCAxMC4zIDIxLjUgNS45bDM5LjItMjMtOS4xIDM0LjdjLTIuMiA4LjUgMi43IDE3LjMgMTEuMSAxOS42bDE1LjIgNC4xYzguNCAyLjMgMTctMi44IDE5LjMtMTEuM2wyMS4zLTgxIDcxLjktNDIuMnY4NC41bC01OC4zIDU5LjNjLTYuMSA2LjItNi4xIDE2LjQgMCAyMi42bDExLjEgMTEuM2M2LjEgNi4yIDE2LjEgNi4yIDIyLjIgMGwyNC45LTI1LjRWNDk2YzAgOC44IDcgMTYgMTUuNyAxNmgxNS43YzguNyAwIDE1LjctNy4yIDE1LjctMTZ2LTQ2LjFsMjQuOSAyNS40YzYuMSA2LjIgMTYuMSA2LjIgMjIuMiAwbDExLjEtMTEuM2M2LjEtNi4yIDYuMS0xNi40IDAtMjIuNmwtNTguMy01OS4zdi04NC41bDcxLjkgNDIuMiAyMS4zIDgxYzIuMiA4LjUgMTAuOSAxMy42IDE5LjMgMTEuM0wzNzUgNDI4YzguNC0yLjMgMTMuNC0xMS4xIDExLjEtMTkuNmwtOS4xLTM0LjcgMzkuMiAyM2M3LjUgNC40IDE3LjEgMS44IDIxLjUtNS45bDcuOS0xMy45YzQuNi03LjUgMi4xLTE3LjMtNS41LTIxLjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0NDggNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQwMCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGgzNTJjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS02IDQwMEg1NGMtMy4zIDAtNi0yLjctNi02Vjg2YzAtMy4zIDIuNy02IDYtNmgzNDBjMy4zIDAgNiAyLjcgNiA2djM0MGMwIDMuMy0yLjcgNi02IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhckhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDU3NiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjg4IDM4NS4zbC0xMjQuMyA2NS40IDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjZWMGMtMTEuNCAwLTIyLjggNS45LTI4LjcgMTcuOEwxOTQgMTUwLjIgNDcuOSAxNzEuNGMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4xIDIzIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZ2LTU0LjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTc2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MjguMSAxNzEuNUwzODIgMTUwLjIgMzE2LjcgMTcuOGMtMTEuNy0yMy42LTQ1LjYtMjMuOS01Ny40IDBMMTk0IDE1MC4yIDQ3LjkgMTcxLjVjLTI2LjIgMy44LTM2LjcgMzYuMS0xNy43IDU0LjZsMTA1LjcgMTAzLTI1IDE0NS41Yy00LjUgMjYuMyAyMy4yIDQ2IDQ2LjQgMzMuN0wyODggNDM5LjZsMTMwLjcgNjguN2MyMy4yIDEyLjIgNTAuOS03LjQgNDYuNC0zMy43bC0yNS0xNDUuNSAxMDUuNy0xMDNjMTktMTguNSA4LjUtNTAuOC0xNy43LTU0LjZ6TTM4OC42IDMxMi4zbDIzLjcgMTM4LjRMMjg4IDM4NS40bC0xMjQuMyA2NS4zIDIzLjctMTM4LjQtMTAwLjYtOTggMTM5LTIwLjIgNjIuMi0xMjYgNjIuMiAxMjYgMTM5IDIwLjItMTAwLjYgOTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RpY2t5Tm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NDggMzQ4LjEwNlY4MGMwLTI2LjUxLTIxLjQ5LTQ4LTQ4LTQ4SDQ4QzIxLjQ5IDMyIDAgNTMuNDkgMCA4MHYzNTEuOTg4YzAgMjYuNTEgMjEuNDkgNDggNDggNDhoMjY4LjExOGE0OCA0OCAwIDAgMCAzMy45NDEtMTQuMDU5bDgzLjg4Mi04My44ODJBNDggNDggMCAwIDAgNDQ4IDM0OC4xMDZ6bS0xMjggODB2LTc2LjExOGg3Ni4xMThMMzIwIDQyOC4xMDZ6TTQwMCA4MHYyMjMuOTg4SDI5NmMtMTMuMjU1IDAtMjQgMTAuNzQ1LTI0IDI0djEwNEg0OFY4MGgzNTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01MDQgMjU2QzUwNCAxMTkgMzkzIDggMjU2IDhTOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OHptLTQ0OCAwYzAtMTEwLjUgODkuNS0yMDAgMjAwLTIwMHMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDBTNTYgMzY2LjUgNTYgMjU2em0yOTYtODB2MTYwYzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnU3VuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ5NC4yIDIyMS45bC01OS44LTQwLjUgMTMuNy03MWMyLjYtMTMuMi0xLjYtMjYuOC0xMS4xLTM2LjQtOS42LTkuNS0yMy4yLTEzLjctMzYuMi0xMS4xbC03MC45IDEzLjctNDAuNC01OS45Yy0xNS4xLTIyLjMtNTEuOS0yMi4zLTY3IDBsLTQwLjQgNTkuOS03MC44LTEzLjdDOTggNjAuNCA4NC41IDY0LjUgNzUgNzQuMWMtOS41IDkuNi0xMy43IDIzLjEtMTEuMSAzNi4zbDEzLjcgNzEtNTkuOCA0MC41QzYuNiAyMjkuNSAwIDI0MiAwIDI1NS41czYuNyAyNiAxNy44IDMzLjVsNTkuOCA0MC41LTEzLjcgNzFjLTIuNiAxMy4yIDEuNiAyNi44IDExLjEgMzYuMyA5LjUgOS41IDIyLjkgMTMuNyAzNi4zIDExLjFsNzAuOC0xMy43IDQwLjQgNTkuOUMyMzAgNTA1LjMgMjQyLjYgNTEyIDI1NiA1MTJzMjYtNi43IDMzLjUtMTcuOGw0MC40LTU5LjkgNzAuOSAxMy43YzEzLjQgMi43IDI2LjgtMS42IDM2LjMtMTEuMSA5LjUtOS41IDEzLjYtMjMuMSAxMS4xLTM2LjNsLTEzLjctNzEgNTkuOC00MC41YzExLjEtNy41IDE3LjgtMjAuMSAxNy44LTMzLjUtLjEtMTMuNi02LjctMjYuMS0xNy45LTMzLjd6bS0xMTIuOSA4NS42bDE3LjYgOTEuMi05MS0xNy42TDI1NiA0NThsLTUxLjktNzctOTAuOSAxNy42IDE3LjYtOTEuMi03Ni44LTUyIDc2LjgtNTItMTcuNi05MS4yIDkxIDE3LjZMMjU2IDUzbDUxLjkgNzYuOSA5MS0xNy42LTE3LjYgOTEuMSA3Ni44IDUyLTc2LjggNTIuMXpNMjU2IDE1MmMtNTcuMyAwLTEwNCA0Ni43LTEwNCAxMDRzNDYuNyAxMDQgMTA0IDEwNCAxMDQtNDYuNyAxMDQtMTA0LTQ2LjctMTA0LTEwNC0xMDR6bTAgMTYwYy0zMC45IDAtNTYtMjUuMS01Ni01NnMyNS4xLTU2IDU2LTU2IDU2IDI1LjEgNTYgNTYtMjUuMSA1Ni01NiA1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdTdXJwcmlzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDk2IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNDggOEMxMTEgOCAwIDExOSAwIDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM4NSA4IDI0OCA4em0wIDQ0OGMtMTEwLjMgMC0yMDAtODkuNy0yMDAtMjAwUzEzNy43IDU2IDI0OCA1NnMyMDAgODkuNyAyMDAgMjAwLTg5LjcgMjAwLTIwMCAyMDB6bTAtMTc2Yy0zNS4zIDAtNjQgMjguNy02NCA2NHMyOC43IDY0IDY0IDY0IDY0LTI4LjcgNjQtNjQtMjguNy02NC02NC02NHptLTQ4LTcyYzAtMTcuNy0xNC4zLTMyLTMyLTMycy0zMiAxNC4zLTMyIDMyIDE0LjMgMzIgMzIgMzIgMzItMTQuMyAzMi0zMnptMTI4LTMyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMyIDMyLTE0LjMgMzItMzItMTQuMy0zMi0zMi0zMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2Ni4yNyAyMjUuMzFjNC42NzQtMjIuNjQ3Ljg2NC00NC41MzgtOC45OS02Mi45OSAyLjk1OC0yMy44NjgtNC4wMjEtNDguNTY1LTE3LjM0LTY2Ljk5QzQzOC45ODYgMzkuNDIzIDQwNC4xMTcgMCAzMjcgMGMtNyAwLTE1IC4wMS0yMi4yMi4wMUMyMDEuMTk1LjAxIDE2OC45OTcgNDAgMTI4IDQwaC0xMC44NDVjLTUuNjQtNC45NzUtMTMuMDQyLTgtMjEuMTU1LThIMzJDMTQuMzI3IDMyIDAgNDYuMzI3IDAgNjR2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxMS44NDIgMCAyMi4xNzUtNi40MzggMjcuNzA4LTE2aDcuMDUyYzE5LjE0NiAxNi45NTMgNDYuMDEzIDYwLjY1MyA2OC43NiA4My40IDEzLjY2NyAxMy42NjcgMTAuMTUzIDEwOC42IDcxLjc2IDEwOC42IDU3LjU4IDAgOTUuMjctMzEuOTM2IDk1LjI3LTEwNC43MyAwLTE4LjQxLTMuOTMtMzMuNzMtOC44NS00Ni41NGgzNi40OGM0OC42MDIgMCA4NS44Mi00MS41NjUgODUuODItODUuNTggMC0xOS4xNS00Ljk2LTM0Ljk5LTEzLjczLTQ5Ljg0ek02NCAyOTZjLTEzLjI1NSAwLTI0LTEwLjc0NS0yNC0yNHMxMC43NDUtMjQgMjQtMjQgMjQgMTAuNzQ1IDI0IDI0LTEwLjc0NSAyNC0yNCAyNHptMzMwLjE4IDE2LjczSDI5MC4xOWMwIDM3LjgyIDI4LjM2IDU1LjM3IDI4LjM2IDk0LjU0IDAgMjMuNzUgMCA1Ni43My00Ny4yNyA1Ni43My0xOC45MS0xOC45MS05LjQ2LTY2LjE4LTM3LjgyLTk0LjU0QzIwNi45IDM0Mi44OSAxNjcuMjggMjcyIDEzOC45MiAyNzJIMTI4Vjg1LjgzYzUzLjYxMSAwIDEwMC4wMDEtMzcuODIgMTcxLjY0LTM3LjgyaDM3LjgyYzM1LjUxMiAwIDYwLjgyIDE3LjEyIDUzLjEyIDY1LjkgMTUuMiA4LjE2IDI2LjUgMzYuNDQgMTMuOTQgNTcuNTcgMjEuNTgxIDIwLjM4NCAxOC42OTkgNTEuMDY1IDUuMjEgNjUuNjIgOS40NSAwIDIyLjM2IDE4LjkxIDIyLjI3IDM3LjgxLS4wOSAxOC45MS0xNi43MSAzNy44Mi0zNy44MiAzNy44MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaHVtYnNVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00NjYuMjcgMjg2LjY5QzQ3NS4wNCAyNzEuODQgNDgwIDI1NiA0ODAgMjM2Ljg1YzAtNDQuMDE1LTM3LjIxOC04NS41OC04NS44Mi04NS41OEgzNTcuN2M0LjkyLTEyLjgxIDguODUtMjguMTMgOC44NS00Ni41NEMzNjYuNTUgMzEuOTM2IDMyOC44NiAwIDI3MS4yOCAwYy02MS42MDcgMC01OC4wOTMgOTQuOTMzLTcxLjc2IDEwOC42LTIyLjc0NyAyMi43NDctNDkuNjE1IDY2LjQ0Ny02OC43NiA4My40SDMyYy0xNy42NzMgMC0zMiAxNC4zMjctMzIgMzJ2MjQwYzAgMTcuNjczIDE0LjMyNyAzMiAzMiAzMmg2NGMxNC44OTMgMCAyNy40MDgtMTAuMTc0IDMwLjk3OC0yMy45NSA0NC41MDkgMS4wMDEgNzUuMDYgMzkuOTQgMTc3LjgwMiAzOS45NCA3LjIyIDAgMTUuMjIuMDEgMjIuMjIuMDEgNzcuMTE3IDAgMTExLjk4Ni0zOS40MjMgMTEyLjk0LTk1LjMzIDEzLjMxOS0xOC40MjUgMjAuMjk5LTQzLjEyMiAxNy4zNC02Ni45OSA5Ljg1NC0xOC40NTIgMTMuNjY0LTQwLjM0MyA4Ljk5LTYyLjk5em0tNjEuNzUgNTMuODNjMTIuNTYgMjEuMTMgMS4yNiA0OS40MS0xMy45NCA1Ny41NyA3LjcgNDguNzgtMTcuNjA4IDY1LjktNTMuMTIgNjUuOWgtMzcuODJjLTcxLjYzOSAwLTExOC4wMjktMzcuODItMTcxLjY0LTM3LjgyVjI0MGgxMC45MmMyOC4zNiAwIDY3Ljk4LTcwLjg5IDk0LjU0LTk3LjQ2IDI4LjM2LTI4LjM2IDE4LjkxLTc1LjYzIDM3LjgyLTk0LjU0IDQ3LjI3IDAgNDcuMjcgMzIuOTggNDcuMjcgNTYuNzMgMCAzOS4xNy0yOC4zNiA1Ni43Mi0yOC4zNiA5NC41NGgxMDMuOTljMjEuMTEgMCAzNy43MyAxOC45MSAzNy44MiAzNy44Mi4wOSAxOC45LTEyLjgyIDM3LjgxLTIyLjI3IDM3LjgxIDEzLjQ4OSAxNC41NTUgMTYuMzcxIDQ1LjIzNi01LjIxIDY1LjYyek04OCA0MzJjMCAxMy4yNTUtMTAuNzQ1IDI0LTI0IDI0cy0yNC0xMC43NDUtMjQtMjQgMTAuNzQ1LTI0IDI0LTI0IDI0IDEwLjc0NSAyNCAyNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdUaW1lc0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNTEyIDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yNTYgOEMxMTkgOCA4IDExOSA4IDI1NnMxMTEgMjQ4IDI0OCAyNDggMjQ4LTExMSAyNDgtMjQ4UzM5MyA4IDI1NiA4em0wIDQ0OGMtMTEwLjUgMC0yMDAtODkuNS0yMDAtMjAwUzE0NS41IDU2IDI1NiA1NnMyMDAgODkuNSAyMDAgMjAwLTg5LjUgMjAwLTIwMCAyMDB6bTEwMS44LTI2Mi4yTDI5NS42IDI1Nmw2Mi4yIDYyLjJjNC43IDQuNyA0LjcgMTIuMyAwIDE3bC0yMi42IDIyLjZjLTQuNyA0LjctMTIuMyA0LjctMTcgMEwyNTYgMjk1LjZsLTYyLjIgNjIuMmMtNC43IDQuNy0xMi4zIDQuNy0xNyAwbC0yMi42LTIyLjZjLTQuNy00LjctNC43LTEyLjMgMC0xN2w2Mi4yLTYyLjItNjIuMi02Mi4yYy00LjctNC43LTQuNy0xMi4zIDAtMTdsMjIuNi0yMi42YzQuNy00LjcgMTIuMy00LjcgMTcgMGw2Mi4yIDYyLjIgNjIuMi02Mi4yYzQuNy00LjcgMTIuMy00LjcgMTcgMGwyMi42IDIyLjZjNC43IDQuNyA0LjcgMTIuMyAwIDE3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1RpcmVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCA4QzExMSA4IDAgMTE5IDAgMjU2czExMSAyNDggMjQ4IDI0OCAyNDgtMTExIDI0OC0yNDhTMzg1IDggMjQ4IDh6bTAgNDQ4Yy0xMTAuMyAwLTIwMC04OS43LTIwMC0yMDBTMTM3LjcgNTYgMjQ4IDU2czIwMCA4OS43IDIwMCAyMDAtODkuNyAyMDAtMjAwIDIwMHptMTI5LjEtMzAzLjhjLTMuOC00LjQtMTAuMy01LjQtMTUuMy0yLjVsLTgwIDQ4Yy0zLjYgMi4yLTUuOCA2LjEtNS44IDEwLjNzMi4yIDguMSA1LjggMTAuM2w4MCA0OGM1LjQgMy4yIDExLjggMS42IDE1LjMtMi41IDMuOC00LjUgMy45LTExIC4xLTE1LjVMMzQzLjYgMjA4bDMzLjYtNDAuM2MzLjgtNC41IDMuNy0xMS4xLS4xLTE1LjV6TTIyMCAyMDhjMC00LjItMi4yLTguMS01LjgtMTAuM2wtODAtNDhjLTUtMy0xMS41LTEuOS0xNS4zIDIuNS0zLjggNC41LTMuOSAxMS0uMSAxNS41bDMzLjYgNDAuMy0zMy42IDQwLjNjLTMuOCA0LjUtMy43IDExIC4xIDE1LjUgMy41IDQuMSA5LjkgNS43IDE1LjMgMi41bDgwLTQ4YzMuNi0yLjIgNS44LTYuMSA1LjgtMTAuM3ptMjggNjRjLTQ1LjQgMC0xMDAuOSAzOC4zLTEwNy44IDkzLjMtMS41IDExLjggNi45IDIxLjYgMTUuNSAxNy45QzE3OC40IDM3My41IDIxMiAzNjggMjQ4IDM2OHM2OS42IDUuNSA5Mi4zIDE1LjJjOC41IDMuNyAxNy02IDE1LjUtMTcuOS02LjktNTUtNjIuNC05My4zLTEwNy44LTkzLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVHJhc2hBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDQ0OCA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMjY4IDQxNmgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnpNNDMyIDgwaC04Mi40MWwtMzQtNTYuN0E0OCA0OCAwIDAgMCAyNzQuNDEgMEgxNzMuNTlhNDggNDggMCAwIDAtNDEuMTYgMjMuM0w5OC40MSA4MEgxNkExNiAxNiAwIDAgMCAwIDk2djE2YTE2IDE2IDAgMCAwIDE2IDE2aDE2djMzNmE0OCA0OCAwIDAgMCA0OCA0OGgyODhhNDggNDggMCAwIDAgNDgtNDhWMTI4aDE2YTE2IDE2IDAgMCAwIDE2LTE2Vjk2YTE2IDE2IDAgMCAwLTE2LTE2ek0xNzEuODQgNTAuOTFBNiA2IDAgMCAxIDE3NyA0OGg5NGE2IDYgMCAwIDEgNS4xNSAyLjkxTDI5My42MSA4MEgxNTQuMzl6TTM2OCA0NjRIODBWMTI4aDI4OHptLTIxMi00OGgyNGExMiAxMiAwIDAgMCAxMi0xMlYxODhhMTIgMTIgMCAwIDAtMTItMTJoLTI0YTEyIDEyIDAgMCAwLTEyIDEydjIxNmExMiAxMiAwIDAgMCAxMiAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gRmFSZWdVc2VyQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA0OTYgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTI0OCAxMDRjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTYgOTYtNDMgOTYtOTYtNDMtOTYtOTYtOTZ6bTAgMTQ0Yy0yNi41IDAtNDgtMjEuNS00OC00OHMyMS41LTQ4IDQ4LTQ4IDQ4IDIxLjUgNDggNDgtMjEuNSA0OC00OCA0OHptMC0yNDBDMTExIDggMCAxMTkgMCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzODUgOCAyNDggOHptMCA0NDhjLTQ5LjcgMC05NS4xLTE4LjMtMTMwLjEtNDguNCAxNC45LTIzIDQwLjQtMzguNiA2OS42LTM5LjUgMjAuOCA2LjQgNDAuNiA5LjYgNjAuNSA5LjZzMzkuNy0zLjEgNjAuNS05LjZjMjkuMiAxIDU0LjcgMTYuNSA2OS42IDM5LjUtMzUgMzAuMS04MC40IDQ4LjQtMTMwLjEgNDguNHptMTYyLjctODQuMWMtMjQuNC0zMS40LTYyLjEtNTEuOS0xMDUuMS01MS45LTEwLjIgMC0yNiA5LjYtNTcuNiA5LjYtMzEuNSAwLTQ3LjQtOS42LTU3LjYtOS42LTQyLjkgMC04MC42IDIwLjUtMTA1LjEgNTEuOUM2MS45IDMzOS4yIDQ4IDI5OS4yIDQ4IDI1NmMwLTExMC4zIDg5LjctMjAwIDIwMC0yMDBzMjAwIDg5LjcgMjAwIDIwMGMwIDQzLjItMTMuOSA4My4yLTM3LjMgMTE1Ljl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEZhUmVnVXNlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJ2aWV3Qm94XCI6XCIwIDAgNDQ4IDUxMlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zMTMuNiAzMDRjLTI4LjcgMC00Mi41IDE2LTg5LjYgMTYtNDcuMSAwLTYwLjgtMTYtODkuNi0xNkM2MC4yIDMwNCAwIDM2NC4yIDAgNDM4LjRWNDY0YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDM1MmMyNi41IDAgNDgtMjEuNSA0OC00OHYtMjUuNmMwLTc0LjItNjAuMi0xMzQuNC0xMzQuNC0xMzQuNHpNNDAwIDQ2NEg0OHYtMjUuNmMwLTQ3LjYgMzguOC04Ni40IDg2LjQtODYuNCAxNC42IDAgMzguMyAxNiA4OS42IDE2IDUxLjcgMCA3NC45LTE2IDg5LjYtMTYgNDcuNiAwIDg2LjQgMzguOCA4Ni40IDg2LjRWNDY0ek0yMjQgMjg4Yzc5LjUgMCAxNDQtNjQuNSAxNDQtMTQ0UzMwMy41IDAgMjI0IDAgODAgNjQuNSA4MCAxNDRzNjQuNSAxNDQgMTQ0IDE0NHptMC0yNDBjNTIuOSAwIDk2IDQzLjEgOTYgOTZzLTQzLjEgOTYtOTYgOTYtOTYtNDMuMS05Ni05NiA0My4xLTk2IDk2LTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd0Nsb3NlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bTAgMzk0YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02Vjg2YzAtMy4zIDIuNy02IDYtNmg0MDRjMy4zIDAgNiAyLjcgNiA2djM0MHpNMzU2LjUgMTk0LjZMMjk1LjEgMjU2bDYxLjQgNjEuNGM0LjYgNC42IDQuNiAxMi4xIDAgMTYuOGwtMjIuMyAyMi4zYy00LjYgNC42LTEyLjEgNC42LTE2LjggMEwyNTYgMjk1LjFsLTYxLjQgNjEuNGMtNC42IDQuNi0xMi4xIDQuNi0xNi44IDBsLTIyLjMtMjIuM2MtNC42LTQuNi00LjYtMTIuMSAwLTE2LjhsNjEuNC02MS40LTYxLjQtNjEuNGMtNC42LTQuNi00LjYtMTIuMSAwLTE2LjhsMjIuMy0yMi4zYzQuNi00LjYgMTIuMS00LjYgMTYuOCAwbDYxLjQgNjEuNCA2MS40LTYxLjRjNC42LTQuNiAxMi4xLTQuNiAxNi44IDBsMjIuMyAyMi4zYzQuNyA0LjYgNC43IDEyLjEgMCAxNi44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01heGltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ2NCAzMkg0OEMyMS41IDMyIDAgNTMuNSAwIDgwdjM1MmMwIDI2LjUgMjEuNSA0OCA0OCA0OGg0MTZjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWODBjMC0yNi41LTIxLjUtNDgtNDgtNDh6bTAgMzk0YzAgMy4zLTIuNyA2LTYgNkg1NGMtMy4zIDAtNi0yLjctNi02VjE5Mmg0MTZ2MjM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd01pbmltaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcInZpZXdCb3hcIjpcIjAgMCA1MTIgNTEyXCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQ4MCA0ODBIMzJjLTE3LjcgMC0zMi0xNC4zLTMyLTMyczE0LjMtMzIgMzItMzJoNDQ4YzE3LjcgMCAzMiAxNC4zIDMyIDMycy0xNC4zIDMyLTMyIDMyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBGYVJlZ1dpbmRvd1Jlc3RvcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1widmlld0JveFwiOlwiMCAwIDUxMiA1MTJcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNDY0IDBIMTQ0Yy0yNi41IDAtNDggMjEuNS00OCA0OHY0OEg0OGMtMjYuNSAwLTQ4IDIxLjUtNDggNDh2MzIwYzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDMyMGMyNi41IDAgNDgtMjEuNSA0OC00OHYtNDhoNDhjMjYuNSAwIDQ4LTIxLjUgNDgtNDhWNDhjMC0yNi41LTIxLjUtNDgtNDgtNDh6bS05NiA0NjRINDhWMjU2aDMyMHYyMDh6bTk2LTk2aC00OFYxNDRjMC0yNi41LTIxLjUtNDgtNDgtNDhIMTQ0VjQ4aDMyMHYzMjB6XCJ9fV19KShwcm9wcyk7XG59O1xuIiwiLy8gVEhJUyBGSUxFIElTIEFVVE8gR0VORVJBVEVEXG5pbXBvcnQgeyBHZW5JY29uIH0gZnJvbSAnLi4vbGliJztcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBbGFybUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAuNWEuNS41IDAgMCAxIC41LS41aDNhLjUuNSAwIDAgMSAwIDFIOXYxLjA3YTcuMDAxIDcuMDAxIDAgMCAxIDMuMjc0IDEyLjQ3NGwuNjAxLjYwMmEuNS41IDAgMCAxLS43MDcuNzA4bC0uNzQ2LS43NDZBNi45NyA2Ljk3IDAgMCAxIDggMTZhNi45NyA2Ljk3IDAgMCAxLTMuNDIyLS44OTJsLS43NDYuNzQ2YS41LjUgMCAwIDEtLjcwNy0uNzA4bC42MDItLjYwMkE3LjAwMSA3LjAwMSAwIDAgMSA3IDIuMDdWMWgtLjVBLjUuNSAwIDAgMSA2IC41em0yLjUgNWEuNS41IDAgMCAwLTEgMHYzLjM2MmwtMS40MjkgMi4zOGEuNS41IDAgMSAwIC44NTguNTE1bDEuNS0yLjVBLjUuNSAwIDAgMCA4LjUgOVY1LjV6TS44NiA1LjM4N0EyLjUgMi41IDAgMSAxIDQuMzg3IDEuODYgOC4wMzUgOC4wMzUgMCAwIDAgLjg2IDUuMzg3ek0xMS42MTMgMS44NmEyLjUgMi41IDAgMSAxIDMuNTI3IDMuNTI3IDguMDM1IDguMDM1IDAgMCAwLTMuNTI3LTMuNTI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcmNoaXZlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi42NDMgMTVDMTMuOTc5IDE1IDE1IDEzLjg0NSAxNSAxMi41VjVIMXY3LjVDMSAxMy44NDUgMi4wMjEgMTUgMy4zNTcgMTVoOS4yODZ6TTUuNSA3aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTF6TS44IDFhLjguOCAwIDAgMC0uOC44VjNhLjguOCAwIDAgMCAuOC44aDE0LjRBLjguOCAwIDAgMCAxNiAzVjEuOGEuOC44IDAgMCAwLS44LS44SC44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd0Rvd25DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHY1Ljc5M0w1LjM1NCA4LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDMgM2EuNS41IDAgMCAwIC43MDggMGwzLTNhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1Y0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEFycm93RG93bkxlZnRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAwIDAgOGE4IDggMCAwIDAgMTYgMHptLTUuOTA0LTIuODAzYS41LjUgMCAxIDEgLjcwNy43MDdMNi43MDcgMTBoMi43NjhhLjUuNSAwIDAgMSAwIDFINS41YS41LjUgMCAwIDEtLjUtLjVWNi41MjVhLjUuNSAwIDAgMSAxIDB2Mi43NjhsNC4wOTYtNC4wOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEFycm93RG93bkxlZnRTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTZhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJ6bTguMDk2LTEwLjgwM0w2IDkuMjkzVjYuNTI1YS41LjUgMCAwIDAtMSAwVjEwLjVhLjUuNSAwIDAgMCAuNS41aDMuOTc1YS41LjUgMCAwIDAgMC0xSDYuNzA3bDQuMDk2LTQuMDk2YS41LjUgMCAxIDAtLjcwNy0uNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd0Rvd25SaWdodENpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4YTggOCAwIDEgMSAxNiAwQTggOCAwIDAgMSAwIDh6bTUuOTA0LTIuODAzYS41LjUgMCAxIDAtLjcwNy43MDdMOS4yOTMgMTBINi41MjVhLjUuNSAwIDAgMCAwIDFIMTAuNWEuNS41IDAgMCAwIC41LS41VjYuNTI1YS41LjUgMCAwIDAtMSAwdjIuNzY4TDUuOTA0IDUuMTk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd0Rvd25SaWdodFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTZhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJ6TTUuOTA0IDUuMTk3IDEwIDkuMjkzVjYuNTI1YS41LjUgMCAwIDEgMSAwVjEwLjVhLjUuNSAwIDAgMS0uNS41SDYuNTI1YS41LjUgMCAwIDEgMC0xaDIuNzY4TDUuMTk3IDUuOTA0YS41LjUgMCAwIDEgLjcwNy0uNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd0Rvd25TcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptNi41IDQuNXY1Ljc5M2wyLjE0Ni0yLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTMtM2EuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgMTAuMjkzVjQuNWEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQXJyb3dMZWZ0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhOCA4IDAgMSAwIDAgMTZBOCA4IDAgMCAwIDggMHptMy41IDcuNWEuNS41IDAgMCAxIDAgMUg1LjcwN2wyLjE0NyAyLjE0NmEuNS41IDAgMCAxLS43MDguNzA4bC0zLTNhLjUuNSAwIDAgMSAwLS43MDhsMy0zYS41LjUgMCAxIDEgLjcwOC43MDhMNS43MDcgNy41SDExLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEFycm93TGVmdFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJ6bS00LjUtNi41SDUuNzA3bDIuMTQ3LTIuMTQ2YS41LjUgMCAxIDAtLjcwOC0uNzA4bC0zIDNhLjUuNSAwIDAgMCAwIC43MDhsMyAzYS41LjUgMCAwIDAgLjcwOC0uNzA4TDUuNzA3IDguNUgxMS41YS41LjUgMCAwIDAgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd1JpZ2h0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhOCA4IDAgMSAxIDAgMTZBOCA4IDAgMCAxIDggMHpNNC41IDcuNWEuNS41IDAgMCAwIDAgMWg1Ljc5M2wtMi4xNDcgMi4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLTNhLjUuNSAwIDAgMCAwLS43MDhsLTMtM2EuNS41IDAgMSAwLS43MDguNzA4TDEwLjI5MyA3LjVINC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd1JpZ2h0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDE0YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjEyem00LjUtNi41aDUuNzkzTDguMTQ2IDUuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4bDMgM2EuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyA4LjVINC41YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd1VwQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMCAwIDhhOCA4IDAgMCAwIDE2IDB6bS03LjUgMy41YS41LjUgMCAwIDEtMSAwVjUuNzA3TDUuMzU0IDcuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDMtM2EuNS41IDAgMCAxIC43MDggMGwzIDNhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNS43MDdWMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQXJyb3dVcExlZnRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTUuOTA0IDIuODAzYS41LjUgMCAxIDAgLjcwNy0uNzA3TDYuNzA3IDZoMi43NjhhLjUuNSAwIDEgMCAwLTFINS41YS41LjUgMCAwIDAtLjUuNXYzLjk3NWEuNS41IDAgMCAwIDEgMFY2LjcwN2w0LjA5NiA0LjA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQXJyb3dVcExlZnRTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptOC4wOTYgMTAuODAzTDYgNi43MDd2Mi43NjhhLjUuNSAwIDAgMS0xIDBWNS41YS41LjUgMCAwIDEgLjUtLjVoMy45NzVhLjUuNSAwIDEgMSAwIDFINi43MDdsNC4wOTYgNC4wOTZhLjUuNSAwIDEgMS0uNzA3LjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQXJyb3dVcFJpZ2h0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDhhOCA4IDAgMSAwIDE2IDBBOCA4IDAgMCAwIDAgOHptNS45MDQgMi44MDNhLjUuNSAwIDEgMS0uNzA3LS43MDdMOS4yOTMgNkg2LjUyNWEuNS41IDAgMSAxIDAtMUgxMC41YS41LjUgMCAwIDEgLjUuNXYzLjk3NWEuNS41IDAgMCAxLTEgMFY2LjcwN2wtNC4wOTYgNC4wOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEFycm93VXBSaWdodFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMnpNNS45MDQgMTAuODAzIDEwIDYuNzA3djIuNzY4YS41LjUgMCAwIDAgMSAwVjUuNWEuNS41IDAgMCAwLS41LS41SDYuNTI1YS41LjUgMCAxIDAgMCAxaDIuNzY4bC00LjA5NiA0LjA5NmEuNS41IDAgMCAwIC43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBcnJvd1VwU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE2YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyem02LjUtNC41VjUuNzA3bDIuMTQ2IDIuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC0zLTNhLjUuNSAwIDAgMC0uNzA4IDBsLTMgM2EuNS41IDAgMSAwIC43MDguNzA4TDcuNSA1LjcwN1YxMS41YS41LjUgMCAwIDAgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxBc3BlY3RSYXRpb0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMi41di05QTEuNSAxLjUgMCAwIDEgMS41IDJoMTNBMS41IDEuNSAwIDAgMSAxNiAzLjV2OWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEzQTEuNSAxLjUgMCAwIDEgMCAxMi41ek0yLjUgNGEuNS41IDAgMCAwLS41LjV2M2EuNS41IDAgMCAwIDEgMFY1aDIuNWEuNS41IDAgMCAwIDAtMWgtM3ptMTEgOGEuNS41IDAgMCAwIC41LS41di0zYS41LjUgMCAwIDAtMSAwVjExaC0yLjVhLjUuNSAwIDAgMCAwIDFoM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQXdhcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggMCAxLjY2OS44NjQgMS44NTguMjgyLjg0MiAxLjY4IDEuMzM3IDEuMzJMMTMuNCA2bC4zMDYgMS44NTQtMS4zMzcgMS4zMi0uODQyIDEuNjgtMS44NTguMjgyTDggMTJsLTEuNjY5LS44NjQtMS44NTgtLjI4Mi0uODQyLTEuNjgtMS4zMzctMS4zMkwyLjYgNmwtLjMwNi0xLjg1NCAxLjMzNy0xLjMyLjg0Mi0xLjY4TDYuMzMxLjg2NCA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMS43OTRWMTZsNC0xIDQgMXYtNC4yMDZsLTIuMDE4LjMwNkw4IDEzLjEyNiA2LjAxOCAxMi4xIDQgMTEuNzk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCYWNrc3BhY2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjY4MyAzYTIgMiAwIDAgMC0yLTJoLTcuMDhhMiAyIDAgMCAwLTEuNTE5LjY5OEwuMjQxIDcuMzVhMSAxIDAgMCAwIDAgMS4zMDJsNC44NDMgNS42NUEyIDIgMCAwIDAgNi42MDMgMTVoNy4wOGEyIDIgMCAwIDAgMi0yVjN6TTUuODI5IDUuODU0YS41LjUgMCAxIDEgLjcwNy0uNzA4bDIuMTQ3IDIuMTQ3IDIuMTQ2LTIuMTQ3YS41LjUgMCAxIDEgLjcwNy43MDhMOS4zOSA4bDIuMTQ2IDIuMTQ2YS41LjUgMCAwIDEtLjcwNy43MDhMOC42ODMgOC43MDdsLTIuMTQ3IDIuMTQ3YS41LjUgMCAwIDEtLjcwNy0uNzA4TDcuOTc2IDggNS44MjkgNS44NTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhY2tzcGFjZVJldmVyc2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgM2EyIDIgMCAwIDEgMi0yaDcuMDhhMiAyIDAgMCAxIDEuNTE5LjY5OGw0Ljg0MyA1LjY1MWExIDEgMCAwIDEgMCAxLjMwMkwxMC42IDE0LjNhMiAyIDAgMCAxLTEuNTIuN0gyYTIgMiAwIDAgMS0yLTJWM3ptOS44NTQgMi44NTRhLjUuNSAwIDAgMC0uNzA4LS43MDhMNyA3LjI5MyA0Ljg1NCA1LjE0NmEuNS41IDAgMSAwLS43MDguNzA4TDYuMjkzIDhsLTIuMTQ3IDIuMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhMNyA4LjcwN2wyLjE0NiAyLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOEw3LjcwNyA4bDIuMTQ3LTIuMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCYWRnZTNERmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4xNTcgNS45NjhoLS44NDR2NC4wNmguODQ0YzEuMTE2IDAgMS42MjEtLjY2NyAxLjYyMS0yLjAyIDAtMS4zNTQtLjUxLTIuMDQtMS42MjEtMi4wNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptNS4xODQgNC4zNjhjLjY0NiAwIDEuMDU1LjM3OCAxLjA2LjkuMDA4LjUzNy0uNDI3LjkxOS0xLjA4Ni45MTktLjU5OC0uMDA0LTEuMDM3LS4zMjUtMS4wNjgtLjc1NkgzYy4wMy45MTQuNzkxIDEuNjg4IDIuMTUzIDEuNjg4IDEuMjQgMCAyLjI4NS0uNjYgMi4yNzItMS43OTgtLjAxMy0uOTUzLS43NDctMS4zOC0xLjI5Mi0xLjQzMnYtLjA2MmMuNDQtLjA3IDEuMTI1LS41MjcgMS4xMDgtMS4zNzUtLjAxMy0uOTA2LS44LTEuNTctMi4wNTMtMS41NjUtMS4zMS4wMDUtMi4wNDMuNzM0LTIuMDc0IDEuNjdoMS4xMDNjLjAyMi0uMzkxLjM4My0uNzUxLjkzNi0uNzUxLjUzMiAwIC45MjguMzMuOTI4LjgxMy4wMDQuNDc5LS4zODMuODM1LS45MjguODM1aC0uNjMydi45MTRoLjY2M3pNOC4xMjYgMTFoMi4xODlDMTIuMTI1IDExIDEzIDkuODkzIDEzIDcuOTg1YzAtMS44OTQtLjg2MS0yLjk4NC0yLjY4NS0yLjk4NEg4LjEyNlYxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFkZ2U0S0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41NzcgOC45di4wM2gxLjgyOFY1Ljg5OGgtLjA2MmE0Ni43ODEgNDYuNzgxIDAgMCAwLTEuNzY2IDMuMDAxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0yLjM3MiAzLjcxNS40MzUtLjcxNGgxLjcxdjMuOTNoLjczM3YuOTU3aC0uNzMzVjExSDUuNDA1VjkuODg4SDIuNXYtLjk3MWMuNTc0LTEuMDc3IDEuMjI1LTIuMTQyIDEuODcyLTMuMjAyem03LjczLS43MTRoMS4zMDZsLTIuMTQgMi41ODRMMTMuNSAxMWgtMS40MjhsLTEuNjc5LTIuNjI0LS42MTUuN1YxMUg4LjU5VjUuMDAxaDEuMTg3djIuNjg2aC4wNTdMMTIuMTAyIDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZGdlOEtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSA2LjYwNWMwIC41MS40MDUuODY2Ljk1Ljg2Ni41NDUgMCAuOTQ1LS4zNTYuOTQ1LS44NjZzLS40LS44NTItLjk0NS0uODUyYy0uNTQ1IDAtLjk1LjM0My0uOTUuODUyem0tLjE5MiAyLjY2OGMwIC41ODkuNDkyLjk4NCAxLjE0Mi45ODQuNjQ2IDAgMS4xNDMtLjM5NSAxLjE0My0uOTg0UzUuNDk2IDguMjggNC44NSA4LjI4Yy0uNjUgMC0xLjE0Mi40MDQtMS4xNDIuOTkzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem01LjE3IDcuMzQ4YzAgMS4wNDEtLjkyNyAxLjc2Ni0yLjMzMyAxLjc2Ni0xLjQwNiAwLTIuMzEyLS43Mi0yLjMxMi0xLjc2MiAwLS45NTQuNzEyLTEuMzg0IDEuMjU3LTEuNDk0di0uMDUzYy0uNTEtLjE1NC0xLjAyLS41NTgtMS4wMi0xLjMzMSAwLS45MTQuODMxLTEuNTg3IDIuMDg4LTEuNTg3IDEuMjUzIDAgMi4wODMuNjczIDIuMDgzIDEuNTg3IDAgLjc4Mi0uNTIzIDEuMTgyLTEuMDIgMS4zMzF2LjA1M2MuNTQ1LjExIDEuMjU3LjU0NSAxLjI1NyAxLjQ5ek0xMi4xMDIgNWgxLjMwNmwtMi4xNCAyLjU4NCAyLjIzMiAzLjQxNWgtMS40MjhsLTEuNjc5LTIuNjI0LS42MTUuNjk5djEuOTI1SDguNTlWNWgxLjE4N3YyLjY4NWguMDU3TDEyLjEwMiA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCYWRnZUFkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zNSA4LjMzN2MwLS42OTktLjQyLTEuMTM4LTEuMDAxLTEuMTM4LS41ODQgMC0uOTU0LjQ0NC0uOTU0IDEuMjM5di40NTNjMCAuOC4zNzQgMS4yNDguOTcyIDEuMjQ4LjU4OCAwIC45ODQtLjQ0Ljk4NC0xLjJ2LS42MDJ6bS01LjQxMy4yMzctLjczNC0yLjQyNkg1LjE1bC0uNzM0IDIuNDI2aDEuNTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bTYuMjA5IDYuMzJjMC0xLjI4LjY5NC0yLjA0NCAxLjc1My0yLjA0NC42NTUgMCAxLjE1Ni4yOTQgMS4zMzYuNzY5aC4wNTN2LTIuMzZoMS4xNlYxMWgtMS4xMzh2LS43NDdoLS4wNTdjLS4xNDUuNDc0LS42OS44MDQtMS4zNjcuODA0LTEuMDU1IDAtMS43NC0uNzY0LTEuNzQtMi4wNDN2LS42OTV6bS00LjA0IDEuMTM4TDMuNyAxMUgyLjVsMi4wMTMtNS45OTlINS45TDcuOTA1IDExSDYuNjQ0bC0uNDctMS41NDJINC4xN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFkZ2VBckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi4wMzEgOC41NzQtLjczNC0yLjQyNmgtLjA1Mkw0LjUxIDguNTc0aDEuNTJ6bTMuNjQyLTIuNjQxdjEuOTM4aDEuMDMzYy42NiAwIDEuMDY4LS4zMTYgMS4wNjgtLjk1IDAtLjY0LS40MjItLjk4OC0xLjA1LS45ODhoLTEuMDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTQuMjY1IDUuNDU4aDIuMDA0TDYuNzM5IDExSDhMNS45OTYgNS4wMDFINC42MDdMMi41OTUgMTFoMS4ybC40Ny0xLjU0MnpNOC41IDV2NmgxLjE3M1Y4Ljc2M2gxLjA2NEwxMS43ODcgMTFoMS4zMjdMMTEuOTEgOC41ODNDMTIuNDU1IDguMzczIDEzIDcuNzc5IDEzIDYuOWMwLTEuMTQ3LS43NzMtMS45LTIuMTA1LTEuOUg4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZGdlQ2NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0zLjAyNyA0LjAwMmMtLjgzIDAtMS4zMTkuNjQyLTEuMzE5IDEuNzUzdi43NDNjMCAxLjEwNy40OCAxLjcyNyAxLjMxOSAxLjcyNy42OSAwIDEuMTM4LS40MzUgMS4xODYtMS4wNUg3LjM2di4xMTRjLS4wNTcgMS4xNDctMS4wMjggMS45MzgtMi4zNDIgMS45MzgtMS42MTMgMC0yLjUxOC0xLjAyOC0yLjUxOC0yLjcyOXYtLjc0N0MyLjUgNi4wNTEgMy40MTQgNSA1LjAxOCA1YzEuMzE4IDAgMi4yOS44MTMgMi4zNDIgMnYuMTFINi4yMTNjLS4wNDgtLjYzOC0uNTA1LTEuMTA4LTEuMTg2LTEuMTA4em02LjE0IDBjLS44MzEgMC0xLjMxOS42NDItMS4zMTkgMS43NTN2Ljc0M2MwIDEuMTA3LjQ4IDEuNzI3IDEuMzE4IDEuNzI3LjY5IDAgMS4xMzktLjQzNSAxLjE4Ny0xLjA1SDEzLjV2LjExNGMtLjA1NyAxLjE0Ny0xLjAyOCAxLjkzOC0yLjM0MiAxLjkzOC0xLjYxMyAwLTIuNTE4LTEuMDI4LTIuNTE4LTIuNzI5di0uNzQ3YzAtMS43LjkxNC0yLjc1MSAyLjUxOC0yLjc1MSAxLjMxOCAwIDIuMjkuODEzIDIuMzQyIDJ2LjExaC0xLjE0N2MtLjA0OC0uNjM4LS41MDUtMS4xMDgtMS4xODctMS4xMDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZGdlSGRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUzIDUuOTY4aC0uODQzdjQuMDZoLjg0M2MxLjExNyAwIDEuNjIyLS42NjcgMS42MjItMi4wMiAwLTEuMzU0LS41MS0yLjA0LTEuNjIyLTIuMDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bTUuMzk2IDMuMDAxVjExSDYuMjA5VjguNDNIMy42ODdWMTFIMi41VjUuMDAxaDEuMTg3djIuNDRoMi41MjJWNWgxLjE4N3pNOC41IDExVjUuMDAxaDIuMTg4YzEuODI0IDAgMi42ODUgMS4wOSAyLjY4NSAyLjk4NEMxMy4zNzMgOS44OTMgMTIuNSAxMSAxMC42OSAxMUg4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZGdlVG1GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0zLjI5NSAzLjk5NVYxMUg0LjEwNFY1Ljk5NWgtMS43VjVIN3YuOTk0SDUuMjk1ek04LjY5MiA3LjAxVjExSDcuNjMzVjUuMDAxaDEuMjA5bDEuNzEgMy44OTRoLjAzOWwxLjcxLTMuODk0SDEzLjVWMTFoLTEuMDcyVjcuMDFoLS4wNTdsLTEuNDIgMy4yMzloLS43NzNMOC43NSA3LjAwOGgtLjA1OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFkZ2VWb0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjk2IDguMzk0di0uNzgyYzAtMS4xNTYtLjU3MS0xLjczNi0xLjM2Mi0xLjczNi0uNzk2IDAtMS4zNjMuNTgtMS4zNjMgMS43MzZ2Ljc4MmMwIDEuMTU2LjU2NyAxLjczMiAxLjM2MyAxLjczMi43OSAwIDEuMzYyLS41NzYgMS4zNjItMS43MzJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bTExLjUgNS42MnYuNzdjMCAxLjY5MS0uOTYyIDIuNzI0LTIuNTY2IDIuNzI0LTEuNjA0IDAtMi41NzEtMS4wMzMtMi41NzEtMi43MjR2LS43N2MwLTEuNzA0Ljk2Ny0yLjczMyAyLjU3LTIuNzMzIDEuNjA1IDAgMi41NjcgMS4wMzcgMi41NjcgMi43MzR6TTUuOTM3IDExSDQuNTA4TDIuNSA1LjAwMWgxLjM3NUw1LjIyIDkuNzA4aC4wNTdMNi42MSA1LjAwMWgxLjMxOEw1LjkzNyAxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFkZ2VWckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS42NzMgNS45MzN2MS45MzhoMS4wMzNjLjY2IDAgMS4wNjgtLjMxNiAxLjA2OC0uOTUgMC0uNjQtLjQyMi0uOTg4LTEuMDUtLjk4OGgtMS4wNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptNS45MzcgNyAxLjk5LTUuOTk5SDYuNjFMNS4yNzcgOS43MDhINS4yMkwzLjg3NSA1LjAwMUgyLjVMNC41MDggMTFoMS40Mjl6TTguNSA1LjAwMVYxMWgxLjE3M1Y4Ljc2M2gxLjA2NEwxMS43ODcgMTFoMS4zMjdMMTEuOTEgOC41ODNDMTIuNDU1IDguMzczIDEzIDcuNzc5IDEzIDYuOWMwLTEuMTQ3LS43NzMtMS45LTIuMTA1LTEuOUg4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZGdlV2NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY0em0xMS42NjYgMS44OWMuNjgyIDAgMS4xMzkuNDcgMS4xODcgMS4xMDdIMTR2LS4xMWMtLjA1My0xLjE4Ny0xLjAyNC0yLTIuMzQyLTItMS42MDQgMC0yLjUxOCAxLjA1LTIuNTE4IDIuNzUxdi43NDdjMCAxLjcuOTA1IDIuNzMgMi41MTggMi43MyAxLjMxNCAwIDIuMjg1LS43OTIgMi4zNDItMS45Mzl2LS4xMTRoLTEuMTQ3Yy0uMDQ4LjYxNS0uNDk3IDEuMDUtMS4xODcgMS4wNS0uODM5IDAtMS4zMTgtLjYyLTEuMzE4LTEuNzI3di0uNzQyYzAtMS4xMTIuNDg4LTEuNzU0IDEuMzE4LTEuNzU0em0tNi4xODguOTI2aC4wNDRMNi41NDIgMTFoMS4wMDZMOSA1LjAwMUg3LjgxOGwtLjgyIDQuMzU1aC0uMDU2TDUuOTcgNS4wMDFoLS45NGwtLjk3MiA0LjM1NWgtLjA1M2wtLjgyNy00LjM1NUgyTDMuNDUyIDExaDEuMDA1bDEuMDItNC4xODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZ0NoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuNSAzLjVhMi41IDIuNSAwIDAgMC01IDBWNGg1di0uNXptMSAwVjRIMTV2MTBhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWNGgzLjV2LS41YTMuNSAzLjUgMCAxIDEgNyAwem0tLjY0NiA1LjM1NGEuNS41IDAgMCAwLS43MDgtLjcwOEw3LjUgMTAuNzkzIDYuMzU0IDkuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMS41IDEuNWEuNS41IDAgMCAwIC43MDggMGwzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZ0Rhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC41IDMuNWEyLjUgMi41IDAgMCAwLTUgMFY0aDV2LS41em0xIDBWNEgxNXYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY0aDMuNXYtLjVhMy41IDMuNSAwIDEgMSA3IDB6TTYgOS41YS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFnRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMi41IDIuNSAwIDAgMSAyLjUgMi41VjRoLTV2LS41QTIuNSAyLjUgMCAwIDEgOCAxem0zLjUgM3YtLjVhMy41IDMuNSAwIDEgMC03IDBWNEgxdjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY0aC0zLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhZ1BsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC41IDMuNWEyLjUgMi41IDAgMCAwLTUgMFY0aDV2LS41em0xIDBWNEgxNXYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY0aDMuNXYtLjVhMy41IDMuNSAwIDEgMSA3IDB6TTguNSA4YS41LjUgMCAwIDAtMSAwdjEuNUg2YS41LjUgMCAwIDAgMCAxaDEuNVYxMmEuNS41IDAgMCAwIDEgMHYtMS41SDEwYS41LjUgMCAwIDAgMC0xSDguNVY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCYWdYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuNSAzLjVhMi41IDIuNSAwIDAgMC01IDBWNGg1di0uNXptMSAwVjRIMTV2MTBhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWNGgzLjV2LS41YTMuNSAzLjUgMCAxIDEgNyAwek02Ljg1NCA4LjE0NmEuNS41IDAgMSAwLS43MDguNzA4TDcuMjkzIDEwbC0xLjE0NyAxLjE0NmEuNS41IDAgMCAwIC43MDguNzA4TDggMTAuNzA3bDEuMTQ2IDEuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4TDguNzA3IDEwbDEuMTQ3LTEuMTQ2YS41LjUgMCAwIDAtLjcwOC0uNzA4TDggOS4yOTMgNi44NTQgOC4xNDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhckNoYXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTF2LTN6bTUtNGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXY3YTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjd6bTUtNWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFyQ2hhcnRMaW5lRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSAyYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjEyaC41YS41LjUgMCAwIDEgMCAxSC41YS41LjUgMCAwIDEgMC0xSDF2LTNhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2M2gxVjdhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2N2gxVjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJhc2tldEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wNzEgMS4yNDNhLjUuNSAwIDAgMSAuODU4LjUxNEwzLjM4MyA2aDkuMjM0TDEwLjA3IDEuNzU3YS41LjUgMCAxIDEgLjg1OC0uNTE0TDEzLjc4MyA2SDE1LjVhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41SDE1djVhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWOUguNWEuNS41IDAgMCAxLS41LS41di0yQS41LjUgMCAwIDEgLjUgNmgxLjcxN0w1LjA3IDEuMjQzek0zLjUgMTAuNWEuNS41IDAgMSAwLTEgMHYzYS41LjUgMCAwIDAgMSAwdi0zem0yLjUgMGEuNS41IDAgMSAwLTEgMHYzYS41LjUgMCAwIDAgMSAwdi0zem0yLjUgMGEuNS41IDAgMSAwLTEgMHYzYS41LjUgMCAwIDAgMSAwdi0zem0yLjUgMGEuNS41IDAgMSAwLTEgMHYzYS41LjUgMCAwIDAgMSAwdi0zem0yLjUgMGEuNS41IDAgMSAwLTEgMHYzYS41LjUgMCAwIDAgMSAwdi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCYXNrZXQyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjkyOSAxLjc1N2EuNS41IDAgMSAwLS44NTgtLjUxNEwyLjIxNyA2SC41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWguNjIzbDEuODQ0IDYuNDU2QS43NS43NSAwIDAgMCAzLjY5IDE1aDguNjIyYS43NS43NSAwIDAgMCAuNzIyLS41NDRMMTQuODc3IDhoLjYyM2EuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTEuNzE3TDEwLjkzIDEuMjQzYS41LjUgMCAxIDAtLjg1OC41MTRMMTIuNjE3IDZIMy4zODNMNS45MyAxLjc1N3pNNCAxMGExIDEgMCAwIDEgMiAwdjJhMSAxIDAgMSAxLTIgMHYtMnptMyAwYTEgMSAwIDAgMSAyIDB2MmExIDEgMCAxIDEtMiAwdi0yem00LTFhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDEgMS0yIDB2LTJhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQmFza2V0M0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43NTcgMS4wNzFhLjUuNSAwIDAgMSAuMTcyLjY4NkwzLjM4MyA2aDkuMjM0TDEwLjA3IDEuNzU3YS41LjUgMCAxIDEgLjg1OC0uNTE0TDEzLjc4MyA2SDE1LjVhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SC41YS41LjUgMCAwIDEtLjUtLjV2LTFBLjUuNSAwIDAgMSAuNSA2aDEuNzE3TDUuMDcgMS4yNDNhLjUuNSAwIDAgMSAuNjg2LS4xNzJ6TTIuNDY4IDE1LjQyNi45NDMgOWgxNC4xMTRsLTEuNTI1IDYuNDI2YS43NS43NSAwIDAgMS0uNzI5LjU3NEgzLjE5N2EuNzUuNzUgMCAwIDEtLjczLS41NzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJlbGxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZhMiAyIDAgMCAwIDItMkg2YTIgMiAwIDAgMCAyIDJ6bS45OTUtMTQuOTAxYTEgMSAwIDEgMC0xLjk5IDBBNS4wMDIgNS4wMDIgMCAwIDAgMyA2YzAgMS4wOTgtLjUgNi0yIDdoMTRjLTEuNS0xLTItNS45MDItMi03IDAtMi40Mi0xLjcyLTQuNDQtNC4wMDUtNC45MDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJlbGxTbGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xNjQgMTRIMTVjLTEuNS0xLTItNS45MDItMi03IDAtLjI2NC0uMDItLjUyMy0uMDYtLjc3Nkw1LjE2NCAxNHptNi4yODgtMTAuNjE3QTQuOTg4IDQuOTg4IDAgMCAwIDguOTk1IDIuMWExIDEgMCAxIDAtMS45OSAwQTUuMDAyIDUuMDAyIDAgMCAwIDMgN2MwIC44OTgtLjMzNSA0LjM0Mi0xLjI3OCA2LjExM2w5LjczLTkuNzN6TTEwIDE1YTIgMiAwIDEgMS00IDBoNHptLTkuMzc1LjYyNWEuNTMuNTMgMCAwIDAgLjc1Ljc1bDE0Ljc1LTE0Ljc1YS41My41MyAwIDAgMC0uNzUtLjc1TC42MjUgMTUuNjI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCaW5vY3VsYXJzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgMUExLjUgMS41IDAgMCAwIDMgMi41VjNoNHYtLjVBMS41IDEuNSAwIDAgMCA1LjUgMWgtMXpNNyA0djFoMlY0aDR2Ljg4MmEuNS41IDAgMCAwIC4yNzYuNDQ3bC44OTUuNDQ3QTEuNSAxLjUgMCAwIDEgMTUgNy4xMThWMTNIOXYtMS41YS41LjUgMCAwIDEgLjE0Ni0uMzU0bC44NTQtLjg1M1Y5LjVhLjUuNSAwIDAgMC0uNS0uNWgtM2EuNS41IDAgMCAwLS41LjV2Ljc5M2wuODU0Ljg1M0EuNS41IDAgMCAxIDcgMTEuNVYxM0gxVjcuMTE4YTEuNSAxLjUgMCAwIDEgLjgzLTEuMzQybC44OTQtLjQ0N0EuNS41IDAgMCAwIDMgNC44ODJWNGg0ek0xIDE0di41QTEuNSAxLjUgMCAwIDAgMi41IDE2aDNBMS41IDEuNSAwIDAgMCA3IDE0LjVWMTRIMXptOCAwdi41YTEuNSAxLjUgMCAwIDAgMS41IDEuNWgzYTEuNSAxLjUgMCAwIDAgMS41LTEuNVYxNEg5em00LTExSDl2LS41QTEuNSAxLjUgMCAwIDEgMTAuNSAxaDFBMS41IDEuNSAwIDAgMSAxMyAyLjVWM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQm9va0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxLjc4M0M3LjAxNS45MzYgNS41ODcuODEgNC4yODcuOTRjLTEuNTE0LjE1My0zLjA0Mi42NzItMy45OTQgMS4xMDVBLjUuNSAwIDAgMCAwIDIuNXYxMWEuNS41IDAgMCAwIC43MDcuNDU1Yy44ODItLjQgMi4zMDMtLjg4MSAzLjY4LTEuMDIgMS40MDktLjE0MiAyLjU5LjA4NyAzLjIyMy44NzdhLjUuNSAwIDAgMCAuNzggMGMuNjMzLS43OSAxLjgxNC0xLjAxOSAzLjIyMi0uODc3IDEuMzc4LjEzOSAyLjguNjIgMy42ODEgMS4wMkEuNS41IDAgMCAwIDE2IDEzLjV2LTExYS41LjUgMCAwIDAtLjI5My0uNDU1Yy0uOTUyLS40MzMtMi40OC0uOTUyLTMuOTk0LTEuMTA1QzEwLjQxMy44MDkgOC45ODUuOTM2IDggMS43ODN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJvb2ttYXJrQ2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDE1LjVWMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMy41YS41LjUgMCAwIDEtLjc0LjQzOUw4IDEzLjA2OWwtNS4yNiAyLjg3QS41LjUgMCAwIDEgMiAxNS41em04Ljg1NC05LjY0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw3LjUgNy43OTMgNi4zNTQgNi42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41YS41LjUgMCAwIDAgLjcwOCAwbDMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQm9va21hcmtEYXNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAxNS41VjJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NC40MzlMOCAxMy4wNjlsLTUuMjYgMi44N0EuNS41IDAgMCAxIDIgMTUuNXpNNiA2YS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQm9va21hcmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMnYxMy41YS41LjUgMCAwIDAgLjc0LjQzOUw4IDEzLjA2OWw1LjI2IDIuODdBLjUuNSAwIDAgMCAxNCAxNS41VjJhMiAyIDAgMCAwLTItMkg0YTIgMiAwIDAgMC0yIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJvb2ttYXJrSGVhcnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTUuNWEuNS41IDAgMCAwIC43NC40MzlMOCAxMy4wNjlsNS4yNiAyLjg3QS41LjUgMCAwIDAgMTQgMTUuNVYyYTIgMiAwIDAgMC0yLTJINGEyIDIgMCAwIDAtMiAydjEzLjV6TTggNC40MWMxLjM4Ny0xLjQyNSA0Ljg1NCAxLjA3IDAgNC4yNzdDMy4xNDYgNS40OCA2LjYxMyAyLjk4NiA4IDQuNDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCb29rbWFya1BsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDE1LjVWMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMy41YS41LjUgMCAwIDEtLjc0LjQzOUw4IDEzLjA2OWwtNS4yNiAyLjg3QS41LjUgMCAwIDEgMiAxNS41em02LjUtMTFhLjUuNSAwIDAgMC0xIDBWNkg2YS41LjUgMCAwIDAgMCAxaDEuNXYxLjVhLjUuNSAwIDAgMCAxIDBWN0gxMGEuNS41IDAgMCAwIDAtMUg4LjVWNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCb29rbWFya1N0YXJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDE1LjVWMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMy41YS41LjUgMCAwIDEtLjc0LjQzOUw4IDEzLjA2OWwtNS4yNiAyLjg3QS41LjUgMCAwIDEgMiAxNS41ek04LjE2IDQuMWEuMTc4LjE3OCAwIDAgMC0uMzIgMGwtLjYzNCAxLjI4NWEuMTc4LjE3OCAwIDAgMS0uMTM0LjA5OGwtMS40Mi4yMDZhLjE3OC4xNzggMCAwIDAtLjA5OC4zMDNMNi41OCA2Ljk5M2MuMDQyLjA0MS4wNjEuMS4wNTEuMTU4TDYuMzkgOC41NjVhLjE3OC4xNzggMCAwIDAgLjI1OC4xODdsMS4yNy0uNjY4YS4xNzguMTc4IDAgMCAxIC4xNjUgMGwxLjI3LjY2OGEuMTc4LjE3OCAwIDAgMCAuMjU3LS4xODdMOS4zNjggNy4xNWEuMTc4LjE3OCAwIDAgMSAuMDUtLjE1OGwxLjAyOC0xLjAwMWEuMTc4LjE3OCAwIDAgMC0uMDk4LS4zMDNsLTEuNDItLjIwNmEuMTc4LjE3OCAwIDAgMS0uMTM0LS4wOThMOC4xNiA0LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJvb2ttYXJrWEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTUuNVYyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEzLjVhLjUuNSAwIDAgMS0uNzQuNDM5TDggMTMuMDY5bC01LjI2IDIuODdBLjUuNSAwIDAgMSAyIDE1LjV6TTYuODU0IDUuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgNyA2LjE0NiA4LjE0NmEuNS41IDAgMSAwIC43MDguNzA4TDggNy43MDdsMS4xNDYgMS4xNDdhLjUuNSAwIDEgMCAuNzA4LS43MDhMOC43MDcgN2wxLjE0Ny0xLjE0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw4IDYuMjkzIDYuODU0IDUuMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCb29rbWFya3NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNGEyIDIgMCAwIDEgMi0yaDZhMiAyIDAgMCAxIDIgMnYxMS41YS41LjUgMCAwIDEtLjc3Ny40MTZMNyAxMy4xMDFsLTQuMjIzIDIuODE1QS41LjUgMCAwIDEgMiAxNS41VjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNjggMUEyIDIgMCAwIDEgNiAwaDZhMiAyIDAgMCAxIDIgMnYxMS41YS41LjUgMCAwIDEtLjc3Ny40MTZMMTMgMTMuNzY4VjJhMSAxIDAgMCAwLTEtMUg0LjI2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQm9vdHN0cmFwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjM3NSA3LjEyNVY0LjY1OGgxLjc4Yy45NzMgMCAxLjU0Mi40NTcgMS41NDIgMS4yMzcgMCAuODAyLS42MDQgMS4yMy0xLjc2NCAxLjIzSDYuMzc1em0wIDMuNzYyaDEuODk4YzEuMTg0IDAgMS44MS0uNDggMS44MS0xLjM3NyAwLS44ODUtLjY1LTEuMzQ4LTEuODg2LTEuMzQ4SDYuMzc1djIuNzI1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMDAyIDBhNCA0IDAgMCAwLTQgNHY4YTQgNCAwIDAgMCA0IDRoOGE0IDQgMCAwIDAgNC00VjRhNCA0IDAgMCAwLTQtNGgtOHptMS4wNiAxMlYzLjU0NWgzLjM5OWMxLjU4NyAwIDIuNTQzLjgwOSAyLjU0MyAyLjExIDAgLjg4NC0uNjUgMS42NzUtMS40ODMgMS44MTZ2LjFjMS4xNDMuMTE3IDEuOTA0LjkzMSAxLjkwNCAyLjAzMyAwIDEuNDg4LTEuMDg0IDIuMzk2LTIuODg4IDIuMzk2SDUuMDYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCcmllZmNhc2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxQTEuNSAxLjUgMCAwIDAgNSAyLjVWM0gxLjVBMS41IDEuNSAwIDAgMCAwIDQuNXYxLjM4NGw3LjYxNCAyLjAzYTEuNSAxLjUgMCAwIDAgLjc3MiAwTDE2IDUuODg0VjQuNUExLjUgMS41IDAgMCAwIDE0LjUgM0gxMXYtLjVBMS41IDEuNSAwIDAgMCA5LjUgMWgtM3ptMCAxaDNhLjUuNSAwIDAgMSAuNS41VjNINnYtLjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyLjVBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41VjYuODVMOC4xMjkgOC45NDdhLjUuNSAwIDAgMS0uMjU4IDBMMCA2Ljg1djUuNjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEJyaWdodG5lc3NBbHRIaWdoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDN6bTggOGEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMSAwLTFoMmEuNS41IDAgMCAxIC41LjV6bS0xMy41LjVhLjUuNSAwIDAgMCAwLTFoLTJhLjUuNSAwIDAgMCAwIDFoMnptMTEuMTU3LTYuMTU3YS41LjUgMCAwIDEgMCAuNzA3bC0xLjQxNCAxLjQxNGEuNS41IDAgMSAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptLTkuOSAyLjEyMWEuNS41IDAgMCAwIC43MDctLjcwN0wzLjA1IDUuMzQzYS41LjUgMCAxIDAtLjcwNy43MDdsMS40MTQgMS40MTR6TTggN2E0IDQgMCAwIDAtNCA0IC41LjUgMCAwIDAgLjUuNWg3YS41LjUgMCAwIDAgLjUtLjUgNCA0IDAgMCAwLTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQnJpZ2h0bmVzc0FsdExvd0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDUuNWEuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptNSA2YS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxek0yIDExYS41LjUgMCAxIDAgMSAwIC41LjUgMCAwIDAtMSAwem0xMC4yNDMtMy41MzZhLjUuNSAwIDEgMS0uNzA3LS43MDcuNS41IDAgMCAxIC43MDcuNzA3em0tOC40ODYtLjcwN2EuNS41IDAgMSAwIC43MDcuNzA3LjUuNSAwIDAgMC0uNzA3LS43MDd6TTggN2E0IDQgMCAwIDAtNCA0IC41LjUgMCAwIDAgLjUuNWg3YS41LjUgMCAwIDAgLjUtLjUgNCA0IDAgMCAwLTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQnJpZ2h0bmVzc0hpZ2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhhNCA0IDAgMSAxLTggMCA0IDQgMCAwIDEgOCAwek04IDBhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDB6bTAgMTNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDEzem04LTVhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJhLjUuNSAwIDAgMSAuNS41ek0zIDhhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJBLjUuNSAwIDAgMSAzIDh6bTEwLjY1Ny01LjY1N2EuNS41IDAgMCAxIDAgLjcwN2wtMS40MTQgMS40MTVhLjUuNSAwIDEgMS0uNzA3LS43MDhsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6bS05LjE5MyA5LjE5M2EuNS41IDAgMCAxIDAgLjcwN0wzLjA1IDEzLjY1N2EuNS41IDAgMCAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptOS4xOTMgMi4xMjFhLjUuNSAwIDAgMS0uNzA3IDBsLTEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA3ek00LjQ2NCA0LjQ2NWEuNS41IDAgMCAxLS43MDcgMEwyLjM0MyAzLjA1YS41LjUgMCAxIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCcmlnaHRuZXNzTG93RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiA4YTQgNCAwIDEgMS04IDAgNCA0IDAgMCAxIDggMHpNOC41IDIuNWEuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptMCAxMWEuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptNS01YS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0tMTEgMGEuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptOS43NDMtNC4wMzZhLjUuNSAwIDEgMS0uNzA3LS43MDcuNS41IDAgMCAxIC43MDcuNzA3em0tNy43NzkgNy43NzlhLjUuNSAwIDEgMS0uNzA3LS43MDcuNS41IDAgMCAxIC43MDcuNzA3em03LjA3MiAwYS41LjUgMCAxIDEgLjcwNy0uNzA3LjUuNSAwIDAgMS0uNzA3LjcwN3pNMy43NTcgNC40NjRhLjUuNSAwIDEgMSAuNzA3LS43MDcuNS41IDAgMCAxLS43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxCcnVzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODI1LjEyYS41LjUgMCAwIDEgLjEzMi41ODRjLTEuNTMgMy40My00Ljc0MyA4LjE3LTcuMDk1IDEwLjY0YTYuMDY3IDYuMDY3IDAgMCAxLTIuMzczIDEuNTM0Yy0uMDE4LjIyNy0uMDYuNTM4LS4xNi44NjgtLjIwMS42NTktLjY2NyAxLjQ3OS0xLjcwOCAxLjc0YTguMTE4IDguMTE4IDAgMCAxLTMuMDc4LjEzMiAzLjY1OSAzLjY1OSAwIDAgMS0uNTYyLS4xMzUgMS4zODIgMS4zODIgMCAwIDEtLjQ2Ni0uMjQ3LjcxNC43MTQgMCAwIDEtLjIwNC0uMjg4LjYyMi42MjIgMCAwIDEgLjAwNC0uNDQzYy4wOTUtLjI0NS4zMTYtLjM4LjQ2MS0uNDUyLjM5NC0uMTk3LjYyNS0uNDUzLjg2Ny0uODI2LjA5NS0uMTQ0LjE4NC0uMjk3LjI4Ny0uNDcybC4xMTctLjE5OGMuMTUxLS4yNTUuMzI2LS41NC41NDYtLjg0OC41MjgtLjczOSAxLjIwMS0uOTI1IDEuNzQ2LS44OTYuMTI2LjAwNy4yNDMuMDI1LjM0OC4wNDguMDYyLS4xNzIuMTQyLS4zOC4yMzgtLjYwOC4yNjEtLjYxOS42NTgtMS40MTkgMS4xODctMi4wNjkgMi4xNzYtMi42NyA2LjE4LTYuMjA2IDkuMTE3LTguMTA0YS41LjUgMCAwIDEgLjU5Ni4wNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQnVja2V0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUyMiA1SDJhLjUuNSAwIDAgMC0uNDk0LjU3NGwxLjM3MiA5LjE0OUExLjUgMS41IDAgMCAwIDQuMzYgMTZoNy4yNzhhMS41IDEuNSAwIDAgMCAxLjQ4My0xLjI3N2wxLjM3My05LjE0OUEuNS41IDAgMCAwIDE0IDVoLS41MjJBNS41IDUuNSAwIDAgMCAyLjUyMiA1em0xLjAwNSAwYTQuNSA0LjUgMCAwIDEgOC45NDUgMEgzLjUyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQnVnRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk3OC44NTVhLjUuNSAwIDEgMC0uOTU2LjI5bC40MSAxLjM1MkE0Ljk4NSA0Ljk4NSAwIDAgMCAzIDZoMTBhNC45ODUgNC45ODUgMCAwIDAtMS40MzItMy41MDNsLjQxLTEuMzUyYS41LjUgMCAxIDAtLjk1Ni0uMjlsLS4yOTEuOTU2QTQuOTc4IDQuOTc4IDAgMCAwIDggMWE0Ljk3OSA0Ljk3OSAwIDAgMC0yLjczMS44MTFsLS4yOS0uOTU2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZ2MUg4LjV2OC45NzVBNSA1IDAgMCAwIDEzIDExaC41YS41LjUgMCAwIDEgLjUuNXYuNWEuNS41IDAgMSAwIDEgMHYtLjVhMS41IDEuNSAwIDAgMC0xLjUtMS41SDEzVjloMS41YS41LjUgMCAwIDAgMC0xSDEzVjdoLjVBMS41IDEuNSAwIDAgMCAxNSA1LjVWNWEuNS41IDAgMCAwLTEgMHYuNWEuNS41IDAgMCAxLS41LjVIMTN6bS01LjUgOS45NzVWN0gzVjZoLS41YS41LjUgMCAwIDEtLjUtLjVWNWEuNS41IDAgMCAwLTEgMHYuNUExLjUgMS41IDAgMCAwIDIuNSA3SDN2MUgxLjVhLjUuNSAwIDAgMCAwIDFIM3YxaC0uNUExLjUgMS41IDAgMCAwIDEgMTEuNXYuNWEuNS41IDAgMSAwIDEgMHYtLjVhLjUuNSAwIDAgMSAuNS0uNUgzYTUgNSAwIDAgMCA0LjUgNC45NzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGN1bGF0b3JGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem0yIC41djJhLjUuNSAwIDAgMCAuNS41aDdhLjUuNSAwIDAgMCAuNS0uNXYtMmEuNS41IDAgMCAwLS41LS41aC03YS41LjUgMCAwIDAtLjUuNXptMCA0djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xYS41LjUgMCAwIDAtLjUuNXpNNC41IDlhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xek00IDEyLjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41ek03LjUgNmEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6TTcgOS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xYS41LjUgMCAwIDAtLjUuNXptLjUgMi41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpNMTAgNi41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xYS41LjUgMCAwIDAtLjUuNXptLjUgMi41YS41LjUgMCAwIDAtLjUuNXY0YS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTRhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXJDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6TTE2IDE0VjVIMHY5YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnptLTUuMTQ2LTUuMTQ2LTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMCAxIC43MDgtLjcwOEw3LjUgMTAuNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyRGF0ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6bTUuNDAyIDkuNzQ2Yy42MjUgMCAxLjE4NC0uNDg0IDEuMTg0LTEuMTggMC0uODMyLS41MjctMS4yMy0xLjE2LTEuMjMtLjU4NiAwLTEuMTY4LjM4Ny0xLjE2OCAxLjIxIDAgLjgxNy41NDMgMS4yIDEuMTQ0IDEuMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6bS02LjY2NC0xLjIxYy0xLjExIDAtMS42NTYtLjc2Ny0xLjcwMy0xLjQwN2guNjgzYy4wNDMuMzcuMzg3LjgyIDEuMDUxLjgyLjg0NCAwIDEuMzAxLS44NDggMS4zMDUtMi4xNjRoLS4wMjdjLS4xNTMuNDE0LS42MzcuNzktMS4zODMuNzktLjg1MiAwLTEuNjc2LS42MS0xLjY3Ni0xLjc3IDAtMS4xMzcuODcxLTEuODA5IDEuNzk3LTEuODA5IDEuMTcyIDAgMS45NTMuNzM0IDEuOTUzIDIuNjY4IDAgMS44MDUtLjc0MiAyLjg3MS0yIDIuODcxem0tMi44OS01LjQzNXY1LjMzMkg1Ljc3VjguMDc5aC0uMDEyYy0uMjkuMTU2LS44ODMuNTItMS4yNTguNzc3VjguMTZhMTIuNiAxMi42IDAgMCAxIDEuMzEzLS44MDVoLjYzMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXJEYXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0xNiAxNGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY1aDE2djl6bS00Ljc4NS02LjE0NWEuNDI4LjQyOCAwIDEgMCAwLS44NTUuNDI2LjQyNiAwIDAgMC0uNDMuNDNjMCAuMjM4LjE5Mi40MjUuNDMuNDI1em0uMzM2LjU2M2gtLjY3MnY0LjEwNWguNjcyVjguNDE4em0tNi44NjcgNC4xMDV2LTIuM2gyLjI2MXYtLjYxSDQuNjg0VjcuODAxaDIuNDY0di0uNjFINHY1LjMzMmguNjg0em0zLjI5NiAwaC42NzZWOS45OGMwLS41NTQuMjI3LTEuMDA3Ljk1My0xLjAwNy4xMjUgMCAuMjU4LjAwNC4zMjkuMDE1di0uNjEzYTEuODA2IDEuODA2IDAgMCAwLS4yNTQtLjAyYy0uNTgyIDAtLjg5MS4zMi0xLjAxMi41NjdoLS4wMnYtLjUwNEg3Ljk4djQuMTA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhckV2ZW50RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yem0tMy41LTdoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY1aDE2VjRIMFYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhck1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yek02IDEwaDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXJNb250aEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6bS4xMDQgNy4zMDVMNC45IDEwLjE4SDMuMjg0bC44LTIuMzc1aC4wMnptOS4wNzQgMi4yOTdjMC0uODMyLS40MTQtMS4zNi0xLjA2Mi0xLjM2LS42OTIgMC0xLjA5OC40OTItMS4wOTggMS4zNnYuMjUzYzAgLjg1Mi40MDYgMS4zNjQgMS4wOTggMS4zNjQuNjcxIDAgMS4wNjItLjUxNiAxLjA2Mi0xLjM2NHYtLjI1M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6TTIuNTYgMTIuMzMyaC0uNzFMMy43NDggN2guNjk2bDEuODk4IDUuMzMyaC0uNzE5bC0uNTM5LTEuNjAySDMuMWwtLjU0IDEuNjAyem03LjI5LTQuMTA1djQuMTA1aC0uNjY4di0uNTM5aC0uMDI3Yy0uMTQ1LjMyNC0uNTMyLjYwNS0xLjE4OC42MDUtLjg0NyAwLTEuNDUzLS40ODQtMS40NTMtMS40MjVWOC4yMjdoLjY3NnYyLjU1NGMwIC43NjYuNDQxIDEuMDEyLjk4IDEuMDEyLjU5IDAgMS4wMDQtLjM3MSAxLjAwNC0xLjAyM1Y4LjIyN2guNjc2em0xLjI3MyA0LjQxYy4wNzUuMzMyLjQyMi42MzYuOTg1LjYzNi42NDggMCAxLjA3LS4zNzggMS4wNy0xLjAyM3YtLjYwNWgtLjAyYy0uMTYzLjM1NS0uNjEzLjY0OC0xLjE3MS42NDgtLjk1NyAwLTEuNjQtLjY3Mi0xLjY0LTEuOTAydi0uMzRjMC0xLjIwNy42NzUtMS44ODcgMS42NC0xLjg4Ny41NTggMCAxLjAwNC4yOTMgMS4xOTUuNjRoLjAydi0uNTc3aC42NDh2NC4wM2MwIDEuMDUyLS44MTYgMS41NzktMS43NDYgMS41NzktMS4wNDMgMC0xLjU3NC0uNTE2LTEuNjY4LTEuMmguNjg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhclBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6TTguNSA4LjVWMTBIMTBhLjUuNSAwIDAgMSAwIDFIOC41djEuNWEuNS41IDAgMCAxLTEgMFYxMUg2YS41LjUgMCAwIDEgMC0xaDEuNVY4LjVhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyUmFuZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0xNiA3VjVIMHY1aDVhMSAxIDAgMSAxIDAgMkgwdjJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjloLTZhMSAxIDAgMSAxIDAtMmg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcldlZWtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6TTkuNSA3aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXptMyAwaDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXpNMiAxMC41YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptMy41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXJYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yek02Ljg1NCA4LjE0NiA4IDkuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgMTBsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDEwLjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgMTAgNi4xNDYgOC44NTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyMkNoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41em0tMi42IDUuODU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDcuNSAxMC43OTMgNi4zNTQgOS42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41YS41LjUgMCAwIDAgLjcwOCAwbDMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIyRGF0ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40MDIgMTAuMjQ2Yy42MjUgMCAxLjE4NC0uNDg0IDEuMTg0LTEuMTggMC0uODMyLS41MjctMS4yMy0xLjE2LTEuMjMtLjU4NiAwLTEuMTY4LjM4Ny0xLjE2OCAxLjIxIDAgLjgxNy41NDMgMS4yIDEuMTQ0IDEuMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41em0tNC4xMTggOS43OWMxLjI1OCAwIDItMS4wNjcgMi0yLjg3MiAwLTEuOTM0LS43ODEtMi42NjgtMS45NTMtMi42NjgtLjkyNiAwLTEuNzk3LjY3Mi0xLjc5NyAxLjgwOSAwIDEuMTYuODI0IDEuNzcgMS42NzYgMS43Ny43NDYgMCAxLjIzLS4zNzYgMS4zODMtLjc5aC4wMjdjLS4wMDQgMS4zMTYtLjQ2MSAyLjE2NC0xLjMwNSAyLjE2NC0uNjY0IDAtMS4wMDgtLjQ1LTEuMDUtLjgyaC0uNjg0Yy4wNDcuNjQuNTk0IDEuNDA2IDEuNzAzIDEuNDA2em0tMi44OS01LjQzNWgtLjYzM0ExMi42IDEyLjYgMCAwIDAgNC41IDguMTZ2LjY5NWMuMzc1LS4yNTcuOTY5LS42MiAxLjI1OC0uNzc3aC4wMTJ2NC42MWguNjc1VjcuMzU0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcjJEYXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXptOS45NTQgM0gyLjU0NWMtLjMgMC0uNTQ1LjIyNC0uNTQ1LjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjV6bS0yLjI0IDQuODU1YS40MjguNDI4IDAgMSAwIDAtLjg1NS40MjYuNDI2IDAgMCAwLS40MjkuNDNjMCAuMjM4LjE5Mi40MjUuNDMuNDI1em0uMzM3LjU2M2gtLjY3MnY0LjEwNWguNjcyVjguNDE4em0tNi44NjcgNC4xMDV2LTIuM2gyLjI2MXYtLjYxSDQuNjg0VjcuODAxaDIuNDY0di0uNjFINHY1LjMzMmguNjg0em0zLjI5NiAwaC42NzZWOS45OGMwLS41NTQuMjI3LTEuMDA3Ljk1My0xLjAwNy4xMjUgMCAuMjU4LjAwNC4zMjkuMDE1di0uNjEzYTEuODA2IDEuODA2IDAgMCAwLS4yNTQtLjAyYy0uNTgyIDAtLjg5MS4zMi0xLjAxMi41NjdoLS4wMnYtLjUwNEg3Ljk4djQuMTA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcjJFdmVudEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXpNMTEuNSA3YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjExYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0yLjU0NSAzaDEwLjkxYy4zIDAgLjU0NS4yMjQuNTQ1LjV2MWMwIC4yNzYtLjI0NC41LS41NDYuNUgyLjU0NUMyLjI0NSA1IDIgNC43NzYgMiA0LjV2LTFjMC0uMjc2LjI0NC0uNS41NDUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyMk1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41ek02IDEwYS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIyTW9udGhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTA0IDcuODA1IDQuOSAxMC4xOEgzLjI4NGwuOC0yLjM3NWguMDJ6bTkuMDc0IDIuMjk3YzAtLjgzMi0uNDE0LTEuMzYtMS4wNjItMS4zNi0uNjkyIDAtMS4wOTguNDkyLTEuMDk4IDEuMzZ2LjI1M2MwIC44NTIuNDA2IDEuMzY0IDEuMDk4IDEuMzY0LjY3MSAwIDEuMDYyLS41MTYgMS4wNjItMS4zNjR2LS4yNTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXpNMi41NjEgMTIuMzMyIDMuMSAxMC43M2gxLjk4NGwuNTQgMS42MDJoLjcxOEw0LjQ0NCA3aC0uNjk2TDEuODUgMTIuMzMyaC43MXpNOS44NSA4LjIyN2gtLjY3NnYyLjU0M2MwIC42NTItLjQxNCAxLjAyMy0xLjAwNCAxLjAyMy0uNTM5IDAtLjk4LS4yNDYtLjk4LTEuMDEyVjguMjI3aC0uNjc2djIuNzQ2YzAgLjk0MS42MDYgMS40MjUgMS40NTMgMS40MjUuNjU2IDAgMS4wNDMtLjI4IDEuMTg4LS42MDVoLjAyN3YuNTM5aC42NjhWOC4yMjd6bTEuMjczIDQuNDFoLS42ODdjLjA5NC42ODMuNjI1IDEuMTk5IDEuNjY4IDEuMTk5LjkzIDAgMS43NDYtLjUyNyAxLjc0Ni0xLjU3OFY4LjIyN2gtLjY0OXYuNTc4aC0uMDE5Yy0uMTkxLS4zNDgtLjYzNy0uNjQtMS4xOTUtLjY0LS45NjUgMC0xLjY0LjY3OS0xLjY0IDEuODg2di4zNGMwIDEuMjMuNjgzIDEuOTAyIDEuNjQgMS45MDIuNTU4IDAgMS4wMDgtLjI5MyAxLjE3Mi0uNjQ4aC4wMnYuNjA1YzAgLjY0NS0uNDIzIDEuMDIzLTEuMDcxIDEuMDIzLS41NjMgMC0uOTEtLjMwNC0uOTg1LS42MzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyMlBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAzLjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjVIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41em02LjUgNWEuNS41IDAgMCAwLTEgMFYxMEg2YS41LjUgMCAwIDAgMCAxaDEuNXYxLjVhLjUuNSAwIDAgMCAxIDBWMTFIMTBhLjUuNSAwIDAgMCAwLTFIOC41VjguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIyUmFuZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXptOS45NTQgM0gyLjU0NWMtLjMgMC0uNTQ1LjIyNC0uNTQ1LjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjV6TTEwIDdhMSAxIDAgMCAwIDAgMmg1VjdoLTV6bS00IDRhMSAxIDAgMCAwLTEtMUgxdjJoNGExIDEgMCAwIDAgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcjJXZWVrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41ek04LjUgN2EuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6bTMgMGEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6TTMgMTAuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV6bTMuNS0uNWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbGVuZGFyMlhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXptOS45NTQgM0gyLjU0NWMtLjMgMC0uNTQ1LjIyNC0uNTQ1LjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjV6bS02LjYgNS4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw3LjI5MyAxMGwtMS4xNDcgMS4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOEw4IDEwLjcwN2wxLjE0NiAxLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOEw4LjcwNyAxMGwxLjE0Ny0xLjE0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw4IDkuMjkzIDYuODU0IDguMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcjNFdmVudEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAyaDE2YTIgMiAwIDAgMC0yLTJIMnpNMCAxNFYzaDE2djExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yem0xMi04YTEgMSAwIDEgMCAyIDAgMSAxIDAgMCAwLTIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAySDB6bTAgMXYxMWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWM0gwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYWxlbmRhcjNSYW5nZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAyaDE2YTIgMiAwIDAgMC0yLTJIMnpNMCA4VjNoMTZ2MmgtNmExIDEgMCAxIDAgMCAyaDZ2N2EyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnYtNGg2YTEgMSAwIDEgMCAwLTJIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FsZW5kYXIzV2Vla0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAyaDE2YTIgMiAwIDAgMC0yLTJIMnpNMCAxNFYzaDE2djExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yem0xMi04YTEgMSAwIDEgMCAyIDAgMSAxIDAgMCAwLTIgMHpNNSA5YTEgMSAwIDEgMCAyIDAgMSAxIDAgMCAwLTIgMHptNS0yYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpNMiA5YTEgMSAwIDEgMCAyIDAgMSAxIDAgMCAwLTIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FtZXJhRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDguNWEyLjUgMi41IDAgMSAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDRhMiAyIDAgMCAwLTIgMnY2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJoLTEuMTcyYTIgMiAwIDAgMS0xLjQxNC0uNTg2bC0uODI4LS44MjhBMiAyIDAgMCAwIDkuMTcyIDJINi44MjhhMiAyIDAgMCAwLTEuNDE0LjU4NmwtLjgyOC44MjhBMiAyIDAgMCAxIDMuMTcyIDRIMnptLjUgMmEuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptOSAyLjVhMy41IDMuNSAwIDEgMS03IDAgMy41IDMuNSAwIDAgMSA3IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbWVyYVJlZWxzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2aC41YTIgMiAwIDAgMSAxLjk4MyAxLjczOGwzLjExLTEuMzgyQTEgMSAwIDAgMSAxNiA3LjI2OXY3LjQ2MmExIDEgMCAwIDEtMS40MDYuOTEzbC0zLjExMS0xLjM4MkEyIDIgMCAwIDEgOS41IDE2SDJhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FtZXJhVmlkZW9GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0wIDVhMiAyIDAgMCAxIDItMmg3LjVhMiAyIDAgMCAxIDEuOTgzIDEuNzM4bDMuMTEtMS4zODJBMSAxIDAgMCAxIDE2IDQuMjY5djcuNDYyYTEgMSAwIDAgMS0xLjQwNi45MTNsLTMuMTExLTEuMzgyQTIgMiAwIDAgMSA5LjUgMTNIMmEyIDIgMCAwIDEtMi0yVjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhbWVyYVZpZGVvT2ZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuOTYxIDEyLjM2NWExLjk5IDEuOTkgMCAwIDAgLjUyMi0xLjEwM2wzLjExIDEuMzgyQTEgMSAwIDAgMCAxNiAxMS43MzFWNC4yNjlhMSAxIDAgMCAwLTEuNDA2LS45MTNsLTMuMTExIDEuMzgyQTIgMiAwIDAgMCA5LjUgM0g0LjI3Mmw2LjY5IDkuMzY1em0tMTAuMTE0LTlBMi4wMDEgMi4wMDEgMCAwIDAgMCA1djZhMiAyIDAgMCAwIDIgMmg1LjcyOEwuODQ3IDMuMzY2em05Ljc0NiAxMS45MjUtMTAtMTQgLjgxNC0uNTggMTAgMTQtLjgxNC41OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2Fwc2xvY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjcgMS4wNDdhMSAxIDAgMCAxIDEuNDYgMGw2LjM0NSA2Ljc3Yy42LjYzOC4xNDYgMS42ODMtLjczIDEuNjgzSDExLjV2MWExIDEgMCAwIDEtMSAxaC01YTEgMSAwIDAgMS0xLTF2LTFIMS42NTRDLjc4IDkuNS4zMjYgOC40NTUuOTI0IDcuODE2TDcuMjcgMS4wNDd6TTQuNSAxMy41YTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjFhMSAxIDAgMCAxLTEgMWgtNWExIDEgMCAwIDEtMS0xdi0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYXJldERvd25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjQ3IDExLjE0IDIuNDUxIDUuNjU4QzEuODg1IDUuMDEzIDIuMzQ1IDQgMy4yMDQgNGg5LjU5MmExIDEgMCAwIDEgLjc1MyAxLjY1OWwtNC43OTYgNS40OGExIDEgMCAwIDEtMS41MDYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FyZXREb3duU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTQgNGEuNS41IDAgMCAwLS4zNzQuODMybDQgNC41YS41LjUgMCAwIDAgLjc0OCAwbDQtNC41QS41LjUgMCAwIDAgMTIgNkg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYXJldExlZnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTMuODYgOC43NTMgNS40ODIgNC43OTZjLjY0Ni41NjYgMS42NTguMTA2IDEuNjU4LS43NTNWMy4yMDRhMSAxIDAgMCAwLTEuNjU5LS43NTNsLTUuNDggNC43OTZhMSAxIDAgMCAwIDAgMS41MDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhcmV0TGVmdFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem0xMC41IDEwVjRhLjUuNSAwIDAgMC0uODMyLS4zNzRsLTQuNSA0YS41LjUgMCAwIDAgMCAuNzQ4bDQuNSA0QS41LjUgMCAwIDAgMTAuNSAxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FyZXRSaWdodEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMTQgOC43NTMtNS40ODIgNC43OTZjLS42NDYuNTY2LTEuNjU4LjEwNi0xLjY1OC0uNzUzVjMuMjA0YTEgMSAwIDAgMSAxLjY1OS0uNzUzbDUuNDggNC43OTZhMSAxIDAgMCAxIDAgMS41MDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhcmV0UmlnaHRTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptNS41IDEwYS41LjUgMCAwIDAgLjgzMi4zNzRsNC41LTRhLjUuNSAwIDAgMCAwLS43NDhsLTQuNS00QS41LjUgMCAwIDAgNS41IDR2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FyZXRVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhcmV0VXBTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptNCA5aDhhLjUuNSAwIDAgMCAuMzc0LS44MzJsLTQtNC41YS41LjUgMCAwIDAtLjc0OCAwbC00IDQuNUEuNS41IDAgMCAwIDQgMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhcnRDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMWEuNS41IDAgMCAwIDAgMWgxLjExbC40MDEgMS42MDcgMS40OTggNy45ODVBLjUuNSAwIDAgMCA0IDEyaDFhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDdhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDFhLjUuNSAwIDAgMCAuNDkxLS40MDhsMS41LThBLjUuNSAwIDAgMCAxNC41IDNIMi44OWwtLjQwNS0xLjYyMUEuNS41IDAgMCAwIDIgMUguNXpNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bS0xLjY0Ni03LjY0Ni0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTEuNS0xLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMOCA4LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDYXJ0RGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMWEuNS41IDAgMCAwIDAgMWgxLjExbC40MDEgMS42MDcgMS40OTggNy45ODVBLjUuNSAwIDAgMCA0IDEyaDFhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDdhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDFhLjUuNSAwIDAgMCAuNDkxLS40MDhsMS41LThBLjUuNSAwIDAgMCAxNC41IDNIMi44OWwtLjQwNS0xLjYyMUEuNS41IDAgMCAwIDIgMUguNXpNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTYuNSA3aDRhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENhcnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMS41QS41LjUgMCAwIDEgLjUgMUgyYS41LjUgMCAwIDEgLjQ4NS4zNzlMMi44OSAzSDE0LjVhLjUuNSAwIDAgMSAuNDkxLjU5MmwtMS41IDhBLjUuNSAwIDAgMSAxMyAxMkg0YS41LjUgMCAwIDEtLjQ5MS0uNDA4TDIuMDEgMy42MDcgMS42MSAySC41YS41LjUgMCAwIDEtLjUtLjV6TTUgMTJhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00em03IDBhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00em0tNyAxYTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnptNyAwYTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FydFBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDFhLjUuNSAwIDAgMCAwIDFoMS4xMWwuNDAxIDEuNjA3IDEuNDk4IDcuOTg1QS41LjUgMCAwIDAgNCAxMmgxYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGg3YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGgxYS41LjUgMCAwIDAgLjQ5MS0uNDA4bDEuNS04QS41LjUgMCAwIDAgMTQuNSAzSDIuODlsLS40MDUtMS42MjFBLjUuNSAwIDAgMCAyIDFILjV6TTYgMTRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem03IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwek05IDUuNVY3aDEuNWEuNS41IDAgMCAxIDAgMUg5djEuNWEuNS41IDAgMCAxLTEgMFY4SDYuNWEuNS41IDAgMCAxIDAtMUg4VjUuNWEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2FydFhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDFhLjUuNSAwIDAgMCAwIDFoMS4xMWwuNDAxIDEuNjA3IDEuNDk4IDcuOTg1QS41LjUgMCAwIDAgNCAxMmgxYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGg3YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGgxYS41LjUgMCAwIDAgLjQ5MS0uNDA4bDEuNS04QS41LjUgMCAwIDAgMTQuNSAzSDIuODlsLS40MDUtMS42MjFBLjUuNSAwIDAgMCAyIDFILjV6TTYgMTRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem03IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwek03LjM1NCA1LjY0NiA4LjUgNi43OTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOEw5LjIwNyA3LjVsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgOC4yMDcgNy4zNTQgOS4zNTRhLjUuNSAwIDEgMS0uNzA4LS43MDhMNy43OTMgNy41IDYuNjQ2IDYuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0RG90c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOGMwIDMuODY2LTMuNTgyIDctOCA3YTkuMDYgOS4wNiAwIDAgMS0yLjM0Ny0uMzA2Yy0uNTg0LjI5Ni0xLjkyNS44NjQtNC4xODEgMS4yMzQtLjIuMDMyLS4zNTItLjE3Ni0uMjczLS4zNjIuMzU0LS44MzYuNjc0LTEuOTUuNzctMi45NjZDLjc0NCAxMS4zNyAwIDkuNzYgMCA4YzAtMy44NjYgMy41ODItNyA4LTdzOCAzLjEzNCA4IDd6TTUgOGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTQgMGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTMgMWExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENoYXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVjNC40MTggMCA4LTMuMTM0IDgtN3MtMy41ODItNy04LTctOCAzLjEzNC04IDdjMCAxLjc2Ljc0MyAzLjM3IDEuOTcgNC42LS4wOTcgMS4wMTYtLjQxNyAyLjEzLS43NzEgMi45NjYtLjA3OS4xODYuMDc0LjM5NC4yNzMuMzYyIDIuMjU2LS4zNyAzLjU5Ny0uOTM4IDQuMTgtMS4yMzRBOS4wNiA5LjA2IDAgMCAwIDggMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENoYXRMZWZ0RG90c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINC40MTRhMSAxIDAgMCAwLS43MDcuMjkzTC44NTQgMTUuMTQ2QS41LjUgMCAwIDEgMCAxNC43OTNWMnptNSA0YTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHptNCAwYTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHptMyAxYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdExlZnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyLjc5M2EuNS41IDAgMCAwIC44NTQuMzUzbDIuODUzLTIuODUzQTEgMSAwIDAgMSA0LjQxNCAxMkgxNGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0TGVmdFF1b3RlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkg0LjQxNGExIDEgMCAwIDAtLjcwNy4yOTNMLjg1NCAxNS4xNDZBLjUuNSAwIDAgMSAwIDE0Ljc5M1Yyem03LjE5NCAyLjc2NmExLjY4OCAxLjY4OCAwIDAgMC0uMjI3LS4yNzIgMS40NjcgMS40NjcgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgNS43MzQgNEM0Ljc3NiA0IDQgNC43NDYgNCA1LjY2N2MwIC45Mi43NzYgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjYtLjEzNy4zODktLjM5LjgwNC0uODEgMS4yMmEuNDA1LjQwNSAwIDAgMCAuMDExLjU5Yy4xNzMuMTYuNDQ3LjE1NS42MTQtLjAxIDEuMzM0LTEuMzI5IDEuMzctMi43NTguOTQxLTMuNzA2YTIuNDYxIDIuNDYxIDAgMCAwLS4yMjctLjR6TTExIDcuMDczYy0uMTM2LjM4OS0uMzkuODA0LS44MSAxLjIyYS40MDUuNDA1IDAgMCAwIC4wMTIuNTljLjE3Mi4xNi40NDYuMTU1LjYxMy0uMDEgMS4zMzQtMS4zMjkgMS4zNy0yLjc1OC45NDItMy43MDZhMi40NjYgMi40NjYgMCAwIDAtLjIyOC0uNCAxLjY4NiAxLjY4NiAwIDAgMC0uMjI3LS4yNzMgMS40NjYgMS40NjYgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgMTAuMDcgNGMtLjk1NyAwLTEuNzM0Ljc0Ni0xLjczNCAxLjY2NyAwIC45Mi43NzcgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENoYXRMZWZ0VGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINC40MTRhMSAxIDAgMCAwLS43MDcuMjkzTC44NTQgMTUuMTQ2QS41LjUgMCAwIDEgMCAxNC43OTNWMnptMy41IDFhLjUuNSAwIDAgMCAwIDFoOWEuNS41IDAgMCAwIDAtMWgtOXptMCAyLjVhLjUuNSAwIDAgMCAwIDFoOWEuNS41IDAgMCAwIDAtMWgtOXptMCAyLjVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdFF1b3RlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4YzAgMy44NjYtMy41ODIgNy04IDdhOS4wNiA5LjA2IDAgMCAxLTIuMzQ3LS4zMDZjLS41ODQuMjk2LTEuOTI1Ljg2NC00LjE4MSAxLjIzNC0uMi4wMzItLjM1Mi0uMTc2LS4yNzMtLjM2Mi4zNTQtLjgzNi42NzQtMS45NS43Ny0yLjk2NkMuNzQ0IDExLjM3IDAgOS43NiAwIDhjMC0zLjg2NiAzLjU4Mi03IDgtN3M4IDMuMTM0IDggN3pNNy4xOTQgNi43NjZhMS42ODggMS42ODggMCAwIDAtLjIyNy0uMjcyIDEuNDY3IDEuNDY3IDAgMCAwLS40NjktLjMyNGwtLjAwOC0uMDA0QTEuNzg1IDEuNzg1IDAgMCAwIDUuNzM0IDZDNC43NzYgNiA0IDYuNzQ2IDQgNy42NjdjMCAuOTIuNzc2IDEuNjY2IDEuNzM0IDEuNjY2LjM0MyAwIC42NjItLjA5NS45MzEtLjI2LS4xMzcuMzg5LS4zOS44MDQtLjgxIDEuMjJhLjQwNS40MDUgMCAwIDAgLjAxMS41OWMuMTczLjE2LjQ0Ny4xNTUuNjE0LS4wMSAxLjMzNC0xLjMyOSAxLjM3LTIuNzU4Ljk0MS0zLjcwNmEyLjQ2MSAyLjQ2MSAwIDAgMC0uMjI3LS40ek0xMSA5LjA3M2MtLjEzNi4zODktLjM5LjgwNC0uODEgMS4yMmEuNDA1LjQwNSAwIDAgMCAuMDEyLjU5Yy4xNzIuMTYuNDQ2LjE1NS42MTMtLjAxIDEuMzM0LTEuMzI5IDEuMzctMi43NTguOTQyLTMuNzA2YTIuNDY2IDIuNDY2IDAgMCAwLS4yMjgtLjQgMS42ODYgMS42ODYgMCAwIDAtLjIyNy0uMjczIDEuNDY2IDEuNDY2IDAgMCAwLS40NjktLjMyNGwtLjAwOC0uMDA0QTEuNzg1IDEuNzg1IDAgMCAwIDEwLjA3IDZjLS45NTcgMC0xLjczNC43NDYtMS43MzQgMS42NjcgMCAuOTIuNzc3IDEuNjY2IDEuNzM0IDEuNjY2LjM0MyAwIC42NjItLjA5NS45MzEtLjI2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0UmlnaHREb3RzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyYTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjU4NmExIDEgMCAwIDEgLjcwNy4yOTNsMi44NTMgMi44NTNhLjUuNSAwIDAgMCAuODU0LS4zNTNWMnpNNSA2YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptNCAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptMyAxYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdFJpZ2h0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwYTIgMiAwIDAgMSAyIDJ2MTIuNzkzYS41LjUgMCAwIDEtLjg1NC4zNTNsLTIuODUzLTIuODUzYTEgMSAwIDAgMC0uNzA3LS4yOTNIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdFJpZ2h0UXVvdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuNTg2YTEgMSAwIDAgMSAuNzA3LjI5M2wyLjg1MyAyLjg1M2EuNS41IDAgMCAwIC44NTQtLjM1M1Yyek03LjE5NCA0Ljc2NmMuMDg3LjEyNC4xNjMuMjYuMjI3LjQwMS40MjguOTQ4LjM5MyAyLjM3Ny0uOTQyIDMuNzA2YS40NDYuNDQ2IDAgMCAxLS42MTIuMDEuNDA1LjQwNSAwIDAgMS0uMDExLS41OWMuNDE5LS40MTYuNjcyLS44MzEuODA5LTEuMjItLjI2OS4xNjUtLjU4OC4yNi0uOTMuMjZDNC43NzUgNy4zMzMgNCA2LjU4NyA0IDUuNjY3IDQgNC43NDcgNC43NzYgNCA1LjczNCA0Yy4yNzEgMCAuNTI4LjA2Ljc1Ni4xNjZsLjAwOC4wMDRjLjE2OS4wNy4zMjcuMTgyLjQ2OS4zMjQuMDg1LjA4My4xNjEuMTc0LjIyNy4yNzJ6TTExIDcuMDczYy0uMjY5LjE2NS0uNTg4LjI2LS45My4yNi0uOTU4IDAtMS43MzUtLjc0Ni0xLjczNS0xLjY2NiAwLS45Mi43NzctMS42NjcgMS43MzQtMS42NjcuMjcxIDAgLjUyOC4wNi43NTYuMTY2bC4wMDguMDA0Yy4xNy4wNy4zMjcuMTgyLjQ2OS4zMjQuMDg1LjA4My4xNjEuMTc0LjIyNy4yNzIuMDg3LjEyNC4xNjQuMjYuMjI4LjQwMS40MjguOTQ4LjM5MiAyLjM3Ny0uOTQyIDMuNzA2YS40NDYuNDQ2IDAgMCAxLS42MTMuMDEuNDA1LjQwNSAwIDAgMS0uMDExLS41OWMuNDItLjQxNi42NzItLjgzMS44MS0xLjIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0UmlnaHRUZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyYTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmg5LjU4NmExIDEgMCAwIDEgLjcwNy4yOTNsMi44NTMgMi44NTNhLjUuNSAwIDAgMCAuODU0LS4zNTNWMnpNMy41IDNoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxIDAtMXptMCAyLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxIDAtMXptMCAyLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdFNxdWFyZURvdHNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0yLjVhMSAxIDAgMCAwLS44LjRsLTEuOSAyLjUzM2ExIDEgMCAwIDEtMS42IDBMNS4zIDEyLjRhMSAxIDAgMCAwLS44LS40SDJhMiAyIDAgMCAxLTItMlYyem01IDRhMSAxIDAgMSAwLTIgMCAxIDEgMCAwIDAgMiAwem00IDBhMSAxIDAgMSAwLTIgMCAxIDEgMCAwIDAgMiAwem0zIDFhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMi41YTEgMSAwIDAgMSAuOC40bDEuOSAyLjUzM2ExIDEgMCAwIDAgMS42IDBsMS45LTIuNTMzYTEgMSAwIDAgMSAuOC0uNEgxNGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGF0U3F1YXJlUXVvdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0yLjVhMSAxIDAgMCAwLS44LjRsLTEuOSAyLjUzM2ExIDEgMCAwIDEtMS42IDBMNS4zIDEyLjRhMSAxIDAgMCAwLS44LS40SDJhMiAyIDAgMCAxLTItMlYyem03LjE5NCAyLjc2NmExLjY4OCAxLjY4OCAwIDAgMC0uMjI3LS4yNzIgMS40NjcgMS40NjcgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgNS43MzQgNEM0Ljc3NiA0IDQgNC43NDYgNCA1LjY2N2MwIC45Mi43NzYgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjYtLjEzNy4zODktLjM5LjgwNC0uODEgMS4yMmEuNDA1LjQwNSAwIDAgMCAuMDExLjU5Yy4xNzMuMTYuNDQ3LjE1NS42MTQtLjAxIDEuMzM0LTEuMzI5IDEuMzctMi43NTguOTQxLTMuNzA2YTIuNDYxIDIuNDYxIDAgMCAwLS4yMjctLjR6TTExIDcuMDczYy0uMTM2LjM4OS0uMzkuODA0LS44MSAxLjIyYS40MDUuNDA1IDAgMCAwIC4wMTIuNTljLjE3Mi4xNi40NDYuMTU1LjYxMy0uMDEgMS4zMzQtMS4zMjkgMS4zNy0yLjc1OC45NDItMy43MDZhMi40NjYgMi40NjYgMCAwIDAtLjIyOC0uNCAxLjY4NiAxLjY4NiAwIDAgMC0uMjI3LS4yNzMgMS40NjYgMS40NjYgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgMTAuMDcgNGMtLjk1NyAwLTEuNzM0Ljc0Ni0xLjczNCAxLjY2NyAwIC45Mi43NzcgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENoYXRTcXVhcmVUZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMmgtMi41YTEgMSAwIDAgMC0uOC40bC0xLjkgMi41MzNhMSAxIDAgMCAxLTEuNiAwTDUuMyAxMi40YTEgMSAwIDAgMC0uOC0uNEgyYTIgMiAwIDAgMS0yLTJWMnptMy41IDFhLjUuNSAwIDAgMCAwIDFoOWEuNS41IDAgMCAwIDAtMWgtOXptMCAyLjVhLjUuNSAwIDAgMCAwIDFoOWEuNS41IDAgMCAwIDAtMWgtOXptMCAyLjVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hhdFRleHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhjMCAzLjg2Ni0zLjU4MiA3LTggN2E5LjA2IDkuMDYgMCAwIDEtMi4zNDctLjMwNmMtLjU4NC4yOTYtMS45MjUuODY0LTQuMTgxIDEuMjM0LS4yLjAzMi0uMzUyLS4xNzYtLjI3My0uMzYyLjM1NC0uODM2LjY3NC0xLjk1Ljc3LTIuOTY2Qy43NDQgMTEuMzcgMCA5Ljc2IDAgOGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3ek00LjUgNWEuNS41IDAgMCAwIDAgMWg3YS41LjUgMCAwIDAgMC0xaC03em0wIDIuNWEuNS41IDAgMCAwIDAgMWg3YS41LjUgMCAwIDAgMC0xaC03em0wIDIuNWEuNS41IDAgMCAwIDAgMWg0YS41LjUgMCAwIDAgMC0xaC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDaGVja0NpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tMy45Ny0zLjAzYS43NS43NSAwIDAgMC0xLjA4LjAyMkw3LjQ3NyA5LjQxNyA1LjM4NCA3LjMyM2EuNzUuNzUgMCAwIDAtMS4wNiAxLjA2TDYuOTcgMTEuMDNhLjc1Ljc1IDAgMCAwIDEuMDc5LS4wMmwzLjk5Mi00Ljk5YS43NS43NSAwIDAgMC0uMDEtMS4wNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2hlY2tTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMTAuMDMgNC45N2EuNzUuNzUgMCAwIDEgLjAxMSAxLjA1bC0zLjk5MiA0Ljk5YS43NS43NSAwIDAgMS0xLjA4LjAyTDQuMzI0IDguMzg0YS43NS43NSAwIDEgMSAxLjA2LTEuMDZsMi4wOTQgMi4wOTMgMy40NzMtNC40MjVhLjc1Ljc1IDAgMCAxIDEuMDgtLjAyMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI4XCIsXCJyXCI6XCI4XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb2NrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTggMy41YS41LjUgMCAwIDAtMSAwVjlhLjUuNSAwIDAgMCAuMjUyLjQzNGwzLjUgMmEuNS41IDAgMCAwIC40OTYtLjg2OEw4IDguNzFWMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZEFycm93RG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyYTUuNTMgNS41MyAwIDAgMC0zLjU5NCAxLjM0MmMtLjc2Ni42Ni0xLjMyMSAxLjUyLTEuNDY0IDIuMzgzQzEuMjY2IDYuMDk1IDAgNy41NTUgMCA5LjMxOCAwIDExLjM2NiAxLjcwOCAxMyAzLjc4MSAxM2g4LjkwNkMxNC41MDIgMTMgMTYgMTEuNTcgMTYgOS43NzNjMC0xLjYzNi0xLjI0Mi0yLjk2OS0yLjgzNC0zLjE5NEMxMi45MjMgMy45OTkgMTAuNjkgMiA4IDJ6bTIuMzU0IDYuODU0LTIgMmEuNS41IDAgMCAxLS43MDggMGwtMi0yYS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA5LjI5M1Y1LjVhLjUuNSAwIDAgMSAxIDB2My43OTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRBcnJvd1VwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhNS41MyA1LjUzIDAgMCAwLTMuNTk0IDEuMzQyYy0uNzY2LjY2LTEuMzIxIDEuNTItMS40NjQgMi4zODNDMS4yNjYgNi4wOTUgMCA3LjU1NSAwIDkuMzE4IDAgMTEuMzY2IDEuNzA4IDEzIDMuNzgxIDEzaDguOTA2QzE0LjUwMiAxMyAxNiAxMS41NyAxNiA5Ljc3M2MwLTEuNjM2LTEuMjQyLTIuOTY5LTIuODM0LTMuMTk0QzEyLjkyMyAzLjk5OSAxMC42OSAyIDggMnptMi4zNTQgNS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNi43MDdWMTAuNWEuNS41IDAgMCAxLTEgMFY2LjcwN0w2LjM1NCA3Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwyLTJhLjUuNSAwIDAgMSAuNzA4IDBsMiAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZENoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhNS41MyA1LjUzIDAgMCAwLTMuNTk0IDEuMzQyYy0uNzY2LjY2LTEuMzIxIDEuNTItMS40NjQgMi4zODNDMS4yNjYgNi4wOTUgMCA3LjU1NSAwIDkuMzE4IDAgMTEuMzY2IDEuNzA4IDEzIDMuNzgxIDEzaDguOTA2QzE0LjUwMiAxMyAxNiAxMS41NyAxNiA5Ljc3M2MwLTEuNjM2LTEuMjQyLTIuOTY5LTIuODM0LTMuMTk0QzEyLjkyMyAzLjk5OSAxMC42OSAyIDggMnptMi4zNTQgNC44NTQtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcgOC43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWREb3dubG9hZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMGE1LjUzIDUuNTMgMCAwIDAtMy41OTQgMS4zNDJjLS43NjYuNjYtMS4zMjEgMS41Mi0xLjQ2NCAyLjM4M0MxLjI2NiA0LjA5NSAwIDUuNTU1IDAgNy4zMTggMCA5LjM2NiAxLjcwOCAxMSAzLjc4MSAxMUg3LjVWNS41YS41LjUgMCAwIDEgMSAwVjExaDQuMTg4QzE0LjUwMiAxMSAxNiA5LjU3IDE2IDcuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDEuOTk5IDEwLjY5IDAgOCAwem0tLjM1NCAxNS44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMy0zYS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSAxNC4yOTNWMTFoLTF2My4yOTNsLTIuMTQ2LTIuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZERyaXp6bGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTU4IDEyLjAyNWEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em02IDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAwIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptLTMuNSAxLjVhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAwIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptNiAwYS41LjUgMCAwIDEgLjMxNi42MzNsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bS43NDctOC40OThhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTFIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjQwNiAzLjM0MkE1LjUzIDUuNTMgMCAwIDEgOCAyYzIuNjkgMCA0LjkyMyAyIDUuMTY2IDQuNTc5QzE0Ljc1OCA2LjgwNCAxNiA4LjEzNyAxNiA5Ljc3MyAxNiAxMS41NjkgMTQuNTAyIDEzIDEyLjY4NyAxM0gzLjc4MUMxLjcwOCAxMyAwIDExLjM2NiAwIDkuMzE4YzAtMS43NjMgMS4yNjYtMy4yMjMgMi45NDItMy41OTMuMTQzLS44NjMuNjk4LTEuNzIzIDEuNDY0LTIuMzgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZEZvZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMy41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTEwLjQwNS05LjQ3M2E1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMkgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRGb2cyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgM2E1LjAwMSA1LjAwMSAwIDAgMSA0LjkwNSA0LjAyN0EzIDMgMCAwIDEgMTMgMTNoLTEuNWEuNS41IDAgMCAwIDAtMUgxLjA1YTMuNTEgMy41MSAwIDAgMS0uNzEzLTFIOS41YS41LjUgMCAwIDAgMC0xSC4wMzVhMy41MyAzLjUzIDAgMCAxIDAtMUg3LjVhLjUuNSAwIDAgMCAwLTFILjMzN2EzLjUgMy41IDAgMCAxIDMuNTctMS45NzdBNS4wMDEgNS4wMDEgMCAwIDEgOC41IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkSGFpbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy43NSAxNS4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0uNDA4LTMuNzI0YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6TTcuNzUgMTUuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptLjQwOC0zLjcyNGEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em0zLjU5MiAzLjcyNGEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0uNDA4LTMuNzI0YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bTEuMjQ3LTYuOTk5YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwLjVIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkSGF6ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMS41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0tMyAyYS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0yIDJhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6TTEzLjQwNSA0LjAyN2E1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMEgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRIYXplMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDJhNS4wMDEgNS4wMDEgMCAwIDEgNC45MDUgNC4wMjdBMyAzIDAgMCAxIDEzIDEySDMuNUEzLjUgMy41IDAgMCAxIC4wMzUgOUg1LjVhLjUuNSAwIDAgMCAwLTFILjAzNWEzLjUgMy41IDAgMCAxIDMuODcxLTIuOTc3QTUuMDAxIDUuMDAxIDAgMCAxIDguNSAyem0tNiA4YS41LjUgMCAwIDAgMCAxaDlhLjUuNSAwIDAgMCAwLTFoLTl6TTAgMTMuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRMaWdodG5pbmdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDUzIDExLjI3NkEuNS41IDAgMCAxIDcuNSAxMWgxYS41LjUgMCAwIDEgLjQ3NC42NThsLS4yOC44NDJIOS41YS41LjUgMCAwIDEgLjM5LjgxMmwtMiAyLjVhLjUuNSAwIDAgMS0uODc1LS40MzNMNy4zNiAxNEg2LjVhLjUuNSAwIDAgMS0uNDQ3LS43MjRsMS0yem02LjM1Mi03LjI0OWE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMEgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRMaWdodG5pbmdSYWluRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjY1OCAxMS4wMjZhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnptOS41IDBhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAwIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnptLTcuNSAxLjVhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnptOS41IDBhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAwIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnptLTcuMTA1LTEuMjVBLjUuNSAwIDAgMSA3LjUgMTFoMWEuNS41IDAgMCAxIC40NzQuNjU4bC0uMjguODQySDkuNWEuNS41IDAgMCAxIC4zOS44MTJsLTIgMi41YS41LjUgMCAwIDEtLjg3NS0uNDMzTDcuMzYgMTRINi41YS41LjUgMCAwIDEtLjQ0Ny0uNzI0bDEtMnptNi4zNTItNy4yNDlhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkTWludXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmE1LjUzIDUuNTMgMCAwIDAtMy41OTQgMS4zNDJjLS43NjYuNjYtMS4zMjEgMS41Mi0xLjQ2NCAyLjM4M0MxLjI2NiA2LjA5NSAwIDcuNTU1IDAgOS4zMTggMCAxMS4zNjYgMS43MDggMTMgMy43ODEgMTNoOC45MDZDMTQuNTAyIDEzIDE2IDExLjU3IDE2IDkuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDMuOTk5IDEwLjY5IDIgOCAyek02IDcuNWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkTW9vbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDczIDExYTQuNSA0LjUgMCAwIDAtOC43Mi0uOTlBMyAzIDAgMCAwIDMgMTZoOC41YTIuNSAyLjUgMCAwIDAgMC01aC0uMDI3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI4NiAxLjc3OGEuNS41IDAgMCAwLS41NjUtLjc1NSA0LjU5NSA0LjU5NSAwIDAgMC0zLjE4IDUuMDAzIDUuNDYgNS40NiAwIDAgMSAxLjA1NS4yMDlBMy42MDMgMy42MDMgMCAwIDEgOS44MyAyLjYxN2E0LjU5MyA0LjU5MyAwIDAgMCA0LjMxIDUuNzQ0IDMuNTc2IDMuNTc2IDAgMCAxLTIuMjQxLjYzNGMuMTYyLjMxNy4yOTUuNjUyLjM5NCAxYTQuNTkgNC41OSAwIDAgMCAzLjYyNC0yLjA0LjUuNSAwIDAgMC0uNTY1LS43NTUgMy41OTMgMy41OTMgMCAwIDEtNC4wNjUtNS40MjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyYTUuNTMgNS41MyAwIDAgMC0zLjU5NCAxLjM0MmMtLjc2Ni42Ni0xLjMyMSAxLjUyLTEuNDY0IDIuMzgzQzEuMjY2IDYuMDk1IDAgNy41NTUgMCA5LjMxOCAwIDExLjM2NiAxLjcwOCAxMyAzLjc4MSAxM2g4LjkwNkMxNC41MDIgMTMgMTYgMTEuNTcgMTYgOS43NzNjMC0xLjYzNi0xLjI0Mi0yLjk2OS0yLjgzNC0zLjE5NEMxMi45MjMgMy45OTkgMTAuNjkgMiA4IDJ6bS41IDR2MS41SDEwYS41LjUgMCAwIDEgMCAxSDguNVYxMGEuNS41IDAgMCAxLTEgMFY4LjVINmEuNS41IDAgMCAxIDAtMWgxLjVWNmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRSYWluRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjE1OCAxMi4wMjVhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptMyAwYS41LjUgMCAwIDEgLjMxNi42MzNsLTEgM2EuNS41IDAgMSAxLS45NDgtLjMxNmwxLTNhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bTMgMGEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em0zIDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtMSAzYS41LjUgMCAxIDEtLjk0OC0uMzE2bDEtM2EuNS41IDAgMCAxIC42MzItLjMxN3ptLjI0Ny02Ljk5OGE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRSYWluSGVhdnlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTc2IDExLjAzMmEuNS41IDAgMCAxIC4yOTIuNjQzbC0xLjUgNGEuNS41IDAgMCAxLS45MzYtLjM1bDEuNS00YS41LjUgMCAwIDEgLjY0NC0uMjkzem0zIDBhLjUuNSAwIDAgMSAuMjkyLjY0M2wtMS41IDRhLjUuNSAwIDAgMS0uOTM2LS4zNWwxLjUtNGEuNS41IDAgMCAxIC42NDQtLjI5M3ptMyAwYS41LjUgMCAwIDEgLjI5Mi42NDNsLTEuNSA0YS41LjUgMCAwIDEtLjkzNi0uMzVsMS41LTRhLjUuNSAwIDAgMSAuNjQ0LS4yOTN6bTMgMGEuNS41IDAgMCAxIC4yOTIuNjQzbC0xLjUgNGEuNS41IDAgMCAxLS45MzYtLjM1bDEuNS00YS41LjUgMCAwIDEgLjY0NC0uMjkzem0uMjI5LTcuMDA1YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZFNsYXNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy4xMTIgNS4xMTJhMy4xMjUgMy4xMjUgMCAwIDAtLjE3LjYxM0MxLjI2NiA2LjA5NSAwIDcuNTU1IDAgOS4zMTggMCAxMS4zNjYgMS43MDggMTMgMy43ODEgMTNIMTFMMy4xMTIgNS4xMTJ6bTExLjM3MiA3LjM3Mkw0LjkzNyAyLjkzN0E1LjUxMiA1LjUxMiAwIDAgMSA4IDJjMi42OSAwIDQuOTIzIDIgNS4xNjYgNC41NzlDMTQuNzU4IDYuODA0IDE2IDguMTM3IDE2IDkuNzczYTMuMiAzLjIgMCAwIDEtMS41MTYgMi43MTF6bS0uODM4IDEuODctMTItMTIgLjcwOC0uNzA4IDEyIDEyLS43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZFNsZWV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjM3NSAxMy41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMSAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAxIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMSAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMS44NDktMi40NDdhLjUuNSAwIDAgMSAuMjIzLjY3bC0uNSAxYS41LjUgMCAwIDEtLjg5NC0uNDQ3bC41LTFhLjUuNSAwIDAgMSAuNjctLjIyM3pNNi4zNzUgMTMuNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ5LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAxIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDEgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDEgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAxIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em0xLjg0OS0yLjQ0N2EuNS41IDAgMCAxIC4yMjMuNjdsLS41IDFhLjUuNSAwIDAgMS0uODk0LS40NDdsLjUtMWEuNS41IDAgMCAxIC42Ny0uMjIzem0yLjE1MSAyLjQ0N2EuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ5LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAxIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDAgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDEgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAxIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em0xLjg0OS0yLjQ0N2EuNS41IDAgMCAxIC4yMjMuNjdsLS41IDFhLjUuNSAwIDEgMS0uODk0LS40NDdsLjUtMWEuNS41IDAgMCAxIC42Ny0uMjIzem0xLjE4MS03LjAyNmE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMEgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRTbm93RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjYyNSAxMS41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMi43NSAyYS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41LS4yODdhLjI1LjI1IDAgMCAxIC4yNDkuNDM0bC0uNDk1LjI4My40OTUuMjgzYS4yNS4yNSAwIDAgMS0uMjQ4LjQzNGwtLjUwMS0uMjg2di41NjlhLjI1LjI1IDAgMSAxLS41IDB2LS41N2wtLjUwMS4yODdhLjI1LjI1IDAgMCAxLS4yNDgtLjQzNGwuNDk1LS4yODMtLjQ5NS0uMjgzYS4yNS4yNSAwIDAgMSAuMjQ4LS40MzRsLjUwMS4yODZ2LS41NjlhLjI1LjI1IDAgMCAxIC4yNS0uMjV6bTUuNSAwYS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41LS4yODdhLjI1LjI1IDAgMCAxIC4yNDkuNDM0bC0uNDk1LjI4My40OTUuMjgzYS4yNS4yNSAwIDAgMS0uMjQ4LjQzNGwtLjUwMS0uMjg2di41NjlhLjI1LjI1IDAgMCAxLS41IDB2LS41N2wtLjUwMS4yODdhLjI1LjI1IDAgMCAxLS4yNDgtLjQzNGwuNDk1LS4yODMtLjQ5NS0uMjgzYS4yNS4yNSAwIDAgMSAuMjQ4LS40MzRsLjUwMS4yODZ2LS41NjlhLjI1LjI1IDAgMCAxIC4yNS0uMjV6bS0yLjc1LTJhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptNS41IDBhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAwIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAxIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptLS4yMi03LjIyM2E1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMC4yNUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRTdW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ3MyAxMWE0LjUgNC41IDAgMCAwLTguNzItLjk5QTMgMyAwIDAgMCAzIDE2aDguNWEyLjUgMi41IDAgMCAwIDAtNWgtLjAyN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41IDEuNWEuNS41IDAgMCAwLTEgMHYxYS41LjUgMCAwIDAgMSAwdi0xem0zLjc0MyAxLjk2NGEuNS41IDAgMSAwLS43MDctLjcwN2wtLjcwOC43MDdhLjUuNSAwIDAgMCAuNzA4LjcwOGwuNzA3LS43MDh6bS03Ljc3OS0uNzA3YS41LjUgMCAwIDAtLjcwNy43MDdsLjcwNy43MDhhLjUuNSAwIDEgMCAuNzA4LS43MDhsLS43MDgtLjcwN3ptMS43MzQgMy4zNzRhMiAyIDAgMSAxIDMuMjk2IDIuMTk4Yy4xOTkuMjgxLjM3Mi41ODIuNTE2Ljg5OGEzIDMgMCAxIDAtNC44NC0zLjIyNWMuMzUyLjAxMS42OTYuMDU1IDEuMDI4LjEyOXptNC40ODQgNC4wNzRjLjYuMjE1IDEuMTI1LjU5IDEuNTIyIDEuMDcyYS41LjUgMCAwIDAgLjAzOS0uNzQybC0uNzA3LS43MDdhLjUuNSAwIDAgMC0uODU0LjM3N3pNMTQuNSA2LjVhLjUuNSAwIDAgMCAwIDFoMWEuNS41IDAgMCAwIDAtMWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ2xvdWRVcGxvYWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBhNS41MyA1LjUzIDAgMCAwLTMuNTk0IDEuMzQyYy0uNzY2LjY2LTEuMzIxIDEuNTItMS40NjQgMi4zODNDMS4yNjYgNC4wOTUgMCA1LjU1NSAwIDcuMzE4IDAgOS4zNjYgMS43MDggMTEgMy43ODEgMTFINy41VjUuNzA3TDUuMzU0IDcuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDMtM2EuNS41IDAgMCAxIC43MDggMGwzIDNhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNS43MDdWMTFoNC4xODhDMTQuNTAyIDExIDE2IDkuNTcgMTYgNy43NzNjMC0xLjYzNi0xLjI0Mi0yLjk2OS0yLjgzNC0zLjE5NEMxMi45MjMgMS45OTkgMTAuNjkgMCA4IDB6bS0uNSAxNC41VjExaDF2My41YS41LjUgMCAwIDEtMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDbG91ZHNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ3MyA5YTQuNSA0LjUgMCAwIDAtOC43Mi0uOTlBMyAzIDAgMCAwIDMgMTRoOC41YTIuNSAyLjUgMCAxIDAtLjAyNy01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU0NCA5Ljc3MmEzLjUwNiAzLjUwNiAwIDAgMC0yLjIyNS0xLjY3NiA1LjUwMiA1LjUwMiAwIDAgMC02LjMzNy00LjAwMiA0LjAwMiA0LjAwMiAwIDAgMSA3LjM5Mi45MSAyLjUgMi41IDAgMCAxIDEuMTcgNC43Njl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENsb3VkeUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDA1IDcuMDI3YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEzSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDb2xsZWN0aW9uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEzYTEuNSAxLjUgMCAwIDAgMS41IDEuNWgxM0ExLjUgMS41IDAgMCAwIDE2IDEzVjZhMS41IDEuNSAwIDAgMC0xLjUtMS41aC0xM0ExLjUgMS41IDAgMCAwIDAgNnY3ek0yIDNhLjUuNSAwIDAgMCAuNS41aDExYS41LjUgMCAwIDAgMC0xaC0xMUEuNS41IDAgMCAwIDIgM3ptMi0yYS41LjUgMCAwIDAgLjUuNWg3YS41LjUgMCAwIDAgMC0xaC03QS41LjUgMCAwIDAgNCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDb2xsZWN0aW9uUGxheUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDMuNWEuNS41IDAgMCAxIDAtMWgxMWEuNS41IDAgMCAxIDAgMWgtMTF6bTItMmEuNS41IDAgMCAxIDAtMWg3YS41LjUgMCAwIDEgMCAxaC03ek0wIDEzYTEuNSAxLjUgMCAwIDAgMS41IDEuNWgxM0ExLjUgMS41IDAgMCAwIDE2IDEzVjZhMS41IDEuNSAwIDAgMC0xLjUtMS41aC0xM0ExLjUgMS41IDAgMCAwIDAgNnY3em02LjI1OC02LjQzN2EuNS41IDAgMCAxIC41MDcuMDEzbDQgMi41YS41LjUgMCAwIDEgMCAuODQ4bC00IDIuNUEuNS41IDAgMCAxIDYgMTJWN2EuNS41IDAgMCAxIC4yNTgtLjQzN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ29tcGFzc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNSA4LjUxNmE3LjUgNy41IDAgMSAxLTkuNDYyLTcuMjRBMSAxIDAgMCAxIDcgMGgyYTEgMSAwIDAgMSAuOTYyIDEuMjc2IDcuNTAzIDcuNTAzIDAgMCAxIDUuNTM4IDcuMjR6bS0zLjYxLTMuOTA1TDYuOTQgNy40MzkgNC4xMSAxMi4zOWw0Ljk1LTIuODI4IDIuODI4LTQuOTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbENwdUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDZhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAwLS41LS41aC0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNS41YS41LjUgMCAwIDAtMSAwVjJBMi41IDIuNSAwIDAgMCAyIDQuNUguNWEuNS41IDAgMCAwIDAgMUgydjFILjVhLjUuNSAwIDAgMCAwIDFIMnYxSC41YS41LjUgMCAwIDAgMCAxSDJ2MUguNWEuNS41IDAgMCAwIDAgMUgyQTIuNSAyLjUgMCAwIDAgNC41IDE0djEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGEyLjUgMi41IDAgMCAwIDIuNS0yLjVoMS41YS41LjUgMCAwIDAgMC0xSDE0di0xaDEuNWEuNS41IDAgMCAwIDAtMUgxNHYtMWgxLjVhLjUuNSAwIDAgMCAwLTFIMTR2LTFoMS41YS41LjUgMCAwIDAgMC0xSDE0QTIuNSAyLjUgMCAwIDAgMTEuNSAyVi41YS41LjUgMCAwIDAtMSAwVjJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYyaC0xVi41em0xIDQuNWgzQTEuNSAxLjUgMCAwIDEgMTEgNi41djNBMS41IDEuNSAwIDAgMSA5LjUgMTFoLTNBMS41IDEuNSAwIDAgMSA1IDkuNXYtM0ExLjUgMS41IDAgMCAxIDYuNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDcmVkaXRDYXJkMkJhY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NUgwVjR6bTExLjUgMWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMmEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTJ6TTAgMTF2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ3JlZGl0Q2FyZDJGcm9udEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTIuNSAxYS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgyYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMnptMCAzYS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAwLTFoLTV6bTAgMmEuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xem0zIDBhLjUuNSAwIDAgMCAwIDFoMWEuNS41IDAgMCAwIDAtMWgtMXptMyAwYS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6bTMgMGEuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxDcmVkaXRDYXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjFIMFY0em0wIDN2NWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWN0gwem0zIDJoMWExIDEgMCAwIDEgMSAxdjFhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTF2LTFhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ3VwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDJhMSAxIDAgMCAxIDEtMWgxMWExIDEgMCAwIDEgMSAxdjFoLjVBMS41IDEuNSAwIDAgMSAxNiA0LjV2N2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLS41NWEyLjUgMi41IDAgMCAxLTIuNDUgMmgtOEEyLjUgMi41IDAgMCAxIDEgMTIuNVYyem0xMyAxMGguNWEuNS41IDAgMCAwIC41LS41di03YS41LjUgMCAwIDAtLjUtLjVIMTR2OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsQ3Vyc29yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC4wODIgMi4xODJhLjUuNSAwIDAgMSAuMTAzLjU1N0w4LjUyOCAxNS40NjdhLjUuNSAwIDAgMS0uOTE3LS4wMDdMNS41NyAxMC42OTQuODAzIDguNjUyYS41LjUgMCAwIDEtLjAwNi0uOTE2bDEyLjcyOC01LjY1N2EuNS41IDAgMCAxIC41NTYuMTAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxEYXNoQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTQuNSA3LjVhLjUuNSAwIDAgMCAwIDFoN2EuNS41IDAgMCAwIDAtMWgtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRGFzaFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0yLjUgNy41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERpYWdyYW0yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzLjVBMS41IDEuNSAwIDAgMSA3LjUgMmgxQTEuNSAxLjUgMCAwIDEgMTAgMy41djFBMS41IDEuNSAwIDAgMSA4LjUgNnYxSDExYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtMSAwVjhoLTV2LjVhLjUuNSAwIDAgMS0xIDB2LTFBLjUuNSAwIDAgMSA1IDdoMi41VjZBMS41IDEuNSAwIDAgMSA2IDQuNXYtMXptLTMgOEExLjUgMS41IDAgMCAxIDQuNSAxMGgxQTEuNSAxLjUgMCAwIDEgNyAxMS41djFBMS41IDEuNSAwIDAgMSA1LjUgMTRoLTFBMS41IDEuNSAwIDAgMSAzIDEyLjV2LTF6bTYgMGExLjUgMS41IDAgMCAxIDEuNS0xLjVoMWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTFBMS41IDEuNSAwIDAgMSA5IDEyLjV2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERpYWdyYW0zRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzLjVBMS41IDEuNSAwIDAgMSA3LjUgMmgxQTEuNSAxLjUgMCAwIDEgMTAgMy41djFBMS41IDEuNSAwIDAgMSA4LjUgNnYxSDE0YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtMSAwVjhoLTV2LjVhLjUuNSAwIDAgMS0xIDBWOGgtNXYuNWEuNS41IDAgMCAxLTEgMHYtMUEuNS41IDAgMCAxIDIgN2g1LjVWNkExLjUgMS41IDAgMCAxIDYgNC41di0xem0tNiA4QTEuNSAxLjUgMCAwIDEgMS41IDEwaDFBMS41IDEuNSAwIDAgMSA0IDExLjV2MUExLjUgMS41IDAgMCAxIDIuNSAxNGgtMUExLjUgMS41IDAgMCAxIDAgMTIuNXYtMXptNiAwQTEuNSAxLjUgMCAwIDEgNy41IDEwaDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFBMS41IDEuNSAwIDAgMSA4LjUgMTRoLTFBMS41IDEuNSAwIDAgMSA2IDEyLjV2LTF6bTYgMGExLjUgMS41IDAgMCAxIDEuNS0xLjVoMWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTFhMS41IDEuNSAwIDAgMS0xLjUtMS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxEaWFtb25kRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi45NS40MzVjLjU4LS41OCAxLjUyLS41OCAyLjEgMGw2LjUxNSA2LjUxNmMuNTguNTguNTggMS41MTkgMCAyLjA5OEw5LjA1IDE1LjU2NWMtLjU4LjU4LTEuNTE5LjU4LTIuMDk4IDBMLjQzNSA5LjA1YTEuNDgyIDEuNDgyIDAgMCAxIDAtMi4wOThMNi45NS40MzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERpY2UxRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBhMyAzIDAgMCAwLTMgM3YxMGEzIDMgMCAwIDAgMyAzaDEwYTMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zSDN6bTUgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxEaWNlMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzYTMgMyAwIDAgMSAzLTNoMTBhMyAzIDAgMCAxIDMgM3YxMGEzIDMgMCAwIDEtMyAzSDNhMyAzIDAgMCAxLTMtM1Yzem01LjUgMWExLjUgMS41IDAgMSAwLTMgMCAxLjUgMS41IDAgMCAwIDMgMHptNi41IDkuNWExLjUgMS41IDAgMSAwIDAtMyAxLjUgMS41IDAgMCAwIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRGljZTNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMi41IDRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTggOGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNOCA5LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERpY2U0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBhMyAzIDAgMCAwLTMgM3YxMGEzIDMgMCAwIDAgMyAzaDEwYTMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zSDN6bTEgNS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzem04IDBhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTEuNSA2LjVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6TTQgMTMuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRGljZTVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMi41IDRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTggMGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNMTIgMTMuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pNNS41IDEyYTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwek04IDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRGljZTZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMSA1LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTggMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMS41IDYuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNMTIgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzek01LjUgMTJhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6TTQgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxEaXNjRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS02IDBhMiAyIDAgMSAwLTQgMCAyIDIgMCAwIDAgNCAwek00IDhhNCA0IDAgMCAxIDQtNCAuNS41IDAgMCAwIDAtMSA1IDUgMCAwIDAtNSA1IC41LjUgMCAwIDAgMSAwem05IDBhLjUuNSAwIDEgMC0xIDAgNCA0IDAgMCAxLTQgNCAuNS41IDAgMCAwIDAgMSA1IDUgMCAwIDAgNS01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxEaXNwbGF5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyYzAgLjY2Ny0uMDgzIDEuMTY3LS4yNSAxLjVINWEuNS41IDAgMCAwIDAgMWg2YS41LjUgMCAwIDAgMC0xaC0uNzVjLS4xNjctLjMzMy0uMjUtLjgzMy0uMjUtMS41aDRjMiAwIDItMiAyLTJWNGMwLTItMi0yLTItMkgyQzAgMiAwIDQgMCA0djZjMCAyIDIgMiAyIDJoNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRG9vckNsb3NlZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMWExIDEgMCAwIDEgMSAxdjEzaDEuNWEuNS41IDAgMCAxIDAgMWgtMTNhLjUuNSAwIDAgMSAwLTFIM1YyYTEgMSAwIDAgMSAxLTFoOHptLTIgOWExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERvb3JPcGVuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMTVhLjUuNSAwIDAgMCAwIDFoMTNhLjUuNSAwIDAgMCAwLTFIMTNWMi41QTEuNSAxLjUgMCAwIDAgMTEuNSAxSDExVi41YS41LjUgMCAwIDAtLjU3LS40OTVsLTcgMUEuNS41IDAgMCAwIDMgMS41VjE1SDEuNXpNMTEgMmguNWEuNS41IDAgMCAxIC41LjVWMTVoLTFWMnptLTIuNSA4Yy0uMjc2IDAtLjUtLjQ0OC0uNS0xcy4yMjQtMSAuNS0xIC41LjQ0OC41IDEtLjIyNCAxLS41IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbERyb3BsZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDE2YTYgNiAwIDAgMCA2LTZjMC0xLjY1NS0xLjEyMi0yLjkwNC0yLjQzMi00LjM2MkMxMC4yNTQgNC4xNzYgOC43NSAyLjUwMyA4IDBjMCAwLTYgNS42ODYtNiAxMGE2IDYgMCAwIDAgNiA2ek02LjY0NiA0LjY0NmMtLjM3Ni4zNzctMS4yNzIgMS40ODktMi4wOTMgMy4xM2wuODk0LjQ0OGMuNzgtMS41NTkgMS42MTYtMi41OCAxLjkwNy0yLjg3bC0uNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVhc2VsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQ3My4zMzdhLjUuNSAwIDAgMC0uOTQ2IDBMNi45NTQgMkgyYTEgMSAwIDAgMC0xIDF2N2ExIDEgMCAwIDAgMSAxaDEuODVsLTEuMzIzIDMuODM3YS41LjUgMCAxIDAgLjk0Ni4zMjZMNC45MDggMTFINy41djIuNWEuNS41IDAgMCAwIDEgMFYxMWgyLjU5MmwxLjQzNSA0LjE2M2EuNS41IDAgMCAwIC45NDYtLjMyNkwxMi4xNSAxMUgxNGExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUg5LjA0Nkw4LjQ3My4zMzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVnZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBhNiA2IDAgMCAxLTEyIDBDMiA1LjY4NiA1IDAgOCAwczYgNS42ODYgNiAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRWplY3RGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjcgMS4wNDdhMSAxIDAgMCAxIDEuNDYgMGw2LjM0NSA2Ljc3Yy42LjYzOC4xNDYgMS42ODMtLjczIDEuNjgzSDEuNjU2Qy43OCA5LjUuMzI2IDguNDU1LjkyNiA3LjgxNkw3LjI3IDEuMDQ3ek0uNSAxMS41YTEgMSAwIDAgMSAxLTFoMTNhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFoLTEzYTEgMSAwIDAgMS0xLTF2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVtb2ppQW5ncnlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNNC4wNTMgNC4yNzZhLjUuNSAwIDAgMSAuNjctLjIyM2wyIDFhLjUuNSAwIDAgMSAuMTY2Ljc2Yy4wNzEuMjA2LjExMS40NC4xMTEuNjg3QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNWMwLS40MDguMTA5LS43NzguMjg1LTEuMDQ5bC0xLjAwOS0uNTA0YS41LjUgMCAwIDEtLjIyMy0uNjd6bS4yMzIgOC4xNTdhLjUuNSAwIDAgMS0uMTgzLS42ODNBNC40OTggNC40OTggMCAwIDEgOCA5LjVhNC41IDQuNSAwIDAgMSAzLjg5OCAyLjI1LjUuNSAwIDEgMS0uODY2LjVBMy40OTggMy40OTggMCAwIDAgOCAxMC41YTMuNDk4IDMuNDk4IDAgMCAwLTMuMDMyIDEuNzUuNS41IDAgMCAxLS42ODMuMTgzek0xMCA4Yy0uNTUyIDAtMS0uNjcyLTEtMS41IDAtLjI0Ny4wNC0uNDguMTEtLjY4NmEuNTAyLjUwMiAwIDAgMSAuMTY2LS43NjFsMi0xYS41LjUgMCAxIDEgLjQ0OC44OTRsLTEuMDA5LjUwNGMuMTc2LjI3LjI4NS42NC4yODUgMS4wNDkgMCAuODI4LS40NDggMS41LTEgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbW9qaURpenp5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTQuMTQ2IDUuMTQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3LjY0Ni0uNjQ3YS41LjUgMCAxIDEgLjcwOC43MDhsLS42NDcuNjQ2LjY0Ny42NDZhLjUuNSAwIDEgMS0uNzA4LjcwOEw1LjUgNy4yMDdsLS42NDYuNjQ3YS41LjUgMCAxIDEtLjcwOC0uNzA4bC42NDctLjY0Ni0uNjQ3LS42NDZhLjUuNSAwIDAgMSAwLS43MDh6bTUgMGEuNS41IDAgMCAxIC43MDggMGwuNjQ2LjY0Ny42NDYtLjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC0uNjQ3LjY0Ni42NDcuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLS42NDYtLjY0Ny0uNjQ2LjY0N2EuNS41IDAgMSAxLS43MDgtLjcwOGwuNjQ3LS42NDYtLjY0Ny0uNjQ2YS41LjUgMCAwIDEgMC0uNzA4ek04IDEzYTIgMiAwIDEgMSAwLTQgMiAyIDAgMCAxIDAgNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRW1vamlFeHByZXNzaW9ubGVzc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2ek00LjUgNmgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xem01IDBoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMXptLTUgNGg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbW9qaUZyb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTcgNi41QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNVM1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6bS0yLjcxNSA1LjkzM2EuNS41IDAgMCAxLS4xODMtLjY4M0E0LjQ5OCA0LjQ5OCAwIDAgMSA4IDkuNWE0LjUgNC41IDAgMCAxIDMuODk4IDIuMjUuNS41IDAgMCAxLS44NjYuNUEzLjQ5OCAzLjQ5OCAwIDAgMCA4IDEwLjVhMy40OTggMy40OTggMCAwIDAtMy4wMzIgMS43NS41LjUgMCAwIDEtLjY4My4xODN6TTEwIDhjLS41NTIgMC0xLS42NzItMS0xLjVTOS40NDggNSAxMCA1czEgLjY3MiAxIDEuNVMxMC41NTIgOCAxMCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbW9qaUhlYXJ0RXllc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYTggOCAwIDEgMCAwIDE2QTggOCAwIDAgMCA4IDB6TTQuNzU2IDQuNTY2Yy43NjMtMS40MjQgNC4wMi0uMTIuOTUyIDMuNDM0LTQuNDk2LTEuNTk2LTIuMzUtNC4yOTgtLjk1Mi0zLjQzNHptNi41NTkgNS40NDhhLjUuNSAwIDAgMSAuNTQ4LjczNkE0LjQ5OCA0LjQ5OCAwIDAgMSA3Ljk2NSAxM2E0LjQ5OCA0LjQ5OCAwIDAgMS0zLjg5OC0yLjI1LjUuNSAwIDAgMSAuNTQ4LS43MzZoLjAwNWwuMDE3LjAwNS4wNjcuMDE1LjI1Mi4wNTVjLjIxNS4wNDYuNTE1LjEwOC44NTcuMTY5LjY5My4xMjQgMS41MjIuMjQyIDIuMTUyLjI0Mi42MyAwIDEuNDYtLjExOCAyLjE1Mi0uMjQyYTI2LjU4IDI2LjU4IDAgMCAwIDEuMTA5LS4yMjRsLjA2Ny0uMDE1LjAxNy0uMDA0LjAwNS0uMDAyem0tLjA3LTUuNDQ4YzEuMzk3LS44NjQgMy41NDMgMS44MzgtLjk1MyAzLjQzNC0zLjA2Ny0zLjU1NC4xOS00Ljg1OC45NTItMy40MzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVtb2ppTGF1Z2hpbmdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNNyA2LjVjMCAuNTAxLS4xNjQuMzk2LS40MTUuMjM1QzYuNDIgNi42MjkgNi4yMTggNi41IDYgNi41Yy0uMjE4IDAtLjQyLjEzLS41ODUuMjM1QzUuMTY0IDYuODk2IDUgNyA1IDYuNSA1IDUuNjcyIDUuNDQ4IDUgNiA1czEgLjY3MiAxIDEuNXptNS4zMzEgM2ExIDEgMCAwIDEgMCAxQTQuOTk4IDQuOTk4IDAgMCAxIDggMTNhNC45OTggNC45OTggMCAwIDEtNC4zMy0yLjVBMSAxIDAgMCAxIDQuNTM1IDloNi45M2ExIDEgMCAwIDEgLjg2Ni41em0tMS43NDYtMi43NjVDMTAuNDIgNi42MjkgMTAuMjE4IDYuNSAxMCA2LjVjLS4yMTggMC0uNDIuMTMtLjU4NS4yMzVDOS4xNjQgNi44OTYgOSA3IDkgNi41YzAtLjgyOC40NDgtMS41IDEtMS41czEgLjY3MiAxIDEuNWMwIC41MDEtLjE2NC4zOTYtLjQxNS4yMzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVtb2ppTmV1dHJhbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2ek03IDYuNUM3IDcuMzI4IDYuNTUyIDggNiA4cy0xLS42NzItMS0xLjVTNS40NDggNSA2IDVzMSAuNjcyIDEgMS41em0tMyA0YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41ek0xMCA4Yy0uNTUyIDAtMS0uNjcyLTEtMS41UzkuNDQ4IDUgMTAgNXMxIC42NzIgMSAxLjVTMTAuNTUyIDggMTAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRW1vamlTbWlsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2ek03IDYuNUM3IDcuMzI4IDYuNTUyIDggNiA4cy0xLS42NzItMS0xLjVTNS40NDggNSA2IDVzMSAuNjcyIDEgMS41ek00LjI4NSA5LjU2N2EuNS41IDAgMCAxIC42ODMuMTgzQTMuNDk4IDMuNDk4IDAgMCAwIDggMTEuNWEzLjQ5OCAzLjQ5OCAwIDAgMCAzLjAzMi0xLjc1LjUuNSAwIDEgMSAuODY2LjVBNC40OTggNC40OTggMCAwIDEgOCAxMi41YTQuNDk4IDQuNDk4IDAgMCAxLTMuODk4LTIuMjUuNS41IDAgMCAxIC4xODMtLjY4M3pNMTAgOGMtLjU1MiAwLTEtLjY3Mi0xLTEuNVM5LjQ0OCA1IDEwIDVzMSAuNjcyIDEgMS41UzEwLjU1MiA4IDEwIDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVtb2ppU21pbGVVcHNpZGVEb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhOCA4IDAgMSAxIDAgMTZBOCA4IDAgMCAxIDggMHpNNyA5LjVDNyA4LjY3MiA2LjU1MiA4IDYgOHMtMSAuNjcyLTEgMS41LjQ0OCAxLjUgMSAxLjUgMS0uNjcyIDEtMS41ek00LjI4NSA2LjQzM2EuNS41IDAgMCAwIC42ODMtLjE4M0EzLjQ5OCAzLjQ5OCAwIDAgMSA4IDQuNWMxLjI5NSAwIDIuNDI2LjcwMyAzLjAzMiAxLjc1YS41LjUgMCAwIDAgLjg2Ni0uNUE0LjQ5OCA0LjQ5OCAwIDAgMCA4IDMuNWE0LjUgNC41IDAgMCAwLTMuODk4IDIuMjUuNS41IDAgMCAwIC4xODMuNjgzek0xMCA4Yy0uNTUyIDAtMSAuNjcyLTEgMS41cy40NDggMS41IDEgMS41IDEtLjY3MiAxLTEuNVMxMC41NTIgOCAxMCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbW9qaVN1bmdsYXNzZXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNMi4zMSA1LjI0M0ExIDEgMCAwIDEgMy4yOCA0SDZhMSAxIDAgMCAxIDEgMXYuMTE2QTQuMjIgNC4yMiAwIDAgMSA4IDVjLjM1IDAgLjY5LjA0IDEgLjExNlY1YTEgMSAwIDAgMSAxLTFoMi43MmExIDEgMCAwIDEgLjk3IDEuMjQzbC0uMzExIDEuMjQyQTIgMiAwIDAgMSAxMS40MzkgOEgxMWEyIDIgMCAwIDEtMS45OTQtMS44MzlBMi45OSAyLjk5IDAgMCAwIDggNmMtLjM5MyAwLS43NC4wNjQtMS4wMDYuMTYxQTIgMiAwIDAgMSA1IDhoLS40MzhhMiAyIDAgMCAxLTEuOTQtMS41MTVMMi4zMSA1LjI0M3pNNC45NjkgOS43NUEzLjQ5OCAzLjQ5OCAwIDAgMCA4IDExLjVhMy40OTggMy40OTggMCAwIDAgMy4wMzItMS43NS41LjUgMCAxIDEgLjg2Ni41QTQuNDk4IDQuNDk4IDAgMCAxIDggMTIuNWE0LjQ5OCA0LjQ5OCAwIDAgMS0zLjg5OC0yLjI1LjUuNSAwIDAgMSAuODY2LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbW9qaVdpbmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGE4IDggMCAxIDEgMCAxNkE4IDggMCAwIDEgOCAwek03IDYuNUM3IDUuNjcyIDYuNTUyIDUgNiA1cy0xIC42NzItMSAxLjVTNS40NDggOCA2IDhzMS0uNjcyIDEtMS41ek00LjI4NSA5LjU2N2EuNS41IDAgMCAwLS4xODMuNjgzQTQuNDk4IDQuNDk4IDAgMCAwIDggMTIuNWE0LjUgNC41IDAgMCAwIDMuODk4LTIuMjUuNS41IDAgMSAwLS44NjYtLjVBMy40OTggMy40OTggMCAwIDEgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAxLTMuMDMyLTEuNzUuNS41IDAgMCAwLS42ODMtLjE4M3ptNS4xNTItMy4zMWEuNS41IDAgMCAwLS44NzQuNDg2Yy4zMy41OTUuOTU4IDEuMDA3IDEuNjg3IDEuMDA3LjczIDAgMS4zNTYtLjQxMiAxLjY4Ny0xLjAwN2EuNS41IDAgMCAwLS44NzQtLjQ4Ni45MzQuOTM0IDAgMCAxLS44MTMuNDkzLjkzNC45MzQgMCAwIDEtLjgxMy0uNDkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFbnZlbG9wZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjA1IDMuNTU1QTIgMiAwIDAgMSAyIDJoMTJhMiAyIDAgMCAxIDEuOTUgMS41NTVMOCA4LjQxNC4wNSAzLjU1NXpNMCA0LjY5N3Y3LjEwNGw1LjgwMy0zLjU1OEwwIDQuNjk3ek02Ljc2MSA4LjgzbC02LjU3IDQuMDI3QTIgMiAwIDAgMCAyIDE0aDEyYTIgMiAwIDAgMCAxLjgwOC0xLjE0NGwtNi41Ny00LjAyN0w4IDkuNTg2bC0xLjIzOS0uNzU3em0zLjQzNi0uNTg2TDE2IDExLjgwMVY0LjY5N2wtNS44MDMgMy41NDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVudmVsb3BlT3BlbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45NDEuNDM1YTIgMiAwIDAgMC0xLjg4MiAwbC02IDMuMkEyIDIgMCAwIDAgMCA1LjR2LjMxM2w2LjcwOSAzLjkzM0w4IDguOTI4bDEuMjkxLjcxN0wxNiA1LjcxNVY1LjRhMiAyIDAgMCAwLTEuMDU5LTEuNzY1bC02LTMuMnpNMTYgNi44NzNsLTUuNjkzIDMuMzM3TDE2IDEzLjM3MnYtNi41em0tLjA1OSA3LjYxMUw4IDEwLjA3Mi4wNTkgMTQuNDg0QTIgMiAwIDAgMCAyIDE2aDEyYTIgMiAwIDAgMCAxLjk0MS0xLjUxNnpNMCAxMy4zNzNsNS42OTMtMy4xNjNMMCA2Ljg3M3Y2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEVyYXNlckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wODYgMi4yMDdhMiAyIDAgMCAxIDIuODI4IDBsMy44NzkgMy44NzlhMiAyIDAgMCAxIDAgMi44MjhsLTUuNSA1LjVBMiAyIDAgMCAxIDcuODc5IDE1SDUuMTJhMiAyIDAgMCAxLTEuNDE0LS41ODZsLTIuNS0yLjVhMiAyIDAgMCAxIDAtMi44MjhsNi44NzktNi44Nzl6bS42NiAxMS4zNEwzLjQ1MyA4LjI1NCAxLjkxNCA5Ljc5M2ExIDEgMCAwIDAgMCAxLjQxNGwyLjUgMi41YTEgMSAwIDAgMCAuNzA3LjI5M0g3Ljg4YTEgMSAwIDAgMCAuNzA3LS4yOTNsLjE2LS4xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRXhjbGFtYXRpb25DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOCA0YS45MDUuOTA1IDAgMCAwLS45Ljk5NWwuMzUgMy41MDdhLjU1Mi41NTIgMCAwIDAgMS4xIDBsLjM1LTMuNTA3QS45MDUuOTA1IDAgMCAwIDggNHptLjAwMiA2YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRXhjbGFtYXRpb25EaWFtb25kRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA1LjQzNWMtLjU4LS41OC0xLjUyLS41OC0yLjEgMEwuNDM2IDYuOTVjLS41OC41OC0uNTggMS41MTkgMCAyLjA5OGw2LjUxNiA2LjUxNmMuNTguNTggMS41MTkuNTggMi4wOTggMGw2LjUxNi02LjUxNmMuNTgtLjU4LjU4LTEuNTE5IDAtMi4wOThMOS4wNS40MzV6TTggNGMuNTM1IDAgLjk1NC40NjIuOS45OTVsLS4zNSAzLjUwN2EuNTUyLjU1MiAwIDAgMS0xLjEgMEw3LjEgNC45OTVBLjkwNS45MDUgMCAwIDEgOCA0em0uMDAyIDZhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFeGNsYW1hdGlvbk9jdGFnb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ2LjE0NkEuNS41IDAgMCAwIDExLjEwNyAwSDQuODkzYS41LjUgMCAwIDAtLjM1My4xNDZMLjE0NiA0LjU0QS41LjUgMCAwIDAgMCA0Ljg5M3Y2LjIxNGEuNS41IDAgMCAwIC4xNDYuMzUzbDQuMzk0IDQuMzk0YS41LjUgMCAwIDAgLjM1My4xNDZoNi4yMTRhLjUuNSAwIDAgMCAuMzUzLS4xNDZsNC4zOTQtNC4zOTRhLjUuNSAwIDAgMCAuMTQ2LS4zNTNWNC44OTNhLjUuNSAwIDAgMC0uMTQ2LS4zNTNMMTEuNDYuMTQ2ek04IDRjLjUzNSAwIC45NTQuNDYyLjkuOTk1bC0uMzUgMy41MDdhLjU1Mi41NTIgMCAwIDEtMS4xIDBMNy4xIDQuOTk1QS45MDUuOTA1IDAgMCAxIDggNHptLjAwMiA2YTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRXhjbGFtYXRpb25TcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptNiA0Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDR6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEV4Y2xhbWF0aW9uVHJpYW5nbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOTgyIDEuNTY2YTEuMTMgMS4xMyAwIDAgMC0xLjk2IDBMLjE2NSAxMy4yMzNjLS40NTcuNzc4LjA5MSAxLjc2Ny45OCAxLjc2N2gxMy43MTNjLjg4OSAwIDEuNDM4LS45OS45OC0xLjc2N0w4Ljk4MiAxLjU2NnpNOCA1Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA1Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDV6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEV5ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSA4YTIuNSAyLjUgMCAxIDEtNSAwIDIuNSAyLjUgMCAwIDEgNSAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOHMzLTUuNSA4LTUuNVMxNiA4IDE2IDhzLTMgNS41LTggNS41UzAgOCAwIDh6bTggMy41YTMuNSAzLjUgMCAxIDAgMC03IDMuNSAzLjUgMCAwIDAgMCA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxFeWVTbGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuNzkgMTIuOTEyLTEuNjE0LTEuNjE1YTMuNSAzLjUgMCAwIDEtNC40NzQtNC40NzRsLTIuMDYtMi4wNkMuOTM4IDYuMjc4IDAgOCAwIDhzMyA1LjUgOCA1LjVhNy4wMjkgNy4wMjkgMCAwIDAgMi43OS0uNTg4ek01LjIxIDMuMDg4QTcuMDI4IDcuMDI4IDAgMCAxIDggMi41YzUgMCA4IDUuNSA4IDUuNXMtLjkzOSAxLjcyMS0yLjY0MSAzLjIzOGwtMi4wNjItMi4wNjJhMy41IDMuNSAwIDAgMC00LjQ3NC00LjQ3NEw1LjIxIDMuMDg5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTI1IDcuNjQ2YTIuNSAyLjUgMCAwIDAgMi44MjkgMi44MjlsLTIuODMtMi44Mjl6bTQuOTUuNzA4LTIuODI5LTIuODNhMi41IDIuNSAwIDAgMSAyLjgyOSAyLjgyOXptMy4xNzEgNi0xMi0xMiAuNzA4LS43MDggMTIgMTItLjcwOC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVBcnJvd0Rvd25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNOCA1YS41LjUgMCAwIDEgLjUuNXYzLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4IDBsLTItMmEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOS4yOTNWNS41QS41LjUgMCAwIDEgOCA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlQXJyb3dVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek03LjUgNi43MDcgNi4zNTQgNy44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMi0yYS41LjUgMCAwIDEgLjcwOCAwbDIgMmEuNS41IDAgMCAxLS43MDguNzA4TDguNSA2LjcwN1YxMC41YS41LjUgMCAwIDEtMSAwVjYuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlQmFyR3JhcGhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnptLTIgMTEuNXYtNmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djZhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV6bS0yLjUuNWEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLS41LjVoLTF6bS0zIDBhLjUuNSAwIDAgMS0uNS0uNXYtMmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlQmluYXJ5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyNiA5LjI3M2MtLjU0MiAwLS44MzIuNTYzLS44MzIgMS42MTIgMCAuMDg4LjAwMy4xNzMuMDA2LjI1MmwxLjU2LTEuMTQzYy0uMTI2LS40NzQtLjM3NS0uNzItLjczMy0uNzJ6bS0uNzMyIDIuNTA4Yy4xMjYuNDcyLjM3Mi43MTguNzMyLjcxOC41NCAwIC44My0uNTYzLjgzLTEuNjE0IDAtLjA4NS0uMDAzLS4xNy0uMDA2LS4yNWwtMS41NTYgMS4xNDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek03LjA1IDEwLjg4NWMwIDEuNDE1LS41NDggMi4yMDYtMS41MjQgMi4yMDZDNC41NDggMTMuMDkgNCAxMi4zIDQgMTAuODg1YzAtMS40MTIuNTQ4LTIuMjAzIDEuNTI2LTIuMjAzLjk3NiAwIDEuNTI0Ljc5IDEuNTI0IDIuMjAzem0zLjgwNSAxLjUyVjEzaC0zdi0uNTk1aDEuMTgxVjkuNWgtLjA1bC0xLjEzNi43NDd2LS42ODhsMS4xOS0uNzg2aC42OXYzLjYzM2gxLjEyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUJyZWFrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoOGEyIDIgMCAwIDEgMiAydjdIMlYyYTIgMiAwIDAgMSAyLTJ6TTIgMTJoMTJ2MmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtMnpNLjUgMTBhLjUuNSAwIDAgMCAwIDFoMTVhLjUuNSAwIDAgMCAwLTFILjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yem0tMS4xNDYgNi44NTQtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA4Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlQ29kZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek02LjY0NiA1LjY0NmEuNS41IDAgMSAxIC43MDguNzA4TDUuNzA3IDhsMS42NDcgMS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtMi0yYS41LjUgMCAwIDEgMC0uNzA4bDItMnptMi43MDggMCAyIDJhLjUuNSAwIDAgMSAwIC43MDhsLTIgMmEuNS41IDAgMCAxLS43MDgtLjcwOEwxMC4yOTMgOCA4LjY0NiA2LjM1NGEuNS41IDAgMSAxIC43MDgtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZURpZmZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNOC41IDQuNVY2SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWN0g2YS41LjUgMCAwIDEgMC0xaDEuNVY0LjVhLjUuNSAwIDAgMSAxIDB6TTYgMTBoNGEuNS41IDAgMCAxIDAgMUg2YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya0Fycm93RG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6bS0xIDR2My43OTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOCAwbC0yLTJhLjUuNSAwIDAgMSAuNzA4LS43MDhMNy41IDExLjI5M1Y3LjVhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrQXJyb3dVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYuMzU0IDkuODU0YS41LjUgMCAwIDEtLjcwOC0uNzA4bDItMmEuNS41IDAgMCAxIC43MDggMGwyIDJhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgOC43MDdWMTIuNWEuNS41IDAgMCAxLTEgMFY4LjcwN0w2LjM1NCA5Ljg1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtCYXJHcmFwaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6bS41IDEwdi02YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2NmEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXptLTIuNS41YS41LjUgMCAwIDEtLjUtLjV2LTRhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXY0YS41LjUgMCAwIDEtLjUuNWgtMXptLTMgMGEuNS41IDAgMCAxLS41LS41di0yYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVoLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrQmluYXJ5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyNiAxMC4yNzNjLS41NDIgMC0uODMyLjU2My0uODMyIDEuNjEyIDAgLjA4OC4wMDMuMTczLjAwNi4yNTJsMS41NTktMS4xNDNjLS4xMjYtLjQ3NC0uMzc1LS43Mi0uNzMzLS43MnptLS43MzIgMi41MDhjLjEyNi40NzIuMzcyLjcxOC43MzIuNzE4LjU0IDAgLjgzLS41NjMuODMtMS42MTQgMC0uMDg1LS4wMDMtLjE3LS4wMDYtLjI1bC0xLjU1NiAxLjE0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXptLTIuNDUgOC4zODVjMCAxLjQxNS0uNTQ4IDIuMjA2LTEuNTI0IDIuMjA2QzQuNTQ4IDE0LjA5IDQgMTMuMyA0IDExLjg4NWMwLTEuNDEyLjU0OC0yLjIwMyAxLjUyNi0yLjIwMy45NzYgMCAxLjUyNC43OSAxLjUyNCAyLjIwM3ptMy44MDUgMS41MlYxNGgtM3YtLjU5NWgxLjE4MVYxMC41aC0uMDVsLTEuMTM2Ljc0N3YtLjY4OGwxLjE5LS43ODZoLjY5djMuNjMzaDEuMTI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya0JyZWFrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoNS4yOTNBMSAxIDAgMCAxIDEwIC4yOTNMMTMuNzA3IDRhMSAxIDAgMCAxIC4yOTMuNzA3VjlIMlYyYTIgMiAwIDAgMSAyLTJ6bTUuNSAxLjV2MmExIDEgMCAwIDAgMSAxaDJsLTMtM3pNMiAxMmgxMnYyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi0yek0uNSAxMGEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMUguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6bTEuMzU0IDQuMzU0LTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOS43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtDb2RlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNNi42NDYgNy42NDZhLjUuNSAwIDEgMSAuNzA4LjcwOEw1LjcwNyAxMGwxLjY0NyAxLjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC0yLTJhLjUuNSAwIDAgMSAwLS43MDhsMi0yem0yLjcwOCAwIDIgMmEuNS41IDAgMCAxIDAgLjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyAxMCA4LjY0NiA4LjM1NGEuNS41IDAgMSAxIC43MDgtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtEaWZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNOCA2YS41LjUgMCAwIDEgLjUuNVY4SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWOUg2YS41LjUgMCAwIDEgMC0xaDEuNVY2LjVBLjUuNSAwIDAgMSA4IDZ6bS0yLjUgNi41QS41LjUgMCAwIDEgNiAxMmg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtFYXNlbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA3LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtNWEuNS41IDAgMCAxLS41LS41di0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek04LjUgNmgyQTEuNSAxLjUgMCAwIDEgMTIgNy41djJhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0uNDczbC40NDcgMS4zNDJhLjUuNSAwIDAgMS0uOTQ4LjMxNkw4Ljk3MyAxMUg4LjV2MWEuNS41IDAgMCAxLTEgMHYtMWgtLjQ3M2wtLjU1MyAxLjY1OGEuNS41IDAgMSAxLS45NDgtLjMxNkw1Ljk3MyAxMUg1LjVBMS41IDEuNSAwIDAgMSA0IDkuNXYtMkExLjUgMS41IDAgMCAxIDUuNSA2aDJhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrRXhjZWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek01Ljg4NCA2LjY4IDggOS4yMTlsMi4xMTYtMi41NGEuNS41IDAgMSAxIC43NjguNjQxTDguNjUxIDEwbDIuMjMzIDIuNjhhLjUuNSAwIDAgMS0uNzY4LjY0TDggMTAuNzgxbC0yLjExNiAyLjU0YS41LjUgMCAwIDEtLjc2OC0uNjQxTDcuMzQ5IDEwIDUuMTE2IDcuMzJhLjUuNSAwIDEgMSAuNzY4LS42NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg1LjI5M0ExIDEgMCAwIDEgMTAgLjI5M0wxMy43MDcgNGExIDEgMCAwIDEgLjI5My43MDdWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem01LjUgMS41djJhMSAxIDAgMCAwIDEgMWgybC0zLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrRm9udEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTUuMDU3IDZoNS44ODZMMTEgOGgtLjVjLS4xOC0xLjA5Ni0uMzU2LTEuMTkyLTEuNjk0LTEuMjM1bC0uMjk4LS4wMXY1LjA5YzAgLjQ3LjEuNTgyLjkwMy42NTV2LjVINi41OXYtLjVjLjc5OS0uMDczLjg5OC0uMTg0Ljg5OC0uNjU0VjYuNzU1bC0uMjkzLjAxQzUuODU2IDYuODA4IDUuNjggNi45MDUgNS41IDhINWwuMDU3LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrSW1hZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg1LjI5M0ExIDEgMCAwIDEgMTAgLjI5M0wxMy43MDcgNGExIDEgMCAwIDEgLjI5My43MDd2NS41ODZsLTIuNzMtMi43M2ExIDEgMCAwIDAtMS41Mi4xMjdsLTEuODg5IDIuNjQ0LTEuNzY5LTEuMDYyYTEgMSAwIDAgMC0xLjIyMi4xNUwyIDEyLjI5MlYyYTIgMiAwIDAgMSAyLTJ6bTUuNSAxLjV2MmExIDEgMCAwIDAgMSAxaDJsLTMtM3ptLTEuNDk4IDRhMS41IDEuNSAwIDEgMC0zIDAgMS41IDEuNSAwIDAgMCAzIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTY0IDguMjcgMTQgMTEuNzA4VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi0uMjkzbDMuNTc4LTMuNTc3IDIuNTYgMS41MzYgMi40MjYtMy4zOTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrTG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3YTEgMSAwIDAgMSAyIDB2MUg3Vjd6TTYgOS4zYzAtLjA0Mi4wMi0uMTA3LjEwNS0uMTc1QS42MzcuNjM3IDAgMCAxIDYuNSA5aDNhLjY0LjY0IDAgMCAxIC4zOTUuMTI1Yy4wODUuMDY4LjEwNS4xMzMuMTA1LjE3NXYyLjRjMCAuMDQyLS4wMi4xMDctLjEwNS4xNzVBLjYzNy42MzcgMCAwIDEgOS41IDEyaC0zYS42MzcuNjM3IDAgMCAxLS4zOTUtLjEyNUM2LjAyIDExLjgwNyA2IDExLjc0MiA2IDExLjdWOS4zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0xMCA3djEuMDc2Yy41NC4xNjYgMSAuNTk3IDEgMS4yMjR2Mi40YzAgLjgxNi0uNzgxIDEuMy0xLjUgMS4zaC0zYy0uNzE5IDAtMS41LS40ODQtMS41LTEuM1Y5LjNjMC0uNjI3LjQ2LTEuMDU4IDEtMS4yMjRWN2EyIDIgMCAxIDEgNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya0xvY2syRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdhMSAxIDAgMCAxIDIgMHYxSDdWN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNMTAgN3YxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOS4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjdhMiAyIDAgMSAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtNZWRpY2FsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXptLTMgMnYuNjM0bC41NDktLjMxN2EuNS41IDAgMSAxIC41Ljg2Nkw3IDdsLjU0OS4zMTdhLjUuNSAwIDEgMS0uNS44NjZMNi41IDcuODY2VjguNWEuNS41IDAgMCAxLTEgMHYtLjYzNGwtLjU0OS4zMTdhLjUuNSAwIDEgMS0uNS0uODY2TDUgN2wtLjU0OS0uMzE3YS41LjUgMCAwIDEgLjUtLjg2NmwuNTQ5LjMxN1Y1LjVhLjUuNSAwIDEgMSAxIDB6bS0yIDQuNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xem0wIDJoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYgOC41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtNdXNpY0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTExIDYuNjR2MS43NWwtMiAuNXYzLjYxYzAgLjQ5NS0uMzAxLjg4My0uNjYyIDEuMTIzQzcuOTc0IDEzLjg2NiA3LjQ5OSAxNCA3IDE0Yy0uNSAwLS45NzQtLjEzNC0xLjMzOC0uMzc3LS4zNi0uMjQtLjY2Mi0uNjI4LS42NjItMS4xMjNzLjMwMS0uODgzLjY2Mi0xLjEyM0M2LjAyNiAxMS4xMzQgNi41MDEgMTEgNyAxMWMuMzU2IDAgLjcuMDY4IDEgLjE5NlY2Ljg5YTEgMSAwIDAgMSAuNzU3LS45N2wxLS4yNUExIDEgMCAwIDEgMTEgNi42NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtQZGZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTIzIDEyLjQyNGMuMTQtLjA4Mi4yOTMtLjE2Mi40NTktLjIzOGE3Ljg3OCA3Ljg3OCAwIDAgMS0uNDUuNjA2Yy0uMjguMzM3LS40OTguNTE2LS42MzUuNTcyYS4yNjYuMjY2IDAgMCAxLS4wMzUuMDEyLjI4Mi4yODIgMCAwIDEtLjAyNi0uMDQ0Yy0uMDU2LS4xMS0uMDU0LS4yMTYuMDQtLjM2LjEwNi0uMTY1LjMxOS0uMzU0LjY0Ny0uNTQ4em0yLjQ1NS0xLjY0N2MtLjExOS4wMjUtLjIzNy4wNS0uMzU2LjA3OGEyMS4xNDggMjEuMTQ4IDAgMCAwIC41LTEuMDUgMTIuMDQ1IDEyLjA0NSAwIDAgMCAuNTEuODU4Yy0uMjE3LjAzMi0uNDM2LjA3LS42NTQuMTE0em0yLjUyNS45MzlhMy44ODEgMy44ODEgMCAwIDEtLjQzNS0uNDFjLjIyOC4wMDUuNDM0LjAyMi42MTIuMDU0LjMxNy4wNTcuNDY2LjE0Ny41MTguMjA5YS4wOTUuMDk1IDAgMCAxIC4wMjYuMDY0LjQzNi40MzYgMCAwIDEtLjA2LjIuMzA3LjMwNyAwIDAgMS0uMDk0LjEyNC4xMDcuMTA3IDAgMCAxLS4wNjkuMDE1Yy0uMDktLjAwMy0uMjU4LS4wNjYtLjQ5OC0uMjU2ek04LjI3OCA2Ljk3Yy0uMDQuMjQ0LS4xMDguNTI0LS4yLjgyOWE0Ljg2IDQuODYgMCAwIDEtLjA4OS0uMzQ2Yy0uMDc2LS4zNTMtLjA4Ny0uNjMtLjA0Ni0uODIyLjAzOC0uMTc3LjExLS4yNDguMTk2LS4yODNhLjUxNy41MTcgMCAwIDEgLjE0NS0uMDRjLjAxMy4wMy4wMjguMDkyLjAzMi4xOTguMDA1LjEyMi0uMDA3LjI3Ny0uMDM4LjQ2NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAwaDUuMjkzQTEgMSAwIDAgMSAxMCAuMjkzTDEzLjcwNyA0YTEgMSAwIDAgMSAuMjkzLjcwN1YxNGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJ6bTUuNSAxLjV2MmExIDEgMCAwIDAgMSAxaDJsLTMtM3pNNC4xNjUgMTMuNjY4Yy4wOS4xOC4yMy4zNDMuNDM4LjQxOS4yMDcuMDc1LjQxMi4wNC41OC0uMDMuMzE4LS4xMy42MzUtLjQzNi45MjYtLjc4Ni4zMzMtLjQwMS42ODMtLjkyNyAxLjAyMS0xLjUxYTExLjY1MSAxMS42NTEgMCAwIDEgMS45OTctLjQwNmMuMy4zODMuNjEuNzEzLjkxLjk1LjI4LjIyLjYwMy40MDMuOTM0LjQxN2EuODU2Ljg1NiAwIDAgMCAuNTEtLjEzOGMuMTU1LS4xMDEuMjctLjI0Ny4zNTQtLjQxNi4wOS0uMTgxLjE0NS0uMzcuMTM4LS41NjNhLjg0NC44NDQgMCAwIDAtLjItLjUxOGMtLjIyNi0uMjctLjU5Ni0uNC0uOTYtLjQ2NWE1Ljc2IDUuNzYgMCAwIDAtMS4zMzUtLjA1IDEwLjk1NCAxMC45NTQgMCAwIDEtLjk4LTEuNjg2Yy4yNS0uNjYuNDM3LTEuMjg0LjUyLTEuNzk0LjAzNi0uMjE4LjA1NS0uNDI2LjA0OC0uNjE0YTEuMjM4IDEuMjM4IDAgMCAwLS4xMjctLjUzOC43LjcgMCAwIDAtLjQ3Ny0uMzY1Yy0uMjAyLS4wNDMtLjQxIDAtLjYwMS4wNzctLjM3Ny4xNS0uNTc2LjQ3LS42NTEuODIzLS4wNzMuMzQtLjA0LjczNi4wNDYgMS4xMzYuMDg4LjQwNi4yMzguODQ4LjQzIDEuMjk1YTE5LjY5NyAxOS42OTcgMCAwIDEtMS4wNjIgMi4yMjcgNy42NjIgNy42NjIgMCAwIDAtMS40ODIuNjQ1Yy0uMzcuMjItLjY5OS40OC0uODk3Ljc4Ny0uMjEuMzI2LS4yNzUuNzE0LS4wOCAxLjEwM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtQZXJzb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0xMSA4YTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMHptMiA1Ljc1NVYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMXYtLjI0NVM0IDEyIDggMTJzNSAxLjc1NSA1IDEuNzU1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1BsYXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek02IDYuODgzYS41LjUgMCAwIDEgLjc1Ny0uNDI5bDMuNTI4IDIuMTE3YS41LjUgMCAwIDEgMCAuODU4bC0zLjUyOCAyLjExN2EuNS41IDAgMCAxLS43NTctLjQzVjYuODg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1BsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek04LjUgN3YxLjVIMTBhLjUuNSAwIDAgMSAwIDFIOC41VjExYS41LjUgMCAwIDEtMSAwVjkuNUg2YS41LjUgMCAwIDEgMC0xaDEuNVY3YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1Bvc3RGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xem0tNS0uNUg3YS41LjUgMCAwIDEgMCAxSDQuNWEuNS41IDAgMCAxIDAtMXptMCAzaDdhLjUuNSAwIDAgMSAuNS41djdhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTdhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtQcHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTg4IDEwSDdWNi41aDEuMTg4YTEuNzUgMS43NSAwIDEgMSAwIDMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoNS4yOTNBMSAxIDAgMCAxIDEwIC4yOTNMMTMuNzA3IDRhMSAxIDAgMCAxIC4yOTMuNzA3VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMnptNS41IDEuNXYyYTEgMSAwIDAgMCAxIDFoMmwtMy0zek03IDUuNWExIDEgMCAwIDAtMSAxVjEzYS41LjUgMCAwIDAgMSAwdi0yaDEuMTg4YTIuNzUgMi43NSAwIDAgMCAwLTUuNUg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1JpY2h0ZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNNyA2LjI1YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bS0uODYxIDEuNTQyIDEuMzMuODg2IDEuODU0LTEuODU1YS4yNS4yNSAwIDAgMSAuMjg5LS4wNDdsMS44ODguOTc0VjkuNWEuNS41IDAgMCAxLS41LjVINWEuNS41IDAgMCAxLS41LS41VjlzMS41NC0xLjI3NCAxLjYzOS0xLjIwOHpNNSAxMWg2YS41LjUgMCAwIDEgMCAxSDVhLjUuNSAwIDAgMSAwLTF6bTAgMmgzYS41LjUgMCAwIDEgMCAxSDVhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrUnVsZWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0zIDloMTB2MUg2djJoN3YxSDZ2Mkg1di0ySDN2LTFoMnYtMkgzVjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrU2xpZGVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDkuNzhWNy4yMmMwLS4wOTYuMTA2LS4xNTYuMTktLjEwNmwyLjEzIDEuMjc5YS4xMjUuMTI1IDAgMCAxIDAgLjIxNGwtMi4xMyAxLjI4QS4xMjUuMTI1IDAgMCAxIDcgOS43Nzh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTUgNmg2YS41LjUgMCAwIDEgLjQ5Ni40MzhsLjUgNEEuNS41IDAgMCAxIDExLjUgMTFoLTN2Mi4wMTZjLjg2My4wNTUgMS41LjI1MSAxLjUuNDg0IDAgLjI3Ni0uODk1LjUtMiAuNXMtMi0uMjI0LTItLjVjMC0uMjMzLjYzNy0uNDI5IDEuNS0uNDg0VjExaC0zYS41LjUgMCAwIDEtLjQ5Ni0uNTYybC41LTRBLjUuNSAwIDAgMSA1IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrU3ByZWFkc2hlZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJ2LTJoM3YySDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTMgOWgxMHYxaC0zdjJoM3YxaC0zdjJIOXYtMkg2djJINXYtMkgzdi0xaDJ2LTJIM1Y5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1RleHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek00LjUgOWEuNS41IDAgMCAxIDAtMWg3YS41LjUgMCAwIDEgMCAxaC03ek00IDEwLjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bS41IDIuNWEuNS41IDAgMCAxIDAtMWg0YS41LjUgMCAwIDEgMCAxaC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFybWFya1dvcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek01LjQ4NSA2Ljg3OWwxLjAzNiA0LjE0NC45OTctMy42NTVhLjUuNSAwIDAgMSAuOTY0IDBsLjk5NyAzLjY1NSAxLjAzNi00LjE0NGEuNS41IDAgMCAxIC45Ny4yNDJsLTEuNSA2YS41LjUgMCAwIDEtLjk2Ny4wMUw4IDkuNDAybC0xLjAxOCAzLjczYS41LjUgMCAwIDEtLjk2Ny0uMDFsLTEuNS02YS41LjUgMCAxIDEgLjk3LS4yNDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVFYXJtYXJrWEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYuODU0IDcuMTQ2IDggOC4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDEgMSAuNzA4LjcwOEw4LjcwNyA5bDEuMTQ3IDEuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA5LjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOSA2LjE0NiA3Ljg1NGEuNS41IDAgMSAxIC43MDgtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUVhcm1hcmtaaXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA5LjQzOFY4LjVoMXYuOTM4YTEgMSAwIDAgMCAuMDMuMjQzbC40IDEuNTk4LS45My42Mi0uOTMtLjYyLjQtMS41OThhMSAxIDAgMCAwIC4wMy0uMjQzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xem0tNC0uNVYyaC0xVjFINnYxaDF2MUg2djFoMXYxSDZ2MWgxdjFINS41VjZoLTFWNWgxVjRoLTFWM2gxem0wIDQuNWgxYTEgMSAwIDAgMSAxIDF2LjkzOGwuNCAxLjU5OWExIDEgMCAwIDEtLjQxNiAxLjA3NGwtLjkzLjYyYTEgMSAwIDAgMS0xLjEwOSAwbC0uOTMtLjYyYTEgMSAwIDAgMS0uNDE1LTEuMDc0bC40LTEuNTk5VjguNWExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRWFzZWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNi41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVoLTVhLjUuNSAwIDAgMS0uNS0uNXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA1aDJBMS41IDEuNSAwIDAgMSAxMiA2LjV2MmExLjUgMS41IDAgMCAxLTEuNSAxLjVoLS40NzNsLjQ0NyAxLjM0MmEuNS41IDAgMCAxLS45NDguMzE2TDguOTczIDEwSDguNXYxYS41LjUgMCAwIDEtMSAwdi0xaC0uNDczbC0uNTUzIDEuNjU4YS41LjUgMCAxIDEtLjk0OC0uMzE2TDUuOTczIDEwSDUuNUExLjUgMS41IDAgMCAxIDQgOC41di0yQTEuNSAxLjUgMCAwIDEgNS41IDVoMmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUV4Y2VsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTUuODg0IDQuNjggOCA3LjIxOWwyLjExNi0yLjU0YS41LjUgMCAxIDEgLjc2OC42NDFMOC42NTEgOGwyLjIzMyAyLjY4YS41LjUgMCAwIDEtLjc2OC42NEw4IDguNzgxbC0yLjExNiAyLjU0YS41LjUgMCAwIDEtLjc2OC0uNjQxTDcuMzQ5IDggNS4xMTYgNS4zMmEuNS41IDAgMSAxIC43NjgtLjY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVGb250RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTUuMDU3IDRoNS44ODZMMTEgNmgtLjVjLS4xOC0xLjA5Ni0uMzU2LTEuMTkyLTEuNjk0LTEuMjM1bC0uMjk4LS4wMXY2LjA5YzAgLjQ3LjEuNTgyLjkwMy42NTV2LjVINi41OXYtLjVjLjc5OS0uMDczLjg5OC0uMTg0Ljg5OC0uNjU0VjQuNzU1bC0uMjkzLjAxQzUuODU2IDQuODA4IDUuNjggNC45MDUgNS41IDZINWwuMDU3LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVJbWFnZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnY4LjI5M2wtMi43My0yLjczYTEgMSAwIDAgMC0xLjUyLjEyN2wtMS44ODkgMi42NDQtMS43NjktMS4wNjJhMSAxIDAgMCAwLTEuMjIyLjE1TDIgMTIuMjkyVjJhMiAyIDAgMCAxIDItMnptNC4wMDIgNS41YTEuNSAxLjUgMCAxIDAtMyAwIDEuNSAxLjUgMCAwIDAgMyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjU2NCA4LjI3IDE0IDExLjcwOFYxNGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMnYtLjI5M2wzLjU3OC0zLjU3NyAyLjU2IDEuNTM2IDIuNDI2LTMuMzk1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlTG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA2YTEgMSAwIDAgMSAyIDB2MUg3VjZ6TTYgOC4zYzAtLjA0Mi4wMi0uMTA3LjEwNS0uMTc1QS42MzcuNjM3IDAgMCAxIDYuNSA4aDNhLjY0LjY0IDAgMCAxIC4zOTUuMTI1Yy4wODUuMDY4LjEwNS4xMzMuMTA1LjE3NXYyLjRjMCAuMDQyLS4wMi4xMDctLjEwNS4xNzVBLjYzNy42MzcgMCAwIDEgOS41IDExaC0zYS42MzcuNjM3IDAgMCAxLS4zOTUtLjEyNUM2LjAyIDEwLjgwNyA2IDEwLjc0MiA2IDEwLjdWOC4zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnptLTIgNnYxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOC4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjZhMiAyIDAgMSAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZUxvY2syRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDZhMSAxIDAgMCAxIDIgMHYxSDdWNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6bS0yIDZ2MS4wNzZjLjU0LjE2NiAxIC41OTcgMSAxLjIyNHYyLjRjMCAuODE2LS43ODEgMS4zLTEuNSAxLjNoLTNjLS43MTkgMC0xLjUtLjQ4NC0xLjUtMS4zVjguM2MwLS42MjcuNDYtMS4wNTggMS0xLjIyNFY2YTIgMiAwIDEgMSA0IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVNZWRpY2FsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA0LjV2LjYzNGwuNTQ5LS4zMTdhLjUuNSAwIDEgMSAuNS44NjZMOSA2bC41NDkuMzE3YS41LjUgMCAxIDEtLjUuODY2TDguNSA2Ljg2NlY3LjVhLjUuNSAwIDAgMS0xIDB2LS42MzRsLS41NDkuMzE3YS41LjUgMCAxIDEtLjUtLjg2Nkw3IDZsLS41NDktLjMxN2EuNS41IDAgMCAxIC41LS44NjZsLjU0OS4zMTdWNC41YS41LjUgMCAxIDEgMSAwek01LjUgOWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xem0wIDJoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZU1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTYgNy41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZU11c2ljRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6bS0uNSA0LjExdjEuOGwtMi41LjV2NS4wOWMwIC40OTUtLjMwMS44ODMtLjY2MiAxLjEyM0M3Ljk3NCAxMi44NjYgNy40OTkgMTMgNyAxM2MtLjUgMC0uOTc0LS4xMzQtMS4zMzgtLjM3Ny0uMzYtLjI0LS42NjItLjYyOC0uNjYyLTEuMTIzcy4zMDEtLjg4My42NjItMS4xMjNDNi4wMjYgMTAuMTM0IDYuNTAxIDEwIDcgMTBjLjM1NiAwIC43LjA2OCAxIC4xOTZWNC40MWExIDEgMCAwIDEgLjgwNC0uOThsMS41LS4zYTEgMSAwIDAgMSAxLjE5Ni45OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZVBkZkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41MjMgMTAuNDI0Yy4xNC0uMDgyLjI5My0uMTYyLjQ1OS0uMjM4YTcuODc4IDcuODc4IDAgMCAxLS40NS42MDZjLS4yOC4zMzctLjQ5OC41MTYtLjYzNS41NzJhLjI2Ni4yNjYgMCAwIDEtLjAzNS4wMTIuMjgyLjI4MiAwIDAgMS0uMDI2LS4wNDRjLS4wNTYtLjExLS4wNTQtLjIxNi4wNC0uMzYuMTA2LS4xNjUuMzE5LS4zNTQuNjQ3LS41NDh6bTIuNDU1LTEuNjQ3Yy0uMTE5LjAyNS0uMjM3LjA1LS4zNTYuMDc4YTIxLjAzNSAyMS4wMzUgMCAwIDAgLjUtMS4wNSAxMS45NiAxMS45NiAwIDAgMCAuNTEuODU4Yy0uMjE3LjAzMi0uNDM2LjA3LS42NTQuMTE0em0yLjUyNS45MzlhMy44ODggMy44ODggMCAwIDEtLjQzNS0uNDFjLjIyOC4wMDUuNDM0LjAyMi42MTIuMDU0LjMxNy4wNTcuNDY2LjE0Ny41MTguMjA5YS4wOTUuMDk1IDAgMCAxIC4wMjYuMDY0LjQzNi40MzYgMCAwIDEtLjA2LjIuMzA3LjMwNyAwIDAgMS0uMDk0LjEyNC4xMDcuMTA3IDAgMCAxLS4wNjkuMDE1Yy0uMDktLjAwMy0uMjU4LS4wNjYtLjQ5OC0uMjU2ek04LjI3OCA0Ljk3Yy0uMDQuMjQ0LS4xMDguNTI0LS4yLjgyOWE0Ljg2IDQuODYgMCAwIDEtLjA4OS0uMzQ2Yy0uMDc2LS4zNTMtLjA4Ny0uNjMtLjA0Ni0uODIyLjAzOC0uMTc3LjExLS4yNDguMTk2LS4yODNhLjUxNy41MTcgMCAwIDEgLjE0NS0uMDRjLjAxMy4wMy4wMjguMDkyLjAzMi4xOTguMDA1LjEyMi0uMDA3LjI3Ny0uMDM4LjQ2NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJ6bS4xNjUgMTEuNjY4Yy4wOS4xOC4yMy4zNDMuNDM4LjQxOS4yMDcuMDc1LjQxMi4wNC41OC0uMDMuMzE4LS4xMy42MzUtLjQzNi45MjYtLjc4Ni4zMzMtLjQwMS42ODMtLjkyNyAxLjAyMS0xLjUxYTExLjY0IDExLjY0IDAgMCAxIDEuOTk3LS40MDZjLjMuMzgzLjYxLjcxMy45MS45NS4yOC4yMi42MDMuNDAzLjkzNC40MTdhLjg1Ni44NTYgMCAwIDAgLjUxLS4xMzhjLjE1NS0uMTAxLjI3LS4yNDcuMzU0LS40MTYuMDktLjE4MS4xNDUtLjM3LjEzOC0uNTYzYS44NDQuODQ0IDAgMCAwLS4yLS41MThjLS4yMjYtLjI3LS41OTYtLjQtLjk2LS40NjVhNS43NiA1Ljc2IDAgMCAwLTEuMzM1LS4wNSAxMC45NTQgMTAuOTU0IDAgMCAxLS45OC0xLjY4NmMuMjUtLjY2LjQzNy0xLjI4NC41Mi0xLjc5NC4wMzYtLjIxOC4wNTUtLjQyNi4wNDgtLjYxNGExLjIzOCAxLjIzOCAwIDAgMC0uMTI3LS41MzguNy43IDAgMCAwLS40NzctLjM2NWMtLjIwMi0uMDQzLS40MSAwLS42MDEuMDc3LS4zNzcuMTUtLjU3Ni40Ny0uNjUxLjgyMy0uMDczLjM0LS4wNC43MzYuMDQ2IDEuMTM2LjA4OC40MDYuMjM4Ljg0OC40MyAxLjI5NWExOS43MDcgMTkuNzA3IDAgMCAxLTEuMDYyIDIuMjI3IDcuNjYyIDcuNjYyIDAgMCAwLTEuNDgyLjY0NWMtLjM3LjIyLS42OTkuNDgtLjg5Ny43ODctLjIxLjMyNi0uMjc1LjcxNC0uMDggMS4xMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVQZXJzb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnptLTEgN2EzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6bS0zIDRjMi42MjMgMCA0LjE0Ni44MjYgNSAxLjc1NVYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMXYtMS4yNDVDMy44NTQgMTEuODI1IDUuMzc3IDExIDggMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVQbGF5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTYgNS44ODNhLjUuNSAwIDAgMSAuNzU3LS40MjlsMy41MjggMi4xMTdhLjUuNSAwIDAgMSAwIC44NThsLTMuNTI4IDIuMTE3YS41LjUgMCAwIDEtLjc1Ny0uNDNWNS44ODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVQbHVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA2djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTBhLjUuNSAwIDAgMS0xIDBWOC41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjZhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVQb3N0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTQuNSAzaDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTF6bTAgMmg3YS41LjUgMCAwIDEgLjUuNXY4YS41LjUgMCAwIDEtLjUuNWgtN2EuNS41IDAgMCAxLS41LS41di04YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVQcHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTg4IDguNUg3VjVoMS4xODhhMS43NSAxLjc1IDAgMSAxIDAgMy41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem0zIDRhMSAxIDAgMCAwLTEgMXY2LjVhLjUuNSAwIDAgMCAxIDB2LTJoMS4xODhhMi43NSAyLjc1IDAgMCAwIDAtNS41SDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVSaWNodGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek03IDQuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptLS44NjEgMS41NDIgMS4zMy44ODYgMS44NTQtMS44NTVhLjI1LjI1IDAgMCAxIC4yODktLjA0N2wxLjg4OC45NzRWNy41YS41LjUgMCAwIDEtLjUuNUg1YS41LjUgMCAwIDEtLjUtLjVWN3MxLjU0LTEuMjc0IDEuNjM5LTEuMjA4ek01IDloNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0wIDJoM2EuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlUnVsZWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjRoMTJWMmEyIDIgMCAwIDAtMi0yem0yIDdINnYyaDhWN3ptMCAzSDZ2Mmg4di0yem0wIDNINnYzaDZhMiAyIDAgMCAwIDItMnYtMXptLTkgM3YtM0gydjFhMiAyIDAgMCAwIDIgMmgxem0tMy00aDN2LTJIMnYyem0wLTNoM1Y3SDJ2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsZVNsaWRlc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3Ljc4VjUuMjJjMC0uMDk2LjEwNi0uMTU2LjE5LS4xMDZsMi4xMyAxLjI3OWEuMTI1LjEyNSAwIDAgMSAwIC4yMTRsLTIuMTMgMS4yOEEuMTI1LjEyNSAwIDAgMSA3IDcuNzc4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNNSA0aDZhLjUuNSAwIDAgMSAuNDk2LjQzOGwuNSA0QS41LjUgMCAwIDEgMTEuNSA5aC0zdjIuMDE2Yy44NjMuMDU1IDEuNS4yNTEgMS41LjQ4NCAwIC4yNzYtLjg5NS41LTIgLjVzLTItLjIyNC0yLS41YzAtLjIzMy42MzctLjQyOSAxLjUtLjQ4NFY5aC0zYS41LjUgMCAwIDEtLjQ5Ni0uNTYybC41LTRBLjUuNSAwIDAgMSA1IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVTcHJlYWRzaGVldEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2NGgxMlYyYTIgMiAwIDAgMC0yLTJ6bTIgN2gtNHYyaDRWN3ptMCAzaC00djJoNHYtMnptMCAzaC00djNoMmEyIDIgMCAwIDAgMi0ydi0xem0tNSAzdi0zSDZ2M2gzem0tNCAwdi0zSDJ2MWEyIDIgMCAwIDAgMiAyaDF6bS0zLTRoM3YtMkgydjJ6bTAtM2gzVjdIMnYyem00IDBWN2gzdjJINnptMCAxaDN2Mkg2di0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlVGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01IDRoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0tLjUgMi41QS41LjUgMCAwIDEgNSA2aDZhLjUuNSAwIDAgMSAwIDFINWEuNS41IDAgMCAxLS41LS41ek01IDhoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0wIDJoM2EuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlV29yZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01LjQ4NSA0Ljg3OWwxLjAzNiA0LjE0NC45OTctMy42NTVhLjUuNSAwIDAgMSAuOTY0IDBsLjk5NyAzLjY1NSAxLjAzNi00LjE0NGEuNS41IDAgMCAxIC45Ny4yNDJsLTEuNSA2YS41LjUgMCAwIDEtLjk2Ny4wMUw4IDcuNDAybC0xLjAxOCAzLjczYS41LjUgMCAwIDEtLjk2Ny0uMDFsLTEuNS02YS41LjUgMCAxIDEgLjk3LS4yNDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbGVYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTYuODU0IDYuMTQ2IDggNy4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDEgMSAuNzA4LjcwOEw4LjcwNyA4bDEuMTQ3IDEuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA4LjcwNyA2Ljg1NCA5Ljg1NGEuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDYuMTQ2IDYuODU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGaWxlWmlwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgOS40MzhWOC41aC0xdi45MzhhMSAxIDAgMCAxLS4wMy4yNDNsLS40IDEuNTk4LjkzLjYyLjkzLS42Mi0uNC0xLjU5OGExIDEgMCAwIDEtLjAzLS4yNDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJ6bTIuNSA4LjV2LjkzOGwtLjQgMS41OTlhMSAxIDAgMCAwIC40MTYgMS4wNzRsLjkzLjYyYTEgMSAwIDAgMCAxLjEwOSAwbC45My0uNjJhMSAxIDAgMCAwIC40MTUtMS4wNzRsLS40LTEuNTk5VjguNWExIDEgMCAwIDAtMS0xaC0xYTEgMSAwIDAgMC0xIDF6bTEtNS41aC0xdjFoMXYxaC0xdjFoMXYxSDlWNkg4VjVoMVY0SDhWM2gxVjJIOFYxSDYuNXYxaDF2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmlsdGVyQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTMuNSA1aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMSAwLTF6TTUgOC41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0yIDNhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZpbHRlclNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0uNSA1aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxIDAtMXpNNCA4LjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bTIgM2EuNS41IDAgMCAxIC41LS41aDNhLjUuNSAwIDAgMSAwIDFoLTNhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsRmxhZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzc4LjA4NUEuNS41IDAgMCAxIDE1IC41VjhhLjUuNSAwIDAgMS0uMzE0LjQ2NEwxNC41IDhsLjE4Ni40NjQtLjAwMy4wMDEtLjAwNi4wMDMtLjAyMy4wMDlhMTIuNDM1IDEyLjQzNSAwIDAgMS0uMzk3LjE1Yy0uMjY0LjA5NS0uNjMxLjIyMy0xLjA0Ny4zNS0uODE2LjI1Mi0xLjg3OS41MjMtMi43MS41MjMtLjg0NyAwLTEuNTQ4LS4yOC0yLjE1OC0uNTI1bC0uMDI4LS4wMUM3LjY4IDguNzEgNy4xNCA4LjUgNi41IDguNWMtLjcgMC0xLjYzOC4yMy0yLjQzNy40NzdBMTkuNjI2IDE5LjYyNiAwIDAgMCAzIDkuMzQyVjE1LjVhLjUuNSAwIDAgMS0xIDBWLjVhLjUuNSAwIDAgMSAxIDB2LjI4MmMuMjI2LS4wNzkuNDk2LS4xNy43OS0uMjZDNC42MDYuMjcyIDUuNjcgMCA2LjUgMGMuODQgMCAxLjUyNC4yNzcgMi4xMjEuNTE5bC4wNDMuMDE4QzkuMjg2Ljc4OCA5LjgyOCAxIDEwLjUgMWMuNyAwIDEuNjM4LS4yMyAyLjQzNy0uNDc3YTE5LjU4NyAxOS41ODcgMCAwIDAgMS4zNDktLjQ3NmwuMDE5LS4wMDcuMDA0LS4wMDJoLjAwMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGb2xkZXJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODI4IDNoMy45ODJhMiAyIDAgMCAxIDEuOTkyIDIuMTgxbC0uNjM3IDdBMiAyIDAgMCAxIDEzLjE3NCAxNEgyLjgyNWEyIDIgMCAwIDEtMS45OTEtMS44MTlsLS42MzctN2ExLjk5IDEuOTkgMCAwIDEgLjM0Mi0xLjMxTC41IDNhMiAyIDAgMCAxIDItMmgzLjY3MmEyIDIgMCAwIDEgMS40MTQuNTg2bC44MjguODI4QTIgMiAwIDAgMCA5LjgyOCAzem0tOC4zMjIuMTJDMS43MiAzLjA0MiAxLjk1IDMgMi4xOSAzaDUuMzk2bC0uNzA3LS43MDdBMSAxIDAgMCAwIDYuMTcyIDJIMi41YTEgMSAwIDAgMC0xIC45ODFsLjAwNi4xMzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZvbGRlclN5bWxpbmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjgxIDNIOS44MjhhMiAyIDAgMCAxLTEuNDE0LS41ODZsLS44MjgtLjgyOEEyIDIgMCAwIDAgNi4xNzIgMUgyLjVhMiAyIDAgMCAwLTIgMmwuMDQuODdhMS45OSAxLjk5IDAgMCAwLS4zNDIgMS4zMTFsLjYzNyA3QTIgMiAwIDAgMCAyLjgyNiAxNGgxMC4zNDhhMiAyIDAgMCAwIDEuOTkxLTEuODE5bC42MzctN0EyIDIgMCAwIDAgMTMuODEgM3pNMi4xOSAzYy0uMjQgMC0uNDcuMDQyLS42ODMuMTJMMS41IDIuOThhMSAxIDAgMCAxIDEtLjk4aDMuNjcyYTEgMSAwIDAgMSAuNzA3LjI5M0w3LjU4NiAzSDIuMTl6bTkuNjA4IDUuMjcxLTMuMTgyIDEuOTdjLS4yNy4xNjYtLjYxNi0uMDM2LS42MTYtLjM3MlY5LjFzLTIuNTcxLS4zLTQgMi40Yy41NzEtNC44IDMuMTQzLTQuOCA0LTQuOHYtLjc2OWMwLS4zMzYuMzQ2LS41MzguNjE2LS4zNzFsMy4xODIgMS45NjljLjI3LjE2Ni4yNy41NzYgMCAuNzQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxGb3J3YXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljc3IDEyLjExIDQuMDEyLTIuOTUzYS42NDcuNjQ3IDAgMCAwIDAtMS4xMTRMOS43NzEgNS4wOWEuNjQ0LjY0NCAwIDAgMC0uOTcxLjU1N1Y2LjY1SDJ2My45aDYuOHYxLjAwM2MwIC41MDUuNTQ1LjgwOC45Ny41NTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEZ1bm5lbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41IDEuNUEuNS41IDAgMCAxIDIgMWgxMmEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS4xMjguMzM0TDEwIDguNjkyVjEzLjVhLjUuNSAwIDAgMS0uMzQyLjQ3NGwtMyAxQS41LjUgMCAwIDEgNiAxNC41VjguNjkyTDEuNjI4IDMuODM0QS41LjUgMCAwIDEgMS41IDMuNXYtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsR2VhckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40MDUgMS4wNWMtLjQxMy0xLjQtMi4zOTctMS40LTIuODEgMGwtLjEuMzRhMS40NjQgMS40NjQgMCAwIDEtMi4xMDUuODcybC0uMzEtLjE3Yy0xLjI4My0uNjk4LTIuNjg2LjcwNS0xLjk4NyAxLjk4N2wuMTY5LjMxMWMuNDQ2LjgyLjAyMyAxLjg0MS0uODcyIDIuMTA1bC0uMzQuMWMtMS40LjQxMy0xLjQgMi4zOTcgMCAyLjgxbC4zNC4xYTEuNDY0IDEuNDY0IDAgMCAxIC44NzIgMi4xMDVsLS4xNy4zMWMtLjY5OCAxLjI4My43MDUgMi42ODYgMS45ODcgMS45ODdsLjMxMS0uMTY5YTEuNDY0IDEuNDY0IDAgMCAxIDIuMTA1Ljg3MmwuMS4zNGMuNDEzIDEuNCAyLjM5NyAxLjQgMi44MSAwbC4xLS4zNGExLjQ2NCAxLjQ2NCAwIDAgMSAyLjEwNS0uODcybC4zMS4xN2MxLjI4My42OTggMi42ODYtLjcwNSAxLjk4Ny0xLjk4N2wtLjE2OS0uMzExYTEuNDY0IDEuNDY0IDAgMCAxIC44NzItMi4xMDVsLjM0LS4xYzEuNC0uNDEzIDEuNC0yLjM5NyAwLTIuODFsLS4zNC0uMWExLjQ2NCAxLjQ2NCAwIDAgMS0uODcyLTIuMTA1bC4xNy0uMzFjLjY5OC0xLjI4My0uNzA1LTIuNjg2LTEuOTg3LTEuOTg3bC0uMzExLjE2OWExLjQ2NCAxLjQ2NCAwIDAgMS0yLjEwNS0uODcybC0uMS0uMzR6TTggMTAuOTNhMi45MjkgMi45MjkgMCAxIDEgMC01Ljg2IDIuOTI5IDIuOTI5IDAgMCAxIDAgNS44NTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEdlb0FsdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNnM2LTUuNjg2IDYtMTBBNiA2IDAgMCAwIDIgNmMwIDQuMzE0IDYgMTAgNiAxMHptMC03YTMgMyAwIDEgMSAwLTYgMyAzIDAgMCAxIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsR2VvRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA0YTQgNCAwIDEgMSA0LjUgMy45NjlWMTMuNWEuNS41IDAgMCAxLTEgMFY3Ljk3QTQgNCAwIDAgMSA0IDMuOTk5em0yLjQ5MyA4LjU3NGEuNS41IDAgMCAxLS40MTEuNTc1Yy0uNzEyLjExOC0xLjI4LjI5NS0xLjY1NS40OTNhMS4zMTkgMS4zMTkgMCAwIDAtLjM3LjI2NS4zMDEuMzAxIDAgMCAwLS4wNTcuMDlWMTRsLjAwMi4wMDhhLjE0Ny4xNDcgMCAwIDAgLjAxNi4wMzMuNjE3LjYxNyAwIDAgMCAuMTQ1LjE1Yy4xNjUuMTMuNDM1LjI3LjgxMy4zOTUuNzUxLjI1IDEuODIuNDE0IDMuMDI0LjQxNHMyLjI3My0uMTYzIDMuMDI0LS40MTRjLjM3OC0uMTI2LjY0OC0uMjY1LjgxMy0uMzk1YS42MTkuNjE5IDAgMCAwIC4xNDYtLjE1LjE0OC4xNDggMCAwIDAgLjAxNS0uMDMzTDEyIDE0di0uMDA0YS4zMDEuMzAxIDAgMCAwLS4wNTctLjA5IDEuMzE4IDEuMzE4IDAgMCAwLS4zNy0uMjY0Yy0uMzc2LS4xOTgtLjk0My0uMzc1LTEuNjU1LS40OTNhLjUuNSAwIDEgMSAuMTY0LS45ODZjLjc3LjEyNyAxLjQ1Mi4zMjggMS45NTcuNTk0QzEyLjUgMTMgMTMgMTMuNCAxMyAxNGMwIC40MjYtLjI2Ljc1Mi0uNTQ0Ljk3Ny0uMjkuMjI4LS42OC40MTMtMS4xMTYuNTU4LS44NzguMjkzLTIuMDU5LjQ2NS0zLjM0LjQ2NS0xLjI4MSAwLTIuNDYyLS4xNzItMy4zNC0uNDY1LS40MzYtLjE0NS0uODI2LS4zMy0xLjExNi0uNTU4QzMuMjYgMTQuNzUyIDMgMTQuNDI2IDMgMTRjMC0uNTk5LjUtMSAuOTYxLTEuMjQzLjUwNS0uMjY2IDEuMTg3LS40NjcgMS45NTctLjU5NGEuNS41IDAgMCAxIC41NzUuNDExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxHaWZ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIuNWEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxIDUgMHYuMDA2YzAgLjA3IDAgLjI3LS4wMzguNDk0SDE1YTEgMSAwIDAgMSAxIDF2MWExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMi4wMzhBMi45NjggMi45NjggMCAwIDEgMyAyLjUwNlYyLjV6bTEuMDY4LjVIN3YtLjVhMS41IDEuNSAwIDEgMC0zIDBjMCAuMDg1LjAwMi4yNzQuMDQ1LjQzYS41MjIuNTIyIDAgMCAwIC4wMjMuMDd6TTkgM2gyLjkzMmEuNTYuNTYgMCAwIDAgLjAyMy0uMDdjLjA0My0uMTU2LjA0NS0uMzQ1LjA0NS0uNDNhMS41IDEuNSAwIDAgMC0zIDBWM3ptNiA0djcuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVIOVY3aDZ6TTIuNSAxNkExLjUgMS41IDAgMCAxIDEgMTQuNVY3aDZ2OUgyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEdyaWQxWDJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMWExIDEgMCAwIDEgMS0xaDVhMSAxIDAgMCAxIDEgMXYxNGExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVYxem05IDBhMSAxIDAgMCAxIDEtMWg1YTEgMSAwIDAgMSAxIDF2NWExIDEgMCAwIDEtMSAxaC01YTEgMSAwIDAgMS0xLTFWMXptMCA5YTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjVhMSAxIDAgMCAxLTEgMWgtNWExIDEgMCAwIDEtMS0xdi01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxHcmlkM1gyR2FwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDRhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0em01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDdhMSAxIDAgMCAxLTEtMVY0em01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWNHpNMSA5YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWOXptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUg3YTEgMSAwIDAgMS0xLTFWOXptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xVjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEdyaWQzWDNHYXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJ6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjJ6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAxLTEtMVYyek0xIDdhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY3em01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDdhMSAxIDAgMCAxLTEtMVY3em01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWN3pNMSAxMmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xdi0yem01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDdhMSAxIDAgMCAxLTEtMXYtMnptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xdi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxHcmlkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDIuNUExLjUgMS41IDAgMCAxIDIuNSAxaDNBMS41IDEuNSAwIDAgMSA3IDIuNXYzQTEuNSAxLjUgMCAwIDEgNS41IDdoLTNBMS41IDEuNSAwIDAgMSAxIDUuNXYtM3ptOCAwQTEuNSAxLjUgMCAwIDEgMTAuNSAxaDNBMS41IDEuNSAwIDAgMSAxNSAyLjV2M0ExLjUgMS41IDAgMCAxIDEzLjUgN2gtM0ExLjUgMS41IDAgMCAxIDkgNS41di0zem0tOCA4QTEuNSAxLjUgMCAwIDEgMi41IDloM0ExLjUgMS41IDAgMCAxIDcgMTAuNXYzQTEuNSAxLjUgMCAwIDEgNS41IDE1aC0zQTEuNSAxLjUgMCAwIDEgMSAxMy41di0zem04IDBBMS41IDEuNSAwIDAgMSAxMC41IDloM2ExLjUgMS41IDAgMCAxIDEuNSAxLjV2M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTNBMS41IDEuNSAwIDAgMSA5IDEzLjV2LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhhbmRJbmRleEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDQuNDY2VjEuNzVhMS43NSAxLjc1IDAgMSAwLTMuNSAwdjUuMzRsLTEuMi4yNGExLjUgMS41IDAgMCAwLTEuMTk2IDEuNjM2bC4zNDUgMy4xMDZhMi41IDIuNSAwIDAgMCAuNDA1IDEuMTFsMS40MzMgMi4xNUExLjUgMS41IDAgMCAwIDYuMDM1IDE2aDYuMzg1YTEuNSAxLjUgMCAwIDAgMS4zMDItLjc1NmwxLjM5NS0yLjQ0MWEzLjUgMy41IDAgMCAwIC40NDQtMS4zODlsLjI3MS0yLjcxNWEyIDIgMCAwIDAtMS45OS0yLjE5OWgtLjU4MWE1LjExNCA1LjExNCAwIDAgMC0uMTk1LS4yNDhjLS4xOTEtLjIyOS0uNTEtLjU2OC0uODgtLjcxNi0uMzY0LS4xNDYtLjg0Ni0uMTMyLTEuMTU4LS4xMDhsLS4xMzIuMDEyYTEuMjYgMS4yNiAwIDAgMC0uNTYtLjY0MiAyLjYzMiAyLjYzMiAwIDAgMC0uNzM4LS4yODhjLS4zMS0uMDYyLS43MzktLjA1OC0xLjA1LS4wNDZsLS4wNDguMDAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxIYW5kSW5kZXhUaHVtYkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEuNzV2Mi43MTZsLjA0Ny0uMDAyYy4zMTItLjAxMi43NDItLjAxNiAxLjA1MS4wNDYuMjguMDU2LjU0My4xOC43MzguMjg4LjI3My4xNTIuNDU2LjM4NS41Ni42NDJsLjEzMi0uMDEyYy4zMTItLjAyNC43OTQtLjAzOCAxLjE1OC4xMDguMzcuMTQ4LjY4OS40ODcuODguNzE2LjA3NS4wOS4xNDEuMTc1LjE5NS4yNDhoLjU4MmEyIDIgMCAwIDEgMS45OSAyLjE5OWwtLjI3MiAyLjcxNWEzLjUgMy41IDAgMCAxLS40NDQgMS4zODlsLTEuMzk1IDIuNDQxQTEuNSAxLjUgMCAwIDEgMTIuNDIgMTZINi4xMThhMS41IDEuNSAwIDAgMS0xLjM0Mi0uODNsLTEuMjE1LTIuNDNMMS4wNyA4LjU4OWExLjUxNyAxLjUxNyAwIDAgMSAyLjM3My0xLjg1Mkw1IDguMjkzVjEuNzVhMS43NSAxLjc1IDAgMCAxIDMuNSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxIYW5kVGh1bWJzRG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi45NTYgMTQuNTM0Yy4wNjUuOTM2Ljk1MiAxLjY1OSAxLjkwOCAxLjQybC4yNjEtLjA2NWExLjM3OCAxLjM3OCAwIDAgMCAxLjAxMi0uOTY1Yy4yMi0uODE2LjUzMy0yLjUxMi4wNjItNC41MS4xMzYuMDIuMjg1LjAzNy40NDMuMDUxLjcxMy4wNjUgMS42NjkuMDcxIDIuNTE2LS4yMTEuNTE4LS4xNzMuOTk0LS42OCAxLjItMS4yNzJhMS44OTYgMS44OTYgMCAwIDAtLjIzNC0xLjczNGMuMDU4LS4xMTguMTAzLS4yNDIuMTM4LS4zNjIuMDc3LS4yNy4xMTMtLjU2OC4xMTMtLjg1NiAwLS4yOS0uMDM2LS41ODYtLjExMy0uODU3YTIuMDk0IDIuMDk0IDAgMCAwLS4xNi0uNDAzYy4xNjktLjM4Ny4xMDctLjgyLS4wMDMtMS4xNDlhMy4xNjIgMy4xNjIgMCAwIDAtLjQ4OC0uOWMuMDU0LS4xNTMuMDc2LS4zMTMuMDc2LS40NjVhMS44NiAxLjg2IDAgMCAwLS4yNTMtLjkxMkMxMy4xLjc1NyAxMi40MzcuMjggMTEuNS4yOEg4Yy0uNjA1IDAtMS4wNy4wOC0xLjQ2Ni4yMTdhNC44MjMgNC44MjMgMCAwIDAtLjk3LjQ4NWwtLjA0OC4wMjljLS41MDQuMzA4LS45OTkuNjEtMi4wNjguNzIzQzIuNjgyIDEuODE1IDIgMi40MzQgMiAzLjI3OXY0YzAgLjg1MS42ODUgMS40MzMgMS4zNTcgMS42MTYuODQ5LjIzMiAxLjU3NC43ODcgMi4xMzIgMS40MS41Ni42MjYuOTE0IDEuMjggMS4wMzkgMS42MzguMTk5LjU3NS4zNTYgMS41NC40MjggMi41OTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhhbmRUaHVtYnNVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi45NTYgMS43NDVDNy4wMjEuODEgNy45MDguMDg3IDguODY0LjMyNWwuMjYxLjA2NmMuNDYzLjExNi44NzQuNDU2IDEuMDEyLjk2NS4yMi44MTYuNTMzIDIuNTExLjA2MiA0LjUxYTkuODQgOS44NCAwIDAgMSAuNDQzLS4wNTFjLjcxMy0uMDY1IDEuNjY5LS4wNzIgMi41MTYuMjEuNTE4LjE3My45OTQuNjgxIDEuMiAxLjI3My4xODQuNTMyLjE2IDEuMTYyLS4yMzQgMS43MzMuMDU4LjExOS4xMDMuMjQyLjEzOC4zNjMuMDc3LjI3LjExMy41NjcuMTEzLjg1NiAwIC4yODktLjAzNi41ODYtLjExMy44NTYtLjAzOS4xMzUtLjA5LjI3My0uMTYuNDA0LjE2OS4zODcuMTA3LjgxOS0uMDAzIDEuMTQ4YTMuMTYzIDMuMTYzIDAgMCAxLS40ODguOTAxYy4wNTQuMTUyLjA3Ni4zMTIuMDc2LjQ2NSAwIC4zMDUtLjA4OS42MjUtLjI1My45MTJDMTMuMSAxNS41MjIgMTIuNDM3IDE2IDExLjUgMTZIOGMtLjYwNSAwLTEuMDctLjA4MS0xLjQ2Ni0uMjE4YTQuODIgNC44MiAwIDAgMS0uOTctLjQ4NGwtLjA0OC0uMDNjLS41MDQtLjMwNy0uOTk5LS42MDktMi4wNjgtLjcyMkMyLjY4MiAxNC40NjQgMiAxMy44NDYgMiAxM1Y5YzAtLjg1LjY4NS0xLjQzMiAxLjM1Ny0xLjYxNS44NDktLjIzMiAxLjU3NC0uNzg3IDIuMTMyLTEuNDEuNTYtLjYyNy45MTQtMS4yOCAxLjAzOS0xLjYzOS4xOTktLjU3NS4zNTYtMS41MzkuNDI4LTIuNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhhbmRiYWdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMWEyIDIgMCAwIDAtMiAydjJINVYzYTMgMyAwIDEgMSA2IDB2MmgtMVYzYTIgMiAwIDAgMC0yLTJ6TTUgNUgzLjM2YTEuNSAxLjUgMCAwIDAtMS40ODMgMS4yNzdMLjg1IDEzLjEzQTIuNSAyLjUgMCAwIDAgMy4zMjIgMTZoOS4zNTVhMi41IDIuNSAwIDAgMCAyLjQ3My0yLjg3bC0xLjAyOC02Ljg1M0ExLjUgMS41IDAgMCAwIDEyLjY0IDVIMTF2MS41YS41LjUgMCAwIDEtMSAwVjVINnYxLjVhLjUuNSAwIDAgMS0xIDBWNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsSGRkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEwYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0ydi0xem0yLjUgMWEuNS41IDAgMSAwIDAtMSAuNS41IDAgMCAwIDAgMXptMiAwYS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxek0uOTEgNy4yMDRBMi45OTMgMi45OTMgMCAwIDEgMiA3aDEyYy4zODQgMCAuNzUyLjA3MiAxLjA5LjIwNGwtMS44NjctMy40MjJBMS41IDEuNSAwIDAgMCAxMS45MDYgM0g0LjA5NGExLjUgMS41IDAgMCAwLTEuMzE3Ljc4MkwuOTEgNy4yMDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhkZE5ldHdvcmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmg1LjV2M0ExLjUgMS41IDAgMCAwIDYgMTEuNUguNWEuNS41IDAgMCAwIDAgMUg2QTEuNSAxLjUgMCAwIDAgNy41IDE0aDFhMS41IDEuNSAwIDAgMCAxLjUtMS41aDUuNWEuNS41IDAgMCAwIDAtMUgxMEExLjUgMS41IDAgMCAwIDguNSAxMFY3SDE0YTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bS41IDNhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6bTIgMGEuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsSGRkUmFja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDF2MkgyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFhMiAyIDAgMCAwLTItMmgtMVY3aDFhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptLjUgM2EuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptMiAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0tMiA3YS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0yIDBhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6TTEyIDd2Mkg0VjdoOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsSGRkU3RhY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi0xYTIgMiAwIDAgMC0yLTJIMnptLjUgM2EuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptMiAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxek0yIDJhMiAyIDAgMCAwLTIgMnYxYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptLjUgM2EuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptMiAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxIZWFydEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMS4zMTRDMTIuNDM4LTMuMjQ4IDIzLjUzNCA0LjczNSA4IDE1LTcuNTM0IDQuNzM2IDMuNTYyLTMuMjQ4IDggMS4zMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhlcHRhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy43NzkuMDUyYS41LjUgMCAwIDEgLjQ0MiAwbDYuMDE1IDIuOTdhLjUuNSAwIDAgMSAuMjY3LjM0bDEuNDg1IDYuNjc2YS41LjUgMCAwIDEtLjA5My40MTVsLTQuMTYyIDUuMzU0YS41LjUgMCAwIDEtLjM5NS4xOTNINC42NjJhLjUuNSAwIDAgMS0uMzk1LS4xOTNMLjEwNSAxMC40NTNhLjUuNSAwIDAgMS0uMDkzLS40MTVsMS40ODUtNi42NzZhLjUuNSAwIDAgMSAuMjY3LS4zNEw3Ljc3OS4wNTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhleGFnb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04LjUuMTM0YTEgMSAwIDAgMC0xIDBsLTYgMy41NzdhMSAxIDAgMCAwLS41Ljg2NnY2Ljg0NmExIDEgMCAwIDAgLjUuODY2bDYgMy41NzdhMSAxIDAgMCAwIDEgMGw2LTMuNTc3YTEgMSAwIDAgMCAuNS0uODY2VjQuNTc3YTEgMSAwIDAgMC0uNS0uODY2TDguNS4xMzR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEhvdXNlRG9vckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDE0LjV2LTMuNTA1YzAtLjI0NS4yNS0uNDk1LjUtLjQ5NWgyYy4yNSAwIC41LjI1LjUuNXYzLjVhLjUuNSAwIDAgMCAuNS41aDRhLjUuNSAwIDAgMCAuNS0uNXYtN2EuNS41IDAgMCAwLS4xNDYtLjM1NEwxMyA1Ljc5M1YyLjVhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV2MS4yOTNMOC4zNTQgMS4xNDZhLjUuNSAwIDAgMC0uNzA4IDBsLTYgNkEuNS41IDAgMCAwIDEuNSA3LjV2N2EuNS41IDAgMCAwIC41LjVoNGEuNS41IDAgMCAwIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxIb3VzZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTggMy4yOTMgNiA2VjEzLjVhMS41IDEuNSAwIDAgMS0xLjUgMS41aC05QTEuNSAxLjUgMCAwIDEgMiAxMy41VjkuMjkzbDYtNnptNS0uNzkzVjZsLTItMlYyLjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy4yOTMgMS41YTEgMSAwIDAgMSAxLjQxNCAwbDYuNjQ3IDYuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCAyLjIwNyAxLjM1NCA4Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw3LjI5MyAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEltYWdlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMDAyIDNhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJoLTEyYTIgMiAwIDAgMS0yLTJWM3ptMSA5djFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjkuNWwtMy43NzctMS45NDdhLjUuNSAwIDAgMC0uNTc3LjA5M2wtMy43MSAzLjcxLTIuNjYtMS43NzJhLjUuNSAwIDAgMC0uNjMuMDYyTDEuMDAyIDEyem01LTYuNWExLjUgMS41IDAgMSAwLTMgMCAxLjUgMS41IDAgMCAwIDMgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsSW5ib3hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTggNGEuNS41IDAgMCAwLS4zOS4xODhMMS41NCA4SDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAxIDAgMyAwQS41LjUgMCAwIDEgMTAgOGg0LjQ2bC0zLjA1LTMuODEyQS41LjUgMCAwIDAgMTEuMDIgNEg0Ljk4em0tMS4xNy0uNDM3QTEuNSAxLjUgMCAwIDEgNC45OCAzaDYuMDRhMS41IDEuNSAwIDAgMSAxLjE3LjU2M2wzLjcgNC42MjVhLjUuNSAwIDAgMSAuMTA2LjM3NGwtLjM5IDMuMTI0QTEuNSAxLjUgMCAwIDEgMTQuMTE3IDEzSDEuODgzYTEuNSAxLjUgMCAwIDEtMS40ODktMS4zMTRsLS4zOS0zLjEyNGEuNS41IDAgMCAxIC4xMDYtLjM3NGwzLjctNC42MjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEluYm94ZXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTggMWEuNS41IDAgMCAwLS4zOS4xODhMMS41NCA1SDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAwIDAgMyAwQS41LjUgMCAwIDEgMTAgNWg0LjQ2bC0zLjA1LTMuODEyQS41LjUgMCAwIDAgMTEuMDIgMUg0Ljk4ek0zLjgxLjU2M0ExLjUgMS41IDAgMCAxIDQuOTggMGg2LjA0YTEuNSAxLjUgMCAwIDEgMS4xNy41NjNsMy43IDQuNjI1YS41LjUgMCAwIDEgLjEwNi4zNzRsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxMEgxLjg4M0ExLjUgMS41IDAgMCAxIC4zOTQgOC42ODZsLS4zOS0zLjEyNGEuNS41IDAgMCAxIC4xMDYtLjM3NEwzLjgxLjU2M3pNLjEyNSAxMS4xN0EuNS41IDAgMCAxIC41IDExSDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAwIDAgMyAwIC41LjUgMCAwIDEgLjUtLjVoNS41YS41LjUgMCAwIDEgLjQ5Ni41NjJsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxNkgxLjg4M2ExLjUgMS41IDAgMCAxLTEuNDg5LTEuMzE0bC0uMzktMy4xMjRhLjUuNSAwIDAgMSAuMTIxLS4zOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEluZm9DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnptLjkzLTkuNDEyLTEgNC43MDVjLS4wNy4zNC4wMjkuNTMzLjMwNC41MzMuMTk0IDAgLjQ4Ny0uMDcuNjg2LS4yNDZsLS4wODguNDE2Yy0uMjg3LjM0Ni0uOTIuNTk4LTEuNDY1LjU5OC0uNzAzIDAtMS4wMDItLjQyMi0uODA4LTEuMzE5bC43MzgtMy40NjhjLjA2NC0uMjkzLjAwNi0uMzk5LS4yODctLjQ3bC0uNDUxLS4wODEuMDgyLS4zODEgMi4yOS0uMjg3ek04IDUuNWExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEluZm9TcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptOC45MyA0LjU4OC0yLjI5LjI4Ny0uMDgyLjM4LjQ1LjA4M2MuMjk0LjA3LjM1Mi4xNzYuMjg4LjQ2OWwtLjczOCAzLjQ2OGMtLjE5NC44OTcuMTA1IDEuMzE5LjgwOCAxLjMxOS41NDUgMCAxLjE3OC0uMjUyIDEuNDY1LS41OThsLjA4OC0uNDE2Yy0uMi4xNzYtLjQ5Mi4yNDYtLjY4Ni4yNDYtLjI3NSAwLS4zNzUtLjE5My0uMzA0LS41MzNMOC45MyA2LjU4OHpNOCA1LjVhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxKb3VybmFsQm9va21hcmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDFoNnY3YS41LjUgMCAwIDEtLjc1Ny40MjlMOSA3LjA4MyA2Ljc1NyA4LjQzQS41LjUgMCAwIDEgNiA4VjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAwaDEwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTFoMXYxYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFIM2ExIDEgMCAwIDAtMSAxdjFIMVYyYTIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1di0uNWEuNS41IDAgMCAxIDEgMFY1aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDBWOGguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwdi41aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbEthbmJhbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDExYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yaC0xMXptNSAyaDFhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFoLTFhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTF6bS01IDFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMSAxIDF2N2ExIDEgMCAwIDEtMSAxaC0xYTEgMSAwIDAgMS0xLTFWM3ptOS0xaDFhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxaC0xYTEgMSAwIDAgMS0xLTFWM2ExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxLZXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxMS41YTMuNSAzLjUgMCAxIDEgMy4xNjMtNUgxNEwxNS41IDggMTQgOS41bC0xLTEtMSAxLTEtMS0xIDEtMS0xLTEgMUg2LjY2M2EzLjUgMy41IDAgMCAxLTMuMTYzIDJ6TTIuNSA5YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsS2V5Ym9hcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY2em0xMyAuMjV2LjVjMCAuMTM4LjExMi4yNS4yNS4yNWguNWEuMjUuMjUgMCAwIDAgLjI1LS4yNXYtLjVhLjI1LjI1IDAgMCAwLS4yNS0uMjVoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTIuMjUgOGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDMgOC43NXYtLjVBLjI1LjI1IDAgMCAwIDIuNzUgOGgtLjV6TTQgOC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA1IDguNzV2LS41QS4yNS4yNSAwIDAgMCA0Ljc1IDhoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTYuMjUgOGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDcgOC43NXYtLjVBLjI1LjI1IDAgMCAwIDYuNzUgOGgtLjV6TTggOC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA5IDguNzV2LS41QS4yNS4yNSAwIDAgMCA4Ljc1IDhoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTEzLjI1IDhhLjI1LjI1IDAgMCAwLS4yNS4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjV6bTAgMmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41YS4yNS4yNSAwIDAgMC0uMjUtLjI1aC0uNXptLTMtMmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoMS41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMS41em0uNzUgMi4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjVhLjI1LjI1IDAgMCAwLS4yNS4yNXpNMTEuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41YS4yNS4yNSAwIDAgMC0uMjUtLjI1aC0uNXpNOSA2LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41QS4yNS4yNSAwIDAgMCA5Ljc1IDZoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTcuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDggNi43NXYtLjVBLjI1LjI1IDAgMCAwIDcuNzUgNmgtLjV6TTUgNi4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA2IDYuNzV2LS41QS4yNS4yNSAwIDAgMCA1Ljc1IDZoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTIuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoMS41QS4yNS4yNSAwIDAgMCA0IDYuNzV2LS41QS4yNS4yNSAwIDAgMCAzLjc1IDZoLTEuNXpNMiAxMC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjVhLjI1LjI1IDAgMCAwLS4yNS4yNXpNNC4yNSAxMGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoNS41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxMYW1wRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDNhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjRhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWM3ptNS41LTIgLjI3Ni0uNTUzYS4yNS4yNSAwIDAgMSAuNDQ4IDBMOC41IDFoLTF6bS0uNjE1IDhoMi4yM0M5Ljk2OCAxMC41OTUgMTEgMTIuNjkgMTEgMTMuNWMwIDEuMzgtMS4zNDMgMi41LTMgMi41cy0zLTEuMTItMy0yLjVjMC0uODEgMS4wMzItMi45MDUgMS44ODUtNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxMYXB0b3BGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAyQTEuNSAxLjUgMCAwIDAgMSAzLjVWMTJoMTRWMy41QTEuNSAxLjUgMCAwIDAgMTMuNSAyaC0xMXpNMCAxMi41aDE2YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTNBMS41IDEuNSAwIDAgMSAwIDEyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbExheWVyc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NjUgMS41NTlhLjUuNSAwIDAgMSAuNDcgMGw3LjUgNGEuNS41IDAgMCAxIDAgLjg4MmwtNy41IDRhLjUuNSAwIDAgMS0uNDcgMGwtNy41LTRhLjUuNSAwIDAgMSAwLS44ODJsNy41LTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi4xMjUgOC41NjctMS44Ni45OTJhLjUuNSAwIDAgMCAwIC44ODJsNy41IDRhLjUuNSAwIDAgMCAuNDcgMGw3LjUtNGEuNS41IDAgMCAwIDAtLjg4MmwtMS44Ni0uOTkyLTUuMTcgMi43NTZhMS41IDEuNSAwIDAgMS0xLjQxIDBsLTUuMTctMi43NTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbExpZ2h0YnVsYkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YTYgNiAwIDEgMSAxMC4xNzQgNC4zMWMtLjIwMy4xOTYtLjM1OS40LS40NTMuNjE5bC0uNzYyIDEuNzY5QS41LjUgMCAwIDEgMTAuNSAxM2gtNWEuNS41IDAgMCAxLS40Ni0uMzAybC0uNzYxLTEuNzdhMS45NjQgMS45NjQgMCAwIDAtLjQ1My0uNjE4QTUuOTg0IDUuOTg0IDAgMCAxIDIgNnptMyA4LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxbC0uMjI0LjQ0N2ExIDEgMCAwIDEtLjg5NC41NTNINi42MThhMSAxIDAgMCAxLS44OTQtLjU1M0w1LjUgMTVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTGlnaHRidWxiT2ZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZjMC0uNTcyLjA4LTEuMTI1LjIzLTEuNjVsOC41NTggOC41NTlBLjUuNSAwIDAgMSAxMC41IDEzaC01YS41LjUgMCAwIDEtLjQ2LS4zMDJsLS43NjEtMS43N2ExLjk2NCAxLjk2NCAwIDAgMC0uNDUzLS42MThBNS45ODQgNS45ODQgMCAwIDEgMiA2em0xMC4zMDMgNC4xODFMMy44MTggMS42OTdhNiA2IDAgMCAxIDguNDg0IDguNDg0ek01IDE0LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxbC0uMjI0LjQ0N2ExIDEgMCAwIDEtLjg5NC41NTNINi42MThhMSAxIDAgMCAxLS44OTQtLjU1M0w1LjUgMTVhLjUuNSAwIDAgMS0uNS0uNXpNMi4zNTQgMS42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwxMiAxMmEuNS41IDAgMCAwIC43MDgtLjcwOGwtMTItMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbExpZ2h0bmluZ0NoYXJnZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUxLjA2OGEuNS41IDAgMCAxIC4yMjcuNThMOS42NzcgNi41SDEzYS41LjUgMCAwIDEgLjM2NC44NDNsLTggOC41YS41LjUgMCAwIDEtLjg0Mi0uNDlMNi4zMjMgOS41SDNhLjUuNSAwIDAgMS0uMzY0LS44NDNsOC04LjVhLjUuNSAwIDAgMSAuNjE1LS4wOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTGlnaHRuaW5nRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyLjM1OUEuNS41IDAgMCAxIDYgMGg0YS41LjUgMCAwIDEgLjQ3NC42NThMOC42OTQgNkgxMi41YS41LjUgMCAwIDEgLjM5NS44MDdsLTcgOWEuNS41IDAgMCAxLS44NzMtLjQ1NEw2LjgyMyA5LjVIMy41YS41LjUgMCAwIDEtLjQ4LS42NDFsMi41LTguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIgMiAwIDAgMSAyIDJ2NEg2VjNhMiAyIDAgMCAxIDItMnptMyA2VjNhMyAzIDAgMCAwLTYgMHY0YTIgMiAwIDAgMC0yIDJ2NWEyIDIgMCAwIDAgMiAyaDZhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbE1hcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2IC41YS41LjUgMCAwIDAtLjU5OC0uNDlMMTAuNS45OSA1LjU5OC4wMWEuNS41IDAgMCAwLS4xOTYgMGwtNSAxQS41LjUgMCAwIDAgMCAxLjV2MTRhLjUuNSAwIDAgMCAuNTk4LjQ5bDQuOTAyLS45OCA0LjkwMi45OGEuNTAyLjUwMiAwIDAgMCAuMTk2IDBsNS0xQS41LjUgMCAwIDAgMTYgMTQuNVYuNXpNNSAxNC4wOVYxLjExbC41LS4xLjUuMXYxMi45OGwtLjQwMi0uMDhhLjQ5OC40OTggMCAwIDAtLjE5NiAwTDUgMTQuMDl6bTUgLjhWMS45MWwuNDAyLjA4YS41LjUgMCAwIDAgLjE5NiAwTDExIDEuOTF2MTIuOThsLS41LjEtLjUtLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbE1hcmtkb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTEuNSAxYS41LjUgMCAwIDAtLjUuNXYzLjc5M0w5Ljg1NCA4LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDIgMmEuNS41IDAgMCAwIC43MDggMGwyLTJhLjUuNSAwIDAgMC0uNzA4LS43MDhMMTIgOS4yOTNWNS41YS41LjUgMCAwIDAtLjUtLjV6TTMuNTYgNy4wMWguMDU2bDEuNDI4IDMuMjM5aC43NzRsMS40Mi0zLjI0aC4wNTZWMTFoMS4wNzNWNS4wMDFoLTEuMmwtMS43MSAzLjg5NGgtLjAzOWwtMS43MS0zLjg5NEgyLjVWMTFoMS4wNlY3LjAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxNZWdhcGhvbmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDIuNWExLjUgMS41IDAgMCAxIDMgMHYxMWExLjUgMS41IDAgMCAxLTMgMHYtMTF6bS0xIC43MjRjLTIuMDY3Ljk1LTQuNTM5IDEuNDgxLTcgMS42NTZ2Ni4yMzdhMjUuMjIyIDI1LjIyMiAwIDAgMSAxLjA4OC4wODVjMi4wNTMuMjA0IDQuMDM4LjY2OCA1LjkxMiAxLjU2VjMuMjI0em0tOCA3Ljg0MVY0LjkzNGMtLjY4LjAyNy0xLjM5OS4wNDMtMi4wMDguMDUzQTIuMDIgMi4wMiAwIDAgMCAwIDd2MmMwIDEuMTA2Ljg5NiAxLjk5NiAxLjk5NCAyLjAwOWE2OC4xNCA2OC4xNCAwIDAgMSAuNDk2LjAwOCA2NCA2NCAwIDAgMSAxLjUxLjA0OHptMS4zOSAxLjA4MWMuMjg1LjAyMS41NjkuMDQ3Ljg1LjA3OGwuMjUzIDEuNjlhMSAxIDAgMCAxLS45ODMgMS4xODdoLS41NDhhMSAxIDAgMCAxLS45MTYtLjU5OWwtMS4zMTQtMi40OGE2NS44MSA2NS44MSAwIDAgMSAxLjY5Mi4wNjRjLjMyNy4wMTcuNjUuMDM3Ljk2Ni4wNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTWVudUFwcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxLjVBMS41IDEuNSAwIDAgMSAxLjUgMGgyQTEuNSAxLjUgMCAwIDEgNSAxLjV2MkExLjUgMS41IDAgMCAxIDMuNSA1aC0yQTEuNSAxLjUgMCAwIDEgMCAzLjV2LTJ6TTAgOGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY4em0xIDN2MmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTJIMXptMTQtMVY4YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjJoMTR6TTIgOC41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wIDRhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAwIDEgMCAxaC02YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbE1lbnVCdXR0b25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAwQTEuNSAxLjUgMCAwIDAgMCAxLjV2MkExLjUgMS41IDAgMCAwIDEuNSA1aDhBMS41IDEuNSAwIDAgMCAxMSAzLjV2LTJBMS41IDEuNSAwIDAgMCA5LjUgMGgtOHptNS45MjcgMi40MjdBLjI1LjI1IDAgMCAxIDcuNjA0IDJoLjc5MmEuMjUuMjUgMCAwIDEgLjE3Ny40MjdsLS4zOTYuMzk2YS4yNS4yNSAwIDAgMS0uMzU0IDBsLS4zOTYtLjM5NnpNMCA4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjh6bTEgM3YyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMkgxem0xNC0xVjhhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmgxNHpNMiA4LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTWVudUJ1dHRvbldpZGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAwQTEuNSAxLjUgMCAwIDAgMCAxLjV2MkExLjUgMS41IDAgMCAwIDEuNSA1aDEzQTEuNSAxLjUgMCAwIDAgMTYgMy41di0yQTEuNSAxLjUgMCAwIDAgMTQuNSAwaC0xM3ptMSAyaDNhLjUuNSAwIDAgMSAwIDFoLTNhLjUuNSAwIDAgMSAwLTF6bTkuOTI3LjQyN0EuMjUuMjUgMCAwIDEgMTIuNjA0IDJoLjc5MmEuMjUuMjUgMCAwIDEgLjE3Ny40MjdsLS4zOTYuMzk2YS4yNS4yNSAwIDAgMS0uMzU0IDBsLS4zOTYtLjM5NnpNMCA4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjh6bTEgM3YyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMkgxem0xNC0xVjhhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmgxNHpNMiA4LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTWljRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDNhMyAzIDAgMCAxIDYgMHY1YTMgMyAwIDAgMS02IDBWM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgNi41QS41LjUgMCAwIDEgNCA3djFhNCA0IDAgMCAwIDggMFY3YS41LjUgMCAwIDEgMSAwdjFhNSA1IDAgMCAxLTQuNSA0Ljk3NVYxNWgzYS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xaDN2LTIuMDI1QTUgNSAwIDAgMSAzIDhWN2EuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxNaWNNdXRlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA4YzAgLjU2NC0uMDk0IDEuMTA3LS4yNjYgMS42MTNsLS44MTQtLjgxNEE0LjAyIDQuMDIgMCAwIDAgMTIgOFY3YS41LjUgMCAwIDEgMSAwdjF6bS01IDRjLjgxOCAwIDEuNTc4LS4yNDUgMi4yMTItLjY2N2wuNzE4LjcxOWE0Ljk3MyA0Ljk3MyAwIDAgMS0yLjQzLjkyM1YxNWgzYS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xaDN2LTIuMDI1QTUgNSAwIDAgMSAzIDhWN2EuNS41IDAgMCAxIDEgMHYxYTQgNCAwIDAgMCA0IDR6bTMtOXY0Ljg3OUw1LjE1OCAyLjAzN0EzLjAwMSAzLjAwMSAwIDAgMSAxMSAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDg2IDEwLjYwNyA1IDYuMTJWOGEzIDMgMCAwIDAgNC40ODYgMi42MDd6bS03Ljg0LTkuMjUzIDEyIDEyIC43MDgtLjcwOC0xMi0xMi0uNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTW9vbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAuMjc4YS43NjguNzY4IDAgMCAxIC4wOC44NTggNy4yMDggNy4yMDggMCAwIDAtLjg3OCAzLjQ2YzAgNC4wMjEgMy4yNzggNy4yNzcgNy4zMTggNy4yNzcuNTI3IDAgMS4wNC0uMDU1IDEuNTMzLS4xNmEuNzg3Ljc4NyAwIDAgMSAuODEuMzE2LjczMy43MzMgMCAwIDEtLjAzMS44OTNBOC4zNDkgOC4zNDkgMCAwIDEgOC4zNDQgMTZDMy43MzQgMTYgMCAxMi4yODYgMCA3LjcxIDAgNC4yNjYgMi4xMTQgMS4zMTIgNS4xMjQuMDZBLjc1Mi43NTIgMCAwIDEgNiAuMjc4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxNb29uU3RhcnNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgLjI3OGEuNzY4Ljc2OCAwIDAgMSAuMDguODU4IDcuMjA4IDcuMjA4IDAgMCAwLS44NzggMy40NmMwIDQuMDIxIDMuMjc4IDcuMjc3IDcuMzE4IDcuMjc3LjUyNyAwIDEuMDQtLjA1NSAxLjUzMy0uMTZhLjc4Ny43ODcgMCAwIDEgLjgxLjMxNi43MzMuNzMzIDAgMCAxLS4wMzEuODkzQTguMzQ5IDguMzQ5IDAgMCAxIDguMzQ0IDE2QzMuNzM0IDE2IDAgMTIuMjg2IDAgNy43MSAwIDQuMjY2IDIuMTE0IDEuMzEyIDUuMTI0LjA2QS43NTIuNzUyIDAgMCAxIDYgLjI3OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC43OTQgMy4xNDhhLjIxNy4yMTcgMCAwIDEgLjQxMiAwbC4zODcgMS4xNjJjLjE3My41MTguNTc5LjkyNCAxLjA5NyAxLjA5N2wxLjE2Mi4zODdhLjIxNy4yMTcgMCAwIDEgMCAuNDEybC0xLjE2Mi4zODdhMS43MzQgMS43MzQgMCAwIDAtMS4wOTcgMS4wOTdsLS4zODcgMS4xNjJhLjIxNy4yMTcgMCAwIDEtLjQxMiAwbC0uMzg3LTEuMTYyQTEuNzM0IDEuNzM0IDAgMCAwIDkuMzEgNi41OTNsLTEuMTYyLS4zODdhLjIxNy4yMTcgMCAwIDEgMC0uNDEybDEuMTYyLS4zODdhMS43MzQgMS43MzQgMCAwIDAgMS4wOTctMS4wOTdsLjM4Ny0xLjE2MnpNMTMuODYzLjA5OWEuMTQ1LjE0NSAwIDAgMSAuMjc0IDBsLjI1OC43NzRjLjExNS4zNDYuMzg2LjYxNy43MzIuNzMybC43NzQuMjU4YS4xNDUuMTQ1IDAgMCAxIDAgLjI3NGwtLjc3NC4yNThhMS4xNTYgMS4xNTYgMCAwIDAtLjczMi43MzJsLS4yNTguNzc0YS4xNDUuMTQ1IDAgMCAxLS4yNzQgMGwtLjI1OC0uNzc0YTEuMTU2IDEuMTU2IDAgMCAwLS43MzItLjczMmwtLjc3NC0uMjU4YS4xNDUuMTQ1IDAgMCAxIDAtLjI3NGwuNzc0LS4yNThjLjM0Ni0uMTE1LjYxNy0uMzg2LjczMi0uNzMyTDEzLjg2My4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxNb3VzZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1YTUgNSAwIDAgMSAxMCAwdjZhNSA1IDAgMCAxLTEwIDBWNXptNS41LTEuNWEuNS41IDAgMCAwLTEgMHYyYS41LjUgMCAwIDAgMSAwdi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxNb3VzZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNS4wMjZDNC45NTguMjg2IDMgMi41MTUgMyA1LjE4OFY1LjVoNC41Vi4wMjZ6bTEgMFY1LjVIMTN2LS4zMTJDMTMgMi41MTUgMTEuMDQyLjI4NiA4LjUuMDI2ek0xMyA2LjVIM3Y0LjMxM0MzIDEzLjY1OCA1LjIyIDE2IDggMTZzNS0yLjM0MiA1LTUuMTg4VjYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTW91c2UzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUuMDY5QTE1LjMyOCAxNS4zMjggMCAwIDAgNyAwYy0uNTkzIDAtMS4xMDQuMTU3LTEuNTI3LjQ2My0uNDE4LjMwMi0uNzE3LjcyNi0uOTMgMS4yMDgtLjM4Ni44NzMtLjUyMiAyLjAxLS41NCAzLjIwNmw0LjQ5NyAxVi4wNjl6TTMuNzEgNS44MzYgMy4zODEgNkEyLjUgMi41IDAgMCAwIDIgOC4yMzZ2Mi41NzZDMiAxMy42NTkgNC4yMiAxNiA3IDE2aDJjMi43OCAwIDUtMi4zNDIgNS01LjE4OFY4LjEyM2wtOS0ydi4wMDNsLjAwOC4zNTNjLjAwNy4zLjAyMy43MTUuMDUzIDEuMTc1LjA2My45MzcuMTg2IDIuMDA1LjQxMyAyLjY4OGEuNS41IDAgMSAxLS45NDguMzE2Yy0uMjczLS44MTctLjQtMi0uNDYyLTIuOTM3QTMwLjE2IDMwLjE2IDAgMCAxIDQgNi4wMDNjMC0uMDM0LjAwMy0uMDY3LjAxLS4xbC0uMy0uMDY3ek0xNCA3LjFWNS4xODdjMC0xLjEzLS4yNzItMi4wNDQtLjc0OC0yLjc3Mi0uNDc0LS43MjYtMS4xMy0xLjIzNS0xLjg0OS0xLjU5QTcuNDk1IDcuNDk1IDAgMCAwIDkuNS4yMTJ2NS44ODdsNC41IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbE11c2ljUGxheWVyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMSAyaDZhMSAxIDAgMCAxIDEgMXYyLjVhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMS0xLTFWM2ExIDEgMCAwIDEgMS0xem0zIDEyYTMgMyAwIDEgMSAwLTYgMyAzIDAgMCAxIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTm9kZU1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTYgOGE1IDUgMCAwIDEtOS45NzUuNUg0QTEuNSAxLjUgMCAwIDEgMi41IDEwaC0xQTEuNSAxLjUgMCAwIDEgMCA4LjV2LTFBMS41IDEuNSAwIDAgMSAxLjUgNmgxQTEuNSAxLjUgMCAwIDEgNCA3LjVoMi4wMjVBNSA1IDAgMCAxIDE2IDh6bS0yIDBhLjUuNSAwIDAgMC0uNS0uNWgtNWEuNS41IDAgMCAwIDAgMWg1QS41LjUgMCAwIDAgMTQgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTm9kZVBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEzYTUgNSAwIDEgMC00Ljk3NS01LjVINEExLjUgMS41IDAgMCAwIDIuNSA2aC0xQTEuNSAxLjUgMCAwIDAgMCA3LjV2MUExLjUgMS41IDAgMCAwIDEuNSAxMGgxQTEuNSAxLjUgMCAwIDAgNCA4LjVoMi4wMjVBNSA1IDAgMCAwIDExIDEzem0uNS03LjV2MmgyYS41LjUgMCAwIDEgMCAxaC0ydjJhLjUuNSAwIDAgMS0xIDB2LTJoLTJhLjUuNSAwIDAgMSAwLTFoMnYtMmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsTnV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjU4IDFhMSAxIDAgMCAwLS44NjguNTA0bC0zLjQyOCA2YTEgMSAwIDAgMCAwIC45OTJsMy40MjggNkExIDEgMCAwIDAgNC41OCAxNWg2Ljg0YTEgMSAwIDAgMCAuODY4LS41MDRsMy40MjktNmExIDEgMCAwIDAgMC0uOTkybC0zLjQyOS02QTEgMSAwIDAgMCAxMS40MiAxSDQuNTh6bTUuMDE4IDkuNjk2YTMgMyAwIDEgMS0zLTUuMTk2IDMgMyAwIDAgMSAzIDUuMTk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxPY3RhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4xMDcgMGEuNS41IDAgMCAxIC4zNTMuMTQ2bDQuMzk0IDQuMzk0YS41LjUgMCAwIDEgLjE0Ni4zNTN2Ni4yMTRhLjUuNSAwIDAgMS0uMTQ2LjM1M2wtNC4zOTQgNC4zOTRhLjUuNSAwIDAgMS0uMzUzLjE0Nkg0Ljg5M2EuNS41IDAgMCAxLS4zNTMtLjE0NkwuMTQ2IDExLjQ2QS41LjUgMCAwIDEgMCAxMS4xMDdWNC44OTNhLjUuNSAwIDAgMSAuMTQ2LS4zNTNMNC41NC4xNDZBLjUuNSAwIDAgMSA0Ljg5MyAwaDYuMjE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQYWxldHRlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40MzMgMTAuMDdDMTQuMTMzIDEwLjU4NSAxNiAxMS4xNSAxNiA4YTggOCAwIDEgMC04IDhjMS45OTYgMCAxLjgyNi0xLjUwNCAxLjY0OS0zLjA4LS4xMjQtMS4xMDEtLjI1Mi0yLjIzNy4zNTEtMi45Mi40NjUtLjUyNyAxLjQyLS4yMzcgMi40MzMuMDd6TTggNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptNC41IDNhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6TTUgNi41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0uNSA2LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBhdGNoQ2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA2Ny44N2EyLjg5IDIuODkgMCAwIDAtNC4xMzQgMGwtLjYyMi42MzgtLjg5LS4wMTFhMi44OSAyLjg5IDAgMCAwLTIuOTI0IDIuOTI0bC4wMS44OS0uNjM2LjYyMmEyLjg5IDIuODkgMCAwIDAgMCA0LjEzNGwuNjM3LjYyMi0uMDExLjg5YTIuODkgMi44OSAwIDAgMCAyLjkyNCAyLjkyNGwuODktLjAxLjYyMi42MzZhMi44OSAyLjg5IDAgMCAwIDQuMTM0IDBsLjYyMi0uNjM3Ljg5LjAxMWEyLjg5IDIuODkgMCAwIDAgMi45MjQtMi45MjRsLS4wMS0uODkuNjM2LS42MjJhMi44OSAyLjg5IDAgMCAwIDAtNC4xMzRsLS42MzctLjYyMi4wMTEtLjg5YTIuODkgMi44OSAwIDAgMC0yLjkyNC0yLjkyNGwtLjg5LjAxLS42MjItLjYzNnptLjI4NyA1Ljk4NC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTEuNS0xLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMNyA4Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQYXRjaEV4Y2xhbWF0aW9uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wNjcuODdhMi44OSAyLjg5IDAgMCAwLTQuMTM0IDBsLS42MjIuNjM4LS44OS0uMDExYTIuODkgMi44OSAwIDAgMC0yLjkyNCAyLjkyNGwuMDEuODktLjYzNi42MjJhMi44OSAyLjg5IDAgMCAwIDAgNC4xMzRsLjYzNy42MjItLjAxMS44OWEyLjg5IDIuODkgMCAwIDAgMi45MjQgMi45MjRsLjg5LS4wMS42MjIuNjM2YTIuODkgMi44OSAwIDAgMCA0LjEzNCAwbC42MjItLjYzNy44OS4wMTFhMi44OSAyLjg5IDAgMCAwIDIuOTI0LTIuOTI0bC0uMDEtLjg5LjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMCAwLTQuMTM0bC0uNjM3LS42MjIuMDExLS44OWEyLjg5IDIuODkgMCAwIDAtMi45MjQtMi45MjRsLS44OS4wMS0uNjIyLS42MzZ6TTggNGMuNTM1IDAgLjk1NC40NjIuOS45OTVsLS4zNSAzLjUwN2EuNTUyLjU1MiAwIDAgMS0xLjEgMEw3LjEgNC45OTVBLjkwNS45MDUgMCAwIDEgOCA0em0uMDAyIDZhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQYXRjaE1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wNjcuODdhMi44OSAyLjg5IDAgMCAwLTQuMTM0IDBsLS42MjIuNjM4LS44OS0uMDExYTIuODkgMi44OSAwIDAgMC0yLjkyNCAyLjkyNGwuMDEuODktLjYzNi42MjJhMi44OSAyLjg5IDAgMCAwIDAgNC4xMzRsLjYzNy42MjItLjAxMS44OWEyLjg5IDIuODkgMCAwIDAgMi45MjQgMi45MjRsLjg5LS4wMS42MjIuNjM2YTIuODkgMi44OSAwIDAgMCA0LjEzNCAwbC42MjItLjYzNy44OS4wMTFhMi44OSAyLjg5IDAgMCAwIDIuOTI0LTIuOTI0bC0uMDEtLjg5LjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMCAwLTQuMTM0bC0uNjM3LS42MjIuMDExLS44OWEyLjg5IDIuODkgMCAwIDAtMi45MjQtMi45MjRsLS44OS4wMS0uNjIyLS42MzZ6TTYgNy41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGF0Y2hQbHVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wNjcuODdhMi44OSAyLjg5IDAgMCAwLTQuMTM0IDBsLS42MjIuNjM4LS44OS0uMDExYTIuODkgMi44OSAwIDAgMC0yLjkyNCAyLjkyNGwuMDEuODktLjYzNi42MjJhMi44OSAyLjg5IDAgMCAwIDAgNC4xMzRsLjYzNy42MjItLjAxMS44OWEyLjg5IDIuODkgMCAwIDAgMi45MjQgMi45MjRsLjg5LS4wMS42MjIuNjM2YTIuODkgMi44OSAwIDAgMCA0LjEzNCAwbC42MjItLjYzNy44OS4wMTFhMi44OSAyLjg5IDAgMCAwIDIuOTI0LTIuOTI0bC0uMDEtLjg5LjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMCAwLTQuMTM0bC0uNjM3LS42MjIuMDExLS44OWEyLjg5IDIuODkgMCAwIDAtMi45MjQtMi45MjRsLS44OS4wMS0uNjIyLS42MzZ6TTguNSA2djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTBhLjUuNSAwIDAgMS0xIDBWOC41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjZhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBhdGNoUXVlc3Rpb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOTMzLjg3YTIuODkgMi44OSAwIDAgMSA0LjEzNCAwbC42MjIuNjM4Ljg5LS4wMTFhMi44OSAyLjg5IDAgMCAxIDIuOTI0IDIuOTI0bC0uMDEuODkuNjM2LjYyMmEyLjg5IDIuODkgMCAwIDEgMCA0LjEzNGwtLjYzNy42MjIuMDExLjg5YTIuODkgMi44OSAwIDAgMS0yLjkyNCAyLjkyNGwtLjg5LS4wMS0uNjIyLjYzNmEyLjg5IDIuODkgMCAwIDEtNC4xMzQgMGwtLjYyMi0uNjM3LS44OS4wMTFhMi44OSAyLjg5IDAgMCAxLTIuOTI0LTIuOTI0bC4wMS0uODktLjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMSAwLTQuMTM0bC42MzctLjYyMi0uMDExLS44OWEyLjg5IDIuODkgMCAwIDEgMi45MjQtMi45MjRsLjg5LjAxLjYyMi0uNjM2ek03LjAwMiAxMWExIDEgMCAxIDAgMiAwIDEgMSAwIDAgMC0yIDB6bTEuNjAyLTIuMDI3Yy4wNC0uNTM0LjE5OC0uODE1Ljg0Ni0xLjI2LjY3NC0uNDc1IDEuMDUtMS4wOSAxLjA1LTEuOTg2IDAtMS4zMjUtLjkyLTIuMjI3LTIuMjYyLTIuMjI3LTEuMDIgMC0xLjc5Mi40OTItMi4xIDEuMjlBMS43MSAxLjcxIDAgMCAwIDYgNS40OGMwIC4zOTMuMjAzLjY0LjU0NS42NC4yNzIgMCAuNDU1LS4xNDcuNTY0LS41MS4xNTgtLjU5Mi41MjUtLjkxNSAxLjA3NC0uOTE1LjYxIDAgMS4wMy40NDYgMS4wMyAxLjA4NCAwIC41NjMtLjIwOC44ODUtLjgyMiAxLjMyNS0uNjE5LjQzMy0uOTI2LjkxNC0uOTI2IDEuNjR2LjExMWMwIC40MjguMjA4Ljc0NS41ODUuNzQ1LjMzNiAwIC41MDQtLjI0LjU1NC0uNjI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQYXVzZUJ0bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMlY0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yem02LjI1LTdDNS41NiA1IDUgNS41NiA1IDYuMjV2My41YTEuMjUgMS4yNSAwIDEgMCAyLjUgMHYtMy41QzcuNSA1LjU2IDYuOTQgNSA2LjI1IDV6bTMuNSAwYy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXYzLjVhMS4yNSAxLjI1IDAgMSAwIDIuNSAwdi0zLjVDMTEgNS41NiAxMC40NCA1IDkuNzUgNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGF1c2VDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi4yNSA1QzUuNTYgNSA1IDUuNTYgNSA2LjI1djMuNWExLjI1IDEuMjUgMCAxIDAgMi41IDB2LTMuNUM3LjUgNS41NiA2Ljk0IDUgNi4yNSA1em0zLjUgMGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjV2My41YTEuMjUgMS4yNSAwIDEgMCAyLjUgMHYtMy41QzExIDUuNTYgMTAuNDQgNSA5Ljc1IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBhdXNlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMy41QTEuNSAxLjUgMCAwIDEgNyA1djZhMS41IDEuNSAwIDAgMS0zIDBWNWExLjUgMS41IDAgMCAxIDEuNS0xLjV6bTUgMEExLjUgMS41IDAgMCAxIDEyIDV2NmExLjUgMS41IDAgMCAxLTMgMFY1YTEuNSAxLjUgMCAwIDEgMS41LTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGVhY2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDEzLjI5MkE4IDggMCAwIDAgOC41LjAxNXY3Ljc3OGw1LjUgNS41em0tLjcwOC43MDhMOC41IDkuMjA2djYuNzc4YTcuOTY3IDcuOTY3IDAgMCAwIDQuNzkyLTEuOTg2ek03LjUgMTUuOTg1VjkuMjA3TDIuNzA4IDE0QTcuOTY3IDcuOTY3IDAgMCAwIDcuNSAxNS45ODV6TTIgMTMuMjkyQTggOCAwIDAgMSA3LjUuMDE1djcuNzc4bC01LjUgNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQZW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjQ5OC43OTUuMTQ5LS4xNDlhMS4yMDcgMS4yMDcgMCAxIDEgMS43MDcgMS43MDhsLS4xNDkuMTQ4YTEuNSAxLjUgMCAwIDEtLjA1OSAyLjA1OUw0Ljg1NCAxNC44NTRhLjUuNSAwIDAgMS0uMjMzLjEzMWwtNCAxYS41LjUgMCAwIDEtLjYwNi0uNjA2bDEtNGEuNS41IDAgMCAxIC4xMzEtLjIzMmw5LjY0Mi05LjY0MmEuNS41IDAgMCAwLS42NDIuMDU2TDYuODU0IDQuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4TDkuNDQuODU0QTEuNSAxLjUgMCAwIDEgMTEuNS43OTZhMS41IDEuNSAwIDAgMSAxLjk5OC0uMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQZW5jaWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjg1NC4xNDZhLjUuNSAwIDAgMC0uNzA3IDBMMTAuNSAxLjc5MyAxNC4yMDcgNS41bDEuNjQ3LTEuNjQ2YS41LjUgMCAwIDAgMC0uNzA4bC0zLTN6bS42NDYgNi4wNjFMOS43OTMgMi41IDMuMjkzIDlIMy41YS41LjUgMCAwIDEgLjUuNXYuNWguNWEuNS41IDAgMCAxIC41LjV2LjVoLjVhLjUuNSAwIDAgMSAuNS41di41aC41YS41LjUgMCAwIDEgLjUuNXYuMjA3bDYuNS02LjV6bS03LjQ2OCA3LjQ2OEEuNS41IDAgMCAxIDYgMTMuNVYxM2gtLjVhLjUuNSAwIDAgMS0uNS0uNVYxMmgtLjVhLjUuNSAwIDAgMS0uNS0uNVYxMWgtLjVhLjUuNSAwIDAgMS0uNS0uNVYxMGgtLjVhLjQ5OS40OTkgMCAwIDEtLjE3NS0uMDMybC0uMTc5LjE3OGEuNS41IDAgMCAwLS4xMS4xNjhsLTIgNWEuNS41IDAgMCAwIC42NS42NWw1LTJhLjUuNSAwIDAgMCAuMTY4LS4xMWwuMTc4LS4xNzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBlbnRhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDAgOCA2LjUtMyA5LjVIM0wwIDYuNSA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBlb3BsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxNHMtMSAwLTEtMSAxLTQgNS00IDUgMyA1IDQtMSAxLTEgMUg3em00LTZhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjIxNiAxNEEyLjIzOCAyLjIzOCAwIDAgMSA1IDEzYzAtMS4zNTUuNjgtMi43NSAxLjkzNi0zLjcyQTYuMzI1IDYuMzI1IDAgMCAwIDUgOWMtNCAwLTUgMy01IDRzMSAxIDEgMWg0LjIxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgOGEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGVyc29uQmFkZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem00LjUgMGEuNS41IDAgMCAwIDAgMWgzYS41LjUgMCAwIDAgMC0xaC0zek04IDExYTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptNSAyLjc1NUMxMi4xNDYgMTIuODI1IDEwLjYyMyAxMiA4IDEycy00LjE0Ni44MjYtNSAxLjc1NVYxNGExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMXYtLjI0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGVyc29uQ2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS44NTQgNS4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMCAxIC43MDgtLjcwOEwxMi41IDcuNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTRzLTEgMC0xLTEgMS00IDYtNCA2IDMgNiA0LTEgMS0xIDFIMXptNS02YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGVyc29uRGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExIDcuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDF6bTUtNmEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBlcnNvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxNHMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDQtMSAxLTEgMUgzem01LTZhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQZXJzb25MaW5lc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptLTUgNnMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDQtMSAxLTEgMUgxek0xMSAzLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV6bS41IDIuNWEuNS41IDAgMCAwIDAgMWg0YS41LjUgMCAwIDAgMC0xaC00em0yIDNhLjUuNSAwIDAgMCAwIDFoMmEuNS41IDAgMCAwIDAtMWgtMnptMCAzYS41LjUgMCAwIDAgMCAxaDJhLjUuNSAwIDAgMCAwLTFoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBlcnNvblBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTRzLTEgMC0xLTEgMS00IDYtNCA2IDMgNiA0LTEgMS0xIDFIMXptNS02YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTMuNSA1YS41LjUgMCAwIDEgLjUuNVY3aDEuNWEuNS41IDAgMCAxIDAgMUgxNHYxLjVhLjUuNSAwIDAgMS0xIDBWOGgtMS41YS41LjUgMCAwIDEgMC0xSDEzVjUuNWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQZXJzb25YRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMSAxNHMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDQtMSAxLTEgMUgxem01LTZhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2em02LjE0Ni0yLjg1NGEuNS41IDAgMCAxIC43MDggMEwxNCA2LjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4TDE0LjcwNyA3bDEuMTQ3IDEuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhMMTQgNy43MDdsLTEuMTQ2IDEuMTQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEzLjI5MyA3bC0xLjE0Ny0xLjE0NmEuNS41IDAgMCAxIDAtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGhvbmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMmEyIDIgMCAwIDEgMi0yaDZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlYyem02IDExYTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGhvbmVMYW5kc2NhcGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTIuNWEyIDIgMCAwIDEtMi0ydi02YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY2YTIgMiAwIDAgMS0yIDJIMnptMTEtNmExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBob25lVmlicmF0ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkg2YTIgMiAwIDAgMS0yLTJWNHptNSA3YTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHpNMS44MDcgNC43MzRhLjUuNSAwIDEgMC0uODg0LS40NjhBNy45NjcgNy45NjcgMCAwIDAgMCA4YzAgMS4zNDcuMzM0IDIuNjE4LjkyMyAzLjczNGEuNS41IDAgMSAwIC44ODQtLjQ2OEE2Ljk2NyA2Ljk2NyAwIDAgMSAxIDhjMC0xLjE4LjI5Mi0yLjI5Mi44MDctMy4yNjZ6bTEzLjI3LS40NjhhLjUuNSAwIDAgMC0uODg0LjQ2OEMxNC43MDggNS43MDggMTUgNi44MTkgMTUgOGMwIDEuMTgtLjI5MiAyLjI5Mi0uODA3IDMuMjY2YS41LjUgMCAwIDAgLjg4NC40NjhBNy45NjcgNy45NjcgMCAwIDAgMTYgOGE3Ljk2NyA3Ljk2NyAwIDAgMC0uOTIzLTMuNzM0ek0zLjM0IDYuMTgyYS41LjUgMCAxIDAtLjkzLS4zNjRBNS45ODYgNS45ODYgMCAwIDAgMiA4YzAgLjc2OS4xNDUgMS41MDUuNDEgMi4xODJhLjUuNSAwIDEgMCAuOTMtLjM2NEE0Ljk4NiA0Ljk4NiAwIDAgMSAzIDhjMC0uNjQyLjEyLTEuMjU1LjM0LTEuODE4em0xMC4yNS0uMzY0YS41LjUgMCAwIDAtLjkzLjM2NGMuMjIuNTYzLjM0IDEuMTc2LjM0IDEuODE4IDAgLjY0Mi0uMTIgMS4yNTUtLjM0IDEuODE4YS41LjUgMCAwIDAgLjkzLjM2NEMxMy44NTYgOS41MDUgMTQgOC43NjkgMTQgOGMwLS43NjktLjE0NS0xLjUwNS0uNDEtMi4xODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBpZUNoYXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS45ODUgOC41SDguMjA3bC01LjUgNS41YTggOCAwIDAgMCAxMy4yNzctNS41ek0yIDEzLjI5MkE4IDggMCAwIDEgNy41LjAxNXY3Ljc3OGwtNS41IDUuNXpNOC41LjAxNVY3LjVoNy40ODVBOC4wMDEgOC4wMDEgMCAwIDAgOC41LjAxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGlnZ3lCYW5rRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy45NjQgMS41MjdjLTIuOTc3IDAtNS41NzEgMS43MDQtNi4zMiA0LjEyNWgtLjU1QTEgMSAwIDAgMCAuMTEgNi44MjRsLjI1NCAxLjQ2YTEuNSAxLjUgMCAwIDAgMS40NzggMS4yNDNoLjI2M2MuMy41MTMuNjg4Ljk3OCAxLjE0NSAxLjM4MmwtLjcyOSAyLjQ3N2EuNS41IDAgMCAwIC40OC42NDFoMmEuNS41IDAgMCAwIC40NzEtLjMzMmwuNDgyLTEuMzUxYy42MzUuMTczIDEuMzEuMjY3IDIuMDExLjI2Ny43MDcgMCAxLjM4OC0uMDk1IDIuMDI4LS4yNzJsLjU0MyAxLjM3MmEuNS41IDAgMCAwIC40NjUuMzE2aDJhLjUuNSAwIDAgMCAuNDc4LS42NDVsLS43NjEtMi41MDZDMTMuODEgOS44OTUgMTQuNSA4LjU1OSAxNC41IDcuMDY5YzAtLjE0NS0uMDA3LS4yOS0uMDItLjQzMS4yNjEtLjExLjUwOC0uMjY2LjcwNS0uNDQ0LjMxNS4zMDYuODE1LjMwNi44MTUtLjQxNyAwIC4yMjMtLjUuMjIzLS40NjEtLjAyNmEuOTUuOTUgMCAwIDAgLjA5LS4yNTUuNy43IDAgMCAwLS4yMDItLjY0NS41OC41OCAwIDAgMC0uNzA3LS4wOTguNzM1LjczNSAwIDAgMC0uMzc1LjU2MmMtLjAyNC4yNDMuMDgyLjQ4LjMyLjY1NGEyLjExMiAyLjExMiAwIDAgMS0uMjU5LjE1M2MtLjUzNC0yLjY2NC0zLjI4NC00LjU5NS02LjQ0Mi00LjU5NXptNy4xNzMgMy44NzZhLjU2NS41NjUgMCAwIDEtLjA5OC4yMS43MDQuNzA0IDAgMCAxLS4wNDQtLjAyNWMtLjE0Ni0uMDktLjE1Ny0uMTc1LS4xNTItLjIyM2EuMjM2LjIzNiAwIDAgMSAuMTE3LS4xNzNjLjA0OS0uMDI3LjA4LS4wMjEuMTEzLjAxMmEuMjAyLjIwMiAwIDAgMSAuMDY0LjE5OXptLTguOTk5LS42NUE2LjYxMyA2LjYxMyAwIDAgMSA3Ljk2NCA0LjVjLjY2NiAwIDEuMzAzLjA5NyAxLjg5My4yNzNhLjUuNSAwIDEgMCAuMjg2LS45NThBNy42MDEgNy42MDEgMCAwIDAgNy45NjQgMy41Yy0uNzM0IDAtMS40NDEuMTAzLTIuMTAyLjI5MmEuNS41IDAgMSAwIC4yNzYuOTYyek01IDYuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGluQW5nbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODI4LjcyMmEuNS41IDAgMCAxIC4zNTQuMTQ2bDQuOTUgNC45NWEuNS41IDAgMCAxIDAgLjcwN2MtLjQ4LjQ4LTEuMDcyLjU4OC0xLjUwMy41ODgtLjE3NyAwLS4zMzUtLjAxOC0uNDYtLjAzOWwtMy4xMzQgMy4xMzRhNS45MjcgNS45MjcgMCAwIDEgLjE2IDEuMDEzYy4wNDYuNzAyLS4wMzIgMS42ODctLjcyIDIuMzc1YS41LjUgMCAwIDEtLjcwNyAwbC0yLjgyOS0yLjgyOC0zLjE4MiAzLjE4MmMtLjE5NS4xOTUtMS4yMTkuOTAyLTEuNDE0LjcwNy0uMTk1LS4xOTUuNTEyLTEuMjIuNzA3LTEuNDE0bDMuMTgyLTMuMTgyLTIuODI4LTIuODI5YS41LjUgMCAwIDEgMC0uNzA3Yy42ODgtLjY4OCAxLjY3My0uNzY3IDIuMzc1LS43MmE1LjkyMiA1LjkyMiAwIDAgMSAxLjAxMy4xNmwzLjEzNC0zLjEzM2EyLjc3MiAyLjc3MiAwIDAgMS0uMDQtLjQ2MWMwLS40My4xMDgtMS4wMjIuNTg5LTEuNTAzYS41LjUgMCAwIDEgLjM1My0uMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQaW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTQ2LjE0NkEuNS41IDAgMCAxIDQuNSAwaDdhLjUuNSAwIDAgMSAuNS41YzAgLjY4LS4zNDIgMS4xNzQtLjY0NiAxLjQ3OS0uMTI2LjEyNS0uMjUuMjI0LS4zNTQuMjk4djQuNDMxbC4wNzguMDQ4Yy4yMDMuMTI3LjQ3Ni4zMTQuNzUxLjU1NUMxMi4zNiA3Ljc3NSAxMyA4LjUyNyAxMyA5LjVhLjUuNSAwIDAgMS0uNS41aC00djQuNWMwIC4yNzYtLjIyNCAxLjUtLjUgMS41cy0uNS0xLjIyNC0uNS0xLjVWMTBoLTRhLjUuNSAwIDAgMS0uNS0uNWMwLS45NzMuNjQtMS43MjUgMS4xNy0yLjE4OUE1LjkyMSA1LjkyMSAwIDAgMSA1IDYuNzA4VjIuMjc3YTIuNzcgMi43NyAwIDAgMS0uMzU0LS4yOThDNC4zNDIgMS42NzQgNCAxLjE3OSA0IC41YS41LjUgMCAwIDEgLjE0Ni0uMzU0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQaW5NYXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjEgMTEuMmEuNS41IDAgMCAxIC40LS4ySDZhLjUuNSAwIDAgMSAwIDFIMy43NUwxLjUgMTVoMTNsLTIuMjUtM0gxMGEuNS41IDAgMCAxIDAtMWgyLjVhLjUuNSAwIDAgMSAuNC4ybDMgNGEuNS41IDAgMCAxLS40LjhILjVhLjUuNSAwIDAgMS0uNC0uOGwzLTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGE0IDQgMCAxIDEgNC41IDMuOTY5VjEzLjVhLjUuNSAwIDAgMS0xIDBWNy45N0E0IDQgMCAwIDEgNCAzLjk5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGlwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMkExLjUgMS41IDAgMCAwIDAgMy41djlBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41di05QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xM3ptNyA2aDVhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0uNS41aC01YS41LjUgMCAwIDEtLjUtLjV2LTNhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGxheUJ0bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMlY0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yem02Ljc5LTYuOTA3QS41LjUgMCAwIDAgNiA1LjV2NWEuNS41IDAgMCAwIC43OS40MDdsMy41LTIuNWEuNS41IDAgMCAwIDAtLjgxNGwtMy41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGxheUNpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek02Ljc5IDUuMDkzQS41LjUgMCAwIDAgNiA1LjV2NWEuNS41IDAgMCAwIC43OS40MDdsMy41LTIuNWEuNS41IDAgMCAwIDAtLjgxNGwtMy41LTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUGxheUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTEuNTk2IDguNjk3LTYuMzYzIDMuNjkyYy0uNTQuMzEzLTEuMjMzLS4wNjYtMS4yMzMtLjY5N1Y0LjMwOGMwLS42My42OTItMS4wMSAxLjIzMy0uNjk2bDYuMzYzIDMuNjkyYS44MDIuODAyIDAgMCAxIDAgMS4zOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBsdWdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMGEuNS41IDAgMCAxIC41LjVWM2gzVi41YS41LjUgMCAwIDEgMSAwVjNoMWEuNS41IDAgMCAxIC41LjV2M0EzLjUgMy41IDAgMCAxIDguNSAxMGMtLjAwMi40MzQtLjAxLjg0NS0uMDQgMS4yMi0uMDQxLjUxNC0uMTI2IDEuMDAzLS4zMTcgMS40MjRhMi4wODMgMi4wODMgMCAwIDEtLjk3IDEuMDI4QzYuNzI1IDEzLjkgNi4xNjkgMTQgNS41IDE0Yy0uOTk4IDAtMS42MS4zMy0xLjk3NC43MThBMS45MjIgMS45MjIgMCAwIDAgMyAxNkgyYzAtLjYxNi4yMzItMS4zNjcuNzk3LTEuOTY4QzMuMzc0IDEzLjQyIDQuMjYxIDEzIDUuNSAxM2MuNTgxIDAgLjk2Mi0uMDg4IDEuMjE4LS4yMTkuMjQxLS4xMjMuNC0uMy41MTQtLjU1LjEyMS0uMjY2LjE5My0uNjIxLjIzLTEuMDkuMDI3LS4zNC4wMzUtLjcxOC4wMzctMS4xNDFBMy41IDMuNSAwIDAgMSA0IDYuNXYtM2EuNS41IDAgMCAxIC41LS41aDFWLjVBLjUuNSAwIDAgMSA2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFBsdXNDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHYzaC0zYS41LjUgMCAwIDAgMCAxaDN2M2EuNS41IDAgMCAwIDEgMHYtM2gzYS41LjUgMCAwIDAgMC0xaC0zdi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxQbHVzU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6bTYuNSA0LjV2M2gzYS41LjUgMCAwIDEgMCAxaC0zdjNhLjUuNSAwIDAgMS0xIDB2LTNoLTNhLjUuNSAwIDAgMSAwLTFoM3YtM2EuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUHJpbnRlckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxYTIgMiAwIDAgMC0yIDJ2MWgxMFYzYTIgMiAwIDAgMC0yLTJINXptNiA4SDVhMSAxIDAgMCAwLTEgMXYzYTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xdi0zYTEgMSAwIDAgMC0xLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA3YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJoLTF2LTJhMiAyIDAgMCAwLTItMkg1YTIgMiAwIDAgMC0yIDJ2MkgyYTIgMiAwIDAgMS0yLTJWN3ptMi41IDFhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFB1enpsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4xMTIgMy42NDVBMS41IDEuNSAwIDAgMSA0LjYwNSAySDdhLjUuNSAwIDAgMSAuNS41di4zODJjMCAuNjk2LS40OTcgMS4xODItLjg3MiAxLjQ2OWEuNDU5LjQ1OSAwIDAgMC0uMTE1LjExOC4xMTMuMTEzIDAgMCAwLS4wMTIuMDI1TDYuNSA0LjV2LjAwM2wuMDAzLjAxYy4wMDQuMDEuMDE0LjAyOC4wMzYuMDUzYS44Ni44NiAwIDAgMCAuMjcuMTk0QzcuMDkgNC45IDcuNTEgNSA4IDVjLjQ5MiAwIC45MTItLjEgMS4xOS0uMjRhLjg2Ljg2IDAgMCAwIC4yNzEtLjE5NC4yMTMuMjEzIDAgMCAwIC4wMzYtLjA1NGwuMDAzLS4wMXYtLjAwOGEuMTEyLjExMiAwIDAgMC0uMDEyLS4wMjUuNDU5LjQ1OSAwIDAgMC0uMTE1LS4xMThjLS4zNzUtLjI4Ny0uODcyLS43NzMtLjg3Mi0xLjQ2OVYyLjVBLjUuNSAwIDAgMSA5IDJoMi4zOTVhMS41IDEuNSAwIDAgMSAxLjQ5MyAxLjY0NUwxMi42NDUgNi41aC4yMzdjLjE5NSAwIC40Mi0uMTQ3LjY3NS0uNDguMjEtLjI3NC41MjgtLjUyLjk0My0uNTIuNTY4IDAgLjk0Ny40NDcgMS4xNTQuODYyQzE1Ljg3NyA2LjgwNyAxNiA3LjM4NyAxNiA4cy0uMTIzIDEuMTkzLS4zNDYgMS42MzhjLS4yMDcuNDE1LS41ODYuODYyLTEuMTU0Ljg2Mi0uNDE1IDAtLjczMy0uMjQ2LS45NDMtLjUyLS4yNTUtLjMzMy0uNDgtLjQ4LS42NzUtLjQ4aC0uMjM3bC4yNDMgMi44NTVBMS41IDEuNSAwIDAgMSAxMS4zOTUgMTRIOWEuNS41IDAgMCAxLS41LS41di0uMzgyYzAtLjY5Ni40OTctMS4xODIuODcyLTEuNDY5YS40NTkuNDU5IDAgMCAwIC4xMTUtLjExOC4xMTMuMTEzIDAgMCAwIC4wMTItLjAyNUw5LjUgMTEuNXYtLjAwM2wtLjAwMy0uMDFhLjIxNC4yMTQgMCAwIDAtLjAzNi0uMDUzLjg1OS44NTkgMCAwIDAtLjI3LS4xOTRDOC45MSAxMS4xIDguNDkgMTEgOCAxMWMtLjQ5MSAwLS45MTIuMS0xLjE5LjI0YS44NTkuODU5IDAgMCAwLS4yNzEuMTk0LjIxNC4yMTQgMCAwIDAtLjAzNi4wNTRsLS4wMDMuMDF2LjAwMmwuMDAxLjAwNmEuMTEzLjExMyAwIDAgMCAuMDEyLjAyNWMuMDE2LjAyNy4wNS4wNjguMTE1LjExOC4zNzUuMjg3Ljg3Mi43NzMuODcyIDEuNDY5di4zODJhLjUuNSAwIDAgMS0uNS41SDQuNjA1YTEuNSAxLjUgMCAwIDEtMS40OTMtMS42NDVMMy4zNTYgOS41aC0uMjM4Yy0uMTk1IDAtLjQyLjE0Ny0uNjc1LjQ4LS4yMS4yNzQtLjUyOC41Mi0uOTQzLjUyLS41NjggMC0uOTQ3LS40NDctMS4xNTQtLjg2MkMuMTIzIDkuMTkzIDAgOC42MTMgMCA4cy4xMjMtMS4xOTMuMzQ2LTEuNjM4Qy41NTMgNS45NDcuOTMyIDUuNSAxLjUgNS41Yy40MTUgMCAuNzMzLjI0Ni45NDMuNTIuMjU1LjMzMy40OC40OC42NzUuNDhoLjIzOGwtLjI0NC0yLjg1NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUXVlc3Rpb25DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNS40OTYgNi4wMzNoLjgyNWMuMTM4IDAgLjI0OC0uMTEzLjI2Ni0uMjUuMDktLjY1Ni41NC0xLjEzNCAxLjM0Mi0xLjEzNC42ODYgMCAxLjMxNC4zNDMgMS4zMTQgMS4xNjggMCAuNjM1LS4zNzQuOTI3LS45NjUgMS4zNzEtLjY3My40ODktMS4yMDYgMS4wNi0xLjE2OCAxLjk4N2wuMDAzLjIxN2EuMjUuMjUgMCAwIDAgLjI1LjI0NmguODExYS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uMTA1YzAtLjcxOC4yNzMtLjkyNyAxLjAxLTEuNDg2LjYwOS0uNDYzIDEuMjQ0LS45NzcgMS4yNDQtMi4wNTYgMC0xLjUxMS0xLjI3Ni0yLjI0MS0yLjY3My0yLjI0MS0xLjI2NyAwLTIuNjU1LjU5LTIuNzUgMi4yODZhLjIzNy4yMzcgMCAwIDAgLjI0MS4yNDd6bTIuMzI1IDYuNDQzYy42MSAwIDEuMDI5LS4zOTQgMS4wMjktLjkyNyAwLS41NTItLjQyLS45NC0xLjAyOS0uOTQtLjU4NCAwLTEuMDA5LjM4OC0xLjAwOS45NCAwIC41MzMuNDI1LjkyNyAxLjAxLjkyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUXVlc3Rpb25EaWFtb25kRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjA1LjQzNWMtLjU4LS41OC0xLjUyLS41OC0yLjEgMEwuNDM2IDYuOTVjLS41OC41OC0uNTggMS41MTkgMCAyLjA5OGw2LjUxNiA2LjUxNmMuNTguNTggMS41MTkuNTggMi4wOTggMGw2LjUxNi02LjUxNmMuNTgtLjU4LjU4LTEuNTE5IDAtMi4wOThMOS4wNS40MzV6TTUuNDk1IDYuMDMzYS4yMzcuMjM3IDAgMCAxLS4yNC0uMjQ3QzUuMzUgNC4wOTEgNi43MzcgMy41IDguMDA1IDMuNWMxLjM5NiAwIDIuNjcyLjczIDIuNjcyIDIuMjQgMCAxLjA4LS42MzUgMS41OTQtMS4yNDQgMi4wNTctLjczNy41NTktMS4wMS43NjgtMS4wMSAxLjQ4NnYuMTA1YS4yNS4yNSAwIDAgMS0uMjUuMjVoLS44MWEuMjUuMjUgMCAwIDEtLjI1LS4yNDZsLS4wMDQtLjIxN2MtLjAzOC0uOTI3LjQ5NS0xLjQ5OCAxLjE2OC0xLjk4Ny41OS0uNDQ0Ljk2NS0uNzM2Ljk2NS0xLjM3MSAwLS44MjUtLjYyOC0xLjE2OC0xLjMxNC0xLjE2OC0uODAzIDAtMS4yNTMuNDc4LTEuMzQyIDEuMTM0LS4wMTguMTM3LS4xMjguMjUtLjI2Ni4yNWgtLjgyNXptMi4zMjUgNi40NDNjLS41ODQgMC0xLjAwOS0uMzk0LTEuMDA5LS45MjcgMC0uNTUyLjQyNS0uOTQgMS4wMS0uOTQuNjA5IDAgMS4wMjguMzg4IDEuMDI4Ljk0IDAgLjUzMy0uNDIuOTI3LTEuMDI5LjkyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUXVlc3Rpb25PY3RhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40Ni4xNDZBLjUuNSAwIDAgMCAxMS4xMDcgMEg0Ljg5M2EuNS41IDAgMCAwLS4zNTMuMTQ2TC4xNDYgNC41NEEuNS41IDAgMCAwIDAgNC44OTN2Ni4yMTRhLjUuNSAwIDAgMCAuMTQ2LjM1M2w0LjM5NCA0LjM5NGEuNS41IDAgMCAwIC4zNTMuMTQ2aDYuMjE0YS41LjUgMCAwIDAgLjM1My0uMTQ2bDQuMzk0LTQuMzk0YS41LjUgMCAwIDAgLjE0Ni0uMzUzVjQuODkzYS41LjUgMCAwIDAtLjE0Ni0uMzUzTDExLjQ2LjE0NnpNNS40OTYgNi4wMzNhLjIzNy4yMzcgMCAwIDEtLjI0LS4yNDdDNS4zNSA0LjA5MSA2LjczNyAzLjUgOC4wMDUgMy41YzEuMzk2IDAgMi42NzIuNzMgMi42NzIgMi4yNCAwIDEuMDgtLjYzNSAxLjU5NC0xLjI0NCAyLjA1Ny0uNzM3LjU1OS0xLjAxLjc2OC0xLjAxIDEuNDg2di4xMDVhLjI1LjI1IDAgMCAxLS4yNS4yNWgtLjgxYS4yNS4yNSAwIDAgMS0uMjUtLjI0NmwtLjAwNC0uMjE3Yy0uMDM4LS45MjcuNDk1LTEuNDk4IDEuMTY4LTEuOTg3LjU5LS40NDQuOTY1LS43MzYuOTY1LTEuMzcxIDAtLjgyNS0uNjI4LTEuMTY4LTEuMzE0LTEuMTY4LS44MDMgMC0xLjI1My40NzgtMS4zNDIgMS4xMzQtLjAxOC4xMzctLjEyOC4yNS0uMjY2LjI1aC0uODI1em0yLjMyNSA2LjQ0M2MtLjU4NCAwLTEuMDA5LS4zOTQtMS4wMDktLjkyNyAwLS41NTIuNDI1LS45NCAxLjAxLS45NC42MDkgMCAxLjAyOC4zODggMS4wMjguOTQgMCAuNTMzLS40Mi45MjctMS4wMjkuOTI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxRdWVzdGlvblNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0zLjQ5NiA2LjAzM2EuMjM3LjIzNyAwIDAgMS0uMjQtLjI0N0M1LjM1IDQuMDkxIDYuNzM3IDMuNSA4LjAwNSAzLjVjMS4zOTYgMCAyLjY3Mi43MyAyLjY3MiAyLjI0IDAgMS4wOC0uNjM1IDEuNTk0LTEuMjQ0IDIuMDU3LS43MzcuNTU5LTEuMDEuNzY4LTEuMDEgMS40ODZ2LjEwNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uODFhLjI1LjI1IDAgMCAxLS4yNS0uMjQ2bC0uMDA0LS4yMTdjLS4wMzgtLjkyNy40OTUtMS40OTggMS4xNjgtMS45ODcuNTktLjQ0NC45NjUtLjczNi45NjUtMS4zNzEgMC0uODI1LS42MjgtMS4xNjgtMS4zMTQtMS4xNjgtLjgwMyAwLTEuMjUzLjQ3OC0xLjM0MiAxLjEzNC0uMDE4LjEzNy0uMTI4LjI1LS4yNjYuMjVoLS44MjV6bTIuMzI1IDYuNDQzYy0uNTg0IDAtMS4wMDktLjM5NC0xLjAwOS0uOTI3IDAtLjU1Mi40MjUtLjk0IDEuMDEtLjk0LjYwOSAwIDEuMDI4LjM4OCAxLjAyOC45NCAwIC41MzMtLjQyLjkyNy0xLjAyOS45Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFJlY29yZEJ0bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMlY0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yem04LTFhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxSZWNvcmRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTggM2EzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFJlY29yZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTNBNSA1IDAgMSAwIDggM2E1IDUgMCAwIDAgMCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsUmVjb3JkMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgOGEyIDIgMCAxIDEtNCAwIDIgMiAwIDAgMSA0IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxM0E1IDUgMCAxIDAgOCAzYTUgNSAwIDAgMCAwIDEwem0wLTJhMyAzIDAgMSAxIDAtNiAzIDMgMCAwIDEgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxSZXBseUFsbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wMjEgMTEuOSAzLjQ1MyA4LjYyYS43MTkuNzE5IDAgMCAxIDAtMS4yMzhMOC4wMjEgNC4xYS43MTYuNzE2IDAgMCAxIDEuMDc5LjYxOVY2YzEuNSAwIDYgMCA3IDgtMi41LTQuNS03LTQtNy00djEuMjgxYzAgLjU2LS42MDYuODk4LTEuMDc5LjYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMjMyIDQuMjkzYS41LjUgMCAwIDEtLjEwNi43TDEuMTE0IDcuOTQ1YS41LjUgMCAwIDEtLjA0Mi4wMjguMTQ3LjE0NyAwIDAgMCAwIC4yNTIuNTAzLjUwMyAwIDAgMSAuMDQyLjAyOGw0LjAxMiAyLjk1NGEuNS41IDAgMSAxLS41OTMuODA1TC41MzkgOS4wNzNhMS4xNDcgMS4xNDcgMCAwIDEgMC0xLjk0NmwzLjk5NC0yLjk0YS41LjUgMCAwIDEgLjY5OS4xMDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFJlcGx5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjkyMSAxMS45IDEuMzUzIDguNjJhLjcxOS43MTkgMCAwIDEgMC0xLjIzOEw1LjkyMSA0LjFBLjcxNi43MTYgMCAwIDEgNyA0LjcxOVY2YzEuNSAwIDYgMCA3IDgtMi41LTQuNS03LTQtNy00djEuMjgxYzAgLjU2LS42MDYuODk4LTEuMDc5LjYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxSc3NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMS41IDIuNWM1LjUyMyAwIDEwIDQuNDc3IDEwIDEwYTEgMSAwIDEgMS0yIDAgOCA4IDAgMCAwLTgtOCAxIDEgMCAwIDEgMC0yem0wIDRhNiA2IDAgMCAxIDYgNiAxIDEgMCAxIDEtMiAwIDQgNCAwIDAgMC00LTQgMSAxIDAgMCAxIDAtMnptLjUgN2ExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2FmZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS43NzggOS40MTRBMiAyIDAgMSAxIDYuOTUgNi41ODZhMiAyIDAgMCAxIDIuODI4IDIuODI4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAwQTEuNSAxLjUgMCAwIDAgMSAxLjVWM0guNWEuNS41IDAgMCAwIDAgMUgxdjMuNUguNWEuNS41IDAgMCAwIDAgMUgxVjEySC41YS41LjUgMCAwIDAgMCAxSDF2MS41QTEuNSAxLjUgMCAwIDAgMi41IDE2aDEyYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMTNBMS41IDEuNSAwIDAgMCAxNC41IDBoLTEyem0zLjAzNiA0LjQ2NCAxLjA5IDEuMDlhMy4wMDMgMy4wMDMgMCAwIDEgMy40NzYgMGwxLjA5LTEuMDlhLjUuNSAwIDEgMSAuNzA3LjcwOGwtMS4wOSAxLjA5Yy43NCAxLjAzNy43NCAyLjQ0IDAgMy40NzZsMS4wOSAxLjA5YS41LjUgMCAxIDEtLjcwNy43MDhsLTEuMDktMS4wOWEzLjAwMiAzLjAwMiAwIDAgMS0zLjQ3NiAwbC0xLjA5IDEuMDlhLjUuNSAwIDEgMS0uNzA4LS43MDhsMS4wOS0xLjA5YTMuMDAzIDMuMDAzIDAgMCAxIDAtMy40NzZsLTEuMDktMS4wOWEuNS41IDAgMSAxIC43MDgtLjcwOHpNMTQgNi41djNhLjUuNSAwIDAgMS0xIDB2LTNhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNhZmUyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjU2MyA4SDUuMDM1YTMuNDgyIDMuNDgyIDAgMCAxIC42NjItMS41OTZsMS4wOCAxLjA4Yy0uMDk0LjE2LS4xNjcuMzMyLS4yMTQuNTE2em0uOTIxLTEuMjIzLTEuMDgtMS4wOEEzLjQ4MiAzLjQ4MiAwIDAgMSA4IDUuMDM1djEuNTI4Yy0uMTg0LjA0Ny0uMzU3LjEyLS41MTYuMjE0ek05IDYuNTYzVjUuMDM1YTMuNDgyIDMuNDgyIDAgMCAxIDEuNTk2LjY2MmwtMS4wOCAxLjA4QTEuOTg4IDEuOTg4IDAgMCAwIDkgNi41NjN6bTEuMjIzLjkyMSAxLjA4LTEuMDhjLjM0My40NTguNTc3IDEuMDAzLjY2MiAxLjU5NmgtMS41MjhhMS45ODkgMS45ODkgMCAwIDAtLjIxNC0uNTE2ek0xMC40MzcgOWgxLjUyOGEzLjQ4MyAzLjQ4MyAwIDAgMS0uNjYyIDEuNTk2bC0xLjA4LTEuMDhjLjA5NC0uMTYuMTY3LS4zMzIuMjE0LS41MTZ6bS0uOTIxIDEuMjIzIDEuMDggMS4wOEEzLjQ4MyAzLjQ4MyAwIDAgMSA5IDExLjk2NXYtMS41MjhjLjE4NC0uMDQ3LjM1Ny0uMTIuNTE2LS4yMTR6TTggMTAuNDM3djEuNTI4YTMuNDgzIDMuNDgzIDAgMCAxLTEuNTk2LS42NjJsMS4wOC0xLjA4Yy4xNi4wOTQuMzMyLjE2Ny41MTYuMjE0em0tMS4yMjMtLjkyMS0xLjA4IDEuMDhBMy40ODIgMy40ODIgMCAwIDEgNS4wMzUgOWgxLjUyOGMuMDQ3LjE4NC4xMi4zNTcuMjE0LjUxNnpNNy41IDguNWExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDFBMS41IDEuNSAwIDAgMCAxIDIuNVYzSC41YS41LjUgMCAwIDAgMCAxSDF2NEguNWEuNS41IDAgMCAwIDAgMUgxdjRILjVhLjUuNSAwIDAgMCAwIDFIMXYuNUExLjUgMS41IDAgMCAwIDIuNSAxNmgxMmExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTEyQTEuNSAxLjUgMCAwIDAgMTQuNSAxaC0xMnptNiAzYTQuNSA0LjUgMCAxIDEgMCA5IDQuNSA0LjUgMCAwIDEgMC05elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTYXZlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMS41QTEuNSAxLjUgMCAwIDEgMTAgMGg0YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDZjLS4zMTQuNDE4LS41LjkzNy0uNSAxLjV2Ny43OTNMNC44NTQgNi42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwzLjUgMy41YS41LjUgMCAwIDAgLjcwOCAwbDMuNS0zLjVhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDkuMjkzVjEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2F2ZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAxLjVBMS41IDEuNSAwIDAgMSAxMCAwaDRhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoNmMtLjMxNC40MTgtLjUuOTM3LS41IDEuNXY2aC0yYS41LjUgMCAwIDAtLjM1NC44NTRsMi41IDIuNWEuNS41IDAgMCAwIC43MDggMGwyLjUtMi41QS41LjUgMCAwIDAgMTAuNSA3LjVoLTJ2LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNkQ2FyZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjUgMEg1LjkxNGExLjUgMS41IDAgMCAwLTEuMDYuNDRMMi40MzkgMi44NTNBMS41IDEuNSAwIDAgMCAyIDMuOTE0VjE0LjVBMS41IDEuNSAwIDAgMCAzLjUgMTZoOWExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTEzQTEuNSAxLjUgMCAwIDAgMTIuNSAwem0tNyAyLjc1YS43NS43NSAwIDAgMSAuNzUuNzV2MmEuNzUuNzUgMCAwIDEtMS41IDB2LTJhLjc1Ljc1IDAgMCAxIC43NS0uNzV6bTIgMGEuNzUuNzUgMCAwIDEgLjc1Ljc1djJhLjc1Ljc1IDAgMCAxLTEuNSAwdi0yYS43NS43NSAwIDAgMSAuNzUtLjc1em0yLjc1Ljc1YS43NS43NSAwIDAgMC0xLjUgMHYyYS43NS43NSAwIDAgMCAxLjUgMHYtMnptMS4yNS0uNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYyYS43NS43NSAwIDAgMS0xLjUgMHYtMmEuNzUuNzUgMCAwIDEgLjc1LS43NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2hhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIuNWEyLjUgMi41IDAgMSAxIC42MDMgMS42MjhsLTYuNzE4IDMuMTJhMi40OTkgMi40OTkgMCAwIDEgMCAxLjUwNGw2LjcxOCAzLjEyYTIuNSAyLjUgMCAxIDEtLjQ4OC44NzZsLTYuNzE4LTMuMTJhMi41IDIuNSAwIDEgMSAwLTMuMjU2bDYuNzE4LTMuMTJBMi41IDIuNSAwIDAgMSAxMSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNoaWVsZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wNzIuNTZDNi4xNTcuMjY1IDcuMzEgMCA4IDBzMS44NDMuMjY1IDIuOTI4LjU2YzEuMTEuMyAyLjIyOS42NTUgMi44ODcuODdhMS41NCAxLjU0IDAgMCAxIDEuMDQ0IDEuMjYyYy41OTYgNC40NzctLjc4NyA3Ljc5NS0yLjQ2NSA5Ljk5YTExLjc3NSAxMS43NzUgMCAwIDEtMi41MTcgMi40NTMgNy4xNTkgNy4xNTkgMCAwIDEtMS4wNDguNjI1Yy0uMjguMTMyLS41ODEuMjQtLjgyOS4yNHMtLjU0OC0uMTA4LS44MjktLjI0YTcuMTU4IDcuMTU4IDAgMCAxLTEuMDQ4LS42MjUgMTEuNzc3IDExLjc3NyAwIDAgMS0yLjUxNy0yLjQ1M0MxLjkyOCAxMC40ODcuNTQ1IDcuMTY5IDEuMTQxIDIuNjkyQTEuNTQgMS41NCAwIDAgMSAyLjE4NSAxLjQzIDYyLjQ1NiA2Mi40NTYgMCAwIDEgNS4wNzIuNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNoaWVsZExvY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBjLS42OSAwLTEuODQzLjI2NS0yLjkyOC41Ni0xLjExLjMtMi4yMjkuNjU1LTIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMC0xLjA0NCAxLjI2MmMtLjU5NiA0LjQ3Ny43ODcgNy43OTUgMi40NjUgOS45OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuNzc1IDExLjc3NSAwIDAgMCAyLjUxNy0yLjQ1M2MxLjY3OC0yLjE5NSAzLjA2MS01LjUxMyAyLjQ2NS05Ljk5YTEuNTQxIDEuNTQxIDAgMCAwLTEuMDQ0LTEuMjYzIDYyLjQ2NyA2Mi40NjcgMCAwIDAtMi44ODctLjg3QzkuODQzLjI2NiA4LjY5IDAgOCAwem0wIDVhMS41IDEuNSAwIDAgMSAuNSAyLjkxNWwuMzg1IDEuOTlhLjUuNSAwIDAgMS0uNDkxLjU5NWgtLjc4OGEuNS41IDAgMCAxLS40OS0uNTk1bC4zODQtMS45OUExLjUgMS41IDAgMCAxIDggNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2hpZWxkU2xhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjA5MyAzLjA5M2MtLjQ2NSA0LjI3NS44ODUgNy40NiAyLjUxMyA5LjU4OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuMzIgMTEuMzIgMCAwIDAgMS43MzMtMS41MjVMMS4wOTMgMy4wOTN6bTEyLjIxNSA4LjIxNUwzLjEyOCAxLjEyOEE2MS4zNjkgNjEuMzY5IDAgMCAxIDUuMDczLjU2QzYuMTU3LjI2NSA3LjMxIDAgOCAwczEuODQzLjI2NSAyLjkyOC41NmMxLjExLjMgMi4yMjkuNjU1IDIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMSAxLjA0NCAxLjI2MmMuNDgzIDMuNjI2LS4zMzIgNi40OTEtMS41NTEgOC42MTZ6bS4zMzggMy4wNDYtMTMtMTMgLjcwOC0uNzA4IDEzIDEzLS43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTaGlmdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNyAyLjA0N2ExIDEgMCAwIDEgMS40NiAwbDYuMzQ1IDYuNzdjLjYuNjM4LjE0NiAxLjY4My0uNzMgMS42ODNIMTEuNXYzYTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMXYtM0gxLjY1NEMuNzggMTAuNS4zMjYgOS40NTUuOTI0IDguODE2TDcuMjcgMi4wNDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNpZ25wb3N0MkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yOTMuNzA3QTEgMSAwIDAgMCA3IDEuNDE0VjJIMmExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWg1djFIMi41YTEgMSAwIDAgMC0uOC40TC43MjUgOC43YS41LjUgMCAwIDAgMCAuNmwuOTc1IDEuM2ExIDEgMCAwIDAgLjguNEg3djVoMnYtNWg1YTEgMSAwIDAgMCAxLTFWOGExIDEgMCAwIDAtMS0xSDlWNmg0LjVhMSAxIDAgMCAwIC44LS40bC45NzUtMS4zYS41LjUgMCAwIDAgMC0uNkwxNC4zIDIuNGExIDEgMCAwIDAtLjgtLjRIOXYtLjU4NkExIDEgMCAwIDAgNy4yOTMuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTaWducG9zdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yOTMuNzA3QTEgMSAwIDAgMCA3IDEuNDE0VjRIMmExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWg1djZoMnYtNmgzLjUzMmExIDEgMCAwIDAgLjc2OC0uMzZsMS45MzMtMi4zMmEuNS41IDAgMCAwIDAtLjY0TDEzLjMgNC4zNmExIDEgMCAwIDAtLjc2OC0uMzZIOVYxLjQxNEExIDEgMCAwIDAgNy4yOTMuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTaWducG9zdFNwbGl0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDE2aDJWNmg1YTEgMSAwIDAgMCAuOC0uNGwuOTc1LTEuM2EuNS41IDAgMCAwIDAtLjZMMTQuOCAyLjRBMSAxIDAgMCAwIDE0IDJIOXYtLjU4NmExIDEgMCAwIDAtMiAwVjdIMmExIDEgMCAwIDAtLjguNEwuMjI1IDguN2EuNS41IDAgMCAwIDAgLjZsLjk3NSAxLjNhMSAxIDAgMCAwIC44LjRoNXY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTaW1GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNC41YS41LjUgMCAwIDEgLjUtLjVoMnYySDVWNC41ek04LjUgNlY0aDJhLjUuNSAwIDAgMSAuNS41VjZIOC41ek01IDdoNnYySDVWN3ptMy41IDNIMTF2MS41YS41LjUgMCAwIDEtLjUuNWgtMnYtMnptLTEgMHYyaC0yYS41LjUgMCAwIDEtLjUtLjVWMTBoMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwQTEuNSAxLjUgMCAwIDAgMiAxLjV2MTNBMS41IDEuNSAwIDAgMCAzLjUgMTZoOWExLjUgMS41IDAgMCAwIDEuNS0xLjVWMy40MTRhMS41IDEuNSAwIDAgMC0uNDQtMS4wNkwxMS42NDcuNDM5QTEuNSAxLjUgMCAwIDAgMTAuNTg2IDBIMy41em0yIDNoNUExLjUgMS41IDAgMCAxIDEyIDQuNXY3YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtNUExLjUgMS41IDAgMCAxIDQgMTEuNXYtN0ExLjUgMS41IDAgMCAxIDUuNSAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTa2lwQmFja3dhcmRCdG5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnptMTEuMjEtNi45MDdMOC41IDcuMDI4VjUuNWEuNS41IDAgMCAwLS43OS0uNDA3TDUgNy4wMjhWNS41YS41LjUgMCAwIDAtMSAwdjVhLjUuNSAwIDAgMCAxIDBWOC45NzJsMi43MSAxLjkzNWEuNS41IDAgMCAwIC43OS0uNDA3VjguOTcybDIuNzEgMS45MzVBLjUuNSAwIDAgMCAxMiAxMC41di01YS41LjUgMCAwIDAtLjc5LS40MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBCYWNrd2FyZENpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tNC43OS0yLjkwN0w4LjUgNy4wMjhWNS41YS41LjUgMCAwIDAtLjc5LS40MDdMNSA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDdWOC45NzJsMi43MSAxLjkzNUEuNS41IDAgMCAwIDEyIDEwLjV2LTVhLjUuNSAwIDAgMC0uNzktLjQwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2tpcEJhY2t3YXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uNSAzLjVBLjUuNSAwIDAgMCAwIDR2OGEuNS41IDAgMCAwIDEgMFY4Ljc1M2w2LjI2NyAzLjYzNmMuNTQuMzEzIDEuMjMzLS4wNjYgMS4yMzMtLjY5N3YtMi45NGw2LjI2NyAzLjYzNmMuNTQuMzE0IDEuMjMzLS4wNjUgMS4yMzMtLjY5NlY0LjMwOGMwLS42My0uNjkzLTEuMDEtMS4yMzMtLjY5Nkw4LjUgNy4yNDh2LTIuOTRjMC0uNjMtLjY5Mi0xLjAxLTEuMjMzLS42OTZMMSA3LjI0OFY0YS41LjUgMCAwIDAtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBFbmRCdG5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnptNi43OS02LjkwN0EuNS41IDAgMCAwIDYgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3TDkuNSA4Ljk3MlYxMC41YS41LjUgMCAwIDAgMSAwdi01YS41LjUgMCAwIDAtMSAwdjEuNTI4TDYuNzkgNS4wOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBFbmRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi43OSA1LjA5M0EuNS41IDAgMCAwIDYgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3TDkuNSA4Ljk3MlYxMC41YS41LjUgMCAwIDAgMSAwdi01YS41LjUgMCAwIDAtMSAwdjEuNTI4TDYuNzkgNS4wOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBFbmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNGEuNS41IDAgMCAwLTEgMHYzLjI0OEw1LjIzMyAzLjYxMkM0LjY5MyAzLjMgNCAzLjY3OCA0IDQuMzA4djcuMzg0YzAgLjYzLjY5MiAxLjAxIDEuMjMzLjY5N0wxMS41IDguNzUzVjEyYS41LjUgMCAwIDAgMSAwVjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBGb3J3YXJkQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEwVjJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTQuNzktNi45MDdBLjUuNSAwIDAgMCA0IDMuNXY1YS41LjUgMCAwIDAgLjc5LjQwN0w3LjUgNi45NzJWOC41YS41LjUgMCAwIDAgLjc5LjQwN0wxMSA2Ljk3MlY4LjVhLjUuNSAwIDAgMCAxIDB2LTVhLjUuNSAwIDAgMC0xIDB2MS41MjhMOC4yOSAzLjA5M2EuNS41IDAgMCAwLS43OS40MDd2MS41MjhMNC43OSAzLjA5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2tpcEZvcndhcmRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNC43OSA1LjA5M0EuNS41IDAgMCAwIDQgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3TDcuNSA4Ljk3MlYxMC41YS41LjUgMCAwIDAgLjc5LjQwN0wxMSA4Ljk3MlYxMC41YS41LjUgMCAwIDAgMSAwdi01YS41LjUgMCAwIDAtMSAwdjEuNTI4TDguMjkgNS4wOTNhLjUuNSAwIDAgMC0uNzkuNDA3djEuNTI4TDQuNzkgNS4wOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNraXBGb3J3YXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDMuNWEuNS41IDAgMCAxIC41LjV2OGEuNS41IDAgMCAxLTEgMFY4Ljc1M2wtNi4yNjcgMy42MzZjLS41NC4zMTMtMS4yMzMtLjA2Ni0xLjIzMy0uNjk3di0yLjk0bC02LjI2NyAzLjYzNkMuNjkzIDEyLjcwMyAwIDEyLjMyNCAwIDExLjY5M1Y0LjMwOGMwLS42My42OTMtMS4wMSAxLjIzMy0uNjk2TDcuNSA3LjI0OHYtMi45NGMwLS42My42OTMtMS4wMSAxLjIzMy0uNjk2TDE1IDcuMjQ4VjRhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2tpcFN0YXJ0QnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTkuNzEtNi45MDdMNyA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDd2LTVhLjUuNSAwIDAgMC0uNzktLjQwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2tpcFN0YXJ0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTkuNzEgNS4wOTMgNyA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDd2LTVhLjUuNSAwIDAgMC0uNzktLjQwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2tpcFN0YXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhLjUuNSAwIDAgMSAxIDB2My4yNDhsNi4yNjctMy42MzZjLjU0LS4zMTMgMS4yMzIuMDY2IDEuMjMyLjY5NnY3LjM4NGMwIC42My0uNjkyIDEuMDEtMS4yMzIuNjk3TDUgOC43NTNWMTJhLjUuNSAwIDAgMS0xIDBWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU2xhc2hDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTQuNjQ2LTIuNjQ2YS41LjUgMCAwIDAtLjcwOC0uNzA4bC02IDZhLjUuNSAwIDAgMCAuNzA4LjcwOGw2LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFNsYXNoU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6bTkuMzU0IDUuMzU0LTYgNmEuNS41IDAgMCAxLS43MDgtLjcwOGw2LTZhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3BlYWtlckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA0YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptLTIuNSA2LjVhMS41IDEuNSAwIDEgMSAzIDAgMS41IDEuNSAwIDAgMS0zIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTYgNGEyIDIgMCAxIDEtNCAwIDIgMiAwIDAgMSA0IDB6TTggN2EzLjUgMy41IDAgMSAxIDAgNyAzLjUgMy41IDAgMCAxIDAtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN0YXJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNjEyIDE1LjQ0M2MtLjM4Ni4xOTgtLjgyNC0uMTQ5LS43NDYtLjU5MmwuODMtNC43M0wuMTczIDYuNzY1Yy0uMzI5LS4zMTQtLjE1OC0uODg4LjI4My0uOTVsNC44OTgtLjY5Nkw3LjUzOC43OTJjLjE5Ny0uMzkuNzMtLjM5LjkyNyAwbDIuMTg0IDQuMzI3IDQuODk4LjY5NmMuNDQxLjA2Mi42MTIuNjM2LjI4Mi45NWwtMy41MjIgMy4zNTYuODMgNC43M2MuMDc4LjQ0My0uMzYuNzktLjc0Ni41OTJMOCAxMy4xODdsLTQuMzg5IDIuMjU2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTdGlja2llc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxLjVWMTNhMSAxIDAgMCAwIDEgMVYxLjVhLjUuNSAwIDAgMSAuNS0uNUgxNGExIDEgMCAwIDAtMS0xSDEuNUExLjUgMS41IDAgMCAwIDAgMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAyQTEuNSAxLjUgMCAwIDAgMiAzLjV2MTFBMS41IDEuNSAwIDAgMCAzLjUgMTZoNi4wODZhMS41IDEuNSAwIDAgMCAxLjA2LS40NGw0LjkxNS00LjkxNEExLjUgMS41IDAgMCAwIDE2IDkuNTg2VjMuNUExLjUgMS41IDAgMCAwIDE0LjUgMmgtMTF6bTYgOC41YTEgMSAwIDAgMSAxLTFoNC4zOTZhLjI1LjI1IDAgMCAxIC4xNzcuNDI3bC01LjE0NiA1LjE0NmEuMjUuMjUgMCAwIDEtLjQyNy0uMTc3VjEwLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN0aWNreUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDFBMS41IDEuNSAwIDAgMCAxIDIuNXYxMUExLjUgMS41IDAgMCAwIDIuNSAxNWg2LjA4NmExLjUgMS41IDAgMCAwIDEuMDYtLjQ0bDQuOTE1LTQuOTE0QTEuNSAxLjUgMCAwIDAgMTUgOC41ODZWMi41QTEuNSAxLjUgMCAwIDAgMTMuNSAxaC0xMXptNiA4LjVhMSAxIDAgMCAxIDEtMWg0LjM5NmEuMjUuMjUgMCAwIDEgLjE3Ny40MjdsLTUuMTQ2IDUuMTQ2YS4yNS4yNSAwIDAgMS0uNDI3LS4xNzdWOS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTdG9wQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTYuNS03QTEuNSAxLjUgMCAwIDAgNSA2LjV2M0ExLjUgMS41IDAgMCAwIDYuNSAxMWgzQTEuNSAxLjUgMCAwIDAgMTEgOS41di0zQTEuNSAxLjUgMCAwIDAgOS41IDVoLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN0b3BDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi41IDVBMS41IDEuNSAwIDAgMCA1IDYuNXYzQTEuNSAxLjUgMCAwIDAgNi41IDExaDNBMS41IDEuNSAwIDAgMCAxMSA5LjV2LTNBMS41IDEuNSAwIDAgMCA5LjUgNWgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3RvcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzLjVoNkExLjUgMS41IDAgMCAxIDEyLjUgNXY2YTEuNSAxLjUgMCAwIDEtMS41IDEuNUg1QTEuNSAxLjUgMCAwIDEgMy41IDExVjVBMS41IDEuNSAwIDAgMSA1IDMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3RvcGxpZ2h0c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMGEyIDIgMCAwIDAtMiAySDJjLjE2Ny41LjggMS42IDIgMnYySDJjLjE2Ny41LjggMS42IDIgMnYySDJjLjE2Ny41LjggMS42IDIgMnYxYTIgMiAwIDAgMCAyIDJoNGEyIDIgMCAwIDAgMi0ydi0xYzEuMi0uNCAxLjgzMy0xLjUgMi0yaC0yVjhjMS4yLS40IDEuODMzLTEuNSAyLTJoLTJWNGMxLjItLjQgMS44MzMtMS41IDItMmgtMmEyIDIgMCAwIDAtMi0ySDZ6bTMuNSAzLjVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTAgNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNOCAxM2ExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3RvcHdhdGNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMGEuNS41IDAgMCAwIDAgMUg3djEuMDdBNy4wMDEgNy4wMDEgMCAwIDAgOCAxNmE3IDcgMCAwIDAgNS4yOS0xMS41ODQuNTMxLjUzMSAwIDAgMCAuMDEzLS4wMTJsLjM1NC0uMzU0LjM1My4zNTRhLjUuNSAwIDEgMCAuNzA3LS43MDdsLTEuNDE0LTEuNDE1YS41LjUgMCAxIDAtLjcwNy43MDdsLjM1NC4zNTQtLjM1NC4zNTRhLjcxNy43MTcgMCAwIDAtLjAxMi4wMTJBNi45NzMgNi45NzMgMCAwIDAgOSAyLjA3MVYxaC41YS41LjUgMCAwIDAgMC0xaC0zem0yIDUuNlY5YS41LjUgMCAwIDEtLjUuNUg0LjVhLjUuNSAwIDAgMSAwLTFoM1Y1LjZhLjUuNSAwIDEgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN1aXRDbHViRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDEyLjVhMy40OTMgMy40OTMgMCAwIDEtMi42ODQtMS4yNTQgMTkuOTIgMTkuOTIgMCAwIDAgMS41ODIgMi45MDdjLjIzMS4zNS0uMDIuODQ3LS40MzguODQ3SDYuMDRjLS40MTkgMC0uNjctLjQ5Ny0uNDM4LS44NDdhMTkuOTE5IDE5LjkxOSAwIDAgMCAxLjU4Mi0yLjkwNyAzLjUgMy41IDAgMSAxLTIuNTM4LTUuNzQzIDMuNSAzLjUgMCAxIDEgNi43MDggMEEzLjUgMy41IDAgMSAxIDExLjUgMTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3VpdERpYW1vbmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNDUgNy40IDcuMiAxLjA2N2ExIDEgMCAwIDEgMS42IDBMMTMuNTUgNy40YTEgMSAwIDAgMSAwIDEuMkw4LjggMTQuOTMzYTEgMSAwIDAgMS0xLjYgMEwyLjQ1IDguNmExIDEgMCAwIDEgMC0xLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN1aXRIZWFydEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxYzIuMjEgMCA0IDEuNzU1IDQgMy45MkM4IDIuNzU1IDkuNzkgMSAxMiAxczQgMS43NTUgNCAzLjkyYzAgMy4yNjMtMy4yMzQgNC40MTQtNy42MDggOS42MDhhLjUxMy41MTMgMCAwIDEtLjc4NCAwQzMuMjM0IDkuMzM0IDAgOC4xODMgMCA0LjkyIDAgMi43NTUgMS43OSAxIDQgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsU3VpdFNwYWRlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjE4NCAxMS4yNDZBMy41IDMuNSAwIDAgMSAxIDljMC0xLjYwMiAxLjE0LTIuNjMzIDIuNjYtNC4wMDhDNC45ODYgMy43OTIgNi42MDIgMi4zMyA4IDBjMS4zOTggMi4zMyAzLjAxNCAzLjc5MiA0LjM0IDQuOTkyQzEzLjg2IDYuMzY3IDE1IDcuMzk4IDE1IDlhMy41IDMuNSAwIDAgMS02LjE4NCAyLjI0NiAxOS45MiAxOS45MiAwIDAgMCAxLjU4MiAyLjkwN2MuMjMxLjM1LS4wMi44NDctLjQzOC44NDdINi4wNGMtLjQxOSAwLS42Ny0uNDk3LS40MzgtLjg0N2ExOS45MTkgMTkuOTE5IDAgMCAwIDEuNTgyLTIuOTA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTdW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTJhNCA0IDAgMSAwIDAtOCA0IDQgMCAwIDAgMCA4ek04IDBhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDB6bTAgMTNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDEzem04LTVhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJhLjUuNSAwIDAgMSAuNS41ek0zIDhhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJBLjUuNSAwIDAgMSAzIDh6bTEwLjY1Ny01LjY1N2EuNS41IDAgMCAxIDAgLjcwN2wtMS40MTQgMS40MTVhLjUuNSAwIDEgMS0uNzA3LS43MDhsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6bS05LjE5MyA5LjE5M2EuNS41IDAgMCAxIDAgLjcwN0wzLjA1IDEzLjY1N2EuNS41IDAgMCAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptOS4xOTMgMi4xMjFhLjUuNSAwIDAgMS0uNzA3IDBsLTEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA3ek00LjQ2NCA0LjQ2NWEuNS41IDAgMCAxLS43MDcgMEwyLjM0MyAzLjA1YS41LjUgMCAxIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxTdW5yaXNlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY0NiAxLjE0NmEuNS41IDAgMCAxIC43MDggMGwxLjUgMS41YS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDIuNzA3VjQuNWEuNS41IDAgMCAxLTEgMFYyLjcwN2wtLjY0Ni42NDdhLjUuNSAwIDEgMS0uNzA4LS43MDhsMS41LTEuNXpNMi4zNDMgNC4zNDNhLjUuNSAwIDAgMSAuNzA3IDBsMS40MTQgMS40MTRhLjUuNSAwIDAgMS0uNzA3LjcwN0wyLjM0MyA1LjA1YS41LjUgMCAwIDEgMC0uNzA3em0xMS4zMTQgMGEuNS41IDAgMCAxIDAgLjcwN2wtMS40MTQgMS40MTRhLjUuNSAwIDEgMS0uNzA3LS43MDdsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6TTExLjcwOSAxMS41YTQgNCAwIDEgMC03LjQxOCAwSC41YS41LjUgMCAwIDAgMCAxaDE1YS41LjUgMCAwIDAgMC0xaC0zLjc5ek0wIDEwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMkEuNS41IDAgMCAxIDAgMTB6bTEzIDBhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFN1bnNldEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42NDYgNC44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMS41LTEuNWEuNS41IDAgMCAwLS43MDgtLjcwOGwtLjY0Ni42NDdWMS41YS41LjUgMCAwIDAtMSAwdjEuNzkzbC0uNjQ2LS42NDdhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41em0tNS4zMDMtLjUxYS41LjUgMCAwIDEgLjcwNyAwbDEuNDE0IDEuNDEzYS41LjUgMCAwIDEtLjcwNy43MDdMMi4zNDMgNS4wNWEuNS41IDAgMCAxIDAtLjcwN3ptMTEuMzE0IDBhLjUuNSAwIDAgMSAwIC43MDZsLTEuNDE0IDEuNDE0YS41LjUgMCAxIDEtLjcwNy0uNzA3bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwek0xMS43MDkgMTEuNWE0IDQgMCAxIDAtNy40MTggMEguNWEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMWgtMy43OXpNMCAxMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJBLjUuNSAwIDAgMSAwIDEwem0xMyAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxUYWJsZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem03IDExYTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVGFibGV0TGFuZHNjYXBlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJ6bTExLTdhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxUYWdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMWExIDEgMCAwIDAtMSAxdjQuNTg2YTEgMSAwIDAgMCAuMjkzLjcwN2w3IDdhMSAxIDAgMCAwIDEuNDE0IDBsNC41ODYtNC41ODZhMSAxIDAgMCAwIDAtMS40MTRsLTctN0ExIDEgMCAwIDAgNi41ODYgMUgyem00IDMuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVGFnc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTEgMSAwIDAgMSAxLTFoNC41ODZhMSAxIDAgMCAxIC43MDcuMjkzbDcgN2ExIDEgMCAwIDEgMCAxLjQxNGwtNC41ODYgNC41ODZhMSAxIDAgMCAxLTEuNDE0IDBsLTctN0ExIDEgMCAwIDEgMiA2LjU4NlYyem0zLjUgNGExLjUgMS41IDAgMSAwIDAtMyAxLjUgMS41IDAgMCAwIDAgM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjI5MyA3Ljc5M0ExIDEgMCAwIDEgMSA3LjA4NlYyYTEgMSAwIDAgMC0xIDF2NC41ODZhMSAxIDAgMCAwIC4yOTMuNzA3bDcgN2ExIDEgMCAwIDAgMS40MTQgMGwuMDQzLS4wNDMtNy40NTctNy40NTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRlbGVwaG9uZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuODg1LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVGVsZXBob25lRm9yd2FyZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuODg1LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXptMTAuNzYxLjEzNWEuNS41IDAgMCAxIC43MDggMGwyLjUgMi41YS41LjUgMCAwIDEgMCAuNzA4bC0yLjUgMi41YS41LjUgMCAwIDEtLjcwOC0uNzA4TDE0LjI5MyA0SDkuNWEuNS41IDAgMCAxIDAtMWg0Ljc5M2wtMS42NDctMS42NDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRlbGVwaG9uZUluYm91bmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjg4NS41MTFhMS43NDUgMS43NDUgMCAwIDEgMi42MS4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6TTE1Ljg1NC4xNDZhLjUuNSAwIDAgMSAwIC43MDhMMTEuNzA3IDVIMTQuNWEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgMSAwdjIuNzkzTDE1LjE0Ni4xNDZhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRlbGVwaG9uZU1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS44ODUuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExek0xMCAzLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRlbGVwaG9uZU91dGJvdW5kRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS44ODUuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExek0xMSAuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMS0xIDBWMS43MDdsLTQuMTQ2IDQuMTQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDE0LjI5MyAxSDExLjVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVGVsZXBob25lUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuODg1LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXpNMTIuNSAxYS41LjUgMCAwIDEgLjUuNVYzaDEuNWEuNS41IDAgMCAxIDAgMUgxM3YxLjVhLjUuNSAwIDAgMS0xIDBWNGgtMS41YS41LjUgMCAwIDEgMC0xSDEyVjEuNWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxUZWxlcGhvbmVYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS44ODUuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExem05LjI2MSAxLjEzNWEuNS41IDAgMCAxIC43MDggMEwxMyAyLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4TDEzLjcwNyAzLjVsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwxMyA0LjIwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTIuMjkzIDMuNWwtMS4xNDctMS4xNDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRlcm1pbmFsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDNhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjN6bTkuNSA1LjVoLTNhLjUuNSAwIDAgMCAwIDFoM2EuNS41IDAgMCAwIDAtMXptLTYuMzU0LS4zNTRhLjUuNSAwIDEgMCAuNzA4LjcwOGwyLTJhLjUuNSAwIDAgMCAwLS43MDhsLTItMmEuNS41IDAgMSAwLS43MDguNzA4TDQuNzkzIDYuNSAzLjE0NiA4LjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVHJhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxYTEgMSAwIDAgMC0xIDF2MWExIDEgMCAwIDAgMSAxSDN2OWEyIDIgMCAwIDAgMiAyaDZhMiAyIDAgMCAwIDItMlY0aC41YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDEwYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxSDIuNXptMyA0YS41LjUgMCAwIDEgLjUuNXY3YS41LjUgMCAwIDEtMSAwdi03YS41LjUgMCAwIDEgLjUtLjV6TTggNWEuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLTEgMHYtN0EuNS41IDAgMCAxIDggNXptMyAuNXY3YS41LjUgMCAwIDEtMSAwdi03YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxUcmFzaDJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMDM3IDMuMjI1QS43MDMuNzAzIDAgMCAxIDIgM2MwLTEuMTA1IDIuNjg2LTIgNi0yczYgLjg5NSA2IDJhLjcwMi43MDIgMCAwIDEtLjAzNy4yMjVsLTEuNjg0IDEwLjEwNEEyIDIgMCAwIDEgMTAuMzA1IDE1SDUuNjk0YTIgMiAwIDAgMS0xLjk3My0xLjY3MUwyLjAzNyAzLjIyNXptOS44OS0uNjlDMTAuOTY2IDIuMjE0IDkuNTc4IDIgOCAyYy0xLjU4IDAtMi45NjguMjE1LTMuOTI2LjUzNC0uNDc3LjE2LS43OTUuMzI3LS45NzUuNDY2LjE4LjE0LjQ5OC4zMDcuOTc1LjQ2NkM1LjAzMiAzLjc4NiA2LjQyIDQgOCA0czIuOTY3LS4yMTUgMy45MjYtLjUzNGMuNDc3LS4xNi43OTUtLjMyNy45NzUtLjQ2Ni0uMTgtLjE0LS40OTgtLjMwNy0uOTc1LS40NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRyZWVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNDE2LjIyM2EuNS41IDAgMCAwLS44MzIgMGwtMyA0LjVBLjUuNSAwIDAgMCA1IDUuNWguMDk4TDMuMDc2IDguNzM1QS41LjUgMCAwIDAgMy41IDkuNWguMTkxbC0xLjYzOCAzLjI3NmEuNS41IDAgMCAwIC40NDcuNzI0SDdWMTZoMnYtMi41aDQuNWEuNS41IDAgMCAwIC40NDctLjcyNEwxMi4zMSA5LjVoLjE5MWEuNS41IDAgMCAwIC40MjQtLjc2NUwxMC45MDIgNS41SDExYS41LjUgMCAwIDAgLjQxNi0uNzc3bC0zLTQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVHJpYW5nbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjAyMiAxLjU2NmExLjEzIDEuMTMgMCAwIDEgMS45NiAwbDYuODU3IDExLjY2N2MuNDU3Ljc3OC0uMDkyIDEuNzY3LS45OCAxLjc2N0gxLjE0NGMtLjg4OSAwLTEuNDM3LS45OS0uOTgtMS43NjdMNy4wMjIgMS41NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFRyb3BoeUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41LjVBLjUuNSAwIDAgMSAzIDBoMTBhLjUuNSAwIDAgMSAuNS41YzAgLjUzOC0uMDEyIDEuMDUtLjAzNCAxLjUzNmEzIDMgMCAxIDEtMS4xMzMgNS44OWMtLjc5IDEuODY1LTEuODc4IDIuNzc3LTIuODMzIDMuMDExdjIuMTczbDEuNDI1LjM1NmMuMTk0LjA0OC4zNzcuMTM1LjUzNy4yNTVMMTMuMyAxNS4xYS41LjUgMCAwIDEtLjMuOUgzYS41LjUgMCAwIDEtLjMtLjlsMS44MzgtMS4zNzljLjE2LS4xMi4zNDMtLjIwNy41MzctLjI1NUw2LjUgMTMuMTF2LTIuMTczYy0uOTU1LS4yMzQtMi4wNDMtMS4xNDYtMi44MzMtMy4wMTJhMyAzIDAgMSAxLTEuMTMyLTUuODlBMzMuMDc2IDMzLjA3NiAwIDAgMSAyLjUuNXptLjA5OSAyLjU0YTIgMiAwIDAgMCAuNzIgMy45MzVjLS4zMzMtMS4wNS0uNTg4LTIuMzQ2LS43Mi0zLjkzNXptMTAuMDgzIDMuOTM1YTIgMiAwIDAgMCAuNzItMy45MzVjLS4xMzMgMS41OS0uMzg4IDIuODg1LS43MiAzLjkzNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVHZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxMy41QS41LjUgMCAwIDEgMyAxM2gxMGEuNS41IDAgMCAxIDAgMUgzYS41LjUgMCAwIDEtLjUtLjV6TTIgMmgxMnMyIDAgMiAydjZzMCAyLTIgMkgycy0yIDAtMi0yVjRzMC0yIDItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVW1icmVsbGFGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBhLjUuNSAwIDAgMSAuNS41di41MTRDMTIuNjI1IDEuMjM4IDE2IDQuMjIgMTYgOGMwIDAgMCAuNS0uNS41LS4xNDkgMC0uMzUyLS4xNDUtLjM1Mi0uMTQ1bC0uMDA0LS4wMDQtLjAyNS0uMDIzYTMuNDg0IDMuNDg0IDAgMCAwLS41NTUtLjM5NEEzLjE2NiAzLjE2NiAwIDAgMCAxMyA3LjVjLS42MzggMC0xLjE3OC4yMTMtMS41NjQuNDM0YTMuNDg0IDMuNDg0IDAgMCAwLS41NTUuMzk0bC0uMDI1LjAyMy0uMDAzLjAwM3MtLjIwNC4xNDYtLjM1My4xNDYtLjM1Mi0uMTQ1LS4zNTItLjE0NWwtLjAwNC0uMDA0LS4wMjUtLjAyM2EzLjQ4NCAzLjQ4NCAwIDAgMC0uNTU1LS4zOTQgMy4zIDMuMyAwIDAgMC0xLjA2NC0uMzlWMTMuNUg4aC41di4wMzlsLS4wMDUuMDgzYTIuOTU4IDIuOTU4IDAgMCAxLS4yOTggMS4xMDIgMi4yNTcgMi4yNTcgMCAwIDEtLjc2My44OEM3LjA2IDE1Ljg1MSA2LjU4NyAxNiA2IDE2cy0xLjA2MS0uMTQ4LTEuNDM0LS4zOTZhMi4yNTUgMi4yNTUgMCAwIDEtLjc2My0uODggMi45NTggMi45NTggMCAwIDEtLjMwMi0xLjE4NXYtLjAyNWwtLjAwMS0uMDA5di0uMDAzczAtLjAwMi41LS4wMDJoLS41VjEzYS41LjUgMCAwIDEgMSAwdi41MDZsLjAwMy4wNDRhMS45NTggMS45NTggMCAwIDAgLjE5NS43MjZjLjA5NS4xOTEuMjMuMzY3LjQyMy40OTUuMTkuMTI3LjQ2Ni4yMjkuODc5LjIyOXMuNjg5LS4xMDIuODc5LS4yMjljLjE5My0uMTI4LjMyOC0uMzA0LjQyNC0uNDk1YTEuOTU4IDEuOTU4IDAgMCAwIC4xOTctLjc3VjcuNTQ0YTMuMyAzLjMgMCAwIDAtMS4wNjQuMzkgMy40ODIgMy40ODIgMCAwIDAtLjU4LjQxN2wtLjAwNC4wMDRTNS42NSA4LjUgNS41IDguNWMtLjE0OSAwLS4zNTItLjE0NS0uMzUyLS4xNDVsLS4wMDQtLjAwNGEzLjQ4MiAzLjQ4MiAwIDAgMC0uNTgtLjQxN0EzLjE2NiAzLjE2NiAwIDAgMCAzIDcuNWMtLjYzOCAwLTEuMTc3LjIxMy0xLjU2NC40MzRhMy40ODIgMy40ODIgMCAwIDAtLjU4LjQxN2wtLjAwNC4wMDRTLjY1IDguNS41IDguNUMwIDguNSAwIDggMCA4YzAtMy43OCAzLjM3NS02Ljc2MiA3LjUtNi45ODZWLjVBLjUuNSAwIDAgMSA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFVubG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMWEyIDIgMCAwIDAtMiAydjRhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjlhMiAyIDAgMCAxIDItMmg1VjNhMyAzIDAgMCAxIDYgMHY0YS41LjUgMCAwIDEtMSAwVjNhMiAyIDAgMCAwLTItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVmlueWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNmEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bTAgM2ExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek00IDhhNCA0IDAgMSAwIDggMCA0IDQgMCAwIDAtOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxWb2x1bWVEb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRhLjUuNSAwIDAgMC0uODEyLS4zOUw1LjgyNSA1LjVIMy41QS41LjUgMCAwIDAgMyA2djRhLjUuNSAwIDAgMCAuNS41aDIuMzI1bDIuMzYzIDEuODlBLjUuNSAwIDAgMCA5IDEyVjR6bTMuMDI1IDRhNC40ODYgNC40ODYgMCAwIDEtMS4zMTggMy4xODJMMTAgMTAuNDc1QTMuNDg5IDMuNDg5IDAgMCAwIDExLjAyNSA4IDMuNDkgMy40OSAwIDAgMCAxMCA1LjUyNWwuNzA3LS43MDdBNC40ODYgNC40ODYgMCAwIDEgMTIuMDI1IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFZvbHVtZU11dGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzE3IDMuNTVBLjUuNSAwIDAgMSA3IDR2OGEuNS41IDAgMCAxLS44MTIuMzlMMy44MjUgMTAuNUgxLjVBLjUuNSAwIDAgMSAxIDEwVjZhLjUuNSAwIDAgMSAuNS0uNWgyLjMyNWwyLjM2My0xLjg5YS41LjUgMCAwIDEgLjUyOS0uMDZ6bTcuMTM3IDIuMDk2YS41LjUgMCAwIDEgMCAuNzA4TDEyLjIwNyA4bDEuNjQ3IDEuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMMTEuNSA4LjcwN2wtMS42NDYgMS42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuNzkzIDggOS4xNDYgNi4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDhMMTEuNSA3LjI5M2wxLjY0Ni0xLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsVm9sdW1lT2ZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC43MTcgMy41NUEuNS41IDAgMCAxIDExIDR2OGEuNS41IDAgMCAxLS44MTIuMzlMNy44MjUgMTAuNUg1LjVBLjUuNSAwIDAgMSA1IDEwVjZhLjUuNSAwIDAgMSAuNS0uNWgyLjMyNWwyLjM2My0xLjg5YS41LjUgMCAwIDEgLjUyOS0uMDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFZvbHVtZVVwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41MzYgMTQuMDFBOC40NzMgOC40NzMgMCAwIDAgMTQuMDI2IDhhOC40NzMgOC40NzMgMCAwIDAtMi40OS02LjAxbC0uNzA4LjcwN0E3LjQ3NiA3LjQ3NiAwIDAgMSAxMy4wMjUgOGMwIDIuMDcxLS44NCAzLjk0Ni0yLjE5NyA1LjMwM2wuNzA4LjcwN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4xMjEgMTIuNTk2QTYuNDggNi40OCAwIDAgMCAxMi4wMjUgOGE2LjQ4IDYuNDggMCAwIDAtMS45MDQtNC41OTZsLS43MDcuNzA3QTUuNDgzIDUuNDgzIDAgMCAxIDExLjAyNSA4YTUuNDgzIDUuNDgzIDAgMCAxLTEuNjEgMy44OWwuNzA2LjcwNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjcwNyAxMS4xODJBNC40ODYgNC40ODYgMCAwIDAgMTAuMDI1IDhhNC40ODYgNC40ODYgMCAwIDAtMS4zMTgtMy4xODJMOCA1LjUyNUEzLjQ4OSAzLjQ4OSAwIDAgMSA5LjAyNSA4IDMuNDkgMy40OSAwIDAgMSA4IDEwLjQ3NWwuNzA3LjcwN3pNNi43MTcgMy41NUEuNS41IDAgMCAxIDcgNHY4YS41LjUgMCAwIDEtLjgxMi4zOUwzLjgyNSAxMC41SDEuNUEuNS41IDAgMCAxIDEgMTBWNmEuNS41IDAgMCAxIC41LS41aDIuMzI1bDIuMzYzLTEuODlhLjUuNSAwIDAgMSAuNTI5LS4wNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsV2FsbGV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMkExLjUgMS41IDAgMCAwIDAgMy41djJoNmEuNS41IDAgMCAxIC41LjVjMCAuMjUzLjA4LjY0NC4zMDYuOTU4LjIwNy4yODguNTU3LjU0MiAxLjE5NC41NDIuNjM3IDAgLjk4Ny0uMjU0IDEuMTk0LS41NDIuMjI2LS4zMTQuMzA2LS43MDUuMzA2LS45NThhLjUuNSAwIDAgMSAuNS0uNWg2di0yQTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA2LjVoLTUuNTUxYTIuNjc4IDIuNjc4IDAgMCAxLS40NDMgMS4wNDJDOS42MTMgOC4wODggOC45NjMgOC41IDggOC41Yy0uOTYzIDAtMS42MTMtLjQxMi0yLjAwNi0uOTU4QTIuNjc5IDIuNjc5IDAgMCAxIDUuNTUxIDYuNUgwdjZBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41di02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGxYQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTUuMzU0IDQuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgOGwtMi42NDcgMi42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOEw4IDguNzA3bDIuNjQ2IDIuNjQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4TDguNzA3IDhsMi42NDctMi42NDZhLjUuNSAwIDAgMC0uNzA4LS43MDhMOCA3LjI5MyA1LjM1NCA0LjY0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxsWERpYW1vbmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDUuNDM1Yy0uNTgtLjU4LTEuNTItLjU4LTIuMSAwTDQuMDQ3IDMuMzM5IDggNy4yOTNsMy45NTQtMy45NTRMOS4wNDkuNDM1em0zLjYxIDMuNjExTDguNzA4IDhsMy45NTQgMy45NTQgMi45MDQtMi45MDVjLjU4LS41OC41OC0xLjUxOSAwLTIuMDk4bC0yLjkwNC0yLjkwNXptLS43MDYgOC42MTRMOCA4LjcwOGwtMy45NTQgMy45NTQgMi45MDUgMi45MDRjLjU4LjU4IDEuNTE5LjU4IDIuMDk4IDBsMi45MDUtMi45MDR6bS04LjYxNC0uNzA2TDcuMjkyIDggMy4zMzkgNC4wNDYuNDM1IDYuOTUxYy0uNTguNTgtLjU4IDEuNTE5IDAgMi4wOThsMi45MDQgMi45MDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFhPY3RhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40Ni4xNDZBLjUuNSAwIDAgMCAxMS4xMDcgMEg0Ljg5M2EuNS41IDAgMCAwLS4zNTMuMTQ2TC4xNDYgNC41NEEuNS41IDAgMCAwIDAgNC44OTN2Ni4yMTRhLjUuNSAwIDAgMCAuMTQ2LjM1M2w0LjM5NCA0LjM5NGEuNS41IDAgMCAwIC4zNTMuMTQ2aDYuMjE0YS41LjUgMCAwIDAgLjM1My0uMTQ2bDQuMzk0LTQuMzk0YS41LjUgMCAwIDAgLjE0Ni0uMzUzVjQuODkzYS41LjUgMCAwIDAtLjE0Ni0uMzUzTDExLjQ2LjE0NnptLTYuMTA2IDQuNUw4IDcuMjkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhMOC43MDcgOGwyLjY0NyAyLjY0NmEuNS41IDAgMCAxLS43MDguNzA4TDggOC43MDdsLTIuNjQ2IDIuNjQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDcuMjkzIDggNC42NDYgNS4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsbFhTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMy4zNTQgNC42NDZMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JldmVyc2VCYWNrc3BhY2VSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODU0IDUuMTQ2YS41LjUgMCAwIDEgMCAuNzA4TDcuNzA3IDhsMi4xNDcgMi4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw3IDguNzA3bC0yLjE0NiAyLjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw2LjI5MyA4IDQuMTQ2IDUuODU0YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcgNy4yOTNsMi4xNDYtMi4xNDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmg3LjA4YTIgMiAwIDAgMCAxLjUxOS0uNjk4bDQuODQzLTUuNjUxYTEgMSAwIDAgMCAwLTEuMzAyTDEwLjYgMS43QTIgMiAwIDAgMCA5LjA4IDFIMnptNy4wOCAxYTEgMSAwIDAgMSAuNzYuMzVMMTQuNjgyIDhsLTQuODQ0IDUuNjVhMSAxIDAgMCAxLS43NTkuMzVIMmExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWg3LjA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JldmVyc2VMYXlvdXRTaWRlYmFySW5zZXRSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmExIDEgMCAwIDAtMSAxdjEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIMnptMTItMWEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0YTEgMSAwIDAgMC0xLTFoLTJhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xVjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmV2ZXJzZUxheW91dFNpZGViYXJSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjN6bS01LTF2MTJIMmExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWg5em0xIDBoMmExIDEgMCAwIDEgMSAxdjEwYTEgMSAwIDAgMS0xIDFoLTJWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZXZlcnNlTGF5b3V0VGV4dFNpZGViYXJSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgM2EuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMWg1em0wIDNhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTFoNXptLjUgMy41YS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIC41LS41em0tLjUgMi41YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xaDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMmEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMnpNNCAxdjE0SDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMnptMSAwaDlhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDVWMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZXZlcnNlTGF5b3V0VGV4dFdpbmRvd1JldmVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgNi41YS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIC41LS41em0wIDNhLjUuNSAwIDAgMC0uNS0uNWgtNWEuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgLjUtLjV6bS0uNSAyLjVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTFoNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDEyek0yIDFhMSAxIDAgMCAwLTEgMXYxaDE0VjJhMSAxIDAgMCAwLTEtMUgyek0xIDR2MTBhMSAxIDAgMCAwIDEgMWgyVjRIMXptNCAwdjExaDlhMSAxIDAgMCAwIDEtMVY0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQWxhcm1GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgLjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxSDl2MS4wN2E3LjAwMSA3LjAwMSAwIDAgMSAzLjI3NCAxMi40NzRsLjYwMS42MDJhLjUuNSAwIDAgMS0uNzA3LjcwOGwtLjc0Ni0uNzQ2QTYuOTcgNi45NyAwIDAgMSA4IDE2YTYuOTcgNi45NyAwIDAgMS0zLjQyMi0uODkybC0uNzQ2Ljc0NmEuNS41IDAgMCAxLS43MDctLjcwOGwuNjAyLS42MDJBNy4wMDEgNy4wMDEgMCAwIDEgNyAyLjA3VjFoLS41QS41LjUgMCAwIDEgNiAuNXptMi41IDVhLjUuNSAwIDAgMC0xIDB2My4zNjJsLTEuNDI5IDIuMzhhLjUuNSAwIDEgMCAuODU4LjUxNWwxLjUtMi41QS41LjUgMCAwIDAgOC41IDlWNS41ek0uODYgNS4zODdBMi41IDIuNSAwIDEgMSA0LjM4NyAxLjg2IDguMDM1IDguMDM1IDAgMCAwIC44NiA1LjM4N3pNMTEuNjEzIDEuODZhMi41IDIuNSAwIDEgMSAzLjUyNyAzLjUyNyA4LjAzNSA4LjAzNSAwIDAgMC0zLjUyNy0zLjUyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBbGFybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgNS41YS41LjUgMCAwIDAtMSAwdjMuMzYybC0xLjQyOSAyLjM4YS41LjUgMCAxIDAgLjg1OC41MTVsMS41LTIuNUEuNS41IDAgMCAwIDguNSA5VjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMGEuNS41IDAgMCAwIDAgMUg3djEuMDdhNy4wMDEgNy4wMDEgMCAwIDAtMy4yNzMgMTIuNDc0bC0uNjAyLjYwMmEuNS41IDAgMCAwIC43MDcuNzA4bC43NDYtLjc0NkE2Ljk3IDYuOTcgMCAwIDAgOCAxNmE2Ljk3IDYuOTcgMCAwIDAgMy40MjItLjg5MmwuNzQ2Ljc0NmEuNS41IDAgMCAwIC43MDctLjcwOGwtLjYwMS0uNjAyQTcuMDAxIDcuMDAxIDAgMCAwIDkgMi4wN1YxaC41YS41LjUgMCAwIDAgMC0xaC0zem0xLjAzOCAzLjAxOGE2LjA5MyA2LjA5MyAwIDAgMSAuOTI0IDAgNiA2IDAgMSAxLS45MjQgMHpNMCAzLjVjMCAuNzUzLjMzMyAxLjQyOS44NiAxLjg4N0E4LjAzNSA4LjAzNSAwIDAgMSA0LjM4NyAxLjg2IDIuNSAyLjUgMCAwIDAgMCAzLjV6TTEzLjUgMWMtLjc1MyAwLTEuNDI5LjMzMy0xLjg4Ny44NmE4LjAzNSA4LjAzNSAwIDAgMSAzLjUyNyAzLjUyN0EyLjUgMi41IDAgMCAwIDEzLjUgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBbGlnbkJvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcIndpZHRoXCI6XCI0XCIsXCJoZWlnaHRcIjpcIjEyXCIsXCJ4XCI6XCI2XCIsXCJ5XCI6XCIxXCIsXCJyeFwiOlwiMVwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxNGEuNS41IDAgMCAwIDAgMXYtMXptMTMgMWEuNS41IDAgMCAwIDAtMXYxem0tMTMgMGgxM3YtMWgtMTN2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBbGlnbkNlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhLjUuNSAwIDAgMSAuNS41VjZoLTFWMS41QS41LjUgMCAwIDEgOCAxem0wIDE0YS41LjUgMCAwIDEtLjUtLjVWMTBoMXY0LjVhLjUuNSAwIDAgMS0uNS41ek0yIDdhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBbGlnbkVuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNSAxYS41LjUgMCAwIDAtLjUuNXYxM2EuNS41IDAgMCAwIDEgMHYtMTNhLjUuNSAwIDAgMC0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA3YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQWxpZ25NaWRkbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxM2ExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjEwek0xIDhhLjUuNSAwIDAgMCAuNS41SDZ2LTFIMS41QS41LjUgMCAwIDAgMSA4em0xNCAwYS41LjUgMCAwIDEtLjUuNUgxMHYtMWg0LjVhLjUuNSAwIDAgMSAuNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0FsaWduU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuNSAxYS41LjUgMCAwIDEgLjUuNXYxM2EuNS41IDAgMCAxLTEgMHYtMTNhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDdhMSAxIDAgMCAxIDEtMWgxMGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBbGlnblRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicmVjdFwiLFwiYXR0clwiOntcIndpZHRoXCI6XCI0XCIsXCJoZWlnaHRcIjpcIjEyXCIsXCJyeFwiOlwiMVwiLFwidHJhbnNmb3JtXCI6XCJtYXRyaXgoMSAwIDAgLTEgNiAxNSlcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMmEuNS41IDAgMCAxIDAtMXYxem0xMy0xYS41LjUgMCAwIDEgMCAxVjF6bS0xMyAwaDEzdjFoLTEzVjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTMuNWEuNS41IDAgMCAwIC41LjVoMy43OTdhLjUuNSAwIDAgMCAuNDM5LS4yNkwxMSAzaDMuNWEuNS41IDAgMCAwIDAtMWgtMy43OTdhLjUuNSAwIDAgMC0uNDM5LjI2TDUgMTNIMS41YS41LjUgMCAwIDAtLjUuNXptMTAgMGEuNS41IDAgMCAwIC41LjVoM2EuNS41IDAgMCAwIDAtMWgtM2EuNS41IDAgMCAwLS41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXBwSW5kaWNhdG9yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAyQTMuNSAzLjUgMCAwIDAgMiA1LjV2NUEzLjUgMy41IDAgMCAwIDUuNSAxNGg1YTMuNSAzLjUgMCAwIDAgMy41LTMuNVY4YS41LjUgMCAwIDEgMSAwdjIuNWE0LjUgNC41IDAgMCAxLTQuNSA0LjVoLTVBNC41IDQuNSAwIDAgMSAxIDEwLjV2LTVBNC41IDQuNSAwIDAgMSA1LjUgMUg4YS41LjUgMCAwIDEgMCAxSDUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAzYTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMmEzIDMgMCAwIDEgMyAzdjZhMyAzIDAgMCAxLTMgM0g1YTMgMyAwIDAgMS0zLTNWNWEzIDMgMCAwIDEgMy0zaDZ6TTUgMWE0IDQgMCAwIDAtNCA0djZhNCA0IDAgMCAwIDQgNGg2YTQgNCAwIDAgMCA0LTRWNWE0IDQgMCAwIDAtNC00SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXBwbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTgyLjAwOEMxMS4xNDgtLjAzIDkuOTIzLjAyMyA4Ljg1NyAxLjE4Yy0xLjA2NiAxLjE1Ni0uOTAyIDIuNDgyLS44NzggMi41MTYuMDI0LjAzNCAxLjUyLjA4NyAyLjQ3NS0xLjI1OC45NTUtMS4zNDUuNzYyLTIuMzkxLjcyOC0yLjQzem0zLjMxNCAxMS43MzNjLS4wNDgtLjA5Ni0yLjMyNS0xLjIzNC0yLjExMy0zLjQyMi4yMTItMi4xODkgMS42NzUtMi43ODkgMS42OTgtMi44NTQuMDIzLS4wNjUtLjU5Ny0uNzktMS4yNTQtMS4xNTdhMy42OTIgMy42OTIgMCAwIDAtMS41NjMtLjQzNGMtLjEwOC0uMDAzLS40ODMtLjA5NS0xLjI1NC4xMTYtLjUwOC4xMzktMS42NTMuNTg5LTEuOTY4LjYwNy0uMzE2LjAxOC0xLjI1Ni0uNTIyLTIuMjY3LS42NjUtLjY0Ny0uMTI1LTEuMzMzLjEzMS0xLjgyNC4zMjgtLjQ5LjE5Ni0xLjQyMi43NTQtMi4wNzQgMi4yMzctLjY1MiAxLjQ4Mi0uMzExIDMuODMtLjA2NyA0LjU2LjI0NC43MjkuNjI1IDEuOTI0IDEuMjczIDIuNzk2LjU3Ni45ODQgMS4zNCAxLjY2NyAxLjY1OSAxLjg5OS4zMTkuMjMyIDEuMjE5LjM4NiAxLjg0My4wNjcuNTAyLS4zMDggMS40MDgtLjQ4NSAxLjc2Ni0uNDcyLjM1Ny4wMTMgMS4wNjEuMTU0IDEuNzgyLjUzOS41NzEuMTk3IDEuMTExLjExNSAxLjY1Mi0uMTA1LjU0MS0uMjIxIDEuMzI0LTEuMDU5IDIuMjM4LTIuNzU4LjM0Ny0uNzkuNTA1LTEuMjE3LjQ3My0xLjI4MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4xODIuMDA4QzExLjE0OC0uMDMgOS45MjMuMDIzIDguODU3IDEuMThjLTEuMDY2IDEuMTU2LS45MDIgMi40ODItLjg3OCAyLjUxNi4wMjQuMDM0IDEuNTIuMDg3IDIuNDc1LTEuMjU4Ljk1NS0xLjM0NS43NjItMi4zOTEuNzI4LTIuNDN6bTMuMzE0IDExLjczM2MtLjA0OC0uMDk2LTIuMzI1LTEuMjM0LTIuMTEzLTMuNDIyLjIxMi0yLjE4OSAxLjY3NS0yLjc4OSAxLjY5OC0yLjg1NC4wMjMtLjA2NS0uNTk3LS43OS0xLjI1NC0xLjE1N2EzLjY5MiAzLjY5MiAwIDAgMC0xLjU2My0uNDM0Yy0uMTA4LS4wMDMtLjQ4My0uMDk1LTEuMjU0LjExNi0uNTA4LjEzOS0xLjY1My41ODktMS45NjguNjA3LS4zMTYuMDE4LTEuMjU2LS41MjItMi4yNjctLjY2NS0uNjQ3LS4xMjUtMS4zMzMuMTMxLTEuODI0LjMyOC0uNDkuMTk2LTEuNDIyLjc1NC0yLjA3NCAyLjIzNy0uNjUyIDEuNDgyLS4zMTEgMy44My0uMDY3IDQuNTYuMjQ0LjcyOS42MjUgMS45MjQgMS4yNzMgMi43OTYuNTc2Ljk4NCAxLjM0IDEuNjY3IDEuNjU5IDEuODk5LjMxOS4yMzIgMS4yMTkuMzg2IDEuODQzLjA2Ny41MDItLjMwOCAxLjQwOC0uNDg1IDEuNzY2LS40NzIuMzU3LjAxMyAxLjA2MS4xNTQgMS43ODIuNTM5LjU3MS4xOTcgMS4xMTEuMTE1IDEuNjUyLS4xMDUuNTQxLS4yMjEgMS4zMjQtMS4wNTkgMi4yMzgtMi43NTguMzQ3LS43OS41MDUtMS4yMTcuNDczLTEuMjgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0FyY2hpdmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjY0MyAxNUMxMy45NzkgMTUgMTUgMTMuODQ1IDE1IDEyLjVWNUgxdjcuNUMxIDEzLjg0NSAyLjAyMSAxNSAzLjM1NyAxNWg5LjI4NnpNNS41IDdoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXpNLjggMWEuOC44IDAgMCAwLS44LjhWM2EuOC44IDAgMCAwIC44LjhoMTQuNEEuOC44IDAgMCAwIDE2IDNWMS44YS44LjggMCAwIDAtLjgtLjhILjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJjaGl2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMXY3LjVhMi41IDIuNSAwIDAgMS0yLjUgMi41aC05QTIuNSAyLjUgMCAwIDEgMSAxMi41VjVhMSAxIDAgMCAxLTEtMVYyem0yIDN2Ny41QTEuNSAxLjUgMCAwIDAgMy41IDE0aDlhMS41IDEuNSAwIDAgMCAxLjUtMS41VjVIMnptMTMtM0gxdjJoMTRWMnpNNSA3LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3c5MERlZ0Rvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuODU0IDE0Ljg1NGEuNS41IDAgMCAxLS43MDggMGwtNC00YS41LjUgMCAwIDEgLjcwOC0uNzA4TDQgMTMuMjkzVjMuNUEyLjUgMi41IDAgMCAxIDYuNSAxaDhhLjUuNSAwIDAgMSAwIDFoLThBMS41IDEuNSAwIDAgMCA1IDMuNXY5Ljc5M2wzLjE0Ni0zLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC00IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3c5MERlZ0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuMTQ2IDQuODU0YS41LjUgMCAwIDEgMC0uNzA4bDQtNGEuNS41IDAgMSAxIC43MDguNzA4TDIuNzA3IDRIMTIuNUEyLjUgMi41IDAgMCAxIDE1IDYuNXY4YS41LjUgMCAwIDEtMSAwdi04QTEuNSAxLjUgMCAwIDAgMTIuNSA1SDIuNzA3bDMuMTQ3IDMuMTQ2YS41LjUgMCAxIDEtLjcwOC43MDhsLTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvdzkwRGVnUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0Ljg1NCA0Ljg1NGEuNS41IDAgMCAwIDAtLjcwOGwtNC00YS41LjUgMCAwIDAtLjcwOC43MDhMMTMuMjkzIDRIMy41QTIuNSAyLjUgMCAwIDAgMSA2LjV2OGEuNS41IDAgMCAwIDEgMHYtOEExLjUgMS41IDAgMCAxIDMuNSA1aDkuNzkzbC0zLjE0NyAzLjE0NmEuNS41IDAgMCAwIC43MDguNzA4bDQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvdzkwRGVnVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuODU0IDEuMTQ2YS41LjUgMCAwIDAtLjcwOCAwbC00IDRhLjUuNSAwIDEgMCAuNzA4LjcwOEw0IDIuNzA3VjEyLjVBMi41IDIuNSAwIDAgMCA2LjUgMTVoOGEuNS41IDAgMCAwIDAtMWgtOEExLjUgMS41IDAgMCAxIDUgMTIuNVYyLjcwN2wzLjE0NiAzLjE0N2EuNS41IDAgMSAwIC43MDgtLjcwOGwtNC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93QmFyRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMSAzLjVhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNhLjUuNSAwIDAgMS0uNS0uNXpNOCA2YS41LjUgMCAwIDEgLjUuNXY1Ljc5M2wyLjE0Ni0yLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTMtM2EuNS41IDAgMCAxIC43MDgtLjcwOEw3LjUgMTIuMjkzVjYuNUEuNS41IDAgMCAxIDggNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0JhckxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjUgMTVhLjUuNSAwIDAgMS0uNS0uNXYtMTNhLjUuNSAwIDAgMSAxIDB2MTNhLjUuNSAwIDAgMS0uNS41ek0xMCA4YS41LjUgMCAwIDEtLjUuNUgzLjcwN2wyLjE0NyAyLjE0NmEuNS41IDAgMCAxLS43MDguNzA4bC0zLTNhLjUuNSAwIDAgMSAwLS43MDhsMy0zYS41LjUgMCAxIDEgLjcwOC43MDhMMy43MDcgNy41SDkuNWEuNS41IDAgMCAxIC41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dCYXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiA4YS41LjUgMCAwIDAgLjUuNWg1Ljc5M2wtMi4xNDcgMi4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLTNhLjUuNSAwIDAgMCAwLS43MDhsLTMtM2EuNS41IDAgMCAwLS43MDguNzA4TDEyLjI5MyA3LjVINi41QS41LjUgMCAwIDAgNiA4em0tMi41IDdhLjUuNSAwIDAgMS0uNS0uNXYtMTNhLjUuNSAwIDAgMSAxIDB2MTNhLjUuNSAwIDAgMS0uNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93QmFyVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTBhLjUuNSAwIDAgMCAuNS0uNVYzLjcwN2wyLjE0NiAyLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtMy0zYS41LjUgMCAwIDAtLjcwOCAwbC0zIDNhLjUuNSAwIDEgMCAuNzA4LjcwOEw3LjUgMy43MDdWOS41YS41LjUgMCAwIDAgLjUuNXptLTcgMi41YS41LjUgMCAwIDEgLjUtLjVoMTNhLjUuNSAwIDAgMSAwIDFoLTEzYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dDbG9ja3dpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggM2E1IDUgMCAxIDAgNC41NDYgMi45MTQuNS41IDAgMCAxIC45MDgtLjQxN0E2IDYgMCAxIDEgOCAydjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0LjQ2NlYuNTM0YS4yNS4yNSAwIDAgMSAuNDEtLjE5MmwyLjM2IDEuOTY2Yy4xMi4xLjEyLjI4NCAwIC4zODRMOC40MSA0LjY1OEEuMjUuMjUgMCAwIDEgOCA0LjQ2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0NvdW50ZXJjbG9ja3dpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggM2E1IDUgMCAxIDEtNC41NDYgMi45MTQuNS41IDAgMCAwLS45MDgtLjQxN0E2IDYgMCAxIDAgOCAydjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0LjQ2NlYuNTM0YS4yNS4yNSAwIDAgMC0uNDEtLjE5Mkw1LjIzIDIuMzA4YS4yNS4yNSAwIDAgMCAwIC4zODRsMi4zNiAxLjk2NkEuMjUuMjUgMCAwIDAgOCA0LjQ2NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHY1Ljc5M0w1LjM1NCA4LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDMgM2EuNS41IDAgMCAwIC43MDggMGwzLTNhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1Y0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dEb3duQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDhhNyA3IDAgMSAwIDE0IDBBNyA3IDAgMCAwIDEgOHptMTUgMEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek04LjUgNC41YS41LjUgMCAwIDAtMSAwdjUuNzkzTDUuMzU0IDguMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMyAzYS41LjUgMCAwIDAgLjcwOCAwbDMtM2EuNS41IDAgMCAwLS43MDgtLjcwOEw4LjUgMTAuMjkzVjQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25MZWZ0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMCAwIDhhOCA4IDAgMCAwIDE2IDB6bS01LjkwNC0yLjgwM2EuNS41IDAgMSAxIC43MDcuNzA3TDYuNzA3IDEwaDIuNzY4YS41LjUgMCAwIDEgMCAxSDUuNWEuNS41IDAgMCAxLS41LS41VjYuNTI1YS41LjUgMCAwIDEgMSAwdjIuNzY4bDQuMDk2LTQuMDk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93bkxlZnRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgOGE3IDcgMCAxIDAgMTQgMEE3IDcgMCAwIDAgMSA4em0xNSAwQTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS01LjkwNC0yLjg1NGEuNS41IDAgMSAxIC43MDcuNzA4TDYuNzA3IDkuOTVoMi43NjhhLjUuNSAwIDEgMSAwIDFINS41YS41LjUgMCAwIDEtLjUtLjVWNi40NzVhLjUuNSAwIDEgMSAxIDB2Mi43NjhsNC4wOTYtNC4wOTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dEb3duTGVmdFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMnptOC4wOTYtMTAuODAzTDYgOS4yOTNWNi41MjVhLjUuNSAwIDAgMC0xIDBWMTAuNWEuNS41IDAgMCAwIC41LjVoMy45NzVhLjUuNSAwIDAgMCAwLTFINi43MDdsNC4wOTYtNC4wOTZhLjUuNSAwIDEgMC0uNzA3LS43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dEb3duTGVmdFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUgMmExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWMnpNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem0xMC4wOTYgMy4xNDZhLjUuNSAwIDEgMSAuNzA3LjcwOEw2LjcwNyA5Ljk1aDIuNzY4YS41LjUgMCAxIDEgMCAxSDUuNWEuNS41IDAgMCAxLS41LS41VjYuNDc1YS41LjUgMCAxIDEgMSAwdjIuNzY4bDQuMDk2LTQuMDk3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93bkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTMuNWEuNS41IDAgMCAwIC41LjVoNmEuNS41IDAgMCAwIDAtMUgzLjcwN0wxMy44NTQgMi44NTRhLjUuNSAwIDAgMC0uNzA4LS43MDhMMyAxMi4yOTNWNy41YS41LjUgMCAwIDAtMSAwdjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dEb3duUmlnaHRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOGE4IDggMCAxIDEgMTYgMEE4IDggMCAwIDEgMCA4em01LjkwNC0yLjgwM2EuNS41IDAgMSAwLS43MDcuNzA3TDkuMjkzIDEwSDYuNTI1YS41LjUgMCAwIDAgMCAxSDEwLjVhLjUuNSAwIDAgMCAuNS0uNVY2LjUyNWEuNS41IDAgMCAwLTEgMHYyLjc2OEw1LjkwNCA1LjE5N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25SaWdodENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMSA4YTcgNyAwIDEgMCAxNCAwQTcgNyAwIDAgMCAxIDh6bTE1IDBBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNS44NTQgNS4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw5LjI0MyA5Ljk1SDYuNDc1YS41LjUgMCAxIDAgMCAxaDMuOTc1YS41LjUgMCAwIDAgLjUtLjVWNi40NzVhLjUuNSAwIDEgMC0xIDB2Mi43NjhMNS44NTQgNS4xNDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dEb3duUmlnaHRTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE2YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyek01LjkwNCA1LjE5NyAxMCA5LjI5M1Y2LjUyNWEuNS41IDAgMCAxIDEgMFYxMC41YS41LjUgMCAwIDEtLjUuNUg2LjUyNWEuNS41IDAgMCAxIDAtMWgyLjc2OEw1LjE5NyA1LjkwNGEuNS41IDAgMCAxIC43MDctLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25SaWdodFNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUgMmExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWMnpNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem01Ljg1NCAzLjE0NmEuNS41IDAgMSAwLS43MDguNzA4TDkuMjQzIDkuOTVINi40NzVhLjUuNSAwIDEgMCAwIDFoMy45NzVhLjUuNSAwIDAgMCAuNS0uNVY2LjQ3NWEuNS41IDAgMSAwLTEgMHYyLjc2OEw1Ljg1NCA1LjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQgMTMuNWEuNS41IDAgMCAxLS41LjVoLTZhLjUuNSAwIDAgMSAwLTFoNC43OTNMMi4xNDYgMi44NTRhLjUuNSAwIDEgMSAuNzA4LS43MDhMMTMgMTIuMjkzVjcuNWEuNS41IDAgMCAxIDEgMHY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93blNob3J0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDRhLjUuNSAwIDAgMSAuNS41djUuNzkzbDIuMTQ2LTIuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMy0zYS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSAxMC4yOTNWNC41QS41LjUgMCAwIDEgOCA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93blNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem02LjUgNC41djUuNzkzbDIuMTQ2LTIuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMy0zYS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSAxMC4yOTNWNC41YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93blNxdWFyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUgMmExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWMnpNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem04LjUgMi41YS41LjUgMCAwIDAtMSAwdjUuNzkzTDUuMzU0IDguMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMyAzYS41LjUgMCAwIDAgLjcwOCAwbDMtM2EuNS41IDAgMCAwLS43MDgtLjcwOEw4LjUgMTAuMjkzVjQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0Rvd25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuNSAxNWEuNS41IDAgMCAwIC41LS41VjIuNzA3bDMuMTQ2IDMuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC00LTRhLjUuNSAwIDAgMC0uNzA4IDBsLTQgNGEuNS41IDAgMSAwIC43MDguNzA4TDExIDIuNzA3VjE0LjVhLjUuNSAwIDAgMCAuNS41em0tNy0xNGEuNS41IDAgMCAxIC41LjV2MTEuNzkzbDMuMTQ2LTMuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTQgNGEuNS41IDAgMCAxLS43MDggMGwtNC00YS41LjUgMCAwIDEgLjcwOC0uNzA4TDQgMTMuMjkzVjEuNWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAxYS41LjUgMCAwIDEgLjUuNXYxMS43OTNsMy4xNDYtMy4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtNCA0YS41LjUgMCAwIDEtLjcwOCAwbC00LTRhLjUuNSAwIDAgMSAuNzA4LS43MDhMNy41IDEzLjI5M1YxLjVBLjUuNSAwIDAgMSA4IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dMZWZ0Q2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhOCA4IDAgMSAwIDAgMTZBOCA4IDAgMCAwIDggMHptMy41IDcuNWEuNS41IDAgMCAxIDAgMUg1LjcwN2wyLjE0NyAyLjE0NmEuNS41IDAgMCAxLS43MDguNzA4bC0zLTNhLjUuNSAwIDAgMSAwLS43MDhsMy0zYS41LjUgMCAxIDEgLjcwOC43MDhMNS43MDcgNy41SDExLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dMZWZ0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDhhNyA3IDAgMSAwIDE0IDBBNyA3IDAgMCAwIDEgOHptMTUgMEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tNC41LS41YS41LjUgMCAwIDEgMCAxSDUuNzA3bDIuMTQ3IDIuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTMtM2EuNS41IDAgMCAxIDAtLjcwOGwzLTNhLjUuNSAwIDEgMSAuNzA4LjcwOEw1LjcwNyA3LjVIMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0xlZnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMSAxMS41YS41LjUgMCAwIDAgLjUuNWgxMS43OTNsLTMuMTQ3IDMuMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhsNC00YS41LjUgMCAwIDAgMC0uNzA4bC00LTRhLjUuNSAwIDAgMC0uNzA4LjcwOEwxMy4yOTMgMTFIMS41YS41LjUgMCAwIDAtLjUuNXptMTQtN2EuNS41IDAgMCAxLS41LjVIMi43MDdsMy4xNDcgMy4xNDZhLjUuNSAwIDEgMS0uNzA4LjcwOGwtNC00YS41LjUgMCAwIDEgMC0uNzA4bDQtNGEuNS41IDAgMSAxIC43MDguNzA4TDIuNzA3IDRIMTQuNWEuNS41IDAgMCAxIC41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dMZWZ0U2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDhhLjUuNSAwIDAgMS0uNS41SDUuNzA3bDIuMTQ3IDIuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTMtM2EuNS41IDAgMCAxIDAtLjcwOGwzLTNhLjUuNSAwIDEgMSAuNzA4LjcwOEw1LjcwNyA3LjVIMTEuNWEuNS41IDAgMCAxIC41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dMZWZ0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMnptLTQuNS02LjVINS43MDdsMi4xNDctMi4xNDZhLjUuNSAwIDEgMC0uNzA4LS43MDhsLTMgM2EuNS41IDAgMCAwIDAgLjcwOGwzIDNhLjUuNSAwIDAgMCAuNzA4LS43MDhMNS43MDcgOC41SDExLjVhLjUuNSAwIDAgMCAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dMZWZ0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAyYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYyek0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTExLjUgNS41YS41LjUgMCAwIDEgMCAxSDUuNzA3bDIuMTQ3IDIuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTMtM2EuNS41IDAgMCAxIDAtLjcwOGwzLTNhLjUuNSAwIDEgMSAuNzA4LjcwOEw1LjcwNyA3LjVIMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd0xlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1IDhhLjUuNSAwIDAgMC0uNS0uNUgyLjcwN2wzLjE0Ny0zLjE0NmEuNS41IDAgMSAwLS43MDgtLjcwOGwtNCA0YS41LjUgMCAwIDAgMCAuNzA4bDQgNGEuNS41IDAgMCAwIC43MDgtLjcwOEwyLjcwNyA4LjVIMTQuNUEuNS41IDAgMCAwIDE1IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dSZXBlYXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTM0IDdoMy45MzJhLjI1LjI1IDAgMCAxIC4xOTIuNDFsLTEuOTY2IDIuMzZhLjI1LjI1IDAgMCAxLS4zODQgMGwtMS45NjYtMi4zNmEuMjUuMjUgMCAwIDEgLjE5Mi0uNDF6bS0xMSAyaDMuOTMyYS4yNS4yNSAwIDAgMCAuMTkyLS40MUwyLjY5MiA2LjIzYS4yNS4yNSAwIDAgMC0uMzg0IDBMLjM0MiA4LjU5QS4yNS4yNSAwIDAgMCAuNTM0IDl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggM2MtMS41NTIgMC0yLjk0LjcwNy0zLjg1NyAxLjgxOGEuNS41IDAgMSAxLS43NzEtLjYzNkE2LjAwMiA2LjAwMiAwIDAgMSAxMy45MTcgN0gxMi45QTUuMDAyIDUuMDAyIDAgMCAwIDggM3pNMy4xIDlhNS4wMDIgNS4wMDIgMCAwIDAgOC43NTcgMi4xODIuNS41IDAgMSAxIC43NzEuNjM2QTYuMDAyIDYuMDAyIDAgMCAxIDIuMDgzIDlIMy4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93UmV0dXJuTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNSAxLjVhLjUuNSAwIDAgMSAuNS41djQuOGEyLjUgMi41IDAgMCAxLTIuNSAyLjVIMi43MDdsMy4zNDcgMy4zNDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNC4yLTQuMmEuNS41IDAgMCAxIDAtLjcwOGw0LTRhLjUuNSAwIDEgMSAuNzA4LjcwOEwyLjcwNyA4LjNIMTIuNUExLjUgMS41IDAgMCAwIDE0IDYuOFYyYS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dSZXR1cm5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS41IDEuNUEuNS41IDAgMCAwIDEgMnY0LjhhMi41IDIuNSAwIDAgMCAyLjUgMi41aDkuNzkzbC0zLjM0NyAzLjM0NmEuNS41IDAgMCAwIC43MDguNzA4bDQuMi00LjJhLjUuNSAwIDAgMCAwLS43MDhsLTQtNGEuNS41IDAgMCAwLS43MDguNzA4TDEzLjI5MyA4LjNIMy41QTEuNSAxLjUgMCAwIDEgMiA2LjhWMmEuNS41IDAgMCAwLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93UmlnaHRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGE4IDggMCAxIDEgMCAxNkE4IDggMCAwIDEgOCAwek00LjUgNy41YS41LjUgMCAwIDAgMCAxaDUuNzkzbC0yLjE0NyAyLjE0NmEuNS41IDAgMCAwIC43MDguNzA4bDMtM2EuNS41IDAgMCAwIDAtLjcwOGwtMy0zYS41LjUgMCAxIDAtLjcwOC43MDhMMTAuMjkzIDcuNUg0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dSaWdodENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMSA4YTcgNyAwIDEgMCAxNCAwQTcgNyAwIDAgMCAxIDh6bTE1IDBBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNC41IDcuNWEuNS41IDAgMCAwIDAgMWg1Ljc5M2wtMi4xNDcgMi4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLTNhLjUuNSAwIDAgMCAwLS43MDhsLTMtM2EuNS41IDAgMSAwLS43MDguNzA4TDEwLjI5MyA3LjVINC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93UmlnaHRTaG9ydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCA4YS41LjUgMCAwIDEgLjUtLjVoNS43OTNMOC4xNDYgNS4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDhsMyAzYS41LjUgMCAwIDEgMCAuNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDguNUg0LjVBLjUuNSAwIDAgMSA0IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dSaWdodFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxNGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnYxMnptNC41LTYuNWg1Ljc5M0w4LjE0NiA1LjM1NGEuNS41IDAgMSAxIC43MDgtLjcwOGwzIDNhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDgtLjcwOEwxMC4yOTMgOC41SDQuNWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1JpZ2h0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAyYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYyek0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTQuNSA1LjVhLjUuNSAwIDAgMCAwIDFoNS43OTNsLTIuMTQ3IDIuMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhsMy0zYS41LjUgMCAwIDAgMC0uNzA4bC0zLTNhLjUuNSAwIDEgMC0uNzA4LjcwOEwxMC4yOTMgNy41SDQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1JpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDhhLjUuNSAwIDAgMSAuNS0uNWgxMS43OTNsLTMuMTQ3LTMuMTQ2YS41LjUgMCAwIDEgLjcwOC0uNzA4bDQgNGEuNS41IDAgMCAxIDAgLjcwOGwtNCA0YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEzLjI5MyA4LjVIMS41QS41LjUgMCAwIDEgMSA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93VXBDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAwIDAgOGE4IDggMCAwIDAgMTYgMHptLTcuNSAzLjVhLjUuNSAwIDAgMS0xIDBWNS43MDdMNS4zNTQgNy44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMy0zYS41LjUgMCAwIDEgLjcwOCAwbDMgM2EuNS41IDAgMCAxLS43MDguNzA4TDguNSA1LjcwN1YxMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93VXBDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgOGE3IDcgMCAxIDAgMTQgMEE3IDcgMCAwIDAgMSA4em0xNSAwQTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS03LjUgMy41YS41LjUgMCAwIDEtMSAwVjUuNzA3TDUuMzU0IDcuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDMtM2EuNS41IDAgMCAxIC43MDggMGwzIDNhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNS43MDdWMTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwTGVmdENpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tNS45MDQgMi44MDNhLjUuNSAwIDEgMCAuNzA3LS43MDdMNi43MDcgNmgyLjc2OGEuNS41IDAgMSAwIDAtMUg1LjVhLjUuNSAwIDAgMC0uNS41djMuOTc1YS41LjUgMCAwIDAgMSAwVjYuNzA3bDQuMDk2IDQuMDk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93VXBMZWZ0Q2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDhhNyA3IDAgMSAwIDE0IDBBNyA3IDAgMCAwIDEgOHptMTUgMEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tNS45MDQgMi44MDNhLjUuNSAwIDEgMCAuNzA3LS43MDdMNi43MDcgNmgyLjc2OGEuNS41IDAgMSAwIDAtMUg1LjVhLjUuNSAwIDAgMC0uNS41djMuOTc1YS41LjUgMCAwIDAgMSAwVjYuNzA3bDQuMDk2IDQuMDk2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93VXBMZWZ0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6bTguMDk2IDEwLjgwM0w2IDYuNzA3djIuNzY4YS41LjUgMCAwIDEtMSAwVjUuNWEuNS41IDAgMCAxIC41LS41aDMuOTc1YS41LjUgMCAxIDEgMCAxSDYuNzA3bDQuMDk2IDQuMDk2YS41LjUgMCAxIDEtLjcwNy43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dVcExlZnRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1IDJhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjJ6TTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptMTAuMDk2IDguODAzYS41LjUgMCAxIDAgLjcwNy0uNzA3TDYuNzA3IDZoMi43NjhhLjUuNSAwIDEgMCAwLTFINS41YS41LjUgMCAwIDAtLjUuNXYzLjk3NWEuNS41IDAgMCAwIDEgMFY2LjcwN2w0LjA5NiA0LjA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAyLjVhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAwIDEgMCAxSDMuNzA3bDEwLjE0NyAxMC4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwzIDMuNzA3VjguNWEuNS41IDAgMCAxLTEgMHYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwUmlnaHRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOGE4IDggMCAxIDAgMTYgMEE4IDggMCAwIDAgMCA4em01LjkwNCAyLjgwM2EuNS41IDAgMSAxLS43MDctLjcwN0w5LjI5MyA2SDYuNTI1YS41LjUgMCAxIDEgMC0xSDEwLjVhLjUuNSAwIDAgMSAuNS41djMuOTc1YS41LjUgMCAwIDEtMSAwVjYuNzA3bC00LjA5NiA0LjA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwUmlnaHRDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgOGE3IDcgMCAxIDAgMTQgMEE3IDcgMCAwIDAgMSA4em0xNSAwQTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTUuODU0IDEwLjgwM2EuNS41IDAgMSAxLS43MDgtLjcwN0w5LjI0MyA2SDYuNDc1YS41LjUgMCAxIDEgMC0xaDMuOTc1YS41LjUgMCAwIDEgLjUuNXYzLjk3NWEuNS41IDAgMSAxLTEgMFY2LjcwN2wtNC4wOTYgNC4wOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dVcFJpZ2h0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDEyek01LjkwNCAxMC44MDMgMTAgNi43MDd2Mi43NjhhLjUuNSAwIDAgMCAxIDBWNS41YS41LjUgMCAwIDAtLjUtLjVINi41MjVhLjUuNSAwIDEgMCAwIDFoMi43NjhsLTQuMDk2IDQuMDk2YS41LjUgMCAwIDAgLjcwNy43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dVcFJpZ2h0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAyYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYyek0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTUuODU0IDguODAzYS41LjUgMCAxIDEtLjcwOC0uNzA3TDkuMjQzIDZINi40NzVhLjUuNSAwIDEgMSAwLTFoMy45NzVhLjUuNSAwIDAgMSAuNS41djMuOTc1YS41LjUgMCAxIDEtMSAwVjYuNzA3bC00LjA5NiA0LjA5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0IDIuNWEuNS41IDAgMCAwLS41LS41aC02YS41LjUgMCAwIDAgMCAxaDQuNzkzTDIuMTQ2IDEzLjE0NmEuNS41IDAgMCAwIC43MDguNzA4TDEzIDMuNzA3VjguNWEuNS41IDAgMCAwIDEgMHYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwU2hvcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTJhLjUuNSAwIDAgMCAuNS0uNVY1LjcwN2wyLjE0NiAyLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtMy0zYS41LjUgMCAwIDAtLjcwOCAwbC0zIDNhLjUuNSAwIDEgMCAuNzA4LjcwOEw3LjUgNS43MDdWMTEuNWEuNS41IDAgMCAwIC41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dVcFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMnptNi41LTQuNVY1LjcwN2wyLjE0NiAyLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtMy0zYS41LjUgMCAwIDAtLjcwOCAwbC0zIDNhLjUuNSAwIDEgMCAuNzA4LjcwOEw3LjUgNS43MDdWMTEuNWEuNS41IDAgMCAwIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd1VwU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNSAyYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYyek0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTguNSA5LjVhLjUuNSAwIDAgMS0xIDBWNS43MDdMNS4zNTQgNy44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMy0zYS41LjUgMCAwIDEgLjcwOCAwbDMgM2EuNS41IDAgMCAxLS43MDguNzA4TDguNSA1LjcwN1YxMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Fycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTVhLjUuNSAwIDAgMCAuNS0uNVYyLjcwN2wzLjE0NiAzLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtNC00YS41LjUgMCAwIDAtLjcwOCAwbC00IDRhLjUuNSAwIDEgMCAuNzA4LjcwOEw3LjUgMi43MDdWMTQuNWEuNS41IDAgMCAwIC41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dzQW5nbGVDb250cmFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNLjE3MiAxNS44MjhhLjUuNSAwIDAgMCAuNzA3IDBsNC4wOTYtNC4wOTZWMTQuNWEuNS41IDAgMSAwIDEgMHYtMy45NzVhLjUuNSAwIDAgMC0uNS0uNUgxLjVhLjUuNSAwIDAgMCAwIDFoMi43NjhMLjE3MiAxNS4xMjFhLjUuNSAwIDAgMCAwIC43MDd6TTE1LjgyOC4xNzJhLjUuNSAwIDAgMC0uNzA3IDBsLTQuMDk2IDQuMDk2VjEuNWEuNS41IDAgMSAwLTEgMHYzLjk3NWEuNS41IDAgMCAwIC41LjVIMTQuNWEuNS41IDAgMCAwIDAtMWgtMi43NjhMMTUuODI4Ljg3OWEuNS41IDAgMCAwIDAtLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd3NBbmdsZUV4cGFuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS44MjggMTAuMTcyYS41LjUgMCAwIDAtLjcwNyAwbC00LjA5NiA0LjA5NlYxMS41YS41LjUgMCAwIDAtMSAwdjMuOTc1YS41LjUgMCAwIDAgLjUuNUg0LjVhLjUuNSAwIDAgMCAwLTFIMS43MzJsNC4wOTYtNC4wOTZhLjUuNSAwIDAgMCAwLS43MDd6bTQuMzQ0LTQuMzQ0YS41LjUgMCAwIDAgLjcwNyAwbDQuMDk2LTQuMDk2VjQuNWEuNS41IDAgMSAwIDEgMFYuNTI1YS41LjUgMCAwIDAtLjUtLjVIMTEuNWEuNS41IDAgMCAwIDAgMWgyLjc2OGwtNC4wOTYgNC4wOTZhLjUuNSAwIDAgMCAwIC43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dzQ29sbGFwc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgOGEuNS41IDAgMCAxIC41LS41aDEzYS41LjUgMCAwIDEgMCAxaC0xM0EuNS41IDAgMCAxIDEgOHptNy04YS41LjUgMCAwIDEgLjUuNXYzLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4IDBsLTItMmEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgNC4yOTNWLjVBLjUuNSAwIDAgMSA4IDB6bS0uNSAxMS43MDctMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhsMi0yYS41LjUgMCAwIDEgLjcwOCAwbDIgMmEuNS41IDAgMCAxLS43MDguNzA4TDguNSAxMS43MDdWMTUuNWEuNS41IDAgMCAxLTEgMHYtMy43OTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXJyb3dzRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDhhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDh6TTcuNjQ2LjE0NmEuNS41IDAgMCAxIC43MDggMGwyIDJhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgMS43MDdWNS41YS41LjUgMCAwIDEtMSAwVjEuNzA3TDYuMzU0IDIuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMnpNOCAxMGEuNS41IDAgMCAxIC41LjV2My43OTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOCAwbC0yLTJhLjUuNSAwIDAgMSAuNzA4LS43MDhMNy41IDE0LjI5M1YxMC41QS41LjUgMCAwIDEgOCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd3NGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjgyOCAxMC4xNzJhLjUuNSAwIDAgMC0uNzA3IDBsLTQuMDk2IDQuMDk2VjExLjVhLjUuNSAwIDAgMC0xIDB2My45NzVhLjUuNSAwIDAgMCAuNS41SDQuNWEuNS41IDAgMCAwIDAtMUgxLjczMmw0LjA5Ni00LjA5NmEuNS41IDAgMCAwIDAtLjcwN3ptNC4zNDQgMGEuNS41IDAgMCAxIC43MDcgMGw0LjA5NiA0LjA5NlYxMS41YS41LjUgMCAxIDEgMSAwdjMuOTc1YS41LjUgMCAwIDEtLjUuNUgxMS41YS41LjUgMCAwIDEgMC0xaDIuNzY4bC00LjA5Ni00LjA5NmEuNS41IDAgMCAxIDAtLjcwN3ptMC00LjM0NGEuNS41IDAgMCAwIC43MDcgMGw0LjA5Ni00LjA5NlY0LjVhLjUuNSAwIDEgMCAxIDBWLjUyNWEuNS41IDAgMCAwLS41LS41SDExLjVhLjUuNSAwIDAgMCAwIDFoMi43NjhsLTQuMDk2IDQuMDk2YS41LjUgMCAwIDAgMCAuNzA3em0tNC4zNDQgMGEuNS41IDAgMCAxLS43MDcgMEwxLjAyNSAxLjczMlY0LjVhLjUuNSAwIDAgMS0xIDBWLjUyNWEuNS41IDAgMCAxIC41LS41SDQuNWEuNS41IDAgMCAxIDAgMUgxLjczMmw0LjA5NiA0LjA5NmEuNS41IDAgMCAxIDAgLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBcnJvd3NNb3ZlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjY0Ni4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMiAyYS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDEuNzA3VjUuNWEuNS41IDAgMCAxLTEgMFYxLjcwN0w2LjM1NCAyLjg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwyLTJ6TTggMTBhLjUuNSAwIDAgMSAuNS41djMuNzkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTIgMmEuNS41IDAgMCAxLS43MDggMGwtMi0yYS41LjUgMCAwIDEgLjcwOC0uNzA4TDcuNSAxNC4yOTNWMTAuNUEuNS41IDAgMCAxIDggMTB6TS4xNDYgOC4zNTRhLjUuNSAwIDAgMSAwLS43MDhsMi0yYS41LjUgMCAxIDEgLjcwOC43MDhMMS43MDcgNy41SDUuNWEuNS41IDAgMCAxIDAgMUgxLjcwN2wxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4bC0yLTJ6TTEwIDhhLjUuNSAwIDAgMSAuNS0uNWgzLjc5M2wtMS4xNDctMS4xNDZhLjUuNSAwIDAgMSAuNzA4LS43MDhsMiAyYS41LjUgMCAwIDEgMCAuNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTQuMjkzIDguNUgxMC41QS41LjUgMCAwIDEgMTAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBc3BlY3RSYXRpb0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMi41di05QTEuNSAxLjUgMCAwIDEgMS41IDJoMTNBMS41IDEuNSAwIDAgMSAxNiAzLjV2OWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEzQTEuNSAxLjUgMCAwIDEgMCAxMi41ek0yLjUgNGEuNS41IDAgMCAwLS41LjV2M2EuNS41IDAgMCAwIDEgMFY1aDIuNWEuNS41IDAgMCAwIDAtMWgtM3ptMTEgOGEuNS41IDAgMCAwIC41LS41di0zYS41LjUgMCAwIDAtMSAwVjExaC0yLjVhLjUuNSAwIDAgMCAwIDFoM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBc3BlY3RSYXRpbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMuNUExLjUgMS41IDAgMCAxIDEuNSAyaDEzQTEuNSAxLjUgMCAwIDEgMTYgMy41djlhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xM0ExLjUgMS41IDAgMCAxIDAgMTIuNXYtOXpNMS41IDNhLjUuNSAwIDAgMC0uNS41djlhLjUuNSAwIDAgMCAuNS41aDEzYS41LjUgMCAwIDAgLjUtLjV2LTlhLjUuNSAwIDAgMC0uNS0uNWgtMTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0LjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxSDN2Mi41YS41LjUgMCAwIDEtMSAwdi0zem0xMiA3YS41LjUgMCAwIDEtLjUuNWgtM2EuNS41IDAgMCAxIDAtMUgxM1Y4LjVhLjUuNSAwIDAgMSAxIDB2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNBc3RlcmlzayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhMSAxIDAgMCAxIDEgMXY1LjI2OGw0LjU2Mi0yLjYzNGExIDEgMCAxIDEgMSAxLjczMkwxMCA4bDQuNTYyIDIuNjM0YTEgMSAwIDEgMS0xIDEuNzMyTDkgOS43MzJWMTVhMSAxIDAgMSAxLTIgMFY5LjczMmwtNC41NjIgMi42MzRhMSAxIDAgMSAxLTEtMS43MzJMNiA4IDEuNDM4IDUuMzY2YTEgMSAwIDAgMSAxLTEuNzMyTDcgNi4yNjhWMWExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0F0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjEwNiA3LjIyMmMwLTIuOTY3LTIuMjQ5LTUuMDMyLTUuNDgyLTUuMDMyLTMuMzUgMC01LjY0NiAyLjMxOC01LjY0NiA1LjcwMiAwIDMuNDkzIDIuMjM1IDUuNzA4IDUuNzYyIDUuNzA4Ljg2MiAwIDEuNjg5LS4xMjMgMi4zMDQtLjMzNXYtLjg2MmMtLjQzLjE5OS0xLjM1NC4zMjgtMi4yOS4zMjgtMi45MjYgMC00LjgxMy0xLjg4LTQuODEzLTQuNzk4IDAtMi44NDQgMS45MjEtNC44ODEgNC41OTQtNC44ODEgMi43MzUgMCA0LjYwOCAxLjY4OCA0LjYwOCA0LjE1NiAwIDEuNjgyLS41NTQgMi43NjktMS40MTYgMi43NjktLjQ5MiAwLS43NzItLjI4LS43NzItLjc2VjUuMjA2SDguOTIzdi44MzRoLS4xMWMtLjI2Ni0uNTk1LS44ODEtLjk2NC0xLjYtLjk2NC0xLjQgMC0yLjM3OCAxLjE2Mi0yLjM3OCAyLjgyMyAwIDEuNzM3Ljk1NyAyLjkwNiAyLjM3OSAyLjkwNi44IDAgMS40MTUtLjM5IDEuNzA5LTEuMDg3aC4xMWMuMDgxLjY3LjcwMyAxLjE0OCAxLjUwMyAxLjE0OCAxLjU3MiAwIDIuNTctMS40MTUgMi41Ny0zLjY0M3ptLTcuMTc3LjcwNGMwLTEuMTk3LjU0LTEuOTA3IDEuNDU2LTEuOTA3LjkzIDAgMS41MjQuNzM4IDEuNTI0IDEuOTA3UzguMzA4IDkuODQgNy4zNzEgOS44NGMtLjg5NSAwLTEuNDQyLS43MjUtMS40NDItMS45MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQXdhcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggMCAxLjY2OS44NjQgMS44NTguMjgyLjg0MiAxLjY4IDEuMzM3IDEuMzJMMTMuNCA2bC4zMDYgMS44NTQtMS4zMzcgMS4zMi0uODQyIDEuNjgtMS44NTguMjgyTDggMTJsLTEuNjY5LS44NjQtMS44NTgtLjI4Mi0uODQyLTEuNjgtMS4zMzctMS4zMkwyLjYgNmwtLjMwNi0xLjg1NCAxLjMzNy0xLjMyLjg0Mi0xLjY4TDYuMzMxLjg2NCA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMS43OTRWMTZsNC0xIDQgMXYtNC4yMDZsLTIuMDE4LjMwNkw4IDEzLjEyNiA2LjAxOCAxMi4xIDQgMTEuNzk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0F3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNjY5Ljg2NCA4IDAgNi4zMzEuODY0bC0xLjg1OC4yODItLjg0MiAxLjY4LTEuMzM3IDEuMzJMMi42IDZsLS4zMDYgMS44NTQgMS4zMzcgMS4zMi44NDIgMS42OCAxLjg1OC4yODJMOCAxMmwxLjY2OS0uODY0IDEuODU4LS4yODIuODQyLTEuNjggMS4zMzctMS4zMkwxMy40IDZsLjMwNi0xLjg1NC0xLjMzNy0xLjMyLS44NDItMS42OEw5LjY2OS44NjR6bTEuMTk2IDEuMTkzLjY4NCAxLjM2NSAxLjA4NiAxLjA3MkwxMi4zODcgNmwuMjQ4IDEuNTA2LTEuMDg2IDEuMDcyLS42ODQgMS4zNjUtMS41MS4yMjlMOCAxMC44NzRsLTEuMzU1LS43MDItMS41MS0uMjI5LS42ODQtMS4zNjUtMS4wODYtMS4wNzJMMy42MTQgNmwtLjI1LTEuNTA2IDEuMDg3LTEuMDcyLjY4NC0xLjM2NSAxLjUxLS4yMjlMOCAxLjEyNmwxLjM1Ni43MDIgMS41MDkuMjI5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTEuNzk0VjE2bDQtMSA0IDF2LTQuMjA2bC0yLjAxOC4zMDZMOCAxMy4xMjYgNi4wMTggMTIuMSA0IDExLjc5NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYyaDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0ydi0ySDJhMiAyIDAgMCAxLTItMlYyem0yLTFhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhY2tzcGFjZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNjgzIDNhMiAyIDAgMCAwLTItMmgtNy4wOGEyIDIgMCAwIDAtMS41MTkuNjk4TC4yNDEgNy4zNWExIDEgMCAwIDAgMCAxLjMwMmw0Ljg0MyA1LjY1QTIgMiAwIDAgMCA2LjYwMyAxNWg3LjA4YTIgMiAwIDAgMCAyLTJWM3pNNS44MjkgNS44NTRhLjUuNSAwIDEgMSAuNzA3LS43MDhsMi4xNDcgMi4xNDcgMi4xNDYtMi4xNDdhLjUuNSAwIDEgMSAuNzA3LjcwOEw5LjM5IDhsMi4xNDYgMi4xNDZhLjUuNSAwIDAgMS0uNzA3LjcwOEw4LjY4MyA4LjcwN2wtMi4xNDcgMi4xNDdhLjUuNSAwIDAgMS0uNzA3LS43MDhMNy45NzYgOCA1LjgyOSA1Ljg1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWNrc3BhY2VSZXZlcnNlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDNhMiAyIDAgMCAxIDItMmg3LjA4YTIgMiAwIDAgMSAxLjUxOS42OThsNC44NDMgNS42NTFhMSAxIDAgMCAxIDAgMS4zMDJMMTAuNiAxNC4zYTIgMiAwIDAgMS0xLjUyLjdIMmEyIDIgMCAwIDEtMi0yVjN6bTkuODU0IDIuODU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDcgNy4yOTMgNC44NTQgNS4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw2LjI5MyA4bC0yLjE0NyAyLjE0NmEuNS41IDAgMCAwIC43MDguNzA4TDcgOC43MDdsMi4xNDYgMi4xNDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMNy43MDcgOGwyLjE0Ny0yLjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWNrc3BhY2VSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODU0IDUuMTQ2YS41LjUgMCAwIDEgMCAuNzA4TDcuNzA3IDhsMi4xNDcgMi4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw3IDguNzA3bC0yLjE0NiAyLjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw2LjI5MyA4IDQuMTQ2IDUuODU0YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcgNy4yOTNsMi4xNDYtMi4xNDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmg3LjA4YTIgMiAwIDAgMCAxLjUxOS0uNjk4bDQuODQzLTUuNjUxYTEgMSAwIDAgMCAwLTEuMzAyTDEwLjYgMS43QTIgMiAwIDAgMCA5LjA4IDFIMnptNy4wOCAxYTEgMSAwIDAgMSAuNzYuMzVMMTQuNjgyIDhsLTQuODQ0IDUuNjVhMSAxIDAgMCAxLS43NTkuMzVIMmExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWg3LjA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhY2tzcGFjZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjgzIDUuMTQ2YS41LjUgMCAwIDAgMCAuNzA4TDcuOTc1IDhsLTIuMTQ3IDIuMTQ2YS41LjUgMCAwIDAgLjcwNy43MDhsMi4xNDctMi4xNDcgMi4xNDYgMi4xNDdhLjUuNSAwIDAgMCAuNzA3LS43MDhMOS4zOSA4bDIuMTQ2LTIuMTQ2YS41LjUgMCAwIDAtLjcwNy0uNzA4TDguNjgzIDcuMjkzIDYuNTM2IDUuMTQ2YS41LjUgMCAwIDAtLjcwNyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjY4MyAxYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMmgtNy4wOGEyIDIgMCAwIDEtMS41MTktLjY5OEwuMjQxIDguNjVhMSAxIDAgMCAxIDAtMS4zMDJMNS4wODQgMS43QTIgMiAwIDAgMSA2LjYwMyAxaDcuMDh6bS03LjA4IDFhMSAxIDAgMCAwLS43Ni4zNUwxIDhsNC44NDQgNS42NWExIDEgMCAwIDAgLjc1OS4zNWg3LjA4YTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xaC03LjA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlM0RGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjE1NyA1Ljk2OGgtLjg0NHY0LjA2aC44NDRjMS4xMTYgMCAxLjYyMS0uNjY3IDEuNjIxLTIuMDIgMC0xLjM1NC0uNTEtMi4wNC0xLjYyMS0yLjA0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY0em01LjE4NCA0LjM2OGMuNjQ2IDAgMS4wNTUuMzc4IDEuMDYuOS4wMDguNTM3LS40MjcuOTE5LTEuMDg2LjkxOS0uNTk4LS4wMDQtMS4wMzctLjMyNS0xLjA2OC0uNzU2SDNjLjAzLjkxNC43OTEgMS42ODggMi4xNTMgMS42ODggMS4yNCAwIDIuMjg1LS42NiAyLjI3Mi0xLjc5OC0uMDEzLS45NTMtLjc0Ny0xLjM4LTEuMjkyLTEuNDMydi0uMDYyYy40NC0uMDcgMS4xMjUtLjUyNyAxLjEwOC0xLjM3NS0uMDEzLS45MDYtLjgtMS41Ny0yLjA1My0xLjU2NS0xLjMxLjAwNS0yLjA0My43MzQtMi4wNzQgMS42N2gxLjEwM2MuMDIyLS4zOTEuMzgzLS43NTEuOTM2LS43NTEuNTMyIDAgLjkyOC4zMy45MjguODEzLjAwNC40NzktLjM4My44MzUtLjkyOC44MzVoLS42MzJ2LjkxNGguNjYzek04LjEyNiAxMWgyLjE4OUMxMi4xMjUgMTEgMTMgOS44OTMgMTMgNy45ODVjMC0xLjg5NC0uODYxLTIuOTg0LTIuNjg1LTIuOTg0SDguMTI2VjExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlM0QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41MiA4LjM2OGguNjY0Yy42NDYgMCAxLjA1NS4zNzggMS4wNi45LjAwOC41MzctLjQyNy45MTktMS4wODYuOTE5LS41OTgtLjAwNC0xLjAzNy0uMzI1LTEuMDY4LS43NTZIM2MuMDMuOTE0Ljc5MSAxLjY4OCAyLjE1MyAxLjY4OCAxLjI0IDAgMi4yODUtLjY2IDIuMjcyLTEuNzk4LS4wMTMtLjk1My0uNzQ3LTEuMzgtMS4yOTItMS40MzJ2LS4wNjJjLjQ0LS4wNyAxLjEyNS0uNTI3IDEuMTA4LTEuMzc1LS4wMTMtLjkwNi0uOC0xLjU3LTIuMDUzLTEuNTY1LTEuMzEuMDA1LTIuMDQzLjczNC0yLjA3NCAxLjY3aDEuMTAzYy4wMjItLjM5MS4zODMtLjc1MS45MzYtLjc1MS41MzIgMCAuOTI4LjMzLjkyOC44MTMuMDA0LjQ3OS0uMzgzLjgzNS0uOTI4LjgzNWgtLjYzMnYuOTE0em0zLjYwNi0zLjM2N1YxMWgyLjE4OUMxMi4xMjUgMTEgMTMgOS44OTMgMTMgNy45ODVjMC0xLjg5NC0uODYxLTIuOTg0LTIuNjg1LTIuOTg0SDguMTI2em0xLjE4Ny45NjdoLjg0NGMxLjExMiAwIDEuNjIxLjY4NiAxLjYyMSAyLjA0IDAgMS4zNTMtLjUwNSAyLjAyLTEuNjIxIDIuMDJoLS44NDR2LTQuMDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2ExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDEyek0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZTRLRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjU3NyA4Ljl2LjAzaDEuODI4VjUuODk4aC0uMDYyYTQ2Ljc4MSA0Ni43ODEgMCAwIDAtMS43NjYgMy4wMDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bTIuMzcyIDMuNzE1LjQzNS0uNzE0aDEuNzF2My45M2guNzMzdi45NTdoLS43MzNWMTFINS40MDVWOS44ODhIMi41di0uOTcxYy41NzQtMS4wNzcgMS4yMjUtMi4xNDIgMS44NzItMy4yMDJ6bTcuNzMtLjcxNGgxLjMwNmwtMi4xNCAyLjU4NEwxMy41IDExaC0xLjQyOGwtMS42NzktMi42MjQtLjYxNS43VjExSDguNTlWNS4wMDFoMS4xODd2Mi42ODZoLjA1N0wxMi4xMDIgNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZTRLIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuODA3IDUuMDAxQzQuMDIxIDYuMjk4IDMuMjAzIDcuNiAyLjUgOC45MTd2Ljk3MWgyLjkwNVYxMWgxLjExMlY5Ljg4OGguNzMzVjguOTNoLS43MzNWNS4wMDFoLTEuNzF6bS0xLjIzIDMuOTN2LS4wMzJhNDYuNzgxIDQ2Ljc4MSAwIDAgMSAxLjc2Ni0zLjAwMWguMDYyVjguOTNIMy41Nzd6bTkuODMxLTMuOTNoLTEuMzA2TDkuODM1IDcuNjg3aC0uMDU3VjVIOC41OXY2aDEuMTg3VjkuMDc1bC42MTUtLjY5OUwxMi4wNzIgMTFIMTMuNWwtMi4yMzItMy40MTUgMi4xNC0yLjU4NHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlOEtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuOSA2LjYwNWMwIC41MS40MDUuODY2Ljk1Ljg2Ni41NDUgMCAuOTQ1LS4zNTYuOTQ1LS44NjZzLS40LS44NTItLjk0NS0uODUyYy0uNTQ1IDAtLjk1LjM0My0uOTUuODUyem0tLjE5MiAyLjY2OGMwIC41ODkuNDkyLjk4NCAxLjE0Mi45ODQuNjQ2IDAgMS4xNDMtLjM5NSAxLjE0My0uOTg0UzUuNDk2IDguMjggNC44NSA4LjI4Yy0uNjUgMC0xLjE0Mi40MDQtMS4xNDIuOTkzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem01LjE3IDcuMzQ4YzAgMS4wNDEtLjkyNyAxLjc2Ni0yLjMzMyAxLjc2Ni0xLjQwNiAwLTIuMzEyLS43Mi0yLjMxMi0xLjc2MiAwLS45NTQuNzEyLTEuMzg0IDEuMjU3LTEuNDk0di0uMDUzYy0uNTEtLjE1NC0xLjAyLS41NTgtMS4wMi0xLjMzMSAwLS45MTQuODMxLTEuNTg3IDIuMDg4LTEuNTg3IDEuMjUzIDAgMi4wODMuNjczIDIuMDgzIDEuNTg3IDAgLjc4Mi0uNTIzIDEuMTgyLTEuMDIgMS4zMzF2LjA1M2MuNTQ1LjExIDEuMjU3LjU0NSAxLjI1NyAxLjQ5ek0xMi4xMDIgNWgxLjMwNmwtMi4xNCAyLjU4NCAyLjIzMiAzLjQxNWgtMS40MjhsLTEuNjc5LTIuNjI0LS42MTUuNjk5djEuOTI1SDguNTlWNWgxLjE4N3YyLjY4NWguMDU3TDEyLjEwMiA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlOEsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC44MzcgMTEuMTE0YzEuNDA2IDAgMi4zMzMtLjcyNSAyLjMzMy0xLjc2NiAwLS45NDUtLjcxMi0xLjM4LTEuMjU2LTEuNDl2LS4wNTNjLjQ5Ni0uMTUgMS4wMi0uNTUgMS4wMi0xLjMzMSAwLS45MTQtLjgzMS0xLjU4Ny0yLjA4NC0xLjU4Ny0xLjI1NyAwLTIuMDg3LjY3My0yLjA4NyAxLjU4NyAwIC43NzMuNTEgMS4xNzcgMS4wMiAxLjMzMXYuMDUzYy0uNTQ2LjExLTEuMjU4LjU0LTEuMjU4IDEuNDk0IDAgMS4wNDIuOTA2IDEuNzYyIDIuMzEyIDEuNzYyem0uMDEzLTMuNjQzYy0uNTQ1IDAtLjk1LS4zNTYtLjk1LS44NjZzLjQwNS0uODUyLjk1LS44NTJjLjU0NSAwIC45NDUuMzQzLjk0NS44NTIgMCAuNTEtLjQuODY2LS45NDUuODY2em0wIDIuNzg2Yy0uNjUgMC0xLjE0Mi0uMzk1LTEuMTQyLS45ODRTNC4yIDguMjggNC44NSA4LjI4Yy42NDYgMCAxLjE0My40MDQgMS4xNDMuOTkzcy0uNDk3Ljk4NC0xLjE0My45ODR6TTEzLjQwOCA1aC0xLjMwNkw5LjgzNSA3LjY4NWgtLjA1N1Y1SDguNTl2NS45OThoMS4xODdWOS4wNzVsLjYxNS0uNjk5IDEuNjc5IDIuNjIzSDEzLjVsLTIuMjMyLTMuNDE0TDEzLjQwOCA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VBZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzUgOC4zMzdjMC0uNjk5LS40Mi0xLjEzOC0xLjAwMS0xLjEzOC0uNTg0IDAtLjk1NC40NDQtLjk1NCAxLjIzOXYuNDUzYzAgLjguMzc0IDEuMjQ4Ljk3MiAxLjI0OC41ODggMCAuOTg0LS40NC45ODQtMS4ydi0uNjAyem0tNS40MTMuMjM3LS43MzQtMi40MjZINS4xNWwtLjczNCAyLjQyNmgxLjUyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem02LjIwOSA2LjMyYzAtMS4yOC42OTQtMi4wNDQgMS43NTMtMi4wNDQuNjU1IDAgMS4xNTYuMjk0IDEuMzM2Ljc2OWguMDUzdi0yLjM2aDEuMTZWMTFoLTEuMTM4di0uNzQ3aC0uMDU3Yy0uMTQ1LjQ3NC0uNjkuODA0LTEuMzY3LjgwNC0xLjA1NSAwLTEuNzQtLjc2NC0xLjc0LTIuMDQzdi0uNjk1em0tNC4wNCAxLjEzOEwzLjcgMTFIMi41bDIuMDEzLTUuOTk5SDUuOUw3LjkwNSAxMUg2LjY0NGwtLjQ3LTEuNTQySDQuMTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VBZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjcgMTEgLjQ3LTEuNTQyaDIuMDA0TDYuNjQ0IDExaDEuMjYxTDUuOTAxIDUuMDAxSDQuNTEzTDIuNSAxMWgxLjJ6bTEuNTAzLTQuODUyLjczNCAyLjQyNkg0LjQxNmwuNzM0LTIuNDI2aC4wNTN6bTQuNzU5LjEyOGMtMS4wNTkgMC0xLjc1My43NjUtMS43NTMgMi4wNDN2LjY5NWMwIDEuMjc5LjY4NSAyLjA0MyAxLjc0IDIuMDQzLjY3NyAwIDEuMjIyLS4zMyAxLjM2Ny0uODA0aC4wNTdWMTFoMS4xMzhWNC42ODVoLTEuMTZ2Mi4zNmgtLjA1M2MtLjE4LS40NzUtLjY4LS43Ny0xLjMzNi0uNzd6bS4zODcuOTIzYy41OCAwIDEuMDAyLjQ0IDEuMDAyIDEuMTM4di42MDJjMCAuNzYtLjM5NiAxLjItLjk4NCAxLjItLjU5OCAwLS45NzItLjQ0OS0uOTcyLTEuMjQ4di0uNDUzYzAtLjc5NS4zNy0xLjI0Ljk1NC0xLjI0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VBckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNi4wMzEgOC41NzQtLjczNC0yLjQyNmgtLjA1Mkw0LjUxIDguNTc0aDEuNTJ6bTMuNjQyLTIuNjQxdjEuOTM4aDEuMDMzYy42NiAwIDEuMDY4LS4zMTYgMS4wNjgtLjk1IDAtLjY0LS40MjItLjk4OC0xLjA1LS45ODhoLTEuMDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTQuMjY1IDUuNDU4aDIuMDA0TDYuNzM5IDExSDhMNS45OTYgNS4wMDFINC42MDdMMi41OTUgMTFoMS4ybC40Ny0xLjU0MnpNOC41IDV2NmgxLjE3M1Y4Ljc2M2gxLjA2NEwxMS43ODcgMTFoMS4zMjdMMTEuOTEgOC41ODNDMTIuNDU1IDguMzczIDEzIDcuNzc5IDEzIDYuOWMwLTEuMTQ3LS43NzMtMS45LTIuMTA1LTEuOUg4LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VBciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0zLjc5NCAxMSAuNDctMS41NDJINi4yN0w2LjczOSAxMUg4TDUuOTk2IDUuMDAxSDQuNjA3TDIuNTk1IDExaDEuMnptMS41MDMtNC44NTIuNzM0IDIuNDI2aC0xLjUybC43MzQtMi40MjZoLjA1MnptNS41OTgtMS4xNDdIOC41VjExaDEuMTczVjguNzYzaDEuMDY0TDExLjc4NyAxMWgxLjMyN0wxMS45MSA4LjU4M0MxMi40NTUgOC4zNzMgMTMgNy43NzkgMTMgNi45YzAtMS4xNDctLjc3My0xLjktMi4xMDUtMS45em0tMS4yMjIgMi44N1Y1LjkzM2gxLjA1Yy42MyAwIDEuMDUuMzQ3IDEuMDUuOTg5IDAgLjYzMy0uNDA4Ljk1LTEuMDY3Ljk1SDkuNjczelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VDY0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6bTMuMDI3IDQuMDAyYy0uODMgMC0xLjMxOS42NDItMS4zMTkgMS43NTN2Ljc0M2MwIDEuMTA3LjQ4IDEuNzI3IDEuMzE5IDEuNzI3LjY5IDAgMS4xMzgtLjQzNSAxLjE4Ni0xLjA1SDcuMzZ2LjExNGMtLjA1NyAxLjE0Ny0xLjAyOCAxLjkzOC0yLjM0MiAxLjkzOC0xLjYxMyAwLTIuNTE4LTEuMDI4LTIuNTE4LTIuNzI5di0uNzQ3QzIuNSA2LjA1MSAzLjQxNCA1IDUuMDE4IDVjMS4zMTggMCAyLjI5LjgxMyAyLjM0MiAydi4xMUg2LjIxM2MtLjA0OC0uNjM4LS41MDUtMS4xMDgtMS4xODYtMS4xMDh6bTYuMTQgMGMtLjgzMSAwLTEuMzE5LjY0Mi0xLjMxOSAxLjc1M3YuNzQzYzAgMS4xMDcuNDggMS43MjcgMS4zMTggMS43MjcuNjkgMCAxLjEzOS0uNDM1IDEuMTg3LTEuMDVIMTMuNXYuMTE0Yy0uMDU3IDEuMTQ3LTEuMDI4IDEuOTM4LTIuMzQyIDEuOTM4LTEuNjEzIDAtMi41MTgtMS4wMjgtMi41MTgtMi43Mjl2LS43NDdjMC0xLjcuOTE0LTIuNzUxIDIuNTE4LTIuNzUxIDEuMzE4IDAgMi4yOS44MTMgMi4zNDIgMnYuMTFoLTEuMTQ3Yy0uMDQ4LS42MzgtLjUwNS0xLjEwOC0xLjE4Ny0xLjEwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZUNjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNzA4IDcuNzU1YzAtMS4xMTEuNDg4LTEuNzUzIDEuMzE5LTEuNzUzLjY4MSAwIDEuMTM4LjQ3IDEuMTg2IDEuMTA3SDcuMzZWN2MtLjA1Mi0xLjE4Ni0xLjAyNC0yLTIuMzQyLTJDMy40MTQgNSAyLjUgNi4wNSAyLjUgNy43NTF2Ljc0N2MwIDEuNy45MDUgMi43MyAyLjUxOCAyLjczIDEuMzE0IDAgMi4yODUtLjc5MiAyLjM0Mi0xLjkzOXYtLjExNEg2LjIxM2MtLjA0OC42MTUtLjQ5NiAxLjA1LTEuMTg2IDEuMDUtLjg0IDAtMS4zMTktLjYyLTEuMzE5LTEuNzI3di0uNzQzem02LjE0IDBjMC0xLjExMS40ODgtMS43NTMgMS4zMTgtMS43NTMuNjgyIDAgMS4xMzkuNDcgMS4xODcgMS4xMDdIMTMuNVY3Yy0uMDUzLTEuMTg2LTEuMDI0LTItMi4zNDItMkM5LjU1NCA1IDguNjQgNi4wNSA4LjY0IDcuNzUxdi43NDdjMCAxLjcuOTA1IDIuNzMgMi41MTggMi43MyAxLjMxNCAwIDIuMjg1LS43OTIgMi4zNDItMS45Mzl2LS4xMTRoLTEuMTQ3Yy0uMDQ4LjYxNS0uNDk3IDEuMDUtMS4xODcgMS4wNS0uODM5IDAtMS4zMTgtLjYyLTEuMzE4LTEuNzI3di0uNzQzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFkZ2VIZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTMgNS45NjhoLS44NDN2NC4wNmguODQzYzEuMTE3IDAgMS42MjItLjY2NyAxLjYyMi0yLjAyIDAtMS4zNTQtLjUxLTIuMDQtMS42MjItMi4wNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptNS4zOTYgMy4wMDFWMTFINi4yMDlWOC40M0gzLjY4N1YxMUgyLjVWNS4wMDFoMS4xODd2Mi40NGgyLjUyMlY1aDEuMTg3ek04LjUgMTFWNS4wMDFoMi4xODhjMS44MjQgMCAyLjY4NSAxLjA5IDIuNjg1IDIuOTg0QzEzLjM3MyA5Ljg5MyAxMi41IDExIDEwLjY5IDExSDguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZUhkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMzk2IDExVjUuMDAxSDYuMjA5djIuNDRIMy42ODdWNUgyLjV2NmgxLjE4N1Y4LjQzaDIuNTIyVjExaDEuMTg3ek04LjUgNS4wMDFWMTFoMi4xODhjMS44MTEgMCAyLjY4NS0xLjEwNyAyLjY4NS0zLjAxNSAwLTEuODk0LS44Ni0yLjk4NC0yLjY4NC0yLjk4NEg4LjV6bTEuMTg3Ljk2N2guODQzYzEuMTEyIDAgMS42MjIuNjg2IDEuNjIyIDIuMDQgMCAxLjM1My0uNTA1IDIuMDItMS42MjIgMi4wMmgtLjg0M3YtNC4wNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlVG1GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0zLjI5NSAzLjk5NVYxMUg0LjEwNFY1Ljk5NWgtMS43VjVIN3YuOTk0SDUuMjk1ek04LjY5MiA3LjAxVjExSDcuNjMzVjUuMDAxaDEuMjA5bDEuNzEgMy44OTRoLjAzOWwxLjcxLTMuODk0SDEzLjVWMTFoLTEuMDcyVjcuMDFoLS4wNTdsLTEuNDIgMy4yMzloLS43NzNMOC43NSA3LjAwOGgtLjA1OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZVRtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMjk1IDExVjUuOTk1SDdWNUgyLjQwM3YuOTk0aDEuNzAxVjExaDEuMTl6bTMuMzk3IDBWNy4wMWguMDU4bDEuNDI4IDMuMjM5aC43NzNsMS40Mi0zLjI0aC4wNTdWMTFIMTMuNVY1LjAwMWgtMS4ybC0xLjcxIDMuODk0aC0uMDM5bC0xLjcxLTMuODk0SDcuNjM0VjExaDEuMDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2ExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDEyek0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZVZvRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4yOTYgOC4zOTR2LS43ODJjMC0xLjE1Ni0uNTcxLTEuNzM2LTEuMzYyLTEuNzM2LS43OTYgMC0xLjM2My41OC0xLjM2MyAxLjczNnYuNzgyYzAgMS4xNTYuNTY3IDEuNzMyIDEuMzYzIDEuNzMyLjc5IDAgMS4zNjItLjU3NiAxLjM2Mi0xLjczMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptMTEuNSA1LjYydi43N2MwIDEuNjkxLS45NjIgMi43MjQtMi41NjYgMi43MjQtMS42MDQgMC0yLjU3MS0xLjAzMy0yLjU3MS0yLjcyNHYtLjc3YzAtMS43MDQuOTY3LTIuNzMzIDIuNTctMi43MzMgMS42MDUgMCAyLjU2NyAxLjAzNyAyLjU2NyAyLjczNHpNNS45MzcgMTFINC41MDhMMi41IDUuMDAxaDEuMzc1TDUuMjIgOS43MDhoLjA1N0w2LjYxIDUuMDAxaDEuMzE4TDUuOTM3IDExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlVm8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41MDggMTFoMS40MjlsMS45OS01Ljk5OUg2LjYxTDUuMjc3IDkuNzA4SDUuMjJMMy44NzUgNS4wMDFIMi41TDQuNTA4IDExek0xMy41IDguMzl2LS43N2MwLTEuNjk2LS45NjItMi43MzMtMi41NjYtMi43MzMtMS42MDQgMC0yLjU3MSAxLjAyOS0yLjU3MSAyLjczNHYuNzY5YzAgMS42OTEuOTY3IDIuNzI0IDIuNTcgMi43MjQgMS42MDUgMCAyLjU2Ny0xLjAzMyAyLjU2Ny0yLjcyNHptLTEuMjA0LS43Nzh2Ljc4MmMwIDEuMTU2LS41NzEgMS43MzItMS4zNjIgMS43MzItLjc5NiAwLTEuMzYzLS41NzYtMS4zNjMtMS43MzJ2LS43ODJjMC0xLjE1Ni41NjctMS43MzYgMS4zNjMtMS43MzYuNzkgMCAxLjM2Mi41OCAxLjM2MiAxLjczNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlVnJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNjczIDUuOTMzdjEuOTM4aDEuMDMzYy42NiAwIDEuMDY4LS4zMTYgMS4wNjgtLjk1IDAtLjY0LS40MjItLjk4OC0xLjA1LS45ODhoLTEuMDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTUuOTM3IDcgMS45OS01Ljk5OUg2LjYxTDUuMjc3IDkuNzA4SDUuMjJMMy44NzUgNS4wMDFIMi41TDQuNTA4IDExaDEuNDI5ek04LjUgNS4wMDFWMTFoMS4xNzNWOC43NjNoMS4wNjRMMTEuNzg3IDExaDEuMzI3TDExLjkxIDguNTgzQzEyLjQ1NSA4LjM3MyAxMyA3Ljc3OSAxMyA2LjljMC0xLjE0Ny0uNzczLTEuOS0yLjEwNS0xLjlIOC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlVnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgM2ExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNGExIDEgMCAwIDEgMS0xaDEyek0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUwOCAxMWgxLjQyOWwxLjk5LTUuOTk5SDYuNjFMNS4yNzcgOS43MDhINS4yMkwzLjg3NSA1LjAwMUgyLjVMNC41MDggMTF6bTYuMzg3LTUuOTk5SDguNVYxMWgxLjE3M1Y4Ljc2M2gxLjA2NEwxMS43ODcgMTFoMS4zMjdMMTEuOTEgOC41ODNDMTIuNDU1IDguMzczIDEzIDcuNzc5IDEzIDYuOWMwLTEuMTQ3LS43NzMtMS45LTIuMTA1LTEuOXptLTEuMjIyIDIuODdWNS45MzNoMS4wNWMuNjMgMCAxLjA1LjM0NyAxLjA1Ljk4OSAwIC42MzMtLjQwOC45NS0xLjA2Ny45NUg5LjY3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWRnZVdjRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTEuNjY2IDEuODljLjY4MiAwIDEuMTM5LjQ3IDEuMTg3IDEuMTA3SDE0di0uMTFjLS4wNTMtMS4xODctMS4wMjQtMi0yLjM0Mi0yLTEuNjA0IDAtMi41MTggMS4wNS0yLjUxOCAyLjc1MXYuNzQ3YzAgMS43LjkwNSAyLjczIDIuNTE4IDIuNzMgMS4zMTQgMCAyLjI4NS0uNzkyIDIuMzQyLTEuOTM5di0uMTE0aC0xLjE0N2MtLjA0OC42MTUtLjQ5NyAxLjA1LTEuMTg3IDEuMDUtLjgzOSAwLTEuMzE4LS42Mi0xLjMxOC0xLjcyN3YtLjc0MmMwLTEuMTEyLjQ4OC0xLjc1NCAxLjMxOC0xLjc1NHptLTYuMTg4LjkyNmguMDQ0TDYuNTQyIDExaDEuMDA2TDkgNS4wMDFINy44MThsLS44MiA0LjM1NWgtLjA1Nkw1Ljk3IDUuMDAxaC0uOTRsLS45NzIgNC4zNTVoLS4wNTNsLS44MjctNC4zNTVIMkwzLjQ1MiAxMWgxLjAwNWwxLjAyLTQuMTg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZGdlV2MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMzQ4IDcuNjQzYzAtMS4xMTIuNDg4LTEuNzU0IDEuMzE4LTEuNzU0LjY4MiAwIDEuMTM5LjQ3IDEuMTg3IDEuMTA4SDE0di0uMTFjLS4wNTMtMS4xODctMS4wMjQtMi0yLjM0Mi0yLTEuNjA0IDAtMi41MTggMS4wNS0yLjUxOCAyLjc1MXYuNzQ3YzAgMS43LjkwNSAyLjczIDIuNTE4IDIuNzMgMS4zMTQgMCAyLjI4NS0uNzkyIDIuMzQyLTEuOTM5di0uMTE0aC0xLjE0N2MtLjA0OC42MTUtLjQ5NyAxLjA1LTEuMTg3IDEuMDUtLjgzOSAwLTEuMzE4LS42Mi0xLjMxOC0xLjcyN3YtLjc0MnpNNC40NTcgMTFsMS4wMi00LjE4NGguMDQ1TDYuNTQyIDExaDEuMDA2TDkgNS4wMDFINy44MThsLS44MiA0LjM1NWgtLjA1Nkw1Ljk3IDUuMDAxaC0uOTRsLS45NzIgNC4zNTVoLS4wNTNsLS44MjctNC4zNTVIMkwzLjQ1MiAxMWgxLjAwNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZ0NoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuNSAzLjVhMi41IDIuNSAwIDAgMC01IDBWNGg1di0uNXptMSAwVjRIMTV2MTBhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWNGgzLjV2LS41YTMuNSAzLjUgMCAxIDEgNyAwem0tLjY0NiA1LjM1NGEuNS41IDAgMCAwLS43MDgtLjcwOEw3LjUgMTAuNzkzIDYuMzU0IDkuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMS41IDEuNWEuNS41IDAgMCAwIC43MDggMGwzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFnQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjg1NCA4LjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAwIDEgLjcwOC0uNzA4TDcuNSAxMC43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIuNSAyLjUgMCAwIDEgMi41IDIuNVY0aC01di0uNUEyLjUgMi41IDAgMCAxIDggMXptMy41IDN2LS41YTMuNSAzLjUgMCAxIDAtNyAwVjRIMXYxMGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNGgtMy41ek0yIDVoMTJ2OWExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZ0Rhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC41IDMuNWEyLjUgMi41IDAgMCAwLTUgMFY0aDV2LS41em0xIDBWNEgxNXYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY0aDMuNXYtLjVhMy41IDMuNSAwIDEgMSA3IDB6TTYgOS41YS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWdEYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjUgMTBhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMi41IDIuNSAwIDAgMSAyLjUgMi41VjRoLTV2LS41QTIuNSAyLjUgMCAwIDEgOCAxem0zLjUgM3YtLjVhMy41IDMuNSAwIDEgMC03IDBWNEgxdjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY0aC0zLjV6TTIgNWgxMnY5YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFnRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMi41IDIuNSAwIDAgMSAyLjUgMi41VjRoLTV2LS41QTIuNSAyLjUgMCAwIDEgOCAxem0zLjUgM3YtLjVhMy41IDMuNSAwIDEgMC03IDBWNEgxdjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY0aC0zLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFnUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjUgMy41YTIuNSAyLjUgMCAwIDAtNSAwVjRoNXYtLjV6bTEgMFY0SDE1djEwYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjRoMy41di0uNWEzLjUgMy41IDAgMSAxIDcgMHpNOC41IDhhLjUuNSAwIDAgMC0xIDB2MS41SDZhLjUuNSAwIDAgMCAwIDFoMS41VjEyYS41LjUgMCAwIDAgMSAwdi0xLjVIMTBhLjUuNSAwIDAgMCAwLTFIOC41Vjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFnUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA3LjVhLjUuNSAwIDAgMSAuNS41djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTJhLjUuNSAwIDAgMS0xIDB2LTEuNUg2YS41LjUgMCAwIDEgMC0xaDEuNVY4YS41LjUgMCAwIDEgLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIuNSAyLjUgMCAwIDEgMi41IDIuNVY0aC01di0uNUEyLjUgMi41IDAgMCAxIDggMXptMy41IDN2LS41YTMuNSAzLjUgMCAxIDAtNyAwVjRIMXYxMGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNGgtMy41ek0yIDVoMTJ2OWExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZ1hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC41IDMuNWEyLjUgMi41IDAgMCAwLTUgMFY0aDV2LS41em0xIDBWNEgxNXYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY0aDMuNXYtLjVhMy41IDMuNSAwIDEgMSA3IDB6TTYuODU0IDguMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgMTBsLTEuMTQ3IDEuMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhMOCAxMC43MDdsMS4xNDYgMS4xNDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOC43MDcgMTBsMS4xNDctMS4xNDZhLjUuNSAwIDAgMC0uNzA4LS43MDhMOCA5LjI5MyA2Ljg1NCA4LjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYWdYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02LjE0NiA4LjE0NmEuNS41IDAgMCAxIC43MDggMEw4IDkuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgMTBsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDEwLjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgMTAgNi4xNDYgOC44NTRhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIuNSAyLjUgMCAwIDEgMi41IDIuNVY0aC01di0uNUEyLjUgMi41IDAgMCAxIDggMXptMy41IDN2LS41YTMuNSAzLjUgMCAxIDAtNyAwVjRIMXYxMGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNGgtMy41ek0yIDVoMTJ2OWExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMi41IDIuNSAwIDAgMSAyLjUgMi41VjRoLTV2LS41QTIuNSAyLjUgMCAwIDEgOCAxem0zLjUgM3YtLjVhMy41IDMuNSAwIDEgMC03IDBWNEgxdjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlY0aC0zLjV6TTIgNWgxMnY5YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFuayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IC45NSAxNC42MSA0aC44OWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVIMTV2N2EuNS41IDAgMCAxIC40ODUuMzc5bC41IDJBLjUuNSAwIDAgMSAxNS41IDE3SC41YS41LjUgMCAwIDEtLjQ4NS0uNjIxbC41LTJBLjUuNSAwIDAgMSAxIDE0VjdILjVhLjUuNSAwIDAgMS0uNS0uNXYtMkEuNS41IDAgMCAxIC41IDRoLjg5TDggLjk1ek0zLjc3NiA0aDguNDQ3TDggMi4wNSAzLjc3NiA0ek0yIDd2N2gxVjdIMnptMiAwdjdoMi41VjdINHptMy41IDB2N2gxVjdoLTF6bTIgMHY3SDEyVjdIOS41ek0xMyA3djdoMVY3aC0xem0yLTFWNUgxdjFoMTR6bS0uMzkgOUgxLjM5bC0uMjUgMWgxMy43MmwtLjI1LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFuazIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yNzcuMDg0YS41LjUgMCAwIDAtLjU1NCAwbC03LjUgNUEuNS41IDAgMCAwIC41IDZoMS44NzV2N0gxLjVhLjUuNSAwIDAgMCAwIDFoMTNhLjUuNSAwIDEgMCAwLTFoLS44NzVWNkgxNS41YS41LjUgMCAwIDAgLjI3Ny0uOTE2bC03LjUtNXpNMTIuMzc1IDZ2N2gtMS4yNVY2aDEuMjV6bS0yLjUgMHY3aC0xLjI1VjZoMS4yNXptLTIuNSAwdjdoLTEuMjVWNmgxLjI1em0tMi41IDB2N2gtMS4yNVY2aDEuMjV6TTggNGExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6TS41IDE1YS41LjUgMCAwIDAgMCAxaDE1YS41LjUgMCAxIDAgMC0xSC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhckNoYXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDExYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTF2LTN6bTUtNGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXY3YTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjd6bTUtNWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTFWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXJDaGFydExpbmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDJhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MTJoLjVhLjUuNSAwIDAgMSAwIDFILjVhLjUuNSAwIDAgMSAwLTFIMXYtM2ExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYzaDFWN2ExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXY3aDFWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXJDaGFydExpbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYxMmguNWEuNS41IDAgMCAxIDAgMUguNWEuNS41IDAgMCAxIDAtMUgxdi0zYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjNoMVY3YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjdoMVYyem0xIDEyaDJWMmgtMnYxMnptLTMgMFY3SDd2N2gyem0tNSAwdi0zSDJ2M2gyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JhckNoYXJ0U3RlcHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMGEuNS41IDAgMCAxIC41LjV2MTVhLjUuNSAwIDAgMS0xIDBWLjVBLjUuNSAwIDAgMSAuNSAwek0yIDEuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC00YS41LjUgMCAwIDEtLjUtLjV2LTF6bTIgNGEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTF6bTIgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC02YS41LjUgMCAwIDEtLjUtLjV2LTF6bTIgNGEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFyQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMUgydjNoMnYtM3ptNS00SDd2N2gyVjd6bTUtNXYxMmgtMlYyaDJ6bS0yLTFhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDJhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFoLTJ6TTYgN2ExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXY3YTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjd6bS01IDRhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2M2ExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMXYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXNrZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMDcxIDEuMjQzYS41LjUgMCAwIDEgLjg1OC41MTRMMy4zODMgNmg5LjIzNEwxMC4wNyAxLjc1N2EuNS41IDAgMSAxIC44NTgtLjUxNEwxMy43ODMgNkgxNS41YS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNUgxNXY1YTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjlILjVhLjUuNSAwIDAgMS0uNS0uNXYtMkEuNS41IDAgMCAxIC41IDZoMS43MTdMNS4wNyAxLjI0M3pNMy41IDEwLjVhLjUuNSAwIDEgMC0xIDB2M2EuNS41IDAgMCAwIDEgMHYtM3ptMi41IDBhLjUuNSAwIDEgMC0xIDB2M2EuNS41IDAgMCAwIDEgMHYtM3ptMi41IDBhLjUuNSAwIDEgMC0xIDB2M2EuNS41IDAgMCAwIDEgMHYtM3ptMi41IDBhLjUuNSAwIDEgMC0xIDB2M2EuNS41IDAgMCAwIDEgMHYtM3ptMi41IDBhLjUuNSAwIDEgMC0xIDB2M2EuNS41IDAgMCAwIDEgMHYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS43NTcgMS4wNzFhLjUuNSAwIDAgMSAuMTcyLjY4NkwzLjM4MyA2aDkuMjM0TDEwLjA3IDEuNzU3YS41LjUgMCAxIDEgLjg1OC0uNTE0TDEzLjc4MyA2SDE1YTEgMSAwIDAgMSAxIDF2MWExIDEgMCAwIDEtMSAxdjQuNWEyLjUgMi41IDAgMCAxLTIuNSAyLjVoLTlBMi41IDIuNSAwIDAgMSAxIDEzLjVWOWExIDEgMCAwIDEtMS0xVjdhMSAxIDAgMCAxIDEtMWgxLjIxN0w1LjA3IDEuMjQzYS41LjUgMCAwIDEgLjY4Ni0uMTcyek0yIDl2NC41QTEuNSAxLjUgMCAwIDAgMy41IDE1aDlhMS41IDEuNSAwIDAgMCAxLjUtMS41VjlIMnpNMSA3djFoMTRWN0gxem0zIDNhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0xIDB2LTNBLjUuNSAwIDAgMSA0IDEwem0yIDBhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0xIDB2LTNBLjUuNSAwIDAgMSA2IDEwem0yIDBhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0xIDB2LTNBLjUuNSAwIDAgMSA4IDEwem0yIDBhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0xIDB2LTNhLjUuNSAwIDAgMSAuNS0uNXptMiAwYS41LjUgMCAwIDEgLjUuNXYzYS41LjUgMCAwIDEtMSAwdi0zYS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFza2V0MkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS45MjkgMS43NTdhLjUuNSAwIDEgMC0uODU4LS41MTRMMi4yMTcgNkguNWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoLjYyM2wxLjg0NCA2LjQ1NkEuNzUuNzUgMCAwIDAgMy42OSAxNWg4LjYyMmEuNzUuNzUgMCAwIDAgLjcyMi0uNTQ0TDE0Ljg3NyA4aC42MjNhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xLjcxN0wxMC45MyAxLjI0M2EuNS41IDAgMSAwLS44NTguNTE0TDEyLjYxNyA2SDMuMzgzTDUuOTMgMS43NTd6TTQgMTBhMSAxIDAgMCAxIDIgMHYyYTEgMSAwIDEgMS0yIDB2LTJ6bTMgMGExIDEgMCAwIDEgMiAwdjJhMSAxIDAgMSAxLTIgMHYtMnptNC0xYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAxIDEtMiAwdi0yYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmFza2V0MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEwYTEgMSAwIDAgMSAyIDB2MmExIDEgMCAwIDEtMiAwdi0yem0zIDBhMSAxIDAgMCAxIDIgMHYyYTEgMSAwIDAgMS0yIDB2LTJ6bTMgMGExIDEgMCAxIDEgMiAwdjJhMSAxIDAgMCAxLTIgMHYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc1NyAxLjA3MWEuNS41IDAgMCAxIC4xNzIuNjg2TDMuMzgzIDZoOS4yMzRMMTAuMDcgMS43NTdhLjUuNSAwIDEgMSAuODU4LS41MTRMMTMuNzgzIDZIMTUuNWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLS42MjNsLTEuODQ0IDYuNDU2YS43NS43NSAwIDAgMS0uNzIyLjU0NEgzLjY5YS43NS43NSAwIDAgMS0uNzIyLS41NDRMMS4xMjMgOEguNWEuNS41IDAgMCAxLS41LS41di0xQS41LjUgMCAwIDEgLjUgNmgxLjcxN0w1LjA3IDEuMjQzYS41LjUgMCAwIDEgLjY4Ni0uMTcyek0yLjE2MyA4bDEuNzE0IDZoOC4yNDZsMS43MTQtNkgyLjE2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXNrZXQzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01Ljc1NyAxLjA3MWEuNS41IDAgMCAxIC4xNzIuNjg2TDMuMzgzIDZoOS4yMzRMMTAuMDcgMS43NTdhLjUuNSAwIDEgMSAuODU4LS41MTRMMTMuNzgzIDZIMTUuNWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVILjVhLjUuNSAwIDAgMS0uNS0uNXYtMUEuNS41IDAgMCAxIC41IDZoMS43MTdMNS4wNyAxLjI0M2EuNS41IDAgMCAxIC42ODYtLjE3MnpNMi40NjggMTUuNDI2Ljk0MyA5aDE0LjExNGwtMS41MjUgNi40MjZhLjc1Ljc1IDAgMCAxLS43MjkuNTc0SDMuMTk3YS43NS43NSAwIDAgMS0uNzMtLjU3NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXNrZXQzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzU3IDEuMDcxYS41LjUgMCAwIDEgLjE3Mi42ODZMMy4zODMgNmg5LjIzNEwxMC4wNyAxLjc1N2EuNS41IDAgMSAxIC44NTgtLjUxNEwxMy43ODMgNkgxNS41YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNUguNWEuNS41IDAgMCAxLS41LS41di0xQS41LjUgMCAwIDEgLjUgNmgxLjcxN0w1LjA3IDEuMjQzYS41LjUgMCAwIDEgLjY4Ni0uMTcyek0zLjM5NCAxNWwtMS40OC02aC0uOTdsMS41MjUgNi40MjZhLjc1Ljc1IDAgMCAwIC43MjkuNTc0aDkuNjA2YS43NS43NSAwIDAgMCAuNzMtLjU3NEwxNS4wNTYgOWgtLjk3MmwtMS40NzkgNmgtOS4yMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXR0ZXJ5Q2hhcmdpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41ODUgMi41NjhhLjUuNSAwIDAgMSAuMjI2LjU4TDguNjc3IDYuODMyaDEuOTlhLjUuNSAwIDAgMSAuMzY0Ljg0M2wtNS4zMzQgNS42NjdhLjUuNSAwIDAgMS0uODQyLS40OUw1Ljk5IDkuMTY3SDRhLjUuNSAwIDAgMS0uMzY0LS44NDNsNS4zMzMtNS42NjdhLjUuNSAwIDAgMSAuNjE2LS4wOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDRoNC4zMzJsLS45NCAxSDJhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDAgMCAxIDFoMi4zOGwtLjMwOCAxSDJhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2aDIuNDVMMi45MDggNy42MzlBMS41IDEuNSAwIDAgMCAzLjMxMyAxMEgyVjZ6bTguNTk1LTItLjMwOCAxSDEyYTEgMSAwIDAgMSAxIDF2NGExIDEgMCAwIDEtMSAxSDkuMjc2bC0uOTQyIDFIMTJhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJoLTEuNDA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEwaC0xLjc4M2wxLjU0Mi0xLjYzOWMuMDk3LS4xMDMuMTc4LS4yMTguMjQxLS4zNFYxMHptMC0zLjM1NFY2aC0uNjQ2YTEuNSAxLjUgMCAwIDEgLjY0Ni42NDZ6TTE2IDhhMS41IDEuNSAwIDAgMS0xLjUgMS41di0zQTEuNSAxLjUgMCAwIDEgMTYgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCYXR0ZXJ5RnVsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZoMTB2NEgyVjZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0YTIgMiAwIDAgMC0yIDJ2NGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0ySDJ6bTEwIDFhMSAxIDAgMCAxIDEgMXY0YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjZhMSAxIDAgMCAxIDEtMWgxMHptNCAzYTEuNSAxLjUgMCAwIDEtMS41IDEuNXYtM0ExLjUgMS41IDAgMCAxIDE2IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmF0dGVyeUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2aDV2NEgyVjZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0YTIgMiAwIDAgMC0yIDJ2NGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0ySDJ6bTEwIDFhMSAxIDAgMCAxIDEgMXY0YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjZhMSAxIDAgMCAxIDEtMWgxMHptNCAzYTEuNSAxLjUgMCAwIDEtMS41IDEuNXYtM0ExLjUgMS41IDAgMCAxIDE2IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmF0dGVyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDZhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAydjRhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNnptMi0xYTEgMSAwIDAgMC0xIDF2NGExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWNmExIDEgMCAwIDAtMS0xSDJ6bTE0IDNhMS41IDEuNSAwIDAgMS0xLjUgMS41di0zQTEuNSAxLjUgMCAwIDEgMTYgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCZWhhbmNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjU0IDNjLjQ2MSAwIC44ODcuMDM1IDEuMjc4LjE0LjM5LjA3LjcxMS4yMTYuOTk2LjM5MS4yODYuMTc2LjQ5Ny40MjYuNjQxLjc0Ny4xNC4zMi4yMTYuNzExLjIxNiAxLjEzNyAwIC40OTYtLjEwNi45MjItLjM1NiAxLjI0Mi0uMjE1LjMyLS41NjYuNjA2LS45OTcuODE3LjYwNi4xNzYgMS4wNjcuNDk2IDEuMzQ4LjkyMi4yODEuNDI2LjQ2MS45NTcuNDYxIDEuNTYzIDAgLjQ5Ni0uMTA1LjkyMi0uMjg1IDEuMjc4YTIuMzE3IDIuMzE3IDAgMCAxLS43ODIuODg3Yy0uMzIuMjE1LS43MTEuMzktMS4xMzcuNDk2YTUuMzI5IDUuMzI5IDAgMCAxLTEuMjc4LjE3NkwwIDEyLjgwM1YzaDQuNjU0em0tLjI4NSAzLjk3OGMuMzkgMCAuNzEtLjEwNS45NTctLjI4NS4yNDYtLjE4LjM1NS0uNDk3LjM1NS0uODg3IDAtLjIxNi0uMDM1LS40MjYtLjEwNS0uNTY3YS45ODEuOTgxIDAgMCAwLS4zMi0uMzU1IDEuODQgMS44NCAwIDAgMC0uNDYxLS4xNzZjLS4xNzYtLjAzNS0uMzU2LS4wMzUtLjU2Ny0uMDM1SDIuMTd2Mi4zMWMwLS4wMDUgMi4yLS4wMDUgMi4yLS4wMDV6bS4xMDUgNC4xOTNjLjIxNSAwIC40MjYtLjAzNS42MDYtLjA3LjE3Ni0uMDM1LjM1Ni0uMTA2LjQ5Ni0uMjE2cy4yNS0uMjE1LjM1Ni0uMzljLjA3LS4xNzYuMTQtLjM5MS4xNC0uNjQxIDAtLjQ5Ni0uMTQtLjg1Mi0uNDI2LTEuMTAyLS4yODUtLjIxNS0uNjc2LS4zMi0xLjEzNy0uMzJIMi4xN3YyLjczNGgyLjMwNXYuMDA1em02Ljg1OC0uMDM1Yy4yODYuMjg1LjcxMS40MjYgMS4yNzguNDI2LjM5IDAgLjc0Ni0uMTA2IDEuMDMyLS4yODYuMjg1LS4yMTUuNDYtLjQyNi41My0uNjRoMS43NGMtLjI4Ni44NTEtLjcxMiAxLjQ1Ny0xLjI3OCAxLjg0OC0uNTY2LjM1NS0xLjI0My41NjYtMi4wNi41NjZhNC4xMzUgNC4xMzUgMCAwIDEtMS41MjctLjI4NSAyLjgyNyAyLjgyNyAwIDAgMS0xLjEzNy0uNzgyIDIuODUxIDIuODUxIDAgMCAxLS43MTItMS4xNzJjLS4xNzUtLjQ2MS0uMjUtLjk1Ny0uMjUtMS41MjggMC0uNTMxLjA3LTEuMDMyLjI1LTEuNDkzLjE4LS40Ni40MjYtLjg1Mi43NDctMS4yMDcuMzItLjMyLjcxMS0uNjA2IDEuMTM3LS43ODJhNC4wMTggNC4wMTggMCAwIDEgMS40OTMtLjI4NWMuNjA2IDAgMS4xMzcuMTA1IDEuNTk4LjM1NS40Ni4yNS44MTcuNTMyIDEuMTAyLjk1OC4yODUuMzkuNDk2Ljg1MS42NDEgMS4zNDguMDcuNDk2LjEwNS45OTYuMDcgMS41NjNoLTUuMTVjMCAuNTguMjEgMS4xMS40OTYgMS4zOTZ6bTIuMjQtMy43MzJjLS4yNS0uMjUtLjY0Mi0uMzkxLTEuMTAzLS4zOTEtLjMyIDAtLjU2Ni4wNy0uNzgxLjE3Ni0uMjE1LjEwNS0uMzU2LjI1LS40OTYuMzlhLjk1Ny45NTcgMCAwIDAtLjI1LjQ5N2MtLjAzNi4xNzUtLjA3LjMyLS4wNy40NmgzLjE5NmMtLjA3LS41MjYtLjI1LS44ODItLjQ5Ny0xLjEzMnptLTMuMTI3LTMuNzI4aDMuOTc4di45NTdoLTMuOTc4di0uOTU3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JlbGxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZhMiAyIDAgMCAwIDItMkg2YTIgMiAwIDAgMCAyIDJ6bS45OTUtMTQuOTAxYTEgMSAwIDEgMC0xLjk5IDBBNS4wMDIgNS4wMDIgMCAwIDAgMyA2YzAgMS4wOTgtLjUgNi0yIDdoMTRjLTEuNS0xLTItNS45MDItMi03IDAtMi40Mi0xLjcyLTQuNDQtNC4wMDUtNC45MDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmVsbFNsYXNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjE2NCAxNEgxNWMtMS41LTEtMi01LjkwMi0yLTcgMC0uMjY0LS4wMi0uNTIzLS4wNi0uNzc2TDUuMTY0IDE0em02LjI4OC0xMC42MTdBNC45ODggNC45ODggMCAwIDAgOC45OTUgMi4xYTEgMSAwIDEgMC0xLjk5IDBBNS4wMDIgNS4wMDIgMCAwIDAgMyA3YzAgLjg5OC0uMzM1IDQuMzQyLTEuMjc4IDYuMTEzbDkuNzMtOS43M3pNMTAgMTVhMiAyIDAgMSAxLTQgMGg0em0tOS4zNzUuNjI1YS41My41MyAwIDAgMCAuNzUuNzVsMTQuNzUtMTQuNzVhLjUzLjUzIDAgMCAwLS43NS0uNzVMLjYyNSAxNS42MjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmVsbFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMTY0IDE0SDE1Yy0uMjk5LS4xOTktLjU1Ny0uNTUzLS43OC0xLS45LTEuOC0xLjIyLTUuMTItMS4yMi02IDAtLjI2NC0uMDItLjUyMy0uMDYtLjc3NmwtLjkzOC45MzhjLjAyLjcwOC4xNTcgMi4xNTQuNDU3IDMuNTguMTYxLjc2Ny4zNzcgMS41NjYuNjYzIDIuMjU4SDYuMTY0bC0xIDF6bTUuNTgxLTkuOTFhMy45ODYgMy45ODYgMCAwIDAtMS45NDgtMS4wMUw4IDIuOTE3bC0uNzk3LjE2MUE0LjAwMiA0LjAwMiAwIDAgMCA0IDdjMCAuNjI4LS4xMzQgMi4xOTctLjQ1OSAzLjc0Mi0uMDUuMjM4LS4xMDUuNDc5LS4xNjYuNzE4bC0xLjY1MyAxLjY1M2MuMDItLjAzNy4wNC0uMDc0LjA1OS0uMTEzQzIuNjc5IDExLjIgMyA3Ljg4IDMgN2MwLTIuNDIgMS43Mi00LjQ0IDQuMDA1LTQuOTAxYTEgMSAwIDEgMSAxLjk5IDBjLjk0Mi4xOSAxLjc4OC42NDUgMi40NTcgMS4yODRsLS43MDcuNzA3ek0xMCAxNWEyIDIgMCAxIDEtNCAwaDR6bS05LjM3NS42MjVhLjUzLjUzIDAgMCAwIC43NS43NWwxNC43NS0xNC43NWEuNTMuNTMgMCAwIDAtLjc1LS43NUwuNjI1IDE1LjYyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCZWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZhMiAyIDAgMCAwIDItMkg2YTIgMiAwIDAgMCAyIDJ6TTggMS45MThsLS43OTcuMTYxQTQuMDAyIDQuMDAyIDAgMCAwIDQgNmMwIC42MjgtLjEzNCAyLjE5Ny0uNDU5IDMuNzQyLS4xNi43NjctLjM3NiAxLjU2Ni0uNjYzIDIuMjU4aDEwLjI0NGMtLjI4Ny0uNjkyLS41MDItMS40OS0uNjYzLTIuMjU4QzEyLjEzNCA4LjE5NyAxMiA2LjYyOCAxMiA2YTQuMDAyIDQuMDAyIDAgMCAwLTMuMjAzLTMuOTJMOCAxLjkxN3pNMTQuMjIgMTJjLjIyMy40NDcuNDgxLjgwMS43OCAxSDFjLjI5OS0uMTk5LjU1Ny0uNTUzLjc4LTFDMi42OCAxMC4yIDMgNi44OCAzIDZjMC0yLjQyIDEuNzItNC40NCA0LjAwNS00LjkwMWExIDEgMCAxIDEgMS45OSAwQTUuMDAyIDUuMDAyIDAgMCAxIDEzIDZjMCAuODguMzIgNC4yIDEuMjIgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCZXppZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgMTAuNUExLjUgMS41IDAgMCAxIDEuNSA5aDFBMS41IDEuNSAwIDAgMSA0IDEwLjV2MUExLjUgMS41IDAgMCAxIDIuNSAxM2gtMUExLjUgMS41IDAgMCAxIDAgMTEuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXptMTAuNS41QTEuNSAxLjUgMCAwIDEgMTMuNSA5aDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpNNiA0LjVBMS41IDEuNSAwIDAgMSA3LjUgM2gxQTEuNSAxLjUgMCAwIDEgMTAgNC41djFBMS41IDEuNSAwIDAgMSA4LjUgN2gtMUExLjUgMS41IDAgMCAxIDYgNS41di0xek03LjUgNGEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA0LjVIMS44NjZhMSAxIDAgMSAwIDAgMWgyLjY2OEE2LjUxNyA2LjUxNyAwIDAgMCAxLjgxNCA5SDIuNWMuMTIzIDAgLjI0NC4wMTUuMzU4LjA0M2E1LjUxNyA1LjUxNyAwIDAgMSAzLjE4NS0zLjE4NUExLjUwMyAxLjUwMyAwIDAgMSA2IDUuNXYtMXptMy45NTcgMS4zNThBMS41IDEuNSAwIDAgMCAxMCA1LjV2LTFoNC4xMzRhMSAxIDAgMSAxIDAgMWgtMi42NjhhNi41MTcgNi41MTcgMCAwIDEgMi43MiAzLjVIMTMuNWMtLjEyMyAwLS4yNDMuMDE1LS4zNTguMDQzYTUuNTE3IDUuNTE3IDAgMCAwLTMuMTg1LTMuMTg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JlemllcjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgMi41QTEuNSAxLjUgMCAwIDEgMi41IDFoMUExLjUgMS41IDAgMCAxIDUgMi41aDQuMTM0YTEgMSAwIDEgMSAwIDFoLTIuMDFjLjE4LjE4LjM0LjM4MS40ODQuNjA1LjYzOC45OTIuODkyIDIuMzU0Ljg5MiAzLjg5NSAwIDEuOTkzLjI1NyAzLjA5Mi43MTMgMy43LjM1Ni40NzYuODk1LjcyMSAxLjc4Ny43ODRBMS41IDEuNSAwIDAgMSAxMi41IDExaDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xYTEuNSAxLjUgMCAwIDEtMS41LTEuNUg2Ljg2NmExIDEgMCAxIDEgMC0xaDEuNzExYTIuODM5IDIuODM5IDAgMCAxLS4xNjUtLjJDNy43NDMgMTEuNDA3IDcuNSAxMC4wMDcgNy41IDhjMC0xLjQ2LS4yNDYtMi41OTctLjczMy0zLjM1NS0uMzktLjYwNS0uOTUyLTEtMS43NjctMS4xMTJBMS41IDEuNSAwIDAgMSAzLjUgNWgtMUExLjUgMS41IDAgMCAxIDEgMy41di0xek0yLjUgMmEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6bTEwIDEwYS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCaWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNC41YS41LjUgMCAwIDEgLjUtLjVINmEuNS41IDAgMCAxIDAgMXYuNWg0LjE0bC4zODYtMS4xNThBLjUuNSAwIDAgMSAxMSA0aDFhLjUuNSAwIDAgMSAwIDFoLS42NGwtLjMxMS45MzUuODA3IDEuMjlhMyAzIDAgMSAxLS44NDguNTNsLS41MDgtLjgxMi0yLjA3NiAzLjMyMkEuNS41IDAgMCAxIDggMTAuNUg1Ljk1OWEzIDMgMCAxIDEtMS44MTUtMy4yNzRMNSA1Ljg1NlY1aC0uNWEuNS41IDAgMCAxLS41LS41em0xLjUgMi40NDMtLjUwOC44MTRjLjUuNDQ0Ljg1IDEuMDU0Ljk2NyAxLjc0M2gxLjEzOUw1LjUgNi45NDN6TTggOS4wNTcgOS41OTggNi41SDYuNDAyTDggOS4wNTd6TTQuOTM3IDkuNWExLjk5NyAxLjk5NyAwIDAgMC0uNDg3LS44NzdsLS41NDguODc3aDEuMDM1ek0zLjYwMyA4LjA5MkEyIDIgMCAxIDAgNC45MzcgMTAuNUgzYS41LjUgMCAwIDEtLjQyNC0uNzY1bDEuMDI3LTEuNjQzem03Ljk0Ny41M2EyIDIgMCAxIDAgLjg0OC0uNTNsMS4wMjYgMS42NDNhLjUuNSAwIDEgMS0uODQ4LjUzTDExLjU1IDguNjIzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jpbm9jdWxhcnNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxQTEuNSAxLjUgMCAwIDAgMyAyLjVWM2g0di0uNUExLjUgMS41IDAgMCAwIDUuNSAxaC0xek03IDR2MWgyVjRoNHYuODgyYS41LjUgMCAwIDAgLjI3Ni40NDdsLjg5NS40NDdBMS41IDEuNSAwIDAgMSAxNSA3LjExOFYxM0g5di0xLjVhLjUuNSAwIDAgMSAuMTQ2LS4zNTRsLjg1NC0uODUzVjkuNWEuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDAtLjUuNXYuNzkzbC44NTQuODUzQS41LjUgMCAwIDEgNyAxMS41VjEzSDFWNy4xMThhMS41IDEuNSAwIDAgMSAuODMtMS4zNDJsLjg5NC0uNDQ3QS41LjUgMCAwIDAgMyA0Ljg4MlY0aDR6TTEgMTR2LjVBMS41IDEuNSAwIDAgMCAyLjUgMTZoM0ExLjUgMS41IDAgMCAwIDcgMTQuNVYxNEgxem04IDB2LjVhMS41IDEuNSAwIDAgMCAxLjUgMS41aDNhMS41IDEuNSAwIDAgMCAxLjUtMS41VjE0SDl6bTQtMTFIOXYtLjVBMS41IDEuNSAwIDAgMSAxMC41IDFoMUExLjUgMS41IDAgMCAxIDEzIDIuNVYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jpbm9jdWxhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyLjVBMS41IDEuNSAwIDAgMSA0LjUgMWgxQTEuNSAxLjUgMCAwIDEgNyAyLjVWNWgyVjIuNUExLjUgMS41IDAgMCAxIDEwLjUgMWgxQTEuNSAxLjUgMCAwIDEgMTMgMi41djIuMzgyYS41LjUgMCAwIDAgLjI3Ni40NDdsLjg5NS40NDdBMS41IDEuNSAwIDAgMSAxNSA3LjExOFYxNC41YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtM0ExLjUgMS41IDAgMCAxIDkgMTQuNXYtM2EuNS41IDAgMCAxIC4xNDYtLjM1NGwuODU0LS44NTNWOS41YS41LjUgMCAwIDAtLjUtLjVoLTNhLjUuNSAwIDAgMC0uNS41di43OTNsLjg1NC44NTNBLjUuNSAwIDAgMSA3IDExLjV2M0ExLjUgMS41IDAgMCAxIDUuNSAxNmgtM0ExLjUgMS41IDAgMCAxIDEgMTQuNVY3LjExOGExLjUgMS41IDAgMCAxIC44My0xLjM0MmwuODk0LS40NDdBLjUuNSAwIDAgMCAzIDQuODgyVjIuNXpNNC41IDJhLjUuNSAwIDAgMC0uNS41VjNoMnYtLjVhLjUuNSAwIDAgMC0uNS0uNWgtMXpNNiA0SDR2Ljg4MmExLjUgMS41IDAgMCAxLS44MyAxLjM0MmwtLjg5NC40NDdBLjUuNSAwIDAgMCAyIDcuMTE4VjEzaDR2LTEuMjkzbC0uODU0LS44NTNBLjUuNSAwIDAgMSA1IDEwLjV2LTFBMS41IDEuNSAwIDAgMSA2LjUgOGgzQTEuNSAxLjUgMCAwIDEgMTEgOS41djFhLjUuNSAwIDAgMS0uMTQ2LjM1NGwtLjg1NC44NTNWMTNoNFY3LjExOGEuNS41IDAgMCAwLS4yNzYtLjQ0N2wtLjg5NS0uNDQ3QTEuNSAxLjUgMCAwIDEgMTIgNC44ODJWNGgtMnYxLjVhLjUuNSAwIDAgMS0uNS41aC0zYS41LjUgMCAwIDEtLjUtLjVWNHptNC0xaDJ2LS41YS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41VjN6bTQgMTFoLTR2LjVhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMCAuNS0uNVYxNHptLTggMEgydi41YS41LjUgMCAwIDAgLjUuNWgzYS41LjUgMCAwIDAgLjUtLjVWMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQmxvY2txdW90ZUxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDNhLjUuNSAwIDAgMCAwIDFoMTFhLjUuNSAwIDAgMCAwLTFoLTExem01IDNhLjUuNSAwIDAgMCAwIDFoNmEuNS41IDAgMCAwIDAtMWgtNnptMCAzYS41LjUgMCAwIDAgMCAxaDZhLjUuNSAwIDAgMCAwLTFoLTZ6bS01IDNhLjUuNSAwIDAgMCAwIDFoMTFhLjUuNSAwIDAgMCAwLTFoLTExem0uNzktNS4zNzNjLjExMi0uMDc4LjI2LS4xNy40NDQtLjI3NUwzLjUyNCA2Yy0uMTIyLjA3NC0uMjcyLjE3LS40NTIuMjg3LS4xOC4xMTctLjM1LjI2LS41MS40MjhhMi40MjUgMi40MjUgMCAwIDAtLjM5OC41NjJjLS4xMS4yMDctLjE2NC40MzgtLjE2NC42OTIgMCAuMzYuMDcyLjY1LjIxNy44NzMuMTQ0LjIxOS4zODUuMzI4LjcyLjMyOC4yMTUgMCAuMzgzLS4wNy41MDQtLjIxMWEuNjk3LjY5NyAwIDAgMCAuMTg4LS40NjNjMC0uMjMtLjA3LS40MDQtLjIxMS0uNTIxLS4xMzctLjEyMS0uMzI2LS4xODItLjU2OC0uMTgyaC0uMjgyYy4wMjQtLjIwMy4wNjUtLjM3LjEyMy0uNDk4YTEuMzggMS4zOCAwIDAgMSAuMjUyLS4zNyAxLjk0IDEuOTQgMCAwIDEgLjM0Ni0uMjk4em0yLjE2NyAwYy4xMTMtLjA3OC4yNjItLjE3LjQ0NS0uMjc1TDUuNjkyIDZjLS4xMjIuMDc0LS4yNzIuMTctLjQ1Mi4yODctLjE4LjExNy0uMzUuMjYtLjUxLjQyOGEyLjQyNSAyLjQyNSAwIDAgMC0uMzk4LjU2MmMtLjExLjIwNy0uMTY0LjQzOC0uMTY0LjY5MiAwIC4zNi4wNzIuNjUuMjE3Ljg3My4xNDQuMjE5LjM4NS4zMjguNzIuMzI4LjIxNSAwIC4zODMtLjA3LjUwNC0uMjExYS42OTcuNjk3IDAgMCAwIC4xODgtLjQ2M2MwLS4yMy0uMDctLjQwNC0uMjExLS41MjEtLjEzNy0uMTIxLS4zMjYtLjE4Mi0uNTY4LS4xODJoLS4yODJhMS43NSAxLjc1IDAgMCAxIC4xMTgtLjQ5MmMuMDU4LS4xMy4xNDQtLjI1NC4yNTctLjM3NWExLjk0IDEuOTQgMCAwIDEgLjM0Ni0uM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCbG9ja3F1b3RlUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDNhLjUuNSAwIDAgMCAwIDFoMTFhLjUuNSAwIDAgMCAwLTFoLTExem0wIDNhLjUuNSAwIDAgMCAwIDFoNmEuNS41IDAgMCAwIDAtMWgtNnptMCAzYS41LjUgMCAwIDAgMCAxaDZhLjUuNSAwIDAgMCAwLTFoLTZ6bTAgM2EuNS41IDAgMCAwIDAgMWgxMWEuNS41IDAgMCAwIDAtMWgtMTF6bTEwLjExMy01LjM3M2E2LjU5IDYuNTkgMCAwIDAtLjQ0NS0uMjc1bC4yMS0uMzUyYy4xMjIuMDc0LjI3Mi4xNy40NTIuMjg3LjE4LjExNy4zNS4yNi41MS40MjguMTU2LjE2NC4yODkuMzUxLjM5OC41NjIuMTEuMjA3LjE2NC40MzguMTY0LjY5MiAwIC4zNi0uMDcyLjY1LS4yMTYuODczLS4xNDUuMjE5LS4zODUuMzI4LS43MjEuMzI4LS4yMTUgMC0uMzgzLS4wNy0uNTA0LS4yMTFhLjY5Ny42OTcgMCAwIDEtLjE4OC0uNDYzYzAtLjIzLjA3LS40MDQuMjExLS41MjEuMTM3LS4xMjEuMzI2LS4xODIuNTY5LS4xODJoLjI4MWExLjY4NiAxLjY4NiAwIDAgMC0uMTIzLS40OTggMS4zNzkgMS4zNzkgMCAwIDAtLjI1Mi0uMzcgMS45NCAxLjk0IDAgMCAwLS4zNDYtLjI5OHptLTIuMTY4IDBBNi41OSA2LjU5IDAgMCAwIDEwIDYuMzUyTDEwLjIxIDZjLjEyMi4wNzQuMjcyLjE3LjQ1Mi4yODcuMTguMTE3LjM1LjI2LjUxLjQyOC4xNTYuMTY0LjI4OS4zNTEuMzk4LjU2Mi4xMS4yMDcuMTY0LjQzOC4xNjQuNjkyIDAgLjM2LS4wNzIuNjUtLjIxNi44NzMtLjE0NS4yMTktLjM4NS4zMjgtLjcyMS4zMjgtLjIxNSAwLS4zODMtLjA3LS41MDQtLjIxMWEuNjk3LjY5NyAwIDAgMS0uMTg4LS40NjNjMC0uMjMuMDctLjQwNC4yMTEtLjUyMS4xMzctLjEyMS4zMjctLjE4Mi41NjktLjE4MmguMjgxYTEuNzQ5IDEuNzQ5IDAgMCAwLS4xMTctLjQ5MiAxLjQwMiAxLjQwMiAwIDAgMC0uMjU4LS4zNzUgMS45NCAxLjk0IDAgMCAwLS4zNDYtLjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxLjc4M0M3LjAxNS45MzYgNS41ODcuODEgNC4yODcuOTRjLTEuNTE0LjE1My0zLjA0Mi42NzItMy45OTQgMS4xMDVBLjUuNSAwIDAgMCAwIDIuNXYxMWEuNS41IDAgMCAwIC43MDcuNDU1Yy44ODItLjQgMi4zMDMtLjg4MSAzLjY4LTEuMDIgMS40MDktLjE0MiAyLjU5LjA4NyAzLjIyMy44NzdhLjUuNSAwIDAgMCAuNzggMGMuNjMzLS43OSAxLjgxNC0xLjAxOSAzLjIyMi0uODc3IDEuMzc4LjEzOSAyLjguNjIgMy42ODEgMS4wMkEuNS41IDAgMCAwIDE2IDEzLjV2LTExYS41LjUgMCAwIDAtLjI5My0uNDU1Yy0uOTUyLS40MzMtMi40OC0uOTUyLTMuOTk0LTEuMTA1QzEwLjQxMy44MDkgOC45ODUuOTM2IDggMS43ODN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va0hhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDIuNjg3Yy42NTQtLjY4OSAxLjc4Mi0uODg2IDMuMTEyLS43NTIgMS4yMzQuMTI0IDIuNTAzLjUyMyAzLjM4OC44OTN2OS45MjNjLS45MTgtLjM1LTIuMTA3LS42OTItMy4yODctLjgxLTEuMDk0LS4xMTEtMi4yNzgtLjAzOS0zLjIxMy40OTJWMi42ODd6TTggMS43ODNDNy4wMTUuOTM2IDUuNTg3LjgxIDQuMjg3Ljk0Yy0xLjUxNC4xNTMtMy4wNDIuNjcyLTMuOTk0IDEuMTA1QS41LjUgMCAwIDAgMCAyLjV2MTFhLjUuNSAwIDAgMCAuNzA3LjQ1NWMuODgyLS40IDIuMzAzLS44ODEgMy42OC0xLjAyIDEuNDA5LS4xNDIgMi41OS4wODcgMy4yMjMuODc3YS41LjUgMCAwIDAgLjc4IDBjLjYzMy0uNzkgMS44MTQtMS4wMTkgMy4yMjItLjg3NyAxLjM3OC4xMzkgMi44LjYyIDMuNjgxIDEuMDJBLjUuNSAwIDAgMCAxNiAxMy41di0xMWEuNS41IDAgMCAwLS4yOTMtLjQ1NWMtLjk1Mi0uNDMzLTIuNDgtLjk1Mi0zLjk5NC0xLjEwNUMxMC40MTMuODA5IDguOTg1LjkzNiA4IDEuNzgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyLjgyOGMuODg1LS4zNyAyLjE1NC0uNzY5IDMuMzg4LS44OTMgMS4zMy0uMTM0IDIuNDU4LjA2MyAzLjExMi43NTJ2OS43NDZjLS45MzUtLjUzLTIuMTItLjYwMy0zLjIxMy0uNDkzLTEuMTguMTItMi4zNy40NjEtMy4yODcuODExVjIuODI4em03LjUtLjE0MWMuNjU0LS42ODkgMS43ODItLjg4NiAzLjExMi0uNzUyIDEuMjM0LjEyNCAyLjUwMy41MjMgMy4zODguODkzdjkuOTIzYy0uOTE4LS4zNS0yLjEwNy0uNjkyLTMuMjg3LS44MS0xLjA5NC0uMTExLTIuMjc4LS4wMzktMy4yMTMuNDkyVjIuNjg3ek04IDEuNzgzQzcuMDE1LjkzNiA1LjU4Ny44MSA0LjI4Ny45NGMtMS41MTQuMTUzLTMuMDQyLjY3Mi0zLjk5NCAxLjEwNUEuNS41IDAgMCAwIDAgMi41djExYS41LjUgMCAwIDAgLjcwNy40NTVjLjg4Mi0uNCAyLjMwMy0uODgxIDMuNjgtMS4wMiAxLjQwOS0uMTQyIDIuNTkuMDg3IDMuMjIzLjg3N2EuNS41IDAgMCAwIC43OCAwYy42MzMtLjc5IDEuODE0LTEuMDE5IDMuMjIyLS44NzcgMS4zNzguMTM5IDIuOC42MiAzLjY4MSAxLjAyQS41LjUgMCAwIDAgMTYgMTMuNXYtMTFhLjUuNSAwIDAgMC0uMjkzLS40NTVjLS45NTItLjQzMy0yLjQ4LS45NTItMy45OTQtMS4xMDVDMTAuNDEzLjgwOSA4Ljk4NS45MzYgOCAxLjc4M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFya0NoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAxNS41VjJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NC40MzlMOCAxMy4wNjlsLTUuMjYgMi44N0EuNS41IDAgMCAxIDIgMTUuNXptOC44NTQtOS42NDZhLjUuNSAwIDAgMC0uNzA4LS43MDhMNy41IDcuNzkzIDYuMzU0IDYuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMS41IDEuNWEuNS41IDAgMCAwIC43MDggMGwzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va21hcmtDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuODU0IDUuMTQ2YS41LjUgMCAwIDEgMCAuNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTEuNS0xLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMNy41IDcuNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMy41YS41LjUgMCAwIDEtLjc3Ny40MTZMOCAxMy4xMDFsLTUuMjIzIDIuODE1QS41LjUgMCAwIDEgMiAxNS41VjJ6bTItMWExIDEgMCAwIDAtMSAxdjEyLjU2Nmw0LjcyMy0yLjQ4MmEuNS41IDAgMCAxIC41NTQgMEwxMyAxNC41NjZWMmExIDEgMCAwIDAtMS0xSDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va21hcmtEYXNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAxNS41VjJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NC40MzlMOCAxMy4wNjlsLTUuMjYgMi44N0EuNS41IDAgMCAxIDIgMTUuNXpNNiA2YS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFya0Rhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuNSA2LjVBLjUuNSAwIDAgMSA2IDZoNGEuNS41IDAgMCAxIDAgMUg2YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEzLjVhLjUuNSAwIDAgMS0uNzc3LjQxNkw4IDEzLjEwMWwtNS4yMjMgMi44MTVBLjUuNSAwIDAgMSAyIDE1LjVWMnptMi0xYTEgMSAwIDAgMC0xIDF2MTIuNTY2bDQuNzIzLTIuNDgyYS41LjUgMCAwIDEgLjU1NCAwTDEzIDE0LjU2NlYyYTEgMSAwIDAgMC0xLTFINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFya0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAydjEzLjVhLjUuNSAwIDAgMCAuNzQuNDM5TDggMTMuMDY5bDUuMjYgMi44N0EuNS41IDAgMCAwIDE0IDE1LjVWMmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFya0hlYXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE1LjVhLjUuNSAwIDAgMCAuNzQuNDM5TDggMTMuMDY5bDUuMjYgMi44N0EuNS41IDAgMCAwIDE0IDE1LjVWMmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnYxMy41ek04IDQuNDFjMS4zODctMS40MjUgNC44NTQgMS4wNyAwIDQuMjc3QzMuMTQ2IDUuNDggNi42MTMgMi45ODYgOCA0LjQxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFya0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDQuNDFjMS4zODctMS40MjUgNC44NTQgMS4wNyAwIDQuMjc3QzMuMTQ2IDUuNDggNi42MTMgMi45ODYgOCA0LjQxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NzcuNDE2TDggMTMuMTAxbC01LjIyMyAyLjgxNUEuNS41IDAgMCAxIDIgMTUuNVYyem0yLTFhMSAxIDAgMCAwLTEgMXYxMi41NjZsNC43MjMtMi40ODJhLjUuNSAwIDAgMSAuNTU0IDBMMTMgMTQuNTY2VjJhMSAxIDAgMCAwLTEtMUg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTUuNVYyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEzLjVhLjUuNSAwIDAgMS0uNzQuNDM5TDggMTMuMDY5bC01LjI2IDIuODdBLjUuNSAwIDAgMSAyIDE1LjV6bTYuNS0xMWEuNS41IDAgMCAwLTEgMFY2SDZhLjUuNSAwIDAgMCAwIDFoMS41djEuNWEuNS41IDAgMCAwIDEgMFY3SDEwYS41LjUgMCAwIDAgMC0xSDguNVY0LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va21hcmtQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMy41YS41LjUgMCAwIDEtLjc3Ny40MTZMOCAxMy4xMDFsLTUuMjIzIDIuODE1QS41LjUgMCAwIDEgMiAxNS41VjJ6bTItMWExIDEgMCAwIDAtMSAxdjEyLjU2Nmw0LjcyMy0yLjQ4MmEuNS41IDAgMCAxIC41NTQgMEwxMyAxNC41NjZWMmExIDEgMCAwIDAtMS0xSDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA0YS41LjUgMCAwIDEgLjUuNVY2SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWN0g2YS41LjUgMCAwIDEgMC0xaDEuNVY0LjVBLjUuNSAwIDAgMSA4IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9va21hcmtTdGFyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAxNS41VjJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NC40MzlMOCAxMy4wNjlsLTUuMjYgMi44N0EuNS41IDAgMCAxIDIgMTUuNXpNOC4xNiA0LjFhLjE3OC4xNzggMCAwIDAtLjMyIDBsLS42MzQgMS4yODVhLjE3OC4xNzggMCAwIDEtLjEzNC4wOThsLTEuNDIuMjA2YS4xNzguMTc4IDAgMCAwLS4wOTguMzAzTDYuNTggNi45OTNjLjA0Mi4wNDEuMDYxLjEuMDUxLjE1OEw2LjM5IDguNTY1YS4xNzguMTc4IDAgMCAwIC4yNTguMTg3bDEuMjctLjY2OGEuMTc4LjE3OCAwIDAgMSAuMTY1IDBsMS4yNy42NjhhLjE3OC4xNzggMCAwIDAgLjI1Ny0uMTg3TDkuMzY4IDcuMTVhLjE3OC4xNzggMCAwIDEgLjA1LS4xNThsMS4wMjgtMS4wMDFhLjE3OC4xNzggMCAwIDAtLjA5OC0uMzAzbC0xLjQyLS4yMDZhLjE3OC4xNzggMCAwIDEtLjEzNC0uMDk4TDguMTYgNC4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrU3RhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljg0IDQuMWEuMTc4LjE3OCAwIDAgMSAuMzIgMGwuNjM0IDEuMjg1YS4xNzguMTc4IDAgMCAwIC4xMzQuMDk4bDEuNDIuMjA2Yy4xNDUuMDIxLjIwNC4yLjA5OC4zMDNMOS40MiA2Ljk5M2EuMTc4LjE3OCAwIDAgMC0uMDUxLjE1OGwuMjQyIDEuNDE0YS4xNzguMTc4IDAgMCAxLS4yNTguMTg3bC0xLjI3LS42NjhhLjE3OC4xNzggMCAwIDAtLjE2NSAwbC0xLjI3LjY2OGEuMTc4LjE3OCAwIDAgMS0uMjU3LS4xODdsLjI0Mi0xLjQxNGEuMTc4LjE3OCAwIDAgMC0uMDUtLjE1OGwtMS4wMy0xLjAwMWEuMTc4LjE3OCAwIDAgMSAuMDk4LS4zMDNsMS40Mi0uMjA2YS4xNzguMTc4IDAgMCAwIC4xMzQtLjA5OEw3Ljg0IDQuMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NzcuNDE2TDggMTMuMTAxbC01LjIyMyAyLjgxNUEuNS41IDAgMCAxIDIgMTUuNVYyem0yLTFhMSAxIDAgMCAwLTEgMXYxMi41NjZsNC43MjMtMi40ODJhLjUuNSAwIDAgMSAuNTU0IDBMMTMgMTQuNTY2VjJhMSAxIDAgMCAwLTEtMUg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrWEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTUuNVYyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEzLjVhLjUuNSAwIDAgMS0uNzQuNDM5TDggMTMuMDY5bC01LjI2IDIuODdBLjUuNSAwIDAgMSAyIDE1LjV6TTYuODU0IDUuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgNyA2LjE0NiA4LjE0NmEuNS41IDAgMSAwIC43MDguNzA4TDggNy43MDdsMS4xNDYgMS4xNDdhLjUuNSAwIDEgMCAuNzA4LS43MDhMOC43MDcgN2wxLjE0Ny0xLjE0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw4IDYuMjkzIDYuODU0IDUuMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi4xNDYgNS4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA2LjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMSAxIC43MDguNzA4TDguNzA3IDdsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDcuNzA3IDYuODU0IDguODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4TDcuMjkzIDcgNi4xNDYgNS44NTRhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEzLjVhLjUuNSAwIDAgMS0uNzc3LjQxNkw4IDEzLjEwMWwtNS4yMjMgMi44MTVBLjUuNSAwIDAgMSAyIDE1LjVWMnptMi0xYTEgMSAwIDAgMC0xIDF2MTIuNTY2bDQuNzIzLTIuNDgyYS41LjUgMCAwIDEgLjU1NCAwTDEzIDE0LjU2NlYyYTEgMSAwIDAgMC0xLTFINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb29rbWFyayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTMuNWEuNS41IDAgMCAxLS43NzcuNDE2TDggMTMuMTAxbC01LjIyMyAyLjgxNUEuNS41IDAgMCAxIDIgMTUuNVYyem0yLTFhMSAxIDAgMCAwLTEgMXYxMi41NjZsNC43MjMtMi40ODJhLjUuNSAwIDAgMSAuNTU0IDBMMTMgMTQuNTY2VjJhMSAxIDAgMCAwLTEtMUg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0YTIgMiAwIDAgMSAyLTJoNmEyIDIgMCAwIDEgMiAydjExLjVhLjUuNSAwIDAgMS0uNzc3LjQxNkw3IDEzLjEwMWwtNC4yMjMgMi44MTVBLjUuNSAwIDAgMSAyIDE1LjVWNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI2OCAxQTIgMiAwIDAgMSA2IDBoNmEyIDIgMCAwIDEgMiAydjExLjVhLjUuNSAwIDAgMS0uNzc3LjQxNkwxMyAxMy43NjhWMmExIDEgMCAwIDAtMS0xSDQuMjY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2ttYXJrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDRhMiAyIDAgMCAxIDItMmg2YTIgMiAwIDAgMSAyIDJ2MTEuNWEuNS41IDAgMCAxLS43NzcuNDE2TDcgMTMuMTAxbC00LjIyMyAyLjgxNUEuNS41IDAgMCAxIDIgMTUuNVY0em0yLTFhMSAxIDAgMCAwLTEgMXYxMC41NjZsMy43MjMtMi40ODJhLjUuNSAwIDAgMSAuNTU0IDBMMTEgMTQuNTY2VjRhMSAxIDAgMCAwLTEtMUg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjY4IDFIMTJhMSAxIDAgMCAxIDEgMXYxMS43NjhsLjIyMy4xNDhBLjUuNSAwIDAgMCAxNCAxMy41VjJhMiAyIDAgMCAwLTItMkg2YTIgMiAwIDAgMC0xLjczMiAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Jvb2tzaGVsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMGEuNS41IDAgMCAxIC41LjVWMmgxMFYuNWEuNS41IDAgMCAxIDEgMHYxNWEuNS41IDAgMCAxLTEgMFYxNUgzdi41YS41LjUgMCAwIDEtMSAwVi41YS41LjUgMCAwIDEgLjUtLjV6TTMgMTRoMTB2LTNIM3Yzem0wLTRoMTBWN0gzdjN6bTAtNGgxMFYzSDN2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb290c3RyYXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMzc1IDcuMTI1VjQuNjU4aDEuNzhjLjk3MyAwIDEuNTQyLjQ1NyAxLjU0MiAxLjIzNyAwIC44MDItLjYwNCAxLjIzLTEuNzY0IDEuMjNINi4zNzV6bTAgMy43NjJoMS44OThjMS4xODQgMCAxLjgxLS40OCAxLjgxLTEuMzc3IDAtLjg4NS0uNjUtMS4zNDgtMS44ODYtMS4zNDhINi4zNzV2Mi43MjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4wMDIgMGE0IDQgMCAwIDAtNCA0djhhNCA0IDAgMCAwIDQgNGg4YTQgNCAwIDAgMCA0LTRWNGE0IDQgMCAwIDAtNC00aC04em0xLjA2IDEyVjMuNTQ1aDMuMzk5YzEuNTg3IDAgMi41NDMuODA5IDIuNTQzIDIuMTEgMCAuODg0LS42NSAxLjY3NS0xLjQ4MyAxLjgxNnYuMWMxLjE0My4xMTcgMS45MDQuOTMxIDEuOTA0IDIuMDMzIDAgMS40ODgtMS4wODQgMi4zOTYtMi44ODggMi4zOTZINS4wNjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9vdHN0cmFwUmVib290IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMTYxIDhhNi44NCA2Ljg0IDAgMSAwIDYuODQyLTYuODQuNTguNTggMCAxIDEgMC0xLjE2IDggOCAwIDEgMS02LjU1NiAzLjQxMmwtLjY2My0uNTc3YS41OC41OCAwIDAgMSAuMjI3LS45OTdsMi41Mi0uNjlhLjU4LjU4IDAgMCAxIC43MjguNjMzbC0uMzMyIDIuNTkyYS41OC41OCAwIDAgMS0uOTU2LjM2NGwtLjY0My0uNTZBNi44MTIgNi44MTIgMCAwIDAgMS4xNiA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNjQxIDExLjY3MVY4Ljg0M2gxLjU3bDEuNDk4IDIuODI4aDEuMzE0TDkuMzc3IDguNjY1Yy44OTctLjMgMS40MjctMS4xMDYgMS40MjctMi4xIDAtMS4zNy0uOTQzLTIuMjQ2LTIuNDU2LTIuMjQ2SDUuNXY3LjM1MmgxLjE0MXptMC0zLjc1VjUuMjc3aDEuNTdjLjg4MSAwIDEuNDE2LjQ5OSAxLjQxNiAxLjMyIDAgLjg0LS41MDQgMS4zMjQtMS4zODYgMS4zMjRoLTEuNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb290c3RyYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wNjIgMTJoMy40NzVjMS44MDQgMCAyLjg4OC0uOTA4IDIuODg4LTIuMzk2IDAtMS4xMDItLjc2MS0xLjkxNi0xLjkwNC0yLjAzNHYtLjFjLjgzMi0uMTQgMS40ODItLjkzIDEuNDgyLTEuODE2IDAtMS4zLS45NTUtMi4xMS0yLjU0Mi0yLjExSDUuMDYyVjEyem0xLjMxMy00Ljg3NVY0LjY1OGgxLjc4Yy45NzMgMCAxLjU0Mi40NTcgMS41NDIgMS4yMzcgMCAuODAyLS42MDQgMS4yMy0xLjc2NCAxLjIzSDYuMzc1em0wIDMuNzYyVjguMTYyaDEuODIyYzEuMjM2IDAgMS44ODcuNDYzIDEuODg3IDEuMzQ4IDAgLjg5Ni0uNjI3IDEuMzc3LTEuODExIDEuMzc3SDYuMzc1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGE0IDQgMCAwIDEgNC00aDhhNCA0IDAgMCAxIDQgNHY4YTQgNCAwIDAgMS00IDRINGE0IDQgMCAwIDEtNC00VjR6bTQtM2EzIDMgMCAwIDAtMyAzdjhhMyAzIDAgMCAwIDMgM2g4YTMgMyAwIDAgMCAzLTNWNGEzIDMgMCAwIDAtMy0zSDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9yZGVyQWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMGgxNnYxNkgwVjB6bTEgMXY2LjVoNi41VjFIMXptNy41IDB2Ni41SDE1VjFIOC41ek0xNSA4LjVIOC41VjE1SDE1VjguNXpNNy41IDE1VjguNUgxVjE1aDYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3JkZXJCb3R0b20gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk2OSAwSDB2Ljk2OWguNVYxaC40NjlWLjk2OUgxVi41SC45NjlWMHptLjkzNyAxaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMEgzLjc4djF6bTEuODc1IDBoLjkzOFYwaC0uOTM4djF6TTcuNTMxLjk2OVYxaC45MzhWLjk2OUg4LjVWLjVoLS4wMzFWMEg3LjUzdi41SDcuNXYuNDY5aC4wMzF6TTkuNDA2IDFoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjQ2OVYuOTY5aC41VjBoLS45Njl2LjVIMTV2LjQ2OWguMDMxVjF6TTEgMi44NDR2LS45MzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMXYtLjkzOGgtMXptNy41IDB2LjkzOGgxdi0uOTM4aC0xek0xIDQuNzE5VjMuNzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMVYzLjc4aC0xem03LjUgMHYuOTM4aDFWMy43OGgtMXpNMSA2LjU5NHYtLjkzOEgwdi45MzhoMXptNi41LS45Mzh2LjkzOGgxdi0uOTM4aC0xem03LjUgMHYuOTM4aDF2LS45MzhoLTF6TS41IDguNWguNDY5di0uMDMxSDFWNy41M0guOTY5VjcuNUguNXYuMDMxSDB2LjkzOGguNVY4LjV6bTEuNDA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMi44MTMgMHYtLjAzMUg4LjVWNy41M2gtLjAzMVY3LjVINy41M3YuMDMxSDcuNXYuOTM4aC4wMzFWOC41aC45Mzh6bS45MzcgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguNDY5di0uMDMxaC41VjcuNTNoLS41VjcuNWgtLjQ2OXYuMDMxSDE1di45MzhoLjAzMVY4LjV6TTAgOS40MDZ2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6bS0xNiAuOTM3di45MzhoMXYtLjkzOEgwem03LjUgMHYuOTM4aDF2LS45MzhoLTF6bTguNS45Mzh2LS45MzhoLTF2LjkzOGgxem0tMTYgLjkzN3YuOTM4aDF2LS45MzhIMHptNy41IDB2LjkzOGgxdi0uOTM4aC0xem04LjUuOTM4di0uOTM4aC0xdi45MzhoMXpNMCAxNWgxNnYxSDB2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9yZGVyQ2VudGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS45NjkgMEgwdi45NjloLjVWMWguNDY5Vi45NjlIMVYuNUguOTY5VjB6bS45MzcgMWguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBIMy43OHYxem0xLjg3NSAwaC45MzhWMGgtLjkzOHYxek03LjUzMS45NjlWMWguOTM4Vi45NjlIOC41Vi41aC0uMDMxVjBINy41M3YuNUg3LjV2LjQ2OWguMDMxek05LjQwNiAxaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC40NjlWLjk2OWguNVYwaC0uOTY5di41SDE1di40NjloLjAzMVYxek0xIDIuODQ0di0uOTM4SDB2LjkzOGgxem02LjUtLjkzOHYuOTM4aDF2LS45MzhoLTF6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXpNMSA0LjcxOVYzLjc4SDB2LjkzOGgxem02LjUtLjkzOHYuOTM4aDFWMy43OGgtMXptNy41IDB2LjkzOGgxVjMuNzhoLTF6TTEgNi41OTR2LS45MzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMXYtLjkzOGgtMXptNy41IDB2LjkzOGgxdi0uOTM4aC0xek0wIDguNXYtMWgxNnYxSDB6bTAgLjkwNnYuOTM4aDF2LS45MzhIMHptNy41IDB2LjkzOGgxdi0uOTM4aC0xem04LjUuOTM4di0uOTM4aC0xdi45MzhoMXptLTE2IC45Mzd2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6bS0xNiAuOTM3di45MzhoMXYtLjkzOEgwem03LjUgMHYuOTM4aDF2LS45MzhoLTF6bTguNS45Mzh2LS45MzhoLTF2LjkzOGgxek0wIDE2aC45Njl2LS41SDF2LS40NjlILjk2OVYxNUguNXYuMDMxSDBWMTZ6bTEuOTA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUtLjV2LjVoLjkzOHYtLjVIOC41di0uNDY5aC0uMDMxVjE1SDcuNTN2LjAzMUg3LjV2LjQ2OWguMDMxem0xLjg3NS41aC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NS0uNXYuNUgxNnYtLjk2OWgtLjVWMTVoLS40Njl2LjAzMUgxNXYuNDY5aC4wMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9yZGVySW5uZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjk2OSAwSDB2Ljk2OWguNVYxaC40NjlWLjk2OUgxVi41SC45NjlWMHptLjkzNyAxaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMEgzLjc4djF6bTEuODc1IDBoLjkzOFYwaC0uOTM4djF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDcuNUgxNnYxSDguNVYxNmgtMVY4LjVIMHYtMWg3LjVWMGgxdjcuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQwNiAxaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC45MzhWMGgtLjkzOHYxem0xLjg3NSAwaC40NjlWLjk2OWguNVYwaC0uOTY5di41SDE1di40NjloLjAzMVYxek0xIDIuODQ0di0uOTM4SDB2LjkzOGgxem0xNC0uOTM4di45MzhoMXYtLjkzOGgtMXpNMSA0LjcxOVYzLjc4SDB2LjkzOGgxem0xNC0uOTM4di45MzhoMVYzLjc4aC0xek0xIDYuNTk0di0uOTM4SDB2LjkzOGgxem0xNC0uOTM4di45MzhoMXYtLjkzOGgtMXpNMCA5LjQwNnYuOTM4aDF2LS45MzhIMHptMTYgLjkzOHYtLjkzOGgtMXYuOTM4aDF6bS0xNiAuOTM3di45MzhoMXYtLjkzOEgwem0xNiAuOTM4di0uOTM4aC0xdi45MzhoMXptLTE2IC45Mzd2LjkzOGgxdi0uOTM4SDB6bTE2IC45Mzh2LS45MzhoLTF2LjkzOGgxek0wIDE2aC45Njl2LS41SDF2LS40NjlILjk2OVYxNUguNXYuMDMxSDBWMTZ6bTEuOTA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMy43NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NS0uNXYuNUgxNnYtLjk2OWgtLjVWMTVoLS40Njl2LjAzMUgxNXYuNDY5aC4wMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9yZGVyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDB2MTZoMVYwSDB6bTEuOTA2IDFoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjkzOFYwSDMuNzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXpNNy41MzEuOTY5VjFoLjkzOFYuOTY5SDguNVYuNWgtLjAzMVYwSDcuNTN2LjVINy41di40NjloLjAzMXpNOS40MDYgMWguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguNDY5Vi45NjloLjVWMGgtLjk2OXYuNUgxNXYuNDY5aC4wMzFWMXpNNy41IDEuOTA2di45MzhoMXYtLjkzOGgtMXptNy41IDB2LjkzOGgxdi0uOTM4aC0xek03LjUgMy43ODF2LjkzOGgxVjMuNzhoLTF6bTcuNSAwdi45MzhoMVYzLjc4aC0xek03LjUgNS42NTZ2LjkzOGgxdi0uOTM4aC0xem03LjUgMHYuOTM4aDF2LS45MzhoLTF6TTEuOTA2IDguNWguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMUgzLjc4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0yLjgxMyAwdi0uMDMxSDguNVY3LjUzaC0uMDMxVjcuNUg3LjUzdi4wMzFINy41di45MzhoLjAzMVY4LjVoLjkzOHptLjkzNyAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC40Njl2LS4wMzFoLjVWNy41M2gtLjVWNy41aC0uNDY5di4wMzFIMTV2LjkzOGguMDMxVjguNXpNNy41IDkuNDA2di45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6bS04LjUuOTM3di45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6bS04LjUuOTM3di45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6TTEuOTA2IDE2aC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xSDMuNzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1LS41di41aC45Mzh2LS41SDguNXYtLjQ2OWgtLjAzMVYxNUg3LjUzdi4wMzFINy41di40NjloLjAzMXptMS44NzUuNWguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUtLjV2LjVIMTZ2LS45NjloLS41VjE1aC0uNDY5di4wMzFIMTV2LjQ2OWguMDMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JvcmRlck1pZGRsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uOTY5IDBIMHYuOTY5aC41VjFoLjQ2OVYuOTY5SDFWLjVILjk2OVYwem0uOTM3IDFoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjkzOFYwSDMuNzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXpNOC41IDE2aC0xVjBoMXYxNnptLjkwNi0xNWguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguNDY5Vi45NjloLjVWMGgtLjk2OXYuNUgxNXYuNDY5aC4wMzFWMXpNMSAyLjg0NHYtLjkzOEgwdi45MzhoMXptMTQtLjkzOHYuOTM4aDF2LS45MzhoLTF6TTEgNC43MTlWMy43OEgwdi45MzhoMXptMTQtLjkzOHYuOTM4aDFWMy43OGgtMXpNMSA2LjU5NHYtLjkzOEgwdi45MzhoMXptMTQtLjkzOHYuOTM4aDF2LS45MzhoLTF6TS41IDguNWguNDY5di0uMDMxSDFWNy41M0guOTY5VjcuNUguNXYuMDMxSDB2LjkzOGguNVY4LjV6bTEuNDA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMy43NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC40Njl2LS4wMzFoLjVWNy41M2gtLjVWNy41aC0uNDY5di4wMzFIMTV2LjkzOGguMDMxVjguNXpNMCA5LjQwNnYuOTM4aDF2LS45MzhIMHptMTYgLjkzOHYtLjkzOGgtMXYuOTM4aDF6bS0xNiAuOTM3di45MzhoMXYtLjkzOEgwem0xNiAuOTM4di0uOTM4aC0xdi45MzhoMXptLTE2IC45Mzd2LjkzOGgxdi0uOTM4SDB6bTE2IC45Mzh2LS45MzhoLTF2LjkzOGgxek0wIDE2aC45Njl2LS41SDF2LS40NjlILjk2OVYxNUguNXYuMDMxSDBWMTZ6bTEuOTA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMy43NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NS0uNXYuNUgxNnYtLjk2OWgtLjVWMTVoLS40Njl2LjAzMUgxNXYuNDY5aC4wMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm9yZGVyT3V0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEuOTA2di45MzhoMXYtLjkzOGgtMXptMCAxLjg3NXYuOTM4aDFWMy43OGgtMXptMCAxLjg3NXYuOTM4aDF2LS45MzhoLTF6TTEuOTA2IDguNWguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMUgzLjc4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0yLjgxMyAwdi0uMDMxSDguNVY3LjUzaC0uMDMxVjcuNUg3LjUzdi4wMzFINy41di45MzhoLjAzMVY4LjVoLjkzOHptLjkzNyAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxek03LjUgOS40MDZ2LjkzOGgxdi0uOTM4aC0xem0wIDEuODc1di45MzhoMXYtLjkzOGgtMXptMCAxLjg3NXYuOTM4aDF2LS45MzhoLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwdjE2aDE2VjBIMHptMSAxaDE0djE0SDFWMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3JkZXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uOTY5IDBIMHYuOTY5aC41VjFoLjQ2OVYuOTY5SDFWLjVILjk2OVYwem0uOTM3IDFoLjkzOFYwaC0uOTM4djF6bTEuODc1IDBoLjkzOFYwSDMuNzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXpNNy41MzEuOTY5VjFoLjkzOFYuOTY5SDguNVYuNWgtLjAzMVYwSDcuNTN2LjVINy41di40NjloLjAzMXpNOS40MDYgMWguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXptMS44NzUgMGguOTM4VjBoLS45Mzh2MXpNMTYgMGgtMXYxNmgxVjB6TTEgMi44NDR2LS45MzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMXYtLjkzOGgtMXpNMSA0LjcxOVYzLjc4SDB2LjkzOGgxem02LjUtLjkzOHYuOTM4aDFWMy43OGgtMXpNMSA2LjU5NHYtLjkzOEgwdi45MzhoMXptNi41LS45Mzh2LjkzOGgxdi0uOTM4aC0xek0uNSA4LjVoLjQ2OXYtLjAzMUgxVjcuNTNILjk2OVY3LjVILjV2LjAzMUgwdi45MzhoLjVWOC41em0xLjQwNiAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xSDMuNzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTIuODEzIDB2LS4wMzFIOC41VjcuNTNoLS4wMzFWNy41SDcuNTN2LjAzMUg3LjV2LjkzOGguMDMxVjguNWguOTM4em0uOTM3IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6TTAgOS40MDZ2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXpNMCAxMS4yODF2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXpNMCAxMy4xNTZ2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXpNMCAxNmguOTY5di0uNUgxdi0uNDY5SC45NjlWMTVILjV2LjAzMUgwVjE2em0xLjkwNiAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xSDMuNzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1LS41di41aC45Mzh2LS41SDguNXYtLjQ2OWgtLjAzMVYxNUg3LjUzdi4wMzFINy41di40NjloLjAzMXptMS44NzUuNWguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3JkZXJTdHlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDMuNWEuNS41IDAgMCAxIC41LS41aDEzYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMTNhLjUuNSAwIDAgMS0uNS0uNXYtMXptMCA0YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTVhLjUuNSAwIDAgMS0uNS0uNXYtMXptMCA0YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptOCAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptLTQgMGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTggMGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bS00LTRhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtNWEuNS41IDAgMCAxLS41LS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JvcmRlclRvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDB2MWgxNlYwSDB6bTEgMi44NDR2LS45MzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMXYtLjkzOGgtMXptNy41IDB2LjkzOGgxdi0uOTM4aC0xek0xIDQuNzE5VjMuNzhIMHYuOTM4aDF6bTYuNS0uOTM4di45MzhoMVYzLjc4aC0xem03LjUgMHYuOTM4aDFWMy43OGgtMXpNMSA2LjU5NHYtLjkzOEgwdi45MzhoMXptNi41LS45Mzh2LjkzOGgxdi0uOTM4aC0xem03LjUgMHYuOTM4aDF2LS45MzhoLTF6TS41IDguNWguNDY5di0uMDMxSDFWNy41M0guOTY5VjcuNUguNXYuMDMxSDB2LjkzOGguNVY4LjV6bTEuNDA2IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFIMy43OHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMi44MTMgMHYtLjAzMUg4LjVWNy41M2gtLjAzMVY3LjVINy41M3YuMDMxSDcuNXYuOTM4aC4wMzFWOC41aC45Mzh6bS45MzcgMGguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguNDY5di0uMDMxaC41VjcuNTNoLS41VjcuNWgtLjQ2OXYuMDMxSDE1di45MzhoLjAzMVY4LjV6TTAgOS40MDZ2LjkzOGgxdi0uOTM4SDB6bTcuNSAwdi45MzhoMXYtLjkzOGgtMXptOC41LjkzOHYtLjkzOGgtMXYuOTM4aDF6bS0xNiAuOTM3di45MzhoMXYtLjkzOEgwem03LjUgMHYuOTM4aDF2LS45MzhoLTF6bTguNS45Mzh2LS45MzhoLTF2LjkzOGgxem0tMTYgLjkzN3YuOTM4aDF2LS45MzhIMHptNy41IDB2LjkzOGgxdi0uOTM4aC0xem04LjUuOTM4di0uOTM4aC0xdi45MzhoMXpNMCAxNmguOTY5di0uNUgxdi0uNDY5SC45NjlWMTVILjV2LjAzMUgwVjE2em0xLjkwNiAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUgMGguOTM4di0xSDMuNzh2MXptMS44NzUgMGguOTM4di0xaC0uOTM4djF6bTEuODc1LS41di41aC45Mzh2LS41SDguNXYtLjQ2OWgtLjAzMVYxNUg3LjUzdi4wMzFINy41di40NjloLjAzMXptMS44NzUuNWguOTM4di0xaC0uOTM4djF6bTEuODc1IDBoLjkzOHYtMWgtLjkzOHYxem0xLjg3NSAwaC45Mzh2LTFoLS45Mzh2MXptMS44NzUtLjV2LjVIMTZ2LS45NjloLS41VjE1aC0uNDY5di4wMzFIMTV2LjQ2OWguMDMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JvcmRlcldpZHRoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMy41QS41LjUgMCAwIDEgLjUgM2gxNWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVILjVhLjUuNSAwIDAgMS0uNS0uNXYtMnptMCA1QS41LjUgMCAwIDEgLjUgOGgxNWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVILjVhLjUuNSAwIDAgMS0uNS0uNXYtMXptMCA0YS41LjUgMCAwIDEgLjUtLjVoMTVhLjUuNSAwIDAgMSAwIDFILjVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3JkZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAwaC45Njl2LjVIMXYuNDY5SC45NjlWMUguNVYuOTY5SDBWMHptMi44NDQgMWgtLjkzOFYwaC45Mzh2MXptMS44NzUgMEgzLjc4VjBoLjkzOHYxem0xLjg3NSAwaC0uOTM4VjBoLjkzOHYxem0uOTM3IDBWLjk2OUg3LjVWLjVoLjAzMVYwaC45Mzh2LjVIOC41di40NjloLS4wMzFWMUg3LjUzem0yLjgxMyAwaC0uOTM4VjBoLjkzOHYxem0xLjg3NSAwaC0uOTM4VjBoLjkzOHYxem0xLjg3NSAwaC0uOTM4VjBoLjkzOHYxek0xNS41IDFoLS40NjlWLjk2OUgxNVYuNWguMDMxVjBIMTZ2Ljk2OWgtLjVWMXpNMSAxLjkwNnYuOTM4SDB2LS45MzhoMXptNi41LjkzOHYtLjkzOGgxdi45MzhoLTF6bTcuNSAwdi0uOTM4aDF2LjkzOGgtMXpNMSAzLjc4di45MzhIMFYzLjc4aDF6bTYuNS45MzhWMy43OGgxdi45MzhoLTF6bTcuNSAwVjMuNzhoMXYuOTM4aC0xek0xIDUuNjU2di45MzhIMHYtLjkzOGgxem02LjUuOTM4di0uOTM4aDF2LjkzOGgtMXptNy41IDB2LS45MzhoMXYuOTM4aC0xek0uOTY5IDguNUguNXYtLjAzMUgwVjcuNTNoLjVWNy41aC40Njl2LjAzMUgxdi45MzhILjk2OVY4LjV6bTEuODc1IDBoLS45Mzh2LTFoLjkzOHYxem0xLjg3NSAwSDMuNzh2LTFoLjkzOHYxem0xLjg3NSAwaC0uOTM4di0xaC45Mzh2MXptMS44NzUtLjAzMVY4LjVINy41M3YtLjAzMUg3LjVWNy41M2guMDMxVjcuNWguOTM4di4wMzFIOC41di45MzhoLS4wMzF6bTEuODc1LjAzMWgtLjkzOHYtMWguOTM4djF6bTEuODc1IDBoLS45Mzh2LTFoLjkzOHYxem0xLjg3NSAwaC0uOTM4di0xaC45Mzh2MXptMS40MDYgMGgtLjQ2OXYtLjAzMUgxNVY3LjUzaC4wMzFWNy41aC40Njl2LjAzMWguNXYuOTM4aC0uNVY4LjV6TTAgMTAuMzQ0di0uOTM4aDF2LjkzOEgwem03LjUgMHYtLjkzOGgxdi45MzhoLTF6bTguNS0uOTM4di45MzhoLTF2LS45MzhoMXpNMCAxMi4yMnYtLjkzOGgxdi45MzhIMHptNy41IDB2LS45MzhoMXYuOTM4aC0xem04LjUtLjkzOHYuOTM4aC0xdi0uOTM4aDF6TTAgMTQuMDk0di0uOTM4aDF2LjkzOEgwem03LjUgMHYtLjkzOGgxdi45MzhoLTF6bTguNS0uOTM4di45MzhoLTF2LS45MzhoMXpNLjk2OSAxNkgwdi0uOTY5aC41VjE1aC40Njl2LjAzMUgxdi40NjlILjk2OXYuNXptMS44NzUgMGgtLjkzOHYtMWguOTM4djF6bTEuODc1IDBIMy43OHYtMWguOTM4djF6bTEuODc1IDBoLS45Mzh2LTFoLjkzOHYxem0uOTM3IDB2LS41SDcuNXYtLjQ2OWguMDMxVjE1aC45Mzh2LjAzMUg4LjV2LjQ2OWgtLjAzMXYuNUg3LjUzem0yLjgxMyAwaC0uOTM4di0xaC45Mzh2MXptMS44NzUgMGgtLjkzOHYtMWguOTM4djF6bTEuODc1IDBoLS45Mzh2LTFoLjkzOHYxem0uOTM3IDB2LS41SDE1di0uNDY5aC4wMzFWMTVoLjQ2OXYuMDMxaC41VjE2aC0uOTY5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JvdW5kaW5nQm94Q2lyY2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yek0wIDJhMiAyIDAgMCAxIDMuOTM3LS41aDguMTI2QTIgMiAwIDEgMSAxNC41IDMuOTM3djguMTI2YTIgMiAwIDEgMS0yLjQzNyAyLjQzN0gzLjkzN0EyIDIgMCAxIDEgMS41IDEyLjA2M1YzLjkzN0EyIDIgMCAwIDEgMCAyem0yLjUgMS45Mzd2OC4xMjZjLjcwMy4xOCAxLjI1Ni43MzQgMS40MzcgMS40MzdoOC4xMjZhMi4wMDQgMi4wMDQgMCAwIDEgMS40MzctMS40MzdWMy45MzdBMi4wMDQgMi4wMDQgMCAwIDEgMTIuMDYzIDIuNUgzLjkzN0EyLjAwNCAyLjAwNCAwIDAgMSAyLjUgMy45Mzd6TTE0IDFhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yek0yIDEzYTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMnptMTIgMGExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm91bmRpbmdCb3ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAyVjBIMHY1aDJ2NkgwdjVoNXYtMmg2djJoNXYtNWgtMlY1aDJWMGgtNXYySDV6bTYgMXYyaDJ2NmgtMnYySDV2LTJIM1Y1aDJWM2g2em0xLTJoM3YzaC0zVjF6bTMgMTF2M2gtM3YtM2gzek00IDE1SDF2LTNoM3Yzek0xIDRWMWgzdjNIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3hBcnJvd0Rvd25MZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjM2NCAxMi41YS41LjUgMCAwIDAgLjUuNUgxNC41YTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMTBBMS41IDEuNSAwIDAgMCAxNC41IDBoLTEwQTEuNSAxLjUgMCAwIDAgMyAxLjV2Ni42MzZhLjUuNSAwIDEgMCAxIDBWMS41YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAuNS41djEwYS41LjUgMCAwIDEtLjUuNUg3Ljg2NGEuNS41IDAgMCAwLS41LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgMTUuNWEuNS41IDAgMCAwIC41LjVoNWEuNS41IDAgMCAwIDAtMUgxLjcwN2w4LjE0Ny04LjE0NmEuNS41IDAgMCAwLS43MDgtLjcwOEwxIDE0LjI5M1YxMC41YS41LjUgMCAwIDAtMSAwdjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dEb3duUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTguNjM2IDEyLjVhLjUuNSAwIDAgMS0uNS41SDEuNUExLjUgMS41IDAgMCAxIDAgMTEuNXYtMTBBMS41IDEuNSAwIDAgMSAxLjUgMGgxMEExLjUgMS41IDAgMCAxIDEzIDEuNXY2LjYzNmEuNS41IDAgMCAxLTEgMFYxLjVhLjUuNSAwIDAgMC0uNS0uNWgtMTBhLjUuNSAwIDAgMC0uNS41djEwYS41LjUgMCAwIDAgLjUuNWg2LjYzNmEuNS41IDAgMCAxIC41LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2IDE1LjVhLjUuNSAwIDAgMS0uNS41aC01YS41LjUgMCAwIDEgMC0xaDMuNzkzTDYuMTQ2IDYuODU0YS41LjUgMCAxIDEgLjcwOC0uNzA4TDE1IDE0LjI5M1YxMC41YS41LjUgMCAwIDEgMSAwdjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjUgMTBhLjUuNSAwIDAgMS0uNS0uNXYtOGEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAuNS41djhhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDAgMCAxaDJBMS41IDEuNSAwIDAgMCAxNCA5LjV2LThBMS41IDEuNSAwIDAgMCAxMi41IDBoLTlBMS41IDEuNSAwIDAgMCAyIDEuNXY4QTEuNSAxLjUgMCAwIDAgMy41IDExaDJhLjUuNSAwIDAgMCAwLTFoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNjQ2IDE1Ljg1NGEuNS41IDAgMCAwIC43MDggMGwzLTNhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDE0LjI5M1Y1LjVhLjUuNSAwIDAgMC0xIDB2OC43OTNsLTIuMTQ2LTIuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93SW5Eb3duTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOS42MzYgMi41YS41LjUgMCAwIDAtLjUtLjVIMi41QTEuNSAxLjUgMCAwIDAgMSAzLjV2MTBBMS41IDEuNSAwIDAgMCAyLjUgMTVoMTBhMS41IDEuNSAwIDAgMCAxLjUtMS41VjYuODY0YS41LjUgMCAwIDAtMSAwVjEzLjVhLjUuNSAwIDAgMS0uNS41aC0xMGEuNS41IDAgMCAxLS41LS41di0xMGEuNS41IDAgMCAxIC41LS41aDYuNjM2YS41LjUgMCAwIDAgLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTAuNWEuNS41IDAgMCAwIC41LjVoNWEuNS41IDAgMCAwIDAtMUg2LjcwN2w4LjE0Ny04LjE0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw2IDkuMjkzVjUuNWEuNS41IDAgMCAwLTEgMHY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93SW5Eb3duUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuMzY0IDIuNWEuNS41IDAgMCAxIC41LS41SDEzLjVBMS41IDEuNSAwIDAgMSAxNSAzLjV2MTBhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xMEExLjUgMS41IDAgMCAxIDIgMTMuNVY2Ljg2NGEuNS41IDAgMSAxIDEgMFYxMy41YS41LjUgMCAwIDAgLjUuNWgxMGEuNS41IDAgMCAwIC41LS41di0xMGEuNS41IDAgMCAwLS41LS41SDYuODY0YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExIDEwLjVhLjUuNSAwIDAgMS0uNS41aC01YS41LjUgMCAwIDEgMC0xaDMuNzkzTDEuMTQ2IDEuODU0YS41LjUgMCAxIDEgLjcwOC0uNzA4TDEwIDkuMjkzVjUuNWEuNS41IDAgMCAxIDEgMHY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93SW5Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjUgNmEuNS41IDAgMCAwLS41LjV2OGEuNS41IDAgMCAwIC41LjVoOWEuNS41IDAgMCAwIC41LS41di04YS41LjUgMCAwIDAtLjUtLjVoLTJhLjUuNSAwIDAgMSAwLTFoMkExLjUgMS41IDAgMCAxIDE0IDYuNXY4YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtOUExLjUgMS41IDAgMCAxIDIgMTQuNXYtOEExLjUgMS41IDAgMCAxIDMuNSA1aDJhLjUuNSAwIDAgMSAwIDFoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNjQ2IDExLjg1NGEuNS41IDAgMCAwIC43MDggMGwzLTNhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDEwLjI5M1YxLjVhLjUuNSAwIDAgMC0xIDB2OC43OTNMNS4zNTQgOC4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwzIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dJbkxlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwIDMuNWEuNS41IDAgMCAwLS41LS41aC04YS41LjUgMCAwIDAtLjUuNXY5YS41LjUgMCAwIDAgLjUuNWg4YS41LjUgMCAwIDAgLjUtLjV2LTJhLjUuNSAwIDAgMSAxIDB2MkExLjUgMS41IDAgMCAxIDkuNSAxNGgtOEExLjUgMS41IDAgMCAxIDAgMTIuNXYtOUExLjUgMS41IDAgMCAxIDEuNSAyaDhBMS41IDEuNSAwIDAgMSAxMSAzLjV2MmEuNS41IDAgMCAxLTEgMHYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4xNDYgOC4zNTRhLjUuNSAwIDAgMSAwLS43MDhsMy0zYS41LjUgMCAxIDEgLjcwOC43MDhMNS43MDcgNy41SDE0LjVhLjUuNSAwIDAgMSAwIDFINS43MDdsMi4xNDcgMi4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93SW5SaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzLjVhLjUuNSAwIDAgMSAuNS0uNWg4YS41LjUgMCAwIDEgLjUuNXY5YS41LjUgMCAwIDEtLjUuNWgtOGEuNS41IDAgMCAxLS41LS41di0yYS41LjUgMCAwIDAtMSAwdjJBMS41IDEuNSAwIDAgMCA2LjUgMTRoOGExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTlBMS41IDEuNSAwIDAgMCAxNC41IDJoLThBMS41IDEuNSAwIDAgMCA1IDMuNXYyYS41LjUgMCAwIDAgMSAwdi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS44NTQgOC4zNTRhLjUuNSAwIDAgMCAwLS43MDhsLTMtM2EuNS41IDAgMSAwLS43MDguNzA4TDEwLjI5MyA3LjVIMS41YS41LjUgMCAwIDAgMCAxaDguNzkzbC0yLjE0NyAyLjE0NmEuNS41IDAgMCAwIC43MDguNzA4bDMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3hBcnJvd0luVXBMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk05LjYzNiAxMy41YS41LjUgMCAwIDEtLjUuNUgyLjVBMS41IDEuNSAwIDAgMSAxIDEyLjV2LTEwQTEuNSAxLjUgMCAwIDEgMi41IDFoMTBBMS41IDEuNSAwIDAgMSAxNCAyLjV2Ni42MzZhLjUuNSAwIDAgMS0xIDBWMi41YS41LjUgMCAwIDAtLjUtLjVoLTEwYS41LjUgMCAwIDAtLjUuNXYxMGEuNS41IDAgMCAwIC41LjVoNi42MzZhLjUuNSAwIDAgMSAuNS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDUuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFINi43MDdsOC4xNDcgOC4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw2IDYuNzA3VjEwLjVhLjUuNSAwIDAgMS0xIDB2LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dJblVwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuMzY0IDEzLjVhLjUuNSAwIDAgMCAuNS41SDEzLjVhMS41IDEuNSAwIDAgMCAxLjUtMS41di0xMEExLjUgMS41IDAgMCAwIDEzLjUgMWgtMTBBMS41IDEuNSAwIDAgMCAyIDIuNXY2LjYzNmEuNS41IDAgMSAwIDEgMFYyLjVhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MTBhLjUuNSAwIDAgMS0uNS41SDYuODY0YS41LjUgMCAwIDAtLjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEgNS41YS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoMy43OTNsLTguMTQ3IDguMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhMMTAgNi43MDdWMTAuNWEuNS41IDAgMCAwIDEgMHYtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3hBcnJvd0luVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNSAxMGEuNS41IDAgMCAxLS41LS41di04YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIC41LjV2OGEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMCAwIDFoMkExLjUgMS41IDAgMCAwIDE0IDkuNXYtOEExLjUgMS41IDAgMCAwIDEyLjUgMGgtOUExLjUgMS41IDAgMCAwIDIgMS41djhBMS41IDEuNSAwIDAgMCAzLjUgMTFoMmEuNS41IDAgMCAwIDAtMWgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy42NDYgNC4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMyAzYS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDUuNzA3VjE0LjVhLjUuNSAwIDAgMS0xIDBWNS43MDdMNS4zNTQgNy44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAxMi41YS41LjUgMCAwIDAgLjUuNWg4YS41LjUgMCAwIDAgLjUtLjV2LTlhLjUuNSAwIDAgMC0uNS0uNWgtOGEuNS41IDAgMCAwLS41LjV2MmEuNS41IDAgMCAxLTEgMHYtMkExLjUgMS41IDAgMCAxIDYuNSAyaDhBMS41IDEuNSAwIDAgMSAxNiAzLjV2OWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLThBMS41IDEuNSAwIDAgMSA1IDEyLjV2LTJhLjUuNSAwIDAgMSAxIDB2MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNLjE0NiA4LjM1NGEuNS41IDAgMCAxIDAtLjcwOGwzLTNhLjUuNSAwIDEgMSAuNzA4LjcwOEwxLjcwNyA3LjVIMTAuNWEuNS41IDAgMCAxIDAgMUgxLjcwN2wyLjE0NyAyLjE0NmEuNS41IDAgMCAxLS43MDguNzA4bC0zLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMTIuNWEuNS41IDAgMCAxLS41LjVoLThhLjUuNSAwIDAgMS0uNS0uNXYtOWEuNS41IDAgMCAxIC41LS41aDhhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMCAxIDB2LTJBMS41IDEuNSAwIDAgMCA5LjUgMmgtOEExLjUgMS41IDAgMCAwIDAgMy41djlBMS41IDEuNSAwIDAgMCAxLjUgMTRoOGExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTJhLjUuNSAwIDAgMC0xIDB2MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUuODU0IDguMzU0YS41LjUgMCAwIDAgMC0uNzA4bC0zLTNhLjUuNSAwIDAgMC0uNzA4LjcwOEwxNC4yOTMgNy41SDUuNWEuNS41IDAgMCAwIDAgMWg4Ljc5M2wtMi4xNDcgMi4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94QXJyb3dVcExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuMzY0IDMuNWEuNS41IDAgMCAxIC41LS41SDE0LjVBMS41IDEuNSAwIDAgMSAxNiA0LjV2MTBhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xMEExLjUgMS41IDAgMCAxIDMgMTQuNVY3Ljg2NGEuNS41IDAgMSAxIDEgMFYxNC41YS41LjUgMCAwIDAgLjUuNWgxMGEuNS41IDAgMCAwIC41LS41di0xMGEuNS41IDAgMCAwLS41LS41SDcuODY0YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgLjVBLjUuNSAwIDAgMSAuNSAwaDVhLjUuNSAwIDAgMSAwIDFIMS43MDdsOC4xNDcgOC4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwxIDEuNzA3VjUuNWEuNS41IDAgMCAxLTEgMHYtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3hBcnJvd1VwUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTguNjM2IDMuNWEuNS41IDAgMCAwLS41LS41SDEuNUExLjUgMS41IDAgMCAwIDAgNC41djEwQTEuNSAxLjUgMCAwIDAgMS41IDE2aDEwYTEuNSAxLjUgMCAwIDAgMS41LTEuNVY3Ljg2NGEuNS41IDAgMCAwLTEgMFYxNC41YS41LjUgMCAwIDEtLjUuNWgtMTBhLjUuNSAwIDAgMS0uNS0uNXYtMTBhLjUuNSAwIDAgMSAuNS0uNWg2LjYzNmEuNS41IDAgMCAwIC41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNiAuNWEuNS41IDAgMCAwLS41LS41aC01YS41LjUgMCAwIDAgMCAxaDMuNzkzTDYuMTQ2IDkuMTQ2YS41LjUgMCAxIDAgLjcwOC43MDhMMTUgMS43MDdWNS41YS41LjUgMCAwIDAgMSAwdi01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JveEFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNSA2YS41LjUgMCAwIDAtLjUuNXY4YS41LjUgMCAwIDAgLjUuNWg5YS41LjUgMCAwIDAgLjUtLjV2LThhLjUuNSAwIDAgMC0uNS0uNWgtMmEuNS41IDAgMCAxIDAtMWgyQTEuNSAxLjUgMCAwIDEgMTQgNi41djhhMS41IDEuNSAwIDAgMS0xLjUgMS41aC05QTEuNSAxLjUgMCAwIDEgMiAxNC41di04QTEuNSAxLjUgMCAwIDEgMy41IDVoMmEuNS41IDAgMCAxIDAgMWgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy42NDYuMTQ2YS41LjUgMCAwIDEgLjcwOCAwbDMgM2EuNS41IDAgMCAxLS43MDguNzA4TDguNSAxLjcwN1YxMC41YS41LjUgMCAwIDEtMSAwVjEuNzA3TDUuMzU0IDMuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCb3hTZWFtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTg2IDEuMTEzYS41LjUgMCAwIDAtLjM3MiAwTDEuODQ2IDMuNWwyLjQwNC45NjFMMTAuNDA0IDJsLTIuMjE4LS44ODd6bTMuNTY0IDEuNDI2TDUuNTk2IDUgOCA1Ljk2MSAxNC4xNTQgMy41bC0yLjQwNC0uOTYxem0zLjI1IDEuNy02LjUgMi42djcuOTIybDYuNS0yLjZWNC4yNHpNNy41IDE0Ljc2MlY2LjgzOEwxIDQuMjM5djcuOTIzbDYuNSAyLjZ6TTcuNDQzLjE4NGExLjUgMS41IDAgMCAxIDEuMTE0IDBsNy4xMjkgMi44NTJBLjUuNSAwIDAgMSAxNiAzLjV2OC42NjJhMSAxIDAgMCAxLS42MjkuOTI4bC03LjE4NSAyLjg3NGEuNS41IDAgMCAxLS4zNzIgMEwuNjMgMTMuMDlhMSAxIDAgMCAxLS42My0uOTI4VjMuNWEuNS41IDAgMCAxIC4zMTQtLjQ2NEw3LjQ0My4xODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTg2IDEuMTEzYS41LjUgMCAwIDAtLjM3MiAwTDEuODQ2IDMuNSA4IDUuOTYxIDE0LjE1NCAzLjUgOC4xODYgMS4xMTN6TTE1IDQuMjM5bC02LjUgMi42djcuOTIybDYuNS0yLjZWNC4yNHpNNy41IDE0Ljc2MlY2LjgzOEwxIDQuMjM5djcuOTIzbDYuNSAyLjZ6TTcuNDQzLjE4NGExLjUgMS41IDAgMCAxIDEuMTE0IDBsNy4xMjkgMi44NTJBLjUuNSAwIDAgMSAxNiAzLjV2OC42NjJhMSAxIDAgMCAxLS42MjkuOTI4bC03LjE4NSAyLjg3NGEuNS41IDAgMCAxLS4zNzIgMEwuNjMgMTMuMDlhMSAxIDAgMCAxLS42My0uOTI4VjMuNWEuNS41IDAgMCAxIC4zMTQtLjQ2NEw3LjQ0My4xODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJhY2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuMTE0IDguMDYzVjcuOWMxLjAwNS0uMTAyIDEuNDk3LS42MTUgMS40OTctMS42VjQuNTAzYzAtMS4wOTQuMzktMS41MzggMS4zNTQtMS41MzhoLjI3M1YyaC0uMzc2QzMuMjUgMiAyLjQ5IDIuNzU5IDIuNDkgNC4zNTJ2MS41MjRjMCAxLjA5NC0uMzc2IDEuNDU2LTEuNDkgMS40NTZ2MS4yOTljMS4xMTQgMCAxLjQ5LjM2MiAxLjQ5IDEuNDU2djEuNTI0YzAgMS41OTMuNzU5IDIuMzUyIDIuMzcyIDIuMzUyaC4zNzZ2LS45NjRoLS4yNzNjLS45NjQgMC0xLjM1NC0uNDQ0LTEuMzU0LTEuNTM4VjkuNjYzYzAtLjk4NC0uNDkyLTEuNDk3LTEuNDk3LTEuNnpNMTMuODg2IDcuOXYuMTYzYy0xLjAwNS4xMDMtMS40OTcuNjE2LTEuNDk3IDEuNnYxLjc5OGMwIDEuMDk0LS4zOSAxLjUzOC0xLjM1NCAxLjUzOGgtLjI3M3YuOTY0aC4zNzZjMS42MTMgMCAyLjM3Mi0uNzU5IDIuMzcyLTIuMzUydi0xLjUyNGMwLTEuMDk0LjM3Ni0xLjQ1NiAxLjQ5LTEuNDU2VjcuMzMyYy0xLjExNCAwLTEuNDktLjM2Mi0xLjQ5LTEuNDU2VjQuMzUyQzEzLjUxIDIuNzU5IDEyLjc1IDIgMTEuMTM4IDJoLS4zNzZ2Ljk2NGguMjczYy45NjQgMCAxLjM1NC40NDQgMS4zNTQgMS41MzhWNi4zYzAgLjk4NC40OTIgMS40OTcgMS40OTcgMS42elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWNrcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIC41QS41LjUgMCAwIDEgLjUgMGgxNWEuNS41IDAgMCAxIC41LjV2M2EuNS41IDAgMCAxLS41LjVIMTR2MmgxLjVhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMS0uNS41SDE0djJoMS41YS41LjUgMCAwIDEgLjUuNXYzYS41LjUgMCAwIDEtLjUuNUguNWEuNS41IDAgMCAxLS41LS41di0zYS41LjUgMCAwIDEgLjUtLjVIMnYtMkguNWEuNS41IDAgMCAxLS41LS41di0zQS41LjUgMCAwIDEgLjUgNkgyVjRILjVhLjUuNSAwIDAgMS0uNS0uNXYtM3pNMyA0djJoNC41VjRIM3ptNS41IDB2MkgxM1Y0SDguNXpNMyAxMHYyaDQuNXYtMkgzem01LjUgMHYySDEzdi0ySDguNXpNMSAxdjJoMy41VjFIMXptNC41IDB2Mmg1VjFoLTV6bTYgMHYySDE1VjFoLTMuNXpNMSA3djJoMy41VjdIMXptNC41IDB2Mmg1VjdoLTV6bTYgMHYySDE1VjdoLTMuNXpNMSAxM3YyaDMuNXYtMkgxem00LjUgMHYyaDV2LTJoLTV6bTYgMHYySDE1di0yaC0zLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJpZWZjYXNlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMUExLjUgMS41IDAgMCAwIDUgMi41VjNIMS41QTEuNSAxLjUgMCAwIDAgMCA0LjV2MS4zODRsNy42MTQgMi4wM2ExLjUgMS41IDAgMCAwIC43NzIgMEwxNiA1Ljg4NFY0LjVBMS41IDEuNSAwIDAgMCAxNC41IDNIMTF2LS41QTEuNSAxLjUgMCAwIDAgOS41IDFoLTN6bTAgMWgzYS41LjUgMCAwIDEgLjUuNVYzSDZ2LS41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMi41QTEuNSAxLjUgMCAwIDAgMS41IDE0aDEzYTEuNSAxLjUgMCAwIDAgMS41LTEuNVY2Ljg1TDguMTI5IDguOTQ3YS41LjUgMCAwIDEtLjI1OCAwTDAgNi44NXY1LjY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWVmY2FzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMUExLjUgMS41IDAgMCAwIDUgMi41VjNIMS41QTEuNSAxLjUgMCAwIDAgMCA0LjV2OEExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LThBMS41IDEuNSAwIDAgMCAxNC41IDNIMTF2LS41QTEuNSAxLjUgMCAwIDAgOS41IDFoLTN6bTAgMWgzYS41LjUgMCAwIDEgLjUuNVYzSDZ2LS41YS41LjUgMCAwIDEgLjUtLjV6bTEuODg2IDYuOTE0TDE1IDcuMTUxVjEyLjVhLjUuNSAwIDAgMS0uNS41aC0xM2EuNS41IDAgMCAxLS41LS41VjcuMTVsNi42MTQgMS43NjRhMS41IDEuNSAwIDAgMCAuNzcyIDB6TTEuNSA0aDEzYS41LjUgMCAwIDEgLjUuNXYxLjYxNkw4LjEyOSA3Ljk0OGEuNS41IDAgMCAxLS4yNTggMEwxIDYuMTE2VjQuNWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWdodG5lc3NBbHRIaWdoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDN6bTggOGEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMSAwLTFoMmEuNS41IDAgMCAxIC41LjV6bS0xMy41LjVhLjUuNSAwIDAgMCAwLTFoLTJhLjUuNSAwIDAgMCAwIDFoMnptMTEuMTU3LTYuMTU3YS41LjUgMCAwIDEgMCAuNzA3bC0xLjQxNCAxLjQxNGEuNS41IDAgMSAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptLTkuOSAyLjEyMWEuNS41IDAgMCAwIC43MDctLjcwN0wzLjA1IDUuMzQzYS41LjUgMCAxIDAtLjcwNy43MDdsMS40MTQgMS40MTR6TTggN2E0IDQgMCAwIDAtNCA0IC41LjUgMCAwIDAgLjUuNWg3YS41LjUgMCAwIDAgLjUtLjUgNCA0IDAgMCAwLTQtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCcmlnaHRuZXNzQWx0SGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDN6bTggOGEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMSAwLTFoMmEuNS41IDAgMCAxIC41LjV6bS0xMy41LjVhLjUuNSAwIDAgMCAwLTFoLTJhLjUuNSAwIDAgMCAwIDFoMnptMTEuMTU3LTYuMTU3YS41LjUgMCAwIDEgMCAuNzA3bC0xLjQxNCAxLjQxNGEuNS41IDAgMSAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptLTkuOSAyLjEyMWEuNS41IDAgMCAwIC43MDctLjcwN0wzLjA1IDUuMzQzYS41LjUgMCAxIDAtLjcwNy43MDdsMS40MTQgMS40MTR6TTggN2E0IDQgMCAwIDAtNCA0IC41LjUgMCAwIDAgLjUuNWg3YS41LjUgMCAwIDAgLjUtLjUgNCA0IDAgMCAwLTQtNHptMCAxYTMgMyAwIDAgMSAyLjk1OSAyLjVINS4wNEEzIDMgMCAwIDEgOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWdodG5lc3NBbHRMb3dGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1LjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6bTUgNmEuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXpNMiAxMWEuNS41IDAgMSAwIDEgMCAuNS41IDAgMCAwLTEgMHptMTAuMjQzLTMuNTM2YS41LjUgMCAxIDEtLjcwNy0uNzA3LjUuNSAwIDAgMSAuNzA3LjcwN3ptLTguNDg2LS43MDdhLjUuNSAwIDEgMCAuNzA3LjcwNy41LjUgMCAwIDAtLjcwNy0uNzA3ek04IDdhNCA0IDAgMCAwLTQgNCAuNS41IDAgMCAwIC41LjVoN2EuNS41IDAgMCAwIC41LS41IDQgNCAwIDAgMC00LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJpZ2h0bmVzc0FsdExvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgNS41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem01IDZhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6TTIgMTFhLjUuNSAwIDEgMCAxIDAgLjUuNSAwIDAgMC0xIDB6bTEwLjI0My0zLjUzNmEuNS41IDAgMSAxLS43MDctLjcwNy41LjUgMCAwIDEgLjcwNy43MDd6bS04LjQ4Ni0uNzA3YS41LjUgMCAxIDAgLjcwNy43MDcuNS41IDAgMCAwLS43MDctLjcwN3pNOCA3YTQgNCAwIDAgMC00IDQgLjUuNSAwIDAgMCAuNS41aDdhLjUuNSAwIDAgMCAuNS0uNSA0IDQgMCAwIDAtNC00em0wIDFhMyAzIDAgMCAxIDIuOTU5IDIuNUg1LjA0QTMgMyAwIDAgMSA4IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJpZ2h0bmVzc0hpZ2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhhNCA0IDAgMSAxLTggMCA0IDQgMCAwIDEgOCAwek04IDBhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDB6bTAgMTNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDEzem04LTVhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJhLjUuNSAwIDAgMSAuNS41ek0zIDhhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJBLjUuNSAwIDAgMSAzIDh6bTEwLjY1Ny01LjY1N2EuNS41IDAgMCAxIDAgLjcwN2wtMS40MTQgMS40MTVhLjUuNSAwIDEgMS0uNzA3LS43MDhsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6bS05LjE5MyA5LjE5M2EuNS41IDAgMCAxIDAgLjcwN0wzLjA1IDEzLjY1N2EuNS41IDAgMCAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptOS4xOTMgMi4xMjFhLjUuNSAwIDAgMS0uNzA3IDBsLTEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA3ek00LjQ2NCA0LjQ2NWEuNS41IDAgMCAxLS43MDcgMEwyLjM0MyAzLjA1YS41LjUgMCAxIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWdodG5lc3NIaWdoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFhMyAzIDAgMSAxIDAtNiAzIDMgMCAwIDEgMCA2em0wIDFhNCA0IDAgMSAwIDAtOCA0IDQgMCAwIDAgMCA4ek04IDBhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDB6bTAgMTNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDEzem04LTVhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJhLjUuNSAwIDAgMSAuNS41ek0zIDhhLjUuNSAwIDAgMS0uNS41aC0yYS41LjUgMCAwIDEgMC0xaDJBLjUuNSAwIDAgMSAzIDh6bTEwLjY1Ny01LjY1N2EuNS41IDAgMCAxIDAgLjcwN2wtMS40MTQgMS40MTVhLjUuNSAwIDEgMS0uNzA3LS43MDhsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6bS05LjE5MyA5LjE5M2EuNS41IDAgMCAxIDAgLjcwN0wzLjA1IDEzLjY1N2EuNS41IDAgMCAxLS43MDctLjcwN2wxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptOS4xOTMgMi4xMjFhLjUuNSAwIDAgMS0uNzA3IDBsLTEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA3ek00LjQ2NCA0LjQ2NWEuNS41IDAgMCAxLS43MDcgMEwyLjM0MyAzLjA1YS41LjUgMCAxIDEgLjcwNy0uNzA3bDEuNDE0IDEuNDE0YS41LjUgMCAwIDEgMCAuNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0JyaWdodG5lc3NMb3dGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDhhNCA0IDAgMSAxLTggMCA0IDQgMCAwIDEgOCAwek04LjUgMi41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem0wIDExYS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem01LTVhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6bS0xMSAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem05Ljc0My00LjAzNmEuNS41IDAgMSAxLS43MDctLjcwNy41LjUgMCAwIDEgLjcwNy43MDd6bS03Ljc3OSA3Ljc3OWEuNS41IDAgMSAxLS43MDctLjcwNy41LjUgMCAwIDEgLjcwNy43MDd6bTcuMDcyIDBhLjUuNSAwIDEgMSAuNzA3LS43MDcuNS41IDAgMCAxLS43MDcuNzA3ek0zLjc1NyA0LjQ2NGEuNS41IDAgMSAxIC43MDctLjcwNy41LjUgMCAwIDEtLjcwNy43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJpZ2h0bmVzc0xvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExYTMgMyAwIDEgMSAwLTYgMyAzIDAgMCAxIDAgNnptMCAxYTQgNCAwIDEgMCAwLTggNCA0IDAgMCAwIDAgOHptLjUtOS41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem0wIDExYS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem01LTVhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6bS0xMSAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem05Ljc0My00LjAzNmEuNS41IDAgMSAxLS43MDctLjcwNy41LjUgMCAwIDEgLjcwNy43MDd6bS03Ljc3OSA3Ljc3OWEuNS41IDAgMSAxLS43MDctLjcwNy41LjUgMCAwIDEgLjcwNy43MDd6bTcuMDcyIDBhLjUuNSAwIDEgMSAuNzA3LS43MDcuNS41IDAgMCAxLS43MDcuNzA3ek0zLjc1NyA0LjQ2NGEuNS41IDAgMSAxIC43MDctLjcwNy41LjUgMCAwIDEtLjcwNy43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJvYWRjYXN0UGluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMDUgMy4wNWE3IDcgMCAwIDAgMCA5LjkuNS41IDAgMCAxLS43MDcuNzA3IDggOCAwIDAgMSAwLTExLjMxNC41LjUgMCAwIDEgLjcwNy43MDd6bTIuMTIyIDIuMTIyYTQgNCAwIDAgMCAwIDUuNjU2LjUuNSAwIDEgMS0uNzA4LjcwOCA1IDUgMCAwIDEgMC03LjA3Mi41LjUgMCAwIDEgLjcwOC43MDh6bTUuNjU2LS43MDhhLjUuNSAwIDAgMSAuNzA4IDAgNSA1IDAgMCAxIDAgNy4wNzIuNS41IDAgMSAxLS43MDgtLjcwOCA0IDQgMCAwIDAgMC01LjY1Ni41LjUgMCAwIDEgMC0uNzA4em0yLjEyMi0yLjEyYS41LjUgMCAwIDEgLjcwNyAwIDggOCAwIDAgMSAwIDExLjMxMy41LjUgMCAwIDEtLjcwNy0uNzA3IDcgNyAwIDAgMCAwLTkuOS41LjUgMCAwIDEgMC0uNzA3ek02IDhhMiAyIDAgMSAxIDIuNSAxLjkzN1YxNS41YS41LjUgMCAwIDEtMSAwVjkuOTM3QTIgMiAwIDAgMSA2IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnJvYWRjYXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMDUgMy4wNWE3IDcgMCAwIDAgMCA5LjkuNS41IDAgMCAxLS43MDcuNzA3IDggOCAwIDAgMSAwLTExLjMxNC41LjUgMCAwIDEgLjcwNy43MDd6bTIuMTIyIDIuMTIyYTQgNCAwIDAgMCAwIDUuNjU2LjUuNSAwIDEgMS0uNzA4LjcwOCA1IDUgMCAwIDEgMC03LjA3Mi41LjUgMCAwIDEgLjcwOC43MDh6bTUuNjU2LS43MDhhLjUuNSAwIDAgMSAuNzA4IDAgNSA1IDAgMCAxIDAgNy4wNzIuNS41IDAgMSAxLS43MDgtLjcwOCA0IDQgMCAwIDAgMC01LjY1Ni41LjUgMCAwIDEgMC0uNzA4em0yLjEyMi0yLjEyYS41LjUgMCAwIDEgLjcwNyAwIDggOCAwIDAgMSAwIDExLjMxMy41LjUgMCAwIDEtLjcwNy0uNzA3IDcgNyAwIDAgMCAwLTkuOS41LjUgMCAwIDEgMC0uNzA3ek0xMCA4YTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCcnVzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuODI1LjEyYS41LjUgMCAwIDEgLjEzMi41ODRjLTEuNTMgMy40My00Ljc0MyA4LjE3LTcuMDk1IDEwLjY0YTYuMDY3IDYuMDY3IDAgMCAxLTIuMzczIDEuNTM0Yy0uMDE4LjIyNy0uMDYuNTM4LS4xNi44NjgtLjIwMS42NTktLjY2NyAxLjQ3OS0xLjcwOCAxLjc0YTguMTE4IDguMTE4IDAgMCAxLTMuMDc4LjEzMiAzLjY1OSAzLjY1OSAwIDAgMS0uNTYyLS4xMzUgMS4zODIgMS4zODIgMCAwIDEtLjQ2Ni0uMjQ3LjcxNC43MTQgMCAwIDEtLjIwNC0uMjg4LjYyMi42MjIgMCAwIDEgLjAwNC0uNDQzYy4wOTUtLjI0NS4zMTYtLjM4LjQ2MS0uNDUyLjM5NC0uMTk3LjYyNS0uNDUzLjg2Ny0uODI2LjA5NS0uMTQ0LjE4NC0uMjk3LjI4Ny0uNDcybC4xMTctLjE5OGMuMTUxLS4yNTUuMzI2LS41NC41NDYtLjg0OC41MjgtLjczOSAxLjIwMS0uOTI1IDEuNzQ2LS44OTYuMTI2LjAwNy4yNDMuMDI1LjM0OC4wNDguMDYyLS4xNzIuMTQyLS4zOC4yMzgtLjYwOC4yNjEtLjYxOS42NTgtMS40MTkgMS4xODctMi4wNjkgMi4xNzYtMi42NyA2LjE4LTYuMjA2IDkuMTE3LTguMTA0YS41LjUgMCAwIDEgLjU5Ni4wNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCcnVzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44MjUuMTJhLjUuNSAwIDAgMSAuMTMyLjU4NGMtMS41MyAzLjQzLTQuNzQzIDguMTctNy4wOTUgMTAuNjRhNi4wNjcgNi4wNjcgMCAwIDEtMi4zNzMgMS41MzRjLS4wMTguMjI3LS4wNi41MzgtLjE2Ljg2OC0uMjAxLjY1OS0uNjY3IDEuNDc5LTEuNzA4IDEuNzRhOC4xMTggOC4xMTggMCAwIDEtMy4wNzguMTMyIDMuNjU5IDMuNjU5IDAgMCAxLS41NjItLjEzNSAxLjM4MiAxLjM4MiAwIDAgMS0uNDY2LS4yNDcuNzE0LjcxNCAwIDAgMS0uMjA0LS4yODguNjIyLjYyMiAwIDAgMSAuMDA0LS40NDNjLjA5NS0uMjQ1LjMxNi0uMzguNDYxLS40NTIuMzk0LS4xOTcuNjI1LS40NTMuODY3LS44MjYuMDk1LS4xNDQuMTg0LS4yOTcuMjg3LS40NzJsLjExNy0uMTk4Yy4xNTEtLjI1NS4zMjYtLjU0LjU0Ni0uODQ4LjUyOC0uNzM5IDEuMjAxLS45MjUgMS43NDYtLjg5Ni4xMjYuMDA3LjI0My4wMjUuMzQ4LjA0OC4wNjItLjE3Mi4xNDItLjM4LjIzOC0uNjA4LjI2MS0uNjE5LjY1OC0xLjQxOSAxLjE4Ny0yLjA2OSAyLjE3Ni0yLjY3IDYuMTgtNi4yMDYgOS4xMTctOC4xMDRhLjUuNSAwIDAgMSAuNTk2LjA0ek00LjcwNSAxMS45MTJhMS4yMyAxLjIzIDAgMCAwLS40MTktLjFjLS4yNDYtLjAxMy0uNTczLjA1LS44NzkuNDc5LS4xOTcuMjc1LS4zNTUuNTMyLS41Ljc3N2wtLjEwNS4xNzdjLS4xMDYuMTgxLS4yMTMuMzYyLS4zMi41MjhhMy4zOSAzLjM5IDAgMCAxLS43Ni44NjFjLjY5LjExMiAxLjczNi4xMTEgMi42NTctLjEyLjU1OS0uMTM5Ljg0My0uNTY5Ljk5My0xLjA2YTMuMTIyIDMuMTIyIDAgMCAwIC4xMjYtLjc1bC0uNzkzLS43OTJ6bTEuNDQuMDI2Yy4xMi0uMDQuMjc3LS4xLjQ1OC0uMTgzYTUuMDY4IDUuMDY4IDAgMCAwIDEuNTM1LTEuMWMxLjktMS45OTYgNC40MTItNS41NyA2LjA1Mi04LjYzMS0yLjU5IDEuOTI3LTUuNTY2IDQuNjYtNy4zMDIgNi43OTItLjQ0Mi41NDMtLjc5NSAxLjI0My0xLjA0MiAxLjgyNi0uMTIxLjI4OC0uMjE0LjU0LS4yNzUuNzJ2LjAwMWwuNTc1LjU3NXptLTQuOTczIDMuMDQuMDA3LS4wMDVhLjAzMS4wMzEgMCAwIDEtLjAwNy4wMDR6bTMuNTgyLTMuMDQzLjAwMi4wMDFoLS4wMDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnVja2V0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUyMiA1SDJhLjUuNSAwIDAgMC0uNDk0LjU3NGwxLjM3MiA5LjE0OUExLjUgMS41IDAgMCAwIDQuMzYgMTZoNy4yNzhhMS41IDEuNSAwIDAgMCAxLjQ4My0xLjI3N2wxLjM3My05LjE0OUEuNS41IDAgMCAwIDE0IDVoLS41MjJBNS41IDUuNSAwIDAgMCAyLjUyMiA1em0xLjAwNSAwYTQuNSA0LjUgMCAwIDEgOC45NDUgMEgzLjUyN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCdWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41MjIgNUgyYS41LjUgMCAwIDAtLjQ5NC41NzRsMS4zNzIgOS4xNDlBMS41IDEuNSAwIDAgMCA0LjM2IDE2aDcuMjc4YTEuNSAxLjUgMCAwIDAgMS40ODMtMS4yNzdsMS4zNzMtOS4xNDlBLjUuNSAwIDAgMCAxNCA1aC0uNTIyQTUuNSA1LjUgMCAwIDAgMi41MjIgNXptMS4wMDUgMGE0LjUgNC41IDAgMCAxIDguOTQ1IDBIMy41Mjd6bTkuODkyIDEtMS4yODYgOC41NzRhLjUuNSAwIDAgMS0uNDk0LjQyNkg0LjM2YS41LjUgMCAwIDEtLjQ5NC0uNDI2TDIuNTggNmgxMC44Mzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnVnRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk3OC44NTVhLjUuNSAwIDEgMC0uOTU2LjI5bC40MSAxLjM1MkE0Ljk4NSA0Ljk4NSAwIDAgMCAzIDZoMTBhNC45ODUgNC45ODUgMCAwIDAtMS40MzItMy41MDNsLjQxLTEuMzUyYS41LjUgMCAxIDAtLjk1Ni0uMjlsLS4yOTEuOTU2QTQuOTc4IDQuOTc4IDAgMCAwIDggMWE0Ljk3OSA0Ljk3OSAwIDAgMC0yLjczMS44MTFsLS4yOS0uOTU2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDZ2MUg4LjV2OC45NzVBNSA1IDAgMCAwIDEzIDExaC41YS41LjUgMCAwIDEgLjUuNXYuNWEuNS41IDAgMSAwIDEgMHYtLjVhMS41IDEuNSAwIDAgMC0xLjUtMS41SDEzVjloMS41YS41LjUgMCAwIDAgMC0xSDEzVjdoLjVBMS41IDEuNSAwIDAgMCAxNSA1LjVWNWEuNS41IDAgMCAwLTEgMHYuNWEuNS41IDAgMCAxLS41LjVIMTN6bS01LjUgOS45NzVWN0gzVjZoLS41YS41LjUgMCAwIDEtLjUtLjVWNWEuNS41IDAgMCAwLTEgMHYuNUExLjUgMS41IDAgMCAwIDIuNSA3SDN2MUgxLjVhLjUuNSAwIDAgMCAwIDFIM3YxaC0uNUExLjUgMS41IDAgMCAwIDEgMTEuNXYuNWEuNS41IDAgMSAwIDEgMHYtLjVhLjUuNSAwIDAgMSAuNS0uNUgzYTUgNSAwIDAgMCA0LjUgNC45NzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnVnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMzU1LjUyMmEuNS41IDAgMCAxIC42MjMuMzMzbC4yOTEuOTU2QTQuOTc5IDQuOTc5IDAgMCAxIDggMWMxLjAwNyAwIDEuOTQ2LjI5OCAyLjczMS44MTFsLjI5LS45NTZhLjUuNSAwIDEgMSAuOTU3LjI5bC0uNDEgMS4zNTJBNC45ODUgNC45ODUgMCAwIDEgMTMgNmguNWEuNS41IDAgMCAwIC41LS41VjVhLjUuNSAwIDAgMSAxIDB2LjVBMS41IDEuNSAwIDAgMSAxMy41IDdIMTN2MWgxLjVhLjUuNSAwIDAgMSAwIDFIMTN2MWguNWExLjUgMS41IDAgMCAxIDEuNSAxLjV2LjVhLjUuNSAwIDEgMS0xIDB2LS41YS41LjUgMCAwIDAtLjUtLjVIMTNhNSA1IDAgMCAxLTEwIDBoLS41YS41LjUgMCAwIDAtLjUuNXYuNWEuNS41IDAgMSAxLTEgMHYtLjVBMS41IDEuNSAwIDAgMSAyLjUgMTBIM1Y5SDEuNWEuNS41IDAgMCAxIDAtMUgzVjdoLS41QTEuNSAxLjUgMCAwIDEgMSA1LjVWNWEuNS41IDAgMCAxIDEgMHYuNWEuNS41IDAgMCAwIC41LjVIM2MwLTEuMzY0LjU0Ny0yLjYwMSAxLjQzMi0zLjUwM2wtLjQxLTEuMzUyYS41LjUgMCAwIDEgLjMzMy0uNjIzek00IDd2NGE0IDQgMCAwIDAgMy41IDMuOTdWN0g0em00LjUgMHY3Ljk3QTQgNCAwIDAgMCAxMiAxMVY3SDguNXpNMTIgNmEzLjk4OSAzLjk4OSAwIDAgMC0xLjMzNC0yLjk4MkEzLjk4MyAzLjk4MyAwIDAgMCA4IDJhMy45ODMgMy45ODMgMCAwIDAtMi42NjcgMS4wMThBMy45ODkgMy45ODkgMCAwIDAgNCA2aDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQnVpbGRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0Ljc2My4wNzVBLjUuNSAwIDAgMSAxNSAuNXYxNWEuNS41IDAgMCAxLS41LjVoLTNhLjUuNSAwIDAgMS0uNS0uNVYxNGgtMXYxLjVhLjUuNSAwIDAgMS0uNS41aC05YS41LjUgMCAwIDEtLjUtLjVWMTBhLjUuNSAwIDAgMSAuMzQyLS40NzRMNiA3LjY0VjQuNWEuNS41IDAgMCAxIC4yNzYtLjQ0N2w4LTRhLjUuNSAwIDAgMSAuNDg3LjAyMnpNNiA4LjY5NCAxIDEwLjM2VjE1aDVWOC42OTR6TTcgMTVoMnYtMS41YS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIC41LjVWMTVoMlYxLjMwOWwtNyAzLjVWMTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMWgxdjFIMnYtMXptMiAwaDF2MUg0di0xem0tMiAyaDF2MUgydi0xem0yIDBoMXYxSDR2LTF6bTQtNGgxdjFIOFY5em0yIDBoMXYxaC0xVjl6bS0yIDJoMXYxSDh2LTF6bTIgMGgxdjFoLTF2LTF6bTItMmgxdjFoLTFWOXptMCAyaDF2MWgtMXYtMXpNOCA3aDF2MUg4Vjd6bTIgMGgxdjFoLTFWN3ptMiAwaDF2MWgtMVY3ek04IDVoMXYxSDhWNXptMiAwaDF2MWgtMVY1em0yIDBoMXYxaC0xVjV6bTAtMmgxdjFoLTFWM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNCdWxsc2V5ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNBNSA1IDAgMSAxIDggM2E1IDUgMCAwIDEgMCAxMHptMCAxQTYgNiAwIDEgMCA4IDJhNiA2IDAgMCAwIDAgMTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMWEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6bTAgMWE0IDQgMCAxIDAgMC04IDQgNCAwIDAgMCAwIDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsY3VsYXRvckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJ6bTIgLjV2MmEuNS41IDAgMCAwIC41LjVoN2EuNS41IDAgMCAwIC41LS41di0yYS41LjUgMCAwIDAtLjUtLjVoLTdhLjUuNSAwIDAgMC0uNS41em0wIDR2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41ek00LjUgOWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6TTQgMTIuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV6TTcuNSA2YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpNNyA5LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41em0uNSAyLjVhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xek0xMCA2LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41em0uNSAyLjVhLjUuNSAwIDAgMC0uNS41djRhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtNGEuNS41IDAgMCAwLS41LS41aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGN1bGF0b3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg4ek00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDIuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTJ6bTAgNGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTAgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTAgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTMtNmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTAgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTAgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTMtNmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bTAgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6TTE2IDE0VjVIMHY5YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnptLTUuMTQ2LTUuMTQ2LTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMCAxIC43MDgtLjcwOEw3LjUgMTAuNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NTQgNy4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOS43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0xIDR2MTBhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjRIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhckRhdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41em01LjQwMiA5Ljc0NmMuNjI1IDAgMS4xODQtLjQ4NCAxLjE4NC0xLjE4IDAtLjgzMi0uNTI3LTEuMjMtMS4xNi0xLjIzLS41ODYgMC0xLjE2OC4zODctMS4xNjggMS4yMSAwIC44MTcuNTQzIDEuMiAxLjE0NCAxLjJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yem0tNi42NjQtMS4yMWMtMS4xMSAwLTEuNjU2LS43NjctMS43MDMtMS40MDdoLjY4M2MuMDQzLjM3LjM4Ny44MiAxLjA1MS44Mi44NDQgMCAxLjMwMS0uODQ4IDEuMzA1LTIuMTY0aC0uMDI3Yy0uMTUzLjQxNC0uNjM3Ljc5LTEuMzgzLjc5LS44NTIgMC0xLjY3Ni0uNjEtMS42NzYtMS43NyAwLTEuMTM3Ljg3MS0xLjgwOSAxLjc5Ny0xLjgwOSAxLjE3MiAwIDEuOTUzLjczNCAxLjk1MyAyLjY2OCAwIDEuODA1LS43NDIgMi44NzEtMiAyLjg3MXptLTIuODktNS40MzV2NS4zMzJINS43N1Y4LjA3OWgtLjAxMmMtLjI5LjE1Ni0uODgzLjUyLTEuMjU4Ljc3N1Y4LjE2YTEyLjYgMTIuNiAwIDAgMSAxLjMxMy0uODA1aC42MzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJEYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNDQ1IDExLjY4OFY2LjM1NGgtLjYzM0ExMi42IDEyLjYgMCAwIDAgNC41IDcuMTZ2LjY5NWMuMzc1LS4yNTcuOTY5LS42MiAxLjI1OC0uNzc3aC4wMTJ2NC42MWguNjc1em0xLjE4OC0xLjMwNWMuMDQ3LjY0LjU5NCAxLjQwNiAxLjcwMyAxLjQwNiAxLjI1OCAwIDItMS4wNjYgMi0yLjg3MSAwLTEuOTM0LS43ODEtMi42NjgtMS45NTMtMi42NjgtLjkyNiAwLTEuNzk3LjY3Mi0xLjc5NyAxLjgwOSAwIDEuMTYuODI0IDEuNzcgMS42NzYgMS43Ny43NDYgMCAxLjIzLS4zNzYgMS4zODMtLjc5aC4wMjdjLS4wMDQgMS4zMTYtLjQ2MSAyLjE2NC0xLjMwNSAyLjE2NC0uNjY0IDAtMS4wMDgtLjQ1LTEuMDUtLjgyaC0uNjg0em0yLjk1My0yLjMxN2MwIC42OTYtLjU1OSAxLjE4LTEuMTg0IDEuMTgtLjYwMSAwLTEuMTQ0LS4zODMtMS4xNDQtMS4yIDAtLjgyMy41ODItMS4yMSAxLjE2OC0xLjIxLjYzMyAwIDEuMTYuMzk4IDEuMTYgMS4yM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTEgNHYxMGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNEgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyRGF5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNWgxNnY5em0tNC43ODUtNi4xNDVhLjQyOC40MjggMCAxIDAgMC0uODU1LjQyNi40MjYgMCAwIDAtLjQzLjQzYzAgLjIzOC4xOTIuNDI1LjQzLjQyNXptLjMzNi41NjNoLS42NzJ2NC4xMDVoLjY3MlY4LjQxOHptLTYuODY3IDQuMTA1di0yLjNoMi4yNjF2LS42MUg0LjY4NFY3LjgwMWgyLjQ2NHYtLjYxSDR2NS4zMzJoLjY4NHptMy4yOTYgMGguNjc2VjkuOThjMC0uNTU0LjIyNy0xLjAwNy45NTMtMS4wMDcuMTI1IDAgLjI1OC4wMDQuMzI5LjAxNXYtLjYxM2ExLjgwNiAxLjgwNiAwIDAgMC0uMjU0LS4wMmMtLjU4MiAwLS44OTEuMzItMS4wMTIuNTY3aC0uMDJ2LS41MDRINy45OHY0LjEwNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhckRheSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY4NCAxMS41MjN2LTIuM2gyLjI2MXYtLjYxSDQuNjg0VjYuODAxaDIuNDY0di0uNjFINHY1LjMzMmguNjg0em0zLjI5NiAwaC42NzZWOC45OGMwLS41NTQuMjI3LTEuMDA3Ljk1My0xLjAwNy4xMjUgMCAuMjU4LjAwNC4zMjkuMDE1di0uNjEzYTEuODA2IDEuODA2IDAgMCAwLS4yNTQtLjAyYy0uNTgyIDAtLjg5MS4zMi0xLjAxMi41NjdoLS4wMnYtLjUwNEg3Ljk4djQuMTA1em0yLjgwNS01LjA5M2MwIC4yMzguMTkyLjQyNS40My40MjVhLjQyOC40MjggMCAxIDAgMC0uODU1LjQyNi40MjYgMCAwIDAtLjQzLjQzem0uMDk0IDUuMDkzaC42NzJWNy40MThoLS42NzJ2NC4xMDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0xIDR2MTBhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjRIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhckV2ZW50RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yem0tMy41LTdoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMWEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNi41YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTEgNHYxMGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNEgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjVoMTZWNEgwVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6TTE2IDE0VjVIMHY5YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnpNNiAxMGg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgOS41QS41LjUgMCAwIDEgNiA5aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMSA0djEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0SDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJNb250aEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6bS4xMDQgNy4zMDVMNC45IDEwLjE4SDMuMjg0bC44LTIuMzc1aC4wMnptOS4wNzQgMi4yOTdjMC0uODMyLS40MTQtMS4zNi0xLjA2Mi0xLjM2LS42OTIgMC0xLjA5OC40OTItMS4wOTggMS4zNnYuMjUzYzAgLjg1Mi40MDYgMS4zNjQgMS4wOTggMS4zNjQuNjcxIDAgMS4wNjItLjUxNiAxLjA2Mi0xLjM2NHYtLjI1M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6TTIuNTYgMTIuMzMyaC0uNzFMMy43NDggN2guNjk2bDEuODk4IDUuMzMyaC0uNzE5bC0uNTM5LTEuNjAySDMuMWwtLjU0IDEuNjAyem03LjI5LTQuMTA1djQuMTA1aC0uNjY4di0uNTM5aC0uMDI3Yy0uMTQ1LjMyNC0uNTMyLjYwNS0xLjE4OC42MDUtLjg0NyAwLTEuNDUzLS40ODQtMS40NTMtMS40MjVWOC4yMjdoLjY3NnYyLjU1NGMwIC43NjYuNDQxIDEuMDEyLjk4IDEuMDEyLjU5IDAgMS4wMDQtLjM3MSAxLjAwNC0xLjAyM1Y4LjIyN2guNjc2em0xLjI3MyA0LjQxYy4wNzUuMzMyLjQyMi42MzYuOTg1LjYzNi42NDggMCAxLjA3LS4zNzggMS4wNy0xLjAyM3YtLjYwNWgtLjAyYy0uMTYzLjM1NS0uNjEzLjY0OC0xLjE3MS42NDgtLjk1NyAwLTEuNjQtLjY3Mi0xLjY0LTEuOTAydi0uMzRjMC0xLjIwNy42NzUtMS44ODcgMS42NC0xLjg4Ny41NTggMCAxLjAwNC4yOTMgMS4xOTUuNjRoLjAydi0uNTc3aC42NDh2NC4wM2MwIDEuMDUyLS44MTYgMS41NzktMS43NDYgMS41NzktMS4wNDMgMC0xLjU3NC0uNTE2LTEuNjY4LTEuMmguNjg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41NiAxMS4zMzIgMy4xIDkuNzNoMS45ODRsLjU0IDEuNjAyaC43MThMNC40NDQgNmgtLjY5NkwxLjg1IDExLjMzMmguNzF6bTEuNTQ0LTQuNTI3TDQuOSA5LjE4SDMuMjg0bC44LTIuMzc1aC4wMnptNS43NDYuNDIyaC0uNjc2VjkuNzdjMCAuNjUyLS40MTQgMS4wMjMtMS4wMDQgMS4wMjMtLjUzOSAwLS45OC0uMjQ2LS45OC0xLjAxMlY3LjIyN2gtLjY3NnYyLjc0NmMwIC45NDEuNjA2IDEuNDI1IDEuNDUzIDEuNDI1LjY1NiAwIDEuMDQzLS4yOCAxLjE4OC0uNjA1aC4wMjd2LjUzOWguNjY4VjcuMjI3em0yLjI1OCA1LjA0NmMtLjU2MyAwLS45MS0uMzA0LS45ODUtLjYzNmgtLjY4N2MuMDk0LjY4My42MjUgMS4xOTkgMS42NjggMS4xOTkuOTMgMCAxLjc0Ni0uNTI3IDEuNzQ2LTEuNTc4VjcuMjI3aC0uNjQ5di41NzhoLS4wMTljLS4xOTEtLjM0OC0uNjM3LS42NC0xLjE5NS0uNjQtLjk2NSAwLTEuNjQuNjc5LTEuNjQgMS44ODZ2LjM0YzAgMS4yMy42ODMgMS45MDIgMS42NCAxLjkwMi41NTggMCAxLjAwOC0uMjkzIDEuMTcyLS42NDhoLjAydi42MDVjMCAuNjQ1LS40MjMgMS4wMjMtMS4wNzEgMS4wMjN6bS4wMDgtNC41M2MuNjQ4IDAgMS4wNjIuNTI3IDEuMDYyIDEuMzU5di4yNTNjMCAuODQ4LS4zOSAxLjM2NC0xLjA2MiAxLjM2NC0uNjkyIDAtMS4wOTgtLjUxMi0xLjA5OC0xLjM2NHYtLjI1M2MwLS44NjguNDA2LTEuMzYgMS4wOTgtMS4zNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTEgNHYxMGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNEgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6TTE2IDE0VjVIMHY5YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnpNOC41IDguNVYxMEgxMGEuNS41IDAgMCAxIDAgMUg4LjV2MS41YS41LjUgMCAwIDEtMSAwVjExSDZhLjUuNSAwIDAgMSAwLTFoMS41VjguNWEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhclBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA3YS41LjUgMCAwIDEgLjUuNVY5SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWMTBINmEuNS41IDAgMCAxIDAtMWgxLjVWNy41QS41LjUgMCAwIDEgOCA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMSA0djEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0SDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJSYW5nZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxaDE2VjNhMiAyIDAgMCAwLTItMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYxSDRWLjV6TTE2IDdWNUgwdjVoNWExIDEgMCAxIDEgMCAySDB2MmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOWgtNmExIDEgMCAxIDEgMC0yaDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJSYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDdhMSAxIDAgMCAxIDEtMWg1djJoLTVhMSAxIDAgMCAxLTEtMXpNMSA5aDRhMSAxIDAgMCAxIDAgMkgxVjl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0xIDR2MTBhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjRIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcldlZWtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgLjVhLjUuNSAwIDAgMC0xIDBWMUgyYTIgMiAwIDAgMC0yIDJ2MWgxNlYzYTIgMiAwIDAgMC0yLTJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMUg0Vi41ek0xNiAxNFY1SDB2OWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ6TTkuNSA3aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXptMyAwaDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXpNMiAxMC41YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptMy41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNi41YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptLTMgMGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bS01IDNhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xem0zIDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMSA0djEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0SDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IC41YS41LjUgMCAwIDAtMSAwVjFIMmEyIDIgMCAwIDAtMiAydjFoMTZWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMTYgMTRWNUgwdjlhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yek02Ljg1NCA4LjE0NiA4IDkuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgMTBsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDEwLjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgMTAgNi4xNDYgOC44NTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXJYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMTQ2IDcuMTQ2YS41LjUgMCAwIDEgLjcwOCAwTDggOC4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDEgMSAuNzA4LjcwOEw4LjcwNyA5bDEuMTQ3IDEuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA5LjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOSA2LjE0NiA3Ljg1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTEgNHYxMGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNEgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMSA0djEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0SDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyQ2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXptOS45NTQgM0gyLjU0NWMtLjMgMC0uNTQ1LjIyNC0uNTQ1LjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjV6bS0yLjYgNS44NTRhLjUuNSAwIDAgMC0uNzA4LS43MDhMNy41IDEwLjc5MyA2LjM1NCA5LjY0NmEuNS41IDAgMSAwLS43MDguNzA4bDEuNSAxLjVhLjUuNSAwIDAgMCAuNzA4IDBsMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMkNoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg1NCA4LjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAwIDEgLjcwOC0uNzA4TDcuNSAxMC43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxMWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDRhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVIM2EuNS41IDAgMCAxLS41LS41VjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyRGF0ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40MDIgMTAuMjQ2Yy42MjUgMCAxLjE4NC0uNDg0IDEuMTg0LTEuMTggMC0uODMyLS41MjctMS4yMy0xLjE2LTEuMjMtLjU4NiAwLTEuMTY4LjM4Ny0xLjE2OCAxLjIxIDAgLjgxNy41NDMgMS4yIDEuMTQ0IDEuMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41em0tNC4xMTggOS43OWMxLjI1OCAwIDItMS4wNjcgMi0yLjg3MiAwLTEuOTM0LS43ODEtMi42NjgtMS45NTMtMi42NjgtLjkyNiAwLTEuNzk3LjY3Mi0xLjc5NyAxLjgwOSAwIDEuMTYuODI0IDEuNzcgMS42NzYgMS43Ny43NDYgMCAxLjIzLS4zNzYgMS4zODMtLjc5aC4wMjdjLS4wMDQgMS4zMTYtLjQ2MSAyLjE2NC0xLjMwNSAyLjE2NC0uNjY0IDAtMS4wMDgtLjQ1LTEuMDUtLjgyaC0uNjg0Yy4wNDcuNjQuNTk0IDEuNDA2IDEuNzAzIDEuNDA2em0tMi44OS01LjQzNWgtLjYzM0ExMi42IDEyLjYgMCAwIDAgNC41IDguMTZ2LjY5NWMuMzc1LS4yNTcuOTY5LS42MiAxLjI1OC0uNzc3aC4wMTJ2NC42MWguNjc1VjcuMzU0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMkRhdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi40NDUgMTIuNjg4VjcuMzU0aC0uNjMzQTEyLjYgMTIuNiAwIDAgMCA0LjUgOC4xNnYuNjk1Yy4zNzUtLjI1Ny45NjktLjYyIDEuMjU4LS43NzdoLjAxMnY0LjYxaC42NzV6bTEuMTg4LTEuMzA1Yy4wNDcuNjQuNTk0IDEuNDA2IDEuNzAzIDEuNDA2IDEuMjU4IDAgMi0xLjA2NiAyLTIuODcxIDAtMS45MzQtLjc4MS0yLjY2OC0xLjk1My0yLjY2OC0uOTI2IDAtMS43OTcuNjcyLTEuNzk3IDEuODA5IDAgMS4xNi44MjQgMS43NyAxLjY3NiAxLjc3Ljc0NiAwIDEuMjMtLjM3NiAxLjM4My0uNzloLjAyN2MtLjAwNCAxLjMxNi0uNDYxIDIuMTY0LTEuMzA1IDIuMTY0LS42NjQgMC0xLjAwOC0uNDUtMS4wNS0uODJoLS42ODR6bTIuOTUzLTIuMzE3YzAgLjY5Ni0uNTU5IDEuMTgtMS4xODQgMS4xOC0uNjAxIDAtMS4xNDQtLjM4My0xLjE0NC0xLjIgMC0uODIzLjU4Mi0xLjIxIDEuMTY4LTEuMjEuNjMzIDAgMS4xNi4zOTggMS4xNiAxLjIzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAyYTEgMSAwIDAgMC0xIDF2MTFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SDNhLjUuNSAwIDAgMS0uNS0uNVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMkRheUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXptLTIuMjQgNC44NTVhLjQyOC40MjggMCAxIDAgMC0uODU1LjQyNi40MjYgMCAwIDAtLjQyOS40M2MwIC4yMzguMTkyLjQyNS40My40MjV6bS4zMzcuNTYzaC0uNjcydjQuMTA1aC42NzJWOC40MTh6bS02Ljg2NyA0LjEwNXYtMi4zaDIuMjYxdi0uNjFINC42ODRWNy44MDFoMi40NjR2LS42MUg0djUuMzMyaC42ODR6bTMuMjk2IDBoLjY3NlY5Ljk4YzAtLjU1NC4yMjctMS4wMDcuOTUzLTEuMDA3LjEyNSAwIC4yNTguMDA0LjMyOS4wMTV2LS42MTNhMS44MDYgMS44MDYgMCAwIDAtLjI1NC0uMDJjLS41ODIgMC0uODkxLjMyLTEuMDEyLjU2N2gtLjAydi0uNTA0SDcuOTh2NC4xMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyRGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjg0IDEyLjUyM3YtMi4zaDIuMjYxdi0uNjFINC42ODRWNy44MDFoMi40NjR2LS42MUg0djUuMzMyaC42ODR6bTMuMjk2IDBoLjY3NlY5Ljk4YzAtLjU1NC4yMjctMS4wMDcuOTUzLTEuMDA3LjEyNSAwIC4yNTguMDA0LjMyOS4wMTV2LS42MTNhMS44MDYgMS44MDYgMCAwIDAtLjI1NC0uMDJjLS41ODIgMC0uODkxLjMyLTEuMDEyLjU2N2gtLjAydi0uNTA0SDcuOTh2NC4xMDV6bTIuODA1LTUuMDkzYzAgLjIzOC4xOTIuNDI1LjQzLjQyNWEuNDI4LjQyOCAwIDEgMCAwLS44NTUuNDI2LjQyNiAwIDAgMC0uNDMuNDN6bS4wOTQgNS4wOTNoLjY3MlY4LjQxOGgtLjY3MnY0LjEwNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTIgMmExIDEgMCAwIDAtMSAxdjExYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgNGEuNS41IDAgMCAxIC41LS41aDEwYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNUgzYS41LjUgMCAwIDEtLjUtLjVWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJFdmVudEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXpNMTEuNSA3YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3LjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAyYTEgMSAwIDAgMC0xIDF2MTFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SDNhLjUuNSAwIDAgMS0uNS0uNVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAuNWEuNS41IDAgMCAwLTEgMFYxSDJhMiAyIDAgMCAwLTIgMnYxMWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWM2EyIDIgMCAwIDAtMi0yaC0xVi41YS41LjUgMCAwIDAtMSAwVjFINFYuNXpNMi41NDUgM2gxMC45MWMuMyAwIC41NDUuMjI0LjU0NS41djFjMCAuMjc2LS4yNDQuNS0uNTQ2LjVIMi41NDVDMi4yNDUgNSAyIDQuNzc2IDIgNC41di0xYzAtLjI3Ni4yNDQtLjUuNTQ1LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMk1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41ek02IDEwYS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFINnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTAuNUEuNS41IDAgMCAxIDYgMTBoNGEuNS41IDAgMCAxIDAgMUg2YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxMWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDRhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVIM2EuNS41IDAgMCAxLS41LS41VjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyTW9udGhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMTA0IDcuODA1IDQuOSAxMC4xOEgzLjI4NGwuOC0yLjM3NWguMDJ6bTkuMDc0IDIuMjk3YzAtLjgzMi0uNDE0LTEuMzYtMS4wNjItMS4zNi0uNjkyIDAtMS4wOTguNDkyLTEuMDk4IDEuMzZ2LjI1M2MwIC44NTIuNDA2IDEuMzY0IDEuMDk4IDEuMzY0LjY3MSAwIDEuMDYyLS41MTYgMS4wNjItMS4zNjR2LS4yNTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXpNMi41NjEgMTIuMzMyIDMuMSAxMC43M2gxLjk4NGwuNTQgMS42MDJoLjcxOEw0LjQ0NCA3aC0uNjk2TDEuODUgMTIuMzMyaC43MXpNOS44NSA4LjIyN2gtLjY3NnYyLjU0M2MwIC42NTItLjQxNCAxLjAyMy0xLjAwNCAxLjAyMy0uNTM5IDAtLjk4LS4yNDYtLjk4LTEuMDEyVjguMjI3aC0uNjc2djIuNzQ2YzAgLjk0MS42MDYgMS40MjUgMS40NTMgMS40MjUuNjU2IDAgMS4wNDMtLjI4IDEuMTg4LS42MDVoLjAyN3YuNTM5aC42NjhWOC4yMjd6bTEuMjczIDQuNDFoLS42ODdjLjA5NC42ODMuNjI1IDEuMTk5IDEuNjY4IDEuMTk5LjkzIDAgMS43NDYtLjUyNyAxLjc0Ni0xLjU3OFY4LjIyN2gtLjY0OXYuNTc4aC0uMDE5Yy0uMTkxLS4zNDgtLjYzNy0uNjQtMS4xOTUtLjY0LS45NjUgMC0xLjY0LjY3OS0xLjY0IDEuODg2di4zNGMwIDEuMjMuNjgzIDEuOTAyIDEuNjQgMS45MDIuNTU4IDAgMS4wMDgtLjI5MyAxLjE3Mi0uNjQ4aC4wMnYuNjA1YzAgLjY0NS0uNDIzIDEuMDIzLTEuMDcxIDEuMDIzLS41NjMgMC0uOTEtLjMwNC0uOTg1LS42MzZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyTW9udGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi41NiAxMi4zMzIuNTQtMS42MDJoMS45ODRsLjU0IDEuNjAyaC43MThMNC40NDQgN2gtLjY5NkwxLjg1IDEyLjMzMmguNzF6bTEuNTQ0LTQuNTI3TDQuOSAxMC4xOEgzLjI4NGwuOC0yLjM3NWguMDJ6bTUuNzQ2LjQyMmgtLjY3NnYyLjU0M2MwIC42NTItLjQxNCAxLjAyMy0xLjAwNCAxLjAyMy0uNTM5IDAtLjk4LS4yNDYtLjk4LTEuMDEyVjguMjI3aC0uNjc2djIuNzQ2YzAgLjk0MS42MDYgMS40MjUgMS40NTMgMS40MjUuNjU2IDAgMS4wNDMtLjI4IDEuMTg4LS42MDVoLjAyN3YuNTM5aC42NjhWOC4yMjd6bTIuMjU4IDUuMDQ2Yy0uNTYzIDAtLjkxLS4zMDQtLjk4NS0uNjM2aC0uNjg3Yy4wOTQuNjgzLjYyNSAxLjE5OSAxLjY2OCAxLjE5OS45MyAwIDEuNzQ2LS41MjcgMS43NDYtMS41NzhWOC4yMjdoLS42NDl2LjU3OGgtLjAxOWMtLjE5MS0uMzQ4LS42MzctLjY0LTEuMTk1LS42NC0uOTY1IDAtMS42NC42NzktMS42NCAxLjg4NnYuMzRjMCAxLjIzLjY4MyAxLjkwMiAxLjY0IDEuOTAyLjU1OCAwIDEuMDA4LS4yOTMgMS4xNzItLjY0OGguMDJ2LjYwNWMwIC42NDUtLjQyMyAxLjAyMy0xLjA3MSAxLjAyM3ptLjAwOC00LjUzYy42NDggMCAxLjA2Mi41MjcgMS4wNjIgMS4zNTl2LjI1M2MwIC44NDgtLjM5IDEuMzY0LTEuMDYyIDEuMzY0LS42OTIgMC0xLjA5OC0uNTEyLTEuMDk4LTEuMzY0di0uMjUzYzAtLjg2OC40MDYtMS4zNiAxLjA5OC0xLjM2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAyYTEgMSAwIDAgMC0xIDF2MTFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SDNhLjUuNSAwIDAgMS0uNS0uNVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMlBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAzLjV2MWMwIC4yNzYuMjQ0LjUuNTQ1LjVoMTAuOTFjLjMgMCAuNTQ1LS4yMjQuNTQ1LS41di0xYzAtLjI3Ni0uMjQ0LS41LS41NDYtLjVIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41em02LjUgNWEuNS41IDAgMCAwLTEgMFYxMEg2YS41LjUgMCAwIDAgMCAxaDEuNXYxLjVhLjUuNSAwIDAgMCAxIDBWMTFIMTBhLjUuNSAwIDAgMCAwLTFIOC41VjguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAwYS41LjUgMCAwIDEgLjUuNVYxaDhWLjVhLjUuNSAwIDAgMSAxIDBWMWgxYTIgMiAwIDAgMSAyIDJ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDFWLjVhLjUuNSAwIDAgMSAuNS0uNXpNMiAyYTEgMSAwIDAgMC0xIDF2MTFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41SDNhLjUuNSAwIDAgMS0uNS0uNVY0ek04IDhhLjUuNSAwIDAgMSAuNS41VjEwSDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWMTFINmEuNS41IDAgMCAxIDAtMWgxLjVWOC41QS41LjUgMCAwIDEgOCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMlJhbmdlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41ek0xMCA3YTEgMSAwIDAgMCAwIDJoNVY3aC01em0tNCA0YTEgMSAwIDAgMC0xLTFIMXYyaDRhMSAxIDAgMCAwIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJSYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTIgMmExIDEgMCAwIDAtMSAxdjExYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgNGEuNS41IDAgMCAxIC41LS41aDEwYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNUgzYS41LjUgMCAwIDEtLjUtLjVWNHpNOSA4YTEgMSAwIDAgMSAxLTFoNXYyaC01YTEgMSAwIDAgMS0xLTF6bS04IDJoNGExIDEgMCAxIDEgMCAySDF2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIyV2Vla0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41em05Ljk1NCAzSDIuNTQ1Yy0uMyAwLS41NDUuMjI0LS41NDUuNXYxYzAgLjI3Ni4yNDQuNS41NDUuNWgxMC45MWMuMyAwIC41NDUtLjIyNC41NDUtLjV2LTFjMC0uMjc2LS4yNDQtLjUtLjU0Ni0uNXpNOC41IDdhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xem0zIDBhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xek0zIDEwLjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41em0zLjUtLjVhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyMldlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxMWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDRhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVIM2EuNS41IDAgMCAxLS41LS41VjR6TTExIDcuNWEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bS0zIDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xem0tNSAzYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptMyAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6bTkuOTU0IDNIMi41NDVjLS4zIDAtLjU0NS4yMjQtLjU0NS41djFjMCAuMjc2LjI0NC41LjU0NS41aDEwLjkxYy4zIDAgLjU0NS0uMjI0LjU0NS0uNXYtMWMwLS4yNzYtLjI0NC0uNS0uNTQ2LS41em0tNi42IDUuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgMTBsLTEuMTQ3IDEuMTQ2YS41LjUgMCAwIDAgLjcwOC43MDhMOCAxMC43MDdsMS4xNDYgMS4xNDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOC43MDcgMTBsMS4xNDctMS4xNDZhLjUuNSAwIDAgMC0uNzA4LS43MDhMOCA5LjI5MyA2Ljg1NCA4LjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjJYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMTQ2IDguMTQ2YS41LjUgMCAwIDEgLjcwOCAwTDggOS4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDEgMSAuNzA4LjcwOEw4LjcwNyAxMGwxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDggMTAuNzA3bC0xLjE0NiAxLjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyAxMCA2LjE0NiA4Ljg1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTIgMmExIDEgMCAwIDAtMSAxdjExYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgNGEuNS41IDAgMCAxIC41LS41aDEwYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNUgzYS41LjUgMCAwIDEtLjUtLjVWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxMWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDRhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVIM2EuNS41IDAgMCAxLS41LS41VjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIzRXZlbnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMmgxNmEyIDIgMCAwIDAtMi0ySDJ6TTAgMTRWM2gxNnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnptMTItOGExIDEgMCAxIDAgMiAwIDEgMSAwIDAgMC0yIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIzRXZlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMEgyYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNMSAzLjg1N0MxIDMuMzg0IDEuNDQ4IDMgMiAzaDEyYy41NTIgMCAxIC4zODQgMSAuODU3djEwLjI4NmMwIC40NzMtLjQ0OC44NTctMSAuODU3SDJjLS41NTIgMC0xLS4zODQtMS0uODU3VjMuODU3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyM0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMkgwem0wIDF2MTFhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjNIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjNSYW5nZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAyaDE2YTIgMiAwIDAgMC0yLTJIMnpNMCA4VjNoMTZ2MmgtNmExIDEgMCAxIDAgMCAyaDZ2N2EyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnYtNGg2YTEgMSAwIDEgMCAwLTJIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjNSYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAwSDJhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek0xIDMuODU3QzEgMy4zODQgMS40NDggMyAyIDNoMTJjLjU1MiAwIDEgLjM4NCAxIC44NTd2MTAuMjg2YzAgLjQ3My0uNDQ4Ljg1Ny0xIC44NTdIMmMtLjU1MiAwLTEtLjM4NC0xLS44NTdWMy44NTd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxMGExIDEgMCAwIDAgMC0ySDF2Mmg2em0yLTNoNlY1SDlhMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjNXZWVrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJoMTZhMiAyIDAgMCAwLTItMkgyek0wIDE0VjNoMTZ2MTFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTEyLThhMSAxIDAgMSAwIDIgMCAxIDEgMCAwIDAtMiAwek01IDlhMSAxIDAgMSAwIDIgMCAxIDEgMCAwIDAtMiAwem01LTJhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyek0yIDlhMSAxIDAgMSAwIDIgMCAxIDEgMCAwIDAtMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyM1dlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMEgyYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNMSAzLjg1N0MxIDMuMzg0IDEuNDQ4IDMgMiAzaDEyYy41NTIgMCAxIC4zODQgMSAuODU3djEwLjI4NmMwIC40NzMtLjQ0OC44NTctMSAuODU3SDJjLS41NTIgMC0xLS4zODQtMS0uODU3VjMuODU3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDdhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0tNSAzYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptMi0zYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptLTUgM2ExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXIzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDBIMmEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTEgMy44NTdDMSAzLjM4NCAxLjQ0OCAzIDIgM2gxMmMuNTUyIDAgMSAuMzg0IDEgLjg1N3YxMC4yODZjMCAuNDczLS40NDguODU3LTEgLjg1N0gyYy0uNTUyIDAtMS0uMzg0LTEtLjg1N1YzLjg1N3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgN2ExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6bTMgMGExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6bTMgMGExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6bS05IDNhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0zIDBhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0zIDBhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0zIDBhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0tOSAzYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptMyAwYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptMyAwYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYWxlbmRhcjRFdmVudCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTIgMmExIDEgMCAwIDAtMSAxdjFoMTRWM2ExIDEgMCAwIDAtMS0xSDJ6bTEzIDNIMXY5YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDcuNWEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FsZW5kYXI0UmFuZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxaDE0VjNhMSAxIDAgMCAwLTEtMUgyem0xMyAzSDF2OWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDcuNWEuNS41IDAgMCAxIC41LS41SDE1djJIOS41YS41LjUgMCAwIDEtLjUtLjV2LTF6bS0yIDN2MWEuNS41IDAgMCAxLS41LjVIMXYtMmg1LjVhLjUuNSAwIDAgMSAuNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyNFdlZWsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDBhLjUuNSAwIDAgMSAuNS41VjFoOFYuNWEuNS41IDAgMCAxIDEgMFYxaDFhMiAyIDAgMCAxIDIgMnYxMWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMVYuNWEuNS41IDAgMCAxIC41LS41ek0yIDJhMSAxIDAgMCAwLTEgMXYxaDE0VjNhMSAxIDAgMCAwLTEtMUgyem0xMyAzSDF2OWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA3LjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xem0tMyAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtMXptLTIgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV2LTF6bS0zIDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbGVuZGFyNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMGEuNS41IDAgMCAxIC41LjVWMWg4Vi41YS41LjUgMCAwIDEgMSAwVjFoMWEyIDIgMCAwIDEgMiAydjExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxVi41YS41LjUgMCAwIDEgLjUtLjV6TTIgMmExIDEgMCAwIDAtMSAxdjFoMTRWM2ExIDEgMCAwIDAtMS0xSDJ6bTEzIDNIMXY5YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbWVyYUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSA4LjVhMi41IDIuNSAwIDEgMS01IDAgMi41IDIuNSAwIDAgMSA1IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA0YTIgMiAwIDAgMC0yIDJ2NmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0yaC0xLjE3MmEyIDIgMCAwIDEtMS40MTQtLjU4NmwtLjgyOC0uODI4QTIgMiAwIDAgMCA5LjE3MiAySDYuODI4YTIgMiAwIDAgMC0xLjQxNC41ODZsLS44MjguODI4QTIgMiAwIDAgMSAzLjE3MiA0SDJ6bS41IDJhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6bTkgMi41YTMuNSAzLjUgMCAxIDEtNyAwIDMuNSAzLjUgMCAwIDEgNyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbWVyYVJlZWxzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOSA2aC41YTIgMiAwIDAgMSAxLjk4MyAxLjczOGwzLjExLTEuMzgyQTEgMSAwIDAgMSAxNiA3LjI2OXY3LjQ2MmExIDEgMCAwIDEtMS40MDYuOTEzbC0zLjExMS0xLjM4MkEyIDIgMCAwIDEgOS41IDE2SDJhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYW1lcmFSZWVscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDNhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwek0xIDNhMiAyIDAgMSAwIDQgMCAyIDIgMCAwIDAtNCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNmguNWEyIDIgMCAwIDEgMS45ODMgMS43MzhsMy4xMS0xLjM4MkExIDEgMCAwIDEgMTYgNy4yNjl2Ny40NjJhMSAxIDAgMCAxLTEuNDA2LjkxM2wtMy4xMTEtMS4zODJBMiAyIDAgMCAxIDkuNSAxNkgyYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDd6bTYgOC43M1Y3LjI3bC0zLjUgMS41NTV2NC4zNWwzLjUgMS41NTZ6TTEgOHY2YTEgMSAwIDAgMCAxIDFoNy41YTEgMSAwIDAgMCAxLTFWOGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDZhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2ek03IDNhMiAyIDAgMSAxIDQgMCAyIDIgMCAwIDEtNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbWVyYVZpZGVvRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMCA1YTIgMiAwIDAgMSAyLTJoNy41YTIgMiAwIDAgMSAxLjk4MyAxLjczOGwzLjExLTEuMzgyQTEgMSAwIDAgMSAxNiA0LjI2OXY3LjQ2MmExIDEgMCAwIDEtMS40MDYuOTEzbC0zLjExMS0xLjM4MkEyIDIgMCAwIDEgOS41IDEzSDJhMiAyIDAgMCAxLTItMlY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhbWVyYVZpZGVvT2ZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuOTYxIDEyLjM2NWExLjk5IDEuOTkgMCAwIDAgLjUyMi0xLjEwM2wzLjExIDEuMzgyQTEgMSAwIDAgMCAxNiAxMS43MzFWNC4yNjlhMSAxIDAgMCAwLTEuNDA2LS45MTNsLTMuMTExIDEuMzgyQTIgMiAwIDAgMCA5LjUgM0g0LjI3Mmw2LjY5IDkuMzY1em0tMTAuMTE0LTlBMi4wMDEgMi4wMDEgMCAwIDAgMCA1djZhMiAyIDAgMCAwIDIgMmg1LjcyOEwuODQ3IDMuMzY2em05Ljc0NiAxMS45MjUtMTAtMTQgLjgxNC0uNTggMTAgMTQtLjgxNC41OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYW1lcmFWaWRlb09mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuOTYxIDEyLjM2NWExLjk5IDEuOTkgMCAwIDAgLjUyMi0xLjEwM2wzLjExIDEuMzgyQTEgMSAwIDAgMCAxNiAxMS43MzFWNC4yNjlhMSAxIDAgMCAwLTEuNDA2LS45MTNsLTMuMTExIDEuMzgyQTIgMiAwIDAgMCA5LjUgM0g0LjI3MmwuNzE0IDFIOS41YTEgMSAwIDAgMSAxIDF2NmExIDEgMCAwIDEtLjE0NC41MThsLjYwNS44NDd6TTEuNDI4IDQuMThBLjk5OS45OTkgMCAwIDAgMSA1djZhMSAxIDAgMCAwIDEgMWg1LjAxNGwuNzE0IDFIMmEyIDIgMCAwIDEtMi0yVjVjMC0uNjc1LjMzNC0xLjI3Mi44NDctMS42MzRsLjU4LjgxNHpNMTUgMTEuNzNsLTMuNS0xLjU1NXYtNC4zNUwxNSA0LjI2OXY3LjQ2MnptLTQuNDA3IDMuNTYtMTAtMTQgLjgxNC0uNTggMTAgMTQtLjgxNC41OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYW1lcmFWaWRlbyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMCA1YTIgMiAwIDAgMSAyLTJoNy41YTIgMiAwIDAgMSAxLjk4MyAxLjczOGwzLjExLTEuMzgyQTEgMSAwIDAgMSAxNiA0LjI2OXY3LjQ2MmExIDEgMCAwIDEtMS40MDYuOTEzbC0zLjExMS0xLjM4MkEyIDIgMCAwIDEgOS41IDEzSDJhMiAyIDAgMCAxLTItMlY1em0xMS41IDUuMTc1IDMuNSAxLjU1NlY0LjI2OWwtMy41IDEuNTU2djQuMzV6TTIgNGExIDEgMCAwIDAtMSAxdjZhMSAxIDAgMCAwIDEgMWg3LjVhMSAxIDAgMCAwIDEtMVY1YTEgMSAwIDAgMC0xLTFIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYW1lcmEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUgMTJhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNmExIDEgMCAwIDEgMS0xaDEuMTcyYTMgMyAwIDAgMCAyLjEyLS44NzlsLjgzLS44MjhBMSAxIDAgMCAxIDYuODI3IDNoMi4zNDRhMSAxIDAgMCAxIC43MDcuMjkzbC44MjguODI4QTMgMyAwIDAgMCAxMi44MjggNUgxNGExIDEgMCAwIDEgMSAxdjZ6TTIgNGEyIDIgMCAwIDAtMiAydjZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjZhMiAyIDAgMCAwLTItMmgtMS4xNzJhMiAyIDAgMCAxLTEuNDE0LS41ODZsLS44MjgtLjgyOEEyIDIgMCAwIDAgOS4xNzIgMkg2LjgyOGEyIDIgMCAwIDAtMS40MTQuNTg2bC0uODI4LjgyOEEyIDIgMCAwIDEgMy4xNzIgNEgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFhMi41IDIuNSAwIDEgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6bTAgMWEzLjUgMy41IDAgMSAwIDAtNyAzLjUgMy41IDAgMCAwIDAgN3pNMyA2LjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FtZXJhMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhjMC0xLjY1NyAyLjM0My0zIDQtM1Y0YTQgNCAwIDAgMC00IDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzE4IDNoMi4wMTVDMTUuMjUzIDMgMTYgMy43NDYgMTYgNC42Njd2Ni42NjZjMCAuOTItLjc0NiAxLjY2Ny0xLjY2NyAxLjY2N2gtMi4wMTVBNS45NyA1Ljk3IDAgMCAxIDkgMTRhNS45NzIgNS45NzIgMCAwIDEtMy4zMTgtMUgxLjY2N0MuNzQ3IDEzIDAgMTIuMjU0IDAgMTEuMzMzVjQuNjY3QzAgMy43NDcuNzQ2IDMgMS42NjcgM0gyYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDEgMSAxaC42ODJBNS45NyA1Ljk3IDAgMCAxIDkgMmMxLjIyNyAwIDIuMzY3LjM2OCAzLjMxOCAxek0yIDQuNWEuNS41IDAgMSAwLTEgMCAuNS41IDAgMCAwIDEgMHpNMTQgOEE1IDUgMCAxIDAgNCA4YTUgNSAwIDAgMCAxMCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcHNsb2NrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjI3IDEuMDQ3YTEgMSAwIDAgMSAxLjQ2IDBsNi4zNDUgNi43N2MuNi42MzguMTQ2IDEuNjgzLS43MyAxLjY4M0gxMS41djFhMSAxIDAgMCAxLTEgMWgtNWExIDEgMCAwIDEtMS0xdi0xSDEuNjU0Qy43OCA5LjUuMzI2IDguNDU1LjkyNCA3LjgxNkw3LjI3IDEuMDQ3ek00LjUgMTMuNWExIDEgMCAwIDEgMS0xaDVhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMXYtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXBzbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy4yNyAxLjA0N2ExIDEgMCAwIDEgMS40NiAwbDYuMzQ1IDYuNzdjLjYuNjM4LjE0NiAxLjY4My0uNzMgMS42ODNIMTEuNXYxYTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMXYtMUgxLjY1NEMuNzggOS41LjMyNiA4LjQ1NS45MjQgNy44MTZMNy4yNyAxLjA0N3pNMTQuMzQ2IDguNSA4IDEuNzMxIDEuNjU0IDguNUg0LjVhMSAxIDAgMCAxIDEgMXYxaDV2LTFhMSAxIDAgMCAxIDEtMWgyLjg0NnptLTkuODQ2IDVhMSAxIDAgMCAxIDEtMWg1YTEgMSAwIDAgMSAxIDF2MWExIDEgMCAwIDEtMSAxaC01YTEgMSAwIDAgMS0xLTF2LTF6bTYgMGgtNXYxaDV2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZENoZWNrbGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC41IDNhLjUuNSAwIDAgMSAuNS41djlhLjUuNSAwIDAgMS0uNS41aC0xM2EuNS41IDAgMCAxLS41LS41di05YS41LjUgMCAwIDEgLjUtLjVoMTN6bS0xMy0xQTEuNSAxLjUgMCAwIDAgMCAzLjV2OUExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTlBMS41IDEuNSAwIDAgMCAxNC41IDJoLTEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNS41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0tMS40OTYtLjg1NGEuNS41IDAgMCAxIDAgLjcwOGwtMS41IDEuNWEuNS41IDAgMCAxLS43MDggMGwtLjUtLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhsLjE0Ni4xNDcgMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4IDB6TTcgOS41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0tMS40OTYtLjg1NGEuNS41IDAgMCAxIDAgLjcwOGwtMS41IDEuNWEuNS41IDAgMCAxLS43MDggMGwtLjUtLjVhLjUuNSAwIDAgMSAuNzA4LS43MDhsLjE0Ni4xNDcgMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZEhlYWRpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAzYS41LjUgMCAwIDEgLjUuNXY5YS41LjUgMCAwIDEtLjUuNWgtMTNhLjUuNSAwIDAgMS0uNS0uNXYtOWEuNS41IDAgMCAxIC41LS41aDEzem0tMTMtMUExLjUgMS41IDAgMCAwIDAgMy41djlBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41di05QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDguNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41em0wLTVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtOWEuNS41IDAgMCAxLS41LS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmRJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjAwMiA1LjVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41IDJBMS41IDEuNSAwIDAgMCAwIDMuNXY5QTEuNSAxLjUgMCAwIDAgMS41IDE0aDEzYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtOUExLjUgMS41IDAgMCAwIDE0LjUgMmgtMTN6bTEzIDFhLjUuNSAwIDAgMSAuNS41djZsLTMuNzc1LTEuOTQ3YS41LjUgMCAwIDAtLjU3Ny4wOTNsLTMuNzEgMy43MS0yLjY2LTEuNzcyYS41LjUgMCAwIDAtLjYzLjA2MkwxLjAwMiAxMnYuNTRBLjUwNS41MDUgMCAwIDEgMSAxMi41di05YS41LjUgMCAwIDEgLjUtLjVoMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZExpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNSAzYS41LjUgMCAwIDEgLjUuNXY5YS41LjUgMCAwIDEtLjUuNWgtMTNhLjUuNSAwIDAgMS0uNS0uNXYtOWEuNS41IDAgMCAxIC41LS41aDEzem0tMTMtMUExLjUgMS41IDAgMCAwIDAgMy41djlBMS41IDEuNSAwIDAgMCAxLjUgMTRoMTNhMS41IDEuNSAwIDAgMCAxLjUtMS41di05QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03QS41LjUgMCAwIDEgNSA4em0wLTIuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXptMCA1YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0tMS01YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwek00IDhhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6bTAgMi41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmRUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjUgM2EuNS41IDAgMCAxIC41LjV2OWEuNS41IDAgMCAxLS41LjVoLTEzYS41LjUgMCAwIDEtLjUtLjV2LTlhLjUuNSAwIDAgMSAuNS0uNWgxM3ptLTEzLTFBMS41IDEuNSAwIDAgMCAwIDMuNXY5QTEuNSAxLjUgMCAwIDAgMS41IDE0aDEzYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtOUExLjUgMS41IDAgMCAwIDE0LjUgMmgtMTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6TTMgOGEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlBLjUuNSAwIDAgMSAzIDh6bTAgMi41YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0RG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNDcgMTEuMTQgMi40NTEgNS42NThDMS44ODUgNS4wMTMgMi4zNDUgNCAzLjIwNCA0aDkuNTkyYTEgMSAwIDAgMSAuNzUzIDEuNjU5bC00Ljc5NiA1LjQ4YTEgMSAwIDAgMS0xLjUwNiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0RG93blNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem00IDRhLjUuNSAwIDAgMC0uMzc0LjgzMmw0IDQuNWEuNS41IDAgMCAwIC43NDggMGw0LTQuNUEuNS41IDAgMCAwIDEyIDZINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJldERvd25TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy42MjYgNi44MzJBLjUuNSAwIDAgMSA0IDZoOGEuNS41IDAgMCAxIC4zNzQuODMybC00IDQuNWEuNS41IDAgMCAxLS43NDggMGwtNC00LjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem0xNSAwYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjIwNCA1aDkuNTkyTDggMTAuNDgxIDMuMjA0IDV6bS0uNzUzLjY1OSA0Ljc5NiA1LjQ4YTEgMSAwIDAgMCAxLjUwNiAwbDQuNzk2LTUuNDhjLjU2Ni0uNjQ3LjEwNi0xLjY1OS0uNzUzLTEuNjU5SDMuMjA0YTEgMSAwIDAgMC0uNzUzIDEuNjU5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0TGVmdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMy44NiA4Ljc1MyA1LjQ4MiA0Ljc5NmMuNjQ2LjU2NiAxLjY1OC4xMDYgMS42NTgtLjc1M1YzLjIwNGExIDEgMCAwIDAtMS42NTktLjc1M2wtNS40OCA0Ljc5NmExIDEgMCAwIDAgMCAxLjUwNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJldExlZnRTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptMTAuNSAxMFY0YS41LjUgMCAwIDAtLjgzMi0uMzc0bC00LjUgNGEuNS41IDAgMCAwIDAgLjc0OGw0LjUgNEEuNS41IDAgMCAwIDEwLjUgMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZXRMZWZ0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4yMDUgMTIuNDU2QS41LjUgMCAwIDAgMTAuNSAxMlY0YS41LjUgMCAwIDAtLjgzMi0uMzc0bC00LjUgNGEuNS41IDAgMCAwIDAgLjc0OGw0LjUgNGEuNS41IDAgMCAwIC41MzcuMDgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAxMi43OTZWMy4yMDRMNC41MTkgOCAxMCAxMi43OTZ6bS0uNjU5Ljc1My01LjQ4LTQuNzk2YTEgMSAwIDAgMSAwLTEuNTA2bDUuNDgtNC43OTZBMSAxIDAgMCAxIDExIDMuMjA0djkuNTkyYTEgMSAwIDAgMS0xLjY1OS43NTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZXRSaWdodEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTIuMTQgOC43NTMtNS40ODIgNC43OTZjLS42NDYuNTY2LTEuNjU4LjEwNi0xLjY1OC0uNzUzVjMuMjA0YTEgMSAwIDAgMSAxLjY1OS0uNzUzbDUuNDggNC43OTZhMSAxIDAgMCAxIDAgMS41MDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZXRSaWdodFNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem01LjUgMTBhLjUuNSAwIDAgMCAuODMyLjM3NGw0LjUtNGEuNS41IDAgMCAwIDAtLjc0OGwtNC41LTRBLjUuNSAwIDAgMCA1LjUgNHY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0UmlnaHRTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNzk1IDEyLjQ1NkEuNS41IDAgMCAxIDUuNSAxMlY0YS41LjUgMCAwIDEgLjgzMi0uMzc0bDQuNSA0YS41LjUgMCAwIDEgMCAuNzQ4bC00LjUgNGEuNS41IDAgMCAxLS41MzcuMDgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMi43OTZWMy4yMDRMMTEuNDgxIDggNiAxMi43OTZ6bS42NTkuNzUzIDUuNDgtNC43OTZhMSAxIDAgMCAwIDAtMS41MDZMNi42NiAyLjQ1MUM2LjAxMSAxLjg4NSA1IDIuMzQ1IDUgMy4yMDR2OS41OTJhMSAxIDAgMCAwIDEuNjU5Ljc1M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJldFVwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm03LjI0NyA0Ljg2LTQuNzk2IDUuNDgxYy0uNTY2LjY0Ny0uMTA2IDEuNjU5Ljc1MyAxLjY1OWg5LjU5MmExIDEgMCAwIDAgLjc1My0xLjY1OWwtNC43OTYtNS40OGExIDEgMCAwIDAtMS41MDYgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJldFVwU3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTQgOWg4YS41LjUgMCAwIDAgLjM3NC0uODMybC00LTQuNWEuNS41IDAgMCAwLS43NDggMGwtNCA0LjVBLjUuNSAwIDAgMCA0IDExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcmV0VXBTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNTQ0IDEwLjcwNUEuNS41IDAgMCAwIDQgMTFoOGEuNS41IDAgMCAwIC4zNzQtLjgzMmwtNC00LjVhLjUuNSAwIDAgMC0uNzQ4IDBsLTQgNC41YS41LjUgMCAwIDAtLjA4Mi41Mzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FyZXRVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjIwNCAxMWg5LjU5Mkw4IDUuNTE5IDMuMjA0IDExem0tLjc1My0uNjU5IDQuNzk2LTUuNDhhMSAxIDAgMCAxIDEuNTA2IDBsNC43OTYgNS40OGMuNTY2LjY0Ny4xMDYgMS42NTktLjc1MyAxLjY1OUgzLjIwNGExIDEgMCAwIDEtLjc1My0xLjY1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJ0Q2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDFhLjUuNSAwIDAgMCAwIDFoMS4xMWwuNDAxIDEuNjA3IDEuNDk4IDcuOTg1QS41LjUgMCAwIDAgNCAxMmgxYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGg3YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGgxYS41LjUgMCAwIDAgLjQ5MS0uNDA4bDEuNS04QS41LjUgMCAwIDAgMTQuNSAzSDIuODlsLS40MDUtMS42MjFBLjUuNSAwIDAgMCAyIDFILjV6TTYgMTRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem03IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0tMS42NDYtNy42NDYtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDggOC4yOTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJ0Q2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzU0IDYuMzU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDggOC4yOTMgNi44NTQgNy4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41YS41LjUgMCAwIDAgLjcwOCAwbDMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uNSAxYS41LjUgMCAwIDAgMCAxaDEuMTFsLjQwMSAxLjYwNyAxLjQ5OCA3Ljk4NUEuNS41IDAgMCAwIDQgMTJoMWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRoN2EyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRoMWEuNS41IDAgMCAwIC40OTEtLjQwOGwxLjUtOEEuNS41IDAgMCAwIDE0LjUgM0gyLjg5bC0uNDA1LTEuNjIxQS41LjUgMCAwIDAgMiAxSC41em0zLjkxNSAxMEwzLjEwMiA0aDEwLjc5NmwtMS4zMTMgN2gtOC4xN3pNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FydERhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDFhLjUuNSAwIDAgMCAwIDFoMS4xMWwuNDAxIDEuNjA3IDEuNDk4IDcuOTg1QS41LjUgMCAwIDAgNCAxMmgxYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGg3YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGgxYS41LjUgMCAwIDAgLjQ5MS0uNDA4bDEuNS04QS41LjUgMCAwIDAgMTQuNSAzSDIuODlsLS40MDUtMS42MjFBLjUuNSAwIDAgMCAyIDFILjV6TTYgMTRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem03IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwek02LjUgN2g0YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcnREYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA3YS41LjUgMCAwIDAgMCAxaDRhLjUuNSAwIDAgMCAwLTFoLTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMWEuNS41IDAgMCAwIDAgMWgxLjExbC40MDEgMS42MDcgMS40OTggNy45ODVBLjUuNSAwIDAgMCA0IDEyaDFhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDdhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDFhLjUuNSAwIDAgMCAuNDkxLS40MDhsMS41LThBLjUuNSAwIDAgMCAxNC41IDNIMi44OWwtLjQwNS0xLjYyMUEuNS41IDAgMCAwIDIgMUguNXptMy45MTUgMTBMMy4xMDIgNGgxMC43OTZsLTEuMzEzIDdoLTguMTd6TTYgMTRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem03IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMS41QS41LjUgMCAwIDEgLjUgMUgyYS41LjUgMCAwIDEgLjQ4NS4zNzlMMi44OSAzSDE0LjVhLjUuNSAwIDAgMSAuNDkxLjU5MmwtMS41IDhBLjUuNSAwIDAgMSAxMyAxMkg0YS41LjUgMCAwIDEtLjQ5MS0uNDA4TDIuMDEgMy42MDcgMS42MSAySC41YS41LjUgMCAwIDEtLjUtLjV6TTUgMTJhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00em03IDBhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00em0tNyAxYTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnptNyAwYTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJ0UGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMWEuNS41IDAgMCAwIDAgMWgxLjExbC40MDEgMS42MDcgMS40OTggNy45ODVBLjUuNSAwIDAgMCA0IDEyaDFhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDdhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDFhLjUuNSAwIDAgMCAuNDkxLS40MDhsMS41LThBLjUuNSAwIDAgMCAxNC41IDNIMi44OWwtLjQwNS0xLjYyMUEuNS41IDAgMCAwIDIgMUguNXpNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTkgNS41VjdoMS41YS41LjUgMCAwIDEgMCAxSDl2MS41YS41LjUgMCAwIDEtMSAwVjhINi41YS41LjUgMCAwIDEgMC0xSDhWNS41YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcnRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNS41YS41LjUgMCAwIDAtMSAwVjdINi41YS41LjUgMCAwIDAgMCAxSDh2MS41YS41LjUgMCAwIDAgMSAwVjhoMS41YS41LjUgMCAwIDAgMC0xSDlWNS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDFhLjUuNSAwIDAgMCAwIDFoMS4xMWwuNDAxIDEuNjA3IDEuNDk4IDcuOTg1QS41LjUgMCAwIDAgNCAxMmgxYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGg3YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNGgxYS41LjUgMCAwIDAgLjQ5MS0uNDA4bDEuNS04QS41LjUgMCAwIDAgMTQuNSAzSDIuODlsLS40MDUtMS42MjFBLjUuNSAwIDAgMCAyIDFILjV6bTMuOTE1IDEwTDMuMTAyIDRoMTAuNzk2bC0xLjMxMyA3aC04LjE3ek02IDE0YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptNyAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJ0WEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgMWEuNS41IDAgMCAwIDAgMWgxLjExbC40MDEgMS42MDcgMS40OTggNy45ODVBLjUuNSAwIDAgMCA0IDEyaDFhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDdhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00aDFhLjUuNSAwIDAgMCAuNDkxLS40MDhsMS41LThBLjUuNSAwIDAgMCAxNC41IDNIMi44OWwtLjQwNS0xLjYyMUEuNS41IDAgMCAwIDIgMUguNXpNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTcuMzU0IDUuNjQ2IDguNSA2Ljc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4TDkuMjA3IDcuNWwxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDguNSA4LjIwNyA3LjM1NCA5LjM1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw3Ljc5MyA3LjUgNi42NDYgNi4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FydFggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4zNTQgNS42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw3Ljc5MyA3LjUgNi42NDYgOC42NDZhLjUuNSAwIDEgMCAuNzA4LjcwOEw4LjUgOC4yMDdsMS4xNDYgMS4xNDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOS4yMDcgNy41bDEuMTQ3LTEuMTQ2YS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSA2Ljc5MyA3LjM1NCA1LjY0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uNSAxYS41LjUgMCAwIDAgMCAxaDEuMTFsLjQwMSAxLjYwNyAxLjQ5OCA3Ljk4NUEuNS41IDAgMCAwIDQgMTJoMWEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRoN2EyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTRoMWEuNS41IDAgMCAwIC40OTEtLjQwOGwxLjUtOEEuNS41IDAgMCAwIDE0LjUgM0gyLjg5bC0uNDA1LTEuNjIxQS41LjUgMCAwIDAgMiAxSC41em0zLjkxNSAxMEwzLjEwMiA0aDEwLjc5NmwtMS4zMTMgN2gtOC4xN3pNNiAxNGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTcgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNUEuNS41IDAgMCAxIC41IDFIMmEuNS41IDAgMCAxIC40ODUuMzc5TDIuODkgM0gxNC41YS41LjUgMCAwIDEgLjQ5MS41OTJsLTEuNSA4QS41LjUgMCAwIDEgMTMgMTJINGEuNS41IDAgMCAxLS40OTEtLjQwOEwyLjAxIDMuNjA3IDEuNjEgMkguNWEuNS41IDAgMCAxLS41LS41ek0zLjEwMiA0bDEuMzEzIDdoOC4xN2wxLjMxMy03SDMuMTAyek01IDEyYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNHptNyAwYTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNHptLTcgMWExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTcgMGExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2FydDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyLjVBLjUuNSAwIDAgMSAuNSAySDJhLjUuNSAwIDAgMSAuNDg1LjM3OUwyLjg5IDRIMTQuNWEuNS41IDAgMCAxIC40ODUuNjIxbC0xLjUgNkEuNS41IDAgMCAxIDEzIDExSDRhLjUuNSAwIDAgMS0uNDg1LS4zNzlMMS42MSAzSC41YS41LjUgMCAwIDEtLjUtLjV6TTMuMTQgNWwxLjI1IDVoOC4yMmwxLjI1LTVIMy4xNHpNNSAxM2ExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bS0yIDFhMiAyIDAgMSAxIDQgMCAyIDIgMCAwIDEtNCAwem05LTFhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yem0tMiAxYTIgMiAwIDEgMSA0IDAgMiAyIDAgMCAxLTQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDYXJ0MyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNUEuNS41IDAgMCAxIC41IDFIMmEuNS41IDAgMCAxIC40ODUuMzc5TDIuODkgM0gxNC41YS41LjUgMCAwIDEgLjQ5LjU5OGwtMSA1YS41LjUgMCAwIDEtLjQ2NS40MDFsLTkuMzk3LjQ3Mkw0LjQxNSAxMUgxM2EuNS41IDAgMCAxIDAgMUg0YS41LjUgMCAwIDEtLjQ5MS0uNDA4TDIuMDEgMy42MDcgMS42MSAySC41YS41LjUgMCAwIDEtLjUtLjV6TTMuMTAyIDRsLjg0IDQuNDc5IDkuMTQ0LS40NTlMMTMuODkgNEgzLjEwMnpNNSAxMmEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bTcgMGEyIDIgMCAxIDAgMCA0IDIgMiAwIDAgMCAwLTR6bS03IDFhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yem03IDBhMSAxIDAgMSAxIDAgMiAxIDEgMCAwIDEgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NhcnQ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMi41QS41LjUgMCAwIDEgLjUgMkgyYS41LjUgMCAwIDEgLjQ4NS4zNzlMMi44OSA0SDE0LjVhLjUuNSAwIDAgMSAuNDg1LjYyMWwtMS41IDZBLjUuNSAwIDAgMSAxMyAxMUg0YS41LjUgMCAwIDEtLjQ4NS0uMzc5TDEuNjEgM0guNWEuNS41IDAgMCAxLS41LS41ek0zLjE0IDVsLjUgMkg1VjVIMy4xNHpNNiA1djJoMlY1SDZ6bTMgMHYyaDJWNUg5em0zIDB2MmgxLjM2bC41LTJIMTJ6bTEuMTEgM0gxMnYyaC42MWwuNS0yek0xMSA4SDl2MmgyVjh6TTggOEg2djJoMlY4ek01IDhIMy44OWwuNSAySDVWOHptMCA1YTEgMSAwIDEgMCAwIDIgMSAxIDAgMCAwIDAtMnptLTIgMWEyIDIgMCAxIDEgNCAwIDIgMiAwIDAgMS00IDB6bTktMWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bS0yIDFhMiAyIDAgMSAxIDQgMCAyIDIgMCAwIDEtNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nhc2hDb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMSAxNWE0IDQgMCAxIDAgMC04IDQgNCAwIDAgMCAwIDh6bTUtNGE1IDUgMCAxIDEtMTAgMCA1IDUgMCAwIDEgMTAgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjQzOCAxMS45NDRjLjA0Ny41OTYuNTE4IDEuMDYgMS4zNjMgMS4xMTZ2LjQ0aC4zNzV2LS40NDNjLjg3NS0uMDYxIDEuMzg2LS41MjkgMS4zODYtMS4yMDcgMC0uNjE4LS4zOS0uOTM2LTEuMDktMS4xbC0uMjk2LS4wN3YtMS4yYy4zNzYuMDQzLjYxNC4yNDguNjcxLjUzMmguNjU4Yy0uMDQ3LS41NzUtLjU0LTEuMDI0LTEuMzI5LTEuMDczVjguNWgtLjM3NXYuNDVjLS43NDcuMDczLTEuMjU1LjUyMi0xLjI1NSAxLjE1OCAwIC41NjIuMzc4LjkyIDEuMDA3IDEuMDY2bC4yNDguMDYxdjEuMjcyYy0uMzg0LS4wNTgtLjYzOS0uMjctLjY5Ni0uNTYzaC0uNjY4em0xLjM2LTEuMzU0Yy0uMzY5LS4wODUtLjU2OS0uMjYtLjU2OS0uNTIyIDAtLjI5NC4yMTYtLjUxNC41NzItLjU3OHYxLjFoLS4wMDN6bS40MzIuNzQ2Yy40NDkuMTA0LjY1NS4yNzIuNjU1LjU2OSAwIC4zMzktLjI1Ny41NzEtLjcwOS42MTR2LTEuMTk1bC4wNTQuMDEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMGExIDEgMCAwIDAtMSAxdjhhMSAxIDAgMCAwIDEgMWg0LjA4M2MuMDU4LS4zNDQuMTQ1LS42NzguMjU4LTFIM2EyIDIgMCAwIDAtMi0yVjNhMiAyIDAgMCAwIDItMmgxMGEyIDIgMCAwIDAgMiAydjMuNTI4Yy4zOC4zNC43MTcuNzI4IDEgMS4xNTRWMWExIDEgMCAwIDAtMS0xSDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45OTggNS4wODMgMTAgNWEyIDIgMCAxIDAtMy4xMzIgMS42NSA1Ljk4MiA1Ljk4MiAwIDAgMSAzLjEzLTEuNTY3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nhc2hTdGFjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDNhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxSDF6bTcgOGEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA1YTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjV6bTMgMGEyIDIgMCAwIDEtMiAydjRhMiAyIDAgMCAxIDIgMmgxMGEyIDIgMCAwIDEgMi0yVjdhMiAyIDAgMCAxLTItMkgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMGEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjR6bTMgMGEyIDIgMCAwIDEtMiAydjRhMiAyIDAgMCAxIDIgMmgxMGEyIDIgMCAwIDEgMi0yVjZhMiAyIDAgMCAxLTItMkgzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nhc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtNy42NDYgOS4zNTQtMy43OTIgMy43OTJhLjUuNSAwIDAgMCAuMzUzLjg1NGg3LjU4NmEuNS41IDAgMCAwIC4zNTQtLjg1NEw4LjM1NCA5LjM1NGEuNS41IDAgMCAwLS43MDggMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40MTQgMTFIMTQuNWEuNS41IDAgMCAwIC41LS41di03YS41LjUgMCAwIDAtLjUtLjVoLTEzYS41LjUgMCAwIDAtLjUuNXY3YS41LjUgMCAwIDAgLjUuNWgzLjA4NmwtMSAxSDEuNUExLjUgMS41IDAgMCAxIDAgMTAuNXYtN0ExLjUgMS41IDAgMCAxIDEuNSAyaDEzQTEuNSAxLjUgMCAwIDEgMTYgMy41djdhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0yLjA4NmwtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXREb3RzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4YzAgMy44NjYtMy41ODIgNy04IDdhOS4wNiA5LjA2IDAgMCAxLTIuMzQ3LS4zMDZjLS41ODQuMjk2LTEuOTI1Ljg2NC00LjE4MSAxLjIzNC0uMi4wMzItLjM1Mi0uMTc2LS4yNzMtLjM2Mi4zNTQtLjgzNi42NzQtMS45NS43Ny0yLjk2NkMuNzQ0IDExLjM3IDAgOS43NiAwIDhjMC0zLjg2NiAzLjU4Mi03IDgtN3M4IDMuMTM0IDggN3pNNSA4YTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHptNCAwYTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHptMyAxYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0RG90cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDhhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0zIDFhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTIuMTY1IDE1LjgwMy4wMi0uMDA0YzEuODMtLjM2MyAyLjk0OC0uODQyIDMuNDY4LTEuMTA1QTkuMDYgOS4wNiAwIDAgMCA4IDE1YzQuNDE4IDAgOC0zLjEzNCA4LTdzLTMuNTgyLTctOC03LTggMy4xMzQtOCA3YzAgMS43Ni43NDMgMy4zNyAxLjk3IDQuNmExMC40MzcgMTAuNDM3IDAgMCAxLS41MjQgMi4zMThsLS4wMDMuMDExYTEwLjcyMiAxMC43MjIgMCAwIDEtLjI0NC42MzdjLS4wNzkuMTg2LjA3NC4zOTQuMjczLjM2MmEyMS42NzMgMjEuNjczIDAgMCAwIC42OTMtLjEyNXptLjgtMy4xMDhhMSAxIDAgMCAwLS4yODctLjgwMUMxLjYxOCAxMC44MyAxIDkuNDY4IDEgOGMwLTMuMTkyIDMuMDA0LTYgNy02czcgMi44MDggNyA2YzAgMy4xOTMtMy4wMDQgNi03IDZhOC4wNiA4LjA2IDAgMCAxLTIuMDg4LS4yNzIgMSAxIDAgMCAwLS43MTEuMDc0Yy0uMzg3LjE5Ni0xLjI0LjU3LTIuNjM0Ljg5M2ExMC45NyAxMC45NyAwIDAgMCAuMzk4LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNWM0LjQxOCAwIDgtMy4xMzQgOC03cy0zLjU4Mi03LTgtNy04IDMuMTM0LTggN2MwIDEuNzYuNzQzIDMuMzcgMS45NyA0LjYtLjA5NyAxLjAxNi0uNDE3IDIuMTMtLjc3MSAyLjk2Ni0uMDc5LjE4Ni4wNzQuMzk0LjI3My4zNjIgMi4yNTYtLjM3IDMuNTk3LS45MzggNC4xOC0xLjIzNEE5LjA2IDkuMDYgMCAwIDAgOCAxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0TGVmdERvdHNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDQuNDE0YTEgMSAwIDAgMC0uNzA3LjI5M0wuODU0IDE1LjE0NkEuNS41IDAgMCAxIDAgMTQuNzkzVjJ6bTUgNGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTQgMGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTMgMWExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdExlZnREb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFINC40MTRBMiAyIDAgMCAwIDMgMTEuNTg2bC0yIDJWMmExIDEgMCAwIDEgMS0xaDEyek0yIDBhMiAyIDAgMCAwLTIgMnYxMi43OTNhLjUuNSAwIDAgMCAuODU0LjM1M2wyLjg1My0yLjg1M0ExIDEgMCAwIDEgNC40MTQgMTJIMTRhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRMZWZ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnYxMi43OTNhLjUuNSAwIDAgMCAuODU0LjM1M2wyLjg1My0yLjg1M0ExIDEgMCAwIDEgNC40MTQgMTJIMTRhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0TGVmdFF1b3RlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkg0LjQxNGExIDEgMCAwIDAtLjcwNy4yOTNMLjg1NCAxNS4xNDZBLjUuNSAwIDAgMSAwIDE0Ljc5M1Yyem03LjE5NCAyLjc2NmExLjY4OCAxLjY4OCAwIDAgMC0uMjI3LS4yNzIgMS40NjcgMS40NjcgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgNS43MzQgNEM0Ljc3NiA0IDQgNC43NDYgNCA1LjY2N2MwIC45Mi43NzYgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjYtLjEzNy4zODktLjM5LjgwNC0uODEgMS4yMmEuNDA1LjQwNSAwIDAgMCAuMDExLjU5Yy4xNzMuMTYuNDQ3LjE1NS42MTQtLjAxIDEuMzM0LTEuMzI5IDEuMzctMi43NTguOTQxLTMuNzA2YTIuNDYxIDIuNDYxIDAgMCAwLS4yMjctLjR6TTExIDcuMDczYy0uMTM2LjM4OS0uMzkuODA0LS44MSAxLjIyYS40MDUuNDA1IDAgMCAwIC4wMTIuNTljLjE3Mi4xNi40NDYuMTU1LjYxMy0uMDEgMS4zMzQtMS4zMjkgMS4zNy0yLjc1OC45NDItMy43MDZhMi40NjYgMi40NjYgMCAwIDAtLjIyOC0uNCAxLjY4NiAxLjY4NiAwIDAgMC0uMjI3LS4yNzMgMS40NjYgMS40NjYgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgMTAuMDcgNGMtLjk1NyAwLTEuNzM0Ljc0Ni0xLjczNCAxLjY2NyAwIC45Mi43NzcgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdExlZnRRdW90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDQuNDE0QTIgMiAwIDAgMCAzIDExLjU4NmwtMiAyVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTIuNzkzYS41LjUgMCAwIDAgLjg1NC4zNTNsMi44NTMtMi44NTNBMSAxIDAgMCAxIDQuNDE0IDEySDE0YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNjYgNC43NkExLjY2NSAxLjY2NSAwIDAgMCA0IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6bTQgMEExLjY2NSAxLjY2NSAwIDAgMCA4IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdExlZnRUZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkg0LjQxNGExIDEgMCAwIDAtLjcwNy4yOTNMLjg1NCAxNS4xNDZBLjUuNSAwIDAgMSAwIDE0Ljc5M1Yyem0zLjUgMWEuNS41IDAgMCAwIDAgMWg5YS41LjUgMCAwIDAgMC0xaC05em0wIDIuNWEuNS41IDAgMCAwIDAgMWg5YS41LjUgMCAwIDAgMC0xaC05em0wIDIuNWEuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgMC0xaC01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRMZWZ0VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDQuNDE0QTIgMiAwIDAgMCAzIDExLjU4NmwtMiAyVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTIuNzkzYS41LjUgMCAwIDAgLjg1NC4zNTNsMi44NTMtMi44NTNBMSAxIDAgMCAxIDQuNDE0IDEySDE0YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAzLjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6TTMgNmEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlBLjUuNSAwIDAgMSAzIDZ6bTAgMi41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFINC40MTRBMiAyIDAgMCAwIDMgMTEuNTg2bC0yIDJWMmExIDEgMCAwIDEgMS0xaDEyek0yIDBhMiAyIDAgMCAwLTIgMnYxMi43OTNhLjUuNSAwIDAgMCAuODU0LjM1M2wyLjg1My0yLjg1M0ExIDEgMCAwIDEgNC40MTQgMTJIMTRhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0UXVvdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhjMCAzLjg2Ni0zLjU4MiA3LTggN2E5LjA2IDkuMDYgMCAwIDEtMi4zNDctLjMwNmMtLjU4NC4yOTYtMS45MjUuODY0LTQuMTgxIDEuMjM0LS4yLjAzMi0uMzUyLS4xNzYtLjI3My0uMzYyLjM1NC0uODM2LjY3NC0xLjk1Ljc3LTIuOTY2Qy43NDQgMTEuMzcgMCA5Ljc2IDAgOGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3ek03LjE5NCA2Ljc2NmExLjY4OCAxLjY4OCAwIDAgMC0uMjI3LS4yNzIgMS40NjcgMS40NjcgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgNS43MzQgNkM0Ljc3NiA2IDQgNi43NDYgNCA3LjY2N2MwIC45Mi43NzYgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjYtLjEzNy4zODktLjM5LjgwNC0uODEgMS4yMmEuNDA1LjQwNSAwIDAgMCAuMDExLjU5Yy4xNzMuMTYuNDQ3LjE1NS42MTQtLjAxIDEuMzM0LTEuMzI5IDEuMzctMi43NTguOTQxLTMuNzA2YTIuNDYxIDIuNDYxIDAgMCAwLS4yMjctLjR6TTExIDkuMDczYy0uMTM2LjM4OS0uMzkuODA0LS44MSAxLjIyYS40MDUuNDA1IDAgMCAwIC4wMTIuNTljLjE3Mi4xNi40NDYuMTU1LjYxMy0uMDEgMS4zMzQtMS4zMjkgMS4zNy0yLjc1OC45NDItMy43MDZhMi40NjYgMi40NjYgMCAwIDAtLjIyOC0uNCAxLjY4NiAxLjY4NiAwIDAgMC0uMjI3LS4yNzMgMS40NjYgMS40NjYgMCAwIDAtLjQ2OS0uMzI0bC0uMDA4LS4wMDRBMS43ODUgMS43ODUgMCAwIDAgMTAuMDcgNmMtLjk1NyAwLTEuNzM0Ljc0Ni0xLjczNCAxLjY2NyAwIC45Mi43NzcgMS42NjYgMS43MzQgMS42NjYuMzQzIDAgLjY2Mi0uMDk1LjkzMS0uMjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNjc4IDExLjg5NGExIDEgMCAwIDEgLjI4Ny44MDEgMTAuOTcgMTAuOTcgMCAwIDEtLjM5OCAyYzEuMzk1LS4zMjMgMi4yNDctLjY5NyAyLjYzNC0uODkzYTEgMSAwIDAgMSAuNzEtLjA3NEE4LjA2IDguMDYgMCAwIDAgOCAxNGMzLjk5NiAwIDctMi44MDcgNy02IDAtMy4xOTItMy4wMDQtNi03LTZTMSA0LjgwOCAxIDhjMCAxLjQ2OC42MTcgMi44MyAxLjY3OCAzLjg5NHptLS40OTMgMy45MDVhMjEuNjgyIDIxLjY4MiAwIDAgMS0uNzEzLjEyOWMtLjIuMDMyLS4zNTItLjE3Ni0uMjczLS4zNjJhOS42OCA5LjY4IDAgMCAwIC4yNDQtLjYzN2wuMDAzLS4wMWMuMjQ4LS43Mi40NS0xLjU0OC41MjQtMi4zMTlDLjc0MyAxMS4zNyAwIDkuNzYgMCA4YzAtMy44NjYgMy41ODItNyA4LTdzOCAzLjEzNCA4IDctMy41ODIgNy04IDdhOS4wNiA5LjA2IDAgMCAxLTIuMzQ3LS4zMDZjLS41Mi4yNjMtMS42MzkuNzQyLTMuNDY4IDEuMTA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDY2IDYuNzZBMS42NjUgMS42NjUgMCAwIDAgNCA3LjY2OGExLjY2NyAxLjY2NyAwIDAgMCAyLjU2MSAxLjQwNmMtLjEzMS4zODktLjM3NS44MDQtLjc3NyAxLjIyYS40MTcuNDE3IDAgMCAwIC42LjU4YzEuNDg2LTEuNTQgMS4yOTMtMy4yMTQuNjgyLTQuMTEyem00IDBBMS42NjUgMS42NjUgMCAwIDAgOCA3LjY2OGExLjY2NyAxLjY2NyAwIDAgMCAyLjU2MSAxLjQwNmMtLjEzMS4zODktLjM3NS44MDQtLjc3NyAxLjIyYS40MTcuNDE3IDAgMCAwIC42LjU4YzEuNDg2LTEuNTQgMS4yOTMtMy4yMTQuNjgyLTQuMTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRSaWdodERvdHNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuNTg2YTEgMSAwIDAgMSAuNzA3LjI5M2wyLjg1MyAyLjg1M2EuNS41IDAgMCAwIC44NTQtLjM1M1Yyek01IDZhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0zIDFhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRSaWdodERvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDkuNTg2YTIgMiAwIDAgMSAxLjQxNC41ODZsMiAyVjJhMSAxIDAgMCAwLTEtMUgyem0xMi0xYTIgMiAwIDAgMSAyIDJ2MTIuNzkzYS41LjUgMCAwIDEtLjg1NC4zNTNsLTIuODUzLTIuODUzYTEgMSAwIDAgMC0uNzA3LS4yOTNIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDZhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem00IDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRSaWdodEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMGEyIDIgMCAwIDEgMiAydjEyLjc5M2EuNS41IDAgMCAxLS44NTQuMzUzbC0yLjg1My0yLjg1M2ExIDEgMCAwIDAtLjcwNy0uMjkzSDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFJpZ2h0UXVvdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDJhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDkuNTg2YTEgMSAwIDAgMSAuNzA3LjI5M2wyLjg1MyAyLjg1M2EuNS41IDAgMCAwIC44NTQtLjM1M1Yyek03LjE5NCA0Ljc2NmMuMDg3LjEyNC4xNjMuMjYuMjI3LjQwMS40MjguOTQ4LjM5MyAyLjM3Ny0uOTQyIDMuNzA2YS40NDYuNDQ2IDAgMCAxLS42MTIuMDEuNDA1LjQwNSAwIDAgMS0uMDExLS41OWMuNDE5LS40MTYuNjcyLS44MzEuODA5LTEuMjItLjI2OS4xNjUtLjU4OC4yNi0uOTMuMjZDNC43NzUgNy4zMzMgNCA2LjU4NyA0IDUuNjY3IDQgNC43NDcgNC43NzYgNCA1LjczNCA0Yy4yNzEgMCAuNTI4LjA2Ljc1Ni4xNjZsLjAwOC4wMDRjLjE2OS4wNy4zMjcuMTgyLjQ2OS4zMjQuMDg1LjA4My4xNjEuMTc0LjIyNy4yNzJ6TTExIDcuMDczYy0uMjY5LjE2NS0uNTg4LjI2LS45My4yNi0uOTU4IDAtMS43MzUtLjc0Ni0xLjczNS0xLjY2NiAwLS45Mi43NzctMS42NjcgMS43MzQtMS42NjcuMjcxIDAgLjUyOC4wNi43NTYuMTY2bC4wMDguMDA0Yy4xNy4wNy4zMjcuMTgyLjQ2OS4zMjQuMDg1LjA4My4xNjEuMTc0LjIyNy4yNzIuMDg3LjEyNC4xNjQuMjYuMjI4LjQwMS40MjguOTQ4LjM5MiAyLjM3Ny0uOTQyIDMuNzA2YS40NDYuNDQ2IDAgMCAxLS42MTMuMDEuNDA1LjQwNSAwIDAgMS0uMDExLS41OWMuNDItLjQxNi42NzItLjgzMS44MS0xLjIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRSaWdodFF1b3RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMWExIDEgMCAwIDAtMSAxdjhhMSAxIDAgMCAwIDEgMWg5LjU4NmEyIDIgMCAwIDEgMS40MTQuNTg2bDIgMlYyYTEgMSAwIDAgMC0xLTFIMnptMTItMWEyIDIgMCAwIDEgMiAydjEyLjc5M2EuNS41IDAgMCAxLS44NTQuMzUzbC0yLjg1My0yLjg1M2ExIDEgMCAwIDAtLjcwNy0uMjkzSDJhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoMTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNjYgNC43NkExLjY2NSAxLjY2NSAwIDAgMCA0IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6bTQgMEExLjY2NSAxLjY2NSAwIDAgMCA4IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFJpZ2h0VGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgMmEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoOS41ODZhMSAxIDAgMCAxIC43MDcuMjkzbDIuODUzIDIuODUzYS41LjUgMCAwIDAgLjg1NC0uMzUzVjJ6TTMuNSAzaDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMSAwLTF6bTAgMi41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMSAwLTF6bTAgMi41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFJpZ2h0VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoOS41ODZhMiAyIDAgMCAxIDEuNDE0LjU4NmwyIDJWMmExIDEgMCAwIDAtMS0xSDJ6bTEyLTFhMiAyIDAgMCAxIDIgMnYxMi43OTNhLjUuNSAwIDAgMS0uODU0LjM1M2wtMi44NTMtMi44NTNhMSAxIDAgMCAwLS43MDctLjI5M0gyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMy41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41ek0zIDZhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05QS41LjUgMCAwIDEgMyA2em0wIDIuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDkuNTg2YTIgMiAwIDAgMSAxLjQxNC41ODZsMiAyVjJhMSAxIDAgMCAwLTEtMUgyem0xMi0xYTIgMiAwIDAgMSAyIDJ2MTIuNzkzYS41LjUgMCAwIDEtLjg1NC4zNTNsLTIuODUzLTIuODUzYTEgMSAwIDAgMC0uNzA3LS4yOTNIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0U3F1YXJlRG90c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTIuNWExIDEgMCAwIDAtLjguNGwtMS45IDIuNTMzYTEgMSAwIDAgMS0xLjYgMEw1LjMgMTIuNGExIDEgMCAwIDAtLjgtLjRIMmEyIDIgMCAwIDEtMi0yVjJ6bTUgNGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTQgMGExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6bTMgMWExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFNxdWFyZURvdHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMWgtMi41YTIgMiAwIDAgMC0xLjYuOEw4IDE0LjMzMyA2LjEgMTEuOGEyIDIgMCAwIDAtMS42LS44SDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgyLjVhMSAxIDAgMCAxIC44LjRsMS45IDIuNTMzYTEgMSAwIDAgMCAxLjYgMGwxLjktMi41MzNhMSAxIDAgMCAxIC44LS40SDE0YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptNCAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptNCAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0U3F1YXJlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDBhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMi41YTEgMSAwIDAgMSAuOC40bDEuOSAyLjUzM2ExIDEgMCAwIDAgMS42IDBsMS45LTIuNTMzYTEgMSAwIDAgMSAuOC0uNEgxNGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRTcXVhcmVRdW90ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJoLTIuNWExIDEgMCAwIDAtLjguNGwtMS45IDIuNTMzYTEgMSAwIDAgMS0xLjYgMEw1LjMgMTIuNGExIDEgMCAwIDAtLjgtLjRIMmEyIDIgMCAwIDEtMi0yVjJ6bTcuMTk0IDIuNzY2YTEuNjg4IDEuNjg4IDAgMCAwLS4yMjctLjI3MiAxLjQ2NyAxLjQ2NyAwIDAgMC0uNDY5LS4zMjRsLS4wMDgtLjAwNEExLjc4NSAxLjc4NSAwIDAgMCA1LjczNCA0QzQuNzc2IDQgNCA0Ljc0NiA0IDUuNjY3YzAgLjkyLjc3NiAxLjY2NiAxLjczNCAxLjY2Ni4zNDMgMCAuNjYyLS4wOTUuOTMxLS4yNi0uMTM3LjM4OS0uMzkuODA0LS44MSAxLjIyYS40MDUuNDA1IDAgMCAwIC4wMTEuNTljLjE3My4xNi40NDcuMTU1LjYxNC0uMDEgMS4zMzQtMS4zMjkgMS4zNy0yLjc1OC45NDEtMy43MDZhMi40NjEgMi40NjEgMCAwIDAtLjIyNy0uNHpNMTEgNy4wNzNjLS4xMzYuMzg5LS4zOS44MDQtLjgxIDEuMjJhLjQwNS40MDUgMCAwIDAgLjAxMi41OWMuMTcyLjE2LjQ0Ni4xNTUuNjEzLS4wMSAxLjMzNC0xLjMyOSAxLjM3LTIuNzU4Ljk0Mi0zLjcwNmEyLjQ2NiAyLjQ2NiAwIDAgMC0uMjI4LS40IDEuNjg2IDEuNjg2IDAgMCAwLS4yMjctLjI3MyAxLjQ2NiAxLjQ2NiAwIDAgMC0uNDY5LS4zMjRsLS4wMDgtLjAwNEExLjc4NSAxLjc4NSAwIDAgMCAxMC4wNyA0Yy0uOTU3IDAtMS43MzQuNzQ2LTEuNzM0IDEuNjY3IDAgLjkyLjc3NyAxLjY2NiAxLjczNCAxLjY2Ni4zNDMgMCAuNjYyLS4wOTUuOTMxLS4yNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0U3F1YXJlUXVvdGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMWgtMi41YTIgMiAwIDAgMC0xLjYuOEw4IDE0LjMzMyA2LjEgMTEuOGEyIDIgMCAwIDAtMS42LS44SDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgyLjVhMSAxIDAgMCAxIC44LjRsMS45IDIuNTMzYTEgMSAwIDAgMCAxLjYgMGwxLjktMi41MzNhMSAxIDAgMCAxIC44LS40SDE0YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNjYgNC43NkExLjY2NSAxLjY2NSAwIDAgMCA0IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6bTQgMEExLjY2NSAxLjY2NSAwIDAgMCA4IDUuNjY4YTEuNjY3IDEuNjY3IDAgMCAwIDIuNTYxIDEuNDA2Yy0uMTMxLjM4OS0uMzc1LjgwNC0uNzc3IDEuMjJhLjQxNy40MTcgMCAxIDAgLjYuNThjMS40ODYtMS41NCAxLjI5My0zLjIxNC42ODItNC4xMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdFNxdWFyZVRleHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0yLjVhMSAxIDAgMCAwLS44LjRsLTEuOSAyLjUzM2ExIDEgMCAwIDEtMS42IDBMNS4zIDEyLjRhMSAxIDAgMCAwLS44LS40SDJhMiAyIDAgMCAxLTItMlYyem0zLjUgMWEuNS41IDAgMCAwIDAgMWg5YS41LjUgMCAwIDAgMC0xaC05em0wIDIuNWEuNS41IDAgMCAwIDAgMWg5YS41LjUgMCAwIDAgMC0xaC05em0wIDIuNWEuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgMC0xaC01elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRTcXVhcmVUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFoLTIuNWEyIDIgMCAwIDAtMS42LjhMOCAxNC4zMzMgNi4xIDExLjhhMiAyIDAgMCAwLTEuNi0uOEgyYTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDEyek0yIDBhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMi41YTEgMSAwIDAgMSAuOC40bDEuOSAyLjUzM2ExIDEgMCAwIDAgMS42IDBsMS45LTIuNTMzYTEgMSAwIDAgMSAuOC0uNEgxNGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMy41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41ek0zIDZhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05QS41LjUgMCAwIDEgMyA2em0wIDIuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0U3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFoLTIuNWEyIDIgMCAwIDAtMS42LjhMOCAxNC4zMzMgNi4xIDExLjhhMiAyIDAgMCAwLTEuNi0uOEgyYTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDEyek0yIDBhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMi41YTEgMSAwIDAgMSAuOC40bDEuOSAyLjUzM2ExIDEgMCAwIDAgMS42IDBsMS45LTIuNTMzYTEgMSAwIDAgMSAuOC0uNEgxNGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoYXRUZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4YzAgMy44NjYtMy41ODIgNy04IDdhOS4wNiA5LjA2IDAgMCAxLTIuMzQ3LS4zMDZjLS41ODQuMjk2LTEuOTI1Ljg2NC00LjE4MSAxLjIzNC0uMi4wMzItLjM1Mi0uMTc2LS4yNzMtLjM2Mi4zNTQtLjgzNi42NzQtMS45NS43Ny0yLjk2NkMuNzQ0IDExLjM3IDAgOS43NiAwIDhjMC0zLjg2NiAzLjU4Mi03IDgtN3M4IDMuMTM0IDggN3pNNC41IDVhLjUuNSAwIDAgMCAwIDFoN2EuNS41IDAgMCAwIDAtMWgtN3ptMCAyLjVhLjUuNSAwIDAgMCAwIDFoN2EuNS41IDAgMCAwIDAtMWgtN3ptMCAyLjVhLjUuNSAwIDAgMCAwIDFoNGEuNS41IDAgMCAwIDAtMWgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGF0VGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjY3OCAxMS44OTRhMSAxIDAgMCAxIC4yODcuODAxIDEwLjk3IDEwLjk3IDAgMCAxLS4zOTggMmMxLjM5NS0uMzIzIDIuMjQ3LS42OTcgMi42MzQtLjg5M2ExIDEgMCAwIDEgLjcxLS4wNzRBOC4wNiA4LjA2IDAgMCAwIDggMTRjMy45OTYgMCA3LTIuODA3IDctNiAwLTMuMTkyLTMuMDA0LTYtNy02UzEgNC44MDggMSA4YzAgMS40NjguNjE3IDIuODMgMS42NzggMy44OTR6bS0uNDkzIDMuOTA1YTIxLjY4MiAyMS42ODIgMCAwIDEtLjcxMy4xMjljLS4yLjAzMi0uMzUyLS4xNzYtLjI3My0uMzYyYTkuNjggOS42OCAwIDAgMCAuMjQ0LS42MzdsLjAwMy0uMDFjLjI0OC0uNzIuNDUtMS41NDguNTI0LTIuMzE5Qy43NDMgMTEuMzcgMCA5Ljc2IDAgOGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3LTMuNTgyIDctOCA3YTkuMDYgOS4wNiAwIDAgMS0yLjM0Ny0uMzA2Yy0uNTIuMjYzLTEuNjM5Ljc0Mi0zLjQ2OCAxLjEwNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDUuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXpNNCA4YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN0EuNS41IDAgMCAxIDQgOHptMCAyLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hhdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjY3OCAxMS44OTRhMSAxIDAgMCAxIC4yODcuODAxIDEwLjk3IDEwLjk3IDAgMCAxLS4zOTggMmMxLjM5NS0uMzIzIDIuMjQ3LS42OTcgMi42MzQtLjg5M2ExIDEgMCAwIDEgLjcxLS4wNzRBOC4wNiA4LjA2IDAgMCAwIDggMTRjMy45OTYgMCA3LTIuODA3IDctNiAwLTMuMTkyLTMuMDA0LTYtNy02UzEgNC44MDggMSA4YzAgMS40NjguNjE3IDIuODMgMS42NzggMy44OTR6bS0uNDkzIDMuOTA1YTIxLjY4MiAyMS42ODIgMCAwIDEtLjcxMy4xMjljLS4yLjAzMi0uMzUyLS4xNzYtLjI3My0uMzYyYTkuNjggOS42OCAwIDAgMCAuMjQ0LS42MzdsLjAwMy0uMDFjLjI0OC0uNzIuNDUtMS41NDguNTI0LTIuMzE5Qy43NDMgMTEuMzcgMCA5Ljc2IDAgOGMwLTMuODY2IDMuNTgyLTcgOC03czggMy4xMzQgOCA3LTMuNTgyIDctOCA3YTkuMDYgOS4wNiAwIDAgMS0yLjM0Ny0uMzA2Yy0uNTIuMjYzLTEuNjM5Ljc0Mi0zLjQ2OCAxLjEwNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGVja0FsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ljk3IDQuOTdhLjc1Ljc1IDAgMCAxIDEuMDcgMS4wNWwtMy45OSA0Ljk5YS43NS43NSAwIDAgMS0xLjA4LjAyTDIuMzI0IDguMzg0YS43NS43NSAwIDEgMSAxLjA2LTEuMDZsMi4wOTQgMi4wOTNMOC45NSA0Ljk5MmEuMjUyLjI1MiAwIDAgMSAuMDItLjAyMnptLS45MiA1LjE0LjkyLjkyYS43NS43NSAwIDAgMCAxLjA3OS0uMDJsMy45OTItNC45OWEuNzUuNzUgMCAxIDAtMS4wOTEtMS4wMjhMOS40NzcgOS40MTdsLS40ODUtLjQ4Ni0uOTQzIDEuMTc5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZWNrQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS0zLjk3LTMuMDNhLjc1Ljc1IDAgMCAwLTEuMDguMDIyTDcuNDc3IDkuNDE3IDUuMzg0IDcuMzIzYS43NS43NSAwIDAgMC0xLjA2IDEuMDZMNi45NyAxMS4wM2EuNzUuNzUgMCAwIDAgMS4wNzktLjAybDMuOTkyLTQuOTlhLjc1Ljc1IDAgMCAwLS4wMS0xLjA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZWNrQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVBNyA3IDAgMSAxIDggMWE3IDcgMCAwIDEgMCAxNHptMCAxQTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOTcgNC45N2EuMjM1LjIzNSAwIDAgMC0uMDIuMDIyTDcuNDc3IDkuNDE3IDUuMzg0IDcuMzIzYS43NS43NSAwIDAgMC0xLjA2IDEuMDZMNi45NyAxMS4wM2EuNzUuNzUgMCAwIDAgMS4wNzktLjAybDMuOTkyLTQuOTlhLjc1Ljc1IDAgMCAwLTEuMDcxLTEuMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hlY2tMZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy40ODUgMS40MzFhMS40NzMgMS40NzMgMCAwIDEgMi4xMDQgMi4wNjJsLTcuODQgOS44MDFhMS40NzMgMS40NzMgMCAwIDEtMi4xMi4wNEwuNDMxIDguMTM4YTEuNDczIDEuNDczIDAgMCAxIDIuMDg0LTIuMDgzbDQuMTExIDQuMTEyIDYuODItOC42OWEuNDg2LjQ4NiAwIDAgMSAuMDQtLjA0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGVja1NxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0xMC4wMyA0Ljk3YS43NS43NSAwIDAgMSAuMDExIDEuMDVsLTMuOTkyIDQuOTlhLjc1Ljc1IDAgMCAxLTEuMDguMDJMNC4zMjQgOC4zODRhLjc1Ljc1IDAgMSAxIDEuMDYtMS4wNmwyLjA5NCAyLjA5MyAzLjQ3My00LjQyNWEuNzUuNzUgMCAwIDEgMS4wOC0uMDIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZWNrU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC45NyA0Ljk3YS43NS43NSAwIDAgMSAxLjA3MSAxLjA1bC0zLjk5MiA0Ljk5YS43NS43NSAwIDAgMS0xLjA4LjAyTDQuMzI0IDguMzg0YS43NS43NSAwIDEgMSAxLjA2LTEuMDZsMi4wOTQgMi4wOTMgMy40NzMtNC40MjVhLjIzNS4yMzUgMCAwIDEgLjAyLS4wMjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOTcgNC45N2EuNzUuNzUgMCAwIDEgMS4wNyAxLjA1bC0zLjk5IDQuOTlhLjc1Ljc1IDAgMCAxLTEuMDguMDJMNC4zMjQgOC4zODRhLjc1Ljc1IDAgMSAxIDEuMDYtMS4wNmwyLjA5NCAyLjA5MyAzLjQ3My00LjQyNWEuMjY3LjI2NyAwIDAgMSAuMDItLjAyMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGVjazJBbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMzU0IDQuMzU0YS41LjUgMCAwIDAtLjcwOC0uNzA4TDUgMTAuMjkzIDEuODU0IDcuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMy41IDMuNWEuNS41IDAgMCAwIC43MDggMGw3LTd6bS00LjIwOCA3LS44OTYtLjg5Ny43MDctLjcwNy41NDMuNTQzIDYuNjQ2LTYuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTcgN2EuNS41IDAgMCAxLS43MDggMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm01LjM1NCA3LjE0Ni44OTYuODk3LS43MDcuNzA3LS44OTctLjg5NmEuNS41IDAgMSAxIC43MDgtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGVjazJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDhhNS41IDUuNSAwIDAgMSA4LjI1LTQuNzY0LjUuNSAwIDAgMCAuNS0uODY2QTYuNSA2LjUgMCAxIDAgMTQuNSA4YS41LjUgMCAwIDAtMSAwIDUuNSA1LjUgMCAxIDEtMTEgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS4zNTQgMy4zNTRhLjUuNSAwIDAgMC0uNzA4LS43MDhMOCA5LjI5MyA1LjM1NCA2LjY0NmEuNS41IDAgMSAwLS43MDguNzA4bDMgM2EuNS41IDAgMCAwIC43MDggMGw3LTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hlY2syU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTQuNUExLjUgMS41IDAgMCAxIDEuNSAxM1YzQTEuNSAxLjUgMCAwIDEgMyAxLjVoOGEuNS41IDAgMCAxIDAgMUgzYS41LjUgMCAwIDAtLjUuNXYxMGEuNS41IDAgMCAwIC41LjVoMTBhLjUuNSAwIDAgMCAuNS0uNVY4YS41LjUgMCAwIDEgMSAwdjVhMS41IDEuNSAwIDAgMS0xLjUgMS41SDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOC4zNTQgMTAuMzU0IDctN2EuNS41IDAgMCAwLS43MDgtLjcwOEw4IDkuMjkzIDUuMzU0IDYuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMyAzYS41LjUgMCAwIDAgLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZWNrMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy44NTQgMy42NDZhLjUuNSAwIDAgMSAwIC43MDhsLTcgN2EuNS41IDAgMCAxLS43MDggMGwtMy41LTMuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw2LjUgMTAuMjkzbDYuNjQ2LTYuNjQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25CYXJDb250cmFjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy42NDYgMTQuODU0YS41LjUgMCAwIDAgLjcwOCAwTDggMTEuMjA3bDMuNjQ2IDMuNjQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC00LTRhLjUuNSAwIDAgMC0uNzA4IDBsLTQgNGEuNS41IDAgMCAwIDAgLjcwOHptMC0xMy43MDhhLjUuNSAwIDAgMSAuNzA4IDBMOCA0Ljc5M2wzLjY0Ni0zLjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC00IDRhLjUuNSAwIDAgMS0uNzA4IDBsLTQtNGEuNS41IDAgMCAxIDAtLjcwOHpNMSA4YS41LjUgMCAwIDEgLjUtLjVoMTNhLjUuNSAwIDAgMSAwIDFoLTEzQS41LjUgMCAwIDEgMSA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25CYXJEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjY0NiA0LjE0NmEuNS41IDAgMCAxIC43MDggMEw4IDcuNzkzbDMuNjQ2LTMuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTQgNGEuNS41IDAgMCAxLS43MDggMGwtNC00YS41LjUgMCAwIDEgMC0uNzA4ek0xIDExLjVhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uQmFyRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjY0NiAxMC4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMOCAxMy43OTNsMy42NDYtMy42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtNCA0YS41LjUgMCAwIDEtLjcwOCAwbC00LTRhLjUuNSAwIDAgMSAwLS43MDh6bTAtNC4yOTJhLjUuNSAwIDAgMCAuNzA4IDBMOCAyLjIwN2wzLjY0NiAzLjY0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtNC00YS41LjUgMCAwIDAtLjcwOCAwbC00IDRhLjUuNSAwIDAgMCAwIC43MDh6TTEgOGEuNS41IDAgMCAxIC41LS41aDEzYS41LjUgMCAwIDEgMCAxaC0xM0EuNS41IDAgMCAxIDEgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uQmFyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuODU0IDMuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDguMjA3IDhsMy42NDcgMy42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNC00YS41LjUgMCAwIDEgMC0uNzA4bDQtNGEuNS41IDAgMCAxIC43MDggMHpNNC41IDFhLjUuNSAwIDAgMC0uNS41djEzYS41LjUgMCAwIDAgMSAwdi0xM2EuNS41IDAgMCAwLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25CYXJSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC4xNDYgMy42NDZhLjUuNSAwIDAgMCAwIC43MDhMNy43OTMgOGwtMy42NDcgMy42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOGw0LTRhLjUuNSAwIDAgMCAwLS43MDhsLTQtNGEuNS41IDAgMCAwLS43MDggMHpNMTEuNSAxYS41LjUgMCAwIDEgLjUuNXYxM2EuNS41IDAgMCAxLTEgMHYtMTNhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uQmFyVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuNjQ2IDExLjg1NGEuNS41IDAgMCAwIC43MDggMEw4IDguMjA3bDMuNjQ2IDMuNjQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC00LTRhLjUuNSAwIDAgMC0uNzA4IDBsLTQgNGEuNS41IDAgMCAwIDAgLjcwOHpNMi40IDUuMmMwIC4yMi4xOC40LjQuNGgxMC40YS40LjQgMCAwIDAgMC0uOEgyLjhhLjQuNCAwIDAgMC0uNC40elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Db21wYWN0RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS41NTMgNi43NzZhLjUuNSAwIDAgMSAuNjctLjIyM0w4IDkuNDRsNS43NzYtMi44ODhhLjUuNSAwIDEgMSAuNDQ4Ljg5NGwtNiAzYS41LjUgMCAwIDEtLjQ0OCAwbC02LTNhLjUuNSAwIDAgMS0uMjIzLS42N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uQ29tcGFjdExlZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuMjI0IDEuNTUzYS41LjUgMCAwIDEgLjIyMy42N0w2LjU2IDhsMi44ODggNS43NzZhLjUuNSAwIDEgMS0uODk0LjQ0OGwtMy02YS41LjUgMCAwIDEgMC0uNDQ4bDMtNmEuNS41IDAgMCAxIC42Ny0uMjIzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Db21wYWN0UmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYuNzc2IDEuNTUzYS41LjUgMCAwIDEgLjY3MS4yMjNsMyA2YS41LjUgMCAwIDEgMCAuNDQ4bC0zIDZhLjUuNSAwIDEgMS0uODk0LS40NDhMOS40NCA4IDYuNTUzIDIuMjI0YS41LjUgMCAwIDEgLjIyMy0uNjcxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Db21wYWN0VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuNzc2IDUuNTUzYS41LjUgMCAwIDEgLjQ0OCAwbDYgM2EuNS41IDAgMSAxLS40NDguODk0TDggNi41NiAyLjIyNCA5LjQ0N2EuNS41IDAgMSAxLS40NDgtLjg5NGw2LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hldnJvbkNvbnRyYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjY0NiAxMy44NTRhLjUuNSAwIDAgMCAuNzA4IDBMOCAxMC4yMDdsMy42NDYgMy42NDdhLjUuNSAwIDAgMCAuNzA4LS43MDhsLTQtNGEuNS41IDAgMCAwLS43MDggMGwtNCA0YS41LjUgMCAwIDAgMCAuNzA4em0wLTExLjcwOGEuNS41IDAgMCAxIC43MDggMEw4IDUuNzkzbDMuNjQ2LTMuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTQgNGEuNS41IDAgMCAxLS43MDggMGwtNC00YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Eb3VibGVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjY0NiA2LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEyLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS42NDYgMi42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA4LjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uRG91YmxlTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC4zNTQgMS42NDZhLjUuNSAwIDAgMSAwIC43MDhMMi43MDcgOGw1LjY0NyA1LjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC02LTZhLjUuNSAwIDAgMSAwLS43MDhsNi02YS41LjUgMCAwIDEgLjcwOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4zNTQgMS42NDZhLjUuNSAwIDAgMSAwIC43MDhMNi43MDcgOGw1LjY0NyA1LjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC02LTZhLjUuNSAwIDAgMSAwLS43MDhsNi02YS41LjUgMCAwIDEgLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Eb3VibGVSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy42NDYgMS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhMOS4yOTMgOCAzLjY0NiAyLjM1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy42NDYgMS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTMuMjkzIDggNy42NDYgMi4zNTRhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2hldnJvbkRvdWJsZVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjY0NiAyLjY0NmEuNS41IDAgMCAxIC43MDggMGw2IDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDMuNzA3IDIuMzU0IDkuMzU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDYtNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy42NDYgNi42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA3LjcwN2wtNS42NDYgNS42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhsNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25Eb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDEwLjI5M2w1LjY0Ni01LjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4IDBsLTYtNmEuNS41IDAgMCAxIDAtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uRXhwYW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjY0NiA5LjE0NmEuNS41IDAgMCAxIC43MDggMEw4IDEyLjc5M2wzLjY0Ni0zLjY0N2EuNS41IDAgMCAxIC43MDguNzA4bC00IDRhLjUuNSAwIDAgMS0uNzA4IDBsLTQtNGEuNS41IDAgMCAxIDAtLjcwOHptMC0yLjI5MmEuNS41IDAgMCAwIC43MDggMEw4IDMuMjA3bDMuNjQ2IDMuNjQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC00LTRhLjUuNSAwIDAgMC0uNzA4IDBsLTQgNGEuNS41IDAgMCAwIDAgLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMzU0IDEuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDUuNzA3IDhsNS42NDcgNS42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtNi02YS41LjUgMCAwIDEgMC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaGV2cm9uUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuNjQ2IDEuNjQ2YS41LjUgMCAwIDEgLjcwOCAwbDYgNmEuNS41IDAgMCAxIDAgLjcwOGwtNiA2YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyA4IDQuNjQ2IDIuMzU0YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NoZXZyb25VcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBsNiA2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA1LjcwN2wtNS42NDYgNS42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhsNi02elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcImNpcmNsZVwiLFwiYXR0clwiOntcImN4XCI6XCI4XCIsXCJjeVwiOlwiOFwiLFwiclwiOlwiOFwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NpcmNsZUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDAgOCAxdjE0em0wIDFBOCA4IDAgMSAxIDggMGE4IDggMCAwIDEgMCAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDaXJjbGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA2YTYgNiAwIDEgMSAxMiAwQTYgNiAwIDAgMSAwIDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuOTMgNWgxLjU3YS41LjUgMCAwIDEgLjUuNXY5YS41LjUgMCAwIDEtLjUuNWgtOWEuNS41IDAgMCAxLS41LS41di0xLjU3YTYuOTUzIDYuOTUzIDAgMCAxLTEtLjIydjEuNzlBMS41IDEuNSAwIDAgMCA1LjUgMTZoOWExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTlBMS41IDEuNSAwIDAgMCAxNC41IDRoLTEuNzljLjA5Ny4zMjQuMTcuNjU4LjIyIDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVBNyA3IDAgMSAxIDggMWE3IDcgMCAwIDEgMCAxNHptMCAxQTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xpcGJvYXJkQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjg1NCA3LjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA5Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEuNUgzYTIgMiAwIDAgMC0yIDJWMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjMuNWEyIDIgMCAwIDAtMi0yaC0xdjFoMWExIDEgMCAwIDEgMSAxVjE0YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNWExIDEgMCAwIDEgMS0xaDF2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0zYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNWgzem0tMy0xQTEuNSAxLjUgMCAwIDAgNSAxLjV2MUExLjUgMS41IDAgMCAwIDYuNSA0aDNBMS41IDEuNSAwIDAgMCAxMSAyLjV2LTFBMS41IDEuNSAwIDAgMCA5LjUgMGgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbGlwYm9hcmREYXRhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTFhMSAxIDAgMSAxIDIgMHYxYTEgMSAwIDEgMS0yIDB2LTF6bTYtNGExIDEgMCAxIDEgMiAwdjVhMSAxIDAgMSAxLTIgMFY3ek03IDlhMSAxIDAgMCAxIDIgMHYzYTEgMSAwIDEgMS0yIDBWOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEuNUgzYTIgMiAwIDAgMC0yIDJWMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjMuNWEyIDIgMCAwIDAtMi0yaC0xdjFoMWExIDEgMCAwIDEgMSAxVjE0YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNWExIDEgMCAwIDEgMS0xaDF2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0zYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNWgzem0tMy0xQTEuNSAxLjUgMCAwIDAgNSAxLjV2MUExLjUgMS41IDAgMCAwIDYuNSA0aDNBMS41IDEuNSAwIDAgMCAxMSAyLjV2LTFBMS41IDEuNSAwIDAgMCA5LjUgMGgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbGlwYm9hcmRNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS41IDkuNUEuNS41IDAgMCAxIDYgOWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEuNUgzYTIgMiAwIDAgMC0yIDJWMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjMuNWEyIDIgMCAwIDAtMi0yaC0xdjFoMWExIDEgMCAwIDEgMSAxVjE0YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNWExIDEgMCAwIDEgMS0xaDF2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0zYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNWgzem0tMy0xQTEuNSAxLjUgMCAwIDAgNSAxLjV2MUExLjUgMS41IDAgMCAwIDYuNSA0aDNBMS41IDEuNSAwIDAgMCAxMSAyLjV2LTFBMS41IDEuNSAwIDAgMCA5LjUgMGgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbGlwYm9hcmRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDdhLjUuNSAwIDAgMSAuNS41VjlIMTBhLjUuNSAwIDAgMSAwIDFIOC41djEuNWEuNS41IDAgMCAxLTEgMFYxMEg2YS41LjUgMCAwIDEgMC0xaDEuNVY3LjVBLjUuNSAwIDAgMSA4IDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxLjVIM2EyIDIgMCAwIDAtMiAyVjE0YTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMlYzLjVhMiAyIDAgMCAwLTItMmgtMXYxaDFhMSAxIDAgMCAxIDEgMVYxNGExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVYzLjVhMSAxIDAgMCAxIDEtMWgxdi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtM2EuNS41IDAgMCAxLS41LS41di0xYS41LjUgMCAwIDEgLjUtLjVoM3ptLTMtMUExLjUgMS41IDAgMCAwIDUgMS41djFBMS41IDEuNSAwIDAgMCA2LjUgNGgzQTEuNSAxLjUgMCAwIDAgMTEgMi41di0xQTEuNSAxLjUgMCAwIDAgOS41IDBoLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xpcGJvYXJkWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi4xNDYgNy4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA4LjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMSAxIC43MDguNzA4TDguNzA3IDlsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDkuNzA3bC0xLjE0NiAxLjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA5IDYuMTQ2IDcuODU0YS41LjUgMCAwIDEgMC0uNzA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMS41SDNhMiAyIDAgMCAwLTIgMlYxNGEyIDIgMCAwIDAgMiAyaDEwYTIgMiAwIDAgMCAyLTJWMy41YTIgMiAwIDAgMC0yLTJoLTF2MWgxYTEgMSAwIDAgMSAxIDFWMTRhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWMy41YTEgMSAwIDAgMSAxLTFoMXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTNhLjUuNSAwIDAgMS0uNS0uNXYtMWEuNS41IDAgMCAxIC41LS41aDN6bS0zLTFBMS41IDEuNSAwIDAgMCA1IDEuNXYxQTEuNSAxLjUgMCAwIDAgNi41IDRoM0ExLjUgMS41IDAgMCAwIDExIDIuNXYtMUExLjUgMS41IDAgMCAwIDkuNSAwaC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NsaXBib2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEuNUgzYTIgMiAwIDAgMC0yIDJWMTRhMiAyIDAgMCAwIDIgMmgxMGEyIDIgMCAwIDAgMi0yVjMuNWEyIDIgMCAwIDAtMi0yaC0xdjFoMWExIDEgMCAwIDEgMSAxVjE0YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjMuNWExIDEgMCAwIDEgMS0xaDF2LTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC0zYS41LjUgMCAwIDEtLjUtLjV2LTFhLjUuNSAwIDAgMSAuNS0uNWgzem0tMy0xQTEuNSAxLjUgMCAwIDAgNSAxLjV2MUExLjUgMS41IDAgMCAwIDYuNSA0aDNBMS41IDEuNSAwIDAgMCAxMSAyLjV2LTFBMS41IDEuNSAwIDAgMCA5LjUgMGgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek04IDMuNWEuNS41IDAgMCAwLTEgMFY5YS41LjUgMCAwIDAgLjI1Mi40MzRsMy41IDJhLjUuNSAwIDAgMCAuNDk2LS44NjhMOCA4LjcxVjMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG9ja0hpc3RvcnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41MTUgMS4wMTlBNyA3IDAgMCAwIDggMVYwYTggOCAwIDAgMSAuNTg5LjAyMmwtLjA3NC45OTd6bTIuMDA0LjQ1YTcuMDAzIDcuMDAzIDAgMCAwLS45ODUtLjI5OWwuMjE5LS45NzZjLjM4My4wODYuNzYuMiAxLjEyNi4zNDJsLS4zNi45MzN6bTEuMzcuNzFhNy4wMSA3LjAxIDAgMCAwLS40MzktLjI3bC40OTMtLjg3YTguMDI1IDguMDI1IDAgMCAxIC45NzkuNjU0bC0uNjE1Ljc4OWE2Ljk5NiA2Ljk5NiAwIDAgMC0uNDE4LS4zMDJ6bTEuODM0IDEuNzlhNi45OSA2Ljk5IDAgMCAwLS42NTMtLjc5NmwuNzI0LS42OWMuMjcuMjg1LjUyLjU5Ljc0Ny45MWwtLjgxOC41NzZ6bS43NDQgMS4zNTJhNy4wOCA3LjA4IDAgMCAwLS4yMTQtLjQ2OGwuODkzLS40NWE3Ljk3NiA3Ljk3NiAwIDAgMSAuNDUgMS4wODhsLS45NS4zMTNhNy4wMjMgNy4wMjMgMCAwIDAtLjE3OS0uNDgzem0uNTMgMi41MDdhNi45OTEgNi45OTEgMCAwIDAtLjEtMS4wMjVsLjk4NS0uMTdjLjA2Ny4zODYuMTA2Ljc3OC4xMTYgMS4xN2wtMSAuMDI1em0tLjEzMSAxLjUzOGMuMDMzLS4xNy4wNi0uMzM5LjA4MS0uNTFsLjk5My4xMjNhNy45NTcgNy45NTcgMCAwIDEtLjIzIDEuMTU1bC0uOTY0LS4yNjdjLjA0Ni0uMTY1LjA4Ni0uMzMyLjEyLS41MDF6bS0uOTUyIDIuMzc5Yy4xODQtLjI5LjM0Ni0uNTk0LjQ4Ni0uOTA4bC45MTQuNDA1Yy0uMTYuMzYtLjM0NS43MDYtLjU1NSAxLjAzOGwtLjg0NS0uNTM1em0tLjk2NCAxLjIwNWMuMTIyLS4xMjIuMjM5LS4yNDguMzUtLjM3OGwuNzU4LjY1M2E4LjA3MyA4LjA3MyAwIDAgMS0uNDAxLjQzMmwtLjcwNy0uNzA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMWE3IDcgMCAxIDAgNC45NSAxMS45NWwuNzA3LjcwN0E4LjAwMSA4LjAwMSAwIDEgMSA4IDB2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgM2EuNS41IDAgMCAxIC41LjV2NS4yMWwzLjI0OCAxLjg1NmEuNS41IDAgMCAxLS40OTYuODY4bC0zLjUtMkEuNS41IDAgMCAxIDcgOVYzLjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDMuNWEuNS41IDAgMCAwLTEgMFY5YS41LjUgMCAwIDAgLjI1Mi40MzRsMy41IDJhLjUuNSAwIDAgMCAuNDk2LS44NjhMOCA4LjcxVjMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6bTctOEE3IDcgMCAxIDEgMSA4YTcgNyAwIDAgMSAxNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkQXJyb3dEb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhNS41MyA1LjUzIDAgMCAwLTMuNTk0IDEuMzQyYy0uNzY2LjY2LTEuMzIxIDEuNTItMS40NjQgMi4zODNDMS4yNjYgNi4wOTUgMCA3LjU1NSAwIDkuMzE4IDAgMTEuMzY2IDEuNzA4IDEzIDMuNzgxIDEzaDguOTA2QzE0LjUwMiAxMyAxNiAxMS41NyAxNiA5Ljc3M2MwLTEuNjM2LTEuMjQyLTIuOTY5LTIuODM0LTMuMTk0QzEyLjkyMyAzLjk5OSAxMC42OSAyIDggMnptMi4zNTQgNi44NTQtMiAyYS41LjUgMCAwIDEtLjcwOCAwbC0yLTJhLjUuNSAwIDEgMSAuNzA4LS43MDhMNy41IDkuMjkzVjUuNWEuNS41IDAgMCAxIDEgMHYzLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjY0NiAxMC44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMi0yYS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSA5LjI5M1Y1LjVhLjUuNSAwIDAgMC0xIDB2My43OTNMNi4zNTQgOC4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwyIDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC40MDYgMy4zNDJBNS41MyA1LjUzIDAgMCAxIDggMmMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNi44MDQgMTYgOC4xMzcgMTYgOS43NzMgMTYgMTEuNTY5IDE0LjUwMiAxMyAxMi42ODcgMTNIMy43ODFDMS43MDggMTMgMCAxMS4zNjYgMCA5LjMxOGMwLTEuNzYzIDEuMjY2LTMuMjIzIDIuOTQyLTMuNTkzLjE0My0uODYzLjY5OC0xLjcyMyAxLjQ2NC0yLjM4M3ptLjY1My43NTdjLS43NTcuNjUzLTEuMTUzIDEuNDQtMS4xNTMgMi4wNTZ2LjQ0OGwtLjQ0NS4wNDlDMi4wNjQgNi44MDUgMSA3Ljk1MiAxIDkuMzE4IDEgMTAuNzg1IDIuMjMgMTIgMy43ODEgMTJoOC45MDZDMTMuOTggMTIgMTUgMTAuOTg4IDE1IDkuNzczYzAtMS4yMTYtMS4wMi0yLjIyOC0yLjMxMy0yLjIyOGgtLjV2LS41QzEyLjE4OCA0LjgyNSAxMC4zMjggMyA4IDNhNC41MyA0LjUzIDAgMCAwLTIuOTQxIDEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZEFycm93VXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmE1LjUzIDUuNTMgMCAwIDAtMy41OTQgMS4zNDJjLS43NjYuNjYtMS4zMjEgMS41Mi0xLjQ2NCAyLjM4M0MxLjI2NiA2LjA5NSAwIDcuNTU1IDAgOS4zMTggMCAxMS4zNjYgMS43MDggMTMgMy43ODEgMTNoOC45MDZDMTQuNTAyIDEzIDE2IDExLjU3IDE2IDkuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDMuOTk5IDEwLjY5IDIgOCAyem0yLjM1NCA1LjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDguNSA2LjcwN1YxMC41YS41LjUgMCAwIDEtMSAwVjYuNzA3TDYuMzU0IDcuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMmEuNS41IDAgMCAxIC43MDggMGwyIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjY0NiA1LjE0NmEuNS41IDAgMCAxIC43MDggMGwyIDJhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNi43MDdWMTAuNWEuNS41IDAgMCAxLTEgMFY2LjcwN0w2LjM1NCA3Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC40MDYgMy4zNDJBNS41MyA1LjUzIDAgMCAxIDggMmMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNi44MDQgMTYgOC4xMzcgMTYgOS43NzMgMTYgMTEuNTY5IDE0LjUwMiAxMyAxMi42ODcgMTNIMy43ODFDMS43MDggMTMgMCAxMS4zNjYgMCA5LjMxOGMwLTEuNzYzIDEuMjY2LTMuMjIzIDIuOTQyLTMuNTkzLjE0My0uODYzLjY5OC0xLjcyMyAxLjQ2NC0yLjM4M3ptLjY1My43NTdjLS43NTcuNjUzLTEuMTUzIDEuNDQtMS4xNTMgMi4wNTZ2LjQ0OGwtLjQ0NS4wNDlDMi4wNjQgNi44MDUgMSA3Ljk1MiAxIDkuMzE4IDEgMTAuNzg1IDIuMjMgMTIgMy43ODEgMTJoOC45MDZDMTMuOTggMTIgMTUgMTAuOTg4IDE1IDkuNzczYzAtMS4yMTYtMS4wMi0yLjIyOC0yLjMxMy0yLjIyOGgtLjV2LS41QzEyLjE4OCA0LjgyNSAxMC4zMjggMyA4IDNhNC41MyA0LjUzIDAgMCAwLTIuOTQxIDEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZENoZWNrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDJhNS41MyA1LjUzIDAgMCAwLTMuNTk0IDEuMzQyYy0uNzY2LjY2LTEuMzIxIDEuNTItMS40NjQgMi4zODNDMS4yNjYgNi4wOTUgMCA3LjU1NSAwIDkuMzE4IDAgMTEuMzY2IDEuNzA4IDEzIDMuNzgxIDEzaDguOTA2QzE0LjUwMiAxMyAxNiAxMS41NyAxNiA5Ljc3M2MwLTEuNjM2LTEuMjQyLTIuOTY5LTIuODM0LTMuMTk0QzEyLjkyMyAzLjk5OSAxMC42OSAyIDggMnptMi4zNTQgNC44NTQtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcgOC43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4zNTQgNi4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3IDguNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNDA2IDMuMzQyQTUuNTMgNS41MyAwIDAgMSA4IDJjMi42OSAwIDQuOTIzIDIgNS4xNjYgNC41NzlDMTQuNzU4IDYuODA0IDE2IDguMTM3IDE2IDkuNzczIDE2IDExLjU2OSAxNC41MDIgMTMgMTIuNjg3IDEzSDMuNzgxQzEuNzA4IDEzIDAgMTEuMzY2IDAgOS4zMThjMC0xLjc2MyAxLjI2Ni0zLjIyMyAyLjk0Mi0zLjU5My4xNDMtLjg2My42OTgtMS43MjMgMS40NjQtMi4zODN6bS42NTMuNzU3Yy0uNzU3LjY1My0xLjE1MyAxLjQ0LTEuMTUzIDIuMDU2di40NDhsLS40NDUuMDQ5QzIuMDY0IDYuODA1IDEgNy45NTIgMSA5LjMxOCAxIDEwLjc4NSAyLjIzIDEyIDMuNzgxIDEyaDguOTA2QzEzLjk4IDEyIDE1IDEwLjk4OCAxNSA5Ljc3M2MwLTEuMjE2LTEuMDItMi4yMjgtMi4zMTMtMi4yMjhoLS41di0uNUMxMi4xODggNC44MjUgMTAuMzI4IDMgOCAzYTQuNTMgNC41MyAwIDAgMC0yLjk0MSAxLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWREb3dubG9hZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMGE1LjUzIDUuNTMgMCAwIDAtMy41OTQgMS4zNDJjLS43NjYuNjYtMS4zMjEgMS41Mi0xLjQ2NCAyLjM4M0MxLjI2NiA0LjA5NSAwIDUuNTU1IDAgNy4zMTggMCA5LjM2NiAxLjcwOCAxMSAzLjc4MSAxMUg3LjVWNS41YS41LjUgMCAwIDEgMSAwVjExaDQuMTg4QzE0LjUwMiAxMSAxNiA5LjU3IDE2IDcuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDEuOTk5IDEwLjY5IDAgOCAwem0tLjM1NCAxNS44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMy0zYS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSAxNC4yOTNWMTFoLTF2My4yOTNsLTIuMTQ2LTIuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC40MDYgMS4zNDJBNS41MyA1LjUzIDAgMCAxIDggMGMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNC44MDQgMTYgNi4xMzcgMTYgNy43NzMgMTYgOS41NjkgMTQuNTAyIDExIDEyLjY4NyAxMUgxMGEuNS41IDAgMCAxIDAtMWgyLjY4OEMxMy45NzkgMTAgMTUgOC45ODggMTUgNy43NzNjMC0xLjIxNi0xLjAyLTIuMjI4LTIuMzEzLTIuMjI4aC0uNXYtLjVDMTIuMTg4IDIuODI1IDEwLjMyOCAxIDggMWE0LjUzIDQuNTMgMCAwIDAtMi45NDEgMS4xYy0uNzU3LjY1Mi0xLjE1MyAxLjQzOC0xLjE1MyAyLjA1NXYuNDQ4bC0uNDQ1LjA0OUMyLjA2NCA0LjgwNSAxIDUuOTUyIDEgNy4zMTggMSA4Ljc4NSAyLjIzIDEwIDMuNzgxIDEwSDZhLjUuNSAwIDAgMSAwIDFIMy43ODFDMS43MDggMTEgMCA5LjM2NiAwIDcuMzE4YzAtMS43NjMgMS4yNjYtMy4yMjMgMi45NDItMy41OTMuMTQzLS44NjMuNjk4LTEuNzIzIDEuNDY0LTIuMzgzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNjQ2IDE1Ljg1NGEuNS41IDAgMCAwIC43MDggMGwzLTNhLjUuNSAwIDAgMC0uNzA4LS43MDhMOC41IDE0LjI5M1Y1LjVhLjUuNSAwIDAgMC0xIDB2OC43OTNsLTIuMTQ2LTIuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkRHJpenpsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNTggMTIuMDI1YS41LjUgMCAwIDEgLjMxNi42MzNsLS41IDEuNWEuNS41IDAgMCAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bTYgMGEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em0tMy41IDEuNWEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em02IDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptLjc0Ny04LjQ5OGE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZERyaXp6bGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNTggMTIuMDI1YS41LjUgMCAwIDEgLjMxNi42MzNsLS41IDEuNWEuNS41IDAgMCAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bTYgMGEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em0tMy41IDEuNWEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em02IDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptLjc0Ny04LjQ5OGE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pNOC41IDJhNCA0IDAgMCAxIDMuOTc2IDMuNTU1LjUuNSAwIDAgMCAuNS40NDVIMTNhMiAyIDAgMCAxIDAgNEgzLjVhMi41IDIuNSAwIDEgMSAuNjA1LTQuOTI2LjUuNSAwIDAgMCAuNTk2LS4zMjlBNC4wMDIgNC4wMDIgMCAwIDEgOC41IDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNDA2IDMuMzQyQTUuNTMgNS41MyAwIDAgMSA4IDJjMi42OSAwIDQuOTIzIDIgNS4xNjYgNC41NzlDMTQuNzU4IDYuODA0IDE2IDguMTM3IDE2IDkuNzczIDE2IDExLjU2OSAxNC41MDIgMTMgMTIuNjg3IDEzSDMuNzgxQzEuNzA4IDEzIDAgMTEuMzY2IDAgOS4zMThjMC0xLjc2MyAxLjI2Ni0zLjIyMyAyLjk0Mi0zLjU5My4xNDMtLjg2My42OTgtMS43MjMgMS40NjQtMi4zODN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRGb2dGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTMuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0xMC40MDUtOS40NzNhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTJIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRGb2cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMy41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTEwLjQwNS05LjQ3M2E1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMkgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pNOC41IDNhNCA0IDAgMCAxIDMuOTc2IDMuNTU1LjUuNSAwIDAgMCAuNS40NDVIMTNhMiAyIDAgMCAxIDAgNEgzLjVhMi41IDIuNSAwIDEgMSAuNjA1LTQuOTI2LjUuNSAwIDAgMCAuNTk2LS4zMjlBNC4wMDIgNC4wMDIgMCAwIDEgOC41IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRGb2cyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgM2E1LjAwMSA1LjAwMSAwIDAgMSA0LjkwNSA0LjAyN0EzIDMgMCAwIDEgMTMgMTNoLTEuNWEuNS41IDAgMCAwIDAtMUgxLjA1YTMuNTEgMy41MSAwIDAgMS0uNzEzLTFIOS41YS41LjUgMCAwIDAgMC0xSC4wMzVhMy41MyAzLjUzIDAgMCAxIDAtMUg3LjVhLjUuNSAwIDAgMCAwLTFILjMzN2EzLjUgMy41IDAgMCAxIDMuNTctMS45NzdBNS4wMDEgNS4wMDEgMCAwIDEgOC41IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRGb2cyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA0YTQuMDAyIDQuMDAyIDAgMCAwLTMuOCAyLjc0NS41LjUgMCAxIDEtLjk0OS0uMzEzIDUuMDAyIDUuMDAyIDAgMCAxIDkuNjU0LjU5NUEzIDMgMCAwIDEgMTMgMTNILjVhLjUuNSAwIDAgMSAwLTFIMTNhMiAyIDAgMCAwIC4wMDEtNGgtLjAyNmEuNS41IDAgMCAxLS41LS40NDVBNCA0IDAgMCAwIDguNSA0ek0wIDguNUEuNS41IDAgMCAxIC41IDhoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRIYWlsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjc1IDE1LjI1YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bS40MDgtMy43MjRhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnpNNy43NSAxNS4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0uNDA4LTMuNzI0YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bTMuNTkyIDMuNzI0YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bS40MDgtMy43MjRhLjUuNSAwIDAgMSAuMzE2LjYzMmwtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxNnptMS4yNDctNi45OTlhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTAuNUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZEhhaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDA1IDQuNTI3YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwLjVIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6TTguNSAxLjVhNCA0IDAgMCAxIDMuOTc2IDMuNTU1LjUuNSAwIDAgMCAuNS40NDVIMTNhMiAyIDAgMCAxLS4wMDEgNEgzLjVhMi41IDIuNSAwIDEgMSAuNjA1LTQuOTI2LjUuNSAwIDAgMCAuNTk2LS4zMjlBNC4wMDIgNC4wMDIgMCAwIDEgOC41IDEuNXpNMy43NSAxNS4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0uNDA4LTMuNzI0YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6TTcuNzUgMTUuMjVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptLjQwOC0zLjcyNGEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em0zLjU5MiAzLjcyNGEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0uNDA4LTMuNzI0YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRIYXplMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDExLjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bS0zIDJhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTIgMmEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXpNMTMuNDA1IDQuMDI3YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczek04LjUgMWE0IDQgMCAwIDEgMy45NzYgMy41NTUuNS41IDAgMCAwIC41LjQ0NUgxM2EyIDIgMCAwIDEgMCA0SDMuNWEyLjUgMi41IDAgMSAxIC42MDUtNC45MjYuNS41IDAgMCAwIC41OTYtLjMyOUE0LjAwMiA0LjAwMiAwIDAgMSA4LjUgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZEhhemVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTEuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptLTMgMmEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMiAyYS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41ek0xMy40MDUgNC4wMjdhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRIYXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAzYTQuMDAyIDQuMDAyIDAgMCAwLTMuOCAyLjc0NS41LjUgMCAxIDEtLjk0OS0uMzEzIDUuMDAyIDUuMDAyIDAgMCAxIDkuNjU0LjU5NUEzIDMgMCAwIDEgMTMgMTJINC41YS41LjUgMCAwIDEgMC0xSDEzYTIgMiAwIDAgMCAuMDAxLTRoLS4wMjZhLjUuNSAwIDAgMS0uNS0uNDQ1QTQgNCAwIDAgMCA4LjUgM3pNMCA3LjVBLjUuNSAwIDAgMSAuNSA3aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptMiAyYS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0tMiA0YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkSGF6ZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSAyYTUuMDAxIDUuMDAxIDAgMCAxIDQuOTA1IDQuMDI3QTMgMyAwIDAgMSAxMyAxMkgzLjVBMy41IDMuNSAwIDAgMSAuMDM1IDlINS41YS41LjUgMCAwIDAgMC0xSC4wMzVhMy41IDMuNSAwIDAgMSAzLjg3MS0yLjk3N0E1LjAwMSA1LjAwMSAwIDAgMSA4LjUgMnptLTYgOGEuNS41IDAgMCAwIDAgMWg5YS41LjUgMCAwIDAgMC0xaC05ek0wIDEzLjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRMaWdodG5pbmdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDUzIDExLjI3NkEuNS41IDAgMCAxIDcuNSAxMWgxYS41LjUgMCAwIDEgLjQ3NC42NThsLS4yOC44NDJIOS41YS41LjUgMCAwIDEgLjM5LjgxMmwtMiAyLjVhLjUuNSAwIDAgMS0uODc1LS40MzNMNy4zNiAxNEg2LjVhLjUuNSAwIDAgMS0uNDQ3LS43MjRsMS0yem02LjM1Mi03LjI0OWE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMEgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZExpZ2h0bmluZ1JhaW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNjU4IDExLjAyNmEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em05LjUgMGEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em0tNy41IDEuNWEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em05LjUgMGEuNS41IDAgMCAxIC4zMTYuNjMybC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE2em0tNy4xMDUtMS4yNUEuNS41IDAgMCAxIDcuNSAxMWgxYS41LjUgMCAwIDEgLjQ3NC42NThsLS4yOC44NDJIOS41YS41LjUgMCAwIDEgLjM5LjgxMmwtMiAyLjVhLjUuNSAwIDAgMS0uODc1LS40MzNMNy4zNiAxNEg2LjVhLjUuNSAwIDAgMS0uNDQ3LS43MjRsMS0yem02LjM1Mi03LjI0OWE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMEgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZExpZ2h0bmluZ1JhaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi42NTggMTEuMDI2YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bTkuNSAwYS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bS03LjUgMS41YS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bTkuNSAwYS41LjUgMCAwIDEgLjMxNi42MzJsLS41IDEuNWEuNS41IDAgMSAxLS45NDgtLjMxNmwuNS0xLjVhLjUuNSAwIDAgMSAuNjMyLS4zMTZ6bS0uNzUzLTguNDk5YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczek04LjUgMWE0IDQgMCAwIDEgMy45NzYgMy41NTUuNS41IDAgMCAwIC41LjQ0NUgxM2EyIDIgMCAwIDEgMCA0SDMuNWEyLjUgMi41IDAgMSAxIC42MDUtNC45MjYuNS41IDAgMCAwIC41OTYtLjMyOUE0LjAwMiA0LjAwMiAwIDAgMSA4LjUgMXpNNy4wNTMgMTEuMjc2QS41LjUgMCAwIDEgNy41IDExaDFhLjUuNSAwIDAgMSAuNDc0LjY1OGwtLjI4Ljg0Mkg5LjVhLjUuNSAwIDAgMSAuMzkuODEybC0yIDIuNWEuNS41IDAgMCAxLS44NzUtLjQzM0w3LjM2IDE0SDYuNWEuNS41IDAgMCAxLS40NDctLjcyNGwxLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRMaWdodG5pbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDA1IDQuMDI3YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczek04LjUgMWE0IDQgMCAwIDEgMy45NzYgMy41NTUuNS41IDAgMCAwIC41LjQ0NUgxM2EyIDIgMCAwIDEgMCA0SDMuNWEyLjUgMi41IDAgMSAxIC42MDUtNC45MjYuNS41IDAgMCAwIC41OTYtLjMyOUE0LjAwMiA0LjAwMiAwIDAgMSA4LjUgMXpNNy4wNTMgMTEuMjc2QS41LjUgMCAwIDEgNy41IDExaDFhLjUuNSAwIDAgMSAuNDc0LjY1OGwtLjI4Ljg0Mkg5LjVhLjUuNSAwIDAgMSAuMzkuODEybC0yIDIuNWEuNS41IDAgMCAxLS44NzUtLjQzM0w3LjM2IDE0SDYuNWEuNS41IDAgMCAxLS40NDctLjcyNGwxLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAyYTUuNTMgNS41MyAwIDAgMC0zLjU5NCAxLjM0MmMtLjc2Ni42Ni0xLjMyMSAxLjUyLTEuNDY0IDIuMzgzQzEuMjY2IDYuMDk1IDAgNy41NTUgMCA5LjMxOCAwIDExLjM2NiAxLjcwOCAxMyAzLjc4MSAxM2g4LjkwNkMxNC41MDIgMTMgMTYgMTEuNTcgMTYgOS43NzNjMC0xLjYzNi0xLjI0Mi0yLjk2OS0yLjgzNC0zLjE5NEMxMi45MjMgMy45OTkgMTAuNjkgMiA4IDJ6TTYgNy41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZE1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNDA2IDMuMzQyQTUuNTMgNS41MyAwIDAgMSA4IDJjMi42OSAwIDQuOTIzIDIgNS4xNjYgNC41NzlDMTQuNzU4IDYuODA0IDE2IDguMTM3IDE2IDkuNzczIDE2IDExLjU2OSAxNC41MDIgMTMgMTIuNjg3IDEzSDMuNzgxQzEuNzA4IDEzIDAgMTEuMzY2IDAgOS4zMThjMC0xLjc2MyAxLjI2Ni0zLjIyMyAyLjk0Mi0zLjU5My4xNDMtLjg2My42OTgtMS43MjMgMS40NjQtMi4zODN6bS42NTMuNzU3Yy0uNzU3LjY1My0xLjE1MyAxLjQ0LTEuMTUzIDIuMDU2di40NDhsLS40NDUuMDQ5QzIuMDY0IDYuODA1IDEgNy45NTIgMSA5LjMxOCAxIDEwLjc4NSAyLjIzIDEyIDMuNzgxIDEyaDguOTA2QzEzLjk4IDEyIDE1IDEwLjk4OCAxNSA5Ljc3M2MwLTEuMjE2LTEuMDItMi4yMjgtMi4zMTMtMi4yMjhoLS41di0uNUMxMi4xODggNC44MjUgMTAuMzI4IDMgOCAzYTQuNTMgNC41MyAwIDAgMC0yLjk0MSAxLjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA3LjVhLjUuNSAwIDAgMCAwIDFoNGEuNS41IDAgMCAwIDAtMUg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkTW9vbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDczIDExYTQuNSA0LjUgMCAwIDAtOC43Mi0uOTlBMyAzIDAgMCAwIDMgMTZoOC41YTIuNSAyLjUgMCAwIDAgMC01aC0uMDI3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI4NiAxLjc3OGEuNS41IDAgMCAwLS41NjUtLjc1NSA0LjU5NSA0LjU5NSAwIDAgMC0zLjE4IDUuMDAzIDUuNDYgNS40NiAwIDAgMSAxLjA1NS4yMDlBMy42MDMgMy42MDMgMCAwIDEgOS44MyAyLjYxN2E0LjU5MyA0LjU5MyAwIDAgMCA0LjMxIDUuNzQ0IDMuNTc2IDMuNTc2IDAgMCAxLTIuMjQxLjYzNGMuMTYyLjMxNy4yOTUuNjUyLjM5NCAxYTQuNTkgNC41OSAwIDAgMCAzLjYyNC0yLjA0LjUuNSAwIDAgMC0uNTY1LS43NTUgMy41OTMgMy41OTMgMCAwIDEtNC4wNjUtNS40MjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRNb29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOGEzLjUgMy41IDAgMCAxIDMuNSAzLjU1NS41LjUgMCAwIDAgLjYyNS40OTJBMS41MDMgMS41MDMgMCAwIDEgMTMgMTMuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVIM2EyIDIgMCAxIDEgLjEtMy45OTguNS41IDAgMCAwIC41MDktLjM3NUEzLjUwMiAzLjUwMiAwIDAgMSA3IDh6bTQuNDczIDNhNC41IDQuNSAwIDAgMC04LjcyLS45OUEzIDMgMCAwIDAgMyAxNmg4LjVhMi41IDIuNSAwIDAgMCAwLTVoLS4wMjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjg2IDEuNzc4YS41LjUgMCAwIDAtLjU2NS0uNzU1IDQuNTk1IDQuNTk1IDAgMCAwLTMuMTggNS4wMDMgNS40NiA1LjQ2IDAgMCAxIDEuMDU1LjIwOUEzLjYwMyAzLjYwMyAwIDAgMSA5LjgzIDIuNjE3YTQuNTkzIDQuNTkzIDAgMCAwIDQuMzEgNS43NDQgMy41NzYgMy41NzYgMCAwIDEtMi4yNDEuNjM0Yy4xNjIuMzE3LjI5NS42NTIuMzk0IDFhNC41OSA0LjU5IDAgMCAwIDMuNjI0LTIuMDQuNS41IDAgMCAwLS41NjUtLjc1NSAzLjU5MyAzLjU5MyAwIDAgMS00LjA2NS01LjQyMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZFBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmE1LjUzIDUuNTMgMCAwIDAtMy41OTQgMS4zNDJjLS43NjYuNjYtMS4zMjEgMS41Mi0xLjQ2NCAyLjM4M0MxLjI2NiA2LjA5NSAwIDcuNTU1IDAgOS4zMTggMCAxMS4zNjYgMS43MDggMTMgMy43ODEgMTNoOC45MDZDMTQuNTAyIDEzIDE2IDExLjU3IDE2IDkuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDMuOTk5IDEwLjY5IDIgOCAyem0uNSA0djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTBhLjUuNSAwIDAgMS0xIDBWOC41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjZhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDUuNWEuNS41IDAgMCAxIC41LjV2MS41SDEwYS41LjUgMCAwIDEgMCAxSDguNVYxMGEuNS41IDAgMCAxLTEgMFY4LjVINmEuNS41IDAgMCAxIDAtMWgxLjVWNmEuNS41IDAgMCAxIC41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNDA2IDMuMzQyQTUuNTMgNS41MyAwIDAgMSA4IDJjMi42OSAwIDQuOTIzIDIgNS4xNjYgNC41NzlDMTQuNzU4IDYuODA0IDE2IDguMTM3IDE2IDkuNzczIDE2IDExLjU2OSAxNC41MDIgMTMgMTIuNjg3IDEzSDMuNzgxQzEuNzA4IDEzIDAgMTEuMzY2IDAgOS4zMThjMC0xLjc2MyAxLjI2Ni0zLjIyMyAyLjk0Mi0zLjU5My4xNDMtLjg2My42OTgtMS43MjMgMS40NjQtMi4zODN6bS42NTMuNzU3Yy0uNzU3LjY1My0xLjE1MyAxLjQ0LTEuMTUzIDIuMDU2di40NDhsLS40NDUuMDQ5QzIuMDY0IDYuODA1IDEgNy45NTIgMSA5LjMxOCAxIDEwLjc4NSAyLjIzIDEyIDMuNzgxIDEyaDguOTA2QzEzLjk4IDEyIDE1IDEwLjk4OCAxNSA5Ljc3M2MwLTEuMjE2LTEuMDItMi4yMjgtMi4zMTMtMi4yMjhoLS41di0uNUMxMi4xODggNC44MjUgMTAuMzI4IDMgOCAzYTQuNTMgNC41MyAwIDAgMC0yLjk0MSAxLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRSYWluRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjE1OCAxMi4wMjVhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAxIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptMyAwYS41LjUgMCAwIDEgLjMxNi42MzNsLTEgM2EuNS41IDAgMSAxLS45NDgtLjMxNmwxLTNhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bTMgMGEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDEgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em0zIDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtMSAzYS41LjUgMCAxIDEtLjk0OC0uMzE2bDEtM2EuNS41IDAgMCAxIC42MzItLjMxN3ptLjI0Ny02Ljk5OGE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZFJhaW5IZWF2eUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNzYgMTEuMDMyYS41LjUgMCAwIDEgLjI5Mi42NDNsLTEuNSA0YS41LjUgMCAwIDEtLjkzNi0uMzVsMS41LTRhLjUuNSAwIDAgMSAuNjQ0LS4yOTN6bTMgMGEuNS41IDAgMCAxIC4yOTIuNjQzbC0xLjUgNGEuNS41IDAgMCAxLS45MzYtLjM1bDEuNS00YS41LjUgMCAwIDEgLjY0NC0uMjkzem0zIDBhLjUuNSAwIDAgMSAuMjkyLjY0M2wtMS41IDRhLjUuNSAwIDAgMS0uOTM2LS4zNWwxLjUtNGEuNS41IDAgMCAxIC42NDQtLjI5M3ptMyAwYS41LjUgMCAwIDEgLjI5Mi42NDNsLTEuNSA0YS41LjUgMCAwIDEtLjkzNi0uMzVsMS41LTRhLjUuNSAwIDAgMSAuNjQ0LS4yOTN6bS4yMjktNy4wMDVhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRSYWluSGVhdnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNzYgMTEuMDMyYS41LjUgMCAwIDEgLjI5Mi42NDNsLTEuNSA0YS41LjUgMCAxIDEtLjkzNi0uMzVsMS41LTRhLjUuNSAwIDAgMSAuNjQ0LS4yOTN6bTMgMGEuNS41IDAgMCAxIC4yOTIuNjQzbC0xLjUgNGEuNS41IDAgMSAxLS45MzYtLjM1bDEuNS00YS41LjUgMCAwIDEgLjY0NC0uMjkzem0zIDBhLjUuNSAwIDAgMSAuMjkyLjY0M2wtMS41IDRhLjUuNSAwIDEgMS0uOTM2LS4zNWwxLjUtNGEuNS41IDAgMCAxIC42NDQtLjI5M3ptMyAwYS41LjUgMCAwIDEgLjI5Mi42NDNsLTEuNSA0YS41LjUgMCAwIDEtLjkzNi0uMzVsMS41LTRhLjUuNSAwIDAgMSAuNjQ0LS4yOTN6bS4yMjktNy4wMDVhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6TTguNSAxYTQgNCAwIDAgMSAzLjk3NiAzLjU1NS41LjUgMCAwIDAgLjUuNDQ1SDEzYTIgMiAwIDAgMSAwIDRIMy41YTIuNSAyLjUgMCAxIDEgLjYwNS00LjkyNi41LjUgMCAwIDAgLjU5Ni0uMzI5QTQuMDAyIDQuMDAyIDAgMCAxIDguNSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkUmFpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjE1OCAxMi4wMjVhLjUuNSAwIDAgMSAuMzE2LjYzM2wtLjUgMS41YS41LjUgMCAwIDEtLjk0OC0uMzE2bC41LTEuNWEuNS41IDAgMCAxIC42MzItLjMxN3ptMyAwYS41LjUgMCAwIDEgLjMxNi42MzNsLTEgM2EuNS41IDAgMCAxLS45NDgtLjMxNmwxLTNhLjUuNSAwIDAgMSAuNjMyLS4zMTd6bTMgMGEuNS41IDAgMCAxIC4zMTYuNjMzbC0uNSAxLjVhLjUuNSAwIDAgMS0uOTQ4LS4zMTZsLjUtMS41YS41LjUgMCAwIDEgLjYzMi0uMzE3em0zIDBhLjUuNSAwIDAgMSAuMzE2LjYzM2wtMSAzYS41LjUgMCAxIDEtLjk0OC0uMzE2bDEtM2EuNS41IDAgMCAxIC42MzItLjMxN3ptLjI0Ny02Ljk5OGE1LjAwMSA1LjAwMSAwIDAgMC05LjQ5OS0xLjAwNEEzLjUgMy41IDAgMSAwIDMuNSAxMUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pNOC41IDJhNCA0IDAgMCAxIDMuOTc2IDMuNTU1LjUuNSAwIDAgMCAuNS40NDVIMTNhMiAyIDAgMCAxIDAgNEgzLjVhMi41IDIuNSAwIDEgMSAuNjA1LTQuOTI2LjUuNSAwIDAgMCAuNTk2LS4zMjlBNC4wMDIgNC4wMDIgMCAwIDEgOC41IDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRTbGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMuMTEyIDUuMTEyYTMuMTI1IDMuMTI1IDAgMCAwLS4xNy42MTNDMS4yNjYgNi4wOTUgMCA3LjU1NSAwIDkuMzE4IDAgMTEuMzY2IDEuNzA4IDEzIDMuNzgxIDEzSDExTDMuMTEyIDUuMTEyem0xMS4zNzIgNy4zNzJMNC45MzcgMi45MzdBNS41MTIgNS41MTIgMCAwIDEgOCAyYzIuNjkgMCA0LjkyMyAyIDUuMTY2IDQuNTc5QzE0Ljc1OCA2LjgwNCAxNiA4LjEzNyAxNiA5Ljc3M2EzLjIgMy4yIDAgMCAxLTEuNTE2IDIuNzExem0tLjgzOCAxLjg3LTEyLTEyIC43MDgtLjcwOCAxMiAxMi0uNzA3LjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjExMiA1LjExMmEzLjEyNSAzLjEyNSAwIDAgMC0uMTcuNjEzQzEuMjY2IDYuMDk1IDAgNy41NTUgMCA5LjMxOCAwIDExLjM2NiAxLjcwOCAxMyAzLjc4MSAxM0gxMWwtMS0xSDMuNzgxQzIuMjMxIDEyIDEgMTAuNzg1IDEgOS4zMThjMC0xLjM2NSAxLjA2NC0yLjUxMyAyLjQ2LTIuNjY2bC40NDYtLjA1di0uNDQ3YzAtLjA3NS4wMDYtLjE1Mi4wMTgtLjIzMWwtLjgxMi0uODEyem0yLjU1LTEuNDUtLjcyNS0uNzI1QTUuNTEyIDUuNTEyIDAgMCAxIDggMmMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNi44MDQgMTYgOC4xMzcgMTYgOS43NzNhMy4yIDMuMiAwIDAgMS0xLjUxNiAyLjcxMWwtLjczMy0uNzMzQzE0LjQ5OCAxMS4zNzggMTUgMTAuNjI2IDE1IDkuNzczYzAtMS4yMTYtMS4wMi0yLjIyOC0yLjMxMy0yLjIyOGgtLjV2LS41QzEyLjE4OCA0LjgyNSAxMC4zMjggMyA4IDNjLS44NzUgMC0xLjY3OC4yNi0yLjMzOS42NjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTMuNjQ2IDE0LjM1NC0xMi0xMiAuNzA4LS43MDggMTIgMTItLjcwNy43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRTbGVldEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zNzUgMTMuNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNTAxLS4yODdhLjI1LjI1IDAgMCAxIC4yNDguNDM0bC0uNDk1LjI4My40OTUuMjgzYS4yNS4yNSAwIDEgMS0uMjQ4LjQzNGwtLjUwMS0uMjg2di41NjlhLjI1LjI1IDAgMSAxLS41IDB2LS41N2wtLjUwMS4yODdhLjI1LjI1IDAgMSAxLS4yNDgtLjQzNGwuNDk1LS4yODMtLjQ5NS0uMjgzYS4yNS4yNSAwIDEgMSAuMjQ4LS40MzRsLjUwMS4yODZ2LS41NjlhLjI1LjI1IDAgMCAxIC4yNS0uMjV6bTEuODQ5LTIuNDQ3YS41LjUgMCAwIDEgLjIyMy42N2wtLjUgMWEuNS41IDAgMCAxLS44OTQtLjQ0N2wuNS0xYS41LjUgMCAwIDEgLjY3LS4yMjN6TTYuMzc1IDEzLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMSAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAxIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMSAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMS44NDktMi40NDdhLjUuNSAwIDAgMSAuMjIzLjY3bC0uNSAxYS41LjUgMCAwIDEtLjg5NC0uNDQ3bC41LTFhLjUuNSAwIDAgMSAuNjctLjIyM3ptMi4xNTEgMi40NDdhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMSAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAwIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAxIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMSAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMS44NDktMi40NDdhLjUuNSAwIDAgMSAuMjIzLjY3bC0uNSAxYS41LjUgMCAxIDEtLjg5NC0uNDQ3bC41LTFhLjUuNSAwIDAgMSAuNjctLjIyM3ptMS4xODEtNy4wMjZhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRTbGVldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy40MDUgNC4wMjdhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTBIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6TTguNSAxYTQgNCAwIDAgMSAzLjk3NiAzLjU1NS41LjUgMCAwIDAgLjUuNDQ1SDEzYTIgMiAwIDAgMSAwIDRIMy41YTIuNSAyLjUgMCAxIDEgLjYwNS00LjkyNi41LjUgMCAwIDAgLjU5Ni0uMzI5QTQuMDAyIDQuMDAyIDAgMCAxIDguNSAxek0yLjM3NSAxMy41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMS44NDktMi40NDdhLjUuNSAwIDAgMSAuMjIzLjY3bC0uNSAxYS41LjUgMCAxIDEtLjg5NC0uNDQ3bC41LTFhLjUuNSAwIDAgMSAuNjctLjIyM3pNNi4zNzUgMTMuNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNTAxLS4yODdhLjI1LjI1IDAgMCAxIC4yNDguNDM0bC0uNDk1LjI4My40OTUuMjgzYS4yNS4yNSAwIDAgMS0uMjQ4LjQzNGwtLjUwMS0uMjg2di41NjlhLjI1LjI1IDAgMSAxLS41IDB2LS41N2wtLjUwMS4yODdhLjI1LjI1IDAgMCAxLS4yNDgtLjQzNGwuNDk1LS4yODMtLjQ5NS0uMjgzYS4yNS4yNSAwIDAgMSAuMjQ4LS40MzRsLjUwMS4yODZ2LS41NjlhLjI1LjI1IDAgMCAxIC4yNS0uMjV6bTEuODQ5LTIuNDQ3YS41LjUgMCAwIDEgLjIyMy42N2wtLjUgMWEuNS41IDAgMSAxLS44OTQtLjQ0N2wuNS0xYS41LjUgMCAwIDEgLjY3LS4yMjN6bTIuMTUxIDIuNDQ3YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMS44NDktMi40NDdhLjUuNSAwIDAgMSAuMjIzLjY3bC0uNSAxYS41LjUgMCAxIDEtLjg5NC0uNDQ3bC41LTFhLjUuNSAwIDAgMSAuNjctLjIyM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZFNub3dGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNjI1IDExLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUwMS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ4LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAwIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDEgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDAgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAwIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em0yLjc1IDJhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptNS41IDBhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OS40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAwIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptLTIuNzUtMmEuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ5LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAwIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDEgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDAgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAwIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em01LjUgMGEuMjUuMjUgMCAwIDEgLjI1LjI1di41N2wuNS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ5LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAwIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDAgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDEgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAwIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em0tLjIyLTcuMjIzYTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEwLjI1SDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkU25vdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy40MDUgNC4yNzdhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTAuMjVIMTNhMyAzIDAgMCAwIC40MDUtNS45NzN6TTguNSAxLjI1YTQgNCAwIDAgMSAzLjk3NiAzLjU1NS41LjUgMCAwIDAgLjUuNDQ1SDEzYTIgMiAwIDAgMS0uMDAxIDRIMy41YTIuNSAyLjUgMCAxIDEgLjYwNS00LjkyNi41LjUgMCAwIDAgLjU5Ni0uMzI5QTQuMDAyIDQuMDAyIDAgMCAxIDguNSAxLjI1ek0yLjYyNSAxMS41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptMi43NSAyYS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptNS41IDBhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUwMS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ4LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAwIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDEgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDAgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAwIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1em0tMi43NS0yYS4yNS4yNSAwIDAgMSAuMjUuMjV2LjU3bC41MDEtLjI4N2EuMjUuMjUgMCAwIDEgLjI0OC40MzRsLS40OTUuMjgzLjQ5NS4yODNhLjI1LjI1IDAgMCAxLS4yNDguNDM0bC0uNTAxLS4yODZ2LjU2OWEuMjUuMjUgMCAxIDEtLjUgMHYtLjU3bC0uNTAxLjI4N2EuMjUuMjUgMCAwIDEtLjI0OC0uNDM0bC40OTUtLjI4My0uNDk1LS4yODNhLjI1LjI1IDAgMCAxIC4yNDgtLjQzNGwuNTAxLjI4NnYtLjU2OWEuMjUuMjUgMCAwIDEgLjI1LS4yNXptNS41IDBhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNTdsLjUwMS0uMjg3YS4yNS4yNSAwIDAgMSAuMjQ4LjQzNGwtLjQ5NS4yODMuNDk1LjI4M2EuMjUuMjUgMCAwIDEtLjI0OC40MzRsLS41MDEtLjI4NnYuNTY5YS4yNS4yNSAwIDEgMS0uNSAwdi0uNTdsLS41MDEuMjg3YS4yNS4yNSAwIDAgMS0uMjQ4LS40MzRsLjQ5NS0uMjgzLS40OTUtLjI4M2EuMjUuMjUgMCAwIDEgLjI0OC0uNDM0bC41MDEuMjg2di0uNTY5YS4yNS4yNSAwIDAgMSAuMjUtLjI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkU3VuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40NzMgMTFhNC41IDQuNSAwIDAgMC04LjcyLS45OUEzIDMgMCAwIDAgMyAxNmg4LjVhMi41IDIuNSAwIDAgMCAwLTVoLS4wMjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSAxLjVhLjUuNSAwIDAgMC0xIDB2MWEuNS41IDAgMCAwIDEgMHYtMXptMy43NDMgMS45NjRhLjUuNSAwIDEgMC0uNzA3LS43MDdsLS43MDguNzA3YS41LjUgMCAwIDAgLjcwOC43MDhsLjcwNy0uNzA4em0tNy43NzktLjcwN2EuNS41IDAgMCAwLS43MDcuNzA3bC43MDcuNzA4YS41LjUgMCAxIDAgLjcwOC0uNzA4bC0uNzA4LS43MDd6bTEuNzM0IDMuMzc0YTIgMiAwIDEgMSAzLjI5NiAyLjE5OGMuMTk5LjI4MS4zNzIuNTgyLjUxNi44OThhMyAzIDAgMSAwLTQuODQtMy4yMjVjLjM1Mi4wMTEuNjk2LjA1NSAxLjAyOC4xMjl6bTQuNDg0IDQuMDc0Yy42LjIxNSAxLjEyNS41OSAxLjUyMiAxLjA3MmEuNS41IDAgMCAwIC4wMzktLjc0MmwtLjcwNy0uNzA3YS41LjUgMCAwIDAtLjg1NC4zNzd6TTE0LjUgNi41YS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA4YTMuNSAzLjUgMCAwIDEgMy41IDMuNTU1LjUuNSAwIDAgMCAuNjI0LjQ5MkExLjUwMyAxLjUwMyAwIDAgMSAxMyAxMy41YTEuNSAxLjUgMCAwIDEtMS41IDEuNUgzYTIgMiAwIDEgMSAuMS0zLjk5OC41LjUgMCAwIDAgLjUxLS4zNzVBMy41MDIgMy41MDIgMCAwIDEgNyA4em00LjQ3MyAzYTQuNSA0LjUgMCAwIDAtOC43Mi0uOTlBMyAzIDAgMCAwIDMgMTZoOC41YTIuNSAyLjUgMCAwIDAgMC01aC0uMDI3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgMS41YS41LjUgMCAwIDAtMSAwdjFhLjUuNSAwIDAgMCAxIDB2LTF6bTMuNzQzIDEuOTY0YS41LjUgMCAxIDAtLjcwNy0uNzA3bC0uNzA4LjcwN2EuNS41IDAgMCAwIC43MDguNzA4bC43MDctLjcwOHptLTcuNzc5LS43MDdhLjUuNSAwIDAgMC0uNzA3LjcwN2wuNzA3LjcwOGEuNS41IDAgMSAwIC43MDgtLjcwOGwtLjcwOC0uNzA3em0xLjczNCAzLjM3NGEyIDIgMCAxIDEgMy4yOTYgMi4xOThjLjE5OS4yODEuMzcyLjU4Mi41MTYuODk4YTMgMyAwIDEgMC00Ljg0LTMuMjI1Yy4zNTIuMDExLjY5Ni4wNTUgMS4wMjguMTI5em00LjQ4NCA0LjA3NGMuNi4yMTUgMS4xMjUuNTkgMS41MjIgMS4wNzJhLjUuNSAwIDAgMCAuMDM5LS43NDJsLS43MDctLjcwN2EuNS41IDAgMCAwLS44NTQuMzc3ek0xNC41IDYuNWEuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkVXBsb2FkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAwYTUuNTMgNS41MyAwIDAgMC0zLjU5NCAxLjM0MmMtLjc2Ni42Ni0xLjMyMSAxLjUyLTEuNDY0IDIuMzgzQzEuMjY2IDQuMDk1IDAgNS41NTUgMCA3LjMxOCAwIDkuMzY2IDEuNzA4IDExIDMuNzgxIDExSDcuNVY1LjcwN0w1LjM1NCA3Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwzLTNhLjUuNSAwIDAgMSAuNzA4IDBsMyAzYS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDUuNzA3VjExaDQuMTg4QzE0LjUwMiAxMSAxNiA5LjU3IDE2IDcuNzczYzAtMS42MzYtMS4yNDItMi45NjktMi44MzQtMy4xOTRDMTIuOTIzIDEuOTk5IDEwLjY5IDAgOCAwem0tLjUgMTQuNVYxMWgxdjMuNWEuNS41IDAgMCAxLTEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZFVwbG9hZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNC40MDYgMS4zNDJBNS41MyA1LjUzIDAgMCAxIDggMGMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNC44MDQgMTYgNi4xMzcgMTYgNy43NzMgMTYgOS41NjkgMTQuNTAyIDExIDEyLjY4NyAxMUgxMGEuNS41IDAgMCAxIDAtMWgyLjY4OEMxMy45NzkgMTAgMTUgOC45ODggMTUgNy43NzNjMC0xLjIxNi0xLjAyLTIuMjI4LTIuMzEzLTIuMjI4aC0uNXYtLjVDMTIuMTg4IDIuODI1IDEwLjMyOCAxIDggMWE0LjUzIDQuNTMgMCAwIDAtMi45NDEgMS4xYy0uNzU3LjY1Mi0xLjE1MyAxLjQzOC0xLjE1MyAyLjA1NXYuNDQ4bC0uNDQ1LjA0OUMyLjA2NCA0LjgwNSAxIDUuOTUyIDEgNy4zMTggMSA4Ljc4NSAyLjIzIDEwIDMuNzgxIDEwSDZhLjUuNSAwIDAgMSAwIDFIMy43ODFDMS43MDggMTEgMCA5LjM2NiAwIDcuMzE4YzAtMS43NjMgMS4yNjYtMy4yMjMgMi45NDItMy41OTMuMTQzLS44NjMuNjk4LTEuNzIzIDEuNDY0LTIuMzgzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjY0NiA0LjE0NmEuNS41IDAgMCAxIC43MDggMGwzIDNhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgNS43MDdWMTQuNWEuNS41IDAgMCAxLTEgMFY1LjcwN0w1LjM1NCA3Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwzLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC40MDYgMy4zNDJBNS41MyA1LjUzIDAgMCAxIDggMmMyLjY5IDAgNC45MjMgMiA1LjE2NiA0LjU3OUMxNC43NTggNi44MDQgMTYgOC4xMzcgMTYgOS43NzMgMTYgMTEuNTY5IDE0LjUwMiAxMyAxMi42ODcgMTNIMy43ODFDMS43MDggMTMgMCAxMS4zNjYgMCA5LjMxOGMwLTEuNzYzIDEuMjY2LTMuMjIzIDIuOTQyLTMuNTkzLjE0My0uODYzLjY5OC0xLjcyMyAxLjQ2NC0yLjM4M3ptLjY1My43NTdjLS43NTcuNjUzLTEuMTUzIDEuNDQtMS4xNTMgMi4wNTZ2LjQ0OGwtLjQ0NS4wNDlDMi4wNjQgNi44MDUgMSA3Ljk1MiAxIDkuMzE4IDEgMTAuNzg1IDIuMjMgMTIgMy43ODEgMTJoOC45MDZDMTMuOTggMTIgMTUgMTAuOTg4IDE1IDkuNzczYzAtMS4yMTYtMS4wMi0yLjIyOC0yLjMxMy0yLjIyOGgtLjV2LS41QzEyLjE4OCA0LjgyNSAxMC4zMjggMyA4IDNhNC41MyA0LjUzIDAgMCAwLTIuOTQxIDEuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDbG91ZHNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ3MyA5YTQuNSA0LjUgMCAwIDAtOC43Mi0uOTlBMyAzIDAgMCAwIDMgMTRoOC41YTIuNSAyLjUgMCAxIDAtLjAyNy01elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjU0NCA5Ljc3MmEzLjUwNiAzLjUwNiAwIDAgMC0yLjIyNS0xLjY3NiA1LjUwMiA1LjUwMiAwIDAgMC02LjMzNy00LjAwMiA0LjAwMiA0LjAwMiAwIDAgMSA3LjM5Mi45MSAyLjUgMi41IDAgMCAxIDEuMTcgNC43Njl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ2xvdWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDcuNWEyLjUgMi41IDAgMCAxLTEuNDU2IDIuMjcyIDMuNTEzIDMuNTEzIDAgMCAwLS42NS0uODI0IDEuNSAxLjUgMCAwIDAtLjc4OS0yLjg5Ni41LjUgMCAwIDEtLjYyNy0uNDIxIDMgMyAwIDAgMC01LjIyLTEuNjI1IDUuNTg3IDUuNTg3IDAgMCAwLTEuMjc2LjA4OCA0LjAwMiA0LjAwMiAwIDAgMSA3LjM5Mi45MUEyLjUgMi41IDAgMCAxIDE2IDcuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDVhNC41IDQuNSAwIDAgMSA0LjQ3MyA0aC4wMjdhMi41IDIuNSAwIDAgMSAwIDVIM2EzIDMgMCAwIDEtLjI0Ny01Ljk5QTQuNTAyIDQuNTAyIDAgMCAxIDcgNXptMy41IDQuNWEzLjUgMy41IDAgMCAwLTYuODktLjg3My41LjUgMCAwIDEtLjUxLjM3NUEyIDIgMCAxIDAgMyAxM2g4LjVhMS41IDEuNSAwIDEgMC0uMzc2LTIuOTUzLjUuNSAwIDAgMS0uNjI0LS40OTJWOS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkeUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDA1IDcuMDI3YTUuMDAxIDUuMDAxIDAgMCAwLTkuNDk5LTEuMDA0QTMuNSAzLjUgMCAxIDAgMy41IDEzSDEzYTMgMyAwIDAgMCAuNDA1LTUuOTczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nsb3VkeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy40MDUgOC41MjdhNS4wMDEgNS4wMDEgMCAwIDAtOS40OTktMS4wMDRBMy41IDMuNSAwIDEgMCAzLjUgMTQuNUgxM2EzIDMgMCAwIDAgLjQwNS01Ljk3M3pNOC41IDUuNWE0IDQgMCAwIDEgMy45NzYgMy41NTUuNS41IDAgMCAwIC41LjQ0NUgxM2EyIDIgMCAwIDEtLjAwMSA0SDMuNWEyLjUgMi41IDAgMSAxIC42MDUtNC45MjYuNS41IDAgMCAwIC41OTYtLjMyOUE0LjAwMiA0LjAwMiAwIDAgMSA4LjUgNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvZGVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC40NzggMS42NDdhLjUuNSAwIDEgMC0uOTU2LS4yOTRsLTQgMTNhLjUuNSAwIDAgMCAuOTU2LjI5NGw0LTEzek00Ljg1NCA0LjE0NmEuNS41IDAgMCAxIDAgLjcwOEwxLjcwNyA4bDMuMTQ3IDMuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTMuNS0zLjVhLjUuNSAwIDAgMSAwLS43MDhsMy41LTMuNWEuNS41IDAgMCAxIC43MDggMHptNi4yOTIgMGEuNS41IDAgMCAwIDAgLjcwOEwxNC4yOTMgOGwtMy4xNDcgMy4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLjUtMy41YS41LjUgMCAwIDAgMC0uNzA4bC0zLjUtMy41YS41LjUgMCAwIDAtLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvZGVTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODU0IDQuNjQ2YS41LjUgMCAwIDEgMCAuNzA4TDQuMjA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtMy0zYS41LjUgMCAwIDEgMC0uNzA4bDMtM2EuNS41IDAgMCAxIC43MDggMHptMi4yOTIgMGEuNS41IDAgMCAwIDAgLjcwOEwxMS43OTMgOGwtMi42NDcgMi42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwzLTNhLjUuNSAwIDAgMCAwLS43MDhsLTMtM2EuNS41IDAgMCAwLS43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuODU0IDQuODU0YS41LjUgMCAxIDAtLjcwOC0uNzA4bC0zLjUgMy41YS41LjUgMCAwIDAgMCAuNzA4bDMuNSAzLjVhLjUuNSAwIDAgMCAuNzA4LS43MDhMMi43MDcgOGwzLjE0Ny0zLjE0NnptNC4yOTIgMGEuNS41IDAgMCAxIC43MDgtLjcwOGwzLjUgMy41YS41LjUgMCAwIDEgMCAuNzA4bC0zLjUgMy41YS41LjUgMCAwIDEtLjcwOC0uNzA4TDEzLjI5MyA4bC0zLjE0Ny0zLjE0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDb2luIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA5LjUxMWMuMDc2Ljk1NC44MyAxLjY5NyAyLjE4MiAxLjc4NVYxMmguNnYtLjcwOWMxLjQtLjA5OCAyLjIxOC0uODQ2IDIuMjE4LTEuOTMyIDAtLjk4Ny0uNjI2LTEuNDk2LTEuNzQ1LTEuNzZsLS40NzMtLjExMlY1LjU3Yy42LjA2OC45ODIuMzk2IDEuMDc0Ljg1aDEuMDUyYy0uMDc2LS45MTktLjg2NC0xLjYzOC0yLjEyNi0xLjcxNlY0aC0uNnYuNzE5Yy0xLjE5NS4xMTctMi4wMS44MzYtMi4wMSAxLjg1MyAwIC45LjYwNiAxLjQ3MiAxLjYxMyAxLjcwN2wuMzk3LjA5OHYyLjAzNGMtLjYxNS0uMDkzLTEuMDIyLS40My0xLjExNC0uOUg1LjV6bTIuMTc3LTIuMTY2Yy0uNTktLjEzNy0uOTEtLjQxNi0uOTEtLjgzNiAwLS40Ny4zNDUtLjgyMi45MTUtLjkyNXYxLjc2aC0uMDA1em0uNjkyIDEuMTkzYy43MTcuMTY2IDEuMDQ4LjQzNSAxLjA0OC45MSAwIC41NDItLjQxMi45MTQtMS4xMzUuOTgyVjguNTE4bC4wODcuMDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEzLjVhNS41IDUuNSAwIDEgMSAwLTExIDUuNSA1LjUgMCAwIDEgMCAxMXptMCAuNUE2IDYgMCAxIDAgOCAyYTYgNiAwIDAgMCAwIDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvbGxlY3Rpb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTNhMS41IDEuNSAwIDAgMCAxLjUgMS41aDEzQTEuNSAxLjUgMCAwIDAgMTYgMTNWNmExLjUgMS41IDAgMCAwLTEuNS0xLjVoLTEzQTEuNSAxLjUgMCAwIDAgMCA2djd6TTIgM2EuNS41IDAgMCAwIC41LjVoMTFhLjUuNSAwIDAgMCAwLTFoLTExQS41LjUgMCAwIDAgMiAzem0yLTJhLjUuNSAwIDAgMCAuNS41aDdhLjUuNSAwIDAgMCAwLTFoLTdBLjUuNSAwIDAgMCA0IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ29sbGVjdGlvblBsYXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAzLjVhLjUuNSAwIDAgMSAwLTFoMTFhLjUuNSAwIDAgMSAwIDFoLTExem0yLTJhLjUuNSAwIDAgMSAwLTFoN2EuNS41IDAgMCAxIDAgMWgtN3pNMCAxM2ExLjUgMS41IDAgMCAwIDEuNSAxLjVoMTNBMS41IDEuNSAwIDAgMCAxNiAxM1Y2YTEuNSAxLjUgMCAwIDAtMS41LTEuNWgtMTNBMS41IDEuNSAwIDAgMCAwIDZ2N3ptNi4yNTgtNi40MzdhLjUuNSAwIDAgMSAuNTA3LjAxM2w0IDIuNWEuNS41IDAgMCAxIDAgLjg0OGwtNCAyLjVBLjUuNSAwIDAgMSA2IDEyVjdhLjUuNSAwIDAgMSAuMjU4LS40Mzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ29sbGVjdGlvblBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYS41LjUgMCAwIDAgLjUuNWgxMWEuNS41IDAgMCAwIDAtMWgtMTFBLjUuNSAwIDAgMCAyIDN6bTItMmEuNS41IDAgMCAwIC41LjVoN2EuNS41IDAgMCAwIDAtMWgtN0EuNS41IDAgMCAwIDQgMXptMi43NjUgNS41NzZBLjUuNSAwIDAgMCA2IDd2NWEuNS41IDAgMCAwIC43NjUuNDI0bDQtMi41YS41LjUgMCAwIDAgMC0uODQ4bC00LTIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMTQuNUExLjUgMS41IDAgMCAxIDAgMTNWNmExLjUgMS41IDAgMCAxIDEuNS0xLjVoMTNBMS41IDEuNSAwIDAgMSAxNiA2djdhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xM3ptMTMtMWEuNS41IDAgMCAwIC41LS41VjZhLjUuNSAwIDAgMC0uNS0uNWgtMTNBLjUuNSAwIDAgMCAxIDZ2N2EuNS41IDAgMCAwIC41LjVoMTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ29sbGVjdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMy41YS41LjUgMCAwIDEgMC0xaDExYS41LjUgMCAwIDEgMCAxaC0xMXptMi0yYS41LjUgMCAwIDEgMC0xaDdhLjUuNSAwIDAgMSAwIDFoLTd6TTAgMTNhMS41IDEuNSAwIDAgMCAxLjUgMS41aDEzQTEuNSAxLjUgMCAwIDAgMTYgMTNWNmExLjUgMS41IDAgMCAwLTEuNS0xLjVoLTEzQTEuNSAxLjUgMCAwIDAgMCA2djd6bTEuNS41QS41LjUgMCAwIDEgMSAxM1Y2YS41LjUgMCAwIDEgLjUtLjVoMTNhLjUuNSAwIDAgMSAuNS41djdhLjUuNSAwIDAgMS0uNS41aC0xM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDb2x1bW5zR2FwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMXYzSDFWMWg1ek0xIDBhMSAxIDAgMCAwLTEgMXYzYTEgMSAwIDAgMCAxIDFoNWExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMUgxem0xNCAxMnYzaC01di0zaDV6bS01LTFhMSAxIDAgMCAwLTEgMXYzYTEgMSAwIDAgMCAxIDFoNWExIDEgMCAwIDAgMS0xdi0zYTEgMSAwIDAgMC0xLTFoLTV6TTYgOHY3SDFWOGg1ek0xIDdhMSAxIDAgMCAwLTEgMXY3YTEgMSAwIDAgMCAxIDFoNWExIDEgMCAwIDAgMS0xVjhhMSAxIDAgMCAwLTEtMUgxem0xNC02djdoLTVWMWg1em0tNS0xYTEgMSAwIDAgMC0xIDF2N2ExIDEgMCAwIDAgMSAxaDVhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTFoLTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjJ6bTguNSAwdjhIMTVWMkg4LjV6bTAgOXYzSDE1di0zSDguNXptLTEtOUgxdjNoNi41VjJ6TTEgMTRoNi41VjZIMXY4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvbW1hbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDJBMS41IDEuNSAwIDAgMSA1IDMuNVY1SDMuNWExLjUgMS41IDAgMSAxIDAtM3pNNiA1VjMuNUEyLjUgMi41IDAgMSAwIDMuNSA2SDV2NEgzLjVBMi41IDIuNSAwIDEgMCA2IDEyLjVWMTFoNHYxLjVhMi41IDIuNSAwIDEgMCAyLjUtMi41SDExVjZoMS41QTIuNSAyLjUgMCAxIDAgMTAgMy41VjVINnptNCAxdjRINlY2aDR6bTEtMVYzLjVBMS41IDEuNSAwIDEgMSAxMi41IDVIMTF6bTAgNmgxLjVhMS41IDEuNSAwIDEgMS0xLjUgMS41VjExem0tNiAwdjEuNUExLjUgMS41IDAgMSAxIDMuNSAxMUg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvbXBhc3NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjUgOC41MTZhNy41IDcuNSAwIDEgMS05LjQ2Mi03LjI0QTEgMSAwIDAgMSA3IDBoMmExIDEgMCAwIDEgLjk2MiAxLjI3NiA3LjUwMyA3LjUwMyAwIDAgMSA1LjUzOCA3LjI0em0tMy42MS0zLjkwNUw2Ljk0IDcuNDM5IDQuMTEgMTIuMzlsNC45NS0yLjgyOCAyLjgyOC00Ljk1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvbXBhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNi4wMTZhNy41IDcuNSAwIDAgMCAxLjk2Mi0xNC43NEExIDEgMCAwIDAgOSAwSDdhMSAxIDAgMCAwLS45NjIgMS4yNzZBNy41IDcuNSAwIDAgMCA4IDE2LjAxNnptNi41LTcuNWE2LjUgNi41IDAgMSAxLTEzIDAgNi41IDYuNSAwIDAgMSAxMyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTYuOTQgNy40NCA0Ljk1LTIuODMtMi44MyA0Ljk1LTQuOTQ5IDIuODMgMi44MjgtNC45NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDb25lU3RyaXBlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05Ljk3IDQuODguOTUzIDMuODExQzEwLjE1OSA4Ljg3OCA5LjE0IDkgOCA5Yy0xLjE0IDAtMi4xNTgtLjEyMi0yLjkyMy0uMzA5TDYuMDMgNC44OEM2LjYzNSA0Ljk1NyA3LjMgNSA4IDVzMS4zNjUtLjA0MyAxLjk3LS4xMnptLS4yNDUtLjk3OEw4Ljk3Ljg4QzguNzE4LS4xMyA3LjI4Mi0uMTMgNy4wMy44OEw2LjI3NSAzLjlDNi44IDMuOTY1IDcuMzgyIDQgOCA0Yy42MTggMCAxLjItLjAzNiAxLjcyNS0uMDk4em00LjM5NiA4LjYxM2EuNS41IDAgMCAxIC4wMzcuOTZsLTYgMmEuNS41IDAgMCAxLS4zMTYgMGwtNi0yYS41LjUgMCAwIDEgLjAzNy0uOTZsMi4zOTEtLjU5OC41NjUtMi4yNTdjLjg2Mi4yMTIgMS45NjQuMzM5IDMuMTY1LjMzOXMyLjMwMy0uMTI3IDMuMTY1LS4zMzlsLjU2NSAyLjI1NyAyLjM5MS41OTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ29uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAzIDEuODhjLjI1Mi0xLjAxIDEuNjg4LTEuMDEgMS45NCAwbDIuOTA1IDExLjYySDE0YS41LjUgMCAwIDEgMCAxSDJhLjUuNSAwIDAgMSAwLTFoMi4xMjVMNy4wMyAxLjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NvbnRyb2xsZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA2LjAyN2EuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptLTEuNSAxLjVhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6bTIuNS0uNWEuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptLTEuNSAxLjVhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6bS02LjUtM2gxdjFoMXYxaC0xdjFoLTF2LTFoLTF2LTFoMXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjA1MSAzLjI2YS41LjUgMCAwIDEgLjM1NC0uNjEzbDEuOTMyLS41MThhLjUuNSAwIDAgMSAuNjIuMzljLjY1NS0uMDc5IDEuMzUtLjExNyAyLjA0My0uMTE3LjcyIDAgMS40NDMuMDQxIDIuMTIuMTI2YS41LjUgMCAwIDEgLjYyMi0uMzk5bDEuOTMyLjUxOGEuNS41IDAgMCAxIC4zMDYuNzI5Yy4xNC4wOS4yNjYuMTkuMzczLjI5Ny40MDguNDA4Ljc4IDEuMDUgMS4wOTUgMS43NzIuMzIuNzMzLjU5OSAxLjU5MS44MDUgMi40NjYuMjA2Ljg3NS4zNCAxLjc4LjM2NCAyLjYwNi4wMjQuODE2LS4wNTkgMS42MDItLjMyOCAyLjIxYTEuNDIgMS40MiAwIDAgMS0xLjQ0NS44M2MtLjYzNi0uMDY3LTEuMTE1LS4zOTQtMS41MTMtLjc3My0uMjQ1LS4yMzItLjQ5Ni0uNTI2LS43MzktLjgwOC0uMTI2LS4xNDgtLjI1LS4yOTItLjM2OC0uNDIzLS43MjgtLjgwNC0xLjU5Ny0xLjUyNy0zLjIyNC0xLjUyNy0xLjYyNyAwLTIuNDk2LjcyMy0zLjIyNCAxLjUyNy0uMTE5LjEzMS0uMjQyLjI3NS0uMzY4LjQyMy0uMjQzLjI4Mi0uNDk0LjU3NS0uNzM5LjgwOC0uMzk4LjM4LS44NzcuNzA2LTEuNTEzLjc3M2ExLjQyIDEuNDIgMCAwIDEtMS40NDUtLjgzYy0uMjctLjYwOC0uMzUyLTEuMzk1LS4zMjktMi4yMS4wMjQtLjgyNi4xNi0xLjczLjM2NS0yLjYwNi4yMDYtLjg3NS40ODYtMS43MzMuODA1LTIuNDY2LjMxNS0uNzIyLjY4Ny0xLjM2NCAxLjA5NC0xLjc3MmEyLjM0IDIuMzQgMCAwIDEgLjQzMy0uMzM1LjUwNC41MDQgMCAwIDEtLjAyOC0uMDc5em0yLjAzNi40MTJjLS44NzcuMTg1LTEuNDY5LjQ0My0xLjczMy43MDgtLjI3Ni4yNzYtLjU4Ny43ODMtLjg4NSAxLjQ2NWExMy43NDggMTMuNzQ4IDAgMCAwLS43NDggMi4yOTUgMTIuMzUxIDEyLjM1MSAwIDAgMC0uMzM5IDIuNDA2Yy0uMDIyLjc1NS4wNjIgMS4zNjguMjQzIDEuNzc2YS40Mi40MiAwIDAgMCAuNDI2LjI0Yy4zMjctLjAzNC42MS0uMTk5LjkyOS0uNTAyLjIxMi0uMjAyLjQtLjQyMy42MTUtLjY3NC4xMzMtLjE1Ni4yNzYtLjMyMy40NC0uNTA0QzQuODYxIDkuOTY5IDUuOTc4IDkuMDI3IDggOS4wMjdzMy4xMzkuOTQyIDMuOTY1IDEuODU1Yy4xNjQuMTgxLjMwNy4zNDguNDQuNTA0LjIxNC4yNTEuNDAzLjQ3Mi42MTUuNjc0LjMxOC4zMDMuNjAxLjQ2OC45MjkuNTAzYS40Mi40MiAwIDAgMCAuNDI2LS4yNDFjLjE4LS40MDguMjY1LTEuMDIuMjQzLTEuNzc2YTEyLjM1NCAxMi4zNTQgMCAwIDAtLjMzOS0yLjQwNiAxMy43NTMgMTMuNzUzIDAgMCAwLS43NDgtMi4yOTVjLS4yOTgtLjY4Mi0uNjEtMS4xOS0uODg1LTEuNDY1LS4yNjQtLjI2NS0uODU2LS41MjMtMS43MzMtLjcwOC0uODUtLjE3OS0xLjg3Ny0uMjctMi45MTMtLjI3LTEuMDM2IDAtMi4wNjMuMDkxLTIuOTEzLjI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NwdUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDZhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAwLS41LS41aC0zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNS41YS41LjUgMCAwIDAtMSAwVjJBMi41IDIuNSAwIDAgMCAyIDQuNUguNWEuNS41IDAgMCAwIDAgMUgydjFILjVhLjUuNSAwIDAgMCAwIDFIMnYxSC41YS41LjUgMCAwIDAgMCAxSDJ2MUguNWEuNS41IDAgMCAwIDAgMUgyQTIuNSAyLjUgMCAwIDAgNC41IDE0djEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGgxdjEuNWEuNS41IDAgMCAwIDEgMFYxNGEyLjUgMi41IDAgMCAwIDIuNS0yLjVoMS41YS41LjUgMCAwIDAgMC0xSDE0di0xaDEuNWEuNS41IDAgMCAwIDAtMUgxNHYtMWgxLjVhLjUuNSAwIDAgMCAwLTFIMTR2LTFoMS41YS41LjUgMCAwIDAgMC0xSDE0QTIuNSAyLjUgMCAwIDAgMTEuNSAyVi41YS41LjUgMCAwIDAtMSAwVjJoLTFWLjVhLjUuNSAwIDAgMC0xIDBWMmgtMVYuNWEuNS41IDAgMCAwLTEgMFYyaC0xVi41em0xIDQuNWgzQTEuNSAxLjUgMCAwIDEgMTEgNi41djNBMS41IDEuNSAwIDAgMSA5LjUgMTFoLTNBMS41IDEuNSAwIDAgMSA1IDkuNXYtM0ExLjUgMS41IDAgMCAxIDYuNSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0NwdSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDBhLjUuNSAwIDAgMSAuNS41VjJoMVYuNWEuNS41IDAgMCAxIDEgMFYyaDFWLjVhLjUuNSAwIDAgMSAxIDBWMmgxVi41YS41LjUgMCAwIDEgMSAwVjJBMi41IDIuNSAwIDAgMSAxNCA0LjVoMS41YS41LjUgMCAwIDEgMCAxSDE0djFoMS41YS41LjUgMCAwIDEgMCAxSDE0djFoMS41YS41LjUgMCAwIDEgMCAxSDE0djFoMS41YS41LjUgMCAwIDEgMCAxSDE0YTIuNSAyLjUgMCAwIDEtMi41IDIuNXYxLjVhLjUuNSAwIDAgMS0xIDBWMTRoLTF2MS41YS41LjUgMCAwIDEtMSAwVjE0aC0xdjEuNWEuNS41IDAgMCAxLTEgMFYxNGgtMXYxLjVhLjUuNSAwIDAgMS0xIDBWMTRBMi41IDIuNSAwIDAgMSAyIDExLjVILjVhLjUuNSAwIDAgMSAwLTFIMnYtMUguNWEuNS41IDAgMCAxIDAtMUgydi0xSC41YS41LjUgMCAwIDEgMC0xSDJ2LTFILjVhLjUuNSAwIDAgMSAwLTFIMkEyLjUgMi41IDAgMCAxIDQuNSAyVi41QS41LjUgMCAwIDEgNSAwem0tLjUgM0ExLjUgMS41IDAgMCAwIDMgNC41djdBMS41IDEuNSAwIDAgMCA0LjUgMTNoN2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTdBMS41IDEuNSAwIDAgMCAxMS41IDNoLTd6TTUgNi41QTEuNSAxLjUgMCAwIDEgNi41IDVoM0ExLjUgMS41IDAgMCAxIDExIDYuNXYzQTEuNSAxLjUgMCAwIDEgOS41IDExaC0zQTEuNSAxLjUgMCAwIDEgNSA5LjV2LTN6TTYuNSA2YS41LjUgMCAwIDAtLjUuNXYzYS41LjUgMCAwIDAgLjUuNWgzYS41LjUgMCAwIDAgLjUtLjV2LTNhLjUuNSAwIDAgMC0uNS0uNWgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDcmVkaXRDYXJkMkJhY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NUgwVjR6bTExLjUgMWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMmEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTJ6TTAgMTF2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFIMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDcmVkaXRDYXJkMkJhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNS41YS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMS0uNS0uNXYtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAwLTIgMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptMTMgMnY1SDFWNGExIDEgMCAwIDEgMS0xaDEyYTEgMSAwIDAgMSAxIDF6bS0xIDlIMmExIDEgMCAwIDEtMS0xdi0xaDE0djFhMSAxIDAgMCAxLTEgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDcmVkaXRDYXJkMkZyb250RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMi41IDFhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDJhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0yem0wIDNhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXptMCAyYS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6bTMgMGEuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xem0zIDBhLjUuNSAwIDAgMCAwIDFoMWEuNS41IDAgMCAwIDAtMWgtMXptMyAwYS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3JlZGl0Q2FyZDJGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMTJ6TTIgMmEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNS41YS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMS0uNS0uNXYtMXptMCAzYS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6bTMgMGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAwIDFoLTFhLjUuNSAwIDAgMS0uNS0uNXptMyAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIDAgMWgtMWEuNS41IDAgMCAxLS41LS41em0zIDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3JlZGl0Q2FyZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxSDBWNHptMCAzdjVhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjdIMHptMyAyaDFhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xdi0xYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3JlZGl0Q2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMi0xYTEgMSAwIDAgMC0xIDF2MWgxNFY0YTEgMSAwIDAgMC0xLTFIMnptMTMgNEgxdjVhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMGExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xdi0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Nyb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41LjVBLjUuNSAwIDAgMSA0IDF2MTNoMTNhLjUuNSAwIDAgMSAwIDFoLTJ2MmEuNS41IDAgMCAxLTEgMHYtMkgzLjVhLjUuNSAwIDAgMS0uNS0uNVY0SDFhLjUuNSAwIDAgMSAwLTFoMlYxYS41LjUgMCAwIDEgLjUtLjV6bTIuNSAzYS41LjUgMCAwIDEgLjUtLjVoOGEuNS41IDAgMCAxIC41LjV2OGEuNS41IDAgMCAxLTEgMFY0SDYuNWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0N1cEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyYTEgMSAwIDAgMSAxLTFoMTFhMSAxIDAgMCAxIDEgMXYxaC41QTEuNSAxLjUgMCAwIDEgMTYgNC41djdhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0uNTVhMi41IDIuNSAwIDAgMS0yLjQ1IDJoLThBMi41IDIuNSAwIDAgMSAxIDEyLjVWMnptMTMgMTBoLjVhLjUuNSAwIDAgMCAuNS0uNXYtN2EuNS41IDAgMCAwLS41LS41SDE0djh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3VwU3RyYXcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuOTAyLjMzNGEuNS41IDAgMCAxLS4yOC42NWwtMi4yNTQuOTAyLS40IDEuOTI3Yy4zNzYuMDk1LjcxNS4yMTUuOTcyLjM2Ny4yMjguMTM1LjU2LjM5Ni41Ni44MiAwIC4wNDYtLjAwNC4wOS0uMDExLjEzMmwtLjk2MiA5LjA2OGExLjI4IDEuMjggMCAwIDEtLjUyNC45M2MtLjQ4OC4zNC0xLjQ5NC44Ny0zLjAxLjg3LTEuNTE2IDAtMi41MjItLjUzLTMuMDEtLjg3YTEuMjggMS4yOCAwIDAgMS0uNTI0LS45M0wzLjUxIDUuMTMyQS43OC43OCAwIDAgMSAzLjUgNWMwLS40MjQuMzMyLS42ODUuNTYtLjgyLjI2Mi0uMTU0LjYwNy0uMjc2Ljk5LS4zNzJDNS44MjQgMy42MTQgNi44NjcgMy41IDggMy41Yy43MTIgMCAxLjM4OS4wNDUgMS45ODUuMTI3bC40NjQtMi4yMTVhLjUuNSAwIDAgMSAuMzAzLS4zNTZsMi41LTFhLjUuNSAwIDAgMSAuNjUuMjc4ek05Ljc2OCA0LjYwN0ExMy45OTEgMTMuOTkxIDAgMCAwIDggNC41Yy0xLjA3NiAwLTIuMDMzLjExLTIuNzA3LjI3OEEzLjI4NCAzLjI4NCAwIDAgMCA0LjY0NSA1Yy4xNDYuMDczLjM2Mi4xNS42NDguMjIyQzUuOTY3IDUuMzkgNi45MjQgNS41IDggNS41Yy41NzEgMCAxLjEwOS0uMDMgMS41ODgtLjA4NWwuMTgtLjgwOHptLjI5MiAxLjc1NkM5LjQ0NSA2LjQ1IDguNzQyIDYuNSA4IDYuNWMtMS4xMzMgMC0yLjE3Ni0uMTE0LTIuOTUtLjMwOGE1LjUxNCA1LjUxNCAwIDAgMS0uNDM1LS4xMjdsLjgzOCA4LjAzYy4wMTMuMTIxLjA2LjE4Ni4xMDIuMjE1LjM1Ny4yNDkgMS4xNjguNjkgMi40MzguNjkgMS4yNyAwIDIuMDgxLS40NDEgMi40MzgtLjY5LjA0Mi0uMDI5LjA5LS4wOTQuMTAyLS4yMTVsLjg1Mi04LjAzYTUuNTE3IDUuNTE3IDAgMCAxLS40MzUuMTI3IDguODggOC44OCAwIDAgMS0uODkuMTd6TTQuNDY3IDQuODg0cy4wMDMuMDAyLjAwNS4wMDZsLS4wMDUtLjAwNnptNy4wNjYgMC0uMDA1LjAwNmMuMDAyLS4wMDQuMDA1LS4wMDYuMDA1LS4wMDZ6TTExLjM1NCA1YTMuMTc0IDMuMTc0IDAgMCAwLS42MDQtLjIxbC0uMDk5LjQ0NS4wNTUtLjAxM2MuMjg2LS4wNzIuNTAyLS4xNDkuNjQ4LS4yMjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMmExIDEgMCAwIDEgMS0xaDExYTEgMSAwIDAgMSAxIDF2MWguNUExLjUgMS41IDAgMCAxIDE2IDQuNXY3YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtLjU1YTIuNSAyLjUgMCAwIDEtMi40NSAyaC04QTIuNSAyLjUgMCAwIDEgMSAxMi41VjJ6bTEzIDEwaC41YS41LjUgMCAwIDAgLjUtLjV2LTdhLjUuNSAwIDAgMC0uNS0uNUgxNHY4ek0xMyAySDJ2MTAuNUExLjUgMS41IDAgMCAwIDMuNSAxNGg4YTEuNSAxLjUgMCAwIDAgMS41LTEuNVYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0N1cnJlbmN5Qml0Y29pbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMTN2MS4yNWMwIC4xMzguMTEyLjI1LjI1LjI1aDFhLjI1LjI1IDAgMCAwIC4yNS0uMjVWMTNoLjV2MS4yNWMwIC4xMzguMTEyLjI1LjI1LjI1aDFhLjI1LjI1IDAgMCAwIC4yNS0uMjVWMTNoLjA4NGMxLjk5MiAwIDMuNDE2LTEuMDMzIDMuNDE2LTIuODIgMC0xLjUwMi0xLjAwNy0yLjMyMy0yLjE4Ni0yLjQ0di0uMDg4Yy45Ny0uMjQyIDEuNjgzLS45NzQgMS42ODMtMi4xOUMxMS45OTcgMy45MyAxMC44NDcgMyA5LjA5MiAzSDlWMS43NWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMWEuMjUuMjUgMCAwIDAtLjI1LjI1VjNoLS41NzNWMS43NWEuMjUuMjUgMCAwIDAtLjI1LS4yNUg1Ljc1YS4yNS4yNSAwIDAgMC0uMjUuMjVWM2wtMS45OTguMDExYS4yNS4yNSAwIDAgMC0uMjUuMjV2Ljk4OWMwIC4xMzcuMTEuMjUuMjQ4LjI1bC43NTUtLjAwNWEuNzUuNzUgMCAwIDEgLjc0NS43NXY1LjUwNWEuNzUuNzUgMCAwIDEtLjc1Ljc1bC0uNzQ4LjAxMWEuMjUuMjUgMCAwIDAtLjI1LjI1djFjMCAuMTM4LjExMi4yNS4yNS4yNUw1LjUgMTN6bTEuNDI3LTguNTEzaDEuNzE5Yy45MDYgMCAxLjQzOC40OTggMS40MzggMS4zMTIgMCAuODcxLS41NzUgMS4zNjItMS44NzcgMS4zNjJoLTEuMjhWNC40ODd6bTAgNC4wNTFoMS44NGMxLjEzNyAwIDEuNzU2LjU4IDEuNzU2IDEuNTI0IDAgLjk1My0uNjI2IDEuNDUtMi4xNTggMS40NUg2LjkyN1Y4LjUzOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDdXJyZW5jeURvbGxhciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDEwLjc4MWMuMTQ4IDEuNjY3IDEuNTEzIDIuODUgMy41OTEgMy4wMDNWMTVoMS4wNDN2LTEuMjE2YzIuMjctLjE3OSAzLjY3OC0xLjQzOCAzLjY3OC0zLjMgMC0xLjU5LS45NDctMi41MS0yLjk1Ni0zLjAyOGwtLjcyMi0uMTg3VjMuNDY3YzEuMTIyLjExIDEuODc5LjcxNCAyLjA3IDEuNjE2aDEuNDdjLS4xNjYtMS42LTEuNTQtMi43NDgtMy41NC0yLjg3NVYxSDcuNTkxdjEuMjMzYy0xLjkzOS4yMy0zLjI3IDEuNDcyLTMuMjcgMy4xNTYgMCAxLjQ1NC45NjYgMi40ODMgMi42NjEgMi45MTdsLjYxLjE2MnY0LjAzMWMtMS4xNDktLjE3LTEuOTQtLjgtMi4xMzEtMS43MThINHptMy4zOTEtMy44MzZjLTEuMDQzLS4yNjMtMS42LS44MjUtMS42LTEuNjE2IDAtLjk0NC43MDQtMS42NDEgMS44LTEuODI4djMuNDk1bC0uMi0uMDV6bTEuNTkxIDEuODcyYzEuMjg3LjMyMyAxLjg1Mi44NTkgMS44NTIgMS43NjkgMCAxLjA5Ny0uODI2IDEuODI4LTIuMiAxLjkzOVY4LjczbC4zNDguMDg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0N1cnJlbmN5RXVybyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDkuNDJoMS4wNjNDNS40IDEyLjMyMyA3LjMxNyAxNCAxMC4zNCAxNGMuNjIyIDAgMS4xNjctLjA2OCAxLjY1OS0uMTg1di0xLjNjLS40ODQuMTE5LTEuMDQ1LjE3LTEuNjU5LjE3LTIuMSAwLTMuNDU1LTEuMTk4LTMuNzc1LTMuMjY0aDQuMDE3di0uOTI4SDYuNDk3di0uOTM2YzAtLjExIDAtLjIxOS4wMDgtLjMyOWg0LjA3OHYtLjkyN0g2LjYxOGMuMzg4LTEuODk4IDEuNzE5LTIuOTg1IDMuNzIzLTIuOTg1LjYxNCAwIDEuMTc1LjA1IDEuNjU5LjE3N1YyLjE5NEE2LjYxNyA2LjYxNyAwIDAgMCAxMC4zNDEgMmMtMi45MjggMC00LjgyIDEuNTY5LTUuMjQ0IDQuM0g0di45MjhoMS4wMXYxLjI2NUg0di45Mjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3VycmVuY3lFeGNoYW5nZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDVhNS4wMDIgNS4wMDIgMCAwIDAgNC4wMjcgNC45MDUgNi40NiA2LjQ2IDAgMCAxIC41NDQtMi4wNzNDMy42OTUgNy41MzYgMy4xMzIgNi44NjQgMyA1LjkxaC0uNXYtLjQyNmguNDY2VjUuMDVjMC0uMDQ2IDAtLjA5My4wMDQtLjEzNUgyLjV2LS40MjdoLjUxMUMzLjIzNiAzLjI0IDQuMjEzIDIuNSA1LjY4MSAyLjVjLjMxNiAwIC41OS4wMzEuODE5LjA4NXYuNzMzYTMuNDYgMy40NiAwIDAgMC0uODE1LS4wODJjLS45MTkgMC0xLjUzOC40NjYtMS43MzQgMS4yNTJoMS45MTd2LjQyN2gtMS45OGMtLjAwMy4wNDYtLjAwMy4wOTctLjAwMy4xNDd2LjQyMmgxLjk4M3YuNDI3SDMuOTNjLjExOC42MDIuNDY4IDEuMDMgMS4wMDUgMS4yMjlhNi41IDYuNSAwIDAgMSA0Ljk3LTMuMTEzQTUuMDAyIDUuMDAyIDAgMCAwIDAgNXptMTYgNS41YTUuNSA1LjUgMCAxIDEtMTEgMCA1LjUgNS41IDAgMCAxIDExIDB6bS03Ljc1IDEuMzIyYy4wNjkuODM1Ljc0NiAxLjQ4NSAxLjk2NCAxLjU2MlYxNGguNTR2LS42MmMxLjI1OS0uMDg2IDEuOTk2LS43NCAxLjk5Ni0xLjY5IDAtLjg2NS0uNTYzLTEuMzEtMS41Ny0xLjU0bC0uNDI2LS4xVjguMzc0Yy41NC4wNi44ODQuMzQ3Ljk2Ni43NDVoLjk0OGMtLjA3LS44MDQtLjc3OS0xLjQzMy0xLjkxNC0xLjUwMlY3aC0uNTR2LjYyOWMtMS4wNzYuMTAzLTEuODA4LjczMi0xLjgwOCAxLjYyMiAwIC43ODcuNTQ0IDEuMjg4IDEuNDUgMS40OTNsLjM1OC4wODV2MS43OGMtLjU1NC0uMDgtLjkyLS4zNzYtMS4wMDMtLjc4N0g4LjI1em0xLjk2LTEuODk1Yy0uNTMyLS4xMi0uODItLjM2NC0uODItLjczMiAwLS40MS4zMTEtLjcxOS44MjQtLjgwOXYxLjU0aC0uMDA1em0uNjIyIDEuMDQ0Yy42NDUuMTQ1Ljk0My4zOC45NDMuNzk2IDAgLjQ3NC0uMzcuOC0xLjAyLjg2di0xLjY3NGwuMDc3LjAxOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDdXJyZW5jeVBvdW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOC41ODVoMS45NjljLjExNS40NjUuMTg2LjkzOS4xODYgMS40MyAwIDEuMzg1LS43MzYgMi40OTYtMi4wNzUgMi43NzFWMTRIMTJ2LTEuMjRINi40OTJ2LS4xMjljLjgyNS0uNTI1IDEuMTM1LTEuNDQ2IDEuMTM1LTIuNjk0IDAtLjQ2NS0uMDctLjkxMy0uMTY4LTEuMzUyaDMuMjl2LS45NzJINy4yMmMtLjE4Ni0uNzIzLS4zNzItMS40NTUtLjM3Mi0yLjI0NyAwLTEuMjc0IDEuMDQ3LTIuMDY2IDIuNTgtMi4wNjZhNS4zMiA1LjMyIDAgMCAxIDIuMTAzLjQ2NVYyLjQ1NkE1LjYyOSA1LjYyOSAwIDAgMCA5LjM0OCAyQzYuODY1IDIgNS4zMjIgMy4yOTEgNS4zMjIgNS4zNjZjMCAuNzc1LjE5NSAxLjUxNS4zOTkgMi4yNDdINHYuOTcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0N1cnJlbmN5WWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNzUgMTR2LTIuNjI5aDIuNDQ2di0uOTY3SDguNzV2LTEuMzFoMi40NDV2LS45NjdIOS4xMjhMMTIuNSAyaC0xLjY5OUw4LjA0NyA3LjMyN2gtLjA4Nkw1LjIwNyAySDMuNWwzLjM2MyA2LjEyN0g0Ljc3OHYuOTY4SDcuMjV2MS4zMUg0Ljc4di45NjZoMi40N1YxNGgxLjUwMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNDdXJzb3JGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA4MiAyLjE4MmEuNS41IDAgMCAxIC4xMDMuNTU3TDguNTI4IDE1LjQ2N2EuNS41IDAgMCAxLS45MTctLjAwN0w1LjU3IDEwLjY5NC44MDMgOC42NTJhLjUuNSAwIDAgMS0uMDA2LS45MTZsMTIuNzI4LTUuNjU3YS41LjUgMCAwIDEgLjU1Ni4xMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3Vyc29yVGV4dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDJhLjUuNSAwIDAgMSAuNS0uNWMuODYyIDAgMS41NzMuMjg3IDIuMDYuNTY2LjE3NC4wOTkuMzIxLjE5OC40NC4yODYuMTE5LS4wODguMjY2LS4xODcuNDQtLjI4NkE0LjE2NSA0LjE2NSAwIDAgMSAxMC41IDEuNWEuNS41IDAgMCAxIDAgMWMtLjYzOCAwLTEuMTc3LjIxMy0xLjU2NC40MzRhMy40OSAzLjQ5IDAgMCAwLS40MzYuMjk0VjcuNUg5YS41LjUgMCAwIDEgMCAxaC0uNXY0LjI3MmMuMS4wOC4yNDguMTg3LjQzNi4yOTQuMzg3LjIyMS45MjYuNDM0IDEuNTY0LjQzNGEuNS41IDAgMCAxIDAgMSA0LjE2NSA0LjE2NSAwIDAgMS0yLjA2LS41NjZBNC41NjEgNC41NjEgMCAwIDEgOCAxMy42NWE0LjU2MSA0LjU2MSAwIDAgMS0uNDQuMjg1IDQuMTY1IDQuMTY1IDAgMCAxLTIuMDYuNTY2LjUuNSAwIDAgMSAwLTFjLjYzOCAwIDEuMTc3LS4yMTMgMS41NjQtLjQzNC4xODgtLjEwNy4zMzUtLjIxNC40MzYtLjI5NFY4LjVIN2EuNS41IDAgMCAxIDAtMWguNVYzLjIyOGEzLjQ5IDMuNDkgMCAwIDAtLjQzNi0uMjk0QTMuMTY2IDMuMTY2IDAgMCAwIDUuNSAyLjUuNS41IDAgMCAxIDUgMnptMy4zNTIgMS4zNTV6bS0uNzA0IDkuMjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzQ3Vyc29yIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0LjA4MiAyLjE4MmEuNS41IDAgMCAxIC4xMDMuNTU3TDguNTI4IDE1LjQ2N2EuNS41IDAgMCAxLS45MTctLjAwN0w1LjU3IDEwLjY5NC44MDMgOC42NTJhLjUuNSAwIDAgMS0uMDA2LS45MTZsMTIuNzI4LTUuNjU3YS41LjUgMCAwIDEgLjU1Ni4xMDN6TTIuMjUgOC4xODRsMy44OTcgMS42N2EuNS41IDAgMCAxIC4yNjIuMjYzbDEuNjcgMy44OTdMMTIuNzQzIDMuNTIgMi4yNSA4LjE4NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEYXNoQ2lyY2xlRG90dGVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGMtLjE3NiAwLS4zNS4wMDYtLjUyMy4wMTdsLjA2NC45OThhNy4xMTcgNy4xMTcgMCAwIDEgLjkxOCAwbC4wNjQtLjk5OEE4LjExMyA4LjExMyAwIDAgMCA4IDB6TTYuNDQuMTUyYy0uMzQ2LjA2OS0uNjg0LjE2LTEuMDEyLjI3bC4zMjEuOTQ4Yy4yODctLjA5OC41ODItLjE3Ny44ODQtLjIzN0w2LjQ0LjE1M3ptNC4xMzIuMjcxYTcuOTQ2IDcuOTQ2IDAgMCAwLTEuMDExLS4yN2wtLjE5NC45OGMuMzAyLjA2LjU5Ny4xNC44ODQuMjM3bC4zMjEtLjk0N3ptMS44NzMuOTI1YTggOCAwIDAgMC0uOTA2LS41MjRsLS40NDMuODk2Yy4yNzUuMTM2LjU0LjI5Ljc5My40NTlsLjU1Ni0uODMxek00LjQ2LjgyNGMtLjMxNC4xNTUtLjYxNi4zMy0uOTA1LjUyNGwuNTU2LjgzYTcuMDcgNy4wNyAwIDAgMSAuNzkzLS40NThMNC40Ni44MjR6TTIuNzI1IDEuOTg1Yy0uMjYyLjIzLS41MS40NzgtLjc0Ljc0bC43NTIuNjZjLjIwMi0uMjMuNDE4LS40NDYuNjQ4LS42NDhsLS42Ni0uNzUyem0xMS4yOS43NGE4LjA1OCA4LjA1OCAwIDAgMC0uNzQtLjc0bC0uNjYuNzUyYy4yMy4yMDIuNDQ3LjQxOC42NDguNjQ4bC43NTItLjY2em0xLjE2MSAxLjczNWE3Ljk4IDcuOTggMCAwIDAtLjUyNC0uOTA1bC0uODMuNTU2Yy4xNjkuMjUzLjMyMi41MTguNDU4Ljc5M2wuODk2LS40NDN6TTEuMzQ4IDMuNTU1Yy0uMTk0LjI4OS0uMzcuNTkxLS41MjQuOTA2bC44OTYuNDQzYy4xMzYtLjI3NS4yOS0uNTQuNDU5LS43OTNsLS44MzEtLjU1NnpNLjQyMyA1LjQyOGE3Ljk0NSA3Ljk0NSAwIDAgMC0uMjcgMS4wMTFsLjk4LjE5NGMuMDYtLjMwMi4xNC0uNTk3LjIzNy0uODg0bC0uOTQ3LS4zMjF6TTE1Ljg0OCA2LjQ0YTcuOTQzIDcuOTQzIDAgMCAwLS4yNy0xLjAxMmwtLjk0OC4zMjFjLjA5OC4yODcuMTc3LjU4Mi4yMzcuODg0bC45OC0uMTk0ek0uMDE3IDcuNDc3YTguMTEzIDguMTEzIDAgMCAwIDAgMS4wNDZsLjk5OC0uMDY0YTcuMTE3IDcuMTE3IDAgMCAxIDAtLjkxOGwtLjk5OC0uMDY0ek0xNiA4YTguMSA4LjEgMCAwIDAtLjAxNy0uNTIzbC0uOTk4LjA2NGE3LjExIDcuMTEgMCAwIDEgMCAuOTE4bC45OTguMDY0QTguMSA4LjEgMCAwIDAgMTYgOHpNLjE1MiA5LjU2Yy4wNjkuMzQ2LjE2LjY4NC4yNyAxLjAxMmwuOTQ4LS4zMjFhNi45NDQgNi45NDQgMCAwIDEtLjIzNy0uODg0bC0uOTguMTk0em0xNS40MjUgMS4wMTJjLjExMi0uMzI4LjIwMi0uNjY2LjI3LTEuMDExbC0uOTgtLjE5NGMtLjA2LjMwMi0uMTQuNTk3LS4yMzcuODg0bC45NDcuMzIxek0uODI0IDExLjU0YTggOCAwIDAgMCAuNTI0LjkwNWwuODMtLjU1NmE2Ljk5OSA2Ljk5OSAwIDAgMS0uNDU4LS43OTNsLS44OTYuNDQzem0xMy44MjguOTA1Yy4xOTQtLjI4OS4zNy0uNTkxLjUyNC0uOTA2bC0uODk2LS40NDNjLS4xMzYuMjc1LS4yOS41NC0uNDU5Ljc5M2wuODMxLjU1NnptLTEyLjY2Ny44M2MuMjMuMjYyLjQ3OC41MS43NC43NGwuNjYtLjc1MmE3LjA0NyA3LjA0NyAwIDAgMS0uNjQ4LS42NDhsLS43NTIuNjZ6bTExLjI5Ljc0Yy4yNjItLjIzLjUxLS40NzguNzQtLjc0bC0uNzUyLS42NmMtLjIwMS4yMy0uNDE4LjQ0Ny0uNjQ4LjY0OGwuNjYuNzUyem0tMS43MzUgMS4xNjFjLjMxNC0uMTU1LjYxNi0uMzMuOTA1LS41MjRsLS41NTYtLjgzYTcuMDcgNy4wNyAwIDAgMS0uNzkzLjQ1OGwuNDQzLjg5NnptLTcuOTg1LS41MjRjLjI4OS4xOTQuNTkxLjM3LjkwNi41MjRsLjQ0My0uODk2YTYuOTk4IDYuOTk4IDAgMCAxLS43OTMtLjQ1OWwtLjU1Ni44MzF6bTEuODczLjkyNWMuMzI4LjExMi42NjYuMjAyIDEuMDExLjI3bC4xOTQtLjk4YTYuOTUzIDYuOTUzIDAgMCAxLS44ODQtLjIzN2wtLjMyMS45NDd6bTQuMTMyLjI3MWE3Ljk0NCA3Ljk0NCAwIDAgMCAxLjAxMi0uMjdsLS4zMjEtLjk0OGE2Ljk1NCA2Ljk1NCAwIDAgMS0uODg0LjIzN2wuMTk0Ljk4em0tMi4wODMuMTM1YTguMSA4LjEgMCAwIDAgMS4wNDYgMGwtLjA2NC0uOTk4YTcuMTEgNy4xMSAwIDAgMS0uOTE4IDBsLS4wNjQuOTk4ek00LjUgNy41YS41LjUgMCAwIDAgMCAxaDdhLjUuNSAwIDAgMCAwLTFoLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGFzaENpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek00LjUgNy41YS41LjUgMCAwIDAgMCAxaDdhLjUuNSAwIDAgMCAwLTFoLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGFzaENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdBLjUuNSAwIDAgMSA0IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGFzaExnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOGExIDEgMCAwIDEgMS0xaDE0YTEgMSAwIDEgMSAwIDJIMWExIDEgMCAwIDEtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rhc2hTcXVhcmVEb3R0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDBjLS4xNjYgMC0uMzMuMDE2LS40ODcuMDQ4bC4xOTQuOThBMS41MSAxLjUxIDAgMCAxIDIuNSAxaC40NThWMEgyLjV6bTIuMjkyIDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTZ2MWguOTE2VjB6bTEuODM0IDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTd2MWguOTE3VjB6TTEzLjUgMGgtLjQ1OHYxaC40NThjLjEgMCAuMTk5LjAxLjI5My4wMjlsLjE5NC0uOTgxQTIuNTEgMi41MSAwIDAgMCAxMy41IDB6bTIuMDc5IDEuMTFhMi41MTEgMi41MTEgMCAwIDAtLjY5LS42ODlsLS41NTYuODMxYy4xNjQuMTEuMzA1LjI1MS40MTUuNDE1bC44My0uNTU2ek0xLjExLjQyMWEyLjUxMSAyLjUxMSAwIDAgMC0uNjg5LjY5bC44MzEuNTU2Yy4xMS0uMTY0LjI1MS0uMzA1LjQxNS0uNDE1TDEuMTEuNDIyek0xNiAyLjVjMC0uMTY2LS4wMTYtLjMzLS4wNDgtLjQ4N2wtLjk4LjE5NGMuMDE4LjA5NC4wMjguMTkyLjAyOC4yOTN2LjQ1OGgxVjIuNXpNLjA0OCAyLjAxM0EyLjUxIDIuNTEgMCAwIDAgMCAyLjV2LjQ1OGgxVjIuNWMwLS4xLjAxLS4xOTkuMDI5LS4yOTNsLS45ODEtLjE5NHpNMCAzLjg3NXYuOTE3aDF2LS45MTdIMHptMTYgLjkxN3YtLjkxN2gtMXYuOTE3aDF6TTAgNS43MDh2LjkxN2gxdi0uOTE3SDB6bTE2IC45MTd2LS45MTdoLTF2LjkxN2gxek0wIDcuNTQydi45MTZoMXYtLjkxNkgwem0xNSAuOTE2aDF2LS45MTZoLTF2LjkxNnpNMCA5LjM3NXYuOTE3aDF2LS45MTdIMHptMTYgLjkxN3YtLjkxN2gtMXYuOTE3aDF6bS0xNiAuOTE2di45MTdoMXYtLjkxN0gwem0xNiAuOTE3di0uOTE3aC0xdi45MTdoMXptLTE2IC45MTd2LjQ1OGMwIC4xNjYuMDE2LjMzLjA0OC40ODdsLjk4LS4xOTRBMS41MSAxLjUxIDAgMCAxIDEgMTMuNXYtLjQ1OEgwem0xNiAuNDU4di0uNDU4aC0xdi40NThjMCAuMS0uMDEuMTk5LS4wMjkuMjkzbC45ODEuMTk0Yy4wMzItLjE1OC4wNDgtLjMyLjA0OC0uNDg3ek0uNDIxIDE0Ljg5Yy4xODMuMjcyLjQxNy41MDYuNjkuNjg5bC41NTYtLjgzMWExLjUxIDEuNTEgMCAwIDEtLjQxNS0uNDE1bC0uODMuNTU2em0xNC40NjkuNjg5Yy4yNzItLjE4My41MDYtLjQxNy42ODktLjY5bC0uODMxLS41NTZjLS4xMS4xNjQtLjI1MS4zMDUtLjQxNS40MTVsLjU1Ni44M3ptLTEyLjg3Ny4zNzNjLjE1OC4wMzIuMzIuMDQ4LjQ4Ny4wNDhoLjQ1OHYtMUgyLjVjLS4xIDAtLjE5OS0uMDEtLjI5My0uMDI5bC0uMTk0Ljk4MXpNMTMuNSAxNmMuMTY2IDAgLjMzLS4wMTYuNDg3LS4wNDhsLS4xOTQtLjk4QTEuNTEgMS41MSAwIDAgMSAxMy41IDE1aC0uNDU4djFoLjQ1OHptLTkuNjI1IDBoLjkxN3YtMWgtLjkxN3Yxem0xLjgzMyAwaC45MTd2LTFoLS45MTd2MXptMS44MzQgMGguOTE2di0xaC0uOTE2djF6bTEuODMzIDBoLjkxN3YtMWgtLjkxN3Yxem0xLjgzMyAwaC45MTd2LTFoLS45MTd2MXpNNC41IDcuNWEuNS41IDAgMCAwIDAgMWg3YS41LjUgMCAwIDAgMC0xaC03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rhc2hTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMi41IDcuNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rhc2hTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdBLjUuNSAwIDAgMSA0IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDhhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03QS41LjUgMCAwIDEgNCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RpYWdyYW0yRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzLjVBMS41IDEuNSAwIDAgMSA3LjUgMmgxQTEuNSAxLjUgMCAwIDEgMTAgMy41djFBMS41IDEuNSAwIDAgMSA4LjUgNnYxSDExYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtMSAwVjhoLTV2LjVhLjUuNSAwIDAgMS0xIDB2LTFBLjUuNSAwIDAgMSA1IDdoMi41VjZBMS41IDEuNSAwIDAgMSA2IDQuNXYtMXptLTMgOEExLjUgMS41IDAgMCAxIDQuNSAxMGgxQTEuNSAxLjUgMCAwIDEgNyAxMS41djFBMS41IDEuNSAwIDAgMSA1LjUgMTRoLTFBMS41IDEuNSAwIDAgMSAzIDEyLjV2LTF6bTYgMGExLjUgMS41IDAgMCAxIDEuNS0xLjVoMWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTFBMS41IDEuNSAwIDAgMSA5IDEyLjV2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGlhZ3JhbTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMy41QTEuNSAxLjUgMCAwIDEgNy41IDJoMUExLjUgMS41IDAgMCAxIDEwIDMuNXYxQTEuNSAxLjUgMCAwIDEgOC41IDZ2MUgxMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLTEgMFY4aC01di41YS41LjUgMCAwIDEtMSAwdi0xQS41LjUgMCAwIDEgNSA3aDIuNVY2QTEuNSAxLjUgMCAwIDEgNiA0LjV2LTF6TTguNSA1YS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMXpNMyAxMS41QTEuNSAxLjUgMCAwIDEgNC41IDEwaDFBMS41IDEuNSAwIDAgMSA3IDExLjV2MUExLjUgMS41IDAgMCAxIDUuNSAxNGgtMUExLjUgMS41IDAgMCAxIDMgMTIuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXptNC41LjVhMS41IDEuNSAwIDAgMSAxLjUtMS41aDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xQTEuNSAxLjUgMCAwIDEgOSAxMi41di0xem0xLjUtLjVhLjUuNSAwIDAgMC0uNS41djFhLjUuNSAwIDAgMCAuNS41aDFhLjUuNSAwIDAgMCAuNS0uNXYtMWEuNS41IDAgMCAwLS41LS41aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RpYWdyYW0zRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAzLjVBMS41IDEuNSAwIDAgMSA3LjUgMmgxQTEuNSAxLjUgMCAwIDEgMTAgMy41djFBMS41IDEuNSAwIDAgMSA4LjUgNnYxSDE0YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtMSAwVjhoLTV2LjVhLjUuNSAwIDAgMS0xIDBWOGgtNXYuNWEuNS41IDAgMCAxLTEgMHYtMUEuNS41IDAgMCAxIDIgN2g1LjVWNkExLjUgMS41IDAgMCAxIDYgNC41di0xem0tNiA4QTEuNSAxLjUgMCAwIDEgMS41IDEwaDFBMS41IDEuNSAwIDAgMSA0IDExLjV2MUExLjUgMS41IDAgMCAxIDIuNSAxNGgtMUExLjUgMS41IDAgMCAxIDAgMTIuNXYtMXptNiAwQTEuNSAxLjUgMCAwIDEgNy41IDEwaDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFBMS41IDEuNSAwIDAgMSA4LjUgMTRoLTFBMS41IDEuNSAwIDAgMSA2IDEyLjV2LTF6bTYgMGExLjUgMS41IDAgMCAxIDEuNS0xLjVoMWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTFhMS41IDEuNSAwIDAgMS0xLjUtMS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RpYWdyYW0zIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDMuNUExLjUgMS41IDAgMCAxIDcuNSAyaDFBMS41IDEuNSAwIDAgMSAxMCAzLjV2MUExLjUgMS41IDAgMCAxIDguNSA2djFIMTRhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0xIDBWOGgtNXYuNWEuNS41IDAgMCAxLTEgMFY4aC01di41YS41LjUgMCAwIDEtMSAwdi0xQS41LjUgMCAwIDEgMiA3aDUuNVY2QTEuNSAxLjUgMCAwIDEgNiA0LjV2LTF6TTguNSA1YS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMXpNMCAxMS41QTEuNSAxLjUgMCAwIDEgMS41IDEwaDFBMS41IDEuNSAwIDAgMSA0IDExLjV2MUExLjUgMS41IDAgMCAxIDIuNSAxNGgtMUExLjUgMS41IDAgMCAxIDAgMTIuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXptNC41LjVBMS41IDEuNSAwIDAgMSA3LjUgMTBoMWExLjUgMS41IDAgMCAxIDEuNSAxLjV2MUExLjUgMS41IDAgMCAxIDguNSAxNGgtMUExLjUgMS41IDAgMCAxIDYgMTIuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXptNC41LjVhMS41IDEuNSAwIDAgMSAxLjUtMS41aDFhMS41IDEuNSAwIDAgMSAxLjUgMS41djFhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xYTEuNSAxLjUgMCAwIDEtMS41LTEuNXYtMXptMS41LS41YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaWFtb25kRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi45NS40MzVjLjU4LS41OCAxLjUyLS41OCAyLjEgMGw2LjUxNSA2LjUxNmMuNTguNTguNTggMS41MTkgMCAyLjA5OEw5LjA1IDE1LjU2NWMtLjU4LjU4LTEuNTE5LjU4LTIuMDk4IDBMLjQzNSA5LjA1YTEuNDgyIDEuNDgyIDAgMCAxIDAtMi4wOThMNi45NS40MzV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGlhbW9uZEhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wNS40MzVjLS41OC0uNTgtMS41Mi0uNTgtMi4xIDBMLjQzNiA2Ljk1Yy0uNTguNTgtLjU4IDEuNTE5IDAgMi4wOThsNi41MTYgNi41MTZjLjU4LjU4IDEuNTE5LjU4IDIuMDk4IDBsNi41MTYtNi41MTZjLjU4LS41OC41OC0xLjUxOSAwLTIuMDk4TDkuMDUuNDM1ek04IC45ODljLjEyNyAwIC4yNTMuMDQ5LjM1LjE0NWw2LjUxNiA2LjUxNmEuNDk1LjQ5NSAwIDAgMSAwIC43TDguMzUgMTQuODY2YS40OTMuNDkzIDAgMCAxLS4zNS4xNDVWLjk4OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTUuNDM1Yy41OC0uNTggMS41Mi0uNTggMi4xIDBsNi41MTUgNi41MTZjLjU4LjU4LjU4IDEuNTE5IDAgMi4wOThMOS4wNSAxNS41NjVjLS41OC41OC0xLjUxOS41OC0yLjA5OCAwTC40MzUgOS4wNWExLjQ4MiAxLjQ4MiAwIDAgMSAwLTIuMDk4TDYuOTUuNDM1em0xLjQuN2EuNDk1LjQ5NSAwIDAgMC0uNyAwTDEuMTM0IDcuNjVhLjQ5NS40OTUgMCAwIDAgMCAuN2w2LjUxNiA2LjUxNmEuNDk1LjQ5NSAwIDAgMCAuNyAwbDYuNTE2LTYuNTE2YS40OTUuNDk1IDAgMCAwIDAtLjdMOC4zNSAxLjEzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaWNlMUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAwYTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxMGEzIDMgMCAwIDAgMy0zVjNhMyAzIDAgMCAwLTMtM0gzem01IDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaWNlMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwiY2lyY2xlXCIsXCJhdHRyXCI6e1wiY3hcIjpcIjhcIixcImN5XCI6XCI4XCIsXCJyXCI6XCIxLjVcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDEwek0zIDBhMyAzIDAgMCAwLTMgM3YxMGEzIDMgMCAwIDAgMyAzaDEwYTMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zSDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgM2EzIDMgMCAwIDEgMy0zaDEwYTMgMyAwIDAgMSAzIDN2MTBhMyAzIDAgMCAxLTMgM0gzYTMgMyAwIDAgMS0zLTNWM3ptNS41IDFhMS41IDEuNSAwIDEgMC0zIDAgMS41IDEuNSAwIDAgMCAzIDB6bTYuNSA5LjVhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMWEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxMHpNMyAwYTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxMGEzIDMgMCAwIDAgMy0zVjNhMyAzIDAgMCAwLTMtM0gzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA0YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem04IDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMi41IDRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTggOGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNOCA5LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMWEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxMHpNMyAwYTMgMyAwIDAgMC0zIDN2MTBhMyAzIDAgMCAwIDMgM2gxMGEzIDMgMCAwIDAgMy0zVjNhMyAzIDAgMCAwLTMtM0gzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA0YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem04IDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bS00LTRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMSA1LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTggMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMS41IDYuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNNCAxMy41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RpY2U0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDFhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMTB6TTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptOCAwYTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0wIDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bS04IDBhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMi41IDRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTggMGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNMTIgMTMuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pNNS41IDEyYTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwek04IDkuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaWNlNSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAxYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWM2EyIDIgMCAwIDEgMi0yaDEwek0zIDBhMyAzIDAgMCAwLTMgM3YxMGEzIDMgMCAwIDAgMyAzaDEwYTMgMyAwIDAgMCAzLTNWM2EzIDMgMCAwIDAtMy0zSDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTggMGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptMCA4YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0tOCAwYTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem00LTRhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGljZTZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3ptMSA1LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTggMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptMS41IDYuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNMTIgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzek01LjUgMTJhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6TTQgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RpY2U2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDFhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlYzYTIgMiAwIDAgMSAyLTJoMTB6TTMgMGEzIDMgMCAwIDAtMyAzdjEwYTMgMyAwIDAgMCAzIDNoMTBhMyAzIDAgMCAwIDMtM1YzYTMgMyAwIDAgMC0zLTNIM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptOCAwYTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0wIDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTAtNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptLTggNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptMC00YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rpc2NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTYgMGEyIDIgMCAxIDAtNCAwIDIgMiAwIDAgMCA0IDB6TTQgOGE0IDQgMCAwIDEgNC00IC41LjUgMCAwIDAgMC0xIDUgNSAwIDAgMC01IDUgLjUuNSAwIDAgMCAxIDB6bTkgMGEuNS41IDAgMSAwLTEgMCA0IDQgMCAwIDEtNCA0IC41LjUgMCAwIDAgMCAxIDUgNSAwIDAgMCA1LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRGlzYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwek04IDRhNCA0IDAgMCAwLTQgNCAuNS41IDAgMCAxLTEgMCA1IDUgMCAwIDEgNS01IC41LjUgMCAwIDEgMCAxem00LjUgMy41YS41LjUgMCAwIDEgLjUuNSA1IDUgMCAwIDEtNSA1IC41LjUgMCAwIDEgMC0xIDQgNCAwIDAgMCA0LTQgLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaXNjb3JkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTUyIDYuNzEyYy0uNDU2IDAtLjgxNi40LS44MTYuODg4cy4zNjguODg4LjgxNi44ODhjLjQ1NiAwIC44MTYtLjQuODE2LS44ODguMDA4LS40ODgtLjM2LS44ODgtLjgxNi0uODg4em0yLjkyIDBjLS40NTYgMC0uODE2LjQtLjgxNi44ODhzLjM2OC44ODguODE2Ljg4OGMuNDU2IDAgLjgxNi0uNC44MTYtLjg4OHMtLjM2LS44ODgtLjgxNi0uODg4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjM2IDBIMi42NEMxLjczNiAwIDEgLjczNiAxIDEuNjQ4djEwLjgxNmMwIC45MTIuNzM2IDEuNjQ4IDEuNjQgMS42NDhoOS4wNzJsLS40MjQtMS40OCAxLjAyNC45NTIuOTY4Ljg5NkwxNSAxNlYxLjY0OEMxNSAuNzM2IDE0LjI2NCAwIDEzLjM2IDB6bS0zLjA4OCAxMC40NDhzLS4yODgtLjM0NC0uNTI4LS42NDhjMS4wNDgtLjI5NiAxLjQ0OC0uOTUyIDEuNDQ4LS45NTItLjMyOC4yMTYtLjY0LjM2OC0uOTIuNDcyLS40LjE2OC0uNzg0LjI4LTEuMTYuMzQ0YTUuNjA0IDUuNjA0IDAgMCAxLTIuMDcyLS4wMDggNi43MTYgNi43MTYgMCAwIDEtMS4xNzYtLjM0NCA0LjY4OCA0LjY4OCAwIDAgMS0uNTg0LS4yNzJjLS4wMjQtLjAxNi0uMDQ4LS4wMjQtLjA3Mi0uMDQtLjAxNi0uMDA4LS4wMjQtLjAxNi0uMDMyLS4wMjQtLjE0NC0uMDgtLjIyNC0uMTM2LS4yMjQtLjEzNnMuMzg0LjY0IDEuNC45NDRjLS4yNC4zMDQtLjUzNi42NjQtLjUzNi42NjQtMS43NjgtLjA1Ni0yLjQ0LTEuMjE2LTIuNDQtMS4yMTYgMC0yLjU3NiAxLjE1Mi00LjY2NCAxLjE1Mi00LjY2NCAxLjE1Mi0uODY0IDIuMjQ4LS44NCAyLjI0OC0uODRsLjA4LjA5NmMtMS40NC40MTYtMi4xMDQgMS4wNDgtMi4xMDQgMS4wNDhzLjE3Ni0uMDk2LjQ3Mi0uMjMyYy44NTYtLjM3NiAxLjUzNi0uNDggMS44MTYtLjUwNC4wNDgtLjAwOC4wODgtLjAxNi4xMzYtLjAxNmE2LjUyMSA2LjUyMSAwIDAgMSA0LjAyNC43NTJzLS42MzItLjYtMS45OTItMS4wMTZsLjExMi0uMTI4czEuMDk2LS4wMjQgMi4yNDguODRjMCAwIDEuMTUyIDIuMDg4IDEuMTUyIDQuNjY0IDAgMC0uNjggMS4xNi0yLjQ0OCAxLjIxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaXNwbGF5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDEyYzAgLjY2Ny0uMDgzIDEuMTY3LS4yNSAxLjVINWEuNS41IDAgMCAwIDAgMWg2YS41LjUgMCAwIDAgMC0xaC0uNzVjLS4xNjctLjMzMy0uMjUtLjgzMy0uMjUtMS41aDRjMiAwIDItMiAyLTJWNGMwLTItMi0yLTItMkgyQzAgMiAwIDQgMCA0djZjMCAyIDIgMiAyIDJoNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaXNwbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNHMwLTIgMi0yaDEyczIgMCAyIDJ2NnMwIDItMiAyaC00YzAgLjY2Ny4wODMgMS4xNjcuMjUgMS41SDExYS41LjUgMCAwIDEgMCAxSDVhLjUuNSAwIDAgMSAwLTFoLjc1Yy4xNjctLjMzMy4yNS0uODMzLjI1LTEuNUgycy0yIDAtMi0yVjR6bTEuMzk4LS44NTVhLjc1OC43NTggMCAwIDAtLjI1NC4zMDJBMS40NiAxLjQ2IDAgMCAwIDEgNC4wMVYxMGMwIC4zMjUuMDc4LjUwMi4xNDUuNjAyLjA3LjEwNS4xNy4xODguMzAyLjI1NGExLjQ2NCAxLjQ2NCAwIDAgMCAuNTM4LjE0M0wyLjAxIDExSDE0Yy4zMjUgMCAuNTAyLS4wNzguNjAyLS4xNDVhLjc1OC43NTggMCAwIDAgLjI1NC0uMzAyIDEuNDY0IDEuNDY0IDAgMCAwIC4xNDMtLjUzOEwxNSA5Ljk5VjRjMC0uMzI1LS4wNzgtLjUwMi0uMTQ1LS42MDJhLjc1Ny43NTcgMCAwIDAtLjMwMi0uMjU0QTEuNDYgMS40NiAwIDAgMCAxMy45OSAzSDJjLS4zMjUgMC0uNTAyLjA3OC0uNjAyLjE0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaXN0cmlidXRlSG9yaXpvbnRhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuNSAxYS41LjUgMCAwIDAtLjUuNXYxM2EuNS41IDAgMCAwIDEgMHYtMTNhLjUuNSAwIDAgMC0uNS0uNXptLTEzIDBhLjUuNSAwIDAgMC0uNS41djEzYS41LjUgMCAwIDAgMSAwdi0xM2EuNS41IDAgMCAwLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDdhMSAxIDAgMCAwLTEgMXYxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEaXN0cmlidXRlVmVydGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgMS41YS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIDAtMWgtMTNhLjUuNSAwIDAgMC0uNS41em0wIDEzYS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIDAtMWgtMTNhLjUuNSAwIDAgMC0uNS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgN2ExIDEgMCAwIDEgMS0xaDEwYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rvb3JDbG9zZWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDFhMSAxIDAgMCAxIDEgMXYxM2gxLjVhLjUuNSAwIDAgMSAwIDFoLTEzYS41LjUgMCAwIDEgMC0xSDNWMmExIDEgMCAwIDEgMS0xaDh6bS0yIDlhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Rvb3JDbG9zZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAyYTEgMSAwIDAgMSAxLTFoOGExIDEgMCAwIDEgMSAxdjEzaDEuNWEuNS41IDAgMCAxIDAgMWgtMTNhLjUuNSAwIDAgMSAwLTFIM1Yyem0xIDEzaDhWMkg0djEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOWExIDEgMCAxIDAgMiAwIDEgMSAwIDAgMC0yIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRG9vck9wZW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxNWEuNS41IDAgMCAwIDAgMWgxM2EuNS41IDAgMCAwIDAtMUgxM1YyLjVBMS41IDEuNSAwIDAgMCAxMS41IDFIMTFWLjVhLjUuNSAwIDAgMC0uNTctLjQ5NWwtNyAxQS41LjUgMCAwIDAgMyAxLjVWMTVIMS41ek0xMSAyaC41YS41LjUgMCAwIDEgLjUuNVYxNWgtMVYyem0tMi41IDhjLS4yNzYgMC0uNS0uNDQ4LS41LTFzLjIyNC0xIC41LTEgLjUuNDQ4LjUgMS0uMjI0IDEtLjUgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEb29yT3BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMTBjLS4yNzYgMC0uNS0uNDQ4LS41LTFzLjIyNC0xIC41LTEgLjUuNDQ4LjUgMS0uMjI0IDEtLjUgMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44MjguMTIyQS41LjUgMCAwIDEgMTEgLjVWMWguNUExLjUgMS41IDAgMCAxIDEzIDIuNVYxNWgxLjVhLjUuNSAwIDAgMSAwIDFoLTEzYS41LjUgMCAwIDEgMC0xSDNWMS41YS41LjUgMCAwIDEgLjQzLS40OTVsNy0xYS41LjUgMCAwIDEgLjM5OC4xMTd6TTExLjUgMkgxMXYxM2gxVjIuNWEuNS41IDAgMCAwLS41LS41ek00IDEuOTM0VjE1aDZWMS4wNzdsLTYgLjg1N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEb3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA5LjVhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRG93bmxvYWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjUgOS45YS41LjUgMCAwIDEgLjUuNXYyLjVhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0yLjVhLjUuNSAwIDAgMSAxIDB2Mi41YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0ydi0yLjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY0NiAxMS44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMy0zYS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSAxMC4yOTNWMS41YS41LjUgMCAwIDAtMSAwdjguNzkzTDUuMzU0IDguMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMyAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0RyaWJiYmxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBDMy41ODQgMCAwIDMuNTg0IDAgOHMzLjU4NCA4IDggOGM0LjQwOCAwIDgtMy41ODQgOC04cy0zLjU5Mi04LTgtOHptNS4yODQgMy42ODhhNi44MDIgNi44MDIgMCAwIDEgMS41NDUgNC4yNTFjLS4yMjYtLjA0My0yLjQ4Mi0uNTAzLTQuNzU1LS4yMTctLjA1Mi0uMTEyLS4wOTYtLjIzNC0uMTQ4LS4zNTUtLjEzOS0uMzMtLjI5NS0uNjY4LS40NTEtLjk5IDIuNTE2LTEuMDIzIDMuNjYyLTIuNDk4IDMuODEtMi42OXpNOCAxLjE4YzEuNzM1IDAgMy4zMjMuNjUgNC41MyAxLjcxOC0uMTIyLjE3NC0xLjE1NSAxLjU1My0zLjU4NCAyLjQ2NC0xLjEyLTIuMDU2LTIuMzYtMy43NC0yLjU1MS00QTYuOTUgNi45NSAwIDAgMSA4IDEuMTh6bS0yLjkwNy42NDJBNDMuMTIzIDQzLjEyMyAwIDAgMSA3LjYyNyA1Ljc3Yy0zLjE5My44NS02LjAxMy44MzMtNi4zMTcuODMzYTYuODY1IDYuODY1IDAgMCAxIDMuNzgzLTQuNzh6TTEuMTYzIDguMDFWNy44Yy4yOTUuMDEgMy42MS4wNTMgNy4wMi0uOTcxLjE5OS4zODEuMzgxLjc3Mi41NTUgMS4xNjJsLS4yNy4wNzhjLTMuNTIyIDEuMTM3LTUuMzk2IDQuMjQzLTUuNTUzIDQuNTA0YTYuODE3IDYuODE3IDAgMCAxLTEuNzUyLTQuNTY0ek04IDE0LjgzN2E2Ljc4NSA2Ljc4NSAwIDAgMS00LjE5LTEuNDRjLjEyLS4yNTIgMS41MDktMi45MjQgNS4zNjEtNC4yNjkuMDE4LS4wMDkuMDI2LS4wMDkuMDQ0LS4wMTdhMjguMjQ2IDI4LjI0NiAwIDAgMSAxLjQ1NyA1LjE4QTYuNzIyIDYuNzIyIDAgMCAxIDggMTQuODM3em0zLjgxLTEuMTcxYy0uMDctLjQxNy0uNDM1LTIuNDEyLTEuMzI4LTQuODY4IDIuMTQzLS4zMzggNC4wMTcuMjE3IDQuMjUxLjI5NWE2Ljc3NCA2Ljc3NCAwIDAgMS0yLjkyNCA0LjU3M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEcm9wbGV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAxNmE2IDYgMCAwIDAgNi02YzAtMS42NTUtMS4xMjItMi45MDQtMi40MzItNC4zNjJDMTAuMjU0IDQuMTc2IDguNzUgMi41MDMgOCAwYzAgMC02IDUuNjg2LTYgMTBhNiA2IDAgMCAwIDYgNnpNNi42NDYgNC42NDZjLS4zNzYuMzc3LTEuMjcyIDEuNDg5LTIuMDkzIDMuMTNsLjg5NC40NDhjLjc4LTEuNTU5IDEuNjE2LTIuNTggMS45MDctMi44N2wtLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Ryb3BsZXRIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjIxLjhDNy42OS4yOTUgOCAwIDggMGMuMTA5LjM2My4yMzQuNzA4LjM3MSAxLjAzOC44MTIgMS45NDYgMi4wNzMgMy4zNSAzLjE5NyA0LjZDMTIuODc4IDcuMDk2IDE0IDguMzQ1IDE0IDEwYTYgNiAwIDAgMS0xMiAwQzIgNi42NjggNS41OCAyLjUxNyA3LjIxLjh6bS40MTMgMS4wMjFBMzEuMjUgMzEuMjUgMCAwIDAgNS43OTQgMy45OWMtLjcyNi45NS0xLjQzNiAyLjAwOC0xLjk2IDMuMDdDMy4zMDQgOC4xMzMgMyA5LjEzOCAzIDEwYzAgMCAyLjUgMS41IDUgLjVzNS0uNSA1LS41YzAtMS4yMDEtLjc5Ni0yLjE1Ny0yLjE4MS0zLjdsLS4wMy0uMDMyQzkuNzUgNS4xMSA4LjUgMy43MiA3LjYyMyAxLjgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjU1MyA3Ljc3NmMuODItMS42NDEgMS43MTctMi43NTMgMi4wOTMtMy4xM2wuNzA4LjcwOGMtLjI5LjI5LTEuMTI4IDEuMzExLTEuOTA3IDIuODdsLS44OTQtLjQ0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNEcm9wbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03LjIxLjhDNy42OS4yOTUgOCAwIDggMGMuMTA5LjM2My4yMzQuNzA4LjM3MSAxLjAzOC44MTIgMS45NDYgMi4wNzMgMy4zNSAzLjE5NyA0LjZDMTIuODc4IDcuMDk2IDE0IDguMzQ1IDE0IDEwYTYgNiAwIDAgMS0xMiAwQzIgNi42NjggNS41OCAyLjUxNyA3LjIxLjh6bS40MTMgMS4wMjFBMzEuMjUgMzEuMjUgMCAwIDAgNS43OTQgMy45OWMtLjcyNi45NS0xLjQzNiAyLjAwOC0xLjk2IDMuMDdDMy4zMDQgOC4xMzMgMyA5LjEzOCAzIDEwYTUgNSAwIDAgMCAxMCAwYzAtMS4yMDEtLjc5Ni0yLjE1Ny0yLjE4MS0zLjdsLS4wMy0uMDMyQzkuNzUgNS4xMSA4LjUgMy43MiA3LjYyMyAxLjgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00LjU1MyA3Ljc3NmMuODItMS42NDEgMS43MTctMi43NTMgMi4wOTMtMy4xM2wuNzA4LjcwOGMtLjI5LjI5LTEuMTI4IDEuMzExLTEuOTA3IDIuODdsLS44OTQtLjQ0OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFYXJidWRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02LjgyNSA0LjEzOGMuNTk2IDIuMTQxLS4zNiAzLjU5My0yLjM4OSA0LjExN2E0LjQzMiA0LjQzMiAwIDAgMS0yLjAxOC4wNTRjLS4wNDgtLjAxLjkgMi43NzggMS41MjIgNC42MWwuNDEgMS4yMDVhLjUyLjUyIDAgMCAxLS4zNDYuNjU5bC0uNTkzLjE5YS41NDguNTQ4IDAgMCAxLS42OS0uMzRMLjE4NCA2Ljk5Yy0uNjk2LTIuMTM3LjY2Mi00LjMwOSAyLjU2NC00LjggMi4wMjktLjUyMyAzLjQwMiAwIDQuMDc2IDEuOTQ4em0tLjg2OCAyLjIyMWMuNDMtLjExMi41NjEtLjk5My4yOTItMS45NjktLjI2OS0uOTc1LS44MzYtMS42NzUtMS4yNjYtMS41NjMtLjQzLjExMi0uNTYxLjk5NC0uMjkyIDEuOTY5LjI2OS45NzUuODM2IDEuNjc1IDEuMjY2IDEuNTYzem0zLjIxOC0yLjIyMWMtLjU5NiAyLjE0MS4zNiAzLjU5MyAyLjM4OSA0LjExN2E0LjQzNCA0LjQzNCAwIDAgMCAyLjAxOC4wNTRjLjA0OC0uMDEtLjkgMi43NzgtMS41MjIgNC42MWwtLjQxIDEuMjA1YS41Mi41MiAwIDAgMCAuMzQ2LjY1OWwuNTkzLjE5Yy4yODkuMDkyLjYtLjA2LjY5LS4zNGwyLjUzNi03LjY0M2MuNjk2LTIuMTM3LS42NjItNC4zMDktMi41NjQtNC44LTIuMDI5LS41MjMtMy40MDIgMC00LjA3NiAxLjk0OHptLjg2OCAyLjIyMWMtLjQzLS4xMTItLjU2MS0uOTkzLS4yOTItMS45NjkuMjY5LS45NzUuODM2LTEuNjc1IDEuMjY2LTEuNTYzLjQzLjExMi41NjEuOTk0LjI5MiAxLjk2OS0uMjY5Ljk3NS0uODM2IDEuNjc1LTEuMjY2IDEuNTYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vhc2VsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjQ3My4zMzdhLjUuNSAwIDAgMC0uOTQ2IDBMNi45NTQgMkgyYTEgMSAwIDAgMC0xIDF2N2ExIDEgMCAwIDAgMSAxaDEuODVsLTEuMzIzIDMuODM3YS41LjUgMCAxIDAgLjk0Ni4zMjZMNC45MDggMTFINy41djIuNWEuNS41IDAgMCAwIDEgMFYxMWgyLjU5MmwxLjQzNSA0LjE2M2EuNS41IDAgMCAwIC45NDYtLjMyNkwxMi4xNSAxMUgxNGExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUg5LjA0Nkw4LjQ3My4zMzd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRWFzZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYS41LjUgMCAwIDEgLjQ3My4zMzdMOS4wNDYgMkgxNGExIDEgMCAwIDEgMSAxdjdhMSAxIDAgMCAxLTEgMWgtMS44NWwxLjMyMyAzLjgzN2EuNS41IDAgMSAxLS45NDYuMzI2TDExLjA5MiAxMUg4LjV2M2EuNS41IDAgMCAxLTEgMHYtM0g0LjkwOGwtMS40MzUgNC4xNjNhLjUuNSAwIDEgMS0uOTQ2LS4zMjZMMy44NSAxMUgyYTEgMSAwIDAgMS0xLTFWM2ExIDEgMCAwIDEgMS0xaDQuOTU0TDcuNTI3LjMzN0EuNS41IDAgMCAxIDggMHpNMiAzdjdoMTJWM0gyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0VnZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBhNiA2IDAgMCAxLTEyIDBDMiA1LjY4NiA1IDAgOCAwczYgNS42ODYgNiAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFZ2dGcmllZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDExYTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy45OTcgNS4xN2E1IDUgMCAwIDAtOC4xMDEtNC4wOUE1IDUgMCAwIDAgMS4yOCA5LjM0MmE1IDUgMCAwIDAgOC4zMzYgNS4xMDkgMy41IDMuNSAwIDAgMCA1LjIwMS00LjA2NSAzLjAwMSAzLjAwMSAwIDAgMC0uODIyLTUuMjE2em0tMS0uMDM0YTEgMSAwIDAgMCAuNjY4Ljk3NyAyLjAwMSAyLjAwMSAwIDAgMSAuNTQ3IDMuNDc4IDEgMSAwIDAgMC0uMzQxIDEuMTEzIDIuNSAyLjUgMCAwIDEtMy43MTUgMi45MDUgMSAxIDAgMCAwLTEuMjYyLjE1MiA0IDQgMCAwIDEtNi42Ny00LjA4NyAxIDEgMCAwIDAtLjItMSA0IDQgMCAwIDEgMy42OTMtNi42MSAxIDEgMCAwIDAgLjgtLjIgNCA0IDAgMCAxIDYuNDggMy4yNzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRWdnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVhNSA1IDAgMCAxLTUtNWMwLTEuOTU2LjY5LTQuMjg2IDEuNzQyLTYuMTIuNTI0LS45MTMgMS4xMTItMS42NTggMS43MDQtMi4xNjRDNy4wNDQgMS4yMDYgNy41NzIgMSA4IDFjLjQyOCAwIC45NTYuMjA2IDEuNTU0LjcxNi41OTIuNTA2IDEuMTggMS4yNTEgMS43MDQgMi4xNjRDMTIuMzEgNS43MTQgMTMgOC4wNDQgMTMgMTBhNSA1IDAgMCAxLTUgNXptMCAxYTYgNiAwIDAgMCA2LTZjMC00LjMxNC0zLTEwLTYtMTBTMiA1LjY4NiAyIDEwYTYgNiAwIDAgMCA2IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRWplY3RGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjcgMS4wNDdhMSAxIDAgMCAxIDEuNDYgMGw2LjM0NSA2Ljc3Yy42LjYzOC4xNDYgMS42ODMtLjczIDEuNjgzSDEuNjU2Qy43OCA5LjUuMzI2IDguNDU1LjkyNiA3LjgxNkw3LjI3IDEuMDQ3ek0uNSAxMS41YTEgMSAwIDAgMSAxLTFoMTNhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFoLTEzYTEgMSAwIDAgMS0xLTF2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRWplY3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNyAxLjA0N2ExIDEgMCAwIDEgMS40NiAwbDYuMzQ1IDYuNzdjLjYuNjM4LjE0NiAxLjY4My0uNzMgMS42ODNIMS42NTZDLjc4IDkuNS4zMjYgOC40NTUuOTI2IDcuODE2TDcuMjcgMS4wNDd6TTE0LjM0NiA4LjUgOCAxLjczMSAxLjY1NCA4LjVoMTIuNjkyek0uNSAxMS41YTEgMSAwIDAgMSAxLTFoMTNhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFoLTEzYTEgMSAwIDAgMS0xLTF2LTF6bTE0IDBoLTEzdjFoMTN2LTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlBbmdyeUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2ek00LjA1MyA0LjI3NmEuNS41IDAgMCAxIC42Ny0uMjIzbDIgMWEuNS41IDAgMCAxIC4xNjYuNzZjLjA3MS4yMDYuMTExLjQ0LjExMS42ODdDNyA3LjMyOCA2LjU1MiA4IDYgOHMtMS0uNjcyLTEtMS41YzAtLjQwOC4xMDktLjc3OC4yODUtMS4wNDlsLTEuMDA5LS41MDRhLjUuNSAwIDAgMS0uMjIzLS42N3ptLjIzMiA4LjE1N2EuNS41IDAgMCAxLS4xODMtLjY4M0E0LjQ5OCA0LjQ5OCAwIDAgMSA4IDkuNWE0LjUgNC41IDAgMCAxIDMuODk4IDIuMjUuNS41IDAgMSAxLS44NjYuNUEzLjQ5OCAzLjQ5OCAwIDAgMCA4IDEwLjVhMy40OTggMy40OTggMCAwIDAtMy4wMzIgMS43NS41LjUgMCAwIDEtLjY4My4xODN6TTEwIDhjLS41NTIgMC0xLS42NzItMS0xLjUgMC0uMjQ3LjA0LS40OC4xMS0uNjg2YS41MDIuNTAyIDAgMCAxIC4xNjYtLjc2MWwyLTFhLjUuNSAwIDEgMSAuNDQ4Ljg5NGwtMS4wMDkuNTA0Yy4xNzYuMjcuMjg1LjY0LjI4NSAxLjA0OSAwIC44MjgtLjQ0OCAxLjUtMSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlBbmdyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjg1IDEyLjQzM2EuNS41IDAgMCAwIC42ODMtLjE4M0EzLjQ5OCAzLjQ5OCAwIDAgMSA4IDEwLjVjMS4yOTUgMCAyLjQyNi43MDMgMy4wMzIgMS43NWEuNS41IDAgMCAwIC44NjYtLjVBNC40OTggNC40OTggMCAwIDAgOCA5LjVhNC41IDQuNSAwIDAgMC0zLjg5OCAyLjI1LjUuNSAwIDAgMCAuMTgzLjY4M3ptNi45OTEtOC4zOGEuNS41IDAgMSAxIC40NDguODk0bC0xLjAwOS41MDRjLjE3Ni4yNy4yODUuNjQuMjg1IDEuMDQ5IDAgLjgyOC0uNDQ4IDEuNS0xIDEuNXMtMS0uNjcyLTEtMS41YzAtLjI0Ny4wNC0uNDguMTEtLjY4NmEuNTAyLjUwMiAwIDAgMSAuMTY2LS43NjFsMi0xem0tNi41NTIgMGEuNS41IDAgMCAwLS40NDguODk0bDEuMDA5LjUwNEExLjk0IDEuOTQgMCAwIDAgNSA2LjVDNSA3LjMyOCA1LjQ0OCA4IDYgOHMxLS42NzIgMS0xLjVjMC0uMjQ3LS4wNC0uNDgtLjExLS42ODZhLjUwMi41MDIgMCAwIDAtLjE2Ni0uNzYxbC0yLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlEaXp6eUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2ek00LjE0NiA1LjE0NmEuNS41IDAgMCAxIC43MDggMGwuNjQ2LjY0Ny42NDYtLjY0N2EuNS41IDAgMSAxIC43MDguNzA4bC0uNjQ3LjY0Ni42NDcuNjQ2YS41LjUgMCAxIDEtLjcwOC43MDhMNS41IDcuMjA3bC0uNjQ2LjY0N2EuNS41IDAgMSAxLS43MDgtLjcwOGwuNjQ3LS42NDYtLjY0Ny0uNjQ2YS41LjUgMCAwIDEgMC0uNzA4em01IDBhLjUuNSAwIDAgMSAuNzA4IDBsLjY0Ni42NDcuNjQ2LS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtLjY0Ny42NDYuNjQ3LjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC0uNjQ2LS42NDctLjY0Ni42NDdhLjUuNSAwIDEgMS0uNzA4LS43MDhsLjY0Ny0uNjQ2LS42NDctLjY0NmEuNS41IDAgMCAxIDAtLjcwOHpNOCAxM2EyIDIgMCAxIDEgMC00IDIgMiAwIDAgMSAwIDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlEaXp6eSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMTQ2IDUuMTQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3LjY0Ni0uNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLS42NDcuNjQ2LjY0Ny42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOGwtLjY0Ni0uNjQ3LS42NDYuNjQ3YS41LjUgMCAxIDEtLjcwOC0uNzA4bC42NDctLjY0Ni0uNjQ3LS42NDZhLjUuNSAwIDAgMSAwLS43MDh6bS01IDBhLjUuNSAwIDAgMSAuNzA4IDBsLjY0Ni42NDcuNjQ2LS42NDdhLjUuNSAwIDEgMSAuNzA4LjcwOGwtLjY0Ny42NDYuNjQ3LjY0NmEuNS41IDAgMSAxLS43MDguNzA4TDUuNSA3LjIwN2wtLjY0Ni42NDdhLjUuNSAwIDEgMS0uNzA4LS43MDhsLjY0Ny0uNjQ2LS42NDctLjY0NmEuNS41IDAgMCAxIDAtLjcwOHpNMTAgMTFhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppRXhwcmVzc2lvbmxlc3NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNNC41IDZoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMXptNSAwaDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTF6bS01IDRoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaUV4cHJlc3Npb25sZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVBNyA3IDAgMSAxIDggMWE3IDcgMCAwIDEgMCAxNHptMCAxQTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxMC41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0wLTRhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6bTUgMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaUZyb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTcgNi41QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNVM1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6bS0yLjcxNSA1LjkzM2EuNS41IDAgMCAxLS4xODMtLjY4M0E0LjQ5OCA0LjQ5OCAwIDAgMSA4IDkuNWE0LjUgNC41IDAgMCAxIDMuODk4IDIuMjUuNS41IDAgMCAxLS44NjYuNUEzLjQ5OCAzLjQ5OCAwIDAgMCA4IDEwLjVhMy40OTggMy40OTggMCAwIDAtMy4wMzIgMS43NS41LjUgMCAwIDEtLjY4My4xODN6TTEwIDhjLS41NTIgMC0xLS42NzItMS0xLjVTOS40NDggNSAxMCA1czEgLjY3MiAxIDEuNVMxMC41NTIgOCAxMCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppRnJvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjI4NSAxMi40MzNhLjUuNSAwIDAgMCAuNjgzLS4xODNBMy40OTggMy40OTggMCAwIDEgOCAxMC41YzEuMjk1IDAgMi40MjYuNzAzIDMuMDMyIDEuNzVhLjUuNSAwIDAgMCAuODY2LS41QTQuNDk4IDQuNDk4IDAgMCAwIDggOS41YTQuNSA0LjUgMCAwIDAtMy44OTggMi4yNS41LjUgMCAwIDAgLjE4My42ODN6TTcgNi41QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNVM1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6bTQgMGMwIC44MjgtLjQ0OCAxLjUtMSAxLjVzLTEtLjY3Mi0xLTEuNVM5LjQ0OCA1IDEwIDVzMSAuNjcyIDEgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppSGVhcnRFeWVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhOCA4IDAgMSAwIDAgMTZBOCA4IDAgMCAwIDggMHpNNC43NTYgNC41NjZjLjc2My0xLjQyNCA0LjAyLS4xMi45NTIgMy40MzQtNC40OTYtMS41OTYtMi4zNS00LjI5OC0uOTUyLTMuNDM0em02LjU1OSA1LjQ0OGEuNS41IDAgMCAxIC41NDguNzM2QTQuNDk4IDQuNDk4IDAgMCAxIDcuOTY1IDEzYTQuNDk4IDQuNDk4IDAgMCAxLTMuODk4LTIuMjUuNS41IDAgMCAxIC41NDgtLjczNmguMDA1bC4wMTcuMDA1LjA2Ny4wMTUuMjUyLjA1NWMuMjE1LjA0Ni41MTUuMTA4Ljg1Ny4xNjkuNjkzLjEyNCAxLjUyMi4yNDIgMi4xNTIuMjQyLjYzIDAgMS40Ni0uMTE4IDIuMTUyLS4yNDJhMjYuNTggMjYuNTggMCAwIDAgMS4xMDktLjIyNGwuMDY3LS4wMTUuMDE3LS4wMDQuMDA1LS4wMDJ6bS0uMDctNS40NDhjMS4zOTctLjg2NCAzLjU0MyAxLjgzOC0uOTUzIDMuNDM0LTMuMDY3LTMuNTU0LjE5LTQuODU4Ljk1Mi0zLjQzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaUhlYXJ0RXllcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjMxNSAxMC4wMTRhLjUuNSAwIDAgMSAuNTQ4LjczNkE0LjQ5OCA0LjQ5OCAwIDAgMSA3Ljk2NSAxM2E0LjQ5OCA0LjQ5OCAwIDAgMS0zLjg5OC0yLjI1LjUuNSAwIDAgMSAuNTQ4LS43MzZoLjAwNWwuMDE3LjAwNS4wNjcuMDE1LjI1Mi4wNTVjLjIxNS4wNDYuNTE1LjEwOC44NTcuMTY5LjY5My4xMjQgMS41MjIuMjQyIDIuMTUyLjI0Mi42MyAwIDEuNDYtLjExOCAyLjE1Mi0uMjQyYTI2LjU4IDI2LjU4IDAgMCAwIDEuMTA5LS4yMjRsLjA2Ny0uMDE1LjAxNy0uMDA0LjAwNS0uMDAyek00Ljc1NiA0LjU2NmMuNzYzLTEuNDI0IDQuMDItLjEyLjk1MiAzLjQzNC00LjQ5Ni0xLjU5Ni0yLjM1LTQuMjk4LS45NTItMy40MzR6bTYuNDg4IDBjMS4zOTgtLjg2NCAzLjU0NCAxLjgzOC0uOTUyIDMuNDM0LTMuMDY3LTMuNTU0LjE5LTQuODU4Ljk1Mi0zLjQzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaUxhdWdoaW5nRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTcgNi41YzAgLjUwMS0uMTY0LjM5Ni0uNDE1LjIzNUM2LjQyIDYuNjI5IDYuMjE4IDYuNSA2IDYuNWMtLjIxOCAwLS40Mi4xMy0uNTg1LjIzNUM1LjE2NCA2Ljg5NiA1IDcgNSA2LjUgNSA1LjY3MiA1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6bTUuMzMxIDNhMSAxIDAgMCAxIDAgMUE0Ljk5OCA0Ljk5OCAwIDAgMSA4IDEzYTQuOTk4IDQuOTk4IDAgMCAxLTQuMzMtMi41QTEgMSAwIDAgMSA0LjUzNSA5aDYuOTNhMSAxIDAgMCAxIC44NjYuNXptLTEuNzQ2LTIuNzY1QzEwLjQyIDYuNjI5IDEwLjIxOCA2LjUgMTAgNi41Yy0uMjE4IDAtLjQyLjEzLS41ODUuMjM1QzkuMTY0IDYuODk2IDkgNyA5IDYuNWMwLS44MjguNDQ4LTEuNSAxLTEuNXMxIC42NzIgMSAxLjVjMCAuNTAxLS4xNjQuMzk2LS40MTUuMjM1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppTGF1Z2hpbmcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi4zMzEgOS41YTEgMSAwIDAgMSAwIDFBNC45OTggNC45OTggMCAwIDEgOCAxM2E0Ljk5OCA0Ljk5OCAwIDAgMS00LjMzLTIuNUExIDEgMCAwIDEgNC41MzUgOWg2LjkzYTEgMSAwIDAgMSAuODY2LjV6TTcgNi41YzAgLjgyOC0uNDQ4IDAtMSAwcy0xIC44MjgtMSAwUzUuNDQ4IDUgNiA1czEgLjY3MiAxIDEuNXptNCAwYzAgLjgyOC0uNDQ4IDAtMSAwcy0xIC44MjgtMSAwUzkuNDQ4IDUgMTAgNXMxIC42NzIgMSAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlOZXV0cmFsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTcgNi41QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNVM1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6bS0zIDRhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6TTEwIDhjLS41NTIgMC0xLS42NzItMS0xLjVTOS40NDggNSAxMCA1czEgLjY3MiAxIDEuNVMxMC41NTIgOCAxMCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppTmV1dHJhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMTAuNWEuNS41IDAgMCAwIC41LjVoN2EuNS41IDAgMCAwIDAtMWgtN2EuNS41IDAgMCAwLS41LjV6bTMtNEM3IDUuNjcyIDYuNTUyIDUgNiA1cy0xIC42NzItMSAxLjVTNS40NDggOCA2IDhzMS0uNjcyIDEtMS41em00IDBjMC0uODI4LS40NDgtMS41LTEtMS41cy0xIC42NzItMSAxLjVTOS40NDggOCAxMCA4czEtLjY3MiAxLTEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaVNtaWxlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2QTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6TTcgNi41QzcgNy4zMjggNi41NTIgOCA2IDhzLTEtLjY3Mi0xLTEuNVM1LjQ0OCA1IDYgNXMxIC42NzIgMSAxLjV6TTQuMjg1IDkuNTY3YS41LjUgMCAwIDEgLjY4My4xODNBMy40OTggMy40OTggMCAwIDAgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAwIDMuMDMyLTEuNzUuNS41IDAgMSAxIC44NjYuNUE0LjQ5OCA0LjQ5OCAwIDAgMSA4IDEyLjVhNC40OTggNC40OTggMCAwIDEtMy44OTgtMi4yNS41LjUgMCAwIDEgLjE4My0uNjgzek0xMCA4Yy0uNTUyIDAtMS0uNjcyLTEtMS41UzkuNDQ4IDUgMTAgNXMxIC42NzIgMSAxLjVTMTAuNTUyIDggMTAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaVNtaWxlVXBzaWRlRG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYTggOCAwIDEgMSAwIDE2QTggOCAwIDAgMSA4IDB6TTcgOS41QzcgOC42NzIgNi41NTIgOCA2IDhzLTEgLjY3Mi0xIDEuNS40NDggMS41IDEgMS41IDEtLjY3MiAxLTEuNXpNNC4yODUgNi40MzNhLjUuNSAwIDAgMCAuNjgzLS4xODNBMy40OTggMy40OTggMCAwIDEgOCA0LjVjMS4yOTUgMCAyLjQyNi43MDMgMy4wMzIgMS43NWEuNS41IDAgMCAwIC44NjYtLjVBNC40OTggNC40OTggMCAwIDAgOCAzLjVhNC41IDQuNSAwIDAgMC0zLjg5OCAyLjI1LjUuNSAwIDAgMCAuMTgzLjY4M3pNMTAgOGMtLjU1MiAwLTEgLjY3Mi0xIDEuNXMuNDQ4IDEuNSAxIDEuNSAxLS42NzIgMS0xLjVTMTAuNTUyIDggMTAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaVNtaWxlVXBzaWRlRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhNyA3IDAgMSAwIDAgMTRBNyA3IDAgMCAwIDggMXptMC0xYTggOCAwIDEgMSAwIDE2QTggOCAwIDAgMSA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yODUgNi40MzNhLjUuNSAwIDAgMCAuNjgzLS4xODNBMy40OTggMy40OTggMCAwIDEgOCA0LjVjMS4yOTUgMCAyLjQyNi43MDMgMy4wMzIgMS43NWEuNS41IDAgMCAwIC44NjYtLjVBNC40OTggNC40OTggMCAwIDAgOCAzLjVhNC41IDQuNSAwIDAgMC0zLjg5OCAyLjI1LjUuNSAwIDAgMCAuMTgzLjY4M3pNNyA5LjVDNyA4LjY3MiA2LjU1MiA4IDYgOHMtMSAuNjcyLTEgMS41LjQ0OCAxLjUgMSAxLjUgMS0uNjcyIDEtMS41em00IDBjMC0uODI4LS40NDgtMS41LTEtMS41cy0xIC42NzItMSAxLjUuNDQ4IDEuNSAxIDEuNSAxLS42NzIgMS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW1vamlTbWlsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjg1IDkuNTY3YS41LjUgMCAwIDEgLjY4My4xODNBMy40OTggMy40OTggMCAwIDAgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAwIDMuMDMyLTEuNzUuNS41IDAgMSAxIC44NjYuNUE0LjQ5OCA0LjQ5OCAwIDAgMSA4IDEyLjVhNC40OTggNC40OTggMCAwIDEtMy44OTgtMi4yNS41LjUgMCAwIDEgLjE4My0uNjgzek03IDYuNUM3IDcuMzI4IDYuNTUyIDggNiA4cy0xLS42NzItMS0xLjVTNS40NDggNSA2IDVzMSAuNjcyIDEgMS41em00IDBjMCAuODI4LS40NDggMS41LTEgMS41cy0xLS42NzItMS0xLjVTOS40NDggNSAxMCA1czEgLjY3MiAxIDEuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaVN1bmdsYXNzZXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNMi4zMSA1LjI0M0ExIDEgMCAwIDEgMy4yOCA0SDZhMSAxIDAgMCAxIDEgMXYuMTE2QTQuMjIgNC4yMiAwIDAgMSA4IDVjLjM1IDAgLjY5LjA0IDEgLjExNlY1YTEgMSAwIDAgMSAxLTFoMi43MmExIDEgMCAwIDEgLjk3IDEuMjQzbC0uMzExIDEuMjQyQTIgMiAwIDAgMSAxMS40MzkgOEgxMWEyIDIgMCAwIDEtMS45OTQtMS44MzlBMi45OSAyLjk5IDAgMCAwIDggNmMtLjM5MyAwLS43NC4wNjQtMS4wMDYuMTYxQTIgMiAwIDAgMSA1IDhoLS40MzhhMiAyIDAgMCAxLTEuOTQtMS41MTVMMi4zMSA1LjI0M3pNNC45NjkgOS43NUEzLjQ5OCAzLjQ5OCAwIDAgMCA4IDExLjVhMy40OTggMy40OTggMCAwIDAgMy4wMzItMS43NS41LjUgMCAxIDEgLjg2Ni41QTQuNDk4IDQuNDk4IDAgMCAxIDggMTIuNWE0LjQ5OCA0LjQ5OCAwIDAgMS0zLjg5OC0yLjI1LjUuNSAwIDAgMSAuODY2LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppU3VuZ2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk2OCA5Ljc1YS41LjUgMCAxIDAtLjg2Ni41QTQuNDk4IDQuNDk4IDAgMCAwIDggMTIuNWE0LjUgNC41IDAgMCAwIDMuODk4LTIuMjUuNS41IDAgMSAwLS44NjYtLjVBMy40OTggMy40OTggMCAwIDEgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAxLTMuMDMyLTEuNzV6TTcgNS4xMTZWNWExIDEgMCAwIDAtMS0xSDMuMjhhMSAxIDAgMCAwLS45NyAxLjI0M2wuMzExIDEuMjQyQTIgMiAwIDAgMCA0LjU2MSA4SDVhMiAyIDAgMCAwIDEuOTk0LTEuODM5QTIuOTkgMi45OSAwIDAgMSA4IDZjLjM5MyAwIC43NC4wNjQgMS4wMDYuMTYxQTIgMiAwIDAgMCAxMSA4aC40MzhhMiAyIDAgMCAwIDEuOTQtMS41MTVsLjMxMS0xLjI0MkExIDEgMCAwIDAgMTIuNzIgNEgxMGExIDEgMCAwIDAtMSAxdi4xMTZBNC4yMiA0LjIyIDAgMCAwIDggNWMtLjM1IDAtLjY5LjA0LTEgLjExNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS0xIDBBNyA3IDAgMSAwIDEgOGE3IDcgMCAwIDAgMTQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbW9qaVdpbmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGE4IDggMCAxIDEgMCAxNkE4IDggMCAwIDEgOCAwek03IDYuNUM3IDUuNjcyIDYuNTUyIDUgNiA1cy0xIC42NzItMSAxLjVTNS40NDggOCA2IDhzMS0uNjcyIDEtMS41ek00LjI4NSA5LjU2N2EuNS41IDAgMCAwLS4xODMuNjgzQTQuNDk4IDQuNDk4IDAgMCAwIDggMTIuNWE0LjUgNC41IDAgMCAwIDMuODk4LTIuMjUuNS41IDAgMSAwLS44NjYtLjVBMy40OTggMy40OTggMCAwIDEgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAxLTMuMDMyLTEuNzUuNS41IDAgMCAwLS42ODMtLjE4M3ptNS4xNTItMy4zMWEuNS41IDAgMCAwLS44NzQuNDg2Yy4zMy41OTUuOTU4IDEuMDA3IDEuNjg3IDEuMDA3LjczIDAgMS4zNTYtLjQxMiAxLjY4Ny0xLjAwN2EuNS41IDAgMCAwLS44NzQtLjQ4Ni45MzQuOTM0IDAgMCAxLS44MTMuNDkzLjkzNC45MzQgMCAwIDEtLjgxMy0uNDkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Vtb2ppV2luayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuMjg1IDkuNTY3YS41LjUgMCAwIDEgLjY4My4xODNBMy40OTggMy40OTggMCAwIDAgOCAxMS41YTMuNDk4IDMuNDk4IDAgMCAwIDMuMDMyLTEuNzUuNS41IDAgMSAxIC44NjYuNUE0LjQ5OCA0LjQ5OCAwIDAgMSA4IDEyLjVhNC40OTggNC40OTggMCAwIDEtMy44OTgtMi4yNS41LjUgMCAwIDEgLjE4My0uNjgzek03IDYuNUM3IDcuMzI4IDYuNTUyIDggNiA4cy0xLS42NzItMS0xLjVTNS40NDggNSA2IDVzMSAuNjcyIDEgMS41em0xLjc1Ny0uNDM3YS41LjUgMCAwIDEgLjY4LjE5NC45MzQuOTM0IDAgMCAwIC44MTMuNDkzYy4zMzkgMCAuNjQ1LS4xOS44MTMtLjQ5M2EuNS41IDAgMSAxIC44NzQuNDg2QTEuOTM0IDEuOTM0IDAgMCAxIDEwLjI1IDcuNzVjLS43MyAwLTEuMzU2LS40MTItMS42ODctMS4wMDdhLjUuNSAwIDAgMSAuMTk0LS42OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbnZlbG9wZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjA1IDMuNTU1QTIgMiAwIDAgMSAyIDJoMTJhMiAyIDAgMCAxIDEuOTUgMS41NTVMOCA4LjQxNC4wNSAzLjU1NXpNMCA0LjY5N3Y3LjEwNGw1LjgwMy0zLjU1OEwwIDQuNjk3ek02Ljc2MSA4LjgzbC02LjU3IDQuMDI3QTIgMiAwIDAgMCAyIDE0aDEyYTIgMiAwIDAgMCAxLjgwOC0xLjE0NGwtNi41Ny00LjAyN0w4IDkuNTg2bC0xLjIzOS0uNzU3em0zLjQzNi0uNTg2TDE2IDExLjgwMVY0LjY5N2wtNS44MDMgMy41NDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW52ZWxvcGVPcGVuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ljk0MS40MzVhMiAyIDAgMCAwLTEuODgyIDBsLTYgMy4yQTIgMiAwIDAgMCAwIDUuNHYuMzEzbDYuNzA5IDMuOTMzTDggOC45MjhsMS4yOTEuNzE3TDE2IDUuNzE1VjUuNGEyIDIgMCAwIDAtMS4wNTktMS43NjVsLTYtMy4yek0xNiA2Ljg3M2wtNS42OTMgMy4zMzdMMTYgMTMuMzcydi02LjV6bS0uMDU5IDcuNjExTDggMTAuMDcyLjA1OSAxNC40ODRBMiAyIDAgMCAwIDIgMTZoMTJhMiAyIDAgMCAwIDEuOTQxLTEuNTE2ek0wIDEzLjM3M2w1LjY5My0zLjE2M0wwIDYuODczdjYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFbnZlbG9wZU9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40NyAxLjMxOGExIDEgMCAwIDAtLjk0IDBsLTYgMy4yQTEgMSAwIDAgMCAxIDUuNHYuODE4bDUuNzI0IDMuNDY1TDggOC45MTdsMS4yNzYuNzY2TDE1IDYuMjE4VjUuNGExIDEgMCAwIDAtLjUzLS44ODJsLTYtMy4yek0xNSA3LjM4OGwtNC43NTQgMi44NzdMMTUgMTMuMTE3di01Ljczem0tLjAzNSA2Ljg3NEw4IDEwLjA4M2wtNi45NjUgNC4xOEExIDEgMCAwIDAgMiAxNWgxMmExIDEgMCAwIDAgLjk2NS0uNzM4ek0xIDEzLjExN2w0Ljc1NC0yLjg1MkwxIDcuMzg3djUuNzN6TTcuMDU5LjQzNWEyIDIgMCAwIDEgMS44ODIgMGw2IDMuMkEyIDIgMCAwIDEgMTYgNS40VjE0YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjUuNGEyIDIgMCAwIDEgMS4wNTktMS43NjVsNi0zLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRW52ZWxvcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTItMWExIDEgMCAwIDAtMSAxdi4yMTdsNyA0LjIgNy00LjJWNGExIDEgMCAwIDAtMS0xSDJ6bTEzIDIuMzgzLTQuNzU4IDIuODU1TDE1IDExLjExNHYtNS43M3ptLS4wMzQgNi44NzhMOS4yNzEgOC44MiA4IDkuNTgzIDYuNzI4IDguODJsLTUuNjk0IDMuNDRBMSAxIDAgMCAwIDIgMTNoMTJhMSAxIDAgMCAwIC45NjYtLjczOXpNMSAxMS4xMTRsNC43NTgtMi44NzZMMSA1LjM4M3Y1LjczelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0VyYXNlckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wODYgMi4yMDdhMiAyIDAgMCAxIDIuODI4IDBsMy44NzkgMy44NzlhMiAyIDAgMCAxIDAgMi44MjhsLTUuNSA1LjVBMiAyIDAgMCAxIDcuODc5IDE1SDUuMTJhMiAyIDAgMCAxLTEuNDE0LS41ODZsLTIuNS0yLjVhMiAyIDAgMCAxIDAtMi44MjhsNi44NzktNi44Nzl6bS42NiAxMS4zNEwzLjQ1MyA4LjI1NCAxLjkxNCA5Ljc5M2ExIDEgMCAwIDAgMCAxLjQxNGwyLjUgMi41YTEgMSAwIDAgMCAuNzA3LjI5M0g3Ljg4YTEgMSAwIDAgMCAuNzA3LS4yOTNsLjE2LS4xNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFcmFzZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wODYgMi4yMDdhMiAyIDAgMCAxIDIuODI4IDBsMy44NzkgMy44NzlhMiAyIDAgMCAxIDAgMi44MjhsLTUuNSA1LjVBMiAyIDAgMCAxIDcuODc5IDE1SDUuMTJhMiAyIDAgMCAxLTEuNDE0LS41ODZsLTIuNS0yLjVhMiAyIDAgMCAxIDAtMi44MjhsNi44NzktNi44Nzl6bTIuMTIxLjcwN2ExIDEgMCAwIDAtMS40MTQgMEw0LjE2IDcuNTQ3bDUuMjkzIDUuMjkzIDQuNjMzLTQuNjMzYTEgMSAwIDAgMCAwLTEuNDE0bC0zLjg3OS0zLjg3OXpNOC43NDYgMTMuNTQ3IDMuNDUzIDguMjU0IDEuOTE0IDkuNzkzYTEgMSAwIDAgMCAwIDEuNDE0bDIuNSAyLjVhMSAxIDAgMCAwIC43MDcuMjkzSDcuODhhMSAxIDAgMCAwIC43MDctLjI5M2wuMTYtLjE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0V4Y2xhbWF0aW9uQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTggNGEuOTA1LjkwNSAwIDAgMC0uOS45OTVsLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAwIDEuMSAwbC4zNS0zLjUwN0EuOTA1LjkwNSAwIDAgMCA4IDR6bS4wMDIgNmExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAwMiAxMWExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6TTcuMSA0Ljk5NWEuOTA1LjkwNSAwIDEgMSAxLjggMGwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeGNsYW1hdGlvbkRpYW1vbmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDUuNDM1Yy0uNTgtLjU4LTEuNTItLjU4LTIuMSAwTC40MzYgNi45NWMtLjU4LjU4LS41OCAxLjUxOSAwIDIuMDk4bDYuNTE2IDYuNTE2Yy41OC41OCAxLjUxOS41OCAyLjA5OCAwbDYuNTE2LTYuNTE2Yy41OC0uNTguNTgtMS41MTkgMC0yLjA5OEw5LjA1LjQzNXpNOCA0Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDR6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25EaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTUuNDM1Yy41OC0uNTggMS41Mi0uNTggMi4xIDBsNi41MTUgNi41MTZjLjU4LjU4LjU4IDEuNTE5IDAgMi4wOThMOS4wNSAxNS41NjVjLS41OC41OC0xLjUxOS41OC0yLjA5OCAwTC40MzUgOS4wNWExLjQ4MiAxLjQ4MiAwIDAgMSAwLTIuMDk4TDYuOTUuNDM1em0xLjQuN2EuNDk1LjQ5NSAwIDAgMC0uNyAwTDEuMTM0IDcuNjVhLjQ5NS40OTUgMCAwIDAgMCAuN2w2LjUxNiA2LjUxNmEuNDk1LjQ5NSAwIDAgMCAuNyAwbDYuNTE2LTYuNTE2YS40OTUuNDk1IDAgMCAwIDAtLjdMOC4zNSAxLjEzNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAwMiAxMWExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6TTcuMSA0Ljk5NWEuOTA1LjkwNSAwIDEgMSAxLjggMGwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeGNsYW1hdGlvbkxnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMDAyIDE0YTIgMiAwIDEgMSA0IDAgMiAyIDAgMCAxLTQgMHptLjE5NS0xMi4wMWExLjgxIDEuODEgMCAxIDEgMy42MDIgMGwtLjcwMSA3LjAxNWExLjEwNSAxLjEwNSAwIDAgMS0yLjIgMGwtLjctNy4wMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25PY3RhZ29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS40Ni4xNDZBLjUuNSAwIDAgMCAxMS4xMDcgMEg0Ljg5M2EuNS41IDAgMCAwLS4zNTMuMTQ2TC4xNDYgNC41NEEuNS41IDAgMCAwIDAgNC44OTN2Ni4yMTRhLjUuNSAwIDAgMCAuMTQ2LjM1M2w0LjM5NCA0LjM5NGEuNS41IDAgMCAwIC4zNTMuMTQ2aDYuMjE0YS41LjUgMCAwIDAgLjM1My0uMTQ2bDQuMzk0LTQuMzk0YS41LjUgMCAwIDAgLjE0Ni0uMzUzVjQuODkzYS41LjUgMCAwIDAtLjE0Ni0uMzUzTDExLjQ2LjE0NnpNOCA0Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDR6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25PY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTQuMTQ2QS41LjUgMCAwIDEgNC44OTMgMGg2LjIxNGEuNS41IDAgMCAxIC4zNTMuMTQ2bDQuMzk0IDQuMzk0YS41LjUgMCAwIDEgLjE0Ni4zNTN2Ni4yMTRhLjUuNSAwIDAgMS0uMTQ2LjM1M2wtNC4zOTQgNC4zOTRhLjUuNSAwIDAgMS0uMzUzLjE0Nkg0Ljg5M2EuNS41IDAgMCAxLS4zNTMtLjE0NkwuMTQ2IDExLjQ2QS41LjUgMCAwIDEgMCAxMS4xMDdWNC44OTNhLjUuNSAwIDAgMSAuMTQ2LS4zNTNMNC41NC4xNDZ6TTUuMSAxIDEgNS4xdjUuOEw1LjEgMTVoNS44bDQuMS00LjFWNS4xTDEwLjkgMUg1LjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMDIgMTFhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwek03LjEgNC45OTVhLjkwNS45MDUgMCAxIDEgMS44IDBsLS4zNSAzLjUwN2EuNTUyLjU1MiAwIDAgMS0xLjEgMEw3LjEgNC45OTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25TcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptNiA0Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDR6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDAyIDExYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHpNNy4xIDQuOTk1YS45MDUuOTA1IDAgMSAxIDEuOCAwbC0uMzUgMy41MDdhLjU1Mi41NTIgMCAwIDEtMS4xIDBMNy4xIDQuOTk1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0V4Y2xhbWF0aW9uVHJpYW5nbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguOTgyIDEuNTY2YTEuMTMgMS4xMyAwIDAgMC0xLjk2IDBMLjE2NSAxMy4yMzNjLS40NTcuNzc4LjA5MSAxLjc2Ny45OCAxLjc2N2gxMy43MTNjLjg4OSAwIDEuNDM4LS45OS45OC0xLjc2N0w4Ljk4MiAxLjU2NnpNOCA1Yy41MzUgMCAuOTU0LjQ2Mi45Ljk5NWwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA1Ljk5NUEuOTA1LjkwNSAwIDAgMSA4IDV6bS4wMDIgNmExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXhjbGFtYXRpb25UcmlhbmdsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjkzOCAyLjAxNkEuMTMuMTMgMCAwIDEgOC4wMDIgMmEuMTMuMTMgMCAwIDEgLjA2My4wMTYuMTQ2LjE0NiAwIDAgMSAuMDU0LjA1N2w2Ljg1NyAxMS42NjdjLjAzNi4wNi4wMzUuMTI0LjAwMi4xODNhLjE2My4xNjMgMCAwIDEtLjA1NC4wNi4xMTYuMTE2IDAgMCAxLS4wNjYuMDE3SDEuMTQ2YS4xMTUuMTE1IDAgMCAxLS4wNjYtLjAxNy4xNjMuMTYzIDAgMCAxLS4wNTQtLjA2LjE3Ni4xNzYgMCAwIDEgLjAwMi0uMTgzTDcuODg0IDIuMDczYS4xNDcuMTQ3IDAgMCAxIC4wNTQtLjA1N3ptMS4wNDQtLjQ1YTEuMTMgMS4xMyAwIDAgMC0xLjk2IDBMLjE2NSAxMy4yMzNjLS40NTcuNzc4LjA5MSAxLjc2Ny45OCAxLjc2N2gxMy43MTNjLjg4OSAwIDEuNDM4LS45OS45OC0xLjc2N0w4Ljk4MiAxLjU2NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAwMiAxMmExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6TTcuMSA1Ljk5NWEuOTA1LjkwNSAwIDEgMSAxLjggMGwtLjM1IDMuNTA3YS41NTIuNTUyIDAgMCAxLTEuMSAwTDcuMSA1Ljk5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjAwMiAxMWExIDEgMCAxIDEgMiAwIDEgMSAwIDAgMS0yIDB6TTcuMSA0Ljk5NWEuOTA1LjkwNSAwIDEgMSAxLjggMGwtLjM1IDMuNTA3YS41NTMuNTUzIDAgMCAxLTEuMSAwTDcuMSA0Ljk5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeGNsdWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYyaDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0ydi0ySDJhMiAyIDAgMCAxLTItMlYyem0xMiAySDVhMSAxIDAgMCAwLTEgMXY3aDdhMSAxIDAgMCAwIDEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0V5ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNSA4YTIuNSAyLjUgMCAxIDEtNSAwIDIuNSAyLjUgMCAwIDEgNSAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOHMzLTUuNSA4LTUuNVMxNiA4IDE2IDhzLTMgNS41LTggNS41UzAgOCAwIDh6bTggMy41YTMuNSAzLjUgMCAxIDAgMC03IDMuNSAzLjUgMCAwIDAgMCA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0V5ZVNsYXNoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC43OSAxMi45MTItMS42MTQtMS42MTVhMy41IDMuNSAwIDAgMS00LjQ3NC00LjQ3NGwtMi4wNi0yLjA2Qy45MzggNi4yNzggMCA4IDAgOHMzIDUuNSA4IDUuNWE3LjAyOSA3LjAyOSAwIDAgMCAyLjc5LS41ODh6TTUuMjEgMy4wODhBNy4wMjggNy4wMjggMCAwIDEgOCAyLjVjNSAwIDggNS41IDggNS41cy0uOTM5IDEuNzIxLTIuNjQxIDMuMjM4bC0yLjA2Mi0yLjA2MmEzLjUgMy41IDAgMCAwLTQuNDc0LTQuNDc0TDUuMjEgMy4wODl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41MjUgNy42NDZhMi41IDIuNSAwIDAgMCAyLjgyOSAyLjgyOWwtMi44My0yLjgyOXptNC45NS43MDgtMi44MjktMi44M2EyLjUgMi41IDAgMCAxIDIuODI5IDIuODI5em0zLjE3MSA2LTEyLTEyIC43MDgtLjcwOCAxMiAxMi0uNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeWVTbGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4zNTkgMTEuMjM4QzE1LjA2IDkuNzIgMTYgOCAxNiA4cy0zLTUuNS04LTUuNWE3LjAyOCA3LjAyOCAwIDAgMC0yLjc5LjU4OGwuNzcuNzcxQTUuOTQ0IDUuOTQ0IDAgMCAxIDggMy41YzIuMTIgMCAzLjg3OSAxLjE2OCA1LjE2OCAyLjQ1N0ExMy4xMzQgMTMuMTM0IDAgMCAxIDE0LjgyOCA4Yy0uMDU4LjA4Ny0uMTIyLjE4My0uMTk1LjI4OC0uMzM1LjQ4LS44MyAxLjEyLTEuNDY1IDEuNzU1LS4xNjUuMTY1LS4zMzcuMzI4LS41MTcuNDg2bC43MDguNzA5elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjI5NyA5LjE3NmEzLjUgMy41IDAgMCAwLTQuNDc0LTQuNDc0bC44MjMuODIzYTIuNSAyLjUgMCAwIDEgMi44MjkgMi44MjlsLjgyMi44MjJ6bS0yLjk0MyAxLjI5OS44MjIuODIyYTMuNSAzLjUgMCAwIDEtNC40NzQtNC40NzRsLjgyMy44MjNhMi41IDIuNSAwIDAgMCAyLjgyOSAyLjgyOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjM1IDUuNDdjLS4xOC4xNi0uMzUzLjMyMi0uNTE4LjQ4N0ExMy4xMzQgMTMuMTM0IDAgMCAwIDEuMTcyIDhsLjE5NS4yODhjLjMzNS40OC44MyAxLjEyIDEuNDY1IDEuNzU1QzQuMTIxIDExLjMzMiA1Ljg4MSAxMi41IDggMTIuNWMuNzE2IDAgMS4zOS0uMTMzIDIuMDItLjM2bC43Ny43NzJBNy4wMjkgNy4wMjkgMCAwIDEgOCAxMy41QzMgMTMuNSAwIDggMCA4cy45MzktMS43MjEgMi42NDEtMy4yMzhsLjcwOC43MDl6bTEwLjI5NiA4Ljg4NC0xMi0xMiAuNzA4LS43MDggMTIgMTItLjcwOC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXllIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhzLTMtNS41LTgtNS41UzAgOCAwIDhzMyA1LjUgOCA1LjVTMTYgOCAxNiA4ek0xLjE3MyA4YTEzLjEzMyAxMy4xMzMgMCAwIDEgMS42Ni0yLjA0M0M0LjEyIDQuNjY4IDUuODggMy41IDggMy41YzIuMTIgMCAzLjg3OSAxLjE2OCA1LjE2OCAyLjQ1N0ExMy4xMzMgMTMuMTMzIDAgMCAxIDE0LjgyOCA4Yy0uMDU4LjA4Ny0uMTIyLjE4My0uMTk1LjI4OC0uMzM1LjQ4LS44MyAxLjEyLTEuNDY1IDEuNzU1QzExLjg3OSAxMS4zMzIgMTAuMTE5IDEyLjUgOCAxMi41Yy0yLjEyIDAtMy44NzktMS4xNjgtNS4xNjgtMi40NTdBMTMuMTM0IDEzLjEzNCAwIDAgMSAxLjE3MiA4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNS41YTIuNSAyLjUgMCAxIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01ek00LjUgOGEzLjUgMy41IDAgMSAxIDcgMCAzLjUgMy41IDAgMCAxLTcgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNFeWVkcm9wcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjM1NC42NDZhMS4yMDcgMS4yMDcgMCAwIDAtMS43MDggMEw4LjUgMy43OTNsLS42NDYtLjY0N2EuNS41IDAgMSAwLS43MDguNzA4TDguMjkzIDVsLTcuMTQ3IDcuMTQ2QS41LjUgMCAwIDAgMSAxMi41djEuNzkzbC0uODU0Ljg1M2EuNS41IDAgMSAwIC43MDguNzA3TDEuNzA3IDE1SDMuNWEuNS41IDAgMCAwIC4zNTQtLjE0NkwxMSA3LjcwN2wxLjE0NiAxLjE0N2EuNS41IDAgMCAwIC43MDgtLjcwOGwtLjY0Ny0uNjQ2IDMuMTQ3LTMuMTQ2YTEuMjA3IDEuMjA3IDAgMCAwIDAtMS43MDhsLTItMnpNMiAxMi43MDdsNy03TDEwLjI5MyA3bC03IDdIMnYtMS4yOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRXllZ2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDZhMiAyIDAgMSAxIDAgNCAyIDIgMCAwIDEgMC00em0yLjYyNS41NDdhMyAzIDAgMCAwLTUuNTg0Ljk1M0guNWEuNS41IDAgMCAwIDAgMWguNTQxQTMgMyAwIDAgMCA3IDhhMSAxIDAgMCAxIDIgMCAzIDMgMCAwIDAgNS45NTkuNWguNTQxYS41LjUgMCAwIDAgMC0xaC0uNTQxYTMgMyAwIDAgMC01LjU4NC0uOTUzQTEuOTkzIDEuOTkzIDAgMCAwIDggNmMtLjUzMiAwLTEuMDE2LjIwOC0xLjM3NS41NDd6TTE0IDhhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZhY2Vib29rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDguMDQ5YzAtNC40NDYtMy41ODItOC4wNS04LTguMDVDMy41OCAwLS4wMDIgMy42MDMtLjAwMiA4LjA1YzAgNC4wMTcgMi45MjYgNy4zNDcgNi43NSA3Ljk1MXYtNS42MjVoLTIuMDNWOC4wNUg2Ljc1VjYuMjc1YzAtMi4wMTcgMS4xOTUtMy4xMzEgMy4wMjItMy4xMzEuODc2IDAgMS43OTEuMTU3IDEuNzkxLjE1N3YxLjk4aC0xLjAwOWMtLjk5MyAwLTEuMzAzLjYyMS0xLjMwMyAxLjI1OHYxLjUxaDIuMjE4bC0uMzU0IDIuMzI2SDkuMjVWMTZjMy44MjQtLjYwNCA2Ljc1LTMuOTM0IDYuNzUtNy45NTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUFycm93RG93bkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek04IDVhLjUuNSAwIDAgMSAuNS41djMuNzkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTIgMmEuNS41IDAgMCAxLS43MDggMGwtMi0yYS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA5LjI5M1Y1LjVBLjUuNSAwIDAgMSA4IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDVhLjUuNSAwIDAgMSAuNS41djMuNzkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTIgMmEuNS41IDAgMCAxLS43MDggMGwtMi0yYS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA5LjI5M1Y1LjVBLjUuNSAwIDAgMSA4IDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVBcnJvd1VwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTcuNSA2LjcwNyA2LjM1NCA3Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOGwyLTJhLjUuNSAwIDAgMSAuNzA4IDBsMiAyYS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDYuNzA3VjEwLjVhLjUuNSAwIDAgMS0xIDBWNi43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUFycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMWEuNS41IDAgMCAwIC41LS41VjYuNzA3bDEuMTQ2IDEuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4bC0yLTJhLjUuNSAwIDAgMC0uNzA4IDBsLTIgMmEuNS41IDAgMSAwIC43MDguNzA4TDcuNSA2LjcwN1YxMC41YS41LjUgMCAwIDAgLjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMCAxaDhhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUJhckdyYXBoRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6bS0yIDExLjV2LTZhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXY2YS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41em0tMi41LjVhLjUuNSAwIDAgMS0uNS0uNXYtNGEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMS0uNS41aC0xem0tMyAwYS41LjUgMCAwIDEtLjUtLjV2LTJhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlQmFyR3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDEyYS41LjUgMCAwIDEtLjUtLjV2LTJhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMXptMyAwYS41LjUgMCAwIDEtLjUtLjV2LTRhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXY0YS41LjUgMCAwIDEtLjUuNWgtMXptMyAwYS41LjUgMCAwIDEtLjUtLjV2LTZhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXY2YS41LjUgMCAwIDEtLjUuNWgtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMCAxaDhhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUJpbmFyeUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41MjYgOS4yNzNjLS41NDIgMC0uODMyLjU2My0uODMyIDEuNjEyIDAgLjA4OC4wMDMuMTczLjAwNi4yNTJsMS41Ni0xLjE0M2MtLjEyNi0uNDc0LS4zNzUtLjcyLS43MzMtLjcyem0tLjczMiAyLjUwOGMuMTI2LjQ3Mi4zNzIuNzE4LjczMi43MTguNTQgMCAuODMtLjU2My44My0xLjYxNCAwLS4wODUtLjAwMy0uMTctLjAwNi0uMjVsLTEuNTU2IDEuMTQ2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNNy4wNSAxMC44ODVjMCAxLjQxNS0uNTQ4IDIuMjA2LTEuNTI0IDIuMjA2QzQuNTQ4IDEzLjA5IDQgMTIuMyA0IDEwLjg4NWMwLTEuNDEyLjU0OC0yLjIwMyAxLjUyNi0yLjIwMy45NzYgMCAxLjUyNC43OSAxLjUyNCAyLjIwM3ptMy44MDUgMS41MlYxM2gtM3YtLjU5NWgxLjE4MVY5LjVoLS4wNWwtMS4xMzYuNzQ3di0uNjg4bDEuMTktLjc4NmguNjl2My42MzNoMS4xMjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUJpbmFyeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyNiAxMy4wOWMuOTc2IDAgMS41MjQtLjc5IDEuNTI0LTIuMjA1IDAtMS40MTItLjU0OC0yLjIwMy0xLjUyNC0yLjIwMy0uOTc4IDAtMS41MjYuNzktMS41MjYgMi4yMDMgMCAxLjQxNS41NDggMi4yMDYgMS41MjYgMi4yMDZ6bS0uODMyLTIuMjA1YzAtMS4wNS4yOS0xLjYxMi44MzItMS42MTIuMzU4IDAgLjYwNy4yNDcuNzMzLjcyMUw0LjcgMTEuMTM3YTYuNzQ5IDYuNzQ5IDAgMCAxLS4wMDYtLjI1MnptLjgzMiAxLjYxNGMtLjM2IDAtLjYwNi0uMjQ2LS43MzItLjcxOGwxLjU1Ni0xLjE0NWMuMDAzLjA3OS4wMDUuMTY0LjAwNS4yNDkgMCAxLjA1Mi0uMjkgMS42MTQtLjgyOSAxLjYxNHptNS4zMjkuNTAxdi0uNTk1SDkuNzNWOC43NzJoLS42OWwtMS4xOS43ODZ2LjY4OEw4Ljk4NiA5LjVoLjA1djIuOTA2aC0xLjE4VjEzaDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVCcmVha0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnY3SDJWMmEyIDIgMCAwIDEgMi0yek0yIDEyaDEydjJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJ2LTJ6TS41IDEwYS41LjUgMCAwIDAgMCAxaDE1YS41LjUgMCAwIDAgMC0xSC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVCcmVhayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEwLjVhLjUuNSAwIDAgMSAuNS0uNWgxNWEuNS41IDAgMCAxIDAgMUguNWEuNS41IDAgMCAxLS41LS41ek0xMiAwSDRhMiAyIDAgMCAwLTIgMnY3aDFWMmExIDEgMCAwIDEgMS0xaDhhMSAxIDAgMCAxIDEgMXY3aDFWMmEyIDIgMCAwIDAtMi0yem0yIDEyaC0xdjJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTF2LTJIMnYyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0ydi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yem0tMS4xNDYgNi44NTQtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA4Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NTQgNi4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOC43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVDb2RlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTYuNjQ2IDUuNjQ2YS41LjUgMCAxIDEgLjcwOC43MDhMNS43MDcgOGwxLjY0NyAxLjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC0yLTJhLjUuNSAwIDAgMSAwLS43MDhsMi0yem0yLjcwOCAwIDIgMmEuNS41IDAgMCAxIDAgLjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOC0uNzA4TDEwLjI5MyA4IDguNjQ2IDYuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVDb2RlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNjQ2IDUuNjQ2YS41LjUgMCAxIDEgLjcwOC43MDhMNS43MDcgOGwxLjY0NyAxLjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC0yLTJhLjUuNSAwIDAgMSAwLS43MDhsMi0yem0yLjcwOCAwYS41LjUgMCAxIDAtLjcwOC43MDhMMTAuMjkzIDggOC42NDYgOS42NDZhLjUuNSAwIDAgMCAuNzA4LjcwOGwyLTJhLjUuNSAwIDAgMCAwLS43MDhsLTItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMTAtMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVEaWZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA0LjVWNkgxMGEuNS41IDAgMCAxIDAgMUg4LjV2MS41YS41LjUgMCAwIDEtMSAwVjdINmEuNS41IDAgMCAxIDAtMWgxLjVWNC41YS41LjUgMCAwIDEgMSAwek02IDEwaDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRGlmZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDRhLjUuNSAwIDAgMSAuNS41VjZIMTBhLjUuNSAwIDAgMSAwIDFIOC41djEuNWEuNS41IDAgMCAxLTEgMFY3SDZhLjUuNSAwIDAgMSAwLTFoMS41VjQuNUEuNS41IDAgMCAxIDggNHptLTIuNSA2LjVBLjUuNSAwIDAgMSA2IDEwaDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem0xMC0xSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtBcnJvd0Rvd25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xem0tMSA0djMuNzkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTIgMmEuNS41IDAgMCAxLS43MDggMGwtMi0yYS41LjUgMCAwIDEgLjcwOC0uNzA4TDcuNSAxMS4yOTNWNy41YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQXJyb3dEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA2LjVhLjUuNSAwIDAgMC0xIDB2My43OTNMNi4zNTQgOS4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwyIDJhLjUuNSAwIDAgMCAuNzA4IDBsMi0yYS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSAxMC4yOTNWNi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQXJyb3dVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYuMzU0IDkuODU0YS41LjUgMCAwIDEtLjcwOC0uNzA4bDItMmEuNS41IDAgMCAxIC43MDggMGwyIDJhLjUuNSAwIDAgMS0uNzA4LjcwOEw4LjUgOC43MDdWMTIuNWEuNS41IDAgMCAxLTEgMFY4LjcwN0w2LjM1NCA5Ljg1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0Fycm93VXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDExLjVhLjUuNSAwIDAgMS0xIDBWNy43MDdMNi4zNTQgOC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMi0yYS41LjUgMCAwIDEgLjcwOCAwbDIgMmEuNS41IDAgMCAxLS43MDguNzA4TDguNSA3LjcwN1YxMS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQmFyR3JhcGhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xem0uNSAxMHYtNmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djZhLjUuNSAwIDAgMS0uNS41aC0xYS41LjUgMCAwIDEtLjUtLjV6bS0yLjUuNWEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLS41LjVoLTF6bS0zIDBhLjUuNSAwIDAgMS0uNS0uNXYtMmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQmFyR3JhcGggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgMTMuNWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di02YS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41djZ6bS0yLjUuNWEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLS41LjVoLTF6bS0zIDBhLjUuNSAwIDAgMS0uNS0uNXYtMmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQmluYXJ5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyNiAxMC4yNzNjLS41NDIgMC0uODMyLjU2My0uODMyIDEuNjEyIDAgLjA4OC4wMDMuMTczLjAwNi4yNTJsMS41NTktMS4xNDNjLS4xMjYtLjQ3NC0uMzc1LS43Mi0uNzMzLS43MnptLS43MzIgMi41MDhjLjEyNi40NzIuMzcyLjcxOC43MzIuNzE4LjU0IDAgLjgzLS41NjMuODMtMS42MTQgMC0uMDg1LS4wMDMtLjE3LS4wMDYtLjI1bC0xLjU1NiAxLjE0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXptLTIuNDUgOC4zODVjMCAxLjQxNS0uNTQ4IDIuMjA2LTEuNTI0IDIuMjA2QzQuNTQ4IDE0LjA5IDQgMTMuMyA0IDExLjg4NWMwLTEuNDEyLjU0OC0yLjIwMyAxLjUyNi0yLjIwMy45NzYgMCAxLjUyNC43OSAxLjUyNCAyLjIwM3ptMy44MDUgMS41MlYxNGgtM3YtLjU5NWgxLjE4MVYxMC41aC0uMDVsLTEuMTM2Ljc0N3YtLjY4OGwxLjE5LS43ODZoLjY5djMuNjMzaDEuMTI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQmluYXJ5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDUgMTEuODg1YzAgMS40MTUtLjU0OCAyLjIwNi0xLjUyNCAyLjIwNkM0LjU0OCAxNC4wOSA0IDEzLjMgNCAxMS44ODVjMC0xLjQxMi41NDgtMi4yMDMgMS41MjYtMi4yMDMuOTc2IDAgMS41MjQuNzkgMS41MjQgMi4yMDN6bS0xLjUyNC0xLjYxMmMtLjU0MiAwLS44MzIuNTYzLS44MzIgMS42MTIgMCAuMDg4LjAwMy4xNzMuMDA2LjI1MmwxLjU1OS0xLjE0M2MtLjEyNi0uNDc0LS4zNzUtLjcyLS43MzMtLjcyem0tLjczMiAyLjUwOGMuMTI2LjQ3Mi4zNzIuNzE4LjczMi43MTguNTQgMCAuODMtLjU2My44My0xLjYxNCAwLS4wODUtLjAwMy0uMTctLjAwNi0uMjVsLTEuNTU2IDEuMTQ2em02LjA2MS42MjRWMTRoLTN2LS41OTVoMS4xODFWMTAuNWgtLjA1bC0xLjEzNi43NDd2LS42ODhsMS4xOS0uNzg2aC42OXYzLjYzM2gxLjEyNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0JyZWFrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoNS4yOTNBMSAxIDAgMCAxIDEwIC4yOTNMMTMuNzA3IDRhMSAxIDAgMCAxIC4yOTMuNzA3VjlIMlYyYTIgMiAwIDAgMSAyLTJ6bTUuNSAxLjV2MmExIDEgMCAwIDAgMSAxaDJsLTMtM3pNMiAxMmgxMnYyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi0yek0uNSAxMGEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMUguNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0JyZWFrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNVY5aC0xVjQuNWgtMkExLjUgMS41IDAgMCAxIDkuNSAzVjFINGExIDEgMCAwIDAtMSAxdjdIMlYyYTIgMiAwIDAgMSAyLTJoNS41TDE0IDQuNXpNMTMgMTJoMXYyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi0yaDF2MmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMXYtMnpNLjUgMTBhLjUuNSAwIDAgMCAwIDFoMTVhLjUuNSAwIDAgMCAwLTFILjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6bTEuMzU0IDQuMzU0LTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOS43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0NoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjg1NCA3Ljg1NGEuNS41IDAgMCAwLS43MDgtLjcwOEw3LjUgOS43OTMgNi4zNTQgOC42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41YS41LjUgMCAwIDAgLjcwOCAwbDMtM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0NvZGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek02LjY0NiA3LjY0NmEuNS41IDAgMSAxIC43MDguNzA4TDUuNzA3IDEwbDEuNjQ3IDEuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhsLTItMmEuNS41IDAgMCAxIDAtLjcwOGwyLTJ6bTIuNzA4IDAgMiAyYS41LjUgMCAwIDEgMCAuNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDEwIDguNjQ2IDguMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjVWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDUuNUwxNCA0LjV6bS0zIDBBMS41IDEuNSAwIDAgMSA5LjUgM1YxSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVY0LjVoLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42NDYgNi42NDZhLjUuNSAwIDAgMSAuNzA4IDBsMiAyYS41LjUgMCAwIDEgMCAuNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDkgOC42NDYgNy4zNTRhLjUuNSAwIDAgMSAwLS43MDh6bS0xLjI5MiAwYS41LjUgMCAwIDAtLjcwOCAwbC0yIDJhLjUuNSAwIDAgMCAwIC43MDhsMiAyYS41LjUgMCAwIDAgLjcwOC0uNzA4TDUuNzA3IDlsMS42NDctMS42NDZhLjUuNSAwIDAgMCAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtEaWZmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNOCA2YS41LjUgMCAwIDEgLjUuNVY4SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWOUg2YS41LjUgMCAwIDEgMC0xaDEuNVY2LjVBLjUuNSAwIDAgMSA4IDZ6bS0yLjUgNi41QS41LjUgMCAwIDEgNiAxMmg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0RpZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1YS41LjUgMCAwIDEgLjUuNVY3SDEwYS41LjUgMCAwIDEgMCAxSDguNXYxLjVhLjUuNSAwIDAgMS0xIDBWOEg2YS41LjUgMCAwIDEgMC0xaDEuNVY1LjVBLjUuNSAwIDAgMSA4IDV6bS0yLjUgNi41QS41LjUgMCAwIDEgNiAxMWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0Vhc2VsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDcuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC01YS41LjUgMCAwIDEtLjUtLjV2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTguNSA2aDJBMS41IDEuNSAwIDAgMSAxMiA3LjV2MmExLjUgMS41IDAgMCAxLTEuNSAxLjVoLS40NzNsLjQ0NyAxLjM0MmEuNS41IDAgMCAxLS45NDguMzE2TDguOTczIDExSDguNXYxYS41LjUgMCAwIDEtMSAwdi0xaC0uNDczbC0uNTUzIDEuNjU4YS41LjUgMCAxIDEtLjk0OC0uMzE2TDUuOTczIDExSDUuNUExLjUgMS41IDAgMCAxIDQgOS41di0yQTEuNSAxLjUgMCAwIDEgNS41IDZoMmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0Vhc2VsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA2YS41LjUgMCAxIDAtMSAwaC0yQTEuNSAxLjUgMCAwIDAgNCA3LjV2MkExLjUgMS41IDAgMCAwIDUuNSAxMWguNDczbC0uNDQ3IDEuMzQyYS41LjUgMCAxIDAgLjk0OC4zMTZMNy4wMjcgMTFINy41djFhLjUuNSAwIDAgMCAxIDB2LTFoLjQ3M2wuNTUzIDEuNjU4YS41LjUgMCAxIDAgLjk0OC0uMzE2TDEwLjAyNyAxMWguNDczQTEuNSAxLjUgMCAwIDAgMTIgOS41di0yQTEuNSAxLjUgMCAwIDAgMTAuNSA2aC0yek01IDcuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uNS41aC01YS41LjUgMCAwIDEtLjUtLjV2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtFeGNlbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTUuODg0IDYuNjggOCA5LjIxOWwyLjExNi0yLjU0YS41LjUgMCAxIDEgLjc2OC42NDFMOC42NTEgMTBsMi4yMzMgMi42OGEuNS41IDAgMCAxLS43NjguNjRMOCAxMC43ODFsLTIuMTE2IDIuNTRhLjUuNSAwIDAgMS0uNzY4LS42NDFMNy4zNDkgMTAgNS4xMTYgNy4zMmEuNS41IDAgMSAxIC43NjgtLjY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS44ODQgNi42OGEuNS41IDAgMSAwLS43NjguNjRMNy4zNDkgMTBsLTIuMjMzIDIuNjhhLjUuNSAwIDAgMCAuNzY4LjY0TDggMTAuNzgxbDIuMTE2IDIuNTRhLjUuNSAwIDAgMCAuNzY4LS42NDFMOC42NTEgMTBsMi4yMzMtMi42OGEuNS41IDAgMCAwLS43NjgtLjY0TDggOS4yMTlsLTIuMTE2LTIuNTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg1LjI5M0ExIDEgMCAwIDEgMTAgLjI5M0wxMy43MDcgNGExIDEgMCAwIDEgLjI5My43MDdWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem01LjUgMS41djJhMSAxIDAgMCAwIDEgMWgybC0zLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtGb250RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNNS4wNTcgNmg1Ljg4NkwxMSA4aC0uNWMtLjE4LTEuMDk2LS4zNTYtMS4xOTItMS42OTQtMS4yMzVsLS4yOTgtLjAxdjUuMDljMCAuNDcuMS41ODIuOTAzLjY1NXYuNUg2LjU5di0uNWMuNzk5LS4wNzMuODk4LS4xODQuODk4LS42NTRWNi43NTVsLS4yOTMuMDFDNS44NTYgNi44MDggNS42OCA2LjkwNSA1LjUgOEg1bC4wNTctMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0ZvbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuOTQzIDZINS4wNTdMNSA4aC41Yy4xOC0xLjA5Ni4zNTYtMS4xOTIgMS42OTQtMS4yMzVsLjI5My0uMDF2NS4wOWMwIC40Ny0uMS41ODItLjg5OC42NTV2LjVIOS40MXYtLjVjLS44MDMtLjA3My0uOTAzLS4xODQtLjkwMy0uNjU0VjYuNzU1bC4yOTguMDFjMS4zMzguMDQzIDEuNTE0LjE0IDEuNjk0IDEuMjM1aC41bC0uMDU3LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg1LjVMMTQgNC41em0tMyAwQTEuNSAxLjUgMCAwIDEgOS41IDNWMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWNC41aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrSW1hZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg1LjI5M0ExIDEgMCAwIDEgMTAgLjI5M0wxMy43MDcgNGExIDEgMCAwIDEgLjI5My43MDd2NS41ODZsLTIuNzMtMi43M2ExIDEgMCAwIDAtMS41Mi4xMjdsLTEuODg5IDIuNjQ0LTEuNzY5LTEuMDYyYTEgMSAwIDAgMC0xLjIyMi4xNUwyIDEyLjI5MlYyYTIgMiAwIDAgMSAyLTJ6bTUuNSAxLjV2MmExIDEgMCAwIDAgMSAxaDJsLTMtM3ptLTEuNDk4IDRhMS41IDEuNSAwIDEgMC0zIDAgMS41IDEuNSAwIDAgMCAzIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNTY0IDguMjcgMTQgMTEuNzA4VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0ydi0uMjkzbDMuNTc4LTMuNTc3IDIuNTYgMS41MzYgMi40MjYtMy4zOTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtJbWFnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUwMiA3YTEuNSAxLjUgMCAxIDAgMC0zIDEuNSAxLjUgMCAwIDAgMCAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg1LjVMMTQgNC41VjE0ek00IDFhMSAxIDAgMCAwLTEgMXYxMGwyLjIyNC0yLjIyNGEuNS41IDAgMCAxIC42MS0uMDc1TDggMTFsMi4xNTctMy4wMmEuNS41IDAgMCAxIC43Ni0uMDYzTDEzIDEwVjQuNWgtMkExLjUgMS41IDAgMCAxIDkuNSAzVjFINHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0xvY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2ExIDEgMCAwIDEgMiAwdjFIN1Y3ek02IDkuM2MwLS4wNDIuMDItLjEwNy4xMDUtLjE3NUEuNjM3LjYzNyAwIDAgMSA2LjUgOWgzYS42NC42NCAwIDAgMSAuMzk1LjEyNWMuMDg1LjA2OC4xMDUuMTMzLjEwNS4xNzV2Mi40YzAgLjA0Mi0uMDIuMTA3LS4xMDUuMTc1QS42MzcuNjM3IDAgMCAxIDkuNSAxMmgtM2EuNjM3LjYzNyAwIDAgMS0uMzk1LS4xMjVDNi4wMiAxMS44MDcgNiAxMS43NDIgNiAxMS43VjkuM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNMTAgN3YxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOS4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjdhMiAyIDAgMSAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya0xvY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN3YxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOS4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjdhMiAyIDAgMSAxIDQgMHpNNyA3djFoMlY3YTEgMSAwIDAgMC0yIDB6TTYgOS4zdjIuNGMwIC4wNDIuMDIuMTA3LjEwNS4xNzVBLjYzNy42MzcgMCAwIDAgNi41IDEyaDNhLjY0LjY0IDAgMCAwIC4zOTUtLjEyNWMuMDg1LS4wNjguMTA1LS4xMzMuMTA1LS4xNzVWOS4zYzAtLjA0Mi0uMDItLjEwNy0uMTA1LS4xNzVBLjYzNy42MzcgMCAwIDAgOS41IDloLTNhLjYzNy42MzcgMCAwIDAtLjM5NS4xMjVDNi4wMiA5LjE5MyA2IDkuMjU4IDYgOS4zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrTG9jazJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgN2ExIDEgMCAwIDEgMiAwdjFIN1Y3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0xMCA3djEuMDc2Yy41NC4xNjYgMSAuNTk3IDEgMS4yMjR2Mi40YzAgLjgxNi0uNzgxIDEuMy0xLjUgMS4zaC0zYy0uNzE5IDAtMS41LS40ODQtMS41LTEuM1Y5LjNjMC0uNjI3LjQ2LTEuMDU4IDEtMS4yMjRWN2EyIDIgMCAxIDEgNCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrTG9jazIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAgN3YxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOS4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjdhMiAyIDAgMSAxIDQgMHpNNyA3djFoMlY3YTEgMSAwIDAgMC0yIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtNZWRpY2FsRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXptLTMgMnYuNjM0bC41NDktLjMxN2EuNS41IDAgMSAxIC41Ljg2Nkw3IDdsLjU0OS4zMTdhLjUuNSAwIDEgMS0uNS44NjZMNi41IDcuODY2VjguNWEuNS41IDAgMCAxLTEgMHYtLjYzNGwtLjU0OS4zMTdhLjUuNSAwIDEgMS0uNS0uODY2TDUgN2wtLjU0OS0uMzE3YS41LjUgMCAwIDEgLjUtLjg2NmwuNTQ5LjMxN1Y1LjVhLjUuNSAwIDEgMSAxIDB6bS0yIDQuNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xem0wIDJoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya01lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDUuNWEuNS41IDAgMCAwLTEgMHYuNjM0bC0uNTQ5LS4zMTdhLjUuNSAwIDEgMC0uNS44NjZMNiA3bC0uNTQ5LjMxN2EuNS41IDAgMSAwIC41Ljg2NmwuNTQ5LS4zMTdWOC41YS41LjUgMCAxIDAgMSAwdi0uNjM0bC41NDkuMzE3YS41LjUgMCAxIDAgLjUtLjg2Nkw4IDdsLjU0OS0uMzE3YS41LjUgMCAxIDAtLjUtLjg2NmwtLjU0OS4zMTdWNS41em0tMiA0LjVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXptMCAyYS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAwLTFoLTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYgOC41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya01pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA5YS41LjUgMCAwIDEgLjUtLjVoNGEuNS41IDAgMCAxIDAgMUg2YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg1LjVMMTQgNC41em0tMyAwQTEuNSAxLjUgMCAwIDEgOS41IDNWMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWNC41aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrTXVzaWNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0xMSA2LjY0djEuNzVsLTIgLjV2My42MWMwIC40OTUtLjMwMS44ODMtLjY2MiAxLjEyM0M3Ljk3NCAxMy44NjYgNy40OTkgMTQgNyAxNGMtLjUgMC0uOTc0LS4xMzQtMS4zMzgtLjM3Ny0uMzYtLjI0LS42NjItLjYyOC0uNjYyLTEuMTIzcy4zMDEtLjg4My42NjItMS4xMjNDNi4wMjYgMTEuMTM0IDYuNTAxIDExIDcgMTFjLjM1NiAwIC43LjA2OCAxIC4xOTZWNi44OWExIDEgMCAwIDEgLjc1Ny0uOTdsMS0uMjVBMSAxIDAgMCAxIDExIDYuNjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtNdXNpYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMSA2LjY0YTEgMSAwIDAgMC0xLjI0My0uOTdsLTEgLjI1QTEgMSAwIDAgMCA4IDYuODl2NC4zMDZBMi41NzIgMi41NzIgMCAwIDAgNyAxMWMtLjUgMC0uOTc0LjEzNC0xLjMzOC4zNzctLjM2LjI0LS42NjIuNjI4LS42NjIgMS4xMjNzLjMwMS44ODMuNjYyIDEuMTIzYy4zNjQuMjQzLjgzOS4zNzcgMS4zMzguMzc3LjUgMCAuOTc0LS4xMzQgMS4zMzgtLjM3Ny4zNi0uMjQuNjYyLS42MjguNjYyLTEuMTIzVjguODlsMi0uNVY2LjY0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrUGRmRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUyMyAxMi40MjRjLjE0LS4wODIuMjkzLS4xNjIuNDU5LS4yMzhhNy44NzggNy44NzggMCAwIDEtLjQ1LjYwNmMtLjI4LjMzNy0uNDk4LjUxNi0uNjM1LjU3MmEuMjY2LjI2NiAwIDAgMS0uMDM1LjAxMi4yODIuMjgyIDAgMCAxLS4wMjYtLjA0NGMtLjA1Ni0uMTEtLjA1NC0uMjE2LjA0LS4zNi4xMDYtLjE2NS4zMTktLjM1NC42NDctLjU0OHptMi40NTUtMS42NDdjLS4xMTkuMDI1LS4yMzcuMDUtLjM1Ni4wNzhhMjEuMTQ4IDIxLjE0OCAwIDAgMCAuNS0xLjA1IDEyLjA0NSAxMi4wNDUgMCAwIDAgLjUxLjg1OGMtLjIxNy4wMzItLjQzNi4wNy0uNjU0LjExNHptMi41MjUuOTM5YTMuODgxIDMuODgxIDAgMCAxLS40MzUtLjQxYy4yMjguMDA1LjQzNC4wMjIuNjEyLjA1NC4zMTcuMDU3LjQ2Ni4xNDcuNTE4LjIwOWEuMDk1LjA5NSAwIDAgMSAuMDI2LjA2NC40MzYuNDM2IDAgMCAxLS4wNi4yLjMwNy4zMDcgMCAwIDEtLjA5NC4xMjQuMTA3LjEwNyAwIDAgMS0uMDY5LjAxNWMtLjA5LS4wMDMtLjI1OC0uMDY2LS40OTgtLjI1NnpNOC4yNzggNi45N2MtLjA0LjI0NC0uMTA4LjUyNC0uMi44MjlhNC44NiA0Ljg2IDAgMCAxLS4wODktLjM0NmMtLjA3Ni0uMzUzLS4wODctLjYzLS4wNDYtLjgyMi4wMzgtLjE3Ny4xMS0uMjQ4LjE5Ni0uMjgzYS41MTcuNTE3IDAgMCAxIC4xNDUtLjA0Yy4wMTMuMDMuMDI4LjA5Mi4wMzIuMTk4LjAwNS4xMjItLjAwNy4yNzctLjAzOC40NjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgMGg1LjI5M0ExIDEgMCAwIDEgMTAgLjI5M0wxMy43MDcgNGExIDEgMCAwIDEgLjI5My43MDdWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem01LjUgMS41djJhMSAxIDAgMCAwIDEgMWgybC0zLTN6TTQuMTY1IDEzLjY2OGMuMDkuMTguMjMuMzQzLjQzOC40MTkuMjA3LjA3NS40MTIuMDQuNTgtLjAzLjMxOC0uMTMuNjM1LS40MzYuOTI2LS43ODYuMzMzLS40MDEuNjgzLS45MjcgMS4wMjEtMS41MWExMS42NTEgMTEuNjUxIDAgMCAxIDEuOTk3LS40MDZjLjMuMzgzLjYxLjcxMy45MS45NS4yOC4yMi42MDMuNDAzLjkzNC40MTdhLjg1Ni44NTYgMCAwIDAgLjUxLS4xMzhjLjE1NS0uMTAxLjI3LS4yNDcuMzU0LS40MTYuMDktLjE4MS4xNDUtLjM3LjEzOC0uNTYzYS44NDQuODQ0IDAgMCAwLS4yLS41MThjLS4yMjYtLjI3LS41OTYtLjQtLjk2LS40NjVhNS43NiA1Ljc2IDAgMCAwLTEuMzM1LS4wNSAxMC45NTQgMTAuOTU0IDAgMCAxLS45OC0xLjY4NmMuMjUtLjY2LjQzNy0xLjI4NC41Mi0xLjc5NC4wMzYtLjIxOC4wNTUtLjQyNi4wNDgtLjYxNGExLjIzOCAxLjIzOCAwIDAgMC0uMTI3LS41MzguNy43IDAgMCAwLS40NzctLjM2NWMtLjIwMi0uMDQzLS40MSAwLS42MDEuMDc3LS4zNzcuMTUtLjU3Ni40Ny0uNjUxLjgyMy0uMDczLjM0LS4wNC43MzYuMDQ2IDEuMTM2LjA4OC40MDYuMjM4Ljg0OC40MyAxLjI5NWExOS42OTcgMTkuNjk3IDAgMCAxLTEuMDYyIDIuMjI3IDcuNjYyIDcuNjYyIDAgMCAwLTEuNDgyLjY0NWMtLjM3LjIyLS42OTkuNDgtLjg5Ny43ODctLjIxLjMyNi0uMjc1LjcxNC0uMDggMS4xMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQZGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42MDMgMTQuMDg3YS44MS44MSAwIDAgMS0uNDM4LS40MmMtLjE5NS0uMzg4LS4xMy0uNzc2LjA4LTEuMTAyLjE5OC0uMzA3LjUyNi0uNTY4Ljg5Ny0uNzg3YTcuNjggNy42OCAwIDAgMSAxLjQ4Mi0uNjQ1IDE5LjY5NyAxOS42OTcgMCAwIDAgMS4wNjItMi4yMjcgNy4yNjkgNy4yNjkgMCAwIDEtLjQzLTEuMjk1Yy0uMDg2LS40LS4xMTktLjc5Ni0uMDQ2LTEuMTM2LjA3NS0uMzU0LjI3NC0uNjcyLjY1LS44MjMuMTkyLS4wNzcuNC0uMTIuNjAyLS4wNzdhLjcuNyAwIDAgMSAuNDc3LjM2NWMuMDg4LjE2NC4xMi4zNTYuMTI3LjUzOC4wMDcuMTg4LS4wMTIuMzk2LS4wNDcuNjE0LS4wODQuNTEtLjI3IDEuMTM0LS41MiAxLjc5NGExMC45NTQgMTAuOTU0IDAgMCAwIC45OCAxLjY4NiA1Ljc1MyA1Ljc1MyAwIDAgMSAxLjMzNC4wNWMuMzY0LjA2Ni43MzQuMTk1Ljk2LjQ2NS4xMi4xNDQuMTkzLjMyLjIuNTE4LjAwNy4xOTItLjA0Ny4zODItLjEzOC41NjNhMS4wNCAxLjA0IDAgMCAxLS4zNTQuNDE2Ljg1Ni44NTYgMCAwIDEtLjUxLjEzOGMtLjMzMS0uMDE0LS42NTQtLjE5Ni0uOTMzLS40MTdhNS43MTIgNS43MTIgMCAwIDEtLjkxMS0uOTUgMTEuNjUxIDExLjY1MSAwIDAgMC0xLjk5Ny40MDYgMTEuMzA3IDExLjMwNyAwIDAgMS0xLjAyIDEuNTFjLS4yOTIuMzUtLjYwOS42NTYtLjkyNy43ODdhLjc5My43OTMgMCAwIDEtLjU4LjAyOXptMS4zNzktMS45MDFjLS4xNjYuMDc2LS4zMi4xNTYtLjQ1OS4yMzgtLjMyOC4xOTQtLjU0MS4zODMtLjY0Ny41NDctLjA5NC4xNDUtLjA5Ni4yNS0uMDQuMzYxLjAxLjAyMi4wMi4wMzYuMDI2LjA0NGEuMjY2LjI2NiAwIDAgMCAuMDM1LS4wMTJjLjEzNy0uMDU2LjM1NS0uMjM1LjYzNS0uNTcyYTguMTggOC4xOCAwIDAgMCAuNDUtLjYwNnptMS42NC0xLjMzYTEyLjcxIDEyLjcxIDAgMCAxIDEuMDEtLjE5MyAxMS43NDQgMTEuNzQ0IDAgMCAxLS41MS0uODU4IDIwLjgwMSAyMC44MDEgMCAwIDEtLjUgMS4wNXptMi40NDYuNDVjLjE1LjE2My4yOTYuMy40MzUuNDEuMjQuMTkuNDA3LjI1My40OTguMjU2YS4xMDcuMTA3IDAgMCAwIC4wNy0uMDE1LjMwNy4zMDcgMCAwIDAgLjA5NC0uMTI1LjQzNi40MzYgMCAwIDAgLjA1OS0uMi4wOTUuMDk1IDAgMCAwLS4wMjYtLjA2M2MtLjA1Mi0uMDYyLS4yLS4xNTItLjUxOC0uMjA5YTMuODc2IDMuODc2IDAgMCAwLS42MTItLjA1M3pNOC4wNzggNy44YTYuNyA2LjcgMCAwIDAgLjItLjgyOGMuMDMxLS4xODguMDQzLS4zNDMuMDM4LS40NjVhLjYxMy42MTMgMCAwIDAtLjAzMi0uMTk4LjUxNy41MTcgMCAwIDAtLjE0NS4wNGMtLjA4Ny4wMzUtLjE1OC4xMDYtLjE5Ni4yODMtLjA0LjE5Mi0uMDMuNDY5LjA0Ni44MjIuMDI0LjExMS4wNTQuMjI3LjA5LjM0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya1BlcnNvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTExIDhhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwem0yIDUuNzU1VjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xdi0uMjQ1UzQgMTIgOCAxMnM1IDEuNzU1IDUgMS43NTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgOGEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMnY5LjI1NVMxMiAxMiA4IDEycy01IDEuNzU1LTUgMS43NTVWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrUGxheUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTYgNi44ODNhLjUuNSAwIDAgMSAuNzU3LS40MjlsMy41MjggMi4xMTdhLjUuNSAwIDAgMSAwIC44NThsLTMuNTI4IDIuMTE3YS41LjUgMCAwIDEtLjc1Ny0uNDNWNi44ODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQbGF5IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNi44ODN2NC4yMzRhLjUuNSAwIDAgMCAuNzU3LjQyOWwzLjUyOC0yLjExN2EuNS41IDAgMCAwIDAtLjg1OEw2Ljc1NyA2LjQ1NGEuNS41IDAgMCAwLS43NTcuNDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlYxNGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoNS41djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQbHVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNOC41IDd2MS41SDEwYS41LjUgMCAwIDEgMCAxSDguNVYxMWEuNS41IDAgMCAxLTEgMFY5LjVINmEuNS41IDAgMCAxIDAtMWgxLjVWN2EuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya1BsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA2LjVhLjUuNSAwIDAgMSAuNS41djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTFhLjUuNSAwIDAgMS0xIDBWOS41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjdhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjVWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDUuNUwxNCA0LjV6bS0zIDBBMS41IDEuNSAwIDAgMSA5LjUgM1YxSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVY0LjVoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQb3N0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXptLTUtLjVIN2EuNS41IDAgMCAxIDAgMUg0LjVhLjUuNSAwIDAgMSAwLTF6bTAgM2g3YS41LjUgMCAwIDEgLjUuNXY3YS41LjUgMCAwIDEtLjUuNWgtN2EuNS41IDAgMCAxLS41LS41di03YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQb3N0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNVYxNGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoNS41TDE0IDQuNXptLTMgMEExLjUgMS41IDAgMCAxIDkuNSAzVjFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjQuNWgtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDYuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djdhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTd6bTAtM2EuNS41IDAgMCAxIC41LS41SDdhLjUuNSAwIDAgMSAwIDFINC41YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtQcHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMTg4IDEwSDdWNi41aDEuMTg4YTEuNzUgMS43NSAwIDEgMSAwIDMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoNS4yOTNBMSAxIDAgMCAxIDEwIC4yOTNMMTMuNzA3IDRhMSAxIDAgMCAxIC4yOTMuNzA3VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMnptNS41IDEuNXYyYTEgMSAwIDAgMCAxIDFoMmwtMy0zek03IDUuNWExIDEgMCAwIDAtMSAxVjEzYS41LjUgMCAwIDAgMSAwdi0yaDEuMTg4YTIuNzUgMi43NSAwIDAgMCAwLTUuNUg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrUHB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNS41YTEgMSAwIDAgMC0xIDFWMTNhLjUuNSAwIDAgMCAxIDB2LTJoMS4xODhhMi43NSAyLjc1IDAgMCAwIDAtNS41SDd6TTguMTg4IDEwSDdWNi41aDEuMTg4YTEuNzUgMS43NSAwIDEgMSAwIDMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjVWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDUuNUwxNCA0LjV6bS0zIDBBMS41IDEuNSAwIDAgMSA5LjUgM1YxSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVY0LjVoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtSaWNodGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTcgNi4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0tLjg2MSAxLjU0MiAxLjMzLjg4NiAxLjg1NC0xLjg1NWEuMjUuMjUgMCAwIDEgLjI4OS0uMDQ3bDEuODg4Ljk3NFY5LjVhLjUuNSAwIDAgMS0uNS41SDVhLjUuNSAwIDAgMS0uNS0uNVY5czEuNTQtMS4yNzQgMS42MzktMS4yMDh6TTUgMTFoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0wIDJoM2EuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrUmljaHRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41VjE0YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg1LjVMMTQgNC41em0tMyAwQTEuNSAxLjUgMCAwIDEgOS41IDNWMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWNC41aC0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMi41QS41LjUgMCAwIDEgNSAxMmgzYS41LjUgMCAwIDEgMCAxSDVhLjUuNSAwIDAgMS0uNS0uNXptMC0yQS41LjUgMCAwIDEgNSAxMGg2YS41LjUgMCAwIDEgMCAxSDVhLjUuNSAwIDAgMS0uNS0uNXptMS42MzktMy43MDggMS4zMy44ODYgMS44NTQtMS44NTVhLjI1LjI1IDAgMCAxIC4yODktLjA0N2wxLjg4OC45NzRWOC41YS41LjUgMCAwIDEtLjUuNUg1YS41LjUgMCAwIDEtLjUtLjVWOHMxLjU0LTEuMjc0IDEuNjM5LTEuMjA4ek02LjI1IDZhLjc1Ljc1IDAgMSAwIDAtMS41Ljc1Ljc1IDAgMCAwIDAgMS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrUnVsZWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek0zIDloMTB2MUg2djJoN3YxSDZ2Mkg1di0ySDN2LTFoMnYtMkgzVjl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtSdWxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjlIM1YyYTEgMSAwIDAgMSAxLTFoNS41djJ6TTMgMTJ2LTJoMnYySDN6bTAgMWgydjJINGExIDEgMCAwIDEtMS0xdi0xem0zIDJ2LTJoN3YxYTEgMSAwIDAgMS0xIDFINnptNy0zSDZ2LTJoN3YyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrU2xpZGVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDkuNzhWNy4yMmMwLS4wOTYuMTA2LS4xNTYuMTktLjEwNmwyLjEzIDEuMjc5YS4xMjUuMTI1IDAgMCAxIDAgLjIxNGwtMi4xMyAxLjI4QS4xMjUuMTI1IDAgMCAxIDcgOS43Nzh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTUgNmg2YS41LjUgMCAwIDEgLjQ5Ni40MzhsLjUgNEEuNS41IDAgMCAxIDExLjUgMTFoLTN2Mi4wMTZjLjg2My4wNTUgMS41LjI1MSAxLjUuNDg0IDAgLjI3Ni0uODk1LjUtMiAuNXMtMi0uMjI0LTItLjVjMC0uMjMzLjYzNy0uNDI5IDEuNS0uNDg0VjExaC0zYS41LjUgMCAwIDEtLjQ5Ni0uNTYybC41LTRBLjUuNSAwIDAgMSA1IDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtTbGlkZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA2YS41LjUgMCAwIDAtLjQ5Ni40MzhsLS41IDRBLjUuNSAwIDAgMCA0LjUgMTFoM3YyLjAxNmMtLjg2My4wNTUtMS41LjI1MS0xLjUuNDg0IDAgLjI3Ni44OTUuNSAyIC41czItLjIyNCAyLS41YzAtLjIzMy0uNjM3LS40MjktMS41LS40ODRWMTFoM2EuNS41IDAgMCAwIC40OTYtLjU2MmwtLjUtNEEuNS41IDAgMCAwIDExIDZINXptMiAzLjc4VjcuMjJjMC0uMDk2LjEwNi0uMTU2LjE5LS4xMDZsMi4xMyAxLjI3OWEuMTI1LjEyNSAwIDAgMSAwIC4yMTRsLTIuMTMgMS4yOEEuMTI1LjEyNSAwIDAgMSA3IDkuNzc4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDE0VjQuNUw5LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJ6TTkuNSAzQTEuNSAxLjUgMCAwIDAgMTEgNC41aDJWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDUuNXYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrU3ByZWFkc2hlZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTJ2LTJoM3YySDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6TTMgOWgxMHYxaC0zdjJoM3YxaC0zdjJIOXYtMkg2djJINXYtMkgzdi0xaDJ2LTJIM1Y5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrU3ByZWFkc2hlZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTRWNC41TDkuNSAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMnpNOS41IDNBMS41IDEuNSAwIDAgMCAxMSA0LjVoMlY5SDNWMmExIDEgMCAwIDEgMS0xaDUuNXYyek0zIDEydi0yaDJ2Mkgzem0wIDFoMnYySDRhMSAxIDAgMCAxLTEtMXYtMXptMyAydi0yaDN2Mkg2em00IDB2LTJoM3YxYTEgMSAwIDAgMS0xIDFoLTJ6bTMtM2gtM3YtMmgzdjJ6bS03IDB2LTJoM3YySDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtUZXh0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNNC41IDlhLjUuNSAwIDAgMSAwLTFoN2EuNS41IDAgMCAxIDAgMWgtN3pNNCAxMC41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0uNSAyLjVhLjUuNSAwIDAgMSAwLTFoNGEuNS41IDAgMCAxIDAgMWgtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya1RleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDdhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXpNNSA5LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bTAgMmEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC41TDkuNSAwem0wIDF2MkExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtXb3JkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjI5MyAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlY0LjcwN0ExIDEgMCAwIDAgMTMuNzA3IDRMMTAgLjI5M0ExIDEgMCAwIDAgOS4yOTMgMHpNOS41IDMuNXYtMmwzIDNoLTJhMSAxIDAgMCAxLTEtMXpNNS40ODUgNi44NzlsMS4wMzYgNC4xNDQuOTk3LTMuNjU1YS41LjUgMCAwIDEgLjk2NCAwbC45OTcgMy42NTUgMS4wMzYtNC4xNDRhLjUuNSAwIDAgMSAuOTcuMjQybC0xLjUgNmEuNS41IDAgMCAxLS45NjcuMDFMOCA5LjQwMmwtMS4wMTggMy43M2EuNS41IDAgMCAxLS45NjctLjAxbC0xLjUtNmEuNS41IDAgMSAxIC45Ny0uMjQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrV29yZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjQ4NSA2Ljg3OWEuNS41IDAgMSAwLS45Ny4yNDJsMS41IDZhLjUuNSAwIDAgMCAuOTY3LjAxTDggOS40MDJsMS4wMTggMy43M2EuNS41IDAgMCAwIC45NjctLjAxbDEuNS02YS41LjUgMCAwIDAtLjk3LS4yNDJsLTEuMDM2IDQuMTQ0LS45OTctMy42NTVhLjUuNSAwIDAgMC0uOTY0IDBsLS45OTcgMy42NTVMNS40ODUgNi44OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya1hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMjkzIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjQuNzA3QTEgMSAwIDAgMCAxMy43MDcgNEwxMCAuMjkzQTEgMSAwIDAgMCA5LjI5MyAwek05LjUgMy41di0ybDMgM2gtMmExIDEgMCAwIDEtMS0xek02Ljg1NCA3LjE0NiA4IDguMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgOWwxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDggOS43MDdsLTEuMTQ2IDEuMTQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDcuMjkzIDkgNi4xNDYgNy44NTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODU0IDcuMTQ2YS41LjUgMCAxIDAtLjcwOC43MDhMNy4yOTMgOWwtMS4xNDcgMS4xNDZhLjUuNSAwIDAgMCAuNzA4LjcwOEw4IDkuNzA3bDEuMTQ2IDEuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4TDguNzA3IDlsMS4xNDctMS4xNDZhLjUuNSAwIDAgMC0uNzA4LS43MDhMOCA4LjI5MyA2Ljg1NCA3LjE0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAxNFY0LjVMOS41IDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yek05LjUgM0ExLjUgMS41IDAgMCAwIDExIDQuNWgyVjE0YTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg1LjV2MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFybWFya1ppcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDkuNDM4VjguNWgxdi45MzhhMSAxIDAgMCAwIC4wMy4yNDNsLjQgMS41OTgtLjkzLjYyLS45My0uNjIuNC0xLjU5OGExIDEgMCAwIDAgLjAzLS4yNDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4yOTMgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWNC43MDdBMSAxIDAgMCAwIDEzLjcwNyA0TDEwIC4yOTNBMSAxIDAgMCAwIDkuMjkzIDB6TTkuNSAzLjV2LTJsMyAzaC0yYTEgMSAwIDAgMS0xLTF6bS00LS41VjJoLTFWMUg2djFoMXYxSDZ2MWgxdjFINnYxaDF2MUg1LjVWNmgtMVY1aDFWNGgtMVYzaDF6bTAgNC41aDFhMSAxIDAgMCAxIDEgMXYuOTM4bC40IDEuNTk5YTEgMSAwIDAgMS0uNDE2IDEuMDc0bC0uOTMuNjJhMSAxIDAgMCAxLTEuMTA5IDBsLS45My0uNjJhMSAxIDAgMCAxLS40MTUtMS4wNzRsLjQtMS41OTlWOC41YTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZUVhcm1hcmtaaXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA3LjVhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMSAxIDF2LjkzOGwuNCAxLjU5OWExIDEgMCAwIDEtLjQxNiAxLjA3NGwtLjkzLjYyYTEgMSAwIDAgMS0xLjExIDBsLS45MjktLjYyYTEgMSAwIDAgMS0uNDE1LTEuMDc0TDUgOC40MzhWNy41em0yIDBINnYuOTM4YTEgMSAwIDAgMS0uMDMuMjQzbC0uNCAxLjU5OC45My42Mi45MjktLjYyLS40LTEuNTk4QTEgMSAwIDAgMSA3IDguNDM4VjcuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjVWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDUuNUwxNCA0LjV6bS0zIDBBMS41IDEuNSAwIDAgMSA5LjUgM1YxaC0ydjFoLTF2MWgxdjFoLTF2MWgxdjFINlY1SDVWNGgxVjNINVYyaDFWMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWNC41aC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFYXJtYXJrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDQuNVYxNGEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJoNS41TDE0IDQuNXptLTMgMEExLjUgMS41IDAgMCAxIDkuNSAzVjFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjQuNWgtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFzZWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNi41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVoLTVhLjUuNSAwIDAgMS0uNS0uNXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA1aDJBMS41IDEuNSAwIDAgMSAxMiA2LjV2MmExLjUgMS41IDAgMCAxLTEuNSAxLjVoLS40NzNsLjQ0NyAxLjM0MmEuNS41IDAgMCAxLS45NDguMzE2TDguOTczIDEwSDguNXYxYS41LjUgMCAwIDEtMSAwdi0xaC0uNDczbC0uNTUzIDEuNjU4YS41LjUgMCAxIDEtLjk0OC0uMzE2TDUuOTczIDEwSDUuNUExLjUgMS41IDAgMCAxIDQgOC41di0yQTEuNSAxLjUgMCAwIDEgNS41IDVoMmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRWFzZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDVhLjUuNSAwIDEgMC0xIDBoLTJBMS41IDEuNSAwIDAgMCA0IDYuNXYyQTEuNSAxLjUgMCAwIDAgNS41IDEwaC40NzNsLS40NDcgMS4zNDJhLjUuNSAwIDEgMCAuOTQ4LjMxNkw3LjAyNyAxMEg3LjV2MWEuNS41IDAgMCAwIDEgMHYtMWguNDczbC41NTMgMS42NThhLjUuNSAwIDEgMCAuOTQ4LS4zMTZMMTAuMDI3IDEwaC40NzNBMS41IDEuNSAwIDAgMCAxMiA4LjV2LTJBMS41IDEuNSAwIDAgMCAxMC41IDVoLTJ6TTUgNi41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVoLTVhLjUuNSAwIDAgMS0uNS0uNXYtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMTAtMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVFeGNlbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01Ljg4NCA0LjY4IDggNy4yMTlsMi4xMTYtMi41NGEuNS41IDAgMSAxIC43NjguNjQxTDguNjUxIDhsMi4yMzMgMi42OGEuNS41IDAgMCAxLS43NjguNjRMOCA4Ljc4MWwtMi4xMTYgMi41NGEuNS41IDAgMCAxLS43NjgtLjY0MUw3LjM0OSA4IDUuMTE2IDUuMzJhLjUuNSAwIDEgMSAuNzY4LS42NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRXhjZWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4xOCA0LjYxNmEuNS41IDAgMCAxIC43MDQuMDY0TDggNy4yMTlsMi4xMTYtMi41NGEuNS41IDAgMSAxIC43NjguNjQxTDguNjUxIDhsMi4yMzMgMi42OGEuNS41IDAgMCAxLS43NjguNjRMOCA4Ljc4MWwtMi4xMTYgMi41NGEuNS41IDAgMCAxLS43NjgtLjY0MUw3LjM0OSA4IDUuMTE2IDUuMzJhLjUuNSAwIDAgMSAuMDY0LS43MDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDBoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlRm9udEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01LjA1NyA0aDUuODg2TDExIDZoLS41Yy0uMTgtMS4wOTYtLjM1Ni0xLjE5Mi0xLjY5NC0xLjIzNWwtLjI5OC0uMDF2Ni4wOWMwIC40Ny4xLjU4Mi45MDMuNjU1di41SDYuNTl2LS41Yy43OTktLjA3My44OTgtLjE4NC44OTgtLjY1NFY0Ljc1NWwtLjI5My4wMUM1Ljg1NiA0LjgwOCA1LjY4IDQuOTA1IDUuNSA2SDVsLjA1Ny0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVGb250IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjk0MyA0SDUuMDU3TDUgNmguNWMuMTgtMS4wOTYuMzU2LTEuMTkyIDEuNjk0LTEuMjM1bC4yOTMtLjAxdjYuMDljMCAuNDctLjEuNTgyLS44OTguNjU1di41SDkuNDF2LS41Yy0uODAzLS4wNzMtLjkwMy0uMTg0LS45MDMtLjY1NFY0Ljc1NWwuMjk4LjAxYzEuMzM4LjA0MyAxLjUxNC4xNCAxLjY5NCAxLjIzNWguNWwtLjA1Ny0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0em0wIDFoOGExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlSW1hZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg4YTIgMiAwIDAgMSAyIDJ2OC4yOTNsLTIuNzMtMi43M2ExIDEgMCAwIDAtMS41Mi4xMjdsLTEuODg5IDIuNjQ0LTEuNzY5LTEuMDYyYTEgMSAwIDAgMC0xLjIyMi4xNUwyIDEyLjI5MlYyYTIgMiAwIDAgMSAyLTJ6bTQuMDAyIDUuNWExLjUgMS41IDAgMSAwLTMgMCAxLjUgMS41IDAgMCAwIDMgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC41NjQgOC4yNyAxNCAxMS43MDhWMTRhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJ2LS4yOTNsMy41NzgtMy41NzcgMi41NiAxLjUzNiAyLjQyNi0zLjM5NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlSW1hZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wMDIgNS41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNMyAyYTEgMSAwIDAgMSAxLTFoOGExIDEgMCAwIDEgMSAxdjhsLTIuMDgzLTIuMDgzYS41LjUgMCAwIDAtLjc2LjA2M0w4IDExIDUuODM1IDkuN2EuNS41IDAgMCAwLS42MTEuMDc2TDMgMTJWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlTG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA2YTEgMSAwIDAgMSAyIDB2MUg3VjZ6TTYgOC4zYzAtLjA0Mi4wMi0uMTA3LjEwNS0uMTc1QS42MzcuNjM3IDAgMCAxIDYuNSA4aDNhLjY0LjY0IDAgMCAxIC4zOTUuMTI1Yy4wODUuMDY4LjEwNS4xMzMuMTA1LjE3NXYyLjRjMCAuMDQyLS4wMi4xMDctLjEwNS4xNzVBLjYzNy42MzcgMCAwIDEgOS41IDExaC0zYS42MzcuNjM3IDAgMCAxLS4zOTUtLjEyNUM2LjAyIDEwLjgwNyA2IDEwLjc0MiA2IDEwLjdWOC4zelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnptLTIgNnYxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOC4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjZhMiAyIDAgMSAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDVhMSAxIDAgMCAxIDEgMXYxSDdWNmExIDEgMCAwIDEgMS0xem0yIDIuMDc2VjZhMiAyIDAgMSAwLTQgMHYxLjA3NmMtLjU0LjE2Ni0xIC41OTctMSAxLjIyNHYyLjRjMCAuODE2Ljc4MSAxLjMgMS41IDEuM2gzYy43MTkgMCAxLjUtLjQ4NCAxLjUtMS4zVjguM2MwLS42MjctLjQ2LTEuMDU4LTEtMS4yMjR6TTYuMTA1IDguMTI1QS42MzcuNjM3IDAgMCAxIDYuNSA4aDNhLjY0LjY0IDAgMCAxIC4zOTUuMTI1Yy4wODUuMDY4LjEwNS4xMzMuMTA1LjE3NXYyLjRjMCAuMDQyLS4wMi4xMDctLjEwNS4xNzVBLjYzNy42MzcgMCAwIDEgOS41IDExaC0zYS42MzcuNjM3IDAgMCAxLS4zOTUtLjEyNUM2LjAyIDEwLjgwNyA2IDEwLjc0MiA2IDEwLjdWOC4zYzAtLjA0Mi4wMi0uMTA3LjEwNS0uMTc1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0em0wIDFoOGExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlTG9jazJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNmExIDEgMCAwIDEgMiAwdjFIN1Y2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnptLTIgNnYxLjA3NmMuNTQuMTY2IDEgLjU5NyAxIDEuMjI0djIuNGMwIC44MTYtLjc4MSAxLjMtMS41IDEuM2gtM2MtLjcxOSAwLTEuNS0uNDg0LTEuNS0xLjNWOC4zYzAtLjYyNy40Ni0xLjA1OCAxLTEuMjI0VjZhMiAyIDAgMSAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlTG9jazIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA1YTEgMSAwIDAgMSAxIDF2MUg3VjZhMSAxIDAgMCAxIDEtMXptMiAyLjA3NlY2YTIgMiAwIDEgMC00IDB2MS4wNzZjLS41NC4xNjYtMSAuNTk3LTEgMS4yMjR2Mi40YzAgLjgxNi43ODEgMS4zIDEuNSAxLjNoM2MuNzE5IDAgMS41LS40ODQgMS41LTEuM1Y4LjNjMC0uNjI3LS40Ni0xLjA1OC0xLTEuMjI0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0em0wIDFoOGExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlTWVkaWNhbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek04LjUgNC41di42MzRsLjU0OS0uMzE3YS41LjUgMCAxIDEgLjUuODY2TDkgNmwuNTQ5LjMxN2EuNS41IDAgMSAxLS41Ljg2Nkw4LjUgNi44NjZWNy41YS41LjUgMCAwIDEtMSAwdi0uNjM0bC0uNTQ5LjMxN2EuNS41IDAgMSAxLS41LS44NjZMNyA2bC0uNTQ5LS4zMTdhLjUuNSAwIDAgMSAuNS0uODY2bC41NDkuMzE3VjQuNWEuNS41IDAgMSAxIDEgMHpNNS41IDloNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMXptMCAyaDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZU1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDQuNWEuNS41IDAgMCAwLTEgMHYuNjM0bC0uNTQ5LS4zMTdhLjUuNSAwIDEgMC0uNS44NjZMNyA2bC0uNTQ5LjMxN2EuNS41IDAgMSAwIC41Ljg2NmwuNTQ5LS4zMTdWNy41YS41LjUgMCAxIDAgMSAwdi0uNjM0bC41NDkuMzE3YS41LjUgMCAxIDAgLjUtLjg2Nkw5IDZsLjU0OS0uMzE3YS41LjUgMCAxIDAtLjUtLjg2NmwtLjU0OS4zMTdWNC41ek01LjUgOWEuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgMC0xaC01em0wIDJhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMTAtMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek02IDcuNWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMSAwLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA4YS41LjUgMCAwIDEgLjUtLjVoNGEuNS41IDAgMCAxIDAgMUg2YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVNdXNpY0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yem0tLjUgNC4xMXYxLjhsLTIuNS41djUuMDljMCAuNDk1LS4zMDEuODgzLS42NjIgMS4xMjNDNy45NzQgMTIuODY2IDcuNDk5IDEzIDcgMTNjLS41IDAtLjk3NC0uMTM0LTEuMzM4LS4zNzctLjM2LS4yNC0uNjYyLS42MjgtLjY2Mi0xLjEyM3MuMzAxLS44ODMuNjYyLTEuMTIzQzYuMDI2IDEwLjEzNCA2LjUwMSAxMCA3IDEwYy4zNTYgMCAuNy4wNjggMSAuMTk2VjQuNDFhMSAxIDAgMCAxIC44MDQtLjk4bDEuNS0uM2ExIDEgMCAwIDEgMS4xOTYuOTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZU11c2ljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjMwNCAzLjEzYTEgMSAwIDAgMSAxLjE5Ni45OHYxLjhsLTIuNS41djUuMDljMCAuNDk1LS4zMDEuODgzLS42NjIgMS4xMjNDNy45NzQgMTIuODY2IDcuNDk5IDEzIDcgMTNjLS41IDAtLjk3NC0uMTM0LTEuMzM4LS4zNzctLjM2LS4yNC0uNjYyLS42MjgtLjY2Mi0xLjEyM3MuMzAxLS44ODMuNjYyLTEuMTIzQzYuMDI2IDEwLjEzNCA2LjUwMSAxMCA3IDEwYy4zNTYgMCAuNy4wNjggMSAuMTk2VjQuNDFhMSAxIDAgMCAxIC44MDQtLjk4bDEuNS0uM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMCAxaDhhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVBkZkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41MjMgMTAuNDI0Yy4xNC0uMDgyLjI5My0uMTYyLjQ1OS0uMjM4YTcuODc4IDcuODc4IDAgMCAxLS40NS42MDZjLS4yOC4zMzctLjQ5OC41MTYtLjYzNS41NzJhLjI2Ni4yNjYgMCAwIDEtLjAzNS4wMTIuMjgyLjI4MiAwIDAgMS0uMDI2LS4wNDRjLS4wNTYtLjExLS4wNTQtLjIxNi4wNC0uMzYuMTA2LS4xNjUuMzE5LS4zNTQuNjQ3LS41NDh6bTIuNDU1LTEuNjQ3Yy0uMTE5LjAyNS0uMjM3LjA1LS4zNTYuMDc4YTIxLjAzNSAyMS4wMzUgMCAwIDAgLjUtMS4wNSAxMS45NiAxMS45NiAwIDAgMCAuNTEuODU4Yy0uMjE3LjAzMi0uNDM2LjA3LS42NTQuMTE0em0yLjUyNS45MzlhMy44ODggMy44ODggMCAwIDEtLjQzNS0uNDFjLjIyOC4wMDUuNDM0LjAyMi42MTIuMDU0LjMxNy4wNTcuNDY2LjE0Ny41MTguMjA5YS4wOTUuMDk1IDAgMCAxIC4wMjYuMDY0LjQzNi40MzYgMCAwIDEtLjA2LjIuMzA3LjMwNyAwIDAgMS0uMDk0LjEyNC4xMDcuMTA3IDAgMCAxLS4wNjkuMDE1Yy0uMDktLjAwMy0uMjU4LS4wNjYtLjQ5OC0uMjU2ek04LjI3OCA0Ljk3Yy0uMDQuMjQ0LS4xMDguNTI0LS4yLjgyOWE0Ljg2IDQuODYgMCAwIDEtLjA4OS0uMzQ2Yy0uMDc2LS4zNTMtLjA4Ny0uNjMtLjA0Ni0uODIyLjAzOC0uMTc3LjExLS4yNDguMTk2LS4yODNhLjUxNy41MTcgMCAwIDEgLjE0NS0uMDRjLjAxMy4wMy4wMjguMDkyLjAzMi4xOTguMDA1LjEyMi0uMDA3LjI3Ny0uMDM4LjQ2NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAwaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyYTIgMiAwIDAgMSAyLTJ6bS4xNjUgMTEuNjY4Yy4wOS4xOC4yMy4zNDMuNDM4LjQxOS4yMDcuMDc1LjQxMi4wNC41OC0uMDMuMzE4LS4xMy42MzUtLjQzNi45MjYtLjc4Ni4zMzMtLjQwMS42ODMtLjkyNyAxLjAyMS0xLjUxYTExLjY0IDExLjY0IDAgMCAxIDEuOTk3LS40MDZjLjMuMzgzLjYxLjcxMy45MS45NS4yOC4yMi42MDMuNDAzLjkzNC40MTdhLjg1Ni44NTYgMCAwIDAgLjUxLS4xMzhjLjE1NS0uMTAxLjI3LS4yNDcuMzU0LS40MTYuMDktLjE4MS4xNDUtLjM3LjEzOC0uNTYzYS44NDQuODQ0IDAgMCAwLS4yLS41MThjLS4yMjYtLjI3LS41OTYtLjQtLjk2LS40NjVhNS43NiA1Ljc2IDAgMCAwLTEuMzM1LS4wNSAxMC45NTQgMTAuOTU0IDAgMCAxLS45OC0xLjY4NmMuMjUtLjY2LjQzNy0xLjI4NC41Mi0xLjc5NC4wMzYtLjIxOC4wNTUtLjQyNi4wNDgtLjYxNGExLjIzOCAxLjIzOCAwIDAgMC0uMTI3LS41MzguNy43IDAgMCAwLS40NzctLjM2NWMtLjIwMi0uMDQzLS40MSAwLS42MDEuMDc3LS4zNzcuMTUtLjU3Ni40Ny0uNjUxLjgyMy0uMDczLjM0LS4wNC43MzYuMDQ2IDEuMTM2LjA4OC40MDYuMjM4Ljg0OC40MyAxLjI5NWExOS43MDcgMTkuNzA3IDAgMCAxLTEuMDYyIDIuMjI3IDcuNjYyIDcuNjYyIDAgMCAwLTEuNDgyLjY0NWMtLjM3LjIyLS42OTkuNDgtLjg5Ny43ODctLjIxLjMyNi0uMjc1LjcxNC0uMDggMS4xMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVBkZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMCAxaDhhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42MDMgMTIuMDg3YS44MS44MSAwIDAgMS0uNDM4LS40MmMtLjE5NS0uMzg4LS4xMy0uNzc2LjA4LTEuMTAyLjE5OC0uMzA3LjUyNi0uNTY4Ljg5Ny0uNzg3YTcuNjggNy42OCAwIDAgMSAxLjQ4Mi0uNjQ1IDE5LjcwMSAxOS43MDEgMCAwIDAgMS4wNjItMi4yMjcgNy4yNjkgNy4yNjkgMCAwIDEtLjQzLTEuMjk1Yy0uMDg2LS40LS4xMTktLjc5Ni0uMDQ2LTEuMTM2LjA3NS0uMzU0LjI3NC0uNjcyLjY1LS44MjMuMTkyLS4wNzcuNC0uMTIuNjAyLS4wNzdhLjcuNyAwIDAgMSAuNDc3LjM2NWMuMDg4LjE2NC4xMi4zNTYuMTI3LjUzOC4wMDcuMTg3LS4wMTIuMzk1LS4wNDcuNjE0LS4wODQuNTEtLjI3IDEuMTM0LS41MiAxLjc5NGExMC45NTQgMTAuOTU0IDAgMCAwIC45OCAxLjY4NiA1Ljc1MyA1Ljc1MyAwIDAgMSAxLjMzNC4wNWMuMzY0LjA2NS43MzQuMTk1Ljk2LjQ2NS4xMi4xNDQuMTkzLjMyLjIuNTE4LjAwNy4xOTItLjA0Ny4zODItLjEzOC41NjNhMS4wNCAxLjA0IDAgMCAxLS4zNTQuNDE2Ljg1Ni44NTYgMCAwIDEtLjUxLjEzOGMtLjMzMS0uMDE0LS42NTQtLjE5Ni0uOTMzLS40MTdhNS43MTYgNS43MTYgMCAwIDEtLjkxMS0uOTUgMTEuNjQyIDExLjY0MiAwIDAgMC0xLjk5Ny40MDYgMTEuMzExIDExLjMxMSAwIDAgMS0xLjAyMSAxLjUxYy0uMjkuMzUtLjYwOC42NTUtLjkyNi43ODdhLjc5My43OTMgMCAwIDEtLjU4LjAyOXptMS4zNzktMS45MDFjLS4xNjYuMDc2LS4zMi4xNTYtLjQ1OS4yMzgtLjMyOC4xOTQtLjU0MS4zODMtLjY0Ny41NDctLjA5NC4xNDUtLjA5Ni4yNS0uMDQuMzYxLjAxLjAyMi4wMi4wMzYuMDI2LjA0NGEuMjcuMjcgMCAwIDAgLjAzNS0uMDEyYy4xMzctLjA1Ni4zNTUtLjIzNS42MzUtLjU3MmE4LjE4IDguMTggMCAwIDAgLjQ1LS42MDZ6bTEuNjQtMS4zM2ExMi42NDcgMTIuNjQ3IDAgMCAxIDEuMDEtLjE5MyAxMS42NjYgMTEuNjY2IDAgMCAxLS41MS0uODU4IDIwLjc0MSAyMC43NDEgMCAwIDEtLjUgMS4wNXptMi40NDYuNDVjLjE1LjE2Mi4yOTYuMy40MzUuNDEuMjQuMTkuNDA3LjI1My40OTguMjU2YS4xMDcuMTA3IDAgMCAwIC4wNy0uMDE1LjMwNy4zMDcgMCAwIDAgLjA5NC0uMTI1LjQzNi40MzYgMCAwIDAgLjA1OS0uMi4wOTUuMDk1IDAgMCAwLS4wMjYtLjA2M2MtLjA1Mi0uMDYyLS4yLS4xNTItLjUxOC0uMjA5YTMuODgxIDMuODgxIDAgMCAwLS42MTItLjA1M3pNOC4wNzggNS44YTYuNyA2LjcgMCAwIDAgLjItLjgyOGMuMDMxLS4xODguMDQzLS4zNDMuMDM4LS40NjVhLjYxMy42MTMgMCAwIDAtLjAzMi0uMTk4LjUxNy41MTcgMCAwIDAtLjE0NS4wNGMtLjA4Ny4wMzUtLjE1OC4xMDYtLjE5Ni4yODMtLjA0LjE5Mi0uMDMuNDY5LjA0Ni44MjIuMDI0LjExMS4wNTQuMjI3LjA5LjM0NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlUGVyc29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6bS0xIDdhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwem0tMyA0YzIuNjIzIDAgNC4xNDYuODI2IDUgMS43NTVWMTRhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTF2LTEuMjQ1QzMuODU0IDExLjgyNSA1LjM3NyAxMSA4IDExelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVQZXJzb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMWExIDEgMCAwIDEgMSAxdjEwLjc1NVMxMiAxMSA4IDExcy01IDEuNzU1LTUgMS43NTVWMmExIDEgMCAwIDEgMS0xaDh6TTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTBhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVQbGF5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTYgNS44ODNhLjUuNSAwIDAgMSAuNzU3LS40MjlsMy41MjggMi4xMTdhLjUuNSAwIDAgMSAwIC44NThsLTMuNTI4IDIuMTE3YS41LjUgMCAwIDEtLjc1Ny0uNDNWNS44ODR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVBsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMC4xMTdWNS44ODNhLjUuNSAwIDAgMSAuNzU3LS40MjlsMy41MjggMi4xMTdhLjUuNSAwIDAgMSAwIC44NThsLTMuNTI4IDIuMTE3YS41LjUgMCAwIDEtLjc1Ny0uNDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVQbHVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTguNSA2djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTBhLjUuNSAwIDAgMS0xIDBWOC41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjZhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDZhLjUuNSAwIDAgMC0xIDB2MS41SDZhLjUuNSAwIDAgMCAwIDFoMS41VjEwYS41LjUgMCAwIDAgMSAwVjguNUgxMGEuNS41IDAgMCAwIDAtMUg4LjVWNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMTAtMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVQb3N0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJ6TTQuNSAzaDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTF6bTAgMmg3YS41LjUgMCAwIDEgLjUuNXY4YS41LjUgMCAwIDEtLjUuNWgtN2EuNS41IDAgMCAxLS41LS41di04YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAzLjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bTAgMmEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djhhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJ6bTEwLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlUHB0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjE4OCA4LjVIN1Y1aDEuMTg4YTEuNzUgMS43NSAwIDEgMSAwIDMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMnptMyA0YTEgMSAwIDAgMC0xIDF2Ni41YS41LjUgMCAwIDAgMSAwdi0yaDEuMTg4YTIuNzUgMi43NSAwIDAgMCAwLTUuNUg3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVQcHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJ6bTEwLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDVhMSAxIDAgMCAxIDEtMWgxLjE4OGEyLjc1IDIuNzUgMCAwIDEgMCA1LjVIN3YyYS41LjUgMCAwIDEtMSAwVjV6bTEgMy41aDEuMTg4YTEuNzUgMS43NSAwIDEgMCAwLTMuNUg3djMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlUmljaHRleHRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNNyA0LjI1YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bS0uODYxIDEuNTQyIDEuMzMuODg2IDEuODU0LTEuODU1YS4yNS4yNSAwIDAgMSAuMjg5LS4wNDdsMS44ODguOTc0VjcuNWEuNS41IDAgMCAxLS41LjVINWEuNS41IDAgMCAxLS41LS41VjdzMS41NC0xLjI3NCAxLjYzOS0xLjIwOHpNNSA5aDZhLjUuNSAwIDAgMSAwIDFINWEuNS41IDAgMCAxIDAtMXptMCAyaDNhLjUuNSAwIDAgMSAwIDFINWEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlUmljaHRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA0LjI1YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6bS0uODYxIDEuNTQyIDEuMzMuODg2IDEuODU0LTEuODU1YS4yNS4yNSAwIDAgMSAuMjg5LS4wNDdsMS44ODguOTc0VjcuNWEuNS41IDAgMCAxLS41LjVINWEuNS41IDAgMCAxLS41LS41VjdzMS41NC0xLjI3NCAxLjYzOS0xLjIwOHpNNSA5YS41LjUgMCAwIDAgMCAxaDZhLjUuNSAwIDAgMCAwLTFINXptMCAyYS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAwLTFINXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMTAtMUg0YTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVSdWxlZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2NGgxMlYyYTIgMiAwIDAgMC0yLTJ6bTIgN0g2djJoOFY3em0wIDNINnYyaDh2LTJ6bTAgM0g2djNoNmEyIDIgMCAwIDAgMi0ydi0xem0tOSAzdi0zSDJ2MWEyIDIgMCAwIDAgMiAyaDF6bS0zLTRoM3YtMkgydjJ6bTAtM2gzVjdIMnYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVSdWxlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMi0xYTEgMSAwIDAgMC0xIDF2NGgxMFYyYTEgMSAwIDAgMC0xLTFINHptOSA2SDZ2Mmg3Vjd6bTAgM0g2djJoN3YtMnptMCAzSDZ2Mmg2YTEgMSAwIDAgMCAxLTF2LTF6bS04IDJ2LTJIM3YxYTEgMSAwIDAgMCAxIDFoMXptLTItM2gydi0ySDN2MnptMC0zaDJWN0gzdjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVNsaWRlc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyA3Ljc4VjUuMjJjMC0uMDk2LjEwNi0uMTU2LjE5LS4xMDZsMi4xMyAxLjI3OWEuMTI1LjEyNSAwIDAgMSAwIC4yMTRsLTIuMTMgMS4yOEEuMTI1LjEyNSAwIDAgMSA3IDcuNzc4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDBINGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMnpNNSA0aDZhLjUuNSAwIDAgMSAuNDk2LjQzOGwuNSA0QS41LjUgMCAwIDEgMTEuNSA5aC0zdjIuMDE2Yy44NjMuMDU1IDEuNS4yNTEgMS41LjQ4NCAwIC4yNzYtLjg5NS41LTIgLjVzLTItLjIyNC0yLS41YzAtLjIzMy42MzctLjQyOSAxLjUtLjQ4NFY5aC0zYS41LjUgMCAwIDEtLjQ5Ni0uNTYybC41LTRBLjUuNSAwIDAgMSA1IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVNsaWRlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDRhLjUuNSAwIDAgMC0uNDk2LjQzOGwtLjUgNEEuNS41IDAgMCAwIDQuNSA5aDN2Mi4wMTZjLS44NjMuMDU1LTEuNS4yNTEtMS41LjQ4NCAwIC4yNzYuODk1LjUgMiAuNXMyLS4yMjQgMi0uNWMwLS4yMzMtLjYzNy0uNDI5LTEuNS0uNDg0VjloM2EuNS41IDAgMCAwIC40OTYtLjU2MmwtLjUtNEEuNS41IDAgMCAwIDExIDRINXptMiAzLjc4VjUuMjJjMC0uMDk2LjEwNi0uMTU2LjE5LS4xMDZsMi4xMyAxLjI3OWEuMTI1LjEyNSAwIDAgMSAwIC4yMTRsLTIuMTMgMS4yOEEuMTI1LjEyNSAwIDAgMSA3IDcuNzc4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem0xMC0xSDRhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVNwcmVhZHNoZWV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAwSDRhMiAyIDAgMCAwLTIgMnY0aDEyVjJhMiAyIDAgMCAwLTItMnptMiA3aC00djJoNFY3em0wIDNoLTR2Mmg0di0yem0wIDNoLTR2M2gyYTIgMiAwIDAgMCAyLTJ2LTF6bS01IDN2LTNINnYzaDN6bS00IDB2LTNIMnYxYTIgMiAwIDAgMCAyIDJoMXptLTMtNGgzdi0ySDJ2MnptMC0zaDNWN0gydjJ6bTQgMFY3aDN2Mkg2em0wIDFoM3YySDZ2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVNwcmVhZHNoZWV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem0yLTFhMSAxIDAgMCAwLTEgMXY0aDEwVjJhMSAxIDAgMCAwLTEtMUg0em05IDZoLTN2MmgzVjd6bTAgM2gtM3YyaDN2LTJ6bTAgM2gtM3YyaDJhMSAxIDAgMCAwIDEtMXYtMXptLTQgMnYtMkg2djJoM3ptLTQgMHYtMkgzdjFhMSAxIDAgMCAwIDEgMWgxem0tMi0zaDJ2LTJIM3Yyem0wLTNoMlY3SDN2MnptMy0ydjJoM1Y3SDZ6bTMgM0g2djJoM3YtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlVGV4dEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01IDRoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0tLjUgMi41QS41LjUgMCAwIDEgNSA2aDZhLjUuNSAwIDAgMSAwIDFINWEuNS41IDAgMCAxLS41LS41ek01IDhoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xem0wIDJoM2EuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEgMC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNGEuNS41IDAgMCAwIDAgMWg2YS41LjUgMCAwIDAgMC0xSDV6bS0uNSAyLjVBLjUuNSAwIDAgMSA1IDZoNmEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEtLjUtLjV6TTUgOGEuNS41IDAgMCAwIDAgMWg2YS41LjUgMCAwIDAgMC0xSDV6bTAgMmEuNS41IDAgMCAwIDAgMWgzYS41LjUgMCAwIDAgMC0xSDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjJ6bTEwLTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlV29yZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek01LjQ4NSA0Ljg3OWwxLjAzNiA0LjE0NC45OTctMy42NTVhLjUuNSAwIDAgMSAuOTY0IDBsLjk5NyAzLjY1NSAxLjAzNi00LjE0NGEuNS41IDAgMCAxIC45Ny4yNDJsLTEuNSA2YS41LjUgMCAwIDEtLjk2Ny4wMUw4IDcuNDAybC0xLjAxOCAzLjczYS41LjUgMCAwIDEtLjk2Ny0uMDFsLTEuNS02YS41LjUgMCAxIDEgLjk3LS4yNDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVdvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC44NzkgNC41MTVhLjUuNSAwIDAgMSAuNjA2LjM2NGwxLjAzNiA0LjE0NC45OTctMy42NTVhLjUuNSAwIDAgMSAuOTY0IDBsLjk5NyAzLjY1NSAxLjAzNi00LjE0NGEuNS41IDAgMCAxIC45Ny4yNDJsLTEuNSA2YS41LjUgMCAwIDEtLjk2Ny4wMUw4IDcuNDAybC0xLjAxOCAzLjczYS41LjUgMCAwIDEtLjk2Ny0uMDFsLTEuNS02YS41LjUgMCAwIDEgLjM2NC0uNjA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0em0wIDFoOGExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlWEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMEg0YTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yek02Ljg1NCA2LjE0NiA4IDcuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgOGwxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDggOC43MDcgNi44NTQgOS44NTRhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOCA2LjE0NiA2Ljg1NGEuNS41IDAgMSAxIC43MDgtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjE0NiA2LjE0NmEuNS41IDAgMCAxIC43MDggMEw4IDcuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAxIDEgLjcwOC43MDhMOC43MDcgOGwxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDggOC43MDcgNi44NTQgOS44NTRhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOCA2LjE0NiA2Ljg1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptMCAxaDhhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVppcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDkuNDM4VjguNWgtMXYuOTM4YTEgMSAwIDAgMS0uMDMuMjQzbC0uNCAxLjU5OC45My42Mi45My0uNjItLjQtMS41OThhMSAxIDAgMCAxLS4wMy0uMjQzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMGg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem0yLjUgOC41di45MzhsLS40IDEuNTk5YTEgMSAwIDAgMCAuNDE2IDEuMDc0bC45My42MmExIDEgMCAwIDAgMS4xMDkgMGwuOTMtLjYyYTEgMSAwIDAgMCAuNDE1LTEuMDc0bC0uNC0xLjU5OVY4LjVhMSAxIDAgMCAwLTEtMWgtMWExIDEgMCAwIDAtMSAxem0xLTUuNWgtMXYxaDF2MWgtMXYxaDF2MUg5VjZIOFY1aDFWNEg4VjNoMVYySDhWMUg2LjV2MWgxdjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsZVppcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgNy41YTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDEgMSAxdi45MzhsLjQgMS41OTlhMSAxIDAgMCAxLS40MTYgMS4wNzRsLS45My42MmExIDEgMCAwIDEtMS4xMDkgMGwtLjkzLS42MmExIDEgMCAwIDEtLjQxNS0xLjA3NGwuNC0xLjU5OVY3LjV6bTIgMGgtMXYuOTM4YTEgMSAwIDAgMS0uMDMuMjQzbC0uNCAxLjU5OC45My42Mi45My0uNjItLjQtMS41OThhMSAxIDAgMCAxLS4wMy0uMjQzVjcuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptNS41LTFINGExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUg5djFIOHYxaDF2MUg4djFoMXYxSDcuNVY1aC0xVjRoMVYzaC0xVjJoMVYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTAgMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbGVzQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDBIM2EyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yIDIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yLTJ6bTIgM2ExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMVYzek0yIDJhMSAxIDAgMCAxIDEtMWg4YTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWxlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAwSDZhMiAyIDAgMCAwLTIgMiAyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoN2EyIDIgMCAwIDAgMi0yIDIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yem0wIDEzVjRhMiAyIDAgMCAwLTItMkg1YTEgMSAwIDAgMSAxLTFoN2ExIDEgMCAwIDEgMSAxdjEwYTEgMSAwIDAgMS0xIDF6TTMgNGExIDEgMCAwIDEgMS0xaDdhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZpbG0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxYTEgMSAwIDAgMSAxLTFoMTRhMSAxIDAgMCAxIDEgMXYxNGExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVYxem00IDB2Nmg4VjFINHptOCA4SDR2Nmg4Vjl6TTEgMXYyaDJWMUgxem0yIDNIMXYyaDJWNHpNMSA3djJoMlY3SDF6bTIgM0gxdjJoMnYtMnptLTIgM3YyaDJ2LTJIMXpNMTUgMWgtMnYyaDJWMXptLTIgM3YyaDJWNGgtMnptMiAzaC0ydjJoMlY3em0tMiAzdjJoMnYtMmgtMnptMiAzaC0ydjJoMnYtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWx0ZXJDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpNMy41IDVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxIDAtMXpNNSA4LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bTIgM2EuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAwIDFoLTFhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWx0ZXJDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDExLjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsdGVyTGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEwLjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6bTAtM2EuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXptMC0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsdGVyUmlnaHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTAuNWEuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAuNS0uNXptMC0zYS41LjUgMCAwIDAtLjUtLjVoLTdhLjUuNSAwIDAgMCAwIDFoN2EuNS41IDAgMCAwIC41LS41em0wLTNhLjUuNSAwIDAgMC0uNS0uNWgtMTFhLjUuNSAwIDAgMCAwIDFoMTFhLjUuNSAwIDAgMCAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWx0ZXJTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptLjUgNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMSAwLTF6TTQgOC41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0yIDNhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmlsdGVyU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDExLjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bS0yLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGaWx0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAxMC41YS41LjUgMCAwIDEgLjUtLjVoM2EuNS41IDAgMCAxIDAgMWgtM2EuNS41IDAgMCAxLS41LS41em0tMi0zYS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0tMi0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmxhZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzc4LjA4NUEuNS41IDAgMCAxIDE1IC41VjhhLjUuNSAwIDAgMS0uMzE0LjQ2NEwxNC41IDhsLjE4Ni40NjQtLjAwMy4wMDEtLjAwNi4wMDMtLjAyMy4wMDlhMTIuNDM1IDEyLjQzNSAwIDAgMS0uMzk3LjE1Yy0uMjY0LjA5NS0uNjMxLjIyMy0xLjA0Ny4zNS0uODE2LjI1Mi0xLjg3OS41MjMtMi43MS41MjMtLjg0NyAwLTEuNTQ4LS4yOC0yLjE1OC0uNTI1bC0uMDI4LS4wMUM3LjY4IDguNzEgNy4xNCA4LjUgNi41IDguNWMtLjcgMC0xLjYzOC4yMy0yLjQzNy40NzdBMTkuNjI2IDE5LjYyNiAwIDAgMCAzIDkuMzQyVjE1LjVhLjUuNSAwIDAgMS0xIDBWLjVhLjUuNSAwIDAgMSAxIDB2LjI4MmMuMjI2LS4wNzkuNDk2LS4xNy43OS0uMjZDNC42MDYuMjcyIDUuNjcgMCA2LjUgMGMuODQgMCAxLjUyNC4yNzcgMi4xMjEuNTE5bC4wNDMuMDE4QzkuMjg2Ljc4OCA5LjgyOCAxIDEwLjUgMWMuNyAwIDEuNjM4LS4yMyAyLjQzNy0uNDc3YTE5LjU4NyAxOS41ODcgMCAwIDAgMS4zNDktLjQ3NmwuMDE5LS4wMDcuMDA0LS4wMDJoLjAwMVwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZsYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzc4LjA4NUEuNS41IDAgMCAxIDE1IC41VjhhLjUuNSAwIDAgMS0uMzE0LjQ2NEwxNC41IDhsLjE4Ni40NjQtLjAwMy4wMDEtLjAwNi4wMDMtLjAyMy4wMDlhMTIuNDM1IDEyLjQzNSAwIDAgMS0uMzk3LjE1Yy0uMjY0LjA5NS0uNjMxLjIyMy0xLjA0Ny4zNS0uODE2LjI1Mi0xLjg3OS41MjMtMi43MS41MjMtLjg0NyAwLTEuNTQ4LS4yOC0yLjE1OC0uNTI1bC0uMDI4LS4wMUM3LjY4IDguNzEgNy4xNCA4LjUgNi41IDguNWMtLjcgMC0xLjYzOC4yMy0yLjQzNy40NzdBMTkuNjI2IDE5LjYyNiAwIDAgMCAzIDkuMzQyVjE1LjVhLjUuNSAwIDAgMS0xIDBWLjVhLjUuNSAwIDAgMSAxIDB2LjI4MmMuMjI2LS4wNzkuNDk2LS4xNy43OS0uMjZDNC42MDYuMjcyIDUuNjcgMCA2LjUgMGMuODQgMCAxLjUyNC4yNzcgMi4xMjEuNTE5bC4wNDMuMDE4QzkuMjg2Ljc4OCA5LjgyOCAxIDEwLjUgMWMuNyAwIDEuNjM4LS4yMyAyLjQzNy0uNDc3YTE5LjU4NyAxOS41ODcgMCAwIDAgMS4zNDktLjQ3NmwuMDE5LS4wMDcuMDA0LS4wMDJoLjAwMU0xNCAxLjIyMWMtLjIyLjA3OC0uNDguMTY3LS43NjYuMjU1LS44MS4yNTItMS44NzIuNTIzLTIuNzM0LjUyMy0uODg2IDAtMS41OTItLjI4Ni0yLjIwMy0uNTM0bC0uMDA4LS4wMDNDNy42NjIgMS4yMSA3LjEzOSAxIDYuNSAxYy0uNjY5IDAtMS42MDYuMjI5LTIuNDE1LjQ3OEEyMS4yOTQgMjEuMjk0IDAgMCAwIDMgMS44NDV2Ni40MzNjLjIyLS4wNzguNDgtLjE2Ny43NjYtLjI1NUM0LjU3NiA3Ljc3IDUuNjM4IDcuNSA2LjUgNy41Yy44NDcgMCAxLjU0OC4yOCAyLjE1OC41MjVsLjAyOC4wMUM5LjMyIDguMjkgOS44NiA4LjUgMTAuNSA4LjVjLjY2OCAwIDEuNjA2LS4yMjkgMi40MTUtLjQ3OEEyMS4zMTcgMjEuMzE3IDAgMCAwIDE0IDcuNjU1VjEuMjIyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0Zsb3dlcjEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4xNzQgMS4xODRhMiAyIDAgMCAxIDMuNjUyIDBBMiAyIDAgMCAxIDEyLjk5IDMuMDFhMiAyIDAgMCAxIDEuODI2IDMuMTY0IDIgMiAwIDAgMSAwIDMuNjUyIDIgMiAwIDAgMS0xLjgyNiAzLjE2NCAyIDIgMCAwIDEtMy4xNjQgMS44MjYgMiAyIDAgMCAxLTMuNjUyIDBBMiAyIDAgMCAxIDMuMDEgMTIuOTlhMiAyIDAgMCAxLTEuODI2LTMuMTY0IDIgMiAwIDAgMSAwLTMuNjUyQTIgMiAwIDAgMSAzLjAxIDMuMDFhMiAyIDAgMCAxIDMuMTY0LTEuODI2ek04IDFhMSAxIDAgMCAwLS45OTggMS4wM2wuMDEuMDkxYy4wMTIuMDc3LjAyOS4xNzYuMDU0LjI5Ni4wNDkuMjQxLjEyMi41NDIuMjEzLjg4Ny4xODIuNjg4LjQyOCAxLjUxMy42NzYgMi4zMTRMOCA1Ljc2MmwuMDQ1LS4xNDRjLjI0OC0uOC40OTQtMS42MjYuNjc2LTIuMzE0LjA5MS0uMzQ1LjE2NC0uNjQ2LjIxMy0uODg3YTQuOTk3IDQuOTk3IDAgMCAwIC4wNjQtLjM4Nkw5IDJhMSAxIDAgMCAwLTEtMXpNMiA5bC4wMy0uMDAyLjA5MS0uMDFhNC45OSA0Ljk5IDAgMCAwIC4yOTYtLjA1NGMuMjQxLS4wNDkuNTQyLS4xMjIuODg3LS4yMTNhNjAuNTkgNjAuNTkgMCAwIDAgMi4zMTQtLjY3Nkw1Ljc2MiA4bC0uMTQ0LS4wNDVhNjAuNTkgNjAuNTkgMCAwIDAtMi4zMTQtLjY3NiAxNi43MDUgMTYuNzA1IDAgMCAwLS44ODctLjIxMyA0Ljk5IDQuOTkgMCAwIDAtLjM4Ni0uMDY0TDIgN2ExIDEgMCAxIDAgMCAyem03IDUtLjAwMi0uMDNhNS4wMDUgNS4wMDUgMCAwIDAtLjA2NC0uMzg2IDE2LjM5OCAxNi4zOTggMCAwIDAtLjIxMy0uODg4IDYwLjU4MiA2MC41ODIgMCAwIDAtLjY3Ni0yLjMxNEw4IDEwLjIzOGwtLjA0NS4xNDRjLS4yNDguOC0uNDk0IDEuNjI2LS42NzYgMi4zMTQtLjA5MS4zNDUtLjE2NC42NDYtLjIxMy44ODdhNC45OTYgNC45OTYgMCAwIDAtLjA2NC4zODZMNyAxNGExIDEgMCAxIDAgMiAwem0tNS42OTYtMi4xMzQuMDI1LS4wMTdhNS4wMDEgNS4wMDEgMCAwIDAgLjMwMy0uMjQ4Yy4xODQtLjE2NC40MDgtLjM3Ny42NjEtLjYyOUE2MC42MTQgNjAuNjE0IDAgMCAwIDUuOTYgOS4yM2wuMTAzLS4xMTEtLjE0Ny4wMzNhNjAuODggNjAuODggMCAwIDAtMi4zNDMuNTcyYy0uMzQ0LjA5My0uNjQuMTgtLjg3NC4yNThhNS4wNjMgNS4wNjMgMCAwIDAtLjM2Ny4xMzhsLS4wMjcuMDE0YTEgMSAwIDEgMCAxIDEuNzMyek00LjUgMTQuMDYyYTEgMSAwIDAgMCAxLjM2Ni0uMzY2bC4wMTQtLjAyN2MuMDEtLjAyLjAyMS0uMDQ4LjAzNi0uMDg0YTUuMDkgNS4wOSAwIDAgMCAuMTAyLS4yODNjLjA3OC0uMjMzLjE2NS0uNTMuMjU4LS44NzRhNjAuNiA2MC42IDAgMCAwIC41NzItMi4zNDNsLjAzMy0uMTQ3LS4xMS4xMDJhNjAuODQ4IDYwLjg0OCAwIDAgMC0xLjc0MyAxLjY2NyAxNy4wNyAxNy4wNyAwIDAgMC0uNjI5LjY2IDUuMDYgNS4wNiAwIDAgMC0uMjQ4LjMwNGwtLjAxNy4wMjVhMSAxIDAgMCAwIC4zNjYgMS4zNjZ6bTkuMTk2LTguMTk2YTEgMSAwIDAgMC0xLTEuNzMybC0uMDI1LjAxN2E0Ljk1MSA0Ljk1MSAwIDAgMC0uMzAzLjI0OCAxNi42OSAxNi42OSAwIDAgMC0uNjYxLjYyOUE2MC43MiA2MC43MiAwIDAgMCAxMC4wNCA2Ljc3bC0uMTAyLjExMS4xNDctLjAzM2E2MC42IDYwLjYgMCAwIDAgMi4zNDItLjU3MmMuMzQ1LS4wOTMuNjQyLS4xOC44NzUtLjI1OGE0Ljk5MyA0Ljk5MyAwIDAgMCAuMzY3LS4xMzguNTMuNTMgMCAwIDAgLjAyNy0uMDE0ek0xMS41IDEuOTM4YTEgMSAwIDAgMC0xLjM2Ni4zNjZsLS4wMTQuMDI3Yy0uMDEuMDItLjAyMS4wNDgtLjAzNi4wODRhNS4wOSA1LjA5IDAgMCAwLS4xMDIuMjgzYy0uMDc4LjIzMy0uMTY1LjUzLS4yNTguODc1YTYwLjYyIDYwLjYyIDAgMCAwLS41NzIgMi4zNDJsLS4wMzMuMTQ3LjExLS4xMDJhNjAuODQ4IDYwLjg0OCAwIDAgMCAxLjc0My0xLjY2N2MuMjUyLS4yNTMuNDY1LS40NzcuNjI5LS42NmE1LjAwMSA1LjAwMSAwIDAgMCAuMjQ4LS4zMDRsLjAxNy0uMDI1YTEgMSAwIDAgMC0uMzY2LTEuMzY2ek0xNCA5YTEgMSAwIDAgMCAwLTJsLS4wMy4wMDJhNC45OTYgNC45OTYgMCAwIDAtLjM4Ni4wNjRjLS4yNDIuMDQ5LS41NDMuMTIyLS44ODguMjEzLS42ODguMTgyLTEuNTEzLjQyOC0yLjMxNC42NzZMMTAuMjM4IDhsLjE0NC4wNDVjLjguMjQ4IDEuNjI2LjQ5NCAyLjMxNC42NzYuMzQ1LjA5MS42NDYuMTY0Ljg4Ny4yMTNhNC45OTYgNC45OTYgMCAwIDAgLjM4Ni4wNjRMMTQgOXpNMS45MzggNC41YTEgMSAwIDAgMCAuMzkzIDEuMzhsLjA4NC4wMzVjLjA3Mi4wMy4xNjYuMDY0LjI4My4xMDMuMjMzLjA3OC41My4xNjUuODc0LjI1OGE2MC44OCA2MC44OCAwIDAgMCAyLjM0My41NzJsLjE0Ny4wMzMtLjEwMy0uMTExYTYwLjU4NCA2MC41ODQgMCAwIDAtMS42NjYtMS43NDIgMTYuNzA1IDE2LjcwNSAwIDAgMC0uNjYtLjYyOSA0Ljk5NiA0Ljk5NiAwIDAgMC0uMzA0LS4yNDhsLS4wMjUtLjAxN2ExIDEgMCAwIDAtMS4zNjYuMzY2em0yLjE5Ni0xLjE5Ni4wMTcuMDI1YTQuOTk2IDQuOTk2IDAgMCAwIC4yNDguMzAzYy4xNjQuMTg0LjM3Ny40MDguNjI5LjY2MUE2MC41OTcgNjAuNTk3IDAgMCAwIDYuNzcgNS45NmwuMTExLjEwMi0uMDMzLS4xNDdhNjAuNjAyIDYwLjYwMiAwIDAgMC0uNTcyLTIuMzQyYy0uMDkzLS4zNDUtLjE4LS42NDItLjI1OC0uODc1YTUuMDA2IDUuMDA2IDAgMCAwLS4xMzgtLjM2N2wtLjAxNC0uMDI3YTEgMSAwIDEgMC0xLjczMiAxem05LjkyOCA4LjE5NmExIDEgMCAwIDAtLjM2Ni0xLjM2NmwtLjAyNy0uMDE0YTUgNSAwIDAgMC0uMzY3LS4xMzhjLS4yMzMtLjA3OC0uNTMtLjE2NS0uODc1LS4yNThhNjAuNjE5IDYwLjYxOSAwIDAgMC0yLjM0Mi0uNTcybC0uMTQ3LS4wMzMuMTAyLjExMWE2MC43MyA2MC43MyAwIDAgMCAxLjY2NyAxLjc0MmMuMjUzLjI1Mi40NzcuNDY1LjY2LjYyOWE0Ljk0NiA0Ljk0NiAwIDAgMCAuMzA0LjI0OGwuMDI1LjAxN2ExIDEgMCAwIDAgMS4zNjYtLjM2NnptLTMuOTI4IDIuMTk2YTEgMSAwIDAgMCAxLjczMi0xbC0uMDE3LS4wMjVhNS4wNjUgNS4wNjUgMCAwIDAtLjI0OC0uMzAzIDE2LjcwNSAxNi43MDUgMCAwIDAtLjYyOS0uNjYxQTYwLjQ2MiA2MC40NjIgMCAwIDAgOS4yMyAxMC4wNGwtLjExMS0uMTAyLjAzMy4xNDdhNjAuNiA2MC42IDAgMCAwIC41NzIgMi4zNDJjLjA5My4zNDUuMTguNjQyLjI1OC44NzVhNC45ODUgNC45ODUgMCAwIDAgLjEzOC4zNjcuNTc1LjU3NSAwIDAgMCAuMDE0LjAyN3pNOCA5LjVhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRmxvd2VyMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YTQgNCAwIDAgMCA0LTQgNCA0IDAgMCAwIDAtOCA0IDQgMCAwIDAtOCAwIDQgNCAwIDEgMCAwIDggNCA0IDAgMCAwIDQgNHptMy0xMmMwIC4wNzMtLjAxLjE1NS0uMDMuMjQ3LS41NDQuMjQxLTEuMDkxLjYzOC0xLjU5OCAxLjA4NEEyLjk4NyAyLjk4NyAwIDAgMCA4IDVjLS40OTQgMC0uOTYuMTItMS4zNzIuMzMxLS41MDctLjQ0Ni0xLjA1NC0uODQzLTEuNTk3LTEuMDg0QTEuMTE3IDEuMTE3IDAgMCAxIDUgNGEzIDMgMCAwIDEgNiAwem0tLjgxMiA2LjA1MkEyLjk5IDIuOTkgMCAwIDAgMTEgOGEyLjk5IDIuOTkgMCAwIDAtLjgxMi0yLjA1MmMuMjE1LS4xOC40MzItLjM0Ni42NDctLjQ4N0MxMS4zNCA1LjEzMSAxMS43MzIgNSAxMiA1YTMgMyAwIDEgMSAwIDZjLS4yNjggMC0uNjYtLjEzLTEuMTY1LS40NjFhNi44MzMgNi44MzMgMCAwIDEtLjY0Ny0uNDg3em0tMy41Ni42MTdhMy4wMDEgMy4wMDEgMCAwIDAgMi43NDQgMGMuNTA3LjQ0NiAxLjA1NC44NDIgMS41OTggMS4wODQuMDIuMDkxLjAzLjE3NC4wMy4yNDdhMyAzIDAgMSAxLTYgMGMwLS4wNzMuMDEtLjE1NS4wMy0uMjQ3LjU0NC0uMjQyIDEuMDkxLS42MzggMS41OTgtMS4wODR6bS0uODE2LTQuNzIxQTIuOTkgMi45OSAwIDAgMCA1IDhjMCAuNzk0LjMwOCAxLjUxNi44MTIgMi4wNTJhNi44MyA2LjgzIDAgMCAxLS42NDcuNDg3QzQuNjYgMTAuODY5IDQuMjY4IDExIDQgMTFhMyAzIDAgMCAxIDAtNmMuMjY4IDAgLjY2LjEzIDEuMTY1LjQ2MS4yMTUuMTQxLjQzMi4zMDYuNjQ3LjQ4N3pNOCA5YTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGbG93ZXIzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQyNCA4Yy40MzctLjA1Mi44MTEtLjEzNiAxLjA0LS4yNjhhMiAyIDAgMCAwLTItMy40NjRjLS4yMjkuMTMyLS40ODkuNDE0LS43NTIuNzY3QzkuODg2IDQuNjMgMTAgNC4yNjQgMTAgNGEyIDIgMCAxIDAtNCAwYzAgLjI2NC4xMTQuNjMuMjg4IDEuMDM1LS4yNjMtLjM1My0uNTIzLS42MzUtLjc1Mi0uNzY3YTIgMiAwIDAgMC0yIDMuNDY0Yy4yMjkuMTMyLjYwMy4yMTYgMS4wNC4yNjgtLjQzNy4wNTItLjgxMS4xMzYtMS4wNC4yNjhhMiAyIDAgMSAwIDIgMy40NjRjLjIyOS0uMTMyLjQ4OS0uNDE0Ljc1Mi0uNzY3QzYuMTE0IDExLjM3IDYgMTEuNzM2IDYgMTJhMiAyIDAgMSAwIDQgMGMwLS4yNjQtLjExNC0uNjMtLjI4OC0xLjAzNS4yNjMuMzUzLjUyMy42MzUuNzUyLjc2N2EyIDIgMCAxIDAgMi0zLjQ2NGMtLjIyOS0uMTMyLS42MDMtLjIxNi0xLjA0LS4yNjh6TTkgNGExLjQ2OCAxLjQ2OCAwIDAgMS0uMDQ1LjIwNWMtLjAzOS4xMzItLjEuMjk1LS4xODMuNDg0YTEyLjg4IDEyLjg4IDAgMCAxLS42MzcgMS4yMjNMOCA2LjE0MmEyMS43MyAyMS43MyAwIDAgMS0uMTM1LS4yMyAxMi44OCAxMi44OCAwIDAgMS0uNjM3LTEuMjIzIDQuMjE2IDQuMjE2IDAgMCAxLS4xODMtLjQ4NEExLjQ3MyAxLjQ3MyAwIDAgMSA3IDRhMSAxIDAgMSAxIDIgMHpNMy42NyA1LjVhMSAxIDAgMCAxIDEuMzY2LS4zNjYgMS40NzIgMS40NzIgMCAwIDEgLjE1Ni4xNDJjLjA5NC4xLjIwNC4yMzMuMzI2LjQuMjQ1LjMzMy41MDIuNzQ3Ljc0MiAxLjE2M2wuMTMuMjMyYTIxLjg2IDIxLjg2IDAgMCAxLS4yNjUuMDAyIDEyLjg4IDEyLjg4IDAgMCAxLTEuMzc5LS4wNiA0LjIxNCA0LjIxNCAwIDAgMS0uNTEtLjA4MyAxLjQ3IDEuNDcgMCAwIDEtLjItLjA2NEExIDEgMCAwIDEgMy42NyA1LjV6bTEuMzY2IDUuMzY2YTEgMSAwIDAgMS0xLTEuNzMyYy4wMDEgMCAuMDE2LS4wMDguMDQ3LS4wMi4wMzctLjAxMy4wODctLjAyOC4xNTMtLjA0NC4xMzQtLjAzMi4zMDUtLjA2LjUxLS4wODNhMTIuODggMTIuODggMCAwIDEgMS4zNzktLjA2Yy4wOSAwIC4xNzggMCAuMjY2LjAwMmEyMS44MiAyMS44MiAwIDAgMS0uMTMxLjIzMmMtLjI0LjQxNi0uNDk3LjgzLS43NDIgMS4xNjNhNC4xIDQuMSAwIDAgMS0uMzI3LjQgMS40ODMgMS40ODMgMCAwIDEtLjE1NS4xNDJ6TTkgMTJhMSAxIDAgMCAxLTIgMCAxLjQ3NiAxLjQ3NiAwIDAgMSAuMDQ1LS4yMDZjLjAzOS0uMTMxLjEtLjI5NC4xODMtLjQ4My4xNjYtLjM3OC4zOTYtLjgwOC42MzctMS4yMjNMOCA5Ljg1OGwuMTM1LjIzYy4yNDEuNDE1LjQ3Ljg0NS42MzcgMS4yMjMuMDgzLjE5LjE0NC4zNTIuMTgzLjQ4NEExLjMzOCAxLjMzOCAwIDAgMSA5IDEyem0zLjMzLTYuNWExIDEgMCAwIDEtLjM2NiAxLjM2NiAxLjQ3OCAxLjQ3OCAwIDAgMS0uMi4wNjRjLS4xMzQuMDMyLS4zMDUuMDYtLjUxLjA4My0uNDEyLjA0NS0uODk4LjA2MS0xLjM3OS4wNi0uMDkgMC0uMTc4IDAtLjI2Ni0uMDAybC4xMzEtLjIzMmMuMjQtLjQxNi40OTctLjgzLjc0Mi0xLjE2M2E0LjEgNC4xIDAgMCAxIC4zMjctLjRjLjA0Ni0uMDUuMDg1LS4wODYuMTE0LS4xMS4wMjYtLjAyMi4wNC0uMDMuMDQxLS4wMzJhMSAxIDAgMCAxIDEuMzY2LjM2NnptLTEuMzY2IDUuMzY2YTEuNDk0IDEuNDk0IDAgMCAxLS4xNTUtLjE0MSA0LjIyNSA0LjIyNSAwIDAgMS0uMzI3LS40QTEyLjg4IDEyLjg4IDAgMCAxIDkuNzQgOS4xNmEyMiAyMiAwIDAgMS0uMTMtLjIzMmwuMjY1LS4wMDJjLjQ4LS4wMDEuOTY3LjAxNSAxLjM3OS4wNi4yMDUuMDIzLjM3Ni4wNTEuNTEuMDgzLjA2Ni4wMTYuMTE2LjAzMS4xNTMuMDQ0bC4wNDguMDJhMSAxIDAgMSAxLTEgMS43MzJ6TTggOWExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRm9sZGVyQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtLjUgMyAuMDQuODdhMS45OSAxLjk5IDAgMCAwLS4zNDIgMS4zMTFsLjYzNyA3QTIgMiAwIDAgMCAyLjgyNiAxNEg5di0xSDIuODI2YTEgMSAwIDAgMS0uOTk1LS45MWwtLjYzNy03QTEgMSAwIDAgMSAyLjE5IDRoMTEuNjJhMSAxIDAgMCAxIC45OTYgMS4wOUwxNC41NCA4aDEuMDA1bC4yNTYtMi44MTlBMiAyIDAgMCAwIDEzLjgxIDNIOS44MjhhMiAyIDAgMCAxLTEuNDE0LS41ODZsLS44MjgtLjgyOEEyIDIgMCAwIDAgNi4xNzIgMUgyLjVhMiAyIDAgMCAwLTIgMnptNS42NzItMWExIDEgMCAwIDEgLjcwNy4yOTNMNy41ODYgM0gyLjE5Yy0uMjQgMC0uNDcuMDQyLS42ODMuMTJMMS41IDIuOThhMSAxIDAgMCAxIDEtLjk4aDMuNjcyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljg1NCAxMC4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDcgMGwtMS41LTEuNWEuNS41IDAgMCAxIC43MDctLjcwOGwxLjE0NiAxLjE0NyAyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGb2xkZXJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODI4IDNoMy45ODJhMiAyIDAgMCAxIDEuOTkyIDIuMTgxbC0uNjM3IDdBMiAyIDAgMCAxIDEzLjE3NCAxNEgyLjgyNWEyIDIgMCAwIDEtMS45OTEtMS44MTlsLS42MzctN2ExLjk5IDEuOTkgMCAwIDEgLjM0Mi0xLjMxTC41IDNhMiAyIDAgMCAxIDItMmgzLjY3MmEyIDIgMCAwIDEgMS40MTQuNTg2bC44MjguODI4QTIgMiAwIDAgMCA5LjgyOCAzem0tOC4zMjIuMTJDMS43MiAzLjA0MiAxLjk1IDMgMi4xOSAzaDUuMzk2bC0uNzA3LS43MDdBMSAxIDAgMCAwIDYuMTcyIDJIMi41YTEgMSAwIDAgMC0xIC45ODFsLjAwNi4xMzl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRm9sZGVyTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtLjUgMyAuMDQuODdhMS45OSAxLjk5IDAgMCAwLS4zNDIgMS4zMTFsLjYzNyA3QTIgMiAwIDAgMCAyLjgyNiAxNEg5di0xSDIuODI2YTEgMSAwIDAgMS0uOTk1LS45MWwtLjYzNy03QTEgMSAwIDAgMSAyLjE5IDRoMTEuNjJhMSAxIDAgMCAxIC45OTYgMS4wOUwxNC41NCA4aDEuMDA1bC4yNTYtMi44MTlBMiAyIDAgMCAwIDEzLjgxIDNIOS44MjhhMiAyIDAgMCAxLTEuNDE0LS41ODZsLS44MjgtLjgyOEEyIDIgMCAwIDAgNi4xNzIgMUgyLjVhMiAyIDAgMCAwLTIgMnptNS42NzItMWExIDEgMCAwIDEgLjcwNy4yOTNMNy41ODYgM0gyLjE5Yy0uMjQgMC0uNDcuMDQyLS42ODMuMTJMMS41IDIuOThhMSAxIDAgMCAxIDEtLjk4aDMuNjcyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDExLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAxIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRm9sZGVyUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0uNSAzIC4wNC44N2ExLjk5IDEuOTkgMCAwIDAtLjM0MiAxLjMxMWwuNjM3IDdBMiAyIDAgMCAwIDIuODI2IDE0SDl2LTFIMi44MjZhMSAxIDAgMCAxLS45OTUtLjkxbC0uNjM3LTdBMSAxIDAgMCAxIDIuMTkgNGgxMS42MmExIDEgMCAwIDEgLjk5NiAxLjA5TDE0LjU0IDhoMS4wMDVsLjI1Ni0yLjgxOUEyIDIgMCAwIDAgMTMuODEgM0g5LjgyOGEyIDIgMCAwIDEtMS40MTQtLjU4NmwtLjgyOC0uODI4QTIgMiAwIDAgMCA2LjE3MiAxSDIuNWEyIDIgMCAwIDAtMiAyem01LjY3Mi0xYTEgMSAwIDAgMSAuNzA3LjI5M0w3LjU4NiAzSDIuMTljLS4yNCAwLS40Ny4wNDItLjY4My4xMkwxLjUgMi45OGExIDEgMCAwIDEgMS0uOThoMy42NzJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAxMGEuNS41IDAgMCAxIC41LjVWMTJoMS41YS41LjUgMCAxIDEgMCAxSDE0djEuNWEuNS41IDAgMSAxLTEgMFYxM2gtMS41YS41LjUgMCAwIDEgMC0xSDEzdi0xLjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGb2xkZXJTeW1saW5rRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy44MSAzSDkuODI4YTIgMiAwIDAgMS0xLjQxNC0uNTg2bC0uODI4LS44MjhBMiAyIDAgMCAwIDYuMTcyIDFIMi41YTIgMiAwIDAgMC0yIDJsLjA0Ljg3YTEuOTkgMS45OSAwIDAgMC0uMzQyIDEuMzExbC42MzcgN0EyIDIgMCAwIDAgMi44MjYgMTRoMTAuMzQ4YTIgMiAwIDAgMCAxLjk5MS0xLjgxOWwuNjM3LTdBMiAyIDAgMCAwIDEzLjgxIDN6TTIuMTkgM2MtLjI0IDAtLjQ3LjA0Mi0uNjgzLjEyTDEuNSAyLjk4YTEgMSAwIDAgMSAxLS45OGgzLjY3MmExIDEgMCAwIDEgLjcwNy4yOTNMNy41ODYgM0gyLjE5em05LjYwOCA1LjI3MS0zLjE4MiAxLjk3Yy0uMjcuMTY2LS42MTYtLjAzNi0uNjE2LS4zNzJWOS4xcy0yLjU3MS0uMy00IDIuNGMuNTcxLTQuOCAzLjE0My00LjggNC00Ljh2LS43NjljMC0uMzM2LjM0Ni0uNTM4LjYxNi0uMzcxbDMuMTgyIDEuOTY5Yy4yNy4xNjYuMjcuNTc2IDAgLjc0MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGb2xkZXJTeW1saW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjc5OCA4LjI3MS0zLjE4MiAxLjk3Yy0uMjcuMTY2LS42MTYtLjAzNi0uNjE2LS4zNzJWOS4xcy0yLjU3MS0uMy00IDIuNGMuNTcxLTQuOCAzLjE0My00LjggNC00Ljh2LS43NjljMC0uMzM2LjM0Ni0uNTM4LjYxNi0uMzcxbDMuMTgyIDEuOTY5Yy4yNy4xNjYuMjcuNTc2IDAgLjc0MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0uNSAzIC4wNC44N2ExLjk5IDEuOTkgMCAwIDAtLjM0MiAxLjMxMWwuNjM3IDdBMiAyIDAgMCAwIDIuODI2IDE0aDEwLjM0OGEyIDIgMCAwIDAgMS45OTEtMS44MTlsLjYzNy03QTIgMiAwIDAgMCAxMy44MSAzSDkuODI4YTIgMiAwIDAgMS0xLjQxNC0uNTg2bC0uODI4LS44MjhBMiAyIDAgMCAwIDYuMTcyIDFIMi41YTIgMiAwIDAgMC0yIDJ6bS42OTQgMi4wOUExIDEgMCAwIDEgMi4xOSA0aDExLjYyYTEgMSAwIDAgMSAuOTk2IDEuMDlsLS42MzYgN2ExIDEgMCAwIDEtLjk5Ni45MUgyLjgyNmExIDEgMCAwIDEtLjk5NS0uOTFsLS42MzctN3pNNi4xNzIgMmExIDEgMCAwIDEgLjcwNy4yOTNMNy41ODYgM0gyLjE5Yy0uMjQgMC0uNDcuMDQyLS42ODMuMTJMMS41IDIuOThhMSAxIDAgMCAxIDEtLjk4aDMuNjcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZvbGRlclggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjU0IDMuODcuNSAzYTIgMiAwIDAgMSAyLTJoMy42NzJhMiAyIDAgMCAxIDEuNDE0LjU4NmwuODI4LjgyOEEyIDIgMCAwIDAgOS44MjggM2gzLjk4MmEyIDIgMCAwIDEgMS45OTIgMi4xODFMMTUuNTQ2IDhIMTQuNTRsLjI2NS0yLjkxQTEgMSAwIDAgMCAxMy44MSA0SDIuMTlhMSAxIDAgMCAwLS45OTYgMS4wOWwuNjM3IDdhMSAxIDAgMCAwIC45OTUuOTFIOXYxSDIuODI2YTIgMiAwIDAgMS0xLjk5MS0xLjgxOWwtLjYzNy03YTEuOTkgMS45OSAwIDAgMSAuMzQyLTEuMzF6bTYuMzM5LTEuNTc3QTEgMSAwIDAgMCA2LjE3MiAySDIuNWExIDEgMCAwIDAtMSAuOTgxbC4wMDYuMTM5QzEuNzIgMy4wNDIgMS45NSAzIDIuMTkgM2g1LjM5NmwtLjcwNy0uNzA3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjg1NCAxMC4xNDZhLjUuNSAwIDAgMC0uNzA3LjcwOEwxMi4yOTMgMTJsLTEuMTQ2IDEuMTQ2YS41LjUgMCAwIDAgLjcwNy43MDhMMTMgMTIuNzA3bDEuMTQ2IDEuMTQ3YS41LjUgMCAwIDAgLjcwOC0uNzA4TDEzLjcwNyAxMmwxLjE0Ny0xLjE0NmEuNS41IDAgMCAwLS43MDctLjcwOEwxMyAxMS4yOTNsLTEuMTQ2LTEuMTQ3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZvbGRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uNTQgMy44Ny41IDNhMiAyIDAgMCAxIDItMmgzLjY3MmEyIDIgMCAwIDEgMS40MTQuNTg2bC44MjguODI4QTIgMiAwIDAgMCA5LjgyOCAzaDMuOTgyYTIgMiAwIDAgMSAxLjk5MiAyLjE4MWwtLjYzNyA3QTIgMiAwIDAgMSAxMy4xNzQgMTRIMi44MjZhMiAyIDAgMCAxLTEuOTkxLTEuODE5bC0uNjM3LTdhMS45OSAxLjk5IDAgMCAxIC4zNDItMS4zMXpNMi4xOSA0YTEgMSAwIDAgMC0uOTk2IDEuMDlsLjYzNyA3YTEgMSAwIDAgMCAuOTk1LjkxaDEwLjM0OGExIDEgMCAwIDAgLjk5NS0uOTFsLjYzNy03QTEgMSAwIDAgMCAxMy44MSA0SDIuMTl6bTQuNjktMS43MDdBMSAxIDAgMCAwIDYuMTcyIDJIMi41YTEgMSAwIDAgMC0xIC45ODFsLjAwNi4xMzlDMS43MiAzLjA0MiAxLjk1IDMgMi4xOSAzaDUuMzk2bC0uNzA3LS43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRm9sZGVyMk9wZW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAzLjVBMS41IDEuNSAwIDAgMSAyLjUgMmgyLjc2NGMuOTU4IDAgMS43Ni41NiAyLjMxMSAxLjE4NEM3Ljk4NSAzLjY0OCA4LjQ4IDQgOSA0aDQuNUExLjUgMS41IDAgMCAxIDE1IDUuNXYuNjRjLjU3LjI2NS45NC44NzYuODU2IDEuNTQ2bC0uNjQgNS4xMjRBMi41IDIuNSAwIDAgMSAxMi43MzMgMTVIMy4yNjZhMi41IDIuNSAwIDAgMS0yLjQ4MS0yLjE5bC0uNjQtNS4xMjRBMS41IDEuNSAwIDAgMSAxIDYuMTRWMy41ek0yIDZoMTJ2LS41YS41LjUgMCAwIDAtLjUtLjVIOWMtLjk2NCAwLTEuNzEtLjYyOS0yLjE3NC0xLjE1NEM2LjM3NCAzLjMzNCA1LjgyIDMgNS4yNjQgM0gyLjVhLjUuNSAwIDAgMC0uNS41VjZ6bS0uMzY3IDFhLjUuNSAwIDAgMC0uNDk2LjU2MmwuNjQgNS4xMjRBMS41IDEuNSAwIDAgMCAzLjI2NiAxNGg5LjQ2OGExLjUgMS41IDAgMCAwIDEuNDg5LTEuMzE0bC42NC01LjEyNEEuNS41IDAgMCAwIDE0LjM2NyA3SDEuNjMzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZvbGRlcjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAzLjVBMS41IDEuNSAwIDAgMSAyLjUgMmgyLjc2NGMuOTU4IDAgMS43Ni41NiAyLjMxMSAxLjE4NEM3Ljk4NSAzLjY0OCA4LjQ4IDQgOSA0aDQuNUExLjUgMS41IDAgMCAxIDE1IDUuNXY3YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTFBMS41IDEuNSAwIDAgMSAxIDEyLjV2LTl6TTIuNSAzYS41LjUgMCAwIDAtLjUuNVY2aDEydi0uNWEuNS41IDAgMCAwLS41LS41SDljLS45NjQgMC0xLjcxLS42MjktMi4xNzQtMS4xNTRDNi4zNzQgMy4zMzQgNS44MiAzIDUuMjY0IDNIMi41ek0xNCA3SDJ2NS41YS41LjUgMCAwIDAgLjUuNWgxMWEuNS41IDAgMCAwIC41LS41Vjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRm9udHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMjU4IDNoLTguNTFsLS4wODMgMi40NmguNDc5Yy4yNi0xLjU0NC43NTgtMS43ODMgMi42OTMtMS44NDVsLjQyNC0uMDEzdjcuODI3YzAgLjY2My0uMTQ0LjgyLTEuMy45MjN2LjUyaDQuMDgydi0uNTJjLTEuMTYyLS4xMDMtMS4zMDYtLjI2LTEuMzA2LS45MjNWMy42MDJsLjQzMS4wMTNjMS45MzQuMDYyIDIuNDM0LjMwMSAyLjY5MyAxLjg0NmguNDc5TDEyLjI1OCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ZvcndhcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTkuNzcgMTIuMTEgNC4wMTItMi45NTNhLjY0Ny42NDcgMCAwIDAgMC0xLjExNEw5Ljc3MSA1LjA5YS42NDQuNjQ0IDAgMCAwLS45NzEuNTU3VjYuNjVIMnYzLjloNi44djEuMDAzYzAgLjUwNS41NDUuODA4Ljk3LjU1N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNTAyIDUuNTEzYS4xNDQuMTQ0IDAgMCAwLS4yMDIuMTM0VjYuNjVhLjUuNSAwIDAgMS0uNS41SDIuNXYyLjloNi4zYS41LjUgMCAwIDEgLjUuNXYxLjAwM2MwIC4xMDguMTEuMTc2LjIwMi4xMzRsMy45ODQtMi45MzNhLjUxLjUxIDAgMCAxIC4wNDItLjAyOC4xNDcuMTQ3IDAgMCAwIDAtLjI1Mi41MS41MSAwIDAgMS0uMDQyLS4wMjhMOS41MDIgNS41MTN6TTguMyA1LjY0N2ExLjE0NCAxLjE0NCAwIDAgMSAxLjc2Ny0uOTZsMy45OTQgMi45NGExLjE0NyAxLjE0NyAwIDAgMSAwIDEuOTQ2bC0zLjk5NCAyLjk0YTEuMTQ0IDEuMTQ0IDAgMCAxLTEuNzY3LS45NnYtLjUwM0gyYS41LjUgMCAwIDEtLjUtLjV2LTMuOWEuNS41IDAgMCAxIC41LS41aDYuM3YtLjUwM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGcm9udCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtMkgyYTIgMiAwIDAgMS0yLTJWMnptNSAxMHYyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjZhMSAxIDAgMCAwLTEtMWgtMnY1YTIgMiAwIDAgMS0yIDJINXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGdWxsc2NyZWVuRXhpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMGEuNS41IDAgMCAxIC41LjV2NEExLjUgMS41IDAgMCAxIDQuNSA2aC00YS41LjUgMCAwIDEgMC0xaDRhLjUuNSAwIDAgMCAuNS0uNXYtNGEuNS41IDAgMCAxIC41LS41em01IDBhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMCAuNS41aDRhLjUuNSAwIDAgMSAwIDFoLTRBMS41IDEuNSAwIDAgMSAxMCA0LjV2LTRhLjUuNSAwIDAgMSAuNS0uNXpNMCAxMC41YS41LjUgMCAwIDEgLjUtLjVoNEExLjUgMS41IDAgMCAxIDYgMTEuNXY0YS41LjUgMCAwIDEtMSAwdi00YS41LjUgMCAwIDAtLjUtLjVoLTRhLjUuNSAwIDAgMS0uNS0uNXptMTAgMWExLjUgMS41IDAgMCAxIDEuNS0xLjVoNGEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAwLS41LjV2NGEuNS41IDAgMCAxLTEgMHYtNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGdWxsc2NyZWVuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxYS41LjUgMCAwIDAtLjUuNXY0YS41LjUgMCAwIDEtMSAwdi00QTEuNSAxLjUgMCAwIDEgMS41IDBoNGEuNS41IDAgMCAxIDAgMWgtNHpNMTAgLjVhLjUuNSAwIDAgMSAuNS0uNWg0QTEuNSAxLjUgMCAwIDEgMTYgMS41djRhLjUuNSAwIDAgMS0xIDB2LTRhLjUuNSAwIDAgMC0uNS0uNWgtNGEuNS41IDAgMCAxLS41LS41ek0uNSAxMGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAwIC41LjVoNGEuNS41IDAgMCAxIDAgMWgtNEExLjUgMS41IDAgMCAxIDAgMTQuNXYtNGEuNS41IDAgMCAxIC41LS41em0xNSAwYS41LjUgMCAwIDEgLjUuNXY0YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtNGEuNS41IDAgMCAxIDAtMWg0YS41LjUgMCAwIDAgLjUtLjV2LTRhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNGdW5uZWxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxLjVBLjUuNSAwIDAgMSAyIDFoMTJhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uMTI4LjMzNEwxMCA4LjY5MlYxMy41YS41LjUgMCAwIDEtLjM0Mi40NzRsLTMgMUEuNS41IDAgMCAxIDYgMTQuNVY4LjY5MkwxLjYyOCAzLjgzNEEuNS41IDAgMCAxIDEuNSAzLjV2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzRnVubmVsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxLjVBLjUuNSAwIDAgMSAyIDFoMTJhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0uMTI4LjMzNEwxMCA4LjY5MlYxMy41YS41LjUgMCAwIDEtLjM0Mi40NzRsLTMgMUEuNS41IDAgMCAxIDYgMTQuNVY4LjY5MkwxLjYyOCAzLjgzNEEuNS41IDAgMCAxIDEuNSAzLjV2LTJ6bTEgLjV2MS4zMDhsNC4zNzIgNC44NThBLjUuNSAwIDAgMSA3IDguNXY1LjMwNmwyLS42NjZWOC41YS41LjUgMCAwIDEgLjEyOC0uMzM0TDEzLjUgMy4zMDhWMmgtMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2VhckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40MDUgMS4wNWMtLjQxMy0xLjQtMi4zOTctMS40LTIuODEgMGwtLjEuMzRhMS40NjQgMS40NjQgMCAwIDEtMi4xMDUuODcybC0uMzEtLjE3Yy0xLjI4My0uNjk4LTIuNjg2LjcwNS0xLjk4NyAxLjk4N2wuMTY5LjMxMWMuNDQ2LjgyLjAyMyAxLjg0MS0uODcyIDIuMTA1bC0uMzQuMWMtMS40LjQxMy0xLjQgMi4zOTcgMCAyLjgxbC4zNC4xYTEuNDY0IDEuNDY0IDAgMCAxIC44NzIgMi4xMDVsLS4xNy4zMWMtLjY5OCAxLjI4My43MDUgMi42ODYgMS45ODcgMS45ODdsLjMxMS0uMTY5YTEuNDY0IDEuNDY0IDAgMCAxIDIuMTA1Ljg3MmwuMS4zNGMuNDEzIDEuNCAyLjM5NyAxLjQgMi44MSAwbC4xLS4zNGExLjQ2NCAxLjQ2NCAwIDAgMSAyLjEwNS0uODcybC4zMS4xN2MxLjI4My42OTggMi42ODYtLjcwNSAxLjk4Ny0xLjk4N2wtLjE2OS0uMzExYTEuNDY0IDEuNDY0IDAgMCAxIC44NzItMi4xMDVsLjM0LS4xYzEuNC0uNDEzIDEuNC0yLjM5NyAwLTIuODFsLS4zNC0uMWExLjQ2NCAxLjQ2NCAwIDAgMS0uODcyLTIuMTA1bC4xNy0uMzFjLjY5OC0xLjI4My0uNzA1LTIuNjg2LTEuOTg3LTEuOTg3bC0uMzExLjE2OWExLjQ2NCAxLjQ2NCAwIDAgMS0yLjEwNS0uODcybC0uMS0uMzR6TTggMTAuOTNhMi45MjkgMi45MjkgMCAxIDEgMC01Ljg2IDIuOTI5IDIuOTI5IDAgMCAxIDAgNS44NTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2VhcldpZGVDb25uZWN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wNjguNzI3Yy4yNDMtLjk3IDEuNjItLjk3IDEuODY0IDBsLjA3MS4yODZhLjk2Ljk2IDAgMCAwIDEuNjIyLjQzNGwuMjA1LS4yMTFjLjY5NS0uNzE5IDEuODg4LS4wMyAxLjYxMy45MzFsLS4wOC4yODRhLjk2Ljk2IDAgMCAwIDEuMTg3IDEuMTg3bC4yODMtLjA4MWMuOTYtLjI3NSAxLjY1LjkxOC45MzEgMS42MTNsLS4yMTEuMjA1YS45Ni45NiAwIDAgMCAuNDM0IDEuNjIybC4yODYuMDcxYy45Ny4yNDMuOTcgMS42MiAwIDEuODY0bC0uMjg2LjA3MWEuOTYuOTYgMCAwIDAtLjQzNCAxLjYyMmwuMjExLjIwNWMuNzE5LjY5NS4wMyAxLjg4OC0uOTMxIDEuNjEzbC0uMjg0LS4wOGEuOTYuOTYgMCAwIDAtMS4xODcgMS4xODdsLjA4MS4yODNjLjI3NS45Ni0uOTE4IDEuNjUtMS42MTMuOTMxbC0uMjA1LS4yMTFhLjk2Ljk2IDAgMCAwLTEuNjIyLjQzNGwtLjA3MS4yODZjLS4yNDMuOTctMS42Mi45Ny0xLjg2NCAwbC0uMDcxLS4yODZhLjk2Ljk2IDAgMCAwLTEuNjIyLS40MzRsLS4yMDUuMjExYy0uNjk1LjcxOS0xLjg4OC4wMy0xLjYxMy0uOTMxbC4wOC0uMjg0YS45Ni45NiAwIDAgMC0xLjE4Ni0xLjE4N2wtLjI4NC4wODFjLS45Ni4yNzUtMS42NS0uOTE4LS45MzEtMS42MTNsLjIxMS0uMjA1YS45Ni45NiAwIDAgMC0uNDM0LTEuNjIybC0uMjg2LS4wNzFjLS45Ny0uMjQzLS45Ny0xLjYyIDAtMS44NjRsLjI4Ni0uMDcxYS45Ni45NiAwIDAgMCAuNDM0LTEuNjIybC0uMjExLS4yMDVjLS43MTktLjY5NS0uMDMtMS44ODguOTMxLTEuNjEzbC4yODQuMDhhLjk2Ljk2IDAgMCAwIDEuMTg3LTEuMTg2bC0uMDgxLS4yODRjLS4yNzUtLjk2LjkxOC0xLjY1IDEuNjEzLS45MzFsLjIwNS4yMTFhLjk2Ljk2IDAgMCAwIDEuNjIyLS40MzRsLjA3MS0uMjg2ek0xMi45NzMgOC41SDguMjVsLTIuODM0IDMuNzc5QTQuOTk4IDQuOTk4IDAgMCAwIDEyLjk3MyA4LjV6bTAtMWE0Ljk5OCA0Ljk5OCAwIDAgMC03LjU1Ny0zLjc3OWwyLjgzNCAzLjc4aDQuNzIzek01LjA0OCAzLjk2N2MtLjAzLjAyMS0uMDU4LjA0My0uMDg3LjA2NWwuMDg3LS4wNjV6bS0uNDMxLjM1NUE0Ljk4NCA0Ljk4NCAwIDAgMCAzLjAwMiA4YzAgMS40NTUuNjIyIDIuNzY1IDEuNjE1IDMuNjc4TDcuMzc1IDggNC42MTcgNC4zMjJ6bS4zNDQgNy42NDYuMDg3LjA2NS0uMDg3LS4wNjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2VhcldpZGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC45MzIuNzI3Yy0uMjQzLS45Ny0xLjYyLS45Ny0xLjg2NCAwbC0uMDcxLjI4NmEuOTYuOTYgMCAwIDEtMS42MjIuNDM0bC0uMjA1LS4yMTFjLS42OTUtLjcxOS0xLjg4OC0uMDMtMS42MTMuOTMxbC4wOC4yODRhLjk2Ljk2IDAgMCAxLTEuMTg2IDEuMTg3bC0uMjg0LS4wODFjLS45Ni0uMjc1LTEuNjUuOTE4LS45MzEgMS42MTNsLjIxMS4yMDVhLjk2Ljk2IDAgMCAxLS40MzQgMS42MjJsLS4yODYuMDcxYy0uOTcuMjQzLS45NyAxLjYyIDAgMS44NjRsLjI4Ni4wNzFhLjk2Ljk2IDAgMCAxIC40MzQgMS42MjJsLS4yMTEuMjA1Yy0uNzE5LjY5NS0uMDMgMS44ODguOTMxIDEuNjEzbC4yODQtLjA4YS45Ni45NiAwIDAgMSAxLjE4NyAxLjE4N2wtLjA4MS4yODNjLS4yNzUuOTYuOTE4IDEuNjUgMS42MTMuOTMxbC4yMDUtLjIxMWEuOTYuOTYgMCAwIDEgMS42MjIuNDM0bC4wNzEuMjg2Yy4yNDMuOTcgMS42Mi45NyAxLjg2NCAwbC4wNzEtLjI4NmEuOTYuOTYgMCAwIDEgMS42MjItLjQzNGwuMjA1LjIxMWMuNjk1LjcxOSAxLjg4OC4wMyAxLjYxMy0uOTMxbC0uMDgtLjI4NGEuOTYuOTYgMCAwIDEgMS4xODctMS4xODdsLjI4My4wODFjLjk2LjI3NSAxLjY1LS45MTguOTMxLTEuNjEzbC0uMjExLS4yMDVhLjk2Ljk2IDAgMCAxIC40MzQtMS42MjJsLjI4Ni0uMDcxYy45Ny0uMjQzLjk3LTEuNjIgMC0xLjg2NGwtLjI4Ni0uMDcxYS45Ni45NiAwIDAgMS0uNDM0LTEuNjIybC4yMTEtLjIwNWMuNzE5LS42OTUuMDMtMS44ODgtLjkzMS0xLjYxM2wtLjI4NC4wOGEuOTYuOTYgMCAwIDEtMS4xODctMS4xODZsLjA4MS0uMjg0Yy4yNzUtLjk2LS45MTgtMS42NS0xLjYxMy0uOTMxbC0uMjA1LjIxMWEuOTYuOTYgMCAwIDEtMS42MjItLjQzNEw4LjkzMi43Mjd6TTggMTIuOTk3YTQuOTk4IDQuOTk4IDAgMSAxIDAtOS45OTUgNC45OTggNC45OTggMCAwIDEgMCA5Ljk5NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHZWFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNC43NTRhMy4yNDYgMy4yNDYgMCAxIDAgMCA2LjQ5MiAzLjI0NiAzLjI0NiAwIDAgMCAwLTYuNDkyek01Ljc1NCA4YTIuMjQ2IDIuMjQ2IDAgMSAxIDQuNDkyIDAgMi4yNDYgMi4yNDYgMCAwIDEtNC40OTIgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05Ljc5NiAxLjM0M2MtLjUyNy0xLjc5LTMuMDY1LTEuNzktMy41OTIgMGwtLjA5NC4zMTlhLjg3My44NzMgMCAwIDEtMS4yNTUuNTJsLS4yOTItLjE2Yy0xLjY0LS44OTItMy40MzMuOTAyLTIuNTQgMi41NDFsLjE1OS4yOTJhLjg3My44NzMgMCAwIDEtLjUyIDEuMjU1bC0uMzE5LjA5NGMtMS43OS41MjctMS43OSAzLjA2NSAwIDMuNTkybC4zMTkuMDk0YS44NzMuODczIDAgMCAxIC41MiAxLjI1NWwtLjE2LjI5MmMtLjg5MiAxLjY0LjkwMSAzLjQzNCAyLjU0MSAyLjU0bC4yOTItLjE1OWEuODczLjg3MyAwIDAgMSAxLjI1NS41MmwuMDk0LjMxOWMuNTI3IDEuNzkgMy4wNjUgMS43OSAzLjU5MiAwbC4wOTQtLjMxOWEuODczLjg3MyAwIDAgMSAxLjI1NS0uNTJsLjI5Mi4xNmMxLjY0Ljg5MyAzLjQzNC0uOTAyIDIuNTQtMi41NDFsLS4xNTktLjI5MmEuODczLjg3MyAwIDAgMSAuNTItMS4yNTVsLjMxOS0uMDk0YzEuNzktLjUyNyAxLjc5LTMuMDY1IDAtMy41OTJsLS4zMTktLjA5NGEuODczLjg3MyAwIDAgMS0uNTItMS4yNTVsLjE2LS4yOTJjLjg5My0xLjY0LS45MDItMy40MzMtMi41NDEtMi41NGwtLjI5Mi4xNTlhLjg3My44NzMgMCAwIDEtMS4yNTUtLjUybC0uMDk0LS4zMTl6bS0yLjYzMy4yODNjLjI0Ni0uODM1IDEuNDI4LS44MzUgMS42NzQgMGwuMDk0LjMxOWExLjg3MyAxLjg3MyAwIDAgMCAyLjY5MyAxLjExNWwuMjkxLS4xNmMuNzY0LS40MTUgMS42LjQyIDEuMTg0IDEuMTg1bC0uMTU5LjI5MmExLjg3MyAxLjg3MyAwIDAgMCAxLjExNiAyLjY5MmwuMzE4LjA5NGMuODM1LjI0Ni44MzUgMS40MjggMCAxLjY3NGwtLjMxOS4wOTRhMS44NzMgMS44NzMgMCAwIDAtMS4xMTUgMi42OTNsLjE2LjI5MWMuNDE1Ljc2NC0uNDIgMS42LTEuMTg1IDEuMTg0bC0uMjkxLS4xNTlhMS44NzMgMS44NzMgMCAwIDAtMi42OTMgMS4xMTZsLS4wOTQuMzE4Yy0uMjQ2LjgzNS0xLjQyOC44MzUtMS42NzQgMGwtLjA5NC0uMzE5YTEuODczIDEuODczIDAgMCAwLTIuNjkyLTEuMTE1bC0uMjkyLjE2Yy0uNzY0LjQxNS0xLjYtLjQyLTEuMTg0LTEuMTg1bC4xNTktLjI5MUExLjg3MyAxLjg3MyAwIDAgMCAxLjk0NSA4LjkzbC0uMzE5LS4wOTRjLS44MzUtLjI0Ni0uODM1LTEuNDI4IDAtMS42NzRsLjMxOS0uMDk0QTEuODczIDEuODczIDAgMCAwIDMuMDYgNC4zNzdsLS4xNi0uMjkyYy0uNDE1LS43NjQuNDItMS42IDEuMTg1LTEuMTg0bC4yOTIuMTU5YTEuODczIDEuODczIDAgMCAwIDIuNjkyLTEuMTE1bC4wOTQtLjMxOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHZW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy4xLjdhLjUuNSAwIDAgMSAuNC0uMmg5YS41LjUgMCAwIDEgLjQuMmwyLjk3NiAzLjk3NGMuMTQ5LjE4NS4xNTYuNDUuMDEuNjQ0TDguNCAxNS4zYS41LjUgMCAwIDEtLjggMEwuMSA1LjNhLjUuNSAwIDAgMSAwLS42bDMtNHptMTEuMzg2IDMuNzg1LTEuODA2LTIuNDEtLjc3NiAyLjQxMyAyLjU4Mi0uMDAzem0tMy42MzMuMDA0Ljk2MS0yLjk4OUg0LjE4NmwuOTYzIDIuOTk1IDUuNzA0LS4wMDZ6TTUuNDcgNS40OTUgOCAxMy4zNjZsMi41MzItNy44NzYtNS4wNjIuMDA1em0tMS4zNzEtLjk5OS0uNzgtMi40MjItMS44MTggMi40MjUgMi41OTgtLjAwM3pNMS40OTkgNS41bDUuMTEzIDYuODE3LTIuMTkyLTYuODJMMS41IDUuNXptNy44ODkgNi44MTcgNS4xMjMtNi44My0yLjkyOC4wMDItMi4xOTUgNi44Mjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2VuZGVyQW1iaWd1b3VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS41IDFhLjUuNSAwIDAgMSAwLTFoNGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLTEgMFYxLjcwN2wtMy40NSAzLjQ1QTQgNCAwIDAgMSA4LjUgMTAuOTdWMTNIMTBhLjUuNSAwIDAgMSAwIDFIOC41djEuNWEuNS41IDAgMCAxLTEgMFYxNEg2YS41LjUgMCAwIDEgMC0xaDEuNXYtMi4wM2E0IDQgMCAxIDEgMy40NzEtNi42NDhMMTQuMjkzIDFIMTEuNXptLS45OTcgNC4zNDZhMyAzIDAgMSAwLTUuMDA2IDMuMzA5IDMgMyAwIDAgMCA1LjAwNi0zLjMxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dlbmRlckZlbWFsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAxYTQgNCAwIDEgMCAwIDggNCA0IDAgMCAwIDAtOHpNMyA1YTUgNSAwIDEgMSA1LjUgNC45NzVWMTJoMmEuNS41IDAgMCAxIDAgMWgtMnYyLjVhLjUuNSAwIDAgMS0xIDBWMTNoLTJhLjUuNSAwIDAgMSAwLTFoMlY5Ljk3NUE1IDUgMCAwIDEgMyA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dlbmRlck1hbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuNSAyYS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAuNS41djVhLjUuNSAwIDAgMS0xIDBWMi43MDdMOS44NzEgNi44MzZhNSA1IDAgMSAxLS43MDctLjcwN0wxMy4yOTMgMkg5LjV6TTYgNmE0IDQgMCAxIDAgMCA4IDQgNCAwIDAgMCAwLTh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2VuZGVyVHJhbnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgLjVBLjUuNSAwIDAgMSAuNSAwaDNhLjUuNSAwIDAgMSAwIDFIMS43MDdMMy41IDIuNzkzbC42NDYtLjY0N2EuNS41IDAgMSAxIC43MDguNzA4bC0uNjQ3LjY0Ni44MjIuODIyQTMuOTkgMy45OSAwIDAgMSA4IDNjMS4xOCAwIDIuMjM5LjUxIDIuOTcxIDEuMzIyTDE0LjI5MyAxSDExLjVhLjUuNSAwIDAgMSAwLTFoNGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLTEgMFYxLjcwN2wtMy40NSAzLjQ1QTQgNCAwIDAgMSA4LjUgMTAuOTdWMTNIMTBhLjUuNSAwIDAgMSAwIDFIOC41djEuNWEuNS41IDAgMCAxLTEgMFYxNEg2YS41LjUgMCAwIDEgMC0xaDEuNXYtMi4wM2E0IDQgMCAwIDEtMy4wNS01LjgxNGwtLjk1LS45NDktLjY0Ni42NDdhLjUuNSAwIDEgMS0uNzA4LS43MDhsLjY0Ny0uNjQ2TDEgMS43MDdWMy41YS41LjUgMCAwIDEtMSAwdi0zem01LjQ5IDQuODU2YTMgMyAwIDEgMCA1LjAyIDMuMjg4IDMgMyAwIDAgMC01LjAyLTMuMjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dlb0FsdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNnM2LTUuNjg2IDYtMTBBNiA2IDAgMCAwIDIgNmMwIDQuMzE0IDYgMTAgNiAxMHptMC03YTMgMyAwIDEgMSAwLTYgMyAzIDAgMCAxIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHZW9BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTY2IDguOTRjLS41MjQgMS4wNjItMS4yMzQgMi4xMi0xLjk2IDMuMDdBMzEuNDkzIDMxLjQ5MyAwIDAgMSA4IDE0LjU4YTMxLjQ4MSAzMS40ODEgMCAwIDEtMi4yMDYtMi41N2MtLjcyNi0uOTUtMS40MzYtMi4wMDgtMS45Ni0zLjA3QzMuMzA0IDcuODY3IDMgNi44NjIgMyA2YTUgNSAwIDAgMSAxMCAwYzAgLjg2Mi0uMzA1IDEuODY3LS44MzQgMi45NHpNOCAxNnM2LTUuNjg2IDYtMTBBNiA2IDAgMCAwIDIgNmMwIDQuMzE0IDYgMTAgNiAxMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDhhMiAyIDAgMSAxIDAtNCAyIDIgMCAwIDEgMCA0em0wIDFhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dlb0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQgNGE0IDQgMCAxIDEgNC41IDMuOTY5VjEzLjVhLjUuNSAwIDAgMS0xIDBWNy45N0E0IDQgMCAwIDEgNCAzLjk5OXptMi40OTMgOC41NzRhLjUuNSAwIDAgMS0uNDExLjU3NWMtLjcxMi4xMTgtMS4yOC4yOTUtMS42NTUuNDkzYTEuMzE5IDEuMzE5IDAgMCAwLS4zNy4yNjUuMzAxLjMwMSAwIDAgMC0uMDU3LjA5VjE0bC4wMDIuMDA4YS4xNDcuMTQ3IDAgMCAwIC4wMTYuMDMzLjYxNy42MTcgMCAwIDAgLjE0NS4xNWMuMTY1LjEzLjQzNS4yNy44MTMuMzk1Ljc1MS4yNSAxLjgyLjQxNCAzLjAyNC40MTRzMi4yNzMtLjE2MyAzLjAyNC0uNDE0Yy4zNzgtLjEyNi42NDgtLjI2NS44MTMtLjM5NWEuNjE5LjYxOSAwIDAgMCAuMTQ2LS4xNS4xNDguMTQ4IDAgMCAwIC4wMTUtLjAzM0wxMiAxNHYtLjAwNGEuMzAxLjMwMSAwIDAgMC0uMDU3LS4wOSAxLjMxOCAxLjMxOCAwIDAgMC0uMzctLjI2NGMtLjM3Ni0uMTk4LS45NDMtLjM3NS0xLjY1NS0uNDkzYS41LjUgMCAxIDEgLjE2NC0uOTg2Yy43Ny4xMjcgMS40NTIuMzI4IDEuOTU3LjU5NEMxMi41IDEzIDEzIDEzLjQgMTMgMTRjMCAuNDI2LS4yNi43NTItLjU0NC45NzctLjI5LjIyOC0uNjguNDEzLTEuMTE2LjU1OC0uODc4LjI5My0yLjA1OS40NjUtMy4zNC40NjUtMS4yODEgMC0yLjQ2Mi0uMTcyLTMuMzQtLjQ2NS0uNDM2LS4xNDUtLjgyNi0uMzMtMS4xMTYtLjU1OEMzLjI2IDE0Ljc1MiAzIDE0LjQyNiAzIDE0YzAtLjU5OS41LTEgLjk2MS0xLjI0My41MDUtLjI2NiAxLjE4Ny0uNDY3IDEuOTU3LS41OTRhLjUuNSAwIDAgMSAuNTc1LjQxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMWEzIDMgMCAxIDAgMCA2IDMgMyAwIDAgMCAwLTZ6TTQgNGE0IDQgMCAxIDEgNC41IDMuOTY5VjEzLjVhLjUuNSAwIDAgMS0xIDBWNy45N0E0IDQgMCAwIDEgNCAzLjk5OXptMi40OTMgOC41NzRhLjUuNSAwIDAgMS0uNDExLjU3NWMtLjcxMi4xMTgtMS4yOC4yOTUtMS42NTUuNDkzYTEuMzE5IDEuMzE5IDAgMCAwLS4zNy4yNjUuMzAxLjMwMSAwIDAgMC0uMDU3LjA5VjE0bC4wMDIuMDA4YS4xNDcuMTQ3IDAgMCAwIC4wMTYuMDMzLjYxNy42MTcgMCAwIDAgLjE0NS4xNWMuMTY1LjEzLjQzNS4yNy44MTMuMzk1Ljc1MS4yNSAxLjgyLjQxNCAzLjAyNC40MTRzMi4yNzMtLjE2MyAzLjAyNC0uNDE0Yy4zNzgtLjEyNi42NDgtLjI2NS44MTMtLjM5NWEuNjE5LjYxOSAwIDAgMCAuMTQ2LS4xNS4xNDguMTQ4IDAgMCAwIC4wMTUtLjAzM0wxMiAxNHYtLjAwNGEuMzAxLjMwMSAwIDAgMC0uMDU3LS4wOSAxLjMxOCAxLjMxOCAwIDAgMC0uMzctLjI2NGMtLjM3Ni0uMTk4LS45NDMtLjM3NS0xLjY1NS0uNDkzYS41LjUgMCAxIDEgLjE2NC0uOTg2Yy43Ny4xMjcgMS40NTIuMzI4IDEuOTU3LjU5NEMxMi41IDEzIDEzIDEzLjQgMTMgMTRjMCAuNDI2LS4yNi43NTItLjU0NC45NzctLjI5LjIyOC0uNjguNDEzLTEuMTE2LjU1OC0uODc4LjI5My0yLjA1OS40NjUtMy4zNC40NjUtMS4yODEgMC0yLjQ2Mi0uMTcyLTMuMzQtLjQ2NS0uNDM2LS4xNDUtLjgyNi0uMzMtMS4xMTYtLjU1OEMzLjI2IDE0Ljc1MiAzIDE0LjQyNiAzIDE0YzAtLjU5OS41LTEgLjk2MS0xLjI0My41MDUtLjI2NiAxLjE4Ny0uNDY3IDEuOTU3LS41OTRhLjUuNSAwIDAgMSAuNTc1LjQxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHaWZ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIuNWEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxIDUgMHYuMDA2YzAgLjA3IDAgLjI3LS4wMzguNDk0SDE1YTEgMSAwIDAgMSAxIDF2MWExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMi4wMzhBMi45NjggMi45NjggMCAwIDEgMyAyLjUwNlYyLjV6bTEuMDY4LjVIN3YtLjVhMS41IDEuNSAwIDEgMC0zIDBjMCAuMDg1LjAwMi4yNzQuMDQ1LjQzYS41MjIuNTIyIDAgMCAwIC4wMjMuMDd6TTkgM2gyLjkzMmEuNTYuNTYgMCAwIDAgLjAyMy0uMDdjLjA0My0uMTU2LjA0NS0uMzQ1LjA0NS0uNDNhMS41IDEuNSAwIDAgMC0zIDBWM3ptNiA0djcuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVIOVY3aDZ6TTIuNSAxNkExLjUgMS41IDAgMCAxIDEgMTQuNVY3aDZ2OUgyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2lmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDIuNWEyLjUgMi41IDAgMCAxIDUgMCAyLjUgMi41IDAgMCAxIDUgMHYuMDA2YzAgLjA3IDAgLjI3LS4wMzguNDk0SDE1YTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxdjcuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTExQTEuNSAxLjUgMCAwIDEgMSAxNC41VjdhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoMi4wMzhBMi45NjggMi45NjggMCAwIDEgMyAyLjUwNlYyLjV6bTEuMDY4LjVIN3YtLjVhMS41IDEuNSAwIDEgMC0zIDBjMCAuMDg1LjAwMi4yNzQuMDQ1LjQzYS41MjIuNTIyIDAgMCAwIC4wMjMuMDd6TTkgM2gyLjkzMmEuNTYuNTYgMCAwIDAgLjAyMy0uMDdjLjA0My0uMTU2LjA0NS0uMzQ1LjA0NS0uNDNhMS41IDEuNSAwIDAgMC0zIDBWM3pNMSA0djJoNlY0SDF6bTggMHYyaDZWNEg5em01IDNIOXY4aDQuNWEuNS41IDAgMCAwIC41LS41Vjd6bS03IDhWN0gydjcuNWEuNS41IDAgMCAwIC41LjVIN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHaXRodWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTIgOC4wMTIgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHbG9iZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDhhOCA4IDAgMSAxIDE2IDBBOCA4IDAgMCAxIDAgOHptNy41LTYuOTIzYy0uNjcuMjA0LTEuMzM1LjgyLTEuODg3IDEuODU1QTcuOTcgNy45NyAwIDAgMCA1LjE0NSA0SDcuNVYxLjA3N3pNNC4wOSA0YTkuMjY3IDkuMjY3IDAgMCAxIC42NC0xLjUzOSA2LjcgNi43IDAgMCAxIC41OTctLjkzM0E3LjAyNSA3LjAyNSAwIDAgMCAyLjI1NSA0SDQuMDl6bS0uNTgyIDMuNWMuMDMtLjg3Ny4xMzgtMS43MTguMzEyLTIuNUgxLjY3NGE2Ljk1OCA2Ljk1OCAwIDAgMC0uNjU2IDIuNWgyLjQ5ek00Ljg0NyA1YTEyLjUgMTIuNSAwIDAgMC0uMzM4IDIuNUg3LjVWNUg0Ljg0N3pNOC41IDV2Mi41aDIuOTlhMTIuNDk1IDEyLjQ5NSAwIDAgMC0uMzM3LTIuNUg4LjV6TTQuNTEgOC41YTEyLjUgMTIuNSAwIDAgMCAuMzM3IDIuNUg3LjVWOC41SDQuNTF6bTMuOTkgMFYxMWgyLjY1M2MuMTg3LS43NjUuMzA2LTEuNjA4LjMzOC0yLjVIOC41ek01LjE0NSAxMmMuMTM4LjM4Ni4yOTUuNzQ0LjQ2OCAxLjA2OC41NTIgMS4wMzUgMS4yMTggMS42NSAxLjg4NyAxLjg1NVYxMkg1LjE0NXptLjE4MiAyLjQ3MmE2LjY5NiA2LjY5NiAwIDAgMS0uNTk3LS45MzNBOS4yNjggOS4yNjggMCAwIDEgNC4wOSAxMkgyLjI1NWE3LjAyNCA3LjAyNCAwIDAgMCAzLjA3MiAyLjQ3MnpNMy44MiAxMWExMy42NTIgMTMuNjUyIDAgMCAxLS4zMTItMi41aC0yLjQ5Yy4wNjIuODkuMjkxIDEuNzMzLjY1NiAyLjVIMy44MnptNi44NTMgMy40NzJBNy4wMjQgNy4wMjQgMCAwIDAgMTMuNzQ1IDEySDExLjkxYTkuMjcgOS4yNyAwIDAgMS0uNjQgMS41MzkgNi42ODggNi42ODggMCAwIDEtLjU5Ny45MzN6TTguNSAxMnYyLjkyM2MuNjctLjIwNCAxLjMzNS0uODIgMS44ODctMS44NTUuMTczLS4zMjQuMzMtLjY4Mi40NjgtMS4wNjhIOC41em0zLjY4LTFoMi4xNDZjLjM2NS0uNzY3LjU5NC0xLjYxLjY1Ni0yLjVoLTIuNDlhMTMuNjUgMTMuNjUgMCAwIDEtLjMxMiAyLjV6bTIuODAyLTMuNWE2Ljk1OSA2Ljk1OSAwIDAgMC0uNjU2LTIuNUgxMi4xOGMuMTc0Ljc4Mi4yODIgMS42MjMuMzEyIDIuNWgyLjQ5ek0xMS4yNyAyLjQ2MWMuMjQ3LjQ2NC40NjIuOTguNjQgMS41MzloMS44MzVhNy4wMjQgNy4wMjQgMCAwIDAtMy4wNzItMi40NzJjLjIxOC4yODQuNDE4LjU5OC41OTcuOTMzek0xMC44NTUgNGE3Ljk2NiA3Ljk2NiAwIDAgMC0uNDY4LTEuMDY4QzkuODM1IDEuODk3IDkuMTcgMS4yODIgOC41IDEuMDc3VjRoMi4zNTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR2xvYmUyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgOGE4IDggMCAxIDEgMTYgMEE4IDggMCAwIDEgMCA4em03LjUtNi45MjNjLS42Ny4yMDQtMS4zMzUuODItMS44ODcgMS44NTUtLjE0My4yNjgtLjI3Ni41Ni0uMzk1Ljg3Mi43MDUuMTU3IDEuNDcyLjI1NyAyLjI4Mi4yODdWMS4wNzd6TTQuMjQ5IDMuNTM5Yy4xNDItLjM4NC4zMDQtLjc0NC40ODEtMS4wNzhhNi43IDYuNyAwIDAgMSAuNTk3LS45MzNBNy4wMSA3LjAxIDAgMCAwIDMuMDUxIDMuMDVjLjM2Mi4xODQuNzYzLjM0OSAxLjE5OC40OXpNMy41MDkgNy41Yy4wMzYtMS4wNy4xODgtMi4wODcuNDM2LTMuMDA4YTkuMTI0IDkuMTI0IDAgMCAxLTEuNTY1LS42NjdBNi45NjQgNi45NjQgMCAwIDAgMS4wMTggNy41aDIuNDl6bTEuNC0yLjc0MWExMi4zNDQgMTIuMzQ0IDAgMCAwLS40IDIuNzQxSDcuNVY1LjA5MWMtLjkxLS4wMy0xLjc4My0uMTQ1LTIuNTkxLS4zMzJ6TTguNSA1LjA5VjcuNWgyLjk5YTEyLjM0MiAxMi4zNDIgMCAwIDAtLjM5OS0yLjc0MWMtLjgwOC4xODctMS42ODEuMzAxLTIuNTkxLjMzMnpNNC41MSA4LjVjLjAzNS45ODcuMTc2IDEuOTE0LjM5OSAyLjc0MUExMy42MTIgMTMuNjEyIDAgMCAxIDcuNSAxMC45MVY4LjVINC41MXptMy45OSAwdjIuNDA5Yy45MS4wMyAxLjc4My4xNDUgMi41OTEuMzMyLjIyMy0uODI3LjM2NC0xLjc1NC40LTIuNzQxSDguNXptLTMuMjgyIDMuNjk2Yy4xMi4zMTIuMjUyLjYwNC4zOTUuODcyLjU1MiAxLjAzNSAxLjIxOCAxLjY1IDEuODg3IDEuODU1VjExLjkxYy0uODEuMDMtMS41NzcuMTMtMi4yODIuMjg3em0uMTEgMi4yNzZhNi42OTYgNi42OTYgMCAwIDEtLjU5OC0uOTMzIDguODUzIDguODUzIDAgMCAxLS40ODEtMS4wNzkgOC4zOCA4LjM4IDAgMCAwLTEuMTk4LjQ5IDcuMDEgNy4wMSAwIDAgMCAyLjI3NiAxLjUyMnptLTEuMzgzLTIuOTY0QTEzLjM2IDEzLjM2IDAgMCAxIDMuNTA4IDguNWgtMi40OWE2Ljk2MyA2Ljk2MyAwIDAgMCAxLjM2MiAzLjY3NWMuNDctLjI1OC45OTUtLjQ4MiAxLjU2NS0uNjY3em02LjcyOCAyLjk2NGE3LjAwOSA3LjAwOSAwIDAgMCAyLjI3NS0xLjUyMSA4LjM3NiA4LjM3NiAwIDAgMC0xLjE5Ny0uNDkgOC44NTMgOC44NTMgMCAwIDEtLjQ4MSAxLjA3OCA2LjY4OCA2LjY4OCAwIDAgMS0uNTk3LjkzM3pNOC41IDExLjkwOXYzLjAxNGMuNjctLjIwNCAxLjMzNS0uODIgMS44ODctMS44NTUuMTQzLS4yNjguMjc2LS41Ni4zOTUtLjg3MkExMi42MyAxMi42MyAwIDAgMCA4LjUgMTEuOTF6bTMuNTU1LS40MDFjLjU3LjE4NSAxLjA5NS40MDkgMS41NjUuNjY3QTYuOTYzIDYuOTYzIDAgMCAwIDE0Ljk4MiA4LjVoLTIuNDlhMTMuMzYgMTMuMzYgMCAwIDEtLjQzNyAzLjAwOHpNMTQuOTgyIDcuNWE2Ljk2MyA2Ljk2MyAwIDAgMC0xLjM2Mi0zLjY3NWMtLjQ3LjI1OC0uOTk1LjQ4Mi0xLjU2NS42NjcuMjQ4LjkyLjQgMS45MzguNDM3IDMuMDA4aDIuNDl6TTExLjI3IDIuNDYxYy4xNzcuMzM0LjMzOS42OTQuNDgyIDEuMDc4YTguMzY4IDguMzY4IDAgMCAwIDEuMTk2LS40OSA3LjAxIDcuMDEgMCAwIDAtMi4yNzUtMS41MmMuMjE4LjI4My40MTguNTk3LjU5Ny45MzJ6bS0uNDg4IDEuMzQzYTcuNzY1IDcuNzY1IDAgMCAwLS4zOTUtLjg3MkM5LjgzNSAxLjg5NyA5LjE3IDEuMjgyIDguNSAxLjA3N1Y0LjA5Yy44MS0uMDMgMS41NzctLjEzIDIuMjgyLS4yODd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR29vZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1LjU0NSA2LjU1OGE5LjQyIDkuNDIgMCAwIDEgLjEzOSAxLjYyNmMwIDIuNDM0LS44NyA0LjQ5Mi0yLjM4NCA1Ljg4NWguMDAyQzExLjk3OCAxNS4yOTIgMTAuMTU4IDE2IDggMTZBOCA4IDAgMSAxIDggMGE3LjY4OSA3LjY4OSAwIDAgMSA1LjM1MiAyLjA4MmwtMi4yODQgMi4yODRBNC4zNDcgNC4zNDcgMCAwIDAgOCAzLjE2NmMtMi4wODcgMC0zLjg2IDEuNDA4LTQuNDkyIDMuMzA0YTQuNzkyIDQuNzkyIDAgMCAwIDAgMy4wNjNoLjAwM2MuNjM1IDEuODkzIDIuNDA1IDMuMzAxIDQuNDkyIDMuMzAxIDEuMDc4IDAgMi4wMDQtLjI3NiAyLjcyMi0uNzY0aC0uMDAzYTMuNzAyIDMuNzAyIDAgMCAwIDEuNTk5LTIuNDMxSDh2LTMuMDhoNy41NDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JhcGhEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0wIDBoMXYxNWgxNXYxSDBWMHptMTAgMTEuNWEuNS41IDAgMCAwIC41LjVoNGEuNS41IDAgMCAwIC41LS41di00YS41LjUgMCAwIDAtMSAwdjIuNmwtMy42MTMtNC40MTdhLjUuNSAwIDAgMC0uNzQtLjAzN0w3LjA2IDguMjMzIDMuNDA0IDMuMjA2YS41LjUgMCAwIDAtLjgwOC41ODhsNCA1LjVhLjUuNSAwIDAgMCAuNzU4LjA2bDIuNjA5LTIuNjFMMTMuNDQ1IDExSDEwLjVhLjUuNSAwIDAgMC0uNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dyYXBoVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgMGgxdjE1aDE1djFIMFYwem0xMCAzLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgLjUuNXY0YS41LjUgMCAwIDEtMSAwVjQuOWwtMy42MTMgNC40MTdhLjUuNSAwIDAgMS0uNzQuMDM3TDcuMDYgNi43NjdsLTMuNjU2IDUuMDI3YS41LjUgMCAwIDEtLjgwOC0uNTg4bDQtNS41YS41LjUgMCAwIDEgLjc1OC0uMDZsMi42MDkgMi42MUwxMy40NDUgNEgxMC41YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDFYMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxYTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjE0YTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjF6bTkgMGExIDEgMCAwIDEgMS0xaDVhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMVYxem0wIDlhMSAxIDAgMCAxIDEtMWg1YTEgMSAwIDAgMSAxIDF2NWExIDEgMCAwIDEtMSAxaC01YTEgMSAwIDAgMS0xLTF2LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDFYMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDFIMXYxNGg1VjF6bTkgMGgtNXY1aDVWMXptMCA5djVoLTV2LTVoNXpNMCAxYTEgMSAwIDAgMSAxLTFoNWExIDEgMCAwIDEgMSAxdjE0YTEgMSAwIDAgMS0xIDFIMWExIDEgMCAwIDEtMS0xVjF6bTkgMGExIDEgMCAwIDEgMS0xaDVhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMVYxem0xIDhhMSAxIDAgMCAwLTEgMXY1YTEgMSAwIDAgMCAxIDFoNWExIDEgMCAwIDAgMS0xdi01YTEgMSAwIDAgMC0xLTFoLTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDNYMkdhcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA0YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNHptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUg3YTEgMSAwIDAgMS0xLTFWNHptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xVjR6TTEgOWExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjl6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjl6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAxLTEtMVY5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dyaWQzWDJHYXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0djJIMlY0aDJ6bTEgN1Y5YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6bTAtNVY0YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6bTUgNVY5YTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6bTAtNVY0YTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6TTkgNHYySDdWNGgyem01IDBoLTJ2MmgyVjR6TTQgOXYySDJWOWgyem01IDB2Mkg3VjloMnptNSAwdjJoLTJWOWgyem0tMy01YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xVjR6bTEgNGExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTFWOWExIDEgMCAwIDAtMS0xaC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dyaWQzWDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzLjVBMS41IDEuNSAwIDAgMSAxLjUgMmgxM0ExLjUgMS41IDAgMCAxIDE2IDMuNXY4YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTNBMS41IDEuNSAwIDAgMSAwIDExLjV2LTh6TTEuNSAzYS41LjUgMCAwIDAtLjUuNVY3aDRWM0gxLjV6TTUgOEgxdjMuNWEuNS41IDAgMCAwIC41LjVINVY4em0xIDB2NGg0VjhINnptNC0xVjNINnY0aDR6bTEgMXY0aDMuNWEuNS41IDAgMCAwIC41LS41VjhoLTR6bTAtMWg0VjMuNWEuNS41IDAgMCAwLS41LS41SDExdjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDNYM0dhcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWMnptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUg3YTEgMSAwIDAgMS0xLTFWMnptNSAwYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xVjJ6TTEgN2ExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjd6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xVjd6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAxLTEtMVY3ek0xIDEyYTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTF2LTJ6bTUgMGExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFIN2ExIDEgMCAwIDEtMS0xdi0yem01IDBhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC0yYTEgMSAwIDAgMS0xLTF2LTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDNYM0dhcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDJ2MkgyVjJoMnptMSAxMnYtMmExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xem0wLTVWN2ExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xem0wLTVWMmExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xem01IDEwdi0yYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6bTAtNVY3YTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6bTAtNVYyYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWgyYTEgMSAwIDAgMCAxLTF6TTkgMnYySDdWMmgyem01IDB2MmgtMlYyaDJ6TTQgN3YySDJWN2gyem01IDB2Mkg3VjdoMnptNSAwaC0ydjJoMlY3ek00IDEydjJIMnYtMmgyem01IDB2Mkg3di0yaDJ6bTUgMHYyaC0ydi0yaDJ6TTEyIDFhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMWgtMnptLTEgNmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMXYyYTEgMSAwIDAgMS0xIDFoLTJhMSAxIDAgMCAxLTEtMVY3em0xIDRhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xdi0yYTEgMSAwIDAgMC0xLTFoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpZDNYMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNUExLjUgMS41IDAgMCAxIDEuNSAwaDEzQTEuNSAxLjUgMCAwIDEgMTYgMS41djEzYTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTNBMS41IDEuNSAwIDAgMSAwIDE0LjV2LTEzek0xLjUgMWEuNS41IDAgMCAwLS41LjVWNWg0VjFIMS41ek01IDZIMXY0aDRWNnptMSA0aDRWNkg2djR6bS0xIDFIMXYzLjVhLjUuNSAwIDAgMCAuNS41SDV2LTR6bTEgMHY0aDR2LTRINnptNSAwdjRoMy41YS41LjUgMCAwIDAgLjUtLjVWMTFoLTR6bTAtMWg0VjZoLTR2NHptMC01aDRWMS41YS41LjUgMCAwIDAtLjUtLjVIMTF2NHptLTEgMFYxSDZ2NGg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dyaWRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMi41QTEuNSAxLjUgMCAwIDEgMi41IDFoM0ExLjUgMS41IDAgMCAxIDcgMi41djNBMS41IDEuNSAwIDAgMSA1LjUgN2gtM0ExLjUgMS41IDAgMCAxIDEgNS41di0zem04IDBBMS41IDEuNSAwIDAgMSAxMC41IDFoM0ExLjUgMS41IDAgMCAxIDE1IDIuNXYzQTEuNSAxLjUgMCAwIDEgMTMuNSA3aC0zQTEuNSAxLjUgMCAwIDEgOSA1LjV2LTN6bS04IDhBMS41IDEuNSAwIDAgMSAyLjUgOWgzQTEuNSAxLjUgMCAwIDEgNyAxMC41djNBMS41IDEuNSAwIDAgMSA1LjUgMTVoLTNBMS41IDEuNSAwIDAgMSAxIDEzLjV2LTN6bTggMEExLjUgMS41IDAgMCAxIDEwLjUgOWgzYTEuNSAxLjUgMCAwIDEgMS41IDEuNXYzYTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtM0ExLjUgMS41IDAgMCAxIDkgMTMuNXYtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNHcmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMi41QTEuNSAxLjUgMCAwIDEgMi41IDFoM0ExLjUgMS41IDAgMCAxIDcgMi41djNBMS41IDEuNSAwIDAgMSA1LjUgN2gtM0ExLjUgMS41IDAgMCAxIDEgNS41di0zek0yLjUgMmEuNS41IDAgMCAwLS41LjV2M2EuNS41IDAgMCAwIC41LjVoM2EuNS41IDAgMCAwIC41LS41di0zYS41LjUgMCAwIDAtLjUtLjVoLTN6bTYuNS41QTEuNSAxLjUgMCAwIDEgMTAuNSAxaDNBMS41IDEuNSAwIDAgMSAxNSAyLjV2M0ExLjUgMS41IDAgMCAxIDEzLjUgN2gtM0ExLjUgMS41IDAgMCAxIDkgNS41di0zem0xLjUtLjVhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAwLS41LS41aC0zek0xIDEwLjVBMS41IDEuNSAwIDAgMSAyLjUgOWgzQTEuNSAxLjUgMCAwIDEgNyAxMC41djNBMS41IDEuNSAwIDAgMSA1LjUgMTVoLTNBMS41IDEuNSAwIDAgMSAxIDEzLjV2LTN6bTEuNS0uNWEuNS41IDAgMCAwLS41LjV2M2EuNS41IDAgMCAwIC41LjVoM2EuNS41IDAgMCAwIC41LS41di0zYS41LjUgMCAwIDAtLjUtLjVoLTN6bTYuNS41QTEuNSAxLjUgMCAwIDEgMTAuNSA5aDNhMS41IDEuNSAwIDAgMSAxLjUgMS41djNhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0zQTEuNSAxLjUgMCAwIDEgOSAxMy41di0zem0xLjUtLjVhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAwLS41LS41aC0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0dyaXBIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgOGExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTAtM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTMgM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTAtM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTMgM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTAtM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTMgM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTAtM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTMgM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6bTAtM2ExIDEgMCAxIDEgMCAyIDEgMSAwIDAgMSAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzR3JpcFZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMmExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTMgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTcgNWExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTMgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTcgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bTMgMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6bS0zIDNhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0zIDBhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0tMyAzYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptMyAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIYW1tZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS45NzIgMi41MDhhLjUuNSAwIDAgMC0uMTYtLjU1NmwtLjE3OC0uMTI5YTUuMDA5IDUuMDA5IDAgMCAwLTIuMDc2LS43ODNDNi4yMTUuODYyIDQuNTA0IDEuMjI5IDIuODQgMy4xMzNIMS43ODZhLjUuNSAwIDAgMC0uMzU0LjE0N0wuMTQ2IDQuNTY3YS41LjUgMCAwIDAgMCAuNzA2bDIuNTcxIDIuNTc5YS41LjUgMCAwIDAgLjcwOCAwbDEuMjg2LTEuMjlhLjUuNSAwIDAgMCAuMTQ2LS4zNTNWNS41N2w4LjM4NyA4Ljg3M0EuNS41IDAgMCAwIDE0IDE0LjVsMS41LTEuNWEuNS41IDAgMCAwIC4wMTctLjY4OWwtOS4xMjktOC42M2MuNzQ3LS40NTYgMS43NzItLjgzOSAzLjExMi0uODM5YS41LjUgMCAwIDAgLjQ3Mi0uMzM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhbmRJbmRleEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDQuNDY2VjEuNzVhMS43NSAxLjc1IDAgMSAwLTMuNSAwdjUuMzRsLTEuMi4yNGExLjUgMS41IDAgMCAwLTEuMTk2IDEuNjM2bC4zNDUgMy4xMDZhMi41IDIuNSAwIDAgMCAuNDA1IDEuMTFsMS40MzMgMi4xNUExLjUgMS41IDAgMCAwIDYuMDM1IDE2aDYuMzg1YTEuNSAxLjUgMCAwIDAgMS4zMDItLjc1NmwxLjM5NS0yLjQ0MWEzLjUgMy41IDAgMCAwIC40NDQtMS4zODlsLjI3MS0yLjcxNWEyIDIgMCAwIDAtMS45OS0yLjE5OWgtLjU4MWE1LjExNCA1LjExNCAwIDAgMC0uMTk1LS4yNDhjLS4xOTEtLjIyOS0uNTEtLjU2OC0uODgtLjcxNi0uMzY0LS4xNDYtLjg0Ni0uMTMyLTEuMTU4LS4xMDhsLS4xMzIuMDEyYTEuMjYgMS4yNiAwIDAgMC0uNTYtLjY0MiAyLjYzMiAyLjYzMiAwIDAgMC0uNzM4LS4yODhjLS4zMS0uMDYyLS43MzktLjA1OC0xLjA1LS4wNDZsLS4wNDguMDAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhbmRJbmRleFRodW1iRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgMS43NXYyLjcxNmwuMDQ3LS4wMDJjLjMxMi0uMDEyLjc0Mi0uMDE2IDEuMDUxLjA0Ni4yOC4wNTYuNTQzLjE4LjczOC4yODguMjczLjE1Mi40NTYuMzg1LjU2LjY0MmwuMTMyLS4wMTJjLjMxMi0uMDI0Ljc5NC0uMDM4IDEuMTU4LjEwOC4zNy4xNDguNjg5LjQ4Ny44OC43MTYuMDc1LjA5LjE0MS4xNzUuMTk1LjI0OGguNTgyYTIgMiAwIDAgMSAxLjk5IDIuMTk5bC0uMjcyIDIuNzE1YTMuNSAzLjUgMCAwIDEtLjQ0NCAxLjM4OWwtMS4zOTUgMi40NDFBMS41IDEuNSAwIDAgMSAxMi40MiAxNkg2LjExOGExLjUgMS41IDAgMCAxLTEuMzQyLS44M2wtMS4yMTUtMi40M0wxLjA3IDguNTg5YTEuNTE3IDEuNTE3IDAgMCAxIDIuMzczLTEuODUyTDUgOC4yOTNWMS43NWExLjc1IDEuNzUgMCAwIDEgMy41IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGFuZEluZGV4VGh1bWIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi43NSAxYS43NS43NSAwIDAgMSAuNzUuNzVWOGEuNS41IDAgMCAwIDEgMFY1LjQ2N2wuMDg2LS4wMDRjLjMxNy0uMDEyLjYzNy0uMDA4LjgxNi4wMjcuMTM0LjAyNy4yOTQuMDk2LjQ0OC4xODIuMDc3LjA0Mi4xNS4xNDcuMTUuMzE0VjhhLjUuNSAwIDAgMCAxIDBWNi40MzVsLjEwNi0uMDFjLjMxNi0uMDI0LjU4NC0uMDEuNzA4LjA0LjExOC4wNDYuMy4yMDcuNDg2LjQzLjA4MS4wOTYuMTUuMTkuMi4yNTlWOC41YS41LjUgMCAxIDAgMSAwdi0xaC4zNDJhMSAxIDAgMCAxIC45OTUgMS4xbC0uMjcxIDIuNzE1YTIuNSAyLjUgMCAwIDEtLjMxNy45OTFsLTEuMzk1IDIuNDQyYS41LjUgMCAwIDEtLjQzNC4yNTJINi4xMThhLjUuNSAwIDAgMS0uNDQ3LS4yNzZsLTEuMjMyLTIuNDY1LTIuNTEyLTQuMTg1YS41MTcuNTE3IDAgMCAxIC44MDktLjYzMWwyLjQxIDIuNDFBLjUuNSAwIDAgMCA2IDkuNVYxLjc1QS43NS43NSAwIDAgMSA2Ljc1IDF6TTguNSA0LjQ2NlYxLjc1YTEuNzUgMS43NSAwIDEgMC0zLjUgMHY2LjU0M0wzLjQ0MyA2LjczNkExLjUxNyAxLjUxNyAwIDAgMCAxLjA3IDguNTg4bDIuNDkxIDQuMTUzIDEuMjE1IDIuNDNBMS41IDEuNSAwIDAgMCA2LjExOCAxNmg2LjMwMmExLjUgMS41IDAgMCAwIDEuMzAyLS43NTZsMS4zOTUtMi40NDFhMy41IDMuNSAwIDAgMCAuNDQ0LTEuMzg5bC4yNzEtMi43MTVhMiAyIDAgMCAwLTEuOTktMi4xOTloLS41ODFhNS4xMTQgNS4xMTQgMCAwIDAtLjE5NS0uMjQ4Yy0uMTkxLS4yMjktLjUxLS41NjgtLjg4LS43MTYtLjM2NC0uMTQ2LS44NDYtLjEzMi0xLjE1OC0uMTA4bC0uMTMyLjAxMmExLjI2IDEuMjYgMCAwIDAtLjU2LS42NDIgMi42MzIgMi42MzIgMCAwIDAtLjczOC0uMjg4Yy0uMzEtLjA2Mi0uNzM5LS4wNTgtMS4wNS0uMDQ2bC0uMDQ4LjAwMnptMi4wOTQgMi4wMjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGFuZEluZGV4IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzUgMWEuNzUuNzUgMCAwIDEgLjc1Ljc1VjhhLjUuNSAwIDAgMCAxIDBWNS40NjdsLjA4Ni0uMDA0Yy4zMTctLjAxMi42MzctLjAwOC44MTYuMDI3LjEzNC4wMjcuMjk0LjA5Ni40NDguMTgyLjA3Ny4wNDIuMTUuMTQ3LjE1LjMxNFY4YS41LjUgMCAxIDAgMSAwVjYuNDM1YTQuOSA0LjkgMCAwIDEgLjEwNi0uMDFjLjMxNi0uMDI0LjU4NC0uMDEuNzA4LjA0LjExOC4wNDYuMy4yMDcuNDg2LjQzLjA4MS4wOTYuMTUuMTkuMi4yNTlWOC41YS41LjUgMCAwIDAgMSAwdi0xaC4zNDJhMSAxIDAgMCAxIC45OTUgMS4xbC0uMjcxIDIuNzE1YTIuNSAyLjUgMCAwIDEtLjMxNy45OTFsLTEuMzk1IDIuNDQyYS41LjUgMCAwIDEtLjQzNC4yNTJINi4wMzVhLjUuNSAwIDAgMS0uNDE2LS4yMjNsLTEuNDMzLTIuMTVhMS41IDEuNSAwIDAgMS0uMjQzLS42NjZsLS4zNDUtMy4xMDVhLjUuNSAwIDAgMSAuMzk5LS41NDZMNSA4LjExVjlhLjUuNSAwIDAgMCAxIDBWMS43NUEuNzUuNzUgMCAwIDEgNi43NSAxek04LjUgNC40NjZWMS43NWExLjc1IDEuNzUgMCAxIDAtMy41IDB2NS4zNGwtMS4yLjI0YTEuNSAxLjUgMCAwIDAtMS4xOTYgMS42MzZsLjM0NSAzLjEwNmEyLjUgMi41IDAgMCAwIC40MDUgMS4xMWwxLjQzMyAyLjE1QTEuNSAxLjUgMCAwIDAgNi4wMzUgMTZoNi4zODVhMS41IDEuNSAwIDAgMCAxLjMwMi0uNzU2bDEuMzk1LTIuNDQxYTMuNSAzLjUgMCAwIDAgLjQ0NC0xLjM4OWwuMjcxLTIuNzE1YTIgMiAwIDAgMC0xLjk5LTIuMTk5aC0uNTgxYTUuMTE0IDUuMTE0IDAgMCAwLS4xOTUtLjI0OGMtLjE5MS0uMjI5LS41MS0uNTY4LS44OC0uNzE2LS4zNjQtLjE0Ni0uODQ2LS4xMzItMS4xNTgtLjEwOGwtLjEzMi4wMTJhMS4yNiAxLjI2IDAgMCAwLS41Ni0uNjQyIDIuNjMyIDIuNjMyIDAgMCAwLS43MzgtLjI4OGMtLjMxLS4wNjItLjczOS0uMDU4LTEuMDUtLjA0NmwtLjA0OC4wMDJ6bTIuMDk0IDIuMDI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhbmRUaHVtYnNEb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk1NiAxNC41MzRjLjA2NS45MzYuOTUyIDEuNjU5IDEuOTA4IDEuNDJsLjI2MS0uMDY1YTEuMzc4IDEuMzc4IDAgMCAwIDEuMDEyLS45NjVjLjIyLS44MTYuNTMzLTIuNTEyLjA2Mi00LjUxLjEzNi4wMi4yODUuMDM3LjQ0My4wNTEuNzEzLjA2NSAxLjY2OS4wNzEgMi41MTYtLjIxMS41MTgtLjE3My45OTQtLjY4IDEuMi0xLjI3MmExLjg5NiAxLjg5NiAwIDAgMC0uMjM0LTEuNzM0Yy4wNTgtLjExOC4xMDMtLjI0Mi4xMzgtLjM2Mi4wNzctLjI3LjExMy0uNTY4LjExMy0uODU2IDAtLjI5LS4wMzYtLjU4Ni0uMTEzLS44NTdhMi4wOTQgMi4wOTQgMCAwIDAtLjE2LS40MDNjLjE2OS0uMzg3LjEwNy0uODItLjAwMy0xLjE0OWEzLjE2MiAzLjE2MiAwIDAgMC0uNDg4LS45Yy4wNTQtLjE1My4wNzYtLjMxMy4wNzYtLjQ2NWExLjg2IDEuODYgMCAwIDAtLjI1My0uOTEyQzEzLjEuNzU3IDEyLjQzNy4yOCAxMS41LjI4SDhjLS42MDUgMC0xLjA3LjA4LTEuNDY2LjIxN2E0LjgyMyA0LjgyMyAwIDAgMC0uOTcuNDg1bC0uMDQ4LjAyOWMtLjUwNC4zMDgtLjk5OS42MS0yLjA2OC43MjNDMi42ODIgMS44MTUgMiAyLjQzNCAyIDMuMjc5djRjMCAuODUxLjY4NSAxLjQzMyAxLjM1NyAxLjYxNi44NDkuMjMyIDEuNTc0Ljc4NyAyLjEzMiAxLjQxLjU2LjYyNi45MTQgMS4yOCAxLjAzOSAxLjYzOC4xOTkuNTc1LjM1NiAxLjU0LjQyOCAyLjU5MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIYW5kVGh1bWJzRG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04Ljg2NCAxNS42NzRjLS45NTYuMjQtMS44NDMtLjQ4NC0xLjkwOC0xLjQyLS4wNzItMS4wNS0uMjMtMi4wMTUtLjQyOC0yLjU5LS4xMjUtLjM2LS40NzktMS4wMTItMS4wNC0xLjYzOC0uNTU3LS42MjQtMS4yODItMS4xNzktMi4xMzEtMS40MUMyLjY4NSA4LjQzMiAyIDcuODUgMiA3VjNjMC0uODQ1LjY4Mi0xLjQ2NCAxLjQ0OC0xLjU0NiAxLjA3LS4xMTMgMS41NjQtLjQxNSAyLjA2OC0uNzIzbC4wNDgtLjAyOWMuMjcyLS4xNjYuNTc4LS4zNDkuOTctLjQ4NEM2LjkzMS4wOCA3LjM5NSAwIDggMGgzLjVjLjkzNyAwIDEuNTk5LjQ3OCAxLjkzNCAxLjA2NC4xNjQuMjg3LjI1NC42MDcuMjU0LjkxMyAwIC4xNTItLjAyMy4zMTItLjA3Ny40NjQuMjAxLjI2Mi4zOC41NzcuNDg4LjkuMTEuMzMuMTcyLjc2Mi4wMDQgMS4xNS4wNjkuMTMuMTIuMjY4LjE1OS40MDMuMDc3LjI3LjExMy41NjcuMTEzLjg1NiAwIC4yODktLjAzNi41ODYtLjExMy44NTYtLjAzNS4xMi0uMDguMjQ0LS4xMzguMzYzLjM5NC41NzEuNDE4IDEuMi4yMzQgMS43MzMtLjIwNi41OTItLjY4MiAxLjEtMS4yIDEuMjcyLS44NDcuMjgzLTEuODAzLjI3Ni0yLjUxNi4yMTFhOS44NzcgOS44NzcgMCAwIDEtLjQ0My0uMDUgOS4zNjQgOS4zNjQgMCAwIDEtLjA2MiA0LjUxYy0uMTM4LjUwOC0uNTUuODQ4LTEuMDEyLjk2NGwtLjI2MS4wNjV6TTExLjUgMUg4Yy0uNTEgMC0uODYzLjA2OC0xLjE0LjE2My0uMjgxLjA5Ny0uNTA2LjIyOS0uNzc2LjM5M2wtLjA0LjAyNWMtLjU1NS4zMzgtMS4xOTguNzMtMi40OS44NjgtLjMzMy4wMzUtLjU1NC4yOS0uNTU0LjU1VjdjMCAuMjU1LjIyNi41NDMuNjIuNjUgMS4wOTUuMyAxLjk3Ny45OTcgMi42MTQgMS43MDkuNjM1LjcxIDEuMDY0IDEuNDc1IDEuMjM4IDEuOTc3LjI0My43LjQwNyAxLjc2OC40ODIgMi44NS4wMjUuMzYyLjM2LjU5NS42NjcuNTE4bC4yNjItLjA2NWMuMTYtLjA0LjI1OC0uMTQ0LjI4OC0uMjU1YTguMzQgOC4zNCAwIDAgMC0uMTQ1LTQuNzI2LjUuNSAwIDAgMSAuNTk1LS42NDNoLjAwM2wuMDE0LjAwNC4wNTguMDEzYTguOTEyIDguOTEyIDAgMCAwIDEuMDM2LjE1N2MuNjYzLjA2IDEuNDU3LjA1NCAyLjExLS4xNjMuMTc1LS4wNTkuNDUtLjMwMS41Ny0uNjUxLjEwNy0uMzA4LjA4Ny0uNjctLjI2Ni0xLjAyMUwxMi43OTMgN2wuMzUzLS4zNTRjLjA0My0uMDQyLjEwNS0uMTQuMTU0LS4zMTUuMDQ4LS4xNjcuMDc1LS4zNy4wNzUtLjU4MSAwLS4yMTEtLjAyNy0uNDE0LS4wNzUtLjU4MS0uMDUtLjE3NC0uMTExLS4yNzMtLjE1NC0uMzE1bC0uMzUzLS4zNTQuMzUzLS4zNTRjLjA0Ny0uMDQ3LjEwOS0uMTc2LjAwNS0uNDg4YTIuMjI0IDIuMjI0IDAgMCAwLS41MDUtLjgwNGwtLjM1My0uMzU0LjM1My0uMzU0Yy4wMDYtLjAwNS4wNDEtLjA1LjA0MS0uMTdhLjg2Ni44NjYgMCAwIDAtLjEyMS0uNDE1QzEyLjQgMS4yNzIgMTIuMDYzIDEgMTEuNSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhbmRUaHVtYnNVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi45NTYgMS43NDVDNy4wMjEuODEgNy45MDguMDg3IDguODY0LjMyNWwuMjYxLjA2NmMuNDYzLjExNi44NzQuNDU2IDEuMDEyLjk2NS4yMi44MTYuNTMzIDIuNTExLjA2MiA0LjUxYTkuODQgOS44NCAwIDAgMSAuNDQzLS4wNTFjLjcxMy0uMDY1IDEuNjY5LS4wNzIgMi41MTYuMjEuNTE4LjE3My45OTQuNjgxIDEuMiAxLjI3My4xODQuNTMyLjE2IDEuMTYyLS4yMzQgMS43MzMuMDU4LjExOS4xMDMuMjQyLjEzOC4zNjMuMDc3LjI3LjExMy41NjcuMTEzLjg1NiAwIC4yODktLjAzNi41ODYtLjExMy44NTYtLjAzOS4xMzUtLjA5LjI3My0uMTYuNDA0LjE2OS4zODcuMTA3LjgxOS0uMDAzIDEuMTQ4YTMuMTYzIDMuMTYzIDAgMCAxLS40ODguOTAxYy4wNTQuMTUyLjA3Ni4zMTIuMDc2LjQ2NSAwIC4zMDUtLjA4OS42MjUtLjI1My45MTJDMTMuMSAxNS41MjIgMTIuNDM3IDE2IDExLjUgMTZIOGMtLjYwNSAwLTEuMDctLjA4MS0xLjQ2Ni0uMjE4YTQuODIgNC44MiAwIDAgMS0uOTctLjQ4NGwtLjA0OC0uMDNjLS41MDQtLjMwNy0uOTk5LS42MDktMi4wNjgtLjcyMkMyLjY4MiAxNC40NjQgMiAxMy44NDYgMiAxM1Y5YzAtLjg1LjY4NS0xLjQzMiAxLjM1Ny0xLjYxNS44NDktLjIzMiAxLjU3NC0uNzg3IDIuMTMyLTEuNDEuNTYtLjYyNy45MTQtMS4yOCAxLjAzOS0xLjYzOS4xOTktLjU3NS4zNTYtMS41MzkuNDI4LTIuNTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGFuZFRodW1ic1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguODY0LjA0NkM3LjkwOC0uMTkzIDcuMDIuNTMgNi45NTYgMS40NjZjLS4wNzIgMS4wNTEtLjIzIDIuMDE2LS40MjggMi41OS0uMTI1LjM2LS40NzkgMS4wMTMtMS4wNCAxLjYzOS0uNTU3LjYyMy0xLjI4MiAxLjE3OC0yLjEzMSAxLjQxQzIuNjg1IDcuMjg4IDIgNy44NyAyIDguNzJ2NC4wMDFjMCAuODQ1LjY4MiAxLjQ2NCAxLjQ0OCAxLjU0NSAxLjA3LjExNCAxLjU2NC40MTUgMi4wNjguNzIzbC4wNDguMDNjLjI3Mi4xNjUuNTc4LjM0OC45Ny40ODQuMzk3LjEzNi44NjEuMjE3IDEuNDY2LjIxN2gzLjVjLjkzNyAwIDEuNTk5LS40NzcgMS45MzQtMS4wNjRhMS44NiAxLjg2IDAgMCAwIC4yNTQtLjkxMmMwLS4xNTItLjAyMy0uMzEyLS4wNzctLjQ2NC4yMDEtLjI2My4zOC0uNTc4LjQ4OC0uOTAxLjExLS4zMy4xNzItLjc2Mi4wMDQtMS4xNDkuMDY5LS4xMy4xMi0uMjY5LjE1OS0uNDAzLjA3Ny0uMjcuMTEzLS41NjguMTEzLS44NTcgMC0uMjg4LS4wMzYtLjU4NS0uMTEzLS44NTZhMi4xNDQgMi4xNDQgMCAwIDAtLjEzOC0uMzYyIDEuOSAxLjkgMCAwIDAgLjIzNC0xLjczNGMtLjIwNi0uNTkyLS42ODItMS4xLTEuMi0xLjI3Mi0uODQ3LS4yODItMS44MDMtLjI3Ni0yLjUxNi0uMjExYTkuODQgOS44NCAwIDAgMC0uNDQzLjA1IDkuMzY1IDkuMzY1IDAgMCAwLS4wNjItNC41MDlBMS4zOCAxLjM4IDAgMCAwIDkuMTI1LjExMUw4Ljg2NC4wNDZ6TTExLjUgMTQuNzIxSDhjLS41MSAwLS44NjMtLjA2OS0xLjE0LS4xNjQtLjI4MS0uMDk3LS41MDYtLjIyOC0uNzc2LS4zOTNsLS4wNC0uMDI0Yy0uNTU1LS4zMzktMS4xOTgtLjczMS0yLjQ5LS44NjgtLjMzMy0uMDM2LS41NTQtLjI5LS41NTQtLjU1VjguNzJjMC0uMjU0LjIyNi0uNTQzLjYyLS42NSAxLjA5NS0uMyAxLjk3Ny0uOTk2IDIuNjE0LTEuNzA4LjYzNS0uNzEgMS4wNjQtMS40NzUgMS4yMzgtMS45NzguMjQzLS43LjQwNy0xLjc2OC40ODItMi44NS4wMjUtLjM2Mi4zNi0uNTk0LjY2Ny0uNTE4bC4yNjIuMDY2Yy4xNi4wNC4yNTguMTQzLjI4OC4yNTVhOC4zNCA4LjM0IDAgMCAxLS4xNDUgNC43MjUuNS41IDAgMCAwIC41OTUuNjQ0bC4wMDMtLjAwMS4wMTQtLjAwMy4wNTgtLjAxNGE4LjkwOCA4LjkwOCAwIDAgMSAxLjAzNi0uMTU3Yy42NjMtLjA2IDEuNDU3LS4wNTQgMi4xMS4xNjQuMTc1LjA1OC40NS4zLjU3LjY1LjEwNy4zMDguMDg3LjY3LS4yNjYgMS4wMjJsLS4zNTMuMzUzLjM1My4zNTRjLjA0My4wNDMuMTA1LjE0MS4xNTQuMzE1LjA0OC4xNjcuMDc1LjM3LjA3NS41ODEgMCAuMjEyLS4wMjcuNDE0LS4wNzUuNTgyLS4wNS4xNzQtLjExMS4yNzItLjE1NC4zMTVsLS4zNTMuMzUzLjM1My4zNTRjLjA0Ny4wNDcuMTA5LjE3Ny4wMDUuNDg4YTIuMjI0IDIuMjI0IDAgMCAxLS41MDUuODA1bC0uMzUzLjM1My4zNTMuMzU0Yy4wMDYuMDA1LjA0MS4wNS4wNDEuMTdhLjg2Ni44NjYgMCAwIDEtLjEyMS40MTZjLS4xNjUuMjg4LS41MDMuNTYtMS4wNjYuNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGFuZGJhZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIgMiAwIDAgMC0yIDJ2Mkg1VjNhMyAzIDAgMSAxIDYgMHYyaC0xVjNhMiAyIDAgMCAwLTItMnpNNSA1SDMuMzZhMS41IDEuNSAwIDAgMC0xLjQ4MyAxLjI3N0wuODUgMTMuMTNBMi41IDIuNSAwIDAgMCAzLjMyMiAxNmg5LjM1NWEyLjUgMi41IDAgMCAwIDIuNDczLTIuODdsLTEuMDI4LTYuODUzQTEuNSAxLjUgMCAwIDAgMTIuNjQgNUgxMXYxLjVhLjUuNSAwIDAgMS0xIDBWNUg2djEuNWEuNS41IDAgMCAxLTEgMFY1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhbmRiYWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIgMiAwIDAgMSAyIDJ2Mkg2VjNhMiAyIDAgMCAxIDItMnptMyA0VjNhMyAzIDAgMSAwLTYgMHYySDMuMzZhMS41IDEuNSAwIDAgMC0xLjQ4MyAxLjI3N0wuODUgMTMuMTNBMi41IDIuNSAwIDAgMCAzLjMyMiAxNmg5LjM1NWEyLjUgMi41IDAgMCAwIDIuNDczLTIuODdsLTEuMDI4LTYuODUzQTEuNSAxLjUgMCAwIDAgMTIuNjQgNUgxMXptLTEgMXYxLjVhLjUuNSAwIDAgMCAxIDBWNmgxLjYzOWEuNS41IDAgMCAxIC40OTQuNDI2bDEuMDI4IDYuODUxQTEuNSAxLjUgMCAwIDEgMTIuNjc4IDE1SDMuMzIyYTEuNSAxLjUgMCAwIDEtMS40ODMtMS43MjNsMS4wMjgtNi44NTFBLjUuNSAwIDAgMSAzLjM2IDZINXYxLjVhLjUuNSAwIDEgMCAxIDBWNmg0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4zOSAxMi42NDhhMS4zMiAxLjMyIDAgMCAwLS4wMTUuMThjMCAuMzA1LjIxLjUwOC41LjUwOC4yNjYgMCAuNDkyLS4xNzIuNTU1LS40NzdsLjU1NC0yLjcwM2gxLjIwNGMuNDIxIDAgLjYxNy0uMjM0LjYxNy0uNTQ3IDAtLjMxMi0uMTg4LS41My0uNjE3LS41M2gtLjk4NWwuNTE2LTIuNTI0aDEuMjY1Yy40MyAwIC42MTgtLjIyNy42MTgtLjU0NyAwLS4zMTMtLjE4OC0uNTI0LS42MTgtLjUyNGgtMS4wNDZsLjQ3Ni0yLjMwNGExLjA2IDEuMDYgMCAwIDAgLjAxNi0uMTY0LjUxLjUxIDAgMCAwLS41MTYtLjUxNi41NC41NCAwIDAgMC0uNTM5LjQzbC0uNTIzIDIuNTU0SDcuNjE3bC40NzctMi4zMDRjLjAwOC0uMDQuMDE1LS4xMTguMDE1LS4xNjRhLjUxMi41MTIgMCAwIDAtLjUyMy0uNTE2LjUzOS41MzkgMCAwIDAtLjUzMS40M0w2LjUzIDUuNDg0SDUuNDE0Yy0uNDMgMC0uNjE3LjIyLS42MTcuNTMyIDAgLjMxMi4xODcuNTM5LjYxNy41MzloLjkwNmwtLjUxNSAyLjUyM0g0LjYwOWMtLjQyMSAwLS42MDkuMjE5LS42MDkuNTMxIDAgLjMxMy4xODguNTQ3LjYxLjU0N2guOTc2bC0uNTE2IDIuNDkyYy0uMDA4LjA0LS4wMTUuMTI1LS4wMTUuMTggMCAuMzA1LjIxLjUwOC41LjUwOC4yNjUgMCAuNDkyLS4xNzIuNTU0LS40NzdsLjU1NS0yLjcwM2gyLjI0MmwtLjUxNSAyLjQ5MnptLTEtNi4xMDloMi4yNjZsLS41MTUgMi41NjNINi44NTlsLjUzMi0yLjU2M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZGRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTBhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjFhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ2LTF6bTIuNSAxYS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxem0yIDBhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6TS45MSA3LjIwNEEyLjk5MyAyLjk5MyAwIDAgMSAyIDdoMTJjLjM4NCAwIC43NTIuMDcyIDEuMDkuMjA0bC0xLjg2Ny0zLjQyMkExLjUgMS41IDAgMCAwIDExLjkwNiAzSDQuMDk0YTEuNSAxLjUgMCAwIDAtMS4zMTcuNzgyTC45MSA3LjIwNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZGROZXR3b3JrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAwLTIgMnYxYTIgMiAwIDAgMCAyIDJoNS41djNBMS41IDEuNSAwIDAgMCA2IDExLjVILjVhLjUuNSAwIDAgMCAwIDFINkExLjUgMS41IDAgMCAwIDcuNSAxNGgxYTEuNSAxLjUgMCAwIDAgMS41LTEuNWg1LjVhLjUuNSAwIDAgMCAwLTFIMTBBMS41IDEuNSAwIDAgMCA4LjUgMTBWN0gxNGEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0uNSAzYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0yIDBhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGRkTmV0d29yayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgNWEuNS41IDAgMSAwIDAtMSAuNS41IDAgMCAwIDAgMXpNMyA0LjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxYTIgMiAwIDAgMS0yIDJIOC41djNhMS41IDEuNSAwIDAgMSAxLjUgMS41aDUuNWEuNS41IDAgMCAxIDAgMUgxMEExLjUgMS41IDAgMCAxIDguNSAxNGgtMUExLjUgMS41IDAgMCAxIDYgMTIuNUguNWEuNS41IDAgMCAxIDAtMUg2QTEuNSAxLjUgMCAwIDEgNy41IDEwVjdIMmEyIDIgMCAwIDEtMi0yVjR6bTEgMHYxYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxem02IDcuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMWEuNS41IDAgMCAwLS41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGRkUmFja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDF2MkgyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFhMiAyIDAgMCAwLTItMmgtMVY3aDFhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptLjUgM2EuNS41IDAgMSAxIDAtMSAuNS41IDAgMCAxIDAgMXptMiAwYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0tMiA3YS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0yIDBhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6TTEyIDd2Mkg0VjdoOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZGRSYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSA1YS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxek0zIDQuNWEuNS41IDAgMSAxLTEgMCAuNS41IDAgMCAxIDEgMHptMiA3YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem0tMi41LjVhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDF2MkgyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFhMiAyIDAgMCAwLTItMmgtMVY3aDFhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJIMnptMTMgMnYxYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxem0wIDd2MWExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMXYtMWExIDEgMCAwIDEgMS0xaDEyYTEgMSAwIDAgMSAxIDF6bS0zLTR2Mkg0VjdoOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZGRTdGFja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA5YTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJ2LTFhMiAyIDAgMCAwLTItMkgyem0uNSAzYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0yIDBhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6TTIgMmEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjRhMiAyIDAgMCAwLTItMkgyem0uNSAzYS41LjUgMCAxIDEgMC0xIC41LjUgMCAwIDEgMCAxem0yIDBhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGRkU3RhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTBhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xdi0xYTEgMSAwIDAgMSAxLTFoMTJ6TTIgOWEyIDIgMCAwIDAtMiAydjFhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi0xYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDExLjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6bS0yIDBhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6TTE0IDNhMSAxIDAgMCAxIDEgMXYxYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2MWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSA0LjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6bS0yIDBhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGRkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMWEuNS41IDAgMSAwIDAtMSAuNS41IDAgMCAwIDAgMXpNMyAxMC41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDExYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjkuNTFjMC0uNDE4LjEwNS0uODMuMzA1LTEuMTk3bDIuNDcyLTQuNTMxQTEuNSAxLjUgMCAwIDEgNC4wOTQgM2g3LjgxMmExLjUgMS41IDAgMCAxIDEuMzE3Ljc4MmwyLjQ3MiA0LjUzYy4yLjM2OC4zMDUuNzguMzA1IDEuMTk4VjExek0zLjY1NSA0LjI2IDEuNTkyIDguMDQzQzEuNzI0IDguMDE0IDEuODYgOCAyIDhoMTJjLjE0IDAgLjI3Ni4wMTQuNDA4LjA0MkwxMi4zNDUgNC4yNmEuNS41IDAgMCAwLS40MzktLjI2SDQuMDk0YS41LjUgMCAwIDAtLjQ0LjI2ek0xIDEwdjFhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0xYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hlYWRwaG9uZXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAzYTUgNSAwIDAgMC01IDV2MWgxYTEgMSAwIDAgMSAxIDF2M2ExIDEgMCAwIDEtMSAxSDNhMSAxIDAgMCAxLTEtMVY4YTYgNiAwIDEgMSAxMiAwdjVhMSAxIDAgMCAxLTEgMWgtMWExIDEgMCAwIDEtMS0xdi0zYTEgMSAwIDAgMSAxLTFoMVY4YTUgNSAwIDAgMC01LTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGVhZHNldFZyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMS4yNDhjMS44NTcgMCAzLjUyNi42NDEgNC42NSAxLjc5NGE0Ljk3OCA0Ljk3OCAwIDAgMSAyLjUxOCAxLjA5QzEzLjkwNyAxLjQ4MiAxMS4yOTUgMCA4IDAgNC43NSAwIDIuMTIgMS40OC44NDQgNC4xMjJhNC45NzkgNC45NzkgMCAwIDEgMi4yODktMS4wNDdDNC4yMzYgMS44NzIgNS45NzQgMS4yNDggOCAxLjI0OHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxMmEzLjk4OCAzLjk4OCAwIDAgMS0yLjc4Ni0xLjEzbC0uMDAyLS4wMDJhMS42MTIgMS42MTIgMCAwIDAtLjI3Ni0uMTY3QTIuMTY0IDIuMTY0IDAgMCAwIDggMTAuNWMtLjQxNCAwLS43MjkuMTAzLS45MzUuMjAxYTEuNjEyIDEuNjEyIDAgMCAwLS4yNzcuMTY3bC0uMDAyLjAwMkE0IDQgMCAxIDEgNCA0aDhhNCA0IDAgMCAxIDAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZWFkc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMWE1IDUgMCAwIDAtNSA1djFoMWExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMUgzYTEgMSAwIDAgMS0xLTFWNmE2IDYgMCAxIDEgMTIgMHY2YTIuNSAyLjUgMCAwIDEtMi41IDIuNUg5LjM2NmExIDEgMCAwIDEtLjg2Ni41aC0xYTEgMSAwIDEgMSAwLTJoMWExIDEgMCAwIDEgLjg2Ni41SDExLjVBMS41IDEuNSAwIDAgMCAxMyAxMmgtMWExIDEgMCAwIDEtMS0xVjhhMSAxIDAgMCAxIDEtMWgxVjZhNSA1IDAgMCAwLTUtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZWFydEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMS4zMTRDMTIuNDM4LTMuMjQ4IDIzLjUzNCA0LjczNSA4IDE1LTcuNTM0IDQuNzM2IDMuNTYyLTMuMjQ4IDggMS4zMTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGVhcnRIYWxmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMi43NDh2MTEuMDQ3YzMuNDUyLTIuMzY4IDUuMzY1LTQuNTQyIDYuMjg2LTYuMzU3Ljk1NS0xLjg4Ni44MzgtMy4zNjIuMzE0LTQuMzg1QzEzLjQ4Ni44NzggMTAuNC4yOCA4LjcxNyAyLjAxTDggMi43NDh6TTggMTVDLTcuMzMzIDQuODY4IDMuMjc5LTMuMDQgNy44MjQgMS4xNDNjLjA2LjA1NS4xMTkuMTEyLjE3Ni4xNzFhMy4xMiAzLjEyIDAgMCAxIC4xNzYtLjE3QzEyLjcyLTMuMDQyIDIzLjMzMyA0Ljg2NyA4IDE1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggMi43NDgtLjcxNy0uNzM3QzUuNi4yODEgMi41MTQuODc4IDEuNCAzLjA1M2MtLjUyMyAxLjAyMy0uNjQxIDIuNS4zMTQgNC4zODUuOTIgMS44MTUgMi44MzQgMy45ODkgNi4yODYgNi4zNTcgMy40NTItMi4zNjggNS4zNjUtNC41NDIgNi4yODYtNi4zNTcuOTU1LTEuODg2LjgzOC0zLjM2Mi4zMTQtNC4zODVDMTMuNDg2Ljg3OCAxMC40LjI4IDguNzE3IDIuMDFMOCAyLjc0OHpNOCAxNUMtNy4zMzMgNC44NjggMy4yNzktMy4wNCA3LjgyNCAxLjE0M2MuMDYuMDU1LjExOS4xMTIuMTc2LjE3MWEzLjEyIDMuMTIgMCAwIDEgLjE3Ni0uMTdDMTIuNzItMy4wNDIgMjMuMzMzIDQuODY3IDggMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGVwdGFnb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03Ljc3OS4wNTJhLjUuNSAwIDAgMSAuNDQyIDBsNi4wMTUgMi45N2EuNS41IDAgMCAxIC4yNjcuMzRsMS40ODUgNi42NzZhLjUuNSAwIDAgMS0uMDkzLjQxNWwtNC4xNjIgNS4zNTRhLjUuNSAwIDAgMS0uMzk1LjE5M0g0LjY2MmEuNS41IDAgMCAxLS4zOTUtLjE5M0wuMTA1IDEwLjQ1M2EuNS41IDAgMCAxLS4wOTMtLjQxNWwxLjQ4NS02LjY3NmEuNS41IDAgMCAxIC4yNjctLjM0TDcuNzc5LjA1M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZXB0YWdvbkhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NzkuMDUyYS41LjUgMCAwIDEgLjQ0MiAwbDYuMDE1IDIuOTdhLjUuNSAwIDAgMSAuMjY3LjM0bDEuNDg1IDYuNjc2YS41LjUgMCAwIDEtLjA5My40MTVsLTQuMTYyIDUuMzU0YS41LjUgMCAwIDEtLjM5NS4xOTNINC42NjJhLjUuNSAwIDAgMS0uMzk1LS4xOTNMLjEwNSAxMC40NTNhLjUuNSAwIDAgMS0uMDkzLS40MTVsMS40ODUtNi42NzZhLjUuNSAwIDAgMSAuMjY3LS4zNEw3Ljc3OS4wNTN6TTggMTVoMy4wOTNsMy44NjgtNC45NzUtMS4zODMtNi4yMTJMOCAxLjA1OFYxNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZXB0YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03Ljc3OS4wNTJhLjUuNSAwIDAgMSAuNDQyIDBsNi4wMTUgMi45N2EuNS41IDAgMCAxIC4yNjcuMzRsMS40ODUgNi42NzZhLjUuNSAwIDAgMS0uMDkzLjQxNWwtNC4xNjIgNS4zNTRhLjUuNSAwIDAgMS0uMzk1LjE5M0g0LjY2MmEuNS41IDAgMCAxLS4zOTUtLjE5M0wuMTA1IDEwLjQ1M2EuNS41IDAgMCAxLS4wOTMtLjQxNWwxLjQ4NS02LjY3NmEuNS41IDAgMCAxIC4yNjctLjM0TDcuNzc5LjA1M3pNMi40MjIgMy44MTNsLTEuMzgzIDYuMjEyTDQuOTA3IDE1aDYuMTg2bDMuODY4LTQuOTc1LTEuMzgzLTYuMjEyTDggMS4wNTggMi40MjIgMy44MTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSGV4YWdvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTguNS4xMzRhMSAxIDAgMCAwLTEgMGwtNiAzLjU3N2ExIDEgMCAwIDAtLjUuODY2djYuODQ2YTEgMSAwIDAgMCAuNS44NjZsNiAzLjU3N2ExIDEgMCAwIDAgMSAwbDYtMy41NzdhMSAxIDAgMCAwIC41LS44NjZWNC41NzdhMSAxIDAgMCAwLS41LS44NjZMOC41LjEzNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIZXhhZ29uSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCA0LjU3N3Y2Ljg0Nkw4IDE1VjFsNiAzLjU3N3pNOC41LjEzNGExIDEgMCAwIDAtMSAwbC02IDMuNTc3YTEgMSAwIDAgMC0uNS44NjZ2Ni44NDZhMSAxIDAgMCAwIC41Ljg2Nmw2IDMuNTc3YTEgMSAwIDAgMCAxIDBsNi0zLjU3N2ExIDEgMCAwIDAgLjUtLjg2NlY0LjU3N2ExIDEgMCAwIDAtLjUtLjg2Nkw4LjUuMTM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hleGFnb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNC41Nzd2Ni44NDZMOCAxNWwtNi0zLjU3N1Y0LjU3N0w4IDFsNiAzLjU3N3pNOC41LjEzNGExIDEgMCAwIDAtMSAwbC02IDMuNTc3YTEgMSAwIDAgMC0uNS44NjZ2Ni44NDZhMSAxIDAgMCAwIC41Ljg2Nmw2IDMuNTc3YTEgMSAwIDAgMCAxIDBsNi0zLjU3N2ExIDEgMCAwIDAgLjUtLjg2NlY0LjU3N2ExIDEgMCAwIDAtLjUtLjg2Nkw4LjUuMTM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0hvdXJnbGFzc0JvdHRvbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDEuNWEuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xdjFhNC41IDQuNSAwIDAgMS0yLjU1NyA0LjA2Yy0uMjkuMTM5LS40NDMuMzc3LS40NDMuNTl2LjdjMCAuMjEzLjE1NC40NTEuNDQzLjU5QTQuNSA0LjUgMCAwIDEgMTIuNSAxM3YxaDFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAxIDEgMC0xaDF2LTFhNC41IDQuNSAwIDAgMSAyLjU1Ny00LjA2Yy4yOS0uMTM5LjQ0My0uMzc3LjQ0My0uNTl2LS43YzAtLjIxMy0uMTU0LS40NTEtLjQ0My0uNTlBNC41IDQuNSAwIDAgMSAzLjUgM1YyaC0xYS41LjUgMCAwIDEtLjUtLjV6bTIuNS41djFhMy41IDMuNSAwIDAgMCAxLjk4OSAzLjE1OGMuNTMzLjI1NiAxLjAxMS43OTEgMS4wMTEgMS40OTF2LjcwMnMuMTguMTQ5LjUuMTQ5LjUtLjE1LjUtLjE1di0uN2MwLS43MDEuNDc4LTEuMjM2IDEuMDExLTEuNDkyQTMuNSAzLjUgMCAwIDAgMTEuNSAzVjJoLTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSG91cmdsYXNzU3BsaXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDE1YS41LjUgMCAxIDEgMC0xaDF2LTFhNC41IDQuNSAwIDAgMSAyLjU1Ny00LjA2Yy4yOS0uMTM5LjQ0My0uMzc3LjQ0My0uNTl2LS43YzAtLjIxMy0uMTU0LS40NTEtLjQ0My0uNTlBNC41IDQuNSAwIDAgMSAzLjUgM1YyaC0xYS41LjUgMCAwIDEgMC0xaDExYS41LjUgMCAwIDEgMCAxaC0xdjFhNC41IDQuNSAwIDAgMS0yLjU1NyA0LjA2Yy0uMjkuMTM5LS40NDMuMzc3LS40NDMuNTl2LjdjMCAuMjEzLjE1NC40NTEuNDQzLjU5QTQuNSA0LjUgMCAwIDEgMTIuNSAxM3YxaDFhLjUuNSAwIDAgMSAwIDFoLTExem0yLTEzdjFjMCAuNTM3LjEyIDEuMDQ1LjMzNyAxLjVoNi4zMjZjLjIxNi0uNDU1LjMzNy0uOTYzLjMzNy0xLjVWMmgtN3ptMyA2LjM1YzAgLjcwMS0uNDc4IDEuMjM2LTEuMDExIDEuNDkyQTMuNSAzLjUgMCAwIDAgNC41IDEzcy44NjYtMS4yOTkgMy0xLjQ4VjguMzV6bTEgMHYzLjE3YzIuMTM0LjE4MSAzIDEuNDggMyAxLjQ4YTMuNSAzLjUgMCAwIDAtMS45ODktMy4xNThDOC45NzggOS41ODYgOC41IDkuMDUyIDguNSA4LjM1MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIb3VyZ2xhc3NUb3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxNC41YS41LjUgMCAwIDAgLjUuNWgxMWEuNS41IDAgMSAwIDAtMWgtMXYtMWE0LjUgNC41IDAgMCAwLTIuNTU3LTQuMDZjLS4yOS0uMTM5LS40NDMtLjM3Ny0uNDQzLS41OXYtLjdjMC0uMjEzLjE1NC0uNDUxLjQ0My0uNTlBNC41IDQuNSAwIDAgMCAxMi41IDNWMmgxYS41LjUgMCAwIDAgMC0xaC0xMWEuNS41IDAgMCAwIDAgMWgxdjFhNC41IDQuNSAwIDAgMCAyLjU1NyA0LjA2Yy4yOS4xMzkuNDQzLjM3Ny40NDMuNTl2LjdjMCAuMjEzLS4xNTQuNDUxLS40NDMuNTlBNC41IDQuNSAwIDAgMCAzLjUgMTN2MWgtMWEuNS41IDAgMCAwLS41LjV6bTIuNS0uNXYtMWEzLjUgMy41IDAgMCAxIDEuOTg5LTMuMTU4Yy41MzMtLjI1NiAxLjAxMS0uNzkgMS4wMTEtMS40OTF2LS43MDJzLjE4LjEwMS41LjEwMS41LS4xLjUtLjF2LjdjMCAuNzAxLjQ3OCAxLjIzNiAxLjAxMSAxLjQ5MkEzLjUgMy41IDAgMCAxIDExLjUgMTN2MWgtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIb3VyZ2xhc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxLjVhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMXYxYTQuNSA0LjUgMCAwIDEtMi41NTcgNC4wNmMtLjI5LjEzOS0uNDQzLjM3Ny0uNDQzLjU5di43YzAgLjIxMy4xNTQuNDUxLjQ0My41OUE0LjUgNC41IDAgMCAxIDEyLjUgMTN2MWgxYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMSAxIDAtMWgxdi0xYTQuNSA0LjUgMCAwIDEgMi41NTctNC4wNmMuMjktLjEzOS40NDMtLjM3Ny40NDMtLjU5di0uN2MwLS4yMTMtLjE1NC0uNDUxLS40NDMtLjU5QTQuNSA0LjUgMCAwIDEgMy41IDNWMmgtMWEuNS41IDAgMCAxLS41LS41em0yLjUuNXYxYTMuNSAzLjUgMCAwIDAgMS45ODkgMy4xNThjLjUzMy4yNTYgMS4wMTEuNzkxIDEuMDExIDEuNDkxdi43MDJjMCAuNy0uNDc4IDEuMjM1LTEuMDExIDEuNDkxQTMuNSAzLjUgMCAwIDAgNC41IDEzdjFoN3YtMWEzLjUgMy41IDAgMCAwLTEuOTg5LTMuMTU4QzguOTc4IDkuNTg2IDguNSA5LjA1MiA4LjUgOC4zNTF2LS43MDJjMC0uNy40NzgtMS4yMzUgMS4wMTEtMS40OTFBMy41IDMuNSAwIDAgMCAxMS41IDNWMmgtN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIb3VzZURvb3JGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxNC41di0zLjUwNWMwLS4yNDUuMjUtLjQ5NS41LS40OTVoMmMuMjUgMCAuNS4yNS41LjV2My41YS41LjUgMCAwIDAgLjUuNWg0YS41LjUgMCAwIDAgLjUtLjV2LTdhLjUuNSAwIDAgMC0uMTQ2LS4zNTRMMTMgNS43OTNWMi41YS41LjUgMCAwIDAtLjUtLjVoLTFhLjUuNSAwIDAgMC0uNS41djEuMjkzTDguMzU0IDEuMTQ2YS41LjUgMCAwIDAtLjcwOCAwbC02IDZBLjUuNSAwIDAgMCAxLjUgNy41djdhLjUuNSAwIDAgMCAuNS41aDRhLjUuNSAwIDAgMCAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIb3VzZURvb3IgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4zNTQgMS4xNDZhLjUuNSAwIDAgMC0uNzA4IDBsLTYgNkEuNS41IDAgMCAwIDEuNSA3LjV2N2EuNS41IDAgMCAwIC41LjVoNC41YS41LjUgMCAwIDAgLjUtLjV2LTRoMnY0YS41LjUgMCAwIDAgLjUuNUgxNGEuNS41IDAgMCAwIC41LS41di03YS41LjUgMCAwIDAtLjE0Ni0uMzU0TDEzIDUuNzkzVjIuNWEuNS41IDAgMCAwLS41LS41aC0xYS41LjUgMCAwIDAtLjUuNXYxLjI5M0w4LjM1NCAxLjE0NnpNMi41IDE0VjcuNzA3bDUuNS01LjUgNS41IDUuNVYxNEgxMHYtNGEuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDAtLjUuNXY0SDIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNIb3VzZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwibTggMy4yOTMgNiA2VjEzLjVhMS41IDEuNSAwIDAgMS0xLjUgMS41aC05QTEuNSAxLjUgMCAwIDEgMiAxMy41VjkuMjkzbDYtNnptNS0uNzkzVjZsLTItMlYyLjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy4yOTMgMS41YTEgMSAwIDAgMSAxLjQxNCAwbDYuNjQ3IDYuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCAyLjIwNyAxLjM1NCA4Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw3LjI5MyAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSG91c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTMuNVY3aDF2Ni41YS41LjUgMCAwIDAgLjUuNWg5YS41LjUgMCAwIDAgLjUtLjVWN2gxdjYuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTlBMS41IDEuNSAwIDAgMSAyIDEzLjV6bTExLTExVjZsLTItMlYyLjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy4yOTMgMS41YTEgMSAwIDAgMSAxLjQxNCAwbDYuNjQ3IDYuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCAyLjIwNyAxLjM1NCA4Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw3LjI5MyAxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSHIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgM0g0YTEgMSAwIDAgMC0xIDF2Mi41SDJWNGEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYyLjVoLTFWNGExIDEgMCAwIDAtMS0xek0yIDkuNWgxVjEyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjkuNWgxVjEyYTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjkuNXptLTEuNS0yYS41LjUgMCAwIDAgMCAxaDE1YS41LjUgMCAwIDAgMC0xSC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0h1cnJpY2FuZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljk5OSAyLjZBNS41IDUuNSAwIDAgMSAxNSA3LjVhLjUuNSAwIDAgMCAxIDAgNi41IDYuNSAwIDEgMC0xMyAwIDUgNSAwIDAgMCA2LjAwMSA0LjlBNS41IDUuNSAwIDAgMSAxIDcuNWEuNS41IDAgMCAwLTEgMCA2LjUgNi41IDAgMSAwIDEzIDAgNSA1IDAgMCAwLTYuMDAxLTQuOXpNMTAgNy41YTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNJbWFnZUFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIuNWEyLjUgMi41IDAgMSAxLTUgMCAyLjUgMi41IDAgMCAxIDUgMHptNC4yMjUgNC4wNTNhLjUuNSAwIDAgMC0uNTc3LjA5M2wtMy43MSA0LjcxLTIuNjYtMi43NzJhLjUuNSAwIDAgMC0uNjMuMDYyTC4wMDIgMTN2MmExIDEgMCAwIDAgMSAxaDE0YTEgMSAwIDAgMCAxLTF2LTQuNWwtNC43NzctMy45NDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSW1hZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS4wMDIgM2EyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMmgtMTJhMiAyIDAgMCAxLTItMlYzem0xIDl2MWExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWOS41bC0zLjc3Ny0xLjk0N2EuNS41IDAgMCAwLS41NzcuMDkzbC0zLjcxIDMuNzEtMi42Ni0xLjc3MmEuNS41IDAgMCAwLS42My4wNjJMMS4wMDIgMTJ6bTUtNi41YTEuNSAxLjUgMCAxIDAtMyAwIDEuNSAxLjUgMCAwIDAgMyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ltYWdlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMDAyIDUuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjAwMiAxYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjNhMiAyIDAgMCAwLTItMmgtMTJ6bTEyIDFhMSAxIDAgMCAxIDEgMXY2LjVsLTMuNzc3LTEuOTQ3YS41LjUgMCAwIDAtLjU3Ny4wOTNsLTMuNzEgMy43MS0yLjY2LTEuNzcyYS41LjUgMCAwIDAtLjYzLjA2MkwxLjAwMiAxMlYzYTEgMSAwIDAgMSAxLTFoMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSW1hZ2VzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTAyIDlhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuMDAyIDEzYTIgMiAwIDAgMS0yIDJoLTEwYTIgMiAwIDAgMS0yLTJWNUEyIDIgMCAwIDEgMiAzYTIgMiAwIDAgMSAyLTJoMTBhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0xLjk5OCAyek0xNCAySDRhMSAxIDAgMCAwLTEgMWg5LjAwMmEyIDIgMCAwIDEgMiAydjdBMSAxIDAgMCAwIDE1IDExVjNhMSAxIDAgMCAwLTEtMXpNMi4wMDIgNGExIDEgMCAwIDAtMSAxdjhsMi42NDYtMi4zNTRhLjUuNSAwIDAgMSAuNjMtLjA2MmwyLjY2IDEuNzczIDMuNzEtMy43MWEuNS41IDAgMCAxIC41NzctLjA5NGwxLjc3NyAxLjk0N1Y1YTEgMSAwIDAgMC0xLTFoLTEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luYm94RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk4IDRhLjUuNSAwIDAgMC0uMzkuMTg4TDEuNTQgOEg2YS41LjUgMCAwIDEgLjUuNSAxLjUgMS41IDAgMSAwIDMgMEEuNS41IDAgMCAxIDEwIDhoNC40NmwtMy4wNS0zLjgxMkEuNS41IDAgMCAwIDExLjAyIDRINC45OHptLTEuMTctLjQzN0ExLjUgMS41IDAgMCAxIDQuOTggM2g2LjA0YTEuNSAxLjUgMCAwIDEgMS4xNy41NjNsMy43IDQuNjI1YS41LjUgMCAwIDEgLjEwNi4zNzRsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxM0gxLjg4M2ExLjUgMS41IDAgMCAxLTEuNDg5LTEuMzE0bC0uMzktMy4xMjRhLjUuNSAwIDAgMSAuMTA2LS4zNzRsMy43LTQuNjI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTggNGEuNS41IDAgMCAwLS4zOS4xODhMMS41NCA4SDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAxIDAgMyAwQS41LjUgMCAwIDEgMTAgOGg0LjQ2bC0zLjA1LTMuODEyQS41LjUgMCAwIDAgMTEuMDIgNEg0Ljk4em05Ljk1NCA1SDEwLjQ1YTIuNSAyLjUgMCAwIDEtNC45IDBIMS4wNjZsLjMyIDIuNTYyYS41LjUgMCAwIDAgLjQ5Ny40MzhoMTIuMjM0YS41LjUgMCAwIDAgLjQ5Ni0uNDM4TDE0LjkzMyA5ek0zLjgwOSAzLjU2M0ExLjUgMS41IDAgMCAxIDQuOTgxIDNoNi4wMzhhMS41IDEuNSAwIDAgMSAxLjE3Mi41NjNsMy43IDQuNjI1YS41LjUgMCAwIDEgLjEwNS4zNzRsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxM0gxLjg4M2ExLjUgMS41IDAgMCAxLTEuNDg5LTEuMzE0bC0uMzktMy4xMjRhLjUuNSAwIDAgMSAuMTA2LS4zNzRsMy43LTQuNjI1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luYm94ZXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuOTggMWEuNS41IDAgMCAwLS4zOS4xODhMMS41NCA1SDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAwIDAgMyAwQS41LjUgMCAwIDEgMTAgNWg0LjQ2bC0zLjA1LTMuODEyQS41LjUgMCAwIDAgMTEuMDIgMUg0Ljk4ek0zLjgxLjU2M0ExLjUgMS41IDAgMCAxIDQuOTggMGg2LjA0YTEuNSAxLjUgMCAwIDEgMS4xNy41NjNsMy43IDQuNjI1YS41LjUgMCAwIDEgLjEwNi4zNzRsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxMEgxLjg4M0ExLjUgMS41IDAgMCAxIC4zOTQgOC42ODZsLS4zOS0zLjEyNGEuNS41IDAgMCAxIC4xMDYtLjM3NEwzLjgxLjU2M3pNLjEyNSAxMS4xN0EuNS41IDAgMCAxIC41IDExSDZhLjUuNSAwIDAgMSAuNS41IDEuNSAxLjUgMCAwIDAgMyAwIC41LjUgMCAwIDEgLjUtLjVoNS41YS41LjUgMCAwIDEgLjQ5Ni41NjJsLS4zOSAzLjEyNEExLjUgMS41IDAgMCAxIDE0LjExNyAxNkgxLjg4M2ExLjUgMS41IDAgMCAxLTEuNDg5LTEuMzE0bC0uMzktMy4xMjRhLjUuNSAwIDAgMSAuMTIxLS4zOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSW5ib3hlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljk4IDFhLjUuNSAwIDAgMC0uMzkuMTg4TDEuNTQgNUg2YS41LjUgMCAwIDEgLjUuNSAxLjUgMS41IDAgMCAwIDMgMEEuNS41IDAgMCAxIDEwIDVoNC40NmwtMy4wNS0zLjgxMkEuNS41IDAgMCAwIDExLjAyIDFINC45OHptOS45NTQgNUgxMC40NWEyLjUgMi41IDAgMCAxLTQuOSAwSDEuMDY2bC4zMiAyLjU2MkEuNS41IDAgMCAwIDEuODg0IDloMTIuMjM0YS41LjUgMCAwIDAgLjQ5Ni0uNDM4TDE0LjkzMyA2ek0zLjgwOS41NjNBMS41IDEuNSAwIDAgMSA0Ljk4MSAwaDYuMDM4YTEuNSAxLjUgMCAwIDEgMS4xNzIuNTYzbDMuNyA0LjYyNWEuNS41IDAgMCAxIC4xMDUuMzc0bC0uMzkgMy4xMjRBMS41IDEuNSAwIDAgMSAxNC4xMTcgMTBIMS44ODNBMS41IDEuNSAwIDAgMSAuMzk0IDguNjg2bC0uMzktMy4xMjRhLjUuNSAwIDAgMSAuMTA2LS4zNzRMMy44MS41NjN6TS4xMjUgMTEuMTdBLjUuNSAwIDAgMSAuNSAxMUg2YS41LjUgMCAwIDEgLjUuNSAxLjUgMS41IDAgMCAwIDMgMCAuNS41IDAgMCAxIC41LS41aDUuNWEuNS41IDAgMCAxIC40OTYuNTYybC0uMzkgMy4xMjRBMS41IDEuNSAwIDAgMSAxNC4xMTcgMTZIMS44ODNhMS41IDEuNSAwIDAgMS0xLjQ4OS0xLjMxNGwtLjM5LTMuMTI0YS41LjUgMCAwIDEgLjEyMS0uMzkzem0uOTQxLjgzLjMyIDIuNTYyYS41LjUgMCAwIDAgLjQ5Ny40MzhoMTIuMjM0YS41LjUgMCAwIDAgLjQ5Ni0uNDM4bC4zMi0yLjU2MkgxMC40NWEyLjUgMi41IDAgMCAxLTQuOSAwSDEuMDY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luZm9DaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnptLjkzLTkuNDEyLTEgNC43MDVjLS4wNy4zNC4wMjkuNTMzLjMwNC41MzMuMTk0IDAgLjQ4Ny0uMDcuNjg2LS4yNDZsLS4wODguNDE2Yy0uMjg3LjM0Ni0uOTIuNTk4LTEuNDY1LjU5OC0uNzAzIDAtMS4wMDItLjQyMi0uODA4LTEuMzE5bC43MzgtMy40NjhjLjA2NC0uMjkzLjAwNi0uMzk5LS4yODctLjQ3bC0uNDUxLS4wODEuMDgyLS4zODEgMi4yOS0uMjg3ek04IDUuNWExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSW5mb0NpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguOTMgNi41ODgtMi4yOS4yODctLjA4Mi4zOC40NS4wODNjLjI5NC4wNy4zNTIuMTc2LjI4OC40NjlsLS43MzggMy40NjhjLS4xOTQuODk3LjEwNSAxLjMxOS44MDggMS4zMTkuNTQ1IDAgMS4xNzgtLjI1MiAxLjQ2NS0uNTk4bC4wODgtLjQxNmMtLjIuMTc2LS40OTIuMjQ2LS42ODYuMjQ2LS4yNzUgMC0uMzc1LS4xOTMtLjMwNC0uNTMzTDguOTMgNi41ODh6TTkgNC41YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNJbmZvTGcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuMjc3IDUuNDMzLTQuMDMxLjUwNS0uMTQ1LjY3Ljc5NC4xNDVjLjUxNi4xMjMuNjE5LjMwOS41MDUuODI0TDYuMTAxIDEzLjY4Yy0uMzQgMS41NzguMTg2IDIuMzIgMS40MjMgMi4zMi45NTkgMCAyLjA3Mi0uNDQzIDIuNTc3LTEuMDUybC4xNTUtLjczMmMtLjM1LjMxLS44NjYuNDM0LTEuMjA2LjQzNC0uNDg1IDAtLjY2LS4zNC0uNTM2LS45MzlsMS43NjMtOC4yNzh6bS4xMjItMy42NzNhMS43NiAxLjc2IDAgMSAxLTMuNTIgMCAxLjc2IDEuNzYgMCAwIDEgMy41MiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luZm9TcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMnptOC45MyA0LjU4OC0yLjI5LjI4Ny0uMDgyLjM4LjQ1LjA4M2MuMjk0LjA3LjM1Mi4xNzYuMjg4LjQ2OWwtLjczOCAzLjQ2OGMtLjE5NC44OTcuMTA1IDEuMzE5LjgwOCAxLjMxOS41NDUgMCAxLjE3OC0uMjUyIDEuNDY1LS41OThsLjA4OC0uNDE2Yy0uMi4xNzYtLjQ5Mi4yNDYtLjY4Ni4yNDYtLjI3NSAwLS4zNzUtLjE5My0uMzA0LS41MzNMOC45MyA2LjU4OHpNOCA1LjVhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luZm9TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguOTMgNi41ODgtMi4yOS4yODctLjA4Mi4zOC40NS4wODNjLjI5NC4wNy4zNTIuMTc2LjI4OC40NjlsLS43MzggMy40NjhjLS4xOTQuODk3LjEwNSAxLjMxOS44MDggMS4zMTkuNTQ1IDAgMS4xNzgtLjI1MiAxLjQ2NS0uNTk4bC4wODgtLjQxNmMtLjIuMTc2LS40OTIuMjQ2LS42ODYuMjQ2LS4yNzUgMC0uMzc1LS4xOTMtLjMwNC0uNTMzTDguOTMgNi41ODh6TTkgNC41YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNJbmZvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTguOTMgNi41ODgtMi4yOS4yODctLjA4Mi4zOC40NS4wODNjLjI5NC4wNy4zNTIuMTc2LjI4OC40NjlsLS43MzggMy40NjhjLS4xOTQuODk3LjEwNSAxLjMxOS44MDggMS4zMTkuNTQ1IDAgMS4xNzgtLjI1MiAxLjQ2NS0uNTk4bC4wODgtLjQxNmMtLjIuMTc2LS40OTIuMjQ2LS42ODYuMjQ2LS4yNzUgMC0uMzc1LS4xOTMtLjMwNC0uNTMzTDguOTMgNi41ODh6TTkgNC41YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNJbnB1dEN1cnNvclRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMmEuNS41IDAgMCAxIC41LS41Yy44NjIgMCAxLjU3My4yODcgMi4wNi41NjYuMTc0LjA5OS4zMjEuMTk4LjQ0LjI4Ni4xMTktLjA4OC4yNjYtLjE4Ny40NC0uMjg2QTQuMTY1IDQuMTY1IDAgMCAxIDEwLjUgMS41YS41LjUgMCAwIDEgMCAxYy0uNjM4IDAtMS4xNzcuMjEzLTEuNTY0LjQzNGEzLjQ5IDMuNDkgMCAwIDAtLjQzNi4yOTRWNy41SDlhLjUuNSAwIDAgMSAwIDFoLS41djQuMjcyYy4xLjA4LjI0OC4xODcuNDM2LjI5NC4zODcuMjIxLjkyNi40MzQgMS41NjQuNDM0YS41LjUgMCAwIDEgMCAxIDQuMTY1IDQuMTY1IDAgMCAxLTIuMDYtLjU2NkE0LjU2MSA0LjU2MSAwIDAgMSA4IDEzLjY1YTQuNTYxIDQuNTYxIDAgMCAxLS40NC4yODUgNC4xNjUgNC4xNjUgMCAwIDEtMi4wNi41NjYuNS41IDAgMCAxIDAtMWMuNjM4IDAgMS4xNzctLjIxMyAxLjU2NC0uNDM0LjE4OC0uMTA3LjMzNS0uMjE0LjQzNi0uMjk0VjguNUg3YS41LjUgMCAwIDEgMC0xaC41VjMuMjI4YTMuNDkgMy40OSAwIDAgMC0uNDM2LS4yOTRBMy4xNjYgMy4xNjYgMCAwIDAgNS41IDIuNS41LjUgMCAwIDEgNSAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDVoNGExIDEgMCAwIDEgMSAxdjRhMSAxIDAgMCAxLTEgMWgtNHYxaDRhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJoLTR2MXpNNiA1VjRIMmEyIDIgMCAwIDAtMiAydjRhMiAyIDAgMCAwIDIgMmg0di0xSDJhMSAxIDAgMCAxLTEtMVY2YTEgMSAwIDAgMSAxLTFoNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNJbnB1dEN1cnNvciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA1aDRhMSAxIDAgMCAxIDEgMXY0YTEgMSAwIDAgMS0xIDFoLTR2MWg0YTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0yaC00djF6TTYgNVY0SDJhMiAyIDAgMCAwLTIgMnY0YTIgMiAwIDAgMCAyIDJoNHYtMUgyYTEgMSAwIDAgMS0xLTFWNmExIDEgMCAwIDEgMS0xaDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMWEuNS41IDAgMCAxIC41LjV2MTNhLjUuNSAwIDAgMS0xIDB2LTEzQS41LjUgMCAwIDEgOCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0luc3RhZ3JhbSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBDNS44MjkgMCA1LjU1Ni4wMSA0LjcwMy4wNDggMy44NS4wODggMy4yNjkuMjIyIDIuNzYuNDJhMy45MTcgMy45MTcgMCAwIDAtMS40MTcuOTIzQTMuOTI3IDMuOTI3IDAgMCAwIC40MiAyLjc2Qy4yMjIgMy4yNjguMDg3IDMuODUuMDQ4IDQuNy4wMSA1LjU1NSAwIDUuODI3IDAgOC4wMDFjMCAyLjE3Mi4wMSAyLjQ0NC4wNDggMy4yOTcuMDQuODUyLjE3NCAxLjQzMy4zNzIgMS45NDIuMjA1LjUyNi40NzguOTcyLjkyMyAxLjQxNy40NDQuNDQ1Ljg5LjcxOSAxLjQxNi45MjMuNTEuMTk4IDEuMDkuMzMzIDEuOTQyLjM3MkM1LjU1NSAxNS45OSA1LjgyNyAxNiA4IDE2czIuNDQ0LS4wMSAzLjI5OC0uMDQ4Yy44NTEtLjA0IDEuNDM0LS4xNzQgMS45NDMtLjM3MmEzLjkxNiAzLjkxNiAwIDAgMCAxLjQxNi0uOTIzYy40NDUtLjQ0NS43MTgtLjg5MS45MjMtMS40MTcuMTk3LS41MDkuMzMyLTEuMDkuMzcyLTEuOTQyQzE1Ljk5IDEwLjQ0NSAxNiAxMC4xNzMgMTYgOHMtLjAxLTIuNDQ1LS4wNDgtMy4yOTljLS4wNC0uODUxLS4xNzUtMS40MzMtLjM3Mi0xLjk0MWEzLjkyNiAzLjkyNiAwIDAgMC0uOTIzLTEuNDE3QTMuOTExIDMuOTExIDAgMCAwIDEzLjI0LjQyYy0uNTEtLjE5OC0xLjA5Mi0uMzMzLTEuOTQzLS4zNzJDMTAuNDQzLjAxIDEwLjE3MiAwIDcuOTk4IDBoLjAwM3ptLS43MTcgMS40NDJoLjcxOGMyLjEzNiAwIDIuMzg5LjAwNyAzLjIzMi4wNDYuNzguMDM1IDEuMjA0LjE2NiAxLjQ4Ni4yNzUuMzczLjE0NS42NC4zMTkuOTIuNTk5LjI4LjI4LjQ1My41NDYuNTk4LjkyLjExLjI4MS4yNC43MDUuMjc1IDEuNDg1LjAzOS44NDMuMDQ3IDEuMDk2LjA0NyAzLjIzMXMtLjAwOCAyLjM4OS0uMDQ3IDMuMjMyYy0uMDM1Ljc4LS4xNjYgMS4yMDMtLjI3NSAxLjQ4NWEyLjQ3IDIuNDcgMCAwIDEtLjU5OS45MTljLS4yOC4yOC0uNTQ2LjQ1My0uOTIuNTk4LS4yOC4xMS0uNzA0LjI0LTEuNDg1LjI3Ni0uODQzLjAzOC0xLjA5Ni4wNDctMy4yMzIuMDQ3cy0yLjM5LS4wMDktMy4yMzMtLjA0N2MtLjc4LS4wMzYtMS4yMDMtLjE2Ni0xLjQ4NS0uMjc2YTIuNDc4IDIuNDc4IDAgMCAxLS45Mi0uNTk4IDIuNDggMi40OCAwIDAgMS0uNi0uOTJjLS4xMDktLjI4MS0uMjQtLjcwNS0uMjc1LTEuNDg1LS4wMzgtLjg0My0uMDQ2LTEuMDk2LS4wNDYtMy4yMzMgMC0yLjEzNi4wMDgtMi4zODguMDQ2LTMuMjMxLjAzNi0uNzguMTY2LTEuMjA0LjI3Ni0xLjQ4Ni4xNDUtLjM3My4zMTktLjY0LjU5OS0uOTIuMjgtLjI4LjU0Ni0uNDUzLjkyLS41OTguMjgyLS4xMS43MDUtLjI0IDEuNDg1LS4yNzYuNzM4LS4wMzQgMS4wMjQtLjA0NCAyLjUxNS0uMDQ1di4wMDJ6bTQuOTg4IDEuMzI4YS45Ni45NiAwIDEgMCAwIDEuOTIuOTYuOTYgMCAwIDAgMC0xLjkyem0tNC4yNyAxLjEyMmE0LjEwOSA0LjEwOSAwIDEgMCAwIDguMjE3IDQuMTA5IDQuMTA5IDAgMCAwIDAtOC4yMTd6bTAgMS40NDFhMi42NjcgMi42NjcgMCAxIDEgMCA1LjMzNCAyLjY2NyAyLjY2NyAwIDAgMSAwLTUuMzM0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0ludGVyc2VjdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtMkgyYTIgMiAwIDAgMS0yLTJWMnptNSAxMHYyYTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjZhMSAxIDAgMCAwLTEtMWgtMnY1YTIgMiAwIDAgMS0yIDJINXptNi04VjJhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDJWNmEyIDIgMCAwIDEgMi0yaDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSm91cm5hbEFsYnVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA0YS41LjUgMCAwIDAtLjUuNXY1YS41LjUgMCAwIDAgLjUuNWg1YS41LjUgMCAwIDAgLjUtLjV2LTVhLjUuNSAwIDAgMC0uNS0uNWgtNXptMSA3YS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAwLTFoLTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAwaDEwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTFoMXYxYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFIM2ExIDEgMCAwIDAtMSAxdjFIMVYyYTIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1di0uNWEuNS41IDAgMCAxIDEgMFY1aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDBWOGguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwdi41aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSm91cm5hbEFycm93RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA1YS41LjUgMCAwIDEgLjUuNXYzLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4IDBsLTItMmEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgOS4yOTNWNS41QS41LjUgMCAwIDEgOCA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGgxMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0ydi0xaDF2MWExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxSDFWMmEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNXYtLjVhLjUuNSAwIDAgMSAxIDBWNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwVjhoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMHYuNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0pvdXJuYWxBcnJvd1VwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDExYS41LjUgMCAwIDAgLjUtLjVWNi43MDdsMS4xNDYgMS4xNDdhLjUuNSAwIDAgMCAuNzA4LS43MDhsLTItMmEuNS41IDAgMCAwLS43MDggMGwtMiAyYS41LjUgMCAxIDAgLjcwOC43MDhMNy41IDYuNzA3VjEwLjVhLjUuNSAwIDAgMCAuNS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGgxMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0ydi0xaDF2MWExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxSDFWMmEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNXYtLjVhLjUuNSAwIDAgMSAxIDBWNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwVjhoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMHYuNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0pvdXJuYWxCb29rbWFya0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMWg2djdhLjUuNSAwIDAgMS0uNzU3LjQyOUw5IDcuMDgzIDYuNzU3IDguNDNBLjUuNSAwIDAgMSA2IDhWMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsQm9va21hcmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgOFYxaDF2Ni4xMTdMOC43NDMgNi4wN2EuNS41IDAgMCAxIC41MTQgMEwxMSA3LjExN1YxaDF2N2EuNS41IDAgMCAxLS43NTcuNDI5TDkgNy4wODMgNi43NTcgOC40M0EuNS41IDAgMCAxIDYgOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsQ2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjg1NCA2LjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAxIDEgLjcwOC0uNzA4TDcuNSA4Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsQ29kZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC42NDYgNS42NDZhLjUuNSAwIDAgMSAuNzA4IDBsMiAyYS41LjUgMCAwIDEgMCAuNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuMjkzIDggOC42NDYgNi4zNTRhLjUuNSAwIDAgMSAwLS43MDh6bS0xLjI5MiAwYS41LjUgMCAwIDAtLjcwOCAwbC0yIDJhLjUuNSAwIDAgMCAwIC43MDhsMiAyYS41LjUgMCAwIDAgLjcwOC0uNzA4TDUuNzA3IDhsMS42NDctMS42NDZhLjUuNSAwIDAgMCAwLS43MDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAwaDEwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTFoMXYxYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFIM2ExIDEgMCAwIDAtMSAxdjFIMVYyYTIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1di0uNWEuNS41IDAgMCAxIDEgMFY1aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDBWOGguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwdi41aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSm91cm5hbE1lZGljYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNGEuNS41IDAgMCAxIC41LjV2LjYzNGwuNTQ5LS4zMTdhLjUuNSAwIDEgMSAuNS44NjZMOSA2bC41NDkuMzE3YS41LjUgMCAxIDEtLjUuODY2TDguNSA2Ljg2NlY3LjVhLjUuNSAwIDAgMS0xIDB2LS42MzRsLS41NDkuMzE3YS41LjUgMCAxIDEtLjUtLjg2Nkw3IDZsLS41NDktLjMxN2EuNS41IDAgMCAxIC41LS44NjZsLjU0OS4zMTdWNC41QS41LjUgMCAwIDEgOCA0ek01IDkuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGgxMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0ydi0xaDF2MWExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxSDFWMmEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNXYtLjVhLjUuNSAwIDAgMSAxIDBWNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwVjhoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMHYuNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0pvdXJuYWxNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS41IDhhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCA1LjVhLjUuNSAwIDAgMSAuNS41djEuNUgxMGEuNS41IDAgMCAxIDAgMUg4LjVWMTBhLjUuNSAwIDAgMS0xIDBWOC41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjZhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsUmljaHRleHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDMuNzVhLjc1Ljc1IDAgMSAxLTEuNSAwIC43NS43NSAwIDAgMSAxLjUgMHptLS44NjEgMS41NDIgMS4zMy44ODYgMS44NTQtMS44NTVhLjI1LjI1IDAgMCAxIC4yODktLjA0N0wxMSA0Ljc1VjdhLjUuNSAwIDAgMS0uNS41aC01QS41LjUgMCAwIDEgNSA3di0uNXMxLjU0LTEuMjc0IDEuNjM5LTEuMjA4ek01IDkuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGgxMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIM2EyIDIgMCAwIDEtMi0ydi0xaDF2MWExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDNhMSAxIDAgMCAwLTEgMXYxSDFWMmEyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNXYtLjVhLjUuNSAwIDAgMSAxIDBWNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwVjhoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMHYuNWguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0pvdXJuYWxUZXh0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTAuNWEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMS0uNS0uNXptMC0yYS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0wLTJhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bTAtMmEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFsWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi4xNDYgNi4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMSAxIC43MDguNzA4TDguNzA3IDhsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3IDYuODU0IDkuODU0YS41LjUgMCAwIDEtLjcwOC0uNzA4TDcuMjkzIDggNi4xNDYgNi44NTRhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAwaDEwYTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTFoMXYxYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFIM2ExIDEgMCAwIDAtMSAxdjFIMVYyYTIgMiAwIDAgMSAyLTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA1di0uNWEuNS41IDAgMCAxIDEgMFY1aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDBWOGguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwdi41aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSm91cm5hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDBoMTBhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtMWgxdjFhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgzYTEgMSAwIDAgMC0xIDF2MUgxVjJhMiAyIDAgMCAxIDItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDV2LS41YS41LjUgMCAwIDEgMSAwVjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAzdi0uNWEuNS41IDAgMCAxIDEgMFY4aC41YS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEgMC0xSDF6bTAgM3YtLjVhLjUuNSAwIDAgMSAxIDB2LjVoLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3VybmFscyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDBoOGEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDIgMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJoMWExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMVY0YTEgMSAwIDAgMC0xLTFIM2ExIDEgMCAwIDAtMSAxSDFhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2OWExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUg1YTEgMSAwIDAgMC0xIDFIM2EyIDIgMCAwIDEgMi0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgNnYtLjVhLjUuNSAwIDAgMSAxIDBWNmguNWEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxIDAtMUgxem0wIDN2LS41YS41LjUgMCAwIDEgMSAwVjloLjVhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMSAwLTFIMXptMCAyLjV2LjVILjVhLjUuNSAwIDAgMCAwIDFoMmEuNS41IDAgMCAwIDAtMUgydi0uNWEuNS41IDAgMCAwLTEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNKb3lzdGljayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAyYTIgMiAwIDAgMS0xLjUgMS45Mzd2NS4wODdjLjg2My4wODMgMS41LjM3NyAxLjUuNzI2IDAgLjQxNC0uODk1Ljc1LTIgLjc1cy0yLS4zMzYtMi0uNzVjMC0uMzUuNjM3LS42NDMgMS41LS43MjZWMy45MzdBMiAyIDAgMSAxIDEwIDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA5LjY2NXYxLjcxN2ExIDEgMCAwIDAgLjU1My44OTRsNi41NTMgMy4yNzdhMiAyIDAgMCAwIDEuNzg4IDBsNi41NTMtMy4yNzdhMSAxIDAgMCAwIC41NTMtLjg5NFY5LjY2NWMwLS4xLS4wNi0uMTktLjE1Mi0uMjNMOS41IDYuNzE1di45OTNsNS4yMjcgMi4xNzhhLjEyNS4xMjUgMCAwIDEgLjAwMS4yM2wtNS45NCAyLjU0NmEyIDIgMCAwIDEtMS41NzYgMGwtNS45NC0yLjU0NmEuMTI1LjEyNSAwIDAgMSAuMDAxLS4yM0w2LjUgNy43MDhsLS4wMTMtLjk4OEwuMTUyIDkuNDM1YS4yNS4yNSAwIDAgMC0uMTUyLjIzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0p1c3RpZnlMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDEyLjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bTAtM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41em0wLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptMC0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzSnVzdGlmeVJpZ2h0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02IDEyLjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bS00LTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptMC0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6bTAtM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0p1c3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIgMTIuNWEuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41em0wLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptMC0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6bTAtM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0thbmJhbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDExYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yaC0xMXptNSAyaDFhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFoLTFhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTF6bS01IDFhMSAxIDAgMCAxIDEtMWgxYTEgMSAwIDAgMSAxIDF2N2ExIDEgMCAwIDEtMSAxaC0xYTEgMSAwIDAgMS0xLTFWM3ptOS0xaDFhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxaC0xYTEgMSAwIDAgMS0xLTFWM2ExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0thbmJhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxaC0xMWExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMXptLTExLTFhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDExYTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0yaC0xMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgM2ExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFoLTFhMSAxIDAgMCAxLTEtMVYzem0tNCAwYTEgMSAwIDAgMSAxLTFoMWExIDEgMCAwIDEgMSAxdjdhMSAxIDAgMCAxLTEgMWgtMWExIDEgMCAwIDEtMS0xVjN6bTggMGExIDEgMCAwIDEgMS0xaDFhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxaC0xYTEgMSAwIDAgMS0xLTFWM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNLZXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxMS41YTMuNSAzLjUgMCAxIDEgMy4xNjMtNUgxNEwxNS41IDggMTQgOS41bC0xLTEtMSAxLTEtMS0xIDEtMS0xLTEgMUg2LjY2M2EzLjUgMy41IDAgMCAxLTMuMTYzIDJ6TTIuNSA5YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNLZXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA4YTQgNCAwIDAgMSA3LjQ2NS0ySDE0YS41LjUgMCAwIDEgLjM1NC4xNDZsMS41IDEuNWEuNS41IDAgMCAxIDAgLjcwOGwtMS41IDEuNWEuNS41IDAgMCAxLS43MDggMEwxMyA5LjIwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMMTEgOS4yMDdsLS42NDYuNjQ3YS41LjUgMCAwIDEtLjcwOCAwTDkgOS4yMDdsLS42NDYuNjQ3QS41LjUgMCAwIDEgOCAxMGgtLjUzNUE0IDQgMCAwIDEgMCA4em00LTNhMyAzIDAgMSAwIDIuNzEyIDQuMjg1QS41LjUgMCAwIDEgNy4xNjMgOWguNjNsLjg1My0uODU0YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3LjY0Ni0uNjQ3YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3LjY0Ni0uNjQ3YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3Ljc5My0uNzkzLTEtMWgtNi42M2EuNS41IDAgMCAxLS40NTEtLjI4NUEzIDMgMCAwIDAgNCA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzS2V5Ym9hcmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY2em0xMyAuMjV2LjVjMCAuMTM4LjExMi4yNS4yNS4yNWguNWEuMjUuMjUgMCAwIDAgLjI1LS4yNXYtLjVhLjI1LjI1IDAgMCAwLS4yNS0uMjVoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTIuMjUgOGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDMgOC43NXYtLjVBLjI1LjI1IDAgMCAwIDIuNzUgOGgtLjV6TTQgOC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA1IDguNzV2LS41QS4yNS4yNSAwIDAgMCA0Ljc1IDhoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTYuMjUgOGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDcgOC43NXYtLjVBLjI1LjI1IDAgMCAwIDYuNzUgOGgtLjV6TTggOC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA5IDguNzV2LS41QS4yNS4yNSAwIDAgMCA4Ljc1IDhoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTEzLjI1IDhhLjI1LjI1IDAgMCAwLS4yNS4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjV6bTAgMmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41YS4yNS4yNSAwIDAgMC0uMjUtLjI1aC0uNXptLTMtMmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoMS41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtMS41em0uNzUgMi4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjVhLjI1LjI1IDAgMCAwLS4yNS4yNXpNMTEuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41YS4yNS4yNSAwIDAgMC0uMjUtLjI1aC0uNXpNOSA2LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS41QS4yNS4yNSAwIDAgMCA5Ljc1IDZoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTcuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoLjVBLjI1LjI1IDAgMCAwIDggNi43NXYtLjVBLjI1LjI1IDAgMCAwIDcuNzUgNmgtLjV6TTUgNi4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41QS4yNS4yNSAwIDAgMCA2IDYuNzV2LS41QS4yNS4yNSAwIDAgMCA1Ljc1IDZoLS41YS4yNS4yNSAwIDAgMC0uMjUuMjV6TTIuMjUgNmEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoMS41QS4yNS4yNSAwIDAgMCA0IDYuNzV2LS41QS4yNS4yNSAwIDAgMCAzLjc1IDZoLTEuNXpNMiAxMC4yNXYuNWMwIC4xMzguMTEyLjI1LjI1LjI1aC41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtLjVhLjI1LjI1IDAgMCAwLS4yNS4yNXpNNC4yNSAxMGEuMjUuMjUgMCAwIDAtLjI1LjI1di41YzAgLjEzOC4xMTIuMjUuMjUuMjVoNS41YS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uNWEuMjUuMjUgMCAwIDAtLjI1LS4yNWgtNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0tleWJvYXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDVhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjZhMSAxIDAgMCAxIDEtMWgxMnpNMiA0YTIgMiAwIDAgMC0yIDJ2NWEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNmEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMTAuMjVhLjI1LjI1IDAgMCAxIC4yNS0uMjVoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXYtLjV6bTAtMmEuMjUuMjUgMCAwIDEgLjI1LS4yNWguNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41YS4yNS4yNSAwIDAgMS0uMjUuMjVoLS41YS4yNS4yNSAwIDAgMS0uMjUtLjI1di0uNXptLTUgMEEuMjUuMjUgMCAwIDEgOC4yNSA4aC41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjVhLjI1LjI1IDAgMCAxLS4yNS4yNWgtLjVBLjI1LjI1IDAgMCAxIDggOC43NXYtLjV6bTIgMGEuMjUuMjUgMCAwIDEgLjI1LS4yNWgxLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0xLjVhLjI1LjI1IDAgMCAxLS4yNS0uMjV2LS41em0xIDJhLjI1LjI1IDAgMCAxIC4yNS0uMjVoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXYtLjV6bS01LTJBLjI1LjI1IDAgMCAxIDYuMjUgOGguNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41YS4yNS4yNSAwIDAgMS0uMjUuMjVoLS41QS4yNS4yNSAwIDAgMSA2IDguNzV2LS41em0tMiAwQS4yNS4yNSAwIDAgMSA0LjI1IDhoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNUEuMjUuMjUgMCAwIDEgNCA4Ljc1di0uNXptLTIgMEEuMjUuMjUgMCAwIDEgMi4yNSA4aC41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjVhLjI1LjI1IDAgMCAxLS4yNS4yNWgtLjVBLjI1LjI1IDAgMCAxIDIgOC43NXYtLjV6bTExLTJhLjI1LjI1IDAgMCAxIC4yNS0uMjVoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXYtLjV6bS0yIDBhLjI1LjI1IDAgMCAxIC4yNS0uMjVoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXYtLjV6bS0yIDBBLjI1LjI1IDAgMCAxIDkuMjUgNmguNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41YS4yNS4yNSAwIDAgMS0uMjUuMjVoLS41QS4yNS4yNSAwIDAgMSA5IDYuNzV2LS41em0tMiAwQS4yNS4yNSAwIDAgMSA3LjI1IDZoLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uNUEuMjUuMjUgMCAwIDEgNyA2Ljc1di0uNXptLTIgMEEuMjUuMjUgMCAwIDEgNS4yNSA2aC41YS4yNS4yNSAwIDAgMSAuMjUuMjV2LjVhLjI1LjI1IDAgMCAxLS4yNS4yNWgtLjVBLjI1LjI1IDAgMCAxIDUgNi43NXYtLjV6bS0zIDBBLjI1LjI1IDAgMCAxIDIuMjUgNmgxLjVhLjI1LjI1IDAgMCAxIC4yNS4yNXYuNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0xLjVBLjI1LjI1IDAgMCAxIDIgNi43NXYtLjV6bTAgNGEuMjUuMjUgMCAwIDEgLjI1LS4yNWguNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41YS4yNS4yNSAwIDAgMS0uMjUuMjVoLS41YS4yNS4yNSAwIDAgMS0uMjUtLjI1di0uNXptMiAwYS4yNS4yNSAwIDAgMSAuMjUtLjI1aDUuNWEuMjUuMjUgMCAwIDEgLjI1LjI1di41YS4yNS4yNSAwIDAgMS0uMjUuMjVoLTUuNWEuMjUuMjUgMCAwIDEtLjI1LS4yNXYtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGFkZGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxYS41LjUgMCAwIDEgLjUuNVYyaDZ2LS41YS41LjUgMCAwIDEgMSAwdjE0YS41LjUgMCAwIDEtMSAwVjE1SDV2LjVhLjUuNSAwIDAgMS0xIDB2LTE0YS41LjUgMCAwIDEgLjUtLjV6TTUgMTRoNnYtMkg1djJ6bTAtM2g2VjlINXYyem0wLTNoNlY2SDV2MnptMC0zaDZWM0g1djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGFtcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAzYTEgMSAwIDAgMSAxLTFoMTBhMSAxIDAgMCAxIDEgMXY0YTEgMSAwIDAgMS0xIDFIM2ExIDEgMCAwIDEtMS0xVjN6bTUuNS0yIC4yNzYtLjU1M2EuMjUuMjUgMCAwIDEgLjQ0OCAwTDguNSAxaC0xem0tLjYxNSA4aDIuMjNDOS45NjggMTAuNTk1IDExIDEyLjY5IDExIDEzLjVjMCAxLjM4LTEuMzQzIDIuNS0zIDIuNXMtMy0xLjEyLTMtMi41YzAtLjgxIDEuMDMyLTIuOTA1IDEuODg1LTQuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYW1wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDN2NEgzVjNoMTB6TTMgMmExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWgxMGExIDEgMCAwIDAgMS0xVjNhMSAxIDAgMCAwLTEtMUgzem00LjUtMSAuMjc2LS41NTNhLjI1LjI1IDAgMCAxIC40NDggMEw4LjUgMWgtMXptLS4wMTIgOWgxLjAyNGMuMzM3LjY0Ni42NzcgMS4zMy45NSAxLjk0OS4xNzYuMzk2LjMxOC43NS40MTMgMS4wNDIuMDQ4LjE0Ni4wODEuMjY2LjEwMi4zNkExLjM0NyAxLjM0NyAwIDAgMSAxMCAxMy41YzAgLjY2NS0uNzE3IDEuNS0yIDEuNXMtMi0uODM1LTItMS41YzAgMCAwLS4wMTMuMDA0LS4wMzkuMDAzLS4wMjcuMDEtLjA2My4wMi0uMTEuMDItLjA5NC4wNTMtLjIxNC4xLS4zNi4wOTYtLjI5MS4yMzgtLjY0Ni40MTMtMS4wNDIuMjc0LS42Mi42MTQtMS4zMDMuOTUtMS45NDl6bTEuNjI3LTFoLTIuMjNDNi4wMzIgMTAuNTk1IDUgMTIuNjkgNSAxMy41IDUgMTQuODggNi4zNDMgMTYgOCAxNnMzLTEuMTIgMy0yLjVjMC0uODEtMS4wMzItMi45MDUtMS44ODUtNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xhcHRvcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDJBMS41IDEuNSAwIDAgMCAxIDMuNVYxMmgxNFYzLjVBMS41IDEuNSAwIDAgMCAxMy41IDJoLTExek0wIDEyLjVoMTZhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xM0ExLjUgMS41IDAgMCAxIDAgMTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYXB0b3AgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAzYS41LjUgMCAwIDEgLjUuNVYxMUgyVjMuNWEuNS41IDAgMCAxIC41LS41aDExem0tMTEtMUExLjUgMS41IDAgMCAwIDEgMy41VjEyaDE0VjMuNUExLjUgMS41IDAgMCAwIDEzLjUgMmgtMTF6TTAgMTIuNWgxNmExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEzQTEuNSAxLjUgMCAwIDEgMCAxMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheWVyQmFja3dhcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4zNTQgMTUuODU0YS41LjUgMCAwIDEtLjcwOCAwbC0zLTNhLjUuNSAwIDAgMSAwLS43MDhsMS0xYS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ3VjRIMWExIDEgMCAwIDEtMS0xVjFhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxdjJhMSAxIDAgMCAxLTEgMUg5djcuNzkzbC42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMGwxIDFhLjUuNSAwIDAgMSAwIC43MDhsLTMgM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDlhMSAxIDAgMCAxLTEtMVY2YTEgMSAwIDAgMSAxLTFoNC41YS41LjUgMCAwIDEgMCAxSDF2Mmg0LjVhLjUuNSAwIDAgMSAwIDFIMXptOS41IDBhLjUuNSAwIDAgMSAwLTFIMTVWNmgtNC41YS41LjUgMCAwIDEgMC0xSDE1YTEgMSAwIDAgMSAxIDF2MmExIDEgMCAwIDEtMSAxaC00LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGF5ZXJGb3J3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMzU0LjE0NmEuNS41IDAgMCAwLS43MDggMGwtMyAzYS41LjUgMCAwIDAgMCAuNzA4bDEgMWEuNS41IDAgMCAwIC43MDggMEw3IDQuMjA3VjEySDFhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMTRhMSAxIDAgMCAwIDEtMXYtMmExIDEgMCAwIDAtMS0xSDlWNC4yMDdsLjY0Ni42NDdhLjUuNSAwIDAgMCAuNzA4IDBsMS0xYS41LjUgMCAwIDAgMC0uNzA4bC0zLTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA3YTEgMSAwIDAgMC0xIDF2MmExIDEgMCAwIDAgMSAxaDQuNWEuNS41IDAgMCAwIDAtMUgxVjhoNC41YS41LjUgMCAwIDAgMC0xSDF6bTkuNSAwYS41LjUgMCAwIDAgMCAxSDE1djJoLTQuNWEuNS41IDAgMCAwIDAgMUgxNWExIDEgMCAwIDAgMS0xVjhhMSAxIDAgMCAwLTEtMWgtNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheWVyc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy43NjUgMS41NTlhLjUuNSAwIDAgMSAuNDcgMGw3LjUgNGEuNS41IDAgMCAxIDAgLjg4MmwtNy41IDRhLjUuNSAwIDAgMS0uNDcgMGwtNy41LTRhLjUuNSAwIDAgMSAwLS44ODJsNy41LTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMi4xMjUgOC41NjctMS44Ni45OTJhLjUuNSAwIDAgMCAwIC44ODJsNy41IDRhLjUuNSAwIDAgMCAuNDcgMGw3LjUtNGEuNS41IDAgMCAwIDAtLjg4MmwtMS44Ni0uOTkyLTUuMTcgMi43NTZhMS41IDEuNSAwIDAgMS0xLjQxIDBsLTUuMTctMi43NTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGF5ZXJzSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjIzNSAxLjU1OWEuNS41IDAgMCAwLS40NyAwbC03LjUgNGEuNS41IDAgMCAwIDAgLjg4MkwzLjE4OCA4IC4yNjQgOS41NTlhLjUuNSAwIDAgMCAwIC44ODJsNy41IDRhLjUuNSAwIDAgMCAuNDcgMGw3LjUtNGEuNS41IDAgMCAwIDAtLjg4MkwxMi44MTMgOGwyLjkyMi0xLjU1OWEuNS41IDAgMCAwIDAtLjg4MmwtNy41LTR6TTggOS40MzMgMS41NjIgNiA4IDIuNTY3IDE0LjQzOCA2IDggOS40MzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGF5ZXJzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMjM1IDEuNTU5YS41LjUgMCAwIDAtLjQ3IDBsLTcuNSA0YS41LjUgMCAwIDAgMCAuODgyTDMuMTg4IDggLjI2NCA5LjU1OWEuNS41IDAgMCAwIDAgLjg4Mmw3LjUgNGEuNS41IDAgMCAwIC40NyAwbDcuNS00YS41LjUgMCAwIDAgMC0uODgyTDEyLjgxMyA4bDIuOTIyLTEuNTU5YS41LjUgMCAwIDAgMC0uODgybC03LjUtNHptMy41MTUgNy4wMDhMMTQuNDM4IDEwIDggMTMuNDMzIDEuNTYyIDEwIDQuMjUgOC41NjdsMy41MTUgMS44NzRhLjUuNSAwIDAgMCAuNDcgMGwzLjUxNS0xLjg3NHpNOCA5LjQzMyAxLjU2MiA2IDggMi41NjcgMTQuNDM4IDYgOCA5LjQzM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYXlvdXRTaWRlYmFySW5zZXRSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmExIDEgMCAwIDAtMSAxdjEwYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFIMnptMTItMWEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjNhMiAyIDAgMCAxIDItMmgxMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyA0YTEgMSAwIDAgMC0xLTFoLTJhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xVjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGF5b3V0U2lkZWJhckluc2V0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDJhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMWEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDRhMSAxIDAgMCAxIDEtMWgyYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDRhMSAxIDAgMCAxLTEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheW91dFNpZGViYXJSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDNhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjN6bS01LTF2MTJIMmExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMWg5em0xIDBoMmExIDEgMCAwIDEgMSAxdjEwYTEgMSAwIDAgMS0xIDFoLTJWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYXlvdXRTaWRlYmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgM2EyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWM3ptNS0xdjEyaDlhMSAxIDAgMCAwIDEtMVYzYTEgMSAwIDAgMC0xLTFINXpNNCAySDJhMSAxIDAgMCAwLTEgMXYxMGExIDEgMCAwIDAgMSAxaDJWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYXlvdXRTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDNhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjEwYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjN6bTguNS0xdjEySDE0YTEgMSAwIDAgMCAxLTFWM2ExIDEgMCAwIDAtMS0xSDguNXptLTEgMEgyYTEgMSAwIDAgMC0xIDF2MTBhMSAxIDAgMCAwIDEgMWg1LjVWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMYXlvdXRUZXh0U2lkZWJhclJldmVyc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAzYS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xaDV6bTAgM2EuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxIDAtMWg1em0uNSAzLjVhLjUuNSAwIDAgMC0uNS0uNWgtNWEuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgLjUtLjV6bS0uNSAyLjVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMSAwLTFoNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiAyYTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyek00IDF2MTRIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgyem0xIDBoOWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINVYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheW91dFRleHRTaWRlYmFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAzYS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAwLTFoLTV6bTAgM2EuNS41IDAgMCAwIDAgMWg1YS41LjUgMCAwIDAgMC0xaC01ek0zIDkuNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptLjUgMi41YS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAwLTFoLTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem0xMi0xdjE0aDJhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFoLTJ6bS0xIDBIMmExIDEgMCAwIDAtMSAxdjEyYTEgMSAwIDAgMCAxIDFoOVYxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheW91dFRleHRXaW5kb3dSZXZlcnNlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDYuNWEuNS41IDAgMCAwLS41LS41aC01YS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAuNS0uNXptMCAzYS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIC41LS41em0tLjUgMi41YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEgMC0xaDV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgxMnpNMiAxYTEgMSAwIDAgMC0xIDF2MWgxNFYyYTEgMSAwIDAgMC0xLTFIMnpNMSA0djEwYTEgMSAwIDAgMCAxIDFoMlY0SDF6bTQgMHYxMWg5YTEgMSAwIDAgMCAxLTFWNEg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheW91dFRleHRXaW5kb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA2LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6bTAgM2EuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptLjUgMi41YS41LjUgMCAwIDAgMCAxaDVhLjUuNSAwIDAgMCAwLTFoLTV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0xMiAxYTEgMSAwIDAgMSAxIDF2MUgxVjJhMSAxIDAgMCAxIDEtMWgxMnptMSAzdjEwYTEgMSAwIDAgMS0xIDFoLTJWNGgzem0tNCAwdjExSDJhMSAxIDAgMCAxLTEtMVY0aDEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xheW91dFRocmVlQ29sdW1ucyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNUExLjUgMS41IDAgMCAxIDEuNSAwaDEzQTEuNSAxLjUgMCAwIDEgMTYgMS41djEzYTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTNBMS41IDEuNSAwIDAgMSAwIDE0LjV2LTEzek0xLjUgMWEuNS41IDAgMCAwLS41LjV2MTNhLjUuNSAwIDAgMCAuNS41SDVWMUgxLjV6TTEwIDE1VjFINnYxNGg0em0xIDBoMy41YS41LjUgMCAwIDAgLjUtLjV2LTEzYS41LjUgMCAwIDAtLjUtLjVIMTF2MTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGF5b3V0V3RmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMXY4SDFWMWg0ek0xIDBhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNGExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMUgxem0xMyAydjVIOVYyaDV6TTkgMWExIDEgMCAwIDAtMSAxdjVhMSAxIDAgMCAwIDEgMWg1YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDl6TTUgMTN2Mkgzdi0yaDJ6bS0yLTFhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoMmExIDEgMCAwIDAgMS0xdi0yYTEgMSAwIDAgMC0xLTFIM3ptMTItMXYySDl2LTJoNnptLTYtMWExIDEgMCAwIDAtMSAxdjJhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTF2LTJhMSAxIDAgMCAwLTEtMUg5elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpZmVQcmVzZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNkE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2em02LjQzLTUuMjI4YTcuMDI1IDcuMDI1IDAgMCAxLTMuNjU4IDMuNjU4bC0xLjExNS0yLjc4OGE0LjAxNSA0LjAxNSAwIDAgMCAxLjk4NS0xLjk4NWwyLjc4OCAxLjExNXpNNS4yMjggMTQuNDNhNy4wMjUgNy4wMjUgMCAwIDEtMy42NTgtMy42NThsMi43ODgtMS4xMTVhNC4wMTUgNC4wMTUgMCAwIDAgMS45ODUgMS45ODVMNS4yMjggMTQuNDN6bTkuMjAyLTkuMjAyLTIuNzg4IDEuMTE1YTQuMDE1IDQuMDE1IDAgMCAwLTEuOTg1LTEuOTg1bDEuMTE1LTIuNzg4YTcuMDI1IDcuMDI1IDAgMCAxIDMuNjU4IDMuNjU4em0tOC4wODctLjg3YTQuMDE1IDQuMDE1IDAgMCAwLTEuOTg1IDEuOTg1TDEuNTcgNS4yMjhBNy4wMjUgNy4wMjUgMCAwIDEgNS4yMjggMS41N2wxLjExNSAyLjc4OHpNOCAxMWEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGlnaHRidWxiRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDZhNiA2IDAgMSAxIDEwLjE3NCA0LjMxYy0uMjAzLjE5Ni0uMzU5LjQtLjQ1My42MTlsLS43NjIgMS43NjlBLjUuNSAwIDAgMSAxMC41IDEzaC01YS41LjUgMCAwIDEtLjQ2LS4zMDJsLS43NjEtMS43N2ExLjk2NCAxLjk2NCAwIDAgMC0uNDUzLS42MThBNS45ODQgNS45ODQgMCAwIDEgMiA2em0zIDguNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFsLS4yMjQuNDQ3YTEgMSAwIDAgMS0uODk0LjU1M0g2LjYxOGExIDEgMCAwIDEtLjg5NC0uNTUzTDUuNSAxNWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpZ2h0YnVsYk9mZkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiA2YzAtLjU3Mi4wOC0xLjEyNS4yMy0xLjY1bDguNTU4IDguNTU5QS41LjUgMCAwIDEgMTAuNSAxM2gtNWEuNS41IDAgMCAxLS40Ni0uMzAybC0uNzYxLTEuNzdhMS45NjQgMS45NjQgMCAwIDAtLjQ1My0uNjE4QTUuOTg0IDUuOTg0IDAgMCAxIDIgNnptMTAuMzAzIDQuMTgxTDMuODE4IDEuNjk3YTYgNiAwIDAgMSA4LjQ4NCA4LjQ4NHpNNSAxNC41YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWwtLjIyNC40NDdhMSAxIDAgMCAxLS44OTQuNTUzSDYuNjE4YTEgMSAwIDAgMS0uODk0LS41NTNMNS41IDE1YS41LjUgMCAwIDEtLjUtLjV6TTIuMzU0IDEuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMTIgMTJhLjUuNSAwIDAgMCAuNzA4LS43MDhsLTEyLTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpZ2h0YnVsYk9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi4yMyA0LjM1QTYuMDA0IDYuMDA0IDAgMCAwIDIgNmMwIDEuNjkxLjcgMy4yMiAxLjgyNiA0LjMxLjIwMy4xOTYuMzU5LjQuNDUzLjYxOWwuNzYyIDEuNzY5QS41LjUgMCAwIDAgNS41IDEzYS41LjUgMCAwIDAgMCAxIC41LjUgMCAwIDAgMCAxbC4yMjQuNDQ3YTEgMSAwIDAgMCAuODk0LjU1M2gyLjc2NGExIDEgMCAwIDAgLjg5NC0uNTUzTDEwLjUgMTVhLjUuNSAwIDAgMCAwLTEgLjUuNSAwIDAgMCAwLTEgLjUuNSAwIDAgMCAuMjg4LS4wOTFMOS44NzggMTJINS44M2wtLjYzMi0xLjQ2N2EyLjk1NCAyLjk1NCAwIDAgMC0uNjc2LS45NDEgNC45ODQgNC45ODQgMCAwIDEtMS40NTUtNC40MDVsLS44MzctLjgzNnptMS41ODgtMi42NTMuNzA4LjcwN2E1IDUgMCAwIDEgNy4wNyA3LjA3bC43MDcuNzA3YTYgNiAwIDAgMC04LjQ4NC04LjQ4NHptLTIuMTcyLS4wNTFhLjUuNSAwIDAgMSAuNzA4IDBsMTIgMTJhLjUuNSAwIDAgMS0uNzA4LjcwOGwtMTItMTJhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGlnaHRidWxiIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgNmE2IDYgMCAxIDEgMTAuMTc0IDQuMzFjLS4yMDMuMTk2LS4zNTkuNC0uNDUzLjYxOWwtLjc2MiAxLjc2OUEuNS41IDAgMCAxIDEwLjUgMTNhLjUuNSAwIDAgMSAwIDEgLjUuNSAwIDAgMSAwIDFsLS4yMjQuNDQ3YTEgMSAwIDAgMS0uODk0LjU1M0g2LjYxOGExIDEgMCAwIDEtLjg5NC0uNTUzTDUuNSAxNWEuNS41IDAgMCAxIDAtMSAuNS41IDAgMCAxIDAtMSAuNS41IDAgMCAxLS40Ni0uMzAybC0uNzYxLTEuNzdhMS45NjQgMS45NjQgMCAwIDAtLjQ1My0uNjE4QTUuOTg0IDUuOTg0IDAgMCAxIDIgNnptNi01YTUgNSAwIDAgMC0zLjQ3OSA4LjU5MmMuMjYzLjI1NC41MTQuNTY0LjY3Ni45NDFMNS44MyAxMmg0LjM0MmwuNjMyLTEuNDY3Yy4xNjItLjM3Ny40MTMtLjY4Ny42NzYtLjk0MUE1IDUgMCAwIDAgOCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpZ2h0bmluZ0NoYXJnZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUxLjA2OGEuNS41IDAgMCAxIC4yMjcuNThMOS42NzcgNi41SDEzYS41LjUgMCAwIDEgLjM2NC44NDNsLTggOC41YS41LjUgMCAwIDEtLjg0Mi0uNDlMNi4zMjMgOS41SDNhLjUuNSAwIDAgMS0uMzY0LS44NDNsOC04LjVhLjUuNSAwIDAgMSAuNjE1LS4wOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaWdodG5pbmdDaGFyZ2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMjUxLjA2OGEuNS41IDAgMCAxIC4yMjcuNThMOS42NzcgNi41SDEzYS41LjUgMCAwIDEgLjM2NC44NDNsLTggOC41YS41LjUgMCAwIDEtLjg0Mi0uNDlMNi4zMjMgOS41SDNhLjUuNSAwIDAgMS0uMzY0LS44NDNsOC04LjVhLjUuNSAwIDAgMSAuNjE1LS4wOXpNNC4xNTcgOC41SDdhLjUuNSAwIDAgMSAuNDc4LjY0N0w2LjExIDEzLjU5bDUuNzMyLTYuMDlIOWEuNS41IDAgMCAxLS40NzgtLjY0N0w5Ljg5IDIuNDEgNC4xNTcgOC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpZ2h0bmluZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41Mi4zNTlBLjUuNSAwIDAgMSA2IDBoNGEuNS41IDAgMCAxIC40NzQuNjU4TDguNjk0IDZIMTIuNWEuNS41IDAgMCAxIC4zOTUuODA3bC03IDlhLjUuNSAwIDAgMS0uODczLS40NTRMNi44MjMgOS41SDMuNWEuNS41IDAgMCAxLS40OC0uNjQxbDIuNS04LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGlnaHRuaW5nIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNTIuMzU5QS41LjUgMCAwIDEgNiAwaDRhLjUuNSAwIDAgMSAuNDc0LjY1OEw4LjY5NCA2SDEyLjVhLjUuNSAwIDAgMSAuMzk1LjgwN2wtNyA5YS41LjUgMCAwIDEtLjg3My0uNDU0TDYuODIzIDkuNUgzLjVhLjUuNSAwIDAgMS0uNDgtLjY0MWwyLjUtOC41ek02LjM3NCAxIDQuMTY4IDguNUg3LjVhLjUuNSAwIDAgMSAuNDc4LjY0N0w2Ljc4IDEzLjA0IDExLjQ3OCA3SDhhLjUuNSAwIDAgMS0uNDc0LS42NThMOS4zMDYgMUg2LjM3NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBjNC40MTEgMCA4IDIuOTEyIDggNi40OTIgMCAxLjQzMy0uNTU1IDIuNzIzLTEuNzE1IDMuOTk0LTEuNjc4IDEuOTMyLTUuNDMxIDQuMjg1LTYuMjg1IDQuNjQ1LS44My4zNS0uNzM0LS4xOTctLjY5Ni0uNDEzbC4wMDMtLjAxOC4xMTQtLjY4NWMuMDI3LS4yMDQuMDU1LS41MjEtLjAyNi0uNzIzLS4wOS0uMjIzLS40NDQtLjMzOS0uNzA0LS4zOTVDMi44NDYgMTIuMzkgMCA5LjcwMSAwIDYuNDkyIDAgMi45MTIgMy41OSAwIDggMHpNNS4wMjIgNy42ODZIMy40OTdWNC45MThhLjE1Ni4xNTYgMCAwIDAtLjE1NS0uMTU2SDIuNzhhLjE1Ni4xNTYgMCAwIDAtLjE1Ni4xNTZ2My40ODZjMCAuMDQxLjAxNy4wOC4wNDQuMTA3di4wMDFsLjAwMi4wMDIuMDAyLjAwMmEuMTU0LjE1NCAwIDAgMCAuMTA4LjA0M2gyLjI0MmMuMDg2IDAgLjE1NS0uMDcuMTU1LS4xNTZ2LS41NmEuMTU2LjE1NiAwIDAgMC0uMTU1LS4xNTd6bS43OTEtMi45MjRoLjU2MmMuMDg2IDAgLjE1NS4wNy4xNTUuMTU2djMuNDg2YzAgLjA4Ni0uMDcuMTU1LS4xNTUuMTU1aC0uNTYyYS4xNTYuMTU2IDAgMCAxLS4xNTYtLjE1NVY0LjkxOGMwLS4wODYuMDctLjE1Ni4xNTYtLjE1NnptMy44NjMgMGguNTZjLjA4NyAwIC4xNTcuMDcuMTU3LjE1NnYzLjQ4NmMwIC4wODYtLjA3LjE1NS0uMTU2LjE1NWgtLjU2MWEuMTU1LjE1NSAwIDAgMS0uMDQtLjAwNWgtLjAwMmEuMTY4LjE2OCAwIDAgMS0uMDExLS4wMDRsLS4wMDUtLjAwMi0uMDA3LS4wMDNhLjA2Ni4wNjYgMCAwIDEtLjAwOC0uMDA0TDkuNiA4LjU0bC0uMDEtLjAwNi0uMDAxLS4wMDFhLjE1NC4xNTQgMCAwIDEtLjA0LS4wMzlsLTEuNi0yLjE2djIuMDdhLjE1NS4xNTUgMCAwIDEtLjE1NS4xNTZoLS41NjFhLjE1Ni4xNTYgMCAwIDEtLjE1Ni0uMTU1VjQuOTE4YzAtLjA4Ni4wNy0uMTU2LjE1Ni0uMTU2SDcuOGwuMDA1LjAwMWguMDA2bC4wMDMuMDAxaC4wMDZsLjAxLjAwM2guMDAybC4wMDIuMDAxLjAxLjAwMy4wMDUuMDAyYS4wOS4wOSAwIDAgMSAuMDA5LjAwNGwuMDAzLjAwMS4wMDIuMDAxYS4xMTMuMTEzIDAgMCAxIC4wMTMuMDA4bC4wMDMuMDAyLjAwNS4wMDN2LjAwMWMuMDAyIDAgLjAwMy4wMDIuMDA0LjAwM2EuMDkyLjA5MiAwIDAgMSAuMDA4LjAwNmwuMDAzLjAwM2EuMTcuMTcgMCAwIDEgLjAyMy4wMjZMOS41MiA2Ljk5VjQuOTE4YzAtLjA4Ni4wNy0uMTU2LjE1Ni0uMTU2em0zLjgxNS43MTdjMCAuMDg2LS4wNy4xNTYtLjE1NS4xNTZIMTEuODF2LjU5aDEuNTI1Yy4wODYgMCAuMTU1LjA3LjE1NS4xNTV2LjU2MWMwIC4wODYtLjA3LjE1Ni0uMTU1LjE1NkgxMS44MXYuNTloMS41MjVjLjA4NiAwIC4xNTUuMDcuMTU1LjE1NXYuNTYxYzAgLjA4Ni0uMDcuMTU2LS4xNTUuMTU2aC0yLjI0MmEuMTU1LjE1NSAwIDAgMS0uMTEtLjA0NWwtLjAwMi0uMDAzYS4xNTUuMTU1IDAgMCAxLS4wNDQtLjEwN1Y0LjkxOGMwLS4wNDIuMDE3LS4wOC4wNDMtLjEwN2wuMDAzLS4wMDMuMDAxLS4wMDFhLjE1NS4xNTUgMCAwIDEgLjEwOS0uMDQ1aDIuMjQyYy4wODYgMCAuMTU1LjA3LjE1NS4xNTZ2LjU2MXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaW5rNDVEZWcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC43MTUgNi41NDIgMy4zNDMgNy45MTRhMyAzIDAgMSAwIDQuMjQzIDQuMjQzbDEuODI4LTEuODI5QTMgMyAwIDAgMCA4LjU4NiA1LjVMOCA2LjA4NmExLjAwMiAxLjAwMiAwIDAgMC0uMTU0LjE5OSAyIDIgMCAwIDEgLjg2MSAzLjMzN0w2Ljg4IDExLjQ1YTIgMiAwIDEgMS0yLjgzLTIuODNsLjc5My0uNzkyYTQuMDE4IDQuMDE4IDAgMCAxLS4xMjgtMS4yODd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41ODYgNC42NzJBMyAzIDAgMCAwIDcuNDE0IDkuNWwuNzc1LS43NzZhMiAyIDAgMCAxLS44OTYtMy4zNDZMOS4xMiAzLjU1YTIgMiAwIDEgMSAyLjgzIDIuODNsLS43OTMuNzkyYy4xMTIuNDIuMTU1Ljg1NS4xMjggMS4yODdsMS4zNzItMS4zNzJhMyAzIDAgMSAwLTQuMjQzLTQuMjQzTDYuNTg2IDQuNjcyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpbmsgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4zNTQgNS41SDRhMyAzIDAgMCAwIDAgNmgzYTMgMyAwIDAgMCAyLjgzLTRIOWMtLjA4NiAwLS4xNy4wMS0uMjUuMDMxQTIgMiAwIDAgMSA3IDEwLjVINGEyIDIgMCAxIDEgMC00aDEuNTM1Yy4yMTgtLjM3Ni40OTUtLjcxNC44Mi0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNS41YTMgMyAwIDAgMC0yLjgzIDRoMS4wOThBMiAyIDAgMCAxIDkgNi41aDNhMiAyIDAgMSAxIDAgNGgtMS41MzVhNC4wMiA0LjAyIDAgMCAxLS44MiAxSDEyYTMgMyAwIDEgMCAwLTZIOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaW5rZWRpbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuMTQ2QzAgLjUxMy41MjYgMCAxLjE3NSAwaDEzLjY1QzE1LjQ3NCAwIDE2IC41MTMgMTYgMS4xNDZ2MTMuNzA4YzAgLjYzMy0uNTI2IDEuMTQ2LTEuMTc1IDEuMTQ2SDEuMTc1Qy41MjYgMTYgMCAxNS40ODcgMCAxNC44NTRWMS4xNDZ6bTQuOTQzIDEyLjI0OFY2LjE2OUgyLjU0MnY3LjIyNWgyLjQwMXptLTEuMi04LjIxMmMuODM3IDAgMS4zNTgtLjU1NCAxLjM1OC0xLjI0OC0uMDE1LS43MDktLjUyLTEuMjQ4LTEuMzQyLTEuMjQ4LS44MjIgMC0xLjM1OS41NC0xLjM1OSAxLjI0OCAwIC42OTQuNTIxIDEuMjQ4IDEuMzI3IDEuMjQ4aC4wMTZ6bTQuOTA4IDguMjEyVjkuMzU5YzAtLjIxNi4wMTYtLjQzMi4wOC0uNTg2LjE3My0uNDMxLjU2OC0uODc4IDEuMjMyLS44NzguODY5IDAgMS4yMTYuNjYyIDEuMjE2IDEuNjM0djMuODY1aDIuNDAxVjkuMjVjMC0yLjIyLTEuMTg0LTMuMjUyLTIuNzY0LTMuMjUyLTEuMjc0IDAtMS44NDUuNy0yLjE2NSAxLjE5M3YuMDI1aC0uMDE2YTUuNTQgNS41NCAwIDAgMSAuMDE2LS4wMjVWNi4xNjloLTIuNGMuMDMuNjc4IDAgNy4yMjUgMCA3LjIyNWgyLjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTGlzdENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01IDExLjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAtNGEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMC00YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41ek0zLjg1NCAyLjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMS41IDEuNWEuNS41IDAgMCAxLS43MDggMGwtLjUtLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMMiAzLjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDggMHptMCA0YS41LjUgMCAwIDEgMCAuNzA4bC0xLjUgMS41YS41LjUgMCAwIDEtLjcwOCAwbC0uNS0uNWEuNS41IDAgMSAxIC43MDgtLjcwOEwyIDcuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOCAwem0wIDRhLjUuNSAwIDAgMSAwIC43MDhsLTEuNSAxLjVhLjUuNSAwIDAgMS0uNzA4IDBsLS41LS41YS41LjUgMCAwIDEgLjcwOC0uNzA4bC4xNDYuMTQ3IDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpc3ROZXN0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTQuNSAxMS41QS41LjUgMCAwIDEgNSAxMWgxMGEuNS41IDAgMCAxIDAgMUg1YS41LjUgMCAwIDEtLjUtLjV6bS0yLTRBLjUuNSAwIDAgMSAzIDdoMTBhLjUuNSAwIDAgMSAwIDFIM2EuNS41IDAgMCAxLS41LS41em0tMi00QS41LjUgMCAwIDEgMSAzaDEwYS41LjUgMCAwIDEgMCAxSDFhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaXN0T2wgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTEuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMC00YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wLTRhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS43MTMgMTEuODY1di0uNDc0SDJjLjIxNyAwIC4zNjMtLjEzNy4zNjMtLjMxNyAwLS4xODUtLjE1OC0uMzEtLjM2MS0uMzEtLjIyMyAwLS4zNjcuMTUyLS4zNzMuMzFoLS41OWMuMDE2LS40NjcuMzczLS43ODcuOTg2LS43ODcuNTg4LS4wMDIuOTU0LjI5MS45NTcuNzAzYS41OTUuNTk1IDAgMCAxLS40OTIuNTk0di4wMzNhLjYxNS42MTUgMCAwIDEgLjU2OS42MzFjLjAwMy41MzMtLjUwMi44LTEuMDUxLjgtLjY1NiAwLTEtLjM3LTEuMDA4LS43OTRoLjU4MmMuMDA4LjE3OC4xODYuMzA2LjQyMi4zMDkuMjU0IDAgLjQyNC0uMTQ1LjQyMi0uMzUtLjAwMi0uMTk1LS4xNTUtLjM0OC0uNDE0LS4zNDhoLS4zem0tLjAwNC00LjY5OWgtLjYwNHYtLjAzNWMwLS40MDguMjk1LS44NDQuOTU4LS44NDQuNTgzIDAgLjk2LjMyNi45Ni43NTYgMCAuMzg5LS4yNTcuNjE3LS40NzYuODQ4bC0uNTM3LjU3MnYuMDNoMS4wNTRWOUgxLjE0M3YtLjM5NWwuOTU3LS45OWMuMTM4LS4xNDIuMjkzLS4zMDQuMjkzLS41MDggMC0uMTgtLjE0Ny0uMzItLjM0Mi0uMzJhLjMzLjMzIDAgMCAwLS4zNDIuMzM4di4wNDF6TTIuNTY0IDVoLS42MzVWMi45MjRoLS4wMzFsLS41OTguNDJ2LS41NjdsLjYyOS0uNDQzaC42MzVWNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaXN0U3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTEuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMC00YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wLTRhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4yNDIgMi4xOTRhLjI3LjI3IDAgMCAxIC41MTYgMGwuMTYyLjUzYy4wMzUuMTE1LjE0LjE5NC4yNTguMTk0aC41NTFjLjI1OSAwIC4zNy4zMzMuMTY0LjQ5M2wtLjQ2OC4zNjNhLjI3Ny4yNzcgMCAwIDAtLjA5NC4zbC4xNzMuNTY5Yy4wNzguMjU2LS4yMTMuNDYyLS40MjMuM2wtLjQxNy0uMzI0YS4yNjcuMjY3IDAgMCAwLS4zMjggMGwtLjQxNy4zMjNjLS4yMS4xNjMtLjUtLjA0My0uNDIzLS4yOTlsLjE3My0uNTdhLjI3Ny4yNzcgMCAwIDAtLjA5NC0uMjk5bC0uNDY4LS4zNjNjLS4yMDYtLjE2LS4wOTUtLjQ5My4xNjQtLjQ5M2guNTVhLjI3MS4yNzEgMCAwIDAgLjI1OS0uMTk0bC4xNjItLjUzem0wIDRhLjI3LjI3IDAgMCAxIC41MTYgMGwuMTYyLjUzYy4wMzUuMTE1LjE0LjE5NC4yNTguMTk0aC41NTFjLjI1OSAwIC4zNy4zMzMuMTY0LjQ5M2wtLjQ2OC4zNjNhLjI3Ny4yNzcgMCAwIDAtLjA5NC4zbC4xNzMuNTY5Yy4wNzguMjU1LS4yMTMuNDYyLS40MjMuM2wtLjQxNy0uMzI0YS4yNjcuMjY3IDAgMCAwLS4zMjggMGwtLjQxNy4zMjNjLS4yMS4xNjMtLjUtLjA0My0uNDIzLS4yOTlsLjE3My0uNTdhLjI3Ny4yNzcgMCAwIDAtLjA5NC0uMjk5bC0uNDY4LS4zNjNjLS4yMDYtLjE2LS4wOTUtLjQ5My4xNjQtLjQ5M2guNTVhLjI3MS4yNzEgMCAwIDAgLjI1OS0uMTk0bC4xNjItLjUzem0wIDRhLjI3LjI3IDAgMCAxIC41MTYgMGwuMTYyLjUzYy4wMzUuMTE1LjE0LjE5NC4yNTguMTk0aC41NTFjLjI1OSAwIC4zNy4zMzMuMTY0LjQ5M2wtLjQ2OC4zNjNhLjI3Ny4yNzcgMCAwIDAtLjA5NC4zbC4xNzMuNTY5Yy4wNzguMjU1LS4yMTMuNDYyLS40MjMuM2wtLjQxNy0uMzI0YS4yNjcuMjY3IDAgMCAwLS4zMjggMGwtLjQxNy4zMjNjLS4yMS4xNjMtLjUtLjA0My0uNDIzLS4yOTlsLjE3My0uNTdhLjI3Ny4yNzcgMCAwIDAtLjA5NC0uMjk5bC0uNDY4LS4zNjNjLS4yMDYtLjE2LS4wOTUtLjQ5My4xNjQtLjQ5M2guNTVhLjI3MS4yNzEgMCAwIDAgLjI1OS0uMTk0bC4xNjItLjUzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpc3RUYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDIuNWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41VjNhLjUuNSAwIDAgMC0uNS0uNUgyek0zIDNIMnYxaDFWM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDMuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXpNNS41IDdhLjUuNSAwIDAgMCAwIDFoOWEuNS41IDAgMCAwIDAtMWgtOXptMCA0YS41LjUgMCAwIDAgMCAxaDlhLjUuNSAwIDAgMCAwLTFoLTl6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuNSA3YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVIMmEuNS41IDAgMCAxLS41LS41Vjd6TTIgN2gxdjFIMlY3em0wIDMuNWEuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVIMnptMSAuNUgydjFoMXYtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNMaXN0VWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUgMTEuNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMC00YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wLTRhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bS0zIDFhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0wIDRhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyem0wIDRhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc0xpc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTIuNSAxMmEuNS41IDAgMCAxIC41LS41aDEwYS41LjUgMCAwIDEgMCAxSDNhLjUuNSAwIDAgMS0uNS0uNXptMC00YS41LjUgMCAwIDEgLjUtLjVoMTBhLjUuNSAwIDAgMSAwIDFIM2EuNS41IDAgMCAxLS41LS41em0wLTRhLjUuNSAwIDAgMSAuNS0uNWgxMGEuNS41IDAgMCAxIDAgMUgzYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTG9ja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxYTIgMiAwIDAgMSAyIDJ2NEg2VjNhMiAyIDAgMCAxIDItMnptMyA2VjNhMyAzIDAgMCAwLTYgMHY0YTIgMiAwIDAgMC0yIDJ2NWEyIDIgMCAwIDAgMiAyaDZhMiAyIDAgMCAwIDItMlY5YTIgMiAwIDAgMC0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMiAyIDAgMCAxIDIgMnY0SDZWM2EyIDIgMCAwIDEgMi0yem0zIDZWM2EzIDMgMCAwIDAtNiAwdjRhMiAyIDAgMCAwLTIgMnY1YTIgMiAwIDAgMCAyIDJoNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMnpNNSA4aDZhMSAxIDAgMCAxIDEgMXY1YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEtMS0xVjlhMSAxIDAgMCAxIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNYWlsYm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGEzIDMgMCAwIDAtMyAzdjZoNlY3YTMgMyAwIDAgMC0zLTN6bTAtMWg4YTQgNCAwIDAgMSA0IDR2NmExIDEgMCAwIDEtMSAxSDFhMSAxIDAgMCAxLTEtMVY3YTQgNCAwIDAgMSA0LTR6bTIuNjQ2IDFBMy45OSAzLjk5IDAgMCAxIDggN3Y2aDdWN2EzIDMgMCAwIDAtMy0zSDYuNjQ2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjc5MyA4LjVIOXYtMWg1YS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS4zNTQtLjE0NmwtLjg1My0uODU0ek01IDdjMCAuNTUyLS40NDggMC0xIDBzLTEgLjU1Mi0xIDBhMSAxIDAgMCAxIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNYWlsYm94MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDguNWgyLjc5M2wuODUzLjg1NEEuNS41IDAgMCAwIDEzIDkuNWgxYS41LjUgMCAwIDAgLjUtLjVWOGEuNS41IDAgMCAwLS41LS41SDl2MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAzSDRhNCA0IDAgMCAwLTQgNHY2YTEgMSAwIDAgMCAxIDFoMTRhMSAxIDAgMCAwIDEtMVY3YTQgNCAwIDAgMC00LTR6TTggN2EzLjk5IDMuOTkgMCAwIDAtMS4zNTQtM0gxMmEzIDMgMCAwIDEgMyAzdjZIOFY3em0tMy40MTUuMTU3QzQuNDIgNy4wODcgNC4yMTggNyA0IDdjLS4yMTggMC0uNDIuMDg2LS41ODUuMTU3QzMuMTY0IDcuMjY0IDMgNy4zMzQgMyA3YTEgMSAwIDAgMSAyIDBjMCAuMzM0LS4xNjQuMjY0LS40MTUuMTU3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01hcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2IC41YS41LjUgMCAwIDAtLjU5OC0uNDlMMTAuNS45OSA1LjU5OC4wMWEuNS41IDAgMCAwLS4xOTYgMGwtNSAxQS41LjUgMCAwIDAgMCAxLjV2MTRhLjUuNSAwIDAgMCAuNTk4LjQ5bDQuOTAyLS45OCA0LjkwMi45OGEuNTAyLjUwMiAwIDAgMCAuMTk2IDBsNS0xQS41LjUgMCAwIDAgMTYgMTQuNVYuNXpNNSAxNC4wOVYxLjExbC41LS4xLjUuMXYxMi45OGwtLjQwMi0uMDhhLjQ5OC40OTggMCAwIDAtLjE5NiAwTDUgMTQuMDl6bTUgLjhWMS45MWwuNDAyLjA4YS41LjUgMCAwIDAgLjE5NiAwTDExIDEuOTF2MTIuOThsLS41LjEtLjUtLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS44MTcuMTEzQS41LjUgMCAwIDEgMTYgLjV2MTRhLjUuNSAwIDAgMS0uNDAyLjQ5bC01IDFhLjUwMi41MDIgMCAwIDEtLjE5NiAwTDUuNSAxNS4wMWwtNC45MDIuOThBLjUuNSAwIDAgMSAwIDE1LjV2LTE0YS41LjUgMCAwIDEgLjQwMi0uNDlsNS0xYS41LjUgMCAwIDEgLjE5NiAwTDEwLjUuOTlsNC45MDItLjk4YS41LjUgMCAwIDEgLjQxNS4xMDN6TTEwIDEuOTFsLTQtLjh2MTIuOThsNCAuOFYxLjkxem0xIDEyLjk4IDQtLjhWMS4xMWwtNCAuOHYxMi45OHptLTYtLjhWMS4xMWwtNCAuOHYxMi45OGw0LS44elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01hcmtkb3duRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTEuNSAxYS41LjUgMCAwIDAtLjUuNXYzLjc5M0w5Ljg1NCA4LjE0NmEuNS41IDAgMSAwLS43MDguNzA4bDIgMmEuNS41IDAgMCAwIC43MDggMGwyLTJhLjUuNSAwIDAgMC0uNzA4LS43MDhMMTIgOS4yOTNWNS41YS41LjUgMCAwIDAtLjUtLjV6TTMuNTYgNy4wMWguMDU2bDEuNDI4IDMuMjM5aC43NzRsMS40Mi0zLjI0aC4wNTZWMTFoMS4wNzNWNS4wMDFoLTEuMmwtMS43MSAzLjg5NGgtLjAzOWwtMS43MS0zLjg5NEgyLjVWMTFoMS4wNlY3LjAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01hcmtkb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDNhMSAxIDAgMCAxIDEgMXY4YTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjRhMSAxIDAgMCAxIDEtMWgxMnpNMiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkuMTQ2IDguMTQ2YS41LjUgMCAwIDEgLjcwOCAwTDExLjUgOS43OTNsMS42NDYtMS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOGwtMiAyYS41LjUgMCAwIDEtLjcwOCAwbC0yLTJhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExLjUgNWEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLTEgMHYtNGEuNS41IDAgMCAxIC41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNTYgMTFWNy4wMWguMDU2bDEuNDI4IDMuMjM5aC43NzRsMS40Mi0zLjI0aC4wNTZWMTFoMS4wNzNWNS4wMDFoLTEuMmwtMS43MSAzLjg5NGgtLjAzOWwtMS43MS0zLjg5NEgyLjVWMTFoMS4wNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNYXNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjI1IDEuMjI3QTcuNSA3LjUgMCAwIDEgMTAuNSA4YTcuNSA3LjUgMCAwIDEtNC4yNzUgNi43NzMgNyA3IDAgMSAwIDAtMTMuNTQ2ek00LjE4Ny45NjZhOCA4IDAgMSAxIDcuNjI3IDE0LjA2OUE4IDggMCAwIDEgNC4xODYuOTY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01hc3RvZG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjE5IDEyLjE5NWMyLjAxNi0uMjQgMy43Ny0xLjQ3NSAzLjk5LTIuNjAzLjM0OC0xLjc3OC4zMi00LjMzOS4zMi00LjMzOSAwLTMuNDctMi4yODYtNC40ODgtMi4yODYtNC40ODhDMTIuMDYyLjIzOCAxMC4wODMuMDE3IDguMDI3IDBoLS4wNUM1LjkyLjAxNyAzLjk0Mi4yMzggMi43OS43NjVjMCAwLTIuMjg1IDEuMDE3LTIuMjg1IDQuNDg4bC0uMDAyLjY2MmMtLjAwNC42NC0uMDA3IDEuMzUuMDExIDIuMDkxLjA4MyAzLjM5NC42MjYgNi43NCAzLjc4IDcuNTcgMS40NTQuMzgzIDIuNzAzLjQ2MyAzLjcwOS40MDggMS44MjMtLjEgMi44NDctLjY0NyAyLjg0Ny0uNjQ3bC0uMDYtMS4zMTdzLTEuMzAzLjQxLTIuNzY3LjM2Yy0xLjQ1LS4wNS0yLjk4LS4xNTYtMy4yMTUtMS45MjhhMy42MTQgMy42MTQgMCAwIDEtLjAzMy0uNDk2czEuNDI0LjM0NiAzLjIyOC40MjhjMS4xMDMuMDUgMi4xMzctLjA2NCAzLjE4OC0uMTg5em0xLjYxMy0yLjQ3SDExLjEzdi00LjA4YzAtLjg1OS0uMzY0LTEuMjk1LTEuMDkxLTEuMjk1LS44MDQgMC0xLjIwNy41MTctMS4yMDcgMS41NDF2Mi4yMzNINy4xNjhWNS44OWMwLTEuMDI0LS40MDMtMS41NDEtMS4yMDctMS41NDEtLjcyNyAwLTEuMDkxLjQzNi0xLjA5MSAxLjI5NnY0LjA3OUgzLjE5N1Y1LjUyMmMwLS44NTkuMjItMS41NDEuNjYtMi4wNDYuNDU2LS41MDUgMS4wNTItLjc2NCAxLjc5My0uNzY0Ljg1NiAwIDEuNTA0LjMyOCAxLjkzMy45ODNMOCA0LjM5bC40MTctLjY5NWMuNDI5LS42NTUgMS4wNzctLjk4MyAxLjkzNC0uOTgzLjc0IDAgMS4zMzYuMjU5IDEuNzkxLjc2NC40NDIuNTA1LjY2MSAxLjE4Ny42NjEgMi4wNDZ2NC4yMDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWVkaXVtIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDI1IDhjMCAyLjQ4NS0yLjAyIDQuNS00LjUxMyA0LjVBNC41MDYgNC41MDYgMCAwIDEgMCA4YzAtMi40ODYgMi4wMi00LjUgNC41MTItNC41QTQuNTA2IDQuNTA2IDAgMCAxIDkuMDI1IDh6bTQuOTUgMGMwIDIuMzQtMS4wMSA0LjIzNi0yLjI1NiA0LjIzNi0xLjI0NiAwLTIuMjU2LTEuODk3LTIuMjU2LTQuMjM2IDAtMi4zNCAxLjAxLTQuMjM2IDIuMjU2LTQuMjM2IDEuMjQ2IDAgMi4yNTYgMS44OTcgMi4yNTYgNC4yMzZ6TTE2IDhjMCAyLjA5Ni0uMzU1IDMuNzk1LS43OTQgMy43OTUtLjQzOCAwLS43OTMtMS43LS43OTMtMy43OTUgMC0yLjA5Ni4zNTUtMy43OTUuNzk0LTMuNzk1LjQzOCAwIC43OTMgMS42OTkuNzkzIDMuNzk1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01lZ2FwaG9uZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgMi41YTEuNSAxLjUgMCAwIDEgMyAwdjExYTEuNSAxLjUgMCAwIDEtMyAwdi0xMXptLTEgLjcyNGMtMi4wNjcuOTUtNC41MzkgMS40ODEtNyAxLjY1NnY2LjIzN2EyNS4yMjIgMjUuMjIyIDAgMCAxIDEuMDg4LjA4NWMyLjA1My4yMDQgNC4wMzguNjY4IDUuOTEyIDEuNTZWMy4yMjR6bS04IDcuODQxVjQuOTM0Yy0uNjguMDI3LTEuMzk5LjA0My0yLjAwOC4wNTNBMi4wMiAyLjAyIDAgMCAwIDAgN3YyYzAgMS4xMDYuODk2IDEuOTk2IDEuOTk0IDIuMDA5YTY4LjE0IDY4LjE0IDAgMCAxIC40OTYuMDA4IDY0IDY0IDAgMCAxIDEuNTEuMDQ4em0xLjM5IDEuMDgxYy4yODUuMDIxLjU2OS4wNDcuODUuMDc4bC4yNTMgMS42OWExIDEgMCAwIDEtLjk4MyAxLjE4N2gtLjU0OGExIDEgMCAwIDEtLjkxNi0uNTk5bC0xLjMxNC0yLjQ4YTY1LjgxIDY1LjgxIDAgMCAxIDEuNjkyLjA2NGMuMzI3LjAxNy42NS4wMzcuOTY2LjA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01lZ2FwaG9uZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMyAyLjVhMS41IDEuNSAwIDAgMSAzIDB2MTFhMS41IDEuNSAwIDAgMS0zIDB2LS4yMTRjLTIuMTYyLTEuMjQxLTQuNDktMS44NDMtNi45MTItMi4wODNsLjQwNSAyLjcxMkExIDEgMCAwIDEgNS41MSAxNS4xaC0uNTQ4YTEgMSAwIDAgMS0uOTE2LS41OTlsLTEuODUtMy40OWE2OC4xNCA2OC4xNCAwIDAgMC0uMjAyLS4wMDNBMi4wMTQgMi4wMTQgMCAwIDEgMCA5VjdhMi4wMiAyLjAyIDAgMCAxIDEuOTkyLTIuMDEzIDc0LjY2MyA3NC42NjMgMCAwIDAgMi40ODMtLjA3NWMzLjA0My0uMTU0IDYuMTQ4LS44NDkgOC41MjUtMi4xOTlWMi41em0xIDB2MTFhLjUuNSAwIDAgMCAxIDB2LTExYS41LjUgMCAwIDAtMSAwem0tMSAxLjM1Yy0yLjM0NCAxLjIwNS01LjIwOSAxLjg0Mi04IDIuMDMzdjQuMjMzYy4xOC4wMS4zNTkuMDIyLjUzNy4wMzYgMi41NjguMTg5IDUuMDkzLjc0NCA3LjQ2MyAxLjk5M1YzLjg1em0tOSA2LjIxNXYtNC4xM2E5NS4wOSA5NS4wOSAwIDAgMS0xLjk5Mi4wNTJBMS4wMiAxLjAyIDAgMCAwIDEgN3YyYzAgLjU1LjQ0OCAxLjAwMiAxLjAwNiAxLjAwOUE2MC40OSA2MC40OSAwIDAgMSA0IDEwLjA2NXptLS42NTcuOTc1IDEuNjA5IDMuMDM3LjAxLjAyNGguNTQ4bC0uMDAyLS4wMTQtLjQ0My0yLjk2NmE2OC4wMTkgNjguMDE5IDAgMCAwLTEuNzIyLS4wODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWVudUFwcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxLjVBMS41IDEuNSAwIDAgMSAxLjUgMGgyQTEuNSAxLjUgMCAwIDEgNSAxLjV2MkExLjUgMS41IDAgMCAxIDMuNSA1aC0yQTEuNSAxLjUgMCAwIDEgMCAzLjV2LTJ6TTAgOGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY4em0xIDN2MmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTJIMXptMTQtMVY4YTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjJoMTR6TTIgOC41YS41LjUgMCAwIDEgLjUtLjVoOWEuNS41IDAgMCAxIDAgMWgtOWEuNS41IDAgMCAxLS41LS41em0wIDRhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAwIDEgMCAxaC02YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWVudUFwcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNUExLjUgMS41IDAgMCAxIDEuNSAwaDJBMS41IDEuNSAwIDAgMSA1IDEuNXYyQTEuNSAxLjUgMCAwIDEgMy41IDVoLTJBMS41IDEuNSAwIDAgMSAwIDMuNXYtMnpNMS41IDFhLjUuNSAwIDAgMC0uNS41djJhLjUuNSAwIDAgMCAuNS41aDJhLjUuNSAwIDAgMCAuNS0uNXYtMmEuNS41IDAgMCAwLS41LS41aC0yek0wIDhhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOHptMSAzdjJhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0ySDF6bTE0LTFWOGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYyaDE0ek0yIDguNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMCA0YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01lbnVCdXR0b25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAwQTEuNSAxLjUgMCAwIDAgMCAxLjV2MkExLjUgMS41IDAgMCAwIDEuNSA1aDhBMS41IDEuNSAwIDAgMCAxMSAzLjV2LTJBMS41IDEuNSAwIDAgMCA5LjUgMGgtOHptNS45MjcgMi40MjdBLjI1LjI1IDAgMCAxIDcuNjA0IDJoLjc5MmEuMjUuMjUgMCAwIDEgLjE3Ny40MjdsLS4zOTYuMzk2YS4yNS4yNSAwIDAgMS0uMzU0IDBsLS4zOTYtLjM5NnpNMCA4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjh6bTEgM3YyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMkgxem0xNC0xVjhhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmgxNHpNMiA4LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNZW51QnV0dG9uV2lkZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41IDBBMS41IDEuNSAwIDAgMCAwIDEuNXYyQTEuNSAxLjUgMCAwIDAgMS41IDVoMTNBMS41IDEuNSAwIDAgMCAxNiAzLjV2LTJBMS41IDEuNSAwIDAgMCAxNC41IDBoLTEzem0xIDJoM2EuNS41IDAgMCAxIDAgMWgtM2EuNS41IDAgMCAxIDAtMXptOS45MjcuNDI3QS4yNS4yNSAwIDAgMSAxMi42MDQgMmguNzkyYS4yNS4yNSAwIDAgMSAuMTc3LjQyN2wtLjM5Ni4zOTZhLjI1LjI1IDAgMCAxLS4zNTQgMGwtLjM5Ni0uMzk2ek0wIDhhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjVhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWOHptMSAzdjJhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xdi0ySDF6bTE0LTFWOGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXYyaDE0ek0yIDguNWEuNS41IDAgMCAxIC41LS41aDlhLjUuNSAwIDAgMSAwIDFoLTlhLjUuNSAwIDAgMS0uNS0uNXptMCA0YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01lbnVCdXR0b25XaWRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMS41QTEuNSAxLjUgMCAwIDEgMS41IDBoMTNBMS41IDEuNSAwIDAgMSAxNiAxLjV2MkExLjUgMS41IDAgMCAxIDE0LjUgNWgtMTNBMS41IDEuNSAwIDAgMSAwIDMuNXYtMnpNMS41IDFhLjUuNSAwIDAgMC0uNS41djJhLjUuNSAwIDAgMCAuNS41aDEzYS41LjUgMCAwIDAgLjUtLjV2LTJhLjUuNSAwIDAgMC0uNS0uNWgtMTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAyLjVhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6bTEwLjgyMy4zMjMtLjM5Ni0uMzk2QS4yNS4yNSAwIDAgMSAxMi42MDQgMmguNzkyYS4yNS4yNSAwIDAgMSAuMTc3LjQyN2wtLjM5Ni4zOTZhLjI1LjI1IDAgMCAxLS4zNTQgMHpNMCA4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjh6bTEgM3YyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMkgxem0xNC0xVjhhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmgxNHpNMiA4LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNZW51QnV0dG9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMS41QTEuNSAxLjUgMCAwIDEgMS41IDBoOEExLjUgMS41IDAgMCAxIDExIDEuNXYyQTEuNSAxLjUgMCAwIDEgOS41IDVoLThBMS41IDEuNSAwIDAgMSAwIDMuNXYtMnpNMS41IDFhLjUuNSAwIDAgMC0uNS41djJhLjUuNSAwIDAgMCAuNS41aDhhLjUuNSAwIDAgMCAuNS0uNXYtMmEuNS41IDAgMCAwLS41LS41aC04elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTcuODIzIDIuODIzLS4zOTYtLjM5NkEuMjUuMjUgMCAwIDEgNy42MDQgMmguNzkyYS4yNS4yNSAwIDAgMSAuMTc3LjQyN2wtLjM5Ni4zOTZhLjI1LjI1IDAgMCAxLS4zNTQgMHpNMCA4YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjh6bTEgM3YyYTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMkgxem0xNC0xVjhhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2MmgxNHpNMiA4LjVhLjUuNSAwIDAgMSAuNS0uNWg5YS41LjUgMCAwIDEgMCAxaC05YS41LjUgMCAwIDEtLjUtLjV6bTAgNGEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNZW51RG93biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY0Ni4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMMTAuMjA3IDJIMTRhMiAyIDAgMCAxIDIgMnY5YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmgzLjc5M0w3LjY0Ni4xNDZ6TTEgN3YzaDE0VjdIMXptMTQtMVY0YTEgMSAwIDAgMC0xLTFoLTMuNzkzYTEgMSAwIDAgMS0uNzA3LS4yOTNMOCAxLjIwN2wtMS41IDEuNUExIDEgMCAwIDEgNS43OTMgM0gyYTEgMSAwIDAgMC0xIDF2MmgxNHptMCA1SDF2MmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTF2LTJ6TTIgNC41YS41LjUgMCAwIDEgLjUtLjVoOGEuNS41IDAgMCAxIDAgMWgtOGEuNS41IDAgMCAxLS41LS41em0wIDRhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptMCA0YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01lbnVVcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY0NiAxNS44NTRhLjUuNSAwIDAgMCAuNzA4IDBMMTAuMjA3IDE0SDE0YTIgMiAwIDAgMCAyLTJWM2EyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnY5YTIgMiAwIDAgMCAyIDJoMy43OTNsMS44NTMgMS44NTR6TTEgOVY2aDE0djNIMXptMTQgMXYyYTEgMSAwIDAgMS0xIDFoLTMuNzkzYTEgMSAwIDAgMC0uNzA3LjI5M2wtMS41IDEuNS0xLjUtMS41QTEgMSAwIDAgMCA1Ljc5MyAxM0gyYTEgMSAwIDAgMS0xLTF2LTJoMTR6bTAtNUgxVjNhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxdjJ6TTIgMTEuNWEuNS41IDAgMCAwIC41LjVoOGEuNS41IDAgMCAwIDAtMWgtOGEuNS41IDAgMCAwLS41LjV6bTAtNGEuNS41IDAgMCAwIC41LjVoMTFhLjUuNSAwIDAgMCAwLTFoLTExYS41LjUgMCAwIDAtLjUuNXptMC00YS41LjUgMCAwIDAgLjUuNWg2YS41LjUgMCAwIDAgMC0xaC02YS41LjUgMCAwIDAtLjUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNZXNzZW5nZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA3Ljc2QzAgMy4zMDEgMy40OTMgMCA4IDBzOCAzLjMwMSA4IDcuNzYtMy40OTMgNy43Ni04IDcuNzZjLS44MSAwLTEuNTg2LS4xMDctMi4zMTYtLjMwN2EuNjM5LjYzOSAwIDAgMC0uNDI3LjAzbC0xLjU4OC43MDJhLjY0LjY0IDAgMCAxLS44OTgtLjU2NmwtLjA0NC0xLjQyM2EuNjM5LjYzOSAwIDAgMC0uMjE1LS40NTZDLjk1NiAxMi4xMDggMCAxMC4wOTIgMCA3Ljc2em01LjU0Ni0xLjQ1OS0yLjM1IDMuNzI4Yy0uMjI1LjM1OC4yMTQuNzYxLjU1MS41MDZsMi41MjUtMS45MTZhLjQ4LjQ4IDAgMCAxIC41NzgtLjAwMmwxLjg2OSAxLjQwMmExLjIgMS4yIDAgMCAwIDEuNzM1LS4zMmwyLjM1LTMuNzI4Yy4yMjYtLjM1OC0uMjE0LS43NjEtLjU1MS0uNTA2TDkuNzI4IDcuMzgxYS40OC40OCAwIDAgMS0uNTc4LjAwMkw3LjI4MSA1Ljk4YTEuMiAxLjIgMCAwIDAtMS43MzUuMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWljRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDNhMyAzIDAgMCAxIDYgMHY1YTMgMyAwIDAgMS02IDBWM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgNi41QS41LjUgMCAwIDEgNCA3djFhNCA0IDAgMCAwIDggMFY3YS41LjUgMCAwIDEgMSAwdjFhNSA1IDAgMCAxLTQuNSA0Ljk3NVYxNWgzYS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xaDN2LTIuMDI1QTUgNSAwIDAgMSAzIDhWN2EuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01pY011dGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDhjMCAuNTY0LS4wOTQgMS4xMDctLjI2NiAxLjYxM2wtLjgxNC0uODE0QTQuMDIgNC4wMiAwIDAgMCAxMiA4VjdhLjUuNSAwIDAgMSAxIDB2MXptLTUgNGMuODE4IDAgMS41NzgtLjI0NSAyLjIxMi0uNjY3bC43MTguNzE5YTQuOTczIDQuOTczIDAgMCAxLTIuNDMuOTIzVjE1aDNhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMSAwLTFoM3YtMi4wMjVBNSA1IDAgMCAxIDMgOFY3YS41LjUgMCAwIDEgMSAwdjFhNCA0IDAgMCAwIDQgNHptMy05djQuODc5TDUuMTU4IDIuMDM3QTMuMDAxIDMuMDAxIDAgMCAxIDExIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS40ODYgMTAuNjA3IDUgNi4xMlY4YTMgMyAwIDAgMCA0LjQ4NiAyLjYwN3ptLTcuODQtOS4yNTMgMTIgMTIgLjcwOC0uNzA4LTEyLTEyLS43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01pY011dGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMgOGMwIC41NjQtLjA5NCAxLjEwNy0uMjY2IDEuNjEzbC0uODE0LS44MTRBNC4wMiA0LjAyIDAgMCAwIDEyIDhWN2EuNS41IDAgMCAxIDEgMHYxem0tNSA0Yy44MTggMCAxLjU3OC0uMjQ1IDIuMjEyLS42NjdsLjcxOC43MTlhNC45NzMgNC45NzMgMCAwIDEtMi40My45MjNWMTVoM2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxIDAtMWgzdi0yLjAyNUE1IDUgMCAwIDEgMyA4VjdhLjUuNSAwIDAgMSAxIDB2MWE0IDQgMCAwIDAgNCA0em0zLTl2NC44NzlsLTEtMVYzYTIgMiAwIDAgMC0zLjk5Ny0uMTE4bC0uODQ1LS44NDVBMy4wMDEgMy4wMDEgMCAwIDEgMTEgM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm05LjQ4NiAxMC42MDctLjc0OC0uNzQ4QTIgMiAwIDAgMSA2IDh2LS44NzhsLTEtMVY4YTMgMyAwIDAgMCA0LjQ4NiAyLjYwN3ptLTcuODQtOS4yNTMgMTIgMTIgLjcwOC0uNzA4LTEyLTEyLS43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc01pYyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgNi41QS41LjUgMCAwIDEgNCA3djFhNCA0IDAgMCAwIDggMFY3YS41LjUgMCAwIDEgMSAwdjFhNSA1IDAgMCAxLTQuNSA0Ljk3NVYxNWgzYS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEgMC0xaDN2LTIuMDI1QTUgNSAwIDAgMSAzIDhWN2EuNS41IDAgMCAxIC41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhhMiAyIDAgMSAxLTQgMFYzYTIgMiAwIDEgMSA0IDB2NXpNOCAwYTMgMyAwIDAgMC0zIDN2NWEzIDMgMCAwIDAgNiAwVjNhMyAzIDAgMCAwLTMtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNaWNyb3NvZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy40NjIgMEgwdjcuMTloNy40NjJWMHpNMTYgMEg4LjUzOHY3LjE5SDE2VjB6TTcuNDYyIDguMjExSDBWMTZoNy40NjJWOC4yMTF6bTguNTM4IDBIOC41MzhWMTZIMTZWOC4yMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTWluZWNhcnRMb2FkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxNWExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bTAgMWEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6bTgtMWExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJ6bTAgMWEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6TS4xMTUgMy4xOEEuNS41IDAgMCAxIC41IDNoMTVhLjUuNSAwIDAgMSAuNDkxLjU5MmwtMS41IDhBLjUuNSAwIDAgMSAxNCAxMkgyYS41LjUgMCAwIDEtLjQ5MS0uNDA4bC0xLjUtOGEuNS41IDAgMCAxIC4xMDYtLjQxMXptLjk4Ny44MiAxLjMxMyA3aDExLjE3bDEuMzEzLTdIMS4xMDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMWEyLjQ5OCAyLjQ5OCAwIDAgMSA0IDBjLjgxOCAwIDEuNTQ1LjM5NCAyIDEgLjY3IDAgMS41NTIuNTcgMiAxaC0yYy0uMzE0IDAtLjYxMS0uMTUtLjgtLjQtLjI3NC0uMzY1LS43MS0uNi0xLjItLjYtLjMxNCAwLS42MTEtLjE1LS44LS40YTEuNDk3IDEuNDk3IDAgMCAwLTIuNCAwYy0uMTg5LjI1LS40ODYuNC0uOC40LS41MDcgMC0uOTU1LjI1MS0xLjIyOC42MzgtLjA5LjEzLS4xOTQuMjUtLjMwOC4zNjJIM2MuMTMtLjE0Ny40MDEtLjQzMi41NjItLjU0NWExLjYzIDEuNjMgMCAwIDAgLjM5My0uMzkzQTIuNDk4IDIuNDk4IDAgMCAxIDYgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNaW5lY2FydCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDE1YTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnptMCAxYTIgMiAwIDEgMCAwLTQgMiAyIDAgMCAwIDAgNHptOC0xYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnptMCAxYTIgMiAwIDEgMCAwLTQgMiAyIDAgMCAwIDAgNHpNLjExNSAzLjE4QS41LjUgMCAwIDEgLjUgM2gxNWEuNS41IDAgMCAxIC40OTEuNTkybC0xLjUgOEEuNS41IDAgMCAxIDE0IDEySDJhLjUuNSAwIDAgMS0uNDkxLS40MDhsLTEuNS04YS41LjUgMCAwIDEgLjEwNi0uNDExem0uOTg3LjgyIDEuMzEzIDdoMTEuMTdsMS4zMTMtN0gxLjEwMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb2lzdHVyZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy41IDBhLjUuNSAwIDAgMCAwIDFIMTV2Mi43NWgtLjVhLjUuNSAwIDAgMCAwIDFoLjVWNy41aC0xLjVhLjUuNSAwIDAgMCAwIDFIMTV2Mi43NWgtLjVhLjUuNSAwIDAgMCAwIDFoLjVWMTVoLTEuNWEuNS41IDAgMCAwIDAgMWgyYS41LjUgMCAwIDAgLjUtLjVWLjVhLjUuNSAwIDAgMC0uNS0uNWgtMnpNNyAxLjVsLjM2NC0uMzQzYS41LjUgMCAwIDAtLjcyOCAwbC0uMDAyLjAwMi0uMDA2LjAwNy0uMDIyLjAyMy0uMDguMDg4YTI4LjQ1OCAyOC40NTggMCAwIDAtMS4yNzQgMS41MTdjLS43NjkuOTgzLTEuNzE0IDIuMzI1LTIuMzg1IDMuNzI3QzIuMzY4IDcuNTY0IDIgOC42ODIgMiA5LjczMyAyIDEyLjYxNCA0LjIxMiAxNSA3IDE1czUtMi4zODYgNS01LjI2N2MwLTEuMDUtLjM2OC0yLjE2OS0uODY3LTMuMjEyLS42NzEtMS40MDItMS42MTYtMi43NDQtMi4zODUtMy43MjdhMjguNDU4IDI4LjQ1OCAwIDAgMC0xLjM1NC0xLjYwNWwtLjAyMi0uMDIzLS4wMDYtLjAwNy0uMDAyLS4wMDFMNyAxLjV6bTAgMC0uMzY0LS4zNDNMNyAxLjV6bS0uMDE2Ljc2Nkw3IDIuMjQ3bC4wMTYuMDE5Yy4yNC4yNzQuNTcyLjY2Ny45NDQgMS4xNDQuNjExLjc4MSAxLjMyIDEuNzc2IDEuOTAxIDIuODI3SDQuMTRjLjU4LTEuMDUxIDEuMjktMi4wNDYgMS45LTIuODI3LjM3My0uNDc3LjcwNi0uODcuOTQ1LTEuMTQ0ek0zIDkuNzMzYzAtLjc1NS4yNDQtMS42MTIuNjM4LTIuNDk2aDYuNzI0Yy4zOTUuODg0LjYzOCAxLjc0MS42MzggMi40OTZDMTEgMTIuMTE3IDkuMTgyIDE0IDcgMTRzLTQtMS44ODMtNC00LjI2N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb29uRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IC4yNzhhLjc2OC43NjggMCAwIDEgLjA4Ljg1OCA3LjIwOCA3LjIwOCAwIDAgMC0uODc4IDMuNDZjMCA0LjAyMSAzLjI3OCA3LjI3NyA3LjMxOCA3LjI3Ny41MjcgMCAxLjA0LS4wNTUgMS41MzMtLjE2YS43ODcuNzg3IDAgMCAxIC44MS4zMTYuNzMzLjczMyAwIDAgMS0uMDMxLjg5M0E4LjM0OSA4LjM0OSAwIDAgMSA4LjM0NCAxNkMzLjczNCAxNiAwIDEyLjI4NiAwIDcuNzEgMCA0LjI2NiAyLjExNCAxLjMxMiA1LjEyNC4wNkEuNzUyLjc1MiAwIDAgMSA2IC4yNzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTW9vblN0YXJzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IC4yNzhhLjc2OC43NjggMCAwIDEgLjA4Ljg1OCA3LjIwOCA3LjIwOCAwIDAgMC0uODc4IDMuNDZjMCA0LjAyMSAzLjI3OCA3LjI3NyA3LjMxOCA3LjI3Ny41MjcgMCAxLjA0LS4wNTUgMS41MzMtLjE2YS43ODcuNzg3IDAgMCAxIC44MS4zMTYuNzMzLjczMyAwIDAgMS0uMDMxLjg5M0E4LjM0OSA4LjM0OSAwIDAgMSA4LjM0NCAxNkMzLjczNCAxNiAwIDEyLjI4NiAwIDcuNzEgMCA0LjI2NiAyLjExNCAxLjMxMiA1LjEyNC4wNkEuNzUyLjc1MiAwIDAgMSA2IC4yNzh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzk0IDMuMTQ4YS4yMTcuMjE3IDAgMCAxIC40MTIgMGwuMzg3IDEuMTYyYy4xNzMuNTE4LjU3OS45MjQgMS4wOTcgMS4wOTdsMS4xNjIuMzg3YS4yMTcuMjE3IDAgMCAxIDAgLjQxMmwtMS4xNjIuMzg3YTEuNzM0IDEuNzM0IDAgMCAwLTEuMDk3IDEuMDk3bC0uMzg3IDEuMTYyYS4yMTcuMjE3IDAgMCAxLS40MTIgMGwtLjM4Ny0xLjE2MkExLjczNCAxLjczNCAwIDAgMCA5LjMxIDYuNTkzbC0xLjE2Mi0uMzg3YS4yMTcuMjE3IDAgMCAxIDAtLjQxMmwxLjE2Mi0uMzg3YTEuNzM0IDEuNzM0IDAgMCAwIDEuMDk3LTEuMDk3bC4zODctMS4xNjJ6TTEzLjg2My4wOTlhLjE0NS4xNDUgMCAwIDEgLjI3NCAwbC4yNTguNzc0Yy4xMTUuMzQ2LjM4Ni42MTcuNzMyLjczMmwuNzc0LjI1OGEuMTQ1LjE0NSAwIDAgMSAwIC4yNzRsLS43NzQuMjU4YTEuMTU2IDEuMTU2IDAgMCAwLS43MzIuNzMybC0uMjU4Ljc3NGEuMTQ1LjE0NSAwIDAgMS0uMjc0IDBsLS4yNTgtLjc3NGExLjE1NiAxLjE1NiAwIDAgMC0uNzMyLS43MzJsLS43NzQtLjI1OGEuMTQ1LjE0NSAwIDAgMSAwLS4yNzRsLjc3NC0uMjU4Yy4zNDYtLjExNS42MTctLjM4Ni43MzItLjczMkwxMy44NjMuMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb29uU3RhcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAuMjc4YS43NjguNzY4IDAgMCAxIC4wOC44NTggNy4yMDggNy4yMDggMCAwIDAtLjg3OCAzLjQ2YzAgNC4wMjEgMy4yNzggNy4yNzcgNy4zMTggNy4yNzcuNTI3IDAgMS4wNC0uMDU1IDEuNTMzLS4xNmEuNzg3Ljc4NyAwIDAgMSAuODEuMzE2LjczMy43MzMgMCAwIDEtLjAzMS44OTNBOC4zNDkgOC4zNDkgMCAwIDEgOC4zNDQgMTZDMy43MzQgMTYgMCAxMi4yODYgMCA3LjcxIDAgNC4yNjYgMi4xMTQgMS4zMTIgNS4xMjQuMDZBLjc1Mi43NTIgMCAwIDEgNiAuMjc4ek00Ljg1OCAxLjMxMUE3LjI2OSA3LjI2OSAwIDAgMCAxLjAyNSA3LjcxYzAgNC4wMiAzLjI3OSA3LjI3NiA3LjMxOSA3LjI3NmE3LjMxNiA3LjMxNiAwIDAgMCA1LjIwNS0yLjE2MmMtLjMzNy4wNDItLjY4LjA2My0xLjAyOS4wNjMtNC42MSAwLTguMzQzLTMuNzE0LTguMzQzLTguMjkgMC0xLjE2Ny4yNDItMi4yNzguNjgxLTMuMjg2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjc5NCAzLjE0OGEuMjE3LjIxNyAwIDAgMSAuNDEyIDBsLjM4NyAxLjE2MmMuMTczLjUxOC41NzkuOTI0IDEuMDk3IDEuMDk3bDEuMTYyLjM4N2EuMjE3LjIxNyAwIDAgMSAwIC40MTJsLTEuMTYyLjM4N2ExLjczNCAxLjczNCAwIDAgMC0xLjA5NyAxLjA5N2wtLjM4NyAxLjE2MmEuMjE3LjIxNyAwIDAgMS0uNDEyIDBsLS4zODctMS4xNjJBMS43MzQgMS43MzQgMCAwIDAgOS4zMSA2LjU5M2wtMS4xNjItLjM4N2EuMjE3LjIxNyAwIDAgMSAwLS40MTJsMS4xNjItLjM4N2ExLjczNCAxLjczNCAwIDAgMCAxLjA5Ny0xLjA5N2wuMzg3LTEuMTYyek0xMy44NjMuMDk5YS4xNDUuMTQ1IDAgMCAxIC4yNzQgMGwuMjU4Ljc3NGMuMTE1LjM0Ni4zODYuNjE3LjczMi43MzJsLjc3NC4yNThhLjE0NS4xNDUgMCAwIDEgMCAuMjc0bC0uNzc0LjI1OGExLjE1NiAxLjE1NiAwIDAgMC0uNzMyLjczMmwtLjI1OC43NzRhLjE0NS4xNDUgMCAwIDEtLjI3NCAwbC0uMjU4LS43NzRhMS4xNTYgMS4xNTYgMCAwIDAtLjczMi0uNzMybC0uNzc0LS4yNThhLjE0NS4xNDUgMCAwIDEgMC0uMjc0bC43NzQtLjI1OGMuMzQ2LS4xMTUuNjE3LS4zODYuNzMyLS43MzJMMTMuODYzLjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTW9vbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IC4yNzhhLjc2OC43NjggMCAwIDEgLjA4Ljg1OCA3LjIwOCA3LjIwOCAwIDAgMC0uODc4IDMuNDZjMCA0LjAyMSAzLjI3OCA3LjI3NyA3LjMxOCA3LjI3Ny41MjcgMCAxLjA0LS4wNTUgMS41MzMtLjE2YS43ODcuNzg3IDAgMCAxIC44MS4zMTYuNzMzLjczMyAwIDAgMS0uMDMxLjg5M0E4LjM0OSA4LjM0OSAwIDAgMSA4LjM0NCAxNkMzLjczNCAxNiAwIDEyLjI4NiAwIDcuNzEgMCA0LjI2NiAyLjExNCAxLjMxMiA1LjEyNC4wNkEuNzUyLjc1MiAwIDAgMSA2IC4yNzh6TTQuODU4IDEuMzExQTcuMjY5IDcuMjY5IDAgMCAwIDEuMDI1IDcuNzFjMCA0LjAyIDMuMjc5IDcuMjc2IDcuMzE5IDcuMjc2YTcuMzE2IDcuMzE2IDAgMCAwIDUuMjA1LTIuMTYyYy0uMzM3LjA0Mi0uNjguMDYzLTEuMDI5LjA2My00LjYxIDAtOC4zNDMtMy43MTQtOC4zNDMtOC4yOSAwLTEuMTY3LjI0Mi0yLjI3OC42ODEtMy4yODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTW91c2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNWE1IDUgMCAwIDEgMTAgMHY2YTUgNSAwIDAgMS0xMCAwVjV6bTUuNS0xLjVhLjUuNSAwIDAgMC0xIDB2MmEuNS41IDAgMCAwIDEgMHYtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb3VzZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDNhLjUuNSAwIDAgMSAuNS41djJhLjUuNSAwIDAgMS0xIDB2LTJBLjUuNSAwIDAgMSA4IDN6bTQgOGE0IDQgMCAwIDEtOCAwVjVhNCA0IDAgMSAxIDggMHY2ek04IDBhNSA1IDAgMCAwLTUgNXY2YTUgNSAwIDAgMCAxMCAwVjVhNSA1IDAgMCAwLTUtNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb3VzZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuNS4wMjZDNC45NTguMjg2IDMgMi41MTUgMyA1LjE4OFY1LjVoNC41Vi4wMjZ6bTEgMFY1LjVIMTN2LS4zMTJDMTMgMi41MTUgMTEuMDQyLjI4NiA4LjUuMDI2ek0xMyA2LjVIM3Y0LjMxM0MzIDEzLjY1OCA1LjIyIDE2IDggMTZzNS0yLjM0MiA1LTUuMTg4VjYuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNb3VzZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA1LjE4OEMzIDIuMzQxIDUuMjIgMCA4IDBzNSAyLjM0MiA1IDUuMTg4djUuNjI1QzEzIDEzLjY1OCAxMC43OCAxNiA4IDE2cy01LTIuMzQyLTUtNS4xODhWNS4xODl6bTQuNS00LjE1NUM1LjU0MSAxLjI4OSA0IDMuMDM1IDQgNS4xODhWNS41aDMuNVYxLjAzM3ptMSAwVjUuNUgxMnYtLjMxM2MwLTIuMTUyLTEuNTQxLTMuODk4LTMuNS00LjE1NHpNMTIgNi41SDR2NC4zMTNDNCAxMy4xNDUgNS44MSAxNSA4IDE1czQtMS44NTUgNC00LjE4OFY2LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTW91c2UzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUuMDY5QTE1LjMyOCAxNS4zMjggMCAwIDAgNyAwYy0uNTkzIDAtMS4xMDQuMTU3LTEuNTI3LjQ2My0uNDE4LjMwMi0uNzE3LjcyNi0uOTMgMS4yMDgtLjM4Ni44NzMtLjUyMiAyLjAxLS41NCAzLjIwNmw0LjQ5NyAxVi4wNjl6TTMuNzEgNS44MzYgMy4zODEgNkEyLjUgMi41IDAgMCAwIDIgOC4yMzZ2Mi41NzZDMiAxMy42NTkgNC4yMiAxNiA3IDE2aDJjMi43OCAwIDUtMi4zNDIgNS01LjE4OFY4LjEyM2wtOS0ydi4wMDNsLjAwOC4zNTNjLjAwNy4zLjAyMy43MTUuMDUzIDEuMTc1LjA2My45MzcuMTg2IDIuMDA1LjQxMyAyLjY4OGEuNS41IDAgMSAxLS45NDguMzE2Yy0uMjczLS44MTctLjQtMi0uNDYyLTIuOTM3QTMwLjE2IDMwLjE2IDAgMCAxIDQgNi4wMDNjMC0uMDM0LjAwMy0uMDY3LjAxLS4xbC0uMy0uMDY3ek0xNCA3LjFWNS4xODdjMC0xLjEzLS4yNzItMi4wNDQtLjc0OC0yLjc3Mi0uNDc0LS43MjYtMS4xMy0xLjIzNS0xLjg0OS0xLjU5QTcuNDk1IDcuNDk1IDAgMCAwIDkuNS4yMTJ2NS44ODdsNC41IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTW91c2UzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMGMtLjU5MyAwLTEuMTA0LjE1Ny0xLjUyNy40NjMtLjQxOC4zMDItLjcxNy43MjYtLjkzIDEuMjA4QzQuMTIzIDIuNjE5IDQgMy44NzkgNCA1LjE4N3YuNTA0TDMuMzgyIDZBMi41IDIuNSAwIDAgMCAyIDguMjM2djIuNTc2QzIgMTMuNjU5IDQuMjIgMTYgNyAxNmgyYzIuNzggMCA1LTIuMzQyIDUtNS4xODhWNy41MWEuNzEuNzEgMCAwIDAgMC0uMDJWNS4xODZjMC0xLjEzLS4yNzItMi4wNDQtLjc0OC0yLjc3Mi0uNDc0LS43MjYtMS4xMy0xLjIzNS0xLjg0OS0xLjU5QzkuOTgxLjEyMyA4LjI2IDAgNyAwem0yLjUgNi4wOTlWMS4yMzJjLjUxLjExIDEuMDA4LjI2NyAxLjQ2LjQ5LjU5Ni4yOTMgMS4wOTkuNjk0IDEuNDU1IDEuMjQuMzU1LjU0My41ODUgMS4yNjIuNTg1IDIuMjI1djEuNjlsLTMuNS0uNzc4em0tMS01LjAyNXY0LjgwM0w1IDUuMDk5Yy4wMDYtMS4yNDIuMTM0LTIuMjkzLjQ1Ny0zLjAyNC4xNjItLjM2Ni4zNjMtLjYzLjYwMi0uODAxQzYuMjkyIDEuMTA1IDYuNTkzIDEgNyAxYy40NjggMCAuOTguMDE4IDEuNS4wNzR6TTUgNi4xMjQgMTMgNy45djIuOTEyQzEzIDEzLjE0NSAxMS4xOSAxNSA5IDE1SDdjLTIuMTkgMC00LTEuODU1LTQtNC4xODhWOC4yMzZhMS41IDEuNSAwIDAgMSAuODMtMS4zNDJsLjE4Ny0uMDkzYy4wMS4yNjUuMDI0LjU4LjA0Ny45Mi4wNjIuOTM4LjE5IDIuMTIuNDYyIDIuOTM3YS41LjUgMCAxIDAgLjk0OC0uMzE2Yy0uMjI3LS42ODMtLjM1LTEuNzUtLjQxMy0yLjY4OGEyOS4xNyAyOS4xNyAwIDAgMS0uMDYtMS41Mjh2LS4wMDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTXVzaWNOb3RlQmVhbWVkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMTNjMCAxLjEwNS0xLjEyIDItMi41IDJTMSAxNC4xMDUgMSAxM2MwLTEuMTA0IDEuMTItMiAyLjUtMnMyLjUuODk2IDIuNSAyem05LTJjMCAxLjEwNS0xLjEyIDItMi41IDJzLTIuNS0uODk1LTIuNS0yIDEuMTItMiAyLjUtMiAyLjUuODk1IDIuNSAyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNCAxMVYyaDF2OWgtMXpNNiAzdjEwSDVWM2gxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMi45MDVhMSAxIDAgMCAxIC45LS45OTVsOC0uOGExIDEgMCAwIDEgMS4xLjk5NVYzTDUgNFYyLjkwNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNdXNpY05vdGVMaXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyIDEzYzAgMS4xMDUtMS4xMiAyLTIuNSAyUzcgMTQuMTA1IDcgMTNzMS4xMi0yIDIuNS0yIDIuNS44OTUgMi41IDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyIDN2MTBoLTFWM2gxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIuODJhMSAxIDAgMCAxIC44MDQtLjk4bDMtLjZBMSAxIDAgMCAxIDE2IDIuMjJWNGwtNSAxVjIuODJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgMTEuNWEuNS41IDAgMCAxIC41LS41SDRhLjUuNSAwIDAgMSAwIDFILjVhLjUuNSAwIDAgMS0uNS0uNXptMC00QS41LjUgMCAwIDEgLjUgN0g4YS41LjUgMCAwIDEgMCAxSC41YS41LjUgMCAwIDEtLjUtLjV6bTAtNEEuNS41IDAgMCAxIC41IDNIOGEuNS41IDAgMCAxIDAgMUguNWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc011c2ljTm90ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDEzYzAgMS4xMDUtMS4xMiAyLTIuNSAyUzQgMTQuMTA1IDQgMTNzMS4xMi0yIDIuNS0yIDIuNS44OTUgMi41IDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTkgM3YxMEg4VjNoMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDIuODJhMSAxIDAgMCAxIC44MDQtLjk4bDMtLjZBMSAxIDAgMCAxIDEzIDIuMjJWNEw4IDVWMi44MnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNNdXNpY1BsYXllckZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMmExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmg4YTIgMiAwIDAgMCAyLTJWMmEyIDIgMCAwIDAtMi0ySDR6bTEgMmg2YTEgMSAwIDAgMSAxIDF2Mi41YTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEtMS0xVjNhMSAxIDAgMCAxIDEtMXptMyAxMmEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTXVzaWNQbGF5ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAzYTEgMSAwIDAgMSAxLTFoNmExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMUg1YTEgMSAwIDAgMS0xLTFWM3ptMSAwdjNoNlYzSDV6bTMgOWExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMTFhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwem0tMyAyYTIgMiAwIDEgMCAwLTQgMiAyIDAgMCAwIDAgNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptMi0xYTEgMSAwIDAgMC0xIDF2MTJhMSAxIDAgMCAwIDEgMWg4YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTmV3c3BhcGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMi41QTEuNSAxLjUgMCAwIDEgMS41IDFoMTFBMS41IDEuNSAwIDAgMSAxNCAyLjV2MTAuNTI4YzAgLjMtLjA1LjY1NC0uMjM4Ljk3MmguNzM4YS41LjUgMCAwIDAgLjUtLjV2LTlhLjUuNSAwIDAgMSAxIDB2OWExLjUgMS41IDAgMCAxLTEuNSAxLjVIMS40OTdBMS40OTcgMS40OTcgMCAwIDEgMCAxMy41di0xMXpNMTIgMTRjLjM3IDAgLjY1NC0uMjExLjg1My0uNDQxLjA5Mi0uMTA2LjE0Ny0uMjc5LjE0Ny0uNTMxVjIuNWEuNS41IDAgMCAwLS41LS41aC0xMWEuNS41IDAgMCAwLS41LjV2MTFjMCAuMjc4LjIyMy41LjQ5Ny41SDEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgM2gxMHYySDJWM3ptMCAzaDR2M0gyVjZ6bTAgNGg0djFIMnYtMXptMCAyaDR2MUgydi0xem01LTZoMnYxSDdWNnptMyAwaDJ2MWgtMlY2ek03IDhoMnYxSDdWOHptMyAwaDJ2MWgtMlY4em0tMyAyaDJ2MUg3di0xem0zIDBoMnYxaC0ydi0xem0tMyAyaDJ2MUg3di0xem0zIDBoMnYxaC0ydi0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc05vZGVNaW51c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE2IDhhNSA1IDAgMCAxLTkuOTc1LjVINEExLjUgMS41IDAgMCAxIDIuNSAxMGgtMUExLjUgMS41IDAgMCAxIDAgOC41di0xQTEuNSAxLjUgMCAwIDEgMS41IDZoMUExLjUgMS41IDAgMCAxIDQgNy41aDIuMDI1QTUgNSAwIDAgMSAxNiA4em0tMiAwYS41LjUgMCAwIDAtLjUtLjVoLTVhLjUuNSAwIDAgMCAwIDFoNUEuNS41IDAgMCAwIDE0IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTm9kZU1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMSA0YTQgNCAwIDEgMCAwIDggNCA0IDAgMCAwIDAtOHpNNi4wMjUgNy41YTUgNSAwIDEgMSAwIDFINEExLjUgMS41IDAgMCAxIDIuNSAxMGgtMUExLjUgMS41IDAgMCAxIDAgOC41di0xQTEuNSAxLjUgMCAwIDEgMS41IDZoMUExLjUgMS41IDAgMCAxIDQgNy41aDIuMDI1ek0xLjUgN2EuNS41IDAgMCAwLS41LjV2MWEuNS41IDAgMCAwIC41LjVoMWEuNS41IDAgMCAwIC41LS41di0xYS41LjUgMCAwIDAtLjUtLjVoLTF6TTggOGEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVBLjUuNSAwIDAgMSA4IDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTm9kZVBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDEzYTUgNSAwIDEgMC00Ljk3NS01LjVINEExLjUgMS41IDAgMCAwIDIuNSA2aC0xQTEuNSAxLjUgMCAwIDAgMCA3LjV2MUExLjUgMS41IDAgMCAwIDEuNSAxMGgxQTEuNSAxLjUgMCAwIDAgNCA4LjVoMi4wMjVBNSA1IDAgMCAwIDExIDEzem0uNS03LjV2MmgyYS41LjUgMCAwIDEgMCAxaC0ydjJhLjUuNSAwIDAgMS0xIDB2LTJoLTJhLjUuNSAwIDAgMSAwLTFoMnYtMmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNOb2RlUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEgNGE0IDQgMCAxIDAgMCA4IDQgNCAwIDAgMCAwLTh6TTYuMDI1IDcuNWE1IDUgMCAxIDEgMCAxSDRBMS41IDEuNSAwIDAgMSAyLjUgMTBoLTFBMS41IDEuNSAwIDAgMSAwIDguNXYtMUExLjUgMS41IDAgMCAxIDEuNSA2aDFBMS41IDEuNSAwIDAgMSA0IDcuNWgyLjAyNXpNMTEgNWEuNS41IDAgMCAxIC41LjV2MmgyYS41LjUgMCAwIDEgMCAxaC0ydjJhLjUuNSAwIDAgMS0xIDB2LTJoLTJhLjUuNSAwIDAgMSAwLTFoMnYtMkEuNS41IDAgMCAxIDExIDV6TTEuNSA3YS41LjUgMCAwIDAtLjUuNXYxYS41LjUgMCAwIDAgLjUuNWgxYS41LjUgMCAwIDAgLjUtLjV2LTFhLjUuNSAwIDAgMC0uNS0uNWgtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNOdXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTggMWExIDEgMCAwIDAtLjg2OC41MDRsLTMuNDI4IDZhMSAxIDAgMCAwIDAgLjk5MmwzLjQyOCA2QTEgMSAwIDAgMCA0LjU4IDE1aDYuODRhMSAxIDAgMCAwIC44NjgtLjUwNGwzLjQyOS02YTEgMSAwIDAgMCAwLS45OTJsLTMuNDI5LTZBMSAxIDAgMCAwIDExLjQyIDFINC41OHptNS4wMTggOS42OTZhMyAzIDAgMSAxLTMtNS4xOTYgMyAzIDAgMCAxIDMgNS4xOTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzTnV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjQyIDIgMy40MjggNi0zLjQyOCA2SDQuNThMMS4xNTIgOCA0LjU4IDJoNi44NHpNNC41OCAxYTEgMSAwIDAgMC0uODY4LjUwNGwtMy40MjggNmExIDEgMCAwIDAgMCAuOTkybDMuNDI4IDZBMSAxIDAgMCAwIDQuNTggMTVoNi44NGExIDEgMCAwIDAgLjg2OC0uNTA0bDMuNDI5LTZhMSAxIDAgMCAwIDAtLjk5MmwtMy40MjktNkExIDEgMCAwIDAgMTEuNDIgMUg0LjU4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuODQ4IDUuOTMzYTIuNSAyLjUgMCAxIDAgMi41IDQuMzMgMi41IDIuNSAwIDAgMC0yLjUtNC4zM3ptLTEuNzggMy45MTVhMy41IDMuNSAwIDEgMSA2LjA2MS0zLjUgMy41IDMuNSAwIDAgMS02LjA2MiAzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzT2N0YWdvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMTA3IDBhLjUuNSAwIDAgMSAuMzUzLjE0Nmw0LjM5NCA0LjM5NGEuNS41IDAgMCAxIC4xNDYuMzUzdjYuMjE0YS41LjUgMCAwIDEtLjE0Ni4zNTNsLTQuMzk0IDQuMzk0YS41LjUgMCAwIDEtLjM1My4xNDZINC44OTNhLjUuNSAwIDAgMS0uMzUzLS4xNDZMLjE0NiAxMS40NkEuNS41IDAgMCAxIDAgMTEuMTA3VjQuODkzYS41LjUgMCAwIDEgLjE0Ni0uMzUzTDQuNTQuMTQ2QS41LjUgMCAwIDEgNC44OTMgMGg2LjIxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNPY3RhZ29uSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjU0LjE0NkEuNS41IDAgMCAxIDQuODkzIDBoNi4yMTRhLjUuNSAwIDAgMSAuMzUzLjE0Nmw0LjM5NCA0LjM5NGEuNS41IDAgMCAxIC4xNDYuMzUzdjYuMjE0YS41LjUgMCAwIDEtLjE0Ni4zNTNsLTQuMzk0IDQuMzk0YS41LjUgMCAwIDEtLjM1My4xNDZINC44OTNhLjUuNSAwIDAgMS0uMzUzLS4xNDZMLjE0NiAxMS40NkEuNS41IDAgMCAxIDAgMTEuMTA3VjQuODkzYS41LjUgMCAwIDEgLjE0Ni0uMzUzTDQuNTQuMTQ2ek04IDE1aDIuOWw0LjEtNC4xVjUuMUwxMC45IDFIOHYxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNPY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTQuMTQ2QS41LjUgMCAwIDEgNC44OTMgMGg2LjIxNGEuNS41IDAgMCAxIC4zNTMuMTQ2bDQuMzk0IDQuMzk0YS41LjUgMCAwIDEgLjE0Ni4zNTN2Ni4yMTRhLjUuNSAwIDAgMS0uMTQ2LjM1M2wtNC4zOTQgNC4zOTRhLjUuNSAwIDAgMS0uMzUzLjE0Nkg0Ljg5M2EuNS41IDAgMCAxLS4zNTMtLjE0NkwuMTQ2IDExLjQ2QS41LjUgMCAwIDEgMCAxMS4xMDdWNC44OTNhLjUuNSAwIDAgMSAuMTQ2LS4zNTNMNC41NC4xNDZ6TTUuMSAxIDEgNS4xdjUuOEw1LjEgMTVoNS44bDQuMS00LjFWNS4xTDEwLjkgMUg1LjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzT3B0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMi41YS41LjUgMCAwIDEgLjUtLjVoMy43OTdhLjUuNSAwIDAgMSAuNDM5LjI2TDExIDEzaDMuNWEuNS41IDAgMCAxIDAgMWgtMy43OTdhLjUuNSAwIDAgMS0uNDM5LS4yNkw1IDNIMS41YS41LjUgMCAwIDEtLjUtLjV6bTEwIDBhLjUuNSAwIDAgMSAuNS0uNWgzYS41LjUgMCAwIDEgMCAxaC0zYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzT3V0bGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMzQgMi45OTRjLjI3NS0uMzM4LjY4LS40OTQgMS4wNzQtLjQ5NGg3LjE3MmMuMzkzIDAgLjc5OC4xNTYgMS4wNzQuNDk0LjU3OC43MDggMS44NCAyLjUzNCAxLjg0IDUuMDA2IDAgMi40NzItMS4yNjIgNC4yOTctMS44NCA1LjAwNi0uMjc2LjMzOC0uNjguNDk0LTEuMDc0LjQ5NEg0LjQxNGMtLjM5NCAwLS43OTktLjE1Ni0xLjA3NC0uNDk0QzIuNzYyIDEyLjI5NyAxLjUgMTAuNDcyIDEuNSA4YzAtMi40NzIgMS4yNjItNC4yOTcgMS44NC01LjAwNnptMS4wNzQuNTA2YS4zNzYuMzc2IDAgMCAwLS4yOTkuMTI2QzMuNTk5IDQuMjU5IDIuNSA1Ljg2MyAyLjUgOGMwIDIuMTM3IDEuMDk5IDMuNzQgMS42MTUgNC4zNzQuMDYuMDczLjE2My4xMjYuMy4xMjZoNy4xN2MuMTM3IDAgLjI0LS4wNTMuMy0uMTI2LjUxNi0uNjMzIDEuNjE1LTIuMjM3IDEuNjE1LTQuMzc0IDAtMi4xMzctMS4wOTktMy43NC0xLjYxNS00LjM3NGEuMzc2LjM3NiAwIDAgMC0uMy0uMTI2aC03LjE3elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgNS41YS41LjUgMCAwIDEgLjUuNXYxLjVhLjUuNSAwIDAgMS0xIDBWNmEuNS41IDAgMCAxIC41LS41em00IDBhLjUuNSAwIDAgMSAuNS41djEuNWEuNS41IDAgMCAxLTEgMFY2YS41LjUgMCAwIDEgLjUtLjV6TTcgMTB2MWgydi0xYTEgMSAwIDAgMC0yIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGFpbnRCdWNrZXQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi4xOTIgMi43OGMtLjQ1OC0uNjc3LS45MjctMS4yNDgtMS4zNS0xLjY0M2EyLjk3MiAyLjk3MiAwIDAgMC0uNzEtLjUxNWMtLjIxNy0uMTA0LS41Ni0uMjA1LS44ODItLjAyLS4zNjcuMjEzLS40MjcuNjMtLjQzLjg5Ni0uMDAzLjMwNC4wNjQuNjY0LjE3MyAxLjA0NC4xOTYuNjg3LjU1NiAxLjUyOCAxLjAzNSAyLjQwMkwuNzUyIDguMjJjLS4yNzcuMjc3LS4yNjkuNjU2LS4yMTguOTE4LjA1NS4yODMuMTg3LjU5My4zNi45MDMuMzQ4LjYyNy45MiAxLjM2MSAxLjYyNiAyLjA2OC43MDcuNzA3IDEuNDQxIDEuMjc4IDIuMDY4IDEuNjI2LjMxLjE3My42Mi4zMDUuOTAzLjM2LjI2Mi4wNS42NC4wNTkuOTE4LS4yMThsNS42MTUtNS42MTVjLjExOC4yNTcuMDkyLjUxMi4wNS45MzktLjAzLjI5Mi0uMDY4LjY2NS0uMDczIDEuMTc2di4xMjNoLjAwM2ExIDEgMCAwIDAgMS45OTMgMEgxNHYtLjA1N2ExLjAxIDEuMDEgMCAwIDAtLjAwNC0uMTE3Yy0uMDU1LTEuMjUtLjctMi43MzgtMS44Ni0zLjQ5NGE0LjMyMiA0LjMyMiAwIDAgMC0uMjExLS40MzRjLS4zNDktLjYyNi0uOTItMS4zNi0xLjYyNy0yLjA2Ny0uNzA3LS43MDctMS40NDEtMS4yNzktMi4wNjgtMS42MjctLjMxLS4xNzItLjYyLS4zMDQtLjkwMy0uMzYtLjI2Mi0uMDUtLjY0LS4wNTgtLjkxOC4yMTlsLS4yMTcuMjE2ek00LjE2IDEuODY3Yy4zODEuMzU2Ljg0NC45MjIgMS4zMTEgMS42MzJsLS43MDQuNzA1Yy0uMzgyLS43MjctLjY2LTEuNDAyLS44MTMtMS45MzhhMy4yODMgMy4yODMgMCAwIDEtLjEzMS0uNjczYy4wOTEuMDYxLjIwNC4xNS4zMzcuMjc0em0uMzk0IDMuOTY1Yy41NC44NTIgMS4xMDcgMS41NjcgMS42MDcgMi4wMzNhLjUuNSAwIDEgMCAuNjgyLS43MzJjLS40NTMtLjQyMi0xLjAxNy0xLjEzNi0xLjU2NC0yLjAyN2wxLjA4OC0xLjA4OGMuMDU0LjEyLjExNS4yNDMuMTgzLjM2NS4zNDkuNjI3LjkyIDEuMzYxIDEuNjI3IDIuMDY4LjcwNi43MDcgMS40NCAxLjI3OCAyLjA2OCAxLjYyNi4xMjIuMDY4LjI0NC4xMy4zNjUuMTgzbC00Ljg2MSA0Ljg2MmEuNTcxLjU3MSAwIDAgMS0uMDY4LS4wMWMtLjEzNy0uMDI3LS4zNDItLjEwNC0uNjA4LS4yNTItLjUyNC0uMjkyLTEuMTg2LS44LTEuODQ2LTEuNDYtLjY2LS42Ni0xLjE2OC0xLjMyLTEuNDYtMS44NDYtLjE0Ny0uMjY1LS4yMjUtLjQ3LS4yNTEtLjYwN2EuNTczLjU3MyAwIDAgMS0uMDEtLjA2OGwzLjA0OC0zLjA0N3ptMi44Ny0xLjkzNWEyLjQ0IDIuNDQgMCAwIDEtLjI0MS0uNTYxYy4xMzUuMDMzLjMyNC4xMS41NjIuMjQxLjUyNC4yOTIgMS4xODYuOCAxLjg0NiAxLjQ2LjQ1LjQ1LjgzLjkwMSAxLjExOCAxLjMxYTMuNDk3IDMuNDk3IDAgMCAwLTEuMDY2LjA5MSAxMS4yNyAxMS4yNyAwIDAgMS0uNzYtLjY5NGMtLjY2LS42Ni0xLjE2Ny0xLjMyMi0xLjQ1OC0xLjg0N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYWxldHRlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi40MzMgMTAuMDdDMTQuMTMzIDEwLjU4NSAxNiAxMS4xNSAxNiA4YTggOCAwIDEgMC04IDhjMS45OTYgMCAxLjgyNi0xLjUwNCAxLjY0OS0zLjA4LS4xMjQtMS4xMDEtLjI1Mi0yLjIzNy4zNTEtMi45Mi40NjUtLjUyNyAxLjQyLS4yMzcgMi40MzMuMDd6TTggNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3ptNC41IDNhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6TTUgNi41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0uNSA2LjVhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGFsZXR0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDVhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6bTQgM2ExLjUgMS41IDAgMSAwIDAtMyAxLjUgMS41IDAgMCAwIDAgM3pNNS41IDdhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bS41IDZhMS41IDEuNSAwIDEgMCAwLTMgMS41IDEuNSAwIDAgMCAwIDN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOGMwIDMuMTUtMS44NjYgMi41ODUtMy41NjcgMi4wN0MxMS40MiA5Ljc2MyAxMC40NjUgOS40NzMgMTAgMTBjLS42MDMuNjgzLS40NzUgMS44MTktLjM1MSAyLjkyQzkuODI2IDE0LjQ5NSA5Ljk5NiAxNiA4IDE2YTggOCAwIDEgMSA4LTh6bS04IDdjLjYxMSAwIC42NTQtLjE3MS42NTUtLjE3Ni4wNzgtLjE0Ni4xMjQtLjQ2NC4wNy0xLjExOS0uMDE0LS4xNjgtLjAzNy0uMzctLjA2MS0uNTkxLS4wNTItLjQ2NC0uMTEyLTEuMDA1LS4xMTgtMS40NjItLjAxLS43MDcuMDgzLTEuNjEuNzA0LTIuMzE0LjM2OS0uNDE3Ljg0NS0uNTc4IDEuMjcyLS42MTguNDA0LS4wMzguODEyLjAyNiAxLjE2LjEwNC4zNDMuMDc3LjcwMi4xODYgMS4wMjUuMjg0bC4wMjguMDA4Yy4zNDYuMTA1LjY1OC4xOTkuOTUzLjI2Ni42NTMuMTQ4LjkwNC4wODMuOTkxLjAyNEMxNC43MTcgOS4zOCAxNSA5LjE2MSAxNSA4YTcgNyAwIDEgMC03IDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGFsZXR0ZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAuNUEuNS41IDAgMCAxIC41IDBoNWEuNS41IDAgMCAxIC41LjV2NS4yNzdsNC4xNDctNC4xMzFhLjUuNSAwIDAgMSAuNzA3IDBsMy41MzUgMy41MzZhLjUuNSAwIDAgMSAwIC43MDhMMTAuMjYxIDEwSDE1LjVhLjUuNSAwIDAgMSAuNS41djVhLjUuNSAwIDAgMS0uNS41SDNhMi45OSAyLjk5IDAgMCAxLTIuMTIxLS44NzlBMi45OSAyLjk5IDAgMCAxIDAgMTMuMDQ0bTYtLjIxIDcuMzI4LTcuMy0yLjgyOS0yLjgyOEw2IDcuMTg4djUuNjQ3ek00LjUgMTNhMS41IDEuNSAwIDEgMC0zIDAgMS41IDEuNSAwIDAgMCAzIDB6TTE1IDE1di00SDkuMjU4bC00LjAxNSA0SDE1ek0wIC41djEyLjQ5NVYuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyLjk5NVYxM2EzLjA3IDMuMDcgMCAwIDAgMC0uMDA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BhcGVyY2xpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgM2EyLjUgMi41IDAgMCAxIDUgMHY5YTEuNSAxLjUgMCAwIDEtMyAwVjVhLjUuNSAwIDAgMSAxIDB2N2EuNS41IDAgMCAwIDEgMFYzYTEuNSAxLjUgMCAxIDAtMyAwdjlhMi41IDIuNSAwIDAgMCA1IDBWNWEuNS41IDAgMCAxIDEgMHY3YTMuNSAzLjUgMCAxIDEtNyAwVjN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGFyYWdyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjUgMTVhLjUuNSAwIDAgMS0uNS0uNVYySDl2MTIuNWEuNS41IDAgMCAxLTEgMFY5SDdhNCA0IDAgMSAxIDAtOGg1LjVhLjUuNSAwIDAgMSAwIDFIMTF2MTIuNWEuNS41IDAgMCAxLS41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF0Y2hDaGVja0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDY3Ljg3YTIuODkgMi44OSAwIDAgMC00LjEzNCAwbC0uNjIyLjYzOC0uODktLjAxMWEyLjg5IDIuODkgMCAwIDAtMi45MjQgMi45MjRsLjAxLjg5LS42MzYuNjIyYTIuODkgMi44OSAwIDAgMCAwIDQuMTM0bC42MzcuNjIyLS4wMTEuODlhMi44OSAyLjg5IDAgMCAwIDIuOTI0IDIuOTI0bC44OS0uMDEuNjIyLjYzNmEyLjg5IDIuODkgMCAwIDAgNC4xMzQgMGwuNjIyLS42MzcuODkuMDExYTIuODkgMi44OSAwIDAgMCAyLjkyNC0yLjkyNGwtLjAxLS44OS42MzYtLjYyMmEyLjg5IDIuODkgMCAwIDAgMC00LjEzNGwtLjYzNy0uNjIyLjAxMS0uODlhMi44OSAyLjg5IDAgMCAwLTIuOTI0LTIuOTI0bC0uODkuMDEtLjYyMi0uNjM2em0uMjg3IDUuOTg0LTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3IDguNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF0Y2hDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuMzU0IDYuMTQ2YS41LjUgMCAwIDEgMCAuNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTEuNS0xLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMNyA4Ljc5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4yNzMgMi41MTMtLjkyMS0uOTQ0LjcxNS0uNjk4LjYyMi42MzcuODktLjAxMWEyLjg5IDIuODkgMCAwIDEgMi45MjQgMi45MjRsLS4wMS44OS42MzYuNjIyYTIuODkgMi44OSAwIDAgMSAwIDQuMTM0bC0uNjM3LjYyMi4wMTEuODlhMi44OSAyLjg5IDAgMCAxLTIuOTI0IDIuOTI0bC0uODktLjAxLS42MjIuNjM2YTIuODkgMi44OSAwIDAgMS00LjEzNCAwbC0uNjIyLS42MzctLjg5LjAxMWEyLjg5IDIuODkgMCAwIDEtMi45MjQtMi45MjRsLjAxLS44OS0uNjM2LS42MjJhMi44OSAyLjg5IDAgMCAxIDAtNC4xMzRsLjYzNy0uNjIyLS4wMTEtLjg5YTIuODkgMi44OSAwIDAgMSAyLjkyNC0yLjkyNGwuODkuMDEuNjIyLS42MzZhMi44OSAyLjg5IDAgMCAxIDQuMTM0IDBsLS43MTUuNjk4YTEuODkgMS44OSAwIDAgMC0yLjcwNCAwbC0uOTIuOTQ0LTEuMzItLjAxNmExLjg5IDEuODkgMCAwIDAtMS45MTEgMS45MTJsLjAxNiAxLjMxOC0uOTQ0LjkyMWExLjg5IDEuODkgMCAwIDAgMCAyLjcwNGwuOTQ0LjkyLS4wMTYgMS4zMmExLjg5IDEuODkgMCAwIDAgMS45MTIgMS45MTFsMS4zMTgtLjAxNi45MjEuOTQ0YTEuODkgMS44OSAwIDAgMCAyLjcwNCAwbC45Mi0uOTQ0IDEuMzIuMDE2YTEuODkgMS44OSAwIDAgMCAxLjkxMS0xLjkxMmwtLjAxNi0xLjMxOC45NDQtLjkyMWExLjg5IDEuODkgMCAwIDAgMC0yLjcwNGwtLjk0NC0uOTIuMDE2LTEuMzJhMS44OSAxLjg5IDAgMCAwLTEuOTEyLTEuOTExbC0xLjMxOC4wMTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF0Y2hFeGNsYW1hdGlvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDY3Ljg3YTIuODkgMi44OSAwIDAgMC00LjEzNCAwbC0uNjIyLjYzOC0uODktLjAxMWEyLjg5IDIuODkgMCAwIDAtMi45MjQgMi45MjRsLjAxLjg5LS42MzYuNjIyYTIuODkgMi44OSAwIDAgMCAwIDQuMTM0bC42MzcuNjIyLS4wMTEuODlhMi44OSAyLjg5IDAgMCAwIDIuOTI0IDIuOTI0bC44OS0uMDEuNjIyLjYzNmEyLjg5IDIuODkgMCAwIDAgNC4xMzQgMGwuNjIyLS42MzcuODkuMDExYTIuODkgMi44OSAwIDAgMCAyLjkyNC0yLjkyNGwtLjAxLS44OS42MzYtLjYyMmEyLjg5IDIuODkgMCAwIDAgMC00LjEzNGwtLjYzNy0uNjIyLjAxMS0uODlhMi44OSAyLjg5IDAgMCAwLTIuOTI0LTIuOTI0bC0uODkuMDEtLjYyMi0uNjM2ek04IDRjLjUzNSAwIC45NTQuNDYyLjkuOTk1bC0uMzUgMy41MDdhLjU1Mi41NTIgMCAwIDEtMS4xIDBMNy4xIDQuOTk1QS45MDUuOTA1IDAgMCAxIDggNHptLjAwMiA2YTEgMSAwIDEgMSAwIDIgMSAxIDAgMCAxIDAtMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXRjaEV4Y2xhbWF0aW9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMDAxIDExYTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHpNNy4xIDQuOTk1YS45MDUuOTA1IDAgMSAxIDEuOCAwbC0uMzUgMy41MDdhLjU1My41NTMgMCAwIDEtMS4xIDBMNy4xIDQuOTk1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjI3MyAyLjUxMy0uOTIxLS45NDQuNzE1LS42OTguNjIyLjYzNy44OS0uMDExYTIuODkgMi44OSAwIDAgMSAyLjkyNCAyLjkyNGwtLjAxLjg5LjYzNi42MjJhMi44OSAyLjg5IDAgMCAxIDAgNC4xMzRsLS42MzcuNjIyLjAxMS44OWEyLjg5IDIuODkgMCAwIDEtMi45MjQgMi45MjRsLS44OS0uMDEtLjYyMi42MzZhMi44OSAyLjg5IDAgMCAxLTQuMTM0IDBsLS42MjItLjYzNy0uODkuMDExYTIuODkgMi44OSAwIDAgMS0yLjkyNC0yLjkyNGwuMDEtLjg5LS42MzYtLjYyMmEyLjg5IDIuODkgMCAwIDEgMC00LjEzNGwuNjM3LS42MjItLjAxMS0uODlhMi44OSAyLjg5IDAgMCAxIDIuOTI0LTIuOTI0bC44OS4wMS42MjItLjYzNmEyLjg5IDIuODkgMCAwIDEgNC4xMzQgMGwtLjcxNS42OThhMS44OSAxLjg5IDAgMCAwLTIuNzA0IDBsLS45Mi45NDQtMS4zMi0uMDE2YTEuODkgMS44OSAwIDAgMC0xLjkxMSAxLjkxMmwuMDE2IDEuMzE4LS45NDQuOTIxYTEuODkgMS44OSAwIDAgMCAwIDIuNzA0bC45NDQuOTItLjAxNiAxLjMyYTEuODkgMS44OSAwIDAgMCAxLjkxMiAxLjkxMWwxLjMxOC0uMDE2LjkyMS45NDRhMS44OSAxLjg5IDAgMCAwIDIuNzA0IDBsLjkyLS45NDQgMS4zMi4wMTZhMS44OSAxLjg5IDAgMCAwIDEuOTExLTEuOTEybC0uMDE2LTEuMzE4Ljk0NC0uOTIxYTEuODkgMS44OSAwIDAgMCAwLTIuNzA0bC0uOTQ0LS45Mi4wMTYtMS4zMmExLjg5IDEuODkgMCAwIDAtMS45MTItMS45MTFsLTEuMzE4LjAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXRjaE1pbnVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC4wNjcuODdhMi44OSAyLjg5IDAgMCAwLTQuMTM0IDBsLS42MjIuNjM4LS44OS0uMDExYTIuODkgMi44OSAwIDAgMC0yLjkyNCAyLjkyNGwuMDEuODktLjYzNi42MjJhMi44OSAyLjg5IDAgMCAwIDAgNC4xMzRsLjYzNy42MjItLjAxMS44OWEyLjg5IDIuODkgMCAwIDAgMi45MjQgMi45MjRsLjg5LS4wMS42MjIuNjM2YTIuODkgMi44OSAwIDAgMCA0LjEzNCAwbC42MjItLjYzNy44OS4wMTFhMi44OSAyLjg5IDAgMCAwIDIuOTI0LTIuOTI0bC0uMDEtLjg5LjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMCAwLTQuMTM0bC0uNjM3LS42MjIuMDExLS44OWEyLjg5IDIuODkgMCAwIDAtMi45MjQtMi45MjRsLS44OS4wMS0uNjIyLS42MzZ6TTYgNy41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxIDAtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXRjaE1pbnVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk01LjUgOGEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAwIDFINmEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEwLjI3MyAyLjUxMy0uOTIxLS45NDQuNzE1LS42OTguNjIyLjYzNy44OS0uMDExYTIuODkgMi44OSAwIDAgMSAyLjkyNCAyLjkyNGwtLjAxLjg5LjYzNi42MjJhMi44OSAyLjg5IDAgMCAxIDAgNC4xMzRsLS42MzcuNjIyLjAxMS44OWEyLjg5IDIuODkgMCAwIDEtMi45MjQgMi45MjRsLS44OS0uMDEtLjYyMi42MzZhMi44OSAyLjg5IDAgMCAxLTQuMTM0IDBsLS42MjItLjYzNy0uODkuMDExYTIuODkgMi44OSAwIDAgMS0yLjkyNC0yLjkyNGwuMDEtLjg5LS42MzYtLjYyMmEyLjg5IDIuODkgMCAwIDEgMC00LjEzNGwuNjM3LS42MjItLjAxMS0uODlhMi44OSAyLjg5IDAgMCAxIDIuOTI0LTIuOTI0bC44OS4wMS42MjItLjYzNmEyLjg5IDIuODkgMCAwIDEgNC4xMzQgMGwtLjcxNS42OThhMS44OSAxLjg5IDAgMCAwLTIuNzA0IDBsLS45Mi45NDQtMS4zMi0uMDE2YTEuODkgMS44OSAwIDAgMC0xLjkxMSAxLjkxMmwuMDE2IDEuMzE4LS45NDQuOTIxYTEuODkgMS44OSAwIDAgMCAwIDIuNzA0bC45NDQuOTItLjAxNiAxLjMyYTEuODkgMS44OSAwIDAgMCAxLjkxMiAxLjkxMWwxLjMxOC0uMDE2LjkyMS45NDRhMS44OSAxLjg5IDAgMCAwIDIuNzA0IDBsLjkyLS45NDQgMS4zMi4wMTZhMS44OSAxLjg5IDAgMCAwIDEuOTExLTEuOTEybC0uMDE2LTEuMzE4Ljk0NC0uOTIxYTEuODkgMS44OSAwIDAgMCAwLTIuNzA0bC0uOTQ0LS45Mi4wMTYtMS4zMmExLjg5IDEuODkgMCAwIDAtMS45MTItMS45MTFsLTEuMzE4LjAxNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXRjaFBsdXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjA2Ny44N2EyLjg5IDIuODkgMCAwIDAtNC4xMzQgMGwtLjYyMi42MzgtLjg5LS4wMTFhMi44OSAyLjg5IDAgMCAwLTIuOTI0IDIuOTI0bC4wMS44OS0uNjM2LjYyMmEyLjg5IDIuODkgMCAwIDAgMCA0LjEzNGwuNjM3LjYyMi0uMDExLjg5YTIuODkgMi44OSAwIDAgMCAyLjkyNCAyLjkyNGwuODktLjAxLjYyMi42MzZhMi44OSAyLjg5IDAgMCAwIDQuMTM0IDBsLjYyMi0uNjM3Ljg5LjAxMWEyLjg5IDIuODkgMCAwIDAgMi45MjQtMi45MjRsLS4wMS0uODkuNjM2LS42MjJhMi44OSAyLjg5IDAgMCAwIDAtNC4xMzRsLS42MzctLjYyMi4wMTEtLjg5YTIuODkgMi44OSAwIDAgMC0yLjkyNC0yLjkyNGwtLjg5LjAxLS42MjItLjYzNnpNOC41IDZ2MS41SDEwYS41LjUgMCAwIDEgMCAxSDguNVYxMGEuNS41IDAgMCAxLTEgMFY4LjVINmEuNS41IDAgMCAxIDAtMWgxLjVWNmEuNS41IDAgMCAxIDEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXRjaFBsdXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggNS41YS41LjUgMCAwIDEgLjUuNXYxLjVIMTBhLjUuNSAwIDAgMSAwIDFIOC41VjEwYS41LjUgMCAwIDEtMSAwVjguNUg2YS41LjUgMCAwIDEgMC0xaDEuNVY2YS41LjUgMCAwIDEgLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTAuMjczIDIuNTEzLS45MjEtLjk0NC43MTUtLjY5OC42MjIuNjM3Ljg5LS4wMTFhMi44OSAyLjg5IDAgMCAxIDIuOTI0IDIuOTI0bC0uMDEuODkuNjM2LjYyMmEyLjg5IDIuODkgMCAwIDEgMCA0LjEzNGwtLjYzNy42MjIuMDExLjg5YTIuODkgMi44OSAwIDAgMS0yLjkyNCAyLjkyNGwtLjg5LS4wMS0uNjIyLjYzNmEyLjg5IDIuODkgMCAwIDEtNC4xMzQgMGwtLjYyMi0uNjM3LS44OS4wMTFhMi44OSAyLjg5IDAgMCAxLTIuOTI0LTIuOTI0bC4wMS0uODktLjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMSAwLTQuMTM0bC42MzctLjYyMi0uMDExLS44OWEyLjg5IDIuODkgMCAwIDEgMi45MjQtMi45MjRsLjg5LjAxLjYyMi0uNjM2YTIuODkgMi44OSAwIDAgMSA0LjEzNCAwbC0uNzE1LjY5OGExLjg5IDEuODkgMCAwIDAtMi43MDQgMGwtLjkyLjk0NC0xLjMyLS4wMTZhMS44OSAxLjg5IDAgMCAwLTEuOTExIDEuOTEybC4wMTYgMS4zMTgtLjk0NC45MjFhMS44OSAxLjg5IDAgMCAwIDAgMi43MDRsLjk0NC45Mi0uMDE2IDEuMzJhMS44OSAxLjg5IDAgMCAwIDEuOTEyIDEuOTExbDEuMzE4LS4wMTYuOTIxLjk0NGExLjg5IDEuODkgMCAwIDAgMi43MDQgMGwuOTItLjk0NCAxLjMyLjAxNmExLjg5IDEuODkgMCAwIDAgMS45MTEtMS45MTJsLS4wMTYtMS4zMTguOTQ0LS45MjFhMS44OSAxLjg5IDAgMCAwIDAtMi43MDRsLS45NDQtLjkyLjAxNi0xLjMyYTEuODkgMS44OSAwIDAgMC0xLjkxMi0xLjkxMWwtMS4zMTguMDE2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BhdGNoUXVlc3Rpb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOTMzLjg3YTIuODkgMi44OSAwIDAgMSA0LjEzNCAwbC42MjIuNjM4Ljg5LS4wMTFhMi44OSAyLjg5IDAgMCAxIDIuOTI0IDIuOTI0bC0uMDEuODkuNjM2LjYyMmEyLjg5IDIuODkgMCAwIDEgMCA0LjEzNGwtLjYzNy42MjIuMDExLjg5YTIuODkgMi44OSAwIDAgMS0yLjkyNCAyLjkyNGwtLjg5LS4wMS0uNjIyLjYzNmEyLjg5IDIuODkgMCAwIDEtNC4xMzQgMGwtLjYyMi0uNjM3LS44OS4wMTFhMi44OSAyLjg5IDAgMCAxLTIuOTI0LTIuOTI0bC4wMS0uODktLjYzNi0uNjIyYTIuODkgMi44OSAwIDAgMSAwLTQuMTM0bC42MzctLjYyMi0uMDExLS44OWEyLjg5IDIuODkgMCAwIDEgMi45MjQtMi45MjRsLjg5LjAxLjYyMi0uNjM2ek03LjAwMiAxMWExIDEgMCAxIDAgMiAwIDEgMSAwIDAgMC0yIDB6bTEuNjAyLTIuMDI3Yy4wNC0uNTM0LjE5OC0uODE1Ljg0Ni0xLjI2LjY3NC0uNDc1IDEuMDUtMS4wOSAxLjA1LTEuOTg2IDAtMS4zMjUtLjkyLTIuMjI3LTIuMjYyLTIuMjI3LTEuMDIgMC0xLjc5Mi40OTItMi4xIDEuMjlBMS43MSAxLjcxIDAgMCAwIDYgNS40OGMwIC4zOTMuMjAzLjY0LjU0NS42NC4yNzIgMCAuNDU1LS4xNDcuNTY0LS41MS4xNTgtLjU5Mi41MjUtLjkxNSAxLjA3NC0uOTE1LjYxIDAgMS4wMy40NDYgMS4wMyAxLjA4NCAwIC41NjMtLjIwOC44ODUtLjgyMiAxLjMyNS0uNjE5LjQzMy0uOTI2LjkxNC0uOTI2IDEuNjR2LjExMWMwIC40MjguMjA4Ljc0NS41ODUuNzQ1LjMzNiAwIC41MDQtLjI0LjU1NC0uNjI3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BhdGNoUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4wNSA5LjZjLjMzNiAwIC41MDQtLjI0LjU1NC0uNjI3LjA0LS41MzQuMTk4LS44MTUuODQ3LTEuMjYuNjczLS40NzUgMS4wNDktMS4wOSAxLjA0OS0xLjk4NiAwLTEuMzI1LS45Mi0yLjIyNy0yLjI2Mi0yLjIyNy0xLjAyIDAtMS43OTIuNDkyLTIuMSAxLjI5QTEuNzEgMS43MSAwIDAgMCA2IDUuNDhjMCAuMzkzLjIwMy42NC41NDUuNjQuMjcyIDAgLjQ1NS0uMTQ3LjU2NC0uNTEuMTU4LS41OTIuNTI1LS45MTUgMS4wNzQtLjkxNS42MSAwIDEuMDMuNDQ2IDEuMDMgMS4wODQgMCAuNTYzLS4yMDguODg1LS44MjIgMS4zMjUtLjYxOS40MzMtLjkyNi45MTQtLjkyNiAxLjY0di4xMTFjMCAuNDI4LjIwOC43NDUuNTg1Ljc0NXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMC4yNzMgMi41MTMtLjkyMS0uOTQ0LjcxNS0uNjk4LjYyMi42MzcuODktLjAxMWEyLjg5IDIuODkgMCAwIDEgMi45MjQgMi45MjRsLS4wMS44OS42MzYuNjIyYTIuODkgMi44OSAwIDAgMSAwIDQuMTM0bC0uNjM3LjYyMi4wMTEuODlhMi44OSAyLjg5IDAgMCAxLTIuOTI0IDIuOTI0bC0uODktLjAxLS42MjIuNjM2YTIuODkgMi44OSAwIDAgMS00LjEzNCAwbC0uNjIyLS42MzctLjg5LjAxMWEyLjg5IDIuODkgMCAwIDEtMi45MjQtMi45MjRsLjAxLS44OS0uNjM2LS42MjJhMi44OSAyLjg5IDAgMCAxIDAtNC4xMzRsLjYzNy0uNjIyLS4wMTEtLjg5YTIuODkgMi44OSAwIDAgMSAyLjkyNC0yLjkyNGwuODkuMDEuNjIyLS42MzZhMi44OSAyLjg5IDAgMCAxIDQuMTM0IDBsLS43MTUuNjk4YTEuODkgMS44OSAwIDAgMC0yLjcwNCAwbC0uOTIuOTQ0LTEuMzItLjAxNmExLjg5IDEuODkgMCAwIDAtMS45MTEgMS45MTJsLjAxNiAxLjMxOC0uOTQ0LjkyMWExLjg5IDEuODkgMCAwIDAgMCAyLjcwNGwuOTQ0LjkyLS4wMTYgMS4zMmExLjg5IDEuODkgMCAwIDAgMS45MTIgMS45MTFsMS4zMTgtLjAxNi45MjEuOTQ0YTEuODkgMS44OSAwIDAgMCAyLjcwNCAwbC45Mi0uOTQ0IDEuMzIuMDE2YTEuODkgMS44OSAwIDAgMCAxLjkxMS0xLjkxMmwtLjAxNi0xLjMxOC45NDQtLjkyMWExLjg5IDEuODkgMCAwIDAgMC0yLjcwNGwtLjk0NC0uOTIuMDE2LTEuMzJhMS44OSAxLjg5IDAgMCAwLTEuOTEyLTEuOTExbC0xLjMxOC4wMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMDEgMTFhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BhdXNlQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTYuMjUtN0M1LjU2IDUgNSA1LjU2IDUgNi4yNXYzLjVhMS4yNSAxLjI1IDAgMSAwIDIuNSAwdi0zLjVDNy41IDUuNTYgNi45NCA1IDYuMjUgNXptMy41IDBjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1djMuNWExLjI1IDEuMjUgMCAxIDAgMi41IDB2LTMuNUMxMSA1LjU2IDEwLjQ0IDUgOS43NSA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BhdXNlQnRuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjUgNUM1LjU2IDUgNSA1LjU2IDUgNi4yNXYzLjVhMS4yNSAxLjI1IDAgMSAwIDIuNSAwdi0zLjVDNy41IDUuNTYgNi45NCA1IDYuMjUgNXptMy41IDBjLS42OSAwLTEuMjUuNTYtMS4yNSAxLjI1djMuNWExLjI1IDEuMjUgMCAxIDAgMi41IDB2LTMuNUMxMSA1LjU2IDEwLjQ0IDUgOS43NSA1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY0em0xNSAwYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjhhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF1c2VDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi4yNSA1QzUuNTYgNSA1IDUuNTYgNSA2LjI1djMuNWExLjI1IDEuMjUgMCAxIDAgMi41IDB2LTMuNUM3LjUgNS41NiA2Ljk0IDUgNi4yNSA1em0zLjUgMGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjV2My41YTEuMjUgMS4yNSAwIDEgMCAyLjUgMHYtMy41QzExIDUuNTYgMTAuNDQgNSA5Ljc1IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF1c2VDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDYuMjVhMS4yNSAxLjI1IDAgMSAxIDIuNSAwdjMuNWExLjI1IDEuMjUgMCAxIDEtMi41IDB2LTMuNXptMy41IDBhMS4yNSAxLjI1IDAgMSAxIDIuNSAwdjMuNWExLjI1IDEuMjUgMCAxIDEtMi41IDB2LTMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQYXVzZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDMuNUExLjUgMS41IDAgMCAxIDcgNXY2YTEuNSAxLjUgMCAwIDEtMyAwVjVhMS41IDEuNSAwIDAgMSAxLjUtMS41em01IDBBMS41IDEuNSAwIDAgMSAxMiA1djZhMS41IDEuNSAwIDAgMS0zIDBWNWExLjUgMS41IDAgMCAxIDEuNS0xLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGF1c2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiAzLjVhLjUuNSAwIDAgMSAuNS41djhhLjUuNSAwIDAgMS0xIDBWNGEuNS41IDAgMCAxIC41LS41em00IDBhLjUuNSAwIDAgMSAuNS41djhhLjUuNSAwIDAgMS0xIDBWNGEuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BheXBhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTQuMDYgMy43MTNjLjEyLTEuMDcxLS4wOTMtMS44MzItLjcwMi0yLjUyNkMxMi42MjguMzU2IDExLjMxMiAwIDkuNjI2IDBINC43MzRhLjcuNyAwIDAgMC0uNjkxLjU5TDIuMDA1IDEzLjUwOWEuNDIuNDIgMCAwIDAgLjQxNS40ODZoMi43NTZsLS4yMDIgMS4yOGEuNjI4LjYyOCAwIDAgMCAuNjIuNzI2SDguMTRjLjQyOSAwIC43OTMtLjMxLjg2Mi0uNzMxbC4wMjUtLjEzLjQ4LTMuMDQzLjAzLS4xNjQuMDAxLS4wMDdhLjM1MS4zNTEgMCAwIDEgLjM0OC0uMjk3aC4zOGMxLjI2NiAwIDIuNDI1LS4yNTYgMy4zNDUtLjkxLjM3OS0uMjcuNzEyLS42MDMuOTkzLTEuMDA1YTQuOTQyIDQuOTQyIDAgMCAwIC44OC0yLjE5NWMuMjQyLTEuMjQ2LjEzLTIuMzU2LS41Ny0zLjE1NGEyLjY4NyAyLjY4NyAwIDAgMC0uNzYtLjU5bC0uMDk0LS4wNjF6TTYuNTQzIDguODJsLS44NDUgNS4yMTN2LjAwMWwtLjIwOCAxLjMyYy0uMDEuMDY2LjA0LjEyMy4xMDUuMTIzSDguMTRjLjE3MyAwIC4zMi0uMTI1LjM0OC0uMjk2di0uMDA1bC4wMjYtLjEyOS40OC0zLjA0My4wMy0uMTY0YS44NzMuODczIDAgMCAxIC44NjItLjczNGguMzhjMS4yMDEgMCAyLjI0LS4yNDQgMy4wNDMtLjgxNS43OTctLjU2NyAxLjM5LTEuNDc3IDEuNjYzLTIuODc0LjIyOS0xLjE3NS4wOTYtMi4wODctLjQ1LTIuNzFhMi4xMjYgMi4xMjYgMCAwIDAtLjU0OC0uNDM4bC0uMDAzLjAxNmMtLjY0NSAzLjMxMi0yLjg1MyA0LjQ1Ni01LjY3MiA0LjQ1Nkg2Ljg2NGEuNjk1LjY5NSAwIDAgMC0uMzIxLjA3OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZWFjZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMTMuMjkyQTggOCAwIDAgMCA4LjUuMDE1djcuNzc4bDUuNSA1LjV6bS0uNzA4LjcwOEw4LjUgOS4yMDZ2Ni43NzhhNy45NjcgNy45NjcgMCAwIDAgNC43OTItMS45ODZ6TTcuNSAxNS45ODVWOS4yMDdMMi43MDggMTRBNy45NjcgNy45NjcgMCAwIDAgNy41IDE1Ljk4NXpNMiAxMy4yOTJBOCA4IDAgMCAxIDcuNS4wMTV2Ny43NzhsLTUuNSA1LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVhY2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEuMDE4YTcgNyAwIDAgMC00Ljc5IDExLjU2Nkw3LjUgNy43OTNWMS4wMTh6bTEgMHY2Ljc3NWw0Ljc5IDQuNzlBNyA3IDAgMCAwIDguNSAxLjAxOHptNC4wODQgMTIuMjczTDguNSA5LjIwN3Y1Ljc3NWE2Ljk3IDYuOTcgMCAwIDAgNC4wODQtMS42OTF6TTcuNSAxNC45ODJWOS4yMDdsLTQuMDg0IDQuMDg0QTYuOTcgNi45NyAwIDAgMCA3LjUgMTQuOTgyek0wIDhhOCA4IDAgMSAxIDE2IDBBOCA4IDAgMCAxIDAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTEzLjQ5OC43OTUuMTQ5LS4xNDlhMS4yMDcgMS4yMDcgMCAxIDEgMS43MDcgMS43MDhsLS4xNDkuMTQ4YTEuNSAxLjUgMCAwIDEtLjA1OSAyLjA1OUw0Ljg1NCAxNC44NTRhLjUuNSAwIDAgMS0uMjMzLjEzMWwtNCAxYS41LjUgMCAwIDEtLjYwNi0uNjA2bDEtNGEuNS41IDAgMCAxIC4xMzEtLjIzMmw5LjY0Mi05LjY0MmEuNS41IDAgMCAwLS42NDIuMDU2TDYuODU0IDQuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4TDkuNDQuODU0QTEuNSAxLjUgMCAwIDEgMTEuNS43OTZhMS41IDEuNSAwIDAgMSAxLjk5OC0uMDAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xMy40OTguNzk1LjE0OS0uMTQ5YTEuMjA3IDEuMjA3IDAgMSAxIDEuNzA3IDEuNzA4bC0uMTQ5LjE0OGExLjUgMS41IDAgMCAxLS4wNTkgMi4wNTlMNC44NTQgMTQuODU0YS41LjUgMCAwIDEtLjIzMy4xMzFsLTQgMWEuNS41IDAgMCAxLS42MDYtLjYwNmwxLTRhLjUuNSAwIDAgMSAuMTMxLS4yMzJsOS42NDItOS42NDJhLjUuNSAwIDAgMC0uNjQyLjA1Nkw2Ljg1NCA0Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw5LjQ0Ljg1NEExLjUgMS41IDAgMCAxIDExLjUuNzk2YTEuNSAxLjUgMCAwIDEgMS45OTgtLjAwMXptLS42NDQuNzY2YS41LjUgMCAwIDAtLjcwNyAwTDEuOTUgMTEuNzU2bC0uNzY0IDMuMDU3IDMuMDU3LS43NjRMMTQuNDQgMy44NTRhLjUuNSAwIDAgMCAwLS43MDhsLTEuNTg1LTEuNTg1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlbmNpbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuODU0LjE0NmEuNS41IDAgMCAwLS43MDcgMEwxMC41IDEuNzkzIDE0LjIwNyA1LjVsMS42NDctMS42NDZhLjUuNSAwIDAgMCAwLS43MDhsLTMtM3ptLjY0NiA2LjA2MUw5Ljc5MyAyLjUgMy4yOTMgOUgzLjVhLjUuNSAwIDAgMSAuNS41di41aC41YS41LjUgMCAwIDEgLjUuNXYuNWguNWEuNS41IDAgMCAxIC41LjV2LjVoLjVhLjUuNSAwIDAgMSAuNS41di4yMDdsNi41LTYuNXptLTcuNDY4IDcuNDY4QS41LjUgMCAwIDEgNiAxMy41VjEzaC0uNWEuNS41IDAgMCAxLS41LS41VjEyaC0uNWEuNS41IDAgMCAxLS41LS41VjExaC0uNWEuNS41IDAgMCAxLS41LS41VjEwaC0uNWEuNDk5LjQ5OSAwIDAgMS0uMTc1LS4wMzJsLS4xNzkuMTc4YS41LjUgMCAwIDAtLjExLjE2OGwtMiA1YS41LjUgMCAwIDAgLjY1LjY1bDUtMmEuNS41IDAgMCAwIC4xNjgtLjExbC4xNzgtLjE3OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW5jaWxTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuNTAyIDEuOTRhLjUuNSAwIDAgMSAwIC43MDZMMTQuNDU5IDMuNjlsLTItMkwxMy41MDIuNjQ2YS41LjUgMCAwIDEgLjcwNyAwbDEuMjkzIDEuMjkzem0tMS43NSAyLjQ1Ni0yLTJMNC45MzkgOS4yMWEuNS41IDAgMCAwLS4xMjEuMTk2bC0uODA1IDIuNDE0YS4yNS4yNSAwIDAgMCAuMzE2LjMxNmwyLjQxNC0uODA1YS41LjUgMCAwIDAgLjE5Ni0uMTJsNi44MTMtNi44MTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEgMTMuNUExLjUgMS41IDAgMCAwIDIuNSAxNWgxMWExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTZhLjUuNSAwIDAgMC0xIDB2NmEuNS41IDAgMCAxLS41LjVoLTExYS41LjUgMCAwIDEtLjUtLjV2LTExYS41LjUgMCAwIDEgLjUtLjVIOWEuNS41IDAgMCAwIDAtMUgyLjVBMS41IDEuNSAwIDAgMCAxIDIuNXYxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW5jaWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuMTQ2LjE0NmEuNS41IDAgMCAxIC43MDggMGwzIDNhLjUuNSAwIDAgMSAwIC43MDhsLTEwIDEwYS41LjUgMCAwIDEtLjE2OC4xMWwtNSAyYS41LjUgMCAwIDEtLjY1LS42NWwyLTVhLjUuNSAwIDAgMSAuMTEtLjE2OGwxMC0xMHpNMTEuMjA3IDIuNSAxMy41IDQuNzkzIDE0Ljc5MyAzLjUgMTIuNSAxLjIwNyAxMS4yMDcgMi41em0xLjU4NiAzTDEwLjUgMy4yMDcgNCA5LjcwN1YxMGguNWEuNS41IDAgMCAxIC41LjV2LjVoLjVhLjUuNSAwIDAgMSAuNS41di41aC4yOTNsNi41LTYuNXptLTkuNzYxIDUuMTc1LS4xMDYuMTA2LTEuNTI4IDMuODIxIDMuODIxLTEuNTI4LjEwNi0uMTA2QS41LjUgMCAwIDEgNSAxMi41VjEyaC0uNWEuNS41IDAgMCAxLS41LS41VjExaC0uNWEuNS41IDAgMCAxLS40NjgtLjMyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW50YWdvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtOCAwIDggNi41LTMgOS41SDNMMCA2LjUgOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlbnRhZ29uSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDEuMjg4IDYuODQyIDUuNTZMMTIuMjY3IDE1SDhWMS4yODh6TTE2IDYuNSA4IDAgMCA2LjUgMyAxNmgxMGwzLTkuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW50YWdvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm04IDEuMjg4IDYuODQyIDUuNTZMMTIuMjY3IDE1SDMuNzMzTDEuMTU4IDYuODQ3IDggMS4yODh6TTE2IDYuNSA4IDAgMCA2LjUgMyAxNmgxMGwzLTkuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZW9wbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTRzLTEgMC0xLTEgMS00IDUtNCA1IDMgNSA0LTEgMS0xIDFIN3ptNC02YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNS4yMTYgMTRBMi4yMzggMi4yMzggMCAwIDEgNSAxM2MwLTEuMzU1LjY4LTIuNzUgMS45MzYtMy43MkE2LjMyNSA2LjMyNSAwIDAgMCA1IDljLTQgMC01IDMtNSA0czEgMSAxIDFoNC4yMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDhhMi41IDIuNSAwIDEgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVvcGxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1IDE0czEgMCAxLTEtMS00LTUtNC01IDMtNSA0IDEgMSAxIDFoOHptLTcuOTc4LTFBLjI2MS4yNjEgMCAwIDEgNyAxMi45OTZjLjAwMS0uMjY0LjE2Ny0xLjAzLjc2LTEuNzJDOC4zMTIgMTAuNjI5IDkuMjgyIDEwIDExIDEwYzEuNzE3IDAgMi42ODcuNjMgMy4yNCAxLjI3Ni41OTMuNjkuNzU4IDEuNDU3Ljc2IDEuNzJsLS4wMDguMDAyYS4yNzQuMjc0IDAgMCAxLS4wMTQuMDAySDcuMDIyek0xMSA3YTIgMiAwIDEgMCAwLTQgMiAyIDAgMCAwIDAgNHptMy0yYTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMHpNNi45MzYgOS4yOGE1Ljg4IDUuODggMCAwIDAtMS4yMy0uMjQ3QTcuMzUgNy4zNSAwIDAgMCA1IDljLTQgMC01IDMtNSA0IDAgLjY2Ny4zMzMgMSAxIDFoNC4yMTZBMi4yMzggMi4yMzggMCAwIDEgNSAxM2MwLTEuMDEuMzc3LTIuMDQyIDEuMDktMi45MDQuMjQzLS4yOTQuNTI2LS41NjkuODQ2LS44MTZ6TTQuOTIgMTBBNS40OTMgNS40OTMgMCAwIDAgNCAxM0gxYzAtLjI2LjE2NC0xLjAzLjc2LTEuNzI0LjU0NS0uNjM2IDEuNDkyLTEuMjU2IDMuMTYtMS4yNzV6TTEuNSA1LjVhMyAzIDAgMSAxIDYgMCAzIDMgMCAwIDEtNiAwem0zLTJhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlcmNlbnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNDQyIDIuNTU4YS42MjUuNjI1IDAgMCAxIDAgLjg4NGwtMTAgMTBhLjYyNS42MjUgMCAxIDEtLjg4NC0uODg0bDEwLTEwYS42MjUuNjI1IDAgMCAxIC44ODQgMHpNNC41IDZhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTAgMWEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptNyA2YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzem0wIDFhMi41IDIuNSAwIDEgMCAwLTUgMi41IDIuNSAwIDAgMCAwIDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uQmFkZ2VGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlYyem00LjUgMGEuNS41IDAgMCAwIDAgMWgzYS41LjUgMCAwIDAgMC0xaC0zek04IDExYTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptNSAyLjc1NUMxMi4xNDYgMTIuODI1IDEwLjYyMyAxMiA4IDEycy00LjE0Ni44MjYtNSAxLjc1NVYxNGExIDEgMCAwIDAgMSAxaDhhMSAxIDAgMCAwIDEtMXYtLjI0NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZXJzb25CYWRnZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjUgMmEuNS41IDAgMCAwIDAgMWgzYS41LjUgMCAwIDAgMC0xaC0zek0xMSA4YTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgMEEyLjUgMi41IDAgMCAwIDIgMi41VjE0YTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjIuNUEyLjUgMi41IDAgMCAwIDExLjUgMGgtN3pNMyAyLjVBMS41IDEuNSAwIDAgMSA0LjUgMWg3QTEuNSAxLjUgMCAwIDEgMTMgMi41djEwLjc5NWE0LjIgNC4yIDAgMCAwLS43NzYtLjQ5MkMxMS4zOTIgMTIuMzg3IDEwLjA2MyAxMiA4IDEycy0zLjM5Mi4zODctNC4yMjQuODAzYTQuMiA0LjIgMCAwIDAtLjc3Ni40OTJWMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlcnNvbkJvdW5kaW5nQm94IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAxYS41LjUgMCAwIDAtLjUuNXYzYS41LjUgMCAwIDEtMSAwdi0zQTEuNSAxLjUgMCAwIDEgMS41IDBoM2EuNS41IDAgMCAxIDAgMWgtM3pNMTEgLjVhLjUuNSAwIDAgMSAuNS0uNWgzQTEuNSAxLjUgMCAwIDEgMTYgMS41djNhLjUuNSAwIDAgMS0xIDB2LTNhLjUuNSAwIDAgMC0uNS0uNWgtM2EuNS41IDAgMCAxLS41LS41ek0uNSAxMWEuNS41IDAgMCAxIC41LjV2M2EuNS41IDAgMCAwIC41LjVoM2EuNS41IDAgMCAxIDAgMWgtM0ExLjUgMS41IDAgMCAxIDAgMTQuNXYtM2EuNS41IDAgMCAxIC41LS41em0xNSAwYS41LjUgMCAwIDEgLjUuNXYzYTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtM2EuNS41IDAgMCAxIDAtMWgzYS41LjUgMCAwIDAgLjUtLjV2LTNhLjUuNSAwIDAgMSAuNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDN6bTgtOWEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uQ2hlY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xNS44NTQgNS4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMCAxIC43MDgtLjcwOEwxMi41IDcuNzkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMTRzLTEgMC0xLTEgMS00IDYtNCA2IDMgNiA0LTEgMS0xIDFIMXptNS02YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZXJzb25DaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2em0yLTNhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwem00IDhjMCAxLTEgMS0xIDFIMXMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDR6bS0xLS4wMDRjLS4wMDEtLjI0Ni0uMTU0LS45ODYtLjgzMi0xLjY2NEM5LjUxNiAxMC42OCA4LjI4OSAxMCA2IDEwYy0yLjI5IDAtMy41MTYuNjgtNC4xNjggMS4zMzItLjY3OC42NzgtLjgzIDEuNDE4LS44MzIgMS42NjRoMTB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE1Ljg1NCA1LjE0NmEuNS41IDAgMCAxIDAgLjcwOGwtMyAzYS41LjUgMCAwIDEtLjcwOCAwbC0xLjUtMS41YS41LjUgMCAwIDEgLjcwOC0uNzA4TDEyLjUgNy43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDZhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0wIDhhOCA4IDAgMSAxIDE2IDBBOCA4IDAgMCAxIDAgOHptOC03YTcgNyAwIDAgMC01LjQ2OCAxMS4zN0MzLjI0MiAxMS4yMjYgNC44MDUgMTAgOCAxMHM0Ljc1NyAxLjIyNSA1LjQ2OCAyLjM3QTcgNyAwIDAgMCA4IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uRGFzaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExIDcuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMS0uNS0uNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDF6bTUtNmEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uRGFzaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2em0yLTNhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwem00IDhjMCAxLTEgMS0xIDFIMXMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDR6bS0xLS4wMDRjLS4wMDEtLjI0Ni0uMTU0LS45ODYtLjgzMi0xLjY2NEM5LjUxNiAxMC42OCA4LjI4OSAxMCA2IDEwYy0yLjI5IDAtMy41MTYuNjgtNC4xNjggMS4zMzItLjY3OC42NzgtLjgzIDEuNDE4LS44MzIgMS42NjRoMTB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExIDcuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZXJzb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMTRzLTEgMC0xLTEgMS00IDYtNCA2IDMgNiA0LTEgMS0xIDFIM3ptNS02YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZXJzb25MaW5lc0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptLTUgNnMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDQtMSAxLTEgMUgxek0xMSAzLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxaC00YS41LjUgMCAwIDEtLjUtLjV6bS41IDIuNWEuNS41IDAgMCAwIDAgMWg0YS41LjUgMCAwIDAgMC0xaC00em0yIDNhLjUuNSAwIDAgMCAwIDFoMmEuNS41IDAgMCAwIDAtMWgtMnptMCAzYS41LjUgMCAwIDAgMCAxaDJhLjUuNSAwIDAgMCAwLTFoLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uUGx1c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAxNHMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDQtMSAxLTEgMUgxem01LTZhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMy41IDVhLjUuNSAwIDAgMSAuNS41VjdoMS41YS41LjUgMCAwIDEgMCAxSDE0djEuNWEuNS41IDAgMCAxLTEgMFY4aC0xLjVhLjUuNSAwIDAgMSAwLTFIMTNWNS41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDhhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2em0yLTNhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwem00IDhjMCAxLTEgMS0xIDFIMXMtMSAwLTEtMSAxLTQgNi00IDYgMyA2IDR6bS0xLS4wMDRjLS4wMDEtLjI0Ni0uMTU0LS45ODYtLjgzMi0xLjY2NEM5LjUxNiAxMC42OCA4LjI4OSAxMCA2IDEwYy0yLjI5IDAtMy41MTYuNjgtNC4xNjggMS4zMzItLjY3OC42NzgtLjgzIDEuNDE4LS44MzIgMS42NjRoMTB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEzLjUgNWEuNS41IDAgMCAxIC41LjVWN2gxLjVhLjUuNSAwIDAgMSAwIDFIMTR2MS41YS41LjUgMCAwIDEtMSAwVjhoLTEuNWEuNS41IDAgMCAxIDAtMUgxM1Y1LjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQZXJzb25TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNmEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0xMiAxYTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMXYtMWMwLTEtMS00LTYtNHMtNiAzLTYgNHYxYTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlcnNvblhGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDF6bTUtNmEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6bTYuMTQ2LTIuODU0YS41LjUgMCAwIDEgLjcwOCAwTDE0IDYuMjkzbDEuMTQ2LTEuMTQ3YS41LjUgMCAwIDEgLjcwOC43MDhMMTQuNzA3IDdsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwxNCA3LjcwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTMuMjkzIDdsLTEuMTQ3LTEuMTQ2YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BlcnNvblggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA4YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptMi0zYTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHptNCA4YzAgMS0xIDEtMSAxSDFzLTEgMC0xLTEgMS00IDYtNCA2IDMgNiA0em0tMS0uMDA0Yy0uMDAxLS4yNDYtLjE1NC0uOTg2LS44MzItMS42NjRDOS41MTYgMTAuNjggOC4yODkgMTAgNiAxMGMtMi4yOSAwLTMuNTE2LjY4LTQuMTY4IDEuMzMyLS42NzguNjc4LS44MyAxLjQxOC0uODMyIDEuNjY0aDEwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMi4xNDYgNS4xNDZhLjUuNSAwIDAgMSAuNzA4IDBMMTQgNi4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDAgMSAuNzA4LjcwOEwxNC43MDcgN2wxLjE0NyAxLjE0NmEuNS41IDAgMCAxLS43MDguNzA4TDE0IDcuNzA3bC0xLjE0NiAxLjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEwxMy4yOTMgN2wtMS4xNDctMS4xNDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGVyc29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggOGEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6bTItM2EyIDIgMCAxIDEtNCAwIDIgMiAwIDAgMSA0IDB6bTQgOGMwIDEtMSAxLTEgMUgzcy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNHptLTEtLjAwNGMtLjAwMS0uMjQ2LS4xNTQtLjk4Ni0uODMyLTEuNjY0QzExLjUxNiAxMC42OCAxMC4yODkgMTAgOCAxMGMtMi4yOSAwLTMuNTE2LjY4LTQuMTY4IDEuMzMyLS42NzguNjc4LS44MyAxLjQxOC0uODMyIDEuNjY0aDEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1Bob25lRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDJhMiAyIDAgMCAxIDItMmg2YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWMnptNiAxMWExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGhvbmVMYW5kc2NhcGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMTIuNWEyIDIgMCAwIDEtMi0ydi02YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY2YTIgMiAwIDAgMS0yIDJIMnptMTEtNmExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGhvbmVMYW5kc2NhcGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSA0LjVhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxdjZhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTF2LTZ6bS0xIDZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0ydi02YTIgMiAwIDAgMC0yLTJIMmEyIDIgMCAwIDAtMiAydjZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNy41YTEgMSAwIDEgMC0yIDAgMSAxIDAgMCAwIDIgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQaG9uZVZpYnJhdGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0yVjR6bTUgN2ExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6TTEuODA3IDQuNzM0YS41LjUgMCAxIDAtLjg4NC0uNDY4QTcuOTY3IDcuOTY3IDAgMCAwIDAgOGMwIDEuMzQ3LjMzNCAyLjYxOC45MjMgMy43MzRhLjUuNSAwIDEgMCAuODg0LS40NjhBNi45NjcgNi45NjcgMCAwIDEgMSA4YzAtMS4xOC4yOTItMi4yOTIuODA3LTMuMjY2em0xMy4yNy0uNDY4YS41LjUgMCAwIDAtLjg4NC40NjhDMTQuNzA4IDUuNzA4IDE1IDYuODE5IDE1IDhjMCAxLjE4LS4yOTIgMi4yOTItLjgwNyAzLjI2NmEuNS41IDAgMCAwIC44ODQuNDY4QTcuOTY3IDcuOTY3IDAgMCAwIDE2IDhhNy45NjcgNy45NjcgMCAwIDAtLjkyMy0zLjczNHpNMy4zNCA2LjE4MmEuNS41IDAgMSAwLS45My0uMzY0QTUuOTg2IDUuOTg2IDAgMCAwIDIgOGMwIC43NjkuMTQ1IDEuNTA1LjQxIDIuMTgyYS41LjUgMCAxIDAgLjkzLS4zNjRBNC45ODYgNC45ODYgMCAwIDEgMyA4YzAtLjY0Mi4xMi0xLjI1NS4zNC0xLjgxOHptMTAuMjUtLjM2NGEuNS41IDAgMCAwLS45My4zNjRjLjIyLjU2My4zNCAxLjE3Ni4zNCAxLjgxOCAwIC42NDItLjEyIDEuMjU1LS4zNCAxLjgxOGEuNS41IDAgMCAwIC45My4zNjRDMTMuODU2IDkuNTA1IDE0IDguNzY5IDE0IDhjMC0uNzY5LS4xNDUtMS41MDUtLjQxLTIuMTgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1Bob25lVmlicmF0ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCAzYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDZhMSAxIDAgMCAxLTEtMVY0YTEgMSAwIDAgMSAxLTFoNHpNNiAyYTIgMiAwIDAgMC0yIDJ2OGEyIDIgMCAwIDAgMiAyaDRhMiAyIDAgMCAwIDItMlY0YTIgMiAwIDAgMC0yLTJINnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyYTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpNMS41OTkgNC4wNThhLjUuNSAwIDAgMSAuMjA4LjY3NkE2Ljk2NyA2Ljk2NyAwIDAgMCAxIDhjMCAxLjE4LjI5MiAyLjI5Mi44MDcgMy4yNjZhLjUuNSAwIDAgMS0uODg0LjQ2OEE3Ljk2OCA3Ljk2OCAwIDAgMSAwIDhjMC0xLjM0Ny4zMzQtMi42MTkuOTIzLTMuNzM0YS41LjUgMCAwIDEgLjY3Ni0uMjA4em0xMi44MDIgMGEuNS41IDAgMCAxIC42NzYuMjA4QTcuOTY3IDcuOTY3IDAgMCAxIDE2IDhhNy45NjcgNy45NjcgMCAwIDEtLjkyMyAzLjczNC41LjUgMCAwIDEtLjg4NC0uNDY4QTYuOTY3IDYuOTY3IDAgMCAwIDE1IDhjMC0xLjE4LS4yOTItMi4yOTItLjgwNy0zLjI2NmEuNS41IDAgMCAxIC4yMDgtLjY3NnpNMy4wNTcgNS41MzRhLjUuNSAwIDAgMSAuMjg0LjY0OEE0Ljk4NiA0Ljk4NiAwIDAgMCAzIDhjMCAuNjQyLjEyIDEuMjU1LjM0IDEuODE4YS41LjUgMCAxIDEtLjkzLjM2NEE1Ljk4NiA1Ljk4NiAwIDAgMSAyIDhjMC0uNzY5LjE0NS0xLjUwNS40MS0yLjE4MmEuNS41IDAgMCAxIC42NDctLjI4NHptOS44ODYgMGEuNS41IDAgMCAxIC42NDguMjg0QzEzLjg1NSA2LjQ5NSAxNCA3LjIzMSAxNCA4YzAgLjc2OS0uMTQ1IDEuNTA1LS40MSAyLjE4MmEuNS41IDAgMCAxLS45My0uMzY0QzEyLjg4IDkuMjU1IDEzIDguNjQyIDEzIDhjMC0uNjQyLS4xMi0xLjI1NS0uMzQtMS44MThhLjUuNSAwIDAgMSAuMjgzLS42NDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGhvbmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINWExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg2ek01IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDZhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQaWVDaGFydEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOTg1IDguNUg4LjIwN2wtNS41IDUuNWE4IDggMCAwIDAgMTMuMjc3LTUuNXpNMiAxMy4yOTJBOCA4IDAgMCAxIDcuNS4wMTV2Ny43NzhsLTUuNSA1LjV6TTguNS4wMTVWNy41aDcuNDg1QTguMDAxIDguMDAxIDAgMCAwIDguNS4wMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGllQ2hhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy41IDEuMDE4YTcgNyAwIDAgMC00Ljc5IDExLjU2Nkw3LjUgNy43OTNWMS4wMTh6bTEgMFY3LjVoNi40ODJBNy4wMDEgNy4wMDEgMCAwIDAgOC41IDEuMDE4ek0xNC45ODIgOC41SDguMjA3bC00Ljc5IDQuNzlBNyA3IDAgMCAwIDE0Ljk4MiA4LjV6TTAgOGE4IDggMCAxIDEgMTYgMEE4IDggMCAwIDEgMCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BpZ2d5QmFua0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTcuOTY0IDEuNTI3Yy0yLjk3NyAwLTUuNTcxIDEuNzA0LTYuMzIgNC4xMjVoLS41NUExIDEgMCAwIDAgLjExIDYuODI0bC4yNTQgMS40NmExLjUgMS41IDAgMCAwIDEuNDc4IDEuMjQzaC4yNjNjLjMuNTEzLjY4OC45NzggMS4xNDUgMS4zODJsLS43MjkgMi40NzdhLjUuNSAwIDAgMCAuNDguNjQxaDJhLjUuNSAwIDAgMCAuNDcxLS4zMzJsLjQ4Mi0xLjM1MWMuNjM1LjE3MyAxLjMxLjI2NyAyLjAxMS4yNjcuNzA3IDAgMS4zODgtLjA5NSAyLjAyOC0uMjcybC41NDMgMS4zNzJhLjUuNSAwIDAgMCAuNDY1LjMxNmgyYS41LjUgMCAwIDAgLjQ3OC0uNjQ1bC0uNzYxLTIuNTA2QzEzLjgxIDkuODk1IDE0LjUgOC41NTkgMTQuNSA3LjA2OWMwLS4xNDUtLjAwNy0uMjktLjAyLS40MzEuMjYxLS4xMS41MDgtLjI2Ni43MDUtLjQ0NC4zMTUuMzA2LjgxNS4zMDYuODE1LS40MTcgMCAuMjIzLS41LjIyMy0uNDYxLS4wMjZhLjk1Ljk1IDAgMCAwIC4wOS0uMjU1LjcuNyAwIDAgMC0uMjAyLS42NDUuNTguNTggMCAwIDAtLjcwNy0uMDk4LjczNS43MzUgMCAwIDAtLjM3NS41NjJjLS4wMjQuMjQzLjA4Mi40OC4zMi42NTRhMi4xMTIgMi4xMTIgMCAwIDEtLjI1OS4xNTNjLS41MzQtMi42NjQtMy4yODQtNC41OTUtNi40NDItNC41OTV6bTcuMTczIDMuODc2YS41NjUuNTY1IDAgMCAxLS4wOTguMjEuNzA0LjcwNCAwIDAgMS0uMDQ0LS4wMjVjLS4xNDYtLjA5LS4xNTctLjE3NS0uMTUyLS4yMjNhLjIzNi4yMzYgMCAwIDEgLjExNy0uMTczYy4wNDktLjAyNy4wOC0uMDIxLjExMy4wMTJhLjIwMi4yMDIgMCAwIDEgLjA2NC4xOTl6bS04Ljk5OS0uNjVBNi42MTMgNi42MTMgMCAwIDEgNy45NjQgNC41Yy42NjYgMCAxLjMwMy4wOTcgMS44OTMuMjczYS41LjUgMCAxIDAgLjI4Ni0uOTU4QTcuNjAxIDcuNjAxIDAgMCAwIDcuOTY0IDMuNWMtLjczNCAwLTEuNDQxLjEwMy0yLjEwMi4yOTJhLjUuNSAwIDEgMCAuMjc2Ljk2MnpNNSA2LjI1YS43NS43NSAwIDEgMS0xLjUgMCAuNzUuNzUgMCAwIDEgMS41IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGlnZ3lCYW5rIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNi4yNWEuNzUuNzUgMCAxIDEtMS41IDAgLjc1Ljc1IDAgMCAxIDEuNSAwem0xLjEzOC0xLjQ5NkE2LjYxMyA2LjYxMyAwIDAgMSA3Ljk2NCA0LjVjLjY2NiAwIDEuMzAzLjA5NyAxLjg5My4yNzNhLjUuNSAwIDAgMCAuMjg2LS45NThBNy42MDIgNy42MDIgMCAwIDAgNy45NjQgMy41Yy0uNzM0IDAtMS40NDEuMTAzLTIuMTAyLjI5MmEuNS41IDAgMSAwIC4yNzYuOTYyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk03Ljk2NCAxLjUyN2MtMi45NzcgMC01LjU3MSAxLjcwNC02LjMyIDQuMTI1aC0uNTVBMSAxIDAgMCAwIC4xMSA2LjgyNGwuMjU0IDEuNDZhMS41IDEuNSAwIDAgMCAxLjQ3OCAxLjI0M2guMjYzYy4zLjUxMy42ODguOTc4IDEuMTQ1IDEuMzgybC0uNzI5IDIuNDc3YS41LjUgMCAwIDAgLjQ4LjY0MWgyYS41LjUgMCAwIDAgLjQ3MS0uMzMybC40ODItMS4zNTFjLjYzNS4xNzMgMS4zMS4yNjcgMi4wMTEuMjY3LjcwNyAwIDEuMzg4LS4wOTUgMi4wMjgtLjI3MmwuNTQzIDEuMzcyYS41LjUgMCAwIDAgLjQ2NS4zMTZoMmEuNS41IDAgMCAwIC40NzgtLjY0NWwtLjc2MS0yLjUwNkMxMy44MSA5Ljg5NSAxNC41IDguNTU5IDE0LjUgNy4wNjljMC0uMTQ1LS4wMDctLjI5LS4wMi0uNDMxLjI2MS0uMTEuNTA4LS4yNjYuNzA1LS40NDQuMzE1LjMwNi44MTUuMzA2LjgxNS0uNDE3IDAgLjIyMy0uNS4yMjMtLjQ2MS0uMDI2YS45NS45NSAwIDAgMCAuMDktLjI1NS43LjcgMCAwIDAtLjIwMi0uNjQ1LjU4LjU4IDAgMCAwLS43MDctLjA5OC43MzUuNzM1IDAgMCAwLS4zNzUuNTYyYy0uMDI0LjI0My4wODIuNDguMzIuNjU0YTIuMTEyIDIuMTEyIDAgMCAxLS4yNTkuMTUzYy0uNTM0LTIuNjY0LTMuMjg0LTQuNTk1LTYuNDQyLTQuNTk1ek0yLjUxNiA2LjI2Yy40NTUtMi4wNjYgMi42NjctMy43MzMgNS40NDgtMy43MzMgMy4xNDYgMCA1LjUzNiAyLjExNCA1LjUzNiA0LjU0MiAwIDEuMjU0LS42MjQgMi40MS0xLjY3IDMuMjQ4YS41LjUgMCAwIDAtLjE2NS41MzVsLjY2IDIuMTc1aC0uOTg1bC0uNTktMS40ODdhLjUuNSAwIDAgMC0uNjI5LS4yODhjLS42NjEuMjMtMS4zOS4zNTktMi4xNTcuMzU5YTYuNTU4IDYuNTU4IDAgMCAxLTIuMTU3LS4zNTkuNS41IDAgMCAwLS42MzUuMzA0bC0uNTI1IDEuNDcxaC0uOTc5bC42MzMtMi4xNWEuNS41IDAgMCAwLS4xNy0uNTM0IDQuNjQ5IDQuNjQ5IDAgMCAxLTEuMjg0LTEuNTQxLjUuNSAwIDAgMC0uNDQ2LS4yNzVoLS41NmEuNS41IDAgMCAxLS40OTItLjQxNGwtLjI1NC0xLjQ2aC45MzNhLjUuNSAwIDAgMCAuNDg4LS4zOTN6bTEyLjYyMS0uODU3YS41NjUuNTY1IDAgMCAxLS4wOTguMjEuNzA0LjcwNCAwIDAgMS0uMDQ0LS4wMjVjLS4xNDYtLjA5LS4xNTctLjE3NS0uMTUyLS4yMjNhLjIzNi4yMzYgMCAwIDEgLjExNy0uMTczYy4wNDktLjAyNy4wOC0uMDIxLjExMy4wMTJhLjIwMi4yMDIgMCAwIDEgLjA2NC4xOTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGluQW5nbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODI4LjcyMmEuNS41IDAgMCAxIC4zNTQuMTQ2bDQuOTUgNC45NWEuNS41IDAgMCAxIDAgLjcwN2MtLjQ4LjQ4LTEuMDcyLjU4OC0xLjUwMy41ODgtLjE3NyAwLS4zMzUtLjAxOC0uNDYtLjAzOWwtMy4xMzQgMy4xMzRhNS45MjcgNS45MjcgMCAwIDEgLjE2IDEuMDEzYy4wNDYuNzAyLS4wMzIgMS42ODctLjcyIDIuMzc1YS41LjUgMCAwIDEtLjcwNyAwbC0yLjgyOS0yLjgyOC0zLjE4MiAzLjE4MmMtLjE5NS4xOTUtMS4yMTkuOTAyLTEuNDE0LjcwNy0uMTk1LS4xOTUuNTEyLTEuMjIuNzA3LTEuNDE0bDMuMTgyLTMuMTgyLTIuODI4LTIuODI5YS41LjUgMCAwIDEgMC0uNzA3Yy42ODgtLjY4OCAxLjY3My0uNzY3IDIuMzc1LS43MmE1LjkyMiA1LjkyMiAwIDAgMSAxLjAxMy4xNmwzLjEzNC0zLjEzM2EyLjc3MiAyLjc3MiAwIDAgMS0uMDQtLjQ2MWMwLS40My4xMDgtMS4wMjIuNTg5LTEuNTAzYS41LjUgMCAwIDEgLjM1My0uMTQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BpbkFuZ2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuODI4LjcyMmEuNS41IDAgMCAxIC4zNTQuMTQ2bDQuOTUgNC45NWEuNS41IDAgMCAxIDAgLjcwN2MtLjQ4LjQ4LTEuMDcyLjU4OC0xLjUwMy41ODgtLjE3NyAwLS4zMzUtLjAxOC0uNDYtLjAzOWwtMy4xMzQgMy4xMzRhNS45MjcgNS45MjcgMCAwIDEgLjE2IDEuMDEzYy4wNDYuNzAyLS4wMzIgMS42ODctLjcyIDIuMzc1YS41LjUgMCAwIDEtLjcwNyAwbC0yLjgyOS0yLjgyOC0zLjE4MiAzLjE4MmMtLjE5NS4xOTUtMS4yMTkuOTAyLTEuNDE0LjcwNy0uMTk1LS4xOTUuNTEyLTEuMjIuNzA3LTEuNDE0bDMuMTgyLTMuMTgyLTIuODI4LTIuODI5YS41LjUgMCAwIDEgMC0uNzA3Yy42ODgtLjY4OCAxLjY3My0uNzY3IDIuMzc1LS43MmE1LjkyMiA1LjkyMiAwIDAgMSAxLjAxMy4xNmwzLjEzNC0zLjEzM2EyLjc3MiAyLjc3MiAwIDAgMS0uMDQtLjQ2MWMwLS40My4xMDgtMS4wMjIuNTg5LTEuNTAzYS41LjUgMCAwIDEgLjM1My0uMTQ2em0uMTIyIDIuMTEydi0uMDAyLjAwMnptMC0uMDAydi4wMDJhLjUuNSAwIDAgMS0uMTIyLjUxTDYuMjkzIDYuODc4YS41LjUgMCAwIDEtLjUxMS4xMkg1Ljc4bC0uMDE0LS4wMDRhNC41MDcgNC41MDcgMCAwIDAtLjI4OC0uMDc2IDQuOTIyIDQuOTIyIDAgMCAwLS43NjUtLjExNmMtLjQyMi0uMDI4LS44MzYuMDA4LTEuMTc1LjE1bDUuNTEgNS41MDljLjE0MS0uMzQuMTc3LS43NTMuMTQ5LTEuMTc1YTQuOTI0IDQuOTI0IDAgMCAwLS4xOTItMS4wNTRsLS4wMDQtLjAxM3YtLjAwMWEuNS41IDAgMCAxIC4xMi0uNTEybDMuNTM2LTMuNTM1YS41LjUgMCAwIDEgLjUzMi0uMTE1bC4wOTYuMDIyYy4wODcuMDE3LjIwOC4wMzQuMzQ0LjAzNC4xMTQgMCAuMjMtLjAxMS4zNDMtLjA0TDkuOTI3IDIuMDI4Yy0uMDI5LjExMy0uMDQuMjMtLjA0LjM0M2ExLjc3OSAxLjc3OSAwIDAgMCAuMDYyLjQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BpbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNDYuMTQ2QS41LjUgMCAwIDEgNC41IDBoN2EuNS41IDAgMCAxIC41LjVjMCAuNjgtLjM0MiAxLjE3NC0uNjQ2IDEuNDc5LS4xMjYuMTI1LS4yNS4yMjQtLjM1NC4yOTh2NC40MzFsLjA3OC4wNDhjLjIwMy4xMjcuNDc2LjMxNC43NTEuNTU1QzEyLjM2IDcuNzc1IDEzIDguNTI3IDEzIDkuNWEuNS41IDAgMCAxLS41LjVoLTR2NC41YzAgLjI3Ni0uMjI0IDEuNS0uNSAxLjVzLS41LTEuMjI0LS41LTEuNVYxMGgtNGEuNS41IDAgMCAxLS41LS41YzAtLjk3My42NC0xLjcyNSAxLjE3LTIuMTg5QTUuOTIxIDUuOTIxIDAgMCAxIDUgNi43MDhWMi4yNzdhMi43NyAyLjc3IDAgMCAxLS4zNTQtLjI5OEM0LjM0MiAxLjY3NCA0IDEuMTc5IDQgLjVhLjUuNSAwIDAgMSAuMTQ2LS4zNTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGluTWFwRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMy4xIDExLjJhLjUuNSAwIDAgMSAuNC0uMkg2YS41LjUgMCAwIDEgMCAxSDMuNzVMMS41IDE1aDEzbC0yLjI1LTNIMTBhLjUuNSAwIDAgMSAwLTFoMi41YS41LjUgMCAwIDEgLjQuMmwzIDRhLjUuNSAwIDAgMS0uNC44SC41YS41LjUgMCAwIDEtLjQtLjhsMy00elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk00IDRhNCA0IDAgMSAxIDQuNSAzLjk2OVYxMy41YS41LjUgMCAwIDEtMSAwVjcuOTdBNCA0IDAgMCAxIDQgMy45OTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGluTWFwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0zLjEgMTEuMmEuNS41IDAgMCAxIC40LS4ySDZhLjUuNSAwIDAgMSAwIDFIMy43NUwxLjUgMTVoMTNsLTIuMjUtM0gxMGEuNS41IDAgMCAxIDAtMWgyLjVhLjUuNSAwIDAgMSAuNC4ybDMgNGEuNS41IDAgMCAxLS40LjhILjVhLjUuNSAwIDAgMS0uNC0uOGwzLTR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMWEzIDMgMCAxIDAgMCA2IDMgMyAwIDAgMCAwLTZ6TTQgNGE0IDQgMCAxIDEgNC41IDMuOTY5VjEzLjVhLjUuNSAwIDAgMS0xIDBWNy45N0E0IDQgMCAwIDEgNCAzLjk5OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQaW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4xNDYuMTQ2QS41LjUgMCAwIDEgNC41IDBoN2EuNS41IDAgMCAxIC41LjVjMCAuNjgtLjM0MiAxLjE3NC0uNjQ2IDEuNDc5LS4xMjYuMTI1LS4yNS4yMjQtLjM1NC4yOTh2NC40MzFsLjA3OC4wNDhjLjIwMy4xMjcuNDc2LjMxNC43NTEuNTU1QzEyLjM2IDcuNzc1IDEzIDguNTI3IDEzIDkuNWEuNS41IDAgMCAxLS41LjVoLTR2NC41YzAgLjI3Ni0uMjI0IDEuNS0uNSAxLjVzLS41LTEuMjI0LS41LTEuNVYxMGgtNGEuNS41IDAgMCAxLS41LS41YzAtLjk3My42NC0xLjcyNSAxLjE3LTIuMTg5QTUuOTIxIDUuOTIxIDAgMCAxIDUgNi43MDhWMi4yNzdhMi43NyAyLjc3IDAgMCAxLS4zNTQtLjI5OEM0LjM0MiAxLjY3NCA0IDEuMTc5IDQgLjVhLjUuNSAwIDAgMSAuMTQ2LS4zNTR6bTEuNTggMS40MDgtLjAwMi0uMDAxLjAwMi4wMDF6bS0uMDAyLS4wMDEuMDAyLjAwMUEuNS41IDAgMCAxIDYgMnY1YS41LjUgMCAwIDEtLjI3Ni40NDdoLS4wMDJsLS4wMTIuMDA3LS4wNTQuMDNhNC45MjIgNC45MjIgMCAwIDAtLjgyNy41OGMtLjMxOC4yNzgtLjU4NS41OTYtLjcyNS45MzZoNy43OTJjLS4xNC0uMzQtLjQwNy0uNjU4LS43MjUtLjkzNmE0LjkxNSA0LjkxNSAwIDAgMC0uODgxLS42MWwtLjAxMi0uMDA2aC0uMDAyQS41LjUgMCAwIDEgMTAgN1YyYS41LjUgMCAwIDEgLjI5NS0uNDU4IDEuNzc1IDEuNzc1IDAgMCAwIC4zNTEtLjI3MWMuMDgtLjA4LjE1NS0uMTcuMjE0LS4yNzFINS4xNGMuMDYuMS4xMzMuMTkxLjIxNC4yNzFhMS43OCAxLjc4IDAgMCAwIC4zNy4yODJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGludGVyZXN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGE4IDggMCAwIDAtMi45MTUgMTUuNDUyYy0uMDctLjYzMy0uMTM0LTEuNjA2LjAyNy0yLjI5Ny4xNDYtLjYyNS45MzgtMy45NzcuOTM4LTMuOTc3cy0uMjM5LS40NzktLjIzOS0xLjE4N2MwLTEuMTEzLjY0NS0xLjk0MyAxLjQ0OC0xLjk0My42ODIgMCAxLjAxMi41MTIgMS4wMTIgMS4xMjcgMCAuNjg2LS40MzcgMS43MTItLjY2MyAyLjY2My0uMTg4Ljc5Ni40IDEuNDQ2IDEuMTg1IDEuNDQ2IDEuNDIyIDAgMi41MTUtMS41IDIuNTE1LTMuNjY0IDAtMS45MTUtMS4zNzctMy4yNTQtMy4zNDItMy4yNTQtMi4yNzYgMC0zLjYxMiAxLjcwNy0zLjYxMiAzLjQ3MSAwIC42ODguMjY1IDEuNDI1LjU5NSAxLjgyNmEuMjQuMjQgMCAwIDEgLjA1Ni4yM2MtLjA2MS4yNTItLjE5Ni43OTYtLjIyMi45MDctLjAzNS4xNDYtLjExNi4xNzctLjI2OC4xMDctMS0uNDY1LTEuNjI0LTEuOTI2LTEuNjI0LTMuMSAwLTIuNTIzIDEuODM0LTQuODQgNS4yODYtNC44NCAyLjc3NSAwIDQuOTMyIDEuOTc3IDQuOTMyIDQuNjIgMCAyLjc1Ny0xLjczOSA0Ljk3Ni00LjE1MSA0Ljk3Ni0uODExIDAtMS41NzMtLjQyMS0xLjgzNC0uOTE5bC0uNDk4IDEuOTAyYy0uMTgxLjY5NS0uNjY5IDEuNTY2LS45OTUgMi4wOTdBOCA4IDAgMSAwIDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQaXBGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2OUExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTlBMS41IDEuNSAwIDAgMCAxNC41IDJoLTEzem03IDZoNWEuNS41IDAgMCAxIC41LjV2M2EuNS41IDAgMCAxLS41LjVoLTVhLjUuNSAwIDAgMS0uNS0uNXYtM2EuNS41IDAgMCAxIC41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BpcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDMuNUExLjUgMS41IDAgMCAxIDEuNSAyaDEzQTEuNSAxLjUgMCAwIDEgMTYgMy41djlhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0xM0ExLjUgMS41IDAgMCAxIDAgMTIuNXYtOXpNMS41IDNhLjUuNSAwIDAgMC0uNS41djlhLjUuNSAwIDAgMCAuNS41aDEzYS41LjUgMCAwIDAgLjUtLjV2LTlhLjUuNSAwIDAgMC0uNS0uNWgtMTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA4LjVhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgLjUuNXYzYS41LjUgMCAwIDEtLjUuNWgtNWEuNS41IDAgMCAxLS41LS41di0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsYXlCdG5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnptNi43OS02LjkwN0EuNS41IDAgMCAwIDYgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3bDMuNS0yLjVhLjUuNSAwIDAgMCAwLS44MTRsLTMuNS0yLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGxheUJ0biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02Ljc5IDUuMDkzQS41LjUgMCAwIDAgNiA1LjV2NWEuNS41IDAgMCAwIC43OS40MDdsMy41LTIuNWEuNS41IDAgMCAwIDAtLjgxNGwtMy41LTIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTUgMGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsYXlDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi43OSA1LjA5M0EuNS41IDAgMCAwIDYgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3bDMuNS0yLjVhLjUuNSAwIDAgMCAwLS44MTRsLTMuNS0yLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGxheUNpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjcxIDUuMDU1YS41LjUgMCAwIDEgLjUyLjAzOGwzLjUgMi41YS41LjUgMCAwIDEgMCAuODE0bC0zLjUgMi41QS41LjUgMCAwIDEgNiAxMC41di01YS41LjUgMCAwIDEgLjI3MS0uNDQ1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsYXlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTExLjU5NiA4LjY5Ny02LjM2MyAzLjY5MmMtLjU0LjMxMy0xLjIzMy0uMDY2LTEuMjMzLS42OTdWNC4zMDhjMC0uNjMuNjkyLTEuMDEgMS4yMzMtLjY5Nmw2LjM2MyAzLjY5MmEuODAyLjgwMiAwIDAgMSAwIDEuMzkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsYXkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuODA0IDggNSA0LjYzM3Y2LjczNEwxMC44MDQgOHptLjc5Mi0uNjk2YS44MDIuODAyIDAgMCAxIDAgMS4zOTJsLTYuMzYzIDMuNjkyQzQuNzEzIDEyLjY5IDQgMTIuMzQ1IDQgMTEuNjkyVjQuMzA4YzAtLjY1My43MTMtLjk5OCAxLjIzMy0uNjk2bDYuMzYzIDMuNjkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdWdGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYgMGEuNS41IDAgMCAxIC41LjVWM2gzVi41YS41LjUgMCAwIDEgMSAwVjNoMWEuNS41IDAgMCAxIC41LjV2M0EzLjUgMy41IDAgMCAxIDguNSAxMGMtLjAwMi40MzQtLjAxLjg0NS0uMDQgMS4yMi0uMDQxLjUxNC0uMTI2IDEuMDAzLS4zMTcgMS40MjRhMi4wODMgMi4wODMgMCAwIDEtLjk3IDEuMDI4QzYuNzI1IDEzLjkgNi4xNjkgMTQgNS41IDE0Yy0uOTk4IDAtMS42MS4zMy0xLjk3NC43MThBMS45MjIgMS45MjIgMCAwIDAgMyAxNkgyYzAtLjYxNi4yMzItMS4zNjcuNzk3LTEuOTY4QzMuMzc0IDEzLjQyIDQuMjYxIDEzIDUuNSAxM2MuNTgxIDAgLjk2Mi0uMDg4IDEuMjE4LS4yMTkuMjQxLS4xMjMuNC0uMy41MTQtLjU1LjEyMS0uMjY2LjE5My0uNjIxLjIzLTEuMDkuMDI3LS4zNC4wMzUtLjcxOC4wMzctMS4xNDFBMy41IDMuNSAwIDAgMSA0IDYuNXYtM2EuNS41IDAgMCAxIC41LS41aDFWLjVBLjUuNSAwIDAgMSA2IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGx1ZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDBhLjUuNSAwIDAgMSAuNS41VjNoM1YuNWEuNS41IDAgMCAxIDEgMFYzaDFhLjUuNSAwIDAgMSAuNS41djNBMy41IDMuNSAwIDAgMSA4LjUgMTBjLS4wMDIuNDM0LS4wMS44NDUtLjA0IDEuMjItLjA0MS41MTQtLjEyNiAxLjAwMy0uMzE3IDEuNDI0YTIuMDgzIDIuMDgzIDAgMCAxLS45NyAxLjAyOEM2LjcyNSAxMy45IDYuMTY5IDE0IDUuNSAxNGMtLjk5OCAwLTEuNjEuMzMtMS45NzQuNzE4QTEuOTIyIDEuOTIyIDAgMCAwIDMgMTZIMmMwLS42MTYuMjMyLTEuMzY3Ljc5Ny0xLjk2OEMzLjM3NCAxMy40MiA0LjI2MSAxMyA1LjUgMTNjLjU4MSAwIC45NjItLjA4OCAxLjIxOC0uMjE5LjI0MS0uMTIzLjQtLjMuNTE0LS41NS4xMjEtLjI2Ni4xOTMtLjYyMS4yMy0xLjA5LjAyNy0uMzQuMDM1LS43MTguMDM3LTEuMTQxQTMuNSAzLjUgMCAwIDEgNCA2LjV2LTNhLjUuNSAwIDAgMSAuNS0uNWgxVi41QS41LjUgMCAwIDEgNiAwek01IDR2Mi41QTIuNSAyLjUgMCAwIDAgNy41IDloMUEyLjUgMi41IDAgMCAwIDExIDYuNVY0SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGx1c0NpcmNsZURvdHRlZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBjLS4xNzYgMC0uMzUuMDA2LS41MjMuMDE3bC4wNjQuOTk4YTcuMTE3IDcuMTE3IDAgMCAxIC45MTggMGwuMDY0LS45OThBOC4xMTMgOC4xMTMgMCAwIDAgOCAwek02LjQ0LjE1MmMtLjM0Ni4wNjktLjY4NC4xNi0xLjAxMi4yN2wuMzIxLjk0OGMuMjg3LS4wOTguNTgyLS4xNzcuODg0LS4yMzdMNi40NC4xNTN6bTQuMTMyLjI3MWE3Ljk0NiA3Ljk0NiAwIDAgMC0xLjAxMS0uMjdsLS4xOTQuOThjLjMwMi4wNi41OTcuMTQuODg0LjIzN2wuMzIxLS45NDd6bTEuODczLjkyNWE4IDggMCAwIDAtLjkwNi0uNTI0bC0uNDQzLjg5NmMuMjc1LjEzNi41NC4yOS43OTMuNDU5bC41NTYtLjgzMXpNNC40Ni44MjRjLS4zMTQuMTU1LS42MTYuMzMtLjkwNS41MjRsLjU1Ni44M2E3LjA3IDcuMDcgMCAwIDEgLjc5My0uNDU4TDQuNDYuODI0ek0yLjcyNSAxLjk4NWMtLjI2Mi4yMy0uNTEuNDc4LS43NC43NGwuNzUyLjY2Yy4yMDItLjIzLjQxOC0uNDQ2LjY0OC0uNjQ4bC0uNjYtLjc1MnptMTEuMjkuNzRhOC4wNTggOC4wNTggMCAwIDAtLjc0LS43NGwtLjY2Ljc1MmMuMjMuMjAyLjQ0Ny40MTguNjQ4LjY0OGwuNzUyLS42NnptMS4xNjEgMS43MzVhNy45OCA3Ljk4IDAgMCAwLS41MjQtLjkwNWwtLjgzLjU1NmMuMTY5LjI1My4zMjIuNTE4LjQ1OC43OTNsLjg5Ni0uNDQzek0xLjM0OCAzLjU1NWMtLjE5NC4yODktLjM3LjU5MS0uNTI0LjkwNmwuODk2LjQ0M2MuMTM2LS4yNzUuMjktLjU0LjQ1OS0uNzkzbC0uODMxLS41NTZ6TS40MjMgNS40MjhhNy45NDUgNy45NDUgMCAwIDAtLjI3IDEuMDExbC45OC4xOTRjLjA2LS4zMDIuMTQtLjU5Ny4yMzctLjg4NGwtLjk0Ny0uMzIxek0xNS44NDggNi40NGE3Ljk0MyA3Ljk0MyAwIDAgMC0uMjctMS4wMTJsLS45NDguMzIxYy4wOTguMjg3LjE3Ny41ODIuMjM3Ljg4NGwuOTgtLjE5NHpNLjAxNyA3LjQ3N2E4LjExMyA4LjExMyAwIDAgMCAwIDEuMDQ2bC45OTgtLjA2NGE3LjExNyA3LjExNyAwIDAgMSAwLS45MThsLS45OTgtLjA2NHpNMTYgOGE4LjEgOC4xIDAgMCAwLS4wMTctLjUyM2wtLjk5OC4wNjRhNy4xMSA3LjExIDAgMCAxIDAgLjkxOGwuOTk4LjA2NEE4LjEgOC4xIDAgMCAwIDE2IDh6TS4xNTIgOS41NmMuMDY5LjM0Ni4xNi42ODQuMjcgMS4wMTJsLjk0OC0uMzIxYTYuOTQ0IDYuOTQ0IDAgMCAxLS4yMzctLjg4NGwtLjk4LjE5NHptMTUuNDI1IDEuMDEyYy4xMTItLjMyOC4yMDItLjY2Ni4yNy0xLjAxMWwtLjk4LS4xOTRjLS4wNi4zMDItLjE0LjU5Ny0uMjM3Ljg4NGwuOTQ3LjMyMXpNLjgyNCAxMS41NGE4IDggMCAwIDAgLjUyNC45MDVsLjgzLS41NTZhNi45OTkgNi45OTkgMCAwIDEtLjQ1OC0uNzkzbC0uODk2LjQ0M3ptMTMuODI4LjkwNWMuMTk0LS4yODkuMzctLjU5MS41MjQtLjkwNmwtLjg5Ni0uNDQzYy0uMTM2LjI3NS0uMjkuNTQtLjQ1OS43OTNsLjgzMS41NTZ6bS0xMi42NjcuODNjLjIzLjI2Mi40NzguNTEuNzQuNzRsLjY2LS43NTJhNy4wNDcgNy4wNDcgMCAwIDEtLjY0OC0uNjQ4bC0uNzUyLjY2em0xMS4yOS43NGMuMjYyLS4yMy41MS0uNDc4Ljc0LS43NGwtLjc1Mi0uNjZjLS4yMDEuMjMtLjQxOC40NDctLjY0OC42NDhsLjY2Ljc1MnptLTEuNzM1IDEuMTYxYy4zMTQtLjE1NS42MTYtLjMzLjkwNS0uNTI0bC0uNTU2LS44M2E3LjA3IDcuMDcgMCAwIDEtLjc5My40NThsLjQ0My44OTZ6bS03Ljk4NS0uNTI0Yy4yODkuMTk0LjU5MS4zNy45MDYuNTI0bC40NDMtLjg5NmE2Ljk5OCA2Ljk5OCAwIDAgMS0uNzkzLS40NTlsLS41NTYuODMxem0xLjg3My45MjVjLjMyOC4xMTIuNjY2LjIwMiAxLjAxMS4yN2wuMTk0LS45OGE2Ljk1MyA2Ljk1MyAwIDAgMS0uODg0LS4yMzdsLS4zMjEuOTQ3em00LjEzMi4yNzFhNy45NDQgNy45NDQgMCAwIDAgMS4wMTItLjI3bC0uMzIxLS45NDhhNi45NTQgNi45NTQgMCAwIDEtLjg4NC4yMzdsLjE5NC45OHptLTIuMDgzLjEzNWE4LjEgOC4xIDAgMCAwIDEuMDQ2IDBsLS4wNjQtLjk5OGE3LjExIDcuMTEgMCAwIDEtLjkxOCAwbC0uMDY0Ljk5OHpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHYzaC0zYS41LjUgMCAwIDAgMCAxaDN2M2EuNS41IDAgMCAwIDEgMHYtM2gzYS41LjUgMCAwIDAgMC0xaC0zdi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdXNDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHYzaC0zYS41LjUgMCAwIDAgMCAxaDN2M2EuNS41IDAgMCAwIDEgMHYtM2gzYS41LjUgMCAwIDAgMC0xaC0zdi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdXNDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDRhLjUuNSAwIDAgMSAuNS41djNoM2EuNS41IDAgMCAxIDAgMWgtM3YzYS41LjUgMCAwIDEtMSAwdi0zaC0zYS41LjUgMCAwIDEgMC0xaDN2LTNBLjUuNSAwIDAgMSA4IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUGx1c0xnIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGExIDEgMCAwIDEgMSAxdjZoNmExIDEgMCAxIDEgMCAySDl2NmExIDEgMCAxIDEtMiAwVjlIMWExIDEgMCAwIDEgMC0yaDZWMWExIDEgMCAwIDEgMS0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdXNTcXVhcmVEb3R0ZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDBjLS4xNjYgMC0uMzMuMDE2LS40ODcuMDQ4bC4xOTQuOThBMS41MSAxLjUxIDAgMCAxIDIuNSAxaC40NThWMEgyLjV6bTIuMjkyIDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTZ2MWguOTE2VjB6bTEuODM0IDBoLS45MTd2MWguOTE3VjB6bTEuODMzIDBoLS45MTd2MWguOTE3VjB6TTEzLjUgMGgtLjQ1OHYxaC40NThjLjEgMCAuMTk5LjAxLjI5My4wMjlsLjE5NC0uOTgxQTIuNTEgMi41MSAwIDAgMCAxMy41IDB6bTIuMDc5IDEuMTFhMi41MTEgMi41MTEgMCAwIDAtLjY5LS42ODlsLS41NTYuODMxYy4xNjQuMTEuMzA1LjI1MS40MTUuNDE1bC44My0uNTU2ek0xLjExLjQyMWEyLjUxMSAyLjUxMSAwIDAgMC0uNjg5LjY5bC44MzEuNTU2Yy4xMS0uMTY0LjI1MS0uMzA1LjQxNS0uNDE1TDEuMTEuNDIyek0xNiAyLjVjMC0uMTY2LS4wMTYtLjMzLS4wNDgtLjQ4N2wtLjk4LjE5NGMuMDE4LjA5NC4wMjguMTkyLjAyOC4yOTN2LjQ1OGgxVjIuNXpNLjA0OCAyLjAxM0EyLjUxIDIuNTEgMCAwIDAgMCAyLjV2LjQ1OGgxVjIuNWMwLS4xLjAxLS4xOTkuMDI5LS4yOTNsLS45ODEtLjE5NHpNMCAzLjg3NXYuOTE3aDF2LS45MTdIMHptMTYgLjkxN3YtLjkxN2gtMXYuOTE3aDF6TTAgNS43MDh2LjkxN2gxdi0uOTE3SDB6bTE2IC45MTd2LS45MTdoLTF2LjkxN2gxek0wIDcuNTQydi45MTZoMXYtLjkxNkgwem0xNSAuOTE2aDF2LS45MTZoLTF2LjkxNnpNMCA5LjM3NXYuOTE3aDF2LS45MTdIMHptMTYgLjkxN3YtLjkxN2gtMXYuOTE3aDF6bS0xNiAuOTE2di45MTdoMXYtLjkxN0gwem0xNiAuOTE3di0uOTE3aC0xdi45MTdoMXptLTE2IC45MTd2LjQ1OGMwIC4xNjYuMDE2LjMzLjA0OC40ODdsLjk4LS4xOTRBMS41MSAxLjUxIDAgMCAxIDEgMTMuNXYtLjQ1OEgwem0xNiAuNDU4di0uNDU4aC0xdi40NThjMCAuMS0uMDEuMTk5LS4wMjkuMjkzbC45ODEuMTk0Yy4wMzItLjE1OC4wNDgtLjMyLjA0OC0uNDg3ek0uNDIxIDE0Ljg5Yy4xODMuMjcyLjQxNy41MDYuNjkuNjg5bC41NTYtLjgzMWExLjUxIDEuNTEgMCAwIDEtLjQxNS0uNDE1bC0uODMuNTU2em0xNC40NjkuNjg5Yy4yNzItLjE4My41MDYtLjQxNy42ODktLjY5bC0uODMxLS41NTZjLS4xMS4xNjQtLjI1MS4zMDUtLjQxNS40MTVsLjU1Ni44M3ptLTEyLjg3Ny4zNzNjLjE1OC4wMzIuMzIuMDQ4LjQ4Ny4wNDhoLjQ1OHYtMUgyLjVjLS4xIDAtLjE5OS0uMDEtLjI5My0uMDI5bC0uMTk0Ljk4MXpNMTMuNSAxNmMuMTY2IDAgLjMzLS4wMTYuNDg3LS4wNDhsLS4xOTQtLjk4QTEuNTEgMS41MSAwIDAgMSAxMy41IDE1aC0uNDU4djFoLjQ1OHptLTkuNjI1IDBoLjkxN3YtMWgtLjkxN3Yxem0xLjgzMyAwaC45MTd2LTFoLS45MTd2MXptMS44MzQtMXYxaC45MTZ2LTFoLS45MTZ6bTEuODMzIDFoLjkxN3YtMWgtLjkxN3Yxem0xLjgzMyAwaC45MTd2LTFoLS45MTd2MXpNOC41IDQuNWEuNS41IDAgMCAwLTEgMHYzaC0zYS41LjUgMCAwIDAgMCAxaDN2M2EuNS41IDAgMCAwIDEgMHYtM2gzYS41LjUgMCAwIDAgMC0xaC0zdi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdXNTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptNi41IDQuNXYzaDNhLjUuNSAwIDAgMSAwIDFoLTN2M2EuNS41IDAgMCAxLTEgMHYtM2gtM2EuNS41IDAgMCAxIDAtMWgzdi0zYS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1BsdXNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGEuNS41IDAgMCAxIC41LjV2M2gzYS41LjUgMCAwIDEgMCAxaC0zdjNhLjUuNSAwIDAgMS0xIDB2LTNoLTNhLjUuNSAwIDAgMSAwLTFoM3YtM0EuNS41IDAgMCAxIDggNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGEuNS41IDAgMCAxIC41LjV2M2gzYS41LjUgMCAwIDEgMCAxaC0zdjNhLjUuNSAwIDAgMS0xIDB2LTNoLTNhLjUuNSAwIDAgMSAwLTFoM3YtM0EuNS41IDAgMCAxIDggNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQb3dlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjUgMXY3aDFWMWgtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDguODEyYTQuOTk5IDQuOTk5IDAgMCAxIDIuNTc4LTQuMzc1bC0uNDg1LS44NzRBNiA2IDAgMSAwIDExIDMuNjE2bC0uNTAxLjg2NUE1IDUgMCAxIDEgMyA4LjgxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQcmludGVyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDFhMiAyIDAgMCAwLTIgMnYxaDEwVjNhMiAyIDAgMCAwLTItMkg1em02IDhINWExIDEgMCAwIDAtMSAxdjNhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTF2LTNhMSAxIDAgMCAwLTEtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDdhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMmgtMXYtMmEyIDIgMCAwIDAtMi0ySDVhMiAyIDAgMCAwLTIgMnYySDJhMiAyIDAgMCAxLTItMlY3em0yLjUgMWEuNS41IDAgMSAwIDAtMSAuNS41IDAgMCAwIDAgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQcmludGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA4YS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMWEyIDIgMCAwIDAtMiAydjJIMmEyIDIgMCAwIDAtMiAydjNhMiAyIDAgMCAwIDIgMmgxdjFhMiAyIDAgMCAwIDIgMmg2YTIgMiAwIDAgMCAyLTJ2LTFoMWEyIDIgMCAwIDAgMi0yVjdhMiAyIDAgMCAwLTItMmgtMVYzYTIgMiAwIDAgMC0yLTJINXpNNCAzYTEgMSAwIDAgMSAxLTFoNmExIDEgMCAwIDEgMSAxdjJINFYzem0xIDVhMiAyIDAgMCAwLTIgMnYxSDJhMSAxIDAgMCAxLTEtMVY3YTEgMSAwIDAgMSAxLTFoMTJhMSAxIDAgMCAxIDEgMXYzYTEgMSAwIDAgMS0xIDFoLTF2LTFhMiAyIDAgMCAwLTItMkg1em03IDJ2M2ExIDEgMCAwIDEtMSAxSDVhMSAxIDAgMCAxLTEtMXYtM2ExIDEgMCAwIDEgMS0xaDZhMSAxIDAgMCAxIDEgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNQdXp6bGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMTEyIDMuNjQ1QTEuNSAxLjUgMCAwIDEgNC42MDUgMkg3YS41LjUgMCAwIDEgLjUuNXYuMzgyYzAgLjY5Ni0uNDk3IDEuMTgyLS44NzIgMS40NjlhLjQ1OS40NTkgMCAwIDAtLjExNS4xMTguMTEzLjExMyAwIDAgMC0uMDEyLjAyNUw2LjUgNC41di4wMDNsLjAwMy4wMWMuMDA0LjAxLjAxNC4wMjguMDM2LjA1M2EuODYuODYgMCAwIDAgLjI3LjE5NEM3LjA5IDQuOSA3LjUxIDUgOCA1Yy40OTIgMCAuOTEyLS4xIDEuMTktLjI0YS44Ni44NiAwIDAgMCAuMjcxLS4xOTQuMjEzLjIxMyAwIDAgMCAuMDM2LS4wNTRsLjAwMy0uMDF2LS4wMDhhLjExMi4xMTIgMCAwIDAtLjAxMi0uMDI1LjQ1OS40NTkgMCAwIDAtLjExNS0uMTE4Yy0uMzc1LS4yODctLjg3Mi0uNzczLS44NzItMS40NjlWMi41QS41LjUgMCAwIDEgOSAyaDIuMzk1YTEuNSAxLjUgMCAwIDEgMS40OTMgMS42NDVMMTIuNjQ1IDYuNWguMjM3Yy4xOTUgMCAuNDItLjE0Ny42NzUtLjQ4LjIxLS4yNzQuNTI4LS41Mi45NDMtLjUyLjU2OCAwIC45NDcuNDQ3IDEuMTU0Ljg2MkMxNS44NzcgNi44MDcgMTYgNy4zODcgMTYgOHMtLjEyMyAxLjE5My0uMzQ2IDEuNjM4Yy0uMjA3LjQxNS0uNTg2Ljg2Mi0xLjE1NC44NjItLjQxNSAwLS43MzMtLjI0Ni0uOTQzLS41Mi0uMjU1LS4zMzMtLjQ4LS40OC0uNjc1LS40OGgtLjIzN2wuMjQzIDIuODU1QTEuNSAxLjUgMCAwIDEgMTEuMzk1IDE0SDlhLjUuNSAwIDAgMS0uNS0uNXYtLjM4MmMwLS42OTYuNDk3LTEuMTgyLjg3Mi0xLjQ2OWEuNDU5LjQ1OSAwIDAgMCAuMTE1LS4xMTguMTEzLjExMyAwIDAgMCAuMDEyLS4wMjVMOS41IDExLjV2LS4wMDNsLS4wMDMtLjAxYS4yMTQuMjE0IDAgMCAwLS4wMzYtLjA1My44NTkuODU5IDAgMCAwLS4yNy0uMTk0QzguOTEgMTEuMSA4LjQ5IDExIDggMTFjLS40OTEgMC0uOTEyLjEtMS4xOS4yNGEuODU5Ljg1OSAwIDAgMC0uMjcxLjE5NC4yMTQuMjE0IDAgMCAwLS4wMzYuMDU0bC0uMDAzLjAxdi4wMDJsLjAwMS4wMDZhLjExMy4xMTMgMCAwIDAgLjAxMi4wMjVjLjAxNi4wMjcuMDUuMDY4LjExNS4xMTguMzc1LjI4Ny44NzIuNzczLjg3MiAxLjQ2OXYuMzgyYS41LjUgMCAwIDEtLjUuNUg0LjYwNWExLjUgMS41IDAgMCAxLTEuNDkzLTEuNjQ1TDMuMzU2IDkuNWgtLjIzOGMtLjE5NSAwLS40Mi4xNDctLjY3NS40OC0uMjEuMjc0LS41MjguNTItLjk0My41Mi0uNTY4IDAtLjk0Ny0uNDQ3LTEuMTU0LS44NjJDLjEyMyA5LjE5MyAwIDguNjEzIDAgOHMuMTIzLTEuMTkzLjM0Ni0xLjYzOEMuNTUzIDUuOTQ3LjkzMiA1LjUgMS41IDUuNWMuNDE1IDAgLjczMy4yNDYuOTQzLjUyLjI1NS4zMzMuNDguNDguNjc1LjQ4aC4yMzhsLS4yNDQtMi44NTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUHV6emxlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMTEyIDMuNjQ1QTEuNSAxLjUgMCAwIDEgNC42MDUgMkg3YS41LjUgMCAwIDEgLjUuNXYuMzgyYzAgLjY5Ni0uNDk3IDEuMTgyLS44NzIgMS40NjlhLjQ1OS40NTkgMCAwIDAtLjExNS4xMTguMTEzLjExMyAwIDAgMC0uMDEyLjAyNUw2LjUgNC41di4wMDNsLjAwMy4wMWMuMDA0LjAxLjAxNC4wMjguMDM2LjA1M2EuODYuODYgMCAwIDAgLjI3LjE5NEM3LjA5IDQuOSA3LjUxIDUgOCA1Yy40OTIgMCAuOTEyLS4xIDEuMTktLjI0YS44Ni44NiAwIDAgMCAuMjcxLS4xOTQuMjEzLjIxMyAwIDAgMCAuMDM5LS4wNjN2LS4wMDlhLjExMi4xMTIgMCAwIDAtLjAxMi0uMDI1LjQ1OS40NTkgMCAwIDAtLjExNS0uMTE4Yy0uMzc1LS4yODctLjg3Mi0uNzczLS44NzItMS40NjlWMi41QS41LjUgMCAwIDEgOSAyaDIuMzk1YTEuNSAxLjUgMCAwIDEgMS40OTMgMS42NDVMMTIuNjQ1IDYuNWguMjM3Yy4xOTUgMCAuNDItLjE0Ny42NzUtLjQ4LjIxLS4yNzQuNTI4LS41Mi45NDMtLjUyLjU2OCAwIC45NDcuNDQ3IDEuMTU0Ljg2MkMxNS44NzcgNi44MDcgMTYgNy4zODcgMTYgOHMtLjEyMyAxLjE5My0uMzQ2IDEuNjM4Yy0uMjA3LjQxNS0uNTg2Ljg2Mi0xLjE1NC44NjItLjQxNSAwLS43MzMtLjI0Ni0uOTQzLS41Mi0uMjU1LS4zMzMtLjQ4LS40OC0uNjc1LS40OGgtLjIzN2wuMjQzIDIuODU1QTEuNSAxLjUgMCAwIDEgMTEuMzk1IDE0SDlhLjUuNSAwIDAgMS0uNS0uNXYtLjM4MmMwLS42OTYuNDk3LTEuMTgyLjg3Mi0xLjQ2OWEuNDU5LjQ1OSAwIDAgMCAuMTE1LS4xMTguMTEzLjExMyAwIDAgMCAuMDEyLS4wMjVMOS41IDExLjV2LS4wMDNhLjIxNC4yMTQgMCAwIDAtLjAzOS0uMDY0Ljg1OS44NTkgMCAwIDAtLjI3LS4xOTNDOC45MSAxMS4xIDguNDkgMTEgOCAxMWMtLjQ5MSAwLS45MTIuMS0xLjE5LjI0YS44NTkuODU5IDAgMCAwLS4yNzEuMTk0LjIxNC4yMTQgMCAwIDAtLjAzOS4wNjN2LjAwM2wuMDAxLjAwNmEuMTEzLjExMyAwIDAgMCAuMDEyLjAyNWMuMDE2LjAyNy4wNS4wNjguMTE1LjExOC4zNzUuMjg3Ljg3Mi43NzMuODcyIDEuNDY5di4zODJhLjUuNSAwIDAgMS0uNS41SDQuNjA1YTEuNSAxLjUgMCAwIDEtMS40OTMtMS42NDVMMy4zNTYgOS41aC0uMjM4Yy0uMTk1IDAtLjQyLjE0Ny0uNjc1LjQ4LS4yMS4yNzQtLjUyOC41Mi0uOTQzLjUyLS41NjggMC0uOTQ3LS40NDctMS4xNTQtLjg2MkMuMTIzIDkuMTkzIDAgOC42MTMgMCA4cy4xMjMtMS4xOTMuMzQ2LTEuNjM4Qy41NTMgNS45NDcuOTMyIDUuNSAxLjUgNS41Yy40MTUgMCAuNzMzLjI0Ni45NDMuNTIuMjU1LjMzMy40OC40OC42NzUuNDhoLjIzOGwtLjI0NC0yLjg1NXpNNC42MDUgM2EuNS41IDAgMCAwLS40OTguNTVsLjAwMS4wMDcuMjkgMy40QS41LjUgMCAwIDEgMy45IDcuNWgtLjc4MmMtLjY5NiAwLTEuMTgyLS40OTctMS40NjktLjg3MmEuNDU5LjQ1OSAwIDAgMC0uMTE4LS4xMTUuMTEyLjExMiAwIDAgMC0uMDI1LS4wMTJMMS41IDYuNWgtLjAwM2EuMjEzLjIxMyAwIDAgMC0uMDY0LjAzOS44Ni44NiAwIDAgMC0uMTkzLjI3QzEuMSA3LjA5IDEgNy41MSAxIDhjMCAuNDkxLjEuOTEyLjI0IDEuMTkuMDcuMTQuMTQuMjI1LjE5NC4yNzFhLjIxMy4yMTMgMCAwIDAgLjA2My4wMzlIMS41bC4wMDYtLjAwMWEuMTEyLjExMiAwIDAgMCAuMDI1LS4wMTIuNDU5LjQ1OSAwIDAgMCAuMTE4LS4xMTVjLjI4Ny0uMzc1Ljc3My0uODcyIDEuNDY5LS44NzJIMy45YS41LjUgMCAwIDEgLjQ5OC41NDJsLS4yOSAzLjQwOGEuNS41IDAgMCAwIC40OTcuNTVoMS44NzhjLS4wNDgtLjE2Ni0uMTk1LS4zNTItLjQ2My0uNTU3LS4yNzQtLjIxLS41Mi0uNTI4LS41Mi0uOTQzIDAtLjU2OC40NDctLjk0Ny44NjItMS4xNTRDNi44MDcgMTAuMTIzIDcuMzg3IDEwIDggMTBzMS4xOTMuMTIzIDEuNjM4LjM0NmMuNDE1LjIwNy44NjIuNTg2Ljg2MiAxLjE1NCAwIC40MTUtLjI0Ni43MzMtLjUyLjk0My0uMjY4LjIwNS0uNDE1LjM5LS40NjMuNTU3aDEuODc4YS41LjUgMCAwIDAgLjQ5OC0uNTVsLS4wMDEtLjAwNy0uMjktMy40QS41LjUgMCAwIDEgMTIuMSA4LjVoLjc4MmMuNjk2IDAgMS4xODIuNDk3IDEuNDY5Ljg3Mi4wNS4wNjUuMDkxLjA5OS4xMTguMTE1LjAxMy4wMDguMDIxLjAxLjAyNS4wMTJhLjAyLjAyIDAgMCAwIC4wMDYuMDAxaC4wMDNhLjIxNC4yMTQgMCAwIDAgLjA2NC0uMDM5Ljg2Ljg2IDAgMCAwIC4xOTMtLjI3Yy4xNC0uMjguMjQtLjcuMjQtMS4xOTEgMC0uNDkyLS4xLS45MTItLjI0LTEuMTlhLjg2Ljg2IDAgMCAwLS4xOTQtLjI3MS4yMTUuMjE1IDAgMCAwLS4wNjMtLjAzOUgxNC41bC0uMDA2LjAwMWEuMTEzLjExMyAwIDAgMC0uMDI1LjAxMi40NTkuNDU5IDAgMCAwLS4xMTguMTE1Yy0uMjg3LjM3NS0uNzczLjg3Mi0xLjQ2OS44NzJIMTIuMWEuNS41IDAgMCAxLS40OTgtLjU0M2wuMjktMy40MDdhLjUuNSAwIDAgMC0uNDk3LS41NUg5LjUxN2MuMDQ4LjE2Ni4xOTUuMzUyLjQ2My41NTcuMjc0LjIxLjUyLjUyOC41Mi45NDMgMCAuNTY4LS40NDcuOTQ3LS44NjIgMS4xNTRDOS4xOTMgNS44NzcgOC42MTMgNiA4IDZzLTEuMTkzLS4xMjMtMS42MzgtLjM0NkM1Ljk0NyA1LjQ0NyA1LjUgNS4wNjggNS41IDQuNWMwLS40MTUuMjQ2LS43MzMuNTItLjk0My4yNjgtLjIwNS40MTUtLjM5LjQ2My0uNTU3SDQuNjA1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1F1ZXN0aW9uQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTUuNDk2IDYuMDMzaC44MjVjLjEzOCAwIC4yNDgtLjExMy4yNjYtLjI1LjA5LS42NTYuNTQtMS4xMzQgMS4zNDItMS4xMzQuNjg2IDAgMS4zMTQuMzQzIDEuMzE0IDEuMTY4IDAgLjYzNS0uMzc0LjkyNy0uOTY1IDEuMzcxLS42NzMuNDg5LTEuMjA2IDEuMDYtMS4xNjggMS45ODdsLjAwMy4yMTdhLjI1LjI1IDAgMCAwIC4yNS4yNDZoLjgxMWEuMjUuMjUgMCAwIDAgLjI1LS4yNXYtLjEwNWMwLS43MTguMjczLS45MjcgMS4wMS0xLjQ4Ni42MDktLjQ2MyAxLjI0NC0uOTc3IDEuMjQ0LTIuMDU2IDAtMS41MTEtMS4yNzYtMi4yNDEtMi42NzMtMi4yNDEtMS4yNjcgMC0yLjY1NS41OS0yLjc1IDIuMjg2YS4yMzcuMjM3IDAgMCAwIC4yNDEuMjQ3em0yLjMyNSA2LjQ0M2MuNjEgMCAxLjAyOS0uMzk0IDEuMDI5LS45MjcgMC0uNTUyLS40Mi0uOTQtMS4wMjktLjk0LS41ODQgMC0xLjAwOS4zODgtMS4wMDkuOTQgMCAuNTMzLjQyNS45MjcgMS4wMS45Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUXVlc3Rpb25DaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjI1NSA1Ljc4NmEuMjM3LjIzNyAwIDAgMCAuMjQxLjI0N2guODI1Yy4xMzggMCAuMjQ4LS4xMTMuMjY2LS4yNS4wOS0uNjU2LjU0LTEuMTM0IDEuMzQyLTEuMTM0LjY4NiAwIDEuMzE0LjM0MyAxLjMxNCAxLjE2OCAwIC42MzUtLjM3NC45MjctLjk2NSAxLjM3MS0uNjczLjQ4OS0xLjIwNiAxLjA2LTEuMTY4IDEuOTg3bC4wMDMuMjE3YS4yNS4yNSAwIDAgMCAuMjUuMjQ2aC44MTFhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS4xMDVjMC0uNzE4LjI3My0uOTI3IDEuMDEtMS40ODYuNjA5LS40NjMgMS4yNDQtLjk3NyAxLjI0NC0yLjA1NiAwLTEuNTExLTEuMjc2LTIuMjQxLTIuNjczLTIuMjQxLTEuMjY3IDAtMi42NTUuNTktMi43NSAyLjI4NnptMS41NTcgNS43NjNjMCAuNTMzLjQyNS45MjcgMS4wMS45MjcuNjA5IDAgMS4wMjgtLjM5NCAxLjAyOC0uOTI3IDAtLjU1Mi0uNDItLjk0LTEuMDI5LS45NC0uNTg0IDAtMS4wMDkuMzg4LTEuMDA5Ljk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1F1ZXN0aW9uRGlhbW9uZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS4wNS40MzVjLS41OC0uNTgtMS41Mi0uNTgtMi4xIDBMLjQzNiA2Ljk1Yy0uNTguNTgtLjU4IDEuNTE5IDAgMi4wOThsNi41MTYgNi41MTZjLjU4LjU4IDEuNTE5LjU4IDIuMDk4IDBsNi41MTYtNi41MTZjLjU4LS41OC41OC0xLjUxOSAwLTIuMDk4TDkuMDUuNDM1ek01LjQ5NSA2LjAzM2EuMjM3LjIzNyAwIDAgMS0uMjQtLjI0N0M1LjM1IDQuMDkxIDYuNzM3IDMuNSA4LjAwNSAzLjVjMS4zOTYgMCAyLjY3Mi43MyAyLjY3MiAyLjI0IDAgMS4wOC0uNjM1IDEuNTk0LTEuMjQ0IDIuMDU3LS43MzcuNTU5LTEuMDEuNzY4LTEuMDEgMS40ODZ2LjEwNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uODFhLjI1LjI1IDAgMCAxLS4yNS0uMjQ2bC0uMDA0LS4yMTdjLS4wMzgtLjkyNy40OTUtMS40OTggMS4xNjgtMS45ODcuNTktLjQ0NC45NjUtLjczNi45NjUtMS4zNzEgMC0uODI1LS42MjgtMS4xNjgtMS4zMTQtMS4xNjgtLjgwMyAwLTEuMjUzLjQ3OC0xLjM0MiAxLjEzNC0uMDE4LjEzNy0uMTI4LjI1LS4yNjYuMjVoLS44MjV6bTIuMzI1IDYuNDQzYy0uNTg0IDAtMS4wMDktLjM5NC0xLjAwOS0uOTI3IDAtLjU1Mi40MjUtLjk0IDEuMDEtLjk0LjYwOSAwIDEuMDI4LjM4OCAxLjAyOC45NCAwIC41MzMtLjQyLjkyNy0xLjAyOS45Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUXVlc3Rpb25EaWFtb25kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuOTUuNDM1Yy41OC0uNTggMS41Mi0uNTggMi4xIDBsNi41MTUgNi41MTZjLjU4LjU4LjU4IDEuNTE5IDAgMi4wOThMOS4wNSAxNS41NjVjLS41OC41OC0xLjUxOS41OC0yLjA5OCAwTC40MzUgOS4wNWExLjQ4MiAxLjQ4MiAwIDAgMSAwLTIuMDk4TDYuOTUuNDM1em0xLjQuN2EuNDk1LjQ5NSAwIDAgMC0uNyAwTDEuMTM0IDcuNjVhLjQ5NS40OTUgMCAwIDAgMCAuN2w2LjUxNiA2LjUxNmEuNDk1LjQ5NSAwIDAgMCAuNyAwbDYuNTE2LTYuNTE2YS40OTUuNDk1IDAgMCAwIDAtLjdMOC4zNSAxLjEzNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjI1NSA1Ljc4NmEuMjM3LjIzNyAwIDAgMCAuMjQxLjI0N2guODI1Yy4xMzggMCAuMjQ4LS4xMTMuMjY2LS4yNS4wOS0uNjU2LjU0LTEuMTM0IDEuMzQyLTEuMTM0LjY4NiAwIDEuMzE0LjM0MyAxLjMxNCAxLjE2OCAwIC42MzUtLjM3NC45MjctLjk2NSAxLjM3MS0uNjczLjQ4OS0xLjIwNiAxLjA2LTEuMTY4IDEuOTg3bC4wMDMuMjE3YS4yNS4yNSAwIDAgMCAuMjUuMjQ2aC44MTFhLjI1LjI1IDAgMCAwIC4yNS0uMjV2LS4xMDVjMC0uNzE4LjI3My0uOTI3IDEuMDEtMS40ODYuNjA5LS40NjMgMS4yNDQtLjk3NyAxLjI0NC0yLjA1NiAwLTEuNTExLTEuMjc2LTIuMjQxLTIuNjczLTIuMjQxLTEuMjY3IDAtMi42NTUuNTktMi43NSAyLjI4NnptMS41NTcgNS43NjNjMCAuNTMzLjQyNS45MjcgMS4wMS45MjcuNjA5IDAgMS4wMjgtLjM5NCAxLjAyOC0uOTI3IDAtLjU1Mi0uNDItLjk0LTEuMDI5LS45NC0uNTg0IDAtMS4wMDkuMzg4LTEuMDA5Ljk0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1F1ZXN0aW9uTGcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyA0LjA3NWEuNDIzLjQyMyAwIDAgMCAuNDMuNDRINC45Yy4yNDcgMCAuNDQyLS4yLjQ3NS0uNDQ1LjE1OS0xLjE3Ljk2Mi0yLjAyMiAyLjM5My0yLjAyMiAxLjIyMiAwIDIuMzQyLjYxMSAyLjM0MiAyLjA4MiAwIDEuMTMyLS42NjggMS42NTItMS43MiAyLjQ0NC0xLjIuODcyLTIuMTUgMS44OS0yLjA4MiAzLjU0MmwuMDA1LjM4NmMuMDAzLjI0NC4yMDIuNDQuNDQ2LjQ0aDEuNDQ1Yy4yNDcgMCAuNDQ2LS4yLjQ0Ni0uNDQ2di0uMTg4YzAtMS4yNzguNDg3LTEuNjUyIDEuOC0yLjY0NyAxLjA4Ni0uODI2IDIuMjE3LTEuNzQzIDIuMjE3LTMuNjY3QzEyLjY2NyAxLjMwMSAxMC4zOTMgMCA3LjkwMyAwIDUuNjQ1IDAgMy4xNyAxLjA1MyAzLjAwMSA0LjA3NXptMi43NzYgMTAuMjczYzAgLjk1Ljc1OCAxLjY1MiAxLjggMS42NTIgMS4wODUgMCAxLjgzMi0uNzAyIDEuODMyLTEuNjUyIDAtLjk4NS0uNzQ3LTEuNjc1LTEuODMzLTEuNjc1LTEuMDQgMC0xLjc5OS42OS0xLjc5OSAxLjY3NXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNRdWVzdGlvbk9jdGFnb25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQ2LjE0NkEuNS41IDAgMCAwIDExLjEwNyAwSDQuODkzYS41LjUgMCAwIDAtLjM1My4xNDZMLjE0NiA0LjU0QS41LjUgMCAwIDAgMCA0Ljg5M3Y2LjIxNGEuNS41IDAgMCAwIC4xNDYuMzUzbDQuMzk0IDQuMzk0YS41LjUgMCAwIDAgLjM1My4xNDZoNi4yMTRhLjUuNSAwIDAgMCAuMzUzLS4xNDZsNC4zOTQtNC4zOTRhLjUuNSAwIDAgMCAuMTQ2LS4zNTNWNC44OTNhLjUuNSAwIDAgMC0uMTQ2LS4zNTNMMTEuNDYuMTQ2ek01LjQ5NiA2LjAzM2EuMjM3LjIzNyAwIDAgMS0uMjQtLjI0N0M1LjM1IDQuMDkxIDYuNzM3IDMuNSA4LjAwNSAzLjVjMS4zOTYgMCAyLjY3Mi43MyAyLjY3MiAyLjI0IDAgMS4wOC0uNjM1IDEuNTk0LTEuMjQ0IDIuMDU3LS43MzcuNTU5LTEuMDEuNzY4LTEuMDEgMS40ODZ2LjEwNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uODFhLjI1LjI1IDAgMCAxLS4yNS0uMjQ2bC0uMDA0LS4yMTdjLS4wMzgtLjkyNy40OTUtMS40OTggMS4xNjgtMS45ODcuNTktLjQ0NC45NjUtLjczNi45NjUtMS4zNzEgMC0uODI1LS42MjgtMS4xNjgtMS4zMTQtMS4xNjgtLjgwMyAwLTEuMjUzLjQ3OC0xLjM0MiAxLjEzNC0uMDE4LjEzNy0uMTI4LjI1LS4yNjYuMjVoLS44MjV6bTIuMzI1IDYuNDQzYy0uNTg0IDAtMS4wMDktLjM5NC0xLjAwOS0uOTI3IDAtLjU1Mi40MjUtLjk0IDEuMDEtLjk0LjYwOSAwIDEuMDI4LjM4OCAxLjAyOC45NCAwIC41MzMtLjQyLjkyNy0xLjAyOS45Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUXVlc3Rpb25PY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTQuMTQ2QS41LjUgMCAwIDEgNC44OTMgMGg2LjIxNGEuNS41IDAgMCAxIC4zNTMuMTQ2bDQuMzk0IDQuMzk0YS41LjUgMCAwIDEgLjE0Ni4zNTN2Ni4yMTRhLjUuNSAwIDAgMS0uMTQ2LjM1M2wtNC4zOTQgNC4zOTRhLjUuNSAwIDAgMS0uMzUzLjE0Nkg0Ljg5M2EuNS41IDAgMCAxLS4zNTMtLjE0NkwuMTQ2IDExLjQ2QS41LjUgMCAwIDEgMCAxMS4xMDdWNC44OTNhLjUuNSAwIDAgMSAuMTQ2LS4zNTNMNC41NC4xNDZ6TTUuMSAxIDEgNS4xdjUuOEw1LjEgMTVoNS44bDQuMS00LjFWNS4xTDEwLjkgMUg1LjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4yNTUgNS43ODZhLjIzNy4yMzcgMCAwIDAgLjI0MS4yNDdoLjgyNWMuMTM4IDAgLjI0OC0uMTEzLjI2Ni0uMjUuMDktLjY1Ni41NC0xLjEzNCAxLjM0Mi0xLjEzNC42ODYgMCAxLjMxNC4zNDMgMS4zMTQgMS4xNjggMCAuNjM1LS4zNzQuOTI3LS45NjUgMS4zNzEtLjY3My40ODktMS4yMDYgMS4wNi0xLjE2OCAxLjk4N2wuMDAzLjIxN2EuMjUuMjUgMCAwIDAgLjI1LjI0NmguODExYS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uMTA1YzAtLjcxOC4yNzMtLjkyNyAxLjAxLTEuNDg2LjYwOS0uNDYzIDEuMjQ0LS45NzcgMS4yNDQtMi4wNTYgMC0xLjUxMS0xLjI3Ni0yLjI0MS0yLjY3My0yLjI0MS0xLjI2NyAwLTIuNjU1LjU5LTIuNzUgMi4yODZ6bTEuNTU3IDUuNzYzYzAgLjUzMy40MjUuOTI3IDEuMDEuOTI3LjYwOSAwIDEuMDI4LS4zOTQgMS4wMjgtLjkyNyAwLS41NTItLjQyLS45NC0xLjAyOS0uOTQtLjU4NCAwLTEuMDA5LjM4OC0xLjAwOS45NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNRdWVzdGlvblNxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyem0zLjQ5NiA2LjAzM2EuMjM3LjIzNyAwIDAgMS0uMjQtLjI0N0M1LjM1IDQuMDkxIDYuNzM3IDMuNSA4LjAwNSAzLjVjMS4zOTYgMCAyLjY3Mi43MyAyLjY3MiAyLjI0IDAgMS4wOC0uNjM1IDEuNTk0LTEuMjQ0IDIuMDU3LS43MzcuNTU5LTEuMDEuNzY4LTEuMDEgMS40ODZ2LjEwNWEuMjUuMjUgMCAwIDEtLjI1LjI1aC0uODFhLjI1LjI1IDAgMCAxLS4yNS0uMjQ2bC0uMDA0LS4yMTdjLS4wMzgtLjkyNy40OTUtMS40OTggMS4xNjgtMS45ODcuNTktLjQ0NC45NjUtLjczNi45NjUtMS4zNzEgMC0uODI1LS42MjgtMS4xNjgtMS4zMTQtMS4xNjgtLjgwMyAwLTEuMjUzLjQ3OC0xLjM0MiAxLjEzNC0uMDE4LjEzNy0uMTI4LjI1LS4yNjYuMjVoLS44MjV6bTIuMzI1IDYuNDQzYy0uNTg0IDAtMS4wMDktLjM5NC0xLjAwOS0uOTI3IDAtLjU1Mi40MjUtLjk0IDEuMDEtLjk0LjYwOSAwIDEuMDI4LjM4OCAxLjAyOC45NCAwIC41MzMtLjQyLjkyNy0xLjAyOS45Mjd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUXVlc3Rpb25TcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMjU1IDUuNzg2YS4yMzcuMjM3IDAgMCAwIC4yNDEuMjQ3aC44MjVjLjEzOCAwIC4yNDgtLjExMy4yNjYtLjI1LjA5LS42NTYuNTQtMS4xMzQgMS4zNDItMS4xMzQuNjg2IDAgMS4zMTQuMzQzIDEuMzE0IDEuMTY4IDAgLjYzNS0uMzc0LjkyNy0uOTY1IDEuMzcxLS42NzMuNDg5LTEuMjA2IDEuMDYtMS4xNjggMS45ODdsLjAwMy4yMTdhLjI1LjI1IDAgMCAwIC4yNS4yNDZoLjgxMWEuMjUuMjUgMCAwIDAgLjI1LS4yNXYtLjEwNWMwLS43MTguMjczLS45MjcgMS4wMS0xLjQ4Ni42MDktLjQ2MyAxLjI0NC0uOTc3IDEuMjQ0LTIuMDU2IDAtMS41MTEtMS4yNzYtMi4yNDEtMi42NzMtMi4yNDEtMS4yNjcgMC0yLjY1NS41OS0yLjc1IDIuMjg2em0xLjU1NyA1Ljc2M2MwIC41MzMuNDI1LjkyNyAxLjAxLjkyNy42MDkgMCAxLjAyOC0uMzk0IDEuMDI4LS45MjcgMC0uNTUyLS40Mi0uOTQtMS4wMjktLjk0LS41ODQgMC0xLjAwOS4zODgtMS4wMDkuOTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUXVlc3Rpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4yNTUgNS43ODZhLjIzNy4yMzcgMCAwIDAgLjI0MS4yNDdoLjgyNWMuMTM4IDAgLjI0OC0uMTEzLjI2Ni0uMjUuMDktLjY1Ni41NC0xLjEzNCAxLjM0Mi0xLjEzNC42ODYgMCAxLjMxNC4zNDMgMS4zMTQgMS4xNjggMCAuNjM1LS4zNzQuOTI3LS45NjUgMS4zNzEtLjY3My40ODktMS4yMDYgMS4wNi0xLjE2OCAxLjk4N2wuMDAzLjIxN2EuMjUuMjUgMCAwIDAgLjI1LjI0NmguODExYS4yNS4yNSAwIDAgMCAuMjUtLjI1di0uMTA1YzAtLjcxOC4yNzMtLjkyNyAxLjAxLTEuNDg2LjYwOS0uNDYzIDEuMjQ0LS45NzcgMS4yNDQtMi4wNTYgMC0xLjUxMS0xLjI3Ni0yLjI0MS0yLjY3My0yLjI0MS0xLjI2NyAwLTIuNjU1LjU5LTIuNzUgMi4yODZ6bTEuNTU3IDUuNzYzYzAgLjUzMy40MjUuOTI3IDEuMDEuOTI3LjYwOSAwIDEuMDI4LS4zOTQgMS4wMjgtLjkyNyAwLS41NTItLjQyLS45NC0xLjAyOS0uOTQtLjU4NCAwLTEuMDA5LjM4OC0xLjAwOS45NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSYWluYm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNC41YTcgNyAwIDAgMC03IDcgLjUuNSAwIDAgMS0xIDAgOCA4IDAgMSAxIDE2IDAgLjUuNSAwIDAgMS0xIDAgNyA3IDAgMCAwLTctN3ptMCAyYTUgNSAwIDAgMC01IDUgLjUuNSAwIDAgMS0xIDAgNiA2IDAgMSAxIDEyIDAgLjUuNSAwIDAgMS0xIDAgNSA1IDAgMCAwLTUtNXptMCAyYTMgMyAwIDAgMC0zIDMgLjUuNSAwIDAgMS0xIDAgNCA0IDAgMSAxIDggMCAuNS41IDAgMCAxLTEgMCAzIDMgMCAwIDAtMy0zem0wIDJhMSAxIDAgMCAwLTEgMSAuNS41IDAgMCAxLTEgMCAyIDIgMCAxIDEgNCAwIC41LjUgMCAwIDEtMSAwIDEgMSAwIDAgMC0xLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjZWlwdEN1dG9mZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDQuNWEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDEgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMSAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAxIDEgMCAxaC02YS41LjUgMCAwIDEtLjUtLjV6bTAgMmEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41ek0xMS41IDRhLjUuNSAwIDAgMCAwIDFoMWEuNS41IDAgMCAwIDAtMWgtMXptMCAyYS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6bTAgMmEuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xem0wIDJhLjUuNSAwIDAgMCAwIDFoMWEuNS41IDAgMCAwIDAtMWgtMXptMCAyYS41LjUgMCAwIDAgMCAxaDFhLjUuNSAwIDAgMCAwLTFoLTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi4zNTQuNjQ2YS41LjUgMCAwIDAtLjgwMS4xM2wtLjUgMUEuNS41IDAgMCAwIDEgMnYxM0guNWEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMUgxNVYyYS41LjUgMCAwIDAtLjA1My0uMjI0bC0uNS0xYS41LjUgMCAwIDAtLjgtLjEzTDEzIDEuMjkzbC0uNjQ2LS42NDdhLjUuNSAwIDAgMC0uNzA4IDBMMTEgMS4yOTNsLS42NDYtLjY0N2EuNS41IDAgMCAwLS43MDggMEw5IDEuMjkzIDguMzU0LjY0NmEuNS41IDAgMCAwLS43MDggMEw3IDEuMjkzIDYuMzU0LjY0NmEuNS41IDAgMCAwLS43MDggMEw1IDEuMjkzIDQuMzU0LjY0NmEuNS41IDAgMCAwLS43MDggMEwzIDEuMjkzIDIuMzU0LjY0NnptLS4yMTcgMS4xOTguNTEuNTFhLjUuNSAwIDAgMCAuNzA3IDBMNCAxLjcwN2wuNjQ2LjY0N2EuNS41IDAgMCAwIC43MDggMEw2IDEuNzA3bC42NDYuNjQ3YS41LjUgMCAwIDAgLjcwOCAwTDggMS43MDdsLjY0Ni42NDdhLjUuNSAwIDAgMCAuNzA4IDBMMTAgMS43MDdsLjY0Ni42NDdhLjUuNSAwIDAgMCAuNzA4IDBMMTIgMS43MDdsLjY0Ni42NDdhLjUuNSAwIDAgMCAuNzA4IDBsLjUwOS0uNTEuMTM3LjI3NFYxNUgyVjIuMTE4bC4xMzctLjI3NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZWNlaXB0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuOTIuNTA2YS41LjUgMCAwIDEgLjQzNC4xNEwzIDEuMjkzbC42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMEw1IDEuMjkzbC42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMEw3IDEuMjkzbC42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMEw5IDEuMjkzbC42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMGwuNjQ2LjY0Ny42NDYtLjY0N2EuNS41IDAgMCAxIC43MDggMGwuNjQ2LjY0Ny42NDYtLjY0N2EuNS41IDAgMCAxIC44MDEuMTNsLjUgMUEuNS41IDAgMCAxIDE1IDJ2MTJhLjUuNSAwIDAgMS0uMDUzLjIyNGwtLjUgMWEuNS41IDAgMCAxLS44LjEzTDEzIDE0LjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMMTEgMTQuNzA3bC0uNjQ2LjY0N2EuNS41IDAgMCAxLS43MDggMEw5IDE0LjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMNyAxNC43MDdsLS42NDYuNjQ3YS41LjUgMCAwIDEtLjcwOCAwTDUgMTQuNzA3bC0uNjQ2LjY0N2EuNS41IDAgMCAxLS43MDggMEwzIDE0LjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uODAxLS4xM2wtLjUtMUEuNS41IDAgMCAxIDEgMTRWMmEuNS41IDAgMCAxIC4wNTMtLjIyNGwuNS0xYS41LjUgMCAwIDEgLjM2Ny0uMjd6bS4yMTcgMS4zMzhMMiAyLjExOHYxMS43NjRsLjEzNy4yNzQuNTEtLjUxYS41LjUgMCAwIDEgLjcwNyAwbC42NDYuNjQ3LjY0Ni0uNjQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ2LjY0Ni0uNjQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ2LjY0Ni0uNjQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ2LjY0Ni0uNjQ2YS41LjUgMCAwIDEgLjcwOCAwbC42NDYuNjQ2LjY0Ni0uNjQ2YS41LjUgMCAwIDEgLjcwOCAwbC41MDkuNTA5LjEzNy0uMjc0VjIuMTE4bC0uMTM3LS4yNzQtLjUxLjUxYS41LjUgMCAwIDEtLjcwNyAwTDEyIDEuNzA3bC0uNjQ2LjY0N2EuNS41IDAgMCAxLS43MDggMEwxMCAxLjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMOCAxLjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMNiAxLjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBMNCAxLjcwN2wtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA4IDBsLS41MDktLjUxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNC41YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMSAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAxIDEgMCAxaC02YS41LjUgMCAwIDEtLjUtLjV6bTAgMmEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDEgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41em04LTZhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6bTAgMmEuNS41IDAgMCAxIC41LS41aDFhLjUuNSAwIDAgMSAwIDFoLTFhLjUuNSAwIDAgMS0uNS0uNXptMCAyYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIDAgMWgtMWEuNS41IDAgMCAxLS41LS41em0wIDJhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgMCAxaC0xYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjZXB0aW9uMCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEzLjVhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6bTQgMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMS0uNS0uNXptNCAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41em00IDBhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjZXB0aW9uMSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExLjVhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di0yem00IDJhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6bTQgMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJhLjUuNSAwIDAgMS0uNS0uNXptNCAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlY2VwdGlvbjIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAxMS41YS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMS0uNS0uNXYtMnptNC0zYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIC41LjV2NWEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMS0uNS0uNXYtNXptNCA1YS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41em00IDBhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjZXB0aW9uMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExLjVhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di0yem00LTNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXY1YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di01em00LTNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXY4YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di04em00IDhhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjZXB0aW9uNCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDExLjVhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di0yem00LTNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXY1YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di01em00LTNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXY4YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxLS41LS41di04em00LTNhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgLjUuNXYxMWEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMS0uNS0uNXYtMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjb3JkQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTgtMWEzIDMgMCAxIDAgMC02IDMgMyAwIDAgMCAwIDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjb3JkQnRuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTFhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY0em0xNSAwYTEgMSAwIDAgMC0xLTFIMmExIDEgMCAwIDAtMSAxdjhhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVjb3JkQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6bS04IDNhMyAzIDAgMSAwIDAtNiAzIDMgMCAwIDAgMCA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlY29yZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDhhMyAzIDAgMSAxLTYgMCAzIDMgMCAwIDEgNiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlY29yZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTNBNSA1IDAgMSAwIDggM2E1IDUgMCAwIDAgMCAxMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZWNvcmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMmE0IDQgMCAxIDEgMC04IDQgNCAwIDAgMSAwIDh6bTAgMUE1IDUgMCAxIDAgOCAzYTUgNSAwIDAgMCAwIDEwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlY29yZDJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwIDhhMiAyIDAgMSAxLTQgMCAyIDIgMCAwIDEgNCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTNBNSA1IDAgMSAwIDggM2E1IDUgMCAwIDAgMCAxMHptMC0yYTMgMyAwIDEgMSAwLTYgMyAzIDAgMCAxIDAgNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZWNvcmQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTJhNCA0IDAgMSAxIDAtOCA0IDQgMCAwIDEgMCA4em0wIDFBNSA1IDAgMSAwIDggM2E1IDUgMCAwIDAgMCAxMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMCA4YTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSZWN5Y2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMzAyIDEuMjU2YTEuNSAxLjUgMCAwIDAtMi42MDQgMGwtMS43MDQgMi45OGEuNS41IDAgMCAwIC44NjkuNDk3bDEuNzAzLTIuOTgxYS41LjUgMCAwIDEgLjg2OCAwbDIuNTQgNC40NDQtMS4yNTYtLjMzN2EuNS41IDAgMSAwLS4yNi45NjZsMi40MTUuNjQ3YS41LjUgMCAwIDAgLjYxMy0uMzUzbC42NDctMi40MTVhLjUuNSAwIDEgMC0uOTY2LS4yNTlsLS4zMzMgMS4yNDItMi41MzItNC40MzF6TTIuOTczIDcuNzczbC0xLjI1NS4zMzdhLjUuNSAwIDEgMS0uMjYtLjk2NmwyLjQxNi0uNjQ3YS41LjUgMCAwIDEgLjYxMi4zNTNsLjY0NyAyLjQxNWEuNS41IDAgMCAxLS45NjYuMjU5bC0uMzMzLTEuMjQyLTIuNTQ1IDQuNDU0YS41LjUgMCAwIDAgLjQzNC43NDhINWEuNS41IDAgMCAxIDAgMUgxLjcyM0ExLjUgMS41IDAgMCAxIC40MjEgMTIuMjRsMi41NTItNC40Njd6bTEwLjg5IDEuNDYzYS41LjUgMCAxIDAtLjg2OC40OTZsMS43MTYgMy4wMDRhLjUuNSAwIDAgMS0uNDM0Ljc0OGgtNS41N2wuNjQ3LS42NDZhLjUuNSAwIDEgMC0uNzA4LS43MDdsLTEuNSAxLjVhLjQ5OC40OTggMCAwIDAgMCAuNzA3bDEuNSAxLjVhLjUuNSAwIDEgMCAuNzA4LS43MDdsLS42NDctLjY0N2g1LjU3YTEuNSAxLjUgMCAwIDAgMS4zMDItMi4yNDRsLTEuNzE2LTMuMDA0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlZGRpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjE2NyA4YS44MzEuODMxIDAgMCAwLS44My44M2MwIC40NTkuMzcyLjg0LjgzLjgzMWEuODMxLjgzMSAwIDAgMCAwLTEuNjYxem0xLjg0MyAzLjY0N2MuMzE1IDAgMS40MDMtLjAzOCAxLjk3Ni0uNjExYS4yMzIuMjMyIDAgMCAwIDAtLjMwNi4yMTMuMjEzIDAgMCAwLS4zMDYgMGMtLjM1My4zNjMtMS4xMjYuNDg3LTEuNjcuNDg3LS41NDUgMC0xLjMwOC0uMTI0LTEuNjcxLS40ODdhLjIxMy4yMTMgMCAwIDAtLjMwNiAwIC4yMTMuMjEzIDAgMCAwIDAgLjMwNmMuNTY0LjU2MyAxLjY1Mi42MSAxLjk3Ny42MXptLjk5Mi0yLjgwN2MwIC40NTguMzczLjgzLjgzMS44My40NTggMCAuODMtLjM4MS44My0uODNhLjgzMS44MzEgMCAwIDAtMS42NiAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTMuODI4LTEuMTY1Yy0uMzE1IDAtLjYwMi4xMjQtLjgxMi4zMjUtLjgwMS0uNTczLTEuOS0uOTQ1LTMuMTIxLS45OTNsLjUzNC0yLjUwMSAxLjczOC4zNzJhLjgzLjgzIDAgMSAwIC44My0uODY5LjgzLjgzIDAgMCAwLS43NDQuNDY4bC0xLjkzOC0uNDFhLjIwMy4yMDMgMCAwIDAtLjE1My4wMjguMTg2LjE4NiAwIDAgMC0uMDg2LjEzNGwtLjU5MiAyLjc4OGMtMS4yNC4wMzgtMi4zNTguNDEtMy4xNy45OTItLjIxLS4yLS40OTYtLjMyNC0uODEtLjMyNGExLjE2MyAxLjE2MyAwIDAgMC0uNDc4IDIuMjI0Yy0uMDIuMTE1LS4wMjkuMjMtLjAyOS4zNTMgMCAxLjc5NSAyLjA5MSAzLjI1NiA0LjY2OSAzLjI1NiAyLjU3NyAwIDQuNjY4LTEuNDUxIDQuNjY4LTMuMjU2IDAtLjExNC0uMDEtLjIzOC0uMDI5LS4zNTMuNDAxLS4xODEuNjg4LS41OTIuNjg4LTEuMDY5IDAtLjY1LS41MjUtMS4xNjUtMS4xNjUtMS4xNjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVwbHlBbGxGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDIxIDExLjkgMy40NTMgOC42MmEuNzE5LjcxOSAwIDAgMSAwLTEuMjM4TDguMDIxIDQuMWEuNzE2LjcxNiAwIDAgMSAxLjA3OS42MTlWNmMxLjUgMCA2IDAgNyA4LTIuNS00LjUtNy00LTctNHYxLjI4MWMwIC41Ni0uNjA2Ljg5OC0xLjA3OS42MnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjIzMiA0LjI5M2EuNS41IDAgMCAxLS4xMDYuN0wxLjExNCA3Ljk0NWEuNS41IDAgMCAxLS4wNDIuMDI4LjE0Ny4xNDcgMCAwIDAgMCAuMjUyLjUwMy41MDMgMCAwIDEgLjA0Mi4wMjhsNC4wMTIgMi45NTRhLjUuNSAwIDEgMS0uNTkzLjgwNUwuNTM5IDkuMDczYTEuMTQ3IDEuMTQ3IDAgMCAxIDAtMS45NDZsMy45OTQtMi45NGEuNS41IDAgMCAxIC42OTkuMTA2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1JlcGx5QWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDk4IDUuMDEzYS4xNDQuMTQ0IDAgMCAxIC4yMDIuMTM0VjYuM2EuNS41IDAgMCAwIC41LjVjLjY2NyAwIDIuMDEzLjAwNSAzLjMuODIyLjk4NC42MjQgMS45OSAxLjc2IDIuNTk1IDMuODc2LTEuMDItLjk4My0yLjE4NS0xLjUxNi0zLjIwNS0xLjc5OWE4Ljc0IDguNzQgMCAwIDAtMS45MjEtLjMwNiA3LjQwNCA3LjQwNCAwIDAgMC0uNzk4LjAwOGgtLjAxM2wtLjAwNS4wMDFoLS4wMDFMOC44IDkuOWwtLjA1LS40OThhLjUuNSAwIDAgMC0uNDUuNDk4djEuMTUzYzAgLjEwOC0uMTEuMTc2LS4yMDIuMTM0TDQuMTE0IDguMjU0YS41MDIuNTAyIDAgMCAwLS4wNDItLjAyOC4xNDcuMTQ3IDAgMCAxIDAtLjI1Mi40OTcuNDk3IDAgMCAwIC4wNDItLjAyOGwzLjk4NC0yLjkzM3pNOS4zIDEwLjM4NmMuMDY4IDAgLjE0My4wMDMuMjIzLjAwNi40MzQuMDIgMS4wMzQuMDg2IDEuNy4yNzEgMS4zMjYuMzY4IDIuODk2IDEuMjAyIDMuOTQgMy4wOGEuNS41IDAgMCAwIC45MzMtLjMwNWMtLjQ2NC0zLjcxLTEuODg2LTUuNjYyLTMuNDYtNi42Ni0xLjI0NS0uNzktMi41MjctLjk0Mi0zLjMzNi0uOTcxdi0uNjZhMS4xNDQgMS4xNDQgMCAwIDAtMS43NjctLjk2bC0zLjk5NCAyLjk0YTEuMTQ3IDEuMTQ3IDAgMCAwIDAgMS45NDZsMy45OTQgMi45NGExLjE0NCAxLjE0NCAwIDAgMCAxLjc2Ny0uOTZ2LS42Njd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4yMzIgNC4yOTNhLjUuNSAwIDAgMC0uNy0uMTA2TC41NCA3LjEyN2ExLjE0NyAxLjE0NyAwIDAgMCAwIDEuOTQ2bDMuOTk0IDIuOTRhLjUuNSAwIDEgMCAuNTkzLS44MDVMMS4xMTQgOC4yNTRhLjUwMy41MDMgMCAwIDAtLjA0Mi0uMDI4LjE0Ny4xNDcgMCAwIDEgMC0uMjUyLjUuNSAwIDAgMCAuMDQyLS4wMjhsNC4wMTItMi45NTRhLjUuNSAwIDAgMCAuMTA2LS42OTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVwbHlGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuOTIxIDExLjkgMS4zNTMgOC42MmEuNzE5LjcxOSAwIDAgMSAwLTEuMjM4TDUuOTIxIDQuMUEuNzE2LjcxNiAwIDAgMSA3IDQuNzE5VjZjMS41IDAgNiAwIDcgOC0yLjUtNC41LTctNC03LTR2MS4yODFjMCAuNTYtLjYwNi44OTgtMS4wNzkuNjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzUmVwbHkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41OTggNS4wMTNhLjE0NC4xNDQgMCAwIDEgLjIwMi4xMzRWNi4zYS41LjUgMCAwIDAgLjUuNWMuNjY3IDAgMi4wMTMuMDA1IDMuMy44MjIuOTg0LjYyNCAxLjk5IDEuNzYgMi41OTUgMy44NzYtMS4wMi0uOTgzLTIuMTg1LTEuNTE2LTMuMjA1LTEuNzk5YTguNzQgOC43NCAwIDAgMC0xLjkyMS0uMzA2IDcuNDA0IDcuNDA0IDAgMCAwLS43OTguMDA4aC0uMDEzbC0uMDA1LjAwMWgtLjAwMUw3LjMgOS45bC0uMDUtLjQ5OGEuNS41IDAgMCAwLS40NS40OTh2MS4xNTNjMCAuMTA4LS4xMS4xNzYtLjIwMi4xMzRMMi42MTQgOC4yNTRhLjUwMy41MDMgMCAwIDAtLjA0Mi0uMDI4LjE0Ny4xNDcgMCAwIDEgMC0uMjUyLjQ5OS40OTkgMCAwIDAgLjA0Mi0uMDI4bDMuOTg0LTIuOTMzek03LjggMTAuMzg2Yy4wNjggMCAuMTQzLjAwMy4yMjMuMDA2LjQzNC4wMiAxLjAzNC4wODYgMS43LjI3MSAxLjMyNi4zNjggMi44OTYgMS4yMDIgMy45NCAzLjA4YS41LjUgMCAwIDAgLjkzMy0uMzA1Yy0uNDY0LTMuNzEtMS44ODYtNS42NjItMy40Ni02LjY2LTEuMjQ1LS43OS0yLjUyNy0uOTQyLTMuMzM2LS45NzF2LS42NmExLjE0NCAxLjE0NCAwIDAgMC0xLjc2Ny0uOTZsLTMuOTk0IDIuOTRhMS4xNDcgMS4xNDcgMCAwIDAgMCAxLjk0NmwzLjk5NCAyLjk0YTEuMTQ0IDEuMTQ0IDAgMCAwIDEuNzY3LS45NnYtLjY2N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSc3NGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMS41IDIuNWM1LjUyMyAwIDEwIDQuNDc3IDEwIDEwYTEgMSAwIDEgMS0yIDAgOCA4IDAgMCAwLTgtOCAxIDEgMCAwIDEgMC0yem0wIDRhNiA2IDAgMCAxIDYgNiAxIDEgMCAxIDEtMiAwIDQgNCAwIDAgMC00LTQgMSAxIDAgMCAxIDAtMnptLjUgN2ExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSc3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAxMmExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptLTMtOC41YTEgMSAwIDAgMSAxLTFjNS41MjMgMCAxMCA0LjQ3NyAxMCAxMGExIDEgMCAxIDEtMiAwIDggOCAwIDAgMC04LTggMSAxIDAgMCAxLTEtMXptMCA0YTEgMSAwIDAgMSAxLTEgNiA2IDAgMCAxIDYgNiAxIDEgMCAxIDEtMiAwIDQgNCAwIDAgMC00LTQgMSAxIDAgMCAxLTEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNSdWxlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAwYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWg1di0xSDJ2LTFoNHYtMUg0di0xaDJ2LTFIMnYtMWg0VjlINFY4aDJWN0gyVjZoNFYyaDF2NGgxVjRoMXYyaDFWMmgxdjRoMVY0aDF2MmgxVjJoMXY0aDFWMWExIDEgMCAwIDAtMS0xSDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2FmZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS43NzggOS40MTRBMiAyIDAgMSAxIDYuOTUgNi41ODZhMiAyIDAgMCAxIDIuODI4IDIuODI4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAwQTEuNSAxLjUgMCAwIDAgMSAxLjVWM0guNWEuNS41IDAgMCAwIDAgMUgxdjMuNUguNWEuNS41IDAgMCAwIDAgMUgxVjEySC41YS41LjUgMCAwIDAgMCAxSDF2MS41QTEuNSAxLjUgMCAwIDAgMi41IDE2aDEyYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMTNBMS41IDEuNSAwIDAgMCAxNC41IDBoLTEyem0zLjAzNiA0LjQ2NCAxLjA5IDEuMDlhMy4wMDMgMy4wMDMgMCAwIDEgMy40NzYgMGwxLjA5LTEuMDlhLjUuNSAwIDEgMSAuNzA3LjcwOGwtMS4wOSAxLjA5Yy43NCAxLjAzNy43NCAyLjQ0IDAgMy40NzZsMS4wOSAxLjA5YS41LjUgMCAxIDEtLjcwNy43MDhsLTEuMDktMS4wOWEzLjAwMiAzLjAwMiAwIDAgMS0zLjQ3NiAwbC0xLjA5IDEuMDlhLjUuNSAwIDEgMS0uNzA4LS43MDhsMS4wOS0xLjA5YTMuMDAzIDMuMDAzIDAgMCAxIDAtMy40NzZsLTEuMDktMS4wOWEuNS41IDAgMSAxIC43MDgtLjcwOHpNMTQgNi41djNhLjUuNSAwIDAgMS0xIDB2LTNhLjUuNSAwIDAgMSAxIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2FmZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDEuNUExLjUgMS41IDAgMCAxIDIuNSAwaDEyQTEuNSAxLjUgMCAwIDEgMTYgMS41djEzYTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtMTJBMS41IDEuNSAwIDAgMSAxIDE0LjVWMTNILjVhLjUuNSAwIDAgMSAwLTFIMVY4LjVILjVhLjUuNSAwIDAgMSAwLTFIMVY0SC41YS41LjUgMCAwIDEgMC0xSDFWMS41ek0yLjUgMWEuNS41IDAgMCAwLS41LjV2MTNhLjUuNSAwIDAgMCAuNS41aDEyYS41LjUgMCAwIDAgLjUtLjV2LTEzYS41LjUgMCAwIDAtLjUtLjVoLTEyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgNmEuNS41IDAgMCAxIC41LjV2M2EuNS41IDAgMCAxLTEgMHYtM2EuNS41IDAgMCAxIC41LS41ek00LjgyOCA0LjQ2NGEuNS41IDAgMCAxIC43MDggMGwxLjA5IDEuMDlhMy4wMDMgMy4wMDMgMCAwIDEgMy40NzYgMGwxLjA5LTEuMDlhLjUuNSAwIDEgMSAuNzA3LjcwOGwtMS4wOSAxLjA5Yy43NCAxLjAzNy43NCAyLjQ0IDAgMy40NzZsMS4wOSAxLjA5YS41LjUgMCAxIDEtLjcwNy43MDhsLTEuMDktMS4wOWEzLjAwMiAzLjAwMiAwIDAgMS0zLjQ3NiAwbC0xLjA5IDEuMDlhLjUuNSAwIDEgMS0uNzA4LS43MDhsMS4wOS0xLjA5YTMuMDAzIDMuMDAzIDAgMCAxIDAtMy40NzZsLTEuMDktMS4wOWEuNS41IDAgMCAxIDAtLjcwOHpNNi45NSA2LjU4NmEyIDIgMCAxIDAgMi44MjggMi44MjhBMiAyIDAgMCAwIDYuOTUgNi41ODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2FmZTJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNTYzIDhINS4wMzVhMy40ODIgMy40ODIgMCAwIDEgLjY2Mi0xLjU5NmwxLjA4IDEuMDhjLS4wOTQuMTYtLjE2Ny4zMzItLjIxNC41MTZ6bS45MjEtMS4yMjMtMS4wOC0xLjA4QTMuNDgyIDMuNDgyIDAgMCAxIDggNS4wMzV2MS41MjhjLS4xODQuMDQ3LS4zNTcuMTItLjUxNi4yMTR6TTkgNi41NjNWNS4wMzVhMy40ODIgMy40ODIgMCAwIDEgMS41OTYuNjYybC0xLjA4IDEuMDhBMS45ODggMS45ODggMCAwIDAgOSA2LjU2M3ptMS4yMjMuOTIxIDEuMDgtMS4wOGMuMzQzLjQ1OC41NzcgMS4wMDMuNjYyIDEuNTk2aC0xLjUyOGExLjk4OSAxLjk4OSAwIDAgMC0uMjE0LS41MTZ6TTEwLjQzNyA5aDEuNTI4YTMuNDgzIDMuNDgzIDAgMCAxLS42NjIgMS41OTZsLTEuMDgtMS4wOGMuMDk0LS4xNi4xNjctLjMzMi4yMTQtLjUxNnptLS45MjEgMS4yMjMgMS4wOCAxLjA4QTMuNDgzIDMuNDgzIDAgMCAxIDkgMTEuOTY1di0xLjUyOGMuMTg0LS4wNDcuMzU3LS4xMi41MTYtLjIxNHpNOCAxMC40Mzd2MS41MjhhMy40ODMgMy40ODMgMCAwIDEtMS41OTYtLjY2MmwxLjA4LTEuMDhjLjE2LjA5NC4zMzIuMTY3LjUxNi4yMTR6bS0xLjIyMy0uOTIxLTEuMDggMS4wOEEzLjQ4MiAzLjQ4MiAwIDAgMSA1LjAzNSA5aDEuNTI4Yy4wNDcuMTg0LjEyLjM1Ny4yMTQuNTE2ek03LjUgOC41YTEgMSAwIDEgMSAyIDAgMSAxIDAgMCAxLTIgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUgMUExLjUgMS41IDAgMCAwIDEgMi41VjNILjVhLjUuNSAwIDAgMCAwIDFIMXY0SC41YS41LjUgMCAwIDAgMCAxSDF2NEguNWEuNS41IDAgMCAwIDAgMUgxdi41QTEuNSAxLjUgMCAwIDAgMi41IDE2aDEyYTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMTJBMS41IDEuNSAwIDAgMCAxNC41IDFoLTEyem02IDNhNC41IDQuNSAwIDEgMSAwIDkgNC41IDQuNSAwIDAgMSAwLTl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2FmZTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyLjVBMS41IDEuNSAwIDAgMSAyLjUgMWgxMkExLjUgMS41IDAgMCAxIDE2IDIuNXYxMmExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEyQTEuNSAxLjUgMCAwIDEgMSAxNC41VjE0SC41YS41LjUgMCAwIDEgMC0xSDFWOUguNWEuNS41IDAgMCAxIDAtMUgxVjRILjVhLjUuNSAwIDAgMSAwLTFIMXYtLjV6TTIuNSAyYS41LjUgMCAwIDAtLjUuNXYxMmEuNS41IDAgMCAwIC41LjVoMTJhLjUuNSAwIDAgMCAuNS0uNXYtMTJhLjUuNSAwIDAgMC0uNS0uNWgtMTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wMzUgOGgxLjUyOGMuMDQ3LS4xODQuMTItLjM1Ny4yMTQtLjUxNmwtMS4wOC0xLjA4QTMuNDgyIDMuNDgyIDAgMCAwIDUuMDM1IDh6bTEuMzY5LTIuMzAzIDEuMDggMS4wOGMuMTYtLjA5NC4zMzItLjE2Ny41MTYtLjIxNFY1LjAzNWEzLjQ4MiAzLjQ4MiAwIDAgMC0xLjU5Ni42NjJ6TTkgNS4wMzV2MS41MjhjLjE4NC4wNDcuMzU3LjEyLjUxNi4yMTRsMS4wOC0xLjA4QTMuNDgyIDMuNDgyIDAgMCAwIDkgNS4wMzV6bTIuMzAzIDEuMzY5LTEuMDggMS4wOGMuMDk0LjE2LjE2Ny4zMzIuMjE0LjUxNmgxLjUyOGEzLjQ4MyAzLjQ4MyAwIDAgMC0uNjYyLTEuNTk2ek0xMS45NjUgOWgtMS41MjhjLS4wNDcuMTg0LS4xMi4zNTctLjIxNC41MTZsMS4wOCAxLjA4QTMuNDgzIDMuNDgzIDAgMCAwIDExLjk2NSA5em0tMS4zNjkgMi4zMDMtMS4wOC0xLjA4Yy0uMTYuMDk0LS4zMzIuMTY3LS41MTYuMjE0djEuNTI4YTMuNDgzIDMuNDgzIDAgMCAwIDEuNTk2LS42NjJ6TTggMTEuOTY1di0xLjUyOGExLjk4OSAxLjk4OSAwIDAgMS0uNTE2LS4yMTRsLTEuMDggMS4wOEEzLjQ4MyAzLjQ4MyAwIDAgMCA4IDExLjk2NXptLTIuMzAzLTEuMzY5IDEuMDgtMS4wOEExLjk4OCAxLjk4OCAwIDAgMSA2LjU2MyA5SDUuMDM1Yy4wODUuNTkzLjMxOSAxLjEzOC42NjIgMS41OTZ6TTQgOC41YTQuNSA0LjUgMCAxIDEgOSAwIDQuNSA0LjUgMCAwIDEtOSAwem00LjUtMWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2F2ZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEuNUExLjUgMS41IDAgMCAxIDEwIDBoNGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg2Yy0uMzE0LjQxOC0uNS45MzctLjUgMS41djcuNzkzTDQuODU0IDYuNjQ2YS41LjUgMCAxIDAtLjcwOC43MDhsMy41IDMuNWEuNS41IDAgMCAwIC43MDggMGwzLjUtMy41YS41LjUgMCAwIDAtLjcwOC0uNzA4TDguNSA5LjI5M1YxLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDkuNWExIDEgMCAwIDAtMSAxdjcuMjkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTMuNSAzLjVhLjUuNSAwIDAgMS0uNzA4IDBsLTMuNS0zLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMNy41IDkuMjkzVjJhMiAyIDAgMCAxIDItMkgxNGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmgyLjVhLjUuNSAwIDAgMSAwIDFIMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTYXZlMkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC41IDEuNUExLjUgMS41IDAgMCAxIDEwIDBoNGEyIDIgMCAwIDEgMiAydjEyYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJhMiAyIDAgMCAxIDItMmg2Yy0uMzE0LjQxOC0uNS45MzctLjUgMS41djZoLTJhLjUuNSAwIDAgMC0uMzU0Ljg1NGwyLjUgMi41YS41LjUgMCAwIDAgLjcwOCAwbDIuNS0yLjVBLjUuNSAwIDAgMCAxMC41IDcuNWgtMnYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTYXZlMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFhMSAxIDAgMCAwLTEgMXYxMmExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDkuNWExIDEgMCAwIDAtMSAxdjQuNWgyYS41LjUgMCAwIDEgLjM1NC44NTRsLTIuNSAyLjVhLjUuNSAwIDAgMS0uNzA4IDBsLTIuNS0yLjVBLjUuNSAwIDAgMSA1LjUgNi41aDJWMmEyIDIgMCAwIDEgMi0ySDE0YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yaDIuNWEuNS41IDAgMCAxIDAgMUgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NjaXNzb3JzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAzLjVjLS42MTQtLjg4NC0uMDc0LTEuOTYyLjg1OC0yLjVMOCA3LjIyNiAxMS42NDIgMWMuOTMyLjUzOCAxLjQ3MiAxLjYxNi44NTggMi41TDguODEgOC42MWwxLjU1NiAyLjY2MWEyLjUgMi41IDAgMSAxLS43OTQuNjM3TDggOS43M2wtMS41NzIgMi4xNzdhMi41IDIuNSAwIDEgMS0uNzk0LS42MzdMNy4xOSA4LjYxIDMuNSAzLjV6bTIuNSAxMGExLjUgMS41IDAgMSAwLTMgMCAxLjUgMS41IDAgMCAwIDMgMHptNyAwYTEuNSAxLjUgMCAxIDAtMyAwIDEuNSAxLjUgMCAwIDAgMyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NjcmV3ZHJpdmVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTAgMSAxLTEgMy4wODEgMi4yYTEgMSAwIDAgMSAuNDE5LjgxNXYuMDdhMSAxIDAgMCAwIC4yOTMuNzA4TDEwLjUgOS41bC45MTQtLjMwNWExIDEgMCAwIDEgMS4wMjMuMjQybDMuMzU2IDMuMzU2YTEgMSAwIDAgMSAwIDEuNDE0bC0xLjU4NiAxLjU4NmExIDEgMCAwIDEtMS40MTQgMGwtMy4zNTYtMy4zNTZhMSAxIDAgMCAxLS4yNDItMS4wMjNMOS41IDEwLjUgMy43OTMgNC43OTNhMSAxIDAgMCAwLS43MDctLjI5M2gtLjA3MWExIDEgMCAwIDEtLjgxNC0uNDE5TDAgMXptMTEuMzU0IDkuNjQ2YS41LjUgMCAwIDAtLjcwOC43MDhsMyAzYS41LjUgMCAwIDAgLjcwOC0uNzA4bC0zLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2RDYXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTIuNSAwSDUuOTE0YTEuNSAxLjUgMCAwIDAtMS4wNi40NEwyLjQzOSAyLjg1M0ExLjUgMS41IDAgMCAwIDIgMy45MTRWMTQuNUExLjUgMS41IDAgMCAwIDMuNSAxNmg5YTEuNSAxLjUgMCAwIDAgMS41LTEuNXYtMTNBMS41IDEuNSAwIDAgMCAxMi41IDB6bS03IDIuNzVhLjc1Ljc1IDAgMCAxIC43NS43NXYyYS43NS43NSAwIDAgMS0xLjUgMHYtMmEuNzUuNzUgMCAwIDEgLjc1LS43NXptMiAwYS43NS43NSAwIDAgMSAuNzUuNzV2MmEuNzUuNzUgMCAwIDEtMS41IDB2LTJhLjc1Ljc1IDAgMCAxIC43NS0uNzV6bTIuNzUuNzVhLjc1Ljc1IDAgMCAwLTEuNSAwdjJhLjc1Ljc1IDAgMCAwIDEuNSAwdi0yem0xLjI1LS43NWEuNzUuNzUgMCAwIDEgLjc1Ljc1djJhLjc1Ljc1IDAgMCAxLTEuNSAwdi0yYS43NS43NSAwIDAgMSAuNzUtLjc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NkQ2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjI1IDMuNWEuNzUuNzUgMCAwIDAtMS41IDB2MmEuNzUuNzUgMCAwIDAgMS41IDB2LTJ6bTIgMGEuNzUuNzUgMCAwIDAtMS41IDB2MmEuNzUuNzUgMCAwIDAgMS41IDB2LTJ6bTIgMGEuNzUuNzUgMCAwIDAtMS41IDB2MmEuNzUuNzUgMCAwIDAgMS41IDB2LTJ6bTIgMGEuNzUuNzUgMCAwIDAtMS41IDB2MmEuNzUuNzUgMCAwIDAgMS41IDB2LTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTUuOTE0IDBIMTIuNUExLjUgMS41IDAgMCAxIDE0IDEuNXYxM2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTlBMS41IDEuNSAwIDAgMSAyIDE0LjVWMy45MTRjMC0uMzk4LjE1OC0uNzguNDQtMS4wNkw0Ljg1My40MzlBMS41IDEuNSAwIDAgMSA1LjkxNCAwek0xMyAxLjVhLjUuNSAwIDAgMC0uNS0uNUg1LjkxNGEuNS41IDAgMCAwLS4zNTMuMTQ2TDMuMTQ2IDMuNTYxQS41LjUgMCAwIDAgMyAzLjkxNFYxNC41YS41LjUgMCAwIDAgLjUuNWg5YS41LjUgMCAwIDAgLjUtLjV2LTEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NlYXJjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS43NDIgMTAuMzQ0YTYuNSA2LjUgMCAxIDAtMS4zOTcgMS4zOThoLS4wMDFjLjAzLjA0LjA2Mi4wNzguMDk4LjExNWwzLjg1IDMuODVhMSAxIDAgMCAwIDEuNDE1LTEuNDE0bC0zLjg1LTMuODVhMS4wMDcgMS4wMDcgMCAwIDAtLjExNS0uMXpNMTIgNi41YTUuNSA1LjUgMCAxIDEtMTEgMCA1LjUgNS41IDAgMCAxIDExIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2VnbWVudGVkTmF2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNmEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2MmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlY2em02IDNoNFY1SDZ2NHptOS0xVjZhMSAxIDAgMCAwLTEtMWgtM3Y0aDNhMSAxIDAgMCAwIDEtMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTZXJ2ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4zMzMgMi42NjdDMS4zMzMgMS4xOTQgNC4zMTggMCA4IDBzNi42NjcgMS4xOTQgNi42NjcgMi42NjdWNGMwIDEuNDczLTIuOTg1IDIuNjY3LTYuNjY3IDIuNjY3UzEuMzMzIDUuNDczIDEuMzMzIDRWMi42Njd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS4zMzMgNi4zMzR2M0MxLjMzMyAxMC44MDUgNC4zMTggMTIgOCAxMnM2LjY2Ny0xLjE5NCA2LjY2Ny0yLjY2N1Y2LjMzNGE2LjUxIDYuNTEgMCAwIDEtMS40NTguNzlDMTEuODEgNy42ODQgOS45NjcgOCA4IDhjLTEuOTY2IDAtMy44MDktLjMxNy01LjIwOC0uODc2YTYuNTA4IDYuNTA4IDAgMCAxLTEuNDU4LS43OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNC42NjcgMTEuNjY4YTYuNTEgNi41MSAwIDAgMS0xLjQ1OC43ODljLTEuNC41Ni0zLjI0Mi44NzYtNS4yMS44NzYtMS45NjYgMC0zLjgwOS0uMzE2LTUuMjA4LS44NzZhNi41MSA2LjUxIDAgMCAxLTEuNDU4LS43OXYxLjY2NkMxLjMzMyAxNC44MDYgNC4zMTggMTYgOCAxNnM2LjY2Ny0xLjE5NCA2LjY2Ny0yLjY2N3YtMS42NjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDIuNWEyLjUgMi41IDAgMSAxIC42MDMgMS42MjhsLTYuNzE4IDMuMTJhMi40OTkgMi40OTkgMCAwIDEgMCAxLjUwNGw2LjcxOCAzLjEyYTIuNSAyLjUgMCAxIDEtLjQ4OC44NzZsLTYuNzE4LTMuMTJhMi41IDIuNSAwIDEgMSAwLTMuMjU2bDYuNzE4LTMuMTJBMi41IDIuNSAwIDAgMSAxMSAyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNSAxYTEuNSAxLjUgMCAxIDAgMCAzIDEuNSAxLjUgMCAwIDAgMC0zek0xMSAyLjVhMi41IDIuNSAwIDEgMSAuNjAzIDEuNjI4bC02LjcxOCAzLjEyYTIuNDk5IDIuNDk5IDAgMCAxIDAgMS41MDRsNi43MTggMy4xMmEyLjUgMi41IDAgMSAxLS40ODguODc2bC02LjcxOC0zLjEyYTIuNSAyLjUgMCAxIDEgMC0zLjI1Nmw2LjcxOC0zLjEyQTIuNSAyLjUgMCAwIDEgMTEgMi41em0tOC41IDRhMS41IDEuNSAwIDEgMCAwIDMgMS41IDEuNSAwIDAgMCAwLTN6bTExIDUuNWExLjUgMS41IDAgMSAwIDAgMyAxLjUgMS41IDAgMCAwIDAtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGllbGRDaGVjayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjMzOCAxLjU5YTYxLjQ0IDYxLjQ0IDAgMCAwLTIuODM3Ljg1Ni40ODEuNDgxIDAgMCAwLS4zMjguMzljLS41NTQgNC4xNTcuNzI2IDcuMTkgMi4yNTMgOS4xODhhMTAuNzI1IDEwLjcyNSAwIDAgMCAyLjI4NyAyLjIzM2MuMzQ2LjI0NC42NTIuNDIuODkzLjUzMy4xMi4wNTcuMjE4LjA5NS4yOTMuMTE4YS41NS41NSAwIDAgMCAuMTAxLjAyNS42MTUuNjE1IDAgMCAwIC4xLS4wMjVjLjA3Ni0uMDIzLjE3NC0uMDYxLjI5NC0uMTE4LjI0LS4xMTMuNTQ3LS4yOS44OTMtLjUzM2ExMC43MjYgMTAuNzI2IDAgMCAwIDIuMjg3LTIuMjMzYzEuNTI3LTEuOTk3IDIuODA3LTUuMDMxIDIuMjUzLTkuMTg4YS40OC40OCAwIDAgMC0uMzI4LS4zOWMtLjY1MS0uMjEzLTEuNzUtLjU2LTIuODM3LS44NTVDOS41NTIgMS4yOSA4LjUzMSAxLjA2NyA4IDEuMDY3Yy0uNTMgMC0xLjU1Mi4yMjMtMi42NjIuNTI0ek01LjA3Mi41NkM2LjE1Ny4yNjUgNy4zMSAwIDggMHMxLjg0My4yNjUgMi45MjguNTZjMS4xMS4zIDIuMjI5LjY1NSAyLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDEgMS4wNDQgMS4yNjJjLjU5NiA0LjQ3Ny0uNzg3IDcuNzk1LTIuNDY1IDkuOTlhMTEuNzc1IDExLjc3NSAwIDAgMS0yLjUxNyAyLjQ1MyA3LjE1OSA3LjE1OSAwIDAgMS0xLjA0OC42MjVjLS4yOC4xMzItLjU4MS4yNC0uODI5LjI0cy0uNTQ4LS4xMDgtLjgyOS0uMjRhNy4xNTggNy4xNTggMCAwIDEtMS4wNDgtLjYyNSAxMS43NzcgMTEuNzc3IDAgMCAxLTIuNTE3LTIuNDUzQzEuOTI4IDEwLjQ4Ny41NDUgNy4xNjkgMS4xNDEgMi42OTJBMS41NCAxLjU0IDAgMCAxIDIuMTg1IDEuNDMgNjIuNDU2IDYyLjQ1NiAwIDAgMSA1LjA3Mi41NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMC44NTQgNS4xNDZhLjUuNSAwIDAgMSAwIC43MDhsLTMgM2EuNS41IDAgMCAxLS43MDggMGwtMS41LTEuNWEuNS41IDAgMSAxIC43MDgtLjcwOEw3LjUgNy43OTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkRXhjbGFtYXRpb24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zMzggMS41OWE2MS40NCA2MS40NCAwIDAgMC0yLjgzNy44NTYuNDgxLjQ4MSAwIDAgMC0uMzI4LjM5Yy0uNTU0IDQuMTU3LjcyNiA3LjE5IDIuMjUzIDkuMTg4YTEwLjcyNSAxMC43MjUgMCAwIDAgMi4yODcgMi4yMzNjLjM0Ni4yNDQuNjUyLjQyLjg5My41MzMuMTIuMDU3LjIxOC4wOTUuMjkzLjExOGEuNTUuNTUgMCAwIDAgLjEwMS4wMjUuNjE1LjYxNSAwIDAgMCAuMS0uMDI1Yy4wNzYtLjAyMy4xNzQtLjA2MS4yOTQtLjExOC4yNC0uMTEzLjU0Ny0uMjkuODkzLS41MzNhMTAuNzI2IDEwLjcyNiAwIDAgMCAyLjI4Ny0yLjIzM2MxLjUyNy0xLjk5NyAyLjgwNy01LjAzMSAyLjI1My05LjE4OGEuNDguNDggMCAwIDAtLjMyOC0uMzljLS42NTEtLjIxMy0xLjc1LS41Ni0yLjgzNy0uODU1QzkuNTUyIDEuMjkgOC41MzEgMS4wNjcgOCAxLjA2N2MtLjUzIDAtMS41NTIuMjIzLTIuNjYyLjUyNHpNNS4wNzIuNTZDNi4xNTcuMjY1IDcuMzEgMCA4IDBzMS44NDMuMjY1IDIuOTI4LjU2YzEuMTEuMyAyLjIyOS42NTUgMi44ODcuODdhMS41NCAxLjU0IDAgMCAxIDEuMDQ0IDEuMjYyYy41OTYgNC40NzctLjc4NyA3Ljc5NS0yLjQ2NSA5Ljk5YTExLjc3NSAxMS43NzUgMCAwIDEtMi41MTcgMi40NTMgNy4xNTkgNy4xNTkgMCAwIDEtMS4wNDguNjI1Yy0uMjguMTMyLS41ODEuMjQtLjgyOS4yNHMtLjU0OC0uMTA4LS44MjktLjI0YTcuMTU4IDcuMTU4IDAgMCAxLTEuMDQ4LS42MjUgMTEuNzc3IDExLjc3NyAwIDAgMS0yLjUxNy0yLjQ1M0MxLjkyOCAxMC40ODcuNTQ1IDcuMTY5IDEuMTQxIDIuNjkyQTEuNTQgMS41NCAwIDAgMSAyLjE4NSAxLjQzIDYyLjQ1NiA2Mi40NTYgMCAwIDEgNS4wNzIuNTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4wMDEgMTFhMSAxIDAgMSAxIDIgMCAxIDEgMCAwIDEtMiAwek03LjEgNC45OTVhLjkwNS45MDUgMCAxIDEgMS44IDBsLS4zNSAzLjUwN2EuNTUzLjU1MyAwIDAgMS0xLjEgMEw3LjEgNC45OTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkRmlsbENoZWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBjLS42OSAwLTEuODQzLjI2NS0yLjkyOC41Ni0xLjExLjMtMi4yMjkuNjU1LTIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMC0xLjA0NCAxLjI2MmMtLjU5NiA0LjQ3Ny43ODcgNy43OTUgMi40NjUgOS45OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuNzc1IDExLjc3NSAwIDAgMCAyLjUxNy0yLjQ1M2MxLjY3OC0yLjE5NSAzLjA2MS01LjUxMyAyLjQ2NS05Ljk5YTEuNTQxIDEuNTQxIDAgMCAwLTEuMDQ0LTEuMjYzIDYyLjQ2NyA2Mi40NjcgMCAwIDAtMi44ODctLjg3QzkuODQzLjI2NiA4LjY5IDAgOCAwem0yLjE0NiA1LjE0NmEuNS41IDAgMCAxIC43MDguNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4IDBsLTEuNS0xLjVhLjUuNSAwIDEgMSAuNzA4LS43MDhMNy41IDcuNzkzbDIuNjQ2LTIuNjQ3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NoaWVsZEZpbGxFeGNsYW1hdGlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAwYy0uNjkgMC0xLjg0My4yNjUtMi45MjguNTYtMS4xMS4zLTIuMjI5LjY1NS0yLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDAtMS4wNDQgMS4yNjJjLS41OTYgNC40NzcuNzg3IDcuNzk1IDIuNDY1IDkuOTlhMTEuNzc3IDExLjc3NyAwIDAgMCAyLjUxNyAyLjQ1M2MuMzg2LjI3My43NDQuNDgyIDEuMDQ4LjYyNS4yOC4xMzIuNTgxLjI0LjgyOS4yNHMuNTQ4LS4xMDguODI5LS4yNGE3LjE1OSA3LjE1OSAwIDAgMCAxLjA0OC0uNjI1IDExLjc3NSAxMS43NzUgMCAwIDAgMi41MTctMi40NTNjMS42NzgtMi4xOTUgMy4wNjEtNS41MTMgMi40NjUtOS45OWExLjU0MSAxLjU0MSAwIDAgMC0xLjA0NC0xLjI2MyA2Mi40NjcgNjIuNDY3IDAgMCAwLTIuODg3LS44N0M5Ljg0My4yNjYgOC42OSAwIDggMHptLS41NSA4LjUwMkw3LjEgNC45OTVhLjkwNS45MDUgMCAxIDEgMS44IDBsLS4zNSAzLjUwN2EuNTUyLjU1MiAwIDAgMS0xLjEgMHpNOC4wMDIgMTJhMSAxIDAgMSAxIDAtMiAxIDEgMCAwIDEgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NoaWVsZEZpbGxNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAwYy0uNjkgMC0xLjg0My4yNjUtMi45MjguNTYtMS4xMS4zLTIuMjI5LjY1NS0yLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDAtMS4wNDQgMS4yNjJjLS41OTYgNC40NzcuNzg3IDcuNzk1IDIuNDY1IDkuOTlhMTEuNzc3IDExLjc3NyAwIDAgMCAyLjUxNyAyLjQ1M2MuMzg2LjI3My43NDQuNDgyIDEuMDQ4LjYyNS4yOC4xMzIuNTgxLjI0LjgyOS4yNHMuNTQ4LS4xMDguODI5LS4yNGE3LjE1OSA3LjE1OSAwIDAgMCAxLjA0OC0uNjI1IDExLjc3NSAxMS43NzUgMCAwIDAgMi41MTctMi40NTNjMS42NzgtMi4xOTUgMy4wNjEtNS41MTMgMi40NjUtOS45OWExLjU0MSAxLjU0MSAwIDAgMC0xLjA0NC0xLjI2MyA2Mi40NjcgNjIuNDY3IDAgMCAwLTIuODg3LS44N0M5Ljg0My4yNjYgOC42OSAwIDggMHpNNiA3LjVhLjUuNSAwIDAgMSAwLTFoNGEuNS41IDAgMCAxIDAgMUg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NoaWVsZEZpbGxQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk04IDBjLS42OSAwLTEuODQzLjI2NS0yLjkyOC41Ni0xLjExLjMtMi4yMjkuNjU1LTIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMC0xLjA0NCAxLjI2MmMtLjU5NiA0LjQ3Ny43ODcgNy43OTUgMi40NjUgOS45OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuNzc1IDExLjc3NSAwIDAgMCAyLjUxNy0yLjQ1M2MxLjY3OC0yLjE5NSAzLjA2MS01LjUxMyAyLjQ2NS05Ljk5YTEuNTQxIDEuNTQxIDAgMCAwLTEuMDQ0LTEuMjYzIDYyLjQ2NyA2Mi40NjcgMCAwIDAtMi44ODctLjg3QzkuODQzLjI2NiA4LjY5IDAgOCAwem0tLjUgNWEuNS41IDAgMCAxIDEgMHYxLjVIMTBhLjUuNSAwIDAgMSAwIDFIOC41VjlhLjUuNSAwIDAgMS0xIDBWNy41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkRmlsbFggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYy0uNjkgMC0xLjg0My4yNjUtMi45MjguNTYtMS4xMS4zLTIuMjI5LjY1NS0yLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDAtMS4wNDQgMS4yNjJjLS41OTYgNC40NzcuNzg3IDcuNzk1IDIuNDY1IDkuOTlhMTEuNzc3IDExLjc3NyAwIDAgMCAyLjUxNyAyLjQ1M2MuMzg2LjI3My43NDQuNDgyIDEuMDQ4LjYyNS4yOC4xMzIuNTgxLjI0LjgyOS4yNHMuNTQ4LS4xMDguODI5LS4yNGE3LjE1OSA3LjE1OSAwIDAgMCAxLjA0OC0uNjI1IDExLjc3NSAxMS43NzUgMCAwIDAgMi41MTctMi40NTNjMS42NzgtMi4xOTUgMy4wNjEtNS41MTMgMi40NjUtOS45OWExLjU0MSAxLjU0MSAwIDAgMC0xLjA0NC0xLjI2MyA2Mi40NjcgNjIuNDY3IDAgMCAwLTIuODg3LS44N0M5Ljg0My4yNjYgOC42OSAwIDggMHpNNi44NTQgNS4xNDYgOCA2LjI5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMSAxIC43MDguNzA4TDguNzA3IDdsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDcuNzA3IDYuODU0IDguODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4TDcuMjkzIDcgNi4xNDYgNS44NTRhLjUuNSAwIDEgMSAuNzA4LS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjA3Mi41NkM2LjE1Ny4yNjUgNy4zMSAwIDggMHMxLjg0My4yNjUgMi45MjguNTZjMS4xMS4zIDIuMjI5LjY1NSAyLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDEgMS4wNDQgMS4yNjJjLjU5NiA0LjQ3Ny0uNzg3IDcuNzk1LTIuNDY1IDkuOTlhMTEuNzc1IDExLjc3NSAwIDAgMS0yLjUxNyAyLjQ1MyA3LjE1OSA3LjE1OSAwIDAgMS0xLjA0OC42MjVjLS4yOC4xMzItLjU4MS4yNC0uODI5LjI0cy0uNTQ4LS4xMDgtLjgyOS0uMjRhNy4xNTggNy4xNTggMCAwIDEtMS4wNDgtLjYyNSAxMS43NzcgMTEuNzc3IDAgMCAxLTIuNTE3LTIuNDUzQzEuOTI4IDEwLjQ4Ny41NDUgNy4xNjkgMS4xNDEgMi42OTJBMS41NCAxLjU0IDAgMCAxIDIuMTg1IDEuNDMgNjIuNDU2IDYyLjQ1NiAwIDAgMSA1LjA3Mi41NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGllbGRMb2NrRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOCAwYy0uNjkgMC0xLjg0My4yNjUtMi45MjguNTYtMS4xMS4zLTIuMjI5LjY1NS0yLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDAtMS4wNDQgMS4yNjJjLS41OTYgNC40NzcuNzg3IDcuNzk1IDIuNDY1IDkuOTlhMTEuNzc3IDExLjc3NyAwIDAgMCAyLjUxNyAyLjQ1M2MuMzg2LjI3My43NDQuNDgyIDEuMDQ4LjYyNS4yOC4xMzIuNTgxLjI0LjgyOS4yNHMuNTQ4LS4xMDguODI5LS4yNGE3LjE1OSA3LjE1OSAwIDAgMCAxLjA0OC0uNjI1IDExLjc3NSAxMS43NzUgMCAwIDAgMi41MTctMi40NTNjMS42NzgtMi4xOTUgMy4wNjEtNS41MTMgMi40NjUtOS45OWExLjU0MSAxLjU0MSAwIDAgMC0xLjA0NC0xLjI2MyA2Mi40NjcgNjIuNDY3IDAgMCAwLTIuODg3LS44N0M5Ljg0My4yNjYgOC42OSAwIDggMHptMCA1YTEuNSAxLjUgMCAwIDEgLjUgMi45MTVsLjM4NSAxLjk5YS41LjUgMCAwIDEtLjQ5MS41OTVoLS43ODhhLjUuNSAwIDAgMS0uNDktLjU5NWwuMzg0LTEuOTlBMS41IDEuNSAwIDAgMSA4IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkTG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjMzOCAxLjU5YTYxLjQ0IDYxLjQ0IDAgMCAwLTIuODM3Ljg1Ni40ODEuNDgxIDAgMCAwLS4zMjguMzljLS41NTQgNC4xNTcuNzI2IDcuMTkgMi4yNTMgOS4xODhhMTAuNzI1IDEwLjcyNSAwIDAgMCAyLjI4NyAyLjIzM2MuMzQ2LjI0NC42NTIuNDIuODkzLjUzMy4xMi4wNTcuMjE4LjA5NS4yOTMuMTE4YS41NS41NSAwIDAgMCAuMTAxLjAyNS42MTUuNjE1IDAgMCAwIC4xLS4wMjVjLjA3Ni0uMDIzLjE3NC0uMDYxLjI5NC0uMTE4LjI0LS4xMTMuNTQ3LS4yOS44OTMtLjUzM2ExMC43MjYgMTAuNzI2IDAgMCAwIDIuMjg3LTIuMjMzYzEuNTI3LTEuOTk3IDIuODA3LTUuMDMxIDIuMjUzLTkuMTg4YS40OC40OCAwIDAgMC0uMzI4LS4zOWMtLjY1MS0uMjEzLTEuNzUtLjU2LTIuODM3LS44NTVDOS41NTIgMS4yOSA4LjUzMSAxLjA2NyA4IDEuMDY3Yy0uNTMgMC0xLjU1Mi4yMjMtMi42NjIuNTI0ek01LjA3Mi41NkM2LjE1Ny4yNjUgNy4zMSAwIDggMHMxLjg0My4yNjUgMi45MjguNTZjMS4xMS4zIDIuMjI5LjY1NSAyLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDEgMS4wNDQgMS4yNjJjLjU5NiA0LjQ3Ny0uNzg3IDcuNzk1LTIuNDY1IDkuOTlhMTEuNzc1IDExLjc3NSAwIDAgMS0yLjUxNyAyLjQ1MyA3LjE1OSA3LjE1OSAwIDAgMS0xLjA0OC42MjVjLS4yOC4xMzItLjU4MS4yNC0uODI5LjI0cy0uNTQ4LS4xMDgtLjgyOS0uMjRhNy4xNTggNy4xNTggMCAwIDEtMS4wNDgtLjYyNSAxMS43NzcgMTEuNzc3IDAgMCAxLTIuNTE3LTIuNDUzQzEuOTI4IDEwLjQ4Ny41NDUgNy4xNjkgMS4xNDEgMi42OTJBMS41NCAxLjU0IDAgMCAxIDIuMTg1IDEuNDMgNjIuNDU2IDYyLjQ1NiAwIDAgMSA1LjA3Mi41NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgNi41YTEuNSAxLjUgMCAwIDEtMSAxLjQxNWwuMzg1IDEuOTlhLjUuNSAwIDAgMS0uNDkxLjU5NWgtLjc4OGEuNS41IDAgMCAxLS40OS0uNTk1bC4zODQtMS45OWExLjUgMS41IDAgMSAxIDItMS40MTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkTWludXMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4zMzggMS41OWE2MS40NCA2MS40NCAwIDAgMC0yLjgzNy44NTYuNDgxLjQ4MSAwIDAgMC0uMzI4LjM5Yy0uNTU0IDQuMTU3LjcyNiA3LjE5IDIuMjUzIDkuMTg4YTEwLjcyNSAxMC43MjUgMCAwIDAgMi4yODcgMi4yMzNjLjM0Ni4yNDQuNjUyLjQyLjg5My41MzMuMTIuMDU3LjIxOC4wOTUuMjkzLjExOGEuNTUuNTUgMCAwIDAgLjEwMS4wMjUuNjE1LjYxNSAwIDAgMCAuMS0uMDI1Yy4wNzYtLjAyMy4xNzQtLjA2MS4yOTQtLjExOC4yNC0uMTEzLjU0Ny0uMjkuODkzLS41MzNhMTAuNzI2IDEwLjcyNiAwIDAgMCAyLjI4Ny0yLjIzM2MxLjUyNy0xLjk5NyAyLjgwNy01LjAzMSAyLjI1My05LjE4OGEuNDguNDggMCAwIDAtLjMyOC0uMzljLS42NTEtLjIxMy0xLjc1LS41Ni0yLjgzNy0uODU1QzkuNTUyIDEuMjkgOC41MzEgMS4wNjcgOCAxLjA2N2MtLjUzIDAtMS41NTIuMjIzLTIuNjYyLjUyNHpNNS4wNzIuNTZDNi4xNTcuMjY1IDcuMzEgMCA4IDBzMS44NDMuMjY1IDIuOTI4LjU2YzEuMTEuMyAyLjIyOS42NTUgMi44ODcuODdhMS41NCAxLjU0IDAgMCAxIDEuMDQ0IDEuMjYyYy41OTYgNC40NzctLjc4NyA3Ljc5NS0yLjQ2NSA5Ljk5YTExLjc3NSAxMS43NzUgMCAwIDEtMi41MTcgMi40NTMgNy4xNTkgNy4xNTkgMCAwIDEtMS4wNDguNjI1Yy0uMjguMTMyLS41ODEuMjQtLjgyOS4yNHMtLjU0OC0uMTA4LS44MjktLjI0YTcuMTU4IDcuMTU4IDAgMCAxLTEuMDQ4LS42MjUgMTEuNzc3IDExLjc3NyAwIDAgMS0yLjUxNy0yLjQ1M0MxLjkyOCAxMC40ODcuNTQ1IDcuMTY5IDEuMTQxIDIuNjkyQTEuNTQgMS41NCAwIDAgMSAyLjE4NSAxLjQzIDYyLjQ1NiA2Mi40NTYgMCAwIDEgNS4wNzIuNTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDdhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgMCAxSDZhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGllbGRQbHVzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzM4IDEuNTlhNjEuNDQgNjEuNDQgMCAwIDAtMi44MzcuODU2LjQ4MS40ODEgMCAwIDAtLjMyOC4zOWMtLjU1NCA0LjE1Ny43MjYgNy4xOSAyLjI1MyA5LjE4OGExMC43MjUgMTAuNzI1IDAgMCAwIDIuMjg3IDIuMjMzYy4zNDYuMjQ0LjY1Mi40Mi44OTMuNTMzLjEyLjA1Ny4yMTguMDk1LjI5My4xMThhLjU1LjU1IDAgMCAwIC4xMDEuMDI1LjYxNS42MTUgMCAwIDAgLjEtLjAyNWMuMDc2LS4wMjMuMTc0LS4wNjEuMjk0LS4xMTguMjQtLjExMy41NDctLjI5Ljg5My0uNTMzYTEwLjcyNiAxMC43MjYgMCAwIDAgMi4yODctMi4yMzNjMS41MjctMS45OTcgMi44MDctNS4wMzEgMi4yNTMtOS4xODhhLjQ4LjQ4IDAgMCAwLS4zMjgtLjM5Yy0uNjUxLS4yMTMtMS43NS0uNTYtMi44MzctLjg1NUM5LjU1MiAxLjI5IDguNTMxIDEuMDY3IDggMS4wNjdjLS41MyAwLTEuNTUyLjIyMy0yLjY2Mi41MjR6TTUuMDcyLjU2QzYuMTU3LjI2NSA3LjMxIDAgOCAwczEuODQzLjI2NSAyLjkyOC41NmMxLjExLjMgMi4yMjkuNjU1IDIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMSAxLjA0NCAxLjI2MmMuNTk2IDQuNDc3LS43ODcgNy43OTUtMi40NjUgOS45OWExMS43NzUgMTEuNzc1IDAgMCAxLTIuNTE3IDIuNDUzIDcuMTU5IDcuMTU5IDAgMCAxLTEuMDQ4LjYyNWMtLjI4LjEzMi0uNTgxLjI0LS44MjkuMjRzLS41NDgtLjEwOC0uODI5LS4yNGE3LjE1OCA3LjE1OCAwIDAgMS0xLjA0OC0uNjI1IDExLjc3NyAxMS43NzcgMCAwIDEtMi41MTctMi40NTNDMS45MjggMTAuNDg3LjU0NSA3LjE2OSAxLjE0MSAyLjY5MkExLjU0IDEuNTQgMCAwIDEgMi4xODUgMS40MyA2Mi40NTYgNjIuNDU2IDAgMCAxIDUuMDcyLjU2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNC41YS41LjUgMCAwIDEgLjUuNXYxLjVIMTBhLjUuNSAwIDAgMSAwIDFIOC41VjlhLjUuNSAwIDAgMS0xIDBWNy41SDZhLjUuNSAwIDAgMSAwLTFoMS41VjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGllbGRTaGFkZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMTQuOTMzYS42MTUuNjE1IDAgMCAwIC4xLS4wMjVjLjA3Ni0uMDIzLjE3NC0uMDYxLjI5NC0uMTE4LjI0LS4xMTMuNTQ3LS4yOS44OTMtLjUzM2ExMC43MjYgMTAuNzI2IDAgMCAwIDIuMjg3LTIuMjMzYzEuNTI3LTEuOTk3IDIuODA3LTUuMDMxIDIuMjUzLTkuMTg4YS40OC40OCAwIDAgMC0uMzI4LS4zOWMtLjY1MS0uMjEzLTEuNzUtLjU2LTIuODM3LS44NTVDOS41NTIgMS4yOSA4LjUzMSAxLjA2NyA4IDEuMDY3djEzLjg2NnpNNS4wNzIuNTZDNi4xNTcuMjY1IDcuMzEgMCA4IDBzMS44NDMuMjY1IDIuOTI4LjU2YzEuMTEuMyAyLjIyOS42NTUgMi44ODcuODdhMS41NCAxLjU0IDAgMCAxIDEuMDQ0IDEuMjYyYy41OTYgNC40NzctLjc4NyA3Ljc5NS0yLjQ2NSA5Ljk5YTExLjc3NSAxMS43NzUgMCAwIDEtMi41MTcgMi40NTMgNy4xNTkgNy4xNTkgMCAwIDEtMS4wNDguNjI1Yy0uMjguMTMyLS41ODEuMjQtLjgyOS4yNHMtLjU0OC0uMTA4LS44MjktLjI0YTcuMTU4IDcuMTU4IDAgMCAxLTEuMDQ4LS42MjUgMTEuNzc3IDExLjc3NyAwIDAgMS0yLjUxNy0yLjQ1M0MxLjkyOCAxMC40ODcuNTQ1IDcuMTY5IDEuMTQxIDIuNjkyQTEuNTQgMS41NCAwIDAgMSAyLjE4NSAxLjQzIDYyLjQ1NiA2Mi40NTYgMCAwIDEgNS4wNzIuNTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZWxkU2xhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjA5MyAzLjA5M2MtLjQ2NSA0LjI3NS44ODUgNy40NiAyLjUxMyA5LjU4OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuMzIgMTEuMzIgMCAwIDAgMS43MzMtMS41MjVMMS4wOTMgMy4wOTN6bTEyLjIxNSA4LjIxNUwzLjEyOCAxLjEyOEE2MS4zNjkgNjEuMzY5IDAgMCAxIDUuMDczLjU2QzYuMTU3LjI2NSA3LjMxIDAgOCAwczEuODQzLjI2NSAyLjkyOC41NmMxLjExLjMgMi4yMjkuNjU1IDIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMSAxLjA0NCAxLjI2MmMuNDgzIDMuNjI2LS4zMzIgNi40OTEtMS41NTEgOC42MTZ6bS4zMzggMy4wNDYtMTMtMTMgLjcwOC0uNzA4IDEzIDEzLS43MDcuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NoaWVsZFNsYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjA5MyAzLjA5M2MtLjQ2NSA0LjI3NS44ODUgNy40NiAyLjUxMyA5LjU4OWExMS43NzcgMTEuNzc3IDAgMCAwIDIuNTE3IDIuNDUzYy4zODYuMjczLjc0NC40ODIgMS4wNDguNjI1LjI4LjEzMi41ODEuMjQuODI5LjI0cy41NDgtLjEwOC44MjktLjI0YTcuMTU5IDcuMTU5IDAgMCAwIDEuMDQ4LS42MjUgMTEuMzIgMTEuMzIgMCAwIDAgMS43MzMtMS41MjVsLS43NDUtLjc0NWExMC4yNyAxMC4yNyAwIDAgMS0xLjU3OCAxLjM5MmMtLjM0Ni4yNDQtLjY1Mi40Mi0uODkzLjUzMy0uMTIuMDU3LS4yMTguMDk1LS4yOTMuMTE4YS41NS41NSAwIDAgMS0uMTAxLjAyNS42MTUuNjE1IDAgMCAxLS4xLS4wMjUgMi4zNDggMi4zNDggMCAwIDEtLjI5NC0uMTE4IDYuMTQxIDYuMTQxIDAgMCAxLS44OTMtLjUzMyAxMC43MjUgMTAuNzI1IDAgMCAxLTIuMjg3LTIuMjMzQzMuMDUzIDEwLjIyOCAxLjg3OSA3LjU5NCAyLjA2IDQuMDZsLS45NjctLjk2N3pNMy45OCAxLjk4bC0uODUyLS44NTJBNTguOTM1IDU4LjkzNSAwIDAgMSA1LjA3Mi41NTlDNi4xNTcuMjY2IDcuMzEgMCA4IDBzMS44NDMuMjY1IDIuOTI4LjU2YzEuMTEuMyAyLjIyOS42NTUgMi44ODcuODdhMS41NCAxLjU0IDAgMCAxIDEuMDQ0IDEuMjYyYy40ODMgMy42MjYtLjMzMiA2LjQ5MS0xLjU1MSA4LjYxNmwtLjc3LS43N2MxLjA0Mi0xLjkxNSAxLjcyLTQuNDY5IDEuMjktNy43MDJhLjQ4LjQ4IDAgMCAwLS4zMy0uMzljLS42NS0uMjEzLTEuNzUtLjU2LTIuODM2LS44NTVDOS41NTIgMS4yOSA4LjUzMSAxLjA2NyA4IDEuMDY3Yy0uNTMgMC0xLjU1Mi4yMjMtMi42NjIuNTI0YTQ5LjcgNDkuNyAwIDAgMC0xLjM1Ny4zOXptOS42NjYgMTIuMzc0LTEzLTEzIC43MDgtLjcwOCAxMyAxMy0uNzA3LjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGllbGRYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzM4IDEuNTlhNjEuNDQgNjEuNDQgMCAwIDAtMi44MzcuODU2LjQ4MS40ODEgMCAwIDAtLjMyOC4zOWMtLjU1NCA0LjE1Ny43MjYgNy4xOSAyLjI1MyA5LjE4OGExMC43MjUgMTAuNzI1IDAgMCAwIDIuMjg3IDIuMjMzYy4zNDYuMjQ0LjY1Mi40Mi44OTMuNTMzLjEyLjA1Ny4yMTguMDk1LjI5My4xMThhLjU1LjU1IDAgMCAwIC4xMDEuMDI1LjYxNS42MTUgMCAwIDAgLjEtLjAyNWMuMDc2LS4wMjMuMTc0LS4wNjEuMjk0LS4xMTguMjQtLjExMy41NDctLjI5Ljg5My0uNTMzYTEwLjcyNiAxMC43MjYgMCAwIDAgMi4yODctMi4yMzNjMS41MjctMS45OTcgMi44MDctNS4wMzEgMi4yNTMtOS4xODhhLjQ4LjQ4IDAgMCAwLS4zMjgtLjM5Yy0uNjUxLS4yMTMtMS43NS0uNTYtMi44MzctLjg1NUM5LjU1MiAxLjI5IDguNTMxIDEuMDY3IDggMS4wNjdjLS41MyAwLTEuNTUyLjIyMy0yLjY2Mi41MjR6TTUuMDcyLjU2QzYuMTU3LjI2NSA3LjMxIDAgOCAwczEuODQzLjI2NSAyLjkyOC41NmMxLjExLjMgMi4yMjkuNjU1IDIuODg3Ljg3YTEuNTQgMS41NCAwIDAgMSAxLjA0NCAxLjI2MmMuNTk2IDQuNDc3LS43ODcgNy43OTUtMi40NjUgOS45OWExMS43NzUgMTEuNzc1IDAgMCAxLTIuNTE3IDIuNDUzIDcuMTU5IDcuMTU5IDAgMCAxLTEuMDQ4LjYyNWMtLjI4LjEzMi0uNTgxLjI0LS44MjkuMjRzLS41NDgtLjEwOC0uODI5LS4yNGE3LjE1OCA3LjE1OCAwIDAgMS0xLjA0OC0uNjI1IDExLjc3NyAxMS43NzcgMCAwIDEtMi41MTctMi40NTNDMS45MjggMTAuNDg3LjU0NSA3LjE2OSAxLjE0MSAyLjY5MkExLjU0IDEuNTQgMCAwIDEgMi4xODUgMS40MyA2Mi40NTYgNjIuNDU2IDAgMCAxIDUuMDcyLjU2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMTQ2IDUuMTQ2YS41LjUgMCAwIDEgLjcwOCAwTDggNi4yOTNsMS4xNDYtMS4xNDdhLjUuNSAwIDEgMSAuNzA4LjcwOEw4LjcwNyA3bDEuMTQ3IDEuMTQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA3LjcwNyA2Ljg1NCA4Ljg1NGEuNS41IDAgMSAxLS43MDgtLjcwOEw3LjI5MyA3IDYuMTQ2IDUuODU0YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NoaWVsZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjMzOCAxLjU5YTYxLjQ0IDYxLjQ0IDAgMCAwLTIuODM3Ljg1Ni40ODEuNDgxIDAgMCAwLS4zMjguMzljLS41NTQgNC4xNTcuNzI2IDcuMTkgMi4yNTMgOS4xODhhMTAuNzI1IDEwLjcyNSAwIDAgMCAyLjI4NyAyLjIzM2MuMzQ2LjI0NC42NTIuNDIuODkzLjUzMy4xMi4wNTcuMjE4LjA5NS4yOTMuMTE4YS41NS41NSAwIDAgMCAuMTAxLjAyNS42MTUuNjE1IDAgMCAwIC4xLS4wMjVjLjA3Ni0uMDIzLjE3NC0uMDYxLjI5NC0uMTE4LjI0LS4xMTMuNTQ3LS4yOS44OTMtLjUzM2ExMC43MjYgMTAuNzI2IDAgMCAwIDIuMjg3LTIuMjMzYzEuNTI3LTEuOTk3IDIuODA3LTUuMDMxIDIuMjUzLTkuMTg4YS40OC40OCAwIDAgMC0uMzI4LS4zOWMtLjY1MS0uMjEzLTEuNzUtLjU2LTIuODM3LS44NTVDOS41NTIgMS4yOSA4LjUzMSAxLjA2NyA4IDEuMDY3Yy0uNTMgMC0xLjU1Mi4yMjMtMi42NjIuNTI0ek01LjA3Mi41NkM2LjE1Ny4yNjUgNy4zMSAwIDggMHMxLjg0My4yNjUgMi45MjguNTZjMS4xMS4zIDIuMjI5LjY1NSAyLjg4Ny44N2ExLjU0IDEuNTQgMCAwIDEgMS4wNDQgMS4yNjJjLjU5NiA0LjQ3Ny0uNzg3IDcuNzk1LTIuNDY1IDkuOTlhMTEuNzc1IDExLjc3NSAwIDAgMS0yLjUxNyAyLjQ1MyA3LjE1OSA3LjE1OSAwIDAgMS0xLjA0OC42MjVjLS4yOC4xMzItLjU4MS4yNC0uODI5LjI0cy0uNTQ4LS4xMDgtLjgyOS0uMjRhNy4xNTggNy4xNTggMCAwIDEtMS4wNDgtLjYyNSAxMS43NzcgMTEuNzc3IDAgMCAxLTIuNTE3LTIuNDUzQzEuOTI4IDEwLjQ4Ny41NDUgNy4xNjkgMS4xNDEgMi42OTJBMS41NCAxLjU0IDAgMCAxIDIuMTg1IDEuNDMgNjIuNDU2IDYyLjQ1NiAwIDAgMSA1LjA3Mi41NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaGlmdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNyAyLjA0N2ExIDEgMCAwIDEgMS40NiAwbDYuMzQ1IDYuNzdjLjYuNjM4LjE0NiAxLjY4My0uNzMgMS42ODNIMTEuNXYzYTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMXYtM0gxLjY1NEMuNzggMTAuNS4zMjYgOS40NTUuOTI0IDguODE2TDcuMjcgMi4wNDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hpZnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yNyAyLjA0N2ExIDEgMCAwIDEgMS40NiAwbDYuMzQ1IDYuNzdjLjYuNjM4LjE0NiAxLjY4My0uNzMgMS42ODNIMTEuNXYzYTEgMSAwIDAgMS0xIDFoLTVhMSAxIDAgMCAxLTEtMXYtM0gxLjY1NEMuNzggMTAuNS4zMjYgOS40NTUuOTI0IDguODE2TDcuMjcgMi4wNDd6TTE0LjM0NiA5LjUgOCAyLjczMSAxLjY1NCA5LjVINC41YTEgMSAwIDAgMSAxIDF2M2g1di0zYTEgMSAwIDAgMSAxLTFoMi44NDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hvcFdpbmRvdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjk3IDEuMzVBMSAxIDAgMCAxIDMuNzMgMWg4LjU0YTEgMSAwIDAgMSAuNzYuMzVsMi42MDkgMy4wNDRBMS41IDEuNSAwIDAgMSAxNiA1LjM3di4yNTVhMi4zNzUgMi4zNzUgMCAwIDEtNC4yNSAxLjQ1OEEyLjM3MSAyLjM3MSAwIDAgMSA5Ljg3NSA4IDIuMzcgMi4zNyAwIDAgMSA4IDcuMDgzIDIuMzcgMi4zNyAwIDAgMSA2LjEyNSA4YTIuMzcgMi4zNyAwIDAgMS0xLjg3NS0uOTE3QTIuMzc1IDIuMzc1IDAgMCAxIDAgNS42MjVWNS4zN2ExLjUgMS41IDAgMCAxIC4zNjEtLjk3NmwyLjYxLTMuMDQ1em0xLjc4IDQuMjc1YTEuMzc1IDEuMzc1IDAgMCAwIDIuNzUgMCAuNS41IDAgMCAxIDEgMCAxLjM3NSAxLjM3NSAwIDAgMCAyLjc1IDAgLjUuNSAwIDAgMSAxIDAgMS4zNzUgMS4zNzUgMCAxIDAgMi43NSAwVjUuMzdhLjUuNSAwIDAgMC0uMTItLjMyNUwxMi4yNyAySDMuNzNMMS4xMiA1LjA0NUEuNS41IDAgMCAwIDEgNS4zN3YuMjU1YTEuMzc1IDEuMzc1IDAgMCAwIDIuNzUgMCAuNS41IDAgMCAxIDEgMHpNMS41IDguNUEuNS41IDAgMCAxIDIgOXY2aDEyVjlhLjUuNSAwIDAgMSAxIDB2NmguNWEuNS41IDAgMCAxIDAgMUguNWEuNS41IDAgMCAxIDAtMUgxVjlhLjUuNSAwIDAgMSAuNS0uNXptMiAuNWEuNS41IDAgMCAxIC41LjVWMTNoOFY5LjVhLjUuNSAwIDAgMSAxIDBWMTNhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWOS41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2hvcCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjk3IDEuMzVBMSAxIDAgMCAxIDMuNzMgMWg4LjU0YTEgMSAwIDAgMSAuNzYuMzVsMi42MDkgMy4wNDRBMS41IDEuNSAwIDAgMSAxNiA1LjM3di4yNTVhMi4zNzUgMi4zNzUgMCAwIDEtNC4yNSAxLjQ1OEEyLjM3MSAyLjM3MSAwIDAgMSA5Ljg3NSA4IDIuMzcgMi4zNyAwIDAgMSA4IDcuMDgzIDIuMzcgMi4zNyAwIDAgMSA2LjEyNSA4YTIuMzcgMi4zNyAwIDAgMS0xLjg3NS0uOTE3QTIuMzc1IDIuMzc1IDAgMCAxIDAgNS42MjVWNS4zN2ExLjUgMS41IDAgMCAxIC4zNjEtLjk3NmwyLjYxLTMuMDQ1em0xLjc4IDQuMjc1YTEuMzc1IDEuMzc1IDAgMCAwIDIuNzUgMCAuNS41IDAgMCAxIDEgMCAxLjM3NSAxLjM3NSAwIDAgMCAyLjc1IDAgLjUuNSAwIDAgMSAxIDAgMS4zNzUgMS4zNzUgMCAxIDAgMi43NSAwVjUuMzdhLjUuNSAwIDAgMC0uMTItLjMyNUwxMi4yNyAySDMuNzNMMS4xMiA1LjA0NUEuNS41IDAgMCAwIDEgNS4zN3YuMjU1YTEuMzc1IDEuMzc1IDAgMCAwIDIuNzUgMCAuNS41IDAgMCAxIDEgMHpNMS41IDguNUEuNS41IDAgMCAxIDIgOXY2aDF2LTVhMSAxIDAgMCAxIDEtMWgzYTEgMSAwIDAgMSAxIDF2NWg2VjlhLjUuNSAwIDAgMSAxIDB2NmguNWEuNS41IDAgMCAxIDAgMUguNWEuNS41IDAgMCAxIDAtMUgxVjlhLjUuNSAwIDAgMSAuNS0uNXpNNCAxNWgzdi01SDR2NXptNS01YTEgMSAwIDAgMSAxLTFoMmExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMWgtMmExIDEgMCAwIDEtMS0xdi0zem0zIDBoLTJ2M2gydi0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NodWZmbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgMy41QS41LjUgMCAwIDEgLjUgM0gxYzIuMjAyIDAgMy44MjcgMS4yNCA0Ljg3NCAyLjQxOC40OS41NTIuODY1IDEuMTAyIDEuMTI2IDEuNTMyLjI2LS40My42MzYtLjk4IDEuMTI2LTEuNTMyQzkuMTczIDQuMjQgMTAuNzk4IDMgMTMgM3YxYy0xLjc5OCAwLTMuMTczIDEuMDEtNC4xMjYgMi4wODJBOS42MjQgOS42MjQgMCAwIDAgNy41NTYgOGE5LjYyNCA5LjYyNCAwIDAgMCAxLjMxNyAxLjkxOEM5LjgyOCAxMC45OSAxMS4yMDQgMTIgMTMgMTJ2MWMtMi4yMDIgMC0zLjgyNy0xLjI0LTQuODc0LTIuNDE4QTEwLjU5NSAxMC41OTUgMCAwIDEgNyA5LjA1Yy0uMjYuNDMtLjYzNi45OC0xLjEyNiAxLjUzMkM0LjgyNyAxMS43NiAzLjIwMiAxMyAxIDEzSC41YS41LjUgMCAwIDEgMC0xSDFjMS43OTggMCAzLjE3My0xLjAxIDQuMTI2LTIuMDgyQTkuNjI0IDkuNjI0IDAgMCAwIDYuNDQ0IDhhOS42MjQgOS42MjQgMCAwIDAtMS4zMTctMS45MThDNC4xNzIgNS4wMSAyLjc5NiA0IDEgNEguNWEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzIDUuNDY2VjEuNTM0YS4yNS4yNSAwIDAgMSAuNDEtLjE5MmwyLjM2IDEuOTY2Yy4xMi4xLjEyLjI4NCAwIC4zODRsLTIuMzYgMS45NjZhLjI1LjI1IDAgMCAxLS40MS0uMTkyem0wIDl2LTMuOTMyYS4yNS4yNSAwIDAgMSAuNDEtLjE5MmwyLjM2IDEuOTY2Yy4xMi4xLjEyLjI4NCAwIC4zODRsLTIuMzYgMS45NjZhLjI1LjI1IDAgMCAxLS40MS0uMTkyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NpZ25hbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm02LjA4LjIzNC4xNzkuNzI3YTcuMjY0IDcuMjY0IDAgMCAwLTIuMDEuODMybC0uMzgzLS42NDNBNy45IDcuOSAwIDAgMSA2LjA3OS4yMzR6bTMuODQgMEw5Ljc0Mi45NmE3LjI2NSA3LjI2NSAwIDAgMSAyLjAxLjgzMmwuMzg4LS42NDNBNy45NTcgNy45NTcgMCAwIDAgOS45Mi4yMzR6bS04Ljc3IDMuNjNhNy45NDQgNy45NDQgMCAwIDAtLjkxNiAyLjIxNWwuNzI3LjE4YTcuMjY0IDcuMjY0IDAgMCAxIC44MzItMi4wMWwtLjY0My0uMzg2ek0uNzUgOGE3LjMgNy4zIDAgMCAxIC4wODEtMS4wODZMLjA5MSA2LjhhOCA4IDAgMCAwIDAgMi4zOThsLjc0LS4xMTJBNy4yNjIgNy4yNjIgMCAwIDEgLjc1IDh6bTExLjM4NCA2Ljg0OC0uMzg0LS42NGE3LjIzIDcuMjMgMCAwIDEtMi4wMDcuODMxbC4xOC43MjhhNy45NjUgNy45NjUgMCAwIDAgMi4yMTEtLjkxOXpNMTUuMjUxIDhjMCAuMzY0LS4wMjguNzI3LS4wODIgMS4wODZsLjc0LjExMmE3Ljk2NiA3Ljk2NiAwIDAgMCAwLTIuMzk4bC0uNzQuMTE0Yy4wNTQuMzYuMDgyLjcyMi4wODIgMS4wODZ6bS41MTYgMS45MTgtLjcyOC0uMThhNy4yNTIgNy4yNTIgMCAwIDEtLjgzMiAyLjAxMmwuNjQzLjM4N2E3LjkzMyA3LjkzMyAwIDAgMCAuOTE3LTIuMjE5em0tNi42OCA1LjI1Yy0uNzIuMTEtMS40NTMuMTEtMi4xNzMgMGwtLjExMi43NDJhNy45OSA3Ljk5IDAgMCAwIDIuMzk2IDBsLS4xMTItLjc0MXptNC43NS0yLjg2OGE3LjIyOSA3LjIyOSAwIDAgMS0xLjUzNyAxLjUzNGwuNDQ2LjYwNWE4LjA3IDguMDcgMCAwIDAgMS42OTUtMS42ODlsLS42MDQtLjQ1ek0xMi4zIDIuMTYzYy41ODcuNDMyIDEuMTA1Ljk1IDEuNTM3IDEuNTM3bC42MDQtLjQ1YTguMDYgOC4wNiAwIDAgMC0xLjY5LTEuNjkxbC0uNDUuNjA0ek0yLjE2MyAzLjdBNy4yNDIgNy4yNDIgMCAwIDEgMy43IDIuMTYzbC0uNDUtLjYwNGE4LjA2IDguMDYgMCAwIDAtMS42OTEgMS42OWwuNjA0LjQ1em0xMi42ODguMTYzLS42NDQuMzg3Yy4zNzcuNjIzLjY1OCAxLjMuODMyIDIuMDA3bC43MjgtLjE4YTcuOTMxIDcuOTMxIDAgMCAwLS45MTYtMi4yMTR6TTYuOTEzLjgzMWE3LjI1NCA3LjI1NCAwIDAgMSAyLjE3MiAwbC4xMTItLjc0YTcuOTg1IDcuOTg1IDAgMCAwLTIuMzk2IDBsLjExMi43NHpNMi41NDcgMTQuNjQgMSAxNWwuMzYtMS41NDktLjcyOS0uMTctLjM2MSAxLjU0OGEuNzUuNzUgMCAwIDAgLjkuOTAybDEuNTQ4LS4zNTctLjE3LS43MzR6TS43ODYgMTIuNjEybC43MzIuMTY4LjI1LTEuMDczQTcuMTg3IDcuMTg3IDAgMCAxIC45NiA5Ljc0bC0uNzI3LjE4YTggOCAwIDAgMCAuNzM2IDEuOTAybC0uMTg0Ljc5em0zLjUgMS42MjMtMS4wNzMuMjUuMTcuNzMxLjc5LS4xODRjLjYuMzI3IDEuMjM5LjU3NCAxLjkwMi43MzdsLjE4LS43MjhhNy4xOTcgNy4xOTcgMCAwIDEtMS45NjItLjgxMWwtLjAwNy4wMDV6TTggMS41YTYuNTAyIDYuNTAyIDAgMCAwLTYuNDk4IDYuNTAyIDYuNTE2IDYuNTE2IDAgMCAwIC45OTggMy40NTVsLS42MjUgMi42NjhMNC41NCAxMy41YTYuNTAyIDYuNTAyIDAgMCAwIDYuOTMtMTFBNi41MTYgNi41MTYgMCAwIDAgOCAxLjVcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaWducG9zdDJGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuMjkzLjcwN0ExIDEgMCAwIDAgNyAxLjQxNFYySDJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoNXYxSDIuNWExIDEgMCAwIDAtLjguNEwuNzI1IDguN2EuNS41IDAgMCAwIDAgLjZsLjk3NSAxLjNhMSAxIDAgMCAwIC44LjRIN3Y1aDJ2LTVoNWExIDEgMCAwIDAgMS0xVjhhMSAxIDAgMCAwLTEtMUg5VjZoNC41YTEgMSAwIDAgMCAuOC0uNGwuOTc1LTEuM2EuNS41IDAgMCAwIDAtLjZMMTQuMyAyLjRhMSAxIDAgMCAwLS44LS40SDl2LS41ODZBMSAxIDAgMCAwIDcuMjkzLjcwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaWducG9zdDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxLjQxNFYySDJhMSAxIDAgMCAwLTEgMXYyYTEgMSAwIDAgMCAxIDFoNXYxSDIuNWExIDEgMCAwIDAtLjguNEwuNzI1IDguN2EuNS41IDAgMCAwIDAgLjZsLjk3NSAxLjNhMSAxIDAgMCAwIC44LjRIN3Y1aDJ2LTVoNWExIDEgMCAwIDAgMS0xVjhhMSAxIDAgMCAwLTEtMUg5VjZoNC41YTEgMSAwIDAgMCAuOC0uNGwuOTc1LTEuM2EuNS41IDAgMCAwIDAtLjZMMTQuMyAyLjRhMSAxIDAgMCAwLS44LS40SDl2LS41ODZhMSAxIDAgMCAwLTIgMHpNMTMuNSAzbC43NSAxLS43NSAxSDJWM2gxMS41em0uNSA1djJIMi41bC0uNzUtMSAuNzUtMUgxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaWducG9zdEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy4yOTMuNzA3QTEgMSAwIDAgMCA3IDEuNDE0VjRIMmExIDEgMCAwIDAtMSAxdjRhMSAxIDAgMCAwIDEgMWg1djZoMnYtNmgzLjUzMmExIDEgMCAwIDAgLjc2OC0uMzZsMS45MzMtMi4zMmEuNS41IDAgMCAwIDAtLjY0TDEzLjMgNC4zNmExIDEgMCAwIDAtLjc2OC0uMzZIOVYxLjQxNEExIDEgMCAwIDAgNy4yOTMuNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NpZ25wb3N0U3BsaXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMTZoMlY2aDVhMSAxIDAgMCAwIC44LS40bC45NzUtMS4zYS41LjUgMCAwIDAgMC0uNkwxNC44IDIuNEExIDEgMCAwIDAgMTQgMkg5di0uNTg2YTEgMSAwIDAgMC0yIDBWN0gyYTEgMSAwIDAgMC0uOC40TC4yMjUgOC43YS41LjUgMCAwIDAgMCAuNmwuOTc1IDEuM2ExIDEgMCAwIDAgLjguNGg1djV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2lnbnBvc3RTcGxpdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDdWMS40MTRhMSAxIDAgMCAxIDIgMFYyaDVhMSAxIDAgMCAxIC44LjRsLjk3NSAxLjNhLjUuNSAwIDAgMSAwIC42TDE0LjggNS42YTEgMSAwIDAgMS0uOC40SDl2MTBIN3YtNUgyYTEgMSAwIDAgMS0uOC0uNEwuMjI1IDkuM2EuNS41IDAgMCAxIDAtLjZMMS4yIDcuNEExIDEgMCAwIDEgMiA3aDV6bTEgM1Y4SDJsLS43NSAxTDIgMTBoNnptMC01aDZsLjc1LTFMMTQgM0g4djJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2lnbnBvc3QgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNyAxLjQxNFY0SDJhMSAxIDAgMCAwLTEgMXY0YTEgMSAwIDAgMCAxIDFoNXY2aDJ2LTZoMy41MzJhMSAxIDAgMCAwIC43NjgtLjM2bDEuOTMzLTIuMzJhLjUuNSAwIDAgMCAwLS42NEwxMy4zIDQuMzZhMSAxIDAgMCAwLS43NjgtLjM2SDlWMS40MTRhMSAxIDAgMCAwLTIgMHpNMTIuNTMyIDVsMS42NjYgMi0xLjY2NiAySDJWNWgxMC41MzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2ltRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDQuNWEuNS41IDAgMCAxIC41LS41aDJ2Mkg1VjQuNXpNOC41IDZWNGgyYS41LjUgMCAwIDEgLjUuNVY2SDguNXpNNSA3aDZ2Mkg1Vjd6bTMuNSAzSDExdjEuNWEuNS41IDAgMCAxLS41LjVoLTJ2LTJ6bS0xIDB2MmgtMmEuNS41IDAgMCAxLS41LS41VjEwaDIuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjUgMEExLjUgMS41IDAgMCAwIDIgMS41djEzQTEuNSAxLjUgMCAwIDAgMy41IDE2aDlhMS41IDEuNSAwIDAgMCAxLjUtMS41VjMuNDE0YTEuNSAxLjUgMCAwIDAtLjQ0LTEuMDZMMTEuNjQ3LjQzOUExLjUgMS41IDAgMCAwIDEwLjU4NiAwSDMuNXptMiAzaDVBMS41IDEuNSAwIDAgMSAxMiA0LjV2N2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTVBMS41IDEuNSAwIDAgMSA0IDExLjV2LTdBMS41IDEuNSAwIDAgMSA1LjUgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTaW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxLjVBMS41IDEuNSAwIDAgMSAzLjUgMGg3LjA4NmExLjUgMS41IDAgMCAxIDEuMDYuNDRsMS45MTUgMS45MTRBMS41IDEuNSAwIDAgMSAxNCAzLjQxNFYxNC41YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtOUExLjUgMS41IDAgMCAxIDIgMTQuNXYtMTN6TTMuNSAxYS41LjUgMCAwIDAtLjUuNXYxM2EuNS41IDAgMCAwIC41LjVoOWEuNS41IDAgMCAwIC41LS41VjMuNDE0YS41LjUgMCAwIDAtLjE0Ni0uMzUzbC0xLjkxNS0xLjkxNUEuNS41IDAgMCAwIDEwLjU4NiAxSDMuNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgNGEuNS41IDAgMCAwLS41LjVWNmgyLjVWNGgtMnptMyAwdjJIMTFWNC41YS41LjUgMCAwIDAtLjUtLjVoLTJ6TTExIDdINXYyaDZWN3ptMCAzSDguNXYyaDJhLjUuNSAwIDAgMCAuNS0uNVYxMHptLTMuNSAydi0ySDV2MS41YS41LjUgMCAwIDAgLjUuNWgyek00IDQuNUExLjUgMS41IDAgMCAxIDUuNSAzaDVBMS41IDEuNSAwIDAgMSAxMiA0LjV2N2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTVBMS41IDEuNSAwIDAgMSA0IDExLjV2LTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEJhY2t3YXJkQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTExLjIxLTYuOTA3TDguNSA3LjAyOFY1LjVhLjUuNSAwIDAgMC0uNzktLjQwN0w1IDcuMDI4VjUuNWEuNS41IDAgMCAwLTEgMHY1YS41LjUgMCAwIDAgMSAwVjguOTcybDIuNzEgMS45MzVhLjUuNSAwIDAgMCAuNzktLjQwN1Y4Ljk3MmwyLjcxIDEuOTM1QS41LjUgMCAwIDAgMTIgMTAuNXYtNWEuNS41IDAgMCAwLS43OS0uNDA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBCYWNrd2FyZEJ0biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4yMSA1LjA5M0EuNS41IDAgMCAxIDEyIDUuNXY1YS41LjUgMCAwIDEtLjc5LjQwN0w4LjUgOC45NzJWMTAuNWEuNS41IDAgMCAxLS43OS40MDdMNSA4Ljk3MlYxMC41YS41LjUgMCAwIDEtMSAwdi01YS41LjUgMCAwIDEgMSAwdjEuNTI4bDIuNzEtMS45MzVhLjUuNSAwIDAgMSAuNzkuNDA3djEuNTI4bDIuNzEtMS45MzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTE1IDBhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwQmFja3dhcmRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHptLTQuNzktMi45MDdMOC41IDcuMDI4VjUuNWEuNS41IDAgMCAwLS43OS0uNDA3TDUgNy4wMjhWNS41YS41LjUgMCAwIDAtMSAwdjVhLjUuNSAwIDAgMCAxIDBWOC45NzJsMi43MSAxLjkzNWEuNS41IDAgMCAwIC43OS0uNDA3VjguOTcybDIuNzEgMS45MzVBLjUuNSAwIDAgMCAxMiAxMC41di01YS41LjUgMCAwIDAtLjc5LS40MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEJhY2t3YXJkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVBNyA3IDAgMSAxIDggMWE3IDcgMCAwIDEgMCAxNHptMCAxQTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNzI5IDUuMDU1YS41LjUgMCAwIDAtLjUyLjAzOEw4LjUgNy4wMjhWNS41YS41LjUgMCAwIDAtLjc5LS40MDdMNSA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDdWOC45NzJsMi43MSAxLjkzNUEuNS41IDAgMCAwIDEyIDEwLjV2LTVhLjUuNSAwIDAgMC0uMjcxLS40NDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEJhY2t3YXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uNSAzLjVBLjUuNSAwIDAgMCAwIDR2OGEuNS41IDAgMCAwIDEgMFY4Ljc1M2w2LjI2NyAzLjYzNmMuNTQuMzEzIDEuMjMzLS4wNjYgMS4yMzMtLjY5N3YtMi45NGw2LjI2NyAzLjYzNmMuNTQuMzE0IDEuMjMzLS4wNjUgMS4yMzMtLjY5NlY0LjMwOGMwLS42My0uNjkzLTEuMDEtMS4yMzMtLjY5Nkw4LjUgNy4yNDh2LTIuOTRjMC0uNjMtLjY5Mi0xLjAxLTEuMjMzLS42OTZMMSA3LjI0OFY0YS41LjUgMCAwIDAtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEJhY2t3YXJkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDMuNUEuNS41IDAgMCAxIDEgNHYzLjI0OGw2LjI2Ny0zLjYzNmMuNTItLjMwMiAxLjIzMy4wNDMgMS4yMzMuNjk2djIuOTRsNi4yNjctMy42MzZjLjUyLS4zMDIgMS4yMzMuMDQzIDEuMjMzLjY5NnY3LjM4NGMwIC42NTMtLjcxMy45OTgtMS4yMzMuNjk2TDguNSA4Ljc1MnYyLjk0YzAgLjY1My0uNzEzLjk5OC0xLjIzMy42OTZMMSA4Ljc1MlYxMmEuNS41IDAgMCAxLTEgMFY0YS41LjUgMCAwIDEgLjUtLjV6bTcgMS4xMzNMMS42OTYgOCA3LjUgMTEuMzY3VjQuNjMzem03LjUgMEw5LjE5NiA4IDE1IDExLjM2N1Y0LjYzM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwRW5kQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTYuNzktNi45MDdBLjUuNSAwIDAgMCA2IDUuNXY1YS41LjUgMCAwIDAgLjc5LjQwN0w5LjUgOC45NzJWMTAuNWEuNS41IDAgMCAwIDEgMHYtNWEuNS41IDAgMCAwLTEgMHYxLjUyOEw2Ljc5IDUuMDkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBFbmRCdG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi43OSA1LjA5MyA5LjUgNy4wMjhWNS41YS41LjUgMCAwIDEgMSAwdjVhLjUuNSAwIDAgMS0xIDBWOC45NzJsLTIuNzEgMS45MzVBLjUuNSAwIDAgMSA2IDEwLjV2LTVhLjUuNSAwIDAgMSAuNzktLjQwN3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTUgMGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBFbmRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNi43OSA1LjA5M0EuNS41IDAgMCAwIDYgNS41djVhLjUuNSAwIDAgMCAuNzkuNDA3TDkuNSA4Ljk3MlYxMC41YS41LjUgMCAwIDAgMSAwdi01YS41LjUgMCAwIDAtMSAwdjEuNTI4TDYuNzkgNS4wOTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEVuZENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuMjcxIDUuMDU1YS41LjUgMCAwIDEgLjUyLjAzOEw5LjUgNy4wMjhWNS41YS41LjUgMCAwIDEgMSAwdjVhLjUuNSAwIDAgMS0xIDBWOC45NzJsLTIuNzEgMS45MzVBLjUuNSAwIDAgMSA2IDEwLjV2LTVhLjUuNSAwIDAgMSAuMjcxLS40NDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcEVuZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSA0YS41LjUgMCAwIDAtMSAwdjMuMjQ4TDUuMjMzIDMuNjEyQzQuNjkzIDMuMyA0IDMuNjc4IDQgNC4zMDh2Ny4zODRjMCAuNjMuNjkyIDEuMDEgMS4yMzMuNjk3TDExLjUgOC43NTNWMTJhLjUuNSAwIDAgMCAxIDBWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwRW5kIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjUgNGEuNS41IDAgMCAwLTEgMHYzLjI0OEw1LjIzMyAzLjYxMkM0LjcxMyAzLjMxIDQgMy42NTUgNCA0LjMwOHY3LjM4NGMwIC42NTMuNzEzLjk5OCAxLjIzMy42OTZMMTEuNSA4Ljc1MlYxMmEuNS41IDAgMCAwIDEgMFY0ek01IDQuNjMzIDEwLjgwNCA4IDUgMTEuMzY3VjQuNjMzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBGb3J3YXJkQnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEwVjJhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTQuNzktNi45MDdBLjUuNSAwIDAgMCA0IDMuNXY1YS41LjUgMCAwIDAgLjc5LjQwN0w3LjUgNi45NzJWOC41YS41LjUgMCAwIDAgLjc5LjQwN0wxMSA2Ljk3MlY4LjVhLjUuNSAwIDAgMCAxIDB2LTVhLjUuNSAwIDAgMC0xIDB2MS41MjhMOC4yOSAzLjA5M2EuNS41IDAgMCAwLS43OS40MDd2MS41MjhMNC43OSAzLjA5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwRm9yd2FyZEJ0biAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00Ljc5IDUuMDkzQS41LjUgMCAwIDAgNCA1LjV2NWEuNS41IDAgMCAwIC43OS40MDdMNy41IDguOTcyVjEwLjVhLjUuNSAwIDAgMCAuNzkuNDA3TDExIDguOTcyVjEwLjVhLjUuNSAwIDAgMCAxIDB2LTVhLjUuNSAwIDAgMC0xIDB2MS41MjhMOC4yOSA1LjA5M2EuNS41IDAgMCAwLS43OS40MDd2MS41MjhMNC43OSA1LjA5M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJWNHptMTUgMGExIDEgMCAwIDAtMS0xSDJhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMVY0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBGb3J3YXJkQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTQuNzkgNS4wOTNBLjUuNSAwIDAgMCA0IDUuNXY1YS41LjUgMCAwIDAgLjc5LjQwN0w3LjUgOC45NzJWMTAuNWEuNS41IDAgMCAwIC43OS40MDdMMTEgOC45NzJWMTAuNWEuNS41IDAgMCAwIDEgMHYtNWEuNS41IDAgMCAwLTEgMHYxLjUyOEw4LjI5IDUuMDkzYS41LjUgMCAwIDAtLjc5LjQwN3YxLjUyOEw0Ljc5IDUuMDkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBGb3J3YXJkQ2lyY2xlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTVBNyA3IDAgMSAxIDggMWE3IDcgMCAwIDEgMCAxNHptMCAxQTggOCAwIDEgMCA4IDBhOCA4IDAgMCAwIDAgMTZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC4yNzEgNS4wNTVhLjUuNSAwIDAgMSAuNTIuMDM4TDcuNSA3LjAyOFY1LjVhLjUuNSAwIDAgMSAuNzktLjQwN0wxMSA3LjAyOFY1LjVhLjUuNSAwIDAgMSAxIDB2NWEuNS41IDAgMCAxLTEgMFY4Ljk3MmwtMi43MSAxLjkzNWEuNS41IDAgMCAxLS43OS0uNDA3VjguOTcybC0yLjcxIDEuOTM1QS41LjUgMCAwIDEgNCAxMC41di01YS41LjUgMCAwIDEgLjI3MS0uNDQ1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBGb3J3YXJkRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDMuNWEuNS41IDAgMCAxIC41LjV2OGEuNS41IDAgMCAxLTEgMFY4Ljc1M2wtNi4yNjcgMy42MzZjLS41NC4zMTMtMS4yMzMtLjA2Ni0xLjIzMy0uNjk3di0yLjk0bC02LjI2NyAzLjYzNkMuNjkzIDEyLjcwMyAwIDEyLjMyNCAwIDExLjY5M1Y0LjMwOGMwLS42My42OTMtMS4wMSAxLjIzMy0uNjk2TDcuNSA3LjI0OHYtMi45NGMwLS42My42OTMtMS4wMSAxLjIzMy0uNjk2TDE1IDcuMjQ4VjRhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS41IDMuNWEuNS41IDAgMCAxIC41LjV2OGEuNS41IDAgMCAxLTEgMFY4Ljc1MmwtNi4yNjcgMy42MzZjLS41Mi4zMDItMS4yMzMtLjA0My0xLjIzMy0uNjk2di0yLjk0bC02LjI2NyAzLjYzNkMuNzEzIDEyLjY5IDAgMTIuMzQ1IDAgMTEuNjkyVjQuMzA4YzAtLjY1My43MTMtLjk5OCAxLjIzMy0uNjk2TDcuNSA3LjI0OHYtMi45NGMwLS42NTMuNzEzLS45OTggMS4yMzMtLjY5NkwxNSA3LjI0OFY0YS41LjUgMCAwIDEgLjUtLjV6TTEgNC42MzN2Ni43MzRMNi44MDQgOCAxIDQuNjMzem03LjUgMHY2LjczNEwxNC4zMDQgOCA4LjUgNC42MzN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcFN0YXJ0QnRuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEyVjRhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMCAxLTIgMkgyYTIgMiAwIDAgMS0yLTJ6bTkuNzEtNi45MDdMNyA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDd2LTVhLjUuNSAwIDAgMC0uNzktLjQwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwU3RhcnRCdG4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS43MSA1LjA5M2EuNS41IDAgMCAxIC43OS40MDd2NWEuNS41IDAgMCAxLS43OS40MDdMNyA4Ljk3MlYxMC41YS41LjUgMCAwIDEtMSAwdi01YS41LjUgMCAwIDEgMSAwdjEuNTI4bDIuNzEtMS45MzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTE1IDBhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwU3RhcnRDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNOS43MSA1LjA5MyA3IDcuMDI4VjUuNWEuNS41IDAgMCAwLTEgMHY1YS41LjUgMCAwIDAgMSAwVjguOTcybDIuNzEgMS45MzVhLjUuNSAwIDAgMCAuNzktLjQwN3YtNWEuNS41IDAgMCAwLS43OS0uNDA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NraXBTdGFydENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjIyOSA1LjA1NWEuNS41IDAgMCAwLS41Mi4wMzhMNyA3LjAyOFY1LjVhLjUuNSAwIDAgMC0xIDB2NWEuNS41IDAgMCAwIDEgMFY4Ljk3MmwyLjcxIDEuOTM1YS41LjUgMCAwIDAgLjc5LS40MDd2LTVhLjUuNSAwIDAgMC0uMjcxLS40NDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2tpcFN0YXJ0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDRhLjUuNSAwIDAgMSAxIDB2My4yNDhsNi4yNjctMy42MzZjLjU0LS4zMTMgMS4yMzIuMDY2IDEuMjMyLjY5NnY3LjM4NGMwIC42My0uNjkyIDEuMDEtMS4yMzIuNjk3TDUgOC43NTNWMTJhLjUuNSAwIDAgMS0xIDBWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa2lwU3RhcnQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCA0YS41LjUgMCAwIDEgMSAwdjMuMjQ4bDYuMjY3LTMuNjM2Yy41Mi0uMzAyIDEuMjMzLjA0MyAxLjIzMy42OTZ2Ny4zODRjMCAuNjUzLS43MTMuOTk4LTEuMjMzLjY5Nkw1IDguNzUyVjEyYS41LjUgMCAwIDEtMSAwVjR6bTcuNS42MzNMNS42OTYgOGw1LjgwNCAzLjM2N1Y0LjYzM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTa3lwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY3MSAwYy44OCAwIDEuNzMzLjI0NyAyLjQ2OC43MDJhNy40MjMgNy40MjMgMCAwIDEgNi4wMiAyLjExOCA3LjM3MiA3LjM3MiAwIDAgMSAyLjE2NyA1LjIxNWMwIC4zNDQtLjAyNC42ODctLjA3MiAxLjAyNmE0LjY2MiA0LjY2MiAwIDAgMSAuNiAyLjI4MSA0LjY0NSA0LjY0NSAwIDAgMS0xLjM3IDMuMjk0QTQuNjczIDQuNjczIDAgMCAxIDExLjE4IDE2Yy0uODQgMC0xLjY1OC0uMjI2LTIuMzctLjY0NGE3LjQyMyA3LjQyMyAwIDAgMS02LjExNC0yLjEwN0E3LjM3NCA3LjM3NCAwIDAgMSAuNTI5IDguMDM1YzAtLjM2My4wMjYtLjcyNC4wOC0xLjA4MWE0LjY0NCA0LjY0NCAwIDAgMSAuNzYtNS41OUE0LjY4IDQuNjggMCAwIDEgNC42NyAwem0uNDQ3IDcuMDFjLjE4LjMwOS40My41NzIuNzI5Ljc2OWE3LjA3IDcuMDcgMCAwIDAgMS4yNTcuNjUzYy40OTIuMjA1Ljg3My4zOCAxLjE0NS41MjMuMjI5LjExMi40MzcuMjY0LjYxNS40NDguMTM1LjE0Mi4yMS4zMzEuMjEuNTI4YS44NzIuODcyIDAgMCAxLS4zMzUuNzIzYy0uMjkxLjE5Ni0uNjQuMjg5LS45OS4yNjRhMi42MTggMi42MTggMCAwIDEtMS4wNDgtLjIwNiAxMS40NCAxMS40NCAwIDAgMS0uNTMyLS4yNTMgMS4yODQgMS4yODQgMCAwIDAtLjU4Ny0uMTUuNzE3LjcxNyAwIDAgMC0uNTAxLjE3Ni42My42MyAwIDAgMC0uMTk1LjQ5MS43OTYuNzk2IDAgMCAwIC4xNDguNDgyIDEuMiAxLjIgMCAwIDAgLjQ1Ni4zNTQgNS4xMTMgNS4xMTMgMCAwIDAgMi4yMTIuNDE5IDQuNTU0IDQuNTU0IDAgMCAwIDEuNjI0LS4yNjUgMi4yOTYgMi4yOTYgMCAwIDAgMS4wOC0uODAxYy4yNjctLjM5LjQwMi0uODU1LjM4Ni0xLjMyN2EyLjA5IDIuMDkgMCAwIDAtLjI3OS0xLjEwMSAyLjUzIDIuNTMgMCAwIDAtLjc3Mi0uNzkyQTcuMTk4IDcuMTk4IDAgMCAwIDguNDg2IDcuM2ExLjA1IDEuMDUgMCAwIDAtLjE0NS0uMDU4IDE4LjE4MiAxOC4xODIgMCAwIDEtMS4wMTMtLjQ0NyAxLjgyNyAxLjgyNyAwIDAgMS0uNTQtLjM4Ny43MjcuNzI3IDAgMCAxLS4yLS41MDguODA1LjgwNSAwIDAgMSAuMzg1LS43MjMgMS43NiAxLjc2IDAgMCAxIC45NjgtLjI0N2MuMjYtLjAwMy41Mi4wMy43NzIuMDk2LjI3NC4wNzkuNTQyLjE3Ny44MDIuMjkzLjEwNS4wNDkuMjIuMDc1LjMzNi4wNzZhLjYuNiAwIDAgMCAuNDUzLS4xOS42OS42OSAwIDAgMCAuMTgtLjQ5Ni43MTcuNzE3IDAgMCAwLS4xNy0uNDc2IDEuMzc0IDEuMzc0IDAgMCAwLS41NTYtLjM1NCAzLjY5IDMuNjkgMCAwIDAtLjcwOC0uMTgzIDUuOTYzIDUuOTYzIDAgMCAwLTEuMDIyLS4wNzggNC41MyA0LjUzIDAgMCAwLTEuNTM2LjI1OCAyLjcxIDIuNzEgMCAwIDAtMS4xNzQuNzg0IDEuOTEgMS45MSAwIDAgMC0uNDUgMS4yODdjLS4wMS4zNy4wNzYuNzM2LjI1IDEuMDYzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NsYWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuMzYyIDEwLjExYzAgLjkyNi0uNzU2IDEuNjgxLTEuNjgxIDEuNjgxUzAgMTEuMDM2IDAgMTAuMTExQzAgOS4xODYuNzU2IDguNDMgMS42OCA4LjQzaDEuNjgydjEuNjh6bS44NDYgMGMwLS45MjQuNzU2LTEuNjggMS42ODEtMS42OHMxLjY4MS43NTYgMS42ODEgMS42OHY0LjIxYzAgLjkyNC0uNzU2IDEuNjgtMS42OCAxLjY4YTEuNjg1IDEuNjg1IDAgMCAxLTEuNjgyLTEuNjh2LTQuMjF6TTUuODkgMy4zNjJjLS45MjYgMC0xLjY4Mi0uNzU2LTEuNjgyLTEuNjgxUzQuOTY0IDAgNS44OSAwczEuNjguNzU2IDEuNjggMS42OHYxLjY4Mkg1Ljg5em0wIC44NDZjLjkyNCAwIDEuNjguNzU2IDEuNjggMS42ODFTNi44MTQgNy41NyA1Ljg5IDcuNTdIMS42OEMuNzU3IDcuNTcgMCA2LjgxNCAwIDUuODljMC0uOTI2Ljc1Ni0xLjY4MiAxLjY4LTEuNjgyaDQuMjF6bTYuNzQ5IDEuNjgyYzAtLjkyNi43NTUtMS42ODIgMS42OC0xLjY4Mi45MjUgMCAxLjY4MS43NTYgMS42ODEgMS42ODFzLS43NTYgMS42ODEtMS42OCAxLjY4MWgtMS42ODFWNS44OXptLS44NDggMGMwIC45MjQtLjc1NSAxLjY4LTEuNjggMS42OEExLjY4NSAxLjY4NSAwIDAgMSA4LjQzIDUuODlWMS42OEM4LjQzLjc1NyA5LjE4NiAwIDEwLjExIDBjLjkyNiAwIDEuNjgxLjc1NiAxLjY4MSAxLjY4djQuMjF6bS0xLjY4MSA2Ljc0OGMuOTI2IDAgMS42ODIuNzU2IDEuNjgyIDEuNjgxUzExLjAzNiAxNiAxMC4xMSAxNnMtMS42ODEtLjc1Ni0xLjY4MS0xLjY4di0xLjY4MmgxLjY4em0wLS44NDdjLS45MjQgMC0xLjY4LS43NTUtMS42OC0xLjY4IDAtLjkyNS43NTYtMS42ODEgMS42OC0xLjY4MWg0LjIxYy45MjQgMCAxLjY4Ljc1NiAxLjY4IDEuNjggMCAuOTI2LS43NTYgMS42ODEtMS42OCAxLjY4MWgtNC4yMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTbGFzaENpcmNsZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwem0tNC42NDYtMi42NDZhLjUuNSAwIDAgMC0uNzA4LS43MDhsLTYgNmEuNS41IDAgMCAwIC43MDguNzA4bDYtNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTbGFzaENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjM1NCA0LjY0NmEuNS41IDAgMCAwLS43MDggMGwtNiA2YS41LjUgMCAwIDAgLjcwOC43MDhsNi02YS41LjUgMCAwIDAgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NsYXNoTGcgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNzA3IDEuMjkzYTEgMSAwIDAgMSAwIDEuNDE0bC0xMiAxMmExIDEgMCAwIDEtMS40MTQtMS40MTRsMTItMTJhMSAxIDAgMCAxIDEuNDE0IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2xhc2hTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptOS4zNTQgNS4zNTQtNiA2YS41LjUgMCAwIDEtLjcwOC0uNzA4bDYtNmEuNS41IDAgMCAxIC43MDguNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NsYXNoU3F1YXJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDFhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFoMTJ6TTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS4zNTQgNC42NDZhLjUuNSAwIDAgMSAwIC43MDhsLTYgNmEuNS41IDAgMCAxLS43MDgtLjcwOGw2LTZhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU2xhc2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMzU0IDQuNjQ2YS41LjUgMCAwIDEgMCAuNzA4bC02IDZhLjUuNSAwIDAgMS0uNzA4LS43MDhsNi02YS41LjUgMCAwIDEgLjcwOCAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NsaWRlcnMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExLjUgMmExLjUgMS41IDAgMSAwIDAgMyAxLjUgMS41IDAgMCAwIDAtM3pNOS4wNSAzYTIuNSAyLjUgMCAwIDEgNC45IDBIMTZ2MWgtMi4wNWEyLjUgMi41IDAgMCAxLTQuOSAwSDBWM2g5LjA1ek00LjUgN2ExLjUgMS41IDAgMSAwIDAgMyAxLjUgMS41IDAgMCAwIDAtM3pNMi4wNSA4YTIuNSAyLjUgMCAwIDEgNC45IDBIMTZ2MUg2Ljk1YTIuNSAyLjUgMCAwIDEtNC45IDBIMFY4aDIuMDV6bTkuNDUgNGExLjUgMS41IDAgMSAwIDAgMyAxLjUgMS41IDAgMCAwIDAtM3ptLTIuNDUgMWEyLjUgMi41IDAgMCAxIDQuOSAwSDE2djFoLTIuMDVhMi41IDIuNSAwIDAgMS00LjkgMEgwdi0xaDkuMDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU21hcnR3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDVhLjUuNSAwIDAgMC0xIDB2M0g2YS41LjUgMCAwIDAgMCAxaDIuNWEuNS41IDAgMCAwIC41LS41VjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNCAxLjY2N3YuMzgzQTIuNSAyLjUgMCAwIDAgMiA0LjV2N2EyLjUgMi41IDAgMCAwIDIgMi40NXYuMzgzQzQgMTUuMjUzIDQuNzQ2IDE2IDUuNjY3IDE2aDQuNjY2Yy45MiAwIDEuNjY3LS43NDYgMS42NjctMS42Njd2LS4zODNhMi41IDIuNSAwIDAgMCAyLTIuNDVWOGguNWEuNS41IDAgMCAwIC41LS41di0yYS41LjUgMCAwIDAtLjUtLjVIMTR2LS41YTIuNSAyLjUgMCAwIDAtMi0yLjQ1di0uMzgzQzEyIC43NDcgMTEuMjU0IDAgMTAuMzMzIDBINS42NjdDNC43NDcgMCA0IC43NDYgNCAxLjY2N3pNNC41IDNoN0ExLjUgMS41IDAgMCAxIDEzIDQuNXY3YTEuNSAxLjUgMCAwIDEtMS41IDEuNWgtN0ExLjUgMS41IDAgMCAxIDMgMTEuNXYtN0ExLjUgMS41IDAgMCAxIDQuNSAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NuYXBjaGF0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE1Ljk4IDExLjkzYy0uMDY4LS4yMzItLjQwNS0uMzk1LS40MDUtLjM5NWwtLjA4Mi0uMDQ0YTYuNDYyIDYuNDYyIDAgMCAxLTEuNDY2LS45NiA1LjAyOCA1LjAyOCAwIDAgMS0uODUtLjk2NiAzLjc3NSAzLjc3NSAwIDAgMS0uNDctLjk2NmMtLjAzLS4xMjYtLjAyNy0uMTczIDAtLjIzOGEuMzYuMzYgMCAwIDEgLjExNi0uMTNjLjE4Ny0uMTMyLjQ5LS4zMy42NzctLjQ0OC4xNi0uMTA2LjMtLjE5NC4zODEtLjI1Mi4yNjItLjE4NC40MzktLjM2Ny41NDQtLjU2OGEuOTg3Ljk4NyAwIDAgMCAuMDQ4LS44MjdjLS4xNDMtLjM3Ny0uNDk3LS42MDUtLjk0Ni0uNjA1LS4wOTggMC0uMjA0LjAxLS4zMDYuMDM0YTQuMzI1IDQuMzI1IDAgMCAwLS43MDcuMjI4Yy0uMDE0LjAwNy0uMDMtLjAwNy0uMDMtLjAyLjAyLS41MDcuMDQzLTEuMTg4LS4wMTEtMS44MzQtLjA1MS0uNTg1LS4xNy0xLjA3OC0uMzY4LTEuNTA3YTQuMDUzIDQuMDUzIDAgMCAwLS42NTYtLjk4MyAzLjk4OSAzLjk4OSAwIDAgMC0xLjAzNy0uODMzQzkuNjk3LjIwNyA4Ljg4IDAgNy45OTIgMGMtLjg4OCAwLTEuNy4yMDctMi40MTkuNjE2YTQuMDQzIDQuMDQzIDAgMCAwLTEuMDM3LjgzM2MtLjIuMjMxLS40Ni41NTEtLjY1Ni45ODMtLjE5OC40MjktLjMxNy45MjItLjM2OCAxLjUwNy0uMDU0LjY1LS4wMzQgMS4yNzYtLjAxIDEuODMzIDAgLjAxNy0uMDE3LjAyOC0uMDMuMDJhNS4xOTUgNS4xOTUgMCAwIDAtLjcwNS0uMjI3IDEuMzQgMS4zNCAwIDAgMC0uMzA2LS4wMzRjLS40NDkgMC0uODAzLjIyOC0uOTQ2LjYwNWEuOTc1Ljk3NSAwIDAgMCAuMDQ4LjgyN2MuMTA1LjIuMjg2LjM4OC41NDQuNTY4LjA4Mi4wNTguMjE4LjE0Ni4zODEuMjUyLjE4LjExOS40NzYuMzEuNjY0LjQ0MmEuNDM0LjQzNCAwIDAgMSAuMTI5LjE0Yy4wMjcuMDY4LjAzLjExNS0uMDA0LjI0OC0uMDU3LjE5NC0uMTkuNTQtLjQ2Ni45NTZhNC45OSA0Ljk5IDAgMCAxLS44NS45NjYgNi40NjggNi40NjggMCAwIDEtMS40NTYuOTU5Yy0uMDI3LjAxNC0uMDU4LjAyNy0uMDkyLjA0NyAwIDAtLjMzMy4xNy0uMzk0LjM4OC0uMDkyLjMyMy4xNTMuNjI2LjQwNS43OS40MTEuMjY1LjkxNS40MDggMS4yMDQuNDg2LjA4MS4wMi4xNTMuMDQuMjIuMDYxYS40NTcuNDU3IDAgMCAxIC4xOTEuMTEyYy4wNTguMDcyLjA2NS4xNjQuMDg1LjI2Ni4wMy4xNy4xMDIuMzguMzEzLjUyNy4yMzIuMTYuNTI3LjE3Ljg5OC4xODcuMzkxLjAxNC44NzguMDM0IDEuNDMyLjIxOC4yNTkuMDg1LjQ5LjIyOC43NjIuMzk0LjU2NS4zNDcgMS4yNjYuNzggMi40NjYuNzggMS4yMDEgMCAxLjkwOS0uNDM2IDIuNDc3LS43ODMuMjY4LS4xNjMuNS0uMzA2Ljc1Mi0uMzkxLjU1NC0uMTg0IDEuMDQtLjIgMS40MzItLjIxOC4zNzQtLjAxNC42NjYtLjAyNC44OTgtLjE4Ny4yMjQtLjE1Ni4yOTItLjM4OC4zMi0uNTY1LjAxNi0uMDg1LjAyNy0uMTYzLjA3OC0uMjI4LjA0LS4wNTQuMTM5LS4wOTEuMTgzLS4xMDhsLjIyOC0uMDY1Yy4yOTMtLjA3OC42NTctLjE3IDEuMDk5LS40MjIuNTM3LS4zLjU3NS0uNjcuNTE3LS44NTR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU25vdyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YS41LjUgMCAwIDEtLjUtLjV2LTEuMjkzbC0uNjQ2LjY0N2EuNS41IDAgMCAxLS43MDctLjcwOEw3LjUgMTIuNzkzVjguODY2bC0zLjQgMS45NjMtLjQ5NiAxLjg1YS41LjUgMCAxIDEtLjk2Ni0uMjZsLjIzNy0uODgyLTEuMTIuNjQ2YS41LjUgMCAwIDEtLjUtLjg2NmwxLjEyLS42NDYtLjg4NC0uMjM3YS41LjUgMCAxIDEgLjI2LS45NjZsMS44NDguNDk1TDcgOCAzLjYgNi4wMzdsLTEuODUuNDk1YS41LjUgMCAwIDEtLjI1OC0uOTY2bC44ODMtLjIzNy0xLjEyLS42NDZhLjUuNSAwIDEgMSAuNS0uODY2bDEuMTIuNjQ2LS4yMzctLjg4M2EuNS41IDAgMSAxIC45NjYtLjI1OGwuNDk1IDEuODQ5TDcuNSA3LjEzNFYzLjIwN0w2LjE0NyAxLjg1NGEuNS41IDAgMSAxIC43MDctLjcwOGwuNjQ2LjY0N1YuNWEuNS41IDAgMSAxIDEgMHYxLjI5M2wuNjQ3LS42NDdhLjUuNSAwIDEgMSAuNzA3LjcwOEw4LjUgMy4yMDd2My45MjdsMy40LTEuOTYzLjQ5Ni0xLjg1YS41LjUgMCAxIDEgLjk2Ni4yNmwtLjIzNi44ODIgMS4xMi0uNjQ2YS41LjUgMCAwIDEgLjUuODY2bC0xLjEyLjY0Ni44ODMuMjM3YS41LjUgMCAxIDEtLjI2Ljk2NmwtMS44NDgtLjQ5NUw5IDhsMy40IDEuOTYzIDEuODQ5LS40OTVhLjUuNSAwIDAgMSAuMjU5Ljk2NmwtLjg4My4yMzcgMS4xMi42NDZhLjUuNSAwIDAgMS0uNS44NjZsLTEuMTItLjY0Ni4yMzYuODgzYS41LjUgMCAxIDEtLjk2Ni4yNThsLS40OTUtMS44NDktMy40LTEuOTYzdjMuOTI3bDEuMzUzIDEuMzUzYS41LjUgMCAwIDEtLjcwNy43MDhsLS42NDctLjY0N1YxNS41YS41LjUgMCAwIDEtLjUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTbm93MiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE2YS41LjUgMCAwIDEtLjUtLjV2LTEuMjkzbC0uNjQ2LjY0N2EuNS41IDAgMCAxLS43MDctLjcwOEw3LjUgMTIuNzkzdi0xLjA4NmwtLjY0Ni42NDdhLjUuNSAwIDAgMS0uNzA3LS43MDhMNy41IDEwLjI5M1Y4Ljg2NmwtMS4yMzYuNzEzLS40OTUgMS44NWEuNS41IDAgMSAxLS45NjYtLjI2bC4yMzctLjg4Mi0uOTQuNTQyLS40OTYgMS44NWEuNS41IDAgMSAxLS45NjYtLjI2bC4yMzctLjg4Mi0xLjEyLjY0NmEuNS41IDAgMCAxLS41LS44NjZsMS4xMi0uNjQ2LS44ODQtLjIzN2EuNS41IDAgMSAxIC4yNi0uOTY2bDEuODQ4LjQ5NS45NC0uNTQyLS44ODItLjIzN2EuNS41IDAgMSAxIC4yNTgtLjk2NmwxLjg1LjQ5NUw3IDhsLTEuMjM2LS43MTMtMS44NDkuNDk1YS41LjUgMCAxIDEtLjI1OC0uOTY2bC44ODMtLjIzNy0uOTQtLjU0Mi0xLjg1LjQ5NWEuNS41IDAgMCAxLS4yNTgtLjk2NmwuODgzLS4yMzctMS4xMi0uNjQ2YS41LjUgMCAxIDEgLjUtLjg2NmwxLjEyLjY0Ni0uMjM3LS44ODNhLjUuNSAwIDAgMSAuOTY2LS4yNThsLjQ5NSAxLjg0OS45NC41NDItLjIzNi0uODgzYS41LjUgMCAwIDEgLjk2Ni0uMjU4bC40OTUgMS44NDkgMS4yMzYuNzEzVjUuNzA3TDYuMTQ3IDQuMzU0YS41LjUgMCAxIDEgLjcwNy0uNzA4bC42NDYuNjQ3VjMuMjA3TDYuMTQ3IDEuODU0YS41LjUgMCAxIDEgLjcwNy0uNzA4bC42NDYuNjQ3Vi41YS41LjUgMCAwIDEgMSAwdjEuMjkzbC42NDctLjY0N2EuNS41IDAgMSAxIC43MDcuNzA4TDguNSAzLjIwN3YxLjA4NmwuNjQ3LS42NDdhLjUuNSAwIDEgMSAuNzA3LjcwOEw4LjUgNS43MDd2MS40MjdsMS4yMzYtLjcxMy40OTUtMS44NWEuNS41IDAgMSAxIC45NjYuMjZsLS4yMzYuODgyLjk0LS41NDIuNDk1LTEuODVhLjUuNSAwIDEgMSAuOTY2LjI2bC0uMjM2Ljg4MiAxLjEyLS42NDZhLjUuNSAwIDAgMSAuNS44NjZsLTEuMTIuNjQ2Ljg4My4yMzdhLjUuNSAwIDEgMS0uMjYuOTY2bC0xLjg0OC0uNDk1LS45NC41NDIuODgzLjIzN2EuNS41IDAgMSAxLS4yNi45NjZsLTEuODQ4LS40OTVMOSA4bDEuMjM2LjcxMyAxLjg0OS0uNDk1YS41LjUgMCAwIDEgLjI1OS45NjZsLS44ODMuMjM3Ljk0LjU0MiAxLjg0OS0uNDk1YS41LjUgMCAwIDEgLjI1OS45NjZsLS44ODMuMjM3IDEuMTIuNjQ2YS41LjUgMCAwIDEtLjUuODY2bC0xLjEyLS42NDYuMjM2Ljg4M2EuNS41IDAgMSAxLS45NjYuMjU4bC0uNDk1LTEuODQ5LS45NC0uNTQyLjIzNi44ODNhLjUuNSAwIDAgMS0uOTY2LjI1OEw5LjczNiA5LjU4IDguNSA4Ljg2NnYxLjQyN2wxLjM1NCAxLjM1M2EuNS41IDAgMCAxLS43MDcuNzA4bC0uNjQ3LS42NDd2MS4wODZsMS4zNTQgMS4zNTNhLjUuNSAwIDAgMS0uNzA3LjcwOGwtLjY0Ny0uNjQ3VjE1LjVhLjUuNSAwIDAgMS0uNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1Nub3czIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNy41YS41LjUgMCAxIDAgMCAxIC41LjUgMCAwIDAgMC0xelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTZhLjUuNSAwIDAgMS0uNS0uNXYtMS4yOTNsLS42NDYuNjQ3YS41LjUgMCAwIDEtLjcwNy0uNzA4TDcuNSAxMi43OTN2LTEuNTFsLTIuMDUzLTEuMjMyLTEuMzQ4Ljc3OC0uNDk1IDEuODVhLjUuNSAwIDEgMS0uOTY2LS4yNmwuMjM3LS44ODItMS4xMi42NDZhLjUuNSAwIDAgMS0uNS0uODY2bDEuMTItLjY0Ni0uODgzLS4yMzdhLjUuNSAwIDEgMSAuMjU4LS45NjZsMS44NS40OTVMNSA5LjE1NXYtMi4zMWwtMS40LS44MDgtMS44NS40OTVhLjUuNSAwIDEgMS0uMjU5LS45NjZsLjg4NC0uMjM3LTEuMTItLjY0NmEuNS41IDAgMCAxIC41LS44NjZsMS4xMi42NDYtLjIzNy0uODgzYS41LjUgMCAxIDEgLjk2Ni0uMjU4bC40OTUgMS44NDkgMS4zNDguNzc4TDcuNSA0LjcxN3YtMS41MUw2LjE0NyAxLjg1NGEuNS41IDAgMSAxIC43MDctLjcwOGwuNjQ2LjY0N1YuNWEuNS41IDAgMCAxIDEgMHYxLjI5M2wuNjQ3LS42NDdhLjUuNSAwIDEgMSAuNzA3LjcwOEw4LjUgMy4yMDd2MS41MWwyLjA1MyAxLjIzMiAxLjM0OC0uNzc4LjQ5NS0xLjg1YS41LjUgMCAxIDEgLjk2Ni4yNmwtLjIzNi44ODIgMS4xMi0uNjQ2YS41LjUgMCAwIDEgLjUuODY2bC0xLjEyLjY0Ni44ODMuMjM3YS41LjUgMCAxIDEtLjI2Ljk2NmwtMS44NDgtLjQ5NS0xLjQuODA4djIuMzFsMS40LjgwOCAxLjg0OS0uNDk1YS41LjUgMCAxIDEgLjI1OS45NjZsLS44ODMuMjM3IDEuMTIuNjQ2YS41LjUgMCAwIDEtLjUuODY2bC0xLjEyLS42NDYuMjM2Ljg4M2EuNS41IDAgMSAxLS45NjYuMjU4bC0uNDk1LTEuODQ5LTEuMzQ4LS43NzhMOC41IDExLjI4M3YxLjUxbDEuMzU0IDEuMzUzYS41LjUgMCAwIDEtLjcwNy43MDhsLS42NDctLjY0N1YxNS41YS41LjUgMCAwIDEtLjUuNXptMi02Ljc4M1Y2Ljc4M2wtMi0xLjItMiAxLjJ2Mi40MzRsMiAxLjIgMi0xLjJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU29ydEFscGhhRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45NiA3SDkuMDI4di0uNjkxbDIuNTc5LTMuNzJ2LS4wNTRIOS4wOTh2LS44NjdoMy43ODV2LjY5MWwtMi41NjcgMy43MnYuMDU0aDIuNjQ1Vjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjA4MiAxMi42MjkgOS42NjQgMTRIOC41OThsMS43ODktNS4zMzJoMS4yMzRMMTMuNDAyIDE0aC0xLjEybC0uNDE5LTEuMzcxaC0xLjc4MXptMS41Ny0uNzg1TDExIDkuNjg4aC0uMDQ3bC0uNjUyIDIuMTU2aDEuMzUxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAyLjVhLjUuNSAwIDAgMC0xIDB2OS43OTNsLTEuMTQ2LTEuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMiAxLjk5OS4wMDcuMDA3YS40OTcuNDk3IDAgMCAwIC43LS4wMDZsMi0yYS41LjUgMCAwIDAtLjcwNy0uNzA4TDQuNSAxMi4yOTNWMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnRBbHBoYURvd24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjA4MiA1LjYyOSA5LjY2NCA3SDguNTk4bDEuNzg5LTUuMzMyaDEuMjM0TDEzLjQwMiA3aC0xLjEybC0uNDE5LTEuMzcxaC0xLjc4MXptMS41Ny0uNzg1TDExIDIuNjg3aC0uMDQ3bC0uNjUyIDIuMTU3aDEuMzUxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjk2IDE0SDkuMDI4di0uNjkxbDIuNTc5LTMuNzJ2LS4wNTRIOS4wOTh2LS44NjdoMy43ODV2LjY5MWwtMi41NjcgMy43MnYuMDU0aDIuNjQ1VjE0ek00LjUgMi41YS41LjUgMCAwIDAtMSAwdjkuNzkzbC0xLjE0Ni0xLjE0N2EuNS41IDAgMCAwLS43MDguNzA4bDIgMS45OTkuMDA3LjAwN2EuNDk3LjQ5NyAwIDAgMCAuNy0uMDA2bDItMmEuNS41IDAgMCAwLS43MDctLjcwOEw0LjUgMTIuMjkzVjIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTb3J0QWxwaGFVcEFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45NiA3SDkuMDI4di0uNjkxbDIuNTc5LTMuNzJ2LS4wNTRIOS4wOTh2LS44NjdoMy43ODV2LjY5MWwtMi41NjcgMy43MnYuMDU0aDIuNjQ1Vjd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEwLjA4MiAxMi42MjkgOS42NjQgMTRIOC41OThsMS43ODktNS4zMzJoMS4yMzRMMTMuNDAyIDE0aC0xLjEybC0uNDE5LTEuMzcxaC0xLjc4MXptMS41Ny0uNzg1TDExIDkuNjg4aC0uMDQ3bC0uNjUyIDIuMTU2aDEuMzUxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAxMy41YS41LjUgMCAwIDEtMSAwVjMuNzA3TDIuMzU0IDQuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMS45OTkuMDA3LS4wMDdhLjQ5OC40OTggMCAwIDEgLjcuMDA2bDIgMmEuNS41IDAgMSAxLS43MDcuNzA4TDQuNSAzLjcwN1YxMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnRBbHBoYVVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMC4wODIgNS42MjkgOS42NjQgN0g4LjU5OGwxLjc4OS01LjMzMmgxLjIzNEwxMy40MDIgN2gtMS4xMmwtLjQxOS0xLjM3MWgtMS43ODF6bTEuNTctLjc4NUwxMSAyLjY4N2gtLjA0N2wtLjY1MiAyLjE1N2gxLjM1MXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMi45NiAxNEg5LjAyOHYtLjY5MWwyLjU3OS0zLjcydi0uMDU0SDkuMDk4di0uODY3aDMuNzg1di42OTFsLTIuNTY3IDMuNzJ2LjA1NGgyLjY0NVYxNHptLTguNDYtLjVhLjUuNSAwIDAgMS0xIDBWMy43MDdMMi4zNTQgNC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMi0xLjk5OS4wMDctLjAwN2EuNDk4LjQ5OCAwIDAgMSAuNy4wMDZsMiAyYS41LjUgMCAxIDEtLjcwNy43MDhMNC41IDMuNzA3VjEzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU29ydERvd25BbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDMuNWEuNS41IDAgMCAwLTEgMHY4Ljc5M2wtMS4xNDYtMS4xNDdhLjUuNSAwIDAgMC0uNzA4LjcwOGwyIDEuOTk5LjAwNy4wMDdhLjQ5Ny40OTcgMCAwIDAgLjctLjAwNmwyLTJhLjUuNSAwIDAgMC0uNzA3LS43MDhMMy41IDEyLjI5M1YzLjV6bTQgLjVhLjUuNSAwIDAgMSAwLTFoMWEuNS41IDAgMCAxIDAgMWgtMXptMCAzYS41LjUgMCAwIDEgMC0xaDNhLjUuNSAwIDAgMSAwIDFoLTN6bTAgM2EuNS41IDAgMCAxIDAtMWg1YS41LjUgMCAwIDEgMCAxaC01ek03IDEyLjVhLjUuNSAwIDAgMCAuNS41aDdhLjUuNSAwIDAgMCAwLTFoLTdhLjUuNSAwIDAgMC0uNS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnREb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAyLjVhLjUuNSAwIDAgMC0xIDB2OC43OTNsLTEuMTQ2LTEuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMiAxLjk5OS4wMDcuMDA3YS40OTcuNDk3IDAgMCAwIC43LS4wMDZsMi0yYS41LjUgMCAwIDAtLjcwNy0uNzA4TDMuNSAxMS4yOTNWMi41em0zLjUgMWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXpNNy41IDZhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXptMCAzYS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAwLTFoLTN6bTAgM2EuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnROdW1lcmljRG93bkFsdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMzYgNy4wOThjLTEuMTM3IDAtMS43MDgtLjY1Ny0xLjc2Mi0xLjI3OGgxLjAwNGMuMDU4LjIyMy4zNDMuNDUuNzczLjQ1LjgyNCAwIDEuMTY0LS44MjkgMS4xMzMtMS44NTZoLS4wNTljLS4xNDguMzktLjU3Ljc0Mi0xLjI2MS43NDItLjkxIDAtMS43Mi0uNjEzLTEuNzItMS43NTggMC0xLjE0OC44NDgtMS44MzYgMS45NzMtMS44MzYgMS4wOSAwIDIuMDYzLjYzNyAyLjA2MyAyLjY4OCAwIDEuODY3LS43MjMgMi44NDgtMi4xNDUgMi44NDh6bS4wNjItMi43MzVjLjUwNCAwIC45MzMtLjMzNi45MzMtLjk3MiAwLS42MzMtLjM5OC0xLjAwOC0uOTQtMS4wMDgtLjUyIDAtLjkyNy4zNzUtLjkyNyAxIDAgLjY0LjQxOC45OC45MzQuOTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDM4IDguNjY4VjE0SDExLjM5VjkuNjg0aC0uMDUxbC0xLjIxMS44NTl2LS45NjlsMS4yNjItLjkwNmgxLjA0NnpNNC41IDIuNWEuNS41IDAgMCAwLTEgMHY5Ljc5M2wtMS4xNDYtMS4xNDdhLjUuNSAwIDAgMC0uNzA4LjcwOGwyIDEuOTk5LjAwNy4wMDdhLjQ5Ny40OTcgMCAwIDAgLjctLjAwNmwyLTJhLjUuNSAwIDAgMC0uNzA3LS43MDhMNC41IDEyLjI5M1YyLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU29ydE51bWVyaWNEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQzOCAxLjY2OFY3SDExLjM5VjIuNjg0aC0uMDUxbC0xLjIxMS44NTl2LS45NjlsMS4yNjItLjkwNmgxLjA0NnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTEuMzYgMTQuMDk4Yy0xLjEzNyAwLTEuNzA4LS42NTctMS43NjItMS4yNzhoMS4wMDRjLjA1OC4yMjMuMzQzLjQ1Ljc3My40NS44MjQgMCAxLjE2NC0uODI5IDEuMTMzLTEuODU2aC0uMDU5Yy0uMTQ4LjM5LS41Ny43NDItMS4yNjEuNzQyLS45MSAwLTEuNzItLjYxMy0xLjcyLTEuNzU4IDAtMS4xNDguODQ4LTEuODM1IDEuOTczLTEuODM1IDEuMDkgMCAyLjA2My42MzYgMi4wNjMgMi42ODcgMCAxLjg2Ny0uNzIzIDIuODQ4LTIuMTQ1IDIuODQ4em0uMDYyLTIuNzM1Yy41MDQgMCAuOTMzLS4zMzYuOTMzLS45NzIgMC0uNjMzLS4zOTgtMS4wMDgtLjk0LTEuMDA4LS41MiAwLS45MjcuMzc1LS45MjcgMSAwIC42NC40MTguOTguOTM0Ljk4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNSAyLjVhLjUuNSAwIDAgMC0xIDB2OS43OTNsLTEuMTQ2LTEuMTQ3YS41LjUgMCAwIDAtLjcwOC43MDhsMiAxLjk5OS4wMDcuMDA3YS40OTcuNDk3IDAgMCAwIC43LS4wMDZsMi0yYS41LjUgMCAwIDAtLjcwNy0uNzA4TDQuNSAxMi4yOTNWMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnROdW1lcmljVXBBbHQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExLjM2IDcuMDk4Yy0xLjEzNyAwLTEuNzA4LS42NTctMS43NjItMS4yNzhoMS4wMDRjLjA1OC4yMjMuMzQzLjQ1Ljc3My40NS44MjQgMCAxLjE2NC0uODI5IDEuMTMzLTEuODU2aC0uMDU5Yy0uMTQ4LjM5LS41Ny43NDItMS4yNjEuNzQyLS45MSAwLTEuNzItLjYxMy0xLjcyLTEuNzU4IDAtMS4xNDguODQ4LTEuODM2IDEuOTczLTEuODM2IDEuMDkgMCAyLjA2My42MzcgMi4wNjMgMi42ODggMCAxLjg2Ny0uNzIzIDIuODQ4LTIuMTQ1IDIuODQ4em0uMDYyLTIuNzM1Yy41MDQgMCAuOTMzLS4zMzYuOTMzLS45NzIgMC0uNjMzLS4zOTgtMS4wMDgtLjk0LTEuMDA4LS41MiAwLS45MjcuMzc1LS45MjcgMSAwIC42NC40MTguOTguOTM0Ljk4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjQzOCA4LjY2OFYxNEgxMS4zOVY5LjY4NGgtLjA1MWwtMS4yMTEuODU5di0uOTY5bDEuMjYyLS45MDZoMS4wNDZ6TTQuNSAxMy41YS41LjUgMCAwIDEtMSAwVjMuNzA3TDIuMzU0IDQuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMS45OTkuMDA3LS4wMDdhLjQ5OC40OTggMCAwIDEgLjcuMDA2bDIgMmEuNS41IDAgMSAxLS43MDcuNzA4TDQuNSAzLjcwN1YxMy41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvcnROdW1lcmljVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDM4IDEuNjY4VjdIMTEuMzlWMi42ODRoLS4wNTFsLTEuMjExLjg1OXYtLjk2OWwxLjI2Mi0uOTA2aDEuMDQ2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xMS4zNiAxNC4wOThjLTEuMTM3IDAtMS43MDgtLjY1Ny0xLjc2Mi0xLjI3OGgxLjAwNGMuMDU4LjIyMy4zNDMuNDUuNzczLjQ1LjgyNCAwIDEuMTY0LS44MjkgMS4xMzMtMS44NTZoLS4wNTljLS4xNDguMzktLjU3Ljc0Mi0xLjI2MS43NDItLjkxIDAtMS43Mi0uNjEzLTEuNzItMS43NTggMC0xLjE0OC44NDgtMS44MzUgMS45NzMtMS44MzUgMS4wOSAwIDIuMDYzLjYzNiAyLjA2MyAyLjY4NyAwIDEuODY3LS43MjMgMi44NDgtMi4xNDUgMi44NDh6bS4wNjItMi43MzVjLjUwNCAwIC45MzMtLjMzNi45MzMtLjk3MiAwLS42MzMtLjM5OC0xLjAwOC0uOTQtMS4wMDgtLjUyIDAtLjkyNy4zNzUtLjkyNyAxIDAgLjY0LjQxOC45OC45MzQuOTh6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC41IDEzLjVhLjUuNSAwIDAgMS0xIDBWMy43MDdMMi4zNTQgNC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMi0xLjk5OS4wMDctLjAwN2EuNDk4LjQ5OCAwIDAgMSAuNy4wMDZsMiAyYS41LjUgMCAxIDEtLjcwNy43MDhMNC41IDMuNzA3VjEzLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU29ydFVwQWx0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxMy41YS41LjUgMCAwIDEtMSAwVjQuNzA3TDEuMzU0IDUuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMS45OTkuMDA3LS4wMDdhLjQ5OC40OTggMCAwIDEgLjcuMDA2bDIgMmEuNS41IDAgMSAxLS43MDcuNzA4TDMuNSA0LjcwN1YxMy41em00LTkuNWEuNS41IDAgMCAxIDAtMWgxYS41LjUgMCAwIDEgMCAxaC0xem0wIDNhLjUuNSAwIDAgMSAwLTFoM2EuNS41IDAgMCAxIDAgMWgtM3ptMCAzYS41LjUgMCAwIDEgMC0xaDVhLjUuNSAwIDAgMSAwIDFoLTV6TTcgMTIuNWEuNS41IDAgMCAwIC41LjVoN2EuNS41IDAgMCAwIDAtMWgtN2EuNS41IDAgMCAwLS41LjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU29ydFVwIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxMi41YS41LjUgMCAwIDEtMSAwVjMuNzA3TDEuMzU0IDQuODU0YS41LjUgMCAxIDEtLjcwOC0uNzA4bDItMS45OTkuMDA3LS4wMDdhLjQ5OC40OTggMCAwIDEgLjcuMDA2bDIgMmEuNS41IDAgMSAxLS43MDcuNzA4TDMuNSAzLjcwN1YxMi41em0zLjUtOWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXpNNy41IDZhLjUuNSAwIDAgMCAwIDFoNWEuNS41IDAgMCAwIDAtMWgtNXptMCAzYS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAwLTFoLTN6bTAgM2EuNS41IDAgMCAwIDAgMWgxYS41LjUgMCAwIDAgMC0xaC0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NvdW5kd2F2ZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNOC41IDJhLjUuNSAwIDAgMSAuNS41djExYS41LjUgMCAwIDEtMSAwdi0xMWEuNS41IDAgMCAxIC41LS41em0tMiAyYS41LjUgMCAwIDEgLjUuNXY3YS41LjUgMCAwIDEtMSAwdi03YS41LjUgMCAwIDEgLjUtLjV6bTQgMGEuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLTEgMHYtN2EuNS41IDAgMCAxIC41LS41em0tNiAxLjVBLjUuNSAwIDAgMSA1IDZ2NGEuNS41IDAgMCAxLTEgMFY2YS41LjUgMCAwIDEgLjUtLjV6bTggMGEuNS41IDAgMCAxIC41LjV2NGEuNS41IDAgMCAxLTEgMFY2YS41LjUgMCAwIDEgLjUtLjV6bS0xMCAxQS41LjUgMCAwIDEgMyA3djJhLjUuNSAwIDAgMS0xIDBWN2EuNS41IDAgMCAxIC41LS41em0xMiAwYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtMSAwVjdhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTcGVha2VyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05IDRhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAwem0tMi41IDYuNWExLjUgMS41IDAgMSAxIDMgMCAxLjUgMS41IDAgMCAxLTMgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHptNiA0YTIgMiAwIDEgMS00IDAgMiAyIDAgMCAxIDQgMHpNOCA3YTMuNSAzLjUgMCAxIDEgMCA3IDMuNSAzLjUgMCAwIDEgMC03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NwZWFrZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFINGExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWg4ek00IDBhMiAyIDAgMCAwLTIgMnYxMmEyIDIgMCAwIDAgMiAyaDhhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJINHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDQuNzVhLjc1Ljc1IDAgMSAxIDAtMS41Ljc1Ljc1IDAgMCAxIDAgMS41ek04IDZhMiAyIDAgMSAwIDAtNCAyIDIgMCAwIDAgMCA0em0wIDNhMS41IDEuNSAwIDEgMCAwIDMgMS41IDEuNSAwIDAgMCAwLTN6bS0zLjUgMS41YTMuNSAzLjUgMCAxIDEgNyAwIDMuNSAzLjUgMCAwIDEtNyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NwZWVkb21ldGVyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMmEuNS41IDAgMCAxIC41LjVWNGEuNS41IDAgMCAxLTEgMFYyLjVBLjUuNSAwIDAgMSA4IDJ6TTMuNzMyIDMuNzMyYS41LjUgMCAwIDEgLjcwNyAwbC45MTUuOTE0YS41LjUgMCAxIDEtLjcwOC43MDhsLS45MTQtLjkxNWEuNS41IDAgMCAxIDAtLjcwN3pNMiA4YS41LjUgMCAwIDEgLjUtLjVoMS41ODZhLjUuNSAwIDAgMSAwIDFIMi41QS41LjUgMCAwIDEgMiA4em05LjUgMGEuNS41IDAgMCAxIC41LS41aDEuNWEuNS41IDAgMCAxIDAgMUgxMmEuNS41IDAgMCAxLS41LS41em0uNzU0LTQuMjQ2YS4zODkuMzg5IDAgMCAwLS41MjctLjAyTDcuNTQ3IDcuMzFBLjkxLjkxIDAgMSAwIDguODUgOC41NjlsMy40MzQtNC4yOTdhLjM4OS4zODkgMCAwIDAtLjAyOS0uNTE4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02LjY2NCAxNS44ODlBOCA4IDAgMSAxIDkuMzM2LjExYTggOCAwIDAgMS0yLjY3MiAxNS43OHptLTQuNjY1LTQuMjgzQTExLjk0NSAxMS45NDUgMCAwIDEgOCAxMGMyLjE4NiAwIDQuMjM2LjU4NSA2LjAwMSAxLjYwNmE3IDcgMCAxIDAtMTIuMDAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3BlZWRvbWV0ZXIyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNGEuNS41IDAgMCAxIC41LjVWNmEuNS41IDAgMCAxLTEgMFY0LjVBLjUuNSAwIDAgMSA4IDR6TTMuNzMyIDUuNzMyYS41LjUgMCAwIDEgLjcwNyAwbC45MTUuOTE0YS41LjUgMCAxIDEtLjcwOC43MDhsLS45MTQtLjkxNWEuNS41IDAgMCAxIDAtLjcwN3pNMiAxMGEuNS41IDAgMCAxIC41LS41aDEuNTg2YS41LjUgMCAwIDEgMCAxSDIuNUEuNS41IDAgMCAxIDIgMTB6bTkuNSAwYS41LjUgMCAwIDEgLjUtLjVoMS41YS41LjUgMCAwIDEgMCAxSDEyYS41LjUgMCAwIDEtLjUtLjV6bS43NTQtNC4yNDZhLjM4OS4zODkgMCAwIDAtLjUyNy0uMDJMNy41NDcgOS4zMWEuOTEuOTEgMCAxIDAgMS4zMDIgMS4yNThsMy40MzQtNC4yOTdhLjM4OS4zODkgMCAwIDAtLjAyOS0uNTE4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0wIDEwYTggOCAwIDEgMSAxNS41NDcgMi42NjFjLS40NDIgMS4yNTMtMS44NDUgMS42MDItMi45MzIgMS4yNUMxMS4zMDkgMTMuNDg4IDkuNDc1IDEzIDggMTNjLTEuNDc0IDAtMy4zMS40ODgtNC42MTUuOTExLTEuMDg3LjM1Mi0yLjQ5LjAwMy0yLjkzMi0xLjI1QTcuOTg4IDcuOTg4IDAgMCAxIDAgMTB6bTgtN2E3IDcgMCAwIDAtNi42MDMgOS4zMjljLjIwMy41NzUuOTIzLjg3NiAxLjY4LjYzQzQuMzk3IDEyLjUzMyA2LjM1OCAxMiA4IDEyczMuNjA0LjUzMiA0LjkyMy45NmMuNzU3LjI0NSAxLjQ3Ny0uMDU2IDEuNjgtLjYzMUE3IDcgMCAwIDAgOCAzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NwZWxsY2hlY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yMTcgMTEuMDY4YzEuMjE2IDAgMS45NDgtLjg2OSAxLjk0OC0yLjMxdi0uNzAyYzAtMS40NC0uNzI3LTIuMzA1LTEuOTI5LTIuMzA1LS43NDIgMC0xLjMyOC4zNDctMS40OTkuODg5aC0uMDYzVjMuOTgzaC0xLjI5VjExaDEuMjd2LS43OTFoLjA2NGMuMjEuNTMyLjc3Ni44NiAxLjQ5OS44NnptLS40My0xLjAyNWMtLjY2IDAtMS4xMTMtLjUxOC0xLjExMy0xLjI4VjguMTJjMC0uODI1LjQyLTEuMzQzIDEuMDk4LTEuMzQzLjY4NCAwIDEuMDc1LjUxOCAxLjA3NSAxLjQxNnYuNDVjMCAuODg4LS4zODYgMS40MDEtMS4wNiAxLjQwMXptLTUuNTgzIDEuMDM1Yy43NjcgMCAxLjIwMS0uMzU2IDEuNDA2LS43MzdoLjA1OVYxMWgxLjIxNlY3LjUxOWMwLTEuMzE0LS45NDctMS43ODMtMi4xMS0xLjc4M0MxLjM1NSA1LjczNi43NSA2LjQyLjY5IDcuMjdoMS4yMTZjLjA2NC0uMzIzLjMxMy0uNTUyLjg0LS41NTIuNTI3IDAgLjg2NC4yNDkuODY0Ljc3MXYuNDY0SDIuMzQ2QzEuMTQ1IDcuOTUzLjUgOC41NjguNSA5LjQ5NmMwIC45NzcuNjkzIDEuNTgyIDEuNzA0IDEuNTgyem0uNDItLjk0N2MtLjQ0IDAtLjg0NS0uMjM1LS44NDUtLjcxOCAwLS4zOTUuMjY5LS42ODQuODQtLjY4NGguOTkxdi41MzhjMCAuNTAzLS40NDQuODY0LS45ODYuODY0em04Ljg5Ny41NjdjLS41NzctLjQtLjktMS4wODgtLjktMS45ODN2LS42NWMwLTEuNDIuODk0LTIuMzM4IDIuMzA1LTIuMzM4IDEuMzUyIDAgMi4xMTkuODIgMi4xMzkgMS44MDZoLTEuMTg3Yy0uMDQtLjM1MS0uMjgzLS43NzYtLjkxOC0uNzc2LS42NzQgMC0xLjA0NS41MTctMS4wNDUgMS4zMjh2LjYyNWMwIC40NjguMTIxLjgzNC4zNDMgMS4wNjdsLS43MzcuOTJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQuNDY5IDkuNDE0YS43NS43NSAwIDAgMSAuMTE3IDEuMDU1bC00IDVhLjc1Ljc1IDAgMCAxLTEuMTE2LjA2MWwtMi41LTIuNWEuNzUuNzUgMCAxIDEgMS4wNi0xLjA2bDEuOTA4IDEuOTA3IDMuNDc2LTQuMzQ2YS43NS43NSAwIDAgMSAxLjA1NS0uMTE3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1Nwb3RpZnkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAwYTggOCAwIDEgMCAwIDE2QTggOCAwIDAgMCA4IDB6bTMuNjY5IDExLjUzOGEuNDk4LjQ5OCAwIDAgMS0uNjg2LjE2NWMtMS44NzktMS4xNDctNC4yNDMtMS40MDctNy4wMjgtLjc3YS40OTkuNDk5IDAgMCAxLS4yMjItLjk3M2MzLjA0OC0uNjk2IDUuNjYyLS4zOTcgNy43Ny44OTJhLjUuNSAwIDAgMSAuMTY2LjY4NnptLjk3OS0yLjE3OGEuNjI0LjYyNCAwIDAgMS0uODU4LjIwNWMtMi4xNS0xLjMyMS01LjQyOC0xLjcwNC03Ljk3Mi0uOTMyYS42MjUuNjI1IDAgMCAxLS4zNjItMS4xOTRjMi45MDUtLjg4MSA2LjUxNy0uNDU0IDguOTg2IDEuMDYzYS42MjQuNjI0IDAgMCAxIC4yMDYuODU4em0uMDg0LTIuMjY4QzEwLjE1NCA1LjU2IDUuOSA1LjQxOSAzLjQzOCA2LjE2NmEuNzQ4Ljc0OCAwIDEgMS0uNDM0LTEuNDMyYzIuODI1LS44NTcgNy41MjMtLjY5MiAxMC40OTIgMS4wN2EuNzQ3Ljc0NyAwIDEgMS0uNzY0IDEuMjg4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NxdWFyZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1NxdWFyZUhhbGYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNVYxaDZhMSAxIDAgMCAxIDEgMXYxMmExIDEgMCAwIDEtMSAxSDh6bTYgMWEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N0YWNrT3ZlcmZsb3cgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNDEyIDE0LjU3MlYxMC4yOWgxLjQyOFYxNkgxdi01LjcxaDEuNDI4djQuMjgyaDkuOTg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODU3IDEzLjE0NWg3LjEzN3YtMS40MjhIMy44NTd2MS40Mjh6TTEwLjI1NCAwIDkuMTA4Ljg1Mmw0LjI2IDUuNzI3IDEuMTQ2LS44NTJMMTAuMjU0IDB6bS0zLjU0IDMuMzc3IDUuNDg0IDQuNTY3LjkxMy0xLjA5N0w3LjYyNyAyLjI4bC0uOTE0IDEuMDk3ek00LjkyMiA2LjU1bDYuNDcgMy4wMTMuNjAzLTEuMjk0LTYuNDctMy4wMTMtLjYwMyAxLjI5NHptLS45MjUgMy4zNDQgNi45ODUgMS40NjkuMjk0LTEuMzk4LTYuOTg1LTEuNDY4LS4yOTQgMS4zOTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3RhY2sgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJtMTQuMTIgMTAuMTYzIDEuNzE1Ljg1OGMuMjIuMTEuMjIuNDI0IDAgLjUzNEw4LjI2NyAxNS4zNGEuNTk4LjU5OCAwIDAgMS0uNTM0IDBMLjE2NSAxMS41NTVhLjI5OS4yOTkgMCAwIDEgMC0uNTM0bDEuNzE2LS44NTggNS4zMTcgMi42NTljLjUwNS4yNTIgMS4xLjI1MiAxLjYwNCAwbDUuMzE3LTIuNjZ6TTcuNzMzLjA2M2EuNTk4LjU5OCAwIDAgMSAuNTM0IDBsNy41NjggMy43ODRhLjMuMyAwIDAgMSAwIC41MzVMOC4yNjcgOC4xNjVhLjU5OC41OTggMCAwIDEtLjUzNCAwTC4xNjUgNC4zODJhLjI5OS4yOTkgMCAwIDEgMC0uNTM1TDcuNzMzLjA2M3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0xNC4xMiA2LjU3NiAxLjcxNS44NThjLjIyLjExLjIyLjQyNCAwIC41MzRsLTcuNTY4IDMuNzg0YS41OTguNTk4IDAgMCAxLS41MzQgMEwuMTY1IDcuOTY4YS4yOTkuMjk5IDAgMCAxIDAtLjUzNGwxLjcxNi0uODU4IDUuMzE3IDIuNjU5Yy41MDUuMjUyIDEuMS4yNTIgMS42MDQgMGw1LjMxNy0yLjY1OXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGFyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjYxMiAxNS40NDNjLS4zODYuMTk4LS44MjQtLjE0OS0uNzQ2LS41OTJsLjgzLTQuNzNMLjE3MyA2Ljc2NWMtLjMyOS0uMzE0LS4xNTgtLjg4OC4yODMtLjk1bDQuODk4LS42OTZMNy41MzguNzkyYy4xOTctLjM5LjczLS4zOS45MjcgMGwyLjE4NCA0LjMyNyA0Ljg5OC42OTZjLjQ0MS4wNjIuNjEyLjYzNi4yODIuOTVsLTMuNTIyIDMuMzU2LjgzIDQuNzNjLjA3OC40NDMtLjM2Ljc5LS43NDYuNTkyTDggMTMuMTg3bC00LjM4OSAyLjI1NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGFySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjM1NCA1LjExOSA3LjUzOC43OTJBLjUxNi41MTYgMCAwIDEgOCAuNWMuMTgzIDAgLjM2Ni4wOTcuNDY1LjI5MmwyLjE4NCA0LjMyNyA0Ljg5OC42OTZBLjUzNy41MzcgMCAwIDEgMTYgNi4zMmEuNTQ4LjU0OCAwIDAgMS0uMTcuNDQ1bC0zLjUyMyAzLjM1Ni44MyA0LjczYy4wNzguNDQzLS4zNi43OS0uNzQ2LjU5Mkw4IDEzLjE4N2wtNC4zODkgMi4yNTZhLjUyLjUyIDAgMCAxLS4xNDYuMDVjLS4zNDIuMDYtLjY2OC0uMjU0LS42LS42NDJsLjgzLTQuNzNMLjE3MyA2Ljc2NWEuNTUuNTUgMCAwIDEtLjE3Mi0uNDAzLjU4LjU4IDAgMCAxIC4wODUtLjMwMi41MTMuNTEzIDAgMCAxIC4zNy0uMjQ1bDQuODk4LS42OTZ6TTggMTIuMDI3YS41LjUgMCAwIDEgLjIzMi4wNTZsMy42ODYgMS44OTQtLjY5NC0zLjk1N2EuNTY1LjU2NSAwIDAgMSAuMTYyLS41MDVsMi45MDctMi43Ny00LjA1Mi0uNTc2YS41MjUuNTI1IDAgMCAxLS4zOTMtLjI4OEw4LjAwMSAyLjIyMyA4IDIuMjI2djkuOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGFyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuODY2IDE0Ljg1Yy0uMDc4LjQ0NC4zNi43OTEuNzQ2LjU5M2w0LjM5LTIuMjU2IDQuMzg5IDIuMjU2Yy4zODYuMTk4LjgyNC0uMTQ5Ljc0Ni0uNTkybC0uODMtNC43MyAzLjUyMi0zLjM1NmMuMzMtLjMxNC4xNi0uODg4LS4yODItLjk1bC00Ljg5OC0uNjk2TDguNDY1Ljc5MmEuNTEzLjUxMyAwIDAgMC0uOTI3IDBMNS4zNTQgNS4xMmwtNC44OTguNjk2Yy0uNDQxLjA2Mi0uNjEyLjYzNi0uMjgzLjk1bDMuNTIzIDMuMzU2LS44MyA0Ljczem00LjkwNS0yLjc2Ny0zLjY4NiAxLjg5NC42OTQtMy45NTdhLjU2NS41NjUgMCAwIDAtLjE2My0uNTA1TDEuNzEgNi43NDVsNC4wNTItLjU3NmEuNTI1LjUyNSAwIDAgMCAuMzkzLS4yODhMOCAyLjIyM2wxLjg0NyAzLjY1OGEuNTI1LjUyNSAwIDAgMCAuMzkzLjI4OGw0LjA1Mi41NzUtMi45MDYgMi43N2EuNTY1LjU2NSAwIDAgMC0uMTYzLjUwNmwuNjk0IDMuOTU3LTMuNjg2LTEuODk0YS41MDMuNTAzIDAgMCAwLS40NjEgMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGFycyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY1NyA2LjI0N2MuMTEtLjMzLjU3Ni0uMzMuNjg2IDBsLjY0NSAxLjkzN2EyLjg5IDIuODkgMCAwIDAgMS44MjkgMS44MjhsMS45MzYuNjQ1Yy4zMy4xMS4zMy41NzYgMCAuNjg2bC0xLjkzNy42NDVhMi44OSAyLjg5IDAgMCAwLTEuODI4IDEuODI5bC0uNjQ1IDEuOTM2YS4zNjEuMzYxIDAgMCAxLS42ODYgMGwtLjY0NS0xLjkzN2EyLjg5IDIuODkgMCAwIDAtMS44MjgtMS44MjhsLTEuOTM3LS42NDVhLjM2MS4zNjEgMCAwIDEgMC0uNjg2bDEuOTM3LS42NDVhMi44OSAyLjg5IDAgMCAwIDEuODI4LTEuODI4bC42NDUtMS45Mzd6TTMuNzk0IDEuMTQ4YS4yMTcuMjE3IDAgMCAxIC40MTIgMGwuMzg3IDEuMTYyYy4xNzMuNTE4LjU3OS45MjQgMS4wOTcgMS4wOTdsMS4xNjIuMzg3YS4yMTcuMjE3IDAgMCAxIDAgLjQxMmwtMS4xNjIuMzg3QTEuNzM0IDEuNzM0IDAgMCAwIDQuNTkzIDUuNjlsLS4zODcgMS4xNjJhLjIxNy4yMTcgMCAwIDEtLjQxMiAwTDMuNDA3IDUuNjlBMS43MzQgMS43MzQgMCAwIDAgMi4zMSA0LjU5M2wtMS4xNjItLjM4N2EuMjE3LjIxNyAwIDAgMSAwLS40MTJsMS4xNjItLjM4N0ExLjczNCAxLjczNCAwIDAgMCAzLjQwNyAyLjMxbC4zODctMS4xNjJ6TTEwLjg2My4wOTlhLjE0NS4xNDUgMCAwIDEgLjI3NCAwbC4yNTguNzc0Yy4xMTUuMzQ2LjM4Ni42MTcuNzMyLjczMmwuNzc0LjI1OGEuMTQ1LjE0NSAwIDAgMSAwIC4yNzRsLS43NzQuMjU4YTEuMTU2IDEuMTU2IDAgMCAwLS43MzIuNzMybC0uMjU4Ljc3NGEuMTQ1LjE0NSAwIDAgMS0uMjc0IDBsLS4yNTgtLjc3NGExLjE1NiAxLjE1NiAwIDAgMC0uNzMyLS43MzJMOS4xIDIuMTM3YS4xNDUuMTQ1IDAgMCAxIDAtLjI3NGwuNzc0LS4yNThjLjM0Ni0uMTE1LjYxNy0uMzg2LjczMi0uNzMyTDEwLjg2My4xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N0aWNraWVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDEuNVYxM2ExIDEgMCAwIDAgMSAxVjEuNWEuNS41IDAgMCAxIC41LS41SDE0YTEgMSAwIDAgMC0xLTFIMS41QTEuNSAxLjUgMCAwIDAgMCAxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDJBMS41IDEuNSAwIDAgMCAyIDMuNXYxMUExLjUgMS41IDAgMCAwIDMuNSAxNmg2LjA4NmExLjUgMS41IDAgMCAwIDEuMDYtLjQ0bDQuOTE1LTQuOTE0QTEuNSAxLjUgMCAwIDAgMTYgOS41ODZWMy41QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xMXptNiA4LjVhMSAxIDAgMCAxIDEtMWg0LjM5NmEuMjUuMjUgMCAwIDEgLjE3Ny40MjdsLTUuMTQ2IDUuMTQ2YS4yNS4yNSAwIDAgMS0uNDI3LS4xNzdWMTAuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGlja2llcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMEExLjUgMS41IDAgMCAwIDAgMS41VjEzYTEgMSAwIDAgMCAxIDFWMS41YS41LjUgMCAwIDEgLjUtLjVIMTRhMSAxIDAgMCAwLTEtMUgxLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy41IDJBMS41IDEuNSAwIDAgMCAyIDMuNXYxMUExLjUgMS41IDAgMCAwIDMuNSAxNmg2LjA4NmExLjUgMS41IDAgMCAwIDEuMDYtLjQ0bDQuOTE1LTQuOTE0QTEuNSAxLjUgMCAwIDAgMTYgOS41ODZWMy41QTEuNSAxLjUgMCAwIDAgMTQuNSAyaC0xMXpNMyAzLjVhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIC41LjVWOWgtNC41QTEuNSAxLjUgMCAwIDAgOSAxMC41VjE1SDMuNWEuNS41IDAgMCAxLS41LS41di0xMXptNyAxMS4yOTNWMTAuNWEuNS41IDAgMCAxIC41LS41aDQuMjkzTDEwIDE0Ljc5M3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGlja3lGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxQTEuNSAxLjUgMCAwIDAgMSAyLjV2MTFBMS41IDEuNSAwIDAgMCAyLjUgMTVoNi4wODZhMS41IDEuNSAwIDAgMCAxLjA2LS40NGw0LjkxNS00LjkxNEExLjUgMS41IDAgMCAwIDE1IDguNTg2VjIuNUExLjUgMS41IDAgMCAwIDEzLjUgMWgtMTF6bTYgOC41YTEgMSAwIDAgMSAxLTFoNC4zOTZhLjI1LjI1IDAgMCAxIC4xNzcuNDI3bC01LjE0NiA1LjE0NmEuMjUuMjUgMCAwIDEtLjQyNy0uMTc3VjkuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdGlja3kgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDFBMS41IDEuNSAwIDAgMCAxIDIuNXYxMUExLjUgMS41IDAgMCAwIDIuNSAxNWg2LjA4NmExLjUgMS41IDAgMCAwIDEuMDYtLjQ0bDQuOTE1LTQuOTE0QTEuNSAxLjUgMCAwIDAgMTUgOC41ODZWMi41QTEuNSAxLjUgMCAwIDAgMTMuNSAxaC0xMXpNMiAyLjVhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIC41LjVWOEg5LjVBMS41IDEuNSAwIDAgMCA4IDkuNVYxNEgyLjVhLjUuNSAwIDAgMS0uNS0uNXYtMTF6bTcgMTEuMjkzVjkuNWEuNS41IDAgMCAxIC41LS41aDQuMjkzTDkgMTMuNzkzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N0b3BCdG5GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnptNi41LTdBMS41IDEuNSAwIDAgMCA1IDYuNXYzQTEuNSAxLjUgMCAwIDAgNi41IDExaDNBMS41IDEuNSAwIDAgMCAxMSA5LjV2LTNBMS41IDEuNSAwIDAgMCA5LjUgNWgtM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdG9wQnRuIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSA1QTEuNSAxLjUgMCAwIDAgNSA2LjV2M0ExLjUgMS41IDAgMCAwIDYuNSAxMWgzQTEuNSAxLjUgMCAwIDAgMTEgOS41di0zQTEuNSAxLjUgMCAwIDAgOS41IDVoLTN6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCA0YTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjR6bTE1IDBhMSAxIDAgMCAwLTEtMUgyYTEgMSAwIDAgMC0xIDF2OGExIDEgMCAwIDAgMSAxaDEyYTEgMSAwIDAgMCAxLTFWNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdG9wQ2lyY2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTYuNSA1QTEuNSAxLjUgMCAwIDAgNSA2LjV2M0ExLjUgMS41IDAgMCAwIDYuNSAxMWgzQTEuNSAxLjUgMCAwIDAgMTEgOS41di0zQTEuNSAxLjUgMCAwIDAgOS41IDVoLTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3RvcENpcmNsZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE1QTcgNyAwIDEgMSA4IDFhNyA3IDAgMCAxIDAgMTR6bTAgMUE4IDggMCAxIDAgOCAwYTggOCAwIDAgMCAwIDE2elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgNi41QTEuNSAxLjUgMCAwIDEgNi41IDVoM0ExLjUgMS41IDAgMCAxIDExIDYuNXYzQTEuNSAxLjUgMCAwIDEgOS41IDExaC0zQTEuNSAxLjUgMCAwIDEgNSA5LjV2LTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3RvcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzLjVoNkExLjUgMS41IDAgMCAxIDEyLjUgNXY2YTEuNSAxLjUgMCAwIDEtMS41IDEuNUg1QTEuNSAxLjUgMCAwIDEgMy41IDExVjVBMS41IDEuNSAwIDAgMSA1IDMuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdG9wIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSA1QTEuNSAxLjUgMCAwIDEgNSAzLjVoNkExLjUgMS41IDAgMCAxIDEyLjUgNXY2YTEuNSAxLjUgMCAwIDEtMS41IDEuNUg1QTEuNSAxLjUgMCAwIDEgMy41IDExVjV6TTUgNC41YS41LjUgMCAwIDAtLjUuNXY2YS41LjUgMCAwIDAgLjUuNWg2YS41LjUgMCAwIDAgLjUtLjVWNWEuNS41IDAgMCAwLS41LS41SDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3RvcGxpZ2h0c0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTYgMGEyIDIgMCAwIDAtMiAySDJjLjE2Ny41LjggMS42IDIgMnYySDJjLjE2Ny41LjggMS42IDIgMnYySDJjLjE2Ny41LjggMS42IDIgMnYxYTIgMiAwIDAgMCAyIDJoNGEyIDIgMCAwIDAgMi0ydi0xYzEuMi0uNCAxLjgzMy0xLjUgMi0yaC0yVjhjMS4yLS40IDEuODMzLTEuNSAyLTJoLTJWNGMxLjItLjQgMS44MzMtMS41IDItMmgtMmEyIDIgMCAwIDAtMi0ySDZ6bTMuNSAzLjVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6bTAgNGExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHpNOCAxM2ExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdG9wbGlnaHRzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggNWExLjUgMS41IDAgMSAwIDAtMyAxLjUgMS41IDAgMCAwIDAgM3ptMCA0YTEuNSAxLjUgMCAxIDAgMC0zIDEuNSAxLjUgMCAwIDAgMCAzem0xLjUgMi41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMmEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMmgyYy0uMTY3LjUtLjggMS42LTIgMnYyaDJjLS4xNjcuNS0uOCAxLjYtMiAydjJoMmMtLjE2Ny41LS44IDEuNi0yIDJ2MWEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtMWMtMS4yLS40LTEuODMzLTEuNS0yLTJoMlY4Yy0xLjItLjQtMS44MzMtMS41LTItMmgyVjRjLTEuMi0uNC0xLjgzMy0xLjUtMi0yaDJ6bTItMWExIDEgMCAwIDAtMSAxdjExYTEgMSAwIDAgMCAxIDFoNGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUg2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N0b3B3YXRjaEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41IDBhLjUuNSAwIDAgMCAwIDFIN3YxLjA3QTcuMDAxIDcuMDAxIDAgMCAwIDggMTZhNyA3IDAgMCAwIDUuMjktMTEuNTg0LjUzMS41MzEgMCAwIDAgLjAxMy0uMDEybC4zNTQtLjM1NC4zNTMuMzU0YS41LjUgMCAxIDAgLjcwNy0uNzA3bC0xLjQxNC0xLjQxNWEuNS41IDAgMSAwLS43MDcuNzA3bC4zNTQuMzU0LS4zNTQuMzU0YS43MTcuNzE3IDAgMCAwLS4wMTIuMDEyQTYuOTczIDYuOTczIDAgMCAwIDkgMi4wNzFWMWguNWEuNS41IDAgMCAwIDAtMWgtM3ptMiA1LjZWOWEuNS41IDAgMCAxLS41LjVINC41YS41LjUgMCAwIDEgMC0xaDNWNS42YS41LjUgMCAxIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N0b3B3YXRjaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjUgNS42YS41LjUgMCAxIDAtMSAwdjIuOWgtM2EuNS41IDAgMCAwIDAgMUg4YS41LjUgMCAwIDAgLjUtLjVWNS42elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNSAxQS41LjUgMCAwIDEgNyAuNWgyYS41LjUgMCAwIDEgMCAxdi41N2MxLjM2LjE5NiAyLjU5NC43OCAzLjU4NCAxLjY0YS43MTUuNzE1IDAgMCAxIC4wMTItLjAxM2wuMzU0LS4zNTQtLjM1NC0uMzUzYS41LjUgMCAwIDEgLjcwNy0uNzA4bDEuNDE0IDEuNDE1YS41LjUgMCAxIDEtLjcwNy43MDdsLS4zNTMtLjM1NC0uMzU0LjM1NGEuNTEyLjUxMiAwIDAgMS0uMDEzLjAxMkE3IDcgMCAxIDEgNyAyLjA3MVYxLjVhLjUuNSAwIDAgMS0uNS0uNXpNOCAzYTYgNiAwIDEgMCAuMDAxIDEyQTYgNiAwIDAgMCA4IDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3RyYXZhIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzMxIDAgMiA5LjEyNWgyLjc4OEw2LjczIDUuNDk3bDEuOTMgMy42MjhoMi43NjZMNi43MzEgMHptNC42OTQgOS4xMjUtMS4zNzIgMi43NTZMOC42NiA5LjEyNUg2LjU0N0wxMC4wNTMgMTZsMy40ODQtNi44NzVoLTIuMTEyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1YnRyYWN0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDhhMiAyIDAgMCAxIDIgMnYyaDJhMiAyIDAgMCAxIDIgMnY4YTIgMiAwIDAgMS0yIDJINmEyIDIgMCAwIDEtMi0ydi0ySDJhMiAyIDAgMCAxLTItMlYyem0yLTFhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoOGExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1aXRDbHViRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMS41IDEyLjVhMy40OTMgMy40OTMgMCAwIDEtMi42ODQtMS4yNTQgMTkuOTIgMTkuOTIgMCAwIDAgMS41ODIgMi45MDdjLjIzMS4zNS0uMDIuODQ3LS40MzguODQ3SDYuMDRjLS40MTkgMC0uNjctLjQ5Ny0uNDM4LS44NDdhMTkuOTE5IDE5LjkxOSAwIDAgMCAxLjU4Mi0yLjkwNyAzLjUgMy41IDAgMSAxLTIuNTM4LTUuNzQzIDMuNSAzLjUgMCAxIDEgNi43MDggMEEzLjUgMy41IDAgMSAxIDExLjUgMTIuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdWl0Q2x1YiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDFhMy4yNSAzLjI1IDAgMCAwLTMuMjUgMy4yNWMwIC4xODYgMCAuMjkuMDE2LjQxLjAxNC4xMi4wNDUuMjcuMTIuNTI3bC4xOS42NjUtLjY5Mi0uMDI4YTMuMjUgMy4yNSAwIDEgMCAyLjM1NyA1LjMzNC41LjUgMCAwIDEgLjg0NC41MThsLS4wMDMuMDA1LS4wMDYuMDE1LS4wMjQuMDU1YTIxLjg5MyAyMS44OTMgMCAwIDEtLjQzOC45MiAyMi4zOCAyMi4zOCAwIDAgMS0xLjI2NiAyLjE5N2MtLjAxMy4wMTgtLjAyLjA1LjAwMS4wOS4wMS4wMi4wMjEuMDMuMDMuMDM2QS4wMzYuMDM2IDAgMCAwIDUuOSAxNWg0LjJjLjAxIDAgLjAxNi0uMDAyLjAyMi0uMDA2YS4wOTIuMDkyIDAgMCAwIC4wMjktLjAzNWMuMDItLjA0LjAxNC0uMDczLjAwMS0uMDkxYTIyLjg3NSAyMi44NzUgMCAwIDEtMS43MDQtMy4xMTdsLS4wMjQtLjA1NC0uMDA2LS4wMTUtLjAwMi0uMDA0YS41LjUgMCAwIDEgLjgzOC0uNTI0Yy42MDEuNyAxLjUxNiAxLjE2OCAyLjQ5NiAxLjE2OGEzLjI1IDMuMjUgMCAxIDAtLjEzOS02LjQ5OGwtLjY5OS4wMy4xOTktLjY3MWMuMTQtLjQ3LjE0LS43NDUuMTM5LS45MjdWNC4yNUEzLjI1IDMuMjUgMCAwIDAgOCAxem0yLjIwNyAxMi4wMjRjLjIyNS40MDUuNDg3Ljg0OC43OCAxLjI5NEMxMS40MzcgMTUgMTAuOTc1IDE2IDEwLjEgMTZINS45Yy0uODc2IDAtMS4zMzgtMS0uODg3LTEuNjgzLjI5MS0uNDQyLjU1Mi0uODguNzc2LTEuMjgzYTQuMjUgNC4yNSAwIDEgMS0yLjAwNy04LjE4NyAyLjc5IDIuNzkgMCAwIDEtLjAwOS0uMDY0Yy0uMDIzLS4xODctLjAyMy0uMzQ4LS4wMjMtLjUyVjQuMjVhNC4yNSA0LjI1IDAgMCAxIDguNSAwYzAgLjE0IDAgLjMzMy0uMDQuNTk2YTQuMjUgNC4yNSAwIDAgMS0uNDYgOC40NzYgNC4xODYgNC4xODYgMCAwIDEtMS41NDMtLjI5OHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdWl0RGlhbW9uZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi40NSA3LjQgNy4yIDEuMDY3YTEgMSAwIDAgMSAxLjYgMEwxMy41NSA3LjRhMSAxIDAgMCAxIDAgMS4yTDguOCAxNC45MzNhMSAxIDAgMCAxLTEuNiAwTDIuNDUgOC42YTEgMSAwIDAgMSAwLTEuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdWl0RGlhbW9uZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjM4NCAxLjIyNmEuNDYzLjQ2MyAwIDAgMC0uNzY4IDBsLTQuNTYgNi40NjhhLjUzNy41MzcgMCAwIDAgMCAuNjEybDQuNTYgNi40NjlhLjQ2My40NjMgMCAwIDAgLjc2OCAwbDQuNTYtNi40NjlhLjUzNy41MzcgMCAwIDAgMC0uNjEybC00LjU2LTYuNDY4ek02Ljg0OC42MTNhMS4zOSAxLjM5IDAgMCAxIDIuMzA0IDBsNC41NiA2LjQ2OGExLjYxIDEuNjEgMCAwIDEgMCAxLjgzOGwtNC41NiA2LjQ2OGExLjM5IDEuMzkgMCAwIDEtMi4zMDQgMEwyLjI4OCA4LjkyYTEuNjEgMS42MSAwIDAgMSAwLTEuODM4TDYuODQ4LjYxM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdWl0SGVhcnRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQgMWMyLjIxIDAgNCAxLjc1NSA0IDMuOTJDOCAyLjc1NSA5Ljc5IDEgMTIgMXM0IDEuNzU1IDQgMy45MmMwIDMuMjYzLTMuMjM0IDQuNDE0LTcuNjA4IDkuNjA4YS41MTMuNTEzIDAgMCAxLS43ODQgMEMzLjIzNCA5LjMzNCAwIDguMTgzIDAgNC45MiAwIDIuNzU1IDEuNzkgMSA0IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3VpdEhlYXJ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwibTggNi4yMzYtLjg5NC0xLjc4OWMtLjIyMi0uNDQzLS42MDctMS4wOC0xLjE1Mi0xLjU5NUM1LjQxOCAyLjM0NSA0Ljc3NiAyIDQgMiAyLjMyNCAyIDEgMy4zMjYgMSA0LjkyYzAgMS4yMTEuNTU0IDIuMDY2IDEuODY4IDMuMzcuMzM3LjMzNC43MjEuNjk1IDEuMTQ2IDEuMDkzQzUuMTIyIDEwLjQyMyA2LjUgMTEuNzE3IDggMTMuNDQ3YzEuNS0xLjczIDIuODc4LTMuMDI0IDMuOTg2LTQuMDY0LjQyNS0uMzk4LjgxLS43NiAxLjE0Ni0xLjA5M0MxNC40NDYgNi45ODYgMTUgNi4xMzEgMTUgNC45MiAxNSAzLjMyNiAxMy42NzYgMiAxMiAyYy0uNzc3IDAtMS40MTguMzQ1LTEuOTU0Ljg1Mi0uNTQ1LjUxNS0uOTMgMS4xNTItMS4xNTIgMS41OTVMOCA2LjIzNnptLjM5MiA4LjI5MmEuNTEzLjUxMyAwIDAgMS0uNzg0IDBjLTEuNjAxLTEuOTAyLTMuMDUtMy4yNjItNC4yNDMtNC4zODFDMS4zIDguMjA4IDAgNi45ODkgMCA0LjkyIDAgMi43NTUgMS43OSAxIDQgMWMxLjYgMCAyLjcxOSAxLjA1IDMuNDA0IDIuMDA4LjI2LjM2NS40NTguNzE2LjU5Ni45OTJhNy41NSA3LjU1IDAgMCAxIC41OTYtLjk5MkM5LjI4MSAyLjA0OSAxMC40IDEgMTIgMWMyLjIxIDAgNCAxLjc1NSA0IDMuOTIgMCAyLjA2OS0xLjMgMy4yODgtMy4zNjUgNS4yMjctMS4xOTMgMS4xMi0yLjY0MiAyLjQ4LTQuMjQzIDQuMzh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3VpdFNwYWRlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjE4NCAxMS4yNDZBMy41IDMuNSAwIDAgMSAxIDljMC0xLjYwMiAxLjE0LTIuNjMzIDIuNjYtNC4wMDhDNC45ODYgMy43OTIgNi42MDIgMi4zMyA4IDBjMS4zOTggMi4zMyAzLjAxNCAzLjc5MiA0LjM0IDQuOTkyQzEzLjg2IDYuMzY3IDE1IDcuMzk4IDE1IDlhMy41IDMuNSAwIDAgMS02LjE4NCAyLjI0NiAxOS45MiAxOS45MiAwIDAgMCAxLjU4MiAyLjkwN2MuMjMxLjM1LS4wMi44NDctLjQzOC44NDdINi4wNGMtLjQxOSAwLS42Ny0uNDk3LS40MzgtLjg0N2ExOS45MTkgMTkuOTE5IDAgMCAwIDEuNTgyLTIuOTA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1aXRTcGFkZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhLjUuNSAwIDAgMSAuNDI5LjI0M2MxLjM1OSAyLjI2NSAyLjkyNSAzLjY4MiA0LjI1IDQuODgyLjA5Ni4wODYuMTkuMTcuMjgyLjI1NUMxNC4zMDggNi42MDQgMTUuNSA3Ljc0NyAxNS41IDkuNWE0IDQgMCAwIDEtNS40MDYgMy43NDZjLjIzNS4zOS40OTEuNzgyLjcyMiAxLjEzMS40MzQuNjU5LS4wMSAxLjYyMy0uODU2IDEuNjIzSDYuMDRjLS44NDUgMC0xLjI5LS45NjQtLjg1Ni0xLjYyMy4yNjMtLjM5Ny41MS0uNzc3LjcyOC0xLjEzNEE0IDQgMCAwIDEgLjUgOS41YzAtMS43NTMgMS4xOTItMi44OTYgMi41MzktNC4xMmwuMjgxLS4yNTVjMS4zMjYtMS4yIDIuODkyLTIuNjE3IDQuMjUxLTQuODgyQS41LjUgMCAwIDEgOCAwek0zLjcxMSA2LjEyQzIuMzA4IDcuMzk2IDEuNSA4LjI1MyAxLjUgOS41YTMgMyAwIDAgMCA1LjI3NSAxLjk1Ni41LjUgMCAwIDEgLjg2OC40M2MtLjA5NC40MzgtLjMzLjkzMi0uNjExIDEuNDI4YTI5LjI0NyAyOS4yNDcgMCAwIDEtMS4wMTMgMS42MTQuMDMuMDMgMCAwIDAtLjAwNS4wMTguMDc0LjA3NCAwIDAgMCAuMDI0LjA1NGgzLjkyNGEuMDc0LjA3NCAwIDAgMCAuMDI0LS4wNTQuMDMuMDMgMCAwIDAtLjAwNS0uMDE4Yy0uMy0uNDU1LS42NTgtMS4wMDUtLjk2LTEuNTM1LS4yOTQtLjUxNC0uNTctMS4wNjQtLjY2NC0xLjUwN2EuNS41IDAgMCAxIC44NjgtLjQzQTMgMyAwIDAgMCAxNC41IDkuNWMwLTEuMjQ3LS44MDgtMi4xMDQtMi4yMTEtMy4zOEwxMiA1Ljg2Yy0xLjE5Ni0xLjA4NC0yLjY2OC0yLjQxNi00LTQuNDI0LTEuMzMyIDIuMDA4LTIuODA0IDMuMzQtNCA0LjQyMmwtLjI4OS4yNjF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3VuRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDEyYTQgNCAwIDEgMCAwLTggNCA0IDAgMCAwIDAgOHpNOCAwYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtMSAwdi0yQS41LjUgMCAwIDEgOCAwem0wIDEzYS41LjUgMCAwIDEgLjUuNXYyYS41LjUgMCAwIDEtMSAwdi0yQS41LjUgMCAwIDEgOCAxM3ptOC01YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxIDAtMWgyYS41LjUgMCAwIDEgLjUuNXpNMyA4YS41LjUgMCAwIDEtLjUuNWgtMmEuNS41IDAgMCAxIDAtMWgyQS41LjUgMCAwIDEgMyA4em0xMC42NTctNS42NTdhLjUuNSAwIDAgMSAwIC43MDdsLTEuNDE0IDEuNDE1YS41LjUgMCAxIDEtLjcwNy0uNzA4bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwem0tOS4xOTMgOS4xOTNhLjUuNSAwIDAgMSAwIC43MDdMMy4wNSAxMy42NTdhLjUuNSAwIDAgMS0uNzA3LS43MDdsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6bTkuMTkzIDIuMTIxYS41LjUgMCAwIDEtLjcwNyAwbC0xLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDctLjcwN2wxLjQxNCAxLjQxNGEuNS41IDAgMCAxIDAgLjcwN3pNNC40NjQgNC40NjVhLjUuNSAwIDAgMS0uNzA3IDBMMi4zNDMgMy4wNWEuNS41IDAgMSAxIC43MDctLjcwN2wxLjQxNCAxLjQxNGEuNS41IDAgMCAxIDAgLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxMWEzIDMgMCAxIDEgMC02IDMgMyAwIDAgMSAwIDZ6bTAgMWE0IDQgMCAxIDAgMC04IDQgNCAwIDAgMCAwIDh6TTggMGEuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLTEgMHYtMkEuNS41IDAgMCAxIDggMHptMCAxM2EuNS41IDAgMCAxIC41LjV2MmEuNS41IDAgMCAxLTEgMHYtMkEuNS41IDAgMCAxIDggMTN6bTgtNWEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMSAwLTFoMmEuNS41IDAgMCAxIC41LjV6TTMgOGEuNS41IDAgMCAxLS41LjVoLTJhLjUuNSAwIDAgMSAwLTFoMkEuNS41IDAgMCAxIDMgOHptMTAuNjU3LTUuNjU3YS41LjUgMCAwIDEgMCAuNzA3bC0xLjQxNCAxLjQxNWEuNS41IDAgMSAxLS43MDctLjcwOGwxLjQxNC0xLjQxNGEuNS41IDAgMCAxIC43MDcgMHptLTkuMTkzIDkuMTkzYS41LjUgMCAwIDEgMCAuNzA3TDMuMDUgMTMuNjU3YS41LjUgMCAwIDEtLjcwNy0uNzA3bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwem05LjE5MyAyLjEyMWEuNS41IDAgMCAxLS43MDcgMGwtMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3LS43MDdsMS40MTQgMS40MTRhLjUuNSAwIDAgMSAwIC43MDd6TTQuNDY0IDQuNDY1YS41LjUgMCAwIDEtLjcwNyAwTDIuMzQzIDMuMDVhLjUuNSAwIDEgMSAuNzA3LS43MDdsMS40MTQgMS40MTRhLjUuNSAwIDAgMSAwIC43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3VuZ2xhc3NlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDVhMiAyIDAgMCAwLTIgMnYuNUguNWEuNS41IDAgMCAwIDAgMUgxVjlhMiAyIDAgMCAwIDIgMmgxYTMgMyAwIDAgMCAzLTMgMSAxIDAgMSAxIDIgMCAzIDMgMCAwIDAgMyAzaDFhMiAyIDAgMCAwIDItMnYtLjVoLjVhLjUuNSAwIDAgMCAwLTFIMTVWN2EyIDIgMCAwIDAtMi0yaC0yYTIgMiAwIDAgMC0xLjg4OCAxLjMzOEExLjk5IDEuOTkgMCAwIDAgOCA2YTEuOTkgMS45OSAwIDAgMC0xLjExMi4zMzhBMiAyIDAgMCAwIDUgNUgzem0wIDFoLjk0MWMuMjY0IDAgLjM0OC4zNTYuMTEyLjQ3NGwtLjQ1Ny4yMjhhMiAyIDAgMCAwLS44OTQuODk0bC0uMjI4LjQ1N0MyLjM1NiA4LjI4OSAyIDguMjA1IDIgNy45NFY3YTEgMSAwIDAgMSAxLTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3VucmlzZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42NDYgMS4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMS41IDEuNWEuNS41IDAgMCAxLS43MDguNzA4TDguNSAyLjcwN1Y0LjVhLjUuNSAwIDAgMS0xIDBWMi43MDdsLS42NDYuNjQ3YS41LjUgMCAxIDEtLjcwOC0uNzA4bDEuNS0xLjV6TTIuMzQzIDQuMzQzYS41LjUgMCAwIDEgLjcwNyAwbDEuNDE0IDEuNDE0YS41LjUgMCAwIDEtLjcwNy43MDdMMi4zNDMgNS4wNWEuNS41IDAgMCAxIDAtLjcwN3ptMTEuMzE0IDBhLjUuNSAwIDAgMSAwIC43MDdsLTEuNDE0IDEuNDE0YS41LjUgMCAxIDEtLjcwNy0uNzA3bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwek0xMS43MDkgMTEuNWE0IDQgMCAxIDAtNy40MTggMEguNWEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMWgtMy43OXpNMCAxMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJBLjUuNSAwIDAgMSAwIDEwem0xMyAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1bnJpc2UgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42NDYgMS4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMS41IDEuNWEuNS41IDAgMCAxLS43MDguNzA4TDguNSAyLjcwN1Y0LjVhLjUuNSAwIDAgMS0xIDBWMi43MDdsLS42NDYuNjQ3YS41LjUgMCAxIDEtLjcwOC0uNzA4bDEuNS0xLjV6TTIuMzQzIDQuMzQzYS41LjUgMCAwIDEgLjcwNyAwbDEuNDE0IDEuNDE0YS41LjUgMCAwIDEtLjcwNy43MDdMMi4zNDMgNS4wNWEuNS41IDAgMCAxIDAtLjcwN3ptMTEuMzE0IDBhLjUuNSAwIDAgMSAwIC43MDdsLTEuNDE0IDEuNDE0YS41LjUgMCAxIDEtLjcwNy0uNzA3bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwek04IDdhMyAzIDAgMCAxIDIuNTk5IDQuNUg1LjRBMyAzIDAgMCAxIDggN3ptMy43MSA0LjVhNCA0IDAgMSAwLTcuNDE4IDBILjQ5OWEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMWgtMy43OXpNMCAxMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJBLjUuNSAwIDAgMSAwIDEwem0xMyAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1bnNldEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42NDYgNC44NTRhLjUuNSAwIDAgMCAuNzA4IDBsMS41LTEuNWEuNS41IDAgMCAwLS43MDgtLjcwOGwtLjY0Ni42NDdWMS41YS41LjUgMCAwIDAtMSAwdjEuNzkzbC0uNjQ2LS42NDdhLjUuNSAwIDEgMC0uNzA4LjcwOGwxLjUgMS41em0tNS4zMDMtLjUxYS41LjUgMCAwIDEgLjcwNyAwbDEuNDE0IDEuNDEzYS41LjUgMCAwIDEtLjcwNy43MDdMMi4zNDMgNS4wNWEuNS41IDAgMCAxIDAtLjcwN3ptMTEuMzE0IDBhLjUuNSAwIDAgMSAwIC43MDZsLTEuNDE0IDEuNDE0YS41LjUgMCAxIDEtLjcwNy0uNzA3bDEuNDE0LTEuNDE0YS41LjUgMCAwIDEgLjcwNyAwek0xMS43MDkgMTEuNWE0IDQgMCAxIDAtNy40MTggMEguNWEuNS41IDAgMCAwIDAgMWgxNWEuNS41IDAgMCAwIDAtMWgtMy43OXpNMCAxMGEuNS41IDAgMCAxIC41LS41aDJhLjUuNSAwIDAgMSAwIDFoLTJBLjUuNSAwIDAgMSAwIDEwem0xMyAwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1N1bnNldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjY0NiA0Ljg1NGEuNS41IDAgMCAwIC43MDggMGwxLjUtMS41YS41LjUgMCAwIDAtLjcwOC0uNzA4bC0uNjQ2LjY0N1YxLjVhLjUuNSAwIDAgMC0xIDB2MS43OTNsLS42NDYtLjY0N2EuNS41IDAgMSAwLS43MDguNzA4bDEuNSAxLjV6bS01LjMwMy0uNTFhLjUuNSAwIDAgMSAuNzA3IDBsMS40MTQgMS40MTNhLjUuNSAwIDAgMS0uNzA3LjcwN0wyLjM0MyA1LjA1YS41LjUgMCAwIDEgMC0uNzA3em0xMS4zMTQgMGEuNS41IDAgMCAxIDAgLjcwNmwtMS40MTQgMS40MTRhLjUuNSAwIDEgMS0uNzA3LS43MDdsMS40MTQtMS40MTRhLjUuNSAwIDAgMSAuNzA3IDB6TTggN2EzIDMgMCAwIDEgMi41OTkgNC41SDUuNEEzIDMgMCAwIDEgOCA3em0zLjcxIDQuNWE0IDQgMCAxIDAtNy40MTggMEguNDk5YS41LjUgMCAwIDAgMCAxaDE1YS41LjUgMCAwIDAgMC0xaC0zLjc5ek0wIDEwYS41LjUgMCAwIDEgLjUtLjVoMmEuNS41IDAgMCAxIDAgMWgtMkEuNS41IDAgMCAxIDAgMTB6bTEzIDBhLjUuNSAwIDAgMSAuNS0uNWgyYS41LjUgMCAwIDEgMCAxaC0yYS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3ltbWV0cnlIb3Jpem9udGFsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEzLjUgN2EuNS41IDAgMCAwIC4yNC0uOTM5bC0xMS02QS41LjUgMCAwIDAgMiAuNXY2YS41LjUgMCAwIDAgLjUuNWgxMXptLjQ4NSAyLjM3NmEuNS41IDAgMCAxLS4yNDYuNTYzbC0xMSA2QS41LjUgMCAwIDEgMiAxNS41di02YS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAuNDg1LjM3NnpNMTEuNTM5IDEwSDN2NC42NThMMTEuNTQgMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzU3ltbWV0cnlWZXJ0aWNhbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIuNWEuNS41IDAgMCAwLS45MzktLjI0bC02IDExQS41LjUgMCAwIDAgLjUgMTRoNmEuNS41IDAgMCAwIC41LS41di0xMXptMi4zNzYtLjQ4NGEuNS41IDAgMCAxIC41NjMuMjQ1bDYgMTFBLjUuNSAwIDAgMSAxNS41IDE0aC02YS41LjUgMCAwIDEtLjUtLjV2LTExYS41LjUgMCAwIDEgLjM3Ni0uNDg0ek0xMCA0LjQ2VjEzaDQuNjU4TDEwIDQuNDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGFibGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAyYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYyem0xNSAyaC00djNoNFY0em0wIDRoLTR2M2g0Vjh6bTAgNGgtNHYzaDNhMSAxIDAgMCAwIDEtMXYtMnptLTUgM3YtM0g2djNoNHptLTUgMHYtM0gxdjJhMSAxIDAgMCAwIDEgMWgzem0tNC00aDRWOEgxdjN6bTAtNGg0VjRIMXYzem01LTN2M2g0VjRINnptNCA0SDZ2M2g0Vjh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGFibGV0RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MTJhMiAyIDAgMCAxLTIgMkg0YTIgMiAwIDAgMS0yLTJWMnptNyAxMWExIDEgMCAxIDAtMiAwIDEgMSAwIDAgMCAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGFibGV0TGFuZHNjYXBlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDE0YTIgMiAwIDAgMS0yLTJWNGEyIDIgMCAwIDEgMi0yaDEyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDJ6bTExLTdhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RhYmxldExhbmRzY2FwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xIDRhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxdjhhMSAxIDAgMCAxLTEgMUgyYTEgMSAwIDAgMS0xLTFWNHptLTEgOGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnY4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE0IDhhMSAxIDAgMSAwLTIgMCAxIDEgMCAwIDAgMiAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RhYmxldCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMiAxYTEgMSAwIDAgMSAxIDF2MTJhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmExIDEgMCAwIDEgMS0xaDh6TTQgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoOGEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkg0elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMTRhMSAxIDAgMSAwIDAtMiAxIDEgMCAwIDAgMCAyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RhZ0ZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTEgMSAwIDAgMC0xIDF2NC41ODZhMSAxIDAgMCAwIC4yOTMuNzA3bDcgN2ExIDEgMCAwIDAgMS40MTQgMGw0LjU4Ni00LjU4NmExIDEgMCAwIDAgMC0xLjQxNGwtNy03QTEgMSAwIDAgMCA2LjU4NiAxSDJ6bTQgMy41YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RhZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDQuNWExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptLTEgMGEuNS41IDAgMSAwLTEgMCAuNS41IDAgMCAwIDEgMHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFoNC41ODZhMSAxIDAgMCAxIC43MDcuMjkzbDcgN2ExIDEgMCAwIDEgMCAxLjQxNGwtNC41ODYgNC41ODZhMSAxIDAgMCAxLTEuNDE0IDBsLTctN0ExIDEgMCAwIDEgMSA2LjU4NlYyYTEgMSAwIDAgMSAxLTF6bTAgNS41ODYgNyA3TDEzLjU4NiA5bC03LTdIMnY0LjU4NnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUYWdzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDJhMSAxIDAgMCAxIDEtMWg0LjU4NmExIDEgMCAwIDEgLjcwNy4yOTNsNyA3YTEgMSAwIDAgMSAwIDEuNDE0bC00LjU4NiA0LjU4NmExIDEgMCAwIDEtMS40MTQgMGwtNy03QTEgMSAwIDAgMSAyIDYuNTg2VjJ6bTMuNSA0YTEuNSAxLjUgMCAxIDAgMC0zIDEuNSAxLjUgMCAwIDAgMCAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMjkzIDcuNzkzQTEgMSAwIDAgMSAxIDcuMDg2VjJhMSAxIDAgMCAwLTEgMXY0LjU4NmExIDEgMCAwIDAgLjI5My43MDdsNyA3YTEgMSAwIDAgMCAxLjQxNCAwbC4wNDMtLjA0My03LjQ1Ny03LjQ1N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUYWdzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMnY0LjU4Nmw3IDdMMTQuNTg2IDlsLTctN0gzek0yIDJhMSAxIDAgMCAxIDEtMWg0LjU4NmExIDEgMCAwIDEgLjcwNy4yOTNsNyA3YTEgMSAwIDAgMSAwIDEuNDE0bC00LjU4NiA0LjU4NmExIDEgMCAwIDEtMS40MTQgMGwtNy03QTEgMSAwIDAgMSAyIDYuNTg2VjJ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS41IDVhLjUuNSAwIDEgMSAwLTEgLjUuNSAwIDAgMSAwIDF6bTAgMWExLjUgMS41IDAgMSAwIDAtMyAxLjUgMS41IDAgMCAwIDAgM3pNMSA3LjA4NmExIDEgMCAwIDAgLjI5My43MDdMOC43NSAxNS4yNWwtLjA0My4wNDNhMSAxIDAgMCAxLTEuNDE0IDBsLTctN0ExIDEgMCAwIDEgMCA3LjU4NlYzYTEgMSAwIDAgMSAxLTF2NS4wODZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZWdyYW0gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTYgOEE4IDggMCAxIDEgMCA4YTggOCAwIDAgMSAxNiAwek04LjI4NyA1LjkwNmMtLjc3OC4zMjQtMi4zMzQuOTk0LTQuNjY2IDIuMDEtLjM3OC4xNS0uNTc3LjI5OC0uNTk1LjQ0Mi0uMDMuMjQzLjI3NS4zMzkuNjkuNDdsLjE3NS4wNTVjLjQwOC4xMzMuOTU4LjI4OCAxLjI0My4yOTQuMjYuMDA2LjU0OS0uMS44NjgtLjMyIDIuMTc5LTEuNDcxIDMuMzA0LTIuMjE0IDMuMzc0LTIuMjMuMDUtLjAxMi4xMi0uMDI2LjE2Ni4wMTYuMDQ3LjA0MS4wNDIuMTIuMDM3LjE0MS0uMDMuMTI5LTEuMjI3IDEuMjQxLTEuODQ2IDEuODE3LS4xOTMuMTgtLjMzLjMwNy0uMzU4LjMzNmE4LjE1NCA4LjE1NCAwIDAgMS0uMTg4LjE4NmMtLjM4LjM2Ni0uNjY0LjY0LjAxNSAxLjA4OC4zMjcuMjE2LjU4OS4zOTMuODUuNTcxLjI4NC4xOTQuNTY4LjM4Ny45MzYuNjI5LjA5My4wNi4xODMuMTI1LjI3LjE4Ny4zMzEuMjM2LjYzLjQ0OC45OTcuNDE0LjIxNC0uMDIuNDM1LS4yMi41NDctLjgyLjI2NS0xLjQxNy43ODYtNC40ODYuOTA2LTUuNzUxYTEuNDI2IDEuNDI2IDAgMCAwLS4wMTMtLjMxNS4zMzcuMzM3IDAgMCAwLS4xMTQtLjIxNy41MjYuNTI2IDAgMCAwLS4zMS0uMDkzYy0uMy4wMDUtLjc2My4xNjYtMi45ODQgMS4wOXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZWxlcGhvbmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjg4NS41MTFhMS43NDUgMS43NDUgMCAwIDEgMi42MS4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lRm9yd2FyZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuODg1LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXptMTAuNzYxLjEzNWEuNS41IDAgMCAxIC43MDggMGwyLjUgMi41YS41LjUgMCAwIDEgMCAuNzA4bC0yLjUgMi41YS41LjUgMCAwIDEtLjcwOC0uNzA4TDE0LjI5MyA0SDkuNWEuNS41IDAgMCAxIDAtMWg0Ljc5M2wtMS42NDctMS42NDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lRm9yd2FyZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjY1NCAxLjMyOGEuNjc4LjY3OCAwIDAgMC0xLjAxNS0uMDYzTDEuNjA1IDIuM2MtLjQ4My40ODQtLjY2MSAxLjE2OS0uNDUgMS43N2ExNy41NjggMTcuNTY4IDAgMCAwIDQuMTY4IDYuNjA4IDE3LjU2OSAxNy41NjkgMCAwIDAgNi42MDggNC4xNjhjLjYwMS4yMTEgMS4yODYuMDMzIDEuNzctLjQ1bDEuMDM0LTEuMDM0YS42NzguNjc4IDAgMCAwLS4wNjMtMS4wMTVsLTIuMzA3LTEuNzk0YS42NzguNjc4IDAgMCAwLS41OC0uMTIybC0yLjE5LjU0N2ExLjc0NSAxLjc0NSAwIDAgMS0xLjY1Ny0uNDU5TDUuNDgyIDguMDYyYTEuNzQ1IDEuNzQ1IDAgMCAxLS40Ni0xLjY1N2wuNTQ4LTIuMTlhLjY3OC42NzggMCAwIDAtLjEyMi0uNThMMy42NTQgMS4zMjh6TTEuODg0LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxMi4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6bTEwLjc2Mi4xMzVhLjUuNSAwIDAgMSAuNzA4IDBsMi41IDIuNWEuNS41IDAgMCAxIDAgLjcwOGwtMi41IDIuNWEuNS41IDAgMCAxLS43MDgtLjcwOEwxNC4yOTMgNEg5LjVhLjUuNSAwIDAgMSAwLTFoNC43OTNsLTEuNjQ3LTEuNjQ2YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RlbGVwaG9uZUluYm91bmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjg4NS41MTFhMS43NDUgMS43NDUgMCAwIDEgMi42MS4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6TTE1Ljg1NC4xNDZhLjUuNSAwIDAgMSAwIC43MDhMMTEuNzA3IDVIMTQuNWEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAxLS41LS41di00YS41LjUgMCAwIDEgMSAwdjIuNzkzTDE1LjE0Ni4xNDZhLjUuNSAwIDAgMSAuNzA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lSW5ib3VuZCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNS44NTQuMTQ2YS41LjUgMCAwIDEgMCAuNzA4TDExLjcwNyA1SDE0LjVhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMS0uNS0uNXYtNGEuNS41IDAgMCAxIDEgMHYyLjc5M0wxNS4xNDYuMTQ2YS41LjUgMCAwIDEgLjcwOCAwem0tMTIuMiAxLjE4MmEuNjc4LjY3OCAwIDAgMC0xLjAxNS0uMDYzTDEuNjA1IDIuM2MtLjQ4My40ODQtLjY2MSAxLjE2OS0uNDUgMS43N2ExNy41NjggMTcuNTY4IDAgMCAwIDQuMTY4IDYuNjA4IDE3LjU2OSAxNy41NjkgMCAwIDAgNi42MDggNC4xNjhjLjYwMS4yMTEgMS4yODYuMDMzIDEuNzctLjQ1bDEuMDM0LTEuMDM0YS42NzguNjc4IDAgMCAwLS4wNjMtMS4wMTVsLTIuMzA3LTEuNzk0YS42NzguNjc4IDAgMCAwLS41OC0uMTIybC0yLjE5LjU0N2ExLjc0NSAxLjc0NSAwIDAgMS0xLjY1Ny0uNDU5TDUuNDgyIDguMDYyYTEuNzQ1IDEuNzQ1IDAgMCAxLS40Ni0xLjY1N2wuNTQ4LTIuMTlhLjY3OC42NzggMCAwIDAtLjEyMi0uNThMMy42NTQgMS4zMjh6TTEuODg0LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxMi4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lTWludXNGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0xLjg4NS41MTFhMS43NDUgMS43NDUgMCAwIDEgMi42MS4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6TTEwIDMuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAwIDFoLTRhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZWxlcGhvbmVNaW51cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAgMy41YS41LjUgMCAwIDEgLjUtLjVoNGEuNS41IDAgMCAxIDAgMWgtNGEuNS41IDAgMCAxLS41LS41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNjU0IDEuMzI4YS42NzguNjc4IDAgMCAwLTEuMDE1LS4wNjNMMS42MDUgMi4zYy0uNDgzLjQ4NC0uNjYxIDEuMTY5LS40NSAxLjc3YTE3LjU2OCAxNy41NjggMCAwIDAgNC4xNjggNi42MDggMTcuNTY5IDE3LjU2OSAwIDAgMCA2LjYwOCA0LjE2OGMuNjAxLjIxMSAxLjI4Ni4wMzMgMS43Ny0uNDVsMS4wMzQtMS4wMzRhLjY3OC42NzggMCAwIDAtLjA2My0xLjAxNWwtMi4zMDctMS43OTRhLjY3OC42NzggMCAwIDAtLjU4LS4xMjJsLTIuMTkuNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxLTEuNjU3LS40NTlMNS40ODIgOC4wNjJhMS43NDUgMS43NDUgMCAwIDEtLjQ2LTEuNjU3bC41NDgtMi4xOWEuNjc4LjY3OCAwIDAgMC0uMTIyLS41OEwzLjY1NCAxLjMyOHpNMS44ODQuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEyLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZWxlcGhvbmVPdXRib3VuZEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEuODg1LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXpNMTEgLjVhLjUuNSAwIDAgMSAuNS0uNWg0YS41LjUgMCAwIDEgLjUuNXY0YS41LjUgMCAwIDEtMSAwVjEuNzA3bC00LjE0NiA0LjE0N2EuNS41IDAgMCAxLS43MDgtLjcwOEwxNC4yOTMgMUgxMS41YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lT3V0Ym91bmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMy42NTQgMS4zMjhhLjY3OC42NzggMCAwIDAtMS4wMTUtLjA2M0wxLjYwNSAyLjNjLS40ODMuNDg0LS42NjEgMS4xNjktLjQ1IDEuNzdhMTcuNTY4IDE3LjU2OCAwIDAgMCA0LjE2OCA2LjYwOCAxNy41NjkgMTcuNTY5IDAgMCAwIDYuNjA4IDQuMTY4Yy42MDEuMjExIDEuMjg2LjAzMyAxLjc3LS40NWwxLjAzNC0xLjAzNGEuNjc4LjY3OCAwIDAgMC0uMDYzLTEuMDE1bC0yLjMwNy0xLjc5NGEuNjc4LjY3OCAwIDAgMC0uNTgtLjEyMmwtMi4xOS41NDdhMS43NDUgMS43NDUgMCAwIDEtMS42NTctLjQ1OUw1LjQ4MiA4LjA2MmExLjc0NSAxLjc0NSAwIDAgMS0uNDYtMS42NTdsLjU0OC0yLjE5YS42NzguNjc4IDAgMCAwLS4xMjItLjU4TDMuNjU0IDEuMzI4ek0xLjg4NC41MTFhMS43NDUgMS43NDUgMCAwIDEgMi42MTIuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExek0xMSAuNWEuNS41IDAgMCAxIC41LS41aDRhLjUuNSAwIDAgMSAuNS41djRhLjUuNSAwIDAgMS0xIDBWMS43MDdsLTQuMTQ2IDQuMTQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDE0LjI5MyAxSDExLjVhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZWxlcGhvbmVQbHVzRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS44ODUuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExek0xMi41IDFhLjUuNSAwIDAgMSAuNS41VjNoMS41YS41LjUgMCAwIDEgMCAxSDEzdjEuNWEuNS41IDAgMCAxLTEgMFY0aC0xLjVhLjUuNSAwIDAgMSAwLTFIMTJWMS41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lUGx1cyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjY1NCAxLjMyOGEuNjc4LjY3OCAwIDAgMC0xLjAxNS0uMDYzTDEuNjA1IDIuM2MtLjQ4My40ODQtLjY2MSAxLjE2OS0uNDUgMS43N2ExNy41NjggMTcuNTY4IDAgMCAwIDQuMTY4IDYuNjA4IDE3LjU2OSAxNy41NjkgMCAwIDAgNi42MDggNC4xNjhjLjYwMS4yMTEgMS4yODYuMDMzIDEuNzctLjQ1bDEuMDM0LTEuMDM0YS42NzguNjc4IDAgMCAwLS4wNjMtMS4wMTVsLTIuMzA3LTEuNzk0YS42NzguNjc4IDAgMCAwLS41OC0uMTIybC0yLjE5LjU0N2ExLjc0NSAxLjc0NSAwIDAgMS0xLjY1Ny0uNDU5TDUuNDgyIDguMDYyYTEuNzQ1IDEuNzQ1IDAgMCAxLS40Ni0xLjY1N2wuNTQ4LTIuMTlhLjY3OC42NzggMCAwIDAtLjEyMi0uNThMMy42NTQgMS4zMjh6TTEuODg0LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxMi4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTEyLjUgMWEuNS41IDAgMCAxIC41LjVWM2gxLjVhLjUuNSAwIDAgMSAwIDFIMTN2MS41YS41LjUgMCAwIDEtMSAwVjRoLTEuNWEuNS41IDAgMCAxIDAtMUgxMlYxLjVhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZWxlcGhvbmVYRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMS44ODUuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEuMTYzTDYuMjkgMi45OGMuMzI5LjQyMy40NDUuOTc0LjMxNSAxLjQ5NGwtLjU0NyAyLjE5YS42NzguNjc4IDAgMCAwIC4xNzguNjQzbDIuNDU3IDIuNDU3YS42NzguNjc4IDAgMCAwIC42NDQuMTc4bDIuMTg5LS41NDdhMS43NDUgMS43NDUgMCAwIDEgMS40OTQuMzE1bDIuMzA2IDEuNzk0Yy44MjkuNjQ1LjkwNSAxLjg3LjE2MyAyLjYxMWwtMS4wMzQgMS4wMzRjLS43NC43NC0xLjg0NiAxLjA2NS0yLjg3Ny43MDJhMTguNjM0IDE4LjYzNCAwIDAgMS03LjAxLTQuNDIgMTguNjM0IDE4LjYzNCAwIDAgMS00LjQyLTcuMDA5Yy0uMzYyLTEuMDMtLjAzNy0yLjEzNy43MDMtMi44NzdMMS44ODUuNTExem05LjI2MSAxLjEzNWEuNS41IDAgMCAxIC43MDggMEwxMyAyLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4TDEzLjcwNyAzLjVsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwxMyA0LjIwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTIuMjkzIDMuNWwtMS4xNDctMS4xNDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lWCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zLjY1NCAxLjMyOGEuNjc4LjY3OCAwIDAgMC0xLjAxNS0uMDYzTDEuNjA1IDIuM2MtLjQ4My40ODQtLjY2MSAxLjE2OS0uNDUgMS43N2ExNy41NjggMTcuNTY4IDAgMCAwIDQuMTY4IDYuNjA4IDE3LjU2OSAxNy41NjkgMCAwIDAgNi42MDggNC4xNjhjLjYwMS4yMTEgMS4yODYuMDMzIDEuNzctLjQ1bDEuMDM0LTEuMDM0YS42NzguNjc4IDAgMCAwLS4wNjMtMS4wMTVsLTIuMzA3LTEuNzk0YS42NzguNjc4IDAgMCAwLS41OC0uMTIybC0yLjE5LjU0N2ExLjc0NSAxLjc0NSAwIDAgMS0xLjY1Ny0uNDU5TDUuNDgyIDguMDYyYTEuNzQ1IDEuNzQ1IDAgMCAxLS40Ni0xLjY1N2wuNTQ4LTIuMTlhLjY3OC42NzggMCAwIDAtLjEyMi0uNThMMy42NTQgMS4zMjh6TTEuODg0LjUxMWExLjc0NSAxLjc0NSAwIDAgMSAyLjYxMi4xNjNMNi4yOSAyLjk4Yy4zMjkuNDIzLjQ0NS45NzQuMzE1IDEuNDk0bC0uNTQ3IDIuMTlhLjY3OC42NzggMCAwIDAgLjE3OC42NDNsMi40NTcgMi40NTdhLjY3OC42NzggMCAwIDAgLjY0NC4xNzhsMi4xODktLjU0N2ExLjc0NSAxLjc0NSAwIDAgMSAxLjQ5NC4zMTVsMi4zMDYgMS43OTRjLjgyOS42NDUuOTA1IDEuODcuMTYzIDIuNjExbC0xLjAzNCAxLjAzNGMtLjc0Ljc0LTEuODQ2IDEuMDY1LTIuODc3LjcwMmExOC42MzQgMTguNjM0IDAgMCAxLTcuMDEtNC40MiAxOC42MzQgMTguNjM0IDAgMCAxLTQuNDItNy4wMDljLS4zNjItMS4wMy0uMDM3LTIuMTM3LjcwMy0yLjg3N0wxLjg4NS41MTF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTExLjE0NiAxLjY0NmEuNS41IDAgMCAxIC43MDggMEwxMyAyLjc5M2wxLjE0Ni0xLjE0N2EuNS41IDAgMCAxIC43MDguNzA4TDEzLjcwNyAzLjVsMS4xNDcgMS4xNDZhLjUuNSAwIDAgMS0uNzA4LjcwOEwxMyA0LjIwN2wtMS4xNDYgMS4xNDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTIuMjkzIDMuNWwtMS4xNDctMS4xNDZhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVsZXBob25lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNjU0IDEuMzI4YS42NzguNjc4IDAgMCAwLTEuMDE1LS4wNjNMMS42MDUgMi4zYy0uNDgzLjQ4NC0uNjYxIDEuMTY5LS40NSAxLjc3YTE3LjU2OCAxNy41NjggMCAwIDAgNC4xNjggNi42MDggMTcuNTY5IDE3LjU2OSAwIDAgMCA2LjYwOCA0LjE2OGMuNjAxLjIxMSAxLjI4Ni4wMzMgMS43Ny0uNDVsMS4wMzQtMS4wMzRhLjY3OC42NzggMCAwIDAtLjA2My0xLjAxNWwtMi4zMDctMS43OTRhLjY3OC42NzggMCAwIDAtLjU4LS4xMjJsLTIuMTkuNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxLTEuNjU3LS40NTlMNS40ODIgOC4wNjJhMS43NDUgMS43NDUgMCAwIDEtLjQ2LTEuNjU3bC41NDgtMi4xOWEuNjc4LjY3OCAwIDAgMC0uMTIyLS41OEwzLjY1NCAxLjMyOHpNMS44ODQuNTExYTEuNzQ1IDEuNzQ1IDAgMCAxIDIuNjEyLjE2M0w2LjI5IDIuOThjLjMyOS40MjMuNDQ1Ljk3NC4zMTUgMS40OTRsLS41NDcgMi4xOWEuNjc4LjY3OCAwIDAgMCAuMTc4LjY0M2wyLjQ1NyAyLjQ1N2EuNjc4LjY3OCAwIDAgMCAuNjQ0LjE3OGwyLjE4OS0uNTQ3YTEuNzQ1IDEuNzQ1IDAgMCAxIDEuNDk0LjMxNWwyLjMwNiAxLjc5NGMuODI5LjY0NS45MDUgMS44Ny4xNjMgMi42MTFsLTEuMDM0IDEuMDM0Yy0uNzQuNzQtMS44NDYgMS4wNjUtMi44NzcuNzAyYTE4LjYzNCAxOC42MzQgMCAwIDEtNy4wMS00LjQyIDE4LjYzNCAxOC42MzQgMCAwIDEtNC40Mi03LjAwOWMtLjM2Mi0xLjAzLS4wMzctMi4xMzcuNzAzLTIuODc3TDEuODg1LjUxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZXJtaW5hbEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMCAzYTIgMiAwIDAgMSAyLTJoMTJhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMlYzem05LjUgNS41aC0zYS41LjUgMCAwIDAgMCAxaDNhLjUuNSAwIDAgMCAwLTF6bS02LjM1NC0uMzU0YS41LjUgMCAxIDAgLjcwOC43MDhsMi0yYS41LjUgMCAwIDAgMC0uNzA4bC0yLTJhLjUuNSAwIDEgMC0uNzA4LjcwOEw0Ljc5MyA2LjUgMy4xNDYgOC4xNDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGVybWluYWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNiA5YS41LjUgMCAwIDEgLjUtLjVoM2EuNS41IDAgMCAxIDAgMWgtM0EuNS41IDAgMCAxIDYgOXpNMy44NTQgNC4xNDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw0Ljc5MyA2LjUgMy4xNDYgOC4xNDZhLjUuNSAwIDEgMCAuNzA4LjcwOGwyLTJhLjUuNSAwIDAgMCAwLS43MDhsLTItMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDFhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWM2EyIDIgMCAwIDAtMi0ySDJ6bTEyIDFhMSAxIDAgMCAxIDEgMXYxMGExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMVYzYTEgMSAwIDAgMSAxLTFoMTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGV4dENlbnRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNCAxMi41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0tMi0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6bTItM2EuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXptLTItM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RleHRJbmRlbnRMZWZ0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMy41YS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6bS42NDYgMi4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMiAyYS41LjUgMCAwIDEgMCAuNzA4bC0yIDJhLjUuNSAwIDAgMS0uNzA4LS43MDhMNC4yOTMgOCAyLjY0NiA2LjM1NGEuNS41IDAgMCAxIDAtLjcwOHpNNyA2LjVhLjUuNSAwIDAgMSAuNS0uNWg2YS41LjUgMCAwIDEgMCAxaC02YS41LjUgMCAwIDEtLjUtLjV6bTAgM2EuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXptLTUgM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RleHRJbmRlbnRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yIDMuNWEuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41em0xMC42NDYgMi4xNDZhLjUuNSAwIDAgMSAuNzA4LjcwOEwxMS43MDcgOGwxLjY0NyAxLjY0NmEuNS41IDAgMCAxLS43MDguNzA4bC0yLTJhLjUuNSAwIDAgMSAwLS43MDhsMi0yek0yIDYuNWEuNS41IDAgMCAxIC41LS41aDZhLjUuNSAwIDAgMSAwIDFoLTZhLjUuNSAwIDAgMS0uNS0uNXptMCAzYS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41em0wIDNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZXh0TGVmdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMiAxMi41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0wLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptMC0zYS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0wLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZXh0UGFyYWdyYXBoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk0yIDEyLjVhLjUuNSAwIDAgMSAuNS0uNWg3YS41LjUgMCAwIDEgMCAxaC03YS41LjUgMCAwIDEtLjUtLjV6bTAtM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41em0wLTNhLjUuNSAwIDAgMSAuNS0uNWgxMWEuNS41IDAgMCAxIDAgMWgtMTFhLjUuNSAwIDAgMS0uNS0uNXptNC0zYS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RleHRSaWdodCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNiAxMi41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIDAgMWgtN2EuNS41IDAgMCAxLS41LS41em0tNC0zYS41LjUgMCAwIDEgLjUtLjVoMTFhLjUuNSAwIDAgMSAwIDFoLTExYS41LjUgMCAwIDEtLjUtLjV6bTQtM2EuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAwIDFoLTdhLjUuNSAwIDAgMS0uNS0uNXptLTQtM2EuNS41IDAgMCAxIC41LS41aDExYS41LjUgMCAwIDEgMCAxaC0xMWEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RleHRhcmVhUmVzaXplIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgNC41QTIuNSAyLjUgMCAwIDEgMi41IDJoMTFBMi41IDIuNSAwIDAgMSAxNiA0LjV2N2EyLjUgMi41IDAgMCAxLTIuNSAyLjVoLTExQTIuNSAyLjUgMCAwIDEgMCAxMS41di03ek0yLjUgM0ExLjUgMS41IDAgMCAwIDEgNC41djdBMS41IDEuNSAwIDAgMCAyLjUgMTNoMTFhMS41IDEuNSAwIDAgMCAxLjUtMS41di03QTEuNSAxLjUgMCAwIDAgMTMuNSAzaC0xMXptMTAuODU0IDQuNjQ2YS41LjUgMCAwIDEgMCAuNzA4bC0zIDNhLjUuNSAwIDAgMS0uNzA4LS43MDhsMy0zYS41LjUgMCAwIDEgLjcwOCAwem0wIDIuNWEuNS41IDAgMCAxIDAgLjcwOGwtLjUuNWEuNS41IDAgMCAxLS43MDgtLjcwOGwuNS0uNWEuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUZXh0YXJlYVQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41IDIuNUExLjUgMS41IDAgMCAxIDMgMWgxMGExLjUgMS41IDAgMCAxIDEuNSAxLjV2My41NjNhMiAyIDAgMCAxIDAgMy44NzRWMTMuNUExLjUgMS41IDAgMCAxIDEzIDE1SDNhMS41IDEuNSAwIDAgMS0xLjUtMS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNXptMSAzLjU2M2EyIDIgMCAwIDEgMCAzLjg3NFYxMy41YS41LjUgMCAwIDAgLjUuNWgxMGEuNS41IDAgMCAwIC41LS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNUEuNS41IDAgMCAwIDEzIDJIM2EuNS41IDAgMCAwLS41LjV2My41NjN6TTIgN2ExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTEyIDBhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExLjQzNCA0SDQuNTY2TDQuNSA1Ljk5NGguMzg2Yy4yMS0xLjI1Mi42MTItMS40NDYgMi4xNzMtMS40OTVsLjM0My0uMDExdjYuMzQzYzAgLjUzNy0uMTE2LjY2NS0xLjA0OS43NDhWMTJoMy4yOTR2LS40MjFjLS45MzgtLjA4My0xLjA1NC0uMjEtMS4wNTQtLjc0OFY0LjQ4OGwuMzQ4LjAxYzEuNTYuMDUgMS45NjMuMjQ0IDIuMTczIDEuNDk2aC4zODZMMTEuNDM0IDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGV4dGFyZWEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMS41IDIuNUExLjUgMS41IDAgMCAxIDMgMWgxMGExLjUgMS41IDAgMCAxIDEuNSAxLjV2My41NjNhMiAyIDAgMCAxIDAgMy44NzRWMTMuNUExLjUgMS41IDAgMCAxIDEzIDE1SDNhMS41IDEuNSAwIDAgMS0xLjUtMS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNXptMSAzLjU2M2EyIDIgMCAwIDEgMCAzLjg3NFYxMy41YS41LjUgMCAwIDAgLjUuNWgxMGEuNS41IDAgMCAwIC41LS41VjkuOTM3YTIgMiAwIDAgMSAwLTMuODc0VjIuNUEuNS41IDAgMCAwIDEzIDJIM2EuNS41IDAgMCAwLS41LjV2My41NjN6TTIgN2ExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTEyIDBhMSAxIDAgMSAwIDAgMiAxIDEgMCAwIDAgMC0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RoZXJtb21ldGVySGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTIuNWExLjUgMS41IDAgMSAxLTItMS40MTVWNi41YS41LjUgMCAwIDEgMSAwdjQuNTg1YTEuNSAxLjUgMCAwIDEgMSAxLjQxNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMi41YTIuNSAyLjUgMCAwIDEgNSAwdjcuNTVhMy41IDMuNSAwIDEgMS01IDBWMi41ek04IDFhMS41IDEuNSAwIDAgMC0xLjUgMS41djcuOTg3bC0uMTY3LjE1YTIuNSAyLjUgMCAxIDAgMy4zMzMgMGwtLjE2Ni0uMTVWMi41QTEuNSAxLjUgMCAwIDAgOCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RoZXJtb21ldGVySGlnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk05LjUgMTIuNWExLjUgMS41IDAgMSAxLTItMS40MTVWMi41YS41LjUgMCAwIDEgMSAwdjguNTg1YTEuNSAxLjUgMCAwIDEgMSAxLjQxNXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01LjUgMi41YTIuNSAyLjUgMCAwIDEgNSAwdjcuNTVhMy41IDMuNSAwIDEgMS01IDBWMi41ek04IDFhMS41IDEuNSAwIDAgMC0xLjUgMS41djcuOTg3bC0uMTY3LjE1YTIuNSAyLjUgMCAxIDAgMy4zMzMgMGwtLjE2Ni0uMTVWMi41QTEuNSAxLjUgMCAwIDAgOCAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RoZXJtb21ldGVyTG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxMi41YTEuNSAxLjUgMCAxIDEtMi0xLjQxNVY5LjVhLjUuNSAwIDAgMSAxIDB2MS41ODVhMS41IDEuNSAwIDAgMSAxIDEuNDE1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSAyLjVhMi41IDIuNSAwIDAgMSA1IDB2Ny41NWEzLjUgMy41IDAgMSAxLTUgMFYyLjV6TTggMWExLjUgMS41IDAgMCAwLTEuNSAxLjV2Ny45ODdsLS4xNjcuMTVhMi41IDIuNSAwIDEgMCAzLjMzMyAwbC0uMTY2LS4xNVYyLjVBMS41IDEuNSAwIDAgMCA4IDF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGhlcm1vbWV0ZXJTbm93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUgMTIuNWExLjUgMS41IDAgMSAxLTItMS40MTVWOS41YS41LjUgMCAwIDEgMSAwdjEuNTg1QTEuNSAxLjUgMCAwIDEgNSAxMi41elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEgMi41YTIuNSAyLjUgMCAwIDEgNSAwdjcuNTVhMy41IDMuNSAwIDEgMS01IDBWMi41ek0zLjUgMUExLjUgMS41IDAgMCAwIDIgMi41djcuOTg3bC0uMTY3LjE1YTIuNSAyLjUgMCAxIDAgMy4zMzMgMEw1IDEwLjQ4NlYyLjVBMS41IDEuNSAwIDAgMCAzLjUgMXptNSAxYS41LjUgMCAwIDEgLjUuNXYxLjI5M2wuNjQ2LS42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOEw5IDUuMjA3djEuOTI3bDEuNjY5LS45NjMuNDk1LTEuODVhLjUuNSAwIDEgMSAuOTY2LjI2bC0uMjM3Ljg4MiAxLjEyLS42NDZhLjUuNSAwIDAgMSAuNS44NjZsLTEuMTIuNjQ2Ljg4NC4yMzdhLjUuNSAwIDEgMS0uMjYuOTY2bC0xLjg0OC0uNDk1TDkuNSA4bDEuNjY5Ljk2MyAxLjg0OS0uNDk1YS41LjUgMCAxIDEgLjI1OC45NjZsLS44ODMuMjM3IDEuMTIuNjQ2YS41LjUgMCAwIDEtLjUuODY2bC0xLjEyLS42NDYuMjM3Ljg4M2EuNS41IDAgMSAxLS45NjYuMjU4TDEwLjY3IDkuODMgOSA4Ljg2NnYxLjkyN2wxLjM1NCAxLjM1M2EuNS41IDAgMCAxLS43MDguNzA4TDkgMTIuMjA3VjEzLjVhLjUuNSAwIDAgMS0xIDB2LTExYS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGhlcm1vbWV0ZXJTdW4gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAxMi41YTEuNSAxLjUgMCAxIDEtMi0xLjQxNVYyLjVhLjUuNSAwIDAgMSAxIDB2OC41ODVBMS41IDEuNSAwIDAgMSA1IDEyLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAyLjVhMi41IDIuNSAwIDAgMSA1IDB2Ny41NWEzLjUgMy41IDAgMSAxLTUgMFYyLjV6TTMuNSAxQTEuNSAxLjUgMCAwIDAgMiAyLjV2Ny45ODdsLS4xNjcuMTVhMi41IDIuNSAwIDEgMCAzLjMzMyAwTDUgMTAuNDg2VjIuNUExLjUgMS41IDAgMCAwIDMuNSAxem01IDFhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0xIDB2LTFhLjUuNSAwIDAgMSAuNS0uNXptNC4yNDMgMS43NTdhLjUuNSAwIDAgMSAwIC43MDdsLS43MDcuNzA4YS41LjUgMCAxIDEtLjcwOC0uNzA4bC43MDgtLjcwN2EuNS41IDAgMCAxIC43MDcgMHpNOCA1LjVhLjUuNSAwIDAgMSAuNS0uNSAzIDMgMCAxIDEgMCA2IC41LjUgMCAwIDEgMC0xIDIgMiAwIDAgMCAwLTQgLjUuNSAwIDAgMS0uNS0uNXpNMTIuNSA4YS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMSAxIDAgMWgtMWEuNS41IDAgMCAxLS41LS41em0tMS4xNzIgMi44MjhhLjUuNSAwIDAgMSAuNzA4IDBsLjcwNy43MDhhLjUuNSAwIDAgMS0uNzA3LjcwN2wtLjcwOC0uNzA3YS41LjUgMCAwIDEgMC0uNzA4ek04LjUgMTJhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0xIDB2LTFhLjUuNSAwIDAgMSAuNS0uNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUaGVybW9tZXRlciAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDE0YTEuNSAxLjUgMCAxIDAgMC0zIDEuNSAxLjUgMCAwIDAgMCAzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTggMGEyLjUgMi41IDAgMCAwLTIuNSAyLjV2Ny41NWEzLjUgMy41IDAgMSAwIDUgMFYyLjVBMi41IDIuNSAwIDAgMCA4IDB6TTYuNSAyLjVhMS41IDEuNSAwIDEgMSAzIDB2Ny45ODdsLjE2Ny4xNWEyLjUgMi41IDAgMSAxLTMuMzMzIDBsLjE2Ni0uMTVWMi41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RocmVlRG90c1ZlcnRpY2FsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNSAxM2ExLjUgMS41IDAgMSAxLTMgMCAxLjUgMS41IDAgMCAxIDMgMHptMC01YTEuNSAxLjUgMCAxIDEtMyAwIDEuNSAxLjUgMCAwIDEgMyAwem0wLTVhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVGhyZWVEb3RzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgOS41YTEuNSAxLjUgMCAxIDEgMC0zIDEuNSAxLjUgMCAwIDEgMCAzem01IDBhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTUgMGExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUb2dnbGVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEgNGE0IDQgMCAwIDEgMCA4SDhhNC45OTIgNC45OTIgMCAwIDAgMi00IDQuOTkyIDQuOTkyIDAgMCAwLTItNGgzem0tNiA4YTQgNCAwIDEgMSAwLTggNCA0IDAgMCAxIDAgOHpNMCA4YTUgNSAwIDAgMCA1IDVoNmE1IDUgMCAwIDAgMC0xMEg1YTUgNSAwIDAgMC01IDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVG9nZ2xlT24gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNSAzYTUgNSAwIDAgMCAwIDEwaDZhNSA1IDAgMCAwIDAtMTBINXptNiA5YTQgNCAwIDEgMSAwLTggNCA0IDAgMCAxIDAgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUb2dnbGUyT2ZmIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgMTFjLjYyOC0uODM2IDEtMS44NzQgMS0zYTQuOTc4IDQuOTc4IDAgMCAwLTEtM2g0YTMgMyAwIDEgMSAwIDZIOXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk01IDEyYTQgNCAwIDEgMSAwLTggNCA0IDAgMCAxIDAgOHptMCAxQTUgNSAwIDEgMCA1IDNhNSA1IDAgMCAwIDAgMTB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVG9nZ2xlMk9uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgNUgzYTMgMyAwIDAgMCAwIDZoNGE0Ljk5NSA0Ljk5NSAwIDAgMS0uNTg0LTFIM2EyIDIgMCAxIDEgMC00aDMuNDE2Yy4xNTYtLjM1Ny4zNTItLjY5Mi41ODQtMXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTUgNSAwIDEgMSA2IDhhNSA1IDAgMCAxIDEwIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVG9nZ2xlcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjUgOWEzLjUgMy41IDAgMSAwIDAgN2g3YTMuNSAzLjUgMCAxIDAgMC03aC03em03IDZhMi41IDIuNSAwIDEgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6bS03LTE0YTIuNSAyLjUgMCAxIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01em0yLjQ1IDBBMy40OSAzLjQ5IDAgMCAxIDggMy41IDMuNDkgMy40OSAwIDAgMSA2Ljk1IDZoNC41NWEyLjUgMi41IDAgMCAwIDAtNUg2Ljk1ek00LjUgMGg3YTMuNSAzLjUgMCAxIDEgMCA3aC03YTMuNSAzLjUgMCAxIDEgMC03elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RvZ2dsZXMyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuNDY1IDEwSDEyYTIgMiAwIDEgMSAwIDRIOS40NjVjLjM0LS41ODguNTM1LTEuMjcxLjUzNS0yIDAtLjcyOS0uMTk1LTEuNDEyLS41MzUtMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02IDE1YTMgMyAwIDEgMCAwLTYgMyAzIDAgMCAwIDAgNnptMCAxYTQgNCAwIDEgMSAwLTggNCA0IDAgMCAxIDAgOHptLjUzNS0xMGEzLjk3NSAzLjk3NSAwIDAgMS0uNDA5LTFINGExIDEgMCAwIDEgMC0yaDIuMTI2Yy4wOTEtLjM1NS4yMy0uNjkuNDEtMUg0YTIgMiAwIDEgMCAwIDRoMi41MzV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgNGE0IDQgMCAxIDEtOCAwIDQgNCAwIDAgMSA4IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVG9vbHMgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMSAwIDAgMWwyLjIgMy4wODFhMSAxIDAgMCAwIC44MTUuNDE5aC4wN2ExIDEgMCAwIDEgLjcwOC4yOTNsMi42NzUgMi42NzUtMi42MTcgMi42NTRBMy4wMDMgMy4wMDMgMCAwIDAgMCAxM2EzIDMgMCAxIDAgNS44NzgtLjg1MWwyLjY1NC0yLjYxNy45NjguOTY4LS4zMDUuOTE0YTEgMSAwIDAgMCAuMjQyIDEuMDIzbDMuMzU2IDMuMzU2YTEgMSAwIDAgMCAxLjQxNCAwbDEuNTg2LTEuNTg2YTEgMSAwIDAgMCAwLTEuNDE0bC0zLjM1Ni0zLjM1NmExIDEgMCAwIDAtMS4wMjMtLjI0MkwxMC41IDkuNWwtLjk2LS45NiAyLjY4LTIuNjQzQTMuMDA1IDMuMDA1IDAgMCAwIDE2IDNjMC0uMjY5LS4wMzUtLjUzLS4xMDItLjc3N2wtMi4xNCAyLjE0MUwxMiA0bC0uMzY0LTEuNzU3TDEzLjc3Ny4xMDJhMyAzIDAgMCAwLTMuNjc1IDMuNjhMNy40NjIgNi40NiA0Ljc5MyAzLjc5M2ExIDEgMCAwIDEtLjI5My0uNzA3di0uMDcxYTEgMSAwIDAgMC0uNDE5LS44MTRMMSAwem05LjY0NiAxMC42NDZhLjUuNSAwIDAgMSAuNzA4IDBsMyAzYS41LjUgMCAwIDEtLjcwOC43MDhsLTMtM2EuNS41IDAgMCAxIDAtLjcwOHpNMyAxMWwuNDcxLjI0Mi41MjkuMDI2LjI4Ny40NDUuNDQ1LjI4Ny4wMjYuNTI5TDUgMTNsLS4yNDIuNDcxLS4wMjYuNTI5LS40NDUuMjg3LS4yODcuNDQ1LS41MjkuMDI2TDMgMTVsLS40NzEtLjI0MkwyIDE0LjczMmwtLjI4Ny0uNDQ1TDEuMjY4IDE0bC0uMDI2LS41MjlMMSAxM2wuMjQyLS40NzEuMDI2LS41MjkuNDQ1LS4yODcuMjg3LS40NDUuNTI5LS4wMjZMMyAxMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUb3JuYWRvIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuMTI1IDIuNDVBLjg5Mi44OTIgMCAwIDEgMSAyYzAtLjI2LjExNi0uNDc0LjI1OC0uNjM0YTEuOSAxLjkgMCAwIDEgLjUxMy0uMzg5Yy4zODctLjIxLjkxMy0uMzg1IDEuNTItLjUyNUM0LjUxNC4xNyA2LjE4IDAgOCAwYzEuODIxIDAgMy40ODYuMTcgNC43MDkuNDUyLjYwNy4xNCAxLjEzMy4zMTQgMS41Mi41MjUuMTkzLjEwNi4zNzQuMjMzLjUxMy4zODkuMTQxLjE2LjI1OC4zNzQuMjU4LjYzNCAwIDEuMDExLS4zNSAxLjYxMi0uNjM0IDIuMTAyLS4wNC4wNy0uMDguMTM3LS4xMTYuMjAzYTIuNTUgMi41NSAwIDAgMC0uMzEzLjgwOSAyLjkzOCAyLjkzOCAwIDAgMC0uMDExLjg5MS41LjUgMCAwIDEgLjQyOC44NDljLS4wNi4wNi0uMTMzLjEyNi0uMjE1LjE5NS4yMDQgMS4xMTYuMDg4IDEuOTktLjMgMi43MTEtLjQ1My44NC0xLjIzMSAxLjM4My0yLjAyIDEuODU2LS4yMDQuMTIzLS40MTIuMjQzLS42Mi4zNjQtMS40NDQuODMyLTIuOTI4IDEuNjg5LTMuNzM1IDMuNzA2YS41LjUgMCAwIDEtLjc0OC4yMjZsLS4wMDEtLjAwMS0uMDAyLS4wMDEtLjAwNC0uMDAzLS4wMS0uMDA4YTIuMTQyIDIuMTQyIDAgMCAxLS4xNDctLjExNSA0LjA5NSA0LjA5NSAwIDAgMS0xLjE3OS0xLjY1NiAzLjc4NiAzLjc4NiAwIDAgMS0uMjQ3LTEuMjk2QS40OTguNDk4IDAgMCAxIDUgMTIuNXYtLjAxOGEuNjIuNjIgMCAwIDEgLjAwOC0uMDc5LjcyOC43MjggMCAwIDEgLjE4OC0uMzg2Yy4wOS0uNDg5LjI3Mi0xLjAxNC41NzMtMS41NzRhLjUuNSAwIDAgMSAuMDczLS45MTggMy4yOSAzLjI5IDAgMCAxIC42MTctLjE0NGwuMTUtLjE5M2MuMjg1LS4zNTYuNDA0LS42MzkuNDM3LS44NjFhLjk0OC45NDggMCAwIDAtLjEyMi0uNjE5Yy0uMjQ5LS40NTUtLjgxNS0uOTAzLTEuNjEzLTEuNDMtLjE5My0uMTI3LS4zOTgtLjI1OC0uNjA5LS4zOTRsLS4xMTktLjA3NmExMi4zMDcgMTIuMzA3IDAgMCAxLTEuMjQxLS4zMzQuNS41IDAgMCAxLS4yODUtLjcwN2wtLjIzLS4xOEMyLjExNyA0LjAxIDEuNDYzIDMuMzIgMS4xMjUgMi40NXptMS45NzMgMS4wNTFjLjExMy4xMDQuMjMzLjIwNy4zNTguMzA4LjQ3Mi4zODEuOTkuNzIyIDEuNTE1IDEuMDYgMS41NC4zMTcgMy42MzIuNSA1LjQzLjE0YS41LjUgMCAwIDEgLjE5Ny45ODFjLTEuMjE2LjI0NC0yLjUzNy4yNi0zLjc1OS4xNTcuMzk5LjMyNi43NDQuNjgyLjk2MyAxLjA4MS4yMDMuMzczLjMwMi43OS4yMzMgMS4yNDctLjA1LjMzLS4xODIuNjU3LS4zOS45ODUuMDc1LjAxNy4xNDguMDM1LjIyLjA1M2wuMDA2LjAwMmMuNDgxLjEyLjg2My4yMTMgMS40Ny4wMWEuNS41IDAgMSAxIC4zMTcuOTVjLS44ODguMjk1LTEuNTA1LjE0MS0yLjAyMy4wMTJsLS4wMDYtLjAwMmEzLjg5NCAzLjg5NCAwIDAgMC0uNjQ0LS4xMjNjLS4zNy41NS0uNTk4IDEuMDUtLjcyNiAxLjQ5Ny4xNDIuMDQ1LjI5Ni4xMS40NjUuMTk0YS41LjUgMCAxIDEtLjQ0OC44OTQgMy4xMSAzLjExIDAgMCAwLS4xNDgtLjA3Yy4wMTIuMzQ1LjA4NC42NDMuMTguODk1LjE0LjM2OS4zNDIuNjY2LjUyOC44ODYuOTkyLTEuOTAzIDIuNTgzLTIuODE0IDMuODg1LTMuNTYuMjAzLS4xMTYuMzk5LS4yMjguNTg0LS4zNC43NzUtLjQ2NCAxLjM0LS44OSAxLjY1My0xLjQ3Mi4yMTItLjM5My4zMy0uOS4yNi0xLjYxN0E2Ljc0IDYuNzQgMCAwIDEgMTAgOC41YS41LjUgMCAwIDEgMC0xIDUuNzYgNS43NiAwIDAgMCAzLjAxNy0uODcyLjUxNS41MTUgMCAwIDEtLjAwNy0uMDNjLS4xMzUtLjY3My0uMTQtMS4yMDctLjA1Ni0xLjY2NS4wODQtLjQ2LjI1My0uODEuNDIxLTEuMTEzbC4xMzEtLjIzYy4wNjUtLjExMi4xMjYtLjIyLjE4Mi0uMzI3LS4yOS4xMDctLjYyLjIwMi0uOTguMjg1QzExLjQ4NyAzLjgzIDkuODIyIDQgOCA0Yy0xLjgyMSAwLTMuNDg2LS4xNy00LjcwOS0uNDUyLS4wNjUtLjAxNS0uMTMtLjAzLS4xOTMtLjA0N3pNMTMuOTY0IDJhMS4xMiAxLjEyIDAgMCAwLS4yMTQtLjE0NWMtLjI3Mi0uMTQ4LS42OTctLjI5Ny0xLjI2Ni0uNDI4QzExLjM1NCAxLjE2NiA5Ljc2OSAxIDggMWMtMS43NjkgMC0zLjM1NC4xNjYtNC40ODQuNDI3LS41NjkuMTMtLjk5NC4yOC0xLjI2Ni40MjhBMS4xMiAxLjEyIDAgMCAwIDIuMDM2IDJjLjA0LjAzOC4xMDkuMDg3LjIxNC4xNDUuMjcyLjE0OC42OTcuMjk3IDEuMjY2LjQyOEM0LjY0NiAyLjgzNCA2LjIzMSAzIDggM2MxLjc2OSAwIDMuMzU0LS4xNjYgNC40ODQtLjQyNy41NjktLjEzLjk5NC0uMjggMS4yNjYtLjQyOEExLjEyIDEuMTIgMCAwIDAgMTMuOTY0IDJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJhbnNsYXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTQ1IDYuNzE0IDQuMTEgOEgzbDEuODYyLTVoMS4yODRMOCA4SDYuODMzbC0uNDM1LTEuMjg2SDQuNTQ1em0xLjYzNC0uNzM2TDUuNSAzLjk1NmgtLjA0OWwtLjY3OSAyLjAyMkg2LjE4elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMmEyIDIgMCAwIDEgMi0yaDdhMiAyIDAgMCAxIDIgMnYzaDNhMiAyIDAgMCAxIDIgMnY3YTIgMiAwIDAgMS0yIDJIN2EyIDIgMCAwIDEtMi0ydi0zSDJhMiAyIDAgMCAxLTItMlYyem0yLTFhMSAxIDAgMCAwLTEgMXY3YTEgMSAwIDAgMCAxIDFoN2ExIDEgMCAwIDAgMS0xVjJhMSAxIDAgMCAwLTEtMUgyem03LjEzOCA5Ljk5NWMuMTkzLjMwMS40MDIuNTgzLjYzLjg0Ni0uNzQ4LjU3NS0xLjY3MyAxLjAwMS0yLjc2OCAxLjI5Mi4xNzguMjE3LjQ1MS42MzUuNTU1Ljg2NyAxLjEyNS0uMzU5IDIuMDgtLjg0NCAyLjg4Ni0xLjQ5NC43NzcuNjY1IDEuNzM5IDEuMTY1IDIuOTMgMS40NzIuMTMzLS4yNTQuNDE0LS42NzMuNjI5LS44OS0xLjEyNS0uMjUzLTIuMDU3LS42OTQtMi44Mi0xLjI4NC42ODEtLjc0NyAxLjIyMi0xLjY1MSAxLjYyMS0yLjc1N0gxNFY4aC0zdjEuMDQ3aC43NjVjLS4zMTguODQ0LS43NCAxLjU0Ni0xLjI3MiAyLjEzYTYuMDY2IDYuMDY2IDAgMCAxLS40MTUtLjQ5MiAxLjk4OCAxLjk4OCAwIDAgMS0uOTQuMzF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJhc2hGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxYTEgMSAwIDAgMC0xIDF2MWExIDEgMCAwIDAgMSAxSDN2OWEyIDIgMCAwIDAgMiAyaDZhMiAyIDAgMCAwIDItMlY0aC41YTEgMSAwIDAgMCAxLTFWMmExIDEgMCAwIDAtMS0xSDEwYTEgMSAwIDAgMC0xLTFIN2ExIDEgMCAwIDAtMSAxSDIuNXptMyA0YS41LjUgMCAwIDEgLjUuNXY3YS41LjUgMCAwIDEtMSAwdi03YS41LjUgMCAwIDEgLjUtLjV6TTggNWEuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLTEgMHYtN0EuNS41IDAgMCAxIDggNXptMyAuNXY3YS41LjUgMCAwIDEtMSAwdi03YS41LjUgMCAwIDEgMSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RyYXNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNSA1LjVBLjUuNSAwIDAgMSA2IDZ2NmEuNS41IDAgMCAxLTEgMFY2YS41LjUgMCAwIDEgLjUtLjV6bTIuNSAwYS41LjUgMCAwIDEgLjUuNXY2YS41LjUgMCAwIDEtMSAwVjZhLjUuNSAwIDAgMSAuNS0uNXptMyAuNWEuNS41IDAgMCAwLTEgMHY2YS41LjUgMCAwIDAgMSAwVjZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTE0LjUgM2ExIDEgMCAwIDEtMSAxSDEzdjlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNGgtLjVhMSAxIDAgMCAxLTEtMVYyYTEgMSAwIDAgMSAxLTFINmExIDEgMCAwIDEgMS0xaDJhMSAxIDAgMCAxIDEgMWgzLjVhMSAxIDAgMCAxIDEgMXYxek00LjExOCA0IDQgNC4wNTlWMTNhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTFWNC4wNTlMMTEuODgyIDRINC4xMTh6TTIuNSAzVjJoMTF2MWgtMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJhc2gyRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjAzNyAzLjIyNUEuNzAzLjcwMyAwIDAgMSAyIDNjMC0xLjEwNSAyLjY4Ni0yIDYtMnM2IC44OTUgNiAyYS43MDIuNzAyIDAgMCAxLS4wMzcuMjI1bC0xLjY4NCAxMC4xMDRBMiAyIDAgMCAxIDEwLjMwNSAxNUg1LjY5NGEyIDIgMCAwIDEtMS45NzMtMS42NzFMMi4wMzcgMy4yMjV6bTkuODktLjY5QzEwLjk2NiAyLjIxNCA5LjU3OCAyIDggMmMtMS41OCAwLTIuOTY4LjIxNS0zLjkyNi41MzQtLjQ3Ny4xNi0uNzk1LjMyNy0uOTc1LjQ2Ni4xOC4xNC40OTguMzA3Ljk3NS40NjZDNS4wMzIgMy43ODYgNi40MiA0IDggNHMyLjk2Ny0uMjE1IDMuOTI2LS41MzRjLjQ3Ny0uMTYuNzk1LS4zMjcuOTc1LS40NjYtLjE4LS4xNC0uNDk4LS4zMDctLjk3NS0uNDY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RyYXNoMiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNCAzYS43MDIuNzAyIDAgMCAxLS4wMzcuMjI1bC0xLjY4NCAxMC4xMDRBMiAyIDAgMCAxIDEwLjMwNSAxNUg1LjY5NGEyIDIgMCAwIDEtMS45NzMtMS42NzFMMi4wMzcgMy4yMjVBLjcwMy43MDMgMCAwIDEgMiAzYzAtMS4xMDUgMi42ODYtMiA2LTJzNiAuODk1IDYgMnpNMy4yMTUgNC4yMDdsMS40OTMgOC45NTdhMSAxIDAgMCAwIC45ODYuODM2aDQuNjEyYTEgMSAwIDAgMCAuOTg2LS44MzZsMS40OTMtOC45NTdDMTEuNjkgNC42ODkgOS45NTQgNSA4IDVjLTEuOTU0IDAtMy42OS0uMzExLTQuNzg1LS43OTN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJlZUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MTYuMjIzYS41LjUgMCAwIDAtLjgzMiAwbC0zIDQuNUEuNS41IDAgMCAwIDUgNS41aC4wOThMMy4wNzYgOC43MzVBLjUuNSAwIDAgMCAzLjUgOS41aC4xOTFsLTEuNjM4IDMuMjc2YS41LjUgMCAwIDAgLjQ0Ny43MjRIN1YxNmgydi0yLjVoNC41YS41LjUgMCAwIDAgLjQ0Ny0uNzI0TDEyLjMxIDkuNWguMTkxYS41LjUgMCAwIDAgLjQyNC0uNzY1TDEwLjkwMiA1LjVIMTFhLjUuNSAwIDAgMCAuNDE2LS43NzdsLTMtNC41elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RyZWUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC40MTYuMjIzYS41LjUgMCAwIDAtLjgzMiAwbC0zIDQuNUEuNS41IDAgMCAwIDUgNS41aC4wOThMMy4wNzYgOC43MzVBLjUuNSAwIDAgMCAzLjUgOS41aC4xOTFsLTEuNjM4IDMuMjc2YS41LjUgMCAwIDAgLjQ0Ny43MjRIN1YxNmgydi0yLjVoNC41YS41LjUgMCAwIDAgLjQ0Ny0uNzI0TDEyLjMxIDkuNWguMTkxYS41LjUgMCAwIDAgLjQyNC0uNzY1TDEwLjkwMiA1LjVIMTFhLjUuNSAwIDAgMCAuNDE2LS43NzdsLTMtNC41ek02LjQzNyA0Ljc1OEEuNS41IDAgMCAwIDYgNC41aC0uMDY2TDggMS40MDEgMTAuMDY2IDQuNUgxMGEuNS41IDAgMCAwLS40MjQuNzY1TDExLjU5OCA4LjVIMTEuNWEuNS41IDAgMCAwLS40NDcuNzI0TDEyLjY5IDEyLjVIMy4zMDlsMS42MzgtMy4yNzZBLjUuNSAwIDAgMCA0LjUgOC41aC0uMDk4bDIuMDIyLTMuMjM1YS41LjUgMCAwIDAgLjAxMy0uNTA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RyaWFuZ2xlRmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNy4wMjIgMS41NjZhMS4xMyAxLjEzIDAgMCAxIDEuOTYgMGw2Ljg1NyAxMS42NjdjLjQ1Ny43NzgtLjA5MiAxLjc2Ny0uOTggMS43NjdIMS4xNDRjLS44ODkgMC0xLjQzNy0uOTktLjk4LTEuNzY3TDcuMDIyIDEuNTY2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RyaWFuZ2xlSGFsZiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04LjA2NSAyLjAxNkEuMTMuMTMgMCAwIDAgOC4wMDIgMnYxMS45ODNsNi44NTYuMDE3YS4xMi4xMiAwIDAgMCAuMDY2LS4wMTcuMTYyLjE2MiAwIDAgMCAuMDU0LS4wNi4xNzYuMTc2IDAgMCAwLS4wMDItLjE4M0w4LjEyIDIuMDczYS4xNDYuMTQ2IDAgMCAwLS4wNTQtLjA1N3ptLTEuMDQzLS40NWExLjEzIDEuMTMgMCAwIDEgMS45NiAwbDYuODU2IDExLjY2N2MuNDU4Ljc3OC0uMDkxIDEuNzY3LS45OCAxLjc2N0gxLjE0NmMtLjg4OSAwLTEuNDM3LS45OS0uOTgtMS43NjdMNy4wMjIgMS41NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJpYW5nbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45MzggMi4wMTZBLjEzLjEzIDAgMCAxIDguMDAyIDJhLjEzLjEzIDAgMCAxIC4wNjMuMDE2LjE0Ni4xNDYgMCAwIDEgLjA1NC4wNTdsNi44NTcgMTEuNjY3Yy4wMzYuMDYuMDM1LjEyNC4wMDIuMTgzYS4xNjMuMTYzIDAgMCAxLS4wNTQuMDYuMTE2LjExNiAwIDAgMS0uMDY2LjAxN0gxLjE0NmEuMTE1LjExNSAwIDAgMS0uMDY2LS4wMTcuMTYzLjE2MyAwIDAgMS0uMDU0LS4wNi4xNzYuMTc2IDAgMCAxIC4wMDItLjE4M0w3Ljg4NCAyLjA3M2EuMTQ3LjE0NyAwIDAgMSAuMDU0LS4wNTd6bTEuMDQ0LS40NWExLjEzIDEuMTMgMCAwIDAtMS45NiAwTC4xNjUgMTMuMjMzYy0uNDU3Ljc3OC4wOTEgMS43NjcuOTggMS43NjdoMTMuNzEzYy44ODkgMCAxLjQzOC0uOTkuOTgtMS43NjdMOC45ODIgMS41NjZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJvcGh5RmlsbCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUuNUEuNS41IDAgMCAxIDMgMGgxMGEuNS41IDAgMCAxIC41LjVjMCAuNTM4LS4wMTIgMS4wNS0uMDM0IDEuNTM2YTMgMyAwIDEgMS0xLjEzMyA1Ljg5Yy0uNzkgMS44NjUtMS44NzggMi43NzctMi44MzMgMy4wMTF2Mi4xNzNsMS40MjUuMzU2Yy4xOTQuMDQ4LjM3Ny4xMzUuNTM3LjI1NUwxMy4zIDE1LjFhLjUuNSAwIDAgMS0uMy45SDNhLjUuNSAwIDAgMS0uMy0uOWwxLjgzOC0xLjM3OWMuMTYtLjEyLjM0My0uMjA3LjUzNy0uMjU1TDYuNSAxMy4xMXYtMi4xNzNjLS45NTUtLjIzNC0yLjA0My0xLjE0Ni0yLjgzMy0zLjAxMmEzIDMgMCAxIDEtMS4xMzItNS44OUEzMy4wNzYgMzMuMDc2IDAgMCAxIDIuNS41em0uMDk5IDIuNTRhMiAyIDAgMCAwIC43MiAzLjkzNWMtLjMzMy0xLjA1LS41ODgtMi4zNDYtLjcyLTMuOTM1em0xMC4wODMgMy45MzVhMiAyIDAgMCAwIC43Mi0zLjkzNWMtLjEzMyAxLjU5LS4zODggMi44ODUtLjcyIDMuOTM1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1Ryb3BoeSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0yLjUuNUEuNS41IDAgMCAxIDMgMGgxMGEuNS41IDAgMCAxIC41LjVjMCAuNTM4LS4wMTIgMS4wNS0uMDM0IDEuNTM2YTMgMyAwIDEgMS0xLjEzMyA1Ljg5Yy0uNzkgMS44NjUtMS44NzggMi43NzctMi44MzMgMy4wMTF2Mi4xNzNsMS40MjUuMzU2Yy4xOTQuMDQ4LjM3Ny4xMzUuNTM3LjI1NUwxMy4zIDE1LjFhLjUuNSAwIDAgMS0uMy45SDNhLjUuNSAwIDAgMS0uMy0uOWwxLjgzOC0xLjM3OWMuMTYtLjEyLjM0My0uMjA3LjUzNy0uMjU1TDYuNSAxMy4xMXYtMi4xNzNjLS45NTUtLjIzNC0yLjA0My0xLjE0Ni0yLjgzMy0zLjAxMmEzIDMgMCAxIDEtMS4xMzItNS44OUEzMy4wNzYgMzMuMDc2IDAgMCAxIDIuNS41em0uMDk5IDIuNTRhMiAyIDAgMCAwIC43MiAzLjkzNWMtLjMzMy0xLjA1LS41ODgtMi4zNDYtLjcyLTMuOTM1em0xMC4wODMgMy45MzVhMiAyIDAgMCAwIC43Mi0zLjkzNWMtLjEzMyAxLjU5LS4zODggMi44ODUtLjcyIDMuOTM1ek0zLjUwNCAxYy4wMDcuNTE3LjAyNiAxLjAwNi4wNTYgMS40NjkuMTMgMi4wMjguNDU3IDMuNTQ2Ljg3IDQuNjY3QzUuMjk0IDkuNDggNi40ODQgMTAgNyAxMGEuNS41IDAgMCAxIC41LjV2Mi42MWExIDEgMCAwIDEtLjc1Ny45N2wtMS40MjYuMzU2YS41LjUgMCAwIDAtLjE3OS4wODVMNC41IDE1aDdsLS42MzgtLjQ3OWEuNTAxLjUwMSAwIDAgMC0uMTgtLjA4NWwtMS40MjUtLjM1NmExIDEgMCAwIDEtLjc1Ny0uOTdWMTAuNUEuNS41IDAgMCAxIDkgMTBjLjUxNiAwIDEuNzA2LS41MiAyLjU3LTIuODY0LjQxMy0xLjEyLjc0LTIuNjQuODctNC42NjcuMDMtLjQ2My4wNDktLjk1Mi4wNTYtMS40NjlIMy41MDR6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHJvcGljYWxTdG9ybSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDkuNWEyIDIgMCAxIDAgMC00IDIgMiAwIDAgMCAwIDR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOS41IDJjLS45IDAtMS43NS4yMTYtMi41MDEuNkE1IDUgMCAwIDEgMTMgNy41YTYuNSA2LjUgMCAxIDEtMTMgMCAuNS41IDAgMCAxIDEgMCA1LjUgNS41IDAgMCAwIDguMDAxIDQuOUE1IDUgMCAwIDEgMyA3LjVhNi41IDYuNSAwIDAgMSAxMyAwIC41LjUgMCAwIDEtMSAwQTUuNSA1LjUgMCAwIDAgOS41IDJ6TTggMy41YTQgNCAwIDEgMCAwIDggNCA0IDAgMCAwIDAtOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUcnVja0ZsYXRiZWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNSA0YS41LjUgMCAwIDEgLjUuNVY1aDEuMDJhMS41IDEuNSAwIDAgMSAxLjE3LjU2M2wxLjQ4MSAxLjg1YTEuNSAxLjUgMCAwIDEgLjMyOS45MzhWMTAuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVIMTRhMiAyIDAgMSAxLTQgMEg1YTIgMiAwIDEgMS00IDAgMSAxIDAgMCAxLTEtMXYtMWgxMVY0LjVhLjUuNSAwIDAgMSAuNS0uNXpNMyAxMWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTkgMGExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTEuNzMyIDBoLjc2OGEuNS41IDAgMCAwIC41LS41VjguMzVhLjUuNSAwIDAgMC0uMTEtLjMxMmwtMS40OC0xLjg1QS41LjUgMCAwIDAgMTMuMDIgNkgxMnY0YTIgMiAwIDAgMSAxLjczMiAxelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1RydWNrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgMy41QTEuNSAxLjUgMCAwIDEgMS41IDJoOUExLjUgMS41IDAgMCAxIDEyIDMuNVY1aDEuMDJhMS41IDEuNSAwIDAgMSAxLjE3LjU2M2wxLjQ4MSAxLjg1YTEuNSAxLjUgMCAwIDEgLjMyOS45MzhWMTAuNWExLjUgMS41IDAgMCAxLTEuNSAxLjVIMTRhMiAyIDAgMSAxLTQgMEg1YTIgMiAwIDEgMS0zLjk5OC0uMDg1QTEuNSAxLjUgMCAwIDEgMCAxMC41di03em0xLjI5NCA3LjQ1NkExLjk5OSAxLjk5OSAwIDAgMSA0LjczMiAxMWg1LjUzNmEyLjAxIDIuMDEgMCAwIDEgLjczMi0uNzMyVjMuNWEuNS41IDAgMCAwLS41LS41aC05YS41LjUgMCAwIDAtLjUuNXY3YS41LjUgMCAwIDAgLjI5NC40NTZ6TTEyIDEwYTIgMiAwIDAgMSAxLjczMiAxaC43NjhhLjUuNSAwIDAgMCAuNS0uNVY4LjM1YS41LjUgMCAwIDAtLjExLS4zMTJsLTEuNDgtMS44NUEuNS41IDAgMCAwIDEzLjAyIDZIMTJ2NHptLTkgMWExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6bTkgMGExIDEgMCAxIDAgMCAyIDEgMSAwIDAgMCAwLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHN1bmFtaSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0uMDM2IDEyLjMxNGEuNS41IDAgMCAxIC42NS0uMjc4bDEuNzU3LjcwM2ExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS4wMTQtLjQwNmEyLjUgMi41IDAgMCAxIDEuODU3IDBsMS4wMTUuNDA2YTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjAxNC0uNDA2YTIuNSAyLjUgMCAwIDEgMS44NTcgMGwxLjAxNS40MDZhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuNzU3LS43MDNhLjUuNSAwIDEgMSAuMzcyLjkyOGwtMS43NTguNzAzYTIuNSAyLjUgMCAwIDEtMS44NTcgMGwtMS4wMTQtLjQwNmExLjUgMS41IDAgMCAwLTEuMTE0IDBsLTEuMDE1LjQwNmEyLjUgMi41IDAgMCAxLTEuODU3IDBsLTEuMDE0LS40MDZhMS41IDEuNSAwIDAgMC0xLjExNCAwbC0xLjAxNS40MDZhMi41IDIuNSAwIDAgMS0xLjg1NyAwbC0xLjc1Ny0uNzAzYS41LjUgMCAwIDEtLjI3OC0uNjV6bTAgMmEuNS41IDAgMCAxIC42NS0uMjc4bDEuNzU3LjcwM2ExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS4wMTQtLjQwNmEyLjUgMi41IDAgMCAxIDEuODU3IDBsMS4wMTUuNDA2YTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjAxNC0uNDA2YTIuNSAyLjUgMCAwIDEgMS44NTcgMGwxLjAxNS40MDZhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuNzU3LS43MDNhLjUuNSAwIDEgMSAuMzcyLjkyOGwtMS43NTguNzAzYTIuNSAyLjUgMCAwIDEtMS44NTcgMGwtMS4wMTQtLjQwNmExLjUgMS41IDAgMCAwLTEuMTE0IDBsLTEuMDE1LjQwNmEyLjUgMi41IDAgMCAxLTEuODU3IDBsLTEuMDE0LS40MDZhMS41IDEuNSAwIDAgMC0xLjExNCAwbC0xLjAxNS40MDZhMi41IDIuNSAwIDAgMS0xLjg1NyAwbC0xLjc1Ny0uNzAzYS41LjUgMCAwIDEtLjI3OC0uNjV6TTIuNjYyIDguMDhjLS40NTYgMS4wNjMtLjk5NCAyLjA5OC0xLjg0MiAyLjgwNGEuNS41IDAgMCAxLS42NC0uNzY4Yy42NTItLjU0NCAxLjExNC0xLjM4NCAxLjU2NC0yLjQzLjE0LS4zMjguMjgxLS42OC40MjctMS4wNDQuMzAyLS43NTQuNjI0LTEuNTU5IDEuMDEtMi4zMDhDMy43NjMgMy4yIDQuNTI4IDIuMTA1IDUuNyAxLjI5OSA2Ljg3Ny40OSA4LjQxOCAwIDEwLjUgMGMxLjQ2MyAwIDIuNTExLjQgMy4xNzkgMS4wNTguNjcuNjYuODkzIDEuNTE4LjgxOSAyLjMwMi0uMDc0Ljc3MS0uNDQxIDEuNTE2LTEuMDIgMS45NjVhMS44NzggMS44NzggMCAwIDEtMS45MDQuMjdjLS42NS42NDItLjkwNyAxLjY3OS0uNzEgMi42MTRDMTEuMDc2IDkuMjE1IDExLjc4NCAxMCAxMyAxMGgyLjVhLjUuNSAwIDAgMSAwIDFIMTNjLTEuNzg0IDAtMi44MjYtMS4yMTUtMy4xMTQtMi41ODUtLjIzMi0xLjEuMDA1LTIuMzczLjc1OC0zLjI4NEwxMC41IDUuMDZsLS43NzcuMzg4YS41LjUgMCAwIDEtLjQ0NyAwbC0xLS41YS41LjUgMCAwIDEgLjQ0Ny0uODk0bC43NzcuMzg4Ljc3Ni0uMzg4YS41LjUgMCAwIDEgLjQ0NyAwbDEgLjVhLjQ5My40OTMgMCAwIDEgLjAzNC4wMThjLjQ0LjI2NC44MS4xOTUgMS4xMDgtLjAzNi4zMjgtLjI1NS41ODYtLjcyOS42MzctMS4yNy4wNS0uNTI5LS4xLTEuMDc2LS41MjUtMS40OTUtLjQyNi0uNDItMS4xOS0uNzctMi40NzctLjc3LTEuOTE4IDAtMy4yNTIuNDQ4LTQuMjMyIDEuMTIzQzUuMjgzIDIuOCA0LjYxIDMuNzM4IDQuMDcgNC43OWMtLjM2NS43MS0uNjU1IDEuNDMzLS45NDUgMi4xNi0uMTUuMzc2LS4zMDEuNzUzLS40NjMgMS4xM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUdkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDEzLjVBLjUuNSAwIDAgMSAzIDEzaDEwYS41LjUgMCAwIDEgMCAxSDNhLjUuNSAwIDAgMS0uNS0uNXpNMiAyaDEyczIgMCAyIDJ2NnMwIDItMiAySDJzLTIgMC0yLTJWNHMwLTIgMi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1R2IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSAxMy41QS41LjUgMCAwIDEgMyAxM2gxMGEuNS41IDAgMCAxIDAgMUgzYS41LjUgMCAwIDEtLjUtLjV6TTEzLjk5MSAzbC4wMjQuMDAxYTEuNDYgMS40NiAwIDAgMSAuNTM4LjE0My43NTcuNzU3IDAgMCAxIC4zMDIuMjU0Yy4wNjcuMS4xNDUuMjc3LjE0NS42MDJ2NS45OTFsLS4wMDEuMDI0YTEuNDY0IDEuNDY0IDAgMCAxLS4xNDMuNTM4Ljc1OC43NTggMCAwIDEtLjI1NC4zMDJjLS4xLjA2Ny0uMjc3LjE0NS0uNjAyLjE0NUgyLjAwOWwtLjAyNC0uMDAxYTEuNDY0IDEuNDY0IDAgMCAxLS41MzgtLjE0My43NTguNzU4IDAgMCAxLS4zMDItLjI1NEMxLjA3OCAxMC41MDIgMSAxMC4zMjUgMSAxMFY0LjAwOWwuMDAxLS4wMjRhMS40NiAxLjQ2IDAgMCAxIC4xNDMtLjUzOC43NTguNzU4IDAgMCAxIC4yNTQtLjMwMkMxLjQ5OCAzLjA3OCAxLjY3NSAzIDIgM2gxMS45OTF6TTE0IDJIMkMwIDIgMCA0IDAgNHY2YzAgMiAyIDIgMiAyaDEyYzIgMCAyLTIgMi0yVjRjMC0yLTItMi0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHdpdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuODU3IDAgMSAyLjg1N3YxMC4yODZoMy40MjlWMTZsMi44NTctMi44NTdIOS41N0wxNC43MTQgOFYwSDMuODU3em05LjcxNCA3LjQyOS0yLjI4NSAyLjI4NUg5bC0yIDJ2LTJINC40MjlWMS4xNDNoOS4xNDJ2Ni4yODZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuODU3IDMuMTQzaC0xLjE0M1Y2LjU3aDEuMTQzVjMuMTQzem0tMy4xNDMgMEg3LjU3MVY2LjU3aDEuMTQzVjMuMTQzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1R3aXR0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNS4wMjYgMTVjNi4wMzggMCA5LjM0MS01LjAwMyA5LjM0MS05LjMzNCAwLS4xNCAwLS4yODItLjAwNi0uNDIyQTYuNjg1IDYuNjg1IDAgMCAwIDE2IDMuNTQyYTYuNjU4IDYuNjU4IDAgMCAxLTEuODg5LjUxOCAzLjMwMSAzLjMwMSAwIDAgMCAxLjQ0Ny0xLjgxNyA2LjUzMyA2LjUzMyAwIDAgMS0yLjA4Ny43OTNBMy4yODYgMy4yODYgMCAwIDAgNy44NzUgNi4wM2E5LjMyNSA5LjMyNSAwIDAgMS02Ljc2Ny0zLjQyOSAzLjI4OSAzLjI4OSAwIDAgMCAxLjAxOCA0LjM4MkEzLjMyMyAzLjMyMyAwIDAgMSAuNjQgNi41NzV2LjA0NWEzLjI4OCAzLjI4OCAwIDAgMCAyLjYzMiAzLjIxOCAzLjIwMyAzLjIwMyAwIDAgMS0uODY1LjExNSAzLjIzIDMuMjMgMCAwIDEtLjYxNC0uMDU3IDMuMjgzIDMuMjgzIDAgMCAwIDMuMDY3IDIuMjc3QTYuNTg4IDYuNTg4IDAgMCAxIC43OCAxMy41OGE2LjMyIDYuMzIgMCAwIDEtLjc4LS4wNDVBOS4zNDQgOS4zNDQgMCAwIDAgNS4wMjYgMTV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHlwZUJvbGQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC4yMSAxM2MyLjEwNiAwIDMuNDEyLTEuMDg3IDMuNDEyLTIuODIzIDAtMS4zMDYtLjk4NC0yLjI4My0yLjMyNC0yLjM4NnYtLjA1NWEyLjE3NiAyLjE3NiAwIDAgMCAxLjg1Mi0yLjE0YzAtMS41MS0xLjE2Mi0yLjQ2LTMuMDE0LTIuNDZIMy44NDNWMTNIOC4yMXpNNS45MDggNC42NzRoMS42OTZjLjk2MyAwIDEuNTE3LjQ1MSAxLjUxNyAxLjI0NCAwIC44MzQtLjYyOSAxLjMyLTEuNzMgMS4zMkg1LjkwOFY0LjY3M3ptMCA2Ljc4OFY4LjU5OGgxLjczYzEuMjE3IDAgMS44OC40OTIgMS44OCAxLjQxNSAwIC45NDMtLjY0MyAxLjQ0OS0xLjgzMiAxLjQ0OUg1LjkwN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUeXBlSDEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC42MzcgMTNWMy42NjlINy4zNzlWNy42MkgyLjc1OFYzLjY3SDEuNVYxM2gxLjI1OFY4LjcyOGg0LjYyVjEzaDEuMjU5em01LjMyOSAwVjMuNjY5aC0xLjI0NEwxMC41IDUuMzE2djEuMjY1bDIuMTYtMS41NjVoLjA2MlYxM2gxLjI0NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUeXBlSDIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42MzggMTNWMy42NjlINi4zOFY3LjYySDEuNzU5VjMuNjdILjVWMTNoMS4yNThWOC43MjhoNC42MlYxM2gxLjI1OXptMy4wMjItNi43MzN2LS4wNDhjMC0uODg5LjYzLTEuNjY4IDEuNzE2LTEuNjY4Ljk1NyAwIDEuNjc1LjYwOCAxLjY3NSAxLjU3MiAwIC44NTUtLjU1NCAxLjUwNC0xLjA2NyAyLjA4NWwtMy41MTMgMy45OTlWMTNIMTUuNXYtMS4wOTRoLTQuMjQ1di0uMDc1bDIuNDgxLTIuODQ0Yy44NzUtLjk5OCAxLjU4Ni0xLjc4NCAxLjU4Ni0yLjk1MyAwLTEuNDYzLTEuMTU1LTIuNTU2LTIuOTE5LTIuNTU2LTEuOTQxIDAtMi45NjYgMS4zMjYtMi45NjYgMi43NHYuMDQ5aDEuMjIzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1R5cGVIMyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03LjYzNyAxM1YzLjY2OUg2LjM3OVY3LjYySDEuNzU4VjMuNjdILjVWMTNoMS4yNThWOC43MjhoNC42MlYxM2gxLjI1OXptMy42MjUtNC4yNzJoMS4wMThjMS4xNDIgMCAxLjkzNS42NyAxLjk0OSAxLjY3NC4wMTMgMS4wMDUtLjc4IDEuNzM3LTIuMDEgMS43My0xLjA4LS4wMDctMS44NTMtLjU4OC0xLjkzNS0xLjMySDkuMTA4Yy4wNjkgMS4zMjcgMS4yMjQgMi4zODYgMy4wODMgMi4zODYgMS45MzUgMCAzLjM0My0xLjE1NSAzLjMwOS0yLjc4OS0uMDI3LTEuNTEtMS4yNTEtMi4xNi0yLjAzNy0yLjI0OXYtLjA2OGMuNzA0LS4xMjMgMS43NjQtLjkxIDEuNzIzLTIuMjI5LS4wMzUtMS4zNTMtMS4xNzYtMi40LTIuOTU0LTIuMzg1LTEuODczLjAwNi0yLjg1NyAxLjE2Mi0yLjg5OCAyLjM1OGgxLjE5NmMuMDYyLS42OS43MTEtMS4yOTkgMS42OTYtMS4yOTkuOTk4IDAgMS42OTUuNjIyIDEuNjk1IDEuNTI1LjAwNy45MjItLjcxOCAxLjU5Mi0xLjY5NSAxLjU5MmgtLjk2NHYxLjA3NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUeXBlSXRhbGljIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcuOTkxIDExLjY3NCA5LjUzIDQuNDU1Yy4xMjMtLjU5NS4yNDYtLjcxIDEuMzQ3LS44MDdsLjExLS41Mkg3LjIxMWwtLjExLjUyYzEuMDYuMDk2IDEuMTI4LjIxMiAxLjAwNS44MDdMNi41NyAxMS42NzRjLS4xMjMuNTk1LS4yNDYuNzEtMS4zNDYuODA2bC0uMTEuNTJoMy43NzRsLjExLS41MmMtMS4wNi0uMDk1LTEuMTI5LS4yMTEtMS4wMDYtLjgwNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUeXBlU3RyaWtldGhyb3VnaCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjMzMyA1LjY4NmMwIC4zMS4wODMuNTgxLjI3LjgxNEg1LjE2NmEyLjc3NiAyLjc3NiAwIDAgMS0uMDk5LS43NmMwLTEuNjI3IDEuNDM2LTIuNzY4IDMuNDgtMi43NjggMS45NjkgMCAzLjM5IDEuMTc1IDMuNDQ1IDIuODVoLTEuMjNjLS4xMS0xLjA4LS45NjQtMS43NDMtMi4yNS0xLjc0My0xLjIzIDAtMi4xOC42MDItMi4xOCAxLjYwN3ptMi4xOTQgNy40NzhjLTIuMTUzIDAtMy41ODktMS4xMDctMy43MDUtMi44MWgxLjIzYy4xNDQgMS4wNiAxLjEyOSAxLjcwMyAyLjU0NCAxLjcwMyAxLjM0IDAgMi4zMS0uNzA1IDIuMzEtMS42NzUgMC0uODI3LS41NDctMS4zNzQtMS45MTQtMS42NzVMOC4wNDYgOC41SDF2LTFoMTR2MWgtMy41MDRjLjQ2OC40MzcuNjc1Ljk5NC42NzUgMS42OTcgMCAxLjgyNi0xLjQzNiAyLjk2Ny0zLjY0NCAyLjk2N3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNUeXBlVW5kZXJsaW5lIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuMzEzIDMuMTM2aC0xLjIzVjkuNTRjMCAyLjEwNSAxLjQ3IDMuNjIzIDMuOTE3IDMuNjIzczMuOTE3LTEuNTE4IDMuOTE3LTMuNjIzVjMuMTM2aC0xLjIzdjYuMzIzYzAgMS40OS0uOTc4IDIuNTctMi42ODcgMi41Ny0xLjcwOSAwLTIuNjg3LTEuMDgtMi42ODctMi41N1YzLjEzNnpNMTIuNSAxNWgtOXYtMWg5djF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVHlwZSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIm0yLjI0NCAxMy4wODEuOTQzLTIuODAzSDYuNjZsLjk0NCAyLjgwM0g4Ljg2TDUuNTQgMy43NUg0LjMyMkwxIDEzLjA4MWgxLjI0NHptMi43LTcuOTIzTDYuMzQgOS4zMTRIMy41MWwxLjQtNC4xNTZoLjAzNHptOS4xNDYgNy4wMjdoLjAzNXYuODk2aDEuMTI4VjguMTI1YzAtMS41MS0xLjExNC0yLjM0NS0yLjY0Ni0yLjM0NS0xLjczNiAwLTIuNTkuOTE2LTIuNjY2IDIuMTc0aDEuMTA4Yy4wNjgtLjcxOC41OTUtMS4xOSAxLjUxNy0xLjE5Ljk3MSAwIDEuNTE4LjUyIDEuNTE4IDEuNDY0di43MzFIMTIuMTljLTEuNjQ3LjAwNy0yLjUyMi44LTIuNTIyIDIuMDU4IDAgMS4zMTkuOTU3IDIuMTggMi4zNDUgMi4xOCAxLjA2IDAgMS43MTYtLjQzIDIuMDc4LTEuMDExem0tMS43NjMuMDM1Yy0uNzUyIDAtMS40NTYtLjM5Ny0xLjQ1Ni0xLjI0NCAwLS42NS40MjQtMS4xMTUgMS40MDgtMS4xMTVoMS44MDV2LjgzNGMwIC44OTYtLjc1MiAxLjUyNS0xLjc1NyAxLjUyNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVaUNoZWNrc0dyaWQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxMGgzYTEgMSAwIDAgMSAxIDF2M2ExIDEgMCAwIDEtMSAxSDJhMSAxIDAgMCAxLTEtMXYtM2ExIDEgMCAwIDEgMS0xem05LTloM2ExIDEgMCAwIDEgMSAxdjNhMSAxIDAgMCAxLTEgMWgtM2ExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMXptMCA5YTEgMSAwIDAgMC0xIDF2M2ExIDEgMCAwIDAgMSAxaDNhMSAxIDAgMCAwIDEtMXYtM2ExIDEgMCAwIDAtMS0xaC0zem0wLTEwYTIgMiAwIDAgMC0yIDJ2M2EyIDIgMCAwIDAgMiAyaDNhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJoLTN6TTIgOWEyIDIgMCAwIDAtMiAydjNhMiAyIDAgMCAwIDIgMmgzYTIgMiAwIDAgMCAyLTJ2LTNhMiAyIDAgMCAwLTItMkgyem03IDJhMiAyIDAgMCAxIDItMmgzYTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtMiAyaC0zYTIgMiAwIDAgMS0yLTJ2LTN6TTAgMmEyIDIgMCAwIDEgMi0yaDNhMiAyIDAgMCAxIDIgMnYzYTIgMiAwIDAgMS0yIDJIMmEyIDIgMCAwIDEtMi0yVjJ6bTUuMzU0Ljg1NGEuNS41IDAgMSAwLS43MDgtLjcwOEwzIDMuNzkzbC0uNjQ2LS42NDdhLjUuNSAwIDEgMC0uNzA4LjcwOGwxIDFhLjUuNSAwIDAgMCAuNzA4IDBsMi0yelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1VpQ2hlY2tzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgMi41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTdhLjUuNSAwIDAgMS0uNS0uNXYtMXpNMiAxYTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJIMnptMCA4YTIgMiAwIDAgMC0yIDJ2MmEyIDIgMCAwIDAgMiAyaDJhMiAyIDAgMCAwIDItMnYtMmEyIDIgMCAwIDAtMi0ySDJ6bS44NTQtMy42NDZhLjUuNSAwIDAgMS0uNzA4IDBsLTEtMWEuNS41IDAgMSAxIC43MDgtLjcwOGwuNjQ2LjY0NyAxLjY0Ni0xLjY0N2EuNS41IDAgMSAxIC43MDguNzA4bC0yIDJ6bTAgOGEuNS41IDAgMCAxLS43MDggMGwtMS0xYS41LjUgMCAwIDEgLjcwOC0uNzA4bC42NDYuNjQ3IDEuNjQ2LTEuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhsLTIgMnpNNyAxMC41YS41LjUgMCAwIDEgLjUtLjVoN2EuNS41IDAgMCAxIC41LjV2MWEuNS41IDAgMCAxLS41LjVoLTdhLjUuNSAwIDAgMS0uNS0uNXYtMXptMC01YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41em0wIDhhLjUuNSAwIDAgMSAuNS0uNWg1YS41LjUgMCAwIDEgMCAxaC01YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVWlSYWRpb3NHcmlkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMuNSAxNWEyLjUgMi41IDAgMSAwIDAtNSAyLjUgMi41IDAgMCAwIDAgNXptOS05YTIuNSAyLjUgMCAxIDAgMC01IDIuNSAyLjUgMCAwIDAgMCA1em0wIDlhMi41IDIuNSAwIDEgMSAwLTUgMi41IDIuNSAwIDAgMSAwIDV6TTE2IDMuNWEzLjUgMy41IDAgMSAxLTcgMCAzLjUgMy41IDAgMCAxIDcgMHptLTkgOWEzLjUgMy41IDAgMSAxLTcgMCAzLjUgMy41IDAgMCAxIDcgMHptNS41IDMuNWEzLjUgMy41IDAgMSAwIDAtNyAzLjUgMy41IDAgMCAwIDAgN3ptLTktMTFhMS41IDEuNSAwIDEgMSAwLTMgMS41IDEuNSAwIDAgMSAwIDN6bTAgMmEzLjUgMy41IDAgMSAwIDAtNyAzLjUgMy41IDAgMCAwIDAgN3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVaVJhZGlvcyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk03IDIuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTF6TTAgMTJhMyAzIDAgMSAxIDYgMCAzIDMgMCAwIDEtNiAwem03LTEuNWEuNS41IDAgMCAxIC41LS41aDdhLjUuNSAwIDAgMSAuNS41djFhLjUuNSAwIDAgMS0uNS41aC03YS41LjUgMCAwIDEtLjUtLjV2LTF6bTAtNWEuNS41IDAgMCAxIC41LS41aDVhLjUuNSAwIDAgMSAwIDFoLTVhLjUuNSAwIDAgMS0uNS0uNXptMCA4YS41LjUgMCAwIDEgLjUtLjVoNWEuNS41IDAgMCAxIDAgMWgtNWEuNS41IDAgMCAxLS41LS41ek0zIDFhMyAzIDAgMSAwIDAgNiAzIDMgMCAwIDAgMC02em0wIDQuNWExLjUgMS41IDAgMSAxIDAtMyAxLjUgMS41IDAgMCAxIDAgM3pcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVbWJyZWxsYUZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTggMGEuNS41IDAgMCAxIC41LjV2LjUxNEMxMi42MjUgMS4yMzggMTYgNC4yMiAxNiA4YzAgMCAwIC41LS41LjUtLjE0OSAwLS4zNTItLjE0NS0uMzUyLS4xNDVsLS4wMDQtLjAwNC0uMDI1LS4wMjNhMy40ODQgMy40ODQgMCAwIDAtLjU1NS0uMzk0QTMuMTY2IDMuMTY2IDAgMCAwIDEzIDcuNWMtLjYzOCAwLTEuMTc4LjIxMy0xLjU2NC40MzRhMy40ODQgMy40ODQgMCAwIDAtLjU1NS4zOTRsLS4wMjUuMDIzLS4wMDMuMDAzcy0uMjA0LjE0Ni0uMzUzLjE0Ni0uMzUyLS4xNDUtLjM1Mi0uMTQ1bC0uMDA0LS4wMDQtLjAyNS0uMDIzYTMuNDg0IDMuNDg0IDAgMCAwLS41NTUtLjM5NCAzLjMgMy4zIDAgMCAwLTEuMDY0LS4zOVYxMy41SDhoLjV2LjAzOWwtLjAwNS4wODNhMi45NTggMi45NTggMCAwIDEtLjI5OCAxLjEwMiAyLjI1NyAyLjI1NyAwIDAgMS0uNzYzLjg4QzcuMDYgMTUuODUxIDYuNTg3IDE2IDYgMTZzLTEuMDYxLS4xNDgtMS40MzQtLjM5NmEyLjI1NSAyLjI1NSAwIDAgMS0uNzYzLS44OCAyLjk1OCAyLjk1OCAwIDAgMS0uMzAyLTEuMTg1di0uMDI1bC0uMDAxLS4wMDl2LS4wMDNzMC0uMDAyLjUtLjAwMmgtLjVWMTNhLjUuNSAwIDAgMSAxIDB2LjUwNmwuMDAzLjA0NGExLjk1OCAxLjk1OCAwIDAgMCAuMTk1LjcyNmMuMDk1LjE5MS4yMy4zNjcuNDIzLjQ5NS4xOS4xMjcuNDY2LjIyOS44NzkuMjI5cy42ODktLjEwMi44NzktLjIyOWMuMTkzLS4xMjguMzI4LS4zMDQuNDI0LS40OTVhMS45NTggMS45NTggMCAwIDAgLjE5Ny0uNzdWNy41NDRhMy4zIDMuMyAwIDAgMC0xLjA2NC4zOSAzLjQ4MiAzLjQ4MiAwIDAgMC0uNTguNDE3bC0uMDA0LjAwNFM1LjY1IDguNSA1LjUgOC41Yy0uMTQ5IDAtLjM1Mi0uMTQ1LS4zNTItLjE0NWwtLjAwNC0uMDA0YTMuNDgyIDMuNDgyIDAgMCAwLS41OC0uNDE3QTMuMTY2IDMuMTY2IDAgMCAwIDMgNy41Yy0uNjM4IDAtMS4xNzcuMjEzLTEuNTY0LjQzNGEzLjQ4MiAzLjQ4MiAwIDAgMC0uNTguNDE3bC0uMDA0LjAwNFMuNjUgOC41LjUgOC41QzAgOC41IDAgOCAwIDhjMC0zLjc4IDMuMzc1LTYuNzYyIDcuNS02Ljk4NlYuNUEuNS41IDAgMCAxIDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVbWJyZWxsYSAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDBhLjUuNSAwIDAgMSAuNS41di41MTRDMTIuNjI1IDEuMjM4IDE2IDQuMjIgMTYgOGMwIDAgMCAuNS0uNS41LS4xNDkgMC0uMzUyLS4xNDUtLjM1Mi0uMTQ1bC0uMDA0LS4wMDQtLjAyNS0uMDIzYTMuNDg0IDMuNDg0IDAgMCAwLS41NTUtLjM5NEEzLjE2NiAzLjE2NiAwIDAgMCAxMyA3LjVjLS42MzggMC0xLjE3OC4yMTMtMS41NjQuNDM0YTMuNDg0IDMuNDg0IDAgMCAwLS41NTUuMzk0bC0uMDI1LjAyMy0uMDAzLjAwM3MtLjIwNC4xNDYtLjM1My4xNDYtLjM1Mi0uMTQ1LS4zNTItLjE0NWwtLjAwNC0uMDA0LS4wMjUtLjAyM2EzLjQ4NCAzLjQ4NCAwIDAgMC0uNTU1LS4zOTQgMy4zIDMuMyAwIDAgMC0xLjA2NC0uMzlWMTMuNUg4aC41di4wMzlsLS4wMDUuMDgzYTIuOTU4IDIuOTU4IDAgMCAxLS4yOTggMS4xMDIgMi4yNTcgMi4yNTcgMCAwIDEtLjc2My44OEM3LjA2IDE1Ljg1MSA2LjU4NyAxNiA2IDE2cy0xLjA2MS0uMTQ4LTEuNDM0LS4zOTZhMi4yNTUgMi4yNTUgMCAwIDEtLjc2My0uODggMi45NTggMi45NTggMCAwIDEtLjMwMi0xLjE4NXYtLjAyNWwtLjAwMS0uMDA5di0uMDAzczAtLjAwMi41LS4wMDJoLS41VjEzYS41LjUgMCAwIDEgMSAwdi41MDZsLjAwMy4wNDRhMS45NTggMS45NTggMCAwIDAgLjE5NS43MjZjLjA5NS4xOTEuMjMuMzY3LjQyMy40OTUuMTkuMTI3LjQ2Ni4yMjkuODc5LjIyOXMuNjg5LS4xMDIuODc5LS4yMjljLjE5My0uMTI4LjMyOC0uMzA0LjQyNC0uNDk1YTEuOTU4IDEuOTU4IDAgMCAwIC4xOTctLjc3VjcuNTQ0YTMuMyAzLjMgMCAwIDAtMS4wNjQuMzkgMy40ODIgMy40ODIgMCAwIDAtLjU4LjQxN2wtLjAwNC4wMDRTNS42NSA4LjUgNS41IDguNWMtLjE0OSAwLS4zNTItLjE0NS0uMzUyLS4xNDVsLS4wMDQtLjAwNGEzLjQ4MiAzLjQ4MiAwIDAgMC0uNTgtLjQxN0EzLjE2NiAzLjE2NiAwIDAgMCAzIDcuNWMtLjYzOCAwLTEuMTc3LjIxMy0xLjU2NC40MzRhMy40ODIgMy40ODIgMCAwIDAtLjU4LjQxN2wtLjAwNC4wMDRTLjY1IDguNS41IDguNUMwIDguNSAwIDggMCA4YzAtMy43OCAzLjM3NS02Ljc2MiA3LjUtNi45ODZWLjVBLjUuNSAwIDAgMSA4IDB6TTYuNTc3IDIuMTIzYy0yLjgzMy41LTQuOTkgMi40NTgtNS40NzQgNC44NTRBNC4xMjQgNC4xMjQgMCAwIDEgMyA2LjVjLjgwNiAwIDEuNDguMjUgMS45NjIuNTExYTkuNzA2IDkuNzA2IDAgMCAxIC4zNDQtMi4zNThjLjI0Mi0uODY4LjY0LTEuNzY1IDEuMjcxLTIuNTN6bS0uNjE1IDQuOTNBNC4xNiA0LjE2IDAgMCAxIDggNi41YTQuMTYgNC4xNiAwIDAgMSAyLjAzOC41NTMgOC42ODggOC42ODggMCAwIDAtLjMwNy0yLjEzQzkuNDM0IDMuODU4IDguODk4IDIuODMgOCAyLjExN2MtLjg5OC43MTItMS40MzQgMS43NC0xLjczMSAyLjgwNGE4LjY4NyA4LjY4NyAwIDAgMC0uMzA3IDIuMTMxem0zLjQ2LTQuOTNjLjYzMS43NjUgMS4wMyAxLjY2MiAxLjI3MiAyLjUzLjIzMy44MzMuMzI4IDEuNjYuMzQ0IDIuMzU4QTQuMTQgNC4xNCAwIDAgMSAxMyA2LjVjLjc3IDAgMS40Mi4yMyAxLjg5Ny40NzctLjQ4NC0yLjM5Ni0yLjY0MS00LjM1NS01LjQ3NC00Ljg1NHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVbmlvbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0wIDJhMiAyIDAgMCAxIDItMmg4YTIgMiAwIDAgMSAyIDJ2MmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMnYtMkgyYTIgMiAwIDAgMS0yLTJWMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNVbmxvY2tGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDFhMiAyIDAgMCAwLTIgMnY0YTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY5YTIgMiAwIDAgMSAyLTJoNVYzYTMgMyAwIDAgMSA2IDB2NGEuNS41IDAgMCAxLTEgMFYzYTIgMiAwIDAgMC0yLTJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVW5sb2NrIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTExIDFhMiAyIDAgMCAwLTIgMnY0YTIgMiAwIDAgMSAyIDJ2NWEyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMlY5YTIgMiAwIDAgMSAyLTJoNVYzYTMgMyAwIDAgMSA2IDB2NGEuNS41IDAgMCAxLTEgMFYzYTIgMiAwIDAgMC0yLTJ6TTMgOGExIDEgMCAwIDAtMSAxdjVhMSAxIDAgMCAwIDEgMWg2YTEgMSAwIDAgMCAxLTFWOWExIDEgMCAwIDAtMS0xSDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVXBjU2NhbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjUgMWEuNS41IDAgMCAwLS41LjV2M2EuNS41IDAgMCAxLTEgMHYtM0ExLjUgMS41IDAgMCAxIDEuNSAwaDNhLjUuNSAwIDAgMSAwIDFoLTN6TTExIC41YS41LjUgMCAwIDEgLjUtLjVoM0ExLjUgMS41IDAgMCAxIDE2IDEuNXYzYS41LjUgMCAwIDEtMSAwdi0zYS41LjUgMCAwIDAtLjUtLjVoLTNhLjUuNSAwIDAgMS0uNS0uNXpNLjUgMTFhLjUuNSAwIDAgMSAuNS41djNhLjUuNSAwIDAgMCAuNS41aDNhLjUuNSAwIDAgMSAwIDFoLTNBMS41IDEuNSAwIDAgMSAwIDE0LjV2LTNhLjUuNSAwIDAgMSAuNS0uNXptMTUgMGEuNS41IDAgMCAxIC41LjV2M2ExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTNhLjUuNSAwIDAgMSAwLTFoM2EuNS41IDAgMCAwIC41LS41di0zYS41LjUgMCAwIDEgLjUtLjV6TTMgNC41YS41LjUgMCAwIDEgMSAwdjdhLjUuNSAwIDAgMS0xIDB2LTd6bTIgMGEuNS41IDAgMCAxIDEgMHY3YS41LjUgMCAwIDEtMSAwdi03em0yIDBhLjUuNSAwIDAgMSAxIDB2N2EuNS41IDAgMCAxLTEgMHYtN3ptMiAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtN3ptMyAwYS41LjUgMCAwIDEgMSAwdjdhLjUuNSAwIDAgMS0xIDB2LTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVXBjIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgNC41YS41LjUgMCAwIDEgMSAwdjdhLjUuNSAwIDAgMS0xIDB2LTd6bTIgMGEuNS41IDAgMCAxIDEgMHY3YS41LjUgMCAwIDEtMSAwdi03em0yIDBhLjUuNSAwIDAgMSAxIDB2N2EuNS41IDAgMCAxLTEgMHYtN3ptMiAwYS41LjUgMCAwIDEgLjUtLjVoMWEuNS41IDAgMCAxIC41LjV2N2EuNS41IDAgMCAxLS41LjVoLTFhLjUuNSAwIDAgMS0uNS0uNXYtN3ptMyAwYS41LjUgMCAwIDEgMSAwdjdhLjUuNSAwIDAgMS0xIDB2LTd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVXBsb2FkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTS41IDkuOWEuNS41IDAgMCAxIC41LjV2Mi41YTEgMSAwIDAgMCAxIDFoMTJhMSAxIDAgMCAwIDEtMXYtMi41YS41LjUgMCAwIDEgMSAwdjIuNWEyIDIgMCAwIDEtMiAySDJhMiAyIDAgMCAxLTItMnYtMi41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy42NDYgMS4xNDZhLjUuNSAwIDAgMSAuNzA4IDBsMyAzYS41LjUgMCAwIDEtLjcwOC43MDhMOC41IDIuNzA3VjExLjVhLjUuNSAwIDAgMS0xIDBWMi43MDdMNS4zNTQgNC44NTRhLjUuNSAwIDEgMS0uNzA4LS43MDhsMy0zelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1ZlY3RvclBlbiAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTAuNjQ2LjY0NmEuNS41IDAgMCAxIC43MDggMGw0IDRhLjUuNSAwIDAgMSAwIC43MDhsLTEuOTAyIDEuOTAyLS44MjkgMy4zMTNhMS41IDEuNSAwIDAgMS0xLjAyNCAxLjA3M0wxLjI1NCAxNC43NDYgNC4zNTggNC40QTEuNSAxLjUgMCAwIDEgNS40MyAzLjM3N2wzLjMxMy0uODI4TDEwLjY0Ni42NDZ6bS0xLjggMi45MDgtMy4xNzMuNzkzYS41LjUgMCAwIDAtLjM1OC4zNDJsLTIuNTcgOC41NjUgOC41NjctMi41N2EuNS41IDAgMCAwIC4zNC0uMzU3bC43OTQtMy4xNzQtMy42LTMuNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMi44MzIgMTMuMjI4IDggOWExIDEgMCAxIDAtMS0xbC00LjIyOCA1LjE2OC0uMDI2LjA4Ni4wODYtLjAyNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWaWV3TGlzdCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDQuNWgxMGEyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJ2LTNhMiAyIDAgMCAxIDItMnptMCAxYTEgMSAwIDAgMC0xIDF2M2ExIDEgMCAwIDAgMSAxaDEwYTEgMSAwIDAgMCAxLTF2LTNhMSAxIDAgMCAwLTEtMUgzek0xIDJhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDJ6bTAgMTJhLjUuNSAwIDAgMSAuNS0uNWgxM2EuNS41IDAgMCAxIDAgMWgtMTNBLjUuNSAwIDAgMSAxIDE0elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1ZpZXdTdGFja2VkIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTMgMGgxMGEyIDIgMCAwIDEgMiAydjNhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWMmEyIDIgMCAwIDEgMi0yem0wIDFhMSAxIDAgMCAwLTEgMXYzYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMVYyYTEgMSAwIDAgMC0xLTFIM3ptMCA4aDEwYTIgMiAwIDAgMSAyIDJ2M2EyIDIgMCAwIDEtMiAySDNhMiAyIDAgMCAxLTItMnYtM2EyIDIgMCAwIDEgMi0yem0wIDFhMSAxIDAgMCAwLTEgMXYzYTEgMSAwIDAgMCAxIDFoMTBhMSAxIDAgMCAwIDEtMXYtM2ExIDEgMCAwIDAtMS0xSDN6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVmltZW8gKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuOTkyIDQuMjA0Yy0uMDcxIDEuNTU2LTEuMTU4IDMuNjg3LTMuMjYyIDYuMzkzLTIuMTc1IDIuODI5LTQuMDE2IDQuMjQzLTUuNTIyIDQuMjQzLS45MzMgMC0xLjcyMi0uODYxLTIuMzY3LTIuNTgzTDMuNTUgNy41MjNDMy4wNyA1LjggMi41NTYgNC45NCAyLjAwNyA0Ljk0Yy0uMTE4IDAtLjUzNy4yNTMtMS4yNTQuNzU0TDAgNC43MjRhMjA5LjU2IDIwOS41NiAwIDAgMCAyLjMzNC0yLjA4MWMxLjA1NC0uOTEgMS44NDUtMS4zODggMi4zNzMtMS40MzcgMS4yNDMtLjEyMyAyLjAxLjcyOCAyLjI5OCAyLjU1My4zMSAxLjk2OC41MjYgMy4xOS42NDYgMy42NjYuMzYgMS42MzEuNzU2IDIuNDQ2IDEuMTg2IDIuNDQ1LjMzNCAwIC44MzYtLjUzIDEuNTA4LTEuNTg3LjY3MS0xLjA1OCAxLjAzLTEuODYzIDEuMDc3LTIuNDE1LjA5Ni0uOTEzLS4yNjMtMS4zNy0xLjA3Ny0xLjM3YTMuMDIyIDMuMDIyIDAgMCAwLTEuMTg1LjI2MWMuNzg5LTIuNTczIDIuMjkxLTMuODI1IDQuNTA4LTMuNzU2IDEuNjQ0LjA1IDIuNDE5IDEuMTE3IDIuMzI0IDMuMnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWaW55bEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCA2YTIgMiAwIDEgMCAwIDQgMiAyIDAgMCAwIDAtNHptMCAzYTEgMSAwIDEgMSAwLTIgMSAxIDAgMCAxIDAgMnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xNiA4QTggOCAwIDEgMSAwIDhhOCA4IDAgMCAxIDE2IDB6TTQgOGE0IDQgMCAxIDAgOCAwIDQgNCAwIDAgMC04IDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVmlueWwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk04IDZhMiAyIDAgMSAwIDAgNCAyIDIgMCAwIDAgMC00ek00IDhhNCA0IDAgMSAxIDggMCA0IDQgMCAwIDEtOCAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVm9pY2VtYWlsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTcgOC41QTMuNDkgMy40OSAwIDAgMSA1Ljk1IDExaDQuMWEzLjUgMy41IDAgMSAxIDIuNDUgMWgtOUEzLjUgMy41IDAgMSAxIDcgOC41em0tNiAwYTIuNSAyLjUgMCAxIDAgNSAwIDIuNSAyLjUgMCAwIDAtNSAwem0xNCAwYTIuNSAyLjUgMCAxIDAtNSAwIDIuNSAyLjUgMCAwIDAgNSAwelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1ZvbHVtZURvd25GaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGEuNS41IDAgMCAwLS44MTItLjM5TDUuODI1IDUuNUgzLjVBLjUuNSAwIDAgMCAzIDZ2NGEuNS41IDAgMCAwIC41LjVoMi4zMjVsMi4zNjMgMS44OUEuNS41IDAgMCAwIDkgMTJWNHptMy4wMjUgNGE0LjQ4NiA0LjQ4NiAwIDAgMS0xLjMxOCAzLjE4MkwxMCAxMC40NzVBMy40ODkgMy40ODkgMCAwIDAgMTEuMDI1IDggMy40OSAzLjQ5IDAgMCAwIDEwIDUuNTI1bC43MDctLjcwN0E0LjQ4NiA0LjQ4NiAwIDAgMSAxMi4wMjUgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWb2x1bWVEb3duIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkgNGEuNS41IDAgMCAwLS44MTItLjM5TDUuODI1IDUuNUgzLjVBLjUuNSAwIDAgMCAzIDZ2NGEuNS41IDAgMCAwIC41LjVoMi4zMjVsMi4zNjMgMS44OUEuNS41IDAgMCAwIDkgMTJWNHpNNi4zMTIgNi4zOSA4IDUuMDR2NS45Mkw2LjMxMiA5LjYxQS41LjUgMCAwIDAgNiA5LjVINHYtM2gyYS41LjUgMCAwIDAgLjMxMi0uMTF6TTEyLjAyNSA4YTQuNDg2IDQuNDg2IDAgMCAxLTEuMzE4IDMuMTgyTDEwIDEwLjQ3NUEzLjQ4OSAzLjQ4OSAwIDAgMCAxMS4wMjUgOCAzLjQ5IDMuNDkgMCAwIDAgMTAgNS41MjVsLjcwNy0uNzA3QTQuNDg2IDQuNDg2IDAgMCAxIDEyLjAyNSA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1ZvbHVtZU11dGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzE3IDMuNTVBLjUuNSAwIDAgMSA3IDR2OGEuNS41IDAgMCAxLS44MTIuMzlMMy44MjUgMTAuNUgxLjVBLjUuNSAwIDAgMSAxIDEwVjZhLjUuNSAwIDAgMSAuNS0uNWgyLjMyNWwyLjM2My0xLjg5YS41LjUgMCAwIDEgLjUyOS0uMDZ6bTcuMTM3IDIuMDk2YS41LjUgMCAwIDEgMCAuNzA4TDEyLjIwNyA4bDEuNjQ3IDEuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMMTEuNSA4LjcwN2wtMS42NDYgMS42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuNzkzIDggOS4xNDYgNi4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDhMMTEuNSA3LjI5M2wxLjY0Ni0xLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWb2x1bWVNdXRlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTYuNzE3IDMuNTVBLjUuNSAwIDAgMSA3IDR2OGEuNS41IDAgMCAxLS44MTIuMzlMMy44MjUgMTAuNUgxLjVBLjUuNSAwIDAgMSAxIDEwVjZhLjUuNSAwIDAgMSAuNS0uNWgyLjMyNWwyLjM2My0xLjg5YS41LjUgMCAwIDEgLjUyOS0uMDZ6TTYgNS4wNCA0LjMxMiA2LjM5QS41LjUgMCAwIDEgNCA2LjVIMnYzaDJhLjUuNSAwIDAgMSAuMzEyLjExTDYgMTAuOTZWNS4wNHptNy44NTQuNjA2YS41LjUgMCAwIDEgMCAuNzA4TDEyLjIwNyA4bDEuNjQ3IDEuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMMTEuNSA4LjcwN2wtMS42NDYgMS42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMMTAuNzkzIDggOS4xNDYgNi4zNTRhLjUuNSAwIDEgMSAuNzA4LS43MDhMMTEuNSA3LjI5M2wxLjY0Ni0xLjY0N2EuNS41IDAgMCAxIC43MDggMHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWb2x1bWVPZmZGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjcxNyAzLjU1QS41LjUgMCAwIDEgMTEgNHY4YS41LjUgMCAwIDEtLjgxMi4zOUw3LjgyNSAxMC41SDUuNUEuNS41IDAgMCAxIDUgMTBWNmEuNS41IDAgMCAxIC41LS41aDIuMzI1bDIuMzYzLTEuODlhLjUuNSAwIDAgMSAuNTI5LS4wNnpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWb2x1bWVPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzE3IDMuNTVBLjUuNSAwIDAgMSAxMSA0djhhLjUuNSAwIDAgMS0uODEyLjM5TDcuODI1IDEwLjVINS41QS41LjUgMCAwIDEgNSAxMFY2YS41LjUgMCAwIDEgLjUtLjVoMi4zMjVsMi4zNjMtMS44OWEuNS41IDAgMCAxIC41MjktLjA2ek0xMCA1LjA0IDguMzEyIDYuMzlBLjUuNSAwIDAgMSA4IDYuNUg2djNoMmEuNS41IDAgMCAxIC4zMTIuMTFMMTAgMTAuOTZWNS4wNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNWb2x1bWVVcEZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTM2IDE0LjAxQTguNDczIDguNDczIDAgMCAwIDE0LjAyNiA4YTguNDczIDguNDczIDAgMCAwLTIuNDktNi4wMWwtLjcwOC43MDdBNy40NzYgNy40NzYgMCAwIDEgMTMuMDI1IDhjMCAyLjA3MS0uODQgMy45NDYtMi4xOTcgNS4zMDNsLjcwOC43MDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMTIxIDEyLjU5NkE2LjQ4IDYuNDggMCAwIDAgMTIuMDI1IDhhNi40OCA2LjQ4IDAgMCAwLTEuOTA0LTQuNTk2bC0uNzA3LjcwN0E1LjQ4MyA1LjQ4MyAwIDAgMSAxMS4wMjUgOGE1LjQ4MyA1LjQ4MyAwIDAgMS0xLjYxIDMuODlsLjcwNi43MDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOC43MDcgMTEuMTgyQTQuNDg2IDQuNDg2IDAgMCAwIDEwLjAyNSA4YTQuNDg2IDQuNDg2IDAgMCAwLTEuMzE4LTMuMTgyTDggNS41MjVBMy40ODkgMy40ODkgMCAwIDEgOS4wMjUgOCAzLjQ5IDMuNDkgMCAwIDEgOCAxMC40NzVsLjcwNy43MDd6TTYuNzE3IDMuNTVBLjUuNSAwIDAgMSA3IDR2OGEuNS41IDAgMCAxLS44MTIuMzlMMy44MjUgMTAuNUgxLjVBLjUuNSAwIDAgMSAxIDEwVjZhLjUuNSAwIDAgMSAuNS0uNWgyLjMyNWwyLjM2My0xLjg5YS41LjUgMCAwIDEgLjUyOS0uMDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVm9sdW1lVXAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNTM2IDE0LjAxQTguNDczIDguNDczIDAgMCAwIDE0LjAyNiA4YTguNDczIDguNDczIDAgMCAwLTIuNDktNi4wMWwtLjcwOC43MDdBNy40NzYgNy40NzYgMCAwIDEgMTMuMDI1IDhjMCAyLjA3MS0uODQgMy45NDYtMi4xOTcgNS4zMDNsLjcwOC43MDd6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMTIxIDEyLjU5NkE2LjQ4IDYuNDggMCAwIDAgMTIuMDI1IDhhNi40OCA2LjQ4IDAgMCAwLTEuOTA0LTQuNTk2bC0uNzA3LjcwN0E1LjQ4MyA1LjQ4MyAwIDAgMSAxMS4wMjUgOGE1LjQ4MyA1LjQ4MyAwIDAgMS0xLjYxIDMuODlsLjcwNi43MDZ6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMDI1IDhhNC40ODYgNC40ODYgMCAwIDEtMS4zMTggMy4xODJMOCAxMC40NzVBMy40ODkgMy40ODkgMCAwIDAgOS4wMjUgOGMwLS45NjYtLjM5Mi0xLjg0MS0xLjAyNS0yLjQ3NWwuNzA3LS43MDdBNC40ODYgNC40ODYgMCAwIDEgMTAuMDI1IDh6TTcgNGEuNS41IDAgMCAwLS44MTItLjM5TDMuODI1IDUuNUgxLjVBLjUuNSAwIDAgMCAxIDZ2NGEuNS41IDAgMCAwIC41LjVoMi4zMjVsMi4zNjMgMS44OUEuNS41IDAgMCAwIDcgMTJWNHpNNC4zMTIgNi4zOSA2IDUuMDR2NS45Mkw0LjMxMiA5LjYxQS41LjUgMCAwIDAgNCA5LjVIMnYtM2gyYS41LjUgMCAwIDAgLjMxMi0uMTF6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzVnIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMyAxMlY0YTEgMSAwIDAgMSAxLTFoMi41VjJINGEyIDIgMCAwIDAtMiAydjhhMiAyIDAgMCAwIDIgMmgyLjV2LTFINGExIDEgMCAwIDEtMS0xem02LjUgMXYxSDEyYTIgMiAwIDAgMCAyLTJWNGEyIDIgMCAwIDAtMi0ySDkuNXYxSDEyYTEgMSAwIDAgMSAxIDF2OGExIDEgMCAwIDEtMSAxSDkuNXpNOCAxNmEuNS41IDAgMCAxLS41LS41Vi41YS41LjUgMCAwIDEgMSAwdjE1YS41LjUgMCAwIDEtLjUuNXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNXYWxsZXRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEuNSAyQTEuNSAxLjUgMCAwIDAgMCAzLjV2Mmg2YS41LjUgMCAwIDEgLjUuNWMwIC4yNTMuMDguNjQ0LjMwNi45NTguMjA3LjI4OC41NTcuNTQyIDEuMTk0LjU0Mi42MzcgMCAuOTg3LS4yNTQgMS4xOTQtLjU0Mi4yMjYtLjMxNC4zMDYtLjcwNS4zMDYtLjk1OGEuNS41IDAgMCAxIC41LS41aDZ2LTJBMS41IDEuNSAwIDAgMCAxNC41IDJoLTEzelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDYuNWgtNS41NTFhMi42NzggMi42NzggMCAwIDEtLjQ0MyAxLjA0MkM5LjYxMyA4LjA4OCA4Ljk2MyA4LjUgOCA4LjVjLS45NjMgMC0xLjYxMy0uNDEyLTIuMDA2LS45NThBMi42NzkgMi42NzkgMCAwIDEgNS41NTEgNi41SDB2NkExLjUgMS41IDAgMCAwIDEuNSAxNGgxM2ExLjUgMS41IDAgMCAwIDEuNS0xLjV2LTZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2FsbGV0IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTAgM2EyIDIgMCAwIDEgMi0yaDEzLjVhLjUuNSAwIDAgMSAwIDFIMTV2MmExIDEgMCAwIDEgMSAxdjguNWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEyQTIuNSAyLjUgMCAwIDEgMCAxMi41VjN6bTEgMS43MzJWMTIuNUExLjUgMS41IDAgMCAwIDIuNSAxNGgxMmEuNS41IDAgMCAwIC41LS41VjVIMmExLjk5IDEuOTkgMCAwIDEtMS0uMjY4ek0xIDNhMSAxIDAgMCAwIDEgMWgxMlYySDJhMSAxIDAgMCAwLTEgMXpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNXYWxsZXQyIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjEzNi4zMjZBMS41IDEuNSAwIDAgMSAxNCAxLjc4VjNoLjVBMS41IDEuNSAwIDAgMSAxNiA0LjV2OWExLjUgMS41IDAgMCAxLTEuNSAxLjVoLTEzQTEuNSAxLjUgMCAwIDEgMCAxMy41di05YTEuNSAxLjUgMCAwIDEgMS40MzItMS40OTlMMTIuMTM2LjMyNnpNNS41NjIgM0gxM1YxLjc4YS41LjUgMCAwIDAtLjYyMS0uNDg0TDUuNTYyIDN6TTEuNSA0YS41LjUgMCAwIDAtLjUuNXY5YS41LjUgMCAwIDAgLjUuNWgxM2EuNS41IDAgMCAwIC41LS41di05YS41LjUgMCAwIDAtLjUtLjVoLTEzelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dhdGNoIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguNSA1YS41LjUgMCAwIDAtMSAwdjIuNUg2YS41LjUgMCAwIDAgMCAxaDJhLjUuNSAwIDAgMCAuNS0uNVY1elwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTUuNjY3IDE2QzQuNzQ3IDE2IDQgMTUuMjU0IDQgMTQuMzMzdi0xLjg2QTUuOTg1IDUuOTg1IDAgMCAxIDIgOGMwLTEuNzc3Ljc3Mi0zLjM3NCAyLTQuNDcyVjEuNjY3QzQgLjc0NyA0Ljc0NiAwIDUuNjY3IDBoNC42NjZDMTEuMjUzIDAgMTIgLjc0NiAxMiAxLjY2N3YxLjg2YTUuOTkgNS45OSAwIDAgMSAxLjkxOCAzLjQ4LjUwMi41MDIgMCAwIDEgLjU4Mi40OTN2MWEuNS41IDAgMCAxLS41ODIuNDkzQTUuOTkgNS45OSAwIDAgMSAxMiAxMi40NzN2MS44NmMwIC45Mi0uNzQ2IDEuNjY3LTEuNjY3IDEuNjY3SDUuNjY3ek0xMyA4QTUgNSAwIDEgMCAzIDhhNSA1IDAgMCAwIDEwIDB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2F0ZXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjAzNiAzLjMxNGEuNS41IDAgMCAxIC42NS0uMjc4bDEuNzU3LjcwM2ExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS4wMTQtLjQwNmEyLjUgMi41IDAgMCAxIDEuODU3IDBsMS4wMTUuNDA2YTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjAxNC0uNDA2YTIuNSAyLjUgMCAwIDEgMS44NTcgMGwxLjAxNS40MDZhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuNzU3LS43MDNhLjUuNSAwIDEgMSAuMzcyLjkyOGwtMS43NTguNzAzYTIuNSAyLjUgMCAwIDEtMS44NTcgMGwtMS4wMTQtLjQwNmExLjUgMS41IDAgMCAwLTEuMTE0IDBsLTEuMDE1LjQwNmEyLjUgMi41IDAgMCAxLTEuODU3IDBsLTEuMDE0LS40MDZhMS41IDEuNSAwIDAgMC0xLjExNCAwbC0xLjAxNS40MDZhMi41IDIuNSAwIDAgMS0xLjg1NyAwTC4zMTQgMy45NjRhLjUuNSAwIDAgMS0uMjc4LS42NXptMCAzYS41LjUgMCAwIDEgLjY1LS4yNzhsMS43NTcuNzAzYTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjAxNC0uNDA2YTIuNSAyLjUgMCAwIDEgMS44NTcgMGwxLjAxNS40MDZhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuMDE0LS40MDZhMi41IDIuNSAwIDAgMSAxLjg1NyAwbDEuMDE1LjQwNmExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS43NTctLjcwM2EuNS41IDAgMSAxIC4zNzIuOTI4bC0xLjc1OC43MDNhMi41IDIuNSAwIDAgMS0xLjg1NyAwbC0xLjAxNC0uNDA2YTEuNSAxLjUgMCAwIDAtMS4xMTQgMGwtMS4wMTUuNDA2YTIuNSAyLjUgMCAwIDEtMS44NTcgMGwtMS4wMTQtLjQwNmExLjUgMS41IDAgMCAwLTEuMTE0IDBsLTEuMDE1LjQwNmEyLjUgMi41IDAgMCAxLTEuODU3IDBMLjMxNCA2Ljk2NGEuNS41IDAgMCAxLS4yNzgtLjY1em0wIDNhLjUuNSAwIDAgMSAuNjUtLjI3OGwxLjc1Ny43MDNhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuMDE0LS40MDZhMi41IDIuNSAwIDAgMSAxLjg1NyAwbDEuMDE1LjQwNmExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS4wMTQtLjQwNmEyLjUgMi41IDAgMCAxIDEuODU3IDBsMS4wMTUuNDA2YTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjc1Ny0uNzAzYS41LjUgMCAxIDEgLjM3Mi45MjhsLTEuNzU4LjcwM2EyLjUgMi41IDAgMCAxLTEuODU3IDBsLTEuMDE0LS40MDZhMS41IDEuNSAwIDAgMC0xLjExNCAwbC0xLjAxNS40MDZhMi41IDIuNSAwIDAgMS0xLjg1NyAwbC0xLjAxNC0uNDA2YTEuNSAxLjUgMCAwIDAtMS4xMTQgMGwtMS4wMTUuNDA2YTIuNSAyLjUgMCAwIDEtMS44NTcgMEwuMzE0IDkuOTY0YS41LjUgMCAwIDEtLjI3OC0uNjV6bTAgM2EuNS41IDAgMCAxIC42NS0uMjc4bDEuNzU3LjcwM2ExLjUgMS41IDAgMCAwIDEuMTE0IDBsMS4wMTQtLjQwNmEyLjUgMi41IDAgMCAxIDEuODU3IDBsMS4wMTUuNDA2YTEuNSAxLjUgMCAwIDAgMS4xMTQgMGwxLjAxNC0uNDA2YTIuNSAyLjUgMCAwIDEgMS44NTcgMGwxLjAxNS40MDZhMS41IDEuNSAwIDAgMCAxLjExNCAwbDEuNzU3LS43MDNhLjUuNSAwIDEgMSAuMzcyLjkyOGwtMS43NTguNzAzYTIuNSAyLjUgMCAwIDEtMS44NTcgMGwtMS4wMTQtLjQwNmExLjUgMS41IDAgMCAwLTEuMTE0IDBsLTEuMDE1LjQwNmEyLjUgMi41IDAgMCAxLTEuODU3IDBsLTEuMDE0LS40MDZhMS41IDEuNSAwIDAgMC0xLjExNCAwbC0xLjAxNS40MDZhMi41IDIuNSAwIDAgMS0xLjg1NyAwbC0xLjc1Ny0uNzAzYS41LjUgMCAwIDEtLjI3OC0uNjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2hhdHNhcHAgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuNjAxIDIuMzI2QTcuODU0IDcuODU0IDAgMCAwIDcuOTk0IDBDMy42MjcgMCAuMDY4IDMuNTU4LjA2NCA3LjkyNmMwIDEuMzk5LjM2NiAyLjc2IDEuMDU3IDMuOTY1TDAgMTZsNC4yMDQtMS4xMDJhNy45MzMgNy45MzMgMCAwIDAgMy43OS45NjVoLjAwNGM0LjM2OCAwIDcuOTI2LTMuNTU4IDcuOTMtNy45M0E3Ljg5OCA3Ljg5OCAwIDAgMCAxMy42IDIuMzI2ek03Ljk5NCAxNC41MjFhNi41NzMgNi41NzMgMCAwIDEtMy4zNTYtLjkybC0uMjQtLjE0NC0yLjQ5NC42NTQuNjY2LTIuNDMzLS4xNTYtLjI1MWE2LjU2IDYuNTYgMCAwIDEtMS4wMDctMy41MDVjMC0zLjYyNiAyLjk1Ny02LjU4NCA2LjU5MS02LjU4NGE2LjU2IDYuNTYgMCAwIDEgNC42NiAxLjkzMSA2LjU1NyA2LjU1NyAwIDAgMSAxLjkyOCA0LjY2Yy0uMDA0IDMuNjM5LTIuOTYxIDYuNTkyLTYuNTkyIDYuNTkyem0zLjYxNS00LjkzNGMtLjE5Ny0uMDk5LTEuMTctLjU3OC0xLjM1My0uNjQ2LS4xODItLjA2NS0uMzE1LS4wOTktLjQ0NS4wOTktLjEzMy4xOTctLjUxMy42NDYtLjYyNy43NzUtLjExNC4xMzMtLjIzMi4xNDgtLjQzLjA1LS4xOTctLjEtLjgzNi0uMzA4LTEuNTkyLS45ODUtLjU5LS41MjUtLjk4NS0xLjE3NS0xLjEwMy0xLjM3Mi0uMTE0LS4xOTgtLjAxMS0uMzA0LjA4OC0uNDAzLjA4Ny0uMDg4LjE5Ny0uMjMyLjI5Ni0uMzQ2LjEtLjExNC4xMzMtLjE5OC4xOTgtLjMzLjA2NS0uMTM0LjAzNC0uMjQ4LS4wMTUtLjM0Ny0uMDUtLjA5OS0uNDQ1LTEuMDc2LS42MTItMS40Ny0uMTYtLjM4OS0uMzIzLS4zMzUtLjQ0NS0uMzQtLjExNC0uMDA3LS4yNDctLjAwNy0uMzgtLjAwN2EuNzI5LjcyOSAwIDAgMC0uNTI5LjI0N2MtLjE4Mi4xOTgtLjY5MS42NzctLjY5MSAxLjY1NCAwIC45NzcuNzEgMS45MTYuODEgMi4wNDkuMDk4LjEzMyAxLjM5NCAyLjEzMiAzLjM4MyAyLjk5Mi40Ny4yMDUuODQuMzI2IDEuMTI5LjQxOC40NzUuMTUyLjkwNC4xMjkgMS4yNDYuMDguMzgtLjA1OCAxLjE3MS0uNDggMS4zMzgtLjk0My4xNjQtLjQ2NC4xNjQtLjg2LjExNC0uOTQzLS4wNDktLjA4NC0uMTgyLS4xMzMtLjM4LS4yMzJ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2lmaTEgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuMDQ2IDEwLjQ1NGMuMjI2LS4yMjYuMTg1LS42MDUtLjEtLjc1QTYuNDczIDYuNDczIDAgMCAwIDggOWMtMS4wNiAwLTIuMDYyLjI1NC0yLjk0Ni43MDQtLjI4NS4xNDUtLjMyNi41MjQtLjEuNzVsLjAxNS4wMTVjLjE2LjE2LjQwNy4xOS42MTEuMDlBNS40NzggNS40NzggMCAwIDEgOCAxMGMuODY4IDAgMS42OS4yMDEgMi40Mi41Ni4yMDMuMS40NS4wNy42MTEtLjA5MWwuMDE1LS4wMTV6TTkuMDYgMTIuNDRjLjE5Ni0uMTk2LjE5OC0uNTItLjA0LS42NkExLjk5IDEuOTkgMCAwIDAgOCAxMS41YTEuOTkgMS45OSAwIDAgMC0xLjAyLjI4Yy0uMjM4LjE0LS4yMzYuNDY0LS4wNC42NmwuNzA2LjcwNmEuNS41IDAgMCAwIC43MDcgMGwuNzA4LS43MDd6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2lmaTIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTMuMjI5IDguMjcxYy4yMTYtLjIxNi4xOTQtLjU3OC0uMDYzLS43NDVBOS40NTYgOS40NTYgMCAwIDAgOCA2Yy0xLjkwNSAwLTMuNjguNTYtNS4xNjYgMS41MjZhLjQ4LjQ4IDAgMCAwLS4wNjMuNzQ1LjUyNS41MjUgMCAwIDAgLjY1Mi4wNjVBOC40NiA4LjQ2IDAgMCAxIDggN2E4LjQ2IDguNDYgMCAwIDEgNC41NzcgMS4zMzZjLjIwNS4xMzIuNDguMTA4LjY1Mi0uMDY1em0tMi4xODMgMi4xODNjLjIyNi0uMjI2LjE4NS0uNjA1LS4xLS43NUE2LjQ3MyA2LjQ3MyAwIDAgMCA4IDljLTEuMDYgMC0yLjA2Mi4yNTQtMi45NDYuNzA0LS4yODUuMTQ1LS4zMjYuNTI0LS4xLjc1bC4wMTUuMDE1Yy4xNi4xNi40MDguMTkuNjExLjA5QTUuNDc4IDUuNDc4IDAgMCAxIDggMTBjLjg2OCAwIDEuNjkuMjAxIDIuNDIuNTYuMjAzLjEuNDUuMDcuNjExLS4wOTFsLjAxNS0uMDE1ek05LjA2IDEyLjQ0Yy4xOTYtLjE5Ni4xOTgtLjUyLS4wNC0uNjZBMS45OSAxLjk5IDAgMCAwIDggMTEuNWExLjk5IDEuOTkgMCAwIDAtMS4wMi4yOGMtLjIzOC4xNC0uMjM2LjQ2NC0uMDQuNjZsLjcwNi43MDZhLjUuNSAwIDAgMCAuNzA4IDBsLjcwNy0uNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dpZmlPZmYgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuNzA2IDMuMjk0QTEyLjU0NSAxMi41NDUgMCAwIDAgOCAzQzUuMjU5IDMgMi43MjMgMy44ODIuNjYzIDUuMzc5YS40ODUuNDg1IDAgMCAwLS4wNDguNzM2LjUxOC41MTggMCAwIDAgLjY2OC4wNUExMS40NDggMTEuNDQ4IDAgMCAxIDggNGMuNjMgMCAxLjI0OS4wNSAxLjg1Mi4xNDhsLjg1NC0uODU0ek04IDZjLTEuOTA1IDAtMy42OC41Ni01LjE2NiAxLjUyNmEuNDguNDggMCAwIDAtLjA2My43NDUuNTI1LjUyNSAwIDAgMCAuNjUyLjA2NSA4LjQ0OCA4LjQ0OCAwIDAgMSAzLjUxLTEuMjdMOCA2em0yLjU5NiAxLjQwNC43ODUtLjc4NWMuNjMuMjQgMS4yMjcuNTQ1IDEuNzg1LjkwN2EuNDgyLjQ4MiAwIDAgMSAuMDYzLjc0NS41MjUuNTI1IDAgMCAxLS42NTIuMDY1IDguNDYyIDguNDYyIDAgMCAwLTEuOTgtLjkzMnpNOCAxMGwuOTMzLS45MzNhNi40NTUgNi40NTUgMCAwIDEgMi4wMTMuNjM3Yy4yODUuMTQ1LjMyNi41MjQuMS43NWwtLjAxNS4wMTVhLjUzMi41MzIgMCAwIDEtLjYxMS4wOUE1LjQ3OCA1LjQ3OCAwIDAgMCA4IDEwem00LjkwNS00LjkwNS43NDctLjc0N2MuNTkuMyAxLjE1My42NDUgMS42ODUgMS4wM2EuNDg1LjQ4NSAwIDAgMSAuMDQ3LjczNy41MTguNTE4IDAgMCAxLS42NjguMDUgMTEuNDkzIDExLjQ5MyAwIDAgMC0xLjgxMS0xLjA3ek05LjAyIDExLjc4Yy4yMzguMTQuMjM2LjQ2NC4wNC42NmwtLjcwNy43MDZhLjUuNSAwIDAgMS0uNzA3IDBsLS43MDctLjcwN2MtLjE5NS0uMTk1LS4xOTctLjUxOC4wNC0uNjZBMS45OSAxLjk5IDAgMCAxIDggMTEuNWMuMzc0IDAgLjcyMy4xMDIgMS4wMjEuMjh6bTQuMzU1LTkuOTA1YS41My41MyAwIDAgMSAuNzUuNzVsLTEwLjc1IDEwLjc1YS41My41MyAwIDAgMS0uNzUtLjc1bDEwLjc1LTEwLjc1elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dpZmkgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTUuMzg0IDYuMTE1YS40ODUuNDg1IDAgMCAwLS4wNDctLjczNkExMi40NDQgMTIuNDQ0IDAgMCAwIDggM0M1LjI1OSAzIDIuNzIzIDMuODgyLjY2MyA1LjM3OWEuNDg1LjQ4NSAwIDAgMC0uMDQ4LjczNi41MTguNTE4IDAgMCAwIC42NjguMDVBMTEuNDQ4IDExLjQ0OCAwIDAgMSA4IDRjMi41MDcgMCA0LjgyNy44MDIgNi43MTYgMi4xNjQuMjA1LjE0OC40OS4xMy42NjgtLjA0OXpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xMy4yMjkgOC4yNzFhLjQ4Mi40ODIgMCAwIDAtLjA2My0uNzQ1QTkuNDU1IDkuNDU1IDAgMCAwIDggNmMtMS45MDUgMC0zLjY4LjU2LTUuMTY2IDEuNTI2YS40OC40OCAwIDAgMC0uMDYzLjc0NS41MjUuNTI1IDAgMCAwIC42NTIuMDY1QTguNDYgOC40NiAwIDAgMSA4IDdhOC40NiA4LjQ2IDAgMCAxIDQuNTc2IDEuMzM2Yy4yMDYuMTMyLjQ4LjEwOC42NTMtLjA2NXptLTIuMTgzIDIuMTgzYy4yMjYtLjIyNi4xODUtLjYwNS0uMS0uNzVBNi40NzMgNi40NzMgMCAwIDAgOCA5Yy0xLjA2IDAtMi4wNjIuMjU0LTIuOTQ2LjcwNC0uMjg1LjE0NS0uMzI2LjUyNC0uMS43NWwuMDE1LjAxNWMuMTYuMTYuNDA3LjE5LjYxMS4wOUE1LjQ3OCA1LjQ3OCAwIDAgMSA4IDEwYy44NjggMCAxLjY5LjIwMSAyLjQyLjU2LjIwMy4xLjQ1LjA3LjYxLS4wOTFsLjAxNi0uMDE1ek05LjA2IDEyLjQ0Yy4xOTYtLjE5Ni4xOTgtLjUyLS4wNC0uNjZBMS45OSAxLjk5IDAgMCAwIDggMTEuNWExLjk5IDEuOTkgMCAwIDAtMS4wMi4yOGMtLjIzOC4xNC0uMjM2LjQ2NC0uMDQuNjZsLjcwNi43MDZhLjUuNSAwIDAgMCAuNzA3IDBsLjcwNy0uNzA3elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dpbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTIuNSAyQTIuNSAyLjUgMCAwIDAgMTAgNC41YS41LjUgMCAwIDEtMSAwQTMuNSAzLjUgMCAxIDEgMTIuNSA4SC41YS41LjUgMCAwIDEgMC0xaDEyYTIuNSAyLjUgMCAwIDAgMC01em0tNyAxYTEgMSAwIDAgMC0xIDEgLjUuNSAwIDAgMS0xIDAgMiAyIDAgMSAxIDIgMmgtNWEuNS41IDAgMCAxIDAtMWg1YTEgMSAwIDAgMCAwLTJ6TTAgOS41QS41LjUgMCAwIDEgLjUgOWgxMC4wNDJhMyAzIDAgMSAxLTMgMyAuNS41IDAgMCAxIDEgMCAyIDIgMCAxIDAgMi0ySC41YS41LjUgMCAwIDEtLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2luZG93RG9jayAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNMTUgNUgxdjhhMSAxIDAgMCAwIDEgMWgxMmExIDEgMCAwIDAgMS0xVjV6bTAtMUgxVjNhMSAxIDAgMCAxIDEtMWgxMmExIDEgMCAwIDEgMSAxdjF6bTEtMWEyIDIgMCAwIDAtMi0ySDJhMiAyIDAgMCAwLTIgMnYxMGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWM3pcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0zIDExLjVhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xem00IDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xem00IDBhLjUuNSAwIDAgMSAuNS0uNWgxYS41LjUgMCAwIDEgLjUuNXYxYS41LjUgMCAwIDEtLjUuNWgtMWEuNS41IDAgMCAxLS41LS41di0xelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dpbmRvd1NpZGViYXIgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMi41IDRhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6bTItLjVhLjUuNSAwIDEgMS0xIDAgLjUuNSAwIDAgMSAxIDB6bTEgLjVhLjUuNSAwIDEgMCAwLTEgLjUuNSAwIDAgMCAwIDF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMiAxYTIgMiAwIDAgMC0yIDJ2MTBhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjNhMiAyIDAgMCAwLTItMkgyem0xMiAxYTEgMSAwIDAgMSAxIDF2MkgxVjNhMSAxIDAgMCAxIDEtMWgxMnpNMSAxM1Y2aDR2OEgyYTEgMSAwIDAgMS0xLTF6bTUgMVY2aDl2N2ExIDEgMCAwIDEtMSAxSDZ6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV2luZG93IChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIuNSA0YS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxem0yLS41YS41LjUgMCAxIDEtMSAwIC41LjUgMCAwIDEgMSAwem0xIC41YS41LjUgMCAxIDAgMC0xIC41LjUgMCAwIDAgMCAxelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMWEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYzYTIgMiAwIDAgMC0yLTJIMnptMTMgMnYySDFWM2ExIDEgMCAwIDEgMS0xaDEyYTEgMSAwIDAgMSAxIDF6TTIgMTRhMSAxIDAgMCAxLTEtMVY2aDE0djdhMSAxIDAgMCAxLTEgMUgyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1dpbmRvd3MgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNi41NTUgMS4zNzUgMCAyLjIzN3Y1LjQ1aDYuNTU1VjEuMzc1ek0wIDEzLjc5NWw2LjU1NS45MzNWOC4zMTNIMHY1LjQ4MnptNy4yNzgtNS40LjAyNiA2LjM3OEwxNiAxNlY4LjM5NUg3LjI3OHpNMTYgMCA3LjMzIDEuMjQ0djYuNDE0SDE2VjB6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzV29yZHByZXNzIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEyLjYzMyA3LjY1M2MwLS44NDgtLjMwNS0xLjQzNS0uNTY2LTEuODkybC0uMDgtLjEzYy0uMzE3LS41MS0uNTk0LS45NTgtLjU5NC0xLjQ4IDAtLjYzLjQ3OC0xLjIxOCAxLjE1Mi0xLjIxOC4wMiAwIC4wMzkuMDAyLjA1OC4wMDNsLjAzMS4wMDNBNi44MzggNi44MzggMCAwIDAgOCAxLjEzNyA2Ljg1NSA2Ljg1NSAwIDAgMCAyLjI2NiA0LjIzYy4xNi4wMDUuMzEzLjAwOS40NDIuMDA5LjcxNyAwIDEuODI4LS4wODcgMS44MjgtLjA4Ny4zNy0uMDIyLjQxNC41MjEuMDQ0LjU2NSAwIDAtLjM3MS4wNDQtLjc4NS4wNjVsMi41IDcuNDM0IDEuNS00LjUwNi0xLjA3LTIuOTI5Yy0uMzY5LS4wMjItLjcxOS0uMDY1LS43MTktLjA2NS0uMzctLjAyMi0uMzI2LS41ODguMDQzLS41NjYgMCAwIDEuMTM0LjA4NyAxLjgwOC4wODcuNzE4IDAgMS44My0uMDg3IDEuODMtLjA4Ny4zNy0uMDIyLjQxMy41MjIuMDQzLjU2NiAwIDAtLjM3Mi4wNDMtLjc4NS4wNjVsMi40OCA3LjM3Ny42ODQtMi4yODcuMDU0LS4xNzNjLjI3LS44Ni40NjktMS40OTUuNDY5LTIuMDQ2ek0xLjEzNyA4YTYuODY0IDYuODY0IDAgMCAwIDMuODY4IDYuMTc2TDEuNzMgNS4yMDZBNi44MzcgNi44MzcgMCAwIDAgMS4xMzcgOHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk02LjA2MSAxNC41ODMgOC4xMjEgOC42bDIuMTA5IDUuNzhjLjAxNC4wMzMuMDMuMDY0LjA0OS4wOTRhNi44NTQgNi44NTQgMCAwIDEtNC4yMTguMTA5em03Ljk2LTkuODc2Yy4wMy4yMTkuMDQ3LjQ1My4wNDcuNzA2IDAgLjY5Ni0uMTMgMS40NzktLjUyMiAyLjQ1OGwtMi4wOTYgNi4wNmE2Ljg2IDYuODYgMCAwIDAgMi41NzItOS4yMjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTAgOGMwLTQuNDExIDMuNTg5LTggOC04IDQuNDEgMCA4IDMuNTg5IDggOHMtMy41OSA4LTggOGMtNC40MTEgMC04LTMuNTg5LTgtOHptLjM2NyAwYzAgNC4yMDkgMy40MjQgNy42MzMgNy42MzMgNy42MzMgNC4yMDggMCA3LjYzMi0zLjQyNCA3LjYzMi03LjYzM0MxNS42MzIgMy43OSAxMi4yMDguMzY3IDggLjM2NyAzLjc5LjM2Ny4zNjcgMy43OS4zNjcgOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNXcmVuY2ggKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNLjEwMiAyLjIyM0EzLjAwNCAzLjAwNCAwIDAgMCAzLjc4IDUuODk3bDYuMzQxIDYuMjUyQTMuMDAzIDMuMDAzIDAgMCAwIDEzIDE2YTMgMyAwIDEgMC0uODUxLTUuODc4TDUuODk3IDMuNzgxQTMuMDA0IDMuMDA0IDAgMCAwIDIuMjIzLjFsMi4xNDEgMi4xNDJMNCA0bC0xLjc1Ny4zNjRMLjEwMiAyLjIyM3ptMTMuMzcgOS4wMTkuNTI4LjAyNi4yODcuNDQ1LjQ0NS4yODcuMDI2LjUyOUwxNSAxM2wtLjI0Mi40NzEtLjAyNi41MjktLjQ0NS4yODctLjI4Ny40NDUtLjUyOS4wMjZMMTMgMTVsLS40NzEtLjI0Mi0uNTI5LS4wMjYtLjI4Ny0uNDQ1LS40NDUtLjI4Ny0uMDI2LS41MjlMMTEgMTNsLjI0Mi0uNDcxLjAyNi0uNTI5LjQ0NS0uMjg3LjI4Ny0uNDQ1LjUyOS0uMDI2TDEzIDExbC40NzEuMjQyelwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hDaXJjbGVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTE2IDhBOCA4IDAgMSAxIDAgOGE4IDggMCAwIDEgMTYgMHpNNS4zNTQgNC42NDZhLjUuNSAwIDEgMC0uNzA4LjcwOEw3LjI5MyA4bC0yLjY0NyAyLjY0NmEuNS41IDAgMCAwIC43MDguNzA4TDggOC43MDdsMi42NDYgMi42NDdhLjUuNSAwIDAgMCAuNzA4LS43MDhMOC43MDcgOGwyLjY0Ny0yLjY0NmEuNS41IDAgMCAwLS43MDgtLjcwOEw4IDcuMjkzIDUuMzU0IDQuNjQ2elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hDaXJjbGUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNOCAxNUE3IDcgMCAxIDEgOCAxYTcgNyAwIDAgMSAwIDE0em0wIDFBOCA4IDAgMSAwIDggMGE4IDggMCAwIDAgMCAxNnpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk00LjY0NiA0LjY0NmEuNS41IDAgMCAxIC43MDggMEw4IDcuMjkzbDIuNjQ2LTIuNjQ3YS41LjUgMCAwIDEgLjcwOC43MDhMOC43MDcgOGwyLjY0NyAyLjY0NmEuNS41IDAgMCAxLS43MDguNzA4TDggOC43MDdsLTIuNjQ2IDIuNjQ3YS41LjUgMCAwIDEtLjcwOC0uNzA4TDcuMjkzIDggNC42NDYgNS4zNTRhLjUuNSAwIDAgMSAwLS43MDh6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzWERpYW1vbmRGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTkuMDUuNDM1Yy0uNTgtLjU4LTEuNTItLjU4LTIuMSAwTDQuMDQ3IDMuMzM5IDggNy4yOTNsMy45NTQtMy45NTRMOS4wNDkuNDM1em0zLjYxIDMuNjExTDguNzA4IDhsMy45NTQgMy45NTQgMi45MDQtMi45MDVjLjU4LS41OC41OC0xLjUxOSAwLTIuMDk4bC0yLjkwNC0yLjkwNXptLS43MDYgOC42MTRMOCA4LjcwOGwtMy45NTQgMy45NTQgMi45MDUgMi45MDRjLjU4LjU4IDEuNTE5LjU4IDIuMDk4IDBsMi45MDUtMi45MDR6bS04LjYxNC0uNzA2TDcuMjkyIDggMy4zMzkgNC4wNDYuNDM1IDYuOTUxYy0uNTguNTgtLjU4IDEuNTE5IDAgMi4wOThsMi45MDQgMi45MDV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzWERpYW1vbmQgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNy45ODcgMTZhMS41MjYgMS41MjYgMCAwIDEtMS4wNy0uNDQ4TC40NSA5LjA4MmExLjUzMSAxLjUzMSAwIDAgMSAwLTIuMTY1TDYuOTE3LjQ1YTEuNTMxIDEuNTMxIDAgMCAxIDIuMTY2IDBsNi40NjkgNi40NjhBMS41MjYgMS41MjYgMCAwIDEgMTYgOC4wMTNhMS41MjYgMS41MjYgMCAwIDEtLjQ0OCAxLjA3bC02LjQ3IDYuNDY5QTEuNTI2IDEuNTI2IDAgMCAxIDcuOTg4IDE2ek03LjYzOSAxLjE3IDQuNzY2IDQuMDQ0IDggNy4yNzhsMy4yMzQtMy4yMzRMOC4zNjEgMS4xN2EuNTEuNTEgMCAwIDAtLjcyMiAwek04LjcyMiA4bDMuMjM0IDMuMjM0IDIuODczLTIuODczYy4yLS4yLjItLjUyMyAwLS43MjJsLTIuODczLTIuODczTDguNzIyIDh6TTggOC43MjJsLTMuMjM0IDMuMjM0IDIuODczIDIuODczYy4yLjIuNTIzLjIuNzIyIDBsMi44NzMtMi44NzNMOCA4LjcyMnpNNy4yNzggOCA0LjA0NCA0Ljc2NiAxLjE3IDcuNjM5YS41MTEuNTExIDAgMCAwIDAgLjcyMmwyLjg3NCAyLjg3M0w3LjI3OCA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hMZyAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImRcIjpcIk0xLjI5MyAxLjI5M2ExIDEgMCAwIDEgMS40MTQgMEw4IDYuNTg2bDUuMjkzLTUuMjkzYTEgMSAwIDEgMSAxLjQxNCAxLjQxNEw5LjQxNCA4bDUuMjkzIDUuMjkzYTEgMSAwIDAgMS0xLjQxNCAxLjQxNEw4IDkuNDE0bC01LjI5MyA1LjI5M2ExIDEgMCAwIDEtMS40MTQtMS40MTRMNi41ODYgOCAxLjI5MyAyLjcwN2ExIDEgMCAwIDEgMC0xLjQxNHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNYT2N0YWdvbkZpbGwgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTEuNDYuMTQ2QS41LjUgMCAwIDAgMTEuMTA3IDBINC44OTNhLjUuNSAwIDAgMC0uMzUzLjE0NkwuMTQ2IDQuNTRBLjUuNSAwIDAgMCAwIDQuODkzdjYuMjE0YS41LjUgMCAwIDAgLjE0Ni4zNTNsNC4zOTQgNC4zOTRhLjUuNSAwIDAgMCAuMzUzLjE0Nmg2LjIxNGEuNS41IDAgMCAwIC4zNTMtLjE0Nmw0LjM5NC00LjM5NGEuNS41IDAgMCAwIC4xNDYtLjM1M1Y0Ljg5M2EuNS41IDAgMCAwLS4xNDYtLjM1M0wxMS40Ni4xNDZ6bS02LjEwNiA0LjVMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hPY3RhZ29uIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNTQuMTQ2QS41LjUgMCAwIDEgNC44OTMgMGg2LjIxNGEuNS41IDAgMCAxIC4zNTMuMTQ2bDQuMzk0IDQuMzk0YS41LjUgMCAwIDEgLjE0Ni4zNTN2Ni4yMTRhLjUuNSAwIDAgMS0uMTQ2LjM1M2wtNC4zOTQgNC4zOTRhLjUuNSAwIDAgMS0uMzUzLjE0Nkg0Ljg5M2EuNS41IDAgMCAxLS4zNTMtLjE0NkwuMTQ2IDExLjQ2QS41LjUgMCAwIDEgMCAxMS4xMDdWNC44OTNhLjUuNSAwIDAgMSAuMTQ2LS4zNTNMNC41NC4xNDZ6TTUuMSAxIDEgNS4xdjUuOEw1LjEgMTVoNS44bDQuMS00LjFWNS4xTDEwLjkgMUg1LjF6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hTcXVhcmVGaWxsIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTIgMGEyIDIgMCAwIDAtMiAydjEyYTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlYyYTIgMiAwIDAgMC0yLTJIMnptMy4zNTQgNC42NDZMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAxIDEgLjcwOC0uNzA4elwifX1dfSkocHJvcHMpO1xufTtcbmV4cG9ydCBmdW5jdGlvbiBCc1hTcXVhcmUgKHByb3BzKSB7XG4gIHJldHVybiBHZW5JY29uKHtcInRhZ1wiOlwic3ZnXCIsXCJhdHRyXCI6e1wiZmlsbFwiOlwiY3VycmVudENvbG9yXCIsXCJ2aWV3Qm94XCI6XCIwIDAgMTYgMTZcIn0sXCJjaGlsZFwiOlt7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTQgMWExIDEgMCAwIDEgMSAxdjEyYTEgMSAwIDAgMS0xIDFIMmExIDEgMCAwIDEtMS0xVjJhMSAxIDAgMCAxIDEtMWgxMnpNMiAwYTIgMiAwIDAgMC0yIDJ2MTJhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjJhMiAyIDAgMCAwLTItMkgyelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjQ2IDQuNjQ2YS41LjUgMCAwIDEgLjcwOCAwTDggNy4yOTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOEw4LjcwNyA4bDIuNjQ3IDIuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA4LjcwN2wtMi42NDYgMi42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOCA0LjY0NiA1LjM1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNYIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTQuNjQ2IDQuNjQ2YS41LjUgMCAwIDEgLjcwOCAwTDggNy4yOTNsMi42NDYtMi42NDdhLjUuNSAwIDAgMSAuNzA4LjcwOEw4LjcwNyA4bDIuNjQ3IDIuNjQ2YS41LjUgMCAwIDEtLjcwOC43MDhMOCA4LjcwN2wtMi42NDYgMi42NDdhLjUuNSAwIDAgMS0uNzA4LS43MDhMNy4yOTMgOCA0LjY0NiA1LjM1NGEuNS41IDAgMCAxIDAtLjcwOHpcIn19XX0pKHByb3BzKTtcbn07XG5leHBvcnQgZnVuY3Rpb24gQnNZb3V0dWJlIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTguMDUxIDEuOTk5aC4wODljLjgyMi4wMDMgNC45ODcuMDMzIDYuMTEuMzM1YTIuMDEgMi4wMSAwIDAgMSAxLjQxNSAxLjQyYy4xMDEuMzguMTcyLjg4My4yMiAxLjQwMmwuMDEuMTA0LjAyMi4yNi4wMDguMTA0Yy4wNjUuOTE0LjA3MyAxLjc3LjA3NCAxLjk1N3YuMDc1Yy0uMDAxLjE5NC0uMDEgMS4xMDgtLjA4MiAyLjA2bC0uMDA4LjEwNS0uMDA5LjEwNGMtLjA1LjU3Mi0uMTI0IDEuMTQtLjIzNSAxLjU1OGEyLjAwNyAyLjAwNyAwIDAgMS0xLjQxNSAxLjQyYy0xLjE2LjMxMi01LjU2OS4zMzQtNi4xOC4zMzVoLS4xNDJjLS4zMDkgMC0xLjU4Ny0uMDA2LTIuOTI3LS4wNTJsLS4xNy0uMDA2LS4wODctLjAwNC0uMTcxLS4wMDctLjE3MS0uMDA3Yy0xLjExLS4wNDktMi4xNjctLjEyOC0yLjY1NC0uMjZhMi4wMDcgMi4wMDcgMCAwIDEtMS40MTUtMS40MTljLS4xMTEtLjQxNy0uMTg1LS45ODYtLjIzNS0xLjU1OEwuMDkgOS44MmwtLjAwOC0uMTA0QTMxLjQgMzEuNCAwIDAgMSAwIDcuNjh2LS4xMjNjLjAwMi0uMjE1LjAxLS45NTguMDY0LTEuNzc4bC4wMDctLjEwMy4wMDMtLjA1Mi4wMDgtLjEwNC4wMjItLjI2LjAxLS4xMDRjLjA0OC0uNTE5LjExOS0xLjAyMy4yMi0xLjQwMmEyLjAwNyAyLjAwNyAwIDAgMSAxLjQxNS0xLjQyYy40ODctLjEzIDEuNTQ0LS4yMSAyLjY1NC0uMjZsLjE3LS4wMDcuMTcyLS4wMDYuMDg2LS4wMDMuMTcxLS4wMDdBOTkuNzg4IDk5Ljc4OCAwIDAgMSA3Ljg1OCAyaC4xOTN6TTYuNCA1LjIwOXY0LjgxOGw0LjE1Ny0yLjQwOEw2LjQgNS4yMDl6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzWm9vbUluIChwcm9wcykge1xuICByZXR1cm4gR2VuSWNvbih7XCJ0YWdcIjpcInN2Z1wiLFwiYXR0clwiOntcImZpbGxcIjpcImN1cnJlbnRDb2xvclwiLFwidmlld0JveFwiOlwiMCAwIDE2IDE2XCJ9LFwiY2hpbGRcIjpbe1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZmlsbFJ1bGVcIjpcImV2ZW5vZGRcIixcImRcIjpcIk02LjUgMTJhNS41IDUuNSAwIDEgMCAwLTExIDUuNSA1LjUgMCAwIDAgMCAxMXpNMTMgNi41YTYuNSA2LjUgMCAxIDEtMTMgMCA2LjUgNi41IDAgMCAxIDEzIDB6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJkXCI6XCJNMTAuMzQ0IDExLjc0MmMuMDMuMDQuMDYyLjA3OC4wOTguMTE1bDMuODUgMy44NWExIDEgMCAwIDAgMS40MTUtMS40MTRsLTMuODUtMy44NWExLjAwNyAxLjAwNyAwIDAgMC0uMTE1LS4xIDYuNTM4IDYuNTM4IDAgMCAxLTEuMzk4IDEuNHpcIn19LHtcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi41IDNhLjUuNSAwIDAgMSAuNS41VjZoMi41YS41LjUgMCAwIDEgMCAxSDd2Mi41YS41LjUgMCAwIDEtMSAwVjdIMy41YS41LjUgMCAwIDEgMC0xSDZWMy41YS41LjUgMCAwIDEgLjUtLjV6XCJ9fV19KShwcm9wcyk7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIEJzWm9vbU91dCAocHJvcHMpIHtcbiAgcmV0dXJuIEdlbkljb24oe1widGFnXCI6XCJzdmdcIixcImF0dHJcIjp7XCJmaWxsXCI6XCJjdXJyZW50Q29sb3JcIixcInZpZXdCb3hcIjpcIjAgMCAxNiAxNlwifSxcImNoaWxkXCI6W3tcInRhZ1wiOlwicGF0aFwiLFwiYXR0clwiOntcImZpbGxSdWxlXCI6XCJldmVub2RkXCIsXCJkXCI6XCJNNi41IDEyYTUuNSA1LjUgMCAxIDAgMC0xMSA1LjUgNS41IDAgMCAwIDAgMTF6TTEzIDYuNWE2LjUgNi41IDAgMSAxLTEzIDAgNi41IDYuNSAwIDAgMSAxMyAwelwifX0se1widGFnXCI6XCJwYXRoXCIsXCJhdHRyXCI6e1wiZFwiOlwiTTEwLjM0NCAxMS43NDJjLjAzLjA0LjA2Mi4wNzguMDk4LjExNWwzLjg1IDMuODVhMSAxIDAgMCAwIDEuNDE1LTEuNDE0bC0zLjg1LTMuODVhMS4wMDcgMS4wMDcgMCAwIDAtLjExNS0uMSA2LjUzOCA2LjUzOCAwIDAgMS0xLjM5OCAxLjR6XCJ9fSx7XCJ0YWdcIjpcInBhdGhcIixcImF0dHJcIjp7XCJmaWxsUnVsZVwiOlwiZXZlbm9kZFwiLFwiZFwiOlwiTTMgNi41YS41LjUgMCAwIDEgLjUtLjVoNmEuNS41IDAgMCAxIDAgMWgtNmEuNS41IDAgMCAxLS41LS41elwifX1dfSkocHJvcHMpO1xufTtcbiIsImltcG9ydCB7IEJzRmlsbFF1ZXN0aW9uQ2lyY2xlRmlsbCB9IGZyb20gXCJyZWFjdC1pY29ucy9ic1wiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5cclxuLyoqIENvbXBvbmVudCByZXByZXNlbnRpbmcgYSB0b29sdGlwLCB3aGljaCB3aGVuIGhvdmVyZWQgc2hvd3MgdGhlIGBvdmVybGF5Q29udGVudGAgKi9cclxuZXhwb3J0IGNvbnN0IFRvb2x0aXA6IFJlYWN0LkZDPHsgb3ZlcmxheUNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZSB9PiA9IChwcm9wcykgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2x0aXBcIj5cclxuICAgICAgICAgICAgPEJzRmlsbFF1ZXN0aW9uQ2lyY2xlRmlsbCBjbGFzc05hbWU9XCJ0b29sdGlwLWljb25cIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2x0aXAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+e3Byb3BzLm92ZXJsYXlDb250ZW50fTwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTcuMC4yXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGI9NjAxMDMsYz02MDEwNixkPTYwMTA3LGU9NjAxMDgsZj02MDExNCxnPTYwMTA5LGg9NjAxMTAsaz02MDExMixsPTYwMTEzLG09NjAxMjAsbj02MDExNSxwPTYwMTE2LHE9NjAxMjEscj02MDEyMix1PTYwMTE3LHY9NjAxMjksdz02MDEzMTtcbmlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciB4PVN5bWJvbC5mb3I7Yj14KFwicmVhY3QuZWxlbWVudFwiKTtjPXgoXCJyZWFjdC5wb3J0YWxcIik7ZD14KFwicmVhY3QuZnJhZ21lbnRcIik7ZT14KFwicmVhY3Quc3RyaWN0X21vZGVcIik7Zj14KFwicmVhY3QucHJvZmlsZXJcIik7Zz14KFwicmVhY3QucHJvdmlkZXJcIik7aD14KFwicmVhY3QuY29udGV4dFwiKTtrPXgoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTtsPXgoXCJyZWFjdC5zdXNwZW5zZVwiKTttPXgoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpO249eChcInJlYWN0Lm1lbW9cIik7cD14KFwicmVhY3QubGF6eVwiKTtxPXgoXCJyZWFjdC5ibG9ja1wiKTtyPXgoXCJyZWFjdC5zZXJ2ZXIuYmxvY2tcIik7dT14KFwicmVhY3QuZnVuZGFtZW50YWxcIik7dj14KFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTt3PXgoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpfVxuZnVuY3Rpb24geShhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdD1hLiQkdHlwZW9mO3N3aXRjaCh0KXtjYXNlIGI6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgZDpjYXNlIGY6Y2FzZSBlOmNhc2UgbDpjYXNlIG06cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgaDpjYXNlIGs6Y2FzZSBwOmNhc2UgbjpjYXNlIGc6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH19Y2FzZSBjOnJldHVybiB0fX19dmFyIHo9ZyxBPWIsQj1rLEM9ZCxEPXAsRT1uLEY9YyxHPWYsSD1lLEk9bDtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1oO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPXo7ZXhwb3J0cy5FbGVtZW50PUE7ZXhwb3J0cy5Gb3J3YXJkUmVmPUI7ZXhwb3J0cy5GcmFnbWVudD1DO2V4cG9ydHMuTGF6eT1EO2V4cG9ydHMuTWVtbz1FO2V4cG9ydHMuUG9ydGFsPUY7ZXhwb3J0cy5Qcm9maWxlcj1HO2V4cG9ydHMuU3RyaWN0TW9kZT1IO1xuZXhwb3J0cy5TdXNwZW5zZT1JO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSk9PT1ofTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB5KGEpPT09Z307ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWJ9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB5KGEpPT09a307ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB5KGEpPT09ZH07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSk9PT1wfTtleHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geShhKT09PW59O1xuZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geShhKT09PWN9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geShhKT09PWZ9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB5KGEpPT09ZX07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB5KGEpPT09bH07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWR8fGE9PT1mfHxhPT09dnx8YT09PWV8fGE9PT1sfHxhPT09bXx8YT09PXd8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09cHx8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT1nfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT11fHxhLiQkdHlwZW9mPT09cXx8YVswXT09PXIpPyEwOiExfTtcbmV4cG9ydHMudHlwZU9mPXk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsImZ1bmN0aW9uIHQodCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPXQmJjE9PT10Lm5vZGVUeXBlfWZ1bmN0aW9uIGUodCxlKXtyZXR1cm4oIWV8fFwiaGlkZGVuXCIhPT10KSYmXCJ2aXNpYmxlXCIhPT10JiZcImNsaXBcIiE9PXR9ZnVuY3Rpb24gbih0LG4pe2lmKHQuY2xpZW50SGVpZ2h0PHQuc2Nyb2xsSGVpZ2h0fHx0LmNsaWVudFdpZHRoPHQuc2Nyb2xsV2lkdGgpe3ZhciByPWdldENvbXB1dGVkU3R5bGUodCxudWxsKTtyZXR1cm4gZShyLm92ZXJmbG93WSxuKXx8ZShyLm92ZXJmbG93WCxuKXx8ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7aWYoIXQub3duZXJEb2N1bWVudHx8IXQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldylyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5mcmFtZUVsZW1lbnR9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSh0KTtyZXR1cm4hIWUmJihlLmNsaWVudEhlaWdodDx0LnNjcm9sbEhlaWdodHx8ZS5jbGllbnRXaWR0aDx0LnNjcm9sbFdpZHRoKX0odCl9cmV0dXJuITF9ZnVuY3Rpb24gcih0LGUsbixyLGksbyxsLGQpe3JldHVybiBvPHQmJmw+ZXx8bz50JiZsPGU/MDpvPD10JiZkPD1ufHxsPj1lJiZkPj1uP28tdC1yOmw+ZSYmZDxufHxvPHQmJmQ+bj9sLWUraTowfXZhciBpPWZ1bmN0aW9uKGUsaSl7dmFyIG89d2luZG93LGw9aS5zY3JvbGxNb2RlLGQ9aS5ibG9jayxmPWkuaW5saW5lLGg9aS5ib3VuZGFyeSx1PWkuc2tpcE92ZXJmbG93SGlkZGVuRWxlbWVudHMscz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBoP2g6ZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1ofTtpZighdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCB0YXJnZXRcIik7Zm9yKHZhciBhLGMsZz1kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscD1bXSxtPWU7dChtKSYmcyhtKTspe2lmKChtPW51bGw9PShjPShhPW0pLnBhcmVudEVsZW1lbnQpP2EuZ2V0Um9vdE5vZGUoKS5ob3N0fHxudWxsOmMpPT09Zyl7cC5wdXNoKG0pO2JyZWFrfW51bGwhPW0mJm09PT1kb2N1bWVudC5ib2R5JiZuKG0pJiYhbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpfHxudWxsIT1tJiZuKG0sdSkmJnAucHVzaChtKX1mb3IodmFyIHc9by52aXN1YWxWaWV3cG9ydD9vLnZpc3VhbFZpZXdwb3J0LndpZHRoOmlubmVyV2lkdGgsdj1vLnZpc3VhbFZpZXdwb3J0P28udmlzdWFsVmlld3BvcnQuaGVpZ2h0OmlubmVySGVpZ2h0LFc9d2luZG93LnNjcm9sbFh8fHBhZ2VYT2Zmc2V0LEg9d2luZG93LnNjcm9sbFl8fHBhZ2VZT2Zmc2V0LGI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx5PWIuaGVpZ2h0LEU9Yi53aWR0aCxNPWIudG9wLFY9Yi5yaWdodCx4PWIuYm90dG9tLEk9Yi5sZWZ0LEM9XCJzdGFydFwiPT09ZHx8XCJuZWFyZXN0XCI9PT1kP006XCJlbmRcIj09PWQ/eDpNK3kvMixSPVwiY2VudGVyXCI9PT1mP0krRS8yOlwiZW5kXCI9PT1mP1Y6SSxUPVtdLGs9MDtrPHAubGVuZ3RoO2srKyl7dmFyIEI9cFtrXSxEPUIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksTz1ELmhlaWdodCxYPUQud2lkdGgsWT1ELnRvcCxMPUQucmlnaHQsUz1ELmJvdHRvbSxqPUQubGVmdDtpZihcImlmLW5lZWRlZFwiPT09bCYmTT49MCYmST49MCYmeDw9diYmVjw9dyYmTT49WSYmeDw9UyYmST49aiYmVjw9TClyZXR1cm4gVDt2YXIgTj1nZXRDb21wdXRlZFN0eWxlKEIpLHE9cGFyc2VJbnQoTi5ib3JkZXJMZWZ0V2lkdGgsMTApLHo9cGFyc2VJbnQoTi5ib3JkZXJUb3BXaWR0aCwxMCksQT1wYXJzZUludChOLmJvcmRlclJpZ2h0V2lkdGgsMTApLEY9cGFyc2VJbnQoTi5ib3JkZXJCb3R0b21XaWR0aCwxMCksRz0wLEo9MCxLPVwib2Zmc2V0V2lkdGhcImluIEI/Qi5vZmZzZXRXaWR0aC1CLmNsaWVudFdpZHRoLXEtQTowLFA9XCJvZmZzZXRIZWlnaHRcImluIEI/Qi5vZmZzZXRIZWlnaHQtQi5jbGllbnRIZWlnaHQtei1GOjAsUT1cIm9mZnNldFdpZHRoXCJpbiBCPzA9PT1CLm9mZnNldFdpZHRoPzA6WC9CLm9mZnNldFdpZHRoOjAsVT1cIm9mZnNldEhlaWdodFwiaW4gQj8wPT09Qi5vZmZzZXRIZWlnaHQ/MDpPL0Iub2Zmc2V0SGVpZ2h0OjA7aWYoZz09PUIpRz1cInN0YXJ0XCI9PT1kP0M6XCJlbmRcIj09PWQ/Qy12OlwibmVhcmVzdFwiPT09ZD9yKEgsSCt2LHYseixGLEgrQyxIK0MreSx5KTpDLXYvMixKPVwic3RhcnRcIj09PWY/UjpcImNlbnRlclwiPT09Zj9SLXcvMjpcImVuZFwiPT09Zj9SLXc6cihXLFcrdyx3LHEsQSxXK1IsVytSK0UsRSksRz1NYXRoLm1heCgwLEcrSCksSj1NYXRoLm1heCgwLEorVyk7ZWxzZXtHPVwic3RhcnRcIj09PWQ/Qy1ZLXo6XCJlbmRcIj09PWQ/Qy1TK0YrUDpcIm5lYXJlc3RcIj09PWQ/cihZLFMsTyx6LEYrUCxDLEMreSx5KTpDLShZK08vMikrUC8yLEo9XCJzdGFydFwiPT09Zj9SLWotcTpcImNlbnRlclwiPT09Zj9SLShqK1gvMikrSy8yOlwiZW5kXCI9PT1mP1ItTCtBK0s6cihqLEwsWCxxLEErSyxSLFIrRSxFKTt2YXIgWj1CLnNjcm9sbExlZnQsJD1CLnNjcm9sbFRvcDtDKz0kLShHPU1hdGgubWF4KDAsTWF0aC5taW4oJCtHL1UsQi5zY3JvbGxIZWlnaHQtTy9VK1ApKSksUis9Wi0oSj1NYXRoLm1heCgwLE1hdGgubWluKForSi9RLEIuc2Nyb2xsV2lkdGgtWC9RK0spKSl9VC5wdXNoKHtlbDpCLHRvcDpHLGxlZnQ6Sn0pfXJldHVybiBUfTtleHBvcnR7aSBhcyBkZWZhdWx0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNsb25lRWxlbWVudCwgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZvcndhcmRSZWYgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgY29tcHV0ZVNjcm9sbEludG9WaWV3IGZyb20gJ2NvbXB1dGUtc2Nyb2xsLWludG8tdmlldyc7XG5pbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gJ3RzbGliJztcblxubGV0IGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogQWNjZXB0cyBhIHBhcmFtZXRlciBhbmQgcmV0dXJucyBpdCBpZiBpdCdzIGEgZnVuY3Rpb25cbiAqIG9yIGEgbm9vcCBmdW5jdGlvbiBpZiBpdCdzIG5vdC4gVGhpcyBhbGxvd3MgdXMgdG9cbiAqIGFjY2VwdCBhIGNhbGxiYWNrLCBidXQgbm90IHdvcnJ5IGFib3V0IGl0IGlmIGl0J3Mgbm90XG4gKiBwYXNzZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYiB0aGUgY2FsbGJhY2tcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBhIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNiVG9DYihjYikge1xuICByZXR1cm4gdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nID8gY2IgOiBub29wO1xufVxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogU2Nyb2xsIG5vZGUgaW50byB2aWV3IGlmIG5lY2Vzc2FyeVxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZSB0aGUgZWxlbWVudCB0aGF0IHNob3VsZCBzY3JvbGwgaW50byB2aWV3XG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBtZW51Tm9kZSB0aGUgbWVudSBlbGVtZW50IG9mIHRoZSBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcobm9kZSwgbWVudU5vZGUpIHtcbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGFjdGlvbnMgPSBjb21wdXRlU2Nyb2xsSW50b1ZpZXcobm9kZSwge1xuICAgIGJvdW5kYXJ5OiBtZW51Tm9kZSxcbiAgICBibG9jazogJ25lYXJlc3QnLFxuICAgIHNjcm9sbE1vZGU6ICdpZi1uZWVkZWQnXG4gIH0pO1xuICBhY3Rpb25zLmZvckVhY2goX3JlZiA9PiB7XG4gICAgbGV0IHtcbiAgICAgIGVsLFxuICAgICAgdG9wLFxuICAgICAgbGVmdFxuICAgIH0gPSBfcmVmO1xuICAgIGVsLnNjcm9sbFRvcCA9IHRvcDtcbiAgICBlbC5zY3JvbGxMZWZ0ID0gbGVmdDtcbiAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcGFyZW50IHRoZSBwYXJlbnQgbm9kZVxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gY2hpbGQgdGhlIGNoaWxkIG5vZGVcbiAqIEBwYXJhbSB7V2luZG93fSBlbnZpcm9ubWVudCBUaGUgd2luZG93IGNvbnRleHQgd2hlcmUgZG93bnNoaWZ0IHJlbmRlcnMuXG4gKiBAcmV0dXJuIHtCb29sZWFufSB3aGV0aGVyIHRoZSBwYXJlbnQgaXMgdGhlIGNoaWxkIG9yIHRoZSBjaGlsZCBpcyBpbiB0aGUgcGFyZW50XG4gKi9cbmZ1bmN0aW9uIGlzT3JDb250YWluc05vZGUocGFyZW50LCBjaGlsZCwgZW52aXJvbm1lbnQpIHtcbiAgY29uc3QgcmVzdWx0ID0gcGFyZW50ID09PSBjaGlsZCB8fCBjaGlsZCBpbnN0YW5jZW9mIGVudmlyb25tZW50Lk5vZGUgJiYgcGFyZW50LmNvbnRhaW5zICYmIHBhcmVudC5jb250YWlucyhjaGlsZCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogU2ltcGxlIGRlYm91bmNlIGltcGxlbWVudGF0aW9uLiBXaWxsIGNhbGwgdGhlIGdpdmVuXG4gKiBmdW5jdGlvbiBvbmNlIGFmdGVyIHRoZSB0aW1lIGdpdmVuIGhhcyBwYXNzZWQgc2luY2VcbiAqIGl0IHdhcyBsYXN0IGNhbGxlZC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIHRoZSBmdW5jdGlvbiB0byBjYWxsIGFmdGVyIHRoZSB0aW1lXG4gKiBAcGFyYW0ge051bWJlcn0gdGltZSB0aGUgdGltZSB0byB3YWl0XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICovXG5mdW5jdGlvbiBkZWJvdW5jZShmbiwgdGltZSkge1xuICBsZXQgdGltZW91dElkO1xuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBjYW5jZWwoKTtcbiAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRpbWVvdXRJZCA9IG51bGw7XG4gICAgICBmbiguLi5hcmdzKTtcbiAgICB9LCB0aW1lKTtcbiAgfVxuICB3cmFwcGVyLmNhbmNlbCA9IGNhbmNlbDtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG5cbi8qKlxuICogVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNvbXBvc2UgZXZlbnQgaGFuZGxlcnMuXG4gKiBUaGV5IGFyZSBleGVjdXRlZCBpbiBvcmRlciB1bnRpbCBvbmUgb2YgdGhlbSBzZXRzXG4gKiBgZXZlbnQucHJldmVudERvd25zaGlmdERlZmF1bHQgPSB0cnVlYC5cbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZucyB0aGUgZXZlbnQgaGFuZGxlciBmdW5jdGlvbnNcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSB0aGUgZXZlbnQgaGFuZGxlciB0byBhZGQgdG8gYW4gZWxlbWVudFxuICovXG5mdW5jdGlvbiBjYWxsQWxsRXZlbnRIYW5kbGVycygpIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBmbnMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBmbnNbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zID4gMSA/IF9sZW4zIC0gMSA6IDApLCBfa2V5MyA9IDE7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcbiAgICAgIGFyZ3NbX2tleTMgLSAxXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gICAgfVxuICAgIHJldHVybiBmbnMuc29tZShmbiA9PiB7XG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgZm4oZXZlbnQsIC4uLmFyZ3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREb3duc2hpZnREZWZhdWx0IHx8IGV2ZW50Lmhhc093blByb3BlcnR5KCduYXRpdmVFdmVudCcpICYmIGV2ZW50Lm5hdGl2ZUV2ZW50LnByZXZlbnREb3duc2hpZnREZWZhdWx0O1xuICAgIH0pO1xuICB9O1xufVxuZnVuY3Rpb24gaGFuZGxlUmVmcygpIHtcbiAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCByZWZzID0gbmV3IEFycmF5KF9sZW40KSwgX2tleTQgPSAwOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG4gICAgcmVmc1tfa2V5NF0gPSBhcmd1bWVudHNbX2tleTRdO1xuICB9XG4gIHJldHVybiBub2RlID0+IHtcbiAgICByZWZzLmZvckVhY2gocmVmID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZihub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGdlbmVyYXRlcyBhIHVuaXF1ZSBJRCBmb3IgYW4gaW5zdGFuY2Ugb2YgRG93bnNoaWZ0XG4gKiBAcmV0dXJuIHtTdHJpbmd9IHRoZSB1bmlxdWUgSURcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVJZCgpIHtcbiAgcmV0dXJuIFN0cmluZyhpZENvdW50ZXIrKyk7XG59XG5cbi8qKlxuICogUmVzZXRzIGlkQ291bnRlciB0byAwLiBVc2VkIGZvciBTU1IuXG4gKi9cbmZ1bmN0aW9uIHJlc2V0SWRDb3VudGVyKCkge1xuICBpZENvdW50ZXIgPSAwO1xufVxuXG4vKipcbiAqIERlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHN0YXR1cyBtZXNzYWdlLiBPbmx5IGFkZGVkIHdoZW4gbWVudSBpcyBvcGVuLlxuICogV2lsbCBzcGVjaWZ5IGlmIHRoZXJlIGFyZSByZXN1bHRzIGluIHRoZSBsaXN0LCBhbmQgaWYgc28sIGhvdyBtYW55LFxuICogYW5kIHdoYXQga2V5cyBhcmUgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtIHRoZSBkb3duc2hpZnQgc3RhdGUgYW5kIG90aGVyIHJlbGV2YW50IHByb3BlcnRpZXNcbiAqIEByZXR1cm4ge1N0cmluZ30gdGhlIGExMXkgc3RhdHVzIG1lc3NhZ2VcbiAqL1xuZnVuY3Rpb24gZ2V0QTExeVN0YXR1c01lc3NhZ2UkMShfcmVmMikge1xuICBsZXQge1xuICAgIGlzT3BlbixcbiAgICByZXN1bHRDb3VudCxcbiAgICBwcmV2aW91c1Jlc3VsdENvdW50XG4gIH0gPSBfcmVmMjtcbiAgaWYgKCFpc09wZW4pIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKCFyZXN1bHRDb3VudCkge1xuICAgIHJldHVybiAnTm8gcmVzdWx0cyBhcmUgYXZhaWxhYmxlLic7XG4gIH1cbiAgaWYgKHJlc3VsdENvdW50ICE9PSBwcmV2aW91c1Jlc3VsdENvdW50KSB7XG4gICAgcmV0dXJuIGAke3Jlc3VsdENvdW50fSByZXN1bHQke3Jlc3VsdENvdW50ID09PSAxID8gJyBpcycgOiAncyBhcmUnfSBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiBQcmVzcyBFbnRlciBrZXkgdG8gc2VsZWN0LmA7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFRha2VzIGFuIGFyZ3VtZW50IGFuZCBpZiBpdCdzIGFuIGFycmF5LCByZXR1cm5zIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBhcnJheVxuICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIGFyZ3VtZW50XG4gKiBAcGFyYW0geyp9IGFyZyB0aGUgbWF5YmUtYXJyYXlcbiAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIHRoZSB2YWx1ZSBpZiBhcmcgaXMgZmFsc2V5IG5vdCBkZWZpbmVkXG4gKiBAcmV0dXJuIHsqfSB0aGUgYXJnIG9yIGl0J3MgZmlyc3QgaXRlbVxuICovXG5mdW5jdGlvbiB1bndyYXBBcnJheShhcmcsIGRlZmF1bHRWYWx1ZSkge1xuICBhcmcgPSBBcnJheS5pc0FycmF5KGFyZykgPyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAocHJlYWN0KSAqL2FyZ1swXSA6IGFyZztcbiAgaWYgKCFhcmcgJiYgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXJnO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnQgKFApcmVhY3QgZWxlbWVudFxuICogQHJldHVybiB7Qm9vbGVhbn0gd2hldGhlciBpdCdzIGEgRE9NIGVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gaXNET01FbGVtZW50KGVsZW1lbnQpIHtcblxuICAvLyB0aGVuIHdlIGFzc3VtZSB0aGlzIGlzIHJlYWN0XG4gIHJldHVybiB0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudCAoUClyZWFjdCBlbGVtZW50XG4gKiBAcmV0dXJuIHtPYmplY3R9IHRoZSBwcm9wc1xuICovXG5mdW5jdGlvbiBnZXRFbGVtZW50UHJvcHMoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5wcm9wcztcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgZm9yIHJlcXVpcmVkIHByb3BlcnRpZXMuIFVzZWZ1bFxuICogdG8gYmUgdXNlZCBhcyBhIGRlZmF1bHQgaW4gZGVzdHJ1Y3R1cmluZyBvciBvYmplY3QgcGFyYW1zLlxuICogQHBhcmFtIHtTdHJpbmd9IGZuTmFtZSB0aGUgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIHtTdHJpbmd9IHByb3BOYW1lIHRoZSBwcm9wIG5hbWVcbiAqL1xuZnVuY3Rpb24gcmVxdWlyZWRQcm9wKGZuTmFtZSwgcHJvcE5hbWUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihgVGhlIHByb3BlcnR5IFwiJHtwcm9wTmFtZX1cIiBpcyByZXF1aXJlZCBpbiBcIiR7Zm5OYW1lfVwiYCk7XG59XG5jb25zdCBzdGF0ZUtleXMgPSBbJ2hpZ2hsaWdodGVkSW5kZXgnLCAnaW5wdXRWYWx1ZScsICdpc09wZW4nLCAnc2VsZWN0ZWRJdGVtJywgJ3R5cGUnXTtcbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIHRoZSBzdGF0ZSBvYmplY3RcbiAqIEByZXR1cm4ge09iamVjdH0gc3RhdGUgdGhhdCBpcyByZWxldmFudCB0byBkb3duc2hpZnRcbiAqL1xuZnVuY3Rpb24gcGlja1N0YXRlKHN0YXRlKSB7XG4gIGlmIChzdGF0ZSA9PT0gdm9pZCAwKSB7XG4gICAgc3RhdGUgPSB7fTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgc3RhdGVLZXlzLmZvckVhY2goayA9PiB7XG4gICAgaWYgKHN0YXRlLmhhc093blByb3BlcnR5KGspKSB7XG4gICAgICByZXN1bHRba10gPSBzdGF0ZVtrXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoaXMgd2lsbCBwZXJmb3JtIGEgc2hhbGxvdyBtZXJnZSBvZiB0aGUgZ2l2ZW4gc3RhdGUgb2JqZWN0XG4gKiB3aXRoIHRoZSBzdGF0ZSBjb21pbmcgZnJvbSBwcm9wc1xuICogKGZvciB0aGUgY29udHJvbGxlZCBjb21wb25lbnQgc2NlbmFyaW8pXG4gKiBUaGlzIGlzIHVzZWQgaW4gc3RhdGUgdXBkYXRlciBmdW5jdGlvbnMgc28gdGhleSdyZSByZWZlcmVuY2luZ1xuICogdGhlIHJpZ2h0IHN0YXRlIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUgaXQgY29tZXMgZnJvbS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhdGUgVGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQvaG9vay5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBUaGUgcHJvcHMgdGhhdCBtYXkgY29udGFpbiBjb250cm9sbGVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBtZXJnZWQgY29udHJvbGxlZCBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gZ2V0U3RhdGUoc3RhdGUsIHByb3BzKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZSkucmVkdWNlKChwcmV2U3RhdGUsIGtleSkgPT4ge1xuICAgIHByZXZTdGF0ZVtrZXldID0gaXNDb250cm9sbGVkUHJvcChwcm9wcywga2V5KSA/IHByb3BzW2tleV0gOiBzdGF0ZVtrZXldO1xuICAgIHJldHVybiBwcmV2U3RhdGU7XG4gIH0sIHt9KTtcbn1cblxuLyoqXG4gKiBUaGlzIGRldGVybWluZXMgd2hldGhlciBhIHByb3AgaXMgYSBcImNvbnRyb2xsZWQgcHJvcFwiIG1lYW5pbmcgaXQgaXNcbiAqIHN0YXRlIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgdGhlIG91dHNpZGUgb2YgdGhpcyBjb21wb25lbnQgcmF0aGVyXG4gKiB0aGFuIHdpdGhpbiB0aGlzIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgVGhlIHByb3BzIHRoYXQgbWF5IGNvbnRhaW4gY29udHJvbGxlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5IHRoZSBrZXkgdG8gY2hlY2tcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHdoZXRoZXIgaXQgaXMgYSBjb250cm9sbGVkIGNvbnRyb2xsZWQgcHJvcFxuICovXG5mdW5jdGlvbiBpc0NvbnRyb2xsZWRQcm9wKHByb3BzLCBrZXkpIHtcbiAgcmV0dXJuIHByb3BzW2tleV0gIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSAna2V5JyBwcm9wZXJ0eSBvZiBhIEtleWJvYXJkRXZlbnQgaW4gSUUvRWRnZVxuICogQHBhcmFtIHtPYmplY3R9IGV2ZW50IGEga2V5Ym9hcmRFdmVudCBvYmplY3RcbiAqIEByZXR1cm4ge1N0cmluZ30ga2V5Ym9hcmQga2V5XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycm93S2V5KGV2ZW50KSB7XG4gIGNvbnN0IHtcbiAgICBrZXksXG4gICAga2V5Q29kZVxuICB9ID0gZXZlbnQ7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChpZSkgKi9cbiAgaWYgKGtleUNvZGUgPj0gMzcgJiYga2V5Q29kZSA8PSA0MCAmJiBrZXkuaW5kZXhPZignQXJyb3cnKSAhPT0gMCkge1xuICAgIHJldHVybiBgQXJyb3cke2tleX1gO1xuICB9XG4gIHJldHVybiBrZXk7XG59XG5cbi8qKlxuICogU2ltcGxlIGNoZWNrIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb2JqZWN0IGxpdGVyYWxcbiAqIEBwYXJhbSB7Kn0gb2JqIGFueSB0aGluZ3NcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHdoZXRoZXIgaXQncyBvYmplY3QgbGl0ZXJhbFxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5ldyBpbmRleCBpbiB0aGUgbGlzdCwgaW4gYSBjaXJjdWxhciB3YXkuIElmIG5leHQgdmFsdWUgaXMgb3V0IG9mIGJvbmRzIGZyb20gdGhlIHRvdGFsLFxuICogaXQgd2lsbCB3cmFwIHRvIGVpdGhlciAwIG9yIGl0ZW1Db3VudCAtIDEuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1vdmVBbW91bnQgTnVtYmVyIG9mIHBvc2l0aW9ucyB0byBtb3ZlLiBOZWdhdGl2ZSB0byBtb3ZlIGJhY2t3YXJkcywgcG9zaXRpdmUgZm9yd2FyZHMuXG4gKiBAcGFyYW0ge251bWJlcn0gYmFzZUluZGV4IFRoZSBpbml0aWFsIHBvc2l0aW9uIHRvIG1vdmUgZnJvbS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpdGVtQ291bnQgVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldEl0ZW1Ob2RlRnJvbUluZGV4IFVzZWQgdG8gY2hlY2sgaWYgaXRlbSBpcyBkaXNhYmxlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gY2lyY3VsYXIgU3BlY2lmeSBpZiBuYXZpZ2F0aW9uIGlzIGNpcmN1bGFyLiBEZWZhdWx0IGlzIHRydWUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbmV3IGluZGV4IGFmdGVyIHRoZSBtb3ZlLlxuICovXG5mdW5jdGlvbiBnZXROZXh0V3JhcHBpbmdJbmRleChtb3ZlQW1vdW50LCBiYXNlSW5kZXgsIGl0ZW1Db3VudCwgZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGNpcmN1bGFyKSB7XG4gIGlmIChjaXJjdWxhciA9PT0gdm9pZCAwKSB7XG4gICAgY2lyY3VsYXIgPSB0cnVlO1xuICB9XG4gIGlmIChpdGVtQ291bnQgPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY29uc3QgaXRlbXNMYXN0SW5kZXggPSBpdGVtQ291bnQgLSAxO1xuICBpZiAodHlwZW9mIGJhc2VJbmRleCAhPT0gJ251bWJlcicgfHwgYmFzZUluZGV4IDwgMCB8fCBiYXNlSW5kZXggPj0gaXRlbUNvdW50KSB7XG4gICAgYmFzZUluZGV4ID0gbW92ZUFtb3VudCA+IDAgPyAtMSA6IGl0ZW1zTGFzdEluZGV4ICsgMTtcbiAgfVxuICBsZXQgbmV3SW5kZXggPSBiYXNlSW5kZXggKyBtb3ZlQW1vdW50O1xuICBpZiAobmV3SW5kZXggPCAwKSB7XG4gICAgbmV3SW5kZXggPSBjaXJjdWxhciA/IGl0ZW1zTGFzdEluZGV4IDogMDtcbiAgfSBlbHNlIGlmIChuZXdJbmRleCA+IGl0ZW1zTGFzdEluZGV4KSB7XG4gICAgbmV3SW5kZXggPSBjaXJjdWxhciA/IDAgOiBpdGVtc0xhc3RJbmRleDtcbiAgfVxuICBjb25zdCBub25EaXNhYmxlZE5ld0luZGV4ID0gZ2V0TmV4dE5vbkRpc2FibGVkSW5kZXgobW92ZUFtb3VudCwgbmV3SW5kZXgsIGl0ZW1Db3VudCwgZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGNpcmN1bGFyKTtcbiAgaWYgKG5vbkRpc2FibGVkTmV3SW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIGJhc2VJbmRleCA+PSBpdGVtQ291bnQgPyAtMSA6IGJhc2VJbmRleDtcbiAgfVxuICByZXR1cm4gbm9uRGlzYWJsZWROZXdJbmRleDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuZXh0IGluZGV4IGluIHRoZSBsaXN0IG9mIGFuIGl0ZW0gdGhhdCBpcyBub3QgZGlzYWJsZWQuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG1vdmVBbW91bnQgTnVtYmVyIG9mIHBvc2l0aW9ucyB0byBtb3ZlLiBOZWdhdGl2ZSB0byBtb3ZlIGJhY2t3YXJkcywgcG9zaXRpdmUgZm9yd2FyZHMuXG4gKiBAcGFyYW0ge251bWJlcn0gYmFzZUluZGV4IFRoZSBpbml0aWFsIHBvc2l0aW9uIHRvIG1vdmUgZnJvbS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpdGVtQ291bnQgVGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldEl0ZW1Ob2RlRnJvbUluZGV4IFVzZWQgdG8gY2hlY2sgaWYgaXRlbSBpcyBkaXNhYmxlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gY2lyY3VsYXIgU3BlY2lmeSBpZiBuYXZpZ2F0aW9uIGlzIGNpcmN1bGFyLiBEZWZhdWx0IGlzIHRydWUuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbmV3IGluZGV4LiBSZXR1cm5zIGJhc2VJbmRleCBpZiBpdGVtIGlzIG5vdCBkaXNhYmxlZC4gUmV0dXJucyBuZXh0IG5vbi1kaXNhYmxlZCBpdGVtIG90aGVyd2lzZS4gSWYgbm8gbm9uLWRpc2FibGVkIGZvdW5kIGl0IHdpbGwgcmV0dXJuIC0xLlxuICovXG5mdW5jdGlvbiBnZXROZXh0Tm9uRGlzYWJsZWRJbmRleChtb3ZlQW1vdW50LCBiYXNlSW5kZXgsIGl0ZW1Db3VudCwgZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGNpcmN1bGFyKSB7XG4gIGNvbnN0IGN1cnJlbnRFbGVtZW50Tm9kZSA9IGdldEl0ZW1Ob2RlRnJvbUluZGV4KGJhc2VJbmRleCk7XG4gIGlmICghY3VycmVudEVsZW1lbnROb2RlIHx8ICFjdXJyZW50RWxlbWVudE5vZGUuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKSB7XG4gICAgcmV0dXJuIGJhc2VJbmRleDtcbiAgfVxuICBpZiAobW92ZUFtb3VudCA+IDApIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IGJhc2VJbmRleCArIDE7IGluZGV4IDwgaXRlbUNvdW50OyBpbmRleCsrKSB7XG4gICAgICBpZiAoIWdldEl0ZW1Ob2RlRnJvbUluZGV4KGluZGV4KS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IGJhc2VJbmRleCAtIDE7IGluZGV4ID49IDA7IGluZGV4LS0pIHtcbiAgICAgIGlmICghZ2V0SXRlbU5vZGVGcm9tSW5kZXgoaW5kZXgpLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjaXJjdWxhcikge1xuICAgIHJldHVybiBtb3ZlQW1vdW50ID4gMCA/IGdldE5leHROb25EaXNhYmxlZEluZGV4KDEsIDAsIGl0ZW1Db3VudCwgZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGZhbHNlKSA6IGdldE5leHROb25EaXNhYmxlZEluZGV4KC0xLCBpdGVtQ291bnQgLSAxLCBpdGVtQ291bnQsIGdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBldmVudCB0YXJnZXQgaXMgd2l0aGluIHRoZSBkb3duc2hpZnQgZWxlbWVudHMuXG4gKlxuICogQHBhcmFtIHtFdmVudFRhcmdldH0gdGFyZ2V0IFRhcmdldCB0byBjaGVjay5cbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnRbXX0gZG93bnNoaWZ0RWxlbWVudHMgVGhlIGVsZW1lbnRzIHRoYXQgZm9ybSBkb3duc2hpZnQgKGxpc3QsIHRvZ2dsZSBidXR0b24gZXRjKS5cbiAqIEBwYXJhbSB7V2luZG93fSBlbnZpcm9ubWVudCBUaGUgd2luZG93IGNvbnRleHQgd2hlcmUgZG93bnNoaWZ0IHJlbmRlcnMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNoZWNrQWN0aXZlRWxlbWVudCBXaGV0aGVyIHRvIGFsc28gY2hlY2sgYWN0aXZlRWxlbWVudC5cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIHRhcmdldCBpcyB3aXRoaW4gZG93bnNoaWZ0IGVsZW1lbnRzLlxuICovXG5mdW5jdGlvbiB0YXJnZXRXaXRoaW5Eb3duc2hpZnQodGFyZ2V0LCBkb3duc2hpZnRFbGVtZW50cywgZW52aXJvbm1lbnQsIGNoZWNrQWN0aXZlRWxlbWVudCkge1xuICBpZiAoY2hlY2tBY3RpdmVFbGVtZW50ID09PSB2b2lkIDApIHtcbiAgICBjaGVja0FjdGl2ZUVsZW1lbnQgPSB0cnVlO1xuICB9XG4gIHJldHVybiBkb3duc2hpZnRFbGVtZW50cy5zb21lKGNvbnRleHROb2RlID0+IGNvbnRleHROb2RlICYmIChpc09yQ29udGFpbnNOb2RlKGNvbnRleHROb2RlLCB0YXJnZXQsIGVudmlyb25tZW50KSB8fCBjaGVja0FjdGl2ZUVsZW1lbnQgJiYgaXNPckNvbnRhaW5zTm9kZShjb250ZXh0Tm9kZSwgZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgZW52aXJvbm1lbnQpKSk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzXG5sZXQgdmFsaWRhdGVDb250cm9sbGVkVW5jaGFuZ2VkID0gbm9vcDtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUNvbnRyb2xsZWRVbmNoYW5nZWQgPSAoc3RhdGUsIHByZXZQcm9wcywgbmV4dFByb3BzKSA9PiB7XG4gICAgY29uc3Qgd2FybmluZ0Rlc2NyaXB0aW9uID0gYFRoaXMgcHJvcCBzaG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBEb3duc2hpZnQgZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9naXRodWIuY29tL2Rvd25zaGlmdC1qcy9kb3duc2hpZnQjY29udHJvbC1wcm9wc2A7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUpLmZvckVhY2gocHJvcEtleSA9PiB7XG4gICAgICBpZiAocHJldlByb3BzW3Byb3BLZXldICE9PSB1bmRlZmluZWQgJiYgbmV4dFByb3BzW3Byb3BLZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcihgZG93bnNoaWZ0OiBBIGNvbXBvbmVudCBoYXMgY2hhbmdlZCB0aGUgY29udHJvbGxlZCBwcm9wIFwiJHtwcm9wS2V5fVwiIHRvIGJlIHVuY29udHJvbGxlZC4gJHt3YXJuaW5nRGVzY3JpcHRpb259YCk7XG4gICAgICB9IGVsc2UgaWYgKHByZXZQcm9wc1twcm9wS2V5XSA9PT0gdW5kZWZpbmVkICYmIG5leHRQcm9wc1twcm9wS2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYGRvd25zaGlmdDogQSBjb21wb25lbnQgaGFzIGNoYW5nZWQgdGhlIHVuY29udHJvbGxlZCBwcm9wIFwiJHtwcm9wS2V5fVwiIHRvIGJlIGNvbnRyb2xsZWQuICR7d2FybmluZ0Rlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG5jb25zdCBjbGVhbnVwU3RhdHVzID0gZGVib3VuY2UoZG9jdW1lbnRQcm9wID0+IHtcbiAgZ2V0U3RhdHVzRGl2KGRvY3VtZW50UHJvcCkudGV4dENvbnRlbnQgPSAnJztcbn0sIDUwMCk7XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0YXR1cyB0aGUgc3RhdHVzIG1lc3NhZ2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBkb2N1bWVudFByb3AgZG9jdW1lbnQgcGFzc2VkIGJ5IHRoZSB1c2VyLlxuICovXG5mdW5jdGlvbiBzZXRTdGF0dXMoc3RhdHVzLCBkb2N1bWVudFByb3ApIHtcbiAgY29uc3QgZGl2ID0gZ2V0U3RhdHVzRGl2KGRvY3VtZW50UHJvcCk7XG4gIGlmICghc3RhdHVzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGRpdi50ZXh0Q29udGVudCA9IHN0YXR1cztcbiAgY2xlYW51cFN0YXR1cyhkb2N1bWVudFByb3ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhdHVzIG5vZGUgb3IgY3JlYXRlIGl0IGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gZG9jdW1lbnRQcm9wIGRvY3VtZW50IHBhc3NlZCBieSB0aGUgdXNlci5cbiAqIEByZXR1cm4ge0hUTUxFbGVtZW50fSB0aGUgc3RhdHVzIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXR1c0Rpdihkb2N1bWVudFByb3ApIHtcbiAgaWYgKGRvY3VtZW50UHJvcCA9PT0gdm9pZCAwKSB7XG4gICAgZG9jdW1lbnRQcm9wID0gZG9jdW1lbnQ7XG4gIH1cbiAgbGV0IHN0YXR1c0RpdiA9IGRvY3VtZW50UHJvcC5nZXRFbGVtZW50QnlJZCgnYTExeS1zdGF0dXMtbWVzc2FnZScpO1xuICBpZiAoc3RhdHVzRGl2KSB7XG4gICAgcmV0dXJuIHN0YXR1c0RpdjtcbiAgfVxuICBzdGF0dXNEaXYgPSBkb2N1bWVudFByb3AuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHN0YXR1c0Rpdi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2ExMXktc3RhdHVzLW1lc3NhZ2UnKTtcbiAgc3RhdHVzRGl2LnNldEF0dHJpYnV0ZSgncm9sZScsICdzdGF0dXMnKTtcbiAgc3RhdHVzRGl2LnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ3BvbGl0ZScpO1xuICBzdGF0dXNEaXYuc2V0QXR0cmlidXRlKCdhcmlhLXJlbGV2YW50JywgJ2FkZGl0aW9ucyB0ZXh0Jyk7XG4gIE9iamVjdC5hc3NpZ24oc3RhdHVzRGl2LnN0eWxlLCB7XG4gICAgYm9yZGVyOiAnMCcsXG4gICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgIGhlaWdodDogJzFweCcsXG4gICAgbWFyZ2luOiAnLTFweCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHBhZGRpbmc6ICcwJyxcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB3aWR0aDogJzFweCdcbiAgfSk7XG4gIGRvY3VtZW50UHJvcC5ib2R5LmFwcGVuZENoaWxkKHN0YXR1c0Rpdik7XG4gIHJldHVybiBzdGF0dXNEaXY7XG59XG5cbmNvbnN0IHVua25vd24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfdW5rbm93bl9fJyA6IDA7XG5jb25zdCBtb3VzZVVwID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fYXV0b2NvbXBsZXRlX21vdXNldXBfXycgOiAxO1xuY29uc3QgaXRlbU1vdXNlRW50ZXIgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfaXRlbV9tb3VzZWVudGVyX18nIDogMjtcbmNvbnN0IGtleURvd25BcnJvd1VwID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fYXV0b2NvbXBsZXRlX2tleWRvd25fYXJyb3dfdXBfXycgOiAzO1xuY29uc3Qga2V5RG93bkFycm93RG93biA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2F1dG9jb21wbGV0ZV9rZXlkb3duX2Fycm93X2Rvd25fXycgOiA0O1xuY29uc3Qga2V5RG93bkVzY2FwZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2F1dG9jb21wbGV0ZV9rZXlkb3duX2VzY2FwZV9fJyA6IDU7XG5jb25zdCBrZXlEb3duRW50ZXIgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfa2V5ZG93bl9lbnRlcl9fJyA6IDY7XG5jb25zdCBrZXlEb3duSG9tZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2F1dG9jb21wbGV0ZV9rZXlkb3duX2hvbWVfXycgOiA3O1xuY29uc3Qga2V5RG93bkVuZCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2F1dG9jb21wbGV0ZV9rZXlkb3duX2VuZF9fJyA6IDg7XG5jb25zdCBjbGlja0l0ZW0gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfY2xpY2tfaXRlbV9fJyA6IDk7XG5jb25zdCBibHVySW5wdXQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfYmx1cl9pbnB1dF9fJyA6IDEwO1xuY29uc3QgY2hhbmdlSW5wdXQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfY2hhbmdlX2lucHV0X18nIDogMTE7XG5jb25zdCBrZXlEb3duU3BhY2VCdXR0b24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19hdXRvY29tcGxldGVfa2V5ZG93bl9zcGFjZV9idXR0b25fXycgOiAxMjtcbmNvbnN0IGNsaWNrQnV0dG9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fYXV0b2NvbXBsZXRlX2NsaWNrX2J1dHRvbl9fJyA6IDEzO1xuY29uc3QgYmx1ckJ1dHRvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2F1dG9jb21wbGV0ZV9ibHVyX2J1dHRvbl9fJyA6IDE0O1xuY29uc3QgY29udHJvbGxlZFByb3BVcGRhdGVkU2VsZWN0ZWRJdGVtID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fYXV0b2NvbXBsZXRlX2NvbnRyb2xsZWRfcHJvcF91cGRhdGVkX3NlbGVjdGVkX2l0ZW1fXycgOiAxNTtcbmNvbnN0IHRvdWNoRW5kID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fYXV0b2NvbXBsZXRlX3RvdWNoZW5kX18nIDogMTY7XG5cbnZhciBzdGF0ZUNoYW5nZVR5cGVzJDMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgdW5rbm93bjogdW5rbm93bixcbiAgbW91c2VVcDogbW91c2VVcCxcbiAgaXRlbU1vdXNlRW50ZXI6IGl0ZW1Nb3VzZUVudGVyLFxuICBrZXlEb3duQXJyb3dVcDoga2V5RG93bkFycm93VXAsXG4gIGtleURvd25BcnJvd0Rvd246IGtleURvd25BcnJvd0Rvd24sXG4gIGtleURvd25Fc2NhcGU6IGtleURvd25Fc2NhcGUsXG4gIGtleURvd25FbnRlcjoga2V5RG93bkVudGVyLFxuICBrZXlEb3duSG9tZToga2V5RG93bkhvbWUsXG4gIGtleURvd25FbmQ6IGtleURvd25FbmQsXG4gIGNsaWNrSXRlbTogY2xpY2tJdGVtLFxuICBibHVySW5wdXQ6IGJsdXJJbnB1dCxcbiAgY2hhbmdlSW5wdXQ6IGNoYW5nZUlucHV0LFxuICBrZXlEb3duU3BhY2VCdXR0b246IGtleURvd25TcGFjZUJ1dHRvbixcbiAgY2xpY2tCdXR0b246IGNsaWNrQnV0dG9uLFxuICBibHVyQnV0dG9uOiBibHVyQnV0dG9uLFxuICBjb250cm9sbGVkUHJvcFVwZGF0ZWRTZWxlY3RlZEl0ZW06IGNvbnRyb2xsZWRQcm9wVXBkYXRlZFNlbGVjdGVkSXRlbSxcbiAgdG91Y2hFbmQ6IHRvdWNoRW5kXG59KTtcblxuLyogZXNsaW50IGNhbWVsY2FzZTowICovXG5jb25zdCBEb3duc2hpZnQgPSAvKiNfX1BVUkVfXyovKCgpID0+IHtcbiAgY2xhc3MgRG93bnNoaWZ0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcihfcHJvcHMpIHtcbiAgICAgIHZhciBfdGhpcztcbiAgICAgIHN1cGVyKF9wcm9wcyk7XG4gICAgICBfdGhpcyA9IHRoaXM7XG4gICAgICB0aGlzLmlkID0gdGhpcy5wcm9wcy5pZCB8fCBgZG93bnNoaWZ0LSR7Z2VuZXJhdGVJZCgpfWA7XG4gICAgICB0aGlzLm1lbnVJZCA9IHRoaXMucHJvcHMubWVudUlkIHx8IGAke3RoaXMuaWR9LW1lbnVgO1xuICAgICAgdGhpcy5sYWJlbElkID0gdGhpcy5wcm9wcy5sYWJlbElkIHx8IGAke3RoaXMuaWR9LWxhYmVsYDtcbiAgICAgIHRoaXMuaW5wdXRJZCA9IHRoaXMucHJvcHMuaW5wdXRJZCB8fCBgJHt0aGlzLmlkfS1pbnB1dGA7XG4gICAgICB0aGlzLmdldEl0ZW1JZCA9IHRoaXMucHJvcHMuZ2V0SXRlbUlkIHx8IChpbmRleCA9PiBgJHt0aGlzLmlkfS1pdGVtLSR7aW5kZXh9YCk7XG4gICAgICB0aGlzLmlucHV0ID0gbnVsbDtcbiAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuaXRlbUNvdW50ID0gbnVsbDtcbiAgICAgIHRoaXMucHJldmlvdXNSZXN1bHRDb3VudCA9IDA7XG4gICAgICB0aGlzLnRpbWVvdXRJZHMgPSBbXTtcbiAgICAgIHRoaXMuaW50ZXJuYWxTZXRUaW1lb3V0ID0gKGZuLCB0aW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50aW1lb3V0SWRzID0gdGhpcy50aW1lb3V0SWRzLmZpbHRlcihpID0+IGkgIT09IGlkKTtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9LCB0aW1lKTtcbiAgICAgICAgdGhpcy50aW1lb3V0SWRzLnB1c2goaWQpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2V0SXRlbUNvdW50ID0gY291bnQgPT4ge1xuICAgICAgICB0aGlzLml0ZW1Db3VudCA9IGNvdW50O1xuICAgICAgfTtcbiAgICAgIHRoaXMudW5zZXRJdGVtQ291bnQgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbUNvdW50ID0gbnVsbDtcbiAgICAgIH07XG4gICAgICB0aGlzLnNldEhpZ2hsaWdodGVkSW5kZXggPSBmdW5jdGlvbiAoaGlnaGxpZ2h0ZWRJbmRleCwgb3RoZXJTdGF0ZVRvU2V0KSB7XG4gICAgICAgIGlmIChoaWdobGlnaHRlZEluZGV4ID09PSB2b2lkIDApIHtcbiAgICAgICAgICBoaWdobGlnaHRlZEluZGV4ID0gX3RoaXMucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyU3RhdGVUb1NldCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgb3RoZXJTdGF0ZVRvU2V0ID0ge307XG4gICAgICAgIH1cbiAgICAgICAgb3RoZXJTdGF0ZVRvU2V0ID0gcGlja1N0YXRlKG90aGVyU3RhdGVUb1NldCk7XG4gICAgICAgIF90aGlzLmludGVybmFsU2V0U3RhdGUoe1xuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgICAgLi4ub3RoZXJTdGF0ZVRvU2V0XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24gPSBjYiA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtOiBudWxsLFxuICAgICAgICAgIGlucHV0VmFsdWU6ICcnLFxuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IHRoaXMucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgICAgaXNPcGVuOiB0aGlzLnByb3BzLmRlZmF1bHRJc09wZW5cbiAgICAgICAgfSwgY2IpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbSA9IChpdGVtLCBvdGhlclN0YXRlVG9TZXQsIGNiKSA9PiB7XG4gICAgICAgIG90aGVyU3RhdGVUb1NldCA9IHBpY2tTdGF0ZShvdGhlclN0YXRlVG9TZXQpO1xuICAgICAgICB0aGlzLmludGVybmFsU2V0U3RhdGUoe1xuICAgICAgICAgIGlzT3BlbjogdGhpcy5wcm9wcy5kZWZhdWx0SXNPcGVuLFxuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IHRoaXMucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtOiBpdGVtLFxuICAgICAgICAgIGlucHV0VmFsdWU6IHRoaXMucHJvcHMuaXRlbVRvU3RyaW5nKGl0ZW0pLFxuICAgICAgICAgIC4uLm90aGVyU3RhdGVUb1NldFxuICAgICAgICB9LCBjYik7XG4gICAgICB9O1xuICAgICAgdGhpcy5zZWxlY3RJdGVtQXRJbmRleCA9IChpdGVtSW5kZXgsIG90aGVyU3RhdGVUb1NldCwgY2IpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbXNbaXRlbUluZGV4XTtcbiAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSwgb3RoZXJTdGF0ZVRvU2V0LCBjYik7XG4gICAgICB9O1xuICAgICAgdGhpcy5zZWxlY3RIaWdobGlnaHRlZEl0ZW0gPSAob3RoZXJTdGF0ZVRvU2V0LCBjYikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RJdGVtQXRJbmRleCh0aGlzLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCwgb3RoZXJTdGF0ZVRvU2V0LCBjYik7XG4gICAgICB9O1xuICAgICAgdGhpcy5pbnRlcm5hbFNldFN0YXRlID0gKHN0YXRlVG9TZXQsIGNiKSA9PiB7XG4gICAgICAgIGxldCBpc0l0ZW1TZWxlY3RlZCwgb25DaGFuZ2VBcmc7XG4gICAgICAgIGNvbnN0IG9uU3RhdGVDaGFuZ2VBcmcgPSB7fTtcbiAgICAgICAgY29uc3QgaXNTdGF0ZVRvU2V0RnVuY3Rpb24gPSB0eXBlb2Ygc3RhdGVUb1NldCA9PT0gJ2Z1bmN0aW9uJztcblxuICAgICAgICAvLyB3ZSB3YW50IHRvIGNhbGwgYG9uSW5wdXRWYWx1ZUNoYW5nZWAgYmVmb3JlIHRoZSBgc2V0U3RhdGVgIGNhbGxcbiAgICAgICAgLy8gc28gc29tZW9uZSBjb250cm9sbGluZyB0aGUgYGlucHV0VmFsdWVgIHN0YXRlIGdldHMgbm90aWZpZWQgb2ZcbiAgICAgICAgLy8gdGhlIGlucHV0IGNoYW5nZSBhcyBzb29uIGFzIHBvc3NpYmxlLiBUaGlzIGF2b2lkcyBpc3N1ZXMgd2l0aFxuICAgICAgICAvLyBwcmVzZXJ2aW5nIHRoZSBjdXJzb3IgcG9zaXRpb24uXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZG93bnNoaWZ0LWpzL2Rvd25zaGlmdC9pc3N1ZXMvMjE3IGZvciBtb3JlIGluZm8uXG4gICAgICAgIGlmICghaXNTdGF0ZVRvU2V0RnVuY3Rpb24gJiYgc3RhdGVUb1NldC5oYXNPd25Qcm9wZXJ0eSgnaW5wdXRWYWx1ZScpKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbklucHV0VmFsdWVDaGFuZ2Uoc3RhdGVUb1NldC5pbnB1dFZhbHVlLCB7XG4gICAgICAgICAgICAuLi50aGlzLmdldFN0YXRlQW5kSGVscGVycygpLFxuICAgICAgICAgICAgLi4uc3RhdGVUb1NldFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHN0YXRlID0+IHtcbiAgICAgICAgICBzdGF0ZSA9IHRoaXMuZ2V0U3RhdGUoc3RhdGUpO1xuICAgICAgICAgIGxldCBuZXdTdGF0ZVRvU2V0ID0gaXNTdGF0ZVRvU2V0RnVuY3Rpb24gPyBzdGF0ZVRvU2V0KHN0YXRlKSA6IHN0YXRlVG9TZXQ7XG5cbiAgICAgICAgICAvLyBZb3VyIG93biBmdW5jdGlvbiB0aGF0IGNvdWxkIG1vZGlmeSB0aGUgc3RhdGUgdGhhdCB3aWxsIGJlIHNldC5cbiAgICAgICAgICBuZXdTdGF0ZVRvU2V0ID0gdGhpcy5wcm9wcy5zdGF0ZVJlZHVjZXIoc3RhdGUsIG5ld1N0YXRlVG9TZXQpO1xuXG4gICAgICAgICAgLy8gY2hlY2tzIGlmIGFuIGl0ZW0gaXMgc2VsZWN0ZWQsIHJlZ2FyZGxlc3Mgb2YgaWYgaXQncyBkaWZmZXJlbnQgZnJvbVxuICAgICAgICAgIC8vIHdoYXQgd2FzIHNlbGVjdGVkIGJlZm9yZVxuICAgICAgICAgIC8vIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIG9uU2VsZWN0IGFuZCBvbkNoYW5nZSBjYWxsYmFja3Mgc2hvdWxkIGJlIGNhbGxlZFxuICAgICAgICAgIGlzSXRlbVNlbGVjdGVkID0gbmV3U3RhdGVUb1NldC5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0ZWRJdGVtJyk7XG4gICAgICAgICAgLy8gdGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb2JqZWN0IHdlIHdhbnQgdG8gY2FsbCB3aXRoIHNldFN0YXRlXG4gICAgICAgICAgY29uc3QgbmV4dFN0YXRlID0ge307XG4gICAgICAgICAgLy8gd2UgbmVlZCB0byBjYWxsIG9uIGNoYW5nZSBpZiB0aGUgb3V0c2lkZSB3b3JsZCBpcyBjb250cm9sbGluZyBhbnkgb2Ygb3VyIHN0YXRlXG4gICAgICAgICAgLy8gYW5kIHdlJ3JlIHRyeWluZyB0byB1cGRhdGUgdGhhdCBzdGF0ZS4gT1IgaWYgdGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCBhbmQgd2UncmVcbiAgICAgICAgICAvLyB0cnlpbmcgdG8gdXBkYXRlIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgICBpZiAoaXNJdGVtU2VsZWN0ZWQgJiYgbmV3U3RhdGVUb1NldC5zZWxlY3RlZEl0ZW0gIT09IHN0YXRlLnNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgb25DaGFuZ2VBcmcgPSBuZXdTdGF0ZVRvU2V0LnNlbGVjdGVkSXRlbTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV3U3RhdGVUb1NldC50eXBlID0gbmV3U3RhdGVUb1NldC50eXBlIHx8IHVua25vd247XG4gICAgICAgICAgT2JqZWN0LmtleXMobmV3U3RhdGVUb1NldCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgLy8gb25TdGF0ZUNoYW5nZUFyZyBzaG91bGQgb25seSBoYXZlIHRoZSBzdGF0ZSB0aGF0IGlzXG4gICAgICAgICAgICAvLyBhY3R1YWxseSBjaGFuZ2luZ1xuICAgICAgICAgICAgaWYgKHN0YXRlW2tleV0gIT09IG5ld1N0YXRlVG9TZXRba2V5XSkge1xuICAgICAgICAgICAgICBvblN0YXRlQ2hhbmdlQXJnW2tleV0gPSBuZXdTdGF0ZVRvU2V0W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0aGUgdHlwZSBpcyB1c2VmdWwgZm9yIHRoZSBvblN0YXRlQ2hhbmdlQXJnXG4gICAgICAgICAgICAvLyBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBzZXQgaXQgaW4gaW50ZXJuYWwgc3RhdGUuXG4gICAgICAgICAgICAvLyB0aGlzIGlzIGFuIHVuZG9jdW1lbnRlZCBmZWF0dXJlIGZvciBub3cuLi4gTm90IGFsbCBpbnRlcm5hbFNldFN0YXRlXG4gICAgICAgICAgICAvLyBjYWxscyBzdXBwb3J0IGl0IGFuZCBJJ20gbm90IGNlcnRhaW4gd2Ugd2FudCB0aGVtIHRvIHlldC5cbiAgICAgICAgICAgIC8vIEJ1dCBpdCBlbmFibGVzIHVzZXJzIGNvbnRyb2xsaW5nIHRoZSBpc09wZW4gc3RhdGUgdG8ga25vdyB3aGVuXG4gICAgICAgICAgICAvLyB0aGUgaXNPcGVuIHN0YXRlIGNoYW5nZXMgZHVlIHRvIG1vdXNldXAgZXZlbnRzIHdoaWNoIGlzIHF1aXRlIGhhbmR5LlxuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3R5cGUnKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1N0YXRlVG9TZXRba2V5XTtcbiAgICAgICAgICAgIC8vIGlmIGl0J3MgY29taW5nIGZyb20gcHJvcHMsIHRoZW4gd2UgZG9uJ3QgY2FyZSB0byBzZXQgaXQgaW50ZXJuYWxseVxuICAgICAgICAgICAgaWYgKCFpc0NvbnRyb2xsZWRQcm9wKHRoaXMucHJvcHMsIGtleSkpIHtcbiAgICAgICAgICAgICAgbmV4dFN0YXRlW2tleV0gPSBuZXdTdGF0ZVRvU2V0W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBpZiBzdGF0ZVRvU2V0IGlzIGEgZnVuY3Rpb24sIHRoZW4gd2Ugd2VyZW4ndCBhYmxlIHRvIGNhbGwgb25JbnB1dFZhbHVlQ2hhbmdlXG4gICAgICAgICAgLy8gZWFybGllciwgc28gd2UnbGwgY2FsbCBpdCBub3cgdGhhdCB3ZSBrbm93IHdoYXQgdGhlIGlucHV0VmFsdWUgc3RhdGUgd2lsbCBiZS5cbiAgICAgICAgICBpZiAoaXNTdGF0ZVRvU2V0RnVuY3Rpb24gJiYgbmV3U3RhdGVUb1NldC5oYXNPd25Qcm9wZXJ0eSgnaW5wdXRWYWx1ZScpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uSW5wdXRWYWx1ZUNoYW5nZShuZXdTdGF0ZVRvU2V0LmlucHV0VmFsdWUsIHtcbiAgICAgICAgICAgICAgLi4udGhpcy5nZXRTdGF0ZUFuZEhlbHBlcnMoKSxcbiAgICAgICAgICAgICAgLi4ubmV3U3RhdGVUb1NldFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXh0U3RhdGU7XG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAvLyBjYWxsIHRoZSBwcm92aWRlZCBjYWxsYmFjayBpZiBpdCdzIGEgZnVuY3Rpb25cbiAgICAgICAgICBjYlRvQ2IoY2IpKCk7XG5cbiAgICAgICAgICAvLyBvbmx5IGNhbGwgdGhlIG9uU3RhdGVDaGFuZ2UgYW5kIG9uQ2hhbmdlIGNhbGxiYWNrcyBpZlxuICAgICAgICAgIC8vIHdlIGhhdmUgcmVsZXZhbnQgaW5mb3JtYXRpb24gdG8gcGFzcyB0aGVtLlxuICAgICAgICAgIGNvbnN0IGhhc01vcmVTdGF0ZVRoYW5UeXBlID0gT2JqZWN0LmtleXMob25TdGF0ZUNoYW5nZUFyZykubGVuZ3RoID4gMTtcbiAgICAgICAgICBpZiAoaGFzTW9yZVN0YXRlVGhhblR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TdGF0ZUNoYW5nZShvblN0YXRlQ2hhbmdlQXJnLCB0aGlzLmdldFN0YXRlQW5kSGVscGVycygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzSXRlbVNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHN0YXRlVG9TZXQuc2VsZWN0ZWRJdGVtLCB0aGlzLmdldFN0YXRlQW5kSGVscGVycygpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG9uQ2hhbmdlQXJnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2Uob25DaGFuZ2VBcmcsIHRoaXMuZ2V0U3RhdGVBbmRIZWxwZXJzKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYW5kIHRoZXJlZm9yZSBzdWJqZWN0IHRvIGNoYW5nZVxuICAgICAgICAgIC8vIFdlJ2xsIHRyeSB0byBub3QgYnJlYWsgaXQsIGJ1dCBqdXN0IGJlIHdhcm5lZC5cbiAgICAgICAgICB0aGlzLnByb3BzLm9uVXNlckFjdGlvbihvblN0YXRlQ2hhbmdlQXJnLCB0aGlzLmdldFN0YXRlQW5kSGVscGVycygpKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5yb290UmVmID0gbm9kZSA9PiB0aGlzLl9yb290Tm9kZSA9IG5vZGU7XG4gICAgICB0aGlzLmdldFJvb3RQcm9wcyA9IGZ1bmN0aW9uIChfdGVtcCwgX3RlbXAyKSB7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgcmVmS2V5ID0gJ3JlZicsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wO1xuICAgICAgICBsZXQge1xuICAgICAgICAgIHN1cHByZXNzUmVmRXJyb3IgPSBmYWxzZVxuICAgICAgICB9ID0gX3RlbXAyID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMjtcbiAgICAgICAgLy8gdGhpcyBpcyB1c2VkIGluIHRoZSByZW5kZXIgdG8ga25vdyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBjYWxsZWQgZ2V0Um9vdFByb3BzLlxuICAgICAgICAvLyBJdCB1c2VzIHRoYXQgdG8ga25vdyB3aGV0aGVyIHRvIGFwcGx5IHRoZSBwcm9wcyBhdXRvbWF0aWNhbGx5XG4gICAgICAgIF90aGlzLmdldFJvb3RQcm9wcy5jYWxsZWQgPSB0cnVlO1xuICAgICAgICBfdGhpcy5nZXRSb290UHJvcHMucmVmS2V5ID0gcmVmS2V5O1xuICAgICAgICBfdGhpcy5nZXRSb290UHJvcHMuc3VwcHJlc3NSZWZFcnJvciA9IHN1cHByZXNzUmVmRXJyb3I7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpc09wZW5cbiAgICAgICAgfSA9IF90aGlzLmdldFN0YXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgW3JlZktleV06IGhhbmRsZVJlZnMocmVmLCBfdGhpcy5yb290UmVmKSxcbiAgICAgICAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICAgICAgICdhcmlhLWV4cGFuZGVkJzogaXNPcGVuLFxuICAgICAgICAgICdhcmlhLWhhc3BvcHVwJzogJ2xpc3Rib3gnLFxuICAgICAgICAgICdhcmlhLW93bnMnOiBpc09wZW4gPyBfdGhpcy5tZW51SWQgOiBudWxsLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBfdGhpcy5sYWJlbElkLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICB0aGlzLmtleURvd25IYW5kbGVycyA9IHtcbiAgICAgICAgQXJyb3dEb3duKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5nZXRTdGF0ZSgpLmlzT3Blbikge1xuICAgICAgICAgICAgY29uc3QgYW1vdW50ID0gZXZlbnQuc2hpZnRLZXkgPyA1IDogMTtcbiAgICAgICAgICAgIHRoaXMubW92ZUhpZ2hsaWdodGVkSW5kZXgoYW1vdW50LCB7XG4gICAgICAgICAgICAgIHR5cGU6IGtleURvd25BcnJvd0Rvd25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsU2V0U3RhdGUoe1xuICAgICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgICAgIHR5cGU6IGtleURvd25BcnJvd0Rvd25cbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbUNvdW50ID0gdGhpcy5nZXRJdGVtQ291bnQoKTtcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Db3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0SGlnaGxpZ2h0ZWRJbmRleCA9IGdldE5leHRXcmFwcGluZ0luZGV4KDEsIGhpZ2hsaWdodGVkSW5kZXgsIGl0ZW1Db3VudCwgaW5kZXggPT4gdGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleChpbmRleCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGlnaGxpZ2h0ZWRJbmRleChuZXh0SGlnaGxpZ2h0ZWRJbmRleCwge1xuICAgICAgICAgICAgICAgICAgdHlwZToga2V5RG93bkFycm93RG93blxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIEFycm93VXAoZXZlbnQpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICh0aGlzLmdldFN0YXRlKCkuaXNPcGVuKSB7XG4gICAgICAgICAgICBjb25zdCBhbW91bnQgPSBldmVudC5zaGlmdEtleSA/IC01IDogLTE7XG4gICAgICAgICAgICB0aGlzLm1vdmVIaWdobGlnaHRlZEluZGV4KGFtb3VudCwge1xuICAgICAgICAgICAgICB0eXBlOiBrZXlEb3duQXJyb3dVcFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgICAgdHlwZToga2V5RG93bkFycm93VXBcbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbUNvdW50ID0gdGhpcy5nZXRJdGVtQ291bnQoKTtcbiAgICAgICAgICAgICAgaWYgKGl0ZW1Db3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgICAgICAgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0SGlnaGxpZ2h0ZWRJbmRleCA9IGdldE5leHRXcmFwcGluZ0luZGV4KC0xLCBoaWdobGlnaHRlZEluZGV4LCBpdGVtQ291bnQsIGluZGV4ID0+IHRoaXMuZ2V0SXRlbU5vZGVGcm9tSW5kZXgoaW5kZXgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhpZ2hsaWdodGVkSW5kZXgobmV4dEhpZ2hsaWdodGVkSW5kZXgsIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IGtleURvd25BcnJvd1VwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgRW50ZXIoZXZlbnQpIHtcbiAgICAgICAgICBpZiAoZXZlbnQud2hpY2ggPT09IDIyOSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpc09wZW4sXG4gICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICAgICAgICBpZiAoaXNPcGVuICYmIGhpZ2hsaWdodGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2hpZ2hsaWdodGVkSW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaXRlbU5vZGUgPSB0aGlzLmdldEl0ZW1Ob2RlRnJvbUluZGV4KGhpZ2hsaWdodGVkSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGl0ZW0gPT0gbnVsbCB8fCBpdGVtTm9kZSAmJiBpdGVtTm9kZS5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RIaWdobGlnaHRlZEl0ZW0oe1xuICAgICAgICAgICAgICB0eXBlOiBrZXlEb3duRW50ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgRXNjYXBlKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnJlc2V0KHtcbiAgICAgICAgICAgIHR5cGU6IGtleURvd25Fc2NhcGUsXG4gICAgICAgICAgICAuLi4oIXRoaXMuc3RhdGUuaXNPcGVuICYmIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtOiBudWxsLFxuICAgICAgICAgICAgICBpbnB1dFZhbHVlOiAnJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMuYnV0dG9uS2V5RG93bkhhbmRsZXJzID0ge1xuICAgICAgICAuLi50aGlzLmtleURvd25IYW5kbGVycyxcbiAgICAgICAgJyAnKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnRvZ2dsZU1lbnUoe1xuICAgICAgICAgICAgdHlwZToga2V5RG93blNwYWNlQnV0dG9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmlucHV0S2V5RG93bkhhbmRsZXJzID0ge1xuICAgICAgICAuLi50aGlzLmtleURvd25IYW5kbGVycyxcbiAgICAgICAgSG9tZShldmVudCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgIH0gPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBpdGVtQ291bnQgPSB0aGlzLmdldEl0ZW1Db3VudCgpO1xuICAgICAgICAgIGlmIChpdGVtQ291bnQgPD0gMCB8fCAhaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZ2V0IG5leHQgbm9uLWRpc2FibGVkIHN0YXJ0aW5nIGRvd253YXJkcyBmcm9tIDAgaWYgdGhhdCdzIGRpc2FibGVkLlxuICAgICAgICAgIGNvbnN0IG5ld0hpZ2hsaWdodGVkSW5kZXggPSBnZXROZXh0Tm9uRGlzYWJsZWRJbmRleCgxLCAwLCBpdGVtQ291bnQsIGluZGV4ID0+IHRoaXMuZ2V0SXRlbU5vZGVGcm9tSW5kZXgoaW5kZXgpLCBmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zZXRIaWdobGlnaHRlZEluZGV4KG5ld0hpZ2hsaWdodGVkSW5kZXgsIHtcbiAgICAgICAgICAgIHR5cGU6IGtleURvd25Ib21lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIEVuZChldmVudCkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgIH0gPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBpdGVtQ291bnQgPSB0aGlzLmdldEl0ZW1Db3VudCgpO1xuICAgICAgICAgIGlmIChpdGVtQ291bnQgPD0gMCB8fCAhaXNPcGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZ2V0IG5leHQgbm9uLWRpc2FibGVkIHN0YXJ0aW5nIHVwd2FyZHMgZnJvbSBsYXN0IGluZGV4IGlmIHRoYXQncyBkaXNhYmxlZC5cbiAgICAgICAgICBjb25zdCBuZXdIaWdobGlnaHRlZEluZGV4ID0gZ2V0TmV4dE5vbkRpc2FibGVkSW5kZXgoLTEsIGl0ZW1Db3VudCAtIDEsIGl0ZW1Db3VudCwgaW5kZXggPT4gdGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleChpbmRleCksIGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNldEhpZ2hsaWdodGVkSW5kZXgobmV3SGlnaGxpZ2h0ZWRJbmRleCwge1xuICAgICAgICAgICAgdHlwZToga2V5RG93bkVuZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5nZXRUb2dnbGVCdXR0b25Qcm9wcyA9IGZ1bmN0aW9uIChfdGVtcDMpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBvbkNsaWNrLFxuICAgICAgICAgIG9uUHJlc3MsXG4gICAgICAgICAgb25LZXlEb3duLFxuICAgICAgICAgIG9uS2V5VXAsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSA9IF90ZW1wMyA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDM7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpc09wZW5cbiAgICAgICAgfSA9IF90aGlzLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRFdmVudEhhbmRsZXJzID0ge1xuICAgICAgICAgIG9uQ2xpY2s6IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uQ2xpY2ssIF90aGlzLmJ1dHRvbkhhbmRsZUNsaWNrKSxcbiAgICAgICAgICBvbktleURvd246IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uS2V5RG93biwgX3RoaXMuYnV0dG9uSGFuZGxlS2V5RG93biksXG4gICAgICAgICAgb25LZXlVcDogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25LZXlVcCwgX3RoaXMuYnV0dG9uSGFuZGxlS2V5VXApLFxuICAgICAgICAgIG9uQmx1cjogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25CbHVyLCBfdGhpcy5idXR0b25IYW5kbGVCbHVyKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBldmVudEhhbmRsZXJzID0gcmVzdC5kaXNhYmxlZCA/IHt9IDogZW5hYmxlZEV2ZW50SGFuZGxlcnM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgcm9sZTogJ2J1dHRvbicsXG4gICAgICAgICAgJ2FyaWEtbGFiZWwnOiBpc09wZW4gPyAnY2xvc2UgbWVudScgOiAnb3BlbiBtZW51JyxcbiAgICAgICAgICAnYXJpYS1oYXNwb3B1cCc6IHRydWUsXG4gICAgICAgICAgJ2RhdGEtdG9nZ2xlJzogdHJ1ZSxcbiAgICAgICAgICAuLi5ldmVudEhhbmRsZXJzLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICB0aGlzLmJ1dHRvbkhhbmRsZUtleVVwID0gZXZlbnQgPT4ge1xuICAgICAgICAvLyBQcmV2ZW50IGNsaWNrIGV2ZW50IGZyb20gZW1pdHRpbmcgaW4gRmlyZWZveFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuYnV0dG9uSGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gbm9ybWFsaXplQXJyb3dLZXkoZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5idXR0b25LZXlEb3duSGFuZGxlcnNba2V5XSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uS2V5RG93bkhhbmRsZXJzW2tleV0uY2FsbCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmJ1dHRvbkhhbmRsZUNsaWNrID0gZXZlbnQgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyBoYW5kbGUgb2RkIGNhc2UgZm9yIFNhZmFyaSBhbmQgRmlyZWZveCB3aGljaFxuICAgICAgICAvLyBkb24ndCBnaXZlIHRoZSBidXR0b24gdGhlIGZvY3VzIHByb3Blcmx5LlxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKGNhbid0IHJlYXNvbmFibHkgdGVzdCB0aGlzKSAqL1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICBldmVudC50YXJnZXQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0byBzaW1wbGlmeSB0ZXN0aW5nIGNvbXBvbmVudHMgdGhhdCB1c2UgZG93bnNoaWZ0LCB3ZSdsbCBub3Qgd3JhcCB0aGlzIGluIGEgc2V0VGltZW91dFxuICAgICAgICAvLyBpZiB0aGUgTk9ERV9FTlYgaXMgdGVzdC4gV2l0aCB0aGUgcHJvcGVyIGJ1aWxkIHN5c3RlbSwgdGhpcyBzaG91bGQgYmUgZGVhZCBjb2RlIGVsaW1pbmF0ZWRcbiAgICAgICAgLy8gd2hlbiBidWlsZGluZyBmb3IgcHJvZHVjdGlvbiBhbmQgc2hvdWxkIHRoZXJlZm9yZSBoYXZlIG5vIGltcGFjdCBvbiBwcm9kdWN0aW9uIGNvZGUuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVNZW51KHtcbiAgICAgICAgICAgIHR5cGU6IGNsaWNrQnV0dG9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdG9nZ2xlIG9mIG1lbnUgb2NjdXJzIGFmdGVyIHRoZSBwb3RlbnRpYWwgYmx1ciBldmVudCBpbiBpT1NcbiAgICAgICAgICB0aGlzLmludGVybmFsU2V0VGltZW91dCgoKSA9PiB0aGlzLnRvZ2dsZU1lbnUoe1xuICAgICAgICAgICAgdHlwZTogY2xpY2tCdXR0b25cbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmJ1dHRvbkhhbmRsZUJsdXIgPSBldmVudCA9PiB7XG4gICAgICAgIGNvbnN0IGJsdXJUYXJnZXQgPSBldmVudC50YXJnZXQ7IC8vIFNhdmUgYmx1ciB0YXJnZXQgZm9yIGNvbXBhcmlzb24gd2l0aCBhY3RpdmVFbGVtZW50IGxhdGVyXG4gICAgICAgIC8vIE5lZWQgc2V0VGltZW91dCwgc28gdGhhdCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgVGFiLCB0aGUgYWN0aXZlRWxlbWVudCBpcyB0aGUgbmV4dCBmb2N1c2VkIGVsZW1lbnQsIG5vdCBib2R5IGVsZW1lbnRcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc01vdXNlRG93biAmJiAodGhpcy5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IG51bGwgfHwgdGhpcy5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50LmlkICE9PSB0aGlzLmlucHV0SWQpICYmIHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gYmx1clRhcmdldCAvLyBEbyBub3RoaW5nIGlmIHdlIHJlZm9jdXMgdGhlIHNhbWUgZWxlbWVudCBhZ2FpbiAodG8gc29sdmUgaXNzdWUgaW4gU2FmYXJpIG9uIGlPUylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoe1xuICAgICAgICAgICAgICB0eXBlOiBibHVyQnV0dG9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMuZ2V0TGFiZWxQcm9wcyA9IHByb3BzID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBodG1sRm9yOiB0aGlzLmlucHV0SWQsXG4gICAgICAgICAgaWQ6IHRoaXMubGFiZWxJZCxcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHRoaXMuZ2V0SW5wdXRQcm9wcyA9IGZ1bmN0aW9uIChfdGVtcDQpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICBvbktleURvd24sXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uQ2hhbmdlLFxuICAgICAgICAgIG9uSW5wdXQsXG4gICAgICAgICAgb25DaGFuZ2VUZXh0LFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSA9IF90ZW1wNCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDQ7XG4gICAgICAgIGxldCBvbkNoYW5nZUtleTtcbiAgICAgICAgbGV0IGV2ZW50SGFuZGxlcnMgPSB7fTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAocHJlYWN0KSAqL1xuICAgICAgICB7XG4gICAgICAgICAgb25DaGFuZ2VLZXkgPSAnb25DaGFuZ2UnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgIGlzT3BlbixcbiAgICAgICAgICBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgIH0gPSBfdGhpcy5nZXRTdGF0ZSgpO1xuICAgICAgICBpZiAoIXJlc3QuZGlzYWJsZWQpIHtcbiAgICAgICAgICBldmVudEhhbmRsZXJzID0ge1xuICAgICAgICAgICAgW29uQ2hhbmdlS2V5XTogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25DaGFuZ2UsIG9uSW5wdXQsIF90aGlzLmlucHV0SGFuZGxlQ2hhbmdlKSxcbiAgICAgICAgICAgIG9uS2V5RG93bjogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25LZXlEb3duLCBfdGhpcy5pbnB1dEhhbmRsZUtleURvd24pLFxuICAgICAgICAgICAgb25CbHVyOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbkJsdXIsIF90aGlzLmlucHV0SGFuZGxlQmx1cilcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgJ2FyaWEtYXV0b2NvbXBsZXRlJzogJ2xpc3QnLFxuICAgICAgICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnOiBpc09wZW4gJiYgdHlwZW9mIGhpZ2hsaWdodGVkSW5kZXggPT09ICdudW1iZXInICYmIGhpZ2hsaWdodGVkSW5kZXggPj0gMCA/IF90aGlzLmdldEl0ZW1JZChoaWdobGlnaHRlZEluZGV4KSA6IG51bGwsXG4gICAgICAgICAgJ2FyaWEtY29udHJvbHMnOiBpc09wZW4gPyBfdGhpcy5tZW51SWQgOiBudWxsLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBfdGhpcy5sYWJlbElkLFxuICAgICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NlY3VyaXR5L1NlY3VyaW5nX3lvdXJfc2l0ZS9UdXJuaW5nX29mZl9mb3JtX2F1dG9jb21wbGV0aW9uXG4gICAgICAgICAgLy8gcmV2ZXJ0IGJhY2sgc2luY2UgYXV0b2NvbXBsZXRlPVwibm9wZVwiIGlzIGlnbm9yZWQgb24gbGF0ZXN0IENocm9tZSBhbmQgT3BlcmFcbiAgICAgICAgICBhdXRvQ29tcGxldGU6ICdvZmYnLFxuICAgICAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgICAgIGlkOiBfdGhpcy5pbnB1dElkLFxuICAgICAgICAgIC4uLmV2ZW50SGFuZGxlcnMsXG4gICAgICAgICAgLi4ucmVzdFxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHRoaXMuaW5wdXRIYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBub3JtYWxpemVBcnJvd0tleShldmVudCk7XG4gICAgICAgIGlmIChrZXkgJiYgdGhpcy5pbnB1dEtleURvd25IYW5kbGVyc1trZXldKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dEtleURvd25IYW5kbGVyc1trZXldLmNhbGwodGhpcywgZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5pbnB1dEhhbmRsZUNoYW5nZSA9IGV2ZW50ID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNldFN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBjaGFuZ2VJbnB1dCxcbiAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgICAgaW5wdXRWYWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IHRoaXMucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5pbnB1dEhhbmRsZUJsdXIgPSAoKSA9PiB7XG4gICAgICAgIC8vIE5lZWQgc2V0VGltZW91dCwgc28gdGhhdCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgVGFiLCB0aGUgYWN0aXZlRWxlbWVudCBpcyB0aGUgbmV4dCBmb2N1c2VkIGVsZW1lbnQsIG5vdCB0aGUgYm9keSBlbGVtZW50XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBkb3duc2hpZnRCdXR0b25Jc0FjdGl2ZSA9IHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQgJiYgISF0aGlzLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgISF0aGlzLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGF0YXNldCAmJiB0aGlzLnByb3BzLmVudmlyb25tZW50LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZGF0YXNldC50b2dnbGUgJiYgdGhpcy5fcm9vdE5vZGUgJiYgdGhpcy5fcm9vdE5vZGUuY29udGFpbnModGhpcy5wcm9wcy5lbnZpcm9ubWVudC5kb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24gJiYgIWRvd25zaGlmdEJ1dHRvbklzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KHtcbiAgICAgICAgICAgICAgdHlwZTogYmx1cklucHV0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMubWVudVJlZiA9IG5vZGUgPT4ge1xuICAgICAgICB0aGlzLl9tZW51Tm9kZSA9IG5vZGU7XG4gICAgICB9O1xuICAgICAgdGhpcy5nZXRNZW51UHJvcHMgPSBmdW5jdGlvbiAoX3RlbXA1LCBfdGVtcDYpIHtcbiAgICAgICAgbGV0IHtcbiAgICAgICAgICByZWZLZXkgPSAncmVmJyxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgLi4ucHJvcHNcbiAgICAgICAgfSA9IF90ZW1wNSA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDU7XG4gICAgICAgIGxldCB7XG4gICAgICAgICAgc3VwcHJlc3NSZWZFcnJvciA9IGZhbHNlXG4gICAgICAgIH0gPSBfdGVtcDYgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA2O1xuICAgICAgICBfdGhpcy5nZXRNZW51UHJvcHMuY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuZ2V0TWVudVByb3BzLnJlZktleSA9IHJlZktleTtcbiAgICAgICAgX3RoaXMuZ2V0TWVudVByb3BzLnN1cHByZXNzUmVmRXJyb3IgPSBzdXBwcmVzc1JlZkVycm9yO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFtyZWZLZXldOiBoYW5kbGVSZWZzKHJlZiwgX3RoaXMubWVudVJlZiksXG4gICAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBwcm9wcyAmJiBwcm9wc1snYXJpYS1sYWJlbCddID8gbnVsbCA6IF90aGlzLmxhYmVsSWQsXG4gICAgICAgICAgaWQ6IF90aGlzLm1lbnVJZCxcbiAgICAgICAgICAuLi5wcm9wc1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIHRoaXMuZ2V0SXRlbVByb3BzID0gZnVuY3Rpb24gKF90ZW1wNykge1xuICAgICAgICBsZXQge1xuICAgICAgICAgIG9uTW91c2VNb3ZlLFxuICAgICAgICAgIG9uTW91c2VEb3duLFxuICAgICAgICAgIG9uQ2xpY2ssXG4gICAgICAgICAgb25QcmVzcyxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgICBpdGVtID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyA/IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovdW5kZWZpbmVkIDogcmVxdWlyZWRQcm9wKCdnZXRJdGVtUHJvcHMnLCAnaXRlbScpLFxuICAgICAgICAgIC4uLnJlc3RcbiAgICAgICAgfSA9IF90ZW1wNyA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDc7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgX3RoaXMuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICBpbmRleCA9IF90aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgX3RoaXMuaXRlbXNbaW5kZXhdID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvblNlbGVjdEtleSA9ICdvbkNsaWNrJztcbiAgICAgICAgY29uc3QgY3VzdG9tQ2xpY2tIYW5kbGVyID0gb25DbGljaztcbiAgICAgICAgY29uc3QgZW5hYmxlZEV2ZW50SGFuZGxlcnMgPSB7XG4gICAgICAgICAgLy8gb25Nb3VzZU1vdmUgaXMgdXNlZCBvdmVyIG9uTW91c2VFbnRlciBoZXJlLiBvbk1vdXNlTW92ZVxuICAgICAgICAgIC8vIGlzIG9ubHkgdHJpZ2dlcmVkIG9uIGFjdHVhbCBtb3VzZSBtb3ZlbWVudCB3aGlsZSBvbk1vdXNlRW50ZXJcbiAgICAgICAgICAvLyBjYW4gZmlyZSBvbiBET00gY2hhbmdlcywgaW50ZXJydXB0aW5nIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgICBvbk1vdXNlTW92ZTogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25Nb3VzZU1vdmUsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gX3RoaXMuZ2V0U3RhdGUoKS5oaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF90aGlzLnNldEhpZ2hsaWdodGVkSW5kZXgoaW5kZXgsIHtcbiAgICAgICAgICAgICAgdHlwZTogaXRlbU1vdXNlRW50ZXJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBXZSBuZXZlciB3YW50IHRvIG1hbnVhbGx5IHNjcm9sbCB3aGVuIGNoYW5naW5nIHN0YXRlIGJhc2VkXG4gICAgICAgICAgICAvLyBvbiBgb25Nb3VzZU1vdmVgIGJlY2F1c2Ugd2Ugd2lsbCBiZSBtb3ZpbmcgdGhlIGVsZW1lbnQgb3V0XG4gICAgICAgICAgICAvLyBmcm9tIHVuZGVyIHRoZSB1c2VyIHdoaWNoIGlzIGN1cnJlbnRseSBzY3JvbGxpbmcvbW92aW5nIHRoZVxuICAgICAgICAgICAgLy8gY3Vyc29yXG4gICAgICAgICAgICBfdGhpcy5hdm9pZFNjcm9sbGluZyA9IHRydWU7XG4gICAgICAgICAgICBfdGhpcy5pbnRlcm5hbFNldFRpbWVvdXQoKCkgPT4gX3RoaXMuYXZvaWRTY3JvbGxpbmcgPSBmYWxzZSwgMjUwKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvbk1vdXNlRG93bjogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25Nb3VzZURvd24sIGV2ZW50ID0+IHtcbiAgICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGFjdGl2ZUVsZW1lbnQgZnJvbSBiZWluZyBjaGFuZ2VkXG4gICAgICAgICAgICAvLyB0byB0aGUgaXRlbSBzbyBpdCBjYW4gcmVtYWluIHdpdGggdGhlIGN1cnJlbnQgYWN0aXZlRWxlbWVudFxuICAgICAgICAgICAgLy8gd2hpY2ggaXMgYSBtb3JlIGNvbW1vbiB1c2UgY2FzZS5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgW29uU2VsZWN0S2V5XTogY2FsbEFsbEV2ZW50SGFuZGxlcnMoY3VzdG9tQ2xpY2tIYW5kbGVyLCAoKSA9PiB7XG4gICAgICAgICAgICBfdGhpcy5zZWxlY3RJdGVtQXRJbmRleChpbmRleCwge1xuICAgICAgICAgICAgICB0eXBlOiBjbGlja0l0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUGFzc2luZyBkb3duIHRoZSBvbk1vdXNlRG93biBoYW5kbGVyIHRvIHByZXZlbnQgcmVkaXJlY3RcbiAgICAgICAgLy8gb2YgdGhlIGFjdGl2ZUVsZW1lbnQgaWYgY2xpY2tpbmcgb24gZGlzYWJsZWQgaXRlbXNcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVycyA9IHJlc3QuZGlzYWJsZWQgPyB7XG4gICAgICAgICAgb25Nb3VzZURvd246IGVuYWJsZWRFdmVudEhhbmRsZXJzLm9uTW91c2VEb3duXG4gICAgICAgIH0gOiBlbmFibGVkRXZlbnRIYW5kbGVycztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogX3RoaXMuZ2V0SXRlbUlkKGluZGV4KSxcbiAgICAgICAgICByb2xlOiAnb3B0aW9uJyxcbiAgICAgICAgICAnYXJpYS1zZWxlY3RlZCc6IF90aGlzLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXgsXG4gICAgICAgICAgLi4uZXZlbnRIYW5kbGVycyxcbiAgICAgICAgICAuLi5yZXN0XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgdGhpcy5jbGVhckl0ZW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICB9O1xuICAgICAgdGhpcy5yZXNldCA9IGZ1bmN0aW9uIChvdGhlclN0YXRlVG9TZXQsIGNiKSB7XG4gICAgICAgIGlmIChvdGhlclN0YXRlVG9TZXQgPT09IHZvaWQgMCkge1xuICAgICAgICAgIG90aGVyU3RhdGVUb1NldCA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIG90aGVyU3RhdGVUb1NldCA9IHBpY2tTdGF0ZShvdGhlclN0YXRlVG9TZXQpO1xuICAgICAgICBfdGhpcy5pbnRlcm5hbFNldFN0YXRlKF9yZWYgPT4ge1xuICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1cbiAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNPcGVuOiBfdGhpcy5wcm9wcy5kZWZhdWx0SXNPcGVuLFxuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogX3RoaXMucHJvcHMuZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgICAgICBpbnB1dFZhbHVlOiBfdGhpcy5wcm9wcy5pdGVtVG9TdHJpbmcoc2VsZWN0ZWRJdGVtKSxcbiAgICAgICAgICAgIC4uLm90aGVyU3RhdGVUb1NldFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIGNiKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnRvZ2dsZU1lbnUgPSBmdW5jdGlvbiAob3RoZXJTdGF0ZVRvU2V0LCBjYikge1xuICAgICAgICBpZiAob3RoZXJTdGF0ZVRvU2V0ID09PSB2b2lkIDApIHtcbiAgICAgICAgICBvdGhlclN0YXRlVG9TZXQgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlclN0YXRlVG9TZXQgPSBwaWNrU3RhdGUob3RoZXJTdGF0ZVRvU2V0KTtcbiAgICAgICAgX3RoaXMuaW50ZXJuYWxTZXRTdGF0ZShfcmVmMiA9PiB7XG4gICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgIGlzT3BlblxuICAgICAgICAgIH0gPSBfcmVmMjtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNPcGVuOiAhaXNPcGVuLFxuICAgICAgICAgICAgLi4uKGlzT3BlbiAmJiB7XG4gICAgICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IF90aGlzLnByb3BzLmRlZmF1bHRIaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLm90aGVyU3RhdGVUb1NldFxuICAgICAgICAgIH07XG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBpc09wZW4sXG4gICAgICAgICAgICBoaWdobGlnaHRlZEluZGV4XG4gICAgICAgICAgfSA9IF90aGlzLmdldFN0YXRlKCk7XG4gICAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgaWYgKF90aGlzLmdldEl0ZW1Db3VudCgpID4gMCAmJiB0eXBlb2YgaGlnaGxpZ2h0ZWRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgX3RoaXMuc2V0SGlnaGxpZ2h0ZWRJbmRleChoaWdobGlnaHRlZEluZGV4LCBvdGhlclN0YXRlVG9TZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjYlRvQ2IoY2IpKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHRoaXMub3Blbk1lbnUgPSBjYiA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTZXRTdGF0ZSh7XG4gICAgICAgICAgaXNPcGVuOiB0cnVlXG4gICAgICAgIH0sIGNiKTtcbiAgICAgIH07XG4gICAgICB0aGlzLmNsb3NlTWVudSA9IGNiID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNldFN0YXRlKHtcbiAgICAgICAgICBpc09wZW46IGZhbHNlXG4gICAgICAgIH0sIGNiKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnVwZGF0ZVN0YXR1cyA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlKCk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW3N0YXRlLmhpZ2hsaWdodGVkSW5kZXhdO1xuICAgICAgICBjb25zdCByZXN1bHRDb3VudCA9IHRoaXMuZ2V0SXRlbUNvdW50KCk7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvcHMuZ2V0QTExeVN0YXR1c01lc3NhZ2Uoe1xuICAgICAgICAgIGl0ZW1Ub1N0cmluZzogdGhpcy5wcm9wcy5pdGVtVG9TdHJpbmcsXG4gICAgICAgICAgcHJldmlvdXNSZXN1bHRDb3VudDogdGhpcy5wcmV2aW91c1Jlc3VsdENvdW50LFxuICAgICAgICAgIHJlc3VsdENvdW50LFxuICAgICAgICAgIGhpZ2hsaWdodGVkSXRlbTogaXRlbSxcbiAgICAgICAgICAuLi5zdGF0ZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1Jlc3VsdENvdW50ID0gcmVzdWx0Q291bnQ7XG4gICAgICAgIHNldFN0YXR1cyhzdGF0dXMsIHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQpO1xuICAgICAgfSwgMjAwKTtcbiAgICAgIC8vIGZhbmN5IGRlc3RydWN0dXJpbmcgKyBkZWZhdWx0cyArIGFsaWFzZXNcbiAgICAgIC8vIHRoaXMgYmFzaWNhbGx5IHNheXMgZWFjaCB2YWx1ZSBvZiBzdGF0ZSBzaG91bGQgZWl0aGVyIGJlIHNldCB0b1xuICAgICAgLy8gdGhlIGluaXRpYWwgdmFsdWUgb3IgdGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGluaXRpYWwgdmFsdWUgaXMgbm90IHByb3ZpZGVkXG4gICAgICBjb25zdCB7XG4gICAgICAgIGRlZmF1bHRIaWdobGlnaHRlZEluZGV4LFxuICAgICAgICBpbml0aWFsSGlnaGxpZ2h0ZWRJbmRleDogX2hpZ2hsaWdodGVkSW5kZXggPSBkZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleCxcbiAgICAgICAgZGVmYXVsdElzT3BlbixcbiAgICAgICAgaW5pdGlhbElzT3BlbjogX2lzT3BlbiA9IGRlZmF1bHRJc09wZW4sXG4gICAgICAgIGluaXRpYWxJbnB1dFZhbHVlOiBfaW5wdXRWYWx1ZSA9ICcnLFxuICAgICAgICBpbml0aWFsU2VsZWN0ZWRJdGVtOiBfc2VsZWN0ZWRJdGVtID0gbnVsbFxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBfc3RhdGUgPSB0aGlzLmdldFN0YXRlKHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogX2hpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgIGlzT3BlbjogX2lzT3BlbixcbiAgICAgICAgaW5wdXRWYWx1ZTogX2lucHV0VmFsdWUsXG4gICAgICAgIHNlbGVjdGVkSXRlbTogX3NlbGVjdGVkSXRlbVxuICAgICAgfSk7XG4gICAgICBpZiAoX3N0YXRlLnNlbGVjdGVkSXRlbSAhPSBudWxsICYmIHRoaXMucHJvcHMuaW5pdGlhbElucHV0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBfc3RhdGUuaW5wdXRWYWx1ZSA9IHRoaXMucHJvcHMuaXRlbVRvU3RyaW5nKF9zdGF0ZS5zZWxlY3RlZEl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGF0ZSA9IF9zdGF0ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYWxsIHJ1bm5pbmcgdGltZW91dHNcbiAgICAgKi9cbiAgICBpbnRlcm5hbENsZWFyVGltZW91dHMoKSB7XG4gICAgICB0aGlzLnRpbWVvdXRJZHMuZm9yRWFjaChpZCA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudGltZW91dElkcyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YXRlIGJhc2VkIG9uIGludGVybmFsIHN0YXRlIG9yIHByb3BzXG4gICAgICogSWYgYSBzdGF0ZSB2YWx1ZSBpcyBwYXNzZWQgdmlhIHByb3BzLCB0aGVuIHRoYXRcbiAgICAgKiBpcyB0aGUgdmFsdWUgZ2l2ZW4sIG90aGVyd2lzZSBpdCdzIHJldHJpZXZlZCBmcm9tXG4gICAgICogc3RhdGVUb01lcmdlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhdGVUb01lcmdlIGRlZmF1bHRzIHRvIHRoaXMuc3RhdGVcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IHRoZSBzdGF0ZVxuICAgICAqL1xuICAgIGdldFN0YXRlKHN0YXRlVG9NZXJnZSkge1xuICAgICAgaWYgKHN0YXRlVG9NZXJnZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHN0YXRlVG9NZXJnZSA9IHRoaXMuc3RhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZ2V0U3RhdGUoc3RhdGVUb01lcmdlLCB0aGlzLnByb3BzKTtcbiAgICB9XG4gICAgZ2V0SXRlbUNvdW50KCkge1xuICAgICAgLy8gdGhpbmdzIHJlYWQgYmV0dGVyIHRoaXMgd2F5LiBUaGV5J3JlIGluIHByaW9yaXR5IG9yZGVyOlxuICAgICAgLy8gMS4gYHRoaXMuaXRlbUNvdW50YFxuICAgICAgLy8gMi4gYHRoaXMucHJvcHMuaXRlbUNvdW50YFxuICAgICAgLy8gMy4gYHRoaXMuaXRlbXMubGVuZ3RoYFxuICAgICAgbGV0IGl0ZW1Db3VudCA9IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgaWYgKHRoaXMuaXRlbUNvdW50ICE9IG51bGwpIHtcbiAgICAgICAgaXRlbUNvdW50ID0gdGhpcy5pdGVtQ291bnQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuaXRlbUNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaXRlbUNvdW50ID0gdGhpcy5wcm9wcy5pdGVtQ291bnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbUNvdW50O1xuICAgIH1cbiAgICBnZXRJdGVtTm9kZUZyb21JbmRleChpbmRleCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuZW52aXJvbm1lbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRJdGVtSWQoaW5kZXgpKTtcbiAgICB9XG4gICAgc2Nyb2xsSGlnaGxpZ2h0ZWRJdGVtSW50b1ZpZXcoKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAocmVhY3QtbmF0aXZlKSAqL1xuICAgICAge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRJdGVtTm9kZUZyb21JbmRleCh0aGlzLmdldFN0YXRlKCkuaGlnaGxpZ2h0ZWRJbmRleCk7XG4gICAgICAgIHRoaXMucHJvcHMuc2Nyb2xsSW50b1ZpZXcobm9kZSwgdGhpcy5fbWVudU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBtb3ZlSGlnaGxpZ2h0ZWRJbmRleChhbW91bnQsIG90aGVyU3RhdGVUb1NldCkge1xuICAgICAgY29uc3QgaXRlbUNvdW50ID0gdGhpcy5nZXRJdGVtQ291bnQoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleFxuICAgICAgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcbiAgICAgIGlmIChpdGVtQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IG5leHRIaWdobGlnaHRlZEluZGV4ID0gZ2V0TmV4dFdyYXBwaW5nSW5kZXgoYW1vdW50LCBoaWdobGlnaHRlZEluZGV4LCBpdGVtQ291bnQsIGluZGV4ID0+IHRoaXMuZ2V0SXRlbU5vZGVGcm9tSW5kZXgoaW5kZXgpKTtcbiAgICAgICAgdGhpcy5zZXRIaWdobGlnaHRlZEluZGV4KG5leHRIaWdobGlnaHRlZEluZGV4LCBvdGhlclN0YXRlVG9TZXQpO1xuICAgICAgfVxuICAgIH1cbiAgICBnZXRTdGF0ZUFuZEhlbHBlcnMoKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgaXNPcGVuXG4gICAgICB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xuICAgICAgY29uc3Qge1xuICAgICAgICBpdGVtVG9TdHJpbmdcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3Qge1xuICAgICAgICBpZFxuICAgICAgfSA9IHRoaXM7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGdldFJvb3RQcm9wcyxcbiAgICAgICAgZ2V0VG9nZ2xlQnV0dG9uUHJvcHMsXG4gICAgICAgIGdldExhYmVsUHJvcHMsXG4gICAgICAgIGdldE1lbnVQcm9wcyxcbiAgICAgICAgZ2V0SW5wdXRQcm9wcyxcbiAgICAgICAgZ2V0SXRlbVByb3BzLFxuICAgICAgICBvcGVuTWVudSxcbiAgICAgICAgY2xvc2VNZW51LFxuICAgICAgICB0b2dnbGVNZW51LFxuICAgICAgICBzZWxlY3RJdGVtLFxuICAgICAgICBzZWxlY3RJdGVtQXRJbmRleCxcbiAgICAgICAgc2VsZWN0SGlnaGxpZ2h0ZWRJdGVtLFxuICAgICAgICBzZXRIaWdobGlnaHRlZEluZGV4LFxuICAgICAgICBjbGVhclNlbGVjdGlvbixcbiAgICAgICAgY2xlYXJJdGVtcyxcbiAgICAgICAgcmVzZXQsXG4gICAgICAgIHNldEl0ZW1Db3VudCxcbiAgICAgICAgdW5zZXRJdGVtQ291bnQsXG4gICAgICAgIGludGVybmFsU2V0U3RhdGU6IHNldFN0YXRlXG4gICAgICB9ID0gdGhpcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIHByb3AgZ2V0dGVyc1xuICAgICAgICBnZXRSb290UHJvcHMsXG4gICAgICAgIGdldFRvZ2dsZUJ1dHRvblByb3BzLFxuICAgICAgICBnZXRMYWJlbFByb3BzLFxuICAgICAgICBnZXRNZW51UHJvcHMsXG4gICAgICAgIGdldElucHV0UHJvcHMsXG4gICAgICAgIGdldEl0ZW1Qcm9wcyxcbiAgICAgICAgLy8gYWN0aW9uc1xuICAgICAgICByZXNldCxcbiAgICAgICAgb3Blbk1lbnUsXG4gICAgICAgIGNsb3NlTWVudSxcbiAgICAgICAgdG9nZ2xlTWVudSxcbiAgICAgICAgc2VsZWN0SXRlbSxcbiAgICAgICAgc2VsZWN0SXRlbUF0SW5kZXgsXG4gICAgICAgIHNlbGVjdEhpZ2hsaWdodGVkSXRlbSxcbiAgICAgICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCxcbiAgICAgICAgY2xlYXJTZWxlY3Rpb24sXG4gICAgICAgIGNsZWFySXRlbXMsXG4gICAgICAgIHNldEl0ZW1Db3VudCxcbiAgICAgICAgdW5zZXRJdGVtQ291bnQsXG4gICAgICAgIHNldFN0YXRlLFxuICAgICAgICAvLyBwcm9wc1xuICAgICAgICBpdGVtVG9TdHJpbmcsXG4gICAgICAgIC8vIGRlcml2ZWRcbiAgICAgICAgaWQsXG4gICAgICAgIC8vIHN0YXRlXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgIGlzT3BlbixcbiAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gUk9PVFxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKHJlYWN0LW5hdGl2ZSkgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFmYWxzZSAmJiB0aGlzLmdldE1lbnVQcm9wcy5jYWxsZWQgJiYgIXRoaXMuZ2V0TWVudVByb3BzLnN1cHByZXNzUmVmRXJyb3IpIHtcbiAgICAgICAgdmFsaWRhdGVHZXRNZW51UHJvcHNDYWxsZWRDb3JyZWN0bHkodGhpcy5fbWVudU5vZGUsIHRoaXMuZ2V0TWVudVByb3BzKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmIChyZWFjdC1uYXRpdmUpICovXG4gICAgICB7XG4gICAgICAgIC8vIHRoaXMuaXNNb3VzZURvd24gaGVscHMgdXMgdHJhY2sgd2hldGhlciB0aGUgbW91c2UgaXMgY3VycmVudGx5IGhlbGQgZG93bi5cbiAgICAgICAgLy8gVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYW4gaXRlbSBpbiB0aGUgbGlzdCwgYnV0IGhvbGRzIHRoZSBtb3VzZVxuICAgICAgICAvLyBkb3duIGxvbmcgZW5vdWdoIGZvciB0aGUgbGlzdCB0byBkaXNhcHBlYXIgKGJlY2F1c2UgdGhlIGJsdXIgZXZlbnQgZmlyZXMgb24gdGhlIGlucHV0KVxuICAgICAgICAvLyB0aGlzLmlzTW91c2VEb3duIGlzIHVzZWQgaW4gdGhlIGJsdXIgaGFuZGxlciBvbiB0aGUgaW5wdXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJsdXIgZXZlbnQgc2hvdWxkXG4gICAgICAgIC8vIHRyaWdnZXIgaGlkaW5nIHRoZSBtZW51LlxuICAgICAgICBjb25zdCBvbk1vdXNlRG93biA9ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gZXZlbnQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgICAvLyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgb3IgdGhlIGFjdGl2ZUVsZW1lbnQgaXMgd2l0aGluIGEgZG93bnNoaWZ0IG5vZGVcbiAgICAgICAgICAvLyB0aGVuIHdlIGRvbid0IHdhbnQgdG8gcmVzZXQgZG93bnNoaWZ0XG4gICAgICAgICAgY29uc3QgY29udGV4dFdpdGhpbkRvd25zaGlmdCA9IHRhcmdldFdpdGhpbkRvd25zaGlmdChldmVudC50YXJnZXQsIFt0aGlzLl9yb290Tm9kZSwgdGhpcy5fbWVudU5vZGVdLCB0aGlzLnByb3BzLmVudmlyb25tZW50KTtcbiAgICAgICAgICBpZiAoIWNvbnRleHRXaXRoaW5Eb3duc2hpZnQgJiYgdGhpcy5nZXRTdGF0ZSgpLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5yZXNldCh7XG4gICAgICAgICAgICAgIHR5cGU6IG1vdXNlVXBcbiAgICAgICAgICAgIH0sICgpID0+IHRoaXMucHJvcHMub25PdXRlckNsaWNrKHRoaXMuZ2V0U3RhdGVBbmRIZWxwZXJzKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRvdWNoaW5nIGFuIGVsZW1lbnQgaW4gaU9TIGdpdmVzIGZvY3VzIGFuZCBob3ZlciBzdGF0ZXMsIGJ1dCB0b3VjaGluZyBvdXQgb2ZcbiAgICAgICAgLy8gdGhlIGVsZW1lbnQgd2lsbCByZW1vdmUgaG92ZXIsIGFuZCBwZXJzaXN0IHRoZSBmb2N1cyBzdGF0ZSwgcmVzdWx0aW5nIGluIHRoZVxuICAgICAgICAvLyBibHVyIGV2ZW50IG5vdCBiZWluZyB0cmlnZ2VyZWQuXG4gICAgICAgIC8vIHRoaXMuaXNUb3VjaE1vdmUgaGVscHMgdXMgdHJhY2sgd2hldGhlciB0aGUgdXNlciBpcyB0YXBwaW5nIG9yIHN3aXBpbmcgb24gYSB0b3VjaCBzY3JlZW4uXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIHRhcHMgb3V0c2lkZSBvZiBEb3duc2hpZnQsIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHJlc2V0LFxuICAgICAgICAvLyBidXQgbm90IGlmIHRoZSB1c2VyIGlzIHN3aXBpbmdcbiAgICAgICAgY29uc3Qgb25Ub3VjaFN0YXJ0ID0gKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNUb3VjaE1vdmUgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25Ub3VjaE1vdmUgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1RvdWNoTW92ZSA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uVG91Y2hFbmQgPSBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dFdpdGhpbkRvd25zaGlmdCA9IHRhcmdldFdpdGhpbkRvd25zaGlmdChldmVudC50YXJnZXQsIFt0aGlzLl9yb290Tm9kZSwgdGhpcy5fbWVudU5vZGVdLCB0aGlzLnByb3BzLmVudmlyb25tZW50LCBmYWxzZSk7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzVG91Y2hNb3ZlICYmICFjb250ZXh0V2l0aGluRG93bnNoaWZ0ICYmIHRoaXMuZ2V0U3RhdGUoKS5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoe1xuICAgICAgICAgICAgICB0eXBlOiB0b3VjaEVuZFxuICAgICAgICAgICAgfSwgKCkgPT4gdGhpcy5wcm9wcy5vbk91dGVyQ2xpY2sodGhpcy5nZXRTdGF0ZUFuZEhlbHBlcnMoKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGVudmlyb25tZW50XG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBlbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93bik7XG4gICAgICAgIGVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgICAgICBlbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgICAgICAgZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUpO1xuICAgICAgICBlbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQpO1xuICAgICAgICB0aGlzLmNsZWFudXAgPSAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbnRlcm5hbENsZWFyVGltZW91dHMoKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cy5jYW5jZWwoKTtcbiAgICAgICAgICBlbnZpcm9ubWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbk1vdXNlRG93bik7XG4gICAgICAgICAgZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIG9uVG91Y2hTdGFydCk7XG4gICAgICAgICAgZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgb25Ub3VjaE1vdmUpO1xuICAgICAgICAgIGVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHNob3VsZFNjcm9sbChwcmV2U3RhdGUsIHByZXZQcm9wcykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiBjdXJyZW50SGlnaGxpZ2h0ZWRJbmRleFxuICAgICAgfSA9IHRoaXMucHJvcHMuaGlnaGxpZ2h0ZWRJbmRleCA9PT0gdW5kZWZpbmVkID8gdGhpcy5nZXRTdGF0ZSgpIDogdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogcHJldkhpZ2hsaWdodGVkSW5kZXhcbiAgICAgIH0gPSBwcmV2UHJvcHMuaGlnaGxpZ2h0ZWRJbmRleCA9PT0gdW5kZWZpbmVkID8gcHJldlN0YXRlIDogcHJldlByb3BzO1xuICAgICAgY29uc3Qgc2Nyb2xsV2hlbk9wZW4gPSBjdXJyZW50SGlnaGxpZ2h0ZWRJbmRleCAmJiB0aGlzLmdldFN0YXRlKCkuaXNPcGVuICYmICFwcmV2U3RhdGUuaXNPcGVuO1xuICAgICAgY29uc3Qgc2Nyb2xsV2hlbk5hdmlnYXRpbmcgPSBjdXJyZW50SGlnaGxpZ2h0ZWRJbmRleCAhPT0gcHJldkhpZ2hsaWdodGVkSW5kZXg7XG4gICAgICByZXR1cm4gc2Nyb2xsV2hlbk9wZW4gfHwgc2Nyb2xsV2hlbk5hdmlnYXRpbmc7XG4gICAgfVxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFsaWRhdGVDb250cm9sbGVkVW5jaGFuZ2VkKHRoaXMuc3RhdGUsIHByZXZQcm9wcywgdGhpcy5wcm9wcyk7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAocmVhY3QtbmF0aXZlKSAqL1xuICAgICAgICBpZiAodGhpcy5nZXRNZW51UHJvcHMuY2FsbGVkICYmICF0aGlzLmdldE1lbnVQcm9wcy5zdXBwcmVzc1JlZkVycm9yKSB7XG4gICAgICAgICAgdmFsaWRhdGVHZXRNZW51UHJvcHNDYWxsZWRDb3JyZWN0bHkodGhpcy5fbWVudU5vZGUsIHRoaXMuZ2V0TWVudVByb3BzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ29udHJvbGxlZFByb3AodGhpcy5wcm9wcywgJ3NlbGVjdGVkSXRlbScpICYmIHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtQ2hhbmdlZChwcmV2UHJvcHMuc2VsZWN0ZWRJdGVtLCB0aGlzLnByb3BzLnNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNldFN0YXRlKHtcbiAgICAgICAgICB0eXBlOiBjb250cm9sbGVkUHJvcFVwZGF0ZWRTZWxlY3RlZEl0ZW0sXG4gICAgICAgICAgaW5wdXRWYWx1ZTogdGhpcy5wcm9wcy5pdGVtVG9TdHJpbmcodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmF2b2lkU2Nyb2xsaW5nICYmIHRoaXMuc2hvdWxkU2Nyb2xsKHByZXZTdGF0ZSwgcHJldlByb3BzKSkge1xuICAgICAgICB0aGlzLnNjcm9sbEhpZ2hsaWdodGVkSXRlbUludG9WaWV3KCk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlIChyZWFjdC1uYXRpdmUpICovXG4gICAgICB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5jbGVhbnVwKCk7IC8vIGF2b2lkcyBtZW1vcnkgbGVha1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdW53cmFwQXJyYXkodGhpcy5wcm9wcy5jaGlsZHJlbiwgbm9vcCk7XG4gICAgICAvLyBiZWNhdXNlIHRoZSBpdGVtcyBhcmUgcmVyZW5kZXJlZCBldmVyeSB0aW1lIHdlIGNhbGwgdGhlIGNoaWxkcmVuXG4gICAgICAvLyB3ZSBjbGVhciB0aGlzIG91dCBlYWNoIHJlbmRlciBhbmQgaXQgd2lsbCBiZSBwb3B1bGF0ZWQgYWdhaW4gYXNcbiAgICAgIC8vIGdldEl0ZW1Qcm9wcyBpcyBjYWxsZWQuXG4gICAgICB0aGlzLmNsZWFySXRlbXMoKTtcbiAgICAgIC8vIHdlIHJlc2V0IHRoaXMgc28gd2Uga25vdyB3aGV0aGVyIHRoZSB1c2VyIGNhbGxzIGdldFJvb3RQcm9wcyBkdXJpbmdcbiAgICAgIC8vIHRoaXMgcmVuZGVyLiBJZiB0aGV5IGRvIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyxcbiAgICAgIC8vIGlmIHRoZXkgZG9uJ3QgdGhlbiB3ZSBuZWVkIHRvIGNsb25lIHRoZSBlbGVtZW50IHRoZXkgcmV0dXJuIGFuZFxuICAgICAgLy8gYXBwbHkgdGhlIHByb3BzIGZvciB0aGVtLlxuICAgICAgdGhpcy5nZXRSb290UHJvcHMuY2FsbGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmdldFJvb3RQcm9wcy5yZWZLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmdldFJvb3RQcm9wcy5zdXBwcmVzc1JlZkVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgLy8gd2UgZG8gc29tZXRoaW5nIHNpbWlsYXIgZm9yIGdldE1lbnVQcm9wc1xuICAgICAgdGhpcy5nZXRNZW51UHJvcHMuY2FsbGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmdldE1lbnVQcm9wcy5yZWZLZXkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmdldE1lbnVQcm9wcy5zdXBwcmVzc1JlZkVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgLy8gd2UgZG8gc29tZXRoaW5nIHNpbWlsYXIgZm9yIGdldExhYmVsUHJvcHNcbiAgICAgIHRoaXMuZ2V0TGFiZWxQcm9wcy5jYWxsZWQgPSBmYWxzZTtcbiAgICAgIC8vIGFuZCBzb21ldGhpbmcgc2ltaWxhciBmb3IgZ2V0SW5wdXRQcm9wc1xuICAgICAgdGhpcy5nZXRJbnB1dFByb3BzLmNhbGxlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgZWxlbWVudCA9IHVud3JhcEFycmF5KGNoaWxkcmVuKHRoaXMuZ2V0U3RhdGVBbmRIZWxwZXJzKCkpKTtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmdldFJvb3RQcm9wcy5jYWxsZWQgfHwgdGhpcy5wcm9wcy5zdXBwcmVzc1JlZkVycm9yKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLmdldFJvb3RQcm9wcy5zdXBwcmVzc1JlZkVycm9yICYmICF0aGlzLnByb3BzLnN1cHByZXNzUmVmRXJyb3IpIHtcbiAgICAgICAgICB2YWxpZGF0ZUdldFJvb3RQcm9wc0NhbGxlZENvcnJlY3RseShlbGVtZW50LCB0aGlzLmdldFJvb3RQcm9wcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICB9IGVsc2UgaWYgKGlzRE9NRWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAvLyB0aGV5IGRpZG4ndCBhcHBseSB0aGUgcm9vdCBwcm9wcywgYnV0IHdlIGNhbiBjbG9uZVxuICAgICAgICAvLyB0aGlzIGFuZCBhcHBseSB0aGUgcHJvcHMgb3Vyc2VsdmVzXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovY2xvbmVFbGVtZW50KGVsZW1lbnQsIHRoaXMuZ2V0Um9vdFByb3BzKGdldEVsZW1lbnRQcm9wcyhlbGVtZW50KSkpO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgLy8gdGhleSBkaWRuJ3QgYXBwbHkgdGhlIHJvb3QgcHJvcHMsIGJ1dCB0aGV5IG5lZWQgdG9cbiAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNhbid0IHF1ZXJ5IGFyb3VuZCB0aGUgYXV0b2NvbXBsZXRlXG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkb3duc2hpZnQ6IElmIHlvdSByZXR1cm4gYSBub24tRE9NIGVsZW1lbnQsIHlvdSBtdXN0IGFwcGx5IHRoZSBnZXRSb290UHJvcHMgZnVuY3Rpb24nKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIERvd25zaGlmdC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXg6IG51bGwsXG4gICAgZGVmYXVsdElzT3BlbjogZmFsc2UsXG4gICAgZ2V0QTExeVN0YXR1c01lc3NhZ2U6IGdldEExMXlTdGF0dXNNZXNzYWdlJDEsXG4gICAgaXRlbVRvU3RyaW5nOiBpID0+IHtcbiAgICAgIGlmIChpID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNQbGFpbk9iamVjdChpKSAmJiAhaS5oYXNPd25Qcm9wZXJ0eSgndG9TdHJpbmcnKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oJ2Rvd25zaGlmdDogQW4gb2JqZWN0IHdhcyBwYXNzZWQgdG8gdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYGl0ZW1Ub1N0cmluZ2AuIFlvdSBzaG91bGQgcHJvYmFibHkgcHJvdmlkZSB5b3VyIG93biBgaXRlbVRvU3RyaW5nYCBpbXBsZW1lbnRhdGlvbi4gUGxlYXNlIHJlZmVyIHRvIHRoZSBgaXRlbVRvU3RyaW5nYCBBUEkgZG9jdW1lbnRhdGlvbi4nLCAnVGhlIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQ6JywgaSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKGkpO1xuICAgIH0sXG4gICAgb25TdGF0ZUNoYW5nZTogbm9vcCxcbiAgICBvbklucHV0VmFsdWVDaGFuZ2U6IG5vb3AsXG4gICAgb25Vc2VyQWN0aW9uOiBub29wLFxuICAgIG9uQ2hhbmdlOiBub29wLFxuICAgIG9uU2VsZWN0OiBub29wLFxuICAgIG9uT3V0ZXJDbGljazogbm9vcCxcbiAgICBzZWxlY3RlZEl0ZW1DaGFuZ2VkOiAocHJldkl0ZW0sIGl0ZW0pID0+IHByZXZJdGVtICE9PSBpdGVtLFxuICAgIGVudmlyb25tZW50OiAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAoc3NyKSAqL1xuICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8ge30gOiB3aW5kb3csXG4gICAgc3RhdGVSZWR1Y2VyOiAoc3RhdGUsIHN0YXRlVG9TZXQpID0+IHN0YXRlVG9TZXQsXG4gICAgc3VwcHJlc3NSZWZFcnJvcjogZmFsc2UsXG4gICAgc2Nyb2xsSW50b1ZpZXdcbiAgfTtcbiAgRG93bnNoaWZ0LnN0YXRlQ2hhbmdlVHlwZXMgPSBzdGF0ZUNoYW5nZVR5cGVzJDM7XG4gIHJldHVybiBEb3duc2hpZnQ7XG59KSgpO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRG93bnNoaWZ0LnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5mdW5jLFxuICBkZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgZGVmYXVsdElzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIGluaXRpYWxIaWdobGlnaHRlZEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICBpbml0aWFsU2VsZWN0ZWRJdGVtOiBQcm9wVHlwZXMuYW55LFxuICBpbml0aWFsSW5wdXRWYWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaW5pdGlhbElzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIGdldEExMXlTdGF0dXNNZXNzYWdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXRlbVRvU3RyaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU3RhdGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbklucHV0VmFsdWVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblVzZXJBY3Rpb246IFByb3BUeXBlcy5mdW5jLFxuICBvbk91dGVyQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzZWxlY3RlZEl0ZW1DaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3RhdGVSZWR1Y2VyOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXRlbUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZW52aXJvbm1lbnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZG9jdW1lbnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBnZXRFbGVtZW50QnlJZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBhY3RpdmVFbGVtZW50OiBQcm9wVHlwZXMuYW55LFxuICAgICAgYm9keTogUHJvcFR5cGVzLmFueVxuICAgIH0pXG4gIH0pLFxuICBzdXBwcmVzc1JlZkVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2Nyb2xsSW50b1ZpZXc6IFByb3BUeXBlcy5mdW5jLFxuICAvLyB0aGluZ3Mgd2Uga2VlcCBpbiBzdGF0ZSBmb3IgdW5jb250cm9sbGVkIGNvbXBvbmVudHNcbiAgLy8gYnV0IGNhbiBhY2NlcHQgYXMgcHJvcHMgZm9yIGNvbnRyb2xsZWQgY29tcG9uZW50c1xuICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnVzZWQtcHJvcC10eXBlcyAqL1xuICBzZWxlY3RlZEl0ZW06IFByb3BUeXBlcy5hbnksXG4gIGlzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIGlucHV0VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZ2hsaWdodGVkSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGxhYmVsSWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlucHV0SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG1lbnVJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZ2V0SXRlbUlkOiBQcm9wVHlwZXMuZnVuY1xuICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0L25vLXVudXNlZC1wcm9wLXR5cGVzICovXG59IDogdm9pZCAwO1xudmFyIERvd25zaGlmdCQxID0gRG93bnNoaWZ0O1xuZnVuY3Rpb24gdmFsaWRhdGVHZXRNZW51UHJvcHNDYWxsZWRDb3JyZWN0bHkobm9kZSwgX3JlZjMpIHtcbiAgbGV0IHtcbiAgICByZWZLZXlcbiAgfSA9IF9yZWYzO1xuICBpZiAoIW5vZGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoYGRvd25zaGlmdDogVGhlIHJlZiBwcm9wIFwiJHtyZWZLZXl9XCIgZnJvbSBnZXRNZW51UHJvcHMgd2FzIG5vdCBhcHBsaWVkIGNvcnJlY3RseSBvbiB5b3VyIG1lbnUgZWxlbWVudC5gKTtcbiAgfVxufVxuZnVuY3Rpb24gdmFsaWRhdGVHZXRSb290UHJvcHNDYWxsZWRDb3JyZWN0bHkoZWxlbWVudCwgX3JlZjQpIHtcbiAgbGV0IHtcbiAgICByZWZLZXlcbiAgfSA9IF9yZWY0O1xuICBjb25zdCByZWZLZXlTcGVjaWZpZWQgPSByZWZLZXkgIT09ICdyZWYnO1xuICBjb25zdCBpc0NvbXBvc2l0ZSA9ICFpc0RPTUVsZW1lbnQoZWxlbWVudCk7XG4gIGlmIChpc0NvbXBvc2l0ZSAmJiAhcmVmS2V5U3BlY2lmaWVkICYmICFpc0ZvcndhcmRSZWYoZWxlbWVudCkpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoJ2Rvd25zaGlmdDogWW91IHJldHVybmVkIGEgbm9uLURPTSBlbGVtZW50LiBZb3UgbXVzdCBzcGVjaWZ5IGEgcmVmS2V5IGluIGdldFJvb3RQcm9wcycpO1xuICB9IGVsc2UgaWYgKCFpc0NvbXBvc2l0ZSAmJiByZWZLZXlTcGVjaWZpZWQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoYGRvd25zaGlmdDogWW91IHJldHVybmVkIGEgRE9NIGVsZW1lbnQuIFlvdSBzaG91bGQgbm90IHNwZWNpZnkgYSByZWZLZXkgaW4gZ2V0Um9vdFByb3BzLiBZb3Ugc3BlY2lmaWVkIFwiJHtyZWZLZXl9XCJgKTtcbiAgfVxuICBpZiAoIWlzRm9yd2FyZFJlZihlbGVtZW50KSAmJiAhZ2V0RWxlbWVudFByb3BzKGVsZW1lbnQpW3JlZktleV0pIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUuZXJyb3IoYGRvd25zaGlmdDogWW91IG11c3QgYXBwbHkgdGhlIHJlZiBwcm9wIFwiJHtyZWZLZXl9XCIgZnJvbSBnZXRSb290UHJvcHMgb250byB5b3VyIHJvb3QgZWxlbWVudC5gKTtcbiAgfVxufVxuXG5jb25zdCBkcm9wZG93bkRlZmF1bHRTdGF0ZVZhbHVlcyA9IHtcbiAgaGlnaGxpZ2h0ZWRJbmRleDogLTEsXG4gIGlzT3BlbjogZmFsc2UsXG4gIHNlbGVjdGVkSXRlbTogbnVsbCxcbiAgaW5wdXRWYWx1ZTogJydcbn07XG5mdW5jdGlvbiBjYWxsT25DaGFuZ2VQcm9wcyhhY3Rpb24sIHN0YXRlLCBuZXdTdGF0ZSkge1xuICBjb25zdCB7XG4gICAgcHJvcHMsXG4gICAgdHlwZVxuICB9ID0gYWN0aW9uO1xuICBjb25zdCBjaGFuZ2VzID0ge307XG4gIE9iamVjdC5rZXlzKHN0YXRlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaW52b2tlT25DaGFuZ2VIYW5kbGVyKGtleSwgYWN0aW9uLCBzdGF0ZSwgbmV3U3RhdGUpO1xuICAgIGlmIChuZXdTdGF0ZVtrZXldICE9PSBzdGF0ZVtrZXldKSB7XG4gICAgICBjaGFuZ2VzW2tleV0gPSBuZXdTdGF0ZVtrZXldO1xuICAgIH1cbiAgfSk7XG4gIGlmIChwcm9wcy5vblN0YXRlQ2hhbmdlICYmIE9iamVjdC5rZXlzKGNoYW5nZXMpLmxlbmd0aCkge1xuICAgIHByb3BzLm9uU3RhdGVDaGFuZ2Uoe1xuICAgICAgdHlwZSxcbiAgICAgIC4uLmNoYW5nZXNcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gaW52b2tlT25DaGFuZ2VIYW5kbGVyKGtleSwgYWN0aW9uLCBzdGF0ZSwgbmV3U3RhdGUpIHtcbiAgY29uc3Qge1xuICAgIHByb3BzLFxuICAgIHR5cGVcbiAgfSA9IGFjdGlvbjtcbiAgY29uc3QgaGFuZGxlciA9IGBvbiR7Y2FwaXRhbGl6ZVN0cmluZyhrZXkpfUNoYW5nZWA7XG4gIGlmIChwcm9wc1toYW5kbGVyXSAmJiBuZXdTdGF0ZVtrZXldICE9PSB1bmRlZmluZWQgJiYgbmV3U3RhdGVba2V5XSAhPT0gc3RhdGVba2V5XSkge1xuICAgIHByb3BzW2hhbmRsZXJdKHtcbiAgICAgIHR5cGUsXG4gICAgICAuLi5uZXdTdGF0ZVxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBzdGF0ZSByZWR1Y2VyIHRoYXQgcmV0dXJucyB0aGUgY2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcyBzdGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhIGFjdGlvbiB3aXRoIGNoYW5nZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBjaGFuZ2VzLlxuICovXG5mdW5jdGlvbiBzdGF0ZVJlZHVjZXIocywgYSkge1xuICByZXR1cm4gYS5jaGFuZ2VzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBtZXNzYWdlIHRvIGJlIGFkZGVkIHRvIGFyaWEtbGl2ZSByZWdpb24gd2hlbiBpdGVtIGlzIHNlbGVjdGVkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZWxlY3Rpb25QYXJhbWV0ZXJzIFBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYTExeSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBnZXRBMTF5U2VsZWN0aW9uTWVzc2FnZShzZWxlY3Rpb25QYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHtcbiAgICBzZWxlY3RlZEl0ZW0sXG4gICAgaXRlbVRvU3RyaW5nOiBpdGVtVG9TdHJpbmdMb2NhbFxuICB9ID0gc2VsZWN0aW9uUGFyYW1ldGVycztcbiAgcmV0dXJuIHNlbGVjdGVkSXRlbSA/IGAke2l0ZW1Ub1N0cmluZ0xvY2FsKHNlbGVjdGVkSXRlbSl9IGhhcyBiZWVuIHNlbGVjdGVkLmAgOiAnJztcbn1cblxuLyoqXG4gKiBEZWJvdW5jZWQgY2FsbCBmb3IgdXBkYXRpbmcgdGhlIGExMXkgbWVzc2FnZS5cbiAqL1xuY29uc3QgdXBkYXRlQTExeVN0YXR1cyA9IGRlYm91bmNlKChnZXRBMTF5TWVzc2FnZSwgZG9jdW1lbnQpID0+IHtcbiAgc2V0U3RhdHVzKGdldEExMXlNZXNzYWdlKCksIGRvY3VtZW50KTtcbn0sIDIwMCk7XG5cbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5jb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IHVzZUxheW91dEVmZmVjdCA6IHVzZUVmZmVjdDtcbmZ1bmN0aW9uIHVzZUVsZW1lbnRJZHMoX3JlZikge1xuICBsZXQge1xuICAgIGlkID0gYGRvd25zaGlmdC0ke2dlbmVyYXRlSWQoKX1gLFxuICAgIGxhYmVsSWQsXG4gICAgbWVudUlkLFxuICAgIGdldEl0ZW1JZCxcbiAgICB0b2dnbGVCdXR0b25JZCxcbiAgICBpbnB1dElkXG4gIH0gPSBfcmVmO1xuICBjb25zdCBlbGVtZW50SWRzUmVmID0gdXNlUmVmKHtcbiAgICBsYWJlbElkOiBsYWJlbElkIHx8IGAke2lkfS1sYWJlbGAsXG4gICAgbWVudUlkOiBtZW51SWQgfHwgYCR7aWR9LW1lbnVgLFxuICAgIGdldEl0ZW1JZDogZ2V0SXRlbUlkIHx8IChpbmRleCA9PiBgJHtpZH0taXRlbS0ke2luZGV4fWApLFxuICAgIHRvZ2dsZUJ1dHRvbklkOiB0b2dnbGVCdXR0b25JZCB8fCBgJHtpZH0tdG9nZ2xlLWJ1dHRvbmAsXG4gICAgaW5wdXRJZDogaW5wdXRJZCB8fCBgJHtpZH0taW5wdXRgXG4gIH0pO1xuICByZXR1cm4gZWxlbWVudElkc1JlZi5jdXJyZW50O1xufVxuZnVuY3Rpb24gZ2V0SXRlbUluZGV4KGluZGV4LCBpdGVtLCBpdGVtcykge1xuICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBpdGVtcy5pbmRleE9mKGl0ZW0pO1xufVxuZnVuY3Rpb24gaXRlbVRvU3RyaW5nKGl0ZW0pIHtcbiAgcmV0dXJuIGl0ZW0gPyBTdHJpbmcoaXRlbSkgOiAnJztcbn1cbmZ1bmN0aW9uIGlzQWNjZXB0ZWRDaGFyYWN0ZXJLZXkoa2V5KSB7XG4gIHJldHVybiAvXlxcU3sxfSQvLnRlc3Qoa2V5KTtcbn1cbmZ1bmN0aW9uIGNhcGl0YWxpemVTdHJpbmcoc3RyaW5nKSB7XG4gIHJldHVybiBgJHtzdHJpbmcuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKX0ke3N0cmluZy5zbGljZSgxKX1gO1xufVxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbCkge1xuICBjb25zdCByZWYgPSB1c2VSZWYodmFsKTtcbiAgLy8gdGVjaG5pY2FsbHkgdGhpcyBpcyBub3QgXCJjb25jdXJyZW50IG1vZGUgc2FmZVwiIGJlY2F1c2Ugd2UncmUgbWFuaXB1bGF0aW5nXG4gIC8vIHRoZSB2YWx1ZSBkdXJpbmcgcmVuZGVyIChzbyBpdCdzIG5vdCBpZGVtcG90ZW50KS4gSG93ZXZlciwgdGhlIHBsYWNlcyB0aGlzXG4gIC8vIGhvb2sgaXMgdXNlZCBpcyB0byBzdXBwb3J0IG1lbW9pemluZyBjYWxsYmFja3Mgd2hpY2ggd2lsbCBiZSBjYWxsZWRcbiAgLy8gKmR1cmluZyogcmVuZGVyLCBzbyB3ZSBuZWVkIHRoZSBsYXRlc3QgdmFsdWVzICpkdXJpbmcqIHJlbmRlci5cbiAgLy8gSWYgbm90IGZvciB0aGlzLCB0aGVuIHdlJ2QgcHJvYmFibHkgd2FudCB0byB1c2UgdXNlTGF5b3V0RWZmZWN0IGluc3RlYWQuXG4gIHJlZi5jdXJyZW50ID0gdmFsO1xuICByZXR1cm4gcmVmO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBjb250cm9sbGVkIHN0YXRlIHVzaW5nIGEgdGhlIHByZXZpb3VzIHN0YXRlLCBwcm9wcyxcbiAqIHR3byByZWR1Y2Vycywgb25lIGZyb20gZG93bnNoaWZ0IGFuZCBhbiBvcHRpb25hbCBvbmUgZnJvbSB0aGUgdXNlci5cbiAqIEFsc28gY2FsbHMgdGhlIG9uQ2hhbmdlIGhhbmRsZXJzIGZvciBzdGF0ZSB2YWx1ZXMgdGhhdCBoYXZlIGNoYW5nZWQuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVkdWNlciBSZWR1Y2VyIGZ1bmN0aW9uIGZyb20gZG93bnNoaWZ0LlxuICogQHBhcmFtIHtPYmplY3R9IGluaXRpYWxTdGF0ZSBJbml0aWFsIHN0YXRlIG9mIHRoZSBob29rLlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFRoZSBob29rIHByb3BzLlxuICogQHJldHVybnMge0FycmF5fSBBbiBhcnJheSB3aXRoIHRoZSBzdGF0ZSBhbmQgYW4gYWN0aW9uIGRpc3BhdGNoZXIuXG4gKi9cbmZ1bmN0aW9uIHVzZUVuaGFuY2VkUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIHByb3BzKSB7XG4gIGNvbnN0IHByZXZTdGF0ZVJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBhY3Rpb25SZWYgPSB1c2VSZWYoKTtcbiAgY29uc3QgZW5oYW5jZWRSZWR1Y2VyID0gdXNlQ2FsbGJhY2soKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICBhY3Rpb25SZWYuY3VycmVudCA9IGFjdGlvbjtcbiAgICBzdGF0ZSA9IGdldFN0YXRlKHN0YXRlLCBhY3Rpb24ucHJvcHMpO1xuICAgIGNvbnN0IGNoYW5nZXMgPSByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gYWN0aW9uLnByb3BzLnN0YXRlUmVkdWNlcihzdGF0ZSwge1xuICAgICAgLi4uYWN0aW9uLFxuICAgICAgY2hhbmdlc1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgfSwgW3JlZHVjZXJdKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyKGVuaGFuY2VkUmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcbiAgY29uc3QgcHJvcHNSZWYgPSB1c2VMYXRlc3RSZWYocHJvcHMpO1xuICBjb25zdCBkaXNwYXRjaFdpdGhQcm9wcyA9IHVzZUNhbGxiYWNrKGFjdGlvbiA9PiBkaXNwYXRjaCh7XG4gICAgcHJvcHM6IHByb3BzUmVmLmN1cnJlbnQsXG4gICAgLi4uYWN0aW9uXG4gIH0pLCBbcHJvcHNSZWZdKTtcbiAgY29uc3QgYWN0aW9uID0gYWN0aW9uUmVmLmN1cnJlbnQ7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFjdGlvbiAmJiBwcmV2U3RhdGVSZWYuY3VycmVudCAmJiBwcmV2U3RhdGVSZWYuY3VycmVudCAhPT0gc3RhdGUpIHtcbiAgICAgIGNhbGxPbkNoYW5nZVByb3BzKGFjdGlvbiwgZ2V0U3RhdGUocHJldlN0YXRlUmVmLmN1cnJlbnQsIGFjdGlvbi5wcm9wcyksIHN0YXRlKTtcbiAgICB9XG4gICAgcHJldlN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgfSwgW3N0YXRlLCBwcm9wcywgYWN0aW9uXSk7XG4gIHJldHVybiBbc3RhdGUsIGRpc3BhdGNoV2l0aFByb3BzXTtcbn1cblxuLyoqXG4gKiBXcmFwcyB0aGUgdXNlRW5oYW5jZWRSZWR1Y2VyIGFuZCBhcHBsaWVzIHRoZSBjb250cm9sbGVkIHByb3AgdmFsdWVzIGJlZm9yZVxuICogcmV0dXJuaW5nIHRoZSBuZXcgc3RhdGUuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVkdWNlciBSZWR1Y2VyIGZ1bmN0aW9uIGZyb20gZG93bnNoaWZ0LlxuICogQHBhcmFtIHtPYmplY3R9IGluaXRpYWxTdGF0ZSBJbml0aWFsIHN0YXRlIG9mIHRoZSBob29rLlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFRoZSBob29rIHByb3BzLlxuICogQHJldHVybnMge0FycmF5fSBBbiBhcnJheSB3aXRoIHRoZSBzdGF0ZSBhbmQgYW4gYWN0aW9uIGRpc3BhdGNoZXIuXG4gKi9cbmZ1bmN0aW9uIHVzZUNvbnRyb2xsZWRSZWR1Y2VyJDEocmVkdWNlciwgaW5pdGlhbFN0YXRlLCBwcm9wcykge1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUVuaGFuY2VkUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIHByb3BzKTtcbiAgcmV0dXJuIFtnZXRTdGF0ZShzdGF0ZSwgcHJvcHMpLCBkaXNwYXRjaF07XG59XG5jb25zdCBkZWZhdWx0UHJvcHMkMyA9IHtcbiAgaXRlbVRvU3RyaW5nLFxuICBzdGF0ZVJlZHVjZXIsXG4gIGdldEExMXlTZWxlY3Rpb25NZXNzYWdlLFxuICBzY3JvbGxJbnRvVmlldyxcbiAgZW52aXJvbm1lbnQ6IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChzc3IpICovXG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8ge30gOiB3aW5kb3dcbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0VmFsdWUkMShwcm9wcywgcHJvcEtleSwgZGVmYXVsdFN0YXRlVmFsdWVzKSB7XG4gIGlmIChkZWZhdWx0U3RhdGVWYWx1ZXMgPT09IHZvaWQgMCkge1xuICAgIGRlZmF1bHRTdGF0ZVZhbHVlcyA9IGRyb3Bkb3duRGVmYXVsdFN0YXRlVmFsdWVzO1xuICB9XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHByb3BzW2BkZWZhdWx0JHtjYXBpdGFsaXplU3RyaW5nKHByb3BLZXkpfWBdO1xuICBpZiAoZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9XG4gIHJldHVybiBkZWZhdWx0U3RhdGVWYWx1ZXNbcHJvcEtleV07XG59XG5mdW5jdGlvbiBnZXRJbml0aWFsVmFsdWUkMShwcm9wcywgcHJvcEtleSwgZGVmYXVsdFN0YXRlVmFsdWVzKSB7XG4gIGlmIChkZWZhdWx0U3RhdGVWYWx1ZXMgPT09IHZvaWQgMCkge1xuICAgIGRlZmF1bHRTdGF0ZVZhbHVlcyA9IGRyb3Bkb3duRGVmYXVsdFN0YXRlVmFsdWVzO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGNvbnN0IGluaXRpYWxWYWx1ZSA9IHByb3BzW2Bpbml0aWFsJHtjYXBpdGFsaXplU3RyaW5nKHByb3BLZXkpfWBdO1xuICBpZiAoaW5pdGlhbFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gaW5pdGlhbFZhbHVlO1xuICB9XG4gIHJldHVybiBnZXREZWZhdWx0VmFsdWUkMShwcm9wcywgcHJvcEtleSwgZGVmYXVsdFN0YXRlVmFsdWVzKTtcbn1cbmZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZSQyKHByb3BzKSB7XG4gIGNvbnN0IHNlbGVjdGVkSXRlbSA9IGdldEluaXRpYWxWYWx1ZSQxKHByb3BzLCAnc2VsZWN0ZWRJdGVtJyk7XG4gIGNvbnN0IGlzT3BlbiA9IGdldEluaXRpYWxWYWx1ZSQxKHByb3BzLCAnaXNPcGVuJyk7XG4gIGNvbnN0IGhpZ2hsaWdodGVkSW5kZXggPSBnZXRJbml0aWFsVmFsdWUkMShwcm9wcywgJ2hpZ2hsaWdodGVkSW5kZXgnKTtcbiAgY29uc3QgaW5wdXRWYWx1ZSA9IGdldEluaXRpYWxWYWx1ZSQxKHByb3BzLCAnaW5wdXRWYWx1ZScpO1xuICByZXR1cm4ge1xuICAgIGhpZ2hsaWdodGVkSW5kZXg6IGhpZ2hsaWdodGVkSW5kZXggPCAwICYmIHNlbGVjdGVkSXRlbSAmJiBpc09wZW4gPyBwcm9wcy5pdGVtcy5pbmRleE9mKHNlbGVjdGVkSXRlbSkgOiBoaWdobGlnaHRlZEluZGV4LFxuICAgIGlzT3BlbixcbiAgICBzZWxlY3RlZEl0ZW0sXG4gICAgaW5wdXRWYWx1ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0SGlnaGxpZ2h0ZWRJbmRleE9uT3Blbihwcm9wcywgc3RhdGUsIG9mZnNldCkge1xuICBjb25zdCB7XG4gICAgaXRlbXMsXG4gICAgaW5pdGlhbEhpZ2hsaWdodGVkSW5kZXgsXG4gICAgZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXhcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7XG4gICAgc2VsZWN0ZWRJdGVtLFxuICAgIGhpZ2hsaWdodGVkSW5kZXhcbiAgfSA9IHN0YXRlO1xuICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gaW5pdGlhbEhpZ2hsaWdodGVkSW5kZXggd2lsbCBnaXZlIHZhbHVlIHRvIGhpZ2hsaWdodGVkSW5kZXggb24gaW5pdGlhbCBzdGF0ZSBvbmx5LlxuICBpZiAoaW5pdGlhbEhpZ2hsaWdodGVkSW5kZXggIT09IHVuZGVmaW5lZCAmJiBoaWdobGlnaHRlZEluZGV4ID09PSBpbml0aWFsSGlnaGxpZ2h0ZWRJbmRleCkge1xuICAgIHJldHVybiBpbml0aWFsSGlnaGxpZ2h0ZWRJbmRleDtcbiAgfVxuICBpZiAoZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBkZWZhdWx0SGlnaGxpZ2h0ZWRJbmRleDtcbiAgfVxuICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmluZGV4T2Yoc2VsZWN0ZWRJdGVtKTtcbiAgfVxuICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBvZmZzZXQgPCAwID8gaXRlbXMubGVuZ3RoIC0gMSA6IDA7XG59XG5cbi8qKlxuICogUmV1c2UgdGhlIG1vdmVtZW50IHRyYWNraW5nIG9mIG1vdXNlIGFuZCB0b3VjaCBldmVudHMuXG4gKlxuICogQHBhcmFtIHtib29sZWFufSBpc09wZW4gV2hldGhlciB0aGUgZHJvcGRvd24gaXMgb3BlbiBvciBub3QuXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGRvd25zaGlmdEVsZW1lbnRSZWZzIERvd25zaGlmdCBlbGVtZW50IHJlZnMgdG8gdHJhY2sgbW92ZW1lbnQgKHRvZ2dsZUJ1dHRvbiwgbWVudSBldGMuKVxuICogQHBhcmFtIHtPYmplY3R9IGVudmlyb25tZW50IEVudmlyb25tZW50IHdoZXJlIGNvbXBvbmVudC9ob29rIGV4aXN0cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZUJsdXIgSGFuZGxlciBvbiBibHVyIGZyb20gbW91c2Ugb3IgdG91Y2guXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZWYgY29udGFpbmluZyB3aGV0aGVyIG1vdXNlRG93biBvciB0b3VjaE1vdmUgZXZlbnQgaXMgaGFwcGVuaW5nXG4gKi9cbmZ1bmN0aW9uIHVzZU1vdXNlQW5kVG91Y2hUcmFja2VyKGlzT3BlbiwgZG93bnNoaWZ0RWxlbWVudFJlZnMsIGVudmlyb25tZW50LCBoYW5kbGVCbHVyKSB7XG4gIGNvbnN0IG1vdXNlQW5kVG91Y2hUcmFja2Vyc1JlZiA9IHVzZVJlZih7XG4gICAgaXNNb3VzZURvd246IGZhbHNlLFxuICAgIGlzVG91Y2hNb3ZlOiBmYWxzZVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBUaGUgc2FtZSBzdHJhdGVneSBmb3IgY2hlY2tpbmcgaWYgYSBjbGljayBvY2N1cnJlZCBpbnNpZGUgb3Igb3V0c2lkZSBkb3duc2lmdFxuICAgIC8vIGFzIGluIGRvd25zaGlmdC5qcy5cbiAgICBjb25zdCBvbk1vdXNlRG93biA9ICgpID0+IHtcbiAgICAgIG1vdXNlQW5kVG91Y2hUcmFja2Vyc1JlZi5jdXJyZW50LmlzTW91c2VEb3duID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IG9uTW91c2VVcCA9IGV2ZW50ID0+IHtcbiAgICAgIG1vdXNlQW5kVG91Y2hUcmFja2Vyc1JlZi5jdXJyZW50LmlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgICBpZiAoaXNPcGVuICYmICF0YXJnZXRXaXRoaW5Eb3duc2hpZnQoZXZlbnQudGFyZ2V0LCBkb3duc2hpZnRFbGVtZW50UmVmcy5tYXAocmVmID0+IHJlZi5jdXJyZW50KSwgZW52aXJvbm1lbnQpKSB7XG4gICAgICAgIGhhbmRsZUJsdXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hTdGFydCA9ICgpID0+IHtcbiAgICAgIG1vdXNlQW5kVG91Y2hUcmFja2Vyc1JlZi5jdXJyZW50LmlzVG91Y2hNb3ZlID0gZmFsc2U7XG4gICAgfTtcbiAgICBjb25zdCBvblRvdWNoTW92ZSA9ICgpID0+IHtcbiAgICAgIG1vdXNlQW5kVG91Y2hUcmFja2Vyc1JlZi5jdXJyZW50LmlzVG91Y2hNb3ZlID0gdHJ1ZTtcbiAgICB9O1xuICAgIGNvbnN0IG9uVG91Y2hFbmQgPSBldmVudCA9PiB7XG4gICAgICBpZiAoaXNPcGVuICYmICFtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYuY3VycmVudC5pc1RvdWNoTW92ZSAmJiAhdGFyZ2V0V2l0aGluRG93bnNoaWZ0KGV2ZW50LnRhcmdldCwgZG93bnNoaWZ0RWxlbWVudFJlZnMubWFwKHJlZiA9PiByZWYuY3VycmVudCksIGVudmlyb25tZW50LCBmYWxzZSkpIHtcbiAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgfVxuICAgIH07XG4gICAgZW52aXJvbm1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Nb3VzZURvd24pO1xuICAgIGVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgIGVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBvblRvdWNoU3RhcnQpO1xuICAgIGVudmlyb25tZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlKTtcbiAgICBlbnZpcm9ubWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIG9uVG91Y2hFbmQpO1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Nb3VzZURvd24pO1xuICAgICAgZW52aXJvbm1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICBlbnZpcm9ubWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgICAgIGVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIG9uVG91Y2hNb3ZlKTtcbiAgICAgIGVudmlyb25tZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgb25Ub3VjaEVuZCk7XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc09wZW4sIGVudmlyb25tZW50XSk7XG4gIHJldHVybiBtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWY7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLW11dGFibGUtZXhwb3J0c1xubGV0IHVzZUdldHRlclByb3BzQ2FsbGVkQ2hlY2tlciA9ICgpID0+IG5vb3A7XG4vKipcbiAqIEN1c3RvbSBob29rIHRoYXQgY2hlY2tzIGlmIGdldHRlciBwcm9wcyBhcmUgY2FsbGVkIGNvcnJlY3RseS5cbiAqXG4gKiBAcGFyYW0gIHsuLi5hbnl9IHByb3BLZXlzIEdldHRlciBwcm9wIG5hbWVzIHRvIGJlIGhhbmRsZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFNldHRlciBmdW5jdGlvbiBjYWxsZWQgaW5zaWRlIGdldHRlciBwcm9wcyB0byBzZXQgY2FsbCBpbmZvcm1hdGlvbi5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHVzZUdldHRlclByb3BzQ2FsbGVkQ2hlY2tlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpc0luaXRpYWxNb3VudFJlZiA9IHVzZVJlZih0cnVlKTtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgcHJvcEtleXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBwcm9wS2V5c1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgY29uc3QgZ2V0dGVyUHJvcHNDYWxsZWRSZWYgPSB1c2VSZWYocHJvcEtleXMucmVkdWNlKChhY2MsIHByb3BLZXkpID0+IHtcbiAgICAgIGFjY1twcm9wS2V5XSA9IHt9O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSkpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBPYmplY3Qua2V5cyhnZXR0ZXJQcm9wc0NhbGxlZFJlZi5jdXJyZW50KS5mb3JFYWNoKHByb3BLZXkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wQ2FsbEluZm8gPSBnZXR0ZXJQcm9wc0NhbGxlZFJlZi5jdXJyZW50W3Byb3BLZXldO1xuICAgICAgICBpZiAoaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocHJvcENhbGxJbmZvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBkb3duc2hpZnQ6IFlvdSBmb3Jnb3QgdG8gY2FsbCB0aGUgJHtwcm9wS2V5fSBnZXR0ZXIgZnVuY3Rpb24gb24geW91ciBjb21wb25lbnQgLyBlbGVtZW50LmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc3VwcHJlc3NSZWZFcnJvcixcbiAgICAgICAgICByZWZLZXksXG4gICAgICAgICAgZWxlbWVudFJlZlxuICAgICAgICB9ID0gcHJvcENhbGxJbmZvO1xuICAgICAgICBpZiAoKCFlbGVtZW50UmVmIHx8ICFlbGVtZW50UmVmLmN1cnJlbnQpICYmICFzdXBwcmVzc1JlZkVycm9yKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBkb3duc2hpZnQ6IFRoZSByZWYgcHJvcCBcIiR7cmVmS2V5fVwiIGZyb20gJHtwcm9wS2V5fSB3YXMgbm90IGFwcGxpZWQgY29ycmVjdGx5IG9uIHlvdXIgZWxlbWVudC5gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0R2V0dGVyUHJvcENhbGxJbmZvID0gdXNlQ2FsbGJhY2soKHByb3BLZXksIHN1cHByZXNzUmVmRXJyb3IsIHJlZktleSwgZWxlbWVudFJlZikgPT4ge1xuICAgICAgZ2V0dGVyUHJvcHNDYWxsZWRSZWYuY3VycmVudFtwcm9wS2V5XSA9IHtcbiAgICAgICAgc3VwcHJlc3NSZWZFcnJvcixcbiAgICAgICAgcmVmS2V5LFxuICAgICAgICBlbGVtZW50UmVmXG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gc2V0R2V0dGVyUHJvcENhbGxJbmZvO1xuICB9O1xufVxuZnVuY3Rpb24gdXNlQTExeU1lc3NhZ2VTZXR0ZXIoZ2V0QTExeU1lc3NhZ2UsIGRlcGVuZGVuY3lBcnJheSwgX3JlZjIpIHtcbiAgbGV0IHtcbiAgICBpc0luaXRpYWxNb3VudCxcbiAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgIGl0ZW1zLFxuICAgIGVudmlyb25tZW50LFxuICAgIC4uLnJlc3RcbiAgfSA9IF9yZWYyO1xuICAvLyBTZXRzIGExMXkgc3RhdHVzIG1lc3NhZ2Ugb24gY2hhbmdlcyBpbiBzdGF0ZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0aWFsTW91bnQgfHwgZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXBkYXRlQTExeVN0YXR1cygoKSA9PiBnZXRBMTF5TWVzc2FnZSh7XG4gICAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgICAgaGlnaGxpZ2h0ZWRJdGVtOiBpdGVtc1toaWdobGlnaHRlZEluZGV4XSxcbiAgICAgIHJlc3VsdENvdW50OiBpdGVtcy5sZW5ndGgsXG4gICAgICAuLi5yZXN0XG4gICAgfSksIGVudmlyb25tZW50LmRvY3VtZW50KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIGRlcGVuZGVuY3lBcnJheSk7XG59XG5mdW5jdGlvbiB1c2VTY3JvbGxJbnRvVmlldyhfcmVmMykge1xuICBsZXQge1xuICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgaXNPcGVuLFxuICAgIGl0ZW1SZWZzLFxuICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4LFxuICAgIG1lbnVFbGVtZW50LFxuICAgIHNjcm9sbEludG9WaWV3OiBzY3JvbGxJbnRvVmlld1Byb3BcbiAgfSA9IF9yZWYzO1xuICAvLyB1c2VkIG5vdCB0byBzY3JvbGwgb24gaGlnaGxpZ2h0IGJ5IG1vdXNlLlxuICBjb25zdCBzaG91bGRTY3JvbGxSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIC8vIFNjcm9sbCBvbiBoaWdobGlnaHRlZCBpdGVtIGlmIGNoYW5nZSBjb21lcyBmcm9tIGtleWJvYXJkLlxuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaGlnaGxpZ2h0ZWRJbmRleCA8IDAgfHwgIWlzT3BlbiB8fCAhT2JqZWN0LmtleXMoaXRlbVJlZnMuY3VycmVudCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChzaG91bGRTY3JvbGxSZWYuY3VycmVudCA9PT0gZmFsc2UpIHtcbiAgICAgIHNob3VsZFNjcm9sbFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2Nyb2xsSW50b1ZpZXdQcm9wKGdldEl0ZW1Ob2RlRnJvbUluZGV4KGhpZ2hsaWdodGVkSW5kZXgpLCBtZW51RWxlbWVudCk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2hpZ2hsaWdodGVkSW5kZXhdKTtcbiAgcmV0dXJuIHNob3VsZFNjcm9sbFJlZjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1tdXRhYmxlLWV4cG9ydHNcbmxldCB1c2VDb250cm9sUHJvcHNWYWxpZGF0b3IgPSBub29wO1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHVzZUNvbnRyb2xQcm9wc1ZhbGlkYXRvciA9IF9yZWY0ID0+IHtcbiAgICBsZXQge1xuICAgICAgaXNJbml0aWFsTW91bnQsXG4gICAgICBwcm9wcyxcbiAgICAgIHN0YXRlXG4gICAgfSA9IF9yZWY0O1xuICAgIC8vIHVzZWQgZm9yIGNoZWNraW5nIHdoZW4gcHJvcHMgYXJlIG1vdmluZyBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkLlxuICAgIGNvbnN0IHByZXZQcm9wc1JlZiA9IHVzZVJlZihwcm9wcyk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc0luaXRpYWxNb3VudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YWxpZGF0ZUNvbnRyb2xsZWRVbmNoYW5nZWQoc3RhdGUsIHByZXZQcm9wc1JlZi5jdXJyZW50LCBwcm9wcyk7XG4gICAgICBwcmV2UHJvcHNSZWYuY3VycmVudCA9IHByb3BzO1xuICAgIH0sIFtzdGF0ZSwgcHJvcHMsIGlzSW5pdGlhbE1vdW50XSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGRvd25zaGlmdENvbW1vblJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgc3RhdGVDaGFuZ2VUeXBlcykge1xuICBjb25zdCB7XG4gICAgdHlwZSxcbiAgICBwcm9wc1xuICB9ID0gYWN0aW9uO1xuICBsZXQgY2hhbmdlcztcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBzdGF0ZUNoYW5nZVR5cGVzLkl0ZW1Nb3VzZU1vdmU6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiBhY3Rpb24uZGlzYWJsZWQgPyAtMSA6IGFjdGlvbi5pbmRleFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2Ugc3RhdGVDaGFuZ2VUeXBlcy5NZW51TW91c2VMZWF2ZTpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IC0xXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBzdGF0ZUNoYW5nZVR5cGVzLlRvZ2dsZUJ1dHRvbkNsaWNrOlxuICAgIGNhc2Ugc3RhdGVDaGFuZ2VUeXBlcy5GdW5jdGlvblRvZ2dsZU1lbnU6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46ICFzdGF0ZS5pc09wZW4sXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IHN0YXRlLmlzT3BlbiA/IC0xIDogZ2V0SGlnaGxpZ2h0ZWRJbmRleE9uT3Blbihwcm9wcywgc3RhdGUsIDApXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBzdGF0ZUNoYW5nZVR5cGVzLkZ1bmN0aW9uT3Blbk1lbnU6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldEhpZ2hsaWdodGVkSW5kZXhPbk9wZW4ocHJvcHMsIHN0YXRlLCAwKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2Ugc3RhdGVDaGFuZ2VUeXBlcy5GdW5jdGlvbkNsb3NlTWVudTpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogZmFsc2VcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIHN0YXRlQ2hhbmdlVHlwZXMuRnVuY3Rpb25TZXRIaWdobGlnaHRlZEluZGV4OlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogYWN0aW9uLmhpZ2hsaWdodGVkSW5kZXhcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIHN0YXRlQ2hhbmdlVHlwZXMuRnVuY3Rpb25TZXRJbnB1dFZhbHVlOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaW5wdXRWYWx1ZTogYWN0aW9uLmlucHV0VmFsdWVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIHN0YXRlQ2hhbmdlVHlwZXMuRnVuY3Rpb25SZXNldDpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICBpc09wZW46IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaXNPcGVuJyksXG4gICAgICAgIHNlbGVjdGVkSXRlbTogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdzZWxlY3RlZEl0ZW0nKSxcbiAgICAgICAgaW5wdXRWYWx1ZTogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdpbnB1dFZhbHVlJylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIGNhbGxlZCB3aXRob3V0IHByb3BlciBhY3Rpb24gdHlwZS4nKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmNoYW5nZXNcbiAgfTtcbn1cbi8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG5mdW5jdGlvbiBnZXRJdGVtSW5kZXhCeUNoYXJhY3RlcktleShfYSkge1xuICAgIHZhciBrZXlzU29GYXIgPSBfYS5rZXlzU29GYXIsIGhpZ2hsaWdodGVkSW5kZXggPSBfYS5oaWdobGlnaHRlZEluZGV4LCBpdGVtcyA9IF9hLml0ZW1zLCBpdGVtVG9TdHJpbmcgPSBfYS5pdGVtVG9TdHJpbmcsIGdldEl0ZW1Ob2RlRnJvbUluZGV4ID0gX2EuZ2V0SXRlbU5vZGVGcm9tSW5kZXg7XG4gICAgdmFyIGxvd2VyQ2FzZWRLZXlzU29GYXIgPSBrZXlzU29GYXIudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZhciBvZmZzZXRJbmRleCA9IChpbmRleCArIGhpZ2hsaWdodGVkSW5kZXggKyAxKSAlIGl0ZW1zLmxlbmd0aDtcbiAgICAgICAgdmFyIGl0ZW0gPSBpdGVtc1tvZmZzZXRJbmRleF07XG4gICAgICAgIGlmIChpdGVtICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIGl0ZW1Ub1N0cmluZyhpdGVtKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnN0YXJ0c1dpdGgobG93ZXJDYXNlZEtleXNTb0ZhcikpIHtcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZ2V0SXRlbU5vZGVGcm9tSW5kZXgob2Zmc2V0SW5kZXgpO1xuICAgICAgICAgICAgaWYgKCEoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhpZ2hsaWdodGVkSW5kZXg7XG59XG52YXIgcHJvcFR5cGVzJDIgPSB7XG4gICAgaXRlbXM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgIGl0ZW1Ub1N0cmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZ2V0QTExeVN0YXR1c01lc3NhZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGdldEExMXlTZWxlY3Rpb25NZXNzYWdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBoaWdobGlnaHRlZEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGRlZmF1bHRIaWdobGlnaHRlZEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGluaXRpYWxIaWdobGlnaHRlZEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGlzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGVmYXVsdElzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgaW5pdGlhbElzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2VsZWN0ZWRJdGVtOiBQcm9wVHlwZXMuYW55LFxuICAgIGluaXRpYWxTZWxlY3RlZEl0ZW06IFByb3BUeXBlcy5hbnksXG4gICAgZGVmYXVsdFNlbGVjdGVkSXRlbTogUHJvcFR5cGVzLmFueSxcbiAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBsYWJlbElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1lbnVJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBnZXRJdGVtSWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHRvZ2dsZUJ1dHRvbklkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0YXRlUmVkdWNlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25TZWxlY3RlZEl0ZW1DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uSGlnaGxpZ2h0ZWRJbmRleENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25TdGF0ZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Jc09wZW5DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGVudmlyb25tZW50OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIGRvY3VtZW50OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAgICAgYWN0aXZlRWxlbWVudDogUHJvcFR5cGVzLmFueSxcbiAgICAgICAgICAgIGJvZHk6IFByb3BUeXBlcy5hbnlcbiAgICAgICAgfSlcbiAgICB9KVxufTtcbi8qKlxuICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3Igc3RhdHVzIG1lc3NhZ2UuIE9ubHkgYWRkZWQgd2hlbiBtZW51IGlzIG9wZW4uXG4gKiBXaWxsIHNwZWNpZnQgaWYgdGhlcmUgYXJlIHJlc3VsdHMgaW4gdGhlIGxpc3QsIGFuZCBpZiBzbywgaG93IG1hbnksXG4gKiBhbmQgd2hhdCBrZXlzIGFyZSByZWxldmFudC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW0gdGhlIGRvd25zaGlmdCBzdGF0ZSBhbmQgb3RoZXIgcmVsZXZhbnQgcHJvcGVydGllc1xuICogQHJldHVybiB7U3RyaW5nfSB0aGUgYTExeSBzdGF0dXMgbWVzc2FnZVxuICovXG5mdW5jdGlvbiBnZXRBMTF5U3RhdHVzTWVzc2FnZShfYSkge1xuICAgIHZhciBpc09wZW4gPSBfYS5pc09wZW4sIHJlc3VsdENvdW50ID0gX2EucmVzdWx0Q291bnQsIHByZXZpb3VzUmVzdWx0Q291bnQgPSBfYS5wcmV2aW91c1Jlc3VsdENvdW50O1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKCFyZXN1bHRDb3VudCkge1xuICAgICAgICByZXR1cm4gJ05vIHJlc3VsdHMgYXJlIGF2YWlsYWJsZS4nO1xuICAgIH1cbiAgICBpZiAocmVzdWx0Q291bnQgIT09IHByZXZpb3VzUmVzdWx0Q291bnQpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHJlc3VsdENvdW50LCBcIiByZXN1bHRcIikuY29uY2F0KHJlc3VsdENvdW50ID09PSAxID8gJyBpcycgOiAncyBhcmUnLCBcIiBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiBQcmVzcyBFbnRlciBvciBTcGFjZSBCYXIga2V5cyB0byBzZWxlY3QuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG52YXIgZGVmYXVsdFByb3BzJDIgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdFByb3BzJDMpLCB7IGdldEExMXlTdGF0dXNNZXNzYWdlOiBnZXRBMTF5U3RhdHVzTWVzc2FnZSB9KTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzXG52YXIgdmFsaWRhdGVQcm9wVHlwZXMkMiA9IG5vb3A7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxpZGF0ZVByb3BUeXBlcyQyID0gZnVuY3Rpb24gKG9wdGlvbnMsIGNhbGxlcikge1xuICAgICAgICBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMocHJvcFR5cGVzJDIsIG9wdGlvbnMsICdwcm9wJywgY2FsbGVyLm5hbWUpO1xuICAgIH07XG59XG5cbmNvbnN0IFRvZ2dsZUJ1dHRvbkNsaWNrJDEgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fY2xpY2tfXycgOiAwO1xuY29uc3QgVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93RG93biA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3RvZ2dsZWJ1dHRvbl9rZXlkb3duX2Fycm93X2Rvd25fXycgOiAxO1xuY29uc3QgVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93VXAgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fa2V5ZG93bl9hcnJvd191cF9fJyA6IDI7XG5jb25zdCBUb2dnbGVCdXR0b25LZXlEb3duQ2hhcmFjdGVyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fdG9nZ2xlYnV0dG9uX2tleWRvd25fY2hhcmFjdGVyX18nIDogMztcbmNvbnN0IFRvZ2dsZUJ1dHRvbktleURvd25Fc2NhcGUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fa2V5ZG93bl9lc2NhcGVfXycgOiA0O1xuY29uc3QgVG9nZ2xlQnV0dG9uS2V5RG93bkhvbWUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fa2V5ZG93bl9ob21lX18nIDogNTtcbmNvbnN0IFRvZ2dsZUJ1dHRvbktleURvd25FbmQgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fa2V5ZG93bl9lbmRfXycgOiA2O1xuY29uc3QgVG9nZ2xlQnV0dG9uS2V5RG93bkVudGVyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fdG9nZ2xlYnV0dG9uX2tleWRvd25fZW50ZXJfXycgOiA3O1xuY29uc3QgVG9nZ2xlQnV0dG9uS2V5RG93blNwYWNlQnV0dG9uID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fdG9nZ2xlYnV0dG9uX2tleWRvd25fc3BhY2VfYnV0dG9uX18nIDogODtcbmNvbnN0IFRvZ2dsZUJ1dHRvbktleURvd25QYWdlVXAgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX190b2dnbGVidXR0b25fa2V5ZG93bl9wYWdlX3VwX18nIDogOTtcbmNvbnN0IFRvZ2dsZUJ1dHRvbktleURvd25QYWdlRG93biA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3RvZ2dsZWJ1dHRvbl9rZXlkb3duX3BhZ2VfZG93bl9fJyA6IDEwO1xuY29uc3QgVG9nZ2xlQnV0dG9uQmx1ciA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3RvZ2dsZWJ1dHRvbl9ibHVyX18nIDogMTE7XG5jb25zdCBNZW51TW91c2VMZWF2ZSQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fbWVudV9tb3VzZV9sZWF2ZV9fJyA6IDEyO1xuY29uc3QgSXRlbU1vdXNlTW92ZSQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faXRlbV9tb3VzZV9tb3ZlX18nIDogMTM7XG5jb25zdCBJdGVtQ2xpY2skMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2l0ZW1fY2xpY2tfXycgOiAxNDtcbmNvbnN0IEZ1bmN0aW9uVG9nZ2xlTWVudSQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fdG9nZ2xlX21lbnVfXycgOiAxNTtcbmNvbnN0IEZ1bmN0aW9uT3Blbk1lbnUkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX29wZW5fbWVudV9fJyA6IDE2O1xuY29uc3QgRnVuY3Rpb25DbG9zZU1lbnUkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX2Nsb3NlX21lbnVfXycgOiAxNztcbmNvbnN0IEZ1bmN0aW9uU2V0SGlnaGxpZ2h0ZWRJbmRleCQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fc2V0X2hpZ2hsaWdodGVkX2luZGV4X18nIDogMTg7XG5jb25zdCBGdW5jdGlvblNlbGVjdEl0ZW0kMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX3NlbGVjdF9pdGVtX18nIDogMTk7XG5jb25zdCBGdW5jdGlvblNldElucHV0VmFsdWUkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX3NldF9pbnB1dF92YWx1ZV9fJyA6IDIwO1xuY29uc3QgRnVuY3Rpb25SZXNldCQyID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fcmVzZXRfXycgOiAyMTtcblxudmFyIHN0YXRlQ2hhbmdlVHlwZXMkMiA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgX19wcm90b19fOiBudWxsLFxuICBUb2dnbGVCdXR0b25DbGljazogVG9nZ2xlQnV0dG9uQ2xpY2skMSxcbiAgVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93RG93bjogVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93RG93bixcbiAgVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93VXA6IFRvZ2dsZUJ1dHRvbktleURvd25BcnJvd1VwLFxuICBUb2dnbGVCdXR0b25LZXlEb3duQ2hhcmFjdGVyOiBUb2dnbGVCdXR0b25LZXlEb3duQ2hhcmFjdGVyLFxuICBUb2dnbGVCdXR0b25LZXlEb3duRXNjYXBlOiBUb2dnbGVCdXR0b25LZXlEb3duRXNjYXBlLFxuICBUb2dnbGVCdXR0b25LZXlEb3duSG9tZTogVG9nZ2xlQnV0dG9uS2V5RG93bkhvbWUsXG4gIFRvZ2dsZUJ1dHRvbktleURvd25FbmQ6IFRvZ2dsZUJ1dHRvbktleURvd25FbmQsXG4gIFRvZ2dsZUJ1dHRvbktleURvd25FbnRlcjogVG9nZ2xlQnV0dG9uS2V5RG93bkVudGVyLFxuICBUb2dnbGVCdXR0b25LZXlEb3duU3BhY2VCdXR0b246IFRvZ2dsZUJ1dHRvbktleURvd25TcGFjZUJ1dHRvbixcbiAgVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VVcDogVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VVcCxcbiAgVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VEb3duOiBUb2dnbGVCdXR0b25LZXlEb3duUGFnZURvd24sXG4gIFRvZ2dsZUJ1dHRvbkJsdXI6IFRvZ2dsZUJ1dHRvbkJsdXIsXG4gIE1lbnVNb3VzZUxlYXZlOiBNZW51TW91c2VMZWF2ZSQxLFxuICBJdGVtTW91c2VNb3ZlOiBJdGVtTW91c2VNb3ZlJDEsXG4gIEl0ZW1DbGljazogSXRlbUNsaWNrJDEsXG4gIEZ1bmN0aW9uVG9nZ2xlTWVudTogRnVuY3Rpb25Ub2dnbGVNZW51JDEsXG4gIEZ1bmN0aW9uT3Blbk1lbnU6IEZ1bmN0aW9uT3Blbk1lbnUkMSxcbiAgRnVuY3Rpb25DbG9zZU1lbnU6IEZ1bmN0aW9uQ2xvc2VNZW51JDEsXG4gIEZ1bmN0aW9uU2V0SGlnaGxpZ2h0ZWRJbmRleDogRnVuY3Rpb25TZXRIaWdobGlnaHRlZEluZGV4JDEsXG4gIEZ1bmN0aW9uU2VsZWN0SXRlbTogRnVuY3Rpb25TZWxlY3RJdGVtJDEsXG4gIEZ1bmN0aW9uU2V0SW5wdXRWYWx1ZTogRnVuY3Rpb25TZXRJbnB1dFZhbHVlJDEsXG4gIEZ1bmN0aW9uUmVzZXQ6IEZ1bmN0aW9uUmVzZXQkMlxufSk7XG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmZ1bmN0aW9uIGRvd25zaGlmdFNlbGVjdFJlZHVjZXIoc3RhdGUsIGFjdGlvbikge1xuICBjb25zdCB7XG4gICAgdHlwZSxcbiAgICBwcm9wcyxcbiAgICBhbHRLZXlcbiAgfSA9IGFjdGlvbjtcbiAgbGV0IGNoYW5nZXM7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgSXRlbUNsaWNrJDE6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaXNPcGVuJyksXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICBzZWxlY3RlZEl0ZW06IHByb3BzLml0ZW1zW2FjdGlvbi5pbmRleF1cbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFRvZ2dsZUJ1dHRvbktleURvd25DaGFyYWN0ZXI6XG4gICAgICB7XG4gICAgICAgIGNvbnN0IGxvd2VyY2FzZWRLZXkgPSBhY3Rpb24ua2V5O1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gYCR7c3RhdGUuaW5wdXRWYWx1ZX0ke2xvd2VyY2FzZWRLZXl9YDtcbiAgICAgICAgY29uc3QgcHJldkhpZ2hsaWdodGVkSW5kZXggPSAhc3RhdGUuaXNPcGVuICYmIHN0YXRlLnNlbGVjdGVkSXRlbSA/IHByb3BzLml0ZW1zLmluZGV4T2Yoc3RhdGUuc2VsZWN0ZWRJdGVtKSA6IHN0YXRlLmhpZ2hsaWdodGVkSW5kZXg7XG4gICAgICAgIGNvbnN0IGhpZ2hsaWdodGVkSW5kZXggPSBnZXRJdGVtSW5kZXhCeUNoYXJhY3RlcktleSh7XG4gICAgICAgICAga2V5c1NvRmFyOiBpbnB1dFZhbHVlLFxuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IHByZXZIaWdobGlnaHRlZEluZGV4LFxuICAgICAgICAgIGl0ZW1zOiBwcm9wcy5pdGVtcyxcbiAgICAgICAgICBpdGVtVG9TdHJpbmc6IHByb3BzLml0ZW1Ub1N0cmluZyxcbiAgICAgICAgICBnZXRJdGVtTm9kZUZyb21JbmRleDogYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgICAgICAgICBpc09wZW46IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVG9nZ2xlQnV0dG9uS2V5RG93bkFycm93RG93bjpcbiAgICAgIHtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRJbmRleCA9IHN0YXRlLmlzT3BlbiA/IGdldE5leHRXcmFwcGluZ0luZGV4KDEsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSkgOiBhbHRLZXkgJiYgc3RhdGUuc2VsZWN0ZWRJdGVtID09IG51bGwgPyAtMSA6IGdldEhpZ2hsaWdodGVkSW5kZXhPbk9wZW4ocHJvcHMsIHN0YXRlLCAxKTtcbiAgICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBUb2dnbGVCdXR0b25LZXlEb3duQXJyb3dVcDpcbiAgICAgIGlmIChzdGF0ZS5pc09wZW4gJiYgYWx0S2V5KSB7XG4gICAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgICAgaXNPcGVuOiBnZXREZWZhdWx0VmFsdWUkMShwcm9wcywgJ2lzT3BlbicpLFxuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICAgIC4uLihzdGF0ZS5oaWdobGlnaHRlZEluZGV4ID49IDAgJiYge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtOiBwcm9wcy5pdGVtc1tzdGF0ZS5oaWdobGlnaHRlZEluZGV4XVxuICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoaWdobGlnaHRlZEluZGV4ID0gc3RhdGUuaXNPcGVuID8gZ2V0TmV4dFdyYXBwaW5nSW5kZXgoLTEsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSkgOiBnZXRIaWdobGlnaHRlZEluZGV4T25PcGVuKHByb3BzLCBzdGF0ZSwgLTEpO1xuICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgICAgICAgaXNPcGVuOiB0cnVlXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAvLyBvbmx5IHRyaWdnZXJlZCB3aGVuIG1lbnUgaXMgb3Blbi5cbiAgICBjYXNlIFRvZ2dsZUJ1dHRvbktleURvd25FbnRlcjpcbiAgICBjYXNlIFRvZ2dsZUJ1dHRvbktleURvd25TcGFjZUJ1dHRvbjpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdpc09wZW4nKSxcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdoaWdobGlnaHRlZEluZGV4JyksXG4gICAgICAgIC4uLihzdGF0ZS5oaWdobGlnaHRlZEluZGV4ID49IDAgJiYge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbTogcHJvcHMuaXRlbXNbc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleF1cbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFRvZ2dsZUJ1dHRvbktleURvd25Ib21lOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dE5vbkRpc2FibGVkSW5kZXgoMSwgMCwgcHJvcHMuaXRlbXMubGVuZ3RoLCBhY3Rpb24uZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGZhbHNlKSxcbiAgICAgICAgaXNPcGVuOiB0cnVlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBUb2dnbGVCdXR0b25LZXlEb3duRW5kOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dE5vbkRpc2FibGVkSW5kZXgoLTEsIHByb3BzLml0ZW1zLmxlbmd0aCAtIDEsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSksXG4gICAgICAgIGlzT3BlbjogdHJ1ZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VVcDpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldE5leHRXcmFwcGluZ0luZGV4KC0xMCwgc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleCwgcHJvcHMuaXRlbXMubGVuZ3RoLCBhY3Rpb24uZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGZhbHNlKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VEb3duOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dFdyYXBwaW5nSW5kZXgoMTAsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSlcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFRvZ2dsZUJ1dHRvbktleURvd25Fc2NhcGU6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46IGZhbHNlLFxuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiAtMVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVG9nZ2xlQnV0dG9uQmx1cjpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IC0xLFxuICAgICAgICAuLi4oc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleCA+PSAwICYmIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW06IHByb3BzLml0ZW1zW3N0YXRlLmhpZ2hsaWdodGVkSW5kZXhdXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGdW5jdGlvblNlbGVjdEl0ZW0kMTpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbTogYWN0aW9uLnNlbGVjdGVkSXRlbVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZG93bnNoaWZ0Q29tbW9uUmVkdWNlcihzdGF0ZSwgYWN0aW9uLCBzdGF0ZUNoYW5nZVR5cGVzJDIpO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uY2hhbmdlc1xuICB9O1xufVxuLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbnVzZVNlbGVjdC5zdGF0ZUNoYW5nZVR5cGVzID0gc3RhdGVDaGFuZ2VUeXBlcyQyO1xuZnVuY3Rpb24gdXNlU2VsZWN0KHVzZXJQcm9wcykge1xuICBpZiAodXNlclByb3BzID09PSB2b2lkIDApIHtcbiAgICB1c2VyUHJvcHMgPSB7fTtcbiAgfVxuICB2YWxpZGF0ZVByb3BUeXBlcyQyKHVzZXJQcm9wcywgdXNlU2VsZWN0KTtcbiAgLy8gUHJvcHMgZGVmYXVsdHMgYW5kIGRlc3RydWN0dXJpbmcuXG4gIGNvbnN0IHByb3BzID0ge1xuICAgIC4uLmRlZmF1bHRQcm9wcyQyLFxuICAgIC4uLnVzZXJQcm9wc1xuICB9O1xuICBjb25zdCB7XG4gICAgaXRlbXMsXG4gICAgc2Nyb2xsSW50b1ZpZXcsXG4gICAgZW52aXJvbm1lbnQsXG4gICAgaXRlbVRvU3RyaW5nLFxuICAgIGdldEExMXlTZWxlY3Rpb25NZXNzYWdlLFxuICAgIGdldEExMXlTdGF0dXNNZXNzYWdlXG4gIH0gPSBwcm9wcztcbiAgLy8gSW5pdGlhbCBzdGF0ZSBkZXBlbmRpbmcgb24gY29udHJvbGxlZCBwcm9wcy5cbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZ2V0SW5pdGlhbFN0YXRlJDIocHJvcHMpO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUNvbnRyb2xsZWRSZWR1Y2VyJDEoZG93bnNoaWZ0U2VsZWN0UmVkdWNlciwgaW5pdGlhbFN0YXRlLCBwcm9wcyk7XG4gIGNvbnN0IHtcbiAgICBpc09wZW4sXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgICBzZWxlY3RlZEl0ZW0sXG4gICAgaW5wdXRWYWx1ZVxuICB9ID0gc3RhdGU7XG5cbiAgLy8gRWxlbWVudCBlZnMuXG4gIGNvbnN0IHRvZ2dsZUJ1dHRvblJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaXRlbVJlZnMgPSB1c2VSZWYoe30pO1xuICAvLyB1c2VkIHRvIGtlZXAgdGhlIGlucHV0VmFsdWUgY2xlYXJUaW1lb3V0IG9iamVjdCBiZXR3ZWVuIHJlbmRlcnMuXG4gIGNvbnN0IGNsZWFyVGltZW91dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgLy8gcHJldmVudCBpZCByZS1nZW5lcmF0aW9uIGJldHdlZW4gcmVuZGVycy5cbiAgY29uc3QgZWxlbWVudElkcyA9IHVzZUVsZW1lbnRJZHMocHJvcHMpO1xuICAvLyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgaG93IG1hbnkgaXRlbXMgd2UgaGFkIG9uIHByZXZpb3VzIGN5Y2xlLlxuICBjb25zdCBwcmV2aW91c1Jlc3VsdENvdW50UmVmID0gdXNlUmVmKCk7XG4gIGNvbnN0IGlzSW5pdGlhbE1vdW50UmVmID0gdXNlUmVmKHRydWUpO1xuICAvLyB1dGlsaXR5IGNhbGxiYWNrIHRvIGdldCBpdGVtIGVsZW1lbnQuXG4gIGNvbnN0IGxhdGVzdCA9IHVzZUxhdGVzdFJlZih7XG4gICAgc3RhdGUsXG4gICAgcHJvcHNcbiAgfSk7XG5cbiAgLy8gU29tZSB1dGlscy5cbiAgY29uc3QgZ2V0SXRlbU5vZGVGcm9tSW5kZXggPSB1c2VDYWxsYmFjayhpbmRleCA9PiBpdGVtUmVmcy5jdXJyZW50W2VsZW1lbnRJZHMuZ2V0SXRlbUlkKGluZGV4KV0sIFtlbGVtZW50SWRzXSk7XG5cbiAgLy8gRWZmZWN0cy5cbiAgLy8gU2V0cyBhMTF5IHN0YXR1cyBtZXNzYWdlIG9uIGNoYW5nZXMgaW4gc3RhdGUuXG4gIHVzZUExMXlNZXNzYWdlU2V0dGVyKGdldEExMXlTdGF0dXNNZXNzYWdlLCBbaXNPcGVuLCBoaWdobGlnaHRlZEluZGV4LCBpbnB1dFZhbHVlLCBpdGVtc10sIHtcbiAgICBpc0luaXRpYWxNb3VudDogaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCxcbiAgICBwcmV2aW91c1Jlc3VsdENvdW50OiBwcmV2aW91c1Jlc3VsdENvdW50UmVmLmN1cnJlbnQsXG4gICAgaXRlbXMsXG4gICAgZW52aXJvbm1lbnQsXG4gICAgaXRlbVRvU3RyaW5nLFxuICAgIC4uLnN0YXRlXG4gIH0pO1xuICAvLyBTZXRzIGExMXkgc3RhdHVzIG1lc3NhZ2Ugb24gY2hhbmdlcyBpbiBzZWxlY3RlZEl0ZW0uXG4gIHVzZUExMXlNZXNzYWdlU2V0dGVyKGdldEExMXlTZWxlY3Rpb25NZXNzYWdlLCBbc2VsZWN0ZWRJdGVtXSwge1xuICAgIGlzSW5pdGlhbE1vdW50OiBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50LFxuICAgIHByZXZpb3VzUmVzdWx0Q291bnQ6IHByZXZpb3VzUmVzdWx0Q291bnRSZWYuY3VycmVudCxcbiAgICBpdGVtcyxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBpdGVtVG9TdHJpbmcsXG4gICAgLi4uc3RhdGVcbiAgfSk7XG4gIC8vIFNjcm9sbCBvbiBoaWdobGlnaHRlZCBpdGVtIGlmIGNoYW5nZSBjb21lcyBmcm9tIGtleWJvYXJkLlxuICBjb25zdCBzaG91bGRTY3JvbGxSZWYgPSB1c2VTY3JvbGxJbnRvVmlldyh7XG4gICAgbWVudUVsZW1lbnQ6IG1lbnVSZWYuY3VycmVudCxcbiAgICBoaWdobGlnaHRlZEluZGV4LFxuICAgIGlzT3BlbixcbiAgICBpdGVtUmVmcyxcbiAgICBzY3JvbGxJbnRvVmlldyxcbiAgICBnZXRJdGVtTm9kZUZyb21JbmRleFxuICB9KTtcblxuICAvLyBTZXRzIGNsZWFudXAgZm9yIHRoZSBrZXlzU29GYXIgY2FsbGJhY2ssIGRlYm91bmRlZCBhZnRlciA1MDBtcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBpbml0IHRoZSBjbGVhbiBmdW5jdGlvbiBoZXJlIGFzIHdlIG5lZWQgYWNjZXNzIHRvIGRpc3BhdGNoLlxuICAgIGNsZWFyVGltZW91dFJlZi5jdXJyZW50ID0gZGVib3VuY2Uob3V0ZXJEaXNwYXRjaCA9PiB7XG4gICAgICBvdXRlckRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogRnVuY3Rpb25TZXRJbnB1dFZhbHVlJDEsXG4gICAgICAgIGlucHV0VmFsdWU6ICcnXG4gICAgICB9KTtcbiAgICB9LCA1MDApO1xuXG4gICAgLy8gQ2FuY2VsIGFueSBwZW5kaW5nIGRlYm91bmNlZCBjYWxscyBvbiBtb3VudFxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXRSZWYuY3VycmVudC5jYW5jZWwoKTtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgLy8gSW52b2tlcyB0aGUga2V5c1NvRmFyIGNhbGxiYWNrIHNldCB1cCBhYm92ZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0UmVmLmN1cnJlbnQoZGlzcGF0Y2gpO1xuICB9LCBbZGlzcGF0Y2gsIGlucHV0VmFsdWVdKTtcbiAgdXNlQ29udHJvbFByb3BzVmFsaWRhdG9yKHtcbiAgICBpc0luaXRpYWxNb3VudDogaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCxcbiAgICBwcm9wcyxcbiAgICBzdGF0ZVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcmV2aW91c1Jlc3VsdENvdW50UmVmLmN1cnJlbnQgPSBpdGVtcy5sZW5ndGg7XG4gIH0pO1xuICAvLyBBZGQgbW91c2UvdG91Y2ggZXZlbnRzIHRvIGRvY3VtZW50LlxuICBjb25zdCBtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYgPSB1c2VNb3VzZUFuZFRvdWNoVHJhY2tlcihpc09wZW4sIFttZW51UmVmLCB0b2dnbGVCdXR0b25SZWZdLCBlbnZpcm9ubWVudCwgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbkJsdXJcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHNldEdldHRlclByb3BDYWxsSW5mbyA9IHVzZUdldHRlclByb3BzQ2FsbGVkQ2hlY2tlcignZ2V0TWVudVByb3BzJywgJ2dldFRvZ2dsZUJ1dHRvblByb3BzJyk7XG4gIC8vIE1ha2UgaW5pdGlhbCByZWYgZmFsc2UuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbXSk7XG4gIC8vIFJlc2V0IGl0ZW1SZWZzIG9uIGNsb3NlLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICBpdGVtUmVmcy5jdXJyZW50ID0ge307XG4gICAgfVxuICB9LCBbaXNPcGVuXSk7XG5cbiAgLy8gRXZlbnQgaGFuZGxlciBmdW5jdGlvbnMuXG4gIGNvbnN0IHRvZ2dsZUJ1dHRvbktleURvd25IYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBBcnJvd0Rvd24oZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbktleURvd25BcnJvd0Rvd24sXG4gICAgICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4LFxuICAgICAgICBhbHRLZXk6IGV2ZW50LmFsdEtleVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBBcnJvd1VwKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBUb2dnbGVCdXR0b25LZXlEb3duQXJyb3dVcCxcbiAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXgsXG4gICAgICAgIGFsdEtleTogZXZlbnQuYWx0S2V5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIEhvbWUoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbktleURvd25Ib21lLFxuICAgICAgICBnZXRJdGVtTm9kZUZyb21JbmRleFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBFbmQoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbktleURvd25FbmQsXG4gICAgICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gICAgICB9KTtcbiAgICB9LFxuICAgIEVzY2FwZSgpIHtcbiAgICAgIGlmIChsYXRlc3QuY3VycmVudC5zdGF0ZS5pc09wZW4pIHtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbktleURvd25Fc2NhcGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBFbnRlcihldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogbGF0ZXN0LmN1cnJlbnQuc3RhdGUuaXNPcGVuID8gVG9nZ2xlQnV0dG9uS2V5RG93bkVudGVyIDogVG9nZ2xlQnV0dG9uQ2xpY2skMVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBQYWdlVXAoZXZlbnQpIHtcbiAgICAgIGlmIChsYXRlc3QuY3VycmVudC5zdGF0ZS5pc09wZW4pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbktleURvd25QYWdlVXAsXG4gICAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBQYWdlRG93bihldmVudCkge1xuICAgICAgaWYgKGxhdGVzdC5jdXJyZW50LnN0YXRlLmlzT3Blbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogVG9nZ2xlQnV0dG9uS2V5RG93blBhZ2VEb3duLFxuICAgICAgICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgJyAnKGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBsYXRlc3QuY3VycmVudC5zdGF0ZS5pc09wZW4gPyBUb2dnbGVCdXR0b25LZXlEb3duU3BhY2VCdXR0b24gOiBUb2dnbGVCdXR0b25DbGljayQxXG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZGlzcGF0Y2gsIGdldEl0ZW1Ob2RlRnJvbUluZGV4LCBsYXRlc3RdKTtcblxuICAvLyBBY3Rpb24gZnVuY3Rpb25zLlxuICBjb25zdCB0b2dnbGVNZW51ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uVG9nZ2xlTWVudSQxXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCBjbG9zZU1lbnUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25DbG9zZU1lbnUkMVxuICAgIH0pO1xuICB9LCBbZGlzcGF0Y2hdKTtcbiAgY29uc3Qgb3Blbk1lbnUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25PcGVuTWVudSQxXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCBzZXRIaWdobGlnaHRlZEluZGV4ID0gdXNlQ2FsbGJhY2sobmV3SGlnaGxpZ2h0ZWRJbmRleCA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25TZXRIaWdobGlnaHRlZEluZGV4JDEsXG4gICAgICBoaWdobGlnaHRlZEluZGV4OiBuZXdIaWdobGlnaHRlZEluZGV4XG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCBzZWxlY3RJdGVtID0gdXNlQ2FsbGJhY2sobmV3U2VsZWN0ZWRJdGVtID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblNlbGVjdEl0ZW0kMSxcbiAgICAgIHNlbGVjdGVkSXRlbTogbmV3U2VsZWN0ZWRJdGVtXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblJlc2V0JDJcbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIGNvbnN0IHNldElucHV0VmFsdWUgPSB1c2VDYWxsYmFjayhuZXdJbnB1dFZhbHVlID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblNldElucHV0VmFsdWUkMSxcbiAgICAgIGlucHV0VmFsdWU6IG5ld0lucHV0VmFsdWVcbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIC8vIEdldHRlciBmdW5jdGlvbnMuXG4gIGNvbnN0IGdldExhYmVsUHJvcHMgPSB1c2VDYWxsYmFjayhsYWJlbFByb3BzID0+ICh7XG4gICAgaWQ6IGVsZW1lbnRJZHMubGFiZWxJZCxcbiAgICBodG1sRm9yOiBlbGVtZW50SWRzLnRvZ2dsZUJ1dHRvbklkLFxuICAgIC4uLmxhYmVsUHJvcHNcbiAgfSksIFtlbGVtZW50SWRzXSk7XG4gIGNvbnN0IGdldE1lbnVQcm9wcyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChfdGVtcCwgX3RlbXAyKSB7XG4gICAgbGV0IHtcbiAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgb25CbHVyLFxuICAgICAgcmVmLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgICBsZXQge1xuICAgICAgc3VwcHJlc3NSZWZFcnJvciA9IGZhbHNlXG4gICAgfSA9IF90ZW1wMiA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDI7XG4gICAgY29uc3QgbWVudUhhbmRsZU1vdXNlTGVhdmUgPSAoKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IE1lbnVNb3VzZUxlYXZlJDFcbiAgICAgIH0pO1xuICAgIH07XG4gICAgc2V0R2V0dGVyUHJvcENhbGxJbmZvKCdnZXRNZW51UHJvcHMnLCBzdXBwcmVzc1JlZkVycm9yLCByZWZLZXksIG1lbnVSZWYpO1xuICAgIHJldHVybiB7XG4gICAgICBbcmVmS2V5XTogaGFuZGxlUmVmcyhyZWYsIG1lbnVOb2RlID0+IHtcbiAgICAgICAgbWVudVJlZi5jdXJyZW50ID0gbWVudU5vZGU7XG4gICAgICB9KSxcbiAgICAgIGlkOiBlbGVtZW50SWRzLm1lbnVJZCxcbiAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBlbGVtZW50SWRzLmxhYmVsSWQsXG4gICAgICB0YWJJbmRleDogLTEsXG4gICAgICBvbk1vdXNlTGVhdmU6IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uTW91c2VMZWF2ZSwgbWVudUhhbmRsZU1vdXNlTGVhdmUpLFxuICAgICAgLi4ucmVzdFxuICAgIH07XG4gIH0sIFtkaXNwYXRjaCwgc2V0R2V0dGVyUHJvcENhbGxJbmZvLCBlbGVtZW50SWRzXSk7XG4gIGNvbnN0IGdldFRvZ2dsZUJ1dHRvblByb3BzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKF90ZW1wMywgX3RlbXA0KSB7XG4gICAgbGV0IHtcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbktleURvd24sXG4gICAgICByZWZLZXkgPSAncmVmJyxcbiAgICAgIHJlZixcbiAgICAgIC4uLnJlc3RcbiAgICB9ID0gX3RlbXAzID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wMztcbiAgICBsZXQge1xuICAgICAgc3VwcHJlc3NSZWZFcnJvciA9IGZhbHNlXG4gICAgfSA9IF90ZW1wNCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDQ7XG4gICAgY29uc3QgbGF0ZXN0U3RhdGUgPSBsYXRlc3QuY3VycmVudC5zdGF0ZTtcbiAgICBjb25zdCB0b2dnbGVCdXR0b25IYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogVG9nZ2xlQnV0dG9uQ2xpY2skMVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCB0b2dnbGVCdXR0b25IYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgaWYgKGxhdGVzdFN0YXRlLmlzT3BlbiAmJiAhbW91c2VBbmRUb3VjaFRyYWNrZXJzUmVmLmN1cnJlbnQuaXNNb3VzZURvd24pIHtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbkJsdXJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB0b2dnbGVCdXR0b25IYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gbm9ybWFsaXplQXJyb3dLZXkoZXZlbnQpO1xuICAgICAgaWYgKGtleSAmJiB0b2dnbGVCdXR0b25LZXlEb3duSGFuZGxlcnNba2V5XSkge1xuICAgICAgICB0b2dnbGVCdXR0b25LZXlEb3duSGFuZGxlcnNba2V5XShldmVudCk7XG4gICAgICB9IGVsc2UgaWYgKGlzQWNjZXB0ZWRDaGFyYWN0ZXJLZXkoa2V5KSkge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogVG9nZ2xlQnV0dG9uS2V5RG93bkNoYXJhY3RlcixcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB0b2dnbGVQcm9wcyA9IHtcbiAgICAgIFtyZWZLZXldOiBoYW5kbGVSZWZzKHJlZiwgdG9nZ2xlQnV0dG9uTm9kZSA9PiB7XG4gICAgICAgIHRvZ2dsZUJ1dHRvblJlZi5jdXJyZW50ID0gdG9nZ2xlQnV0dG9uTm9kZTtcbiAgICAgIH0pLFxuICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IGxhdGVzdFN0YXRlLmlzT3BlbiAmJiBsYXRlc3RTdGF0ZS5oaWdobGlnaHRlZEluZGV4ID4gLTEgPyBlbGVtZW50SWRzLmdldEl0ZW1JZChsYXRlc3RTdGF0ZS5oaWdobGlnaHRlZEluZGV4KSA6ICcnLFxuICAgICAgJ2FyaWEtY29udHJvbHMnOiBlbGVtZW50SWRzLm1lbnVJZCxcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogbGF0ZXN0LmN1cnJlbnQuc3RhdGUuaXNPcGVuLFxuICAgICAgJ2FyaWEtaGFzcG9wdXAnOiAnbGlzdGJveCcsXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogYCR7ZWxlbWVudElkcy5sYWJlbElkfWAsXG4gICAgICBpZDogZWxlbWVudElkcy50b2dnbGVCdXR0b25JZCxcbiAgICAgIHJvbGU6ICdjb21ib2JveCcsXG4gICAgICB0YWJJbmRleDogMCxcbiAgICAgIG9uQmx1cjogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25CbHVyLCB0b2dnbGVCdXR0b25IYW5kbGVCbHVyKSxcbiAgICAgIC4uLnJlc3RcbiAgICB9O1xuICAgIGlmICghcmVzdC5kaXNhYmxlZCkge1xuICAgICAgdG9nZ2xlUHJvcHMub25DbGljayA9IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uQ2xpY2ssIHRvZ2dsZUJ1dHRvbkhhbmRsZUNsaWNrKTtcbiAgICAgIHRvZ2dsZVByb3BzLm9uS2V5RG93biA9IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uS2V5RG93biwgdG9nZ2xlQnV0dG9uSGFuZGxlS2V5RG93bik7XG4gICAgfVxuICAgIHNldEdldHRlclByb3BDYWxsSW5mbygnZ2V0VG9nZ2xlQnV0dG9uUHJvcHMnLCBzdXBwcmVzc1JlZkVycm9yLCByZWZLZXksIHRvZ2dsZUJ1dHRvblJlZik7XG4gICAgcmV0dXJuIHRvZ2dsZVByb3BzO1xuICB9LCBbbGF0ZXN0LCBlbGVtZW50SWRzLCBzZXRHZXR0ZXJQcm9wQ2FsbEluZm8sIGRpc3BhdGNoLCBtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYsIHRvZ2dsZUJ1dHRvbktleURvd25IYW5kbGVycywgZ2V0SXRlbU5vZGVGcm9tSW5kZXhdKTtcbiAgY29uc3QgZ2V0SXRlbVByb3BzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKF90ZW1wNSkge1xuICAgIGxldCB7XG4gICAgICBpdGVtOiBpdGVtUHJvcCxcbiAgICAgIGluZGV4OiBpbmRleFByb3AsXG4gICAgICBvbk1vdXNlTW92ZSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICByZWZLZXkgPSAncmVmJyxcbiAgICAgIHJlZixcbiAgICAgIGRpc2FibGVkLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcDUgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA1O1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXRlOiBsYXRlc3RTdGF0ZSxcbiAgICAgIHByb3BzOiBsYXRlc3RQcm9wc1xuICAgIH0gPSBsYXRlc3QuY3VycmVudDtcbiAgICBjb25zdCBpdGVtID0gaXRlbVByb3AgPz8gaXRlbXNbaW5kZXhQcm9wXTtcbiAgICBjb25zdCBpbmRleCA9IGdldEl0ZW1JbmRleChpbmRleFByb3AsIGl0ZW0sIGxhdGVzdFByb3BzLml0ZW1zKTtcbiAgICBjb25zdCBpdGVtSGFuZGxlTW91c2VNb3ZlID0gKCkgPT4ge1xuICAgICAgaWYgKGluZGV4ID09PSBsYXRlc3RTdGF0ZS5oaWdobGlnaHRlZEluZGV4KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNob3VsZFNjcm9sbFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IEl0ZW1Nb3VzZU1vdmUkMSxcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGRpc2FibGVkXG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGl0ZW1IYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogSXRlbUNsaWNrJDEsXG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGl0ZW1JbmRleCA9IGdldEl0ZW1JbmRleChpbmRleCwgaXRlbSwgbGF0ZXN0UHJvcHMuaXRlbXMpO1xuICAgIGlmIChpdGVtSW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bhc3MgZWl0aGVyIGl0ZW0gb3IgaXRlbSBpbmRleCBpbiBnZXRJdGVtUHJvcHMhJyk7XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IHtcbiAgICAgIGRpc2FibGVkLFxuICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAnYXJpYS1zZWxlY3RlZCc6IGAke2l0ZW0gPT09IHNlbGVjdGVkSXRlbX1gLFxuICAgICAgaWQ6IGVsZW1lbnRJZHMuZ2V0SXRlbUlkKGl0ZW1JbmRleCksXG4gICAgICBbcmVmS2V5XTogaGFuZGxlUmVmcyhyZWYsIGl0ZW1Ob2RlID0+IHtcbiAgICAgICAgaWYgKGl0ZW1Ob2RlKSB7XG4gICAgICAgICAgaXRlbVJlZnMuY3VycmVudFtlbGVtZW50SWRzLmdldEl0ZW1JZChpdGVtSW5kZXgpXSA9IGl0ZW1Ob2RlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIC4uLnJlc3RcbiAgICB9O1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGl0ZW1Qcm9wcy5vbkNsaWNrID0gY2FsbEFsbEV2ZW50SGFuZGxlcnMob25DbGljaywgaXRlbUhhbmRsZUNsaWNrKTtcbiAgICB9XG4gICAgaXRlbVByb3BzLm9uTW91c2VNb3ZlID0gY2FsbEFsbEV2ZW50SGFuZGxlcnMob25Nb3VzZU1vdmUsIGl0ZW1IYW5kbGVNb3VzZU1vdmUpO1xuICAgIHJldHVybiBpdGVtUHJvcHM7XG4gIH0sIFtsYXRlc3QsIGl0ZW1zLCBzZWxlY3RlZEl0ZW0sIGVsZW1lbnRJZHMsIHNob3VsZFNjcm9sbFJlZiwgZGlzcGF0Y2hdKTtcbiAgcmV0dXJuIHtcbiAgICAvLyBwcm9wIGdldHRlcnMuXG4gICAgZ2V0VG9nZ2xlQnV0dG9uUHJvcHMsXG4gICAgZ2V0TGFiZWxQcm9wcyxcbiAgICBnZXRNZW51UHJvcHMsXG4gICAgZ2V0SXRlbVByb3BzLFxuICAgIC8vIGFjdGlvbnMuXG4gICAgdG9nZ2xlTWVudSxcbiAgICBvcGVuTWVudSxcbiAgICBjbG9zZU1lbnUsXG4gICAgc2V0SGlnaGxpZ2h0ZWRJbmRleCxcbiAgICBzZWxlY3RJdGVtLFxuICAgIHJlc2V0LFxuICAgIHNldElucHV0VmFsdWUsXG4gICAgLy8gc3RhdGUuXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgICBpc09wZW4sXG4gICAgc2VsZWN0ZWRJdGVtLFxuICAgIGlucHV0VmFsdWVcbiAgfTtcbn1cblxuY29uc3QgSW5wdXRLZXlEb3duQXJyb3dEb3duID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faW5wdXRfa2V5ZG93bl9hcnJvd19kb3duX18nIDogMDtcbmNvbnN0IElucHV0S2V5RG93bkFycm93VXAgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19pbnB1dF9rZXlkb3duX2Fycm93X3VwX18nIDogMTtcbmNvbnN0IElucHV0S2V5RG93bkVzY2FwZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2lucHV0X2tleWRvd25fZXNjYXBlX18nIDogMjtcbmNvbnN0IElucHV0S2V5RG93bkhvbWUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19pbnB1dF9rZXlkb3duX2hvbWVfXycgOiAzO1xuY29uc3QgSW5wdXRLZXlEb3duRW5kID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faW5wdXRfa2V5ZG93bl9lbmRfXycgOiA0O1xuY29uc3QgSW5wdXRLZXlEb3duUGFnZVVwID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faW5wdXRfa2V5ZG93bl9wYWdlX3VwX18nIDogNTtcbmNvbnN0IElucHV0S2V5RG93blBhZ2VEb3duID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faW5wdXRfa2V5ZG93bl9wYWdlX2Rvd25fXycgOiA2O1xuY29uc3QgSW5wdXRLZXlEb3duRW50ZXIgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19pbnB1dF9rZXlkb3duX2VudGVyX18nIDogNztcbmNvbnN0IElucHV0Q2hhbmdlID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19faW5wdXRfY2hhbmdlX18nIDogODtcbmNvbnN0IElucHV0Qmx1ciA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2lucHV0X2JsdXJfXycgOiA5O1xuY29uc3QgSW5wdXRGb2N1cyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2lucHV0X2ZvY3VzX18nIDogMTA7XG5jb25zdCBNZW51TW91c2VMZWF2ZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX21lbnVfbW91c2VfbGVhdmVfXycgOiAxMTtcbmNvbnN0IEl0ZW1Nb3VzZU1vdmUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19pdGVtX21vdXNlX21vdmVfXycgOiAxMjtcbmNvbnN0IEl0ZW1DbGljayA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2l0ZW1fY2xpY2tfXycgOiAxMztcbmNvbnN0IFRvZ2dsZUJ1dHRvbkNsaWNrID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fdG9nZ2xlYnV0dG9uX2NsaWNrX18nIDogMTQ7XG5jb25zdCBGdW5jdGlvblRvZ2dsZU1lbnUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19mdW5jdGlvbl90b2dnbGVfbWVudV9fJyA6IDE1O1xuY29uc3QgRnVuY3Rpb25PcGVuTWVudSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX29wZW5fbWVudV9fJyA6IDE2O1xuY29uc3QgRnVuY3Rpb25DbG9zZU1lbnUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19mdW5jdGlvbl9jbG9zZV9tZW51X18nIDogMTc7XG5jb25zdCBGdW5jdGlvblNldEhpZ2hsaWdodGVkSW5kZXggPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19mdW5jdGlvbl9zZXRfaGlnaGxpZ2h0ZWRfaW5kZXhfXycgOiAxODtcbmNvbnN0IEZ1bmN0aW9uU2VsZWN0SXRlbSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX3NlbGVjdF9pdGVtX18nIDogMTk7XG5jb25zdCBGdW5jdGlvblNldElucHV0VmFsdWUgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19mdW5jdGlvbl9zZXRfaW5wdXRfdmFsdWVfXycgOiAyMDtcbmNvbnN0IEZ1bmN0aW9uUmVzZXQkMSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX3Jlc2V0X18nIDogMjE7XG5jb25zdCBDb250cm9sbGVkUHJvcFVwZGF0ZWRTZWxlY3RlZEl0ZW0gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19jb250cm9sbGVkX3Byb3BfdXBkYXRlZF9zZWxlY3RlZF9pdGVtX18nIDogMjI7XG5cbnZhciBzdGF0ZUNoYW5nZVR5cGVzJDEgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gIF9fcHJvdG9fXzogbnVsbCxcbiAgSW5wdXRLZXlEb3duQXJyb3dEb3duOiBJbnB1dEtleURvd25BcnJvd0Rvd24sXG4gIElucHV0S2V5RG93bkFycm93VXA6IElucHV0S2V5RG93bkFycm93VXAsXG4gIElucHV0S2V5RG93bkVzY2FwZTogSW5wdXRLZXlEb3duRXNjYXBlLFxuICBJbnB1dEtleURvd25Ib21lOiBJbnB1dEtleURvd25Ib21lLFxuICBJbnB1dEtleURvd25FbmQ6IElucHV0S2V5RG93bkVuZCxcbiAgSW5wdXRLZXlEb3duUGFnZVVwOiBJbnB1dEtleURvd25QYWdlVXAsXG4gIElucHV0S2V5RG93blBhZ2VEb3duOiBJbnB1dEtleURvd25QYWdlRG93bixcbiAgSW5wdXRLZXlEb3duRW50ZXI6IElucHV0S2V5RG93bkVudGVyLFxuICBJbnB1dENoYW5nZTogSW5wdXRDaGFuZ2UsXG4gIElucHV0Qmx1cjogSW5wdXRCbHVyLFxuICBJbnB1dEZvY3VzOiBJbnB1dEZvY3VzLFxuICBNZW51TW91c2VMZWF2ZTogTWVudU1vdXNlTGVhdmUsXG4gIEl0ZW1Nb3VzZU1vdmU6IEl0ZW1Nb3VzZU1vdmUsXG4gIEl0ZW1DbGljazogSXRlbUNsaWNrLFxuICBUb2dnbGVCdXR0b25DbGljazogVG9nZ2xlQnV0dG9uQ2xpY2ssXG4gIEZ1bmN0aW9uVG9nZ2xlTWVudTogRnVuY3Rpb25Ub2dnbGVNZW51LFxuICBGdW5jdGlvbk9wZW5NZW51OiBGdW5jdGlvbk9wZW5NZW51LFxuICBGdW5jdGlvbkNsb3NlTWVudTogRnVuY3Rpb25DbG9zZU1lbnUsXG4gIEZ1bmN0aW9uU2V0SGlnaGxpZ2h0ZWRJbmRleDogRnVuY3Rpb25TZXRIaWdobGlnaHRlZEluZGV4LFxuICBGdW5jdGlvblNlbGVjdEl0ZW06IEZ1bmN0aW9uU2VsZWN0SXRlbSxcbiAgRnVuY3Rpb25TZXRJbnB1dFZhbHVlOiBGdW5jdGlvblNldElucHV0VmFsdWUsXG4gIEZ1bmN0aW9uUmVzZXQ6IEZ1bmN0aW9uUmVzZXQkMSxcbiAgQ29udHJvbGxlZFByb3BVcGRhdGVkU2VsZWN0ZWRJdGVtOiBDb250cm9sbGVkUHJvcFVwZGF0ZWRTZWxlY3RlZEl0ZW1cbn0pO1xuXG5mdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUkMShwcm9wcykge1xuICBjb25zdCBpbml0aWFsU3RhdGUgPSBnZXRJbml0aWFsU3RhdGUkMihwcm9wcyk7XG4gIGNvbnN0IHtcbiAgICBzZWxlY3RlZEl0ZW1cbiAgfSA9IGluaXRpYWxTdGF0ZTtcbiAgbGV0IHtcbiAgICBpbnB1dFZhbHVlXG4gIH0gPSBpbml0aWFsU3RhdGU7XG4gIGlmIChpbnB1dFZhbHVlID09PSAnJyAmJiBzZWxlY3RlZEl0ZW0gJiYgcHJvcHMuZGVmYXVsdElucHV0VmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwcm9wcy5pbml0aWFsSW5wdXRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIHByb3BzLmlucHV0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGlucHV0VmFsdWUgPSBwcm9wcy5pdGVtVG9TdHJpbmcoc2VsZWN0ZWRJdGVtKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLmluaXRpYWxTdGF0ZSxcbiAgICBpbnB1dFZhbHVlXG4gIH07XG59XG5jb25zdCBwcm9wVHlwZXMkMSA9IHtcbiAgaXRlbXM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBpdGVtVG9TdHJpbmc6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRBMTF5U3RhdHVzTWVzc2FnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldEExMXlTZWxlY3Rpb25NZXNzYWdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgaGlnaGxpZ2h0ZWRJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIGluaXRpYWxIaWdobGlnaHRlZEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICBpc09wZW46IFByb3BUeXBlcy5ib29sLFxuICBkZWZhdWx0SXNPcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5pdGlhbElzT3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdGVkSXRlbTogUHJvcFR5cGVzLmFueSxcbiAgaW5pdGlhbFNlbGVjdGVkSXRlbTogUHJvcFR5cGVzLmFueSxcbiAgZGVmYXVsdFNlbGVjdGVkSXRlbTogUHJvcFR5cGVzLmFueSxcbiAgaW5wdXRWYWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZGVmYXVsdElucHV0VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGluaXRpYWxJbnB1dFZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbGFiZWxJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgbWVudUlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBnZXRJdGVtSWQ6IFByb3BUeXBlcy5mdW5jLFxuICBpbnB1dElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b2dnbGVCdXR0b25JZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3RhdGVSZWR1Y2VyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWxlY3RlZEl0ZW1DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkhpZ2hsaWdodGVkSW5kZXhDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblN0YXRlQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Jc09wZW5DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbklucHV0VmFsdWVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBlbnZpcm9ubWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhZGRFdmVudExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkb2N1bWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGdldEVsZW1lbnRCeUlkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGFjdGl2ZUVsZW1lbnQ6IFByb3BUeXBlcy5hbnksXG4gICAgICBib2R5OiBQcm9wVHlwZXMuYW55XG4gICAgfSlcbiAgfSlcbn07XG5cbi8qKlxuICogVGhlIHVzZUNvbWJvYm94IHZlcnNpb24gb2YgdXNlQ29udHJvbGxlZFJlZHVjZXIsIHdoaWNoIGFsc29cbiAqIGNoZWNrcyBpZiB0aGUgY29udHJvbGxlZCBwcm9wIHNlbGVjdGVkSXRlbSBjaGFuZ2VkIGJldHdlZW5cbiAqIHJlbmRlcnMuIElmIHNvLCBpdCB3aWxsIGFsc28gdXBkYXRlIGlucHV0VmFsdWUgd2l0aCBpdHNcbiAqIHN0cmluZyBlcXVpdmFsZW50LiBJdCB1c2VzIHRoZSBjb21tb24gdXNlRW5oYW5jZWRSZWR1Y2VyIHRvXG4gKiBjb21wdXRlIHRoZSByZXN0IG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIFJlZHVjZXIgZnVuY3Rpb24gZnJvbSBkb3duc2hpZnQuXG4gKiBAcGFyYW0ge09iamVjdH0gaW5pdGlhbFN0YXRlIEluaXRpYWwgc3RhdGUgb2YgdGhlIGhvb2suXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgVGhlIGhvb2sgcHJvcHMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IEFuIGFycmF5IHdpdGggdGhlIHN0YXRlIGFuZCBhbiBhY3Rpb24gZGlzcGF0Y2hlci5cbiAqL1xuZnVuY3Rpb24gdXNlQ29udHJvbGxlZFJlZHVjZXIocmVkdWNlciwgaW5pdGlhbFN0YXRlLCBwcm9wcykge1xuICBjb25zdCBwcmV2aW91c1NlbGVjdGVkSXRlbVJlZiA9IHVzZVJlZigpO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUVuaGFuY2VkUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsU3RhdGUsIHByb3BzKTtcblxuICAvLyBUb0RvOiBpZiBuZWVkZWQsIG1ha2Ugc2FtZSBhcHByb2FjaCBhcyBzZWxlY3RlZEl0ZW1DaGFuZ2VkIGZyb20gRG93bnNoaWZ0LlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0NvbnRyb2xsZWRQcm9wKHByb3BzLCAnc2VsZWN0ZWRJdGVtJykpIHtcbiAgICAgIGlmIChwcmV2aW91c1NlbGVjdGVkSXRlbVJlZi5jdXJyZW50ICE9PSBwcm9wcy5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IENvbnRyb2xsZWRQcm9wVXBkYXRlZFNlbGVjdGVkSXRlbSxcbiAgICAgICAgICBpbnB1dFZhbHVlOiBwcm9wcy5pdGVtVG9TdHJpbmcocHJvcHMuc2VsZWN0ZWRJdGVtKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzU2VsZWN0ZWRJdGVtUmVmLmN1cnJlbnQgPSBzdGF0ZS5zZWxlY3RlZEl0ZW0gPT09IHByZXZpb3VzU2VsZWN0ZWRJdGVtUmVmLmN1cnJlbnQgPyBwcm9wcy5zZWxlY3RlZEl0ZW0gOiBzdGF0ZS5zZWxlY3RlZEl0ZW07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIFtnZXRTdGF0ZShzdGF0ZSwgcHJvcHMpLCBkaXNwYXRjaF07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzXG5sZXQgdmFsaWRhdGVQcm9wVHlwZXMkMSA9IG5vb3A7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVQcm9wVHlwZXMkMSA9IChvcHRpb25zLCBjYWxsZXIpID0+IHtcbiAgICBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMocHJvcFR5cGVzJDEsIG9wdGlvbnMsICdwcm9wJywgY2FsbGVyLm5hbWUpO1xuICB9O1xufVxuY29uc3QgZGVmYXVsdFByb3BzJDEgPSB7XG4gIC4uLmRlZmF1bHRQcm9wcyQzLFxuICBnZXRBMTF5U3RhdHVzTWVzc2FnZTogZ2V0QTExeVN0YXR1c01lc3NhZ2UkMVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZnVuY3Rpb24gZG93bnNoaWZ0VXNlQ29tYm9ib3hSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgcHJvcHMsXG4gICAgYWx0S2V5XG4gIH0gPSBhY3Rpb247XG4gIGxldCBjaGFuZ2VzO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEl0ZW1DbGljazpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdpc09wZW4nKSxcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdoaWdobGlnaHRlZEluZGV4JyksXG4gICAgICAgIHNlbGVjdGVkSXRlbTogcHJvcHMuaXRlbXNbYWN0aW9uLmluZGV4XSxcbiAgICAgICAgaW5wdXRWYWx1ZTogcHJvcHMuaXRlbVRvU3RyaW5nKHByb3BzLml0ZW1zW2FjdGlvbi5pbmRleF0pXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBJbnB1dEtleURvd25BcnJvd0Rvd246XG4gICAgICBpZiAoc3RhdGUuaXNPcGVuKSB7XG4gICAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dFdyYXBwaW5nSW5kZXgoMSwgc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleCwgcHJvcHMuaXRlbXMubGVuZ3RoLCBhY3Rpb24uZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIHRydWUpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGFsdEtleSAmJiBzdGF0ZS5zZWxlY3RlZEl0ZW0gPT0gbnVsbCA/IC0xIDogZ2V0SGlnaGxpZ2h0ZWRJbmRleE9uT3Blbihwcm9wcywgc3RhdGUsIDEsIGFjdGlvbi5nZXRJdGVtTm9kZUZyb21JbmRleCksXG4gICAgICAgICAgaXNPcGVuOiBwcm9wcy5pdGVtcy5sZW5ndGggPj0gMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBJbnB1dEtleURvd25BcnJvd1VwOlxuICAgICAgaWYgKHN0YXRlLmlzT3Blbikge1xuICAgICAgICBpZiAoYWx0S2V5KSB7XG4gICAgICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgICAgIGlzT3BlbjogZ2V0RGVmYXVsdFZhbHVlJDEocHJvcHMsICdpc09wZW4nKSxcbiAgICAgICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICAgICAgLi4uKHN0YXRlLmhpZ2hsaWdodGVkSW5kZXggPj0gMCAmJiB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbTogcHJvcHMuaXRlbXNbc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleF0sXG4gICAgICAgICAgICAgIGlucHV0VmFsdWU6IHByb3BzLml0ZW1Ub1N0cmluZyhwcm9wcy5pdGVtc1tzdGF0ZS5oaWdobGlnaHRlZEluZGV4XSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dFdyYXBwaW5nSW5kZXgoLTEsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCB0cnVlKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0SGlnaGxpZ2h0ZWRJbmRleE9uT3Blbihwcm9wcywgc3RhdGUsIC0xLCBhY3Rpb24uZ2V0SXRlbU5vZGVGcm9tSW5kZXgpLFxuICAgICAgICAgIGlzT3BlbjogcHJvcHMuaXRlbXMubGVuZ3RoID49IDBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgSW5wdXRLZXlEb3duRW50ZXI6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaXNPcGVuJyksXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICAuLi4oc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleCA+PSAwICYmIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW06IHByb3BzLml0ZW1zW3N0YXRlLmhpZ2hsaWdodGVkSW5kZXhdLFxuICAgICAgICAgIGlucHV0VmFsdWU6IHByb3BzLml0ZW1Ub1N0cmluZyhwcm9wcy5pdGVtc1tzdGF0ZS5oaWdobGlnaHRlZEluZGV4XSlcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIElucHV0S2V5RG93bkVzY2FwZTpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogZmFsc2UsXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IC0xLFxuICAgICAgICAuLi4oIXN0YXRlLmlzT3BlbiAmJiB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtOiBudWxsLFxuICAgICAgICAgIGlucHV0VmFsdWU6ICcnXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBJbnB1dEtleURvd25QYWdlVXA6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiBnZXROZXh0V3JhcHBpbmdJbmRleCgtMTAsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSlcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIElucHV0S2V5RG93blBhZ2VEb3duOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0TmV4dFdyYXBwaW5nSW5kZXgoMTAsIHN0YXRlLmhpZ2hsaWdodGVkSW5kZXgsIHByb3BzLml0ZW1zLmxlbmd0aCwgYWN0aW9uLmdldEl0ZW1Ob2RlRnJvbUluZGV4LCBmYWxzZSlcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIElucHV0S2V5RG93bkhvbWU6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiBnZXROZXh0Tm9uRGlzYWJsZWRJbmRleCgxLCAwLCBwcm9wcy5pdGVtcy5sZW5ndGgsIGFjdGlvbi5nZXRJdGVtTm9kZUZyb21JbmRleCwgZmFsc2UpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBJbnB1dEtleURvd25FbmQ6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBoaWdobGlnaHRlZEluZGV4OiBnZXROZXh0Tm9uRGlzYWJsZWRJbmRleCgtMSwgcHJvcHMuaXRlbXMubGVuZ3RoIC0gMSwgcHJvcHMuaXRlbXMubGVuZ3RoLCBhY3Rpb24uZ2V0SXRlbU5vZGVGcm9tSW5kZXgsIGZhbHNlKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgSW5wdXRCbHVyOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaXNPcGVuOiBmYWxzZSxcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogLTEsXG4gICAgICAgIC4uLihzdGF0ZS5oaWdobGlnaHRlZEluZGV4ID49IDAgJiYgYWN0aW9uLnNlbGVjdEl0ZW0gJiYge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbTogcHJvcHMuaXRlbXNbc3RhdGUuaGlnaGxpZ2h0ZWRJbmRleF0sXG4gICAgICAgICAgaW5wdXRWYWx1ZTogcHJvcHMuaXRlbVRvU3RyaW5nKHByb3BzLml0ZW1zW3N0YXRlLmhpZ2hsaWdodGVkSW5kZXhdKVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgSW5wdXRDaGFuZ2U6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IGdldERlZmF1bHRWYWx1ZSQxKHByb3BzLCAnaGlnaGxpZ2h0ZWRJbmRleCcpLFxuICAgICAgICBpbnB1dFZhbHVlOiBhY3Rpb24uaW5wdXRWYWx1ZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgSW5wdXRGb2N1czpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgaGlnaGxpZ2h0ZWRJbmRleDogZ2V0SGlnaGxpZ2h0ZWRJbmRleE9uT3Blbihwcm9wcywgc3RhdGUsIDApXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGdW5jdGlvblNlbGVjdEl0ZW06XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBzZWxlY3RlZEl0ZW06IGFjdGlvbi5zZWxlY3RlZEl0ZW0sXG4gICAgICAgIGlucHV0VmFsdWU6IHByb3BzLml0ZW1Ub1N0cmluZyhhY3Rpb24uc2VsZWN0ZWRJdGVtKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQ29udHJvbGxlZFByb3BVcGRhdGVkU2VsZWN0ZWRJdGVtOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgaW5wdXRWYWx1ZTogYWN0aW9uLmlucHV0VmFsdWVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRvd25zaGlmdENvbW1vblJlZHVjZXIoc3RhdGUsIGFjdGlvbiwgc3RhdGVDaGFuZ2VUeXBlcyQxKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmNoYW5nZXNcbiAgfTtcbn1cbi8qIGVzbGludC1lbmFibGUgY29tcGxleGl0eSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtc3RhdGVtZW50cyAqL1xudXNlQ29tYm9ib3guc3RhdGVDaGFuZ2VUeXBlcyA9IHN0YXRlQ2hhbmdlVHlwZXMkMTtcbmZ1bmN0aW9uIHVzZUNvbWJvYm94KHVzZXJQcm9wcykge1xuICBpZiAodXNlclByb3BzID09PSB2b2lkIDApIHtcbiAgICB1c2VyUHJvcHMgPSB7fTtcbiAgfVxuICB2YWxpZGF0ZVByb3BUeXBlcyQxKHVzZXJQcm9wcywgdXNlQ29tYm9ib3gpO1xuICAvLyBQcm9wcyBkZWZhdWx0cyBhbmQgZGVzdHJ1Y3R1cmluZy5cbiAgY29uc3QgcHJvcHMgPSB7XG4gICAgLi4uZGVmYXVsdFByb3BzJDEsXG4gICAgLi4udXNlclByb3BzXG4gIH07XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsSXNPcGVuLFxuICAgIGRlZmF1bHRJc09wZW4sXG4gICAgaXRlbXMsXG4gICAgc2Nyb2xsSW50b1ZpZXcsXG4gICAgZW52aXJvbm1lbnQsXG4gICAgZ2V0QTExeVN0YXR1c01lc3NhZ2UsXG4gICAgZ2V0QTExeVNlbGVjdGlvbk1lc3NhZ2UsXG4gICAgaXRlbVRvU3RyaW5nXG4gIH0gPSBwcm9wcztcbiAgLy8gSW5pdGlhbCBzdGF0ZSBkZXBlbmRpbmcgb24gY29udHJvbGxlZCBwcm9wcy5cbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gZ2V0SW5pdGlhbFN0YXRlJDEocHJvcHMpO1xuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUNvbnRyb2xsZWRSZWR1Y2VyKGRvd25zaGlmdFVzZUNvbWJvYm94UmVkdWNlciwgaW5pdGlhbFN0YXRlLCBwcm9wcyk7XG4gIGNvbnN0IHtcbiAgICBpc09wZW4sXG4gICAgaGlnaGxpZ2h0ZWRJbmRleCxcbiAgICBzZWxlY3RlZEl0ZW0sXG4gICAgaW5wdXRWYWx1ZVxuICB9ID0gc3RhdGU7XG5cbiAgLy8gRWxlbWVudCByZWZzLlxuICBjb25zdCBtZW51UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBpdGVtUmVmcyA9IHVzZVJlZih7fSk7XG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0b2dnbGVCdXR0b25SZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGlzSW5pdGlhbE1vdW50UmVmID0gdXNlUmVmKHRydWUpO1xuICAvLyBwcmV2ZW50IGlkIHJlLWdlbmVyYXRpb24gYmV0d2VlbiByZW5kZXJzLlxuICBjb25zdCBlbGVtZW50SWRzID0gdXNlRWxlbWVudElkcyhwcm9wcyk7XG4gIC8vIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBob3cgbWFueSBpdGVtcyB3ZSBoYWQgb24gcHJldmlvdXMgY3ljbGUuXG4gIGNvbnN0IHByZXZpb3VzUmVzdWx0Q291bnRSZWYgPSB1c2VSZWYoKTtcbiAgLy8gdXRpbGl0eSBjYWxsYmFjayB0byBnZXQgaXRlbSBlbGVtZW50LlxuICBjb25zdCBsYXRlc3QgPSB1c2VMYXRlc3RSZWYoe1xuICAgIHN0YXRlLFxuICAgIHByb3BzXG4gIH0pO1xuICBjb25zdCBnZXRJdGVtTm9kZUZyb21JbmRleCA9IHVzZUNhbGxiYWNrKGluZGV4ID0+IGl0ZW1SZWZzLmN1cnJlbnRbZWxlbWVudElkcy5nZXRJdGVtSWQoaW5kZXgpXSwgW2VsZW1lbnRJZHNdKTtcblxuICAvLyBFZmZlY3RzLlxuICAvLyBTZXRzIGExMXkgc3RhdHVzIG1lc3NhZ2Ugb24gY2hhbmdlcyBpbiBzdGF0ZS5cbiAgdXNlQTExeU1lc3NhZ2VTZXR0ZXIoZ2V0QTExeVN0YXR1c01lc3NhZ2UsIFtpc09wZW4sIGhpZ2hsaWdodGVkSW5kZXgsIGlucHV0VmFsdWUsIGl0ZW1zXSwge1xuICAgIGlzSW5pdGlhbE1vdW50OiBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50LFxuICAgIHByZXZpb3VzUmVzdWx0Q291bnQ6IHByZXZpb3VzUmVzdWx0Q291bnRSZWYuY3VycmVudCxcbiAgICBpdGVtcyxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBpdGVtVG9TdHJpbmcsXG4gICAgLi4uc3RhdGVcbiAgfSk7XG4gIC8vIFNldHMgYTExeSBzdGF0dXMgbWVzc2FnZSBvbiBjaGFuZ2VzIGluIHNlbGVjdGVkSXRlbS5cbiAgdXNlQTExeU1lc3NhZ2VTZXR0ZXIoZ2V0QTExeVNlbGVjdGlvbk1lc3NhZ2UsIFtzZWxlY3RlZEl0ZW1dLCB7XG4gICAgaXNJbml0aWFsTW91bnQ6IGlzSW5pdGlhbE1vdW50UmVmLmN1cnJlbnQsXG4gICAgcHJldmlvdXNSZXN1bHRDb3VudDogcHJldmlvdXNSZXN1bHRDb3VudFJlZi5jdXJyZW50LFxuICAgIGl0ZW1zLFxuICAgIGVudmlyb25tZW50LFxuICAgIGl0ZW1Ub1N0cmluZyxcbiAgICAuLi5zdGF0ZVxuICB9KTtcbiAgLy8gU2Nyb2xsIG9uIGhpZ2hsaWdodGVkIGl0ZW0gaWYgY2hhbmdlIGNvbWVzIGZyb20ga2V5Ym9hcmQuXG4gIGNvbnN0IHNob3VsZFNjcm9sbFJlZiA9IHVzZVNjcm9sbEludG9WaWV3KHtcbiAgICBtZW51RWxlbWVudDogbWVudVJlZi5jdXJyZW50LFxuICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgaXNPcGVuLFxuICAgIGl0ZW1SZWZzLFxuICAgIHNjcm9sbEludG9WaWV3LFxuICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gIH0pO1xuICB1c2VDb250cm9sUHJvcHNWYWxpZGF0b3Ioe1xuICAgIGlzSW5pdGlhbE1vdW50OiBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50LFxuICAgIHByb3BzLFxuICAgIHN0YXRlXG4gIH0pO1xuICAvLyBGb2N1cyB0aGUgaW5wdXQgb24gZmlyc3QgcmVuZGVyIGlmIHJlcXVpcmVkLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZvY3VzT25PcGVuID0gaW5pdGlhbElzT3BlbiB8fCBkZWZhdWx0SXNPcGVuIHx8IGlzT3BlbjtcbiAgICBpZiAoZm9jdXNPbk9wZW4gJiYgaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwcmV2aW91c1Jlc3VsdENvdW50UmVmLmN1cnJlbnQgPSBpdGVtcy5sZW5ndGg7XG4gIH0pO1xuICAvLyBBZGQgbW91c2UvdG91Y2ggZXZlbnRzIHRvIGRvY3VtZW50LlxuICBjb25zdCBtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYgPSB1c2VNb3VzZUFuZFRvdWNoVHJhY2tlcihpc09wZW4sIFtpbnB1dFJlZiwgbWVudVJlZiwgdG9nZ2xlQnV0dG9uUmVmXSwgZW52aXJvbm1lbnQsICgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBJbnB1dEJsdXIsXG4gICAgICBzZWxlY3RJdGVtOiBmYWxzZVxuICAgIH0pO1xuICB9KTtcbiAgY29uc3Qgc2V0R2V0dGVyUHJvcENhbGxJbmZvID0gdXNlR2V0dGVyUHJvcHNDYWxsZWRDaGVja2VyKCdnZXRJbnB1dFByb3BzJywgJ2dldE1lbnVQcm9wcycpO1xuICAvLyBNYWtlIGluaXRpYWwgcmVmIGZhbHNlLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzSW5pdGlhbE1vdW50UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgfSwgW10pO1xuICAvLyBSZXNldCBpdGVtUmVmcyBvbiBjbG9zZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgaXRlbVJlZnMuY3VycmVudCA9IHt9O1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgdmFyIF9pbnB1dFJlZiRjdXJyZW50O1xuICAgICAgaW5wdXRSZWYgPT0gbnVsbCA/IHZvaWQgMCA6IChfaW5wdXRSZWYkY3VycmVudCA9IGlucHV0UmVmLmN1cnJlbnQpID09IG51bGwgPyB2b2lkIDAgOiBfaW5wdXRSZWYkY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW2lzT3Blbl0pO1xuXG4gIC8qIEV2ZW50IGhhbmRsZXIgZnVuY3Rpb25zICovXG4gIGNvbnN0IGlucHV0S2V5RG93bkhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIEFycm93RG93bihldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogSW5wdXRLZXlEb3duQXJyb3dEb3duLFxuICAgICAgICBhbHRLZXk6IGV2ZW50LmFsdEtleSxcbiAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgQXJyb3dVcChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogSW5wdXRLZXlEb3duQXJyb3dVcCxcbiAgICAgICAgYWx0S2V5OiBldmVudC5hbHRLZXksXG4gICAgICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gICAgICB9KTtcbiAgICB9LFxuICAgIEhvbWUoZXZlbnQpIHtcbiAgICAgIGlmICghbGF0ZXN0LmN1cnJlbnQuc3RhdGUuaXNPcGVuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IElucHV0S2V5RG93bkhvbWUsXG4gICAgICAgIGdldEl0ZW1Ob2RlRnJvbUluZGV4XG4gICAgICB9KTtcbiAgICB9LFxuICAgIEVuZChldmVudCkge1xuICAgICAgaWYgKCFsYXRlc3QuY3VycmVudC5zdGF0ZS5pc09wZW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgdHlwZTogSW5wdXRLZXlEb3duRW5kLFxuICAgICAgICBnZXRJdGVtTm9kZUZyb21JbmRleFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBFc2NhcGUoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGxhdGVzdFN0YXRlID0gbGF0ZXN0LmN1cnJlbnQuc3RhdGU7XG4gICAgICBpZiAobGF0ZXN0U3RhdGUuaXNPcGVuIHx8IGxhdGVzdFN0YXRlLmlucHV0VmFsdWUgfHwgbGF0ZXN0U3RhdGUuc2VsZWN0ZWRJdGVtIHx8IGxhdGVzdFN0YXRlLmhpZ2hsaWdodGVkSW5kZXggPiAtMSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogSW5wdXRLZXlEb3duRXNjYXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgRW50ZXIoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGxhdGVzdFN0YXRlID0gbGF0ZXN0LmN1cnJlbnQuc3RhdGU7XG4gICAgICAvLyBpZiBjbG9zZWQgb3Igbm8gaGlnaGxpZ2h0ZWQgaW5kZXgsIGRvIG5vdGhpbmcuXG4gICAgICBpZiAoIWxhdGVzdFN0YXRlLmlzT3BlbiB8fCBldmVudC53aGljaCA9PT0gMjI5IC8vIGlmIElNRSBjb21wb3NpbmcsIHdhaXQgZm9yIG5leHQgRW50ZXIga2V5ZG93biBldmVudC5cbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBJbnB1dEtleURvd25FbnRlcixcbiAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgUGFnZVVwKGV2ZW50KSB7XG4gICAgICBpZiAobGF0ZXN0LmN1cnJlbnQuc3RhdGUuaXNPcGVuKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBJbnB1dEtleURvd25QYWdlVXAsXG4gICAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBQYWdlRG93bihldmVudCkge1xuICAgICAgaWYgKGxhdGVzdC5jdXJyZW50LnN0YXRlLmlzT3Blbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogSW5wdXRLZXlEb3duUGFnZURvd24sXG4gICAgICAgICAgZ2V0SXRlbU5vZGVGcm9tSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgW2Rpc3BhdGNoLCBsYXRlc3QsIGdldEl0ZW1Ob2RlRnJvbUluZGV4XSk7XG5cbiAgLy8gR2V0dGVyIHByb3BzLlxuICBjb25zdCBnZXRMYWJlbFByb3BzID0gdXNlQ2FsbGJhY2sobGFiZWxQcm9wcyA9PiAoe1xuICAgIGlkOiBlbGVtZW50SWRzLmxhYmVsSWQsXG4gICAgaHRtbEZvcjogZWxlbWVudElkcy5pbnB1dElkLFxuICAgIC4uLmxhYmVsUHJvcHNcbiAgfSksIFtlbGVtZW50SWRzXSk7XG4gIGNvbnN0IGdldE1lbnVQcm9wcyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChfdGVtcCwgX3RlbXAyKSB7XG4gICAgbGV0IHtcbiAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgcmVmLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgICBsZXQge1xuICAgICAgc3VwcHJlc3NSZWZFcnJvciA9IGZhbHNlXG4gICAgfSA9IF90ZW1wMiA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDI7XG4gICAgc2V0R2V0dGVyUHJvcENhbGxJbmZvKCdnZXRNZW51UHJvcHMnLCBzdXBwcmVzc1JlZkVycm9yLCByZWZLZXksIG1lbnVSZWYpO1xuICAgIHJldHVybiB7XG4gICAgICBbcmVmS2V5XTogaGFuZGxlUmVmcyhyZWYsIG1lbnVOb2RlID0+IHtcbiAgICAgICAgbWVudVJlZi5jdXJyZW50ID0gbWVudU5vZGU7XG4gICAgICB9KSxcbiAgICAgIGlkOiBlbGVtZW50SWRzLm1lbnVJZCxcbiAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBlbGVtZW50SWRzLmxhYmVsSWQsXG4gICAgICBvbk1vdXNlTGVhdmU6IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uTW91c2VMZWF2ZSwgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogTWVudU1vdXNlTGVhdmVcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIC4uLnJlc3RcbiAgICB9O1xuICB9LCBbZGlzcGF0Y2gsIHNldEdldHRlclByb3BDYWxsSW5mbywgZWxlbWVudElkc10pO1xuICBjb25zdCBnZXRJdGVtUHJvcHMgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoX3RlbXAzKSB7XG4gICAgbGV0IHtcbiAgICAgIGl0ZW0sXG4gICAgICBpbmRleCxcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgcmVmLFxuICAgICAgb25Nb3VzZU1vdmUsXG4gICAgICBvbk1vdXNlRG93bixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvblByZXNzLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICAuLi5yZXN0XG4gICAgfSA9IF90ZW1wMyA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDM7XG4gICAgY29uc3Qge1xuICAgICAgcHJvcHM6IGxhdGVzdFByb3BzLFxuICAgICAgc3RhdGU6IGxhdGVzdFN0YXRlXG4gICAgfSA9IGxhdGVzdC5jdXJyZW50O1xuICAgIGNvbnN0IGl0ZW1JbmRleCA9IGdldEl0ZW1JbmRleChpbmRleCwgaXRlbSwgbGF0ZXN0UHJvcHMuaXRlbXMpO1xuICAgIGlmIChpdGVtSW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bhc3MgZWl0aGVyIGl0ZW0gb3IgaXRlbSBpbmRleCBpbiBnZXRJdGVtUHJvcHMhJyk7XG4gICAgfVxuICAgIGNvbnN0IG9uU2VsZWN0S2V5ID0gJ29uQ2xpY2snO1xuICAgIGNvbnN0IGN1c3RvbUNsaWNrSGFuZGxlciA9IG9uQ2xpY2s7XG4gICAgY29uc3QgaXRlbUhhbmRsZU1vdXNlTW92ZSA9ICgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gbGF0ZXN0U3RhdGUuaGlnaGxpZ2h0ZWRJbmRleCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzaG91bGRTY3JvbGxSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBJdGVtTW91c2VNb3ZlLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgZGlzYWJsZWRcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3QgaXRlbUhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBJdGVtQ2xpY2ssXG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGl0ZW1IYW5kbGVNb3VzZURvd24gPSBlID0+IGUucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4ge1xuICAgICAgW3JlZktleV06IGhhbmRsZVJlZnMocmVmLCBpdGVtTm9kZSA9PiB7XG4gICAgICAgIGlmIChpdGVtTm9kZSkge1xuICAgICAgICAgIGl0ZW1SZWZzLmN1cnJlbnRbZWxlbWVudElkcy5nZXRJdGVtSWQoaXRlbUluZGV4KV0gPSBpdGVtTm9kZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBgJHtpdGVtSW5kZXggPT09IGxhdGVzdFN0YXRlLmhpZ2hsaWdodGVkSW5kZXh9YCxcbiAgICAgIGlkOiBlbGVtZW50SWRzLmdldEl0ZW1JZChpdGVtSW5kZXgpLFxuICAgICAgLi4uKCFkaXNhYmxlZCAmJiB7XG4gICAgICAgIFtvblNlbGVjdEtleV06IGNhbGxBbGxFdmVudEhhbmRsZXJzKGN1c3RvbUNsaWNrSGFuZGxlciwgaXRlbUhhbmRsZUNsaWNrKVxuICAgICAgfSksXG4gICAgICBvbk1vdXNlTW92ZTogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25Nb3VzZU1vdmUsIGl0ZW1IYW5kbGVNb3VzZU1vdmUpLFxuICAgICAgb25Nb3VzZURvd246IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uTW91c2VEb3duLCBpdGVtSGFuZGxlTW91c2VEb3duKSxcbiAgICAgIC4uLnJlc3RcbiAgICB9O1xuICB9LCBbZGlzcGF0Y2gsIGxhdGVzdCwgc2hvdWxkU2Nyb2xsUmVmLCBlbGVtZW50SWRzXSk7XG4gIGNvbnN0IGdldFRvZ2dsZUJ1dHRvblByb3BzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKF90ZW1wNCkge1xuICAgIGxldCB7XG4gICAgICBvbkNsaWNrLFxuICAgICAgb25QcmVzcyxcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgcmVmLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcDQgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA0O1xuICAgIGNvbnN0IGxhdGVzdFN0YXRlID0gbGF0ZXN0LmN1cnJlbnQuc3RhdGU7XG4gICAgY29uc3QgdG9nZ2xlQnV0dG9uSGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFRvZ2dsZUJ1dHRvbkNsaWNrXG4gICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBbcmVmS2V5XTogaGFuZGxlUmVmcyhyZWYsIHRvZ2dsZUJ1dHRvbk5vZGUgPT4ge1xuICAgICAgICB0b2dnbGVCdXR0b25SZWYuY3VycmVudCA9IHRvZ2dsZUJ1dHRvbk5vZGU7XG4gICAgICB9KSxcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogZWxlbWVudElkcy5tZW51SWQsXG4gICAgICAnYXJpYS1leHBhbmRlZCc6IGxhdGVzdFN0YXRlLmlzT3BlbixcbiAgICAgIGlkOiBlbGVtZW50SWRzLnRvZ2dsZUJ1dHRvbklkLFxuICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgLi4uKCFyZXN0LmRpc2FibGVkICYmIHtcbiAgICAgICAgLi4uKHtcbiAgICAgICAgICBvbkNsaWNrOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbkNsaWNrLCB0b2dnbGVCdXR0b25IYW5kbGVDbGljaylcbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgLi4ucmVzdFxuICAgIH07XG4gIH0sIFtkaXNwYXRjaCwgbGF0ZXN0LCBlbGVtZW50SWRzXSk7XG4gIGNvbnN0IGdldElucHV0UHJvcHMgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoX3RlbXA1LCBfdGVtcDYpIHtcbiAgICBsZXQge1xuICAgICAgb25LZXlEb3duLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbklucHV0LFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlVGV4dCxcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgcmVmLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcDUgPT09IHZvaWQgMCA/IHt9IDogX3RlbXA1O1xuICAgIGxldCB7XG4gICAgICBzdXBwcmVzc1JlZkVycm9yID0gZmFsc2VcbiAgICB9ID0gX3RlbXA2ID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wNjtcbiAgICBzZXRHZXR0ZXJQcm9wQ2FsbEluZm8oJ2dldElucHV0UHJvcHMnLCBzdXBwcmVzc1JlZkVycm9yLCByZWZLZXksIGlucHV0UmVmKTtcbiAgICBjb25zdCBsYXRlc3RTdGF0ZSA9IGxhdGVzdC5jdXJyZW50LnN0YXRlO1xuICAgIGNvbnN0IGlucHV0SGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IG5vcm1hbGl6ZUFycm93S2V5KGV2ZW50KTtcbiAgICAgIGlmIChrZXkgJiYgaW5wdXRLZXlEb3duSGFuZGxlcnNba2V5XSkge1xuICAgICAgICBpbnB1dEtleURvd25IYW5kbGVyc1trZXldKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGlucHV0SGFuZGxlQ2hhbmdlID0gZXZlbnQgPT4ge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBJbnB1dENoYW5nZSxcbiAgICAgICAgaW5wdXRWYWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICB9KTtcbiAgICB9O1xuICAgIGNvbnN0IGlucHV0SGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAobGF0ZXN0U3RhdGUuaXNPcGVuICYmICFtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYuY3VycmVudC5pc01vdXNlRG93bikge1xuICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgdHlwZTogSW5wdXRCbHVyLFxuICAgICAgICAgIHNlbGVjdEl0ZW06IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBpbnB1dEhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgICAgaWYgKCFsYXRlc3RTdGF0ZS5pc09wZW4pIHtcbiAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgIHR5cGU6IElucHV0Rm9jdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IChwcmVhY3QpICovXG4gICAgY29uc3Qgb25DaGFuZ2VLZXkgPSAnb25DaGFuZ2UnO1xuICAgIGxldCBldmVudEhhbmRsZXJzID0ge307XG4gICAgaWYgKCFyZXN0LmRpc2FibGVkKSB7XG4gICAgICBldmVudEhhbmRsZXJzID0ge1xuICAgICAgICBbb25DaGFuZ2VLZXldOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbkNoYW5nZSwgb25JbnB1dCwgaW5wdXRIYW5kbGVDaGFuZ2UpLFxuICAgICAgICBvbktleURvd246IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uS2V5RG93biwgaW5wdXRIYW5kbGVLZXlEb3duKSxcbiAgICAgICAgb25CbHVyOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbkJsdXIsIGlucHV0SGFuZGxlQmx1ciksXG4gICAgICAgIG9uRm9jdXM6IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uRm9jdXMsIGlucHV0SGFuZGxlRm9jdXMpXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgW3JlZktleV06IGhhbmRsZVJlZnMocmVmLCBpbnB1dE5vZGUgPT4ge1xuICAgICAgICBpbnB1dFJlZi5jdXJyZW50ID0gaW5wdXROb2RlO1xuICAgICAgfSksXG4gICAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogbGF0ZXN0U3RhdGUuaXNPcGVuICYmIGxhdGVzdFN0YXRlLmhpZ2hsaWdodGVkSW5kZXggPiAtMSA/IGVsZW1lbnRJZHMuZ2V0SXRlbUlkKGxhdGVzdFN0YXRlLmhpZ2hsaWdodGVkSW5kZXgpIDogJycsXG4gICAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbGlzdCcsXG4gICAgICAnYXJpYS1jb250cm9scyc6IGVsZW1lbnRJZHMubWVudUlkLFxuICAgICAgJ2FyaWEtZXhwYW5kZWQnOiBsYXRlc3RTdGF0ZS5pc09wZW4sXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogZWxlbWVudElkcy5sYWJlbElkLFxuICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2VjdXJpbmdfeW91cl9zaXRlL1R1cm5pbmdfb2ZmX2Zvcm1fYXV0b2NvbXBsZXRpb25cbiAgICAgIC8vIHJldmVydCBiYWNrIHNpbmNlIGF1dG9jb21wbGV0ZT1cIm5vcGVcIiBpcyBpZ25vcmVkIG9uIGxhdGVzdCBDaHJvbWUgYW5kIE9wZXJhXG4gICAgICBhdXRvQ29tcGxldGU6ICdvZmYnLFxuICAgICAgaWQ6IGVsZW1lbnRJZHMuaW5wdXRJZCxcbiAgICAgIHJvbGU6ICdjb21ib2JveCcsXG4gICAgICB2YWx1ZTogbGF0ZXN0U3RhdGUuaW5wdXRWYWx1ZSxcbiAgICAgIC4uLmV2ZW50SGFuZGxlcnMsXG4gICAgICAuLi5yZXN0XG4gICAgfTtcbiAgfSwgW2Rpc3BhdGNoLCBpbnB1dEtleURvd25IYW5kbGVycywgbGF0ZXN0LCBtb3VzZUFuZFRvdWNoVHJhY2tlcnNSZWYsIHNldEdldHRlclByb3BDYWxsSW5mbywgZWxlbWVudElkc10pO1xuXG4gIC8vIHJldHVybnNcbiAgY29uc3QgdG9nZ2xlTWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblRvZ2dsZU1lbnVcbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIGNvbnN0IGNsb3NlTWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvbkNsb3NlTWVudVxuICAgIH0pO1xuICB9LCBbZGlzcGF0Y2hdKTtcbiAgY29uc3Qgb3Blbk1lbnUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25PcGVuTWVudVxuICAgIH0pO1xuICB9LCBbZGlzcGF0Y2hdKTtcbiAgY29uc3Qgc2V0SGlnaGxpZ2h0ZWRJbmRleCA9IHVzZUNhbGxiYWNrKG5ld0hpZ2hsaWdodGVkSW5kZXggPT4ge1xuICAgIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uU2V0SGlnaGxpZ2h0ZWRJbmRleCxcbiAgICAgIGhpZ2hsaWdodGVkSW5kZXg6IG5ld0hpZ2hsaWdodGVkSW5kZXhcbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIGNvbnN0IHNlbGVjdEl0ZW0gPSB1c2VDYWxsYmFjayhuZXdTZWxlY3RlZEl0ZW0gPT4ge1xuICAgIGRpc3BhdGNoKHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uU2VsZWN0SXRlbSxcbiAgICAgIHNlbGVjdGVkSXRlbTogbmV3U2VsZWN0ZWRJdGVtXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCBzZXRJbnB1dFZhbHVlID0gdXNlQ2FsbGJhY2sobmV3SW5wdXRWYWx1ZSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25TZXRJbnB1dFZhbHVlLFxuICAgICAgaW5wdXRWYWx1ZTogbmV3SW5wdXRWYWx1ZVxuICAgIH0pO1xuICB9LCBbZGlzcGF0Y2hdKTtcbiAgY29uc3QgcmVzZXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25SZXNldCQxXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICByZXR1cm4ge1xuICAgIC8vIHByb3AgZ2V0dGVycy5cbiAgICBnZXRJdGVtUHJvcHMsXG4gICAgZ2V0TGFiZWxQcm9wcyxcbiAgICBnZXRNZW51UHJvcHMsXG4gICAgZ2V0SW5wdXRQcm9wcyxcbiAgICBnZXRUb2dnbGVCdXR0b25Qcm9wcyxcbiAgICAvLyBhY3Rpb25zLlxuICAgIHRvZ2dsZU1lbnUsXG4gICAgb3Blbk1lbnUsXG4gICAgY2xvc2VNZW51LFxuICAgIHNldEhpZ2hsaWdodGVkSW5kZXgsXG4gICAgc2V0SW5wdXRWYWx1ZSxcbiAgICBzZWxlY3RJdGVtLFxuICAgIHJlc2V0LFxuICAgIC8vIHN0YXRlLlxuICAgIGhpZ2hsaWdodGVkSW5kZXgsXG4gICAgaXNPcGVuLFxuICAgIHNlbGVjdGVkSXRlbSxcbiAgICBpbnB1dFZhbHVlXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZVZhbHVlcyA9IHtcbiAgYWN0aXZlSW5kZXg6IC0xLFxuICBzZWxlY3RlZEl0ZW1zOiBbXVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbml0aWFsIHZhbHVlIGZvciBhIHN0YXRlIGtleSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogMS4gY29udHJvbGxlZCBwcm9wLCAyLiBpbml0aWFsIHByb3AsIDMuIGRlZmF1bHQgcHJvcCwgNC4gZGVmYXVsdFxuICogdmFsdWUgZnJvbSBEb3duc2hpZnQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFByb3BzIHBhc3NlZCB0byB0aGUgaG9vay5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wS2V5IFByb3BzIGtleSB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgZm9yLlxuICogQHJldHVybnMge2FueX0gVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoYXQgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0SW5pdGlhbFZhbHVlKHByb3BzLCBwcm9wS2V5KSB7XG4gIHJldHVybiBnZXRJbml0aWFsVmFsdWUkMShwcm9wcywgcHJvcEtleSwgZGVmYXVsdFN0YXRlVmFsdWVzKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhIHN0YXRlIGtleSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogMS4gY29udHJvbGxlZCBwcm9wLCAyLiBkZWZhdWx0IHByb3AsIDMuIGRlZmF1bHQgdmFsdWUgZnJvbSBEb3duc2hpZnQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFByb3BzIHBhc3NlZCB0byB0aGUgaG9vay5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wS2V5IFByb3BzIGtleSB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgZm9yLlxuICogQHJldHVybnMge2FueX0gVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoYXQgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlKHByb3BzLCBwcm9wS2V5KSB7XG4gIHJldHVybiBnZXREZWZhdWx0VmFsdWUkMShwcm9wcywgcHJvcEtleSwgZGVmYXVsdFN0YXRlVmFsdWVzKTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBpbml0aWFsIHN0YXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBwcm9wcy4gSXQgdXNlcyBpbml0aWFsLCBkZWZhdWx0XG4gKiBhbmQgY29udHJvbGxlZCBwcm9wcyByZWxhdGVkIHRvIHN0YXRlIGluIG9yZGVyIHRvIGNvbXB1dGUgdGhlIGluaXRpYWwgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHByb3BzIFByb3BzIHBhc3NlZCB0byB0aGUgaG9vay5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBpbml0aWFsIHN0YXRlLlxuICovXG5mdW5jdGlvbiBnZXRJbml0aWFsU3RhdGUocHJvcHMpIHtcbiAgY29uc3QgYWN0aXZlSW5kZXggPSBnZXRJbml0aWFsVmFsdWUocHJvcHMsICdhY3RpdmVJbmRleCcpO1xuICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gZ2V0SW5pdGlhbFZhbHVlKHByb3BzLCAnc2VsZWN0ZWRJdGVtcycpO1xuICByZXR1cm4ge1xuICAgIGFjdGl2ZUluZGV4LFxuICAgIHNlbGVjdGVkSXRlbXNcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgZHJvcGRvd24ga2V5ZG93biBvcGVyYXRpb24gaXMgcGVybWl0dGVkLiBTaG91bGQgbm90IGJlXG4gKiBhbGxvd2VkIG9uIGtleWRvd24gd2l0aCBtb2RpZmllciBrZXlzIChjdHJsLCBhbHQsIHNoaWZ0LCBtZXRhKSwgb25cbiAqIGlucHV0IGVsZW1lbnQgd2l0aCB0ZXh0IGNvbnRlbnQgdGhhdCBpcyBlaXRoZXIgaGlnaGxpZ2h0ZWQgb3Igc2VsZWN0aW9uXG4gKiBjdXJzb3IgaXMgbm90IGF0IHRoZSBzdGFydGluZyBwb3NpdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50IFRoZSBldmVudCBmcm9tIGtleWRvd24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgb3BlcmF0aW9uIGlzIGFsbG93ZWQuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5RG93bk9wZXJhdGlvblBlcm1pdHRlZChldmVudCkge1xuICBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiZcbiAgLy8gaWYgZWxlbWVudCBpcyBhIHRleHQgaW5wdXRcbiAgZWxlbWVudC52YWx1ZSAhPT0gJycgJiYgKFxuICAvLyBhbmQgd2UgaGF2ZSB0ZXh0IGluIGl0XG4gIC8vIGFuZCBjdXJzb3IgaXMgZWl0aGVyIG5vdCBhdCB0aGUgc3RhcnQgb3IgaXMgY3VycmVudGx5IGhpZ2hsaWdodGluZyB0ZXh0LlxuICBlbGVtZW50LnNlbGVjdGlvblN0YXJ0ICE9PSAwIHx8IGVsZW1lbnQuc2VsZWN0aW9uRW5kICE9PSAwKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbWVzc2FnZSB0byBiZSBhZGRlZCB0byBhcmlhLWxpdmUgcmVnaW9uIHdoZW4gaXRlbSBpcyByZW1vdmVkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZWxlY3Rpb25QYXJhbWV0ZXJzIFBhcmFtZXRlcnMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYTExeSBtZXNzYWdlLlxuICovXG5mdW5jdGlvbiBnZXRBMTF5UmVtb3ZhbE1lc3NhZ2Uoc2VsZWN0aW9uUGFyYW1ldGVycykge1xuICBjb25zdCB7XG4gICAgcmVtb3ZlZFNlbGVjdGVkSXRlbSxcbiAgICBpdGVtVG9TdHJpbmc6IGl0ZW1Ub1N0cmluZ0xvY2FsXG4gIH0gPSBzZWxlY3Rpb25QYXJhbWV0ZXJzO1xuICByZXR1cm4gYCR7aXRlbVRvU3RyaW5nTG9jYWwocmVtb3ZlZFNlbGVjdGVkSXRlbSl9IGhhcyBiZWVuIHJlbW92ZWQuYDtcbn1cbmNvbnN0IHByb3BUeXBlcyA9IHtcbiAgc2VsZWN0ZWRJdGVtczogUHJvcFR5cGVzLmFycmF5LFxuICBpbml0aWFsU2VsZWN0ZWRJdGVtczogUHJvcFR5cGVzLmFycmF5LFxuICBkZWZhdWx0U2VsZWN0ZWRJdGVtczogUHJvcFR5cGVzLmFycmF5LFxuICBpdGVtVG9TdHJpbmc6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRBMTF5UmVtb3ZhbE1lc3NhZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBzdGF0ZVJlZHVjZXI6IFByb3BUeXBlcy5mdW5jLFxuICBhY3RpdmVJbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgaW5pdGlhbEFjdGl2ZUluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICBkZWZhdWx0QWN0aXZlSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQWN0aXZlSW5kZXhDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlbGVjdGVkSXRlbXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBrZXlOYXZpZ2F0aW9uTmV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAga2V5TmF2aWdhdGlvblByZXZpb3VzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBlbnZpcm9ubWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhZGRFdmVudExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkb2N1bWVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGdldEVsZW1lbnRCeUlkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGFjdGl2ZUVsZW1lbnQ6IFByb3BUeXBlcy5hbnksXG4gICAgICBib2R5OiBQcm9wVHlwZXMuYW55XG4gICAgfSlcbiAgfSlcbn07XG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIGl0ZW1Ub1N0cmluZzogZGVmYXVsdFByb3BzJDMuaXRlbVRvU3RyaW5nLFxuICBzdGF0ZVJlZHVjZXI6IGRlZmF1bHRQcm9wcyQzLnN0YXRlUmVkdWNlcixcbiAgZW52aXJvbm1lbnQ6IGRlZmF1bHRQcm9wcyQzLmVudmlyb25tZW50LFxuICBnZXRBMTF5UmVtb3ZhbE1lc3NhZ2UsXG4gIGtleU5hdmlnYXRpb25OZXh0OiAnQXJyb3dSaWdodCcsXG4gIGtleU5hdmlnYXRpb25QcmV2aW91czogJ0Fycm93TGVmdCdcbn07XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzXG5sZXQgdmFsaWRhdGVQcm9wVHlwZXMgPSBub29wO1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlUHJvcFR5cGVzID0gKG9wdGlvbnMsIGNhbGxlcikgPT4ge1xuICAgIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyhwcm9wVHlwZXMsIG9wdGlvbnMsICdwcm9wJywgY2FsbGVyLm5hbWUpO1xuICB9O1xufVxuXG5jb25zdCBTZWxlY3RlZEl0ZW1DbGljayA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3NlbGVjdGVkX2l0ZW1fY2xpY2tfXycgOiAwO1xuY29uc3QgU2VsZWN0ZWRJdGVtS2V5RG93bkRlbGV0ZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3NlbGVjdGVkX2l0ZW1fa2V5ZG93bl9kZWxldGVfXycgOiAxO1xuY29uc3QgU2VsZWN0ZWRJdGVtS2V5RG93bkJhY2tzcGFjZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX3NlbGVjdGVkX2l0ZW1fa2V5ZG93bl9iYWNrc3BhY2VfXycgOiAyO1xuY29uc3QgU2VsZWN0ZWRJdGVtS2V5RG93bk5hdmlnYXRpb25OZXh0ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fc2VsZWN0ZWRfaXRlbV9rZXlkb3duX25hdmlnYXRpb25fbmV4dF9fJyA6IDM7XG5jb25zdCBTZWxlY3RlZEl0ZW1LZXlEb3duTmF2aWdhdGlvblByZXZpb3VzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fc2VsZWN0ZWRfaXRlbV9rZXlkb3duX25hdmlnYXRpb25fcHJldmlvdXNfXycgOiA0O1xuY29uc3QgRHJvcGRvd25LZXlEb3duTmF2aWdhdGlvblByZXZpb3VzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZHJvcGRvd25fa2V5ZG93bl9uYXZpZ2F0aW9uX3ByZXZpb3VzX18nIDogNTtcbmNvbnN0IERyb3Bkb3duS2V5RG93bkJhY2tzcGFjZSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Ryb3Bkb3duX2tleWRvd25fYmFja3NwYWNlX18nIDogNjtcbmNvbnN0IERyb3Bkb3duQ2xpY2sgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyAnX19kcm9wZG93bl9jbGlja19fJyA6IDc7XG5jb25zdCBGdW5jdGlvbkFkZFNlbGVjdGVkSXRlbSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX2FkZF9zZWxlY3RlZF9pdGVtX18nIDogODtcbmNvbnN0IEZ1bmN0aW9uUmVtb3ZlU2VsZWN0ZWRJdGVtID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fcmVtb3ZlX3NlbGVjdGVkX2l0ZW1fXycgOiA5O1xuY29uc3QgRnVuY3Rpb25TZXRTZWxlY3RlZEl0ZW1zID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fc2V0X3NlbGVjdGVkX2l0ZW1zX18nIDogMTA7XG5jb25zdCBGdW5jdGlvblNldEFjdGl2ZUluZGV4ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gJ19fZnVuY3Rpb25fc2V0X2FjdGl2ZV9pbmRleF9fJyA6IDExO1xuY29uc3QgRnVuY3Rpb25SZXNldCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/ICdfX2Z1bmN0aW9uX3Jlc2V0X18nIDogMTI7XG5cbnZhciBzdGF0ZUNoYW5nZVR5cGVzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIFNlbGVjdGVkSXRlbUNsaWNrOiBTZWxlY3RlZEl0ZW1DbGljayxcbiAgU2VsZWN0ZWRJdGVtS2V5RG93bkRlbGV0ZTogU2VsZWN0ZWRJdGVtS2V5RG93bkRlbGV0ZSxcbiAgU2VsZWN0ZWRJdGVtS2V5RG93bkJhY2tzcGFjZTogU2VsZWN0ZWRJdGVtS2V5RG93bkJhY2tzcGFjZSxcbiAgU2VsZWN0ZWRJdGVtS2V5RG93bk5hdmlnYXRpb25OZXh0OiBTZWxlY3RlZEl0ZW1LZXlEb3duTmF2aWdhdGlvbk5leHQsXG4gIFNlbGVjdGVkSXRlbUtleURvd25OYXZpZ2F0aW9uUHJldmlvdXM6IFNlbGVjdGVkSXRlbUtleURvd25OYXZpZ2F0aW9uUHJldmlvdXMsXG4gIERyb3Bkb3duS2V5RG93bk5hdmlnYXRpb25QcmV2aW91czogRHJvcGRvd25LZXlEb3duTmF2aWdhdGlvblByZXZpb3VzLFxuICBEcm9wZG93bktleURvd25CYWNrc3BhY2U6IERyb3Bkb3duS2V5RG93bkJhY2tzcGFjZSxcbiAgRHJvcGRvd25DbGljazogRHJvcGRvd25DbGljayxcbiAgRnVuY3Rpb25BZGRTZWxlY3RlZEl0ZW06IEZ1bmN0aW9uQWRkU2VsZWN0ZWRJdGVtLFxuICBGdW5jdGlvblJlbW92ZVNlbGVjdGVkSXRlbTogRnVuY3Rpb25SZW1vdmVTZWxlY3RlZEl0ZW0sXG4gIEZ1bmN0aW9uU2V0U2VsZWN0ZWRJdGVtczogRnVuY3Rpb25TZXRTZWxlY3RlZEl0ZW1zLFxuICBGdW5jdGlvblNldEFjdGl2ZUluZGV4OiBGdW5jdGlvblNldEFjdGl2ZUluZGV4LFxuICBGdW5jdGlvblJlc2V0OiBGdW5jdGlvblJlc2V0XG59KTtcblxuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuZnVuY3Rpb24gZG93bnNoaWZ0TXVsdGlwbGVTZWxlY3Rpb25SZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgaW5kZXgsXG4gICAgcHJvcHMsXG4gICAgc2VsZWN0ZWRJdGVtXG4gIH0gPSBhY3Rpb247XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBzZWxlY3RlZEl0ZW1zXG4gIH0gPSBzdGF0ZTtcbiAgbGV0IGNoYW5nZXM7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgU2VsZWN0ZWRJdGVtQ2xpY2s6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBhY3RpdmVJbmRleDogaW5kZXhcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbGVjdGVkSXRlbUtleURvd25OYXZpZ2F0aW9uUHJldmlvdXM6XG4gICAgICBjaGFuZ2VzID0ge1xuICAgICAgICBhY3RpdmVJbmRleDogYWN0aXZlSW5kZXggLSAxIDwgMCA/IDAgOiBhY3RpdmVJbmRleCAtIDFcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNlbGVjdGVkSXRlbUtleURvd25OYXZpZ2F0aW9uTmV4dDpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGFjdGl2ZUluZGV4OiBhY3RpdmVJbmRleCArIDEgPj0gc2VsZWN0ZWRJdGVtcy5sZW5ndGggPyAtMSA6IGFjdGl2ZUluZGV4ICsgMVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU2VsZWN0ZWRJdGVtS2V5RG93bkJhY2tzcGFjZTpcbiAgICBjYXNlIFNlbGVjdGVkSXRlbUtleURvd25EZWxldGU6XG4gICAgICB7XG4gICAgICAgIGxldCBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4O1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBuZXdBY3RpdmVJbmRleCA9IC0xO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGl2ZUluZGV4ID09PSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBuZXdBY3RpdmVJbmRleCA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMjtcbiAgICAgICAgfVxuICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IFsuLi5zZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIGFjdGl2ZUluZGV4KSwgLi4uc2VsZWN0ZWRJdGVtcy5zbGljZShhY3RpdmVJbmRleCArIDEpXSxcbiAgICAgICAgICAuLi57XG4gICAgICAgICAgICBhY3RpdmVJbmRleDogbmV3QWN0aXZlSW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIGNhc2UgRHJvcGRvd25LZXlEb3duTmF2aWdhdGlvblByZXZpb3VzOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgYWN0aXZlSW5kZXg6IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRHJvcGRvd25LZXlEb3duQmFja3NwYWNlOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtczogc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDEpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGdW5jdGlvbkFkZFNlbGVjdGVkSXRlbTpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXM6IFsuLi5zZWxlY3RlZEl0ZW1zLCBzZWxlY3RlZEl0ZW1dXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBEcm9wZG93bkNsaWNrOlxuICAgICAgY2hhbmdlcyA9IHtcbiAgICAgICAgYWN0aXZlSW5kZXg6IC0xXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGdW5jdGlvblJlbW92ZVNlbGVjdGVkSXRlbTpcbiAgICAgIHtcbiAgICAgICAgbGV0IG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbUluZGV4ID0gc2VsZWN0ZWRJdGVtcy5pbmRleE9mKHNlbGVjdGVkSXRlbSk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCA+PSAwKSB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBuZXdBY3RpdmVJbmRleCA9IC0xO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggPT09IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV3QWN0aXZlSW5kZXggPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zOiBbLi4uc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCBzZWxlY3RlZEl0ZW1JbmRleCksIC4uLnNlbGVjdGVkSXRlbXMuc2xpY2Uoc2VsZWN0ZWRJdGVtSW5kZXggKyAxKV0sXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogbmV3QWN0aXZlSW5kZXhcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIGNhc2UgRnVuY3Rpb25TZXRTZWxlY3RlZEl0ZW1zOlxuICAgICAge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtczogbmV3U2VsZWN0ZWRJdGVtc1xuICAgICAgICB9ID0gYWN0aW9uO1xuICAgICAgICBjaGFuZ2VzID0ge1xuICAgICAgICAgIHNlbGVjdGVkSXRlbXM6IG5ld1NlbGVjdGVkSXRlbXNcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgY2FzZSBGdW5jdGlvblNldEFjdGl2ZUluZGV4OlxuICAgICAge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgYWN0aXZlSW5kZXg6IG5ld0FjdGl2ZUluZGV4XG4gICAgICAgIH0gPSBhY3Rpb247XG4gICAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgICAgYWN0aXZlSW5kZXg6IG5ld0FjdGl2ZUluZGV4XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIGNhc2UgRnVuY3Rpb25SZXNldDpcbiAgICAgIGNoYW5nZXMgPSB7XG4gICAgICAgIGFjdGl2ZUluZGV4OiBnZXREZWZhdWx0VmFsdWUocHJvcHMsICdhY3RpdmVJbmRleCcpLFxuICAgICAgICBzZWxlY3RlZEl0ZW1zOiBnZXREZWZhdWx0VmFsdWUocHJvcHMsICdzZWxlY3RlZEl0ZW1zJylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIGNhbGxlZCB3aXRob3V0IHByb3BlciBhY3Rpb24gdHlwZS4nKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLmNoYW5nZXNcbiAgfTtcbn1cblxudXNlTXVsdGlwbGVTZWxlY3Rpb24uc3RhdGVDaGFuZ2VUeXBlcyA9IHN0YXRlQ2hhbmdlVHlwZXM7XG5mdW5jdGlvbiB1c2VNdWx0aXBsZVNlbGVjdGlvbih1c2VyUHJvcHMpIHtcbiAgaWYgKHVzZXJQcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgdXNlclByb3BzID0ge307XG4gIH1cbiAgdmFsaWRhdGVQcm9wVHlwZXModXNlclByb3BzLCB1c2VNdWx0aXBsZVNlbGVjdGlvbik7XG4gIC8vIFByb3BzIGRlZmF1bHRzIGFuZCBkZXN0cnVjdHVyaW5nLlxuICBjb25zdCBwcm9wcyA9IHtcbiAgICAuLi5kZWZhdWx0UHJvcHMsXG4gICAgLi4udXNlclByb3BzXG4gIH07XG4gIGNvbnN0IHtcbiAgICBnZXRBMTF5UmVtb3ZhbE1lc3NhZ2UsXG4gICAgaXRlbVRvU3RyaW5nLFxuICAgIGVudmlyb25tZW50LFxuICAgIGtleU5hdmlnYXRpb25OZXh0LFxuICAgIGtleU5hdmlnYXRpb25QcmV2aW91c1xuICB9ID0gcHJvcHM7XG5cbiAgLy8gUmVkdWNlciBpbml0LlxuICBjb25zdCBbc3RhdGUsIGRpc3BhdGNoXSA9IHVzZUNvbnRyb2xsZWRSZWR1Y2VyJDEoZG93bnNoaWZ0TXVsdGlwbGVTZWxlY3Rpb25SZWR1Y2VyLCBnZXRJbml0aWFsU3RhdGUocHJvcHMpLCBwcm9wcyk7XG4gIGNvbnN0IHtcbiAgICBhY3RpdmVJbmRleCxcbiAgICBzZWxlY3RlZEl0ZW1zXG4gIH0gPSBzdGF0ZTtcblxuICAvLyBSZWZzLlxuICBjb25zdCBpc0luaXRpYWxNb3VudFJlZiA9IHVzZVJlZih0cnVlKTtcbiAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWRJdGVtc1JlZiA9IHVzZVJlZihzZWxlY3RlZEl0ZW1zKTtcbiAgY29uc3Qgc2VsZWN0ZWRJdGVtUmVmcyA9IHVzZVJlZigpO1xuICBzZWxlY3RlZEl0ZW1SZWZzLmN1cnJlbnQgPSBbXTtcbiAgY29uc3QgbGF0ZXN0ID0gdXNlTGF0ZXN0UmVmKHtcbiAgICBzdGF0ZSxcbiAgICBwcm9wc1xuICB9KTtcblxuICAvLyBFZmZlY3RzLlxuICAvKiBTZXRzIGExMXkgc3RhdHVzIG1lc3NhZ2Ugb24gY2hhbmdlcyBpbiBzZWxlY3RlZEl0ZW0uICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzSW5pdGlhbE1vdW50UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoIDwgcHJldmlvdXNTZWxlY3RlZEl0ZW1zUmVmLmN1cnJlbnQubGVuZ3RoKSB7XG4gICAgICBjb25zdCByZW1vdmVkU2VsZWN0ZWRJdGVtID0gcHJldmlvdXNTZWxlY3RlZEl0ZW1zUmVmLmN1cnJlbnQuZmluZChpdGVtID0+IHNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKSA8IDApO1xuICAgICAgc2V0U3RhdHVzKGdldEExMXlSZW1vdmFsTWVzc2FnZSh7XG4gICAgICAgIGl0ZW1Ub1N0cmluZyxcbiAgICAgICAgcmVzdWx0Q291bnQ6IHNlbGVjdGVkSXRlbXMubGVuZ3RoLFxuICAgICAgICByZW1vdmVkU2VsZWN0ZWRJdGVtLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgYWN0aXZlU2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW1zW2FjdGl2ZUluZGV4XVxuICAgICAgfSksIGVudmlyb25tZW50LmRvY3VtZW50KTtcbiAgICB9XG4gICAgcHJldmlvdXNTZWxlY3RlZEl0ZW1zUmVmLmN1cnJlbnQgPSBzZWxlY3RlZEl0ZW1zO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbc2VsZWN0ZWRJdGVtcy5sZW5ndGhdKTtcbiAgLy8gU2V0cyBmb2N1cyBvbiBhY3RpdmUgaXRlbS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbml0aWFsTW91bnRSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IC0xICYmIGRyb3Bkb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgIGRyb3Bkb3duUmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSXRlbVJlZnMuY3VycmVudFthY3RpdmVJbmRleF0pIHtcbiAgICAgIHNlbGVjdGVkSXRlbVJlZnMuY3VycmVudFthY3RpdmVJbmRleF0uZm9jdXMoKTtcbiAgICB9XG4gIH0sIFthY3RpdmVJbmRleF0pO1xuICB1c2VDb250cm9sUHJvcHNWYWxpZGF0b3Ioe1xuICAgIGlzSW5pdGlhbE1vdW50OiBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50LFxuICAgIHByb3BzLFxuICAgIHN0YXRlXG4gIH0pO1xuICBjb25zdCBzZXRHZXR0ZXJQcm9wQ2FsbEluZm8gPSB1c2VHZXR0ZXJQcm9wc0NhbGxlZENoZWNrZXIoJ2dldERyb3Bkb3duUHJvcHMnKTtcbiAgLy8gTWFrZSBpbml0aWFsIHJlZiBmYWxzZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0luaXRpYWxNb3VudFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gIH0sIFtdKTtcblxuICAvLyBFdmVudCBoYW5kbGVyIGZ1bmN0aW9ucy5cbiAgY29uc3Qgc2VsZWN0ZWRJdGVtS2V5RG93bkhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIFtrZXlOYXZpZ2F0aW9uUHJldmlvdXNdKCkge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBTZWxlY3RlZEl0ZW1LZXlEb3duTmF2aWdhdGlvblByZXZpb3VzXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtrZXlOYXZpZ2F0aW9uTmV4dF0oKSB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFNlbGVjdGVkSXRlbUtleURvd25OYXZpZ2F0aW9uTmV4dFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBEZWxldGUoKSB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFNlbGVjdGVkSXRlbUtleURvd25EZWxldGVcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgQmFja3NwYWNlKCkge1xuICAgICAgZGlzcGF0Y2goe1xuICAgICAgICB0eXBlOiBTZWxlY3RlZEl0ZW1LZXlEb3duQmFja3NwYWNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pLCBbZGlzcGF0Y2gsIGtleU5hdmlnYXRpb25OZXh0LCBrZXlOYXZpZ2F0aW9uUHJldmlvdXNdKTtcbiAgY29uc3QgZHJvcGRvd25LZXlEb3duSGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgW2tleU5hdmlnYXRpb25QcmV2aW91c10oZXZlbnQpIHtcbiAgICAgIGlmIChpc0tleURvd25PcGVyYXRpb25QZXJtaXR0ZWQoZXZlbnQpKSB7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBEcm9wZG93bktleURvd25OYXZpZ2F0aW9uUHJldmlvdXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBCYWNrc3BhY2UoZXZlbnQpIHtcbiAgICAgIGlmIChpc0tleURvd25PcGVyYXRpb25QZXJtaXR0ZWQoZXZlbnQpKSB7XG4gICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICB0eXBlOiBEcm9wZG93bktleURvd25CYWNrc3BhY2VcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9KSwgW2Rpc3BhdGNoLCBrZXlOYXZpZ2F0aW9uUHJldmlvdXNdKTtcblxuICAvLyBHZXR0ZXIgcHJvcHMuXG4gIGNvbnN0IGdldFNlbGVjdGVkSXRlbVByb3BzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKF90ZW1wKSB7XG4gICAgbGV0IHtcbiAgICAgIHJlZktleSA9ICdyZWYnLFxuICAgICAgcmVmLFxuICAgICAgb25DbGljayxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgIGluZGV4LFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSBfdGVtcCA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0ZTogbGF0ZXN0U3RhdGVcbiAgICB9ID0gbGF0ZXN0LmN1cnJlbnQ7XG4gICAgY29uc3QgaXRlbUluZGV4ID0gZ2V0SXRlbUluZGV4KGluZGV4LCBzZWxlY3RlZEl0ZW0sIGxhdGVzdFN0YXRlLnNlbGVjdGVkSXRlbXMpO1xuICAgIGlmIChpdGVtSW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bhc3MgZWl0aGVyIHNlbGVjdGVkSXRlbSBvciBpbmRleCBpbiBnZXRTZWxlY3RlZEl0ZW1Qcm9wcyEnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtSGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IFNlbGVjdGVkSXRlbUNsaWNrLFxuICAgICAgICBpbmRleFxuICAgICAgfSk7XG4gICAgfTtcbiAgICBjb25zdCBzZWxlY3RlZEl0ZW1IYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gbm9ybWFsaXplQXJyb3dLZXkoZXZlbnQpO1xuICAgICAgaWYgKGtleSAmJiBzZWxlY3RlZEl0ZW1LZXlEb3duSGFuZGxlcnNba2V5XSkge1xuICAgICAgICBzZWxlY3RlZEl0ZW1LZXlEb3duSGFuZGxlcnNba2V5XShldmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgW3JlZktleV06IGhhbmRsZVJlZnMocmVmLCBzZWxlY3RlZEl0ZW1Ob2RlID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbU5vZGUpIHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1SZWZzLmN1cnJlbnQucHVzaChzZWxlY3RlZEl0ZW1Ob2RlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWJJbmRleDogaW5kZXggPT09IGxhdGVzdFN0YXRlLmFjdGl2ZUluZGV4ID8gMCA6IC0xLFxuICAgICAgb25DbGljazogY2FsbEFsbEV2ZW50SGFuZGxlcnMob25DbGljaywgc2VsZWN0ZWRJdGVtSGFuZGxlQ2xpY2spLFxuICAgICAgb25LZXlEb3duOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbktleURvd24sIHNlbGVjdGVkSXRlbUhhbmRsZUtleURvd24pLFxuICAgICAgLi4ucmVzdFxuICAgIH07XG4gIH0sIFtkaXNwYXRjaCwgbGF0ZXN0LCBzZWxlY3RlZEl0ZW1LZXlEb3duSGFuZGxlcnNdKTtcbiAgY29uc3QgZ2V0RHJvcGRvd25Qcm9wcyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChfdGVtcDIsIF90ZW1wMykge1xuICAgIGxldCB7XG4gICAgICByZWZLZXkgPSAncmVmJyxcbiAgICAgIHJlZixcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBwcmV2ZW50S2V5QWN0aW9uID0gZmFsc2UsXG4gICAgICAuLi5yZXN0XG4gICAgfSA9IF90ZW1wMiA9PT0gdm9pZCAwID8ge30gOiBfdGVtcDI7XG4gICAgbGV0IHtcbiAgICAgIHN1cHByZXNzUmVmRXJyb3IgPSBmYWxzZVxuICAgIH0gPSBfdGVtcDMgPT09IHZvaWQgMCA/IHt9IDogX3RlbXAzO1xuICAgIHNldEdldHRlclByb3BDYWxsSW5mbygnZ2V0RHJvcGRvd25Qcm9wcycsIHN1cHByZXNzUmVmRXJyb3IsIHJlZktleSwgZHJvcGRvd25SZWYpO1xuICAgIGNvbnN0IGRyb3Bkb3duSGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IG5vcm1hbGl6ZUFycm93S2V5KGV2ZW50KTtcbiAgICAgIGlmIChrZXkgJiYgZHJvcGRvd25LZXlEb3duSGFuZGxlcnNba2V5XSkge1xuICAgICAgICBkcm9wZG93bktleURvd25IYW5kbGVyc1trZXldKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGRyb3Bkb3duSGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IERyb3Bkb3duQ2xpY2tcbiAgICAgIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIFtyZWZLZXldOiBoYW5kbGVSZWZzKHJlZiwgZHJvcGRvd25Ob2RlID0+IHtcbiAgICAgICAgaWYgKGRyb3Bkb3duTm9kZSkge1xuICAgICAgICAgIGRyb3Bkb3duUmVmLmN1cnJlbnQgPSBkcm9wZG93bk5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgLi4uKCFwcmV2ZW50S2V5QWN0aW9uICYmIHtcbiAgICAgICAgb25LZXlEb3duOiBjYWxsQWxsRXZlbnRIYW5kbGVycyhvbktleURvd24sIGRyb3Bkb3duSGFuZGxlS2V5RG93biksXG4gICAgICAgIG9uQ2xpY2s6IGNhbGxBbGxFdmVudEhhbmRsZXJzKG9uQ2xpY2ssIGRyb3Bkb3duSGFuZGxlQ2xpY2spXG4gICAgICB9KSxcbiAgICAgIC4uLnJlc3RcbiAgICB9O1xuICB9LCBbZGlzcGF0Y2gsIGRyb3Bkb3duS2V5RG93bkhhbmRsZXJzLCBzZXRHZXR0ZXJQcm9wQ2FsbEluZm9dKTtcblxuICAvLyByZXR1cm5zXG4gIGNvbnN0IGFkZFNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25BZGRTZWxlY3RlZEl0ZW0sXG4gICAgICBzZWxlY3RlZEl0ZW1cbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIGNvbnN0IHJlbW92ZVNlbGVjdGVkSXRlbSA9IHVzZUNhbGxiYWNrKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogRnVuY3Rpb25SZW1vdmVTZWxlY3RlZEl0ZW0sXG4gICAgICBzZWxlY3RlZEl0ZW1cbiAgICB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG4gIGNvbnN0IHNldFNlbGVjdGVkSXRlbXMgPSB1c2VDYWxsYmFjayhuZXdTZWxlY3RlZEl0ZW1zID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblNldFNlbGVjdGVkSXRlbXMsXG4gICAgICBzZWxlY3RlZEl0ZW1zOiBuZXdTZWxlY3RlZEl0ZW1zXG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCBzZXRBY3RpdmVJbmRleCA9IHVzZUNhbGxiYWNrKG5ld0FjdGl2ZUluZGV4ID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblNldEFjdGl2ZUluZGV4LFxuICAgICAgYWN0aXZlSW5kZXg6IG5ld0FjdGl2ZUluZGV4XG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICBjb25zdCByZXNldCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBGdW5jdGlvblJlc2V0XG4gICAgfSk7XG4gIH0sIFtkaXNwYXRjaF0pO1xuICByZXR1cm4ge1xuICAgIGdldFNlbGVjdGVkSXRlbVByb3BzLFxuICAgIGdldERyb3Bkb3duUHJvcHMsXG4gICAgYWRkU2VsZWN0ZWRJdGVtLFxuICAgIHJlbW92ZVNlbGVjdGVkSXRlbSxcbiAgICBzZXRTZWxlY3RlZEl0ZW1zLFxuICAgIHNldEFjdGl2ZUluZGV4LFxuICAgIHJlc2V0LFxuICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgYWN0aXZlSW5kZXhcbiAgfTtcbn1cblxuZXhwb3J0IHsgRG93bnNoaWZ0JDEgYXMgZGVmYXVsdCwgcmVzZXRJZENvdW50ZXIsIHVzZUNvbWJvYm94LCB1c2VNdWx0aXBsZVNlbGVjdGlvbiwgdXNlU2VsZWN0IH07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEJzQXN0ZXJpc2ssIEJzQ2hlY2tMZyB9IGZyb20gXCJyZWFjdC1pY29ucy9ic1wiO1xyXG5pbXBvcnQgeyBJbVNwaW5uZXIyIH0gZnJvbSBcInJlYWN0LWljb25zL2ltXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBJbmZvQ2FyZCwgSW5mb0NhcmREZXNjcmlwdGlvbiB9IGZyb20gXCIuLi9JbmZvQ2FyZFwiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcclxuaW1wb3J0IERvd25zaGlmdCBmcm9tIFwiZG93bnNoaWZ0XCI7XHJcblxyXG4vKiogUmVwcmVzZW50cyBhbiBvcHRpb24gdG8gYmUgY2hvc2VuIGluIHRoZSBmaWVsZCAqL1xyXG5leHBvcnQgdHlwZSBMb29rdXBPcHRpb24gPSB7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgcHJpbWFyeVRleHQ6IHN0cmluZztcclxuICAgIHNlY29uZGFyeVRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBvcHRpb24gc2hvdWxkIGJlIHBpY2thYmxlLiBBbiBvcHRpb24gbWF5IGJlIHNldCBgaXNQaWNrYWJsZWAgZmFsc2VcclxuICAgICAqIGlmIGl0IG1heSBiZSBwb3B1bGF0ZWQgYXMgdGhlIGBkZWZhdWx0U2VsZWN0ZWRPcHRpb25JZGAgYnV0IHNob3VsZCBub3QgYmUgcGlja2FibGUuIEZvciBleGFtcGxlLFxyXG4gICAgICogb25seSAnYWN0aXZlJyByZWNvcmRzIG1heSBiZSBzZXQgd2l0aCBgaXNQaWNrYWJsZWAgdHJ1ZSwgYnV0ICdpbmFjdGl2ZScgcmVjb3JkcyB3aWxsIGJlIHBhc3NlZFxyXG4gICAgICogaW4gd2l0aCBgaXNQaWNrYWJsZWAgZmFsc2UgYXMgaXQgbWF5IGJlIHRoZSAgYGRlZmF1bHRTZWxlY3RlZE9wdGlvbklkYC5cclxuICAgICAqL1xyXG4gICAgaXNQaWNrYWJsZTogYm9vbGVhbjtcclxufTtcclxuXHJcbi8qKiBMb29rdXAgZmllbGQgdG8gYW5vdGhlciByZWNvcmQgKi9cclxuZXhwb3J0IGNvbnN0IExvb2t1cEZpZWxkID0gZnVuY3Rpb24gTG9va3VwRmllbGQ8VExvb2t1cE9wdGlvbiBleHRlbmRzIExvb2t1cE9wdGlvbj4oXHJcbiAgICBwcm9wczogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48e1xyXG4gICAgICAgIG5hbWU6IHN0cmluZztcclxuICAgICAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgICAgIHRvb2x0aXA/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25JZDogVExvb2t1cE9wdGlvbltcImlkXCJdIHwgbnVsbDtcclxuICAgICAgICBvcHRpb25zOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfCB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCI7IHZhbHVlOiBUTG9va3VwT3B0aW9uW10gfTtcclxuICAgICAgICBzZWxlY3RlZE9wdGlvbkNhcmRJbmZvPzogKHNlbGVjdGVkT3B0aW9uOiBUTG9va3VwT3B0aW9uKSA9PiBJbmZvQ2FyZERlc2NyaXB0aW9uO1xyXG4gICAgICAgIHBsdXJhbE9wdGlvbnNOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25JZDogKG9wdGlvbklkOiBUTG9va3VwT3B0aW9uW1wiaWRcIl0gfCBudWxsKSA9PiB2b2lkO1xyXG4gICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgSFRNTElucHV0RWxlbWVudD47XHJcbiAgICAgICAgYWRkaXRpb25hbExhYmVsUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcclxuICAgICAgICAgICAgUmVhY3QuTGFiZWxIVE1MQXR0cmlidXRlczxIVE1MTGFiZWxFbGVtZW50PixcclxuICAgICAgICAgICAgSFRNTExhYmVsRWxlbWVudFxyXG4gICAgICAgID4gJiB7XHJcbiAgICAgICAgICAgIFtkYXRhQXR0cmlidXRlOiBzdHJpbmddOiBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjdXN0b21WYWxpZGl0eT86ICh2YWxpZGl0eTogVmFsaWRpdHlTdGF0ZSkgPT4gc3RyaW5nO1xyXG4gICAgfT5cclxuKSB7XHJcbiAgICBjb25zdCBzZWFyY2hUZXJtSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XHJcbiAgICBjb25zdCBjbGVhckJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XHJcblxyXG4gICAgLy8gSWYgdGhlcmUgYXJlIGFueSBjdXN0b20gdmFsaWRpdHkgcnVsZXMuXHJcbiAgICBpZiAocHJvcHMuY3VzdG9tVmFsaWRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHNlYXJjaFRlcm1JbnB1dFJlZi5jdXJyZW50Py5zZXRDdXN0b21WYWxpZGl0eShwcm9wcy5jdXN0b21WYWxpZGl0eShzZWFyY2hUZXJtSW5wdXRSZWYuY3VycmVudC52YWxpZGl0eSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZGVmYXVsdHMgZm9yIHRoZSBjb250cm9sXHJcbiAgICBjb25zdCBhZGRpdGlvbmFsSW5wdXRQcm9wczogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XHJcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcclxuICAgICAgICBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICA+ID0ge1xyXG4gICAgICAgIC4uLnByb3BzLmFkZGl0aW9uYWxJbnB1dFByb3BzLFxyXG4gICAgICAgIHJlcXVpcmVkOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRQcm9wcz8ucmVxdWlyZWQgPz8gdHJ1ZSxcclxuICAgICAgICBhdXRvQ29tcGxldGU6IHByb3BzLmFkZGl0aW9uYWxJbnB1dFByb3BzPy5hdXRvQ29tcGxldGUgPz8gXCJvZmZcIixcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgW3NlYXJjaFRlcm0sIHNldFNlYXJjaFRlcm1dID0gdXNlU3RhdGU8c3RyaW5nPigpO1xyXG4gICAgY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFtpc1NlbGVjdGVkT3B0aW9uSG92ZXJlZCwgc2V0SXNTZWxlY3RlZE9wdGlvbkhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFwcm9wcy5zZWxlY3RlZE9wdGlvbklkKSB7XHJcbiAgICAgICAgICAgIHNldFNlYXJjaFRlcm0oXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW3Byb3BzLnNlbGVjdGVkT3B0aW9uSWRdKTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIElmIHRoZSBmaWVsZCBpcyBtYW5kYXRvcnlcclxuICAgICAgICBpZiAoYWRkaXRpb25hbElucHV0UHJvcHMucmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgLy8gSWYgdGhlIGZpZWxkIGlzIHBvcHVsYXRlZFxyXG4gICAgICAgICAgICBpZiAocHJvcHMuc2VsZWN0ZWRPcHRpb25JZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHZhbGlkaXR5IG1lc3NhZ2UgKHVzaW5nIHRoZSBjdXN0b20gb25lIHBhc3NlZCBpbiwgaWYgc3VwcGxpZWQpXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hUZXJtSW5wdXRSZWYuY3VycmVudD8uc2V0Q3VzdG9tVmFsaWRpdHkoXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY3VzdG9tVmFsaWRpdHk/LihzZWFyY2hUZXJtSW5wdXRSZWYuY3VycmVudC52YWxpZGl0eSkgfHwgXCJcIlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIFNob3cgYW4gdmFsaWRpdHkgZXJyb3JcclxuICAgICAgICAgICAgICAgIHNlYXJjaFRlcm1JbnB1dFJlZi5jdXJyZW50Py5zZXRDdXN0b21WYWxpZGl0eShcIlBsZWFzZSBzZWxlY3QgYW4gb3B0aW9uXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2FkZGl0aW9uYWxJbnB1dFByb3BzLCBwcm9wcy5zZWxlY3RlZE9wdGlvbklkLCBzZWFyY2hUZXJtSW5wdXRSZWZdKTtcclxuXHJcbiAgICBjb25zdCBNQVhfUkVTVUxUU19TSE9XTiA9IDEwO1xyXG5cclxuICAgIC8vIEZpbHRlcnMgdGhlIG9wdGlvbnMgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2VhcmNoVGVybVxyXG4gICAgY29uc3QgZmlsdGVyZWRPcHRpb25zOiBUTG9va3VwT3B0aW9uW10gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgICAgICBpZiAocHJvcHMub3B0aW9ucy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBpY2thYmxlT3B0aW9ucyA9IHByb3BzLm9wdGlvbnMudmFsdWUuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5pc1BpY2thYmxlKTtcclxuXHJcbiAgICAgICAgaWYgKCFzZWFyY2hUZXJtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwaWNrYWJsZU9wdGlvbnMuc29ydCgoYSwgYikgPT4gKGEucHJpbWFyeVRleHQgfHwgXCJcIikubG9jYWxlQ29tcGFyZShiLnByaW1hcnlUZXh0IHx8IFwiXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHBpY2thYmxlT3B0aW9uc1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE1hcCBlYWNoIG9wdGlvbiB0byBhIGNvdW50IG9mIGhvdyB3ZWxsIGl0IG1hdGNoZXMgYWdhaW5zdCBlYWNoIHdvcmQgb2YgdGhlIGBzZWFyY2hUZXJtYFxyXG4gICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaENvdW50OiBzZWFyY2hUZXJtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50cmltKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KFwiIFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh3b3JkLCBpKSA9PiBpID09PSAwIHx8IHdvcmQubGVuZ3RoID49IDMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAod29yZCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ucHJpbWFyeVRleHQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMod29yZD8udG9Mb3dlckNhc2UoKSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2Vjb25kYXJ5VGV4dD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh3b3JkPy50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIH0pKVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgbm9uLW1hdGNoZXNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHsgbWF0Y2hDb3VudCB9KSA9PiBtYXRjaENvdW50ID4gMClcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAoU2Vjb25kYXJ5KSBzb3J0IGJ5IHRoZSBuYW1lXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gKGEub3B0aW9uLnByaW1hcnlUZXh0IHx8IFwiXCIpLmxvY2FsZUNvbXBhcmUoYi5vcHRpb24ucHJpbWFyeVRleHQgfHwgXCJcIikpXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gKFByaW1hcnkpIFNvcnQgYnkgdGhlICdzdHJvbmdlc3QnIG1hdGNoXHJcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5tYXRjaENvdW50IC0gYS5tYXRjaENvdW50KVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAubWFwKCh7IG9wdGlvbiB9KSA9PiBvcHRpb24pXHJcbiAgICAgICAgKTtcclxuICAgIH0sIFtzZWFyY2hUZXJtLCBwcm9wcy5vcHRpb25zXSk7XHJcblxyXG4gICAgLy8gSGFuZGxlIGtleWJvYXJkIGtleSBwcmVzc2VzIHdoZW4gdGhlIGNvbnRyb2wgYGlzRm9jdXNlZGBcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5UHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGNsZWFyQnV0dG9uUmVmLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxJbnB1dFByb3BzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiRW50ZXJcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJCYWNrc3BhY2VcIjpcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRTZWxlY3RlZE9wdGlvbklkKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gc2VhcmNoVGVybUlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCksIDUwKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5UHJlc3MpO1xyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5UHJlc3MpO1xyXG4gICAgfSwgW2NsZWFyQnV0dG9uUmVmLCBzZWFyY2hUZXJtSW5wdXRSZWYsIHByb3BzLnNldFNlbGVjdGVkT3B0aW9uSWRdKTtcclxuXHJcbiAgICBjb25zdCBvdmVybGF5Q2FyZDogUmVhY3QuUmVhY3ROb2RlID0gKCgpID0+IHtcclxuICAgICAgICBpZiAoIXByb3BzLnNlbGVjdGVkT3B0aW9uSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXByb3BzLnNlbGVjdGVkT3B0aW9uQ2FyZEluZm8pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWlzU2VsZWN0ZWRPcHRpb25Ib3ZlcmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHByb3BzLm9wdGlvbnMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgcHJvcHMub3B0aW9ucy5sb2FkaW5nU3RhdHVzYCB0byBiZSAnbG9hZGVkJ1wiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gcHJvcHMub3B0aW9ucy52YWx1ZS5maW5kKChvKSA9PiBvLmlkID09PSBwcm9wcy5zZWxlY3RlZE9wdGlvbklkKTtcclxuXHJcbiAgICAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGluZm8gPSBwcm9wcy5zZWxlY3RlZE9wdGlvbkNhcmRJbmZvKHNlbGVjdGVkT3B0aW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIDxJbmZvQ2FyZCBpbmZvPXtpbmZvfSAvPjtcclxuICAgIH0pKCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgZGF0YS1uYW1lPXtwcm9wcy5uYW1lfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZCBsb29rdXAtZmllbGRcIlxyXG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXthZGRpdGlvbmFsSW5wdXRQcm9wcy5kaXNhYmxlZH1cclxuICAgICAgICAgICAgey4uLnByb3BzLmFkZGl0aW9uYWxMYWJlbFByb3BzfVxyXG4gICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRJc0ZvY3VzZWQodHJ1ZSl9XHJcbiAgICAgICAgICAgIG9uQmx1cj17KCkgPT4gc2V0SXNGb2N1c2VkKGZhbHNlKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZmllbGQtbGFiZWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgIHthZGRpdGlvbmFsSW5wdXRQcm9wcy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAocHJvcHMuc2VsZWN0ZWRPcHRpb25JZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCc0NoZWNrTGcgY2xhc3NOYW1lPVwiY29tcGxldGVkLWljb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJzQXN0ZXJpc2sgY2xhc3NOYW1lPVwicmVxdWlyZWQtaWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy50b29sdGlwICYmIDxUb29sdGlwIG92ZXJsYXlDb250ZW50PXtwcm9wcy50b29sdGlwfT48L1Rvb2x0aXA+fXtcIiBcIn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIHtzZWFyY2hUZXJtSW5wdXRSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInZhbGlkaXR5LW1lc3NhZ2VcIj57c2VhcmNoVGVybUlucHV0UmVmLmN1cnJlbnQ/LnZhbGlkYXRpb25NZXNzYWdlfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICB7cHJvcHMub3B0aW9ucy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxvYWRpbmctbWVzc2FnZVwiIHRpdGxlPXtgTG9hZGluZyAke3Byb3BzLnBsdXJhbE9wdGlvbnNOYW1lfWB9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1TcGlubmVyMiBjbGFzc05hbWU9XCJzcGluXCIgLz4gTG9hZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPERvd25zaGlmdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHNlbGVjdGlvbjogTG9va3VwT3B0aW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnNldFNlbGVjdGVkT3B0aW9uSWQoc2VsZWN0aW9uLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtPXtwcm9wcy5vcHRpb25zLnZhbHVlLmZpbmQoKHgpID0+IHguaWQgPT09IHByb3BzLnNlbGVjdGVkT3B0aW9uSWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1DaGFuZ2VkPXsoKSA9PiBmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRvU3RyaW5nPXsoaXRlbTogTG9va3VwT3B0aW9uIHwgbnVsbCkgPT4gKGl0ZW0gPyBpdGVtLnByaW1hcnlUZXh0IHx8IFwiXCIgOiBcIlwiKX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBnZXRJbnB1dFByb3BzLCBnZXRJdGVtUHJvcHMsIGdldE1lbnVQcm9wcywgaGlnaGxpZ2h0ZWRJbmRleCwgaXNPcGVuIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9va3VwLWZpZWxkLWNvbnRyb2wtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5zZWxlY3RlZE9wdGlvbklkID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNlbGVjdGVkLW9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInByaW1hcnktdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZU92ZXI9eygpID0+IHNldElzU2VsZWN0ZWRPcHRpb25Ib3ZlcmVkKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRJc1NlbGVjdGVkT3B0aW9uSG92ZXJlZChmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsocHJvcHMub3B0aW9ucy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub3B0aW9ucy52YWx1ZS5maW5kKChvKSA9PiBvLmlkID09PSBwcm9wcy5zZWxlY3RlZE9wdGlvbklkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnByaW1hcnlUZXh0KSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKE5vIG5hbWUpXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFhZGRpdGlvbmFsSW5wdXRQcm9wcy5kaXNhYmxlZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b24gY2xlYXItYnV0dG9uIGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gcHJvcHMuc2V0U2VsZWN0ZWRPcHRpb25JZChudWxsKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17Y2xlYXJCdXR0b25SZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQ2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+e292ZXJsYXlDYXJkfTwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZC1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtzZWFyY2hUZXJtSW5wdXRSZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldElucHV0UHJvcHMoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYWRkaXRpb25hbElucHV0UHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaFRlcm19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hUZXJtKGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGlzT3BlbiB8fCBpc0ZvY3VzZWQpICYmIHByb3BzLm9wdGlvbnMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3VnZ2VzdGlvbnNcIiB7Li4uZ2V0TWVudVByb3BzKCl9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdWdnZXN0aW9ucy1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInN1Z2dlc3Rpb25zLWhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5wbHVyYWxPcHRpb25zTmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInN1Z2dlc3Rpb25zLWhlYWRlci1yZXN1bHRzLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IE1BWF9SRVNVTFRTX1NIT1dOID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlNob3dpbmcgdG9wIHtNQVhfUkVTVUxUU19TSE9XTn0gcmVzdWx0czwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3VuZCB7ZmlsdGVyZWRPcHRpb25zLmxlbmd0aH0gcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA9PT0gMSA/IFwiXCIgOiBcInNcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJuby1yZXN1bHRzLW1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyB7cHJvcHMucGx1cmFsT3B0aW9uc05hbWV9IGZvdW5kLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRPcHRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoXywgaSkgPT4gaSA8IE1BWF9SRVNVTFRTX1NIT1dOKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKG9wdGlvbiwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN1Z2dlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWlzLWZvY3Vzc2VkLW9wdGlvbj17aGlnaGxpZ2h0ZWRJbmRleCA9PT0gaW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0SXRlbVByb3BzKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGAke29wdGlvbi5pZH0ke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogb3B0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInByaW1hcnktdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb24ucHJpbWFyeVRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzZWNvbmRhcnktdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb24uc2Vjb25kYXJ5VGV4dH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID4gTUFYX1JFU1VMVFNfU0hPV04gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmVmaW5lbWVudC1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmaW5lIHlvdXIgc2VhcmNoIHRvIHNlZSBtb3JlIHtwcm9wcy5wbHVyYWxPcHRpb25zTmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Eb3duc2hpZnQ+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZVdpbmRvd1dpZHRoIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVdpbmRvd1dpZHRoXCI7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vTW9kZWxzL0ZpbHRlclR5cGVcIjtcclxuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tIFwiLi9GaWVsZHMvTG9va3VwRmllbGRcIjtcclxuXHJcbi8qKiBSZXByZXNlbnRzIHRoZSBkaWZmZXJlbnQgcG9zc2libGUgdGlsZSBncm91cCBsYXlvdXRzIG9uIHRoZSBBZHZhbmNlZCBGaWx0ZXIgU2VjdGlvbi4gKi9cclxudHlwZSBUaWxlR3JpZExheW91dCA9IFwiNDowXCIgfCBcIjM6MVwiIHwgXCIyOjJcIiB8IFwiMVwiO1xyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgdGhlIGN1cnJlbnQgdGlsZSBsYXlvdXQgYmFzZWQgb24gcGFnZSBzaXplLlxyXG4gKiBAcGFyYW0ge051bWJlcn0gcGFnZVdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgaG9tZXBhZ2UuXHJcbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHRpbGUgbGF5b3V0LlxyXG4gKi9cclxuY29uc3QgZ2V0Q3VycmVudFRpbGVMYXlvdXQgPSAocGFnZVdpZHRoOiBOdW1iZXIpOiBUaWxlR3JpZExheW91dCA9PiB7XHJcbiAgICBpZiAocGFnZVdpZHRoID4gMTYwMCkge1xyXG4gICAgICAgIHJldHVybiBcIjQ6MFwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHBhZ2VXaWR0aCA+IDEzNTMpIHtcclxuICAgICAgICByZXR1cm4gXCIzOjFcIjtcclxuICAgIH1cclxuICAgIGlmIChwYWdlV2lkdGggPiAxMTE1KSB7XHJcbiAgICAgICAgcmV0dXJuIFwiMjoyXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCIxXCI7XHJcbn07XHJcblxyXG4vKiogRnVuY3Rpb25hbCBjb21wb25lbnQgcmVwcmVzZW50aW5nIHRoZSBBZHZhbmNlZCBGaWx0ZXIgUGFuZWwsIHVzZWQgdG8gZmlsdGVyIHJlY29yZHMgb24gYSBNYW5hZ2VtZW50IHBhZ2UuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEFkdmFuY2VkRmlsdGVyUGFuZWwocHJvcHM6IHsgZmlsdGVyc1RvRGlzcGxheTogRmlsdGVyVHlwZVtdOyBvblJlc2V0OiAoKSA9PiB2b2lkIH0pIHtcclxuICAgIC8vIFVzZWQgdG8gcmVzZXQgdGhlIENyZWF0ZWQgQnkgZmllbGQuXHJcbiAgICBjb25zdCBbcmVzZXRLZXksIHNldFJlc2V0S2V5XSA9IHVzZVN0YXRlKDEpO1xyXG4gICAgY29uc3QgcmVzZXRDcmVhdGVkQnlGaWVsZCA9ICgpID0+IHNldFJlc2V0S2V5KHJlc2V0S2V5ICsgMSk7XHJcblxyXG4gICAgLy8gU2V0cyB0aGUgYm9yZGVyIGxheW91dCBvbiB0aGUgcGFnZSBiYXNlZCBvbiBwYWdlIHNpemVcclxuICAgIGNvbnN0IFt0aWxlR3JpZExheW91dCwgc2V0VGlsZUdyaWRMYXlvdXRdID0gdXNlU3RhdGUoXCJcIik7XHJcblxyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gdXNlV2luZG93V2lkdGgoKTtcclxuXHJcbiAgICAvLyBTZXRzIHRoZSBjdXJyZW50IHRpbGUgZ3JpZCBsYXlvdXQgb24gY2hhbmdlIGVsZW1lbnQgc2l6ZSBjaGFuZ2UuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFRpbGVHcmlkTGF5b3V0KGdldEN1cnJlbnRUaWxlTGF5b3V0KHBhZ2VXaWR0aCkpO1xyXG4gICAgfSwgW3BhZ2VXaWR0aF0pO1xyXG5cclxuICAgIC8qKiBSZXNldHMgYWxsIG9mIHRoZSBBZHZhbmNlZCBTZWFyY2ggZmlsdGVycyBiYWNrIHRvIGRlZmF1bHQuICovXHJcbiAgICBjb25zdCByZXNldEFkdmFuY2VkU2VhcmNoRmlsdGVycyA9ICgpID0+IHtcclxuICAgICAgICBwcm9wcy5maWx0ZXJzVG9EaXNwbGF5LmZvckVhY2goKGZpbHRlclRvRGlzcGxheSkgPT4gZmlsdGVyVG9EaXNwbGF5Lm9uQ2hhbmdlKG51bGwpKTtcclxuICAgICAgICByZXNldENyZWF0ZWRCeUZpZWxkKCk7XHJcbiAgICAgICAgcHJvcHMub25SZXNldCgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZXRlcm1pbmVGaWx0ZXJUeXBlID0gKGZpbHRlck9iamVjdDogc3RyaW5nLCBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXJPYmplY3QpIHtcclxuICAgICAgICAgICAgY2FzZSBcIm9wdGlvblNldFwiOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uU2V0RmlsdGVyKGZpbHRlclR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwibG9va3VwXCI6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBMb29rdXBGaWx0ZXIoZmlsdGVyVHlwZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IE9wdGlvblNldEZpbHRlciA9IChmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlKTogUmVhY3QuUmVhY3ROb2RlID0+IHtcclxuICAgICAgICBpZiAoZmlsdGVyVHlwZS50eXBlICE9PSBcIm9wdGlvblNldFwiKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBFeHBlY3RlZCBhIGZpbHRlciB0eXBlIG9mICdvcHRpb25TZXQnIGJ1dCB3YXMgJHtmaWx0ZXJUeXBlLnR5cGV9IGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWR2YW5jZWQtZmlsdGVyLXRpbGVcIiBrZXk9e2ZpbHRlclR5cGUubmFtZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzPntmaWx0ZXJUeXBlLnRpdGxlfTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT17ZmlsdGVyVHlwZS5zdHlsZUNsYXNzTmFtZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtmaWx0ZXJUeXBlLm9wdGlvbnMubWFwKChvcHRpb24pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBrZXk9e29wdGlvbi5uYW1lfSBjbGFzc05hbWU9e2Ake2ZpbHRlclR5cGUuaW5wdXRUeXBlfS1saXN0YH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e2ZpbHRlclR5cGUuaW5wdXRUeXBlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e29wdGlvbi5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e29wdGlvbi5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVHlwZS5hc3NvY2lhdGVkTGlzdC5pbmNsdWRlcyhvcHRpb24udmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBmaWx0ZXJUeXBlLm9uQ2hhbmdlKG9wdGlvbi5uYW1lKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7dGlsZUdyaWRMYXlvdXQgIT09IFwiMVwiICYmIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyXCIga2V5PXtgJHtmaWx0ZXJUeXBlLm5hbWV9LWJvcmRlcmB9PjwvZGl2Pn1cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgTG9va3VwRmlsdGVyID0gKGZpbHRlclR5cGU6IEZpbHRlclR5cGUpOiBSZWFjdC5SZWFjdE5vZGUgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJUeXBlLnR5cGUgIT09IFwibG9va3VwXCIpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEV4cGVjdGVkIGEgZmlsdGVyIHR5cGUgb2YgJ2xvb2t1cCcgYnV0IHdhcyAke2ZpbHRlclR5cGUudHlwZX0gYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBbc2VsZWN0ZWRPcHRpb25JZCwgc2V0U2VsZWN0ZWRPcHRpb25JZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGxvb2t1cCBpcyByZXNldCwgdGhlbiBjbGVhciB0aGUgc2VsZWN0ZWQgb3B0aW9uXHJcbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25JZChudWxsKTtcclxuICAgICAgICB9LCBbcmVzZXRLZXksIHNldFNlbGVjdGVkT3B0aW9uSWRdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWR2YW5jZWQtZmlsdGVyLXRpbGVcIiBrZXk9e2ZpbHRlclR5cGUubmFtZX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGgzPntmaWx0ZXJUeXBlLnRpdGxlfTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMb29rdXBGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtyZXNldEtleX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e2ZpbHRlclR5cGUubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e3NlbGVjdGVkT3B0aW9uSWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWxPcHRpb25zTmFtZT17ZmlsdGVyVHlwZS5wbHVyYWxPcHRpb25zTmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2ZpbHRlclR5cGUub3B0aW9uc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkT3B0aW9uSWQ9eyhzZWxlY3RlZE9wdGlvbklkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25JZChzZWxlY3RlZE9wdGlvbklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlLm9uQ2hhbmdlKHNlbGVjdGVkT3B0aW9uSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHBsYWNlaG9sZGVyOiBmaWx0ZXJUeXBlLnBsYWNlaG9sZGVyVGV4dCwgcmVxdWlyZWQ6IGZhbHNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhZHZhbmNlZC1maWx0ZXJzLXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFkdmFuY2VkLWZpbHRlci1zZWN0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5maWx0ZXJzVG9EaXNwbGF5Lm1hcCgoZmlsdGVyKSA9PiBkZXRlcm1pbmVGaWx0ZXJUeXBlKGZpbHRlci50eXBlLCBmaWx0ZXIpKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJyZXNldC1maWx0ZXJzIGRlZmF1bHRcIiBvbkNsaWNrPXtyZXNldEFkdmFuY2VkU2VhcmNoRmlsdGVyc30+XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzZXQgRmlsdGVyc1xyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufVxyXG4iLCJpbXBvcnQgeyBGaWx0ZXJUaWxlSW5mbyB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJUaWxlSW5mb1wiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyBhIHRpbGUgdG8gYXBwbHkgZmlsdGVycyBpbiB0aGUgTWFuYWdlbWVudCBQYW5lbCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gRmlsdGVyVGlsZTxUUmVjb3JkPihwcm9wczoge1xyXG4gICAgdGlsZTogRmlsdGVyVGlsZUluZm88VFJlY29yZD47XHJcbiAgICBzZWxlY3RlZFRpbGVJZHM6IHN0cmluZ1tdO1xyXG4gICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiAoc2VsZWN0ZWRUaWxlSWRzOiBzdHJpbmdbXSkgPT4gdm9pZDtcclxuICAgIG9uSG92ZXJNZXNzYWdlPzogc3RyaW5nO1xyXG59KSB7XHJcbiAgICAvKiogUGVyZm9ybSBhY3Rpb25zIHdoZW4gYSB0aWxlIGlzIGNsaWNrZWQuICovXHJcbiAgICBjb25zdCBvbkNsaWNrVGlsZSA9ICgpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgdGlsZSBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXHJcbiAgICAgICAgaWYgKHByb3BzLnNlbGVjdGVkVGlsZUlkcy5pbmNsdWRlcyhwcm9wcy50aWxlLmlkKSkge1xyXG4gICAgICAgICAgICAvLyBTZXQgbm9uZSBvZiB0aGUgdGlsZXMgdG8gc2VsZWN0ZWQgLSB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZW0gYWxsIGJlaW5nIHNlbGVjdGVkLlxyXG4gICAgICAgICAgICBwcm9wcy5zZXRTZWxlY3RlZFRpbGVJZHMoW10pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgaW5kaXZpZHVhbCB0aWxlIHRvIHNlbGVjdGVkLlxyXG4gICAgICAgICAgICBwcm9wcy5zZXRTZWxlY3RlZFRpbGVJZHMoW3Byb3BzLnRpbGUuaWRdKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSBhbiBvYmplY3QgdG8gZHluYW1pY2FsbHkgYWRkIGRhdGEgYXR0cmlidXRlcy5cclxuICAgIGxldCBhdHRyaWJ1dGVzID0ge307XHJcblxyXG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIHRpbGVzLCBkb24ndCBzZXQgdGhlICdkYXRhLXNlbGVjdGVkJyBhdHRyaWJ1dGUgKGZvciBkZWZhdWx0IHN0eWxpbmcpLlxyXG4gICAgaWYgKHByb3BzLnNlbGVjdGVkVGlsZUlkcy5sZW5ndGggIT09IDApIHtcclxuICAgICAgICBhdHRyaWJ1dGVzID0ge1xyXG4gICAgICAgICAgICBcImRhdGEtc2VsZWN0ZWRcIjogcHJvcHMuc2VsZWN0ZWRUaWxlSWRzLmluY2x1ZGVzKHByb3BzLnRpbGUuaWQpID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlci10aWxlXCIgb25DbGljaz17KCkgPT4gb25DbGlja1RpbGUoKX0gey4uLmF0dHJpYnV0ZXN9IHRpdGxlPXtwcm9wcy5vbkhvdmVyTWVzc2FnZX0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj57cHJvcHMudGlsZS5sYWJlbH08L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY291bnRcIj57cHJvcHMudGlsZS52YWx1ZS5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiID8gcHJvcHMudGlsZS52YWx1ZS5kYXRhIDogXCIqXCJ9PC9zcGFuPlxyXG4gICAgICAgICAgICA8SW1hZ2UgY2xhc3NOYW1lPVwiaW1hZ2VcIiBzcmM9e3Byb3BzLnRpbGUuaW1hZ2VQYXRofSBoZWlnaHQ9ezQ4fSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufVxyXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRmFTZWFyY2ggfSBmcm9tIFwicmVhY3QtaWNvbnMvZmFcIjtcclxuaW1wb3J0IHsgTGluayB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uL1R5cGVzL0ZpbHRlckdyb3VwXCI7XHJcbmltcG9ydCB7IFN1bW1hcnlTZWN0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL1N1bW1hcnlTZWN0aW9uXCI7XHJcbmltcG9ydCB7IEFkdmFuY2VkRmlsdGVyUGFuZWwgfSBmcm9tIFwiLi9BZHZhbmNlZEZpbHRlclBhbmVsXCI7XHJcbmltcG9ydCB7IEZpbHRlclRpbGUgfSBmcm9tIFwiLi9GaWx0ZXJUaWxlXCI7XHJcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiLi9Ub29sdGlwXCI7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vTW9kZWxzL0ZpbHRlclR5cGVcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuXHJcbi8qKiBDb21wb25lbnQgcmVwcmVzZW50aW5nIHRoZSBtYW5hZ2VtZW50IHBhbmVsIG9mIHRoZSBwYWdlICovXHJcbmV4cG9ydCBmdW5jdGlvbiBNYW5hZ2VtZW50UGFuZWw8VFJlY29yZD4ocHJvcHM6IHtcclxuICAgIHNldFNlYXJjaEJhckNvbnRlbnQ6IChzZWFyY2hJbnB1dDogc3RyaW5nKSA9PiB2b2lkO1xyXG4gICAgZmlsdGVyR3JvdXBzOiBGaWx0ZXJHcm91cDxUUmVjb3JkPltdIHwgbnVsbDtcclxuICAgIHBsYWNlaG9sZGVyVGV4dDogc3RyaW5nO1xyXG4gICAgZ2V0U3VtbWFyeVNlY3Rpb25zOiAoaXNBZHZhbmNlZEZpbHRlcnNTaG93bjogYm9vbGVhbikgPT4gU3VtbWFyeVNlY3Rpb25bXTtcclxuICAgIGZpbHRlcnNUb0Rpc3BsYXk6IEZpbHRlclR5cGVbXTtcclxufSkge1xyXG4gICAgY29uc3QgW3NlYXJjaElucHV0LCBzZXRTZWFyY2hJbnB1dF0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICAgIGNvbnN0IFtzaG93QWR2YW5jZWRGaWx0ZXJzLCBzZXRTaG93QWR2YW5jZWRGaWx0ZXJzXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IGluaXRpYWxGaWx0ZXJHcm91cHMgPSB1c2VSZWYocHJvcHMuZmlsdGVyR3JvdXBzKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoc2hvd0FkdmFuY2VkRmlsdGVycykge1xyXG4gICAgICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHsgdHlwZTogXCJNYW5hZ2VtZW50IFBhbmVsIC0gQWR2YW5jZWQgRmlsdGVyIFBhbmVsIG9wZW5lZFwiIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtzaG93QWR2YW5jZWRGaWx0ZXJzXSk7XHJcblxyXG4gICAgLyoqIEZ1bmN0aW9uIHdoaWNoIGRldGVybWluZXMgd2hhdCB0eXBlIG9mIGNvbnRlbnQgdG8gcmVuZGVyIGluIGEgdGlsZSBjb21wb25lbnQuICovXHJcbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlQ29udGVudCgpIHtcclxuICAgICAgICBjb25zdCBjb3JyZWN0U3VtbWFyeSA9IHByb3BzLmdldFN1bW1hcnlTZWN0aW9ucyhzaG93QWR2YW5jZWRGaWx0ZXJzKS5tYXAoKHN1bW1hcnlTZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoc3VtbWFyeVNlY3Rpb24udHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImJ1dHRvbi1saW5rXCI6IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake3N1bW1hcnlTZWN0aW9uLnR5cGV9ICsgJHtzdW1tYXJ5U2VjdGlvbi5sYWJlbH1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10eXBlPXtzdW1tYXJ5U2VjdGlvbi50eXBlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic3VtbWFyeS1zZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkaW5nXCI+e3N1bW1hcnlTZWN0aW9uLmxhYmVsfTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdW1tYXJ5U2VjdGlvbi50by5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGluayBjbGFzc05hbWU9XCJidXR0b25cIiB0bz17c3VtbWFyeVNlY3Rpb24udG8uZGF0YX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdW1tYXJ5U2VjdGlvbi5idXR0b25MYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FzZSBcImNvdW50XCI6IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake3N1bW1hcnlTZWN0aW9uLnR5cGV9ICsgJHtzdW1tYXJ5U2VjdGlvbi5sYWJlbH1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10eXBlPXtzdW1tYXJ5U2VjdGlvbi50eXBlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic3VtbWFyeS1zZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkaW5nXCI+e3N1bW1hcnlTZWN0aW9uLmxhYmVsfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1bW1hcnlTZWN0aW9uLnZhbHVlLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgPyBzdW1tYXJ5U2VjdGlvbi52YWx1ZS5kYXRhIDogXCIqXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7c3VtbWFyeVNlY3Rpb24udHlwZX0gKyAke3N1bW1hcnlTZWN0aW9uLmxhYmVsfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXR5cGU9e3N1bW1hcnlTZWN0aW9uLnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzdW1tYXJ5LXNlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRpbmdcIj57c3VtbWFyeVNlY3Rpb24ubGFiZWx9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VtbWFyeVNlY3Rpb24udmFsdWUubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiA/IHN1bW1hcnlTZWN0aW9uLnZhbHVlLmRhdGEgOiBcIipcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2FzZSBcImxpbmtcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7c3VtbWFyeVNlY3Rpb24udHlwZX0gKyAke3N1bW1hcnlTZWN0aW9uLmxhYmVsfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXR5cGU9e3N1bW1hcnlTZWN0aW9uLnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzdW1tYXJ5LXNlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRpbmdcIj57c3VtbWFyeVNlY3Rpb24ubGFiZWx9PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1bW1hcnlTZWN0aW9uLnRvLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rIHRvPXtzdW1tYXJ5U2VjdGlvbi50by5kYXRhfT57c3VtbWFyeVNlY3Rpb24uYnV0dG9uTGFiZWx9PC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHN1bW1hcnkgc2VjdGlvbiB0eXBlOiAnJHsoc3VtbWFyeVNlY3Rpb24gYXMgYW55KS50eXBlfSdgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjb3JyZWN0U3VtbWFyeTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFuYWdlbWVudC1wYW5lbFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlci1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlYXJjaC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGFiZWxcIj5TZWFyY2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWFyY2gtYmFyLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9eyhldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0U2VhcmNoQmFyQ29udGVudChzZWFyY2hJbnB1dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInZpZXctc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNlYXJjaC1iYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaElucHV0KGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlYXJjaElucHV0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyVGV4dH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3Byb3BzLnBsYWNlaG9sZGVyVGV4dH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWFyY2gtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiU2VhcmNoIFJlc3VsdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gcHJvcHMuc2V0U2VhcmNoQmFyQ29udGVudChzZWFyY2hJbnB1dCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIFJlc3VsdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmFTZWFyY2ggLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7cHJvcHMuZmlsdGVyR3JvdXBzICE9PSBudWxsICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlci1ncm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmZpbHRlckdyb3Vwcy5tYXAoKGZpbHRlckdyb3VwKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVyLWdyb3VwXCIga2V5PXtmaWx0ZXJHcm91cC5hdHRyaWJ1dGV9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwibGFiZWwtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciBieSB7ZmlsdGVyR3JvdXAubGFiZWxFbGVtZW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbHRlckdyb3VwLnRvb2x0aXBFbGVtZW50ICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBvdmVybGF5Q29udGVudD17ZmlsdGVyR3JvdXAudG9vbHRpcEVsZW1lbnR9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbHRlci10aWxlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ZpbHRlckdyb3VwLnRpbGVzLm1hcCgodGlsZSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17dGlsZS5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U9e3RpbGUub25Ib3Zlck1lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3RpbGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVGlsZUlkcz17dGlsZS5zZWxlY3RlZFRpbGVJZHN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVGlsZUlkcz17KGlkcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZS5zZXRTZWxlY3RlZFRpbGVJZHMoaWRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIk1hbmFnZW1lbnQgUGFuZWwgLSBGaWx0ZXIgVGlsZSBjbGlja2VkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZU5hbWU6IHRpbGUuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMuZmlsdGVyc1RvRGlzcGxheS5sZW5ndGggIT09IDAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhZHZhbmNlZC1maWx0ZXItc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWR2YW5jZWQtZmlsdGVyLWJ1dHRvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZHZhbmNlZC1maWx0ZXItYnV0dG9uLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1pcy1vcGVuPXtzaG93QWR2YW5jZWRGaWx0ZXJzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e2A+YH08L3NwYW4+e1wiIFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhZHZhbmNlZC1maWx0ZXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dBZHZhbmNlZEZpbHRlcnMoIXNob3dBZHZhbmNlZEZpbHRlcnMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZHZhbmNlZCBGaWx0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93QWR2YW5jZWRGaWx0ZXJzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkdmFuY2VkRmlsdGVyUGFuZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnNUb0Rpc3BsYXk9e3Byb3BzLmZpbHRlcnNUb0Rpc3BsYXl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNlYXJjaCB0ZXJtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VhcmNoSW5wdXQoXCJcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IGFsbCBmaWx0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuZmlsdGVyR3JvdXBzIS5mb3JFYWNoKChmaWx0ZXJHcm91cCwgZmlsdGVyR3JvdXBJbmRleCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyR3JvdXAudGlsZXMuZm9yRWFjaCgodGlsZSwgdGlsZUluZGV4KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZS5zZXRTZWxlY3RlZFRpbGVJZHMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEZpbHRlckdyb3Vwcy5jdXJyZW50IVtmaWx0ZXJHcm91cEluZGV4XS50aWxlc1t0aWxlSW5kZXhdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZWxlY3RlZFRpbGVJZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN1bW1hcnktc2VjdGlvbnNcIj57cmVuZGVyVGlsZUNvbnRlbnQoKX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn1cclxuIiwiaW1wb3J0IHsgTG9hZGluZ0RhdGEgfSBmcm9tIFwiLi4vRGVmYXVsdFJvb3RTdGF0ZVwiO1xyXG5cclxuLyoqXHJcbiAqIENvbnZlcnRzIGEgcG90ZW50aWFsbHkgbG9hZGluZyBvYmplY3QgdG8gYW5vdGhlciBsb2FkaW5nIG9iamVjdCwgdHJhbnNmb3JtaW5nIHRoZSBkYXRhIGlmIGxvYWRlZC5cclxuICogQHBhcmFtIGxvYWRpbmdEYXRhIExvYWRpbmcgZGF0YSB0byB0cmFuc2Zvcm0uXHJcbiAqIEBwYXJhbSBpZkxvYWRlZCBUcmFuc2Zvcm1hdGlvbiB0byBwZXJmb3JtIGlmIHRoZSBkYXRhIGlzIGxvYWRlZC5cclxuICogQHJldHVybnMgTmV3IGxvYWRpbmcgZGF0YSBvYmplY3QuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9Mb2FkaW5nRGF0YTxUSW4sIFRPdXQ+KGxvYWRpbmdEYXRhOiBMb2FkaW5nRGF0YTxUSW4+LCBpZkxvYWRlZDogKGRhdGE6IFRJbikgPT4gVE91dCk6IExvYWRpbmdEYXRhPFRPdXQ+IHtcclxuICAgIGlmIChsb2FkaW5nRGF0YS5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogbG9hZGluZ0RhdGEubG9hZGluZ1N0YXR1cyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IGlmTG9hZGVkKGxvYWRpbmdEYXRhLmRhdGEpIH07XHJcbn1cclxuIiwiaW1wb3J0IHsgQ2FzZVR5cGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVR5cGVcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0luY2lkZW50U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyB0b0xvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0hlbHBlcnMvdG9Mb2FkaW5nRGF0YVwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJHcm91cFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZEluY2lkZW50cyB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJNb2RlbHMvRmlsdGVyZWRJbmNpZGVudHNcIjtcclxuXHJcbi8qKiBEZXNjcmlwdGlvbiBvZiB0aGUgQ2FzZSBmaWx0ZXIgZ3JvdXBzIHRvIGRpc3BsYXkgb24gdGhlIE1hbmFnZW1lbnQgUGFuZWwuICovXHJcbmV4cG9ydCBjb25zdCBnZXRDYXNlc0ZpbHRlckdyb3VwcyA9IChcclxuICAgIGZpbHRlcmVkSW5jaWRlbnRzOiBGaWx0ZXJlZEluY2lkZW50cyxcclxuICAgIHNlbGVjdGVkU3RhdHVzVGlsZUlkczogc3RyaW5nW10sXHJcbiAgICBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHM6IFJlYWN0LkRpc3BhdGNoPFJlYWN0LlNldFN0YXRlQWN0aW9uPHN0cmluZ1tdPj4sXHJcbiAgICBzZWxlY3RlZFR5cGVUaWxlSWRzOiBzdHJpbmdbXSxcclxuICAgIHNldFNlbGVjdGVkVHlwZVRpbGVJZHM6IChzZWxlY3RlZFRpbGVUeXBlSWRzOiBzdHJpbmdbXSkgPT4gdm9pZFxyXG4pOiBGaWx0ZXJHcm91cDxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+W10gPT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudDogPD5TdGF0dXM8Lz4sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJTdGF0dXNcIixcclxuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQ6IChcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+V2l0aCBCaXN0ZWNoPC9zdHJvbmc+IC0gQ2FzZXMgaW4tcHJvZ3Jlc3MgYW5kIGN1cnJlbnRseSBiZWluZyB3b3JrZWQgb24uXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPldpdGggWW91PC9zdHJvbmc+IC0gQ2FzZXMgYXdhaXRpbmcgZmVlZGJhY2sgb3IgY29uZmlybWF0aW9uIG9mIHJlc29sdXRpb24uXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk9uIEhvbGQ8L3N0cm9uZz4gLSBDYXNlcyB3aGVyZSB0aGUgcmVzb2x1dGlvbiBvZiBDYXNlIGlzIG9uIGhvbGQgYXMgYWdyZWVkIHdpdGggeW91LlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB0aWxlczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNhc2UtdHlwZS13aXRoLWJpc3RlY2hcIixcclxuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRpbGVJZHM6IHNldFNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRpbGVJZHM6IHNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IChpbmNpZGVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGluY2lkZW50LnN0YXR1c2NvZGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpc3RlY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG9Mb2FkaW5nRGF0YShmaWx0ZXJlZEluY2lkZW50cy5jYXNlc1dpdGhCaXN0ZWNoLCAoaW5jaWRlbnRzKSA9PiBpbmNpZGVudHMubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg6IFwiL2Nhc2UtbWFuYWdlbWVudC1zdGF0dXMtd2l0aC1iaXN0ZWNoLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJjYXNlLXR5cGUtd2l0aC15b3VcIixcclxuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRpbGVJZHM6IHNldFNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRpbGVJZHM6IHNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IChpbmNpZGVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW0luY2lkZW50U3RhdHVzQ29kZVtcIlBlbmRpbmcgRmVlZGJhY2tcIl0sIEluY2lkZW50U3RhdHVzQ29kZS5SZXNvbHZlZF0uaW5jbHVkZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNpZGVudC5zdGF0dXNjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRvTG9hZGluZ0RhdGEoZmlsdGVyZWRJbmNpZGVudHMuY2FzZXNXaXRoWW91LCAoaW5jaWRlbnRzKSA9PiBpbmNpZGVudHMubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg6IFwiL2Nhc2UtbWFuYWdlbWVudC1zdGF0dXMtd2l0aC15b3Uuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNhc2UtdHlwZS1vbi1ob2xkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAoaW5jaWRlbnQpID0+IGluY2lkZW50LnN0YXR1c2NvZGUgPT09IEluY2lkZW50U3RhdHVzQ29kZVtcIk9uIEhvbGRcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG9Mb2FkaW5nRGF0YShmaWx0ZXJlZEluY2lkZW50cy5jYXNlc09uSG9sZCwgKGluY2lkZW50cykgPT4gaW5jaWRlbnRzLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoOiBcIi9jYXNlLW1hbmFnZW1lbnQtc3RhdHVzLW9uLWhvbGQuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsYWJlbEVsZW1lbnQ6IDw+VHlwZTwvPixcclxuICAgICAgICAgICAgYXR0cmlidXRlOiBcIlR5cGVcIixcclxuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQ6IChcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SW5jaWRlbnQ8L3N0cm9uZz4gLSBBIGZhdWx0IG9yIGltcGFpcm1lbnQgY2F1c2luZyBhIHJlZHVjdGlvbiBpbiBzZXJ2aWNlLlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5TdXBwb3J0IFJlcXVlc3Q8L3N0cm9uZz4gLSBBIGZvcm1hbCByZXF1ZXN0IGZvciBzb21ldGhpbmcgdG8gYmUgcHJvdmlkZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkNoYW5nZTwvc3Ryb25nPiAtIEFuIGFtZW5kbWVudCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhIHNlcnZpY2UuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlByb2JsZW08L3N0cm9uZz4gLSBBbiBvbmdvaW5nIHJlZHVjdGlvbiBpbiBzZXJ2aWNlLCBmb3Igd2hpY2ggYSByZXNvbHV0aW9uIGhhcyB5ZXQgdG8gYmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lZC5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGlsZXM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJjYXNlLXR5cGUtc3VwcG9ydC1yZXF1ZXN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiBzZXRTZWxlY3RlZFR5cGVUaWxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVGlsZUlkczogc2VsZWN0ZWRUeXBlVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IChpbmNpZGVudCkgPT4gaW5jaWRlbnQuY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZVtcIlN1cHBvcnQgUmVxdWVzdFwiXSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VwcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b0xvYWRpbmdEYXRhKGZpbHRlcmVkSW5jaWRlbnRzLnN1cHBvcnRSZXF1ZXN0cywgKGluY2lkZW50cykgPT4gaW5jaWRlbnRzLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoOiBcIi9jYXNlLXR5cGUtc2VydmljZS1yZXF1ZXN0LnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJjYXNlLXR5cGUtaW5jaWRlbnRcIixcclxuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRpbGVJZHM6IHNldFNlbGVjdGVkVHlwZVRpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFR5cGVUaWxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogKGluY2lkZW50KSA9PiBpbmNpZGVudC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlLkluY2lkZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkluY2lkZW50c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b0xvYWRpbmdEYXRhKGZpbHRlcmVkSW5jaWRlbnRzLmluY2lkZW50cywgKGluY2lkZW50cykgPT4gaW5jaWRlbnRzLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoOiBcIi9jYXNlLXR5cGUtaW5jaWRlbnQuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNhc2UtdHlwZS1jaGFuZ2VcIixcclxuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRpbGVJZHM6IHNldFNlbGVjdGVkVHlwZVRpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFR5cGVUaWxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogKGluY2lkZW50KSA9PiBpbmNpZGVudC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlLkNoYW5nZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJDaGFuZ2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRvTG9hZGluZ0RhdGEoZmlsdGVyZWRJbmNpZGVudHMuY2hhbmdlcywgKGluY2lkZW50cykgPT4gaW5jaWRlbnRzLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoOiBcIi9jYXNlLXR5cGUtY2hhbmdlLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJjYXNlLXR5cGUtcHJvYmxlbVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVGlsZUlkczogc2V0U2VsZWN0ZWRUeXBlVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRpbGVJZHM6IHNlbGVjdGVkVHlwZVRpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAoaW5jaWRlbnQpID0+IGluY2lkZW50LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGUuUHJvYmxlbSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJQcm9ibGVtc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b0xvYWRpbmdEYXRhKGZpbHRlcmVkSW5jaWRlbnRzLnByb2JsZW1zLCAoaW5jaWRlbnRzKSA9PiBpbmNpZGVudHMubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg6IFwiL2Nhc2UtdHlwZS1wcm9ibGVtLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxufTtcclxuIiwiaW1wb3J0IHsgQnNTb3J0RG93biwgQnNTb3J0VXAgfSBmcm9tIFwicmVhY3QtaWNvbnMvYnNcIjtcclxuaW1wb3J0IHsgU29ydGFibGVUYWJsZUhlYWRlckNvbHVtbnMgfSBmcm9tIFwiLi4vVHlwZXMvU29ydGFibGVUYWJsZUhlYWRlckNvbHVtbnNcIjtcclxuXHJcbi8qKiBUeXBlIGRlZmluaXRpb24gZm9yIHRoZSBzb3J0aW5nIHByb3BzIG9mIHRoZSB0YWJsZSBoZWFkZXIgY2VsbC4gKi9cclxudHlwZSBTb3J0aW5nUHJvcHMgPVxyXG4gICAgfCB7XHJcbiAgICAgICAgICBzb3J0aW5nRW5hYmxlZDogdHJ1ZTtcclxuICAgICAgICAgIHNvcnRlZENvbHVtbjogU29ydGFibGVUYWJsZUhlYWRlckNvbHVtbnM7XHJcbiAgICAgICAgICBzZXRTb3J0ZWRDb2x1bW46IChpc1NvcnRlZEFzY2VuZGluZzogU29ydGFibGVUYWJsZUhlYWRlckNvbHVtbnMpID0+IHZvaWQ7XHJcbiAgICAgICAgICBpc1NvcnRlZEFzY2VuZGluZzogYm9vbGVhbjtcclxuICAgICAgICAgIHNldElzU29ydGVkQXNjZW5kaW5nOiAoaXNTb3J0ZWRBc2NlbmRpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgc29ydGluZ0VuYWJsZWQ6IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB8IHVuZGVmaW5lZDtcclxuXHJcbi8qKiBDb21wb25lbnQgZm9yIGEgaGVhZGVyIGNlbGwgb2YgYSB0YWJsZSAqL1xyXG5leHBvcnQgY29uc3QgVGFibGVIZWFkZXJDZWxsID0gKHByb3BzOiB7XHJcbiAgICBjb2x1bW5IZWFkZXI6IHN0cmluZztcclxuICAgIGZpZWxkTmFtZTogU29ydGFibGVUYWJsZUhlYWRlckNvbHVtbnM7XHJcbiAgICBpc0RhdGU/OiBib29sZWFuO1xyXG4gICAgc29ydGluZ1Byb3BzPzogU29ydGluZ1Byb3BzO1xyXG59KSA9PiB7XHJcbiAgICBjb25zdCBzb3J0aW5nUHJvcHMgPSBwcm9wcy5zb3J0aW5nUHJvcHM7XHJcblxyXG4gICAgaWYgKHNvcnRpbmdQcm9wcz8uc29ydGluZ0VuYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gPHRoIGNsYXNzTmFtZT17cHJvcHMuZmllbGROYW1lfT57cHJvcHMuY29sdW1uSGVhZGVyfTwvdGg+O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGlzU29ydGVkOiBib29sZWFuID0gcHJvcHMuZmllbGROYW1lID09PSBzb3J0aW5nUHJvcHMuc29ydGVkQ29sdW1uO1xyXG5cclxuICAgIGNvbnN0IG9uQ2xpY2tDb2x1bW4gPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzU29ydGVkKSB7XHJcbiAgICAgICAgICAgIHNvcnRpbmdQcm9wcy5zZXRJc1NvcnRlZEFzY2VuZGluZyghc29ydGluZ1Byb3BzLmlzU29ydGVkQXNjZW5kaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNvcnRpbmdQcm9wcy5zZXRTb3J0ZWRDb2x1bW4ocHJvcHMuZmllbGROYW1lKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgc29ydEljb24gPSBzb3J0aW5nUHJvcHMuaXNTb3J0ZWRBc2NlbmRpbmcgPyAoXHJcbiAgICAgICAgPEJzU29ydFVwIHNpemU9ezIwfSBjbGFzc05hbWU9XCJzb3J0LWljb25cIiAvPlxyXG4gICAgKSA6IChcclxuICAgICAgICA8QnNTb3J0RG93biBzaXplPXsyMH0gY2xhc3NOYW1lPVwic29ydC1pY29uXCIgLz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8dGggY2xhc3NOYW1lPXtwcm9wcy5maWVsZE5hbWV9IG9uQ2xpY2s9e29uQ2xpY2tDb2x1bW59PlxyXG4gICAgICAgICAgICB7cHJvcHMuY29sdW1uSGVhZGVyfSB7aXNTb3J0ZWQgJiYgc29ydEljb259XHJcbiAgICAgICAgPC90aD5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IENhc2VUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vVHlwZXMvVGFibGVIZWFkZXJDZWxscy9DYXNlVGFibGVIZWFkZXJDZWxsXCI7XHJcblxyXG4vKiogRGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGhlYWRlciBjZWxscyB0byBkaXNwbGF5IGluIHRoZSBDYXNlcyBUYWJsZS4gKi9cclxuZXhwb3J0IGNvbnN0IGdldENhc2VUYWJsZUhlYWRlckNlbGxzID0gKCk6IENhc2VUYWJsZUhlYWRlckNlbGxbXSA9PiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDYXNlIE51bWJlclwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwidGlja2V0bnVtYmVyXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAxLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiQ2FzZSBUaXRsZVwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwidGl0bGVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDYXNlIFR5cGVcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImNhc2V0eXBlY29kZVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMyxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIkNyZWF0ZWQgT25cIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImNyZWF0ZWRvblwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogNCxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIlByaW1hcnkgQ29udGFjdFwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwiX3ByaW1hcnljb250YWN0aWRfdmFsdWVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDUsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDYXNlIFByaW9yaXR5XCIsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJwcmlvcml0eWNvZGVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDYsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDYXNlIFN0YXR1c1wiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IFBBR0VTIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcbmltcG9ydCB7IFN1bW1hcnlTZWN0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL1N1bW1hcnlTZWN0aW9uXCI7XHJcblxyXG4vKipcclxuICogRGVzY3JpcHRpb24gb2YgdGhlIENhc2VzIHN1bW1hcnkgc2VjdGlvbnMgdG8gZGlzcGxheSBvbiB0aGUgTWFuYWdlbWVudCBQYW5lbC5cclxuICogQHBhcmFtIG51bWJlck9mQWN0aXZlQ2FzZXMgTnVtYmVyIG9mIGN1cnJlbnRseSBhY3RpdmUgQ2FzZXMuXHJcbiAqIEBwYXJhbSBpc0FkdmFuY2VkRmlsdGVyc1Nob3duIFdoZXRoZXIgdGhlICdBZHZhbmNlZCBGaWx0ZXJzJyBwYW5lbCBpcyBzaG93bi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDYXNlc1N1bW1hcnlTZWN0aW9ucyhcclxuICAgIG51bWJlck9mQWN0aXZlQ2FzZXM6IExvYWRpbmdEYXRhPG51bWJlcj4sXHJcbiAgICBpc0FkdmFuY2VkRmlsdGVyc1Nob3duOiBib29sZWFuXHJcbik6IFN1bW1hcnlTZWN0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uLWxpbmtcIixcclxuICAgICAgICAgICAgbGFiZWw6IFwiTmV3IENhc2VcIixcclxuICAgICAgICAgICAgYnV0dG9uTGFiZWw6IFwiQ3JlYXRlXCIsXHJcbiAgICAgICAgICAgIHRvOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IFBBR0VTLkNyZWF0ZUNhc2UucGF0aCB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBcImNvdW50XCIsXHJcbiAgICAgICAgICAgIGxhYmVsOiBcIkFjdGl2ZSBDYXNlc1wiLFxyXG4gICAgICAgICAgICB2YWx1ZTogbnVtYmVyT2ZBY3RpdmVDYXNlcyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLihpc0FkdmFuY2VkRmlsdGVyc1Nob3duXHJcbiAgICAgICAgICAgID8gW1xyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvbi1saW5rXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJDbG9zZWQgQ2FzZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkxhYmVsOiBcIkNsb3NlZCBDYXNlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdG86IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogUEFHRVMuQ2xvc2VkQ2FzZXMucGF0aCB9LFxyXG4gICAgICAgICAgICAgICAgICB9IGFzIFN1bW1hcnlTZWN0aW9uLFxyXG4gICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgOiBbXSksXHJcbiAgICBdO1xyXG59XHJcbiIsIi8qKiBFbnVtIHJlcHJlc2VudGluZyB0aGUgZGF0ZSBzaW5jZSBhbiBJbmNpZGVudCB3YXMgQ3JlYXRlZC4gKi9cclxuZXhwb3J0IGVudW0gRGF0ZVNpbmNlIHtcclxuICAgIC8qKiBSYWlzZWQgVG9kYXkgKi9cclxuICAgIFRvZGF5ID0gMSxcclxuXHJcbiAgICAvKiogUmFpc2VkIFllc3RlcmRheSAqL1xyXG4gICAgWWVzdGVyZGF5ID0gMixcclxuXHJcbiAgICAvKiogUmFpc2VkIHRoaXMgV2Vlay4gKi9cclxuICAgIFwiVGhpcyBXZWVrXCIgPSAzLFxyXG5cclxuICAgIC8qKiBSYWlzZWQgdGhpcyBNb250aC4gKi9cclxuICAgIFwiVGhpcyBNb250aFwiID0gNCxcclxuXHJcbiAgICAvKiogUmFpc2VkIHRoaXMgWWVhci4gKi9cclxuICAgIFwiVGhpcyBZZWFyXCIgPSA1LFxyXG59XHJcbiIsImltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBQQUdFUyB9IGZyb20gXCIuLi9Ib29rcy91c2VQYWdlTmF2aWdhdGlvblwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcblxyXG4vKiogQmFubmVyIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gcGVydGFpbmluZyB0byBNYWpvciBJbmNpZGVudHMgKi9cclxuZXhwb3J0IGNvbnN0IE1ham9ySW5jaWRlbnRCYW5uZXI6IFJlYWN0LkZDPHsgbWVzc2FnZVRleHQ6IHN0cmluZzsgc3R5bGVDbGFzczogc3RyaW5nIH0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtwcm9wcy5zdHlsZUNsYXNzfSBkYXRhLWluY2lkZW50LXN0YXR1cz1cImFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiaW5jaWRlbnQtd2FybmluZy10cmlhbmdsZS5zdmdcIiBoZWlnaHQ9ezUzfSB3aWR0aD17NjR9IGNsYXNzTmFtZT1cImluY2lkZW50LXdhcm5pbmctdHJpYW5nbGVcIiAvPlxyXG5cclxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiaW5jaWRlbnQtd2FybmluZy1tZXNzYWdlXCI+e3Byb3BzLm1lc3NhZ2VUZXh0fTwvcD5cclxuICAgICAgICAgICAgPExpbmsgdG89e1BBR0VTLk1ham9ySW5jaWRlbnRzLnBhdGh9IGNsYXNzTmFtZT1cImJ1dHRvbiBkZWZhdWx0IGJ0bi1pbmNpZGVudC1kZXRhaWxzXCIgdGl0bGU9XCJWaWV3IERldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgIFZpZXcgRGV0YWlsc1xyXG4gICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBJbVNwaW5uZXIyIH0gZnJvbSBcInJlYWN0LWljb25zL2ltXCI7XHJcblxyXG5leHBvcnQgY29uc3QgTG9hZGluZ1NwaW5uZXIgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cImxvYWRpbmctc3Bpbm5lclwiPlxyXG4gICAgICAgICAgICA8SW1TcGlubmVyMiBjbGFzc05hbWU9XCJzcGluXCIgLz4gTG9hZGluZ1xyXG4gICAgICAgIDwvcD5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBDYXNlVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlVHlwZVwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvSW5jaWRlbnRTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VQcmlvcml0eUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVByaW9yaXR5Q29kZVwiO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuL0Jhc2VQYWdlXCI7XHJcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tIFwiLi4vSGVscGVycy9EYXRlSGVscGVyXCI7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJHcm91cFwiO1xyXG5pbXBvcnQgeyBNYW5hZ2VtZW50UGFuZWwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9NYW5hZ2VtZW50UGFuZWxcIjtcclxuaW1wb3J0IHsgZ2V0Q2FzZXNGaWx0ZXJHcm91cHMgfSBmcm9tIFwiLi4vRGF0YS9nZXRDYXNlc0ZpbHRlckdyb3Vwc1wiO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZEluY2lkZW50cyB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJNb2RlbHMvRmlsdGVyZWRJbmNpZGVudHNcIjtcclxuaW1wb3J0IHsgVGFibGVIZWFkZXJDZWxsIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvVGFibGVIZWFkZXJDZWxsXCI7XHJcbmltcG9ydCB7IGdldENhc2VUYWJsZUhlYWRlckNlbGxzIH0gZnJvbSBcIi4uL0RhdGEvZ2V0Q2FzZVRhYmxlSGVhZGVyQ2VsbHNcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlIH0gZnJvbSBcIi4uL01vZGVscy9JbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuaW1wb3J0IHsgU3VtbWFyeVNlY3Rpb24gfSBmcm9tIFwiLi4vVHlwZXMvU3VtbWFyeVNlY3Rpb25cIjtcclxuaW1wb3J0IHsgZ2V0Q2FzZXNTdW1tYXJ5U2VjdGlvbnMgfSBmcm9tIFwiLi4vRGF0YS9nZXRDYXNlc1N1bW1hcnlTZWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBEYXRlU2luY2UgfSBmcm9tIFwiLi4vRW51bXMvRGF0ZVNpbmNlXCI7XHJcbmltcG9ydCB7IE1ham9ySW5jaWRlbnRCYW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9NYWpvckluY2lkZW50QmFubmVyXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBDb250YWN0U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RTdGF0ZUNvZGVcIjtcclxuXHJcbi8qKiBBZHZhbmNlZCBmaWx0ZXIgY29uZmlndXJhdGlvbiAqL1xyXG5leHBvcnQgdHlwZSBBZHZhbmNlZEZpbHRlciA9IHtcclxuICAgIC8qKiBMaXN0IG9mIHNlbGVjdGVkIEluY2lkZW50IFN0YXR1c2VzLiAqL1xyXG4gICAgc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzOiBJbmNpZGVudFN0YXR1c0NvZGVbXTtcclxuXHJcbiAgICAvKiogTGlzdCBvZiBzZWxlY3RlZCBDYXNlIFR5cGVzLiAqL1xyXG4gICAgc2VsZWN0ZWRDYXNlVHlwZXM6IENhc2VUeXBlW107XHJcblxyXG4gICAgLyoqIENyZWF0ZWQgQnkgQ29udGFjdC4gKi9cclxuICAgIGNyZWF0ZWRCeTogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBEYXRlIG9mIENyZWF0aW9uLiAqL1xyXG4gICAgZGF0ZVJhbmdlOiB7IHZhbHVlOiBEYXRlU2luY2UgfCBudWxsOyBmcm9tOiBEYXRlIHwgbnVsbDsgdG86IERhdGUgfCBudWxsIH07XHJcbn07XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgQ2FzZXMgUGFnZSAqL1xyXG5leHBvcnQgY29uc3QgQ2FzZXM6IFJlYWN0LkZDID0gKCkgPT4ge1xyXG4gICAgY29uc3QgaW5jaWRlbnRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pbmNpZGVudHMpO1xyXG4gICAgY29uc3QgY29udGFjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmNvbnRhY3RzKTtcclxuXHJcbiAgICAvLyBMb2NhbCBzdGF0ZSB1c2VkIGZvciB0aGUgdGFibGUgc29ydGluZy5cclxuICAgIGNvbnN0IFtzb3J0ZWRDb2x1bW4sIHNldFNvcnRlZENvbHVtbl0gPSB1c2VTdGF0ZTxrZXlvZiBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+KFwiY3JlYXRlZG9uXCIpO1xyXG4gICAgY29uc3QgW2lzU29ydGVkQXNjZW5kaW5nLCBzZXRJc1NvcnRlZEFzY2VuZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgdGhlIFNlYXJjaCBCYXJcclxuICAgIGNvbnN0IFtzZWFyY2hCYXJDb250ZW50LCBzZXRTZWFyY2hCYXJDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgdGhlIFRpbGUgc2VsZWN0aW9uLlxyXG4gICAgY29uc3QgW3NlbGVjdGVkU3RhdHVzVGlsZUlkcywgc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWRUeXBlVGlsZUlkcywgc2V0U2VsZWN0ZWRUeXBlVGlsZUlkc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xyXG5cclxuICAgIC8vIExvY2FsIHN0YXRlIHVzZWQgZm9yIGFkdmFuY2VkIGZpbHRlcnMuXHJcbiAgICBjb25zdCBbYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLCBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnNdID0gdXNlU3RhdGU8QWR2YW5jZWRGaWx0ZXI+KHtcclxuICAgICAgICBzZWxlY3RlZENhc2VUeXBlczogW10sXHJcbiAgICAgICAgc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzOiBbXSxcclxuICAgICAgICBjcmVhdGVkQnk6IFwiXCIsXHJcbiAgICAgICAgZGF0ZVJhbmdlOiB7IHZhbHVlOiBudWxsLCBmcm9tOiBudWxsLCB0bzogbnVsbCB9LFxyXG4gICAgfSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBxdWVyaWVkIENyZWF0ZWRCeSB2YWx1ZSBpbiB0aGUgQWR2YW5jZWQgRmlsdGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBjcmVhdGVkQnlJZCBUaGUgQ29udGFjdCB0aGF0IGNyZWF0ZWQgdGhlIEluY2lkZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdCB1cGRhdGVDcmVhdGVkQnlDb250YWN0ID0gKGNyZWF0ZWRCeUlkOiBzdHJpbmcgfCBudWxsKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgdGhlIGNyZWF0ZWRCeUlkIGlzIGFscmVhZHkgbnVsbCwgcmVtb3ZlIGl0LlxyXG4gICAgICAgIGlmICghY3JlYXRlZEJ5SWQpIHtcclxuICAgICAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgICAgIGNyZWF0ZWRCeTogXCJcIixcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbHNlOyBVcGRhdGUgdGhlIENyZWF0ZWRCeSBmaWx0ZXIuXHJcbiAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5wcmV2aW91c1N0YXRlLFxyXG4gICAgICAgICAgICBjcmVhdGVkQnk6IGNyZWF0ZWRCeUlkLFxyXG4gICAgICAgIH0pKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBxdWVyaWVkIEluY2lkZW50U3RhdHVzQ29kZSBlbnVtIHZhbHVlcyBpbiB0aGUgQWR2YW5jZWQgRmlsdGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBJbmNpZGVudFN0YXR1c0NvZGUgZW51bS5cclxuICAgICAqL1xyXG4gICAgY29uc3QgdXBkYXRlU2VsZWN0ZWRJbmNpZGVudFR5cGVzID0gKGtleTogc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5jaWRlbnRTdGF0dXNlczogW10sXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaW5jaWRlbnRTdGF0dXNFbnVtVmFsdWUgPSBJbmNpZGVudFN0YXR1c0NvZGVba2V5IGFzIGtleW9mIHR5cGVvZiBJbmNpZGVudFN0YXR1c0NvZGVdO1xyXG5cclxuICAgICAgICBpZiAoIWluY2lkZW50U3RhdHVzRW51bVZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7a2V5fScgZmlsdGVyIHZhbHVlIGZvciB0aGUgQ2FzZSBTdGF0dXMgZmlsdGVyIGlzIG5vdCBpbXBsZW1lbnRlZGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGtleSBpcyBhbHJlYWR5IGluIHRoZSBJbmNpZGVudFN0YXR1c0NvZGUgbGlzdCwgcmVtb3ZlIGl0LlxyXG4gICAgICAgIGlmIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzLmluY2x1ZGVzKGluY2lkZW50U3RhdHVzRW51bVZhbHVlKSkge1xyXG4gICAgICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5wcmV2aW91c1N0YXRlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzOiBbLi4uYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkSW5jaWRlbnRTdGF0dXNlc10uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtICE9PSBpbmNpZGVudFN0YXR1c0VudW1WYWx1ZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbHNlOyBBZGQgdGhlIEluY2lkZW50U3RhdHVzQ29kZSB0byB0aGUgbGlzdC5cclxuICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW5jaWRlbnRTdGF0dXNlczogWy4uLmFkdmFuY2VkU2VhcmNoRmlsdGVycy5zZWxlY3RlZEluY2lkZW50U3RhdHVzZXMsIGluY2lkZW50U3RhdHVzRW51bVZhbHVlXSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB0aGUgcXVlcmllZCBDYXNlVHlwZSB2YWx1ZXMgaW4gdGhlIEFkdmFuY2VkIEZpbHRlci5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgQ2FzZVR5cGUgZW51bS5cclxuICAgICAqL1xyXG4gICAgY29uc3QgdXBkYXRlU2VsZWN0ZWRDYXNlVHlwZXMgPSAoa2V5OiBzdHJpbmcgfCBudWxsKSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5wcmV2aW91c1N0YXRlLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDYXNlVHlwZXM6IFtdLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNhc2VFbnVtVmFsdWUgPSBDYXNlVHlwZVtrZXkgYXMga2V5b2YgdHlwZW9mIENhc2VUeXBlXTtcclxuXHJcbiAgICAgICAgaWYgKCFjYXNlRW51bVZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7a2V5fScgZmlsdGVyIHZhbHVlIGZvciB0aGUgQ2FzZSBUeXBlIGZpbHRlciBpcyBub3QgaW1wbGVtZW50ZWRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBrZXkgaXMgYWxyZWFkeSBpbiB0aGUgQ2FzZVR5cGUgbGlzdCwgcmVtb3ZlIGl0LlxyXG4gICAgICAgIGlmIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMuaW5jbHVkZXMoY2FzZUVudW1WYWx1ZSkpIHtcclxuICAgICAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2FzZVR5cGVzOiBbLi4uYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkQ2FzZVR5cGVzXS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0gIT09IGNhc2VFbnVtVmFsdWVcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRWxzZTsgQWRkIENhc2VUeXBlIHRvIHRoZSBsaXN0LlxyXG4gICAgICAgIHNldEFkdmFuY2VkU2VhcmNoRmlsdGVycygocHJldmlvdXNTdGF0ZSkgPT4gKHtcclxuICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRDYXNlVHlwZXM6IFsuLi5hZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMsIGNhc2VFbnVtVmFsdWVdLFxyXG4gICAgICAgIH0pKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBxdWVyaWVkIERhdGVTaW5jZSB2YWx1ZSBpbiB0aGUgQWR2YW5jZWQgRmlsdGVyLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVTaW5jZSBUaGUgRGF0ZSBTaW5jZSBjcmVhdGlvbiBvZiB0aGUgSW5jaWRlbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHVwZGF0ZUNyZWF0ZWRPbkRhdGUgPSAoZGF0ZVNpbmNlOiBzdHJpbmcgfCBudWxsKSA9PiB7XHJcbiAgICAgICAgaWYgKCFkYXRlU2luY2UpIHtcclxuICAgICAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgICAgIGRhdGVSYW5nZTogeyB2YWx1ZTogbnVsbCwgZnJvbTogbnVsbCwgdG86IG51bGwgfSxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBmcm9tRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IHRvRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgdGltZSBvZiBmcm9tIGFuZCB0byB0byB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgZGF5IChyZXNwZWN0aXZlbHkpLlxyXG4gICAgICAgIGZyb21EYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgIHRvRGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xyXG5cclxuICAgICAgICAvLyBTZXRzIHRoZSBmcm9tRGF0ZSBhbmQgdG9EYXRlIGJhc2VkIG9uIHRoZSBlbnVtIFR5cGUuXHJcbiAgICAgICAgc3dpdGNoIChEYXRlU2luY2VbZGF0ZVNpbmNlIGFzIGtleW9mIHR5cGVvZiBEYXRlU2luY2VdKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0ZVNpbmNlLlRvZGF5OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIERhdGVTaW5jZS5ZZXN0ZXJkYXk6XHJcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXREYXRlKGZyb21EYXRlLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgdG9EYXRlLnNldERhdGUodG9EYXRlLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIERhdGVTaW5jZVtcIlRoaXMgV2Vla1wiXTpcclxuICAgICAgICAgICAgICAgIGZyb21EYXRlLnNldERhdGUoZnJvbURhdGUuZ2V0RGF0ZSgpIC0gZnJvbURhdGUuZ2V0RGF5KCkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIERhdGVTaW5jZVtcIlRoaXMgTW9udGhcIl06XHJcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlLmdldEZ1bGxZZWFyKCksIGZyb21EYXRlLmdldE1vbnRoKCksIDEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIERhdGVTaW5jZVtcIlRoaXMgWWVhclwiXTpcclxuICAgICAgICAgICAgICAgIGZyb21EYXRlID0gbmV3IERhdGUoZnJvbURhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2RhdGVTaW5jZX0nIGZpbHRlciB2YWx1ZSBmb3IgdGhlIENyZWF0ZWQgT24gZmlsdGVyIGlzIG5vdCBpbXBsZW1lbnRlZGApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkYXRlIHJhbmdlIG9iamVjdC5cclxuICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgIGRhdGVSYW5nZTogeyB2YWx1ZTogRGF0ZVNpbmNlW2RhdGVTaW5jZSBhcyBrZXlvZiB0eXBlb2YgRGF0ZVNpbmNlXSwgZnJvbTogZnJvbURhdGUsIHRvOiB0b0RhdGUgfSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHNvcnRlZEluY2lkZW50czogTG9hZGluZ0RhdGE8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlW10+ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgaWYgKGluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmRhdGFcclxuICAgICAgICAgICAgLnNsaWNlKClcclxuICAgICAgICAgICAgLnNvcnQoKGluY2lkZW50QTogSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlLCBpbmNpZGVudEI6IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSkgPT5cclxuICAgICAgICAgICAgICAgIChpbmNpZGVudEFbc29ydGVkQ29sdW1uXT8udG9TdHJpbmcoKSA/PyBcIlwiKS5sb2NhbGVDb21wYXJlKGluY2lkZW50Qltzb3J0ZWRDb2x1bW5dPy50b1N0cmluZygpID8/IFwiXCIpXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChpc1NvcnRlZEFzY2VuZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBzb3J0ZWREYXRhIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBzb3J0ZWREYXRhLnJldmVyc2UoKSB9O1xyXG4gICAgfSwgW2luY2lkZW50cywgc29ydGVkQ29sdW1uLCBpc1NvcnRlZEFzY2VuZGluZ10pO1xyXG5cclxuICAgIC8qKiBPYmplY3QgZGVmaW5pbmcgaW5jaWRlbnRzIGZpbHRlcmVkIGJ5IGRpZmZlcmVudCBwYXJhbWV0ZXJzICovXHJcbiAgICBjb25zdCBmaWx0ZXJlZEluY2lkZW50czogRmlsdGVyZWRJbmNpZGVudHMgPSB7XHJcbiAgICAgICAgYWN0aXZlQ2FzZXM6IHNvcnRlZEluY2lkZW50cyxcclxuICAgICAgICBjYXNlc1dpdGhCaXN0ZWNoOiB0b0xvYWRpbmdEYXRhKHNvcnRlZEluY2lkZW50cywgKGluY2lkZW50cykgPT5cclxuICAgICAgICAgICAgaW5jaWRlbnRzLmZpbHRlcigoaW5jaWRlbnQpID0+XHJcbiAgICAgICAgICAgICAgICBbXHJcbiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0dXNDb2RlW1wiSW4gUHJvZ3Jlc3NcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0dXNDb2RlW1wiQ2xvc3VyZSBSZXF1ZXN0ZWRcIl0sXHJcbiAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGluY2lkZW50LnN0YXR1c2NvZGUpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApLFxyXG4gICAgICAgIGNhc2VzV2l0aFlvdTogdG9Mb2FkaW5nRGF0YShzb3J0ZWRJbmNpZGVudHMsIChpbmNpZGVudHMpID0+XHJcbiAgICAgICAgICAgIGluY2lkZW50cy5maWx0ZXIoKGluY2lkZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgW0luY2lkZW50U3RhdHVzQ29kZVtcIlBlbmRpbmcgRmVlZGJhY2tcIl0sIEluY2lkZW50U3RhdHVzQ29kZS5SZXNvbHZlZF0uaW5jbHVkZXMoaW5jaWRlbnQuc3RhdHVzY29kZSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgY2FzZXNPbkhvbGQ6IHRvTG9hZGluZ0RhdGEoc29ydGVkSW5jaWRlbnRzLCAoaW5jaWRlbnRzKSA9PlxyXG4gICAgICAgICAgICBpbmNpZGVudHMuZmlsdGVyKChpbmNpZGVudCkgPT4gaW5jaWRlbnQuc3RhdHVzY29kZSA9PT0gSW5jaWRlbnRTdGF0dXNDb2RlW1wiT24gSG9sZFwiXSlcclxuICAgICAgICApLFxyXG4gICAgICAgIHN1cHBvcnRSZXF1ZXN0czogdG9Mb2FkaW5nRGF0YShzb3J0ZWRJbmNpZGVudHMsIChpbmNpZGVudHMpID0+XHJcbiAgICAgICAgICAgIGluY2lkZW50cy5maWx0ZXIoKGluY2lkZW50KSA9PiBpbmNpZGVudC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlW1wiU3VwcG9ydCBSZXF1ZXN0XCJdKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgaW5jaWRlbnRzOiB0b0xvYWRpbmdEYXRhKHNvcnRlZEluY2lkZW50cywgKGluY2lkZW50cykgPT5cclxuICAgICAgICAgICAgaW5jaWRlbnRzLmZpbHRlcigoaW5jaWRlbnQpID0+IGluY2lkZW50LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGUuSW5jaWRlbnQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBjaGFuZ2VzOiB0b0xvYWRpbmdEYXRhKHNvcnRlZEluY2lkZW50cywgKGluY2lkZW50cykgPT5cclxuICAgICAgICAgICAgaW5jaWRlbnRzLmZpbHRlcigoaW5jaWRlbnQpID0+IGluY2lkZW50LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGUuQ2hhbmdlKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgcHJvYmxlbXM6IHRvTG9hZGluZ0RhdGEoc29ydGVkSW5jaWRlbnRzLCAoaW5jaWRlbnRzKSA9PlxyXG4gICAgICAgICAgICBpbmNpZGVudHMuZmlsdGVyKChpbmNpZGVudCkgPT4gaW5jaWRlbnQuY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZS5Qcm9ibGVtKVxyXG4gICAgICAgICksXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIERlc2NyaXB0aW9uIG9mIHRoZSBncm91cHMgb2YgcHJvZHVjdCB0aWxlcyB0byBkaXNwbGF5IGluIHRoZSBOYXZpZ2F0aW9uIHBhbmVsLlxyXG4gICAgY29uc3QgY2FzZXNGaWx0ZXJHcm91cHM6IEZpbHRlckdyb3VwPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZT5bXSA9IGdldENhc2VzRmlsdGVyR3JvdXBzKFxyXG4gICAgICAgIGZpbHRlcmVkSW5jaWRlbnRzLFxyXG4gICAgICAgIHNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgc2VsZWN0ZWRUeXBlVGlsZUlkcyxcclxuICAgICAgICBzZXRTZWxlY3RlZFR5cGVUaWxlSWRzXHJcbiAgICApO1xyXG5cclxuICAgIC8vIERldGVybWluZSB0aGUgYXBwbGljYWJsZSBTdGF0dXMgZmlsdGVycy5cclxuICAgIGNvbnN0IGFwcGxpY2FibGVTdGF0dXNGaWx0ZXJzID0gY2FzZXNGaWx0ZXJHcm91cHMuZmxhdE1hcCgoZmlsdGVyR3JvdXApID0+XHJcbiAgICAgICAgZmlsdGVyR3JvdXAudGlsZXNcclxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIHRpbGVzIGluIHRoZSBncm91cCB0aGVuIG5vIGZpbHRlcnMgYXJlIGFwcGxpZWQuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHRpbGUpID0+IChzZWxlY3RlZFN0YXR1c1RpbGVJZHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3RhdHVzVGlsZUlkcy5pbmNsdWRlcyh0aWxlLmlkKSA6IHRydWUpKVxyXG4gICAgICAgICAgICAuZmxhdE1hcCgodGlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpbGUuZmlsdGVyO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcGxpY2FibGUgVHlwZSBmaWx0ZXJzLlxyXG4gICAgY29uc3QgYXBwbGljYWJsZVR5cGVGaWx0ZXJzID0gY2FzZXNGaWx0ZXJHcm91cHMuZmxhdE1hcCgoZmlsdGVyR3JvdXApID0+XHJcbiAgICAgICAgZmlsdGVyR3JvdXAudGlsZXNcclxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIHRpbGVzIGluIHRoZSBncm91cCB0aGVuIG5vIGZpbHRlcnMgYXJlIGFwcGxpZWQuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHRpbGUpID0+IChzZWxlY3RlZFR5cGVUaWxlSWRzLmxlbmd0aCA+IDAgPyBzZWxlY3RlZFR5cGVUaWxlSWRzLmluY2x1ZGVzKHRpbGUuaWQpIDogdHJ1ZSkpXHJcbiAgICAgICAgICAgIC5mbGF0TWFwKCh0aWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGlsZS5maWx0ZXI7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBzdW1tYXJ5IHNlY3Rpb25zIHRvIGRpc3BsYXkuXHJcbiAgICBjb25zdCBnZXRTdW1tYXJ5U2VjdGlvbnM6IChpc0FkdmFuY2VkRmlsdGVyc1Nob3duOiBib29sZWFuKSA9PiBTdW1tYXJ5U2VjdGlvbltdID0gKGlzQWR2YW5jZWRGaWx0ZXJzU2hvd24pID0+XHJcbiAgICAgICAgZ2V0Q2FzZXNTdW1tYXJ5U2VjdGlvbnMoXHJcbiAgICAgICAgICAgIGZpbHRlcmVkSW5jaWRlbnRzLmFjdGl2ZUNhc2VzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgICAgID8geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBmaWx0ZXJlZEluY2lkZW50cy5hY3RpdmVDYXNlcy5kYXRhLmxlbmd0aCB9XHJcbiAgICAgICAgICAgICAgICA6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSxcclxuICAgICAgICAgICAgaXNBZHZhbmNlZEZpbHRlcnNTaG93blxyXG4gICAgICAgICk7XHJcblxyXG4gICAgLy8gTWVzc2FnZSB0byBkaXNwbGF5IGNvbmNlcm5pbmcgYWN0aXZlIE1ham9yIEluY2lkZW50cy5cclxuICAgIGNvbnN0IGFjdGl2ZU1ham9ySW5jaWRlbnRUZXh0ID1cclxuICAgICAgICBcIldlIGFyZSBhd2FyZSBvZiBhbiBpc3N1ZSB3aGljaCBtYXkgYmUgYWZmZWN0aW5nIHNvbWUgY3VzdG9tZXJzLiBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgaXNzdWVzIHBsZWFzZSBjcmVhdGUgYSBjYXNlIGFuZCB3ZSBzaGFsbCBwcm92aWRlIGFwcHJvcHJpYXRlIHVwZGF0ZXMuXCI7XHJcblxyXG4gICAgLy8gTWVzc2FnZSB0byBkaXNwbGF5IGNvbmNlcm5pbmcgcmVjZW50bHkgcmVzb2x2ZWQgTWFqb3IgSW5jaWRlbnRzLlxyXG4gICAgY29uc3QgcmVzb2x2ZWRNYWpvckluY2lkZW50VGV4dCA9XHJcbiAgICAgICAgXCJBIHByZXZpb3VzIGlzc3VlIHdoaWNoIHdhcyBhZmZlY3Rpbmcgc29tZSBjdXN0b21lcnMgaGFzIHJlY2VudGx5IGJlZW4gcmVzb2x2ZWQuIElmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGFueSBmdXJ0aGVyIGlzc3VlcywgcGxlYXNlIHVwZGF0ZSB5b3VyIGNhc2UuXCI7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBnZXRDYXNlVGFibGVIZWFkZXJDZWxscygpO1xyXG5cclxuICAgIGNvbnN0IGdldENvbHVtbkhlYWRlciA9IChmaWVsZE5hbWU6IGtleW9mIEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSkgPT5cclxuICAgICAgICBoZWFkZXJDZWxscy5maW5kKChoZWFkZXJDZWxsKSA9PiBoZWFkZXJDZWxsLmZpZWxkTmFtZSA9PT0gZmllbGROYW1lKT8uY29sdW1uSGVhZGVyO1xyXG5cclxuICAgIC8vIEZpbmQgdGhlIHJlc3VsdHMgdG8gZGlzcGxheVxyXG4gICAgY29uc3QgbWF0Y2hpbmdJbmNpZGVudHMgPSB0b0xvYWRpbmdEYXRhKHNvcnRlZEluY2lkZW50cywgKGluY2lkZW50cykgPT5cclxuICAgICAgICBpbmNpZGVudHNcclxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIFNlYXJjaCBCYXIgZmlsdGVyLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChpbmNpZGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluY2lkZW50KS5zb21lKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsID0gdmFsdWU/LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjb250ZW50cyBpbiB0aGUgdGFibGUgaXMgZm9ybWF0dGVkIGZvciB0aGUgdXNlciB0aGVyZWZvcmUgdGhlIHNlYXJjaCB2YWx1ZXMgaGF2ZSB0byBhbHNvIGJlIGZvcm1hdHRlZC5cclxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0ICdDYXNlIFR5cGUnIHRvIGEgc3RyaW5nIGZvciBjb21wYXJpc29uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2FzZXR5cGVjb2RlXCI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRWYWx1ZSA9ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNpZGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5jaWRlbnQuY2FzZXR5cGVjb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENhc2VUeXBlW2luY2lkZW50LmNhc2V0eXBlY29kZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSAnQ3JlYXRlZCBPbicgZGF0ZSB0byBhIHN0cmluZyBmb3IgY29tcGFyaXNvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNyZWF0ZWRvblwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VmFsdWUgPSBEYXRlSGVscGVyLnRvRGF0ZVN0cmluZyhpbmNpZGVudC5jcmVhdGVkb24pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0ICdQcmlvcml0eSBDb2RlJyB0byBhIHN0cmluZyBmb3IgY29tcGFyaXNvbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInByaW9yaXR5Y29kZVwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VmFsdWUgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5jaWRlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluY2lkZW50LnByaW9yaXR5Y29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDYXNlUHJpb3JpdHlDb2RlW2luY2lkZW50LnByaW9yaXR5Y29kZV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0ICdTdGF0dXMgQ29kZScgdG8gYSBzdHJpbmcgZm9yIGNvbXBhcmlzb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdGF0dXNjb2RlXCI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRWYWx1ZSA9ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNpZGVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5jaWRlbnQuY2FzZXR5cGVjb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEluY2lkZW50U3RhdHVzQ29kZVtpbmNpZGVudC5zdGF0dXNjb2RlXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHJpZXZlIHRoZSBmdWxsICdQcmltYXJ5IENvbnRhY3QnIG5hbWUgdXNpbmcgdGhlIENvbnRhY3QgSWQgZm9yIGNvbXBhcmlzb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0VmFsdWUgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhY3QgPSBjb250YWN0cy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWN0KSA9PiBjb250YWN0LmNvbnRhY3RpZCA9PT0gaW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRhY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRWYWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaEJhckNvbnRlbnQudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBTdGF0dXMgVGlsZSBmaWx0ZXJzLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChpbmNpZGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwcGxpY2FibGVTdGF0dXNGaWx0ZXJzLnNvbWUoKGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXIoaW5jaWRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAvLyBBcHBseSB0aGUgVHlwZSBUaWxlIGZpbHRlcnMuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGluY2lkZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwbGljYWJsZVR5cGVGaWx0ZXJzLnNvbWUoKGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXIoaW5jaWRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IGFueSBhZHZhbmNlZCBmaWx0ZXJzLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChpbmNpZGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3JlYXRlZE9uRGF0ZSA9IG5ldyBEYXRlKGluY2lkZW50LmNyZWF0ZWRvbik7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhZHZhbmNlZCBzZWFyY2ggZmlsdGVycyBhcmUgbm90IHBvcHVsYXRlZCwgZG8gbm90IGZpbHRlciBieSB0aGlzIHZhbHVlLlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgaW5jaWRlbnQgc3RhdHVzIGxpc3QgY29udGFpbnMgdGhlIGluY2lkZW50IHN0YXR1cyBjb2RlLCBhZGQgdGhpcyBpbmNpZGVudC5cclxuICAgICAgICAgICAgICAgICAgICAoYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkSW5jaWRlbnRTdGF0dXNlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzPy5pbmNsdWRlcyhpbmNpZGVudC5zdGF0dXNjb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRydWUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhc2UgdHlwZSBjb2RlIGxpc3QgY29udGFpbnMgdGhlIGluY2lkZW50IGNhc2UgY29kZSwgYWRkIHRoaXMgaW5jaWRlbnQuXHJcbiAgICAgICAgICAgICAgICAgICAgKGluY2lkZW50LmNhc2V0eXBlY29kZSAmJiBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkQ2FzZVR5cGVzPy5pbmNsdWRlcyhpbmNpZGVudC5jYXNldHlwZWNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYWR2YW5jZWQgZmlsdGVycyBjb250YWN0IGlkIG1hdGNoZXMgdGhlIGluY2lkZW50IGNvbnRhY3QgaWQsIGFkZCB0aGlzIGluY2lkZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuY3JlYXRlZEJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmNyZWF0ZWRCeSA9PT0gaW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBpbmNpZGVudCBjcmVhdGVkIG9uIGRhdGUgaXMgd2l0aGluIGEgZ2l2ZW4gcmFuZ2UsIGFkZCB0aGlzIGluY2lkZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLmZyb20gJiYgYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmRhdGVSYW5nZS50b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZWRPbkRhdGUgPj0gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmRhdGVSYW5nZS5mcm9tICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZE9uRGF0ZSA8PSBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLnRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0ZWROb25SZXNvbHZlZEFjdGl2ZU1ham9ySW5jaWRlbnRzOiBudW1iZXIgPVxyXG4gICAgICAgIGluY2lkZW50cy5hY3RpdmVNYWpvckluY2lkZW50cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgID8gaW5jaWRlbnRzLmFjdGl2ZU1ham9ySW5jaWRlbnRzLmRhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAobWFqb3JJbmNpZGVudDogSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlKSA9PiBtYWpvckluY2lkZW50LnN0YXR1c2NvZGUgIT09IEluY2lkZW50U3RhdHVzQ29kZS5SZXNvbHZlZFxyXG4gICAgICAgICAgICAgICkubGVuZ3RoXHJcbiAgICAgICAgICAgIDogMDtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIkNhc2VzXCI+XHJcbiAgICAgICAgICAgIHtpbmNpZGVudHMuYWN0aXZlTWFqb3JJbmNpZGVudHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiAmJlxyXG4gICAgICAgICAgICAgICAgcmVsYXRlZE5vblJlc29sdmVkQWN0aXZlTWFqb3JJbmNpZGVudHMgPiAwICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8TWFqb3JJbmNpZGVudEJhbm5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dD17YWN0aXZlTWFqb3JJbmNpZGVudFRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJpbmNpZGVudC13YXJuaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9NYWpvckluY2lkZW50QmFubmVyPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAge2luY2lkZW50cy5yZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiAmJlxyXG4gICAgICAgICAgICAgICAgaW5jaWRlbnRzLmFjdGl2ZU1ham9ySW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgJiZcclxuICAgICAgICAgICAgICAgIHJlbGF0ZWROb25SZXNvbHZlZEFjdGl2ZU1ham9ySW5jaWRlbnRzID09PSAwICYmXHJcbiAgICAgICAgICAgICAgICBpbmNpZGVudHMucmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzLmRhdGEubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPE1ham9ySW5jaWRlbnRCYW5uZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVRleHQ9e3Jlc29sdmVkTWFqb3JJbmNpZGVudFRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJyZXNvbHZlZC1pbmNpZGVudC13YXJuaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9NYWpvckluY2lkZW50QmFubmVyPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPE1hbmFnZW1lbnRQYW5lbFxyXG4gICAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQ29udGVudD17c2V0U2VhcmNoQmFyQ29udGVudH1cclxuICAgICAgICAgICAgICAgIGZpbHRlckdyb3Vwcz17Y2FzZXNGaWx0ZXJHcm91cHN9XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlclRleHQ9XCJTZWFyY2ggYnkgQ2FzZSBUaXRsZSBvciBSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgZ2V0U3VtbWFyeVNlY3Rpb25zPXtnZXRTdW1tYXJ5U2VjdGlvbnN9XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzVG9EaXNwbGF5PXtbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvblNldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiT3BlblwiLCB2YWx1ZTogSW5jaWRlbnRTdGF0dXNDb2RlW1wiT3BlblwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIkluIFByb2dyZXNzXCIsIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIk9uIEhvbGRcIiwgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZVtcIk9uIEhvbGRcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJQZW5kaW5nIEZlZWRiYWNrXCIsIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiUmVzb2x2ZWRcIiwgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZVtcIlJlc29sdmVkXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiQ2xvc3VyZSBSZXF1ZXN0ZWRcIiwgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiB1cGRhdGVTZWxlY3RlZEluY2lkZW50VHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWRMaXN0OiBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImluY2lkZW50LXR5cGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZTogXCJjaGVja2JveFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZTogXCJjaGVja2JveC1zZWN0aW9uIGluY2lkZW50XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlN0YXR1c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvblNldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiSW5jaWRlbnRcIiwgdmFsdWU6IENhc2VUeXBlW1wiSW5jaWRlbnRcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJTdXBwb3J0IFJlcXVlc3RcIiwgdmFsdWU6IENhc2VUeXBlW1wiU3VwcG9ydCBSZXF1ZXN0XCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiUHJvYmxlbVwiLCB2YWx1ZTogQ2FzZVR5cGVbXCJQcm9ibGVtXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiQ2hhbmdlXCIsIHZhbHVlOiBDYXNlVHlwZVtcIkNoYW5nZVwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlU2VsZWN0ZWRDYXNlVHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWRMaXN0OiBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiY2FzZS10eXBlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGU6IFwiY2hlY2tib3hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzc05hbWU6IFwiY2hlY2tib3gtc2VjdGlvbiBjYXNlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkNhc2UgVHlwZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvblNldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiVG9kYXlcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRvZGF5XCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiWWVzdGVyZGF5XCIsIHZhbHVlOiBEYXRlU2luY2VbXCJZZXN0ZXJkYXlcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJUaGlzIFdlZWtcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgV2Vla1wiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIlRoaXMgTW9udGhcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgTW9udGhcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJUaGlzIFllYXJcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgWWVhclwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlQ3JlYXRlZE9uRGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZExpc3Q6IFthZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLnZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJkYXRlLXNpbmNlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZTogXCJyYWRpb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZTogXCJjaGVja2JveC1zZWN0aW9uIGNhc2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiQ3JlYXRlZCBPblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImxvb2t1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dDogXCJGaWx0ZXIgYnkgY29udGFjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWxPcHRpb25zTmFtZTogXCJDb250YWN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJDcmVhdGVkIEJ5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb250YWN0cy5kYXRhLm1hcCgoY29udGFjdCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRhY3QuY29udGFjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5VGV4dDogW2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBDb250YWN0U3RhdGVDb2RlW2NvbnRhY3Quc3RhdGVjb2RlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaWNrYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlQ3JlYXRlZEJ5Q29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgIHttYXRjaGluZ0luY2lkZW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgICkgOiBtYXRjaGluZ0luY2lkZW50cy5kYXRhLmxlbmd0aCA9PT0gMCA/IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm8tcmVzdWx0cy1tZXNzYWdlXCI+VGhlcmUgYXJlIG5vIHJlY29yZHMgdG8gZGlzcGxheS48L2Rpdj5cclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzc05hbWU9XCJlbnRpdHlsaXN0IGNhc2VzLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGVhZGVyQ2VsbHMubWFwKChjZWxsKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhYmxlSGVhZGVyQ2VsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NlbGwuaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkhlYWRlcj17Y2VsbC5jb2x1bW5IZWFkZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZT17Y2VsbC5maWVsZE5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmdQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGluZ0VuYWJsZWQ6IGNlbGwuaXNTb3J0YWJsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZENvbHVtbjogc29ydGVkQ29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U29ydGVkQ29sdW1uOiAoKSA9PiBzZXRTb3J0ZWRDb2x1bW4oY2VsbC5maWVsZE5hbWUpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTb3J0ZWRBc2NlbmRpbmc6IGlzU29ydGVkQXNjZW5kaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNTb3J0ZWRBc2NlbmRpbmc6IHNldElzU29ydGVkQXNjZW5kaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAge21hdGNoaW5nSW5jaWRlbnRzLmRhdGEubWFwKChpbmNpZGVudCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmNpZGVudC5pbmNpZGVudGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaWQ9e2luY2lkZW50LmluY2lkZW50aWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1lbnRpdHk9XCJpbmNpZGVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1uYW1lPXtpbmNpZGVudC50aXRsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2luY2lkZW50LnRpY2tldG51bWJlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJ0aWNrZXRudW1iZXJcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmNpZGVudC5pbmNpZGVudGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89e2BlZGl0P2Nhc2VJZD0ke2luY2lkZW50LmluY2lkZW50aWR9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPntgJHtpbmNpZGVudC50aWNrZXRudW1iZXJ9YH08L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17aW5jaWRlbnQudGl0bGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwidGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmNpZGVudC5pbmNpZGVudGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89e2BlZGl0P2Nhc2VJZD0ke2luY2lkZW50LmluY2lkZW50aWR9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPntgJHtpbmNpZGVudC50aXRsZX1gfTwvTGluaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJ0eXBlXCIgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJjYXNldHlwZWNvZGVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5jaWRlbnQuY2FzZXR5cGVjb2RlICYmIENhc2VUeXBlW2luY2lkZW50LmNhc2V0eXBlY29kZV19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwiY3JlYXRlZC1vblwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiY3JlYXRlZG9uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0RhdGVIZWxwZXIudG9EYXRlU3RyaW5nKGluY2lkZW50LmNyZWF0ZWRvbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwiY29udGFjdFwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiX3ByaW1hcnljb250YWN0aWRfdmFsdWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFjdCA9IGNvbnRhY3RzLmRhdGEuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhY3QpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0LmNvbnRhY3RpZCA9PT0gaW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRhY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJwcmlvcml0eVwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwicHJpb3JpdHljb2RlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luY2lkZW50LnByaW9yaXR5Y29kZSAmJiBDYXNlUHJpb3JpdHlDb2RlW2luY2lkZW50LnByaW9yaXR5Y29kZV19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwic3RhdHVzXCIgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJzdGF0dXNjb2RlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0luY2lkZW50U3RhdHVzQ29kZVtpbmNpZGVudC5zdGF0dXNjb2RlXX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IENhc2VPcmlnaW5Db2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VPcmlnaW5Db2RlXCI7XHJcbmltcG9ydCB7IENhc2VQcmlvcml0eUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVByaW9yaXR5Q29kZVwiO1xyXG5pbXBvcnQgeyBDYXNlU2V2ZXJpdHlDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VTZXZlcml0eUNvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVR5cGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVR5cGVcIjtcclxuaW1wb3J0IHsgQ2FzZVVyZ2VuY3kgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVVyZ2VuY3lcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0luY2lkZW50U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhbiBJbmNpZGVudCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBpbmNpZGVudGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgdGl0bGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfY3VzdG9tZXJpZF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHRpY2tldG51bWJlcj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgY2FzZXR5cGVjb2RlPzogQ2FzZVR5cGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgY2FzZW9yaWdpbmNvZGU/OiBDYXNlT3JpZ2luQ29kZSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBzZXZlcml0eWNvZGU/OiBDYXNlU2V2ZXJpdHlDb2RlIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfdXJnZW5jeT86IENhc2VVcmdlbmN5IHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIHByaW9yaXR5Y29kZT86IENhc2VQcmlvcml0eUNvZGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IEluY2lkZW50U3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIGNyZWF0ZWRvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZT86IERhdGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcInRpdGxlXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9jdXN0b21lcmlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiY3VzdG9tZXJpZF9hY2NvdW50XCIsXHJcbiAgICAgICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IFwiYWNjb3VudHNcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcInByaW1hcnljb250YWN0aWRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsIi8qKlxyXG4gKiBHZW5lcmF0ZXMgYSBuZXcgR1VJRC5cclxuICogQHJldHVybnMgTmV3IHJhbmRvbSBHVUlELlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG5ld0d1aWQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVtcHR5ID0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIjtcclxuXHJcbiAgICByZXR1cm4gZW1wdHkucmVwbGFjZSgvWzBdL2csIChsZXR0ZXIpID0+IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDE2KS50b1N0cmluZygxNikpO1xyXG59XHJcbiIsImltcG9ydCB7IG5ld0d1aWQgfSBmcm9tIFwiLi4vSGVscGVycy9uZXdHdWlkXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUsXHJcbiAgICBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSxcclxufSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBDb25kaXRpb25FeHByZXNzaW9uIH0gZnJvbSBcIi4uL1R5cGVzL0NvbmRpdGlvbkV4cHJlc3Npb25cIjtcclxuaW1wb3J0IHsgRmVlZGJhY2tDYXRlZ29yeSB9IGZyb20gXCIuLi9UeXBlcy9GZWVkYmFja0NhdGVnb3J5XCI7XHJcbmltcG9ydCB7IFN1Ym1pc3Npb25EYXRhIH0gZnJvbSBcIi4uL1R5cGVzL1N1Ym1pc3Npb25EYXRhXCI7XHJcblxyXG4vKipcclxuICogRXh0ZW5kZWQgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmb3IgdGhlIGdsb2JhbCBgd2luZG93YCBvYmplY3QuXHJcbiAqIFRoaXMgZXh0ZW5zaW9uIGluY2x1ZGVzIGFkZGl0aW9uYWwgcHJvcGVydGllcyB1c2VmdWwgZm9yIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcy5cclxuICpcclxuICogLSBgdG9wYDogUmVwcmVzZW50cyB0aGUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHQncyB3aW5kb3csIGV4dGVuZGVkIHdpdGggYSBwb3RlbnRpYWwgYF9fcHJlbG9hZGAgb2JqZWN0LlxyXG4gKiAgIC0gYF9fcHJlbG9hZGA6IEFuIG9wdGlvbmFsIG9iamVjdCBjb250YWluaW5nIHByZWxvYWRlZCBkYXRhLCBzdWNoIGFzIGB1c2VySWRgLlxyXG4gKlxyXG4gKiAtIGBzaGVsbGA6IEFuIG9wdGlvbmFsIG9iamVjdCByZXByZXNlbnRpbmcgYSBzaGVsbCwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0aWVzLlxyXG4gKiAgIC0gYGdldFRva2VuRGVmZXJyZWRgOiBBIGZ1bmN0aW9uIHJldHVybmluZyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIHN0cmluZyB0b2tlbi5cclxuICpcclxuICogQHJlbWFya3NcclxuICogVGhpcyBkZWNsYXJhdGlvbiBpcyB1c2VmdWwgaW4gc2NlbmFyaW9zIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiByZWxpZXMgb24gc3BlY2lmaWMgcHJvcGVydGllc1xyXG4gKiBhdHRhY2hlZCB0byB0aGUgZ2xvYmFsIGB3aW5kb3dgIG9iamVjdC4gVGhlIGFkZGl0aW9uYWwgcHJvcGVydGllcyBsaWtlIGBfX3ByZWxvYWRgIGFuZCBgc2hlbGxgXHJcbiAqIG1heSBiZSBwYXJ0IG9mIGEgbGFyZ2VyIHN5c3RlbSBvciBmcmFtZXdvcmssIGFuZCB0aGlzIGRlY2xhcmF0aW9uIGVuc3VyZXMgVHlwZVNjcmlwdCByZWNvZ25pemVzXHJcbiAqIHRoZXNlIHByb3BlcnRpZXMgYW5kIHRoZWlyIHR5cGVzIGR1cmluZyBkZXZlbG9wbWVudC5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiAvLyBBY2Nlc3NpbmcgdGhlIHByZWxvYWRlZCB1c2VySWQsIGlmIGF2YWlsYWJsZVxyXG4gKiBjb25zdCB1c2VySWQgPSB3aW5kb3cudG9wPy5fX3ByZWxvYWQ/LnVzZXJJZDtcclxuICpcclxuICogLy8gT2J0YWluaW5nIGEgdG9rZW4gZnJvbSB0aGUgc2hlbGxcclxuICogaWYgKHdpbmRvdy5zaGVsbD8uZ2V0VG9rZW5EZWZlcnJlZCkge1xyXG4gKiAgIHdpbmRvdy5zaGVsbC5nZXRUb2tlbkRlZmVycmVkKCkudGhlbigodG9rZW4pID0+IHtcclxuICogICAgIGNvbnNvbGUubG9nKCdSZWNlaXZlZCB0b2tlbjonLCB0b2tlbik7XHJcbiAqICAgfSk7XHJcbiAqIH1cclxuICogYGBgXHJcbiAqL1xyXG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogV2luZG93ICYge1xyXG4gICAgdG9wPzogV2luZG93ICYge1xyXG4gICAgICAgIF9fcHJlbG9hZD86IHtcclxuICAgICAgICAgICAgdXNlcklkPzogc3RyaW5nO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgc2hlbGw/OiB7XHJcbiAgICAgICAgZ2V0VG9rZW5EZWZlcnJlZD86ICgpID0+IFByb21pc2U8c3RyaW5nPjtcclxuICAgIH07XHJcbn07XHJcblxyXG4vKiogTWV0YWRhdGEgZm9yIGFuIGVudGl0eS4gKi9cclxuZXhwb3J0IHR5cGUgRW50aXR5TWV0YWRhdGE8VD4gPSB7XHJcbiAgICAvKiogbmFtZSBvZiB0aGUgUHJpbWFyeSBOYW1lL1RpdGxlIGNvbHVtbiwgb3IgbnVsbCBpZiBub3QgYXBwbGljYWJsZS4gKi9cclxuICAgIHRpdGxlQ29sdW1uTmFtZToga2V5b2YgVCB8IG51bGw7XHJcblxyXG4gICAgLyoqIE5hbWVzIG9mIGFsbCB0aGUgY29sdW1ucyAqL1xyXG4gICAgY29sdW1uTmFtZXM6IChrZXlvZiBUKVtdO1xyXG5cclxuICAgIC8qKiBNYXBwaW5ncyBvZiBhbGwgRW50aXR5IFJlZmVyZW5jZSBjb2x1bW5zLCB0byB0aGUgcGx1cmFsIG5hbWUgb2YgdGhlIGVudGl0eSBzZXQuICovXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczoge1xyXG4gICAgICAgIGNvbHVtbk5hbWU6IGtleW9mIFQ7XHJcbiAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogc3RyaW5nO1xyXG4gICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IHN0cmluZztcclxuICAgIH1bXTtcclxuXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgY29sdW1uTmFtZToga2V5b2YgVDtcclxuICAgICAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8YW55PjtcclxuICAgIH1bXTtcclxufTtcclxuXHJcbi8qKiBBIHJldHVybiB0eXBlIGZvciB0aGUgTGl2ZSBDUlVEIFNlcnZpY2UuICovXHJcbmV4cG9ydCB0eXBlIENydWRTZXJ2aWNlID0ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBBUEkgQ3JlYXRlIHJlcXVlc3QuXHJcbiAgICAgKiBAcGFyYW0gcGx1cmFsTG9naWNhbE5hbWUgUGx1cmFsIGxvZ2ljYWwgbmFtZSBvZiB0aGUgRHluYW1pY3MgQVBJIGVuZHBvaW50LlxyXG4gICAgICogQHBhcmFtIGJvZHkgQW4gb2JqZWN0IGNvbnRhaW5pbmcgZGF0YSB0byBiZSBjcmVhdGVkLlxyXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBlbnRpdHkgYmVpbmcgY3JlYXRlZC5cclxuICAgICAqIEByZXR1cm5zIENyZWF0ZWQgcmVjb3JkIElELlxyXG4gICAgICovXHJcbiAgICBjcmVhdGU6IDxURm9yQ3JlYXRlIGV4dGVuZHMgb2JqZWN0PihcclxuICAgICAgICBwbHVyYWxMb2dpY2FsTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGJvZHk6IFRGb3JDcmVhdGUsXHJcbiAgICAgICAgbWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFRGb3JDcmVhdGU+XHJcbiAgICApID0+IFByb21pc2U8eyBpZDogc3RyaW5nIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW4gQVBJIFJldHJpZXZlIHJlcXVlc3QuXHJcbiAgICAgKiBAcGFyYW0gcGx1cmFsTG9naWNhbE5hbWUgUGx1cmFsIGxvZ2ljYWwgbmFtZSBvZiB0aGUgRHluYW1pY3MgQVBJIGVuZHBvaW50LlxyXG4gICAgICogQHBhcmFtIHJlY29yZElkIFRoZSBJZCBvZiB0aGUgcmVjb3JkIHRvIHF1ZXJ5IGluIER5bmFtaWNzLlxyXG4gICAgICogQHBhcmFtIG1ldGFkYXRhIE1ldGFkYXRhIG9mIHRoZSBlbnRpdHkgYmVpbmcgcmV0cmlldmVkLlxyXG4gICAgICogQHJldHVybnMgUmV0cmlldmVkIHJlY29yZC5cclxuICAgICAqL1xyXG4gICAgcmV0cmlldmU6IDxURm9yUmV0cmlldmFsIGV4dGVuZHMgb2JqZWN0PihcclxuICAgICAgICBwbHVyYWxMb2dpY2FsTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHJlY29yZElkOiBzdHJpbmcsXHJcbiAgICAgICAgbWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFRGb3JSZXRyaWV2YWw+XHJcbiAgICApID0+IFByb21pc2U8VEZvclJldHJpZXZhbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBBUEkgUmV0cmlldmUgbXVsdGlwbGUgcmVxdWVzdC5cclxuICAgICAqIEBwYXJhbSBwbHVyYWxMb2dpY2FsTmFtZSBQbHVyYWwgbG9naWNhbCBuYW1lIG9mIHRoZSBEeW5hbWljcyBBUEkgZW5kcG9pbnQuXHJcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGVudGl0eSBiZWluZyByZXRyaWV2ZWQuXHJcbiAgICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBhcHBseSB0byB0aGUgQVBJIHJldHJpZXZhbC5cclxuICAgICAqIEByZXR1cm5zIFJldHJpZXZlZCByZWNvcmRzLlxyXG4gICAgICovXHJcbiAgICByZXRyaWV2ZU11bHRpcGxlOiA8VEZvclJldHJpZXZhbCBleHRlbmRzIG9iamVjdD4oXHJcbiAgICAgICAgcGx1cmFsTG9naWNhbE5hbWU6IHN0cmluZyxcclxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VEZvclJldHJpZXZhbD4sXHJcbiAgICAgICAgZmlsdGVycz86IENvbmRpdGlvbkV4cHJlc3Npb248VEZvclJldHJpZXZhbD5bXVxyXG4gICAgKSA9PiBQcm9taXNlPFRGb3JSZXRyaWV2YWxbXT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBBUEkgVXBkYXRlIHJlcXVlc3QuXHJcbiAgICAgKiBAcGFyYW0gcGx1cmFsTG9naWNhbE5hbWUgUGx1cmFsIGxvZ2ljYWwgbmFtZSBvZiB0aGUgRHluYW1pY3MgQVBJIGVuZHBvaW50LlxyXG4gICAgICogQHBhcmFtIHJlY29yZElkIFRoZSBJZCBvZiB0aGUgcmVjb3JkIHRvIHVwZGF0ZSBpbiBEeW5hbWljcy5cclxuICAgICAqIEBwYXJhbSBib2R5IEFuIG9iamVjdCBjb250YWluaW5nIGRhdGEgdG8gYmUgdXBkYXRlZC5cclxuICAgICAqIEBwYXJhbSBtZXRhZGF0YSBNZXRhZGF0YSBvZiB0aGUgZW50aXR5IGJlaW5nIHVwZGF0ZWQuXHJcbiAgICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgdXBkYXRlOiA8VEZvclVwZGF0ZSBleHRlbmRzIG9iamVjdD4oXHJcbiAgICAgICAgcGx1cmFsTG9naWNhbE5hbWU6IHN0cmluZyxcclxuICAgICAgICByZWNvcmRJZDogc3RyaW5nLFxyXG4gICAgICAgIGJvZHk6IFBhcnRpYWw8VEZvclVwZGF0ZT4sXHJcbiAgICAgICAgbWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFRGb3JVcGRhdGU+XHJcbiAgICApID0+IFByb21pc2U8dm9pZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXF1ZXN0cyBjbG9zdXJlIGZvciB0aGUgc3BlY2lmaWVkIENhc2UuXHJcbiAgICAgKiBAcGFyYW0gaW5jaWRlbnRJZCBJRCBvZiB0aGUgQ2FzZSBmb3Igd2hpY2ggdG8gcmVxdWVzdCBjbG9zdXJlLlxyXG4gICAgICogQHJldHVybnMgVXBkYXRlZCBDYXNlLlxyXG4gICAgICovXHJcbiAgICBleGVjdXRlUmVxdWVzdENsb3N1cmVQb3J0YWxBY3Rpb246IChpbmNpZGVudElkOiBzdHJpbmcpID0+IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcXVlc3RzIHJlLW9wZW4gZm9yIHRoZSBzcGVjaWZpZWQgQ2FzZS5cclxuICAgICAqIEBwYXJhbSBpbmNpZGVudElkIElEIG9mIHRoZSBDYXNlIGZvciB3aGljaCB0byByZXF1ZXN0IHJlLW9wZW5pbmcuXHJcbiAgICAgKiBAcmV0dXJucyBVcGRhdGVkIENhc2UuXHJcbiAgICAgKi9cclxuICAgIGV4ZWN1dGVSZXF1ZXN0UmVvcGVuUG9ydGFsQWN0aW9uOiAoaW5jaWRlbnRJZDogc3RyaW5nKSA9PiBQcm9taXNlPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdWJtaXRzIGZlZWRiYWNrIHRvIEJpc3RlY2guXHJcbiAgICAgKiBAcGFyYW0gZmVlZGJhY2tEZXNjcmlwdGlvbiBDb250ZW50IG9mIHRoZSBmZWVkYmFjay5cclxuICAgICAqIEBwYXJhbSBmZWVkYmFja0NhdGVnb3J5IFR5cGUgb2YgZmVlZGJhY2suXHJcbiAgICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZUZlZWRiYWNrUG9ydGFsQWN0aW9uOiAoZmVlZGJhY2tEZXNjcmlwdGlvbjogc3RyaW5nLCBmZWVkYmFja0NhdGVnb3J5OiBGZWVkYmFja0NhdGVnb3J5KSA9PiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZHMgYSBQb3J0YWwgSW52aXRhdGlvbiB0byB0aGUgQ29udGFjdC5cclxuICAgICAqIEBwYXJhbSBjb250YWN0SWQgQ29udGFjdCB0byBpbnZpdGUuXHJcbiAgICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZVNlbmRJbnZpdGF0aW9uUG9ydGFsQWN0aW9uOiAoY29udGFjdElkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XHJcbn07XHJcblxyXG50eXBlIE9EYXRhUmV0cmlldmVSZXNwb25zZTxUPiA9IFQgJiB7XHJcbiAgICBcIkBvZGF0YS5jb250ZXh0XCI6IHN0cmluZztcclxuICAgIFwiQG9kYXRhLmV0YWdcIjogc3RyaW5nO1xyXG59O1xyXG5cclxudHlwZSBPRGF0YVJldHJpZXZlTXVsdGlwbGVSZXNwb25zZTxUPiA9IHtcclxuICAgIFwiQG9kYXRhLmNvbnRleHRcIjogc3RyaW5nO1xyXG4gICAgXCJATWljcm9zb2Z0LkR5bmFtaWNzLkNSTS50b3RhbHJlY29yZGNvdW50XCI6IG51bWJlcjtcclxuICAgIFwiQE1pY3Jvc29mdC5EeW5hbWljcy5DUk0udG90YWxyZWNvcmRjb3VudGxpbWl0ZXhjZWVkZWRcIjogYm9vbGVhbjtcclxuICAgIFwiQE1pY3Jvc29mdC5EeW5hbWljcy5DUk0uZ2xvYmFsbWV0YWRhdGF2ZXJzaW9uXCI6IG51bWJlcjtcclxuICAgIHZhbHVlOiBUW107XHJcbn07XHJcblxyXG50eXBlIE9EYXRhRXJyb3JSZXNwb25zZSA9IHtcclxuICAgIGVycm9yOiB7XHJcbiAgICAgICAgY29kZTogc3RyaW5nO1xyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgICAgICBpbm5lcmVycm9yPzoge1xyXG4gICAgICAgICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgICAgICAgICAgdHlwZTogc3RyaW5nO1xyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFBlcmZvcm0gQVBJIENSVUQgcmVxdWVzdHMgYWdhaW5zdCB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiBEeW5hbWljcy5cclxuICogVXNlZCB3aGVuIGRlcGxveWVkIHRvIHRoZSBwb3J0YWwsIGFzIG9wcG9zZWQgdG8gbG9jYWwgZGV2ZWxvcG1lbnRcclxuICogQHJldHVybnMgVGhlIENSVUQgb3BlcmF0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjb25zdCB1c2VMaXZlQ3J1ZFNlcnZpY2U6ICgpID0+IENydWRTZXJ2aWNlID0gKCkgPT4ge1xyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBjcmVhdGU8VEZvckNyZWF0ZSBleHRlbmRzIG9iamVjdCwgVFJldHVybiBleHRlbmRzIG9iamVjdD4oXHJcbiAgICAgICAgcGx1cmFsTG9naWNhbE5hbWU6IHN0cmluZyxcclxuICAgICAgICBib2R5OiBURm9yQ3JlYXRlLFxyXG4gICAgICAgIG1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YTxURm9yQ3JlYXRlPlxyXG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmcgfT4ge1xyXG4gICAgICAgIGlmICghd2luZG93LnNoZWxsPy5nZXRUb2tlbkRlZmVycmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImB3aW5kb3cuc2hlbGwuZ2V0VG9rZW5EZWZlcnJlZGAgaXMgbm90IGRlZmluZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHdpbmRvdy5zaGVsbC5nZXRUb2tlbkRlZmVycmVkKCk7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlOiBSZXNwb25zZTtcclxuICAgICAgICBsZXQgcmVjb3JkSWQ6IHN0cmluZztcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgL19hcGkvJHtwbHVyYWxMb2dpY2FsTmFtZX1gLCB7XHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiB0b2tlbixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShidWlsZFVwc2VydEJvZHkoYm9keSwgbWV0YWRhdGEpKSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBBc3NlcnQgdGhlIHN0YXR1cyBpcyBub3QgJ05vIENvbnRlbnQnXHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwNCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhyb3dFcnJvckZyb21SZXNwb25zZShyZXNwb25zZSwgeyBzdGF0dXNDb2RlOiAyMDQsIHN0YXR1c1RleHQ6IFwiTm8gQ29udGVudFwiIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBleHRyYWN0ZWRSZWNvcmRJZCA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiZW50aXR5aWRcIik7XHJcblxyXG4gICAgICAgICAgICBpZiAoIWV4dHJhY3RlZFJlY29yZElkKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHJlc3BvbnNlIGZyb20gUE9TVCByZXF1ZXN0IHRvIGNvbnRhaW4gdGhlICdlbnRpdHlpZCdgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVjb3JkSWQgPSBleHRyYWN0ZWRSZWNvcmRJZDtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgYSAnJHtwbHVyYWxMb2dpY2FsTmFtZX0nIHJlY29yZDpcXHJcXG4ke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgaWQ6IHJlY29yZElkIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZU11bHRpcGxlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgICAgIHBsdXJhbExvZ2ljYWxOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgbWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFQ+LFxyXG4gICAgICAgIGZpbHRlcnM/OiBDb25kaXRpb25FeHByZXNzaW9uPFQ+W11cclxuICAgICk6IFByb21pc2U8VFtdPiB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuc2hlbGw/LmdldFRva2VuRGVmZXJyZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYHdpbmRvdy5zaGVsbC5nZXRUb2tlbkRlZmVycmVkYCBpcyBub3QgZGVmaW5lZFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgaW50aWFsIHNlbGVjdCBxdWVyeSB1c2luZyB0aGUgY29sdW1uIG5hbWVzIGluIHRoZSBtZXRhZGF0YS5cclxuICAgICAgICBjb25zdCBzZWxlY3RRdWVyeSA9IGZvcm1hdFNlbGVjdFF1ZXJ5KG1ldGFkYXRhLmNvbHVtbk5hbWVzIGFzIHN0cmluZ1tdKTtcclxuXHJcbiAgICAgICAgLy8gSWYgZmlsdGVycyBoYXZlIGJlZW4gcHJvdmlkZWQgdGhlbiBmb3JtYXQgdGhlbSBpbnRvIGEgcXVlcnkgc3RyaW5nIHRvIHByb3ZpZGUgaW4gdGhlIFVSTC5cclxuICAgICAgICBjb25zdCBmaWx0ZXJRdWVyeSA9IGZpbHRlcnMgPyBmb3JtYXRGaWx0ZXJRdWVyeShmaWx0ZXJzKSA6IFwiXCI7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBwcm9wZXJ0aWVzIHRvIGV4cGFuZCBoYXZlIGJlZW4gcHJvdmlkZWQgdGhlbiBmb3JtYXQgdGhlbSBpbnRvIGEgcXVlcnkgc3RyaW5nIHRvIHByb3ZpZGUgaW4gdGhlIFVSTC5cclxuICAgICAgICBjb25zdCBleHBhbmRlZFByb3BlcnRpZXNRdWVyeSA9XHJcbiAgICAgICAgICAgIG1ldGFkYXRhLmV4cGFuZFByb3BlcnRpZXMubGVuZ3RoID4gMCA/IGZvcm1hdEV4cGFuZGVkUHJvcGVydGllc1F1ZXJ5KG1ldGFkYXRhKSA6IFwiXCI7XHJcblxyXG4gICAgICAgIC8vIENvbmNhdGVuYXRlIHRoZSBwYXJhbWV0ZXJzIHRvIGFkZCB0byB0aGUgVVJMLlxyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RVcmwgPSBgJHtzZWxlY3RRdWVyeX0ke2ZpbHRlclF1ZXJ5fSR7ZXhwYW5kZWRQcm9wZXJ0aWVzUXVlcnl9YDtcclxuXHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB3aW5kb3cuc2hlbGwuZ2V0VG9rZW5EZWZlcnJlZCgpO1xyXG4gICAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9fYXBpLyR7cGx1cmFsTG9naWNhbE5hbWV9PyR7cmVxdWVzdFVybH1gLCB7XHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgX19SZXF1ZXN0VmVyaWZpY2F0aW9uVG9rZW46IHRva2VuLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBBc3NlcnQgdGhlIHN0YXR1cyBpcyBPS1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRocm93RXJyb3JGcm9tUmVzcG9uc2UocmVzcG9uc2UsIHsgc3RhdHVzQ29kZTogMjAwLCBzdGF0dXNUZXh0OiBcIk9LXCIgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogT0RhdGFSZXRyaWV2ZU11bHRpcGxlUmVzcG9uc2U8VD4gPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIG11bHRpcGxlICcke3BsdXJhbExvZ2ljYWxOYW1lfScgcmVjb3JkczpcXHJcXG4ke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgICAgIHBsdXJhbExvZ2ljYWxOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgcmVjb3JkSWQ6IHN0cmluZyxcclxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD5cclxuICAgICk6IFByb21pc2U8VD4ge1xyXG4gICAgICAgIGlmICghd2luZG93LnNoZWxsPy5nZXRUb2tlbkRlZmVycmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImB3aW5kb3cuc2hlbGwuZ2V0VG9rZW5EZWZlcnJlZGAgaXMgbm90IGRlZmluZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGludGlhbCBzZWxlY3QgcXVlcnkgdXNpbmcgdGhlIGNvbHVtbiBuYW1lcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0UXVlcnkgPSBmb3JtYXRTZWxlY3RRdWVyeShtZXRhZGF0YS5jb2x1bW5OYW1lcyBhcyBzdHJpbmdbXSk7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSBlbnRpdHkgaGFzIGFuIGFwcHJvcHJpYXRlIHN0cmluZyBmaWVsZCwgYWRkIGEgY2FjaGUtYnVzdGluZyB1bmlxdWUgZmlsdGVyIHRvIGVuc3VyZSBmcmVzaCBkYXRhIGlzIHJldHVybmVkXHJcbiAgICAgICAgY29uc3QgZmlsdGVyUXVlcnkgPSBtZXRhZGF0YS50aXRsZUNvbHVtbk5hbWVcclxuICAgICAgICAgICAgPyBgJiRmaWx0ZXI9JHttZXRhZGF0YS50aXRsZUNvbHVtbk5hbWUudG9TdHJpbmcoKX0gbmUgJ2NhY2hlLWJ1c3Rlci0ke25ld0d1aWQoKX0nYFxyXG4gICAgICAgICAgICA6IFwiXCI7XHJcblxyXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBwcm9wZXJ0aWVzIHRvIGV4cGFuZCBoYXZlIGJlZW4gcHJvdmlkZWQgdGhlbiBmb3JtYXQgdGhlbSBpbnRvIGEgcXVlcnkgc3RyaW5nIHRvIHByb3ZpZGUgaW4gdGhlIFVSTC5cclxuICAgICAgICBjb25zdCBleHBhbmRlZFByb3BlcnRpZXNRdWVyeSA9XHJcbiAgICAgICAgICAgIG1ldGFkYXRhLmV4cGFuZFByb3BlcnRpZXMubGVuZ3RoID4gMCA/IGZvcm1hdEV4cGFuZGVkUHJvcGVydGllc1F1ZXJ5KG1ldGFkYXRhKSA6IFwiXCI7XHJcblxyXG4gICAgICAgIC8vIENvbmNhdGVuYXRlIHRoZSBwYXJhbWV0ZXJzIHRvIGFkZCB0byB0aGUgVVJMLlxyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RVcmwgPSBgJHtzZWxlY3RRdWVyeX0ke2ZpbHRlclF1ZXJ5fSR7ZXhwYW5kZWRQcm9wZXJ0aWVzUXVlcnl9YDtcclxuXHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB3aW5kb3cuc2hlbGwuZ2V0VG9rZW5EZWZlcnJlZCgpO1xyXG4gICAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9fYXBpLyR7cGx1cmFsTG9naWNhbE5hbWV9KCR7cmVjb3JkSWR9KT8ke3JlcXVlc3RVcmx9YCwge1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIF9fUmVxdWVzdFZlcmlmaWNhdGlvblRva2VuOiB0b2tlbixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gQXNzZXJ0IHRoZSBzdGF0dXMgaXMgT0tcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aHJvd0Vycm9yRnJvbVJlc3BvbnNlKHJlc3BvbnNlLCB7IHN0YXR1c0NvZGU6IDIwMCwgc3RhdHVzVGV4dDogXCJPS1wiIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IE9EYXRhUmV0cmlldmVSZXNwb25zZTxUPiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgYSBzaW5ndWxhciAnJHtwbHVyYWxMb2dpY2FsTmFtZX0nIHJlY29yZDpcXHJcXG4ke2Vycm9yfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgICAgICBwbHVyYWxMb2dpY2FsTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHJlY29yZElkOiBzdHJpbmcsXHJcbiAgICAgICAgYm9keTogUGFydGlhbDxUPixcclxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD5cclxuICAgICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGlmICghd2luZG93LnNoZWxsPy5nZXRUb2tlbkRlZmVycmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImB3aW5kb3cuc2hlbGwuZ2V0VG9rZW5EZWZlcnJlZGAgaXMgbm90IGRlZmluZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IHdpbmRvdy5zaGVsbC5nZXRUb2tlbkRlZmVycmVkKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIElmIHRoZSB1cGRhdGUgYm9keSBpcyBub3QgZW1wdHlcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9fYXBpLyR7cGx1cmFsTG9naWNhbE5hbWV9KCR7cmVjb3JkSWR9KWAsIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUEFUQ0hcIixcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfX1JlcXVlc3RWZXJpZmljYXRpb25Ub2tlbjogdG9rZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShidWlsZFVwc2VydEJvZHkoYm9keSwgbWV0YWRhdGEpKSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIEFzc2VydCB0aGUgc3RhdHVzIGlzIE5vLUNvbnRlbnRcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwNCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRocm93RXJyb3JGcm9tUmVzcG9uc2UocmVzcG9uc2UsIHsgc3RhdHVzQ29kZTogMjA0LCBzdGF0dXNUZXh0OiBcIk5vIENvbnRlbnRcIiB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgIGBGYWlsZWQgdG8gdXBkYXRlICR7T2JqZWN0LmtleXMoYm9keSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKChrZXkpID0+IGAnJHtrZXl9J2ApXHJcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX0gY29sdW1ucyBvZiBhICcke3BsdXJhbExvZ2ljYWxOYW1lfScgcmVjb3JkOlxcclxcbiR7ZXJyb3J9YFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVGZWVkYmFja1BvcnRhbEFjdGlvbihcclxuICAgICAgICBmZWVkYmFja0Rlc2NyaXB0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgZmVlZGJhY2tDYXRlZ29yeTogRmVlZGJhY2tDYXRlZ29yeVxyXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgZXhlY3V0ZVBvcnRhbEFjdGlvbih7XHJcbiAgICAgICAgICAgIGV2ZW50OiBcIkZlZWRiYWNrXCIsXHJcbiAgICAgICAgICAgIGZlZWRiYWNrQ2F0ZWdvcnksXHJcbiAgICAgICAgICAgIGZlZWRiYWNrRGVzY3JpcHRpb24sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBleGVjdXRlUmVxdWVzdENsb3N1cmVQb3J0YWxBY3Rpb24oaW5jaWRlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+IHtcclxuICAgICAgICBhd2FpdCBleGVjdXRlUG9ydGFsQWN0aW9uKHtcclxuICAgICAgICAgICAgZXZlbnQ6IFwiUmVxdWVzdENsb3N1cmVcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJldHJpZXZlKFwiaW5jaWRlbnRzXCIsIGluY2lkZW50SWQsIFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVSZXF1ZXN0UmVvcGVuUG9ydGFsQWN0aW9uKGluY2lkZW50SWQ6IHN0cmluZyk6IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPiB7XHJcbiAgICAgICAgYXdhaXQgZXhlY3V0ZVBvcnRhbEFjdGlvbih7XHJcbiAgICAgICAgICAgIGV2ZW50OiBcIlJlcXVlc3RSZW9wZW5cIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZCxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJldHJpZXZlKFwiaW5jaWRlbnRzXCIsIGluY2lkZW50SWQsIFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVTZW5kSW52aXRhdGlvblBvcnRhbEFjdGlvbihjb250YWN0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGF3YWl0IGV4ZWN1dGVQb3J0YWxBY3Rpb24oe1xyXG4gICAgICAgICAgICBldmVudDogXCJTZW5kUG9ydGFsSW52aXRhdGlvblwiLFxyXG4gICAgICAgICAgICBjb250YWN0SWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFeGVjdXRlcyBhIFBvcnRhbCBBY3Rpb24uXHJcbiAgICAgKiBAcGFyYW0gc3VibWlzc2lvbkRhdGEgU3VibWlzc2lvbiB0byBtYWtlLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBleGVjdXRlUG9ydGFsQWN0aW9uKHN1Ym1pc3Npb25EYXRhOiBTdWJtaXNzaW9uRGF0YSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzdWJtaXNzaW9uRGF0YSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybFN0cmluZyA9IGVuY29kZVVSSUNvbXBvbmVudChqc29uU3RyaW5nKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYC9wb3J0YWxhY3Rpb25zLz9wYXJhbXM9JHt1cmxTdHJpbmd9YCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRocm93RXJyb3JGcm9tUmVzcG9uc2UocmVzcG9uc2UsIHsgc3RhdHVzQ29kZTogMjAwLCBzdGF0dXNUZXh0OiBcIk9LXCIgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBleGVjdXRlIFBvcnRhbCBBY3Rpb24gJyR7c3VibWlzc2lvbkRhdGEuZXZlbnR9JzogJHtlcnJvcn1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGUsXHJcbiAgICAgICAgcmV0cmlldmVNdWx0aXBsZSxcclxuICAgICAgICByZXRyaWV2ZSxcclxuICAgICAgICB1cGRhdGUsXHJcbiAgICAgICAgZXhlY3V0ZUZlZWRiYWNrUG9ydGFsQWN0aW9uLFxyXG4gICAgICAgIGV4ZWN1dGVSZXF1ZXN0Q2xvc3VyZVBvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlU2VuZEludml0YXRpb25Qb3J0YWxBY3Rpb24sXHJcbiAgICB9O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFRocm93cyBhbiBlcnJvciB3aXRoIHRoZSBtb3N0IGRldGFpbCBwb3NzaWJsZSBmcm9tIHRoZSByZXNwb25zZS5cclxuICogQHBhcmFtIHJlc3BvbnNlIFJlc3BvbnNlIHRvIHBhcnNlLlxyXG4gKiBAcGFyYW0gZXhwZWN0ZWRTdGF0dXMgRXhwZWN0ZWQgc3RhdHVzIG9mIHRoZSByZXNwb25zZSwgZm9yIHVzZSBpbiB0aGUgZXJyb3IgbWVzc2FnZS5cclxuICogQHRocm93cyBBbHdheXMgdGhyb3dzIGFuIGVycm9yLlxyXG4gKi9cclxuYXN5bmMgZnVuY3Rpb24gdGhyb3dFcnJvckZyb21SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UsIGV4cGVjdGVkU3RhdHVzOiB7IHN0YXR1c0NvZGU6IG51bWJlcjsgc3RhdHVzVGV4dDogc3RyaW5nIH0pIHtcclxuICAgIC8vIEdldCB0aGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5XHJcbiAgICBjb25zdCBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IGF3YWl0IChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2VuZXJpY0Vycm9yTWVzc2FnZSA9IGBFeHBlY3RlZCBIVFRQIFN0YXR1cyBDb2RlIHRvIGJlICcke2V4cGVjdGVkU3RhdHVzLnN0YXR1c0NvZGV9ICgke2V4cGVjdGVkU3RhdHVzLnN0YXR1c1RleHR9KScsIGJ1dCB3YXMgJyR7cmVzcG9uc2Uuc3RhdHVzfSdgO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIEpTT04gcmVzcG9uc2VcclxuICAgICAgICAgICAgY29uc3QgcG9zc2libGVFcnJvck9iamVjdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSByZXNwb25zZSBsb29rcyBsaWtlIGFuIE9EYXRhIGVycm9yXHJcbiAgICAgICAgICAgIGlmIChpc09EYXRhRXJyb3IocG9zc2libGVFcnJvck9iamVjdCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEdldCBhIGpvaW5lZCBzdHJpbmcgb2YgdGhlIHVuaXF1ZSBlcnJvciBtZXNzYWdlcyBhbmQgZXJyb3IgY29kZXMgcmV0dXJuZWRcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9ySW5mbyA9IEFycmF5LmZyb20oXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IFNldChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlRXJyb3JPYmplY3QuZXJyb3IuaW5uZXJlcnJvcj8udHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVFcnJvck9iamVjdC5lcnJvci5pbm5lcmVycm9yPy5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUVycm9yT2JqZWN0LmVycm9yLmlubmVyZXJyb3I/LmNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYChFcnJvciBDb2RlOiAke3Bvc3NpYmxlRXJyb3JPYmplY3QuZXJyb3IuaW5uZXJlcnJvcj8uY29kZX0pYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUVycm9yT2JqZWN0LmVycm9yLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAoRXJyb3IgQ29kZTogJHtwb3NzaWJsZUVycm9yT2JqZWN0LmVycm9yLmNvZGV9KWAsXHJcbiAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChlcnJvclBhcnQpID0+IGVycm9yUGFydClcclxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiBcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2Vycm9ySW5mb30uICR7Z2VuZXJpY0Vycm9yTWVzc2FnZX1gO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyaWNFcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgY291bGQgbm90IGJlIHBhcnNlZCBhcyBhbiBPRGF0YSBFcnJvciwgZmFsbGJhY2sgdG8gYSBnZW5lcmljIGVycm9yXHJcbiAgICAgICAgICAgIHJldHVybiBnZW5lcmljRXJyb3JNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH0pKCk7XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUeXBlIGd1YXJkIHRvIHRlc3Qgd2hldGhlciB0aGUgb2JqZWN0IGlzIGFuIE9EYXRhIGVycm9yIHJlc3BvbnNlLlxyXG4gKiBAcGFyYW0gb2JqZWN0IE9iamVjdCB0byB0ZXN0LlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBvYmplY3QgaXMgYW4gT0RhdGEgZXJyb3IgcmVzcG9uc2UuXHJcbiAqL1xyXG5mdW5jdGlvbiBpc09EYXRhRXJyb3Iob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgT0RhdGFFcnJvclJlc3BvbnNlIHtcclxuICAgIGNvbnN0IG9iamVjdEFzT0RhdGFFcnJvclJlc3BvbnNlID0gb2JqZWN0IGFzIE9EYXRhRXJyb3JSZXNwb25zZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIHR5cGVvZiBvYmplY3RBc09EYXRhRXJyb3JSZXNwb25zZS5lcnJvciA9PT0gXCJvYmplY3RcIiAmJlxyXG4gICAgICAgIHR5cGVvZiBvYmplY3RBc09EYXRhRXJyb3JSZXNwb25zZS5lcnJvci5jb2RlID09PSBcInN0cmluZ1wiICYmXHJcbiAgICAgICAgdHlwZW9mIG9iamVjdEFzT0RhdGFFcnJvclJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgPT09IFwic3RyaW5nXCJcclxuICAgICk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25zdHJ1Y3QgdGhlICdzZWxlY3QnIHNlY3Rpb24gb2YgdGhlIHF1ZXJ5IHRvIHRoZSBXZWIgQVBJLlxyXG4gKiBAcGFyYW0gY29sdW1uTmFtZXMgVGhlIGNvbHVtbiBuYW1lcyBwcm92aWRlZCBpbiB0aGUgV2ViIEFQSSBxdWVyeS5cclxuICogQHJldHVybnMgVGhlIHN0cmluZyAnU2VsZWN0JyBxdWVyeSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBmaWVsZHMgd2lsbCBiZSByZXRyaWV2ZWQuXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3JtYXRTZWxlY3RRdWVyeShjb2x1bW5OYW1lczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAkc2VsZWN0PSR7Y29sdW1uTmFtZXNcclxuICAgICAgICAuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4uaW5jbHVkZXMoXCJAT0RhdGFcIikpXHJcbiAgICAgICAgLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4udG9Mb2NhbGVTdHJpbmcoKSlcclxuICAgICAgICAuam9pbihcIixcIil9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnN0cnVjdCB0aGUgJ2ZpbHRlcicgc2VjdGlvbiBvZiB0aGUgcXVlcnkgdG8gdGhlIFdlYiBBUEkuXHJcbiAqIEBwYXJhbSBmaWx0ZXJzIFRoZSBmaWx0ZXJzIHRvIGFwcGx5IHRvIHRoZSBXZWIgQVBJIHF1ZXJ5LlxyXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nICdGaWx0ZXInIHF1ZXJ5IGFwcGxpZWQgdG8gdGhlIFdlYiBBUEkgcXVlcnkuXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3JtYXRGaWx0ZXJRdWVyeTxUIGV4dGVuZHMgb2JqZWN0PihmaWx0ZXJzOiBDb25kaXRpb25FeHByZXNzaW9uPFQ+W10pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBmaWx0ZXJzXHJcbiAgICAgICAgLmZpbHRlcigoZmlsdGVyKSA9PiAhKGZpbHRlci5hdHRyaWJ1dGUgYXMgc3RyaW5nKS5pbmNsdWRlcyhcIkBPRGF0YVwiKSlcclxuICAgICAgICAubWFwKChmaWx0ZXIpID0+IGAke2ZpbHRlci5hdHRyaWJ1dGUgYXMgc3RyaW5nfSAke2ZpbHRlci5vcGVyYXRvcn0gJHtmaWx0ZXIudmFsdWUgPz8gXCJcIn1gKVxyXG4gICAgICAgIC5qb2luKFwiIGFuZCBcIik7XHJcblxyXG4gICAgcmV0dXJuIGAmJGZpbHRlcj0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeVN0cmluZyl9YDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCB0aGUgJ2V4cGFuZCcgcHJvcGVydGllcyBpbiB0aGUgbWV0YWRhdGEuXHJcbiAqIEBwYXJhbSBtZXRhZGF0YSBUaGUgbWV0YWRhdGEgdG8gdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIGV4cGFuZGVkIHByb3BlcnRpZXMuXHJcbiAqIEByZXR1cm5zIEEgc3RyaW5nIHRvIHJldHJpZXZlIHRoZSBleHBhbmRlZCBwcm9wZXJ0aWVzIGZyb20gdGhlIFdlYiBBUEkuXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3JtYXRFeHBhbmRlZFByb3BlcnRpZXNRdWVyeTxUPihtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD4pOiBzdHJpbmcge1xyXG4gICAgLy8gSWYgdGhlcmUgYXJlIGV4cGFuZGVkIHByb3BlcnRpZXMgdGhlbiBwcm9kdWNlIGEgcXVlcnkgc3RyaW5nIGZvciB0aGVtLlxyXG4gICAgaWYgKG1ldGFkYXRhLmV4cGFuZFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID1cclxuICAgICAgICAgICAgXCImJGV4cGFuZD1cIiArXHJcbiAgICAgICAgICAgIG1ldGFkYXRhLmV4cGFuZFByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgIC5tYXAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHByb3BlcnR5KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtwcm9wZXJ0eS5jb2x1bW5OYW1lLnRvU3RyaW5nKCl9KCR7Zm9ybWF0U2VsZWN0UXVlcnkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eS5lbnRpdHlNZXRhZGF0YS5jb2x1bW5OYW1lc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgYW55IG5lc3RlZCBleHBhbmRlZCBwcm9wZXJ0aWVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2x1bW5OYW1lKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BlcnR5LmVudGl0eU1ldGFkYXRhLmV4cGFuZFByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChuZXN0ZWRQcm9wKSA9PiBuZXN0ZWRQcm9wLmNvbHVtbk5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKGNvbHVtbk5hbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBzdHJpbmdbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfSlgXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuam9pbihcIixcIik7XHJcblxyXG4gICAgICAgIHJldHVybiBxdWVyeVN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcCB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUga2V5IGFuZCB2YWx1ZSBwYWlyLlxyXG4gKiBAcGFyYW0gbWV0YWRhdGEgVGhlIG1ldGFkYXRhIHVzZWQgZm9yIHRoZSBlbnRpdHkgcmVmZXJlbmNlIGNvbHVtbiBtYXBwaW5ncy5cclxuICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBjdXJyZW50IGVudHJ5LlxyXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGVudHJ5LlxyXG4gKi9cclxuZnVuY3Rpb24gbWFwTmF2aWdhdGlvblByb3BlcnRpZXM8VD4obWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFQ+LCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xyXG4gICAgLy8gSWYgdGhlIGtleSAoY29sdW1uIG5hbWUpIGxvb2tzIGxpa2UgYW4gRW50aXR5IFJlZmVyZW5jZVxyXG4gICAgaWYgKGtleS5zdGFydHNXaXRoKFwiX1wiKSAmJiBrZXkuZW5kc1dpdGgoXCJfdmFsdWVcIikpIHtcclxuICAgICAgICAvLyBGaW5kIGEgbWFwcGluZyBkZXNjcmliaW5nIHRoZSBwbHVyYWwgRW50aXR5IFNldCBuYW1lXHJcbiAgICAgICAgY29uc3QgbWFwcGluZyA9IG1ldGFkYXRhLmVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzLmZpbmQoKG1hcHBpbmcpID0+IG1hcHBpbmcuY29sdW1uTmFtZSA9PT0ga2V5KTtcclxuXHJcbiAgICAgICAgLy8gSWYgbm8gbWFwcGluZyB3YXMgZm91bmRcclxuICAgICAgICBpZiAoIW1hcHBpbmcpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgYFxcYGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzXFxgIGRvZXMgbm90IGNvbnRhaW4gYSBkZWZpbml0aW9uIGZvciB0aGUgRW50aXR5IFJlZmVyZW5jZSBjb2x1bW4gJyR7a2V5fSdgXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW5hbWUgdGhlIGtleSAoY29sdW1uIG5hbWUpIGZyb20gXCJfYXBwbGVfdmFsdWVcIiB0byBcImFwcGxlQG9kYXRhLmJpbmRcIlxyXG4gICAgICAgIGtleSA9IGAke21hcHBpbmcubmF2aWdhdGlvblByb3BlcnR5TmFtZX1Ab2RhdGEuYmluZGA7XHJcblxyXG4gICAgICAgIC8vIFJlbmFtZSB0aGUgdmFsdWUgKEdVSUQpIGZyb20gXCJHVUlEXCIgdG8gXCIvYXBwbGVzKEdVSUQpXCJcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlID8gYC8ke21hcHBpbmcucGx1cmFsRW50aXR5U2V0TmFtZX0oJHt2YWx1ZX0pYCA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtrZXksIHZhbHVlXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkcyB0aGUgb2JqZWN0IHRvIEpTT04gc3RyaW5naWZ5IGZvciBhbnkgY3JlYXRpb24gb3IgdXBkYXRlLlxyXG4gKiBAcGFyYW0gYm9keSBSZWNvcmQgdG8gdXBzZXJ0LlxyXG4gKiBAcGFyYW0gbWV0YWRhdGEgTWV0YWRhdGEgb2YgdGhlIGVudGl0eS5cclxuICogQHJldHVybnMgT2JqZWN0IHZhbGlkIGZvciB1cHNlcnQuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVcHNlcnRCb2R5PFQgZXh0ZW5kcyBvYmplY3Q+KGJvZHk6IFBhcnRpYWw8VD4sIG1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YTxUPik6IG9iamVjdCB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxyXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGJvZHkgYXMgYW55KVxyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IHRoZSBrZXlzIHRoYXQgY29udGFpbiAnQE9EYXRhJyBhcyB0aGVzZSBhcmUgdHlwaWNhbGx5IGZvcm1hdHRlZCB2YWx1ZXMuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAha2V5LmluY2x1ZGVzKFwiQE9EYXRhXCIpKVxyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGFueSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgdGhhdCBhcmUgbnVsbC5cclxuICAgICAgICAgICAgLmZpbHRlcigoW2tleSwgdmFsdWVdKSA9PiAhKGtleS5zdGFydHNXaXRoKFwiX1wiKSAmJiBrZXkuZW5kc1dpdGgoXCJfdmFsdWVcIikgJiYgIXZhbHVlKSlcclxuICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBba2V5LCB2YWx1ZV0gPSBtYXBOYXZpZ2F0aW9uUHJvcGVydGllcyhtZXRhZGF0YSwga2V5LCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBleHBhbmRlZFByb3BlcnRpZXMgPSBtZXRhZGF0YS5leHBhbmRQcm9wZXJ0aWVzLmZpbmQoKHByb3ApID0+IHByb3AuY29sdW1uTmFtZSA9PT0ga2V5KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGFuIGV4cGFuZGVkIHByb3BlcnR5LlxyXG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZHMgPSB2YWx1ZSBhcyBUW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVzZSByZWN1cnNpb24gdG8gZXhwYW5kIGFsbCB0aGUgcHJvcGVydGllcy5cclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlY29yZHMubWFwKChyZWNvcmQpID0+IGJ1aWxkVXBzZXJ0Qm9keShyZWNvcmQsIGV4cGFuZGVkUHJvcGVydGllcy5lbnRpdHlNZXRhZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBba2V5LCB2YWx1ZV07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICApO1xyXG59XHJcbiIsIi8qKiBFbnVtZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHN0YXRlY29kZSBvZiBhbiBBY3Rpdml0eSAqL1xyXG5leHBvcnQgZW51bSBBY3Rpdml0eVN0YXRlQ29kZSB7XHJcbiAgICAvKiogT3BlbiAqL1xyXG4gICAgT3BlbiA9IDAsXHJcbiAgICBcclxuICAgIC8qKiBDb21wbGV0ZWQgKi9cclxuICAgIENvbXBsZXRlZCA9IDEsXHJcbiAgICBcclxuICAgIC8qKiBDYW5jZWxsZWQgKi9cclxuICAgIENhbmNlbGxlZCA9IDIsXHJcbiAgICBcclxuICAgIC8qKiBTY2hlZHVsZWQgKi9cclxuICAgIFNjaGVkdWxlZCA9IDMsXHJcbn1cclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgZGlyZWN0aW9uIG9mIGFuIFBvcnRhbCBDb21tZW50ICovXHJcbmV4cG9ydCBlbnVtIERpcmVjdGlvbkNvZGUge1xyXG4gICAgLyoqIEluY29taW5nICovXHJcbiAgICBJbmNvbWluZyA9IDEsXHJcblxyXG4gICAgLyoqIE91dGdvaW5nICovXHJcbiAgICBPdXRnb2luZyA9IDIsXHJcbn1cclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhdHVzY29kZSBvZiBhIFBvcnRhbCBDb21tZW50ICovXHJcbmV4cG9ydCBlbnVtIFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlIHtcclxuICAgIC8qKiBPcGVuICovXHJcbiAgICBPcGVuID0gMSxcclxuICAgIFxyXG4gICAgLyoqIFNlbnQgKi9cclxuICAgIFNlbnQgPSAyLFxyXG4gICAgXHJcbiAgICAvKiogUmVjZWl2ZWQgKi9cclxuICAgIFJlY2VpdmVkID0gMyxcclxuICAgIFxyXG4gICAgLyoqIENhbmNlbGxlZCAqL1xyXG4gICAgQ2FuY2VsbGVkID0gNCxcclxuXHJcbiAgICAvKiogU2NoZWR1bGVkICovXHJcbiAgICBTY2hlZHVsZWQgPSA1LFxyXG59XHJcbiIsImltcG9ydCB7IEFjdGl2aXR5U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0FjdGl2aXR5U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IERpcmVjdGlvbkNvZGUgfSBmcm9tIFwiLi4vRW51bXMvRGlyZWN0aW9uQ29kZVwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb21tZW50U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Qb3J0YWxDb21tZW50U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBQb3J0YWwgQ29tbWVudHMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tQb3J0YWxDb21tZW50RGF0YTogUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDBjMC1hY2Y0LWUxNWVoa2dnbWoyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiMmZiYzZkN2ItNjk2MS00MGMwLWFjZjQtZTE1ZThjYjAzMmUxXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW0gc3R1Y2sgaW4gYW5vdGhlciBjb3VudHJ5LCBpbiBhIGNhdmUuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDg6NDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwODo0ODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDExLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIyZmJjNmQ3Yi02OTYxLTQwYzAtYWNmNC1lMTVlOGNiMDMyZTFcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJHb25uYSBuZWVkIHlvdXIgbWFnaWMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTowODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDEyLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIwZWE5ZWU5MS1lZGMwLTRkYzItODk4ZC0xZTI4YmJhZmVkZTVcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTdG9wIGJyZWFraW5nIHN0dWZmIHBsZWFzZSBIdWxrLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTAzVDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQxMy02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNWE1NzAwYjItMWE3Zi00YjBmLWI1YmItZDQyMjIzN2M1YTAzXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSGUgaGFzIHNldCB0aGUgc2VydmVycyBvbiBmaXJlLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTAzVDA4OjI4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQxNC02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNzdjNjEyYzItNjE3MC00YTMwLTgwYjUtYmQ1ZWUzYTliZjE2XCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FuIHlvdSBoZWxwIG1lIGdldCBiYWNrIHRvIEFzZ2FyZCBhcyBJIGhhdmUgYmVlbiBleGlsZWQgdG8gTWlkZ2FyZC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wOS0wNFQwMzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkMTUtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjc3YzYxMmMyLTYxNzAtNGEzMC04MGI1LWJkNWVlM2E5YmYxNlwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkdvaW5nIHRvIG5lZWQgc29tZSBTdGFyayB0ZWNoIHRvIHB1dCB0aGUgZmlyZXMgb3V0LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTA2VDA4OjQ4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQxNi02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNGY0ZWUzMjAtOWE1MC00MzhlLWJmMjQtZmZkNzg2YWZjMzk3XCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSW0gbm90IHN1cmUgaG93IHRvIHVzZSBhIGNvbXB1dGVyIHlldC4gSSd2ZSBiZWVuIHN0dWNrIGluIHRoZSBpY2UuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDRUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDE3LTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlZWQ1Njk5Yy00Mzk1LTQ4OWUtODUzZi05ZTdhNmQ1ZWEwZWFcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJNeSBtYWdpYyB0cmlja3MgYXJlIGJldHRlciB0aGFuIHlvdXJzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA1VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQxOC02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiMWIyNmI5NGQtNzM3Yi00NTFiLWI4OWQtNzI1YmQyNWZmMDJlXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiV2UgbmVlZCB0byBnZXQgdGhlIHRlYW0gdG9nZXRoZXIuIFdlIG5lZWQgdG8gc3RvcCBMb2tpIGZyb20gc2V0dGluZyB0aGUgc2VydmVycyBvbiBmaXJlLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA2VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQxOS02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiM2Q2Yzc0MTEtMTYyMi00OGYzLWJkMGItNTA5ZDZhMzlhNTYyXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQS5JLk0gaGFzIGJpZyBhaW1zIGZvciB2ZXJ5IGZhc3QgbmV0d29yayBjb25uZWN0aW9ucy4gVGhlaXIgc2VydmVycyBhcmUgYWxzbyBmaXJlcHJvb2YhXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDdUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDIxLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJkNDM3ZGRlMC1jNzlkLTQxYzYtYjcxOS1lMjM3ODI2OWRjN2JcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIb3cgYXJlIHdlIGdvaW5nIHRvIHJlc29sdmUgdGhpcz8gSXMgdGhlcmUgYSBiYWNrdXAgb2YgYSBiYWNrdXA/XCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDhUMDc6NTY6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDIyLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI1MDk5MDkxMy04ZWNmLTRkNmYtYjgwNi1iMDEyNzhjNjgzNjlcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZSBoYXMgdXNlZCBIeWRyYSdzIHNlcnZlcnMgYW5kIGlzIHVzaW5nIHRoZWlyIGJyb2FkYmFuZCB0b28uXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMTFUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDIzLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzZjlkZjZlZi00M2FlLTQ0ZGEtYjNhYS02ODc2YzZlNjg2NTdcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgXCJJIGFtIEdyb290IEkgYW0gR3Jvb3QgSSBhbSBHcm9vdCBJIGFtIEdyb290IEkgYW0gR3Jvb3QgSSBhbSBHcm9vdCBJIGFtIEdyb290IEkgYW0gR3Jvb3QgSSBhbSBHcm9vdC4gSSBhbSBHcm9vdC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0xMlQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkMjUtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjNmOWRmNmVmLTQzYWUtNDRkYS1iM2FhLTY4NzZjNmU2ODY1N1wiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkltIHNvcnJ5IGFib3V0IHRoYXQsIEkgdGhpbmsgR3Jvb3QgZ290IG9udG8gbXkgZW1haWwgYWNjb3VudC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0xM1QwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCJlNDFmMGMzMS0xMDhlLTRmM2UtOTY0Yy0yNzMza2RnanNvOFwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlNDFmMGM4Yy0xMDhlLTRmM2UtOTY0Yy0yNzMzNjE0MjVmNDhcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJEbyB5b3Ugc2VlIHRoZSBmbHlpbmcgY2l0eSB0b28/XCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMTRUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDMyLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlNDFmMGM4Yy0xMDhlLTRmM2UtOTY0Yy0yNzMzNjE0MjVmNDhcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJXZSBoYXZlbid0IHNlZW4geW91IGluIGEgd2hpbGUsIGhvdydzIHRoZSBqZXQgdHJlYXRpbmcgeW91P1wiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTE1VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQzMy02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNTg1ZDQ1YmMtMzRiYi00NTM3LTllZjctZWQ2NmQ2OWU1NGNiXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSXQncyBnZXR0aW5nIHJlYWxseSBib3JpbmcsIGkndmUgcmVzb3J0ZWQgdG8gbGVhcm5pbmcgbWFnaWMgdHJpY2tzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTE2VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQzNC02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNTg1ZDQ1YmMtMzRiYi00NTM3LTllZjctZWQ2NmQ2OWU1NGNiXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiWW91IGhhdmUgYWJvdXQgNSB3ZWVrcyBsZWZ0LiBTb3JyeS5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0yNVQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkMzUtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImU1MzY3NTU5LTM2ZjAtNDQ5NC04N2JkLTZjYjgyNDljOGQyY1wiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkl0J3Mgbm90IGhpcyBmYXVsdCBmb3IgdGhlIHNlcnZlciBmaXJlLiBIeWRyYSB1c2VkIGhpbSB0byBzZXQgdGhlIFdha2FuZGFuJ3Mgc2VydmVycyBvbiBmaXJlLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTE1VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQzNi02OTYxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiZTUzNjc1NTktMzZmMC00NDk0LTg3YmQtNmNiODI0OWM4ZDJjXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSGUgZGlkIGFsbCBvZiBpdCB1bmRlciBoaXMgb3duIGluZmx1ZW5jZS5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wMlQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkNDEtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImMwODNhZDM0LTY5YjItNDYwMy05MzU4LTUyMmU1NmIzZGEyOVwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkkgaGFzIGEgc2VydmVyIGVycm9yIGFuZCBub3cgaSBuZWVkIGFuIG9wZXJhdGlvbi5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wNlQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkNDItNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjc3ZTRhN2E0LTcwMzctNDFlZC04ZThmLThhMjE4ZmFmYjlhNFwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoaXMgZ3V5IGlzIGEgcGxhbmV0LCBpdHMgaW5mbGF0ZWQgaGlzIEVnbyBzbyBtdWNoLiBBbHNvIGhlIGlzIG15IGZhdGhlci5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0yNVQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkNDMtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImFhMTMxM2RmLTA1OTAtNDZhZS1hYjlhLTYxYzdkMWExN2IwNlwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk5lZCBpcyBidXN5IGZpeGluZyBhIHNlcnZlciBpc3N1ZS5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMi0xNFQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA5LTEyVDA5OjQzOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkNDUtNjk2MS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImMzNDg5NTVmLWFkNDgtNDNjMy04OGFiLTQyM2ZmMmJiOGUyOFwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkl0IHR1cm5zIG91dCBteSBzaXN0ZXIgaXMgSGVsYSwgc2hlIGlzIGdvb2QgYXQgZml4aW5nIHNlcnZlcnMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTItMTZUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDQ3LTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI4NjRlNGY2Zi1mYWM2LTQ1YjEtYjcyMC1iNTIxNTMyNTlmZTNcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJXYWthbmRhIGlzIGdyZWF0LCB3ZSBoYXZlIGZpcmVwcm9vZiBzZXJ2ZXJzIG1hZGUgZnJvbSB2aWJyYW5pdW0uXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTItMTdUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0xMlQwOTo0MzowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDUxLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzYjViMTg0MC1jOTc4LTQ3NmUtODY5Ny0xNDliMTY1NzNmODFcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJIGdvdCBpbnRvIHNvbWUgdHJvdWJsZSBhbmQgbmVlZCB5b3UgZG9jLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEyLTE5VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTJUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ1Mi05MTIzLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiM2I1YjE4NDAtYzk3OC00NzZlLTg2OTctMTQ5YjE2NTczZjgxXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSSBuZWVkIHRoaXMgc29ydGVkIEFTQVAuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTItMTNUMDc6MTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMC0xM1QwOTowMTowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDUzLTkxMjMtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlZWQ1Njk5Yy00Mzk1LTQ4OWUtODUzZi05ZTdhNmQ1ZWEwZWFcIixcclxuICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgXCJBbnRtYW4gc2hydW5rIHRoZSBzZXJ2ZXIgYW5kIGl0cyBvbmx5IHdvcmtpbmcgd2l0aCBxdWFudHVtIHByb2Nlc3NpbmcsIGNhbiB3ZSBnZXQgYSBuZXcgb25lIHBsZWFzZT9cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMS0xNFQwNzoxODowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTEwLTEzVDA5OjAxOjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IEFjdGl2aXR5U3RhdGVDb2RlW1wiQ29tcGxldGVkXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbENvbW1lbnRTdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCI0aGZoZGZkNDctNjk2MS01MGQyLWJiZjQtZTE1ZThlcjAzMmEzXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjM3N2U0NjUyLWUzOGQtNGMwYy05NzY4LWIwNDdhNGE0NTljNlwiLFxyXG4gICAgICAgIGFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZTogRGlyZWN0aW9uQ29kZVtcIkluY29taW5nXCJdLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkkgd2FudCBTb0dGYXN0IGFuZCBJIHdhbnQgaXQgaW4gYWxsIG9mIFZhbGhhbGxhLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIyLTEwLTE0VDA3OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjItMTEtMTlUMDk6NDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogQWN0aXZpdHlTdGF0ZUNvZGVbXCJDb21wbGV0ZWRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdLFxyXG4gICAgfSxcclxuXTtcclxuIiwiaW1wb3J0IHsgTWFqb3JJbmNpZGVudFVwZGF0ZSB9IGZyb20gXCIuLi9Nb2RlbHMvTWFqb3JJbmNpZGVudFVwZGF0ZVwiO1xyXG5pbXBvcnQgeyBNb2NrQ29udGFjdERhdGEgfSBmcm9tIFwiLi9Nb2NrQ29udGFjdERhdGFcIjtcclxuXHJcbi8qKiBNb2NrIGRhdGEgZm9yIE1ham9yIEluY2lkZW50IFVwZGF0ZXMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tNYWpvckluY2lkZW50VXBkYXRlRGF0YTogTWFqb3JJbmNpZGVudFVwZGF0ZVtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIyZmJjNmQ3Yi02OTYxLTQwYzAtYWNmNC1lMTVlOGNiMDMyZTFcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEubmlja0Z1cnkuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJUaGUgMTAgcmluZ3MgaGF2ZSBhIGxvdCBvZiB3ZWFwb25yeS5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJXZSBuZWVkIHRvIHRyeSBhbmQgc3RvcCB0aGVtIGZyb20gdXNpbmcgdGhlaXIgbWlzc2lsZXMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDg6MzE6NTUuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDAxMS1hY2Y0LWUxNWU4ZXIwMzJlMlwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIyMGVhOWVlOTEtZWRjMC00ZGMyLTg5OGQtMWUyOGJiYWZlZGU1XCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLm5pY2tGdXJ5LmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiQmlnIGdyZWVuIHJhZ2luZyBtb25zdGVyLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZXJlIGlzIGEgYmlnIGdyZWVuIG1vbnN0ZXIgcnVubmluZyByYW1wYW50IGFyb3VuZCB0aGUgY2l0eS4gV2UgbmVlZCBhaXIgc3VwcG9ydCBBU0FQIVwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDA4OjMzOjU1LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMTItYWNmNC1lMTVlOGVyMDMyZTNcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNWE1NzAwYjItMWE3Zi00YjBmLWI1YmItZDQyMjIzN2M1YTAzXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLm5pY2tGdXJ5LmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiVGhlcmUgaXMgYSBtYW4gb24gdGhlIEZvcm11bGEgMSB0cmFjay5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGVyZSBpcyBhIG1hbiBvbiB0aGUgRjEgdHJhY2ssIHdlIG5lZWQgSXJvbiBNYW4gbm93LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA4VDA4OjIzOjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMTMtYWNmNC1lMTVlOGVyMDMyZTRcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNWE1NzAwYjItMWE3Zi00YjBmLWI1YmItZDQyMjIzN2M1YTAzXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgYWN0dWFsZW5kOiBcIjIwMjAtMDctMDdUMDk6NTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBcIjFcIixcclxuICAgICAgICBzdWJqZWN0OiBcIlRoZSBzdGFyayBleHBvIGhhcyBnb25lIGF3cnkuXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgIFwiV2UgaGF2ZSByZW1vdGVseSBjb250cm9sbGVkIG1hY2hpbmVzIGF0dGFja2luZyBjaXZpbGlhbnMuIElyb24gTWFuIGFuZCBXYXIgTWFjaGluZSBuZWVkIHRvIGFjdCBmYXN0LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA4VDA4OjI3OjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMTQtYWNmNC1lMTVlOGVyMDE0YWZcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNzdjNjEyYzItNjE3MC00YTMwLTgwYjUtYmQ1ZWUzYTliZjE2XCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRob3IuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJMb2tpIGlzIHRha2luZyBvdmVyIEFzZ2FyZC5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJIGhhdmUgYmVlbiBleGlsZWQgdG8gTWlkZ2FyZCBhbmQgTG9raSBpcyB0cnlpbmcgdHJ5aW5nIHRvIHRha2UgdGhlIHRocm9uZSBvZiBBc2dhcmQuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDhUMDg6MzI6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDAxNS1hY2Y0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI0ZjRlZTMyMC05YTUwLTQzOGUtYmYyNC1mZmQ3ODZhZmMzOTdcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJSZWQgU2t1bGwgaGFzIHRoZSBUZXNzZXJhY3QuXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUmVkIFNrdWxsIGhhcyB0aGUgVGVzc2VyYWN0IGFuZCBjb3VsZCB3cmVhayBoYXZvYyB3aXRoIGl0LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA4VDA4OjMxOjEzLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMTYtYWNmNC1lMTVlODEyMzEyZnNcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNGY0ZWUzMjAtOWE1MC00MzhlLWJmMjQtZmZkNzg2YWZjMzk3XCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXZlUm9nZXJzLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSSBuZWVkIHRvIGNyYXNoIGludG8gdGhlIEljZS5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUbyBzdG9wIHRoZXNlIG1pc3NpbGVzIHJlYWNoaW5nIHRoZWlyIGRlc3RpbmF0aW9uIEkgbXVzdCBjcmFzaCB0aGlzIHBsYW5lIGludG8gdGhlIGljZS5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wOC0wMVQwODozMjoxMy4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDA5OjM1OjAwLjAwMFpcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNjk2MS00MTE3LWFjZjQtZTE1ZTgxMjMxMmZzXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjFiMjZiOTRkLTczN2ItNDUxYi1iODlkLTcyNWJkMjVmZjAyZVwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgYWN0dWFsZW5kOiBcIjIwMjAtMDctMDdUMDk6NTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBcIjFcIixcclxuICAgICAgICBzdWJqZWN0OiBcIkxva2kgaXMgYXR0YWNraW5nIE5ldyBZb3JrLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIldlIGFyZSBnb2luZyB0byBuZWVkIHRoZSBBdmVuZ2VycyB0byBhc3NlbWJsZSB0byBnZXQgb3V0IG9mIHRoaXMgb25lLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA4LTExVDExOjMyOjEzLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02YXNzLTIzMTgtYWNmNC1lMTVlODEyMzEyZnNcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiM2Q2Yzc0MTEtMTYyMi00OGYzLWJkMGItNTA5ZDZhMzlhNTYyXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgYWN0dWFsZW5kOiBcIjIwMjAtMDctMDdUMDk6NTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBcIjFcIixcclxuICAgICAgICBzdWJqZWN0OiBcIkEuSS5NIGlzIHVwIHRvIHNvbWV0aGluZy5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJbSBnb2luZyB0byBzb3J0IHRoaXMgb3V0LCBzaG91bGQgYmUgc29sdmVkIGluIGEgZmV3IGRheXMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDgtMTFUMTI6MTM6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDAyMS1hZGZzczQtZTE1ZTgxMjMxMmZzXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImQ0MzdkZGUwLWM3OWQtNDFjNi1iNzE5LWUyMzc4MjY5ZGM3YlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50aG9yLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiTWFsZWtpdGggaXMgdXAgdG8gc29tZXRoaW5nLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhlIGlzIGNhdXNpbmcgaGF2b2Mgb24gTWlkZ2FyZC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wOC0xMVQxMzoxNjoxMS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDA5OjM1OjAwLjAwMFpcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNjk2MS00MDIyLWFkZnNzNC1lMTVlODEyMzEyZnNcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiNTA5OTA5MTMtOGVjZi00ZDZmLWI4MDYtYjAxMjc4YzY4MzY5XCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXZlUm9nZXJzLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiQnVja3kgaXMgdXAgdG8gc29tZXRoaW5nLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhlIGlzIGJyZWFraW5nIFdha2FuZGEncyBzZXJ2ZXJzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA4LTE1VDEzOjE4OjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMjMtYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzZjlkZjZlZi00M2FlLTQ0ZGEtYjNhYS02ODc2YzZlNjg2NTdcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEucGV0ZXJRdWlsbC5jb250YWN0aWQsXHJcbiAgICAgICAgYWN0dWFsZW5kOiBcIjIwMjAtMDctMDdUMDk6NTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBcIjFcIixcclxuICAgICAgICBzdWJqZWN0OiBcIlJvbmFuIGlzIHVwIHRvIHNvbWV0aGluZy5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZSBoYXMgYWxtb3N0IGdvdCBoaXMgaGFuZHMgb24gdGhlIHBvd2VyIHN0b25lLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA4LTE1VDEzOjE4OjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMjQtYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlNDFmMGM4Yy0xMDhlLTRmM2UtOTY0Yy0yNzMzNjE0MjVmNDhcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJVbHRyb24gaXMgdXAgdG8gc29tZXRoaW5nLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhlIGhhcyBsaWZ0ZWQgU29rb3ZpYSB1cCBpbnRvIHRoZSBza3ksIHdoYXQgaXMgZ29pbmcgb24/XCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDgtMTVUMTc6MTg6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDBjNS1hZGZzczQtZTE1ZTgxMjMxMmZzXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjU4NWQ0NWJjLTM0YmItNDUzNy05ZWY3LWVkNjZkNjllNTRjYlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zY290dExhbmcuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJZZWxsb3cgSmFja2V0IGlzIHVwIHRvIHNvbWV0aGluZy5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZSBoYXMgc3RvbGUgSGFuaydzIFB5bSBQYXJ0aWNhbHMgYW5kIGlzIGdvaW5nIHRvIHNocmluayB0aGUgc2VydmVyLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA4LTE3VDEyOjExOjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMjUtYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJlNTM2NzU1OS0zNmYwLTQ0OTQtODdiZC02Y2I4MjQ5YzhkMmNcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudG9ueVN0YXJrLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiU3RldmUgaXMgdXAgdG8gc29tZXRoaW5nLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhlIGlzIG9uIHRoZSBydW4gd2l0aCBCdWNreSwgd2UgbmVlZCB0byBnZXQgdGhlbSB1bmRlciBjb250cm9sLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTE3VDEzOjExOjEwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMjYtYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJjMDgzYWQzNC02OWIyLTQ2MDMtOTM1OC01MjJlNTZiM2RhMjlcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgICAgIGFjdHVhbGVuZDogXCIyMDIwLTA3LTA3VDA5OjU4OjAwLjAwMFpcIixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogXCIxXCIsXHJcbiAgICAgICAgc3ViamVjdDogXCJEb3JtYW1tdSBpcyB1cCB0byBzb21ldGhpbmcuXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgIFwiSGUgYW5kIGhpcyBkaXNjaXBsZXMgYXJlIGJyZWFraW5nIGFsbCB0aGUgc2VydmVycywgd2UgbmVlZCB0byBzZW5kIHRoZW0gYmFjayB0byB0aGUgRGFyayBEaW1lbnNpb24uXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDktMjNUMDk6MTE6MTAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTY5NjEtNDAzMS1hZGZzczQtZTE1ZTgxMjMxMmZzXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjc3ZTRhN2E0LTcwMzctNDFlZC04ZThmLThhMjE4ZmFmYjlhNFwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5wZXRlclF1aWxsLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiRWdvIGlzIHVwIHRvIHNvbWV0aGluZy5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZSBpcyB0cnlpbmcgdG8gZ2V0IG1lIHRvIHRha2Ugb3ZlciBzZXJ2ZXJzIHdpdGggaGltLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTAzVDEwOjExOjEwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTQwMzItYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzYjViMTg0MC1jOTc4LTQ3NmUtODY5Ny0xNDliMTY1NzNmODFcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudG9ueVN0YXJrLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiVGhhbm9zIGlzIHVwIHRvIHNvbWV0aGluZy5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZSBoYXMganVzdCBzdG9sZSB0aGUgUG93ZXIgU3RvbmUgYW5kIGlzIG5vdyB0cnlpbmcgdG8gZ2V0IHRoZSBNaW5kIFN0b25lIGZyb20gVmlzaW9uLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA3VDEwOjE1OjEwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi02OTYxLTMyMzItYWRmc3M0LWUxNWU4MTIzMTJmc1wiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzYjViMTg0MC1jOTc4LTQ3NmUtODY5Ny0xNDliMTY1NzNmODFcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudG9ueVN0YXJrLmNvbnRhY3RpZCxcclxuICAgICAgICBhY3R1YWxlbmQ6IFwiMjAyMC0wNy0wN1QwOTo1ODowMC4wMDBaXCIsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFwiMVwiLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiVGhhbm9zIGFuZCB0aGUgU3RvbmVzLlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOlxyXG4gICAgICAgICAgICBcIklmIFRoYW5vcyBnZXRzIGhpcyBoYW5kcyBvbiBhbGwgNiBJbmZpbml0eSBTdG9uZXMgaGUgd2lsbCBoYXZlIHRoZSBwb3dlciB0byB3aXBlIG91dCBoYWxmIG9mIHRoZSBpbnRlcm5ldC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wM1QxMToxODoxMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDA5OjM1OjAwLjAwMFpcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNjk2MS00MDQzLWFjZjQtZTE1ZThlcjAzMjEyXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImVlZDU2OTljLTQzOTUtNDg5ZS04NTNmLTllN2E2ZDVlYTBlYVwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGV2ZVJvZ2Vycy5jb250YWN0aWQsXHJcbiAgICAgICAgYWN0dWFsZW5kOiBcIjIwMjAtMDctMDdUMDk6NTg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogXCIxXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBcIjFcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBcIjFcIixcclxuICAgICAgICBzdWJqZWN0OiBcIlRoYW5vcyBqdXN0IHVzZWQgdGhlIEluZmluaXR5IEdhdW50bGV0XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiRmlmdHkgUGVyY2VudCBvZiBsaWZlIGluIHRoZSB1bml2ZXJzZSBpcyBHT05FIVwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA5VDEwOjEyOjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgfSxcclxuXTtcclxuIiwiaW1wb3J0IHsgUGFydGljaXBhdGlvblR5cGVNYXNrIH0gZnJvbSBcIi4uL0VudW1zL1BhcnRpY2lwYXRpb25UeXBlTWFza1wiO1xyXG5pbXBvcnQgeyBQb3J0YWxFbWFpbCB9IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsRW1haWxcIjtcclxuaW1wb3J0IHsgTW9ja0NvbnRhY3REYXRhIH0gZnJvbSBcIi4vTW9ja0NvbnRhY3REYXRhXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBQb3J0YWwgRW1haWxzICovXHJcbmV4cG9ydCBjb25zdCBNb2NrUG9ydGFsRW1haWxEYXRhOiBQb3J0YWxFbWFpbFtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTAwMDEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIyZmJjNmQ3Yi02OTYxLTQwYzAtYWNmNC1lMTVlOGNiMDMyZTFcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJJcm9uIE1hblwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIldlIG5lZWQgeW91IHRvIGNvbWUgYW5kIGhlbHAgdXMgZml4IHRoZXNlIHNlcnZlcnMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDc6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwNzowODowMC4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItMDAwMS00MGMwLWFjZjQtZTE1ZThlcjAzMmUyXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjJmYmM2ZDdiLTY5NjEtNDBjMC1hY2Y0LWUxNWU4Y2IwMzJlMVwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiVG9ueSBTdGFyayBpcyBJcm9uIE1hblwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkRpZCB5b3Ugc2VlIHRoYXQgVG9ueSBTdGFyayBpcyBJcm9uIE1hbj8gTmV3cyB0byBtZSFcIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wNy0wN1QxMjowNjowMC4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDEyOjA2OjAwLjAwMFpcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi0wMDAxLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTNcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiMmZiYzZkN2ItNjk2MS00MGMwLWFjZjQtZTE1ZThjYjAzMmUxXCIsXHJcbiAgICAgICAgYmlzdGVjaF9kaXJlY3Rpb246IHRydWUsXHJcbiAgICAgICAgc3ViamVjdDogXCJUb255IFN0YXJrIGlzIG9idmlvdXNseSBJcm9uIE1hblwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkRpZCB5b3Uga25vdyBUb255IFN0YXJrIGlzIElyb24gTWFuPyBTdXBlciBvYnZpb3VzIHRvIG1lIVwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDEzOjE2OjAwLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMTM6MTY6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTAwMDEtNDBjMC1hY3NzLWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIwZWE5ZWU5MS1lZGMwLTRkYzItODk4ZC0xZTI4YmJhZmVkZTVcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbnZvaWNlOiAkMTAwLDAwMCwwMDBcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZWxsbyBCcnVjZSwgeW91IGhhdmUgY2F1c2VkIGNoYW9zIGluIHRoZSBjaXR5LiBJIHdpbGwgYmUgaW52b2ljaW5nIHlvdSBmb3IgdGhlIGRhbWFuZ2UgY2F1c2VkLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDE0OjA2OjMxLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMTQ6MDY6MzEuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTBjYzEtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI1YTU3MDBiMi0xYTdmLTRiMGYtYjViYi1kNDIyMjM3YzVhMDNcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJXaGlwbGFzaCBuZWVkIGEgbmV3IHNlcnZlci5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZWxsbyBUb255LCB3b3VsZCB5b3UgYmUgYWJsZSB0byBnZXQgV2hpcGxhc2ggYSBuZXcgc2VydmVyPyBIaXMgb2xkIHdhcyB3YXMgc2V0IG9uIGZpcmUuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDgtMDFUMTQ6MDY6MzEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOC0wMVQxNDowNjozMS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItMDExMS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjc3YzYxMmMyLTYxNzAtNGEzMC04MGI1LWJkNWVlM2E5YmYxNlwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgXCJUaG9yIGlzIGNhdXNpbmcgY2hhb3Mgb24gRWFydGguIFdlIG5lZWQgdG8gZ2V0IHJpZCBvZiBoaW0hIEkgaG9wZSB3ZSBuZXZlciBzZWUgaGlzIGJyb3RoZXIgTG9raSBlaXRoZXIuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDktMDJUMTE6MDk6MzcuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0wMlQxMTowOTozNy4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItMzMwMS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjRmNGVlMzIwLTlhNTAtNDM4ZS1iZjI0LWZmZDc4NmFmYzM5N1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkltIGdvaW5nIHRvIG5lZWQgYSBuZXcgc3VpdCwgY2FuIHlvdSBtYWtlIG1lIG9uZT8gT2ggbmV2ZXJtaW5kLCB5b3UgYXJlbid0IGJvcm4geWV0LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTA3VDExOjA5OjM3LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMDdUMTE6MDk6MzcuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTQ0NDQtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIxYjI2Yjk0ZC03MzdiLTQ1MWItYjg5ZC03MjViZDI1ZmYwMmVcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogdHJ1ZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJIZWxsbywgY2FuIEkgYmVjb21lIHBhcnQgb2YgeW91ciBBdmVuZ2VycyB0ZWFtPyBJIGNhbiBmaXggeW91ciBzZXJ2ZXJzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTE0VDEwOjEwOjM3LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMTRUMTA6MTA6MzcuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTU1NTUtNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzZDZjNzQxMS0xNjIyLTQ4ZjMtYmQwYi01MDlkNmEzOWE1NjJcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgIFwiQS5JLk0gZm9yIGJldHRlciBiYW5kd2l0aC4gV2UgY2FuIG9mZmVyIHlvdSBhIG11Y2ggYmV0dGVyIGRlYWwgb24gYmFuZHdpdGggd2l0aCBtdWNoIGZhc3RlciBkb3dubG9hZCBzcGVlZHMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDktMjFUMTE6MDk6MzcuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wOS0yMVQxMTowOTozNy4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNjY2Ni00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImQ0MzdkZGUwLWM3OWQtNDFjNi1iNzE5LWUyMzc4MjY5ZGM3YlwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hbGVraXRoIGlzIGNhdXNpbmcgYWxvdCBvZiBjaGFvcyB3aXRoIHRoZSBzZXJ2ZXJzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA5LTI4VDExOjIzOjM3LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDktMjhUMTE6MjM6MzcuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTc3NzctNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI1MDk5MDkxMy04ZWNmLTRkNmYtYjgwNi1iMDEyNzhjNjgzNjlcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQnVja3kgaXMgd29ya2luZyBvbiBzZXJ2ZXJzIHdpdGggSHlkcmEuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDJUMTE6MDk6MzcuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMC0wMlQxMTowOTozNy4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItODg4OC00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjNmOWRmNmVmLTQzYWUtNDRkYS1iM2FhLTY4NzZjNmU2ODY1N1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlJvbmFuIGhhcyBnb3QgdGhlIG1vc3QgcG93ZXJmdWwgc2VydmVyIGluIHRoZSBnYWxheHkuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDNUMTA6MzQ6MzcuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMC0wM1QxMDozNDozNy4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItOTk5OS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImU0MWYwYzhjLTEwOGUtNGYzZS05NjRjLTI3MzM2MTQyNWY0OFwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJVbHRyb24gaXMgd29ya2luZyB3aXRoIFdhbmRhIGFuZCBQaWV0cm8gb24gc29tZSBuZXcgc2VydmVycy5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wNVQxMDoyMjoxMi4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTEwLTA1VDEwOjIyOjEyLjAwMFpcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi04ODk5LTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiZTQxZjBjOGMtMTA4ZS00ZjNlLTk2NGMtMjczMzYxNDI1ZjQ4XCIsXHJcbiAgICAgICAgYmlzdGVjaF9kaXJlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIldhbmRhIGFuZCBQaWV0cm8gYXJlIG5vdyB3b3JraW5nIG9uIG91ciBzZXJ2ZXJzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA1VDExOjExOjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMTAtMDVUMTE6MTE6MTEuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTc3OTktNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI1ODVkNDViYy0zNGJiLTQ1MzctOWVmNy1lZDY2ZDY5ZTU0Y2JcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogdHJ1ZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJJIGNhbid0IHdhaXQgdG8gZ2V0IG91dCBvZiBteSBob3VzZSwgSSBuZWVkIHRvIGZpeCBzb21lIHNlcnZlcnMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDVUMTQ6MTQ6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMC0wNVQxNDoxNDoxMS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNjY5OS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImU1MzY3NTU5LTM2ZjAtNDQ5NC04N2JkLTZjYjgyNDljOGQyY1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkJ1Y2t5IGlzIHdvcmtpbmcgb24gb3VyIHNlcnZlcnMgbm93LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA2VDExOjE0OjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMTAtMDZUMTE6MTQ6MTEuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTU1OTktNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCJjMDgzYWQzNC02OWIyLTQ2MDMtOTM1OC01MjJlNTZiM2RhMjlcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiRG9ybWFtbXUgbG92ZXMgZGFyayBtb2RlLCBwbGVhc2UgY2FuIHdlIGdldCBzb21lIHN1cHBvcnQgZm9yIHRoYXQ/XCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTEtMDZUMTE6MTM6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMS0wNlQxMToxMzoxMS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNDk0OS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjc3ZTRhN2E0LTcwMzctNDFlZC04ZThmLThhMjE4ZmFmYjlhNFwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkVnbyBpcyB0cnlpbmcgdG8gdGFrZSBvdmVyIG91ciBzZXJ2ZXJzLiBXaGF0IGNhbiB3ZSBkbyB0byBwcmV2ZW50IGhpbSBmcm9tIGRvaW5nIHRoaXM/XCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTEtMDhUMTM6MTE6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMS0wOFQxMzoxMToxMS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNDQ5OS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcImFhMTMxM2RmLTA1OTAtNDZhZS1hYjlhLTYxYzdkMWExN2IwNlwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiSW4gcmVmZXJlbmNlIHRvOiBURVNULTEyM1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkkgaGFkIGEgbmljZSB0aW1lIGF0IEhvbWVjb21pbmcsIEkgZml4ZWQgYSBmZXcgc2VydmVycyB3aGlsZSBJIHdhcyB0aGVyZS5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMS0xMFQxMjoxMToxNS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTExLTEwVDEyOjExOjE1LjAwMFpcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi0zMzk5LTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiXCIsXHJcbiAgICAgICAgYmlzdGVjaF9kaXJlY3Rpb246IHRydWUsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTEtMTRUMTU6MTI6MTUuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0xMS0xNFQxNToxMjoxNS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNDQxMS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjg2NGU0ZjZmLWZhYzYtNDViMS1iNzIwLWI1MjE1MzI1OWZlM1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJXYWthbmRhIGhhcyB0aGUgYmVzdCBWaWJyYW5pdW0gc2VydmVycywgZ2V0IHlvdXJzIGhlcmUgbm93LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTExLTE0VDE4OjEyOjE1LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMTEtMTRUMTg6MTI6MTUuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTQ0MjItNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCI4NjRlNGY2Zi1mYWM2LTQ1YjEtYjcyMC1iNTIxNTMyNTlmZTNcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogdHJ1ZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTaHVyaSB3aWxsIGJlIGFibGUgdG8gZml4IHlvdXIgc2VydmVyLCBubyBwcm9ibGVtcy5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMS0xNVQxNToxMjoxNS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTExLTE1VDE1OjEyOjE1LjAwMFpcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi00NDMzLTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiM2I1YjE4NDAtYzk3OC00NzZlLTg2OTctMTQ5YjE2NTczZjgxXCIsXHJcbiAgICAgICAgYmlzdGVjaF9kaXJlY3Rpb246IHRydWUsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhhbm9zIGhhcyBnb3QgYWxsIHRoZSBzdG9uZXMuIFRoaXMgd2lsbCBiZSBxdWl0ZSBjYXRhc3Ryb3BoaWMuXCIsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjEtMTEtMTVUMTM6MTI6MTUuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMS0xMS0xNVQxMzoxMjoxNS4wMDBaXCIsXHJcbiAgICAgICAgX2NyZWF0ZWRieV92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXBoZW5zdHJhbmdlLmNvbnRhY3RpZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCIyZmJoZGZkN2ItNDQ1NS00MGMwLWFjZjQtZTE1ZThlcjAzMmUxXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBcIjNiNWIxODQwLWM5NzgtNDc2ZS04Njk3LTE0OWIxNjU3M2Y4MVwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGlyZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICBzdWJqZWN0OiBcIkluIHJlZmVyZW5jZSB0bzogVEVTVC0xMjNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGFub3MgaGFzIHdpcGVkIG91dCBoYWxmIG9mIHRoZSBpbnRlcm5ldC5cIixcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMS0xMS0xN1QxMToxMToxNS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIxLTExLTE3VDExOjExOjE1LjAwMFpcIixcclxuICAgICAgICBfY3JlYXRlZGJ5X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcIjJmYmhkZmQ3Yi00NDY2LTQwYzAtYWNmNC1lMTVlOGVyMDMyZTFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IFwiZWVkNTY5OWMtNDM5NS00ODllLTg1M2YtOWU3YTZkNWVhMGVhXCIsXHJcbiAgICAgICAgYmlzdGVjaF9kaXJlY3Rpb246IHRydWUsXHJcbiAgICAgICAgc3ViamVjdDogXCJJbiByZWZlcmVuY2UgdG86IFRFU1QtMTIzXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHNlcnZlciBpcyBwZXJmb3JtaW5nIGF0IHF1YW50dW0gc3BlZWRzLlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIxLTEyLTExVDE0OjEzOjE1LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjEtMTItMTFUMTQ6MTM6MTUuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiMmZiaGRmZDdiLTQ0NzctNDBjMC1hY2Y0LWUxNWU4ZXIwMzJlMVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogXCIzYjViMTg0MC1jOTc4LTQ3NmUtODY5Ny0xNDliMTY1NzNmODFcIixcclxuICAgICAgICBiaXN0ZWNoX2RpcmVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgc3ViamVjdDogXCJUaW1lIHRvIGNoYW5nZSBiYWNrIHRvIEJhbm5lciwgSHVsay5cIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgc3VucyBnZXR0aW5nIHJlYWwgbG93LlwiLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIxLTEyLTE1VDE0OjExOjE1LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjEtMTItMTVUMTQ6MTE6MTUuMDAwWlwiLFxyXG4gICAgICAgIF9jcmVhdGVkYnlfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICB9LFxyXG5dO1xyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgdGhlIGBiaXN0ZWNoX3VyZ2VuY3lgIG9mIGFuIGBpbmNpZGVudGAgKi9cclxuZXhwb3J0IGVudW0gQ2FzZVVyZ2VuY3kge1xyXG4gICAgLyoqIExvdyAqL1xyXG4gICAgTG93ID0gMSxcclxuXHJcbiAgICAvKiogTWVkaXVtICovXHJcbiAgICBNZWRpdW0gPSAyLFxyXG5cclxuICAgIC8qKiBIaWdoICovXHJcbiAgICBIaWdoID0gMyxcclxufVxyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgdGhlIGBzZXZlcml0eWNvZGVgIG9mIGFuIGBpbmNpZGVudGAgKi9cclxuZXhwb3J0IGVudW0gQ2FzZVNldmVyaXR5Q29kZSB7XHJcbiAgICAvKiogTG93ICovXHJcbiAgICBMb3cgPSAxLFxyXG5cclxuICAgIC8qKiBNZWRpdW0gKi9cclxuICAgIE1lZGl1bSA9IDIsXHJcblxyXG4gICAgLyoqIEhpZ2ggKi9cclxuICAgIEhpZ2ggPSAzLFxyXG59XHJcbiIsIi8qKiBFbnVtZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIENhc2Ugb3JpZ2luICovXHJcbmV4cG9ydCBlbnVtIENhc2VPcmlnaW5Db2RlIHtcclxuICAgIC8qKiBQaG9uZSBPcmlnaW4gKi9cclxuICAgIFBob25lID0gMSxcclxuXHJcbiAgICAvKiogRW1haWwgT3JpZ2luICovXHJcbiAgICBFbWFpbCA9IDIsXHJcblxyXG4gICAgLyoqIFBvcnRhbCBPcmlnaW4gKi9cclxuICAgIFBvcnRhbCA9IDMsXHJcblxyXG4gICAgLyoqIEV2ZW50IE9yaWdpbiAqL1xyXG4gICAgRXZlbnQgPSA0LFxyXG5cclxuICAgIC8qKiBPdGhlciBPcmlnaW4gKi9cclxuICAgIE90aGVyID0gNVxyXG59XHJcbiIsImltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VUeXBlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9JbmNpZGVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVByaW9yaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUHJpb3JpdHlDb2RlXCI7XHJcbmltcG9ydCB7IE1vY2tBY2NvdW50RGF0YSB9IGZyb20gXCIuL01vY2tBY2NvdW50RGF0YVwiO1xyXG5pbXBvcnQgeyBNb2NrQ29udGFjdERhdGEgfSBmcm9tIFwiLi9Nb2NrQ29udGFjdERhdGFcIjtcclxuaW1wb3J0IHsgQ2FzZVVyZ2VuY3kgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVVyZ2VuY3lcIjtcclxuaW1wb3J0IHsgQ2FzZVNldmVyaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlU2V2ZXJpdHlDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VPcmlnaW5Db2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VPcmlnaW5Db2RlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9JbmNpZGVudEZvclJldHJpZXZhbFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1vY2tJbmNpZGVudERhdGE6IEluY2lkZW50Rm9yUmV0cmlldmFsW10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCIyZmJjNmQ3Yi02OTYxLTQwYzAtYWNmNC1lMTVlOGNiMDMyZTFcIixcclxuICAgICAgICB0aXRsZTogXCJJcm9uIE1hblwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiUG9ydGFsXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuSGlnaCxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTWVkaXVtLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDA4LTA5LTA3VDA3OjQ4OjAwLjAwMFpcIixcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLTFSME4tTTROLTFcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5JbmNpZGVudCxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGUuT3BlbixcclxuICAgICAgICBwcmlvcml0eWNvZGU6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAyXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiMGVhOWVlOTEtZWRjMC00ZGMyLTg5OGQtMWUyOGJiYWZlZGU1XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiVGhlIEluY3JlZGlibGUgSHVsa1wiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiUG9ydGFsXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuTG93LFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMDgtMDYtMTNUMTY6NDU6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuYnJ1Y2VCYW5uZXIuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50b255U3RhcmsuY29udGFjdGlkLFxyXG4gICAgICAgIGNhc2V0eXBlY29kZTogQ2FzZVR5cGUuSW5jaWRlbnQsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgM1wiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGUuT3BlbixcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLUhVTEstMVwiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiNWE1NzAwYjItMWE3Zi00YjBmLWI1YmItZDQyMjIzN2M1YTAzXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiSXJvbiBNYW4gMlwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiRW1haWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5Mb3csXHJcbiAgICAgICAgc2V2ZXJpdHljb2RlOiBDYXNlU2V2ZXJpdHlDb2RlLk1lZGl1bSxcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAxMC0wNS0wN1QxOToxMjowMC4wMDBaXCIsXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50b255U3RhcmsuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZVtcIlN1cHBvcnQgUmVxdWVzdFwiXSxcclxuICAgICAgICBwcmlvcml0eWNvZGU6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAzXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtMVIwTi1NNE4tMlwiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiNzdjNjEyYzItNjE3MC00YTMwLTgwYjUtYmQ1ZWUzYTliZjE2XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiVGhvclwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiRW1haWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5IaWdoLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTEtMDUtMDZUMTA6MDI6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudGhvci5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBjYXNldHlwZWNvZGU6IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0sXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgMlwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtVEgwUi0xXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCI0ZjRlZTMyMC05YTUwLTQzOGUtYmYyNC1mZmQ3ODZhZmMzOTdcIixcclxuICAgICAgICB0aXRsZTogXCJDYXB0YWluIEFtZXJpY2FcIixcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgIGNhc2VvcmlnaW5jb2RlOiBDYXNlT3JpZ2luQ29kZVtcIkVtYWlsXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuTG93LFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5Mb3csXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTEtMDctMjJUMTQ6NTM6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5Qcm9ibGVtLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlW1wiT24gSG9sZFwiXSxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLUYxUjVULTRWM05HM1JcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbmNpZGVudGlkOiBcIjFiMjZiOTRkLTczN2ItNDUxYi1iODlkLTcyNWJkMjVmZjAyZVwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkF2ZW5nZXJzIEFzc2VtYmxlXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJQb3J0YWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5IaWdoLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTItMDUtMDRUMTg6NTE6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEubmlja0Z1cnkuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5Qcm9ibGVtLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4sXHJcbiAgICAgICAgdGlja2V0bnVtYmVyOiBcIkNBUy00NTUzTUJMM1wiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiM2Q2Yzc0MTEtMTYyMi00OGYzLWJkMGItNTA5ZDZhMzlhNTYyXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiSXJvbiBNYW4gM1wiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiUG9ydGFsXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuSGlnaCxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTWVkaXVtLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDEzLTA2LTAzVDA5OjE5OjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5Qcm9ibGVtLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4sXHJcbiAgICAgICAgdGlja2V0bnVtYmVyOiBcIkNBUy0xUjBOLU00Ti0zXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCJkNDM3ZGRlMC1jNzlkLTQxYzYtYjcxOS1lMjM3ODI2OWRjN2JcIixcclxuICAgICAgICB0aXRsZTogXCJUaG9yOiBUaGUgRGFyayBXb3JsZFwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiUGhvbmVcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5Mb3csXHJcbiAgICAgICAgc2V2ZXJpdHljb2RlOiBDYXNlU2V2ZXJpdHlDb2RlLk1lZGl1bSxcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAxMy0xMS0wOFQxNjozNDowMC4wMDBaXCIsXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50aG9yLmNvbnRhY3RpZCxcclxuICAgICAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNhc2V0eXBlY29kZTogQ2FzZVR5cGVbXCJTdXBwb3J0IFJlcXVlc3RcIl0sXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgM1wiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLUQ0UkstVzBSTERcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbmNpZGVudGlkOiBcIjUwOTkwOTEzLThlY2YtNGQ2Zi1iODA2LWIwMTI3OGM2ODM2OVwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkNhcHRhaW4gQW1lcmljYTogVGhlIFdpbnRlciBTb2xkaWVyXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJQb3J0YWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5IaWdoLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTQtMDQtMDRUMDY6NDk6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGV2ZVJvZ2Vycy5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5DaGFuZ2UsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgMlwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLTUwTEQxM1JcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbmNpZGVudGlkOiBcIjNmOWRmNmVmLTQzYWUtNDRkYS1iM2FhLTY4NzZjNmU2ODY1N1wiLFxyXG4gICAgICAgIHRpdGxlOiBcIkd1YXJkaWFucyBvZiB0aGUgR2FsYXh5XCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJQaG9uZVwiXSxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IENhc2VVcmdlbmN5LkxvdyxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTG93LFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDE0LTA4LTAxVDE2OjM3OjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUXVpbGwuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5Qcm9ibGVtLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDRcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4sXHJcbiAgICAgICAgdGlja2V0bnVtYmVyOiBcIkNBUy1WMExVTTMtMVwiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiZTQxZjBjOGMtMTA4ZS00ZjNlLTk2NGMtMjczMzYxNDI1ZjQ4XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiQXZlbmdlcnM6IEFnZSBvZiBVbHRyb25cIixcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgIGNhc2VvcmlnaW5jb2RlOiBDYXNlT3JpZ2luQ29kZVtcIkV2ZW50XCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuSGlnaCxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuSGlnaCxcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAxNS0wNS0wMVQxNDo1MTowMC4wMDBaXCIsXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBjYXNldHlwZWNvZGU6IENhc2VUeXBlLkluY2lkZW50LFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDFcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLlJlc29sdmVkLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtNEczLTBGLVVMVFIwTlwiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiNTg1ZDQ1YmMtMzRiYi00NTM3LTllZjctZWQ2NmQ2OWU1NGNiXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiQW50LU1hblwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiRW1haWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5IaWdoLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTUtMDctMTdUMTI6MDM6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc2NvdHRMYW5nLmNvbnRhY3RpZCxcclxuICAgICAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNhc2V0eXBlY29kZTogQ2FzZVR5cGUuSW5jaWRlbnQsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgMlwiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtNE5ULU00Ti0xXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCJlNTM2NzU1OS0zNmYwLTQ0OTQtODdiZC02Y2I4MjQ5YzhkMmNcIixcclxuICAgICAgICB0aXRsZTogXCJDYXB0YWluIEFtZXJpY2E6IENpdmlsIFdhclwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiUG9ydGFsXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfdXJnZW5jeTogQ2FzZVVyZ2VuY3kuTG93LFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTYtMDUtMDZUMTc6Mzk6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGV2ZVJvZ2Vycy5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5JbmNpZGVudCxcclxuICAgICAgICBwcmlvcml0eWNvZGU6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAzXCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IEluY2lkZW50U3RhdHVzQ29kZS5PcGVuLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtQzFWMUwtVzRSXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCJjMDgzYWQzNC02OWIyLTQ2MDMtOTM1OC01MjJlNTZiM2RhMjlcIixcclxuICAgICAgICB0aXRsZTogXCJEb2N0b3IgU3RyYW5nZVwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgY2FzZW9yaWdpbmNvZGU6IENhc2VPcmlnaW5Db2RlW1wiRW1haWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5NZWRpdW0sXHJcbiAgICAgICAgc2V2ZXJpdHljb2RlOiBDYXNlU2V2ZXJpdHlDb2RlLk1lZGl1bSxcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAxNi0xMS0wNFQxNzozOTowMC4wMDBaXCIsXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5zdGVwaGVuc3RyYW5nZS5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBjYXNldHlwZWNvZGU6IENhc2VUeXBlLkluY2lkZW50LFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlW1wiT24gSG9sZFwiXSxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLUs0TTRSLVQ0SlwiLFxyXG4gICAgICAgIGJpc3RlY2hfcmVzb2x1dGlvbmRhdGU6IG51bGwsXHJcbiAgICAgICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBpbmNpZGVudF9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGluY2lkZW50aWQ6IFwiNzdlNGE3YTQtNzAzNy00MWVkLThlOGYtOGEyMThmYWZiOWE0XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiR3VhcmRpYW5zIG9mIHRoZSBHYWxheHkgVm9sLiAyXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJFbWFpbFwiXSxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IENhc2VVcmdlbmN5Lk1lZGl1bSxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTWVkaXVtLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDE3LTA2LTA1VDExOjQ4OjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUXVpbGwuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5Qcm9ibGVtLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLkNsb3NlZCxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLVYwTFVNMy0yXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCJhYTEzMTNkZi0wNTkwLTQ2YWUtYWI5YS02MWM3ZDFhMTdiMDZcIixcclxuICAgICAgICB0aXRsZTogXCJTcGlkZXItTWFuOiBIb21lY29taW5nXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJFbWFpbFwiXSxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IENhc2VVcmdlbmN5LkxvdyxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTWVkaXVtLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDE3LTA3LTA3VDEyOjIwOjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUGFya2VyLmNvbnRhY3RpZCxcclxuICAgICAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNhc2V0eXBlY29kZTogQ2FzZVR5cGUuSW5jaWRlbnQsXHJcbiAgICAgICAgcHJpb3JpdHljb2RlOiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgM1wiXSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLUgwTTNDME0xTkdcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbmNpZGVudGlkOiBcImMzNDg5NTVmLWFkNDgtNDNjMy04OGFiLTQyM2ZmMmJiOGUyOFwiLFxyXG4gICAgICAgIHRpdGxlOiBcIlRob3I6IFJhZ25hcm9rXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJQb3J0YWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5Mb3csXHJcbiAgICAgICAgc2V2ZXJpdHljb2RlOiBDYXNlU2V2ZXJpdHlDb2RlLkxvdyxcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAxNy0xMS0wM1QwOTo1NDowMC4wMDBaXCIsXHJcbiAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50aG9yLmNvbnRhY3RpZCxcclxuICAgICAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudGhvci5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZS5JbmNpZGVudCxcclxuICAgICAgICBwcmlvcml0eWNvZGU6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSA0XCJdLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtUjRHTjRSMEtcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCI4NjRlNGY2Zi1mYWM2LTQ1YjEtYjcyMC1iNTIxNTMyNTlmZTNcIixcclxuICAgICAgICB0aXRsZTogXCJCbGFjayBQYW50aGVyXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICBjYXNlb3JpZ2luY29kZTogQ2FzZU9yaWdpbkNvZGVbXCJQb3J0YWxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF91cmdlbmN5OiBDYXNlVXJnZW5jeS5IaWdoLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogQ2FzZVNldmVyaXR5Q29kZS5IaWdoLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDE4LTAyLTE2VDE1OjI5OjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRjaGFsbGEuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50Y2hhbGxhLmNvbnRhY3RpZCxcclxuICAgICAgICBjYXNldHlwZWNvZGU6IENhc2VUeXBlLkluY2lkZW50LFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDFcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLkNsb3NlZCxcclxuICAgICAgICB0aWNrZXRudW1iZXI6IFwiQ0FTLVc0SzRORDRcIixcclxuICAgICAgICBiaXN0ZWNoX3Jlc29sdXRpb25kYXRlOiBudWxsLFxyXG4gICAgICAgIGluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50czogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlczogW10sXHJcbiAgICAgICAgaW5jaWRlbnRfYmlzdGVjaF9wb3J0YWxlbWFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbmNpZGVudGlkOiBcIjNiNWIxODQwLWM5NzgtNDc2ZS04Njk3LTE0OWIxNjU3M2Y4MVwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkF2ZW5nZXJzOiBJbmZpbml0eSBXYXJcIixcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgIGNhc2VvcmlnaW5jb2RlOiBDYXNlT3JpZ2luQ29kZVtcIlBvcnRhbFwiXSxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IENhc2VVcmdlbmN5LkhpZ2gsXHJcbiAgICAgICAgc2V2ZXJpdHljb2RlOiBDYXNlU2V2ZXJpdHlDb2RlLkhpZ2gsXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMTgtMDQtMjdUMTI6MzM6MDAuMDAwWlwiLFxyXG4gICAgICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlOiBNb2NrQ29udGFjdERhdGEubmlja0Z1cnkuY29udGFjdGlkLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDFcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlW1wiSW4gUHJvZ3Jlc3NcIl0sXHJcbiAgICAgICAgdGlja2V0bnVtYmVyOiBcIkNBUy1HNE5UTDNUXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbnVsbCxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW5jaWRlbnRpZDogXCJlZWQ1Njk5Yy00Mzk1LTQ4OWUtODUzZi05ZTdhNmQ1ZWEwZWFcIixcclxuICAgICAgICB0aXRsZTogXCJBbnQtTWFuIGFuZCB0aGUgV2FzcFwiLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiTWFydmVsIFJlZmVyZW5jZVwiLFxyXG4gICAgICAgIGNhc2VvcmlnaW5jb2RlOiBDYXNlT3JpZ2luQ29kZVtcIlBvcnRhbFwiXSxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IENhc2VVcmdlbmN5Lk1lZGl1bSxcclxuICAgICAgICBzZXZlcml0eWNvZGU6IENhc2VTZXZlcml0eUNvZGUuTWVkaXVtLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDE4LTA3LTA2VDE5OjE4OjAwLjAwMFpcIixcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnNjb3R0TGFuZy5jb250YWN0aWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnNjb3R0TGFuZy5jb250YWN0aWQsXHJcbiAgICAgICAgY2FzZXR5cGVjb2RlOiBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdLFxyXG4gICAgICAgIHByaW9yaXR5Y29kZTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlLlJlc29sdmVkLFxyXG4gICAgICAgIHRpY2tldG51bWJlcjogXCJDQVMtVFRIMy1XNFNQXCIsXHJcbiAgICAgICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICBpbmNpZGVudF9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXM6IFtdLFxyXG4gICAgICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgIH0sXHJcbl07XHJcbiIsImltcG9ydCB7IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZyB9IGZyb20gXCIuLi9FbnVtcy9Qcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmdcIjtcclxuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gXCIuLi9Nb2RlbHMvUHJvZHVjdFwiO1xyXG5cclxuLyoqIE1vY2sgZGF0YSBmb3IgUHJvZHVjdHMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tQcm9kdWN0RGF0YTogUHJvZHVjdFtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIHByb2R1Y3RpZDogXCJhNGIxMzQ4Yi1lMTMyLTRiMWMtODI3Yy1kZWQxMzcxMDRlZGJcIixcclxuICAgICAgICBiaXN0ZWNoX3RpbGV0YXJnZXR1cmw6IFwiaHR0cHM6Ly9hY2NvdW50Lm1lcmFraS5jb20vbG9naW4vZGFzaGJvYXJkX2xvZ2luXCIsXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWx0aWxlbWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLk1lcmFraSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgcHJvZHVjdGlkOiBcIjA2NGQ1YWI0LTM5MWYtNDA0My04Y2JkLWZmNjYyZjlhODM0YlwiLFxyXG4gICAgICAgIGJpc3RlY2hfdGlsZXRhcmdldHVybDogXCJodHRwczovL2xvZ2luLm1pbWVjYXN0LmNvbS91L2xvZ2luLz9ndGE9YXBwcyMvbG9naW5cIixcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbHRpbGVtYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTWltZWNhc3QsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb2R1Y3RpZDogXCIxNDdkMTQ4Mi1hOGM4LTQwYWYtYTg1MS01YThkMzQxYWI4NTdcIixcclxuICAgICAgICBiaXN0ZWNoX3RpbGV0YXJnZXR1cmw6IFwiaHR0cHM6Ly91dG0uYmlzdGVjaC5jby51ay9sb2dpbj9yZWRpcj0lMkZuZ1wiLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsdGlsZW1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5Gb3J0aUdhdGUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHByb2R1Y3RpZDogXCIwODJjOWNhZS0wMWZiLTRjNTYtOTI0ZC02NTE5ODQxZjMzYWNcIixcclxuICAgICAgICBiaXN0ZWNoX3RpbGV0YXJnZXR1cmw6IFwiaHR0cHM6Ly9jc3AuYmlzdGVjaC5jby51a1wiLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsdGlsZW1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5NaWNyb3NvZnRMaWNlbnNpbmcsXHJcbiAgICB9LFxyXG5dO1xyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgdGhlIHN0YXR1cyByZWFzb25zIGZvciBhbiBPcmRlciAqL1xyXG5leHBvcnQgZW51bSBPcmRlclN0YXRlQ29kZSB7XHJcbiAgICAvKiogQWN0aXZlICovXHJcbiAgICBBY3RpdmUgPSAwLFxyXG5cclxuICAgIC8qKiBTdWJtaXR0ZWQgKi9cclxuICAgIFN1Ym1pdHRlZCA9IDEsXHJcblxyXG4gICAgLyoqIENhbmNlbGVkICovXHJcbiAgICBDYW5jZWxlZCA9IDIsXHJcblxyXG4gICAgLyoqIEZ1bGZpbGxlZCAqL1xyXG4gICAgRnVsZmlsbGVkID0gMyxcclxuXHJcbiAgICAvKiogSW52b2ljZWQgKi9cclxuICAgIEludm9pY2VkID0gNCxcclxufVxyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgYW4gT3JkZXIgU3RhdHVzIENvZGUuICovXHJcbmV4cG9ydCBlbnVtIE9yZGVyU3RhdHVzQ29kZSB7XHJcbiAgICAvKiogT3JkZXIgaXMgTmV3IChBY3RpdmUgc3RhdGVjb2RlKSAqL1xyXG4gICAgTmV3ID0gMSxcclxuXHJcbiAgICAvKiogT3JkZXIgaXMgUGVuZGluZyAoQWN0aXZlIHN0YXRlY29kZSkgKi9cclxuICAgIFBlbmRpbmcgPSAyLFxyXG5cclxuICAgIC8qKiBPcmRlciBpcyBPbiBIb2xkICAoQWN0aXZlIHN0YXRlY29kZSkgKi9cclxuICAgIFwiT24gSG9sZFwiID0gNjkwXzk3MF8wMDAsXHJcblxyXG4gICAgLyoqIE9yZGVyIGhhcyBiZWVuIFNpZ25lZCAoQWN0aXZlIHN0YXRlY29kZSkgICovXHJcbiAgICBTaWduZWQgPSA2OTBfOTcwXzAwMSxcclxuXHJcbiAgICAvKiogT3JkZXIgaXMgUHJvY2Vzc2luZyAoQWN0aXZlIHN0YXRlY29kZSkgICovXHJcbiAgICBQcm9jZXNzaW5nID0gNjkwXzk3MF8wMDIsXHJcblxyXG4gICAgLyoqIE9yZGVyIGlzIFBlbmRpbmcgQ29udHJhY3QgUmV2aWV3IChBY3RpdmUgc3RhdGVjb2RlKSAgKi9cclxuICAgIFwiUGVuZGluZyBDb250cmFjdCBSZXZpZXdcIiA9IDY5MF85NzBfMDA0LFxyXG5cclxuICAgIC8qKiBPcmRlciBpcyBJbiBQcm9ncmVzcyAoQWN0aXZlIHN0YXRlY29kZSkgICovXHJcbiAgICBcIkluIFByb2dyZXNzXCIgPSA2OTBfOTcwXzAwNSxcclxuXHJcbiAgICAvKiogT3JkZXIgaXMgUHJvY2Vzc2luZyBDb21wbGV0ZSAoQWN0aXZlIHN0YXRlY29kZSkgICovXHJcbiAgICBcIlByb2Nlc3NpbmcgQ29tcGxldGVcIiA9IDY5MF85NzBfMDA2LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3JkZXIgaXMgSW4gUHJvZ3Jlc3MgKFN1Ym1pdHRlZCBzdGF0ZWNvZGUpXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIChzdG9jaykgU3RhdHVzIFJlYXNvbiBpcyBub3QgdXNlZC5cclxuICAgICAqL1xyXG4gICAgXCJJbiBQcm9ncmVzcypcIiA9IDMsXHJcblxyXG4gICAgLyoqIE9yZGVyIGlzIENvbXBsZXRlIChGdWxmaWxsZWQgc3RhdGVjb2RlKSAqL1xyXG4gICAgQ29tcGxldGUgPSAxMDBfMDAxLFxyXG5cclxuICAgIC8qKiBPcmRlciBpcyBQYXJ0aWFsIChGdWxmaWxsZWQgc3RhdGVjb2RlKSAqL1xyXG4gICAgUGFydGlhbCA9IDEwMF8wMDIsXHJcblxyXG4gICAgLyoqIE9yZGVyIGlzIEludm9pY2VkIChGdWxmaWxsZWQgc3RhdGVjb2RlKSAqL1xyXG4gICAgSW52b2ljZWQgPSAxMDBfMDAzLFxyXG5cclxuICAgIC8qKiBPcmRlciBpcyBDYW5jZWxsZWQgKENhbmNlbGxlZCBzdGF0ZWNvZGUpICovXHJcbiAgICBDYW5jZWxsZWQgPSA2OTBfOTcwXzAwMyxcclxuXHJcbiAgICAvKiogT3JkZXIgaXMgUmV2aXNlZCAoQ2FuY2VsbGVkIHN0YXRlY29kZSkgKi9cclxuICAgIFJldmlzZWQgPSAxMDBfMDA0LFxyXG5cclxuICAgIC8qKiBPcmRlciBpcyBDYW5jZWxsZWQgZHVlIHRvIE5vIE1vbmV5IChDYW5jZWxsZWQgc3RhdGVjb2RlKSAqL1xyXG4gICAgTm9Nb25leSA9IDQsXHJcbn1cclxuIiwiLyoqIFJlcHJlc2VudHMgYSBQREYgZmlsZSBpbiBCYXNlIDY0IGVuY29kaW5nLCB0aGlzIGlzIGhvdyBmaWxlcyBhcmUgc3RvcmVkIGluIER5bmFtaWNzIEFubm90YXRpb25zLiAqL1xyXG5leHBvcnQgY29uc3QgTW9ja0Jhc2U2NE9yZGVyRm9ybVBERjogc3RyaW5nID1cclxuICAgIFwiSlZCRVJpMHhMamNLQ2pRZ01DQnZZbW9LS0Vsa1pXNTBhWFI1S1FwbGJtUnZZbW9LTlNBd0lHOWlhZ29vUVdSdlltVXBDbVZ1Wkc5aWFnbzRJREFnYjJKcUNqdzhDaTlHYVd4MFpYSWdMMFpzWVhSbFJHVmpiMlJsQ2k5TVpXNW5kR2dnTmpnMk5qVUtMMHhsYm1kMGFERWdNekV5TWpNeUNpOVVlWEJsSUM5VGRISmxZVzBLUGo0S2MzUnlaV0Z0Q25pYzdMMEpZRlRWOVQ5KzduMzd2Rm5lVEdiTlpKa2hDUWtaWUVJQ2dTQ2FFUXhFVUVGQUNaUkFVSmFJQ3lBb3FOQklNUTJMVmxBQkZSZmEya0w5V2h6UVNyUlFFYWdyV05kcTYxbzNrSXBRNjhJWHlNei8zRGN6SVNpMjMrOGYrZkg3cGZlVHZQUHVlKy9lZDdkenp6bjMzRHN6UUFEQWkwU0Vobk5HblR0azFBWFAzd0wwYnlHQTNFZUhuRk16T090dFp5UFF4R3NBd2dkRFJnd2Z0VkFiZXdFSXRCWEkrVjhQR1hYUndPbVBMaHdENG9nNHdOVTNuVGQ2VkcyWDUvL3JJNEF6QndBWWs0ZVBpcGIvNWF5TDN3WWdlekdYaG92UE9iOXV4cXhyRHdPY3Z4WkFldi9TS3lmTnZQWG1PVGNBSGY0QVBqOTg2YlZ6UW5OZm5mOVRvQlB4ZlhUNTFKblRyaFRtNUU4R09nTGpLMHVtVFpvOUV3S2dZZmtNakc5TXUrSzZxZG05SG4wVDZDVXhnTmpleHNsWHp1dC8vZFcxQUtOdUJISzBzSEhLcE1tZi9ia0IwNUlyTUg1bEk5NndMM2IrRWE5WmZvV05WODZaTitTcDRDT1lGNmJwLytVVk15NmRkUDRIWi8wRDZDOUxBRUxicjV3MGI2Ym5NYlUveG44VzQ0ZXVuREpuMHBDdWw3MEs0bzdlZUgzMVZaT3VuTEwvZ2VlV0E5M3hHYllYbVRsajlweGtNVXdGK3Y1QkZuL20xVk5tdXBRRHp3Q3Q2NDdsLzRuWjFnckFqOWExWFRiUk1lQXJDS3JBOFBCWEF4NW01eiszdkhuNHlQaTJML1RuVkl5RjlTU1FBcDZWaHNSSUFQM2RJK01QWDY4LzEvNGtEVnMydTJNMHdJMWdtRGNvbnFOd0VYYnIrOG9TODQ0Z05KUGxJSUVxM1MxVjRDdURxYlB3TWt5bExsV2l1aXhTQnZGajZKbmNCZzAvd2pUZFdNTHpSNFZDRUlQUUVWbDZOWEVoc1NrTlpFT0lrR1FJMjBnc2twNWdOUVVQcllOeU0rTXFQRUtwVXRFM1lIVEhVa29YUTUxNS8wRzRBWStobWZ1WTVqRzhIbWllTWIwNEc4Ymo4U0VlMVhpTVkzSHdmSEVtUGd0bnJsa2E4U0dZbFRtTzVaVk1ZSDRQU005QUF4NFBzTEQ0SVR3Z1Y2V3VNZDBXRWFCdituMFB5QSthY1ZQUE1hNzVqbFM2OFppdVI3cjhWdmczRUtjbnYweS84d0k4bG1FZXRYZzJEOHpUU0llWGtWZGhtUmtQVW1ITWY1a1pQLzNjalArZ21iNGEweFhnZFF1R2cxZ21DNTd0TEF3Y1B5aG9YYXJ2elBDREtkNGx6OENDZjVjTys4SmdCL3pBeVBBSUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQjhmL0dZaFB3VlRnNE9ENFg0UGNEUndjSEJ3Y0hCd2NIUCtoRUllQklmdFRoemdLenphb0JnNE9EZzRPanY4cllEVGtFVUlnZ01Fd1dLMEFnWERBN3c2NzNlQUdRQnJJejgvSFIvNmVQZjA1Z1o3ZFBPQU85OHozQTE1aC9EUUk1QWU2WWJvQTJRdnV2U1drV3lEZ2NRZEl0NTdkd3FlaXlHSDI3OHhjZVR3bmlyTVhPRGc0T0RnNE9EZzZNUWgwS25TeTZuRDh2d2VjRXBFUzRPRGcrQUZBekFGRndBcUgxQ1Nvb0NRVG9JRUZxUVYwcExwSnJXQkRha1BhQm5hd0kzV0FBNmtCUnZJb1R2Z1pkWUVMYVJaa0pZK0FHOXhJUFNiMWdnZXBEM3pKdytBM2FRRDhlQ2NiQWtpRGtJMDBCK2xoeUlVZzBqeklUZjQzNUNNOURDR2toeUFNK1hpbkM0U1FGcGkwRU1KSWk2QUFhVmNveERqRkppMkJvdVEzMEEyNklpMkZZcVFSNkpiOEdycERLZEllSnUwSkVhUlI2STYwRE9sWDBBdDZJaTJIS05JS0tFUGEyNlI5b0ZmeVM2aUVDcVI5VGRvUGVpT3RnajVJKzBObDhwOXdoa2tIUUQra1owSVYwck9nUDlKcXBGOUFETTVBZWpZTVFEb1F6a1E2Q001Q2VnNVVKLzhCTlJCRE90aWtRMkFnMGxvWWhQUmNwQWRoS05RZ0hXYlM4MkF3MHZOaENOSUxvRFo1QUliRHVVaEh3RkNrRjhJd3BDUGhQS1NqNFB6azV6RGFwQmZCQlVndmh1Rkl4OEFJcEhVd01ya2Z4cHAwSEl4QytpT1Rqb2VMa05Zai9Rd213QmlrRTZFT2FZTkpKOEZZcEpmQXVPVGY0VklZajNTeVNhZEFQZEtwTUFIcE5KaVkzQWVOMElEME1waUVkRHBjZ3ZSeWsxNEJseVkvaFN0aEN0S3JURG9EcGlHZGFkSlowSmpjQzFlYmREWk1Sem9IcmtCNmpVbXZoU3VUZTJDdVNlZkJWVWl2Z3hsSXI0ZFpTRytBcTVNZnczeVRMb0RaU0g5czBpYTRCdW1OTURmNUVTdzA2VTlnSHRKRkpyMEpya1BhRERja1A0U2Z3bnlrTGJBQTZXS1RMb0VmSTExcTBtV3dNUGtCM0d6U1crQW5TSDhHaTVEZWF0TGxjRlB5YjdBQ2ZvcjBObWhCZXJ0Sjc0REZTRmZDa3VUN3NBcVdJbDBOTnlPOTA2UjN3UzFJNzBiNkhxeUJueUc5QjFZZ3ZkZWs5OEZ0U085SCtpNnNoZHVSL3R5a3Y0QlZTSDhKcTVFK2dQUWQrQlhjaWZUWEpsMEhkeU5kRDJ1US9nYnVTYjRORDhLOVNQL0xwQS9CZlVoL0MvY2ozUUEvVDc0RkQ1czBEcjlBdWhGK2lYU1RTUitCWHlYL0NvL0NyNUgrRHRZaGZReldJOTFzMGxaNE1Qa1hlTnlrVDhCRFNIOXYwaTN3VzZSYllVUHlUZmdEUEl6MFNZZ2ozUVlia1Q0Rm01QnVSL29HN0lCSGtPNkUzeUg5bzBtZmhzMUluMEg2WjNnV1dwRStCNDhqZlI2ZVFQb0NiRUc2QytucnNCdTJKbCtERjAzNkozZ1M2VXNtZlJtZVNyNEtyOEIycEsrYTlEWFlnZlIxMkluMHovREg1Q3VBK1NCOUU1NUIraGQ0RnVsZjRUbWtiOEh6eVpmaGJaTytBN3VRdm12UzkyQTMwdmZoVDhtWDRHOG0vUUJlUXZvaHZJejBJM2dGNmNmd2F2SlA4QW04aG5RUHZJNTByMGsvaFRlUTdrUDZJdndkL29MME0vZ3IwdjBtL1J6ZVFub0Ezazd1aG9Qd0R0Si93THRJdjREM2tQNFQza2Y2SmRKZDhCVjhnUFJyazM0REh5RTlaTkwvaG8rVEw4QmgrQVRwRWRpRDlDaDhpclROcEFuWWwzd2VraVlGbEtOZ1ROWTBBUVFLQWw3TElBanMreG9GUVVLQUJJQ1VoUUVVV1ZGa1BBUzhyV0VRYjBqc0d5VlR3SnNNR0pXQ1JOVlVXSkJrbFNYOTRTR3diNzZqN1ptZk1BOEtIQndjSEJ3Y0hCeWRHQkowS25EYmplTTBRMUlVU1FFT0RvNlRoNFg1R0FSVFRTbnRQZ1laQVRJQVVoYkdSNHFpS3JMS2ZBeXloa0c4MGNISGdIRmxTWll4cXVsallLa0ZDYSs0ajRHRGc0T0RnNE9ENDlSQWhrNEZicnR4bkdaSXFpcXB3TUhCY2ZMUWova1kydmN4U04vblkxQk5INE9xS3FBcXl2RStCam50WTVCUHZZOUJZajRHb2YySyt4ZzRPRGc0T0RnNC92UFF5VlpjdWUzR2NacUJVeDJaK3hnNE9INElXSFdSdVJaRURLb2c0a2tRQlVGUlVpNEVwQ3lNQVZYVlZFWFRCQmtVWGROVTBOUU9QZ2EycllGOWtBTC9RUlowbGxxVUJVWFM1RlBpWXhDUDh6SElKL1RpQzhEQndjSEJ3Y0hCMFluQmZRd2NIRDhrWkUyVE5lRGc0RGg1MkhRUnhOUStCaTNqWXhDLzQyUFFOTTJpcVJhTGdMZDFpMFVEaTZaQit5QlVRRlVWVlJWVVJRQkYwREdvaXN6am9NbW5SUHRKM01mQXdjSEJ3Y0hCOForT1RyYml5bTAzanRNTXhXSlJMTURCd1hIeXNETWZnNWoyTWJEUEhZaVNLS29JcHJtUXNuREd4NkF6SHdOUy9WcytCalhsWThDb3BvK0JwWllVVVQxVlBnYVJ1Um5hRlpGeXdqeTRudUxnNE9EZzRPRG8xT0ErQmc2T0h4S3FycXM2Y0hCd25Ed2N0bllmZytXRVBnWk4wd0EwaTY1Yk5Lc3U0RzJiYnJVQVhoM3ZZMURUUGdaVnNLa2ErOFlVVVZWMGhmc1lPRGc0T0RnNE9EaE9CVHJacm01dXUzR2NabkFmQXdmSER3WERKakVmQS92QWdkN3VZOUMwMURZRnBDa2ZnNjdyVnQxaXMwb3FhS2FQd2FwcjBENElNYTZtYXByRWZnZFRGV3dzdGFSSzJxbnlNY2ptMTFPMlozNUNEY3YxRkFjSEJ3Y0hCMGVuUmlmYjFjMXRONDdURE0xcTFhekF3Y0Z4OG5EYUplWmFTUGtZMkhjYmlMSW9kZkF4U0JZTHFqRGRhclhwRnB0TjFNQml4eUJZZGN2eFBnYk45REdJb0lwMkZwYnhTcldxcDJRWG44UytBVUpzei95RVBnWVJPRGc0T0RnNE9EZzZNYmlQZ1lQamg0Um1zMmsyNE9EZ09IbTRqdmtZckthUFFaSWw1bGV3TU0yRlZOSjFIUjlaYlRhcmJrLzVHR3gySzlpc1ZtaDM5R0ZjaTJheFlESVJOTkhPVXN1YVpORnMyaW5aeGNkOURCd2NIQndjSEJ6LzhlaGt1N3E1N2NaeG1tR3gyeTEyNE9EZ09IbGtHVEx6TWJBUE5kaSszOGRnczlwc05xdmR6bndNaHQyUjhqRzBPL293cm03UmRSSC9RUk1OVEtITG1xaHJkc3NwOFRHbzVzOXNacTY0ajRHRGc0T0RnNFBqUHhEY3g4REI4VU9DK3hnNE9ING91SjB5eUJrZkEvditCRW1SWk9ZbFlKb0xxV3kxV2dIc05vZmRablhZSmJ6dHRCczJzTmx0MEQ0SThTYnpNVWpNeDJCSit4Z3NrbTZ4VzA3SkxqNlo3MlBnNE9EZzRPRGcrRTlISi92a09MZmRPRTR6ZElkRGR3QUhCOGZKdytPUzJmWUY1bU93bXo0R1daR1pYOEg4S0FUU3RJL0I3bkRZYllaRDBzSHFjaGgyY0hUME1XQmNxMjYxWWxRSmRNbkpVaXU2Yk5VZCtpbnhzSnMrQmlsemRlSThKT0RnNE9EZzRPRGc2TVRnUGdZT2poOFN1bUhvQm5Cd2NKdzh2Rm1tajRGOU9hUGpoRDRHbTgyR2p4eUc0YkE1RFpuNUdBeW5Bd3lIRmRvZGZjZjdHTExhZlF3Rzl6RndjSEJ3Y0hCd2NKd1NkTEp2cCtNK0JvN1RES3ZUYVhVQ0J3Zkh5Y1BuVmpJK0JnUFk3MERJcXF6WW1HTUJOUmRTMlc2M0F6Z01wOU53dUp5eUZXeHVWNVlCVHNNNDVtTmdINTJ3MnUyeTNTYURWWGJiTUlscWxXMjY2OVQ0R0pUamZBeldFM3J4WmVEZzRPRGc0T0RnNk1Ub1pKOGM1K3RESEtjWlZwZUwreGc0T0g0UStOMEtLUDl2K1JoVTdtUGc0T0RnNE9EZytFOEg5ekZ3Y1B5UXNMbGNOaGR3Y0hDY1BJSmVGVlRGL0lsbGwvbjlpYXFtcWc0RWN5RWdWUTNEd0VjdXQ5dmw5TGhWT3ppOGJvOEw4QXJhQnlIR2RkZ2REa3dtZzEzMnN0U2FYWFhZM2JaVG92MVVBTzJZRThGK3dqeTRqNEdEZzRPRGc0T2pVNk9UZlhLYyt4ZzRUalBzSG8vRERSd2NIQ2VQM0lER3RpOHdIME1XKzYxS1VDMHE4eXNZVEhNaFZaMU9KejdLOG5peVhENlA2Z0RENy9GbEFWNWgvRFF3cnVFd0RFeW1nRU1Kc05RV2gybzRQSTVUOHQyc0d2dTF6SFlud29uelVJQ0RnNE9EZzRPRG94T2prKzNxNXV0REhLY1podGRyZUlHRGcrUGtFUXBxYlBzQysxQ0QxL3orUk0yaWFTN0Q1V0xiRkpCcVdWbForTWpqODNuY0FaOXFnQ3ZiSC9EZ0RUZTBEMEtNaXltY21zdWxnS0VFWFFqZDBGd08zNm54TWRqWnQweTJPeEdNRTNyeHVZK0JnNE9EZzRPRG8xTWpDem9WdUkrQjR6VEQ2ZmM3L2NEQndYSHlDQWN0ek1mQXZ0UWc3V1BRTlkxNUNZNzNNWGo5ZnE4NzI2ODZ3UlgwWjNzQnI0NzNNVGhkTHRQSDRFejdHSnlheStsM25oSVB1d1ZBUCtaRU9IRWUzTWZBd2NIQndjSEIwYW5SeVhaMWM5dU40elRERlFpNEFzREJ3WEh5S01yWDJVY2syTThmQmN6dlQ3UllMUllQQWp3QVNDMWVyeGNmQllMQmdDODNxR1dCSnorWUd3QzhndlpCNk1hSVdSNFBKbE1oUzgxanFhMVpGazlXTU91VWVOaDF0bzlCelZ5ZE9BOFZPRGc0T0RnNE9EZzZNVHJacm03dVkrQTR6WERuNUxoemdJT0Q0K1JSV21BRnEyNytSa1NPK2YySlZydlY2a09BRHdDcE5SQUk0S09jdkx5YzdIQ2UxUU8rZ3J4d0R1QVZ0QTlDak92eitIeVl6QUllU3dGTGJmZFlmWjQ4aitkVUZObktQaTZoWmE1T25JY0ZPRGc0T0RnNE9EZzZNVHJaaWl0ZkgrSTR6ZkNGUXI0UWNIQnduRHg2ZHJXQnpXcCtOWEcrK2YySk5vZk5sbzJBYkFDa3RtQXdpSS95dytIOG5NS3d6UWZaWGNPRitZQlhHRCtOQUViMFpXZGpNZ3Y0TEYxWmFvZlBsdTBMKzN5bm9zZzI5a3NXN1U2RUUrZkJmUXdjSEJ3Y0hCd2NuUnBCNkZUUWdJUGp0Q0pRVUJBb0FBNE9qcE5IZWFrRDdEYnpkeWpENW5jYjJKMTJldzZDYlZOQWFzL056Y1ZINGNMQ2NINXhvVDBBT2FXRnhXSEFLNHlmQnNiTkNlVGtZRElkQW5vcFMrME0ySE1DaFlGVDRtRjNzRzlTMWpOWEo4NURCdzRPRGc0T0RnNk9Ub3c4NkZUZzYwTWNweG5CcmwyRFhZR0RnK1BrVWRuREFJZmQvR3JpUXZZZGorQndPUng1Q0thNWtEcENvUkErS2l3dUxneVhGanVDa05lanVMUVE4QXJqcDRGeDg0SjVlWmpNQmtGYkQ1YmFGWFRrQll1RHA4VERickJ2bWJSbXJrNmNodzA0T0RnNE9EZzRPRG94T3RtdWJyNCt4SEdha2R1dFcyNDM0T0RnT0huMEwzT0M0V0JmOEFqRjV2Y25HbG1HRVdLT0JkUmNTSTB1WGJyZ28rTFMwdUtDSHFWR0xvVEtTbnNVQTE1aC9EUXdiaWczRk1Ka05zaTFsYkhVV2JsR0tMZVViWUg0NGVGa3Y5YlU3a1E0Y1I3Y3g4REJ3Y0hCd2NIUnFkRUZPaFdzd01GeFdwSGZ2WHQrZCtEZzREaDVET3JuaGl3WHNCK0Q3UUhzSnlTeXZGbFpSUWdvQWtDYVZWeGNqSTk2bEpYMTZOYTdMS3NMRlBVcjY5MEQ4QXJqcDRGeGk3b1VGV0V5TzNTeDkyT3B2VjJ5aXJxVWRUa2wycy9OdmtuWmtiazZjUjUyNE9EZzRPRGc0T0RveENpQlRnVytQc1J4bWxGWVVWRllBUndjSENlUFlXZDV3ZU0ydnphbzNQeHVBMC9BNHlsRlFDa0FVay8zN3QzeFVYbGxaWG5QL3BXZXJsQjZWbVgvY3NBcmpKOUdONHpZdGJRVWt6bWhxL01zbGpyUTFWUGF0YkxyS2ZsTUUvc3RUYmFaSVlVVDUrRUVEZzRPRGc0T0RvNU9qQjdRcWVBQURvN1RpcEtxcW01VndNSEJjZklZVmVNSG54ZllCdzc2c3U5NEJGK096OWNUQVQwQmtQckt5c3J3VWQ4QkEvcFduRDNBVndvOWF3YWMzUmZ3Q3VPbmdYRjdsdmJzaWNuY1VPcXVZYWx6U24wOVN3ZVVscDZLSXZ2WnQweTZNbGNuenNNTkhCd2NIQndjSEJ5ZEdMMmdVNEd2RDNHY1p2U29ydTVSRFJ3Y0hDZVA4ZWNISWR0di9rYkVtWkNmRDVDZG41MWRnWUFLQUtUWmxaV1YrT2pNZ1FQUDdGYzdNTHNuVkp3L3NQWk13Q3VNbndiR3JlaFpVWUhKM05EVGZUNUxuZDh6dTZMbndKNDlUMFdSMlc5cEhuTWluRGdQN21QZzRPRGc0T0RnNk5Ub0M1MEtMdURnT0szb05YaHcrV0RnNE9BNGVVd2VsUXM1UWZNM0lnWkJPQXlRRTg3SjZZZUFmZ0JJYy9yMzc0K1BCdFhXRGpyemd0cWNjdWczcXZhQ1FZQlhHRCtOdmhpeHZGOC9UT2FEY3Q4b2xqcGNudE92dkxhOC9GUVVtZjJXSnZ2QVJBb256c01ISEJ3Y0hCd2NIQnlkR0dkQXB3SmZIK0k0emFnODc3eks4NENEZytNSEFRRUJEL1o5dmlKOGp1ZmVFTUtRRzJrWDZBcmRvQUw2UUJXY0JVTmhCSXlHaTJFaVhBYlh3VnI0TGVrbC9EaWtoYkpDZ1ZCdTBhNGpjaklKa0U1VkF0MHhWVDlVZjJmRGVURFNURFVKTGo5QktrZ21reC8reTc5TDhlK0JvMnYzTFg3L3Z2ZnZmWC8xaDErYlpmN2ZRZ1N3dWVGSjJHYnoyTHcybjgwUEVEdDc5TWp6enp1MzlveXFmbjByKy9TdUtPOVZGdTNabzN1a3RGdEpjZGVpd29JdTRWQitYbTVPTUR2Zzkzazk3aXlYMDNEWWJWYmRvcW1LTElrQ0pkQ2R4UDJENm1xbXh3T0RHdUtEQzg0cE1FTHh3UmNjUEQ4YUIxY3dYT0NzR05zakZTVXVSZUtRTlN6dUhsRzNFV0w5eHNibHlISFBMNGdMUmNZWFlVeDJmakJVRXhlTDhMOWc2S1RKOFpLUmRlRUM0NVZnKy9PeG1DU2VQYWd1SEE3R2FSSCtuNHVQOEgvb3BORGt1REVDNzRlRHFUdm54bUZFSFR0YWt4LzB3NXRHdi9EWVlCeEcxc1h6OExJMWVSQ3Z4NDQ5UVFrZkIwaHVPNjZNRjVDbHhzYkJnVUhueE1HOUVRWi9FQWNQaTNTd0g4UmhRTHdrZ3NVd01JU3Y4c2NoR2lmdUwrSWtLMDQ4NTJPQmozcy9TL1YrdjIvWHZtYnk5SUtheVpkaEswNXVPTmFPQjFPdEdBNHREUzBkV2Vlc3dLQloybzI2WlZEQm9DbVdIdDFobzBYSG9JNGhURFZ6SXhsOEZqRURkSEJOLzQwVVZCdTJsWXVWcm9ZZDArT3haUTBZS0RnSEd3bWZaQjE3MHByY2RuUEhSNERKTXFHc1ZJakU1VUZ4eGN3M2RGazhOaWtPeTBJYnUyOWJlbk9yQVpjMFJLeVRDeVpQR2w4WEZ5WmhHVGVDVUZUVE9EcWVNMnpFT0x5Rm1lRFIwQmhpdlhxT1NWZ2ZoV29hUTB2eG1zVnRRRnB3RHV2YjQrNVBicHpTd0xpQk5CU2NnOCswUVhVdDRXM0J1QXZQTlhGbkpENEVvdzI1L3FPZ3NMVEdmMW1JWFM1ZDJoS0tyNzJ3cnVQVE1LUFkxWDRzK3RLYUFzd05YMVl6ZlNEcnIyaW1mMHllTzNjeTY0aEpvZmlObDB4UHNkZWttelBNSFY1cXhBZC9IY1p1d0k3SXBFbzM0T1NHNmF5NDB5ZXhLdFpNRHkxZE5zV3M1czFtdFpBbFF6WFR6MkVIUzRnTURoZGg2bkYxTlkwRk5kaVd5MUlaWXFVeElCUjlPMjA0SEE5RVdNS2xTMnRZK1NaTnhwS255b3NQamhXZXNYMHdRckE4ZytLeDBlWUpScHZ0anpuR0pwMHpObjBySFdFY1M4YWVOSnd6ZG13NDFjZkRSdFlOWXZVcG1IUk9NRlhMOWpzTjZUdDRveWJ6a0pXMjRGeDhRengwYVlnTnJRS00ybytSS2YxZzZhWDl6TFlLanlXWWFzU3hWSEdweUNnSUxmMEtXTGZ1Lyt6NE81UFNkK1FpNHl0Z3djRUZneHVXTGgxY0VCcTh0R0hwcE5ia2paY1VoSXlDcFJ1SERWczZzNlloWkE1eWd2ZWZXQmFNRDc1NWJOeG9hQ1Q5c2FNWnp3MGV5WHBvY0toeFVrb2tWQmVFc1V6T3NabkhJNzd2TVNDbkk3L2p5RnBxWUJuaVZoUTR3ZEJnVmtVbU9KZ3dZV01SYzcrb0R2bi9VcE5YVFlMalloUytOY2hHaURDMnFPYXlVZW1LSXhlbW1ZV0p0UXZUZC9FbDRUQWJPOHRhWTNBSlhzUnZ2TEF1ZFIyQ1M0S2JJQmFOWUw4MXNDZmJNazg4RjdFbk4yYWV0Q2R2S01BK0hEYnFYL0Z5Uno1ZTZpeHdoYXFpWmhIQ2FaRXdxRTRJMHJHcEVBMEtMR1NKb0RnYUVQZEZNRXlMV1BWUjRpM0YvbnFwSUc1RTR0S2d1bTNCQVdORGhoUEZGZXZwVVFYRExoeFgxeS9UMlNnYVh5cDRqakNCQ0c0alRnYkVpWmZkQnhTUXBwUVdmUDN3WVh2Q1VNM1NES3ZGNmFEUmRSM2ZseGw3eCtjeGJIUW1aQ2FJMTBZeThWTFg1NXJYS2RaZEVMeWV5U2NLQXpjV2tNVVhib3lSeGFQRzFUMXVvT1plUExwdUV5VjBVTVBBc1JzTDhWbmQ0eUZVa3VaZDJuNlhYWVhZRlF4alEyTVRWYzFId2NkakFEZWFUMFh6aG5sOWFTc0I4NTZhdVVmZzBsYWF1bWVZOTVnQ1F2VzhjWFNzbGZSNUpLZExWZlJzSytrRDFYZ014K05XUE83SFE0SVk2ZmxJVG41VjJka3VVb0t2aVNHOUVZL2xlS3pGSTQ2SEJBZElWL05aMFNQQi9LclkyUlpTaUpkUklpRWRUa1R6a1JCN1VMTlZSYWRFcDBhblJSdWpsMFduUitkRXI0bmVFSjBmZlRuNmlqVjB0T3hvN09oTFI4Vi9mQkZvK29MYytzWERYN3ovaGZEeUsxNWZ6ZzN6dmNFYjVnZks1c2ZtajVqZk1IL21mT25hdVhqN3lwbElycGlCNVBLcnZFSEg1VTJYMzNyVi9WYzlmSlYwK1ZWTlYyZlB1Y2J0eVprMkhjbHZwajgrL2RQcC96MWRuSG9aWGoxOUdablM2QTQ2cHVSUG9RODNQdGw0WUVweWlqaWxzWGxXZG1DMjkvcEJnZkIxZUVUUEhrSUdZcGtIUWhNZUFvd2daNWoxNlkrMTZROHo4R2pDNDBrOEpBejF4bWROcEFLYnBRS2JwUUxqenlEbGVLY2NXN0VjcjJhU3NKazZqSzBieGplRVlTSWVJalpmSGpaZkhtekRRNEFRNlFGbGVEVGdNUk9QRy9GWWpvZU01WEE4cXVkWGFkR3o4NGtkMDlxeForendNQjVQNGlGaHJGVG9UM2k4aDhjQjgyNEk2UXc4NG5pOGhNZjd4TDVKZXRseGRnR0dxenVrRU1HUmZpdUx2ZlpiNzFMTXVNUHhhRXJueWQ2ZXhIZko5emVaNzNvNDlXNTJEOStWbjM3N3c4ZVZoZVhBbmtUVDc3a1ZqMjNIWW14U3I3ei83R0E2MXdQdDczS2tyNmdaaXFiZlBQeGJhWlgrTTdlbUx5azJsZjJSU0VYVlJQTnRNOU01M2QraFBuSjdXZGk3Ymt6WDlvRDVoQ1hXZ2xVemYwOHFzYjlDUkgzRTVxekM0VUUzNmU2cXg1UGJpUEpJa0kwVFA3RmlLYXlZWFJRcHdUeDBzMzhWdkt0ZzJSUnNid1hMejY0WTUwTnNzbTVVeFJLNnMrcjlyd24rdTc4cy9KTE8rWkxFM210NGo0YmVMSHN6OXFZdzlhbHJuNkozL1lHRU5wVnRpbTBTR3VJejQzVE43UkM1K3phSTNMVUNJbmRnK0RZOFZ0d3VSMjVmS1VUdWJCWWpxMWVKa1ZVWXZtdmxiMWJTR1djN1NDOXMzVjVZbmw0Z2tETGloWEtzYVFEUEhqeDdOelVMa2NlVDc1UG9JMWlkbVdmYmlNOHN0UTlid29kbDlTRVArRUFrV2NTOXFUUi83UmJpUnRaeFkzWGNNYTh3ODhqQkl6UjZaTWFScGlOQzdQQ0l3dzJIRHg0VzBYYUxKUTg3UFZValBwdjVHVFZKN0RQeTVOL0p6SDJrYkIrWitTbVorT25NVHc5K0txekYwTjZaZSttQnZhUnA3NU43RCt3VkR1NGgrQi9kYytPZXRYc083aEZIZkhMd0V6cmlrNFpQWm42eTdSTnh4TWRrNXNma3hvL2UvK2pnUjBMczdiVnYwN0xsSTViVDBOcmhheWV1dlgvdHcyc1BySlhmLzRyZy96K2I4L0tqSDVEWU8rVCsxeDkrL2NuWEJjZXJzVmZwK3k4Ung4NlpPMmwwWi9YTzRUc243cngvNThNN0QreE03bFR2Mm5yWGsvU3ZmeEVqZjI2bWtWMjc1Y2h1UEQvM3JCeDVGcyszTEJNak55OEw1QzliOUd6K2tnV1Q4eGMycVpFRmVEUTFLNUdIc2JFWE41TklTek5FYnNMd0lqeEgyNGEzMGFiWWZ4MGdQUTZlY1hENHdjc09OaDJVZ24wOS9rcVBwNC9IMWR2anFQQll5ejFhTDQ5YzVoR2lIdWpwNlZyc0tDbDJkSVhTZkVkcHRMUzZWSWdXUGxsSVN5T083aEZIbHdKN1lZRWpMOThleW5lRUpPSXduRmFyelc3VkxMcFZWbFNySUVySWF0UUtnajkvaEdPbWd6WTViblE4NlJBY1FyNFFGWVlMVGNLVHdnRkJFVW4zL0NESnRmbVZiSnZIOE5sY290czJNMGhHQkdjR0R3WUYxbUY2TU10Zk5UTjRZNUNPcUNCeDF6QVlObnBnUEl2Z2VkVEFlRVZrV0tzUUdoa3Zqd3lMYXlOK1ZMZVJrSitOeGJ0eHVoZzF5dWk0dUJpVnlHaTBnc2Y5cUs2VkJOamo1dURqeURRUUg5YlFmTXZZU0c1OE1qTURic3dkR3k5bmdlVzVZMkYyWk02Y0NNUHMyYWt6aHRLbjJaR05KVjFyNHFVMWsrTGRheHJPaVhUQTdQaUJtdmpCbWttTlNCcmlCd3JPbVQyYlJMNERmT1ZzaHNpY1ZHZ08relBEYzFnUWFZUUZJNm1jWjhQc2prbE56R0dQVXUrSVJNeUkxMHlZUGVmNEkySysxd1NXSWU2UDk4TEdpckM0czgycXpNN1VpZDJaemQ1bTFoVnJwN0dXSERGeTRMRDRnSkhENG80UlA0cG5GK0RGczNoUmlSZldnb0VSQU9rSkNHVG9DU2JRUmFuN3lUM0hLRU9pTWJuditKajBxK1RuMG00OHY1UDhuQjc4MzB6UzFmVHhiL0VLc1pQdUpNc01QMHMwZVBaYno1ZEFMUVNUYzVPdHlZL2hBWmdJbHVUNDVNK1RYNmVmV3RwRERHT1Q2K0E1UE8vQVl6c3NNczliemVNNkRGK0I1eFh3TUl0SVo4QUcrRFhjamNFMWNBY3NnMTNtOVIzbVc1SUE1TU4vV2ViZCtOZElQb2NHdVBrN3o5YWJmNDlqalBVd2treUhjMkVCL2kyQ3BmaHNGdWEyQXViaCs0L0NyT1N0dEJTdXhEelgwcnNGQzdSaUNaYVJaV1FGZVZsWWdlK2RUUnZwQWpRMTM2RTVRZ1g5SmIyY3ppWWo2WGtRaHZPa1BlSVhjR2V5RVI2Q1AwSXovbzJIMFZpV1I4a1R5ZnhFSSthekNMYmdlKzlJTmljM3dFam9KcnZ4M1lOaGNLSk9hb0JibFFiNkJSVEJXVEFFUmtBZHpJYjFwQUZUci96T1BmYjFVQ1B3eVVLNEhaNGdhdkxWNUlia0Nua2szaG1QY2p4Q0l1SVQ1Q3pTckRTQUZ5d3dURndnMzZPd056WEFlZkFDZVZ0OFJOb09QNEdwZUZ5RmlxMGNXNzJyREdpV0tBQVZ6ckN6S093TWw1TXZFL05JVHVJakdRN0RGVkxKOGQ2Z1hwZ0VSZ3ViNkVMa1pBbDA2QjBMVzlRWUdyYWlJRDI4VFNSUmtZajZ3L21XcUlWYUR0cEl2aTFxby9YMTBmcjlyOVhYNzRmcTNmVlZWYjNLaUZBZzlLbVFURW9YOXBqUmEzZGlMYVBpQzRrOUpIRGdnRWxadWVxU2U4VFBwVmNoQ01Wb05ybGkyNGVWa1pLWTNWazdMVWhtWm1PbTJlN3N3bXpoQ2k5cElpVFdZMFNQaGg1Q1V5bkpMeUV4YjRPWFJ0MU5idHBWSTAyVVhOR04xT1JjbERNbFI4anhlSU1pZEZsbDZWWkNSU0k1U0xHRENBNHloMm54QUprVElNRUFVNmZSbGFKWFZjZ3lTdnlMQWpsRitjMHpYWVNHWERlNnFDdjFocUptOHcxZ05hd2g2MHpyalZaSnMxcGRBUUc2TDFKaURod1dNMERRaFhLWVFYc3BWOUNtY25LZ25JVEtTWDM5ckVpRVRKeFFuKzAzenQvdjhsVkZKOVQ3cXZZN01WQS9zWDYvc3lxNnY3NitGMVR2cjk1WlgxOWZVVjg5c2I3ZWxZcFFYMTlXbndLK0JTUFhSK3FMbEdJNTNLV3dUKy9LdmwyUlZKUjdQVzVaSVpWOUt4aXQ3Tk83YTBFWDJlUDJFU0xqeVZ0UkxuNStXOU9HeE9IbkUvKzkvcUY3L25UZjdVLzliQVVwanNnN2JJMXRoNmMxWERxbzlwSnhaRVJpVGRPY05kYzhmOGtOYTljZTNyUjQxNlJuYjdoNXkrYWZ6UG5ONk1TS3E1YnUyVUFYOVpzeC9MejZzYlVYWHQxV1FaNGMxbHcvOHpmTWEzaERZaVJ0d043UzRLeFlWMW1FSEVuMXFFV3FJTWdGeUwrVWd0b3N4Smd1bzVwZ0VhYlFrRTdxanpYRnpvbjE1UlByb2JvYSthTUFuQWJhMkU2RE5peE0zRU1tTDB5OG5oaEpYaVJma0grU0Z4UGhSRjRpSC9NYml2bEYwL2tWYWFLVVkxR3lsVkpGMEFRdFI3cENvdFFoRVlza0tjMDBwdVBRVFdWbjV2VWFaanF4Zmh0U003OHNscDJaNXd0a2N1S2VoU1NTZUYxNk5WR2VzQ1hzaVhMeUh2a2IrWUM4aHprK2xuaVBMRUk1b3NHSW1KMldhYlpLOFJGaEU2aHh4VlM3aFpwUktXOFV0SWZWbUVPdFZvZXJFMVZSRnl5NituQlpXVXkvVVkvckIzWHhXSlhiS3ZaSElOcFc4ZlgrWG1XUnNGc3U2RlBlcDZCUEJWblVPR1hLbE4yTDdtdDRhamZtT1pDMFl1R3Z4TkhRS3hhNmxSQVNwY1BwUkNwUUpnam9UTHdtQkNReVV5Sm9VZFRQaWhwUEkzTkF0SDUzUFRaa3VFK1lOcmI5bFhZbHJiOWo1Y2R1WXVVWG9Dam1wWEdDRm54TWxBZ3JublNqRkpjT1NtS21pU0NLcFFxYnhkbTllM2RLQ3RBcUhQVUNqSXoxRmdpUVI2bmdwbFFvQWlLQXdFUUFIWW9pRlNVb0ZtY3FKVFcwbWRLZWxBajA3eEtKU29RaXcwYnhxRGUyc2ZKTlpKemRxNnhGNmhscFdiQ1RrQUpDcXhKMUs4aDY2WW5EZ3pFYmxEUGpjZlQ3c0g4VnlJSUpNWmQ5RFp1ZkdicWpGa1IxVFc4VU5LM0pnN0Z1ZUMxbTZVdG9JU1UybWt1cGM0a2NpOGlFeWk2WjJrVVBuVS9kOGcxMHJRYzczMno1RkxkaE1WQWNSZXIzc3dNYkt1UTB3bmlRY2hjeVhVRVg2alJjdElxOG0raVNLQ0R2TEZ1K2ZOblM1Y3VsVjl2VU5pdjlraDQ2dko1WXlXaHlFWEVrL3BINHI4UkRpUzhaLzMvSVJCYVdWNFZ6WWhHcWlHdWttTldvbE5CZXV3a0xHN01ibFNJS2xONXdEc3pCaUdEUlpsb0lYV3NoOVJObk9WMDQvUGVYNzR4Z3kxVC9PWUppZ0RXK0Uxa2lsRlVod0phckQ1Q3hGU3ZFaGVmZFFTeVlVelZhREJiTXlRK3pZMUdIbHpnOCtaNXF6M0NQcU90QlBhSUxOb3RDSERadGpXd1F3eEI5ZDVIbFB1THc1ZnVvUy9DMUpwK05CWFNqMGtmODhwSXNZbDFpaTJWbnphY0JHelpTdHRsSXFlRm83SC9hVlJWaERZYXNVRDJoZnYvdVhtVVQ2dkd5UGh6dVhRbHAyYUlVVkthbERpaGgwWEswejYvSjd4KzR1ZW1xZXl3N2pMWVgzL284M3ZhVlJIZis5RXN5NWZXVzY1YmR2UGlwUFgvZnVQYXJ4SG5NV1RFTyt6ZUl0ZWdLdjRwTkQrVVRXMDV1RG5YNWlNMlo2NlIyaDRvOFJnd1IzR3M4c2JEc1dlTXZpK1dSdk9DYXNEaGNJNkFSbXliWlBEWnF0NjJSczZEUTQxOFNMU1Myd3R6Q013c0ZReWpNWFpMbnlTc1VOR09KWUZtaXhVcUUrYlJZd3lxV0hLdWlZWXJmL1ZGV3gvMVJWeFVLM1FuMXUvR2lldi9PK2dpWWNiQWYyT01KcHRUMVlqM0ZnaTZGeFJWTWxKb3RnQU1rWkxiRXNZWVF4Sit1U094NzhVK0pvNVlkdHkyKzZkNWYzbE1iSWE1NVY3NmZ2ZDN6eGNhZGU2Y0lSUVhQTDM0aDhjRVRWOXp6WU12U2xiY2ZuWEh0cDAvc2VIMzloSFdNaXk3R1ZnbmpBTWlCbFRHdGg0L2tadlhJb3M3VzVFdXhFY2pxTGxzWEd6M1RRbklBYnZFSDNINGcvb0FQL0o2N2dRMUFOZWV1Z0RCY0o2QVRtNkE3MXFoWjJRSHdCWEpFZjdaZmR5MlJyRXYwV0o0MG4rYnEyQko1eDdWRVZWWFVWeEdOWWh2c25tZzJnY21SdTVtNmJsRjdScVFGeGs1Z0dxZWVZRFhadDR5YjdlRE50QVBXUHl2c0NaT2hWLzV5TXpFU0J6NThJbkhJczhPNDYvTEZ2M2xveWIxWDNuR1c0R3E3VmJpbUx0SDI1Z2VKTjE3YzFiend4VHZ2M25TZElHOWdnNGJWT1JjNUlRdHlvUnM4SGpNY2tJOEN3R0pZYU5odk1TcmRiS1JQUTZZTkZoQmJBUWtpcitRVEk1ZUl1Y1R3RU5GRDVHSnZNYlYzRFJBdFFCeGVCMVByQmxwdzRidmRNWWViQkdTSDVMN2JYeFpZNHhDTDEwaFozaVd1bkNWV3NGaGRvcHFIa21PSml1TjFQaTFWc1ZVaTMrV1AvVXdibzZqT2FLcXFxalJMVEtqUElCSkJHWUp0STZZWXBFL3ZvbloxTExWcllkSzdhM0ZhRFZmU3owaXZ4RmQvZVRQeEZlbDE2TzlQYnR1WHVIanZEVmRlY1FOVmw2NWV0ZlMrbi96a2ZvSGVjdkR4ano5Ky9PQXR0NzV4LzY1ZDk3OXhkbU44eXRWWFQ0bTM3WjY0Wk5DZ0pSUG4vK3huVEVwZW5KYVNIZ2hCeSs5OG83RzVQSzNKeGJFTE1WRGpJWDFjTlM3Nkl3Y3BzOGFzeURqblc2NjBDTm1rbE5EOE5hQTZLTkVGU20yQk5hcG9aSzJ4WllGM21lNWNZa0NPa1VQdFVzNFNLZFpGbjAvREVqWk1sMk1OZzlWL0RWdW5ITnRscDhrb2VNTlZoV0kwMHhoRVJoSGFwN2NMT1FYbGFwZXV5Q2dWNWE2c3J0UnNCd3dMZFN1MmJtNDc4dExuUkczNzd3Yys5bS8zdjlMeWE1ZjQ2MlhYMzdaeXdScjZ3RnFpdi9neUtVcmNsbGgzOUszVzMvMkY1Sko3MjRodDUyMTNiR1YxTnZVd3pwazBzTUdZbU5QVXhIcmNlcHd5TGtncFk1dVZxV05WN2FmV3FuV29qZ0VGQytxN0lZNXZIQlFtZGxER1ZWWHQ2amg2dkVKMkhsUEt1MU5xbVM1akduRVdmQ2llSWU0QUdSYkZMcXFWeUJDQkRBRWlpWklzUGlsUXR5QlFTWlpFK1VrZ2Joell4VURtQ2tRVlNvUitRcTBnYWdJdzE4eDhUQUFYd1JSQWkwaUZWNmhDWHFaalZESkVKWHRSL2sxc3R4YlJYQUYvOUduR2NUZ2dlNTRmVVhGQXRvZzkvV2FBMllORnBBL3hFQ0tlY2JSU2VQNW9RcUFma252V2szc2VTZXhJN0dCdE5vdXN4ZExLcHJWZkcrc2gvY0V2bDhpTnNpQ1RQOFFVV2t5blVVRUhxZ2d5V21ldlVKVmlPVFF5UkNON3RmWnlPQ3VjRlZnSzFtTG43Lyt6cVRmUndIRGlrYzRWRDJIQytyYTcxeC9YT3MyeE1kZzAyRUMxaEFpaVFNVW5KZGt0U2JKQUJaRStTY0NOQmt3eElYTWxva29sVWorcFZoSTFpVG11NXVGckxHUWNtVTZ1SitLL2JoOE0vWnYySWRnKytHK1dsR0w3UEUrYkVwTWZJV2VTTXg5SlRBYWFUT0RzdkE3bExvb2RhSXYxWEsrMWFuUU1taThnaVNKYUU0cUNiWnVEVTQ2RmdnVzcxa0tVSEFMS1FsVnpxNnFtdGliM3hlWm9nVXJCaStST3kzb0xwZGRiaU5EWE1zUXl4akxOSWhMRjRyTVVXd1I2SjN1dE1GY2ovYldoMmpodHVpYjZ0Ukp0c1NaUWkwWXNnbnc3OW9XUFV1eUptSzdMWjZCOXBXcUNhaFhtVWwyOWx2YTFUck4rWXhYcXJQT3NWTFcyV2hrSHo4THhobFd2WmhJOGt1b2E3SmRVaytDUitZdEVXbnBHMVBRYUJUYU54SnFtL1ZLUmpBRURGRHpJUk5aU0Fpa1F3a0lCcVJEdVRpUytGaDU3NjhHMnUzK3htMWE4VE92bytyYTZ0dlhrRDRtQnBpMzRBRm9pbjJISWhqUE9QTmdlRzlUUFZtdWpxazRVbFRpcG5yZkNIcE5FK3dwL21YZUZKUGhXaURnSzFHeC9OclZSWFhRMVdiVWNqVG9FelcrenlXZG9WbFpqVFVPejd2Q2o3QVlHam01bTk4VHNCZENhL05LOGlZRjlqN0diWUVkVDVtZ3N3Rzc2bXNSWUNHZGErZUxsZEYySUxBN3REYkdtYVJkWWtYSWpFdG52aWtTd2lWZ2JvY3pLR0RiN2oxZjA5Y1F0aHRrMEdDVzU0dldTY0VxOTRSMVR6WWZGenhKN0UxKzF2VVV0KzRqMTFaL2RjdlI2TXZqbmQ5NnhPYkdMVENMamYvNWFvcFU4K09MYjBoUFBibmh0YXVGVEpEcHQzaFZYSHZuRjBVWFhJU3MzSlBkSUUxQlNCK0NwV085c2Y2bS92MStRbk1UaUlCNlZDRGpVVkkxb3R0dGtVZkcxK0pBRmZGbTNRWlppK0F4c0xZdm1YZURMdElHUHFjTUFhd1NmNVBQNHFNTVhROTFvTEJDczdDbEt2ei9IekxZVVlvcUFlaEJ2ZkJETDFmVEtvRzhHeGRreWJRMlNNVUZTSE93YkhCT2NHMXdYbE5Kc2xCR0drUWcyMllSNjFtYW1ya3NiQlVqWjZHSjhWUytGVUxKRHVCeDhCVjFSdTdFTDFHbzQ3VVJCbG5ndWNRdVpUZm9lSUNNOHoxci84cXYzRWtjSmZlZWgxK3pQZWhKUEJNaGRCT2V2NUs1RTR0VmxEeVIySno1TWZKVFl0ZjZlZld4L0MyWDhKRFVnUDhuZ2dIa3hQNDRjaVJMTnNRSUVaWVdzNm42ZGNjNENyTkhSUjlOMTNXZXlpS0EweWEzSnI4MmJHRGdVeTJGMzVaaFRtRUVOK1hJNnhrbldPWW5mV2V0YzdCUXljaU5kVlZaUFZrdkdEY3pHcmM5aVU0Rnd1Rzg0eEdZRDRmQURLSFQrM3VaSlJMY1RuVlR2M1pQWWx2aEtlcUl0MGhiY1FMb1JPMUZJaUZsdWJDeDhpbVhYNFpKWXZyWkN4am1Sakp3dnJhQ0NaUVVPQ0o5S0xhQ0tJRnVhU0liSE1aQ0l1VmhaU2N5R0hHd2xsOU85TmliWmpwV3YzTmk1TTFPK05MZmk3QUJaMHBNK3hFK1AvRjRzT0hxLzBPM29HOElpNllrTmlkaUdoSkV1RWZQVWFEQTg1c1J5b1BoY29RcUtLQUtWbXhTV2RRNHJoQktEbU82dDFERi9pNEw1NjZSWUg2T25SMUNxR0ZnSzFQTTRPV0hxM2hUOFp0WUZtUG5Db3gvVGpXM0R0d3Z2U05aRS93MXRqV3oybHVMMng1RGJjK0dUMk1nY2cxV3hOTGQvN3ZXNWdqRE5UV2lSazVRNmlMQllKYlFQY3YrZGhGRGZDcjhmU3RKamdQRit0bVdCWnJLMFppYlhWSCt0bjJyZ3ovRTJaVE1tRDdLNzJYMnlVZEJtb3pBMmNBSjQzQ0J3cEFaQnNVQWtnZGhUNDhDUDR5QS9ld2JOdzNFd0w1OFU1Ni9MMzV6L1RiNllxV3g2aHNqYTNaU2hFM0VZNE1TTW1UeklKcXdCMkRCSU5VSkd0cVlFYkhwSWhNUU9ReUxVdHcvVGtBWEZzbENVMkptWVMyNGlaeENOVFBROFo5MzdodzhUZnlmK0Q4aVpkeWNXME9vbEZTc0Q1RDVTUjhhU2U1Ti8vdG5QRTg4blBrbnNTVHozOG5zUHQ3bnZmaVROWDFLQnlWOHpZZ0ZoaFJxVEpSWDV5eUpqL1RUU0JQYTBmRHdjMDB3QnFZcE5FZzRGazg5WUlPWmp0eVhrczZ1b1ZjSXhZU08xdHNVMlU0bDA1RGFzWnpsRUs2b3JqakViOWpQMk5mTVJWa2dGTzlyazdkdnA0UjEwVTlzRk9BeCtUY2V4MG0xQjBtVHFoRXZSMGhUWWFxbVk1dkNqTVZ1S3cwV0pOSVhMSkdhZWxSYVVWQ3FTVCtvclRaUG1TaTJTUEVRYWc4RVdhYlcwVHRvc1BTTjlJMmwzU21TZVJFemgxS0dBMkFkbWlTcEkwNDRkS1Y3cm05d2pqTWVnQStiSDhpOUN4V3NYVktWT1FSbXFXRmJVQ29RS1dmWW1oOWsrRGlZN2MxbHhIR3BUYkpwQ1ZNV3ZsQ2kxaW1nRHhXdU9odGJrM3RTUVZKeU9xMmlya3hRNzF6bFRvNEg0VXdxRWFWbldUbEE5c1g0L1l3N1RtVUVNdEh1Nzl1bFRZYkJaa2JOQ0dQL1NDNCs5dHVPWnkyWnVKNjhuL3ZtM2R4OHJUbng1N1pQQ2dZeTBpSnBlMUROaURyU0VWaENJT2Z5Vm9JaE5acE01VTAwbW8wQllwNURGQ2trVklEVVlqYWNqVEJ5WVlnQjdSWXdldldZN2ZVNTY0dkNYcVRmTE1yN1pTb29lQnlINVpjekNxcVhYb2tHc3RTWmJZNnN3Y0xOK2owNFhhYmRybERhS2hOU0tkZUk4Tk0ybUNRVE4yREhDWERSZS9SWkNKSXZIVW9SbXkySUxNMm9FMkdKNTIwS0ZaL0ZKbnRSVFFrTW0zVmx2U0JKcGxsWktGUEpvVHpSYTV0SjFkRE45aHI1QjhUNWRTYWxFTFlKNG5VaFUwUytXaVAxRVVRTmRGWWlvNkxRSkxHbkcvVHJOdUpyRWhOUFJXTWpzaEpnZCtkV0djbW11bll5eHI3WlQxZTYzOTdQdnRZc2Q1WGdIeGtYT1pWMkVremVja2VEUW5EWHhHRFhQNUpoWnhNWTg4aElwSUV5V0VSS1c1ZGJFaEEySkNhMTQ2eFp5S3lrUTN6c1Nab2YweEpIKzR0TWR4NkVHczJKK0JlZmRDMlhGTGN1S0pLQ2Q5OTFoS05NbU1UTU14WGJWSk1aMHJKWUZEWmE1T3BtbmsxcDlyMzVJRjlLYStOdURzWm9adGN4UkZqWUxXa0hZT0h5bURWcWZGdUJ4c2ZuSURWaTZHOFJtcGtHWjNIMEw1UzdhRDdCMW84ejJxTVFzcnR0QXRONG1aemxRQm42ZTBaenZ4MHl4S2dnQnZ5Y3RaMUZxYms1WllRRS84MGxGSXJ2VEozTU8zS3NzR0J2cXVzMEMyVkNLQXgxZktja2V1VWdXTkh6MUFzR3pRSXMxQ21qR1pndjloYUdDT0UxRHdlVFIrbWcxR3BydkFWVEZmdTBLdWpkQXhnUkljWUJrNm1yYVhmWHBLVGN3VjFNMW0xdU1KV21CeWloaE0wbElTVlVobi9RbWl4UHpFcnNTTHlTdUpVdEp4ZHNra05qN2wzY1NINU5zNmRWRVErSkIvR3NnUHljWGtZdkoyc05Qa0g3RWozLzlFcytpOGZacDRwbVVuU0VlTldXcEJ4YkViTllWbXFaNzBNclFqUVZTcG9rdzhOZVVtWVZTaWxCSjhralVKa2d4SEQ1V1M1T2U2Vk9kc2FvcFd2V1lUNXBCdlRxcVVCK1o2MXZuNjJDRW1yMFpNVldLa1ZZa0tTV1NGUzQzL1VvNGtndXlVdVltMnBrUDBJSkgvL2t6VkFGZkpXN2R2cDNNL3YzOWRTMU5pUlhTRTRQZVcvcnVKMjJQMFVNMzMxUzN1REJ0TVUzSG1yZ2hCLzRSOHcyeGpzRkpna0RQRThiai9JcVNITElRM0c1Z2ZGZHVzaU80bDdwSmQvY0FOMVhkZmpmVnFHVDMySXZzZmV5aUVGaWcySDMyWW50ZnUyZzNaYmNkTGM1WU5rdG1KOVR1ZExsbFVNRVA4MEN3Z1VkcFVqTk53QUt4S0l1bnh2TFFpc2hWTDZjdFRrSmRUczJ6WXJWTVpGbk51UTFudkdwdEhwbWJSOWJsYmM1TFRWMllta2w1bW5ENk1yRytyRU5iWVZNNWZSWElldlg3Y2FBeUZzRVJFTEczVDFsNkFSdS80UUtCTlJjYnZHWXp5b3JINjB0WjdlR3dOUDJWcFVVUHpVemN0WjB1ZWZETnhmRzc3aHB4OUZheThYZS9URHlkNkVWYUdtOXF1MFY2WXVCcnpYZnV5aGQ3dlVsdXUvcm13Mng4TTcvelp6aUNDa2pzY2NoRm01dFZMSWMxeGJVc05LNExFUnJ6Q1IyVGp6WkhQczRwODJyeXFEQXZsOUNzM0lMY1VXamY5TXV1emFhMHhOZlBWK3NUWUI1YU94ZTV5VVVHSnJQUHM5TjVOa0pVRzdHTXM1STZIUTBoSEI5VThFbkZ5R1FDVEVOeE1oUm5uUlpITUN4Q280ZDQvQ3Rjak1FOHJKMWRvaUl3OFR4TmFCRWtIVzFpcHN4Q3B0SmFBVm5lSm85cDludUNUUTR6NFBBNEJFdFRHRWU2V1lXdzJac3NkbGhzRW1KRjRSbTBrTTBHaXZZVzBYVkZwT09FeVp3dXNRbmwvaWhUY3ZzanBvNkw3Titaa3FvZDVPZUVsUDNUWWFiWmNjNkpOdEV4SjJGaDF6NjlDeXZLMFQ2aVlkTVBKSnFNVDNlanJiTmIvYjNqbncvOThwa1hFOXBiSlBlelE2Uk0yNXFiMlBpTFRiZVNsazhlU0x3YUlONi9QbkR2VDJkZmQ5WGxmN2h2MDBlZnZFSXMxMDhaUC83aTBSdFhiajJNZmRZRHgvTmpPQW9VT0RmV2kwZ3JaRUdBdFZSYVM1c0VrNU9GR002am04cktQdFZJcmNZbTRZYzBVZEY4Mmx6dERjM1VJKzJxOVJQakV6WTR5MDBidDhCMGJqeVdDTzVJNUl0TEpPdmhMeVhyQnNZalZoeDF0ZVk4WlJ2VHNmdGk5VGp4QnpiN24wZnVKTThTZ2ZZaE5TaC9waEJSVUlpUEZKTnBSSnhMVjZOT0ZHaC83T0p4ZERvVkJaWDZhUWx0cENKcVZZR3FNSk1xd3BXMHJ6cE4vVVlWNnRSNUtsWFZWclhqTkQ4enQ4OVluWkdVaUEvR3NpVTVSeExsaFNsdmt5VG1TTEs0TU9XR012MGgzemYxSDh2V1hpcFExZGUyUGYxczI5Ti9JdmlYV29NNTRoTS94VmNsdjB6OFFidzJXWWdDMy9FNzhnZ0ZpVVNOblJCTnUzL0VhNC84V1B4SjRnOVRVUlpkZ0hiWUh2Rk0xSXdoMGlWV25sOXFjMVlxdWI3YzR0eSt1U0pkbmIwdWUzUDJNOWx2WkV2a2VqY1JOdHVmc2I5aDMyUC94aTZwTnIrTm91WFBsSktPaVlReW0xRkpWcnVZcFJnek9UL21zcnI5bGFyTDc2STJDRnBkcS8xbGFzQWZLQWswQnVZRm5nM0lBZStxb0tHc3NucERvVEMrd04rY2VpcFlJTURZM3ZRd0JNeFJFUWc0WENUVW5HOXF2SHcwOW43SDd1YWJxdGxtS3VsRkRuZmFWUHdvNWpjSFVxeExmaU1OTzZiU01WM0l1aTZrdGd2NTFod3lZaXJxY2xmR3dSQkp6UlRZT2dKZVJsS3MxYXNzWlR5bVJnZUprRDRGb1pRNzJHY2Fqa2E0Z2duL0xrcUJDNldaeDFrZ1JCWW1wczZiV3IraGZQbUg5KzJpQzhmN3I1cDNWTjNpSWIvYjlkRVc0dnY3ZXhlT0dYM0pULytyaGN5NWV0bzVqNUlodjlqZk5wTFpBTXRRZ2tXUU8rMFFnSzJ4SWVzRHJRRkthMUhqcnZOczlsQmFsRVdFT2dleFdMSXRwWmIrbG5HVzZaYnJMUXFkSzdmSXEzRXlzVTdjTE5MMXBCVm5aS3VvWVFQbkt0VnJkUytTTXU0SERMd1M4NWg2VVpYOFVnbHoyTm1vQS9SbWF5WUtCcDZQZVZrVWF5d29YVWF6clZOb2JYQnY4RkJRT0g1cXk4UjhSaDlXVjVzdTVJa2R4UWxiYlhCNTJKSmNzWWROUUk2dE41RGFIMjk4NmFQazlvZXUzYnIxdW51dlg3NzQrbnNYQ3I5ZW5makxrY1NSeE11WGowVCtIYmp3NVQvdGZJRXRla0l0Y3ViSHlKa0JXQjBMbC9qNytXbXgybGVsVkxPdEdvcjZ5ZkJscmFwaEM1bGVpK1pkNUdNU00rMW9lUzAxeS9RTjhVMURkUzRaV0JhYllDd1NYR2tqNnUzVVpJSzVXdnFhc2xsMDBxQnZPczBXcHRKRFFXU1RXY2U1VmRvTmdLb3FjKzZ3dTlwY1dNTWFTMmtuaWpjMWZVeXZFL1N0a0dWYTlVSGlIOFR4d1laUFBkdkZsb2t0NjljakViZDdQZzNneUZWeE90a2wvdXVKazNlLzhQenV5Uk4rSFdmOXoycTdCL3NmbVI4ZWVoemNPS3JPd0FHMTN0SHFvS3JWYjZYckxKc3RkTDNTcXFDYWtnZ1pnN1B2SVVDSXNDckw4SUcyeWhhd2VUMFFhUGFidGZTekNaR2QxZEl2THpJTWRzdGdBN1dZM1RKaXpFTlZiQXd4NWhvdHhtcERzZEdndjVGbUcxT1A3L0JqVFpBYUtWQWROVkk5M3E1S21BeDJ0bGU5cjdtR1lMZ3F5bjNZN3pnVXJyLzN1aFZMcnJ0dm9kbnRUejAwZDhzVzBvc2NNcnRZdkpPVUhDRWlpVTRuZXc0UFRyZUFHTUgrWnIrRysyWk15M1lTTlpUbHE3U3ljdGZvOWtvMWl4alR5RnhDOVZYQm1DVkluRlNHNENwLzJWRC9PRC8xcjFvcWt5a3lFV1JEY2ZsY1ZBT1hmVlVSc0tWWEI3S0ljNUhMczBqTFdJa1llRGZsYWRDQytpTEJTUFBGdTdHdTMrR0xYTzB5bW9OOE1TWjNiaTZ0emQyYmV5aFhTRSsranpXUGFmSy94bWFXYkZseWQycHVXYisvL3RqNkV3NlNDYXhKMjFrR25KNndOOE10V1NiM0tQU0NmWW1QU05hN0h4TEgwYjlaSDFsMDZmM2lEbTliZzIvdG5GbS84QVpJRVpHeHZZb1Q3eWErNmRHNmFVcjlBNXZvYlhmZHVmcHVObFlNYk1CTDBQNXh3NHJIUVUzK09YYWhacXNzTnRBQ1hLa1JGd2lyWkFkZDU5N3NwbjMxSWZvNmZiTytSLzlHbDNYQjdaS2hlWjVBRk1FbkZBdWJoV2VFTndSWkxCRUkvbzhSeUdwaEhWcWtHZS9NSDFKVGJHR2Vsd3p4cnZOdTluN2pOZlV3TS9od3VyKzd2cjZ0cW1xM3NaTjVhYXR4dEppY01pdkNaajhGZlNwUVZKYjdQQ2F2ZUNvOHBISExQZmVRYmo4cTc5ZS9adEJ6d29xak00UVZkMHdnSTZ3UFdNNmZPUDRPa3g4U0kwM041RWVyTHUreGJGT3FvK0crMXpTTXJKbEFnTEhIR1N5MHJtQnpBUzNKdzJHQlVuTjlxRFZFNlVXZUtSNHFyRGRhRGJyT3R0bEc2UkFMZ2ZRRXVZYVEvamg4UERoL2VnUUhtc2k4VDM2WHR6Sm5sZHZ3Tzdxc3NudHhCZ0ZTdGMwd3hlZTJXSmJGV1NtcHEyaE93R3R0QmlNOVpkeWJrcGtnTDVKaStCb3BmNUhUZk9Sc0gyN09tT0wwT1l1ZFE1eHpuUzNPMVU0Y2JrWFFTQXVkT056UWpqdFU5SjNoOWxxa2ZjVHQzNG42cHo0dGFGbndXOEsySHRnZXh5SzJZdGVud3Mwa2JaOWpnN0JQaFhCc2NBcDdFdVhQN3RteDc2Ymx4MFpqZW55T1RNQ0cyemVzZUsxUCs1Z2MyV1pOajFQR1hjc0FCTFppWU1CVnNSNjNxNzlVMGRwMUNyT0VGY0xQQlVrVFNCWUtOY0VpV0ZhQ25Sb09rTzF5c3lTbTFjNG5xU20xQkxabU85TXdwbEN5eDF4U0kzWGFwOURqWFFGc2JsRnRMa3RPTlBjdG9Db0pPWkY5VE8xaFRxSnJiNG1UYVZ2cnB5OWZ2bldyY04vOWlldmFodElOUDduNndUYlZYQWZDa3BKYTA2T2xRTVVtNlU2WmRadzVaWmFCT29qV0tJblFURnFUTDVuckVXU0thbndkUWFabDVpT2F5aWtmbGJtaHAzWXJRaXg2YmxlbS9vZk1tZWUrMzJraGI3QlNaWjE3bmp0WVdhd09RVk5QMTRITjJ3UUx6dDJvUUZwQVIzdE9WN1VjcmNVaXVDMFd3YU1UQmVjTmlrQWNRS2lLVXdVWkpGM0tzbnhvb1JZTGNRb1dMT2NqK0Q1Mi9wMXVWRm9zd0RaOXBKMkNRbk5IUmY1c3pKMXhDbDVEcmRJVTJtSmJaM29FTytob1YyYlpwTjVWeGVybVM2MlZJTCt3M1R2aTk2NHBxY1lBZFlDNXhob0pGeEN6eVoxb2FRcUgvcFpZaDBxYjNQVjU0aW9hdkNZeFRucmk2RlBrd2NRMXFkWkp0M25KWm9wbWJLUFp3a2N6dnZKTVU0dlkxSkcyVDQ2NUFyR0pNWldaWGk3Q2NaNExmM2djY3BMN0h0SDBTaDlibmV1SmdZdHpmcHBENFVMZlFoLzFCWWpQUTJoUXNxMzB1NTFldzRYOTZTVE5zRnoxcTI2ajJjbW1YS1pRZHk1WG16VXg0eHlKOVRVRlBVNG1pQTU1K1ZweldkbkYrVVROcjgxZm4vOW0vdDU4cVo5NUVxYmxQNU5QaS9QSDVLL08zNHpCMUFMTHJGa2R4K1dYT0NhZEZjYVgrMDJQRlZ1KzIxOVZsVnBkWWEwZlBzYW83UXpyUVdQSVY4bllXQzdhZXQ3WUpUZHRPVy9ja2tWYnQvNzBsNS9HcHQ4eGhBeW1HMjZhaWR5YlBvbEZMZmR2V3pBb2NWMW0xR0c3R0hETi8yRFVPYjQxNmh6dG80Nm0zUUxmTi9aK2lNRW5GblhVNE15UHRTWm1jYTFpWHFlaHlCaE1USFkzQmFaaFhjWDhUeld5WUJOazA4S1h2YXJnRjBvRWdjM3RpalhCVFIyTFVOa2N6TGk4WGtvVlcwRDliYVQ3OVAyVWdhZkZBc0psMUsraDFSWWd0VGlyMkJzNEZCQ1BkNDJuRjRycW9kcTA4ZE5ieHpwNHByTEsyemQ3ZUduVmgyeDcySWNwMjQwWmJYaUlaektObXppVWVDZGp1aDA5YS9mekwreG14aHVUT0lsR3M4N01ibjg2ZGw3QUZEYi94bm9YajdmYnFVUThxTjBGd2JUZEhhYnRIanpWeG50MTliZE11VXdBSWgwTWVPZi95b0JQZUtXdFI5L0lXUEJNZ3plYUdweTF6YzdId1pGVzJUb2JsVU9ZY1N1M3luUWRtaDJVc1FEcTdYV0J6UUZodmJmVml6YXVHMjFjTkdDR09QQ3NUOU9wM1lIOFpQaFhpVjRTZEZoSlJ3MXNNZ2g0RmluMjlHTEEyeW5OcThRVXhhY1VLME9VdVVxTHNscGhoaTVxM216bDN4cTZiQ0pZblhKRlp3eGR0T1lpaE8zdit4N3R1dVU3YWpYUlNIM2ZyMUhwSm13Wkd3eU4rWmxCUXEyVXJ0UU54U0ZyVXJNc3B0ZEVYMHFKZWpubVFGRnZsNmZRWXNkbXg3ZEVQUlB2cVRGTGpoTTZkRlBKc09YVHRtNmRlMjlKVCtFNjYrbzJsMWgweDBNcXk3MGE1eHB4ekQyZkVPWUorU1IyRGN0bFVtcDltUW9taGJuWnpKSWFFNWdXbUJzUWhmWVFIUE05TmxwSkMycTFFcjJmVG1HZUJSV2J6WjhyZ3N1enlqRFlsb2hwZEM1dE1WY1U5dEJ2MENLbjBpcndNdDhDMVdoV3M4dlBKdmxtSi9xYmJTNGJOWU1VWlpmcHpxWnFjMjVHQ3VTeUhqWGR0YmxDTTQyRmN5K2pJVHFWRm9mWGhZODFSdG9ERm9sVVZVWDNSNkw3VTR2Z081bnh0TE9EQit3NGJ4ZE82S1dRVU9FTnR6dTdVT1psRmFSN1ZXVE9TU29uem5kdnBVUys1b1o1aVNXL2ZlTlI4bk50aStXTmlRc2F5TUxmN3dtUWk3ZFBPcmYyakFsemJydnB0NGszVnRYV25OVzNmdjZkSzU3RVZpNUlma0dMcFI3Z2hhWllqVkNxR1pVUGlrUW8wZWZwVkRkc3lpcUx3NzJLenZVU3h6b3Y4ZG9zUnZNOGhhVDRWVkJMRklMLzY1VE55alBLRzRxb1dOT012VDI5eWpYUFQ0YjQxL2szKzcveHQ1dmdHUXY4ei9WUHB4YWUwUmczMS80akVuTlZkTzNEckhDMkh3aG41ZVpzalJhZmRlNmNLN0lYTGRyeTBFTjl5M3Ixb05aUlA1bEp4OTFCMU1TaE85cnV1ZklNRld2Ull2cUhpbEFML1RpVzc4ZnV2a2Q5U0tWMklVLzRzWENmc0FFMWtaWGtrTzVNRXpHYlBPVjhBV3FUSElabEpmVWFxSUF5ZnVtOVpzY3lOZFdhM0pVYXRGTE1aVWRsSkhVd0JGUExKOVg3bzlVVkx1eTFTRW9aVGF3dmtndFFIVldraXA2YVh0NFNUOXkxZGZ6MCt4WnQyZEt5bGl5bWo3V05SRzFFRHgxNWkzRjVFUFhueDFoeUdWNUxyNms0SllIS0RzRkJDWlZBbGdRUkMvSytXU2hKVWhWejFlU2QzUWIrNzk3TlJwV1Q1UjlFZVdwNjZWbzZldWxhVWw0NmMzbDZFSE1qNWlHWlFJbUZadE9oVkxpUUVDYlRhNGlnQzVpZEN0UFI5c1Bob0g2am1wN0N1V3FMdWs3ZGc1ZUtpdFlMVFh1bWpqa0x6UzE1L3lNZm9QQnhZc2I2eEl4ZEpFQUNZdEdSdDhTaW85dUZzMWo5TFFEU0ZxeS9sVHljcXY5ajFIU21LV3lkU3plMWhzeW9oVjA3VGRVcUg5dlVJN0xSYVk0NUZlc2dTMWFINXNCSnBLU3JBakMxa3pJd3JJS3NwRjdLL0NxcGJSMkMzV1kyNVd1UjNRWTdXR05pYTJKenNsR1krYkJZOExHNUFyWWlzYkIzYVdoVGExWWtacTRQK1lLVjFJcGtzZlZPNjV0V29RV0hBRzIya0VzdHN5MjByNFVzMVlqUXFNM1RLT21ua1p2UkttcWs4eWlGUlRpNnBvbHpSUXBEeERFaTFhMDV1c1dhN2pWVnlWRTFwVVdXM0RMcjl5eXhRQlNzTklkMnA0TEFkREdkQjR1QjBzVVNFZGlhVVJFeVNndTJyWVd3ZlplQ2hsd2oyVkVFMitRNTVsTG1YdnNodXpqR1B0ZWVYaTA2M3N1YkZqUDEvN0wvU1AxeG1qZTlDeE5mTmJHZWRhM0F0bkpsWmVHL3RDWHgxS09mZlB4b1l0dkxPdzQ4ZEhBSDYyVEJldlJMN09nM3pOMGozYkN2N2NqclgyQmY2MlIybXRleldWZUpzc2g2allnV3JJS0N4cm5wdjg2c0dGSnFzNW85dFMzRjllYS8yVmVwcmdyR2JuOVR4Vm1MNmtPR05mM2U4M0IyOHp5UTV5M2tqeUw1bzh5a0dhblY2MUNrM2FtTGxPMzFhZFVGVWl3UnRqTmdyclJhRWluYk1MQlpFalMyeVpKTmttU2lhcXB1MFhHQ2hzTlFCMlF1aXlUajhGTkZVVlB3Y1FzbzJHTUsrN3hKaTZpNThhN3NFQ0VmNXdJV1JsQXIvbzNORUpCVC9oWnpzYnV5UlFiUm5BdUpjNmlOVGFSc3prcDJqam1RaHc3WnlEVGJYQnN0Tm5mb29EM1Bkb3hncmF2ODBhalozdVpDcllSZDFiSmdad3QyRVRzWjZqWjEyM2RwcW9QTlZlbFpacGVCMlh0amNhcUVnOUhzTHlKOHNROXR4VVA3eU9MRTZuMmZmcm92c1pyY2w3aUVGcE1FMjJHVkVFM0psQmhwU2lhRGRFLzNsbytxa2lCWW1YQnl3RXByamwxUzB2THA3YlI4Y2prN3lLZWRVTjMyOUxGdU9wY0prUkpWb0YyeEFTV3YxRlVTWUlqT3JDYUJycWJyS0JXWU9pNm0yQXZNNVpHV1o0cnFWaFQxdS9Jc0YwV1p3dVNaNEZEUHBTaEhhSC9LekJOWUdiUG1PRmk3ZGtOZGhsTE5JU2lDUzVsT25TamFwcm5tdW1peHE2K0xCVnBjNjF4N1hOKzQxTFF0enNycGowYWdPdnQ4Yyt2K3hQcUthbE1Tc01ubzk0OFFjdzNSTkVsVHpaeFZuc1VrWGdXeE05TzBqL2VabThlbUJkK3V4SXorRnk2YU9LU2lleEtiTnlVQ2o3eDE1NjltMlRmWTJXb0llWTVPcHVOeElqSWcxbzI4M28yU1d1UzlFbEpMYURFTUFiWThNa1lpOHlYU1RmcU5SR3VsZWRJaEtiWGpMUFhaSElqV1ozYk8wc2x0eStsTTh0enRxVS9WN2FZWG03c0tzbUJwTE52SzlqU2JHNXZ0Tm5OZnM5TWlLSEdYS3BoTWlXMW1ibkkrSy9PSm8yOVVvdUsveTlob3kzcTR6alhQUmRsU1NRa0dSTmNlenpjZU90WkRmdU1oOHp4RTlmZzk4enlMUFhkNjByUFMrbWo5ckxhSy9jWnJxUEFyOWlNVFYxZnM5NVYvYmM1R3NiM2J0MEZMN1NGNnNia1pPdkZDNDVUSmszZUxuOTkwYjhOVHUzYVpsSEhrQW1FM0dacmVkZVk0OWlrcEphNEtacUZEeHo0bWxlWTFEVklma3BxckV4UUNxWTB1SFQ4a1ZiMi8zUHlRMUxIQ2tLRWQ4MmFmSVRDUTNHQjZMZjJRQTc5S2VTNnZTbnN1dlhmNklPakkvdi9qd05SRWxXM2JKanE3KzR3Z1lIcXZKN3M1RU1zTG9LcklJOFY1US9LbTViRWxiYWw5aHc3N2pFRFV0RFZtc2MrVGZOdVRtVGF5djgrYmFXNDV4eG55Y1Y1Tk1wUTVrYjdqMnlUMXV3NFB4dEZQajZ2L21sVHRHOU8xOTRIM2g2cDVzeWVXN2NGNlo1UGk3Q0haMDh3VnZZNzEvcGUxL2xkMVBsRjl2MVBib3pOUys3MU1MeEhXV29DOHpkU1I4UkoxZEE1OXl6ZGsycHhUWVp6NEkvRUNWQllPOEVFK0ZFTVUra0kxRHRyaE1BWW13alNZQVhPaENaNk5YZHA0eFlqUm84Zlh6WnZmYjhETU9TWGRHeVlYbmxkclZjK0ppYURpWDA2b2NFRDN3c0x1QTRTNm5ONWxic1B3NTF3dzlOcXJyNzVrNnVDQlA3NitzdnlxNlM3dnlJdXAzUCtzaS9Hdnk0UnhlZG5qcnA4K2J0ejA2NFdwWFN6MjBwNDl1M2FaQ3RGM2QxZEZkNyswbXdtMGFEUnF2SVRXalJQNUptcnNac0dPaHhtUFJGTm40OFZVL0c5Ri9rNThsREh1Z2k3c3E5ZUswK2VzOU5tWFBtZWVLOSs2SnYvbXVlSTkvcnJvVysvUDVDZThWdGE3ZDlrZGpIeFQwYXVpVnlFTEpmcVdJMzViMGF0WEJSM0phRnMydTBFWHRjZHQyMURXdTd5OGtQVHEzYnNYZVlZOVRJeG45QnNXK3c0V0VsWWhLY09yeEJzVkZiM2V3d3V5R2dNWHM3ZmRnSVJzTFkvMmFhdkYwTXF5c3Q0MGxJNlVVREN3bHlYN1MrK3kzajB4OEoxUE41dXJIK0ljSEVkRkVJNFpDZzZaQW92WGtlOWFtVzFqaGo3YkZybS92TG9DQ1JiQTNEVDJYWDRPSDgvY3d2VmJFZyttZWJ2UG1UV0R5TVdaVUhxdDRuZ3U3N0J3WVVvMTZSYXpOTjJnQjBSaTN1STd1d0VyVmZkanhZcElOTFhyelN3WUsxbjEvdjlwMlRMQzVsK1VzYVBrK2I2U1pzUlFTZzYxbDdockxDdFYybU9GTFQ2dXNLeXMvL09pL3R0aS91dENacVNIa2Z4Q1BCdExXQXdsTVhkdXJqT3NLNnZ5N05rTzcwb25LVnBGcVlZRlpGUGVWUG5RVUNycmxabjBucWlVSFdmQjR0bm1MRGl4dm9Nb0kzWEhUNG1QTDk1eDgrUHE1QjdweVAvSDNydkFSVlZ0QWVQN25Ka0JadWJ3Y0Y3QU1ETWNoZ0VHUkJ3UUZjMU1FQkFVRVFFUkZSODhCa0Y1QmZpTURORklqY3k4aGtoR2FHcHE1RnZqK2tERkY1R1pxWm1abVpyNUNvM1V6TWp3di9ZK0J4alF1dDM3KzkzdmZ0L3ZiNmU5MTlwN3I3MzMybXV0dmRZK2V3Wkg5QmFhZ0tJSEdjRytCL1laT0N3cElpSitXSHg0bi9Ja0Q2TzlSSUtTSElhVmh6dVdhelRoS2pkNXVZUEJIbkd5N0huYkFYUGNzOWRuQVE2M3UvWERCenhJR1BRQ0NYdDZBZnVCQTJuOCtiTEtzWU5oWmNmYmZPKzJqNTJCd0JyVHUrdXQ4ZCtPNDdKS3FiQ0dWMlp5dXpHUTdoM281WW1mM29GOThkKzQwVWRvbXFZQ3hydzB0TjhVSDFOM2JySDhiWURkQVBkeDZmWmlxZTI3RHF6TCtDRVRYeGhvQ3FnN09INUNZV0Y5YTVRY1g0WDBIL3U4NjREbjkrd1puVEExYTBmb05LSFUxazZxc1IweGJiaW5nckhyMW5xYUU4NmIvSFhDQllFa05hMTdrbWVQN2w1ZXJFc1BneUZzb0ViajV6ZncrUlZ2VFpwSUpkU3JlN3hnaU5DNit2azk5OXhiOHhOR3UrQnRyU0NQQnA2UjNFTVo0WmxFclNEUGFlbzNPTS9HME92cGJ3V0RCSjhLUGhXR2tlZDcwWGg0cWtXL1d2V0VkenA0clBYV3RUWkRiZGJiL0N6dUtUNG44WktZSmZ2aGFaS3VsUDdJekdHK1o3NjNMYk5MdDZ1eXE3SlhQUEY0dzNQYllUcG9Ka2ZHeUtiTG41TXZrZStSNzFFTVZVeFJQRkNPVUg2aUdxMjY2dWp1ZU5hcG4xTzVzMHJOcUw5M2VlZi9tZWNZZmpTKzhFeCs0cm11SGYrM241blBubWZQcytmWjgreDU5ang3bmozUG5tZlBzK2ZaOCt4NTlqeDduajNQbnY4M0g5MjhaOC8veGMvcno1NW56N1BuMmZQLzYrZVVhM2ZYSXRkUDJNSm56N1BuMmZQc2VmWThlLzczRC9scWtoL3QxL1pkSlVxTTJuNmpFLy9icVdJZXA1RTFsYzdqQXFTaFJ2SzQwSUpHaEJncW04ZXRrSXlheGVQV0tLS2R4dGFhcGw3SHYxb3FGTUNZak0wYkJCZmhiL2JZdkV0d0sxTC9FY0d0U2YwL0NXNUQ4RThJRGp6U0twdXZlWnhDUnNsUFBFNGpPK2tHSGhlZ0lPa3JQQzYwb0JFaEorbkhQRzZGRE5MUGVkd2FMV21uc1VFK050ZDVYSXJpcGZkNDNOWk93UXpoY2J2MmVvbkZXcVNZVC9VNGdqTVc5ZmkzcFJqMVZJSTdZRDdWTHhGY0RyaE12WkRnQ2d0NkpWa3ZoNnNzNnAxSjMzY0k3a0xtNHNiVVd0QzRXdUFHUXMvSnhJZmczTnA3RVB3SXhtMHMrTGV4bUl1eHFHZjR0V3hnQTB6K1Flend6TlQ4M0lMYzlFSjJjRzUrWG01K2NtRm1ibzRmRzV5VnhlWm5UczRvTEdEenpRWG0vT25tTkQ5YjJ3aHpTcjU1QmpzaXo1d1RQeXZQekVZbHo4cWRWc2htNVU3T1RHVlRjL05ta1M0c0h0clVpL1hFb0s4dkc1dWNsWmZCUmlUbnBPYW1Ub1hhb2JrWk9XekV0TFFDUEZGOFJtWUJtMlU1VG5wdVBodVNtWktWbVpxY3hmSXpBazB1VE1vVzVFN0xUeld6bU44WnlmbG1kbHBPbWptZkxjd3dzOE1qNDltb3pGUnpUb0g1T2JiQWJHYk4yU25tdERSekdwdkYxYkpwNW9MVS9Ndzh2RDR5UjVxNU1Ea3pxOEN2UXdKeHlUa0ZiSnc1UHpNZFQ1ak1GdVlucDVtemsvT25zcm5wM0NUdHBKUHpjNmZsNGVyVTNPeTg1SnhNODUrTUUydWVQQzByT1QvQm5GK0E1KzNyWnpLMTAyRXlRdFhSczJCYVhsNVdKakNkbnB0VDZNZU95WjNHWmlmUFlxY0IrNFZZVUxpYUxjeGxVL1BOeVlWbVh6WXRzeUFQaE9mTEp1ZWtzWG41bWRDYUNpUm1nTWtGYko0NVB6dXpzQkNHUzVsRitHOFRSU0UwZ0VUejI1QjBQSVB2azZ2TXk4OU5tNVphNk10aUM0Qyt2cmhQMndTWk9leU1qTXpVREF2T1pzQ2ttVG1wV2ROQTdoM2M1K1preldLTm1kNmNTaXpJWVlTLzRwYlRZR2JPWkd5Q2hmbVpxVmgxSFJQZzd1MWpQVWNrWU15RVdRck4yZGlPOHpOaDFyVGNHVGxadWNscG5hV1h6SWtLTEFlV2t3dFRRVDZ0TUE4c01NMk1sNGxwTXN4WmVaMGxDcHNpWnhaUGpoVUNBNEo4TWpKVE1ndko1b2dIbHROenM3SnlaMkNXZVZIN3NpbkpCY0JyYms2N2xiWXB3WmhSV0pqWHYyZFBjNDdmak15cG1Ybm10TXhrdjl6OHlUMXhxU2RRVHVUdDJSdlVTOHlpQURPR2gzbjZCbnpheGpuRlUwUmhpdE5ZekZOeVlVMVlOT2JwNWl6WVZFVGNuYmNvRm1XblRXcHJHNE9WVTBCc0dOWU5JakJEcjhuNXlTQ1pORjgyUFI4MkhONE1HY241azJITldNWWdLOUFvZEdkelUyQ2o1V0NoSkJNbjBXWm5mMzhWbUtIa2dvTGMxTXhrYkI5cHVhblRza0VqeWR4ZXpzd0N5Ump4aUoxV3k4YnhYdUswTitFb3pRd0Rabko2ZUNvZE95T3pNQU5YVzVpYkwyOXVtUHUyNXF4TXNGTnViandXN3laaEJyS0o4QXA5MmV6Y3RNeDBETTFFSUhuVFlFRUZHV1REd3RBcDAvRG1MY0NWdkpYQUNudkN3Z3ZNNEhkaEJLeHJYa3BQWlpYYjhEQWx0Mmw0U1JNbVptVGtadi9GR3ZFMm1KYWZBOHlZeVFCcHVlQk5DUzlUekttRmJRYldZY2RnL0dtWlpPUDE1MHc4T1NWM3V0bkMyZWZrRnVJdFEvakJteXl2dzFMNHBvS01aRmhWaXJuVHprMjJXR2crbnI2Z0VJd3BFMVFFbTVmYjZIOGxBTHpmSXNMWXVCSGg4YU9EWThQWXlEZzJKblpFUW1Sb1dDanJGUndIWlM5ZmRuUmtmTVNJVWZFc1VNUUdSOGVQWVVlRXM4SFJZOWhoa2RHaHZteFlZa3hzV0Z3Y095S1dqUndlRXhVWkJuV1IwWU9qUm9WR1JnOWhRNkJmOUFpSUtaR3dFMkhRK0JFc25wQWZLaklzRGc4MlBDeDJjQVFVZzBNaW95TGp4L2l5NFpIeDBYak1jQmcwbUkwSmpvMlBIRHdxS2ppV2pSa1ZHek1pTGd5bUQ0VmhveU9qdzJOaGxyRGhZZEh4ZmpBcjFMRmhDVkJnNHlLQ282TElWTUdqZ1B0WXd0L2dFVEZqWWlPSFJNU3pFU09pUXNPZ01pUU1PQXNPaVFyanBvSkZEWTRLamh6dXk0WUdEdzhlRWtaNmpZQlJZZ2taejkzb2lEQlNCZk1Gdy8rRDR5TkhST05sREI0UkhSOExSVjlZWld4OGU5ZlJrWEZodm14d2JHUWNGa2g0N0FnWUhvc1Rlb3dnZzBDLzZEQnVGQ3hxdHBOR2dBU1hSOFdGZGZBU0doWWNCV1BGNGM2V3hING9HdVdpZkpTTmtsRVd5a0d6b0pTQ1psRzJ5SXltUVBrbXBJNzJPRlFJTUFlbFFaNlAwZ1NWZ3EyQ2ZZTDlrUDRwMkMyb1FSc1Fpd0tRQ2ZtaklNQ0dvMHlVQ25TNXFBQlNPdlJsMFdBeVdoN0prNkVtRTdBYzVBY3R3VEIrRnNCOHFKdU1NcUN0Z0pUTUFNMEFwME9lQnBTMlNFSlNCSlJUU1BzTW9Cc0JZNXBocEhoWUFjWllGQVhqNDlWTUkvTm1BVGFaOE1OQ3lnV2FXUll6c2UyY20xQXZ3RHpiUzMyUkwrQ3haUFY1UU12Q3ZGZ0NlSXhVTkpXbkhRcWxES2pGcmRPQXk0TDJWY1ZEZlNaWlNkYWY4cE5PcE1HaUVDaW5RQXV1VFNheTZMeEdicHhjZnFVc21XVWF0S2FTOWJiSmVBYlJEYTZaUmpSbEptTVhBaDltb3BOSTRBbExKNVAweXlIU2ZZNzBOeE1LTStnNmhjZzZqZVFzejFFYkxVdnFDNGhtTTRHWE5oMTJyQU8zWXp2SmhKNEZJSVduMlVFY2tXSUJ3Y3hrcFBUMkZTWVRmckY5cEJGdThIcW1rcFduZDFySms2Tk9KdVZwd0ZVYk5kWlROcFR4YkptRTczK0huMWpBSjhONFdZU0hCTkpTMEw3ZXZqQVd0cEVueDJzYnJXTXNiR1dGd0VkLzFCT2VHZVR4QTg2Njl2VGpPZTRKK0N5eVR5WVRTV0RibXdXMTZXUnV2RGQ2UG5VZEJXVDFlVVJublBiYWVtQnJIRU9rd3hLWnppSVd3bW0wc04xSzI2aHhYUzZSSDdZbHZGUE5aQ2VrRWJvODNwcDlpYlp5eUR4NVpLVmMzMVIrRkROZlRpWmo1eEZwNERVWGtqYmNLNFh3MGFiVHJwWld5UGZnN0Q3L2lacjA5alg0L2kzN3lDUGxOT2lUQ21WZjN1cXhiK0htOVcyZnArc0tNb25HWnhBNXBSSS84RFNaemVCWG1razhSQmJ4Qlp6WGVsTDJ1RThXd1l4QTc5MXA1ejE5ZEk2SC8xUzJsdnNhanpTNTNic1dFczJsdHUva3A2MmdiZlluK1hyT3dnYndTcmkxRkpMNTJ2eDhQdkVGczRqOTREL2h5eUgrTC9sUFY4clpYbklucStMOFdDNmZjNnZpOEdsa1ozRitGWFBicHMyMmNUQmxGdkVKZjI2alhBVEs0VFhUTVhyYkRzbmtwWnhQUEQzMjA1bThuRHNpVWp3dmFieU9MTExDR2UyUzdtelp2a1E3eVFSUDQyM2hTUi9kZFRjWXUzZ1JNNGt4ZUk2cHhCT2JpV2FUb1E1TGFUTHhNMXhiVDM3TWlWMzh2amUvZ3pzOFJrRzcxTnE0K1hjaTY5K01aS3lteXhoUmJXT3cybmFMbmdKMW5LN2FMTWRNemdCWmZBVHNzUEMvaXM1dGx2bm5FYnBOZXpIdE82akF3c2R6ZXVlc3djelB4M25rSEY3L3ZtVGQrWHowYklzNkdjVHFKL082YnJObnpyN3krRGpDellEUFcxeTB6R20zbG1UVWNVcnA2dGYrQy9wb2wxSXlXVHVXWFNidjg5UDRQWnNLbzJmemV5VzVVOHpITzV1ekcyTWJqMyt1WDRUamE2ZHpDcXZsclpDVFVScUpObG1kL00yVGEveUw4UkJMckI3M2E2Tit1cGZ6N2VMbDJtVGZ0VGVXR3VkWExkZmR4bGZuMHlxM2hvNkkxS1pEakdlVHlJUFBBbTFsczRXRllQL0ZhYWdBUnV1SXRCelhLWVFYTXgreHByWHIwdEtmY0Ryc3lXdThnT3lVckhZZTJ2WjJaMXY2KzFLMWpQVGNLaTBqVG1lYjdwREVEQ0xIN1A5UWoyMVJBWjl4YzNqSm1DMDRTQ001bnJORExsT0FJdFVpaGhUK2hVL21Ja0FhV1VGYjVPdi9oRGRQaGxGemllZDUrcHRERG9rWGJSR25RMFlaN1RIamFYNmxjNjhDNGk4NGZhWHdhMzk2L0UzK0U2M210MHVnQUJYeTNpbVQzMGxjRkxhTTd2K3BGVmpHdWdnVVJpaEdvSEFvallib0dVdHFJcUdPQlc4YUN5MEpVQXFGMmxDbzhRS0tPTDdkaTJoc05JbEpFVUEzaXNRN2JveFl5S09oUEliNHVuREVrakl1RFFQNmFCZ0w5dzFEaVdTT01CZ3RqbERHa3JHSFEyMFV3RENlRHZjWUREV2pvSXp4SWNRYmN2TkZReS91WFNpU2o0OGNwL0ZRejdhdnNETlhrV1RHTnM2R1F5a1d4by9nVzROaDdFZ3lIdVlmeng5TzhPaDJQc041VG9PSmpQREllTXpCd0ZFVUtlSGFVUUJqZ0M2T3pCOU0xc3h4RzAzV0VBN3QzRnJDQ0FkNFpqOStyUndkbGs4QzM0SjFoUG1MZ3FkalZjRkVCaEdFbXc3NURRWVlBNXpqOFlkQUsrNk5hYUtJRmpuS0VOSWZyeEd2Tm9xVU9sYkZhV293V1EyV0twWkJLT0RESVExcGwxMHN5VGxlWWkxRzZ5eTcwYVM5ZzRwYlh6Q2ZEeWFTRzBGS25EWUdrMUk4MFJWdTllVjFHVXZXMFhYVzBjUVN3d2hWTUZseFhMdUZoQlByNWJodnMwNXVqaEVXbkhEellkMWE4dEptMWV4ZjdCRnVsTGIyVWJ5bW41UUxsbm93a1FubUs2NTk1ajhiMmZJMko1bkVpTGJ5WlhLN1krNTAyMlB1ZEo5RGJuU0VPcUcvY0pod2lQQjV5UHNCZFRKNFBueE81L3hWQnJXRldpVkF4SDhHQTMwK3VXUEFZNURQTk1sL2p3M2dNcDcrbndEaFR5QmxpSHI4bUZCVDVDR2ZsV3FyeU4rQmsvKzA1YVlTN1ZJcnNVOXBST212dHBRMVhWMmluUWRWcjlBVTVTODFpYTFFM2UwRXRGcUVUTWxXa3U3NG44a3U2VXRUd3VvNDAwaVRyMFdOWnJXdVdJTUdrR2NFOFl5NVpOVTRrZzdFajhuTllqQ2hRcXdML01SVWNHVEh3TisvMzdnODFhZnZrc1pGSjZwTG5PSk5KY0o2VTRsZ1k3VUEvNFN2dkJld3VQK3RyTitMMUlaTGVzTHdmcE50TzdlVUNQaWFRZGdVakJKYXllbFJjZjV5VXpkY3NKRkxSaWNYWkdUbVRDN016ZkYzTU5uaFNtdTVkYXc1TFRzM0o4MWZaOUxnR29sYytkU1BCdjNkVEs2NFhTQjM2bWlQejh3Mjk0Z3JUTTdPWTJNR0I1dDBqcmIrZlV6OVRIMzkrL1lPQ3V3M0ZvcEJGa1hUM0czL0ZjNFkvQnRubzRSU3VTQjR4R0IvTDVNSFY5TGxETTdNd3gvYWhNYUZzV0Z4MGYxNzl4MGMxQ01nMUw5M0QvL0JRU0grSGlaM2JrR2FweTRvanZ2b3kxUkM2UzBGVEltUW9JU3lSMUF2b1Vzb0NuMTArNVhTQXc5V1R4dXRISzU0MExoZzFLTjk0OWYyb3ZlMUNuUXhGU2ZObnZPakRsMWUrT0Q4NWx0VjYrSTBmWXYwc1M4RXZkVDQ2cVI5Uyt2bk8xNmFKSHdwZnREOTZqc242c3hGdXgrc2JibFN0KzcySzUrbCtGN3MvdkxnclY3U0xmN1hOeDY5ZnFEOGpjbVRkdTJwU003NzBIcmY1MVJtOTU2dCtXczNiNjZhbDdIOG01NWpYeDgzOXl2REc3TnZIdDc1MVlYNWtsL2kxcmcwMFVNK0twQVhiaWhhZCtyRy9rM25sY083aDhsTmcvNVJyblZkM3lwVVAyanQ5VWRyMzdBMzNseDVPTU54eTcxZGM5NWRkTjdodmxHKzRGaHN3RGMreWxRMDZIU1BIM1lWclhvanVWSXNZeTYrZWpEb3kwK0NoYmUrYmZRODUzaGVibDMydzVRZDAwNldYeTkwMW43dGQ5TE9mOGNlL0Z0dTFQc2xsQmdrSWpKcFFhUmFPNkZLcUxpYXBlNm5QdmFQeEIzaGZjeldoOUhIc3h4WGRpTW1wSFVYT3BsVXhRcjN3SWRmeDRiblNXNFArbjM2Nzl1N2J6blVlN3U5S1I0VHVBcUhtNGFaSXF1SFZJZVZEdVkvTFV2TnovTExidE9UWDJwdWRzKzhxWm00dGlmL1lXVkJ6M1kxWWkwU0pZSlIrZ0dKS2RIS0J2YWxTSVIvcERYS05OUVUwVlkyMGFVRCtBbG16Smp4dEFuTStYOHhjcUZKanZuMUVHSVQ1SWNVMkhUWmp3SnNKWXN2N25yajZKeXZpNmU4czJQb291LzZOQVhHMzcreWVyWGZhdzZoY1YrODdOTHpTdXJJNXo2K0UrMjk0RmZKaGZmdXYvaGJqN0hmZi8vUi9FMmZlTzd2L1UvUDhtYTM0QW5LZGE5dVhiUnl4b3VWWnNjdkd1L1BmZmp4QWNHa0FmSHU3K3c4c3UvRGIwcm5IMDdwTmViTm5iV3ZUTThOYk15eXVYUGd3bWwvMjRLdlFsWk9mZldyQVl1dGxlVnJKenBKWDY2dGYydDhnL0ViNzdqNGhoN2pCU2VHOXlpc05oMjdaNXoxajJtYTBkUXZHZmR5M3Bvc0h0bjZYTS9QUHJrUzNlZ2VldVhxNDF1K3IzMCtjYm5rZ3djckYzMzVxUGRYVzhvbDlWNWZMdnZ4bEZmcDFORnZNQ25YZlM2T1dsSzdxdHZMTXpmN2p2cWhzR1o1eUk3YVdWZHZoTjZ2MnVkVVV4QThOK1ZhMG9rVjJwa1hKMmFZU3F3bzhHSTNMYnpZNFpzTEg4NmVHM1B6TWZGaWh5MmxKZ1V2TnVlLzRpdU1Kazl1MDd0YXRxZVoyYmpNeWVTalNsQXMvb0tFUDNGbWZVMUIvdjRCSm5nQ09XZldVVFFWL2xmNDQ5c0ZmOUwrTDczUmdrVzFoa1BXYjFZV3oxSSs4cHowS0grQmI4djk5NWN2S0EvLytQMVBKeTdzMmIrWG4rNnRtUzFGRzF4THFKMnpQMVh2RlRTRy8zaGt4YSsvQzdWM1g1VTgxdWVzdWp2NStTTmVUajhZWFg4UkxndE9iZnArdDdMc3RyeXk5OFdndlBqYzU1bytDaE9iSWcvV3ZXbGF3WHc2L1pOZkM5NVd6ZmppOVQzTGp0bTh5dDdXcmUvOTg0djFsd3JSc0VXbkxyejE0OW1aclcrMGZEUnB3ZlA3L3VtNktXWDUvaVB6dHk3WmRIWno5OVB4di9jKy85bUxTNi9wSGplOU9QWFRWMnltRjE1eUdCbHg1bWZVRUJIMXZuWHZIOGJZL2xHMHN1SGEyTzlmL2VWc3BiM3I0blZYNXpzZVBOdjRucFk2OWtmRUIvS2x2WmE3UlFROHJEZXNSdHZxNGhybjVYaVBtL3RUVUU3eHZUMU5jdW1QYmQ2b0dDUlN4TGtiRCt4dTJnTnpsQTNWdmxNRkZ1N3EwN01wOHorZjFPL1c0OG4xU2FjYTluejQ4U0Y1aFNrV04zY1RnaTlhTThRVTVtOXJrbktoUlRoOFJFeXNmNkFwQUJkRjh1NEJ2VXdtLzREdXFVR213SlRlNXVRZWdmMVNBbnNFQnZRSzZoSFVxMDlBajdTZzN2N3B5UUVCdlFQVFV6dTV3SWljdEI5aVJLZExOanIyN2F2Zm1iMitjUnI5OXArN3dLZDZxTnk4QXVJRndWekFqc0dLd1lDeC9VN0VXUTlUM3g2bUlPSUNreTFjNENnVEhGWXNYR0RZdjV5Z3pRdit4UlNGSmdZekxxZW94MExhaExwc1owRUpUU0VybGVzM28rdGpHdHhIckI0NTg2dmJELy80Yk4rWEIzNyt6U1hoZGx4RDVoRFJsNGMvYmJyeWFNVzR0eWQyQ3pJZUVJWEpMMVhPV3JBMy9jTnY5dnhJajNMLytIbjNtY0habXg3K2pNWXVXN0ZJYzF6ODlzbEtUYWhwdzFyVnNkMUR4djNTUGZEMTk5NU03SHNvV3JOWjMrancyYmtTaHcyOW16ZnBHOTQwckp2NytuZGVtcXZwMm9VRC9SNlBGZ3cvbURPdk91REhIZHQ3eGlTTXQ5cXFMR3ZRcG41Y3dIeC9kcmFudlU5NTJBY0I4d2FXRHh3ZE9jTjlZZXRXaDJPTGZyQlJqanpTZmF6L3VINVR5dGV2V1RDMTNKajc4K0ZOdC9hRk9SNVBpWjY3TTE0OVpISEYydXdET1Y1SEgzcTVOdHhtTjBpMy9ueENXcm5zeXBSM00rZXQ2dk5WTnR2NjZwZVBEOVV1N3lOdWZWNXhzRUt4NFVEcDhaOUtEbjQ0eWpEWWFXZkVxek5MVC81MjZ0MFhuTDlXTEx6K3huc1poZ1VaejIwNFZoenRlZDNHTFNyMWo1WC9VQTd2dFROaDBvaXZodjR6YVBGanYyKzNUbHd6ZU9vbk16L2Z1bWZxbS9PeVhzdmZlR3Z0Nys5OXF6N2I3MUhhSjlrRGJYNG9tcmYxbzczdjczN3A4L0tFTmJNVFA1VU5TVG5sOXRPakFZZjlwYi8ySEppMnRtL3VwSmdYUGc1ZE1xSmErbnJkbk1RSHh5YS9sdnhOVmNYaGhySlBjNGRjUHVDMzdQYldCMXRNMlUxVEl0ZmZMSi9lc00vbWNPdHp2MndxNkd1MUxlRno1ek43ZmxuVytKcm1idkVVYXNRdWw3a0YyMCtQMDcvUVA5SHB1d1YzSmgrTy9LRG5CWS9YbjU5d3Npa3c5QzN0M3JlWTZTVURmenA4cnNjcUliMDQ0cmVmdnFVL0Y2eUdJR0FOUWVBbkxnaElrbFVaZ2NUM2E3cWVZQ2NTZHlvUkwvVmMrSSs3dm1tVXMwb0ExdWp2YkhMc1ZDbHVOMVl3dys2YzN6UjArTTNZM0Z4d25tQzZtZW1acWNtRlpqWjRXbUZHYm41bTRTenMzRTE5VFlHbVh2NEJ2WHVaOEVrMXdKOFVlNWx3OFg5M2hQNVgvdjI5VlZsYnYvc21ZcWxQMFZRLzU4djdybngvWk1WSTk1aVBUbnpyRkcyd3YvUEZCMTlFZlZSb1lydjlhUDFsL052S3lHVXVJVXMzVlNTWlBNK2pxVGRlMnRlMDBOcitWenRoUmZQQzQ2NmY5aks4OXU3ZCs1TTF2bzlldXI1QWUrdDY5UHVyRHJySE5iN1JFdmE1K09TRXpTZTNoQWhYLzdZdTZ4K1R2ekplQ0kvYlVucnlCMk80bjFkTjZZaFJzY3hWZ2UvdlU1WXNNZVc4ZG0rTTZkMldPV2VYYjcvaHRuek93MVB5ZXpZZngyWEg3Z2hiOGw0RUdqb2t2WnVYZC9yNjVWZFBXODBkdXZxMytSOTBHNklRbDd3My8vYW9tYTFVcFRiRzVsWGtZQXEvL2ZGRjkvQTloM3ZFdjdkWk56UFlmOGJ4ZDc1N2J0NC9WaVhUTzdXMld4LzkrczQyNm9SK1dQemozMFNINmxscG0zLy9FQ1R5Z2NtKzNlT0lUQUlBRnY3OHFhZEw3TDYxOWtJaDJGK3B5Y0ZLek1jRUpZVnJrR2x1QmVlYjV5NHh6WDJqV0dGWFV6SnBVSUxYOGg4ODVJOThMa3ZpM2g1emRjMnExRFhKLzNYekxIR1k5WkZxMWREcXRSOUZGU1RldDViN21VMHhYRkNJTkVFY3FoNWNIVno2d3Q4L0Y3YzM1OE9NMkpXVGdCQnZFUkFpVE9HbVVJdUFFUFR2bklueE9nWnpvLzdOOHpESTJtSDVva05KZ3RBKzM5N2M4ZEdNYjA3TUdqbWMydXBYK09LNGJFYis0WW02bDk2czlUc2pXMTJXblZJN212NDBtcFhIclBoMjlxQXJvL2RzVHF6VVhOWlNwVFY3WnQ1OS9XVFRjOVNkSzNWdlNrUU5iMFJjYVk1VGZqdml3NlZYcjc4eDVjdmlnOWVXM2JYcSthcmc1bHMrQm4zZTd3OGVYWjI1d3MvMlYrc3JlWHVkb3Q5ZFBGV1MvM2J0cW40ckovYzRNdEx1VmtyU0M2cUsxOWtYcmxpckEzNDc3ajkwdXYvejNmT2xEYmZ5bm4vOHFrVCtYYjBrZVhIelY3V09QMGEvL3NxUjN0MG52TC8veDcwdlMwTmVPaE9YNzNiSDFMaG5wamxwSE9Vb1VkaWRPcStvK0dYQVA5TVR0L2ZvZWYyM1YwdVBqMHk0OFc3ZXNxeWFmbEZuSHN6YXY5RnBkb3IzVDZ2ZjhRNjBtcUZPK2VSNVhiWnJTYlAwbU8rZXp3ZHYvK0czcHBkM2ZyOW1mV0h2MnVnakw3ckxQS2RMQjhTV3ZUZzJmTEJpNy9idFc0WlBibmd2NUhIeExMZmlLcVVwL1VhSWJJSzZvVXJ2ZG5Md3plNDM5OXlQT081NzVseEFjWlNuVDRSaDR0aGJDVCt0dTdqaTNjYit1ZnZtZWhWYWRic3ozVzMvT3lVSHZlSjNiWjN5L01KVjA1TjM1S3lTcjl1L2NVaXpMUGVQUlFGWjIxcS9HOWxRNXY1SityNTN0YS9KMHVqbmUyd2U4MmJ0VmJjZmRtNXBUTjB4TTE1MEp0Z3ZwbWJabHJVelA5eGVYVDVOL2ZYUzErVFQ5RDBEMXR2a1ZJOHI4OWhmL2RQOFJyZXpQK3BHZkZKNUovTFNyNVE1ZDZIMDVZYk1obXM1dHo1WWZzTGYrN0hka1hGSjU0YTdyRHJYMHJQcUJiOVJxcW1meU4vL3cxUmlQZHRVSWtwcEN3VjJTMDV4bHpSZFh3UG1Mdml2dU9JQWs0bmJrTjUvWjBOMnZCSDRROWdJQ2pEMTdzY0ZqVDZrNkcvQ3hmLzVHMHNKL1dUc29ISHNvQ0Yyd0o3N3NMa2wzMEhqOTlHNW5JMGxEc01EZDkvZGxlajJYb2lMejlTYlkyTTIxbG9GcVlXUnUxODV4T2krN1R2MXFPeWN0RG1vZm9YVmxvWitYMUlLLzVEVEMyMW5wYjAyWjlra1E5Ym1xc2lWTnpNbW5QcnVuYmh0RXQ5RG03L2UwSDNUYlBIbXI4ckhORTVTaTI2bVQ3OFJFT3NwNjNuOVE1dVl6N2VIZmp6KzNHRS93YlFQTSs1OW1uMnZmOUlxMWYzdzNaZUMwbXB5MG5yUFhGZWRhdC9qOUtCL1BQeitvclh0bDBtejFrWjZYN2V0cTViUHFGdjIvRSsvZjk5OXJJUHI4QVRqNnRuNWwyVDlQNDZjY083MjdjRnZ6ZnY2cFcwdmxicDhQWEJyMmZnYkMwZk1WOTlkMVhQTTFTWFA5ZGpVSy9ISXh3TmJBMDV2Rnp5L2Rkdm1wVUZ6VHIxYjdQdExkTUpiYnIwOUR2WExTWHNsYnZkSys0K2MzZWQvZW4rM29QU05YeWMybjR6ZFg3YnN0YjBIM0FvOUpqb1pkeDMzTWdaNVZQUWIydWZ6b3ExTE4ybmNQOWlRM3BUc091V3lNZkxkaVF1dWVJdy83VFpzWU96aG5hTmZNQWlhdjVnOXJ1ZVg3dC9uamJjZkdUNWorME4wZVc4TlhUTHhtd1BLN2Z0Y3pvd2FkcjNmS3Z1YjdwRjduV3BEaThLdUhqeVVQL3RTL25YRGQvdkRWeHo1cVY0eitwdDVielFOanpSOThPSGk3NXJHdmJmNTBiZGIwcThjWEQ3M3BkdG5idys3SHVuOWdkeTQ3b09YSnhkZlc1UXljK0sybnZPL0dyMHlhZjhNby9IbjI5bUhqRy82dmptbzc0aURsMThOWFhoWUhIWGt6TnJCUFF2Zi9qWG40VXcyMFZjK2Z0TGJsUU5IOUpwL2Zzc0N4NHRWMGZmTHQrd05yODZxT0hYcDdJS3k5dGg1RzJMbnphZUV2NDdnK2RUM0V1ZjJEZ3BheU9na0tJNTg0ak1ZQlhlT3EwOEVaY3MzbnZ3ZS9Xbi9KWVAvcVJCRlg3NzF3VEgvTDl3WEJwckdjc0VOMzZDT3FCNWVQYXcwOHQrNjlJRjlDN3NXTm12N1M4bEVVNitKQVFFa3pFMndDSE94cGhoVHRFV1lDL2w3WWU0dnhpODB6WDBQTTg4SzV5NDN6VjFtbXZ0V3U1RDhCS2E1ODB3dnRFMUhVNnBlLytvMUt5MDN0UUJXbHBtZG5EOHJOYS9BTDZNdzJ6U29mUURhRktnTFlMVW9DdUd2aGVFcjlJbmt3elh1dzloWlVDcmdQeVkydDM5WTdzZHFuL1lpTnZsdTZkcUtTL0d6MUg2bnp4Vk8xcjhqTGU5Mk9YWHBpcER5bDAvTllwWWNORS8wOHgzNDhGRCtGOW56V3V0ZXVDRnBmRzcva0EzdjM4djhKblcvdnZmYTVlUE44NWU4L0hwNHpLaHp6TktpVStwaG1uc0RRbDZQUGJubGo2bmZEN1QyODM3bjJ2TXVhOC9zMU01WTF1L0t6YlJQUXArZk9kdjludnpsZFVzSzU3MXgvMU5QT3R5bmZwSERualViUk13N3R6TmFNdnplcnZaNXdXZHFZbVNxcXpneloyeEYrZFY1OXcrOGVTKzgrOFZIejUzYzEvdW5ISTlOUDJ6MnVuM3kyM3QybTFjWWwxY010M3RlZXRkbTRWblhRd0ZPVjVxUDlEZ3hybXBIWkQvSlVVbjkwWTgyL2JEdDYyK1VDMGFHSlFZRnZPaWxmbVhyZmErSEYzMzdzNWtWMjhZc3pNakovZURqd2tPRFJGYnJLQi9qd0pJWDVNUFRwUWUyRC8vbDhwdXZhSEtWTDRkOU1QMkhRVDdtOXcrTmowMHBQYVJON2JPODlMdno5eDdlVmEycTlMcjgyZHJsSisrTVR3MytmcHoxeXRjR1dzMncrc0pxNnpSWFJWMXk4czdtQzBkZGhIWGZCUit6TTk2NWFPN1p0UHpCcXFUeWMranNxdkI5WSs0dFh5c2VGdUd3b3RqMUpQSStzdldkdFMrRXpkRDFQbnBxOWVyM1pzL1d0MFM4N2ZyaDcwUGNpMytwZXJoLzZzZkRsbC81Y2RwTWRkT3R2aXRtT1ExN2ZIYTdlOGEwYTV0YkhyMytvN1Q0VnVaem14K1piZ3VqRm4vMzNiVHMxTGVlLytMZGhPZ1IrNHRINjFmTjdCYmdOdnVuWU1uV0YzNWZmM3pOK0lPckZyd3orc1dFNklpd0F5R2Z2RE45bktRNFl1b2ZzOTQ3dUM4N2U4b25zUVZ5MjlreG4vbVhDTGVZU29RMU5FV1o1cjc5dnc1Y1Q3OE83UGhzcEhydVlleDhlQ01XQy93Wnl3OWVnSXVPa3RUZnptVFpxalM1ZDNRVSttUFh0dVNVcXM3emVwRjIwRDkrYnd6N1ExbFp1R3lqS2MyaUMrT2ZZSXF2OWlrMlB2VTdmUEZQZmk5eWxXZXg0VTkzZHZ5c3ZOekorY2w1R2JQWUxyRlpXRUtoVWZWZTg5RGtBd2VYZXI3NFdkT2J6Z21WbGNlNlRUbHg0Y092QmtaRTdBOThvRHZRcC8rSEh5ZjJ6VDRrdlBGeTk5a0RiZnhMSzhWTmFkc1BYbkgyclJvdjZYM216Ulc2WlptZm1qNDk2QlArd1lUUlgzMXhhK21CWFgzR3YzdXR4WlNWTk5qTDhXWFJrTWJWcjN4V0tUMjkybVczN3JPZXQrNTdmNS9wK3ZIazhXZk9EMzFZdDJ2RDVZVnh4elQ3UDhvTys4Vm41MWJVNm1qL21leEd4c2p5L1dNTFoxek1TWnBqN1JiendqK2V1OTR2ZkFPNm5WTm5FMVk0Y2ZQOGd5NVh6YS9GL1dKejd0VXJ0ZzZ6MllaZ3V5MUhZaGZkYXB4MlU3YzQ5NzJ3d01YVHg0aGNIOUJ1djV6d252eDQwdU51N3QybS9meEdYdkR1Uk5PUEI3STJ6WFM0SGg4VnRQaU9NVjN1OFdhL1Q5Q3FFdG9JeHhORGg0NnMvRXRvSlZSMUk2YTUrSC8ySXY3MEQ5b3NiSEs4eWNuU0pLVWRIeGhTTUhsN2k4amZubHdjNHdPbnYzKy9YbjNIUG1HUlZlbzd5dytmbWw4UWUvbmUxOE12MzJwYzc5NWpjSmRYSm13cnVyaWQ1dVQ4dGFtemYzNGd5VHZkRkxIcXE2TUw2UkNYcFZ0WCt3MDlmbTZuLytPNCsvbWphMmZvRHFhTnpFTER6L1J5T0d1K2tCM2MzYnE1cWF6V04rdnluRDB2UHplc2Q5bndpU3N5ZlZjZFdwRG9QNmYxb2RmOG9FRmxmMXg0dmFTNDlQTVZKNzN2R1kvTU9QL2I5bFh1OWE5KzFpdnNpNGdwKzNZdTZOdnc4cHl0Z1c0cGdabXBmUlY1MHNIT1ROWEFxT3NMWHp6VVE1UXRQQm0zOVVDdmNYWHBTV1ZEZkwxZ0N2TlBMb3V6SC85OHIrSzk5WmZLcTNWTHE0L25WNjA4VklQV3VwZHVmZjNMSFdPK29xdS9HcDk1ZTMzR3hlbVBaNjNWSHpITFo0VnQwVS9LVWt4ZGViWFNlZVZYanh0TyszeHYzZWZuRWI3RHJ2ZGU2QkUxeTZWLzNkY0gwNEpQRDZ5NFpPRC9xcFZCaUc0VjRMOHhmUmxLWjZIdUszZ0U2QndkZ2loNk1EMENDZWdZT2did2tmUkl3R1BwV01EajZIakFSOUdyQUY5TnJ3YjhmWG9kNEIvUS93Ujh0d0QvdUhlNFlBaWlCUkdDb1VnZ0dDWVlEbmkwWUFUVXh3aGlBQjhwbUFINFRNRXIwRm9zbUFzMUpZSVNxSmtuS0lXYTF3U3ZBMTRtV0FGNHBhQVM4SGNFTUl2Z2ZjRXB3RThMVGdOK1J2QWw0R2NGM3dKK1VmQUQ0TmNFdHdHL0kyZ0IvSGZCSDRDM0NvTVJKUXdSaGlDQmNMQXdBZkRSd2tUQXh3akhJRm80VmpnV2FzWUp4MFBOQkdFRzRKbkNITUJ6aGJtQTV3bnpBUzhRd1NGUFJJdXNrRUJrTGJJQlhDeVNBUzRYeVFGWGlGU0FPMXB0UlpUVk5xdEhTR0QxaDdVRTBkWlNtekdJc2hsck14RUpiQ2JaZkFyNGNadmpnSDltY3dMd3oyMU9JdHJtQ3h2ZzNPYWlXSVJnbTRwaGZMRzFXQVc0bzNnMW9zWHZpdzlDVGIyNEhtb09pWThDZmt4OEdmQXI0aWJBYjBzbUlVcVNMTWxFQXZ4cjhvQy9KSGtaOERtU1Z3RXZsYnlHYU1rQ1NUbmd5eVh2UVAxS0NXaEg4b0hrUThCckpNQ3RaSnRrQitBN0pSOERYaXZaQjNpZGREU2lwSW5TY1VnZ1RaSXVCdnhONlJKRVM5K1MxZ0Qra1hRWDFIL01DQkhGaUJoYkpHRHNHSHZBSFJnSFJEUGRtRkdBSnpBVEFKL0lwRUpyR2xNQU5ZVk1JZURUbUdtQVQyZG1RZXRzNW4zQTF6QjFVTCtmT1FBMUI1bGpVTlBBTkVETkp3eXNrYm5DL0FoNEUvTVQ0TTNNWGNEdk1ROEEvNVY1Q1BodnpHK0F0ekF0MFBkM1d6R2liQ1cyRWlTd2xkcTdJOHJlWUc5QUFuc1ArdzJBYjdTSDlkclhPRVFqeW1HRVF4SVNPSXgzR0EvNEJJZUpZTzlDZmdmUXlBQjIrd0hZN1hwNlBSTFJHK2lOWURsdmcrM1J4Tkpvc0xHdklUOHZ1TURiR0EyNnJnZGRIN1k2aGtSV0RWYkF1VldqMVFuQXY3QTZEZmxacTB1UVg3TzZDZmt0cTUrZ3RkbXFHZkNmclg0Ry9LN1ZmY0Ivc2ZvVjhJZFd2eUVSMkFsWUlHY1BSTmRDMFBKVndIOFEzMEFpOFUzeFRkRE9lc2tHSkpKc2xBQnZvS014a0krVmprVWk2VGlpcjAzUzdaRHZrTzZBbXAzU25ZRHZBbjJKK0JWS1VBTjlGb21TODVOVEVKczZLejhMemN3d3ArU2owcXprd2h5MHREQWpPUk50UVJva0RBK09aWkZ4ZU5RWUZnWEdSWWV5YU5DbzJGRDhoUjdFZjhkRGhPeDVuRUpXK0xjbkNFNGphOVNOeC9HM1FtUThMaVMvcmlRazN5TjVERlFTcEdndlVVZ0taU3AyeEhBV2YxT0V0RE5JeVdPMlNHWFJ6dzQ1SXFlcDVuemdsZVFiU1Y1UDh2TWt2NHYvdXBpU2tOeUo1SjRrRHlSNUNNbGpTSjVBOGdxUzE1RDhRUGJVN0tuVVVaS2ZJUGxaa2w4aytUV1MzeUg1QTVLMzRweTJJbkpWQU1jcXpCMXlSbXJrQWpMVS9oK281L1JLRXduLzV5VUtOSVdRSzlKQllwRWIwaU4zWkVBZXlCUC9VZ2Z5Umo2b08vSkZQWkFmNmtuK0NDd0E5VUtCcURmcWcvcWlJTlFQOVVmUG9RRXdnZzFvM3dZMExRR05NcUE1dXorcG83Q040Qi9zUWxaL0M5cGorM29LbElGTnZVcHh2MXc1bHBwQ3phWVdVWlhVUm1vMzFVaWRwMjVSTFRUK0pVY2Z1ajg5bEI1TFQ2RnI2S3NDalNBZW9zbGh3VjBoSzR3V0ZnbkxoQ3VGTmNLVHdrc2lPeXVoOVFUckhPczUxbzlzV0p0bE52VlNsZFJUMmtjYUxrMlFwa3VuUzB1bEc2VzdwUmNabG9sbUpqQTV6RXFtaHRuTEhHY3VnSDk2Wk12WWFteDliUWZZUnRrbTJXYlpGdG1XMmE2MHJiSGRhM3ZjOW9KdGsrMGpPOFpPWStkck44QXV5aTdKTHN1dXlLN01icVZkamQxZXUrTjJGK3lhN0I3Wk0vWWFlMS83QWZaUjlrbjJXZlpGOW1YMksrMXI3UGZhSDdlL1lOOWsvd2ljcThiQjEyR0FRNVJEa2tPV1E1RkRtY05LaHhxSHZRN0hIUzQ0TkRrODZzWjAweUF4K2Q0Vi9qMFQwS3FEVStjeXU1ZVVoYUFCRldqYWs5TzZJWnlIRTNnNG00Y1ZGcjNCV2d6TkZtVm85NVZabEVGTHZwNmR5LzQza0ppM0xESjdyNW1keTZsMW5jdHBYZWd6VU9keThkbk81WktXenVYNUNpUVdXcFRmQW1rSVVBYy9xOG9RaE5lTzh0cEpuZnQvTUJhSmFZdjJqN1loTVdWUjNxSW45RlpnYzJyWUh6NndCL3B6a3RpU3hNUHBQRnpDdzQwOFBNekRpMlFFRWRpdUU4SmZxamZ4OVRjNHVGWElRNWFIQTNpWStQUitXOU40V016RGxUeXM1ZUdaUCtsM2lZZXRITnltNFNHL25tMS9NdCsyZEI3TzUrRnFIaDdnNForc2Ixc1RCN2RMZUdqa0lXOTUyOU5Jdnk1MnViMlFoOHQ0dUlPSFo1NUtmWTJETzZ4NHlOZnZDSDhhOVk1RUhzN2tZUVVQYTU5SzNjakRXeHpjeWE5anAwL24vYlV6cEV2NVV1Y2RzeWVObEFYZ0JmRnY0bkIxL09yMjhEYXlwNlh6R0h1TlQ5dXorM2dMMjdlT2gzYzVXRGVJVUR1Qlh4Nkl3bEUwU2tBVDRPVTZCMDFIYzFBcFdvektVUlZhaHphaFhhZ09IVVVuNEl4L0VWMURkL2plWTNsWXdzTnFIdDduNEg0WkQzazcyRi9Fdy9NY1BNRGJ6d0hlRGc4MGMvQWdyK2VEZlAxQmZyejZLQjd5cTZodjRlQ2hHQjd5OVlkNE96MmN3TU10UEh6RXdTTkR5YXIxYUNpS1JXUEpud3Jrbzltb0JDMUNTMUVsV28wMm9tMW9ONnBIamVnVU9vK3VvRnZvTG1xaGFFcEN5U2cxcGFkOHFBQ3FQeFZDRGFWaStSRjVEbzd3V2ptYXc4RmphaDd5RWpqRzc5eUdMQjd5SEgraTR1RUNIdklXMUJqQ3c3MDg1RmYyS2U4NVB1VWxkcnlTZzUveGt2dU1sOWdKbnU0RUw2blArWjMvT2QvdlpBb1B6M0x3QzM0ZFh4em40S21oUEt6bjRHbmV3NXptUGNZWmZzZWU0VDNYbDU2ZHJmSEx3TTRXZlhFK0tUUEVNdjJlWW5VY0ZhK3ZpenlYMy9IUysrNGlEeDl3OEZJb0QvazljYW1HaC94cUwvUGNYK1pYZVhuTGsvdnBNaStwSzlFOExDWTBVbWczd0FrbUVFNHBvWENHalVkSktBM3hXcnRTemtOZWF0L3ozdUg3Q3h5OHl2djNxenkvUC9Eei83Q2VnOWQ0cVYzYnpjSHI2R2w3OW5vUUQzbWQzZUM5eUkxeVF2MGNLa0x6VVJsYWhsYWlOYWdHN1VCNzBXRjBISjFCRjlCVjFJVHVvMGVVRUU0NkNqanJHT0MwRTBnTm9FS3BLQ3FlU3FMU3FDeXFrQ3FpNWxObDFESnFKYldHcXFGMlVIdXB3OVJ4Nmd4MWdicEtOVkgzcVVlMGtHWm9CYTJoRGJRdkhVZ1BvRU5wZmdmZTRGZHlreS9mNUNWKzZ3d0hmOXpFd2FaRkhMek5hL0FPcjdHZmVJL2V6UENROTBjL24rUGdYVDVDM09QdDdSNXZmL2Q1SC84TEw2TmZlRS95WURFSGYrWEhmOGlmVUIveSsrWTMvb3pTd3N1MDVTRUhmNS9DUTE1emozaE5QdUxYOFFmdnNWb05QRHpCd2NjemVaczI4SkRiTHhURjhVZlJPaDQyY0ZEQTF3czllY2l0a3hKeDhxR3NCdkp3R3dldHVVaU4vLzBvRG5MK2dCTFA0U0huUnloSkVnODV6MFpKT1k5Sk1meDREQmU1S1ZzdUFsTjJmanprNTdmbjZ4MU1uZll0NVhDMjA3Nmw1QTg3bHhXU0xtVzl4ZGtJSXFvaXFOUFpqbExzNmx4VzNubGlKMUtPZkg5SG5rZkhwTTU5SEV1ZTdPTzBnSWQxSEhUV0Vab256MXlVY3dnUGVjMDViK0xoVlE2cTFUeU1lY3BlcE5SOEx6WGZTODMzY2xGM2xvTkxTR2VlWGJLZU5wcUcxNlpXejhNaUhwN3JyQVdkbjBVWkhsM3N2MW1PNlZLT3R0QVNMaWQwS1kvdFVwN1VwWnplcFp6VnBaemZwVHl6UzNsMmwzSlJsL0tjTHVYaUx1V1NMdVhTTHVXeUx1V2xYY29WWGNwVlhjclZYY3JydXBScnVwUzNkU25YZGludjdsSSswS1Y4dEV2NWVKZnlxUzdsczEzS0Y3cVVyM1FwMytoU3Z0T2wzTnlsZkxkTCtYNlg4b011NVlkZHlpMWR5bys2bEZzN2wxMVJsekxkcFN6c1VyYnFVbWE2bEdWZHlwM2ZaeWxYWGVleSs4ek9aUTlobC9LTnptV3ZoQzdsMnM1bG45TE9aZDh1OC9zV2R5NzdHYnFVdS9Udk9hQnoyWFMrY3prZ3YzTTVVTmpaKy9RKzE3bmNKN0JMdWJ4ei96NFBPNWY3WWNqQWlaaW13dWxIaUVhTzVFWWU4VGZ2OHdUemtKVGNpVFBrSHR4T21Dbk1STjJFTHdyemtZemNlaXRFWXBFZGNoWjFFOG1RSzdudmRpUDN6Z1p5czl5RDNCMEhrQnZoSUhMekcwenVmTU9aTmN3R05JVFp3dFNoNGVSdU40bmMwbzRuOTdNVHlHMHN2b1BWQ09RQ1BYRFRROUFiT1FqNkNnWWpaMEdZSUF4NUNxSUYwY2hMRUNlWWdZeUMxd1NMMEhCQnE5QVdqUlRxaERxVUxCd3NqRUVwd25oaEFzb2p0L1VGNUo2K1VPUW8wbEVDRVN0aUthbk5KemFORkNPWklubVJzcE9VU0Y2bFZKSTZxWUJTUzcrUk5sR1RtQjdNS0NvZjMxSlQ3ekN2TWU5VEh6S3R6R09xd1pheUZWT045anA3ZCtxMFE1RERVT3ByZkdkTU5hRnNNUFFzaTVSUElDV2VDWEFPSklqQzRrVjgyeEpJNVJhMEt5R3RoclFlMGlaSThGWXIzZzN3QUtTalBEd082UlFQY1RvSENjNmU0cXNBYi9FMGNLSVNONU0yU3Z5QXAzbEU2RWlTMEhDS3NPSHFBZWVnSFNTRlJWSkRZaUY1UXZJRitnQ0FRWkFHV3ZDN295TkpRamwrSlhBT2w4UkFPWUZQU1FSU2ZHcXJmenFld3VNWkZtMDVuZWdzKzNXa1FvdHhadlBKY3Z4aUhpL3QwcStkanJwdGM5Ym1rczAxbTJhYkIySWt0aEk3aUZWaWpWZ1B1QkdTbnpoUTNGODhDR0E0Z1ZFQVl3RW1paWVJMHlCTkVlZEJQVTRUb0c0NndDSm94MjNUQVJhSlMyeWF4UXNnTGVaaGhiaEt2QWJHM1NUZVFlYllEWFVIWU00RlVJL25QU28rTGo0RitGSHhPVEwvVWZGRlFudFZmRWQ4MytZU0h0UG1yTGhWSWhUdndIeExKRERQS1ltRFJDWFJTUFNRak9KQk9HRWVKWDR3RGg0TDh3UUphUGtrQ1NRSmVDWXBsUEJjSkJrcVJsQ3Z3V1ZKRE15WktMNG9TWkFrUVYwSzRST1BrU0hlSWNtUTVBQ3ZoSGVKSHlUb2c5Y0VzRkNza3N4dTU4RVAxb1Bucm9DeDhMb0JTb3JGVlhnTThWSEpJckxleFZDUFpZUG5BdjdKbXFHTzhBRHpTbUlrUzJBZDU2RGRnZUE0bFV0V1NsWkwxa3MyQWR3QkVQT00rVHZGODNnWTVJTFRDZUFKb0hpTlpEYVdHZEh6V1U2R1pMMkVqNDU1aVN3eC95cUFlc201OXZyMmRzbEYzRTcwaitWN1ZSd3V1UVVRcDJiQTI5Y3RlV0NCUDNvNmpaU1crRWx0SU5tSkYwTUNQWEU0bGdlZmVMMTFUWnhzQUUrVUtuaW9KakFOUXdtMjE3eDJDUHFWc3VJaVBrMlErb2luRTNsaG5lMldtbUJPRThFWFMwM2lCVHkrRzJUdEI2bXJYTEdkYkFKYng2bUxUakdVOW9FMXhJQk9LOEJlK0hycElLNGU2bklreGRLaFVJOGt4WklVS2RpWGRDelVnOTZsazBEbkdFN2hJU2xMQzdIZUpCTHBiTmduR21JTEVta3gwUXUyUndzOXdKN1V0TXVIMTYyMGxOZXhrWWV3UDZSbDBxVjQzd0QvRjBHZmVLOWdHNEE5QnZOa3dIZ1ljbkpVdE1tdmJUeHhyQ1FKNml2d2ZwQldBZStReU42eTJGL1lqa0dlNnprb2RzRHJ3R3NpY0JOWlN5MjJlWWtlN0F2UEw1SFdjZllHVUk4aHlKbXNGZHVoOURDeFE3d2YydGNwYlNRK2lQZ2o2VW54WXBDSm4vUnMyOTRtL3FpZFg4NEhkZFg5MDJ5aGt4M3d1cGRlZ0RWZUEvM2hoTmZiRExBWjYxSGF3dWxYa3NJZ3hncjdKa2tDaG94VnU2NzBvTjlCWXNRd1FDUGpkRW9TOW5zNFdmZ2p3bk1YMi80cnUyOHZZN3ZrZkNibnAxWEVCbmpaTUphNG50c2puSi9EaVlIOWg1TWtWTnJJK05sY3NreHRQb0VKaEhWMHhzK0pqOEk2c1Y2TW5GMWhQOFQwQi8vRFE4djUyK2ZrSVFQN2dBa252Zy9HZ1RyZ2w0bmk2dHBrMm1hYmVEN1FUZnZjVEN6UUpmSjg4TFpoWWZ1QnpBUThqMFREcE1FZVBnVjZER1dtaUV1NC9kd21leWJQcHBxazZaSWtwZ2owNlFNK1BCRmlEZGdoVXdJNGpqdDZpMzBFaVZrQXRBdXcvK2Z0Rld5dGZWKzA3Zi8rekdKbUdWUFpKdHNPSFRIVjRrUm1uU1NHcVJGWE1OdVlXbTRNcGhaaWhCSHZCUW1Kc2UwNnFaUGtNSWM1Zml4dGtvekZ4MUN5NzZFUDAyaURiNkNiUmZqMjVUTEpMenplVFhBSnFUZVNHbnhIVWk2eXh6VlcrWkNMeUtjOFNJanZndElJM3NDMWt2d2FvVWRDZlBNaUlUV0lwMTlIY0ZJakpEU1BsNUthVElLVDFzZFRTSTJPNUFHa0J2TnpTK1JBY21lRXYxSGtURWE0U1hKOHZ5c21PWHFNYjlYM2tkYlBDWDB6TUFyOElBWEpONk8yZjFjZVBiNEMrVEFPUisrUW5Nd28zRTl3TWo1S0k1UTdrUUJXRFdjZS9EMFgxUHc0Q01vdDFuRDJGT0FidUJaU3ZtYXRnZkl0c25iU1R1anhIQzEvNFB1MmEyVDkxMW9IRWp5TjVNMndrbnJoRnNqalcxZGpITk5RK1ppZXlvZFJjSTJDNUpoeUFtbXRKL1VUOEFoUUw0UDhQbGZEMFpPNThOeVFBMDBiSDNBZXBIekpLTDRjdDZRMkhzcEx5S2hMY0cvb2dXOXNXZ1EzY0EzV0RqV2hsU0gxK0U2NWhmQzRCSElCK3BHc0Z0OG4vVWpHKzQxSUE4dTRtWEMvQlBlZ1BjbWFXeDRYRXp3TjUzZ2V3TW5LdWRrd2plQUdHYVVjYzBXZkpXMUVRb0w1ZUgyRXcwR0NYYmdleTQveTVlZElJL3prRVQ3eDNlTTFxQmRRdmxhbGRBVmRUZHJPNFA2RTcvdGtWZmR4VDhFTmVpL095U2ozaFZFWWh4enJGTTd5ZEE3V05sNFBuVVgwaXJFcFJIZUw4ZHhrekhwUk9OWVJXVWMrWGdlVlQyWnhJbnhzNUxna05iNEV0OE00YXNDeW8rckpLbG1pUlU2dUF6SFgxbG0wakZhM1dSTHRSUHJta1paRnRBTXAxd04vdUwwSzJoMElGZzJZSGQ2ZlJPOE5KTjlJMW9WbkFVbGpMZEtlaEpNSmVCN29BMnVraUYyQ2JnWG9GOHdOUlhvVDNsczRTV0s5VS9IRXB1SUo3b3VwUWJacjhKMDNoMEcvM1J6bmdOVmllWk9aQnduVlJQWURpYWJEMjZ5TnFpSmpZV25FLzNHVXlCRGY4K0xWNHIxZ3hGcmdkQ1Fxdy9QQitEalB4NXhiK1JMN3hUWlJ6dGsyckFKYk8vNnNESStPWjkxQ2JLS0J5QlZ5ZWpxeG0wdUVwMXNZcHowNWpmK3hudkNLYitNYnlBcmwySWFBMTQyNG5zeTFCUE1nWUVSdklTazhGTHoyWUVpZjdBemI2cWtENk4raisxZjBmMEwzWi9QOVMvZzN4c04zRnNzUWpTcnBETWhWLzhmdUxPclFFSEpia1VKdUsxTEpiVVVhdWEwdzQxc1ZjVDBxQU9iT1dLVHpCSUptQVY2RDFBVDRYYjROZjRUUjJrRkxDeUZKeUc1QnRBb1MyQnF0QjJpRTVNZkRRRWo5ZVlqVElFaXd1K2tvZ0xFOERWZ25uVWphS0hvQ1Q1Tkc2TGdFL29ITzQrdW44SEE2cENLTFZBSnBBYVRGa0pZQmZTWEFha2pyTFBqVldLUWFudDl0a0dvQnIrUFRZUUlwUHJYVlA0azN0aWNLREtzdGNUUm5lWm9MRm4xT2R1cHZPVjVIdW1JeC9nMCtXYzU3aDhmdmQrblhRUWY3bUFyNC8rMTVBejArMTM3UzZIVDJlT3FwQTJ3T3h4WjYzT1BONVB0L0VBUHdOLzBJemZONGR3akhRVTRMVzRTL1A5RStzTDFkeUF4a1htQ0NtWkFuYUY1b3B4RXhVNWtzSnBkNWtja25WTml2cHZCVVlQUElVeEFzR0N5SUZpUUtwZ3RtQ01WQ2lmQmw0UnpoUStGdmVHNWhxL0N4Q0ltb3RubVlVQ2FNU1dQTVpNd2NibFJtQlZQSnJHVGVkUmprRU53K0s3a2xSVGZvcXYvTGJra3A1SUcvU3kwWUpvZ1NEQmZFNEc5TEM4ZFkvV0hWYXZYWUdsbFQxclMxd0Zwb0xiSzJzcmEydHJFV1cwdnc5My94ZDNjWkJ5YUJHYzBrTW1Qd04yMlpGdks5MTJ4WTFScUx0SkZBU3JBRjRDNUkrQ3hTejdjMVFEcGhRUXMrUVFEK1RnQytUZ0MrVGdDK0RzNmNTQUIrVHRES1FTSDRPS0dFaHppQnJ4T3FRTUxnUTRSNm52WWhsSTJralJMNjhUU0JoSTVML2FGK0VGL2ZuNGZnMStCVTFKSEFGNEkra0JEOG54QXNGSFlpRW9MUEUwNjM0TGVwSXdtTE9INkZzRU9FNFBlRWkvbTBqRUNLVDIzMVQ4Y3JlYnphb20xZEp6ckxmaDJweG1LY2JYeXlITCtXeCt1NjlPdWc4MEJSS0FGTlFsTlFJWnFERnFDbGFDWGFpSGFnT3RTQVRxRUxzTGViVVFzbHBPd29KMG9QUHEwUEZVR05wZEtvSEtxSUtxV1dVSlhVR21vVFZVczFVaGNRVGRmVHgrbFROTVpxNlhOMEEzMFJzRTJBbjZjYkFGdERINlpQZ3ArbTZVckFUOUk3QUZ0Q2I2R1AwcnNBS3dXOG5ENEtXQkc5a2k2ajY1R0Fyb01lalVCNWxveVpSdWNBelJ6QXh0S3pnYjRZc0JqQUo5RkxBQXVuMCtrRXVneXdBWUJIMFFtQUJkQ3hkQWhFTkJwT3lnRjBFQjBDMkdKNklPMUhoeEpNUnhzZ1B0TDBmTnFIVnRNbXdQSm9DWnhDMVlDbDB5cmFDaUlUVFRYUmVkUWoyZ3F3SzNRV2RaZTJRVUk2QTNncEJDNks2VDR3WHdqVWNLVlM0SHdwekFaN0hVNlFkZFJoNmdTTXRRRGtzNXM2Q1NzQ1dpaTEwa0tJMXpSZFRLMmtTNmthd0VxbzlWQy9DYkFzYWdFOW42b0FMSWRhQmhUZ08raEVxcEF1b3VZREZrMFYwL2xVS1JKUzE0Q3ZIT2hWU08yZ1o4UFJSdGpPVVNtMW1sb1BZd25wSkRvRmFuTG9HTkJVT2JVU1BYdi8vUmZ2djRMNTVBd2ZEZjVuUHY4R0dRL2xjTVM5NzNKdmNCUTFsSDhYaG5jbWlQS1lDazRDRlA3bXpqVnk5aDZLYzlFRi9ONGp1c0QxdzdpZ2tmVG0zK2p3R0lMNWVBelVTakR3U09nUm5wbDdlOE81ZFJZKzlWdG40WDZpQml1SVVhSnliang0RzZGc0t2Q2JoSFVWcHJRcXhXOTRJZ1YrOHhCZXdiMEVMSGtMNGQ2bjhWdWFRSEFEcnc1VmsvN0ZlQ2J5VHBFQmE2UklHMFhOdFNKdnl5VGZoSE1pQWJ5V0JyS0tCc0wvQUppMW1IQldURGk3UURpckk1dzl3cHlKNm9EeWFXZndydThBVDN1SHdKRlpiUkcvY1NTbEJYTVlyR0dCY0F6RW00a2txbUplNXRENDNUSUpvbXFrWUNoRTFWbUNsd1JGZ2ptQ1Z3VHpjRnlGcUpva0hBOVI5VVdJcGdLUlVDUVNXVUZFbFlpa0lrWmtoNk9xU0FueE5FV1NLa21UbUNXVEpSbVNUSWlzRlpJVmtrckpPeEJkL3luWkxka3IyUWNSMW9xeFptd1lNU05ocEJCcEp6SEpUQXBFMmJYTUI4eDZaaVB6SVZNRDBYWXJzNTNad2V4a1BtWnFtVDNNWG1ZZlU4YzAyRW9nM3NZNGpIU0lkWWh6R09XUTRERGFJZEZoak1OWWgzRU8rQnM2WS83SHZQOG5YQ2ZCR2RmVEl2bnlNQUJTRUk4UGhCUnFRUU9uSGpvR1VnSWszQi9PWGZBT2h1OGhPRmdJYVRZUGNRSkRvUEVOUWhuZm5zSFg0YlNVYjhPcGdxOXJnL2pXWUkxRmduTUlEV2NRaURHSTNnc0p6aUFRalRyNFNyRklKM2g0aGsvbkxYRExkTWtpNFRLY1dlaW1QNkcxVEhkNStKQlBYZHRidTVRN2FNWlFTNmtLU0ZXUTFsQWJBVzZoZGxGN3FYcXFnVHBCbllIeWVjZ3Y0YWhBM1lYVUJIZ1Q5UkJTSzlSZHdnOHRKTzJYU0lSVDBScGFUeHNoRWdiQzA1OGVSTzBpVVRPV3FxQVQ2UWtRYTZkQUxKd09zYmdFbmdVUUs1ZEIxSzZtMTlFMTdVOEp2UTJvYWttVXJpVnh1aGFlTkVobmdlNUNsMmhqR1dmK2ZvVDVXN0dGaXlvV2tlVHZ4SkFubzhlVGJ6Qi8rdTZDMzFxQWYveE5WM3lIaHZGNE1rNGR3ZkhkVFRYSm04bTlUelAydHBEajc1c2hheHduMGtqZk1xNFZlMCtFeUFpSTlFTGt4Z3haNlVsK2krUkNrdGVUSFBlOVpZVy9iL2JJK21XQ3I4VzU5U3A4QjJlTnYxRXFGbTNBdVZVdTVEdXNzSlErdCtwSGVJZ21NMzVCOEJkSi9pYmtGMGlPYUx3V1JGMGlLMjBnZUJIQkNUL1VFa0pUVEhETTh6QjhINGJ3RFNLdW1VQnlYNUtUVlZpUjN5S2wzeWMxWkJYMEN5UVBKZmxla245S1dzT0lSOGR2YzFQSXZJNkMyWUtYaGZraVcvek9JMG1YN0dFWXhwWkpoYmViZGN3RzVpTm1FN09aMmNic1l2N0o3TFkzT0dESktmNnloeVd0STZ3SFR1b0lUc0FJVHVud2RvWmpJa0p3NGtad29rWndPa1p3Y29Zek1FS0h1NlJHaTNUWUFyYWxrM0FDbVFrbjZmbG9FVnFDeXVFMHZScXRoMmNUbktsM293UG9LT1RIeVhNS3RaM0F1Rk1YZjViaXprbVdKeVJDdzUxNG5uSys0VTR6NUFSem9YVSt5YytRblB5R0xMbUhSNjJCSkdkSnJpSTV2cWR0YnZVaEl5ZVFtZ3FDV3hFOGorUm5TRDZmNUI1RVA0bElRQzBUaE9DL3FLTS93SjdWYXB0VkF4S1N2MUYwSVgranlKSy9VWFMzdW1iMUcvSWpmMzhZUXY3K01GeDhSWHdUeFVuV1N6YWljZVJ2UVNkSU4wbDN3ZHMzalFLUkFkN3pFUXBGNHlIdXA2QzVVTE1Rbm5pUTRGdG9GT2htRlJvTjJsbUh4b0IrdHFDeDZKOGd4WWtneXk5Uk1ycUVma0F2b3V1b0NjMUFEOUJqOURKRlV6N29OU3FJNm8rMlVLSFVQTFNkZXAxYWl1NlJ2eVQrbmQ1TjcwT1A0UzNsSzBwQVg2RnZVbUs2VlVCUjNRU01vQnVsRkRvSm5Ta1hZVjloRUtVVitZdjZVNjZpNTBYaGxMZG9tQ2lhNmlVYUtacEU5UldsaXVaUVEwU3ZpUlpUcWFLM1JCdXBxYUxOb2dicVZXdGI2eGVvOTZ3SFc0ZFNwNnpEcmNPcE05YkRyTWRSWDFxbldhZFIxNnd6cmQrbnJsdXZ0OTVBNjYxcnJEK2lEZGJiYmV4cFQveVh1UFE4OFRGeEF6MWYvS240SkYwcWVWZXlqaTZUQ3FVQmRMbjBMV2tWZlVSYUs2MmxUMHQzU3cvUVo2VEhwTWZvYjZTTjBrYndzRk1Sa3NFN2x1d3F3RnVRbWlFOWdQUUlJVGtOeVFhU0hTUUZKRFVrRnBJbm55Qm15d040YU1ORExsSHlJRVRMQi9JcGxFQWtIOXFPLzNXS2daVHdOK2lTSUlIMjVSbjgrSEFPa0VQY2w4L21lWVpZTGkvbDI4bzY5ZVg0WEVyNDdxaXI2SktxL29PMGhwOFhqN3NSMGhaSThHNHFoM09Edk41aXJvYjJ4SlV4dnlmNGRJWlBjSGFRWDRKMk9Cdkltd0RlcGIrVkRaWEZ5QkprU2JJVVdZWXNSMVlvbXcxNE1lQ2xzakxaVW1pdGdOWXEyUnJaUnRrVzJTN1pYbG05ckVGMlFuWkdkbDUyU1haTjFpUzdLM3NvYTVVTDVSSzVnMXdsMnlMWEFFMlZYQS8wU1hJanRGYkovUWdlS011UTk1Y1Brb2ZMSHNxajVFS2dqSlVuUW4yc2ZJSThUVDVGbmdmNGRKZzNTVjRFTmYzbEpmSUY4c1h5WmZKS2ViVjhuYnhHdmsxZUs2K1RINVkzeWsvS3o4b3ZBSDVGZmtOK1IzNWYzcUpBQ2lzRm81QXBuQlE2aFlIa1BncVRvZytwR1FBMUlZb0lSYlFpWGpGV01VbVJyc2lTMXlueUZUTVZjeFR6RllzVVN4VGxpcFZBczFxeFhsNnAyS1RZb2RpdE9LQTRDalRIRmFjVTV4UVhGVmNWdHhUTmlnZUtSMHBhYWFPMFV5cVVhaVdyOUZUNnloSWdENEE4U0RsUUdhb2Nxb3lSTFZVbUtKTmtlNVVweWd6WlJtV09zbENlcUp5dExGYVdkc25MdXVSTGxSWEtLdVVhWlptODdpbjVSdVVXaFFIeVhTVGYyNTdYSzhzVWs1NUMzL0FuNDFpMm5sQ2VVWjVYWGxKZVV6WXA3eW9mQXJldEtxRktvbkpRcVZRYWxWNWxWUG1wQWxYOVpRbVFENEkxcHFqQ1pSdFZVYXBZVmFKcWdpcE5OVVdWQjV6YnFhYXJRRitxRXRVQ29GeU1KUUQweXdDdlZGVURYcWxhQjNtTmFwdnNCT1Mxa05lcERrUGVxRG9KK1ZuVkJSanppdW9HNUdkVmR5Qy9yMnFSSjZydU95S1NXOGtUSFJsSG1jTGc2T1NvY3pRNCtqaWFIUHM0RG5BTWtZYzdSamhHTzhZN2psVVZPVTV5VEhmTVVqeHl6SGVjS2N0UW5uQ2NBNnNiNmpnZnVDSWNPaTV5WE9KWTdyalNjYlhqZXNkTmpqdGtHeDEzT3g1d1BLcHFkRHd1T3lIdjczaks4WnpqUmNlcmlpV090eHliSFI4NFBuS2luV3ljN0J5Ym5SUk9hc0JaSjA4blg2Y0FweUNuZ1U2aFRrT2RZcHdTbkpLY1Vwd3luSEtjQ3AxbU94VTdsVHFWT1MxMXFuQ3FjbHJqdE5GcGk5TXVwNzFPOVU0TlRpZWN6amlkZDdya2RNMnB5ZW11MDBPblZtZWhYT2dzY1haUUdKeFZ6aHJBOWM1R3dQMmNBd0h2N3p6SU9kdzVTbFhrSE91YzZEeEJNWW5IMDV5bkFKN25QRjIyVVY3dFhDU3ZjeTVSRmNreW5CYzRMNGErYmZneWtOSUE1MHA1dUhPMTh6cDVwWE9OOHpibld1YzY1OFBPalREdk5oai9wUE5aeFc3bkM2Q3ZST2NyemplYzd6amZKM2lMR3Nucm9PODIrUUsxbFpwUnNtb1p3WjNVT3NBTmFoKzFTZDFIUFVBZG9vNVFSNnZqbFo3cXNiSUU5U1IxdWpwTG5hOHFVczlVejFIUFZ5OVNMeUY0dVhvbDRLdlY2MlZMRlNiMUpubWRlZ2ZHMWJ2VkJ3QS95dVBIQVQrbFBpZmJDSDB2S2hCWVZ4SGdWOVczRkVqZHJDcFNocW9mcUI4cGtBdXRLbExjY3JGeHNWUElYQlFFVjd1d2dIdTYrTG9FdUFTNURGUVlYRUpkaHJyRXVDUzRKQUdlNHBJQmVKQkxEdUNGTHJOZGloVk9McVhPalM1bExrdGRLbHlxWE5Zb2ZGdzJxb3BjdHNBNHU1UlZMbnRkZHNGbzliSlc1MXFYQnBjVExtZGN6a1BySlpkckxrMHVkMlZiQ1A3UXBkWGxMdGduY0tnUmFpVHlPckJZd0JVbWpZTzhUcVBTYURSNmpWSGo1M0pHRTZqcEx3L1hETktFTzhZN1E3MWNxSW5TeExiSjNFV3RTWVMrUk9iUWR3TG9rZFNyZDJ2UzVIWGN2Tmp6S0tzMFV6UjU4anpOZEEyc1Z6a1U3eTlOaVdhQjBzNTVnUVkwcmxtbXFZVFdhczA2eFMxTmpXWWJ3V3NKWGtkNjRmckRta2I1Qk1kMHpVbk5XYzBGelJYWVdRNmFHOER0SGMxOWVhS21SUXNhMTFwcEdhMU02NlRWYVEycUVxMlBMRUZyMHZiUkR0Q0dhQ08wMGRwNDdWanRKTlZpYmJwc3FieGFtNFgxcU0yWExYVk94TGgycG5hTzdJUjJ2bllSNUV1MDVkcVZMZzNhMWRyMTJrM2FIZHJkS2dmdEFlMVI3WEh0S1d5eDJuUGFpeTYrcWlMdFZlMHRiYlAyZ2ZZUjhBWldwNlBsZFRvYm5aMVdwbFBvMUVvN0hhdnpsR1U0cHV0OHNWZlJCY2d5ZEVHNmdVbzdIQytjYTdGbmRtN1VoZXFHeWpicVluUUo4am9jb1hSSk9CWW9xMlJEZFNtNkRGMk9ybEEzVzFlc0s1VUxkV1dLc2ZJYTNWSmRoYTVLdDBhM1ViZkZ1VWEzUzdmWHVVVXhWbGV2YTlDZGtDWG96dWpPeTAvcUx1bXVBUTluZEUyNnU3cUh1bFpYb2F2RTFjRlZwYk54MWJqcW5kTmNqUzUzZFpkYy9Wd0RYZnU3RG5JTmQ0MXlqWFZOZEozZ211WTZCZkE4YmJUcmROY2k3U1NsSjBUUEJOY1Mxd1h5TzZxenJvdkJuc3RkbDRGdDU3aFdRa1JZNDFxdGtMbXVjNjF4M2VaYTYxcm5ldGo1dm11amJLL3JTZGV6WUlHK3JoZTBWMTJ2dU41d3ZhT3BkbTEwdlEvenRtaVBzbkI0MWE1a0dWYW1YYThKQlBxN0xqYmFab1VNZUd0a25WZ2RhMkI5ZERhc2lYVnk3YzhhdEFhMkR6dUFEWEZwWUNPMDY5bG9OcDRkeTA1aTB3SFBjZzRFbkdIenRldDFaZXhNZGc3Zzg5bEY3QkxORmJhY1hjbXVWa1N6NjlsTmdPOWdkd04rZ0QzS0htZFBzZWZZaTg0WDJLdXl2YzZKN0MzRkpMYVpmZUM2VFNOa0gya2Z1Tkc2RTI0MmJuWnVDamUxeTNrM1ZudlZ6ZFBOVjN2VUxjQXRTSGJYYmFCYnFOdFF0eGkzQk1DVDNGTGNoaXFIdW1YSU10eHkzQW9WQnJiWmJiYnJOcmRpdDFLM011aTcxSzNDcmNwdGpkdEdvTjhpRDNmYjViYlhyZDZ0d2UyRTJ4bTM4MjZYM0s2NU5ibmRkWHZvMXFvWHV0VnJBZ2xOcTE1QzhMdHVaL1FPZXBYYk5hZFdQZXc0dlY1djFQczUxK2dEOWYzMWd4VHgrbkRuR2pkV3QxY2ZwWS9WSjBMOUJGeXZUOU5QY1RudldxbTlxcy9UcWJWSDlkUDFSZm9TMStuNkJkb0grc1g2WlZCZnFhL1dQbEJOMTYrVFplaHI5TnVVck01R1g4czY2ZXYwQy9TSDlZMzZrM2pmNmM4cWJ1a3Y2Sy9vYitqdjZNKzYzdGNjMXQ4SCtoWjNlTjNRSEhabk1LN3pkYmZTc2U0eVdZYW14TjFKYWFjSmhOUFVYWDJOTzNoWGQ0UGJYWGNmZDVON0gvY0J6alh1SWJxOWdFZTRSenVudWNlN3FkM0h1azl5VDNmUGNzOVgzRkxsWVErZ05iblAxQTV3bitNK0h6eC9pMXVvdk1aeGtmc2lSYlQ3RXZkeXgzTDNsZTZyMVNiMzllNmJaRXZkZDJpemxPZmRkN3ZOZGorZ0RISS9LcHZ0ZnR6OUZQajVmRmVOTEVPbGR6OG5WN2xmZEwvcWZzdTlXWG5KMGFBUnVqOVFWc0U0anh6TDVUY010TUhHZlluQnpxRFFoUnJVc28wRzF1RHBxbGZwRGI2R0FFT1FBYnl1SVZUdkFCRmN6NXBrZDUydkdJWXFaSVlZUXdMVUp4bFNGSThNR1lZY1E2R0xyMkcyb2RqTnpsQ3FQUXJqbE1IT0RUVXNoZEVxREZXR05URGFSc01Xd3k1NUN6dldNZCt3MTFEUG5RKzVreGliWldnd25EQ2NNWnczWEhJK2FiaG1hRExjZFdNTkR3MnRIa0s5bjRmRXc4RkQ1YUh4ME10bWV4ZzkvRHdDUGZwN0RQSUk5NGp5aVBWSTlKamdIaUpmNEpIbU1RWE9hUTBlZVhDeWF2Q1lycXhTejNFMXFoZDVGSG1VZUN6d1dPeXh6S1BTbzlwam5VZU54emFQV284Nmo4TWVqUjRuUGM1NlhQQzQ0bkhENDQ3SGZZOFdUK1JwNWNsNHlqeWRQSFdlQms4ZlQ1UDJsR2NmL3RSSHpuTGNxY1p6Z0hLdlp3aC82dU5PV2R6WmorRGNlZFV6UW5uTk05b3pIcCt5dUJNMWQzYjFIT3M1Q2NjK3ozVEFzK0JFdmRjekg1OWQ4U25hY3lZK3J3TC9LWjZUUEdmaTBaUlZubk04NTNzdThsemlXZTY1MG5PMTUzclBUWjQ3UEhkNzFIZ2U4RHpxVWVkNTNQT1V4MGwyUFI3VDh4d2VVN2JGQS93TTBGMzBxUFRNSXFkVDd0eElUckNlVjVYRjJvczhmZ3Z3QWR3NTFyT1pySUxESDJCY1ZhUGNBaXRkcmR6cjJJZGY5U09NYzZ2bTZUbWMwS3QzUUpSYzZrVjcyU2dNUEc2SGNVNHlQRDJIRTNvdmhaZmFpL1h5OVBMMUN2QUtVaFY1RGVUaXZsZW9SZ045aDNyRmVDVjRKWG1wbmUvZ3R3T3ZGSHdPOThyZ2RFRldNVUNaNHBXRE9RSFBYK2RWaU44anZHWTczMURhZVJYckVyUUR2RXE5eW1DRVVxK2xYZ2tLazFjRjBGVHBFZ3hydk5ib0V0UlpHcUhYUnJELzQyNUxJU3FSK0tLTDhkb0NOTHQwQ2M1MzJuS3Z2ZTE0dlZlRDF3bjM0N29UeWlxb1ArTjFucSsvcEV2d3V1YlY1QVgrQ28ranJKSlhlMVhBS2g1Q3ZzUlo3OVdxTUJpRlJvblJBZWVBcTR3YW85NW9OUG9aQTEwYWpQMk5nNHpoeGlqRkhHT3NNZEU0Z2MvVGpGT01lY2JwTHEzR0lxOVNZNG5iVUR3eVJBSENwM0dCRVdLTmNabXgwbGp0bkdoYzUzTFhXR1BjcHZjejFocnI5SDdhMWNiRHhrYmpTZU5obHpQR2syNmxNUDVaNHdXWTk0cnhobEd2aXpIZTRjWlJ5SXpUSVo5anZHOXM4VWJlVnM1blBUZDVNOTR5YnlkbmxiZk91ZEhiNE8zamJmTHVvNC8xSHFDTDhRNlIxM2xIZUVmTGF6anBlY2Q3ai9XZTVKM3VuYVc0NVozdlBSUHdPYm9FNy9sNFpPOUZJSjh5N3lYZTVZQ3Y5RjVOOHZYZW03eDNPTGQ0NzRaNWE3MFBlQi8xUHE1TGNMbXJidlkraGVPNzk3bTIxUUYrRWVhNjZuM0x1OW43Z2Zjakh4cHJ6Y2ZHeDg1SDRhTjJzL05oZlR4OWZIMEM4R2crUVFxWnowQ2ZVSitoc2lhZkdKOEV3UDgvOXI0RnZxcnF5bnVmZmM0OTU5NmIzRWR1SHNRWTA1Uml4Q1NsRVNsaXBKVFNpQkFSWXd3eFlxU0lpRWhUaWhFcElxVVVJeE1wcFpGU2h1R2ppSkZoS01OUVJLUU1aVEF5ZmluRHBFZ3BwWlJTcEF6RFVNQ1VVcHBpak1tMzFuL3ZlM052Y2tGUVVPazN2L1BiajdQTzJtdXZ0ZmZhejdNZmxibmpjaWZtVHM2ZG1qc2pkM2JLck55NXVmTnpGK1l1eVYyZXV6SjNUZTc2M0UyNVczTzM1KzdvMFpSeEluZFg2dlpQQlhQMzVoN0lQWng3TFBkVTdwbmNjMnluNUY1VGtid3p0ejNQeXZOZXQ1cEhrWG5CekJGNWFkY2R5c3ZNNjVuWEczYWZ2SDU1aFhtRDg0Ym1qY2dyemF2SUc1TTNQbTlTM3BTOGFYa3o4K2JrMWFveGN0NkN2RVY1UzdsK3kxdkIycHUzS210djN0b2V2ZlFJVjQxdE1hcU5HYkdxc1NwR3FYa2I4amJIamxYVmFEUnZXOTRiMTU3SjI1bTNPMjlmM3NHOEkzbkg4NXJ6enVhMTVvdDhPejh4UDVTZlRxRkFKejhydjFmeTJ2emMvSUw4L2h4di9rQ09ONldPNDgwZm9rZlROSFpPWGM1ajUydjNNaWY1dzVpVGE4OTBja0p3NHVINkNxVXRQRksrdm9MSHlHcDBuRCtTUis0RXdmaWE4NmozVHE0RDg4dTRqT1NQVnJhcUZYbTB6dFNTTjBlb29RK2NQelovUXUrZCtWWDUxYUhEZW5aQ3pSaGd2aUovZW1oKy9xejhtdng1K1hWcUxrS04rdk1YNXkvTHI4OWZuYjh1ZjZPYWMxRHBwbVlWMVBnOWYwdCtRMzZqeXBIOEpwS3hSUG4xZkFXRitsVFAvRDM1Ky9NUDVSL05QNUYvT3I4bHY2MUhyOC9LejdvLzZ4ZUdjYi8xSXRabkhpSDdHenovYnVSakZqNmc1dUl0UGdzbVlOL2VPVHR2N1lLTkdYeitUOUR4cW9hdmgwM1V4R093c3hRRWM2Z0J0anYrQkxpYVQvVXFDT3dXUGNPYWdubDUvaE9jcGY0b3VBNkNFNFN5ZmdmSUxmRGZRWHlPMGpGT0pRcFA2VDhIbzJIZmlSanZoSDhnNHNXTXI3V0ZRdjA3UzBSMnVUQmtFWWMxenNKK1dyU1NmUyt2YTVHenhUR3lsOXZwd2pCelhhM3NKMDROdVlFaDFvMDg1eTQzTU1STUErUkZZS1oxL0EvNTEvUC9DYmtWOExIOHYwRnVaVXhyZ1Awdy95OEcvQlR3c3hsZk5tdklDK3huVE9NNmhoaGpHTis0RHJGSTRKY0MwZ1JPL3N3UVY0cmRuL3lMQUprR25KMklmUnBDVlFKbkcvNDhsNEtIZDlsdjdYS2RKTWpiTElWMWl2R3RESWJJUmVCa0JLUmJCRm1XNForenNMOE4zcGpiMWFEOEptTTZuMmU0K1NZbzcyTGVDSk5zNnhHMjVXeHdOWnp6eGF5SGpyV0RRcEY5QS9qOE1mbXJGSVMvbWpXTUtZc1lZclFENXpocm5jelVPT3M1THVzWi9EbS9IU25NcWVGQkxEa2Mxc3F3M3NVSzVXR0l4VUlzUHdkTndoRW5rYXAxbkp2aUpDRFRGU1pEQ0pOemZ5YmluY0NhNW1wbFBUY3JRYjhRVWh4aUhtUWhJRVVhOGd3b2VDbjJCUGdyRkUybVlBMWdXMll5eEZqSkdtaGVDLzdiSWUrVDBONE9UbmxqdTR2WG1JL1JrajREYWh3MmhGQnZvMVMySTk2MzJFKzg4ZGUzQUFreG40VFBxZWNHeEEwS0E4Q3RHL3lFZEFvVHBqU0JzOXdwUWs3VlFUTmZnQ1p6RGc2RmJxUWgxQWIreTJVZFVacnBmSjYvOHY4d001dkR1cVlqbDV2aHZ3WTR3OVVhQjk1bklJZERLM3JCWCtRYXBkZkZrMS9uRHY3a29YUlVZRi9DV1dCV3dTNEV2QWk1WEFHTkhjdDFncXlBVHQ3SWVlUTh6amxyM1FodHpHWk0xODhSKzFxdU4reVZXSWsvUTZVbmg3VkdJRFdLT2poUEU2R2xVMTJMdU1ZRFA4dWRlN0ZTNHdVdXYvd3YwRFhLL2kybktwY3Y1NnNvS1FsTXpkeko2ZXowZ0RidUJIMDN1TjNBRkNqVURhQTJHNm42VzlaUy92OW5KZkFhYy9MZmkvVGsyRnRVNmVZVWx2UHNkeURwTzRBVUFkSUUvNzJzc1J5VzB2eGVoUG8zK01mQlh3Y2JaUk94MzhJUTEzall2ZGtXSjZFNWRkRE1UT2o1Y2RmektGTi9RdnA3VUNMNFQ5ZHBhTVVpWGxkQ1piay9yNG5tcithVG5NN0dZVWo2TkgrVlR5c2RZeHdyQVRzeE5rQ2kzekhFUE1TcFRmckFzcjhGK0hwdUtlUkxDUFVvY3JNWElJOXl5cHVWemhDQ3ROdDNjcjZEdzlVdWgvelh0M01OZjVacHVnVHF0RWFVbzNhVXUrTmNlNXU1VGo2RmZZMy91WnAyUnpNME1KSDhZMTEzazM5d3gxL0pIM0R1Snp1ZC9mSjZGL1B3QUxjNGNyanJMWUtmZGxWQVYvbnJXcWVFSU85d2pTZVhBbExrT2s2UWFsY2UrZnNnMUZJN0ZhRnVJLy9YT2tpcjVTMFdyL0Y1Z1UrcWxhWHR2K2E2bDJPMFVxQVYyMEJuTU5PaHRPSzZxQlNRVXBiWFd1ajZlL0svcW1LM0N3anlDeGV2MEg2SlQ3a2h5cHNJSXEwVXBNWWFwb1o4L3hlYjJrcjVNMFhaTmtHNUgwc0JEcWR4SHBrNzhiZjdKUElyRXhveWpUWFR1Z1AvemsrcUdoN3QyalRrOGs2dWY4UUs2TU5adExrcmtGKzdRV0czcWdOUk43NEovU2xFWHJleFJLU052QmJwZWRDL2tlbkllUXd4SnFKdDJvMTZ2cGx0S2xucHFOczU3UGRkVHlEMi9vQnpxWm5HK1V2MTRmUGdZUlIybVFEQ3BkdThWdEZCZVNtQUZnMUFYVkdnMmxBdVpWUmpNTFZ5OEpCb2sxNlplNkdmaTdoMFNCUGF0WmZyQnpPYmF6blhDbkJZZ1RiM0YyZzlKNERESDBBenIwVU44eTZ2bVRDdlJXMTJCSHptY1ZoS2MxNU5uWWM2SVpHNU1oUEJTUTdvdElIYkhQMlZZODlCdmRxR1VGdFJsNllneFI1UnZRV2tjeEhxbVVjUXRoSGwvUkhVbk5sY24xQUtWeVBlYmFEV2lsWjdCV28vbGlLSGF3bEtFLzc2RnVQTEl0UThkOWgrbEVRUDZDdmVVbEMzY0l6TnFJWFNWZnNJZmRqQXNSczluUnpPTzY3dGpaNzY2MEZPSzZaUFgxbWlaL2tybFRnUGVpelFITlhDb3B5ZWhid1NOZUV6TENuMVcvNEhkVTQ2MXg3b2J4eUYveWhTKzAxdVE2bnRPd1d0dUIxYWVnTmFSbWdzYXVsbVNOb01meUhqbTIzY2M1T0ZDc0p0SXJXVlUxRnlWV3J6bWRSdnMwMTExQTA0OFpsUEFaYTZSZWFhNUZickVXakk0MXhuOGxlcTkxalA2N0ZEcUFONWtjZDlUcUtqOHYxNTFITGJtR2NPNVh3UFd2RVcrbG9ISVlVYjZmdzIycXhuNFgrVE5ZUXcrd09UNnpUVXpBU3Z3aW8vOU5QUXNud1BhYklCWldvb09Ia2JiYjI3L1M3azlVcHEzZnBEYzU1aFRhWSthajUwNHdWSXZRMjF5bERBYjBlcWNsbFlyZmNra1VUbU1MU0RPUXd4WDBZTFBoemw4V1drL0hEbzhGWnc2SVUrL0NmQ0ZxSDgzbWdsa1A5QmhsQU5YNGJ5Zmd2ODFkQ294MUhiM0E1OXVBRTU4aTc4dk01eE8zVGpPdXl3Mjg1bG4vSjBDaVRpbFk4L1ZxV1NJZFlkNXR2SVUzeDFscU9uTVJpOU82NFZDMVY1MTF4ZGc3WUFmVEJBbXJIaThqamFsdzJRWWhTa2NBUHpiZTVOVWRvK2p0TFhFLzNKMTlCaWVvRFRDc2g2Y1BVdzFsZXVRQ3lzUlEzUXE2M1ExZU9vdTVaRDY0WWpWVi9tOFlnY0RzZzA1eXNZRVRETkt1VDRzNmlYWGdTMVo4SG52YWgxMzBaZTNBdXBYMFM5T3ExOUxXUmhlem40dkFYOFo2cWFEVFJYUTY1YldGZXB2TE4rWm9MbWFxVGtMVnhqVUk2dlJUMnBhbW1tVU1BUStvcXlBQ2tPTVRXQ1BBLzhDYWk3T0pZTVZaKzBWM0x1STY1clVGci9FNUFIV1hiU2hBeG9RaVZHTGpjZ2xSVDhSbDdUeXZXYmZBbTlzbTNRNFVPY2Q5US84U0IzM2tYWmZ4Z3Bmd05xQU9iL2krRDJPRGo4SW5Uc0ZrVVpmUkliWmFRM1NzYzRoUW1OSFFldTNvSzJIT2VTUXZyV0gvcm1RUjNTSHoyY2s1Q2FZL20wMW5iV21VOGpscUhvWno0TytFN2s3T1BRMGpyRVhvWDI5RzJrWVJYVzdKeDBIdVFhUTMyRnRxL1VJNXJld0NGK2pEOXlqS1RoNURmdjQzdzA3OU1qTXNLM1BXcGt3VDA5K3diRU80RnR1d3k2VnduLzdhQjVIK1Nhd05Uc2ROWkFzMUx6M0IrNnVnc3B5WG4waEdxZFVac2RoVVJIb1FPRnFQSHFvWitGMElGcm9FV0ZxZ2JqL0tMYWJ6WjZmYXEvalY0YzhxZ0NLYllJdlk1ZFhGN29xd2RmZndmSURWakx6RG55bnNwZmpHS0tVVis5aHpGMU1YVDdYYVIvTThkT1g1bm50ekFlTEdZSTlkK1l6aDlSVDlZZ0IvK0lNdDRJYmZ3ZDlLRVJuSVN3czdNZXRWQUlrR2xvNDE1VS9RZU1IUC9JcVVxOTFsYlU0U2RCR2YwTjhId0srdEFUdmRQaGFPa21jaWpTY0l5YWtiOGQ0R2VNOXJOMEZjeXprWS9VOHlMMWhuTTliNVNCaDBLVTYzTm9YNjRCL2puazJwdW9iWm9COXdKZWhQN1NJWmFkTUpsbkU3dzFvQllkajNKbm9qeWFpZ0szczg2OTBQd1ZhTjNlNUR3aUNISWZzYitGbXZsZFVBc0JYcTlHam5xOG53NXRLVU84cjBHVHVZVjZHbkU5RFFwdWFFS0RHajhpdjE1RFhoeENqZWRtcVNsZjNrVzZ0U05mdUsydlJoNjloVHBuQlg4bEtYcGp0TUo5ZzBlNVJhQzY5d25VQXc5REJ3NkNRNTREZVJtMTFpTDBkcFpCSHlxZ2U3dlJIdTFteW5ZVDhJdllwbmFaeHhTdG9IWUE5VVp2NU1JODlFdG5nMzRDMTBnMEJ2R2daV1I5MjRyUjRrS005Ly9DTlo3OWpocXBnYmM1SE1wK2dmdGo1aEwwVEU2aUwxUUhEYmtPTkRNdzEzUVM3ZGN2SVBWaDhGOERQYndQRlBvanJlNkRGbzJDdng0cG44RWpGTmQ4MWcxN0hjWVVqWkRsQ1dqK1dlQ1BSOG9QZ3hSVmtNdUxObjFEeHl6dUZTTUZxdEE3SFl6V3ZBWmFPZyt0VEE1VytuYkEveXprZWhhWUU1R1NHNUFDajdLZmRKN1Q2Z0RxL0RUVXlhMkF2STZ2NzZKbWV4MDkxUm1vbmZwRGkyYUFXcnRyRCtjditrWHRpR3NSNklkMHEvY2krZ0FuTVpQQTZiWVA4d3gzWWYvMFB0VWY1cmFZVW1NOTFrS1Nkam5uZUlXdTV3MTdIL3M1RnVyL1VQcTQyN2luNm1EV3lDNWppTE9iSVhZWmNLbzBoR3g3c0U1dG5wdGFBM3NVZUhzYTZRd2MwbTJDdUd0QStSRENZdmJBdmg4VXRzTytuM0ZjV2FDUWhiSEdNYlViZzJOMGxYQ1AybFdDZW5zdFpwT3llVjJ2UzloM1F6ZTRIRFV6aEZxb2tlaTlNQTk1N0tjMnRKcjk2R2Z1WS9xVWQ1eUcreEFMMWlKVGF6c1lhVEtNMDRFMWg5TGtZVTRCVGtOM0c1Y0xhaEZlWktsVnp3ZXpjeG5venc4SGhlR29rNHZnTDhJNjV0TnNVM3ZFT1hndDlxQ3ZCT1FzZURnT0hzN2kxSUU2MWMvaGVSSjF0b0U4aDFFRGNvUjZnRXh6SlBwZEk2Q0hJNUdiQllEUDd1Q1pISk50YWdVWXNzRUpjVjJoZUVPTlBaSnRxNXpiSTJxWHVlWGFpVnIwTEw3bTRldU5YQSs0VWpBVFc4QVE4ai9DZFM5d01oa3VXamw5cUYvQmRXa0Iwdk1kL21xOG8vcGFvUE03Zk0xRXZmMEtOTzBrY09yUUJwV2hYU2hERGRtc1RzaUFiaGNEOGl3Z3hXcDJRcCtmZ1JraGFQVWQwT2RTcGthdE5rc3hDQ1ZsZ29id0RUbzVhZ1lTUE0vak5iOVU4ek5tTnRma1ZONFhvdXd6bjZjZ2FTTW90Q0d1N1FqMUtHWUZ0Nk5PenVQK1BMV1B6UGxoTlU3aGVvOXN4bHpFY0hFYWZoL21RQnFRZzJNZ3kyNk0zQmNqMUIraHlYdFFNMVJoTDlSU05YT0xlYzU4UGE3aFZ1d21qTzlhMFJwVzY5U2VpbEFxYmJsSDRVT01Xd0gzcVhsSTdtZGFMZW9yeGlNWjRQT0VzcEhDaDNsZE00M1FKNkhHNE5vN3BHWWprVHZiMFNvMTRQU0w3ZUN0QWFQZEJwVXkwTGRDYU1YUFVkOHV3ZDZyb1Z3bnk4K0R0d1R3ODNrMUM2cnlGMlBiZkRVQ1JTL3VNSHJ2RXFkL0hFYTU5bUlNZTFpTlJOQnJha0J0MXNZMjFTYzg0M2N2K2pOclVHTzh3L3k0VWxCT2l6U2M1d1EyY2QzdUdvcGMyQVFlS3ZUNCtpUkt6UXJNMHo3Q2ZyUkVHV2lMbjhmY2JBYmE5MUkxODg4UXMxVE5GYWoyQzFxWGlEUThxK1plTUxjejFtcWtyOU1zcm5QR3FqWUxaYW9PZjJST0FpZXp2UUZ0Rm1vWWxOekM5azJjQXVpZHp1UDJ4ZHJGK3oyTWZGRDJkZlNqcjg5eE90Z1BzZzZZenlFdm5tUGRzQjhFYjgrcEVtSFBKSCt1UFliOUhkOUZheklUL1JhR3AzV29tZkRIaVA0TzEyZll6emcwbHAvSnJUeVBXNm1IOWwyMEkvVmNlNkNrbk9IMnhTaERHZmtoK3VTRnZFdkU2bU45Z2VEL2pUSGFUaGYvdGZsdmNCdXdhR3hvWlZuUHNSKzZ1dDZlU0h4YW1LdFpqeFRyajNGQmxWWExmalYzZ1Q4K2RRd2hPTzhqZmhMK2NmQy9vZnpRdHlwb2prZk5URUpxVTgxWGcrY0NuSDF5bUVPWmpRZ2xySTNvSFExRW5UbVRiVjdkVCtud0FGRU82RDhhQkRFRnovaTVIcklEN0FmTlcvVk01bFBzUjd5dHZOUEdmQjZuNWJSQ2xwN29OdzRIdFd2UU4yN0g3b0VPVG1jNUR2WDVHTVNZaWI4QVdZaHhpZlVxK2Y4VjZhbjZOb25ZcTE4aWVOZUt4WGNrMmEvWXZPTWh3emhnSERPT0cyOGJwNDAvR1MzR3U1SVVSZHJTa1c3cGswR1pKTlBrdGZJejhucVpJMitRdldVLzZ4Wm5QTzZmR1VabUpKa3kvSFBMSUg4WnVXUEZCRkVscXNuWGRYOUdYY3orRE42WlVTZkMveHVMby80MDRoK2pmRjJOSU5HWFhBUmRmaDEyTSt5M01GdC9MZHEwaHM0Mm4zckhnNkdoRE1sVEl4all3NVdOOXFFZC90M296eDZHLzNYWTAyQVhLaHpVQ3JuWU9aV0k4d3VXOG41T3Z1bUx6ek9KMlVueG1KZ3Mrb2twNGh1aVVEd2x2aTJHWUNmRm5XSTlQWGVKZjZWbnBQZ1ZQWGVMRS9TVThENEZjWS96aXZPcUtIVis0dnhFakhKKzZ2eFVsRHYvNW13VDl6a05Ub080MzJsMEdzVm9aNmV6VXp6Z05EbE5vdEw1dGJOZlBPaWNkRTZKcnpqTlRyTjRDSDgybXlnL09TWDNpMFBpS0ZFL0xWcEVtMmd5cE9FMi9FYUtrV0ZrR3psOFJvWXhnTjRHR1VWR3NXZ3hTb3h5bzlJWVowdzBKaHRUalJuR2JHT3VNUjg3MzVZVGxQZTl4ZTU2TzJBY0pzaXhxR2V5Y1lyTVpPT01jWTRNNzdNT1AxN3NlL09HZDc3Ujl4M1kvVllvQjZ1ZGIrRjliOFpjM3ZsbUhPYTliL3gvRmllVHZJZGEvUTZNaHJ3OFlyWGU1WnJCZWczd1IxQS8zOEw1WkoxQ0MzSWI0SytoeGJtTmJkZEJ4cUV4NHhPbzUzdGpMSUQvRVNqcHUvQW5xQndVWHRRNGM3aTJ4OXpGaTZEMkRPYjM2azJ1bmI1dk5uRHBodjB5NDVodm1oT0VIam1hRFR4UFJUZzRtWW5IcE1aMWdBd3pEN0ZmOGNQdERtR3kvYkw1TW15ZTNYcUpjY3dKVE0zNEJVSzl5UlNJMnR2Y1o5QmYzMFpyeVBBblRkNnp2TlA4S2t2S2Zpb3pIT050K1BxbStTVEdhK3cveEYvdE12Qjh5THlQUjFJNlhxYXdHSEs5Q2NwdDVxMnduMFJjVDRMUEp5RXYyN2NDLy92TUNiV3o1U3dqSVBVTW9WYVBjMmNxWmhVZVJUK05iNVNRUmdqN3N4MjcxWDdYYnZPYzhKejBuUEwrTTVXWjNoL3Q3aU16U1hSZ2w5RjkyR1YwditzbTF3N2pBZXdkK3JQelpXZW96T0ZkUXpLWFM2TzhqWGNOeVlIWU5mUU43QnA2Q3J1R25zYXVvZjNZTmZRYjdCcjZMWFlOL1I2N2hrN3lyaUV6ZzNjTm1iMTUxNUI1SSs4YU1ndDQxNUI1azNDRVNEeE9wbGtZaVdmSmJSWENSKzJ6aitwcVg2TFpOL0ZzWXFzeVBxRmRXN3VKWkVLK2RGK1dyNWN2bC93RnZ2NkpyYjZCdmlIa0grWWI2U3RqUE45b0R1Y2JHMFVINFgwVGZGV2RNSHF2OWsySG1VV21oc3c4TW5XK3hiNWwrcjNldDlxM3pyY1IvaTIrQmwranI4bTNoL3k5eUN6VFpyL3ZrTzhvdWVtK0U2REZzSUcrMDNERDlGdDhiV3o4MHUvMisvMHAvZ3gvdGovSG53KzNyMzlBWERQSVgrUXY5cGZFbUhMZlluK2xmNXgvb24reWY2cC9obisyZjI0M0hEWmRhYzMzTC9RdjhTLzNyL1N2OGEvM2J3TE9Wdi8yQ0YvTXl3Ny9MdjllL3dIRWU1alNodUhIL0NsaEYrYVUvNHovbkw4OVlBVzhnV0FnRGVIQ2htWFJKcEFaNkJub0hlZ1Q2RWR1WVdCd1lHaGdSS0EwVU9HYkZSZ1RHQitZeFBFSHBnU21jVnlCbVlFNWVLOE5MUEF0Q3l3S0xBMnNDS3lpK0djRjFnWTJFR3dXd1dxVjY2c0piQTVzVVBrV3pyOUFMYmsxNnAzem1mTXdVS3ZkYmY3dGdUY0NQWDI5QWhXQm5jVEw3c0Mrd01IQWtjRHhRRFBsWXk2NVozM1ZoTk5LT2tYNkZCUytncUROMXo3NnhnWkR2cXhBYVRBOUdBcG1rZWtWelBXM0J3dUN2WHg3QWl1Qy9YMGgrazc0Z2VaZ0tOQW4yRCt3RDNnRndZRytQZVFPQ1p3TkRBME9JNXl4d1pIQk1nclRoMmphdnVxdzY5OGVIRTN3WllHS29BaW1nNzlDNG9uYzRGaGZtVzhlZlo4UXJLTHZmVWlYaDRWNUMyd0xWZ2VuTSs5RVo1Yi9ES1ZWejJBTjhUT1AzRHB5RjVPN21QaGNSakxVQjBZRVZ3ZlhCVU9VUG9SUC9HejA5U2U2aTROYmlPZm1ZQVBSREpIOHM0S053U2FrVjI1d2p5OFU2SzNoKzMxWndmMkJ3Y0ZEUk9jb3lYOGllRHJZd2p3eTcrUXFXUXA4TmNIR3hMT0V6N0swK1E4a1NaTDlPTXNXSEpia0R2Uk04aWVsSkdVRW1wT3l5YzN4RlNUbEovVk5Ha0E0dGNIMHBFR0J0VWxGdnJLazRrQkZVb25QVGlwbitSSmJreXFKWDg1WGtqOXduTjdIcWZmQUt1VW1UYVM0VzhpZHJMNHpQR21xd2c4SzdSYlE5eG4wdlpTK2IrdWtselNiM1A2WDVpYk5qWHFmSDB3TTdLVDB6U1gzSUxsRGtoWlN2dlVKdENZdGVUODNhZm5GNGJGTGRPRW1yVXhhb25UczB0eWtOZUgwUzFvZjdTWnRTdHFhdE4wL09Xa0g2Znk4NEVEVVIxVCtFcy9TOTJwT0orV0czMlBnczdSYm8rRVhjSUUzcjlNRlBNcU4vcDYwaThwOHJlYXp0anVkcEwzZDZmdlMvWk45OVNUSEFUS0gvWlBQaTBkbDA3ZUZjT1lHOWlVZFN6ckZlZWpiMHVrbW5VazY1MnRNT2hkMmZRT1ZTM1hJV0M0MzNJN0VjNVBheWUybFhNN1g2SGZrWTdROGNDbTk5eWVkUXZ0RmJ2ZjNrT1U3eXZTVnkrOGhiNnlyNEN3N2h6dWZTL1NRYjdFdTR0TnVLQWc2KzVndkNnYzNLVHVVUnUzV1dOOEU1WGJuLzhMNm9mS0UwbldnaW9kTktETndKTlF6V0IzcTdVc005UW1taC9yNWN2MWJBNE5EaGZSdGNPQnNhR2l3S2pTQ3ZsTVpEVldRZjB4d1lHaThMemVwMkpkTC9yTFFHTUlkUS81SnZvSlFiOEtaNGo4UW1oYm9HWnJwYncvTm9mZGEvL2JRZ3RDaTBOSmdZMmlGcnl4VW10UTNORDQ0TExTS2FLMmx1bVpIWUcxb0E1bnhnUkZFcnpHME9iUXQ5QWI1ZHhMZDNSUjJuLzlNNkNERmVTUjBQTlJNTHVWdHFOVlhrQ3lTN2VURTRFYjZWcDBjQ294SlR2ZHZUODRLVkNUM1NzNU5Ma2p1bnp3d1VNRmxKbmxJOHJEa2tjbGx5YU9US2QyU0p5UlhVZGpxNU9uSnM1SnJrdWNsMXlVdlRsNkc5cFBiWUdvM2srdVRWNk90NVBZMzNQWXpuWFhVTmxPN25Md3hlVXR5UTNKamNsUHlIdjZXdkQvNVVQTFI1QlBKcDNVWUhUYTVKYmt0UmFhNHVSK1E0dS9rSVJ3dUpTVWxJeElIOVJIQ1BFUjRPYWJLZk5oTnlVN0pTY24zejBqcG16SWdaVkJLVVlSSDdhWVVwNVNrbEtkVXdoMlhNakhDdTNaVEpxZE1UWm1STXB2ZlUrYjY1NmJNVDFtWXNpUmxlY3BLNG5OTm9DSmxmY3FtU055YVpyajk1enJvL1EyM1Q3R3dsSzJCSTdHd2xPM2RjR1pRVzMrUTJpQjM0RWd3TjlBelpXdktEb0wxeExkZEtYdGhEdmdQZEEyWGxPRVQzRWJpUFozYVdhcnZVN2I2MjFPMmhoWlJ2RDFURHFjYzQzNUVkSmhnYnNxcGxET0JJNVFPNTN6elFvdW9iZGlpY0toc2pRdmprVDlEMWJ2c2p3cS9VYjBIUm5TNjFEOGJtV3lyZDI2VGRUeDJTanYzWFZLdFlHTmdGZWdRYnJBeDFac2FURTFMelV6dG1Sb01UcWMrdzd6VTNpa0hmTU9TcEMrUitpRkRrc1p4dnlLWVJmZ1ZxWDFTKzZVV3BnNU9IWm82SXJYVVo2ZFdwSTVKSFo4NktYVks2clRVbWRSV3J3azBwODVKcllWWm9QcXRxWXRTbDZhdVNGMlZ1aloxUStybTFHMnBiL2lMVW5lbTd1YThUTjJYZWpEMVNPcngxT2JVczZtdGFZSmgzRjlJczlNUzAwS0JmV25wYVZscHZkSnlHWjVXa05ZL2JXRGFrTFJoYVNQVHl0SkdwNDFOWHAwMklXbHJXbFZhZGRyMDFIN0FtWlZXdy9UUzVxWFZwUzFPVzVaV243WTZiVjNheHJRdGFRMFIybzFwVFdsNzB2YW5IVW83bW5ZaTdUVFRUMnRKYTJQVFEvWnc5L0QzU09HNGUyVDB5TzZSMHlPZnl5WDdRWmR3dVB6MDZKdTJyTWVBSG9ONkZQVW9oc3VtcEVjNXd6bDllbFQyR0lkMy9qNnh4MlI4NXpCVGU4d0FmSGJLZ0I1emU4eVAwR0RZd2g1TGVpenZzYkxIbWg2OGZ1RWwvRTE2bHVkTU9oN2dWZVR5V2F4MG04YnpyQjJqT3A0U1J0dGhVWUwxVnJ6TzhTV3NaQm5HdG53UC92dGdKd0x5RnVPSTAreTNwZ0kvVDhFQmVZMGhkaG5iNWdTRXVwVnQxMGxBY3VGdlJhaG05anRiMlc4TndEcUZPd0QvTk9oa0tEanNaeEQyYzRqM0wvaGFydUlGNU5lSXZSRCtmMlcvOFVmNDU3UGZmZ0ZoWjREK2pZb3JmRDBHM2c1aFJlZGdVUGd6ZUt2ZzlTeHlMZnhqRU11UEVlTWY0SjhLK0dlQTh6ejh2NFgvYlZEN0gxQURIZk8vNFQrRHNPQlRwb0szRTRBL0NCN1dJZDRjUUpMaEYvQUxVRGdGZndzb0xBZUZ1NUZpMzRNVVAwUHN3SkhBc1g4RitDVGd2NHYvNTVuQUIrZFdCdnlnWTc2TXNFODRqN0pjNFA4NnRnMC9lTGdmL256NGI0Yi9HbkJleDM2eEEvRGg0UC8zaUdzaGVQQUJ2b2o5cmx0QWN4R2thSU1VaHhGamI4Q0hnOW92QUJtTHNPdmhINEd2cTBBVG9lUXN3RmN3M014V2FRWDdKYlVPRjE5dmdmOFZqZmtvL2lwQVEwRHRkWWFZMXlJRkhsRnJlSlVtZy8rTkNEVUhtTHRCK1hWQWZvNDFUZU1SNzVQQTdBQjhQQ2hzQVAvdHdIOFUxSEloOVZDRUdnVnEweFFkOERaWHkvNG9senRGaC8yMkIvZ0hFY3UxU29meDljY3FGdUJQZzEyaFNpVW9Qd3AvSmlTYXFtaUN3enZCMVhhMnhiOGpCUklRK3g4VlRjWjBuVVNPbjBLTWI0TG5hMVJjd0x4ZmE4VnkxaG1uQjNPSXIrK3g3ZVFnVkFOd0RnS3lsU0YySGNvN1NvR0pVbUNuZzdkZG9MOE5hN1FYc2syU3VoRmpIZlR6SGF3UlFMb0IvMTJreGphMnJSdGg3NEw5R2lqblF2WldwTkk1VmZPbzFBYUZPZUJ6T2VDYjRIOEFtRGZnNjg4NWR2TnpvRFlBZE42Q25RZmQvaU8wR3BUdE1zUlZxdW9yNEd4VnRRVEMzb0d2ZTBGNUhpQlRJZGNUa1BGM3NPK0EvU0xnYzVUVXNMSGEydlU4N0pPd2h3THpHYllweGRodVFwbXRnUDBlY01ZRHB4eVFsOWdXZXlBajFxM2IxY0JwaGY4RitIOE1mRlc3ZmhPY3Y0NFVlQUpwdm90dHN3WnJ6MzhNLzh0c0c4V1FkeHY3N2Y3NCtuUDRxNEh6SkZMbUJsQjREVitqMXJCYm4wWmNRY1JWQlMzYXBIU1A4OXJiQzNrVVlvam5MdVF5U3JjYm9Td1Y2aEJpUjZzaDk0TkNGWEQyQWdlMW1mMEthaTJsbnpPQnVRMjU4Qm5nSjZsYUVkcllBNWdKNE9FMllLcGFZaE55ODdmd2w4TC9JOFIrRGpyUXBtcHl4SmlJcnphK3pnTDkxOWp2N1FXZEIxZm1DY1FPTFRWUzREY1FWekVnMXdPQ1VtQ2d4WFJOQXMxWEFmOFB3TWZEM3dTL2FpVlJwZ3kwaWVhdDhDOVRyUURTVUlMK3R5RVgyaTk1TS93KzhQeDljTFVSb1E0Z1ZBMzhQMEJ0OEh0dSt5ZzNHZWROcE9mdDhOK0hldU1mZ2ZOWmhBSWRxajM0dk15VmdEUkE2dG1xUkNNczJpOXJJZEw4QUdLWkNFNmdhWElzYXFGZmdzNGY0QjhHUDZpNVVPck5CeERxWHdEcFFDalVydVkwd0g4S3VCZTF5azdnUHdJSTZrRHJXOEQvSW1KRWYwRDJnUDgwL05OQlp6M283SWYvS0VKTndkY0J3RVFyS2FGWGNod3diNElzSWNUMUhIQitEWnl2QXVkTHdFSHJZNEd5Ukoxam9DZGpncG9CZlRBcjRVZWJidTZEL3lSUzdIcFFSaW1RU0htakovdzl3ZHRQWU84R1paV1NTSE5ySlNDcUxub1ZmdVNzcFRRTlBRVHBBaldKV0k0Z2xzZUI4eVBnbE1FL0dmNWJ3TlVYZ0svcXljR0FReTRUK1dLZ3AyZHRBZnhCK0g4UC94VDRrZThTdFlHNUdmZ0hFZSs5aVBkRzRLRDM0bEo5czM4RzV6K0QvNy93OVFuNDBSdTBJWVdwcEZnRGFxTkErUy93cTNxK0dPbXdBNkZVZVVIdnhVQXZ5TW9DUElCWWJvSi9DVFJaL1Eyc0VId0tuMkgvaDVBaUllYlB4bE5paHVnbnZpbStKZnFMZGZUY0t0NmtwMUQ4UXV3UnQ0bTk5SHpCK0lZeFhReVN4K1FmeEdBK0ZVM2duRDZ4UkF3anMxeXNGR3ZFZXJGSmJCWGJ4UTZ4aTBJY0VJZkpmMHljRW1mRU9kRk9tZVExZ2thYWtXbjBOSG9iZmVqcFp4UWFnNDJoeGdqeWw5SlRZWXd4eHBOL0Vwa3B4alJqcGpISHFLVm5nYkhJV0dxc01GYmhXV3RzTURiajRST1V0K0Z0Sjh4dXdnMGFhNm4zdmdVcnpsN0NPclZjMXo5eWpZbzlCeS9qWDlsVXZYZVFWeUFPNFA5bTFvdFlSWElkOEJQeDlSa040WlUrVHdCemhHc3k4RXVFWHF0dWxXUDlSUVArd2sxU08wVmNHL0ZuNzhlODF3cVFaL1RhZHF4REJ3LzM0Uy9acmJDL2p6OXl1Zmp6MW81Vmx0L25sYTJpQS8vQkVubHRvUGc5ZVBoSGN5ZEIraUZVRFZZeFAycmRUSFl6UTlUSm1lYVRESGZkd2hUTVcyRlBZSWc1VFBuVnYwRkE2ckhxOERYcy8zc05ISzRISnhQTUpWeW5ZZStDMGhuK044NDZ3K2Y5OVNTZHlSRzlSYTdJRjMzRTU4Uk5vcS80UEduTUxXSUFhY05RMG9SaU1VS01GSGVMZTBTcEdDWEt4WDJrYzFQRk5ERkx6TVlmMzE4YWZtak5DS0kxZ25CWUk4ZUxTV0lLNFl3Uk04VWNVU3NXaUVYNGI3MUtyQlViWUphU3ZWbHNFMitRdTVic055ak1Bbm80cDQ5ZzljaHk3STlMVTJ2QUdHSm1xeDJwK1BvU2Y1WFB3dDhNL3diWVc5WCtVdzN2WExWU3BGYkZxUFZSM0U3b05TcUZIRXJ0WnpUV3FWVXJRb1JUaW9wdklsTHFWLzlmL2pma0V6MnJ6TDUyRmJXcDArMVpkbzA5ajNyQk5mWmllNWxkVDc3VjlqcDdJOEUyMmx2c0JydVIrblY3N1AwRTIyTWZzbzlTKzNuYWJySGJIT200N1JiSDc2UTRHV1JuRSt3MDliSHp5ZC9YR1VCZkJqbEZkclZUN0pSUVBGVk9PZEZucWsxRUlmSTRsWGFiZWlnVUhxWVNlVnIwMCtTTXN6YzZFNG4rWktaRi9uSE9WS2VZK0traXFteVlkL1ZzeE5QRUQxR3JjMmJZRFU1Zit4QnhNWXQ2QVhzbzFEeG5Mc0hkOW1KbnZyT1E1RDhOMDBKMGpqcExhSHc1aS95em5KWE9HcUxhUnBoK2JkWVQveTB3R3dsL0M4SFlFSFZuazdQVmJpU1ptNWhYTWh3YkdXZTdzOFBaeFhRanNUREZzR0VlMk93blUwT2gyQ3ltTk5pcnpRSG5zTDNNU2JGcm5HT1V3cWNvSmM4UXZYTk9PK0lIRDI0TDBrWEhUY2J0SlNuMlUrcVR0Q1EvKzhLRzVlZVFUVXJlU3pJMTdtQU0vekhHSFNTZTk3clQzSm51bnU3ZUVRNmpURHc0dzl4OTNQMml1WTlJUVhCM0llZXlNdTdCN3FIdUVlNVNTbzlUZHBXN2duVDNoSHVNZTd4N2tudUtVMDZhUlBubW5rWm1wbnVPdTViQzFyb1hSUE5IWmhHWnBaVC9FdW1PTktlNGRkcTdWN2hYdWRlNk4zQWUyUFZPQnBXRUZ2ZG1ONDBxbkJ5N2p1U2E0bjdEdmRPOTIxNU51aDQyMEFpS2F4L0ZlZEI5cEp2Yzg2aEVTQW9QYlhFZlorTnVkcC9sWEhPM2VnUnlMK3luWEhRV2VteFBvaWZrM3VsSjkyUzVqM2g2ZVhMWmphVExIbWVRdTlCVG9QTFQwNS9pcjRiaE5OSmFSK0VIZW9ZUXJTS0NIYVY0VDNpR2VVYVNUWVlrR2tGY3pYS1A4SlRaTFo3Um5yRjJ0V2NDU2RoT0ZQMVVldXBSbGpNOFZmWTZUN1c5MFRQZE04dFQ0OHoxekNOS2ZUMzluV09lT3M5aVo0Qm5HYVYvZzJla1UreXBKejAvNWxuTldzamxIN2ZWYnZFMDZKdHM5M3NPUVhjNFRiWGVPYk9wOUU2TWFEL0Y2SjdqT2NxRzZEUTVLWW9DZi9PY29KUmJGNldwT2pkSjAyYXc2U3dINUdlalU4bHoyb01jOWJSNUplbkxDYThib1JtVDBzbnJkNC93cG5qOTNneDNxVGViK2JGUGUzUG95ZmYyOVE1dzNQVDA5UTd5NXBEOExkNGl4Kzh0SmxPQ20zREhlYXI0OWx1Q1QvWE84TTcyenZYTzl5NzBMcUZudVRQWFd3bThsU1JmWC9jRzd3RHZHays2ZDcxM0UyRkw3MWFTc3RuSjhHNzM3dkR1OGpSNTkxS1lBOTdEM21QTUZkVWdmUW5ybFBlTWZkcFRqUy9udk8zZWMxU1hleE9DQ1drSm1YWTl5ZEdRMEpOcjI0VGVDWDNJOUVzb1RCaHNyMDRZU3JKeHpWSm5OeWFNU0NoTnFPQmNKcDFqeVhKUXAxSnQ3SlFrakVrWW56QXBZVXJDdElTWlRnNHZvVXFZazFDYnNNQnhKeXhLV0pxd0lxSFd5VWxZNVozcTNwQ3dsaUFicU8zWVJzOGJDVHVkdmdtN0UvWWxIRXc0a25EY1haclFUTnJXaERxM2pXdW5oTE1KcmRCdVN0bEVRYm0ybDR5a2R1Tm9RcjlFMitFKzBVQ3NUSDBOTFgwcDdKMndjOW0yMXFOVlBnMUlHOXVHaGRhNkFsOFhzdTFhRFA4eTRPeUZmei84QzRDSmUzL010ZkF2QXY1azRNd0N2RWIxR0dBZkJXUUc3SDQ0RGFRVjhBUFloN01Ibkd6RXF0bEswTmtHeUI1QVptQWZDL29yeG1EWVp4RkxFSDdzUVRML1NjbW9kalJoSHdLa2NKM211SXpOdkxMVEhveDREeUxlM1pvKzcrQktReWpzL3JMR1l0MXFHdXcyckFyRm1tK3hXSVZTcTRxQldhdjJZOE0vRlp6NFFYTU44Q2Zyc0V3Wk85T3NMZUM1WE8xN0JKMjUrSG9BY2EwVjh6R0h5cWx4RVBpemVFNmQrcG56dVU4Ti95YlZoOVBjUG96Uk0rOVhPYVJTRWluUUFQczQ5VGc1L1huM1N3Q2NOQ3VKUU9jT1FIYXpUWlNKdml6QUxydGJBVitFMlc2YzJ5SWI5YjJFOVVMZjZlaEtCWHlydmlWUXljZzc0aXlrWkNWb25nTE9TTUJ2d242MnZqcTE2NUZySmRCR3ZnbFI3YkQ2RmFqTmhqMFJuSnpUTnRPL1M5M0ppRFFaQWNyakFmOGhKRko2TlFGcG13Uy9nYlQ5TDUwWGxieWVXK2tlL01jZzNTcnd0bFRwTnU5em9EeGxtbFU2bHhubktZUWF4SDRQSlBKa3NPMmNZOXZlRE8xS1VmdFVvVy9RS0xzbitQd0RlTUJ0a3ZhUG9SdWJzU3RqSGR0V0xkSXFFWEhsS0o1aHB5bU5VbVVLL0RRQzhpUFk2RnVyMno5SjYxajJmcEFpSC9EK3NHK0NuYS8xQ3JMRG5nT3Qyd3Q3R09qemVqNkRSbWVjQWtNVUorQVovWFZqSCtoL0MvNlpzRE5WTEtDOFhPR29NZzdNSmFyZmo2OEZLbzlnN3dDSDY1UzhiRHY0NmxxQlZQcThxbTJnRlMycWJnRWM2V3podkFOckFISi9LZXdUaVBFTWNxY2NOSjlEakJYWTM3SUJ0aHMwMVE2OVhFbmpEUGxyYUNCS244UnRLRVk2NkdDdnNoVlFlMEZWelFOL05kdDJDZndUQVYrcjBnMzJFbzdGWEFCN2J3ZldVN0wrbU5tb1o3YTNiMlpPQk4vUE1CNGMxZ015UWRWRjRId1c0TGVBSDV5YVJPT2lOQ0ZwMUo5Skl5TEQ4KzhlenZYL0g4ZEcxUG9rSGhSRzRoR3NyVFFTbTgyK2lVY1NqOE0wYThQK3MyUmExYnVQTUgyMmd2c1N5WVEwWHF2R2JlMFNUdnQ5NlJxbTRRaWJxR2hGL0NMS242V05yZDFRMUxldzZhVy9pMDVhNE5IdU5ESHlISW5pdFRrT3ZYZzhkZVVuYkJJdnprRFdYQlducjBERCswZngxYXErYy9yRThOdkZRTVlvQXhsYW85SmJtd2h2V1RxY3JYbXdPMldPd0hVZWdnZWQvcEZ2elYzU016RUtQK3cyZDdveDN3WkdwUm03UTdRN0xEWk1kTng0N3hYbFJ2TXV0RHN5VHZpelhXUmtlbVZrUm5maE0xcW1JK2VScC9VOGJwYzRrUWRaRjNERE9qczZTaGZEZVhJKytidW1RMWY1bStQekV1RXBQU29mT0w2eFpDYVFxWXJqVnBPWlRtWVdtUm95ODhqVWtWbE1abGtYZC9yN3ZGOE90NzRMM2ZyenhMTzZpNm5TZU5GdVhkVDd1aTd2WVhkaklzcmcrN3BieURSRXVmTTAvUDNjcnVHMEc4NUxYeU9acHFnNmRMSEdpMDdmYUhlUGx2OWkzVXRKLzlXYTd6Q2Z5eTdDN1pvUGU2TDRqSGFuNisvbmM5ZWR4N3hmL0ZXYTMvTzVpN3U0ek0vK0M3aU1kK2dpM2RVWGNQZEV4WGNwYnRmeTJWVi93dW01K0R6eUhVMk1MUS9oUEdMM1JLTFNTY1k3SFVXdmhVeGJJdW9DdjlUZk9HeU45dGNwMSs4bTR5ZVRRaWFEVExZT1IzVDhPV1R5eWZUdDVORS9RTlBlMDhtUGYxQlV2VlNud2pCL0RBKzc0SUhDK0l2SUZHdStwMnZlMlZBNThaZm8rTXJKVkpJWlIyWWltY2txakgrcWhzMGdNenVxZk9sNnVXdDlEc050YjBHY2VqaGMvM2FCSSs2NWlsNDBENUh2OHhWT1RGdDdBYmRyMjNIZTlpRGFqWkxCdjVETWtxajM1V1JXa2xrVDFTWWVpUzhiMTBGeFRaM09HODY3OVlsSzk5blVhemVjZHcxYVg1cTB6cEFlK2pjcDA2Mk9DSnM2clI4dC9xMXdwMnRZT082cXpyakRZZnpiRTFVNTNSOUZKNHl2K2VGdi9oMGFGbzJqYVlQR1BBMDdtdGhaUHkyTFl4aUg2bWovTGtVZi9EVHBPSFlwV29DRjhhbmMrdmVTT2FEVGkzRTNxdmlnMjRjMWpOUHpXR0trRCtrL1JlWU1tWE5rMmp2VFBXQXBFKzZ2UnZwZk9qL1pCTHlKc2YzbTZQNXhyOFJJUHozaUVqd1FKSk5HSnBOTVR6SzlOYndQbVg2SjNmdmg4ZnJldXM4ZEtFeU02V2ZIN1VOSDlYc2lZUkoxK2JFVFkvdmxSMkxqREF4T2pOc2ZDZ3pWUEk4Z1V4cVZSZ3lyMFBLTjRkR01XcHZUOFFEVzQrQmNQUEx6eVQ3bGZCYWJFR3k3ZnNhMjlWOXMyN2ZpakRiWUZyNWFUd0MraG0zbnUyd2J2d1FPSUc3Z09OY0I4d2pzS2ZnNkN2YWYxWWx2Ykp1ckVOZEVRQkRLTFVGNU1PQ25FWFk5SUhYdzc0TGZqNjhwc0VjRFBnTCtiYUNaRFp5VnNLc0JCMWZXTEVENnd6OFY4SVBBcndFa0E3Ymlaekhzb1pEQ0RmOThoQzBEcEJCK0MvN2w0RHdIZGdYc0l0RGNCSng5c0hIQ25XczYvSnRoRndQblI0aXhpbTN2QTJ4N2dPT0dMTzZ4d0hrWXNReENLQWVRUm53RnZvVzBNcFVzVHdHeUdqWTRkKzJBL3cyVnAyb3VEdmlsZ0E4QTVYR2dOZ0g0NHdGL0hYRzVnUGtJL0I3NFp3TS9CSnlmQU5JRWZ4Wncxa0wycjBJVFRnSCtHOWovRi9DYmdHTWcxRjhBUVFwWTRGQWlEVjNBRVltQ1p4MzNHbnVFRkVINVQvS2ZoT0E5NUJSNmc3MWRtUFlPZTRkSXNVL1lmeFNwOXAvc1A0bHI3Yi9ZZnhXWnVKbnVVN2laN2pPZUk1Nmpvc0R6Qjg4ZnhNM2VOZDQxb2w5Q1JjTDk0dk1KRHlROElHNUpXSmZ3aWhpUThHckNxMkxRUnhMSEZ5bmhaNUdwSWNQM0M5ZVJXVXhtR1psNk1xdkpyQ096a2N3Vy9UMXNHclRiMkFYT3Bvbk1Iakw3eVJ6U01LWjFWTCtmSUhPYVRFc1gwM2JwUmtveWJoV0g5Sk5KNlRRc2c4elFKbHViOEIyeWZjVVhJK3RGMUZxUkVWZ3ZNa212Rlpsa3pDRkliWmNWSTdWWUx6TEcyRXd1cnhmaFZTTFQ2TmtIbTEzbE93ajdDSVZZUkdhOGNSeFBzM0hXYURWYXBaQzJUT1JWTnRqM3IzYi8zNlozLzhQR3FVWTRSVHB5enZncHFnblA2Yk1CWGlUL0ttQ08xcUhVbWVDallLc1R3L204cDRDR0R4WDZySENDOEpxRDZCUERCK2dUekFuUzhWYythelZ5UG5nTGJENjFKUHA4Y0p3TWJrekVxUUNuK1R3TDR4ZHNFN2U0c1ZPZGtJNDdTTU8zakRiQmZnSDJ0MFhuTGFQdkFQTmUrRUdCVHpzZ2V4eHMzTmpwSE1EWGF0aS9CZVJ4MkQxWUNqNkRnK3llc0dmQ0JxYXpBWFlWMmc0VjEyQ1d4WDZjWjBkaC85TEY1K1Ftd1E2eGJkeHIvdzVsbk0rNzNHcE1vdkxubDZzbGFhMzlodjB6ckpQYkpWeTRkOUtMZXlkOTlqSDdEeUtkVndHSVRQdU1mVlpjWjU4am1iSTkvKzA1TG5wNlYzdC9KSElTUmllTUZyMFROaVpzRkRjbWJFcllKSEt2R04wOG5sWW5rL2crSmtRbVBRNDg2d0poZWwwRTNZczF1WUp2TDgvRHlwekwrL0E2SHlwVHVDOFhiVXJrYnRNM3lIWnBDSitIZ2pQdTFlbjJ4dDA0aXdwbmtSZzRMVXZPQmlSUjlCRmVVU21XVTQ2NXpCK1kveUNFK1V2emwrVGZaeDRVdG5uTVBDWjg1aW56YmVFbkRNZjhqdmtkd2xocUVnL21TK1p1SWMwOTVoNVJZTzQxOTRxYnpMZk0veEo5ZWRaWDNDS0NRbG9yaFVuR3N0WUlGN2sybHo0cWU0TGVoYlUxNHJxMThRQzJYVGlFSzZ3ZFlvQTFQODZ6TU02ekpNNnpQTTZ6TXM2ejVpS2Y5WEdlVFhHZWVEeHZwV2M3N001blI1eG5WK1RwOU8rOWlPY0FQWWU3UE1lc1UzRmd4N3J4ZG9hZWMzR2U5dTZQeStyK3hFM25lRSs4UE5yVi9YRjV1eitjWHE1Z2wvVHJ6TUdJMzVYbXlpVFQwOVdibmo2dTNvREc0MlVUMGR6azZ1Y3FwR2V3YTZockJEMmxjWjRLaXJmQ05ZYlR5VFdlekNUWGxMZzZGT2VKS3dkU1BPenFwMHVhdUthNXBzWFZvYTcwWjdwbXhzVzdTTDJubE9yK3pJbnoxSFo1SnRFVEoyeTgvS1djNlBiRUt6T3VCYTVGM1o2bGNaNFZybFV4ejFwNk5zU0JiWFp0aTNuZWNMMFJqejlxT1NkeGZka3hGamJXT0xSalhVTUgvdWQzL0Qzc056ci9LcnRHNnovcUlyeml3Qm9BVy8ybFZQKzZzY1pCL1oyMjhCZFhyYWV3Y0txOHEwVForUGM3UlAxeHhUL1BEUHc3bllELzZxalhYUnRoVHdjRnJMQ3dmSjEvaHRXL2ZiVU9RdjN0VjM5aTVUelkvd0piL2NGZWpiQUpzUEhuMDZ5SHJmNzlYZzg0Vm9WUXJ3blNnUi84YTdVbTZhODdxTjA0by80bnF6KzlvSHpjek9WUmwrbUUxNG5JdTgzUGtmMGJrMDlyM3czNGJ2MVhzNmR3VTE5OEtyVWlKbG9ZUVMzTWI0alNNV3BiWEFTMXVyUSt2MEhyOHphMVRqNWhHMFRkR05QTkdNWjRJY21ZWkN3eUx1clJPTVlVK2paTmhMQmFXajFEeWFqMTBuMHU2bEg0RldTUDBSRFZaNTZFRmRlVDBIdnV4T1orZEdlNE9mcDlEcDVhTWd2MG11eXUzN20zdlFqOWJjWmNRWDN0OExPQnpPYW85MjFSL25qdkNsLzEwL2VSZlpDZUl4VEhjWENsYk82Vm4xVzljbklwZnRaK2ZadjVvS2krUkMrQ3o4TEtrL0dBOTBZWmdONTBZT1dQR0lnLzJnTUJPY0wrRHBRQlZaYkVaMkdYS0dyQUZMeitoT0RLUHhRMDBWZEhML1N6c05VdDk3MTVwWFBIRm4zalBhOTZIcWpYUGg5RWpBZmhQd2FiTkxKakYvZHdPckFHcVFPcmpBUldkOUEzL0hPSHZRWTIvcXFMTE1HVVRmT0ErVnVUYVVuMkNaUENwTU1ZZks0UllXYVN0bVp5amNCM3gzZE01SC82SGJYdDk1RDlYZTQxa1g4WWhUS3cxanRkU3pxRWJNUGw4Ri83eExSRTZrc0NJeE5ZQ3VQTFVkOElOL2hnTnhxOE84RHdqdTVDSXhyamRtQThjQUdNb2NCNDhBSjgzQkhMUitLendPRGJtREswNFJQZjRra1Rpek04THJleE9NVngrWTNGdVRNdXgxa2FEN2RFaVJGeGVKWVVYbEZTY3QwVmgrZXVPQ1BqOE53VjUrNDRQSGZGS1luRHN5UU14YlhDdVNkdU9xY2hOeVNaVEdDVnhrM3BiR0N5THFZQjY5NHV0SzZQaTFYV0JTc25MdGFvTGxpOTQyS1ZkOEdhQ3drek5mK0c1djYrdUdtZXBxa1ptbFpGSE82N1k5MGZoL3Z1V0tQamNOOGQ2NEU0M0p0SWM4Vy95cUhLT055YlNBRkZUV0U5R0lmNzdsaGo0bkRmSGVzcmNianZqalUyRHZlOGs0Ukx1VWttSFhXVkVBL0YxWXJ1ZU9QaTZrVjN2SWZqYWtaM3ZQRnhkU05kWThvSTNpTng4NzA3M29TNE9kOGQ3OUc0ZWQ4ZGIyTGMzRStQWUJvYTc3RzRPZHNkYjFMY3ZPMk85OVc0dWRzZHJ5b09mNVpPWDRXcDlPQnJjZmlMaHpjNURuL3g4TDRlaDc5NGVGTzY4UmZlMmRSUEZESkVjajBha0EvS2grVWpjcUw4cXB6cDJlNnQ5ajdobmVwOTBqdk4rdzN2ZE85VG9KUWpBbVR5cVFjd2dIcC92T09wbU9yT2NpcDU0OGllU0p6cm5vZnhNOWpiRWVQTjhMZXozVkhPNSs4YXIvSHNocno1dlYrUkgrdU1WWCtUNTBQSlhpeSt4eXRRQVg5TXFQNW1iNUtzWE5SeHoxSitXZDRwaEx4TDNpVTgzcWU5M3hSZTd5dmVWNmhmS1lVankrVVQ5RzI2bkMyeTVEUHloK0lHOXk3M0xqRUVzeGhmSnBtZUVrV0pmMDVzb1JhSTUxMjNDaGxsK04zb1loaHVSaG1HbGNoYXVVQXVra3ZsQ3JsS3JwVWI1R2E1VGI0aGQ4cmRjcDg4S0kvUTkrT3ltYjZmbGEya01yYVphSWJNZEROTHdjMWVZZGZNMWQ4THpQN21RSE9JT2N3Y2FaYVpvODJ4NWdTenlxenVobDltVGpkbm1UWG1QTFBPWEd3dWk4RHJ6ZFhtT25PalhHRnVvYmNHdWNCc05Kdk1QZVorODVCNTFEeGhualpiekRaTFdtN0xiNlZZR1ZhMmxXTnVzZkwxZTE5cmdEWElLcktLclJLclhLNnlLcnU2RWY3QzdsaHJIUE5uVFZSdU9QNEl2Zk80SHpiZHpwOWUxdVRvOU9xYVB0M1M1U0xUSTh4SG1OOXdmR0U2WWZxUjlKcHF6WkROMW14ckxtYTJsbUNzem5OTjRmZE4xbGF6d05xTythQk4xdDRJL0FCbWMrWmJwNndjbnIrSlRoZXJ2VE5kd255RlM1bmFlNmZYOWQ2Qmt2SUgrTTlHbFNaVkM3d09QMVlTVTMrYWJZeDkwVnZXWTBxSk5idkdSTUN4Z3QvQUxnSzlMaDhsVlB3M2JJd3lPMUM2alRzQlFhOWRqeUlPdzQ5UnRYRWZiSXd5QmNhNFZHZUk4SWpjcUladEE0NVYrUHgzaHlBWVpScFlaNnpXOUlzbkVRcmpsblpRYmxjMHNjTkJZUHlxZW1vZC80YXdXRTlzWUJTaDErNy9CSDdFSzlTNmFvelg5ZjZFcHhIMlgwSDVkN0F4d243djdzNTZ6Q2dINWpIWTMwT0tvWTdTSStrNXNHY0RqaFNXb3dCQkg5UElBd1MyZ2RHNUFjb0NLODcxeUY3Vm5MZkNScTFvWUFSdlBJeXZXSjF2WUMrRVVEcytOOERHT20rMVl0dkFxbTYxbDhOOENGK3hjME90UkZmcnB3MDE2dnNWSU8vQ2hpeUdta1dBNXBocS93Tm1MS1RTSE9TN2dURWhhbWJvRGRvUU5RNThuR2NDWW1wbXJwUDVqMUNpdk51ejB2TWp6enJQcTU1Tm5wOTRObnYrMWJQVnU4RzdVZE5JaWVvOTg1OFFTVlR1dU1od1BlT0VNMlR4aHdvOTdJS2h3eTNuWURVeWt5TXVzZFhoK0ZaVG14bDlvamJiVGVUdUlSaWZCOTBranBMdmtENFZ1b21lQnRFbUduQTJORDJFeCtkRzc2ZnZEYVRiYkdLcGRkSnFBaDFGUmRNUWpaSFRwZDFVTGxjamxJcTNqV0xvSzJpOFRsamhHWVRUVVdVSHV4Y29wOW4rQzJ6c1hoRFlJU0NnVngyb2l3VG1xNFRTVmV4Z0VkakxRVnl3alRrdDhYOWhRejlwTE0zMkZOalFXL0VkVUlObWlsL0MvbjZNMXFtZTF4TTZEOWd1ajhyWkRJd01PNzlMNFpaM1N5cHgrSXRsMkp2c1RVSzZtOXhOd3FSOGZsMVlsTGNiUkUvdlJzcmh6eVQrTmZHYzZCVkRNMDJQTmtvdUs5VjA2dE5rNFNtOXJIUjdFWVZjUGRMbUdUclc3YnVFUUlsTU9HK0taV3Y4Nk85cy8wTlVHcFJRR3BUSDRIMXdYcU5wWDVpRDJpdklRVzAzbllxTy94bjlsWHZnK1RTT1M3dGdtbjdZZk9NK2JoOTZ4a1U0dVRMeDVBcVhLTUF6WHMvWlhLbVlWTGtwdVNJNm8wcFBLWm1LSzBZOUMrY3pYSDdxR1pRRDJmU1VrUmw5QmVsbjQyYUh5MDgvVTlqVWV2SlRUcWJ5Q3NSd0pUU245b3BxVHUwVjFaemFLNnc1dFZkWWMycXZ1T2JVeG1uL1B5emxaK0syLzVlTGF0ZjIvM0xSNVJRWXJXdjJKeU0wdmZLK1NDLzFPdXFsemhjNU5CcGZJZ3BvdlAxRGNadjdQOTMvS2I2SWZ1dGc5RnUvaEg3ckVQUmJ1VWNkY0RkNVZubit5YlBhczhieno1NGZlMTdHaVFULzV0bm1lUjA4UktkVW5VNnBKeitFUkI4VngrRmNXS2h6NFdyZ21mc2pmYWxIa3FZNXZsQWY3MkpwcXQ3SHhFanY0OG5MM2llNFdFN0MvWk5Ka2Y3Sng4Y0xsNlhzTG1WSmxiVkxLeEhsbDZGRVhGcThZYjJ1dUF4NmZla1M5OFpmMTY2cEZtN2pMMDJHTVpHMjlNbkwxTWU0MlBqRHJlSFlTR3Y0VVhQd2ZtbForekduWmUzSG5wYTFsNVNXZFpGVy9PcHBteFpHZWdoWEE4L2hmRjZFUHVUVndqVzNmaE9qeHQ0ZmQrczNLV3AwL3ZIeGtrKzk5YjcwVkpHWm9HZExQejV1dVB5V1g1YnkrMEZhMG9yTFVnb3ZMZVp3V1JwOVdjclNwY2M5Vm84RE15NWpmZjNBUlhPZ3hvcmpNRmFzakdqZlI4dERsbkFvWkM4cWk3MXdVbWZXeDhJRmErQ1lxRG1GajZjZk5EWnFWdUNqNWlBOGJ4RFdobytEaHl1VEM3VWZleTdVZmdKeTRlSjRVSFAwNFpXUDBiM2hld1QvbVJ0RXBiVmE3Q1ovRDNrUFVmdkhLSHByaWVKNm9ybkI4d3JvL2hTVUd6UnQ1djRpL3VKNVgvVytLa2FnYjNHWDZJRTExbGhucmQydXh0YXVwVjJUakl6NkhoM08xU1hzUGRZMGE2WTFoMHl0dGNCYVpDMjFWbGlyeUt5MU5saWJyVzNXRzlaT01ydnB5ejdyb0hYRU9rNm0yVHBydGJxRXkzWWxrZ201MGwxWnJsNnVYRmNCbWY2dWdhNGgxa0hYTU5kSU1tVWFjelJoanRhWVkrbExJcG1RYTRLcktqYWNxOW8xM1RXTFRJMXJucXZPV3VwYWJOVzZGcnVXTVMrdWVvcHJ0V3VkYTZOcmk2dkIxZWhxSWlwTm9MS0hhSVpqWUpyN1hZZGNSOG1jY0oybTl4Ynl0YmtPMlJKVUdxTmkzMk83clptdVJESWgyMituMkJsMnRwMURKdC91YXcrd0I5bEZkakdaRWxkL3U5dzExcTZrdDBwNjR4aGkzd1NGR1VkbUlzdG5UN2FuMmpQc3FkWk1lN1k5MTU1dkw3U1hrRm1PYnl2dE5hNUVNaUY3UFdudVZqdWIzckxwYmJ1OTQwSnZzZWtTKzJidkNxZUx2ZGMrME9VdFZqN201YkI5ekQ0RlhzNkFzM1AyY3J2ZHNTNzA3V0kweFBGK0tBMjVQRG9ScXdVWHl2ZUx6K2tQbUxkTzBFbHpNcDJlVG0rV3dlbmo5SE1Lblg3V1dtZXdNOVFaNFpRNkZVNnBhNWt6eGhudlRIS21PTk9jS1hhSk05TzF4NkYwZG1ydGhjNENaNUd6TkZZTG5CV3VrVTR0bVZYT1dtZUROYzNaN0d3ajh3Wnk1YUN6MDlsTlpwOUtlZWVnYzRUTWNlYU0wcXpKYVNaelZxVVp3VnZkd20ycmN1Uk9kSTZRT1k1MG1ld091ZFBKWkxsN2tYd3IzYm4wTGRjNXpoSlJDazUzRjVEcDd4N29IdUllNWg1cEhYZVBkSGE2eTl5alhRM3VzZTRKN3JFcTM5MVY3bXBYSXBtUWU3b3J5ejNMWGVPZTU2NVI2U0ppL3ZpckZTa21WaE9aYWswT1ZxR29GVHQ2UFFEKzVxc3pQZFZhRk9NYTJHb0ZpenFQRDJ1QjVOL0Iveit3MVVvQXJDSlE2NVJNZGY2bVdrRUVIUEZuMkZoam9NNGNOSEhtbzZrb3F6VkYzd0FPOXRPb05VNEdLQmpZbDJOZzlZN3hhZGhxSmFGYVViTVNmcldXQ2VzV2pCdGhxNVhnV01PZzFsT1pud01tVGt3WFdMdkl1MDNKeHVtUWFsMU5CMVpHbVdxdkRGSkRJbXpIZnlBVWR1U285VUp5Sk1LQ3BwZ1BQOVlnU2V6d05MNEEyNE92THdHdVZ2dmNCUWhXVU9oVldOamJwRlpUeUVMRWp0VVI2dFJYUTYwRnd0NG10ZFpDbjZ2NFRlQUQwMUNjUUNKVG5aNnA4aDJyTXRTYU1iVW5TWjM0YnVBc1M5RUJDbGpYWVlHK2liMUsrc1JWck9reXZnUmJyVU5UcTdsdzhxT1JwdE5xQjFKbVBsSm1HOS9jZ2JDZkFVMW9VWWZTdDN5ZHk0eXBWcEdwTlZmM3dzYVpsZkpYT3QvWGtJMzlVbXExTmVrazN5L3dCQ0MvQmtTdDMzZDAzdkZYdGZJTmE3UU10Y1AySnAxV0s4Sjdzd1RXZEhWQWY5VCtNUE9MZk9aOWg5cVJBcDFSNjFMTXJ5QXN6c2sxc09MTDVJVmNoa3Z0SWNPYUZyV0x5OElxTWt1ZHc0dlRQMTA0STlKNkJQWlhFUmFyclN5MUgwdWR3cWwyZzZrY3h6b3V0YzlNbmN1SlFodmVNVllHeUN1d2kyRWpyWVFxTllkeEQ3NWExNGNUS3FuMHNiei9DQnljaUVwbGpTQUc5RW84cDNPV2NYajFsOW9Sa1JIUmF5R21SWHArbDdZQ3lxUisyVTg5RGJwUE9WaW8xUmRDZk9PU0tVbW1wT2xNQTMvRElwUSt5RnpUQjQ5OXVsRHIvb3MvcHZqVG8xS1JjNlcweS9lUkh6cDE0bEV0dVF4U3g2TWJFdUhkUk4rSWZDRTg3L1A2K3pCSVUvS2hZdTFPdFZoTFUzcVo2WjVQbW9WWFJKcUZWMGlhaFNLODEydDBSSjdwNG5MOVhRN25Qdi9iTkVSZm9oait1em45ZmY1dWZ2aVFuUG9zMXhCZHJ6MTF5U1hSOEx3aTFNNmZjcXhZcVltaTVDVU9PTlh2b1RHcVQ5YkxlbjJXUmdBNUVFUU9KQ0VIUWxoaFdwQjRKdkdNdUJrNTBPOERjcUoyZ1ZSZ25tTHV4OHlMRkdWSTNUa2ZNeDhxZDlJK1FibVQvb25JSGJVVGNsaUVEMVVmZi9BMHJrUUptSGZaNVBvdy9LaVVIb055TVA4VHdWRzRGZjV3ZFUyNGRibDgxQmJxM0ZNcjhZczF2Um5pZy9Yd3dxblBNK2JwdUhGdGZvVGk1VWo5RDhxUkMzZDVaZERETjNvdCtFVHdaR1AzWENZZVBrV3E3aFBCbGRvM3orWFkwTDI3cHo4UXZZL2kveTN2eWN4QzY3K0lURmtNdDd5elk2Uzg1eFBJTmU5djViNVpnK0NUREdaM1NlTXJQWHI0YVBJbEt5S2o4VGNwb1lXL3N4blF1ZTNvNC93dDVtS25oTHdXYnM3ZlpENzJ4RzR3N3JtOElYaG5XTTNmWkU3eUhodithN2RUOEIwazg4NVRVLzV0NUdqdktHbU52MmxaWFNLWEhsNGp5RDJ0SnZTMi9wWnpObHBXM3VrMi8yODZiL1BweVNMZXVNZTZDN01iQy82RzVlVjZpWHV1Zk1aSkg3MFc3K2tMenVOY2F2LzJZdXJKWEZFZytMUXNQdGxqZ0o3ck9qOFhLdjJ2RkRlczRaTUUvNjB5bzlZRW5vK2JENzRLNDBxa1kwR0VkM2xWY1c1aDFXTSs1YjhobGhMOThOckhxeVBWT3prM285WnRYaDNwM28rZVBqaEhaaG05OXhNVDlZcTdxeVBsK1dRYzNzVlZULzVDa2lMem9tcU9UMVlPRkVaSklhOUtHVnhpSUQxOVNIdjREK1ZLaW1ISysyalJKek1ub21VdzZlMXFsTUpGN2VnZ2FnZjY0MS9SS29JTUV0VjZwLy9WSkFmUDFqRDFDc3pXbEhicGdYMlFPQzkyNWVtVmlMbFdYUHg0c1kvdWpmWFc2ejJmdml6OW5vdVYvc3J5VUh1Uk9aQ0JmNTRMTUJkU0ptckZoNTBidU5KcGxoM2hXRjRGL0lablh6aHYrWVMzOGk2ajlVOWlDbmZ5YTJJdDlMeFBmQnJ6TG9Zc2pKcjVYdy92WnBqL0NlZjVrMVB1YXEreWNsZDcxWlc3MnF1dTNOVmVoZVh1WWxPWjU5ZjRITzhsbUFzWlE1eGZyaG1uSzEzTDVVYnhMditYODQrRWN6VS9PVUdvR1FjK0oydlJWY0s3eEZvQVh0Rm00c3lZOEwvamoySkgyZitXc28rZTg4N1pkS1d0OGlyUzFhdTduS25WSkx6RzljT3NKdUV3ejRoTFd4UEMvYkhMc1NiazR1TU9yK3lZS3o2T2xSMlhra1paRVU2TlR6Q2YwYXNzdUFjejV4T2NvcDE4Zmh4ckpTNGxUVHRYUE13VEg4ZUtoMHRKMWZDZi9EcnhjYTVidUpUVTdSM0ZzM0VWY0J5N2hvRGI4L2xYUVNwSGMveHhyZ1M0bEhTTy9wKy9TSHljLy9NdmxtdmVXWitQbHBUN0czNTlOdmEveEo2TzdYa05LMUF2K1E0RzNxUDJBVXlKTWN3WWFaUVpvNDJ4eGdTanlxZzJwaHV6akJwam5sRm5MSWFmelRKNnJ6ZFdHK3VNamNZV28wSERHNDBtWTQreDN6aUU5Nk5rVGhpbmpSYWpUVXJwbG41eVUyU0d6Slk1NU9iTHZzWXNPYURUZ0I0Wk9jaG9ZTVBoZ1JkbDNwZTNLTDVBZzNrSzh4UG1KUTRmb01GMFdSN0NJZnlSNEt0SUZzc1NTdmRLT1k3Y2lYS3luQ3BueU5ud3o1WHo1VUk1MFJncmw0UjVZVnBDNy9mVk8zMnhwMVB0S0pYcURvRnZ3Njl3c0IrWGRJWHRSNEdQL1pvRzlxcnEzYXZZOFdsZ3Q2NDZTMTd0MERWM3dvOVQrYVhhTzR0YkMrUXY4Rlh0eFZTN0pDY0Q4emJZTXdEQmpRUVMrNDh0OWZVZFFMQ3Z0T1A3OEt1ejhIR1huc1I1NUNaMmxKckpnSUJERXp0b0pjNHZsOWk3TExGVFdlS3NjZk83OEwrSFdIQnJvUFVwd1A4UC9Pb3NmT3c5TmJFTDA4UXVXMVBoZ3pmenA3Q3hVOWJnV3dQRDUzV0U5K1RORkowbnpFdDV0emQ4Q24xMkJPT2JaTHZrTURtY2N2Sk83eXRkOExJaWVKeHZGdVgzN1hLb3ZDdUNwVzdrNDdPaitDOVIvSFA0RlNidmkrNUhobk42c0RiOFBsU2JFZHFVQ25WTEY2K0VNVHFRNnVydUFVUHRpTWIrVzdFTkVHaVF1bWxSNlJSeGswdTE4MURJN1R0dmZjRzF4Zmx2YytFY3BYcFBHelBLSHpheXkzZkc5NHZwbEVZMTFPSXF0MDY3aTd1NC9IMFp1Zlg2UGV5dWpuTDVPNStyeis0V2NodkliWXk0WVR3dGM4ZFVwQUwyRGJkREg4UVBvVG00SDBOaXgzQUhicm93c05kVzMvQ0FuZUxxcmowVGU1UTdzRzlZSHRQcHlQY2dEY01ZaGxQcUR0SVFIaitsa1YvcHdCMWhuWkYzZWVMZFdQQUtwVEx2T0s2Q01iUkpvOVpud2tXWktsRU5TYWNqemVvby9aYVJ2ejV5NDBBVnBRWWJ4bTFFWDBlbEJ2YXl0K1Ayd0hhVThmZFFqdHB4bjg5N0tISHZxUnM2QVg4UEpiUWR1NGJld3g3NjkzQkxSanYyM0wrbjBoYnArUjd1NzN3UE4zdTBieEh4YnFEN1ZxUWx2ZEF0RUFacmR0U2RkTjhTRjc3M3daRFRQMUNvcDRTNnYwaUtJdnpMditEZEV1Zjl4blVMMzRjeUthNHh1c0dtVUlqbzI1blk4UDFNVThVTThzOG02RnpxTFMzRWR6Wkx4UExJalpBcUIzSDNTL3Vyc0tHeDdkZ2oxbzVhcmgxbk1MUmZDeHYxYWp2T0ZXaEhMZDNlRnpaT08zZ1BlOVBiY1o5RCs5MndjZHRNK3pnUmZSTmZmeDN6YktUWmw5OG5uU1RWSnE4SnRXTXBIL2RSam8yRVAxLzlaMUJmNnRKM1dLdDQ0bk41eDBWeTJUWDB0eEY2MkljS1BmeERoUzcrVUtIdi9GQ2g3N3JvMENsaUFNcGJaK2ozRDBjeGVGK0pFL2NjeEYzMEFUbFhvVy8vVUtHSFhvTGN1VkZ5ejdtZ1JuZUdZK3lRQ1BjVHVGOGY2dGF2anozN3FyTjN6eXR1SzhXcVN3aHpjWGdoMUVSOFVvVEF1UjI4QjVqcmU5NTV4eWVvTENXemdzd3FNbXMxalAxOG1zeG1iVGpjTnFJMGcwcWRxck5tb0xaYUtkYUk5ZVJiSXphSnJmUnM1L05GMUg3YWpyZGhyNDZxelhDV2ljQTVOQUwzSUtuVFJQU1pLNmpIT25BYlVzZWZZS01Qckc2L2ZRODkxWGEwMGUyYllLUDMyNDVlYXp2dXhtM0hxUjdxdHFoMjlJZmJjZXBNTy9yVjdWK0gvVExzUE5IWlp2Rk1rVHJKclVaY2p0MSs2Z2FqaDBYNFp0Snl6THhXWHFFWWVIVjJoVEQxSHRzckU0ZjZPMlBoUDQzYXRYbTVZMkg5Vi8wSG5IY2c3NVdjSzRhSGR6c0pIcUVLdnJQWUc5WWtkWTRRdlpzZHkvZ3VReG9EUEtEZXhmaU9YWkYzTis0ejdueVRFVndwZ2lqbFdkVENzdUY3aTJjbHVrREQxVnIxWHB1SXZxMHhVVGp2bm1zYjB4M2F1bDZNandPdGpRZjk2NUY0MEpiRDNhREVkWHY3RllHUWJPOU9qaVBiaG5pY3ZUc3ZIdlRjMFl1VXJYdnNqSmNTTi9UU2VOQy9ySXNIUGJ2MjRtSjZKejFlNkhlV3g0MC9ydnd0M2ZPVzBxOXRTcHlVeW95YmZ2VmlmTHZveHNHbXVLbTY4U1BVZ284WFF0SzJaY1ZMZzdhVmNjdlM1cmo1R0M4VmV3cSttV3JXZVZycVMrdDEwZ2hkQnFrZTZqVDhiblF4VXJzbHhuSGNCWStiNEdXaURNbDBtU1Y3eVZ6anVDeVEvZVZBT1lSR2lDTmxtUnl0SUJvK0Z2QUpza3BXRTFlelpJMmNKK3ZrNGhpY1pWU3ZycGJyNUVhNVJVTWFaS05za252a2ZubElIcFVuNUduWkl0dE1hYnBOdjVsaVpwalo5T1NZK1daZmM0QTV5Q3d5aThsZllwYWJsZWE0YUZ2SEM5dWNhRTZXaTVXdDZPdXczZXhMbGJTN2pPWlVjMFpZeGhpNW9pUzZzQ3dxRnMyRFNqZUVVblMwakxQTnVlU2ZieTQwbDVqTHpaWDBydnhyelBYbUpuT3J1ZDNjb1NHN3pMM21BZk13eFhTc3UwUXF4a2k3ZzVPNzFFbDZFcU5paVpzcjFRMjV4aC9oeDFsbkJrYlh4blZzbXowQlY2Zms0VTVlcWM3MTZnRUlUbTh6MUJ5Y3VzWHlyN0NCbzg1OE0zNExXMzFWNThMaHREZUpmby94RnV5dkFhSnV3MFRmeS9nQk1ERW5HSDFycDc3UlVwM2s5bnVFVW5kbHFqUDljTXVrVkRPSkNLWE9mNU00UFVLaWwyWmdqcS83VFoxeUJXeU1PZFZzb3prQU5zNEROSEZDaGxSbnB1R01RUk4zbGNyL2hIMC9JT2dMcWpQV1RKeUFJWDhER3pPZVVzMTRvaDhwSDRUL0ZQeHFiaFQzZnBycTlEek1IdXF6OGpBcU50V3BnK29rUU54a0t0RmZOekhmWWFxNVNIWHlHOGJQSnJoU001am1DL2k2VmRjMDZwd2k5WmVBNXhNdmRRZWY2bWV2amJxQmNqVnVqVlMzVE83UjkwL3lEWlFueU9hYkk5dHc3NlJmYk5IM1J0S0RHeWdQOGMyU0JNUFRqVm9uTGFiRFZDSTA5SDJUYmFJSnQxRG1HMzNKRERBR0dVWGtLMVpVakl5dzNwdnFGTHgxblNtbzU2cVJJdXJjU2ZOWG5UcXFUZzlVODlOSy85UlpqVG9QQURFbmR1cVFpVFB5TEp4NmFTRW5UTnhUYXlYQi95YjhPSnRQelEzckUvb3dhMlZoNXRONld1Zk41YmtYOUpQOWhNZFR4bVdWK1gvdlFtWDcwdTVDRGFkK244aEpMenkvVUNFZmtKWHlLL0lSYXZlZWxiWHlPZmtkV1pmNFo4aVFUU0d5Y1g5N0RqMTlJLzYrbUdlQmpIbzhQQ3BLdXNkaVlrekRQQ2F2R1FtZjRuaHBlVTcxbmxFQ1k1QTUvMSs4c0ovL21QSDdNcU1lZU9wZjNtTEErWTllSThINFBmeEg3Nmh4QXQvQ2Y5cndMODJZcGY3c3laU3dBYjFsK2g4Y0d3N1BlQmtVSnV4ZWlMZDRmREVzekU4MEwxMzV5RGJteVJ6K295Y0h5RUg2M3gzelZTNHJFV2M0cm1oNVQ4dHhDSXQvZTBZMS91N05sZTRvM2R3aCtJemUrZEJROWwvRGZpTUVmelhnajJPRzVIL2cvd3ZnNm96VjZmQW53TDhFL2h2aFh3YjhkdmJIbk41NkRQRDV3UFFBOGhJZ2h3QVpETWhSK0lmQzN3Ui9IL2puQWZNay9CM3dIOFRYTHdHeUdKQVd4UGdIK08rRm5RYjcxOEJ4NE44Qi8wM3dud0grcDhIaEdzQi9DWnBya1FJQ2tGdUIyYXBQbjJYL1U4QXBCT1E1UUdKYVY1d04rT0ZiVjlVYWNoM1ZpQmFUMjlVOWxGdW55VjVOa202a21xaE50SEI5Um0vcVVYaEhxUlYwNjFvdWxsb25yVDJnbzZob0dvWmYxV21ndmwrMXIrSUV0YXdEcU1ZYlJIVmRrVkZzZFBZcTBZTHArODF4VnJNNmsxbjFndlM1eXVyOFpIVmFyL3BycFZwanpGRHFrNDNWYWNiNGY2ek9GbFluQ2F0ZWtIaFV4N0lDWVZlRVQ2TlZKK1dxMDNIVmliajZuTnNEbXBNVjRHUUZLSytJNUZDQktCU2RKMU9ldjg1ajZyMWczcmZlaytnREc2dWlVbU9MVHBNVlhkczV6eXVYb1ozcjFJbWo5QjdXaWRYSU5XNTdKT1drbS9NeVNpY2E2RmxOTUR4eGRlSW8rbDJudzFUQ05IUWJsNjkxb2kvM3RrZ25CaWxkTU1xTlNtT2NNYkdMVGpSMTA0bUM5OWNKZlRwMmQ1MDRFVjh6MU1uUjZpUTJkWGF6T3FOWm44VjhQdjNJaWRJUzVKRFdGWnhmck00c2ptMGRjY3JkaDI0ZHRWeExZZjhrU3Vxd2x2QSt4V0p4TWJzc0xzUU5ud3BkOFlITiswdUJYRk1ub1JzTlVibFdFVlhHd21PTXV5OTVUYy81YThHR3lLamdLUHpjcDJ2b0hHRjA2aWsvNk5WeExkaWl4aHlvMFdLcGRkSmlPa3dsUW9ONmRuM0ZJU29CRFpHeHhTRG8raURXZGtYRnlJbWtpQnBsWW03ZndMb09FMmR5UzV3Nkx6SHFsZmhySUVOUjVRSG5ha3QxMmpyK0hSaWdJREhQTDdFR1FJMzJoQnF2WTFSdFlnMkFpVlVVcHRKak5XNjVHWDc4YjVVWTE1cjQ2NnBHSFJMakVEVyt0UEJuMXNRSTVJcm0xaDV5TDFkdVJkT0trMXZjTjllNWhkcUpETmROQTdoMjZwcGJaamxzekwzSnIzYW1sSGtQSURkMzFpdG1LZnlZVzVEb2djdTluYmtscndlT0dxMi8yNW5mT3Jjd0UyS3FNUjk2OVNiNndLWmFNL1FpYkt6dE1ER2ZZS0h0TVBIdnh3S2ZGbnIxWnNzVno2Y0dqSEgyNnhhQ2V4Z04wU1AzU0U3UkV6Vnl6MUJQTjJxZHRFN28vSTdRUUQ3dHg5Z3BSK2RVMy9DNG5mb1VLcCt5SS9tRXVrV3Zya0s2bTFpclphSmxsV3AxekU4NmF5UXoySm1DT29jV2RHcTZ5aUh6cnM0Y012SFAzOEpja29XV3dteURqVFUxbGhkK3pBOVltS3R5K1FGQlBsa1kxYmp3ZjgvNmlzNmgzb0wvbU5XS0MvMm52YlJjNDdVU2V5L0pYRDJsRUt0QjFFMFJhajdNeE1vbEUrTlh2Y1pQM1ZDQnVUY0Q4emp5SDJDckd4dlVHai9NUkpxWWJaRUtndG1jRHFVZjZrWUkvSk0xRmJWbk8wdTJMcEhRR0JOemRaWmFtNGRaUUFzMXJiNnQ0bmhVS1F6M0g5VjZnUXZsZFd6L3NmdVRIeGszcTE2UjZnMFVYOWE0OHJYYk54S1hhbjFVcjZnWmtPMVhOa2FWWCtZZzJHcXRabmcrVXAzVnRWWmM3SXFBU3lzLzNOcWV1aXptL0wzdkUzb00xWUlSR2ZyZVZBYmFxQ1M0STMzdFE1aUJPa0c5Ynk0cktkMXF6VTVhZTBDbkxZWkdkcVMyOUZQdkc3MXVxbis1eG13STk3Mk55WkZ5aFZTV21EK1htUG1SYXQ1ZXJYejFSSldyUE5ocWpheGFyWXU1WWhPei9TYnVMcEUzd0k4MVczckZyWnFweG5wWkU3TjRxb1VpeWpzUTd3clFXUUY4N29QZnovZWVtS3IrVnVVY1pkaEV6VzMraStaekJmaGNBVDVYZ0g2M2NkTWx6MVpmWlhPaTdUdVVTOFpyMk5ac1lUMVUvZEE0a1RIeGtYSFZvcUhxb2FtVHhlNnBFeDk2alBRdFUxaER2MVNhTGZyZk5lTCtiRkY2NzhpaWJERjVWQ25aVktvN09nUzNYUzdoRjZraVEzeUtTbWdmY1RQMTMva0xuNUZqMHdnaFRWeExwZlo2Y2FQNEhKWEJXL1UzU2w4UkZEMkkvcWVwL1BMYTNjL3pTbDk4TTRWYkpJbDBjWjNvS1c0UWVlSW0wVi9jcHI5WndrTTVkUTIxcTUraFZwQlgxTjBpQm1MZEtIODNpWjlrOFFWZUExRjY5MTNaZk5NT29BbFUzd3lDWDFKT2Z6YUNid2lmK09MREQxVk5OV2JDbmdPN0Z2WUMySXNlZnZoclU0eWxzRmZCM2dCN0creWRzUGV4TFczWVFkZ1o0NnNlZTFUMmdwMFB1eC9zZ2JDTFlCZkRMcG53Mk9TSFpEbnNTdGpqWUUrRVBmbXh5WTlObFZOaHo0QTlHL1pjMlBNZmUrTHJWWEloN0NXd2w4TmVDWHNOa1g5SXJvZTlEWFlUN0FPd2oxZDkvZUVxMlFLN2pXMVR3bmJEOW4vdGtmR1BtU213TTJCbnc4NkJuVi85Y05WVXN5L3NBYkFId1M2Q1hWeE5FWmdsc010aFY4SWVCM3NpN01sUFVOcWFXQ3NyMGk5Z1c2UkJic3B4N3dmd3A1SCtaSkZPWnBPRzlTUnQ2VVU2bUVQNjFKczBNWmUwS3AvMG9BL3BaQUhwRjY4Q0RhOUxpL1h4M2gyK2VVbVN6bVZjd0RVRS9zaW85VmtDUFh1TWpzOXYreTVvK3k5Z3UwakhVMGkrSG9qNWc3NFpXR0Z2Q0hWckZubzE2dTRwdExlR0NGN1FUcitnblhwQkd6MHVxZ3VLeFdLeFNteWlGbW1mT0VZOVFkdElveFptcHJIWVdHVnNNaHFOZmNZeG8wWGFNazNteVA1eUtOWEhFK1JzZWNLMHpCU3psMWxxemJEbVdVdXROZFlXYTZkMXdEcGh0YnE4cmd4WHJxdlFWV3dQdGt2c3NVNGZaNUF6MHRudTdIR09PR2ZjMGgxeTkzVDNkUTl4bDdySHVhdmRjOXdMM2ZYdURlN3Q3ajN1SSs0ekh1a0plWHJxTk9ENWFxb2wzSXRpMzMzbm90NnAvZ3pVQ01jSXYxTXZMckFnNmp1bFk2Q2UycEhvNzZ2b3U5RkpMN0FyNnAwSUJSdnAzVU1taFZLcEYrbG9QNnJkaWxUWVlJTjJqeXMzS1ZPN3BkcWRyZDB0Mm0wQmJVbWxJYVFnb1Z6dGxuVDdNbDI3SzJMNUNUV0FuODczN1YzZTM0aDlUODN0OGw0USs1NitKdmI5MnFCd3pLajB1Yll3Tm4ydWpjYm45OFl1NzBkaThhOHJpUDErM1d5OFIwbDYzV0hsWmxrSTZhV3kwSlBxZzc3VStnd2hqU3dWbzNHM0FXTUV0YnRWdXdlVis2bDY3ZXIzN0VQSy9YU1pjbnVPME81bTVYNm1zV3RxOXhxazNaSlk3bnVWZDNrZmczZUxTbjJhM2lQT29UUi92VlpxZDc5MlZYNWZSNzJZWWRRWHFSQmp4VVF4UlV3WHMybWtXQ2VXVUQ5bnRWZ3ZObE5QY0lmWVRUM0J3K0k0dGZEbktFSzNFVFRTTVI1bU9udVZlMzJsZG84cE4wZnJ5QTJKMmgydjNYYmw5aDZqWGEybnZadVZlNk9HM3poWHU2ZVZtenRNdTZ1MXUwKzVlWloybHlzM1gyaDNpbloxRG42MmozWnJ0SHRBdVgwbWFiZE51WjlicE53Q2pWL1FHRnVHYjZxSVRmV2J5cnE4aiszeVh0UGxmVjNVTzlHL2VVenM5NXU3bFBtYk44VytEMWtiKy83bEx2RVhOWFo1UHhWYlJvdk80ajJkZWttRHFQODZVcFNMTVdLQ21DeW1pVmxpcmxoQXRleHlxbWZYVVUyN2plcmFYVlRiSHFMNlZ1ZE8wWGJsM3E1cms5dlhLbmVvMXRHaGU1UjdoODZWTzZxMHEzTnIyQkR0YXEwY3ByVit1QzQ5dzNWdURGK29YVjA3RmFkcmQ1cDJOYjA3KzJ0M2lYWmJsVHNpUTdzenRic3NOdFZIdE1TbTBsMHBlRStoTnY3aTBrVlIwYnA4MXl6dGFxNUdsbXQzblhMdjFycDB0OWJwRWx1N1d0ZExkSjF3ajVibW5rM0tMZlZyZDRGMmRkbTZkNEoydHltM1RLZCsyV0xsamtxTGxYYlVoRmhwUjIzRmUwSk1xekZDbElsS01WN29IQnVseTBlNXBubWZiamZ1MCtXcFlySjJkYm01ZjU1eVIrdWNHcjFLdVEvMDArNzIyTGF4Y2xoc3VhcWNGOVUyOHZ2Y3FMYVEzMnRqMndLOGgyVWl4TW9Oc2U4UDlvOXFLd2ovd1MyeDRSOXNpRTJUQjNkMmVkL1g1YjAxOW4zTXlDN3ZHMlBqLzhxQTJITDNsU0ZkM2dkMWVlL1NsbjJsZjVmM0VWM29sM1Y1YjR4OUg4dnRTcEI2Y1h4dXd3S3hnOGJ0VWhnZW40ZjdicGxHVHlPWFJ1NkZ4aEFhcjVjYW82a25OY21ZWWt3M1podTFScDJ4eEZoT3ZhcDExSy9haGwzRmU0MkR4bEhqbEhHV1FqWVlPNHpkeG43ak1OWXR0aGp0MU9meVU2OHJpL3BkZmJCZXNVaU9rR1d5VW82WGt5VC8wWjhqNThtRklsT09vUjdaWkRsTnpzTGUzVVZ5bVZ3cDEvSnFSYmxkN3BSNzVBRjVSSjZRWjJRclZsNEd6WFF6Mit4dEZsRElOdXJGSlZJL0xwTjZjcmxtWDdQUUhHSVdtNlZtaFRuV25HaE9NYWZ6MmtSemdibllYRzZ1TXRlYUc4MnQ1aHRtazhnMGw1cjE1aHB6ZzdrRnF4TjNtL3ZOdytaeDg3VFpZclpidHVXMzBxd3NxNWVWYi9XekJscEYxZ2lyMUJwdGpiTW1lWG9JazlMSzcwbUhHL0JjQXpmb3lZQ2I1TG1XWEQvNU11SDZQZGZCRFhpeTRBWTluNEtiNU1rV2t0eFAwMXVBc0h2QzlYcytBemZnNlFVMzZMa2VicEluaDdBRG5odm9MVWpZdmVINlBUZkNEWGh5NFFZOWVYQ1RQUG1FSGZSOGx0NlNDTHNQWEwvbmMzQURuZ0s0UWM5TmNKTThmUWs3eVhNeitQZDUrbW41UHEvbDY2L2x1MFhMTjRDd2ZaNWJ0WlNGV3JyYnRIUUR0WFJmMEhJTjBuSjlVY3MxV012MUpTM1hFTWoxWlMxWGtaYnJkaTNYVUMzWEhWcXVZWkJydUphcldNdDFwNVpyaEpickxpM1hTTWgxdDVhclJNdDFqNWFyVk10MXI1YXJESEtOMG5LVjY5eTdUOHRYb2VXN1g4czNHcm4zZ0pheVVrdjVvSlp1akpidUsxcXVzVnF1aDdSYzQ3UmNEMnU1eGtPdVI3UmNFN1JjajJxNUptcTVIdE55VFlKY1g5VnlWV201dnFibG1xemwrcnFXYXdya2VsekxWYTNsZWtMTE5WWEw5YVNXYXhyaytvYVdhN3FXNnltZGV6TzBmRTlyK1dZaTk3NnBwWnlscGZ5V2xuSzJsbTR1K1AyMmxtNk9sdTRaTFYyTmx1NVpMZDNmYWJscXRWelBhYm5tYWJtK28rV2FEN20rcStWYW9PWDZucGFyVHN2MXZKWnJJZVQ2dnBacmtaYnJCMXF1eFZxdXY5ZHlMWUZjLzZEbFdxcmwrajlhcm1VNjkzNm81VnVPM0h0Qnk3ZEN5L2VpbHE5ZXlTZDRoTXk3TjNzTDd1bVlSaCtxTFg5QmRmSlE2bU9QcHRaMU12V3c1NGo1aEZWRHRmSVNVUy9XVW8raVFld1VlNm1mZFZ5Y29TOUh4Q2thM3dyRGE2UVlXVVp2cXFjSEdrT05rb1N2Qzh0K3hYNWQvaWhoaXZhdFNYZ2N2dTBFcTlhK05RbFBrTzlWNEUzVnZqVUpUOExIZU5PMGIwM0NOeUwwcGtmb1BSV2hOeU5DNytrSXZaa1JldCtNMEpzVm9mZDM1UHVKL1FyQmFyVnZUY0p6OEwxS3NIbmF0eWJoVzVGNFowZmkvWFlrM2ptUmVKK0p4RnNUaWZmWlNMeHpJL0YrSnhMdi9FaTgzNDNFdXlBY0w3Vi9mbUhKd2ZKTFZycDFEVnJWZDBTcjhTa2F5WFM5ei9iejNJYWFQelkzY0I2YUI4emZtZ2QxeThvOU1sNlhLODFUNWw3czVNb1VhdmFIdy9Ybk50YjhBV2FTcGJDVXoveWwrVXZoTXZlWnZ4RzJlY3g4RzN1dU1xbjN4V3NYQnBHZURLUGVaaW4xTnNkUmY3T2E5MXBRZS9ZdElhd0hyQWVFMjNyY3FzYVlkQ2orbG83QUdrVytwYkdNOUVuaTNqL2VKZXlLMmdkdDRKVDdhUVFMbnduQTV3dVJuV2hqVDVaYlNLSjZIL3hlOWlmNnlLNDJod0hpTU1RY0RyOEhYeFA1Sy9DZkFzN1QrRHJ6LzdWM0x1QlZWTmNlM3pON3pjdzUrK3hBaWhFd1VveVJXc3FsbEZLa05DSWdqeEFoSEI3R0dFSUlFQU5DaUFGQ1FPUWw1UmtlSWtGRVJBd1dGREVDSXFKRlJFQnFMYVhXV21xdFJXc3BwVlFwdFJZUktGZnhydjJmaytRRXcwTkl2TG5mZCtITGYwMSttY2VldldhL1p2WkRPOHdINHB3VGRRaDdPdVZua0pQTlZaZ0hzYWN5eDVwOTVMM21iSEtxdWFLY2hQZXIwZ3ZKNzNpbWxTaXBBY1hSbFlqVjVsR3gra1BFeVhXbUI3VFpReWd2eFB2SEdCODVYdXdnakRwcmc3R2xjUmQ1Uk9Vb0YvUE96cXpOWUw1NE5ieUVveTgycEk3S1ZBUFZJSDI5bm8zd3RyL0k4RVlmVnpYVVNWalI0R0pDZmE1ekVOWVQ2SURlUFkwditTeFZZNkQ5T1krM1ZKYndWMzFwRzNYbjU5by9laHlTcGI4ZE5YNjQvTWdmbmZ0SytyT3Z1UC9uZU45aXkzWjZMMUorSHpYWUovb1Z2UnVrbSt3bmJLdURlRVRlSkx2TFJsdzN2VXJHYzMyMEtkZFJyNVdKOHJ0eXBNeVRyZVQzWlZ2NVEva2pycUhlS0R2d3ZuTmxaem1YT0N2ZzJtYUFRdFJOZHFCYjZEWlpMTHZUZEpwQnMyZ09GZE44dW84VzB3TzBqQjZtbGJTQm5xRm42VGw2bmw2Z0YyVXh2VXk3NkdmMG1teEx0OUd2Nk5mMEcvb3QvWTUrVDMrZ1A5Szc5Q2Y2TS8yRi9rcC9vNzl6RGZZSUhhVi8wV2Q4WnVFMGR1S2RiOUp2VllIYXFWNVJQMU0vVjc5UXYxUy9VbStvMzZxMzFSL1ZuOVJmMUNIMWQzVkUvVk45ckQ1Um42cVQ2ai9xdjlXWmtOVGYwMjEwVy8wajNWbDMxY25RUHJxZnZsWGZwb2ZyRVRwUDM2WEg2SEc2V0MvUUMvVWlYYUlmMU12MUk3cFVmeEVqWTV6NkNmV3ZpLzFSN0kyeE44VjJpZTBXMnlQV2pNczNNWmNoTTJXV0hDU3o1V0N1dVErVHcrV2RYSDgzTVRkSzVzc0NPWnJyOG1ObG9Sd25pK1FFZWJlY0w3OGdpeHp5S0VoZHFRZWxVQnFOcHFsMEwvMlladEpzbWt2emFBRXRvaEphU2cvUkNscFBHMmtUYmFZdEhITS9wWmRvTysyazNmUnoya08vcEwzME9yMUJiOUkrZW92ZXBuZG9QNzFINzlNQk9raUg2REI5UUIvU1AraWZkSnJPT01KcDVGemxYQjM0cFJxamRxaGRhcmQ2VmIybTlxaTk2blgxRy9WNzlRZjFydnF6K3FzNnJENVVSOVcvMURGMVhKMVFwOVJwOVZuSTF0L1ZyZlVQOUE5MVIzMno3cVp2MGIxMGI5MVg5OWRwT2xmZnFVZnFVYnBBajlWejlUeU91ZnYwWXYyQWZrZy9yRmZxTXpGMkROVnZXajh4dG4xc1VteUgyTTZ4WFdPVFkyL3g4MGhaUkRGeUlQTElGT3BGWEJKWXI0a0RzcU84a2x0RjZiS2hETXNyT0c2N0lIYXZsdCtVMThpaE1pZjBidWk5S3JIY1d2NmdTaXgza3VObFYza3o0dGtPL1FreHJVaHpYSGNQdlkvNDVtdFJtUG9pM290b0FrMmtTVFNacHRDMEtqNVlTUGZURW5xUWx0TWo5Q2lWMGlwNmpINUNxMmtOUFI3NmMraEE2QytoZzZHL2hnNkYvbGJGUTFzdndVTWYwY2YwYnpwR245QngrcFJPMEVuNkQvMDNmVTVmT0JhODFpU3dWNDFTZDZuUlozbnUxK3BOdFUvOVRyM0YvbnRIdmFjT1ZPdS96ME9IUTM4UDJhRVBkU3Y5ZmZaaU85MWUzNmh2MHAxMEY5MWRwK2llT2xXSEk5NGNCbS9tNjlHNmtMMDVQK0xOcGV6TkZmcFIvWmoraVY3RFByV01WMk04cnRwZVUrSFpUckUzUjN4cnNROXZrbW55TnZiaDdadzZCckFQQjBhbEVQYWh2RVBtWGlDbGpJOUtLeFJKTFRIR2g1UmM0Y1BlMUFjK0hFZmo2VzY2Qno0OGR6bzZ5NGYwQksybEoya2RQVVZsOUhRTnBMS3pmWGlLMDkzblZWSmVuc3F2TnZXVisvQjhhVkNFTFBiaEI1R1VlQU9ueFNUZElaSWVlM3lGRkxtS2ZiaTZ3b2R1VENBcWRYYXNUSjhvRlRxYVVpRjBKUFNQYWtxRjc4azI4Z2Jabmt1Rk15Z1ZPc3E1b2FOZktoVjZVcnFjZDVHbHdqWTVqM2JRSy9RcS9VTGVRT25WbFFwcWhwcXBacW5aMVpZS1RibFVHRnR0cWJCZnZhOE9xcitwRDlRLzFFZnEzMUdsd2hkZnNWUzRYeS9SeTZxVUN0ZEdsUXJkWTFQK3YxUzRyRktocWRDZXBoUlRROUUvTTNWbzJVbS9wbC9WUDllL01LMVEyWUp6ZDY2MXlFTFVxbE9jQkJNaS9WQlVXOGRmQWN2MHFwTGNydWp0bWRWVFkrMG5UWTlTK3lsdUwxbnVabmUza080ZWQ0K0ljNCs0L3hKWHV2OTIveTJ1ZGo5MVQ0b21nY3pBSUhGTjRMZUJQNG5yZ2dlRGgwVHI0SWZCRDhVUFZKa3FFMjFER2FFQjRvYlF3TkJBOGNQUXh0QnpvbjNvK2REeldIMndzaDAxZ0svb2lnWnFEcmVQQm5DZDZZenNWTGxOS2RYdHEwOVg3bHU1algwVGVjOHVJb05iUVlYYytwbkViWjhaWWc2M2V4YUpKV0taV0dIT2hIMGo5YVh5RktMT3FDKzQvcktNNjN2UnMwbVZ6OHFpK0N6RmZJNmxmSWJIeEZwdXIyOFc1cXVGK1E3RmNZUStZdVk5djVueHdyUVh6WnczNXYyOTJjZDh2VERmQTNmSTNseUh2RkwyWW8yVDAxa2J5bVRXS3dLLzRYWlRrY3YxVDVyZ2ZzRTYwZVBhSmszUzZWejN2RkZuc040aysrTFlWQno3WXh6YkE4ZStpV1BQbUdNOWdXTnRISHM3amgxZ2p2V2syZE56b0I0MENDV29DdzFBVGYzM2l0Qmk2UDFHOVU3b0xxTVY3eldhWUQ0K3liWGNKSGlrQVJNekkzQnp2MllmbTgyWkdueFR2c1ZQYUN6dmI3d0ZTeW5zWWFyd05WVjRyeDVtUTBtSTlENGsvd3J5RG1GbWVrbGdOVjhxek5xWnByOS9oOWpCRmRjWlhINE9HdUJmeDdkODNkUGwrNVJ2OGJYbjhsWm5yaXVOamFTRGhsaHZJeEYzSmNTTjVzcVJkazdWVm83Zlc4RmY5YUlaWmxRNS85NkV1WkxpOFdRaytLMFkyUVI2SSsvWlNLYVlrZGhvNTBzNVU4NFVJYnFkTW9UbU52OGdVWTlHMGtqeERiVDhHemkyNDRvNEoralVFMWM1MzNBYWlHdWNPS2VodUZZTlZTTkZNL1dRZWtSOFYyMVZMNHMyMnVGV2RYczlXTjhoYnRaRnVrZ2s2OGYxVTZLSDNxUjNpTjU2ajk0anNtSlVqQktENmplcjMweGt4L2FKelJLREVhYWhrVEEzaVhqWWJ6RjFxQkxxeXYwOHZxTTk4RlhiaUxlUy9EdEVhOUQwbDdYUXE5VzBtenJCdDVaNVl1dmNYWStOM0UwaTM2bTU2M2I4RkxlSzNQdE5GN3lmeWpOY3djOWtOM0ZFdEJGbitPZVE2R2tSNTNOOXhjZFJ2NTNndjV0ZTJOSHgxQ2dxZmhNcXJsRTNuNUFCMEVMb09CTVRGQW9kUmF2ZWZOTzBRdTlHWWlKSkpJdHNmaTRLK1NlRFM1V0pvclBvTDNLamZzc1QyWkU0N25oUmNYSHhWNi9QSGp3cWVuSStkSnAvT3ZEMk1TNFBXb2pEb2pWdm0rK1cvYXZFdjMrZFJHaXJLTy9hc2l1cE91Z0QvLzdIUTgrY0ZRdisvYmNYUXppV1czSUoxcEpqMTh4ZDJZMjNNdms1SENMU0lySGU2YUpqNEdLdUdTYzZXK1l0WkZzcmxuMmNqTEdhL1huck0zNzZVeU5iU1diRW5qRDlxYzhYKzFWVFdGMzFRZHBGeGtvWHJvRms4Zk00aTM5U2VIc0t4Mzg3TVlaVFFqaXkxWUZwWHNRbm5iOWl2Rng4U1B6YVUxemtQVm8yZEVMa0w3R1JxOTljOGJlSzJoWldmQ0g3VVdIYk9kVnlhYS9pdi9qbk1UM08vTm41ekRlUFJ0WE40WHFPM3ZyUFJlWVNIUkU1VXp1OHRZdXZPTmVGWmp1TlBqWWV4eWFjZGF6NU8ydkZUSUxuMzJ1RDhOZjBNSDJFVEgrR2RPelhWVnp1dkd4ZmZmN3lISVJudlpDUmVlaE1QbWRHZEdmVWtSQmxZSFozMDFkcVNBMkY2TkpYTDZrTW1UK2ZYaWJtNjEyR0hLZnVoTTJmR1RGVGxIOWo2aHA1K2k1LzlYbi8vT2E1TmMvclNtRkZaa2FzaWZ1dXlSRDY2Y21zZDVxRldSeHJMb1RsT1ZONVREUkdPc2tWWmcybnhyVjRKWCt1eU5iQ3JIL1hJcktLY2Rlb1BjT1YrOXNEbzhMbnI2Wll5TnRtSnVvaE5SN0M2cS9yaDdhRmtGaW5vZkdYUW51dWNPYnp0cWxMWk5aT1RGWUpZZm1xUm5GUjE3cjhaOC9VRVRmZy9EbElIV1pOeUpwOEF0Ty9kSjNXWHlHbUwzeFUrRHhIbVhTL01wTGYxVng1VlpPeGJ0S2o2ZjJielZzWk5ab2UwNzkwcFhoUitEVStzVi9IZFMva2V4UGJadDZUSmxIUFM5b2xsRlNqUldYNVhyNStsc2xGbTMzcE9iemNzemVPclBkZFcyZjNWeUpkZ2lldTV2eHdlZUVxcjVuVWZLMnBKa0kySkxJR2pubEhPcnpHbjkzTEM1L0RUM1lUelBSdmNqaVQwNDJvWXlFa2VIWklIWTlCODI2N2JzYWdKZHd2MEtaVjV2MTVaVnZUdExpSmp5ZHVhdzcyNS9iSE8raDQxTFNrMzhvRTlZK0lWWk14QjhVVTZGU2o1ejNHOU5hTDQyTk1XOVljNWR1cHZvME9DWWUrM1ZsZkJTcG5hbjhoTWtmN0crSXRzVjhjRUlmeDN1bVVPR09ScGF4WXE2RmxlbHMzdDFwWmJhMGtxN09WYktWYS9hME1LOXZLUlovckNkWVVhNFpWYkMyeWxsb3JyTWVzdGRaNnV5dG13ZXpHeXVGbE5XRzJUWXVhbFZ2VnJOeXladVhXTlN1M3NGbDdtWnE2bldyM1p1M05YakV0bGo0bURreTdoZjI3bW5VMWU5YTIxNWtWdDl3WDJMTjI0UFhnNDhKbS96NkJlYWZXc3E0TlBzbjZaSkQzREs0TFBzWDZWTENNdFN6NE5PdlQ3Qzg3dUo1YnltWWsva2JXamNGbldKOEpibUxkRkh5VzlkbmdadGJOWmo0cE0xS2VkVXZ3ZVZadXZiTnlDNTZWVy9HczNKSm5mVEc0alhXYm1aY3MrRkp3Tyt2MjRNdXNMd2Qzc083Z3Ryc2QzR2xtNUF2dTR1ZlFEcjdDejRsdDNoNndtamNJdHRyQ3o2VE5UK1pKVm96R3g1cGs1ZCs1L0JxSGVVdGhvY3k4M0dlKzhna2RqbTlTV3BtN1cyUFVYb1c1NmVhd1p3dXRTZXpYK2RZUzl1cHFxOHphYkcyemRsdDdyWDNXZnV1Z2RjUTZacDIyYlZ2WkRleDRPOUZ1WWJleGsrd3U3TXYrZHFhZEU5MXpubXRjcSsweWUzTzEvZVNWYkNEalpXS1ZYdkdaTWtmbXlVSTVTYzZROCtXU0tuM2c5OHA5Y3I4OEtJL0lZL0kwMmFTb0FjVlRJcldnTnBSRVhhaG5lUTk0S3FSSk5JUG0weEphUWF1cGpEYlROdHBOZTJrZjdhZURkSVNPMFduSGRwVFR3SWwzRXAwV1Roc255ZW5pOUhUNk81bE9qcFBuRkRxVG5Cbk9mTWVzWUZldlNveWJYS0llY29tV3lDVnVnQS82d2dmOTRJUCs4TUd0eUQzUzJCTzd4VzNJUFlyZ2p5bnNqMVBpWGlHcE5iV2pEbXlUcURNbHMrM0c0ZS9MTmt4cGxNazJnN0lwbDIwT2phQUN0dmw4VnhQWlRxQXBOSVB0ZEpwREM5bk9wOFcwak8xU3Z0ZkgySmJTNDFUR2RoMXRwQzFzTjlOVzJzRjJPOGZBSHJhdjBldTBqKzJiOURhOXgzWS9IYUREYkE5eHZIek05aU02VHFmWm5xSXpEZ25KOFJSdzZySFZIRnVOMlRaMG1qaUpiQk9jNjUyV2JGczRyWjEyYk50eUhIWm0yOUhwNXZSa20rS0VuVFMyL1owTUo1dHRGc2ZzQ0xiRG5YeUhXNC9PR0dlQ3cva1d4L1IwWnc3YldSemZpOWt1Y3BZNks5Z3VkMHFkeDltdWR0WTVHOW11ZHpZN1c5bSs0R3gzZHJQZDViem12TTUyci9PbTh6YmJ0NXo5emdHMjd6dUhuQ05zUDNBK2NvNnpQZWFjY3M2dy9jeTEzWUNRcnV0cXR3SGJXTGVoMjRSdHZKdmdYcysybWR2QzVkYXcyOHB0NnlheGJlOTJkTHV4N2VLbXVHRzJxVzUvTjROdHVwdmw1ckFkNGc1M3VjN3M1cmxqM0Fsc2k5eEo3blMyMDl4WjdueTJ4ZTRpZHluYkplNXl0NVR0U25lMXU0N3RXbmU5dTVudEpuNWF0clBkNXU1eVgyUDdxcnZYZlpQdEcrNWI3bjYyNzdqdnU0ZllIblEvY0Q5aWU5UTk1bkxPNEo1d1AvTnNJVDNodVo3cGdhcThXSzhoMnpndjNrdGcyOVJyNW5FN3pHdnV0Zkxhc20zanRmYzZzdTNnZGZGUzJDWjdxVjUvdG4yOWRDK0xiYVkzeEJ2T050Zkw4OGF3TGZDS3ZFbHNKM3JUdkZsc1ozakYzaUsyQzcwbDNuSzJ5N3lWM21xMmozbHJQUzZodlRKdmsvY0MyeTNlTm04WDJ4M2VxOTVldG51OE43eTMyTzd6M3ZIZVovdWVkOUQ3Z08xaDc2aDNqTzNIM2dudk03YW5BeUxnQ2htZ2dBckVzcTBYaUF2RXMyMGNhQnBveGpZeDBEelFpbTNMUUp0QWU3YnRBaDBDWGRoMkRpUUhVdG4yRFBRTnBMTk5DMlFHaHJETkR1UUc4dGlPQ0JRRWl0Z1dCaVlHcHJHZEVwZ1JLR1k3SjdBd3NJVHQ0c0N5d0VxMkt3S1BCZGF5ZlR4UUZ0akVkbU5nUzJBYjI2MkJIWUZYMmU0TzdPR1VMRGxWN3d1OHcvYnR3SHVCZzJ3UEJBNEhqckk5RXZnNGNJTHQ4Y0Rwb0dCN0praEJKV1F3RUt3WGpHUGJJTmdZSTJ1YUJCTXhLdWI2WU10Z0c3YXRnKzB3RmlVcDJCbWpTTG9GZTJJRVNEaVlGdVQwSDh3SVpnYzUvUWR6Z2lPQ0JhWlVEYTVCMmJvS1dtcEtXQ2JkUUxxQmRBZnBEdElkSkJra0dTUVpwQWRJRDVBZUlDa2dLU0FwSUxlQTNBSnlDMGhQa0o0Z1BVRjZnZlFDNlFXU0NwSUtrZ3JTRzZRM1NHK1FNRWdZSkF6U0I2UVBTQitRZmlEOVFQcUJwSU9rZzZTRDNBNXlPOGp0SUJrZ0dTQVpJQU5BQm9BTUFNa0V5UVRKQkJrSU1oQmtJRWdXU0JaSUZzZ2drRUVnZzBDeVFiSkJza0VHZ3d3R0dRd3lCR1FJeUJDUW9TQkRRWWFDNUlEa2dPU0EzQUZ5QjhnZElMa2d1U0M1SU1OQWhvRU1BeGtPTWh4a09NaWRJSGVDM0FreUFtUUV5QWlRa1NBalFVYUM1SUhrZ2VTQmpBSVpCVElLSkI4a0h5UWY1QzZRdTBEdUFpa0FLUUFwQUJrTk1ocGtOTWdZa0RFZ1kwREdnb3dGR1F0U0NGSUlVZ2d5RG1RY3lEaVFpU0FUUVNhQzNBTnlEOGc5SUpOQUpvRk1BcGtNTWhsa01zZ1VrQ2tnVTBDbWdrd0ZtUW95RFdRYXlEU1FlMEh1QmJrWFpEcklkSkRwSUROQlpvTE1CSmtGTWd0a0ZzaHNrTmtnczBIbWdNd0JtUU15RjJRdXlGeVFZcEJpa0dLUWVTRHpRT2FCekFlWkR6SWZaQUhJQXBBRklBdEJGb0lzQkxrUDVENlErMEFXZ1N3Q1dRUnlQOGo5SVBlRExBWlpETElZcEFTa0JLUUVaQW5JRXBBbElBK0FQQUR5QU1oU2tLVWdTMEVlQkhrUTVFR1FaU0RMUUphQlBBVHlFTWhESU10QmxvTXNCM2tZNUdHUWgwRldnS3dBV1FIeUNNZ2pJSStBckFSWkNiSVM1RkdRUjBFZUJWa05zaHBrTmNnNmtIVWdSa3ROeXlXNHhxaTlDbHBxV2pIQk5VYnRWZEJTTG1rTWVRUEVhQ25hT0d1TTJxdWdwV2p2ckRISzVBbVF0U0JyUWRhQ1BBbnlKTWlUSUFoUEVPR0JscUo5dE1Zb2s2ZEF5a0RLUU1wQW5nWjVHdVJwa1BVZzYwSFdnMndBMlFDeUFXUWp5RWFRalNEUGdEd0Q4Z3pJSnBCTklKdEFuZ1Y1RnVSWmtNMGdtMEUyZ3p3SDhoekljeUJiUUxhQWJBRkJpeWFJRmcyMEZHMjNOVUhFUExRVTdiZzFScG44RkdRcnlGYVFyU0F2Z3J3SThpTElOcEJ0SU50QVhnSjVDZVFsa08wZzIwRzJnN3dNOGpMSXl5QTdRSGFBN0FEWkNiSVRaQ2ZJTHBCZElMdEFYZ0Y1QmVRVmtOMGd1MEdNbGlya21RcDVKclJVSWM5VXlET2hwYW9JcEFpa0NHUTh5SGlROFNBVFFDYUFUQUM1RytSdWtMdEJrUGNxNUwzUVVvVzhWeUh2aFpZcWVGREJnOUJTQlE4cWVCQmFxdUJCQlE5Q1MwMkxPTGpHcUwwS1dtcG1qbWJ5Q2NnbklNZEJqb01jQi9rVTVGT1FUMEZPZ0p3QU9RRnlFdVFreUVtUVV5Q25RSXlhdVRnU1JJeG9KNUl3d2kxWjlNUVl0M1NSR1JubjVxOG8xRnNJckNVVUNtMEliY0E3R2RPK05yTWdtRjUrcHQrRDZZTm0rZ21aSGhMbWU3MXB4WnYzTjZZdmhIa2psSHI1NzByODl3aDhmWnQvTE5GR05FUW9jMFdlR0ZPbEgrbGlzVlFzRnl2RlkzanpzMUZzeGx3UXRuRE5EUGZjdXMzbUdvaG41M0lkUTl2RHVjNFFZNC9rT2tCOU81OUw1MjhJczVhcGpYVm5iYXc5YTJOMG5vMFJlaForekRkK00wdW42WG5BWlFqNm5QcHZpODE3dStXUnQ0dWNlK0xkazRVZk04dUNXU1c0REhPMTJQeXpBeVZrR0tWaUdQbHhQNVNIWWZpOEgwckNNTHpkRDJWZ0dIN3VoOUl2akJJdmpGSXVqSkl0ak5Jc2pCSXNqTHk4SDhxdU1NcXJNTXFvTU1xbE1NcWlNTXFmTVBMNGZpaDV3aWh0d2loaHdpaFZ3bHpPUy90V3R0eldzOVBZTGtjNHpOUFZUMWhZV2FvQjN0clk5bWh6Qk9iYkEwTXQ0bGJVSE5KUVc3Z1ZOWVMwS205bHpGY1NRdG1FdVhWT3JCTGwzMHZNcU16TWlsVjFoZWd1YXVvTHQyM25jTHo0VjFpTTFTU2FpTDVuWGVOUzFyMnZ5WEF0NFRnMTMzYjhyeTkxS1dSTDJSL0VPWWI1bjFiSHd0WkdYTS9hTXZLOW1ITVk1RGNWT1plbyttMHcrc2dSZ3R1cW9oWG5kNDNQZSt5bDNHTjExOHZENnVTdCtYOXV4Zk5kdTFmTTUzaHhPSWJNLytHUkw1QzFmVTEvRGRyRUtrOUorUjdtdDVtUi9mcEdVbUhHWlQ5UDFaMjlmMFZheXF5Vjg2ZEZwWWlzV3JsQ1lpUitXcHdWazlFeGJuNTcrQ3Z1WHh6WlB5TVNRLzBqM3pxNzE5aHpFQjJxMnIxS2NVV1pVZTZOdEVpZnN0cTVtOXErVHZuOVpMRWZuY2k0aDNUMHphaXRPNnI5S3hWZlhMNkFMNkYraVB6VmczTXJjcXVhNlJ2eTVTdGRLRVM3dnJZUTdZcjBGVWxrYlI2WlVWTkVaaS8yKzE3NHF3Ym5DLzlyWjNSdGFvai9qUXR2aHJyaWJWQXZuSzBWVWh6WHV6bm45OHUzSHVKY0szb0hJejJDSy9vREszL2RrdlAxNnpYNWRuMDd3eDRRV1Uxa2xIMlhYV0RQdHVkRVZoUjVrR3VVL2wyWnRvQVpoUktPaE9MU3IrZlpRK3hoWEd1ZmFOOWpMK1Q2ckgrZk15TDNPYVFXN3ZOQ2QyaENOanR5bjVtUisweTVqUHM4K3c0cnovKy9mNThEYTlTZkErdXNQNHRyMlovRmRlUStCOWVvUHdmWFdYOHVxR1YvTHFnajl6bThsdTl6ZUIyNXo4VzFmSitMNjhoOVp0Vm8rc3lxcytselhpMzcwejkvSEdwN3laRzZsYm5HVng4Slpmcko5RHpQMWYweDBrMjVIbWZtWENMVG40dHJoRDhWZmorbnlEc3kzbXFvVHdyTEhHSGV4cm92bU4rd05sdmxPT2JWWWd6LzM0R3dtdGtFYXFlSHpxWEV3ZmxXczZzY3gvVi8rUjQyaU1xeDV3VmlNZDczMXU0ZFhDaE9UZC9McVhVc1ZCdnFaS2o4dUpwY0orTnFjcDJNcXlsMU1xNmlRelZKRkltQ1dnK1ZaZnZ2QVBxY040UmZmNmk2MWNsUUpWOUVxTXEvRkpuUnZEYUhKOTNNRDRQUkpmNnM1bHpheDhUaEx6dUZtVG5Uck9uZEo4Yk1MM21MU0kxcENOc25waEhUMjJNYUd4V21KN3BaNThlS05mTWdtaGxSVnNnRm9uSXVVQmN6YjFiTzhObE0xTmNOZFNQZFdGK2w0L1hWdW9uK3BtNnFyOUVKK2xxZHFLL1Q1bHRFOVhNTzhwRWlDU3RJbVZIeUdWSGZHNmRFNXBzNXg3eUkrdHU2SWJRUnRESDBLbWc4OUdwb0UrZzNvVTJoMTBBVG9OZENFNkhYUVp0ZFZwZytsOWRCbTBHL0JiMGUrbTFvYytoM29DMmcvd1Z0YVpRYVFLK0F4aG4xUWxBdE1QZWQrSDF3VC9BWElucVdJcTRINlcvcDYzVnpiYjZaVnM3QkVqMWZFR1puMFptQ1pCTjVveHhhNVcveGVLZlZVQThTbnBuRFE4YkxIakpKZHFyNisxbnpEelhDTWExMHRyaENKc2hDSWMwSWV6UDdVT2hkWEdGYzVXK2hvN0x3WXZhakVNYnZWMTRqVVpqVnJKcUxGRDFRMUpkblpOZkkwYTNrR1Q1bko5NGF6K2M4dzJmSDMwbFYvcDNQZFlHLzgvMVUvTDJhcTdZUldUcEx4SjNqcW1rbWZxTE9qejJydmY1RjdCa0pTUnJpdU5vd2NldzVPbHRQMEhmcmlmb2VwTHc0NUFnanNPMlB5c0RJRWIrVUViSWlOekRmNmNyZmZKcnpLZlJYUzBVZnRWUlJkVlNIcVVPam40QXdhMi9xY3o3OTUxMXYwTzZqVEkrc3g2RlBRVGRDbjRlK0FQMHBkQ3YwUmVoMm8zd0dvMXVVYVVuNDgxZWxZSWFJVEl3anpFZFBnZkk1ZkMvVVByRHRyc3A4aWU4SjdXT1VRMVdDVUpVZ1ZDVUlWUWxDVllKUWxTQlVKUWhWQ1VKVmdsQ1ZJRlFsRmFNWnFoMm5ZbTIydGxvN3JGZXR2ZGFiMXR2V2U5WkJyQWx3M0RwdGM3UEQxbllEdTdIZDFHNW10N0JiWTJXQUxseC9EdHRwZGlhM29vYmIrWFlobHhiVDdGbjJmSHV4dmN4ZWFkb3o5a2FzQ0xETGZzMSszZDVudjJPL2J4K3lqOWdmMnlmc3o3QXVRRDBaeCtrelFWNHZXOG8yc3Izc0tMdkpuckt2VEpkWk1rZU9rQVd5U0U3Q2VnQUw1Uks1WEpiS3gyV1ozQ1Jma051eEJzQWI4aTI1WHg2UWgrVlJlVXllNHVlUlNGRXNOYVFtbEVqTnFSVzE5Y2NUWURVQWpDQ2dQQnJqanhtZzRsb3I5Y3E5MXczYUhab003UUZOZ2Q0UzVlRmUwRlJvYjJpNDB2TjJQMmc2OUhab0JuUUFOQk02RUpvRkhRVE5oZzZHRG9FT2hlWkE3NERtUW9kQmgwUHZoSTZBam9UbVFVZEI4NkYzUVF1Z282RmpvR09oaGRCeDBJblFlNkNUb0pPaFU2QlRvZE9nOTBLblEyZENaMEZuUStkQTUwS0xvZk9nODZFTG9BdWg5MEVYUWUrSExvYVdRSmRBSDRBdWhUNElYUVo5Q0xvYytqQjBCZlFSNkVyb285RFYwSFZHWGFTL3dPdlFONkpTNmhQUXRkQW5vZXVpVW5BWjlHbm9ldWdHcUoreW40RnVnajRMUlRvT1BnZmRBajEvNnQ4R2ZRbUtuQ0Q0TW5RSGRDZDBGL1FWNkc2akNyNVQ4SjBxZ282SFRvRGVEWVZQRlh3YXlWMFFLdVF4dGo0Ry9RUjZIUG9wOUFUMEpQUVVxLzl1eGZ4cmJ1cGZ1ZmtGZDBhMm00enp0ODM2MksxdUxyeXJvR1ZDMTNzSzgxc205QmcydXBDMWNOaW9sZ21wUTRzS2JpNGNtdE15NFZ4N3BBekxLZlQzYTVtUU5tTG9TQ0grQnlqMDZITUtaVzVrYzNSeVpXRnRDbVZ1Wkc5aWFnb3hNU0F3SUc5aWFnbzhQQW92UW1GelpVWnZiblFnTDBOSlJFWnZiblFyUmpFS0wwUmxjMk5sYm1SaGJuUkdiMjUwY3lCYklEdzhDaTlDWVhObFJtOXVkQ0F2UTBsRVJtOXVkQ3RHTVFvdlEwbEVVM2x6ZEdWdFNXNW1ieUE4UEFvdlQzSmtaWEpwYm1jZ05DQXdJRklLTDFKbFoybHpkSEo1SURVZ01DQlNDaTlUZFhCd2JHVnRaVzUwSURBS1BqNEtMME5KUkZSdlIwbEVUV0Z3SUM5SlpHVnVkR2wwZVFvdlJtOXVkRVJsYzJOeWFYQjBiM0lnUER3S0wwRnpZMlZ1ZENBNU1qRUtMME5oY0VobGFXZG9kQ0EzTVRVS0wwUmxjMk5sYm5RZ0xUSXdPUW92Um14aFozTWdOZ292Um05dWRFSkNiM2dnTmlBd0lGSUtMMFp2Ym5SR2FXeGxNaUE0SURBZ1Vnb3ZSbTl1ZEU1aGJXVWdMME5KUkVadmJuUXJSakVLTDBsMFlXeHBZMEZ1WjJ4bElEQUtMMU4wWlcxV0lEY2dNQ0JTQ2k5VWVYQmxJQzlHYjI1MFJHVnpZM0pwY0hSdmNnbytQZ292VTNWaWRIbHdaU0F2UTBsRVJtOXVkRlI1Y0dVeUNpOVVlWEJsSUM5R2IyNTBDaTlYSURrZ01DQlNDajQrSUYwS0wwVnVZMjlrYVc1bklDOUpaR1Z1ZEdsMGVTMUlDaTlUZFdKMGVYQmxJQzlVZVhCbE1Bb3ZWRzlWYm1samIyUmxJREV3SURBZ1Vnb3ZWSGx3WlNBdlJtOXVkQW8rUGdwbGJtUnZZbW9LTVRJZ01DQnZZbW9LUER3S0wwSnBkSE5RWlhKRGIyMXdiMjVsYm5RZ09Bb3ZRMjlzYjNKVGNHRmpaU0F2UkdWMmFXTmxVa2RDQ2k5R2FXeDBaWElnTDBSRFZFUmxZMjlrWlFvdlNHVnBaMmgwSURFNE13b3ZUR1Z1WjNSb0lEVTNORGt4Q2k5VGRXSjBlWEJsSUM5SmJXRm5aUW92Vkhsd1pTQXZXRTlpYW1WamRBb3ZWMmxrZEdnZ01qSTFNUW8rUGdwemRISmxZVzBLLzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzJ3QkRBQTBKQ2dzS0NBMExDd3NQRGcwUUZDRVZGQklTRkNnZEhoZ2hNQ295TVM4cUxpMDBPMHRBTkRoSE9TMHVRbGxDUjA1UVZGVlVNejlkWTF4U1lrdFRWRkgvMndCREFRNFBEeFFSRkNjVkZTZFJOaTQyVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWSC93QUFSQ0FDM0NNc0RBU0lBQWhFQkF4RUIvOFFBSHdBQUFRVUJBUUVCQVFFQUFBQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkFBQWdFREF3SUVBd1VGQkFRQUFBRjlBUUlEQUFRUkJSSWhNVUVHRTFGaEJ5SnhGREtCa2FFSUkwS3h3UlZTMGZBa00ySnlnZ2tLRmhjWUdSb2xKaWNvS1NvME5UWTNPRGs2UTBSRlJrZElTVXBUVkZWV1YxaFpXbU5rWldabmFHbHFjM1IxZG5kNGVYcURoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1SGk0K1RsNXVmbzZlcng4dlAwOWZiMytQbjYvOFFBSHdFQUF3RUJBUUVCQVFFQkFRQUFBQUFBQUFFQ0F3UUZCZ2NJQ1FvTC84UUF0UkVBQWdFQ0JBUURCQWNGQkFRQUFRSjNBQUVDQXhFRUJTRXhCaEpCVVFkaGNSTWlNb0VJRkVLUm9iSEJDU016VXZBVlluTFJDaFlrTk9FbDhSY1lHUm9tSnlncEtqVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnb09FaFlhSGlJbUtrcE9VbFphWG1KbWFvcU9rcGFhbnFLbXFzck8wdGJhM3VMbTZ3c1BFeGNiSHlNbkswdFBVMWRiWDJObmE0dVBrNWVibjZPbnE4dlAwOWZiMytQbjYvOW9BREFNQkFBSVJBeEVBUHdEMFhUNUhsdGQ4amJtOHh4bjJEa0Q5QlZtcW1sLzhlWC9iU1QvME5xdDFVdDJSRFdLQ3VkMXU3MUkrSXJIVGJHOSt5clBHekZ2S1YrUUNlLzByb3E1UHhEY216OFlhWGNMYnkzQlNKLzNjSzdtYklZY0Q4YWtzZnFNMnY2RkN0OU5meDM5c3JBU3htRVJrQW5HUVJXeGRYbDRMelRoWndDVzFueVpwQ3BKUmNBZzllT3BybnRhMWFUVjBpMHVXMG0wMkc0ZGQ4MTJwVGdIT0J4MTRyUzFpV1cxMXZRYmVDV1NPRm1kV1JXSURBQmNBanZRQjBGRmN6ZlR2ZStKWnROdU5TbTArQ09OVEVJWEViVEVqazd2YnBpdEtIU2JnV0UxcFBxMTNJSFlGSlZZSklnR09OM2VnQ1hSOVVUVllaNUVpYU1Rek5DUVRuSkdPZjFxL1hHK0V0Szg2TzRuL0FMUXZvL0p2R0hscE5oSHh0T1dHT1NlOVhZdnRXdmFyZnA5dnVMUzB0SlBKVmJkdGpNdzZrbjhLQU9sb3JBMGE5dWJlODFQVGJ5ZHJuN0VGZEpXKzh5a1p3ZmZwVlhTYlc5MTZ4R3AzR3JYZHVaV2J5NHJaOWlJQVNPUjM2VUFYL0ZsOWM2ZG9qM0ZwTDVjb2RRRzJnOEUrOWJWY1hyemFnZkJzc2VwcisvaXVBZ2ZBSG1LRHczSCtlS3VhdlphbGJhWExxamF2Y3JkeER6REVoQWhIK3p0Ny9VMEFkUlJWZlRyaHJyVGJXNVlBTk5Fa2hBN0VnR3VmTDZqZmVMTlIwK08ra2d0VVNOaVUrOG8yamhmVEpQWDJvQTZpc1h3L2ZYTjVkYXFseEx2V0M2YU9NYlFOcWduQTQ2MVcwOTdyVGZFNTBtUzhtdTdlVzM4NURPMjUwT1NPdmZvYVh3ci9BTWYydWY4QVg4Lzh6UUIwVkZjekNMdlh0VTFCVzFDNHRMVzBsOGxFdG0yTXhIVWsvaFdob3lhbGIzRjNhWHJ2UEJHVk1GdytNdUNPUWZYRkFHdFJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFlUTZ0ZDNTL0VSNGx1WlJIOXRRYlE1eGpJN1Y2OVhqR3V5cEQ4UXBwWkcyeHBlSXpFOWdDQ2E3UzUrSk9qUlNsSVlMcWRSL0dGQ2cvVEp6K2xBSFowVmo2RDRtMHZYZ3kyY3JMTW95ME1vMnVCNitoL0EwN1hQRVdtYUVpL2JwaUpHR1ZpUWJuWWV1UDZtZ0RXckk4VmFwTm8vaDY1dnJkQTBxWUM3aGtBa2daUDB6WFA4QS9DemRKM2Y4ZVY1dHoxd3VmL1FxMkl2RWVrYXI0ZXU3OHh5U1djUUt6UnlSalBiakhROWZXZ0RDOEErS3RUMWpVWjdMVUdXWUNNeXJJRUNsY0VEQnh4am11OHJtUEIxLzRldWpkUjZIWk5ibGRyU0Zrd1d6bkhPVDZHdWd2THkyc0xacmk3blNHRmVydWNDZ0NlaXNYL2hMZkQvL0FFRmJmOHpSL3dBSmI0Zi9BT2dyYi9tYUFOcWlzWC9oTGZEL0FQMEZiZjhBTTBmOEpiNGYvd0NncmIvbWFBTnFpc1gvQUlTM3cvOEE5QlczL00wZjhKYjRmLzZDdHY4QW1hQU5xaXNYL2hMZkQvOEEwRmJmOHpSL3dsdmgvd0Q2Q3R2K1pvQTJxS3hmK0V0OFAvOEFRVnQvek5IL0FBbHZoLzhBNkN0ditab0EycUt4ZitFdDhQOEEvUVZ0L3dBelIvd2x2aC8vQUtDdHYrWm9BMnFLeGY4QWhMZkQvd0QwRmJmOHpSL3dsdmgvL29LMi93Q1pvQTJxS3hmK0V0OFAvd0RRVnQvek5OZnhoNGRUR2RWaE9mUUUvd0FoUUJ1VVZocjR3OE92MDFXTDhRdy9tS2Qvd2x2aC93RDZDdHYrWm9BMnFLeGYrRXQ4UC84QVFWdC96TkgvQUFsdmgvOEE2Q3R2K1pvQTJxS3hmK0V0OFA4QS9RVnQvd0F6Ui93bHZoLy9BS0N0ditab0EycUt4ZjhBaExmRC93RDBGYmY4elIvd2x2aC8vb0syL3dDWm9BMnFLeGYrRXQ4UC93RFFWdC96TkgvQ1crSC9BUG9LMi81bWdEYW9yRi80UzN3Ly93QkJXMy9NMGY4QUNXK0gvd0RvSzIvNW1nRGFvckYvNFMzdy93RDlCVzMvQUROSC9DVytILzhBb0syLzVtZ0Rhb3JGL3dDRXQ4UC9BUFFWdC96TkgvQ1crSC8rZ3JiL0FKbWdEYW9yRi80UzN3Ly9BTkJXMy9NMGY4SmI0ZjhBK2dyYi9tYUFOcWlzWC9oTGZELy9BRUZiZjh6VFg4WCtIVUdUcXNKK2dKL2tLQU55aXNKZkdQaDF1bXFSZmlHSDh4VC9BUGhMZkQvL0FFRmJmOHpRQnRVVmkvOEFDVytIL3dEb0syLzVtai9oTGZEL0FQMEZiZjhBTTBBYlZGWXYvQ1crSC84QW9LMi81bWovQUlTM3cvOEE5QlczL00wQWJWRll2L0NXK0gvK2dyYi9BSm1qL2hMZkQvOEEwRmJmOHpRQnRVVmkvd0RDVytIL0FQb0syLzVtai9oTGZELy9BRUZiZjh6UUJ0VVZpLzhBQ1crSC93RG9LMi81bWovaExmRC9BUDBGYmY4QU0wQWJWRll2L0NXK0gvOEFvSzIvNW1qL0FJUzN3LzhBOUJXMy9NMEFiVkZZdi9DVytILytncmIvQUptai9oTGZELzhBMEZiZjh6UUJ0VVZpL3dEQ1crSC9BUG9LMi81bWovaExmRC8vQUVGYmY4elFCdFVWaS84QUNXK0gvd0RvSzIvNW1qL2hMZkQvQVAwRmJmOEFNMEFiVkZaRWZpalFKRGhkV3RSL3ZTQmY1MW8yMTVhM1l6YlhNTTQ5WTNEZnlvQW1vb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlxV29hdnB1bURON2V3d0hydFp2bVAwSFUwQVhhSzVHNytJdWhRRWlIN1RjbnNVandQOEF4NGlzeVQ0b1FBL3U5SmtZZjdVd0g5RFFCNkRSWG5pL0ZHUFB6YU93SHRjWi93RFphdVcveE0wcHppZXp1b3ZkUXJEK1lvQTdlaXNTdzhXNkRxQkN3NmpFcm4rR1hNWi9YR2Z3cmJCQkFJT1FhQUNpaWlnQW9vb29BS0tLS0FLbWwvOEFIbC8yMGsvOURhcmRWTkwvQU9QTC90cEovd0NodFZ1cWw4VElwL0F2UUs1ZldaNGJieHRwTTA4cVJSckZKbDNPQU9HSFd1b3F2YzJObmRzR3ViU0NkbEdBWkl3eEEvR3BMT2Y4VmF2cHR6b3N0cEJjUlhVOHhWWTQ0anZPY2puaW02akhMRHFmaGFLWTVsUU1ybjFZS21hNkdEVHJDMms4eTNzcmVGLzcwY1NxZnpBcVdTM2dsa2psa2hqZVNNa296S0NVejF3ZTFBR1BxRjM0ZnZybVd4MUl3ckxDY2Z2L0FKT296OHJIRlYvQ3JrWGVvd1cweno2WkV5aUNSeVRnNCtZQTl3UDhQV3QyNHM3VzZ4OXB0b1pzZFBNUU5qODZsampTSkFrYUtpTHdGVVlBb0E1YnduZjJscXQ3WjNGd2tWdzk4KzJOamhqbkFHUHhGVXJXeTBYKzNkV2gxdFkwbWE0TWtSbGtLQW94SjRPUUs3RnJHemE0RncxcEFad2MrWVl4dS9QclJkV1ZwZUFDNnRZWnR2VHpFRFkvT2dESzB1MDBUeXIxTkY4b3VVMlNGSExEa0hISk9QeXFuNFYxU3hzdENqczd5Nmp0cmkzWjFramxZS1FkeFBROWV0ZEpCQkRiUmlPQ0pJa0g4S0tGSDVDbzVyQ3l1SlBObnM0SlpQN3p4aGorWkZBSEtlSU5SZlZQQjg5MDBQbHA5cEN4SCsrZ1BEZnpyZjhBRS84QXlMbC8vd0JjalYrYTJ0N2lIeVpvSTVZdVBrZEFWNDlqVDVZbzVvMmpsaldTTmhobFlaQitvb0FwNkgveUFkUC9BT3ZhUC8wRVZpMlYxREQ0KzFTS1Z3alRSeGhNbnFRcThmWC9BQXJwa1JJNDFqalZVUlFBcXFNQUFkZ0s1eUxUVXUvRldzQzh0REpiU1J4YlM2SGFTRkhRK3Ywb0FjNUUzeEFqTVpEZVZaWWZIOEozSGcvbUtpOE9YVnZiNnhyRnJOTWtjOGw2eFJHT0N3Sk9NZXRidGhwdGxwc2JKWjI2UWh1dU9TZnFUelVyV2RxOXd0dzl0QzA2OUpDZ0xEOGV0QUhPYUxlVzJtYXpyRnRmVHBidkpjbVpESzIwTXB5ZUNlSzFkSzFjYXBlM3F3SUd0SUNxcE9EeEljYy9sVjY0czdXN0FGemJRekFkUE1RTmo4NmtpampoakVjU0tpRG9xakFINFVBT29vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vcUs2dW9MTzJlNXVaVmloakdXZGpnQ2dDV2l2T05ROFM2eDRwdkgwenc1RThWdDBlZjdyRWVwUDhJOXVwL1N1ejhPYVZKbzJrUjJjMTAxeklDV1oySjZuc005aFFCNVY0aWdXNjhmWE51NUlTVzdWQ1IxQUpBcjBRZUEvRGd0ekY5aVluSCtzTXJidnIxeCtsY0JySC9KU0gvNi9rLzlDRmV5VUFlSnFrdmhmeHNzYVNNZnMxd0JudTBaOWZxcHAvaVp4ZCtPcmxMK1ZvNGZ0S3h1L3dEY2pCQXlQdzVwM2pVaTY4YzNpeG5PNlNPUEk5UXFnL3FLNzd4TDRKc3RkdVRlSk0xcmRNQUdkVjNLK09tUnh6K05BQzIzaFB3amN3S2x2Ynd6akgza3VHWW4zeUdxTFZ0Q3M5QzhHYXhEWmVaNWNxbVFoMnpnOERqOHE1SFdmQU9vNlRZeTMwZDNEUEhBTjdCY3F3QTdqLzhBWFUyaTYzZVgvZzdYTEM4bWFieUlBMGJ1Y3NBVGdnbnYyeFFCYitFMy9IenFmKzVIL05xNzdWTkxzdFhzemEzMElsaUpEQVp3UVIzQkhTdUIrRTMvQUI4Nm4vdVIvd0EycnRmRXVreTYxcEQyY04wMXRMa01yak9DUjJPT3hvQXpmK0VCOE9mOCtrbi9BSCtiL0dqL0FJUUh3NS96NlNmOS9tL3hyQTA3eFBxL2hlOFhUUEVrVHl3ZEVuKzh3SHFEL0VQMUg2VjZEYlhFTjNicGNXOHF5eE9NcTZuSUlvQTUzL2hBZkRuL0FENlNmOS9tL3dBYVArRUI4T2Y4K2tuL0FIK2IvR3Vub29BNWovaEFmRG4vQUQ2U2Y5L20vd0FhUCtFQjhPZjgra24vQUgrYi9HdW5xcHF1b3c2VHBzMS9jSzdSUWdGaEdBV09TQnhrajFvQXcvOEFoQWZEbi9QcEovMytiL0dqL2hBZkRuL1BwSi8zK2IvR3A5UThYV0ZtYmFOTGU2dXJpNGlXWllJSTl6cXBHUm5uK1dhc1d2aUcybDAyNHZydTJ1dFBpdDhlWUx1TFlmd0hmMG9Bb2Y4QUNBK0hQK2ZTVC92ODMrTkgvQ0ErSFA4QW4way83L04valRCNDZzUUZtbTA3VW9iTmpnWFR3ZnUvcm5QU3VtKzBRL1pmdFhtcjVHenpQTXo4dTNHYzU5TVVBYzUvd2dQaHovbjBrLzcvQURmNDBmOEFDQStIUCtmU1QvdjgzK05NUGpyVDl2bml3MUUyT2R2MnZ5UDNlYzQ2NTZmcjdWb2FyNG1zZE8reklxVDNrOTB1K0dHMlRlenI2L1NnQ2wvd2dQaHovbjBrL3dDL3pmNDBmOElENGMvNTlKUCsvd0EzK05YOUk4U1dPcUM1WGJOYVRXbzNUUTNLYkdRZXYwck9IanJUOGVjYkhVQlk3dHYyenlQM1djNDY1LzhBcisxQUR2OEFoQWZEbi9QcEovMytiL0dtdDhQL0FBNjNTMmxYNlROVm03OFphUGJhaEZZckpKY1RTT3NmN2xjcXBicGtrZ2ZsbXVnb0E1S1Q0ZGFBNCtVWE1mOEF1eS80ZzFtWG53d3R5Q2JMVXBFUFpaa0RaL0VZL2xYb0ZGQUhqZDc0TjFyU0pETEpwOGQvQXZVeE16RDhnUTFYZEZid1RmT3NGL1l5MkU1T012T3hqSi8zczhmaitkZXIxaTY1NFgwclhFSnVZQWsvYWVMNVgvSDEvR2dDaXZnUHcwNmhrdFhaU01naWRpRCt0TC93Z1Boei9uMGsvd0MvemY0MXpKLzRTSHdGUDErM2FTVzk5by8rSVA2SDNydk5FMXV4MXl5RnpaU1p4dzhiY01oOUNLQU1uL2hBZkRuL0FENlNmOS9tL3dBYVArRUI4T2Y4K2tuL0FIK2IvR3Vub29BNWovaEFmRG4vQUQ2U2Y5L20vd0FhUCtFQjhPZjgra24vQUgrYi9HdW5xSzZuUzF0WnJpUUVwRWpPd1hyZ0RQRkFITy84SUQ0Yy93Q2ZTVC92ODMrTkgvQ0ErSFArZlNUL0FML04valUwL2pIVFlkTXM3enlybVJyekpodDBRR1JzSEI0emo5YXM2WjRnanZrbmFhd3ZyQllFOHgydTR0aTdmVUhOQUZEL0FJUUh3NS96NlNmOS9tL3hvLzRRSHc1L3o2U2Y5L20veHBoOGRXSlZwb3ROMUtXelU0TjBzSDd2NjV6MHJvN084dDc2emp2TGFWWklKRjNLNDlLQU9mOEErRUI4T2Y4QVBwSi8zK2IvQUJvLzRRSHc1L3o2U2Y4QWY1djhhdFduaXV3dTdpd2lqaHVSOXVhUllYWlZDbloxUFhvZTFWQjQ0czNlUllkSzFhWVJ1VUxSVzRaY2pyenVvQVgvQUlRSHc1L3o2U2Y5L20veG8vNFFIdzUvejZTZjkvbS94cXpmZUs3R3lqdFExdmR5WFYwZ2tqdEk0c3lnSDFHZVAvckdyV2phei9hclNvZE92cko0d0NSZFJiTTV6MDllbEFHWi93QUlENGMvNTlKUCsvemY0MGpmRC93NlJ4YlNyOUptcnFLS0FPU2srSGVnT1BsVzVUL2RsL3hCck52UGhoYXNDYkxVcFVQWVRJR3orSXhYZjBVQWVPMzNnblc5S2Z6VFpSNmhDdlh5bVk1L0FZYjhxc2FOSjRNdTVCYjZucDAxaFBuQll6T1V6N25PUitQNTE2MVdSclhoclN0YlEvYTdZQ2JHQk5IOHJqOGUvd0NPYUFNMlB3SjRabGpXU08zWjBZWlZsbllnajJPYWQvd2dQaHovQUo5SlArL3pmNDF6TXR0NGg4QnplZGJ5Rzkwb3Q4eTg3UjlSL0NmY2NmeXJ1ZEExK3gxNno4KzBmRHIvQUt5SnZ2SWZmMjk2QU16L0FJUUh3NS96NlNmOS9tL3hvLzRRSHc1L3o2U2Y5L20veHJwNktBT1kvd0NFQjhPZjgra24vZjV2OGFQK0VCOE9mOCtrbi9mNXY4YTZlb3JxZExXMW11SkFTa1NNN0JldUFNOFVBYzcvQU1JRDRjLzU5SlArL3dBMytOSC9BQWdQaHovbjBrLzcvTi9qVTkxNHcwMjNzTEs1OHE1bGU4WGREYnhvR2tJOXhuSDYxWTAzeEJIZXgzRHoyRjdwNjI2ZVk3WGNXeGNleHp6MG9Bb2Y4SUQ0Yy81OUpQOEF2ODMrTkgvQ0ErSFArZlNUL3Y4QU4valRENDZzU2huajAzVTVMTlRnM1MyLzd2NjV6MHJvN1c4dHJ5eWp2TGVWWHQ1RjNxL1FZL3BRQnovL0FBZ1Boei9uMGsvNy9OL2pSL3dnUGh6L0FKOUpQKy96ZjQxYnNmRkZqZlQ2ZkZGRGNyOXY4enlXZFZBSVRPU2VjNE9EaXFNZmpxeW0zR0RTZFdtVldLbG83Y01NajNEVUFQOEErRUI4T2Y4QVBwSi8zK2IvQUJvLzRRSHc1L3o2U2Y4QWY1djhhc1gzaTJ4czB0Vk50ZHkzVnpHSkV0STRzeWdIKzhNOFZjMGJXUDdWODFUcDE5WnRGakl1b3RtYzU2Yzg5S0FNdi9oQWZEbi9BRDZTZjkvbS93QWFQK0VCOE9mOCtrbi9BSCtiL0d1bm9vQTVXVDRmZUhuR0ZobWo5MWxQOWMxbTNQd3p0UTIrdzFPNGdjY2p6RkRmcU1WM2xGQUhuUnMvSGZoLzVyZTQvdEszWCtIUG04ZlEvTitWWDlJK0lkcE5KOW0xZTNheG5Cd1d3U21mY2RWL1d1MnJMMW53L3BtdHhsYjIyVm54aFpWNGRmb2Y2SGlnRFJobGpuaVdXR1JaSTNHVmREa0VleHA5ZVozR20rSVBBMHpYZW5TbTgwek9YUWpJQS8ybDdmN3cvSDBydFBEdmlPeDhRV3UrM2JaT28vZVFNZm1UL0VlOUFHeFJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRll1ditKOU0wR01pNWwzM0JHVmdqNWMvWDBIMXJtL0dIanNXclNhZm83aHBoOHNsd09RbnN2cWZldk5aWlpKcFdsbGRua2M1Wm1PU1Q3bWdEcDlhOGVheHFSWkxkL3NNQi9oaFB6SDZ0MS9MRmNzN3M3RjNZc3g1Skp5VFZ6U3RKdnRZdXZzMWhBWlpNWlBPQW85U1QwclJ2dkNHczJGeEJGY1FJb25jUnBJSkJzM0hvQ2UzNDBnTUdpcnQzcFY3WjZvZE5tZ1lYVzRLRUhPU2VtUFhPYTA0dkJ1dFRYMDlsSEZFMDhDcTBpaVZmbDNaeC9LZ0RuNkszTlU4SmEzcFZvMTFkV243aGZ2T2podHYxeFU5cDRJMTY4dElicUMzak1VeUIwSmxVWkJHUlFCemxhbWsrSWRXMGRoOWp2SFdNZjhzbU81RCtCL3BWcGZDR3N0cXI2YUlFKzBwRUppdm1ERzBuSFduM3Znclg3SzFlNWxzdzBjWTNOc2tWaUI2NHptbUIydmgvNGhXVjh5d2FtZ3M1endKTS91MlAxL2gvSDg2N1JXREtHVWdnaklJNzE4NjEwM2hieGplNkU2d1Nscml3enpFVHludXA3ZlRwUUI3TFJWYlRyKzExT3pqdTdPVVN3dU9DTzNzZlExWm9BS0tLS0FLbWwvOGVYL0FHMGsvd0RRMnEzVlRTLytQTC90cEovNkcxVzZxWHhNaW44QzlBb29yTnZkWVMwMUFXUzJkMWNUR0lTNGhWU0F1U081SGNWSlpwVVZRc2RXZ3ZMaDdZeFQyMXdvM2VWT20xaXZxT29JcS9RQVVVVVVBRkZVcDlVdHJmVkxmVDVkd2x1RkxJY0RieDJ6NjFMZDNrZG8xdXNpc1RQS0lWMmpvU0NlZmJpZ0N4UlJSUUFVVkZkM01ObmF5WE03N0lveHVZMW1mMjZZL0xsdTlPdWJXMWtJVlpwTnBBejAzQUhLMEFiRkZadDNxelJYYjJ0cFpUWGswU2hwQkdRb1FIcGtrOWZhay90eTFPbHBmQkpUdmZ5bGhDL3ZESm5HekhyUUJwMFZtMmVyR2E5K3hYVm5MYVhCWGVpdVF3Y2Q4RUhyN1ZFMnR2SThwczlPdWJ1R0ppcnl4bFFDUjEyZ25MZmhRQnIwVm1uV0kzdFlMbTJzN3E3aW1CSU1LQTdjY1lPU09mOEFDa3N0YWp1N3lXMk5wZFc3eEo1am1aVkFVZHM0Si95S0FOT2lzUStJUjVQMnYrenJuK3o4L3dESHp4MC92YmM1eDcxY3Z0VVMxZUdLR0dTNnVKd1dqaml4eW82c1NlQU9hQUw5RloxcHF5VC9BR2xKN2VXMm50bDNTUk1OeDIrb3huY09PMVM2WnFVT3B4U3lReHl4aUtVeE1zcTdUa0FIcCtOQUZ5aWlpZ0FvcXJwMTlGcU5vTGlKWFFibVVxNEFaU0RnZzRKcG45cVcrNi9CRGhiSUF5dmdZUHk3c0RucUJRQmRvclB0ZFdodk5KR29XMEU4cW5JOHBWSG1aQnhqR2NlL1hwVlgvaElsKzFmWnY3SzFIenRubWJQTFRPM09NL2U5YUFOcWlvYldjM051c3BnbGdKejhrb0FZZlhCTlFhZnFsdHFFMTNERHVFbHJLWXBGYkdjZzR5UFk0UDVVQVhhS3J4WGtjdDljV2lxd2tnVkdZa2NIZG5HUHlxeFFBVVVWUjFEVW83SjRvVmlrdUxtWFBsd3hBWklIVW5QQUh2UUJlb3JPdE5WODI4Rm5kV2t0bmNzcFpGa0lZT0Ixd3dPQ1I2VkhOcmFSMzl4WnhXRjVjU1FiZDVoUlNvM0RJNnNLQU5XaXFlbmFqQnFNY2hpV1NONDIyeVJTcnRkRDdpb3J6VlREZWZZN1d6bHU3aFUzdXNaQUNMMnlTZXA5S0FOR2lxdW5YMFdvVzNuUks2RU1VZEhHR1JoMUJvKzNSSFV6WUtydEtJL01ZZ0Rhb3pnWlBxYUFMVkZadDNxcGl2R3M3UzBsdkxoRkRTS2hDaEFlbVNTQmsrbFRhZHFNZW9SeWJZNUlwWW0yU1JTRERJZjg5NkFMbEZaMTVxaGd2QloyMXBMZDNPM2V5SVFvUmUyU1RnZlNpMjFtMm10TG1lVVBibTF5SjQ1UmhrNHorT2UyT3RBR2pSV09tdXNHaGE1MDY1dHJhWmdxVFNiY1pQVGNBY3JuM3FlNTFSNEozaUdsMzh3WCtPTkZLbjZaWVVBYU5GWlVPdldzbWx5YWcwTnhIRXIrV0ZkUnVkczR3b0JPZWVLVzMxaHpkeFcxNVlUV2JUNThwbktzckhyaklQQjlqUUJxVVZCZDNCdFlQTlczbW5PY2JJUUMzNmtWbnJyeW04dDdhVFRiK0o1MjJwdlJjZTUrOTBIZWdEWG9yR2wxOEtKWm9yQzRtczRXS3lYQ2JjY2RTQm5KQTlhMTQ1RWxqV1NOZ3lPQXlrZHdhQUhVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQVJYZHpCWldzbHpjeUNPR05kek1ld3J6WjMxTDRnNnlZNHk5dG84RGMvd0NKOVhQNmZ6bThUWDF6NHQ4UlIrSHROZkZyQzM3NlFjZ2tkV1BzT2c5VCtGZDdwZW5XMmxXRVZsYUpzaWpHUGRqM0o5elFBbWw2Wlo2VFpKYVdVSWpqWHI2c2ZVbnVhdVVVRTRHVFFCNUxydWdhM2UrTUwrZXhzWnh0a01zY3BVcXB4akcxandUUk40czhZMmlHMXVGa2prKzd1ZTJ3L3dETEZkN2ZlTVBEOWk1amwxRkhjZFZpQmY4QVVjVlZnOGZlSFpXMnRkeVJlN3hOajlBYUFPUThHZUY5UXY4QVdvOVUxR0dTTzNpazg0dE1DR2xmT1J3ZW96eVRWM1g5YThXYVRyMTU5blM0YXlNaE1lK0RlbVBZNC9yWG9WbmVXdDlBSnJTNGpualA4VWJCaFU5QUhqdDc0aThVNjdiTlkrWEs4Y25EcEJBY3Q3SEF6WFRlRy9CdDFiK0d0U2p1OFJYbDlGc1ZDYytXQm5HY2VwNi9oWGJYVjNiV1VCbXVwNDRJaDFhUmdvL1d1Zm44ZStIWVcyaTdlVWovQUo1eE5qOVFLQU9NOEh3NjNvbmlpSzFrdEpvWTUyRWN3YUlsU0IzQjZmaUs5WnJCc2ZHUGgrK2NKSHFDUnVmNFpnVS9VOFZ2QWdnRUhJUFFpZ0NucXVsMmVyMlRXbDdDSkkyNmVxbjFCN0d2UG9aZFIrSHVyaUNjdGM2UmNOa0VmekE3TU80Ny93QXZUYXA2cnB0dHEybnkyVjJtNk9RZGU2bnNSN2lnQ2UxdVlieTJqdWJlUlpJWkYzS3k5Q0tscnpqd3RmM1BoYnhESjRjMU4vOEFSNVgvQUhMbm9DZWhIczM2SDhhOUhvQUt3ZkhQL0luNmovdUwvd0NoQ3Q2cU90NmFOWDBpNDA5cFRFSmdCdkF6akJCNmZoUUJ6YTZMcXEvMmZyZWlYRUF1VFl4eFNRM0ErVjEyam9SOUI2ZE90WlBpUFhadFUwWnJIVUxUN0pjMnQ5RWwyZ2JLbENHT1FmcUI2OXE2aTUwTFZpc0NXUGlHUzBpaWhTTFlMZFhCMmpHZVQzcU8xOEhXYTZmZlc5OWNTM2sxOFEwMXcyRmJJNkZldU1HZ0RVMXlPRStIcitPUlZFSXRuQkdPQUFwckk4UFc4dC84T29yVGRpU2Uwa2lVdDJ6dUEvcFVMZUVOUm50eFpYZmlXNm1zQmdHRVJBTVZIWXRrNS9LdW5ndG83YXpTMXR3SW80MENJQi9DQU1DZ0RnWmIvVmJQd2JjYU5kZUg3aEREYnRHMDRJOHZHUHZaL3dBTTFKNFB5M2lpejh6bmJvc2ZsNStxOVB6TmExeDRXMWE5aCt5MzNpZWVhMFkvUEd0dXFNdzlOMmF0YWo0WFNhYXp1ZE52Wk5PdWJTSVFSeUlvY0dNZEZJUFdnRG5mRlJkUEUrckdFY3RvemI4ZHh1QU9md3JhWklmK0ZZWUlBVCt6QWVQNzNsNS85Q3ExcGZobExhUzl1TlJ2SDFHNnZJL0tsa2RkZzJZeHRBSFNzNCtETHMyZjltbnhEYy8yWG4vajM4cGQyM09jYjgvMHg3VUFabW9vRjhNZUVpRkFMWE51U2NZejh0ZWhWajZyb0VPb1crblFSeW0zanNaa2tSUXVjaFJnTDFyWW9BS0tLS0FDaWlpZ0Jzc2FUUnRIS2l1akRES3d5Q1BjVjV6cnVnM3ZoSysvdHpRR2I3TVA5YkNlZGdQWStxL3kvV3ZTS1IxVjBaSFVNckRCQkdRUlFCbWVIdGN0ZGYwNWJxMk8xaHhKRVR6RzNwOVBRMXFWNW5xZHRjZUJQRWtlbzJhczJsM0oydEhuZ0RxVitvNmcvd0QxNjlIdGJpSzd0b3JtQnc4VXFoa1lkd2FBSmFwYTEveUE3LzhBNjk1UC9RVFYyb2J5M0YzWlQyeGJhSm8yajNZempJeG1nRGh0STBPOXZQRHVoNnJwZHpIRGYya2Jxb2xHVWRTelpCOU9wL1B0U2EvNGcxR1hROVcwalU3SmJiVUVoV1FORTJVa1F1b0pIcHdmNTF1cjRjMUcyMHl6c3RPMTZTMFczUXFTSUZiZmtrNXdUeDFvMC93bkZGTmQzT3FYa21wWE4xRVlYZDEyQUlld0E2ZEJ6UUJxNlBGQU5Cc29vMVV3RzNRQVk0SUtpdUYwaThsdC9oL0xhMnhKbnZMeHJTMkdmNzJNNDlzYnVhMjE4SWFqRGJHeHQvRTExSFlIS2lFeEFzRjlOK2Y2Vm8ydmhpMXRiclRXaWtZVytub3dqaEl6dWR1cms5eitGQUdQcUZuSHAvaXJ3cFp3L3dDcmhqa1FlK0Y2MVY4S3llSVZzN3dhWEJZU1cvMnlYbWQyRGJzalBUdDBycXIvQUVaYjNXOU8xTXpsRFpiOEp0enYzREhYdFdWYmVGZFJzdk5XeThSVFc4VWtqU2xCYnFjRS9VMEFNMGdLL3dBUnRjYVgvV3BERXNmc2hWYzQvU3Vzcm5MN3d2TGNUMjk5YjZ0TmJhbkZFSW51bFFIelIvdExWM1J0S3ZyR2FTYSsxbWUvZDEyN1dRSWkrNFVaNW9BMXFLS0tBQ2lpaWdBb29vb0FSbFYwS09vWldHQ0NNZ2l2Ty9FZmh1NjhPWG4vQUFrSGg0bU9PTTdwWUJ6dEhmanV2cU8zOHZSYUNBUmdqSU5BR1A0WjhRVzNpSFQvQUQ0c0pPbkUwV2VVUCtCN0d0aXZOZGVzSi9CZmlDTFd0TVEvWVptMnlSRG9NOVYraDZqMHg3VjZIWTNrR29XVU41YlB2aG1VTXAvejNvQW5xbHJYL0lEdi93RHIzay85Qk5YYWh2TGNYZGxQYkZ0b21qYVBkak9NakdhQU9LMC9RNzY3MFhRdFgwcTVpaHZyV0FvRm1HVWRUbmoyNm44KzFRZUlQRUYvY2FCcTJrNm5aQzExQ09KSkFZbTNKSW5tS0NSNmRmWDE5SzZBK0h0UmcwK3p0Tk8xNlMwVzNqOHNrUUI5L09jNEo0bzAvd0FKd3hTWGsrcDNrbXBYTjNFWVpKSEcwQlBRQWRPZy9LZ0RVMHVPQWFIYVJLcStSOW5RWTdiZG9yaGRKdkpvdmg4YksyWStkZTNiV2x0OUdQSi9MZFcydmhEVVk3VTJNUGlhNlRUOEZSRDVRTEJmVGZuK2xhVnQ0YXRiVzgwNlNLUmhiNmZHeXd3a1p5N2RYSjduOEtBTXk3dFk3SHhoNFd0SVJpT0dHZEYrZ2p4V1g0TWs4UXJwVTQwdUN3a3QvdEw4enV3YmR4bnAyNlYyRjVwQzNXdTZmcWhtS3RaaVFDUGJuZHVYSFh0V05aZUU5UjA2SjRySHhITkJFemw5Z3QxUEorcG9BYm9nVi9pRnI3eTh5cEhFcVo2aGRvemo5SzYydWJ2ZkMwczl4YjM5dHEwMXJxY2NRaWt1VlFIemgvdExuRlh0RzBxK3NKWlpiN1daNzkzQUFESUVSZmNLTTgwQWExRkZGQUJSUlJRQVVVVVVBQkFJSUl5RDFCcnozeFI0V3VOSXVmN2U4TzdvbWlPK1NHUCtIMUtqMDlWcjBLaWdEQzhLZUpJUEVOaHZ3c2QzSGdUUkR0N2oyTmJ0ZWIrS2RMdVBDbXRSZUl0SVhiYnUrSlloOTFTZW9QOEFzdCtoL0N1OTB2VUxmVmRPaHZyWnN4eXJuM0I3Zys0TkFGdWlpaWdBb29vb0FLS0tLQUN2UGZIL0FJdU1SazBmVFpNUDkyNGxVOVA5Z0grZjVldGIzamZ4RC9ZV2s3WVcvd0JNdU1wRi9zK3JmaC9NaXZKcmJTTlZ2NHZ0RnRZWFZ3akUvdkVqWmdUMzVvQW8wVmJ1OU12N0ZveGQyVThCa3lFRWtaWGRqMHoxNmlwTHJSZFVzN2NYRnpwOXpEQ2Y0M2pJQSt2cFNBNlh3KzcyM3c1MXk1dENWdVRLcU15OVFueS8wWnE1WTZocUIwOFdodXB2c20vY0UzSGJ1clo4SDN1c1djdHdOUDAxOVF0cFYyM0VPd3NwSDE3SGsxUHJPcjMrcVJqUUxEUS9zRWF0dmUxaGpKZGlPY2tZSDE2VXdPaTA3VmJHODBGZkZWN0FaTlIweU13RTlwR09BcFAvQUgxK0dUN1ZuZUNiZ1gxdjRtdU5SbmRWbWhEVFNyOTRBaDhrVmx3eDY1WmVGci9TbjBPNkVVN2lWNW1qWWJBcEI2WS8yYWkwSFZicncxYXp5WEdrbWUxMUJBb013S282ak9jY1lQM3FBT2tzRTB6L0FJUm5XN2Z3L2Z6WHM3d1prUzZ5TnFZT1Nvd09jRS9wUzZxbWpQNGI4UG5WZFF1clJoWmp5aEFDZDN5cm5QQjlxeTVkZDFDYlRUYjZQNFpqc1Z2d1l4TEJFU1pRQWNoU0FNOFo5Y2MxZGkxRFZEcDFuWjNmZ2w3djdMRUlrZVdKaWVBQjNYak9LQUtYdzNKbTFQVWhMS1ZCc21CYzg3UmtjMXNhUGEyUGh2VGIzWG85WmsxUzM4c3c3RVFoZHhJeG5rKzM1MWgvMjdQWTNGeHFNSGh4Yk8zbGdheVlJQ3FCOGtrNXg5N2pHUGFxR2dhbGZXR2o2a2cwMlM4MDJkZGt4d1FzYmV1N0J3ZVIrbEFIUFVWUGIyZDFkTEkxdmJ5ekNKZDhoUlNkcStwOUJVRklEYzhMZUk3bnc5ZmgxekpheUVDYUhQVWVvOXhYdE5uZHdYMXBGZFcwZ2tobFhjckR1SzhKR2lhc2JQN1dOT3VmcytOM21lVWNZOWZwNzEwM3c2OFJHd3Z4cGR5LytqWExmdXlmNEpQOEQwK3VLWUhxMUZGRkFGVFMvd0RqeS83YVNmOEFvYlZicXBwZi9IbC8yMGsvOURhcmRWTDRtUlQrQmVnVnoxM2UyOWo0eDh5NFoxVnJBS05zYlB6NWg3S0RYUTFraUdYL0FJUzlwL0xmeXZzSVRmdE8zZDVoT00rdUtrc3IyMHcxblhMVy90RWY3SGJSeUw1ektWRXJOZ1lHZVNCZzFWR3AzOCtsU2F4SHFNTVlBYVJMTW9wQlJTZUNmdlpJSGF0QzBobDB6V3BZSTRuYXh1OHlxVlVrUXlmeEErZ1BVZTlaT21wcGRoWXBaYWhwSG1YMFJLa0N6M21YazRJYkdEeDZtZ0RVbHZMdS93QlNnczdTNCt5UnRhaTVhUUlIWTVPQW96eFVtajNWN0xmYWhhM3NpT2Jaa1ZXUmR1UVZ6bjhlS2l1ZDlocjBkNkxTYVMxZTBFQUVFZTRvUXhJeW82REJwdWdTeXpheHJNazBKaFpwSWpzYnFCczR6NzR4UUJGckZqL2FHdkxBcmJKUlpNOFQvd0J4eElwVS9uU1MzeDFDMTBlWjEyVExmckhNbjl4d3JnaXRCb3BQK0Vvam04dHZLRm02bDhjWjNxY1o5YXp0VDA2NGo4UldWemJJelcwMDZ5VGhSa0k2cVFHOWdRZWZwUUJhV1RVZFR1N3o3TmZDMGh0cGZKVUNKWExzQUNTMmUzUGJGWE5GdlgxRFNvTHFSUXNqQWhndlRJSlU0L0VWblcxMS9ZOTVxRVYxQmNFVDNCbmhhS0puRWdJSHlqQTZqSGVwTkwrMWFYb3Vud3ZhUEpMTE50a1ZmK1dRZG1iSjRQVElGQUR2RjMvSXQzUCs5SC82TVdqeGYveUs5Ny91ci82RUtuOFJXazE3b2R6YjI2N3BTRlpWOWRyQnNmcFdacStvTHJPbHZwdHBiM1AybWNxcks4TEtJdVFTV0pHTzFBRzZ5VzFtYm04WUxIdkcrWi9VS01aUDRWbCtIN05aOU1TNnVZZm1tdVd2RVUvd0ZpZHAvTCtkUmE5Y1NUMzhWakpaM2oyQzRrbWFHQm5FcDdKa2R1NXEzZGF0S3VrelhGbnA5MjB5bllrVHdNQ1Q2NDY0RkFFY2grMmVMWVZqNVd3aFl5TVA3ejRBWDhobXMvdzNkYWtOQ2lXeXNZNUVqYVRMU3k3UE1POWpoY0ErdlUxZDBLNGl0NDB0ZnN0K1pwV0x5enpXektIYzhra25wLzhBcXFEU3I5ZEZzVHB0NWIzUG53dSt3UndzNG1CWWtGU0JqdjNvQTB0TXU3UCt3VXZMZVB5YllJMGhUKzdna3QrdWFpMEMyOHpTRFBjcUdsdjh6Uys0Ym9Qb0Z3S29tenZMWHdISmErUzdYSmpiOTJnM044ems0NDlqVy81VHhXWGt3RUs2eDdVSjZBZ1lGQUdMcjEzOWswMlRUWWJLWklHakVIMmdyKzVpVWpHU1JrOEQyclQ4aUN6aFM2amdlZVdHRVJLWStXWk9PQnpqdG1zaWJWM3VORmtzWnJTNU9wU1FtRm92Sk9HY2pCYk9OdTN2MTZWWk05MW93c0k1MGVXeVMyRVVyUklYS1NER0dPT2NZelFBM1NKdnQrdVh0NUpHMXZMSEVrQ3dTRERoY2x0eEh1VHhqUFNwUERuM3RXLzdDRXY4bHB0Z3h2OEF4RExxY1VjaVdxMndnVnBFS21SdDI3SUI1d0tsMEdHV0p0VTgyTjAzMzBqcnVVamNwQzRJOVJRQnJVVVVVQVltbXN0anJHcldybmJFU0x0TStqRDVqK1lyTXp1OFBRSk13amZWN3Z6SkNUakNNZHgvOGRVRDhhdCtLYlM4ZWUzbXNZbVo1MGF6bEtnbmFqNDVQb0JnODFZZlQ0N3ZYSTRaclFQWTJWc0ZqRXNlVVoyUGJQQndGRkFDYU5MRkRyV3AyVVVpTkc1VzZqMmtFZk53MzZqOWFlZitSMVgvQUxCNS93RFJncGwxcDhkaHErblhkaFpMR2hkb0p4QkZqNVdIQk9CMEJIV3BqREwvQU1KZXMvbHY1WDJFcHYybmJ1OHdIR2ZYRkFHdFhJMjROaE5Qck1ZTzJPOW5pdVFPOFpmci93QUJQUDB6WFhWbGFSYkUydC9EY3dzRWx1NS9sZGNibExIOUNLQUlFdVZ0dFYxeTd4dldLMmhrd0QxQVZ6VUwzT3EyZW5RYXJQZXJNam1OcGJmeWdGVlhJSHlucmtaNzVxdnBtbDMwYTY3WXloaUdnV0MzbFljT3Uxd3ZQZkFJQnAxeGNQcUdpMitreFd0d3QyZktTUlhpWUxIdElKSmJHTWZMeGc4MEFkUldNT2ZHemUybmovMFlhMElMbVNXK3VyZHJaNDQ0UW15VTV4SmtFbkhIYXMzVURKWWEvSHFiUXlTMnoyMzJkekVwWXhrTnVCSUhPS0FITmUyVjFyVm5ITGIzY2R4RzBnaGFTSW9ySGFkM0o2OFZVaHZtcy9FdXNoYks2dWR4aC8xQ2c3ZjNZNjVJcWRaLzdXMXl4bnRZNWZzMW41alBMSkdVREZsMmhSbkJQWE5SeDNUNmY0aDFhU1d5dkpJNWpFVWVHQm5VNFRCNUZBRW5oMlQ3VGZhbmV5RHlaNW5SV3QyQkRScW93dWMrdko5SzF2S3Q3ZVNlN0txak9vTXJrOVFvT00vVG1zM1RWbnU5YnVOVWUybHRvVENzQ0pLdTEzd1NTeEhiMHFIeEZQTExjdzZlYlc3ZXpiNTdoNFlXZmVBZUVCSHIzOXFBRjBXZExUUmJ6VmJnR09LNG1rdWdEMTJucCtZQS9PbDBxUnJON2MzY2JHOTFXUnBIUGFNQlNRdjRBQWZuVmxvN2JYTEJyZVMzdTdlSldYaDBNUjQ1R1BhczY5ME1qVnROQ1hPb3ZHV2szeUdkMk1meUhIUDhPVHg3MEFMYnpYYWVKOWFpczdaSlpHTUpMeVB0UkI1ZmZBSko5c1ZvYVBjcGNYRjZKTFVXOThqcXR3QWNodmwrVWcrbUtxZWQvWSt1MzAxMUhNYmU3RVpqbFJHY0FxdTBnNHljMVBvYXlUWDJwYWkwTHhSWFRwNVN5RERFS3VNNDdab0FpVzZ0OU84UzM1dlpWZ1M1amlNVHlIYXJiUXdJeWVNOGlvTkxOcnEyc2E0R2pNbHRLc0ErWUVid0ZQUDA0cTVlWDdXZXBTSnFFRE5Zc3F0RElzUmNLd3p1RFlCT2VtS3FRQy9tT3M2blpSTkU5d0l4YkNWY0Z0Z09UZyt1ZU0wQU8xMjhOeThlbVNXMDF2RExPaXZjeXJpTWdNRGhTTThuR0JuRlh2RVZ4SkJwYlJ3SEU5eTYyOFo5Q3h4bjhzbXMzVmI5ZGEwdzZkYTI5eXQxT1ZETEpDeStUaGdTV0pHT01kcXY2dERMUHEya0tzYnRFa3p5T3dVa0tRaHhrOXVUUUJjVFQ3VmJTM3R2S0JqdHlyUmc5aXZRL1dzaTV2RHFHdGFmYXkyMDFwSEZLWmcwNjQ4MWxCQVZjWkhmUFd0UFY1YnlDMFdhelF5TkhJclBHb3l6cG41Z1BmRlpsM2RKclZ6cDhObEZOKzV1VXVKWGtpWkJHRnp4a2pxYzQ0b0E2R3NmU3o5dDFpLzFCdVZpYjdMRDdCZVdQNHNmMHJZcko4THd5dzZGQ0o0M2ptZG5kMWRTRGtzVHlEN1lvQVRXZkkwM3c5UEJieGhmTVZvb294L0U3NTRINGttdEN3Z05ycDl0YkU1TVVTeDUrZ0FyQWU5ZVhYWHVMdlQ3OHcycEtXeUpiT3dKN3lIK1E5cTZLM21FOENTaEpFRERPMlJTckQ2ZzlLQUpLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLNTd4dnJSMFhRSkdpYmJjem55b2lPb3oxYjhCK3VLNkd2T2RkSC9DU2ZFYTIwdjcxclovNndkdVBtZjgrRm9BM1BBR2hEU2RGRnpNdUx1N0FkczlWWCtGZjZuNisxZFZRQmdZRkZBRWR6Y1EybHRKY1R5Q09LTlN6TWVnQXJ4N3hWNHZ2TmNuZUdCM2dzQWNMRURndVBWdlg2ZEs2YjRwNnE4VnRiYVZFMlBPL2V5NDdxRDhvL1BKL0FWelBnYnc2bXZhb3pYSVAyTzNBYVFEamVUMFg5RCtWQUdicFhoN1Z0WEc2eHNwSkkrbm1IQ3IrWndLdTNYZ254RmF4R1Z0UE1panI1VHE1L0lISi9DdmFJbzBoaldPSkZSRkdGVlJnQWV3cDFBSGdPbmFqZjZOZStmYVRQQk1wd3c3SDJZZC93QWE5TVQ0ZzJCOE9HL1pQOU5COHY3TUQxZkhYL2Q5L3dBS1h4LzRaaDFEVHBkVHRvZ3Q3QXU5aW8vMXFEcm4zQTZmbFhrdEFGN1ZOVnY5YXZQUHZKbW1rSndxam92c283VnAybmdyeERkeENWTlBhTlQwODExUS9rVG11MCtIdmhtR3owK0xWcnFJTmR6amRGdUgrclE5Q1Bjam5QcCtOZHRRQjRUcXZoeldOSVR6TDJ4ZU9QOEE1NktReS9tTTQvR3RId3A0dnU5Q21TR1pubjA4bkRSRTVLZTYrbjA2SDlhOWtkRWtSa2RReU1NRldHUVJYai9qM3c1SG9tb3BQYXJpenVjbFYvdU1PcS9UbmovNjFBSHJ0dFBGZFc4ZHhBNGVLUlF5c09oQnFTdUIrRm1xTk5aM09seU5ueUNKSXMvM1QxSDU4LzhBQXE3NmdEbFBpRG9RMVRSamVRci9BS1haZ3VwSFZrL2lIOWZ3OTZ0K0N0YU90YUJISksyYm1FK1ZON2tkRCtJeCtPYTZBZ0VZSXlEWG5QaDRmOEkzOFE3dlNNN2JXNno1ZWVuVGNuOVZvQTlHck04UmFxMmthVzF4RkQ1MDd1c1VNWk9BenNjQ3RPc2J4VnA5enFPa2dXWVZybTNsUzRpVmpnTVZPY2Z6b0FveTZqcjJrWFZrMnFteW50TG1aWUdOdXJLMGJOMFBKNUZhMGV1NlpKWldsNGx6bUM4bUVFRDdHK2R5U0FNWXlPUWVUeFhNWE9zUDRsMWF3MGcyVWxoSkRjSmNUQzVZS3gyWk8xQjFiUFBQdFZhMHNOWGowdlJ0SU9remc2ZnFLVFNYQks3Q3U5amtjNVAzdjBvQTZtTHhMcGR6ZE5aMjl5VGM3V0txOFRxR0tnNXdTQURqRlpDK0wzdDlHanZMbG9YbmF5V2Z5RlJ3U3hjcm5keUF2SDFyTWlzZGZ2TDdUNTcrMnYybmhuY3pNN29ZUUNEallvNXhRbWg2bzJtUEY5amtEblJSQmc0SDd3U2x0djF4UUIyR25hN3Arb3llVkJNZk9FWG1zanh1bUZ6alB6QWQ2dFdGN2I2alp4M2RwSjVrRW1TcmJTdWNISFFnSHRYRmVJNWRRanRMTFZvckNXMnVKSVgwK1NKeU4zemo1Q01mN1dhN1RUYk5kUDAyMnMweGlDTlV5TytCMW9BczBVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBRkhXdE1nMWpTcDdHY2ZMSXZEZDFic1I5RFhJZkRyVVpyVzR1L0RsOGRzMXV6TkVEN0g1bEg0OGo2bXU5cnp2eHpFMmllS2RPOFEyNmtCMkFsQTdsZUQrYW5INFVBZWlWRmRUZlpyV1djeHlTQ05DK3lNWlpzRE9BTzVwOGNpU3hySkd3WkhBWlNPNE5Pb0E1Vi9HVDJwamsxSFE3K3l0SFlLSjVGKzduKzhPMVhOVzhTclphZ3VuV2RqUHFGNFU4eG80ZWlMNmsxbWVKN2crSXJ4ZkRXbmZPQTRlOW5IS3dxRDB6L2V6L2g2NG0wSlFuajNYMGJHNFJ3aGY5M2FQL3JVQVg5UDhVV1YzWVh0elBITGFQWThYRU1xL01ucDljNHFnbmpVSXNOemQ2UGUydW56RUJMcHdDTUhvU093L091ZThVLzhmL2kzeTg0OG0xMzQ2WjNKL244NjZYeGdZZjhBaFg5d2VQTDhxTFovMzB1S0FMV3JlSkZzZFFUVHJTeG4xQzhLZVlZNGNZUmZVbnQvbjJwZFA4VVdWM1kzdHhQSExaeVdQL0h4RE12eko2ZlhPS3l2REdQK0V5MWJmbnpQc3R0dHo2ZVd1ZjF4V0o0cTNmMm40cThycDltdHQrT3VkMGY5TTBBZENualVLa1YxZGFOZTIybnlzQXQwNEJHRDBKSFlWMGQ5ZTI5aFl5WGx5KzJDTWJtWUF0eDlCWFArSy9LLzRWNU5qSGwrUkZ0ejlWeFZuVE5WdXhIWldrbWtYaEhseHExeGhkbjNSazllbEFFdWdlSW9kZG52STRyV2VEN05zejV3d1dEWndjZHVuNjF0VnpIaDMva2NQRS8rL2IvK2d0WFQwQUZGRkZBQlJSUlFBVVVVVUFWZFRzSU5VMDZleHVWekZNdTArb1BZajNCNXJpUEFWN1BwT3MzbmhpK1B6S3pORjlSMUE5aVBtSDQrdGVnMTU3OFJMYVRUZFcwN3hEYWpEcTRSL1Fzdks1K295UHdvQTlDcUc3bit5Mmt0eDVVa3ZscVcyUmpMTmpzQjNOTGJUeDNWckZjeEhNY3FCMVBxQ01pcGFBT1dieGkxczhiNmxvbDlZMmtqQlJQSXZDay8zaDJxeGVlSTcyMnU1WVU4TzZoT2tiRlJLaS9LNDlSN1ZuK0pKajRsdlU4TzZjZDhTT3IzdHd2S3hBSDd1ZlgvQUErdUwvalMra3NkQ0ZwYWNYVjY2MnNJQjUrYmcvcHgrSW9BaGg4YldrbWlEVVdzN2dOSk9iZUdBWVo1V3dEeDdjNHF6cHZpY1hPcUpwdDlwMXhwOTFLcGFJUzhpUURyZyt0WldvNmZCcGVzZUVMRkIrNWhlVmMrcllYbjZrODFhOFZmOGpONFoyWTh6N1EvL2ZPRnpRQTZieGhtZTVHbjZSZVgxdmFzVWxuaUEyZ2pyajFwTHp4M3BVRmpGY3d4WEZ3MGtmbWVXaWZjWEpIekhvT1FSM3B2dzM0OEtqZDk3ejMzWjY1NDYxZzJJUDhBd3F2VkNNYkRNMnpIVEc5Zi9yMEFlaDJrNHVyT0M1VlNvbGpXUUE5c2pOVFZTMFgvQUpBZGgvMTd4LzhBb0lxN1FBVVVVVUFGRkZGQUJSUlJRQVVVVVVBUVh0cERmMmMxcGNKdmhsVXF3OXY4YTRMd1hjemVIL0UxMzRhdkgvZHV4TUpQQUxZeUNQOEFlWDlRSzlFcmdmaVhZeVc3Mk92V3Z5elFPRVpoOWNxZndPZnpGQUhmVVZXMDY4VFVOT3Q3eVBoSjQxY0QweU9sV2FBQ2lpaWdBb0pBQkpPQU9wTkZjNzQ4MUk2ZDRXdVNqWWtueEFuL0FBTHIrZ05BSGwvaXZXRzF2WHA3b01UQ3A4dUVlaURwK2ZYOGE2L3c4SlQ4UG9CRnE4ZWxOOXFiOSs3WUI2L0wxL3ppdk42NjNTdGYwTlBERWVqNnRaM2M0U1l5L3VpQU04NDV5RDNvQWdpMTJhMjhWMnMycDN6YWxiMlV6QlpBZHdJUEc1ZjBQNFYwdDhkVDFHMzFHNTBEWDR0U3Q1MFl5V2NvQmVOVDJVSDI0NkQ4VFhOUzZ0NGRzcjZ6dTlJMHFVbUp5Wlk3c2hsZGNZNDVPRDcxcFErSi9EZWx6WEdvYVJwZDFIcUV5RlFKR0FqUW5yams4Wjl2eW9BZjRiMVd6bjhMeDZPbXJ0bzE3SEtYODdHRmx5VDFQNGdkZXc2MXBhWkRyTWZ4QXNtMWQ0cGkxczRpbmlVQlpGQTljZGVmMXJtTksxblFYMGROTzF2UzNieW1MSmNXb0FjNS92Y2pQNjl2U3RLUHhwWXhhNXA4c1ZsTkhwMWhDOFVTQWd5SGNBTW5KOWgzb0FoOFQzdXBXTVpXUHhTdCtrN09qd3hPRHNYMFBQNFYwa2NOaHFYaERSdEV2Q0VsdkxZdGJ5SCtHUkFNZitoZnpGY3JQZjhBZ21VU091bGFpSkd5UVRJTVpQOEF3S3FXcjY5SGVhVG9sdGFyTkZQcHlFTTV3UG0rWEJYQi93Qm1nRGQxMzdkb2ZnL1FsVm10N3kzbmxYSzlRY3NEajZnL3JVbW9hN3FzZnc5MHErUytsVzZsdUhWNVFlV0FMOGZvS3lQRkhpdFBFR2pXTUR3dWwzQzI2VnNEWXh4akk1cW5lYTFiM0hnNncwWlk1QlBiVE5JemtEYVFTM1RuUDhRb0ExYjJSNXZoZkJMSXhaMzFCbVpqM0ozWk5kUHBOdkZwdW02ZDRhbnRuSTFDMmthNGNLZmtkaHdDZnpINEN1TzAvd0FRYWJGNGZzTkx2SUozRUY0TGlUYUZJWlJuamsrNHFYVVBIMnRTNmxMTFpYUmh0QytZNFdqUTRYM09DZWZyUUJaOEkyc3RpM2llMG1HSkliU1JHK296WEd3T3NWeEhJeUIxVmd4VS93QVFCNlYyNmVMOUYvdHUvdlhzN3Z5cjYyV0tXTUJjN3VoT2QzVEdLeWIrL3dEQ2kycGJTOUx1a3ZGWldRM0RibytHQklZYmprRVpGQUhYdmYzR3QzZ3Z2RGZpRkZtTWVQN091QmdkT2NEMS9BL1hGZVpYYVR3M3N5WEMrWGNKSVE2Z0FiV3p6MDZjK2xkakg0bDhMQytqMWY4QXNlNWkxR01BaU9KZ0l0Mk1aNi8wcmtOU3ZIMUhVYmk5a1VLODhoY2dkQms5S0FQWi9CK3NmMjE0Zmd1SGJNOGY3cWIvQUhoMy9FWVA0MXQxNVY4TDlTTnZyY3RnemZKZFI1VWY3YTgveXpYcXRBRWR2Q3R2RjVhRWtibWJuM0pQOWFrb29vRWxiUkJSUlJRTUtLS0tBS1Y3Ylgwc3l5V21vZlp3QmdvMElrVSsvVUhQNDB1bTJBc1ZsWjVtbm5tZmZMS3d4dVBUcDJBSGFybEZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBTmxrV0tKNUhPRlFGajlCWEFmRE9KcnpVTlcxbVlaa2xmYUQ3c1N6Zit5MTF2aWlZd2VHTlNrQndmczdnZmlNZjFyRytHY0lpOEtCOGY2MmQzL2t2OUtBT3Rvb29vQThpK0pybC9GVzA5RWdSUitwL3JWYncxNHZuOE8yVXR0RFp4VGVaSnZMdXhCNkFZL1Q5YTNQaXBwY2d1TGJWa0JNYkw1TW4reVFTUitlVCtWY2w0YzAyMjFmVm83RzV1emJlYUNJM0M3c3QySFVkZWZ4b0E2bi9BSVdmZS84QVFOdC8rKzJvL3dDRm4zdi9BRURiZi92dHF1LzhLdmcvNkMwbi9ma2Y0MGY4S3ZnLzZDMG4vZmtmNDBBVVcrSnQ0NkZHMHkzS3NNRWIyNUZjSFc5NHQwR0R3OWZRMmtWMjF4SThmbVBsTnUwWndPNTlEVWZocncxZWVJcmwwZ1pZb1k4ZVpNd3lGejBBSGMwQWRCRDhTcnVHQ09KTk10d3FLRkh6bm9CaW4vOEFDejczL29HMi93RDMyMVhCOExvY0RPcnVUM3hBUC9pcVgvaFY4SC9RV2svNzhqL0dnQ2wvd3MrOS93Q2diYi85OXRXUjRrOFl6K0lkUFMwbXNvb2drZ2tEcXhKeUFSL1d1ay80VmZCLzBGcFArL0kveHJoL0VHbjIybGF2TFkyMTBia1EvSzdsZHZ6ZHdPZTMrTkFHL3dEQzlpUEZFZ0I0TnM0UC9mUzE2MVhuUHdyMHB3OXpxOGlrSVY4aUxQZmtGaitnSDUxNk5RQVY1NzhTWTJzZFcwaldZaDg4YmJTUjZxUXkvd0F6WG9WY2g4VG9SSjRYV1RITVU2Tm42Z2ordEFIV3h1c2thdWh5ckFFSDFGVjlUMUMzMHJUNWI2NlpsaGl4dUtqSjVJQTQrcEZWL0RjeG44TjZiSVRrbTJqeWZjS0Fhei9IcHo0VXVFSXlyeVJLZnA1aS93Q0ZBRnU3MTNTWU5IZzF1WmdZR3g1VDdNdUMzR0I3OWMvUTFwMjh5WE50RlBIblpLZ2RjK2hHUlhubDVwZDZXdjhBUjNnY2FkcDBkemRRT1I4cjcwK1JRZlZTekdxMS9mUVQ2VkdzSG1pN3ROT2dkcGpmR0xheFFFYkUvaVBUUFNnRDFDaXZQM1NYVklkZXZMaTh1MWt0clNHZUpZcDJSRmN3QnM0QngxRlVOYTFRWEZ0TmRXNWxXK3RvWUdlZHI0cDg1VmZ1eGZ4ZS9TZ0QwaTVzN2U3YUUzRVFrOGlRU3g1SitWeDBQNjFQWG0ycHlpNDAvWHRTdUwrYVBVYmU1Mlc2TGNNbXhQbHhoUWUrVFNwUHFGNXJOM09zNngzY09vYkZlUys4dllnWUFJSWlNRUVkKzlBSHBGRmVkeDI4cmFiWlg0MUMrUzR1TlUreXV5M0REOTJaR1VnRHRWYlZiaTUwM1ZMN1JvSjVqWUxkMjRJa3VTaHc4WllxWkRrcUNSK2xBSHB0UXozY0Z2TkJGTElGa25ZcEdwL2lJR2Y1Q3VEczRMdWJVTk8wNmU5a1cxbXViZ0JMZTlNaFJCRUcyRnh6d2ZYc2FyZlpvUDdRdG9ieTl1QkJiNnBQYW83M0RMc2pDQWdiczhjbnJRQjZYUlRZZ3F4SUVPNVFBQWM1eVByM3AxQUJSUlJRQVVVVVVBRmMzOFFMSVhuaE82SUdYZ0t6TCtCNS9RbXVrcXJxa0l1ZEt2SUNNaVNGMC9OU0tBTXJ3TmVHOThKV0xNY3ZFcGhQL0FUZ2ZwaXRxNmgrMDJrMEhtUEY1cU1tOURobHlNWkh1SzR6NFZURnREdTRUL0JjYmgrS2ovQ3VwMTY2bXN0Q3ZycUJnc3NVTE9oSXpnZ1VBWWxuNEtGaEcwZHBybXBRSXgzRVJ1b3lmWHBWelVmRENYZDlGZjIrb1hWbmVwR0ltbWlibVJSL2VIcldUYzNYaUZHMGRrMXBBdXBGUUI5a1g5MWxkM3J6K2xhbXZYOS9vbmh0Skd1Vm11dk1XTjdveFlWQXpjdVZHZUFPS0FKTlA4TDJOcHA5NWF5dkxkdGZmOGZFMHpaZC93QWUyTWtpcVNlQ29tV0czdXRXdnJteGhZTWxySXcyOGRBZlVWWnNiOTdIVDU5UzFIWDROUXRBb3cwTUtydGIwK1VuSk9SeFQyOFc2U2tEU1NtNGpaWlZoYUo0V0Vpc3lsbHl2WGtBNG9BWFZmRGNWOXFLYWpiWHR4WVhpcDVaa2dJK1pmUWlqVHZDOWpaMk43YnpQTGR2ZmY4QUh4Tk0yV2YvQUF4bXBiYnhIWVhGbmUzUDc2SmJJYnBrbGpLdW94a2NlNHFyRjRuc280cDdpZTRra1JwMWpoaFdBaHdTZ08zQUozSG5PZmVnQ3N2Z21Ka2h0cm5WcjY0c0lXQlcxZHh0d09nSjlQOEFQRmRVQmdZRllrdmlpd2hTTXZEZUNXUU13Zyt6dDVnVmVyRmVvSHZXclozVUY3YVJYVnRJSklaVkRJdzdpZ0NyWTZURFphcHFGK2tqdEpmRkM2dGpDN1FRTWZuV2hSUlFBVVVVVUFGRkZGQUJSUlJRQVZoZU5iSVgvaFMranhsbzA4NWZZcnovQUNCSDQxdTB5ZUpaNEpJWCs3SXBVL1FqRkFITi9EdThOMzRUZ1ZqbHJkMmhQNEhJL1FpdWh2TGMzVm5OYmlXU0h6RUsrWkdjTXVlNFByWEQvQ2lWaGFhbGJOd1k1VWJIb1NDUC9aYTYvWHJxYXkwSyt1b0dDeXhRczZFak9DQlFCaVdmZ29XRVJpczljMUtDTW5KV04xVUUrdlN0YTcwT0c4MUhUcnllZVYyc01sRk9NTXhBK1k4ZGVCVkZQRmxqYjJzYTNmMmg3aElJNVp2S2daZ29aQTI0a0RBRlU3anhPWmZFa2NFTjAwR25SUUNlU1Q3T1dFZzVQTEg3cTdSMTlhQU56WE5GdHRidFk0cDNraWVKeEpGTkVjT2pEdURWTFRmRENXdXFwcVY1cUZ6cUYxR3BTSnBpTVJnOEhBL1A4NldIeGZwTXF5TnVuajJRbWNDU0ZsTG9PcFhQV2tQaS9UQVlzUjNqZWRueXNXem56Y1l6dEdPZXRBRUUvZzlQUHVXc2RXdmJHRzZZdExCRXcya25yajB6VitUdzlaSHcyZENpTHhXeFVMdUJCYnJrbjZrMURGNHUwZVdTSlVrbkt5T0kvTU1EaEVjOUZZa1lCcVIvRTFoRmUvWkpZN3VOeXpJclBic0ZkZ0NjS2NjOU9QV2dEVXRJRnRiU0cyUWtyRWlvQ2VwQUdLbHJrN0x4YUwyeWllUVNXc2h1MWkzZloyS09DNUFVRW5xUU9mU3RDUHhacEV0OHRxc3N2elMrU3N4aVBsTS9vRzZVQWJsRllWdjR0MG00bGhSR25BbWs4cFpHaFlKdnpnTHV4alBGUWVLTlh1cksrMCt6aHU0dFBqdUN4ZThtajNLdU9pODhaUHZRQjBsRllpNm9OSnNZQnFWLy9hRTF3NUVCdG9QbWxIc3E1emoxb2J4WHBYbFc3Uk5QTzl3R0tSUXdzOGd3Y0hLamtZTkFHM1JXWERyOWpMSGZPQk12MkdGWnBsZENDcXNtOGNldUIwcXRONG9zUE5OdkY5b2FZeHErVWdad2daY2hteDBIUE5BRzdSWEkyL2pLTmIySzNsU2E0aSt4cEswMFZzd1l1ZXB4MEM0eCtOYnFhM1pTZjJkc1ptT29BdEFBdlVCZHh6NllGQUdqV1Y0b3NocUhodS90c1pZeEZsLzNsK1lmcUsxYUNBUVFSa0hxRFFCeVB3enZQdEhoZnlHUHpXMHJJQjdINWgvTS9sWFhWNTk4TU0yOTlyTmlmK1dicmdIMkxBLzByMEdnQW9vb29BSzgxK0xGMlRjMkZpRHdxTkt3OWNuQS9rYTlLcnlUNG52dThVcVA3dHVnL1ZqL0FGb0E0K2lpaWtBVVVVVUFGRkZGQUJSUlJRQVVvQkpBQXlUVTlsWlQzMXdJWUUzTjNQWlI2bXUwMHJSYmJUbERZRWsvZVJoMCtucFRBNXV6OE9YOXlBenFzQ0gvQUo2ZGZ5cS8vd0FJaWR2L0FCL0RQL1hML3dDdlhVVVVBY05mK0g3NnpReUJSTkdPclI5UjlSV1RYcDljeDRpME5kclh0b21NY3lSZ2ZxS0FPWG9vb3BBWHRFdkRZYTFaWFlPQkZNckg2WjUvVE5lKzE4NlY5QmFiTWJqUzdTY25Ka2hSeitLZzB3SXRRMWpUdE53THk3amlZODdlclkrZzVxNjdxaUYzWUtxakpKT0FCWE0rTzdlRCt4SkxueVU4L2NpK1p0RzdHZW1meHJYMXpUNU5VMHVXempuOGt5RVpiR2VBYzRvQWloOFNhTk5jaTNqdjR6SVRnWkJBSitwR0tsMUhYTk4wdVZZcjI1OHAyWGNCc1pzajhBYXovRmR2WXdlR1pvakZHbTBCWVZBR2QyUmpGYTFqQzM5bldvdWtEVExDZ2NzTW5kZ1ovV2dDaEY0cjBPV1ZJbzc3THVRcWp5bjVKL0N0VzRtanRyZVNlVmlzY2FsbU9DY0FkZUJXQlpScHEzaVdlNktMOWwwOCtWQ0FPR2svaWI4UDhLNkdTTlpZbmpjWlJ3Vkk5UWFBR1d0ekRkMjBkeGJ2dmlrR1ZiR01qOGFZOTliUjMwVmswbUxpVlM2cHRKeUIzejBINDFqZURIYVBUcmpUNUQrOHNwM2ovRE9SK3VhTkxIMjN4YnFkNmVVdGxXMWordlZ2MUg2MEFic0Z4QmNLelFUUnloV0tzVVlOZytoeDNxU3NidzdKcDRzN3g3SVN4eExjdVpUTVI5N0F5UjdkS2pieFZZNGFSTGE5a3RsT0RjcEFUR1B4b0EzYUs1anhkcXFONGZkYmFPNGtTZEVkTG1KZjNhamVPcmRqV2xvK3FpN2dDUFozbHNJb2dUSmNSN0ZianNjMEFhdEZZVGVLckg1cEV0cjJXMlU0TnlrQk1ZL0dybDdyVm5aNld1b2xtbHQzSUNtTEJ6bjZrVUFhTlJ3WEVGekg1dHZOSE5Ibkc2Tmd3L01WbjJPdHhhaGVHRzN0YnBvY0hGeVk4Uk5qME5WTkR2ZExzL0RUWGRzSm9yS01zVDV1QzJjKzN2UUJ2MFZ6OG5pSzVndHhlWEdpM0Vka2NIemZNVXNBZWhLOVJXOUZJazBTU3hzR1J3R1VqdUQwb0F6cjd4RHBXblhKdHJ1Njh1VUFFcjViSGcvUVU2dzEzUzlSazhxMHZFa2svdWtGU2ZvQ0Jtc3UzQVB4Q3ZNZ0gvUXgxK3FVenh0REhCWjJ0OUNpcGR4WENpTmxHR1BYajlLQU9vb3FscWVxMnVtSWh1R1l2SWNSeHhydWR6N0NxOWpyOXBkM1l0SGl1TFc1WVpXSzVqMkZoN1VBYXRGWk4zckxwZnZZMkZqSmUzRWFocEFyaEZUUFFGajNxVFNkWFRVWG5oZUNTMnVyY2dTd3Z5Um5vUWU0b0EwcXIybDliWGp6cGJ5NzJnY3h5RGFSdFlkUnoxckxIaUNXZVdZMk9sejNkdEN4U1NaR0E1SFhhcDVhcXZnNlpMaWJXSjR5U2tsNHpxU01jSEpGQUhUVm5hanJ1bWFaT3NGN2MrVkl5N3dOak54a2pzRDZHdEd1YXUxVi9pRFpobEREN0dlQ1BkNkFOR3o4UjZQZXppRzN2a2FSdUFyS3k1UG9NZ1ZxVmdlTDdHMms4UDNNcGhRU3dnT2pnWUtuSTcxYmkxV0MwOFAyZDlmUzQ4eUdNazlTN0ZRY0FkelFCcVVWajIvaVN6bHVZN2VhQzdzM2xPSXpjeGJBNTlqVDlSMSt5MDIrRnBjQ1h6REY1cTdWeUc1SUNqbk9jajBvQTFhS3lCNGd0MHNmdFZ6YTNWc1drOHVPR1NMRWtod0Q4cTkrdFAwL1hMZSt1L3NodDd1Mm4ybGhIY1FsU1I2MEFhbEZaZC9ydHJaM1J0Vml1THE0QTNORmJSNzJVZXA5S2RiNjFhM1dueTNkdEhQS1lqaDRGVDk2RDZiZldnRFNvcmpmRCt0UEhlYWx1c05SbUV0MnpBSkR1OG9Fbmh1ZUNQU3V5b0F3L3dEaEx0Qi81LzhBL3dBaFAvOEFFMXAyTi9hYWpCNTFuT3N5WndTT3g5eDFGWWZnTkZidzZNcUQrOWJxUHBUZElqU1B4dHFxMmdDMndpWHpBbjNSSngvOWwrdEFHOWFYOXJlU1R4Mjh1OTdkekhJTnBHMXZUa2M5TzFGOWYydW54cEpkeStXanVJMU8wbkxIb09CN1ZpZUZQK1FscjMvWDYzODJvOGNmOGcyeS93Q3YxUDVOUUJ0WCtvMmVteENTOHVFaFU5TTlUOUFPVFROTzFhdzFNTWJLNVdYYjFHQ0NQd1BOUVNhVDUzaUZkU25kSkkwaDh1T0psenRiT2QzODZ6cm1OSS9IdGliZFFyUGJ1WjlveGtZT0NmeEFvQTFML1hkTDA2WHlydThTT1QrNkFXSStvQU9LdDJ0MWIzc0N6MjBxeXhOMFpUVkRTZEhXeGU4bW5aSjU3bVpwQysza0tlaS96cWg0V1JZOVUxeU9BQmJaYmdCQU9nYm5kajlLQU9obW1pdDRXbW1rV09OUmxtWTRBck90dkVlajNkd0xlRytScENjQUVGY24ySkdEVkR4ZUJMSnBGcy9NTTE0aXlML2VHZjhBNjlTK0xiTzJidzNjTjVLS1lWRFJrS0FWT1Iwb0ExYjYvdGRQalNTN2w4dEhjUnFkcE9XUFFjRDJxelhJZUlwWG44TGFMTklkenZMQXpIMUpRazExOUFGRCsyZFA4cTdsODhsTFJ0azVDTWRoemowNS9DcmtFMGR4QkhQQzRlT1JReXNPNE5jMzRhaVNhODhReFNLR1I3dDFZSHVDV3JPaTFHNDBiVDc3UVJ1YThTUVIyZnF5djBJK25YNm5GQUhYMlYvYTM2eU5heStZc2JtTmlGSUc0ZFJ6MS9Dck5VOUlzRTB6VElMTk1IeTErWWorSnU1L09ybEFGVFVkU3M5TGhXYTltOHFObTJnN1MzUFhzRDZWbmY4QUNYYUQvd0EvL3dENUNmOEErSnJWdTdPMnZZeEhkUVJ6SUR1Q3V1UURYRGVJYkN6dC9HV21XME50SEhCSjVXK05Wd0d6SVFjajZVQWRmcDJ1NlpxYzdRV1Z6NXNpcnZJMk12R1FPNEhxSzBhcVdtbVdGbEtaYlcwaGhjamFXUlFEajAvU3JkQUJXWGRlSTlIczV6QlBmSXNnT0NGQmJCOThBNHF6cTBydzZQZXl4bmE2UU95bjBJVTRyTjhKV2x1bmh5MllRb1dtVXRJU01sams5YUFOZU84dHBiWDdWSFBHMEdOM21iaHRBK3RRMk9xV09vdk1sbmNMTVljYjlvT0JuT09laDZIcFdINGFnaUdwYS9wK3dHMFdVWWlQM1FHM1pHUHdINVZKNGFqU0x4QnIwY1NLaUxKRUFxakFIRGRxQU5PLzEzUzlPbDhxN3ZFamsvdWdGaVBxQURpcmRyZFc5N0FzOXRLc3NUZEdVMVEwblIxc1h2SnAyU2VlNW1hUXZ0NUNub3Y4NnhkTVkyc2ZpazJueVF4RmpGdDZLd1ZzNC9TZ0RidXZFZWoyYzVnbnZrV1FIQkNndGcrK0FjVm9XOXhEZFFMUEJLc2tUY2hsT1JXTjRTdExkUERsc3doUXRNcGFRa1pMSEo2MW5hTmF1ODNpVFM3V1R5STk0RWZvbTdjRGo4aFFCc1A0bDBXTzQ4aHRRajM1eHdDVi93QytzWS9XdFZXREtHVWdnOGdqdldSSnBsblplR0pMU1dPTXBGYm5lMjBETEJlVyt1ZWFQQ1htSHd6WStibmRzT00rbTQ0L1RGQUYrKzFDMDA2RVMzazZ3b1RnRTlUOUIxTlJhZHJHbjZtV0ZsZExLeThsY0VFZmdlYWl1TkorMDY5YjZqTElyUlFSRkZpWmM0WWsvTi9uMHJNMUdPSStOTkwreGhST3F1YmpaMlRIRzc5ZjBvQTJkUjFhdzB3S2IyNVdMZDBHQ1Nmd0hOUHNOU3N0U2lNbG5jTE1xbkJ4d1I5UWVhclJhU0YxNjUxT1YxbDh4RlNOQ3ZNWUE1NTl6V2JheHhmOEozTzFpRkVTMjJMalo5M2ZuZ2ZYR1Axb0E2UjNWRUx1d1ZWR1NTY0FDc3VMeEpvMDF5TGRMK015RTRHUVFDZnFSaXBkZDArWFZOS2xzNHBoQ1pDTXNSbmdIT0tvZUtiU3loOExYQ2VUR2lSS1BMd29HMDVBR0tBTmk3dkxheGdNOTFNa1VZL2lZLzV6VmJUOWIwelVwREhaM2FTU0FaMjRLbjhpQm1xU2FWSnFBMFc1dW5Wa3RvUTBrTHJuYzVVYy9nYXIrSW9vMDEzUTNoUlZ1R3VNRXFNRXB4blA0R2dEcGF6TDN4RHBGak9ZTG05UlpCd1ZBTFkrdUFjVmR2WGFLeW5rUTRaWTJZSDNBckU4RjIwSC9DT3d6bUpUTE9YTWprWkxmTVJ5ZndvQTI3Uzd0NzJBVFdzeVN4bitKVG1xVjc0aDBpeG5NRnplb3NnNEtnRnNmWEFPS3hySC9RUEVldndXb0VjU3dpVlVIUU50QnlCOVNhdCtDN2FEL2hIWVp6RXBsbkxtUnlNbHZtSTVQNFVBYmRwZDI5N0FKcldaSll6L0FCS2MxTlhNNklpMnZqRFdMU0FCSU5xU2JCMEJJQjRING11bW9BS3cvd0RoTHRCLzUvOEEvd0FoUC84QUUxdVY1OTREMDZ5di90LzJ1MmptMmVYdDNqT003cy95RkFIWFdIaURTdFJ1UmIybDE1a3BCTzN5MkhBK29yVHFsYTZScDFsTjUxdFp4UlNZeHVVWU9LdTBBRlJ4WEVFN1NMRE5ISVkyMnVFWUhhZlEraHFTc1hScGRQU1hWbnRVbVVwY09aekpqbGhuTzNIYWdEYW9yRC80U213ZUJaYmFHN3VzamN5d1E3aWd6ajV1dzZWYUd0VzBta2pVYmFPZTVpSnhzaFRjK2M0NlVBT2oxdlRaTlNHblIzU3ZkWkkyS3BQSUJKNXhqc2U5YUZjaDRGdlUreExhL1pManpIZDNhNDh2OTJmK0JldGFzM2lhelNhU09DM3ZMdFlqaVNTM2gzb3A5elFCdFVFZ0RKNEZWTGZVN082MDQzOE13YTNWU3pOMDI0NjVGWUV6UjN1bnRyV3VOSUxMNzBGbXBJQkg4SmJIM21QNVVBZEV0OVpzK3hidUF2OEEzUklNMVlyanJ1V3l0TEF6MzNoU09DQWo5MncyRmlld2JBeXVmeHE5cHp5NlZjV0tCbi9zKy9VYklwRzNHM2syNTJnbnFEMC9DZ0RiaXZyYVcrbXNvNWMzRUFCa1RhZmxCR1J6MDcxWXJrNDcrQ3c4WmF3ODI0bGtpVkkwVXM3bmFPQUIxcmEwelc3WFVwcExkRW1ndUl4bG9aMDJPQjY0b0F2UlhFRTdTTEROSElZMjJ1RVlIYWZRK2hxU3NiUkpOUEUrcXRhcktoVzVmenpLUmpkazVJOXFqYnhWWXFESUxhOWEyQng5cEVCOHI4Ly9BSzFBRzdSWEtlTjlSWmRMK3p4UVhRMzdIRTZvUkdCbm9XN0gycmJzZFdTN1NhU1N6dTdOSVJ1WnJxTHl3UnowNTdZb0EwS0t3djhBaEtyRGh6QmVDMkp3TG93SHl2ei9BUHJWcFgrcDJtbjJZdXJpVUNOc0JOdkpjbm9BTzlBRnVxNjMxczJvTllDWE55cWVZVTJuaGM0em5wM3FoYStJYlc0dW83YVczdTdTU1gvVmk1aTJCL29hekpyMkN3OGMzVTl3eEMvWWdvQ2pKWWxsd0FPNW9BNnFpc3ZUOWR0YjY4YXo4bTR0cmdMdUVkeEhzTEQxRmFsQUJSV0xMNG1zMW1rU0Mydkx0WXpoNUxlSGVpbjYxY2oxZXdrMHYrMGhjS0xVREpjOXZiSHI3VUFYcUt3MDhVMk81RE5iM2x2QzV3azgwSldOdnhyY0JCR1J5S0FDaXFGdnFhVDZ4ZDZhSTJEMnlxeGNuZzVBUDlhVjlUaVRXbzlMTWIrYThQbkJ1TnVNa1kvU2dDYTN2cmE1dWJpM2hsM1MyNUFsWGFSdEp6anIxNkhwVml1YzBBaGZFZmlFa2dBU1Jray9ScTFOSzFSTlZFMGtFTHJibyt4Slc2U1k2a0Qwb0F2MURlWGNGamF2YzNMN0lVeHViQk9PY2RCelUxVk5WdHZ0ZWxYVnZqSmtpWlI5Y2NmclFCSlozdHZmV2kzVnRLSGhiT0d3UjBPRDErbFY5TzFuVHRVZVJMSzQ4MW93Q3cyTXVQekFybGZEbW8rUjRIMUhuRFFiZ3Z0dUF4K3BOVS9CWG1XUGlHS0tUZ1hkdVN2dVB2RC9BTkJOQUhjRFZiRTZvZE5FK2JzREpqMnR4eG5yakhUM3E3WEhlR0I5dDhYYXZmbmxVSlJUOVd3UDBXdXhvQUtyMkY5YmFqYkM0dEpmTWlKSURiU09SOWFzVnhuaFhXTGV3OFB4eGVUY1hNMjltTWR2R1haVnoxUHBRQjJMdWtjYlNTTXFJb0pabU9BQU81TkVVc2MwYXlSU0xKR3d5cktjZy9RMW1uVXJEVS9EOTFkS3p2YmVVNGxVRERnQlRrWTljVTJ5dnRQc1BEbHZkS3p4V2FvTmdrNWYySEhVMEFhMUZaRnI0aHRyaTdpdG50TDIya2xPSS9QZ0toL3AxckYxUFdIWHhiWXNMSFVOc0lrUXhpTG1YZ2pLalB6RHZtZ0RzYUt6bjFtMmgwc1g5MGsxcWpIYUk1a3hJVG5wdDk4VkZhZUliUzV1MHRaSUxxMGxrLzFZdVl0bS93Q2xBR3RSV2RxV3RXdW5USmJzczA5dzR5c01DYjNJOWNVdW02eGE2bEpKRkdzc1U4Zkx3ekpzZFI2NG9Bc1dGOWJhamJDNHRKZk1pSklEYlNPUjlhc1Z4bmhYV0xldzBDT0h5Ymk1bjNzeGl0NDk3QVo2bjBycU5NMUsyMVMxKzBXckVxQ1ZaV0dHVStoRkFGdWlvYnk3Z3NiVjdtNWtFY1NESlkxbFJlSjdKcEl4TmIzbHRIS2NKTlBEdFJ2VEJvQTI2S3BhbnF0cnBpSWJobUx5SEVjY2E3bmMrd3F2WTYvYVhkMkxSNHJpMXVXR1ZpdVk5aFllMUFHclJSVkRSZFRUVjlQRjNIRzBhbGl1MWprOFVBWEo1bzdlQ1NlVnRzY2FsMk9NNEFHVFRiVzVodTdhTzRnZmZGSU1xMkNNajhheUx2VTR0UTBmWEk0NDNVMnFUUXNXeHlRcDVGUjZacU1HbCtEck82bkpJRVFDcU9yc2VnRkFIUVVWRmJTUE5iUnl5UW1GMkdUR3h5VjlqVXRBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBR0g0MTNmOEFDSTZsczYrWCttUm45S3JmRHpiL0FNSWJaYmV1Wk4zMTN0L1RGYVBpaUV6K0dOU2pBeWZzN2tmZ00vMHJHK0djd2w4S0JNLzZxZDAvazM5YUFPdG9vb29BcTZuWVFhcHAwOWpjRE1VeTdUNmowSTl3ZWE4S3Y3UzUwZlZaYmFRbExpM2s0WmVPUnlHSDZFVjcvWEMvRXZRZnRWa3VyMjZabHR4dG1BL2lUMS9BL29mYWdEby9DK3NwcnVpUTNlUUpoOGt5anM0Ni9uMS9HdGV2SFBBT3UvMlJyYXd6UGkxdThSdm5vcmZ3dCtmSDBOZXgwQWVSZkUyTjA4VmJtR0E4Q0ZmY2NqK2xkRDhMZFF0RHBrK25id3QwSlRMdFBWMUlBeVBYR0syUEduaG9lSUxCV2dJVzlneVl5ZWpBOVZQK05lUU9sM3B0OFZZUzIxMUMzdXJLYUFQb09pdlBmQzN4QkVqSlo2MlFySDVWdWdNQS93QytPMzFIL3dCZXZRZ1FSa0hJTkFHTDR0MXBkQzBPVzVVajdRLzd1RWY3UjcvaDEvQ3ZHOU1zYmpXTlZoczRpV21uZmxqemp1V1AwR1RXdjQ2MTMrMnRjWlluM1d0dG1PTEhSdjd6ZmlmMEFyci9BSWE2RDlqc0cxYTRURTF5TVJaL2hqOWZ4L2tCUUIyR24yVU9uV0VGbGJydGloVUt2K1AxUFdyRkZGQUJYTWZFWC9rVDdyL2ZqLzhBUWhYVDF5SHhPbkVYaGNSNTVsblJjZlFFL3dCS0FOWHdiL3lLZW0vOWNSL00xclR3UTNNZmx6d3BLbVFkcnFHR1J5RGcxUjhOd21EdzNwc1pHQ0xhUEk5eW9KcUh4VlozdC9vRTl0WWN5c1Z5bTdhWFVISlVIdGtVQWE3b2trYlJ5S0hSZ1F5c01najBOVW4wYlNwSFJuMDIwWXhwc1hNS25hdm9PT2xjamI2aHB1aDJ0NUxwdWl5V0dwUVJxOHR2Y2JqdmkzQUVxYzRPTTlhME5hOFYzRmxkM1NXbHZGTEJBa0lhWmd4VkdrNUROaitFS093enlLQU9sV3hzMFNWRnRJRldaUWtnRVl3NmdZQVBxTWNmU29aTkgwdVdRU1M2YmFPNFFKbG9WUHlnWUE2ZE1WeWx4cSt0WFY5bzMyYTgwMlFUU3lBRzJrazh0aUU2T1B4emluLzhKck9MN3BZL1oxdVJiTkY1aDg5dVFDNmpwdHoyNjBBWHRiOExTYXZleU0wbGxGYlNiUVdGcURNQU1jQjg5OEhuc09LMjV0SjAyNHV4ZHpXRnRKY0RHSkdpQmJqcHpYTHcrS2RiZTB0TDAyVmkwRjNjL1k0bEVqcS9tRWtBbmdqYng5YWRkK0s5VHNFdWJhN3RiUmJ1QzRTRjVnWE1DcTY3Z3g2dFFCMVlzYk1ScEdMU0FJa25tcXZsakN2bk80RHNjODVwczJuV00vbitiWndQNStQTjNSZytaanB1OWNkdlNvOUh1cGIzVFk3aVdhMW1aaWZudFdKakl6Mnp6bjFxN1FCVXR0TDA2MDh2N1BZMjhSakpaQ2tRQlVrWUpCOVNPS0p0TDA2NGphT2F4dHBFYVR6V1ZvbElaLzd4NDVQdlZ1aWdCRlZVUUlpaFZVWUFBd0FLV2lpZ0Fvb29vQUtLS0tBQ2c0d2M5TythS3E2cE1MZlNyeWM5STRYZjhsSm9BNG40VForeWFsMXh2VEg1R3V3OFFXMDE1b0Y5YTI2YjVwWVdSRnlCa2tlcHJsL2hWQ1YwTzdtUDhkeHRINEtQOGE3Szl1WTdLeW51NVF4amdqYVJndlhDakp4K1ZBR0RjNlhldVBEVzJIUDJKbE0vekQ1TUpqMTU1OU0xczZuTmN3MmhhMXNQdHprN1RENWlwa2R6bHVLb1cvaWZUcmp3N0pyaSthTGFQSVpDQnZCQnhqR2NaT1JqbnVLdjZWcU1PcmFiRGYyNnVzVXdKVVNBQmhna2M0SjlLQU9HdWZET3E2akplWHNHbVI2VXBXTXgyY2M0SG11clozRXJ3cHhrZHVmenF5bWhhaFBOYVhQOWwzVU15YWhieXl0YzN5enNZMDNaT2M5QmtlNXowcnU2S0FPUThSYUZxTjNyTW4yS01HeTFGSW83MTk0VXBzY0hQWEorWGppb3BkRjFTMjFkOVV0ckpadkp2M2xTRHpGWHpJMmpDNUI2QWpIUTRydEtLQU9JMU93MXU4MVdIVi83TXVZeTBCdDN0N2UvRWNpNGJJYmNPQ0RucFhVYUZhQ3gwYTJ0aGJtMjJML3Ftazh3cGtrNDNkK3RYNktBQ2lpcTk3ZTI5aEVrbHc1VlhrV05jQW5MTWNBVUFXS0tLS0FDaWlpZ0Fvb29vQUtLS1pQS3NFRWt6L2RqVXNmb0JtZ0RnL2hodCsyNjdzKzc1a2VQcG1TdXY4UVcwMTVvRjlhMjZiNXBZV1JGeUJra2VwcmtmaFRHeHROVHVXNU1rcUtUNmtBbi93Qm1ydUwyNlN5c2JpN2xER09DTnBXQzlTRkdUajhxQU9iMC9SNytHSFdGa3Q4RzRzSUlZdm5VN25XSmxZZGVPU090Vms4TzZoTmFUVzd4aUl5YVJEYWhtWUVDVmVxbkIvV3RtTHhQcDB2aHg5ZEhtaTJUSVpDQnZCempHTTR5ZU8vZXREUzlRaDFUVG9MNjNEaUtaZHlod0FSempuRkFISGFocFd1YTBrUG02U3RtYkt6bWlRZWVqZWM3cHRBR09nNzgxdHBwdDROUThPU21INUxPM2tTYzdoOGpGRkFIWG5rSHBYUVVVQWNXK2hhbWRDdUxZVzM3NTlWTnlxNzE1ajNBN3M1OU8zV3FwMGJYN25VcldTOHRacFpJTlNTWnB6ZGd4bUlObjVZeWVNRDhmenJ2cUtBT0dYU2RiTmhEcHo2YUFrR3BDNVdZVG9RNmJ5U2NaeU1acHNHaTYwTk10UER6NmNndDdlNkVwdnZPVWdvSExaQzljODRydTZLQU9MaDBMVTE4TWFkWm0yeFBEcUluZE42OEp2WTV6bkhROU90Yit1elhheHJGRG9ZMVNKd2Q2dEtpZ0h0a04xclZxdmZYMXZZUkpKY01WVjVGaVhBSitaamdVQWNFbmhmVjdkWUw1TFIwMjNFMG4ySzF1dGp4UnVBQUZmcHhnNUE2MWUwL1ROVTBmVUk5VHRkRmVUellHaGx0M3UxYVJXTDdnNWM4SFBmMHJ0NktBT0x1YkxYVGM2MUlta0IvN1l0VVEvNlFnRURDTW9RVDM2OXF1NlJwTjliTnFobWcyK2ZaVzhVZnpxZHpMRVZZZGV4TmRQUlFCeHVrYVZxMm1hcHA4cmFjSm9XMCtPMW4vZW9QS0libmpQemNlbFJlRTdHNFR4RlBiejRNR2pvOEVCem5QbU1XQi83NXdNVjI5UlFXMEZ1MHJReEpHWlhNamxSamN4N24zb0Fsb29vSkFCSk9BT3BOQUhuM2dIL2tidGYvQU45di9SaHIwR3ZQdmhqbTR2dFp2aVA5WTY0SjY4bGlmNlY2RFFBVVVVVUFGZVFmRXY4QTVHeC8rdUtmMXIxK3ZJUGlYL3lOai84QVhGUDYwQWNuUlJSU0FLS0tLQUNpaWlnQXF6WVdVMS9kTEJDT1QxUFpSNm1vSTBlV1JZMFVzN0hBQTdtdTkwYlRFMDIwQ2NHWitaRzkvVDZDbUJOcDloQnA5c0lZUjdzeDZzZldyVkZaMnFheGJhYW1ITytZamlOVHorUHBRQmZkMWpRdTdCVkhKSk9BS3c3L0FNVDIwQktXcUdkLzczUmYvcjF6ZW82cGRhaStabndnNlJyd29xbFFCcDNPdmFsY0UvdnpFdjhBZGorWDlldFo4a3NraHpKSXpuMVk1cGxGSUFvb29vQUs5NjhQYytHOUwvNjlJdjhBMEFWNExYdlhoMy9rVzlML0FPdlNMLzBBVXdNN3gzL3lMY24vQUYwVCtkYnR4Y3dXcW8wOHFSQjJDS1dPTXNlZ3JQOEFFdW1UNnRwRFdsdTBheUYxYk1oSUhIMEJxWFc5TFhWckEyNWtNVHF3a2prSDhMRG9hQU1yWFBEMW5EYjNXcTJZZUMraTNYSWtERWdzUG1QQjQ5YTBiZlZESjRaR3FPQUgrem1RanRrRC9FVlFtMC94SGZXNXNieThza3RuRzJTV0pXOHhoM0dEeHpXamY2YVpQRDhtbVdlMVAzUWlUZVRnRDN4UUJXOEh3ZVI0Y3QyYmw1dDBySDFKUCtHSzI2cmFiYk5aNlphMnpsUzhVU294WG9TQmc0cXpRQnpEVExwSGk2OWQrSWJxMTgvL0FJRWc1L1FFL2pWendqQTBXaHBQSVAzdDA3VHY3bGp4K2dGUitLdENuMW1PM05yTEhITkVXQkxraktzT2VnUCtjMXVRUkxCQkhDZ3drYWhWSHNCaWdEakxBa2VEOWVJT1A5SmxINkxYVGFMR2g4TzJNWlViR3RreVBYS2pOVk5LME43ZlM3K3h2R1JsdXBwSC9kazhLd0E3anJ4VmVMVGZFVnRaalQ0TDJ5YTJWZGlTdWplWXE5QngwNlVBTjhSV3R2WmVCN2kydE9ZRTI3Zm0zZFpBZXYxTlc5WkpIZytjZzQvMFlEOUJUcGRCalBoZzZMRktWR3dBU0VmeGJ0MmNmV2tzZFAxT1N4bHN0WG10cElHaThwZklCejB4a2tqclFCWjBORS80Uit3VGFOclcwZVJqZzVVWnJpeVNmaHNBVG5GeGdmOEFmVmRGRHAzaUsxdEJZVzk5Wm0yVmRpVE9qZWFxOXVCeHhTMy9BSWNadkM2YVJaU0p1Vmd4ZVVrQmpuSlBBTkFIUUlpeHhxaUtGVlFBQU9nRmNqNGRlMGk4Q3lTWDhZa3RsWmk2RVozY2pBL1BGZGZYUDZmNGVrVHd0TG85NUltNlFrNzQ4a0RuSVBJSGNVQVU5WHVOYXVmRGx4TTlyWndXanhaMkYyTWdYdDJ4bXQ3US93RGtBNmYvQU5lMGYvb0lySWwwZlhMdlNuMDY2dmJVUXJIdFF4cXdhUWdmTHVKNkRPTTRGYm1tMjcybW1XdHRLVkx3eExHeFhvU0FCeFFCek54YjNkejQ3dWtzNzQyY2d0UVRJSXcrUmxlTUg4UHlvMDIya3VmRWtscnJkMUpjWEZwaVMzVWdMRzYvM3NEdjAveUsyWWRMbmo4VlQ2b1hqOGlTM0VRVUU3czVYMnhqajFwTmMwcWU4bXRiMnhraml2Ylo4cXprZ012ZFRqL1BYMW9BcVhQemZFQzBEY2hiSXN2c2R6RE5KNHBBR282RTQ0WVhxcm4ySkdhdDZycE54YzNsdHFObE9rRjlBcFg1eHVSMVBZL21haGowclVyM1ViYTcxaWUySzJwM1JRMndiYVc5U1R6Mm9BUjd1VTYxZVcyaldVRFhDaFRkVHpNUXVjZktPT1NjWnF0b1Aybi9BSVM3VnZ0Z2lFL2x4N3ZKSks5QmpHZWVtS3RUYVRxVnJyRnhmNlZjVzRXNkE4Mk80REVBanVNZmorZFAwalI3cXgxbTd2Ymk1U2NYQ0tDM1J0dzY4ZEFQVG1nQ0R3Si95TGFmOWRIL0FKMG5oTUJield3b0FBdlhBQStwb3M5SDFqVFBOdGRQdkxWYkozTEswcUV5UjU5QjBQNDFZMFhSNTlLaTFGUE9WdlBjdkc1WWtqanF4eDFvQTI2NXU2LzVLRlovOWVSL205YUhocVM1bDBDMGt1NUdrbWNGaTdkU0N4eCttS3A2dHBXcXk2L0RxbW15V3FtT0R5c1RsdlZzOEFlOUFGcnhYeDRhdnY4QWMvcUt4Wmh1azhIbzNLK1dDUWZVSW1LdDNHa2E1cXFyYjZyZTJxV200RjB0bE9YeDJ5UldocStqQzlndFRheWkydUxSZzBENHlCN0VlbkFvQW8rT3dQOEFoSGkvOFNTb1ZQb2FTNlJYK0lWb1dVSGJaRmhuc2R6ZjQwK2JTZFgxVm9ZdFh1TFJiV053NWp0bGJNaEhUSlBUOEt1UzZaTy9paUhWQTBma0piZVNWeWQyY2srbU1jK3RBQ2E3cHR6ZVNXbDNZeVJwZDJqRmtFZytWZ1J5RCtWUjJPdFROZng2ZnFka2JTNmNFeHNHREpKanJnLzBxenFscnFVc2tVK25YcXd2R0NERkt1WTN6NjQ1RlZiZlM5UXVkVGd2OVhudDJhMkRlVEZicVFvSjZrazgwQVpPajNXb3hhcnJUV21tQzgzWGJCbk02eGtZSndPUnpXbG9kcnFDYTNxTjlkMll0RXVRbUVFaXZ5QmpxUHovQUJvbDByVkxIVXJtNzBlZTJLWFRiNUlia0hBYjFCRmFXbVI2a2l5TnFVOEVqc1J0U0ZDRlFmVThtZ0RLOEsvOGYydWY5ZnovQU16WFJWejBPa2F2WTZyZFMyTjFiZlpicWJ6WEVxbmNwSnljWSt0ZERRQnd2aFRRbzlSMGJ6MnY3NkVtUmwyUXk3Vi9MRmFlaUsyaWE0K2hNVmxpbGo4K0tYYmgrcHlHOWVoNTlxajBuU3ZFdWsyZjJXMmwweG85eGJMbVFuSi9DdEhTdEh1WXRTazFUVXJsSjd4MTJLSXhoRVgwRkFHSHBPaFdHcjZyclQzaU96UjNqaGRyRWRXTk04U2VIdE8wbTJ0TGkwamRaR3VrUWxuSjR3VC9BRUZkSG9tbHo2ZmQ2bkxNOGJMZFhCbFRZU1NBU1R6eDE1bzhSNlhQcXRwYnhXN3hxMGR3c3Aza2dZQUk3QTg4MEFhRjVkUTJOcEpkWERiWW94bGpXTDRjdFpyaTR1TmN2RTJ6WGZFU0grQ0x0K2ZIK1RSNGwwblU5Vm10aGF5V3d0b2p2YU9ZdDg3NTdnRGtZL21hbXM0L0VpM1VmMnVYVGpiZy9PSWcrN0h0a1VBVGEvcWgwMnlDd3I1bDVPZkx0NHh5U3g3L0FFRk8wRFRQN0swdElHYmRNeEx5dC9lYzlmOEFEOEt5YnJTTmVmWDVOVGhtc0d3Q2tJbUxueTErZ0hYL0FCTmErbHJyS3lTZjJvOW15WStUN1B1em4zeUtBSS9FTmhGZldrV2JwYldlS1VQQkt4R0E0NkNzZnhCYmExTG9OeTJwWFZzc1VTN3Rsc3AvZUhJeHVKL1BBcmMxelN4cTFoOW44MHhTSTRramNETzFoMC9tYXpMblRQRUdwd2ZZcis4czQ3VWtlWThDdHZjRG52d0tBTS94QWdrOEdhR2pmZFo0QWY4QXYyYTAvd0RoQzlFLzU0eS85L0RVK3U2TkpmYWJaMmxtWTQxdDVrY0J5UU5xZ2pIQVBQSXJhb0E1ZndaREhiWE9zd1JnaU9LNktMazlnU0JXWnFFbHplWDAzaVczQWFDeGxXT05jZjZ4QVR1UDVuOWZhdGlQUmRTdDdmV1Z0NWJkWmI2Wm5qWXMzeXFTYzU0NjRQYXRpeTArQzAwdVBUd29hSlk5akEveFo2NSt2TkFFOXZQSGMyOGM4TGJvNUZES2ZZMUpXVjRmMDY2MHExbHM1cFVrZ1dRbUFnbmNGUFk4ZjV6V3JRQVZ3L2lmL2tlOUkvN1kvd0RvMDEzRmM1ck9nM2QvNGxzZFNpa2hXRzM4dmNyRTdqdGNzY2NlaG9BNk9paWlnQ2pybi9JQjFEL3Iyay85Qk5WL0N2OEF5TFZqL3dCYy93Q3ByVG1pU2FGNHBCdVIxS3NQVUhnMXp0dnB2aURTb2ZzZW5YTm5OYWdueXpjQmc4WVAwNjBBTDRiL0FPUmk4US85ZFUvOW1wM2gvd0Q1R1R4Qi93QmRJLzVOVjdROUpPbVJUUE5ONTkxY1A1azBtTUFuMEh0eWFUUzlNbnM5WDFTN2thTXgzYm95QlNjakdjNTQ5NkFGMS9WRHB0a0ZoWHpMeWMrWGJ4amtsajMrZ3FtbW1mMlY0T3ZZR2JkTTF2SzhyZjNuS25QK0g0Vlh1dEkxNTlmazFPR2F3YkFLUWlZdWZMWDZBZGY4VFdwWXdhdEtzOFdzTlp5UXlKdEFnM1o1NjV5UFNnQnZoWC9rV3JIL0FLNS8xTlVmRGY4QXlNWGlIL3Jxbi9zMUpiNmI0ZzBxSDdIcDF6WnpXb0o4czNBWVBHRDlPdFh0SjBtYlRMTzZZVHJOcUZ5VEk4cmpDbCtjZmhrMEFVL0VNMG1wM1VlZ1diSGRKaDdxUWY4QUxPUDArcC93OWE2Q0NHTzNnamhpWGJIR29WUjZBVnl1bmFQNGwwNHpORlBwcnlUdnZra2tMbG1QMXhYUjZjTDRXb0dvdEMxeGs1TU9kdU8zV2dCTHNXVi81dW1UdXJzeWJuaURZYmJrYzhjOWNWejhscEg0YTF5d05nV1cydnBQSmxoWTdzSGpCQjY5NjB0VTBxN2sxS1BWTk11STRydFU4cGxsQktTTG5QT09hanR0SzFDNzFLQy8xbWFCamI1TU1OdURzQlBjazgwQVhyeURUdFpTV3huS3plU3dMeHE1QlU4NHpqOGF4ckNJYUQ0bmkwdTJaaloza1prQ055VVlaNkgwd0t0M2VsYWpiNnJOcU9rVHdLOXdBSm9iZ0hZeEhRZ2ptcE5OMG02R3BOcW1xVHh5M2V6eTQwaUJDUnI3WjVKb0EyYTVuVWlmRUd0SnBjWE5sYU1KTHArek4yVC9BRDcrbGJ1cEpkeTZmTkhZeUpIY3N1RWQ4NFgzNDlxNTNUTks4UzZYYUMzdHBOTEM1TEZtM2xtSjdrNG9BNm1SMGhpYVIyQ0lneVNlQUFLNTNSa2ZXZFpmWFpWSzIwWU1WbXJkU083ZnoveUtrMXpUZFoxVFNJTFJaN1ZKRHpjOHNGYkhRRGpPUC9yVVcxdjRuaDhxUGZwU3dKaGRxQitGSFljZWxBR3hxUDhBeURici9yay84aldYNEwvNUZXeS80SC82RzFiYktIVXF3eXBHQ1BXdWJ0dEwxM1IxYTIwdTR0SnJNc1NpM0liZEhuNlVBUUQvQUpHcnhGLzE2RC8wQmEwUEJmOEF5S3RsL3dBRC93RFEycVRSdEdlemE2dWI2WVhGM2QvNjFnTUtCNkQycWxiYVhydWpxMXRwZHhhVFdaWWxGdVEyNlBQMG9BWFRmK1I4MWovcmxILzZDdGRKV1RvbWtTMk10emQzazRudmJrZ3lPb3dvQTZBZjU5SzFxQUN2TVBDdWdRNjU5cTg2ZVNMeWRtTmdIT2MrdjByMCt1RnNQQ3ZpUFR2TSt4NmhhdytaamR0ZHVjWngvRDdtZ0RwdEIwU0hSSUpZb1pubEVqQmlYQTQ0clVybjlHMC94RGIzNGsxTFVZcDdmYVJzVmlUbnQvQ0s2Q2dBcmx0Qy93Q1prLzYrcGY2MTFOWTJtNlRjV245cmVZOForMlRQSkh0SjRCempQSHZRQkY0SmpSUEM5cXlxQVhMc3hIYzd5UDVBVkg0SzRzTDhEb0w2VCtTMW8rSDdDWFRORnQ3S2RrYVNQZGtvU1J5eFBjRDFxUHc5cGsrbDIxMUhPMGJHVzVlWmRoSjRJSFhJSFBGQUdaNFFKWHdlNUJ3UjVoQnEzNEtVRHd0YUVBQWt1VDcvQUR0VS9oelM1ZEwwY1dWMDBidHVZbllTUVFmcUJWTzIwclc5S2phMTB5NnRIdE54S0M1VnQ4ZWVjREhCb0F4blpvdEM4VUxId0JlRlFCMEFMZ0g5SzJmRWFvNzZKWUpqWTkwalk5VlVmNEdyTm5vRWNPajNWalBNWlpMc3M4MHVNWlk5d1Bhc1c0T1VzN1RWYnA5TzFDeEpFRjNzM1J5RHBuUFRvQmtHZ0RTOGF1RzBhTzBCRys1blNOUitPZjZWTHJPMlhVdEgwK0w3NlRpNElIOEtJRDErdWNWbVh0blkzZmtYTS9pZUZycUZ3NG1KVEF4MENxRGdmcm10M1I3RzBnak4zRE05MUxjQUZybVJ0ek9PMzBIdFFCbWFkR2plUE5Ya0tnc3NVWVUrbVZYUDhxZlB4OFFiZkhHYkU1OS9tYWxsMHpWTGJ4RGVhdlptQ1ZaUWkrUXpGUzRDZ0huR0FjampyVXVuV045Y2E0K3I2akVsdXl4ZVRGQWo3eUJuSkpQNS9uUUJVOFB3TGRQNGl0bkpDeTNVcUVqcUFjaWlHNTFidzdackRlMmFYZGhDTm9uZ09HVmZkVFZ5dzBlNnRsMVlHNUVUWGs3eVJ5UmNzZ09jWnlPdFF5MkhpTzV0bnNiaStzdnM3cnNlWlkyODFsUEI0NmRLQUl2R2MwZHo0VDgrRnQwY2pJeW4xQnE1NHhaazhMWHBVa0hDRDhDNmcwN1ZORFM3OFBEU3JlVHl4R3FpTm01Kzc2L1drVFR0UnZ0TnVyUFdwcmR4S29WRGJnL0xqbkp6M3pqOHFBS0R5NnpjNkdiRk5BUVJ5Vy9scTMydE9CdHdEakg0MVhuZ210N253cGEzSzRlTXNHWElPQ0F1UHlxL0JhK0tMZUZMUkxyVDJpUUJWbVpXMzRIVGpwbXJlcmFUTmZ3V2p4M1FqdnJWZzhjMnpndDN5UFE0b0F0NmhaV3Q0SVB0WC9MS1ZaSXp1eDh3NmY4QTZxeG9vMGY0aFRNeWdsTE1NcFBZNUF6K1JOU25TOVgxRzZ0bTFhNHRCQmJTQ1VSMnl0ODdEcGt0MHExRnBrNmVLSnRVTFIrUTl0NUlYSjNaeUQ2WXh4NjBBVXRUL3dDUjQwWTkvTGwvOUJhdHk4Sld6bklPQ0kySVA0VlF2Tk1ubjhSNmZxS05HSWJaSFZ3U2R4eUNCamozcVNDMHZSckY3TlBPSHNwa1ZZb2R4TzNnQThZd004MEFVL0JTZ2VGclFnQUVseWZmNTJyUDhTMlZyWjZWQkRhajkzTnFTdEl1N0lKSU9SK2c0cTNhNlZyZWxSdGFhWmRXYjJtNGxQdEN0dmpCNXdNY0duLzhJeWphRTloSmNzWjNsTndad09rbnJqMDdVQVdmRktxM2h1K0RBRUNQUDVFVlowVWx0RHNHSnlUYnhrbi9BSUNLeWJqVE5mMUczK3czMTVacGF0Z1NQQ3JlWTRCejM0SDRWb1hOamRpNjB6N0ZPSXJTMnlKWXl4RzljQUtPbk9NSHJRQlEwei9rZU5aLzY1eGYrZ3JSUC95VUcyLzY4VC82RTFTM21sYWpGclVtcDZWUGJoNTBDU3gzQU8wNDRCR1BvS1MwMFc5aThRUjZwYzNTVHNZaWtuVVlQWUtQUUQzb0E1KzVoMUc3MWJ4RGFXSXdqa1BLL2NoUWNJUDk3UDZWMW5oMjVodXRDdEpJRVZGQ0JTaTlGSTRJcG1sNlpQWjZ2cWwzSTBaanUzUmtDazVHTTV6eDcwbWphWFBwbDVmS0hqTmxOSjVzU0FuY2hQVVl4akgrRkFHdFJSUlFCNVJleVBZUzZ0cEtBNG11RkFIc3JFaitZcmU4VEovWW1wYUxleHJrUXhpSTQ3aGYvck1hdjZqNFhudS9GTWVwckpDTGZlanVqRTdqdHhuakdPY2V0WC9GV2l6YTFZUlEyN3hwTEhKdUJrSkF4Z2dqZ0gyb0FvL0QrM0thUE5jdDk2ZVk4K29BeC9QTmRUVkhSTEE2WnBGdFpzVkx4cjh4WG9TVGs0L0UxZW9BSzVyd0ZHaWVIZzZxQXp5c1dQcjJycGE1ZlNMRFhOQXNmczhVTnZmSzVMYlZsMmVXMzFJNUdNZmptZ0N2WWNhZDRzQTRBbG53UHdhck50cGo2cDRPMDZPR1VSVFJiSm8yWVpHNFp4bjI1cXpZYUxjeGFKcVVVN3htOXY4QXpHZkdkaXN3SUErbk5TUjZYcU1PaDJWcmJYeTI5emJBWklHNUg5amtaeFFCSEJyVjVhM1VGcnJWaUlHbGJaSGNSTnVqWnZUMUZSNm4vd0FqeG8zL0FGemwvd0RRV3A1MHJWZFJ1TGM2dmNXb2d0NUJLSXJaVytkaDB5Vy9wVXV0NlZlM04vWjZocDA4VWR6YkJnQk1EdElJeDIvR2dDbDRya21UV05ERU1QbnQ1cnNJaXdVTXcyNDVQU202cEhyZXF0WnEyanJiK1JjSk41bjJsSElBNmpISCtSVjYrMGk5djdLMGtsdVlvOVR0WE1pU29wMlp6MHg2WXgrVk90WS9FYjNFZjJ5ZXdqaFU1ZnlVWm1jZW5QVDYwQVZ0TitieHpxNVBKV0tNRDJHMVRXdWJLMS90VVgzUzY4cnkvdmRWem5wOWU5Wjk5cFY2bXJOcW1sVHdwUElnU1dPY0VvNEhRNUhJUEFwK202WGVMcWttcWFuUEZKY3RINVNKQ0NFUmM1NzhubWdDbDRDalJQRHdkVkFaNVdMSDF4eFQvQ3ZGN3JnN2Zibi9BSm1ydmhyVEo5SjBoYlM0YU5wQTdObU1ram42Z1V6UzlMdWJGdFZacEk5MTNPOHNSVW41YzV4bmpyelFCVjhhODZmWktlVmE5akREMUdHclkxSzB0cjZ4a3Q3d2Z1R3h1K2JHTUhJNXJOYlJMbTg4T1JXR29YZTY4Umk0blVsc051SkI1eG5nNHFDNTB2WGRUZ0ZscVYzWnJhRWd5TkFyZVpJQWM0T2VCMDdVQUU2ZytQck5UeXFXUks1NXdjc00vbFI0cEFHbzZFNDRZWHFybjJKR2F0NnJwRTA5NWJhaHA4NlFYbHVwUmQ0eWpyNkg4elVNZWxhbGU2amJYZXNUMnhXMU82S0cyRGJTM3FTZWUxQUc5WE8rQlA4QWtXNC8rdWovQU02MHJhMnZvOWF2TGlXNERXY2lxSVl0eE93Z0RQR01Ebk5aZGxvK3M2WUpMT3d2TFZiSjNMSzBpRXlSNTlCMFA0MEFVN0gvQUpCL2kzL3JyUDhBeWFzeXllN2loMFhVNzZOZjdPaGtFS0lmNGY4QXBvZngva0s2S3cwQ2V6MDdWN1h6a2MzbS93QXBtWWs4cVJsampyejJ6VmhkRmFUd3F1a1hESVpCRnMzTGtnTU9RZnp4UUJzMFZWMHVLNWcwMjNodkdSNTQwQ3N5RWtISEFQSUhiRldxQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUd5eHJMRThiakt1Q3AraHJnUGhwSzFscUdyYU5NZjNrVDdnUGRTVmIvMld2UWE4NTE0bnczOFJMWFZjYmJXOC93QlllM1B5ditYRFVBZWpVVUE1R1JSUUFVMlNOSlkyamtVTWpncXlub1Flb3AxRkFIaG5pblJYMExXNWJUQk1MZlBDeDdvZW40anArRmVtK0E5ZC90blExam1mTjFhNGprejFZZnd0K0kvVUduZU9kQi90clJHYUpNM2R0bVNMQTVZZDEvSCtZRmVZK0ZkYWJRdGNpdWlUNUxmdTVsOVVQWDh1djRVQWU1Vms2OTRkMDdYcmZaZHhZbFVZU1pPSFQ4ZTQ5aldxanJKR3Jvd1pHQUlJNkVVdEFIaFhpTFFMdncvcUgyYTR3Nk1OMFVxamh4L1Erb3JYc2ZHZHhhK0VMalNpekc1NGpnay91eG5PZWZib1BxUFN1cStLY2NiZUhZSkd4NWlYSUNINnEyUituNlY1UlFCdGVFOUViWGRiaXRpRDluVDk1TXc3S08zMVBTdmNFUlkwVkVVS3FqQUFHQUJYTytDTkIvc1RSRjgxY1hkeGlTYjFYMFg4UDVrMTBkQUJSUlJRQVY1NzhTWkd2dFcwalJZajgwamJpQi90RUt2OG1yMElrQUVrNEE2azE1ejRjSjhTZkVHNzFnZ20ydGMrV2UzOTFQMHkzMW9BOUZSRmpSVVFZVlJnRDBGVjlRZ3ViaTFhTzB2RGFTa2dpVUlIeCtCNHF6UlFCejl2NGEvMGk2dXRVMUNiVUpwcmRyZkxSaEFzWjZnS085VVBDMmk2aEI0Yk8yN2xzcnk0bTNzOHNJWi9MVWJWVXEzVGdaL0d1dm9vQTVZZURSR3NVc09weXhYeVhEWEJ1RmlYQkxBQWpaMEE0L25WaTM4TlQyZDgwdHJxMGtkdkpONThrQmdSc3QxYkRIa0ErZ3JvYUtBT2ZpOExwRnB1bjJYMnRpTE85RjRHMmZlSUpPM3J4MTYxTGNhSGRHK3ZydXoxVnJWN3hrTGp5RmtHRlRiajV2enJib29BenREMG1QUnJBMjBjalNscEdsZHlBdTVqMTRIQStsYU5GRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVnpuais5Rm40U3VobkR6a1FyNzVQUDZBMTBkZWQrT3BtMXZ4UHAzaDYzYmhXQmxJN0Z2OEY1L0dnRHBQQXRtYkx3bFpLd3c4cW1ZL3dEQWprZnBpcm5paGl2aGZWQ092MmFRZm1wRmFVVWFSUkpGR05xSUFxajBBcFhWWFVvNmhsSXdRUmtHZ0RnTExSYjAzbGhZeDI3ZjJUZEMzdlpXQStWV1JPVVArOFFwckpnbXNwZEIwdlRycTN0V25TQ1ovUHU3aDRrWEVyRGFOdlZ1T1A4QTY5ZXJBQUFBREFIUUNvRFoycmJNMjBKOHM3a3lnK1UrbzlLQU9DOFAyY092WFZqRHFlK2VNYVNEdDh4bEJJbGRRVGc4OGV0WmNsM2EzdWkyY0YxRGJOZFJXQmNYTjNjUEdTQXpCVlFEZ3NQZnIwcjFWSVlvMkRKRWlrRGJsVkE0em5GUm16dFNZeWJhRW1QN2gyRDVmcDZVQWVieFBaWDhWM05yc3ltYUxUSVdzdk9sSzVKak9Tdkl5ZDJLcWtTWHJNdDVkV2NNc2RsYkcybHZMbDR6R1BMQjNSNEJ5YzhuM3J2ZGEwR2JVM1ZZYjJPMWdFZmxtTVdxT3dCem5heDVYSU9PUFN0Q0xTN0pMVzJ0M3RvcFZ0bzFqak1pQmlBQmdjbjZVQWNGZldhUHBYaURWSkhkcisxblVSVHBLdzI4SmtyZ2djNVBhbStKb0cwVFZMeXowcnpJYmVheGpsbi9BSGpIL2x0dExFNUo2Y0UraE5lam1DRXE2R0dNcTV5dzJqRGZYMXBXaGlaeTdSb1dLN0NTb3lWOVBwUUI1ckhheHI1Y01OM1pHem52N1JUYjJGeTdoTWxnVGs0SXlQUTlxWFdOT3NMSzgxTzMyTWxuYlhWbTZxWFlpTVBuZWV2ZkFyMFdLeHM0RjJ3MmtFWTNCc0pHQnlPaCt0UGt0NEpSSUpJWTNFZ0FjTW9PN0hUUHJRQkZwd3RGc0lSWXNqV29YOTJVYmNDUFk5NnMwMUVTTkFrYXFpamdLb3dCVHFBQ2lpaWdBb29vb0FLdy9HbDZMSHdwZnladzBrZmtyN2x1UDVFbjhLM0s4KytJdHpKcU9xYWQ0ZXRUbDNjTzRIWW5oYy9RWlA0MEFiWHc3c3phZUU0R1lZYTRkcGlQcWNEOUZGYUhpMWduaFhVeWYrZUREOHhpdEswdDQ3UzBodG9oaU9GRmpVZXdHQlVqb2tpRkhVTXA2aGhrR2dEZ2JYUXIwNmhhNmFJV2JSNXpEZXl1Qjh1OVV3eW4vZVlBNHJKdDU3RzUwRFNySzV0clR6UmF5eUxOZDNEeElBSlhHRjI5VzR6WHFvQUFBQXdCMEFxQTJkcVJHRGJRbnlqbFBrSHlIMjlLQVBQOUd0WXRhdW9vOVI4eWRGMGhIMm1SZ0N3WWdFNFBKeDYxblMzZHRmNkxiUTNVVnMxM0ZZYmhjM2R5NkVnTTRVSUJ3V0h2MTZkcTlVU0NHTTVTR05UdDI4S0J4NmZTbUd5dENVSnRZU1krRVBsajVmcDZVQWVieU5aWHNHb3o2ek9wdW85TGdleTgyVGJsakRrbGVlVHZxbW9rdlMvMnU3czRKNDdTMk52TGQzTHh0R1BMVTdvOERrNTYxMzJ0K0g1dFZrQ3gzMGR0YmVWNVJqRnFqc0Y1enRjOHJrSEhIcFdqSHBkaWx2Ynd0YlJTTGJ4ckhHWkVERlFCZ2NtZ0R6eSt0aC9ZM2lIVlhrZiswTFc5Q3hUeHlzTm1XUUhiZzQ1eWFsOFQyMzlpWDE3YTZZWkliYWExaWxuSG1PZXNwVXNUeWVnQVAxTmVqRzNnS09oaGpLdWNzTm93eDlUNjByUlJPeFpvMFppdTBrcU9SNmZTZ0R6STJ5bzF0YnczbGtiS2ZVN1ZUYjJGMDdpUGNIRGNuQkc0ZS9hazFpeXM3Uy8xR3pDRkxHMHZyUXFwZGlJMWtRbCsvZkFyMHFLeHM0VkN4V2tFYWhnd0N4Z0RJNkg2MDZTMnQ1UklKSUkzRW1ONFpBZDJPbWZXZ0JtbnJhTFlRaXhaV3R0djdzcTI0RWV4NzFZcEVSWTBDSW9WUndBQmdDbG9BS0tLS0FDaWlpZ0FySzhVWHY4QVovaHUvdWM0WVJGVlArMDN5ajlUV3JYQmZFdStlZHJIUWJiNXBwNUE3S1ByaFIrSkovSVVBWHZobFptMzhNR2RoaHJtWm5COWg4by9VR3V2cXRwdG1tbmFiYldVZjNZWTFUUHJnZGZ4cXpRQVVVVVVBRmVRZkV2L0FKR3gvd0RyaW45YTlmcnlENGwvOGpZLy9YRlA2MEFjblJSUlNBNlR3dm9FZmlLd3Y3ZU4xanZvTnNrTEhvd09RVlB0d09heGRRMCs4MHk1YTN2YmQ0WlIyWWRmY0h1UHBXNzhQYjhXUGlxQldPRXVWTUorcDVINmdEOGE5ZXViVzJ2SXZLdXJlS2VQKzdJZ1lmclRBK2Vxa2dnbXVabGhnaWVXUmpoVVJjay9oWHRiZUQvRHJQdk9sUlo5aXdINVpxN0hhYWZvMXBKSmEya051cXJrK1dnVXQ5VDNvQTg2MG53MjJrdXMxOWo3WVJrUmc1OG9IMTkvNVZzVTZXUnBaV2tjNVpqazFnZUlkYSt4cWJXMmIvU0dIek1QNEIvalFBYTdyeTJlNjJ0U0d1TzdkUW4vQU5ldVBra2VXUnBKR0xPeHlTVGtta0pKSkpPU2U5SlNBS0tLS0FDaWlpZ0Fvb29vQUs5NjhPLzhpM3BmL1hwRi93Q2dDdkJhOTY4Ty93REl0NlgvQU5la1gvb0FwZ2FORkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkJBSXdlUlJSUUFpZ0tvVlFBQndBTzFMUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlRaSTBsUXBJaXVwNmhoa0duVVVBVkYwclRVZmVtbjJxdDZpRlFmNVZiQUFBQUdBS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ3VmOGJhTC9iV2dTSkVtNjVnL2V3K3BJNnIrSS9YRmRCUlFCeW53KzF3YXBvb3RKbnpkV1lDTm5xeWZ3bituNGU5ZFhYbkhpZXh1ZkNuaUdQeEZwaVp0cFd4TkdPZ0o2Zyt6ZFI2SDhLN3pTdFN0ZFcwK0s5dEgzUlNEcDNVOXdmY1VBVzZLS0tBQ3ZJUGlGb1A5bGF4OXJnVEZyZGtzTWRGZitJZjFILzFxOWZyTjhRNlJGcmVqejJNbUF6RGRHNS9nY2REL0FKN0UwQWVlK0UvSFowdTFqMC9Vb25sdG8rSTVFNVpCNkVkeFhXdjQrOE9MRHZGM0k3Zjg4MWhiZCtveCt0ZVAzTUV0cmNTVzg2RkpZMktNcDdFVm9IdzlxdzB6KzB2c2greDdOL203MXhqOC93QktBTDNpN3hSTDRpdWtDeG1HMGh6NWNaUEpQOTQrL3dES3JudzgwSCsxTlgrMnpwbTF0Q0c1Nk0vWWZoMS9MMXJscmEzbHU3bUsyZ1F2TEt3UkZIY212ZGRBMG1MUk5JZ3NZc0VvTXV3L2pjOVQvbnRpZ0RSb29vb0FLS0twNnRxZHRwR255M3QyKzJOQjBIVmoyQTl6UUJ6M3hEMXdhYm94c29XLzBxOEJRQWRWVCtJL2owL0UrbFgvQUFab3Y5aWFCRkZJdUxtYjk3TjZnbnQrQTQvT3VYOEs2ZmRlS1BFRW5pVFUxL2NSdis1alBRa2RBUFpmMVA0MTZOUUFWbWVJdFlUUXRJa3ZuajgxZ1FxUjV4dVk5Qi9YOEswNjUveHRwdDFxZmg5bzdOTjg4VWl6S245N0hiOGpRQlcvdGJ4UmJhZmMzMm9hYlpRUlJRUElBSEpiY0J3Q00xRmFhNTRsazB0dFVuc0xGYk1XejNBWlhiZHdoWmVNK29GUjNtdWFockdpM3RrM2gzVWJlV1MyY0ZuaU8zZGc4RGpKeldOcE5wQkJwVTl2RjRZMVNEVVpiQ2FKN2w0bjJNM2xrOUNjY2tBRGpxUlFCcVJlTE5jamcwNjd1OVBzemEzN2lPSXh1UXdZOERJTk9UWC9BQlUrdFNhU3VuYWQ5cWppODVodmJHM0lIWFB1S3l0UDBHZlRMancvcVVsaGQzTVpHSjRHUjJhM2ZQRDdldzZkdTMwcnBMYTF1RitJOTNkRzNsRnUxZ0VFcFE3QzI1ZU05TThVQVVManhmcUsyVFNRV3R1MDM5cHRZb3Jic0VBREJQUFhKcWUrMTd4RnBWdkRMcU5qWXA1MXpIQXZsc3pjTUd5ZXZzS3diblJyMjQwODI4bGhjbEpOZWQySGxObnlpQU4zVDd2dld0NGk4T1E2Zm85bGJhUFp6T3AxR09hUlUzU0VBS3dKUFhBNlVBVFFhOTRrMURVTlJnMDJ3c1hpczdoNE4wanNwT0NRTy90VFQ0azhRelhtcHBaYWRaeXhhZkp0a0JaZzdBWjZjK3hyRWpzb0xmWDlWdU5SOE02cGV1MTY4a0VzTVVtMEx1SkI0SUI5YXVXMTdxT2xhbHIrelF0UXVHdlppWVdXQnRuZnFmVG1nRHN0RDFTTFdkSXQ5UWlVb3NvNVFuTzBnNEkvTVZmckY4SWFiUHBQaHUxdExrWW5BWm5YT2RwSkp4K0dhMnFBQ2lpaWdBb29vb0FLS0tSbVZGTE1RcWdaSkp3QUtBS1dzNm5CbytsejMwNStXTmVGenl6ZGdQcWE1RDRkNmZQZVhkMzRsdnVaWjJaWWlSNm41bUh0MkgwTlVOVnVwL0hYaVdQVExGbVhUTFk1ZVVkQ083LzBVZjhBMTY5SHRiYUd6dFlyYUJBa1VTaFZVZGdLQUphcmFsZXg2ZHAxeGV6QWxJVUxrRHFjZHFzMW5lSWJDVFU5QnZiS0xIbVN4a0prNHkzVWZxS0FNblJkVjhTNm0xdGN5NlphUWFmTmh0eGtKZlllaEhOVnRDMXp4UHJFRUY1SFlXQXRKSHd6YjJEQUE0UEdmclR2RDJ1YWpEYjJHbFhQaDYvamVJSmJ0TnNQbGdBQmQyY1ZnK0VyYURUbnMydXZDK3FuVVZrSSsxZVU0UmNuQUpHY1lBUHBRQm9KNHgxeit5NWRYYlQ3TjdDR2J5cE5yc3I5UU9NL1VWUGMrSS9Fc09vMmRvdW4yQk43dWEzeTdjcUJubm5qaXVlaThOM2lhUEhxRDZmZFRQRmZFeldUS3c4MlBqa0wvWDM5cTYzVjRKN254WjRkdTRiV1l3SXNoZHZLSUVZSzhCdVBsK2hvQW8zZmpEVkxPSFZSUGFXb25zQkNObzNFRm54dTc5dTFUM3V1ZUo5TjBtNDFHOXNMQllvMFVyc2RpU1M2amtaOUNheC9FR21haE5jZUp6RlkzTWdtYTM4b3JFeDh6QkdkdkhPUGF0SFd2Q3RwcC9oRy9HbFdVelhVNlJCa1VzN05pUlNjRDg2QUxFbmlIWGJuV24wN1RMS3prS1c4Y3pHVm1IM2xCUGYxTkVtdmVJMjFqK3liZXhzVGRSMndubER1Mk01QUlCejdpc0xVTk9UL0FJU1NTYlV2RCtvYWhiRzFpVlBJamZod2k1NUdQY1ZkaXU3blR2RlA5cHhhQnFiMnI2ZWtDUkpBeFpNRmNBL1FMUUIwL2huV3pybGhKTEpCOW51WUpERE5Gbk9HSHBXeFhOK0M3Qzh0cmErdkwrRXdUMzEwMC9sSHFvUFRQNW11a29BS0tLS0FDaWlpZ0Fvb29KQUdTY0FVQVZkVHY0Tk0wNmU5dUd4RkN1NCsvb0I3azhWeEhnS3luMWZXcnp4UGZMeXpsWWMvM2oxeDdBWVVmWDJxdDRndjdqeG5yOFdoNlczK2d3dG1TVWNxY2RXK2c2RDFQMXIwS3dzb05Pc1liTzJYYkRDb1ZSL1g2MEFXS3E2bmZSYVpwdHhmVEFtT0ZDNUE2bjBINDFhck44UjJFbXFlSDcyeWhJODJXUDVNbkdTRGtEOUtBTW5TdFc4VFh5dzNrdW1Xa05oSXZtQW1RbDltTWc5YWgwRFhQRXVzeFcxMnRoWWl5a2sydXdkZ3dVTmhpQm5yMXB1a2E1cVFzYmJTN253N3FFY3FJSUdsOHMrV0FCamRuRlluZyswZ3NKckkzWGhqVkJxQWwyL2FqRTRSTnh4a2pPTUFIbmlnQzdENHoxMyt4UnJVbW5XVFdBazJPRmRnL1hIR1Q3MWF1UEVYaWFQVjdiVDAwK3dMM2FzOEdYYmxRQ2VlZURnVnpscDRhdTRmRDlscUVtbjNjN3czV2JpeGRXeTZaNElUL1BXdXYxQzNubjhjNkRlUlcweHQwaGwzdjVaQVRLTmdONkhub2FBS041NHYxT3ppMVVTMmx0NTlnSUFRTnhCWjhidS9RSE9LbXZkYzhUNmJwTnhxTjdZV0N4Um9wWFk3RWtsMUhJejZFMWorSU5NMUNhNDhUbUt4dVpCTTF2NVJXSmo1bUNNN2VPY2UxYVd0ZUY3WFQvQjJvSnBObk0xemNMRnVSZHpzMkhVOEQ4NkFKajRpMSs3MXE0c05Nc3JPVHlZb3BHTXJNcCtaRmIxOVRRZGU4U3k2eExwZHZZV0J1WUlGbGxETzJNbkhBT2ZjVmczZW5SanhKZFRhbjRkMUhVSUdnZ1dNd1J1QUdFYUE4Z2oweFY2M3ZydlQvRkZ4cWFlSDlVZTNtdEk0NDQxZ1lsU0F2QlA0VUFkVDRhMXYrM05PZVo0RGJ6d3lHR2FJbk8xaC93RHJyWHJuUEJOaGVXZW5YVTk5RDVFMTVjdlA1UjZvRGpnL3JYUjBBRkZGRkFCUlJSUUFVVVVVQVEzbDFEWTJjMTNjUHNpaVV1eDloWEFlRExlYnhENG91L0VsMnA4dU5pSVZJNDNZd0Ivd0ZmMUlOTjhWNnBQNG8xbUx3N3BEYm9GZjk5SVB1c1IxUCs2djZuOEs3elN0T2cwblRZTEcyR0k0bHhrOVdQY24zSm9BdDBVVVVBRkZGRkFCWGtIeEwvNUd4LzhBcmluOWE5ZnJ5RDRsL3dESTJQOEE5Y1UvclFCeWRGRkZJQjBVand5cExHeFYwWU1yRHFDT2hyM25RZFVqMWpSN2Erakl6SXZ6cVA0V0hCSDUxNEpYWWZEM3hFTksxRTJGeStMUzZZWUo2SS9RSDZIb2Z3cGdldDFpZUpiamJERmJnL2VPNXZvT24rZmF0dXVSOFJYS3JmelNTTmlPRlFDZlFBWk5BSFA2M3FhNmJhWlhCbmZpTmY2L2hYQ083U1NNN3NXWmprazl6Vm5VNzU5UXZYbmZnZEVYKzZ2YXFsQUJSUlJTQUtLS0tBQ2lpaWdBb29vb0FLOTY4Ty84aTNwZi9YcEYvd0NnQ3ZCYTk2OE8vd0RJdDZYL0FOZWtYL29BcGdWOVFlNHZOY2owcU80a3RvVmcrMFN2RWNPM3piUW9QYWlLM3U5TzFhMmlpbnVycXp1QTRrODVqSjVSQXlEdTdaNllOQS81SFp2K3dlUC9BRVlhMHBydUdDNnQ3WnlmTXVDd1RBL3VqSi9TZ0N0UHJlbVc5dzBFdDBxdXAyc2RwS3FmUXNCZ2ZpYW51ciswczluMm1kWXZNeVZMZERnWlA2VmphVXF2NE11Q3dCTWkzQmZQYzduNjFFaUxNM2hRU2dQKzdMYytvaXlEK1lvQTFrMTNTM1NSeGRBZVhqY0dSbGJucGdFWlA0Vk5hNm5aWGR2TFBCT0dTTFBtWlVxVnh6eUNNMVFraVIvR2tMc2dMSllzeW4wTzhEK1JQNTFBd0ExTHhINzIwWC9vRDBBYUExN1MybGpqRjJwTWhBVnRwMjVQUWJzWUI5czFMZWFwWldNaXgzRXhFakRJUkVaMng2NFVFNHJEdkk0MCtIS2hGQUgyV051UFU0SlA1MWZlWi83YXUwMDIxamt1UWtZdUpacFNxcndTb0FBSkp3VCtsQUY1ZFRzbXNHdmx1Rk5zdlZ3RHh6amtkYWpqMW5UcGJ0YlZMa0dWaVZYNVR0WWpzR3hnbjhhNXlYelArRVg4UStjRVdUN1crNEljcUQ4bWNaclkxNk5JcmZTNDQwQ29sOUFGQTdBSEZBR3JCY3czRFNyRElHTVRtTnhqRzFoMm90cm1HNmpNa0Q3MERGY2dkd2NIOWF3ZFJ1djdGMWErbjZMZDJ2bUo3eXA4dUI5UVZyWTBtMCt3YVhiV3Y4VWFBTWZWdXBQNTVvQWloMXZUWjVvNFlibnpKSkRnQlVZNDVJNTQ0NmQ2Sk5iMHlLNU51OTBvY05zSjJuYUc5QzJNQS9qVmJ3bWlKb01iS29CZVNRc1IzTzloL0lDc3JTYmZWYjN3bWx0RkZaR0dlTnh2a2tmZGtrOGtiVHptZ0RwTDNVck93MkM1bTJNLzNWQ2xtUDRBRTFIOXZ0TDJ6dVRiWGk0U01scEV5ZG1Sa0dxRnBHMFhpaEk1U0drajB4RkpIcnZPY2ZsVU1Tb3QxNG1FWUFYQ25qMU1XVCt1YUFOT08vdGJMU2JTVzR2UE1SNDBDeWxUdWxPM3J0NU9UMXF2ZmE5YUxvMXpkV3R3UzZxeXBpTmlWazJrakl4eCtQRlY0TEc0bjBuUkx5emVNWEZyYnJ0V1VIWTRaQUNEamtmV24zR29HNzBYV0lKcmMyOTFCYnVKWThoaHlod1FlNElINlVBVzlPMWkxdWRPKzBQTVY4cU5XbWVTTmtBSkhxUUFlL1NwYkxWckcvbGFLMm4zU0FidHJJeW5IcUFRTWlzblZ0NThQYVNrWVZpODF1dTF6aFc2Y0gyemlyUXROVXVOWHNidTZTempqdHQrZktrWm1ZTXVNY3FPK0tBTE1tdDZiSE9ZR3VjeWh6R1VWR1lnakhZRHB6MTZVdDNyT25XY3hobnVRcnFBV0FWbTI1OVNCeCtOVmZENklMalY1QW8zdGZPcGJ1UUZYSDh6VkxTdjdTZHRURnREWnlSUGV6QmpOSXdZODR4Z0tlTVlvQTNibS90TFNCSnBwbENTWUNGY3NYejZBWkovQ3MyeTFCTDN4SzR0N2hudHhaZzdNa0FOdklPVlBRNHg3MVZ0ck9XeHYvRDFwY01yeVF4VGdsU1NPZ3hqUHNhdVJxaStNNXlvQUxXS2xzZHp2STUvQUNnQzNlTUJxZW5nM2JSRXMrSVFwSW0rVThFOXNkZWFiUHJtbTI3T3Nsejh5TVVaVlJtSUl4bmdET09SejBxRFZQOEFrWU5FL3dCK2IvMFdhYjRmalFYT3J5aFJ2YStkUzNjZ0JjRDlUK2RBR3RCTkZjUXBOQzZ5UnVNcXk5Q0s1L1RyTnRTdU5Ta212NzVmTHZaSTFXTzVaVkNnQWdZL0dybmhRQWVIcmNEZ2I1Zi9BRVkxVU5KMDFMeTQxV1JycThoSXY1RjJ3enNnNkx6Z2QrYUFObU5ZTkpzbWFhNW1hSU1DWG5rTWhCSkFBeWUyY1UyRFdkT3VMb1cwVnlHa2JPMzVTQTJPdTFpTUg4RFZMeE5Dc2ZoYWFBczdxREV1WGJjeC9lTDFQZXBOZVZWZlNBcWdCYjZNREE2RGEzRkFGcTYxalQ3TzRNRTl5RWtBQlliU1FvUFRjUU1EOGFxYXJlaVcxMCtlenVDWTVMNkpDMGJFQmh1d1I3amlsMEZWZVhWeXlodDE4Nm5QT1J0WGlzZTBDand2b29UN28xRmNmVHptb0E2ZTkxQzFzQWh1WmRoYzRWUXBabStnR1NhYmJhbFozVnZMUERNR1NMUG1aVWdyam5rRVpGVTc2YmJyY1NXbHNzMS81Qk82U1Rha2NaWWNuZzhranNLb1c1dURlZUlqZExFc3YyZVBJaVlzdjNIN2tDZ0RVL3Q3U2pKR2d1MUpreGh0cmJlZVFDMk1BL1dyRjVxTnBZbEZ1SmRyUG5hcXFXWTQ2OEFFMWczc2FSL0RwVlJBQWJXTnNEMU8way9uV2lPZkdUKzFndVArL2gvd29BVFJyd1htcTZxMGM1bGdEUmVYOHhJQUtET0IyNTYxY3ZOVXNyR1JZN2lZaVJoa0lpTTdZOWNLQ2NWUzBoVVRYdGJFWUFIbVJIajFLWlA2NW9lWi93QzJydE5OdFk1TGtKR0xpV2FVcXE4RXFBQUNTY0UvcFFCZVhVN0pyQnI1YmhUYkwxY0E4YzQ1SFdvNDlaMDZXN1cxUzVCbFlsVitVN1dJN0JzWUovR3VjbDh6L2hGL0VQbkJGaysxdnVDSEtnL0puR2EyTmVqU0szMHVPTkFxSmZRQlFPd0J4UUJkdTlWc2JLWHlwNTlzbU54VlVaaUI2bkFPQjdtcTNoNjRhNWd2WkRNWlYrMlNoR0xiaHR6d0I3VW1tZjhBSXc2MmUrNkVmK1F4VGZEQ29sdGZKR0FFVyttQ2dkQU04VUFPMHU0ZUsvMWUzdUpYZFlaUktwZGlkcU11Y0QyR0RWTHdwZlhFa043OXVsZGlDdHlwZGljSTY1QUhzTUdvZkVzcldXb1RGT0RmMlp0MTkzREFEOUhwdmlBLzJYUHRpNEZ6WUcwUWVyQWdEOUdOQUdqcE9vSmJhRGIzV28zRGI3aG1jYnNzeDNFa0JSeWVtT0JWbDlUdHJ6VGIxck9jbDRvbXlNRkdRN1RnNElCRlZyblpiWHVuMmRyYkM0dllJRzh2Yyt4STA0VWs4SDBBNlZTa04yZFkxSDdZa0NTSFREeEN4WUVibTY1QTVvQTJOTnVWajhQMmQxZFRZSDJhTjNra2IvWkdTVFQ3TFZyRy9sYUsybjNTQWJ0ckl5bkhxQVFNaXNTOTNud3BvaVJoV0x2YXJ0YzRWdUJ3ZmJPS3ZpMDFTNDFleHU3cExPT08yMzU4cVJtWmd5NHh5bzc0b0FzM090NmJhenRETmNoWFRHL0NNd1hQcVFNRDhhdnF3WlF5a0VIa0VkNndwSTczUld2SjRvWTd5eGxrYTRrVE8yVk0vZXhuaGh4MDRyYmdtUzR0NDU0am1PUlE2bjFCR1JRQSt1WjBMVG0xSFI0cnFmVXRSRXNoZkpTNllBWWNnY2ZoWFRWeWVnYU5GZmVIb21lOHZZeElaQVVqbktxUG5ZZmQ2VUFXckc3bW4weUQ3VGZ0RzBWK0lWbVZTZnRBVnNBY2YzdW1mYXRTOTFld3NaZkt1SjlzbU54VlVaeUI2bkFPQjlhd0ZtWnRNdExaZ24raDZ0SGJCa1hhSENzT2NEcDFyVnVMVy9zdFN1Yit3aml1VnVBdm13TzIxc3FNRGEzVHAyTkFFZXM2N0RheDJUMjg1SW1takpaWXk0YUlubkJ4alB0MXErZFdzVnNoZU5NVWhMYlFYUmxKUG9GSXlmeXJNMUc4aHY4QVROSnVvRkt4dmZRNFVqQlhEWUkvQWpGUDFzM0g5dmFRTFpZbmt4TXdXVmlGenRYbmdIbkJOQUdwWmFoYVg2Tzl0TUhDSERBZ3FWK29PQ0tydzY3cGsxd3NFZDBDN3R0VTdXQ3NmUU5qQi9BMW0zbHBxQ0pxdW9YUXRvOTlnOGUyQjJiSkFKQk9RUFd0Q0tDems4UDJrZDBVU0FSeEhKYmFBUmpiejljVUFWVjFPS3oxN1UxdTdsaEdGaDh1UGx1U0d6dFVaL0hBcldzN3UzdnJjVDIwb2tqUEdSeGcraEI1QnJNc0kwUGl2VnBTb0xySENvYnVBUWMveUg1VS93QVBnQ1RWc2Y4QVAvSi82Q3RBRnE1MWF3dFpYaW11QUpFeGxBcFp1UmtjQVpOVXRiMUJKdkMxMWVXRnljYlBsa2pKQkJ5UHhCb3NFUStLOVdrSUc5WW9RRDN3UWMveUZaVjJBUERuaU1EZ2ZiSC9BUFpLQU9wdTd1M3NvRFBjeXJIR0RqSjduMEE3bW9yTFVyTy9MaTJtM01tTnlzcFZoK0JBTlV0VkFiWGRGVnVWOHlVNFBxSXppcjVpdGY3VFdiY3YydnlTb0c3a3BrSHA2Wnh6UUJGY3NCcTFpcHUyakpXVEVBVWtTOERrbm9NZS9yVWMydmFYQk8wTWwwRlpHMnNkakZWUG9XeGdmblVXb2Y4QUl6YVAvdVQvQU1scXNCZTZCYnlnd1IzbW1xelNFcWNTeHFTU2NnOE5qTkFHODdwSEcwanNGUlJrc1RnQWV0VWJmVzlOdVowaGl1RHZrNFRkR3loL29TQUQrRkpyRTltZERubXVRMGxxMFlKQ2NGZ2NZQStwSXJMMVo5U2M2YWJxMXRvSWZ0ME9GU1VzNm5kMCs2QitSb0EyZFd2VnNOUGxuWm1WdHBDRUlXK2JCeHdBZjhLcTZWclZ2ZGFVczhzcmI0cmRaTGhqRXlnZkxsaU9NSHYwcTdxZi9JTHUvd0RyaS84QTZDYXpQK1pFL3dDNGIvN1NvQXVSYTFwc3J5S2wwcDh0Tjd0dE8wRC9BSHNZNzlNMHR0ck9uM1U2d1JUbnpIR1ZEeHNtNzZiZ00vaFZHYzJsdjRXczRab0RLa2l3b2tLSEJkemdnWitveWFnMVI5U2E2MHBydUMyaWorMnB0OHVWbWNIYTNCeW9HS0FOYTUxalQ3UzRNRTl3RmtVQXNBcElUUFRjUU1MK05aZW5YRHphQnA4czJvU1JNMTNqZWN1WmYzckFJVDZIcFZyUVZWNU5YM0FOdXZuQnlPbzJyeFdQYUJWOE1hTUYrNk5SVUQ2ZWMxQUhSM09yMkZySzhVMXdGa1RHVUNrdHlNakFBNTZkcWtnMUMwdUxJM2tkd2h0d0NTNTRDNDY1ejAvR3Mrd2pRK0t0V2tLZ3VzY0todTRCQnovSWZsV1RkZ2YyRHJ3eHdkU0dmeGFQTkFHL0JybW1YRHFrZDBON3NGVldWbExFOU1BamtlL1NyczBzY0VUeXl1cVJvTXN6SEFBckk4UUxIOXAwZGlCNWd2VkNudmpCei9JVmUxYXhHcGFiTlptUXgrWUJoc1p3UVFSeDlSUUEyejFpd3Zwdkp0NTkwbU53VmtaU1I2aklHZndxZUs5dDVyTTNjY29hQUJpWHdmNFNRZjVHcUZycUYxSHFFTmpxZHRHazBxdDVVMExaU1RISkdEeXB4elZUU0NCNExrSjRHeTQvOUNlZ0NiVWRSalMvMGE0VzVLV2t2bU94eVZWbDh2SXlQeTYxb1dXcDJkK3pyYlRibWorOHJLVllmZ1FEV0ZHaVNmOEFDSnJJQVY4dk9ENmlJRWZxQlY2ZUpaZkZoak9RSk5PZFNSMXh2SCtOQUZpUFh0TGt1RmdTNkJkMjJLZGpCV1BvR3hnL25UN2VXTkwvQUZKbnZTNm9VTFJzQ0ZnR3pQVThjOWF6NFpyelE3ZUMzdm9ZcHJHTXJFdHpFY0ZCa0JTeW44T1JWRFdDUkY0cHgvMHgvd0RRRm9BdTZscmR0Y214U3l1M0R0ZVFnZ0JrM29Xd2NaQTNENmNWcDI3cU5WdjgzaGZhc1pNSkJBaDRQT2VuUDlLcCtJNDQ5dWxuYW9LMzhJWDI1N1ZXbm10NE5ROFJTWFlZMi9rUWh3dlVncXd3UGM1b0Ewb3RkMHlXWklrdWVYYmFqRkdDc2ZRTVJnL25VbDVxMWhZeW1LNXVCSElGRDdkcEpJSklHTURub2VsWWV0dHFYOWdZa3M3YTN0bE1RQytjV2tVQjF4L0RqUDQxb2VXamVOUzVVRmxzRjJrOXN5TlFCbzIxOWJYYnNrTW01MVZYS2xTcEFZWkJ3UlQ0Ym1HZVNXT0o5elF0c2ZBNkhHY2ZyV1Rxa2lhYnIxcHFNaDJ3elJQYnluc01EZXY4aUtuOE94T21rcFBLTVRYVE5jUDlYT1IrbUIrRkFFMTVyR24yVXhodUxqYklCa3FxczIwZXB3RGo4YXBlSmRVUzEwUXZienNzazRYeXBJMUxjRmx5UVFNRGc4ZnBUOUJBYWZWMlBMRzlkU2ZZS3VCV1FQOEFrbndBNkNVQWZRWEhGQUhSYVNMY1dLbTJsbmxpSkpEVGxpMy9BSTl6V1JwbGkycFBxTXMyb1g2bEwyV05SSGNzb1ZRZUFCWFNWeStsYVZIZkhWR2U2dklnYjZaU3NNNVJldnAwb0FsdHJxYVhRYnhMblVYaSt6WFhrTGRoU1daUTY0UEhYT2R0YTk3cXRqWVNMSGN6RlhZYmdxb3puSHJoUWVLNXU1TFcrZzZucFdRNldNMEtvNFVEY3JPckRPTzQ3bXRxNnRMKzIxS1hVTlBFTTNuSXF5d1NrcVR0emphM2JyM29BaDFyWFliZlIxdWJPNDNQS1Y4cDFqTEFnT0EyZU1EalBXcncxZXdOazE0WmlrQ3RzTFNJeUhQb0FSazllMVplcjNzZC93Q0ZKNVk0MmlLeW9qeHQxUnhLdVFmeHFiWGpPZFYwZExkWW5melpHVlpXSVVrSWVUZ0hwemlnRFNzZFJ0TlEzL1padDVRNFpTcFZsK29JQnFCZGQwdHJnUWk3VXNXMkJ0cmJDM3B1eGo5YW95Mm1wQzV1OVJ1eGJSZ1dMeEFRT3pFbk9RVGtEM3FleWdzNWZDVnBGZGxFdG10b3k1TGJRT0FjNTdjMEFNdWRRU3o4VE9MbTRaSVBzYWtKa2tGaTdkRkhVNEhhdE95dnJhL2lNdHJLSkZVN1R3UVFmUWc4aXMzeTBieHFYWlFXU3dHMG50bVJxZnBZQTEvV3dPQnZoLzhBUllvQWhtUjlXMTY2czVwcEV0TFJFSmpqY3A1ak9DZVNPY0FEcFV0dlpUNmJxOE1kcTAwbGhNamVZa2pseEV3eGdnbm5ua1lwTk40OFVhME81V0FqL3ZscWpFVTlqNGdzSUJxRjFjUnpwS1hTWmdRTm9HT2dIclFCZE90NmI5b0Z1TG5kTVpESHNWR0pEQTRPY0RqbnVlS1c2MW5Uck80TUU5eUZrVUFzQXJNRnovZUlHQitOVmZEY2FLTlRjS0F6WDgyVDNPR28wQlZlTFU5NERicjZZTm51TTQvbFFCcHRkMjZ5UVJtVmQxeG55c2M3OERKd2ZwUy9hWVJlQzAzL0FMOHhtUUpnL2R6ak9lblUxeTJrRW1Md3NTYy82NGYrT05XdXhIL0NaSU8vMkJ2L0FFWXRBRWorSU5LUUFtOFhCN2hXSVhuSEpBNDVIZkZhUUlaUVFRUWVRUlhPYU5IR1BCbHhoUjg2emwvYzVZYy9nQld0b25PaGFmOEE5ZTBmL29Jb0FpZnhCcFNBRTNpNFBjS3hDODQ1SUhISTc0cHVvVHVOYTBkSTVXRWNyUzdncmNPQkdTTSt0VU5HampIZ3k0d28rZFp5L3Vjc09md0FwTGZsL0NuL0FGeGIvd0JFMEFiVjdxZGxZT2lYTTIxM0dWUlZMc1I2NEFKeFV0cmRRWGx1czl0S3NrYmRHRlp0Z0EzaWpWbVBMTEhBQWZRRU1UVit6aXRZbXVmc3pLUzh4YVVLMmNPUU0vUTlPS0FLZmlTV1cyMDFMdUtSMCt6elJ5UHRZamN1N0JCOVJnOUtvK0tyNjV0cDdQN05LNmlFL2FaZ3BJM0lyS01ISFVmTWZ5cloxTzIrMmFaZFcyTW1TSmxIMXh4K3RjOXBCL3QyRzhsUEord3gyZ1ArMFZKYjlTS0FOYStta2ZYZE10WXBXVk1TVFNoU1JsUU1EUHFNbjlLbFhYTk1lNkZ1dDJwY3RzQjJuYVc5QTJNWi9Hc0hTTGxyNks3dmdTSHQ5T1Mzei90YlN6ZnJpbncyV3JYM2hXM3M0b3JCSVpJSXlqbVI5dzZFSEczclFCMU1raXhSdEk1d2lBc3g5QUt6L3dDM3RLTWthQzdVbVRHRzJ0dDU1QUxZd0Q5YXM2bi9BTWd1Ny82NHYvNkNhd0wyTkkvaDBxb2dBTnJHMkI2bmFTZnpvQTJZOWEwNlM3VzFTNlV5c1NxL0tkckVkZzJNRS9qVHJ2VnJHeW04bWVZK1pqZHNSR2NnZXBDZzRxbHIwU1JXK2x4eG9GUkw2QUtCMkFPS1NPZWFUVXI5dEt0SW1iekFrODA4cFZTNnFCZ0FBbmdZOUtBTkNQVXJLVVd4anVGWVhPUkVSbkRFZFI3SDYxTTF6Q3QwbHNYL0FIenFYVmNkaDFQNjF5aVJ5LzJEZVhlMWZ0RmxxTWx4dFE1WDVXK1lEMndUV3ZwVHJmNnpmYWloRFJJcTIwTGV3RzV2MUkvS2dEUXU5UXRMSXFMcWRZaTRabDNkd01aL21LcnBydW1QRThndWdBaENzckl3Yko2ZktSay9sVmZVNDBmeE5vdTlRMjFaMkdmWGF0SUkwUGpWbktBc3RndURqcDg1b0EwYlRVTFM4dDNuZ21WbzBKRGtncnRJNjVCd1IrTlEydXRhZGQzQWdndVEwalpLZ3F5aHY5MGtZUDRWZ2FzU2tQaW5ieC9xZW51aTVyVjhRS3FSYVhzQUFXK2hDNDdET1A1VUFYTG5WN0MxbGVLYTRDeUpqS0JTVzVHUmdBYzlPMVFYMTdiWGVnejNOdnFCdDRpUCtQaEZKTWZQcHdjKzFSV0VhSHhWcTBoVUYxamhVTjNBSU9mNUQ4cXlid0FlSGZFbVArZngvd0QyU2dEVTFYVzQ3TFdMSzJNanJHUy9uZ1FzMlJzeXVDQnp6NmZqVjZmVnJHM2dobWxtS3JOekdOamJtLzREalA2VlYxVC9BSkdEUlA4QWZtLzlGbWdjK01tenp0c0JqMnpJYy95RkFGMlBVYk9XeGU5am5WcmVNRm5jQS9Mams1SFhQdFRiWFZiRzh1R2d0cC9OZFYzSGFyWXg5Y1l6ejB6V0xNQXYvQ1ZxdkMrVm5BOVREelczcEVhUmFSWm9paFZFS2NENkNnQzNSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBRVYxYlEzbHJKYlhNWWtobFVxNm51SzgzZE5TK0gyc0dTTlh1TkduYmtaL1QyWWZyL0FDOU5xSzZ0b0x5Mmt0N21KWllaQmhrWVpCb0FoMHZVN1RWckpMdXlsRWtUZm1wOUNPeHEzWG5Hb2VHOVo4S1hyYWw0ZGtlYTJQTHdFYmlCNkVmeEQzSEkvV3R6dy80NzB6VkFzTjJ3c3JycHRrUHlNZlp2Nkg5YUFPcm9vQnlNaWlnRHpiNG5hRHNrVFc3ZFBsYkNYQUE2SCtGdjZmbDYxeDM5dFhwMEVhTjVuK2lpWHpjZC9wOU04L1d2ZEx5MWh2ck9hMHVFM3hTcVVZZXhyeGdlRjd3K0svN0NPZDIvL1dZNDh2cnYvTDllS0FPbStHT2c1WjlidUU0R1k3Y0VmZ3pmMC9PdlI2aHRMV0d5dElyVzNRSkZFb1JSN0NwcUFDaWduQXlhNVB4QjQ3MDNTdzBObVJmWFhUQ0g1RlB1MzlCK2xBSFFhcnFsbnBGazEzZXpDT05lbnF4OUFPNXJ6MkdIVWZpRHJBdUp3MXRwTnVjQUEvb1BWajNQYitkalR2RFdzZUtMeGRUOFJ5eVJXL1ZJUHVzUjZBZndqOVQrdGVnMjF2RGFXOGR2YnhMRkRHTnFvb3dBS0FGdHJlRzB0NDdlM2pXT0tOUXFvdlFDcEtLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vckcxenhQcFdocVJkWEFlZkhFRWZ6T2Z3N2ZqUUJyeVNKRkcwa2pxaUtNc3pIQUE5VFhuUGlEWDczeFZmZjJGb0NzYmRqaVdib0hIcVQyVCtmOEFPSm44UStQWnRxcjloMGtOeWVkcC93RGl6K24wcnU5RDBPeDBLekZ2Wng0SisvSTNMT2ZVbWdCbmgzUXJiUU5OVzFnK1p6ODBzcEhMdDYvVDBGYXRGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVmxhMTRqMHZSSXlieTVIbTR5SVUrWjIvRHQ5VGdVQWFqTXFLV1loVkF5U1RnQVY1NTRrOFMzWGlDN09nK0hWYVJaTXJMTXZHOGR3RDJYMVBmK2RhYTg4UWVPNWpCYVJteTBvTmhtT2RwL3dCNC93QVI5aHgvT3U0OFArSDdIUUxUeWJWTjBqZjZ5WnZ2T2Y2RDJvQWo4TWVIcmJ3OXA0aGp3ODc0TTB1T1dQb1BZZHEyYUtLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29yTjFqWHROMFdIZmZYS28yTXJFdkx0OUIvWHBRQnBFZ0RKT0FLOC84VWVLcDlVdWY3QjhPZ3pTVEhaSk1uZjFDbjA5Vy93RDExVXVkVTEveHhPMW5wa0xXbW01eEk1T0FSL3ROMy8zUlhaZUhQRGRqNGZ0aWx1UE1uY2Z2SjJIek43ZXc5cUFJdkNmaHFEdzlZN2NpUzdsR1paY2YrT2oySDYxdlVVVUFGRkZGQUJSUlJRQVY1QjhTL3dEa2JILzY0cC9Xdlg2OGcrSmYvSTJQL3dCY1UvclFCeWRGRkZJQW9wOGNNc29ZeHhPNFhxVlVuRklpUEljSXJNZlFETkFIcUhnSHhZTDZKTkoxQ1QvU2tHSVpHUDhBclI2SC9hSDYxaC9FQy9LWGN0a2grYVNRcy84QXVnOEQvUHBYSHJIY3dzSlZTVkdRN2d3QkcwanZtcHIyZSsxTzVhN3VGZVdSd011RTY0R0tZRk9pbmJIMzdOcmJ2N3VPYWY4QVo1LytlRW4vQUh5YVFFVkZPOHQ4TWRqWVhnOGRLY3NFektHV0p5RDNDbWdDT2luK1RMdTIrVSs3R2NiVG5GQ1JTU0RLUnN3OVFNMEFNb3A3UlNwamZHNjU0R1ZJcFdobFJkelJPbzlTcEZBRWRGRkZBQlh2WGgzL0FKRnZTLzhBcjBpLzlBRmVDMTcxNGQvNUZ2Uy8rdlNML3dCQUZNQitvYVpIZXl4VHBOSmIzTVdRazBSR2NIcUNEd1I3VkhhYVY1VjRMeTZ1NWJ5NFZTcU5JQW9RSHJoUU1BbjFyU29vQXlKTkJSdk9paXZiaUcwbVl0SmJwdDJuUFVBNHlBZTRGWEgwK0I3aXptRzVQc2U3eTFYN3VDdTNCL0NyZEZBRlkyVVoxSVgrNS9ORUpoeG41Y0VnL254VmU3c1k0bzlUdWtMdExjd2JXWHQ4cWtESDUxbzBVQWM5cG1oaWJSN0dPVzZ1UHN4aWprZTFPTnBiQUpHY1p4bm5HYXYzR2srWmZQZVcxNVBhU1NxRmw4dmFRNEhRNElPRDcxcFZXRjdHZFNOaHRmelJDSnM0K1hCSkg1OFVBVXhvTm91bTNkZ0pKL0t1bjN1U3dMWjR5UVNQYnZtcmw3WlIzcXdpVm5Ia3pMTXUwOVNweU0rMVdhS0FPZTFKclhXZFlzYk9IRXB0SnpMT3dCeEh0L2hQMU9QeXJvYUtLQUsybjJVZW4yYVdzTE95S1dJTG5KNVlrL3pxZ3VoeVE3b3JYVTdxM3RXWXQ1S2JmbHlja0t4R1FLdnczc2MxOWMyaXE0a3R3aGNrY0hjQ1JqOHFzMEFZZXNuVFlyMkdTNnZwN0s1RWUxWm96amN1ZnVrNElQSXppb3RBczRwVjFSNGhLTFM2WUxHN2s3bkFYRFB6NmtrNXJjdXJtR3p0M3VMaDlrU0RMTVJuRlMwQVpzbWs0dDdXTzJ2YmkzZTJqRWFPcEJ5b0FIektSZzlQU25XMmt3eFFYU1N5U1hEM1EyenlTSGx4akdPTVlHRDJyUW9vQXlsMEtBYWZKWlNYVjFORzIzWVpKQVRGdDZiVGpqRlMyZW4zTU02eTNHcDNGenRCQ293VlYvRUFjbXRDaWdDdFoyVWRtMXdZMmMrZk1abTNIb1NBT1BiaXFjdWp1TG1hYXoxQ2UwV2R0MHNhQldVdDNJeU9DYTFhclRYc2NOOWJXaks1a3VBNVFnY0RhQVRuODZBSzkxcFMzRVZydHVwNDdpMS8xZHhrRitSZzV5TUhQZWxzdEppdEwxNzN6NXByaVNQWTd5RUhkem5PQU9QVGppdENpZ0N0UFpSejNscmRPemg3WXNVQVBCM0xnNW9zN0tPemE0TWJPZlBtTXpiajBKQUhIdHhWbWlnQ3RwOWxIcDltbHJDenNpbGlDNXllV0pQODZvLzJDcXp6eXc2bGZRZWZJWldTTjFDN2oxL2hyWG9vQXozMGxKZE5rc1o3dTVuUjNEbDVHVXVNRUVBSEdNWkhwM05UM2xsSGVOYm1SbkhrVENaZHA2a0FqbjI1cXpSUUJ6ZCsyalJhaGMrYnFGemF5T1I1MXZHU29sT1BUR1RrY2ZLYW0wdlNCTjRYdGJPN1dTQmxZeXJzTzE0enZMTGowSXpXOVJRQmx6YU51a2duaXZybUs2aVF4K2ZsV1oxem5EQWpCNTlxZGJhTkJiL2EyODZlUjd0QWtydXdKT0FSbnAxNStuVGl0S3E4OTVGQmQyMXM0YmZjbGdtQng4b3ljL2hRQkROcGNFMmpEUzJlUVFDTll0d0kzWUdNZHNaNDlLUzkwejdUZHBlUTNVdHJjcW5sbDQ4SGNtYzRJSUk2MU5aM3NkNDF3STFjZVJNWVczRHFRQWVQYm1yTkFGSFR0TGcwNlNlU0tTVjJuSVp6STJTU0IxL0hyVWR4cFBtWHozbHRlVDJra3FoWmZMMmtPQjBPQ0RnKzlhVkZBR1VOQnRGMDI3c0JKUDVWMCs5eVdCYlBHU0NSN2Q4MWN2YktPOVdFU3M0OG1aWmwybnFWT1JuMnF6UlFCbTNHa2VaZXlYVnZlVDJyekFMTUl0dno0NEI1QndjZHhVK202ZEJwbHU4RnVYMk5JWk1NYzRKN1ZOUGN3MjVpRXo3VEs0alRqcXh6Z2ZvYWptdlk0YjYydEdWekpjQnloQTRHMEFuUDUwQU12OU10NythMGxtM2hyV1FTcHRJNVB2eDA0bzFEVExmVVpMVjU5MmJhVVNwdEk1STdIMnE1UlFCUXY5TVc3dVlycUs0bHRybUlGUkxIZzVVOWlDQ0NLWmJhTEJEY3kzTHpUenl6UmVWS1pXQjNqUG9CeDZjY1ZwVVVBWlNhRmJycHIyRFhGekpDY2JDN2dtTEhUYWNjWXFXejArNWhuV1c0MU80dWRvSVZHQ3F2NGdEazFvVVVBWk11aXZJWll4cWQydHJLU1hoM0E5ZW9ERVpBL0dyVU9tMjhGOHQzSHVWbHR4YnFnUHloQWNqOGF1VVVBRllzUGgxYmVFUXdhcnFNY1FKd2l5S0FNbkovaDk2MnFLQU04YU5acloyMXJHSGpqdDVsblhCNVpnYzhrOWNuclRialM1WHVaSllOVHVyZFpmOEFXSXBWaDZjYmdkdjRWcFVVQVo4bWpXajZYSHA2K1pIRkVReU1qWWRXQnp1QjljL3pwazJqckxid0o5c3VmdEVERjQ3a3NDNEo2OXNFZTJLMDZLQUtOcllTUnJNTHU5bXZQTlhhd2tDaFFQWlFCanJWYVBRZ29paGt2N21XemhZTWx1KzNISElCT01rRGpqUGFyNXZJaHFJc2NONXBpTTJjY2JRUVB6eWFzVUFWb2JLT0crdWJ0V2N5WEFRT0NlQnRCQXgrZEZuWlIyYlhCalp6NTh4bWJjZWhJQTQ5dUtzMDJTUllvMmtjNFJBV1krZ0ZBR0N0aEpjZUpkVG1qdUpyV1JVaENTSUFRUVFjakJCQjZDdENQUjdWZExtc0hMeUpPV2FWMlB6T3g2c1Q2LzRWWWU5aFRUbXZ3eGVBUkdiS2prcmpQSDRWTEJLczhFY3laMnlLR0dldUNNMEFaOG1qSkpaeHd2ZDNUeXd2NWtkd3pneUllblhHTWUyS2tzdE4rejNUM2M5MUxkWExKNWUrUUFiVnpuQUFBQTVxL1JRQlduc29wNzYydTJaeEpiaHdvQjRPNEFIUDVWUmJRMmFNMjdhbmVOWnQxZ1pnY2owM1kzWTlzMXIxUXNOVVMvbWtXQzNuOGxjZ1RzQUVjZzRJSE9mMDdHZ0NlOHNiZThzSHNwVS9jdXUzQzhZeDB4OU9Lb2YyRUpUQzEzcUYxY21DUlpJdHhVYlNweU9nNVBiSi9TdGVpZ0JzaUxMRzBiamNqQXFSNmcxblcraXhRV005bDlydXBJSllqQ0ZrY0h5MXdSOHZISFgzclJra1dLTnBIT0VRRm1Qb0JTUXl4endSelJOdWprVU9yZW9JeURRQlZ1dExndXRPU3lkbkN4aGRqcWNNcFhvd1ByVllhSUpKb0o3dSt1Ym1XQnc4Wllxb0dPMkFNYzkrOWExRkFHWExvd2E2bWxodkxpQ080T1pvb3lNT2NZemtqSzU3NHAwZWkyc1ZoYTJhTktJcmFZVHB5TTVERnNIanBrMWFndklwN3U1dGtEYjdZcUh5T1BtR1JqOEtzVUFWb2JLT0crdWJ0V2N5WEFRT0NlQnRCQXgrZFZMcXdzTGJUcjhYUG1QYjNNaGxtR054Qk9CeGdaNHdEVndYa1IxRTJPRzgwUkNiT09OcEpINTVGV0tBT1NWTE85MUxUaFkzdHhxRXNNd2tlU1Z0d2lqQU9SMEF5VGozNHJwcjIxVzh0bWhhV1dMSkJEeE50WUVISXFlaWdET3RkS01kM0hkWFY1TmR6UkFyR1pBcWhNOEhBQUhQdlVIL0FBajhleVczRjdjclpTRm1Oc3BBVUU5Um5HY2UyYTJLS0FNdTQwTzJudDdHRXl6cDlpWEVUSXdEWkFBQlBIWGdHbndhUWlQUExjWE0xelBOSDVSbFloU3FlaTdRTVZvMFVBWkkwVm5NYVhXbzNWemJ4c0dXR1RiZ2tISTNFRExmalZpVFNiV1ZyOHliM0Y4RkVxazhEQzdSajBxOVZZWHNaMUkyRzEvTkVJbXpqNWNFa2ZueFFCUkdnckkwRFhWOWMzSnQ1RmVIY1ZHM2FjODRIUFRxZWZwVmliU2JXZDcxcGQ3aThSVWtVbmdCYzR4K2RTd2FoQk9sMDRMS3RySTBjaFlkMUFKSTl1YW5obGpuZ2ptaWJkSElvZFc5UVJrR2dESms4UGk0dHhCZWFqZDNFYVkyQWxSdHgwUEE1UDFyUUZsR05TTi91ZnpUQ0ljWitYQUpQNTgxWm9vQTUveEhKYmFrRjBXTStaY3ZNbTlRRG1KZXBZL2gvT3Q5UUZVS293QndBS1dpZ0RNbjBndGN5ejJ0OWNXaG54NXl4YlNHT01aR1FjSDNGU1NhVGF2cEM2WXUrTzNYYmphZWVHRGRUN2lyOVZqZXhqVWhZYlg4MHdtYk9QbHdDQitmTkFGbXNnYUFxU3p2RHFWL0FKcFdsWkk1RkEzTWNuSHkxcjBVQVpuOWgyZjltU1dJTW9TVnhKSkp1eTdzQ0Rray9RVTY1MHlXUzVlZTMxRzV0akpqZXFrTXA3Y0JnY0g2VmVubFdDQ1NaODdZMUxISFhBR2FiYXpwZFdzTnpIa0pLaXV1ZXVDTWlnQ29kSHREcEw2Y2ZNTVVoM014YjUyYk9keFBybm1vNU5GU1MwU0ZyMjZlV09Uelk3aDNCa1JzWTQ0eGoyclVvb0FvMmRqTkN6dGRYODEyWFhidGtDcWdIKzZCVlFlSDA4a1dwdnJsckFISXRqdHhqT2R1N0djZTJhMmFLQUt3c294cVJ2OEFjL21tRVE0ejh1QVNmejVvZ3NvNEx5NnVrWnk5eVZMZ25nYlZ3TVZab29BenI3U2x1YnBieUM0bHRMcFYyZWJGZzdsOUdCNE5MWmFXTGU2YTd1TG1XN3VpdXdTU1lHMWZSUUJnVm9VVUFWckt5anNsbUVUT2ZPbWFadHg2RmprNDlxcVRhTnVtbmEzdnJpMWp1RHVtamoyNFk0d1NNZ2xTZmF0U2lnRE91Tkhna3RyV0tCM3RtdERtQ1NQR1U0eDM2NTcwV2VrUjIxK2I5cmllZTZhTXhzOGhHQ0NRZWdISFR0V2pUSnBZNElKSnBXMnh4cVhadlFBWkpvQTVyUk5HZWZSUXB1N20zam5hVHpvVnhoL25ZZHhrWkdPbGRORkdrTVNSUnFGUkFGVURzQjBxdmQ2aEJhYWExKzVab0ZVUGxSeVFlbjg2dFVBY3ZvbWpQUG9vVTNkemJ4enRKNTBLNHcvenNPNHlNakhTdG04MG0zdW9yZEZlVzNOc2YzVHdOdFpCakdPYzhZcS9SUUJtM0drNzdoYm0zdko3YTRFWWphUmRyZVlCMDNBZ2duM3BFMFMyV0dGRExNelIzSXVqSVdHNlNUMWJqcHoyeDBGYWRGQUJWUFM5TXQ5TGhsaXQ5KzJTUXluY1FlVCtIVGlybEZBRkxUdEt0dE9obmloRE1rOGpTT0h3ZVQyNmRLcXc2SkxiaFlZZFZ1MHRGT1ZoRzNJSHB1eG5GYTlGQURKNGxuZ2toWWtMSXBVa2RjRVlxcE5wY0UyakRTMmVRUUNOWXR3STNZR01kc1o0OUt2VVVBVnIyeWp2VmhFck9QSm1XWmRwNmxUa1o5cXFQbzJMdWFlMXZyaTFXYzdwWTQ5dUdQcU1nNFAwclVvb0F4SmY3TjhQYWRMYmwzWVhCZDQ0bnl6U01RTXFPUHAxOWF0ZUg3RTZkb2xyYk1NU0t1NS85NDhuK2VLMGFLQUswMWxITmZXMTJ6T0pMY09FQVBCM0FBNS9LZ1dVWTFJMys1L05NSWh4bjVjQWsvbnpWbWlnQ2sybDJ6dmZOSUdjWG9VU3F4NDRYYng2Y1ZCRG8yMmFCcmkrdUxxTzNPNkdPVGJoVGpBSndBV0k5NjFLS0FLME5sSERmWE4yck9aTGdJSEJQQTJnZ1kvT3E4dWpXMHRsZTJyUEtFdkpUTElRUmtFNDZjZFBsRmFORkFGUFVkTmkxRHlXYVdhR1dGdDBjc0xiV1hJd2VvUFdvWjlKRHRCTERlWEVOMUNubGljRU16cjZOa1lQUE5hVkZBR2ZEcEVFZGhkV3JTU3lHNkRlZE14RzlpUmpQVEE0NmNVbDVwNWtpMDZHSm0yV3M2T1NUenRWU09mWHRXalJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGYy9ydmcvU2RhM1N2RjludVQveTJoNEpQdU9oL243MTBGRkFIbkkwVHhqNGJKL3NxNysyMnE5STg1NC8zRzZmOEJOU3hmRVM4c25FT3M2SzhVbmNwbEQvM3l3L3JYb05Oa2pTVkNraUs2bnFHR1JRQnljSHhGMENVRHpEY3duL2Jpei9JbXBQK0V6OEtmYVB0bjJyL0FFblo1ZTd5SDNiYzV4bkhUUE5hMDNodlE1K1pOSnRNK3F4QlQrbFZaUEJuaHlSZ3phWEdEakh5dXkveU5BR2ZQOFJkQWlCOHMzTXgvd0JpTEg4eUt4Yi9BT0o4aEJXdzAxVlBaNTN6L3dDT2ovR3VwSGdydzJPbWxwK01qbit0TC93aG5oei9BS0JjZi9mYmY0MEFlYlNhMWQrSVpDdXNhK3RuYlo1akVia2ZncURCL0UxMHVoWGZnUFJDc3NkNlo3a2Y4dHBvSkNSOUJ0d1A1KzlkSi93aG5oei9BS0JjZi9mYmY0MGY4SVo0Yy82QmNmOEEzMjMrTkFFWC9DZGVHZjhBb0pmK1FKUC9BSW1qL2hPdkRQOEEwRXYvQUNCSi93REUxTC93aG5oei9vRngvd0RmYmY0MGY4SVo0Yy82QmNmL0FIMjMrTkFFWC9DZGVHZitnbC81QWsvK0pvLzRUcnd6L3dCQkwveUJKLzhBRTFML0FNSVo0Yy82QmNmL0FIMjMrTkgvQUFobmh6L29GeC85OXQvalFCRi93blhobi9vSmYrUUpQL2lhUCtFNjhNLzlCTC95QkovOFRVdi9BQWhuaHovb0Z4Lzk5dC9qUi93aG5oei9BS0JjZi9mYmY0MEFSZjhBQ2RlR2YrZ2wvd0NRSlA4QTRtai9BSVRyd3ovMEV2OEF5QkovOFRVdi9DR2VIUDhBb0Z4Lzk5dC9qUi93aG5oei9vRngvd0RmYmY0MEFSZjhKMTRaL3dDZ2wvNUFrLzhBaWFQK0U2OE0vd0RRUy84QUlFbi9BTVRVdi9DR2VIUCtnWEgvQU45dC9qUi93aG5oei9vRngvOEFmYmY0MEFSZjhKMTRaLzZDWC9rQ1QvNG1qL2hPdkRQL0FFRXYvSUVuL3dBVFV2OEF3aG5oei9vRngvOEFmYmY0MGY4QUNHZUhQK2dYSC8zMjMrTkFFWC9DZGVHZitnbC81QWsvK0pvLzRUcnd6LzBFdi9JRW4veE5TLzhBQ0dlSFArZ1hILzMyMytOSC9DR2VIUDhBb0Z4Lzk5dC9qUUJGL3dBSjE0Wi82Q1gvQUpBay93RGlhUDhBaE92RFAvUVMvd0RJRW4veE5TLzhJWjRjL3dDZ1hILzMyMytOTmJ3VDRiYkdkTVRqMGtjZjFvQXF5ZkVIdzhneXMwMG5zc1IvcmlzcTkrSjlxb0lzdE5sa1BZek9FL1FacmZIZ253MlArWVl2NHlQL0FJMDcvaERQRG4vUUxqLzc3Yi9HZ0R6dTg4WjYxcThua3lhakZwMERkVEdyQWZtb0xWZjBXRHdSWk1KOVIxWTM5eG5KRHdTaU1INmJlZngvS3UxLzRRenc1LzBDNC84QXZ0djhhUDhBaERQRG4vUUxqLzc3Yi9HZ0NGUEhIaGRFQ0pxSVZWR0FCQklBQi8zelMvOEFDZGVHZitnbC93Q1FKUDhBNG1wZitFTThPZjhBUUxqL0FPKzIvd0FhUCtFTThPZjlBdVAvQUw3Yi9HZ0NML2hPdkRQL0FFRXYvSUVuL3dBVFIvd25YaG4vQUtDWC9rQ1Qvd0NKcVgvaERQRG4vUUxqL3dDKzIveG8vd0NFTThPZjlBdVAvdnR2OGFBSXYrRTY4TS85QkwveUJKLzhUUi93blhobi9vSmYrUUpQL2lhbC93Q0VNOE9mOUF1UC92dHY4YVArRU04T2Y5QXVQL3Z0djhhQUl2OEFoT3ZEUC9RUy93RElFbi94TkgvQ2RlR2YrZ2wvNUFrLytKcVgvaERQRG4vUUxqLzc3Yi9Hai9oRFBEbi9BRUM0L3dEdnR2OEFHZ0NML2hPdkRQOEEwRXYvQUNCSi93REUwZjhBQ2RlR2YrZ2wvd0NRSlA4QTRtcGYrRU04T2Y4QVFMai9BTysyL3dBYVArRU04T2Y5QXVQL0FMN2IvR2dDTC9oT3ZEUC9BRUV2L0lFbi93QVRSL3duWGhuL0FLQ1gva0NUL3dDSnFYL2hEUERuL1FMai93QysyL3hvL3dDRU04T2Y5QXVQL3Z0djhhQUl2K0U2OE0vOUJML3lCSi84VFIvd25YaG4vb0pmK1FKUC9pYWwvd0NFTThPZjlBdVAvdnR2OGFQK0VNOE9mOUF1UC92dHY4YUFJdjhBaE92RFAvUVMvd0RJRW4veE5IL0NkZUdmK2dsLzVBay8rSnFYL2hEUERuL1FMai83N2IvR210NEs4TnQxMHhQd2tjZjFvQXJTL0VIdzZneXR4Tko3TENmNjRyTHZQaWRacUNMUFRwcFQyTXJCQittYTNSNEo4TmovQUpoaS93RGZ4LzhBR25mOElaNGMvd0NnWEgvMzIzK05BSG50NzQzMXJWWlBKKzJ4YWRDM0JNYXNNZlZnQzM1VlowZTI4RjIwZ3VOVjFscitjbkpVd1NoTSsveTViOGZ5cnVmK0VNOE9mOUF1UC92dHY4YVArRU04T2Y4QVFMai9BTysyL3dBYUFJSS9HM2hXR05ZNHI5VVJSaFZXM2tBQTlodHAzL0NkZUdmK2dsLzVBay8rSnFYL0FJUXp3NS8wQzQvKysyL3hvLzRRenc1LzBDNC8rKzIveG9BaS93Q0U2OE0vOUJML0FNZ1NmL0UwZjhKMTRaLzZDWC9rQ1QvNG1wZitFTThPZjlBdVAvdnR2OGFQK0VNOE9mOEFRTGovQU8rMi93QWFBSXYrRTY4TS93RFFTLzhBSUVuL0FNVFIvd0FKMTRaLzZDWC9BSkFrL3dEaWFsLzRRenc1L3dCQXVQOEE3N2IvQUJvLzRRenc1LzBDNC84QXZ0djhhQUl2K0U2OE0vOEFRUy84Z1NmL0FCTkgvQ2RlR2Y4QW9KZitRSlAvQUltcGYrRU04T2Y5QXVQL0FMN2IvR2ovQUlRenc1LzBDNC8rKzIveG9BaS80VHJ3ei8wRXYvSUVuL3hOSC9DZGVHZitnbC81QWsvK0pxWC9BSVF6dzUvMEM0LysrMi94by80UXp3NS8wQzQvKysyL3hvQWkvd0NFNjhNLzlCTC9BTWdTZi9FMGY4SjE0Wi82Q1gva0NULzRtcGYrRU04T2Y5QXVQL3Z0djhhUCtFTThPZjhBUUxqL0FPKzIvd0FhQUl2K0U2OE0vd0RRUy84QUlFbi9BTVRSL3dBSjE0Wi82Q1gvQUpBay93RGlhbC80UXp3NS93QkF1UDhBNzdiL0FCby80UXp3NS8wQzQvOEF2dHY4YUFJditFNjhNLzhBUVMvOGdTZi9BQk5IL0NkZUdmOEFvSmYrUUpQL0FJbXBmK0VNOE9mOUF1UC9BTDdiL0dqL0FJUXp3NS8wQzQvKysyL3hvQXF5L0VEdzZnTzI1bGt4MldGdWZ6eFdaZGZFeXlIeTJPblhFN25nZVlRbWZ5elhScDRWMEJHeU5KdGlmOXBNL3dBNjBiYXhzN1FZdGJTQ0FmOEFUS01ML0tnRGdUcUhqbnhCOGxyYS93Qm5XN2Z4N2ZMNC93QjV1ZjhBdm1yMmsvRHUxamwrMDZ4Y3ZmVEU1S0FrSm4zUFZ2MHJ0NktBR1F3eFc4S3hRUkpGR293cUlvQUg0Q24wVVVBRkZGRkFCUlJSUUFVVVVVQUZlUWZFdi9rYkgvNjRwL1d2WDY4ZytKZi9BQ05qL3dEWEZQNjBBY25TcXBaZ282azRwS0tRSG9uaVRYYnJ3bGRXZWo2T2tVVU1NS3ZJV1FFeXNTYzUvTDY4MUY0STFBNnI0MXY3MWJlRzJlVzBjN0kvdTUzSnlmZjFxRzQxYnd2NGpqdEx2VzVibTJ2b0VDU0NOU1JNQjdnSDM5T3RWOUExelE3RHhYZTNhUXZaYWZKYnRGR29CYzVKWG52ak9EOUtZRS9pclZ2RkZoYUN6MUc5czVvcnRHVWlCUWVCak9UZ1k2MXRXVGVJVjhGNk4vd2o2Szc3RzgzZHM2WjQrOGZyWEszVm40TFcxbWEyMVRVSG5DTVkxWk9DMk9BZmw2WnBOUjErTStHZEZ0TEc2bGp1clRjWlF1Vnh6eHozb0EzUEYxOWRhZlk2TGUzbmtSK0lJbVptMkFIQ2M5ZjA5czV4VTgzaXZWazhCMityQ1dQN1c5MFlpM2xqRzNEZHZ3RmN6NHYxVFR0Yit4YWhic1Z2V2lDWFVlMGdaSFFnOSs0L0ttemFyWnY0RHQ5S1YyKzFwZEdVcnRPTnVHNy9BSWlnRFQwMjVsdmZCSGlhNm5JTXMweU81QXhrbGdUWFJhY05hUGczUnY3R3VyV0J2TFBtRzQ3alBHT0Q3MXhPbGFyWjIzaERWOU9sZGhjM0xJWTFDa2c0SXp6MnBkYjFXenZQQytpMk1MczA5cUhFb0trQVp4am52UUJ2ZUVOVXZ0VjhhWEV1b1NKSk5GWnZGbEZBR0F3OVBjbXB2QW4yL3dENFF6VVA3TWxoaXUvdFEyUE45MGNKblBCN1pybXZCT3EyZWo2ekxjM3JsSW10MmpCQ2x1U1I2ZlNydmh6VXRFSGhXODBqVnJtYUR6NXhKbUpDVGdiY2M0STZyUUJGNGcxYldyalZvZEwxVzRnbU52T2paaFViY2tEdmdkalhRZUxQRitwNk40bmUwaThxUzBWVUxST2crWUVjalBXdVgxR0h3eGJKQkxwVi9lVHpyTXBaWmt3QW5jL2RIUFN0N1Y5UThGNm5xeDFXNnViMmFRQmN3SkhoV3gyNUg5YUFNYng5cHR0cDJ2SzFtZ2podVlWbkNBWUNra2dnRHQweitOY3pXdDRtMXA5ZTFoNzFrOHRBb1NOTTUycU9uOHlmeHJKcEFGZTllSGYrUmIwdi9yMGkvd0RRQlhndGU5ZUhmK1JiMHY4QTY5SXYvUUJUQXJYOCtveWEvRllXZHlzRWIyeGtkaWdZcmhnTWpQZm9QVG1tM054ZGkvaDB0ZFFFTExCNTB0eXlMdWY1c0FBSGdkRDJxdzBVbi9DVnBONWIrVjlpWmQrRHR6dkJ4bjFxbHE4TnRGcjhkN3FGbjlvczN0dkszZVQ1b2pjTVRrakJ4a0hyUUFuOXMzVnJwMnBDUjQ3bTRzM1JFbEF3Sk4rTnBJSHBubkhwVnlPTFY3VzZ0MmU4KzJ3eU50bVV4S25sakIrWUVkczlqbnJWUzZ0N2UrOFAzaWFUWWVTU3lzQjVIbGVidFlOd01EUFFpcmFhdTEzZFc4TmxiemN0bTRNMExJSTF3ZU1uSHpaeDY5NkFJWTVOVDFLVzhsdGIwV3FRVE5ESEg1U3NISzlTeFBQSjlNVkEyclg5N0RvcldicEM5N3ZFbTVkd0dGNVA0WUpGUHRMczZSSmZ3WEZ2Y05KSmN5VFErWEV6aVVOeUFDQmpQMXFPeDArNXRmOEFoSFlwSW1KZ0V2bWxSa0psRDFQMU9LQUxWeStvUVhGanBvdmkwdHlaR2E1TVM3bFZRRGdMMDcxRllKZFJlTFprdXBoTXkyUzdKTm9Vc3U4OVFPTTV6MHFiV1MxdnF1bTM3UlNQYncrYXNyUnFXSzdnTUhBNXh4VExDU2E2OFRUWG4yV2FLM05vRWplUkN1N0RrOStuVThkY2MwQVhkU044MHR2RGFTQ0NKdHhtdU5vWW9BQmdBSGpuUDZWVzAyN3VGMWViVDVydGJ4QkNzeVNoVkJHU1FWTzNqdFVPdHFvMWExa3Y0Sko5TUViQXFxRjFXVEl3V1VkUmpwVE5KaFQvQUlTS1dlMjAxclMwYTFDcWZKOHNPUTNYR09EejM1d0tBSUxhNjFtNThPZjJ1YjlJMmppYVFSQ0ZTSEM1enVQdmp0aXIwdDdkM3Q1WjJkdE45bDgyMisweVNCUXh4a0FLTThkVFVOamJ6cDRFYTNhR1JaL3NraStXVk83SkRZR091YWFDK25YK24zdHhETDVIMkg3TzdKR1dNYlpVOGdEUGFnQ1RRMXVFMS9XRXVwRmtrVllCdlZkdTRZYkJ4Mk5TNmxkM0IxbUhUNDd3V0tQQ1pCS1VWakkyY2JSdTQ5L3hwTkdNODJ0YXBkU1cwc01VcXcrVjVpa0ZnQXcveU8yUm1wZFd1cklQOWwxS3hsa2daY3JKNUprUW4wNHlRYUFLUGlXM3ZWOEx6K2ZmNzJqQjM3SWdvbEdSalBYSDRZcTFleVgybldrVVgyMDNGeGRYQ3dwTEpHb0VlYzVPRkF6d0RWSDdGZVRlRWRRdGxpbXc3c2JXS1Q3NGp5Q0FjODlqZ0gycXpxTTh0L1oydDNEWlhTL1pMdEpYaWtpS3V5Z0VIYU8vM3Ywb0FtaG12YkxWN2V5dXJyN1hIY3h1eU9Zd2pLeTR5T09DTUdvZE5rMVRVTG02ZHI0UTI5dmR5UktpeEtUSXF0MEpQUVk0NDVweVRmMnByMW5jMjhVb3Q3V09UZEpKR3lBczJCdEdRQ2VsV05CaWtpanZ4TEc2YnIyWmwzQWpJTGNFZTFBR2QvYUYvZDJVK3BRNmxEYnFoY3hXeFJTR0NrajVpZWNuSGF0K3l1QmQyTnZjaGRvbWpXVEhwa1pybUxGTk1zSUh0TlMwcnpMdU9SOE45ajh3ekFzU0NEZzU0T09UMnJxb0Fpd1JpT1B5a0NnS21NYlJqcGp0aWdEbkxXNTFtODBXVFVSZkpDWS9NS1JpRlNKQXBQM2llblRIR09sTGV6M043ZjhBaCtlMjJSUzNFRWo1WVpDQXFoSngzOXFyYVhxUGwrR1pMTnJXNGFWL09XSHk0aXdreXpkeHdNSFBXdEdPem5ndmZENk5HeEZ2YlNSeU1veXFuWWc1UDRHZ0I4RjVkMldwWFZwZVhIMnBJN1lYS3VVQ3NCa2dyeHgycXE5NXFzR2pKcmNsNGpvVldWclVSQUxzWWpnTjF5QWV0V3JxMW1uMSs2Mm93amswN3loSVFkdTRzM0dmWG1zNmFhUzU4TlI2SXRyY0xmZVdrREswVGJWeGdGaTNUR0JuclFCcFgxeHFENi9GcDlwT2tVYjJ4a2R5Z1lyaGdNajFQYjA1cHRyZjNWbzJyUTNrdjJvV01hekxKdENzd0trNElISEcycDJpay80U3RKdkxmeXZzVEx2d2R1ZDRPTSt0VnBMT2VlKzhRUmlObEZ4Ynh4eHV3d3JIWTQ0UHRrVUFWMjFDL3RyS0RVNWRSaG1EbERMYWhGQVZXSUdGSStiSXozcnBhNWpUbjBZUTIxdkpvMkwwQlVkUHNYS3QwTEZzWXgzem10eTJ2VFBxRjVhK1N5ZlppbnprOFB1WFBIMG9Bb1hkM2MzT3J6V1VGOGxsSGJ4cXp1VlZtZG16Z0RkeGdBVlhmVjd0ZkRlb1hIbUkxelp5dEY1cXFNUGdqNXNlNE5OdllyTzExKzV1TlRzUlBiM0VjZmx5bUR6UWpMa0VkQ1JuSXArb3h3M0hoTzlUVGRQZUVTZmRpV0RZWE9SeUZBejIvU2dCYitiV2RQVzJ1VGRSelBQTXNSdFRHQWlsdUJodXZCL09waEpxRmxyTmpCY1hvdW9ydmVwVXhCTmhWZDJSajh1YzFOcjBVa3NkZ0lvM2ZiZXdzMjBFNEFia24ybzFHS1I5YzBpUkkzWkkzbDNzQVNGekdRTW50UUJGSXVwelNUeVBxSXNGRWpMREhzUmd5am94SjU1OXNWRGFhdmMzWjBLVElRWGdrODVRT0R0UW44T1JWT3pXMlJaazFQU3BMdlZUSTJkOXVYRDhuYnRZamFGeGp1TVUvU3JTNWpqOE9CN2VWVENaaEpsQ05tVllEUHBtZ0RSOFAvNnpWdjhBci9rLzlCV3Rlc0d4bmwwNjUxV09XenVHTFRTWEtPcUhZeTdSZ2J2WGpwV3haWEgydXh0N25ZVTg2TlpOcE9jWkdjVUFZYVhPcVhtbno2ckJlckRHaGtNVnY1UUtzcUVqNWoxeWNkc1ZKZDZoZlhNK2pwWXlMQUw2RjNjc29iYU5xc0Q5UmsvblZXM3VIMC9SYmpTWmJXNGE3SG1wR3FSTVZrM0VrRU5qR1BtNXllS3R4MmM4RjlvRVpqWmhiVzhrY2pxQ1ZVN0VISjk4R2dEWHRJcG9iZFVudURjU0RPWkNvVW44QnhXQ2w1cXMranlhM0ZlS2lCV2xXMU1RSzdGSjRMZGNrQ3VrcmxJWnBMYncxSm9qV3R3MTk1YndLcXhOdGJPUUdEZE1ZT2V0QUUrdkxQZG5TTGlLN2VHT1c0ajJvRVU3R0tzZDJTT1QyeDBwZFNpdlk5WTBXR081RWx3Vm5CbmtRY0RDNU8wWUhBNlZQcTF2UEJwMmxsSVpKL3NjOFR5TEV1NXRvVWdrRHYxcDhyU1hlczZQZHBiVHBHRW4zZVpHVktaQ2didlRPS0FFdDd1N3N0U3VyUzh1UHRTUjJ3dVZrS0JXQXlRVjQ0N1ZSZlVyK0hTazFoOVJoWUVMSTFtRVhHd2tjQS9leUFhdlhWck5QcjkxdFJoSEpwM2xDUWc3ZHhadU0rdk5aMm5IU0lyTzN0YnJSZDE5R3F4eUo5aTNFc09DMjdHQ0Qxem1nRFF2WnRSbThRLzJmYVhTMjhQMlVTczVqREZUdkk0ejNQSFgwclNubGF4MHVXZVZ6TTBFSmRtSUFMbFJudDB6aXFpeFNmOEFDVnZONWIrVjlpVmQrRHR6dkp4bjFxM3FVRDNXbVhkdW1OOHNMb3VmVWdpZ0RMaC90djdKYjM0dTF1REpzZDdVUktxaFd4a0szWElCN250VXNrdDlmNnRkMnR0ZWZaSXJRSUNWalZ5N01NOStnQXhVRnZxc3kyRnJaMjFwTjl2VVJ4dWtzTEJVQXdHSmJnWXhuR0Q2VS96L0FPeXRjMUNhNWltOG02OHRvNUk0bWNaVmRwVTRCd2VLQUlKZFgxRCt5b21qOHY3WXQ4TFIrUGxjaHNmZ0R4VDdtVFdMTFVMUzJXK1M1TjV1VDk1Q0ZFUkF5V0dPdkdlQ2FyclozUjArM2thM2tWNXRWVzVNZTNMSWhmUHplbkg1VnFhakZJK3VhUklrYnNrYnk3MkFKQzVqSUdUMm9BanNwcjIzMTF0UHVidjdWRzl2NTZ1MFlSbElZS1J4MUhOVWJXNDFtOTBXVFVQdDZ3bU1TRkZXRlQ1bTBuNzJlblRISHBtdEpvcFArRXJTYnkzOHI3RXk3OEhibmVEalByVmZTb0pvL0NUd1BESXNwU2NiQ3BEY3MyT1BmTkFGYTV2ZFdUUTExdjdVa1kyTEw5bEVZS0ZUamdzZWM0T2VLMURkVER4SWxudS9jRzBhWGJqK0lPQm5QME5VTDYzbmZ3SXR1c01qVC9aSTE4c0tkMlFGeU1kYzFMZnlHeDhSUVgwMGNwdG10bWhMeG9YMnR1QkdRQm50UUE5cjY1RjlyVWZtZkpiUUk4UXdQbEpWaWZyMEZVSkx2V0l2RDhldFBlcGtScEliY1JMdGRUanEzWEp6bmlwTFlYTnpjNjljTmFUUkpQQWdoRG9RWHdyanA2KzNYa1UrK3Q1MzhDTGJyREkwL3dCa2pYeXdwM1pBWEl4MXpRQmZOMU1QRWlXZS93RGNHMGFVcmdmZTNnWnoxNkdzNjJtMWkvMHc2cmJYYXFXRFBGYWVVcFVnRTRVdDF5Y2RjanJWNW9wUCtFclNieTM4cjdFeTc4SGJuZURqUHJXYnA5OUxwV2lycHYyV2R0UmhESkdua3NVYzVPMXR3NDI4alBJNzBBYVYyZFJudVVTT2I3RGJDRU84dTFXSmNuN25QQXg2NHFnWjd5NnNOV3MydnR6Mm4vTGRFWDk0aFRPQ09udGtVbDRFWFcyazFxMWU0Z01LQ0RiRTBzYXR6dkcwQThrOU05cU5MdFpHT3RpS3dhempuVlJER1UyQS9JUjlPdko5TTgwQVBzQmVXWGhNM1gyNTVDdGdIaVJvMUFqSVRJNkRudDFxWnJ5OXU1ckd5dDdnUVNTMnYyaVdiWUdPT0JnQThjazFEYnl5eitFNTdIN0ZkUnp3MkppSWtpSTNOc0l3dnIwL1dqRW1uM3VuMzgwTXBnRmw5bmtLSVdNYmZLY2tEbkhHS0FKQmYzc0Zyck52Tk1zczlqRDVrYyt3RGNDaEl5T21RUlVNOTFxMXRwVU9yeVhpRUh5MmUxRVEyN1dJR04zWFBQWHA3VWVYTmR3ZUlMeU9DVVIzVnY1Y0tzaER2dFJobmIxNUo0cWZWWUpwUENTUUpESTBvU0FiQXBMY011ZVBiRkFHeGNSeVN3T2tVeGhjOUpBb0pYOER4WE1hTlBjYVo0VWwxQnJscGtRU2JJR1JRQTNtRVp5Qm5rL3pycTY1dUhUN21md1BMWkNKa3VHRW1FY2JUL3JHSTYrdjlhQUxFc21wNmJMWnkzTjZ0MGs4eVF5UitVcWhDM1FxUnp3ZlhOSjVtcVh1dGFqYVEzb3RyZTNhUERDSldiNWtCd004WTZubW1YZDJkWGtzSUxlM3VGa2p1WTVwdk1pWkJFRjVJSkl4bjZWYzA2S1JOYzFlUjQzVkpIaTJNUVFHeEdBY0h2UUJMclVVc21rWEFpdUdoS3hzU3dVSGNOcHlPZldzMndGNVplRXpkZmJua0syQWVKR2pVQ01oTWpvT2UzV3R1OWphYXh1SWtHWGVObEgxSXJFdDVaWi9DYzlqOWl1bzU0YkV4RVNSRWJtMkVZWDE2ZnJRQkpDZGFPbUMrRndzMDhzU2xMWVJxRlFzUnpucWNESnBKTGk4MCsrczFrMU1YaVR6Q0Y0MmpSU3BJSkJHMzZkODB1cHhYWC9DTjJxUlJ5a0tJdnRFY2VRNWpHTndIZk5VWllyS2E2MDF0SzBsa1NPNVJwSjF0akhnWUl4eUFUMTVQVGlnRFFtMUM2UnZFR0pQK1BPTU5EOG8rVStWdS9IbjFxdlBkYXRiYVZEcThsNGhCOHRudFJFTnUxaUJqZDF6ejE2ZTFQbnQ1eTNpYkVNaDg2SUNMNVQ4NThuSHkrdlBIRlNhckJOSjRTU0JJWkdsQ1FEWUZKYmhseng3WW9BdGk2bVBpUjdQZis0Rm9zb1hBKzl2SXpucjBGWkZ0ZGF6YytIUDdYTitrYlJ4TklJaENwRGhjNTNIM3gyeFdvc1VuL0NWdk41YitWOWlWZCtEdHp2SnhuMXFuWTI4NmVCR3QyaGtXZjdKSXZsbFR1eVEyQmpybWdDYWE5dkwyOHM3TzFtRnI1dHQ5cGtrMmh5QndBb0I0Nm1uNlJjM3phbnFGbGV5cEw5bUVXeDFUYnVEQmprajE0SDVWVkFuc0wzVDc1N1dlV0w3RjluY1JJV1pHeXA1WHIyeFROUHZaVjFMWHIxN1YwS1F4U0xDM0RFQlhJejZFNC9XZ0RvTGlVUVcwc3hHUkdoZkhyZ1pybXJ1NzFxRHc5L2JDMzBiRjQxazhqeVFGUU5qRzA5Y2pJNjU3MXZPV3Y4QVIyS0xzYTRneUZKNkZsNmZyWE1hamZuL0FJUTAyQXRiaGJpS0JJNWc4WlZZOXVBVHVQQnpqakdhQU9odkxxYUxXOU90a2JFVTZ5bHhqcnRDNC9tYWE5NWNMNGdsdFYrZUpiSVNySGdETDd5T3Y0Q29kWlpyZlZ0TXZuamthM2g4MVpHUkN4VGNCZ2tEbkhGVmxlOXZOWnZicTN0cG9RMWg1ZHZKSWhYYzI0a0hucHllaDdjMEFNdmJyVmJEVFA3Um4xRkJPcXJJOW1ZMEM0SkdWejk3alBYUGFyeS84ampKL3dCZUMvOEFveHE1KzVndFovRGoyOXRvODBtcCtXUE5aN1k3MVlZM0V1UnlUempCNzF1M0RTMjNpZExrMnM4a00xcXNJZUpOd1Z0NVB6ZWd3ZXRBRUx6WGQ5cG1zcWJwby9JdUpVVXFpbjVBZ08za2UvWHJTYWZEcUVIaFpab2I1NUpQc2FQQ2hqVENFS0RnY2Mrbk5UV05yT2JYVzRqRXl0TmN5K1h1R053S0tBUm50NzFONGV1R2ZUWUxXUzB1WUpMZUZFWXpSbFFTQmc0UGZwUUF5ZlZKSjdQUzJ0R0N5MzBpZHM3Vnh1ZnI2QVlxNXFiWG9oalN4d0hra0N0SVFENWE4NWJIZnArdFltZ1draWE1ZFF2ZzIrbmJrZy83YUhkK2d3UHhxNzRqVjIreHRKRkpOWUxJVGN4eGdra1krWElISkFQVVVBSmIzTjFhNjFiMmNsK0wySzRSemtxcXRHeTRQOFBZNXFPemZWdFNONlV2MXRrZ3VaWW85c1NzV3dlTTU3RGdldnZVTnZGYnllSWJDZlQ5TGEzdFVTVU5NTGZ5d3hJR01qQU9PT3A5YTBkQmlraWp2eExHNmJyMlpsM0FqSUxjRWUxQUZLUFZyeTkwL1NGaVpZSjc4dHZsQzd0Z1VFbkFQYzQ3MHRwSGR4ZU1CSGRUaTR4WXNVazJoU1J2WGdnY1orbFU3T0c0c3RNMEc2bXRwdHRxWkJNZ1FsMERBak8zclYrMGxsdlBGQXUwdHBrdFJadEdrc2lGZHgzcWUvVDJ6NkdnQzFxdHpjaThzckMwa0VMM1JjbVlxR0tLb0JPQWVNbklxTU5xZG5IZXBjVGZhSTBnTWtOd1VWU0d3Y3FRT0QwQjZVYXdIZzFQVHRROHFTU0NEekVsOHRTektHQXdjRGtqSTVwRGV6YWpEZmlDQi9zZ3R5c2J2R3l0STVCemdIcU1ZN2RhQUliR1RWSDBjYWxjM3dKYTFNaXdwRW9HZHVRU2V1ZS9wVFpOUTFGNE5DVzNsUVMzc2VaV2RRUm55d3hPUGJrNDRxNWJ4U0R3cEZDWTNFb3NncFFnN3M3TVl4NjFUZ3Q1dzNobk1NZzhtSWlYNVQ4aDhuSHplblBITkFCNW1yeGF4L1pZdjFsRXNQbmVlOFNob2dEZ2dBWUJ6a2RhbHRiKzZ0SDFhRzhtKzFDeGpXWlpOb1ZtQlVuQkE0L2hxZG9wUCtFclNieTM4cjdFeTc4SGJuZURqUHJWYVN6bm52dkVFWWpaUmNXOGNjYnNNS3gyT09EN1pGQUZkdFF2N2F5ZzFPWFVZWmc1UXkyb1JRRlZpQmhTUG15TTk2MjlVbWUyMHE4dUlqaVNLRjNVa1o1Q2tpc0xUbjBZUTIxdkpvMkwwQlVkUHNYS3QwTEZzWXgzem10blhQOEFrQTZoL3dCZTBuL29Kb0F5cGJyVnJiVElOWGx2RVpUNWJTV29pQVhheEF3RzY1NStudFU3eTZuZDY3ZTJkdmVMYjI4S3h0dUVhc3dKQjRHZlhIZlBTcU10MCtvNkJhNllscmNMZHVJUXdNUjJxRktrdHU2WXdQV3RheGlrVHhEcXNyUnVzYnBCc1lnNGJBYk9EM3hRQlhsdXJxNTFLNHNvOVJXelcwVkF6bEZMU3N3em5uZ0RHT2xWNDlYdkRGWXp5U3BzUzhhMHVkaWphL1pXejJHY2REM3BMbUt4dE5ldnB0VXNSTkRjQ05vWlRiK2FCaGRwWGdIQjRxM2Mya0YvNGF1SXJHME5xSFV2SEg1WGxuY0RrSEh1UUtBR2FqcTA5cmQ2aEloRFc5bGJLV1FnZk5LeDQ1NjRBeCtkTU4zZldNOW5KTnFjVjJzOHl3eVFxaWpZVzZGU09lRDY1cUZMQzh2UEN0K1pJU2w3ZWxwVEd3d1J5TnE4K3lqODZtc1p0RWxuZ1dEUjlsenVHUjlpMm1FK3BiR0JqMUJvQWtFdXBYdXM2amFRM2d0b0xkbzhPSXd6Zk1nT0Juakdjbm5OVnA1cnkrOEw2aUpiclpMYW1lS1IwUVltQ2dqb2VtZmF0SFRvcEUxelY1SGpkVWtlTFl4QkFiRVlCd2U5VkxhMHVHMFhXNFBKZFpKcHJueTFZWTNiczRJejJQclFCSEk5OXB2aE9XN1cvZVdRUVJ0RnVqUWVYMDZZSFBYdjZWZHZaN3VmV0UwMjF1UHNvV0R6NUpRZ2RqODIwQUE4RG9hb1hjazE5NFB1TFdPeHUwbWpoUk5ra0pCWThaMmp2MHEzZXViRHhDdW9UUnlOYXlXdmtsNDBMN0dERThnYzRJUFdnQmk2aGVSV0dzUlRTSzl6WUl4V1lLQnV5bTVTUjB6VU05MXExdHBVT3J5WGlFSHkyZTFFUTI3V0lHTjNYUFBYcDdVTERQYzJPdjNnZ2xVWGtaRU1iSVE3Qlk5b08zcnllZ3FmVllKcFBDU1FKREkwb1NBYkFwTGNNdWVQYkZBR2xxa3oyMmxYbHhFY1NSUXU2a2pQSVVrVmpTM1dyVzJtUWF2TGVJeW55Mmt0UkVBdTFpQmdOMXp6OVBhdFhYUCtRRHFIL1h0Si93Q2dtc09XNmZVZEF0ZE1TMXVGdTNFSVlHSTdWQ2xTVzNkTVlIclFCczJkMU5McmVvMnp0bUtCWWlneDAzQnMvd0FoV2RjNnBlUjZQclZ3c3VKTFc1YU9JN1I4cWpieDA1Nm5yVXJYSDltZUlMNmE0aG5NVjFIRjVUUnhNK1NvSUs4RHJ6VkI3ZThtOE42NEdzNWttbnVtZEl0cExFSFpqR092NGVob0ExWmY3U3M5THZieTR2UkpLdHU3ckdzWUNSc0FUd2VwL0dxY3QxcTF0cGtHcnkzaU1wOHRwTFVSQUx0WWdZRGRjOC9UMnJWMXova0E2aC8xN1NmK2dtc09XNmZVZEF0ZE1TMXVGdTNFSVlHSTdWQ2xTVzNkTVlIclFCcFNTMzEvcTEzYTIxNTlraXRBZ0pXTlhMc3d6MzZBREZWbjFpN1hRNUpYTWFYRVZ6OWxsbTI1Uk1OdEw0OU1WTDUvOWxhNXFFMXpGTjVOMTViUnlSeE00eXE3U3B3RGc4VTNUM2xzTkxtdUxteG5kYnE1a2xhSlUzTkdqRTQzTC9NZTlBRnExKzFXMGNsMU5xWXZyVVJGeCs3VUhJNTRLOEVZeldXK3BYOE9sSnJENmpDd0lXUnJNSXVOaEk0Qis5a0EwdHZiUlhHb1MvMlBESmIya3R2SWsrNk5vNDJjakM0VWdjam5PQlVlbkhTSXJPM3RiclJkMTlHcXh5SjlpM0VzT0MyN0dDRDF6bWdEUXU3cTVuMXQ5UGp2eFlCSTFaRHNWbW1Kem5HN2pBeDI1clZ0RXVJN1pFdXBWbW1HZHpxdTBOenh4OUt6TlZ1ZFBlUjdYVTlQbWVNZjZ1UXdHUld5UDRTdVNEK1ZNMGFXOXRZYlMybXRaMmpta2wydkpuZEJHT1VEKzU2Y21nRGNvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS3lQRmswdHY0VjFPYUNWNHBVZ1lxNk1WWlRqcUNPbEFHdlJYbW1qWCtrU05iTmFlTE5hdTlWMmJrdEpwcERGSkx0enNPVXhqUEhXcDlETWVwK1RKTDR5MUMzMXBpREphU1NCRVYrNkNJZ1ovQ2dEMFNpZzV4eDFybGZDOCtzdjRqMXFEV1o0WGxpU0FySGJzM2xJQ0grNkc5ZU0wQWRWUlhFZUpkUDFIU1lQN1V0dkVPb1M2Zzl5cXdXclArNWtMTjl3UmoyeitWYVhpTFU3cTVTODA3U1pERzl2QzBsMWRyL3dBc2NMa0l2KzJmMEhQWEZBSFMwVngxeGM2MjN3NHRidlQ3bUlUaXk4eTRtdUdZeWJRbVNWSS9pOXpXdEZxeTZmNFYwKzd1UE1ubWxnaVZFQjNTVFNNb3dCNmtuK3BvQTI2SzVMdzdMcXYvQUFtR293YW5kTkk1dG81ZkpWajVVSkpQeXFQWVlHZTlkYlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlhDNlhvczkzcit2V0VuaURXeEZhbUpZeUx3N2h2VU9UMDY1R1BvVFVkbG9NOXg0bTFQVEg4U2E4SWJXT0owWVhwM0V1RG5QR08zcFFCMzFGY0ZwdXAzZWwrS2I1N3krbWwwczNQMk0rZklXRUxCQXlOejB6OHdPTzVGVjdiVk5lbDFmVkx1Q1NaM3VOTWE3dExSaVdXTWVadFRDZE4yMVFmY21nRDBXaXVFOE9wYTN0eGF6Vy9qTy9tdmd5dlBhenpmSzJPV1FSa0Fqb1J4bkZkbHFWbi9hRmpMYS9hYmkyOHpINzIyZlpJdUNEd2UzVEgwb0FzMFZ3WXNaZFA4WFcxdGJhN3JGekZhUk5kWHYybTZNaUJNZkt1TURKUHYycXBvbXVXT3JhamJYZXArS3JxQzhrbER4MkVER09CUnUrVkhPM0RaNHprOTZBUFI2Szg4MWpYN085MSs5dGRSOFIzT2sybHJKNU1VZG1XV1NSZ1BtWm1BT0JuajA0clk4UXcyYTZmYmFoZGVKdFJ0Tk5TSkVWclNRN3BXUFJ5eWdrNUh0NzBBZFhSWG44bXUzK24rRExEN1JxaXJOZlhEUnBmUGh6SERrbmNjWkJiQTZlL3JXdDRVdUxHZTB2am8vaUM1MWE1S2c0djVHSWpiQndRcEFJVWs4NDlLQU9xb3JtUEJ0eHFjMCtzcHEwNnkzRVYzc0lqWmpHbnlqaEFlZ3JwNkFDaWlpZ0Fvb29vQUtLS2p1SXZQdDVZZk1lUHpFSzc0emhseU1aQjdHZ0NTaXZPckwrMTdQdzdyOTNaNmxxTjNjd1hiMmllZEtadkxqVndDNFgrOWdtdFR3M0RaVFgwTnpwM2pHOXZ5dVROYlhFNGZlTWRrSUJYazUvU2dEc2FLNXp4L2N5Mm5oUzRtaHVaYlpoSkdETEM1VmxCY0E0STU2Vm02RTFqTEJmM1dnZUpkUzFXN2p0M0NRWHR3V1VOajVUdFpSM0E1NmMwQWRyUlhtMmhYczh1b2FPMWo0ZzFDOHY1NUI5dXM3by91MVRCTGxRUmdZNkRCT2Fndk5RdkROZlNTNi9md2E5RmRHTzNzVWIvUjMrWWJWQXh0UEJHU1R4M29BOVFvcmt2R054cmxzbW52QlBCRFp0UEFzNWpaaEtYTDhnSHB0L1dwdkViWGQvNGgwN1FyZStuc29aWTN1SjViZHRzaEM0QUFidHlhQU9ub3J6NjQxSFY5UDBuWDlOUy9tbWZUWm92OUxjaHBWZ2NaSnllckFaNTYvcFZ6d3JPeDhReVFhYnJWNXFtbkMzM1RtOVlzOFVtY0FBa0FnOEhJeHgrVkFIYTBVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVjVCOFMvK1JzZi9BSzRwL1d2WDY4ZytKZjhBeU5qL0FQWEZQNjBBY25SUlJTQUtLS0tBQ3ZSTFJoWWVDOUp1Ylh3OWI2bFBOdkVoYTMzc0FHUEpJR2E4N3J0cC9FVTJuZUNkSGkwelVVanVRWEV5SVZaZ01rakk3VXdOSzcwdXhmVS9EZDgrbVJXTTkzSVZuczlnQ2tBZFN2OEE5YnZYRmVKbzQ0ZkVtb3h4SXFJdHc0VlZHQUJuc0t1NkxxOXhkK0xkUHZkVXZTNFNRWmttYkFVZnlBcloxZnc3cE9vNnRkWHErS3RPakU4clNCU3luR1QwKzlRQlExbTJ0NC9BT2h6cEJHczBramg1QWdETnkzVTk2TGkydHg4TTdXNUVFWW5ONlZNdXdiaU1OeG5yaXJkZ2RPOFFlRUxQU1p0VGhzTHV5a1poNTV3cnFTVHdmeC9Tb3ZFVnhwMm4rR2JMdy9hM3FYMGlUbWVhV0UvS092QVBJNy9wUUIwbDFieGFmYTJ2OWwrSExYVk5IYUVHU1ZGRHlzZlgxUDYvaFhtRjAwVFhVclFSTkRFWEpTTm0zRkJuZ1o3MTMyazJtbDJkM2JhaG8vaWxiU3hHMXByYWVVQnpqcUN1Um5QMCtsY2o0bnZMYlVQRVY3ZDJZeEJKSmxlTVo0QUovRTVQNDBBWlZGRkZJQW9vb29BSzk2OE8vd0RJdDZYL0FOZWtYL29BcndXdmV2RHYvSXQ2WC8xNlJmOEFvQXBnYU5GRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBRlhUTEpkT3NVdFVjdXFsanVJNTVZdC9XclZGRkFCUlJSUUFVVVVVQUZNU0tPT1NSMVVCcENDNTlTQmorUW9vb0FmUlJSUUFVVVVVQUZGRkZBRFpFV1NObzNHVllFRWVvTktpcWlLaUFCVkdBQjJGRkZBQzBVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFGTzl0N3laMGUwdnZzMjBFTXJSQjFiOVFmMXFPejB0WVk3azNNcHVacnIvWFNNTnU0WXdBQU9nQW9vb0F2Z0JWQUF3QndCVmJVN0pkUjA2YXpkeWl5akJZRGtjNW9vb0F0VVVVVUFGRkZGQUJVVjBrMGx1eVc4d2hsT05zaFRlQno2WkdhS0tBSU5Nc1JZUU9wbE0wc3JtV1dVakc5ajN4Mkh0VnlpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDb2J5M0YzWlQyek1WRTBiUmtqdGtZb29vQWRieENDMmloQkpFYUJBVDN3TVZKUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBRU41Ymk3c3A3Wm1LaWFOb3lSMnlNVTYzaUVGdEZDQ1NJMENBbnZnWW9vb0Frb29vb0FodkxjWGRsUGJNeFVUUnRHU08yUmluVzhRZ3Rvb1FTUkdnUUU5OERGRkZBRWxGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJXWjRtdEo3L3czcUZwYXA1azgwTElpNUF5VDduaWlpZ0NXMWl1cmZRSVlZa1FYa2RzcXFzaCtYZUZ3QVNPMmZTdVYxaTE4UitJN1lhZGRlSHJXeUpaYzM1dVVrMkFISktBRGNENlVVVUFkdjBYMUlINTF4K2pONGpYeFRkMzEzNGQrendYd2lSMisyeHQ1SVFFWndPV3puMm9vb0Fyd1NlSzAxYVhVTHp3djl0blVzdHUzMjZKRWhRLzNWNTVQY2s1UFRpdERWdkJtamFuQmRYMHVsNTFLZU12L0FLOStKTnZBKzhGNi9oUlJRQldYU3RRMG53RkhwV202TjU5MWRRTkhjcDlwVmZMZGt3elpZa0huc0RWdlQ5Ry90dnc5YmFmNGswWHlQc20xSTArMDd0KzFBTitVSXgzNG9vb0FyYUw0T3ROSzhZelh0dFllVmFSd0w5bWZ6aTJIT1EvQllub2UvSHBYWVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUJ5Zmh5UFhFOFQ2cGQzMmkvWmJlK0tOdisxSSt3b3UwREE1T2V2YkZhT24yRjFENHUxZStraTIyMXhGQXNUN2g4eFVIUEdjanIzb29vQXIyT2dpNGsxNkRWYlFQYVh0MkpFVXQ5OVFxNFBCeU9SN1UyN3NOVWg4VXo2anAxckN5THBxd1JlWXdWQzRrenR3T1I4dmZHS0tLQU0rN3ROZjhBRUY5WWk4MEczMHdXMDZUUGVmYUVsY2hUbkNiZVJuM3JzcG5lT0NSNDR6SzZxU3FBZ0ZqamdaUEF6UlJRQmhlRzlHbnQ5THU1TlRHTlExSjJrdXRwQjI1NENBOU1BZjFyQWZSUEVOeG9jWGhXYlRMWmJPTjFIOXBDWWNJclp5RTZoaU8vdWZyUlJRQmV1TERYTkp2ZFZqMDNTWU5SdGRUa011OTVsak1UTU1FTUQ5NGQ4Q3BMU0x4RjRiMDJ5MDZ4MHFIVllZb0FHY1hJaVpaQ1NUOTdxdlBGRkZBRlNMd3hxbHJvdHBjUkpidnFWdmZQZkMyemlJYnVzWVBiQXhnK3RYdExzOVhsMXk5OFEzdWx4MmsvMlQ3UERacE9ydEtRZDJXY2Nja0FEMitsRkZBRFBDNjY5QnJOKzEvb1gyVzN2cGpPWmZ0YVA1WjJnQmNEazV4MTRycmFLS0FDaWlpZ0Fvb29vQUtqdUhranQ1WGhpODZWVUpTUGR0M25IQXllbWZXaWlnRGp0Q1R4VFlXZXA3ZERoaW1tdTN1MEUxMHJCdDU1UWJlaEhxZXRTUjJPczZ6NGkwKy92ZEVnMGhiTnpJMG9uV1dXWGpHM0tqcDlhS0tBT2oxaWJVcmV6RW1sMmtkM09IR1lwSDJibDc0UFk5T3Rjei9ZdXM2M2U2anFGN2JSNlJKUFlOWlJSSktKR0pKenVkbDR4MitsRkZBRWNlbmVJZFRmUjdPKzBpMnNZOU5tamthOFNkV0xoT3lLT1Z6NzFYZlJ2RWFhTGNlR3Y3S3RibTNsa2NwcU1reWphR1luY3lmZUxEUFVmclJSUUJwZUs3WFc1TEd4MDdUdExOL0hDWVpXdURjSkdTeUg3dTF2WEhYM3FUVXJmWEpMclMvRUZycGlHK2hqZUs0c0d1RjVWdW1INlpHTTBVVUFaOG5oM1c3dXl2ZFNramdpMU80dllic1doY01oV0lZV05tNkgvd0NzSzBOTHN0WDFEeFBGcldvNlpGcFlnZ2FMeTFtV1Y1eTJPU1Y0d01kNktLQU9xb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0FyZ3ZpRDRXdk5TdVk5VHNGV1JsakVjc1pZS2NBbkREUDEvbFJSUUJ3WjBIVkFjZlpmOEF5SXYrTkg5ZzZuL3o3ZjhBajYvNDBVVUFIOWc2bi96N2YrUHIvalIvWU9wLzgrMy9BSSt2K05GRkFCL1lPcC84KzMvajYvNDBmMkRxZi9QdC93Q1ByL2pSUlFBZjJEcWYvUHQvNCt2K05IOWc2bi96N2Y4QWo2LzQwVVVBSDlnNm4vejdmK1ByL2pSL1lPcC84KzMvQUkrditORkZBQi9ZT3AvOCszL2o2LzQwZjJEcWYvUHQvd0NQci9qUlJRQWYyRHFmL1B0LzQrditOSDlnNm4vejdmOEFqNi80MFVVQUg5ZzZuL3o3ZitQci9qUi9ZT3AvOCszL0FJK3YrTkZGQUdsbzNndlZ0VHVrVjQxZ3Q4L3ZKUzZuQTlnRGttdlk0SVV0N2VPQ0lZampVSW85QUJnVVVVQWYvOWtLWlc1a2MzUnlaV0Z0Q21WdVpHOWlhZ294TXlBd0lHOWlhZ284UEFvdlFtbDBjMUJsY2tOdmJYQnZibVZ1ZENBNENpOURiMnh2Y2xOd1lXTmxJQzlFWlhacFkyVlNSMElLTDBacGJIUmxjaUF2UkVOVVJHVmpiMlJsQ2k5SVpXbG5hSFFnTWpVNENpOU1aVzVuZEdnZ01USTNNellLTDFOMVluUjVjR1VnTDBsdFlXZGxDaTlVZVhCbElDOVlUMkpxWldOMENpOVhhV1IwYUNBMU9USUtQajRLYzNSeVpXRnRDdi9ZLytBQUVFcEdTVVlBQVFFQkFHQUFZQUFBLzlzQVF3QU5DUW9MQ2dnTkN3c0xEdzRORUJRaEZSUVNFaFFvSFI0WUlUQXFNakV2S2k0dE5EdExRRFE0UnprdExrSlpRa2RPVUZSVlZETS9YV05jVW1KTFUxUlIvOXNBUXdFT0R3OFVFUlFuRlJVblVUWXVObEZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUlVWRlJVVkZSVVZGUi84QUFFUWdCQWdKUUF3RWlBQUlSQVFNUkFmL0VBQjhBQUFFRkFRRUJBUUVCQUFBQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFMVVFBQUlCQXdNQ0JBTUZCUVFFQUFBQmZRRUNBd0FFRVFVU0lURkJCaE5SWVFjaWNSUXlnWkdoQ0NOQ3NjRVZVdEh3SkROaWNvSUpDaFlYR0JrYUpTWW5LQ2txTkRVMk56ZzVPa05FUlVaSFNFbEtVMVJWVmxkWVdWcGpaR1ZtWjJocGFuTjBkWFozZUhsNmc0U0Zob2VJaVlxU2s1U1ZscGVZbVpxaW82U2xwcWVvcWFxeXM3UzF0cmU0dWJyQ3c4VEZ4c2ZJeWNyUzA5VFYxdGZZMmRyaDR1UGs1ZWJuNk9ucThmTHo5UFgyOS9qNSt2L0VBQjhCQUFNQkFRRUJBUUVCQVFFQUFBQUFBQUFCQWdNRUJRWUhDQWtLQy8vRUFMVVJBQUlCQWdRRUF3UUhCUVFFQUFFQ2R3QUJBZ01SQkFVaE1RWVNRVkVIWVhFVElqS0JDQlJDa2FHeHdRa2pNMUx3RldKeTBRb1dKRFRoSmZFWEdCa2FKaWNvS1NvMU5qYzRPVHBEUkVWR1IwaEpTbE5VVlZaWFdGbGFZMlJsWm1kb2FXcHpkSFYyZDNoNWVvS0RoSVdHaDRpSmlwS1RsSldXbDVpWm1xS2pwS1dtcDZpcHFyS3p0TFcydDdpNXVzTER4TVhHeDhqSnl0TFQxTlhXMTlqWjJ1TGo1T1htNStqcDZ2THo5UFgyOS9qNSt2L2FBQXdEQVFBQ0VRTVJBRDhBOU9vb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9xbnFlcFE2ZEFIaytabTRWQjFOYzQvaWUrWjhva1NyNmJjLzFxNHdjdGptcTRxblNmTEo2blgwVmhhZDRraXVIRVYwZ2hjOUdCK1UvNFZ1OWFseGEzTmFkV0ZWWGd3b29vcEdnVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUVRqazBqdXNhRjNZS3FqSko3VnlXdDY2MTF1dDdVbFllaGJ1Ly9BTmFxakZ5TUs5ZU5HTjVHdGNlSTdHR2Z5eHZrQU9DeUFZclR0cmlLNmdXYUY5eU4wTmVjMTJYaGVDV0hUV2FRRUNSOXlnK21CeldrNEtLdWNlRnhkU3JVNVpMUXdmRVZ3MCtyU3FUOHNmeUFmVC82K2F6VlJuenRVdGdaT0IwRld0Vy81Q3QxL3dCZFcvblYzd3JnNnNRUm45MjM5SzErR0o1N2o3V3UwM3V6R3JmMFBYVGJsYmE2WW1Ib3I5MC8rdFV1dWFGdDNYVm12SFY0eDI5eFhOMHRKb2JWVEMxUDYxUFNsSVpReWtFSGtFZDZXdU8wVFczc21FRTVMMjUvTks2K09SSlkxa2pZTWpESUk2R3VlVVhFOXFoaUkxbzNXNDZpaWlwT2dLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS2pubml0b1dsbWNJaTlTYWp2YnlHeWdNc3pZSFlkeWZRVnhlcWFuTnFNMlhPMk1mZFFkQldrSU9SeVluRlJvcTI3SnRZMWlYVUg4dE1wYmc4TC9BSHZjMWxnRW5BcHlJMGpoRUJaaWNBQ3VzMFhRMXRRTGk2QWFicUY3Si84QVhyZHRRUjVFS2RURlR2OEFpVnRFMEQ3dHplcjdyR2Y1bi9DdWw2VVVWelNrNU83UGNvMFkwWThzVHovVnYrUXJkZjhBWFZ2NTFlOEsvd0RJV1A4QTF6YitsVWRXL3dDUXJkZjlkVy9uVjd3ci93QWhZLzhBWE52NlYwUytBOFNsL3ZDOVRzcTU3WE5DRXU2NnMxdy9Wb3gzOXhYUTBWenhrNHU2UGNxMG8xWThzanpVZ2drRVlJclUwYldKTlBrOHQ4dmJzZVY5UGNWdGE1b2EzWU54YkFMUDFLOW4vd0RyMXlUb3lNVllFTU9DRFhTbXBvOEtkT3BoYWwxOTU2TkROSGNSTExFNGRHNUJGUHJoTkoxV2JUcHVNdkN4K1pQNmozcnRyVzVpdTRGbWhjTWpmcDdHdWVjSEU5akRZbU5aZVpMUlJSVUhVRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCVlBVdFJoMDZEZkp5NSs2ZzZtcmJ1c2FNN0hDcU1rKzFjRHFONDk5ZVBNNTRKd285QjJGYTA0Y3pPUEY0ajJNZE4ySmZYczE5T1pabXo2TDJVZTFSUVFTWEV5eFFvV2R1Z0ZTV1ZuTmV6aUtGY2s5VDJBOWE3UFROTWgwNkhhZzNTSDd6bnFmOEE2MWJ6bW9LeDVkRER6eEV1WjdkeUhSOUhqMDlCSStIdUQxYnN2c0sxS0tLNUcyM2RudTA2Y2FjZVdLMENpaWlrV2NEcXcvNG1sMS8xMWIrZFhmQ3cvd0NKc2Y4QXJtMzlLcDZxUCtKcGMvOEFYUnY1MWU4TGovaWFuL3JtZjZWMnlYdUh6MUwvQUhsZXAxOUZGRmNSOUNGWk90YU1sK3BsaXdsd0IxN045YTFxS2FiVHVpS2xPTlNQTEk4M2xpZUdSbzVGS3Vwd1FlMVd0TjFHYlRwOThaeWgrOGg2R3VzMWZTWXRSajNEQ1RxUGxiMTlqWEYzRUVsdE0wVXFsWFU0SU5kVVpLYVBCclVaNGFkMThtZDlaWGtOOWJyTkMyUWVvN2craHF4WEUrSDc1clRVRlF0KzZsTzFoL0kxMjFjODQ4clBZd3RmMjBMdmRCUlJSVUhTRlpQaUhXMTBTQ0dWb0RONWpGY0JzWTRyV3JrUGlKL3lEN1QvQUs2SCtWQUVYL0NmeC84QVFQYi9BTCtmL1dvLzRUK1Avb0h0L3dCL1AvclZ3MUZBSGMvOEovSC9BTkE5disvbi93QmFqL2hQNC84QW9IdC8zOC8rdFhEVVVBZHovd0FKL0gvMEQyLzcrZjhBMXFCNC9qenpwN2Y5L1A4QTYxY05SUUI2SGJlT3RPa2JFOEUwUHZ3dy93QWE2S3l2N1MvaTh5MG5TVmUrMDhqNmp0WGpWVDJkNWNXTndzOXRLMGNpOTFOQUhzMUk3S2lNN0hDcU1rbnNLeHZEV3ZKclZxUTRDWFVZL2VLT2g5eDdWZjFhTjV0SXZJb3Z2dEM0WEhyZzBBZWY2NTRydnI2NGRMU1o3ZTJCd29RNFp2Y24rbFViRHhEcWxqTUhTN2trVUhsSkdMS2Z6ckxQQm9wZ2V3NlJxTVdxNmRGZHhEQWJobC91a2RSVnl1WjhBeFNKb1R1K1Fza3hLL1RBSDh4WFRVZ0NpaWlnQW9vb29BS0tLS0FDaWl1ZjhZNm5kNlhwOEUxbklFZHBkcEpVSGpCOWFBT2dvcnpEL2hNTmIvNStsLzc5ci9oVm5UUEZXc1hHcDJzTWx5cFNTVlZZYkY1Qkl6Mm9BOUdvb29vQUtLS0tBQ2lpaWdBb29vb0FLS0tLQUNpaWlnQW9vb29BS0tLS0FDaWlpZ0Fybk5lOFZEUnRRRnFiVHpma0Q3dCtPdWZiMnJvNjgzOGZmOGpBUCt1Sy93QXpRQnBmOEorUCtnZC81Ri8rdFdwNGU4VG5XcjE3YjdKNU8yTXZ1MzU3Z2VudlhtbGRUOFBmK1ExTi93QmNELzZFdEFIb2xGRkZBQlJSUlFBVVVVVUFVZGFZcHBOd1IzWEg1bkZjTFhvR29RbTRzSm9SOTVsT1ByMnJnU0NDUVJpdXZEN004WE1rK2VMOGpyZkRFS0pwdm1nZlBJeHlmcFd6WExlSGRUUzN6YVR0dFJqbFdQUUgwcnFheHFwcVR1ZWhnNXhsU1NqMENpaXF1b1g4T253R1NVNUorNm82c2F6U2Jka2RNcEtLdXg5M2R3MmNKbG1iQTdEdVQ3VnpGN3IxMWNNUkUza3graTlmenJQdnIrYS9uTXNyZjdxam9vcU8zaGx1SlZpaFF1NTZBVjNVNk1ZSzh0enhNUmlwMVh5dzBYNWpXSlppekVrazVKTk9oa2toa0R4T3lNTzZuRkU4YlFUUEUrTnlFcWNldFB0TGFXN2thT0ZkekJTMlBYRmI2V3VjS2pLOWx1YkduK0laWTJDWGY3eFA3NDZqL0d1bGprU1dOWkkyREl3eUNLOCtaU3JFTUNDT29OYUdsYXJKWVNiVGw0U2VWOVBjVnoxYUNlc1R2dzJObEI4dFRWSFowVkhCUEhjd3JMRXdaRzcxSlhEc2UwbW1yb0s1bnhkQ2dhM21BQWNncWZmSC93Q3V1a2tkSW8yZVJncXFNa250WEY2NXFJMUM3QmovQU5WR01MbnY3MXRSVGNybkZqNXhWTGxlN014U1ZZRWRSWG84WkxScXg2a0ExNS9aUU5jM2tVS2pKWmdQd3IwSURBQUhRVlZmb1laYW5hVDlBb29vcm5QVkN1UStJbi9JUHRQK3VoL2xYWDF5SHhFLzVCOXAvd0JkRC9LZ0RnYUtLS1lIWlduZ1lYRnBEUDhBYjl2bUlIeDVmVEl6NjFML0FNSUFQK2dqL3dDUXYvcjExbWxmOGdtei93Q3VLZjhBb0lxMVNBNG4vaEFCL3dCQkgveUYvd0RYcXJmZUJMdUdJdmEzS1RrZndFYlNmcFhvRkZBSGlra2J4U05ISXBSMU9DcEdDRFRhNnY0ZzJzY09wd1hDQUJwa083SGNqdjhBa1IrVmNwVEEwTkF2MjAzV0xlNEJ3dTdhNDlWUFd2WGE4U0hXdlo3VnY5Q2hadXZsZ244cVFITWE1NE1qdkxocm14bFdCM09XallmS1Q2akhTcVZoNERtODVXdnJxTVJnOHJGa2svaVJ4VzRmR0dpQTQrMHYvd0IrbS93cFArRXgwUDhBNStYL0FPL1RmNFVBYmNFTVZ0QWtFS0JJMEcxVkhZVkpWZXd2WU5RdEV1YlppMFRad1NNZERpckZBQlJWUFVOVXNkTlRkZDNLUitpOVdQMEhXdWV1Zkhsa2pFVzlyTEw3c1FvL3JRQjF0RmNOL3dBSisrZitRY3VQK3V2L0FOYXJFUGo2MkpBbnNaRkhjbzRiL0NnRHNhS3k5TzhRNlhxUkNRWElXUS84czVQbGIvNi80VnFVQUZjbjhRLytRVGJmOWQvL0FHVTF0Nm5ybW42VktrZDVLeU00M0RDRThmaFhKZU1OZDA3VmRQaGhzNVdkMWwzRUZDT01IMW9BNUNyMmg4NjVZZjhBWGRQL0FFSVZScTFwVThkdHF0cFBLY1J4eXF6RURPQUNDYVlIc2RGWUgvQ1k2SC96OHY4QTkrbS93by80VEhRLytmbC8rL1RmNFVnTitpcTlqZVEzOXF0emI3akUvd0Iwc3BYUDUxWW9BS0t5ZFM4UjZYcHJGSnJnUElQK1djZnpILzYxWVUzajZFRStSWU93OVhmSDhnYUFPem9yaUkvSDUzZnZOT0dQOW1YL0FPdFd0WWVNZEt1eUVrZDdaei96MUhINWlnRG9hS1JIV1JBNk1HVThnZzVCcGFBQ2lpaWdBb29xbHFHcldHbXJtN3VValBVTDFZL2dLQUx0RmNqYytQTE5HSXQ3U1dYM1loZjhhcWY4SisrZitRY3VQK3V2L3dCYWdEdWFLNUsyOGVXVHNCY1dzc1E5VklZZjByb2RQMVd4MUpOMXBjSko2cjBZZlVkYUFMbGViK1B2K1JnSC9YRmY1bXZTSzgzOGZmOEFJd0QvQUs0ci9NMEFjMVhVL0QzL0FKRFUzL1hBL3dEb1MxeTFkVDhQZitRMU4vMXdQL29TMEFlaVVWVHY5VXNkT1RkZDNLUitpbmxqOUIxcm5ybng1Wkl4RnZheXkrN0VLUDYwQWRiUlhEangrKzduVGx4LzExLyt0V2hZK045T3VIQ1hFY2xzVC9FZm1YOU9mMG9BNmlpbVJTeHp4TExFNnlSc01obE9RYWZRQVZ5L2lEU1dqa2E4Z1hNYmN1Qi9DZlg2VjFGQkFJd1JrVmNKdUR1akd2UmpXanlzODVyZjBYV3pEdHQ3cHN4OUZmOEF1L1gycDJzNko1ZTY1dEZ5blZrSGI2ZTFZR0s3bHkxWW5oZnZjSlUvclU3WFZOVmcwNjNEa2g1R0h5SUQxOS9wWEUzZDVOZVRtYVo5ekg4aDdDbXlxejRPU1NCam1wTk9zSjlRdUJERXZUN3pIb285Nm1OTlVsZG5ST3ZMRXV5KzRMTzFtdlp4REN1NWorUTl6WGE2WHBrT25RN1YrYVEvZWYxLyt0VDlPMCtEVDdjUnhESlAzblBWalZ1dWVyVmM5RnNkK0h3cXBlOUxjNERWai94TmJyL3JxMzg2dmVGVG5Wai9BTmMyL3BXZHE1LzRtMTEvMTFiK2RYdkNaenE1L3dDdWJmMHJvay8zZnlPQ25IOStuNW05cStqcGVLWm9RRm5INU5YS1NSdkZJeU9wVmxPQ0RYb05aMnJhVkhmcHZYQ1RnY042K3hyR2pYNWZkbHNkT0x3ZlA3OVBmOHptdE4xR1hUNXNyODBaKzhoNkd1c2oxQzFrc3pkQ1VDTWRjOVI3VnhNOE1sdkswVXFsWFhxRFVlNXR1M0p4NlYwVktVWjZuRFF4YzZGNDdtaHJHcnlYNzdFeWtDbmhmWDNOWmdCSndCa21uSWpPd1ZRU3g0QUZkWG91aXJhQVhGeUEwM1pleWY4QTE2bVRqVGlUVHAxTVZPNys4VHcvcEp0RiswempFekRDci9kSCtOYmRGRmNVcE9UdXozcVZLTktLakVLS0tLazBDdVErSW4vSVB0UCt1aC9sWFgxeUh4RS81QjlwL3dCZEQvS2dEZ2FLS0tZSHNlbGY4Z216L3dDdUtmOEFvSXExWGw4UGkzV0lJVWhTZEFpS0ZVZVd2UWZoVC84QWhNdGIvd0NlNmY4QWZ0ZjhLUUhwdEZlWmY4SmxyZjhBejNUL0FMOXIvaFZXKzhTYXRmUkdLYTdZUm5ncWdDNS9LZ0M3NDIxT0xVTldXT0JnOGR1dXpjT2hidmo5SzV5aXBMZTNtdXBsaHQ0bWtrYm9xakpwZ1M2YmFQZmFqQmFvTW1Sd1BvTzUvS3ZZWFVMQXlqb0Z3UHlybi9Ddmh3YVNodWJuRFhiakdCeUl4NmZXdWhsLzFULzdwcEFlS3Y4QWZQMXBLVi92bjYwbE1EMUR3Wi95TE50OVcvOEFRalZmeFo0ai9zcEJhMnBCdTNHU1R6NVk5ZnJWandhUVBERnVUMEJmL3dCQ05lY2FsZFBlNmpjWE1oeTBqay9oMkZJQ0dlYVc0bGFXYVJwSkdPU3pISk5Nb3J0UENQaHF6dkxBWDk2cGwzc1FrZWNBQWNaUHJUQTR1aXZZWTlLMDZOZHFXRnNCL3dCY2hWVzc4TjZQZHFROWxIR1QvRkVOaC9Ta0I1UUNRY2pnMTF2aFR4SHFBdklkUGxWN3VOenRIZGs5OCtuMXF2cjNoRzQwNVRjV2pOY1crZVJqNTErbzcxMUhoUFFScE5wNTg2LzZYS1BtL3dCZ2YzZjhhQU1INGlmOGhDMC82NUgrZGNoWHFtdCtIYmJXcG81WjVwWXpHdTBCTWV2dUs1THhSNGJ0ZEZzWXA0SnBYWjVOaEQ0eGpCUFllMUFITVVVVlkwNjNXNzFHMnRuSlZaWlZRa2RRQ2NVd0s5YS9odlIzMWpVbGpJSXQ0L21sYjI5UHFhNnIvaEE5UC81K3JuL3gzL0N0N1NOS3R0SXMvczl2a2duY3p0MVkrOUlDMSs2dGJmOEFoaWhpWDZCUUs4LzhSZUxaNzEydHJCbWh0aHdYSERQL0FJQ3JYanZXbWFVYVZBK0ZYRFRFZHoyWCt0Y1pRQUU1NU5GWHRJMHE1MWU4RnZiTDdzNTZLUFUxMzFoNE8wcTFqSG54dGN5ZDJja0Q4QUtZSG1kRmVyVGVHTkZsUXFiRkZ6M1FrR3VROFJlRXBOTmphNnMzYWEyWGxnZnZKL2lLUUdib212M3VqeWp5M01rQlB6UXNlRDlQUTE2YnBlbzIrcVdhM05zMlZQQlU5VlBvYThkclo4TDZ3Mms2bXBaajlubElXVWUzcitGQUhxbEZBSUl5RGtHdWI4YWF5Mm5XQXRvR3hjWEFJeU9xcjNQOVB6b0FvK0ovRnhnZDdMVEdCY2NQTjF3ZlJmOEFHdUdra2tta2FTUjJkMk9TekhKTk5vcGdGRmRUb25neTR2WWx1TDJRMjBUREtxQjg1SDlLNkFlQ2RIQ2JUNTVQOTdmei9La0I1dFQ0WnBiZVZaWVpHamtVNURLY0VWMXVyK0I1WUkybDA2VnBnT1RFL3dCNzhEM3JrUkc1azhzSTIvTzNiam5QcGltQjMvaGp4V0w1bHNyOGhiZzhKSjBEK3g5RFdINCsvd0NSZ0gvWEZmNW10end0NFZXeUNYdCtnYTU2cEdla2Z1ZmYrVllmajcva1lCLzF4WCtacEFjMVY3U3RVdU5La21sdHRva2tqTVlZak8za0hJL0txTkFHZUJUQWZQTkxjU3RMTkkwa2pISlpqa21tVjFHaitDN3U5aldhOGsreXh0eUZ4bHorSGF0aytBdFAyWUYzY2J2WDVjZmxpa0I1OVJXOXIzaGU2MGhQUFZoUGJaeHZBd1Yrb3JCcGdiM2hiWHBOS3ZGaGxjbXprT0hVL3dBSi92Q3ZUd1FSa2NpdkVxOVg4TDNSdS9EMXBJeEpaVjJFbi9aT1A2VWdOYWlpc0h4RnJ2MkVHMXRpRGNNUG1iKzRQOGFxTVhKMlJNNXFDdXlUWGRkajA5VERBUTl5ZnlUNjF4NlhCWno1aHlTYzVxc3pzN0ZtWXN4NUpQZXRQUmRHbTFPWEp5a0NuNW4vQUtEM3JzZ2xTVnp5cXQ4UTdFZGFlajZvMm55RkdHNkZ6OHc3ajNyVDFMUUlqYnExa3UxMEdOdWZ2RC9HdWJaU3JGV0JCSEJCcldNbzFZbkhPblV3czB6djRaWTU0bGtpWU1qY2dpbjF4ZWw2bkxZU2NmTkVmdkovaDcxMTl0Y1JYVUt5d3R1VS9wWERWcE9tL0k5bkRZbU5kZVo1OXJCLzRtOTMvd0JkVy9uV2g0UlAvRTRQL1hKdjZWbjZ4L3lGN3Y4QTY2dC9Pci9oRC9rTUgvcmszOUs2SmZBY2tQNHE5VHQ2cjN0NURaUUdXWnZvbzZzYVpxR29RMkVPK1E1Yy9kUWRUWEhYdDVOZXptV1ZzK2c3QVZqU291ZXIyT2pGWXRVVnl4MWtPMUc5a3Y3Z3l5WUFIQ3FPd3FwVTF2YnkzTXl4UktXWnUxZE5ENGZ0bHNqRkljek56NWc3SDJyc2xPRk5KSGswNkZYRU55UnpWcGNTV2x3czBaRzVmVVYyV202akRxRU81UGxrSDNrN2ovNjFjaGZXVTFqT1lwVitqZGlLanQ1NWJhWlpZbUtzdmNWTlNuR29yb3FoaUo0YVhMTGJxanY2S282VnFLYWhCbmhaVis4djlhdlY1OG91THN6MzRUak9LbEhZS0tLS1JRVnlIeEUvNUI5cC93QmREL0t1dnJrUGlKL3lEN1QvQUs2SCtWQUhBMFVVVXdDaXZVOU4wUFNwTk50WkgwK0JtYUpTU1VISndLc2YyQm8vL1FOdC93RHZnVWdQSktLOWIvc0RSLzhBb0cyLy9mQXFPZncxbzAwWlEyRVNaN3A4cEg1VUFlVVZwNlJyMTlwRFl0MlF4azVaR1VFSDhldFdmRTNoNTlGblY0M01sckljSXg2ZytockRwZ2VyYURyOXJyVUoyZnU3aFJsNGlmMUhxSzFaZjlVLys2YThjc0x5YXd2WXJxQnRyeHRuNisxZXV3M0NYZW5wY3gvY2xqM2o4UlNBOGJmNzUrdEpTdjhBZlAxcEtZSHAvZzRidkM5dXZydkgvanhyelM1aWFHNmxpWVlaSEtrZlExNlo0TS81Rm0yK3JmOEFvUnJudkcyZ3lSM0w2bmJJV2lrNWxBSDNHOWZvYVFISVYwdmhyeFVkSWcreVhFSmx0ODVVcWZtWFBYNjF6VkZNRDFPMjhWYUxjRC9qN0VaOUpGSy8vV3JUZ3ZiUzUvMUZ6REwvQUxqZzE0elNoaXBCQklJN2lrQjdaUlhsT25lSmRWMDlnRXVXbGpIL0FDemwrWWY0ajhLN3ZRUEVscnJJOHZIazNRR1RHVDE5d2U5QUczWEovRVAvQUpCTnQvMTMvd0RaVFhXVnlmeEQvd0NRVGJmOWQvOEEyVTBBZWZWZTBQOEE1RHRoL3dCZkNmOEFvUXFqVjdRLytRN1lmOWZDZitoQ21CNi9VZHhNdHZiU3p2OEFkalFzZm9CbXBLeXZGRG1QdzVmRWQ0OXY1a0QrdElEeXk2bmU2dXBiaVE1ZVJpeFB1YWlvb3BnZW4rRkxPMzAzUllzdWdtbUFra080WjU2RDhCVzE1OFAvQUQxVC92b1Y0dFJTQTlwOCtIL25xbi9mUXBHbGdkU3JTUmxTTUVGaHpYaTlGQUdocjlpbW42eGNXOFpCaURia3djL0tlUldmUlJUQTlWOEozaHZmRDlzN0hMeGp5MlAwNmZwaXVBOFUzcHZ0ZnVYemxFYnkxK2k4Znp6WFVmRCtValNidFQwU1RjUHhILzFxNE9WaTh6c2VyRW1rQTJ1bDhFYVNsL3FUWE02N29iZkJ3UndXN2Y0MXpWZWorQVlsVFFXa0E1a2xZbjhBQlFCMDFGRkZBQlZGZElzVjFSdFJFQy9hU01idTJmWEhyNzFlb29BSzgzOGZmOGpBUCt1Sy93QXpYcEZlYitQditSZ0gvWEZmNW1nRG1xNlR3TGF3M091RXpSaC9Lakxwbm9HeUJuOWE1dXVwK0h2L0FDR3B2K3VCL3dEUWxvQTlFb29vb0FpdW9FdXJXVzNrQUtTS1ZJUHZYak1pN0pHVTlqaXZhNjhXdWY4QWo1bC8zai9PZ0NPdlRQQTMvSXR4L3dEWFJ2NTE1blhwbmdiL0FKRnlQL3JvMzg2QU55N25XMnRKWjI2UnFXcnpPZVo1NTNta2JjN2trbXZRUEVHZjdFdXNmM1IvTVY1M1hUUVdqWnc0cDZwR3ZvR2pOcWN4ZVFsYmVNL01SMUo5Qlhkd3d4d1JMRkVnUkZHQUJXVDRVMmYySW0zcnZiZDljLzRZclpyT3JKdVZqZWhCUmluM0NzclY5SVM5VXl4QUxPUHliNjFxMFZFWk9MdWk2bE9OU1BMSkhuMGtieFNOSElwVmxPQ0QycXpwK29UV0V1Nk01VS9lUTlEWFVhcnBVZCttNFlTWWRHOWZZMXlkMVp6MmtteWFNcWV4N0g2VjZFS2thcXN6d3ExQ3BocGN5MjdsUy8zWE45Tk9xWUVqbGdNOU1tckdqWEQ2ZGR0Y0dNTWRoVURQYzRxS2xxL1pxMWpQNnhOTzYzSmJtNGx1cG1sbVlzeC9TbHM3U2E4bkVVSzVKNm5zQlUxaHBsemZPTmlGVTd1ZWdycnJHeWhzWUJIRU9mNG1QVmpXZFNxcWFzdHpiRDRXZGQ4MHR2ekdhYnAwT253N1VHNlEvZWZ1Zi9yVmNvb3J6MjNKM1o3c0lLQzVZclFndkxTRzlnTVV5NUhZOXdmYXVNMUN5a3Nia3d2eU9xdDZpdTZybnZGZXpiYi9BTi81dnk0cm93ODJwY3ZRNGNmUmpLbjdUcWpKMHE2TnBmeHlaK1VuYTMwTmR2WG5nem5qclhvTWVmTFhQWEFxc1V0VXpMTFpOcVVSMUZGRmNoNm9WeUh4RS81QjlwLzEwUDhBS3V2cmtQaUovd0FnKzAvNjZIK1ZBSEEwVVVVd1BZOUsvd0NRVFovOWNVLzlCRldxcTZWL3lDYlAvcmluL29JcTFTQUtLS09sQUhQZU9WVnZEY2hicXNpbGZybi9BQXpYbWRkaDQ0MXlHNjJhZGF1SFZHM1NPcDR6MkZjZlFBVjZkNFJrYVR3ckR1L2hEcitwcnpHdlV2QzhCdC9DMXVwNExJei9BSmtrVUFlWFA5OC9Xa3BYKytmclNVd1BVUEJuL0lzMjMxYi9BTkNOYnBBSUlJeUQxQnJDOEdmOGl6YmZWdjhBMEkxZDFyVjdmUjdJenpmTXhPRWpCNVkwZ012VlBCdW5YckdTQW0xa1BQeURLbjhQOEs1MjU4RDZwRWYzRWtNNit6YlQrdjhBalhkNmJxVnJxbHF0eGF5QmxQVmU2bjBJcTNRQjVOY2VITll0Z1RKWVNrRHVnM2Z5ck1aV1JpcnFWWWRRUml2Ykt5dkVHazJtcGFmTVpvMUVxSVdTWEhLa0QxOUtBUEo2a3RwNWJXNGpuaGNwSkd3WlNPeHFPaW1CN0hwbDR0L3AxdmRxTWVhZ1lqMFBjZm5YTy9FUC9rRTIzL1hmL3dCbE5YdkJKSjhOUVpQUm5BLzc2TlVmaUgveUNiYi9BSzcvQVBzcHBBZWZWZTBQL2tPMkgvWHduL29RcWpWM1JXQ2EzWXN4d0JPaEovNEVLWUhzRlpuaVdNeStIYjVRTWtSbHZ5NS9wV25UWlkxbGllTnhsWFVxZm9hUUhpbEZXTlF0SHNiK2Uxa0h6UnVWK3ZvYXIwd09oZzhHNnBjUVJ6eHRibEpGREtkNTZIOEtrLzRRZlYvVzMvNzdQK0ZiSGdqWFk1TGRkTHVIQ3lwL3FTZjRoNmZVVjJGSUR6Zi9BSVFmVi9XMy93Qyt6L2hSL3dBSVBxL3JiLzhBZlovd3IwaWlnRHpmL2hCOVg5YmYvdnMvNFVmOElQcS9yYi85OW4vQ3U3MURWckhUVEdMdWRZMmtZQlIxUDErbnZWMEVFQWc1QjZFVUFjOTRUMFc2MG0xdVlyc3g1bFlFYkd6Mk5lYjNDR0s0a2pQQlZpcC9BMTdUWGwzakd3TmxyMHpCY1J6L0FMMVQ5ZXY2NW9BdzY5RjhBVGlUUlpJZjRvcFQrUkEvK3ZYblZibmhMV0YwblUvM3h4YnpEWklmN3ZvZjgrdE1EMUdpa1ZsZFF5a01wR1FSME5MU0FLS0t4RjhVNmEyc0hUL014MkUyZmtMZW4vMTZBTnV2Ti9IMy9Jd0Qvcml2OHpYcEZlYitQdjhBa1lCLzF4WCtab0E1cXVwK0h2OEF5R3B2K3VCLzlDV3VXcnFmaDcveUdwdit1Qi85Q1dnRDBTaWlpZ0FyeGE1LzQrWmY5NC96cjJtdkZybi9BSStaZjk0L3pvQWpyMHp3Ti95TGtmOEExMGIrZGVaMTZaNEcvd0NSY2ovNjZOL09nRGN1b0Z1YldXQnVraWxmenJ6TzRoZTNuZUdRWWRDUVJYcU5ZUGlMUS90Ni9hYllBWENqbGY3NC93QWEycFQ1WFpuTmlLYm1ycmRIUDZEckxhWE1WY0ZyZVEvTUIxQjlSWGR3VFIzRUt5d3VIUmhrRVY1ZTZORzVSMUtzRGdnOXEwZEcxaWJUSnVNdkF4K2FQK285NjFxVStiVkdGR3R5ZTdMWTlDb3FHMHVvYnkzV2VCd3lOK25zYW1ya085TytxQ212R2tpbFpFVjFQWmhrVTZpZ1o1N3FoOHJWTG1PUENvc2hBQTZEbXIzaGhFdU5VS3pLc2lpTWtCaGtaeUtvYXoveUdMdi9BSzZ0L090RHdqL3lGbS82NU4vTVYzeWI5bWVOQ0VmYkxUcWRtQUFNQUFBZGhSUlJYQWV5RkZGVnI2OWhzWURKS2VmNFZIVmpUU2Jka1RLU2lyeTJIWGQxRFp3R1dac0FkQjNKOXE0M1ViMlMvdWpLL0E2S3ZvS1MrdnByNmN5U25qK0ZSMEFxS0NDUzRsV0tKU3p0MEFyMEtWSlUxZDduaFluRk91K1dPMzVrK2xXcHU3K0tNRDVRZHpmUVYzRlVOSjAxTlBnd2NOSzMzbS9wVit1U3RVNTVhYkhwNE9nNk1QZTNZVVVVVmlkZ1Z5SHhFLzVCOXAvMTBQOEFLdXZya1BpSi93QWVGcC8xMFA4QUtnRGdhS0tLWUdsSHIrclJ4ckdsL01xS0FBQWVnRkwvQU1KRHJCLzVpTS8vQUgxV1pSUUJwLzhBQ1E2eC93QkJHZjhBNzdxR2ZWOVN1VUtUWDA3b2VxbHpnMVNvb0FLS01FOXEyTks4TmFscWJBckNZb1QxbGtHQitIclFCWDBUVEpkVzFLTzJRSFpuTWpmM1Y3bXZXU2l4V3BqUVlWVTJnZWdBcWxvdWoyMmoydmt3RGM3Y3ZJZXJHcjh2K3FmL0FIVFNBOFZmNzUrdEpTdjk4L1drcGdlbGVHTHFLeThIUjNNN1lqajNrNEgrMGE0WFc5Vm4xZS9hNGxPRjZScDJWZlN1L3dEQnlxL2hlQkhVTXJid1FSa0g1aldOcjNndHR6WEdsWUlQSmdKNmY3cC9wU0E1R3h2cnJUNXhOYXpORTQ5Ty93QlIzcnI5UDhlQUtGdjdVazkzaFBYOEQvalhHVDI4MXRLWXA0bmpjZFZZWU5SMHdQU1Q0MjBjTG45K1Q2YlAvcjFoYTc0eWUrdG50YktFd3h5RGF6dWZtSTlPT2xjblJTQUtWRlozQ3FDV0p3QU85UGd0NXJtVllvSW1rZHVpcU1tdTg4TCtGRFl5TGZhZ0FaeHlrZlVKN24zcGdiK2lXUjAvUjdhMWI3Nko4Mys4ZVQrcHJJOGV3R1hRVmtBLzFVcXNmb1FSL1VWMHRRWHRySGUyY3RyTU1wS3BVLzQwZ1BHYUFTcEJCd1IwTlhkVzB1NTBtOGEzdUVPUDRIeHc0OVJWS21CMlZuNDhsanRsUzVzeExLb3h2VjhidmNqRlhmRHZpcWJWTmFlM3VWU09PUlAzU0wySTU2OThqUDVWd0ZUV2x4SmFYY1Z4RWNQR3dZZmhTQTdueHhvYlhVUTFLMlRNc1l4S282c3ZyK0g4dnBYQVY3VGJUQzR0b3BncEFrUU5oaGdqSXJrZkVYZzRUTzkxcFlDdWVXZ1BBSi8yZlQ2VUFjSXJGV0RLU0NPUVIycnBkTzhhYWxhSUk1MVM2UWRDL0RmblhQWEZ2UGF5bUtlSjRuSFZXR0RVZE1EdUQ0L1RaeHB4M2Y4QVhYaitWWjE3NDMxSzRVcmJwSGJBOTFHNXZ6UCtGY3hSU0FmUFBMY1N0TE5JMGtqY2xtT1NhN0x3WjRqMmxOTHZYNFBFTWg3ZjdKL3BYS1dHbTNtb3lpTzB0M2tQY2djRDZudFhmZUhQQ2tXbU10MWRsWnJyc0I5MVBwNm4zb0E2V3NYeFRvMzlyNmFSR0I5cGkrYU0rdnFQeHJhb29BOFRkR2pka2RTcktjRUhxRFNWNlg0ajhMdzZybTV0eXNOMzNQOEFDLzE5L2V2UHIvVHJ6VHBqRmR3UEczWWtjSDZIdlRBdjZQNG0xRFNWRVNNSllCL3l6azVBK2g3VnZqeCt1ejV0T08vMmw0L2xYRDBVQWIrcmVMZFIxR013cHR0b1c0S3g5VDlUV0JSVnZUdE12TlRtRVZwQXpudTM4Sy9VMEFkUjRTOFR5aVNMVGIzZElyRUxGSUJrajJQcUtvK1B2K1JnSC9YRmY1bXVyOE8rRzROR1R6WElsdTJHQytPRjloL2pYS2VQditSZ0gvWEZmNW1rQnpWZFQ4UGYrUTFOL3dCY0QvNkV0Y3RYVS9ENy9rTlRmOWNEL3dDaExRQjZKUlJSUUFWNHRjLzhmTXYrOGY1MTdUWGkxei94OHkvN3gvblFCSFhwbmdiL0FKRnlQL3JvMzg2OHpyMHp3Ti95TGtmL0FGMGIrZEFIUTBVVVVBWTJ1NkZIcUtHYUVCTGtEcjJmMlA4QWpYRHpReVFTdEZLaFIxT0NEMnIxR3N6V2RHaDFPTFBDVHFQbGYraHJhblV0b3psclVPYjNvN25GNlhxbHhwbHh2aU9VUDNrUFJoWGU2ZmZ3YWpiQ2FCcy8zbFBWVDZHdk9ydTFtczdob0owS092NjFKcDkvUHA5d0pvR3dlNDdNUFExdE9tcDZvNTZWVjAzWjdIcGRGVWRLMVNEVTROOFoyeUQ3OFo2ci93RFdxOVhJMDFvejBVMUpYUjUzclA4QXlHTHYvcnEzODYwZkNQOEF5Rm0vNjVIK1lyTzFuL2tNWGY4QTEwYitkYUhoSC9rTE4vMXlQOHhYYkwrSDhqeW9meGw2bmFVVVZuNnRxc1duUlk0ZVpoOHFmMU5jU2k1T3lQVW5OUVhOTFlrMUxVWWRQaDNPZDBoKzZuYy8vV3JqcnU3bXZKakxNMlNlZzdDb3JpNGx1cDJtbWNzN1ZOWTJVMTdNSW9sK3A3QVY2Rk9tcWF1endjUlhuaUpjc2R1dzIxdHBidVlSUXJ1WS9wWFk2WnBzV253NFg1cFQ5NS9YL3dDdFQ3Q3doc0lka1l5eCs4eDZtclZjMVdzNTZMWTlMQzRSVXZlbDhYNUJSUlJYT2R3VVVVVUFGUTNOcGJYYXF0ekJITXFuSURxRGlwcUtBS0g5aTZWLzBEclgvdjB0SDlpNlYvMERyWC92MHRYNktBS0g5aTZWL3dCQTYxLzc5TFIvWXVsZjlBNjEvd0MvUzFmb29Bb2YyTHBYL1FPdGYrL1MwZjJMcFgvUU90ZisvUzFmb29BclE2ZlkyNXpEWndSbjFXTUNyTkZGQUJRUmtZUFNpaWdDai9ZdWxmOEFRT3RmKy9RcFA3RjByL29IV3Y4QTM2V3I5RkFFY0VFTnRFSW9Ja2pqSFJVR0FLa29vb0FodWJTMnUwMlhNRWN5K2pxRFdQUDRQMFdaaVJidkdUL2NjLzFyZW9vQTVqL2hCdEp6L3JMbi92c2Y0VllnOEhhTEVRVERKTGorKzUvcGl0K2lnQ0Mxc3JXeVRaYTI4Y0svN0M0elU5RkZBQlJSUlFCQmQyZHRmUW1HNmhTVkQyWWRQcDZWejF4NEcweVJzd3l6dyt3SVlmcUs2aWlnRGtVOEJXUVB6M2s1SHNBSzF0TzhNNlZwemlTTzM4eVFkSGxPNGorbGJGRkFCUlJSUUJCZFdkcmVSN0xtM2ptWDBkYzRyR244SGFMS3hLd3lSWi91T2Y2NXJvS0tBT1pYd1BwSU9TOXlmWXVQOEt1VzNoWFJiYzVGbUpEL0FOTkdMZnAwcmFvb0FiRkZIQ2dTSkZSQjBWUmdDblVVVUFGRkZGQUJUSm9ZcDR6SE5Ha2lIcXJqSXA5RkFHSGNlRWRGbmJQMll4SC9BS1p1UitsVmYrRUcwbk9mTXVjZW04ZjRWMDFGQUdIYmVFdEZ0MjNmWlRLZittakUvcDByWmlpamdqRWNNYXhvT2lxTUFVK2lnQXFyY2FkWTNVbm1YRnBESytNYm5RRTRxMVJRQlEvc1hTditnZGEvOStscWEyMCt5dEpESmJXa01Ma1lMSWdCeFZtaWdBb29vb0FLb25SdExKSk9uV3hKNytVS3ZVVUFVUDdGMHIvb0hXdi9BSDZXcmR2Yncyc1hsVzhTUlJnNTJvTUNwS0tBQ2lpaWdBb29vb0FvNnJwY0dwd2JKQnRrWDdrZ0hLLy9BRnE0TFVMQ2ZUN2d3enJnOWoyWWVvcjB1cXVvV0VHbzI1aG5YUDhBZFlkVlBxSzFwMU9YUjdIUFdvcWVxM1BPN1M2bXM3aFo0SEtPdnAzcjBIU05RR3BXS3o3ZHJaMnV2b2E1S2Z3enFNZHhzampFaVo0Y01BSzZ2UmRQL3Myd1dBc0djbmM1SFROWFZjV3JveXc4WnhrMDFvY1ZyUDhBeUdMdi9ycTM4NjBmQ1A4QXlGbS82NU4vTVZUMStJeGExY2dqN3piaCtQTlFXRjdOWXpOTEFRSEtsY2taeG10N2MwTEk0K2JrcTNmUm5ZNnpyTWVub1k0OFBjRWNEc3Z1YTQ2V1dTZVZwWldMT3h5U2FqZDJrY3U3Rm1ZNUpQZXREU2RMbTFHYmo1WWwrOC8rSHZUaENOTlhaRldwUEVTc3Z1RTAzVDVyK2JaR01LUHZPZWdyczdLemhzb0JGQ3VCM1BkajcwKzF0b3JTQllZVjJxUDErdFMxeTFhcm5wMFBSdzJHalJWM3VGRkZGWW5XRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFZM2lEUnpxQ0xOQmdUb01ZUDhROUs1TjlQdkk1TmpXc29iMDJHdlJhSzJoV2NWWTVhdUZqVWZOZXh4K20rSGJtZHc5MERERjZIN3gvRHRYV1FReDI4S3hSSUZSZWdGU1VWTTZqbnVhVXFFS1h3aFJSUldac0ZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQVVVVVVBRkZGRkFCUlJSUUFVVVVVQUZGRkZBQlJSUlFBVVVVVUFGRkZGQUJSUlJRQjg3ZjhBQ1I2OS93QkJ2VWYvQUFLZi9Hai9BSVNQWHY4QW9ONmovd0NCVC80MFVVQUgvQ1I2OS8wRzlSLzhDbi94by80U1BYditnM3FQL2dVLytORkZBQi93a2V2ZjlCdlVmL0FwL3dER2ovaEk5ZS82RGVvLytCVC9BT05GRkFCL3drZXZmOUJ2VWY4QXdLZi9BQm8vNFNQWHYrZzNxUDhBNEZQL0FJMFVVQUgvQUFrZXZmOEFRYjFIL3dBQ24veG8vd0NFajE3L0FLRGVvLzhBZ1UvK05GRkFCL3drZXZmOUJ2VWYvQXAvOGFQK0VqMTcvb042ai80RlAvalJSUUFmOEpIcjMvUWIxSC93S2Y4QXhvLzRTUFh2K2czcVAvZ1Uvd0RqUlJRQWY4SkhyMy9RYjFIL0FNQ24vd0FhUCtFajE3L29ONmovQU9CVC93Q05GRkFCL3dBSkhyMy9BRUc5Ui84QUFwLzhhUDhBaEk5ZS93Q2czcVAvQUlGUC9qUlJRQWY4SkhyMy9RYjFIL3dLZi9Hai9oSTllLzZEZW8vK0JULzQwVVVBSC9DUjY5LzBHOVIvOENuL0FNYVArRWoxNy9vTjZqLzRGUDhBNDBVVUFIL0NSNjkvMEc5Ui93REFwLzhBR2ovaEk5ZS82RGVvL3dEZ1UvOEFqUlJRQWY4QUNSNjkvd0JCdlVmL0FBS2YvR2ovQUlTUFh2OEFvTjZqL3dDQlQvNDBVVUFIL0NSNjkvMEc5Ui84Q24veG8vNFNQWHYrZzNxUC9nVS8rTkZGQUIvd2tldmY5QnZVZi9BcC93REdqL2hJOWUvNkRlby8rQlQvQU9ORkZBQi93a2V2ZjlCdlVmOEF3S2YvQUJvLzRTUFh2K2czcVA4QTRGUC9BSTBVVUFIL0FBa2V2ZjhBUWIxSC93QUNuL3hvL3dDRWoxNy9BS0Rlby84QWdVLytORkZBQi93a2V2ZjlCdlVmL0FwLzhhUCtFajE3L29ONmovNEZQL2pSUlFBZjhKSHIzL1FiMUgvd0tmOEF4by80U1BYditnM3FQL2dVL3dEalJSUUFmOEpIcjMvUWIxSC9BTUNuL3dBYVArRWoxNy9vTjZqL0FPQlQvd0NORkZBQi93QUpIcjMvQUVHOVIvOEFBcC84YVA4QWhJOWUvd0NnM3FQL0FJRlAvalJSUUFmOEpIcjMvUWIxSC93S2YvR2ovaEk5ZS82RGVvLytCVC80MFVVQUgvQ1I2OS8wRzlSLzhDbi9BTWFQK0VqMTcvb042ai80RlA4QTQwVVVBSC9DUjY5LzBHOVIvd0RBcC84QUdqL2hJOWUvNkRlby93RGdVLzhBalJSUUFmOEFDUjY5L3dCQnZVZi9BQUtmL0dqL0FJU1BYdjhBb042ai93Q0JULzQwVVVBSC9DUjY5LzBHOVIvOENuL3hvLzRTUFh2K2czcVAvZ1UvK05GRkFCL3drZXZmOUJ2VWYvQXAvd0RHai9oSTllLzZEZW8vK0JUL0FPTkZGQUIvd2tldmY5QnZVZjhBd0tmL0FCby80U1BYditnM3FQOEE0RlAvQUkwVVVBSC9BQWtldmY4QVFiMUgvd0FDbi94by93Q0VqMTcvQUtEZW8vOEFnVS8rTkZGQUIvd2tldmY5QnZVZi9BcC84YVArRWoxNy9vTjZqLzRGUC9qUlJRQWY4SkhyMy9RYjFIL3dLZjhBeG8vNFNQWHYrZzNxUC9nVS93RGpSUlFBZjhKSHIzL1FiMUgvQU1Dbi93QWFQK0VqMTcvb042ai9BT0JUL3dDTkZGQUIvd0FKSHIzL0FFRzlSLzhBQXAvOGFQOEFoSTllL3dDZzNxUC9BSUZQL2pSUlFBZjhKSHIzL1FiMUgvd0tmL0dqL2hJOWUvNkRlby8rQlQvNDBVVUFIL0NSNjkvMEc5Ui84Q24vQU1hUCtFajE3L29ONmovNEZQOEE0MFVVQUgvQ1I2OS8wRzlSL3dEQXAvOEFHai9oSTllLzZEZW8vd0RnVS84QWpSUlFBZjhBQ1I2OS93QkJ2VWYvQUFLZi9Hai9BSVNQWHY4QW9ONmovd0NCVC80MFVVQWYvOWtLWlc1a2MzUnlaV0Z0Q21WdVpHOWlhZ294TkNBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpZMU1EazRJREF1TmpVd09UZ2dNQzQyTlRBNU9DQmRDaTlETVNCYklEQXVOalV3T1RnZ01DNDJOVEE1T0NBd0xqWTFNRGs0SUYwS0wwUnZiV0ZwYmlCYklEQXVNQ0F4TGpBZ1hRb3ZSblZ1WTNScGIyNVVlWEJsSURJS0wwNGdNUzR3Q2o0K0NtVnVaRzlpYWdveE5TQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RE1TQmJJREF1T0RNeE16Y2dNQzQ1TnpJMU5TQXdMamszTWpVMUlGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnb3hOaUF3SUc5aWFnbzhQQW92UXpBZ1d5QXdMamd6TVRNM0lEQXVPVGN5TlRVZ01DNDVOekkxTlNCZENpOURNU0JiSURBdU9ETXhNemNnTUM0NU56STFOU0F3TGprM01qVTFJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ294TnlBd0lHOWlhZ284UEFvdlFtOTFibVJ6SUZzZ01DNHlOU0F3TGpJMUlGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Ulc1amIyUmxJRnNnTUM0d0lERXVNQ0F3TGpBZ01TNHdJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElETUtMMFoxYm1OMGFXOXVjeUJiSURFMElEQWdVaUF4TlNBd0lGSWdNVFlnTUNCU0lGMEtQajRLWlc1a2IySnFDakU0SURBZ2IySnFDanc4Q2k5TllYUnlhWGdnV3lBd0xqYzFJREF1TUNBd0xqQWdMVEF1TnpVZ01DNHdJRGM1TWk0d0lGMEtMMUJoZEhSbGNtNVVlWEJsSURJS0wxTm9ZV1JwYm1jZ1BEd0tMME52Ykc5eVUzQmhZMlVnTDBSbGRtbGpaVkpIUWdvdlEyOXZjbVJ6SUZzZ01DNHdJRE14TXk0NU1qQXdNU0F3TGpBZ016RTFMamcwSUYwS0wwVjRkR1Z1WkNCYklIUnlkV1VnZEhKMVpTQmRDaTlHZFc1amRHbHZiaUF4TnlBd0lGSUtMMU5vWVdScGJtZFVlWEJsSURJS1BqNEtMMVI1Y0dVZ0wxQmhkSFJsY200S1BqNEtaVzVrYjJKcUNqRTVJREFnYjJKcUNqdzhDaTlETUNCYklEQXVOalV3T1RnZ01DNDJOVEE1T0NBd0xqWTFNRGs0SUYwS0wwTXhJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDakl3SURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMME14SUZzZ01DNDRNekV6TnlBd0xqazNNalUxSURBdU9UY3lOVFVnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pJeElEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU9ETXhNemNnTUM0NU56STFOU0F3TGprM01qVTFJRjBLTDBNeElGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqSXlJREFnYjJKcUNqdzhDaTlDYjNWdVpITWdXeUF3TGpNd056WTVJREF1TXpBM05qa2dYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5RmJtTnZaR1VnV3lBd0xqQWdNUzR3SURBdU1DQXhMakFnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNd292Um5WdVkzUnBiMjV6SUZzZ01Ua2dNQ0JTSURJd0lEQWdVaUF5TVNBd0lGSWdYUW8rUGdwbGJtUnZZbW9LTWpNZ01DQnZZbW9LUER3S0wwMWhkSEpwZUNCYklEQXVOelVnTUM0d0lEQXVNQ0F0TUM0M05TQXdMakFnTnpreUxqQWdYUW92VUdGMGRHVnlibFI1Y0dVZ01nb3ZVMmhoWkdsdVp5QThQQW92UTI5c2IzSlRjR0ZqWlNBdlJHVjJhV05sVWtkQ0NpOURiMjl5WkhNZ1d5QXdMakFnTXpReUxqQTNPVGs1SURBdU1DQXpORFF1TVRZZ1hRb3ZSWGgwWlc1a0lGc2dkSEoxWlNCMGNuVmxJRjBLTDBaMWJtTjBhVzl1SURJeUlEQWdVZ292VTJoaFpHbHVaMVI1Y0dVZ01nbytQZ292Vkhsd1pTQXZVR0YwZEdWeWJnbytQZ3BsYm1Sdlltb0tNalFnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZRekVnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTWpVZ01DQnZZbW9LUER3S0wwTXdJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92UXpFZ1d5QXdMamd6TVRNM0lEQXVPVGN5TlRVZ01DNDVOekkxTlNCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBeUNpOU9JREV1TUFvK1BncGxibVJ2WW1vS01qWWdNQ0J2WW1vS1BEd0tMME13SUZzZ01DNDRNekV6TnlBd0xqazNNalUxSURBdU9UY3lOVFVnWFFvdlF6RWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tNamNnTUNCdlltb0tQRHdLTDBKdmRXNWtjeUJiSURBdU16TXpNek1nTUM0ek16TXpNeUJkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwVnVZMjlrWlNCYklEQXVNQ0F4TGpBZ01DNHdJREV1TUNBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F6Q2k5R2RXNWpkR2x2Ym5NZ1d5QXlOQ0F3SUZJZ01qVWdNQ0JTSURJMklEQWdVaUJkQ2o0K0NtVnVaRzlpYWdveU9DQXdJRzlpYWdvOFBBb3ZUV0YwY21sNElGc2dNQzQzTlNBd0xqQWdNQzR3SUMwd0xqYzFJREF1TUNBM09USXVNQ0JkQ2k5UVlYUjBaWEp1Vkhsd1pTQXlDaTlUYUdGa2FXNW5JRHc4Q2k5RGIyeHZjbE53WVdObElDOUVaWFpwWTJWU1IwSUtMME52YjNKa2N5QmJJREF1TUNBek56QXVNems1T1RrZ01DNHdJRE0zTWk0ek1qQXdNU0JkQ2k5RmVIUmxibVFnV3lCMGNuVmxJSFJ5ZFdVZ1hRb3ZSblZ1WTNScGIyNGdNamNnTUNCU0NpOVRhR0ZrYVc1blZIbHdaU0F5Q2o0K0NpOVVlWEJsSUM5UVlYUjBaWEp1Q2o0K0NtVnVaRzlpYWdveU9TQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RE1TQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnb3pNQ0F3SUc5aWFnbzhQQW92UXpBZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOURNU0JiSURBdU9ETXhNemNnTUM0NU56STFOU0F3TGprM01qVTFJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ296TVNBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlETVNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwUnZiV0ZwYmlCYklEQXVNQ0F4TGpBZ1hRb3ZSblZ1WTNScGIyNVVlWEJsSURJS0wwNGdNUzR3Q2o0K0NtVnVaRzlpYWdvek1pQXdJRzlpYWdvOFBBb3ZRbTkxYm1SeklGc2dNQzR6TXpNek15QXdMak16TXpNeklGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Ulc1amIyUmxJRnNnTUM0d0lERXVNQ0F3TGpBZ01TNHdJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElETUtMMFoxYm1OMGFXOXVjeUJiSURJNUlEQWdVaUF6TUNBd0lGSWdNekVnTUNCU0lGMEtQajRLWlc1a2IySnFDak16SURBZ2IySnFDanc4Q2k5TllYUnlhWGdnV3lBd0xqYzFJREF1TUNBd0xqQWdMVEF1TnpVZ01DNHdJRGM1TWk0d0lGMEtMMUJoZEhSbGNtNVVlWEJsSURJS0wxTm9ZV1JwYm1jZ1BEd0tMME52Ykc5eVUzQmhZMlVnTDBSbGRtbGpaVkpIUWdvdlEyOXZjbVJ6SUZzZ01DNHdJRE01T0M0M01pQXdMakFnTkRBd0xqWTBNREF4SUYwS0wwVjRkR1Z1WkNCYklIUnlkV1VnZEhKMVpTQmRDaTlHZFc1amRHbHZiaUF6TWlBd0lGSUtMMU5vWVdScGJtZFVlWEJsSURJS1BqNEtMMVI1Y0dVZ0wxQmhkSFJsY200S1BqNEtaVzVrYjJKcUNqTTBJREFnYjJKcUNqdzhDaTlETUNCYklEQXVOalV3T1RnZ01DNDJOVEE1T0NBd0xqWTFNRGs0SUYwS0wwTXhJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDak0xSURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMME14SUZzZ01DNDRNekV6TnlBd0xqazNNalUxSURBdU9UY3lOVFVnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pNMklEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU9ETXhNemNnTUM0NU56STFOU0F3TGprM01qVTFJRjBLTDBNeElGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqTTNJREFnYjJKcUNqdzhDaTlDYjNWdVpITWdXeUF3TGpNek16TXpJREF1TXpNek16TWdYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5RmJtTnZaR1VnV3lBd0xqQWdNUzR3SURBdU1DQXhMakFnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNd292Um5WdVkzUnBiMjV6SUZzZ016UWdNQ0JTSURNMUlEQWdVaUF6TmlBd0lGSWdYUW8rUGdwbGJtUnZZbW9LTXpnZ01DQnZZbW9LUER3S0wwMWhkSEpwZUNCYklEQXVOelVnTUM0d0lEQXVNQ0F0TUM0M05TQXdMakFnTnpreUxqQWdYUW92VUdGMGRHVnlibFI1Y0dVZ01nb3ZVMmhoWkdsdVp5QThQQW92UTI5c2IzSlRjR0ZqWlNBdlJHVjJhV05sVWtkQ0NpOURiMjl5WkhNZ1d5QXdMakFnTlRBMkxqTTVPVGs1SURBdU1DQTFNRGd1TXpJd01ERWdYUW92UlhoMFpXNWtJRnNnZEhKMVpTQjBjblZsSUYwS0wwWjFibU4wYVc5dUlETTNJREFnVWdvdlUyaGhaR2x1WjFSNWNHVWdNZ28rUGdvdlZIbHdaU0F2VUdGMGRHVnliZ28rUGdwbGJtUnZZbW9LTXprZ01DQnZZbW9LUER3S0wwTXdJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92UXpFZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBeUNpOU9JREV1TUFvK1BncGxibVJ2WW1vS05EQWdNQ0J2WW1vS1BEd0tMME13SUZzZ01DNDJOVEE1T0NBd0xqWTFNRGs0SURBdU5qVXdPVGdnWFFvdlF6RWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tOREVnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZRekVnV3lBd0xqZ3pNVE0zSURBdU9UY3lOVFVnTUM0NU56STFOU0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTkRJZ01DQnZZbW9LUER3S0wwSnZkVzVrY3lCYklEQXVNalVnTUM0eU5TQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBWdVkyOWtaU0JiSURBdU1DQXhMakFnTUM0d0lERXVNQ0F3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXpDaTlHZFc1amRHbHZibk1nV3lBek9TQXdJRklnTkRBZ01DQlNJRFF4SURBZ1VpQmRDajQrQ21WdVpHOWlhZ28wTXlBd0lHOWlhZ284UEFvdlRXRjBjbWw0SUZzZ01DNDNOU0F3TGpBZ01DNHdJQzB3TGpjMUlEQXVNQ0EzT1RJdU1DQmRDaTlRWVhSMFpYSnVWSGx3WlNBeUNpOVRhR0ZrYVc1bklEdzhDaTlEYjJ4dmNsTndZV05sSUM5RVpYWnBZMlZTUjBJS0wwTnZiM0prY3lCYklEQXVNQ0ExTWpRdU5qUXdNREVnTUM0d0lEVXlOaTQxTmlCZENpOUZlSFJsYm1RZ1d5QjBjblZsSUhSeWRXVWdYUW92Um5WdVkzUnBiMjRnTkRJZ01DQlNDaTlUYUdGa2FXNW5WSGx3WlNBeUNqNCtDaTlVZVhCbElDOVFZWFIwWlhKdUNqNCtDbVZ1Wkc5aWFnbzBOQ0F3SUc5aWFnbzhQQW92UXpBZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOURNU0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ28wTlNBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpZMU1EazRJREF1TmpVd09UZ2dNQzQyTlRBNU9DQmRDaTlETVNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwUnZiV0ZwYmlCYklEQXVNQ0F4TGpBZ1hRb3ZSblZ1WTNScGIyNVVlWEJsSURJS0wwNGdNUzR3Q2o0K0NtVnVaRzlpYWdvME5pQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqZ3pNVE0zSURBdU9UY3lOVFVnTUM0NU56STFOU0JkQ2k5RE1TQmJJREF1T0RNeE16Y2dNQzQ1TnpJMU5TQXdMamszTWpVMUlGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnbzBOeUF3SUc5aWFnbzhQQW92UW05MWJtUnpJRnNnTUM0ek1EYzJPU0F3TGpNd056WTVJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJXNWpiMlJsSUZzZ01DNHdJREV1TUNBd0xqQWdNUzR3SURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRE1LTDBaMWJtTjBhVzl1Y3lCYklEUTBJREFnVWlBME5TQXdJRklnTkRZZ01DQlNJRjBLUGo0S1pXNWtiMkpxQ2pRNElEQWdiMkpxQ2p3OENpOU5ZWFJ5YVhnZ1d5QXdMamMxSURBdU1DQXdMakFnTFRBdU56VWdNQzR3SURjNU1pNHdJRjBLTDFCaGRIUmxjbTVVZVhCbElESUtMMU5vWVdScGJtY2dQRHdLTDBOdmJHOXlVM0JoWTJVZ0wwUmxkbWxqWlZKSFFnb3ZRMjl2Y21SeklGc2dNQzR3SURVME1pNDRPQ0F3TGpBZ05UUTBMamsyTURBeUlGMEtMMFY0ZEdWdVpDQmJJSFJ5ZFdVZ2RISjFaU0JkQ2k5R2RXNWpkR2x2YmlBME55QXdJRklLTDFOb1lXUnBibWRVZVhCbElESUtQajRLTDFSNWNHVWdMMUJoZEhSbGNtNEtQajRLWlc1a2IySnFDalE1SURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMME14SUZzZ01DNDJOVEE1T0NBd0xqWTFNRGs0SURBdU5qVXdPVGdnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pVd0lEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBNeElGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqVXhJREFnYjJKcUNqdzhDaTlETUNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwTXhJRnNnTUM0NE16RXpOeUF3TGprM01qVTFJREF1T1RjeU5UVWdYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDalV5SURBZ2IySnFDanc4Q2k5Q2IzVnVaSE1nV3lBd0xqTXpNek16SURBdU16TXpNek1nWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUZibU52WkdVZ1d5QXdMakFnTVM0d0lEQXVNQ0F4TGpBZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTXdvdlJuVnVZM1JwYjI1eklGc2dORGtnTUNCU0lEVXdJREFnVWlBMU1TQXdJRklnWFFvK1BncGxibVJ2WW1vS05UTWdNQ0J2WW1vS1BEd0tMMDFoZEhKcGVDQmJJREF1TnpVZ01DNHdJREF1TUNBdE1DNDNOU0F3TGpBZ056a3lMakFnWFFvdlVHRjBkR1Z5YmxSNWNHVWdNZ292VTJoaFpHbHVaeUE4UEFvdlEyOXNiM0pUY0dGalpTQXZSR1YyYVdObFVrZENDaTlEYjI5eVpITWdXeUF3TGpBZ05UWXhMakV5SURBdU1DQTFOak11TURNNU9UZ2dYUW92UlhoMFpXNWtJRnNnZEhKMVpTQjBjblZsSUYwS0wwWjFibU4wYVc5dUlEVXlJREFnVWdvdlUyaGhaR2x1WjFSNWNHVWdNZ28rUGdvdlZIbHdaU0F2VUdGMGRHVnliZ28rUGdwbGJtUnZZbW9LTlRRZ01DQnZZbW9LUER3S0wwTXdJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92UXpFZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBeUNpOU9JREV1TUFvK1BncGxibVJ2WW1vS05UVWdNQ0J2WW1vS1BEd0tMME13SUZzZ01DNDJOVEE1T0NBd0xqWTFNRGs0SURBdU5qVXdPVGdnWFFvdlF6RWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tOVFlnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZRekVnV3lBd0xqZ3pNVE0zSURBdU9UY3lOVFVnTUM0NU56STFOU0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTlRjZ01DQnZZbW9LUER3S0wwSnZkVzVrY3lCYklEQXVNalkyTmpjZ01DNHlOalkyTnlCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFZ1WTI5a1pTQmJJREF1TUNBeExqQWdNQzR3SURFdU1DQXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBekNpOUdkVzVqZEdsdmJuTWdXeUExTkNBd0lGSWdOVFVnTUNCU0lEVTJJREFnVWlCZENqNCtDbVZ1Wkc5aWFnbzFPQ0F3SUc5aWFnbzhQQW92VFdGMGNtbDRJRnNnTUM0M05TQXdMakFnTUM0d0lDMHdMamMxSURBdU1DQTNPVEl1TUNCZENpOVFZWFIwWlhKdVZIbHdaU0F5Q2k5VGFHRmthVzVuSUR3OENpOURiMnh2Y2xOd1lXTmxJQzlFWlhacFkyVlNSMElLTDBOdmIzSmtjeUJiSURBdU1DQTRPRGN1TlRJd01ESWdNQzR3SURnNE9TNDVNVGs1T0NCZENpOUZlSFJsYm1RZ1d5QjBjblZsSUhSeWRXVWdYUW92Um5WdVkzUnBiMjRnTlRjZ01DQlNDaTlUYUdGa2FXNW5WSGx3WlNBeUNqNCtDaTlVZVhCbElDOVFZWFIwWlhKdUNqNCtDbVZ1Wkc5aWFnbzFPU0F3SUc5aWFnbzhQQW92UXpBZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOURNU0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ28yTUNBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpZMU1EazRJREF1TmpVd09UZ2dNQzQyTlRBNU9DQmRDaTlETVNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwUnZiV0ZwYmlCYklEQXVNQ0F4TGpBZ1hRb3ZSblZ1WTNScGIyNVVlWEJsSURJS0wwNGdNUzR3Q2o0K0NtVnVaRzlpYWdvMk1TQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqZ3pNVE0zSURBdU9UY3lOVFVnTUM0NU56STFOU0JkQ2k5RE1TQmJJREF1T0RNeE16Y2dNQzQ1TnpJMU5TQXdMamszTWpVMUlGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnbzJNaUF3SUc5aWFnbzhQQW92UW05MWJtUnpJRnNnTUM0eU5qWTJOeUF3TGpJMk5qWTNJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJXNWpiMlJsSUZzZ01DNHdJREV1TUNBd0xqQWdNUzR3SURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRE1LTDBaMWJtTjBhVzl1Y3lCYklEVTVJREFnVWlBMk1DQXdJRklnTmpFZ01DQlNJRjBLUGo0S1pXNWtiMkpxQ2pZeklEQWdiMkpxQ2p3OENpOU5ZWFJ5YVhnZ1d5QXdMamMxSURBdU1DQXdMakFnTFRBdU56VWdNQzR3SURjNU1pNHdJRjBLTDFCaGRIUmxjbTVVZVhCbElESUtMMU5vWVdScGJtY2dQRHdLTDBOdmJHOXlVM0JoWTJVZ0wwUmxkbWxqWlZKSFFnb3ZRMjl2Y21SeklGc2dNQzR3SURnNE55NDFNakF3TWlBd0xqQWdPRGc1TGpreE9UazRJRjBLTDBWNGRHVnVaQ0JiSUhSeWRXVWdkSEoxWlNCZENpOUdkVzVqZEdsdmJpQTJNaUF3SUZJS0wxTm9ZV1JwYm1kVWVYQmxJRElLUGo0S0wxUjVjR1VnTDFCaGRIUmxjbTRLUGo0S1pXNWtiMkpxQ2pZMElEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBNeElGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqWTFJREFnYjJKcUNqdzhDaTlETUNCYklEQXVOalV3T1RnZ01DNDJOVEE1T0NBd0xqWTFNRGs0SUYwS0wwTXhJRnNnTUM0NE16RXpOeUF3TGprM01qVTFJREF1T1RjeU5UVWdYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDalkySURBZ2IySnFDanc4Q2k5RE1DQmJJREF1T0RNeE16Y2dNQzQ1TnpJMU5TQXdMamszTWpVMUlGMEtMME14SUZzZ01DNDRNekV6TnlBd0xqazNNalUxSURBdU9UY3lOVFVnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pZM0lEQWdiMkpxQ2p3OENpOUNiM1Z1WkhNZ1d5QXdMakkyTmpZM0lEQXVNalkyTmpjZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlGYm1OdlpHVWdXeUF3TGpBZ01TNHdJREF1TUNBeExqQWdNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ013b3ZSblZ1WTNScGIyNXpJRnNnTmpRZ01DQlNJRFkxSURBZ1VpQTJOaUF3SUZJZ1hRbytQZ3BsYm1Sdlltb0tOamdnTUNCdlltb0tQRHdLTDAxaGRISnBlQ0JiSURBdU56VWdNQzR3SURBdU1DQXRNQzQzTlNBd0xqQWdOemt5TGpBZ1hRb3ZVR0YwZEdWeWJsUjVjR1VnTWdvdlUyaGhaR2x1WnlBOFBBb3ZRMjlzYjNKVGNHRmpaU0F2UkdWMmFXTmxVa2RDQ2k5RGIyOXlaSE1nV3lBd0xqQWdPVEUwTGpRd01EQXlJREF1TUNBNU1UWXVOems1T1RrZ1hRb3ZSWGgwWlc1a0lGc2dkSEoxWlNCMGNuVmxJRjBLTDBaMWJtTjBhVzl1SURZM0lEQWdVZ292VTJoaFpHbHVaMVI1Y0dVZ01nbytQZ292Vkhsd1pTQXZVR0YwZEdWeWJnbytQZ3BsYm1Sdlltb0tOamtnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZRekVnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTnpBZ01DQnZZbW9LUER3S0wwTXdJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92UXpFZ1d5QXdMamd6TVRNM0lEQXVPVGN5TlRVZ01DNDVOekkxTlNCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBeUNpOU9JREV1TUFvK1BncGxibVJ2WW1vS056RWdNQ0J2WW1vS1BEd0tMME13SUZzZ01DNDRNekV6TnlBd0xqazNNalUxSURBdU9UY3lOVFVnWFFvdlF6RWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tOeklnTUNCdlltb0tQRHdLTDBKdmRXNWtjeUJiSURBdU1qWTJOamNnTUM0eU5qWTJOeUJkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwVnVZMjlrWlNCYklEQXVNQ0F4TGpBZ01DNHdJREV1TUNBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F6Q2k5R2RXNWpkR2x2Ym5NZ1d5QTJPU0F3SUZJZ056QWdNQ0JTSURjeElEQWdVaUJkQ2o0K0NtVnVaRzlpYWdvM015QXdJRzlpYWdvOFBBb3ZUV0YwY21sNElGc2dNQzQzTlNBd0xqQWdNQzR3SUMwd0xqYzFJREF1TUNBM09USXVNQ0JkQ2k5UVlYUjBaWEp1Vkhsd1pTQXlDaTlUYUdGa2FXNW5JRHc4Q2k5RGIyeHZjbE53WVdObElDOUVaWFpwWTJWU1IwSUtMME52YjNKa2N5QmJJREF1TUNBNU1UUXVOREF3TURJZ01DNHdJRGt4Tmk0M09UazVPU0JkQ2k5RmVIUmxibVFnV3lCMGNuVmxJSFJ5ZFdVZ1hRb3ZSblZ1WTNScGIyNGdOeklnTUNCU0NpOVRhR0ZrYVc1blZIbHdaU0F5Q2o0K0NpOVVlWEJsSUM5UVlYUjBaWEp1Q2o0K0NtVnVaRzlpYWdvM05DQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RE1TQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnbzNOU0F3SUc5aWFnbzhQQW92UXpBZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOURNU0JiSURBdU9ETXhNemNnTUM0NU56STFOU0F3TGprM01qVTFJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ28zTmlBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpnek1UTTNJREF1T1RjeU5UVWdNQzQ1TnpJMU5TQmRDaTlETVNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwUnZiV0ZwYmlCYklEQXVNQ0F4TGpBZ1hRb3ZSblZ1WTNScGIyNVVlWEJsSURJS0wwNGdNUzR3Q2o0K0NtVnVaRzlpYWdvM055QXdJRzlpYWdvOFBBb3ZRbTkxYm1SeklGc2dNQzR5TmpZMk55QXdMakkyTmpZM0lGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Ulc1amIyUmxJRnNnTUM0d0lERXVNQ0F3TGpBZ01TNHdJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElETUtMMFoxYm1OMGFXOXVjeUJiSURjMElEQWdVaUEzTlNBd0lGSWdOellnTUNCU0lGMEtQajRLWlc1a2IySnFDamM0SURBZ2IySnFDanc4Q2k5TllYUnlhWGdnV3lBd0xqYzFJREF1TUNBd0xqQWdMVEF1TnpVZ01DNHdJRGM1TWk0d0lGMEtMMUJoZEhSbGNtNVVlWEJsSURJS0wxTm9ZV1JwYm1jZ1BEd0tMME52Ykc5eVUzQmhZMlVnTDBSbGRtbGpaVkpIUWdvdlEyOXZjbVJ6SUZzZ01DNHdJRGt4TkM0ME1EQXdNaUF3TGpBZ09URTJMamM1T1RrNUlGMEtMMFY0ZEdWdVpDQmJJSFJ5ZFdVZ2RISjFaU0JkQ2k5R2RXNWpkR2x2YmlBM055QXdJRklLTDFOb1lXUnBibWRVZVhCbElESUtQajRLTDFSNWNHVWdMMUJoZEhSbGNtNEtQajRLWlc1a2IySnFDamM1SURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMME14SUZzZ01DNDJOVEE1T0NBd0xqWTFNRGs0SURBdU5qVXdPVGdnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pnd0lEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBNeElGc2dNQzQ0TXpFek55QXdMamszTWpVMUlEQXVPVGN5TlRVZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqZ3hJREFnYjJKcUNqdzhDaTlETUNCYklEQXVPRE14TXpjZ01DNDVOekkxTlNBd0xqazNNalUxSUYwS0wwTXhJRnNnTUM0NE16RXpOeUF3TGprM01qVTFJREF1T1RjeU5UVWdYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDamd5SURBZ2IySnFDanc4Q2k5Q2IzVnVaSE1nV3lBd0xqSTJOalkzSURBdU1qWTJOamNnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUZibU52WkdVZ1d5QXdMakFnTVM0d0lEQXVNQ0F4TGpBZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTXdvdlJuVnVZM1JwYjI1eklGc2dOemtnTUNCU0lEZ3dJREFnVWlBNE1TQXdJRklnWFFvK1BncGxibVJ2WW1vS09ETWdNQ0J2WW1vS1BEd0tMMDFoZEhKcGVDQmJJREF1TnpVZ01DNHdJREF1TUNBdE1DNDNOU0F3TGpBZ056a3lMakFnWFFvdlVHRjBkR1Z5YmxSNWNHVWdNZ292VTJoaFpHbHVaeUE4UEFvdlEyOXNiM0pUY0dGalpTQXZSR1YyYVdObFVrZENDaTlEYjI5eVpITWdXeUF3TGpBZ09URTBMalF3TURBeUlEQXVNQ0E1TVRZdU56azVPVGtnWFFvdlJYaDBaVzVrSUZzZ2RISjFaU0IwY25WbElGMEtMMFoxYm1OMGFXOXVJRGd5SURBZ1Vnb3ZVMmhoWkdsdVoxUjVjR1VnTWdvK1Bnb3ZWSGx3WlNBdlVHRjBkR1Z5YmdvK1BncGxibVJ2WW1vS09EUWdNQ0J2WW1vS1BEd0tMME13SUZzZ01DNDJOVEE1T0NBd0xqWTFNRGs0SURBdU5qVXdPVGdnWFFvdlF6RWdXeUF3TGpZMU1EazRJREF1TmpVd09UZ2dNQzQyTlRBNU9DQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tPRFVnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZRekVnV3lBd0xqQWdNQzR3SURBdU1DQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXlDaTlPSURFdU1BbytQZ3BsYm1Sdlltb0tPRFlnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzR3SURBdU1DQXdMakFnWFFvdlF6RWdXeUF3TGpBZ01DNHdJREF1TUNCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBeUNpOU9JREV1TUFvK1BncGxibVJ2WW1vS09EY2dNQ0J2WW1vS1BEd0tMMEp2ZFc1a2N5QmJJREF1T1RjM056Z2dNQzQ1TnpjM09DQmRDaTlFYjIxaGFXNGdXeUF3TGpBZ01TNHdJRjBLTDBWdVkyOWtaU0JiSURBdU1DQXhMakFnTUM0d0lERXVNQ0F3TGpBZ01TNHdJRjBLTDBaMWJtTjBhVzl1Vkhsd1pTQXpDaTlHZFc1amRHbHZibk1nV3lBNE5DQXdJRklnT0RVZ01DQlNJRGcySURBZ1VpQmRDajQrQ21WdVpHOWlhZ280T0NBd0lHOWlhZ284UEFvdlRXRjBjbWw0SUZzZ01DNDNOU0F3TGpBZ01DNHdJQzB3TGpjMUlEQXVNQ0EzT1RJdU1DQmRDaTlRWVhSMFpYSnVWSGx3WlNBeUNpOVRhR0ZrYVc1bklEdzhDaTlEYjJ4dmNsTndZV05sSUM5RVpYWnBZMlZTUjBJS0wwTnZiM0prY3lCYklEQXVNQ0E1TkRjdU1qQXdNREVnTUM0d0lEazNOaTR3SUYwS0wwVjRkR1Z1WkNCYklIUnlkV1VnZEhKMVpTQmRDaTlHZFc1amRHbHZiaUE0TnlBd0lGSUtMMU5vWVdScGJtZFVlWEJsSURJS1BqNEtMMVI1Y0dVZ0wxQmhkSFJsY200S1BqNEtaVzVrYjJKcUNqZzVJREFnYjJKcUNqdzhDaTlETUNCYklEQXVOalV3T1RnZ01DNDJOVEE1T0NBd0xqWTFNRGs0SUYwS0wwTXhJRnNnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJREF1TmpVd09UZ2dYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDamt3SURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TmpVd09UZ2dNQzQyTlRBNU9DQXdMalkxTURrNElGMEtMME14SUZzZ01DNHdJREF1TUNBd0xqQWdYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNZ292VGlBeExqQUtQajRLWlc1a2IySnFDamt4SURBZ2IySnFDanc4Q2k5RE1DQmJJREF1TUNBd0xqQWdNQzR3SUYwS0wwTXhJRnNnTUM0d0lEQXVNQ0F3TGpBZ1hRb3ZSRzl0WVdsdUlGc2dNQzR3SURFdU1DQmRDaTlHZFc1amRHbHZibFI1Y0dVZ01nb3ZUaUF4TGpBS1BqNEtaVzVrYjJKcUNqa3lJREFnYjJKcUNqdzhDaTlDYjNWdVpITWdXeUF3TGprM056YzRJREF1T1RjM056Z2dYUW92Ukc5dFlXbHVJRnNnTUM0d0lERXVNQ0JkQ2k5RmJtTnZaR1VnV3lBd0xqQWdNUzR3SURBdU1DQXhMakFnTUM0d0lERXVNQ0JkQ2k5R2RXNWpkR2x2YmxSNWNHVWdNd292Um5WdVkzUnBiMjV6SUZzZ09Ea2dNQ0JTSURrd0lEQWdVaUE1TVNBd0lGSWdYUW8rUGdwbGJtUnZZbW9LT1RNZ01DQnZZbW9LUER3S0wwMWhkSEpwZUNCYklEQXVOelVnTUM0d0lEQXVNQ0F0TUM0M05TQXdMakFnTnpreUxqQWdYUW92VUdGMGRHVnlibFI1Y0dVZ01nb3ZVMmhoWkdsdVp5QThQQW92UTI5c2IzSlRjR0ZqWlNBdlJHVjJhV05sVWtkQ0NpOURiMjl5WkhNZ1d5QXdMakFnT1RRM0xqSXdNREF4SURBdU1DQTVOell1TUNCZENpOUZlSFJsYm1RZ1d5QjBjblZsSUhSeWRXVWdYUW92Um5WdVkzUnBiMjRnT1RJZ01DQlNDaTlUYUdGa2FXNW5WSGx3WlNBeUNqNCtDaTlVZVhCbElDOVFZWFIwWlhKdUNqNCtDbVZ1Wkc5aWFnbzVOQ0F3SUc5aWFnbzhQQW92UXpBZ1d5QXdMalkxTURrNElEQXVOalV3T1RnZ01DNDJOVEE1T0NCZENpOURNU0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ281TlNBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpZMU1EazRJREF1TmpVd09UZ2dNQzQyTlRBNU9DQmRDaTlETVNCYklEQXVNQ0F3TGpBZ01DNHdJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ281TmlBd0lHOWlhZ284UEFvdlF6QWdXeUF3TGpBZ01DNHdJREF1TUNCZENpOURNU0JiSURBdU1DQXdMakFnTUM0d0lGMEtMMFJ2YldGcGJpQmJJREF1TUNBeExqQWdYUW92Um5WdVkzUnBiMjVVZVhCbElESUtMMDRnTVM0d0NqNCtDbVZ1Wkc5aWFnbzVOeUF3SUc5aWFnbzhQQW92UW05MWJtUnpJRnNnTUM0NU56YzNPQ0F3TGprM056YzRJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJXNWpiMlJsSUZzZ01DNHdJREV1TUNBd0xqQWdNUzR3SURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRE1LTDBaMWJtTjBhVzl1Y3lCYklEazBJREFnVWlBNU5TQXdJRklnT1RZZ01DQlNJRjBLUGo0S1pXNWtiMkpxQ2prNElEQWdiMkpxQ2p3OENpOU5ZWFJ5YVhnZ1d5QXdMamMxSURBdU1DQXdMakFnTFRBdU56VWdNQzR3SURjNU1pNHdJRjBLTDFCaGRIUmxjbTVVZVhCbElESUtMMU5vWVdScGJtY2dQRHdLTDBOdmJHOXlVM0JoWTJVZ0wwUmxkbWxqWlZKSFFnb3ZRMjl2Y21SeklGc2dNQzR3SURrME55NHlNREF3TVNBd0xqQWdPVGMyTGpBZ1hRb3ZSWGgwWlc1a0lGc2dkSEoxWlNCMGNuVmxJRjBLTDBaMWJtTjBhVzl1SURrM0lEQWdVZ292VTJoaFpHbHVaMVI1Y0dVZ01nbytQZ292Vkhsd1pTQXZVR0YwZEdWeWJnbytQZ3BsYm1Sdlltb0tPVGtnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZRekVnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTVRBd0lEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBNeElGc2dNQzR3SURBdU1DQXdMakFnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pFd01TQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqQWdNQzR3SURBdU1DQmRDaTlETVNCYklEQXVNQ0F3TGpBZ01DNHdJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ294TURJZ01DQnZZbW9LUER3S0wwSnZkVzVrY3lCYklEQXVPVGMzTnpnZ01DNDVOemMzT0NCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFZ1WTI5a1pTQmJJREF1TUNBeExqQWdNQzR3SURFdU1DQXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBekNpOUdkVzVqZEdsdmJuTWdXeUE1T1NBd0lGSWdNVEF3SURBZ1VpQXhNREVnTUNCU0lGMEtQajRLWlc1a2IySnFDakV3TXlBd0lHOWlhZ284UEFvdlRXRjBjbWw0SUZzZ01DNDNOU0F3TGpBZ01DNHdJQzB3TGpjMUlEQXVNQ0EzT1RJdU1DQmRDaTlRWVhSMFpYSnVWSGx3WlNBeUNpOVRhR0ZrYVc1bklEdzhDaTlEYjJ4dmNsTndZV05sSUM5RVpYWnBZMlZTUjBJS0wwTnZiM0prY3lCYklEQXVNQ0E1TkRjdU1qQXdNREVnTUM0d0lEazNOaTR3SUYwS0wwVjRkR1Z1WkNCYklIUnlkV1VnZEhKMVpTQmRDaTlHZFc1amRHbHZiaUF4TURJZ01DQlNDaTlUYUdGa2FXNW5WSGx3WlNBeUNqNCtDaTlVZVhCbElDOVFZWFIwWlhKdUNqNCtDbVZ1Wkc5aWFnb3hNRFFnTUNCdlltb0tQRHdLTDBNd0lGc2dNQzQyTlRBNU9DQXdMalkxTURrNElEQXVOalV3T1RnZ1hRb3ZRekVnV3lBd0xqWTFNRGs0SURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0JkQ2k5RWIyMWhhVzRnV3lBd0xqQWdNUzR3SUYwS0wwWjFibU4wYVc5dVZIbHdaU0F5Q2k5T0lERXVNQW8rUGdwbGJtUnZZbW9LTVRBMUlEQWdiMkpxQ2p3OENpOURNQ0JiSURBdU5qVXdPVGdnTUM0Mk5UQTVPQ0F3TGpZMU1EazRJRjBLTDBNeElGc2dNQzR3SURBdU1DQXdMakFnWFFvdlJHOXRZV2x1SUZzZ01DNHdJREV1TUNCZENpOUdkVzVqZEdsdmJsUjVjR1VnTWdvdlRpQXhMakFLUGo0S1pXNWtiMkpxQ2pFd05pQXdJRzlpYWdvOFBBb3ZRekFnV3lBd0xqQWdNQzR3SURBdU1DQmRDaTlETVNCYklEQXVNQ0F3TGpBZ01DNHdJRjBLTDBSdmJXRnBiaUJiSURBdU1DQXhMakFnWFFvdlJuVnVZM1JwYjI1VWVYQmxJRElLTDA0Z01TNHdDajQrQ21WdVpHOWlhZ294TURjZ01DQnZZbW9LUER3S0wwSnZkVzVrY3lCYklEQXVPVGMzTnpnZ01DNDVOemMzT0NCZENpOUViMjFoYVc0Z1d5QXdMakFnTVM0d0lGMEtMMFZ1WTI5a1pTQmJJREF1TUNBeExqQWdNQzR3SURFdU1DQXdMakFnTVM0d0lGMEtMMFoxYm1OMGFXOXVWSGx3WlNBekNpOUdkVzVqZEdsdmJuTWdXeUF4TURRZ01DQlNJREV3TlNBd0lGSWdNVEEySURBZ1VpQmRDajQrQ21WdVpHOWlhZ294TURnZ01DQnZZbW9LUER3S0wwMWhkSEpwZUNCYklEQXVOelVnTUM0d0lEQXVNQ0F0TUM0M05TQXdMakFnTnpreUxqQWdYUW92VUdGMGRHVnlibFI1Y0dVZ01nb3ZVMmhoWkdsdVp5QThQQW92UTI5c2IzSlRjR0ZqWlNBdlJHVjJhV05sVWtkQ0NpOURiMjl5WkhNZ1d5QXdMakFnT1RRM0xqSXdNREF4SURBdU1DQTVOell1TUNCZENpOUZlSFJsYm1RZ1d5QjBjblZsSUhSeWRXVWdYUW92Um5WdVkzUnBiMjRnTVRBM0lEQWdVZ292VTJoaFpHbHVaMVI1Y0dVZ01nbytQZ292Vkhsd1pTQXZVR0YwZEdWeWJnbytQZ3BsYm1Sdlltb0tNVEE1SURBZ2IySnFDanc4Q2k5R2FXeDBaWElnTDBac1lYUmxSR1ZqYjJSbENpOU1aVzVuZEdnZ01UQTNNeklLUGo0S2MzUnlaV0Z0Q25pYzdWMU5qK3c2YnQzM3IraDFnSzZ4WlBrTGVHamdkcy9jSUZrbHdRT3lDTElJQmtsNjBab2dNd0h5OTJOWGxlMXpLSksycTZ2dW5TVHpGZzlWdkYwa0pWTDhFaVZWcDY2cHh2K2VxMU5WOFllWDh0KzZJYzRmZjUrZi92T3AvTkh5NFkvLy92VDI2MVAxL09zZm4zN3pQVHlIOFIrYXZoNy80ZGQvZXdyUFNDWThkK09YZnZ3Y24yTjNxdEw0S1R6L21wLys2WmZ4VS8wNjh0SEdpWkYvZnY3MWI1OSs5K3ZUM3orQ2N0MmZKc0xqcHl2bE9MeStoUGx2eCs5TmZBMHRmRzFlWHpyNFd0RlhaSHY4V29mcGEyaTdvUjB1cUFCVENLLzh5MmI5RmtjcUljSDNsaENGbWhDMXhHRks1Nzl0WXAzU2hQajdpS29tUWdFcHZmTS9OeU95aXI3eWJQU0VQUFZFK3Nqd3hkK0dpYzJPUmh3aVNRSHBOb0cvZHEvNDI1RXJsRmp4dDNJK2lPZnpUQTlEREgxL1FVWGovZjdhRXgzNngvYjFpcjg2OVhVY2h6K05vM29GWW05bjJWUlYxNGU2VUlFUTZaZnAvTFZycm4vYm5MR0xDWmZhS0hSWFRFVHppZ09mZEtvbnRTRXQrbjdtTkhiTDJLUWVPSCtjaUt5WWNEbHJIZE1kbDF1Z0gzZm1UNmZGaDNKdmFuY0lCVmM0Mll5NUhqd3RrTE11NWlhOW81S1Vtb3M4VGt1a3Aya2w4WW9CcG9abXZlQXEyS29tbDF0a29jVHdHbkZSZktmWlllTlUxenc1YkcvU04ya2h5QnF4OVFsSi9pc3l5UVlqRFpLbkY0SEtNa1UzT3BEMk5MVHA3Sk04QjlMV3B5YWV3Yk1EYVhoNjNra0xDNE1xRlJ4SExCWHJUUmpRaG5SZkdDcXhmSXRmaVBVdi9WeHBOV0h5eFFxUXRzTWQ0MjJTY2Y3MUgvNTYvTmZRVmMvL1Bja3Y3cEpmak9rMHlhK3FTd0hhRE5aVkdOb1JGWDRZK2lvVnFuTWFFUTdEUnVqUjlxZDZKMkZ2WnZZSFBTbU5NekpTanVQZjFkMnBHWWFoYTdlSWovekdldnpML25ubzQ2bHB6aC96MDRUc1BMc053ajhSamtRK0FRL0RQNTcrOGErZS96QVNhcnQwRHNWaTBvTFNwcGtqUkIzUkdKZis1bS95di96N3Y0Ym4zLzdIeVBobDN2bzYxRjA5b2htNjJLUmgvVERPMjRpbmkyZU1mVHVMSkQvRkdFNGhqRGdiQUg4aU9GVHgxSGNUMWN1b3JrZ0kvUEgwYjM5MW1iM3VGT0paemZwK1ZyajhGR2JSZHdEK1JEQVRXWkFJSXVlWk82QWQ4WlRheXRJT0lGSUp4WlNtZ3NPS0pleWhPSkpzOStUSXdCa1ZjUWw1T1NXSzdNM3d0bkNSNEc5UWpkVXBIeVhSTmFlNnZXZ0JTbUlGMDVSYkVycXZLSWhLOVdPTlJCeFRzWDVhWHUzek1NeHpjQ1Vkems1bDZGUGROYjhVU1ltUWVPRS9uRGp1a1JFNit5VUYvUmloeTdnSmczSVpvbmVPbnhQUm0rc0d5d1hpcERBYzJvMDg4Vm9McjV6L01lSllXM2pGV0xkanhFWDhOMnFlcC9YMTBKMjZVZDlDVldyZWJVcS91dHErT2Z1SnhYTmQzZUFLL2lRd0dIN0FBZERGdm04d29KR2FPR2htdDhVY3JHRGtRR2ZzUTJVdHEyN045Rk1yQ3QxOTdSOGVjbUNOWXdFekR4aVdNQk1YeXoxVExEOWNaSHl0MzR6UndLa0o1eDluOXRjTG5QMTRuSXpYK05OMG1ZZ1pEWUlWUHg0cUdHcWY1cjhGOENlQ2ljaUtoSWs4eUkrSGJsYXVqV1hrVDdFK2x4YzV4MzZxbVBFY0l4ekhhYzM5UGtHRFl3clZxREhua1UxYzFQMGNmUUw4aytDaG43WC9rL0FnZk9iaS9uNDBqRTZocmM5czNjbWN3VHJKenJvQ09Jb0gwQUI0VWZXbUhaRk1mekJHd0JjaFZXY3ExYkxXWitnblFadXo5VDdyUDZJQThCTHFoNjZmZVZCQy9XNVJXNEduT2V2T0V1bkg0NUgrcEhkTDdCZkhMMWU1QVB5VDRBMW9DS0JwVk1WeGVWaVhaUjJCaDVCT01aMUhDUEJQZ3FjVzBxc1ZEWUx2ckx4SXBSYXV1STVGSlFBais4NnJENHV5Z1lnM2RsVGVnZEpHNWIzbEFycGdSS2xRVURWUTFHeUswc2lkSzAxYmhxU2QxdlNrT2FNQkhjN3JGUkl6RE1GbFl1WU5VaFltdDFJMFIzRGZwZENqWFduZEtBZjdsRWFlYTFFU2RES0ZtQ2hURUxNalJQN0diRVN2dGlvcXZETDFmYWN0Rk1GVTlVWURGQkljcDdLbEZZQmNpUEZVNzE2RmQ2UkR3ZnM0cnhFV3hKaFY0LzVLNFBVUkdtVm53eTBLeDNlVzhpWFY4bmNOaXRKd1EvdzUxY2xpNzB4dUpibHBxcDk3M2lWUGZiQWhTSEgyUDdOVjNyQjNvaHhjYkZ4NWhpSldOSjlqMGhpZFpIVG5McGF6dXBSZExHa2hRTzNGUnFIY2pmamFObGJ3OTdId3Q4VTIxc3RnRzZweERKU1ZGMXNvd2E4TjdLL1ViKzVraWMxZnVaTWwvS0R0QnFjRkcveXRMTjdKY25hSnZycVZSYXZ5L2ZVbkxkS21FYUZUb1FYUjk3RzR2VlZvMzV0dlNzbHIxbXdjTmdJclB4WUtVbFZmM0EyOHVIOEhqOHRZVGUrR0p4czdvVFNnMXZQSGdpbjVXemRJa2pLUzY2TzFySVVpSUdkVkNoNEdkNUdPaG1qM0hyRmtvNnpoTzhLVmhmZ2dJcGZXVlY1LzlkZGZYckdRNWE2MWhrdXlyTlovR0w3a1lZeG1BZTh1a0duVUxseGNTNTBGRndCZnVUQzQrOUQ1eTNyR2EyYXdnRVFrdHZNZ3V6U01ZY0J6K2VGY21OSFM2RXNKTG5aYWVyM0NHeXJNNkduM3Z0eFduNkxzVHVrTXA3a0FQRGRrK1REQnc1eXI1YWQ2V0d0UksveVQ0RjB6T3c2U0U0SjNhdDB0YVg0WFRsVjlKck1yc3hSR3NwR3BZN2k5LzZvaHVxbDM3WWpvTzZDMGJJcm1LRExzUGEvbloya3kvK1BRVDNTOGJEWjh2TmlOUnlXaEYrNlYybStRaFNQb25GaGpJa01CZ3Q4RXVEdWs4cGJLcUcybnM0NUhYaXUwQUdHdElCd1hCZUo1NUdKSjFZaDgrdElxcTBWME9ncXQvVVlaaWd4N1JvMFhhdW90Rjk3ZGs3N2ZhMDhzRlI2WXFONDJWalRyZTdCNU9LenZMNTJuNzA1N2FhbnZ6bGQvWVJWTTM2cnhucXFwYmphYkhzZGNDSUFHd0RlRUpKSUx5eDh1Y0dNNU1oc3FmMWwzamFhckF5VEdvbTZicWZYcXVmeHd0aTM5NlJ4SkpPbUhoMHNYMFNEOThBcG4yN0xpRVd3Y25XcGg0YXdwbmVFMEY0YmxPeHlTZE8zY1ZwS2ZRaHJtRFJXQWZ4SjhpSE5BUm5KQzhBTkRrbjQyWlphUmxYME9qaUY1Y05ZZm1uYU9MRVBmWGRvSjAvWm0zMTczaUhKTEhhZ2t5QTNoS0NERTgwakJvWHU4dCtUR21jTkdYNnA4Tkc5c3FjZC8vZnJtakdwOXNtT3J5aFhHSmd6QTY2cjFMSmhLYXBLK2JxZ0l6anhvck8wMG96cTFiQm9rZ3BOdTZ0d2RONk9TQzh0Y0xuQ2NDNE83RDExUzJaR3JaZ2tCaWJIT3ZLbld6ZkZvcHB0S1hlNElSM0tXK2Y1Z1h3WVV5UGNCQllTelFkRU56WWRobXJJcGZvUWpKc3VVM1JEaGtEZ2R2WmpoSkZEQUk5ZzQ1bmFIZXE1M3NOdGQ0U1MzbUpiUm9MSVIrR2pQUWF6NlU1cG90V2NlbGoxOWdIOFNmRzJQeDU0REFqK3M1eUN1SmJHNUdKSEU3cGJZYk9rTzVCUktxQytydzZPS04vZE1iMUVCU0xsQkFRQk9rZ1k4TjJnQWVHVlNnZFF0QnpwSkJSQ09za1k4RDlRQkl2T1RsZUI0bjF3YXRTYWRUekE4eDdCVUNLWU90WFIyRGFGRCtDZkJZNXpiZlQ0SkQ4THZQZGxJcHBqc3B0aFA5clpWcWU0Z3V6RDRQRlRqUzZMY2J1TGRqT2cxdUxnYlBkT3hOZXlBa051N29rRHdPMUVCY0UvRWlaNm9OK0pEMmZiektoT2RzMUVVMzdncUt6QnRUSzA0clB2ZDZhR1FyVFB2QWxWWlcvVUV3N3QxalgrYVVwQ1M1NVY1Qm1vK0NjMFZvZkF1VTRuUW1KbEMvQzNURllYb0x5Y1Nhd2lSblJDeWpCazRzZ1R3NFVRQ09iQmpMNEF6RHhwck55UVNOQTlHaUVWd2NwSTZkOGNUQ2NtRkZRQXVjSndMZzdzUFhWTFprYXNXMjhHdENNTGhIMDBrS1BERWhBRUR6eFZPNUt5QWxCTUpwRUFKQTFBQXVJaHM5SWpudzRpUnNpbCtnQk1tSzZhNklaRWdjVHA2Y1lXelFGYzh0d1R4cENYcndUV1d6M3B5RGVCTmUybUg1K1psQWordWZoZWJPTWVWeHBiaXhua3gyalVRcGY0UlUwVEgzNzFHeDVmMTdNdEVKOG4rRFpYenprMXE3cGtia0V5RnZxN1JOOEJSZUlqbmtVTEZzUHpIU3RYdWh6b29WTjRYbGpJVkVoMFg2eTRaZTVPcld2SHMySHdBS3pVbEFoLzEvTVNCYlN3SnJnUWxrb2VEbnAvbndiQ0pBcTdGSmNaVXVNSlFxV1hYWWdOY2kwc0VGNnFrc2lOWHpSZ0RFbU01Ny9UOHhJUHc4R3VwRU9CSXp2SWdIOUpqTHhTRWg2ZTloeG5PZGt1M1p4L1NBbXJocXFrV2lNbXltTWM5UDR2VDBZc1pUZ0lGUElLTll3dTRXWTdHOHRKWjRVeXNYVTdha2JJaGVDY1A0TStSaDdvL2RTT21MZ2dlQU41V3B6UlZOd0tYRUJFODgyQlJXYnFqbU1nS0hwRmRMNXVRTkJid2Nyb3l4TkMwa3lPT2ZSdTdadnlRaHVrYUQra0twOHNzWXRnTWI5b0ZmcWREZmFBaDJkUWNJZnlyVjJiVEFlQWI5RjF5WWVuMUFrY3VETzUyNjNzNWhpeVdBWTVZVTJ0QXd0cXU4NWJkc2N4d0ltQXNNNWpxbmVIOCtPdEYxYUVURU9EVUlUaXFyWFlXa2NDSDl3WFdBNVlURDNHdUFnTDhrK0JkdWx5K1V2R0NRL0RqOWdYVzRyUjE2a1VVRDR2V285YU9KNU9vRGhiVlpiZDl6cTlLbGpsSmNSZUUwOWZuVWt2ZjdFaFh0dkc1QjFqOGczZXkwMUswUENhM0F6TG8xOFdJb3dBNDRpRHJtdEU3RDNQZ1ZyU2lzY3R2KzNRRks0cWVNdXM4bUJjNTV3dURWK1hkT3FXMGNSbWRwM2ZsOVdNdjl0bGUyVjdydC9rZXE0bmZsbWFyOWltYjVnemhmUU9PWUVXRDRNZVp1ZjV5S3I5ZnJnczQxT2pvbjAwdDFNSHAxQzZQMHRtYlBMNk9sb2QzWHR6akgvakhHNmQza3FmUVltcmtTVEgvYXRldDFmRCtHc1JFTzIydVpUOXBmYzhPYW9vbFJJU2lKZ2dZTkNDZTQ4RUVGb2VJQzB3RmdwNGlkTTJzNmJ6RmpQQUhiakYzOWJ3Qk9zY1RuWHZ5MUcrdkZwZVArdWZKZzJkS2xRdlF2bkt5MHJzdzFuZUgvcVZ1Y2lrMngwNGtWdDVwZTF3ZDJ4Zkl2dXhxOWR5cnhhdjJaVk5iRVk1ckJ2Rm9hMG5RcWNmUXZwOWk3MVQxYzNvRjhFK0M3Nk56OUM2aHZZdWxYKzUxblBOZE9ES0FFNjBQWlJ4aXUvREpRd1E0RDFFZityMkhDRlRrRU9NMzE2akhBNmNUZk05VWV0TjJWOUJHODY3TzcxUTdHOGZialY4Nk1lOEFwM2szNUhIbmVVY3FjdDVEWmFpV09wUnhpRVBTVlF2Z05FUmo2SGNlSWxMWlZxMWdpeno4YnQ5TkU5TjQ1Mm9CemsvVDlmUFZxalEvQ0tmNUFUd1BuQitrSXVkSGVMWHlhc1ZmdHBMSVZMWXdPYXZWUGVVKy9uRnMzRVRRYmlSU2ptdGpFTkc2RVFkZThZS0MxZ1U2Q3JxZkJ5d0VEWEFVcUtVQTl4VTBVU25jeUZmTHBtc1JMdHMxY0Nza0pqUUwrSWF5cWVUQ0toMEMzS3JjQXhzcWYxa3ZJcHBGUVVBaVFwS0RaNmxFeFhMZGV1R0s1UXJuTEdQRm8yY1pCNmFhY2gxclNtYzR6WVdSQXgzdXhaaU8rY3hCWWhpV3k5b0Evb253RWVscEdIOGErTUFJZ1IvWGkxRlhhZTUzTi9vN2hYMHQyeUM0M2E5enpsMGZ1aUZrODJRUWxnM0l6TXBrM2tjc0tubGxCVEcwamoxMzdtVTU5d3ZFK3N2OUFyZkU1SFU3S3RMa1AvdTdHZE4xVFdUSG5NQWlXRndNSWdIdzRhMU81TUMySlFCbkhqVFdkbHM2alZvMmJRYkJnWnpGM1hGTEo3bXdMTm9DeDdrd3VQdlFKWlVkdVdyR2FrVmkyVEMzVjRFdDVzSkR3SUFkbUFBNGtiTXNMUGNxSUFWTE9BQW5USURuRm1PdFN5RzdVcnZDZWJwWFBKS05RMzZySG0zWDlWcmF6TE8zd0hsV1U1eHpHRklGQkQvUWI5VnhiaFl3ZHZ6RVBwcC9tNEI3bDRoNy9lRG9sK3I5TjdKTlZyaE45K3doQTVsblowV1dRdWFGQ3VCWmNYN3pkLy95WC8vMXIzLzh3L1B2LzdSOERzOS8rdjBmZERMWlhIS1dNaGxzSFRjVUJSZVdRZERJV2R6dGMwODZ0V3dhQjRLbithUGdEdUQ3dU5DcFpjZDBBUnpHVEhqVXVYQ1ZVclZFMmJWY0N4ejFBdkVRRjZyR1prZS9OYU1FU0F4YnRWdnRoTVcwMUV2andyS2tINFlRc2lPMEZZNllFTThOUmxtWFFuYWxOc05wdWdHUFlPT1lmMHBwdlNhTlppK3QxNlFodkt2V1pRUm9FUHhBLzFRRTRISUhTZFp1djNGV0VrUkdZMThNWExhMjhKbXBxNVBwMnZxZWJtY1ZaWFlXV2lrN1huK3B2T3RmY3p0UnVoMmticTBrUzBjTXRtNVkvNUlMYTUxcjVDenVqcnNkNU1KYTh3SytwQWdDajFMMDJPdDJtQXZMSWdFY3hreDQxTG5ZYTZoSUt4MkR0TUNUZXRHajRFTFYyT3pvdDJackFJbGhnbmFyblRDRWxucHBYRmdHOHNNUVFuYUV0c0lSRStLNXdkYnFVc2l1MUdZNFRUZmdFV3djY3p0ZDFOM09DdWRaSGRSM0lRajhRTGZUTDN1V3V3N2hiTjVpam1lWEYxZlNEK0dlcm1RVlQzWVdEOGhEdVVpSHdKNHJxYVVyUWVyVzZoQnlWeTU4a2ZTUHJtbkpoYlYyTlhJV2Q4ZGRDWEpocldPQ2g5a0VDTzRBZnR5Vk1CZVdsUUY0eEx0cEFFLzh3b1ZDckpXT2tWbmdVYjFRU0hDaGFteDI5RnV6SDRERU1DdTcxUTU0OE5STDQ4SXllaCtHRUxJanRCV09tQkRQRGZaVGwwSjJwVGJEQi8yNlJjbkdJVmN5am5DdVdaR3BBVGpOYXByZnZ1ZURZUVIrbkN0Sm9ac1BNTThaek1abDhkYk9lK0NuaFozSDI4czNndVFHVVpmdTZucUdYdHZVTUh6NEpLZjFUTkdDaE1DZTYwblM5U0IxYXpVSlBVSDZHbHMzMkFESmhiWFdOWElXZDhkZEQzSmhyWHVDRC9vZUFNS1B1eDdtd3JKS0M1ekdESGlNdVhDVlVqVXkyVFZLVnpqcnhZcEhjS0ZxYkhiMFc3TTNnTVF3UXp2VmpuancxRXZqd2pLU0g0WVFzaU8wRlk2WUVNOE45bGFYUW5hbE5zTnB1Z0dQWU9PWTY0blFsQUFueHdCT0o4cFNrN1E2RG9FZjZIcVNiRXFvdWVkTFhCd2xkdlRGUHZ3YmI5akliZ0M1WVZOY0hFLzlEZVVMYitUZHhGTmEzdlVDOHFLc3UzVkszUEY1SFVISW4wblpHVEk0bDBoTmQyalJoUTZ5clRYeUxla3Z2U2NDeEN3ZlVmdENuKzVHWno3THI3aWN5bjZDN2JHdEg5UGk0WjNScjBaSllIbXk0eGRLVXlQZGhYSnlZMS9yQjNIZ09RV0RCdzE4d0dWcFhGZ09Rc0NwNDh0ZzQ4cUY5NUtLVGkyYi9rSEF5Y1JyM04zZzFpUWJsdnNDK0NvU2c3MFBYV0d5bzE2YVp3SWtoc1BhR1E4S3QwbWhBc3pwQ2tkeWlFZXdjWHlxMTVsd3BuU0cwMXdBSHAyTG5VdXdTUnlVQWxJdFUwNU5welVnRVBqb1JSUE13M3JPaG5sQWVEY2Y0L29rTkFBdUw1cGdLaFFTclVRQWpQZFBFQTNvMW4zSVJSTVRqZXRzMzh2U3J4cVNUYzB4aFU5b3ZsQ3NLYml3OUJyZ3VncW1venRhNmhpeXZneE10VVlrcE8wNmI5a2R5d0x2MUpZdnVaNk9YVFNSbWtXUGhieDdlRmdhNEYxYUwzOEFOQWgrWUZvd1VyeWV5ZjY1anh5L2lTS1dkbzNEeHR1eVRLMmh1MHJMODJFVXo3KzdCek5qeDgwQnNyT3RNK21VYjJSVjlIYlAvc3NSNUFCYTk5N1dqY3NFWkpXeFNBWnVEZURsSHd1UkZNVk5xVXpPZ1hEMzFiT05nejNISGtXVDZad253K0tZUGtwQmVZZld1NFdoZUdLOXNRZll1SWVnaXJueWROK2ZqUEt4ekJlK1NvVndEYSsvbFBtOVBML2dQMEYrMzdlZndKWm5PNVN5ckRTZzZlbjUvOFBldDFOYjl3b3VGcmpoSzVnTmxiK3MreUxUdHdDU0cxeU96bHgyQnpQRGlRdkRJUjR1eXVGeGNpeSs0WEZ5aFBjRGhMTXJHZ1FmdmVZcGRlM2NwMGIzbndDYzdqOUpmUSs5RnlzYUJEL3MvcFBwWHZxckN1N3FiaEFIUmRrNnlOdHhoTm4xdmV6bTRTUy9CM3pQSGhhV2RNWjBZd21JbS9WRkc0Qi9FaHcxQXZHd3Bqem9Qb0MwbmxxWUQyMXZQYnQvNFA2akw3MGcybExaZU9zT0Q4OXBTMHF4OHQ0bER3R2pCZTdtVkx5bENKNDh1dEtwdVM5bUNkY3IzK2NYTHlwSW5YYkVNQTNYRG9lVVo5Z1hkZUNqeTVwbVQwZVh3NWd3ajc4YmhNWURIRFhiV2duM1Byb01WS1RHZnprVVdQMUtkcHhoNlVqWVJ6WmZLTGtpQjFqaVFoWUkzcWgxT2NIRHdkTjJQQTlXSW9yd1JpL01IYjgzU0tlVzNhaGdnVGQ2clpPNVVDV1ZIYmxxRGgrUWlEamdhSzJUb3hGOTZoQ081QkNQSG83c251cEdyM1hLS1ozaE5CZUE1NGFnaUNaNENZRkgyNGxEVzBKZ2dEZFZxN1VxRXZoeFpaR21XazYzLzU4NXdyM2hRVFkzUUoxY3RUelI3V1Y0KzJJMVg3RW1UYm1hQ2RJc0VkclRHYkVydk9tZ25RWHdFSHlmZXNjVTVoWFJ4SGJOZmlDNEJ6Z0YvVTJDTzE4UkQ4THZIUFhEWFlkTjNjdTZIKy8vYjd6dXpuR2QrNHJVTisrRnBaLy95dGo5Zy9YU2VQd2xXSmZCT28vcDdkVzhEMEs4TGNFS0lWNEM0L1lJV1gzYnZBb0loOHNNLzhDM3orTjM1NEdVNG4wMnhCelMxL0tIdTViZDFsQWhPMUZXR1J2STRPdm92cVpHS2pzaEZzRzF2VlhCdzlGWW0rYkJDS1VFWER0UmJFeUZLd3lWV25ZRFBZQ3J4VkhtUXBWVWR1U3F4WEFyRWl1MDgzbzQ5RUF5RytFQnUzc2tad1dlaDd0ZFJUQ2lDeERnUkEzd0dGd2NFTGhhYjVhQ3ZjSlpJaXNlZzR0OUVYOVQ5ZXNwTDVwZ3FHc2lQQ2F0VlpiQUQ0ejRsOWE1LzNXWFg4UzJyKzdZd0E5Q3o4NnFCU2tyWjhjSTdEWHdONktCbjZoYnkxSm9rM0syUjlMZlk3ZDFhdGsxR2dzY3lGbmNmUmdMUERzR0FlQzllaUxybG9IcTVMSzU4Z2xPZlhtQVIrMmtkalZPcFpaZHU3VEFlL1ZnbUpnTVZSMnpvN3lheVFFa2hpWGE2YUNJQjA5M1pqaVNzK3prWVFkRlhOajZ0Y0tSR3VMUnVkZ3Q4RjQ5TzFZSWRvYVRSQUNQenNWT0I0VXBPMDB3cE93SXg5UWMwSWlNL1ZFT3FzallmL2J0RjdFYkVyN3d1NVhrSHVqSUtMUGMvUjBMbTBrdUZlcTJzMXhJTU1jazkwaU9pNm5wbXhNZi9Ibmt1SzEzYzI1NWJoMy9Wc3pFajgwMXdRWmt4NGlYaTU1dGUwc05IbWE4MHNwNEJhbGJWdG95TGdaYk44UXJrZ3ZMaHl4d3c4UXhHN3E5ejQ1L0FEalZQWHVEd3VGNGhZUnRPQUtDTit1TndJU24wUjduY3pWT3BaWmRON1hBVzdXZlIweUdxbzdaVVY3TkF3RVN3ekh0alZla2U3UjBaNFpUUmR0d204ZmpGYTZyVy9xMXdoTzlwZFp2Y0xGYjRLM2EyMVFJZG9hVFJBQ1B6c1hPZUNXbHRhK0lKaml0ZlVVSTE5K2xiSXgzOUx5cHVDVmVhZHJ6MjhWOTljaHJVK0lRNDVFWTVDK0ZkaUw4NXg2RXlLanhrRXhrdjlrNFZkR3N3anc2U0VsUmF6NHhVNHAwR2taTEVxTXc2QUQyZ3BST0JpbEkzVExOd3FJZ2ZZMnRHNElVeVlYbE9CWTRrTE80K3pDTWZIYWNBc0FCRStFNVBsQ2RYRGF0UDhIclV4T25wUzNaQS9oeG55VzVzSHpUQWtlaEl4NmFERlVkczZPOG10c0JKSVkzMmh1a0lBK2U3c3h3SkdmNXl1TkJDbkpoNjljS1IycUlSK2RpdDhCUkhvNWdaN2p4Wm9mQnhjNGdwVFZNVFd1WUd1eTZBRFNpR2VOUlFVcVg1b09OZjBZWDhzU3VxMzlVVVBPWHVzcURRNXFOeC9jMGZkcUlndnp6Tkp2Ny9oMEZPZkdlUVE0OXkyTmEvZ1U4a2g2dFFDY3FNUWoyZ3B4ZUJqbEkzVEx0QkdmNkdsczNCRG1TQzh2eExIQWdaM0gzWVRpSjdEZ1ZnQU1td25OOG9EcTViSG9QQWRlZUxXckVVMUFIZlo3eEVsUmp2QVRGUWtjOE5CbXFPbVpIZVRXM0JVZ01iN1kzeUVFZVBOM1JPaGt0WDNzOHlFRXViUDFhNFVnTjhlaGM3Qlk0eXNNUjdBd25pUUNlNDkyZUlPWis0WTVhVGdIT0xhZERxKzR6SXZpQlFjNFE1bE1WUC91SVY4UDdUUEp0L1JjK2RrdWJVQnRuZGtUVFhmSUNteSs4MG43ZmU2SGtxOVNobDRGZlRWSGwvNGRpVm1jRlVwdVJYN0RQKy8vNWxMT0MwOXRUWEZsd1lLVWRXVnBTaVVtVFJoazR1dkRvTXRscWxiUGpWa3N6VE40V3dVZjdSb2tEMjV1dGNNR0R4dG9Od1JYTmcrRzFFTTZPUitmdXVLK1ZYRmcrZFliVFhCamNmZWlTeW81Y05YY0pTQXd2dWplc1lWK3VUeDNDa1J6aUVXd2NuR3FhQ1dkS1p6ak5CZURSdWRnWjFvdy9oaklXaFM5VUpyM0MyM0hwWHcrTG9wd0kvTGl3cHExNitjcXpmSU80T0pSbDN4eTVjWVJGaEFSWTdKRkhXTTRaL2VYL1g5cSsySWc4eUdpejIxRnVrb0Y2eW9oSVZLZHNua0sxY2ZPajg0ejJqM29pVkxrSzU0VXZySEVtbmJWQXVYQlNTaVRFdTc3NUErczFPNmF1WEtEU0FoYjdRcnNkSG5KZzJ6bUNhK1Y5d2NOUmgwZnpZTmd6QVZjcjYvcFV1TUpRcVdYWDJnSmMzVEpoTGxSSlpVZXVtaUZka1ZqMmRhL0RZeXV2VHgzQWlSemdrV3djbjJwMXMwSk82UlhPYzdIaU1iallwL3ZUajRmcFFLUzRIUWpnZ2xpbk83enVNQStyR3lNZTFvc1dtUWVFd3kweWlBYkE1UVdNVElVOCtFb0V3Q2dFb2dGcS9aQUxHQ2NhZkUvMVYwMHNhRWcyTmNjVVBxRlp3TWR2UnlxNHNQUWE0TG9LTWh1SExtQmtMZENXZ1ZScmRTSzY0eE5CdjlhbDBSblNPTVNFT3cvcUxHWjMxaGQ0WnhxRUx5bEZaeWhGWnlqRlBqYnVHbkN2Y3o1ZFEzd3BzWDVwYVRyLytnOS9QUm1VVWZmK2UySXc3czBJSnFzMW1xMnVYL2FZNTR4Z0VLZHJ4MkFkWXZXcERzVHhIVjJpU0x1U1Nta3orQmYwSWFXcDJFZmY1QkhoUkNIcXhxNHNNbGxMT3VJcUk3NmV6Mm54bm1wa3lXWkszSFAwdXpVVGVNQnArakFzV2xjS1ZaYWtxcjNYUy94eU9UTXg4VDMwbC9EL1RkYWMrOTJKaGRqbDU0UGJJaGVLaVVxby9pMy9XM2Q3bHRkVk9XbVh2TzB4K25YaU1lRkJsUmlNdGtzazhMN1ZzaWU0RTJQQnJPOU5ialVJWHUwY043NlhxNFRVNEkxMnVzdlRteTB2cVp2UDgyOVcyanVhYmU4aERQOGltRUowYmoyOHVFMjBGSTNhaXZDRkczM3ZmQ1d0ODZpRXY4OGliOTExVDBtVlQweVFrWC96N2hRZTNEdG90OFNYNkgyTzZURVBnY3pXcW0zTnNJc3BjaXJkNXFTTk0wTCt2eGJiYkxaKytrb28vcmJhdUpGMlF5Z09LbWN6ODBBaUF1RkpmZXJIbkRwZVhnWUVEN2ZBUHhtZW9Pb0FhTkxSUXZPUjZ1cE1aVWhuUGtKbkhUZVVPMjd5aWlCaENNVTJjckg2SGVYWTJGVnVOaTUvRmlHUkh3UnRtUE9OV21PaHQ1N1ZTaHQrKzhXK1VPQ2JmRFFJcmRUVXdoamRtRkM5c3ptSVdORGR1UlpHVW96TGJERVVlSlU3dnUyckRwcmtCUmJDMkxpWURudlMxZzRzcEtwdWxiVmJlM3lIeXRybGZmRGVyVUpDNW9vZHA0MlM1Rnh3TDZiZEZ5ZzcxL0pJcVRQdEcxR3ZjR3BsVzZXM2pBOGJrTm8zSURSNVg3WWd6bUl0QXgrbkUzVGpKdmZvM1NEZnlZMmUvVUtYclJldGVKYXM0VWhjN1llZFgzODRFaE84aU53OTNwNjhiOFNtbTQ4TmVMb1dYTXNxb2xHUnZOYVVSUW96dkJYNXlHVC8wSTJOTndRK053UWQwejAyMDhldVhYSjkzcnRzTnZxSlpNL01IZFc0RWVuOWtTaVRrNG9RWHVOUG1kMHczT1ZLNVZ0STEwdVZXMzk5Y2l2RUMvYkJ4WExOeUdBb3VNR1FtOE1WRlRJM0tuSzI3LzEyeGczbkxnajVqbFBxcGdpRi9KUnRhNFhZeFJ1L0RDV09ZdmpIUVFwakxsc1VvbU5meFpNeldzbXFyQmUwTkp0T0g2RTQ1VEs0Zkx2WC9CNkxiellyazNZYTY1YlJ0aHBGM1VpL0dseFA5eTRjZjNRaVpTbWhOOUZVazdTY3hROTNDa1hZQ0tlZE1GNjRFVDkzRmVWQ04rWVY5NmhzQjRQZUV1dGtRaFM4bFM2L2Z4ZkZtdUxRMjdFa2lqR1VPeXNieHA4ekxDZFMyVFQrYnNEMFkyeC8rWlNYbVY2Vk1hOTdmbjkzQmx4bTJsNU4yOCswKzYxWHZMZ1M3MWRVdi9JdTI5Wm14dHVOSW50c0tKU1NhRnZjVGo5SmE0ZlhtOHRYRzQ3VlY1bXlaaERzQzZKa1czemwxalpFNDNzdllvVmZLdVVoYktKV3BPQ2VxZTg4ZXlLR1VUem5SM1MrSDNES3JnK1JhMHJkYUt0a0lFZThmQk5CakxjeURoall6WWpRQ3doM0Z6L2RWL1UyZG13MmkzbXRPV2wrRk01YTZhNFZKWUQxZmFNWHdSYmJqeS9tcktiWk16c0NkTFBjMFRVNWprQytaaVIySk4ydVkzbHFxTGhUMElzN3hWbWY4bTBDVzF1KzFOY3RWZFIvbThESnN2eFhVN1hIVFVleEI2ZkNzT1ZsTjdwUnRxNGdJQy94M2R0bzU3ZFF4Ni9VQlBIdTlyREwzZkR5VVJGd2RFV3gvR1ZmaGVxWGF1TTBvUHZjeXVaY1VIeFpPWUZkcVhwTyt2ZmpOZnl4UVU0ek03SFVlN2JhLzcvd25JeGowSVNFeERTTHE3ZGx1LzkzVjVtbHo1WVdqWDJMTktXQ2xtMUtIeXVuZGhCUGxmdzQwbjB0VHlWdkdJOURMd0JMaS9kTjVobE82clFaUk8rUDZ3NjBNRzE0eVBLdncvNWV0ZTN0a0pmOSs3Qmw4UDdpbEIrRnlYZDdSTXFYbDRVVmpJN2hLNjRJcE9wVHRkbEU1d2FyZGsxTXFxV2IwSmJPeGdsQXR2dDRISWV5OVNJMjdMT1ZTbnJvdEx4WEZPSmdWVlJMZmZOYXh0dE9GWUZ0N2NZaUxQeS81MndPYjllU1RMN2J0UjAzS05FVHdNMXl4KzR6YzlWR2I5N1A2NkJ4ZXkrdDFoV3UwOTJhQzRrdHZ2Y3RpL3FpN1ROODVjMTJPNEhZUENtNjBmOFR2WjV3eGRKMiswUHZFTlpWZlZ2QTBKKzZxZ3V0R2krMDZ6MCtaY0J3VzZ6U1ZmTXhwNjRMcC9OUmwvTVp0SkhRRkpsMENQNGtjRDF2VG44U0VnRHZQUUtpMFpwT2dDelBBRElQREY5NkJSbk5BdDU3Rms4ak5qRVI1OFkvd1FUQWNTWVF6dzFUb1Uxa05xZDlBZmQ5dDk2TnVTSWg4SWZCWEhZR3M4Q1p3SXBIVUZnRzZSNnhCN2I3Y1NXTm42YURSOU9iZ2Rmbm1BRCtpZkFocE5PWmJxTFJFM2puTWYvTEw4NGpHTmJEVDZtSzgza3ZnSDhpZktnQ1BoTTJveUh3ekVObysvTVJ3YXBqTXZWNldKL0lBSHpDdHh4NkFqd0UzL1hldFBPdnR4d3d3akZOeDJMcENGUnNYNk5wNHN1aWpkZ3dSeXRkUGpOdXR5M0k2Z0VmTDJuS3pGUnNpeVNialdMNzhpVzZnWUo4cnpPeHkwUy8xUElCSS9iYjMrUVpxSmRrQmt0K2s1dzRhL1graXI2aFhsK1lZUVVkRVY0ellWYlFGVTZLQ0hoK3VvTGltQW9GdFoza1Btc0J5enliVmdIaEllSWJDQXNhQkMvbms0bktjaEl5akFMb21yUFRaNk1BOEYxVTd2azJQUkpaM0kxZHVSQ2JuRzczN1ViMFhjdlZ6SUU4M24rL3hVaVJHQjA3SzBFNWc3dUY3TisvSmJpdUJqSmZrcEQ3TWdCaVJ2WFdkZWlpd2RmamhLUmJDRWNsc25UdXZzcEZWS1IyYmV3SGIxeU1GNzArYVY4dS91azgyYjlqLzlEbnY1TEQyYU1nMGQvczROeEp1aWk3eENTcmVlSmYvVGVzaXMxRVhpMWU4VkpzWjdzSlY3bnc3T0ZWR3kzVXJXY3E0dDVxZ21EQjN2ZkFCVXF1Sk03UkxBWEZBQmRCY1p5ZkZpbGN6d0svaXlPdStrNDRZaTlaSlZia0tyN05ENmVxWFZNYlNCMG9JWUhVQWVDVUl3Q2VHM0tITkU3c01QMDZjTkIwdnEzeUVtMVEwQVJ3RGhOV1BHcjIwRlRET2lxZzA5YjlPZ3RBQitCa3pBSFBUdy9PY0V4bDl0QTRJZkZtczd1L0E4S2REMVZ4YVZraUYrdnRaSlZIYmN5YkRiYmJpM2xIWGFRTFFhUUw4alkzUEYvNHpiUHlZbnh1dFYvYVYwNFlKaDI3TGhmV3liU2MybVNkWE9Ha2U0RG5wK3NranVsT0NZTyt0TE5wQ2hDT2NSWGkwVktHcG83elBVY1UxN1dqNmx4clZUenRBRWQ4aU9keGNSMVJrUjVCM0VJci9Ycm5oRnNiWnczOEUxaEwwNURJTXR6TmhTTFIzMzhlWHl5b0grbVJKK2t2V3JiZkkzc01xclhHYkZZbUFUelFSVWFhUC9PZU94Z3V6eDFvWlBMWnZWZFQ1Q1BJRXh6cDYyenR2RWhKcDNiaFlxa2xDaTcwR3FQTzNjS0dOZytoT2srRVRpdWJsVnFDQ3g0MDNuWmY1cVNSeTA0aEdlQW9FSU85M1ZlNDl0MjFNQnpYbHluVCtudzIyMWlFWTMwWjBLZ3g0dDUxZ1NHaXNRRDBVdmFLNUpZb1ZSM3VSU1htRWg2WGpRQXVZbVZ0ZXZiZHRxWXJkWFlYd1pJMENDNnVlRzZSaHFwUDJkRy9CYzRDTWZLSm5Yb0pVbTdXWnh0Q2ZjblRoaGJobndUdkdyaGlla1dENEowOExCMUhRdzNYV1ljcHU3M2Nzd0h3VDRJM0ZUeVV0cUpCOE1QdTN4aVN2TjI0YktnVjVYT25TTFo3Ry93UmQzbU4wenZadjJwY1RuVVNiNWhidE1PTW9QeHdLKzJtbm5lU3I3U0x1K3pGczExK0o4aFdvVzNycGlUNFIzNlU2ZXZpOENJaW5KRnhYWWwwOUZxSHV0Nk9WcDVzYzNwSVpMdTBVcWNOeVF3WkoxTFJ2QU52OC93bUo0cHZ6aU5nOHBhYTRnUW5INDloeE1PaG8xb2VqM0pFeTRWY05JWHpqVnlkelZPcFoxYXQ5UUZMTzY2WGhaYktkRnNlV2NlMWRJTStnOHAvNERNUVRxOHRBaDd0MmRRTkxzYnN0Szh2bm1oVXk2WHNObDJMM0V3K2MwRDRKOEhIbjE3YlZENEpEOEx2N0RicXBwdHQyMURYODdqblJjMGQrd2N1ZC9seXlaSWwyRUs0aFJJRU9McDN4SFBjN1dNZEFmMSthaFpVNVBjUmpnNGU4VHpROFNNWjFmTjc3eHA4ODFveVM5L2YzdFBYK0tOcSs2WDg4YU5kUDlMZWR2MThqR1hyTWlsWlhYSHVNbkRiV0grazQ4ZjUrTW1PMzNHeFIvMStmVGUvSDN6SGIwY0oycXNqZ1h0bUhQMG9EcnUrMUpVWlJmak5zdUpjVVB2NmdCVU5iOG5keStPM2JUdGJCdklYbEhvMitMaGZVRDA3NGpudThkdHVxUXlReDhjNk5YcDhoS05uUnp3UDlQanRVTi91OGIzSzdsZUxvbEFseUdhVkI4RDRtQUVnVVI0elVJdUJRVlJGaVR6VkdZQSt3WkVCbmErZFZWR2Qyc1RGS2lybUF1QkF6dUp1TnhzYXVURjBqZjI2c1FKc0VKeUtNWUNuS1ovazliblFxZVZ6V0Q2MVVsYXQ1QUxnTUdqQ28wMkdxaFh4ckJVNnJXeFcxZ2hPUE9pOEhhK1dGMnhZaGI4RkR1UXM5dHoxVWN0aU9iTXdodDVhb3pIQkJRc2FhM3RuUWlVM3NSSFZzaS9Ca1EyRHZkMXNSTlZhdFcyajFvTUpUb2xMVkJLZHZTdEVwNWJaSFJJWEFJZEJFNTdkS3lTZDlVS25sYzJxTDhHSkI1MjM0NXNvZ2cycktBMXd0TjhHZXgrNmE4bW1JMXJCWXlDaCtTY0UzK0llZ0FmYkRheHdKSWQ0QkJzN3l5dHgrczB3L3JyRzhzcTY1N0hDZVM4RXFSRWVsWXZkM2dIbXd2WUNLNXk1V1BFd0Y3cXh6SzV4bmVHSUNmRUlDcW9SeW83UmlxcjZJQjVEcmJhaTUza3RvRUJ4Y3dzRlN2REVTM2pCYzFpZ3VoSEtqdEdpV0YwMVpqb1h1KzBJTG5QVFhrUjF6Q0xES0xpNFU0V2lubGJ5Ukg3VXVYWk9JSC9ZNW9SendKdlRmVmtiU1Z1TklvQUs3M0d4bWorYk5EOXR4bFhlRmM1VjNsVjF1UGtUNGRjdW5udVZrcENLRk5TRHkxaVlUMjRyeWJFeWxudC93cEdXdWNNcUl1NzY2ZTZZZjY0TE5wdU9ITUFkbkhBRUpBRGVad0YxdDV3ZE53NXdvRVo0aUF2ZDJXWEhPUUljTUJFZUh1ZXVseVJWY3RuMGxBUnYxZ1pBd3RPVXZjRDdreXJKaGVYSEZ6Z01tdkRRWk9oK09UdCtQS3JxUTNpSWd1N3NzdU1jQVE2WUNNOXhnZXJrc3VrRkNRNkNJenlxUU4wVnJGTExqbzhHZUtlZWxUWlc4YzVHS2p3dVBDM0thZU9ucWhIK3lmQ0ducWhmMEtnN1YzdHRXYWVkVCtmeFFtL01jdWNTMlRJRUh6NlVEZnhuc3orSDRBZVlVRFBUNXB5WjZtWXdPMlp6aFNNdGk3V2RFMEZvWVNiUWh1Sk1FSnpZME5semF6ZnR0WXFsbWV2c21QY1ZqcVFzMW5iT0JLR0ZtVUFES25kdkZ6aXhvYk4zdk1VUEYraGtmR2ZiZ3d1VTRJSzdCWSt5UWxWNWRFc3RyZlFZMmZVd1M0OEVETmlhb0ozeUlMUW9EM0EzTkdLRUN6WTA5dHlaNkM4em9YcTI3SGpDcU5vRGk3VzlNNEZvWVNiUUxlSk1FSnpZaUphNXNtZGl1TmJSTkErY0hZKzl3cEdVeGRyT21TQzBNQlBvRThsTklaelkwTm03d1pOMzZzVWl3bU92Y1BJZUJuYzNGQlY1TW9BY1RjWmhOaTVuMk1sWEx1KzdyWDhLNEU4Qzk5QmRDa2g2YkRLNTZ3bjJsVWpmaUlZSUxlMzYrNmYvQWFMOW1xZ0taVzVrYzNSeVpXRnRDbVZ1Wkc5aWFnb3hNVEFnTUNCdlltb0tQRHdLTDBadmJuUWdQRHdLTDBZeElERXhJREFnVWdvK1Bnb3ZVR0YwZEdWeWJpQThQQW92VUdGMGRHVnliakVnTVRnZ01DQlNDaTlRWVhSMFpYSnVNVEFnTmpNZ01DQlNDaTlRWVhSMFpYSnVNVEVnTmpnZ01DQlNDaTlRWVhSMFpYSnVNVElnTnpNZ01DQlNDaTlRWVhSMFpYSnVNVE1nTnpnZ01DQlNDaTlRWVhSMFpYSnVNVFFnT0RNZ01DQlNDaTlRWVhSMFpYSnVNVFVnT0RnZ01DQlNDaTlRWVhSMFpYSnVNVFlnT1RNZ01DQlNDaTlRWVhSMFpYSnVNVGNnT1RnZ01DQlNDaTlRWVhSMFpYSnVNVGdnTVRBeklEQWdVZ292VUdGMGRHVnliakU1SURFd09DQXdJRklLTDFCaGRIUmxjbTR5SURJeklEQWdVZ292VUdGMGRHVnliak1nTWpnZ01DQlNDaTlRWVhSMFpYSnVOQ0F6TXlBd0lGSUtMMUJoZEhSbGNtNDFJRE00SURBZ1Vnb3ZVR0YwZEdWeWJqWWdORE1nTUNCU0NpOVFZWFIwWlhKdU55QTBPQ0F3SUZJS0wxQmhkSFJsY200NElEVXpJREFnVWdvdlVHRjBkR1Z5YmprZ05UZ2dNQ0JTQ2o0K0NpOVlUMkpxWldOMElEdzhDaTlKYldGblpURWdNVElnTUNCU0NpOUpiV0ZuWlRJZ01UTWdNQ0JTQ2o0K0NqNCtDbVZ1Wkc5aWFnb3pJREFnYjJKcUNqdzhDaTlEYjI1MFpXNTBjeUJiSURFd09TQXdJRklnWFFvdlEzSnZjRUp2ZUNCYklEQXVNQ0F3TGpBZ05qRXlMakFnTnpreUxqQWdYUW92VFdWa2FXRkNiM2dnV3lBd0xqQWdNQzR3SURZeE1pNHdJRGM1TWk0d0lGMEtMMUJoY21WdWRDQXlJREFnVWdvdlVtVnpiM1Z5WTJWeklERXhNQ0F3SUZJS0wxSnZkR0YwWlNBd0NpOVVlWEJsSUM5UVlXZGxDajQrQ21WdVpHOWlhZ294TUNBd0lHOWlhZ284UEFvdlRHVnVaM1JvSURFeU5Ea0tQajRLYzNSeVpXRnRDaTlEU1VSSmJtbDBJQzlRY205alUyVjBJR1pwYm1SeVpYTnZkWEpqWlNCaVpXZHBiaUF4TWlCa2FXTjBJR0psWjJsdUlHSmxaMmx1WTIxaGNDQXZRMGxFVTNsemRHVnRTVzVtYnlBOFBDQXZVbVZuYVhOMGNua2dLRUZrYjJKbEtTQXZUM0prWlhKcGJtY2dLRlZEVXlrZ0wxTjFjSEJzWlcxbGJuUWdNQ0ErUGlCa1pXWWdMME5OWVhCT1lXMWxJQzlCWkc5aVpTMUpaR1Z1ZEdsMGVTMVZRMU1nWkdWbUlDOURUV0Z3Vkhsd1pTQXlJR1JsWmlBeElHSmxaMmx1WTI5a1pYTndZV05sY21GdVoyVWdQREF3TURBK0lEeEdSa1pHUGlCbGJtUmpiMlJsYzNCaFkyVnlZVzVuWlNBMk5pQmlaV2RwYm1KbVkyaGhjaUE4TURBd016NGdQREF3TWpBK0lEd3dNREE1UGlBOE1EQXlOajRnUERBd01FSStJRHd3TURJNFBpQThNREF3UXo0Z1BEQXdNamsrSUR3d01EQkdQaUE4TURBeVF6NGdQREF3TVRBK0lEd3dNREpFUGlBOE1EQXhNVDRnUERBd01rVStJRHd3TURFeVBpQThNREF5Umo0Z1BEQXdNVE0rSUR3d01ETXdQaUE4TURBeE5ENGdQREF3TXpFK0lEd3dNREUxUGlBOE1EQXpNajRnUERBd01UWStJRHd3TURNelBpQThNREF4T0Q0Z1BEQXdNelUrSUR3d01ERkNQaUE4TURBek9ENGdQREF3TVVNK0lEd3dNRE01UGlBOE1EQXhSVDRnUERBd00wSStJRHd3TURGR1BpQThNREF6UXo0Z1BEQXdNakErSUR3d01ETkVQaUE4TURBeU1UNGdQREF3TTBVK0lEd3dNREkwUGlBOE1EQTBNVDRnUERBd01qVStJRHd3TURReVBpQThNREF5Tmo0Z1BEQXdORE0rSUR3d01ESTNQaUE4TURBME5ENGdQREF3TWpnK0lEd3dNRFExUGlBOE1EQXlPVDRnUERBd05EWStJRHd3TURKQlBpQThNREEwTno0Z1BEQXdNa0krSUR3d01EUTRQaUE4TURBeVF6NGdQREF3TkRrK0lEd3dNREpFUGlBOE1EQTBRVDRnUERBd01rWStJRHd3TURSRFBpQThNREF6TUQ0Z1BEQXdORVErSUR3d01ETXhQaUE4TURBMFJUNGdQREF3TXpJK0lEd3dNRFJHUGlBOE1EQXpNejRnUERBd05UQStJRHd3TURNMVBpQThNREExTWo0Z1BEQXdNelkrSUR3d01EVXpQaUE4TURBek56NGdQREF3TlRRK0lEd3dNRE01UGlBOE1EQTFOajRnUERBd05ESStJRHd3TURWR1BpQThNREEwTkQ0Z1BEQXdOakUrSUR3d01EUTFQaUE4TURBMk1qNGdQREF3TkRZK0lEd3dNRFl6UGlBOE1EQTBOejRnUERBd05qUStJRHd3TURRNFBpQThNREEyTlQ0Z1BEQXdORGsrSUR3d01EWTJQaUE4TURBMFFUNGdQREF3TmpjK0lEd3dNRFJDUGlBOE1EQTJPRDRnUERBd05FTStJRHd3TURZNVBpQThNREEwUlQ0Z1BEQXdOa0krSUR3d01EUkdQaUE4TURBMlF6NGdQREF3TlRBK0lEd3dNRFpFUGlBOE1EQTFNVDRnUERBd05rVStJRHd3TURVeVBpQThNREEyUmo0Z1BEQXdOVE0rSUR3d01EY3dQaUE4TURBMU5ENGdQREF3TnpFK0lEd3dNRFUxUGlBOE1EQTNNajRnUERBd05UWStJRHd3TURjelBpQThNREExTno0Z1BEQXdOelErSUR3d01EVTRQaUE4TURBM05UNGdQREF3TlRrK0lEd3dNRGMyUGlBOE1EQTFRVDRnUERBd056YytJRHd3TURWQ1BpQThNREEzT0Q0Z1BEQXdOVU0rSUR3d01EYzVQaUE4TURCQ01UNGdQREl3TVRNK0lEd3dNRUkwUGlBOE1qQXhSRDRnUERBd1FqWStJRHd5TURFNVBpQmxibVJpWm1Ob1lYSWdaVzVrWTIxaGNDQkRUV0Z3VG1GdFpTQmpkWEp5Wlc1MFpHbGpkQ0F2UTAxaGNDQmtaV1pwYm1WeVpYTnZkWEpqWlNCd2IzQWdaVzVrSUdWdVpDQUtaVzVrYzNSeVpXRnRDbVZ1Wkc5aWFnbzVJREFnYjJKcUNsc2dNeUF6SURJMk5TQTVJRGtnTmpZMklERXhJREV4SURNek15QXhNaUF4TWlBek16TWdNVFVnTVRVZ01qYzNJREUySURFMklETXpNeUF4TnlBeE55QXlOemNnTVRnZ01UZ2dNamMzSURFNUlERTVJRFUxTmlBeU1DQXlNQ0ExTlRZZ01qRWdNakVnTlRVMklESXlJREl5SURVMU5pQXlOQ0F5TkNBMU5UWWdNamNnTWpjZ05UVTJJREk0SURJNElEVTFOaUF6TUNBek1DQXlOemNnTXpFZ016RWdOVGd6SURNeUlETXlJRFU0TXlBek15QXpNeUExT0RNZ016WWdNellnTmpZMklETTNJRE0zSURZMk5pQXpPQ0F6T0NBM01qSWdNemtnTXprZ056SXlJRFF3SURRd0lEWTJOaUEwTVNBME1TQTJNVEFnTkRJZ05ESWdOemMzSURReklEUXpJRGN5TWlBME5DQTBOQ0F5TnpjZ05EVWdORFVnTlRBd0lEUTNJRFEzSURVMU5pQTBPQ0EwT0NBNE16TWdORGtnTkRrZ056SXlJRFV3SURVd0lEYzNOeUExTVNBMU1TQTJOallnTlRNZ05UTWdOekl5SURVMElEVTBJRFkyTmlBMU5TQTFOU0EyTVRBZ05UY2dOVGNnTmpZMklEWTJJRFkySURVMU1TQTJPQ0EyT0NBMU5UWWdOamtnTmprZ05UVTJJRGN3SURjd0lEVXdNQ0EzTVNBM01TQTFOVFlnTnpJZ056SWdOVFUySURjeklEY3pJREkzTnlBM05DQTNOQ0ExTlRZZ056VWdOelVnTlRVMklEYzJJRGMySURJeU9DQTNPQ0EzT0NBMU1EQWdOemtnTnprZ01qSTRJRGd3SURnd0lEZ3pNeUE0TVNBNE1TQTFOVFlnT0RJZ09ESWdOVFUySURneklEZ3pJRFUxTmlBNE5DQTROQ0ExTlRZZ09EVWdPRFVnTXpNeklEZzJJRGcySURVd01DQTROeUE0TnlBeU56Y2dPRGdnT0RnZ05UVTJJRGc1SURnNUlEVXdNQ0E1TUNBNU1DQTNNaklnT1RFZ09URWdOVEF3SURreUlEa3lJRFV3TUNBeE56Y2dNVGMzSURJNU1pQXhPREFnTVRnd0lETXpNeUF4T0RJZ01UZ3lJREl5TWlCZENtVnVaRzlpYWdvMklEQWdiMkpxQ2xzZ0xUZ3pNeUF0TWpBNUlEZ3pNeUE1TWpFZ1hRcGxibVJ2WW1vS055QXdJRzlpYWdvNE16TUtaVzVrYjJKcUNqSWdNQ0J2WW1vS1BEd0tMME52ZFc1MElERUtMMHRwWkhNZ1d5QXpJREFnVWlCZENpOVVlWEJsSUM5UVlXZGxjd28rUGdwbGJtUnZZbW9LTVNBd0lHOWlhZ284UEFvdlVHRm5aWE1nTWlBd0lGSUtMMVI1Y0dVZ0wwTmhkR0ZzYjJjS1BqNEtaVzVrYjJKcUNqRXhNU0F3SUc5aWFnbzhQQW92UVhWMGFHOXlJQ2hTUTJGdGNHSmxiR3dwQ2k5RGNtVmhkR2x2YmtSaGRHVWdLRVE2TWpBeU16QTVNVGd4TVRFMU1UTXJNREVuTURBbktRb3ZUVzlrUkdGMFpTQW9SRG95TURJek1Ea3hPREV4TVRVeE15c3dNU2N3TUNjcENpOVFjbTlrZFdObGNpQW9UV2xqY205emIyWjBPaUJRY21sdWRDQlVieUJRUkVZcENpOVVhWFJzWlNBb1RXbGpjbTl6YjJaMElGZHZjbVFnTFNCQ1F6QXhZU0JEYjI1MGNtRmpkQzVrYjJONEtRbytQZ3BsYm1Sdlltb0tlSEpsWmdvd0lERXhNZzBLTURBd01EQXdNREF3TUNBMk5UVXpOU0JtRFFvd01EQXdNVFkzTnprMUlEQXdNREF3SUc0TkNqQXdNREF4TmpjM016WWdNREF3TURBZ2JnMEtNREF3TURFMk5UVXpNaUF3TURBd01DQnVEUW93TURBd01EQXdNREE1SURBd01EQXdJRzROQ2pBd01EQXdNREF3TXpVZ01EQXdNREFnYmcwS01EQXdNREUyTnpZNE1DQXdNREF3TUNCdURRb3dNREF3TVRZM056RTNJREF3TURBd0lHNE5DakF3TURBd01EQXdOVGdnTURBd01EQWdiZzBLTURBd01ERTJOams1T1NBd01EQXdNQ0J1RFFvd01EQXdNVFkxTmprM0lEQXdNREF3SUc0TkNqQXdNREF3TmpnNE1qY2dNREF3TURBZ2JnMEtNREF3TURBMk9USTVPU0F3TURBd01DQnVEUW93TURBd01USTJPVFl4SURBd01EQXdJRzROQ2pBd01EQXhNems0TmpjZ01EQXdNREFnYmcwS01EQXdNREV6T1RrNU5pQXdNREF3TUNCdURRb3dNREF3TVRRd01USTFJREF3TURBd0lHNE5DakF3TURBeE5EQXlOVFFnTURBd01EQWdiZzBLTURBd01ERTBNRFF3TmlBd01EQXdNQ0J1RFFvd01EQXdNVFF3TmpJNElEQXdNREF3SUc0TkNqQXdNREF4TkRBM05UY2dNREF3TURBZ2JnMEtNREF3TURFME1EZzROaUF3TURBd01DQnVEUW93TURBd01UUXhNREUxSURBd01EQXdJRzROQ2pBd01EQXhOREV4TnpNZ01EQXdNREFnYmcwS01EQXdNREUwTVRNNU5TQXdNREF3TUNCdURRb3dNREF3TVRReE5USTBJREF3TURBd0lHNE5DakF3TURBeE5ERTJOVE1nTURBd01EQWdiZzBLTURBd01ERTBNVGM0TWlBd01EQXdNQ0J1RFFvd01EQXdNVFF4T1RRd0lEQXdNREF3SUc0TkNqQXdNREF4TkRJeE5qVWdNREF3TURBZ2JnMEtNREF3TURFME1qSTVOQ0F3TURBd01DQnVEUW93TURBd01UUXlOREl6SURBd01EQXdJRzROQ2pBd01EQXhOREkxTlRJZ01EQXdNREFnYmcwS01EQXdNREUwTWpjeE1DQXdNREF3TUNCdURRb3dNREF3TVRReU9UTXlJREF3TURBd0lHNE5DakF3TURBeE5ETXdOakVnTURBd01EQWdiZzBLTURBd01ERTBNekU1TUNBd01EQXdNQ0J1RFFvd01EQXdNVFF6TXpFNUlEQXdNREF3SUc0TkNqQXdNREF4TkRNME56Y2dNREF3TURBZ2JnMEtNREF3TURFME16Y3dNaUF3TURBd01DQnVEUW93TURBd01UUXpPRE14SURBd01EQXdJRzROQ2pBd01EQXhORE01TmpBZ01EQXdNREFnYmcwS01EQXdNREUwTkRBNE9TQXdNREF3TUNCdURRb3dNREF3TVRRME1qUXhJREF3TURBd0lHNE5DakF3TURBeE5EUTBOak1nTURBd01EQWdiZzBLTURBd01ERTBORFU1TWlBd01EQXdNQ0J1RFFvd01EQXdNVFEwTnpJeElEQXdNREF3SUc0TkNqQXdNREF4TkRRNE5UQWdNREF3TURBZ2JnMEtNREF3TURFME5UQXdPQ0F3TURBd01DQnVEUW93TURBd01UUTFNak13SURBd01EQXdJRzROQ2pBd01EQXhORFV6TlRrZ01EQXdNREFnYmcwS01EQXdNREUwTlRRNE9DQXdNREF3TUNCdURRb3dNREF3TVRRMU5qRTNJREF3TURBd0lHNE5DakF3TURBeE5EVTNOelVnTURBd01EQWdiZzBLTURBd01ERTBOVGs1TnlBd01EQXdNQ0J1RFFvd01EQXdNVFEyTVRJMklEQXdNREF3SUc0TkNqQXdNREF4TkRZeU5UVWdNREF3TURBZ2JnMEtNREF3TURFME5qTTROQ0F3TURBd01DQnVEUW93TURBd01UUTJOVFF5SURBd01EQXdJRzROQ2pBd01EQXhORFkzTmpjZ01EQXdNREFnYmcwS01EQXdNREUwTmpnNU5pQXdNREF3TUNCdURRb3dNREF3TVRRM01ESTFJREF3TURBd0lHNE5DakF3TURBeE5EY3hOVFFnTURBd01EQWdiZzBLTURBd01ERTBOek14TWlBd01EQXdNQ0J1RFFvd01EQXdNVFEzTlRNM0lEQXdNREF3SUc0TkNqQXdNREF4TkRjMk5qWWdNREF3TURBZ2JnMEtNREF3TURFME56YzVOU0F3TURBd01DQnVEUW93TURBd01UUTNPVEkwSURBd01EQXdJRzROQ2pBd01EQXhORGd3T0RJZ01EQXdNREFnYmcwS01EQXdNREUwT0RNd055QXdNREF3TUNCdURRb3dNREF3TVRRNE5ETTJJREF3TURBd0lHNE5DakF3TURBeE5EZzFOalVnTURBd01EQWdiZzBLTURBd01ERTBPRFk1TkNBd01EQXdNQ0J1RFFvd01EQXdNVFE0T0RVeUlEQXdNREF3SUc0TkNqQXdNREF4TkRrd056Y2dNREF3TURBZ2JnMEtNREF3TURFME9USXdOaUF3TURBd01DQnVEUW93TURBd01UUTVNek0xSURBd01EQXdJRzROQ2pBd01EQXhORGswTmpRZ01EQXdNREFnYmcwS01EQXdNREUwT1RZeU1pQXdNREF3TUNCdURRb3dNREF3TVRRNU9EUTNJREF3TURBd0lHNE5DakF3TURBeE5EazVOellnTURBd01EQWdiZzBLTURBd01ERTFNREV3TlNBd01EQXdNQ0J1RFFvd01EQXdNVFV3TWpNMElEQXdNREF3SUc0TkNqQXdNREF4TlRBek9USWdNREF3TURBZ2JnMEtNREF3TURFMU1EWXhOeUF3TURBd01DQnVEUW93TURBd01UVXdOelEySURBd01EQXdJRzROQ2pBd01EQXhOVEE0TmpNZ01EQXdNREFnYmcwS01EQXdNREUxTURrMk9DQXdNREF3TUNCdURRb3dNREF3TVRVeE1USTJJREF3TURBd0lHNE5DakF3TURBeE5URXpORGNnTURBd01EQWdiZzBLTURBd01ERTFNVFEzTmlBd01EQXdNQ0J1RFFvd01EQXdNVFV4TlRreklEQXdNREF3SUc0TkNqQXdNREF4TlRFMk9UZ2dNREF3TURBZ2JnMEtNREF3TURFMU1UZzFOaUF3TURBd01DQnVEUW93TURBd01UVXlNRGMzSURBd01EQXdJRzROQ2pBd01EQXhOVEl5TURZZ01EQXdNREFnYmcwS01EQXdNREUxTWpNeU15QXdNREF3TUNCdURRb3dNREF3TVRVeU5ESTRJREF3TURBd0lHNE5DakF3TURBeE5USTFPRFlnTURBd01EQWdiZzBLTURBd01ERTFNamd3TnlBd01EQXdNQ0J1RFFvd01EQXdNVFV5T1RNMklEQXdNREF3SUc0TkNqQXdNREF4TlRNd05UUWdNREF3TURBZ2JnMEtNREF3TURFMU16RTJNQ0F3TURBd01DQnVEUW93TURBd01UVXpNekl4SURBd01EQXdJRzROQ2pBd01EQXhOVE0xTkRRZ01EQXdNREFnYmcwS01EQXdNREUxTXpZM05DQXdNREF3TUNCdURRb3dNREF3TVRVek56a3lJREF3TURBd0lHNE5DakF3TURBeE5UTTRPVGdnTURBd01EQWdiZzBLTURBd01ERTFOREEyTUNBd01EQXdNQ0J1RFFvd01EQXdNVFUwTWpneklEQXdNREF3SUc0TkNqQXdNREF4TmpVd09URWdNREF3TURBZ2JnMEtNREF3TURFMk56ZzBOQ0F3TURBd01DQnVEUXAwY21GcGJHVnlDanc4Q2k5SmJtWnZJREV4TVNBd0lGSUtMMUp2YjNRZ01TQXdJRklLTDFOcGVtVWdNVEV5Q2o0K0NuTjBZWEowZUhKbFpnb3hOamd3TkRVS0pTVkZUMFlLXCI7XHJcbiIsImltcG9ydCB7IE9yZGVyRm9ybSB9IGZyb20gXCIuLi9Nb2RlbHMvT3JkZXJGb3JtXCI7XHJcbmltcG9ydCB7IE1vY2tCYXNlNjRPcmRlckZvcm1QREYgfSBmcm9tIFwiLi9Nb2NrQmFzZTY0T3JkZXJGb3JtUERGXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBPcmRlciBGb3JtcyAqL1xyXG5leHBvcnQgY29uc3QgTW9ja09yZGVyRm9ybURhdGE6IHtcclxuICAgIE9yZGVyMTogT3JkZXJGb3JtO1xyXG4gICAgT3JkZXIyOiBPcmRlckZvcm07XHJcbiAgICBPcmRlcjM6IE9yZGVyRm9ybTtcclxuICAgIE9yZGVyNDogT3JkZXJGb3JtO1xyXG4gICAgT3JkZXI1OiBPcmRlckZvcm07XHJcbn0gPSB7XHJcbiAgICBPcmRlcjE6IHtcclxuICAgICAgICBiaXN0ZWNoX29yZGVyZm9ybWlkOiBcIjkzNjNlNzkwLTQzYjAtNDdkNy04NWFiLTJiNDVhMGM4NjcwM1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZXNpZ25lZDogXCIyMDIyLTA1LTA3VDA3OjA4OjU2LjAxMFpcIixcclxuICAgICAgICBiaXN0ZWNoX29yZGVyZm9ybV9Bbm5vdGF0aW9uczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uaWQ6IFwiOTM2M2U3OTAtNDNiMC00N2Q3LTg1YWItMmI0NWEwYzg2NzAzXCIsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudGJvZHk6IE1vY2tCYXNlNjRPcmRlckZvcm1QREYsXHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogXCJvcmRlcmZvcm0xLnBkZlwiLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIyLTA1LTA3VDA3OjA4OjU2LjAxMFpcIixcclxuICAgICAgICAgICAgICAgIG1pbWV0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG4gICAgT3JkZXIyOiB7XHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm1pZDogXCJiZGE3NDY3NC1iNGExLTQ4MTYtODkwYy01NmViMmM3MDQ4ZDZcIixcclxuICAgICAgICBiaXN0ZWNoX2RhdGVzaWduZWQ6IFwiMjAyMy0wMy0xNVQwNzowODoyMy4wODlaXCIsXHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm1fQW5ub3RhdGlvbnM6IFtdLFxyXG4gICAgfSxcclxuICAgIE9yZGVyMzoge1xyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtaWQ6IFwiYWRhNzQ2NzItYzRhNy0zODE0LTM5MGQtODZlYjJjNzA0OGRhXCIsXHJcbiAgICAgICAgYmlzdGVjaF9kYXRlc2lnbmVkOiBcIjIwMjMtMDktMDFUMDk6MDg6MTEuMTIzWlwiLFxyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtX0Fubm90YXRpb25zOiBbXSxcclxuICAgIH0sXHJcbiAgICBPcmRlcjQ6IHtcclxuICAgICAgICBiaXN0ZWNoX29yZGVyZm9ybWlkOiBcImNkYTc0NjcxLWQ0YTItMTgxNC0zOTBkLTc2ZWIyYzcwNDhkZFwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZXNpZ25lZDogbnVsbCxcclxuICAgICAgICBiaXN0ZWNoX29yZGVyZm9ybV9Bbm5vdGF0aW9uczogW10sXHJcbiAgICB9LFxyXG4gICAgT3JkZXI1OiB7XHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm1pZDogXCJjZGE3NDY3MS1kNGEyLTE4MTQtMzkwZC03NmViMmM3MDQ4ZGRcIixcclxuICAgICAgICBiaXN0ZWNoX2RhdGVzaWduZWQ6IFwiMjAyNC0wOS0wMVQwOTowODoxMS4xMjNaXCIsXHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm1fQW5ub3RhdGlvbnM6IFtdLFxyXG4gICAgfSxcclxufTtcclxuIiwiLyoqIEVudW0gcmVwcmVzZW50aW5nIHRoZSBQcm9kdWN0IFR5cGUgQ29kZSBvZiBhIFNhbGVzIE9yZGVyIExpbmUuICovXHJcbmV4cG9ydCBlbnVtIFByb2R1Y3RUeXBlQ29kZSB7XHJcbiAgICAvKiogUHJvZHVjdCB0eXBlIGNvZGUuICovXHJcbiAgICBQcm9kdWN0ID0gMSxcclxuXHJcbiAgICAvKiogUHJvamVjdCBCYXNlZCBTZXJ2aWNlIHR5cGUgY29kZS4gKi9cclxuICAgIFwiUHJvamVjdC1CYXNlZCBTZXJ2aWNlXCIgPSA1LFxyXG59XHJcbiIsIi8qKiBFbnVtZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIFN0YXRlIENvZGUgb2YgYSBQcm9qZWN0ICovXHJcbmV4cG9ydCBlbnVtIFByb2plY3RTdGF0ZUNvZGUge1xyXG4gICAgLyoqIEFjdGl2ZSBTdGF0ZS4gKi9cclxuICAgIEFjdGl2ZSA9IDAsXHJcblxyXG4gICAgLyoqIEluYWN0aXZlIFN0YXRlLiAqL1xyXG4gICAgSW5hY3RpdmUgPSAxLFxyXG59XHJcbiIsIi8qKiBFbnVtZXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIFN0YXR1cyBDb2RlIG9mIGEgUHJvamVjdCAqL1xyXG5leHBvcnQgZW51bSBQcm9qZWN0U3RhdHVzQ29kZSB7XHJcbiAgICAvKiogQWN0aXZlIC0gQWN0aXZlICovXHJcbiAgICBcIkFjdGl2ZVwiID0gMSxcclxuXHJcbiAgICAvKiogSW4gUXVvdGUgLSBBY3RpdmUgKi9cclxuICAgIFwiSW4gUXVvdGVcIiA9IDEwMF8wMDBfMDA2LFxyXG5cclxuICAgIC8qKiBQcm9qZWN0IGNvcHlpbmcgLSBBY3RpdmUgKi9cclxuICAgIFwiUHJvamVjdCBjb3B5aW5nXCIgPSAxOTJfMzUwXzAwMSxcclxuXHJcbiAgICAvKiogUHJvamVjdCBjb3B5IGZhaWxlZCAtIEFjdGl2ZSAqL1xyXG4gICAgXCJQcm9qZWN0IGNvcHkgZmFpbGVkXCIgPSAxOTJfMzUwXzAwMixcclxuXHJcbiAgICAvKiogUHJvamVjdCBpbXBvcnRpbmcgLSBBY3RpdmUgKi9cclxuICAgIFwiUHJvamVjdCBpbXBvcnRpbmdcIiA9IDE5Ml8zNTBfMDExLFxyXG5cclxuICAgIC8qKiBQcm9qZWN0IGltcG9ydCBmYWlsZWQgLSBBY3RpdmUgKi9cclxuICAgIFwiUHJvamVjdCBpbXBvcnQgZmFpbGVkXCIgPSAxOTJfMzUwXzAxMixcclxuXHJcbiAgICAvKiogUHJvamVjdCBjb252ZXJ0aW5nIC0gQWN0aXZlICovXHJcbiAgICBcIlByb2plY3QgY29udmVydGluZ1wiID0gMTkyXzM1MF8wMjEsXHJcblxyXG4gICAgLyoqIFByb2plY3QgY29udmVydCBmYWlsZWQgLSBBY3RpdmUgKi9cclxuICAgIFwiUHJvamVjdCBjb252ZXJ0IGZhaWxlZFwiID0gMTkyXzM1MF8wMjIsXHJcblxyXG4gICAgLyoqIFByb2plY3QgZXN0aW1hdGVzIGNvcHkgZmFpbGVkIC0gQWN0aXZlICovXHJcbiAgICBcIlByb2plY3QgZXN0aW1hdGVzIGNvcHkgZmFpbGVkXCIgPSAxOTJfMzUwXzAyMyxcclxuXHJcbiAgICAvKiogUGVuZGluZyBDb250cmFjdCBSZXZpZXcgLSBBY3RpdmUgKi9cclxuICAgIFwiUGVuZGluZyBDb250cmFjdCBSZXZpZXdcIiA9IDE5Ml8zNTBfMDI0LFxyXG5cclxuICAgIC8qKiBSZWFkeSB0byBUcmlhZ2UgLSBBY3RpdmUgKi9cclxuICAgIFwiUmVhZHkgdG8gVHJpYWdlXCIgPSAxOTJfMzUwXzAyNSxcclxuXHJcbiAgICAvKiogSW4gUHJvZ3Jlc3MgLSBBY3RpdmUgKi9cclxuICAgIFwiSW4gUHJvZ3Jlc3NcIiA9IDE5Ml8zNTBfMDI2LFxyXG5cclxuICAgIC8qKiBCbG9ja2VkIC0gQWN0aXZlICovXHJcbiAgICBcIkJsb2NrZWRcIiA9IDE5Ml8zNTBfMDI3LFxyXG5cclxuICAgIC8qKiBDYW5jZWxsZWQgLSBJbmFjdGl2ZSAqL1xyXG4gICAgXCJDYW5jZWxsZWRcIiA9IDE5Ml8zNTBfMDAzLFxyXG5cclxuICAgIC8qKiBJbmFjdGl2ZSAtIFNldHMgcHJvamVjdCB0byByZWFkIG9ubHkgLSBJbmFjdGl2ZSAqL1xyXG4gICAgXCJJbmFjdGl2ZSAtIFNldHMgcHJvamVjdCB0byByZWFkIG9ubHlcIiA9IDIsXHJcblxyXG4gICAgLyoqIENsb3NlZCAtIFNldHMgcHJvamVjdCB0byByZWFkIG9ubHkgYW5kIGNhbmNlbHMgZnV0dXJlIGJvb2tpbmdzIC0gSW5hY3RpdmUgKi9cclxuICAgIFwiQ2xvc2VkIC0gU2V0cyBwcm9qZWN0IHRvIHJlYWQgb25seSBhbmQgY2FuY2VscyBmdXR1cmUgYm9va2luZ3NcIiA9IDE5Ml8zNTBfMDAwLFxyXG59XHJcbiIsImltcG9ydCB7IFByb2plY3RTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvUHJvamVjdFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Qcm9qZWN0U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL01vZGVscy9Qcm9qZWN0XCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBQcm9qZWN0cyAqL1xyXG5leHBvcnQgY29uc3QgTW9ja1Byb2plY3REYXRhOiB7IFwiTWljcm9zb2Z0IERlZmVuZGVyIGZvciBFbmRwb2ludC9CdXNpbmVzc1wiOiBQcm9qZWN0IH0gPSB7XHJcbiAgICBcIk1pY3Jvc29mdCBEZWZlbmRlciBmb3IgRW5kcG9pbnQvQnVzaW5lc3NcIjoge1xyXG4gICAgICAgIG1zZHluX3Byb2plY3RpZDogXCJiOWM1ZmUzMy04MDhmLTQ3YTAtODQwMi1kZTliMmVlMTBhN2RcIixcclxuICAgICAgICBtc2R5bl9zdWJqZWN0OiBcIk1pY3Jvc29mdCBEZWZlbmRlciBmb3IgRW5kcG9pbnQvQnVzaW5lc3NcIixcclxuICAgICAgICBiaXN0ZWNoX3Byb2plY3RudW1iZXI6IFwiUFJPSi0wMTA0NC1HNloxQzRcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQcm9qZWN0U3RhdHVzQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBQcm9qZWN0U3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBtc2R5bl9hY3R1YWxzdGFydDogbmV3IERhdGUoXCIyMDI0LTAxLTA0XCIpLFxyXG4gICAgICAgIF9vd25lcmlkX3ZhbHVlOiBcIjk4MjIwZmNiLThhZjgtZWMxMS04MmU3LTAwMGQzYWQ1ODEwZVwiLFxyXG4gICAgICAgIFwiX293bmVyaWRfdmFsdWVAT0RhdGEuQ29tbXVuaXR5LkRpc3BsYXkuVjEuRm9ybWF0dGVkVmFsdWVcIjogXCJTdGV2ZW4gQ29vbWJzXCIsXHJcbiAgICB9LFxyXG59O1xyXG4iLCJpbXBvcnQgeyBQcm9kdWN0VHlwZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvUHJvZHVjdFR5cGVDb2RlXCI7XHJcbmltcG9ydCB7IE9yZGVybGluZSB9IGZyb20gXCIuLi9Nb2RlbHMvT3JkZXJsaW5lXCI7XHJcbmltcG9ydCB7IE1vY2tQcm9qZWN0RGF0YSB9IGZyb20gXCIuL01vY2tQcm9qZWN0RGF0YVwiO1xyXG5cclxuLyoqIE1vY2sgZGF0YSBmb3IgT3JkZXIgTGluZXMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tPcmRlckxpbmVEYXRhOiB7IE9yZGVyMTogT3JkZXJsaW5lW107IE9yZGVyMjogT3JkZXJsaW5lW107IE9yZGVyMzogT3JkZXJsaW5lW10gfSA9IHtcclxuICAgIE9yZGVyMTogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcImM5MzQ4NDU1LTQ2OTMtNDRjYi1hYzk5LTEzYmI4NGZhNmMwNFwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJHZXQgdGhlIHJlZCBzdWl0XCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMjAwLFxyXG4gICAgICAgICAgICBwcmljZXBlcnVuaXQ6IDEwMCxcclxuICAgICAgICAgICAgcXVhbnRpdHk6IDMsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uOiBcIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBfbXNkeW5fcHJvamVjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcImI3ZDkzY2U5LWJmN2MtNDJkNy1iZGVkLTY2OGYzMGIwOWNjNVwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJQYWludCBpdCBncmF5XCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogNTAwLFxyXG4gICAgICAgICAgICBwcmljZXBlcnVuaXQ6IDIwMCxcclxuICAgICAgICAgICAgcXVhbnRpdHk6IDEsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uOiBcIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBfbXNkeW5fcHJvamVjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcIjkwYjc0YzMzLTcwYWUtNDc2c3NhMjJmLWYyZWExYjBjNTAxMlwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJDb3ZlciBpdCB3aXRoIHRpdGFuaXVtIG1ldGFsIGFuZCBvdGhlciBzdHVmZiB0b29cIixcclxuICAgICAgICAgICAgcHJvZHVjdHR5cGVjb2RlOiBQcm9kdWN0VHlwZUNvZGUuUHJvZHVjdCxcclxuICAgICAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiAyMDAsXHJcbiAgICAgICAgICAgIHByaWNlcGVydW5pdDogMTAwLFxyXG4gICAgICAgICAgICBxdWFudGl0eTogNCxcclxuICAgICAgICAgICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb246IFwiVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9kdWN0XCIsXHJcbiAgICAgICAgICAgIF9tc2R5bl9wcm9qZWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsaWQ6IFwiOTBiNzRjMzMtNzBhZS00NzY5LTU1MmYtZjJlYTFiMGM1MDEyXCIsXHJcbiAgICAgICAgICAgIHNhbGVzb3JkZXJkZXRhaWxuYW1lOiBcIk1ha2UgaXQgbG9vayBjb29sXCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMTAsXHJcbiAgICAgICAgICAgIHByaWNlcGVydW5pdDogNjAsXHJcbiAgICAgICAgICAgIHF1YW50aXR5OiAyLFxyXG4gICAgICAgICAgICBiaXN0ZWNoX3Byb2R1Y3RkZXNjcmlwdGlvbjogXCJUaGlzIGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIHByb2R1Y3RcIixcclxuICAgICAgICAgICAgX21zZHluX3Byb2plY3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHNhbGVzb3JkZXJkZXRhaWxpZDogXCI5MGI3NGMzMy03MGFlLTQ3NjktYTIyZi1mMWVhMWIwYzUwMTJcIixcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbG5hbWU6IFwiTWFrZSBpdCBsb29rIHN1cGVyIGNvb2xcIixcclxuICAgICAgICAgICAgcHJvZHVjdHR5cGVjb2RlOiBQcm9kdWN0VHlwZUNvZGUuUHJvZHVjdCxcclxuICAgICAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiAyMCxcclxuICAgICAgICAgICAgcHJpY2VwZXJ1bml0OiAxMixcclxuICAgICAgICAgICAgcXVhbnRpdHk6IDIsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uOiBcIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBfbXNkeW5fcHJvamVjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcIjkwYjc0YzMzLTcwYWUtNDc2OS1hMjJmLWYyZWEyYjBjNTAxMlwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJVcGRhdGUgdGhlIHNvZnR3YXJlXCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogNTAzLFxyXG4gICAgICAgICAgICBwcmljZXBlcnVuaXQ6IDIzLFxyXG4gICAgICAgICAgICBxdWFudGl0eTogNyxcclxuICAgICAgICAgICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb246IFwiVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9kdWN0XCIsXHJcbiAgICAgICAgICAgIF9tc2R5bl9wcm9qZWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsaWQ6IFwiOTBiNzRjMzMtNzBhZS00NzY5LWEyMmYtZjJlYTFiMGM1MDEzXCIsXHJcbiAgICAgICAgICAgIHNhbGVzb3JkZXJkZXRhaWxuYW1lOiBcIlNtZWFyIGl0IHdpdGggYnV0dGVyXCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMzQsXHJcbiAgICAgICAgICAgIHByaWNlcGVydW5pdDogNCxcclxuICAgICAgICAgICAgcXVhbnRpdHk6IDksXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uOiBcIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBfbXNkeW5fcHJvamVjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcIjkwYjc0YzMzLTcwYWUtNDc2OS1hMjJmLWYyZWExYjBjNTAxNFwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJNYWtlIGl0IHNtZWxsIG5pY2VcIixcclxuICAgICAgICAgICAgcHJvZHVjdHR5cGVjb2RlOiBQcm9kdWN0VHlwZUNvZGUuUHJvZHVjdCxcclxuICAgICAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiA2NyxcclxuICAgICAgICAgICAgcHJpY2VwZXJ1bml0OiA5LFxyXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb246IFwiVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9kdWN0XCIsXHJcbiAgICAgICAgICAgIF9tc2R5bl9wcm9qZWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsaWQ6IFwiOTBiNzRjZDMtNzBhZS00NzY5LWEyMmYtZjJlYTFiMGM1MDE0XCIsXHJcbiAgICAgICAgICAgIHNhbGVzb3JkZXJkZXRhaWxuYW1lOiBcIkxvb2sgb3V0IGZvciB0aGUgYmFkIGd1eXNcIixcclxuICAgICAgICAgICAgcHJvZHVjdHR5cGVjb2RlOiBQcm9kdWN0VHlwZUNvZGUuUHJvZHVjdCxcclxuICAgICAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiA5LFxyXG4gICAgICAgICAgICBwcmljZXBlcnVuaXQ6IDM0LFxyXG4gICAgICAgICAgICBxdWFudGl0eTogNyxcclxuICAgICAgICAgICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb246IFwiVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9kdWN0XCIsXHJcbiAgICAgICAgICAgIF9tc2R5bl9wcm9qZWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgT3JkZXIyOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsaWQ6IFwiYTkzNDg0NTQtNzc5MS0zNGNhLWJjOTItMzNiYjg0ZmE2YzA5XCIsXHJcbiAgICAgICAgICAgIHNhbGVzb3JkZXJkZXRhaWxuYW1lOiBcIkdldCB0aGUgaGVsbWV0XCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3R0eXBlY29kZTogUHJvZHVjdFR5cGVDb2RlLlByb2R1Y3QsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMjAwLFxyXG4gICAgICAgICAgICBwcmljZXBlcnVuaXQ6IDEwMCxcclxuICAgICAgICAgICAgcXVhbnRpdHk6IDQsXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uOiBcIlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBfbXNkeW5fcHJvamVjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc2FsZXNvcmRlcmRldGFpbGlkOiBcImE5MzQ4NDU0LTc3OTEtMzRjYS1iYzkyLTM0YmI4NGZjNmMwOVwiLFxyXG4gICAgICAgICAgICBzYWxlc29yZGVyZGV0YWlsbmFtZTogXCJJbnN0YWxsIEouQS5SLlYuSS5TLlwiLFxyXG4gICAgICAgICAgICBwcm9kdWN0dHlwZWNvZGU6IFByb2R1Y3RUeXBlQ29kZVtcIlByb2plY3QtQmFzZWQgU2VydmljZVwiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiAyMF8wMDAsXHJcbiAgICAgICAgICAgIHByaWNlcGVydW5pdDogMTAwLFxyXG4gICAgICAgICAgICBxdWFudGl0eTogMSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb246IFwiVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBwcm9kdWN0XCIsXHJcbiAgICAgICAgICAgIF9tc2R5bl9wcm9qZWN0X3ZhbHVlOiBNb2NrUHJvamVjdERhdGFbXCJNaWNyb3NvZnQgRGVmZW5kZXIgZm9yIEVuZHBvaW50L0J1c2luZXNzXCJdLm1zZHluX3Byb2plY3RpZCxcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIE9yZGVyMzogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IE9yZGVyU3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE9yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IE1vY2tDb250YWN0RGF0YSB9IGZyb20gXCIuL01vY2tDb250YWN0RGF0YVwiO1xyXG5pbXBvcnQgeyBNb2NrT3JkZXJGb3JtRGF0YSB9IGZyb20gXCIuL01vY2tPcmRlckZvcm1EYXRhXCI7XHJcbmltcG9ydCB7IE1vY2tPcmRlckxpbmVEYXRhIH0gZnJvbSBcIi4vTW9ja09yZGVyTGluZURhdGFcIjtcclxuXHJcbi8qKiBNb2NrIGRhdGEgZm9yIE9yZGVycyAqL1xyXG5leHBvcnQgY29uc3QgTW9ja09yZGVyRGF0YTogT3JkZXJbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBzYWxlc29yZGVyaWQ6IFwiMmU3M2Q0NWEtNzFlNy00NmI1LWI0NDgtZWQyZTQzZTdkNzZiXCIsXHJcbiAgICAgICAgbmFtZTogXCJBIG5ldyBzd29yZCBmb3IgSXJvbiBNYW5cIixcclxuICAgICAgICBvcmRlcm51bWJlcjogXCJPUkQtNTQzMjIzLTkyNS1OTy1PUkRFUkZPUk1cIixcclxuICAgICAgICBfYmlzdGVjaF9jb250YWN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHRvdGFsbGluZWl0ZW1hbW91bnQ6IDEyMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogT3JkZXJTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE9yZGVyU3RhdHVzQ29kZS5QZW5kaW5nLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiQ1VTVC0xMjM0NVwiLFxyXG4gICAgICAgIG9yZGVyX2RldGFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzYWxlc29yZGVyaWQ6IFwiZmUxZWQxZDAtNGNiYS00YWVjLWI1ZjMtZjNlZDEyZjlhMDYwXCIsXHJcbiAgICAgICAgbmFtZTogXCJBIE5ldyBTdWl0IGZvciBJcm9uIE1hblwiLFxyXG4gICAgICAgIG9yZGVybnVtYmVyOiBcIk9SRC0wMTIzNDUtMTIzXCIsXHJcbiAgICAgICAgX2Jpc3RlY2hfY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRvbnlTdGFyay5jb250YWN0aWQsXHJcbiAgICAgICAgdG90YWxsaW5laXRlbWFtb3VudDogMzRfMjYwLjAsXHJcbiAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiAxXzIwMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtOiBNb2NrT3JkZXJGb3JtRGF0YS5PcmRlcjEsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBPcmRlclN0YXRlQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogT3JkZXJTdGF0dXNDb2RlW1wiSW4gUHJvZ3Jlc3NcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZTogXCJDVVNULTU0MzIxXCIsXHJcbiAgICAgICAgb3JkZXJfZGV0YWlsczogTW9ja09yZGVyTGluZURhdGEuT3JkZXIxLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzYWxlc29yZGVyaWQ6IFwiYWU3M2Q0NWItMTFlNC00NmI1LWE0NDgtZmQyZTQzZTdkNzZjXCIsXHJcbiAgICAgICAgbmFtZTogXCJBIG5ldyBzdWl0IGZvciBoaXMgZnJpZW5kIFdhciBNYWNoaW5lXCIsXHJcbiAgICAgICAgb3JkZXJudW1iZXI6IFwiT1JELTU0MzIxMC00MjFcIixcclxuICAgICAgICBfYmlzdGVjaF9jb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudG9ueVN0YXJrLmNvbnRhY3RpZCxcclxuICAgICAgICB0b3RhbGxpbmVpdGVtYW1vdW50OiAyXzE1MC4wLFxyXG4gICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMTAwLjAsXHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm06IE1vY2tPcmRlckZvcm1EYXRhLk9yZGVyMixcclxuICAgICAgICBzdGF0ZWNvZGU6IE9yZGVyU3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBPcmRlclN0YXR1c0NvZGVbXCJQZW5kaW5nIENvbnRyYWN0IFJldmlld1wiXSxcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIkNVU1QtMzQ1MjZcIixcclxuICAgICAgICBvcmRlcl9kZXRhaWxzOiBNb2NrT3JkZXJMaW5lRGF0YS5PcmRlcjIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHNhbGVzb3JkZXJpZDogXCI1ZTczZDQ1Yi0yMWUzLWE2YjUtYjQ0OC02ZDJlNDNlN2Q3NmRcIixcclxuICAgICAgICBuYW1lOiBcIkEgbmV3IGhlbG1ldCBmb3IgSXJvbiBNYW5cIixcclxuICAgICAgICBvcmRlcm51bWJlcjogXCJPUkQtOTQzMjcxLTYxOFwiLFxyXG4gICAgICAgIF9iaXN0ZWNoX2NvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgdG90YWxsaW5laXRlbWFtb3VudDogMTUwLjAsXHJcbiAgICAgICAgYmlzdGVjaF90b3RhbGFubnVhbHByaWNlOiAwLjAsXHJcbiAgICAgICAgYmlzdGVjaF9vcmRlcmZvcm06IE1vY2tPcmRlckZvcm1EYXRhLk9yZGVyMyxcclxuICAgICAgICBzdGF0ZWNvZGU6IE9yZGVyU3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBPcmRlclN0YXR1c0NvZGUuUHJvY2Vzc2luZyxcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIkNVU1QtOTA4MjZcIixcclxuICAgICAgICBvcmRlcl9kZXRhaWxzOiBNb2NrT3JkZXJMaW5lRGF0YS5PcmRlcjMsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIHNhbGVzb3JkZXJpZDogXCI0ZTczZDQ1MS02MWU3LTQ2YjItYTQ0OC1lZDJlNDNlN2Q3NmNcIixcclxuICAgICAgICBuYW1lOiBcIkEgbmV3IHJvY2tldCBib29zdGVyIGZvciBJcm9uIE1hblwiLFxyXG4gICAgICAgIG9yZGVybnVtYmVyOiBcIk9SRC04NDMyODMtNDI5XCIsXHJcbiAgICAgICAgX2Jpc3RlY2hfY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUGFya2VyLmNvbnRhY3RpZCxcclxuICAgICAgICB0b3RhbGxpbmVpdGVtYW1vdW50OiAxMjAuMCxcclxuICAgICAgICBiaXN0ZWNoX3RvdGFsYW5udWFscHJpY2U6IDAuMCxcclxuICAgICAgICBiaXN0ZWNoX29yZGVyZm9ybTogTW9ja09yZGVyRm9ybURhdGEuT3JkZXI0LFxyXG4gICAgICAgIHN0YXRlY29kZTogT3JkZXJTdGF0ZUNvZGUuQWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE9yZGVyU3RhdHVzQ29kZS5QZW5kaW5nLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiQ1VTVC05MDI4M1wiLFxyXG4gICAgICAgIG9yZGVyX2RldGFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzYWxlc29yZGVyaWQ6IFwiNGU3M2Q0NTEtNjFlNy00NmIyLWE0NDgtZWQyZTQzZTdkNTZjXCIsXHJcbiAgICAgICAgbmFtZTogXCJBIGJyYW5kIG5ldyBnbG92ZSBmb3IgVGhhbm9zXCIsXHJcbiAgICAgICAgb3JkZXJudW1iZXI6IFwiT1JELTg0MzI4My00MjhcIixcclxuICAgICAgICBfYmlzdGVjaF9jb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEucGV0ZXJQYXJrZXIuY29udGFjdGlkLFxyXG4gICAgICAgIHRvdGFsbGluZWl0ZW1hbW91bnQ6IDEyMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtOiBNb2NrT3JkZXJGb3JtRGF0YS5PcmRlcjQsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBPcmRlclN0YXRlQ29kZS5GdWxmaWxsZWQsXHJcbiAgICAgICAgc3RhdHVzY29kZTogT3JkZXJTdGF0dXNDb2RlLkNvbXBsZXRlLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiQ1VTVC0wOTI4M1wiLFxyXG4gICAgICAgIG9yZGVyX2RldGFpbHM6IFtdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBzYWxlc29yZGVyaWQ6IFwiNGU3M2Q0NTEtNjFlNy00NmIyLWE0NDgtZWQyZTQzZTdkNTZjXCIsXHJcbiAgICAgICAgbmFtZTogXCJBIGJyYW5kIG5ldyBnbG92ZSBmb3IgVGhhbm9zXCIsXHJcbiAgICAgICAgb3JkZXJudW1iZXI6IFwiT1JELTg0MzI4My00MjhcIixcclxuICAgICAgICBfYmlzdGVjaF9jb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEucGV0ZXJQYXJrZXIuY29udGFjdGlkLFxyXG4gICAgICAgIHRvdGFsbGluZWl0ZW1hbW91bnQ6IDEyMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogMC4wLFxyXG4gICAgICAgIGJpc3RlY2hfb3JkZXJmb3JtOiBNb2NrT3JkZXJGb3JtRGF0YS5PcmRlcjQsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBPcmRlclN0YXRlQ29kZS5GdWxmaWxsZWQsXHJcbiAgICAgICAgc3RhdHVzY29kZTogT3JkZXJTdGF0dXNDb2RlLkNvbXBsZXRlLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IFwiQ1VTVC0wOTI4NFwiLFxyXG4gICAgICAgIG9yZGVyX2RldGFpbHM6IFtdLFxyXG4gICAgfSxcclxuXTtcclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGUgb2YgYSBQb3J0YWwgSW52aXRhdGlvbi4gKi9cclxuZXhwb3J0IGVudW0gUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSB7XHJcbiAgICAvKiogU3RvY2sgKGxvY2FsKSBBdXRoZW50aWNhdGlvbi4gKi9cclxuICAgIExvY2FsID0gMTY0Xzk2MF8wMDAsXHJcblxyXG4gICAgLyoqIE1pY3Jvc29mdCBmZWRlcmF0ZWQgaWRlbnRpdHkuICovXHJcbiAgICBNaWNyb3NvZnQgPSAxNjRfOTYwXzAwMixcclxuXHJcbiAgICAvKiogQXp1cmUgQnVzaW5lc3MtdG8tQnVzaW5lc3MgQXV0aGVudGljYXRpb24uICovXHJcbiAgICBBenVyZUIyQiA9IDE2NF85NjBfMDAxXHJcbn0iLCIvKiogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBwb3J0YWwgaW52aXRhdGlvbiBzdGF0dXMuICovXHJcbmV4cG9ydCBlbnVtIFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlIHtcclxuICAgIC8qKiBBY3RpdmUgLSBOZXcgKi9cclxuICAgIE5ldyA9IDEsXHJcblxyXG4gICAgLyoqIEFjdGl2ZSAtIFBlbmRpbmcgU2VuZCAqL1xyXG4gICAgXCJQZW5kaW5nIFNlbmRcIiA9IDc1Nl8xNTBfMDAzLFxyXG5cclxuICAgIC8qKiBBY3RpdmUgLSBTZW50ICovXHJcbiAgICBTZW50ID0gNzU2XzE1MF8wMDAsXHJcblxyXG4gICAgLyoqIEFjdGl2ZSAtIFJlZGVlbWVkICovXHJcbiAgICBSZWRlZW1lZCA9IDc1Nl8xNTBfMDAxLFxyXG5cclxuICAgIC8qKiBJbmFjdGl2ZSAtIEV4cGlyZWQgKi9cclxuICAgIEV4cGlyZWQgPSA3NTZfMTUwXzAwMixcclxuXHJcbiAgICAvKiogSW5hY3RpdmUgLSBGYWlsZWQgKi9cclxuICAgIEZhaWxlZCA9IDc1Nl8xNTBfMDA0LFxyXG5cclxuICAgIC8qKiBJbmFjdGl2ZSAtIEluYWN0aXZlICovXHJcbiAgICBJbmFjdGl2ZSA9IDIsXHJcbn1cclxuIiwiaW1wb3J0IHsgUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9Qb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL1BvcnRhbEludml0YXRpb25TdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb24gfSBmcm9tIFwiLi4vTW9kZWxzL1BvcnRhbEludml0YXRpb25cIjtcclxuaW1wb3J0IHsgTW9ja0NvbnRhY3REYXRhIH0gZnJvbSBcIi4vTW9ja0NvbnRhY3REYXRhXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBQb3J0YWwgSW52aXRhdGlvbnMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tQb3J0YWxJbnZpdGF0aW9uRGF0YTogUG9ydGFsSW52aXRhdGlvbltdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiMTE2MDY4N2FlOGQ4NGUzZWI3ODQ5ZmNhNzUzODgwYjZcIixcclxuICAgICAgICBfYWR4X2ludml0ZWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS5uaWNrRnVyeS5jb250YWN0aWQsXHJcbiAgICAgICAgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGU6IFBvcnRhbEludml0YXRpb25BdXRoZW50aWNhdGlvblR5cGVbXCJNaWNyb3NvZnRcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiUGVuZGluZyBTZW5kXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjI0OTI4ZWRlLWNmZTQtNDc1NC05MTUyLTVhMWMzZDUzZTc4OVwiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUGFya2VyLmNvbnRhY3RpZCxcclxuICAgICAgICBiaXN0ZWNoX2F1dGhlbnRpY2F0aW9udHlwZTogUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZVtcIkxvY2FsXCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIlJlZGVlbWVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjVhNjczZTMzLTY3YWEtNGVmOS1hY2ZmLTM5ZWNhZTFiYTkyMFwiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnBldGVyUXVpbGwuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTWljcm9zb2Z0XCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIlJlZGVlbWVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjdhMjExZTI3LTkyZTQtNGY4Ni05YmZhLWI4OTllMzY2YzI2M1wiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnNjb3R0TGFuZy5jb250YWN0aWQsXHJcbiAgICAgICAgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGU6IFBvcnRhbEludml0YXRpb25BdXRoZW50aWNhdGlvblR5cGVbXCJNaWNyb3NvZnRcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiUmVkZWVtZWRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiMWZlNTk5OTAtMDFkNy00MzJkLWFmYTMtNGQ2ZThlM2MzY2RjXCIsXHJcbiAgICAgICAgX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTG9jYWxcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiUmVkZWVtZWRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiMzQ5ZWRhMTAtZDljZC00NjBmLWFmYWUtMWI5MmYyYjE0ODNmXCIsXHJcbiAgICAgICAgX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEubmlja0Z1cnkuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTG9jYWxcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDg6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiUmVkZWVtZWRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiNjU4MmI5ZDUtMzgyNy00ZTIyLWJhYWItZTlkNDJiNzMyOTMzXCIsXHJcbiAgICAgICAgX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEudG9ueVN0YXJrLmNvbnRhY3RpZCxcclxuICAgICAgICBiaXN0ZWNoX2F1dGhlbnRpY2F0aW9udHlwZTogUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZVtcIk1pY3Jvc29mdFwiXSxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wNy0wN1QwOTowODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJSZWRlZW1lZFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWR4X2ludml0YXRpb25pZDogXCJmZDY4ZDVjYy0xYzA1LTRlZGQtYmY5NS04YWE5ZWIzZTk2ZDZcIixcclxuICAgICAgICBfYWR4X2ludml0ZWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50b255U3RhcmsuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTWljcm9zb2Z0XCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIxLTA3LTA2VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIkV4cGlyZWRcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiN2QxYjc4OTYtMjMwMS00MjA3LTlkZTQtNzk5NjQzYzQ3Y2EzXCIsXHJcbiAgICAgICAgX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RldmVSb2dlcnMuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTWljcm9zb2Z0XCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIlJlZGVlbWVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcImYyYmQxOTkwLTk3NjEtNGQzNi05NzdiLWNiYTkzM2NhNmU4MFwiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnN0ZXZlUm9nZXJzLmNvbnRhY3RpZCxcclxuICAgICAgICBiaXN0ZWNoX2F1dGhlbnRpY2F0aW9udHlwZTogUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZVtcIk1pY3Jvc29mdFwiXSxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wNy0wNlQxMDowODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJFeHBpcmVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjcyZmRlODVlLThjNGEtNGRmMS05OTg2LWJhM2VlODM0YzdhZlwiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnRob3IuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTWljcm9zb2Z0XCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA3VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIkZhaWxlZFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWR4X2ludml0YXRpb25pZDogXCI3NGFmODg4Ny0zNjgxLTRiMzYtYmZkOC1mYjlmNGM4YzYwM2NcIixcclxuICAgICAgICBfYWR4X2ludml0ZWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50aG9yLmNvbnRhY3RpZCxcclxuICAgICAgICBiaXN0ZWNoX2F1dGhlbnRpY2F0aW9udHlwZTogUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZVtcIk1pY3Jvc29mdFwiXSxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wNy0wOVQwOTowODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJFeHBpcmVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjNkNDQ2ZDhhLTE1ZTMtNDkwMC1hOTc0LThiMDBmYjkwYTFhM1wiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnNjb3R0TGFuZy5jb250YWN0aWQsXHJcbiAgICAgICAgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGU6IFBvcnRhbEludml0YXRpb25BdXRoZW50aWNhdGlvblR5cGVbXCJNaWNyb3NvZnRcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDdUMDk6MDI6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiRmFpbGVkXCJdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhZHhfaW52aXRhdGlvbmlkOiBcIjkzZjM3OTVkLTZiNjQtNDgzNC04OWVmLWRlYzljODkyYjI5MFwiLFxyXG4gICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogTW9ja0NvbnRhY3REYXRhLnNjb3R0TGFuZy5jb250YWN0aWQsXHJcbiAgICAgICAgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGU6IFBvcnRhbEludml0YXRpb25BdXRoZW50aWNhdGlvblR5cGVbXCJNaWNyb3NvZnRcIl0sXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMDctMDZUMDk6MDE6MDAuMDAwWlwiLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiRXhwaXJlZFwiXSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWR4X2ludml0YXRpb25pZDogXCJmNTRiZTFiYy00MzBjLTQ5ZTgtOTBiNS04MDIzNzZhOWVhOTBcIixcclxuICAgICAgICBfYWR4X2ludml0ZWNvbnRhY3RfdmFsdWU6IE1vY2tDb250YWN0RGF0YS50Y2hhbGxhLmNvbnRhY3RpZCxcclxuICAgICAgICBiaXN0ZWNoX2F1dGhlbnRpY2F0aW9udHlwZTogbnVsbCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0wNy0wN1QwOTowODowMC4wMDBaXCIsXHJcbiAgICAgICAgc3RhdHVzY29kZTogUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJOZXdcIl0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiYzJmODNjNmEtYzQ1OC00OGVmLWE4NTktNmY4NGZmYjhjOWRkXCIsXHJcbiAgICAgICAgX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlOiBNb2NrQ29udGFjdERhdGEuc3RlcGhlbnN0cmFuZ2UuY29udGFjdGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlOiBQb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlW1wiTWljcm9zb2Z0XCJdLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTA3LTA2VDA5OjA4OjAwLjAwMFpcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIlNlbnRcIl0sXHJcbiAgICB9LFxyXG5dO1xyXG4iLCJpbXBvcnQgeyBDYXNlVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlVHlwZVwiO1xyXG5pbXBvcnQgeyBQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxNYWpvckluY2lkZW50VXBkYXRlXCI7XHJcbmltcG9ydCB7IE1vY2tJbmNpZGVudERhdGEgfSBmcm9tIFwiLi9Nb2NrSW5jaWRlbnREYXRhXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBNYWpvciBJbmNpZGVudCBVcGRhdGVzICovXHJcbmV4cG9ydCBjb25zdCBNb2NrUG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZURhdGE6IFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcImZmZDU2OTljLTQzOTUtNDg5ZS04NTNmLTllN2E2ZDVlYTBlYVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogTW9ja0luY2lkZW50RGF0YS5maWx0ZXIoKHgpID0+IHguY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdKVswXVxyXG4gICAgICAgICAgICAuaW5jaWRlbnRpZCxcclxuICAgICAgICBzdWJqZWN0OiBcIk1ham9yIEluY2lkZW50IFJlc29sdmVkXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGBNYWpvciBJbmNpZGVudCAke1xyXG4gICAgICAgICAgICBNb2NrSW5jaWRlbnREYXRhLmZpbHRlcigoeCkgPT4geC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0pWzBdLnRpY2tldG51bWJlclxyXG4gICAgICAgIH0gaGFzIGJlZW4gbWFya2VkIGFzIHJlc29sdmVkLmAsXHJcbiAgICAgICAgY3JlYXRlZG9uOiBcIjIwMjAtMTAtMDlUMTA6MTI6MTEuMDAwWlwiLFxyXG4gICAgICAgIG1vZGlmaWVkb246IFwiMjAyMC0wNy0wN1QwOTozNTowMC4wMDBaXCIsXHJcbiAgICAgICAgYmlzdGVjaF9jYXNlc3RhdHVzc25hcHNob3Q6IFwiUmVzb2x2ZWRcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCJmZmQ1Njk5Yy00Mzk1LTQ4OWUtODUzZi05ZDdhNmQ1ZWEwZWFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IE1vY2tJbmNpZGVudERhdGEuZmlsdGVyKCh4KSA9PiB4LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGVbXCJNYWpvciBJbmNpZGVudFwiXSlbMF1cclxuICAgICAgICAgICAgLmluY2lkZW50aWQsXHJcbiAgICAgICAgc3ViamVjdDogXCJNYWpvciBJbmNpZGVudCBSZS1PcGVuZWRcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogYE1ham9yIEluY2lkZW50ICR7XHJcbiAgICAgICAgICAgIE1vY2tJbmNpZGVudERhdGEuZmlsdGVyKCh4KSA9PiB4LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGVbXCJNYWpvciBJbmNpZGVudFwiXSlbMF0udGlja2V0bnVtYmVyXHJcbiAgICAgICAgfSBoYXMgYmVlbiByZS1vcGVuZWQuYCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wOVQxMDoxMjoxMS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDA5OjM1OjAwLjAwMFpcIixcclxuICAgICAgICBiaXN0ZWNoX2Nhc2VzdGF0dXNzbmFwc2hvdDogXCJJbiBQcm9ncmVzc1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBhY3Rpdml0eWlkOiBcImZmZDU2OTljLTQzOTUtNDg5ZS04NTNmLTlkN2E2ZDVlYTBlYVwiLFxyXG4gICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogTW9ja0luY2lkZW50RGF0YS5maWx0ZXIoKHgpID0+IHguY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdKVswXVxyXG4gICAgICAgICAgICAuaW5jaWRlbnRpZCxcclxuICAgICAgICBzdWJqZWN0OiBcIlVwZGF0ZVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGxlYXNlIGJlIGFkdmlzZWQgdGhhdCBNYWpvciBJbmNpZGVudCAke1xyXG4gICAgICAgICAgICBNb2NrSW5jaWRlbnREYXRhLmZpbHRlcigoeCkgPT4geC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0pWzBdLnRpY2tldG51bWJlclxyXG4gICAgICAgIH0gaGFzIG5vdyBiZWVuIHJlc29sdmVkLlxyXG5cclxuICAgICAgICAgICAgU2VydmljZSB3YXMgZnVsbHkgcmVzdG9yZWQgYXQgMDg6NTAuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBXZSBiZWxpZXZlIHRoYXQgaW5ib3VuZCBjYWxscyBzaG91bGQgbm93IGJlIHdvcmtpbmcgYXMgZXhwZWN0ZWQgLSBwbGVhc2UgcmV0ZXN0IGFuZCBjb250YWN0IHRoZSBTZXJ2aWNlRGVzayBvbiAwMTIwMiAzMzIyOTkgaWYgc3RpbGwgZXhwZXJpZW5jaW5nIGlzc3Vlcy5gLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA5VDEwOjEyOjA5LjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgICAgIGJpc3RlY2hfY2FzZXN0YXR1c3NuYXBzaG90OiBcIkluIFByb2dyZXNzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGFjdGl2aXR5aWQ6IFwiZmZkNTY5OWMtNDM5NS00ODllLTkwM2YtOWU3YTZkNWVhMGVhXCIsXHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBNb2NrSW5jaWRlbnREYXRhLmZpbHRlcigoeCkgPT4geC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0pWzBdXHJcbiAgICAgICAgICAgIC5pbmNpZGVudGlkLFxyXG4gICAgICAgIHN1YmplY3Q6IFwiTWFqb3IgSW5jaWRlbnQgQ3JlYXRlZFwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTWFqb3IgSW5jaWRlbnQgJHtcclxuICAgICAgICAgICAgTW9ja0luY2lkZW50RGF0YS5maWx0ZXIoKHgpID0+IHguY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdKVswXS50aWNrZXRudW1iZXJcclxuICAgICAgICB9IGNyZWF0ZWQuYCxcclxuICAgICAgICBjcmVhdGVkb246IFwiMjAyMC0xMC0wOVQxMDoxMjoxMS4wMDBaXCIsXHJcbiAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIwLTA3LTA3VDA5OjM1OjAwLjAwMFpcIixcclxuICAgICAgICBiaXN0ZWNoX2Nhc2VzdGF0dXNzbmFwc2hvdDogXCJJbiBQcm9ncmVzc1wiLFxyXG4gICAgfSxcclxuXHJcbiAgICB7XHJcbiAgICAgICAgYWN0aXZpdHlpZDogXCJmZmQ1Njk5Yy00Mzk1LTQ4OWUtOTAzZi05ZTdhNmQ1ZWEwZWFcIixcclxuICAgICAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU6IE1vY2tJbmNpZGVudERhdGEuZmlsdGVyKCh4KSA9PiB4LmNhc2V0eXBlY29kZSA9PT0gQ2FzZVR5cGVbXCJNYWpvciBJbmNpZGVudFwiXSlbMV1cclxuICAgICAgICAgICAgLmluY2lkZW50aWQsXHJcbiAgICAgICAgc3ViamVjdDogXCJNYWpvciBJbmNpZGVudCBDcmVhdGVkXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IGBNYWpvciBJbmNpZGVudCAke1xyXG4gICAgICAgICAgICBNb2NrSW5jaWRlbnREYXRhLmZpbHRlcigoeCkgPT4geC5jYXNldHlwZWNvZGUgPT09IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0pWzFdLnRpY2tldG51bWJlclxyXG4gICAgICAgIH0gY3JlYXRlZC5gLFxyXG4gICAgICAgIGNyZWF0ZWRvbjogXCIyMDIwLTEwLTA5VDEwOjEyOjExLjAwMFpcIixcclxuICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjAtMDctMDdUMDk6MzU6MDAuMDAwWlwiLFxyXG4gICAgICAgIGJpc3RlY2hfY2FzZXN0YXR1c3NuYXBzaG90OiBcIkluIFByb2dyZXNzXCIsXHJcbiAgICB9LFxyXG5dO1xyXG4iLCJpbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBCbG9nUG9zdCB9IGZyb20gXCIuLi9Nb2RlbHMvQmxvZ1Bvc3RcIjtcclxuXHJcbi8qKiBNb2NrIGRhdGEgZm9yIEJsb2cgUG9zdHMuICovXHJcbmV4cG9ydCBjb25zdCBNb2NrQmxvZ1Bvc3REYXRhOiBCbG9nUG9zdFtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfYmxvZ3Bvc3RpZDogXCIxXCIsXHJcbiAgICAgICAgYmlzdGVjaF9uYW1lOiBcIkxvcmVtIElwc3VtIHBhcnQgMVwiLFxyXG4gICAgICAgIGJpc3RlY2hfZGVzY3JpcHRpb246IFwiRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXJcIixcclxuICAgICAgICBiaXN0ZWNoX3VybDogbmV3IFVSTChcImh0dHBzOi8vYmlzdGVjaC5jby51ay9ibG9nLXBvc3QvYS1jb25zdGFudC10aHJlYXQtaXMteW91ci1idXNpbmVzcy1yZWFkeS9cIiksXHJcbiAgICAgICAgYmlzdGVjaF9pbWFnZXVybDogbmV3IFVSTChcImh0dHBzOi8vYmlzdGVjaC5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAyMy8wMi9jaGVzcy1iYW5uZXIuanBnXCIpLFxyXG4gICAgICAgIGJpc3RlY2hfcHVibGlzaGVkYnk6IFwiVGltIEJhbWJlclwiLFxyXG4gICAgICAgIGJpc3RlY2hfcHVibGlzaGVkb246IERhdGVIZWxwZXIuZ2V0TWlkbmlnaHRUb2RheSgpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBiaXN0ZWNoX2Jsb2dwb3N0aWQ6IFwiMlwiLFxyXG4gICAgICAgIGJpc3RlY2hfbmFtZTogXCJMb3JlbSBJcHN1bSBwYXJ0IDJcIixcclxuICAgICAgICBiaXN0ZWNoX2Rlc2NyaXB0aW9uOiBcIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LlwiLFxyXG4gICAgICAgIGJpc3RlY2hfdXJsOiBuZXcgVVJMKFwiaHR0cHM6Ly9iaXN0ZWNoLmNvLnVrL2Jsb2ctcG9zdC9jeWJlci1kdWUtZGlsaWdlbmNlLXRoZS1yb2xlLW9mLXNlY3VyaXR5LWluLW1hLWFjdGl2aXR5L1wiKSxcclxuICAgICAgICBiaXN0ZWNoX2ltYWdldXJsOiBuZXcgVVJMKFwiaHR0cHM6Ly9iaXN0ZWNoLmNvLnVrL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzExL2RkLmpwZ1wiKSxcclxuICAgICAgICBiaXN0ZWNoX3B1Ymxpc2hlZGJ5OiBcIlRpbW90aHkgQmFtYmVyXCIsXHJcbiAgICAgICAgYmlzdGVjaF9wdWJsaXNoZWRvbjogRGF0ZUhlbHBlci5nZXRNaWRuaWdodFRvZGF5KCksXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfYmxvZ3Bvc3RpZDogXCIzXCIsXHJcbiAgICAgICAgYmlzdGVjaF9uYW1lOiBcIkV4YW1wbGUgdGl0bGUgM1wiLFxyXG4gICAgICAgIGJpc3RlY2hfZGVzY3JpcHRpb246IFwiU29tZXRoaW5nLCBzb21ldGhpbmcsIHNvbWV0aGluZywgTG9yZW0gSXBzdW0gc29tZXRoaW5nLlwiLFxyXG4gICAgICAgIGJpc3RlY2hfdXJsOiBuZXcgVVJMKFwiaHR0cHM6Ly9iaXN0ZWNoLmNvLnVrL2Jsb2ctcG9zdC9ncm93LW9yLWdvLW5hdmlnYXRpbmctdGhlLXRlY2hub2xvZ3ktc3BlZWRidW1wcy1pbi10aGUtbW90b3ItaW5kdXN0cnkvXCIpLFxyXG4gICAgICAgIGJpc3RlY2hfaW1hZ2V1cmw6IG5ldyBVUkwoXCJodHRwczovL2Jpc3RlY2guY28udWsvd3AtY29udGVudC91cGxvYWRzLzIwMjIvMTAvbW90b3ItYmFubmVyLmpwZ1wiKSxcclxuICAgICAgICBiaXN0ZWNoX3B1Ymxpc2hlZGJ5OiBcIlRTQlwiLFxyXG4gICAgICAgIGJpc3RlY2hfcHVibGlzaGVkb246IERhdGVIZWxwZXIuZ2V0TWlkbmlnaHRUb2RheSgpLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBiaXN0ZWNoX2Jsb2dwb3N0aWQ6IFwiNFwiLFxyXG4gICAgICAgIGJpc3RlY2hfbmFtZTogXCJMb3JlbSBJcHN1bSBwYXJ0IDRcIixcclxuICAgICAgICBiaXN0ZWNoX2Rlc2NyaXB0aW9uOiBcIkV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uXCIsXHJcbiAgICAgICAgYmlzdGVjaF91cmw6IG5ldyBVUkwoXCJodHRwczovL2Jpc3RlY2guY28udWsvYmxvZy1wb3N0L3Rvd2FyZHMtc3VzdGFpbmFiaWxpdHkvXCIpLFxyXG4gICAgICAgIGJpc3RlY2hfaW1hZ2V1cmw6IG5ldyBVUkwoXCJodHRwczovL2Jpc3RlY2guY28udWsvd3AtY29udGVudC91cGxvYWRzLzIwMjIvMDgvU3VzdGFpbmFiaWxpdHktQmFubmVyLXNjYWxlZC5qcGdcIiksXHJcbiAgICAgICAgYmlzdGVjaF9wdWJsaXNoZWRieTogXCJKZWZmXCIsXHJcbiAgICAgICAgYmlzdGVjaF9wdWJsaXNoZWRvbjogRGF0ZUhlbHBlci5nZXRNaWRuaWdodFRvZGF5KCksXHJcbiAgICB9XHJcbl07XHJcbiIsIi8qKiBFbnVtIHJlcHJlc2VudGluZyBhIE5ldHdvcmsgT3JkZXIgU3RhdGUgQ29kZS4gICovXHJcbmV4cG9ydCBlbnVtIE5ldHdvcmtPcmRlclN0YXRlQ29kZSB7XHJcbiAgICAvKiogQWN0aXZlLiAqL1xyXG4gICAgQWN0aXZlID0gMCxcclxuXHJcbiAgICAvKiogSW5hY3RpdmUuICovXHJcbiAgICBJbmFjdGl2ZSA9IDEsXHJcbn1cclxuIiwiLyoqIEVudW0gcmVwcmVzZW50aW5nIGEgTmV0d29yayBPcmRlciBTdGF0dXMgQ29kZSAqL1xyXG5leHBvcnQgZW51bSBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlIHtcclxuICAgIC8qKiBJbiBQcm9ncmVzcy4gKi9cclxuICAgIFwiSW4gUHJvZ3Jlc3NcIiA9IDEsXHJcblxyXG4gICAgLyoqIFBlbmRpbmcuICovXHJcbiAgICBQZW5kaW5nID0gMTAwMDAwMDAxLFxyXG5cclxuICAgIC8qKiBSZWplY3RlZC4gKi9cclxuICAgIFJlamVjdGVkID0gMTAwMDAwMDAyLFxyXG5cclxuICAgIC8qKiBEZWxheWVkLiAqL1xyXG4gICAgRGVsYXllZCA9IDEwMDAwMDAwMyxcclxuXHJcbiAgICAvKiogQ29uZmlybWVkLiAqL1xyXG4gICAgQ29uZmlybWVkID0gMTAwMDAwMDA0LFxyXG5cclxuICAgIC8qKiBSZWFkeSBUbyBPcmRlci4gKi9cclxuICAgIFwiUmVhZHkgVG8gT3JkZXJcIiA9IDEwMDAwMDAwNixcclxuXHJcbiAgICAvKiogQ29tcGxldGVkLiAqL1xyXG4gICAgQ29tcGxldGVkID0gMTAwMDAwMDAwLFxyXG5cclxuICAgIC8qKiBDYW5jZWxsZWQuICovXHJcbiAgICBDYW5jZWxsZWQgPSAxMDAwMDAwMDUsXHJcbn1cclxuIiwiLyoqIEVudW1lcmF0aW9uIHJlcHJlc2VudGluZyB0aGUgc3RhdGVjb2RlIG9mIGEgQ3VzdG9tZXIgQXNzZXQgKi9cclxuZXhwb3J0IGVudW0gQ3VzdG9tZXJBc3NldFN0YXRlQ29kZSB7XHJcbiAgICAvKiogQWN0aXZlICovXHJcbiAgICBBY3RpdmUgPSAwLFxyXG4gICAgXHJcbiAgICAvKiogSW5hY3RpdmUgKi9cclxuICAgIEluYWN0aXZlID0gMSxcclxufVxyXG4iLCJpbXBvcnQgeyBDdXN0b21lckFzc2V0U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0N1c3RvbWVyQXNzZXRTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgQ3VzdG9tZXJBc3NldCB9IGZyb20gXCIuLi9Nb2RlbHMvQ3VzdG9tZXJBc3NldFwiO1xyXG5pbXBvcnQgeyBNb2NrQWNjb3VudERhdGEgfSBmcm9tIFwiLi9Nb2NrQWNjb3VudERhdGFcIjtcclxuaW1wb3J0IHsgTW9ja1Byb2R1Y3REYXRhIH0gZnJvbSBcIi4vTW9ja1Byb2R1Y3REYXRhXCI7XHJcblxyXG4vKiogTW9jayBkYXRhIGZvciBPcmRlcnMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tDdXN0b21lckFzc2V0RGF0YTogQ3VzdG9tZXJBc3NldFtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIG1zZHluX2N1c3RvbWVyYXNzZXRpZDogXCIzNzdlNDY1Mi1lMzhkLTRjMGMtOTc2OC1iMDQ3YTRhNDU5YzZcIixcclxuICAgICAgICBtc2R5bl9uYW1lOiBcIkVWQS0wMDJcIixcclxuICAgICAgICBfbXNkeW5fcHJvZHVjdF92YWx1ZTogTW9ja1Byb2R1Y3REYXRhWzBdLnByb2R1Y3RpZCxcclxuICAgICAgICBtc2R5bl9wcm9kdWN0OiBNb2NrUHJvZHVjdERhdGFbMF0sXHJcbiAgICAgICAgc3RhdGVjb2RlOiBDdXN0b21lckFzc2V0U3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBfYmlzdGVjaF9zaXRlX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgfSxcclxuXTtcclxuIiwiLyoqIEVudW0gcmVwcmVzZW50aW5nIGEgTmV0d29yayBPcmRlciBTdGFnZSBTdGF0ZSBDb2RlLiAgKi9cclxuZXhwb3J0IGVudW0gTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUge1xyXG4gICAgLyoqIEFjdGl2ZS4gKi9cclxuICAgIEFjdGl2ZSA9IDAsXHJcblxyXG4gICAgLyoqIEluYWN0aXZlLiAqL1xyXG4gICAgSW5hY3RpdmUgPSAxLFxyXG59XHJcbiIsIi8qKiBFbnVtIHJlcHJlc2VudGluZyBhIE5ldHdvcmsgT3JkZXIgU3RhZ2UgU3RhdHVzIENvZGUgKi9cclxuZXhwb3J0IGVudW0gTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlIHtcclxuICAgIC8qKiBBY3RpdmUgLSBJZGVudGlmaWVkICovXHJcbiAgICBJZGVudGlmaWVkID0gMTAwXzAwMF8wMDEsXHJcblxyXG4gICAgLyoqIEFjdGl2ZSAtIERlbGF5ZWQgKi9cclxuICAgIERlbGF5ZWQgPSAxMDBfMDAwXzAwMixcclxuXHJcbiAgICAvKiogQWN0aXZlIC0gU2NoZWR1bGVkICovXHJcbiAgICBTY2hlZHVsZWQgPSAxMDBfMDAwXzAwMyxcclxuXHJcbiAgICAvKiogSW5hY3RpdmUgLSBDb21wbGV0ZWQgKi9cclxuICAgIENvbXBsZXRlZCA9IDIsXHJcblxyXG4gICAgLyoqIEluYWN0aXZlIC0gQ2FuY2VsbGVkICovXHJcbiAgICBDYW5jZWxsZWQgPSAxMDBfMDAwXzAwNCxcclxufVxyXG4iLCIvKiogRW51bWVyYXRpb24gcmVwcmVzZW50aW5nIHRoZSBTdGFnZSBvZiBOZXR3b3JrIE9yZGVyIFN0YWdlIHJlY29yZHMgKi9cclxuZXhwb3J0IGVudW0gTmV0d29ya09yZGVyU3RhZ2VUeXBlIHtcclxuICAgIC8qKiBPcmRlciBQbGFjZWQgKi9cclxuICAgIFwiT3JkZXIgUGxhY2VkXCIgPSAxXzAwMCxcclxuXHJcbiAgICAvKiogU3VydmV5IFN0YWdlICovXHJcbiAgICBTdXJ2ZXkgPSAxMDBfMDAwXzAwMCxcclxuXHJcbiAgICAvKiogV2F5bGVhdmUgUmVxdWlyZWQgU3RhZ2UgKi9cclxuICAgIFdheWxlYXZlID0gMTAwXzAwMF8wMTAsXHJcblxyXG4gICAgLyoqIENpdmlscyBSZXF1aXJlZCBTdGFnZSAqL1xyXG4gICAgXCJDaXZpbHMgV29ya1wiID0gMTAwXzAwMF8wMjAsXHJcblxyXG4gICAgLyoqSW5zdGFsbGF0aW9uIC0gRmlicmUgSW5zdGFsbCBTdGFnZSAqL1xyXG4gICAgXCJGaWJyZSBJbnN0YWxsXCIgPSAxMDBfMDAwXzAzMCxcclxuXHJcbiAgICAvKipJbnN0YWxsYXRpb24gLSBGaWJyZSBTcGxpY2luZyBTdGFnZSAqL1xyXG4gICAgXCJGaWJyZSBTcGxpY2luZ1wiID0gMTAwXzAwMF8wNDAsXHJcblxyXG4gICAgLyoqIEluc3RhbGxhdGlvbiAtIEZpdCAmIFRlc3QgU3RhZ2UgKi9cclxuICAgIFwiRml0ICYgVGVzdFwiID0gMTAwXzAwMF8wNTAsXHJcblxyXG4gICAgLyoqIENvbm5lY3Rpb24gSW5zdGFsbGVkICovXHJcbiAgICBcIkNvbm5lY3Rpb24gSW5zdGFsbGVkXCIgPSAxMDBfMDAwXzA2MCxcclxuXHJcbiAgICAvKiogQ29tbXNDYXJlIFNpdGUgVmlzaXQgKi9cclxuICAgIFwiQ29tbXNDYXJlIFNpdGUgVmlzaXRcIiA9IDEwMF8wMDBfMDcwLFxyXG59XHJcbiIsImltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL05ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhZ2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL05ldHdvcmtPcmRlclN0YWdlVHlwZVwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJTdGFnZSB9IGZyb20gXCIuLi9Nb2RlbHMvTmV0d29ya09yZGVyU3RhZ2VcIjtcclxuXHJcbi8qKiBNb2NrIGRhdGEgZm9yIE9yZGVycyAqL1xyXG5leHBvcnQgY29uc3QgTW9ja05ldHdvcmtPcmRlclN0YWdlRGF0YTogTmV0d29ya09yZGVyU3RhZ2VbXSA9IFtcclxuICAgIHtcclxuICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcnN0YWdlaWQ6IFwiMDliZDA5NmMtYmY3Zi1lZTExLTgxNzktNjA0NWJkMTBmMGY4XCIsXHJcbiAgICAgICAgYmlzdGVjaF9zdGFnZTogTmV0d29ya09yZGVyU3RhZ2VUeXBlW1wiT3JkZXIgUGxhY2VkXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IFwiMjAyMy0xMC0yNVQyMzowMDowMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZS5Db21wbGV0ZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCI1ZmIzZjUyNy0yMTgyLWVlMTEtODE3OS02MDQ1YmQxMGYzZWVcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJGaXQgJiBUZXN0XCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IFwiMjAyMy0xMS0xM1QwMDowMDowMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZS5Db21wbGV0ZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCJkNzAxMmZmZi0yYzZmLWVlMTEtOWFlNy02MDQ1YmQxMGY0MGRcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJDaXZpbHMgV29ya1wiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBcIjIwMjMtMTAtMjBUMDA6MDA6MDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXRlQ29kZS5JbmFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGUuSWRlbnRpZmllZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcImQ3MDEyZmZmLTJjNmYtZWUxMS05YWU3LTYwNDViZDEwZjQwZFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkZpYnJlIEluc3RhbGxcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9kYXRlZnJvbTogXCIyMDIzLTEwLTIwVDAwOjAwOjAwWlwiLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLklkZW50aWZpZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCI0NjNlNDU3ZC1iNjY2LWVlMTEtOWFlNy02MDQ1YmQxMGZkYWFcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJDb25uZWN0aW9uIEluc3RhbGxlZFwiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBcIjIwMjMtMTAtMDlUMDA6MDA6MDBaXCIsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXRlQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLklkZW50aWZpZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCI0ZDlkZGJiMy0wOTdmLWVlMTEtODE3OS02MDQ1YmRkMGI0NWRcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJXYXlsZWF2ZVwiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLkNvbXBsZXRlZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcImYyNjZlNTM4LTBhN2YtZWUxMS04MTc5LTYwNDViZGQwYjQ1ZFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIlN1cnZleVwiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLkNvbXBsZXRlZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcImVkYTA0NGQ3LWM5NjEtZWUxMS04ZGVmLTYwNDViZGQwYjQ1ZFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkNvbm5lY3Rpb24gSW5zdGFsbGVkXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IFwiMjAyMy0xMC0wM1QwMDowMDowMFpcIixcclxuICAgICAgICBzdGF0ZWNvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZS5Db21wbGV0ZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCI3MzI2ZjhmNS0wODdmLWVlMTEtODE3OS02MDQ1YmRkMGJlZDBcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJDb25uZWN0aW9uIEluc3RhbGxlZFwiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLkNvbXBsZXRlZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcIjk1MjZmOGY1LTA4N2YtZWUxMS04MTc5LTYwNDViZGQwYmVkMFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkZpYnJlIFNwbGljaW5nXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IG51bGwsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXRlQ29kZS5JbmFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGUuQ29tcGxldGVkLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcnN0YWdlaWQ6IFwiOTUyNmY4ZjUtMDg3Zi1lZTExLTgxNzktNjA0NWJkZDBiZWQwXCIsXHJcbiAgICAgICAgYmlzdGVjaF9zdGFnZTogTmV0d29ya09yZGVyU3RhZ2VUeXBlW1wiRmlicmUgU3BsaWNpbmdcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9kYXRlZnJvbTogbnVsbCxcclxuICAgICAgICBzdGF0ZWNvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgIHN0YXR1c2NvZGU6IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZS5Db21wbGV0ZWQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VpZDogXCI5NTI2ZjhmNS0wODdmLWVlMTEtODE3OS02MDQ1YmRkMGJlZDBcIixcclxuICAgICAgICBiaXN0ZWNoX3N0YWdlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJGaWJyZSBTcGxpY2luZ1wiXSxcclxuICAgICAgICBiaXN0ZWNoX2RhdGVmcm9tOiBudWxsLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUuSW5hY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLkNvbXBsZXRlZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcIjk1MjZmOGY1LTA4N2YtZWUxMS04MTc5LTYwNDViZGQwYmVkMFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkZpYnJlIFNwbGljaW5nXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IG51bGwsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXRlQ29kZS5JbmFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGUuSWRlbnRpZmllZCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkOiBcIjk1MjZmOGY1LTA4N2YtZWUxMS04MTc5LTYwNDViZGQwYmVkMFwiLFxyXG4gICAgICAgIGJpc3RlY2hfc3RhZ2U6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkNvbW1zQ2FyZSBTaXRlIFZpc2l0XCJdLFxyXG4gICAgICAgIGJpc3RlY2hfZGF0ZWZyb206IG51bGwsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBOZXR3b3JrT3JkZXJTdGFnZVN0YXRlQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgc3RhdHVzY29kZTogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlLklkZW50aWZpZWQsXHJcbiAgICB9LFxyXG5dO1xyXG4iLCJpbXBvcnQgeyBOZXR3b3JrT3JkZXJTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvTmV0d29ya09yZGVyU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvTmV0d29ya09yZGVyU3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWwgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlckZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBNb2NrQ3VzdG9tZXJBc3NldERhdGEgfSBmcm9tIFwiLi9Nb2NrQ3VzdG9tZXJBc3NldERhdGFcIjtcclxuaW1wb3J0IHsgTW9ja05ldHdvcmtPcmRlclN0YWdlRGF0YSB9IGZyb20gXCIuL01vY2tOZXR3b3JrT3JkZXJTdGFnZURhdGFcIjtcclxuaW1wb3J0IHsgTW9ja09yZGVyRGF0YSB9IGZyb20gXCIuL01vY2tPcmRlckRhdGFcIjtcclxuaW1wb3J0IHsgTW9ja09yZGVyTGluZURhdGEgfSBmcm9tIFwiLi9Nb2NrT3JkZXJMaW5lRGF0YVwiO1xyXG5cclxuLyoqIE1vY2sgZGF0YSBmb3IgT3JkZXJzICovXHJcbmV4cG9ydCBjb25zdCBNb2NrTmV0d29ya09yZGVyRGF0YTogTmV0d29ya09yZGVyRm9yUmV0cmlldmFsW10gPSBbXHJcbiAgICB7XHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJpZDogXCIzNzdlNDY1Mi1lMzhkLTRjMGMtOTc2OC1iMDQ3YTRhNDU5YzZcIixcclxuICAgICAgICBiaXN0ZWNoX25hbWU6IFwiTk8tMTM3NTg0XCIsXHJcbiAgICAgICAgX2Jpc3RlY2hfY29udGFjdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBfYmlzdGVjaF9jdXN0b21lcmFzc2V0X3ZhbHVlOiBNb2NrQ3VzdG9tZXJBc3NldERhdGFbMF0ubXNkeW5fY3VzdG9tZXJhc3NldGlkLFxyXG4gICAgICAgIHN0YXRlY29kZTogTmV0d29ya09yZGVyU3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICBzdGF0dXNjb2RlOiBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlLlBlbmRpbmcsXHJcbiAgICAgICAgX2Jpc3RlY2hfc2FsZXNvcmRlcl92YWx1ZTogTW9ja09yZGVyRGF0YVsxXS5zYWxlc29yZGVyaWQsXHJcbiAgICAgICAgX2Jpc3RlY2hfb3JkZXJsaW5lX3ZhbHVlOiBNb2NrT3JkZXJMaW5lRGF0YS5PcmRlcjFbMV0uc2FsZXNvcmRlcmRldGFpbGlkLFxyXG4gICAgICAgIGJpc3RlY2hfYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZV9uZXR3b3Jrb3JkZXJfYmk6IE1vY2tOZXR3b3JrT3JkZXJTdGFnZURhdGEsXHJcbiAgICAgICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJfYWR4X3BvcnRhbGNvbW1lbnRzOiBbXSxcclxuICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX3BvcnRhbGVtYWlsczogW10sXHJcbiAgICB9LFxyXG5dO1xyXG4iLCJpbXBvcnQgeyBJbnZvaWNlIH0gZnJvbSBcIi4uL01vZGVscy9JbnZvaWNlXCI7XHJcbmltcG9ydCB7IE1vY2tBY2NvdW50RGF0YSB9IGZyb20gXCIuL01vY2tBY2NvdW50RGF0YVwiO1xyXG5pbXBvcnQgeyBNb2NrQmFzZTY0T3JkZXJGb3JtUERGIH0gZnJvbSBcIi4vTW9ja0Jhc2U2NE9yZGVyRm9ybVBERlwiO1xyXG5cclxuLyoqIE1vY2sgZGF0YSBmb3IgSW52b2ljZXMgKi9cclxuZXhwb3J0IGNvbnN0IE1vY2tJbnZvaWNlRGF0YTogSW52b2ljZVtdID0gW1xyXG4gICAge1xyXG4gICAgICAgIGludm9pY2VpZDogXCIxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTFcIixcclxuICAgICAgICBpbnZvaWNlbnVtYmVyOiBcIjYwMDQ2NzU0XCIsXHJcbiAgICAgICAgZHVlZGF0ZTogXCIyMDI0LTAzLTE1XCIsXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgYmlzdGVjaF9wYXltZW50bWV0aG9kY29kZTogXCJERFwiLFxyXG4gICAgICAgIEludm9pY2VfQW5ub3RhdGlvbjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uaWQ6IFwiOTM2M2U3OTAtNDNiMC00N2Q3LTg1YWItMmI0NWEwYzg2NzAzXCIsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudGJvZHk6IE1vY2tCYXNlNjRPcmRlckZvcm1QREYsXHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogXCJvcmRlcmZvcm0xLnBkZlwiLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIyLTA1LTA3VDA3OjA4OjU2LjAxMFpcIixcclxuICAgICAgICAgICAgICAgIG1pbWV0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgbXNkeW5faW52b2ljZWRhdGU6IFwiMjAyNC0wMy0xM1wiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbnZvaWNlaWQ6IFwiMjIyMjIyMjItMjIyMi0yMjIyLTIyMjItMjIyMjIyMjIyMjIyXCIsXHJcbiAgICAgICAgaW52b2ljZW51bWJlcjogXCI2MDA0Njc1NVwiLFxyXG4gICAgICAgIGR1ZWRhdGU6IFwiMjAyNC0wMy0yMFwiLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGF5bWVudG1ldGhvZGNvZGU6IFwiRERcIixcclxuICAgICAgICBJbnZvaWNlX0Fubm90YXRpb246IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbmlkOiBcIjkzNjNlNzkwLTQzYjAtNDdkNy04NWFiLTJiNDVhMGM4NjcwM1wiLFxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRib2R5OiBNb2NrQmFzZTY0T3JkZXJGb3JtUERGLFxyXG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IFwib3JkZXJmb3JtMS5wZGZcIixcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVkb246IFwiMjAyMi0wNS0wN1QwNzowODo1Ni4wMTBaXCIsXHJcbiAgICAgICAgICAgICAgICBtaW1ldHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIG1zZHluX2ludm9pY2VkYXRlOiBcIjIwMjQtMDMtMTRcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW52b2ljZWlkOiBcIjMzMzMzMzMzLTMzMzMtMzMzMy0zMzMzLTMzMzMzMzMzMzMzM1wiLFxyXG4gICAgICAgIGludm9pY2VudW1iZXI6IFwiNjAwNDY3NTZcIixcclxuICAgICAgICBkdWVkYXRlOiBcIjIwMjQtMDMtMjVcIixcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3BheW1lbnRtZXRob2Rjb2RlOiBcIkREXCIsXHJcbiAgICAgICAgSW52b2ljZV9Bbm5vdGF0aW9uOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25pZDogXCI5MzYzZTc5MC00M2IwLTQ3ZDctODVhYi0yYjQ1YTBjODY3MDNcIixcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50Ym9keTogTW9ja0Jhc2U2NE9yZGVyRm9ybVBERixcclxuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBcIm9yZGVyZm9ybTEucGRmXCIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjItMDUtMDdUMDc6MDg6NTYuMDEwWlwiLFxyXG4gICAgICAgICAgICAgICAgbWltZXR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBtc2R5bl9pbnZvaWNlZGF0ZTogXCIyMDI0LTAzLTE0XCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGludm9pY2VpZDogXCI0NDQ0NDQ0NC00NDQ0LTQ0NDQtNDQ0NC00NDQ0NDQ0NDQ0NDRcIixcclxuICAgICAgICBpbnZvaWNlbnVtYmVyOiBcIjYwMDQ2NzU3XCIsXHJcbiAgICAgICAgZHVlZGF0ZTogXCIyMDI0LTAzLTMwXCIsXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVswXS5hY2NvdW50aWQsXHJcbiAgICAgICAgYmlzdGVjaF9wYXltZW50bWV0aG9kY29kZTogXCJERFwiLFxyXG4gICAgICAgIEludm9pY2VfQW5ub3RhdGlvbjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uaWQ6IFwiOTM2M2U3OTAtNDNiMC00N2Q3LTg1YWItMmI0NWEwYzg2NzAzXCIsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudGJvZHk6IE1vY2tCYXNlNjRPcmRlckZvcm1QREYsXHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogXCJvcmRlcmZvcm0xLnBkZlwiLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIyLTA1LTA3VDA3OjA4OjU2LjAxMFpcIixcclxuICAgICAgICAgICAgICAgIG1pbWV0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgbXNkeW5faW52b2ljZWRhdGU6IFwiMjAyNC0wMy0xOFwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbnZvaWNlaWQ6IFwiNTU1NTU1NTUtNTU1NS01NTU1LTU1NTUtNTU1NTU1NTU1NTU1XCIsXHJcbiAgICAgICAgaW52b2ljZW51bWJlcjogXCI2MDA0Njc1OFwiLFxyXG4gICAgICAgIGR1ZWRhdGU6IFwiMjAyNC0wNC0wNVwiLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGF5bWVudG1ldGhvZGNvZGU6IFwiQkFDU1wiLFxyXG4gICAgICAgIEludm9pY2VfQW5ub3RhdGlvbjogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhbm5vdGF0aW9uaWQ6IFwiOTM2M2U3OTAtNDNiMC00N2Q3LTg1YWItMmI0NWEwYzg2NzAzXCIsXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudGJvZHk6IE1vY2tCYXNlNjRPcmRlckZvcm1QREYsXHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZTogXCJvcmRlcmZvcm0xLnBkZlwiLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZpZWRvbjogXCIyMDIyLTA1LTA3VDA3OjA4OjU2LjAxMFpcIixcclxuICAgICAgICAgICAgICAgIG1pbWV0eXBlOiBcImFwcGxpY2F0aW9uL3BkZlwiLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgbXNkeW5faW52b2ljZWRhdGU6IFwiMjAyNC0wMy0yOFwiLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBpbnZvaWNlaWQ6IFwiNjY2NjY2NjYtNjY2Ni02NjY2LTY2NjYtNjY2NjY2NjY2NjY2XCIsXHJcbiAgICAgICAgaW52b2ljZW51bWJlcjogXCI2MDA0Njc1OVwiLFxyXG4gICAgICAgIGR1ZWRhdGU6IFwiMjAyNC0wNC0xMFwiLFxyXG4gICAgICAgIF9jdXN0b21lcmlkX3ZhbHVlOiBNb2NrQWNjb3VudERhdGFbMF0uYWNjb3VudGlkLFxyXG4gICAgICAgIGJpc3RlY2hfcGF5bWVudG1ldGhvZGNvZGU6IFwiRERcIixcclxuICAgICAgICBJbnZvaWNlX0Fubm90YXRpb246IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYW5ub3RhdGlvbmlkOiBcIjkzNjNlNzkwLTQzYjAtNDdkNy04NWFiLTJiNDVhMGM4NjcwM1wiLFxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRib2R5OiBNb2NrQmFzZTY0T3JkZXJGb3JtUERGLFxyXG4gICAgICAgICAgICAgICAgZmlsZW5hbWU6IFwib3JkZXJmb3JtMS5wZGZcIixcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVkb246IFwiMjAyMi0wNS0wN1QwNzowODo1Ni4wMTBaXCIsXHJcbiAgICAgICAgICAgICAgICBtaW1ldHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIG1zZHluX2ludm9pY2VkYXRlOiBcIjIwMjQtMDQtMDNcIixcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgaW52b2ljZWlkOiBcIjc3Nzc3Nzc3LTc3NzctNzc3Ny03Nzc3LTc3Nzc3Nzc3Nzc3N1wiLFxyXG4gICAgICAgIGludm9pY2VudW1iZXI6IFwiNjAwNDY3NjBcIixcclxuICAgICAgICBkdWVkYXRlOiBcIjIwMjQtMDQtMTVcIixcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogTW9ja0FjY291bnREYXRhWzBdLmFjY291bnRpZCxcclxuICAgICAgICBiaXN0ZWNoX3BheW1lbnRtZXRob2Rjb2RlOiBcIkNDXCIsXHJcbiAgICAgICAgSW52b2ljZV9Bbm5vdGF0aW9uOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGFubm90YXRpb25pZDogXCI5MzYzZTc5MC00M2IwLTQ3ZDctODVhYi0yYjQ1YTBjODY3MDNcIixcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50Ym9keTogTW9ja0Jhc2U2NE9yZGVyRm9ybVBERixcclxuICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBcIm9yZGVyZm9ybTEucGRmXCIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZmllZG9uOiBcIjIwMjItMDUtMDdUMDc6MDg6NTYuMDEwWlwiLFxyXG4gICAgICAgICAgICAgICAgbWltZXR5cGU6IFwiYXBwbGljYXRpb24vcGRmXCIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICBtc2R5bl9pbnZvaWNlZGF0ZTogXCIyMDI0LTA0LTAzXCIsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGludm9pY2VpZDogXCI4ODg4ODg4OC04ODg4LTg4ODgtODg4OC04ODg4ODg4ODg4ODhcIixcclxuICAgICAgICBpbnZvaWNlbnVtYmVyOiBcIjYwMDQ2NzYxXCIsXHJcbiAgICAgICAgZHVlZGF0ZTogXCIyMDI0LTA0LTIwXCIsXHJcbiAgICAgICAgX2N1c3RvbWVyaWRfdmFsdWU6IE1vY2tBY2NvdW50RGF0YVsxXS5hY2NvdW50aWQsXHJcbiAgICAgICAgYmlzdGVjaF9wYXltZW50bWV0aG9kY29kZTogXCJERFwiLFxyXG4gICAgICAgIG1zZHluX2ludm9pY2VkYXRlOiBcIjIwMjQtMDQtMTJcIixcclxuICAgICAgICBJbnZvaWNlX0Fubm90YXRpb246IFtdLFxyXG4gICAgfSxcclxuXTtcclxuIiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQ2FzZVR5cGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVR5cGVcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0luY2lkZW50U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUsXHJcbiAgICBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSxcclxufSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSBcIi4uL01vZGVscy9Qcm9kdWN0XCI7XHJcbmltcG9ydCB7IGJ1aWxkVXBzZXJ0Qm9keSwgQ3J1ZFNlcnZpY2UsIEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4vdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbmRpdGlvbkV4cHJlc3Npb24gfSBmcm9tIFwiLi4vVHlwZXMvQ29uZGl0aW9uRXhwcmVzc2lvblwiO1xyXG5pbXBvcnQgeyBQb3J0YWxFbWFpbCB9IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsRW1haWxcIjtcclxuaW1wb3J0IHsgTW9ja0FjY291bnREYXRhIH0gZnJvbSBcIi4uL01vY2tEYXRhL01vY2tBY2NvdW50RGF0YVwiO1xyXG5pbXBvcnQgeyBNb2NrUG9ydGFsQ29tbWVudERhdGEgfSBmcm9tIFwiLi4vTW9ja0RhdGEvTW9ja1BvcnRhbENvbW1lbnREYXRhXCI7XHJcbmltcG9ydCB7IE1vY2tNYWpvckluY2lkZW50VXBkYXRlRGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrTWFqb3JJbmNpZGVudFVwZGF0ZURhdGFcIjtcclxuaW1wb3J0IHsgTW9ja1BvcnRhbEVtYWlsRGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrUG9ydGFsRW1haWxEYXRhXCI7XHJcbmltcG9ydCB7IE1vY2tDb250YWN0RGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrQ29udGFjdERhdGFcIjtcclxuaW1wb3J0IHsgTW9ja0luY2lkZW50RGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrSW5jaWRlbnREYXRhXCI7XHJcbmltcG9ydCB7IE1vY2tQcm9kdWN0RGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrUHJvZHVjdERhdGFcIjtcclxuaW1wb3J0IHsgTW9ja09yZGVyRGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrT3JkZXJEYXRhXCI7XHJcbmltcG9ydCB7IE1vY2tQb3J0YWxJbnZpdGF0aW9uRGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrUG9ydGFsSW52aXRhdGlvbkRhdGFcIjtcclxuaW1wb3J0IHsgTW9ja1BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhIH0gZnJvbSBcIi4uL01vY2tEYXRhL01vY2tQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlRGF0YVwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IE1ham9ySW5jaWRlbnRVcGRhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL01ham9ySW5jaWRlbnRVcGRhdGVcIjtcclxuaW1wb3J0IHsgQWNjb3VudCB9IGZyb20gXCIuLi9Nb2RlbHMvQWNjb3VudFwiO1xyXG5pbXBvcnQgeyBDb250YWN0U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgRmVlZGJhY2tDYXRlZ29yeSB9IGZyb20gXCIuLi9UeXBlcy9GZWVkYmFja0NhdGVnb3J5XCI7XHJcbmltcG9ydCB7IEN1c3RvbWVyQXNzZXQgfSBmcm9tIFwiLi4vTW9kZWxzL0N1c3RvbWVyQXNzZXRcIjtcclxuaW1wb3J0IHsgUG9ydGFsSW52aXRhdGlvbiB9IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsSW52aXRhdGlvblwiO1xyXG5pbXBvcnQgeyBQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxNYWpvckluY2lkZW50VXBkYXRlXCI7XHJcbmltcG9ydCB7IEJsb2dQb3N0IH0gZnJvbSBcIi4uL01vZGVscy9CbG9nUG9zdFwiO1xyXG5pbXBvcnQgeyBNb2NrQmxvZ1Bvc3REYXRhIH0gZnJvbSBcIi4uL01vY2tEYXRhL01vY2tCbG9nUG9zdERhdGFcIjtcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuaW1wb3J0IHsgTW9ja05ldHdvcmtPcmRlckRhdGEgfSBmcm9tIFwiLi4vTW9ja0RhdGEvTW9ja05ldHdvcmtPcmRlckRhdGFcIjtcclxuaW1wb3J0IHsgTW9ja0N1c3RvbWVyQXNzZXREYXRhIH0gZnJvbSBcIi4uL01vY2tEYXRhL01vY2tDdXN0b21lckFzc2V0RGF0YVwiO1xyXG5pbXBvcnQgeyBPcmRlckZvcm0gfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyRm9ybVwiO1xyXG5pbXBvcnQgeyBNb2NrT3JkZXJGb3JtRGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrT3JkZXJGb3JtRGF0YVwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL01vZGVscy9Qcm9qZWN0XCI7XHJcbmltcG9ydCB7IE1vY2tQcm9qZWN0RGF0YSB9IGZyb20gXCIuLi9Nb2NrRGF0YS9Nb2NrUHJvamVjdERhdGFcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyRm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9OZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgSW52b2ljZSB9IGZyb20gXCIuLi9Nb2RlbHMvSW52b2ljZVwiO1xyXG5pbXBvcnQgeyBNb2NrSW52b2ljZURhdGEgfSBmcm9tIFwiLi4vTW9ja0RhdGEvTW9ja0ludm9pY2VEYXRhXCI7XHJcblxyXG4vKipcclxuICogUGVyZm9ybSBNb2NrIEFQSSByZXF1ZXN0cyBmb3IgbG9jYWwgZGV2ZWxvcG1lbnQsIHNpbXVsYXRpbmcgdGhlIHJlYWwgZGF0YSByZXNwb25zZXMgaW4gdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50LlxyXG4gKiBAcmV0dXJucyBUaGUgQ1JVRCBvcGVyYXRpb25zLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHVzZU1vY2tDcnVkU2VydmljZTogKCkgPT4gQ3J1ZFNlcnZpY2UgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBbY3VzdG9tZXJBc3NldERhdGEsIHNldEN1c3RvbWVyQXNzZXREYXRhXSA9IHVzZVN0YXRlPEN1c3RvbWVyQXNzZXRbXT4oTW9ja0N1c3RvbWVyQXNzZXREYXRhKTtcclxuICAgIGNvbnN0IFtjb250YWN0RGF0YSwgc2V0Q29udGFjdERhdGFdID0gdXNlU3RhdGU8Q29udGFjdEZvclJldHJpZXZhbFtdPihPYmplY3QudmFsdWVzKE1vY2tDb250YWN0RGF0YSkpO1xyXG4gICAgY29uc3QgW2luY2lkZW50RGF0YSwgc2V0SW5jaWRlbnREYXRhXSA9IHVzZVN0YXRlPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVtdPihNb2NrSW5jaWRlbnREYXRhKTtcclxuICAgIGNvbnN0IFtwcm9kdWN0RGF0YSwgc2V0UHJvZHVjdERhdGFdID0gdXNlU3RhdGU8UHJvZHVjdFtdPihNb2NrUHJvZHVjdERhdGEpO1xyXG4gICAgY29uc3QgW2ludm9pY2VEYXRhLCBzZXRJbnZvaWNlRGF0YV0gPSB1c2VTdGF0ZTxJbnZvaWNlW10+KE1vY2tJbnZvaWNlRGF0YSk7XHJcbiAgICBjb25zdCBbb3JkZXJEYXRhLCBzZXRPcmRlckRhdGFdID0gdXNlU3RhdGU8T3JkZXJbXT4oTW9ja09yZGVyRGF0YSk7XHJcbiAgICBjb25zdCBbbmV0d29ya09yZGVyRGF0YSwgc2V0TmV0d29ya09yZGVyRGF0YV0gPSB1c2VTdGF0ZTxOZXR3b3JrT3JkZXJGb3JSZXRyaWV2ZU11bHRpcGxlW10+KE1vY2tOZXR3b3JrT3JkZXJEYXRhKTtcclxuICAgIGNvbnN0IFtwcm9qZWN0RGF0YSwgc2V0UHJvamVjdERhdGFdID0gdXNlU3RhdGU8UHJvamVjdFtdPihPYmplY3QudmFsdWVzKE1vY2tQcm9qZWN0RGF0YSkpO1xyXG4gICAgY29uc3QgW29yZGVyRm9ybURhdGEsIHNldE9yZGVyRm9ybURhdGFdID0gdXNlU3RhdGU8T3JkZXJGb3JtW10+KE9iamVjdC52YWx1ZXMoTW9ja09yZGVyRm9ybURhdGEpKTtcclxuICAgIGNvbnN0IFtwb3J0YWxFbWFpbERhdGEsIHNldFBvcnRhbEVtYWlsRGF0YV0gPSB1c2VTdGF0ZTxQb3J0YWxFbWFpbFtdPihNb2NrUG9ydGFsRW1haWxEYXRhKTtcclxuICAgIGNvbnN0IFtwb3J0YWxDb21tZW50RGF0YSwgc2V0UG9ydGFsQ29tbWVudERhdGFdID0gdXNlU3RhdGU8UG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdPihNb2NrUG9ydGFsQ29tbWVudERhdGEpO1xyXG4gICAgY29uc3QgW3BvcnRhbEludml0YXRpb25EYXRhLCBzZXRQb3J0YWxJbnZpdGF0aW9uRGF0YV0gPSB1c2VTdGF0ZTxQb3J0YWxJbnZpdGF0aW9uW10+KE1vY2tQb3J0YWxJbnZpdGF0aW9uRGF0YSk7XHJcbiAgICBjb25zdCBbYWNjb3VudERhdGEsIHNldEFjY291bnREYXRhXSA9IHVzZVN0YXRlPEFjY291bnRbXT4oTW9ja0FjY291bnREYXRhKTtcclxuICAgIGNvbnN0IFtibG9nUG9zdERhdGEsIHNldEJsb2dQb3N0RGF0YV0gPSB1c2VTdGF0ZTxCbG9nUG9zdFtdPihNb2NrQmxvZ1Bvc3REYXRhKTtcclxuICAgIGNvbnN0IFttYWpvckluY2lkZW50VXBkYXRlRGF0YSwgc2V0TWFqb3JJbmNpZGVudFVwZGF0ZURhdGFdID1cclxuICAgICAgICB1c2VTdGF0ZTxNYWpvckluY2lkZW50VXBkYXRlW10+KE1vY2tNYWpvckluY2lkZW50VXBkYXRlRGF0YSk7XHJcbiAgICBjb25zdCBbcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZURhdGEsIHNldFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhXSA9IHVzZVN0YXRlPFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVbXT4oXHJcbiAgICAgICAgTW9ja1BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhXHJcbiAgICApO1xyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlPFRGb3JDcmVhdGUgZXh0ZW5kcyBvYmplY3QsIFRSZXR1cm4gZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgICAgIHBsdXJhbExvZ2ljYWxOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgYm9keTogVEZvckNyZWF0ZSxcclxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VFJldHVybj5cclxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nIH0+IHtcclxuICAgICAgICBjb25zdCB7IGRhdGEsIGlkQ29sdW1uTmFtZSwgc2V0dGVyLCBtb2NrQ3JlYXRpb25CZWhhdmlvdXIgfSA9IGdldERhdGFTZXRJbmZvPFRSZXR1cm4+KHBsdXJhbExvZ2ljYWxOYW1lKTtcclxuXHJcbiAgICAgICAgLy8gQnVpbGQgdGhlIGJvZHkgKHVudXNlZDsgYnV0IGFkZGVkIHRvIHNob3cgZXJyb3JzIGluIGxvY2FsIG1vZGUpXHJcbiAgICAgICAgYnVpbGRVcHNlcnRCb2R5KGJvZHksIG1ldGFkYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgaWQgPSBuZXdHdWlkKCk7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZFJlY29yZCA9IG1vY2tDcmVhdGlvbkJlaGF2aW91cih7IC4uLmJvZHksIFtpZENvbHVtbk5hbWVdOiBpZCB9IGFzIGFueSBhcyBUUmV0dXJuKTtcclxuXHJcbiAgICAgICAgc2V0dGVyKGRhdGEuY29uY2F0KFtjcmVhdGVkUmVjb3JkXSBhcyBUUmV0dXJuW10pKTtcclxuICAgICAgICBhd2FpdCBkZWxheVRpbWUoMTAwMCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGlkIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZU11bHRpcGxlPFQgZXh0ZW5kcyBvYmplY3Q+KFxyXG4gICAgICAgIHBsdXJhbExvZ2ljYWxOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgbWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhPFQ+LFxyXG4gICAgICAgIGZpbHRlcnM/OiBDb25kaXRpb25FeHByZXNzaW9uPFQ+W11cclxuICAgICk6IFByb21pc2U8VFtdPiB7XHJcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBnZXREYXRhU2V0SW5mbzxUPihwbHVyYWxMb2dpY2FsTmFtZSwgZmlsdGVycyk7XHJcblxyXG4gICAgICAgIGF3YWl0IGRlbGF5VGltZSgxMDAgKiBkYXRhLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmU8VCBleHRlbmRzIG9iamVjdD4oXHJcbiAgICAgICAgcGx1cmFsTG9naWNhbE5hbWU6IHN0cmluZyxcclxuICAgICAgICByZWNvcmRJZDogc3RyaW5nLFxyXG4gICAgICAgIG1ldGFkYXRhOiBFbnRpdHlNZXRhZGF0YTxUPlxyXG4gICAgKTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgY29uc3QgeyBkYXRhLCBpZENvbHVtbk5hbWUgfSA9IGdldERhdGFTZXRJbmZvPFQ+KHBsdXJhbExvZ2ljYWxOYW1lKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVjb3JkID0gZGF0YS5maW5kKChyZWNvcmQpID0+IChyZWNvcmRbaWRDb2x1bW5OYW1lXSBhcyBhbnkgYXMgc3RyaW5nKSA9PT0gcmVjb3JkSWQpO1xyXG4gICAgICAgIGF3YWl0IGRlbGF5VGltZSg1MDApO1xyXG5cclxuICAgICAgICBpZiAoIXJlY29yZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHtwbHVyYWxMb2dpY2FsTmFtZX0gcmVjb3JkIHdpdGggJHtpZENvbHVtbk5hbWUudG9TdHJpbmcoKX0gb2YgJyR7cmVjb3JkSWR9JyB3YXMgbm90IGZvdW5kYFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZTxUIGV4dGVuZHMgb2JqZWN0PihcclxuICAgICAgICBwbHVyYWxMb2dpY2FsTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIHJlY29yZElkOiBzdHJpbmcsXHJcbiAgICAgICAgYm9keTogUGFydGlhbDxUPixcclxuICAgICAgICBtZXRhZGF0YTogRW50aXR5TWV0YWRhdGE8VD5cclxuICAgICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGNvbnN0IHsgZGF0YSwgaWRDb2x1bW5OYW1lLCBzZXR0ZXIgfSA9IGdldERhdGFTZXRJbmZvPFQ+KHBsdXJhbExvZ2ljYWxOYW1lKTtcclxuXHJcbiAgICAgICAgY29uc3QgZXhpc3RpbmdSZWNvcmQ6IFQgPSBhd2FpdCByZXRyaWV2ZTxUPihwbHVyYWxMb2dpY2FsTmFtZSwgcmVjb3JkSWQsIG1ldGFkYXRhKTtcclxuXHJcbiAgICAgICAgYXdhaXQgZGVsYXlUaW1lKDEwMDApO1xyXG5cclxuICAgICAgICAvLyBCdWlsZCB0aGUgYm9keSAodW5zdWVkOyBidXQgYWRkZWQgdG8gc2hvdyBlcnJvcnMgaW4gbG9jYWwgbW9kZSlcclxuICAgICAgICBidWlsZFVwc2VydEJvZHkoYm9keSwgbWV0YWRhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCB1cGRhdGVkUmVjb3JkID0geyAuLi5leGlzdGluZ1JlY29yZCwgLi4uYm9keSB9O1xyXG5cclxuICAgICAgICBzZXR0ZXIoXHJcbiAgICAgICAgICAgIGRhdGEuZmlsdGVyKChyZWNvcmQpID0+IHJlY29yZFtpZENvbHVtbk5hbWVdICE9PSB1cGRhdGVkUmVjb3JkW2lkQ29sdW1uTmFtZV0pLmNvbmNhdChbdXBkYXRlZFJlY29yZF0gYXMgVFtdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGF3YWl0IGRlbGF5VGltZSgxMDAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVGZWVkYmFja1BvcnRhbEFjdGlvbihcclxuICAgICAgICBmZWVkYmFja0Rlc2NyaXB0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgZmVlZGJhY2tDYXRlZ29yeTogRmVlZGJhY2tDYXRlZ29yeVxyXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgZGVsYXlUaW1lKDIwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaW5oZXJpdGRvYyAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVJlcXVlc3RDbG9zdXJlUG9ydGFsQWN0aW9uKGluY2lkZW50SWQ6IHN0cmluZyk6IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPiB7XHJcbiAgICAgICAgY29uc3QgaW5jaWRlbnQgPSBhd2FpdCByZXRyaWV2ZShcImluY2lkZW50c1wiLCBpbmNpZGVudElkLCBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSk7XHJcblxyXG4gICAgICAgIGF3YWl0IHVwZGF0ZShcclxuICAgICAgICAgICAgXCJpbmNpZGVudHNcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzY29kZTpcclxuICAgICAgICAgICAgICAgICAgICBpbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGVbXCJSZXNvbHZlZFwiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3NlZFwiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXRyaWV2ZShcImluY2lkZW50c1wiLCBpbmNpZGVudElkLCBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBleGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbihpbmNpZGVudElkOiBzdHJpbmcpOiBQcm9taXNlPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZT4ge1xyXG4gICAgICAgIGF3YWl0IHVwZGF0ZShcclxuICAgICAgICAgICAgXCJpbmNpZGVudHNcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZCxcclxuICAgICAgICAgICAgeyBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSB9LFxyXG4gICAgICAgICAgICBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCByZXRyaWV2ZShcImluY2lkZW50c1wiLCBpbmNpZGVudElkLCBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpbmhlcml0ZG9jICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBleGVjdXRlU2VuZEludml0YXRpb25Qb3J0YWxBY3Rpb24oY29udGFjdElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBhd2FpdCBkZWxheVRpbWUoMjAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBtb2NrZWQgZGF0YSBzZXQgZm9yIGEgc3BlY2lmaWMgZW50aXR5LlxyXG4gICAgICogQHBhcmFtIHBsdXJhbExvZ2ljYWxOYW1lIFBsdXJhbCBsb2dpY2FsIG5hbWUgb2YgdGhlIGVudGl0eSB0byByZXRyaWV2ZS5cclxuICAgICAqIEByZXR1cm5zIE1vY2tlZCBkYXRhIHNldCBvZiB0aGUgc3BlY2lmaWMgZW50aXR5LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBnZXREYXRhU2V0SW5mbzxUPihcclxuICAgICAgICBwbHVyYWxMb2dpY2FsTmFtZTogc3RyaW5nLFxyXG4gICAgICAgIGZpbHRlcnM/OiBDb25kaXRpb25FeHByZXNzaW9uPFQ+W11cclxuICAgICk6IHtcclxuICAgICAgICBkYXRhOiBUW107XHJcbiAgICAgICAgaWRDb2x1bW5OYW1lOiBrZXlvZiBUO1xyXG4gICAgICAgIHNldHRlcjogKGZpZWxkczogVFtdKSA9PiB2b2lkO1xyXG4gICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKHJlY29yZDogVCkgPT4gVDtcclxuICAgIH0ge1xyXG4gICAgICAgIHN3aXRjaCAocGx1cmFsTG9naWNhbE5hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSBcImNvbnRhY3RzXCI6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWU6IGtleW9mIENvbnRhY3RGb3JSZXRyaWV2YWwgPSBcImNvbnRhY3RpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShjb250YWN0RGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRDb250YWN0RGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IENvbnRhY3RGb3JSZXRyaWV2YWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN0YXRlY29kZSA9IENvbnRhY3RTdGF0ZUNvZGVbXCJBY3RpdmVcIl07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcImluY2lkZW50c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUgPSBcImluY2lkZW50aWRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGZpbHRlckRhdGEoaW5jaWRlbnREYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldEluY2lkZW50RGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY3JlYXRlZG9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3RhdHVzY29kZSA9IEluY2lkZW50U3RhdHVzQ29kZVtcIk9wZW5cIl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jYXNldHlwZWNvZGUgPSBDYXNlVHlwZVtcIlN1cHBvcnQgUmVxdWVzdFwiXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSB0aWNrZXQgbnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC50aWNrZXRudW1iZXIgPSBgQ0FTLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiwgOCl9LSR7TWF0aC5yYW5kb20oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvU3RyaW5nKDM2KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDIsIDgpfWAudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgYW55IGFzIChyZWNvcmQ6IFQpID0+IFQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwicHJvZHVjdHNcIjoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZToga2V5b2YgUHJvZHVjdCA9IFwicHJvZHVjdGlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKHByb2R1Y3REYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldFByb2R1Y3REYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogUHJvZHVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcImludm9pY2VzXCI6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWU6IGtleW9mIEludm9pY2UgPSBcImludm9pY2VpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShpbnZvaWNlRGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRJbnZvaWNlRGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IEludm9pY2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBhbnkgYXMgKHJlY29yZDogVCkgPT4gVCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJzYWxlc29yZGVyc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBPcmRlciA9IFwic2FsZXNvcmRlcmlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKG9yZGVyRGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRPcmRlckRhdGEgYXMgYW55IGFzIChmaWVsZHM6IFRbXSkgPT4gdm9pZCxcclxuICAgICAgICAgICAgICAgICAgICBtb2NrQ3JlYXRpb25CZWhhdmlvdXI6ICgocmVjb3JkOiBPcmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcImJpc3RlY2hfbmV0d29ya29yZGVyc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWwgPSBcImJpc3RlY2hfbmV0d29ya29yZGVyaWRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGZpbHRlckRhdGEobmV0d29ya09yZGVyRGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXROZXR3b3JrT3JkZXJEYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogTmV0d29ya09yZGVyRm9yUmV0cmlldmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgYW55IGFzIChyZWNvcmQ6IFQpID0+IFQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwibXNkeW5fcHJvamVjdHNcIjoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZToga2V5b2YgUHJvamVjdCA9IFwibXNkeW5fcHJvamVjdGlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKHByb2plY3REYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldFByb2plY3REYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogUHJvamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcIm1zZHluX2N1c3RvbWVyYXNzZXRzXCI6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWU6IGtleW9mIEN1c3RvbWVyQXNzZXQgPSBcIm1zZHluX2N1c3RvbWVyYXNzZXRpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShjdXN0b21lckFzc2V0RGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRDdXN0b21lckFzc2V0RGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IFByb2R1Y3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBhbnkgYXMgKHJlY29yZDogVCkgPT4gVCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJiaXN0ZWNoX3BvcnRhbGVtYWlsc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBQb3J0YWxFbWFpbCA9IFwiYWN0aXZpdHlpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShwb3J0YWxFbWFpbERhdGEgYXMgYW55W10gYXMgVFtdLCBmaWx0ZXJzKSBhcyBhbnkgYXMgVFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29sdW1uTmFtZTogY29sdW1uTmFtZSBhcyBrZXlvZiBULFxyXG4gICAgICAgICAgICAgICAgICAgIHNldHRlcjogc2V0UG9ydGFsRW1haWxEYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogUG9ydGFsRW1haWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBhbnkgYXMgKHJlY29yZDogVCkgPT4gVCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJhZHhfcG9ydGFsY29tbWVudHNcIjoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZToga2V5b2YgUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbCA9IFwiYWN0aXZpdHlpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShwb3J0YWxDb21tZW50RGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRQb3J0YWxDb21tZW50RGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNyZWF0ZWRvbiA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgYW55IGFzIChyZWNvcmQ6IFQpID0+IFQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBNYWpvckluY2lkZW50VXBkYXRlID0gXCJhY3Rpdml0eWlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKG1ham9ySW5jaWRlbnRVcGRhdGVEYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogTWFqb3JJbmNpZGVudFVwZGF0ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcImFkeF9pbnZpdGF0aW9uc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBQb3J0YWxJbnZpdGF0aW9uID0gXCJhZHhfaW52aXRhdGlvbmlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKHBvcnRhbEludml0YXRpb25EYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldFBvcnRhbEludml0YXRpb25EYXRhIGFzIGFueSBhcyAoZmllbGRzOiBUW10pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9ja0NyZWF0aW9uQmVoYXZpb3VyOiAoKHJlY29yZDogUG9ydGFsSW52aXRhdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2FzZSBcImJpc3RlY2hfcG9ydGFsbWFqb3JpbmNpZGVudHVwZGF0ZXNcIjoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZToga2V5b2YgUG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZSA9IFwiYWN0aXZpdHlpZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlRGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlRGF0YSBhcyBhbnkgYXMgKGZpZWxkczogVFtdKSA9PiB2b2lkLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vY2tDcmVhdGlvbkJlaGF2aW91cjogKChyZWNvcmQ6IFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBhbnkgYXMgKHJlY29yZDogVCkgPT4gVCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJhY2NvdW50c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBBY2NvdW50ID0gXCJhY2NvdW50aWRcIjtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGZpbHRlckRhdGEoYWNjb3VudERhdGEgYXMgYW55W10gYXMgVFtdLCBmaWx0ZXJzKSBhcyBhbnkgYXMgVFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGlkQ29sdW1uTmFtZTogY29sdW1uTmFtZSBhcyBrZXlvZiBULFxyXG4gICAgICAgICAgICAgICAgICAgIHNldHRlcjogc2V0QWNjb3VudERhdGEgYXMgYW55IGFzIChmaWVsZHM6IFRbXSkgPT4gdm9pZCxcclxuICAgICAgICAgICAgICAgICAgICBtb2NrQ3JlYXRpb25CZWhhdmlvdXI6ICgocmVjb3JkOiBBY2NvdW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgYW55IGFzIChyZWNvcmQ6IFQpID0+IFQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiYmlzdGVjaF9vcmRlcmZvcm1zXCI6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWU6IGtleW9mIE9yZGVyRm9ybSA9IFwiYmlzdGVjaF9vcmRlcmZvcm1pZFwiO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmlsdGVyRGF0YShvcmRlckZvcm1EYXRhIGFzIGFueVtdIGFzIFRbXSwgZmlsdGVycykgYXMgYW55IGFzIFRbXSxcclxuICAgICAgICAgICAgICAgICAgICBpZENvbHVtbk5hbWU6IGNvbHVtbk5hbWUgYXMga2V5b2YgVCxcclxuICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IHNldE9yZGVyRm9ybURhdGEgYXMgYW55IGFzIChmaWVsZHM6IFRbXSkgPT4gdm9pZCxcclxuICAgICAgICAgICAgICAgICAgICBtb2NrQ3JlYXRpb25CZWhhdmlvdXI6ICgocmVjb3JkOiBPcmRlckZvcm0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZDtcclxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBhbnkgYXMgKHJlY29yZDogVCkgPT4gVCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJiaXN0ZWNoX2Jsb2dwb3N0c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW5OYW1lOiBrZXlvZiBCbG9nUG9zdCA9IFwiYmlzdGVjaF9ibG9ncG9zdGlkXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBmaWx0ZXJEYXRhKGJsb2dQb3N0RGF0YSBhcyBhbnlbXSBhcyBUW10sIGZpbHRlcnMpIGFzIGFueSBhcyBUW10sXHJcbiAgICAgICAgICAgICAgICAgICAgaWRDb2x1bW5OYW1lOiBjb2x1bW5OYW1lIGFzIGtleW9mIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVyOiBzZXRCbG9nUG9zdERhdGEgYXMgYW55IGFzIChmaWVsZHM6IFRbXSkgPT4gdm9pZCxcclxuICAgICAgICAgICAgICAgICAgICBtb2NrQ3JlYXRpb25CZWhhdmlvdXI6ICgocmVjb3JkOiBCbG9nUG9zdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIGFueSBhcyAocmVjb3JkOiBUKSA9PiBULFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXRyaWV2aW5nIGRhdGEgZm9yICR7cGx1cmFsTG9naWNhbE5hbWV9IGlzIG5vdCBpbXBsZW1lbnRlZC5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcnMgdGhlIGRhdGEgaWYgYW55IGZpbHRlcnMgYXJlIHByb3ZpZGVkLlxyXG4gICAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gZmlsdGVyLlxyXG4gICAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGZpbHRlcnMgdG8gYXBwbHksIGlmIGFueS5cclxuICAgICAqIEByZXR1cm5zIFRoZSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBmaWx0ZXJEYXRhPFQ+KGRhdGE6IFRbXSwgZmlsdGVycz86IENvbmRpdGlvbkV4cHJlc3Npb248VD5bXSkge1xyXG4gICAgICAgIGlmICghZmlsdGVycykge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhLmZpbHRlcigocmVjb3JkKSA9PiBmaWx0ZXJzLmV2ZXJ5KChmaWx0ZXIpID0+IGZpbHRlclJlY29yZChyZWNvcmQsIGZpbHRlcikpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIHJlY29yZCBwYXNzZXMgdGhlIGZpbHRlci5cclxuICAgICAqIEBwYXJhbSByZWNvcmQgUmVjb3JkLlxyXG4gICAgICogQHBhcmFtIGZpbHRlciBGaWx0ZXIgdG8gYXBwbHkuXHJcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSByZWNvcmQgcGFzc2VzIHRoZSBmaWx0ZXIuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZpbHRlclJlY29yZDxUPihyZWNvcmQ6IFQsIGZpbHRlcjogQ29uZGl0aW9uRXhwcmVzc2lvbjxUPikge1xyXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlY29yZFtmaWx0ZXIuYXR0cmlidXRlIGFzIGtleW9mIFRdID09PSBmaWx0ZXIudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwibmVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmRbZmlsdGVyLmF0dHJpYnV0ZSBhcyBrZXlvZiBUXSAhPT0gZmlsdGVyLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImdlXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkW2ZpbHRlci5hdHRyaWJ1dGUgYXMga2V5b2YgVF0gPj0gZmlsdGVyLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImd0XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVjb3JkW2ZpbHRlci5hdHRyaWJ1dGUgYXMga2V5b2YgVF0gPiBmaWx0ZXIudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwibGVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmRbZmlsdGVyLmF0dHJpYnV0ZSBhcyBrZXlvZiBUXSA8PSBmaWx0ZXIudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwibHRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiByZWNvcmRbZmlsdGVyLmF0dHJpYnV0ZSBhcyBrZXlvZiBUXSA8IGZpbHRlci52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZpbHRlciBvcGVyYXRvciAnJHtmaWx0ZXIub3BlcmF0b3J9JyBkb2VzIG5vdCBoYXZlIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkYCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsYXkgdGhlIGFwcGxpY2F0aW9uIHRvIHNpbXVsYXRlIGFuIEFQSSByZXF1ZXN0LlxyXG4gICAgICogQHBhcmFtIG1zIFRoZSB0aW1lIGRlbGF5IGluIG1pbGxpc2Vjb25kcy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gZGVsYXlUaW1lKG1zOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzKSA9PiBzZXRUaW1lb3V0KHJlcywgbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBHVUlELlxyXG4gICAgICogQHJldHVybnMgTmV3IHJhbmRvbSBHVUlELlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBuZXdHdWlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZW1wdHkgPSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiO1xyXG5cclxuICAgICAgICByZXR1cm4gZW1wdHkucmVwbGFjZSgvWzBdL2csIChsZXR0ZXIpID0+IE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDE2KS50b1N0cmluZygxNikpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY3JlYXRlLFxyXG4gICAgICAgIHJldHJpZXZlTXVsdGlwbGUsXHJcbiAgICAgICAgcmV0cmlldmUsXHJcbiAgICAgICAgdXBkYXRlLFxyXG4gICAgICAgIGV4ZWN1dGVGZWVkYmFja1BvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlUmVxdWVzdENsb3N1cmVQb3J0YWxBY3Rpb24sXHJcbiAgICAgICAgZXhlY3V0ZVNlbmRJbnZpdGF0aW9uUG9ydGFsQWN0aW9uLFxyXG4gICAgfTtcclxufTtcclxuIiwiaW1wb3J0IHsgUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nIH0gZnJvbSBcIi4uL0VudW1zL1Byb2R1Y3RQb3J0YWxUaWxlTWFwcGluZ1wiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIFByb2R1Y3Qgd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IG1hdGNoIGV4YWN0bHkgdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgcHJvZHVjdGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF90aWxldGFyZ2V0dXJsPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWx0aWxlbWFwcGluZz86IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZyA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBQcm9kdWN0ID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgUFJPRFVDVF9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8UHJvZHVjdD4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IFwiYmlzdGVjaF9wb3J0YWx0aWxlbWFwcGluZ1wiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBQcm9kdWN0KVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IEN1c3RvbWVyQXNzZXRTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ3VzdG9tZXJBc3NldFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvZHVjdCwgUFJPRFVDVF9NRVRBREFUQSB9IGZyb20gXCIuL1Byb2R1Y3RcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIEN1c3RvbWVyIEFzc2V0IHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBtYXRjaCBleGFjdGx5IHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIG1zZHluX2N1c3RvbWVyYXNzZXRpZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIF9tc2R5bl9wcm9kdWN0X3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbXNkeW5fbmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXRlY29kZT86IEN1c3RvbWVyQXNzZXRTdGF0ZUNvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBtc2R5bl9wcm9kdWN0PzogUHJvZHVjdCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX3NpdGVfdmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgQ3VzdG9tZXJBc3NldCA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgZm9yIGEgcmVsYXRlZCBDdXN0b21lciBBc3NldFxyXG5leHBvcnQgdHlwZSBSZWxhdGVkQ3VzdG9tZXJBc3NldCA9IFBpY2s8Q3VzdG9tZXJBc3NldCwgXCJtc2R5bl9jdXN0b21lcmFzc2V0aWRcIiB8IFwibXNkeW5fbmFtZVwiIHwgXCJfYmlzdGVjaF9zaXRlX3ZhbHVlXCI+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IENVU1RPTUVSX0FTU0VUX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxDdXN0b21lckFzc2V0PiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogbnVsbCxcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQ3VzdG9tZXJBc3NldClbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9tc2R5bl9wcm9kdWN0X3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwibXNkeW5fcHJvZHVjdFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcInByb2R1Y3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfc2l0ZV92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfc2l0ZVwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImFjY291bnRzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIm1zZHluX3Byb2R1Y3RcIixcclxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IFBST0RVQ1RfTUVUQURBVEEsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbn07XHJcbiIsImltcG9ydCB7IENvbnRhY3RTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29udGFjdFR5cGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29udGFjdFR5cGVcIjtcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDb250YWN0UGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYSBDb250YWN0IHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIGNvbnRhY3RpZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGU/OiBQb3J0YWxDb250YWN0VHlwZSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBmaXJzdG5hbWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgbGFzdG5hbWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICB0ZWxlcGhvbmUxPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9wYXJlbnRjdXN0b21lcmlkX3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWw/OiBCYXNlUGVybWlzc2lvbkxldmVsIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbD86IENhc2VQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsPzogQ29udGFjdFBlcm1pc3Npb25MZXZlbCB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsPzogT3JkZXJQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsPzogSW52b2ljZVBlcm1pc3Npb25MZXZlbCB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBlbWFpbGFkZHJlc3MxPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGpvYnRpdGxlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbW9iaWxlcGhvbmU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZXBld25vdGlmaWNhdGlvbnM/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlcj86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlcz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0ZWNvZGU/OiBDb250YWN0U3RhdGVDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgYWR4X2lkZW50aXR5X2xvZ29uZW5hYmxlZD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX2lzc2hvd25pbnBvcnRhbD86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgQ29udGFjdEZvclJldHJpZXZhbCA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFJFVFJJRVZBTF9DT05UQUNUX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxDb250YWN0Rm9yUmV0cmlldmFsPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJmaXJzdG5hbWVcIixcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQ29udGFjdEZvclJldHJpZXZhbClbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9wYXJlbnRjdXN0b21lcmlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwicGFyZW50Y3VzdG9tZXJpZF9hY2NvdW50XCIsXHJcbiAgICAgICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IFwiYWNjb3VudHNcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfcHJpbWFyeXNpdGVcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJhY2NvdW50c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IFBhcnRpY2lwYXRpb25UeXBlTWFzayB9IGZyb20gXCIuLi9FbnVtcy9QYXJ0aWNpcGF0aW9uVHlwZU1hc2tcIjtcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYSBBY3Rpdml0eSBQYXJ0eSB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBwYXJ0aWNpcGF0aW9udHlwZW1hc2s/OiBQYXJ0aWNpcGF0aW9uVHlwZU1hc2sgPSB1bmRlZmluZWQ7XHJcbiAgICBfcGFydHlpZF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBBY3Rpdml0eVBhcnR5ID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgQUNUSVZJVFlfUEFSVFlfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPEFjdGl2aXR5UGFydHk+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBBY3Rpdml0eVBhcnR5KVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX3BhcnR5aWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJwYXJ0eWlkX2NvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IERpcmVjdGlvbkNvZGUgfSBmcm9tIFwiLi4vRW51bXMvRGlyZWN0aW9uQ29kZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQWN0aXZpdHlQYXJ0eSwgQUNUSVZJVFlfUEFSVFlfTUVUQURBVEEgfSBmcm9tIFwiLi9BY3Rpdml0eVBhcnR5XCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYSBQb3J0YWwgQ29tbWVudCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU/OiBEaXJlY3Rpb25Db2RlID0gdW5kZWZpbmVkO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBhZHhfcG9ydGFsY29tbWVudF9hY3Rpdml0eV9wYXJ0aWVzPzogQWN0aXZpdHlQYXJ0eVtdIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBQb3J0YWxDb21tZW50Rm9yQ3JlYXRlID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgZm9yIHVzZSB3aGVuIHBhcmVudGVkIHRvIGEgQ2FzZVxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BPUlRBTF9DT01NRU5UX0lOQ0lERU5UX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxQb3J0YWxDb21tZW50Rm9yQ3JlYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJkZXNjcmlwdGlvblwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBQb3J0YWxDb21tZW50Rm9yQ3JlYXRlKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwicmVnYXJkaW5nb2JqZWN0aWRfaW5jaWRlbnRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJpbmNpZGVudHNcIixcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFt7IGNvbHVtbk5hbWU6IFwiYWR4X3BvcnRhbGNvbW1lbnRfYWN0aXZpdHlfcGFydGllc1wiLCBlbnRpdHlNZXRhZGF0YTogQUNUSVZJVFlfUEFSVFlfTUVUQURBVEEgfV0sXHJcbn07XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgZm9yIHVzZSB3aGVuIHBhcmVudGVkIHRvIGEgTmV0d29yayBPcmRlclxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPFBvcnRhbENvbW1lbnRGb3JDcmVhdGU+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcImRlc2NyaXB0aW9uXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIFBvcnRhbENvbW1lbnRGb3JDcmVhdGUpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJyZWdhcmRpbmdvYmplY3RpZF9iaXN0ZWNoX25ldHdvcmtvcmRlclwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImJpc3RlY2hfbmV0d29ya29yZGVyc1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW3sgY29sdW1uTmFtZTogXCJhZHhfcG9ydGFsY29tbWVudF9hY3Rpdml0eV9wYXJ0aWVzXCIsIGVudGl0eU1ldGFkYXRhOiBBQ1RJVklUWV9QQVJUWV9NRVRBREFUQSB9XSxcclxufTtcclxuIiwiaW1wb3J0IHsgQWN0aXZpdHlTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQWN0aXZpdHlTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYSBQb3J0YWwgQ29tbWVudCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBzdGF0ZWNvZGU/OiBBY3Rpdml0eVN0YXRlQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXR1c2NvZGU/OiBQb3J0YWxDb21tZW50U3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgdHlwZSBvZiBhbGwgZmllbGRzIHJlcXVpcmVkIGZvciB1cGRhdGVcclxuZXhwb3J0IHR5cGUgUG9ydGFsQ29tbWVudEZvclVwZGF0ZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGZvciB1c2Ugd2hlbiBwYXJlbnRlZCB0byBlaXRoZXIgYSBOZXR3b3JrIE9yZGVyIG9yIGEgQ2FzZVxyXG5leHBvcnQgY29uc3QgVVBEQVRFX1BPUlRBTF9DT01NRU5UX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxQb3J0YWxDb21tZW50Rm9yVXBkYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogbnVsbCxcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgUG9ydGFsQ29tbWVudEZvclVwZGF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBBY3Rpdml0eVN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9BY3Rpdml0eVN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25Db2RlIH0gZnJvbSBcIi4uL0VudW1zL0RpcmVjdGlvbkNvZGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYSBQb3J0YWwgQ29tbWVudCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBhY3Rpdml0eWlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlPzogRGlyZWN0aW9uQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdGVjb2RlPzogQWN0aXZpdHlTdGF0ZUNvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0dXNjb2RlPzogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBjcmVhdGVkb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBtb2RpZmllZG9uPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWwgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBmb3IgdXNlIHdoZW4gcGFyZW50ZWQgdG8gYSBDYXNlXHJcbmV4cG9ydCBjb25zdCBSRVRSSUVWQUxfUE9SVEFMX0NPTU1FTlRfSU5DSURFTlRfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWw+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcImRlc2NyaXB0aW9uXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWwpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJyZWdhcmRpbmdvYmplY3RpZF9pbmNpZGVudFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImluY2lkZW50c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgZm9yIHVzZSB3aGVuIHBhcmVudGVkIHRvIGEgTmV0d29yayBPcmRlclxyXG5leHBvcnQgY29uc3QgUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWw+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcImRlc2NyaXB0aW9uXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWwpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJyZWdhcmRpbmdvYmplY3RpZF9iaXN0ZWNoX25ldHdvcmtvcmRlclwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImJpc3RlY2hfbmV0d29ya29yZGVyc1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IEFjY291bnRTaXRlVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9BY2NvdW50U2l0ZVR5cGVcIjtcclxuaW1wb3J0IHsgQWNjb3VudFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9BY2NvdW50U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGFuIEFjY291bnQgd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IG1hdGNoIGV4YWN0bHkgdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgYWNjb3VudGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfc2l0ZXR5cGU/OiBBY2NvdW50U2l0ZVR5cGUgPSB1bmRlZmluZWQ7XHJcbiAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0ZWNvZGU/OiBBY2NvdW50U3RhdGVDb2RlID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIEFjY291bnQgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBhIHR5cGUgb2YgYWxsIGZpZWxkcyByZXF1aXJlZCBmb3IgdXBkYXRlXHJcbi8vIE5PVEU6IFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgZm9yIHRoZSBVcGRhdGUgb3BlcmF0aW9uIG9mIHRoZSBBY2NvdW50IGVudGl0eTsgc2VlIFJFQURNRSAnQ29sdW1uIFBlcm1pc3Npb25zJyBzZWN0aW9uLlxyXG5leHBvcnQgdHlwZSBBY2NvdW50Rm9yVXBkYXRlID0gUGljazxBY2NvdW50LCBcImFjY291bnRpZFwiIHwgXCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBBQ0NPVU5UX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxBY2NvdW50PiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJuYW1lXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIEFjY291bnQpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcInByaW1hcnljb250YWN0aWRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgUG9ydGFsIE1ham9yIEluY2lkZW50IFVwZGF0ZSB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBhY3Rpdml0eWlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3ViamVjdD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgY3JlYXRlZG9uPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbW9kaWZpZWRvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfY2FzZXN0YXR1c3NuYXBzaG90Pzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBQT1JUQUxfTUFKT1JfSU5DSURFTlRfVVBEQVRFX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJzdWJqZWN0XCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW10sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9Qb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL1BvcnRhbEludml0YXRpb25TdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgUG9ydGFsIEludml0YXRpb24gd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IG1hdGNoIGV4YWN0bHkgdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgYWR4X2ludml0YXRpb25pZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfYXV0aGVudGljYXRpb250eXBlPzogUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0dXNjb2RlPzogUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBjcmVhdGVkb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgUG9ydGFsSW52aXRhdGlvbiA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFBPUlRBTF9JTlZJVEVfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPFBvcnRhbEludml0YXRpb24+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBQb3J0YWxJbnZpdGF0aW9uKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2FkeF9pbnZpdGVjb250YWN0X3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiYWR4X2ludml0ZWNvbnRhY3RfY29udGFjdFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImNvbnRhY3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgVXJsIH0gZnJvbSBcInVybFwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIEJsb2cgUG9zdCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGQgbmFtZXMgbXVzdCBtYXRjaCBleGFjdGx5IHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIGJpc3RlY2hfYmxvZ3Bvc3RpZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfbmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfZGVzY3JpcHRpb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3VybD86IFVSTCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfaW1hZ2V1cmw/OiBVUkwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3B1Ymxpc2hlZGJ5Pzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wdWJsaXNoZWRvbj86IERhdGUgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgQmxvZ1Bvc3QgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBCTE9HX1BPU1RfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPEJsb2dQb3N0PiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogbnVsbCxcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQmxvZ1Bvc3QpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW10sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcblxyXG4vKipcclxuICogTW9kZWwgb2YgYW4gQW5ub3RhdGlvbiB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBhbm5vdGF0aW9uaWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBkb2N1bWVudGJvZHk/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgZmlsZW5hbWU/IDogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIG1vZGlmaWVkb24/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgbWltZXR5cGU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIEFubm90YXRpb24gPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBBTk5PVEFUSU9OX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxBbm5vdGF0aW9uPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogbnVsbCxcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQW5ub3RhdGlvbilbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQU5OT1RBVElPTl9NRVRBREFUQSwgQW5ub3RhdGlvbiB9IGZyb20gXCIuL0Fubm90YXRpb25cIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhbiBPcmRlciBGb3JtIHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIGJpc3RlY2hfb3JkZXJmb3JtaWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX2RhdGVzaWduZWQ/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9vcmRlcmZvcm1fQW5ub3RhdGlvbnM/OiBBbm5vdGF0aW9uW10gPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgT3JkZXJGb3JtID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgT1JERVJGT1JNX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxPcmRlckZvcm0+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBPcmRlckZvcm0pW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW10sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbeyBjb2x1bW5OYW1lOiBcImJpc3RlY2hfb3JkZXJmb3JtX0Fubm90YXRpb25zXCIsIGVudGl0eU1ldGFkYXRhOiBBTk5PVEFUSU9OX01FVEFEQVRBIH1dLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBQcm9kdWN0VHlwZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvUHJvZHVjdFR5cGVDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgT3JkZXIgTGluZSB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBzYWxlc29yZGVyZGV0YWlsaWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBzYWxlc29yZGVyZGV0YWlsbmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHByb2R1Y3R0eXBlY29kZT86IFByb2R1Y3RUeXBlQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZT86IG51bWJlciB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBwcmljZXBlcnVuaXQ/OiBudW1iZXIgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgcXVhbnRpdHk/OiBudW1iZXIgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfbXNkeW5fcHJvamVjdF92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgT3JkZXJsaW5lID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgT1JERVJMSU5FX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxPcmRlcmxpbmU+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBPcmRlcmxpbmUpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW10sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgT3JkZXJTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvT3JkZXJTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgT3JkZXJTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyU3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT1JERVJGT1JNX01FVEFEQVRBLCBPcmRlckZvcm0gfSBmcm9tIFwiLi9PcmRlckZvcm1cIjtcclxuaW1wb3J0IHsgT1JERVJMSU5FX01FVEFEQVRBLCBPcmRlcmxpbmUgfSBmcm9tIFwiLi9PcmRlcmxpbmVcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIE9yZGVyIHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIHNhbGVzb3JkZXJpZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIG5hbWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBvcmRlcm51bWJlcj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXRlY29kZT86IE9yZGVyU3RhdGVDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IE9yZGVyU3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX2NvbnRhY3RfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgdG90YWxsaW5laXRlbWFtb3VudD86IG51bWJlciB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3RvdGFsYW5udWFscHJpY2U/OiBudW1iZXIgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9vcmRlcmZvcm0/OiBPcmRlckZvcm0gfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBvcmRlcl9kZXRhaWxzPzogT3JkZXJsaW5lW10gPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgT3JkZXIgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBhIHR5cGUgb2YgYWxsIGZpZWxkcyByZXF1aXJlZCBmb3IgdXBkYXRlXHJcbmV4cG9ydCB0eXBlIE9yZGVyRm9yVXBkYXRlID0gUGljazxPcmRlciwgXCJiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlXCI+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IE9SREVSX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxPcmRlcj4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IFwibmFtZVwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBPcmRlcilbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2NvbnRhY3RfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2NvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW1xyXG4gICAgICAgIHsgY29sdW1uTmFtZTogXCJvcmRlcl9kZXRhaWxzXCIsIGVudGl0eU1ldGFkYXRhOiBPUkRFUkxJTkVfTUVUQURBVEEgfSxcclxuICAgICAgICB7IGNvbHVtbk5hbWU6IFwiYmlzdGVjaF9vcmRlcmZvcm1cIiwgZW50aXR5TWV0YWRhdGE6IE9SREVSRk9STV9NRVRBREFUQSB9LFxyXG4gICAgXSxcclxufTtcclxuIiwiaW1wb3J0IHsgUHJvamVjdFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Qcm9qZWN0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IFByb2plY3RTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL1Byb2plY3RTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgUHJvamVjdCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBtc2R5bl9wcm9qZWN0aWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3Byb2plY3RudW1iZXI/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBtc2R5bl9zdWJqZWN0Pzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IFByb2plY3RTdGF0dXNDb2RlIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXRlY29kZT86IFByb2plY3RTdGF0ZUNvZGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgbXNkeW5fYWN0dWFsc3RhcnQ/OiBEYXRlIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9vd25lcmlkX3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIFwiX293bmVyaWRfdmFsdWVAT0RhdGEuQ29tbXVuaXR5LkRpc3BsYXkuVjEuRm9ybWF0dGVkVmFsdWVcIj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBQcm9qZWN0ID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgUFJPSkVDVF9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8UHJvamVjdD4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IG51bGwsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIFByb2plY3QpW10sXHJcbiAgICBlbnRpdHlSZWZlcmVuY2VDb2x1bW5NYXBwaW5nczogW10sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgQ2FzZU9yaWdpbkNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZU9yaWdpbkNvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVNldmVyaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlU2V2ZXJpdHlDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VVcmdlbmN5IH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VVcmdlbmN5XCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGFuIEluY2lkZW50IHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBtYXRjaCBleGFjdGx5IHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIHRpdGxlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgX2N1c3RvbWVyaWRfdmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGNhc2VvcmlnaW5jb2RlPzogQ2FzZU9yaWdpbkNvZGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgc2V2ZXJpdHljb2RlPzogQ2FzZVNldmVyaXR5Q29kZSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3VyZ2VuY3k/OiBDYXNlVXJnZW5jeSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG4vLyBOT1RFOiBUaGVzZSBzaG91bGQgbWF0Y2ggdGhlICdDb2x1bW4gUGVybWlzc2lvbnMnIGZvciB0aGUgQ3JlYXRlIG9wZXJhdGlvbiBvZiB0aGUgQ2FzZSBlbnRpdHk7IHNlZSBSRUFETUUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgc2VjdGlvbi5cclxuZXhwb3J0IHR5cGUgSW5jaWRlbnRGb3JDcmVhdGUgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBDUkVBVEVfSU5DSURFTlRfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPEluY2lkZW50Rm9yQ3JlYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJ0aXRsZVwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBJbmNpZGVudEZvckNyZWF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9jdXN0b21lcmlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiY3VzdG9tZXJpZF9hY2NvdW50XCIsXHJcbiAgICAgICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IFwiYWNjb3VudHNcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcInByaW1hcnljb250YWN0aWRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgTWFqb3IgSW5jaWRlbnQgVXBkYXRlIHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBtYXRjaCBleGFjdGx5IHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIGFjdGl2aXR5aWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfcmVnYXJkaW5nb2JqZWN0aWRfdmFsdWU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfY3JlYXRlZGJ5X3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdGVjb2RlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHByaW9yaXR5Y29kZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHN1YmplY3Q/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGNyZWF0ZWRvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIG1vZGlmaWVkb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBhY3R1YWxlbmQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgTWFqb3JJbmNpZGVudFVwZGF0ZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IE1BSk9SX0lOQ0lERU5UX1VQREFURV9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8TWFqb3JJbmNpZGVudFVwZGF0ZT4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IFwic3ViamVjdFwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBNYWpvckluY2lkZW50VXBkYXRlKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVBhcnR5LCBBQ1RJVklUWV9QQVJUWV9NRVRBREFUQSB9IGZyb20gXCIuL0FjdGl2aXR5UGFydHlcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIFBvcnRhbCBFbWFpbCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBhY3Rpdml0eWlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgLy8gVHJ1ZSBpcyBPdXRnb2luZyAtIEZhbHNlIGlzIEluY29taW5nLlxyXG4gICAgYmlzdGVjaF9kaXJlY3Rpb24/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG4gICAgX2NyZWF0ZWRieV92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHN1YmplY3Q/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGNyZWF0ZWRvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIG1vZGlmaWVkb24/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgUG9ydGFsRW1haWwgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBQT1JUQUxfRU1BSUxfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPFBvcnRhbEVtYWlsPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJkZXNjcmlwdGlvblwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBQb3J0YWxFbWFpbClbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBDYXNlT3JpZ2luQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlT3JpZ2luQ29kZVwiO1xyXG5pbXBvcnQgeyBDYXNlUHJpb3JpdHlDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQcmlvcml0eUNvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVNldmVyaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlU2V2ZXJpdHlDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VUeXBlXCI7XHJcbmltcG9ydCB7IENhc2VVcmdlbmN5IH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VVcmdlbmN5XCI7XHJcbmltcG9ydCB7IEluY2lkZW50U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9JbmNpZGVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE1BSk9SX0lOQ0lERU5UX1VQREFURV9NRVRBREFUQSwgTWFqb3JJbmNpZGVudFVwZGF0ZSB9IGZyb20gXCIuL01ham9ySW5jaWRlbnRVcGRhdGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbCwgUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX0lOQ0lERU5UX01FVEFEQVRBIH0gZnJvbSBcIi4vUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBQT1JUQUxfRU1BSUxfTUVUQURBVEEsIFBvcnRhbEVtYWlsIH0gZnJvbSBcIi4vUG9ydGFsRW1haWxcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhbiBJbmNpZGVudCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgbWF0Y2ggZXhhY3RseSB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBpbmNpZGVudGlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgdGl0bGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfY3VzdG9tZXJpZF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHRpY2tldG51bWJlcj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgY2FzZXR5cGVjb2RlPzogQ2FzZVR5cGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgY2FzZW9yaWdpbmNvZGU/OiBDYXNlT3JpZ2luQ29kZSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBzZXZlcml0eWNvZGU/OiBDYXNlU2V2ZXJpdHlDb2RlIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfdXJnZW5jeT86IENhc2VVcmdlbmN5IHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIHByaW9yaXR5Y29kZT86IENhc2VQcmlvcml0eUNvZGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IEluY2lkZW50U3RhdHVzQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIGNyZWF0ZWRvbj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX2NyZWF0ZWRieWNvbnRhY3RfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZT86IERhdGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzPzogUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzPzogUG9ydGFsRW1haWxbXSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBpbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzPzogTWFqb3JJbmNpZGVudFVwZGF0ZVtdIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBJbmNpZGVudEZvclJldHJpZXZhbCA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFJFVFJJRVZBTF9JTkNJREVOVF9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8SW5jaWRlbnRGb3JSZXRyaWV2YWw+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcInRpdGxlXCIsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIEluY2lkZW50Rm9yUmV0cmlldmFsKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2N1c3RvbWVyaWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJjdXN0b21lcmlkX2FjY291bnRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJhY2NvdW50c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwicHJpbWFyeWNvbnRhY3RpZFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImNvbnRhY3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfY3JlYXRlZGJ5Y29udGFjdFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImNvbnRhY3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcImluY2lkZW50X2FkeF9wb3J0YWxjb21tZW50c1wiLFxyXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX0lOQ0lERU5UX01FVEFEQVRBLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcImluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzXCIsXHJcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBQT1JUQUxfRU1BSUxfTUVUQURBVEEsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiaW5jaWRlbnRfYmlzdGVjaF9tYWpvcmluY2lkZW50dXBkYXRlc1wiLFxyXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogTUFKT1JfSU5DSURFTlRfVVBEQVRFX01FVEFEQVRBLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG59OyIsImltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGFuIEluY2lkZW50IHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBtYXRjaCBleGFjdGx5IHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbi8vIE5PVEU6IFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgZm9yIHRoZSBVcGRhdGUgb3BlcmF0aW9uIG9mIHRoZSBDYXNlIGVudGl0eTsgc2VlIFJFQURNRSAnQ29sdW1uIFBlcm1pc3Npb25zJyBzZWN0aW9uLlxyXG5leHBvcnQgdHlwZSBJbmNpZGVudEZvclVwZGF0ZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFVQREFURV9JTkNJREVOVF9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8SW5jaWRlbnRGb3JVcGRhdGU+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBJbmNpZGVudEZvclVwZGF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwicHJpbWFyeWNvbnRhY3RpZFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImNvbnRhY3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IFBvcnRhbENvbnRhY3RUeXBlIH0gZnJvbSBcIi4uL0VudW1zL1BvcnRhbENvbnRhY3RUeXBlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5pbXBvcnQgeyBPcmRlclBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0UGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvSW52b2ljZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgQ29udGFjdCB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlPzogUG9ydGFsQ29udGFjdFR5cGUgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgZmlyc3RuYW1lPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGxhc3RuYW1lPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgdGVsZXBob25lMT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsPzogQmFzZVBlcm1pc3Npb25MZXZlbCB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWw/OiBDYXNlUGVybWlzc2lvbkxldmVsIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbD86IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbD86IE9yZGVyUGVybWlzc2lvbkxldmVsIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbD86IEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgZW1haWxhZGRyZXNzMT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBqb2J0aXRsZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIG1vYmlsZXBob25lPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9ucz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlcz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZXNlY3VyaXR5dXBkYXRlcz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXI/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXM/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9pc3Nob3duaW5wb3J0YWw/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbi8vIE5PVEU6IFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgZm9yIHRoZSBDcmVhdGUgb3BlcmF0aW9uIG9mIHRoZSBDb250YWN0IGVudGl0eTsgc2VlIFJFQURNRSAnQ29sdW1uIFBlcm1pc3Npb25zJyBzZWN0aW9uLlxyXG5leHBvcnQgdHlwZSBDb250YWN0Rm9yQ3JlYXRlID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgQ1JFQVRFX0NPTlRBQ1RfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPENvbnRhY3RGb3JDcmVhdGU+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBcImZpcnN0bmFtZVwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBDb250YWN0Rm9yQ3JlYXRlKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX3BhcmVudGN1c3RvbWVyaWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJwYXJlbnRjdXN0b21lcmlkX2FjY291bnRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJhY2NvdW50c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiYmlzdGVjaF9wcmltYXJ5c2l0ZVwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImFjY291bnRzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgQ29udGFjdFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IEJhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQmFzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb250YWN0VHlwZSB9IGZyb20gXCIuLi9FbnVtcy9Qb3J0YWxDb250YWN0VHlwZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgT3JkZXJQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvT3JkZXJQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ2FzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBJbnZvaWNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0ludm9pY2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIENvbnRhY3Qgd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZT86IFBvcnRhbENvbnRhY3RUeXBlIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGZpcnN0bmFtZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBsYXN0bmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHRlbGVwaG9uZTE/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgX2Jpc3RlY2hfcHJpbWFyeXNpdGVfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWw/OiBCYXNlUGVybWlzc2lvbkxldmVsIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbD86IENhc2VQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsPzogQ29udGFjdFBlcm1pc3Npb25MZXZlbCB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsPzogT3JkZXJQZXJtaXNzaW9uTGV2ZWwgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsPzogSW52b2ljZVBlcm1pc3Npb25MZXZlbCB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBlbWFpbGFkZHJlc3MxPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGpvYnRpdGxlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgbW9iaWxlcGhvbmU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZXBld25vdGlmaWNhdGlvbnM/OiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzPzogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlcj86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlcz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0ZWNvZGU/OiBDb250YWN0U3RhdGVDb2RlID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSB0eXBlIG9mIGFsbCBmaWVsZHMgcmVxdWlyZWQgZm9yIHVwZGF0ZVxyXG4vLyBOT1RFOiBUaGVzZSBzaG91bGQgbWF0Y2ggdGhlICdDb2x1bW4gUGVybWlzc2lvbnMnIGZvciB0aGUgVXBkYXRlIG9wZXJhdGlvbiBvZiB0aGUgQ29udGFjdCBlbnRpdHk7IHNlZSBSRUFETUUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgc2VjdGlvbi5cclxuZXhwb3J0IHR5cGUgQ29udGFjdEZvclVwZGF0ZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFVQREFURV9DT05UQUNUX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxDb250YWN0Rm9yVXBkYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJmaXJzdG5hbWVcIixcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQ29udGFjdEZvclVwZGF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiYmlzdGVjaF9wcmltYXJ5c2l0ZVwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImFjY291bnRzXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBleHBhbmRQcm9wZXJ0aWVzOiBbXSxcclxufTtcclxuIiwiaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG4vKipcclxuICogTW9kZWwgb2YgYSBOZXR3b3JrIE9yZGVyIHdoZW4gcmV0cmlldmVkIHZpYSB0aGUgQVBJLlxyXG4gKiBOT1RFOiBGaWVsZHMgbmFtZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBBUEkuXHJcbiAqL1xyXG5jbGFzcyBJbnRlcm5hbE1vZGVsIHtcclxuICAgIHN0YXR1c2NvZGU/OiBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgX2Jpc3RlY2hfY29udGFjdF92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEV4cG9ydCBhIHNpbXBsZSB0eXBlIG9mIGFsbCBmaWVsZHNcclxuZXhwb3J0IHR5cGUgTmV0d29ya09yZGVyRm9yVXBkYXRlID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgVVBEQVRFX05FVFdPUktfT1JERVJfTUVUQURBVEE6IEVudGl0eU1ldGFkYXRhPE5ldHdvcmtPcmRlckZvclVwZGF0ZT4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IG51bGwsXHJcbiAgICBjb2x1bW5OYW1lczogT2JqZWN0LmtleXMobmV3IEludGVybmFsTW9kZWwoKSkgYXMgKGtleW9mIE5ldHdvcmtPcmRlckZvclVwZGF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2NvbnRhY3RfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2NvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW10sXHJcbn07XHJcbiIsImltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL05ldHdvcmtPcmRlclN0YWdlU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhZ2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL05ldHdvcmtPcmRlclN0YWdlVHlwZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIE5ldHdvcmsgT3JkZXIgU3RhZ2Ugd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9zdGFnZT86IE5ldHdvcmtPcmRlclN0YWdlVHlwZSA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfZGF0ZWZyb20/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdGVjb2RlPzogTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBzdGF0dXNjb2RlPzogTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIE5ldHdvcmtPcmRlclN0YWdlID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgTkVUV09SS19PUkRFUl9TVEFHRV9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8TmV0d29ya09yZGVyU3RhZ2U+ID0ge1xyXG4gICAgdGl0bGVDb2x1bW5OYW1lOiBudWxsLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBOZXR3b3JrT3JkZXJTdGFnZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBOZXR3b3JrT3JkZXJTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvTmV0d29ya09yZGVyU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvTmV0d29ya09yZGVyU3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTkVUV09SS19PUkRFUl9TVEFHRV9NRVRBREFUQSwgTmV0d29ya09yZGVyU3RhZ2UgfSBmcm9tIFwiLi9OZXR3b3JrT3JkZXJTdGFnZVwiO1xyXG5pbXBvcnQgeyBNQUpPUl9JTkNJREVOVF9VUERBVEVfTUVUQURBVEEsIE1ham9ySW5jaWRlbnRVcGRhdGUgfSBmcm9tIFwiLi9NYWpvckluY2lkZW50VXBkYXRlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsLFxyXG4gICAgUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEEsXHJcbn0gZnJvbSBcIi4vUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBQT1JUQUxfRU1BSUxfTUVUQURBVEEsIFBvcnRhbEVtYWlsIH0gZnJvbSBcIi4vUG9ydGFsRW1haWxcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIE5ldHdvcmsgT3JkZXIgd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJpZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfbmFtZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXRlY29kZT86IE5ldHdvcmtPcmRlclN0YXRlQ29kZSA9IHVuZGVmaW5lZDtcclxuICAgIHN0YXR1c2NvZGU/OiBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgX2Jpc3RlY2hfb3JkZXJsaW5lX3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX3NhbGVzb3JkZXJfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgX2Jpc3RlY2hfY29udGFjdF92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfYmlzdGVjaF9jdXN0b21lcmFzc2V0X3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZV9uZXR3b3Jrb3JkZXJfYmk/OiBOZXR3b3JrT3JkZXJTdGFnZVtdID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9uZXR3b3Jrb3JkZXJfYWR4X3BvcnRhbGNvbW1lbnRzPzogUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfbmV0d29ya29yZGVyX2Jpc3RlY2hfcG9ydGFsZW1haWxzPzogUG9ydGFsRW1haWxbXSB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzPzogTWFqb3JJbmNpZGVudFVwZGF0ZVtdIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWwgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBSRVRSSUVWQUxfTkVUV09SS19PUkRFUl9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8TmV0d29ya09yZGVyRm9yUmV0cmlldmFsPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJiaXN0ZWNoX25hbWVcIixcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgTmV0d29ya09yZGVyRm9yUmV0cmlldmFsKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfY29udGFjdF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfY29udGFjdFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImNvbnRhY3RzXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfY3VzdG9tZXJhc3NldF92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfY3VzdG9tZXJhc3NldFwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcImN1c3RvbWVyYXNzZXRzXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfc2FsZXNvcmRlcl92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfc2FsZXNvcmRlclwiLFxyXG4gICAgICAgICAgICBwbHVyYWxFbnRpdHlTZXROYW1lOiBcInNhbGVzb3JkZXJzXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2Jpc3RlY2hfb3JkZXJsaW5lX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWU6IFwiYmlzdGVjaF9PcmRlckxpbmVcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJzYWxlc29yZGVyZGV0YWlsc1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgZXhwYW5kUHJvcGVydGllczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJiaXN0ZWNoX2Jpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VfbmV0d29ya29yZGVyX2JpXCIsXHJcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBORVRXT1JLX09SREVSX1NUQUdFX01FVEFEQVRBLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcImJpc3RlY2hfbmV0d29ya29yZGVyX2FkeF9wb3J0YWxjb21tZW50c1wiLFxyXG4gICAgICAgICAgICBlbnRpdHlNZXRhZGF0YTogUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEEsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiYmlzdGVjaF9uZXR3b3Jrb3JkZXJfYmlzdGVjaF9wb3J0YWxlbWFpbHNcIixcclxuICAgICAgICAgICAgZW50aXR5TWV0YWRhdGE6IFBPUlRBTF9FTUFJTF9NRVRBREFUQSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogXCJiaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzXCIsXHJcbiAgICAgICAgICAgIGVudGl0eU1ldGFkYXRhOiBNQUpPUl9JTkNJREVOVF9VUERBVEVfTUVUQURBVEEsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbn07XHJcbiIsImltcG9ydCB7IE5ldHdvcmtPcmRlclN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUxpdmVDcnVkU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1vZGVsIG9mIGEgTmV0d29yayBPcmRlciB3aGVuIHJldHJpZXZlZCB2aWEgdGhlIEFQSS5cclxuICogTk9URTogRmllbGRzIG5hbWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgQVBJLlxyXG4gKi9cclxuY2xhc3MgSW50ZXJuYWxNb2RlbCB7XHJcbiAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcmlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgYmlzdGVjaF9uYW1lPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdGVjb2RlPzogTmV0d29ya09yZGVyU3RhdGVDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgc3RhdHVzY29kZT86IE5ldHdvcmtPcmRlclN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICBfYmlzdGVjaF9vcmRlcmxpbmVfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG4gICAgX2Jpc3RlY2hfc2FsZXNvcmRlcl92YWx1ZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XHJcbiAgICBfYmlzdGVjaF9jb250YWN0X3ZhbHVlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcclxuICAgIF9iaXN0ZWNoX2N1c3RvbWVyYXNzZXRfdmFsdWU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSBzaW1wbGUgdHlwZSBvZiBhbGwgZmllbGRzXHJcbmV4cG9ydCB0eXBlIE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGUgPSBSZXF1aXJlZDxJbnRlcm5hbE1vZGVsPjtcclxuXHJcbi8vIEV4cG9ydCBtZXRhZGF0YSBpbiBhIHJ1bnRpbWUgb2JqZWN0XHJcbmV4cG9ydCBjb25zdCBSRVRSSUVWRV9NVUxUSVBMRV9ORVRXT1JLX09SREVSX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxOZXR3b3JrT3JkZXJGb3JSZXRyaWV2ZU11bHRpcGxlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogXCJiaXN0ZWNoX25hbWVcIixcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgTmV0d29ya09yZGVyRm9yUmV0cmlldmVNdWx0aXBsZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2NvbnRhY3RfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2NvbnRhY3RcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjb250YWN0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX2N1c3RvbWVyYXNzZXRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX2N1c3RvbWVyYXNzZXRcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJjdXN0b21lcmFzc2V0c1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX3NhbGVzb3JkZXJfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJiaXN0ZWNoX3NhbGVzb3JkZXJcIixcclxuICAgICAgICAgICAgcGx1cmFsRW50aXR5U2V0TmFtZTogXCJzYWxlc29yZGVyc1wiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBcIl9iaXN0ZWNoX29yZGVybGluZV92YWx1ZVwiLFxyXG4gICAgICAgICAgICBuYXZpZ2F0aW9uUHJvcGVydHlOYW1lOiBcImJpc3RlY2hfT3JkZXJMaW5lXCIsXHJcbiAgICAgICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IFwic2FsZXNvcmRlcmRldGFpbHNcIixcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIENvbnRhY3Qgd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG4vLyBFeHBvcnQgYSB0eXBlIG9mIGFsbCBmaWVsZHMgcmVxdWlyZWQgZm9yIHVwZGF0ZVxyXG4vLyBOT1RFOiBUaGVzZSBzaG91bGQgbWF0Y2ggdGhlICdDb2x1bW4gUGVybWlzc2lvbnMnIGZvciB0aGUgVXBkYXRlIG9wZXJhdGlvbiBvZiB0aGUgQ29udGFjdCBlbnRpdHk7IHNlZSBSRUFETUUgJ0NvbHVtbiBQZXJtaXNzaW9ucycgc2VjdGlvbi5cclxuZXhwb3J0IHR5cGUgQ29udGFjdEZvclRlcm1zQW5kQ29uZGl0aW9uc1VwZGF0ZSA9IFJlcXVpcmVkPEludGVybmFsTW9kZWw+O1xyXG5cclxuLy8gRXhwb3J0IG1ldGFkYXRhIGluIGEgcnVudGltZSBvYmplY3RcclxuZXhwb3J0IGNvbnN0IFVQREFURV9URVJNU19BTkRfQ09ORElUSU9OU19DT05UQUNUX01FVEFEQVRBOiBFbnRpdHlNZXRhZGF0YTxDb250YWN0Rm9yVGVybXNBbmRDb25kaXRpb25zVXBkYXRlPiA9IHtcclxuICAgIHRpdGxlQ29sdW1uTmFtZTogbnVsbCxcclxuICAgIGNvbHVtbk5hbWVzOiBPYmplY3Qua2V5cyhuZXcgSW50ZXJuYWxNb2RlbCgpKSBhcyAoa2V5b2YgQ29udGFjdEZvclRlcm1zQW5kQ29uZGl0aW9uc1VwZGF0ZSlbXSxcclxuICAgIGVudGl0eVJlZmVyZW5jZUNvbHVtbk1hcHBpbmdzOiBbXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFtdLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VMaXZlQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQU5OT1RBVElPTl9NRVRBREFUQSwgQW5ub3RhdGlvbiB9IGZyb20gXCIuL0Fubm90YXRpb25cIjtcclxuXHJcbi8qKlxyXG4gKiBNb2RlbCBvZiBhIEludm9pY2Ugd2hlbiByZXRyaWV2ZWQgdmlhIHRoZSBBUEkuXHJcbiAqIE5PVEU6IEZpZWxkcyBuYW1lcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIEFQSS5cclxuICovXHJcbmNsYXNzIEludGVybmFsTW9kZWwge1xyXG4gICAgaW52b2ljZWlkPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG4gICAgaW52b2ljZW51bWJlcj86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIGR1ZWRhdGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBfY3VzdG9tZXJpZF92YWx1ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuICAgIEludm9pY2VfQW5ub3RhdGlvbj86IEFubm90YXRpb25bXSA9IHVuZGVmaW5lZDtcclxuICAgIGJpc3RlY2hfcGF5bWVudG1ldGhvZGNvZGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XHJcbiAgICBtc2R5bl9pbnZvaWNlZGF0ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxufVxyXG5cclxuLy8gRXhwb3J0IGEgc2ltcGxlIHR5cGUgb2YgYWxsIGZpZWxkc1xyXG5leHBvcnQgdHlwZSBJbnZvaWNlID0gUmVxdWlyZWQ8SW50ZXJuYWxNb2RlbD47XHJcblxyXG4vLyBFeHBvcnQgbWV0YWRhdGEgaW4gYSBydW50aW1lIG9iamVjdFxyXG5leHBvcnQgY29uc3QgSU5WT0lDRV9NRVRBREFUQTogRW50aXR5TWV0YWRhdGE8SW52b2ljZT4gPSB7XHJcbiAgICB0aXRsZUNvbHVtbk5hbWU6IFwiaW52b2ljZW51bWJlclwiLFxyXG4gICAgY29sdW1uTmFtZXM6IE9iamVjdC5rZXlzKG5ldyBJbnRlcm5hbE1vZGVsKCkpIGFzIChrZXlvZiBJbnZvaWNlKVtdLFxyXG4gICAgZW50aXR5UmVmZXJlbmNlQ29sdW1uTWFwcGluZ3M6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGNvbHVtbk5hbWU6IFwiX2N1c3RvbWVyaWRfdmFsdWVcIixcclxuICAgICAgICAgICAgbmF2aWdhdGlvblByb3BlcnR5TmFtZTogXCJjdXN0b21lcmlkXCIsXHJcbiAgICAgICAgICAgIHBsdXJhbEVudGl0eVNldE5hbWU6IFwiYWNjb3VudHNcIixcclxuICAgICAgICB9LFxyXG4gICAgXSxcclxuICAgIGV4cGFuZFByb3BlcnRpZXM6IFt7IGNvbHVtbk5hbWU6IFwiSW52b2ljZV9Bbm5vdGF0aW9uXCIsIGVudGl0eU1ldGFkYXRhOiBBTk5PVEFUSU9OX01FVEFEQVRBIH1dLFxyXG59O1xyXG4iLCJpbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyB1c2VNb2NrQ3J1ZFNlcnZpY2UgfSBmcm9tIFwiLi91c2VNb2NrQ3J1ZFNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdXNlTGl2ZUNydWRTZXJ2aWNlIH0gZnJvbSBcIi4vdXNlTGl2ZUNydWRTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tIFwiLi4vTW9kZWxzL1Byb2R1Y3RcIjtcclxuaW1wb3J0IHsgQ3VzdG9tZXJBc3NldCwgQ1VTVE9NRVJfQVNTRVRfTUVUQURBVEEgfSBmcm9tIFwiLi4vTW9kZWxzL0N1c3RvbWVyQXNzZXRcIjtcclxuaW1wb3J0IHsgQ29uZGl0aW9uRXhwcmVzc2lvbiB9IGZyb20gXCIuLi9UeXBlcy9Db25kaXRpb25FeHByZXNzaW9uXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JSZXRyaWV2YWwsIFJFVFJJRVZBTF9DT05UQUNUX01FVEFEQVRBIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUsXHJcbiAgICBSRVRSSUVWRV9NVUxUSVBMRV9JTkNJREVOVF9NRVRBREFUQSxcclxufSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgQ1JFQVRFX1BPUlRBTF9DT01NRU5UX0lOQ0lERU5UX01FVEFEQVRBLFxyXG4gICAgQ1JFQVRFX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEEsXHJcbiAgICBQb3J0YWxDb21tZW50Rm9yQ3JlYXRlLFxyXG59IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsQ29tbWVudEZvckNyZWF0ZVwiO1xyXG5pbXBvcnQgeyBVUERBVEVfUE9SVEFMX0NPTU1FTlRfTUVUQURBVEEsIFBvcnRhbENvbW1lbnRGb3JVcGRhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL1BvcnRhbENvbW1lbnRGb3JVcGRhdGVcIjtcclxuaW1wb3J0IHtcclxuICAgIFJFVFJJRVZBTF9QT1JUQUxfQ09NTUVOVF9JTkNJREVOVF9NRVRBREFUQSxcclxuICAgIFJFVFJJRVZBTF9QT1JUQUxfQ09NTUVOVF9ORVRXT1JLX09SREVSX01FVEFEQVRBLFxyXG4gICAgUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbCxcclxufSBmcm9tIFwiLi4vTW9kZWxzL1BvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgQWNjb3VudCwgQWNjb3VudEZvclVwZGF0ZSwgQUNDT1VOVF9NRVRBREFUQSB9IGZyb20gXCIuLi9Nb2RlbHMvQWNjb3VudFwiO1xyXG5pbXBvcnQgeyBQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLCBQT1JUQUxfTUFKT1JfSU5DSURFTlRfVVBEQVRFX01FVEFEQVRBIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxNYWpvckluY2lkZW50VXBkYXRlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb24sIFBPUlRBTF9JTlZJVEVfTUVUQURBVEEgfSBmcm9tIFwiLi4vTW9kZWxzL1BvcnRhbEludml0YXRpb25cIjtcclxuaW1wb3J0IHsgQ2FzZVR5cGUgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVR5cGVcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0luY2lkZW50U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBGZWVkYmFja0NhdGVnb3J5IH0gZnJvbSBcIi4uL1R5cGVzL0ZlZWRiYWNrQ2F0ZWdvcnlcIjtcclxuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuLi9IZWxwZXJzL0RhdGVIZWxwZXJcIjtcclxuaW1wb3J0IHsgQWN0aXZpdHlTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQWN0aXZpdHlTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgQ3VzdG9tZXJBc3NldFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9DdXN0b21lckFzc2V0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IEJMT0dfUE9TVF9NRVRBREFUQSwgQmxvZ1Bvc3QgfSBmcm9tIFwiLi4vTW9kZWxzL0Jsb2dQb3N0XCI7XHJcbmltcG9ydCB7IE9SREVSX01FVEFEQVRBLCBPcmRlciwgT3JkZXJGb3JVcGRhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IE9yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgT1JERVJGT1JNX01FVEFEQVRBLCBPcmRlckZvcm0gfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyRm9ybVwiO1xyXG5pbXBvcnQgeyBQUk9KRUNUX01FVEFEQVRBLCBQcm9qZWN0IH0gZnJvbSBcIi4uL01vZGVscy9Qcm9qZWN0XCI7XHJcbmltcG9ydCB7IENSRUFURV9JTkNJREVOVF9NRVRBREFUQSwgSW5jaWRlbnRGb3JDcmVhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yQ3JlYXRlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50Rm9yUmV0cmlldmFsLCBSRVRSSUVWQUxfSU5DSURFTlRfTUVUQURBVEEgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IEluY2lkZW50Rm9yVXBkYXRlLCBVUERBVEVfSU5DSURFTlRfTUVUQURBVEEgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yVXBkYXRlXCI7XHJcbmltcG9ydCB7IENSRUFURV9DT05UQUNUX01FVEFEQVRBLCBDb250YWN0Rm9yQ3JlYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yQ3JlYXRlXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JVcGRhdGUsIFVQREFURV9DT05UQUNUX01FVEFEQVRBIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yVXBkYXRlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclVwZGF0ZSwgVVBEQVRFX05FVFdPUktfT1JERVJfTUVUQURBVEEgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlckZvclVwZGF0ZVwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWwsIFJFVFJJRVZBTF9ORVRXT1JLX09SREVSX01FVEFEQVRBIH0gZnJvbSBcIi4uL01vZGVscy9OZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHtcclxuICAgIE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGUsXHJcbiAgICBSRVRSSUVWRV9NVUxUSVBMRV9ORVRXT1JLX09SREVSX01FVEFEQVRBLFxyXG59IGZyb20gXCIuLi9Nb2RlbHMvTmV0d29ya09yZGVyRm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBVUERBVEVfVEVSTVNfQU5EX0NPTkRJVElPTlNfQ09OVEFDVF9NRVRBREFUQSB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclRlcm1zQW5kQ29uZGl0aW9uc1VwZGF0ZVwiO1xyXG5pbXBvcnQgeyBJTlZPSUNFX01FVEFEQVRBLCBJbnZvaWNlIH0gZnJvbSBcIi4uL01vZGVscy9JbnZvaWNlXCI7XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgZ2xvYmFsIGludGVyZmFjZSB0byByZXRyaWV2ZSB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlcnMgY29udGFjdCBJZFxyXG4gKiBhbmQgdG8gcmV0cmlldmUgYXV0aGVudGljYXRpb24gdG9rZW5zIGZvciB0aGUgRHluYW1pY3MzNjUgV2ViIEFQSS5cclxuICovXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIGludGVyZmFjZSBXaW5kb3cge1xyXG4gICAgICAgIHNoZWxsOiB7IGdldFRva2VuRGVmZXJyZWQ6ICgpID0+IFByb21pc2VMaWtlPHN0cmluZz4gfTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgc2VydmljZSB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRvIHVzZSB0aGUgRHluYW1pY3MgQVBJIGVuZHBvaW50IG9yIHRoZSBNb2NrIENydWQgU2VydmljZS5cclxuICogQHJldHVybnMgVGhlIENSVUQgZnVuY3Rpb25zIHdoaWNoIGFyZSBhdmFpbGFibGUgaW4gdGhlIERhdGEgU2VydmljZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCB1c2VEYXRhU2VydmljZSA9ICgpID0+IHtcclxuICAgIGNvbnN0IGlzTG9jYWxNb2RlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pc0xvY2FsTW9kZSk7XHJcbiAgICBjb25zdCB1c2VySWQgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnVzZXJJZCk7XHJcblxyXG4gICAgY29uc3QgbGl2ZUNydWRTZXJ2aWNlID0gdXNlTGl2ZUNydWRTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBtb2NrQ3J1ZFNlcnZpY2UgPSB1c2VNb2NrQ3J1ZFNlcnZpY2UoKTtcclxuXHJcbiAgICBjb25zdCBjcnVkU2VydmljZSA9IGlzTG9jYWxNb2RlID8gbW9ja0NydWRTZXJ2aWNlIDogbGl2ZUNydWRTZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIENhc2UuXHJcbiAgICAgKiBAcGFyYW0gaW5jaWRlbnQgQ2FzZSB0byBjcmVhdGUuXHJcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIENhc2UuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUluY2lkZW50KGluY2lkZW50OiBJbmNpZGVudEZvckNyZWF0ZSk6IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2YWw+IHtcclxuICAgICAgICBpZiAoIXVzZXJJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgdXNlcklkYCB0byBub3QgYmUgbnVsbFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHsgaWQ6IGNyZWF0ZWRJbmNpZGVudElkIH0gPSBhd2FpdCBjcnVkU2VydmljZS5jcmVhdGUoXCJpbmNpZGVudHNcIiwgaW5jaWRlbnQsIENSRUFURV9JTkNJREVOVF9NRVRBREFUQSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZShcImluY2lkZW50c1wiLCBjcmVhdGVkSW5jaWRlbnRJZCwgUkVUUklFVkFMX0lOQ0lERU5UX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBDb250YWN0LlxyXG4gICAgICogQHBhcmFtIGNvbnRhY3QgQ29udGFjdCB0byBjcmVhdGUuXHJcbiAgICAgKiBAcmV0dXJucyBDcmVhdGVkIENvbnRhY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbnRhY3QoY29udGFjdDogQ29udGFjdEZvckNyZWF0ZSk6IFByb21pc2U8Q29udGFjdEZvclJldHJpZXZhbD4ge1xyXG4gICAgICAgIGlmICghdXNlcklkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGB1c2VySWRgIHRvIG5vdCBiZSBudWxsXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBpZDogY3JlYXRlZENvbnRhY3RJZCB9ID0gYXdhaXQgY3J1ZFNlcnZpY2UuY3JlYXRlKFwiY29udGFjdHNcIiwgY29udGFjdCwgQ1JFQVRFX0NPTlRBQ1RfTUVUQURBVEEpO1xyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmUoXCJjb250YWN0c1wiLCBjcmVhdGVkQ29udGFjdElkLCBSRVRSSUVWQUxfQ09OVEFDVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGEgQ2FzZS5cclxuICAgICAqIEBwYXJhbSBpbmNpZGVudElkIElkZW50aWZpZXIgb2YgdGhlIENhc2UgdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIHBhcnRpYWxVcGRhdGUgVXBkYXRlIHRvIHBlcmZvcm0uXHJcbiAgICAgKiBAcmV0dXJucyBVcGRhdGVkIGNhc2UuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUluY2lkZW50KFxyXG4gICAgICAgIGluY2lkZW50SWQ6IHN0cmluZyxcclxuICAgICAgICBwYXJ0aWFsVXBkYXRlOiBQYXJ0aWFsPEluY2lkZW50Rm9yVXBkYXRlPlxyXG4gICAgKTogUHJvbWlzZTxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+IHtcclxuICAgICAgICBpZiAoIWluY2lkZW50SWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYGluY2lkZW50aWRgIHRvIG5vdCBiZSBudWxsL2VtcHR5XCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgY3J1ZFNlcnZpY2UudXBkYXRlKFwiaW5jaWRlbnRzXCIsIGluY2lkZW50SWQsIHBhcnRpYWxVcGRhdGUsIFVQREFURV9JTkNJREVOVF9NRVRBREFUQSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZShcImluY2lkZW50c1wiLCBpbmNpZGVudElkLCBSRVRSSUVWQUxfSU5DSURFTlRfTUVUQURBVEEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBhIENvbnRhY3QuXHJcbiAgICAgKiBAcGFyYW0gY29udGFjdElkIElkZW50aWZpZXIgb2YgdGhlIENvbnRhY3QgdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIHBhcnRpYWxVcGRhdGUgVXBkYXRlIHRvIHBlcmZvcm0uXHJcbiAgICAgKiBAcmV0dXJucyBVcGRhdGVkIENvbnRhY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNvbnRhY3QoXHJcbiAgICAgICAgY29udGFjdElkOiBzdHJpbmcsXHJcbiAgICAgICAgcGFydGlhbFVwZGF0ZTogUGFydGlhbDxDb250YWN0Rm9yVXBkYXRlPlxyXG4gICAgKTogUHJvbWlzZTxDb250YWN0Rm9yUmV0cmlldmFsPiB7XHJcbiAgICAgICAgaWYgKCFjb250YWN0SWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYGNvbnRhY3RpZGAgdG8gbm90IGJlIG51bGwvZW1wdHlcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCBjcnVkU2VydmljZS51cGRhdGUoXCJjb250YWN0c1wiLCBjb250YWN0SWQsIHBhcnRpYWxVcGRhdGUsIFVQREFURV9DT05UQUNUX01FVEFEQVRBKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwiY29udGFjdHNcIiwgY29udGFjdElkLCBSRVRSSUVWQUxfQ09OVEFDVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGFuIEFjY291bnQuXHJcbiAgICAgKiBAcGFyYW0gYWNjb3VudElkIElkZW50aWZpZXIgb2YgdGhlIEFjY291bnQgdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIHBhcnRpYWxVcGRhdGUgVXBkYXRlIHRvIHBlcmZvcm0uXHJcbiAgICAgKiBAcmV0dXJucyBVcGRhdGVkIEFjY291bnQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUFjY291bnQoYWNjb3VudElkOiBzdHJpbmcsIGFjY291bnQ6IFBhcnRpYWw8QWNjb3VudEZvclVwZGF0ZT4pOiBQcm9taXNlPEFjY291bnQ+IHtcclxuICAgICAgICBpZiAoIWFjY291bnRJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBgYWNjb3VudGlkYCB0byBub3QgYmUgbnVsbC9lbXB0eVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IGNydWRTZXJ2aWNlLnVwZGF0ZShcImFjY291bnRzXCIsIGFjY291bnRJZCwgYWNjb3VudCwgQUNDT1VOVF9NRVRBREFUQSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZShcImFjY291bnRzXCIsIGFjY291bnRJZCwgQUNDT1VOVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIGFuIE9yZGVyLlxyXG4gICAgICogQHBhcmFtIG9yZGVySWQgSWRlbnRpZmllciBvZiB0aGUgT3JkZXIgdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIG9yZGVyIFVwZGF0ZSB0byBwZXJmb3JtLlxyXG4gICAgICogQHJldHVybnMgVXBkYXRlZCBPcmRlci5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlT3JkZXIob3JkZXJpZDogc3RyaW5nLCBvcmRlcjogUGFydGlhbDxPcmRlckZvclVwZGF0ZT4pOiBQcm9taXNlPE9yZGVyPiB7XHJcbiAgICAgICAgaWYgKCFvcmRlcmlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGBvcmRlcmlkYCB0byBub3QgYmUgbnVsbC9lbXB0eVwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IGNydWRTZXJ2aWNlLnVwZGF0ZShcInNhbGVzb3JkZXJzXCIsIG9yZGVyaWQsIG9yZGVyLCBPUkRFUl9NRVRBREFUQSk7XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZShcInNhbGVzb3JkZXJzXCIsIG9yZGVyaWQsIE9SREVSX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgYSBOZXR3b3JrIE9yZGVyLlxyXG4gICAgICogQHBhcmFtIG5ldHdvcmtPcmRlcklkIElkZW50aWZpZXIgb2YgdGhlIE5ldHdvcmsgT3JkZXIgdG8gdXBkYXRlLlxyXG4gICAgICogQHBhcmFtIG5ldHdvcmtPcmRlciBVcGRhdGUgdG8gcGVyZm9ybS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlTmV0d29ya09yZGVyKFxyXG4gICAgICAgIG5ldHdvcmtPcmRlcklkOiBzdHJpbmcsXHJcbiAgICAgICAgbmV0d29ya09yZGVyOiBQYXJ0aWFsPE5ldHdvcmtPcmRlckZvclVwZGF0ZT5cclxuICAgICk6IFByb21pc2U8TmV0d29ya09yZGVyRm9yUmV0cmlldmFsPiB7XHJcbiAgICAgICAgaWYgKCFuZXR3b3JrT3JkZXJJZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCAnbmV0d29ya09yZGVySWQnIHRvIG5vdCBiZSBudWxsL2VtcHR5XCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYXdhaXQgY3J1ZFNlcnZpY2UudXBkYXRlKFwiYmlzdGVjaF9uZXR3b3Jrb3JkZXJzXCIsIG5ldHdvcmtPcmRlcklkLCBuZXR3b3JrT3JkZXIsIFVQREFURV9ORVRXT1JLX09SREVSX01FVEFEQVRBKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwiYmlzdGVjaF9uZXR3b3Jrb3JkZXJzXCIsIG5ldHdvcmtPcmRlcklkLCBSRVRSSUVWQUxfTkVUV09SS19PUkRFUl9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuZCBzZW5kcyBhIFBvcnRhbCBDb21tZW50LlxyXG4gICAgICogQHBhcmFtIHBvcnRhbENvbW1lbnQgUG9ydGFsIENvbW1lbnQgdG8gc2VuZC5cclxuICAgICAqIEBwYXJhbSBlbnRpdHlUeXBlIExvZ2ljYWwgbmFtZSBvZiB0aGUgZW50aXR5IHRvIHdoaWNoIHRoZSBQb3J0YWwgQ29tbWVudCBpcyByZWxhdGVkLlxyXG4gICAgICogQHJldHVybnMgU2VudCBQb3J0YWwgQ29tbWVudC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gc2VuZFBvcnRhbENvbW1lbnQoXHJcbiAgICAgICAgcG9ydGFsQ29tbWVudDogUG9ydGFsQ29tbWVudEZvckNyZWF0ZSxcclxuICAgICAgICBlbnRpdHlUeXBlOiBcImluY2lkZW50XCIgfCBcImJpc3RlY2hfbmV0d29ya29yZGVyXCJcclxuICAgICk6IFByb21pc2U8UG9ydGFsQ29tbWVudEZvclJldHJpZXZhbD4ge1xyXG4gICAgICAgIGlmICghdXNlcklkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGB1c2VySWRgIHRvIG5vdCBiZSBudWxsXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBQb3J0YWwgQ29tbWVudFxyXG4gICAgICAgIGNvbnN0IHsgaWQ6IGNyZWF0ZWRQb3J0YWxDb21tZW50SWQgfSA9IGF3YWl0IGNydWRTZXJ2aWNlLmNyZWF0ZShcclxuICAgICAgICAgICAgXCJhZHhfcG9ydGFsY29tbWVudHNcIixcclxuICAgICAgICAgICAgcG9ydGFsQ29tbWVudCxcclxuICAgICAgICAgICAgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZW50aXR5VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbmNpZGVudFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ1JFQVRFX1BPUlRBTF9DT01NRU5UX0lOQ0lERU5UX01FVEFEQVRBO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYmlzdGVjaF9uZXR3b3Jrb3JkZXJcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENSRUFURV9QT1JUQUxfQ09NTUVOVF9ORVRXT1JLX09SREVSX01FVEFEQVRBO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSgpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gU2VuZCB0aGUgUG9ydGFsIENvbW1lbnRcclxuICAgICAgICBhd2FpdCBjcnVkU2VydmljZS51cGRhdGUoXHJcbiAgICAgICAgICAgIFwiYWR4X3BvcnRhbGNvbW1lbnRzXCIsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRQb3J0YWxDb21tZW50SWQsXHJcbiAgICAgICAgICAgIHsgc3RhdGVjb2RlOiBBY3Rpdml0eVN0YXRlQ29kZVtcIkNvbXBsZXRlZFwiXSwgc3RhdHVzY29kZTogUG9ydGFsQ29tbWVudFN0YXR1c0NvZGVbXCJTZW50XCJdIH0sXHJcbiAgICAgICAgICAgIFVQREFURV9QT1JUQUxfQ09NTUVOVF9NRVRBREFUQVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIFJldHJpZXZlIHRoZSB1cGRhdGVkIFBvcnRhbCBDb21tZW50XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFxyXG4gICAgICAgICAgICBcImFkeF9wb3J0YWxjb21tZW50c1wiLFxyXG4gICAgICAgICAgICBjcmVhdGVkUG9ydGFsQ29tbWVudElkLFxyXG4gICAgICAgICAgICAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnRpdHlUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImluY2lkZW50XCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSRVRSSUVWQUxfUE9SVEFMX0NPTU1FTlRfSU5DSURFTlRfTUVUQURBVEE7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJiaXN0ZWNoX25ldHdvcmtvcmRlclwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUkVUUklFVkFMX1BPUlRBTF9DT01NRU5UX05FVFdPUktfT1JERVJfTUVUQURBVEE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gYWxsb3cgdXNlcnMgdG8gYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgcG9wdWxhdGUgdGhlaXIgcmVjb3JkIGFuZCByZWRpcmVjdCB0aGVtLlxyXG4gICAgICogQHJldHVybnMgQWNjZXB0ZWQgZGF0ZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gc2V0UG9ydGFsVGVybXNPZkFncmVlbWVudERhdGUoKTogUHJvbWlzZTx7IGFjY2VwdGVkRGF0ZTogRGF0ZSB9PiB7XHJcbiAgICAgICAgaWYgKCF1c2VySWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYHVzZXJJZGAgdG8gbm90IGJlIG51bGxcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICBhd2FpdCBjcnVkU2VydmljZS51cGRhdGUoXHJcbiAgICAgICAgICAgIFwiY29udGFjdHNcIixcclxuICAgICAgICAgICAgdXNlcklkLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtc2R5bl9wb3J0YWx0ZXJtc2FncmVlbWVudGRhdGU6IG5vdy50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBVUERBVEVfVEVSTVNfQU5EX0NPTkRJVElPTlNfQ09OVEFDVF9NRVRBREFUQVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGFjY2VwdGVkRGF0ZTogbm93IH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgU2FsZXMgT3JkZXIgT3JkZXIgRm9ybSBmcm9tIER5bmFtaWNzIDM2NS5cclxuICAgICAqIEBwYXJhbSBvcmRlcmZvcm1pZCBUaGUgSUQgb2YgdGhlIE9yZGVyIEZvcm0uXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgU2FsZXMgT3JkZXIgT3JkZXIgRm9ybS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcmRlckZvcm1JbmZvKG9yZGVyZm9ybWlkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIW9yZGVyZm9ybWlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGBvcmRlcmZvcm1pZGAgdG8gbm90IGJlIG51bGwvZW1wdHlcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmUoXCJiaXN0ZWNoX29yZGVyZm9ybXNcIiwgb3JkZXJmb3JtaWQsIE9SREVSRk9STV9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgT3BlbiwgSW4gUHJvZ3Jlc3MsIE9uLUhvbGQsIFBlbmRpbmcgQ3VzdG9tZXIgRmVlZGJhY2ssIENsb3N1cmUgUmVxdWVzdGVkIGFuZCBSZXNvbHZlZCBDYXNlcy5cclxuICAgICAqIEByZXR1cm5zIEFjdGl2ZSBDYXNlcy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVBY3RpdmVJbmNpZGVudHMoKTogUHJvbWlzZTxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnM6IENvbmRpdGlvbkV4cHJlc3Npb248SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPltdID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGUuQ2xvc2VkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGUuQ2FuY2VsbGVkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGUuTWVyZ2VkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZU11bHRpcGxlKFwiaW5jaWRlbnRzXCIsIFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBLCBmaWx0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhIHNwZWNpZmljIENhc2UuXHJcbiAgICAgKiBAcGFyYW0gaW5jaWRlbnRJZCBJZGVudGlmaWVyIG9mIHRoZSBDYXNlIHRvIHJldHJpZXZlLlxyXG4gICAgICogQHJldHVybnMgQ2FzZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVJbmNpZGVudChpbmNpZGVudElkOiBzdHJpbmcpOiBQcm9taXNlPEluY2lkZW50Rm9yUmV0cmlldmFsPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwiaW5jaWRlbnRzXCIsIGluY2lkZW50SWQsIFJFVFJJRVZBTF9JTkNJREVOVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBDb250YWN0LlxyXG4gICAgICogQHBhcmFtIGNvbnRhY3RJZCBJZGVudGlmaWVyIG9mIHRoZSBDb250YWN0IHRvIHJldHJpZXZlLlxyXG4gICAgICogQHJldHVybnMgQ29udGFjdC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVDb250YWN0KGNvbnRhY3RJZDogc3RyaW5nKTogUHJvbWlzZTxDb250YWN0Rm9yUmV0cmlldmFsPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwiY29udGFjdHNcIiwgY29udGFjdElkLCBSRVRSSUVWQUxfQ09OVEFDVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBPcmRlci5cclxuICAgICAqIEBwYXJhbSBzYWxlc09yZGVySWQgSWRlbnRpZmllciBvZiB0aGUgT3JkZXIgdG8gcmV0cmlldmUuXHJcbiAgICAgKiBAcmV0dXJucyBPcmRlci5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcmRlcihzYWxlc09yZGVySWQ6IHN0cmluZyk6IFByb21pc2U8T3JkZXI+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmUoXCJzYWxlc29yZGVyc1wiLCBzYWxlc09yZGVySWQsIE9SREVSX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBhIHNwZWNpZmljIEludm9pY2UuXHJcbiAgICAgKiBAcGFyYW0gaW52b2ljZUlkIElkZW50aWZpZXIgb2YgdGhlIEludm9pY2UgdG8gcmV0cmlldmUuXHJcbiAgICAgKiBAcmV0dXJucyBJbnZvaWNlLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZUludm9pY2UoaW52b2ljZUlkOiBzdHJpbmcpOiBQcm9taXNlPEludm9pY2U+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmUoXCJpbnZvaWNlc1wiLCBpbnZvaWNlSWQsIElOVk9JQ0VfTUVUQURBVEEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIGEgc3BlY2lmaWMgTmV0d29yayBPcmRlci5cclxuICAgICAqIEBwYXJhbSBuZXR3b3JrT3JkZXJJZCBJZGVudGlmaWVyIG9mIHRoZSBOZXR3b3JrIE9yZGVyIHRvIHJldHJpZXZlLlxyXG4gICAgICogQHJldHVybnMgTmV0d29yayBPcmRlci5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVOZXR3b3JrT3JkZXIobmV0d29ya09yZGVySWQ6IHN0cmluZyk6IFByb21pc2U8TmV0d29ya09yZGVyRm9yUmV0cmlldmFsPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwiYmlzdGVjaF9uZXR3b3Jrb3JkZXJzXCIsIG5ldHdvcmtPcmRlcklkLCBSRVRSSUVWQUxfTkVUV09SS19PUkRFUl9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgYSBzcGVjaWZpYyBDdXN0b21lciBBc3NldC5cclxuICAgICAqIEBwYXJhbSBjdXN0b21lckFzc2V0SWQgSWRlbnRpZmllciBvZiB0aGUgQ3VzdG9tZXIgQXNzZXQgdG8gcmV0cmlldmUuXHJcbiAgICAgKiBAcmV0dXJucyBDdXN0b21lciBBc3NldC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVDdXN0b21lckFzc2V0KGN1c3RvbWVyQXNzZXRJZDogc3RyaW5nKTogUHJvbWlzZTxDdXN0b21lckFzc2V0PiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlKFwibXNkeW5fY3VzdG9tZXJhc3NldHNcIiwgY3VzdG9tZXJBc3NldElkLCBDVVNUT01FUl9BU1NFVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgTWFqb3IgSW5jaWRlbnRzIHRoYXQgaGF2ZSBiZWVuIHJlc29sdmVkIHRvZGF5LlxyXG4gICAgICogQHJldHVybnMgTWFqb3IgSW5jaWRlbnRzIHJlc29sdmVkIHRvZGF5LlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZVJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cygpOiBQcm9taXNlPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyczogQ29uZGl0aW9uRXhwcmVzc2lvbjxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+W10gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJzdGF0dXNjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJlcVwiLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZS5SZXNvbHZlZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiBcImNhc2V0eXBlY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXFcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwiYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZ3RcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBEYXRlSGVscGVyLmdldE1pZG5pZ2h0VG9kYXkoKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwiYmlzdGVjaF9yZXNvbHV0aW9uZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibHRcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBEYXRlSGVscGVyLmdldE1pZG5pZ2h0VG9tb3Jyb3coKS50b0lTT1N0cmluZygpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZU11bHRpcGxlKFwiaW5jaWRlbnRzXCIsIFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBLCBmaWx0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBDbG9zZWQgYW5kIE1lcmdlZCBDYXNlcy5cclxuICAgICAqIEByZXR1cm5zIENsb3NlZCBhbmQgTWVyZ2VkIENhc2VzLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZUNsb3NlZEluY2lkZW50cygpOiBQcm9taXNlPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyczogQ29uZGl0aW9uRXhwcmVzc2lvbjxJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+W10gPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJzdGF0dXNjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJuZVwiLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZS5PcGVuLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwiY2FzZXR5cGVjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJuZVwiLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IENhc2VUeXBlW1wiTWFqb3IgSW5jaWRlbnRcIl0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJzdGF0dXNjb2RlXCIsXHJcbiAgICAgICAgICAgICAgICBvcGVyYXRvcjogXCJuZVwiLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IEluY2lkZW50U3RhdHVzQ29kZVtcIkluIFByb2dyZXNzXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJPbiBIb2xkXCJdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6IFwic3RhdHVzY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwibmVcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJDbG9zdXJlIFJlcXVlc3RlZFwiXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiBcInN0YXR1c2NvZGVcIixcclxuICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBcIm5lXCIsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogSW5jaWRlbnRTdGF0dXNDb2RlLlJlc29sdmVkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZU11bHRpcGxlKFwiaW5jaWRlbnRzXCIsIFJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBLCBmaWx0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBBY2NvdW50cy5cclxuICAgICAqIEByZXR1cm5zIFJldHJpZXZlZCBBY2NvdW50cy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVBY2NvdW50cygpOiBQcm9taXNlPEFjY291bnRbXT4ge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZU11bHRpcGxlKFwiYWNjb3VudHNcIiwgQUNDT1VOVF9NRVRBREFUQSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgQ29udGFjdHMuXHJcbiAgICAgKiBAcmV0dXJucyBSZXRyaWV2ZWQgQ29udGFjdHMuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlQ29udGFjdHMoKTogUHJvbWlzZTxDb250YWN0Rm9yUmV0cmlldmFsW10+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcImNvbnRhY3RzXCIsIFJFVFJJRVZBTF9DT05UQUNUX01FVEFEQVRBKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHJpZXZlcyBQcm9kdWN0cyBmb3IgdGhlIGN1cnJlbnQgdXNlcidzIEFjY291bnQsIHZpYSB0aGUgYWN0aXZlIEN1c3RvbWVyIEFzc2V0cy5cclxuICAgICAqIEByZXR1cm5zIFJldHJpZXZlcyBQcm9kdWN0cyBmb3IgdGhlIGN1cnJlbnQgdXNlcidzIEFjY291bnQsIHZpYSB0aGUgYWN0aXZlIEN1c3RvbWVyIEFzc2V0cy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQcm9kdWN0cygpOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcnM6IENvbmRpdGlvbkV4cHJlc3Npb248Q3VzdG9tZXJBc3NldD5bXSA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlOiBcInN0YXRlY29kZVwiLFxyXG4gICAgICAgICAgICAgICAgb3BlcmF0b3I6IFwiZXFcIixcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBDdXN0b21lckFzc2V0U3RhdGVDb2RlLkFjdGl2ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICBjb25zdCBjdXN0b21lckFzc2V0cyA9IGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlTXVsdGlwbGUoXHJcbiAgICAgICAgICAgIFwibXNkeW5fY3VzdG9tZXJhc3NldHNcIixcclxuICAgICAgICAgICAgQ1VTVE9NRVJfQVNTRVRfTUVUQURBVEEsXHJcbiAgICAgICAgICAgIGZpbHRlcnNcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gY3VzdG9tZXJBc3NldHMuZmxhdE1hcCgoY3VzdG9tZXJBc3NldCkgPT4gY3VzdG9tZXJBc3NldC5tc2R5bl9wcm9kdWN0KS5maWx0ZXIoKHByb2R1Y3QpID0+IHByb2R1Y3QpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIE9yZGVycyBmb3IgdGhlIGN1cnJlbnQgdXNlcidzIEFjY291bnQsIHZpYSB0aGUgYWN0aXZlIE9yZGVycy5cclxuICAgICAqIEByZXR1cm5zIE9yZGVycyBmb3IgdGhlIGN1cnJlbnQgdXNlcidzIEFjY291bnQsIHZpYSB0aGUgYWN0aXZlIE9yZGVycy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVPcmRlcnMoKTogUHJvbWlzZTxPcmRlcltdPiB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXJzID0gKGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlTXVsdGlwbGU8T3JkZXI+KFwic2FsZXNvcmRlcnNcIiwgT1JERVJfTUVUQURBVEEpKS5tYXAoKG9yZGVyKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBPcmRlciBpcyBub3QgeWV0IFNpZ25lZCwgT3JkZXIgTGluZXMgd2lsbCBub3QgaGF2ZSBzeW5jZWQsXHJcbiAgICAgICAgICAgIC8vIHNvIG51bGxpZnkgYWxsIGZpbmFuY2lhbCBhbW91bnRzIGFzIHRoZXNlIHdpbGwgbGlrZWx5IGJlIGluY29ycmVjdFxyXG4gICAgICAgICAgICBpZiAob3JkZXIuc3RhdHVzY29kZSA9PT0gT3JkZXJTdGF0dXNDb2RlLk5ldyB8fCBvcmRlci5zdGF0dXNjb2RlID09PSBPcmRlclN0YXR1c0NvZGUuUGVuZGluZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIHRvdGFsbGluZWl0ZW1hbW91bnQ6IG51bGwsIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogbnVsbCB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgemVybyBPcmRlciBMaW5lcywgbnVsbGlmeSBhbGwgZmluYW5jaWFsIGFtb3VudHMgYXMgdGhlc2VcclxuICAgICAgICAgICAgLy8gd2lsbCBsaWtlbHkgYmUgaW5jb3JyZWN0XHJcbiAgICAgICAgICAgIGlmIChvcmRlci5vcmRlcl9kZXRhaWxzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIHRvdGFsbGluZWl0ZW1hbW91bnQ6IG51bGwsIGJpc3RlY2hfdG90YWxhbm51YWxwcmljZTogbnVsbCB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gb3JkZXI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvcmRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgSW52b2ljZXMgZm9yIHRoZSBjdXJyZW50IHVzZXIncyBBY2NvdW50LCB2aWEgdGhlIGFjdGl2ZSBJbnZvaWNlcy5cclxuICAgICAqIEByZXR1cm5zIEludm9pY2VzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudCwgdmlhIHRoZSBhY3RpdmUgSW52b2ljZXMuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlSW52b2ljZXMoKTogUHJvbWlzZTxJbnZvaWNlW10+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcImludm9pY2VzXCIsIElOVk9JQ0VfTUVUQURBVEEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIE5ldHdvcmsgT3JkZXJzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudCwgdmlhIHRoZSBhY3RpdmUgTmV0d29yayBPcmRlcnMuXHJcbiAgICAgKiBAcmV0dXJucyBOZXR3b3JrIE9yZGVycyBmb3IgdGhlIGN1cnJlbnQgdXNlcidzIEFjY291bnQsIHZpYSB0aGUgYWN0aXZlIE5ldHdvcmsgT3JkZXJzLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZU5ldHdvcmtPcmRlcnMoKTogUHJvbWlzZTxOZXR3b3JrT3JkZXJGb3JSZXRyaWV2ZU11bHRpcGxlW10+IHtcclxuICAgICAgICBjb25zdCBuZXR3b3JrT3JkZXJzID0gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcclxuICAgICAgICAgICAgXCJiaXN0ZWNoX25ldHdvcmtvcmRlcnNcIixcclxuICAgICAgICAgICAgUkVUUklFVkVfTVVMVElQTEVfTkVUV09SS19PUkRFUl9NRVRBREFUQVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXR3b3JrT3JkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIFByb2plY3RzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudC5cclxuICAgICAqIEByZXR1cm5zIFByb2plY3RzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQcm9qZWN0cygpOiBQcm9taXNlPFByb2plY3RbXT4ge1xyXG4gICAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcIm1zZHluX3Byb2plY3RzXCIsIFBST0pFQ1RfTUVUQURBVEEpO1xyXG5cclxuICAgICAgICByZXR1cm4gcHJvamVjdHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRyaWV2ZXMgQ3VzdG9tZXIgQXNzZXRzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudCwgdmlhIHRoZSBhY3RpdmUgQ3VzdG9tZXIgQXNzZXRzLlxyXG4gICAgICogQHJldHVybnMgQ3VzdG9tZXIgQXNzZXRzIGZvciB0aGUgY3VycmVudCB1c2VyJ3MgQWNjb3VudC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVDdXN0b21lckFzc2V0cygpOiBQcm9taXNlPEN1c3RvbWVyQXNzZXRbXT4ge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbWVyQXNzZXRzID0gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcIm1zZHluX2N1c3RvbWVyYXNzZXRzXCIsIENVU1RPTUVSX0FTU0VUX01FVEFEQVRBKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbWVyQXNzZXRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBQb3J0YWwgTWFqb3IgSW5jaWRlbnQgVXBkYXRlcy5cclxuICAgICAqIEBSZXR1cm5zIFBvcnRhbCBNYWpvciBJbmNpZGVudCBVcGRhdGVzLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiByZXRyaWV2ZVBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzUmVnYXJkaW5nQWN0aXZlQW5kUmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzKCk6IFByb21pc2U8XHJcbiAgICAgICAgUG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZVtdXHJcbiAgICA+IHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgY3J1ZFNlcnZpY2UucmV0cmlldmVNdWx0aXBsZShcclxuICAgICAgICAgICAgXCJiaXN0ZWNoX3BvcnRhbG1ham9yaW5jaWRlbnR1cGRhdGVzXCIsXHJcbiAgICAgICAgICAgIFBPUlRBTF9NQUpPUl9JTkNJREVOVF9VUERBVEVfTUVUQURBVEFcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBQb3J0YWwgSW52aXRhdGlvbnMgcmVsYXRlZCB0byBhIENvbnRhY3QuXHJcbiAgICAgKiBAcGFyYW0gY29udGFjdElkIFRoZSBJZCBvZiB0aGUgQ29udGFjdC5cclxuICAgICAqIEByZXR1cm5zIFRoZSByZWxhdGVkIFBvcnRhbCBJbnZpdGF0aW9ucy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQb3J0YWxJbnZpdGF0aW9ucyhjb250YWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UG9ydGFsSW52aXRhdGlvbltdPiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyczogQ29uZGl0aW9uRXhwcmVzc2lvbjxQb3J0YWxJbnZpdGF0aW9uPltdID0gW1xyXG4gICAgICAgICAgICB7IGF0dHJpYnV0ZTogXCJfYWR4X2ludml0ZWNvbnRhY3RfdmFsdWVcIiwgb3BlcmF0b3I6IFwiZXFcIiwgdmFsdWU6IGNvbnRhY3RJZCB9LFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiBhd2FpdCBjcnVkU2VydmljZS5yZXRyaWV2ZU11bHRpcGxlKFwiYWR4X2ludml0YXRpb25zXCIsIFBPUlRBTF9JTlZJVEVfTUVUQURBVEEsIGZpbHRlcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0cmlldmVzIHRoZSBCbG9nIFBvc3QgcmVjb3JkcyBmcm9tIER5bmFtaWNzIDM2NS5cclxuICAgICAqIEBwYXJhbSB1cmwgVGhlIFVybCBvZiB0aGUgQmxvZyBQb3N0LlxyXG4gICAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgQmxvZyBQb3N0cy5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVCbG9nUG9zdFJlY29yZHMoKTogUHJvbWlzZTxCbG9nUG9zdFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLnJldHJpZXZlTXVsdGlwbGUoXCJiaXN0ZWNoX2Jsb2dwb3N0c1wiLCBCTE9HX1BPU1RfTUVUQURBVEEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZHMgdXNlciBmZWVkYmFjayBmcm9tIHRoZSBmZWVkYmFjayBwYW5lIHRvIHRoZSBwb3J0YWxhY3Rpb25zIGVuZHBvaW50LlxyXG4gICAgICogQHBhcmFtIGZlZWRiYWNrRGVzY3JpcHRpb24gQ29udGVudCBvZiB0aGUgZmVlZGJhY2suXHJcbiAgICAgKiBAcGFyYW0gZmVlZGJhY2tDYXRlZ29yeSBUeXBlIG9mIGZlZWRiYWNrLlxyXG4gICAgICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBvcGVyYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVGZWVkYmFja1BvcnRhbEFjdGlvbihcclxuICAgICAgICBmZWVkYmFja0Rlc2NyaXB0aW9uOiBzdHJpbmcsXHJcbiAgICAgICAgZmVlZGJhY2tDYXRlZ29yeTogRmVlZGJhY2tDYXRlZ29yeVxyXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgYXdhaXQgY3J1ZFNlcnZpY2UuZXhlY3V0ZUZlZWRiYWNrUG9ydGFsQWN0aW9uKGZlZWRiYWNrRGVzY3JpcHRpb24sIGZlZWRiYWNrQ2F0ZWdvcnkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVxdWVzdHMgY2xvc3VyZSBmb3IgdGhlIHNwZWNpZmllZCBDYXNlLlxyXG4gICAgICogQHBhcmFtIGluY2lkZW50SWQgSUQgb2YgdGhlIENhc2UgZm9yIHdoaWNoIHRvIHJlcXVlc3QgY2xvc3VyZS5cclxuICAgICAqIEByZXR1cm5zIFVwZGF0ZWQgQ2FzZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVJlcXVlc3RDbG9zdXJlUG9ydGFsQWN0aW9uKGluY2lkZW50SWQ6IHN0cmluZyk6IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLmV4ZWN1dGVSZXF1ZXN0Q2xvc3VyZVBvcnRhbEFjdGlvbihpbmNpZGVudElkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcXVlc3RzIHJlLW9wZW4gZm9yIHRoZSBzcGVjaWZpZWQgQ2FzZS5cclxuICAgICAqIEBwYXJhbSBpbmNpZGVudElkIElEIG9mIHRoZSBDYXNlIGZvciB3aGljaCB0byByZXF1ZXN0IHJlLW9wZW5pbmcuXHJcbiAgICAgKiBAcmV0dXJucyBVcGRhdGVkIENhc2UuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVSZXF1ZXN0UmVvcGVuUG9ydGFsQWN0aW9uKGluY2lkZW50SWQ6IHN0cmluZyk6IFByb21pc2U8SW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLmV4ZWN1dGVSZXF1ZXN0UmVvcGVuUG9ydGFsQWN0aW9uKGluY2lkZW50SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VuZHMgYSBQb3J0YWwgSW52aXRhdGlvbiB0byB0aGUgQ29udGFjdC5cclxuICAgICAqIEBwYXJhbSBjb250YWN0SWQgQ29udGFjdCB0byBpbnZpdGUuXHJcbiAgICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIG9wZXJhdGlvbi5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVNlbmRJbnZpdGF0aW9uUG9ydGFsQWN0aW9uKGNvbnRhY3RJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGNydWRTZXJ2aWNlLmV4ZWN1dGVTZW5kSW52aXRhdGlvblBvcnRhbEFjdGlvbihjb250YWN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgY3JlYXRlSW5jaWRlbnQsXHJcbiAgICAgICAgdXBkYXRlSW5jaWRlbnQsXHJcbiAgICAgICAgY3JlYXRlQ29udGFjdCxcclxuICAgICAgICB1cGRhdGVDb250YWN0LFxyXG4gICAgICAgIHVwZGF0ZUFjY291bnQsXHJcbiAgICAgICAgdXBkYXRlT3JkZXIsXHJcbiAgICAgICAgc2VuZFBvcnRhbENvbW1lbnQsXHJcbiAgICAgICAgc2V0UG9ydGFsVGVybXNPZkFncmVlbWVudERhdGUsXHJcbiAgICAgICAgZXhlY3V0ZUZlZWRiYWNrUG9ydGFsQWN0aW9uLFxyXG4gICAgICAgIGV4ZWN1dGVSZXF1ZXN0Q2xvc3VyZVBvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbixcclxuICAgICAgICBleGVjdXRlU2VuZEludml0YXRpb25Qb3J0YWxBY3Rpb24sXHJcbiAgICAgICAgcmV0cmlldmVPcmRlckZvcm1JbmZvLFxyXG4gICAgICAgIHJldHJpZXZlQWN0aXZlSW5jaWRlbnRzLFxyXG4gICAgICAgIHJldHJpZXZlQ2xvc2VkSW5jaWRlbnRzLFxyXG4gICAgICAgIHVwZGF0ZU5ldHdvcmtPcmRlcixcclxuICAgICAgICByZXRyaWV2ZUluY2lkZW50LFxyXG4gICAgICAgIHJldHJpZXZlQ29udGFjdCxcclxuICAgICAgICByZXRyaWV2ZU9yZGVyLFxyXG4gICAgICAgIHJldHJpZXZlSW52b2ljZSxcclxuICAgICAgICByZXRyaWV2ZU5ldHdvcmtPcmRlcixcclxuICAgICAgICByZXRyaWV2ZUN1c3RvbWVyQXNzZXQsXHJcbiAgICAgICAgcmV0cmlldmVBY2NvdW50cyxcclxuICAgICAgICByZXRyaWV2ZUNvbnRhY3RzLFxyXG4gICAgICAgIHJldHJpZXZlUHJvZHVjdHMsXHJcbiAgICAgICAgcmV0cmlldmVPcmRlcnMsXHJcbiAgICAgICAgcmV0cmlldmVJbnZvaWNlcyxcclxuICAgICAgICByZXRyaWV2ZU5ldHdvcmtPcmRlcnMsXHJcbiAgICAgICAgcmV0cmlldmVQcm9qZWN0cyxcclxuICAgICAgICByZXRyaWV2ZUN1c3RvbWVyQXNzZXRzLFxyXG4gICAgICAgIHJldHJpZXZlUG9ydGFsSW52aXRhdGlvbnMsXHJcbiAgICAgICAgcmV0cmlldmVSZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMsXHJcbiAgICAgICAgcmV0cmlldmVQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlc1JlZ2FyZGluZ0FjdGl2ZUFuZFJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cyxcclxuICAgICAgICByZXRyaWV2ZUJsb2dQb3N0UmVjb3JkcyxcclxuICAgIH07XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi91c2VBcHBJbnNpZ2h0c1wiO1xyXG5pbXBvcnQgeyB1c2VEYXRhU2VydmljZSB9IGZyb20gXCIuL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5cclxuLyoqIFJlYWN0IGhvb2sgd2hpY2ggd2lsbCByZXRyaWV2ZSBjbG9zZWQgY2FzZXMgYXMgd2Ugb25seSB3YW50IHRvIHJldHJpZXZlIHRoZXNlIGluIGNlcnRhaW4gc2NlbmFyaW9zLiAqL1xyXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VkQ2FzZXMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IGluY2lkZW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuaW5jaWRlbnRzKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gdXNlRGF0YVNlcnZpY2UoKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhIH0gPSB1c2VBcHBJbnNpZ2h0cygpO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBjbG9zZWQgQ2FzZXNcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgLy8gSWYgdW5hdXRoZW50aWNhdGVkXHJcbiAgICAgICAgICAgIGlmICghdXNlck1ldGFkYXRhLmNvbnRhY3RJZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBpbmNpZGVudHMuY2xvc2VkSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgfHxcclxuICAgICAgICAgICAgICAgIGluY2lkZW50cy5jbG9zZWRJbmNpZGVudHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRDbG9zZWRJbmNpZGVudHNcIiwgY2xvc2VkSW5jaWRlbnRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfSk7XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGRhdGFTZXJ2aWNlLnJldHJpZXZlQ2xvc2VkSW5jaWRlbnRzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0Q2xvc2VkSW5jaWRlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VkSW5jaWRlbnRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGEgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcclxuICAgICAgICAgICAgICAgIHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YT8uKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKCk7XHJcbiAgICB9LCBbZGF0YVNlcnZpY2UsIGRpc3BhdGNoLCBpbmNpZGVudHMsIHVzZXJNZXRhZGF0YS5jb250YWN0SWRdKTtcclxufTtcclxuIiwiaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgTGluayB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VUeXBlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9JbmNpZGVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVByaW9yaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUHJpb3JpdHlDb2RlXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuLi9IZWxwZXJzL0RhdGVIZWxwZXJcIjtcclxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IE1hbmFnZW1lbnRQYW5lbCB9IGZyb20gXCIuLi9Db21wb25lbnRzL01hbmFnZW1lbnRQYW5lbFwiO1xyXG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9UYWJsZUhlYWRlckNlbGxcIjtcclxuaW1wb3J0IHsgZ2V0Q2FzZVRhYmxlSGVhZGVyQ2VsbHMgfSBmcm9tIFwiLi4vRGF0YS9nZXRDYXNlVGFibGVIZWFkZXJDZWxsc1wiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBEYXRlU2luY2UgfSBmcm9tIFwiLi4vRW51bXMvRGF0ZVNpbmNlXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBDb250YWN0U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgdXNlQ2xvc2VkQ2FzZXMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQ2xvc2VkQ2FzZXNcIjtcclxuaW1wb3J0IHsgQWR2YW5jZWRGaWx0ZXIgfSBmcm9tIFwiLi9DYXNlc1wiO1xyXG5pbXBvcnQgeyBQQUdFUyB9IGZyb20gXCIuLi9Ib29rcy91c2VQYWdlTmF2aWdhdGlvblwiO1xyXG5cclxuLyogQ29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIENhc2VzIENsb3NlZCBQYWdlICovXHJcbmV4cG9ydCBjb25zdCBDYXNlc0Nsb3NlZDogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICB1c2VDbG9zZWRDYXNlcygpO1xyXG4gICAgY29uc3QgaW5jaWRlbnRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pbmNpZGVudHMpO1xyXG4gICAgY29uc3QgY29udGFjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmNvbnRhY3RzKTtcclxuXHJcbiAgICAvLyBMb2NhbCBzdGF0ZSB1c2VkIGZvciB0aGUgdGFibGUgc29ydGluZy5cclxuICAgIGNvbnN0IFtzb3J0ZWRDb2x1bW4sIHNldFNvcnRlZENvbHVtbl0gPSB1c2VTdGF0ZTxrZXlvZiBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGU+KFwiY3JlYXRlZG9uXCIpO1xyXG4gICAgY29uc3QgW2lzU29ydGVkQXNjZW5kaW5nLCBzZXRJc1NvcnRlZEFzY2VuZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgdGhlIFNlYXJjaCBCYXJcclxuICAgIGNvbnN0IFtzZWFyY2hCYXJDb250ZW50LCBzZXRTZWFyY2hCYXJDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgYWR2YW5jZWQgZmlsdGVycy5cclxuICAgIGNvbnN0IFthZHZhbmNlZFNlYXJjaEZpbHRlcnMsIHNldEFkdmFuY2VkU2VhcmNoRmlsdGVyc10gPSB1c2VTdGF0ZTxBZHZhbmNlZEZpbHRlcj4oe1xyXG4gICAgICAgIHNlbGVjdGVkQ2FzZVR5cGVzOiBbXSxcclxuICAgICAgICBzZWxlY3RlZEluY2lkZW50U3RhdHVzZXM6IFtdLFxyXG4gICAgICAgIGNyZWF0ZWRCeTogXCJcIixcclxuICAgICAgICBkYXRlUmFuZ2U6IHsgdmFsdWU6IG51bGwsIGZyb206IG51bGwsIHRvOiBudWxsIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHF1ZXJpZWQgQ3JlYXRlZEJ5IHZhbHVlIGluIHRoZSBBZHZhbmNlZCBGaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IGNyZWF0ZWRCeUlkIFRoZSBDb250YWN0IHRoYXQgY3JlYXRlZCB0aGUgSW5jaWRlbnQuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHVwZGF0ZUNyZWF0ZWRCeUNvbnRhY3QgPSAoY3JlYXRlZEJ5SWQ6IHN0cmluZyB8IG51bGwpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgY3JlYXRlZEJ5SWQgaXMgYWxyZWFkeSBudWxsLCByZW1vdmUgaXQuXHJcbiAgICAgICAgaWYgKCFjcmVhdGVkQnlJZCkge1xyXG4gICAgICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5wcmV2aW91c1N0YXRlLFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiBcIlwiLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVsc2U7IFVwZGF0ZSB0aGUgQ3JlYXRlZEJ5IGZpbHRlci5cclxuICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogY3JlYXRlZEJ5SWQsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHF1ZXJpZWQgQ2FzZVR5cGUgdmFsdWVzIGluIHRoZSBBZHZhbmNlZCBGaWx0ZXIuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIENhc2VUeXBlIGVudW0uXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHVwZGF0ZVNlbGVjdGVkQ2FzZVR5cGVzID0gKGtleTogc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2FzZVR5cGVzOiBbXSxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjYXNlRW51bVZhbHVlID0gQ2FzZVR5cGVba2V5IGFzIGtleW9mIHR5cGVvZiBDYXNlVHlwZV07XHJcblxyXG4gICAgICAgIGlmICghY2FzZUVudW1WYWx1ZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2tleX0nIGZpbHRlciB2YWx1ZSBmb3IgdGhlIENhc2UgVHlwZSBmaWx0ZXIgaXMgbm90IGltcGxlbWVudGVkYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB0aGUga2V5IGlzIGFscmVhZHkgaW4gdGhlIENhc2VUeXBlIGxpc3QsIHJlbW92ZSBpdC5cclxuICAgICAgICBpZiAoYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkQ2FzZVR5cGVzLmluY2x1ZGVzKGNhc2VFbnVtVmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHNldEFkdmFuY2VkU2VhcmNoRmlsdGVycygocHJldmlvdXNTdGF0ZSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENhc2VUeXBlczogWy4uLmFkdmFuY2VkU2VhcmNoRmlsdGVycy5zZWxlY3RlZENhc2VUeXBlc10uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtICE9PSBjYXNlRW51bVZhbHVlXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEVsc2U7IEFkZCBDYXNlVHlwZSB0byB0aGUgbGlzdC5cclxuICAgICAgICBzZXRBZHZhbmNlZFNlYXJjaEZpbHRlcnMoKHByZXZpb3VzU3RhdGUpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkQ2FzZVR5cGVzOiBbLi4uYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkQ2FzZVR5cGVzLCBjYXNlRW51bVZhbHVlXSxcclxuICAgICAgICB9KSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyB0aGUgcXVlcmllZCBEYXRlU2luY2UgdmFsdWUgaW4gdGhlIEFkdmFuY2VkIEZpbHRlci5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU2luY2UgVGhlIERhdGUgU2luY2UgY3JlYXRpb24gb2YgdGhlIEluY2lkZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdCB1cGRhdGVDcmVhdGVkT25EYXRlID0gKGRhdGVTaW5jZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmICghZGF0ZVNpbmNlKSB7XHJcbiAgICAgICAgICAgIHNldEFkdmFuY2VkU2VhcmNoRmlsdGVycygocHJldmlvdXNTdGF0ZSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIC4uLnByZXZpb3VzU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBkYXRlUmFuZ2U6IHsgdmFsdWU6IG51bGwsIGZyb206IG51bGwsIHRvOiBudWxsIH0sXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZnJvbURhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGxldCB0b0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIHRpbWUgb2YgZnJvbSBhbmQgdG8gdG8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGRheSAocmVzcGVjdGl2ZWx5KS5cclxuICAgICAgICBmcm9tRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgICAgICB0b0RhdGUuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KTtcclxuXHJcbiAgICAgICAgLy8gU2V0cyB0aGUgZnJvbURhdGUgYW5kIHRvRGF0ZSBiYXNlZCBvbiB0aGUgZW51bSBUeXBlLlxyXG4gICAgICAgIHN3aXRjaCAoRGF0ZVNpbmNlW2RhdGVTaW5jZSBhcyBrZXlvZiB0eXBlb2YgRGF0ZVNpbmNlXSkge1xyXG4gICAgICAgICAgICBjYXNlIERhdGVTaW5jZS5Ub2RheTpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBEYXRlU2luY2UuWWVzdGVyZGF5OlxyXG4gICAgICAgICAgICAgICAgZnJvbURhdGUuc2V0RGF0ZShmcm9tRGF0ZS5nZXREYXRlKCkgLSAxKTtcclxuICAgICAgICAgICAgICAgIHRvRGF0ZS5zZXREYXRlKHRvRGF0ZS5nZXREYXRlKCkgLSAxKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBEYXRlU2luY2VbXCJUaGlzIFdlZWtcIl06XHJcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZS5zZXREYXRlKGZyb21EYXRlLmdldERhdGUoKSAtIGZyb21EYXRlLmdldERheSgpKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBEYXRlU2luY2VbXCJUaGlzIE1vbnRoXCJdOlxyXG4gICAgICAgICAgICAgICAgZnJvbURhdGUgPSBuZXcgRGF0ZShmcm9tRGF0ZS5nZXRGdWxsWWVhcigpLCBmcm9tRGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBEYXRlU2luY2VbXCJUaGlzIFllYXJcIl06XHJcbiAgICAgICAgICAgICAgICBmcm9tRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtkYXRlU2luY2V9JyBmaWx0ZXIgdmFsdWUgZm9yIHRoZSBDcmVhdGVkIE9uIGZpbHRlciBpcyBub3QgaW1wbGVtZW50ZWRgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNldCB0aGUgZGF0ZSByYW5nZSBvYmplY3QuXHJcbiAgICAgICAgc2V0QWR2YW5jZWRTZWFyY2hGaWx0ZXJzKChwcmV2aW91c1N0YXRlKSA9PiAoe1xyXG4gICAgICAgICAgICAuLi5wcmV2aW91c1N0YXRlLFxyXG4gICAgICAgICAgICBkYXRlUmFuZ2U6IHsgdmFsdWU6IERhdGVTaW5jZVtkYXRlU2luY2UgYXMga2V5b2YgdHlwZW9mIERhdGVTaW5jZV0sIGZyb206IGZyb21EYXRlLCB0bzogdG9EYXRlIH0sXHJcbiAgICAgICAgfSkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBzb3J0ZWRJbmNpZGVudHM6IExvYWRpbmdEYXRhPEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVtdPiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpbmNpZGVudHMuY2xvc2VkSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogaW5jaWRlbnRzLmNsb3NlZEluY2lkZW50cy5sb2FkaW5nU3RhdHVzIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gaW5jaWRlbnRzLmNsb3NlZEluY2lkZW50cy5kYXRhXHJcbiAgICAgICAgICAgIC5zbGljZSgpXHJcbiAgICAgICAgICAgIC5zb3J0KChpbmNpZGVudEE6IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSwgaW5jaWRlbnRCOiBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUpID0+XHJcbiAgICAgICAgICAgICAgICAoaW5jaWRlbnRBW3NvcnRlZENvbHVtbl0/LnRvU3RyaW5nKCkgPz8gXCJcIikubG9jYWxlQ29tcGFyZShpbmNpZGVudEJbc29ydGVkQ29sdW1uXT8udG9TdHJpbmcoKSA/PyBcIlwiKVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaXNTb3J0ZWRBc2NlbmRpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogc29ydGVkRGF0YSB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogc29ydGVkRGF0YS5yZXZlcnNlKCkgfTtcclxuICAgIH0sIFtpbmNpZGVudHMsIHNvcnRlZENvbHVtbiwgaXNTb3J0ZWRBc2NlbmRpbmddKTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJDZWxscyA9IGdldENhc2VUYWJsZUhlYWRlckNlbGxzKCk7XHJcblxyXG4gICAgY29uc3QgZ2V0Q29sdW1uSGVhZGVyID0gKGZpZWxkTmFtZToga2V5b2YgSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlKSA9PlxyXG4gICAgICAgIGhlYWRlckNlbGxzLmZpbmQoKGhlYWRlckNlbGwpID0+IGhlYWRlckNlbGwuZmllbGROYW1lID09PSBmaWVsZE5hbWUpPy5jb2x1bW5IZWFkZXI7XHJcblxyXG4gICAgLy8gRmluZCB0aGUgcmVzdWx0cyB0byBkaXNwbGF5XHJcbiAgICBjb25zdCBtYXRjaGluZ0luY2lkZW50cyA9IHRvTG9hZGluZ0RhdGEoc29ydGVkSW5jaWRlbnRzLCAoaW5jaWRlbnRzKSA9PlxyXG4gICAgICAgIGluY2lkZW50c1xyXG4gICAgICAgICAgICAvLyBBcHBseSB0aGUgU2VhcmNoIEJhciBmaWx0ZXIuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGluY2lkZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpbmNpZGVudCkuc29tZSgodGV4dFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRWYWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaEJhckNvbnRlbnQudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IGFueSBhZHZhbmNlZCBmaWx0ZXJzLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChpbmNpZGVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3JlYXRlZE9uRGF0ZSA9IG5ldyBEYXRlKGluY2lkZW50LmNyZWF0ZWRvbik7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhZHZhbmNlZCBzZWFyY2ggZmlsdGVycyBhcmUgbm90IHBvcHVsYXRlZCwgZG8gbm90IGZpbHRlciBieSB0aGlzIHZhbHVlLlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgaW5jaWRlbnQgc3RhdHVzIGxpc3QgY29udGFpbnMgdGhlIGluY2lkZW50IHN0YXR1cyBjb2RlLCBhZGQgdGhpcyBpbmNpZGVudC5cclxuICAgICAgICAgICAgICAgICAgICAoYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkSW5jaWRlbnRTdGF0dXNlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRJbmNpZGVudFN0YXR1c2VzPy5pbmNsdWRlcyhpbmNpZGVudC5zdGF0dXNjb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRydWUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhc2UgdHlwZSBjb2RlIGxpc3QgY29udGFpbnMgdGhlIGluY2lkZW50IGNhc2UgY29kZSwgYWRkIHRoaXMgaW5jaWRlbnQuXHJcbiAgICAgICAgICAgICAgICAgICAgKGluY2lkZW50LmNhc2V0eXBlY29kZSAmJiBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLnNlbGVjdGVkQ2FzZVR5cGVzPy5pbmNsdWRlcyhpbmNpZGVudC5jYXNldHlwZWNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSkgJiZcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYWR2YW5jZWQgZmlsdGVycyBjb250YWN0IGlkIG1hdGNoZXMgdGhlIGluY2lkZW50IGNvbnRhY3QgaWQsIGFkZCB0aGlzIGluY2lkZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuY3JlYXRlZEJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmNyZWF0ZWRCeSA9PT0gaW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0cnVlKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBpbmNpZGVudCBjcmVhdGVkIG9uIGRhdGUgaXMgd2l0aGluIGEgZ2l2ZW4gcmFuZ2UsIGFkZCB0aGlzIGluY2lkZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIChhZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLmZyb20gJiYgYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmRhdGVSYW5nZS50b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGNyZWF0ZWRPbkRhdGUgPj0gYWR2YW5jZWRTZWFyY2hGaWx0ZXJzLmRhdGVSYW5nZS5mcm9tICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZE9uRGF0ZSA8PSBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLnRvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJhc2VQYWdlIHRpdGxlPVwiQ2xvc2VkIENhc2VzXCI+XHJcbiAgICAgICAgICAgIDxNYW5hZ2VtZW50UGFuZWxcclxuICAgICAgICAgICAgICAgIHNldFNlYXJjaEJhckNvbnRlbnQ9e3NldFNlYXJjaEJhckNvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cHM9e1tdfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJUZXh0PVwiU2VhcmNoIGJ5IENhc2UgVGl0bGUgb3IgUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgIGdldFN1bW1hcnlTZWN0aW9ucz17KCkgPT4gW119XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJzVG9EaXNwbGF5PXtbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvblNldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiU3VwcG9ydCBSZXF1ZXN0XCIsIHZhbHVlOiBDYXNlVHlwZVtcIlN1cHBvcnQgUmVxdWVzdFwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIkluY2lkZW50XCIsIHZhbHVlOiBDYXNlVHlwZVtcIkluY2lkZW50XCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiQ2hhbmdlXCIsIHZhbHVlOiBDYXNlVHlwZVtcIkNoYW5nZVwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIlByb2JsZW1cIiwgdmFsdWU6IENhc2VUeXBlW1wiUHJvYmxlbVwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlU2VsZWN0ZWRDYXNlVHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0ZWRMaXN0OiBhZHZhbmNlZFNlYXJjaEZpbHRlcnMuc2VsZWN0ZWRDYXNlVHlwZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiY2FzZS10eXBlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFR5cGU6IFwiY2hlY2tib3hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzc05hbWU6IFwiY2hlY2tib3gtc2VjdGlvbiBjYXNlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkNhc2UgVHlwZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm9wdGlvblNldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiVG9kYXlcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRvZGF5XCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiWWVzdGVyZGF5XCIsIHZhbHVlOiBEYXRlU2luY2VbXCJZZXN0ZXJkYXlcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJUaGlzIFdlZWtcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgV2Vla1wiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcIlRoaXMgTW9udGhcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgTW9udGhcIl0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJUaGlzIFllYXJcIiwgdmFsdWU6IERhdGVTaW5jZVtcIlRoaXMgWWVhclwiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlQ3JlYXRlZE9uRGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZExpc3Q6IFthZHZhbmNlZFNlYXJjaEZpbHRlcnMuZGF0ZVJhbmdlLnZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJkYXRlLXNpbmNlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0VHlwZTogXCJyYWRpb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZTogXCJjaGVja2JveC1zZWN0aW9uIGNhc2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiQ3JlYXRlZCBPblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImxvb2t1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dDogXCJGaWx0ZXIgYnkgY29udGFjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWxPcHRpb25zTmFtZTogXCJDb250YWN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJDcmVhdGVkIEJ5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb250YWN0cy5kYXRhLm1hcCgoY29udGFjdCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRhY3QuY29udGFjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5VGV4dDogW2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBDb250YWN0U3RhdGVDb2RlW2NvbnRhY3Quc3RhdGVjb2RlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaWNrYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogdXBkYXRlQ3JlYXRlZEJ5Q29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgIHttYXRjaGluZ0luY2lkZW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgICkgOiBtYXRjaGluZ0luY2lkZW50cy5kYXRhLmxlbmd0aCA9PT0gMCA/IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm8tcmVzdWx0cy1tZXNzYWdlXCI+VGhlcmUgYXJlIG5vIHJlY29yZHMgdG8gZGlzcGxheS48L2Rpdj5cclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzc05hbWU9XCJjYXNlcy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlckNlbGxzLm1hcCgoY2VsbCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXI9e2NlbGwuY29sdW1uSGVhZGVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU9e2NlbGwuZmllbGROYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0aW5nUHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmdFbmFibGVkOiBjZWxsLmlzU29ydGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRDb2x1bW46IHNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvcnRlZENvbHVtbjogKCkgPT4gc2V0U29ydGVkQ29sdW1uKGNlbGwuZmllbGROYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU29ydGVkQXNjZW5kaW5nOiBpc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzU29ydGVkQXNjZW5kaW5nOiBzZXRJc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttYXRjaGluZ0luY2lkZW50cy5kYXRhLm1hcCgoaW5jaWRlbnQpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5jaWRlbnQuaW5jaWRlbnRpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWlkPXtpbmNpZGVudC5pbmNpZGVudGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZW50aXR5PVwiaW5jaWRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT17aW5jaWRlbnQudGl0bGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpbmNpZGVudC50aWNrZXRudW1iZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwidGlja2V0bnVtYmVyXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5jaWRlbnQuaW5jaWRlbnRpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPXtgJHtQQUdFUy5FZGl0Q2FzZS5wYXRofT9jYXNlSWQ9JHtpbmNpZGVudC5pbmNpZGVudGlkfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57YCR7aW5jaWRlbnQudGlja2V0bnVtYmVyfWB9PC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2luY2lkZW50LnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcInRpdGxlXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5jaWRlbnQuaW5jaWRlbnRpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPXtgJHtQQUdFUy5FZGl0Q2FzZS5wYXRofT9jYXNlSWQ9JHtpbmNpZGVudC5pbmNpZGVudGlkfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57YCR7aW5jaWRlbnQudGl0bGV9YH08L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwidHlwZVwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiY2FzZXR5cGVjb2RlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luY2lkZW50LmNhc2V0eXBlY29kZSAmJiBDYXNlVHlwZVtpbmNpZGVudC5jYXNldHlwZWNvZGVdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cImNyZWF0ZWQtb25cIiBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcImNyZWF0ZWRvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEYXRlSGVscGVyLnRvRGF0ZVN0cmluZyhpbmNpZGVudC5jcmVhdGVkb24pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cImNvbnRhY3RcIiBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcIl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luY2lkZW50Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhY3QgPSBjb250YWN0cy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWN0KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC5jb250YWN0aWQgPT09IGluY2lkZW50Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb250YWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjb250YWN0LmZpcnN0bmFtZSwgY29udGFjdC5sYXN0bmFtZV0uZmlsdGVyKChzKSA9PiBzKS5qb2luKFwiIFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHJpb3JpdHlcIiBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcInByaW9yaXR5Y29kZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbmNpZGVudC5wcmlvcml0eWNvZGUgJiYgQ2FzZVByaW9yaXR5Q29kZVtpbmNpZGVudC5wcmlvcml0eWNvZGVdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzTmFtZT1cInN0YXR1c1wiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwic3RhdHVzY29kZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtJbmNpZGVudFN0YXR1c0NvZGVbaW5jaWRlbnQuc3RhdHVzY29kZV19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQnNBc3RlcmlzaywgQnNDaGVja0xnIH0gZnJvbSBcInJlYWN0LWljb25zL2JzXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcclxuXHJcbi8qKiBEcm9wZG93biBmaWVsZCAqL1xyXG5leHBvcnQgY29uc3QgRHJvcGRvd25GaWVsZDogUmVhY3QuRkM8e1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHRvb2x0aXA/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgICBvcHRpb25zOiB7IGlkOiBudW1iZXI7IGxhYmVsOiBzdHJpbmcgfVtdO1xyXG4gICAgc2VsZWN0ZWRPcHRpb25JZDogbnVtYmVyIHwgbnVsbDtcclxuICAgIG9uQ2hhbmdlOiAobmV3U2VsZWN0ZWRPcHRpb25JZDogbnVtYmVyIHwgbnVsbCkgPT4gdm9pZDtcclxuICAgIGFkZGl0aW9uYWxTZWxlY3RQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PiwgSFRNTFNlbGVjdEVsZW1lbnQ+O1xyXG4gICAgYWRkaXRpb25hbExhYmVsUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5MYWJlbEhUTUxBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+LCBIVE1MTGFiZWxFbGVtZW50PiAmIHtcclxuICAgICAgICBbZGF0YUF0dHJpYnV0ZTogc3RyaW5nXTogYW55O1xyXG4gICAgfTtcclxuICAgIGN1c3RvbVZhbGlkaXR5PzogKHZhbGlkaXR5OiBWYWxpZGl0eVN0YXRlKSA9PiBzdHJpbmc7XHJcbiAgICByZWFkb25seURyb3Bkb3duPzogYm9vbGVhbjtcclxufT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IHNlbGVjdEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTFNlbGVjdEVsZW1lbnQ+KG51bGwpO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgY3VzdG9tIHZhbGlkaXR5IHJ1bGVzLlxyXG4gICAgaWYgKHByb3BzLmN1c3RvbVZhbGlkaXR5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBzZWxlY3RFbGVtZW50UmVmLmN1cnJlbnQ/LnNldEN1c3RvbVZhbGlkaXR5KHByb3BzLmN1c3RvbVZhbGlkaXR5KHNlbGVjdEVsZW1lbnRSZWYuY3VycmVudC52YWxpZGl0eSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZGVmYXVsdHMgZm9yIHRoZSBjb250cm9sXHJcbiAgICBjb25zdCBhZGRpdGlvbmFsU2VsZWN0UHJvcHM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxyXG4gICAgICAgIFJlYWN0LlNlbGVjdEhUTUxBdHRyaWJ1dGVzPEhUTUxTZWxlY3RFbGVtZW50PixcclxuICAgICAgICBIVE1MU2VsZWN0RWxlbWVudFxyXG4gICAgPiA9IHtcclxuICAgICAgICAuLi5wcm9wcy5hZGRpdGlvbmFsU2VsZWN0UHJvcHMsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHByb3BzLmFkZGl0aW9uYWxTZWxlY3RQcm9wcz8ucmVxdWlyZWQgPz8gdHJ1ZSxcclxuICAgICAgICBhdXRvQ29tcGxldGU6IHByb3BzLmFkZGl0aW9uYWxTZWxlY3RQcm9wcz8uYXV0b0NvbXBsZXRlID8/IFwib2ZmXCIsXHJcbiAgICB9O1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2VsZWN0RWxlbWVudFJlZi5jdXJyZW50Py5jaGVja1ZhbGlkaXR5KCk7XHJcbiAgICB9LCBbc2VsZWN0RWxlbWVudFJlZl0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGxhYmVsIGRhdGEtbmFtZT17cHJvcHMubmFtZX0gY2xhc3NOYW1lPVwiZmllbGRcIiB7Li4ucHJvcHMuYWRkaXRpb25hbExhYmVsUHJvcHN9PlxyXG4gICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQtbGFiZWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgIHthZGRpdGlvbmFsU2VsZWN0UHJvcHMucmVxdWlyZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdEVsZW1lbnRSZWYuY3VycmVudD8udmFsaWRpdHkudmFsaWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnNDaGVja0xnIGNsYXNzTmFtZT1cImNvbXBsZXRlZC1pY29uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCc0FzdGVyaXNrIGNsYXNzTmFtZT1cInJlcXVpcmVkLWljb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudG9vbHRpcCAmJiA8VG9vbHRpcCBvdmVybGF5Q29udGVudD17cHJvcHMudG9vbHRpcH0+PC9Ub29sdGlwPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge3NlbGVjdEVsZW1lbnRSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInZhbGlkaXR5LW1lc3NhZ2VcIj57c2VsZWN0RWxlbWVudFJlZi5jdXJyZW50Py52YWxpZGF0aW9uTWVzc2FnZX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnNlbGVjdGVkT3B0aW9uSWQgfHwgdW5kZWZpbmVkfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHByb3BzLm9uQ2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSA9PT0gXCJcIiA/IG51bGwgOiBOdW1iZXIoZXZlbnQudGFyZ2V0LnZhbHVlKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtzZWxlY3RFbGVtZW50UmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5hZGRpdGlvbmFsU2VsZWN0UHJvcHN9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBkaXNhYmxlZD17cHJvcHMucmVhZG9ubHlEcm9wZG93bn0+PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLm9wdGlvbnMubWFwKChvcHRpb24pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdGlvbi5pZH0gdmFsdWU9e29wdGlvbi5pZH0gZGlzYWJsZWQ9e3Byb3BzLnJlYWRvbmx5RHJvcGRvd259PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbi5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEJzQXN0ZXJpc2ssIEJzQ2hlY2tMZyB9IGZyb20gXCJyZWFjdC1pY29ucy9ic1wiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4uL0Vycm9yQm91bmRhcnlcIjtcclxuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCIuLi9Ub29sdGlwXCI7XHJcblxyXG4vKiogTXVsdGktbGluZSB0ZXh0IGZpZWxkICovXHJcbmV4cG9ydCBjb25zdCBNdWx0aUxpbmVTdHJpbmdGaWVsZDogUmVhY3QuRkM8e1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHRvb2x0aXA/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgICB2YWx1ZTogc3RyaW5nO1xyXG4gICAgb25DaGFuZ2U6IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xyXG4gICAgYWRkaXRpb25hbFRleHRBcmVhUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcclxuICAgICAgICBSZWFjdC5UZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxyXG4gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnRcclxuICAgID47XHJcbiAgICBhZGRpdGlvbmFsTGFiZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxhYmVsSFRNTEF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD4sIEhUTUxMYWJlbEVsZW1lbnQ+ICYge1xyXG4gICAgICAgIFtkYXRhQXR0cmlidXRlOiBzdHJpbmddOiBhbnk7XHJcbiAgICB9O1xyXG4gICAgY3VzdG9tVmFsaWRpdHk/OiAodmFsaWRpdHk6IFZhbGlkaXR5U3RhdGUpID0+IHN0cmluZztcclxufT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IHRleHRBcmVhUmVmID0gdXNlUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KG51bGwpO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgY3VzdG9tIHZhbGlkaXR5IHJ1bGVzLlxyXG4gICAgaWYgKHByb3BzLmN1c3RvbVZhbGlkaXR5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0ZXh0QXJlYVJlZi5jdXJyZW50Py5zZXRDdXN0b21WYWxpZGl0eShwcm9wcy5jdXN0b21WYWxpZGl0eSh0ZXh0QXJlYVJlZi5jdXJyZW50LnZhbGlkaXR5KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0cyBmb3IgdGhlIGNvbnRyb2xcclxuICAgIGNvbnN0IGFkZGl0aW9uYWxUZXh0QXJlYVByb3BzOiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxcclxuICAgICAgICBSZWFjdC5UZXh0YXJlYUhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LFxyXG4gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnRcclxuICAgID4gPSB7XHJcbiAgICAgICAgLi4ucHJvcHMuYWRkaXRpb25hbFRleHRBcmVhUHJvcHMsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHByb3BzLmFkZGl0aW9uYWxUZXh0QXJlYVByb3BzPy5yZXF1aXJlZCA/PyB0cnVlLFxyXG4gICAgICAgIGF1dG9Db21wbGV0ZTogcHJvcHMuYWRkaXRpb25hbFRleHRBcmVhUHJvcHM/LmF1dG9Db21wbGV0ZSA/PyBcIm9mZlwiLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxsYWJlbCBkYXRhLW5hbWU9e3Byb3BzLm5hbWV9IGNsYXNzTmFtZT1cImZpZWxkXCIgey4uLnByb3BzLmFkZGl0aW9uYWxMYWJlbFByb3BzfT5cclxuICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICB7YWRkaXRpb25hbFRleHRBcmVhUHJvcHMucmVxdWlyZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRBcmVhUmVmLmN1cnJlbnQ/LnZhbGlkaXR5LnZhbGlkID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJzQ2hlY2tMZyBjbGFzc05hbWU9XCJjb21wbGV0ZWQtaWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnNBc3RlcmlzayBjbGFzc05hbWU9XCJyZXF1aXJlZC1pY29uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRvb2x0aXAgJiYgPFRvb2x0aXAgb3ZlcmxheUNvbnRlbnQ9e3Byb3BzLnRvb2x0aXB9IC8+fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7dGV4dEFyZWFSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInZhbGlkaXR5LW1lc3NhZ2VcIj57dGV4dEFyZWFSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHByb3BzLm9uQ2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXt0ZXh0QXJlYVJlZn1cclxuICAgICAgICAgICAgICAgICAgICB7Li4uYWRkaXRpb25hbFRleHRBcmVhUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQnNBc3RlcmlzaywgQnNDaGVja0xnIH0gZnJvbSBcInJlYWN0LWljb25zL2JzXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcclxuXHJcbi8qKiBTdHJpbmcgZmllbGQgKi9cclxuZXhwb3J0IGNvbnN0IFN0cmluZ0ZpZWxkOiBSZWFjdC5GQzx7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICB0b29sdGlwPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IHN0cmluZykgPT4gdm9pZDtcclxuICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgSFRNTElucHV0RWxlbWVudD47XHJcbiAgICBhZGRpdGlvbmFsTGFiZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxhYmVsSFRNTEF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD4sIEhUTUxMYWJlbEVsZW1lbnQ+ICYge1xyXG4gICAgICAgIFtkYXRhQXR0cmlidXRlOiBzdHJpbmddOiBhbnk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWRHcm91cD86IGJvb2xlYW47XHJcbiAgICBjdXN0b21WYWxpZGl0eT86ICh2YWxpZGl0eTogVmFsaWRpdHlTdGF0ZSkgPT4gc3RyaW5nO1xyXG59PiA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgY3VzdG9tIHZhbGlkaXR5IHJ1bGVzLlxyXG4gICAgaWYgKHByb3BzLmN1c3RvbVZhbGlkaXR5ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpbnB1dEVsZW1lbnRSZWYuY3VycmVudD8uc2V0Q3VzdG9tVmFsaWRpdHkocHJvcHMuY3VzdG9tVmFsaWRpdHkoaW5wdXRFbGVtZW50UmVmLmN1cnJlbnQudmFsaWRpdHkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHRzIGZvciB0aGUgY29udHJvbFxyXG4gICAgY29uc3QgYWRkaXRpb25hbElucHV0UHJvcHM6IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFxyXG4gICAgICAgIFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sXHJcbiAgICAgICAgSFRNTElucHV0RWxlbWVudFxyXG4gICAgPiA9IHtcclxuICAgICAgICAuLi5wcm9wcy5hZGRpdGlvbmFsSW5wdXRQcm9wcyxcclxuICAgICAgICByZXF1aXJlZDogcHJvcHMuYWRkaXRpb25hbElucHV0UHJvcHM/LnJlcXVpcmVkID8/IHRydWUsXHJcbiAgICAgICAgYXV0b0NvbXBsZXRlOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRQcm9wcz8uYXV0b0NvbXBsZXRlID8/IFwib2ZmXCIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGxhYmVsIGRhdGEtbmFtZT17cHJvcHMubmFtZX0gY2xhc3NOYW1lPVwiZmllbGRcIiB0aXRsZT17cHJvcHMudGl0bGUgfHwgXCJcIn0gey4uLnByb3BzLmFkZGl0aW9uYWxMYWJlbFByb3BzfT5cclxuICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICB7YWRkaXRpb25hbElucHV0UHJvcHMucmVxdWlyZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0RWxlbWVudFJlZi5jdXJyZW50Py52YWxpZGl0eS52YWxpZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCc0NoZWNrTGcgY2xhc3NOYW1lPVwiY29tcGxldGVkLWljb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJzQXN0ZXJpc2sgY2xhc3NOYW1lPVwicmVxdWlyZWQtaWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5yZXF1aXJlZEdyb3VwICYmIDxCc0FzdGVyaXNrIGNsYXNzTmFtZT1cInJlcXVpcmVkLWdyb3VwLWljb25cIiAvPn1cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudG9vbHRpcCAmJiA8VG9vbHRpcCBvdmVybGF5Q29udGVudD17cHJvcHMudG9vbHRpcH0+PC9Ub29sdGlwPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2lucHV0RWxlbWVudFJlZi5jdXJyZW50Py52YWxpZGF0aW9uTWVzc2FnZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidmFsaWRpdHktbWVzc2FnZVwiPntpbnB1dEVsZW1lbnRSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZC1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtwcm9wcy5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiBwcm9wcy5vbkNoYW5nZShldmVudC50YXJnZXQudmFsdWUpfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRFbGVtZW50UmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5hZGRpdGlvbmFsSW5wdXRQcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRmFVc2VyIH0gZnJvbSBcInJlYWN0LWljb25zL2ZhXCI7XHJcbmltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMaW5rLCB1c2VOYXZpZ2F0ZSB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCB7IERyb3Bkb3duRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvRHJvcGRvd25GaWVsZFwiO1xyXG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ZpZWxkcy9Mb29rdXBGaWVsZFwiO1xyXG5pbXBvcnQgeyBNdWx0aUxpbmVTdHJpbmdGaWVsZCB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ZpZWxkcy9NdWx0aUxpbmVTdHJpbmdGaWVsZFwiO1xyXG5pbXBvcnQgeyBTdHJpbmdGaWVsZCB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ZpZWxkcy9TdHJpbmdGaWVsZFwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZVwiO1xyXG5pbXBvcnQgeyBDYXNlUHJpb3JpdHlDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQcmlvcml0eUNvZGVcIjtcclxuaW1wb3J0IHsgQ2FzZVNldmVyaXR5Q29kZSB9IGZyb20gXCIuLi9FbnVtcy9DYXNlU2V2ZXJpdHlDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VVcmdlbmN5IH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VVcmdlbmN5XCI7XHJcbmltcG9ydCB7IENhc2VPcmlnaW5Db2RlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VPcmlnaW5Db2RlXCI7XHJcbmltcG9ydCB7IEJhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQmFzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBQQUdFUyB9IGZyb20gXCIuLi9Ib29rcy91c2VQYWdlTmF2aWdhdGlvblwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlVXNlck1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW1TcGlubmVyMiB9IGZyb20gXCJyZWFjdC1pY29ucy9pbVwiO1xyXG5pbXBvcnQgeyBDb250YWN0U3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgU3VibWlzc2lvblN0YXRlIH0gZnJvbSBcIi4uL1R5cGVzL1N1Ym1pc3Npb25TdGF0ZVwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuLi9Ib29rcy91c2VBcHBJbnNpZ2h0c1wiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRGb3JDcmVhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL0luY2lkZW50Rm9yQ3JlYXRlXCI7XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgQ2FzZSBDcmVhdGlvbiBQYWdlICovXHJcbmV4cG9ydCBjb25zdCBDYXNlc0NyZWF0ZTogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhLCB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YSB9ID0gdXNlQXBwSW5zaWdodHMoKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBpbmNpZGVudHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmluY2lkZW50cyk7XHJcblxyXG4gICAgaWYgKCF1c2VyTWV0YWRhdGEuYWNjb3VudElkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBcXGB1c2VyTWV0YWRhdGEuYWNjb3VudElkXFxgIHRvIGJlIHBvcHVsYXRlZGApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtpbmNpZGVudCwgc2V0SW5jaWRlbnRdID0gdXNlU3RhdGU8SW5jaWRlbnRGb3JDcmVhdGU+KHtcclxuICAgICAgICB0aXRsZTogXCJcIixcclxuICAgICAgICBfY3VzdG9tZXJpZF92YWx1ZTogdXNlck1ldGFkYXRhLmFjY291bnRJZCxcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogdXNlck1ldGFkYXRhLmNvbnRhY3RJZCxcclxuICAgICAgICBfYmlzdGVjaF9jcmVhdGVkYnljb250YWN0X3ZhbHVlOiB1c2VyTWV0YWRhdGEuY29udGFjdElkLFxyXG4gICAgICAgIGNhc2VvcmlnaW5jb2RlOiBDYXNlT3JpZ2luQ29kZVtcIlBvcnRhbFwiXSxcclxuICAgICAgICBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlOiBcIlwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgIHNldmVyaXR5Y29kZTogbnVsbCxcclxuICAgICAgICBiaXN0ZWNoX3VyZ2VuY3k6IG51bGwsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBwcmlvcml0eSA9IGNhbGN1bGF0ZVByaW9yaXR5KGluY2lkZW50LmJpc3RlY2hfdXJnZW5jeSwgaW5jaWRlbnQuc2V2ZXJpdHljb2RlKTtcclxuXHJcbiAgICAvLyBGbGFnIGhvbGRpbmcgd2hldGhlciB0aGUgZm9ybSBoYXMgYXR0ZW1wdGVkIHRvIGJlIHN1Ym1pdHRlZFxyXG4gICAgY29uc3QgW2Zvcm1TdWJtaXRBdHRlbXB0ZWQsIHNldEZvcm1TdWJtaXRBdHRlbXB0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICAgIC8vIEZsYWcgaG9sZGluZyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaGFzIGxvYWRlZFxyXG4gICAgY29uc3QgW2lzTG9hZGVkLCBzZXRJc0xvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gICAgLy8gUHJvZ3Jlc3Mgb2YgdGhlIENhc2UgY3JlYXRpb25cclxuICAgIGNvbnN0IFtzdWJtaXNzaW9uU3RhdGUsIHNldFN1Ym1pc3Npb25TdGF0ZV0gPSB1c2VTdGF0ZTxTdWJtaXNzaW9uU3RhdGU+KHtcclxuICAgICAgICBzdGF0ZTogXCJpZGxlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBNYXJrIHRoZSBjb21wb25lbnQgYXMgbG9hZGVkXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldElzTG9hZGVkKHRydWUpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3Igc3VibWlzc2lvbiBvZiB0aGUgZm9ybS5cclxuICAgICAqIEBwYXJhbSBldmVudCBGb3JtIHN1Ym1pc3Npb24gZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uU3VibWl0KGV2ZW50OiBSZWFjdC5Gb3JtRXZlbnQ8SFRNTEZvcm1FbGVtZW50Pikge1xyXG4gICAgICAgIC8vIFByZXZlbnQgdGhlIGRlZmF1bHQgcGFnZSBzdWJtaXNzaW9uIG9mIHRoZSBmb3JtXHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKGluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFxcYGluY2lkZW50c1xcYCB0byBoYXZlIGxvYWRlZCBiZWZvcmUgc3VibWlzc2lvbmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwic3VibWl0dGluZ1wiIH0pO1xyXG4gICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oeyB0eXBlOiBcIkNyZWF0ZSBDYXNlIC0gQ2FzZSBjcmVhdGlvbiBzdWJtaXR0ZWRcIiB9KTtcclxuXHJcbiAgICAgICAgbGV0IGNyZWF0ZWRJbmNpZGVudDogSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIENhc2VcclxuICAgICAgICAgICAgY3JlYXRlZEluY2lkZW50ID0gYXdhaXQgZGF0YVNlcnZpY2UuY3JlYXRlSW5jaWRlbnQoaW5jaWRlbnQpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImVycm9yZWRcIiwgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xyXG4gICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgdHlwZTogXCJDcmVhdGUgQ2FzZSAtIENhc2UgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZDogY3JlYXRlZEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgY3JlYXRlZCBJbmNpZGVudCB0byBzdGF0ZSwgc28gaXQgY2FuIGJlIHZpZXdlZFxyXG4gICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJTZXRBY3RpdmVJbmNpZGVudHNcIixcclxuICAgICAgICAgICAgYWN0aXZlSW5jaWRlbnRzOiB7XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogaW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5kYXRhLmNvbmNhdChbY3JlYXRlZEluY2lkZW50XSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImNvbXBsZXRlZFwiIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBlZGl0Q2FzZVVybCA9IGAke1BBR0VTLkVkaXRDYXNlLnBhdGh9P2Nhc2VJZD0ke2NyZWF0ZWRJbmNpZGVudC5pbmNpZGVudGlkfWA7XHJcblxyXG4gICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJBZGROb3RpZmljYXRpb25cIixcclxuICAgICAgICAgICAgbm90aWZpY2F0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkNhc2UgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgICAgIGRpc3BsYXllZE9uUmVsYXRpdmVVcmw6IGVkaXRDYXNlVXJsLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheVVudGlsOiBEYXRlSGVscGVyLmFkZFNlY29uZHMobmV3IERhdGUoKSwgMTApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV3bHkgY3JlYXRlZCBDYXNlXHJcbiAgICAgICAgbmF2aWdhdGUoZWRpdENhc2VVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERlZmluZSB0aGUgcmVhc29ucyB3aHkgdGhlIENhc2UgY2Fubm90IGJlIGNyZWF0ZWRcclxuICAgIGNvbnN0IHN1Ym1pdERpc2FibGVkUmVhc29ucyA9IFtcclxuICAgICAgICAuLi4odXNlck1ldGFkYXRhLnBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgIT09IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ2FzZXNcIl0gJiZcclxuICAgICAgICBwcmlvcml0eSA9PT0gQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDFcIl1cclxuICAgICAgICAgICAgPyBbXHJcbiAgICAgICAgICAgICAgICAgIFwiQSBQcmlvcml0eSBPbmUgQ2FzZSBwb3NlcyBhIHNpZ25pZmljYW50IGltcGFjdCBvbiBhIGNyaXRpY2FsIGVsZW1lbnQgb2YgeW91ciBidXNpbmVzcywgYW5kIGFzIHN1Y2ggY2Fubm90IGJlIGxvZ2dlZCBpbiB0aGUgUG9ydGFsXCIsXHJcbiAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICA6IFtdKSxcclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9XCJDcmVhdGUgYSBDYXNlXCI+XHJcbiAgICAgICAgICAgIDxmb3JtXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjcmVhdGUtY2FzZVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLXN1Ym1pdC1hdHRlbXB0ZWQ9e2Zvcm1TdWJtaXRBdHRlbXB0ZWR9XHJcbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgICBvbkludmFsaWQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGlmIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkIChpLmUuIGlnbm9yZSB0aGUgdmFsaWRpdHkgY2hlY2tzIHdoZW4gdGhlIGZvcm0gaXMgaW5pdGlhbGx5IGxvYWRlZClcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGEgZmxhZyBkZXRhaWxpbmcgdGhhdCBhIGZvcm0gc3VibWlzc2lvbiBoYXMgYmVlbiBhdHRlbXB0ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Rm9ybVN1Ym1pdEF0dGVtcHRlZCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2VuZXJhbC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17PD5QbGVhc2UgcHJvdmlkZSBhIHF1aWNrIHRpdGxlIGZvciB0aGUgQ2FzZS48Lz59XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2luY2lkZW50LnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodGl0bGUpID0+IHNldEluY2lkZW50KHsgLi4uaW5jaWRlbnQsIHRpdGxlIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IGF1dG9Gb2N1czogdHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiWW91ciBSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9ezw+WW91ciBDYXNlIFJlZmVyZW5jZSAoaWYgbmVlZGVkKSBmb3Igb3VyIHJlY29yZHMuPC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5jaWRlbnQuYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2UpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmNpZGVudCh7IC4uLmluY2lkZW50LCBiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcmVxdWlyZWQ6IGZhbHNlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExvb2t1cEZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUHJpbWFyeSBDb250YWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25JZD17aW5jaWRlbnQuX3ByaW1hcnljb250YWN0aWRfdmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9ezw+VGhlIG5vbWluYXRlZCBDb250YWN0IHRvIHJlY2VpdmUgQ2FzZSByZWxhdGVkIGNvcnJlc3BvbmRlbmNlLjwvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsT3B0aW9uc05hbWU9XCJBY3RpdmUgQ29udGFjdHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbnRhY3RzLmRhdGEubWFwKChjb250YWN0KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY29udGFjdC5jb250YWN0aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBbY29udGFjdC5maXJzdG5hbWUsIGNvbnRhY3QubGFzdG5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChzKSA9PiBzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIgXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBjb250YWN0LmVtYWlsYWRkcmVzczEgPz8gXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaWNrYWJsZTogY29udGFjdC5zdGF0ZWNvZGUgPT09IENvbnRhY3RTdGF0ZUNvZGVbXCJBY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkT3B0aW9uSWQ9eyhfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEluY2lkZW50KHsgLi4uaW5jaWRlbnQsIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25DYXJkSW5mbz17KHNlbGVjdGVkT3B0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogPEZhVXNlciAvPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBzZWxlY3RlZE9wdGlvbi5wcmltYXJ5VGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IHNlbGVjdGVkT3B0aW9uLnNlY29uZGFyeVRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkpvYiBUaXRsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZWN0ZWRPcHRpb24uY29udGFjdC5qb2J0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUZWxlcGhvbmVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uLmNvbnRhY3QudGVsZXBob25lMSB8fCBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1vYmlsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZWN0ZWRPcHRpb24uY29udGFjdC5tb2JpbGVwaG9uZSB8fCBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlBlcm1pc3Npb24gTGV2ZWxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEJhc2VQZXJtaXNzaW9uTGV2ZWxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbi5jb250YWN0LmJpc3RlY2hfcGVybWlzc2lvbmxldmVsIVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcGxhY2Vob2xkZXI6IFwiU2VsZWN0IGEgQ29udGFjdFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlVyZ2VuY3lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImJpc3RlY2hfdXJnZW5jeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+SGlnaDwvc3Ryb25nPiAtIFJlc29sdXRpb24gb2YgdGhlIEluY2lkZW50IGlzIHRpbWUtY3JpdGljYWwuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk1lZGl1bTwvc3Ryb25nPiAtIFRoZSBlZmZlY3Qgb2YgdGhlIEluY2lkZW50IGluY3JlYXNlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJhYmx5IG92ZXIgdGltZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+TG93PC9zdHJvbmc+IC0gVGhlIGVmZmVjdCBvZiB0aGUgSW5jaWRlbnQgaW5jcmVhc2VzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5hbGx5IG92ZXIgdGltZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IENhc2VVcmdlbmN5LkxvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IENhc2VVcmdlbmN5W0Nhc2VVcmdlbmN5Lkxvd10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBDYXNlVXJnZW5jeS5NZWRpdW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBDYXNlVXJnZW5jeVtDYXNlVXJnZW5jeS5NZWRpdW1dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogQ2FzZVVyZ2VuY3kuSGlnaCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IENhc2VVcmdlbmN5W0Nhc2VVcmdlbmN5LkhpZ2hdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25JZD17aW5jaWRlbnQuYmlzdGVjaF91cmdlbmN5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhiaXN0ZWNoX3VyZ2VuY3kpID0+IHNldEluY2lkZW50KHsgLi4uaW5jaWRlbnQsIGJpc3RlY2hfdXJnZW5jeSB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlNldmVyaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZXZlcml0eWNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkhpZ2g8L3N0cm9uZz4gLSBBIGxhcmdlIG51bWJlciBvZiB1c2VycyBhcmUgYWZmZWN0ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk1lZGl1bTwvc3Ryb25nPiAtIEEgbW9kZXJhdGUgbnVtYmVyIG9mIHVzZXJzIGFyZSBhZmZlY3RlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+TG93PC9zdHJvbmc+IC0gQSBtaW5pbWFsIG51bWJlciBvZiB1c2VycyBhcmUgYWZmZWN0ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBDYXNlU2V2ZXJpdHlDb2RlLkxvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IENhc2VTZXZlcml0eUNvZGVbQ2FzZVNldmVyaXR5Q29kZS5Mb3ddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogQ2FzZVNldmVyaXR5Q29kZS5NZWRpdW0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBDYXNlU2V2ZXJpdHlDb2RlW0Nhc2VTZXZlcml0eUNvZGUuTWVkaXVtXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IENhc2VTZXZlcml0eUNvZGUuSGlnaCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IENhc2VTZXZlcml0eUNvZGVbQ2FzZVNldmVyaXR5Q29kZS5IaWdoXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e2luY2lkZW50LnNldmVyaXR5Y29kZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoc2V2ZXJpdHljb2RlKSA9PiBzZXRJbmNpZGVudCh7IC4uLmluY2lkZW50LCBzZXZlcml0eWNvZGUgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcmlvcml0eS1kZXNjcmliZXItcGFyZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcmlvcml0eSAhPT0gbnVsbCAmJiA8UHJpb3JpdHlEZXNjcmlwdG9yIHByaW9yaXR5Q29kZT17cHJpb3JpdHl9IC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TXVsdGlMaW5lU3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9ezw+UGxlYXNlIHByb3ZpZGUgYSBjbGVhciBleHBsYW5hdGlvbiBvZiB0aGUgaXNzdWUgLyByZXF1aXJlbWVudC48Lz59XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2luY2lkZW50LmRlc2NyaXB0aW9uIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkZXNjcmlwdGlvbikgPT4gc2V0SW5jaWRlbnQoeyAuLi5pbmNpZGVudCwgZGVzY3JpcHRpb24gfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFRleHRBcmVhUHJvcHM9e3sgbWF4TGVuZ3RoOiAyMDAwIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcmlvcml0eSA9PT0gQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDFcIl0gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInByaW9yaXR5LW9uZS1jYXNlLXdhcm5pbmdcIiBpZD1cInByaW9yaXR5LW9uZS1jYXNlLXdhcm5pbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcmlvcml0eS1vbmUtY2FzZS13YXJuaW5nLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3NOYW1lPVwicHJpb3JpdHktb25lLWNhc2Utd2FybmluZy1oZWFkbGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgUHJpb3JpdHkgT25lIENhc2UgcG9zZXMgYSBzaWduaWZpY2FudCBpbXBhY3Qgb24gYSBjcml0aWNhbCBlbGVtZW50IG9mIHlvdXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXNpbmVzc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt1c2VyTWV0YWRhdGEucG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCA9PT0gQ2FzZVBlcm1pc3Npb25MZXZlbFtcIkFsbCBDYXNlc1wiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIiwgYW5kIGFzIHN1Y2ggY2Fubm90IGJlIGxvZ2dlZCBpbiB0aGUgUG9ydGFsXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9iPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwicHJpb3JpdHktb25lLWNhc2Utd2FybmluZy1tZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2UgcmVjb21tZW5kIHlvdSBjYWxsIHVzIGltbWVkaWF0ZWx5IHRvIGhlbHAgcmVzb2x2ZSB0aGUgaXNzdWUgYXMgcXVpY2tseSBhc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cInByaW9yaXR5LW9uZS1jYXNlLXdhcm5pbmctaG91cnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwicHJpb3JpdHktb25lLWNhc2Utd2FybmluZy1ob3VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPk9mZmljZSBob3VycyAoMDkuMDAtMTcuMDApOjwvYj57XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ0ZWw6MDEyMDIzMzIyOTlcIj4wMTIwMiAzMyAyMiA5OTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJwcmlvcml0eS1vbmUtY2FzZS13YXJuaW5nLWhvdXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+T3V0IG9mIGhvdXJzICgxNy4wMC0wOS4wMCk6PC9iPntcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInRlbDowMzMwMTI0NDQ0OFwiPjAzMzAgMTI0IDQ0NDg8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZhaWxlZCB0byBjcmVhdGUgQ2FzZTwvc3Ryb25nPjoge3N1Ym1pc3Npb25TdGF0ZS5lcnJvci5tZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzTmFtZT1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c3VibWl0RGlzYWJsZWRSZWFzb25zLmxlbmd0aCA+IDAgfHwgc3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtzdWJtaXREaXNhYmxlZFJlYXNvbnMubGVuZ3RoID4gMCA/IHN1Ym1pdERpc2FibGVkUmVhc29ucy5qb2luKFwiXFxyXFxuXCIpIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZS5zdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCIgJiYgPEltU3Bpbm5lcjIgY2xhc3NOYW1lPVwic3BpblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VibWl0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8TGluayBjbGFzc05hbWU9XCJidXR0b24gZGVmYXVsdFwiIHRvPXtQQUdFUy5DYXNlcy5wYXRofT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcblxyXG4vKiogUmVuZGVycyBhIGRlc2NyaXB0b3Igb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwcmlvcml0eS4gKi9cclxuY29uc3QgUHJpb3JpdHlEZXNjcmlwdG9yOiBSZWFjdC5GQzx7IHByaW9yaXR5Q29kZTogQ2FzZVByaW9yaXR5Q29kZSB9PiA9IChwcm9wcykgPT4ge1xyXG4gICAgLyoqIFByaW9yaXR5IGRlc2NyaXB0aW9ucyBmb3IgaW5jaWRlbnRzICovXHJcbiAgICBjb25zdCBQUklPUklUWV9ERVNDUklQVElPTlM6IHsgcHJpb3JpdHk6IENhc2VQcmlvcml0eUNvZGU7IGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJpb3JpdHk6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAxXCJdLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgICAgIFwiT25lIG9yIG1vcmUgc2VydmljZXMgYXJlIGluYWNjZXNzaWJsZSBvciB1bnVzYWJsZS4gVGhlcmUgaXMgYSBzaWduaWZpY2FudCBpbXBhY3Qgb24gYSBjcml0aWNhbCBlbGVtZW50IFwiICtcclxuICAgICAgICAgICAgICAgIFwib2YgeW91ciBidXNpbmVzcy4gTXVsdGlwbGUgdXNlcnMgb3IgYSBzZXJ2aWNlIGlzIGFmZmVjdGVkLlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcmlvcml0eTogQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl0sXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxyXG4gICAgICAgICAgICAgICAgXCJBIHNlcnZpY2UgaXMgdXNhYmxlIGJ1dCBpbXBhaXJlZC4gVGhlIHNpdHVhdGlvbiBoYXMgbW9kZXJhdGUgYnVzaW5lc3MgaW1wYWN0IGFuZCBjYW4gYmUgZGVhbHQgd2l0aCBkdXJpbmcgXCIgK1xyXG4gICAgICAgICAgICAgICAgXCJidXNpbmVzcyBob3Vycy4gTXVsdGlwbGUgdXNlcnMgb3IgYSBzZXJ2aWNlIGlzIHBhcnRpYWxseSBhZmZlY3RlZC5cIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJpb3JpdHk6IENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAzXCJdLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgICAgIFwiVGhlIGlzc3VlIGlzIGltcG9ydGFudCBidXQgaXMgbm90IGN1cnJlbnRseSBjYXVzaW5nIHlvdSBhIHNpZ25pZmljYW50IGltcGFjdC4gVXNlcnMgbWF5IGJlIGV4cGVyaWVuY2luZyBcIiArXHJcbiAgICAgICAgICAgICAgICBcInBhcnRpYWwgZGlzcnVwdGlvbiwgYnV0IGFuIGFjY2VwdGFibGUgd29ya2Fyb3VuZCBleGlzdHMuXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByaW9yaXR5OiBDYXNlUHJpb3JpdHlDb2RlW1wiUHJpb3JpdHkgNFwiXSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246XHJcbiAgICAgICAgICAgICAgICBcIlRoZSBpc3N1ZSBpcyBsb3cgaW1wYWN0IGFuZCBpcyBub3QgY2F1c2luZyB5b3UgYSBkaXNydXB0aW9uLiBVc2VycyBhcmUgdW5hZmZlY3RlZC4gVGhpcyBtYXkgaW5jbHVkZSBjb3NtZXRpYyBkZWZlY3RzLlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0IHsgcHJpb3JpdHlDb2RlIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gUFJJT1JJVFlfREVTQ1JJUFRJT05TLmZpbmQoKHsgcHJpb3JpdHkgfSkgPT4gcHJpb3JpdHkgPT09IHByaW9yaXR5Q29kZSk/LmRlc2NyaXB0aW9uO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHJpb3JpdHktZGVzY3JpYmVyXCIgZGF0YS1zZWxlY3RlZC1sZXZlbD17Q2FzZVByaW9yaXR5Q29kZVtwcmlvcml0eUNvZGVdfT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcmlvcml0eS1kZXNjcmliZXItbGV2ZWxzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIHtQUklPUklUWV9ERVNDUklQVElPTlMubWFwKCh7IHByaW9yaXR5IH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3ByaW9yaXR5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwcmlvcml0eS1kZXNjcmliZXItbGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWxldmVsPXtDYXNlUHJpb3JpdHlDb2RlW3ByaW9yaXR5XX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3RlZD17cHJpb3JpdHlDb2RlID09PSBwcmlvcml0eX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByaW9yaXR5LWRlc2NyaWJlci1kZXRhaWxzLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJpb3JpdHktZGVzY3JpYmVyLWRldGFpbHNcIiBkYXRhLWxldmVsPXtDYXNlUHJpb3JpdHlDb2RlW3ByaW9yaXR5Q29kZV19PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJwcmlvcml0eS1kZXNjcmliZXItdGl0bGVcIj57Q2FzZVByaW9yaXR5Q29kZVtwcmlvcml0eUNvZGVdfTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwicHJpb3JpdHktZGVzY3JpYmVyLWRlc2NyaXB0aW9uXCI+e2Rlc2NyaXB0aW9ufTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICApO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIENhbHVsYXRlcyB0aGUgcHJpb3JpdHkgZmllbGQgYmFzZWQgb24gdXJnZW5jeSBhbmQgaW1wYWN0IGZpZWxkc1xyXG4gKiBAcGFyYW0gdXJnZW5jeSAtIFRoZSB1cmdlbmN5IG9mIHRoZSBjYXNlXHJcbiAqIEBwYXJhbSBzZXZlcml0eSAtIFRoZSBzZXZlcml0eSBvZiB0aGUgY2FzZVxyXG4gKi9cclxuZnVuY3Rpb24gY2FsY3VsYXRlUHJpb3JpdHkodXJnZW5jeTogQ2FzZVVyZ2VuY3kgfCBudWxsLCBzZXZlcml0eTogQ2FzZVNldmVyaXR5Q29kZSB8IG51bGwpOiBDYXNlUHJpb3JpdHlDb2RlIHwgbnVsbCB7XHJcbiAgICBpZiAodXJnZW5jeSA9PT0gbnVsbCB8fCBzZXZlcml0eSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAoc2V2ZXJpdHkgKyB1cmdlbmN5KSB7XHJcbiAgICAgICAgLy8gTG93ICgxKSBhbmQgTG93ICgxKVxyXG4gICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgcmV0dXJuIENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSA0XCJdO1xyXG5cclxuICAgICAgICAvLyBMb3cgKDEpIGFuZCBIaWdoICgzKVxyXG4gICAgICAgIC8vIExvdyAoMSkgYW5kIE1lZGl1bSAoMilcclxuICAgICAgICAvLyBNZWRpdW0gKDIpIGFuZCBMb3cgKDEpXHJcbiAgICAgICAgLy8gTWVkaXVtICgyKSBhbmQgTWVkaXVtICgyKVxyXG4gICAgICAgIC8vIEhpZ2ggKDMpIGFuZCBMb3cgKDEpXHJcbiAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgcmV0dXJuIENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAzXCJdO1xyXG5cclxuICAgICAgICAvLyBNZWRpdW0gKDIpIGFuZCBIaWdoICgzKVxyXG4gICAgICAgIC8vIEhpZ2ggKDMpIGFuZCBNZWRpdW0gKDIpXHJcbiAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICByZXR1cm4gQ2FzZVByaW9yaXR5Q29kZVtcIlByaW9yaXR5IDJcIl07XHJcblxyXG4gICAgICAgIC8vIEhpZ2ggKDMpIGFuZCBIaWdoICgzKVxyXG4gICAgICAgIGNhc2UgNjpcclxuICAgICAgICAgICAgcmV0dXJuIENhc2VQcmlvcml0eUNvZGVbXCJQcmlvcml0eSAxXCJdO1xyXG4gICAgfVxyXG5cclxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1cmdlbmN5IGFuZCBzZXZlcml0eWApO1xyXG59XHJcbiIsImltcG9ydCB7IENvbnRhY3RTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyB0b0xvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0hlbHBlcnMvdG9Mb2FkaW5nRGF0YVwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uL1R5cGVzL0ZpbHRlckdyb3VwXCI7XHJcbmltcG9ydCB7IEZpbHRlcmVkQ29udGFjdHMgfSBmcm9tIFwiLi4vVHlwZXMvRmlsdGVyTW9kZWxzL0ZpbHRlcmVkQ29udGFjdHNcIjtcclxuXHJcbi8qKiBEZXNjcmlwdGlvbiBvZiB0aGUgQ29udGFjdHMgZmlsdGVyIGdyb3VwcyB0byBkaXNwbGF5IG9uIHRoZSBNYW5hZ2VtZW50IFBhbmVsLiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0Q29udGFjdHNGaWx0ZXJHcm91cHMgPSAoXHJcbiAgICBmaWx0ZXJlZENvbnRhY3RzOiBGaWx0ZXJlZENvbnRhY3RzLFxyXG4gICAgc2VsZWN0ZWRTdGF0dXNUaWxlSWRzOiBzdHJpbmdbXSxcclxuICAgIHNldFNlbGVjdGVkU3RhdHVzVGlsZUlkczogKHRpbGVJZHM6IHN0cmluZ1tdKSA9PiB2b2lkXHJcbik6IEZpbHRlckdyb3VwPENvbnRhY3RGb3JSZXRyaWV2YWw+W10gPT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudDogPD5TdGF0dXM8Lz4sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJTdGF0dXNcIixcclxuICAgICAgICAgICAgdGlsZXM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJhY3RpdmUtY29udGFjdHNcIixcclxuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZFRpbGVJZHM6IHNldFNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFRpbGVJZHM6IHNlbGVjdGVkU3RhdHVzVGlsZUlkcyxcclxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IChjb250YWN0KSA9PiBbQ29udGFjdFN0YXRlQ29kZS5BY3RpdmVdLmluY2x1ZGVzKGNvbnRhY3Quc3RhdGVjb2RlKSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogPD5BY3RpdmU8Lz4sXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRvTG9hZGluZ0RhdGEoZmlsdGVyZWRDb250YWN0cy5hY3RpdmVDb250YWN0cywgKGNvbnRhY3RzKSA9PiBjb250YWN0cy5sZW5ndGgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aDogXCIvY29udGFjdC1tYW5hZ2VtZW50LXN0YXR1cy1hY3RpdmUuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U6IFwiQ291bnQgT2YgQWN0aXZlIENvbnRhY3RzIC0gQ2xpY2sgVG8gRmlsdGVyXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImluYWN0aXZlLWNvbnRhY3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAoY29udGFjdCkgPT4gW0NvbnRhY3RTdGF0ZUNvZGUuSW5hY3RpdmVdLmluY2x1ZGVzKGNvbnRhY3Quc3RhdGVjb2RlKSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogPD5JbmFjdGl2ZTwvPixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG9Mb2FkaW5nRGF0YShmaWx0ZXJlZENvbnRhY3RzLmluYWN0aXZlQ29udGFjdHMsIChjb250YWN0cykgPT4gY29udGFjdHMubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg6IFwiL2NvbnRhY3QtbWFuYWdlbWVudC1zdGF0dXMtaW5hY3RpdmUuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U6IFwiQ291bnQgT2YgSW5hY3RpdmUgQ29udGFjdHMgLSBDbGljayBUbyBGaWx0ZXJcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgIF07XHJcbn07XHJcbiIsImltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgUEFHRVMgfSBmcm9tIFwiLi4vSG9va3MvdXNlUGFnZU5hdmlnYXRpb25cIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBTdW1tYXJ5U2VjdGlvbiB9IGZyb20gXCIuLi9UeXBlcy9TdW1tYXJ5U2VjdGlvblwiO1xyXG5cclxuLyoqIERlc2NyaXB0aW9uIG9mIHRoZSBDb250YWN0cyBzdW1tYXJ5IHNlY3Rpb25zIHRvIGRpc3BsYXkgb24gdGhlIE1hbmFnZW1lbnQgUGFuZWwuICovXHJcbmV4cG9ydCBjb25zdCBnZXRDb250YWN0c1N1bW1hcnlTZWN0aW9ucyA9IChcclxuICAgIGNvbnRhY3RzOiBMb2FkaW5nRGF0YTxDb250YWN0Rm9yUmV0cmlldmFsW10+LFxyXG4gICAgcHJpbWFyeUNvbnRhY3Q6IENvbnRhY3RGb3JSZXRyaWV2YWwgfCB1bmRlZmluZWRcclxuKTogU3VtbWFyeVNlY3Rpb25bXSA9PiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogXCJidXR0b24tbGlua1wiLFxyXG4gICAgICAgICAgICBsYWJlbDogXCJOZXcgQ29udGFjdFwiLFxyXG4gICAgICAgICAgICBidXR0b25MYWJlbDogXCJDcmVhdGVcIixcclxuICAgICAgICAgICAgdG86IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogUEFHRVMuQ3JlYXRlQ29udGFjdC5wYXRoIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb250YWN0cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgID8gcHJpbWFyeUNvbnRhY3RcclxuICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJLZXkgU2VydmljZSBDb250YWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25MYWJlbDogW3ByaW1hcnlDb250YWN0LmZpcnN0bmFtZSwgcHJpbWFyeUNvbnRhY3QubGFzdG5hbWVdLmZpbHRlcigocykgPT4gcykuam9pbihcIiBcIiksXHJcbiAgICAgICAgICAgICAgICAgICAgICB0bzogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBgJHtQQUdFUy5FZGl0Q29udGFjdC5wYXRofT9pZD0ke3ByaW1hcnlDb250YWN0LmNvbnRhY3RpZH1gIH0sXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIktleSBTZXJ2aWNlIENvbnRhY3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IFwiTm9uZSBTZXRcIiB9LFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICBsYWJlbDogXCJLZXkgU2VydmljZSBDb250YWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgIF07XHJcbn07XHJcbiIsImltcG9ydCB7IENvbnRhY3RUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vVHlwZXMvVGFibGVIZWFkZXJDZWxscy9Db250YWN0VGFibGVIZWFkZXJDZWxsXCI7XHJcblxyXG4vKiogRGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGhlYWRlciBjZWxscyB0byBkaXNwbGF5IGluIHRoZSBDYXNlcyBUYWJsZS4gKi9cclxuZXhwb3J0IGNvbnN0IGdldENvbnRhY3RUYWJsZUhlYWRlckNlbGxzID0gKCk6IENvbnRhY3RUYWJsZUhlYWRlckNlbGxbXSA9PiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJGdWxsIE5hbWVcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImZpcnN0bmFtZVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMSxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIkpvYiBUaXRsZVwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwiam9idGl0bGVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJFbWFpbFwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwiZW1haWxhZGRyZXNzMVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMyxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIkRESVwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwidGVsZXBob25lMVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogNCxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIk1vYmlsZSBQaG9uZVwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwibW9iaWxlcGhvbmVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgTWFuYWdlbWVudFBhbmVsIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvTWFuYWdlbWVudFBhbmVsXCI7XHJcbmltcG9ydCB7IGdldENvbnRhY3RzRmlsdGVyR3JvdXBzIH0gZnJvbSBcIi4uL0RhdGEvZ2V0Q29udGFjdHNGaWx0ZXJHcm91cHNcIjtcclxuaW1wb3J0IHsgZ2V0Q29udGFjdHNTdW1tYXJ5U2VjdGlvbnMgfSBmcm9tIFwiLi4vRGF0YS9nZXRDb250YWN0c1N1bW1hcnlTZWN0aW9uc1wiO1xyXG5pbXBvcnQgeyBnZXRDb250YWN0VGFibGVIZWFkZXJDZWxscyB9IGZyb20gXCIuLi9EYXRhL2dldENvbnRhY3RUYWJsZUhlYWRlckNlbGxzXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgQ29udGFjdFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IFBBR0VTIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZENvbnRhY3RzIH0gZnJvbSBcIi4uL1R5cGVzL0ZpbHRlck1vZGVscy9GaWx0ZXJlZENvbnRhY3RzXCI7XHJcbmltcG9ydCB7IEZpbHRlckdyb3VwIH0gZnJvbSBcIi4uL1R5cGVzL0ZpbHRlckdyb3VwXCI7XHJcbmltcG9ydCB7IFN1bW1hcnlTZWN0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL1N1bW1hcnlTZWN0aW9uXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9UYWJsZUhlYWRlckNlbGxcIjtcclxuXHJcbi8qIENvbXBvbmVudCBjb250YWluaW5nIHRoZSBDb250YWN0cyBQYWdlICovXHJcbmV4cG9ydCBjb25zdCBDb250YWN0czogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgdGhlIFNlYXJjaCBCYXJcclxuICAgIGNvbnN0IFtzZWFyY2hCYXJDb250ZW50LCBzZXRTZWFyY2hCYXJDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XHJcblxyXG4gICAgLy8gTG9jYWwgc3RhdGUgdXNlZCBmb3IgdGhlIFRpbGUgc2VsZWN0aW9uLlxyXG4gICAgY29uc3QgW3NlbGVjdGVkU3RhdHVzVGlsZUlkcywgc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXCJhY3RpdmUtY29udGFjdHNcIl0pO1xyXG5cclxuICAgIC8vIExvY2FsIHN0YXRlIHVzZWQgZm9yIHRoZSB0YWJsZSBzb3J0aW5nLlxyXG4gICAgY29uc3QgW3NvcnRlZENvbHVtbiwgc2V0U29ydGVkQ29sdW1uXSA9IHVzZVN0YXRlPGtleW9mIENvbnRhY3RGb3JSZXRyaWV2YWw+KFwiZmlyc3RuYW1lXCIpO1xyXG4gICAgY29uc3QgW2lzU29ydGVkQXNjZW5kaW5nLCBzZXRJc1NvcnRlZEFzY2VuZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPih0cnVlKTtcclxuXHJcbiAgICBpZiAoIXVzZXJNZXRhZGF0YS5hY2NvdW50SWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFxcYHVzZXJNZXRhZGF0YS5hY2NvdW50SWRcXGAgdG8gYmUgcG9wdWxhdGVkYCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYWNjb3VudHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmFjY291bnRzKTtcclxuXHJcbiAgICAvLyBTb3J0cyB0aGUgd2F5IHRoZSBhcnJheSBvZiBDb250YWN0cyBkaXNwbGF5cyBpbiB0aGUgdGFibGUuXHJcbiAgICBjb25zdCBzb3J0ZWRDb250YWN0czogTG9hZGluZ0RhdGE8Q29udGFjdEZvclJldHJpZXZhbFtdPiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBjb250YWN0cy5kYXRhLnNsaWNlKCkuc29ydCgoY29udGFjdEEsIGNvbnRhY3RCKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIElmIHNvcnRpbmcgYnkgJ2ZpcnN0bmFtZScsIHNvcnQgYnkgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgQ29udGFjdFxyXG4gICAgICAgICAgICBpZiAoc29ydGVkQ29sdW1uID09PSBcImZpcnN0bmFtZVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7Y29udGFjdEEuZmlyc3RuYW1lPy50b1N0cmluZygpID8/IFwiXCJ9JHtjb250YWN0QS5sYXN0bmFtZT8udG9TdHJpbmcoKSA/PyBcIlwifWAubG9jYWxlQ29tcGFyZShcclxuICAgICAgICAgICAgICAgICAgICBgJHtjb250YWN0Qi5maXJzdG5hbWU/LnRvU3RyaW5nKCkgPz8gXCJcIn0ke2NvbnRhY3RCLmxhc3RuYW1lPy50b1N0cmluZygpID8/IFwiXCJ9YFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGNvbnRhY3RBW3NvcnRlZENvbHVtbl0/LnRvU3RyaW5nKCkubG9jYWxlQ29tcGFyZShjb250YWN0Qltzb3J0ZWRDb2x1bW5dPy50b1N0cmluZygpID8/IFwiXCIpID8/IDA7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpc1NvcnRlZEFzY2VuZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBzb3J0ZWREYXRhIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBzb3J0ZWREYXRhLnJldmVyc2UoKSB9O1xyXG4gICAgfSwgW2NvbnRhY3RzLCBzb3J0ZWRDb2x1bW4sIGlzU29ydGVkQXNjZW5kaW5nXSk7XHJcblxyXG4gICAgLyoqIE9iamVjdCBkZWZpbmluZyBDb250YWN0cyBmaWx0ZXJlZCBieSBkaWZmZXJlbnQgcGFyYW1ldGVycyAqL1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb250YWN0czogRmlsdGVyZWRDb250YWN0cyA9IHtcclxuICAgICAgICBhY3RpdmVDb250YWN0czogdG9Mb2FkaW5nRGF0YShzb3J0ZWRDb250YWN0cywgKGNvbnRhY3RzKSA9PlxyXG4gICAgICAgICAgICBjb250YWN0cy5maWx0ZXIoKGNvbnRhY3QpID0+IGNvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlLkFjdGl2ZSlcclxuICAgICAgICApLFxyXG4gICAgICAgIGluYWN0aXZlQ29udGFjdHM6IHRvTG9hZGluZ0RhdGEoc29ydGVkQ29udGFjdHMsIChjb250YWN0cykgPT5cclxuICAgICAgICAgICAgY29udGFjdHMuZmlsdGVyKChjb250YWN0KSA9PiBjb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZS5JbmFjdGl2ZSlcclxuICAgICAgICApLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBEZXNjcmlwdGlvbiBvZiB0aGUgZ3JvdXBzIG9mIHByb2R1Y3QgdGlsZXMgdG8gZGlzcGxheSBpbiB0aGUgTmF2aWdhdGlvbiBwYW5lbC5cclxuICAgIGNvbnN0IGNvbnRhY3RzRmlsdGVyR3JvdXBzOiBGaWx0ZXJHcm91cDxDb250YWN0Rm9yUmV0cmlldmFsPltdID0gZ2V0Q29udGFjdHNGaWx0ZXJHcm91cHMoXHJcbiAgICAgICAgZmlsdGVyZWRDb250YWN0cyxcclxuICAgICAgICBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzXHJcbiAgICApO1xyXG5cclxuICAgIC8vIERldGVybWluZSB0aGUgYXBwbGljYWJsZSBTdGF0dXMgZmlsdGVycy5cclxuICAgIGNvbnN0IGFwcGxpY2FibGVTdGF0dXNGaWx0ZXJzID0gY29udGFjdHNGaWx0ZXJHcm91cHMuZmxhdE1hcCgoZmlsdGVyR3JvdXApID0+XHJcbiAgICAgICAgZmlsdGVyR3JvdXAudGlsZXNcclxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHNlbGVjdGVkIHRpbGVzIGluIHRoZSBncm91cCB0aGVuIG5vIGZpbHRlcnMgYXJlIGFwcGxpZWQuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHRpbGUpID0+IChzZWxlY3RlZFN0YXR1c1RpbGVJZHMubGVuZ3RoID4gMCA/IHNlbGVjdGVkU3RhdHVzVGlsZUlkcy5pbmNsdWRlcyh0aWxlLmlkKSA6IHRydWUpKVxyXG4gICAgICAgICAgICAuZmxhdE1hcCgodGlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpbGUuZmlsdGVyO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB1c2VyUGFyZW50QWNjb3VudElkID1cclxuICAgICAgICBhY2NvdW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIDogYWNjb3VudHMuZGF0YS5maW5kKChjb25uZWN0ZWRBY2NvdW50KSA9PiBjb25uZWN0ZWRBY2NvdW50LmFjY291bnRpZCA9PT0gdXNlck1ldGFkYXRhLmFjY291bnRJZCk7XHJcblxyXG4gICAgY29uc3Qga2V5U2VydmljZUNvbnRhY3QgPVxyXG4gICAgICAgIGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgPyB1bmRlZmluZWRcclxuICAgICAgICAgICAgOiBjb250YWN0cy5kYXRhLmZpbmQoKGNvbnRhY3QpID0+IGNvbnRhY3QuY29udGFjdGlkID09PSB1c2VyUGFyZW50QWNjb3VudElkPy5fcHJpbWFyeWNvbnRhY3RpZF92YWx1ZSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIHN1bW1hcnkgc2VjdGlvbnMgdG8gZGlzcGxheS5cclxuICAgIGNvbnN0IHN1bW1hcnlTZWN0aW9uczogU3VtbWFyeVNlY3Rpb25bXSA9IGdldENvbnRhY3RzU3VtbWFyeVNlY3Rpb25zKGNvbnRhY3RzLCBrZXlTZXJ2aWNlQ29udGFjdCk7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBnZXRDb250YWN0VGFibGVIZWFkZXJDZWxscygpO1xyXG5cclxuICAgIGNvbnN0IGdldENvbHVtbkhlYWRlciA9IChmaWVsZE5hbWU6IGtleW9mIENvbnRhY3RGb3JSZXRyaWV2YWwpID0+XHJcbiAgICAgICAgaGVhZGVyQ2VsbHMuZmluZCgoaGVhZGVyQ2VsbCkgPT4gaGVhZGVyQ2VsbC5maWVsZE5hbWUgPT09IGZpZWxkTmFtZSk/LmNvbHVtbkhlYWRlcjtcclxuXHJcbiAgICAvLyBGaW5kIHRoZSByZXN1bHRzIHRvIGRpc3BsYXlcclxuICAgIGNvbnN0IG1hdGNoaW5nQ29udGFjdHMgPSB0b0xvYWRpbmdEYXRhKHNvcnRlZENvbnRhY3RzLCAoY29udGFjdHMpID0+XHJcbiAgICAgICAgY29udGFjdHNcclxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIFNlYXJjaCBCYXIgZmlsdGVyLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChjb250YWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29udGFjdCkuc29tZSgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHZhbHVlPy50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY29udGVudHMgaW4gdGhlIHRhYmxlIGlzIGZvcm1hdHRlZCBmb3IgdGhlIHVzZXIgdGhlcmVmb3JlIHRoZSBzZWFyY2ggdmFsdWVzIGhhdmUgdG8gYWxzbyBiZSBmb3JtYXR0ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBmdWxsbmFtZSBmb3Igc3RyaW5nIGNvbXBhcmlzb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjb250YWN0aWRcIjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFZhbHVlID0gKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRhY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHRWYWx1ZT8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaEJhckNvbnRlbnQudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBTdGF0dXMgVGlsZSBmaWx0ZXJzLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChjb250YWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwbGljYWJsZVN0YXR1c0ZpbHRlcnMuc29tZSgoZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcihjb250YWN0KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIkNvbnRhY3RzXCI+XHJcbiAgICAgICAgICAgIDxNYW5hZ2VtZW50UGFuZWxcclxuICAgICAgICAgICAgICAgIHNldFNlYXJjaEJhckNvbnRlbnQ9e3NldFNlYXJjaEJhckNvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cHM9e2NvbnRhY3RzRmlsdGVyR3JvdXBzfVxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJUZXh0PVwiU2VhcmNoIGJ5IE5hbWUgb3IgSm9iIFRpdGxlXCJcclxuICAgICAgICAgICAgICAgIGdldFN1bW1hcnlTZWN0aW9ucz17KCkgPT4gc3VtbWFyeVNlY3Rpb25zfVxyXG4gICAgICAgICAgICAgICAgZmlsdGVyc1RvRGlzcGxheT17W119XHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICB7bWF0Y2hpbmdDb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgICkgOiBtYXRjaGluZ0NvbnRhY3RzLmRhdGEubGVuZ3RoID09PSAwID8gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuby1yZXN1bHRzLW1lc3NhZ2VcIj5UaGVyZSBhcmUgbm8gcmVjb3JkcyB0byBkaXNwbGF5LjwvZGl2PlxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzTmFtZT1cImVudGl0eWxpc3QgY29udGFjdHMtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJDZWxscy5tYXAoKGNlbGwpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSGVhZGVyPXtjZWxsLmNvbHVtbkhlYWRlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lPXtjZWxsLmZpZWxkTmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGluZ1Byb3BzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0aW5nRW5hYmxlZDogY2VsbC5pc1NvcnRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkQ29sdW1uOiBzb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTb3J0ZWRDb2x1bW46ICgpID0+IHNldFNvcnRlZENvbHVtbihjZWxsLmZpZWxkTmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZEFzY2VuZGluZzogaXNTb3J0ZWRBc2NlbmRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1NvcnRlZEFzY2VuZGluZzogc2V0SXNTb3J0ZWRBc2NlbmRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWF0Y2hpbmdDb250YWN0cy5kYXRhLm1hcCgoY29udGFjdCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjb250YWN0LmNvbnRhY3RpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWlkPXtjb250YWN0LmNvbnRhY3RpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWVudGl0eT1cImNvbnRhY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbmFtZT17W2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHgpID0+IHgpLmpvaW4oXCIgXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmdWxsLW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17W2NvbnRhY3QuZmlyc3RuYW1lLCBjb250YWN0Lmxhc3RuYW1lXS5maWx0ZXIoKHMpID0+IHMpLmpvaW4oXCIgXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcImZpcnN0bmFtZVwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NvbnRhY3QuZmlyc3RuYW1lICsgY29udGFjdC5sYXN0bmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPXtgJHtQQUdFUy5FZGl0Q29udGFjdC5wYXRofT9pZD0ke2NvbnRhY3QuY29udGFjdGlkfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtbY29udGFjdC5maXJzdG5hbWUsIGNvbnRhY3QubGFzdG5hbWVdLmZpbHRlcigocykgPT4gcykuam9pbihcIiBcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJqb2ItdGl0bGVcIiBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcImpvYnRpdGxlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRhY3Quam9idGl0bGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwiZW1haWwtYWRkcmVzc1wiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiZW1haWxhZGRyZXNzMVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250YWN0LmVtYWlsYWRkcmVzczF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwidGVsZXBob25lLW51bWJlclwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwidGVsZXBob25lMVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250YWN0LnRlbGVwaG9uZTF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwibW9iaWxlLW51bWJlclwiIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwibW9iaWxlcGhvbmVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGFjdC5tb2JpbGVwaG9uZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxNYWpvckluY2lkZW50VXBkYXRlXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuXHJcbi8qIENvbXBvbmVudCBjb250YWluaW5nIHRoZSBNYWpvciBJbmNpZGVudHMgKi9cclxuZXhwb3J0IGNvbnN0IENhc2VzTWFqb3JJbmNpZGVudHM6IFJlYWN0LkZDID0gKCkgPT4ge1xyXG4gICAgY29uc3QgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzKTtcclxuICAgIGNvbnN0IGluY2lkZW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuaW5jaWRlbnRzKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICAgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIiB8fFxyXG4gICAgICAgIGluY2lkZW50cy5yZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIiB8fFxyXG4gICAgICAgIGluY2lkZW50cy5hY3RpdmVNYWpvckluY2lkZW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiXHJcbiAgICApIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9XCJNYWpvciBJbmNpZGVudHNcIj5cclxuICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxyXG4gICAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVsZXZhbnRNYWpvckluY2lkZW50cyA9IGluY2lkZW50cy5hY3RpdmVNYWpvckluY2lkZW50cy5kYXRhLmNvbmNhdChcclxuICAgICAgICBpbmNpZGVudHMucmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzLmRhdGFcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNCeVBhcmVudENhc2UgPSBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlcy5kYXRhXHJcbiAgICAgICAgLnJlZHVjZTx7IGluY2lkZW50SWQ6IHN0cmluZzsgY2hpbGRyZW5VcGRhdGVzOiBQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlW10gfVtdPihcclxuICAgICAgICAgICAgKGNhc2VzLCBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0VudHJ5ID0gY2FzZXMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAoYykgPT4gYy5pbmNpZGVudElkID09PSBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLl9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ0VudHJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZXMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNhc2VzLmZpbHRlcigoeCkgPT4geC5pbmNpZGVudElkICE9PSBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLl9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2lkZW50SWQ6IHBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUuX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5VcGRhdGVzOiBbLi4ubWF0Y2hpbmdFbnRyeS5jaGlsZHJlblVwZGF0ZXMsIHBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNpZGVudElkOiBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLl9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5VcGRhdGVzOiBbcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZV0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FzZXM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFtdXHJcbiAgICAgICAgKVxyXG5cclxuICAgICAgICAvLyBNYXAgdG8gdGhlIE1ham9yIEluY2lkZW50XHJcbiAgICAgICAgLm1hcCgoeyBpbmNpZGVudElkLCBjaGlsZHJlblVwZGF0ZXMgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtYWpvckluY2lkZW50ID0gcmVsZXZhbnRNYWpvckluY2lkZW50cy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKG1ham9ySW5jaWRlbnQpID0+IG1ham9ySW5jaWRlbnQuaW5jaWRlbnRpZCA9PT0gaW5jaWRlbnRJZFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWFqb3JJbmNpZGVudCwgY2hpbGRyZW5VcGRhdGVzIH07XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLy8gRmlsdGVyIG91dCBQb3J0YWwgTWFqb3IgSW5jaWRlbnQgVXBkYXRlcyBmb3IgaXJyZWxldmFudCBNYWpvciBJbmNpZGVudHNcclxuICAgICAgICAuZmlsdGVyKCh7IG1ham9ySW5jaWRlbnQgfSkgPT4gbWFqb3JJbmNpZGVudClcclxuXHJcbiAgICAgICAgLy8gQXNzZXJ0IHRoYXQgTWFqb3IgSW5jaWRlbnQgaXMgbm8gbG9uZ2VyIHBvc3NpYmx5IHVuZGVmaW5lZFxyXG4gICAgICAgIC5tYXAoKHsgbWFqb3JJbmNpZGVudCwgY2hpbGRyZW5VcGRhdGVzIH0pID0+ICh7IG1ham9ySW5jaWRlbnQ6IG1ham9ySW5jaWRlbnQhLCBjaGlsZHJlblVwZGF0ZXMgfSkpXHJcblxyXG4gICAgICAgIC8vIFNvcnQgdGhlIE1ham9yIEluY2lkZW50cyBieSBkYXRlXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubWFqb3JJbmNpZGVudCEuY3JlYXRlZG9uLmxvY2FsZUNvbXBhcmUoYS5tYWpvckluY2lkZW50IS5jcmVhdGVkb24pKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIk1ham9yIEluY2lkZW50c1wiPlxyXG4gICAgICAgICAgICB7cG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNCeVBhcmVudENhc2UubWFwKCh7IG1ham9ySW5jaWRlbnQsIGNoaWxkcmVuVXBkYXRlcyB9KSA9PiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1ham9yLWluY2lkZW50XCIgZGF0YS1pbmNpZGVudC1pZD17bWFqb3JJbmNpZGVudC5pbmNpZGVudGlkfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1ham9yLWluY2lkZW50LXVwZGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cIm1ham9yLWluY2lkZW50LXRpdGxlXCI+TWFqb3IgSW5jaWRlbnQge21ham9ySW5jaWRlbnQudGlja2V0bnVtYmVyfTwvaDI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW5VcGRhdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5jcmVhdGVkb24ubG9jYWxlQ29tcGFyZShhLmNyZWF0ZWRvbikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUuYWN0aXZpdHlpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWFqb3ItaW5jaWRlbnQtdXBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10eXBlPXtnZXRNYWpvckluY2lkZW50VXBkYXRlVHlwZShwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLnN1YmplY3QpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYWpvci1pbmNpZGVudC11cGRhdGUtaGVhZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZS5zdWJqZWN0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1yZWNvcmQtaWQ9e3BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUuYWN0aXZpdHlpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWFqb3ItaW5jaWRlbnQtdXBkYXRlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUuc3ViamVjdH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1ham9yLWluY2lkZW50LXVwZGF0ZS1zdGF0dXMtc25hcHNob3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM6IHtwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlLmJpc3RlY2hfY2FzZXN0YXR1c3NuYXBzaG90fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWFqb3ItaW5jaWRlbnQtdXBkYXRlLWNyZWF0ZWQtb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYWpvci1pbmNpZGVudC11cGRhdGUtY3JlYXRlZC1vbi1kYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEYXRlSGVscGVyLnRvRGF0ZU9ubHlTdHJpbmcocG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZS5jcmVhdGVkb24pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYWpvci1pbmNpZGVudC11cGRhdGUtY3JlYXRlZC1vbi10aW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtEYXRlSGVscGVyLnRvVGltZU9ubHlTdHJpbmcocG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZS5jcmVhdGVkb24pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWFqb3ItaW5jaWRlbnQtdXBkYXRlLWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZS5kZXNjcmlwdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIE1ham9yIEluY2lkZW50IFVwZGF0ZTsgdXNlZCBmb3Igc3R5bGluZyBwdXJwb3Nlcy5cclxuICAgICAqIEBwYXJhbSBzdWJqZWN0IFRoZSBzdWJqZWN0IG9mIHRoZSBNYWpvciBJbmNpZGVudCBVcGRhdGVcclxuICAgICAqIEByZXR1cm5zIFRoZSB0eXBlIG9mIE1ham9yIEluY2lkZW50IFR5cGVcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZ2V0TWFqb3JJbmNpZGVudFVwZGF0ZVR5cGUoc3ViamVjdDogc3RyaW5nKSB7XHJcbiAgICAgICAgc3dpdGNoIChzdWJqZWN0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJNYWpvciBJbmNpZGVudCBDcmVhdGVkXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjcmVhdGVkXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiVXBkYXRlXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJ1cGRhdGVkXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiTWFqb3IgSW5jaWRlbnQgUmUtT3BlbmVkXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZS1vcGVuZWRcIjtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJNYWpvciBJbmNpZGVudCBSZXNvbHZlZFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicmVzb2x2ZWRcIjtcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgYFVuZXhwZWN0ZWQgTWFqb3IgSW5jaWRlbnQgVXBkYXRlIHR5cGUgcHJvdmlkZWQsIHdhcyAnJHtzdWJqZWN0fScgYnV0IGV4cGVjdGVkIGVpdGhlciAnTWFqb3IgSW5jaWRlbnQgQ3JlYXRlZCcsICdVcGRhdGUnLCAnTWFqb3IgSW5jaWRlbnQgUmUtT3BlbmVkJyBvciAnTWFqb3IgSW5jaWRlbnQgUmVzb2x2ZWQnYFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQnNBc3RlcmlzaywgQnNDaGVja0xnIH0gZnJvbSBcInJlYWN0LWljb25zL2JzXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcclxuXHJcbi8qKiBSYWRpbyBCdXR0b24gQm9vbGVhbiBmaWVsZCAqL1xyXG5leHBvcnQgY29uc3QgUmFkaW9CdXR0b25Cb29sZWFuRmllbGQ6IFJlYWN0LkZDPHtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICB0b29sdGlwOiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgICB2YWx1ZTogYm9vbGVhbjtcclxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XHJcbiAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LklucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sIEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gICAgYWRkaXRpb25hbExhYmVsUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5MYWJlbEhUTUxBdHRyaWJ1dGVzPEhUTUxMYWJlbEVsZW1lbnQ+LCBIVE1MTGFiZWxFbGVtZW50PiAmIHtcclxuICAgICAgICBbZGF0YUF0dHJpYnV0ZTogc3RyaW5nXTogYW55O1xyXG4gICAgfTtcclxuICAgIGN1c3RvbVZhbGlkaXR5PzogKHZhbGlkaXR5OiBWYWxpZGl0eVN0YXRlKSA9PiBzdHJpbmc7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCBpbnB1dEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XHJcblxyXG4gICAgLy8gSWYgdGhlcmUgYXJlIGFueSBjdXN0b20gdmFsaWRpdHkgcnVsZXMuXHJcbiAgICBpZiAocHJvcHMuY3VzdG9tVmFsaWRpdHkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlucHV0RWxlbWVudFJlZi5jdXJyZW50Py5zZXRDdXN0b21WYWxpZGl0eShwcm9wcy5jdXN0b21WYWxpZGl0eShpbnB1dEVsZW1lbnRSZWYuY3VycmVudC52YWxpZGl0eSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCB0aGUgZGVmYXVsdHMgZm9yIHRoZSBjb250cm9sXHJcbiAgICBjb25zdCBhZGRpdGlvbmFsSW5wdXRQcm9wczogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8XHJcbiAgICAgICAgUmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PixcclxuICAgICAgICBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICA+ID0ge1xyXG4gICAgICAgIC4uLnByb3BzLmFkZGl0aW9uYWxJbnB1dFByb3BzLFxyXG4gICAgICAgIHJlcXVpcmVkOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRQcm9wcz8ucmVxdWlyZWQgPz8gdHJ1ZSxcclxuICAgICAgICBhdXRvQ29tcGxldGU6IHByb3BzLmFkZGl0aW9uYWxJbnB1dFByb3BzPy5hdXRvQ29tcGxldGUgPz8gXCJvZmZcIixcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8bGFiZWwgZGF0YS1uYW1lPXtwcm9wcy5uYW1lfSBjbGFzc05hbWU9XCJmaWVsZCByYWRpby1idXR0b24tYm9vbGVhbi1maWVsZFwiIHsuLi5wcm9wcy5hZGRpdGlvbmFsTGFiZWxQcm9wc30+XHJcbiAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAge2FkZGl0aW9uYWxJbnB1dFByb3BzLnJlcXVpcmVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dEVsZW1lbnRSZWYuY3VycmVudD8udmFsaWRpdHkudmFsaWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnNDaGVja0xnIGNsYXNzTmFtZT1cImNvbXBsZXRlZC1pY29uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCc0FzdGVyaXNrIGNsYXNzTmFtZT1cInJlcXVpcmVkLWljb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudG9vbHRpcCAmJiA8VG9vbHRpcCBvdmVybGF5Q29udGVudD17cHJvcHMudG9vbHRpcH0+PC9Ub29sdGlwPn1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAge2lucHV0RWxlbWVudFJlZi5jdXJyZW50Py52YWxpZGF0aW9uTWVzc2FnZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidmFsaWRpdHktbWVzc2FnZVwiPntpbnB1dEVsZW1lbnRSZWYuY3VycmVudD8udmFsaWRhdGlvbk1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGQtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJub1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZC1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gcHJvcHMub25DaGFuZ2UoZmFsc2UpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IXByb3BzLnZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dEVsZW1lbnRSZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYWRkaXRpb25hbElucHV0UHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vXHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwieWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwieWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkLWNvbnRyb2wgcmFkaW8tYnV0dG9uLXNwYWNpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBwcm9wcy5vbkNoYW5nZSh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17aW5wdXRFbGVtZW50UmVmfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17cHJvcHMudmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uYWRkaXRpb25hbElucHV0UHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFllc1xyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFN0cmluZ0ZpZWxkIH0gZnJvbSBcIi4vU3RyaW5nRmllbGRcIjtcclxuXHJcbi8qKiBUZWxlcGhvbmUgZmllbGQgKi9cclxuZXhwb3J0IGNvbnN0IFRlbGVwaG9uZUZpZWxkOiBSZWFjdC5GQzx7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICB0b29sdGlwPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IHN0cmluZykgPT4gdm9pZDtcclxuICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSW5wdXRIVE1MQXR0cmlidXRlczxIVE1MSW5wdXRFbGVtZW50PiwgSFRNTElucHV0RWxlbWVudD47XHJcbiAgICBhZGRpdGlvbmFsTGFiZWxQcm9wcz86IFJlYWN0LkRldGFpbGVkSFRNTFByb3BzPFJlYWN0LkxhYmVsSFRNTEF0dHJpYnV0ZXM8SFRNTExhYmVsRWxlbWVudD4sIEhUTUxMYWJlbEVsZW1lbnQ+ICYge1xyXG4gICAgICAgIFtkYXRhQXR0cmlidXRlOiBzdHJpbmddOiBhbnk7XHJcbiAgICB9O1xyXG4gICAgcmVxdWlyZWRHcm91cD86IGJvb2xlYW47XHJcbiAgICBjdXN0b21WYWxpZGl0eT86ICh2YWxpZGl0eTogVmFsaWRpdHlTdGF0ZSkgPT4gc3RyaW5nO1xyXG59PiA9IChwcm9wcykgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgLi4ucHJvcHMuYWRkaXRpb25hbElucHV0UHJvcHMsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcInRlbFwiLFxyXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiAxMCxcclxuICAgICAgICAgICAgICAgIG1heExlbmd0aDogMTYsXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBcIl5cXFxcK1xcXFxkezksMTV9fFxcXFxkezEwLDE2fSRcIixcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRQcm9wcz8ucGxhY2Vob2xkZXIgfHwgXCJQcm92aWRlIGEgdGVsZXBob25lIG51bWJlclwiLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBjdXN0b21WYWxpZGl0eT17KHZhbGlkaXR5KSA9PlxyXG4gICAgICAgICAgICAgICAgdmFsaWRpdHkucGF0dGVybk1pc21hdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgPyBcIlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgdGVsZXBob25lIG51bWJlciAoYmV0d2VlbiAxMCBhbmQgMTYgZGlnaXRzLCB3aXRoIGFuIG9wdGlvbmFsICcrJyBhdCB0aGUgc3RhcnQpLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5jdXN0b21WYWxpZGl0eT8uKHZhbGlkaXR5KSB8fCBcIlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBCc0FzdGVyaXNrIH0gZnJvbSBcInJlYWN0LWljb25zL2JzXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcclxuXHJcbi8qKiBQb3B1cCBsaW5rIGZpZWxkICovXHJcbmV4cG9ydCBjb25zdCBQb3B1cExpbmtGaWVsZDogUmVhY3QuRkM8e1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgdG9vbHRpcD86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgICBzdWJUZXh0PzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcclxuXHJcbiAgICBhZGRpdGlvbmFsQnV0dG9uUHJvcHM/OiBSZWFjdC5EZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5CdXR0b25IVE1MQXR0cmlidXRlczxIVE1MQnV0dG9uRWxlbWVudD4sIEhUTUxCdXR0b25FbGVtZW50PjtcclxuICAgIGFkZGl0aW9uYWxMYWJlbFByb3BzPzogUmVhY3QuRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuTGFiZWxIVE1MQXR0cmlidXRlczxIVE1MTGFiZWxFbGVtZW50PiwgSFRNTExhYmVsRWxlbWVudD4gJiB7XHJcbiAgICAgICAgW2RhdGFBdHRyaWJ1dGU6IHN0cmluZ106IGFueTtcclxuICAgIH07XHJcbiAgICByZXF1aXJlZEdyb3VwPzogYm9vbGVhbjtcclxuICAgIGN1c3RvbVZhbGlkaXR5PzogKHZhbGlkaXR5OiBWYWxpZGl0eVN0YXRlKSA9PiBzdHJpbmc7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICBkYXRhLW5hbWU9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpZWxkIHBvcHVwLWZpZWxkXCJcclxuICAgICAgICAgICAgdGl0bGU9e3Byb3BzLnRpdGxlIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgIHsuLi5wcm9wcy5hZGRpdGlvbmFsTGFiZWxQcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLnJlcXVpcmVkR3JvdXAgJiYgPEJzQXN0ZXJpc2sgY2xhc3NOYW1lPVwicmVxdWlyZWQtZ3JvdXAtaWNvblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy50b29sdGlwICYmIDxUb29sdGlwIG92ZXJsYXlDb250ZW50PXtwcm9wcy50b29sdGlwfT48L1Rvb2x0aXA+fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7cHJvcHMuYWRkaXRpb25hbEJ1dHRvblByb3BzPy5kaXNhYmxlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57cHJvcHMudmFsdWV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmaWVsZC1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17cHJvcHMubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gcHJvcHMub25DbGljaygpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHMuYWRkaXRpb25hbEJ1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHtwcm9wcy5zdWJUZXh0ICYmIDxzcGFuIGNsYXNzTmFtZT1cInN1YnRleHRcIj57cHJvcHMuc3ViVGV4dH08L3NwYW4+fVxyXG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBUZWFjaGluZ0J1YmJsZSB9IGZyb20gXCJAZmx1ZW50dWkvcmVhY3QvbGliL1RlYWNoaW5nQnViYmxlXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHRvIHJlbmRlciBhIHN0ZXAgb2YgYSBUZWFjaGluZyBCdWJibGUgcG9wdXAsIHRvIGhlbHAgZXhwbGFpbiBhIG5ldy9jaGFuZ2VkIGZlYXR1cmUgKi9cclxuZXhwb3J0IGNvbnN0IFRlYWNoaW5nQnViYmxlTXVsdGlTdGVwOiBSZWFjdC5GdW5jdGlvbkNvbXBvbmVudDx7XHJcbiAgICBpc1Zpc2libGU6IGJvb2xlYW47XHJcbiAgICBvbkRpc21pc3M6ICgpID0+IHZvaWQ7XHJcbiAgICBvbk5leHQ6ICgpID0+IHZvaWQ7XHJcbiAgICBoZWFkbGluZTogc3RyaW5nO1xyXG4gICAgY29udGVudDogc3RyaW5nO1xyXG4gICAgc3RhZ2VQcm9ncmVzczogeyBzdGFnZU51bWJlcjogbnVtYmVyOyB0b3RhbFN0YWdlQ291bnQ6IG51bWJlciB9O1xyXG4gICAgcmVmRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsO1xyXG59PiA9IChwcm9wcykgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICB7cHJvcHMuaXNWaXNpYmxlICYmIChcclxuICAgICAgICAgICAgICAgIDxUZWFjaGluZ0J1YmJsZVxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD17cHJvcHMucmVmRWxlbWVudH1cclxuICAgICAgICAgICAgICAgICAgICBwcmltYXJ5QnV0dG9uUHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zdGFnZVByb2dyZXNzLnN0YWdlTnVtYmVyID49IHByb3BzLnN0YWdlUHJvZ3Jlc3MudG90YWxTdGFnZUNvdW50ID8gXCJGaW5pc2hcIiA6IFwiTmV4dFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBwcm9wcy5vbk5leHQsXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlCdXR0b25Qcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogXCJDbG9zZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBwcm9wcy5vbkRpc21pc3MsXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBoYXNDbG9zZUJ1dHRvbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICBvbkRpc21pc3M9e3Byb3BzLm9uRGlzbWlzc31cclxuICAgICAgICAgICAgICAgICAgICBmb290ZXJDb250ZW50PXtgJHtwcm9wcy5zdGFnZVByb2dyZXNzLnN0YWdlTnVtYmVyfSBvZiAke3Byb3BzLnN0YWdlUHJvZ3Jlc3MudG90YWxTdGFnZUNvdW50fWB9XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGxpbmU9e3Byb3BzLmhlYWRsaW5lfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jb250ZW50fVxyXG4gICAgICAgICAgICAgICAgPC9UZWFjaGluZ0J1YmJsZT5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEltU3Bpbm5lcjIgfSBmcm9tIFwicmVhY3QtaWNvbnMvaW1cIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgQnV0dG9uSW5mb3JtYXRpb24gfSBmcm9tIFwiLi4vVHlwZXMvQnV0dG9uSW5mb3JtYXRpb25cIjtcclxuaW1wb3J0IHsgU3VibWlzc2lvblN0YXRlIH0gZnJvbSBcIi4uL1R5cGVzL1N1Ym1pc3Npb25TdGF0ZVwiO1xyXG5cclxuLyoqIEEgY29tcG9uZW50IHRoYXQgcmVuZGVycyBhIE1vZGFsIERpYWxvZy4gKi9cclxuZXhwb3J0IGNvbnN0IE1vZGFsOiBSZWFjdC5GQzx7XHJcbiAgICBidXR0b25JbmZvOiBCdXR0b25JbmZvcm1hdGlvbjtcclxuICAgIGlzTW9kYWxTaG93bjogYm9vbGVhbjtcclxuICAgIHNldElzTW9kYWxTaG93bjogKGlzU2hvd246IGJvb2xlYW4pID0+IHZvaWQ7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YSB9ID0gdXNlQXBwSW5zaWdodHMoKTtcclxuICAgIGNvbnN0IFtzaG91bGRTaG93U3Bpbm5lciwgc2V0U2hvdWxkU2hvd1NwaW5uZXJdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAgIC8vIFByb2dyZXNzIG9mIHRoZSB1cGRhdGUuXHJcbiAgICBjb25zdCBbbW9kYWxTdWJtaXNzaW9uU3RhdGUsIHNldE1vZGFsU3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oe1xyXG4gICAgICAgIHN0YXRlOiBcImlkbGVcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghcHJvcHMuYnV0dG9uSW5mby5oYXNNb2RhbCkge1xyXG4gICAgICAgIHJldHVybiA8PjwvPjtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQSBmdW5jdGlvbiB0aGF0IHJlc2V0cyB0aGUgbW9kYWwgc3RhdGUgYW5kIGNsb3NlcyB0aGUgbW9kYWwuICovXHJcbiAgICBmdW5jdGlvbiBvbkNsb3NlTW9kYWwoKSB7XHJcbiAgICAgICAgLy8gUmVzZXQgdGhlIE1vZGFsIFN1Ym1pc3Npb24gU3RhdGUuXHJcbiAgICAgICAgc2V0TW9kYWxTdWJtaXNzaW9uU3RhdGUoe1xyXG4gICAgICAgICAgICBzdGF0ZTogXCJpZGxlXCIsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHByb3BzLnNldElzTW9kYWxTaG93bihmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICB7cHJvcHMuaXNNb2RhbFNob3duICYmIChcclxuICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cIm1vZGFsLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDE+e3Byb3BzLmJ1dHRvbkluZm8ubW9kYWxJbmZvLm1vZGFsVGl0bGV9PC9oMT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidXR0b24gZGVmYXVsdCBtb2RhbC1jbG9zZVwiIG9uQ2xpY2s9e29uQ2xvc2VNb2RhbH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj54PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17YXN5bmMgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIGRlZmF1bHQgcGFnZSBzdWJtaXNzaW9uIG9mIHRoZSBmb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG91bGRTaG93U3Bpbm5lcih0cnVlKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BzLmJ1dHRvbkluZm8uaGFzTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB0aGUgYGhhc01vZGFsYCB0byBiZSAndHJ1ZScuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5idXR0b25JbmZvLm1vZGFsSW5mby5pc0Vycm9yTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCB0aGUgYGlzRXJyb3JNb2RhbGAgdG8gYmUgJ2ZhbHNlJy5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHJvcHMuYnV0dG9uSW5mby5tb2RhbEluZm8ub25DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kYWxTdWJtaXNzaW9uU3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBcImVycm9yZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IgYXMgRXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG91bGRTaG93U3Bpbm5lcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG91bGRTaG93U3Bpbm5lcihmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRJc01vZGFsU2hvd24oIXByb3BzLmlzTW9kYWxTaG93bik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmJ1dHRvbkluZm8ubW9kYWxJbmZvLm1vZGFsQ29udGVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsU3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJlcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+VGhlIHtwcm9wcy5idXR0b25JbmZvLmxhYmVsfSBhY3Rpb24gaGFzIGZhaWxlZDwvc3Ryb25nPjp7XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21vZGFsU3VibWlzc2lvblN0YXRlLmVycm9yLm1lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyFwcm9wcy5idXR0b25JbmZvLm1vZGFsSW5mby5pc0Vycm9yTW9kYWwgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1vZGFsLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Nob3VsZFNob3dTcGlubmVyIHx8IG1vZGFsU3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkU2hvd1NwaW5uZXIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1TcGlubmVyMiBjbGFzc05hbWU9XCJzcGluXCIgLz4gU3VibWl0dGluZy4uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbW9kYWxTdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwiZXJyb3JlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlVuc3VjY2Vzc2Z1bDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmJ1dHRvbkluZm8ubW9kYWxJbmZvLm1vZGFsQnV0dG9uTGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnV0dG9uIGRlZmF1bHRcIiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17b25DbG9zZU1vZGFsfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC8+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBJbVNwaW5uZXIyIH0gZnJvbSBcInJlYWN0LWljb25zL2ltXCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUFwcEluc2lnaHRzXCI7XHJcbmltcG9ydCB7IEJ1dHRvbkluZm9ybWF0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL0J1dHRvbkluZm9ybWF0aW9uXCI7XHJcbmltcG9ydCB7IFN1Ym1pc3Npb25TdGF0ZSB9IGZyb20gXCIuLi9UeXBlcy9TdWJtaXNzaW9uU3RhdGVcIjtcclxuaW1wb3J0IHsgTW9kYWwgfSBmcm9tIFwiLi9Nb2RhbFwiO1xyXG5cclxuLyoqXHJcbiAqIEEgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgYSBidXR0b24gYW5kIGhhbmRsZXMgc3VibWlzc2lvbiBzdGF0ZSB3aGljaCBkaXNwbGF5cyBhIHNwaW5uZXIgaWNvbiB3aGVuIGxvYWRpbmcuXHJcbiAqIFRoaXMgY29tcG9uZW50IGhhcyB0aGUgYWJpbGl0eSB0byBzaG93IGEgQ29uZmlybWF0aW9uIG9yIEVycm9yIE1vZGFsIG9uIGNsaWNrIG9mIGEgYnV0dG9uLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEJ1dHRvbjogUmVhY3QuRkM8e1xyXG4gICAgYnV0dG9uSW5mbzogQnV0dG9uSW5mb3JtYXRpb247XHJcbiAgICBzZXRTdWJtaXNzaW9uU3RhdGU6IChzdWJtaXNzaW9uU3RhdGU6IFN1Ym1pc3Npb25TdGF0ZSkgPT4gdm9pZDtcclxufT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IFtzaG91bGRTaG93U3Bpbm5lciwgc2V0U2hvdWxkU2hvd1NwaW5uZXJdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgY29uc3QgW2lzTW9kYWxTaG93biwgc2V0SXNNb2RhbFNob3duXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2hvdWxkU2hvd1NwaW5uZXJ9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJ1dHRvbiBoYXMgYSBtb2RhbCB0aGVuIGRpc3BsYXkgdGhlIG1vZGFsLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5idXR0b25JbmZvLmhhc01vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgbW9kYWwgdG8gc2hvd24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzTW9kYWxTaG93bighaXNNb2RhbFNob3duKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvdWxkU2hvd1NwaW5uZXIodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5idXR0b25JbmZvLmFwcEluc2lnaHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcHJvcHMuYnV0dG9uSW5mby5hcHBJbnNpZ2h0cy5zdWJtaXNzaW9uRXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uTmFtZTogcHJvcHMuYnV0dG9uSW5mby5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwcm9wcy5idXR0b25JbmZvLm9uQ2xpY2soKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy5idXR0b25JbmZvLmFwcEluc2lnaHRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy5idXR0b25JbmZvLmFwcEluc2lnaHRzLmNvbXBsZXRlZFN1Y2Nlc3NmdWxseUV2ZW50VHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25OYW1lOiBwcm9wcy5idXR0b25JbmZvLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChyYXdFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBFcnJvciBvY2N1cnJlZCBwZXJmb3JtaW5nICcke3Byb3BzLmJ1dHRvbkluZm8ubGFiZWx9JyBidXR0b24gYmVoYXZpb3VyOiAke3Jhd0Vycm9yfWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImVycm9yZWRcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBzZXRTaG91bGRTaG93U3Bpbm5lcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7c2hvdWxkU2hvd1NwaW5uZXIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltU3Bpbm5lcjIgY2xhc3NOYW1lPVwic3BpblwiIC8+IFN1Ym1pdHRpbmcuLi5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuYnV0dG9uSW5mby5sYWJlbFxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIHtwcm9wcy5idXR0b25JbmZvLmhhc01vZGFsICYmIChcclxuICAgICAgICAgICAgICAgIDxNb2RhbCBidXR0b25JbmZvPXtwcm9wcy5idXR0b25JbmZvfSBpc01vZGFsU2hvd249e2lzTW9kYWxTaG93bn0gc2V0SXNNb2RhbFNob3duPXtzZXRJc01vZGFsU2hvd259IC8+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC8+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBCcmVhZGNydW1iIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvQnJlYWRjcnVtYlwiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ltYWdlXCI7XHJcbmltcG9ydCB7IENhbGxUb0FjdGlvbkluZm9ybWF0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL0NhbGxUb0FjdGlvbkluZm9ybWF0aW9uXCI7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9Db21wb25lbnRzL0J1dHRvblwiO1xyXG5pbXBvcnQgeyBIZWFkZXJUYWcgfSBmcm9tIFwiLi4vVHlwZXMvSGVhZGVyVGFnXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgU3VibWlzc2lvblN0YXRlIH0gZnJvbSBcIi4uL1R5cGVzL1N1Ym1pc3Npb25TdGF0ZVwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lciB9IGZyb20gXCIuLi9Db21wb25lbnRzL0xvYWRpbmdTcGlubmVyXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnMgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Ob3RpZmljYXRpb25zXCI7XHJcbmltcG9ydCB7IHVzZVdpbmRvd1dpZHRoIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVdpbmRvd1dpZHRoXCI7XHJcblxyXG4vKiogQSBjb21wb25lbnQgZm9yIHJlbmRlcmluZyBjb250ZW50IHdpdGhpbiBmb3IgcGFnZXMgd2hpY2ggcmVxdWlyZSBhIGNhbGwgdG8gYWN0aW9uLiAqL1xyXG5leHBvcnQgY29uc3QgQ2FsbFRvQWN0aW9uQmFzZVBhZ2UgPSAocHJvcHM6IHtcclxuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgY2FsbFRvQWN0aW9uSW5mb3JtYXRpb246IExvYWRpbmdEYXRhPENhbGxUb0FjdGlvbkluZm9ybWF0aW9uPjtcclxuICAgIHRhZ3M/OiBIZWFkZXJUYWdbXTtcclxuICAgIHNldFN1Ym1pc3Npb25TdGF0ZTogKHN1Ym1pc3Npb25TdGF0ZTogU3VibWlzc2lvblN0YXRlKSA9PiB2b2lkO1xyXG59KSA9PiB7XHJcbiAgICBjb25zdCBDQUxMX1RPX0FDVElPTl9JQ09OX1dJRFRIID0gNDA7XHJcbiAgICBjb25zdCBDQUxMX1RPX0FDVElPTl9JQ09OX0hFSUdIVCA9IDQwO1xyXG4gICAgY29uc3QgVEFCTEVUX1dJRFRIID0gOTkxO1xyXG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB1c2VXaW5kb3dXaWR0aCgpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnMgLz5cclxuICAgICAgICAgICAgey8qIFRoaXMgc3R5bGUgY2hlY2sgb3ZlcnJpZGVzIHRoZSBwYWRkaW5nIGZvciB0aGUgY29udGVudCBvZiBhbiBFZGl0IFBhZ2UgYmFzZWQgaWYgaXQgaXMgdGFibGV0IHdpZHRoIG9yIGJlbG93LiAqL31cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdlLWNvbnRlbnRcIiBzdHlsZT17d2luZG93V2lkdGggPCBUQUJMRVRfV0lEVEggPyB7IHBhZGRpbmdUb3A6IFwiMWVtXCIgfSA6IHt9fT5cclxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgICAgIDxCcmVhZGNydW1iIC8+XHJcbiAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsLXRvLWFjdGlvbi1iYXNlLXBhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJhc2UtcGFnZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cImNhbGwtdG8tYWN0aW9uLWJhc2UtcGFnZS10aXRsZVwiPntwcm9wcy50aXRsZX08L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxhYmVsLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGFncyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnRhZ3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigodGFnKSA9PiB0YWcudmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHRhZykgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXt0YWcubmFtZX0gY2xhc3NOYW1lPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGFnLnZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsLXRvLWFjdGlvbi1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNhbGwtdG8tYWN0aW9uLWljb24tcGFuZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jYWxsVG9BY3Rpb25JbmZvcm1hdGlvbi5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2FsbC10by1hY3Rpb24taWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtDQUxMX1RPX0FDVElPTl9JQ09OX1dJRFRIfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e0NBTExfVE9fQUNUSU9OX0lDT05fSEVJR0hUfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e3Byb3BzLmNhbGxUb0FjdGlvbkluZm9ybWF0aW9uLmRhdGEuaWNvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jYWxsVG9BY3Rpb25JbmZvcm1hdGlvbi5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsLXRvLWFjdGlvbi1pbmZvcm1hdGlvbi1wYW5lbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1pbmZvLXBhbmVsLWhhcy1idXR0b25zPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNhbGxUb0FjdGlvbkluZm9ybWF0aW9uLmRhdGEuYnV0dG9ucz8ubGVuZ3RoID8/IDAgPT09IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsLXRvLWFjdGlvbi1pbmZvcm1hdGlvbi1wYW5lbC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNhbGxUb0FjdGlvbkluZm9ybWF0aW9uLmRhdGEudGl0bGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjYWxsLXRvLWFjdGlvbi1pbmZvcm1hdGlvbi1wYW5lbC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNhbGxUb0FjdGlvbkluZm9ybWF0aW9uLmRhdGEuZGVzY3JpcHRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FsbC10by1hY3Rpb24tYnV0dG9uLXBhbmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2FsbC10by1hY3Rpb24tYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNhbGxUb0FjdGlvbkluZm9ybWF0aW9uLmRhdGEuYnV0dG9ucz8ubWFwKChidXR0b25JbmZvKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2J1dHRvbkluZm8ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkluZm89e2J1dHRvbkluZm99XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZT17cHJvcHMuc2V0U3VibWlzc2lvblN0YXRlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+e3Byb3BzLmNoaWxkcmVufTwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC8+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuL0Jhc2VQYWdlXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgTm90IEZvdW5kLzQwNCBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBOb3RGb3VuZDogUmVhY3QuRkM8XHJcbiAgICB7IHR5cGU6IFwicGFnZS1ub3QtZm91bmRcIiB9IHwgeyB0eXBlOiBcInJlY29yZC1ub3QtZm91bmRcIjsgc2luZ3VsYXJFbnRpdHlOYW1lOiBzdHJpbmcgfVxyXG4+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFwicGFnZS1ub3QtZm91bmRcIjpcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIlBhZ2UgTm90IEZvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+U29ycnksIGJ1dCB0aGUgcGFnZSB5b3Ugd2VyZSB0cnlpbmcgdG8gdmlldyBkb2VzIG5vdCBleGlzdC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+SXQgbG9va3MgbGlrZSB0aGlzIHdhcyB0aGUgcmVzdWx0IG9mIGVpdGhlcjo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+QSBtaXN0eXBlZCBhZGRyZXNzPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkFuIG91dC1vZi1kYXRlIGxpbms8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBjYXNlIFwicmVjb3JkLW5vdC1mb3VuZFwiOlxyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPEJhc2VQYWdlIHRpdGxlPXtgJHtwcm9wcy5zaW5ndWxhckVudGl0eU5hbWV9IE5vdCBGb3VuZGB9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlNvcnJ5LCBidXQgdGhlIHJlY29yZCB5b3Ugd2VyZSB0cnlpbmcgdG8gdmlldyBkb2VzIG5vdCBleGlzdC48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+SXQgbG9va3MgbGlrZSB0aGlzIHdhcyB0aGUgcmVzdWx0IG9mIGVpdGhlcjo8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+QSBtaXN0eXBlZCBhZGRyZXNzPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPkFuIG91dC1vZi1kYXRlIGxpbms8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG59O1xyXG4iLCIvKipcclxuICogR2V0cyBhbGwgZmllbGRzIG9mIHRoZSB1cGRhdGVkIG9iamVjdCB0aGF0IGRpZmZlciB0byB0aGUgaW5pdGlhbCBvYmplY3QuXHJcbiAqIEBwYXJhbSBpbml0aWFsIEluaXRpYWwgb2JqZWN0IGFnYWluc3Qgd2hpY2ggdG8gY29tcGFyZS5cclxuICogQHBhcmFtIHVwZGF0ZWQgVXBkYXRlIG9iamVjdC5cclxuICogQHJldHVybnMgQWxsIGZpZWxkcyBvZiB0aGUgdXBkYXRlZCBvYmplY3QgdGhhdCBkaWZmZXIgdG8gdGhlIGluaXRpYWwgb2JqZWN0LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvUGFydGlhbERpZmY8VCBleHRlbmRzIHsgW2tleTogc3RyaW5nXTogYW55IH0+KGluaXRpYWw6IFQsIHVwZGF0ZWQ6IFQpOiBQYXJ0aWFsPFQ+IHtcclxuICAgIC8vIEZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIHVwZGF0ZWQgb2JqZWN0XHJcbiAgICBjb25zdCBwYXJ0aWFsID0gT2JqZWN0LmVudHJpZXModXBkYXRlZCkucmVkdWNlPFBhcnRpYWw8VD4+KChwYXJ0aWFsLCBba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAvLyBHZXQgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhpcyBrZXlcclxuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBKU09OLnN0cmluZ2lmeShpbml0aWFsW2tleV0pO1xyXG5cclxuICAgICAgICAvLyBHZXQgdGhlIHVwZGF0ZWQgdmFsdWUgb2YgdGhpcyBrZXlcclxuICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIC8vIE9ubHkgaWYgdGhlIHVwZGF0ZWQgdmFsdWUgZGlmZmVycyBmcm9tIHRoZSBpbml0aWFsIHZhbHVlXHJcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSAhPT0gdXBkYXRlZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIChwYXJ0aWFsIGFzIGFueSlba2V5XSA9IHVwZGF0ZWRba2V5XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJ0aWFsO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIHJldHVybiBwYXJ0aWFsO1xyXG59XHJcbiIsImV4cG9ydCBjb25zdCBEaXNtaXNzQ2lyY2xlUmVndWxhciA9IChcclxuICAgIDxzdmdcclxuICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJkYXJrcmVkXCIgfX1cclxuICAgICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgICBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgdmlld0JveD1cIjAgMCA0OCA0OFwiXHJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICA+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0yNCA0YTIwIDIwIDAgMSAxIDAgNDAgMjAgMjAgMCAwIDEgMC00MFptMCAyLjVhMTcuNSAxNy41IDAgMSAwIDAgMzUgMTcuNSAxNy41IDAgMCAwIDAtMzVabS02LjIyIDkuNTIuMS4xTDI0IDIyLjIzbDYuMTItNi4xMWExLjI1IDEuMjUgMCAwIDEgMS42Ni0uMWwuMS4xYy40Ni40NS40OSAxLjE3LjEgMS42NmwtLjEuMUwyNS43NyAyNGw2LjExIDYuMTJjLjQ2LjQ1LjQ5IDEuMTcuMSAxLjY2bC0uMS4xYy0uNDUuNDYtMS4xNy40OS0xLjY2LjFsLS4xLS4xTDI0IDI1Ljc3bC02LjEyIDYuMTFjLS40NS40Ni0xLjE3LjQ5LTEuNjYuMWwtLjEtLjFhMS4yNSAxLjI1IDAgMCAxLS4xLTEuNjZsLjEtLjFMMjIuMjMgMjRsLTYuMTEtNi4xMmExLjI1IDEuMjUgMCAwIDEtLjEtMS42NmwuMS0uMWExLjI1IDEuMjUgMCAwIDEgMS42Ni0uMVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICA+PC9wYXRoPlxyXG4gICAgPC9zdmc+XHJcbik7XHJcbiIsImV4cG9ydCBjb25zdCBQZW9wbGVDb21tdW5pdHlSZWd1bGFyID0gKFxyXG4gICAgPHN2ZyBmaWxsPVwiY3VycmVudENvbG9yXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCA0OCA0OFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTExLjUgMTFhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDAgMS03IDBaTTE1IDVhNiA2IDAgMSAwIDAgMTIgNiA2IDAgMCAwIDAtMTJabTE0LjUgNmEzLjUgMy41IDAgMSAxIDcgMCAzLjUgMy41IDAgMCAxLTcgMFpNMzMgNWE2IDYgMCAxIDAgMCAxMiA2IDYgMCAwIDAgMC0xMlpNNCAyMi40NUM0IDIwLjU1IDUuNTQgMTkgNy40NSAxOWg5LjYyYy0uNDQuNzYtLjc2IDEuNi0uOTMgMi41aC04LjdhLjk1Ljk1IDAgMCAwLS45NC45NXYuNDNjMCAuMjcgMCAxLjkzIDEuMDIgMy41LjkgMS4zOSAyLjcyIDIuOTIgNi42OCAzLjFhNS40NyA1LjQ3IDAgMCAwLTIuNDYgMi4yMmMtMy4yMi0uNjMtNS4xOC0yLjItNi4zMi0zLjk2QTkuMTggOS4xOCAwIDAgMSA0IDIyLjg4di0uNDNabTI5LjggNy4wM2E1LjQ3IDUuNDcgMCAwIDEgMi40NiAyLjIyYzMuMjItLjYzIDUuMTgtMi4yIDYuMzItMy45NkM0NCAyNS41NCA0NCAyMy4yNyA0NCAyMi44OHYtLjQzYzAtMS45LTEuNTQtMy40NS0zLjQ1LTMuNDVoLTkuNjJjLjQ0Ljc2Ljc2IDEuNi45MyAyLjVoOC43Yy41MiAwIC45NC40Mi45NC45NXYuNDNjMCAuMjcgMCAxLjkzLTEuMDIgMy41LS45IDEuMzktMi43MiAyLjkyLTYuNjggMy4xWk0yNCAxOS41YTMuNSAzLjUgMCAxIDAgMCA3IDMuNSAzLjUgMCAwIDAgMC03Wk0xOCAyM2E2IDYgMCAxIDEgMTIgMCA2IDYgMCAwIDEtMTIgMFptLTUgMTEuNDVjMC0xLjkgMS41NC0zLjQ1IDMuNDUtMy40NWgxNS4xYzEuOSAwIDMuNDUgMS41NCAzLjQ1IDMuNDV2LjQzYzAgLjQgMCAyLjY2LTEuNDIgNC44NkMzMi4xIDQyLjA0IDI5LjIzIDQ0IDI0IDQ0cy04LjEtMS45Ny05LjU4LTQuMjZDMTMgMzcuNTQgMTMgMzUuMjcgMTMgMzQuODh2LS40M1ptMy40NS0uOTVhLjk1Ljk1IDAgMCAwLS45NS45NXYuNDJjMCAuMjggMCAxLjk0IDEuMDIgMy41MS45NSAxLjQ4IDIuOTYgMy4xMiA3LjQ4IDMuMTIgNC41MiAwIDYuNTMtMS42NCA3LjQ4LTMuMTJhNi42OCA2LjY4IDAgMCAwIDEuMDItMy41di0uNDNhLjk1Ljk1IDAgMCAwLS45NS0uOTVoLTE1LjFaXCJcclxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgPjwvcGF0aD5cclxuICAgIDwvc3ZnPlxyXG4pO1xyXG4iLCJleHBvcnQgY29uc3QgUGVyc29uUmVndWxhciA9IChcclxuICAgIDxzdmcgZmlsbD1cImN1cnJlbnRDb2xvclwiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0yNCA0YTEwIDEwIDAgMSAwIDAgMjAgMTAgMTAgMCAwIDAgMC0yMFptLTcuNSAxMGE3LjUgNy41IDAgMSAxIDE1IDAgNy41IDcuNSAwIDAgMS0xNSAwWm0tNC4yNSAxNEE0LjI1IDQuMjUgMCAwIDAgOCAzMi4yNVYzM2MwIDMuNzYgMS45NCA2LjU3IDQuOTIgOC4zOEMxNS44NSA0My4xNiAxOS43OSA0NCAyNCA0NHM4LjE1LS44NCAxMS4wOC0yLjYyQzM4LjA2IDM5LjU3IDQwIDM2Ljc2IDQwIDMzdi0uNzVDNDAgMjkuOSAzOC4xIDI4IDM1Ljc1IDI4aC0yMy41Wm0tMS43NSA0LjI1YzAtLjk3Ljc4LTEuNzUgMS43NS0xLjc1aDIzLjVjLjk3IDAgMS43NS43OCAxLjc1IDEuNzVWMzNjMCAyLjc0LTEuMzYgNC44LTMuNzIgNi4yNC0yLjQxIDEuNDctNS44NSAyLjI2LTkuNzggMi4yNi0zLjkzIDAtNy4zNy0uNzktOS43OC0yLjI2LTIuMzYtMS40My0zLjcyLTMuNS0zLjcyLTYuMjR2LS43NVpcIlxyXG4gICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICA+PC9wYXRoPlxyXG4gICAgPC9zdmc+XHJcbik7XHJcbiIsImltcG9ydCB7IFRvcExldmVsUGVybWlzc2lvbkNhdGVnb3J5SW5mbyB9IGZyb20gXCIuLi9Db21wb25lbnRzL1RvcExldmVsUGVybWlzc2lvbkNhdGVnb3J5XCI7XHJcbmltcG9ydCB7IEJhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQmFzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0UGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IERpc21pc3NDaXJjbGVSZWd1bGFyIH0gZnJvbSBcIi4uLy4vSWNvbnMvRGlzbWlzc0NpcmNsZVJlZ3VsYXJcIjtcclxuaW1wb3J0IHsgUGVvcGxlQ29tbXVuaXR5UmVndWxhciB9IGZyb20gXCIuLi8uL0ljb25zL1Blb3BsZUNvbW11bml0eVJlZ3VsYXJcIjtcclxuaW1wb3J0IHsgUGVyc29uUmVndWxhciB9IGZyb20gXCIuLi8uL0ljb25zL1BlcnNvblJlZ3VsYXJcIjtcclxuaW1wb3J0IHsgaXNQcm9kdWN0aW9uIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRW52aXJvbm1lbnRCYW5uZXJcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcblxyXG4vLyBQZXJtaXNzaW9ucyB0byByZW5kZXJcclxuZXhwb3J0IGNvbnN0IFBFUk1JU1NJT05TOiBUb3BMZXZlbFBlcm1pc3Npb25DYXRlZ29yeUluZm9bXSA9IFtcclxuICAgIHtcclxuICAgICAgICBsYWJlbDogXCJObyBBY2Nlc3NcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJObyBhY2Nlc3MgdG8gYW55IGZlYXR1cmVzIG9mIHRoZSBQb3J0YWxcIixcclxuICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxcIixcclxuICAgICAgICB2YWx1ZTogQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiB7XHJcbiAgICAgICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGxhYmVsOiBcIkFkbWluaXN0cmF0b3JcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBY2Nlc3MgdG8gYWxsIGZlYXR1cmVzIG9mIHRoZSBQb3J0YWxcIixcclxuICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxcIixcclxuICAgICAgICB2YWx1ZTogQmFzZVBlcm1pc3Npb25MZXZlbC5BZG1pbmlzdHJhdG9yLFxyXG4gICAgICAgIGFkZGl0aW9uYWxGaWVsZHM6IHtcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdLFxyXG4gICAgICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWw6IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl0sXHJcbiAgICAgICAgICAgIGJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWw6IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiQWxsIE9yZGVyc1wiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiQWxsIEludm9pY2VzXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIGxhYmVsOiBcIkN1c3RvbVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgIGZpZWxkTmFtZTogXCJiaXN0ZWNoX3Blcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgIHZhbHVlOiBCYXNlUGVybWlzc2lvbkxldmVsLkN1c3RvbSxcclxuICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiB7XHJcbiAgICAgICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICAgICAgYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc3ViQ2F0ZWdvcmllczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJDYXNlc1wiLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJObyBBY2Nlc3NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTm8gYWNjZXNzIHRvIGFueSBDYXNlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBEaXNtaXNzQ2lyY2xlUmVndWxhcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBcImJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiT3duZWQgQ2FzZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWNjZXNzIHRvIENhc2VzIHdoZXJlIEkgYW0gdGhlIFByaW1hcnkgQ29udGFjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBQZXJzb25SZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiT3duZWQgQ2FzZXNcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFsbCBDYXNlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBY2Nlc3MgdG8gYWxsIENhc2VzIGZvciBteSBjb21wYW55XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IFBlb3BsZUNvbW11bml0eVJlZ3VsYXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogXCJiaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ2FzZXNcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkNvbnRhY3RzXCIsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcclxuICAgICAgICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk5vIEFjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJObyBhY2Nlc3MgdG8gYW55IENvbnRhY3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IERpc21pc3NDaXJjbGVSZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGwgQ29udGFjdHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWNjZXNzIHRvIGFsbCBDb250YWN0cyBmb3IgbXkgY29tcGFueVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBQZW9wbGVDb21tdW5pdHlSZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiQWxsIENvbnRhY3RzXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJPcmRlcnNcIixcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRPRE8gIzM0Nzk3OiBFbmFibGUgT3JkZXItcmVsYXRlZCBwZXJtaXNzaW9ucyBvbiBhbGwgZW52aXJvbm1lbnRzIG9uY2UgT3JkZXJzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsXHJcbiAgICAgICAgICAgICAgICBpc1Zpc2libGU6ICFpc1Byb2R1Y3Rpb24sXHJcblxyXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTm8gQWNjZXNzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk5vIGFjY2VzcyB0byBhbnkgT3JkZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IERpc21pc3NDaXJjbGVSZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk93bmVkIE9yZGVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJBY2Nlc3MgdG8gT3JkZXJzIHdoZXJlIEkgYW0gdGhlIFByaW1hcnkgQ29udGFjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBQZXJzb25SZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJPd25lZCBPcmRlcnNcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFsbCBPcmRlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWNjZXNzIHRvIGFsbCBPcmRlcnMgZm9yIG15IGNvbXBhbnlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogUGVvcGxlQ29tbXVuaXR5UmVndWxhcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBcImJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiQWxsIE9yZGVyc1wiXSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiSW52b2ljZXNcIixcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRPRE8gIzM3Mjg3OiBFbmFibGUgSW52b2ljZS1yZWxhdGVkIHBlcm1pc3Npb25zIG9uIGFsbCBlbnZpcm9ubWVudHMgb25jZSBJbnZvaWNlcyBjYW4gYmUgc2hvd24gb24gdGhlIFBvcnRhbFxyXG4gICAgICAgICAgICAgICAgaXNWaXNpYmxlOiAhaXNQcm9kdWN0aW9uLFxyXG5cclxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk5vIEFjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJObyBhY2Nlc3MgdG8gYW55IEludm9pY2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IERpc21pc3NDaXJjbGVSZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBbGwgSW52b2ljZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiQWNjZXNzIHRvIGFsbCBJbnZvaWNlcyBmb3IgbXkgY29tcGFueVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBQZW9wbGVDb21tdW5pdHlSZWd1bGFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBJbnZvaWNlUGVybWlzc2lvbkxldmVsW1wiQWxsIEludm9pY2VzXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9LFxyXG5dO1xyXG4iLCJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgVGVhY2hpbmdCdWJibGVNdWx0aVN0ZXAgfSBmcm9tIFwiLi9UZWFjaGluZ0J1YmJsZU11bHRpU3RlcFwiO1xyXG5pbXBvcnQgeyBUb3BMZXZlbFBlcm1pc3Npb25DYXRlZ29yeUluZm8gfSBmcm9tIFwiLi9Ub3BMZXZlbFBlcm1pc3Npb25DYXRlZ29yeVwiO1xyXG5pbXBvcnQgeyBQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCB9IGZyb20gXCIuLi9QYWdlcy9Db250YWN0c0VkaXQvQ29udGFjdHNFZGl0Q29udGVudFwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL0NvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZVwiO1xyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBQZXJtaXNzaW9uIExldmVsIHNwZWNpZmljIHRvIGFuIEVudGl0eSAoaS5lLiBDYXNlcywgT3JkZXJzLCBDb250YWN0cyBldGMuICovXHJcbmV4cG9ydCB0eXBlIFN1YkxldmVsUGVybWlzc2lvbkNhdGVnb3J5SW5mbyA9IHtcclxuICAgIC8qKiBVc2VyLWZhY2luZyBuYW1lICovXHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBVc2VyLWZhY2luZyBkZXNjcmlwdGlvbiAqL1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgY2F0ZWdvcnkgc2hvdWxkIGJlIHZpc2libGUgKi9cclxuICAgIGlzVmlzaWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogU2VsZWN0YWJsZSBvcHRpb25zIGZvciB0aGlzIFBlcm1pc3Npb24gTGV2ZWwgKGUuZy4gJ05vIEFjY2VzcycsICdPd25lZCcsICdBbGwnIGV0Yy4pICovXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgLyoqIFVzZXItZmFjaW5nIG5hbWUgKi9cclxuICAgICAgICBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgICAgICAvKiogVXNlci1mYWNpbmcgZGVzY3JpcHRpb24gKi9cclxuICAgICAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cclxuICAgICAgICAvKiogSWNvbiBmb3IgdGhlIG9wdGlvbiAqL1xyXG4gICAgICAgIGljb246IEpTWC5FbGVtZW50O1xyXG5cclxuICAgICAgICAvKiogTmFtZSBvZiB0aGUgZmllbGQgdGhpcyBvcHRpb24gc2hvdWxkIHVwZGF0ZSAqL1xyXG4gICAgICAgIGZpZWxkTmFtZToga2V5b2YgQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlO1xyXG5cclxuICAgICAgICAvKiogVmFsdWUgb2YgdGhlIGZpZWxkIHRoaXMgb3B0aW9uIHJlcHJlc2VudHMsIGZvciB1c2UgaW4ga25vd2luZyB3aGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgKi9cclxuICAgICAgICB2YWx1ZTogQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlW2tleW9mIENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZV07XHJcbiAgICB9W107XHJcbn07XHJcblxyXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyBhIFBlcm1pc3Npb24gTGV2ZWwgc3BlY2lmaWMgdG8gYW4gRW50aXR5IChpLmUuIENhc2VzLCBPcmRlcnMsIENvbnRhY3RzIGV0Yy4gKi9cclxuZXhwb3J0IGNvbnN0IFN1YkxldmVsUGVybWlzc2lvbkNhdGVnb3J5OiBSZWFjdC5GQzx7XHJcbiAgICBzdWJDYXRlZ29yeTogU3ViTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnlJbmZvO1xyXG4gICAgcGVybWlzc2lvbjogVG9wTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnlJbmZvO1xyXG4gICAgY29udGFjdDogQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlO1xyXG4gICAgb25VcGRhdGVDb250YWN0OiAodXBkYXRlZENvbnRhY3Q6IFBhcnRpYWw8Q29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlPikgPT4gdm9pZDtcclxuICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICB0ZWFjaGluZ0J1YmJsZVN0YXRlOiB7IGlzRW5hYmxlZDogZmFsc2UgfSB8IHsgaXNFbmFibGVkOiB0cnVlOyBjdXJyZW50U3RhZ2VOdW1iZXI6IG51bWJlciB9O1xyXG4gICAgc2V0VGVhY2hpbmdCdWJibGVTdGF0ZTogKHN0YXRlOiB7IGlzRW5hYmxlZDogZmFsc2UgfSB8IHsgaXNFbmFibGVkOiB0cnVlOyBjdXJyZW50U3RhZ2VOdW1iZXI6IG51bWJlciB9KSA9PiB2b2lkO1xyXG59PiA9IChwcm9wcykgPT4ge1xyXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgKGkuZS4gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBwYXJlbnQgJ3RvcC1sZXZlbCcgb3B0aW9uKVxyXG4gICAgY29uc3QgaXNFbmFibGVkID1cclxuICAgICAgICBwcm9wcy5jb250YWN0W3Byb3BzLnBlcm1pc3Npb24uZmllbGROYW1lIGFzIGtleW9mIENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZV0gPT09IHByb3BzLnBlcm1pc3Npb24udmFsdWU7XHJcblxyXG4gICAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN1Yi1jYXRlZ29yeVwiIHJlZj17cmVmfT5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0aXRsZVwiPntwcm9wcy5zdWJDYXRlZ29yeS5sYWJlbH08L2gzPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj57cHJvcHMuc3ViQ2F0ZWdvcnkuZGVzY3JpcHRpb259PC9wPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLnN1YkNhdGVnb3J5Lm9wdGlvbnMubWFwKChvcHRpb24pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17IWlzRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbnRhY3Rbb3B0aW9uLmZpZWxkTmFtZSBhcyBrZXlvZiBDb250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGVdID09PSBvcHRpb24udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmFkaW8tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb250YWN0W29wdGlvbi5maWVsZE5hbWUgYXMga2V5b2YgQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlXSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBwcm9wcy5vblVwZGF0ZUNvbnRhY3QoeyBbb3B0aW9uLmZpZWxkTmFtZV06IG9wdGlvbi52YWx1ZSB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtwcm9wcy5zdWJDYXRlZ29yeS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IWlzRW5hYmxlZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb25cIj57b3B0aW9uLmljb259PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3NOYW1lPVwidGl0bGVcIj57b3B0aW9uLmxhYmVsfTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj57b3B0aW9uLmRlc2NyaXB0aW9ufTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7cHJvcHMudGVhY2hpbmdCdWJibGVTdGF0ZS5pc0VuYWJsZWQgJiZcclxuICAgICAgICAgICAgICAgIHByb3BzLnRlYWNoaW5nQnViYmxlU3RhdGUuY3VycmVudFN0YWdlTnVtYmVyID09PSAzICYmXHJcbiAgICAgICAgICAgICAgICBwcm9wcy5pbmRleCA9PT0gMCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPFRlYWNoaW5nQnViYmxlTXVsdGlTdGVwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZkVsZW1lbnQ9e3JlZi5jdXJyZW50fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRGlzbWlzcz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0VGVhY2hpbmdCdWJibGVTdGF0ZSh7IGlzRW5hYmxlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCwgXCJmYWxzZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25OZXh0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5zZXRUZWFjaGluZ0J1YmJsZVN0YXRlKHsgaXNFbmFibGVkOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFBFUk1JU1NJT05fTEVWRUxfVEVBQ0hJTkdfQlVCQkxFX1NIT1dOX0lELCBcImZhbHNlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGluZT1cIkN1c3RvbSBQZXJtaXNzaW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9XCJXZSBub3cgZ2l2ZSB5b3UgYWNjZXNzIHRvIHByb3ZpZGUgc3BlY2lmaWMgZmVhdHVyZSBsZXZlbCBwZXJtaXNzaW9ucyB0byB5b3VyIGNvbnRhY3RzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlUHJvZ3Jlc3M9e3sgc3RhZ2VOdW1iZXI6IDMsIHRvdGFsU3RhZ2VDb3VudDogMyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFBFUk1JU1NJT05fTEVWRUxfVEVBQ0hJTkdfQlVCQkxFX1NIT1dOX0lEIH0gZnJvbSBcIi4uL1BhZ2VzL0NvbnRhY3RzRWRpdC9Db250YWN0c0VkaXRDb250ZW50XCI7XHJcbmltcG9ydCB7IFN1YkxldmVsUGVybWlzc2lvbkNhdGVnb3J5LCBTdWJMZXZlbFBlcm1pc3Npb25DYXRlZ29yeUluZm8gfSBmcm9tIFwiLi9TdWJMZXZlbFBlcm1pc3Npb25DYXRlZ29yeVwiO1xyXG5pbXBvcnQgeyBUZWFjaGluZ0J1YmJsZU11bHRpU3RlcCB9IGZyb20gXCIuL1RlYWNoaW5nQnViYmxlTXVsdGlTdGVwXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZSB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlXCI7XHJcblxyXG4vKiogUmVwcmVzZW50cyBhICd0b3AtbGV2ZWwnIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsIChpLmUuICdObyBBY2Nlc3MnLCAnQWRtaW5pc3RyYXRvcicgb3IgJ0N1c3RvbScgKi9cclxuZXhwb3J0IHR5cGUgVG9wTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnlJbmZvID0ge1xyXG4gICAgLyoqIFVzZXItZmFjaW5nIG5hbWUgKi9cclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFVzZXItZmFjaW5nIGRlc2NyaXB0aW9uICovXHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBOYW1lIG9mIHRoZSBmaWVsZCB0aGlzIG9wdGlvbiBzaG91bGQgdXBkYXRlICovXHJcbiAgICBmaWVsZE5hbWU6IGtleW9mIENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZTtcclxuXHJcbiAgICAvKiogVmFsdWUgb2YgdGhlIGZpZWxkIHRoaXMgb3B0aW9uIHJlcHJlc2VudHMsIGZvciB1c2UgaW4ga25vd2luZyB3aGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgKi9cclxuICAgIHZhbHVlOiBDb250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGVba2V5b2YgQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlXTtcclxuXHJcbiAgICAvKiogQWRkaXRpb25hbCBmaWVsZHMgb24gdGhlIENvbnRhY3Qgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWQgYWxvbmdzaWRlIHRoaXMgZmllbGQgKi9cclxuICAgIGFkZGl0aW9uYWxGaWVsZHM6IFBhcnRpYWw8Q29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlPjtcclxuXHJcbiAgICAvKiogQ3VzdG9taXNhYmxlIHN1YiBvcHRpb25zIGZvciB0aGlzIHBlcm1pc3Npb24gbGV2ZWwsIGlmIGFwcGxpY2FibGUgKi9cclxuICAgIHN1YkNhdGVnb3JpZXM/OiBTdWJMZXZlbFBlcm1pc3Npb25DYXRlZ29yeUluZm9bXTtcclxufTtcclxuXHJcbi8qKiBDb21wb25lbnQgcmVwcmVzZW50aW5nIGEgJ3RvcC1sZXZlbCcgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWwgKGkuZS4gJ05vIEFjY2VzcycsICdBZG1pbmlzdHJhdG9yJyBvciAnQ3VzdG9tJyAqL1xyXG5leHBvcnQgY29uc3QgVG9wTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnk6IFJlYWN0LkZDPHtcclxuICAgIHBlcm1pc3Npb246IFRvcExldmVsUGVybWlzc2lvbkNhdGVnb3J5SW5mbztcclxuICAgIGNvbnRhY3Q6IENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZTtcclxuICAgIG9uVXBkYXRlQ29udGFjdDogKHVwZGF0ZWRDb250YWN0OiBQYXJ0aWFsPENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZT4pID0+IHZvaWQ7XHJcbiAgICBpbmRleDogbnVtYmVyO1xyXG4gICAgdGVhY2hpbmdCdWJibGVTdGF0ZTogeyBpc0VuYWJsZWQ6IGZhbHNlIH0gfCB7IGlzRW5hYmxlZDogdHJ1ZTsgY3VycmVudFN0YWdlTnVtYmVyOiBudW1iZXIgfTtcclxuICAgIHNldFRlYWNoaW5nQnViYmxlU3RhdGU6IChzdGF0ZTogeyBpc0VuYWJsZWQ6IGZhbHNlIH0gfCB7IGlzRW5hYmxlZDogdHJ1ZTsgY3VycmVudFN0YWdlTnVtYmVyOiBudW1iZXIgfSkgPT4gdm9pZDtcclxufT4gPSAocHJvcHMpID0+IHtcclxuICAgIC8vIEhhbmRsZXIgZm9yIGNoYW5nZSBvZiB0aGlzIHBlcm1pc3Npb24gbGV2ZWxcclxuICAgIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgICAgIHByb3BzLm9uVXBkYXRlQ29udGFjdCh7XHJcbiAgICAgICAgICAgIFtwcm9wcy5wZXJtaXNzaW9uLmZpZWxkTmFtZV06IHByb3BzLnBlcm1pc3Npb24udmFsdWUsXHJcbiAgICAgICAgICAgIC4uLnByb3BzLnBlcm1pc3Npb24uYWRkaXRpb25hbEZpZWxkcyxcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVmIGZvciB0aGUgbGFiZWwgZWxlbWVudCwgdXNlZCBmb3IgcG9zaXRpb25pbmcgdGhlIHRlYWNoaW5nIGJ1YmJsZS5cclxuICAgIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MTGFiZWxFbGVtZW50IHwgbnVsbD4obnVsbCk7XHJcbiAgICBjb25zdCBbaGFzTG9hZGVkLCBzZXRIYXNMb2FkZWRdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAgIC8vIFRvIHByZXZlbnQgdGhlIHRlYWNoaW5nIGJ1YmJsZSBmcm9tIHNob3dpbmcgb24gdGhlIGZpcnN0IHJlbmRlciwgd2Ugc2V0IGEgdGltZW91dCB0byBzaG93IGl0IGFmdGVyIGEgc2hvcnQgZGVsYXkuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgc2V0SGFzTG9hZGVkKHRydWUpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcblxyXG4gICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XHJcbiAgICB9LCBbXSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvcC1sZXZlbC1wZXJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtyZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbnRhY3RbcHJvcHMucGVybWlzc2lvbi5maWVsZE5hbWUgYXMga2V5b2YgQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlXSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucGVybWlzc2lvbi52YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicmFkaW8tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb250YWN0W3Byb3BzLnBlcm1pc3Npb24uZmllbGROYW1lIGFzIGtleW9mIENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZV0gPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5wZXJtaXNzaW9uLnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidG9wLWxldmVsLXBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0aXRsZVwiPntwcm9wcy5wZXJtaXNzaW9uLmxhYmVsfTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uXCI+e3Byb3BzLnBlcm1pc3Npb24uZGVzY3JpcHRpb259PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIHsocHJvcHMucGVybWlzc2lvbi5zdWJDYXRlZ29yaWVzPy5sZW5ndGggPz8gMCkgPiAwICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN1Yi1jYXRlZ29yaWVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5wZXJtaXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3ViQ2F0ZWdvcmllcyEuZmlsdGVyKChzdWJDYXRlZ29yeSkgPT4gc3ViQ2F0ZWdvcnkuaXNWaXNpYmxlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoc3ViQ2F0ZWdvcnksIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3ViTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViQ2F0ZWdvcnk9e3N1YkNhdGVnb3J5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uPXtwcm9wcy5wZXJtaXNzaW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhY2hpbmdCdWJibGVTdGF0ZT17cHJvcHMudGVhY2hpbmdCdWJibGVTdGF0ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVhY2hpbmdCdWJibGVTdGF0ZT17cHJvcHMuc2V0VGVhY2hpbmdCdWJibGVTdGF0ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdD17cHJvcHMuY29udGFjdH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25VcGRhdGVDb250YWN0PXtwcm9wcy5vblVwZGF0ZUNvbnRhY3R9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHtwcm9wcy50ZWFjaGluZ0J1YmJsZVN0YXRlLmlzRW5hYmxlZCAmJlxyXG4gICAgICAgICAgICAgICAgcHJvcHMudGVhY2hpbmdCdWJibGVTdGF0ZS5jdXJyZW50U3RhZ2VOdW1iZXIgPT09IDIgJiZcclxuICAgICAgICAgICAgICAgIHByb3BzLmluZGV4ID09PSAwICYmXHJcbiAgICAgICAgICAgICAgICBoYXNMb2FkZWQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxUZWFjaGluZ0J1YmJsZU11bHRpU3RlcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZFbGVtZW50PXtyZWYuY3VycmVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRpc21pc3M9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnNldFRlYWNoaW5nQnViYmxlU3RhdGUoeyBpc0VuYWJsZWQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oUEVSTUlTU0lPTl9MRVZFTF9URUFDSElOR19CVUJCTEVfU0hPV05fSUQsIFwiZmFsc2VcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTmV4dD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0VGVhY2hpbmdCdWJibGVTdGF0ZSh7IGlzRW5hYmxlZDogdHJ1ZSwgY3VycmVudFN0YWdlTnVtYmVyOiAzIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGluZT1cIkJhc2UgUGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50PVwiQXMgYmVmb3JlLCB5b3UgY2FuIHNlbGVjdCBhIGJhc2UgcGVybWlzc2lvbiBsZXZlbCBmb3IgYSBjb250YWN0IHdoaWNoIHByb3ZpZGVzXHJcbiAgICAgICAgICAgICAgICAgICAgYSBwcmUtZGVmaW5lZCBzZXQgb2YgcGVybWlzc2lvbnMgZm9yIGFjY2Vzc2luZyBmZWF0dXJlcyBvZiB0aGUgcG9ydGFsLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlUHJvZ3Jlc3M9e3sgc3RhZ2VOdW1iZXI6IDIsIHRvdGFsU3RhZ2VDb3VudDogMyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGVcIjtcclxuaW1wb3J0IHsgUEVSTUlTU0lPTlMgfSBmcm9tIFwiLi4vRGF0YS9QZXJtaXNzaW9uc1wiO1xyXG5pbXBvcnQgeyBUb3BMZXZlbFBlcm1pc3Npb25DYXRlZ29yeSB9IGZyb20gXCIuL1RvcExldmVsUGVybWlzc2lvbkNhdGVnb3J5XCI7XHJcbmltcG9ydCB7IEJhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQmFzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9Db250YWN0UGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcIi4vTW9kYWxcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcblxyXG4vKiogUGVybWlzc2lvbiBQYW5lbCBmb3Igc2VsZWN0aW5nIHBlcm1pc3Npb25zIGZvciBhIENvbnRhY3QuICovXHJcbmV4cG9ydCBjb25zdCBQZXJtaXNzaW9uc1BhbmVsOiBSZWFjdC5GQzx7XHJcbiAgICBjbG9zZVBvcHVwOiAoKSA9PiB2b2lkO1xyXG4gICAgc3VibWl0TGFiZWw6IHN0cmluZztcclxuICAgIGNvbnRhY3Q6IENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZTtcclxuICAgIG9uU2F2ZTogKGNvbnRhY3Q6IENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZSkgPT4gdm9pZDtcclxuICAgIHRlYWNoaW5nQnViYmxlU3RhdGU6IHsgaXNFbmFibGVkOiBmYWxzZSB9IHwgeyBpc0VuYWJsZWQ6IHRydWU7IGN1cnJlbnRTdGFnZU51bWJlcjogbnVtYmVyIH07XHJcbiAgICBzZXRUZWFjaGluZ0J1YmJsZVN0YXRlOiAoc3RhdGU6IHsgaXNFbmFibGVkOiBmYWxzZSB9IHwgeyBpc0VuYWJsZWQ6IHRydWU7IGN1cnJlbnRTdGFnZU51bWJlcjogbnVtYmVyIH0pID0+IHZvaWQ7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICAvLyBMb2NhbCBzdGF0ZSB0byB1c2UgZm9yIHRoZSBVSSBDb21wb25lbnQgb2YgdGhlIE1vZGFsIGZvciBwZXJtaXNzaW9ucyBzZWxlY3RpbmcgYmVmb3JlIHB1c2hpbmcgYmFjayB0byB0aGUgcGFyZW50IGNvbXBvbmVudC5cclxuICAgIGNvbnN0IFtjb250YWN0LCBzZXRDb250YWN0XSA9IHVzZVN0YXRlPENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZT4oe1xyXG4gICAgICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsOiBwcm9wcy5jb250YWN0LmJpc3RlY2hfcGVybWlzc2lvbmxldmVsID8/IEJhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcblxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY2FzZXBlcm1pc3Npb25sZXZlbDpcclxuICAgICAgICAgICAgcHJvcHMuY29udGFjdC5iaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWwgPz8gQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsOlxyXG4gICAgICAgICAgICBwcm9wcy5jb250YWN0LmJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbCA/PyBDb250YWN0UGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG5cclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOlxyXG4gICAgICAgICAgICBwcm9wcy5jb250YWN0LmJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWwgPz8gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcblxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbDpcclxuICAgICAgICAgICAgcHJvcHMuY29udGFjdC5iaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWwgPz8gSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBcIk9rXCIgYnV0dG9uIG9uIHRoZSBtb2RhbCwgd2Ugd2FudCB0byBwdXNoIHRoZSB1cGRhdGVkIGNvbnRhY3QgYmFjayB0byB0aGUgcGFyZW50IGNvbXBvbmVudCBhbmQgY2xvc2UgdGhlIE1vZGFsLlxyXG4gICAgY29uc3Qgb25DbGljayA9IChjb250YWN0OiBDb250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGUpID0+IHtcclxuICAgICAgICBwcm9wcy5vblNhdmUoY29udGFjdCk7XHJcbiAgICAgICAgcHJvcHMuY2xvc2VQb3B1cCgpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxNb2RhbFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uSW5mbz17e1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc01vZGFsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIlBlcm1pc3Npb24gTGV2ZWxcIixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFcnJvck1vZGFsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogcHJvcHMuc3VibWl0TGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb3B1cC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7UEVSTUlTU0lPTlMubWFwKChwZXJtaXNzaW9uLCBpKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3BMZXZlbFBlcm1pc3Npb25DYXRlZ29yeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbj17cGVybWlzc2lvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYWNoaW5nQnViYmxlU3RhdGU9e3Byb3BzLnRlYWNoaW5nQnViYmxlU3RhdGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZWFjaGluZ0J1YmJsZVN0YXRlPXtwcm9wcy5zZXRUZWFjaGluZ0J1YmJsZVN0YXRlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0PXtjb250YWN0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25VcGRhdGVDb250YWN0PXsoY29udGFjdFRvVXBkYXRlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0LCAuLi5jb250YWN0VG9VcGRhdGUgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFRpdGxlOiBcIkVkaXQgUGVybWlzc2lvbiBMZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiBvbkNsaWNrKGNvbnRhY3QpLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgaXNNb2RhbFNob3duPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgc2V0SXNNb2RhbFNob3duPXsoaXNTaG93bikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNTaG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbG9zZVBvcHVwKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IENhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDb250YWN0UGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JQZXJtaXNzaW9uc1VwZGF0ZSB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvclBlcm1pc3Npb25zVXBkYXRlXCI7XHJcbmltcG9ydCB7IGlzUHJvZHVjdGlvbiB9IGZyb20gXCIuL0Vudmlyb25tZW50QmFubmVyXCI7XHJcblxyXG4vKiogU3VtbWFyaWVzIHRoZSBQZXJtaXNzaW9uIExldmVscyBvZiB0aGUgQ29udGFjdCAqL1xyXG5leHBvcnQgY29uc3QgUGVybWlzc2lvbkxldmVsU3VtbWFyeTogUmVhY3QuRkM8eyBjb250YWN0OiBDb250YWN0Rm9yUGVybWlzc2lvbnNVcGRhdGUgfT4gPSAocHJvcHMpID0+IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPHVsIGNsYXNzTmFtZT1cInBlcm1pc3Npb24tbGV2ZWwtbGlzdFwiPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY2FzZS1wZXJtaXNzaW9uLWxldmVsLWxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJwZXJtaXNzaW9uLWxldmVsLWxpc3QtaXRlbS1uYW1lXCI+Q2FzZXM8L3N0cm9uZz46e1wiIFwifVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicGVybWlzc2lvbi1sZXZlbC1saXN0LWl0ZW0tdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY29udGFjdC5iaXN0ZWNoX3BvcnRhbGNhc2VwZXJtaXNzaW9ubGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBDYXNlUGVybWlzc2lvbkxldmVsW3Byb3BzLmNvbnRhY3QuYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm9uZVwifVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwiY29udGFjdC1wZXJtaXNzaW9uLWxldmVsLWxpc3QtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJwZXJtaXNzaW9uLWxldmVsLWxpc3QtaXRlbS1uYW1lXCI+Q29udGFjdHM8L3N0cm9uZz46e1wiIFwifVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicGVybWlzc2lvbi1sZXZlbC1saXN0LWl0ZW0tdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY29udGFjdC5iaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBDb250YWN0UGVybWlzc2lvbkxldmVsW3Byb3BzLmNvbnRhY3QuYmlzdGVjaF9wb3J0YWxjb250YWN0cGVybWlzc2lvbmxldmVsXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm9uZVwifVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICB7LyogVE9ETyAjMzQ3OTc6IFJlbW92ZSBiZWxvdyBmbGFnIG9uY2UgT3JkZXJzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsICovfVxyXG4gICAgICAgICAgICB7IWlzUHJvZHVjdGlvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwib3JkZXItcGVybWlzc2lvbi1sZXZlbC1saXN0LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzTmFtZT1cInBlcm1pc3Npb24tbGV2ZWwtbGlzdC1pdGVtLW5hbWVcIj5PcmRlcnM8L3N0cm9uZz46e1wiIFwifVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBlcm1pc3Npb24tbGV2ZWwtbGlzdC1pdGVtLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jb250YWN0LmJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbcHJvcHMuY29udGFjdC5iaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk5vbmVcIn1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICB7LyogVE9ETyAjMzcyODc6IFJlbW92ZSBhYm92ZSBmbGFnIG9uY2UgSW52b2ljZXMgY2FuIGJlIHNob3duIG9uIHRoZSBQb3J0YWwgKi99XHJcbiAgICAgICAgICAgIHshaXNQcm9kdWN0aW9uICYmIChcclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJpbnZvaWNlLXBlcm1pc3Npb24tbGV2ZWwtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzc05hbWU9XCJwZXJtaXNzaW9uLWxldmVsLWxpc3QtaXRlbS1uYW1lXCI+SW52b2ljZXM8L3N0cm9uZz46e1wiIFwifVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBlcm1pc3Npb24tbGV2ZWwtbGlzdC1pdGVtLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jb250YWN0LmJpc3RlY2hfcG9ydGFsaW52b2ljZXBlcm1pc3Npb25sZXZlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBJbnZvaWNlUGVybWlzc2lvbkxldmVsW3Byb3BzLmNvbnRhY3QuYmlzdGVjaF9wb3J0YWxpbnZvaWNlcGVybWlzc2lvbmxldmVsXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIk5vbmVcIn1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvdWw+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRmFIb21lIH0gZnJvbSBcInJlYWN0LWljb25zL2ZhXCI7XHJcbmltcG9ydCB7IEltU3Bpbm5lcjIgfSBmcm9tIFwicmVhY3QtaWNvbnMvaW1cIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBEcm9wZG93bkZpZWxkIH0gZnJvbSBcIi4uLy4uL0NvbXBvbmVudHMvRmllbGRzL0Ryb3Bkb3duRmllbGRcIjtcclxuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9GaWVsZHMvTG9va3VwRmllbGRcIjtcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Cb29sZWFuRmllbGQgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9GaWVsZHMvUmFkaW9CdXR0b25Cb29sZWFuRmllbGRcIjtcclxuaW1wb3J0IHsgU3RyaW5nRmllbGQgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9GaWVsZHMvU3RyaW5nRmllbGRcIjtcclxuaW1wb3J0IHsgTG9hZGluZ0RhdGEgfSBmcm9tIFwiLi4vLi4vRGVmYXVsdFJvb3RTdGF0ZVwiO1xyXG5pbXBvcnQgeyBBY2NvdW50U2l0ZVR5cGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvQWNjb3VudFNpdGVUeXBlXCI7XHJcbmltcG9ydCB7IEFjY291bnRTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvQWNjb3VudFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uLy4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgQ29udGFjdFN0YXRlQ29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9Db250YWN0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlIH0gZnJvbSBcIi4uLy4uL0VudW1zL1BvcnRhbEludml0YXRpb25TdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IFBvcnRhbEludml0YXRpb24gfSBmcm9tIFwiLi4vLi4vTW9kZWxzL1BvcnRhbEludml0YXRpb25cIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29udGFjdFR5cGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvUG9ydGFsQ29udGFjdFR5cGVcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUEFHRVMgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlUGFnZU5hdmlnYXRpb25cIjtcclxuaW1wb3J0IHsgdXNlVXNlck1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbiB9IGZyb20gXCIuLi8uLi9UeXBlcy9DYWxsVG9BY3Rpb25JbmZvcm1hdGlvblwiO1xyXG5pbXBvcnQgeyBDYWxsVG9BY3Rpb25CYXNlUGFnZSB9IGZyb20gXCIuLi9DYWxsVG9BY3Rpb25CYXNlUGFnZVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBCdXR0b25JbmZvcm1hdGlvbiB9IGZyb20gXCIuLi8uLi9UeXBlcy9CdXR0b25JbmZvcm1hdGlvblwiO1xyXG5pbXBvcnQgeyBTdWJtaXNzaW9uU3RhdGUgfSBmcm9tIFwiLi4vLi4vVHlwZXMvU3VibWlzc2lvblN0YXRlXCI7XHJcbmltcG9ydCB7IEFjY291bnQgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL0FjY291bnRcIjtcclxuaW1wb3J0IHsgUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9Qb3J0YWxJbnZpdGF0aW9uQXV0aGVudGljYXRpb25UeXBlXCI7XHJcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9EYXRlSGVscGVyXCI7XHJcbmltcG9ydCB7IFRlbGVwaG9uZUZpZWxkIH0gZnJvbSBcIi4uLy4uL0NvbXBvbmVudHMvRmllbGRzL1RlbGVwaG9uZUZpZWxkXCI7XHJcbmltcG9ydCB7IHRvUGFydGlhbERpZmYgfSBmcm9tIFwiLi4vLi4vSGVscGVycy90b1BhcnRpYWxEaWZmXCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZUFwcEluc2lnaHRzXCI7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25zUGFuZWwgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9QZXJtaXNzaW9uc1BhbmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBQb3B1cExpbmtGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9Qb3B1cExpbmtGaWVsZFwiO1xyXG5pbXBvcnQgeyBUZWFjaGluZ0J1YmJsZU11bHRpU3RlcCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL1RlYWNoaW5nQnViYmxlTXVsdGlTdGVwXCI7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25MZXZlbFN1bW1hcnkgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9QZXJtaXNzaW9uTGV2ZWxTdW1tYXJ5XCI7XHJcbmltcG9ydCB7IEJhbm5lclNhdmVQcmVyZXF1aXNpdGVzIH0gZnJvbSBcIi4uLy4uL1R5cGVzL0Jhbm5lclNhdmVQcmVyZXF1aXNpdGVzXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JVcGRhdGUgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL0NvbnRhY3RGb3JVcGRhdGVcIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvQ29udGFjdEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uLy4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgT3JkZXJQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vLi4vRW51bXMvT3JkZXJQZXJtaXNzaW9uTGV2ZWxcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCA9IFwiQmlzdGVjaDpUZWFjaGluZ0J1YmJsZTpQZXJtaXNzaW9uTGV2ZWwtMjAyMy0wOVwiO1xyXG5cclxuLyogQ29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIEVkaXQgQ29udGFjdCBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBDb250YWN0c0VkaXRDb250ZW50OiBSZWFjdC5GQzx7IGluaXRpYWxDb250YWN0OiBDb250YWN0Rm9yUmV0cmlldmFsOyBvblNhdmU6ICgpID0+IHZvaWQgfT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBhY2NvdW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuYWNjb3VudHMpO1xyXG4gICAgY29uc3QgaW5jaWRlbnRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pbmNpZGVudHMpO1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgdXNlck1ldGFkYXRhID0gdXNlVXNlck1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCB7IHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YSwgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgY29uc3QgW2NvbnRhY3RUb1VwZGF0ZSwgc2V0Q29udGFjdF0gPSB1c2VTdGF0ZTxDb250YWN0Rm9yVXBkYXRlPih7XHJcbiAgICAgICAgZmlyc3RuYW1lOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uZmlyc3RuYW1lLFxyXG4gICAgICAgIGxhc3RuYW1lOiBwcm9wcy5pbml0aWFsQ29udGFjdD8ubGFzdG5hbWUsXHJcbiAgICAgICAgam9idGl0bGU6IHByb3BzLmluaXRpYWxDb250YWN0Py5qb2J0aXRsZSxcclxuICAgICAgICB0ZWxlcGhvbmUxOiBwcm9wcy5pbml0aWFsQ29udGFjdD8udGVsZXBob25lMSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZSxcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogcHJvcHMuaW5pdGlhbENvbnRhY3Q/Ll9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlLFxyXG4gICAgICAgIGJpc3RlY2hfcGVybWlzc2lvbmxldmVsOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWwsXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbDogcHJvcHMuaW5pdGlhbENvbnRhY3Q/LmJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbCxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9wb3J0YWxvcmRlcnBlcm1pc3Npb25sZXZlbCxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWw6IHByb3BzLmluaXRpYWxDb250YWN0Py5iaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWwsXHJcbiAgICAgICAgZW1haWxhZGRyZXNzMTogcHJvcHMuaW5pdGlhbENvbnRhY3Q/LmVtYWlsYWRkcmVzczEsXHJcbiAgICAgICAgbW9iaWxlcGhvbmU6IHByb3BzLmluaXRpYWxDb250YWN0Py5tb2JpbGVwaG9uZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnM6IHByb3BzLmluaXRpYWxDb250YWN0Py5iaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnMsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlbWFqb3JpbmNpZGVudHVwZGF0ZXM6IHByb3BzLmluaXRpYWxDb250YWN0Py5iaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlcyxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9ucyxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVzZWN1cml0eXVwZGF0ZXM6IHByb3BzLmluaXRpYWxDb250YWN0Py5iaXN0ZWNoX3JlY2VpdmVzZWN1cml0eXVwZGF0ZXMsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXMsXHJcbiAgICAgICAgc3RhdGVjb2RlOiBwcm9wcy5pbml0aWFsQ29udGFjdD8uc3RhdGVjb2RlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2F2ZVByZXJlcXVpc2l0ZXM6IEJhbm5lclNhdmVQcmVyZXF1aXNpdGVzW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJGaXJzdCBOYW1lIGlzIFBvcHVsYXRlZC5cIixcclxuICAgICAgICAgICAgaXNWYWxpZDogKCkgPT4gQm9vbGVhbihjb250YWN0VG9VcGRhdGUuZmlyc3RuYW1lKSxcclxuICAgICAgICAgICAgY3VzdG9tZXJNZXNzYWdlOiBcIlBsZWFzZSBwb3B1bGF0ZSBhICdGaXJzdCBOYW1lJy5cIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTGFzdCBOYW1lIGlzIFBvcHVsYXRlZC5cIixcclxuICAgICAgICAgICAgaXNWYWxpZDogKCkgPT4gQm9vbGVhbihjb250YWN0VG9VcGRhdGUubGFzdG5hbWUpLFxyXG4gICAgICAgICAgICBjdXN0b21lck1lc3NhZ2U6IFwiUGxlYXNlIHBvcHVsYXRlIGEgJ0xhc3QgTmFtZScuXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkpvYiBUaXRsZSBpcyBQb3B1bGF0ZWQuXCIsXHJcbiAgICAgICAgICAgIGlzVmFsaWQ6ICgpID0+IEJvb2xlYW4oY29udGFjdFRvVXBkYXRlLmpvYnRpdGxlKSxcclxuICAgICAgICAgICAgY3VzdG9tZXJNZXNzYWdlOiBcIlBsZWFzZSBwb3B1bGF0ZSBhICdKb2IgVGl0bGUnLlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb250YWN0IFR5cGUgaXMgbm90IFBvcHVsYXRlZC5cIixcclxuICAgICAgICAgICAgaXNWYWxpZDogKCkgPT4gQm9vbGVhbihwcm9wcy5pbml0aWFsQ29udGFjdC5iaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlKSxcclxuICAgICAgICAgICAgY3VzdG9tZXJNZXNzYWdlOiBcIidDb250YWN0IFR5cGUnIGNhbm5vdCBiZSB1cGRhdGVkIGFmdGVyIGNyZWF0aW9uLlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbWFpbCBBZGRyZXNzIGlzIG1hbGZvcm1lZC5cIixcclxuICAgICAgICAgICAgaXNWYWxpZDogKCkgPT4gcHJvcHMuaW5pdGlhbENvbnRhY3QuZW1haWxhZGRyZXNzMT8uaW5jbHVkZXMoXCJAXCIpID8/IGZhbHNlLFxyXG4gICAgICAgICAgICBjdXN0b21lck1lc3NhZ2U6IFwiUGxlYXNlIGluY2x1ZGUgYW4gJ0AnIGluIHRoZSBlbWFpbCBhZGRyZXNzLlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFbnN1cmUgYSBjb250YWN0IHR5cGUgaXMgcG9wdWxhdGVkXCIsXHJcbiAgICAgICAgICAgIGlzVmFsaWQ6ICgpID0+XHJcbiAgICAgICAgICAgICAgICBCb29sZWFuKGNvbnRhY3RUb1VwZGF0ZS5lbWFpbGFkZHJlc3MxIHx8IGNvbnRhY3RUb1VwZGF0ZS50ZWxlcGhvbmUxIHx8IGNvbnRhY3RUb1VwZGF0ZS5tb2JpbGVwaG9uZSksXHJcbiAgICAgICAgICAgIGN1c3RvbWVyTWVzc2FnZTogXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIixcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBbY2FsbFRvQWN0aW9uSW5mb3JtYXRpb24sIHNldENhbGxUb0FjdGlvbkluZm9ybWF0aW9uXSA9IHVzZVN0YXRlPExvYWRpbmdEYXRhPENhbGxUb0FjdGlvbkluZm9ybWF0aW9uPj4oe1xyXG4gICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IFttb3N0UmVjZW50UG9ydGFsSW52aXRhdGlvbiwgc2V0TW9zdFJlY2VudFBvcnRhbEludml0YXRpb25dID0gdXNlU3RhdGU8TG9hZGluZ0RhdGE8UG9ydGFsSW52aXRhdGlvbiB8IG51bGw+Pih7XHJcbiAgICAgICAgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgW2NhbGxUb0FjdGlvblRpdGxlLCBzZXRDYWxsVG9BY3Rpb25UaXRsZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xyXG4gICAgY29uc3QgW2NhbGxUb0FjdGlvbkRlc2NyaXB0aW9uLCBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbl0gPSB1c2VTdGF0ZTxzdHJpbmc+KFwiXCIpO1xyXG4gICAgY29uc3QgW2NhbGxUb0FjdGlvbkljb24sIHNldENhbGxUb0FjdGlvbkljb25dID0gdXNlU3RhdGU8c3RyaW5nPihcIlwiKTtcclxuICAgIGNvbnN0IFtpc1BvcHVwT3Blbiwgc2V0SXNQb3B1cE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW3RlYWNoaW5nQnViYmxlU3RhdGUsIHNldFRlYWNoaW5nQnViYmxlU3RhdGVdID0gdXNlU3RhdGU8XHJcbiAgICAgICAgeyBpc0VuYWJsZWQ6IGZhbHNlIH0gfCB7IGlzRW5hYmxlZDogdHJ1ZTsgY3VycmVudFN0YWdlTnVtYmVyOiBudW1iZXIgfVxyXG4gICAgPihcclxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCkgIT09IFwiZmFsc2VcIlxyXG4gICAgICAgICAgICA/IHsgaXNFbmFibGVkOiB0cnVlLCBjdXJyZW50U3RhZ2VOdW1iZXI6IDEgfVxyXG4gICAgICAgICAgICA6IHsgaXNFbmFibGVkOiBmYWxzZSB9XHJcbiAgICApO1xyXG4gICAgY29uc3QgaXNEaXJ0eSA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuaXNEaXJ0eSk7XHJcblxyXG4gICAgLy8gRmxhZyBob2xkaW5nIHdoZXRoZXIgdGhlIGZvcm0gaGFzIGF0dGVtcHRlZCB0byBiZSBzdWJtaXR0ZWRcclxuICAgIGNvbnN0IFtmb3JtU3VibWl0QXR0ZW1wdGVkLCBzZXRGb3JtU3VibWl0QXR0ZW1wdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgICAvLyBGbGFnIGhvbGRpbmcgd2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBsb2FkZWRcclxuICAgIGNvbnN0IFtpc0xvYWRlZCwgc2V0SXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICAgIC8vIFByb2dyZXNzIG9mIHRoZSBDb250YWN0IHVwZGF0ZVxyXG4gICAgY29uc3QgW3N1Ym1pc3Npb25TdGF0ZSwgc2V0U3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oe1xyXG4gICAgICAgIHN0YXRlOiBcImlkbGVcIixcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFdoZW4gdGhlIENvbnRhY3QgaGFzIGJlZW4gdXBkYXRlZCAoYnV0IG5vdCB5ZXQgc2F2ZWQpLCB1cGRhdGUgdGhlIGlzRGlydHkgZmxhZ1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBPbWl0IHRoZSBzdGF0ZWNvZGUgZnJvbSB0aGUgdmFsaWRhdGlvbiBhcyB0aGlzIGlzIGEgc2lkZSBlZmZlY3Qgb2YgdGhlIENhbGwtdG8tQWN0aW9uXHJcbiAgICAgICAgY29uc3QgeyBzdGF0ZWNvZGUsIC4uLmNvbnRhY3RUb1ZhbGlkYXRlIH0gPSBjb250YWN0VG9VcGRhdGU7XHJcblxyXG4gICAgICAgIGNvbnN0IGhhc1Vuc2F2ZWRDaGFuZ2VzID0gT2JqZWN0LmtleXModG9QYXJ0aWFsRGlmZihwcm9wcy5pbml0aWFsQ29udGFjdCwgY29udGFjdFRvVmFsaWRhdGUpKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0SXNEaXJ0eVwiLCBpc0RpcnR5OiBoYXNVbnNhdmVkQ2hhbmdlcyB9KTtcclxuICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiU2V0U2F2ZURpcnR5UGFnZVwiLFxyXG4gICAgICAgICAgICBzYXZlRGlydHlQYWdlOiB7XHJcbiAgICAgICAgICAgICAgICBzYXZlRnVuY3Rpb246ICgpID0+IG9uU3VibWl0KCksXHJcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uUHJlcmVxdWlzaXRlczogc2F2ZVByZXJlcXVpc2l0ZXMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCBbY29udGFjdFRvVXBkYXRlLCBwcm9wcy5pbml0aWFsQ29udGFjdCwgc3VibWlzc2lvblN0YXRlXSk7XHJcblxyXG4gICAgLy8gV2hlbiB0aGUgJ21vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uJyBoYXMgbG9hZGVkIC0gc2V0IHRoZSAnY2FsbFRvQWN0aW9uSW5mb3JtYXRpb24nXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghcHJvcHMuaW5pdGlhbENvbnRhY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFjY291bnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gU2V0IHRoZSBDYWxsIFRvIEFjdGlvbiBJbmZvcm1hdGlvbi5cclxuICAgICAgICBzZXRDYWxsVG9BY3Rpb25JbmZvKHByb3BzLmluaXRpYWxDb250YWN0LCBtb3N0UmVjZW50UG9ydGFsSW52aXRhdGlvbi5kYXRhKTtcclxuXHJcbiAgICAgICAgc2V0Q2FsbFRvQWN0aW9uSW5mb3JtYXRpb24oKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBBbiBPYmplY3QgY29udGFpbmluZyB0aGUgJ0RlYWN0aXZhdGUnIENhbGwgVG8gQWN0aW9uIEJ1dHRvbiBJbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgY29uc3QgYWN0aXZhdGVDb250YWN0OiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkFjdGl2YXRlXCIsXHJcbiAgICAgICAgICAgICAgICBoYXNNb2RhbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFwcEluc2lnaHRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbkV2ZW50VHlwZTogXCJFZGl0IENvbnRhY3QgLSBDYWxsLXRvLUFjdGlvbiBzdWJtaXR0ZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRTdWNjZXNzZnVsbHlFdmVudFR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ2FsbC10by1BY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vZGFsSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzRXJyb3JNb2RhbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxUaXRsZTogXCJBY3RpdmF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsQnV0dG9uTGFiZWw6IFwiQWN0aXZhdGVcIixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbENvbnRlbnQ6IFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGFjdGl2YXRlIHRoaXMgcmVjb3JkP1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgXFxgY29udGFjdHNcXGAgdG8gaGF2ZSBsb2FkZWQgYmVmb3JlIHN1Ym1pc3Npb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBDb250YWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDb250YWN0ID0gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlQ29udGFjdChwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlY29kZTogQ29udGFjdFN0YXRlQ29kZS5BY3RpdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXdseSB1cGRhdGVkIENvbnRhY3QgdG8gc3RhdGUsIHNvIGl0IGNhbiBiZSB2aWV3ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJTZXRDb250YWN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGNvbnRhY3RzLmRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoY29udGFjdCkgPT4gY29udGFjdC5jb250YWN0aWQgIT09IHVwZGF0ZWRDb250YWN0LmNvbnRhY3RpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdChbdXBkYXRlZENvbnRhY3RdKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJBZGROb3RpZmljYXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQ29udGFjdCBhY3RpdmF0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkT25SZWxhdGl2ZVVybDogYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFuIE9iamVjdCBjb250YWluaW5nIHRoZSAnRGVhY3RpdmF0ZScgQ2FsbCBUbyBBY3Rpb24gQnV0dG9uIEluZm9ybWF0aW9uLlxyXG4gICAgICAgICAgICBjb25zdCBkZWFjdGl2YXRlQ29udGFjdDogQnV0dG9uSW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJEZWFjdGl2YXRlXCIsXHJcbiAgICAgICAgICAgICAgICBoYXNNb2RhbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFwcEluc2lnaHRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbkV2ZW50VHlwZTogXCJFZGl0IENvbnRhY3QgLSBDYWxsLXRvLUFjdGlvbiBzdWJtaXR0ZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRTdWNjZXNzZnVsbHlFdmVudFR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ2FsbC10by1BY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vZGFsSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzRXJyb3JNb2RhbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxUaXRsZTogXCJBcmUgeW91IHN1cmU/XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJEZWFjdGl2YXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50OiAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsZWdhbEVudGl0eSA9IGFjY291bnRzLmRhdGEuZmluZCgoeCkgPT4geC5hY2NvdW50aWQgPT09IHVzZXJNZXRhZGF0YS5hY2NvdW50SWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBDb250YWN0IGJlaW5nIGRlYWN0aXZhdGVkIGlzIHRoZSBLZXkgU2VydmljZSBDb250YWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzS2V5U2VydmljZUNvbnRhY3QgPSBCb29sZWFuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWxFbnRpdHk/Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlID09PSBwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0tleVNlcnZpY2VDb250YWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG93IGEgc3BlY2lmaWMgbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPldhcm5pbmc6PC9zdHJvbmc+IFlvdSBhcmUgYWJvdXQgdG8gZGVhY3RpdmF0ZSB0aGUgS2V5IFNlcnZpY2UgQ29udGFjdCBvZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIG9yZ2FuaXNhdGlvbi4gQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGNvbnRpbnVlP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBDb250YWN0IGlzIHRoZSBQcmltYXJ5IENvbnRhY3Qgb2YgYW55IGFjdGl2ZSBDYXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUHJpbWFyeUNvbnRhY3RPZkFueUNhc2UgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmRhdGEuc29tZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5jaWRlbnQpID0+IGluY2lkZW50Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlID09PSBwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcmltYXJ5Q29udGFjdE9mQW55Q2FzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdyBhIHNwZWNpZmljIG1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5XYXJuaW5nOjwvc3Ryb25nPiBZb3UgYXJlIGFib3V0IHRvIGRlYWN0aXZhdGUgdGhlIFByaW1hcnkgQ29udGFjdCBvZiBhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFzdCBvbmUgY2FzZS4gQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGNvbnRpbnVlP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWxzZTsgc2hvdyBhIGdlbmVyaWMgbWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPD5Zb3UgYXJlIGFib3V0IHRvIGRlYWN0aXZhdGUgdGhpcyBjb250YWN0LiBBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gY29udGludWU/PC8+O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKCksXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljazogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBcXGBjb250YWN0c1xcYCB0byBoYXZlIGxvYWRlZCBiZWZvcmUgc3VibWlzc2lvbmApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIENvbnRhY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhY3QgPSBhd2FpdCBkYXRhU2VydmljZS51cGRhdGVDb250YWN0KHByb3BzLmluaXRpYWxDb250YWN0LmNvbnRhY3RpZCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVjb2RlOiBDb250YWN0U3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgdXBkYXRlZCBDb250YWN0IHRvIHN0YXRlLCBzbyBpdCBjYW4gYmUgdmlld2VkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0Q29udGFjdHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBjb250YWN0cy5kYXRhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNvbnRhY3QpID0+IGNvbnRhY3QuY29udGFjdGlkICE9PSB1cGRhdGVkQ29udGFjdC5jb250YWN0aWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoW3VwZGF0ZWRDb250YWN0XSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkNvbnRhY3QgZGVhY3RpdmF0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkT25SZWxhdGl2ZVVybDogYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFuIE9iamVjdCBjb250YWluaW5nIHRoZSAnU2VuZCBJbnZpdGUnIENhbGwgVG8gQWN0aW9uIEJ1dHRvbiBJbmZvcm1hdGlvbi5cclxuICAgICAgICAgICAgY29uc3Qgc2VuZEludml0ZTogQnV0dG9uSW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJTZW5kIEludml0ZVwiLFxyXG4gICAgICAgICAgICAgICAgaGFzTW9kYWw6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhcHBJbnNpZ2h0czoge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25FdmVudFR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ2FsbC10by1BY3Rpb24gc3VibWl0dGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkU3VjY2Vzc2Z1bGx5RXZlbnRUeXBlOiBcIkVkaXQgQ29udGFjdCAtIENhbGwtdG8tQWN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtb2RhbEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgICBpc0Vycm9yTW9kYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsVGl0bGU6IFwiU2VuZCBJbnZpdGU/XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJQcm9jZWVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50OiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdvdWxkIGxpa2UgdG8gc2VuZCBhbiBpbnZpdGF0aW9uIHdpdGh7XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmluaXRpYWxDb250YWN0LmJpc3RlY2hfcGVybWlzc2lvbmxldmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEJhc2VQZXJtaXNzaW9uTGV2ZWxbcHJvcHMuaW5pdGlhbENvbnRhY3QuYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwibm9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz57XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnM/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3Ugd291bGQgbGlrZSB0byBjaGFuZ2UgdGhlIGNvbnRhY3QncyBwZXJtaXNzaW9ucywgcGxlYXNlIHNhdmUgdGhlIGZvcm0gZmlyc3QuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VuZCB0aGUgUG9ydGFsIEludml0YXRpb24uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGRhdGFTZXJ2aWNlLmV4ZWN1dGVTZW5kSW52aXRhdGlvblBvcnRhbEFjdGlvbihwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgaW52aXRhdGlvbiB0byBoaWRlIHRoZSAnU2VuZCBJbnZpdGUnIGJ1dHRvbiBhZnRlciBpdCBoYXMgYmVlbiBjbGlja2VkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRNb3N0UmVjZW50UG9ydGFsSW52aXRhdGlvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hZHhfaW52aXRlY29udGFjdF92YWx1ZTogcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkeF9pbnZpdGF0aW9uaWQ6IFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZG9uOiBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c2NvZGU6IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiU2VudFwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJBZGROb3RpZmljYXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQ29udGFjdCBJbnZpdGF0aW9uIHNlbnQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkT25SZWxhdGl2ZVVybDogYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFuIE9iamVjdCBjb250YWluaW5nIHRoZSAnU2V0IGFzIEtleSBDb250YWN0JyBDYWxsIFRvIEFjdGlvbiBCdXR0b24gSW5mb3JtYXRpb24uXHJcbiAgICAgICAgICAgIGNvbnN0IHNldEFzS2V5Q29udGFjdEJ1dHRvbjogQnV0dG9uSW5mb3JtYXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJTZXQgYXMgS2V5IENvbnRhY3RcIixcclxuICAgICAgICAgICAgICAgIGhhc01vZGFsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYXBwSW5zaWdodHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uRXZlbnRUeXBlOiBcIkVkaXQgQ29udGFjdCAtIENhbGwtdG8tQWN0aW9uIHN1Ym1pdHRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZFN1Y2Nlc3NmdWxseUV2ZW50VHlwZTogXCJFZGl0IENvbnRhY3QgLSBDYWxsLXRvLUFjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbW9kYWxJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNFcnJvck1vZGFsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbFRpdGxlOiBcIkFyZSB5b3Ugc3VyZT9cIixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbEJ1dHRvbkxhYmVsOiBcIlByb2NlZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbENvbnRlbnQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQXJlIHlvdSBzdXJlIHlvdSB3b3VsZCBsaWtlIHRvIHNldCB0aGlzIHVzZXIgYXMgeW91ciBvcmdhbmlzYXRpb24ncyBLZXkgU2VydmljZSBDb250YWN0P1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY291bnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgXFxgYWNjb3VudHNcXGAgdG8gaGF2ZSBsb2FkZWQgYmVmb3JlIHN1Ym1pc3Npb25gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBBY2NvdW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRBY2NvdW50OiBBY2NvdW50ID0gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlQWNjb3VudCh1c2VyTWV0YWRhdGEuYWNjb3VudElkISwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ByaW1hcnljb250YWN0aWRfdmFsdWU6IHByb3BzLmluaXRpYWxDb250YWN0LmNvbnRhY3RpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5ld2x5IHVwZGF0ZWQgQ29udGFjdCB0byBzdGF0ZSwgc28gaXQgY2FuIGJlIHZpZXdlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldEFjY291bnRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50czoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogYWNjb3VudHMuZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChhY2NvdW50OiBBY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRpZCAhPT0gdXBkYXRlZEFjY291bnQuYWNjb3VudGlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgUHJpbWFyeSBDb250YWN0IHRvIHRoZSBleHBlY3RlZCBDb250YWN0IHRvIGNhdGVyIGZvciBQb3J0YWwgY2FjaGUgZGVsYXlzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLnVwZGF0ZWRBY2NvdW50LCBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkFkZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJLZXkgQ29udGFjdCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZE9uUmVsYXRpdmVVcmw6IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VW50aWw6IERhdGVIZWxwZXIuYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCAxMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAvLyBBbiBPYmplY3QgY29udGFpbmluZyB0aGUgJ1NlbmQgSW52aXRlJyBFcnJvciBNb2RhbCBCdXR0b24gd2hlbiB0aGUgQ29udGFjdCBoYXMgbm8gRW1haWwgQWRkcmVzcy5cclxuICAgICAgICAgICAgY29uc3Qgbm9FbWFpbEFkZHJlc3NTZW5kSW52aXRlRXJyb3I6IEJ1dHRvbkluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiU2VuZCBJbnZpdGVcIixcclxuICAgICAgICAgICAgICAgIGhhc01vZGFsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYXBwSW5zaWdodHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJtaXNzaW9uRXZlbnRUeXBlOiBcIkVkaXQgQ29udGFjdCAtIENhbGwtdG8tQWN0aW9uIHN1Ym1pdHRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZFN1Y2Nlc3NmdWxseUV2ZW50VHlwZTogXCJFZGl0IENvbnRhY3QgLSBDYWxsLXRvLUFjdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbW9kYWxJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNFcnJvck1vZGFsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsVGl0bGU6IFwiTWlzc2luZyBFbWFpbCBBZGRyZXNzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbENvbnRlbnQ6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoaXMgY29udGFjdCBjYW5ub3QgYmUgaW52aXRlZCB0byB0aGUgQmlzdGVjaCBwb3J0YWwgYXMgdGhleSBoYXZlIG5vIGVtYWlsIGFkZHJlc3MuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHVwZGF0ZSB0aGlzIGluZm9ybWF0aW9uIGFuZCBzYXZlIHRoZSBjb250YWN0IGJlZm9yZSBpbnZpdGluZyB0aGVtIHRvIHRoZSBCaXN0ZWNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEFuIE9iamVjdCBjb250YWluaW5nIHRoZSAnU2VuZCBJbnZpdGUnIEVycm9yIE1vZGFsIEJ1dHRvbiB3aGVuIHRoZSBDb250YWN0IGhhcyBhIFBlcm1pc3Npb24gTGV2ZWwgb2YgJ05vIEFjY2VzcycuXHJcbiAgICAgICAgICAgIGNvbnN0IG5vQWNjZXNzU2VuZEludml0ZUVycm9yOiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIlNlbmQgSW52aXRlXCIsXHJcbiAgICAgICAgICAgICAgICBoYXNNb2RhbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGFwcEluc2lnaHRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvbkV2ZW50VHlwZTogXCJFZGl0IENvbnRhY3QgLSBDYWxsLXRvLUFjdGlvbiBzdWJtaXR0ZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRTdWNjZXNzZnVsbHlFdmVudFR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ2FsbC10by1BY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vZGFsSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzRXJyb3JNb2RhbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbFRpdGxlOiBcIk1pc3NpbmcgUGVybWlzc2lvbiBMZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGFsQnV0dG9uTGFiZWw6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50OiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbnRhY3QgY2Fubm90IGJlIGludml0ZWQgdG8gdGhlIEJpc3RlY2ggcG9ydGFsIGFzIHRoZXkgaGF2ZXtcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPk5vIEFjY2Vzczwvc3Ryb25nPiBhcyB0aGVpciBQZXJtaXNzaW9uIExldmVsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHVwZGF0ZSB0aGlzIGluZm9ybWF0aW9uIGFuZCBzYXZlIHRoZSBjb250YWN0IGJlZm9yZSBpbnZpdGluZyB0aGVtIHRvIHRoZSBCaXN0ZWNoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIC8vIEEgdmFsdWUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgJ0RlYWN0aXZhdGUnIGJ1dHRvbiBpcyBzaG93bi5cclxuICAgICAgICAgICAgY29uc3QgaXNEZWFjdGl2YXRlQnV0dG9uRGlzcGxheWVkID0gKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlLkFjdGl2ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRVc2VyID0gdXNlck1ldGFkYXRhLmNvbnRhY3RJZCA9PT0gcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0FjdGl2ZSAmJiAhaXNDdXJyZW50VXNlcjtcclxuICAgICAgICAgICAgfSkoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIEEgdmFsdWUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgJ0FjdGl2YXRlJyBidXR0b24gaXMgc2hvd24uXHJcbiAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZhdGVCdXR0b25EaXNwbGF5ZWQgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNJbmFjdGl2ZSA9IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZS5JbmFjdGl2ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRVc2VyID0gdXNlck1ldGFkYXRhLmNvbnRhY3RJZCA9PT0gcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0luYWN0aXZlICYmICFpc0N1cnJlbnRVc2VyO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQW4gSUlGRSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSAnU2VuZCBJbnZpdGUnIGJ1dHRvbiBpcyBzaG93bi5cclxuICAgICAgICAgICAgY29uc3QgaXNTZW5kSW52aXRlQnV0dG9uRGlzcGxheWVkID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBwb3J0YWwgaW52aXRhdGlvbnMuXHJcbiAgICAgICAgICAgICAgICBpZiAoIW1vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZWFjdGl2YXRlQnV0dG9uRGlzcGxheWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BlbmRpbmdJbnZpdGUgPVxyXG4gICAgICAgICAgICAgICAgICAgIG1vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uLmRhdGEuc3RhdHVzY29kZSA9PT0gUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJQZW5kaW5nIFNlbmRcIl0gfHxcclxuICAgICAgICAgICAgICAgICAgICBtb3N0UmVjZW50UG9ydGFsSW52aXRhdGlvbi5kYXRhLnN0YXR1c2NvZGUgPT09IFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiU2VudFwiXTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRVc2VyID0gdXNlck1ldGFkYXRhLmNvbnRhY3RJZCA9PT0gcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBpc0RlYWN0aXZhdGVCdXR0b25EaXNwbGF5ZWQgJiYgIWhhc1BlbmRpbmdJbnZpdGUgJiYgIWlzQ3VycmVudFVzZXI7XHJcbiAgICAgICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBBbiBJSUZFIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlICdTZXQgYXMgS2V5IENvbnRhY3QnIGJ1dHRvbiBpcyBzaG93bi5cclxuICAgICAgICAgICAgY29uc3QgaXNTZXRBc0tleUNvbnRhY3RCdXR0b25EaXNwbGF5ZWQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgLy8gSXMgdGhlIENvbnRhY3QgQWN0aXZlLlxyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBwcm9wcy5pbml0aWFsQ29udGFjdC5zdGF0ZWNvZGUgPT09IENvbnRhY3RTdGF0ZUNvZGUuQWN0aXZlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElzIHRoZSBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgYW4gQWRtaW5pc3RyYXRvci5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWRtaW5pc3RyYXRvciA9XHJcbiAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFkYXRhLnBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgPT09IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl07XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSXMgdGhlIENvbnRhY3QgdGhlIEtleSBDb250YWN0LlxyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNLZXlDb250YWN0ID0gYWNjb3VudHMuZGF0YS5zb21lKFxyXG4gICAgICAgICAgICAgICAgICAgIChhY2NvdW50OiBBY2NvdW50KSA9PiBhY2NvdW50Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlID09PSBwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWRcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQWN0aXZlICYmIGlzQWRtaW5pc3RyYXRvciAmJiAhaXNLZXlDb250YWN0O1xyXG4gICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgLy8gQW4gSUlGRSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSAnQ2hhbmdlIFBhc3N3b3JkJyBidXR0b24gaXMgc2hvd24uXHJcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhbmdlUGFzc3dvcmRCdXR0b25EaXNwbGF5ZWQgPSAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50VXNlciA9IHVzZXJNZXRhZGF0YS5jb250YWN0SWQgPT09IHByb3BzLmluaXRpYWxDb250YWN0LmNvbnRhY3RpZDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xvY2FsQXV0aCA9XHJcbiAgICAgICAgICAgICAgICAgICAgbW9zdFJlY2VudFBvcnRhbEludml0YXRpb24uZGF0YT8uYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZS5Mb2NhbDtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZS5BY3RpdmU7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzQ3VycmVudFVzZXIgJiYgaXNMb2NhbEF1dGggJiYgaXNBY3RpdmU7XHJcbiAgICAgICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgICAgICAvLyBBbiBJSUZFIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSAnU2VuZCBJbnZpdGUnIGJ1dHRvbiB0byBkaXNwbGF5LlxyXG4gICAgICAgICAgICBjb25zdCBzZW5kSW52aXRlQnV0dG9uOiBCdXR0b25JbmZvcm1hdGlvbiA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgQ29udGFjdCBkb2VzIG5vdCBoYXZlIGFuIEVtYWlsIEFkZHJlc3MuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXByb3BzLmluaXRpYWxDb250YWN0LmVtYWlsYWRkcmVzczEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9FbWFpbEFkZHJlc3NTZW5kSW52aXRlRXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIENvbnRhY3QgYmVpbmcgaW52aXRlZCBlaXRoZXI6XHJcbiAgICAgICAgICAgICAgICAvLyAtIEhhcyBhIG51bGwgYGJpc3RlY2hfcGVybWlzc2lvbmxldmVsYFxyXG4gICAgICAgICAgICAgICAgLy8gLSBIYXMgYSBgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxgIG9mICdObyBBY2Nlc3MnXHJcbiAgICAgICAgICAgICAgICAvLyAtIEhhcyBhbGwgY2hpbGQgUGVybWlzc2lvbiBMZXZlbHMgb2YgJ05vIEFjY2VzcydcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAhcHJvcHMuaW5pdGlhbENvbnRhY3QuYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWwgfHxcclxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbml0aWFsQ29udGFjdC5iaXN0ZWNoX3Blcm1pc3Npb25sZXZlbCA9PT0gQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChwcm9wcy5pbml0aWFsQ29udGFjdC5iaXN0ZWNoX3BvcnRhbGNvbnRhY3RwZXJtaXNzaW9ubGV2ZWwgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbENvbnRhY3QuYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsID09PSBDYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmluaXRpYWxDb250YWN0LmJpc3RlY2hfcG9ydGFsb3JkZXJwZXJtaXNzaW9ubGV2ZWwgPT09IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vQWNjZXNzU2VuZEludml0ZUVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBzZW5kSW52aXRlO1xyXG4gICAgICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2hhbmdlUGFzc3dvcmRCdXR0b246IEJ1dHRvbkluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiQ2hhbmdlIFBhc3N3b3JkXCIsXHJcbiAgICAgICAgICAgICAgICBoYXNNb2RhbDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBcIi9BY2NvdW50L01hbmFnZS9DaGFuZ2VQYXNzd29yZFwiO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYWxsVG9BY3Rpb25UaXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogY2FsbFRvQWN0aW9uRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogY2FsbFRvQWN0aW9uSWNvbixcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpc0RlYWN0aXZhdGVCdXR0b25EaXNwbGF5ZWQgPyBbZGVhY3RpdmF0ZUNvbnRhY3RdIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNBY3RpdmF0ZUJ1dHRvbkRpc3BsYXllZCA/IFthY3RpdmF0ZUNvbnRhY3RdIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNTZW5kSW52aXRlQnV0dG9uRGlzcGxheWVkID8gW3NlbmRJbnZpdGVCdXR0b25dIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNTZXRBc0tleUNvbnRhY3RCdXR0b25EaXNwbGF5ZWQgPyBbc2V0QXNLZXlDb250YWN0QnV0dG9uXSA6IFtdKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzQ2hhbmdlUGFzc3dvcmRCdXR0b25EaXNwbGF5ZWQgPyBbY2hhbmdlUGFzc3dvcmRCdXR0b25dIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBGdW5jdGlvbiB0byBnZXQgdGhlIGNvcnJlY3QgQ2FzZSBkZXNjcmlwdGlvblxyXG4gICAgICAgICAqIEBwYXJhbSBjb250YWN0IHRoZSBDb250YWN0LlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZ1bmN0aW9uIHNldENhbGxUb0FjdGlvbkluZm8oY29udGFjdDogQ29udGFjdEZvclJldHJpZXZhbCwgcG9ydGFsSW52aXRhdGlvbjogUG9ydGFsSW52aXRhdGlvbiB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICAgICAgLy8gSWYgdGhlIENvbnRhY3QgaXMgSW5hY3RpdmUuXHJcbiAgICAgICAgICAgIGlmIChjb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZS5JbmFjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uVGl0bGUoXCJJbmFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkRlc2NyaXB0aW9uKFwiQWN0aXZhdGUgdGhpcyBjb250YWN0IHRvIGdpdmUgYWNjZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uSWNvbihcImNvbnRhY3Qtc3RhdHVzLWluYWN0aXZlLnN2Z1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChjb250YWN0LmFkeF9pZGVudGl0eV9sb2dvbmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvblRpdGxlKFwiQWN0aXZlXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBDb250YWN0IGlzIHRoZSBjdXJyZW50IHVzZXJcclxuICAgICAgICAgICAgICAgIGlmIChjb250YWN0LmNvbnRhY3RpZCA9PT0gdXNlck1ldGFkYXRhLmNvbnRhY3RJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkRlc2NyaXB0aW9uKFwiVXBkYXRlIHlvdXIgcHJvZmlsZSBpbmZvcm1hdGlvbiBiZWxvd1wiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uRGVzY3JpcHRpb24oXCJEZWFjdGl2YXRlIHRvIHJldm9rZSBhY2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uSWNvbihcImNvbnRhY3Qtc3RhdHVzLWFjdGl2ZS5zdmdcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gUG9ydGFsIEludml0YXRpb25zIHRoZW4gJ05vIEFjY2VzcycuXHJcbiAgICAgICAgICAgIGlmICghcG9ydGFsSW52aXRhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uVGl0bGUoXCJObyBBY2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbihcIlNlbmQgYW4gaW52aXRhdGlvbiB0byBnaXZlIGFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkljb24oXCJjb250YWN0LXN0YXR1cy1uby1hY2Nlc3Muc3ZnXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBUaXRsZSwgRGVzY3JpcHRpb24gYW5kIEljb24gZnJvbSB0aGUgUG9ydGFsIEludml0YXRpb24gU3RhdHVzLlxyXG4gICAgICAgICAgICBzd2l0Y2ggKHBvcnRhbEludml0YXRpb24uc3RhdHVzY29kZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBQb3J0YWxJbnZpdGF0aW9uU3RhdHVzQ29kZVtcIk5ld1wiXTpcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25UaXRsZShcIk5vIEFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbihcIlNlbmQgYW4gaW52aXRhdGlvbiB0byBnaXZlIGFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25JY29uKFwiY29udGFjdC1zdGF0dXMtbm8tYWNjZXNzLnN2Z1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJQZW5kaW5nIFNlbmRcIl06XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uVGl0bGUoXCJBd2FpdGluZyBSZWRlbXB0aW9uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkRlc2NyaXB0aW9uKFwiQXdhaXRpbmcgSW52aXRhdGlvbiByZWRlbXB0aW9uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkljb24oXCJjb250YWN0LXN0YXR1cy1hd2FpdGluZy1yZWRlbXB0aW9uLnN2Z1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJTZW50XCJdOlxyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvblRpdGxlKFwiQXdhaXRpbmcgUmVkZW1wdGlvblwiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbihcIkF3YWl0aW5nIEludml0YXRpb24gcmVkZW1wdGlvblwiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25JY29uKFwiY29udGFjdC1zdGF0dXMtYXdhaXRpbmctcmVkZW1wdGlvbi5zdmdcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIFBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlW1wiUmVkZWVtZWRcIl06XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhY3QuYWR4X2lkZW50aXR5X2xvZ29uZW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25UaXRsZShcIkFjdGl2ZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uRGVzY3JpcHRpb24oXCJEZWFjdGl2YXRlIHRvIHJldm9rZSBhY2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkljb24oXCJjb250YWN0LXN0YXR1cy1hY3RpdmUuc3ZnXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvblRpdGxlKFwiTm8gQWNjZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbihcIlNlbmQgYW4gaW52aXRhdGlvbiB0byBnaXZlIGFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uSWNvbihcImNvbnRhY3Qtc3RhdHVzLW5vLWFjY2Vzcy5zdmdcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgUG9ydGFsSW52aXRhdGlvblN0YXR1c0NvZGVbXCJFeHBpcmVkXCJdOlxyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvblRpdGxlKFwiTm8gQWNjZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkRlc2NyaXB0aW9uKFwiU2VuZCBhbiBpbnZpdGF0aW9uIHRvIGdpdmUgYWNjZXNzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkljb24oXCJjb250YWN0LXN0YXR1cy1uby1hY2Nlc3Muc3ZnXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25UaXRsZShcIk5vIEFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbihcIlNlbmQgYW4gaW52aXRhdGlvbiB0byBnaXZlIGFjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRDYWxsVG9BY3Rpb25JY29uKFwiY29udGFjdC1zdGF0dXMtbm8tYWNjZXNzLnN2Z1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW1xyXG4gICAgICAgIHByb3BzLmluaXRpYWxDb250YWN0LFxyXG4gICAgICAgIG1vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uLFxyXG4gICAgICAgIGNhbGxUb0FjdGlvblRpdGxlLFxyXG4gICAgICAgIGNhbGxUb0FjdGlvbkRlc2NyaXB0aW9uLFxyXG4gICAgICAgIGNhbGxUb0FjdGlvbkljb24sXHJcbiAgICAgICAgYWNjb3VudHMsXHJcbiAgICAgICAgZGF0YVNlcnZpY2UsXHJcbiAgICAgICAgZGlzcGF0Y2gsXHJcbiAgICAgICAgdXNlck1ldGFkYXRhLFxyXG4gICAgICAgIGNvbnRhY3RzLFxyXG4gICAgXSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIE1vc3QgUmVjZW50IFBvcnRhbCBJbnZpdGF0aW9uIHJlZ2FyZGluZyB0aGUgQ29udGFjdC5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFwcm9wcy5pbml0aWFsQ29udGFjdCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobW9zdFJlY2VudFBvcnRhbEludml0YXRpb24ubG9hZGluZ1N0YXR1cyAhPT0gXCJub3Qtc3RhcnRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldENhbGxUb0FjdGlvbkluZm9ybWF0aW9uKHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSk7XHJcbiAgICAgICAgc2V0TW9zdFJlY2VudFBvcnRhbEludml0YXRpb24oeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9KTtcclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlUG9ydGFsSW52aXRhdGlvbnMocHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkKVxyXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gU29ydCB0aGUgUG9ydGFsIEludml0YXRpb25zLlxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc29ydGVkUG9ydGFsSW52aXRhdGlvbnMgPSBkYXRhLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAgICAgKGludml0YXRpb25BLCBpbnZpdGF0aW9uQikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoaW52aXRhdGlvbkIuY3JlYXRlZG9uKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShpbnZpdGF0aW9uQS5jcmVhdGVkb24pLmdldFRpbWUoKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXRNb3N0UmVjZW50UG9ydGFsSW52aXRhdGlvbih7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IHNvcnRlZFBvcnRhbEludml0YXRpb25zWzBdIHx8IG51bGwgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGRpc3BhdGNoKHsgdHlwZTogXCJBZGRMYXRlc3RFcnJvclwiLCBlcnJvciB9KSk7XHJcbiAgICB9LCBbXHJcbiAgICAgICAgcHJvcHMuaW5pdGlhbENvbnRhY3QsXHJcbiAgICAgICAgZGF0YVNlcnZpY2UsXHJcbiAgICAgICAgZGlzcGF0Y2gsXHJcbiAgICAgICAgbW9zdFJlY2VudFBvcnRhbEludml0YXRpb24sXHJcbiAgICAgICAgc2V0Q2FsbFRvQWN0aW9uSW5mb3JtYXRpb24sXHJcbiAgICAgICAgc2V0TW9zdFJlY2VudFBvcnRhbEludml0YXRpb24sXHJcbiAgICBdKTtcclxuXHJcbiAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHRoZSB1c2VyIGNvbnRhY3RJRCB0byBiZSBwb3B1bGF0ZWQgYnV0IHdhcyAnJHt1c2VyTWV0YWRhdGEuY29udGFjdElkfScgYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTWFyayB0aGUgY29tcG9uZW50IGFzIGxvYWRlZFxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRJc0xvYWRlZCh0cnVlKTtcclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICBpZiAoIXByb3BzLmluaXRpYWxDb250YWN0IHx8ICFjb250YWN0VG9VcGRhdGUpIHtcclxuICAgICAgICByZXR1cm4gPE5vdEZvdW5kIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgc2luZ3VsYXJFbnRpdHlOYW1lPVwiQ29udGFjdFwiIC8+O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3Igc3VibWlzc2lvbiBvZiB0aGUgZm9ybS5cclxuICAgICAqIEBwYXJhbSBjb250YWN0IENvbnRhY3QgdG8gdXBkYXRlLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBvblN1Ym1pdCgpIHtcclxuICAgICAgICBpZiAoY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFxcYGNvbnRhY3RzXFxgIHRvIGhhdmUgbG9hZGVkIGJlZm9yZSBzdWJtaXNzaW9uYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJzdWJtaXR0aW5nXCIgfSk7XHJcbiAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiRWRpdCBDb250YWN0IC0gQ29udGFjdCB1cGRhdGUgc3VibWl0dGVkXCIsXHJcbiAgICAgICAgICAgIGNvbnRhY3RJZDogcHJvcHMuaW5pdGlhbENvbnRhY3QuY29udGFjdGlkLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgdXBkYXRlZENvbnRhY3Q6IENvbnRhY3RGb3JSZXRyaWV2YWw7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgQ29udGFjdFxyXG4gICAgICAgICAgICB1cGRhdGVkQ29udGFjdCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZUNvbnRhY3QoXHJcbiAgICAgICAgICAgICAgICBwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWQsXHJcbiAgICAgICAgICAgICAgICB0b1BhcnRpYWxEaWZmKHByb3BzLmluaXRpYWxDb250YWN0LCBjb250YWN0VG9VcGRhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwiZXJyb3JlZFwiLCBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XHJcbiAgICAgICAgICAgIHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YT8uKGVycm9yKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkVkaXQgQ29udGFjdCAtIENvbnRhY3QgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgY29udGFjdElkOiBwcm9wcy5pbml0aWFsQ29udGFjdC5jb250YWN0aWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgdXBkYXRlZCBDb250YWN0IHRvIHN0YXRlLCBzbyBpdCBjYW4gYmUgdmlld2VkLlxyXG4gICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJTZXRDb250YWN0c1wiLFxyXG4gICAgICAgICAgICBjb250YWN0czoge1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgIGRhdGE6IGNvbnRhY3RzLmRhdGEubWFwKChjKSA9PiAoYy5jb250YWN0aWQgPT09IHVwZGF0ZWRDb250YWN0LmNvbnRhY3RpZCA/IHVwZGF0ZWRDb250YWN0IDogYykpLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJjb21wbGV0ZWRcIiB9KTtcclxuICAgICAgICBwcm9wcy5vblNhdmUoKTtcclxuXHJcbiAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkFkZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICBub3RpZmljYXRpb246IHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQ29udGFjdCB1cGRhdGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheWVkT25SZWxhdGl2ZVVybDogYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gLFxyXG4gICAgICAgICAgICAgICAgZGlzcGxheVVudGlsOiBEYXRlSGVscGVyLmFkZFNlY29uZHMobmV3IERhdGUoKSwgMTApLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENsb3NlIHRoZSBwb3B1cCBvbmNlIHRoZSB0ZWFjaGluZyBidWJibGUgaXMgY2xvc2VkXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGVhY2hpbmdCdWJibGVTdGF0ZS5pc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgc2V0SXNQb3B1cE9wZW4oZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt0ZWFjaGluZ0J1YmJsZVN0YXRlXSk7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbkxldmVsRmllbGRSZWYgPSB1c2VSZWY8SFRNTExhYmVsRWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPENhbGxUb0FjdGlvbkJhc2VQYWdlXHJcbiAgICAgICAgICAgIHRpdGxlPXtbcHJvcHMuaW5pdGlhbENvbnRhY3QuZmlyc3RuYW1lLCBwcm9wcy5pbml0aWFsQ29udGFjdC5sYXN0bmFtZV0uZmlsdGVyKChzKSA9PiBzKS5qb2luKFwiIFwiKX1cclxuICAgICAgICAgICAgdGFncz17W119XHJcbiAgICAgICAgICAgIGNhbGxUb0FjdGlvbkluZm9ybWF0aW9uPXtjYWxsVG9BY3Rpb25JbmZvcm1hdGlvbn1cclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlPXtzZXRTdWJtaXNzaW9uU3RhdGV9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8Zm9ybVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZWRpdC1jb250YWN0XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc3VibWl0LWF0dGVtcHRlZD17Zm9ybVN1Ym1pdEF0dGVtcHRlZH1cclxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXthc3luYyAoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBkZWZhdWx0IHBhZ2Ugc3VibWlzc2lvbiBvZiB0aGUgZm9ybVxyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG9uU3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgb25JbnZhbGlkPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBpZiB0aGUgY29tcG9uZW50IGlzIGxvYWRlZCAoaS5lLiBpZ25vcmUgdGhlIHZhbGlkaXR5IGNoZWNrcyB3aGVuIHRoZSBmb3JtIGlzIGluaXRpYWxseSBsb2FkZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBhIGZsYWcgZGV0YWlsaW5nIHRoYXQgYSBmb3JtIHN1Ym1pc3Npb24gaGFzIGJlZW4gYXR0ZW1wdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvcm1TdWJtaXRBdHRlbXB0ZWQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImluZm9ybWF0aW9uLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImhlYWRpbmdcIj5JbmZvcm1hdGlvbjwvaDI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd25GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkNvbnRhY3QgVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VyX2NvbnRhY3RfdHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e1tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiSW5kaXZpZHVhbCBDb250YWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBQb3J0YWxDb250YWN0VHlwZS5UZWFtQ29udGFjdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJUZWFtIENvbnRhY3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e3Byb3BzLmluaXRpYWxDb250YWN0LmJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFNlbGVjdFByb3BzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiJ0NvbnRhY3QgVHlwZScgY2Fubm90IGJlIHVwZGF0ZWQgYWZ0ZXIgY3JlYXRpb24uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmluaXRpYWxDb250YWN0LmJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJGaXJzdCBOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaXJzdG5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5maXJzdG5hbWUgfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZmlyc3RuYW1lKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdFRvVXBkYXRlLCBmaXJzdG5hbWUgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBwcm9wcy5pbml0aWFsQ29udGFjdC5zdGF0ZWNvZGUgPT09IENvbnRhY3RTdGF0ZUNvZGVbXCJJbmFjdGl2ZVwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IGNvbnRhY3RUb1VwZGF0ZS5maXJzdG5hbWUgIT09IFwiXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIGZpcnN0bmFtZTogXCJcIiB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbENvbnRhY3QuYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZSA9PT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRhbENvbnRhY3RUeXBlLkluZGl2aWR1YWxDb250YWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIkxhc3QgTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlRlYW0gTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImxhc3RuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5sYXN0bmFtZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGxhc3RuYW1lKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdFRvVXBkYXRlLCBsYXN0bmFtZSB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZVtcIkluYWN0aXZlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5pbml0aWFsQ29udGFjdC5iaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnRhbENvbnRhY3RUeXBlLkluZGl2aWR1YWxDb250YWN0ID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiSm9iIFRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJqb2J0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdFRvVXBkYXRlLmpvYnRpdGxlIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGpvYnRpdGxlKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdFRvVXBkYXRlLCBqb2J0aXRsZSB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiB0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IGNvbnRhY3RUb1VwZGF0ZS5qb2J0aXRsZSAhPT0gXCJcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFjdCh7IC4uLmNvbnRhY3RUb1VwZGF0ZSwgam9idGl0bGU6IFwiXCIgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb29rdXBGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQcmltYXJ5IFNpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e2NvbnRhY3RUb1VwZGF0ZS5fYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZSA/PyBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbE9wdGlvbnNOYW1lPVwiQWN0aXZlIFNpdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhY2NvdW50cy5kYXRhLm1hcCgoYWNjb3VudDogQWNjb3VudCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWNjb3VudC5hY2NvdW50aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVRleHQ6IGAke2FjY291bnQubmFtZX1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IEFjY291bnRTaXRlVHlwZVthY2NvdW50LmJpc3RlY2hfc2l0ZXR5cGVdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGlja2FibGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQuc3RhdGVjb2RlID09PSBBY2NvdW50U3RhdGVDb2RlW1wiQWN0aXZlXCJdICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQuYmlzdGVjaF9zaXRldHlwZSAhPT0gQWNjb3VudFNpdGVUeXBlW1wiTGVnYWwgRW50aXR5XCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25JZD17KF9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbnRhY3RUb1VwZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJTZWxlY3QgYSBTaXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZVtcIkluYWN0aXZlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25DYXJkSW5mbz17KHNlbGVjdGVkT3B0aW9uKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiA8RmFIb21lIC8+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5VGV4dDogc2VsZWN0ZWRPcHRpb24ucHJpbWFyeVRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IHNlbGVjdGVkT3B0aW9uLnNlY29uZGFyeVRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxGaWVsZHM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkVtYWlsIEFkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlbWFpbGFkZHJlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdFRvVXBkYXRlLmVtYWlsYWRkcmVzczEgfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGVtYWlsYWRkcmVzczEpID0+IHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIGVtYWlsYWRkcmVzczEgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZW1haWxcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiJ0VtYWlsIEFkZHJlc3MnIGNhbm5vdCBiZSB1cGRhdGVkLiBDb250YWN0IFNlcnZpY2UgRGVzayBpZiBhbiB1cGRhdGUgaXMgcmVxdWlyZWQuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdFJlY2VudFBvcnRhbEludml0YXRpb24ubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9zdFJlY2VudFBvcnRhbEludml0YXRpb24uZGF0YT8uYmlzdGVjaF9hdXRoZW50aWNhdGlvbnR5cGUgPT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZVtcIkxvY2FsXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRHcm91cD17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21WYWxpZGl0eT17KCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRhY3RUb1VwZGF0ZS5lbWFpbGFkZHJlc3MxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250YWN0VG9VcGRhdGUudGVsZXBob25lMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGFjdFRvVXBkYXRlLm1vYmlsZXBob25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiWW91IG11c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczogRW1haWwsIERpcmVjdCBEaWFsLCBNb2JpbGUgUGhvbmUuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRlbGVwaG9uZUZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJEaXJlY3QgRGlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImRpcmVjdGRpYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdFRvVXBkYXRlLnRlbGVwaG9uZTEgfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHRlbGVwaG9uZTEpID0+IHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIHRlbGVwaG9uZTEgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVZhbGlkaXR5PXsoKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGFjdFRvVXBkYXRlLmVtYWlsYWRkcmVzczEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRhY3RUb1VwZGF0ZS50ZWxlcGhvbmUxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250YWN0VG9VcGRhdGUubW9iaWxlcGhvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGVsZXBob25lRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIk1vYmlsZSBQaG9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1vYmlsZXBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiWW91IG11c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczogRW1haWwsIERpcmVjdCBEaWFsLCBNb2JpbGUgUGhvbmUuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5tb2JpbGVwaG9uZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobW9iaWxlcGhvbmUpID0+IHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIG1vYmlsZXBob25lIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZVtcIkluYWN0aXZlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRHcm91cD17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21WYWxpZGl0eT17KCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRhY3RUb1VwZGF0ZS5lbWFpbGFkZHJlc3MxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250YWN0VG9VcGRhdGUudGVsZXBob25lMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGFjdFRvVXBkYXRlLm1vYmlsZXBob25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiWW91IG11c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczogRW1haWwsIERpcmVjdCBEaWFsLCBNb2JpbGUgUGhvbmUuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcmVmZXJlbmNlcy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJoZWFkaW5nXCI+UHJlZmVyZW5jZXM8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcHVwTGlua0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImJpc3RlY2hfcGVybWlzc2lvbmxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Tm8gQWNjZXNzPC9zdHJvbmc+IC0gVGhlIHVzZXIgb3IgdGVhbSB3aWxsIGhhdmUgbm8gYWNjZXNzIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+QWRtaW5pc3RyYXRvcjwvc3Ryb25nPiAtIFRoZSB1c2VyIG9yIHRlYW0gd2lsbCBoYXZlIGFjY2VzcyB0byBhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBvZiB0aGUgcG9ydGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5DdXN0b208L3N0cm9uZz4gLSBUaGUgdXNlciBvciB0ZWFtIHdpbGwgaGF2ZSBjdXN0b21pc2VkIGFjY2VzcyB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRhaW4gZmVhdHVyZXMgb2YgdGhlIHBvcnRhbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbENvbnRhY3QuYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQmFzZVBlcm1pc3Npb25MZXZlbFtwcm9wcy5pbml0aWFsQ29udGFjdC5iaXN0ZWNoX3Blcm1pc3Npb25sZXZlbF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJOb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IChlZGl0KWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViVGV4dD17PFBlcm1pc3Npb25MZXZlbFN1bW1hcnkgY29udGFjdD17Y29udGFjdFRvVXBkYXRlfSAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc1BvcHVwT3BlbighaXNQb3B1cE9wZW4pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxMYWJlbFByb3BzPXt7IHJlZjogcGVybWlzc2lvbkxldmVsRmllbGRSZWYgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsQnV0dG9uUHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyTWV0YWRhdGEucG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbCAhPT1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBPbmx5IGEgdXNlciB3aXRoIHRoZSAnQWxsIENvbnRhY3RzJyBDb250YWN0IHBlcm1pc3Npb24gbGV2ZWwgY2FuIHVwZGF0ZSB0aGlzIGZpZWxkLmBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZS5JbmFjdGl2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYEEgZGVhY3RpdmF0ZWQgQ29udGFjdCBjYW5ub3QgYmUgdXBkYXRlZC5gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck1ldGFkYXRhLnBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIkFsbCBDb250YWN0c1wiXSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlLkluYWN0aXZlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRlYWNoaW5nQnViYmxlTXVsdGlTdGVwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRWxlbWVudD17cGVybWlzc2lvbkxldmVsRmllbGRSZWYuY3VycmVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Zpc2libGU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFjaGluZ0J1YmJsZVN0YXRlLmlzRW5hYmxlZCAmJiB0ZWFjaGluZ0J1YmJsZVN0YXRlLmN1cnJlbnRTdGFnZU51bWJlciA9PT0gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRpc21pc3M9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGVhY2hpbmdCdWJibGVTdGF0ZSh7IGlzRW5hYmxlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFBFUk1JU1NJT05fTEVWRUxfVEVBQ0hJTkdfQlVCQkxFX1NIT1dOX0lELCBcImZhbHNlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25OZXh0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlYWNoaW5nQnViYmxlU3RhdGUoeyBpc0VuYWJsZWQ6IHRydWUsIGN1cnJlbnRTdGFnZU51bWJlcjogMiB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNQb3B1cE9wZW4odHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkbGluZT1cIlBlcm1pc3Npb25zIGhhdmUgY2hhbmdlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD1cIldlJ3ZlIGFkZGVkIG5ldyBmZWF0dXJlcyB0byB0aGUgUG9ydGFsLCBzbyB5b3UgY2FuIG5vdyBnaXZlIHVzZXJzIGN1c3RvbWlzZWQgYWNjZXNzIHRvIHNwZWNpZmljXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2VQcm9ncmVzcz17eyBzdGFnZU51bWJlcjogMSwgdG90YWxTdGFnZUNvdW50OiAzIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJhZGlvQnV0dG9uQm9vbGVhbkZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17XCJyZWNlaXZlYWxlcnRub3RpZmljYXRpb25zXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBBbGVydCBOb3RpZmljYXRpb25zP1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlY2VpdmUgTmV0d29yayBBbGVydCBOb3RpZmljYXRpb25zIGlmIG91ciBwcm9hY3RpdmUgbW9uaXRvcmluZyB0b29sIGlkZW50aWZpZXMgaXNzdWVzIHdpdGggeW91ciBDb21wYW55J3Mgc2l0ZXMuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5iaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnMgPz8gZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhiaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9ucyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9CdXR0b25Cb29sZWFuRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtcInJlY2VpdmVwbGFubmVkbWFpbnRlbmFuY2Vub3RpZmljYXRpb25zXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBQbGFubmVkIE1haW50ZW5hbmNlIE5vdGlmaWNhdGlvbnM/XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVjZWl2ZSBQbGFubmVkIE1haW50ZW5hbmNlIE5vdGlmaWNhdGlvbnMgaWYgeW91ciBDb21wYW55J3Mgc2VydmljZXMgYXJlIGlkZW50aWZpZWQgYXMgYWZmZWN0ZWQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5iaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zID8/IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9ucykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFjdCh7IC4uLmNvbnRhY3RUb1VwZGF0ZSwgYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9ucyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9CdXR0b25Cb29sZWFuRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtcInJlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlc1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcIlJlY2VpdmUgTWFqb3IgSW5jaWRlbnQgVXBkYXRlcz9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWNlaXZlIHJlZ3VsYXIgdXBkYXRlcyBpZiB5b3VyIENvbXBhbnkgaGFzIGEgQ2FzZSBhc3NvY2lhdGVkIHRvIGEgTWFqb3IgSW5jaWRlbnQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5iaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlcyA/PyBmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdFRvVXBkYXRlLCBiaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlcyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9CdXR0b25Cb29sZWFuRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtcInJlY2VpdmVzZWN1cml0eXVwZGF0ZXNcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XCJSZWNlaXZlIFNlY3VyaXR5IFVwZGF0ZXM/XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVjZWl2ZSBTZWN1cml0eSBVcGRhdGVzIHdoZW4ga25vd24gdGhyZWF0cyBvciB2dWxuZXJhYmlsaXRpZXMgYXJlIHJlcG9ydGVkIGluIHRoZSBtYXJrZXRwbGFjZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdFRvVXBkYXRlLmJpc3RlY2hfcmVjZWl2ZXNlY3VyaXR5dXBkYXRlcyA/PyBmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZXNlY3VyaXR5dXBkYXRlcykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFjdCh7IC4uLmNvbnRhY3RUb1VwZGF0ZSwgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBwcm9wcy5pbml0aWFsQ29udGFjdC5zdGF0ZWNvZGUgPT09IENvbnRhY3RTdGF0ZUNvZGVbXCJJbmFjdGl2ZVwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0J1dHRvbkJvb2xlYW5GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wicmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlclwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcIlJlY2VpdmUgQ3VzdG9tZXIgTmV3c2xldHRlcj9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWNlaXZlIHRoZSBCaXN0ZWNoIEN1c3RvbWVyIE5ld3NsZXR0ZXIgY292ZXJpbmcgbmV3cywgdmlld3MgYW5kIHRoZSBsYXRlc3QgSVQgaW5kdXN0cnkgZGV2ZWxvcG1lbnQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5iaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXIgPz8gZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhiaXN0ZWNoX3JlY2VpdmVjdXN0b21lcm5ld3NsZXR0ZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0VG9VcGRhdGUsIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlciB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9CdXR0b25Cb29sZWFuRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtcInJlY2VpdmVwcm9kdWN0dXBkYXRlc1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcIlJlY2VpdmUgUHJvZHVjdCBVcGRhdGVzP1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9e1wiUmVjZWl2ZSBQcm9kdWN0IFVwZGF0ZXMsIHJvYWRtYXAgaW5mb3JtYXRpb24gYW5kIGVuZCBvZiBsaWZlIGFubm91bmNlbWVudHMuXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3RUb1VwZGF0ZS5iaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlcyA/PyBmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdFRvVXBkYXRlLCBiaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlcyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogcHJvcHMuaW5pdGlhbENvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiSW5hY3RpdmVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZhaWxlZCB0byB1cGRhdGUgQ29udGFjdDwvc3Ryb25nPjoge3N1Ym1pc3Npb25TdGF0ZS5lcnJvci5tZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzTmFtZT1cImJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIiB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZVtcIkluYWN0aXZlXCJdIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzRGlydHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNEaXJ0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiTm8gY2hhbmdlcyB0byBzYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcy5pbml0aWFsQ29udGFjdC5zdGF0ZWNvZGUgPT09IENvbnRhY3RTdGF0ZUNvZGVbXCJJbmFjdGl2ZVwiXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBDb250YWN0IGlzIHJlYWQtb25seSBhcyBpdCBpcyAke1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250YWN0U3RhdGVDb2RlW3Byb3BzLmluaXRpYWxDb250YWN0LnN0YXRlY29kZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LiBBY3RpdmF0ZSB0aGUgQ29udGFjdCB0byBtYWtlIGNoYW5nZXMuYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIiAmJiA8SW1TcGlubmVyMiBjbGFzc05hbWU9XCJzcGluXCIgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8TGluayBjbGFzc05hbWU9XCJidXR0b24gZGVmYXVsdFwiIHRvPXtQQUdFUy5Db250YWN0cy5wYXRofT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIHtpc1BvcHVwT3BlbiAmJiAoXHJcbiAgICAgICAgICAgICAgICA8UGVybWlzc2lvbnNQYW5lbFxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXA9eygpID0+IHNldElzUG9wdXBPcGVuKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICBjb250YWN0PXtjb250YWN0VG9VcGRhdGV9XHJcbiAgICAgICAgICAgICAgICAgICAgdGVhY2hpbmdCdWJibGVTdGF0ZT17dGVhY2hpbmdCdWJibGVTdGF0ZX1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUZWFjaGluZ0J1YmJsZVN0YXRlPXtzZXRUZWFjaGluZ0J1YmJsZVN0YXRlfVxyXG4gICAgICAgICAgICAgICAgICAgIHN1Ym1pdExhYmVsPVwiU2F2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25TYXZlPXthc3luYyAoY29udGFjdFBlcm1pc3Npb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1aWxkIHRoZSB1cGRhdGVkIENvbnRhY3QgbW9kZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbnRhY3QgPSB7IC4uLmNvbnRhY3RUb1VwZGF0ZSwgLi4uY29udGFjdFBlcm1pc3Npb25zIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFjdCh1cGRhdGVkQ29udGFjdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTYXZlIHRvIER5bmFtaWNzIDM2NVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBvblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvQ2FsbFRvQWN0aW9uQmFzZVBhZ2U+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuL0Jhc2VQYWdlXCI7XHJcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgTGluaywgdXNlTmF2aWdhdGUgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBEcm9wZG93bkZpZWxkIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRmllbGRzL0Ryb3Bkb3duRmllbGRcIjtcclxuaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29udGFjdFR5cGUgfSBmcm9tIFwiLi4vRW51bXMvUG9ydGFsQ29udGFjdFR5cGVcIjtcclxuaW1wb3J0IHsgU3RyaW5nRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvU3RyaW5nRmllbGRcIjtcclxuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvTG9va3VwRmllbGRcIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IEFjY291bnRTaXRlVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9BY2NvdW50U2l0ZVR5cGVcIjtcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25Cb29sZWFuRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvUmFkaW9CdXR0b25Cb29sZWFuRmllbGRcIjtcclxuaW1wb3J0IHsgUEFHRVMgfSBmcm9tIFwiLi4vSG9va3MvdXNlUGFnZU5hdmlnYXRpb25cIjtcclxuaW1wb3J0IHsgSW1TcGlubmVyMiB9IGZyb20gXCJyZWFjdC1pY29ucy9pbVwiO1xyXG5pbXBvcnQgeyB1c2VEYXRhU2VydmljZSB9IGZyb20gXCIuLi9Ib29rcy91c2VEYXRhU2VydmljZVwiO1xyXG5pbXBvcnQgeyBGYUhvbWUgfSBmcm9tIFwicmVhY3QtaWNvbnMvZmFcIjtcclxuaW1wb3J0IHsgQWNjb3VudFN0YXRlQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9BY2NvdW50U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IFN1Ym1pc3Npb25TdGF0ZSB9IGZyb20gXCIuLi9UeXBlcy9TdWJtaXNzaW9uU3RhdGVcIjtcclxuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuLi9IZWxwZXJzL0RhdGVIZWxwZXJcIjtcclxuaW1wb3J0IHsgVGVsZXBob25lRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvVGVsZXBob25lRmllbGRcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgUG9wdXBMaW5rRmllbGQgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9GaWVsZHMvUG9wdXBMaW5rRmllbGRcIjtcclxuaW1wb3J0IHsgVGVhY2hpbmdCdWJibGVNdWx0aVN0ZXAgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9UZWFjaGluZ0J1YmJsZU11bHRpU3RlcFwiO1xyXG5pbXBvcnQgeyBQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCB9IGZyb20gXCIuL0NvbnRhY3RzRWRpdC9Db250YWN0c0VkaXRDb250ZW50XCI7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25zUGFuZWwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9QZXJtaXNzaW9uc1BhbmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBPcmRlclBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgUGVybWlzc2lvbkxldmVsU3VtbWFyeSB9IGZyb20gXCIuLi9Db21wb25lbnRzL1Blcm1pc3Npb25MZXZlbFN1bW1hcnlcIjtcclxuaW1wb3J0IHsgQ29udGFjdEZvckNyZWF0ZSB9IGZyb20gXCIuLi9Nb2RlbHMvQ29udGFjdEZvckNyZWF0ZVwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvSW52b2ljZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5cclxuLyogQ29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIENyZWF0ZSBDb250YWN0IFBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RzQ3JlYXRlOiBSZWFjdC5GQyA9ICgpID0+IHtcclxuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgeyB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGEsIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhIH0gPSB1c2VBcHBJbnNpZ2h0cygpO1xyXG4gICAgY29uc3QgYWNjb3VudHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmFjY291bnRzKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBbaXNQb3B1cE9wZW4sIHNldElzUG9wdXBPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IFt0ZWFjaGluZ0J1YmJsZVN0YXRlLCBzZXRUZWFjaGluZ0J1YmJsZVN0YXRlXSA9IHVzZVN0YXRlPFxyXG4gICAgICAgIHsgaXNFbmFibGVkOiBmYWxzZSB9IHwgeyBpc0VuYWJsZWQ6IHRydWU7IGN1cnJlbnRTdGFnZU51bWJlcjogbnVtYmVyIH1cclxuICAgID4oXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oUEVSTUlTU0lPTl9MRVZFTF9URUFDSElOR19CVUJCTEVfU0hPV05fSUQpICE9PSBcImZhbHNlXCJcclxuICAgICAgICAgICAgPyB7IGlzRW5hYmxlZDogdHJ1ZSwgY3VycmVudFN0YWdlTnVtYmVyOiAxIH1cclxuICAgICAgICAgICAgOiB7IGlzRW5hYmxlZDogZmFsc2UgfVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBGbGFnIGhvbGRpbmcgd2hldGhlciB0aGUgZm9ybSBoYXMgYXR0ZW1wdGVkIHRvIGJlIHN1Ym1pdHRlZFxyXG4gICAgY29uc3QgW2Zvcm1TdWJtaXRBdHRlbXB0ZWQsIHNldEZvcm1TdWJtaXRBdHRlbXB0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICAgIC8vIEZsYWcgaG9sZGluZyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaGFzIGxvYWRlZFxyXG4gICAgY29uc3QgW2lzTG9hZGVkLCBzZXRJc0xvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gICAgLy8gUHJvZ3Jlc3Mgb2YgdGhlIENvbnRhY3QgY3JlYXRpb25cclxuICAgIGNvbnN0IFtzdWJtaXNzaW9uU3RhdGUsIHNldFN1Ym1pc3Npb25TdGF0ZV0gPSB1c2VTdGF0ZTxTdWJtaXNzaW9uU3RhdGU+KHtcclxuICAgICAgICBzdGF0ZTogXCJpZGxlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDcmVhdGVzIGEgZGVmYXVsdCBtb2RlbCBmb3IgYSBjb250YWN0IHRvIGNyZWF0ZSB3aGljaCBjYW4gYmUgdXBkYXRlZC9jcmVhdGVkIG9uIHRoZSBjb250YWN0IGVudGl0eSBpbiBEeW5hbWljcy5cclxuICAgIGNvbnN0IFtjb250YWN0LCBzZXRDb250YWN0XSA9IHVzZVN0YXRlPENvbnRhY3RGb3JDcmVhdGU+KHtcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlOiBQb3J0YWxDb250YWN0VHlwZS5JbmRpdmlkdWFsQ29udGFjdCxcclxuICAgICAgICBmaXJzdG5hbWU6IFwiXCIsXHJcbiAgICAgICAgbGFzdG5hbWU6IFwiXCIsXHJcbiAgICAgICAgam9idGl0bGU6IFwiXCIsXHJcbiAgICAgICAgdGVsZXBob25lMTogbnVsbCxcclxuICAgICAgICBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZTogbnVsbCxcclxuICAgICAgICBfcGFyZW50Y3VzdG9tZXJpZF92YWx1ZTogdXNlck1ldGFkYXRhLmFjY291bnRJZCEsXHJcbiAgICAgICAgYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWw6IEJhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcbiAgICAgICAgYmlzdGVjaF9wb3J0YWxjYXNlcGVybWlzc2lvbmxldmVsOiBDYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdLFxyXG4gICAgICAgIGJpc3RlY2hfcG9ydGFsY29udGFjdHBlcm1pc3Npb25sZXZlbDogQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbG9yZGVycGVybWlzc2lvbmxldmVsOiBPcmRlclBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSxcclxuICAgICAgICBiaXN0ZWNoX3BvcnRhbGludm9pY2VwZXJtaXNzaW9ubGV2ZWw6IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0sXHJcbiAgICAgICAgZW1haWxhZGRyZXNzMTogXCJcIixcclxuICAgICAgICBtb2JpbGVwaG9uZTogbnVsbCxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVhbGVydG5vdGlmaWNhdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zOiBmYWxzZSxcclxuICAgICAgICBiaXN0ZWNoX3JlY2VpdmVzZWN1cml0eXVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfcmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlcjogZmFsc2UsXHJcbiAgICAgICAgYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXM6IGZhbHNlLFxyXG4gICAgICAgIGJpc3RlY2hfaXNzaG93bmlucG9ydGFsOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudCBoYW5kbGVyIGZvciBzdWJtaXNzaW9uIG9mIHRoZSBmb3JtLlxyXG4gICAgICogQHBhcmFtIGV2ZW50IEZvcm0gc3VibWlzc2lvbiBldmVudC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZnVuY3Rpb24gb25TdWJtaXQoZXZlbnQ6IFJlYWN0LkZvcm1FdmVudDxIVE1MRm9ybUVsZW1lbnQ+KSB7XHJcbiAgICAgICAgLy8gUHJldmVudCB0aGUgZGVmYXVsdCBwYWdlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm1cclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICBpZiAoY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIFxcYGluY2lkZW50c1xcYCB0byBoYXZlIGxvYWRlZCBiZWZvcmUgc3VibWlzc2lvbmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwic3VibWl0dGluZ1wiIH0pO1xyXG4gICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oeyB0eXBlOiBcIkNyZWF0ZSBDb250YWN0IC0gQ29udGFjdCBjcmVhdGlvbiBzdWJtaXR0ZWRcIiB9KTtcclxuXHJcbiAgICAgICAgbGV0IGNyZWF0ZWRDb250YWN0OiBDb250YWN0Rm9yUmV0cmlldmFsO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBDcmVhdGUgdGhlIENvbnRhY3RcclxuICAgICAgICAgICAgY3JlYXRlZENvbnRhY3QgPSBhd2FpdCBkYXRhU2VydmljZS5jcmVhdGVDb250YWN0KGNvbnRhY3QpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImVycm9yZWRcIiwgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xyXG4gICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgdHlwZTogXCJDcmVhdGUgQ29udGFjdCAtIENvbnRhY3QgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgY29udGFjdElkOiBjcmVhdGVkQ29udGFjdC5jb250YWN0aWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgY3JlYXRlZCBDb250YWN0IHRvIHN0YXRlLCBzbyBpdCBjYW4gYmUgdmlld2VkLlxyXG4gICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJTZXRDb250YWN0c1wiLFxyXG4gICAgICAgICAgICBjb250YWN0czoge1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgIGRhdGE6IGNvbnRhY3RzLmRhdGEuY29uY2F0KFtjcmVhdGVkQ29udGFjdF0pLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJjb21wbGV0ZWRcIiB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgZWRpdENvbnRhY3RVcmwgPSBgJHtQQUdFUy5FZGl0Q29udGFjdC5wYXRofT9pZD0ke2NyZWF0ZWRDb250YWN0LmNvbnRhY3RpZH1gO1xyXG5cclxuICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJDb250YWN0IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5ZWRPblJlbGF0aXZlVXJsOiBlZGl0Q29udGFjdFVybCxcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gTmF2aWdhdGUgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgQ29udGFjdFxyXG4gICAgICAgIG5hdmlnYXRlKGVkaXRDb250YWN0VXJsKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNYXJrIHRoZSBjb21wb25lbnQgYXMgbG9hZGVkXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldElzTG9hZGVkKHRydWUpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8vIENsb3NlIHRoZSBwb3B1cCBvbmNlIHRoZSB0ZWFjaGluZyBidWJibGUgaXMgY2xvc2VkXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGVhY2hpbmdCdWJibGVTdGF0ZS5pc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgc2V0SXNQb3B1cE9wZW4oZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFt0ZWFjaGluZ0J1YmJsZVN0YXRlXSk7XHJcblxyXG4gICAgY29uc3QgcGVybWlzc2lvbkxldmVsRmllbGRSZWYgPSB1c2VSZWY8SFRNTExhYmVsRWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJhc2VQYWdlIHRpdGxlPVwiQ3JlYXRlIENvbnRhY3RcIj5cclxuICAgICAgICAgICAgPGZvcm1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNyZWF0ZS1jb250YWN0XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc3VibWl0LWF0dGVtcHRlZD17Zm9ybVN1Ym1pdEF0dGVtcHRlZH1cclxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblN1Ym1pdH1cclxuICAgICAgICAgICAgICAgIG9uSW52YWxpZD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgaWYgdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQgKGkuZS4gaWdub3JlIHRoZSB2YWxpZGl0eSBjaGVja3Mgd2hlbiB0aGUgZm9ybSBpcyBpbml0aWFsbHkgbG9hZGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0xvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSBmbGFnIGRldGFpbGluZyB0aGF0IGEgZm9ybSBzdWJtaXNzaW9uIGhhcyBiZWVuIGF0dGVtcHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGb3JtU3VibWl0QXR0ZW1wdGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmZvcm1hdGlvbi1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJoZWFkaW5nXCI+SW5mb3JtYXRpb248L2gyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJDb250YWN0IFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidXNlcl9jb250YWN0X3R5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFBvcnRhbENvbnRhY3RUeXBlLkluZGl2aWR1YWxDb250YWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkluZGl2aWR1YWwgQ29udGFjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogUG9ydGFsQ29udGFjdFR5cGUuVGVhbUNvbnRhY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiVGVhbSBDb250YWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbklkPXtjb250YWN0LmJpc3RlY2hfcG9ydGFsY29udGFjdHR5cGV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0LCBiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGFjdC5iaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlID09PSBQb3J0YWxDb250YWN0VHlwZS5JbmRpdmlkdWFsQ29udGFjdCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkZpcnN0IE5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpcnN0bmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdC5maXJzdG5hbWUgfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZmlyc3RuYW1lKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgZmlyc3RuYW1lIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcmVxdWlyZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogY29udGFjdC5maXJzdG5hbWUgIT09IFwiXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0LCBmaXJzdG5hbWU6IFwiXCIgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3QuYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZSA9PT0gUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiTGFzdCBOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiVGVhbSBOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibGFzdG5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdC5sYXN0bmFtZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGxhc3RuYW1lKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgbGFzdG5hbWUgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiB0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRhY3QuYmlzdGVjaF9wb3J0YWxjb250YWN0dHlwZSA9PT0gUG9ydGFsQ29udGFjdFR5cGUuSW5kaXZpZHVhbENvbnRhY3QgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJKb2IgVGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImpvYnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb250YWN0LmpvYnRpdGxlIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGpvYnRpdGxlKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgam9idGl0bGUgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyByZXF1aXJlZDogdHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBjb250YWN0LmpvYnRpdGxlICE9PSBcIlwiID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgam9idGl0bGU6IFwiXCIgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb29rdXBGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQcmltYXJ5IFNpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e2NvbnRhY3QuX2Jpc3RlY2hfcHJpbWFyeXNpdGVfdmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsT3B0aW9uc05hbWU9XCJBY3RpdmUgU2l0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjY291bnRzLmRhdGEubWFwKChhY2NvdW50KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhY2NvdW50LmFjY291bnRpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5VGV4dDogYCR7YWNjb3VudC5uYW1lfWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogQWNjb3VudFNpdGVUeXBlW2FjY291bnQuYmlzdGVjaF9zaXRldHlwZV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQaWNrYWJsZTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5zdGF0ZWNvZGUgPT09IEFjY291bnRTdGF0ZUNvZGVbXCJBY3RpdmVcIl0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudC5iaXN0ZWNoX3NpdGV0eXBlICE9PSBBY2NvdW50U2l0ZVR5cGVbXCJMZWdhbCBFbnRpdHlcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbklkPXsoX2Jpc3RlY2hfcHJpbWFyeXNpdGVfdmFsdWUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0LCBfYmlzdGVjaF9wcmltYXJ5c2l0ZV92YWx1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbkNhcmRJbmZvPXsoc2VsZWN0ZWRPcHRpb24pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IDxGYUhvbWUgLz4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBzZWxlY3RlZE9wdGlvbi5wcmltYXJ5VGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogc2VsZWN0ZWRPcHRpb24uc2Vjb25kYXJ5VGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcGxhY2Vob2xkZXI6IFwiU2VsZWN0IGEgU2l0ZVwiLCByZXF1aXJlZDogZmFsc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJFbWFpbCBBZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZW1haWxhZGRyZXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiWW91IG11c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpZWxkczogRW1haWwsIERpcmVjdCBEaWFsLCBNb2JpbGUgUGhvbmUuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3QuZW1haWxhZGRyZXNzMSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZW1haWxhZGRyZXNzMSkgPT4gc2V0Q29udGFjdCh7IC4uLmNvbnRhY3QsIGVtYWlsYWRkcmVzczEgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcmVxdWlyZWQ6IGZhbHNlLCB0eXBlOiBcImVtYWlsXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVZhbGlkaXR5PXsoKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGFjdC5lbWFpbGFkZHJlc3MxICYmICFjb250YWN0LnRlbGVwaG9uZTEgJiYgIWNvbnRhY3QubW9iaWxlcGhvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGVsZXBob25lRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkRpcmVjdCBEaWFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGlyZWN0ZGlhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIllvdSBtdXN0IHN1cHBseSBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBmaWVsZHM6IEVtYWlsLCBEaXJlY3QgRGlhbCwgTW9iaWxlIFBob25lLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb250YWN0LnRlbGVwaG9uZTEgfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHRlbGVwaG9uZTEpID0+IHNldENvbnRhY3QoeyAuLi5jb250YWN0LCB0ZWxlcGhvbmUxIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiBmYWxzZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkR3JvdXA9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tVmFsaWRpdHk9eygpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFjb250YWN0LmVtYWlsYWRkcmVzczEgJiYgIWNvbnRhY3QudGVsZXBob25lMSAmJiAhY29udGFjdC5tb2JpbGVwaG9uZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIllvdSBtdXN0IHN1cHBseSBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBmaWVsZHM6IEVtYWlsLCBEaXJlY3QgRGlhbCwgTW9iaWxlIFBob25lLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZWxlcGhvbmVGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiTW9iaWxlIFBob25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibW9iaWxlcGhvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdC5tb2JpbGVwaG9uZSB8fCBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsobW9iaWxlcGhvbmUpID0+IHNldENvbnRhY3QoeyAuLi5jb250YWN0LCBtb2JpbGVwaG9uZSB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyByZXF1aXJlZDogZmFsc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVZhbGlkaXR5PXsoKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY29udGFjdC5lbWFpbGFkZHJlc3MxICYmICFjb250YWN0LnRlbGVwaG9uZTEgJiYgIWNvbnRhY3QubW9iaWxlcGhvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJZb3UgbXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBFbWFpbCwgRGlyZWN0IERpYWwsIE1vYmlsZSBQaG9uZS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByZWZlcmVuY2VzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImhlYWRpbmdcIj5QcmVmZXJlbmNlczwvaDI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcHVwTGlua0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImJpc3RlY2hfcGVybWlzc2lvbmxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+Tm8gQWNjZXNzPC9zdHJvbmc+IC0gVGhlIHVzZXIgb3IgdGVhbSB3aWxsIGhhdmUgbm8gYWNjZXNzIHRvIHRoZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+QWRtaW5pc3RyYXRvcjwvc3Ryb25nPiAtIFRoZSB1c2VyIG9yIHRlYW0gd2lsbCBoYXZlIGFjY2VzcyB0byBhbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyBvZiB0aGUgcG9ydGFsLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5DdXN0b208L3N0cm9uZz4gLSBUaGUgdXNlciBvciB0ZWFtIHdpbGwgaGF2ZSBjdXN0b21pc2VkIGFjY2VzcyB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRhaW4gZmVhdHVyZXMgb2YgdGhlIHBvcnRhbC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtgJHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdC5iaXN0ZWNoX3Blcm1pc3Npb25sZXZlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBCYXNlUGVybWlzc2lvbkxldmVsW2NvbnRhY3QuYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWxdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAoZWRpdClgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlRleHQ9ezxQZXJtaXNzaW9uTGV2ZWxTdW1tYXJ5IGNvbnRhY3Q9e2NvbnRhY3R9IC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzUG9wdXBPcGVuKCFpc1BvcHVwT3Blbil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbExhYmVsUHJvcHM9e3sgcmVmOiBwZXJtaXNzaW9uTGV2ZWxGaWVsZFJlZiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZWFjaGluZ0J1YmJsZU11bHRpU3RlcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkVsZW1lbnQ9e3Blcm1pc3Npb25MZXZlbEZpZWxkUmVmLmN1cnJlbnR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXNpYmxlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhY2hpbmdCdWJibGVTdGF0ZS5pc0VuYWJsZWQgJiYgdGVhY2hpbmdCdWJibGVTdGF0ZS5jdXJyZW50U3RhZ2VOdW1iZXIgPT09IDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25EaXNtaXNzPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRlYWNoaW5nQnViYmxlU3RhdGUoeyBpc0VuYWJsZWQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShQRVJNSVNTSU9OX0xFVkVMX1RFQUNISU5HX0JVQkJMRV9TSE9XTl9JRCwgXCJmYWxzZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTmV4dD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUZWFjaGluZ0J1YmJsZVN0YXRlKHsgaXNFbmFibGVkOiB0cnVlLCBjdXJyZW50U3RhZ2VOdW1iZXI6IDIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzUG9wdXBPcGVuKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGxpbmU9XCJQZXJtaXNzaW9ucyBoYXZlIGNoYW5nZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9XCJXZSd2ZSBhZGRlZCBuZXcgZmVhdHVyZXMgdG8gdGhlIFBvcnRhbCwgc28geW91IGNhbiBub3cgZ2l2ZSB1c2VycyBjdXN0b21pc2VkIGFjY2VzcyB0byBzcGVjaWZpY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlUHJvZ3Jlc3M9e3sgc3RhZ2VOdW1iZXI6IDEsIHRvdGFsU3RhZ2VDb3VudDogMyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0J1dHRvbkJvb2xlYW5GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wicmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9uc1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcIlJlY2VpdmUgQWxlcnQgTm90aWZpY2F0aW9ucz9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWNlaXZlIE5ldHdvcmsgQWxlcnQgTm90aWZpY2F0aW9ucyBpZiBvdXIgcHJvYWN0aXZlIG1vbml0b3JpbmcgdG9vbCBpZGVudGlmaWVzIGlzc3VlcyB3aXRoIHlvdXIgQ29tcGFueSdzIHNpdGVzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb250YWN0LmJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9uc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9ucykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFjdCh7IC4uLmNvbnRhY3QsIGJpc3RlY2hfcmVjZWl2ZWFsZXJ0bm90aWZpY2F0aW9ucyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmFkaW9CdXR0b25Cb29sZWFuRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtcInJlY2VpdmVwbGFubmVkbWFpbnRlbmFuY2Vub3RpZmljYXRpb25zXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBQbGFubmVkIE1haW50ZW5hbmNlIE5vdGlmaWNhdGlvbnM/XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVjZWl2ZSBQbGFubmVkIE1haW50ZW5hbmNlIE5vdGlmaWNhdGlvbnMgaWYgeW91ciBDb21wYW55J3Mgc2VydmljZXMgYXJlIGlkZW50aWZpZWQgYXMgYWZmZWN0ZWQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3QuYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9uc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZXBld25vdGlmaWNhdGlvbnMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhY3QoeyAuLi5jb250YWN0LCBiaXN0ZWNoX3JlY2VpdmVwZXdub3RpZmljYXRpb25zIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0J1dHRvbkJvb2xlYW5GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wicmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBNYWpvciBJbmNpZGVudCBVcGRhdGVzP1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlY2VpdmUgcmVndWxhciB1cGRhdGVzIGlmIHlvdXIgQ29tcGFueSBoYXMgYSBDYXNlIGFzc29jaWF0ZWQgdG8gYSBNYWpvciBJbmNpZGVudC5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdC5iaXN0ZWNoX3JlY2VpdmVtYWpvcmluY2lkZW50dXBkYXRlc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgYmlzdGVjaF9yZWNlaXZlbWFqb3JpbmNpZGVudHVwZGF0ZXMgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJhZGlvQnV0dG9uQm9vbGVhbkZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17XCJyZWNlaXZlc2VjdXJpdHl1cGRhdGVzXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBTZWN1cml0eSBVcGRhdGVzP1wifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlY2VpdmUgU2VjdXJpdHkgVXBkYXRlcyB3aGVuIGtub3duIHRocmVhdHMgb3IgdnVsbmVyYWJpbGl0aWVzIGFyZSByZXBvcnRlZCBpbiB0aGUgbWFya2V0cGxhY2UuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3QuYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0J1dHRvbkJvb2xlYW5GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wicmVjZWl2ZWN1c3RvbWVybmV3c2xldHRlclwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtcIlJlY2VpdmUgQ3VzdG9tZXIgTmV3c2xldHRlcj9cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWNlaXZlIHRoZSBCaXN0ZWNoIEN1c3RvbWVyIE5ld3NsZXR0ZXIgY292ZXJpbmcgbmV3cywgdmlld3MgYW5kIHRoZSBsYXRlc3QgSVQgaW5kdXN0cnkgZGV2ZWxvcG1lbnQuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRhY3QuYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSYWRpb0J1dHRvbkJvb2xlYW5GaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wicmVjZWl2ZXByb2R1Y3R1cGRhdGVzXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1wiUmVjZWl2ZSBQcm9kdWN0IFVwZGF0ZXM/XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17XCJSZWNlaXZlIFByb2R1Y3QgVXBkYXRlcywgcm9hZG1hcCBpbmZvcm1hdGlvbiBhbmQgZW5kIG9mIGxpZmUgYW5ub3VuY2VtZW50cy5cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGFjdC5iaXN0ZWNoX3JlY2VpdmVwcm9kdWN0dXBkYXRlc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGJpc3RlY2hfcmVjZWl2ZXByb2R1Y3R1cGRhdGVzKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXMgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZS5zdGF0ZSA9PT0gXCJlcnJvcmVkXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJlcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5GYWlsZWQgdG8gY3JlYXRlIENvbnRhY3Q8L3N0cm9uZz46IHtzdWJtaXNzaW9uU3RhdGUuZXJyb3IubWVzc2FnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzc05hbWU9XCJidXR0b25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGRpc2FibGVkPXtzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwic3VibWl0dGluZ1wifT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwic3VibWl0dGluZ1wiICYmIDxJbVNwaW5uZXIyIGNsYXNzTmFtZT1cInNwaW5cIiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPExpbmsgY2xhc3NOYW1lPVwiYnV0dG9uIGRlZmF1bHRcIiB0bz17UEFHRVMuQ29udGFjdHMucGF0aH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICB7aXNQb3B1cE9wZW4gJiYgKFxyXG4gICAgICAgICAgICAgICAgPFBlcm1pc3Npb25zUGFuZWxcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZVBvcHVwPXsoKSA9PiBzZXRJc1BvcHVwT3BlbihmYWxzZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFjdD17Y29udGFjdH1cclxuICAgICAgICAgICAgICAgICAgICB0ZWFjaGluZ0J1YmJsZVN0YXRlPXt0ZWFjaGluZ0J1YmJsZVN0YXRlfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRlYWNoaW5nQnViYmxlU3RhdGU9e3NldFRlYWNoaW5nQnViYmxlU3RhdGV9XHJcbiAgICAgICAgICAgICAgICAgICAgc3VibWl0TGFiZWw9XCJPa1wiXHJcbiAgICAgICAgICAgICAgICAgICAgb25TYXZlPXsoY29udGFjdFBlcm1pc3Npb25zKSA9PiBzZXRDb250YWN0KHsgLi4uY29udGFjdCwgLi4uY29udGFjdFBlcm1pc3Npb25zIH0pfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi8uLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IHVzZURhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbnRhY3RGb3JSZXRyaWV2YWwgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL0NvbnRhY3RGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tIFwiLi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi4vTm90Rm91bmRcIjtcclxuaW1wb3J0IHsgQ29udGFjdHNFZGl0Q29udGVudCB9IGZyb20gXCIuL0NvbnRhY3RzRWRpdENvbnRlbnRcIjtcclxuXHJcbi8qKiBXcmFwcGVyIGZvciB0aGUgRWRpdCBDb250YWN0IHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IENvbnRhY3RzRWRpdEZyb21JZCA9IChwcm9wczogeyBjb250YWN0aWQ6IHN0cmluZyB9KSA9PiB7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBjb250YWN0cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuY29udGFjdHMpO1xyXG4gICAgY29uc3QgW3NhdmVLZXksIHNldFNhdmVLZXldID0gdXNlU3RhdGUoMSk7XHJcbiAgICBjb25zdCBbcmV0cmlldmVkQ29udGFjdCwgc2V0UmV0cmlldmVkQ29udGFjdF0gPSB1c2VTdGF0ZTxcclxuICAgICAgICBMb2FkaW5nRGF0YTxDb250YWN0Rm9yUmV0cmlldmFsPiB8IHsgbG9hZGluZ1N0YXR1czogXCJlcnJvcmVkXCI7IGVycm9yOiBFcnJvciB9XHJcbiAgICA+KHtcclxuICAgICAgICBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFJldHJpZXZlZENvbnRhY3QoeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSk7XHJcbiAgICB9LCBbY29udGFjdHMsIHNhdmVLZXldKTtcclxuXHJcbiAgICBjb25zdCBpbml0aWFsQ29udGFjdDogTG9hZGluZ0RhdGE8Q29udGFjdEZvclJldHJpZXZhbD4gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgcmV0cmlldmFsIGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZFxyXG4gICAgICAgIGlmIChyZXRyaWV2ZWRDb250YWN0LmxvYWRpbmdTdGF0dXMgPT09IFwibm90LXN0YXJ0ZWRcIikge1xyXG4gICAgICAgICAgICBzZXRSZXRyaWV2ZWRDb250YWN0KHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgQ29udGFjdCBzcGVjaWZpY2FsbHkgKGUuZy4gdGhlIENvbnRhY3QgbWF5IGhhdmUgYmVlbiByZWNlbnRseSB1cGRhdGVkKVxyXG4gICAgICAgICAgICBkYXRhU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLnJldHJpZXZlQ29udGFjdChwcm9wcy5jb250YWN0aWQpXHJcbiAgICAgICAgICAgICAgICAudGhlbigoY29udGFjdCkgPT4gc2V0UmV0cmlldmVkQ29udGFjdCh7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IGNvbnRhY3QgfSkpXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFJldHJpZXZlZENvbnRhY3QoeyBsb2FkaW5nU3RhdHVzOiBcImVycm9yZWRcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXRyaWV2ZWRDb250YWN0LmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogcmV0cmlldmVkQ29udGFjdC5kYXRhIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDb250YWN0ID0gY29udGFjdHMuZGF0YS5maW5kKChjb250YWN0KSA9PiBjb250YWN0LmNvbnRhY3RpZCA9PT0gcHJvcHMuY29udGFjdGlkKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYSBtYXRjaGluZyBhY3RpdmUgQ29udGFjdCB3YXMgZm91bmRcclxuICAgICAgICBpZiAobWF0Y2hpbmdDb250YWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogbWF0Y2hpbmdDb250YWN0LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfTtcclxuICAgIH0sIFtjb250YWN0cywgcmV0cmlldmVkQ29udGFjdCwgZGF0YVNlcnZpY2UsIHByb3BzLmNvbnRhY3RpZCwgZGlzcGF0Y2hdKTtcclxuXHJcbiAgICBpZiAocmV0cmlldmVkQ29udGFjdC5sb2FkaW5nU3RhdHVzID09PSBcImVycm9yZWRcIikge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgdHlwZT1cInJlY29yZC1ub3QtZm91bmRcIiBzaW5ndWxhckVudGl0eU5hbWU9XCJDb250YWN0XCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGluaXRpYWxDb250YWN0LmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9XCJcIj5cclxuICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxyXG4gICAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxDb250YWN0c0VkaXRDb250ZW50IGluaXRpYWxDb250YWN0PXtpbml0aWFsQ29udGFjdC5kYXRhfSBvblNhdmU9eygpID0+IHNldFNhdmVLZXkoc2F2ZUtleSArIDEpfSAvPjtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi4vTm90Rm91bmRcIjtcclxuaW1wb3J0IHsgQ29udGFjdHNFZGl0RnJvbUlkIH0gZnJvbSBcIi4vQ29udGFjdHNFZGl0RnJvbUlkXCI7XHJcblxyXG4vKiogV3JhcHBlciBmb3IgdGhlIEVkaXQgQ29udGFjdCBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBDb250YWN0c0VkaXQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBbc2VhcmNoUGFyYW1zXSA9IHVzZVNlYXJjaFBhcmFtcygpO1xyXG5cclxuICAgIGNvbnN0IElEX1FVRVJZX1NUUklOR19QQVJBTUVURVJfTkFNRSA9IFwiaWRcIjtcclxuICAgIGNvbnN0IGNvbnRhY3RJZCA9IHNlYXJjaFBhcmFtcy5nZXQoSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FKTtcclxuXHJcbiAgICBpZiAoIWNvbnRhY3RJZCkge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgc2luZ3VsYXJFbnRpdHlOYW1lPVwiQ29udGFjdFwiIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxDb250YWN0c0VkaXRGcm9tSWQgY29udGFjdGlkPXtjb250YWN0SWR9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcIi4vTW9kYWxcIjtcclxuaW1wb3J0IHsgQnV0dG9uSW5mb3JtYXRpb24gfSBmcm9tIFwiLi4vVHlwZXMvQnV0dG9uSW5mb3JtYXRpb25cIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nIH0gZnJvbSBcIi4uL0VudW1zL1Byb2R1Y3RQb3J0YWxUaWxlTWFwcGluZ1wiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlVXNlck1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IFBBR0VTIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyBhIGhvbWVwYWdlIFRpbGUuICAqL1xyXG5leHBvcnQgY29uc3QgSG9tZVBhZ2VUaWxlOiBSZWFjdC5GQzx7XHJcbiAgICBpbWFnZVBhdGg6IHN0cmluZztcclxuICAgIHRpbGU6XHJcbiAgICAgICAgfCB7IHR5cGU6IFwicGFnZVwiOyBsYWJlbDogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfVxyXG4gICAgICAgIHwgeyB0eXBlOiBcImN1c3RvbWVyLWFzc2V0XCI7IGxhYmVsOiBzdHJpbmc7IHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcgfTtcclxuICAgIG1vZGFsTWVzc2FnZT86IHN0cmluZztcclxufT4gPSAoeyBpbWFnZVBhdGgsIHRpbGUsIG1vZGFsTWVzc2FnZSB9KSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhIH0gPSB1c2VBcHBJbnNpZ2h0cygpO1xyXG4gICAgY29uc3QgcHJvZHVjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnByb2R1Y3RzKTtcclxuICAgIGNvbnN0IFt1c2VyTGluaywgc2V0VXNlckxpbmtdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgICBjb25zdCBbbW9kYWxJc09wZW4sIHNldE1vZGFsSXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3Qgc3RhdGUgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlKTtcclxuXHJcbiAgICAvKiogU2V0cyB3aGV0aGVyIHRoZSB0aWxlIHNob3VsZCBiZSBhIHN0YXRpYyBkaXYgZWxlbWVudCBvciBhbiBhbmNob3IgdGFnIHdpdGggYSBsaW5rICovXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aWxlLnR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZUxpbmsgPSBPYmplY3QudmFsdWVzKFBBR0VTKS5maW5kKCh0aWxlTGluaykgPT4gdGlsZUxpbmsucGF0aCA9PT0gdGlsZS5saW5rKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGlzcGFnZVRpbGVBY2Nlc3NpYmxlID0gcGFnZUxpbms/LmlzUGVybWl0dGVkKHVzZXJNZXRhZGF0YSwgc3RhdGUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzcGFnZVRpbGVBY2Nlc3NpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRVc2VyTGluayh0aWxlLmxpbmspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocHJvZHVjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGlsZS50eXBlICE9PSBcImN1c3RvbWVyLWFzc2V0XCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSXMgdGhpcyB0aWxlIHByb2R1Y3QgaW4gdGhlIGN1c3RvbWVycyBhc3NldHMuXHJcbiAgICAgICAgY29uc3QgdXNlckxpbmsgPSBwcm9kdWN0cy5kYXRhLmZpbHRlcigocHJvZHVjdCkgPT4gcHJvZHVjdC5iaXN0ZWNoX3BvcnRhbHRpbGVtYXBwaW5nID09PSB0aWxlLnRpbGVNYXBwaW5nKTtcclxuXHJcbiAgICAgICAgaWYgKHVzZXJMaW5rLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIHNldFVzZXJMaW5rKHVzZXJMaW5rWzBdLmJpc3RlY2hfdGlsZXRhcmdldHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW3Byb2R1Y3RzLCB0aWxlXSk7XHJcblxyXG4gICAgLyoqIE9wZW5zIGEgbW9kYWwgZm9yIHRoZSB1c2VyIHRvIG5hdmlnYXRlIHRvIGFuIGV4dGVybmFsIHdlYnNpdGUuICAqL1xyXG4gICAgY29uc3Qgb3BlbkluZm9ybWF0aW9uTW9kYWwgPSAoKSA9PiB7XHJcbiAgICAgICAgc2V0TW9kYWxJc09wZW4odHJ1ZSk7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHtcclxuICAgICAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gRGV0YWlscyBmb3IgdGhlIG1vZGFsLlxyXG4gICAgY29uc3QgbW9kYWxJbmZvOiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICBsYWJlbDogbW9kYWxNZXNzYWdlID8gbW9kYWxNZXNzYWdlIDogXCJcIixcclxuICAgICAgICBoYXNNb2RhbDogdHJ1ZSxcclxuICAgICAgICBtb2RhbEluZm86IHtcclxuICAgICAgICAgICAgaXNFcnJvck1vZGFsOiBmYWxzZSxcclxuICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJDb25maXJtXCIsXHJcbiAgICAgICAgICAgIG1vZGFsQ29udGVudDogPD57bW9kYWxNZXNzYWdlfTwvPixcclxuICAgICAgICAgICAgbW9kYWxUaXRsZTogdGlsZS5sYWJlbCxcclxuICAgICAgICAgICAgb25DbGljazogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3V2luZG93ID0gd2luZG93Lm9wZW4oKSE7XHJcbiAgICAgICAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5sb2NhdGlvbiA9IHVzZXJMaW5rO1xyXG5cclxuICAgICAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiSG9tZSAtIEN1c3RvbWVyIEFzc2V0IHRpbGUgY2xpY2tlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbGVOYW1lOiB0aWxlLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHVzZXJMaW5rKSB7XHJcbiAgICAgICAgaWYgKG1vZGFsTWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhhcy1saW5rPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvcGVuSW5mb3JtYXRpb25Nb2RhbCgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub3JlZmVycmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGlsZS1pbWFnZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2UgY2xhc3NOYW1lPXtcInRpbGUtaW1hZ2VcIn0gc3JjPXtpbWFnZVBhdGh9IHdpZHRoPXs0MH0gaGVpZ2h0PXs0MH0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGlsZS10aXRsZVwiPnt0aWxlLmxhYmVsfTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8TW9kYWwgYnV0dG9uSW5mbz17bW9kYWxJbmZvfSBpc01vZGFsU2hvd249e21vZGFsSXNPcGVufSBzZXRJc01vZGFsU2hvd249e3NldE1vZGFsSXNPcGVufSAvPlxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1c2VyTGluay5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSB8fCB1c2VyTGluay5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1oYXMtbGluaz17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICBocmVmPXt1c2VyTGlua31cclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJIb21lIC0gQ3VzdG9tZXIgQXNzZXQgdGlsZSBjbGlja2VkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlTmFtZTogdGlsZS5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGlsZS1pbWFnZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBjbGFzc05hbWU9e1widGlsZS1pbWFnZVwifSBzcmM9e2ltYWdlUGF0aH0gd2lkdGg9ezQwfSBoZWlnaHQ9ezQwfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGlsZS10aXRsZVwiPnt0aWxlLmxhYmVsfTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxMaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1oYXMtbGluaz17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgICB0bz17dXNlckxpbmt9XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkhvbWUgLSBDdXN0b21lciBBc3NldCB0aWxlIGNsaWNrZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVOYW1lOiB0aWxlLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aWxlLWltYWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIGNsYXNzTmFtZT17XCJ0aWxlLWltYWdlXCJ9IHNyYz17aW1hZ2VQYXRofSB3aWR0aD17NDB9IGhlaWdodD17NDB9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0aWxlLXRpdGxlXCI+e3RpbGUubGFiZWx9PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGRhdGEtaGFzLWxpbms9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGlsZVwiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT17cHJvZHVjdHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCIgPyBcIkxvYWRpbmcuLi5cIiA6IHVuZGVmaW5lZH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aWxlLWltYWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2UgY2xhc3NOYW1lPXtcInRpbGUtaW1hZ2VcIn0gc3JjPXtpbWFnZVBhdGh9IHdpZHRoPXs0MH0gaGVpZ2h0PXs0MH0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0aWxlLXRpdGxlXCI+e3RpbGUubGFiZWx9PC9wPlxyXG4gICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59O1xyXG4iLCJpbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ltYWdlXCI7XHJcbmltcG9ydCB7IEhvbWVQYWdlVGlsZSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0hvbWVQYWdlVGlsZVwiO1xyXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VXaW5kb3dXaWR0aCB9IGZyb20gXCIuLi9Ib29rcy91c2VXaW5kb3dXaWR0aFwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvTm90aWZpY2F0aW9uc1wiO1xyXG5pbXBvcnQgeyBQQUdFUyB9IGZyb20gXCIuLi9Ib29rcy91c2VQYWdlTmF2aWdhdGlvblwiO1xyXG5pbXBvcnQgeyBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcgfSBmcm9tIFwiLi4vRW51bXMvUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nXCI7XHJcbmltcG9ydCB7IGlzUHJvZHVjdGlvbiB9IGZyb20gXCIuLi9Db21wb25lbnRzL0Vudmlyb25tZW50QmFubmVyXCI7XHJcblxyXG4vKiogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHBvc3NpYmxlIHRpbGUgZ3JvdXAgbGF5b3V0cyBvbiB0aGUgcGFnZS4gKi9cclxudHlwZSBUaWxlR3JpZExheW91dCA9IFwiNTowXCIgfCBcIjQ6MVwiIHwgXCIzOjJcIiB8IFwiMjoyXCIgfCBcIjFcIjtcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHRoZSBjdXJyZW50IHRpbGUgbGF5b3V0IGJhc2VkIG9uIHBhZ2Ugc2l6ZS5cclxuICogQHBhcmFtIGhvbWVQYWdlV2lkdGggVGhlIHdpZHRoIG9mIHRoZSBob21lcGFnZS5cclxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGlsZSBsYXlvdXQuXHJcbiAqL1xyXG5jb25zdCBnZXRDdXJyZW50VGlsZUxheW91dCA9IChob21lUGFnZVdpZHRoOiBudW1iZXIpOiBUaWxlR3JpZExheW91dCA9PiB7XHJcbiAgICBjb25zdCB0aWxlU2l6ZSA9IDMwMDtcclxuICAgIGlmIChob21lUGFnZVdpZHRoID4gdGlsZVNpemUgKiA1KSB7XHJcbiAgICAgICAgcmV0dXJuIFwiNTowXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoaG9tZVBhZ2VXaWR0aCA+IHRpbGVTaXplICogNCkge1xyXG4gICAgICAgIHJldHVybiBcIjQ6MVwiO1xyXG4gICAgfVxyXG4gICAgaWYgKGhvbWVQYWdlV2lkdGggPiB0aWxlU2l6ZSAqIDMpIHtcclxuICAgICAgICByZXR1cm4gXCIzOjJcIjtcclxuICAgIH1cclxuICAgIGlmIChob21lUGFnZVdpZHRoID4gdGlsZVNpemUgKiAyKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiMjoyXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCIxXCI7XHJcbn07XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgSG9tZSBQYWdlICovXHJcbmV4cG9ydCBjb25zdCBIb21lOiBSZWFjdC5GQyA9ICgpID0+IHtcclxuICAgIGNvbnN0IFt0aWxlR3JpZExheW91dCwgc2V0VGlsZUdyaWRMYXlvdXRdID0gdXNlU3RhdGUoXCJcIik7XHJcblxyXG4gICAgLy8gVGhlIHBpeGVsIHZhbHVlcyBvZiB0aGUgZGlmZmVyZW50IGVsZW1lbnRzIHdoaWNoIHNldCB0aGUgaG9tZXBhZ2Ugd2lkdGguXHJcbiAgICBjb25zdCBzY3JvbGxiYXJTaXplID0gMTY7XHJcbiAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHVzZVdpbmRvd1dpZHRoKCk7XHJcblxyXG4gICAgLy8gSWYgdGhlIHdpbmRvdyB3aWR0aCBpcyBvdmVyIDEwMjVweCwgdGhlIG5hdmlnYXRpb24gcGFuZSB0YWtlcyB1cCAyODhweCBvZiB0aGUgdmlld3BvcnQsIGVsc2UgaXQgaXMgb3ZlcmxhaWQgYXMgYSBmaXhlZCBjb21wb25lbnQgYW5kXHJcbiAgICAvLyB0aHVzIHRha2VzIHVwIG5vIHNwYWNlIG9uIHRoZSB2aWV3cG9ydC5cclxuICAgIGNvbnN0IG5hdmlnYXRpb25QYW5lV2lkdGggPSB3aW5kb3dXaWR0aCA+PSAxMDI1ID8gMjg4IDogMDtcclxuICAgIGNvbnN0IGhvbWVQYWdlV2lkdGggPSB3aW5kb3dXaWR0aCAtIHNjcm9sbGJhclNpemUgLSBuYXZpZ2F0aW9uUGFuZVdpZHRoO1xyXG5cclxuICAgIC8vIFNldHMgdGhlIGN1cnJlbnQgdGlsZSBncmlkIGxheW91dCBvbiBjaGFuZ2UgZWxlbWVudCBzaXplIGNoYW5nZS5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0VGlsZUdyaWRMYXlvdXQoZ2V0Q3VycmVudFRpbGVMYXlvdXQoaG9tZVBhZ2VXaWR0aCkpO1xyXG4gICAgfSwgW2hvbWVQYWdlV2lkdGhdKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxOb3RpZmljYXRpb25zIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFzdGhlYWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFzdGhlYWQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnJhbmRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9iaXN0ZWNoLWxvZ28ucG5nXCIgd2lkdGg9ezIyNH0gaGVpZ2h0PXs3Mn0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGl0bGVcIj5DdXN0b21lciBQb3J0YWw8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbGVzXCI+XHJcbiAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJ0aWxlLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGlsZS1ncm91cC10aXRsZVwiPk1hbmFnZW1lbnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPEhvbWVQYWdlVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLWNhc2UtbWFuYWdlbWVudC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlPXt7IHR5cGU6IFwicGFnZVwiLCBsYWJlbDogXCJDYXNlc1wiLCBsaW5rOiBQQUdFUy5DYXNlcy5wYXRoIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tY29udGFjdHMuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlsZT17eyB0eXBlOiBcInBhZ2VcIiwgbGFiZWw6IFwiQ29udGFjdHNcIiwgbGluazogUEFHRVMuQ29udGFjdHMucGF0aCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgey8qIFRPRE8gIzM0Nzk3OiBSZW1vdmUgYmVsb3cgZmxhZyBvbmNlIE9yZGVycyBjYW4gYmUgc2hvd24gb24gdGhlIFBvcnRhbCAqL31cclxuICAgICAgICAgICAgICAgICAgICB7IWlzUHJvZHVjdGlvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxIb21lUGFnZVRpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tb3JkZXItbWFuYWdlbWVudC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZT17eyB0eXBlOiBcInBhZ2VcIiwgbGFiZWw6IFwiT3JkZXJzXCIsIGxpbms6IFBBR0VTLk9yZGVycy5wYXRoIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7LyogVE9ETyAjMzcyODc6IFJlbW92ZSBhYm92ZSBmbGFnIG9uY2UgSW52b2ljZXMgY2FuIGJlIHNob3duIG9uIHRoZSBQb3J0YWwgKi99XHJcbiAgICAgICAgICAgICAgICAgICAgeyFpc1Byb2R1Y3Rpb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLWludm9pY2VzLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlPXt7IHR5cGU6IFwicGFnZVwiLCBsYWJlbDogXCJJbnZvaWNlc1wiLCBsaW5rOiBQQUdFUy5JbnZvaWNlcy5wYXRoIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIHt0aWxlR3JpZExheW91dCAhPT0gXCIxXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJ0aWxlLWdyb3VwLXNlcGVyYXRvclwiPjwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInRpbGUtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aWxlLWdyb3VwLXRpdGxlXCI+SW5mcmFzdHJ1Y3R1cmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPEhvbWVQYWdlVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLW1lcmFraS5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlPXt7IHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIiwgbGFiZWw6IFwiTWVyYWtpXCIsIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTWVyYWtpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tbmluamEtcm1tLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk5pbmphIFJNTVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5OaW5qYVJNTSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxIb21lUGFnZVRpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoPVwiL2hvbWUtaWNvbi1zb2xhcndpbmRzLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIlNvbGFyd2luZHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuU29sYXJ3aW5kcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxIb21lUGFnZVRpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoPVwiL2hvbWUtaWNvbi12LWNsb3VkLWRpcmVjdG9yLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3sgdHlwZTogXCJjdXN0b21lci1hc3NldFwiLCBsYWJlbDogXCJWTVdhcmVcIiwgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5WTVdhcmUgfX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgICAge3RpbGVHcmlkTGF5b3V0ICE9PSBcIjI6MlwiICYmIHRpbGVHcmlkTGF5b3V0ICE9PSBcIjFcIiAmJiA8ZGl2IGNsYXNzTmFtZT1cInRpbGUtZ3JvdXAtc2VwZXJhdG9yXCI+PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwidGlsZS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRpbGUtZ3JvdXAtdGl0bGVcIj5TZWN1cml0eTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tZm9ydGlhbmFseXplci5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImN1c3RvbWVyLWFzc2V0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJGb3J0aUFuYWx5emVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLkZvcnRpQW5hbHl6ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsTWVzc2FnZT1cIkluIG9yZGVyIHRvIGFjY2VzcyB0aGUgRm9ydGlBbmFseXplciwgeW91IG11c3QgYmUgY29ubmVjdGVkIHRvIHlvdXIgY29tcGFueSBWUE4uXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxIb21lUGFnZVRpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoPVwiL2hvbWUtaWNvbi1mb3J0aWdhdGUuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjdXN0b21lci1hc3NldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiRm9ydGlHYXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLkZvcnRpR2F0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxNZXNzYWdlPVwiSW4gb3JkZXIgdG8gYWNjZXNzIHRoZSBGb3J0aUdhdGUsIHlvdSBtdXN0IGJlIGNvbm5lY3RlZCB0byB5b3VyIGNvbXBhbnkgVlBOLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tZm9ydGltYWlsLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIkZvcnRpTWFpbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5Gb3J0aU1haWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tbWltZWNhc3Quc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJjdXN0b21lci1hc3NldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiTWltZWNhc3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTWltZWNhc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIHt0aWxlR3JpZExheW91dCAhPT0gXCIzOjJcIiAmJiB0aWxlR3JpZExheW91dCAhPT0gXCIxXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJ0aWxlLWdyb3VwLXNlcGVyYXRvclwiPjwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInRpbGUtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0aWxlLWdyb3VwLXRpdGxlXCI+Q2xvdWQgQWRtaW48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPEhvbWVQYWdlVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLTh4OC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlPXt7IHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIiwgbGFiZWw6IFwiOHg4XCIsIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuXzh4OCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPEhvbWVQYWdlVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLWF6dXJlLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3sgdHlwZTogXCJjdXN0b21lci1hc3NldFwiLCBsYWJlbDogXCJBenVyZVwiLCB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLkF6dXJlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tbWljcm9zb2Z0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk0zNjUgQWRtaW4gQ2VudHJlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLk0zNjVBZG1pbkNlbnRyZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxIb21lUGFnZVRpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoPVwiL2hvbWUtaWNvbi1ubXMuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlsZT17eyB0eXBlOiBcImN1c3RvbWVyLWFzc2V0XCIsIGxhYmVsOiBcIk5NU1wiLCB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLk5NUyB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICB7KHRpbGVHcmlkTGF5b3V0ID09PSBcIjU6MFwiIHx8IHRpbGVHcmlkTGF5b3V0ID09PSBcIjM6MlwiKSAmJiA8ZGl2IGNsYXNzTmFtZT1cInRpbGUtZ3JvdXAtc2VwZXJhdG9yXCI+PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwidGlsZS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRpbGUtZ3JvdXAtdGl0bGVcIj5MaWNlbnNpbmcgYW5kIEJpbGxpbmc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPEhvbWVQYWdlVGlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg9XCIvaG9tZS1pY29uLWFiaWxsaXR5LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcImFCSUxMaXR5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLldlYkFiaWxpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8SG9tZVBhZ2VUaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aD1cIi9ob21lLWljb24tbWljcm9zb2Z0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiY3VzdG9tZXItYXNzZXRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk1pY3Jvc29mdCBMaWNlbnNpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTWljcm9zb2Z0TGljZW5zaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlVXNlck1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBDb250YWN0c0VkaXRGcm9tSWQgfSBmcm9tIFwiLi9Db250YWN0c0VkaXQvQ29udGFjdHNFZGl0RnJvbUlkXCI7XHJcbmltcG9ydCB7IE5vdEZvdW5kIH0gZnJvbSBcIi4vTm90Rm91bmRcIjtcclxuXHJcbi8qIENvbXBvbmVudCBjb250YWluaW5nIHRoZSBQcm9maWxlIFBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IFByb2ZpbGU6IFJlYWN0LkZDID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdXNlck1ldGFkYXRhID0gdXNlVXNlck1ldGFkYXRhKCk7XHJcblxyXG4gICAgaWYgKCF1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgcmV0dXJuIDxOb3RGb3VuZCBzaW5ndWxhckVudGl0eU5hbWU9XCJDb250YWN0XCIgdHlwZT1cInJlY29yZC1ub3QtZm91bmRcIiAvPjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gPENvbnRhY3RzRWRpdEZyb21JZCBjb250YWN0aWQ9e3VzZXJNZXRhZGF0YS5jb250YWN0SWR9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcblxyXG4vKiogRnVsbCBwYWdlIGRpYWxvZyBib3ggKi9cclxuZXhwb3J0IGNvbnN0IERpYWxvZzogUmVhY3QuRkM8eyBzaG93SWNvbjogYm9vbGVhbjsgdGl0bGU6IHN0cmluZzsgY29udGVudDogSlNYLkVsZW1lbnQgfT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IGlzTG9jYWxNb2RlID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5pc0xvY2FsTW9kZSk7XHJcbiAgICBjb25zdCBiYWNrZ3JvdW5kSW1hZ2VVcmwgPSBpc0xvY2FsTW9kZVxyXG4gICAgICAgID8gYCR7cHJvY2Vzcy5lbnYuUFVCTElDX1VSTH0vaW1hZ2VzL2Jhc2ljLWJhY2tncm91bmQuanBnYFxyXG4gICAgICAgIDogYC9iYXNpYy1iYWNrZ3JvdW5kLmpwZ2A7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImRpYWxvZy1iYWNrZ3JvdW5kXCJcclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogYHVybChcIiR7YmFja2dyb3VuZEltYWdlVXJsfVwiKSwgbGluZWFyLWdyYWRpZW50KDMwZGVnLCAjMjlhYWNkLCAjMjlhYWNkLCAjYTZjZTM5KWAsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpYWxvZy1ib3gtY29udGFpbmVyXCIgcm9sZT1cImRpYWxvZ1wiIGRhdGEtZGlhbG9nLXRpdGxlPXtwcm9wcy50aXRsZX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRpYWxvZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuc2hvd0ljb24gJiYgPEltYWdlIHNyYz1cImJpc3RlY2gtbG9nby5wbmdcIiBoZWlnaHQ9ezc1fSB3aWR0aD17MjMyfSBjbGFzc05hbWU9XCJkaWFsb2ctbG9nb1wiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJkaWFsb2ctaGVhZGluZ1wiPntwcm9wcy50aXRsZX08L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5Pntwcm9wcy5jb250ZW50fTwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IHVzZURhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL0hvb2tzL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBBR0VTIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcbmltcG9ydCB7IEltU3Bpbm5lcjIgfSBmcm9tIFwicmVhY3QtaWNvbnMvaW1cIjtcclxuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRGlhbG9nXCI7XHJcbmltcG9ydCB7IHVzZU5hdmlnYXRlIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgU3VibWlzc2lvblN0YXRlIH0gZnJvbSBcIi4uL1R5cGVzL1N1Ym1pc3Npb25TdGF0ZVwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuLi9Ib29rcy91c2VBcHBJbnNpZ2h0c1wiO1xyXG5cclxuLyogQ29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIFRlcm1zIGFuZCBDb25kaXRpb25zICovXHJcbmV4cG9ydCBjb25zdCBUZXJtc0FuZENvbmRpdGlvbnM6IFJlYWN0LkZDID0gKCkgPT4ge1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xyXG4gICAgY29uc3QgeyB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGEsIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhIH0gPSB1c2VBcHBJbnNpZ2h0cygpO1xyXG4gICAgY29uc3QgW3N1Ym1pc3Npb25TdGF0ZSwgc2V0U3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oeyBzdGF0ZTogXCJpZGxlXCIgfSk7XHJcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUuY3VycmVudFBhZ2UpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7IHR5cGU6IFwiVGVybXMgYW5kIENvbmRpdGlvbnMgLSBQcm9tcHRlZFwiIH0pO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8qKiBGdW5jdGlvbiB0byBhbGxvdyB1c2VycyB0byBhY2NlcHQgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zLCBwb3B1bGF0ZSB0aGVpciByZWNvcmQgYW5kIHJlZGlyZWN0IHRoZW0uICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBhY2NlcHRUZXJtc0FuZENvbmRpdGlvbnMoKSB7XHJcbiAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwic3VibWl0dGluZ1wiIH0pO1xyXG4gICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oeyB0eXBlOiBcIlRlcm1zIGFuZCBDb25kaXRpb25zIC0gQWNjZXB0ZWRcIiB9KTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSBgbXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlYCB1c2luZyB0aGUgRHluYW1pY3MgQVBJLlxyXG4gICAgICAgICAgICBjb25zdCB7IGFjY2VwdGVkRGF0ZSB9ID0gYXdhaXQgZGF0YVNlcnZpY2Uuc2V0UG9ydGFsVGVybXNPZkFncmVlbWVudERhdGUoKTtcclxuXHJcbiAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0VGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGVcIixcclxuICAgICAgICAgICAgICAgIHRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlOiBhY2NlcHRlZERhdGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwiY29tcGxldGVkXCIgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgdXNlcidzIGN1cnJlbnQgVXJsIGlzIHRoZSBUJkMncyBwYWdlIC0gcmVkaXJlY3QgdGhlbSB0byAnSG9tZScuXHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZS5wYXRoID09PSBQQUdFUy5UZXJtc0FuZENvbmRpdGlvbnMucGF0aCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRlKFBBR0VTLkhvbWUucGF0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJlcnJvcmVkXCIsIGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcclxuICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxEaWFsb2dcclxuICAgICAgICAgICAgc2hvd0ljb25cclxuICAgICAgICAgICAgdGl0bGU9XCJUZXJtcyBhbmQgQ29uZGl0aW9uc1wiXHJcbiAgICAgICAgICAgIGNvbnRlbnQ9e1xyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXJtcy1hbmQtY29uZGl0aW9ucy10ZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiB0aGUgQmlzdGVjaCBTZWxmLVNlcnZpY2UgUG9ydGFsIGlzIGdvdmVybmVkIGJ5IHRoZSBUZXJtcyBhbmQgQ29uZGl0aW9ucyBmb3VuZHtcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub3JlZmVycmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5iaXN0ZWNoLmNvLnVrL3NpdGUtc2VydmljZXMvZ2xvYmFsLXBhZ2VzL0N1c3RvbWVyLVBvcnRhbC1UZXJtcy1hbmQtQ29uZGl0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImVycm9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZhaWxlZCB0byBhY2NlcHQgVGVybXMgYW5kIENvbmRpdGlvbnM8L3N0cm9uZz46IHtzdWJtaXNzaW9uU3RhdGUuZXJyb3IubWVzc2FnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGVybXMtYW5kLWNvbmRpdGlvbnMtYWNjZXB0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFjY2VwdC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gYWNjZXB0VGVybXNBbmRDb25kaXRpb25zKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcInN1Ym1pdHRpbmdcIiB8fCBzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwiY29tcGxldGVkXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwic3VibWl0dGluZ1wiICYmIDxJbVNwaW5uZXIyIGNsYXNzTmFtZT1cInNwaW5cIiAvPn0gQWNjZXB0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGVybXMtYW5kLWNvbmRpdGlvbnMtY2FuY2VsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT1cImNhbmNlbC1idXR0b25cIiBocmVmPXtQQUdFUy5TaWduT3V0LnBhdGh9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgLz5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRGlhbG9nXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHJlbmRlcmluZyBhIG1lc3NhZ2UgZGV0YWlsaW5nIHRoYXQgdGhlIHBhZ2UgaXMgbm90IGV4cGVjdGVkIHRvIHdvcmsgaW4gRGV2IE1vZGUgKi9cclxuZXhwb3J0IGNvbnN0IERldk1vZGVMaW1pdGF0aW9uOiBSZWFjdC5GQyA9ICgpID0+IHtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxEaWFsb2dcclxuICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICB0aXRsZT1cIkRldiBNb2RlIGxpbWl0YXRpb25cIlxyXG4gICAgICAgICAgICBjb250ZW50PXtcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwYWdlIDxzdHJvbmc+e2xvY2F0aW9uLnBhdGhuYW1lfTwvc3Ryb25nPiBpcyBub3QgZXhwZWN0ZWQgdG8gd29yayBpbiBEZXYgTW9kZS5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3aXNoIHRvIHRlc3QgdGhpcyBmdW5jdGlvbmFsaXR5LCB5b3Ugd2lsbCBuZWVkIHRvIGRlcGxveSB0byBhIGZ1bGwgRHluYW1pY3MgMzY1IFBvcnRhbC5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gd2luZG93Lmhpc3RvcnkuYmFjaygpfT5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUFwcEluc2lnaHRzXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IGdldFVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgQ2FzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBJbnZvaWNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0ludm9pY2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuXHJcbi8qKiBDb21wb25lbnQgcmVwcmVzZW50aW5nIHRoZSBGb3JiaWRkZW4vNDAzIHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IEZvcmJpZGRlbjogUmVhY3QuRkM8eyBwZXJtaXNzaW9uTGV2ZWxNZXNzYWdlPzogSlNYLkVsZW1lbnQgfCB1bmRlZmluZWQgfT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IGJhc2VQZXJtaXNzaW9uTGV2ZWwgPSBnZXRVc2VyTWV0YWRhdGEoKS5iYXNlUGVybWlzc2lvbkxldmVsO1xyXG4gICAgY29uc3QgY2FzZVBlcm1pc3Npb25MZXZlbCA9IGdldFVzZXJNZXRhZGF0YSgpLnBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWw7XHJcbiAgICBjb25zdCBvcmRlclBlcm1pc3Npb25MZXZlbCA9IGdldFVzZXJNZXRhZGF0YSgpLnBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsO1xyXG4gICAgY29uc3QgY29udGFjdFBlcm1pc3Npb25MZXZlbCA9IGdldFVzZXJNZXRhZGF0YSgpLnBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWw7XHJcbiAgICBjb25zdCBpbnZvaWNlUGVybWlzc2lvbkxldmVsID0gZ2V0VXNlck1ldGFkYXRhKCkucG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbDtcclxuICAgIGNvbnN0IHsgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHsgdHlwZTogXCJBY2Nlc3MgRGVuaWVkXCIgfSk7XHJcbiAgICB9LCBbXSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9XCJGb3JiaWRkZW5cIj5cclxuICAgICAgICAgICAgPHA+U29ycnksIGJ1dCB5b3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IHRoaXMgcGFnZS48L3A+XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgSWYgeW91IGJlbGlldmUgeW91IHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGlzIHBhZ2UsIGNvbnRhY3QgeW91ciBJVCBBZG1pbmlzdHJhdG9yIHRvIHJldmlldyB5b3Vye1wiIFwifVxyXG4gICAgICAgICAgICAgICAgJ1Blcm1pc3Npb24gTGV2ZWwnLlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIHtiYXNlUGVybWlzc2lvbkxldmVsICYmIChcclxuICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5wZXJtaXNzaW9uTGV2ZWxNZXNzYWdlICYmIHByb3BzLnBlcm1pc3Npb25MZXZlbE1lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgY3VycmVudCAnQmFzZSBQZXJtaXNzaW9uIExldmVsJyBpc3tcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57QmFzZVBlcm1pc3Npb25MZXZlbFtiYXNlUGVybWlzc2lvbkxldmVsXX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgY3VycmVudCAnQ2FzZSBQZXJtaXNzaW9uIExldmVsJyBpc3tcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57Y2FzZVBlcm1pc3Npb25MZXZlbCA/IENhc2VQZXJtaXNzaW9uTGV2ZWxbY2FzZVBlcm1pc3Npb25MZXZlbF0gOiBcIlVua25vd25cIn08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgY3VycmVudCAnT3JkZXIgUGVybWlzc2lvbiBMZXZlbCcgaXN7XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+e29yZGVyUGVybWlzc2lvbkxldmVsID8gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbb3JkZXJQZXJtaXNzaW9uTGV2ZWxdIDogXCJVbmtub3duXCJ9PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBZb3VyIGN1cnJlbnQgJ0NvbnRhY3QgUGVybWlzc2lvbiBMZXZlbCcgaXN7XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGFjdFBlcm1pc3Npb25MZXZlbCA/IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbY29udGFjdFBlcm1pc3Npb25MZXZlbF0gOiBcIlVua25vd25cIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgY3VycmVudCAnSW52b2ljZSBQZXJtaXNzaW9uIExldmVsJyBpc3tcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnZvaWNlUGVybWlzc2lvbkxldmVsID8gSW52b2ljZVBlcm1pc3Npb25MZXZlbFtpbnZvaWNlUGVybWlzc2lvbkxldmVsXSA6IFwiVW5rbm93blwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgKTtcclxufTtcclxuIiwiLyoqIEEgY29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgdGltZWxpbmUgY2FyZCBkYXRlIHdpdGhpbiBhIHRpbWVsaW5lLiAqL1xyXG5leHBvcnQgY29uc3QgVGltZWxpbmVDYXJkRGF0ZSA9IChwcm9wczogeyBkYXRlOiBEYXRlIH0pID0+IHtcclxuICAgIC8vIEdldCB0aGUgbW9udGggYW5kIHllYXIgZS5nLiBcIkRlYyAyMDIxXCIuXHJcbiAgICBjb25zdCBtb250aEFuZFllYXIgPSBwcm9wcy5kYXRlLnRvTG9jYWxlU3RyaW5nKFwiZW4tR0JcIiwgeyBtb250aDogXCJzaG9ydFwiLCB5ZWFyOiBcIm51bWVyaWNcIiB9KTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIEhvdXJzIGFuZCBNaW51dGVzIGUuZy4gXCIxMzowNlwiLlxyXG4gICAgY29uc3QgaG91cnNBbmRNaW51dGVzID0gcHJvcHMuZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoXCJlbi1HQlwiLCB7IGhvdXI6IFwibnVtZXJpY1wiLCBtaW51dGU6IFwibnVtZXJpY1wiIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1jYXJkLWRhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lc3RhbXBcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImRhdGVcIj57cHJvcHMuZGF0ZS5nZXREYXRlKCl9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibW9udGgteWVhclwiPnttb250aEFuZFllYXJ9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGltZVwiPntob3Vyc0FuZE1pbnV0ZXN9PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IEZhQXJyb3dSaWdodCwgRmFFeGNsYW1hdGlvblRyaWFuZ2xlLCBGYVVzZXIgfSBmcm9tIFwicmVhY3QtaWNvbnMvZmFcIjtcclxuaW1wb3J0IHsgQmlFbnZlbG9wZSB9IGZyb20gXCJyZWFjdC1pY29ucy9iaVwiO1xyXG5pbXBvcnQgeyBUaW1lbGluZVJlY29yZCB9IGZyb20gXCIuLi9UeXBlcy9UaW1lTGluZVJlY29yZFwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0ltYWdlXCI7XHJcbmltcG9ydCB7IFRpbWVsaW5lQ2FyZERhdGUgfSBmcm9tIFwiLi9UaW1lbGluZUNhcmREYXRlXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuXHJcbi8qKiBBIGNvbXBvbmVudCByZXByZXNlbnRpbmcgdGhlIHRpbWVsaW5lIGNhcmQgd2l0aGluIGEgdGltZWxpbmUuICovXHJcbmV4cG9ydCBjb25zdCBUaW1lbGluZUNhcmQgPSAocHJvcHM6IHsgdGltZWxpbmVSZWNvcmQ6IFRpbWVsaW5lUmVjb3JkIH0pID0+IHtcclxuICAgIGNvbnN0IHsgYWNjb3VudE5hbWUgfSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG5cclxuICAgIGNvbnN0IGJpc3RlY2hQYXJ0eSA9IChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgICA8SW1hZ2UgY2xhc3NOYW1lPVwiYmlzdGVjaC1pY29uXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBzcmM9XCJmYXZpY29uLnBuZ1wiIC8+XHJcbiAgICAgICAgICAgIFNlcnZpY2UgRGVza1xyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjdXN0b21lclBhcnR5ID0gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxGYVVzZXIgY2xhc3NOYW1lPVwiYWN0aXZpdHktaWNvblwiIC8+XHJcbiAgICAgICAgICAgIHthY2NvdW50TmFtZX1cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWVsaW5lLWNhcmRcIlxyXG4gICAgICAgICAgICBkYXRhLWFjdGl2aXR5LXR5cGU9e3Byb3BzLnRpbWVsaW5lUmVjb3JkLnR5cGV9XHJcbiAgICAgICAgICAgIGRhdGEtZGlyZWN0aW9uPXtwcm9wcy50aW1lbGluZVJlY29yZC5kaXJlY3Rpb259XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8VGltZWxpbmVDYXJkRGF0ZSBkYXRlPXtuZXcgRGF0ZShwcm9wcy50aW1lbGluZVJlY29yZC5kYXRlKX0gLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1jYXJkLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtdHJhbnNhY3Rpb24taW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy50aW1lbGluZVJlY29yZC50eXBlID09PSBcIk1ham9ySW5jaWRlbnRVcGRhdGVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLXNlbmRlclwiIHRpdGxlPVwiRnJvbTogU2VydmljZSBEZXNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Jpc3RlY2hQYXJ0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1hY3Rpdml0eS10eXBlXCIgdGl0bGU9XCJNYWpvciBJbmNpZGVudCBVcGRhdGUgZm9yIHlvdXIgY2FzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYUV4Y2xhbWF0aW9uVHJpYW5nbGUgY2xhc3NOYW1lPVwiYWN0aXZpdHktaWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFqb3IgSW5jaWRlbnQgVXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGltZWxpbmVSZWNvcmQudHlwZSA9PT0gXCJFbWFpbFwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcHMudGltZWxpbmVSZWNvcmQuZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmcm9tLWJpc3RlY2hcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGltZWxpbmUtc2VuZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtgRnJvbTogU2VydmljZSBEZXNrLCBUbzogJHthY2NvdW50TmFtZX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YmlzdGVjaFBhcnR5fSA8RmFBcnJvd1JpZ2h0IGNsYXNzTmFtZT1cImRpcmVjdGlvbi1pY29uXCIgLz57XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3VzdG9tZXJQYXJ0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZyb20tY3VzdG9tZXJcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0aW1lbGluZS1zZW5kZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17YEZyb206ICR7YWNjb3VudE5hbWV9LCBUbzogU2VydmljZSBEZXNrYH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXN0b21lclBhcnR5fSA8RmFBcnJvd1JpZ2h0IGNsYXNzTmFtZT1cImRpcmVjdGlvbi1pY29uXCIgLz57XCIgXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaXN0ZWNoUGFydHl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8PjwvPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1hY3Rpdml0eS10eXBlXCIgdGl0bGU9XCJTZW50IHZpYSBFbWFpbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaUVudmVsb3BlIGNsYXNzTmFtZT1cImFjdGl2aXR5LWljb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMudGltZWxpbmVSZWNvcmQudHlwZSA9PT0gXCJDb21tZW50XCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wcy50aW1lbGluZVJlY29yZC5kaXJlY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZyb20tYmlzdGVjaFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0aW1lbGluZS1zZW5kZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e2BGcm9tOiBTZXJ2aWNlIERlc2ssIFRvOiAke2FjY291bnROYW1lfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtiaXN0ZWNoUGFydHl9IDxGYUFycm93UmlnaHQgY2xhc3NOYW1lPVwiZGlyZWN0aW9uLWljb25cIiAvPntcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXN0b21lclBhcnR5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZnJvbS1jdXN0b21lclwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRpbWVsaW5lLXNlbmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtgRnJvbTogJHthY2NvdW50TmFtZX0sIFRvOiBTZXJ2aWNlIERlc2tgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1c3RvbWVyUGFydHl9IDxGYUFycm93UmlnaHQgY2xhc3NOYW1lPVwiZGlyZWN0aW9uLWljb25cIiAvPntcIiBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Jpc3RlY2hQYXJ0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDw+PC8+O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWFjdGl2aXR5LXR5cGVcIiB0aXRsZT1cIlNlbnQgdmlhIFBvcnRhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYVVzZXIgY2xhc3NOYW1lPVwiYWN0aXZpdHktaWNvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgeyhwcm9wcy50aW1lbGluZVJlY29yZC50eXBlID09PSBcIk1ham9ySW5jaWRlbnRVcGRhdGVcIiB8fCBwcm9wcy50aW1lbGluZVJlY29yZC50eXBlID09PSBcIkVtYWlsXCIpICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtc3ViamVjdFwiIHRpdGxlPXtwcm9wcy50aW1lbGluZVJlY29yZC5zdWJqZWN0fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy50aW1lbGluZVJlY29yZC5zdWJqZWN0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPntwcm9wcy50aW1lbGluZVJlY29yZC5ib2R5fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gXCIuLi9FcnJvckJvdW5kYXJ5XCI7XHJcblxyXG4vKiogTXVsdGktbGluZSB0ZXh0IGZpZWxkIGZvciB0aGUgY29tbWVudCBzZWN0aW9uIG9uIHRoZSB0aW1lbGluZS4gKi9cclxuZXhwb3J0IGNvbnN0IENvbW1lbnRGaWVsZDogUmVhY3QuRkM8e1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IHN0cmluZykgPT4gdm9pZDtcclxuICAgIGN1c3RvbVZhbGlkaXR5PzogKHZhbGlkaXR5OiBWYWxpZGl0eVN0YXRlKSA9PiBzdHJpbmc7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCB0ZXh0QXJlYVJlZiA9IHVzZVJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PihudWxsKTtcclxuXHJcbiAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGN1c3RvbSB2YWxpZGl0eSBydWxlcy5cclxuICAgIGlmIChwcm9wcy5jdXN0b21WYWxpZGl0eSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGV4dEFyZWFSZWYuY3VycmVudD8uc2V0Q3VzdG9tVmFsaWRpdHkocHJvcHMuY3VzdG9tVmFsaWRpdHkodGV4dEFyZWFSZWYuY3VycmVudC52YWxpZGl0eSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGxhYmVsIGRhdGEtbmFtZT17cHJvcHMubmFtZX0gY2xhc3NOYW1lPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjb21tZW50LWZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtwcm9wcy5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9wcy52YWx1ZX1cclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17XCJBZGQgYSBjb21tZW50LlwifVxyXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9ezN9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4gcHJvcHMub25DaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgICAgICAgICByZWY9e3RleHRBcmVhUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICApO1xyXG59O1xyXG4iLCIvKiogRW51bSByZXByZXNlbnRpbmcgdGhlIGBwYXJ0aWNpcGF0aW9udHlwZW1hc2tgIG9mIGFuIGBhY3Rpdml0eXBhcnR5YCAqL1xyXG5leHBvcnQgZW51bSBQYXJ0aWNpcGF0aW9uVHlwZU1hc2sge1xyXG4gICAgLyoqIFNlbmRlciBBY3Rpdml0eSBQYXJ0eS4gKi9cclxuICAgIFNlbmRlciA9IDEsXHJcblxyXG4gICAgLyoqIFRvIFJlY2lwaWVudCBBY3Rpdml0eSBQYXJ0eS4gKi9cclxuICAgIFRvUmVjaXBpZW50ID0gMixcclxuXHJcbiAgICAvKiogQ0MgUmVjaXBpZW50IEFjdGl2aXR5IFBhcnR5LiAqL1xyXG4gICAgQ0NSZWNpcGllbnQgPSAzLFxyXG5cclxuICAgIC8qKiBCQ0MgUmVjaXBpZW50IEFjdGl2aXR5IFBhcnR5LiAqL1xyXG4gICAgQkNDUmVjaXBpZW50ID0gNCxcclxuXHJcbiAgICAvKiogUmVxdWlyZWQgQXR0ZW5kZWUgQWN0aXZpdHkgUGFydHkuICovXHJcbiAgICBSZXF1aXJlZEF0dGVuZGVlID0gNSxcclxuXHJcbiAgICAvKiogT3B0aW9uYWwgQXR0ZW5kZWUgQWN0aXZpdHkgUGFydHkuICovXHJcbiAgICBPcHRpb25hbEF0dGVuZGVlID0gNixcclxuXHJcbiAgICAvKiogT3JnYW5pc2VyIEFjdGl2aXR5IFBhcnR5LiAqL1xyXG4gICAgT3JnYW5pemVyID0gNyxcclxuXHJcbiAgICAvKiogUmVnYXJkaW5nIEFjdGl2aXR5IFBhcnR5LiAqL1xyXG4gICAgUmVnYXJkaW5nID0gOCxcclxuXHJcbiAgICAvKiogT3duZXIgQWN0aXZpdHkgUGFydHkuICovXHJcbiAgICBPd25lciA9IDksXHJcblxyXG4gICAgLyoqIFJlc291cmNlIEFjdGl2aXR5IFBhcnR5LiAqL1xyXG4gICAgUmVzb3VyY2UgPSAxMCxcclxuXHJcbiAgICAvKiogQ3VzdG9tZXIgQWN0aXZpdHkgUGFydHkuICovXHJcbiAgICBDdXN0b21lciA9IDExLFxyXG59XHJcbiIsImltcG9ydCB7IFRpbWVsaW5lQ2FyZERhdGUgfSBmcm9tIFwiLi9UaW1lbGluZUNhcmREYXRlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRGaWVsZCB9IGZyb20gXCIuL0ZpZWxkcy9Db21tZW50RmllbGRcIjtcclxuaW1wb3J0IHsgdXNlVXNlck1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb21tZW50Rm9yQ3JlYXRlIH0gZnJvbSBcIi4uL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yQ3JlYXRlXCI7XHJcbmltcG9ydCB7IFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWwgfSBmcm9tIFwiLi4vTW9kZWxzL1BvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlIH0gZnJvbSBcIi4uL01vZGVscy9JbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuaW1wb3J0IHsgSW1TcGlubmVyMiB9IGZyb20gXCJyZWFjdC1pY29ucy9pbVwiO1xyXG5pbXBvcnQgeyBCaUNoZXZyb25Eb3duLCBCaVBlbmNpbCB9IGZyb20gXCJyZWFjdC1pY29ucy9iaVwiO1xyXG5pbXBvcnQgeyBEaXJlY3Rpb25Db2RlIH0gZnJvbSBcIi4uL0VudW1zL0RpcmVjdGlvbkNvZGVcIjtcclxuaW1wb3J0IHsgUGFydGljaXBhdGlvblR5cGVNYXNrIH0gZnJvbSBcIi4uL0VudW1zL1BhcnRpY2lwYXRpb25UeXBlTWFza1wiO1xyXG5pbXBvcnQgeyBTdWJtaXNzaW9uU3RhdGUgfSBmcm9tIFwiLi4vVHlwZXMvU3VibWlzc2lvblN0YXRlXCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzIH0gZnJvbSBcIi4uL0hvb2tzL3VzZUFwcEluc2lnaHRzXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuXHJcbi8qKiBBIGNvbXBvbmVudCByZXByZXNlbnRpbmcgdGhlIHRpbWVsaW5lIGNvbW1lbnQgY2FyZCBhdCB0aGUgdG9wIG9mIHRoZSB0aW1lbGluZS4gKi9cclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lQ29tbWVudENhcmQgPSAocHJvcHM6IHtcclxuICAgIGN1cnJlbnRFbnRpdHk6IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSB8IE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGU7XHJcbiAgICBzZXRQb3J0YWxDb21tZW50czogKHVwZGF0ZWRDb21tZW50czogUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdKSA9PiB2b2lkO1xyXG4gICAgcG9ydGFsQ29tbWVudHM6IFBvcnRhbENvbW1lbnRGb3JSZXRyaWV2YWxbXTtcclxuICAgIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgZW50aXR5SWQ6IHN0cmluZztcclxufSkgPT4ge1xyXG4gICAgY29uc3QgZW50aXR5SWQgPSBwcm9wcy5lbnRpdHlJZDtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgeyB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgaWYgKCF1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBcXGB1c2VyTWV0YWRhdGEuY29udGFjdElkXFxgIHRvIGJlIHBvcHVsYXRlZGApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBbcG9ydGFsQ29tbWVudCwgc2V0UG9ydGFsQ29tbWVudF0gPSB1c2VTdGF0ZTxQb3J0YWxDb21tZW50Rm9yQ3JlYXRlPih7XHJcbiAgICAgICAgX3JlZ2FyZGluZ29iamVjdGlkX3ZhbHVlOiBlbnRpdHlJZCEsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRkaXJlY3Rpb25jb2RlOiBEaXJlY3Rpb25Db2RlW1wiSW5jb21pbmdcIl0sXHJcbiAgICAgICAgZGVzY3JpcHRpb246IFwiXCIsXHJcbiAgICAgICAgYWR4X3BvcnRhbGNvbW1lbnRfYWN0aXZpdHlfcGFydGllczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9udHlwZW1hc2s6IFBhcnRpY2lwYXRpb25UeXBlTWFza1tcIlNlbmRlclwiXSxcclxuICAgICAgICAgICAgICAgIF9wYXJ0eWlkX3ZhbHVlOiB1c2VyTWV0YWRhdGEuY29udGFjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBQcm9ncmVzcyBvZiB0aGUgQ29tbWVudCBjcmVhdGlvblxyXG4gICAgY29uc3QgW3N1Ym1pc3Npb25TdGF0ZSwgc2V0U3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oe1xyXG4gICAgICAgIHN0YXRlOiBcImlkbGVcIixcclxuICAgIH0pO1xyXG5cclxuICAgIC8qKiBIYW5kbGVyIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIGNvbW1lbnQuICovXHJcbiAgICBhc3luYyBmdW5jdGlvbiBvblN1Ym1pdCgpIHtcclxuICAgICAgICAvLyBQcmV2ZW50IGFuIGVtcHR5IGNvbW1lbnQgZnJvbSBiZWluZyBzdWJtaXR0ZWQuXHJcbiAgICAgICAgaWYgKHBvcnRhbENvbW1lbnQuZGVzY3JpcHRpb24gPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwiZXJyb3JlZFwiLCBlcnJvcjogbmV3IEVycm9yKFwiVGhlIGNvbW1lbnQgY2FuIG5vdCBiZSBlbXB0eS5cIikgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJzdWJtaXR0aW5nXCIgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVudGl0eUFzSW5jaWRlbnQgPSBwcm9wcy5jdXJyZW50RW50aXR5IGFzIEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGVudGl0eSBoYXMgYW4gaW5jaWRlbnRpZCwgdGhlbiBpdCBpcyBhbiBJbmNpZGVudCwgb3RoZXJ3aXNlIGl0IGlzIGEgTmV0d29yayBPcmRlclxyXG4gICAgICAgIGNvbnN0IGVudGl0eVR5cGUgPSBlbnRpdHlBc0luY2lkZW50LmluY2lkZW50aWQgPyBcImluY2lkZW50XCIgOiBcImJpc3RlY2hfbmV0d29ya29yZGVyXCI7XHJcblxyXG4gICAgICAgIGxldCBjcmVhdGVkUG9ydGFsQ29tbWVudDogUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBDb21tZW50LlxyXG4gICAgICAgICAgICBjcmVhdGVkUG9ydGFsQ29tbWVudCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnNlbmRQb3J0YWxDb21tZW50KHBvcnRhbENvbW1lbnQsIGVudGl0eVR5cGUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImVycm9yZWRcIiwgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xyXG4gICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoeyBzdGF0ZTogXCJjb21wbGV0ZWRcIiB9KTtcclxuXHJcbiAgICAgICAgcHJvcHMuc2V0UG9ydGFsQ29tbWVudHMoWy4uLnByb3BzLnBvcnRhbENvbW1lbnRzLCBjcmVhdGVkUG9ydGFsQ29tbWVudF0pO1xyXG5cclxuICAgICAgICAvLyBTZXQgdGhlIHBvcnRhbCBjb21tZW50IHRvIGVtcHR5LlxyXG4gICAgICAgIHNldFBvcnRhbENvbW1lbnQoeyAuLi5wb3J0YWxDb21tZW50LCBkZXNjcmlwdGlvbjogXCJcIiB9KTtcclxuXHJcbiAgICAgICAgLy8gQ2xvc2UgdGhlIGNvbW1lbnQgZGlhbG9nXHJcbiAgICAgICAgc2V0SXNFeHBhbmRlZChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGlzRXhwYW5kZWQpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUNhcmREYXRlIGRhdGU9e25ldyBEYXRlKCl9IC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpbWVsaW5lLWNhcmQtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY2FyZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1zdWJqZWN0XCI+QWRkIGEgQ29tbWVudC4uLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb21tZW50RmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e1wiQ29tbWVudFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BvcnRhbENvbW1lbnQuZGVzY3JpcHRpb24gfHwgXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGVzY3JpcHRpb24pID0+IHNldFBvcnRhbENvbW1lbnQoeyAuLi5wb3J0YWxDb21tZW50LCBkZXNjcmlwdGlvbiB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1zdWJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlLnN0YXRlID09PSBcImVycm9yZWRcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5GYWlsZWQgdG8gY3JlYXRlIENvbW1lbnQ8L3N0cm9uZz46IHtzdWJtaXNzaW9uU3RhdGUuZXJyb3IubWVzc2FnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhbmNlbC1jb21tZW50IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic3VibWl0LWNvbW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU3VibWl0KCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pc3Npb25TdGF0ZS5zdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZS5zdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCIgJiYgPEltU3Bpbm5lcjIgY2xhc3NOYW1lPVwic3BpblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGltZWxpbmUtY29tbWVudC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGltZWxpbmUtY29tbWVudC1jb250ZW50XCJcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZWR9XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmRpc2FibGVkID8gXCJBIFBvcnRhbCBDb21tZW50IGNhbm5vdCBiZSBjcmVhdGVkIGFzIHRoZSBDYXNlIGlzIHJlYWQtb25seVwiIDogdW5kZWZpbmVkfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29tbWVudC1pbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbW1lbnQtcGVuY2lsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmlQZW5jaWwgc2l6ZT17XCIxLjNlbVwifSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbW1lbnQtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb21tZW50LXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkFkZCBhIENvbW1lbnQuLi48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoZXZyb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCaUNoZXZyb25Eb3duIHNpemU9e1wiMS4zZW1cIn0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufTtcclxuIiwiaW1wb3J0IHsgRGlyZWN0aW9uQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9EaXJlY3Rpb25Db2RlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZSB9IGZyb20gXCIuLi9Nb2RlbHMvSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlXCI7XHJcbmltcG9ydCB7IE1ham9ySW5jaWRlbnRVcGRhdGUgfSBmcm9tIFwiLi4vTW9kZWxzL01ham9ySW5jaWRlbnRVcGRhdGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBQb3J0YWxFbWFpbCB9IGZyb20gXCIuLi9Nb2RlbHMvUG9ydGFsRW1haWxcIjtcclxuaW1wb3J0IHsgVGltZWxpbmVSZWNvcmQgfSBmcm9tIFwiLi4vVHlwZXMvVGltZUxpbmVSZWNvcmRcIjtcclxuaW1wb3J0IHsgVGltZWxpbmVDYXJkIH0gZnJvbSBcIi4vVGltZWxpbmVDYXJkXCI7XHJcbmltcG9ydCB7IFRpbWVsaW5lQ29tbWVudENhcmQgfSBmcm9tIFwiLi9UaW1lbGluZUNvbW1lbnRDYXJkXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGUgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlckZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuXHJcbi8qKiBBIGNvbXBvbmVudCByZXByZXNlbnRpbmcgYSB0aW1lbGluZS4gKi9cclxuZXhwb3J0IGNvbnN0IFRpbWVsaW5lID0gKHByb3BzOiB7XHJcbiAgICBjdXJyZW50RW50aXR5OiBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2ZU11bHRpcGxlIHwgSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlO1xyXG4gICAgcG9ydGFsRW1haWxzOiBQb3J0YWxFbWFpbFtdO1xyXG4gICAgbWFqb3JJbmNpZGVudFVwZGF0ZXM6IE1ham9ySW5jaWRlbnRVcGRhdGVbXTtcclxuICAgIHBvcnRhbENvbW1lbnRzOiBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsW107XHJcbiAgICB0aWNrZXROdW1iZXI6IHN0cmluZztcclxuICAgIHNldFBvcnRhbENvbW1lbnRzOiAodXBkYXRlZENvbW1lbnRzOiBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsW10pID0+IHZvaWQ7XHJcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIGVudGl0eUlkOiBzdHJpbmc7XHJcbn0pID0+IHtcclxuICAgIGNvbnN0IGVtYWlsVGltZWxpbmVSZWNvcmRzOiBUaW1lbGluZVJlY29yZFtdID0gcHJvcHMucG9ydGFsRW1haWxzLm1hcCgoZW1haWwpID0+ICh7XHJcbiAgICAgICAgaWQ6IGVtYWlsLmFjdGl2aXR5aWQsXHJcbiAgICAgICAgdHlwZTogXCJFbWFpbFwiLFxyXG4gICAgICAgIHN1YmplY3Q6IGVtYWlsLnN1YmplY3QsXHJcbiAgICAgICAgYm9keTogZW1haWwuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgZGF0ZTogZW1haWwuY3JlYXRlZG9uLFxyXG4gICAgICAgIGRpcmVjdGlvbjogZW1haWwuYmlzdGVjaF9kaXJlY3Rpb24gPyBcImZyb20tYmlzdGVjaFwiIDogXCJmcm9tLWN1c3RvbWVyXCIsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgY29tbWVudFRpbWVsaW5lUmVjb3JkczogVGltZWxpbmVSZWNvcmRbXSA9IHByb3BzLnBvcnRhbENvbW1lbnRzLm1hcCgoY29tbWVudCkgPT4gKHtcclxuICAgICAgICBpZDogY29tbWVudC5hY3Rpdml0eWlkLFxyXG4gICAgICAgIHR5cGU6IFwiQ29tbWVudFwiLFxyXG4gICAgICAgIGJvZHk6IGNvbW1lbnQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgZGF0ZTogY29tbWVudC5jcmVhdGVkb24sXHJcbiAgICAgICAgZGlyZWN0aW9uOiBjb21tZW50LmFkeF9wb3J0YWxjb21tZW50ZGlyZWN0aW9uY29kZSA9PT0gRGlyZWN0aW9uQ29kZS5PdXRnb2luZyA/IFwiZnJvbS1iaXN0ZWNoXCIgOiBcImZyb20tY3VzdG9tZXJcIixcclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCBtYWpvckluY2lkZW50VGltZWxpbmVSZWNvcmRzOiBUaW1lbGluZVJlY29yZFtdID0gcHJvcHMubWFqb3JJbmNpZGVudFVwZGF0ZXMubWFwKChtYWpvckluY2lkZW50VXBkYXRlKSA9PiAoe1xyXG4gICAgICAgIGlkOiBtYWpvckluY2lkZW50VXBkYXRlLmFjdGl2aXR5aWQsXHJcbiAgICAgICAgdHlwZTogXCJNYWpvckluY2lkZW50VXBkYXRlXCIsXHJcbiAgICAgICAgc3ViamVjdDogYEluIHJlZmVyZW5jZSB0bzogJHtwcm9wcy50aWNrZXROdW1iZXJ9YCxcclxuICAgICAgICBib2R5OiBtYWpvckluY2lkZW50VXBkYXRlLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIGRhdGU6IG1ham9ySW5jaWRlbnRVcGRhdGUuY3JlYXRlZG9uLFxyXG4gICAgICAgIGRpcmVjdGlvbjogXCJmcm9tLWJpc3RlY2hcIixcclxuICAgIH0pKTtcclxuXHJcbiAgICBjb25zdCB0aW1lbGluZVJlY29yZHMgPSBlbWFpbFRpbWVsaW5lUmVjb3Jkcy5jb25jYXQoY29tbWVudFRpbWVsaW5lUmVjb3JkcykuY29uY2F0KG1ham9ySW5jaWRlbnRUaW1lbGluZVJlY29yZHMpO1xyXG5cclxuICAgIC8vIFNvcnQgdGhlIHRpbWVsaW5lIHJlY29yZHMgYnkgJ2NyZWF0ZWRvbicgZGF0ZS5cclxuICAgIGNvbnN0IHNvcnRlZFRpbWVsaW5lUmVjb3JkcyA9IHRpbWVsaW5lUmVjb3Jkc1xyXG4gICAgICAgIC5zbGljZSgpXHJcbiAgICAgICAgLnNvcnQoKHJlY29yZEEsIHJlY29yZEIpID0+IG5ldyBEYXRlKHJlY29yZEIuZGF0ZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUocmVjb3JkQS5kYXRlKS5nZXRUaW1lKCkpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aW1lbGluZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImhlYWRpbmdcIj5UaW1lbGluZTwvaDI+XHJcbiAgICAgICAgICAgIDxUaW1lbGluZUNvbW1lbnRDYXJkXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RW50aXR5PXtwcm9wcy5jdXJyZW50RW50aXR5fVxyXG4gICAgICAgICAgICAgICAgc2V0UG9ydGFsQ29tbWVudHM9e3Byb3BzLnNldFBvcnRhbENvbW1lbnRzfVxyXG4gICAgICAgICAgICAgICAgcG9ydGFsQ29tbWVudHM9e3Byb3BzLnBvcnRhbENvbW1lbnRzfVxyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmRpc2FibGVkfVxyXG4gICAgICAgICAgICAgICAgZW50aXR5SWQ9e3Byb3BzLmVudGl0eUlkfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB7c29ydGVkVGltZWxpbmVSZWNvcmRzLm1hcCgodGltZWxpbmVSZWNvcmQpID0+IChcclxuICAgICAgICAgICAgICAgIDxUaW1lbGluZUNhcmQga2V5PXt0aW1lbGluZVJlY29yZC5pZH0gdGltZWxpbmVSZWNvcmQ9e3RpbWVsaW5lUmVjb3JkfSAvPlxyXG4gICAgICAgICAgICApKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRmFVc2VyIH0gZnJvbSBcInJlYWN0LWljb25zL2ZhXCI7XHJcbmltcG9ydCB7IEltU3Bpbm5lcjIgfSBmcm9tIFwicmVhY3QtaWNvbnMvaW1cIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9Mb29rdXBGaWVsZFwiO1xyXG5pbXBvcnQgeyBNdWx0aUxpbmVTdHJpbmdGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9NdWx0aUxpbmVTdHJpbmdGaWVsZFwiO1xyXG5pbXBvcnQgeyBTdHJpbmdGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9TdHJpbmdGaWVsZFwiO1xyXG5pbXBvcnQgeyBUaW1lbGluZSB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL1RpbWVsaW5lXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uLy4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgQ2FzZVByaW9yaXR5Q29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9DYXNlUHJpb3JpdHlDb2RlXCI7XHJcbmltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSBcIi4uLy4uL0VudW1zL0Nhc2VUeXBlXCI7XHJcbmltcG9ydCB7IERpcmVjdGlvbkNvZGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvRGlyZWN0aW9uQ29kZVwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudFN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvSW5jaWRlbnRTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IFBhcnRpY2lwYXRpb25UeXBlTWFzayB9IGZyb20gXCIuLi8uLi9FbnVtcy9QYXJ0aWNpcGF0aW9uVHlwZU1hc2tcIjtcclxuaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi8uLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IHVzZURhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBBR0VTIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi8uLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgSW5jaWRlbnRGb3JSZXRyaWV2ZU11bHRpcGxlIH0gZnJvbSBcIi4uLy4uL01vZGVscy9JbmNpZGVudEZvclJldHJpZXZlTXVsdGlwbGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvUG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFwiO1xyXG5pbXBvcnQgeyBCdXR0b25JbmZvcm1hdGlvbiB9IGZyb20gXCIuLi8uLi9UeXBlcy9CdXR0b25JbmZvcm1hdGlvblwiO1xyXG5pbXBvcnQgeyBDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbiB9IGZyb20gXCIuLi8uLi9UeXBlcy9DYWxsVG9BY3Rpb25JbmZvcm1hdGlvblwiO1xyXG5pbXBvcnQgeyBTdWJtaXNzaW9uU3RhdGUgfSBmcm9tIFwiLi4vLi4vVHlwZXMvU3VibWlzc2lvblN0YXRlXCI7XHJcbmltcG9ydCB7IENhbGxUb0FjdGlvbkJhc2VQYWdlIH0gZnJvbSBcIi4uL0NhbGxUb0FjdGlvbkJhc2VQYWdlXCI7XHJcbmltcG9ydCB7IENvbnRhY3RTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvQ29udGFjdFN0YXRlQ29kZVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyB0b1BhcnRpYWxEaWZmIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvdG9QYXJ0aWFsRGlmZlwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuLi8uLi9Ib29rcy91c2VBcHBJbnNpZ2h0c1wiO1xyXG5pbXBvcnQgeyBCYW5uZXJTYXZlUHJlcmVxdWlzaXRlcyB9IGZyb20gXCIuLi8uLi9UeXBlcy9CYW5uZXJTYXZlUHJlcmVxdWlzaXRlc1wiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclVwZGF0ZSB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvSW5jaWRlbnRGb3JVcGRhdGVcIjtcclxuaW1wb3J0IHsgUG9ydGFsQ29tbWVudEZvckNyZWF0ZSB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvUG9ydGFsQ29tbWVudEZvckNyZWF0ZVwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvSW5jaWRlbnRGb3JSZXRyaWV2YWxcIjtcclxuXHJcbi8qIENvbXBvbmVudCBjb250YWluaW5nIHRoZSBFZGl0IENhc2UgcGFnZSAqL1xyXG5leHBvcnQgY29uc3QgQ2FzZXNFZGl0Q29udGVudDogUmVhY3QuRkM8eyBpbml0aWFsSW5jaWRlbnQ6IEluY2lkZW50Rm9yUmV0cmlldmFsOyBvblNhdmU6ICgpID0+IHZvaWQgfT4gPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IGluY2lkZW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuaW5jaWRlbnRzKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhLCB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YSB9ID0gdXNlQXBwSW5zaWdodHMoKTtcclxuXHJcbiAgICBjb25zdCBpc0RpcnR5ID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pc0RpcnR5KTtcclxuXHJcbiAgICBjb25zdCBbaW5jaWRlbnRUb1VwZGF0ZSwgc2V0SW5jaWRlbnRdID0gdXNlU3RhdGU8SW5jaWRlbnRGb3JVcGRhdGU+KHtcclxuICAgICAgICBfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZTogcHJvcHMuaW5pdGlhbEluY2lkZW50Ll9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlLFxyXG4gICAgICAgIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2U6IHByb3BzLmluaXRpYWxJbmNpZGVudC5iaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2F2ZVByZXJlcXVpc2l0ZXM6IEJhbm5lclNhdmVQcmVyZXF1aXNpdGVzW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmltYXJ5IENvbnRhY3QgZmllbGQgaXMgbm90IFBvcHVsYXRlZC5cIixcclxuICAgICAgICAgICAgaXNWYWxpZDogKCkgPT4gQm9vbGVhbihpbmNpZGVudFRvVXBkYXRlLl9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlKSxcclxuICAgICAgICAgICAgY3VzdG9tZXJNZXNzYWdlOiBcIlBsZWFzZSBwb3B1bGF0ZSBhICdQcmltYXJ5IENvbnRhY3QnXCIsXHJcbiAgICAgICAgfSxcclxuICAgIF07XHJcblxyXG4gICAgLy8gRmxhZyBob2xkaW5nIHdoZXRoZXIgdGhlIGZvcm0gaGFzIGF0dGVtcHRlZCB0byBiZSBzdWJtaXR0ZWRcclxuICAgIGNvbnN0IFtmb3JtU3VibWl0QXR0ZW1wdGVkLCBzZXRGb3JtU3VibWl0QXR0ZW1wdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBbc3VibWlzc2lvblJlYXNvbiwgc2V0U3VibWlzc2lvblJlYXNvbl0gPSB1c2VTdGF0ZShcIlwiKTtcclxuXHJcbiAgICAvLyBGbGFnIGhvbGRpbmcgd2hldGhlciB0aGUgY29tcG9uZW50IGhhcyBsb2FkZWRcclxuICAgIGNvbnN0IFtpc0xvYWRlZCwgc2V0SXNMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICAgIC8vIFByb2dyZXNzIG9mIHRoZSBDYXNlIHVwZGF0ZVxyXG4gICAgY29uc3QgW3N1Ym1pc3Npb25TdGF0ZSwgc2V0U3VibWlzc2lvblN0YXRlXSA9IHVzZVN0YXRlPFN1Ym1pc3Npb25TdGF0ZT4oe1xyXG4gICAgICAgIHN0YXRlOiBcImlkbGVcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IFtwb3J0YWxDb21tZW50cywgc2V0UG9ydGFsQ29tbWVudHNdID0gdXNlU3RhdGU8UG9ydGFsQ29tbWVudEZvclJldHJpZXZhbFtdPihcclxuICAgICAgICBwcm9wcy5pbml0aWFsSW5jaWRlbnQuaW5jaWRlbnRfYWR4X3BvcnRhbGNvbW1lbnRzID8/IFtdXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdXNlck1ldGFkYXRhLmNvbnRhY3RJZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgdGhlIHVzZXIgY29udGFjdElEIHRvIGJlIHBvcHVsYXRlZCBidXQgd2FzICR7dXNlck1ldGFkYXRhLmNvbnRhY3RJZH0gYCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gV2hlbiB0aGUgQ2FzZSBoYXMgYmVlbiB1cGRhdGVkIChidXQgbm90IHlldCBzYXZlZCksIHVwZGF0ZSB0aGUgaXNEaXJ0eSBmbGFnXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGhhc1Vuc2F2ZWRDaGFuZ2VzID0gT2JqZWN0LmtleXModG9QYXJ0aWFsRGlmZihwcm9wcy5pbml0aWFsSW5jaWRlbnQsIGluY2lkZW50VG9VcGRhdGUpKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0SXNEaXJ0eVwiLCBpc0RpcnR5OiBoYXNVbnNhdmVkQ2hhbmdlcyB9KTtcclxuICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiU2V0U2F2ZURpcnR5UGFnZVwiLFxyXG4gICAgICAgICAgICBzYXZlRGlydHlQYWdlOiB7IHNhdmVGdW5jdGlvbjogb25TdWJtaXQsIHN1Ym1pc3Npb25QcmVyZXF1aXNpdGVzOiBzYXZlUHJlcmVxdWlzaXRlcyB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSwgW2luY2lkZW50VG9VcGRhdGUsIHByb3BzLmluaXRpYWxJbmNpZGVudF0pO1xyXG5cclxuICAgIC8vIE1hcmsgdGhlIGNvbXBvbmVudCBhcyBsb2FkZWRcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0SXNMb2FkZWQodHJ1ZSk7XHJcbiAgICB9LCBbXSk7XHJcblxyXG4gICAgaWYgKCFwcm9wcy5pbml0aWFsSW5jaWRlbnQgfHwgIWluY2lkZW50VG9VcGRhdGUpIHtcclxuICAgICAgICByZXR1cm4gPE5vdEZvdW5kIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgc2luZ3VsYXJFbnRpdHlOYW1lPVwiQ2FzZVwiIC8+O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnQgaGFuZGxlciBmb3Igc3VibWlzc2lvbiBvZiB0aGUgZm9ybS5cclxuICAgICAqIEBwYXJhbSBldmVudCBGb3JtIHN1Ym1pc3Npb24gZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uU3VibWl0KCkge1xyXG4gICAgICAgIGlmIChpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBcXGBpbmNpZGVudHNcXGAgdG8gaGF2ZSBsb2FkZWQgYmVmb3JlIHN1Ym1pc3Npb25gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcInN1Ym1pdHRpbmdcIiB9KTtcclxuICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgdHlwZTogXCJFZGl0IENhc2UgLSBDYXNlIHVwZGF0ZSBzdWJtaXR0ZWRcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZDogcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCB1cGRhdGVkSW5jaWRlbnQ6IEluY2lkZW50Rm9yUmV0cmlldmVNdWx0aXBsZTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBDYXNlXHJcbiAgICAgICAgICAgIHVwZGF0ZWRJbmNpZGVudCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZUluY2lkZW50KFxyXG4gICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgICAgICAgICB0b1BhcnRpYWxEaWZmKHByb3BzLmluaXRpYWxJbmNpZGVudCwgaW5jaWRlbnRUb1VwZGF0ZSEpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwiZXJyb3JlZFwiLCBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfSk7XHJcbiAgICAgICAgICAgIHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YT8uKGVycm9yKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkVkaXQgQ2FzZSAtIENhc2UgdXBkYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgaW5jaWRlbnRJZDogcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgdXBkYXRlZCBJbmNpZGVudCB0byBzdGF0ZSwgc28gaXQgY2FuIGJlIHZpZXdlZFxyXG4gICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJTZXRBY3RpdmVJbmNpZGVudHNcIixcclxuICAgICAgICAgICAgYWN0aXZlSW5jaWRlbnRzOiB7XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogaW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5kYXRhLmNvbmNhdChbdXBkYXRlZEluY2lkZW50XSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImNvbXBsZXRlZFwiIH0pO1xyXG4gICAgICAgIHByb3BzLm9uU2F2ZSgpO1xyXG5cclxuICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogXCJDYXNlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5ZWRPblJlbGF0aXZlVXJsOiBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofWAsXHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5VW50aWw6IERhdGVIZWxwZXIuYWRkU2Vjb25kcyhuZXcgRGF0ZSgpLCAxMCksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB3aGljaCBjb250cm9scyB0aGUgaGFuZGxpbmcgb2YgZGF0YSBnZW5lcmF0aW9uIGZvciB0aGUgY2FsbCB0byBhY3Rpb24gY29tcG9uZW50LlxyXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG9mIENhbGxUb0FjdGlvbkluZm9ybWF0aW9uIHdoaWNoIHJlcHJlc2VudHMgdGhlIGRhdGEgdGhlIGNhbGwgdG8gYWN0aW9uIGZpZWxkIGNvbXBvbmVudCBjYW4gd29yayB3aXRoLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBnZXRDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbigpOiBMb2FkaW5nRGF0YTxDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbj4ge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENyZWF0ZXMgYSBQb3J0YWwgQ29tbWVudCBvbiBjbGljayBvZiB0aGUgY2FsbC10by1hY3Rpb24gYnV0dG9ucy5cclxuICAgICAgICAgKiBAcGFyYW0gY29tbWVudERlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiB3aGljaCB3aWxsIGdvIGludG8gdGhlIGNvbW1lbnQgdGhhdCBpcyBnZW5lcmF0ZWQuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gc2VuZFBvcnRhbENvbW1lbnQoY29tbWVudERlc2NyaXB0aW9uOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9ydGFsQ29tbWVudDogUG9ydGFsQ29tbWVudEZvckNyZWF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIF9yZWdhcmRpbmdvYmplY3RpZF92YWx1ZTogcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgICAgICAgICBhZHhfcG9ydGFsY29tbWVudGRpcmVjdGlvbmNvZGU6IERpcmVjdGlvbkNvZGVbXCJJbmNvbWluZ1wiXSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjb21tZW50RGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBhZHhfcG9ydGFsY29tbWVudF9hY3Rpdml0eV9wYXJ0aWVzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGF0aW9udHlwZW1hc2s6IFBhcnRpY2lwYXRpb25UeXBlTWFza1tcIlNlbmRlclwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnR5aWRfdmFsdWU6IHVzZXJNZXRhZGF0YSEuY29udGFjdElkISxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJFZGl0IENhc2UgLSBQb3J0YWwgQ29tbWVudCBzdWJtaXR0ZWRcIixcclxuICAgICAgICAgICAgICAgIGluY2lkZW50SWQ6IHByb3BzLmluaXRpYWxJbmNpZGVudC5pbmNpZGVudGlkLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRDb21tZW50ID0gYXdhaXQgZGF0YVNlcnZpY2Uuc2VuZFBvcnRhbENvbW1lbnQocG9ydGFsQ29tbWVudCwgXCJpbmNpZGVudFwiKTtcclxuXHJcbiAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJFZGl0IENhc2UgLSBQb3J0YWwgQ29tbWVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgaW5jaWRlbnRJZDogcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWQsXHJcbiAgICAgICAgICAgICAgICBhY3Rpdml0eUlkOiBjcmVhdGVkQ29tbWVudC5hY3Rpdml0eWlkLFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHNldFBvcnRhbENvbW1lbnRzKFsuLi5wb3J0YWxDb21tZW50cywgY3JlYXRlZENvbW1lbnRdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEFuIE9iamVjdCBjb250YWluaW5nIHRoZSAnUmVxdWVzdCBDbG9zdXJlJyBDYWxsIFRvIEFjdGlvbiBCdXR0b24gSW5mb3JtYXRpb24uXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdENsb3N1cmVCdXR0b246IEJ1dHRvbkluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICBsYWJlbDogXCJSZXF1ZXN0IENsb3N1cmVcIixcclxuICAgICAgICAgICAgaGFzTW9kYWw6IHRydWUsXHJcbiAgICAgICAgICAgIGFwcEluc2lnaHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uRXZlbnRUeXBlOiBcIkVkaXQgQ2FzZSAtIENhbGwtdG8tQWN0aW9uIHN1Ym1pdHRlZFwiLFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGVkU3VjY2Vzc2Z1bGx5RXZlbnRUeXBlOiBcIkVkaXQgQ2FzZSAtIENhbGwtdG8tQWN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbW9kYWxJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpc0Vycm9yTW9kYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJTdWJtaXRcIixcclxuICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudDogKFxyXG4gICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxNdWx0aUxpbmVTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0U3VibWlzc2lvblJlYXNvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdWJtaXNzaW9uUmVhc29ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIG1vZGFsVGl0bGU6IFwiUmVxdWVzdCBDbG9zdXJlXCIsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVxdWVzdCBjbG9zdXJlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENhc2UgPSBhd2FpdCBkYXRhU2VydmljZS5leGVjdXRlUmVxdWVzdENsb3N1cmVQb3J0YWxBY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5pbmNpZGVudGlkXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYEV4cGVjdGVkIGFjdGl2ZSBJbmNpZGVudHMgdG8gYmUgbG9hZGVkIGJ1dCB3YXMgJHtpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXN9YFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2VuZFBvcnRhbENvbW1lbnQoYENhc2UgY2xvc3VyZSByZXF1ZXN0ZWQ6ICR7c3VibWlzc2lvblJlYXNvbn1gKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldEFjdGl2ZUluY2lkZW50c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJbmNpZGVudHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5kYXRhLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluY2lkZW50KSA9PiBpbmNpZGVudC5pbmNpZGVudGlkICE9PSB1cGRhdGVkQ2FzZS5pbmNpZGVudGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIHN0YXR1c2NvZGUgdG8gdGhlIGV4cGVjdGVkIHN0YXR1cyB0byBjYXRlciBmb3IgUG9ydGFsIGNhY2hlIGRlbGF5c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4udXBkYXRlZENhc2UsIHN0YXR1c2NvZGU6IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJDYXNlIGNsb3N1cmUgcmVxdWVzdGVkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheWVkT25SZWxhdGl2ZVVybDogYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVVudGlsOiBEYXRlSGVscGVyLmFkZFNlY29uZHMobmV3IERhdGUoKSwgMTApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiBcInNtb290aFwiIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICAvLyAnUmVxdWVzdCBDbG9zdXJlJyBDYWxsLXRvLUFjdGlvbiBidXR0b25cclxuICAgICAgICBjb25zdCByZXF1ZXN0UmVvcGVuQnV0dG9uOiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgbGFiZWw6IFwiUmVxdWVzdCBSZW9wZW5cIixcclxuICAgICAgICAgICAgaGFzTW9kYWw6IHRydWUsXHJcbiAgICAgICAgICAgIGFwcEluc2lnaHRzOiB7XHJcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uRXZlbnRUeXBlOiBcIkVkaXQgQ2FzZSAtIENhbGwtdG8tQWN0aW9uIHN1Ym1pdHRlZFwiLFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGVkU3VjY2Vzc2Z1bGx5RXZlbnRUeXBlOiBcIkVkaXQgQ2FzZSAtIENhbGwtdG8tQWN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbW9kYWxJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBpc0Vycm9yTW9kYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbW9kYWxCdXR0b25MYWJlbDogXCJTdWJtaXRcIixcclxuICAgICAgICAgICAgICAgIG1vZGFsQ29udGVudDogKFxyXG4gICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxNdWx0aUxpbmVTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlJlYXNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17c2V0U3VibWlzc2lvblJlYXNvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzdWJtaXNzaW9uUmVhc29ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIG1vZGFsVGl0bGU6IFwiUmVxdWVzdCBDbG9zdXJlXCIsXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVxdWVzdCByZS1vcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZENhc2UgPSBhd2FpdCBkYXRhU2VydmljZS5leGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgRXhwZWN0ZWQgYWN0aXZlIEluY2lkZW50cyB0byBiZSBsb2FkZWQgYnV0IHdhcyAke2luY2lkZW50cy5hY3RpdmVJbmNpZGVudHMubG9hZGluZ1N0YXR1c31gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBzZW5kUG9ydGFsQ29tbWVudChgQ2FzZSByZW9wZW4gcmVxdWVzdGVkOiAke3N1Ym1pc3Npb25SZWFzb259YCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJTZXRBY3RpdmVJbmNpZGVudHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSW5jaWRlbnRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMuZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNpZGVudCkgPT4gaW5jaWRlbnQuaW5jaWRlbnRpZCAhPT0gdXBkYXRlZENhc2UuaW5jaWRlbnRpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3ZlcndyaXRlIHRoZSBzdGF0dXNjb2RlIHRvIHRoZSBleHBlY3RlZCBzdGF0dXMgdG8gY2F0ZXIgZm9yIFBvcnRhbCBjYWNoZSBkZWxheXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC4uLnVwZGF0ZWRDYXNlLCBzdGF0dXNjb2RlOiBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkFkZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQ2FzZSByZW9wZW5lZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZE9uUmVsYXRpdmVVcmw6IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gJ0NvbmZpcm0gQ2xvc3VyZScgQ2FsbC10by1BY3Rpb24gYnV0dG9uXHJcbiAgICAgICAgY29uc3QgY29uZmlybUNsb3N1cmVCdXR0b246IEJ1dHRvbkluZm9ybWF0aW9uID0ge1xyXG4gICAgICAgICAgICBsYWJlbDogXCJDb25maXJtIENsb3N1cmVcIixcclxuICAgICAgICAgICAgaGFzTW9kYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGNsb3N1cmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDYXNlID0gYXdhaXQgZGF0YVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3RDbG9zdXJlUG9ydGFsQWN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5pbmNpZGVudGlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBFeHBlY3RlZCBhY3RpdmUgSW5jaWRlbnRzIHRvIGJlIGxvYWRlZCBidXQgd2FzICR7aW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5sb2FkaW5nU3RhdHVzfWBcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGF3YWl0IHNlbmRQb3J0YWxDb21tZW50KFwiQ2FzZSBjbG9zZWQgYnkgY3VzdG9tZXJcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0ZVxyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0Q2xvc2VkSW5jaWRlbnRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VkSW5jaWRlbnRzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpbmNpZGVudHMuY2xvc2VkSW5jaWRlbnRzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGluY2lkZW50cy5jbG9zZWRJbmNpZGVudHMuZGF0YS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluY2lkZW50KSA9PiBpbmNpZGVudC5pbmNpZGVudGlkICE9PSB1cGRhdGVkQ2FzZS5pbmNpZGVudGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdmVyd3JpdGUgdGhlIHN0YXR1c2NvZGUgdG8gdGhlIGV4cGVjdGVkIHN0YXR1cyB0byBjYXRlciBmb3IgUG9ydGFsIGNhY2hlIGRlbGF5c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAuLi51cGRhdGVkQ2FzZSwgc3RhdHVzY29kZTogSW5jaWRlbnRTdGF0dXNDb2RlW1wiQ2xvc2VkXCJdIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldEFjdGl2ZUluY2lkZW50c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUluY2lkZW50czoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpbmNpZGVudHMuYWN0aXZlSW5jaWRlbnRzLmRhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluY2lkZW50KSA9PiBpbmNpZGVudC5pbmNpZGVudGlkICE9PSB1cGRhdGVkQ2FzZS5pbmNpZGVudGlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkFkZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkNhc2UgY2xvc2VkIHN1Y2Nlc3NmdWxseVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWRPblJlbGF0aXZlVXJsOiBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBzaG91bGRTaG93UmVxdWVzdENsb3N1cmVCdXR0b24gPVxyXG4gICAgICAgICAgICBwcm9wcy5pbml0aWFsSW5jaWRlbnQuc3RhdHVzY29kZSA9PT0gSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW4gfHxcclxuICAgICAgICAgICAgcHJvcHMuaW5pdGlhbEluY2lkZW50LnN0YXR1c2NvZGUgPT09IEluY2lkZW50U3RhdHVzQ29kZVtcIkluIFByb2dyZXNzXCJdIHx8XHJcbiAgICAgICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGVbXCJPbiBIb2xkXCJdIHx8XHJcbiAgICAgICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdO1xyXG5cclxuICAgICAgICBjb25zdCBzaG91bGRTaG93UmVxdWVzdFJlb3BlbkJ1dHRvbiA9IHByb3BzLmluaXRpYWxJbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGUuUmVzb2x2ZWQ7XHJcblxyXG4gICAgICAgIGNvbnN0IHNob3VsZFNob3dDb25maXJtQ2xvc3VyZUJ1dHRvbiA9IHByb3BzLmluaXRpYWxJbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGUuUmVzb2x2ZWQ7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBJbmNpZGVudFN0YXR1c0NvZGVbcHJvcHMuaW5pdGlhbEluY2lkZW50LnN0YXR1c2NvZGVdLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGdldENvcnJlY3RDYXNlRGVzY3JpcHRpb24ocHJvcHMuaW5pdGlhbEluY2lkZW50LnN0YXR1c2NvZGUpLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogZ2V0Q29ycmVjdENhc2VTdGF0dXNJY29uKHByb3BzLmluaXRpYWxJbmNpZGVudCEuc3RhdHVzY29kZSksXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKHNob3VsZFNob3dSZXF1ZXN0Q2xvc3VyZUJ1dHRvbiA/IFtyZXF1ZXN0Q2xvc3VyZUJ1dHRvbl0gOiBbXSksXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uKHNob3VsZFNob3dSZXF1ZXN0UmVvcGVuQnV0dG9uID8gW3JlcXVlc3RSZW9wZW5CdXR0b25dIDogW10pLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLihzaG91bGRTaG93Q29uZmlybUNsb3N1cmVCdXR0b24gPyBbY29uZmlybUNsb3N1cmVCdXR0b25dIDogW10pLFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBmdW5jdGlvbiB0byBjb3JyZWN0bHkgcmV0dXJuIHRoZSByaWdodCB0eXBlIG9mIGNhc2Ugc3RhdHVzIEljb25cclxuICAgICAqIEBwYXJhbSBjYXNlU3RhdHVzIHRoZSBTdGF0dXMgQ29kZSBvZiB0aGUgQ2FzZS5cclxuICAgICAqIEByZXR1cm5zIGEgc3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgdGhlIENhc2Ugc3RhdHVzIGljb24uXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGdldENvcnJlY3RDYXNlU3RhdHVzSWNvbihjYXNlU3RhdHVzOiBJbmNpZGVudFN0YXR1c0NvZGUpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAoY2FzZVN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZS5DYW5jZWxsZWQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1jYW5jZWxsZWQuc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZS5DbG9zZWQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1jbG9zZWQuc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3N1cmUgUmVxdWVzdGVkXCJdOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiY2FzZS1zdGF0dXMtY2xvc3VyZS1yZXF1ZXN0ZWQuc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZVtcIkluIFByb2dyZXNzXCJdOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiY2FzZS1zdGF0dXMtaW4tcHJvZ3Jlc3Muc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZS5NZXJnZWQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1tZXJnZWQuc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZVtcIk9uIEhvbGRcIl06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1vbi1ob2xkLnN2Z1wiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGUuT3BlbjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImNhc2Utc3RhdHVzLW9wZW4uc3ZnXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZVtcIlBlbmRpbmcgRmVlZGJhY2tcIl06XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1wZW5kaW5nLWN1c3RvbWVyLWZlZWRiYWNrLnN2Z1wiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGUuUmVzb2x2ZWQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJjYXNlLXN0YXR1cy1yZXNvbHZlZC5zdmdcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVjdCBDYXNlIGRlc2NyaXB0aW9uXHJcbiAgICAgKiBAcGFyYW0gY2FzZVN0YXR1cyB0aGUgU3RhdHVzIENvZGUgb2YgdGhlIENhc2UuXHJcbiAgICAgKiBAcmV0dXJucyBhIHN0cmluZyB3aGljaCByZXByZXNlbnRzIHRoZSBDYXNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBnZXRDb3JyZWN0Q2FzZURlc2NyaXB0aW9uKGNhc2VTdGF0dXM6IEluY2lkZW50U3RhdHVzQ29kZSk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoIChjYXNlU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGNhc2UgSW5jaWRlbnRTdGF0dXNDb2RlLkNhbmNlbGxlZDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkNhc2UgY2FuY2VsbGVkXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZS5DbG9zZWQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJTb2x1dGlvbiBpbXBsZW1lbnRlZFwiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGVbXCJDbG9zdXJlIFJlcXVlc3RlZFwiXTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIlZhbGlkYXRpbmcgY2xvc3VyZVwiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXTpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkltcGxlbWVudGluZyB0aGUgc29sdXRpb25cIjtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgSW5jaWRlbnRTdGF0dXNDb2RlLk1lcmdlZDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIk1lcmdlZCBpbnRvIGFub3RoZXIgY2FzZVwiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGVbXCJPbiBIb2xkXCJdOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiQ2FzZSBPbiBIb2xkIHVudGlsIGxhdGVyIGRhdGVcIjtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgSW5jaWRlbnRTdGF0dXNDb2RlLk9wZW46XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJUcmlhZ2luZyB0aGUgQ2FzZVwiO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBJbmNpZGVudFN0YXR1c0NvZGVbXCJQZW5kaW5nIEZlZWRiYWNrXCJdOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiUHJvdmlkZSBmdXJ0aGVyIGluZm9ybWF0aW9uXCI7XHJcblxyXG4gICAgICAgICAgICBjYXNlIEluY2lkZW50U3RhdHVzQ29kZS5SZXNvbHZlZDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkNvbmZpcm0gY2xvc3VyZSB0byBjbG9zZSB0aGUgQ2FzZVwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpc1JlYWRPbmx5ID1cclxuICAgICAgICBwcm9wcy5pbml0aWFsSW5jaWRlbnQuc3RhdHVzY29kZSA9PT0gSW5jaWRlbnRTdGF0dXNDb2RlW1wiQ2FuY2VsbGVkXCJdIHx8XHJcbiAgICAgICAgcHJvcHMuaW5pdGlhbEluY2lkZW50LnN0YXR1c2NvZGUgPT09IEluY2lkZW50U3RhdHVzQ29kZVtcIkNsb3NlZFwiXSB8fFxyXG4gICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGVbXCJNZXJnZWRcIl07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8Q2FsbFRvQWN0aW9uQmFzZVBhZ2VcclxuICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmluaXRpYWxJbmNpZGVudC50aXRsZX1cclxuICAgICAgICAgICAgdGFncz17W1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiY2FzZS1yZWZlcmVuY2VcIixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcHMuaW5pdGlhbEluY2lkZW50LnRpY2tldG51bWJlcixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJjYXNlLXR5cGVcIixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcHMuaW5pdGlhbEluY2lkZW50LmNhc2V0eXBlY29kZSA/IENhc2VUeXBlW3Byb3BzLmluaXRpYWxJbmNpZGVudC5jYXNldHlwZWNvZGVdIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgIGNhbGxUb0FjdGlvbkluZm9ybWF0aW9uPXtnZXRDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbigpfVxyXG4gICAgICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGU9e3NldFN1Ym1pc3Npb25TdGF0ZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmb3JtXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0LWNhc2VcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1zdWJtaXQtYXR0ZW1wdGVkPXtmb3JtU3VibWl0QXR0ZW1wdGVkfVxyXG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9uU3VibWl0KCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgb25JbnZhbGlkPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBpZiB0aGUgY29tcG9uZW50IGlzIGxvYWRlZCAoaS5lLiBpZ25vcmUgdGhlIHZhbGlkaXR5IGNoZWNrcyB3aGVuIHRoZSBmb3JtIGlzIGluaXRpYWxseSBsb2FkZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBhIGZsYWcgZGV0YWlsaW5nIHRoYXQgYSBmb3JtIHN1Ym1pc3Npb24gaGFzIGJlZW4gYXR0ZW1wdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvcm1TdWJtaXRBdHRlbXB0ZWQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdlbmVyYWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwiaGVhZGluZ1wiPkluZm9ybWF0aW9uPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMb29rdXBGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQcmltYXJ5IENvbnRhY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e2luY2lkZW50VG9VcGRhdGUuX3ByaW1hcnljb250YWN0aWRfdmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17PD5UaGUgbm9taW5hdGVkIENvbnRhY3QgdG8gcmVjZWl2ZSBDYXNlIHJlbGF0ZWQgY29ycmVzcG9uZGVuY2UuPC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbE9wdGlvbnNOYW1lPVwiQWN0aXZlIENvbnRhY3RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb250YWN0cy5kYXRhLm1hcCgoY29udGFjdCkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY29udGFjdC5jb250YWN0aWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVRleHQ6IFtjb250YWN0LmZpcnN0bmFtZSwgY29udGFjdC5sYXN0bmFtZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigocykgPT4gcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIgXCIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZGFyeVRleHQ6IGNvbnRhY3QuZW1haWxhZGRyZXNzMSA/PyBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGlja2FibGU6IGNvbnRhY3Quc3RhdGVjb2RlID09PSBDb250YWN0U3RhdGVDb2RlW1wiQWN0aXZlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb25JZD17KF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmNpZGVudCh7IC4uLmluY2lkZW50VG9VcGRhdGUsIF9wcmltYXJ5Y29udGFjdGlkX3ZhbHVlIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uQ2FyZEluZm89eyhzZWxlY3RlZE9wdGlvbikgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogPEZhVXNlciAvPixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeVRleHQ6IHNlbGVjdGVkT3B0aW9uLnByaW1hcnlUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBzZWxlY3RlZE9wdGlvbi5zZWNvbmRhcnlUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJKb2IgVGl0bGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZWN0ZWRPcHRpb24uY29udGFjdC5qb2J0aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUZWxlcGhvbmVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VsZWN0ZWRPcHRpb24uY29udGFjdC50ZWxlcGhvbmUxIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTW9iaWxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uLmNvbnRhY3QubW9iaWxlcGhvbmUgfHwgXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJQZXJtaXNzaW9uIExldmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEJhc2VQZXJtaXNzaW9uTGV2ZWxbc2VsZWN0ZWRPcHRpb24uY29udGFjdC5iaXN0ZWNoX3Blcm1pc3Npb25sZXZlbCFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyBwbGFjZWhvbGRlcjogXCJTZWxlY3QgYSBDb250YWN0XCIsIGRpc2FibGVkOiBpc1JlYWRPbmx5IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiWW91ciBSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXs8PllvdXIgQ2FzZSBSZWZlcmVuY2UgKGlmIG5lZWRlZCkgZm9yIG91ciByZWNvcmRzLjwvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17aW5jaWRlbnRUb1VwZGF0ZS5iaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJbmNpZGVudCh7IC4uLmluY2lkZW50VG9VcGRhdGUsIGJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2UgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcmVxdWlyZWQ6IGZhbHNlLCBkaXNhYmxlZDogaXNSZWFkT25seSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlByaW9yaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicHJpb3JpdHljb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmluaXRpYWxJbmNpZGVudC5wcmlvcml0eWNvZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQ2FzZVByaW9yaXR5Q29kZVtwcm9wcy5pbml0aWFsSW5jaWRlbnQucHJpb3JpdHljb2RlXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyByZXF1aXJlZDogZmFsc2UsIGRpc2FibGVkOiB0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNdWx0aUxpbmVTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD17PD5QbGVhc2UgcHJvdmlkZSBhIGNsZWFyIGV4cGxhbmF0aW9uIG9mIHRoZSBpc3N1ZSAvIHJlcXVpcmVtZW50LjwvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMuaW5pdGlhbEluY2lkZW50LmRlc2NyaXB0aW9uIHx8IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0QXJlYVByb3BzPXt7IG1heExlbmd0aDogMjAwMCwgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGltZWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbnRpdHk9e3Byb3BzLmluaXRpYWxJbmNpZGVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldE51bWJlcj17cHJvcHMuaW5pdGlhbEluY2lkZW50LnRpY2tldG51bWJlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbW1lbnRzPXtwb3J0YWxDb21tZW50c31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEVtYWlscz17cHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50X2Jpc3RlY2hfcG9ydGFsZW1haWxzID8/IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3JJbmNpZGVudFVwZGF0ZXM9e3Byb3BzLmluaXRpYWxJbmNpZGVudC5pbmNpZGVudF9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzID8/IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UG9ydGFsQ29tbWVudHM9e3NldFBvcnRhbENvbW1lbnRzfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzUmVhZE9ubHl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlJZD17cHJvcHMuaW5pdGlhbEluY2lkZW50LmluY2lkZW50aWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHtzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwiZXJyb3JlZFwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RmFpbGVkIHRvIHVwZGF0ZSBDYXNlPC9zdHJvbmc+OiB7c3VibWlzc2lvblN0YXRlLmVycm9yLm1lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3NOYW1lPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshaXNEaXJ0eSB8fCBzdWJtaXNzaW9uU3RhdGUuc3RhdGUgPT09IFwic3VibWl0dGluZ1wiIHx8IGlzUmVhZE9ubHl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzRGlydHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIk5vIGNoYW5nZXMgdG8gc2F2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNSZWFkT25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBDYXNlIGlzIHJlYWQtb25seSBhcyBpdCBpcyAke1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXR1c0NvZGVbcHJvcHMuaW5pdGlhbEluY2lkZW50LnN0YXR1c2NvZGVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZS5zdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCIgJiYgPEltU3Bpbm5lcjIgY2xhc3NOYW1lPVwic3BpblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2F2ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPExpbmsgY2xhc3NOYW1lPVwiYnV0dG9uIGRlZmF1bHRcIiB0bz17UEFHRVMuQ2FzZXMucGF0aH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvQ2FsbFRvQWN0aW9uQmFzZVBhZ2U+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lciB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0xvYWRpbmdTcGlubmVyXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uLy4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdXNlVXNlck1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBDYXNlc0VkaXRDb250ZW50IH0gZnJvbSBcIi4vQ2FzZXNFZGl0Q29udGVudFwiO1xyXG5pbXBvcnQgeyBJbmNpZGVudEZvclJldHJpZXZhbCB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvSW5jaWRlbnRGb3JSZXRyaWV2YWxcIjtcclxuXHJcbi8qKiBXcmFwcGVyIGZvciB0aGUgRWRpdCBDYXNlIHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IENhc2VzRWRpdEZyb21JZCA9IChwcm9wczogeyBpbmNpZGVudGlkOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgdXNlck1ldGFkYXRhID0gdXNlVXNlck1ldGFkYXRhKCk7XHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBhY3RpdmVJbmNpZGVudHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMpO1xyXG4gICAgY29uc3QgY2xvc2VkSW5jaWRlbnRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pbmNpZGVudHMuY2xvc2VkSW5jaWRlbnRzKTtcclxuICAgIGNvbnN0IFtzYXZlS2V5LCBzZXRTYXZlS2V5XSA9IHVzZVN0YXRlKDEpO1xyXG4gICAgY29uc3QgW3JldHJpZXZlZEluY2lkZW50LCBzZXRSZXRyaWV2ZWRJbmNpZGVudF0gPSB1c2VTdGF0ZTxcclxuICAgICAgICBMb2FkaW5nRGF0YTxJbmNpZGVudEZvclJldHJpZXZhbD4gfCB7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiOyBlcnJvcjogRXJyb3IgfVxyXG4gICAgPih7XHJcbiAgICAgICAgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRSZXRyaWV2ZWRJbmNpZGVudCh7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9KTtcclxuICAgIH0sIFthY3RpdmVJbmNpZGVudHMsIGNsb3NlZEluY2lkZW50cywgc2F2ZUtleV0pO1xyXG5cclxuICAgIGNvbnN0IGluaXRpYWxJbmNpZGVudDogTG9hZGluZ0RhdGE8SW5jaWRlbnRGb3JSZXRyaWV2YWw+ID0gdXNlTWVtbygoKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgdGhlIHJldHJpZXZhbCBoYXMgbm90IHlldCBiZWVuIHN0YXJ0ZWQsIGFuZCB0aGUgQ29udGFjdCBpcyBhdXRoZW50aWNhdGVkXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZEluY2lkZW50LmxvYWRpbmdTdGF0dXMgPT09IFwibm90LXN0YXJ0ZWRcIiAmJiB1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgICAgIHNldFJldHJpZXZlZEluY2lkZW50KHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgQ2FzZSBzcGVjaWZpY2FsbHkgKGUuZy4gdGhlIENhc2UgaGF2ZSBiZWVuIHJlY2VudGx5IHVwZGF0ZWQpXHJcbiAgICAgICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAucmV0cmlldmVJbmNpZGVudChwcm9wcy5pbmNpZGVudGlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKGluY2lkZW50KSA9PiBzZXRSZXRyaWV2ZWRJbmNpZGVudCh7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IGluY2lkZW50IH0pKVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJBZGRMYXRlc3RFcnJvclwiLCBlcnJvciB9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRSZXRyaWV2ZWRJbmNpZGVudCh7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiLCBlcnJvciB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZEluY2lkZW50LmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogcmV0cmlldmVkSW5jaWRlbnQuZGF0YSB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFjdGl2ZUluY2lkZW50cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9O1xyXG4gICAgfSwgW1xyXG4gICAgICAgIGFjdGl2ZUluY2lkZW50cyxcclxuICAgICAgICBjbG9zZWRJbmNpZGVudHMsXHJcbiAgICAgICAgcmV0cmlldmVkSW5jaWRlbnQsXHJcbiAgICAgICAgZGF0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJvcHMuaW5jaWRlbnRpZCxcclxuICAgICAgICB1c2VyTWV0YWRhdGEuY29udGFjdElkLFxyXG4gICAgICAgIGRpc3BhdGNoLFxyXG4gICAgXSk7XHJcblxyXG4gICAgaWYgKHJldHJpZXZlZEluY2lkZW50LmxvYWRpbmdTdGF0dXMgPT09IFwiZXJyb3JlZFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIDxOb3RGb3VuZCB0eXBlPVwicmVjb3JkLW5vdC1mb3VuZFwiIHNpbmd1bGFyRW50aXR5TmFtZT1cIkNhc2VcIiAvPjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5pdGlhbEluY2lkZW50LmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9XCJcIj5cclxuICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxyXG4gICAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxDYXNlc0VkaXRDb250ZW50IGluaXRpYWxJbmNpZGVudD17aW5pdGlhbEluY2lkZW50LmRhdGF9IG9uU2F2ZT17KCkgPT4gc2V0U2F2ZUtleShzYXZlS2V5ICsgMSl9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBDYXNlc0VkaXRGcm9tSWQgfSBmcm9tIFwiLi9DYXNlc0VkaXRGcm9tSWRcIjtcclxuXHJcbi8qKiBXcmFwcGVyIGZvciB0aGUgRWRpdCBDYXNlIHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IENhc2VzRWRpdCA9ICgpID0+IHtcclxuICAgIGNvbnN0IFtzZWFyY2hQYXJhbXNdID0gdXNlU2VhcmNoUGFyYW1zKCk7XHJcblxyXG4gICAgY29uc3QgSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FID0gXCJjYXNlSWRcIjtcclxuICAgIGNvbnN0IGNhc2VJZCA9IHNlYXJjaFBhcmFtcy5nZXQoSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FKTtcclxuXHJcbiAgICBpZiAoIWNhc2VJZCkge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgc2luZ3VsYXJFbnRpdHlOYW1lPVwiQ2FzZVwiIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxDYXNlc0VkaXRGcm9tSWQgaW5jaWRlbnRpZD17Y2FzZUlkfSAvPjtcclxufTsiLCJpbXBvcnQgeyBPcmRlclRhYmxlSGVhZGVyQ2VsbCB9IGZyb20gXCIuLi9UeXBlcy9UYWJsZUhlYWRlckNlbGxzL09yZGVyVGFibGVIZWFkZXJDZWxsXCI7XHJcblxyXG4vKiogRGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGhlYWRlciBjZWxscyB0byBkaXNwbGF5IGluIHRoZSBPcmRlcnMgVGFibGUuICovXHJcbmV4cG9ydCBjb25zdCBnZXRPcmRlclRhYmxlSGVhZGVyQ2VsbHMgPSAoKTogT3JkZXJUYWJsZUhlYWRlckNlbGxbXSA9PiB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJPcmRlciBJRFwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwib3JkZXJudW1iZXJcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJEYXRlIFNpZ25lZFwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwiYmlzdGVjaF9vcmRlcmZvcm1cIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDdXN0b21lciBSZWZlcmVuY2VcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2VcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDMsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJDb250YWN0XCIsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJfYmlzdGVjaF9jb250YWN0X3ZhbHVlXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiA0LFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiU3RhdHVzXCIsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJzdGF0dXNjb2RlXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgIF07XHJcbn07XHJcbiIsImltcG9ydCB7IE9yZGVyU3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyU3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IE9yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9PcmRlclN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IEZpbHRlcmVkT3JkZXJzIH0gZnJvbSBcIi4uL1R5cGVzL0ZpbHRlck1vZGVscy9GaWx0ZXJlZE9yZGVyc1wiO1xyXG5pbXBvcnQgeyBGaWx0ZXJHcm91cCB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJHcm91cFwiO1xyXG5cclxuLyoqIERlc2NyaXB0aW9uIG9mIHRoZSBPcmRlcnMgZmlsdGVyIGdyb3VwcyB0byBkaXNwbGF5IG9uIHRoZSBPcmRlciBNYW5hZ2VtZW50IFBhbmVsLiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJzRmlsdGVyR3JvdXAgPSAoXHJcbiAgICBmaWx0ZXJlZE9yZGVyczogRmlsdGVyZWRPcmRlcnMsXHJcbiAgICBzZWxlY3RlZFN0YXR1c1RpbGVJZHM6IHN0cmluZ1tdLFxyXG4gICAgc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzOiAodGlsZUlkczogc3RyaW5nW10pID0+IHZvaWRcclxuKTogRmlsdGVyR3JvdXA8T3JkZXI+W10gPT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxhYmVsRWxlbWVudDogPD5TdGF0dXM8Lz4sXHJcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogXCJTdGF0dXNcIixcclxuICAgICAgICAgICAgdG9vbHRpcEVsZW1lbnQ6IChcclxuICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+UGVuZGluZyBTaWduYXR1cmU8L3N0cm9uZz4gLSBPcmRlcnMgd2hpY2ggbmVlZCB0byBiZSBzaWduZWQgYnkgeW91LlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5Qcm9jZXNzaW5nPC9zdHJvbmc+IC0gT3JkZXJzIGJlaW5nIHByb2Nlc3NlZCBieSBvdXIgVGVhbSwgcGVuZGluZyBmdWxmaWxtZW50LlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5JbiBQcm9ncmVzczwvc3Ryb25nPiAtIE9yZGVycyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBmdWxmaWxsZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkZ1bGZpbGxlZDwvc3Ryb25nPiAtIE9yZGVycyB3aGljaCBhcmUgY29uc2lkZXJlZCBmdWxmaWxsZWQgYnkgQmlzdGVjaC5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGlsZXM6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJwcm9jZXNzaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAob3JkZXIpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyU3RhdHVzQ29kZS5TaWduZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlclN0YXR1c0NvZGVbXCJPbiBIb2xkXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJTdGF0dXNDb2RlLlByb2Nlc3NpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlclN0YXR1c0NvZGVbXCJQcm9jZXNzaW5nIENvbXBsZXRlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJTdGF0dXNDb2RlW1wiUGVuZGluZyBDb250cmFjdCBSZXZpZXdcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMob3JkZXIuc3RhdHVzY29kZSksXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IDw+UHJvY2Vzc2luZzwvPixcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG9Mb2FkaW5nRGF0YShmaWx0ZXJlZE9yZGVycy5wcm9jZXNzaW5nLCAob3JkZXJzKSA9PiBvcmRlcnMubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZVBhdGg6IFwiL29yZGVyLW1hbmFnZW1lbnQtc3RhdHVzLXByb2Nlc3Npbmcuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U6IFwiT3JkZXJzIGJlaW5nIHByb2Nlc3NlZCBieSBvdXIgVGVhbSwgcGVuZGluZyBmdWxmaWxtZW50LlwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJpbi1wcm9ncmVzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkVGlsZUlkczogc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkVGlsZUlkczogc2VsZWN0ZWRTdGF0dXNUaWxlSWRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogKG9yZGVyKSA9PiBbT3JkZXJTdGF0dXNDb2RlW1wiSW4gUHJvZ3Jlc3NcIl1dLmluY2x1ZGVzKG9yZGVyLnN0YXR1c2NvZGUpLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiA8PkluIFByb2dyZXNzPC8+LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b0xvYWRpbmdEYXRhKGZpbHRlcmVkT3JkZXJzLmluUHJvZ3Jlc3MsIChvcmRlcnMpID0+IG9yZGVycy5sZW5ndGgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlUGF0aDogXCIvb3JkZXItbWFuYWdlbWVudC1zdGF0dXMtaW4tcHJvZ3Jlc3Muc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U6IFwiT3JkZXJzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGZ1bGZpbGxlZC5cIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiZnVsZmlsbGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRUaWxlSWRzOiBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlSWRzOiBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiAob3JkZXIpID0+IFtPcmRlclN0YXRlQ29kZS5GdWxmaWxsZWRdLmluY2x1ZGVzKG9yZGVyLnN0YXRlY29kZSksXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IDw+RnVsZmlsbGVkPC8+LFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b0xvYWRpbmdEYXRhKGZpbHRlcmVkT3JkZXJzLmZ1bGZpbGxlZCwgKG9yZGVycykgPT4gb3JkZXJzLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VQYXRoOiBcIi9vcmRlci1tYW5hZ2VtZW50LXN0YXR1cy1mdWxmaWxsZWQuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb25Ib3Zlck1lc3NhZ2U6IFwiT3JkZXJzIHdoaWNoIGFyZSBjb25zaWRlcmVkIGZ1bGZpbGxlZCBieSBCaXN0ZWNoLlwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgXTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgdXNlVXNlck1ldGFkYXRhIH0gZnJvbSBcIi4uL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBnZXRPcmRlclRhYmxlSGVhZGVyQ2VsbHMgfSBmcm9tIFwiLi4vRGF0YS9nZXRPcmRlclRhYmxlSGVhZGVyQ2VsbHNcIjtcclxuaW1wb3J0IHsgVGFibGVIZWFkZXJDZWxsIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvVGFibGVIZWFkZXJDZWxsXCI7XHJcbmltcG9ydCB7IE9yZGVyIH0gZnJvbSBcIi4uL01vZGVscy9PcmRlclwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBNYW5hZ2VtZW50UGFuZWwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9NYW5hZ2VtZW50UGFuZWxcIjtcclxuaW1wb3J0IHsgRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vVHlwZXMvRmlsdGVyR3JvdXBcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0T3JkZXJzRmlsdGVyR3JvdXAgfSBmcm9tIFwiLi4vRGF0YS9nZXRPcmRlcnNGaWx0ZXJHcm91cFwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZE9yZGVycyB9IGZyb20gXCIuLi9UeXBlcy9GaWx0ZXJNb2RlbHMvRmlsdGVyZWRPcmRlcnNcIjtcclxuaW1wb3J0IHsgT3JkZXJTdGF0dXNDb2RlIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyU3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IE9yZGVyU3RhdGVDb2RlIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyU3RhdGVDb2RlXCI7XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgT3JkZXJzIFBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IE9yZGVyczogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IG9yZGVycyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUub3JkZXJzKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBbc29ydGVkQ29sdW1uLCBzZXRTb3J0ZWRDb2x1bW5dID0gdXNlU3RhdGU8a2V5b2YgT3JkZXI+KFwiYmlzdGVjaF9vcmRlcmZvcm1cIik7XHJcbiAgICBjb25zdCBbaXNTb3J0ZWRBc2NlbmRpbmcsIHNldElzU29ydGVkQXNjZW5kaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIGNvbnN0IFtzZWFyY2hCYXJDb250ZW50LCBzZXRTZWFyY2hCYXJDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWRTdGF0dXNUaWxlSWRzLCBzZXRTZWxlY3RlZFN0YXR1c1RpbGVJZHNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcclxuXHJcbiAgICAvLyBFbnN1cmUgdGhlIFVzZXIgTWV0YWRhdGEgaXMgcG9wdWxhdGVkLlxyXG4gICAgaWYgKCF1c2VyTWV0YWRhdGEuYWNjb3VudElkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBcXGB1c2VyTWV0YWRhdGEuYWNjb3VudElkXFxgIHRvIGJlIHBvcHVsYXRlZGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCB0aGUgT3JkZXIgVGFibGUgSGVhZGVyIENlbGxzLlxyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBnZXRPcmRlclRhYmxlSGVhZGVyQ2VsbHMoKTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGFwcGxpY2FibGUgY29sdW1uIGhlYWRlciBmb3IgdGhlIGdpdmVuIGZpZWxkIG5hbWUuXHJcbiAgICBjb25zdCBnZXRDb2x1bW5IZWFkZXIgPSAoZmllbGROYW1lOiBrZXlvZiBPcmRlcikgPT5cclxuICAgICAgICBoZWFkZXJDZWxscy5maW5kKChoZWFkZXJDZWxsKSA9PiBoZWFkZXJDZWxsLmZpZWxkTmFtZSA9PT0gZmllbGROYW1lKT8uY29sdW1uSGVhZGVyO1xyXG5cclxuICAgIC8vIENvbnZlcnRzIHRoZSBzb3J0ZWQgT3JkZXJzIGludG8gYSBMb2FkaW5nRGF0YTxPcmRlcltdPiBvYmplY3QuXHJcbiAgICBjb25zdCBhc1NvcnRlZExvYWRpbmdEYXRhID0gKHNvcnRlZERhdGE6IE9yZGVyW10pOiBMb2FkaW5nRGF0YTxPcmRlcltdPiA9PiB7XHJcbiAgICAgICAgaWYgKGlzU29ydGVkQXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IHNvcnRlZERhdGEgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IHNvcnRlZERhdGEucmV2ZXJzZSgpIH07XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFNvcnQgdGhlIE9yZGVycyBieSB0aGUgYXBwbGljYWJsZSBjb2x1bW4gd2hlbiB0aGUgZGF0YSBjaGFuZ2VzLCBpdCBpcyBzZWxlY3RlZCBvciB0aGUgc29ydCBvcmRlciBjaGFuZ2VzLlxyXG4gICAgY29uc3Qgc29ydGVkT3JkZXJzOiBMb2FkaW5nRGF0YTxPcmRlcltdPiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChvcmRlcnMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBvcmRlcnMubG9hZGluZ1N0YXR1cyB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc2xpY2VkT3JkZXJEYXRhID0gb3JkZXJzLmRhdGEuc2xpY2UoKTtcclxuICAgICAgICBzd2l0Y2ggKHNvcnRlZENvbHVtbikge1xyXG4gICAgICAgICAgICBjYXNlIFwiX2Jpc3RlY2hfY29udGFjdF92YWx1ZVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzU29ydGVkTG9hZGluZ0RhdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgc2xpY2VkT3JkZXJEYXRhLnNvcnQoKG9yZGVyQSwgb3JkZXJCKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFjdEEgPSBjb250YWN0cy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGFjdCkgPT4gY29udGFjdC5jb250YWN0aWQgPT09IG9yZGVyQS5fYmlzdGVjaF9jb250YWN0X3ZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RCID0gY29udGFjdHMuZGF0YS5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhY3QpID0+IGNvbnRhY3QuY29udGFjdGlkID09PSBvcmRlckIuX2Jpc3RlY2hfY29udGFjdF92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2NvbnRhY3RBPy5maXJzdG5hbWV9ICR7Y29udGFjdEE/Lmxhc3RuYW1lfWAubG9jYWxlQ29tcGFyZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtjb250YWN0Qj8uZmlyc3RuYW1lfSAke2NvbnRhY3RCPy5sYXN0bmFtZX1gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApID8/IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJiaXN0ZWNoX29yZGVyZm9ybVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFzU29ydGVkTG9hZGluZ0RhdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgc2xpY2VkT3JkZXJEYXRhLnNvcnQoKG9yZGVyQSwgb3JkZXJCKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAob3JkZXJBLmJpc3RlY2hfb3JkZXJmb3JtPy5iaXN0ZWNoX2RhdGVzaWduZWQgfHwgXCJaXCIpLmxvY2FsZUNvbXBhcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlckIuYmlzdGVjaF9vcmRlcmZvcm0/LmJpc3RlY2hfZGF0ZXNpZ25lZCB8fCBcIlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBhc1NvcnRlZExvYWRpbmdEYXRhKFxyXG4gICAgICAgICAgICAgICAgICAgIHNsaWNlZE9yZGVyRGF0YS5zb3J0KChvcmRlckEsIG9yZGVyQikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9yZGVyQVtzb3J0ZWRDb2x1bW5dPy50b1N0cmluZygpID8/IFwiXCIpLmxvY2FsZUNvbXBhcmUob3JkZXJCW3NvcnRlZENvbHVtbl0/LnRvU3RyaW5nKCkgPz8gXCJcIilcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtvcmRlcnMsIHNvcnRlZENvbHVtbiwgaXNTb3J0ZWRBc2NlbmRpbmddKTtcclxuXHJcbiAgICAvLyBGaWx0ZXIgdGhlIE9yZGVycyBpbnRvIHRoZSBhcHBsaWNhYmxlIFN0YXR1cyBncm91cHMuXHJcbiAgICBjb25zdCBmaWx0ZXJlZE9yZGVyczogRmlsdGVyZWRPcmRlcnMgPSB7XHJcbiAgICAgICAgcHJvY2Vzc2luZzogdG9Mb2FkaW5nRGF0YShzb3J0ZWRPcmRlcnMsIChvcmRlcnMpID0+XHJcbiAgICAgICAgICAgIG9yZGVycy5maWx0ZXIoKG9yZGVyKSA9PlxyXG4gICAgICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyU3RhdHVzQ29kZS5TaWduZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgT3JkZXJTdGF0dXNDb2RlW1wiT24gSG9sZFwiXSxcclxuICAgICAgICAgICAgICAgICAgICBPcmRlclN0YXR1c0NvZGUuUHJvY2Vzc2luZyxcclxuICAgICAgICAgICAgICAgICAgICBPcmRlclN0YXR1c0NvZGVbXCJQcm9jZXNzaW5nIENvbXBsZXRlXCJdLFxyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyU3RhdHVzQ29kZVtcIlBlbmRpbmcgQ29udHJhY3QgUmV2aWV3XCJdLFxyXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhvcmRlci5zdGF0dXNjb2RlKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpblByb2dyZXNzOiB0b0xvYWRpbmdEYXRhKHNvcnRlZE9yZGVycywgKG9yZGVycykgPT5cclxuICAgICAgICAgICAgb3JkZXJzLmZpbHRlcigob3JkZXIpID0+IFtPcmRlclN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXV0uaW5jbHVkZXMob3JkZXIuc3RhdHVzY29kZSkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBmdWxmaWxsZWQ6IHRvTG9hZGluZ0RhdGEoc29ydGVkT3JkZXJzLCAob3JkZXJzKSA9PlxyXG4gICAgICAgICAgICBvcmRlcnMuZmlsdGVyKChvcmRlcikgPT4gW09yZGVyU3RhdGVDb2RlLkZ1bGZpbGxlZF0uaW5jbHVkZXMob3JkZXIuc3RhdGVjb2RlKSlcclxuICAgICAgICApLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBNYXAgdGhlIGZpbHRlcmVkIE9yZGVycyBpbnRvIGZpbHRlciBncm91cCB0aWxlcy5cclxuICAgIGNvbnN0IG9yZGVyc0ZpbHRlckdyb3VwczogRmlsdGVyR3JvdXA8T3JkZXI+W10gPSBnZXRPcmRlcnNGaWx0ZXJHcm91cChcclxuICAgICAgICBmaWx0ZXJlZE9yZGVycyxcclxuICAgICAgICBzZWxlY3RlZFN0YXR1c1RpbGVJZHMsXHJcbiAgICAgICAgc2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzXHJcbiAgICApO1xyXG5cclxuICAgIC8vIERldGVybWluZSB0aGUgYXBwbGljYWJsZSBTdGF0dXMgZmlsdGVycy5cclxuICAgIGNvbnN0IGFwcGxpY2FibGVTdGF0dXNGaWx0ZXJzID0gb3JkZXJzRmlsdGVyR3JvdXBzLmZsYXRNYXAoKGZpbHRlckdyb3VwKSA9PlxyXG4gICAgICAgIGZpbHRlckdyb3VwLnRpbGVzXHJcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBzZWxlY3RlZCB0aWxlcyBpbiB0aGUgZ3JvdXAgdGhlbiBubyBmaWx0ZXJzIGFyZSBhcHBsaWVkLlxyXG4gICAgICAgICAgICAuZmlsdGVyKCh0aWxlKSA9PiAoc2VsZWN0ZWRTdGF0dXNUaWxlSWRzLmxlbmd0aCA+IDAgPyBzZWxlY3RlZFN0YXR1c1RpbGVJZHMuaW5jbHVkZXModGlsZS5pZCkgOiB0cnVlKSlcclxuICAgICAgICAgICAgLmZsYXRNYXAoKHRpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aWxlLmZpbHRlcjtcclxuICAgICAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgLy8gRmlsdGVyIHRoZSBPcmRlcnMgYnkgdGhlIFNlYXJjaCBCYXIgY29udGVudCBhbmQgdGhlIGFwcGxpY2FibGUgU3RhdHVzIGZpbHRlcnMuXHJcbiAgICBjb25zdCBvcmRlcnNUb0Rpc3BsYXkgPSB0b0xvYWRpbmdEYXRhKHNvcnRlZE9yZGVycywgKG9yZGVycykgPT5cclxuICAgICAgICBvcmRlcnNcclxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIFNlYXJjaCBCYXIgZmlsdGVyLlxyXG4gICAgICAgICAgICAuZmlsdGVyKChvcmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9yZGVyKS5zb21lKChbXywgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHZhbHVlPy50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFZhbHVlPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoQmFyQ29udGVudC50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgLy8gQXBwbHkgdGhlIFN0YXR1cyBUaWxlIGZpbHRlcnMuXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKG9yZGVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwbGljYWJsZVN0YXR1c0ZpbHRlcnMuc29tZSgoZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcihvcmRlcik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgc3RhdHVzVGlsZXMgPSBvcmRlcnNGaWx0ZXJHcm91cHMuZmluZCgoZmlsdGVyR3JvdXApID0+IGZpbHRlckdyb3VwLmF0dHJpYnV0ZSA9PT0gXCJTdGF0dXNcIik/LnRpbGVzO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJhc2VQYWdlIHRpdGxlPVwiT3JkZXJzXCI+XHJcbiAgICAgICAgICAgIDxNYW5hZ2VtZW50UGFuZWxcclxuICAgICAgICAgICAgICAgIHNldFNlYXJjaEJhckNvbnRlbnQ9e3NldFNlYXJjaEJhckNvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cHM9e29yZGVyc0ZpbHRlckdyb3Vwc31cclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dD1cIlNlYXJjaCBieSBPcmRlciBSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgZ2V0U3VtbWFyeVNlY3Rpb25zPXsoKSA9PiBbXX1cclxuICAgICAgICAgICAgICAgIGZpbHRlcnNUb0Rpc3BsYXk9e1tdfVxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAge29yZGVyc1RvRGlzcGxheS5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgICkgOiBvcmRlcnNUb0Rpc3BsYXkuZGF0YS5sZW5ndGggPT09IDAgPyAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5vLXJlc3VsdHMtbWVzc2FnZVwiPlRoZXJlIGFyZSBubyByZWNvcmRzIHRvIGRpc3BsYXkuPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwiZW50aXR5bGlzdCBvcmRlcnMtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJDZWxscy5tYXAoKGNlbGwpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGVIZWFkZXJDZWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17Y2VsbC5pZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uSGVhZGVyPXtjZWxsLmNvbHVtbkhlYWRlcn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lPXtjZWxsLmZpZWxkTmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGluZ1Byb3BzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0aW5nRW5hYmxlZDogY2VsbC5pc1NvcnRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkQ29sdW1uOiBzb3J0ZWRDb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTb3J0ZWRDb2x1bW46ICgpID0+IHNldFNvcnRlZENvbHVtbihjZWxsLmZpZWxkTmFtZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZEFzY2VuZGluZzogaXNTb3J0ZWRBc2NlbmRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc1NvcnRlZEFzY2VuZGluZzogc2V0SXNTb3J0ZWRBc2NlbmRpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7b3JkZXJzVG9EaXNwbGF5LmRhdGEubWFwKChvcmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcHJlZmVyIHRvIHNob3cgYSBjdXN0b20gbGFiZWwgZm9yIHRoZSBTdGF0dXMgY29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyBCaXN0ZWNoJ3MgaW50ZXJuYWwgc3RhdHVzZXMgYXJlIG5vdCB0b28gYXBwbGljYWJsZSwgc29cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgbGFiZWwgb2YgdGhlICdTdGF0dXMnIEZpbHRlciBHcm91cCBpbnN0ZWFkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzTGFiZWwgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RpbGVzPy5maW5kKCh0aWxlKSA9PiB0aWxlLmZpbHRlcihvcmRlcikpPy5sYWJlbCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyU3RhdHVzQ29kZVtvcmRlci5zdGF0dXNjb2RlXTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBrZXk9e29yZGVyLnNhbGVzb3JkZXJpZH0gZGF0YS1pZD17b3JkZXIuc2FsZXNvcmRlcmlkfSBkYXRhLWVudGl0eT1cInNhbGVzb3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlci1pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17b3JkZXIuc2FsZXNvcmRlcmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJzYWxlc29yZGVyaWRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rIGtleT17b3JkZXIuc2FsZXNvcmRlcmlkfSB0bz17YGVkaXQ/b3JkZXJJZD0ke29yZGVyLnNhbGVzb3JkZXJpZH1gfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3JkZXIub3JkZXJudW1iZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbms+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib3JkZXItc2lnbmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiYmlzdGVjaF9vcmRlcmZvcm1cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtvcmRlci5iaXN0ZWNoX29yZGVyZm9ybT8uYmlzdGVjaF9kYXRlc2lnbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBEYXRlSGVscGVyLnRvRGF0ZU9ubHlTdHJpbmcob3JkZXIuYmlzdGVjaF9vcmRlcmZvcm0uYmlzdGVjaF9kYXRlc2lnbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlci1jdXN0b21lci1yZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJiaXN0ZWNoX2N1c3RvbWVycmVmZXJlbmNlXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3JkZXIuYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlci1jb250YWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiX2Jpc3RlY2hfY29udGFjdF92YWx1ZVwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFjdCA9IGNvbnRhY3RzLmRhdGEuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhY3Q6IENvbnRhY3RGb3JSZXRyaWV2YWwpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0LmNvbnRhY3RpZCA9PT0gb3JkZXIuX2Jpc3RlY2hfY29udGFjdF92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29udGFjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbY29udGFjdC5maXJzdG5hbWUsIGNvbnRhY3QubGFzdG5hbWVdLmZpbHRlcigocykgPT4gcykuam9pbihcIiBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwib3JkZXItc3RhdHVzXCIgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJzdGF0dXNjb2RlXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzdGF0dXNMYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcbiIsIi8qKiBBIGNsYXNzIG9mIGhlbHBlciBtZXRob2RzIGZvciBmb3JtYXR0aW5nIGRhdGEgKi9cclxuZXhwb3J0IGNsYXNzIEZvcm1hdHRpbmdIZWxwZXIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtYXRzIGEgbnVtYmVyIGFzIGEgR0JQIG1vbmV5IHN0cmluZy5cclxuICAgICAqIEBwYXJhbSBtb25leSBUaGUgbnVtZXJpYyBtb25ldGFyeSB2YWx1ZSBpbiBHQlAuXHJcbiAgICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgR0JQIG1vbmV5IHN0cmluZy5cclxuICAgICAqIEBleGFtcGxlIFwiNDUuNlwiIC0+IFwiwqM0NS42MFwiXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgdG9Nb25leVN0cmluZyhtb25leTogbnVtYmVyIHwgbnVsbCkge1xyXG4gICAgICAgIGlmIChtb25leSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoXCJlbi1HQlwiLCB7XHJcbiAgICAgICAgICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBcIkdCUFwiLFxyXG4gICAgICAgIH0pLmZvcm1hdChtb25leSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBmdWxsIG5hbWUgb2YgdGhlIHBheW1lbnQgbWV0aG9kIGNvZGUuXHJcbiAgICAgKiBAcGFyYW0gcGF5bWVudE1ldGhvZENvZGUgVGhlIHBheW1lbnQgbWV0aG9kIGNvZGUgdG8gYmUgZm9ybWF0dGVkLlxyXG4gICAgICogQHJldHVybnMgVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGF5bWVudCBtZXRob2QgY29kZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRQYXltZW50TWV0aG9kQ29kZVN0cmluZyhwYXltZW50TWV0aG9kQ29kZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGx7XHJcbiAgICAgICAgc3dpdGNoIChwYXltZW50TWV0aG9kQ29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwiQ0hFUVVFXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJDaGVxdWVcIjtcclxuICAgICAgICAgICAgY2FzZSBcIkNDXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJDcmVkaXQgQ2FyZFwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiQkFDU1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiQkFDU1wiO1xyXG4gICAgICAgICAgICBjYXNlIFwiUEFZUEFMXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJQYXlQYWxcIjtcclxuICAgICAgICAgICAgY2FzZSBcIk1BTlVBTFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiTWFudWFsIFBheW1lbnRcIjtcclxuICAgICAgICAgICAgY2FzZSBcIldPUkxEUEFZXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJXb3JsZFBheVwiO1xyXG4gICAgICAgICAgICBjYXNlIFwiRERcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIkRpcmVjdCBEZWJpdFwiO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsImltcG9ydCB7IE9yZGVybGluZVRhYmxlSGVhZGVyQ2VsbCB9IGZyb20gXCIuLi9UeXBlcy9UYWJsZUhlYWRlckNlbGxzL09yZGVybGluZVRhYmxlSGVhZGVyQ2VsbFwiO1xyXG5cclxuLyoqIERlc2NyaXB0aW9uIG9mIHRoZSB0YWJsZSBoZWFkZXIgY2VsbHMgdG8gZGlzcGxheSBpbiB0aGUgT3JkZXIgTGluZXMgVGFibGUuICovXHJcbmV4cG9ydCBjb25zdCBnZXRPcmRlcmxpbmVUYWJsZUhlYWRlckNlbGxzID0gKCk6IE9yZGVybGluZVRhYmxlSGVhZGVyQ2VsbFtdID0+IHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgLy8gVGhpcyBpcyBhIGNvbmRpdGlvbmFsIGNvbHVtbiAtIHNob3cgdGhlIGBzYWxlc29yZGVyZGV0YWlsbmFtZWAgZm9yIG5vbiBQcm9qZWN0IFNlcnZpY2UgYmFzZWQgbGluZXMuXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIkRlc2NyaXB0aW9uXCIsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJzYWxlc29yZGVyZGV0YWlsbmFtZVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gVGhpcyBpcyBhIGNvbmRpdGlvbmFsIGNvbHVtbiAtIHNob3cgdGhlIGBiaXN0ZWNoX3Byb2R1Y3RkZXNjcmlwdGlvbmAgZm9yIFByb2plY3QgU2VydmljZSBiYXNlZCBsaW5lcy5cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiRGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImJpc3RlY2hfcHJvZHVjdGRlc2NyaXB0aW9uXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAxLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiUXVhbnRpdHlcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcInF1YW50aXR5XCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAyLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiTm9uLVJlY3VycmluZyBBbW91bnRcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcInByaWNlcGVydW5pdFwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMyxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIlRvdGFsIEFubnVhbCBBbW91bnRcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImJpc3RlY2hfdG90YWxhbm51YWxwcmljZVwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICBdO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcblxyXG4vKiogUGxhY2Vob2xkZXIgY29udGFpbmluZyB0aGUgQmlzdGVjaCBMb2dvLCBjYW4gcGFzcyBpbiBhbnkgcmVxdWlyZWQgY2hpbGQgY29tcG9uZW50cy4gKi9cclxuZXhwb3J0IGNvbnN0IFBsYWNlaG9sZGVyID0gKHByb3BzOiBhbnkpID0+IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2Jpc3RlY2guc3ZnXCIgaGVpZ2h0PXs3NX0gd2lkdGg9ezIzMn0gY2xhc3NOYW1lPVwicGxhY2Vob2xkZXItaW1nXCIgLz5cclxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgRm9udFdlaWdodHMsIEljb25CdXR0b24sIE1vZGFsLCBUZXh0RmllbGQsIGdldFRoZW1lLCBtZXJnZVN0eWxlU2V0cyB9IGZyb20gXCJAZmx1ZW50dWkvcmVhY3RcIjtcclxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gXCIuLi9Nb2RlbHMvUHJvamVjdFwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9Qcm9qZWN0U3RhdHVzQ29kZVwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5cclxuLyoqIEdldCB0aGUgdGhlbWUgcHJvcGVydGllcy4gKi9cclxuY29uc3QgdGhlbWUgPSBnZXRUaGVtZSgpO1xyXG5cclxuLyoqIFRoZSBzdHlsZXMgZm9yIHRoZSBpY29uIGJ1dHRvbi4gKi9cclxuY29uc3QgaWNvbkJ1dHRvblN0eWxlcyA9IHtcclxuICAgIHJvb3Q6IHtcclxuICAgICAgICBjb2xvcjogXCJncmF5XCIsXHJcbiAgICAgICAgbWFyZ2luTGVmdDogXCIwXCIsXHJcbiAgICAgICAgcGFkZGluZzogXCJhdXRvXCIsXHJcbiAgICB9LFxyXG4gICAgcm9vdEhvdmVyZWQ6IHtcclxuICAgICAgICBjb2xvcjogXCJkYXJrZ3JheVwiLFxyXG4gICAgfSxcclxufTtcclxuXHJcbi8qKiBUaGUgc3R5bGVzIGZvciB0aGUgbW9kYWwuICovXHJcbmNvbnN0IGNvbnRlbnRTdHlsZXMgPSBtZXJnZVN0eWxlU2V0cyh7XHJcbiAgICBjb250YWluZXI6IHtcclxuICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcclxuICAgICAgICBmbGV4RmxvdzogXCJjb2x1bW4gbm93cmFwXCIsXHJcbiAgICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCIsXHJcbiAgICAgICAgYWxpZ25Db250ZW50OiBcImNlbnRlclwiLFxyXG4gICAgfSxcclxuICAgIGhlYWRlcjogW1xyXG4gICAgICAgIHRoZW1lLmZvbnRzLnhMYXJnZSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGZsZXg6IFwiMSAxIGF1dG9cIixcclxuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUubmV1dHJhbFByaW1hcnksXHJcbiAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5zZW1pYm9sZCxcclxuICAgICAgICAgICAgcGFkZGluZzogXCIxMnB4IDEycHggMTRweCAyNHB4XCIsXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICBoZWFkaW5nOiB7XHJcbiAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodHMuc2VtaWJvbGQsXHJcbiAgICAgICAgZm9udFNpemU6IFwiaW5oZXJpdFwiLFxyXG4gICAgICAgIG1hcmdpbjogXCIwXCIsXHJcbiAgICB9LFxyXG4gICAgc3RhdHVzQ29udGFpbmVyOiB7XHJcbiAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodHMuc2VtaWJvbGQsXHJcbiAgICAgICAgZm9udFNpemU6IFwiMTVwdFwiLFxyXG4gICAgICAgIG1hcmdpbjogXCIwXCIsXHJcbiAgICAgICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXHJcbiAgICAgICAgbWFyZ2luUmlnaHQ6IFwiMjRweFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXHJcbiAgICAgICAgYWxpZ25JdGVtczogXCJsZWZ0XCIsXHJcbiAgICB9LFxyXG4gICAgc3RhdHVzOiB7XHJcbiAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodHMuc2VtaWJvbGQsXHJcbiAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxyXG4gICAgICAgIGxpbmVIZWlnaHQ6IFwiMjBweFwiLFxyXG4gICAgICAgIG1hcmdpbjogXCIwXCIsXHJcbiAgICB9LFxyXG4gICAgc3RhdHVzTGFiZWw6IHtcclxuICAgICAgICBmb250V2VpZ2h0OiBGb250V2VpZ2h0cy5yZWd1bGFyLFxyXG4gICAgICAgIGZvbnRTaXplOiBcIjEycHhcIixcclxuICAgICAgICBsaW5lSGVpZ2h0OiBcIjE2cHhcIixcclxuICAgICAgICBtYXJnaW46IFwiMFwiLFxyXG4gICAgfSxcclxuICAgIHRleHRGaWVsZDogeyBjb2xvcjogXCIjNzc3XCIsIGJhY2tncm91bmRDb2xvcjogXCIjZjJmMmYyXCIsIGN1cnNvcjogXCJub3QtYWxsb3dlZFwiIH0sXHJcbiAgICBib2R5OiB7XHJcbiAgICAgICAgZmxleDogXCI0IDQgYXV0b1wiLFxyXG4gICAgICAgIHBhZGRpbmc6IFwiMCAyNHB4IDI0cHggMjRweFwiLFxyXG4gICAgICAgIG92ZXJmbG93WTogXCJoaWRkZW5cIixcclxuICAgICAgICBzZWxlY3RvcnM6IHtcclxuICAgICAgICAgICAgcDogeyBtYXJnaW46IFwiMTRweCAwXCIgfSxcclxuICAgICAgICAgICAgXCJwOmZpcnN0LWNoaWxkXCI6IHsgbWFyZ2luVG9wOiAwIH0sXHJcbiAgICAgICAgICAgIFwicDpsYXN0LWNoaWxkXCI6IHsgbWFyZ2luQm90dG9tOiAwIH0sXHJcbiAgICAgICAgfSxcclxuICAgIH0sXHJcbn0pO1xyXG5cclxuLyoqIEEgY29tcG9uZW50IHdoaWNoIGRpc3BsYXlzIFByb2plY3QgaW5mb3JtYXRpb24gaW4gYSBtb2RhbC4gKi9cclxuZXhwb3J0IGNvbnN0IFByb2plY3REZXRhaWxzTW9kYWw6IFJlYWN0LkZDPHtcclxuICAgIHByb2plY3Q6IFByb2plY3Q7XHJcbiAgICBwcm9qZWN0RGV0YWlsc0lzU2hvd246IGJvb2xlYW47XHJcbiAgICBzZXRQcm9qZWN0RGV0YWlsc0lzU2hvd246IChpc1Nob3duOiBib29sZWFuKSA9PiB2b2lkO1xyXG59PiA9ICh7IHByb2plY3QsIHByb2plY3REZXRhaWxzSXNTaG93biwgc2V0UHJvamVjdERldGFpbHNJc1Nob3duIH0pID0+IHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPE1vZGFsXHJcbiAgICAgICAgICAgIGlzT3Blbj17cHJvamVjdERldGFpbHNJc1Nob3dufVxyXG4gICAgICAgICAgICBzdHlsZXM9e3tcclxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVDb250ZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvd1k6IFwiaGlkZGVuXCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbWFpbjogeyBoZWlnaHQ6IFwiZml0LWNvbnRlbnRcIiwgd2lkdGg6IFwiNTAwcHhcIiB9LFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBvbkRpc21pc3M9eygpID0+IHNldFByb2plY3REZXRhaWxzSXNTaG93bighcHJvamVjdERldGFpbHNJc1Nob3duKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb250ZW50U3R5bGVzLmhlYWRlcn0+XHJcbiAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPXtjb250ZW50U3R5bGVzLmhlYWRpbmd9IGlkPXtwcm9qZWN0Lm1zZHluX3Byb2plY3RpZH0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Byb2plY3QuYmlzdGVjaF9wcm9qZWN0bnVtYmVyfVxyXG4gICAgICAgICAgICAgICAgPC9oMj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjb250ZW50U3R5bGVzLnN0YXR1c0NvbnRhaW5lcn0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtjb250ZW50U3R5bGVzLnN0YXR1c30+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9qZWN0LnN0YXR1c2NvZGUgIT09IG51bGwgPyBQcm9qZWN0U3RhdHVzQ29kZVtwcm9qZWN0LnN0YXR1c2NvZGVdIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtjb250ZW50U3R5bGVzLnN0YXR1c0xhYmVsfT5Qcm9qZWN0IFN0YXR1czwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZXM9e2ljb25CdXR0b25TdHlsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblByb3BzPXt7IGljb25OYW1lOiBcIkNhbmNlbFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwiQ2xvc2UgcG9wdXAgbW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFByb2plY3REZXRhaWxzSXNTaG93bighcHJvamVjdERldGFpbHNJc1Nob3duKX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y29udGVudFN0eWxlcy5ib2R5fT5cclxuICAgICAgICAgICAgICAgIDxUZXh0RmllbGRcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlByb2plY3QgTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInByb2plY3QtbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3Byb2plY3QubXNkeW5fc3ViamVjdH1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCIjNzc3XCIsIGJhY2tncm91bmRDb2xvcjogXCIjZjJmMmYyXCIsIGN1cnNvcjogXCJub3QtYWxsb3dlZFwiIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8VGV4dEZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQcm9qZWN0IE1hbmFnZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm9qZWN0LW1hbmFnZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9qZWN0W1wiX293bmVyaWRfdmFsdWVAT0RhdGEuQ29tbXVuaXR5LkRpc3BsYXkuVjEuRm9ybWF0dGVkVmFsdWVcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwiIzc3N1wiLCBiYWNrZ3JvdW5kQ29sb3I6IFwiI2YyZjJmMlwiLCBjdXJzb3I6IFwibm90LWFsbG93ZWRcIiB9fVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICAgICAgPFRleHRGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiQWN0dWFsIFN0YXJ0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJwcm9qZWN0LXN0YXJ0LWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwcm9qZWN0Lm1zZHluX2FjdHVhbHN0YXJ0ID8gRGF0ZUhlbHBlci50b0RhdGVPbmx5U3RyaW5nKHByb2plY3QubXNkeW5fYWN0dWFsc3RhcnQpIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCIjNzc3XCIsIGJhY2tncm91bmRDb2xvcjogXCIjZjJmMmYyXCIsIGN1cnNvcjogXCJub3QtYWxsb3dlZFwiIH19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L01vZGFsPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgQ2FsbFRvQWN0aW9uQmFzZVBhZ2UgfSBmcm9tIFwiLi4vQ2FsbFRvQWN0aW9uQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IE9yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9PcmRlclN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgT3JkZXJTdGF0ZUNvZGUgfSBmcm9tIFwiLi4vLi4vRW51bXMvT3JkZXJTdGF0ZUNvZGVcIjtcclxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTZWxlY3RvciwgRGVmYXVsdFJvb3RTdGF0ZSB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBDb250YWN0Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uLy4uL01vZGVscy9Db250YWN0Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IFN0cmluZ0ZpZWxkIH0gZnJvbSBcIi4uLy4uL0NvbXBvbmVudHMvRmllbGRzL1N0cmluZ0ZpZWxkXCI7XHJcbmltcG9ydCB7IEltU3Bpbm5lcjIsIEltQXJyb3dSaWdodDIsIEltQXJyb3dMZWZ0MiB9IGZyb20gXCJyZWFjdC1pY29ucy9pbVwiO1xyXG5pbXBvcnQgeyB1c2VEYXRhU2VydmljZSB9IGZyb20gXCIuLi8uLi9Ib29rcy91c2VEYXRhU2VydmljZVwiO1xyXG5pbXBvcnQgeyBMaW5rIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvQW5ub3RhdGlvblwiO1xyXG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9Mb29rdXBGaWVsZFwiO1xyXG5pbXBvcnQgeyBGb3JtYXR0aW5nSGVscGVyIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvRm9ybWF0dGluZ0hlbHBlclwiO1xyXG5pbXBvcnQgeyBJSWNvblByb3BzLCBJY29uQnV0dG9uLCBNb2RhbCB9IGZyb20gXCJAZmx1ZW50dWkvcmVhY3RcIjtcclxuaW1wb3J0IHsgUHJvZHVjdFR5cGVDb2RlIH0gZnJvbSBcIi4uLy4uL0VudW1zL1Byb2R1Y3RUeXBlQ29kZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9UYWJsZUhlYWRlckNlbGxcIjtcclxuaW1wb3J0IHsgZ2V0T3JkZXJsaW5lVGFibGVIZWFkZXJDZWxscyB9IGZyb20gXCIuLi8uLi9EYXRhL2dldE9yZGVybGluZVRhYmxlSGVhZGVyQ2VsbHNcIjtcclxuaW1wb3J0IHsgT3JkZXJsaW5lIH0gZnJvbSBcIi4uLy4uL01vZGVscy9PcmRlcmxpbmVcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyRm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uLy4uL01vZGVscy9OZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgUGxhY2Vob2xkZXIgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9QbGFjZWhvbGRlclwiO1xyXG5pbXBvcnQgeyBQcm9qZWN0RGV0YWlsc01vZGFsIH0gZnJvbSBcIi4uLy4uL0NvbXBvbmVudHMvUHJvamVjdERldGFpbHNNb2RhbFwiO1xyXG5cclxuLyoqIFN0eWxlIGZvciB0aGUgY2xvc2UgYnV0dG9uIGluIHRoZSBcIlZpZXcgT3JkZXIgRm9ybVwiIE1vZGFsLiAqL1xyXG5jb25zdCBjYW5jZWxJY29uOiBJSWNvblByb3BzID0geyBpY29uTmFtZTogXCJDYW5jZWxcIiB9O1xyXG5cclxuLyoqIFRoZSBzdHlsZXMgZm9yIHRoZSBpY29uIGJ1dHRvbi4gKi9cclxuY29uc3QgaWNvbkJ1dHRvblN0eWxlcyA9IHtcclxuICAgIHJvb3Q6IHtcclxuICAgICAgICBjb2xvcjogXCJncmF5XCIsXHJcbiAgICAgICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXHJcbiAgICAgICAgcGFkZGluZ1RvcDogXCI0cHhcIixcclxuICAgICAgICBwYWRkaW5nUmlnaHQ6IFwiMTBweFwiLFxyXG4gICAgfSxcclxuICAgIHJvb3RIb3ZlcmVkOiB7XHJcbiAgICAgICAgY29sb3I6IFwiZGFya2dyYXlcIixcclxuICAgIH0sXHJcbn07XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgRWRpdCBPcmRlciBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBPcmRlcnNFZGl0Q29udGVudCA9IChwcm9wczogeyBpbml0aWFsT3JkZXI6IE9yZGVyOyBvblNhdmU6ICgpID0+IHZvaWQgfSkgPT4ge1xyXG4gICAgY29uc3QgT1JERVJMSU5FX1BBR0lOQVRJT05fTElNSVQgPSAyNTtcclxuICAgIGNvbnN0IGN1cnJlbnRseVNlbGVjdGVkT3JkZXIgPSBwcm9wcy5pbml0aWFsT3JkZXI7XHJcblxyXG4gICAgY29uc3QgY29udGFjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmNvbnRhY3RzKTtcclxuICAgIGNvbnN0IG5ldHdvcmtPcmRlcnMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLm5ldHdvcmtPcmRlcnMpO1xyXG4gICAgY29uc3QgcHJvamVjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnByb2plY3RzKTtcclxuXHJcbiAgICBjb25zdCBbc29ydGVkQ29sdW1uLCBzZXRTb3J0ZWRDb2x1bW5dID0gdXNlU3RhdGU8a2V5b2YgT3JkZXJsaW5lPihcInNhbGVzb3JkZXJkZXRhaWxuYW1lXCIpO1xyXG4gICAgY29uc3QgW2lzU29ydGVkQXNjZW5kaW5nLCBzZXRJc1NvcnRlZEFzY2VuZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XHJcbiAgICBjb25zdCBbb3JkZXJDb250YWN0LCBzZXRPcmRlckNvbnRhY3RdID0gdXNlU3RhdGU8Q29udGFjdEZvclJldHJpZXZhbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAgIGNvbnN0IFtsYXRlc3RBbm5vdGF0aW9uLCBzZXRMYXRlc3RBbm5vdGF0aW9uXSA9IHVzZVN0YXRlPEFubm90YXRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgICBjb25zdCBbY2FsbFRvQWN0aW9uRGV0YWlscywgc2V0Q2FsbFRvQWN0aW9uRGV0YWlsc10gPSB1c2VTdGF0ZTxcclxuICAgICAgICB8IHtcclxuICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgaWNvbjogc3RyaW5nO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIHwgdW5kZWZpbmVkXHJcbiAgICA+KCk7XHJcbiAgICBjb25zdCBtYXhpbXVtUGFnaW5hdGlvbnMgPSBNYXRoLmNlaWwoY3VycmVudGx5U2VsZWN0ZWRPcmRlci5vcmRlcl9kZXRhaWxzLmxlbmd0aCAvIE9SREVSTElORV9QQUdJTkFUSU9OX0xJTUlUKTtcclxuICAgIGNvbnN0IFtjdXJyZW50bHlTZWxlY3RlZFBhZ2UsIHNldEN1cnJlbnRseVNlbGVjdGVkUGFnZV0gPSB1c2VTdGF0ZTxudW1iZXI+KDApO1xyXG4gICAgY29uc3QgW2lzTG9hZGVkLCBzZXRJc0xvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbZm9ybVN1Ym1pdEF0dGVtcHRlZCwgc2V0Rm9ybVN1Ym1pdEF0dGVtcHRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbb3JkZXJGb3JtSXNTaG93biwgc2V0T3JkZXJGb3JtSXNTaG93bl0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbcHJvamVjdERldGFpbHNJc1Nob3duLCBzZXRQcm9qZWN0RGV0YWlsc0lzU2hvd25dID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW3NvcnRlZEFuZFBhZ2luYXRlZExpbmVzLCBzZXRTb3J0ZWRBbmRQYWdpbmF0ZWRMaW5lc10gPSB1c2VTdGF0ZTxPcmRlcmxpbmVbXT4oW10pO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG5cclxuICAgIGNvbnN0IGdldFNvcnRlZENvbHVtblZhbHVlID0gKG9yZGVybGluZTogT3JkZXJsaW5lKTogc3RyaW5nID0+IG9yZGVybGluZVtzb3J0ZWRDb2x1bW5dPy50b1N0cmluZygpID8/IFwiXCI7XHJcblxyXG4gICAgY29uc3QgaXRlbUJhc2VkT3JkZXJMaW5lcyA9IGN1cnJlbnRseVNlbGVjdGVkT3JkZXIub3JkZXJfZGV0YWlscy5maWx0ZXIoXHJcbiAgICAgICAgKGxpbmUpID0+IGxpbmUucHJvZHVjdHR5cGVjb2RlID09PSBQcm9kdWN0VHlwZUNvZGUuUHJvZHVjdFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBwcm9qZWN0QmFzZWRPcmRlckxpbmVzID0gY3VycmVudGx5U2VsZWN0ZWRPcmRlci5vcmRlcl9kZXRhaWxzLmZpbHRlcihcclxuICAgICAgICAobGluZSkgPT4gbGluZS5wcm9kdWN0dHlwZWNvZGUgPT09IFByb2R1Y3RUeXBlQ29kZVtcIlByb2plY3QtQmFzZWQgU2VydmljZVwiXVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVTb3J0aW5nRm9yVHlwZSA9IChvcmRlcmxpbmVBOiBPcmRlcmxpbmUsIG9yZGVybGluZUI6IE9yZGVybGluZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IFthVmFsLCBiVmFsXSA9IFtvcmRlcmxpbmVBW3NvcnRlZENvbHVtbl0sIG9yZGVybGluZUJbc29ydGVkQ29sdW1uXV07XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgYVZhbCA9PT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgYlZhbCA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gaXNTb3J0ZWRBc2NlbmRpbmdcclxuICAgICAgICAgICAgICAgID8gcGFyc2VGbG9hdChnZXRTb3J0ZWRDb2x1bW5WYWx1ZShvcmRlcmxpbmVCKSkgLSBwYXJzZUZsb2F0KGdldFNvcnRlZENvbHVtblZhbHVlKG9yZGVybGluZUEpKVxyXG4gICAgICAgICAgICAgICAgOiBwYXJzZUZsb2F0KGdldFNvcnRlZENvbHVtblZhbHVlKG9yZGVybGluZUEpKSAtIHBhcnNlRmxvYXQoZ2V0U29ydGVkQ29sdW1uVmFsdWUob3JkZXJsaW5lQikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGlzU29ydGVkQXNjZW5kaW5nXHJcbiAgICAgICAgICAgID8gZ2V0U29ydGVkQ29sdW1uVmFsdWUob3JkZXJsaW5lQikubG9jYWxlQ29tcGFyZShnZXRTb3J0ZWRDb2x1bW5WYWx1ZShvcmRlcmxpbmVBKSlcclxuICAgICAgICAgICAgOiBnZXRTb3J0ZWRDb2x1bW5WYWx1ZShvcmRlcmxpbmVBKS5sb2NhbGVDb21wYXJlKGdldFNvcnRlZENvbHVtblZhbHVlKG9yZGVybGluZUIpKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb3JkZXJMaW5lc1RvU2hvdyA9IFsuLi5pdGVtQmFzZWRPcmRlckxpbmVzLCAuLi5wcm9qZWN0QmFzZWRPcmRlckxpbmVzXTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldFNvcnRlZEFuZFBhZ2luYXRlZExpbmVzKFxyXG4gICAgICAgICAgICBvcmRlckxpbmVzVG9TaG93XHJcbiAgICAgICAgICAgICAgICAuc29ydCgob3JkZXJsaW5lQTogT3JkZXJsaW5lLCBvcmRlcmxpbmVCOiBPcmRlcmxpbmUpID0+IGhhbmRsZVNvcnRpbmdGb3JUeXBlKG9yZGVybGluZUEsIG9yZGVybGluZUIpKVxyXG4gICAgICAgICAgICAgICAgLnNsaWNlKFxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseVNlbGVjdGVkUGFnZSAqIE9SREVSTElORV9QQUdJTkFUSU9OX0xJTUlULFxyXG4gICAgICAgICAgICAgICAgICAgIChjdXJyZW50bHlTZWxlY3RlZFBhZ2UgKyAxKSAqIE9SREVSTElORV9QQUdJTkFUSU9OX0xJTUlUID4gb3JkZXJMaW5lc1RvU2hvdy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBvcmRlckxpbmVzVG9TaG93Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IChjdXJyZW50bHlTZWxlY3RlZFBhZ2UgKyAxKSAqIE9SREVSTElORV9QQUdJTkFUSU9OX0xJTUlUXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH0sIFtzb3J0ZWRDb2x1bW4sIGlzU29ydGVkQXNjZW5kaW5nLCBjdXJyZW50bHlTZWxlY3RlZFBhZ2VdKTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJDZWxscyA9IGdldE9yZGVybGluZVRhYmxlSGVhZGVyQ2VsbHMoKTtcclxuXHJcbiAgICAvLyBNYXJrIHRoZSBjb21wb25lbnQgYXMgbG9hZGVkXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldElzTG9hZGVkKHRydWUpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8vIEdldCB0aGUgQ29udGFjdCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIE9yZGVyIEluZm9ybWF0aW9uIHBhbmVsLlxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoY29udGFjdHMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjb250YWN0ID0gY29udGFjdHMuZGF0YS5maW5kKChjKSA9PiBjLmNvbnRhY3RpZCA9PT0gY3VycmVudGx5U2VsZWN0ZWRPcmRlci5fYmlzdGVjaF9jb250YWN0X3ZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKCFjb250YWN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldE9yZGVyQ29udGFjdChjb250YWN0KTtcclxuICAgIH0sIFtjb250YWN0cy5sb2FkaW5nU3RhdHVzXSk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRseVNlbGVjdGVkT3JkZXIuYmlzdGVjaF9vcmRlcmZvcm0/LmJpc3RlY2hfb3JkZXJmb3JtaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlT3JkZXJGb3JtSW5mbyhjdXJyZW50bHlTZWxlY3RlZE9yZGVyLmJpc3RlY2hfb3JkZXJmb3JtPy5iaXN0ZWNoX29yZGVyZm9ybWlkKVxyXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmJpc3RlY2hfb3JkZXJmb3JtX0Fubm90YXRpb25zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9zdFJlY2VudEFubm90YXRpb24gPSBkYXRhLmJpc3RlY2hfb3JkZXJmb3JtX0Fubm90YXRpb25zLnNvcnQoKGE6IEFubm90YXRpb24sIGI6IEFubm90YXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGF0ZS5wYXJzZShhLm1vZGlmaWVkb24gPz8gXCJcIikgLSBEYXRlLnBhcnNlKGIubW9kaWZpZWRvbiA/PyBcIlwiKTtcclxuICAgICAgICAgICAgICAgIH0pWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIHNldExhdGVzdEFubm90YXRpb24obW9zdFJlY2VudEFubm90YXRpb24pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtpc0xvYWRlZF0pO1xyXG5cclxuICAgIC8vIFNldCB0aGUgY2FsbCB0byBhY3Rpb24gZGV0YWlscyBiYXNlZCBvbiB0aGUgT3JkZXIgc3RhdHVzLlxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGN1cnJlbnRseVNlbGVjdGVkT3JkZXIuc3RhdHVzY29kZSkge1xyXG4gICAgICAgICAgICBjYXNlIE9yZGVyU3RhdHVzQ29kZS5QZW5kaW5nOlxyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uRGV0YWlscyh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiUGVuZGluZyBTaWduYXR1cmVcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGUgT3JkZXIgaXMgYXdhaXRpbmcgc2lnbmF0dXJlIGZyb20geW91IGluIERvY3UtU2lnbiBhbmQgd2lsbCBiZSBwcm9jZXNzZWQgdXBvbiBzaWduaW5nLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL29yZGVyLWNhbGwtdG8tYWN0aW9uLXBlbmRpbmcuc3ZnXCIsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgT3JkZXJTdGF0dXNDb2RlLlByb2Nlc3Npbmc6XHJcbiAgICAgICAgICAgIGNhc2UgT3JkZXJTdGF0dXNDb2RlW1wiUHJvY2Vzc2luZyBDb21wbGV0ZVwiXTpcclxuICAgICAgICAgICAgY2FzZSBPcmRlclN0YXR1c0NvZGVbXCJQZW5kaW5nIENvbnRyYWN0IFJldmlld1wiXTpcclxuICAgICAgICAgICAgICAgIHNldENhbGxUb0FjdGlvbkRldGFpbHMoe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlByb2Nlc3NpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJPdXIgdGVhbSBpcyBjdXJyZW50bHkgcHJvY2Vzc2luZyB0aGUgb3JkZXIuIFVwZGF0ZXMgd2lsbCBiZSBwcm92aWRlZCBhY2NvcmRpbmdseS5cIixcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9vcmRlci1jYWxsLXRvLWFjdGlvbi1wcm9jZXNzaW5nLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIE9yZGVyU3RhdHVzQ29kZVtcIkluIFByb2dyZXNzXCJdOlxyXG4gICAgICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uRGV0YWlscyh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiSW4gUHJvZ3Jlc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgT3JkZXIgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZnVsZmlsbGVkLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL29yZGVyLWNhbGwtdG8tYWN0aW9uLWluLXByb2dyZXNzLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWRPcmRlcj8uc3RhdGVjb2RlID09PSBPcmRlclN0YXRlQ29kZS5GdWxmaWxsZWQpIHtcclxuICAgICAgICAgICAgc2V0Q2FsbFRvQWN0aW9uRGV0YWlscyh7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogXCJGdWxmaWxsZWRcIixcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoaXMgT3JkZXIgaXMgY29uc2lkZXJlZCBmdWxmaWxsZWQgYnkgQmlzdGVjaC5cIixcclxuICAgICAgICAgICAgICAgIGljb246IFwiL29yZGVyLWNhbGwtdG8tYWN0aW9uLWZ1bGZpbGxlZC5zdmdcIixcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfSwgW2N1cnJlbnRseVNlbGVjdGVkT3JkZXJdKTtcclxuXHJcbiAgICBjb25zdCBpc0xhdGVzdE9yZGVyRm9ybUFubm90YXRpb25WYWxpZCA9ICgpID0+XHJcbiAgICAgICAgKGxhdGVzdEFubm90YXRpb24gJiYgbGF0ZXN0QW5ub3RhdGlvbi5maWxlbmFtZT8uZW5kc1dpdGgoXCIucGRmXCIpKSA/PyBmYWxzZTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGFwcGxpY2FibGUgY29sdW1uIGhlYWRlciBmb3IgdGhlIGdpdmVuIGZpZWxkIG5hbWUuXHJcbiAgICBjb25zdCBnZXRDb2x1bW5IZWFkZXIgPSAoZmllbGROYW1lOiBrZXlvZiBPcmRlcmxpbmUgfCBrZXlvZiBOZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWwpID0+XHJcbiAgICAgICAgaGVhZGVyQ2VsbHMuZmluZCgoaGVhZGVyQ2VsbCkgPT4gaGVhZGVyQ2VsbC5maWVsZE5hbWUgPT09IGZpZWxkTmFtZSk/LmNvbHVtbkhlYWRlcjtcclxuXHJcbiAgICAvKiogQWRkcyAxIHRvIHRoZSBuZXh0IFBhZ2luYXRlZCBPcmRlcmxpbmUgUGFnZS4gKi9cclxuICAgIGNvbnN0IGluY3JlbWVudFNlbGVjdGVkUGFnZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWRQYWdlICsgMSA+PSBPUkRFUkxJTkVfUEFHSU5BVElPTl9MSU1JVCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRDdXJyZW50bHlTZWxlY3RlZFBhZ2UoY3VycmVudGx5U2VsZWN0ZWRQYWdlICsgMSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKiBTdWJ0cmFjdHMgMSBmcm9tIHRoZSBuZXh0IFBhZ2luYXRlZCBPcmRlcmxpbmUgUGFnZS4gKi9cclxuICAgIGNvbnN0IGRlY3JlbWVudFNlbGVjdGVkUGFnZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoY3VycmVudGx5U2VsZWN0ZWRQYWdlIC0gMSA8IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0Q3VycmVudGx5U2VsZWN0ZWRQYWdlKGN1cnJlbnRseVNlbGVjdGVkUGFnZSAtIDEpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxDYWxsVG9BY3Rpb25CYXNlUGFnZVxyXG4gICAgICAgICAgICB0aXRsZT17cHJvcHMuaW5pdGlhbE9yZGVyPy5vcmRlcm51bWJlciA/PyBcIlwifVxyXG4gICAgICAgICAgICB0YWdzPXtbXX1cclxuICAgICAgICAgICAgY2FsbFRvQWN0aW9uSW5mb3JtYXRpb249e1xyXG4gICAgICAgICAgICAgICAgY2FsbFRvQWN0aW9uRGV0YWlsc1xyXG4gICAgICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY2FsbFRvQWN0aW9uRGV0YWlscy50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGNhbGxUb0FjdGlvbkRldGFpbHMuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGNhbGxUb0FjdGlvbkRldGFpbHMuaWNvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlPXsoKSA9PiB7fX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmb3JtXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJlZGl0LW9yZGVyXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc3VibWl0LWF0dGVtcHRlZD17Zm9ybVN1Ym1pdEF0dGVtcHRlZH1cclxuICAgICAgICAgICAgICAgIG9uSW52YWxpZD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgaWYgdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQgKGkuZS4gaWdub3JlIHRoZSB2YWxpZGl0eSBjaGVja3Mgd2hlbiB0aGUgZm9ybSBpcyBpbml0aWFsbHkgbG9hZGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0xvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgYSBmbGFnIGRldGFpbGluZyB0aGF0IGEgZm9ybSBzdWJtaXNzaW9uIGhhcyBiZWVuIGF0dGVtcHRlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGb3JtU3VibWl0QXR0ZW1wdGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnZW5lcmFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwiaGVhZGluZ1wiPkluZm9ybWF0aW9uPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPExvb2t1cEZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkNvbnRhY3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT17b3JkZXJDb250YWN0ID8gYCR7b3JkZXJDb250YWN0Py5maXJzdG5hbWV9LSR7b3JkZXJDb250YWN0Py5sYXN0bmFtZX1gIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uSWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb250YWN0cy5kYXRhLmZpbmQoKGMpID0+IGMuY29udGFjdGlkID09PSBvcmRlckNvbnRhY3Q/LmNvbnRhY3RpZCk/LmNvbnRhY3RpZCA/P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29udGFjdHMuZGF0YS5tYXAoKGMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGMuY29udGFjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGlja2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBgJHtjPy5maXJzdG5hbWUgfHwgXCJcIn0gJHtjPy5sYXN0bmFtZSB8fCBcIlwifWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXJhbE9wdGlvbnNOYW1lPXtcIkNvbnRhY3RzXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbklkPXsoKSA9PiB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIllvdXIgUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjdXN0b21lci1yZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2N1cnJlbnRseVNlbGVjdGVkT3JkZXIuYmlzdGVjaF9jdXN0b21lcnJlZmVyZW5jZSA/PyBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRHcm91cD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyBkaXNhYmxlZDogdHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiVG90YWwgTm9uLVJlY3VycmluZyBBbW91bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRvdGFsLW5vbi1yZWN1cnJpbmctYW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtGb3JtYXR0aW5nSGVscGVyLnRvTW9uZXlTdHJpbmcoY3VycmVudGx5U2VsZWN0ZWRPcmRlci50b3RhbGxpbmVpdGVtYW1vdW50KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkR3JvdXA9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0cmluZ0ZpZWxkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlRvdGFsIEFubnVhbCBBbW91bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInRvdGFsLWFubnVhbC1BbW91bnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e0Zvcm1hdHRpbmdIZWxwZXIudG9Nb25leVN0cmluZyhjdXJyZW50bHlTZWxlY3RlZE9yZGVyLmJpc3RlY2hfdG90YWxhbm51YWxwcmljZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IGRpc2FibGVkOiB0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3JkZXItZm9ybS1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXNMYXRlc3RPcmRlckZvcm1Bbm5vdGF0aW9uVmFsaWQoKSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e2BkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJHtsYXRlc3RBbm5vdGF0aW9uIS5kb2N1bWVudGJvZHl9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkPXtsYXRlc3RBbm5vdGF0aW9uIS5maWxlbmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRvd25sb2FkLW9yZGVyLWZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZCBPcmRlciBGb3JtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE9yZGVyRm9ybUlzU2hvd24odHJ1ZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmlldy1vcmRlci1mb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3IE9yZGVyIEZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB7c29ydGVkQW5kUGFnaW5hdGVkTGluZXMubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvcmRlcmxpbmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwiZGV0YWlscy1oZWFkaW5nXCI+RGV0YWlsczwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwiZW50aXR5bGlzdCBvcmRlcmxpbmUtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkZXJDZWxsc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgY2VsbHMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZWxsLCBpbmRleCwgc2VsZikgPT4gc2VsZi5maW5kSW5kZXgoKGMpID0+IGMuaWQgPT09IGNlbGwuaWQpID09PSBpbmRleFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoY2VsbCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXI9e2NlbGwuY29sdW1uSGVhZGVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU9e2NlbGwuZmllbGROYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0aW5nUHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmdFbmFibGVkOiBjZWxsLmlzU29ydGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRDb2x1bW46IHNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvcnRlZENvbHVtbjogKCkgPT4gc2V0U29ydGVkQ29sdW1uKGNlbGwuZmllbGROYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU29ydGVkQXNjZW5kaW5nOiBpc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzU29ydGVkQXNjZW5kaW5nOiBzZXRJc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuZXR3b3JrT3JkZXJzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtoZWFkZXJDZWxsc1toZWFkZXJDZWxscy5sZW5ndGggLSAxXS5pZCArIDF9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkhlYWRlcj1cIkRldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU9XCJiaXN0ZWNoX25ldHdvcmtvcmRlcmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NvcnRlZEFuZFBhZ2luYXRlZExpbmVzLm1hcCgobGluZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluZU5ldHdvcmtPcmRlciA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5wcm9kdWN0dHlwZWNvZGUgPT09IFByb2R1Y3RUeXBlQ29kZS5Qcm9kdWN0ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya09yZGVycy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV0d29ya09yZGVycy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChubykgPT4gbm8uX2Jpc3RlY2hfb3JkZXJsaW5lX3ZhbHVlID09PSBsaW5lLnNhbGVzb3JkZXJkZXRhaWxpZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluZVByb2plY3QgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUucHJvZHVjdHR5cGVjb2RlID09PSBQcm9kdWN0VHlwZUNvZGVbXCJQcm9qZWN0LUJhc2VkIFNlcnZpY2VcIl0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvamVjdHMuZGF0YS5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdCkgPT4gcHJvamVjdC5tc2R5bl9wcm9qZWN0aWQgPT09IGxpbmUuX21zZHluX3Byb2plY3RfdmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bGluZS5zYWxlc29yZGVyZGV0YWlsaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaWQ9e2xpbmUuc2FsZXNvcmRlcmRldGFpbGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWVudGl0eT1cInNhbGVzb3JkZXJkZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbmUucHJvZHVjdHR5cGVjb2RlID09PSBQcm9kdWN0VHlwZUNvZGVbXCJQcm9qZWN0LUJhc2VkIFNlcnZpY2VcIl0gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlcmxpbmUtbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbmUuYmlzdGVjaF9wcm9kdWN0ZGVzY3JpcHRpb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib3JkZXJsaW5lLW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwic2FsZXNvcmRlcmRldGFpbG5hbWVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2xpbmUuc2FsZXNvcmRlcmRldGFpbG5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9yZGVybGluZS1xdWFudGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcInF1YW50aXR5XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGluZS5xdWFudGl0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlcmxpbmUtcHJpY2VwZXJ1bml0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwicHJpY2VwZXJ1bml0XCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Rm9ybWF0dGluZ0hlbHBlci50b01vbmV5U3RyaW5nKGxpbmUucHJpY2VwZXJ1bml0KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlcmxpbmUtYW5udWFsLXByaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiYmlzdGVjaF90b3RhbGFubnVhbHByaWNlXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Rm9ybWF0dGluZ0hlbHBlci50b01vbmV5U3RyaW5nKGxpbmUuYmlzdGVjaF90b3RhbGFubnVhbHByaWNlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvcmRlcmxpbmUtbmV0d29yay1vcmRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcImJpc3RlY2hfbmV0d29ya29yZGVyaWRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW5lTmV0d29ya09yZGVyICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2xpbmVOZXR3b3JrT3JkZXIuYmlzdGVjaF9uZXR3b3Jrb3JkZXJpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89e2AvbmV0d29ya29yZGVycy9lZGl0P25ldHdvcmtvcmRlcklkPSR7bGluZU5ldHdvcmtPcmRlci5iaXN0ZWNoX25ldHdvcmtvcmRlcmlkfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsaW5lUHJvamVjdCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bGluZVByb2plY3QubXNkeW5fcHJvamVjdGlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0UHJvamVjdERldGFpbHNJc1Nob3duKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REZXRhaWxzTW9kYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e2xpbmVQcm9qZWN0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERldGFpbHNJc1Nob3duPXtwcm9qZWN0RGV0YWlsc0lzU2hvd259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9qZWN0RGV0YWlsc0lzU2hvd249e3NldFByb2plY3REZXRhaWxzSXNTaG93bn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21heGltdW1QYWdpbmF0aW9ucyA+IDEgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7QXJyYXkuZnJvbShBcnJheShtYXhpbXVtUGFnaW5hdGlvbnMpLmtleXMoKSkubWFwKChudW1iZXIpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLW5hdmlnYXRvciBwYWdpbmF0aW9uLW51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRseVNlbGVjdGVkUGFnZShudW1iZXIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWlzLXNlbGVjdGVkPXtudW1iZXIgPT09IGN1cnJlbnRseVNlbGVjdGVkUGFnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtudW1iZXIgKyAxfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltQXJyb3dMZWZ0MlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1uYXZpZ2F0b3IgcGFnaW5hdGlvbi1hcnJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkZWNyZW1lbnRTZWxlY3RlZFBhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbUFycm93UmlnaHQyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLW5hdmlnYXRvciBwYWdpbmF0aW9uLWFycm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2luY3JlbWVudFNlbGVjdGVkUGFnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYWNlaG9sZGVyLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aT5UaGVyZSBhcmUgbm8gRGV0YWlscyBmb3IgdGhpcyBPcmRlciB5ZXQuPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIHsvKiBNb2RhbCBmb3Igdmlld2luZyB0aGUgT3JkZXIgRm9ybS4gKi99XHJcbiAgICAgICAgICAgICAgICA8TW9kYWxcclxuICAgICAgICAgICAgICAgICAgICBpc09wZW49e29yZGVyRm9ybUlzU2hvd259XHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVzPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVDb250ZW50OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dZOiBcImhpZGRlblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWluOiB7IGhlaWdodDogXCI5MHZoXCIsIHdpZHRoOiBcIjc2NHB4XCIgfSxcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIG9uRGlzbWlzcz17KCkgPT4gc2V0T3JkZXJGb3JtSXNTaG93bighb3JkZXJGb3JtSXNTaG93bil9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5hdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjQuMiVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1lbmRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM9e2ljb25CdXR0b25TdHlsZXN9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uUHJvcHM9e2NhbmNlbEljb259XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJDbG9zZSBwb3B1cCBtb2RhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcmRlckZvcm1Jc1Nob3duKCFvcmRlckZvcm1Jc1Nob3duKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgICAgICAgICB7aXNMYXRlc3RPcmRlckZvcm1Bbm5vdGF0aW9uVmFsaWQoKSA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBtaW5IZWlnaHQ6IFwiOTYlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17YGRhdGE6YXBwbGljYXRpb24vcGRmO2Jhc2U2NCwke2xhdGVzdEFubm90YXRpb24hLmRvY3VtZW50Ym9keX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dGdWxsU2NyZWVuPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGRhdGE9e2BkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJHtsYXRlc3RBbm5vdGF0aW9uIS5kb2N1bWVudGJvZHl9YH0+PC9vYmplY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIsIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBoZWlnaHQ6IFwiOTAlXCIgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW1TcGlubmVyMiBzdHlsZT17eyBoZWlnaHQ6IDMwLCB3aWR0aDogMzAgfX0gY2xhc3NOYW1lPVwic3BpblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L01vZGFsPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9DYWxsVG9BY3Rpb25CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi8uLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IE9yZGVyc0VkaXRDb250ZW50IH0gZnJvbSBcIi4vT3JkZXJzRWRpdENvbnRlbnRcIjtcclxuaW1wb3J0IHsgT3JkZXIgfSBmcm9tIFwiLi4vLi4vTW9kZWxzL09yZGVyXCI7XHJcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi4vTm90Rm91bmRcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5cclxuLyoqIFdyYXBwZXIgZm9yIHRoZSBFZGl0IE9yZGVycyBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBPcmRlcnNFZGl0RnJvbUlkID0gKHByb3BzOiB7IHNhbGVzb3JkZXJpZDogc3RyaW5nIH0pID0+IHtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gdXNlRGF0YVNlcnZpY2UoKTtcclxuICAgIGNvbnN0IG9yZGVycyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUub3JkZXJzKTtcclxuICAgIGNvbnN0IFtzYXZlS2V5LCBzZXRTYXZlS2V5XSA9IHVzZVN0YXRlKDEpO1xyXG4gICAgY29uc3QgW3JldHJpZXZlZE9yZGVyLCBzZXRSZXRyaWV2ZWRPcmRlcl0gPSB1c2VTdGF0ZTxcclxuICAgICAgICBMb2FkaW5nRGF0YTxPcmRlcj4gfCB7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiOyBlcnJvcjogRXJyb3IgfVxyXG4gICAgPih7XHJcbiAgICAgICAgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRSZXRyaWV2ZWRPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9KTtcclxuICAgIH0sIFtvcmRlcnMsIHNhdmVLZXldKTtcclxuXHJcbiAgICBjb25zdCBpbml0aWFsT3JkZXI6IExvYWRpbmdEYXRhPE9yZGVyPiA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIC8vIElmIHRoZSByZXRyaWV2YWwgaGFzIG5vdCB5ZXQgYmVlbiBzdGFydGVkXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZE9yZGVyLmxvYWRpbmdTdGF0dXMgPT09IFwibm90LXN0YXJ0ZWRcIikge1xyXG4gICAgICAgICAgICBzZXRSZXRyaWV2ZWRPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gUmV0cmlldmUgdGhlIE9yZGVyIHNwZWNpZmljYWxseSAoZS5nLiB0aGUgT3JkZXIgbWF5IGhhdmUgYmVlbiByZWNlbnRseSB1cGRhdGVkKVxyXG4gICAgICAgICAgICBkYXRhU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLnJldHJpZXZlT3JkZXIocHJvcHMuc2FsZXNvcmRlcmlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiBzZXRSZXRyaWV2ZWRPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IG9yZGVyIH0pKVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJBZGRMYXRlc3RFcnJvclwiLCBlcnJvciB9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRSZXRyaWV2ZWRPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiLCBlcnJvciB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZE9yZGVyLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogcmV0cmlldmVkT3JkZXIuZGF0YSB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9yZGVycy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtYXRjaGluZ09yZGVyID0gb3JkZXJzLmRhdGEuZmluZCgob3JkZXIpID0+IG9yZGVyLnNhbGVzb3JkZXJpZCA9PT0gcHJvcHMuc2FsZXNvcmRlcmlkKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYSBtYXRjaGluZyBhY3RpdmUgT3JkZXIgd2FzIGZvdW5kXHJcbiAgICAgICAgaWYgKG1hdGNoaW5nT3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBtYXRjaGluZ09yZGVyLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfTtcclxuICAgIH0sIFtvcmRlcnMsIHJldHJpZXZlZE9yZGVyLCBkYXRhU2VydmljZSwgcHJvcHMuc2FsZXNvcmRlcmlkLCBkaXNwYXRjaF0pO1xyXG5cclxuICAgIGlmIChyZXRyaWV2ZWRPcmRlci5sb2FkaW5nU3RhdHVzID09PSBcImVycm9yZWRcIikge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgdHlwZT1cInJlY29yZC1ub3QtZm91bmRcIiBzaW5ndWxhckVudGl0eU5hbWU9XCJPcmRlclwiIC8+O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbml0aWFsT3JkZXIubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gPE9yZGVyc0VkaXRDb250ZW50IGluaXRpYWxPcmRlcj17aW5pdGlhbE9yZGVyLmRhdGF9IG9uU2F2ZT17KCkgPT4gc2V0U2F2ZUtleShzYXZlS2V5ICsgMSl9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBPcmRlcnNFZGl0RnJvbUlkIH0gZnJvbSBcIi4vT3JkZXJzRWRpdEZyb21JZFwiO1xyXG5cclxuLyoqIFdyYXBwZXIgZm9yIHRoZSBFZGl0IE9yZGVyIHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IE9yZGVyc0VkaXQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBbc2VhcmNoUGFyYW1zXSA9IHVzZVNlYXJjaFBhcmFtcygpO1xyXG5cclxuICAgIGNvbnN0IElEX1FVRVJZX1NUUklOR19QQVJBTUVURVJfTkFNRSA9IFwib3JkZXJJZFwiO1xyXG4gICAgY29uc3Qgb3JkZXJJZCA9IHNlYXJjaFBhcmFtcy5nZXQoSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FKTtcclxuXHJcbiAgICBpZiAoIW9yZGVySWQpIHtcclxuICAgICAgICByZXR1cm4gPE5vdEZvdW5kIHNpbmd1bGFyRW50aXR5TmFtZT1cIk9yZGVyXCIgdHlwZT1cInJlY29yZC1ub3QtZm91bmRcIiAvPjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gPE9yZGVyc0VkaXRGcm9tSWQgc2FsZXNvcmRlcmlkPXtvcmRlcklkfSAvPjtcclxufTtcclxuIiwiaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENhc2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ2FzZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDb250YWN0UGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0NvbnRhY3RQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IFVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuXHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgdGhlIFVzZXIgaGFzIGFjY2VzcyB0byB0aGUgcG9ydGFsIGluIGEgU2NlbmFyaW8gd2hlcmUgdGhleSBtYXkgaGF2ZSBDdXN0b20gQmFzZSBQZXJtaXNzaW9uIExldmVsLlxyXG4gKiBAcmV0dXJucyBJZiB0aGUgdXNlciBzaG91bGQgaGF2ZSBBY2Nlc3MgdG8gdGhlIFBvcnRhbC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2VySGFzUG9ydGFsQWNjZXNzKHVzZXJNZXRhZGF0YTogVXNlck1ldGFkYXRhKTogYm9vbGVhbiB7XHJcbiAgICAvLyBJZiBubyB1c2VyIG1ldGFkYXRhIGV4aXN0cyByZXR1cm4gZmFsc2UuXHJcbiAgICBpZiAoIXVzZXJNZXRhZGF0YSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIElmIEJhc2UgUGVybWlzc2lvbiBsZXZlbCBpcyBubyBBY2Nlc3MgcmV0dXJuIGZhbHNlLlxyXG4gICAgaWYgKHVzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsID09PSBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZSB1c2VyIGhhcyBhbnkgQ3VzdG9tZXIgcGVybWlzc2lvbiB0aGF0IGlzIG5vdCBcIk5vIEFjY2Vzc1wiIFJldHVybiB0cnVlLlxyXG4gICAgY29uc3QgaGFzUG9ydGFsQ2FzZUFjY2VzcyA9IHVzZXJNZXRhZGF0YS5wb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsXHJcbiAgICAgICAgPyB1c2VyTWV0YWRhdGEucG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCAhPT0gQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXVxyXG4gICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgY29uc3QgaGFzUG9ydGFsQ29udGFjdEFjY2VzcyA9IHVzZXJNZXRhZGF0YS5wb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsXHJcbiAgICAgICAgPyB1c2VyTWV0YWRhdGEucG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbCAhPT0gQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXVxyXG4gICAgICAgIDogZmFsc2U7XHJcblxyXG4gICAgY29uc3QgaGFzUG9ydGFsb3JkZXJBY2Nlc3MgPSB1c2VyTWV0YWRhdGEucG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWxcclxuICAgICAgICA/IHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCAhPT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IGhhc1BvcnRhbEludm9pY2VBY2Nlc3MgPSB1c2VyTWV0YWRhdGEucG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbFxyXG4gICAgICAgID8gdXNlck1ldGFkYXRhLnBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgIT09IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICA6IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiBoYXNQb3J0YWxDYXNlQWNjZXNzIHx8IGhhc1BvcnRhbENvbnRhY3RBY2Nlc3MgfHwgaGFzUG9ydGFsb3JkZXJBY2Nlc3MgfHwgaGFzUG9ydGFsSW52b2ljZUFjY2VzcztcclxufVxyXG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQ2FsbG91dCwgRm9udFdlaWdodHMsIFRleHQgfSBmcm9tIFwiQGZsdWVudHVpL3JlYWN0XCI7XHJcblxyXG4vKiogUmVuZGVycyBhIHBvcHVwIG9uIGEgZ2l2ZW4gY29tcG9uZW50LiAqL1xyXG5leHBvcnQgY29uc3QgUG9wdXA6IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PHtcclxuICAgIGlzVmlzaWJsZTogYm9vbGVhbjtcclxuICAgIG9uRGlzbWlzczogKCkgPT4gdm9pZDtcclxuICAgIGhlYWRsaW5lOiBzdHJpbmc7XHJcbiAgICBjb250ZW50OiBzdHJpbmc7XHJcbiAgICByZWZFbGVtZW50OiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIHtwcm9wcy5pc1Zpc2libGUgJiYgcHJvcHMucmVmRWxlbWVudCAmJiAoXHJcbiAgICAgICAgICAgICAgICA8Q2FsbG91dFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD17cHJvcHMucmVmRWxlbWVudH1cclxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZGlhbG9nXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMzIwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjIwcHggMjRweFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzbWlzc09uVGFyZ2V0Q2xpY2s9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgICAgb25EaXNtaXNzPXtwcm9wcy5vbkRpc21pc3N9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0SW5pdGlhbEZvY3VzXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInhMYXJnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDEyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogRm9udFdlaWdodHMucmVndWxhcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5oZWFkbGluZX1cclxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPFRleHQ+e3Byb3BzLmNvbnRlbnR9PC9UZXh0PlxyXG4gICAgICAgICAgICAgICAgPC9DYWxsb3V0PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGUgfSBmcm9tIFwiLi4vRW51bXMvTmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlVHlwZSB9IGZyb20gXCIuLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGFnZVR5cGVcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhZ2UgfSBmcm9tIFwiLi4vTW9kZWxzL05ldHdvcmtPcmRlclN0YWdlXCI7XHJcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSBcIi4vUG9wdXBcIjtcclxuXHJcbi8qKiBSZWFjdCBGdW5jdGlvbmFsIENvbXBvbmVudCByZXByZXNlbnRpbmcgYSBTaW5nbGUgXCJOZXR3b3JrIE9yZGVyIFN0YWdlXCIuICovXHJcbmV4cG9ydCBjb25zdCBOZXR3b3JrT3JkZXJTdGFnZUNvbXBvbmVudDogUmVhY3QuRkM8eyBuZXR3b3JrT3JkZXJTdGFnZTogTmV0d29ya09yZGVyU3RhZ2UgfT4gPSAoe1xyXG4gICAgbmV0d29ya09yZGVyU3RhZ2UsXHJcbn0pID0+IHtcclxuICAgIGNvbnN0IFtzaG91bGRTaG93UG9wdXAsIHNldFNob3VsZFNob3dQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcclxuICAgIGNvbnN0IGluc3RhbGxNZXNzYWdlID0gKGluc3RhbGxUeXBlOiBzdHJpbmcpID0+XHJcbiAgICAgICAgbmV0d29ya09yZGVyU3RhZ2UuYmlzdGVjaF9kYXRlZnJvbVxyXG4gICAgICAgICAgICA/IGBUaGUgJHtpbnN0YWxsVHlwZX0gaGFzIGJlZW4gc2NoZWR1bGVkIGZvciAke25ldyBEYXRlKFxyXG4gICAgICAgICAgICAgICAgICBuZXR3b3JrT3JkZXJTdGFnZS5iaXN0ZWNoX2RhdGVmcm9tXHJcbiAgICAgICAgICAgICAgKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1HQlwiKX0uIFxyXG4gICAgICAgICAgICAgIFBsZWFzZSBlbnN1cmUgYWNjZXNzIGlzIGF2YWlsYWJsZSBhbmQgdGhhdCBzb21lb25lIGlzIGFibGUgdG8gcmVjZWl2ZSB0aGUgZW5naW5lZXIuIFxyXG4gICAgICAgICAgICAgIElmIHRoaXMgZGF0ZSBpcyBub3Qgc3VpdGFibGUsIHBsZWFzZSBjb21tZW50IG9uIHRoZSBOZXR3b3JrIE9yZGVyIGJlbG93IGFuZCB3ZSBzaGFsbCBjb250YWN0IHRoZSBDYXJyaWVyIHRvIGZpbmQgYW4gYWx0ZXJuYXRpdmUgc3VpdGFibGUgZGF0ZS5gXHJcbiAgICAgICAgICAgIDogYFRoZSBJbnN0YWxsYXRpb24gRGF0ZSBpcyBhcyB5ZXQgdW5kZWNpZGVkLCBtb3JlIGluZm9ybWF0aW9uIHdpbGwgYmUgcHJvdmlkZWQgYXMgc29vbiBhcyB0aGUgZGF0ZSBpcyBjb25maXJtZWQuYDtcclxuXHJcbiAgICBjb25zdCBzdGFnZU1hcHBpbmdzOiB7IHN0YWdlVHlwZTogTmV0d29ya09yZGVyU3RhZ2VUeXBlOyB0aXRsZTogc3RyaW5nOyBkZXNjcmlwdGlvbjogc3RyaW5nIH1bXSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHN0YWdlVHlwZTogTmV0d29ya09yZGVyU3RhZ2VUeXBlW1wiT3JkZXIgUGxhY2VkXCJdLFxyXG4gICAgICAgICAgICB0aXRsZTogXCJZb3VyIE5ldHdvcmsgT3JkZXIgaGFzIGJlZW4gcGxhY2VkXCIsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQSBOZXR3b3JrIE9yZGVyIGhhcyBiZWVuIHBsYWNlZCwgVXBkYXRlcyByZWdhcmRpbmcgdGhlIHByb2dyZXNzIG9mIHRoZSBPcmRlciB3aWxsIGJlIHByb3ZpZGVkIFxyXG4gICAgICAgICAgICAgICAgYXMgc3VwcGxpZWQgYnkgdGhlIENhcnJpZXIuYCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc3RhZ2VUeXBlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJTdXJ2ZXlcIl0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkEgU2l0ZSBTdXJ2ZXkgaXMgcmVxdWlyZWRcIixcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBUaGUgVmVuZG9yIGhhcyBjb25maXJtZWQgdGhhdCBhIFNpdGUgU3VydmV5IGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGZ1bGZpbCB0aGUgT3JkZXIuJHtcclxuICAgICAgICAgICAgICAgIG5ldHdvcmtPcmRlclN0YWdlLmJpc3RlY2hfZGF0ZWZyb21cclxuICAgICAgICAgICAgICAgICAgICA/IGAgVGhlIFN1cnZleSBoYXMgYmVlbiBzY2hlZHVsZWQgZm9yICR7bmV3IERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya09yZGVyU3RhZ2UuYmlzdGVjaF9kYXRlZnJvbVxyXG4gICAgICAgICAgICAgICAgICAgICAgKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1HQlwiKX0uYFxyXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxyXG4gICAgICAgICAgICB9YCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc3RhZ2VUeXBlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJDaXZpbHMgV29ya1wiXSxcclxuICAgICAgICAgICAgdGl0bGU6IFwiQ2l2aWxzIFdvcmsgaXMgcmVxdWlyZWRcIixcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBDaXZpbCBXb3JrcyB0eXBpY2FsbHkgaW52b2x2ZSB0aGUgcHJlcGFyYXRpb24gb2YgcGh5c2ljYWwgaW5mcmFzdHJ1Y3R1cmUgc3VjaCBhcyB0cmVuY2hpbmcsIGNvbmR1aXQgaW5zdGFsbGF0aW9uLCBhbmQgXHJcbiAgICAgICAgICAgIGNhYmxlIHJvdXRpbmcgaW4gb3JkZXIgdG8gaW5zdGFsbCB0aGUgY29ubmVjdGlvbi4gQXMgYSByZXN1bHQsIENpdmlsIFdvcmtzIGNhbiB0YWtlIHRpbWUgdG8gY29tcGxldGUuYCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgc3RhZ2VUeXBlOiBOZXR3b3JrT3JkZXJTdGFnZVR5cGVbXCJXYXlsZWF2ZVwiXSxcclxuICAgICAgICAgICAgdGl0bGU6IFwiQSBXYXlsZWF2ZSBhcHByb3ZhbCBpcyByZXF1aXJlZFwiLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYFdheWxlYXZlcyBhcmUgdHlwaWNhbGx5IHJlcXVpcmVkIHdoZW4gdGhlIGluc3RhbGxhdGlvbiByZXF1aXJlcyBhY2Nlc3Mgb3ZlciBcclxuICAgICAgICAgICAgcHJpdmF0ZWx5IG93bmVkIHByb3BlcnRpZXMgb3IgYXJlYXMgd2l0aCBzcGVjaWZpYyBhY2Nlc3MgcmVzdHJpY3Rpb25zLiBBcyBhIHJlc3VsdCB0aGlzIFxyXG4gICAgICAgICAgICBwcm9jZXNzIGlzIGRlcGVuZGFudCB1cG9uIHRoZSBhcHByb3ZhbCBvZiB0aGUgV2F5bGVhdmUgYnkgdGhlIHJlbGV2YW50IGludGVyZXN0ZWQgcGFydGllcy5gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzdGFnZVR5cGU6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkZpYnJlIEluc3RhbGxcIl0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkEgRmlicmUgSW5zdGFsbCBpcyByZXF1aXJlZFwiLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaW5zdGFsbE1lc3NhZ2UoXCJGaWJyZSBJbnN0YWxsXCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzdGFnZVR5cGU6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkZpYnJlIFNwbGljaW5nXCJdLFxyXG4gICAgICAgICAgICB0aXRsZTogXCJBIEZpYnJlIFNwbGljZSBpcyByZXF1aXJlZFwiLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogaW5zdGFsbE1lc3NhZ2UoXCJGaWJyZSBTcGxpY2VcIiksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHN0YWdlVHlwZTogTmV0d29ya09yZGVyU3RhZ2VUeXBlW1wiRml0ICYgVGVzdFwiXSxcclxuICAgICAgICAgICAgdGl0bGU6IFwiQSBGaXQgYW5kIFRlc3QgaXMgcmVxdWlyZWRcIixcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGluc3RhbGxNZXNzYWdlKFwiRml0IGFuZCBUZXN0XCIpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzdGFnZVR5cGU6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkNvbm5lY3Rpb24gSW5zdGFsbGVkXCJdLFxyXG4gICAgICAgICAgICB0aXRsZTogXCJZb3VyIENvbm5lY3Rpb24gaGFzIGJlZW4gSW5zdGFsbGVkXCIsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgSWYgdGhlcmUgYXJlIGFueSBpc3N1ZXMgd2l0aCB0aGlzIGluc3RhbGxhdGlvbiwgcGxlYXNlIGNvbnRhY3QgdXMgb24gMDEyMDIgMzMgMjIgMDAgb3IgbGVhdmUgYSBjb21tZW50IG9uIHRoZSB0aW1lbGluZSBiZWxvdy5gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBzdGFnZVR5cGU6IE5ldHdvcmtPcmRlclN0YWdlVHlwZVtcIkNvbW1zQ2FyZSBTaXRlIFZpc2l0XCJdLFxyXG4gICAgICAgICAgICB0aXRsZTogXCJBIENvbW1zQ2FyZSBTaXRlIFZpc2l0IGlzIHJlcXVpcmVkXCIsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQSBDb21tc0NhcmUgU2l0ZSBWaXNpdCBpcyByZXF1aXJlZC5gLFxyXG4gICAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImNhcmRcIlxyXG4gICAgICAgICAgICByZWY9e3JlZn1cclxuICAgICAgICAgICAgZGF0YS1jYXJkLXN0YXR1cz17bmV0d29ya09yZGVyU3RhZ2Uuc3RhdHVzY29kZX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2hvdWxkU2hvd1BvcHVwKCFzaG91bGRTaG93UG9wdXApfVxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY2lyY2xlXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtc3RhZ2UtdHlwZT17TmV0d29ya09yZGVyU3RhZ2VUeXBlW25ldHdvcmtPcmRlclN0YWdlLmJpc3RlY2hfc3RhZ2VdfVxyXG4gICAgICAgICAgICAgICAgZGF0YS1jYXJkLXN0YXR1cz17TmV0d29ya09yZGVyU3RhZ2VTdGF0dXNDb2RlW25ldHdvcmtPcmRlclN0YWdlLnN0YXR1c2NvZGVdfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlY3RcIiBkYXRhLWNhcmQtc3RhdHVzPXtOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGVbbmV0d29ya09yZGVyU3RhZ2Uuc3RhdHVzY29kZV19PlxyXG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInN0YWdlLXRpdGxlXCI+e05ldHdvcmtPcmRlclN0YWdlVHlwZVtuZXR3b3JrT3JkZXJTdGFnZS5iaXN0ZWNoX3N0YWdlXX08L2gzPlxyXG4gICAgICAgICAgICAgICAge25ldHdvcmtPcmRlclN0YWdlLmJpc3RlY2hfZGF0ZWZyb20gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJzdGFnZS1kYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtuZXcgRGF0ZShuZXR3b3JrT3JkZXJTdGFnZS5iaXN0ZWNoX2RhdGVmcm9tKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1HQlwiKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHtyZWYgJiYgKFxyXG4gICAgICAgICAgICAgICAgPFBvcHVwXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlTWFwcGluZ3MuZmluZCgoc3RhZ2UpID0+IHN0YWdlLnN0YWdlVHlwZSA9PT0gbmV0d29ya09yZGVyU3RhZ2UuYmlzdGVjaF9zdGFnZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZGVzY3JpcHRpb24gfHwgXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBoZWFkbGluZT17YCR7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlTWFwcGluZ3MuZmluZCgoc3RhZ2UpID0+IHN0YWdlLnN0YWdlVHlwZSA9PT0gbmV0d29ya09yZGVyU3RhZ2UuYmlzdGVjaF9zdGFnZSk/LnRpdGxlIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtPcmRlclN0YWdlVHlwZVtuZXR3b3JrT3JkZXJTdGFnZS5iaXN0ZWNoX3N0YWdlXVxyXG4gICAgICAgICAgICAgICAgICAgIH0gLSAke05ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZVtuZXR3b3JrT3JkZXJTdGFnZS5zdGF0dXNjb2RlXX1gfVxyXG4gICAgICAgICAgICAgICAgICAgIGlzVmlzaWJsZT17c2hvdWxkU2hvd1BvcHVwfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uRGlzbWlzcz17KCkgPT4gc2V0U2hvdWxkU2hvd1BvcHVwKGZhbHNlKX1cclxuICAgICAgICAgICAgICAgICAgICByZWZFbGVtZW50PXtyZWYuY3VycmVudH1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgU3dpcGVEaXJlY3Rpb24gPSBcImhvcml6b250YWwtbGVmdFwiIHwgXCJob3Jpem9udGFsLXJpZ2h0XCI7XHJcblxyXG4vKiogQ2xhc3MgdGhhdCBhZGRzIHRvdWNoIGhhbmRsaW5nIHRvIHRvdWNoIHNjcmVlbiBnZXN0dXJlcyAqL1xyXG5leHBvcnQgY29uc3QgdXNlU3dpcGVMaXN0ZW5lciA9IChwcm9wczoge1xyXG4gICAgcmVmOiBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD47XHJcbiAgICBvblN3aXBlOiAoZGlyZWN0aW9uOiBTd2lwZURpcmVjdGlvbikgPT4gdm9pZDtcclxufSkgPT4ge1xyXG4gICAgLyoqICBNaW5pbXVtIGRpc3RhbmNlIGluIHBpeGVscyB0byBjb25zdGl0dXRlIGEgc3dpcGUgKi9cclxuICAgIGNvbnN0IFRPVUNIX1RIUkVTSE9MRCA9IDE1O1xyXG5cclxuICAgIGNvbnN0IHsgcmVmLCBvblN3aXBlIH0gPSBwcm9wcztcclxuXHJcbiAgICAvKiogSW5mb3JtYXRpb24gZm9yIHRoZSBzdGFydCBvZiBhbiBvbmdvaW5nIHRvdWNoIGV2ZW50LCBpZiBhbnkgKi9cclxuICAgIGNvbnN0IFtzdGFydFRvdWNoLCBzZXRTdGFydFRvdWNoXSA9IHVzZVN0YXRlPFRvdWNoIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoIXJlZi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG9uVG91Y2hTdGFydCA9IChldmVudDogVG91Y2hFdmVudCkgPT4gc2V0U3RhcnRUb3VjaChldmVudC5jaGFuZ2VkVG91Y2hlc1swXSk7XHJcblxyXG4gICAgICAgIGNvbnN0IG9uVG91Y2hFbmQgPSAoZXZlbnQ6IFRvdWNoRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0VG91Y2ggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIHRoZSBzdGFydFRvdWNoIHRvIGJlIG5vbi1udWxsIGFzIGEgJ3RvdWNoZW5kJyBldmVudCBoYWQgb2NjdXJyZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGVuZFRvdWNoID0gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgICAgICAgICAgIGNvbnN0IHhEaXN0YW5jZSA9IGVuZFRvdWNoLnBhZ2VYIC0gc3RhcnRUb3VjaC5wYWdlWDtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBzd2lwZSB3YXMgb25seSB2ZXJ0aWNhbCAoeSBkaXJlY3Rpb24pXHJcbiAgICAgICAgICAgIGlmICh4RGlzdGFuY2UgPT09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgc3dpcGVcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3dpcGVJc0JpZ0Vub3VnaCA9IE1hdGguYWJzKHhEaXN0YW5jZSkgPiBUT1VDSF9USFJFU0hPTEQ7XHJcblxyXG4gICAgICAgICAgICAvLyBJZiB0aGUgc3dpcGUgZGlzdGFuY2Ugd2FzIGJlbG93IHRoZSB0aHJlc2hvbGRcclxuICAgICAgICAgICAgaWYgKCFzd2lwZUlzQmlnRW5vdWdoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIHN3aXBlXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHlEaXN0YW5jZSA9IGVuZFRvdWNoLnBhZ2VZIC0gc3RhcnRUb3VjaC5wYWdlWTtcclxuICAgICAgICAgICAgY29uc3Qgc3dpcGVJc0hvcml6b250YWxFbm91Z2ggPSBNYXRoLmFicyh5RGlzdGFuY2UgLyB4RGlzdGFuY2UpIDwgMC41O1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIGFuZ2xlIG9mIHRoZSBzd2lwZSB3YXMgbW9yZSB2ZXJ0aWNhbCAoeSBkaXJlY3Rpb24pIHRoYW4gaG9yaXpvbnRhbCAoeCBkaXJlY3Rpb24pXHJcbiAgICAgICAgICAgIGlmICghc3dpcGVJc0hvcml6b250YWxFbm91Z2gpIHtcclxuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgc3dpcGVcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBzd2lwZSBkaXJlY3Rpb25cclxuICAgICAgICAgICAgY29uc3QgZGV0ZWN0ZWRTd2lwZURpcmVjdGlvbjogU3dpcGVEaXJlY3Rpb24gPSB4RGlzdGFuY2UgPCAwID8gXCJob3Jpem9udGFsLWxlZnRcIiA6IFwiaG9yaXpvbnRhbC1yaWdodFwiO1xyXG4gICAgICAgICAgICBvblN3aXBlKGRldGVjdGVkU3dpcGVEaXJlY3Rpb24pO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVzZXQgdGhlICdzdGFydFRvdWNoJ1xyXG4gICAgICAgICAgICBzZXRTdGFydFRvdWNoKG51bGwpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJlZi5jdXJyZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaHN0YXJ0XCIsIG9uVG91Y2hTdGFydCk7XHJcbiAgICAgICAgcmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoZW5kXCIsIG9uVG91Y2hFbmQpO1xyXG5cclxuICAgICAgICBjb25zdCByZWZDdXJyZW50ID0gcmVmLmN1cnJlbnQ7XHJcblxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJlZkN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIiwgb25Ub3VjaFN0YXJ0KTtcclxuICAgICAgICAgICAgcmVmQ3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIiwgb25Ub3VjaEVuZCk7XHJcbiAgICAgICAgfTtcclxuICAgIH0sIFtyZWYsIG9uU3dpcGUsIHN0YXJ0VG91Y2hdKTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuLyoqIEFuaW1hdGVzIGEgUmVhY3QgRnVuY3Rpb25hbCBDb21wb25lbnQgaW4gYSBnaXZlbiBkaXJlY3Rpb24uICovXHJcbmV4cG9ydCBjb25zdCBBbmltYXRlOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBKU1guRWxlbWVudDsgb246IHN0cmluZzsgc3dpcGVEaXJlY3Rpb246IFwibGVmdFwiIHwgXCJyaWdodFwiIHwgbnVsbCB9PiA9ICh7XHJcbiAgICBjaGlsZHJlbixcclxuICAgIG9uLFxyXG4gICAgc3dpcGVEaXJlY3Rpb24sXHJcbn0pID0+IHtcclxuICAgIHJldHVybiBvbiA9PT0gdW5kZWZpbmVkID8gKFxyXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgaGVpZ2h0OiBcIjEwMCVcIiB9fT57Y2hpbGRyZW59PC9kaXY+XHJcbiAgICApIDogKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmFkZS1pblwiIHN0eWxlPXt7IGhlaWdodDogXCIxMDAlXCIgfX0ga2V5PXtvbn0gZGF0YS1zd2lwZS1kaXJlY3Rpb249e3N3aXBlRGlyZWN0aW9ufT5cclxuICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgRmFDaXJjbGUgfSBmcm9tIFwicmVhY3QtaWNvbnMvZmFcIjtcclxuaW1wb3J0IHsgU3dpcGVEaXJlY3Rpb24sIHVzZVN3aXBlTGlzdGVuZXIgfSBmcm9tIFwiLi4vSG9va3MvdXNlU3dpcGVMaXN0ZW5lclwiO1xyXG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEFuaW1hdGUgfSBmcm9tIFwiLi9BbmltYXRlXCI7XHJcblxyXG4vKiogUmVhY3QgRnVuY3Rpb25hbCBDb21wb25lbnQgUmVwcmVzZW50aW5nIGEgTW9iaWxlIFBob25lIENhcm91c2VsLiAqL1xyXG5leHBvcnQgY29uc3QgTW9iaWxlQ2Fyb3VzZWw6IFJlYWN0LkZDPHtcclxuICAgIGl0ZW1zOiBKU1guRWxlbWVudFtdO1xyXG4gICAgY3VycmVudEluZGV4OiBudW1iZXI7XHJcbiAgICB1cGRhdGVJbmRleDogKG5ld1ZhbHVlOiBudW1iZXIpID0+IHZvaWQ7XHJcbn0+ID0gKHsgaXRlbXMsIGN1cnJlbnRJbmRleCwgdXBkYXRlSW5kZXggfSkgPT4ge1xyXG4gICAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XHJcbiAgICBjb25zdCBbc3dpcGVEaXJlY3Rpb24sIHNldFN3aXBlRGlyZWN0aW9uXSA9IHVzZVN0YXRlPFwicmlnaHRcIiB8IFwibGVmdFwiIHwgbnVsbD4obnVsbCk7XHJcblxyXG4gICAgLyoqIEhhbmRsZXMgc3dpcGluZyBvZiB0aGUgTW9iaWxlIENhcm91c2VsLiAqL1xyXG4gICAgdXNlU3dpcGVMaXN0ZW5lcih7XHJcbiAgICAgICAgcmVmLFxyXG4gICAgICAgIG9uU3dpcGU6IChkaXJlY3Rpb246IFN3aXBlRGlyZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yaWdodFwiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHNldFN3aXBlRGlyZWN0aW9uKFwicmlnaHRcIik7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVJbmRleChjdXJyZW50SW5kZXggLSAxKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLWxlZnRcIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCArIDEgPT09IGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBzZXRTd2lwZURpcmVjdGlvbihcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVJbmRleChjdXJyZW50SW5kZXggKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvKiogSGFuZGxlcyB0aGUgdXBkYXRlIG9mIHRoZSBpbmRleCBhbmQgc2V0cyB0aGUgZGlyZWN0aW9uIGFjY29yZGluZ2x5LiAqL1xyXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tVcGRhdGUgPSAobmV3SW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChuZXdJbmRleCA8IGN1cnJlbnRJbmRleCkge1xyXG4gICAgICAgICAgICBzZXRTd2lwZURpcmVjdGlvbihcInJpZ2h0XCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNldFN3aXBlRGlyZWN0aW9uKFwibGVmdFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdXBkYXRlSW5kZXgobmV3SW5kZXgpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2Fyb3VzZWxcIiByZWY9e3JlZn0+XHJcbiAgICAgICAgICAgICAgICA8QW5pbWF0ZSBvbj17Y3VycmVudEluZGV4LnRvU3RyaW5nKCl9IHN3aXBlRGlyZWN0aW9uPXtzd2lwZURpcmVjdGlvbn0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW1zW2N1cnJlbnRJbmRleF19XHJcbiAgICAgICAgICAgICAgICA8L0FuaW1hdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNlbGVjdGlvbi16b25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW1zLm1hcCgoXywgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPEZhQ2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e2luZGV4ID09PSBjdXJyZW50SW5kZXggPyBcImJsYWNrXCIgOiBcImdyYXlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUNsaWNrVXBkYXRlKGluZGV4KX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBTdHJpbmdGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9TdHJpbmdGaWVsZFwiO1xyXG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL0ZpZWxkcy9Mb29rdXBGaWVsZFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgQ29udGFjdFN0YXRlQ29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9Db250YWN0U3RhdGVDb2RlXCI7XHJcbmltcG9ydCB7IEZhVXNlciB9IGZyb20gXCJyZWFjdC1pY29ucy9mYVwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uLy4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyRm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uLy4uL01vZGVscy9OZXR3b3JrT3JkZXJGb3JSZXRyaWV2YWxcIjtcclxuaW1wb3J0IHsgVGltZWxpbmUgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9UaW1lbGluZVwiO1xyXG5pbXBvcnQgeyBQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsIH0gZnJvbSBcIi4uLy4uL01vZGVscy9Qb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsXCI7XHJcbmltcG9ydCB7IHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuLi8uLi9Ib29rcy91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyU3RhdHVzQ29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGF0dXNDb2RlXCI7XHJcbmltcG9ydCB7IExvYWRpbmdEYXRhIH0gZnJvbSBcIi4uLy4uL0RlZmF1bHRSb290U3RhdGVcIjtcclxuaW1wb3J0IHsgQnV0dG9uSW5mb3JtYXRpb24gfSBmcm9tIFwiLi4vLi4vVHlwZXMvQnV0dG9uSW5mb3JtYXRpb25cIjtcclxuaW1wb3J0IHsgQ2FsbFRvQWN0aW9uSW5mb3JtYXRpb24gfSBmcm9tIFwiLi4vLi4vVHlwZXMvQ2FsbFRvQWN0aW9uSW5mb3JtYXRpb25cIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdXNlQXBwSW5zaWdodHMgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgQ2FsbFRvQWN0aW9uQmFzZVBhZ2UgfSBmcm9tIFwiLi4vQ2FsbFRvQWN0aW9uQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgU3VibWlzc2lvblN0YXRlIH0gZnJvbSBcIi4uLy4uL1R5cGVzL1N1Ym1pc3Npb25TdGF0ZVwiO1xyXG5pbXBvcnQgeyB0b1BhcnRpYWxEaWZmIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvdG9QYXJ0aWFsRGlmZlwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJTdGFnZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9Db21wb25lbnRzL05ldHdvcmtPcmRlclN0YWdlQ29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZSB9IGZyb20gXCIuLi8uLi9FbnVtcy9OZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgTW9iaWxlQ2Fyb3VzZWwgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Nb2JpbGVDYXJvdXNlbFwiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZVdpbmRvd1dpZHRoIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZVdpbmRvd1dpZHRoXCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclVwZGF0ZSB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvTmV0d29ya09yZGVyRm9yVXBkYXRlXCI7XHJcblxyXG4vKiBDb21wb25lbnQgY29udGFpbmluZyB0aGUgRWRpdCBOZXR3b3JrIE9yZGVycyBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBOZXR3b3JrT3JkZXJzRWRpdENvbnRlbnQgPSAocHJvcHM6IHtcclxuICAgIGluaXRpYWxOZXR3b3JrT3JkZXI6IE5ldHdvcmtPcmRlckZvclJldHJpZXZhbDtcclxuICAgIG9uU2F2ZTogKCkgPT4gdm9pZDtcclxufSkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudGx5U2VsZWN0ZWROZXR3b3JrT3JkZXIgPSBwcm9wcy5pbml0aWFsTmV0d29ya09yZGVyO1xyXG4gICAgY29uc3QgbmV0d29ya09yZGVyU3RhZ2VzID0gY3VycmVudGx5U2VsZWN0ZWROZXR3b3JrT3JkZXIuYmlzdGVjaF9iaXN0ZWNoX25ldHdvcmtvcmRlcnN0YWdlX25ldHdvcmtvcmRlcl9iaTtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG5cclxuICAgIGNvbnN0IG5ldHdvcmtPcmRlcnMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLm5ldHdvcmtPcmRlcnMpO1xyXG4gICAgY29uc3QgY29udGFjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmNvbnRhY3RzKTtcclxuICAgIGNvbnN0IG9yZGVycyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUub3JkZXJzKTtcclxuICAgIGNvbnN0IGN1c3RvbWVyQXNzZXRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jdXN0b21lckFzc2V0cyk7XHJcbiAgICBjb25zdCBhY2NvdW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuYWNjb3VudHMpO1xyXG4gICAgY29uc3QgW2xpbmVXaWR0aCwgc2V0TGluZVdpZHRoXSA9IHVzZVN0YXRlPG51bWJlcj4oMCk7XHJcbiAgICBjb25zdCB7IHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YSwgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgY29uc3QgcmVsYXRlZE9yZGVyID1cclxuICAgICAgICBvcmRlcnMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIlxyXG4gICAgICAgICAgICA/IG9yZGVycy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgIChvcmRlcikgPT4gb3JkZXIuc2FsZXNvcmRlcmlkID09PSBjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlci5fYmlzdGVjaF9zYWxlc29yZGVyX3ZhbHVlXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCByZWxhdGVkQ3VzdG9tZXJBc3NldCA9XHJcbiAgICAgICAgY3VzdG9tZXJBc3NldHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIlxyXG4gICAgICAgICAgICA/IGN1c3RvbWVyQXNzZXRzLmRhdGEuZmluZChcclxuICAgICAgICAgICAgICAgICAgKGN1c3RvbWVyQXNzZXQpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICBjdXN0b21lckFzc2V0Lm1zZHluX2N1c3RvbWVyYXNzZXRpZCA9PT0gY3VycmVudGx5U2VsZWN0ZWROZXR3b3JrT3JkZXIuX2Jpc3RlY2hfY3VzdG9tZXJhc3NldF92YWx1ZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3QgW3JlbGF0ZWRTaXRlLCBzZXRSZWxhdGVkU2l0ZV0gPSB1c2VTdGF0ZSh7IGFjY291bnRpZDogXCJcIiwgbmFtZTogXCJcIiB9KTtcclxuICAgIGNvbnN0IFtzZWxlY3RlZFN0YWdlLCBzZXRTZWxlY3RlZFN0YWdlXSA9IHVzZVN0YXRlPG51bWJlcj4obmV0d29ya09yZGVyU3RhZ2VzLmxlbmd0aCAtIDEpO1xyXG5cclxuICAgIGNvbnN0IFtuZXR3b3JrT3JkZXJUb1VwZGF0ZSwgc2V0TmV0d29ya09yZGVyXSA9IHVzZVN0YXRlPE5ldHdvcmtPcmRlckZvclVwZGF0ZT4oe1xyXG4gICAgICAgIF9iaXN0ZWNoX2NvbnRhY3RfdmFsdWU6IGN1cnJlbnRseVNlbGVjdGVkTmV0d29ya09yZGVyLl9iaXN0ZWNoX2NvbnRhY3RfdmFsdWUgPz8gXCJcIixcclxuICAgICAgICBzdGF0dXNjb2RlOiBjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlci5zdGF0dXNjb2RlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgW3BvcnRhbENvbW1lbnRzLCBzZXRQb3J0YWxDb21tZW50c10gPSB1c2VTdGF0ZTxQb3J0YWxDb21tZW50Rm9yUmV0cmlldmFsW10+KFxyXG4gICAgICAgIHByb3BzLmluaXRpYWxOZXR3b3JrT3JkZXIuYmlzdGVjaF9uZXR3b3Jrb3JkZXJfYWR4X3BvcnRhbGNvbW1lbnRzID8/IFtdXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IFtzdWJtaXNzaW9uU3RhdGUsIHNldFN1Ym1pc3Npb25TdGF0ZV0gPSB1c2VTdGF0ZTxTdWJtaXNzaW9uU3RhdGU+KHtcclxuICAgICAgICBzdGF0ZTogXCJpZGxlXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xyXG4gICAgY29uc3Qgd2luZG93V2lkdGggPSB1c2VXaW5kb3dXaWR0aCgpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gd2hpY2ggY29udHJvbHMgdGhlIGhhbmRsaW5nIG9mIGRhdGEgZ2VuZXJhdGlvbiBmb3IgdGhlIENhbGxUb0FjdGlvbkJhc2VQYWdlLlxyXG4gICAgICogQHJldHVybnMgQW4gb2JqZWN0IG9mIENhbGxUb0FjdGlvbkluZm9ybWF0aW9uIHdoaWNoIHJlcHJlc2VudHMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgQ2FsbFRvQWN0aW9uQmFzZVBhZ2UuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGdldENhbGxUb0FjdGlvbkluZm9ybWF0aW9uKCk6IExvYWRpbmdEYXRhPENhbGxUb0FjdGlvbkluZm9ybWF0aW9uPiB7XHJcbiAgICAgICAgY29uc3Qgc2hvd1JlcXVlc3RPcmRlckJ1dHRvbiA9IGN1cnJlbnRseVNlbGVjdGVkTmV0d29ya09yZGVyLnN0YXR1c2NvZGUgPT09IE5ldHdvcmtPcmRlclN0YXR1c0NvZGUuUGVuZGluZztcclxuXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdE9yZGVyQnV0dG9uOiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgbGFiZWw6IFwiUmVxdWVzdCBPcmRlclwiLFxyXG4gICAgICAgICAgICBoYXNNb2RhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChuZXR3b3JrT3JkZXJzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKHsgc3RhdGU6IFwic3VibWl0dGluZ1wiIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiRWRpdCBOZXR3b3JrIE9yZGVyIC0gQ2FsbC10by1BY3Rpb24gc3VibWl0dGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTmFtZTogXCJSZXF1ZXN0IE9yZGVyXCIsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWROZXR3b3JrT3JkZXI6IE5ldHdvcmtPcmRlckZvclJldHJpZXZhbCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZU5ldHdvcmtPcmRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5U2VsZWN0ZWROZXR3b3JrT3JkZXIuYmlzdGVjaF9uZXR3b3Jrb3JkZXJpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9QYXJ0aWFsRGlmZihjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlciwgbmV0d29ya09yZGVyVG9VcGRhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIkFkZE5vdGlmaWNhdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGFuayB5b3UsIHRoZSBPcmRlciB3aWxsIG5vdyBiZSBwbGFjZWQgYnkgb3VyIHRlYW0gZm9yIHRoZSBuZXh0IGF2YWlsYWJsZSBkYXRlLiBBIGNvbmZpcm1hdGlvbiBlbWFpbCB3aWxsIGJlIHNlbnQgb25jZSB0aGUgT3JkZXIgaGFzIGJlZW4gcGxhY2VkLlwiLFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZE9uUmVsYXRpdmVVcmw6IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0ke3dpbmRvdy5sb2NhdGlvbi5zZWFyY2h9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlVbnRpbDogRGF0ZUhlbHBlci5hZGRTZWNvbmRzKG5ldyBEYXRlKCksIDEwKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldE5ldHdvcmtPcmRlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya09yZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG5ldHdvcmtPcmRlcnMuZGF0YS5tYXAoKG8pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby5iaXN0ZWNoX25ldHdvcmtvcmRlcmlkID09PSBjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlci5iaXN0ZWNoX25ldHdvcmtvcmRlcmlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXBkYXRlZE5ldHdvcmtPcmRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRJc0RpcnR5XCIsIGlzRGlydHk6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrRXhjZXB0aW9uV2l0aEJpc3RlY2hNZXRhZGF0YT8uKGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJBZGRMYXRlc3RFcnJvclwiLCBlcnJvcjogZSBhcyBhbnkgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZSh7IHN0YXRlOiBcImlkbGVcIiB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zdCBjYWxsVG9BY3Rpb25EZXRhaWxzID0gZ2V0Q2FsbFRvQWN0aW9uRGV0YWlscygpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogY2FsbFRvQWN0aW9uRGV0YWlscz8udGl0bGUgPz8gXCJcIixcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBjYWxsVG9BY3Rpb25EZXRhaWxzPy5kZXNjcmlwdGlvbiA/PyBcIlwiLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogY2FsbFRvQWN0aW9uRGV0YWlscz8uaWNvbiA/PyBcIlwiLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogc2hvd1JlcXVlc3RPcmRlckJ1dHRvbiA/IFtyZXF1ZXN0T3JkZXJCdXR0b25dIDogW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgdGhlIGNhbGwgdG8gYWN0aW9uIGRldGFpbHMgYmFzZWQgb24gdGhlIE9yZGVyIHN0YXR1cy5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBvcmRlcnMubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIiB8fFxyXG4gICAgICAgICAgICBjdXN0b21lckFzc2V0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiIHx8XHJcbiAgICAgICAgICAgIGFjY291bnRzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmVsYXRlZFNpdGUgPSBhY2NvdW50cy5kYXRhLmZpbmQoXHJcbiAgICAgICAgICAgIChhY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRpZCA9PT0gcmVsYXRlZEN1c3RvbWVyQXNzZXQ/Ll9iaXN0ZWNoX3NpdGVfdmFsdWVcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocmVsYXRlZFNpdGUpIHtcclxuICAgICAgICAgICAgc2V0UmVsYXRlZFNpdGUocmVsYXRlZFNpdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlciwgb3JkZXJzXSk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBUaGUgd2lkdGggb2YgYSBzaW5nbGUgTmV0d29yayBPcmRlciBTdGFnZVxyXG4gICAgICAgIGNvbnN0IHN0YWdlV2lkdGggPSAxNzU7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgYWNjdW11bGF0ZWQgd2lkdGggb2YgdGhlIHN0YWdlcy5cclxuICAgICAgICBjb25zdCB0b3RhbFN0YWdlc1dpZHRoID0gc3RhZ2VXaWR0aCAqIG5ldHdvcmtPcmRlclN0YWdlcy5sZW5ndGg7XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgd2lkdGggb2YgdGhlIE5ldHdvcmsgT3JkZXIgU3RhZ2UgY29udGFpbmVyLlxyXG4gICAgICAgIGNvbnN0IG5ldHdvcmtPcmRlclN0YWdlc0NvbnRhaW5lcldpZHRoID0gcmVmLmN1cnJlbnQ/LmNsaWVudFdpZHRoO1xyXG5cclxuICAgICAgICBpZiAoIW5ldHdvcmtPcmRlclN0YWdlc0NvbnRhaW5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEdldCB0aGUgaW50ZW5kZWQgd2lkdGggb2YgdGhlIExpbmVzLlxyXG4gICAgICAgIGNvbnN0IGV2ZW5seURpc3RyaWJ1dGVkTGluZVdpZHRoID1cclxuICAgICAgICAgICAgKG5ldHdvcmtPcmRlclN0YWdlc0NvbnRhaW5lcldpZHRoIC0gdG90YWxTdGFnZXNXaWR0aCkgLyAobmV0d29ya09yZGVyU3RhZ2VzLmxlbmd0aCAtIDEpO1xyXG5cclxuICAgICAgICAvLyBJZiB0aGUgd2lkdGggaXMgc21hbGxlciB0aGFuIDMwLCBzZXQgdGhlIHdpZHRoIHRvIDMwIGFuZCByZWx5IG9uIHRoZSBvdmVyZmxvdy5cclxuICAgICAgICBzZXRMaW5lV2lkdGgoZXZlbmx5RGlzdHJpYnV0ZWRMaW5lV2lkdGggPD0gMzAgPyAzMCA6IGV2ZW5seURpc3RyaWJ1dGVkTGluZVdpZHRoKTtcclxuICAgIH0sIFt3aW5kb3dXaWR0aF0pO1xyXG5cclxuICAgIC8vIHJldHVybiB0aGUgY2FsbCB0byBhY3Rpb24gZGV0YWlscyBiYXNlZCBvbiB0aGUgT3JkZXIgc3RhdHVzLlxyXG4gICAgZnVuY3Rpb24gZ2V0Q2FsbFRvQWN0aW9uRGV0YWlscygpIHtcclxuICAgICAgICBzd2l0Y2ggKGN1cnJlbnRseVNlbGVjdGVkTmV0d29ya09yZGVyLnN0YXR1c2NvZGUpIHtcclxuICAgICAgICAgICAgY2FzZSBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlLlBlbmRpbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIlBlbmRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgT3JkZXIgZm9yIHRoZSBDb25uZWN0aW9uIGhhcyB5ZXQgdG8gYmUgcGxhY2VkLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL25ldHdvcmtvcmRlci1jYWxsLXRvLWFjdGlvbi1wZW5kaW5nLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgTmV0d29ya09yZGVyU3RhdHVzQ29kZVtcIlJlYWR5IFRvIE9yZGVyXCJdOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJQcm9jZXNzaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIE9yZGVyIGZvciB0aGUgQ29ubmVjdGlvbiBpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIEJpc3RlY2ggVGVhbS5cIixcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9uZXR3b3Jrb3JkZXItY2FsbC10by1hY3Rpb24tcHJvY2Vzc2luZy5zdmdcIixcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYXNlIE5ldHdvcmtPcmRlclN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXTpcclxuICAgICAgICAgICAgY2FzZSBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlLlJlamVjdGVkOlxyXG4gICAgICAgICAgICBjYXNlIE5ldHdvcmtPcmRlclN0YXR1c0NvZGUuRGVsYXllZDpcclxuICAgICAgICAgICAgY2FzZSBOZXR3b3JrT3JkZXJTdGF0dXNDb2RlLkNvbmZpcm1lZDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwiSW4gUHJvZ3Jlc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgT3JkZXIgaXMgaW4gcHJvZ3Jlc3Mgd2l0aCB0aGUgQ2Fycmllci4gVXBkYXRlcyB3aWxsIGJlIHByb3ZpZGVkIGFzIGFwcHJvcHJpYXRlLlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246IFwiL25ldHdvcmtvcmRlci1jYWxsLXRvLWFjdGlvbi1pbi1wcm9ncmVzcy5zdmdcIixcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBjYXNlIE5ldHdvcmtPcmRlclN0YXR1c0NvZGUuQ29tcGxldGVkOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCJGdWxmaWxsZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJUaGUgT3JkZXIgZm9yIHRoZSBDb25uZWN0aW9uIGhhcyBiZWVuIGZ1bGZpbGxlZCBieSB0aGUgQ2Fycmllci5cIixcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBcIi9uZXR3b3Jrb3JkZXItY2FsbC10by1hY3Rpb24tZnVsZmlsbGVkLnN2Z1wiLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8Q2FsbFRvQWN0aW9uQmFzZVBhZ2VcclxuICAgICAgICAgICAgdGl0bGU9eyhyZWxhdGVkT3JkZXI/Lm9yZGVybnVtYmVyID8/IFwiXCIpICsgYCAtIGAgKyBjdXJyZW50bHlTZWxlY3RlZE5ldHdvcmtPcmRlcj8uYmlzdGVjaF9uYW1lID8/IFwiXCJ9XHJcbiAgICAgICAgICAgIHRhZ3M9e1tdfVxyXG4gICAgICAgICAgICBjYWxsVG9BY3Rpb25JbmZvcm1hdGlvbj17Z2V0Q2FsbFRvQWN0aW9uSW5mb3JtYXRpb24oKX1cclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlPXtzZXRTdWJtaXNzaW9uU3RhdGV9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzc05hbWU9XCJlZGl0LW5ldHdvcmtvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICB7bmV0d29ya09yZGVyU3RhZ2VzLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXR3b3JrLW9yZGVyLXN0YWdlLWluZm9cIiBrZXk9e2xpbmVXaWR0aH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXR3b3JrLW9yZGVyLXN0YWdlLWNvbnRhaW5lclwiIHJlZj17cmVmfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXR3b3JrLW9yZGVyLXN0YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1suLi5uZXR3b3JrT3JkZXJTdGFnZXNdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhLmJpc3RlY2hfc3RhZ2UgLSBiLmJpc3RlY2hfc3RhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKG5vcywgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luZGV4ICE9PSAwICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxiLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtY2FyZC1zdGF0dXM9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHdvcmtPcmRlclN0YWdlU3RhdHVzQ29kZVtub3Muc3RhdHVzY29kZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGAke2xpbmVXaWR0aH1weGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOZXR3b3JrT3JkZXJTdGFnZUNvbXBvbmVudCBuZXR3b3JrT3JkZXJTdGFnZT17bm9zfSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXRlc3QtbmV0d29yay1vcmRlci1zdGFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRTdGFnZSArIDEgIT09IG5ldHdvcmtPcmRlclN0YWdlcy5sZW5ndGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGBDdXJyZW50IFN0YWdlICgke3NlbGVjdGVkU3RhZ2UgKyAxfS9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bmV0d29ya09yZGVyU3RhZ2VzLmxlbmd0aH0pYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYExhdGVzdCBTdGFnZWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNb2JpbGVDYXJvdXNlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM9e1suLi5uZXR3b3JrT3JkZXJTdGFnZXNdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhLmJpc3RlY2hfc3RhZ2UgLSBiLmJpc3RlY2hfc3RhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgobm9zKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOZXR3b3JrT3JkZXJTdGFnZUNvbXBvbmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtub3MuYmlzdGVjaF9uZXR3b3Jrb3JkZXJzdGFnZWlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya09yZGVyU3RhZ2U9e25vc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleD17c2VsZWN0ZWRTdGFnZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUluZGV4PXtzZXRTZWxlY3RlZFN0YWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnZW5lcmFsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImhlYWRpbmdcIj5JbmZvcm1hdGlvbjwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkNvbm5lY3Rpb24gVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1zZHluX2N1c3RvbWVyYXNzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJUaGUgdHlwZSBvZiBjb25uZWN0aW9uIG9uIHRoZSBOZXR3b3JrIE9yZGVyLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3JlbGF0ZWRDdXN0b21lckFzc2V0Py5tc2R5bl9uYW1lID8/IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkluc3RhbGxhdGlvbiBTaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibXNkeW5fY3VzdG9tZXJhc3NldHNpdGVuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwiVGhlIG5hbWUgb2YgdGhlIHNpdGUgd2hlcmUgdGhlIGNvbm5lY3Rpb24gaXMgYmVpbmcgaW5zdGFsbGVkLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3JlbGF0ZWRTaXRlPy5uYW1lID8/IFwiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IHJlcXVpcmVkOiBmYWxzZSwgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TG9va3VwRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiX3ByaW1hcnljb250YWN0aWRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUHJpbWFyeSBDb250YWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbklkPXtuZXR3b3JrT3JkZXJUb1VwZGF0ZS5fYmlzdGVjaF9jb250YWN0X3ZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9ezw+VGhlIG5vbWluYXRlZCBDb250YWN0IHRvIHJlY2VpdmUgQ2FzZSByZWxhdGVkIGNvcnJlc3BvbmRlbmNlLjwvPn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWxPcHRpb25zTmFtZT1cIkFjdGl2ZSBDb250YWN0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29udGFjdHMuZGF0YS5tYXAoKGNvbnRhY3QpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGNvbnRhY3QuY29udGFjdGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBbY29udGFjdC5maXJzdG5hbWUsIGNvbnRhY3QubGFzdG5hbWVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlUZXh0OiBjb250YWN0LmVtYWlsYWRkcmVzczEgPz8gXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BpY2thYmxlOiBjb250YWN0LnN0YXRlY29kZSA9PT0gQ29udGFjdFN0YXRlQ29kZVtcIkFjdGl2ZVwiXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkT3B0aW9uSWQ9eyhfYmlzdGVjaF9jb250YWN0X3ZhbHVlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXROZXR3b3JrT3JkZXIoeyAuLi5uZXR3b3JrT3JkZXJUb1VwZGF0ZSwgX2Jpc3RlY2hfY29udGFjdF92YWx1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbkNhcmRJbmZvPXsoc2VsZWN0ZWRPcHRpb24pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IDxGYVVzZXIgLz4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlUZXh0OiBzZWxlY3RlZE9wdGlvbi5wcmltYXJ5VGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5VGV4dDogc2VsZWN0ZWRPcHRpb24uc2Vjb25kYXJ5VGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSm9iIFRpdGxlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uLmNvbnRhY3Quam9idGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVGVsZXBob25lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uLmNvbnRhY3QudGVsZXBob25lMSB8fCBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1vYmlsZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzZWxlY3RlZE9wdGlvbi5jb250YWN0Lm1vYmlsZXBob25lIHx8IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUGVybWlzc2lvbiBMZXZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBCYXNlUGVybWlzc2lvbkxldmVsW3NlbGVjdGVkT3B0aW9uLmNvbnRhY3QuYmlzdGVjaF9wZXJtaXNzaW9ubGV2ZWwhXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgcGxhY2Vob2xkZXI6IFwiU2VsZWN0IGEgQ29udGFjdFwiLCBkaXNhYmxlZDogZmFsc2UgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VGltZWxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbnRpdHk9e3Byb3BzLmluaXRpYWxOZXR3b3JrT3JkZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXROdW1iZXI9e3Byb3BzLmluaXRpYWxOZXR3b3JrT3JkZXIuYmlzdGVjaF9uZXR3b3Jrb3JkZXJpZH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbW1lbnRzPXtwb3J0YWxDb21tZW50c31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEVtYWlscz17cHJvcHMuaW5pdGlhbE5ldHdvcmtPcmRlci5iaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX3BvcnRhbGVtYWlscyA/PyBbXX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9ySW5jaWRlbnRVcGRhdGVzPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5pbml0aWFsTmV0d29ya09yZGVyLmJpc3RlY2hfbmV0d29ya29yZGVyX2Jpc3RlY2hfbWFqb3JpbmNpZGVudHVwZGF0ZXMgPz8gW11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBvcnRhbENvbW1lbnRzPXtzZXRQb3J0YWxDb21tZW50c31cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eUlkPXtwcm9wcy5pbml0aWFsTmV0d29ya09yZGVyLmJpc3RlY2hfbmV0d29ya29yZGVyaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvQ2FsbFRvQWN0aW9uQmFzZVBhZ2U+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgTG9hZGluZ0RhdGEgfSBmcm9tIFwiLi4vLi4vRGVmYXVsdFJvb3RTdGF0ZVwiO1xyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZURhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0hvb2tzL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5vdEZvdW5kIH0gZnJvbSBcIi4uL05vdEZvdW5kXCI7XHJcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyIH0gZnJvbSBcIi4uLy4uL0NvbXBvbmVudHMvTG9hZGluZ1NwaW5uZXJcIjtcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tIFwiLi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyc0VkaXRDb250ZW50IH0gZnJvbSBcIi4vTmV0d29ya09yZGVyc0VkaXRDb250ZW50XCI7XHJcbmltcG9ydCB7IE5ldHdvcmtPcmRlckZvclJldHJpZXZhbCB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvTmV0d29ya09yZGVyRm9yUmV0cmlldmFsXCI7XHJcblxyXG4vKiogV3JhcHBlciBmb3IgdGhlIEVkaXQgTmV0d29yayBPcmRlcnMgcGFnZSAqL1xyXG5leHBvcnQgY29uc3QgTmV0d29ya09yZGVyc0VkaXRGcm9tSWQgPSAocHJvcHM6IHsgbmV0d29ya29yZGVyaWQ6IHN0cmluZyB9KSA9PiB7XHJcbiAgICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCBuZXR3b3JrT3JkZXJzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5uZXR3b3JrT3JkZXJzKTtcclxuICAgIGNvbnN0IFtzYXZlS2V5LCBzZXRTYXZlS2V5XSA9IHVzZVN0YXRlKDEpO1xyXG4gICAgY29uc3QgW3JldHJpZXZlZE5ldHdvcmtPcmRlciwgc2V0UmV0cmlldmVkTmV0d29ya09yZGVyXSA9IHVzZVN0YXRlPFxyXG4gICAgICAgIExvYWRpbmdEYXRhPE5ldHdvcmtPcmRlckZvclJldHJpZXZhbD4gfCB7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiOyBlcnJvcjogRXJyb3IgfVxyXG4gICAgPih7XHJcbiAgICAgICAgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBzZXRSZXRyaWV2ZWROZXR3b3JrT3JkZXIoeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSk7XHJcbiAgICB9LCBbbmV0d29ya09yZGVycywgc2F2ZUtleV0pO1xyXG5cclxuICAgIGNvbnN0IGluaXRpYWxOZXR3b3JrT3JkZXI6IExvYWRpbmdEYXRhPE5ldHdvcmtPcmRlckZvclJldHJpZXZhbD4gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgcmV0cmlldmFsIGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZFxyXG4gICAgICAgIGlmIChyZXRyaWV2ZWROZXR3b3JrT3JkZXIubG9hZGluZ1N0YXR1cyA9PT0gXCJub3Qtc3RhcnRlZFwiKSB7XHJcbiAgICAgICAgICAgIHNldFJldHJpZXZlZE5ldHdvcmtPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gUmV0cmlldmUgdGhlIE5ldHdvcmsgT3JkZXIgc3BlY2lmaWNhbGx5IChlLmcuIHRoZSBOZXR3b3JrIE9yZGVyIG1heSBoYXZlIGJlZW4gcmVjZW50bHkgdXBkYXRlZClcclxuICAgICAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5yZXRyaWV2ZU5ldHdvcmtPcmRlcihwcm9wcy5uZXR3b3Jrb3JkZXJpZClcclxuICAgICAgICAgICAgICAgIC50aGVuKChuZXR3b3JrT3JkZXIpID0+IHNldFJldHJpZXZlZE5ldHdvcmtPcmRlcih7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IG5ldHdvcmtPcmRlciB9KSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0UmV0cmlldmVkTmV0d29ya09yZGVyKHsgbG9hZGluZ1N0YXR1czogXCJlcnJvcmVkXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmV0cmlldmVkTmV0d29ya09yZGVyLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogcmV0cmlldmVkTmV0d29ya09yZGVyLmRhdGEgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChuZXR3b3JrT3JkZXJzLmxvYWRpbmdTdGF0dXMgIT09IFwibG9hZGVkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG1hdGNoaW5nT3JkZXIgPSBuZXR3b3JrT3JkZXJzLmRhdGEuZmluZChcclxuICAgICAgICAgICAgKG5ldHdvcmtPcmRlcikgPT4gbmV0d29ya09yZGVyLmJpc3RlY2hfbmV0d29ya29yZGVyaWQgPT09IHByb3BzLm5ldHdvcmtvcmRlcmlkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYSBtYXRjaGluZyBhY3RpdmUgT3JkZXIgd2FzIGZvdW5kXHJcbiAgICAgICAgaWYgKG1hdGNoaW5nT3JkZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4ubWF0Y2hpbmdPcmRlcixcclxuICAgICAgICAgICAgICAgICAgICBiaXN0ZWNoX2Jpc3RlY2hfbmV0d29ya29yZGVyc3RhZ2VfbmV0d29ya29yZGVyX2JpOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcl9hZHhfcG9ydGFsY29tbWVudHM6IFtdLFxyXG4gICAgICAgICAgICAgICAgICAgIGJpc3RlY2hfbmV0d29ya29yZGVyX2Jpc3RlY2hfcG9ydGFsZW1haWxzOiBbXSxcclxuICAgICAgICAgICAgICAgICAgICBiaXN0ZWNoX25ldHdvcmtvcmRlcl9iaXN0ZWNoX21ham9yaW5jaWRlbnR1cGRhdGVzOiBbXSxcclxuICAgICAgICAgICAgICAgIH0gYXMgTmV0d29ya09yZGVyRm9yUmV0cmlldmFsLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfTtcclxuICAgIH0sIFtuZXR3b3JrT3JkZXJzLCByZXRyaWV2ZWROZXR3b3JrT3JkZXIsIGRhdGFTZXJ2aWNlLCBwcm9wcy5uZXR3b3Jrb3JkZXJpZCwgZGlzcGF0Y2hdKTtcclxuXHJcbiAgICBpZiAocmV0cmlldmVkTmV0d29ya09yZGVyLmxvYWRpbmdTdGF0dXMgPT09IFwiZXJyb3JlZFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIDxOb3RGb3VuZCB0eXBlPVwicmVjb3JkLW5vdC1mb3VuZFwiIHNpbmd1bGFyRW50aXR5TmFtZT1cIk9yZGVyXCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGluaXRpYWxOZXR3b3JrT3JkZXIubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxOZXR3b3JrT3JkZXJzRWRpdENvbnRlbnRcclxuICAgICAgICAgICAgaW5pdGlhbE5ldHdvcmtPcmRlcj17aW5pdGlhbE5ldHdvcmtPcmRlci5kYXRhfVxyXG4gICAgICAgICAgICBvblNhdmU9eygpID0+IHNldFNhdmVLZXkoc2F2ZUtleSArIDEpfVxyXG4gICAgICAgIC8+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBOZXR3b3JrT3JkZXJzRWRpdEZyb21JZCB9IGZyb20gXCIuL05ldHdvcmtPcmRlcnNFZGl0RnJvbUlkXCI7XHJcblxyXG4vKiogV3JhcHBlciBmb3IgdGhlIEVkaXQgTmV0d29yayBPcmRlciBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBOZXR3b3JrT3JkZXJzRWRpdCA9ICgpID0+IHtcclxuICAgIGNvbnN0IFtzZWFyY2hQYXJhbXNdID0gdXNlU2VhcmNoUGFyYW1zKCk7XHJcblxyXG4gICAgY29uc3QgSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FID0gXCJuZXR3b3Jrb3JkZXJJZFwiO1xyXG4gICAgY29uc3QgbmV0d29ya09yZGVySWQgPSBzZWFyY2hQYXJhbXMuZ2V0KElEX1FVRVJZX1NUUklOR19QQVJBTUVURVJfTkFNRSk7XHJcblxyXG4gICAgaWYgKCFuZXR3b3JrT3JkZXJJZCkge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgc2luZ3VsYXJFbnRpdHlOYW1lPVwiTmV0d29yayBPcmRlclwiIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxOZXR3b3JrT3JkZXJzRWRpdEZyb21JZCBuZXR3b3Jrb3JkZXJpZD17bmV0d29ya09yZGVySWR9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyBJbnZvaWNlVGFibGVIZWFkZXJDZWxsIH0gZnJvbSBcIi4uL1R5cGVzL1RhYmxlSGVhZGVyQ2VsbHMvSW52b2ljZVRhYmxlSGVhZGVyQ2VsbFwiO1xyXG5cclxuLyoqIERlc2NyaXB0aW9uIG9mIHRoZSB0YWJsZSBoZWFkZXIgY2VsbHMgdG8gZGlzcGxheSBpbiB0aGUgSW52b2ljZXMgVGFibGUuICovXHJcbmV4cG9ydCBjb25zdCBnZXRJbnZvaWNlVGFibGVIZWFkZXJDZWxscyA9ICgpOiBJbnZvaWNlVGFibGVIZWFkZXJDZWxsW10gPT4ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiSW52b2ljZSBJRFwiLFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IFwiaW52b2ljZW51bWJlclwiLFxyXG4gICAgICAgICAgICBpc1NvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogMSxcclxuICAgICAgICAgICAgY29sdW1uSGVhZGVyOiBcIlBheW1lbnQgTWV0aG9kXCIsXHJcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJiaXN0ZWNoX3BheW1lbnRtZXRob2Rjb2RlXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGlkOiAyLFxyXG4gICAgICAgICAgICBjb2x1bW5IZWFkZXI6IFwiRHVlIERhdGVcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcImR1ZWRhdGVcIixcclxuICAgICAgICAgICAgaXNTb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IDMsXHJcbiAgICAgICAgICAgIGNvbHVtbkhlYWRlcjogXCJJbnZvaWNlIERhdGVcIixcclxuICAgICAgICAgICAgZmllbGROYW1lOiBcIm1zZHluX2ludm9pY2VkYXRlXCIsXHJcbiAgICAgICAgICAgIGlzU29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgfVxyXG4gICAgXTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlVXNlck1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGwgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9UYWJsZUhlYWRlckNlbGxcIjtcclxuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gXCIuLi9IZWxwZXJzL0RhdGVIZWxwZXJcIjtcclxuaW1wb3J0IHsgdG9Mb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9IZWxwZXJzL3RvTG9hZGluZ0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0SW52b2ljZVRhYmxlSGVhZGVyQ2VsbHMgfSBmcm9tIFwiLi4vRGF0YS9nZXRJbnZvaWNlVGFibGVIZWFkZXJDZWxsc1wiO1xyXG5pbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IEludm9pY2UgfSBmcm9tIFwiLi4vTW9kZWxzL0ludm9pY2VcIjtcclxuaW1wb3J0IHsgTWFuYWdlbWVudFBhbmVsIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvTWFuYWdlbWVudFBhbmVsXCI7XHJcbmltcG9ydCB7IEZvcm1hdHRpbmdIZWxwZXIgfSBmcm9tIFwiLi4vSGVscGVycy9Gb3JtYXR0aW5nSGVscGVyXCI7XHJcbmltcG9ydCB7IExpbmsgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRXJyb3JCb3VuZGFyeVwiO1xyXG5cclxuLyogQ29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIEludm9pY2VzIFBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IEludm9pY2VzOiBSZWFjdC5GQyA9ICgpID0+IHtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgaW52b2ljZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmludm9pY2VzKTtcclxuICAgIGNvbnN0IFtzb3J0ZWRDb2x1bW4sIHNldFNvcnRlZENvbHVtbl0gPSB1c2VTdGF0ZTxrZXlvZiBJbnZvaWNlPihcImR1ZWRhdGVcIik7XHJcbiAgICBjb25zdCBbaXNTb3J0ZWRBc2NlbmRpbmcsIHNldElzU29ydGVkQXNjZW5kaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIGNvbnN0IFtzZWFyY2hCYXJDb250ZW50LCBzZXRTZWFyY2hCYXJDb250ZW50XSA9IHVzZVN0YXRlPHN0cmluZz4oXCJcIik7XHJcblxyXG4gICAgLy8gRW5zdXJlIHRoZSBVc2VyIE1ldGFkYXRhIGlzIHBvcHVsYXRlZC5cclxuICAgIGlmICghdXNlck1ldGFkYXRhLmFjY291bnRJZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgXFxgdXNlck1ldGFkYXRhLmFjY291bnRJZFxcYCB0byBiZSBwb3B1bGF0ZWRgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBHZXQgdGhlIEludm9pY2UgVGFibGUgSGVhZGVyIENlbGxzLlxyXG4gICAgY29uc3QgaGVhZGVyQ2VsbHMgPSBnZXRJbnZvaWNlVGFibGVIZWFkZXJDZWxscygpO1xyXG5cclxuICAgIC8vIEdldCB0aGUgYXBwbGljYWJsZSBjb2x1bW4gaGVhZGVyIGZvciB0aGUgZ2l2ZW4gZmllbGQgbmFtZS5cclxuICAgIGNvbnN0IGdldENvbHVtbkhlYWRlciA9IChmaWVsZE5hbWU6IGtleW9mIEludm9pY2UpID0+XHJcbiAgICAgICAgaGVhZGVyQ2VsbHMuZmluZCgoaGVhZGVyQ2VsbCkgPT4gaGVhZGVyQ2VsbC5maWVsZE5hbWUgPT09IGZpZWxkTmFtZSk/LmNvbHVtbkhlYWRlcjtcclxuXHJcbiAgICAvLyBDb252ZXJ0cyB0aGUgc29ydGVkIEludm9pY2VzIGludG8gYSBMb2FkaW5nRGF0YTxJbnZvaWNlW10+IG9iamVjdC5cclxuICAgIGNvbnN0IGFzU29ydGVkTG9hZGluZ0RhdGEgPSAoc29ydGVkRGF0YTogSW52b2ljZVtdKTogTG9hZGluZ0RhdGE8SW52b2ljZVtdPiA9PiB7XHJcbiAgICAgICAgaWYgKGlzU29ydGVkQXNjZW5kaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IHNvcnRlZERhdGEgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGE6IHNvcnRlZERhdGEucmV2ZXJzZSgpIH07XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFNvcnQgdGhlIEludm9pY2VzIGJ5IHRoZSBhcHBsaWNhYmxlIGNvbHVtbiB3aGVuIHRoZSBkYXRhIGNoYW5nZXMsIGl0IGlzIHNlbGVjdGVkIG9yIHRoZSBzb3J0IG9yZGVyIGNoYW5nZXMuXHJcbiAgICBjb25zdCBzb3J0ZWRJbnZvaWNlczogTG9hZGluZ0RhdGE8SW52b2ljZVtdPiA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChpbnZvaWNlcy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IGludm9pY2VzLmxvYWRpbmdTdGF0dXMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHNsaWNlZEludm9pY2VEYXRhID0gaW52b2ljZXMuZGF0YS5zbGljZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gYXNTb3J0ZWRMb2FkaW5nRGF0YShcclxuICAgICAgICAgICAgc2xpY2VkSW52b2ljZURhdGEuc29ydCgoaW52b2ljZUEsIGludm9pY2VCKSA9PlxyXG4gICAgICAgICAgICAgICAgKGludm9pY2VBW3NvcnRlZENvbHVtbl0/LnRvU3RyaW5nKCkgPz8gXCJcIikubG9jYWxlQ29tcGFyZShpbnZvaWNlQltzb3J0ZWRDb2x1bW5dPy50b1N0cmluZygpID8/IFwiXCIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfSwgW2ludm9pY2VzLCBzb3J0ZWRDb2x1bW4sIGlzU29ydGVkQXNjZW5kaW5nXSk7XHJcblxyXG4gICAgLy8gRmlsdGVyIHRoZSBJbnZvaWNlcyBieSB0aGUgU2VhcmNoIEJhciBjb250ZW50IGFuZCB0aGUgYXBwbGljYWJsZSBTdGF0dXMgZmlsdGVycy5cclxuICAgIGNvbnN0IGludm9pY2VzVG9EaXNwbGF5ID0gdG9Mb2FkaW5nRGF0YShzb3J0ZWRJbnZvaWNlcywgKGludm9pY2VzKSA9PlxyXG4gICAgICAgIGludm9pY2VzXHJcbiAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBTZWFyY2ggQmFyIGZpbHRlci5cclxuICAgICAgICAgICAgLmZpbHRlcigoaW52b2ljZXMpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhpbnZvaWNlcykuc29tZSgoW18sIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHZhbHVlPy50b1N0cmluZygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFZhbHVlPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoQmFyQ29udGVudC50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIkludm9pY2VzXCI+XHJcbiAgICAgICAgICAgIDxNYW5hZ2VtZW50UGFuZWxcclxuICAgICAgICAgICAgICAgIHNldFNlYXJjaEJhckNvbnRlbnQ9e3NldFNlYXJjaEJhckNvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJHcm91cHM9e251bGx9XHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlclRleHQ9XCJTZWFyY2ggYnkgSW52b2ljZSBJRFwiXHJcbiAgICAgICAgICAgICAgICBnZXRTdW1tYXJ5U2VjdGlvbnM9eygpID0+IFtdfVxyXG4gICAgICAgICAgICAgICAgZmlsdGVyc1RvRGlzcGxheT17W119XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHtpbnZvaWNlc1RvRGlzcGxheS5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiID8gKFxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgICkgOiBpbnZvaWNlc1RvRGlzcGxheS5kYXRhLmxlbmd0aCA9PT0gMCA/IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm8tcmVzdWx0cy1tZXNzYWdlXCI+VGhlcmUgYXJlIG5vIEludm9pY2VzIHRvIGRpc3BsYXkuPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwiZW50aXR5bGlzdCBpbnZvaWNlcy10YWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRlckNlbGxzLm1hcCgoY2VsbCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUhlYWRlckNlbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtjZWxsLmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXI9e2NlbGwuY29sdW1uSGVhZGVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU9e2NlbGwuZmllbGROYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0aW5nUHJvcHM9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRpbmdFbmFibGVkOiBjZWxsLmlzU29ydGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRDb2x1bW46IHNvcnRlZENvbHVtbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNvcnRlZENvbHVtbjogKCkgPT4gc2V0U29ydGVkQ29sdW1uKGNlbGwuZmllbGROYW1lKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU29ydGVkQXNjZW5kaW5nOiBpc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzU29ydGVkQXNjZW5kaW5nOiBzZXRJc1NvcnRlZEFzY2VuZGluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbnZvaWNlc1RvRGlzcGxheS5kYXRhLm1hcCgoaW52b2ljZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeSBrZXk9e2ludm9pY2UuaW52b2ljZWlkfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGtleT17aW52b2ljZS5pbnZvaWNlaWR9IGRhdGEtaWQ9e2ludm9pY2UuaW52b2ljZWlkfSBkYXRhLWVudGl0eT1cImludm9pY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImludm9pY2UtaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpbnZvaWNlLmludm9pY2VudW1iZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1oZWFkaW5nLXRpdGxlPXtnZXRDb2x1bW5IZWFkZXIoXCJpbnZvaWNlbnVtYmVyXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW52b2ljZS5pbnZvaWNlbnVtYmVyfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bz17YHZpZXc/aW52b2ljZWlkPSR7aW52b2ljZS5pbnZvaWNlaWR9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnZvaWNlLmludm9pY2VudW1iZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImludm9pY2UtcGF5bWVudC1tZXRob2RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwiYmlzdGVjaF9wYXltZW50bWV0aG9kY29kZVwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Rm9ybWF0dGluZ0hlbHBlci5nZXRQYXltZW50TWV0aG9kQ29kZVN0cmluZyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2ljZS5iaXN0ZWNoX3BheW1lbnRtZXRob2Rjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnZvaWNlLWR1ZS1kYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWhlYWRpbmctdGl0bGU9e2dldENvbHVtbkhlYWRlcihcImR1ZWRhdGVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ludm9pY2UuZHVlZGF0ZSA/IERhdGVIZWxwZXIudG9EYXRlT25seVN0cmluZyhpbnZvaWNlLmR1ZWRhdGUpIDogXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbnZvaWNlLWRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtaGVhZGluZy10aXRsZT17Z2V0Q29sdW1uSGVhZGVyKFwibXNkeW5faW52b2ljZWRhdGVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ludm9pY2UubXNkeW5faW52b2ljZWRhdGUgPyBEYXRlSGVscGVyLnRvRGF0ZU9ubHlTdHJpbmcoaW52b2ljZS5tc2R5bl9pbnZvaWNlZGF0ZSkgOiBcIlwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgdXNlU2VsZWN0b3IsIERlZmF1bHRSb290U3RhdGUgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgU3RyaW5nRmllbGQgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9GaWVsZHMvU3RyaW5nRmllbGRcIjtcclxuaW1wb3J0IHsgRm9ybWF0dGluZ0hlbHBlciB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0Zvcm1hdHRpbmdIZWxwZXJcIjtcclxuaW1wb3J0IHsgSW52b2ljZSB9IGZyb20gXCIuLi8uLi9Nb2RlbHMvSW52b2ljZVwiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIi4uLy4uL01vZGVscy9BY2NvdW50XCI7XHJcbmltcG9ydCB7IEJhc2VQYWdlIH0gZnJvbSBcIi4uL0Jhc2VQYWdlXCI7XHJcbmltcG9ydCB7IEFubm90YXRpb24gfSBmcm9tIFwiLi4vLi4vTW9kZWxzL0Fubm90YXRpb25cIjtcclxuXHJcbi8qIENvbXBvbmVudCBjb250YWluaW5nIHRoZSBWaWV3IEludm9pY2UgcGFnZSAqL1xyXG5leHBvcnQgY29uc3QgSW52b2ljZXNWaWV3Q29udGVudCA9ICh7IGluaXRpYWxJbnZvaWNlIH06IHsgaW5pdGlhbEludm9pY2U6IEludm9pY2UgfSkgPT4ge1xyXG4gICAgY29uc3QgYWNjb3VudHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmFjY291bnRzKTtcclxuICAgIGNvbnN0IHJlbGF0ZWRBY2NvdW50OiBBY2NvdW50IHwgdW5kZWZpbmVkID1cclxuICAgICAgICBhY2NvdW50cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiXHJcbiAgICAgICAgICAgID8gYWNjb3VudHMuZGF0YS5maW5kKChhY2NvdW50OiBBY2NvdW50KSA9PiBhY2NvdW50LmFjY291bnRpZCA9PT0gaW5pdGlhbEludm9pY2UuX2N1c3RvbWVyaWRfdmFsdWUpXHJcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xyXG5cclxuICAgIC8vIEdldCB0aGUgbGF0ZXN0IGFubm90YXRpb24gd2hpY2ggY29udGFpbnMgYSBkb2N1bWVudCBib2R5IGZvciB0aGUgaW52b2ljZVxyXG4gICAgY29uc3QgbGF0ZXN0QW5ub3RhdGlvbjogQW5ub3RhdGlvbiB8IHVuZGVmaW5lZCA9IGluaXRpYWxJbnZvaWNlLkludm9pY2VfQW5ub3RhdGlvbi5maWx0ZXIoXHJcbiAgICAgICAgKGFubm90YXRpb24pID0+IGFubm90YXRpb24uZG9jdW1lbnRib2R5ICYmIGFubm90YXRpb24ubWltZXR5cGUgPT09IFwiYXBwbGljYXRpb24vcGRmXCJcclxuICAgICkuc29ydCgoYTogQW5ub3RhdGlvbiwgYjogQW5ub3RhdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiBEYXRlLnBhcnNlKGEubW9kaWZpZWRvbiA/PyBcIlwiKSAtIERhdGUucGFyc2UoYi5tb2RpZmllZG9uID8/IFwiXCIpO1xyXG4gICAgfSlbMF07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8QmFzZVBhZ2UgdGl0bGU9e2luaXRpYWxJbnZvaWNlPy5pbnZvaWNlbnVtYmVyID8/IFwiXCJ9PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInZpZXctaW52b2ljZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdlbmVyYWwtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImhlYWRpbmdcIj5JbmZvcm1hdGlvbjwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkludm9pY2UgSURcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJpbnZvaWNlLWlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2luaXRpYWxJbnZvaWNlLmludm9pY2VudW1iZXIgPz8gXCJcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyBkaXNhYmxlZDogdHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRHVlIERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkdWUtZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbEludm9pY2UuZHVlZGF0ZSA/IERhdGVIZWxwZXIudG9EYXRlT25seVN0cmluZyhpbml0aWFsSW52b2ljZS5kdWVkYXRlKSA6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRHcm91cD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbElucHV0UHJvcHM9e3sgZGlzYWJsZWQ6IHRydWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RyaW5nRmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIlBheW1lbnQgTWV0aG9kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwicGF5bWVudC1tZXRob2RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB7fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRpbmdIZWxwZXIuZ2V0UGF5bWVudE1ldGhvZENvZGVTdHJpbmcoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsSW52b2ljZS5iaXN0ZWNoX3BheW1lbnRtZXRob2Rjb2RlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZEdyb3VwPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsSW5wdXRQcm9wcz17eyBkaXNhYmxlZDogdHJ1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdHJpbmdGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiSW52b2ljZSBEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaW52b2ljZS1kYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4ge319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsSW52b2ljZS5tc2R5bl9pbnZvaWNlZGF0ZSA/IERhdGVIZWxwZXIudG9EYXRlT25seVN0cmluZyhpbml0aWFsSW52b2ljZS5tc2R5bl9pbnZvaWNlZGF0ZSkgOiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkR3JvdXA9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbnB1dFByb3BzPXt7IGRpc2FibGVkOiB0cnVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xhdGVzdEFubm90YXRpb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW52b2ljZS1saW5rXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtgZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCR7bGF0ZXN0QW5ub3RhdGlvbiEuZG9jdW1lbnRib2R5fWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZD17bGF0ZXN0QW5ub3RhdGlvbiEuZmlsZW5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkb3dubG9hZC1pbnZvaWNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWQgSW52b2ljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge2xhdGVzdEFubm90YXRpb24gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlmcmFtZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBtaW5IZWlnaHQ6IFwiMTAwJVwiLCB3aWR0aDogXCIxMDAlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2BkYXRhOmFwcGxpY2F0aW9uL3BkZjtiYXNlNjQsJHtsYXRlc3RBbm5vdGF0aW9uIS5kb2N1bWVudGJvZHl9YH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0Z1bGxTY3JlZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBkYXRhPXtgZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCR7bGF0ZXN0QW5ub3RhdGlvbiEuZG9jdW1lbnRib2R5fWB9Pjwvb2JqZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9CYXNlUGFnZT5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBMb2FkaW5nRGF0YSB9IGZyb20gXCIuLi8uLi9EZWZhdWx0Um9vdFN0YXRlXCI7XHJcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vSG9va3MvdXNlRGF0YVNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi4vTm90Rm91bmRcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gXCIuLi9CYXNlUGFnZVwiO1xyXG5pbXBvcnQgeyBJbnZvaWNlIH0gZnJvbSBcIi4uLy4uL01vZGVscy9JbnZvaWNlXCI7XHJcbmltcG9ydCB7IEludm9pY2VzVmlld0NvbnRlbnQgfSBmcm9tIFwiLi9JbnZvaWNlc1ZpZXdDb250ZW50XCI7XHJcblxyXG4vKiogV3JhcHBlciBmb3IgdGhlIFZpZXcgSW52b2ljZSBwYWdlICovXHJcbmV4cG9ydCBjb25zdCBJbnZvaWNlc1ZpZXdGcm9tSWQgPSAocHJvcHM6IHsgaW52b2ljZWlkOiBzdHJpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xyXG4gICAgY29uc3QgZGF0YVNlcnZpY2UgPSB1c2VEYXRhU2VydmljZSgpO1xyXG4gICAgY29uc3QgaW52b2ljZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmludm9pY2VzKTtcclxuICAgIGNvbnN0IFtyZXRyaWV2ZWRJbnZvaWNlLCBzZXRSZXRyaWV2ZWRJbnZvaWNlXSA9IHVzZVN0YXRlPFxyXG4gICAgICAgIExvYWRpbmdEYXRhPEludm9pY2U+IHwgeyBsb2FkaW5nU3RhdHVzOiBcImVycm9yZWRcIjsgZXJyb3I6IEVycm9yIH1cclxuICAgID4oe1xyXG4gICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIixcclxuICAgIH0pO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgc2V0UmV0cmlldmVkSW52b2ljZSh7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9KTtcclxuICAgIH0sIFtpbnZvaWNlc10pO1xyXG5cclxuICAgIGNvbnN0IGluaXRpYWxJbnZvaWNlOiBMb2FkaW5nRGF0YTxJbnZvaWNlPiA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIC8vIElmIHRoZSByZXRyaWV2YWwgaGFzIG5vdCB5ZXQgYmVlbiBzdGFydGVkXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZEludm9pY2UubG9hZGluZ1N0YXR1cyA9PT0gXCJub3Qtc3RhcnRlZFwiKSB7XHJcbiAgICAgICAgICAgIHNldFJldHJpZXZlZEludm9pY2UoeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHJpZXZlIHRoZSBJbnZvaWNlIHNwZWNpZmljYWxseSAoZS5nLiB0aGUgSW52b2ljZSBtYXkgaGF2ZSBiZWVuIHJlY2VudGx5IHVwZGF0ZWQpXHJcbiAgICAgICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAucmV0cmlldmVJbnZvaWNlKHByb3BzLmludm9pY2VpZClcclxuICAgICAgICAgICAgICAgIC50aGVuKChpbnZvaWNlKSA9PiBzZXRSZXRyaWV2ZWRJbnZvaWNlKHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YTogaW52b2ljZSB9KSlcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0UmV0cmlldmVkSW52b2ljZSh7IGxvYWRpbmdTdGF0dXM6IFwiZXJyb3JlZFwiLCBlcnJvciB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJldHJpZXZlZEludm9pY2UubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiByZXRyaWV2ZWRJbnZvaWNlLmRhdGEgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpbnZvaWNlcy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtYXRjaGluZ0ludm9pY2UgPSBpbnZvaWNlcy5kYXRhLmZpbmQoKGludm9pY2UpID0+IGludm9pY2UuaW52b2ljZWlkID09PSBwcm9wcy5pbnZvaWNlaWQpO1xyXG5cclxuICAgICAgICAvLyBJZiBhIG1hdGNoaW5nIGFjdGl2ZSBJbnZvaWNlIHdhcyBmb3VuZFxyXG4gICAgICAgIGlmIChtYXRjaGluZ0ludm9pY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBtYXRjaGluZ0ludm9pY2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9O1xyXG4gICAgfSwgW2ludm9pY2VzLCByZXRyaWV2ZWRJbnZvaWNlLCBkYXRhU2VydmljZSwgcHJvcHMuaW52b2ljZWlkLCBkaXNwYXRjaF0pO1xyXG5cclxuICAgIGlmIChyZXRyaWV2ZWRJbnZvaWNlLmxvYWRpbmdTdGF0dXMgPT09IFwiZXJyb3JlZFwiKSB7XHJcbiAgICAgICAgcmV0dXJuIDxOb3RGb3VuZCB0eXBlPVwicmVjb3JkLW5vdC1mb3VuZFwiIHNpbmd1bGFyRW50aXR5TmFtZT1cIkludm9pY2VcIiAvPjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5pdGlhbEludm9pY2UubG9hZGluZ1N0YXR1cyAhPT0gXCJsb2FkZWRcIikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCYXNlUGFnZSB0aXRsZT1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XHJcbiAgICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gPEludm9pY2VzVmlld0NvbnRlbnQgaW5pdGlhbEludm9pY2U9e2luaXRpYWxJbnZvaWNlLmRhdGF9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VTZWFyY2hQYXJhbXMgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyBOb3RGb3VuZCB9IGZyb20gXCIuLi9Ob3RGb3VuZFwiO1xyXG5pbXBvcnQgeyBJbnZvaWNlc1ZpZXdGcm9tSWQgfSBmcm9tIFwiLi9JbnZvaWNlc1ZpZXdGcm9tSWRcIjtcclxuXHJcbi8qKiBXcmFwcGVyIGZvciB0aGUgVmlldyBJbnZvaWNlIHBhZ2UgKi9cclxuZXhwb3J0IGNvbnN0IEludm9pY2VzVmlldyA9ICgpID0+IHtcclxuICAgIGNvbnN0IFtzZWFyY2hQYXJhbXNdID0gdXNlU2VhcmNoUGFyYW1zKCk7XHJcblxyXG4gICAgY29uc3QgSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FID0gXCJpbnZvaWNlaWRcIjtcclxuICAgIGNvbnN0IGludm9pY2VpZCA9IHNlYXJjaFBhcmFtcy5nZXQoSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FKTtcclxuXHJcbiAgICBpZiAoIWludm9pY2VpZCkge1xyXG4gICAgICAgIHJldHVybiA8Tm90Rm91bmQgc2luZ3VsYXJFbnRpdHlOYW1lPVwiSW52b2ljZVwiIHR5cGU9XCJyZWNvcmQtbm90LWZvdW5kXCIgLz47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDxJbnZvaWNlc1ZpZXdGcm9tSWQgaW52b2ljZWlkPXtpbnZvaWNlaWR9IC8+O1xyXG59O1xyXG4iLCJpbXBvcnQgeyBSb3V0ZXMsIFJvdXRlLCB1c2VMb2NhdGlvbiB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCB7IENhc2VzIH0gZnJvbSBcIi4uL1BhZ2VzL0Nhc2VzXCI7XHJcbmltcG9ydCB7IENhc2VzQ2xvc2VkIH0gZnJvbSBcIi4uL1BhZ2VzL0Nhc2VzQ2xvc2VkXCI7XHJcbmltcG9ydCB7IENhc2VzQ3JlYXRlIH0gZnJvbSBcIi4uL1BhZ2VzL0Nhc2VzQ3JlYXRlXCI7XHJcbmltcG9ydCB7IENvbnRhY3RzIH0gZnJvbSBcIi4uL1BhZ2VzL0NvbnRhY3RzXCI7XHJcbmltcG9ydCB7IENhc2VzTWFqb3JJbmNpZGVudHMgfSBmcm9tIFwiLi4vUGFnZXMvQ2FzZXNNYWpvckluY2lkZW50c1wiO1xyXG5pbXBvcnQgeyBDb250YWN0c0NyZWF0ZSB9IGZyb20gXCIuLi9QYWdlcy9Db250YWN0c0NyZWF0ZVwiO1xyXG5pbXBvcnQgeyBDb250YWN0c0VkaXQgfSBmcm9tIFwiLi4vUGFnZXMvQ29udGFjdHNFZGl0L0NvbnRhY3RzRWRpdFwiO1xyXG5pbXBvcnQgeyBIb21lIH0gZnJvbSBcIi4uL1BhZ2VzL0hvbWVcIjtcclxuaW1wb3J0IHsgUHJvZmlsZSB9IGZyb20gXCIuLi9QYWdlcy9Qcm9maWxlXCI7XHJcbmltcG9ydCB7IFRlcm1zQW5kQ29uZGl0aW9ucyB9IGZyb20gXCIuLi9QYWdlcy9UZXJtc0FuZENvbmRpdGlvbnNcIjtcclxuaW1wb3J0IHsgTm90Rm91bmQgfSBmcm9tIFwiLi4vUGFnZXMvTm90Rm91bmRcIjtcclxuaW1wb3J0IHsgRGV2TW9kZUxpbWl0YXRpb24gfSBmcm9tIFwiLi4vUGFnZXMvRGV2TW9kZUxpbWl0YXRpb25cIjtcclxuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERlZmF1bHRSb290U3RhdGUsIHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBCYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Jhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgRm9yYmlkZGVuIH0gZnJvbSBcIi4uL1BhZ2VzL0ZvcmJpZGRlblwiO1xyXG5pbXBvcnQgeyBVc2VyTWV0YWRhdGEsIHVzZVVzZXJNZXRhZGF0YSB9IGZyb20gXCIuL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9EaWFsb2dcIjtcclxuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gXCIuLi9Db21wb25lbnRzL0Vycm9yQm91bmRhcnlcIjtcclxuaW1wb3J0IHsgQ2FzZXNFZGl0IH0gZnJvbSBcIi4uL1BhZ2VzL0Nhc2VzRWRpdC9DYXNlc0VkaXRcIjtcclxuaW1wb3J0IHsgTG9hZGluZ1NwaW5uZXIgfSBmcm9tIFwiLi4vQ29tcG9uZW50cy9Mb2FkaW5nU3Bpbm5lclwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuL3VzZUFwcEluc2lnaHRzXCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcyB9IGZyb20gXCIuL3VzZUFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllc1wiO1xyXG5pbXBvcnQgeyBPcmRlcnMgfSBmcm9tIFwiLi4vUGFnZXMvT3JkZXJzXCI7XHJcbmltcG9ydCB7IE9yZGVyc0VkaXQgfSBmcm9tIFwiLi4vUGFnZXMvT3JkZXJzRWRpdC9PcmRlcnNFZGl0XCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvQ29udGFjdFBlcm1pc3Npb25MZXZlbFwiO1xyXG5pbXBvcnQgeyBDYXNlUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VQZXJtaXNzaW9uTGV2ZWxcIjtcclxuaW1wb3J0IHsgdXNlckhhc1BvcnRhbEFjY2VzcyB9IGZyb20gXCIuLi9IZWxwZXJzL3VzZXJIYXNQb3J0YWxBY2Nlc3NcIjtcclxuaW1wb3J0IHsgTmV0d29ya09yZGVyc0VkaXQgfSBmcm9tIFwiLi4vUGFnZXMvTmV0d29ya09yZGVyc0VkaXQvTmV0d29ya09yZGVyc0VkaXRcIjtcclxuaW1wb3J0IHsgaXNQcm9kdWN0aW9uIH0gZnJvbSBcIi4uL0NvbXBvbmVudHMvRW52aXJvbm1lbnRCYW5uZXJcIjtcclxuaW1wb3J0IHsgSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9JbnZvaWNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IEludm9pY2VzIH0gZnJvbSBcIi4uL1BhZ2VzL0ludm9pY2VzXCI7XHJcbmltcG9ydCB7IEludm9pY2VzVmlldyB9IGZyb20gXCIuLi9QYWdlcy9JbnZvaWNlc1ZpZXcvSW52b2ljZXNWaWV3XCI7XHJcblxyXG4vKiogRGVzY3JpYmVzIGEgcGFnZSBvbiB0aGUgUG9ydGFsICovXHJcbmV4cG9ydCB0eXBlIFBhZ2VJbmZvID0ge1xyXG4gICAgLyoqIFJlbGF0aXZlIHBhdGggbmFtZSBvZiB0aGUgcGFnZSBlLmcuIFwiL2NvbnRhY3RzXCIgKi9cclxuICAgIHBhdGg6IHN0cmluZztcclxuXHJcbiAgICAvKiogVXNlci1mYWNpbmcgbmFtZSBvZiB0aGUgcGFnZSAqL1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IFVzZXIgUm9sZSBmb3IgdGhlIHJlZ2FyZGluZyBwYWdlLlxyXG4gICAgICogRm9yIGV4YW1wbGU6IE9uIHRoZSBDYXNlcyBwYWdlLCB0aGUgdXNlciBzaG91bGQgYmUgaW5mb3JtZWQgb2YgdGhlaXIgQ2FzZSAnUGVybWlzc2lvbiBMZXZlbCcsIGJ1dCBmb3JcclxuICAgICAqIENhc2UgQ3JlYXRpb24sIGl0IHJlZ2FyZHMgdGhlaXIgQmFzZSAnUGVybWlzc2lvbiBMZXZlbCcuXHJcbiAgICAgKiBOT1RFOiBUaGlzIGNhbiBiZSB1c2VkIGluIHRoZSA8Yz5Gb3JiaWRkZW48L2M+IENvbXBvbmVudC5cclxuICAgICAqL1xyXG4gICAgZm9yYmlkZGVuUGFnZUVycm9yTWVzc2FnZT86ICh1c2VyTWV0YURhdGE6IFVzZXJNZXRhZGF0YSkgPT4gSlNYLkVsZW1lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRoZSB1c2VyIGlzIHBlcm1pdHRlZCB0byBuYXZpZ2F0ZSB0byB0aGUgcGFnZS5cclxuICAgICAqIE5PVEU6IFRoaXMgbWF5IGRldGVybWluZSB3aGV0aGVyIGEgbGluayB0byB0aGUgcGFnZSBpcyBzaG93biwgYW5kIHdoZXRoZXIgYW5cclxuICAgICAqIGVycm9yIHBhZ2UgaXMgc2hvd24gd2hlbiBuYXZpZ2F0ZWQgdG8uXHJcbiAgICAgKi9cclxuICAgIGlzUGVybWl0dGVkOiAodXNlck1ldGFkYXRhOiBVc2VyTWV0YWRhdGEsIHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBib29sZWFuO1xyXG5cclxuICAgIC8qKiBEZXNjcmlwdGlvbiBvZiB0aGUgdHlwZSBvZiB0aGUgcGFnZSwgYW5kIHRoZSBjb250ZW50IG9mIHRoZSBwYWdlIChpZiBpbnRlcm5hbCkgKi9cclxuICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJleHRlcm5hbFwiIH0gfCB7IHR5cGU6IFwiaW50ZXJuYWxcIjsgZWxlbWVudDogSlNYLkVsZW1lbnQgfTtcclxuXHJcbiAgICAvKiogQ29uZmlndXJhdGlvbiBvZiB0aGUgcGFnZSBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lbCAqL1xyXG4gICAgbmF2aWdhdGlvblBhbmVsQ29uZmlnOlxyXG4gICAgICAgIHwge1xyXG4gICAgICAgICAgICAgIGlzVmlzaWJsZTogZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfCB7XHJcbiAgICAgICAgICAgICAgaXNWaXNpYmxlOiB0cnVlO1xyXG4gICAgICAgICAgICAgIGljb25QYXRoOiBzdHJpbmc7XHJcbiAgICAgICAgICB9O1xyXG59O1xyXG5cclxuLyoqIExpc3Qgb2YgYWxsIHRoZSBwYWdlcyBvZiB0aGUgcG9ydGFsICovXHJcbmV4cG9ydCBjb25zdCBQQUdFUzoge1xyXG4gICAgSG9tZTogUGFnZUluZm87XHJcbiAgICBDYXNlczogUGFnZUluZm87XHJcbiAgICBPcmRlcnM6IFBhZ2VJbmZvO1xyXG4gICAgSW52b2ljZXM6IFBhZ2VJbmZvO1xyXG4gICAgVmlld0ludm9pY2U6IFBhZ2VJbmZvO1xyXG4gICAgRWRpdE9yZGVyOiBQYWdlSW5mbztcclxuICAgIEVkaXROZXR3b3JrT3JkZXI6IFBhZ2VJbmZvO1xyXG4gICAgQ3JlYXRlQ2FzZTogUGFnZUluZm87XHJcbiAgICBFZGl0Q2FzZTogUGFnZUluZm87XHJcbiAgICBDbG9zZWRDYXNlczogUGFnZUluZm87XHJcbiAgICBNYWpvckluY2lkZW50czogUGFnZUluZm87XHJcbiAgICBDb250YWN0czogUGFnZUluZm87XHJcbiAgICBDcmVhdGVDb250YWN0OiBQYWdlSW5mbztcclxuICAgIEVkaXRDb250YWN0OiBQYWdlSW5mbztcclxuICAgIFByb2ZpbGU6IFBhZ2VJbmZvO1xyXG4gICAgVGVybXNBbmRDb25kaXRpb25zOiBQYWdlSW5mbztcclxuICAgIFNpZ25PdXQ6IFBhZ2VJbmZvO1xyXG4gICAgU2lnbkluOiBQYWdlSW5mbztcclxuICAgIE5vdEZvdW5kOiBQYWdlSW5mbztcclxufSA9IHtcclxuICAgIEhvbWU6IHtcclxuICAgICAgICBwYXRoOiBcIi9cIixcclxuICAgICAgICB0aXRsZTogXCJIb21lXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxIb21lIC8+IH0sXHJcbiAgICAgICAgZm9yYmlkZGVuUGFnZUVycm9yTWVzc2FnZTogKHsgYmFzZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBiYXNlUGVybWlzc2lvbkxldmVsID8gKFxyXG4gICAgICAgICAgICAgICAgZ2V0Rm9yYmlkZGVuRXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiWW91ciBjdXJyZW50ICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgQmFzZVBlcm1pc3Npb25MZXZlbFtiYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHVzZXJNZXRhZGF0YSkgPT4gdXNlckhhc1BvcnRhbEFjY2Vzcyh1c2VyTWV0YWRhdGEpLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IHRydWUsIGljb25QYXRoOiBcIi9uYXZpZ2F0aW9uLWljb24taG9tZS5zdmdcIiB9LFxyXG4gICAgfSxcclxuICAgIENhc2VzOiB7XHJcbiAgICAgICAgcGF0aDogXCIvY2FzZXNcIixcclxuICAgICAgICB0aXRsZTogXCJDYXNlc1wiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJpbnRlcm5hbFwiLCBlbGVtZW50OiA8Q2FzZXMgLz4gfSxcclxuICAgICAgICBmb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlOiAoeyBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgPyAoXHJcbiAgICAgICAgICAgICAgICBnZXRGb3JiaWRkZW5FcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgXCJZb3VyIGN1cnJlbnQgQ2FzZSAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIENhc2VQZXJtaXNzaW9uTGV2ZWxbcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDw+PC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICh7IHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgQm9vbGVhbihwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsICYmIHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgIT09IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0pLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IHRydWUsIGljb25QYXRoOiBcIi9uYXZpZ2F0aW9uLWljb24tY2FzZS1tYW5hZ2VtZW50LnN2Z1wiIH0sXHJcbiAgICB9LFxyXG4gICAgQ3JlYXRlQ2FzZToge1xyXG4gICAgICAgIHBhdGg6IFwiL2Nhc2VzL2NyZWF0ZVwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkNyZWF0ZSBhIENhc2VcIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiaW50ZXJuYWxcIiwgZWxlbWVudDogPENhc2VzQ3JlYXRlIC8+IH0sXHJcbiAgICAgICAgZm9yYmlkZGVuUGFnZUVycm9yTWVzc2FnZTogKHsgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsID8gKFxyXG4gICAgICAgICAgICAgICAgZ2V0Rm9yYmlkZGVuRXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiWW91ciBjdXJyZW50IENhc2UgJ1Blcm1pc3Npb24gTGV2ZWwnIGlzOiBcIixcclxuICAgICAgICAgICAgICAgICAgICBDYXNlUGVybWlzc2lvbkxldmVsW3BvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8PjwvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIGlzUGVybWl0dGVkOiAoeyBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIEJvb2xlYW4oXHJcbiAgICAgICAgICAgICAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgPT09IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJPd25lZCBDYXNlc1wiXSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsID09PSBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdKVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IGZhbHNlIH0sXHJcbiAgICB9LFxyXG4gICAgRWRpdENhc2U6IHtcclxuICAgICAgICBwYXRoOiBcIi9jYXNlcy9lZGl0XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiRWRpdCBhIENhc2VcIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiaW50ZXJuYWxcIiwgZWxlbWVudDogPENhc2VzRWRpdCAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBDYXNlICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgQ2FzZVBlcm1pc3Npb25MZXZlbFtwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHsgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBCb29sZWFuKFxyXG4gICAgICAgICAgICAgICAgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsID09PSBDYXNlUGVybWlzc2lvbkxldmVsW1wiQWxsIENhc2VzXCJdIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgPT09IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJPd25lZCBDYXNlc1wiXSlcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiBmYWxzZSB9LFxyXG4gICAgfSxcclxuICAgIENsb3NlZENhc2VzOiB7XHJcbiAgICAgICAgcGF0aDogXCIvY2FzZXMvY2xvc2VkLWNhc2VzXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiQ2xvc2VkIENhc2VzXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxDYXNlc0Nsb3NlZCAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBDYXNlICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgQ2FzZVBlcm1pc3Npb25MZXZlbFtwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHsgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBCb29sZWFuKHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgJiYgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCAhPT0gQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSksXHJcbiAgICAgICAgbmF2aWdhdGlvblBhbmVsQ29uZmlnOiB7IGlzVmlzaWJsZTogZmFsc2UgfSxcclxuICAgIH0sXHJcbiAgICBNYWpvckluY2lkZW50czoge1xyXG4gICAgICAgIHBhdGg6IFwiL2Nhc2VzL21ham9yLWluY2lkZW50c1wiLFxyXG4gICAgICAgIHRpdGxlOiBcIk1ham9yIEluY2lkZW50c1wiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJpbnRlcm5hbFwiLCBlbGVtZW50OiA8Q2FzZXNNYWpvckluY2lkZW50cyAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBDYXNlICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgQ2FzZVBlcm1pc3Npb25MZXZlbFtwb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHsgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBCb29sZWFuKHBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgJiYgcG9ydGFsQ2FzZVBlcm1pc3Npb25MZXZlbCAhPT0gQ2FzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSksXHJcbiAgICAgICAgbmF2aWdhdGlvblBhbmVsQ29uZmlnOiB7IGlzVmlzaWJsZTogZmFsc2UgfSxcclxuICAgIH0sXHJcbiAgICBDb250YWN0czoge1xyXG4gICAgICAgIHBhdGg6IFwiL2NvbnRhY3RzXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiQ29udGFjdHNcIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiaW50ZXJuYWxcIiwgZWxlbWVudDogPENvbnRhY3RzIC8+IH0sXHJcbiAgICAgICAgZm9yYmlkZGVuUGFnZUVycm9yTWVzc2FnZTogKHsgcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsID8gKFxyXG4gICAgICAgICAgICAgICAgZ2V0Rm9yYmlkZGVuRXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiWW91ciBjdXJyZW50IENvbnRhY3QgJ1Blcm1pc3Npb24gTGV2ZWwnIGlzOiBcIixcclxuICAgICAgICAgICAgICAgICAgICBDb250YWN0UGVybWlzc2lvbkxldmVsW3BvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8PjwvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIGlzUGVybWl0dGVkOiAoeyBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIEJvb2xlYW4oXHJcbiAgICAgICAgICAgICAgICBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsICYmIHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgIT09IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiB0cnVlLCBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1pY29uLWNvbnRhY3RzLnN2Z1wiIH0sXHJcbiAgICB9LFxyXG4gICAgQ3JlYXRlQ29udGFjdDoge1xyXG4gICAgICAgIHBhdGg6IFwiL2NvbnRhY3RzL2NyZWF0ZVwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkNyZWF0ZSBhIENvbnRhY3RcIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiaW50ZXJuYWxcIiwgZWxlbWVudDogPENvbnRhY3RzQ3JlYXRlIC8+IH0sXHJcbiAgICAgICAgZm9yYmlkZGVuUGFnZUVycm9yTWVzc2FnZTogKHsgcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsID8gKFxyXG4gICAgICAgICAgICAgICAgZ2V0Rm9yYmlkZGVuRXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiWW91ciBjdXJyZW50IENvbnRhY3QgJ1Blcm1pc3Npb24gTGV2ZWwnIGlzOiBcIixcclxuICAgICAgICAgICAgICAgICAgICBDb250YWN0UGVybWlzc2lvbkxldmVsW3BvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8PjwvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIGlzUGVybWl0dGVkOiAoeyBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIEJvb2xlYW4oXHJcbiAgICAgICAgICAgICAgICBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsICYmIHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgPT09IENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbXCJBbGwgQ29udGFjdHNcIl1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiBmYWxzZSB9LFxyXG4gICAgfSxcclxuICAgIEVkaXRDb250YWN0OiB7XHJcbiAgICAgICAgcGF0aDogXCIvY29udGFjdHMvZWRpdFwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkVkaXQgYSBDb250YWN0XCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxDb250YWN0c0VkaXQgLz4gfSxcclxuICAgICAgICBmb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlOiAoeyBwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgPyAoXHJcbiAgICAgICAgICAgICAgICBnZXRGb3JiaWRkZW5FcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgXCJZb3VyIGN1cnJlbnQgQ29udGFjdCAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIENvbnRhY3RQZXJtaXNzaW9uTGV2ZWxbcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDw+PC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICh7IHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgQm9vbGVhbihcclxuICAgICAgICAgICAgICAgIHBvcnRhbENvbnRhY3RQZXJtaXNzaW9uTGV2ZWwgJiYgcG9ydGFsQ29udGFjdFBlcm1pc3Npb25MZXZlbCA9PT0gQ29udGFjdFBlcm1pc3Npb25MZXZlbFtcIkFsbCBDb250YWN0c1wiXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IGZhbHNlIH0sXHJcbiAgICB9LFxyXG4gICAgT3JkZXJzOiB7XHJcbiAgICAgICAgcGF0aDogXCIvb3JkZXJzXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiT3JkZXJzXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxPcmRlcnMgLz4gfSxcclxuICAgICAgICBmb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlOiAoeyBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBPcmRlciAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyUGVybWlzc2lvbkxldmVsW3BvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuXHJcbiAgICAgICAgLy8gVE9ETyAjMzQ3OTc6IFJlbW92ZSBiZWxvdyBpc1Byb2R1Y3Rpb24gY29uZGl0aW9uIGZyb20gdGhlIGNoZWNrIG9uY2UgT3JkZXJzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICh7IHBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgICFpc1Byb2R1Y3Rpb24gJiZcclxuICAgICAgICAgICAgQm9vbGVhbihwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCAmJiBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCAhPT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0pLFxyXG5cclxuICAgICAgICAvLyBUT0RPICMzNDc5NzogUmVtb3ZlIGJlbG93IGlzUHJvZHVjdGlvbiBjb25kaXRpb24gZnJvbSB0aGUgY2hlY2sgb25jZSBPcmRlcnMgY2FuIGJlIHNob3duIG9uIHRoZSBQb3J0YWxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiAhaXNQcm9kdWN0aW9uLCBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1pY29uLW9yZGVyLW1hbmFnZW1lbnQuc3ZnXCIgfSxcclxuICAgIH0sXHJcbiAgICBFZGl0T3JkZXI6IHtcclxuICAgICAgICBwYXRoOiBcIi9vcmRlcnMvZWRpdFwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkVkaXQgYW4gT3JkZXJcIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiaW50ZXJuYWxcIiwgZWxlbWVudDogPE9yZGVyc0VkaXQgLz4gfSxcclxuICAgICAgICBmb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlOiAoeyBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBPcmRlciAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIE9yZGVyUGVybWlzc2lvbkxldmVsW3BvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHsgcG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgQm9vbGVhbihwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCAmJiBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCAhPT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl0pLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IGZhbHNlIH0sXHJcbiAgICB9LFxyXG4gICAgSW52b2ljZXM6IHtcclxuICAgICAgICBwYXRoOiBcIi9pbnZvaWNlc1wiLFxyXG4gICAgICAgIHRpdGxlOiBcIkludm9pY2VzXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxJbnZvaWNlcyAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgcG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCBJbnZvaWNlICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgSW52b2ljZVBlcm1pc3Npb25MZXZlbFtwb3J0YWxJbnZvaWNlUGVybWlzc2lvbkxldmVsXVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPD48Lz5cclxuICAgICAgICAgICAgKSxcclxuXHJcbiAgICAgICAgLy8gVE9ETyAjMzcyODc6IFJlbW92ZSBiZWxvdyBpc1Byb2R1Y3Rpb24gY29uZGl0aW9uIGZyb20gdGhlIGNoZWNrIG9uY2UgSW52b2ljZXMgY2FuIGJlIHNob3duIG9uIHRoZSBQb3J0YWxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKHsgcG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICAhaXNQcm9kdWN0aW9uICYmXHJcbiAgICAgICAgICAgIEJvb2xlYW4oXHJcbiAgICAgICAgICAgICAgICBwb3J0YWxJbnZvaWNlUGVybWlzc2lvbkxldmVsICYmIHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgIT09IEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiAhaXNQcm9kdWN0aW9uLCBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1pY29uLWludm9pY2VzLnN2Z1wiIH0sXHJcbiAgICB9LFxyXG4gICAgVmlld0ludm9pY2U6IHtcclxuICAgICAgICBwYXRoOiBcIi9pbnZvaWNlcy92aWV3XCIsXHJcbiAgICAgICAgdGl0bGU6IFwiVmlldyBhbiBJbnZvaWNlXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxJbnZvaWNlc1ZpZXcgLz4gfSxcclxuICAgICAgICBmb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlOiAoeyBwb3J0YWxJbnZvaWNlUGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgPyAoXHJcbiAgICAgICAgICAgICAgICBnZXRGb3JiaWRkZW5FcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgXCJZb3VyIGN1cnJlbnQgSW52b2ljZSAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIEludm9pY2VQZXJtaXNzaW9uTGV2ZWxbcG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDw+PC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICh7IHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgQm9vbGVhbihcclxuICAgICAgICAgICAgICAgIHBvcnRhbEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgJiYgcG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbCAhPT0gSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IGZhbHNlIH0sXHJcbiAgICB9LFxyXG4gICAgRWRpdE5ldHdvcmtPcmRlcjoge1xyXG4gICAgICAgIHBhdGg6IFwiL25ldHdvcmtvcmRlcnMvZWRpdFwiLFxyXG4gICAgICAgIHRpdGxlOiBcIkVkaXQgYSBOZXR3b3JrIE9yZGVyXCIsXHJcbiAgICAgICAgcGFnZUNvbmZpZzogeyB0eXBlOiBcImludGVybmFsXCIsIGVsZW1lbnQ6IDxOZXR3b3JrT3JkZXJzRWRpdCAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IHBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsIH0pID0+XHJcbiAgICAgICAgICAgIHBvcnRhbE9yZGVyUGVybWlzc2lvbkxldmVsID8gKFxyXG4gICAgICAgICAgICAgICAgZ2V0Rm9yYmlkZGVuRXJyb3JNZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgICAgIFwiWW91ciBjdXJyZW50IE9yZGVyICdQZXJtaXNzaW9uIExldmVsJyBpczogXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgT3JkZXJQZXJtaXNzaW9uTGV2ZWxbcG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWxdXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8PjwvPlxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgIC8vIFRPRE8gIzM0Nzk3OiBSZW1vdmUgYmVsb3cgaXNQcm9kdWN0aW9uIGNvbmRpdGlvbiBmcm9tIHRoZSBjaGVjayBvbmNlIE9yZGVycyBjYW4gYmUgc2hvd24gb24gdGhlIFBvcnRhbFxyXG4gICAgICAgIGlzUGVybWl0dGVkOiAoeyBwb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCB9KSA9PlxyXG4gICAgICAgICAgICAhaXNQcm9kdWN0aW9uICYmXHJcbiAgICAgICAgICAgIEJvb2xlYW4ocG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWwgJiYgcG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWwgIT09IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiBmYWxzZSB9LFxyXG4gICAgfSxcclxuICAgIFByb2ZpbGU6IHtcclxuICAgICAgICBwYXRoOiBcIi9Qcm9maWxlXCIsXHJcbiAgICAgICAgdGl0bGU6IFwiUHJvZmlsZVwiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJpbnRlcm5hbFwiLCBlbGVtZW50OiA8UHJvZmlsZSAvPiB9LFxyXG4gICAgICAgIGZvcmJpZGRlblBhZ2VFcnJvck1lc3NhZ2U6ICh7IGJhc2VQZXJtaXNzaW9uTGV2ZWwgfSkgPT5cclxuICAgICAgICAgICAgYmFzZVBlcm1pc3Npb25MZXZlbCA/IChcclxuICAgICAgICAgICAgICAgIGdldEZvcmJpZGRlbkVycm9yTWVzc2FnZShcclxuICAgICAgICAgICAgICAgICAgICBcIllvdXIgY3VycmVudCAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIEJhc2VQZXJtaXNzaW9uTGV2ZWxbYmFzZVBlcm1pc3Npb25MZXZlbF1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgIDw+PC8+XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICh1c2VyTWV0YWRhdGEpID0+IEJvb2xlYW4odXNlckhhc1BvcnRhbEFjY2Vzcyh1c2VyTWV0YWRhdGEpKSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiB0cnVlLCBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1pY29uLW15LXByb2ZpbGUuc3ZnXCIgfSxcclxuICAgIH0sXHJcbiAgICBTaWduT3V0OiB7XHJcbiAgICAgICAgcGF0aDogXCIvQWNjb3VudC9Mb2dpbi9Mb2dPZmZcIixcclxuICAgICAgICB0aXRsZTogXCJTaWduIG91dFwiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJleHRlcm5hbFwiIH0sXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICgpID0+IHRydWUsXHJcbiAgICAgICAgbmF2aWdhdGlvblBhbmVsQ29uZmlnOiB7IGlzVmlzaWJsZTogdHJ1ZSwgaWNvblBhdGg6IFwiL25hdmlnYXRpb24taWNvbi1zaWduLW91dC5zdmdcIiB9LFxyXG4gICAgfSxcclxuICAgIFNpZ25Jbjoge1xyXG4gICAgICAgIHBhdGg6IFwiL1NpZ25JblwiLFxyXG4gICAgICAgIHRpdGxlOiBcIlNpZ24gaW5cIixcclxuICAgICAgICBwYWdlQ29uZmlnOiB7IHR5cGU6IFwiZXh0ZXJuYWxcIiB9LFxyXG4gICAgICAgIGlzUGVybWl0dGVkOiAoKSA9PiB0cnVlLFxyXG4gICAgICAgIG5hdmlnYXRpb25QYW5lbENvbmZpZzogeyBpc1Zpc2libGU6IGZhbHNlIH0sXHJcbiAgICB9LFxyXG4gICAgVGVybXNBbmRDb25kaXRpb25zOiB7XHJcbiAgICAgICAgcGF0aDogXCIvdGVybXMtYW5kLWNvbmRpdGlvbnNcIixcclxuICAgICAgICB0aXRsZTogXCJUZXJtcyBhbmQgQ29uZGl0aW9uc1wiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJpbnRlcm5hbFwiLCBlbGVtZW50OiA8VGVybXNBbmRDb25kaXRpb25zIC8+IH0sXHJcbiAgICAgICAgaXNQZXJtaXR0ZWQ6ICgpID0+IHRydWUsXHJcbiAgICAgICAgbmF2aWdhdGlvblBhbmVsQ29uZmlnOiB7IGlzVmlzaWJsZTogZmFsc2UgfSxcclxuICAgIH0sXHJcbiAgICBOb3RGb3VuZDoge1xyXG4gICAgICAgIHBhdGg6IFwiKlwiLFxyXG4gICAgICAgIHRpdGxlOiBcIk5vdCBGb3VuZFwiLFxyXG4gICAgICAgIHBhZ2VDb25maWc6IHsgdHlwZTogXCJpbnRlcm5hbFwiLCBlbGVtZW50OiA8Tm90Rm91bmQgdHlwZT1cInBhZ2Utbm90LWZvdW5kXCIgLz4gfSxcclxuICAgICAgICBpc1Blcm1pdHRlZDogKCkgPT4gdHJ1ZSxcclxuICAgICAgICBuYXZpZ2F0aW9uUGFuZWxDb25maWc6IHsgaXNWaXNpYmxlOiBmYWxzZSB9LFxyXG4gICAgfSxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBmb3JiaWRkZW4gZXJyb3IgbWVzc2FnZSBmb3IgYSBwYWdlLlxyXG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgbWVzc2FnZSB0byBkaXNwbGF5IGJlZm9yZSB0aGUgY3VycmVudCBzdGF0dXMuXHJcbiAqIEBwYXJhbSBwZXJtaXNzaW9uTGV2ZWwgVGhlIFVzZXJzIGN1cnJlbnQgJ1Blcm1pc3Npb24gTGV2ZWwnLlxyXG4gKiBAcmV0dXJucyBUaGUgZm9yYmlkZGVuIGVycm9yIG1lc3NhZ2UuXHJcbiAqL1xyXG5jb25zdCBnZXRGb3JiaWRkZW5FcnJvck1lc3NhZ2UgPSAoXHJcbiAgICBtZXNzYWdlOlxyXG4gICAgICAgIHwgXCJZb3VyIGN1cnJlbnQgJ1Blcm1pc3Npb24gTGV2ZWwnIGlzOiBcIlxyXG4gICAgICAgIHwgXCJZb3VyIGN1cnJlbnQgQ29udGFjdCAnUGVybWlzc2lvbiBMZXZlbCcgaXM6IFwiXHJcbiAgICAgICAgfCBcIllvdXIgY3VycmVudCBDYXNlICdQZXJtaXNzaW9uIExldmVsJyBpczogXCJcclxuICAgICAgICB8IFwiWW91ciBjdXJyZW50IE9yZGVyICdQZXJtaXNzaW9uIExldmVsJyBpczogXCJcclxuICAgICAgICB8IFwiWW91ciBjdXJyZW50IEludm9pY2UgJ1Blcm1pc3Npb24gTGV2ZWwnIGlzOiBcIixcclxuICAgIHBlcm1pc3Npb25MZXZlbDogc3RyaW5nXHJcbikgPT4gKFxyXG4gICAgPHA+XHJcbiAgICAgICAge21lc3NhZ2V9XHJcbiAgICAgICAgPHN0cm9uZz57cGVybWlzc2lvbkxldmVsfTwvc3Ryb25nPlxyXG4gICAgPC9wPlxyXG4pO1xyXG5cclxuLyoqIEhvb2sgY29udGFpbmluZyB0aGUgcm91dGluZyBsb2dpYyBmb3IgcGFnZSBuYXZpZ2F0aW9uICovXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2VQYWdlTmF2aWdhdGlvbigpIHtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IHN0YXRlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZSk7XHJcbiAgICBjb25zdCB1c2VySWQgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnVzZXJJZCk7XHJcbiAgICBjb25zdCBjdXJyZW50UGFnZSA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuY3VycmVudFBhZ2UpO1xyXG4gICAgY29uc3QgaXNMb2NhbE1vZGUgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmlzTG9jYWxNb2RlKTtcclxuICAgIGNvbnN0IHRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlID0gdXNlU2VsZWN0b3IoXHJcbiAgICAgICAgKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS50ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHVzZXJNZXRhZGF0YSA9IHVzZVVzZXJNZXRhZGF0YSgpO1xyXG4gICAgY29uc3QgeyBhcHBJbnNpZ2h0cyB9ID0gdXNlQXBwSW5zaWdodHMoKTtcclxuICAgIGNvbnN0IGFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcyA9IHVzZUFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcygpO1xyXG5cclxuICAgIGNvbnN0IHJvdXRlcyA9ICgoKSA9PiB7XHJcbiAgICAgICAgLy8gU2hvd2luZyBsb2FkaW5nIGRpYWxvZyBpZiB0aGUgcmVkaXJlY3QgdG8gdGhlIC9TaWduSW4gcGFnZSBpcyB0YWtpbmcgcGxhY2VcclxuICAgICAgICBpZiAoIXVzZXJJZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gPERpYWxvZyBzaG93SWNvbj17ZmFsc2V9IHRpdGxlPVwiTG9hZGluZ1wiIGNvbnRlbnQ9ezxMb2FkaW5nU3Bpbm5lciAvPn0gLz47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VycmVudFBhZ2UucGFnZUNvbmZpZy50eXBlID09PSBcImV4dGVybmFsXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxEZXZNb2RlTGltaXRhdGlvbiAvPjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyB0aGUgJ1Blcm1pc3Npb24gTGV2ZWwnICdObyBBY2Nlc3MnIChjb3NtZXRpYyBvbmx5OyBDUlVEIG9wZXJhdGlvbnMgZm9yYmlkZGVuIGJ5IEVudGl0eSBQZXJtaXNzaW9ucylcclxuICAgICAgICBpZiAoIXVzZXJIYXNQb3J0YWxBY2Nlc3ModXNlck1ldGFkYXRhKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gPEZvcmJpZGRlbiAvPjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRvIG5hdmlnYXRlIHRvIHRoZSBUZXJtcyBhbmQgQ29uZGl0aW9ucyBwYWdlXHJcbiAgICAgICAgY29uc3QgbmF2aWdhdGVUb1Rlcm1zQW5kQ29uZGl0aW9ucyA9XHJcbiAgICAgICAgICAgICF0ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZSAmJiBjdXJyZW50UGFnZS5wYXRoICE9PSBQQUdFUy5UZXJtc0FuZENvbmRpdGlvbnMucGF0aDtcclxuXHJcbiAgICAgICAgaWYgKG5hdmlnYXRlVG9UZXJtc0FuZENvbmRpdGlvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxUZXJtc0FuZENvbmRpdGlvbnMgLz47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Um91dGVzPlxyXG4gICAgICAgICAgICAgICAge09iamVjdC52YWx1ZXMoUEFHRVMpLm1hcCgocGFnZUluZm8pID0+IChcclxuICAgICAgICAgICAgICAgICAgICA8Um91dGVcclxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtwYWdlSW5mby5wYXRofVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoPXtwYWdlSW5mby5wYXRofVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXsoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlSW5mby5pc1Blcm1pdHRlZCh1c2VyTWV0YWRhdGEsIHN0YXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlSW5mby5mb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9yYmlkZGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uTGV2ZWxNZXNzYWdlPXtwYWdlSW5mby5mb3JiaWRkZW5QYWdlRXJyb3JNZXNzYWdlKHVzZXJNZXRhZGF0YSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcmJpZGRlbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhZ2UgaXMgaW50ZXJuYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlSW5mby5wYWdlQ29uZmlnLnR5cGUgPT09IFwiaW50ZXJuYWxcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgcGFnZSB0byByZW5kZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtcGFnZS10aXRsZT17cGFnZUluZm8udGl0bGV9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+e3BhZ2VJbmZvLnBhZ2VDb25maWcuZWxlbWVudH08L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWxzZTsgdGhlIHBhZ2UgaXMgZXh0ZXJuYWwsIHNob3cgYSB3YXJuaW5nIGlmIGluIGRldiBtb2RlIChhcyB0aGVzZSB3b24ndCB3b3JrKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTG9jYWxNb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxEZXZNb2RlTGltaXRhdGlvbiAvPjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbHNlOyByZXR1cm4gdW5kZWZpbmVkLCBzaWduaWxsaW5nIHRoaXMgc2hvdWxkIGJlIGFuIGV4dGVybmFsIGxpbmtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L1JvdXRlcz5cclxuICAgICAgICApO1xyXG4gICAgfSkoKTtcclxuXHJcbiAgICAvLyBBZGQgYW4gZWZmZWN0IHRvIHVwZGF0ZSB0aGUgJ2N1cnJlbnRQYWdlJyBpbiB0aGUgcmVkdXggc3RvcmUgb24gY2hhbmdlIG9mIHRoZSBsb2NhdGlvblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjb25zdCByZW1vdmVUcmFpbGluZ1NsYXNoZXMgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci5yZXBsYWNlKC9cXC8kL2csIFwiXCIpO1xyXG5cclxuICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiU2V0Q3VycmVudFBhZ2VcIixcclxuICAgICAgICAgICAgY3VycmVudFBhZ2U6XHJcbiAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKFBBR0VTKS5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVUcmFpbGluZ1NsYXNoZXMocGFnZS5wYXRoLnRvTG93ZXJDYXNlKCkpID09PVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVUcmFpbGluZ1NsYXNoZXMobG9jYXRpb24ucGF0aG5hbWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgICAgICkgfHwgUEFHRVMuTm90Rm91bmQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCBbbG9jYXRpb24sIGRpc3BhdGNoXSk7XHJcblxyXG4gICAgLy8gQWRkIGFuIGVmZmVjdCB0byB1cGRhdGUgdGhlIEhUTUwgZG9jdW1lbnQgdGl0bGUgb24gY2hhbmdlIG9mIHRoZSAnY3VycmVudFBhZ2UnIGFuZFxyXG4gICAgLy8gcmV0dXJuIG1vYmlsZS8gdGFibGV0IHVzZXJzIHRvIHRoZSB0b3Agb2YgdGhlIHBhZ2Ugb24gY2hhbmdlLlxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQudGl0bGUgPSBgJHtjdXJyZW50UGFnZS50aXRsZX0gfCBCaXN0ZWNoIEN1c3RvbWVyIFBvcnRhbGA7XHJcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKHtcclxuICAgICAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgICAgICB9KTtcclxuICAgIH0sIFtjdXJyZW50UGFnZV0pO1xyXG5cclxuICAgIC8vIENsZWFyIGFsbCBlcnJvcnMgb24gcGFnZSBuYXZpZ2F0aW9uXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJDbGVhckxhdGVzdEVycm9yc1wiIH0pO1xyXG4gICAgfSwgW2N1cnJlbnRQYWdlLCBkaXNwYXRjaF0pO1xyXG5cclxuICAgIC8vIFRyYWNrIGVhY2ggcGFnZSBuYXZpZ2F0YXRpb25cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgYXBwSW5zaWdodHM/LnRyYWNrUGFnZVZpZXcoe1xyXG4gICAgICAgICAgICBuYW1lOiBjdXJyZW50UGFnZS50aXRsZSwgLy8gR2VuZXJpY2lzZSB0aGUgdGl0bGUgdG8gdGhlIHBhZ2UgbmFtZSB0byBhdm9pZCBDYXNlL0NvbnRhY3QgaW5mbyBiZWluZyB0aGUgbG9nZ2VkIHBhZ2UgbmFtZVxyXG4gICAgICAgICAgICB1cmk6IGN1cnJlbnRQYWdlLnBhdGgsIC8vIEdlbmVyaWNpc2UgdGhlIFVSTCB0byB0aGUgcGF0aCwgdG8gYXZvaWQgZGlmZmVyZW50IENhc2UvQ29udGFjdCBVUkxzIGZyb20gYmVpbmcgZGlzdGluY3RseSBsb2dnZWRcclxuICAgICAgICAgICAgcHJvcGVydGllczogYXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSwgW2N1cnJlbnRQYWdlXSk7XHJcblxyXG4gICAgLy8gUmV0dXJuIGEgZGVzY3JpcHRpb24gb2YgdGhlIHJvdXRlc1xyXG4gICAgcmV0dXJuIHsgcm91dGVzIH07XHJcbn1cclxuIiwiaW1wb3J0IHsgTGluaywgdXNlTG9jYXRpb24gfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuLi9Ib29rcy91c2VBcHBJbnNpZ2h0c1wiO1xyXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSBcIi4vRXJyb3JCb3VuZGFyeVwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcblxyXG4vKiogQ29tcG9uZW50cyByZW5kZXJpbmcgYSBsaW5rIHRvIGEgcGFnZSAqL1xyXG5leHBvcnQgY29uc3QgTmF2aWdhdGlvbkxpbms6IFJlYWN0LkZDPHtcclxuICAgIGljb25QYXRoOiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICBpc1NpbmdsZVBhZ2VBcHBMaW5rOiBib29sZWFuO1xyXG59PiA9ICh7IGljb25QYXRoLCBkaXNwbGF5TmFtZSwgdXJsLCBpc1NpbmdsZVBhZ2VBcHBMaW5rIH0pID0+IHtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGEgfSA9IHVzZUFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgLy8gR2V0IHRoZSBmaXJzdCBzZWdtZW50IG9mIHRoZSBVUkwgcGF0aFxyXG4gICAgLy8gZS5nLiBmb3IgdGhlIHBhdGggXCIvY2FzZXMvZWRpdFwiLCB0aGlzIHdvdWxkIGJlIFwiY2FzZXNcIlxyXG4gICAgY29uc3QgZmlyc3RQYXRoU2VnbWVudCA9IGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCBcIlwiKS5zcGxpdChcIi9cIilbMF07XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBsaW5rIGlzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGFnZS9zZWdtZW50XHJcbiAgICBjb25zdCBpc0N1cnJlbnRQYWdlID0gZmlyc3RQYXRoU2VnbWVudC50b0xvd2VyQ2FzZSgpID09PSB1cmwucmVwbGFjZSgvXFwvL2csIFwiXCIpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGlzU2luZ2xlUGFnZUFwcExpbmspIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8TGlua1xyXG4gICAgICAgICAgICAgICAgdG89e3VybH1cclxuICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD17aXNDdXJyZW50UGFnZX1cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiTmF2aWdhdGlvbiBQYW5lbCAtIEN1c3RvbWVyIEFzc2V0IHRpbGUgY2xpY2tlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aWxlTmFtZTogZGlzcGxheU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgPEltYWdlIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gc3JjPXtpY29uUGF0aH0gLz5cclxuICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheU5hbWV9XHJcbiAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgIDwvTGluaz5cclxuICAgICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgaHJlZj17dXJsfVxyXG4gICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PXtpc0N1cnJlbnRQYWdlfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YT8uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJOYXZpZ2F0aW9uIFBhbmVsIC0gQ3VzdG9tZXIgQXNzZXQgdGlsZSBjbGlja2VkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVOYW1lOiBkaXNwbGF5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBzcmM9e2ljb25QYXRofSAvPlxyXG4gICAgICAgICAgICAgICAgICAgIHtkaXNwbGF5TmFtZX1cclxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xyXG5pbXBvcnQgeyBJbWFnZSB9IGZyb20gXCIuL0ltYWdlXCI7XHJcbmltcG9ydCB7IEJzQ2hldnJvbkRvd24sIEJzQ2hldnJvblVwIH0gZnJvbSBcInJlYWN0LWljb25zL2JzXCI7XHJcbmltcG9ydCB7IEJpTGlua0V4dGVybmFsIH0gZnJvbSBcInJlYWN0LWljb25zL2JpXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi9FcnJvckJvdW5kYXJ5XCI7XHJcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyIH0gZnJvbSBcIi4vTG9hZGluZ1NwaW5uZXJcIjtcclxuaW1wb3J0IHsgUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nIH0gZnJvbSBcIi4uL0VudW1zL1Byb2R1Y3RQb3J0YWxUaWxlTWFwcGluZ1wiO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gXCIuL01vZGFsXCI7XHJcbmltcG9ydCB7IEJ1dHRvbkluZm9ybWF0aW9uIH0gZnJvbSBcIi4uL1R5cGVzL0J1dHRvbkluZm9ybWF0aW9uXCI7XHJcblxyXG4vKiogRGVzY3JpYmVzIGEgbmF2aWdhdGlvbiBtZW51IGdyb3VwIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmVsICovXHJcbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25NZW51R3JvdXBJbmZvID0ge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGljb25QYXRoOiBzdHJpbmc7XHJcbiAgICBwcm9kdWN0TGlua3M6IHsgbGFiZWw6IHN0cmluZzsgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZzsgbW9kYWxNZXNzYWdlPzogc3RyaW5nIH1bXTtcclxufTtcclxuXHJcbi8qKiBDb21wb25lbnQgcmVuZGVyaW5nIGEgbmF2aWdhdGlvbiBtZW51IGdyb3VwIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmVsICovXHJcbmV4cG9ydCBjb25zdCBOYXZpZ2F0aW9uTWVudUdyb3VwOiBSZWFjdC5GQzx7IG5hdmlnYXRpb25NZW51R3JvdXA6IE5hdmlnYXRpb25NZW51R3JvdXBJbmZvIH0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCB7IG5hdmlnYXRpb25NZW51R3JvdXAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW21vZGFsSXNPcGVuLCBzZXRNb2RhbElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbbW9kYWxJbmZvLCBzZXRNb2RhbEluZm9dID0gdXNlU3RhdGU8QnV0dG9uSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcclxuICAgIGNvbnN0IHByb2R1Y3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5wcm9kdWN0cyk7XHJcblxyXG4gICAgLy8gR2V0IHRoZSBVUkxzIGZyb20gdGhlIHJlbGF0ZWQgUHJvZHVjdHMgb2YgdGhlIG5hdmlnYXRpb24gbGlua3NcclxuICAgIGNvbnN0IHByb2R1Y3RMaW5rcyA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICAgIGlmIChwcm9kdWN0cy5sb2FkaW5nU3RhdHVzICE9PSBcImxvYWRlZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IHByb2R1Y3RzLmxvYWRpbmdTdGF0dXMgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGxpbmtzID0gbmF2aWdhdGlvbk1lbnVHcm91cC5wcm9kdWN0TGlua3NcclxuICAgICAgICAgICAgLm1hcCgobmF2aWdhdGlvbk1lbnVHcm91cEl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHByb2R1Y3RzLmRhdGEuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAocHJvZHVjdCkgPT4gcHJvZHVjdC5iaXN0ZWNoX3BvcnRhbHRpbGVtYXBwaW5nID09PSBuYXZpZ2F0aW9uTWVudUdyb3VwSXRlbS50aWxlTWFwcGluZ1xyXG4gICAgICAgICAgICAgICAgKT8uYmlzdGVjaF90aWxldGFyZ2V0dXJsITtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5uYXZpZ2F0aW9uTWVudUdyb3VwSXRlbSwgdXJsIH07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgdXJsIH0pID0+IHVybCk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGxpbmtzIH07XHJcbiAgICB9LCBbcHJvZHVjdHMsIG5hdmlnYXRpb25NZW51R3JvdXBdKTtcclxuXHJcbiAgICAgIC8qKiBPcGVucyBhIG1vZGFsIGZvciB0aGUgdXNlciB0byBuYXZpZ2F0ZSB0byBhbiBleHRlcm5hbCB3ZWJzaXRlLiAqL1xyXG4gICAgY29uc3Qgb3BlbkluZm9ybWF0aW9uTW9kYWwgPSAobW9kYWxJbmZvOiBCdXR0b25JbmZvcm1hdGlvbikgPT4ge1xyXG4gICAgICAgIHNldE1vZGFsSXNPcGVuKHRydWUpO1xyXG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7XHJcbiAgICAgICAgICAgIHRvcDogMCxcclxuICAgICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2V0TW9kYWxJbmZvKG1vZGFsSW5mbyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGxpIGtleT17bmF2aWdhdGlvbk1lbnVHcm91cC50aXRsZX0gY2xhc3NOYW1lPVwibmF2aWdhdGlvbi1tZW51LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJuYXZpZ2F0aW9uLW1lbnUtZ3JvdXAtaGVhZGVyXCIgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZSBzcmM9e25hdmlnYXRpb25NZW51R3JvdXAuaWNvblBhdGh9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJuYXZpZ2F0aW9uLW1lbnUtZ3JvdXAtaGVhZGVyLWxhYmVsXCI+e25hdmlnYXRpb25NZW51R3JvdXAudGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkID8gPEJzQ2hldnJvblVwIC8+IDogPEJzQ2hldnJvbkRvd24gLz59XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIHtpc0V4cGFuZGVkICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5hdmlnYXRpb24tbWVudS1ncm91cC1pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvZHVjdExpbmtzLmxvYWRpbmdTdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImxvYWRpbmdcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ1NwaW5uZXIgLz47XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwibG9hZGVkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvZHVjdExpbmtzLmxpbmtzLmxlbmd0aCA9PT0gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5ObyBwcm9kdWN0cyBmb3VuZDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdExpbmtzLmxpbmtzPy5tYXAoKHsgbGFiZWwsIHVybCwgbW9kYWxNZXNzYWdlIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGVudCBvZiB0aGUgbmF2aWdhdGlvbiBsaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm5hdmlnYXRpb24tbWVudS1ncm91cC1pdGVtLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsYWJlbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJpTGlua0V4dGVybmFsIHN0eWxlPXt7IGNvbG9yOiBcIiM3NzdcIiB9fSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIG1vZGFsIHNob3VsZCBiZSBkaXNwbGF5ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGFsTWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1aWxkIGRldGFpbHMgZm9yIHRoZSBtb2RhbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kYWxJbmZvOiBCdXR0b25JbmZvcm1hdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbW9kYWxNZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc01vZGFsOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Vycm9yTW9kYWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbEJ1dHRvbkxhYmVsOiBcIkNvbmZpcm1cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50OiA8Pnttb2RhbE1lc3NhZ2V9PC8+LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFRpdGxlOiBsYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3V2luZG93ID0gd2luZG93Lm9wZW4oKSE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1dpbmRvdy5sb2NhdGlvbiA9IHVybDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17bGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9wZW5JbmZvcm1hdGlvbk1vZGFsKG1vZGFsSW5mbyl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuYXZpZ2F0aW9uLW1lbnUtZ3JvdXAtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2xhYmVsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXt1cmx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbD1cIm5vcmVmZXJyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuYXZpZ2F0aW9uLW1lbnUtZ3JvdXAtaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICB7bW9kYWxJbmZvICYmIDxNb2RhbCBidXR0b25JbmZvPXttb2RhbEluZm99IGlzTW9kYWxTaG93bj17bW9kYWxJc09wZW59IHNldElzTW9kYWxTaG93bj17c2V0TW9kYWxJc09wZW59IC8+fVxyXG4gICAgICAgIDwvbGk+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nIH0gZnJvbSBcIi4uL0VudW1zL1Byb2R1Y3RQb3J0YWxUaWxlTWFwcGluZ1wiO1xyXG5pbXBvcnQgeyBQYWdlSW5mbywgUEFHRVMgfSBmcm9tIFwiLi4vSG9va3MvdXNlUGFnZU5hdmlnYXRpb25cIjtcclxuaW1wb3J0IHsgU3dpcGVEaXJlY3Rpb24sIHVzZVN3aXBlTGlzdGVuZXIgfSBmcm9tIFwiLi4vSG9va3MvdXNlU3dpcGVMaXN0ZW5lclwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi4vSG9va3MvdXNlVXNlck1ldGFkYXRhXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi9FcnJvckJvdW5kYXJ5XCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25MaW5rIH0gZnJvbSBcIi4vTmF2aWdhdGlvbkxpbmtcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbk1lbnVHcm91cCwgTmF2aWdhdGlvbk1lbnVHcm91cEluZm8gfSBmcm9tIFwiLi9OYXZpZ2F0aW9uTWVudUdyb3VwXCI7XHJcblxyXG4vKiogQ29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgTmF2aWdhdGlvbiBQYW5lbCAqL1xyXG5leHBvcnQgY29uc3QgTmF2aWdhdGlvblBhbmVsOiBSZWFjdC5GQzx7XHJcbiAgICBpc05hdmlnYXRpb25QYW5lbEV4cGFuZGVkOiBib29sZWFuO1xyXG4gICAgc2V0SXNOYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZDogKGlzRXhwYW5kZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XHJcbn0+ID0gKHByb3BzKSA9PiB7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IHN0YXRlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZSk7XHJcbiAgICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQ+KG51bGwpO1xyXG5cclxuICAgIHVzZVN3aXBlTGlzdGVuZXIoe1xyXG4gICAgICAgIHJlZixcclxuICAgICAgICBvblN3aXBlOiAoZGlyZWN0aW9uOiBTd2lwZURpcmVjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09PSBcImhvcml6b250YWwtbGVmdFwiKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wcy5zZXRJc05hdmlnYXRpb25QYW5lbEV4cGFuZGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBEZXNjcmlwdGlvbiBvZiB0aGUgZ3JvdXBzIG9mIHByb2R1Y3QgdGlsZXMgdG8gZGlzcGxheSBpbiB0aGUgTmF2aWdhdGlvbiBwYW5lbFxyXG4gICAgY29uc3QgbmF2aWdhdGlvbk1lbnVHcm91cHM6IE5hdmlnYXRpb25NZW51R3JvdXBJbmZvW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJJbmZyYXN0cnVjdHVyZVwiLFxyXG4gICAgICAgICAgICBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1tZW51LWljb24tZHJvcGRvd24taW5mcmFzdHJ1Y3R1cmUuc3ZnXCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3RMaW5rczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk1lcmFraVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTWVyYWtpLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJOaW5qYSBSTU1cIixcclxuICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLk5pbmphUk1NLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJTb2xhcndpbmRzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5Tb2xhcndpbmRzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJWTVdhcmVcIixcclxuICAgICAgICAgICAgICAgICAgICB0aWxlTWFwcGluZzogUHJvZHVjdFBvcnRhbFRpbGVNYXBwaW5nLlZNV2FyZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIlNlY3VyaXR5XCIsXHJcbiAgICAgICAgICAgIGljb25QYXRoOiBcIi9uYXZpZ2F0aW9uLW1lbnUtaWNvbi1kcm9wZG93bi1zZWN1cml0eS5zdmdcIixcclxuICAgICAgICAgICAgcHJvZHVjdExpbmtzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiRm9ydGlBbmFseXplclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuRm9ydGlBbmFseXplcixcclxuICAgICAgICAgICAgICAgICAgICBtb2RhbE1lc3NhZ2U6IFwiSW4gb3JkZXIgdG8gYWNjZXNzIHRoZSBGb3J0aUFuYWx5emVyLCB5b3UgbXVzdCBiZSBjb25uZWN0ZWQgdG8geW91ciBjb21wYW55IFZQTi5cIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiRm9ydGlHYXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5Gb3J0aUdhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kYWxNZXNzYWdlOiBcIkluIG9yZGVyIHRvIGFjY2VzcyB0aGUgRm9ydGlHYXRlLCB5b3UgbXVzdCBiZSBjb25uZWN0ZWQgdG8geW91ciBjb21wYW55IFZQTi5cIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiRm9ydGlNYWlsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5Gb3J0aU1haWwsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk1pbWVjYXN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5NaW1lY2FzdCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkNsb3VkIEFkbWluXCIsXHJcbiAgICAgICAgICAgIGljb25QYXRoOiBcIi9uYXZpZ2F0aW9uLW1lbnUtaWNvbi1kcm9wZG93bi1jbG91ZC5zdmdcIixcclxuICAgICAgICAgICAgcHJvZHVjdExpbmtzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwiOHg4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5fOHg4LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJBenVyZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuQXp1cmUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk0zNjUgQWRtaW4gQ2VudHJlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5NMzY1QWRtaW5DZW50cmUsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIk5NU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpbGVNYXBwaW5nOiBQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmcuTk1TLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGl0bGU6IFwiTGljZW5zaW5nICYgQmlsbGluZ1wiLFxyXG4gICAgICAgICAgICBpY29uUGF0aDogXCIvbmF2aWdhdGlvbi1tZW51LWljb24tZHJvcGRvd24tbGljZW5zaW5nLWJpbGxpbmcuc3ZnXCIsXHJcbiAgICAgICAgICAgIHByb2R1Y3RMaW5rczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBcImFCSUxMaXR5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5XZWJBYmlsaXR5LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJNaWNyb3NvZnQgTGljZW5zaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdGlsZU1hcHBpbmc6IFByb2R1Y3RQb3J0YWxUaWxlTWFwcGluZy5NaWNyb3NvZnRMaWNlbnNpbmcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIE5hbWUgb2YgdGhlIHBhZ2UgYWZ0ZXIgd2hpY2ggdG8gYWRkIHRoZSBuYXZpZ2F0aW9uIG1lbnUgZ3JvdXBzXHJcbiAgICBjb25zdCBBRERfTkFWSUdBVElPTl9NRU5VX0dST1VQU19BRlRFUl9QQUdFX1RJVExFOiBQYWdlSW5mb1tcInRpdGxlXCJdID0gUEFHRVMuUHJvZmlsZS50aXRsZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwibmF2aWdhdGlvbi1wYW5lbFwiIGRhdGEtaXMtc2hvd249e3Byb3BzLmlzTmF2aWdhdGlvblBhbmVsRXhwYW5kZWR9IHJlZj17cmVmfT5cclxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cIm5hdmlnYXRpb24tcGFuZWwtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIHtPYmplY3QudmFsdWVzKFBBR0VTKVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlSW5mbykgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmZvLm5hdmlnYXRpb25QYW5lbENvbmZpZy5pc1Zpc2libGUgJiYgcGFnZUluZm8uaXNQZXJtaXR0ZWQodXNlck1ldGFkYXRhLCBzdGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgocGFnZUluZm8pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e3BhZ2VJbmZvLnRpdGxlfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwYWdlSW5mby50aXRsZSA9PT0gQUREX05BVklHQVRJT05fTUVOVV9HUk9VUFNfQUZURVJfUEFHRV9USVRMRSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTWVudUdyb3Vwcy5tYXAoKG5hdmlnYXRpb25NZW51R3JvdXApID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZpZ2F0aW9uTWVudUdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtuYXZpZ2F0aW9uTWVudUdyb3VwLnRpdGxlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25NZW51R3JvdXA9e25hdmlnYXRpb25NZW51R3JvdXB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtwYWdlSW5mby5wYXRofSBjbGFzc05hbWU9XCJuYXZpZ2F0aW9uLXBhbmVsLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdmlnYXRpb25MaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uUGF0aD17XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZ2VJbmZvLm5hdmlnYXRpb25QYW5lbENvbmZpZy5pc1Zpc2libGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUluZm8ubmF2aWdhdGlvblBhbmVsQ29uZmlnLmljb25QYXRoKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lPXtwYWdlSW5mby50aXRsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17cGFnZUluZm8ucGF0aH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2luZ2xlUGFnZUFwcExpbms9e3BhZ2VJbmZvLnBhZ2VDb25maWcudHlwZSA9PT0gXCJpbnRlcm5hbFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgKTtcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgRmFJbmZvQ2lyY2xlIH0gZnJvbSBcInJlYWN0LWljb25zL2ZhXCI7XHJcbmltcG9ydCB7IEltQ2hlY2ttYXJrLCBJbVNwaW5uZXIyIH0gZnJvbSBcInJlYWN0LWljb25zL2ltXCI7XHJcbmltcG9ydCB7IHVzZURhdGFTZXJ2aWNlIH0gZnJvbSBcIi4uL0hvb2tzL3VzZURhdGFTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEltYWdlIH0gZnJvbSBcIi4vSW1hZ2VcIjtcclxuaW1wb3J0IHsgRXJyb3JCb3VuZGFyeSB9IGZyb20gXCIuL0Vycm9yQm91bmRhcnlcIjtcclxuaW1wb3J0IHsgU3dpcGVEaXJlY3Rpb24sIHVzZVN3aXBlTGlzdGVuZXIgfSBmcm9tIFwiLi4vSG9va3MvdXNlU3dpcGVMaXN0ZW5lclwiO1xyXG5pbXBvcnQgeyB1c2VBcHBJbnNpZ2h0cyB9IGZyb20gXCIuLi9Ib29rcy91c2VBcHBJbnNpZ2h0c1wiO1xyXG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSBcIi4uL0hlbHBlcnMvRGF0ZUhlbHBlclwiO1xyXG5cclxuLyoqIFRoZSB0eXBlIG9mIGZlZWRiYWNrLiAqL1xyXG50eXBlIEZlZWRiYWNrQ2F0ZWdvcnkgPSBcInN1Z2dlc3Rpb25cIiB8IFwibm90LXdvcmtpbmdcIiB8IG51bGw7XHJcblxyXG4vKiogVGhlIGN1cnJlbnQgc3VibWlzc2lvbiBzdGF0ZSBvZiB0aGUgRmVlZGJhY2sgYWN0aW9uLiAqL1xyXG50eXBlIFN1Ym1pc3Npb25TdGF0ZSA9IFwibm90LXNob3duXCIgfCBcInNob3duXCIgfCBcInN1Ym1pdHRpbmdcIiB8IFwiY29tcGxldGVcIiB8IFwiZXJyb3JcIjtcclxuXHJcbi8qKiBDb21wb25lbnQgdXNlZCBmb3IgcmVuZGVyaW5nIHRoZSBmZWVkYmFjayBwYW5lIGZvciB0aGUgU1BBLiAqL1xyXG5leHBvcnQgY29uc3QgRmVlZGJhY2tQYW5lOiBSZWFjdC5GQyA9ICgpID0+IHtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGRhdGFTZXJ2aWNlID0gdXNlRGF0YVNlcnZpY2UoKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhLCB0cmFja0V2ZW50V2l0aEJpc3RlY2hNZXRhZGF0YSB9ID0gdXNlQXBwSW5zaWdodHMoKTtcclxuICAgIGNvbnN0IGZlZWRiYWNrUGFuZUlzU2hvd24gPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmZlZWRiYWNrUGFuZUlzU2hvd24pO1xyXG5cclxuICAgIC8vIExvY2FsIGF0dHJpYnV0ZXNcclxuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICAgIGNvbnN0IFtzdWJtaXNzaW9uU3RhdGUsIHNldFN1Ym1pc3Npb25TdGF0ZV0gPSB1c2VTdGF0ZTxTdWJtaXNzaW9uU3RhdGU+KFwibm90LXNob3duXCIpO1xyXG4gICAgY29uc3QgW2ZlZWRiYWNrQ2F0ZWdvcnksIHNldEZlZWRiYWNrQ2F0ZWdvcnldID0gdXNlU3RhdGU8RmVlZGJhY2tDYXRlZ29yeT4obnVsbCk7XHJcbiAgICBjb25zdCBbZmVlZGJhY2tEZXNjcmlwdGlvbiwgc2V0RmVlZGJhY2tNZXNzYWdlXSA9IHVzZVN0YXRlKFwiXCIpO1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGZlZWRiYWNrUGFuZUlzU2hvd24pIHtcclxuICAgICAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7IHR5cGU6IFwiRmVlZGJhY2sgUGFuZSAtIE9wZW5lZFwiIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtmZWVkYmFja1BhbmVJc1Nob3duXSk7XHJcblxyXG4gICAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcclxuXHJcbiAgICB1c2VTd2lwZUxpc3RlbmVyKHtcclxuICAgICAgICByZWYsXHJcbiAgICAgICAgb25Td2lwZTogKGRpcmVjdGlvbjogU3dpcGVEaXJlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJpZ2h0XCIpIHtcclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRGZWVkYmFja1BhbmVJc1Nob3duXCIsIGZlZWRiYWNrUGFuZUlzU2hvd246IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgc3VibWlzc2lvbiBhcmVhIChidXR0b24gYW5kIHRleHQgYXJlYSkgdmlzaWJpbGl0eSB0byB0cnVlLCBhbHNvIHVwZGF0ZXMgdGhlIHR5cGUgb2Ygc3VibWlzc2lvbiB0byB0aGVcclxuICAgICAqIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbi5cclxuICAgICAqIEBwYXJhbSB0eXBlIFRoZSBmZWVkYmFjayB0eXBlIGJlaW5nIHBvc3RlZC5cclxuICAgICAqL1xyXG4gICAgY29uc3Qgc2V0U3VibWlzc2lvbkFyZWFTaG93bkFuZFR5cGUgPSAodHlwZTogRmVlZGJhY2tDYXRlZ29yeSkgPT4ge1xyXG4gICAgICAgIHNldEZlZWRiYWNrQ2F0ZWdvcnkodHlwZSk7XHJcbiAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKFwic2hvd25cIik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzZXQgdGhlIGZlZWRiYWNrIHBhbmUgd2hlbiBpdCBpcyBoaWRkZW4gYW5kIGluIGEgc3RhdGUgb2YgJ2NvbXBsZXRlJy5cclxuICAgICAqL1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBpZiAoc3VibWlzc2lvblN0YXRlID09PSBcImNvbXBsZXRlXCIpIHtcclxuICAgICAgICAgICAgc2V0RmVlZGJhY2tNZXNzYWdlKFwiXCIpO1xyXG4gICAgICAgICAgICBzZXRGZWVkYmFja0NhdGVnb3J5KG51bGwpO1xyXG4gICAgICAgICAgICBzZXRTdWJtaXNzaW9uU3RhdGUoXCJub3Qtc2hvd25cIik7XHJcbiAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LCBbZmVlZGJhY2tQYW5lSXNTaG93biwgc3VibWlzc2lvblN0YXRlXSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVkIHRoZSB2YWx1ZSB0aGUgZmVlZGJhY2tNZXNzYWdlIHZhcmlhYmxlLlxyXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSB0cmlnZ2VyaW5nIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBjb25zdCBoYW5kbGVNZXNzYWdlQ2hhbmdlID0gKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4ge1xyXG4gICAgICAgIHNldEZlZWRiYWNrTWVzc2FnZShldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1Ym1pdHMgYSBmZWVkYmFjayBwb3J0YWwgYWN0aW9uIGFuZCBwcm9jZXNzZXMgdGhlIHN1Ym1pc3Npb24uXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHNlbmRQb3J0YWxGZWVkYmFjaygpIHtcclxuICAgICAgICAvLyBJZiB0aGUgc3VibWlzc2lvbiBib3ggaXMgZW1wdHkuXHJcbiAgICAgICAgaWYgKGZlZWRiYWNrRGVzY3JpcHRpb24gPT09IFwiXCIpIHtcclxuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiRGVzY3JpcHRpb24gUmVxdWlyZWRcIik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdGhlIG5vdCB3b3JraW5nIG1lc3NhZ2UuXHJcbiAgICAgICAgaWYgKHNldEVycm9yTWVzc2FnZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXBkYXRlcyB0aGUgR1VJIHRvIHZpc3VhbGx5IHJlcHJlc2VudCBhbiB1cGRhdGUuXHJcbiAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKFwic3VibWl0dGluZ1wiKTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdHJhY2tFdmVudFdpdGhCaXN0ZWNoTWV0YWRhdGE/Lih7IHR5cGU6IFwiRmVlZGJhY2sgUGFuZSAtIEZlZWRiYWNrIGNyZWF0aW9uIHN1Ym1pdHRlZFwiLCBmZWVkYmFja0NhdGVnb3J5IH0pO1xyXG5cclxuICAgICAgICAgICAgYXdhaXQgZGF0YVNlcnZpY2UuZXhlY3V0ZUZlZWRiYWNrUG9ydGFsQWN0aW9uKGZlZWRiYWNrRGVzY3JpcHRpb24sIGZlZWRiYWNrQ2F0ZWdvcnkpO1xyXG5cclxuICAgICAgICAgICAgc2V0U3VibWlzc2lvblN0YXRlKFwiY29tcGxldGVcIik7XHJcbiAgICAgICAgICAgIHNldEZlZWRiYWNrTWVzc2FnZShcIlwiKTtcclxuXHJcbiAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICBub3RpZmljYXRpb246IHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkZlZWRiYWNrIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWRPblJlbGF0aXZlVXJsOiBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9JHt3aW5kb3cubG9jYXRpb24uc2VhcmNofWAsXHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVVudGlsOiBEYXRlSGVscGVyLmFkZFNlY29uZHMobmV3IERhdGUoKSwgMTApLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0RmVlZGJhY2tQYW5lSXNTaG93blwiLCBmZWVkYmFja1BhbmVJc1Nob3duOiBmYWxzZSB9KTtcclxuXHJcbiAgICAgICAgICAgIHRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhPy4oe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJGZWVkYmFjayBQYW5lIC0gRmVlZGJhY2sgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgICAgICAgIGZlZWRiYWNrQ2F0ZWdvcnksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHNldFN1Ym1pc3Npb25TdGF0ZShcImVycm9yXCIpO1xyXG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICBcIlVuYWJsZSB0byBzdWJtaXQgeW91ciBmZWVkYmFjay4gUGxlYXNlIHZlcmlmeSB5b3VyIGNvbm5lY3Rpb24sIHJlZnJlc2ggdGhlIHBhZ2UsIGFuZCB0cnkgYWdhaW4uXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmVlZGJhY2stcGFuZVwiIGRhdGEtaXMtc2hvd249e2Ake2ZlZWRiYWNrUGFuZUlzU2hvd259YH0gcmVmPXtyZWZ9PlxyXG4gICAgICAgICAgICA8RXJyb3JCb3VuZGFyeT5cclxuICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJmZWVkYmFjay10aXRsZVwiPlBsZWFzZSBwcm92aWRlIGFueSBmZWVkYmFjayBhYm91dCB0aGUgcG9ydGFsPC9oMz5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJmZWVkYmFjay1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZlZWRiYWNrLWJ1dHRvbi1zZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmZWVkYmFjay10eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJub3Qtd29ya2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmVlZGJhY2stdHlwZS1ub3Qtd29ya2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFN1Ym1pc3Npb25BcmVhU2hvd25BbmRUeXBlKFwibm90LXdvcmtpbmdcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmVlZGJhY2stYnV0dG9uLWxhYmVsICR7ZmVlZGJhY2tDYXRlZ29yeSA9PT0gXCJub3Qtd29ya2luZ1wiICYmIFwic2VsZWN0ZWRcIn1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sRm9yPVwiZmVlZGJhY2stdHlwZS1ub3Qtd29ya2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8SW1hZ2Ugc3JjPVwiL2ZlZWRiYWNrLW5vdC13b3JraW5nLWljb24uc3ZnXCIgd2lkdGg9ezI0fSBoZWlnaHQ9ezI0fSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmZWVkYmFjay1idXR0b24tdGV4dFwiPlNvbWV0aGluZyBpc24ndCB3b3JraW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZlZWRiYWNrLWJ1dHRvbi1zZWxlY3RvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmZWVkYmFjay10eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzdWdnZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJmZWVkYmFjay10eXBlLXN1Z2dlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTdWJtaXNzaW9uQXJlYVNob3duQW5kVHlwZShcInN1Z2dlc3Rpb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmVlZGJhY2stYnV0dG9uLWxhYmVsICR7ZmVlZGJhY2tDYXRlZ29yeSA9PT0gXCJzdWdnZXN0aW9uXCIgJiYgXCJzZWxlY3RlZFwifWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxGb3I9XCJmZWVkYmFjay10eXBlLXN1Z2dlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIHNyYz1cIi9mZWVkYmFjay1zdWdnZXN0aW9uLWljb24uc3ZnXCIgd2lkdGg9ezI0fSBoZWlnaHQ9ezI0fSAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmZWVkYmFjay1idXR0b24tdGV4dFwiPkkgaGF2ZSBhIHN1Z2dlc3Rpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICB7ZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImRlc2NyaXB0aW9uLXJlcXVpcmVkXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ2YWxpZGF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYUluZm9DaXJjbGUgY2xhc3NOYW1lPVwiaW5mby1jaXJjbGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvck1lc3NhZ2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZSAhPT0gXCJub3Qtc2hvd25cIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmZWVkYmFjay1kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aD17NTAwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHM9ezMwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9ezEwfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtmZWVkYmFja0Rlc2NyaXB0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGxlYXNlIHByb3ZpZGUgYW55IGZlZWRiYWNrIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVNZXNzYWdlQ2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImZlZWRiYWNrLXN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2VuZFBvcnRhbEZlZWRiYWNrKCl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pc3Npb25TdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCIgfHwgc3VibWlzc2lvblN0YXRlID09PSBcImNvbXBsZXRlXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1pcy1zdWJtaXR0ZWQ9e2Ake3N1Ym1pc3Npb25TdGF0ZX1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N1Ym1pc3Npb25TdGF0ZSA9PT0gXCJzdWJtaXR0aW5nXCIgJiYgPEltU3Bpbm5lcjIgY2xhc3NOYW1lPVwic3BpblwiIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3VibWlzc2lvblN0YXRlID09PSBcImNvbXBsZXRlXCIgJiYgPEltQ2hlY2ttYXJrIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57c3VibWlzc2lvblN0YXRlID09PSBcImNvbXBsZXRlXCIgPyBcIlN1Ym1pdHRlZFwiIDogXCJTdWJtaXRcIn08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L0Vycm9yQm91bmRhcnk+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCB7IENhc2VUeXBlIH0gZnJvbSBcIi4uL0VudW1zL0Nhc2VUeXBlXCI7XHJcbmltcG9ydCB7IEluY2lkZW50U3RhdHVzQ29kZSB9IGZyb20gXCIuLi9FbnVtcy9JbmNpZGVudFN0YXR1c0NvZGVcIjtcclxuaW1wb3J0IHsgQmFzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9CYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IHVzZUFwcEluc2lnaHRzIH0gZnJvbSBcIi4vdXNlQXBwSW5zaWdodHNcIjtcclxuaW1wb3J0IHsgdXNlRGF0YVNlcnZpY2UgfSBmcm9tIFwiLi91c2VEYXRhU2VydmljZVwiO1xyXG5pbXBvcnQgeyB1c2VVc2VyTWV0YWRhdGEgfSBmcm9tIFwiLi91c2VVc2VyTWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgQ2FzZVBlcm1pc3Npb25MZXZlbCB9IGZyb20gXCIuLi9FbnVtcy9DYXNlUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IE9yZGVyUGVybWlzc2lvbkxldmVsIH0gZnJvbSBcIi4uL0VudW1zL09yZGVyUGVybWlzc2lvbkxldmVsXCI7XHJcbmltcG9ydCB7IHVzZXJIYXNQb3J0YWxBY2Nlc3MgfSBmcm9tIFwiLi4vSGVscGVycy91c2VySGFzUG9ydGFsQWNjZXNzXCI7XHJcbmltcG9ydCB7IGlzUHJvZHVjdGlvbiB9IGZyb20gXCIuLi9Db21wb25lbnRzL0Vudmlyb25tZW50QmFubmVyXCI7XHJcbmltcG9ydCB7IEludm9pY2VQZXJtaXNzaW9uTGV2ZWwgfSBmcm9tIFwiLi4vRW51bXMvSW52b2ljZVBlcm1pc3Npb25MZXZlbFwiO1xyXG5cclxuLyoqIEhvb2sgZm9yIGFsbCBkYXRhIHJldHJpZXZhbHMgdG8gcGVyZm9ybSAqL1xyXG5leHBvcnQgY29uc3QgdXNlRGF0YVJldHJpZXZhbHMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBkYXRhU2VydmljZSA9IHVzZURhdGFTZXJ2aWNlKCk7XHJcbiAgICBjb25zdCB1c2VyTWV0YWRhdGEgPSB1c2VVc2VyTWV0YWRhdGEoKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IGluY2lkZW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuaW5jaWRlbnRzKTtcclxuICAgIGNvbnN0IGNvbnRhY3RzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jb250YWN0cyk7XHJcbiAgICBjb25zdCBwcm9kdWN0cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUucHJvZHVjdHMpO1xyXG4gICAgY29uc3Qgb3JkZXJzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5vcmRlcnMpO1xyXG4gICAgY29uc3QgaW52b2ljZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLmludm9pY2VzKTtcclxuICAgIGNvbnN0IG5ldHdvcmtPcmRlcnMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLm5ldHdvcmtPcmRlcnMpO1xyXG4gICAgY29uc3QgcHJvamVjdHMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnByb2plY3RzKTtcclxuICAgIGNvbnN0IGN1c3RvbWVyQXNzZXRzID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5jdXN0b21lckFzc2V0cyk7XHJcbiAgICBjb25zdCBhY2NvdW50cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuYWNjb3VudHMpO1xyXG4gICAgY29uc3QgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXMgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IERlZmF1bHRSb290U3RhdGUpID0+IHN0YXRlLnBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzKTtcclxuICAgIGNvbnN0IGJsb2dQb3N0cyA9IHVzZVNlbGVjdG9yKChzdGF0ZTogRGVmYXVsdFJvb3RTdGF0ZSkgPT4gc3RhdGUuYmxvZ1Bvc3RzKTtcclxuICAgIGNvbnN0IHsgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhIH0gPSB1c2VBcHBJbnNpZ2h0cygpO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBBY2NvdW50c1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGFjY291bnRzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgfHwgYWNjb3VudHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyB0byB0aGUgUG9ydGFsXHJcbiAgICAgICAgaWYgKCF1c2VySGFzUG9ydGFsQWNjZXNzKHVzZXJNZXRhZGF0YSkpIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRBY2NvdW50c1wiLCBhY2NvdW50czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9IH0pO1xyXG5cclxuICAgICAgICBkYXRhU2VydmljZVxyXG4gICAgICAgICAgICAucmV0cmlldmVBY2NvdW50cygpXHJcbiAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0QWNjb3VudHNcIiwgYWNjb3VudHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9IH0pKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSwgW2RhdGFTZXJ2aWNlLCBkaXNwYXRjaCwgYWNjb3VudHMsIHVzZXJNZXRhZGF0YS5jb250YWN0SWRdKTtcclxuXHJcbiAgICAvLyBSZXRyaWV2ZSB0aGUgQ29udGFjdHNcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgdW5hdXRoZW50aWNhdGVkXHJcbiAgICAgICAgaWYgKCF1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb250YWN0cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiIHx8IGNvbnRhY3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBubyBhY2Nlc3MgdG8gdGhlIFBvcnRhbFxyXG4gICAgICAgIC8vIE5PVEU6IFNvbWVvbmUgd2l0aG91dCBDb250YWN0LXNwZWNpZmljIHBlcm1pc3Npb25zIG11c3QgYmUgcGVybWl0dGVkIHRvIHBlcmZvcm0gdGhlXHJcbiAgICAgICAgLy8gQ29udGFjdHMgcmV0cmlldmFsLCBhcyB0aGVpciBvd24gQ29udGFjdCByZWNvcmQgd2lsbCBiZSByZXR1cm5lZCwgd2hpY2ggaXMgcmVxdWlyZWRcclxuICAgICAgICAvLyBmb3IgdGhlICdQcm9maWxlJyBwYWdlICgjMzQ3ODYpLlxyXG4gICAgICAgIGlmICghdXNlckhhc1BvcnRhbEFjY2Vzcyh1c2VyTWV0YWRhdGEpKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRoZSByZXRyaWV2YWwgKGNvc21ldGljIG9ubHk7IEVudGl0eSBQZXJtaXNzaW9ucyB3b3VsZCBibG9jayB0aGlzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0Q29udGFjdHNcIiwgY29udGFjdHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSB9KTtcclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlQ29udGFjdHMoKVxyXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGlzcGF0Y2goeyB0eXBlOiBcIlNldENvbnRhY3RzXCIsIGNvbnRhY3RzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGEgfSB9KSlcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIGNvbnRhY3RzLCB1c2VyTWV0YWRhdGEuY29udGFjdElkXSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIGFjdGl2ZSBDYXNlc1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICAgICAgaWYgKCF1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGluY2lkZW50cy5hY3RpdmVJbmNpZGVudHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiB8fFxyXG4gICAgICAgICAgICAgICAgaW5jaWRlbnRzLmFjdGl2ZUluY2lkZW50cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRpbmdcIlxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyBhcyBhIGJhc2UgcGVybWlzc2lvbiBvciBoYXMgbm8gYWNjZXNzIHRvIENhc2VzLlxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICB1c2VyTWV0YWRhdGEuYmFzZVBlcm1pc3Npb25MZXZlbCA9PT0gQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSB8fFxyXG4gICAgICAgICAgICAgICAgdXNlck1ldGFkYXRhLnBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwgPT09IENhc2VQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0aGUgcmV0cmlldmFsIChjb3NtZXRpYyBvbmx5OyBFbnRpdHkgUGVybWlzc2lvbnMgd291bGQgYmxvY2sgdGhpcylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJTZXRNYWpvckluY2lkZW50c1wiLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlTWFqb3JJbmNpZGVudHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSxcclxuICAgICAgICAgICAgICAgIHJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIlNldEFjdGl2ZUluY2lkZW50c1wiLCBhY3RpdmVJbmNpZGVudHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSB9KTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZGF0YVNlcnZpY2UucmV0cmlldmVBY3RpdmVJbmNpZGVudHMoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVNYWpvckluY2lkZW50cyA9IGRhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChpbmNpZGVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jaWRlbnQuY2FzZXR5cGVjb2RlID09PSBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbmNpZGVudC5zdGF0dXNjb2RlID09PSBJbmNpZGVudFN0YXR1c0NvZGVbXCJJbiBQcm9ncmVzc1wiXSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jaWRlbnQuc3RhdHVzY29kZSA9PT0gSW5jaWRlbnRTdGF0dXNDb2RlW1wiT24gSG9sZFwiXSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jaWRlbnQuc3RhdHVzY29kZSA9PT0gSW5jaWRlbnRTdGF0dXNDb2RlW1wiUGVuZGluZyBGZWVkYmFja1wiXSlcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub25NYWpvckluY2lkZW50cyA9IGRhdGEuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChpbmNpZGVudCkgPT4gaW5jaWRlbnQuY2FzZXR5cGVjb2RlICE9PSBDYXNlVHlwZVtcIk1ham9yIEluY2lkZW50XCJdXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cyA9IGF3YWl0IGRhdGFTZXJ2aWNlLnJldHJpZXZlUmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0TWFqb3JJbmNpZGVudHNcIixcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVNYWpvckluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBhY3RpdmVNYWpvckluY2lkZW50cyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiByZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldEFjdGl2ZUluY2lkZW50c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRlZFwiLCBkYXRhOiBub25NYWpvckluY2lkZW50cyB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkoKTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIGluY2lkZW50cywgdXNlck1ldGFkYXRhLmNvbnRhY3RJZF0pO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBDdXN0b21lciBQcm9kdWN0c1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHByb2R1Y3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgfHwgcHJvZHVjdHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyB0byB0aGUgUG9ydGFsXHJcbiAgICAgICAgaWYgKCF1c2VySGFzUG9ydGFsQWNjZXNzKHVzZXJNZXRhZGF0YSkpIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRQcm9kdWN0c1wiLCBwcm9kdWN0czogeyBsb2FkaW5nU3RhdHVzOiBcImxvYWRpbmdcIiB9IH0pO1xyXG5cclxuICAgICAgICBkYXRhU2VydmljZVxyXG4gICAgICAgICAgICAucmV0cmlldmVQcm9kdWN0cygpXHJcbiAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0UHJvZHVjdHNcIiwgcHJvZHVjdHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9IH0pKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSwgW2RhdGFTZXJ2aWNlLCBkaXNwYXRjaCwgcHJvZHVjdHMsIHVzZXJNZXRhZGF0YS5jb250YWN0SWRdKTtcclxuXHJcbiAgICAvLyBSZXRyaWV2ZSB0aGUgTWFqb3IgSW5jaWRlbnQgVXBkYXRlc1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlcy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiIHx8XHJcbiAgICAgICAgICAgIHBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGluZ1wiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBubyBhY2Nlc3MgYXMgYSBiYXNlIHBlcm1pc3Npb24gb3IgaGFzIG5vIGFjY2VzcyB0byBDYXNlcy5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsID09PSBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdIHx8XHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5wb3J0YWxDYXNlUGVybWlzc2lvbkxldmVsID09PSBDYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRoZSByZXRyaWV2YWwgKGNvc21ldGljIG9ubHk7IEVudGl0eSBQZXJtaXNzaW9ucyB3b3VsZCBibG9jayB0aGlzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0UG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNcIiwgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSB9KTtcclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlUG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNSZWdhcmRpbmdBY3RpdmVBbmRSZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMoKVxyXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT5cclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSwgW2RhdGFTZXJ2aWNlLCBkaXNwYXRjaCwgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXMsIHVzZXJNZXRhZGF0YS5jb250YWN0SWRdKTtcclxuXHJcbiAgICAvLyBSZXRyaWV2ZSB0aGUgQmxvZyBQb3N0c1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB0aGUgQmxvZyBQb3N0J3MgbG9hZGluZyBzdGF0dXMgaXMgYWxyZWFkeSBsb2FkZWQgb3IgbG9hZGluZywgZG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbC5cclxuICAgICAgICBpZiAoYmxvZ1Bvc3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgfHwgYmxvZ1Bvc3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJldHVybiBlYXJseSBpZiB0aGUgVXNlciBoYXMgbm8gYWNjZXNzIHRvIHRoZSBQb3J0YWwuXHJcbiAgICAgICAgaWYgKCF1c2VySGFzUG9ydGFsQWNjZXNzKHVzZXJNZXRhZGF0YSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlQmxvZ1Bvc3RSZWNvcmRzKClcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJTZXRCbG9nUG9zdHNcIixcclxuICAgICAgICAgICAgICAgICAgICBibG9nUG9zdHM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSwgW2RhdGFTZXJ2aWNlLCBkaXNwYXRjaCwgYmxvZ1Bvc3RzXSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIE5ldHdvcmsgT3JkZXJzXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIElmIHVuYXV0aGVudGljYXRlZFxyXG4gICAgICAgIGlmICghdXNlck1ldGFkYXRhLmNvbnRhY3RJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAobmV0d29ya09yZGVycy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiIHx8IG5ldHdvcmtPcmRlcnMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyBhcyBhIGJhc2UgcGVybWlzc2lvbiBvciBoYXMgbm8gYWNjZXNzIHRvIE9yZGVycy5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsID09PSBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdIHx8XHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCA9PT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRPRE8gIzM0Nzk3OiBSZW1vdmUgYmVsb3cgY2hlY2sgb25jZSBOZXR3b3JrIE9yZGVycyBjYW4gYmUgc2hvd24gb24gdGhlIFBvcnRhbFxyXG4gICAgICAgIGlmIChpc1Byb2R1Y3Rpb24pIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXROZXR3b3JrT3JkZXJzXCIsIG5ldHdvcmtPcmRlcnM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkaW5nXCIgfSB9KTtcclxuXHJcbiAgICAgICAgZGF0YVNlcnZpY2VcclxuICAgICAgICAgICAgLnJldHJpZXZlTmV0d29ya09yZGVycygpXHJcbiAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PlxyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0TmV0d29ya09yZGVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtPcmRlcnM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIiwgZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGE/LihlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSwgW2RhdGFTZXJ2aWNlLCBkaXNwYXRjaCwgbmV0d29ya09yZGVycywgdXNlck1ldGFkYXRhLmNvbnRhY3RJZF0pO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBQcm9qZWN0c1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHByb2plY3RzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGVkXCIgfHwgcHJvamVjdHMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyBhcyBhIGJhc2UgcGVybWlzc2lvbiBvciBoYXMgbm8gYWNjZXNzIHRvIE9yZGVycy5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsID09PSBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdIHx8XHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCA9PT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRPRE8gIzM0Nzk3OiBSZW1vdmUgYmVsb3cgY2hlY2sgb25jZSBXb3JrLWJhc2VkIExpbmVzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsXHJcbiAgICAgICAgaWYgKGlzUHJvZHVjdGlvbikge1xyXG4gICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0aGUgcmV0cmlldmFsIChjb3NtZXRpYyBvbmx5OyBFbnRpdHkgUGVybWlzc2lvbnMgd291bGQgYmxvY2sgdGhpcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIlNldFByb2plY3RzXCIsIHByb2plY3RzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfSk7XHJcblxyXG4gICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXRyaWV2ZVByb2plY3RzKClcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJTZXRQcm9qZWN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGEgfSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIHByb2plY3RzLCB1c2VyTWV0YWRhdGEuY29udGFjdElkXSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIE9yZGVyc1xyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICAvLyBJZiB1bmF1dGhlbnRpY2F0ZWRcclxuICAgICAgICBpZiAoIXVzZXJNZXRhZGF0YS5jb250YWN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG9yZGVycy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiIHx8IG9yZGVycy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRpbmdcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPICMzNDc5NzogUmVtb3ZlIGJlbG93IGNoZWNrIG9uY2UgT3JkZXJzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsXHJcbiAgICAgICAgaWYgKGlzUHJvZHVjdGlvbikge1xyXG4gICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0aGUgcmV0cmlldmFsIChjb3NtZXRpYyBvbmx5OyBFbnRpdHkgUGVybWlzc2lvbnMgd291bGQgYmxvY2sgdGhpcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vIGFjY2VzcyBhcyBhIGJhc2UgcGVybWlzc2lvbiBvciBoYXMgbm8gYWNjZXNzIHRvIE9yZGVycy5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5iYXNlUGVybWlzc2lvbkxldmVsID09PSBCYXNlUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdIHx8XHJcbiAgICAgICAgICAgIHVzZXJNZXRhZGF0YS5wb3J0YWxPcmRlclBlcm1pc3Npb25MZXZlbCA9PT0gT3JkZXJQZXJtaXNzaW9uTGV2ZWxbXCJObyBBY2Nlc3NcIl1cclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdGhlIHJldHJpZXZhbCAoY29zbWV0aWMgb25seTsgRW50aXR5IFBlcm1pc3Npb25zIHdvdWxkIGJsb2NrIHRoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRPcmRlcnNcIiwgb3JkZXJzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfSk7XHJcblxyXG4gICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXRyaWV2ZU9yZGVycygpXHJcbiAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PlxyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiU2V0T3JkZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGEgfSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIG9yZGVycywgdXNlck1ldGFkYXRhLmNvbnRhY3RJZF0pO1xyXG5cclxuICAgIC8vIFJldHJpZXZlIHRoZSBDdXN0b21lciBBc3NldHNcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgLy8gSWYgdW5hdXRoZW50aWNhdGVkXHJcbiAgICAgICAgaWYgKCF1c2VyTWV0YWRhdGEuY29udGFjdElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjdXN0b21lckFzc2V0cy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRlZFwiIHx8IGN1c3RvbWVyQXNzZXRzLmxvYWRpbmdTdGF0dXMgPT09IFwibG9hZGluZ1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIElmIHRoZSB1c2VyIGhhcyBubyBhY2Nlc3MgYXMgYSBiYXNlIHBlcm1pc3Npb24gb3IgaGFzIG5vIGFjY2VzcyB0byBPcmRlcnMuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB1c2VyTWV0YWRhdGEuYmFzZVBlcm1pc3Npb25MZXZlbCA9PT0gQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSB8fFxyXG4gICAgICAgICAgICB1c2VyTWV0YWRhdGEucG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWwgPT09IE9yZGVyUGVybWlzc2lvbkxldmVsW1wiTm8gQWNjZXNzXCJdXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRoZSByZXRyaWV2YWwgKGNvc21ldGljIG9ubHk7IEVudGl0eSBQZXJtaXNzaW9ucyB3b3VsZCBibG9jayB0aGlzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPICMzNDc5NzogUmVtb3ZlIGJlbG93IGNoZWNrIG9uY2UgQ3VzdG9tZXIgQXNzZXRzIGNhbiBiZSBzaG93biBvbiB0aGUgUG9ydGFsXHJcbiAgICAgICAgaWYgKGlzUHJvZHVjdGlvbikge1xyXG4gICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0aGUgcmV0cmlldmFsIChjb3NtZXRpYyBvbmx5OyBFbnRpdHkgUGVybWlzc2lvbnMgd291bGQgYmxvY2sgdGhpcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIlNldEN1c3RvbWVyQXNzZXRzXCIsIGN1c3RvbWVyQXNzZXRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfSk7XHJcblxyXG4gICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXRyaWV2ZUN1c3RvbWVyQXNzZXRzKClcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJTZXRDdXN0b21lckFzc2V0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyQXNzZXRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGVkXCIsIGRhdGEgfSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIGN1c3RvbWVyQXNzZXRzLCB1c2VyTWV0YWRhdGEuY29udGFjdElkXSk7XHJcblxyXG4gICAgLy8gUmV0cmlldmUgdGhlIEludm9pY2VzXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIElmIHVuYXV0aGVudGljYXRlZFxyXG4gICAgICAgIGlmICghdXNlck1ldGFkYXRhLmNvbnRhY3RJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaW52b2ljZXMubG9hZGluZ1N0YXR1cyA9PT0gXCJsb2FkZWRcIiB8fCBpbnZvaWNlcy5sb2FkaW5nU3RhdHVzID09PSBcImxvYWRpbmdcIikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUT0RPICMzNzI4NzogUmVtb3ZlIGJlbG93IGNoZWNrIG9uY2UgSW52b2ljZXMgY2FuIGJlIHNob3duIG9uIHRoZSBQb3J0YWxcclxuICAgICAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0IHRoZSByZXRyaWV2YWwgKGNvc21ldGljIG9ubHk7IEVudGl0eSBQZXJtaXNzaW9ucyB3b3VsZCBibG9jayB0aGlzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgbm8gYWNjZXNzIGFzIGEgYmFzZSBwZXJtaXNzaW9uIG9yIGhhcyBubyBhY2Nlc3MgdG8gSW52b2ljZXMuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB1c2VyTWV0YWRhdGEuYmFzZVBlcm1pc3Npb25MZXZlbCA9PT0gQmFzZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXSB8fFxyXG4gICAgICAgICAgICB1c2VyTWV0YWRhdGEucG9ydGFsSW52b2ljZVBlcm1pc3Npb25MZXZlbCA9PT0gSW52b2ljZVBlcm1pc3Npb25MZXZlbFtcIk5vIEFjY2Vzc1wiXVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0aGUgcmV0cmlldmFsIChjb3NtZXRpYyBvbmx5OyBFbnRpdHkgUGVybWlzc2lvbnMgd291bGQgYmxvY2sgdGhpcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIlNldEludm9pY2VzXCIsIGludm9pY2VzOiB7IGxvYWRpbmdTdGF0dXM6IFwibG9hZGluZ1wiIH0gfSk7XHJcblxyXG4gICAgICAgIGRhdGFTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5yZXRyaWV2ZUludm9pY2VzKClcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGE6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIlNldEludm9pY2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaW52b2ljZXM6IHsgbG9hZGluZ1N0YXR1czogXCJsb2FkZWRcIiwgZGF0YSB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiBcIkFkZExhdGVzdEVycm9yXCIsIGVycm9yIH0pO1xyXG4gICAgICAgICAgICAgICAgdHJhY2tFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhPy4oZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH0sIFtkYXRhU2VydmljZSwgZGlzcGF0Y2gsIGludm9pY2VzLCB1c2VyTWV0YWRhdGEuY29udGFjdElkXSk7XHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBSZWFjdFJvdXRlclByb21wdCBmcm9tIFwicmVhY3Qtcm91dGVyLXByb21wdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlLCB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSBcIi4vQ29tcG9uZW50cy9IZWFkZXJcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvblBhbmVsIH0gZnJvbSBcIi4vQ29tcG9uZW50cy9OYXZpZ2F0aW9uUGFuZWxcIjtcclxuaW1wb3J0IHsgRmVlZGJhY2tQYW5lIH0gZnJvbSBcIi4vQ29tcG9uZW50cy9GZWVkYmFja1BhbmVcIjtcclxuaW1wb3J0IHsgdXNlUGFnZU5hdmlnYXRpb24gfSBmcm9tIFwiLi9Ib29rcy91c2VQYWdlTmF2aWdhdGlvblwiO1xyXG5pbXBvcnQgeyB1c2VEYXRhUmV0cmlldmFscyB9IGZyb20gXCIuL0hvb2tzL3VzZURhdGFSZXRyaWV2YWxzXCI7XHJcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRCYW5uZXIgfSBmcm9tIFwiLi9Db21wb25lbnRzL0Vudmlyb25tZW50QmFubmVyXCI7XHJcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSBcIi4vQ29tcG9uZW50cy9Nb2RhbFwiO1xyXG5pbXBvcnQgeyBpbml0aWFsaXplSWNvbnMgfSBmcm9tIFwiQGZsdWVudHVpL3JlYWN0XCI7XHJcblxyXG4vKiogQXBwbGljYXRpb24gZW50cnkgcG9pbnQgKi9cclxuZXhwb3J0IGNvbnN0IEFwcDogUmVhY3QuRkMgPSAoKSA9PiB7XHJcbiAgICBjb25zdCB7IHJvdXRlcyB9ID0gdXNlUGFnZU5hdmlnYXRpb24oKTtcclxuICAgIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcclxuICAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcclxuICAgIGNvbnN0IFtpc05hdmlnYXRpb25QYW5lbEV4cGFuZGVkLCBzZXROYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBpc0RpcnR5ID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlKSA9PiBzdGF0ZS5pc0RpcnR5KTtcclxuICAgIGNvbnN0IFtwcm9tcHRLZXksIHNldFByb21wdEtleV0gPSB1c2VTdGF0ZSgxKTtcclxuICAgIHVzZURhdGFSZXRyaWV2YWxzKCk7XHJcbiAgICBpbml0aWFsaXplSWNvbnMoKTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIHNldE5hdmlnYXRpb25QYW5lbEV4cGFuZGVkKGZhbHNlKTtcclxuICAgIH0sIFtsb2NhdGlvbl0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJBcHBcIj5cclxuICAgICAgICAgICAgPEhlYWRlclxyXG4gICAgICAgICAgICAgICAgc2V0TmF2aWdhdGlvblBhbmVsRXhwYW5kZWQ9e3NldE5hdmlnYXRpb25QYW5lbEV4cGFuZGVkfVxyXG4gICAgICAgICAgICAgICAgaXNOYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZD17aXNOYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZH1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPEVudmlyb25tZW50QmFubmVyIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2luZ2xlLXBhZ2UtYXBwbGljYXRpb24tYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPE5hdmlnYXRpb25QYW5lbFxyXG4gICAgICAgICAgICAgICAgICAgIGlzTmF2aWdhdGlvblBhbmVsRXhwYW5kZWQ9e2lzTmF2aWdhdGlvblBhbmVsRXhwYW5kZWR9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNOYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZD17c2V0TmF2aWdhdGlvblBhbmVsRXhwYW5kZWR9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAge3JvdXRlc31cclxuICAgICAgICAgICAgICAgIDxSZWFjdFJvdXRlclByb21wdCB3aGVuPXtpc0RpcnR5fSBrZXk9e3Byb21wdEtleX0+XHJcbiAgICAgICAgICAgICAgICAgICAgeyh7IGlzQWN0aXZlLCBvbkNvbmZpcm0sIG9uQ2FuY2VsIH0pID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPE1vZGFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01vZGFsU2hvd249e2lzQWN0aXZlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNNb2RhbFNob3duPXsoKSA9PiBvbkNhbmNlbChudWxsKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbkluZm89e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNNb2RhbDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJVbnNhdmVkIGNoYW5nZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFcnJvck1vZGFsOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDb250ZW50OiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxlYXZlIHdpdGhvdXQgc2F2aW5nPzwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbEJ1dHRvbkxhYmVsOiBcIkxlYXZlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsVGl0bGU6IFwiVW5zYXZlZCBjaGFuZ2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBkaXJ0eSBmbGFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7IHR5cGU6IFwiU2V0SXNEaXJ0eVwiLCBpc0RpcnR5OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJTZXRTYXZlRGlydHlQYWdlXCIsIHNhdmVEaXJ0eVBhZ2U6IHVuZGVmaW5lZCB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgcHJvbXB0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbmZpcm0obnVsbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHByb21wdCAodG8gYWxsb3cgaXQgdG8gcG9wdXAgYWdhaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9tcHRLZXkocHJvbXB0S2V5ICsgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L01vZGFsPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L1JlYWN0Um91dGVyUHJvbXB0PlxyXG4gICAgICAgICAgICAgICAgPEZlZWRiYWNrUGFuZSAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn07XHJcbiIsImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuXG4vKipcbiAqIEFkYXB0ZWQgZnJvbSBSZWFjdDogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3NoYXJlZC9mb3JtYXRQcm9kRXJyb3JNZXNzYWdlLmpzXG4gKlxuICogRG8gbm90IHJlcXVpcmUgdGhpcyBtb2R1bGUgZGlyZWN0bHkhIFVzZSBub3JtYWwgdGhyb3cgZXJyb3IgY2FsbHMuIFRoZXNlIG1lc3NhZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBlcnJvciBjb2Rlc1xuICogZHVyaW5nIGJ1aWxkLlxuICogQHBhcmFtIHtudW1iZXJ9IGNvZGVcbiAqL1xuZnVuY3Rpb24gZm9ybWF0UHJvZEVycm9yTWVzc2FnZShjb2RlKSB7XG4gIHJldHVybiBcIk1pbmlmaWVkIFJlZHV4IGVycm9yICNcIiArIGNvZGUgKyBcIjsgdmlzaXQgaHR0cHM6Ly9yZWR1eC5qcy5vcmcvRXJyb3JzP2NvZGU9XCIgKyBjb2RlICsgXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgXCIgKyAndXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycy4gJztcbn1cblxuLy8gSW5saW5lZCB2ZXJzaW9uIG9mIHRoZSBgc3ltYm9sLW9ic2VydmFibGVgIHBvbHlmaWxsXG52YXIgJCRvYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLm9ic2VydmFibGUgfHwgJ0BAb2JzZXJ2YWJsZSc7XG59KSgpO1xuXG4vKipcbiAqIFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBSZWR1eC5cbiAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2UgYWN0aW9uIHR5cGVzIGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIHJhbmRvbVN0cmluZyA9IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbignLicpO1xufTtcblxudmFyIEFjdGlvblR5cGVzID0ge1xuICBJTklUOiBcIkBAcmVkdXgvSU5JVFwiICsgcmFuZG9tU3RyaW5nKCksXG4gIFJFUExBQ0U6IFwiQEByZWR1eC9SRVBMQUNFXCIgKyByYW5kb21TdHJpbmcoKSxcbiAgUFJPQkVfVU5LTk9XTl9BQ1RJT046IGZ1bmN0aW9uIFBST0JFX1VOS05PV05fQUNUSU9OKCkge1xuICAgIHJldHVybiBcIkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05cIiArIHJhbmRvbVN0cmluZygpO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBvYmogVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFyZ3VtZW50IGFwcGVhcnMgdG8gYmUgYSBwbGFpbiBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgdmFyIHByb3RvID0gb2JqO1xuXG4gIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSB7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBwcm90bztcbn1cblxuLy8gSW5saW5lZCAvIHNob3J0ZW5lZCB2ZXJzaW9uIG9mIGBraW5kT2ZgIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQva2luZC1vZlxuZnVuY3Rpb24gbWluaUtpbmRPZih2YWwpIHtcbiAgaWYgKHZhbCA9PT0gdm9pZCAwKSByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gIGlmICh2YWwgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbDtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuICdhcnJheSc7XG4gIGlmIChpc0RhdGUodmFsKSkgcmV0dXJuICdkYXRlJztcbiAgaWYgKGlzRXJyb3IodmFsKSkgcmV0dXJuICdlcnJvcic7XG4gIHZhciBjb25zdHJ1Y3Rvck5hbWUgPSBjdG9yTmFtZSh2YWwpO1xuXG4gIHN3aXRjaCAoY29uc3RydWN0b3JOYW1lKSB7XG4gICAgY2FzZSAnU3ltYm9sJzpcbiAgICBjYXNlICdQcm9taXNlJzpcbiAgICBjYXNlICdXZWFrTWFwJzpcbiAgICBjYXNlICdXZWFrU2V0JzpcbiAgICBjYXNlICdNYXAnOlxuICAgIGNhc2UgJ1NldCc6XG4gICAgICByZXR1cm4gY29uc3RydWN0b3JOYW1lO1xuICB9IC8vIG90aGVyXG5cblxuICByZXR1cm4gdHlwZS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJycpO1xufVxuXG5mdW5jdGlvbiBjdG9yTmFtZSh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwuY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicgPyB2YWwuY29uc3RydWN0b3IubmFtZSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzRXJyb3IodmFsKSB7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgdmFsLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIHZhbC5jb25zdHJ1Y3RvciAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLnN0YWNrVHJhY2VMaW1pdCA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB0cnVlO1xuICByZXR1cm4gdHlwZW9mIHZhbC50b0RhdGVTdHJpbmcgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbC5nZXREYXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWwuc2V0RGF0ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24ga2luZE9mKHZhbCkge1xuICB2YXIgdHlwZU9mVmFsID0gdHlwZW9mIHZhbDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHR5cGVPZlZhbCA9IG1pbmlLaW5kT2YodmFsKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlT2ZWYWw7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqXG4gKiAqKldlIHJlY29tbWVuZCB1c2luZyB0aGUgYGNvbmZpZ3VyZVN0b3JlYCBtZXRob2RcbiAqIG9mIHRoZSBgQHJlZHV4anMvdG9vbGtpdGAgcGFja2FnZSoqLCB3aGljaCByZXBsYWNlcyBgY3JlYXRlU3RvcmVgLlxuICpcbiAqIFJlZHV4IFRvb2xraXQgaXMgb3VyIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciB3cml0aW5nIFJlZHV4IGxvZ2ljIHRvZGF5LFxuICogaW5jbHVkaW5nIHN0b3JlIHNldHVwLCByZWR1Y2VycywgZGF0YSBmZXRjaGluZywgYW5kIG1vcmUuXG4gKlxuICogKipGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2UgcmVhZCB0aGlzIFJlZHV4IGRvY3MgcGFnZToqKlxuICogKipodHRwczovL3JlZHV4LmpzLm9yZy9pbnRyb2R1Y3Rpb24vd2h5LXJ0ay1pcy1yZWR1eC10b2RheSoqXG4gKlxuICogYGNvbmZpZ3VyZVN0b3JlYCBmcm9tIFJlZHV4IFRvb2xraXQgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBgY3JlYXRlU3RvcmVgIHRoYXRcbiAqIHNpbXBsaWZpZXMgc2V0dXAgYW5kIGhlbHBzIGF2b2lkIGNvbW1vbiBidWdzLlxuICpcbiAqIFlvdSBzaG91bGQgbm90IGJlIHVzaW5nIHRoZSBgcmVkdXhgIGNvcmUgcGFja2FnZSBieSBpdHNlbGYgdG9kYXksIGV4Y2VwdCBmb3IgbGVhcm5pbmcgcHVycG9zZXMuXG4gKiBUaGUgYGNyZWF0ZVN0b3JlYCBtZXRob2QgZnJvbSB0aGUgY29yZSBgcmVkdXhgIHBhY2thZ2Ugd2lsbCBub3QgYmUgcmVtb3ZlZCwgYnV0IHdlIGVuY291cmFnZVxuICogYWxsIHVzZXJzIHRvIG1pZ3JhdGUgdG8gdXNpbmcgUmVkdXggVG9vbGtpdCBmb3IgYWxsIFJlZHV4IGNvZGUuXG4gKlxuICogSWYgeW91IHdhbnQgdG8gdXNlIGBjcmVhdGVTdG9yZWAgd2l0aG91dCB0aGlzIHZpc3VhbCBkZXByZWNhdGlvbiB3YXJuaW5nLCB1c2VcbiAqIHRoZSBgbGVnYWN5X2NyZWF0ZVN0b3JlYCBpbXBvcnQgaW5zdGVhZDpcbiAqXG4gKiBgaW1wb3J0IHsgbGVnYWN5X2NyZWF0ZVN0b3JlIGFzIGNyZWF0ZVN0b3JlfSBmcm9tICdyZWR1eCdgXG4gKlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVuaGFuY2VyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhcmd1bWVudHNbM10gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgwKSA6ICdJdCBsb29rcyBsaWtlIHlvdSBhcmUgcGFzc2luZyBzZXZlcmFsIHN0b3JlIGVuaGFuY2VycyB0byAnICsgJ2NyZWF0ZVN0b3JlKCkuIFRoaXMgaXMgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgY29tcG9zZSB0aGVtICcgKyAndG9nZXRoZXIgdG8gYSBzaW5nbGUgZnVuY3Rpb24uIFNlZSBodHRwczovL3JlZHV4LmpzLm9yZy90dXRvcmlhbHMvZnVuZGFtZW50YWxzL3BhcnQtNC1zdG9yZSNjcmVhdGluZy1hLXN0b3JlLXdpdGgtZW5oYW5jZXJzIGZvciBhbiBleGFtcGxlLicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMSkgOiBcIkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkLCByZWNlaXZlZDogJ1wiICsga2luZE9mKGVuaGFuY2VyKSArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDIpIDogXCJFeHBlY3RlZCB0aGUgcm9vdCByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQsIHJlY2VpdmVkOiAnXCIgKyBraW5kT2YocmVkdWNlcikgKyBcIidcIik7XG4gIH1cblxuICB2YXIgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyO1xuICB2YXIgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3RhdGU7XG4gIHZhciBjdXJyZW50TGlzdGVuZXJzID0gW107XG4gIHZhciBuZXh0TGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycztcbiAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoaXMgbWFrZXMgYSBzaGFsbG93IGNvcHkgb2YgY3VycmVudExpc3RlbmVycyBzbyB3ZSBjYW4gdXNlXG4gICAqIG5leHRMaXN0ZW5lcnMgYXMgYSB0ZW1wb3JhcnkgbGlzdCB3aGlsZSBkaXNwYXRjaGluZy5cbiAgICpcbiAgICogVGhpcyBwcmV2ZW50cyBhbnkgYnVncyBhcm91bmQgY29uc3VtZXJzIGNhbGxpbmdcbiAgICogc3Vic2NyaWJlL3Vuc3Vic2NyaWJlIGluIHRoZSBtaWRkbGUgb2YgYSBkaXNwYXRjaC5cbiAgICovXG5cbiAgZnVuY3Rpb24gZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpIHtcbiAgICBpZiAobmV4dExpc3RlbmVycyA9PT0gY3VycmVudExpc3RlbmVycykge1xuICAgICAgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMuc2xpY2UoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1hbmFnZWQgYnkgdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVudCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBwbGljYXRpb24uXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMpIDogJ1lvdSBtYXkgbm90IGNhbGwgc3RvcmUuZ2V0U3RhdGUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnVGhlIHJlZHVjZXIgaGFzIGFscmVhZHkgcmVjZWl2ZWQgdGhlIHN0YXRlIGFzIGFuIGFyZ3VtZW50LiAnICsgJ1Bhc3MgaXQgZG93biBmcm9tIHRoZSB0b3AgcmVkdWNlciBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgc3RvcmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuICAvKipcbiAgICogQWRkcyBhIGNoYW5nZSBsaXN0ZW5lci4gSXQgd2lsbCBiZSBjYWxsZWQgYW55IHRpbWUgYW4gYWN0aW9uIGlzIGRpc3BhdGNoZWQsXG4gICAqIGFuZCBzb21lIHBhcnQgb2YgdGhlIHN0YXRlIHRyZWUgbWF5IHBvdGVudGlhbGx5IGhhdmUgY2hhbmdlZC4gWW91IG1heSB0aGVuXG4gICAqIGNhbGwgYGdldFN0YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuICAgKlxuICAgKiBZb3UgbWF5IGNhbGwgYGRpc3BhdGNoKClgIGZyb20gYSBjaGFuZ2UgbGlzdGVuZXIsIHdpdGggdGhlIGZvbGxvd2luZ1xuICAgKiBjYXZlYXRzOlxuICAgKlxuICAgKiAxLiBUaGUgc3Vic2NyaXB0aW9ucyBhcmUgc25hcHNob3R0ZWQganVzdCBiZWZvcmUgZXZlcnkgYGRpc3BhdGNoKClgIGNhbGwuXG4gICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hpbGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuICAgKiB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGBkaXNwYXRjaCgpYCB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcy5cbiAgICogSG93ZXZlciwgdGhlIG5leHQgYGRpc3BhdGNoKClgIGNhbGwsIHdoZXRoZXIgbmVzdGVkIG9yIG5vdCwgd2lsbCB1c2UgYSBtb3JlXG4gICAqIHJlY2VudCBzbmFwc2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG4gICAqXG4gICAqIDIuIFRoZSBsaXN0ZW5lciBzaG91bGQgbm90IGV4cGVjdCB0byBzZWUgYWxsIHN0YXRlIGNoYW5nZXMsIGFzIHRoZSBzdGF0ZVxuICAgKiBtaWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJlZm9yZVxuICAgKiB0aGUgbGlzdGVuZXIgaXMgY2FsbGVkLiBJdCBpcywgaG93ZXZlciwgZ3VhcmFudGVlZCB0aGF0IGFsbCBzdWJzY3JpYmVyc1xuICAgKiByZWdpc3RlcmVkIGJlZm9yZSB0aGUgYGRpc3BhdGNoKClgIHN0YXJ0ZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGF0ZXN0XG4gICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciBBIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gZXZlcnkgZGlzcGF0Y2guXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBjaGFuZ2UgbGlzdGVuZXIuXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNCkgOiBcIkV4cGVjdGVkIHRoZSBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkLCByZWNlaXZlZDogJ1wiICsga2luZE9mKGxpc3RlbmVyKSArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNSkgOiAnWW91IG1heSBub3QgY2FsbCBzdG9yZS5zdWJzY3JpYmUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnSWYgeW91IHdvdWxkIGxpa2UgdG8gYmUgbm90aWZpZWQgYWZ0ZXIgdGhlIHN0b3JlIGhhcyBiZWVuIHVwZGF0ZWQsIHN1YnNjcmliZSBmcm9tIGEgJyArICdjb21wb25lbnQgYW5kIGludm9rZSBzdG9yZS5nZXRTdGF0ZSgpIGluIHRoZSBjYWxsYmFjayB0byBhY2Nlc3MgdGhlIGxhdGVzdCBzdGF0ZS4gJyArICdTZWUgaHR0cHM6Ly9yZWR1eC5qcy5vcmcvYXBpL3N0b3JlI3N1YnNjcmliZWxpc3RlbmVyIGZvciBtb3JlIGRldGFpbHMuJyk7XG4gICAgfVxuXG4gICAgdmFyIGlzU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg2KSA6ICdZb3UgbWF5IG5vdCB1bnN1YnNjcmliZSBmcm9tIGEgc3RvcmUgbGlzdGVuZXIgd2hpbGUgdGhlIHJlZHVjZXIgaXMgZXhlY3V0aW5nLiAnICsgJ1NlZSBodHRwczovL3JlZHV4LmpzLm9yZy9hcGkvc3RvcmUjc3Vic2NyaWJlbGlzdGVuZXIgZm9yIG1vcmUgZGV0YWlscy4nKTtcbiAgICAgIH1cblxuICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgY3VycmVudExpc3RlbmVycyA9IG51bGw7XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAgICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVuIHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cbiAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg3KSA6IFwiQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuIEluc3RlYWQsIHRoZSBhY3R1YWwgdHlwZSB3YXM6ICdcIiArIGtpbmRPZihhY3Rpb24pICsgXCInLiBZb3UgbWF5IG5lZWQgdG8gYWRkIG1pZGRsZXdhcmUgdG8geW91ciBzdG9yZSBzZXR1cCB0byBoYW5kbGUgZGlzcGF0Y2hpbmcgb3RoZXIgdmFsdWVzLCBzdWNoIGFzICdyZWR1eC10aHVuaycgdG8gaGFuZGxlIGRpc3BhdGNoaW5nIGZ1bmN0aW9ucy4gU2VlIGh0dHBzOi8vcmVkdXguanMub3JnL3R1dG9yaWFscy9mdW5kYW1lbnRhbHMvcGFydC00LXN0b3JlI21pZGRsZXdhcmUgYW5kIGh0dHBzOi8vcmVkdXguanMub3JnL3R1dG9yaWFscy9mdW5kYW1lbnRhbHMvcGFydC02LWFzeW5jLWxvZ2ljI3VzaW5nLXRoZS1yZWR1eC10aHVuay1taWRkbGV3YXJlIGZvciBleGFtcGxlcy5cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDgpIDogJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gWW91IG1heSBoYXZlIG1pc3NwZWxsZWQgYW4gYWN0aW9uIHR5cGUgc3RyaW5nIGNvbnN0YW50LicpO1xuICAgIH1cblxuICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg5KSA6ICdSZWR1Y2VycyBtYXkgbm90IGRpc3BhdGNoIGFjdGlvbnMuJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSB0cnVlO1xuICAgICAgY3VycmVudFN0YXRlID0gY3VycmVudFJlZHVjZXIoY3VycmVudFN0YXRlLCBhY3Rpb24pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpc0Rpc3BhdGNoaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMgPSBuZXh0TGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXTtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHJlZHVjZXIgY3VycmVudGx5IHVzZWQgYnkgdGhlIHN0b3JlIHRvIGNhbGN1bGF0ZSB0aGUgc3RhdGUuXG4gICAqXG4gICAqIFlvdSBtaWdodCBuZWVkIHRoaXMgaWYgeW91ciBhcHAgaW1wbGVtZW50cyBjb2RlIHNwbGl0dGluZyBhbmQgeW91IHdhbnQgdG9cbiAgICogbG9hZCBzb21lIG9mIHRoZSByZWR1Y2VycyBkeW5hbWljYWxseS4gWW91IG1pZ2h0IGFsc28gbmVlZCB0aGlzIGlmIHlvdVxuICAgKiBpbXBsZW1lbnQgYSBob3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBmb3IgUmVkdXguXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG5leHRSZWR1Y2VyIFRoZSByZWR1Y2VyIGZvciB0aGUgc3RvcmUgdG8gdXNlIGluc3RlYWQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG4gICAgaWYgKHR5cGVvZiBuZXh0UmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTApIDogXCJFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCwgcmVjZWl2ZWQ6ICdcIiArIGtpbmRPZihuZXh0UmVkdWNlcikpO1xuICAgIH1cblxuICAgIGN1cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7IC8vIFRoaXMgYWN0aW9uIGhhcyBhIHNpbWlsaWFyIGVmZmVjdCB0byBBY3Rpb25UeXBlcy5JTklULlxuICAgIC8vIEFueSByZWR1Y2VycyB0aGF0IGV4aXN0ZWQgaW4gYm90aCB0aGUgbmV3IGFuZCBvbGQgcm9vdFJlZHVjZXJcbiAgICAvLyB3aWxsIHJlY2VpdmUgdGhlIHByZXZpb3VzIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuICAgIC8vIHRoZSBuZXcgc3RhdGUgdHJlZSB3aXRoIGFueSByZWxldmFudCBkYXRhIGZyb20gdGhlIG9sZCBvbmUuXG5cbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRVBMQUNFXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEludGVyb3BlcmFiaWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxuICAgKiBAcmV0dXJucyB7b2JzZXJ2YWJsZX0gQSBtaW5pbWFsIG9ic2VydmFibGUgb2Ygc3RhdGUgY2hhbmdlcy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgb2JzZXJ2YWJsZSBwcm9wb3NhbDpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcgfHwgb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxMSkgOiBcIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3QuIEluc3RlYWQsIHJlY2VpdmVkOiAnXCIgKyBraW5kT2Yob2JzZXJ2ZXIpICsgXCInXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmliZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVuc3Vic2NyaWJlOiB1bnN1YnNjcmliZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sIF9yZWZbJCRvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7XG4gIH0gLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFuIFwiSU5JVFwiIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHNvIHRoYXQgZXZlcnlcbiAgLy8gcmVkdWNlciByZXR1cm5zIHRoZWlyIGluaXRpYWwgc3RhdGUuIFRoaXMgZWZmZWN0aXZlbHkgcG9wdWxhdGVzXG4gIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG5cblxuICBkaXNwYXRjaCh7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuSU5JVFxuICB9KTtcbiAgcmV0dXJuIF9yZWYyID0ge1xuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAgcmVwbGFjZVJlZHVjZXI6IHJlcGxhY2VSZWR1Y2VyXG4gIH0sIF9yZWYyWyQkb2JzZXJ2YWJsZV0gPSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUuXG4gKlxuICogKipXZSByZWNvbW1lbmQgdXNpbmcgYGNvbmZpZ3VyZVN0b3JlYCBmcm9tIHRoZVxuICogYEByZWR1eGpzL3Rvb2xraXRgIHBhY2thZ2UqKiwgd2hpY2ggcmVwbGFjZXMgYGNyZWF0ZVN0b3JlYDpcbiAqICoqaHR0cHM6Ly9yZWR1eC5qcy5vcmcvaW50cm9kdWN0aW9uL3doeS1ydGstaXMtcmVkdXgtdG9kYXkqKlxuICpcbiAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuICpcbiAqIFRoZXJlIHNob3VsZCBvbmx5IGJlIGEgc2luZ2xlIHN0b3JlIGluIHlvdXIgYXBwLiBUbyBzcGVjaWZ5IGhvdyBkaWZmZXJlbnRcbiAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNcbiAqIGludG8gYSBzaW5nbGUgcmVkdWNlciBmdW5jdGlvbiBieSB1c2luZyBgY29tYmluZVJlZHVjZXJzYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG4gKiB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGFuZCB0aGUgYWN0aW9uIHRvIGhhbmRsZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNlcnZlciBpbiB1bml2ZXJzYWwgYXBwcywgb3IgdG8gcmVzdG9yZSBhXG4gKiBwcmV2aW91c2x5IHNlcmlhbGl6ZWQgdXNlciBzZXNzaW9uLlxuICogSWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuICogYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGVuaGFuY2UgdGhlIHN0b3JlIHdpdGggdGhpcmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxcbiAqIHRpbWUgdHJhdmVsLCBwZXJzaXN0ZW5jZSwgZXRjLiBUaGUgb25seSBzdG9yZSBlbmhhbmNlciB0aGF0IHNoaXBzIHdpdGggUmVkdXhcbiAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG4gKlxuICogQHJldHVybnMge1N0b3JlfSBBIFJlZHV4IHN0b3JlIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgc3RhdGUsIGRpc3BhdGNoIGFjdGlvbnNcbiAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cbiAqL1xuXG52YXIgbGVnYWN5X2NyZWF0ZVN0b3JlID0gY3JlYXRlU3RvcmU7XG5cbi8qKlxuICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cblxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG4gICAgLy8gXCJicmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlvdXIgY29uc29sZSxcbiAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblxufVxuXG5mdW5jdGlvbiBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKGlucHV0U3RhdGUsIHJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSkge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVN0b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUgcmVkdWNlcic7XG5cbiAgaWYgKHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAndG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJzLic7XG4gIH1cblxuICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXRTdGF0ZSkpIHtcbiAgICByZXR1cm4gXCJUaGUgXCIgKyBhcmd1bWVudE5hbWUgKyBcIiBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFxcXCJcIiArIGtpbmRPZihpbnB1dFN0YXRlKSArIFwiXFxcIi4gRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBcIiArIChcImtleXM6IFxcXCJcIiArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgXCJcXFwiXCIpO1xuICB9XG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gIXJlZHVjZXJzLmhhc093blByb3BlcnR5KGtleSkgJiYgIXVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldO1xuICB9KTtcbiAgdW5leHBlY3RlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hlW2tleV0gPSB0cnVlO1xuICB9KTtcbiAgaWYgKGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZXMuUkVQTEFDRSkgcmV0dXJuO1xuXG4gIGlmICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFwiVW5leHBlY3RlZCBcIiArICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgXCIgXCIgKyAoXCJcXFwiXCIgKyB1bmV4cGVjdGVkS2V5cy5qb2luKCdcIiwgXCInKSArIFwiXFxcIiBmb3VuZCBpbiBcIiArIGFyZ3VtZW50TmFtZSArIFwiLiBcIikgKyBcIkV4cGVjdGVkIHRvIGZpbmQgb25lIG9mIHRoZSBrbm93biByZWR1Y2VyIGtleXMgaW5zdGVhZDogXCIgKyAoXCJcXFwiXCIgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArIFwiXFxcIi4gVW5leHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC5cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJzKSB7XG4gIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcmVkdWNlciA9IHJlZHVjZXJzW2tleV07XG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IHJlZHVjZXIodW5kZWZpbmVkLCB7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5JTklUXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEyKSA6IFwiVGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gXCIgKyBcIklmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCBcIiArIFwiZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBcIiArIFwibm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgXCIgKyBcInlvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuXCIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlBST0JFX1VOS05PV05fQUNUSU9OKClcbiAgICB9KSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzKSA6IFwiVGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gXCIgKyAoXCJEb24ndCB0cnkgdG8gaGFuZGxlICdcIiArIEFjdGlvblR5cGVzLklOSVQgKyBcIicgb3Igb3RoZXIgYWN0aW9ucyBpbiBcXFwicmVkdXgvKlxcXCIgXCIpICsgXCJuYW1lc3BhY2UuIFRoZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJuIHRoZSBcIiArIFwiY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgXCIgKyBcImluIHdoaWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLCByZWdhcmRsZXNzIG9mIHRoZSBcIiArIFwiYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLCBidXQgY2FuIGJlIG51bGwuXCIpO1xuICAgIH1cbiAgfSk7XG59XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cbiAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlvbi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVkIGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21iaW5lUmVkdWNlcnMocmVkdWNlcnMpIHtcbiAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xuICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3YXJuaW5nKFwiTm8gcmVkdWNlciBwcm92aWRlZCBmb3Iga2V5IFxcXCJcIiArIGtleSArIFwiXFxcIlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZpbmFsUmVkdWNlcnNba2V5XSA9IHJlZHVjZXJzW2tleV07XG4gICAgfVxuICB9XG5cbiAgdmFyIGZpbmFsUmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTsgLy8gVGhpcyBpcyB1c2VkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB3YXJuIGFib3V0IHRoZSBzYW1lXG4gIC8vIGtleXMgbXVsdGlwbGUgdGltZXMuXG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlDYWNoZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZSA9IHt9O1xuICB9XG5cbiAgdmFyIHNoYXBlQXNzZXJ0aW9uRXJyb3I7XG5cbiAgdHJ5IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vycyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbihzdGF0ZSwgYWN0aW9uKSB7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YXRlID0ge307XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlQXNzZXJ0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IHNoYXBlQXNzZXJ0aW9uRXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciB3YXJuaW5nTWVzc2FnZSA9IGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2Uoc3RhdGUsIGZpbmFsUmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hlKTtcblxuICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG4gICAgICAgIHdhcm5pbmcod2FybmluZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2tleSA9IGZpbmFsUmVkdWNlcktleXNbX2ldO1xuICAgICAgdmFyIHJlZHVjZXIgPSBmaW5hbFJlZHVjZXJzW19rZXldO1xuICAgICAgdmFyIHByZXZpb3VzU3RhdGVGb3JLZXkgPSBzdGF0ZVtfa2V5XTtcbiAgICAgIHZhciBuZXh0U3RhdGVGb3JLZXkgPSByZWR1Y2VyKHByZXZpb3VzU3RhdGVGb3JLZXksIGFjdGlvbik7XG5cbiAgICAgIGlmICh0eXBlb2YgbmV4dFN0YXRlRm9yS2V5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YXIgYWN0aW9uVHlwZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTQpIDogXCJXaGVuIGNhbGxlZCB3aXRoIGFuIGFjdGlvbiBvZiB0eXBlIFwiICsgKGFjdGlvblR5cGUgPyBcIlxcXCJcIiArIFN0cmluZyhhY3Rpb25UeXBlKSArIFwiXFxcIlwiIDogJyh1bmtub3duIHR5cGUpJykgKyBcIiwgdGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBfa2V5ICsgXCJcXFwiIHJldHVybmVkIHVuZGVmaW5lZC4gXCIgKyBcIlRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gXCIgKyBcIklmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbmV4dFN0YXRlW19rZXldID0gbmV4dFN0YXRlRm9yS2V5O1xuICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuICAgIH1cblxuICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RoO1xuICAgIHJldHVybiBoYXNDaGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50byBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIHNhbWUga2V5cywgYnV0IHdpdGggZXZlcnkgZnVuY3Rpb24gd3JhcHBlZCBpbnRvIGEgYGRpc3BhdGNoYCBjYWxsIHNvIHRoZXlcbiAqIG1heSBiZSBpbnZva2VkIGRpcmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHlvdSBjYW4gY2FsbFxuICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21ldGhpbmcoKSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cbiAqXG4gKiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4gYWxzbyBwYXNzIGFuIGFjdGlvbiBjcmVhdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCxcbiAqIGFuZCBnZXQgYSBkaXNwYXRjaCB3cmFwcGVkIGZ1bmN0aW9uIGluIHJldHVybi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9uXG4gKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRhaW4gaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG4gKiBzeW50YXguIFlvdSBtYXkgYWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3BhdGNoIFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG4gKiBzdG9yZS5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0IG1pbWlja2luZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuICogZXZlcnkgYWN0aW9uIGNyZWF0b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuICogZnVuY3Rpb24gYXMgYGFjdGlvbkNyZWF0b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28gYmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uLlxuICovXG5cblxuZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzICE9PSAnb2JqZWN0JyB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2KSA6IFwiYmluZEFjdGlvbkNyZWF0b3JzIGV4cGVjdGVkIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9uLCBidXQgaW5zdGVhZCByZWNlaXZlZDogJ1wiICsga2luZE9mKGFjdGlvbkNyZWF0b3JzKSArIFwiJy4gXCIgKyBcIkRpZCB5b3Ugd3JpdGUgXFxcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIiBpbnN0ZWFkIG9mIFxcXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIj9cIik7XG4gIH1cblxuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBhY3Rpb25DcmVhdG9ycykge1xuICAgIHZhciBhY3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYm91bmRBY3Rpb25DcmVhdG9yc1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwgZGlzcGF0Y2gpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xufVxuXG4vKipcbiAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG4gKiBmdW5jdGlvbiBjYW4gdGFrZSBtdWx0aXBsZSBhcmd1bWVudHMgYXMgaXQgcHJvdmlkZXMgdGhlIHNpZ25hdHVyZSBmb3JcbiAqIHRoZSByZXN1bHRpbmcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1bmNzIFRoZSBmdW5jdGlvbnMgdG8gY29tcG9zZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uc1xuICogZnJvbSByaWdodCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVudGljYWwgdG8gZG9pbmdcbiAqICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxuICovXG5mdW5jdGlvbiBjb21wb3NlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZnVuY3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgZnVuY3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgIHJldHVybiBhcmc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZnVuY3NbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhKGIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RvcmUgZW5oYW5jZXIgdGhhdCBhcHBsaWVzIG1pZGRsZXdhcmUgdG8gdGhlIGRpc3BhdGNoIG1ldGhvZFxuICogb2YgdGhlIFJlZHV4IHN0b3JlLiBUaGlzIGlzIGhhbmR5IGZvciBhIHZhcmlldHkgb2YgdGFza3MsIHN1Y2ggYXMgZXhwcmVzc2luZ1xuICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNlIG1hbm5lciwgb3IgbG9nZ2luZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cbiAqXG4gKiBTZWUgYHJlZHV4LXRodW5rYCBwYWNrYWdlIGFzIGFuIGV4YW1wbGUgb2YgdGhlIFJlZHV4IG1pZGRsZXdhcmUuXG4gKlxuICogQmVjYXVzZSBtaWRkbGV3YXJlIGlzIHBvdGVudGlhbGx5IGFzeW5jaHJvbm91cywgdGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0XG4gKiBzdG9yZSBlbmhhbmNlciBpbiB0aGUgY29tcG9zaXRpb24gY2hhaW4uXG4gKlxuICogTm90ZSB0aGF0IGVhY2ggbWlkZGxld2FyZSB3aWxsIGJlIGdpdmVuIHRoZSBgZGlzcGF0Y2hgIGFuZCBgZ2V0U3RhdGVgIGZ1bmN0aW9uc1xuICogYXMgbmFtZWQgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IG1pZGRsZXdhcmVzIFRoZSBtaWRkbGV3YXJlIGNoYWluIHRvIGJlIGFwcGxpZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgc3RvcmUgZW5oYW5jZXIgYXBwbHlpbmcgdGhlIG1pZGRsZXdhcmUuXG4gKi9cblxuZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWlkZGxld2FyZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNyZWF0ZVN0b3JlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzdG9yZSA9IGNyZWF0ZVN0b3JlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcblxuICAgICAgdmFyIF9kaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNSkgOiAnRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gJyArICdPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guJyk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaC5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAgICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IGNvbXBvc2UuYXBwbHkodm9pZCAwLCBjaGFpbikoc3RvcmUuZGlzcGF0Y2gpO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3RvcmUpLCB7fSwge1xuICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG4vKlxuICogVGhpcyBpcyBhIGR1bW15IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBuYW1lIGhhcyBiZWVuIGFsdGVyZWQgYnkgbWluaWZpY2F0aW9uLlxuICogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG1pbmlmaWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxuICovXG5cbmZ1bmN0aW9uIGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBpc0NydXNoZWQubmFtZSA9PT0gJ3N0cmluZycgJiYgaXNDcnVzaGVkLm5hbWUgIT09ICdpc0NydXNoZWQnKSB7XG4gIHdhcm5pbmcoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBvZiBOT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIuICcgKyAnVGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcnVubmluZyBhIHNsb3dlciBkZXZlbG9wbWVudCBidWlsZCBvZiBSZWR1eC4gJyArICdZb3UgY2FuIHVzZSBsb29zZS1lbnZpZnkgKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJ0b3NoL2xvb3NlLWVudmlmeSkgZm9yIGJyb3dzZXJpZnkgJyArICdvciBzZXR0aW5nIG1vZGUgdG8gcHJvZHVjdGlvbiBpbiB3ZWJwYWNrIChodHRwczovL3dlYnBhY2suanMub3JnL2NvbmNlcHRzL21vZGUvKSAnICsgJ3RvIGVuc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBjb2RlIGZvciB5b3VyIHByb2R1Y3Rpb24gYnVpbGQuJyk7XG59XG5cbmV4cG9ydCB7IEFjdGlvblR5cGVzIGFzIF9fRE9fTk9UX1VTRV9fQWN0aW9uVHlwZXMsIGFwcGx5TWlkZGxld2FyZSwgYmluZEFjdGlvbkNyZWF0b3JzLCBjb21iaW5lUmVkdWNlcnMsIGNvbXBvc2UsIGNyZWF0ZVN0b3JlLCBsZWdhY3lfY3JlYXRlU3RvcmUgfTtcbiIsImZ1bmN0aW9uIG4obil7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShyPjE/ci0xOjApLGU9MTtlPHI7ZSsrKXRbZS0xXT1hcmd1bWVudHNbZV07aWYoXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVil7dmFyIGk9WVtuXSxvPWk/XCJmdW5jdGlvblwiPT10eXBlb2YgaT9pLmFwcGx5KG51bGwsdCk6aTpcInVua25vd24gZXJyb3IgbnI6IFwiK247dGhyb3cgRXJyb3IoXCJbSW1tZXJdIFwiK28pfXRocm93IEVycm9yKFwiW0ltbWVyXSBtaW5pZmllZCBlcnJvciBucjogXCIrbisodC5sZW5ndGg/XCIgXCIrdC5tYXAoKGZ1bmN0aW9uKG4pe3JldHVyblwiJ1wiK24rXCInXCJ9KSkuam9pbihcIixcIik6XCJcIikrXCIuIEZpbmQgdGhlIGZ1bGwgZXJyb3IgYXQ6IGh0dHBzOi8vYml0Lmx5LzNjWEVLV2ZcIil9ZnVuY3Rpb24gcihuKXtyZXR1cm4hIW4mJiEhbltRXX1mdW5jdGlvbiB0KG4pe3JldHVybiEhbiYmKGZ1bmN0aW9uKG4pe2lmKCFufHxcIm9iamVjdFwiIT10eXBlb2YgbilyZXR1cm4hMTt2YXIgcj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7aWYobnVsbD09PXIpcmV0dXJuITA7dmFyIHQ9T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocixcImNvbnN0cnVjdG9yXCIpJiZyLmNvbnN0cnVjdG9yO3JldHVybiB0PT09T2JqZWN0fHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZGdW5jdGlvbi50b1N0cmluZy5jYWxsKHQpPT09Wn0obil8fEFycmF5LmlzQXJyYXkobil8fCEhbltMXXx8ISFuLmNvbnN0cnVjdG9yW0xdfHxzKG4pfHx2KG4pKX1mdW5jdGlvbiBlKHQpe3JldHVybiByKHQpfHxuKDIzLHQpLHRbUV0udH1mdW5jdGlvbiBpKG4scix0KXt2b2lkIDA9PT10JiYodD0hMSksMD09PW8obik/KHQ/T2JqZWN0LmtleXM6bm4pKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QmJlwic3ltYm9sXCI9PXR5cGVvZiBlfHxyKGUsbltlXSxuKX0pKTpuLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIoZSx0LG4pfSkpfWZ1bmN0aW9uIG8obil7dmFyIHI9bltRXTtyZXR1cm4gcj9yLmk+Mz9yLmktNDpyLmk6QXJyYXkuaXNBcnJheShuKT8xOnMobik/Mjp2KG4pPzM6MH1mdW5jdGlvbiB1KG4scil7cmV0dXJuIDI9PT1vKG4pP24uaGFzKHIpOk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpfWZ1bmN0aW9uIGEobixyKXtyZXR1cm4gMj09PW8obik/bi5nZXQocik6bltyXX1mdW5jdGlvbiBmKG4scix0KXt2YXIgZT1vKG4pOzI9PT1lP24uc2V0KHIsdCk6Mz09PWU/KG4uZGVsZXRlKHIpLG4uYWRkKHQpKTpuW3JdPXR9ZnVuY3Rpb24gYyhuLHIpe3JldHVybiBuPT09cj8wIT09bnx8MS9uPT0xL3I6biE9biYmciE9cn1mdW5jdGlvbiBzKG4pe3JldHVybiBYJiZuIGluc3RhbmNlb2YgTWFwfWZ1bmN0aW9uIHYobil7cmV0dXJuIHEmJm4gaW5zdGFuY2VvZiBTZXR9ZnVuY3Rpb24gcChuKXtyZXR1cm4gbi5vfHxuLnR9ZnVuY3Rpb24gbChuKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKTt2YXIgcj1ybihuKTtkZWxldGUgcltRXTtmb3IodmFyIHQ9bm4ociksZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgaT10W2VdLG89cltpXTshMT09PW8ud3JpdGFibGUmJihvLndyaXRhYmxlPSEwLG8uY29uZmlndXJhYmxlPSEwKSwoby5nZXR8fG8uc2V0KSYmKHJbaV09e2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOm8uZW51bWVyYWJsZSx2YWx1ZTpuW2ldfSl9cmV0dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pLHIpfWZ1bmN0aW9uIGQobixlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLHkobil8fHIobil8fCF0KG4pP246KG8obik+MSYmKG4uc2V0PW4uYWRkPW4uY2xlYXI9bi5kZWxldGU9aCksT2JqZWN0LmZyZWV6ZShuKSxlJiZpKG4sKGZ1bmN0aW9uKG4scil7cmV0dXJuIGQociwhMCl9KSwhMCksbil9ZnVuY3Rpb24gaCgpe24oMil9ZnVuY3Rpb24geShuKXtyZXR1cm4gbnVsbD09bnx8XCJvYmplY3RcIiE9dHlwZW9mIG58fE9iamVjdC5pc0Zyb3plbihuKX1mdW5jdGlvbiBiKHIpe3ZhciB0PXRuW3JdO3JldHVybiB0fHxuKDE4LHIpLHR9ZnVuY3Rpb24gbShuLHIpe3RuW25dfHwodG5bbl09cil9ZnVuY3Rpb24gXygpe3JldHVyblwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fFV8fG4oMCksVX1mdW5jdGlvbiBqKG4scil7ciYmKGIoXCJQYXRjaGVzXCIpLG4udT1bXSxuLnM9W10sbi52PXIpfWZ1bmN0aW9uIE8obil7ZyhuKSxuLnAuZm9yRWFjaChTKSxuLnA9bnVsbH1mdW5jdGlvbiBnKG4pe249PT1VJiYoVT1uLmwpfWZ1bmN0aW9uIHcobil7cmV0dXJuIFU9e3A6W10sbDpVLGg6bixtOiEwLF86MH19ZnVuY3Rpb24gUyhuKXt2YXIgcj1uW1FdOzA9PT1yLml8fDE9PT1yLmk/ci5qKCk6ci5PPSEwfWZ1bmN0aW9uIFAocixlKXtlLl89ZS5wLmxlbmd0aDt2YXIgaT1lLnBbMF0sbz12b2lkIDAhPT1yJiZyIT09aTtyZXR1cm4gZS5oLmd8fGIoXCJFUzVcIikuUyhlLHIsbyksbz8oaVtRXS5QJiYoTyhlKSxuKDQpKSx0KHIpJiYocj1NKGUsciksZS5sfHx4KGUscikpLGUudSYmYihcIlBhdGNoZXNcIikuTShpW1FdLnQscixlLnUsZS5zKSk6cj1NKGUsaSxbXSksTyhlKSxlLnUmJmUudihlLnUsZS5zKSxyIT09SD9yOnZvaWQgMH1mdW5jdGlvbiBNKG4scix0KXtpZih5KHIpKXJldHVybiByO3ZhciBlPXJbUV07aWYoIWUpcmV0dXJuIGkociwoZnVuY3Rpb24oaSxvKXtyZXR1cm4gQShuLGUscixpLG8sdCl9KSwhMCkscjtpZihlLkEhPT1uKXJldHVybiByO2lmKCFlLlApcmV0dXJuIHgobixlLnQsITApLGUudDtpZighZS5JKXtlLkk9ITAsZS5BLl8tLTt2YXIgbz00PT09ZS5pfHw1PT09ZS5pP2Uubz1sKGUuayk6ZS5vO2koMz09PWUuaT9uZXcgU2V0KG8pOm8sKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIEEobixlLG8scixpLHQpfSkpLHgobixvLCExKSx0JiZuLnUmJmIoXCJQYXRjaGVzXCIpLlIoZSx0LG4udSxuLnMpfXJldHVybiBlLm99ZnVuY3Rpb24gQShlLGksbyxhLGMscyl7aWYoXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmYz09PW8mJm4oNSkscihjKSl7dmFyIHY9TShlLGMscyYmaSYmMyE9PWkuaSYmIXUoaS5ELGEpP3MuY29uY2F0KGEpOnZvaWQgMCk7aWYoZihvLGEsdiksIXIodikpcmV0dXJuO2UubT0hMX1pZih0KGMpJiYheShjKSl7aWYoIWUuaC5GJiZlLl88MSlyZXR1cm47TShlLGMpLGkmJmkuQS5sfHx4KGUsYyl9fWZ1bmN0aW9uIHgobixyLHQpe3ZvaWQgMD09PXQmJih0PSExKSxuLmguRiYmbi5tJiZkKHIsdCl9ZnVuY3Rpb24geihuLHIpe3ZhciB0PW5bUV07cmV0dXJuKHQ/cCh0KTpuKVtyXX1mdW5jdGlvbiBJKG4scil7aWYociBpbiBuKWZvcih2YXIgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7dDspe3ZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZihlKXJldHVybiBlO3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfX1mdW5jdGlvbiBrKG4pe24uUHx8KG4uUD0hMCxuLmwmJmsobi5sKSl9ZnVuY3Rpb24gRShuKXtuLm98fChuLm89bChuLnQpKX1mdW5jdGlvbiBSKG4scix0KXt2YXIgZT1zKHIpP2IoXCJNYXBTZXRcIikuTihyLHQpOnYocik/YihcIk1hcFNldFwiKS5UKHIsdCk6bi5nP2Z1bmN0aW9uKG4scil7dmFyIHQ9QXJyYXkuaXNBcnJheShuKSxlPXtpOnQ/MTowLEE6cj9yLkE6XygpLFA6ITEsSTohMSxEOnt9LGw6cix0Om4sazpudWxsLG86bnVsbCxqOm51bGwsQzohMX0saT1lLG89ZW47dCYmKGk9W2VdLG89b24pO3ZhciB1PVByb3h5LnJldm9jYWJsZShpLG8pLGE9dS5yZXZva2UsZj11LnByb3h5O3JldHVybiBlLms9ZixlLmo9YSxmfShyLHQpOmIoXCJFUzVcIikuSihyLHQpO3JldHVybih0P3QuQTpfKCkpLnAucHVzaChlKSxlfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIHIoZSl8fG4oMjIsZSksZnVuY3Rpb24gbihyKXtpZighdChyKSlyZXR1cm4gcjt2YXIgZSx1PXJbUV0sYz1vKHIpO2lmKHUpe2lmKCF1LlAmJih1Lmk8NHx8IWIoXCJFUzVcIikuSyh1KSkpcmV0dXJuIHUudDt1Lkk9ITAsZT1GKHIsYyksdS5JPSExfWVsc2UgZT1GKHIsYyk7cmV0dXJuIGkoZSwoZnVuY3Rpb24ocix0KXt1JiZhKHUudCxyKT09PXR8fGYoZSxyLG4odCkpfSkpLDM9PT1jP25ldyBTZXQoZSk6ZX0oZSl9ZnVuY3Rpb24gRihuLHIpe3N3aXRjaChyKXtjYXNlIDI6cmV0dXJuIG5ldyBNYXAobik7Y2FzZSAzOnJldHVybiBBcnJheS5mcm9tKG4pfXJldHVybiBsKG4pfWZ1bmN0aW9uIE4oKXtmdW5jdGlvbiB0KG4scil7dmFyIHQ9c1tuXTtyZXR1cm4gdD90LmVudW1lcmFibGU9cjpzW25dPXQ9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOnIsZ2V0OmZ1bmN0aW9uKCl7dmFyIHI9dGhpc1tRXTtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZmKHIpLGVuLmdldChyLG4pfSxzZXQ6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpc1tRXTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZmKHQpLGVuLnNldCh0LG4scil9fSx0fWZ1bmN0aW9uIGUobil7Zm9yKHZhciByPW4ubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciB0PW5bcl1bUV07aWYoIXQuUClzd2l0Y2godC5pKXtjYXNlIDU6YSh0KSYmayh0KTticmVhaztjYXNlIDQ6byh0KSYmayh0KX19fWZ1bmN0aW9uIG8obil7Zm9yKHZhciByPW4udCx0PW4uayxlPW5uKHQpLGk9ZS5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIG89ZVtpXTtpZihvIT09USl7dmFyIGE9cltvXTtpZih2b2lkIDA9PT1hJiYhdShyLG8pKXJldHVybiEwO3ZhciBmPXRbb10scz1mJiZmW1FdO2lmKHM/cy50IT09YTohYyhmLGEpKXJldHVybiEwfX12YXIgdj0hIXJbUV07cmV0dXJuIGUubGVuZ3RoIT09bm4ocikubGVuZ3RoKyh2PzA6MSl9ZnVuY3Rpb24gYShuKXt2YXIgcj1uLms7aWYoci5sZW5ndGghPT1uLnQubGVuZ3RoKXJldHVybiEwO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixyLmxlbmd0aC0xKTtpZih0JiYhdC5nZXQpcmV0dXJuITA7Zm9yKHZhciBlPTA7ZTxyLmxlbmd0aDtlKyspaWYoIXIuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gZihyKXtyLk8mJm4oMyxKU09OLnN0cmluZ2lmeShwKHIpKSl9dmFyIHM9e307bShcIkVTNVwiLHtKOmZ1bmN0aW9uKG4scil7dmFyIGU9QXJyYXkuaXNBcnJheShuKSxpPWZ1bmN0aW9uKG4scil7aWYobil7Zm9yKHZhciBlPUFycmF5KHIubGVuZ3RoKSxpPTA7aTxyLmxlbmd0aDtpKyspT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJcIitpLHQoaSwhMCkpO3JldHVybiBlfXZhciBvPXJuKHIpO2RlbGV0ZSBvW1FdO2Zvcih2YXIgdT1ubihvKSxhPTA7YTx1Lmxlbmd0aDthKyspe3ZhciBmPXVbYV07b1tmXT10KGYsbnx8ISFvW2ZdLmVudW1lcmFibGUpfXJldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSxvKX0oZSxuKSxvPXtpOmU/NTo0LEE6cj9yLkE6XygpLFA6ITEsSTohMSxEOnt9LGw6cix0Om4sazppLG86bnVsbCxPOiExLEM6ITF9O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxRLHt2YWx1ZTpvLHdyaXRhYmxlOiEwfSksaX0sUzpmdW5jdGlvbihuLHQsbyl7bz9yKHQpJiZ0W1FdLkE9PT1uJiZlKG4ucCk6KG4udSYmZnVuY3Rpb24gbihyKXtpZihyJiZcIm9iamVjdFwiPT10eXBlb2Ygcil7dmFyIHQ9cltRXTtpZih0KXt2YXIgZT10LnQsbz10LmssZj10LkQsYz10Lmk7aWYoND09PWMpaShvLChmdW5jdGlvbihyKXtyIT09USYmKHZvaWQgMCE9PWVbcl18fHUoZSxyKT9mW3JdfHxuKG9bcl0pOihmW3JdPSEwLGsodCkpKX0pKSxpKGUsKGZ1bmN0aW9uKG4pe3ZvaWQgMCE9PW9bbl18fHUobyxuKXx8KGZbbl09ITEsayh0KSl9KSk7ZWxzZSBpZig1PT09Yyl7aWYoYSh0KSYmKGsodCksZi5sZW5ndGg9ITApLG8ubGVuZ3RoPGUubGVuZ3RoKWZvcih2YXIgcz1vLmxlbmd0aDtzPGUubGVuZ3RoO3MrKylmW3NdPSExO2Vsc2UgZm9yKHZhciB2PWUubGVuZ3RoO3Y8by5sZW5ndGg7disrKWZbdl09ITA7Zm9yKHZhciBwPU1hdGgubWluKG8ubGVuZ3RoLGUubGVuZ3RoKSxsPTA7bDxwO2wrKylvLmhhc093blByb3BlcnR5KGwpfHwoZltsXT0hMCksdm9pZCAwPT09ZltsXSYmbihvW2xdKX19fX0obi5wWzBdKSxlKG4ucCkpfSxLOmZ1bmN0aW9uKG4pe3JldHVybiA0PT09bi5pP28obik6YShuKX19KX1mdW5jdGlvbiBUKCl7ZnVuY3Rpb24gZShuKXtpZighdChuKSlyZXR1cm4gbjtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuLm1hcChlKTtpZihzKG4pKXJldHVybiBuZXcgTWFwKEFycmF5LmZyb20obi5lbnRyaWVzKCkpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuW25bMF0sZShuWzFdKV19KSkpO2lmKHYobikpcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbShuKS5tYXAoZSkpO3ZhciByPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG4pKTtmb3IodmFyIGkgaW4gbilyW2ldPWUobltpXSk7cmV0dXJuIHUobixMKSYmKHJbTF09bltMXSkscn1mdW5jdGlvbiBmKG4pe3JldHVybiByKG4pP2Uobik6bn12YXIgYz1cImFkZFwiO20oXCJQYXRjaGVzXCIseyQ6ZnVuY3Rpb24ocix0KXtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGk9dC5wYXRoLHU9dC5vcCxmPXIscz0wO3M8aS5sZW5ndGgtMTtzKyspe3ZhciB2PW8oZikscD1cIlwiK2lbc107MCE9PXYmJjEhPT12fHxcIl9fcHJvdG9fX1wiIT09cCYmXCJjb25zdHJ1Y3RvclwiIT09cHx8bigyNCksXCJmdW5jdGlvblwiPT10eXBlb2YgZiYmXCJwcm90b3R5cGVcIj09PXAmJm4oMjQpLFwib2JqZWN0XCIhPXR5cGVvZihmPWEoZixwKSkmJm4oMTUsaS5qb2luKFwiL1wiKSl9dmFyIGw9byhmKSxkPWUodC52YWx1ZSksaD1pW2kubGVuZ3RoLTFdO3N3aXRjaCh1KXtjYXNlXCJyZXBsYWNlXCI6c3dpdGNoKGwpe2Nhc2UgMjpyZXR1cm4gZi5zZXQoaCxkKTtjYXNlIDM6bigxNik7ZGVmYXVsdDpyZXR1cm4gZltoXT1kfWNhc2UgYzpzd2l0Y2gobCl7Y2FzZSAxOnJldHVyblwiLVwiPT09aD9mLnB1c2goZCk6Zi5zcGxpY2UoaCwwLGQpO2Nhc2UgMjpyZXR1cm4gZi5zZXQoaCxkKTtjYXNlIDM6cmV0dXJuIGYuYWRkKGQpO2RlZmF1bHQ6cmV0dXJuIGZbaF09ZH1jYXNlXCJyZW1vdmVcIjpzd2l0Y2gobCl7Y2FzZSAxOnJldHVybiBmLnNwbGljZShoLDEpO2Nhc2UgMjpyZXR1cm4gZi5kZWxldGUoaCk7Y2FzZSAzOnJldHVybiBmLmRlbGV0ZSh0LnZhbHVlKTtkZWZhdWx0OnJldHVybiBkZWxldGUgZltoXX1kZWZhdWx0Om4oMTcsdSl9fSkpLHJ9LFI6ZnVuY3Rpb24obixyLHQsZSl7c3dpdGNoKG4uaSl7Y2FzZSAwOmNhc2UgNDpjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4scix0LGUpe3ZhciBvPW4udCxzPW4ubztpKG4uRCwoZnVuY3Rpb24obixpKXt2YXIgdj1hKG8sbikscD1hKHMsbiksbD1pP3UobyxuKT9cInJlcGxhY2VcIjpjOlwicmVtb3ZlXCI7aWYodiE9PXB8fFwicmVwbGFjZVwiIT09bCl7dmFyIGQ9ci5jb25jYXQobik7dC5wdXNoKFwicmVtb3ZlXCI9PT1sP3tvcDpsLHBhdGg6ZH06e29wOmwscGF0aDpkLHZhbHVlOnB9KSxlLnB1c2gobD09PWM/e29wOlwicmVtb3ZlXCIscGF0aDpkfTpcInJlbW92ZVwiPT09bD97b3A6YyxwYXRoOmQsdmFsdWU6Zih2KX06e29wOlwicmVwbGFjZVwiLHBhdGg6ZCx2YWx1ZTpmKHYpfSl9fSkpfShuLHIsdCxlKTtjYXNlIDU6Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuLHIsdCxlKXt2YXIgaT1uLnQsbz1uLkQsdT1uLm87aWYodS5sZW5ndGg8aS5sZW5ndGgpe3ZhciBhPVt1LGldO2k9YVswXSx1PWFbMV07dmFyIHM9W2UsdF07dD1zWzBdLGU9c1sxXX1mb3IodmFyIHY9MDt2PGkubGVuZ3RoO3YrKylpZihvW3ZdJiZ1W3ZdIT09aVt2XSl7dmFyIHA9ci5jb25jYXQoW3ZdKTt0LnB1c2goe29wOlwicmVwbGFjZVwiLHBhdGg6cCx2YWx1ZTpmKHVbdl0pfSksZS5wdXNoKHtvcDpcInJlcGxhY2VcIixwYXRoOnAsdmFsdWU6ZihpW3ZdKX0pfWZvcih2YXIgbD1pLmxlbmd0aDtsPHUubGVuZ3RoO2wrKyl7dmFyIGQ9ci5jb25jYXQoW2xdKTt0LnB1c2goe29wOmMscGF0aDpkLHZhbHVlOmYodVtsXSl9KX1pLmxlbmd0aDx1Lmxlbmd0aCYmZS5wdXNoKHtvcDpcInJlcGxhY2VcIixwYXRoOnIuY29uY2F0KFtcImxlbmd0aFwiXSksdmFsdWU6aS5sZW5ndGh9KX0obixyLHQsZSk7Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIsdCxlKXt2YXIgaT1uLnQsbz1uLm8sdT0wO2kuZm9yRWFjaCgoZnVuY3Rpb24obil7aWYoIW8uaGFzKG4pKXt2YXIgaT1yLmNvbmNhdChbdV0pO3QucHVzaCh7b3A6XCJyZW1vdmVcIixwYXRoOmksdmFsdWU6bn0pLGUudW5zaGlmdCh7b3A6YyxwYXRoOmksdmFsdWU6bn0pfXUrK30pKSx1PTAsby5mb3JFYWNoKChmdW5jdGlvbihuKXtpZighaS5oYXMobikpe3ZhciBvPXIuY29uY2F0KFt1XSk7dC5wdXNoKHtvcDpjLHBhdGg6byx2YWx1ZTpufSksZS51bnNoaWZ0KHtvcDpcInJlbW92ZVwiLHBhdGg6byx2YWx1ZTpufSl9dSsrfSkpfShuLHIsdCxlKX19LE06ZnVuY3Rpb24obixyLHQsZSl7dC5wdXNoKHtvcDpcInJlcGxhY2VcIixwYXRoOltdLHZhbHVlOnI9PT1IP3ZvaWQgMDpyfSksZS5wdXNoKHtvcDpcInJlcGxhY2VcIixwYXRoOltdLHZhbHVlOm59KX19KX1mdW5jdGlvbiBDKCl7ZnVuY3Rpb24gcihuLHIpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvbnN0cnVjdG9yPW59YShuLHIpLG4ucHJvdG90eXBlPSh0LnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgdCl9ZnVuY3Rpb24gZShuKXtuLm98fChuLkQ9bmV3IE1hcCxuLm89bmV3IE1hcChuLnQpKX1mdW5jdGlvbiBvKG4pe24ub3x8KG4ubz1uZXcgU2V0LG4udC5mb3JFYWNoKChmdW5jdGlvbihyKXtpZih0KHIpKXt2YXIgZT1SKG4uQS5oLHIsbik7bi5wLnNldChyLGUpLG4uby5hZGQoZSl9ZWxzZSBuLm8uYWRkKHIpfSkpKX1mdW5jdGlvbiB1KHIpe3IuTyYmbigzLEpTT04uc3RyaW5naWZ5KHAocikpKX12YXIgYT1mdW5jdGlvbihuLHIpe3JldHVybihhPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihuLHIpe24uX19wcm90b19fPXJ9fHxmdW5jdGlvbihuLHIpe2Zvcih2YXIgdCBpbiByKXIuaGFzT3duUHJvcGVydHkodCkmJihuW3RdPXJbdF0pfSkobixyKX0sZj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixyKXtyZXR1cm4gdGhpc1tRXT17aToyLGw6cixBOnI/ci5BOl8oKSxQOiExLEk6ITEsbzp2b2lkIDAsRDp2b2lkIDAsdDpuLGs6dGhpcyxDOiExLE86ITF9LHRoaXN9cihuLE1hcCk7dmFyIG89bi5wcm90b3R5cGU7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwic2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzW1FdKS5zaXplfX0pLG8uaGFzPWZ1bmN0aW9uKG4pe3JldHVybiBwKHRoaXNbUV0pLmhhcyhuKX0sby5zZXQ9ZnVuY3Rpb24obixyKXt2YXIgdD10aGlzW1FdO3JldHVybiB1KHQpLHAodCkuaGFzKG4pJiZwKHQpLmdldChuKT09PXJ8fChlKHQpLGsodCksdC5ELnNldChuLCEwKSx0Lm8uc2V0KG4sciksdC5ELnNldChuLCEwKSksdGhpc30sby5kZWxldGU9ZnVuY3Rpb24obil7aWYoIXRoaXMuaGFzKG4pKXJldHVybiExO3ZhciByPXRoaXNbUV07cmV0dXJuIHUociksZShyKSxrKHIpLHIudC5oYXMobik/ci5ELnNldChuLCExKTpyLkQuZGVsZXRlKG4pLHIuby5kZWxldGUobiksITB9LG8uY2xlYXI9ZnVuY3Rpb24oKXt2YXIgbj10aGlzW1FdO3UobikscChuKS5zaXplJiYoZShuKSxrKG4pLG4uRD1uZXcgTWFwLGkobi50LChmdW5jdGlvbihyKXtuLkQuc2V0KHIsITEpfSkpLG4uby5jbGVhcigpKX0sby5mb3JFYWNoPWZ1bmN0aW9uKG4scil7dmFyIHQ9dGhpcztwKHRoaXNbUV0pLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7bi5jYWxsKHIsdC5nZXQoaSksaSx0KX0pKX0sby5nZXQ9ZnVuY3Rpb24obil7dmFyIHI9dGhpc1tRXTt1KHIpO3ZhciBpPXAocikuZ2V0KG4pO2lmKHIuSXx8IXQoaSkpcmV0dXJuIGk7aWYoaSE9PXIudC5nZXQobikpcmV0dXJuIGk7dmFyIG89UihyLkEuaCxpLHIpO3JldHVybiBlKHIpLHIuby5zZXQobixvKSxvfSxvLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzW1FdKS5rZXlzKCl9LG8udmFsdWVzPWZ1bmN0aW9uKCl7dmFyIG4scj10aGlzLHQ9dGhpcy5rZXlzKCk7cmV0dXJuKG49e30pW1ZdPWZ1bmN0aW9uKCl7cmV0dXJuIHIudmFsdWVzKCl9LG4ubmV4dD1mdW5jdGlvbigpe3ZhciBuPXQubmV4dCgpO3JldHVybiBuLmRvbmU/bjp7ZG9uZTohMSx2YWx1ZTpyLmdldChuLnZhbHVlKX19LG59LG8uZW50cmllcz1mdW5jdGlvbigpe3ZhciBuLHI9dGhpcyx0PXRoaXMua2V5cygpO3JldHVybihuPXt9KVtWXT1mdW5jdGlvbigpe3JldHVybiByLmVudHJpZXMoKX0sbi5uZXh0PWZ1bmN0aW9uKCl7dmFyIG49dC5uZXh0KCk7aWYobi5kb25lKXJldHVybiBuO3ZhciBlPXIuZ2V0KG4udmFsdWUpO3JldHVybntkb25lOiExLHZhbHVlOltuLnZhbHVlLGVdfX0sbn0sb1tWXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVudHJpZXMoKX0sbn0oKSxjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybiB0aGlzW1FdPXtpOjMsbDpyLEE6cj9yLkE6XygpLFA6ITEsSTohMSxvOnZvaWQgMCx0Om4sazp0aGlzLHA6bmV3IE1hcCxPOiExLEM6ITF9LHRoaXN9cihuLFNldCk7dmFyIHQ9bi5wcm90b3R5cGU7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwic2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcCh0aGlzW1FdKS5zaXplfX0pLHQuaGFzPWZ1bmN0aW9uKG4pe3ZhciByPXRoaXNbUV07cmV0dXJuIHUociksci5vPyEhci5vLmhhcyhuKXx8ISghci5wLmhhcyhuKXx8IXIuby5oYXMoci5wLmdldChuKSkpOnIudC5oYXMobil9LHQuYWRkPWZ1bmN0aW9uKG4pe3ZhciByPXRoaXNbUV07cmV0dXJuIHUociksdGhpcy5oYXMobil8fChvKHIpLGsociksci5vLmFkZChuKSksdGhpc30sdC5kZWxldGU9ZnVuY3Rpb24obil7aWYoIXRoaXMuaGFzKG4pKXJldHVybiExO3ZhciByPXRoaXNbUV07cmV0dXJuIHUociksbyhyKSxrKHIpLHIuby5kZWxldGUobil8fCEhci5wLmhhcyhuKSYmci5vLmRlbGV0ZShyLnAuZ2V0KG4pKX0sdC5jbGVhcj1mdW5jdGlvbigpe3ZhciBuPXRoaXNbUV07dShuKSxwKG4pLnNpemUmJihvKG4pLGsobiksbi5vLmNsZWFyKCkpfSx0LnZhbHVlcz1mdW5jdGlvbigpe3ZhciBuPXRoaXNbUV07cmV0dXJuIHUobiksbyhuKSxuLm8udmFsdWVzKCl9LHQuZW50cmllcz1mdW5jdGlvbigpe3ZhciBuPXRoaXNbUV07cmV0dXJuIHUobiksbyhuKSxuLm8uZW50cmllcygpfSx0LmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMoKX0sdFtWXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcygpfSx0LmZvckVhY2g9ZnVuY3Rpb24obixyKXtmb3IodmFyIHQ9dGhpcy52YWx1ZXMoKSxlPXQubmV4dCgpOyFlLmRvbmU7KW4uY2FsbChyLGUudmFsdWUsZS52YWx1ZSx0aGlzKSxlPXQubmV4dCgpfSxufSgpO20oXCJNYXBTZXRcIix7TjpmdW5jdGlvbihuLHIpe3JldHVybiBuZXcgZihuLHIpfSxUOmZ1bmN0aW9uKG4scil7cmV0dXJuIG5ldyBjKG4scil9fSl9ZnVuY3Rpb24gSigpe04oKSxDKCksVCgpfWZ1bmN0aW9uIEsobil7cmV0dXJuIG59ZnVuY3Rpb24gJChuKXtyZXR1cm4gbn12YXIgRyxVLFc9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbChcInhcIiksWD1cInVuZGVmaW5lZFwiIT10eXBlb2YgTWFwLHE9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNldCxCPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm94eSYmdm9pZCAwIT09UHJveHkucmV2b2NhYmxlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCxIPVc/U3ltYm9sLmZvcihcImltbWVyLW5vdGhpbmdcIik6KChHPXt9KVtcImltbWVyLW5vdGhpbmdcIl09ITAsRyksTD1XP1N5bWJvbC5mb3IoXCJpbW1lci1kcmFmdGFibGVcIik6XCJfXyRpbW1lcl9kcmFmdGFibGVcIixRPVc/U3ltYm9sLmZvcihcImltbWVyLXN0YXRlXCIpOlwiX18kaW1tZXJfc3RhdGVcIixWPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcnx8XCJAQGl0ZXJhdG9yXCIsWT17MDpcIklsbGVnYWwgc3RhdGVcIiwxOlwiSW1tZXIgZHJhZnRzIGNhbm5vdCBoYXZlIGNvbXB1dGVkIHByb3BlcnRpZXNcIiwyOlwiVGhpcyBvYmplY3QgaGFzIGJlZW4gZnJvemVuIGFuZCBzaG91bGQgbm90IGJlIG11dGF0ZWRcIiwzOmZ1bmN0aW9uKG4pe3JldHVyblwiQ2Fubm90IHVzZSBhIHByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tlZC4gRGlkIHlvdSBwYXNzIGFuIG9iamVjdCBmcm9tIGluc2lkZSBhbiBpbW1lciBmdW5jdGlvbiB0byBhbiBhc3luYyBwcm9jZXNzPyBcIitufSw0OlwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIiw1OlwiSW1tZXIgZm9yYmlkcyBjaXJjdWxhciByZWZlcmVuY2VzXCIsNjpcIlRoZSBmaXJzdCBvciBzZWNvbmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvblwiLDc6XCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIiw4OlwiRmlyc3QgYXJndW1lbnQgdG8gYGNyZWF0ZURyYWZ0YCBtdXN0IGJlIGEgcGxhaW4gb2JqZWN0LCBhbiBhcnJheSwgb3IgYW4gaW1tZXJhYmxlIG9iamVjdFwiLDk6XCJGaXJzdCBhcmd1bWVudCB0byBgZmluaXNoRHJhZnRgIG11c3QgYmUgYSBkcmFmdCByZXR1cm5lZCBieSBgY3JlYXRlRHJhZnRgXCIsMTA6XCJUaGUgZ2l2ZW4gZHJhZnQgaXMgYWxyZWFkeSBmaW5hbGl6ZWRcIiwxMTpcIk9iamVjdC5kZWZpbmVQcm9wZXJ0eSgpIGNhbm5vdCBiZSB1c2VkIG9uIGFuIEltbWVyIGRyYWZ0XCIsMTI6XCJPYmplY3Quc2V0UHJvdG90eXBlT2YoKSBjYW5ub3QgYmUgdXNlZCBvbiBhbiBJbW1lciBkcmFmdFwiLDEzOlwiSW1tZXIgb25seSBzdXBwb3J0cyBkZWxldGluZyBhcnJheSBpbmRpY2VzXCIsMTQ6XCJJbW1lciBvbmx5IHN1cHBvcnRzIHNldHRpbmcgYXJyYXkgaW5kaWNlcyBhbmQgdGhlICdsZW5ndGgnIHByb3BlcnR5XCIsMTU6ZnVuY3Rpb24obil7cmV0dXJuXCJDYW5ub3QgYXBwbHkgcGF0Y2gsIHBhdGggZG9lc24ndCByZXNvbHZlOiBcIitufSwxNjonU2V0cyBjYW5ub3QgaGF2ZSBcInJlcGxhY2VcIiBwYXRjaGVzLicsMTc6ZnVuY3Rpb24obil7cmV0dXJuXCJVbnN1cHBvcnRlZCBwYXRjaCBvcGVyYXRpb246IFwiK259LDE4OmZ1bmN0aW9uKG4pe3JldHVyblwiVGhlIHBsdWdpbiBmb3IgJ1wiK24rXCInIGhhcyBub3QgYmVlbiBsb2FkZWQgaW50byBJbW1lci4gVG8gZW5hYmxlIHRoZSBwbHVnaW4sIGltcG9ydCBhbmQgY2FsbCBgZW5hYmxlXCIrbitcIigpYCB3aGVuIGluaXRpYWxpemluZyB5b3VyIGFwcGxpY2F0aW9uLlwifSwyMDpcIkNhbm5vdCB1c2UgcHJveGllcyBpZiBQcm94eSwgUHJveHkucmV2b2NhYmxlIG9yIFJlZmxlY3QgYXJlIG5vdCBhdmFpbGFibGVcIiwyMTpmdW5jdGlvbihuKXtyZXR1cm5cInByb2R1Y2UgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIHRoaW5ncyB0aGF0IGFyZSBkcmFmdGFibGU6IHBsYWluIG9iamVjdHMsIGFycmF5cywgTWFwLCBTZXQgb3IgY2xhc3NlcyB0aGF0IGFyZSBtYXJrZWQgd2l0aCAnW2ltbWVyYWJsZV06IHRydWUnLiBHb3QgJ1wiK24rXCInXCJ9LDIyOmZ1bmN0aW9uKG4pe3JldHVyblwiJ2N1cnJlbnQnIGV4cGVjdHMgYSBkcmFmdCwgZ290OiBcIitufSwyMzpmdW5jdGlvbihuKXtyZXR1cm5cIidvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6IFwiK259LDI0OlwiUGF0Y2hpbmcgcmVzZXJ2ZWQgYXR0cmlidXRlcyBsaWtlIF9fcHJvdG9fXywgcHJvdG90eXBlIGFuZCBjb25zdHJ1Y3RvciBpcyBub3QgYWxsb3dlZFwifSxaPVwiXCIrT2JqZWN0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcixubj1cInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5vd25LZXlzP1JlZmxlY3Qub3duS2V5czp2b2lkIDAhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKG4pe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKSl9Ok9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLHJuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzfHxmdW5jdGlvbihuKXt2YXIgcj17fTtyZXR1cm4gbm4obikuZm9yRWFjaCgoZnVuY3Rpb24odCl7clt0XT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCl9KSkscn0sdG49e30sZW49e2dldDpmdW5jdGlvbihuLHIpe2lmKHI9PT1RKXJldHVybiBuO3ZhciBlPXAobik7aWYoIXUoZSxyKSlyZXR1cm4gZnVuY3Rpb24obixyLHQpe3ZhciBlLGk9SShyLHQpO3JldHVybiBpP1widmFsdWVcImluIGk/aS52YWx1ZTpudWxsPT09KGU9aS5nZXQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwobi5rKTp2b2lkIDB9KG4sZSxyKTt2YXIgaT1lW3JdO3JldHVybiBuLkl8fCF0KGkpP2k6aT09PXoobi50LHIpPyhFKG4pLG4ub1tyXT1SKG4uQS5oLGksbikpOml9LGhhczpmdW5jdGlvbihuLHIpe3JldHVybiByIGluIHAobil9LG93bktleXM6ZnVuY3Rpb24obil7cmV0dXJuIFJlZmxlY3Qub3duS2V5cyhwKG4pKX0sc2V0OmZ1bmN0aW9uKG4scix0KXt2YXIgZT1JKHAobikscik7aWYobnVsbD09ZT92b2lkIDA6ZS5zZXQpcmV0dXJuIGUuc2V0LmNhbGwobi5rLHQpLCEwO2lmKCFuLlApe3ZhciBpPXoocChuKSxyKSxvPW51bGw9PWk/dm9pZCAwOmlbUV07aWYobyYmby50PT09dClyZXR1cm4gbi5vW3JdPXQsbi5EW3JdPSExLCEwO2lmKGModCxpKSYmKHZvaWQgMCE9PXR8fHUobi50LHIpKSlyZXR1cm4hMDtFKG4pLGsobil9cmV0dXJuIG4ub1tyXT09PXQmJlwibnVtYmVyXCIhPXR5cGVvZiB0JiYodm9pZCAwIT09dHx8ciBpbiBuLm8pfHwobi5vW3JdPXQsbi5EW3JdPSEwLCEwKX0sZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24obixyKXtyZXR1cm4gdm9pZCAwIT09eihuLnQscil8fHIgaW4gbi50PyhuLkRbcl09ITEsRShuKSxrKG4pKTpkZWxldGUgbi5EW3JdLG4ubyYmZGVsZXRlIG4ub1tyXSwhMH0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKG4scil7dmFyIHQ9cChuKSxlPVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7cmV0dXJuIGU/e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZToxIT09bi5pfHxcImxlbmd0aFwiIT09cixlbnVtZXJhYmxlOmUuZW51bWVyYWJsZSx2YWx1ZTp0W3JdfTplfSxkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe24oMTEpfSxnZXRQcm90b3R5cGVPZjpmdW5jdGlvbihuKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG4udCl9LHNldFByb3RvdHlwZU9mOmZ1bmN0aW9uKCl7bigxMil9fSxvbj17fTtpKGVuLChmdW5jdGlvbihuLHIpe29uW25dPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c1swXT1hcmd1bWVudHNbMF1bMF0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSkpLG9uLmRlbGV0ZVByb3BlcnR5PWZ1bmN0aW9uKHIsdCl7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmaXNOYU4ocGFyc2VJbnQodCkpJiZuKDEzKSxvbi5zZXQuY2FsbCh0aGlzLHIsdCx2b2lkIDApfSxvbi5zZXQ9ZnVuY3Rpb24ocix0LGUpe3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJlwibGVuZ3RoXCIhPT10JiZpc05hTihwYXJzZUludCh0KSkmJm4oMTQpLGVuLnNldC5jYWxsKHRoaXMsclswXSx0LGUsclswXSl9O3ZhciB1bj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUocil7dmFyIGU9dGhpczt0aGlzLmc9Qix0aGlzLkY9ITAsdGhpcy5wcm9kdWNlPWZ1bmN0aW9uKHIsaSxvKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBpKXt2YXIgdT1pO2k9cjt2YXIgYT1lO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj10aGlzO3ZvaWQgMD09PW4mJihuPXUpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9QXJyYXkodD4xP3QtMTowKSxvPTE7bzx0O28rKyllW28tMV09YXJndW1lbnRzW29dO3JldHVybiBhLnByb2R1Y2UobiwoZnVuY3Rpb24obil7dmFyIHQ7cmV0dXJuKHQ9aSkuY2FsbC5hcHBseSh0LFtyLG5dLmNvbmNhdChlKSl9KSl9fXZhciBmO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGkmJm4oNiksdm9pZCAwIT09byYmXCJmdW5jdGlvblwiIT10eXBlb2YgbyYmbig3KSx0KHIpKXt2YXIgYz13KGUpLHM9UihlLHIsdm9pZCAwKSx2PSEwO3RyeXtmPWkocyksdj0hMX1maW5hbGx5e3Y/TyhjKTpnKGMpfXJldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZmIGluc3RhbmNlb2YgUHJvbWlzZT9mLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBqKGMsbyksUChuLGMpfSksKGZ1bmN0aW9uKG4pe3Rocm93IE8oYyksbn0pKTooaihjLG8pLFAoZixjKSl9aWYoIXJ8fFwib2JqZWN0XCIhPXR5cGVvZiByKXtpZih2b2lkIDA9PT0oZj1pKHIpKSYmKGY9ciksZj09PUgmJihmPXZvaWQgMCksZS5GJiZkKGYsITApLG8pe3ZhciBwPVtdLGw9W107YihcIlBhdGNoZXNcIikuTShyLGYscCxsKSxvKHAsbCl9cmV0dXJuIGZ9bigyMSxyKX0sdGhpcy5wcm9kdWNlV2l0aFBhdGNoZXM9ZnVuY3Rpb24obixyKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXJldHVybiBmdW5jdGlvbihyKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPUFycmF5KHQ+MT90LTE6MCksbz0xO288dDtvKyspaVtvLTFdPWFyZ3VtZW50c1tvXTtyZXR1cm4gZS5wcm9kdWNlV2l0aFBhdGNoZXMociwoZnVuY3Rpb24ocil7cmV0dXJuIG4uYXBwbHkodm9pZCAwLFtyXS5jb25jYXQoaSkpfSkpfTt2YXIgdCxpLG89ZS5wcm9kdWNlKG4sciwoZnVuY3Rpb24obixyKXt0PW4saT1yfSkpO3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZvIGluc3RhbmNlb2YgUHJvbWlzZT9vLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybltuLHQsaV19KSk6W28sdCxpXX0sXCJib29sZWFuXCI9PXR5cGVvZihudWxsPT1yP3ZvaWQgMDpyLnVzZVByb3hpZXMpJiZ0aGlzLnNldFVzZVByb3hpZXMoci51c2VQcm94aWVzKSxcImJvb2xlYW5cIj09dHlwZW9mKG51bGw9PXI/dm9pZCAwOnIuYXV0b0ZyZWV6ZSkmJnRoaXMuc2V0QXV0b0ZyZWV6ZShyLmF1dG9GcmVlemUpfXZhciBpPWUucHJvdG90eXBlO3JldHVybiBpLmNyZWF0ZURyYWZ0PWZ1bmN0aW9uKGUpe3QoZSl8fG4oOCkscihlKSYmKGU9RChlKSk7dmFyIGk9dyh0aGlzKSxvPVIodGhpcyxlLHZvaWQgMCk7cmV0dXJuIG9bUV0uQz0hMCxnKGkpLG99LGkuZmluaXNoRHJhZnQ9ZnVuY3Rpb24ocix0KXt2YXIgZT1yJiZyW1FdO1wicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJihlJiZlLkN8fG4oOSksZS5JJiZuKDEwKSk7dmFyIGk9ZS5BO3JldHVybiBqKGksdCksUCh2b2lkIDAsaSl9LGkuc2V0QXV0b0ZyZWV6ZT1mdW5jdGlvbihuKXt0aGlzLkY9bn0saS5zZXRVc2VQcm94aWVzPWZ1bmN0aW9uKHIpe3ImJiFCJiZuKDIwKSx0aGlzLmc9cn0saS5hcHBseVBhdGNoZXM9ZnVuY3Rpb24obix0KXt2YXIgZTtmb3IoZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXt2YXIgaT10W2VdO2lmKDA9PT1pLnBhdGgubGVuZ3RoJiZcInJlcGxhY2VcIj09PWkub3Ape249aS52YWx1ZTticmVha319ZT4tMSYmKHQ9dC5zbGljZShlKzEpKTt2YXIgbz1iKFwiUGF0Y2hlc1wiKS4kO3JldHVybiByKG4pP28obix0KTp0aGlzLnByb2R1Y2UobiwoZnVuY3Rpb24obil7cmV0dXJuIG8obix0KX0pKX0sZX0oKSxhbj1uZXcgdW4sZm49YW4ucHJvZHVjZSxjbj1hbi5wcm9kdWNlV2l0aFBhdGNoZXMuYmluZChhbiksc249YW4uc2V0QXV0b0ZyZWV6ZS5iaW5kKGFuKSx2bj1hbi5zZXRVc2VQcm94aWVzLmJpbmQoYW4pLHBuPWFuLmFwcGx5UGF0Y2hlcy5iaW5kKGFuKSxsbj1hbi5jcmVhdGVEcmFmdC5iaW5kKGFuKSxkbj1hbi5maW5pc2hEcmFmdC5iaW5kKGFuKTtleHBvcnQgZGVmYXVsdCBmbjtleHBvcnR7dW4gYXMgSW1tZXIscG4gYXMgYXBwbHlQYXRjaGVzLEsgYXMgY2FzdERyYWZ0LCQgYXMgY2FzdEltbXV0YWJsZSxsbiBhcyBjcmVhdGVEcmFmdCxEIGFzIGN1cnJlbnQsSiBhcyBlbmFibGVBbGxQbHVnaW5zLE4gYXMgZW5hYmxlRVM1LEMgYXMgZW5hYmxlTWFwU2V0LFQgYXMgZW5hYmxlUGF0Y2hlcyxkbiBhcyBmaW5pc2hEcmFmdCxkIGFzIGZyZWV6ZSxMIGFzIGltbWVyYWJsZSxyIGFzIGlzRHJhZnQsdCBhcyBpc0RyYWZ0YWJsZSxIIGFzIG5vdGhpbmcsZSBhcyBvcmlnaW5hbCxmbiBhcyBwcm9kdWNlLGNuIGFzIHByb2R1Y2VXaXRoUGF0Y2hlcyxzbiBhcyBzZXRBdXRvRnJlZXplLHZuIGFzIHNldFVzZVByb3hpZXN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1tZXIuZXNtLmpzLm1hcFxuIiwiLyohXG4gKiBNaWNyb3NvZnQgRHluYW1pYyBQcm90byBVdGlsaXR5LCAxLjEuN1xuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xudmFyIF9hO1xyXG52YXIgVU5ERUZJTkVEID0gXCJ1bmRlZmluZWRcIjtcclxuLyoqXHJcbiAqIENvbnN0YW50IHN0cmluZyBkZWZpbmVkIHRvIHN1cHBvcnQgbWluaW1pemF0aW9uXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBDb25zdHJ1Y3RvciA9ICdjb25zdHJ1Y3Rvcic7XHJcbi8qKlxyXG4gKiBDb25zdGFudCBzdHJpbmcgZGVmaW5lZCB0byBzdXBwb3J0IG1pbmltaXphdGlvblxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgUHJvdG90eXBlID0gJ3Byb3RvdHlwZSc7XHJcbi8qKlxyXG4gKiBDb25zdGFudCBzdHJpbmcgZGVmaW5lZCB0byBzdXBwb3J0IG1pbmltaXphdGlvblxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgc3RyRnVuY3Rpb24gPSAnZnVuY3Rpb24nO1xyXG4vKipcclxuICogVXNlZCB0byBkZWZpbmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbmNlIGZ1bmN0aW9uIGxvb2t1cCB0YWJsZVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgRHluSW5zdEZ1bmNUYWJsZSA9ICdfZHluSW5zdEZ1bmNzJztcclxuLyoqXHJcbiAqIE5hbWUgdXNlZCB0byB0YWcgdGhlIGR5bmFtaWMgcHJvdG90eXBlIGZ1bmN0aW9uXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBEeW5Qcm94eVRhZyA9ICdfaXNEeW5Qcm94eSc7XHJcbi8qKlxyXG4gKiBOYW1lIGFkZGVkIHRvIGEgcHJvdG90eXBlIHRvIGRlZmluZSB0aGUgZHluYW1pYyBwcm90b3R5cGUgXCJjbGFzc1wiIG5hbWUgdXNlZCB0byBsb29rdXAgdGhlIGZ1bmN0aW9uIHRhYmxlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBEeW5DbGFzc05hbWUgPSAnX2R5bkNsYXNzJztcclxuLyoqXHJcbiAqIFByZWZpeCBhZGRlZCB0byB0aGUgY2xhc3NuYW1lIHRvIGF2b2lkIGFueSBuYW1lIGNsYXNoZXMgd2l0aCBvdGhlciBpbnN0YW5jZSBsZXZlbCBwcm9wZXJ0aWVzXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBEeW5DbGFzc05hbWVQcmVmaXggPSAnX2R5bkNscyQnO1xyXG4vKipcclxuICogQSB0YWcgd2hpY2ggaXMgdXNlZCB0byBjaGVjayBpZiB3ZSBoYXZlIGFscmVhZHkgdG8gYXR0ZW1wdGVkIHRvIHNldCB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gaWYgb25lIGlzIG5vdCBwcmVzZW50XHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBEeW5JbnN0Q2hrVGFnID0gJ19keW5JbnN0Q2hrJztcclxuLyoqXHJcbiAqIEEgdGFnIHdoaWNoIGlzIHVzZWQgdG8gY2hlY2sgaWYgd2UgYXJlIGFsbG93cyB0byB0cnkgYW5kIHNldCBhbiBpbnN0YW5jZSBmdW5jdGlvbiBpcyBvbmUgaXMgbm90IHByZXNlbnQuIFVzaW5nIHRoZSBzYW1lXHJcbiAqIHRhZyBuYW1lIGFzIHRoZSBmdW5jdGlvbiBsZXZlbCBidXQgYSBkaWZmZXJlbnQgY29uc3QgbmFtZSBmb3IgcmVhZGFiaWxpdHkgb25seS5cclxuICovXHJcbnZhciBEeW5BbGxvd0luc3RDaGtUYWcgPSBEeW5JbnN0Q2hrVGFnO1xyXG4vKipcclxuICogVGhlIGdsb2JhbCAoaW1wb3J0ZWQpIGluc3RhbmNlcyB3aGVyZSB0aGUgZ2xvYmFsIHBlcmZvcm1hbmNlIG9wdGlvbnMgYXJlIHN0b3JlZFxyXG4gKi9cclxudmFyIER5blByb3RvRGVmYXVsdE9wdGlvbnMgPSAnX2RmT3B0cyc7XHJcbi8qKlxyXG4gKiBWYWx1ZSB1c2VkIGFzIHRoZSBuYW1lIG9mIGEgY2xhc3Mgd2hlbiBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZFxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgVW5rbm93blZhbHVlID0gJ191bmtub3duXyc7XHJcbi8qKlxyXG4gKiBDb25zdGFudCBzdHJpbmcgZGVmaW5lZCB0byBzdXBwb3J0IG1pbmltaXphdGlvblxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgc3RyX19Qcm90byA9IFwiX19wcm90b19fXCI7XHJcbi8qKlxyXG4gKiBUaGUgcG9seWZpbGwgdmVyc2lvbiBvZiBfX3Byb3RvX18gc28gdGhhdCBpdCBkb2Vzbid0IGNhdXNlIGlzc3VlcyBmb3IgYW55b25lIG5vdCBleHBlY3RpbmcgaXQgdG8gZXhpc3RcclxuICovXHJcbnZhciBEeW5Qcm90b0Jhc2VQcm90byA9IFwiX2R5blwiICsgc3RyX19Qcm90bztcclxuLyoqXHJcbiAqIFJ1bnRpbWUgR2xvYmFsIGhvbGRlciBmb3IgZHluYW1pY1Byb3RvIHNldHRpbmdzXHJcbiAqL1xyXG52YXIgRHluUHJvdG9HbG9iYWxTZXR0aW5ncyA9IFwiX19keW5Qcm90byRHYmxcIjtcclxuLyoqXHJcbiAqIFRyYWNrIHRoZSBjdXJyZW50IHByb3RvdHlwZSBmb3IgSUU4IGFzIHlvdSBjYW4ndCBsb29rIGJhY2sgdG8gZ2V0IHRoZSBwcm90b3R5cGVcclxuICovXHJcbnZhciBEeW5Qcm90b0N1cnJlbnQgPSBcIl9keW5JbnN0UHJvdG9cIjtcclxuLyoqXHJcbiAqIENvbnN0YW50IHN0cmluZyBkZWZpbmVkIHRvIHN1cHBvcnQgbWluaW1pemF0aW9uXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBzdHJVc2VCYXNlSW5zdCA9ICd1c2VCYXNlSW5zdCc7XHJcbi8qKlxyXG4gKiBDb25zdGFudCBzdHJpbmcgZGVmaW5lZCB0byBzdXBwb3J0IG1pbmltaXphdGlvblxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG52YXIgc3RyU2V0SW5zdEZ1bmNzID0gJ3NldEluc3RGdW5jcyc7XHJcbnZhciBPYmogPSBPYmplY3Q7XHJcbi8qKlxyXG4gKiBQcmUtbG9va3VwIHRvIGNoZWNrIGlmIHdlIGFyZSBydW5uaW5nIG9uIGEgbW9kZXJuIGJyb3dzZXIgKGkuZS4gbm90IElFOClcclxuICogQGlnbm9yZVxyXG4gKi9cclxudmFyIF9vYmpHZXRQcm90b3R5cGVPZiA9IE9ialtcImdldFByb3RvdHlwZU9mXCJdO1xyXG4vKipcclxuICogUHJlLWxvb2t1cCB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGlzIGZ1bmN0aW9uXHJcbiAqL1xyXG52YXIgX29iakdldE93blByb3BzID0gT2JqW1wiZ2V0T3duUHJvcGVydHlOYW1lc1wiXTtcclxuLyoqXHJcbiAqIEdldHMgdGhlIHJ1bnRpbWUgZ2xvYmFsIHJlZmVyZW5jZVxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZnVuY3Rpb24gX2dldEdsb2JhbCgpIHtcclxuICAgIHZhciByZXN1bHQ7XHJcbiAgICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgIT09IFVOREVGSU5FRCkge1xyXG4gICAgICAgIHJlc3VsdCA9IGdsb2JhbFRoaXM7XHJcbiAgICB9XHJcbiAgICBpZiAoIXJlc3VsdCAmJiB0eXBlb2Ygc2VsZiAhPT0gVU5ERUZJTkVEKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc2VsZjtcclxuICAgIH1cclxuICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB3aW5kb3cgIT09IFVOREVGSU5FRCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHdpbmRvdztcclxuICAgIH1cclxuICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiBnbG9iYWwgIT09IFVOREVGSU5FRCkge1xyXG4gICAgICAgIHJlc3VsdCA9IGdsb2JhbDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQgfHwge307XHJcbn1cclxuLy8gU2luY2UgMS4xLjcgbW92aW5nIHRoZXNlIHRvIHRoZSBydW50aW1lIGdsb2JhbCB0byB3b3JrIGFyb3VuZCBtaXhlZCB2ZXJzaW9uIGFuZCBtb2R1bGUgaXNzdWVzXHJcbi8vIFNlZSBJc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L0R5bmFtaWNQcm90by1KUy9pc3N1ZXMvNTcgZm9yIGRldGFpbHNcclxudmFyIF9nYmwgPSBfZ2V0R2xvYmFsKCk7XHJcbnZhciBfZ2JsSW5zdCA9IF9nYmxbRHluUHJvdG9HbG9iYWxTZXR0aW5nc10gfHwgKF9nYmxbRHluUHJvdG9HbG9iYWxTZXR0aW5nc10gPSB7XHJcbiAgICBvOiAoX2EgPSB7fSxcclxuICAgICAgICBfYVtzdHJTZXRJbnN0RnVuY3NdID0gdHJ1ZSxcclxuICAgICAgICBfYVtzdHJVc2VCYXNlSW5zdF0gPSB0cnVlLFxyXG4gICAgICAgIF9hKSxcclxuICAgIG46IDEwMDAgLy8gU3RhcnQgbmV3IGdsb2JhbCBpbmRleCBAIDEwMDAgc28gd2UgXCJmaXhcIiBzb21lIGNhc2VzIHdoZW4gbWl4ZWQgd2l0aCAxLjEuNiBvciBlYXJsaWVyXHJcbn0pO1xyXG4vKipcclxuICogSGVscGVyIHRvIGNoZWNrIGlmIHRoZSBvYmplY3QgY29udGFpbnMgYSBwcm9wZXJ0eSBvZiB0aGUgbmFtZVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5mdW5jdGlvbiBfaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XHJcbiAgICByZXR1cm4gb2JqICYmIE9ialtQcm90b3R5cGVdLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcclxufVxyXG4vKipcclxuICogSGVscGVyIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgdGFyZ2V0IGlzIGFuIE9iamVjdCBwcm90b3R5cGUgb3IgQXJyYXkgcHJvdG90eXBlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF9pc09iamVjdE9yQXJyYXlQcm90b3R5cGUodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gdGFyZ2V0ICYmICh0YXJnZXQgPT09IE9ialtQcm90b3R5cGVdIHx8IHRhcmdldCA9PT0gQXJyYXlbUHJvdG90eXBlXSk7XHJcbn1cclxuLyoqXHJcbiAqIEhlbHBlciB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHRhcmdldCBpcyBhbiBPYmplY3QgcHJvdG90eXBlLCBBcnJheSBwcm90b3R5cGUgb3IgRnVuY3Rpb24gcHJvdG90eXBlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF9pc09iamVjdEFycmF5T3JGdW5jdGlvblByb3RvdHlwZSh0YXJnZXQpIHtcclxuICAgIHJldHVybiBfaXNPYmplY3RPckFycmF5UHJvdG90eXBlKHRhcmdldCkgfHwgdGFyZ2V0ID09PSBGdW5jdGlvbltQcm90b3R5cGVdO1xyXG59XHJcbi8qKlxyXG4gKiBIZWxwZXIgdXNlZCB0byBnZXQgdGhlIHByb3RvdHlwZSBvZiB0aGUgdGFyZ2V0IG9iamVjdCBhcyBnZXRQcm90b3R5cGVPZiBpcyBub3QgYXZhaWxhYmxlIGluIGFuIEVTMyBlbnZpcm9ubWVudC5cclxuICogQGlnbm9yZVxyXG4gKi9cclxuZnVuY3Rpb24gX2dldE9ialByb3RvKHRhcmdldCkge1xyXG4gICAgdmFyIG5ld1Byb3RvO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgYnJvd3NlcnMgKGUuZy4gSUU4KVxyXG4gICAgICAgIGlmIChfb2JqR2V0UHJvdG90eXBlT2YpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9vYmpHZXRQcm90b3R5cGVPZih0YXJnZXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY3VyUHJvdG8gPSB0YXJnZXRbc3RyX19Qcm90b10gfHwgdGFyZ2V0W1Byb3RvdHlwZV0gfHwgKHRhcmdldFtDb25zdHJ1Y3Rvcl0gPyB0YXJnZXRbQ29uc3RydWN0b3JdW1Byb3RvdHlwZV0gOiBudWxsKTtcclxuICAgICAgICAvLyBVc2luZyB0aGUgcHJlLWNhbGN1bGF0ZWQgdmFsdWUgYXMgSUU4IGRvZXNuJ3Qgc3VwcG9ydCBsb29raW5nIHVwIHRoZSBwcm90b3R5cGUgb2YgYSBwcm90b3R5cGUgYW5kIHRodXMgZmFpbHMgZm9yIG1vcmUgdGhhbiAxIGJhc2UgY2xhc3NcclxuICAgICAgICBuZXdQcm90byA9IHRhcmdldFtEeW5Qcm90b0Jhc2VQcm90b10gfHwgY3VyUHJvdG87XHJcbiAgICAgICAgaWYgKCFfaGFzT3duUHJvcGVydHkodGFyZ2V0LCBEeW5Qcm90b0Jhc2VQcm90bykpIHtcclxuICAgICAgICAgICAgLy8gQXMgdGhpcyBwcm90b3R5cGUgZG9lc24ndCBoYXZlIHRoaXMgcHJvcGVydHkgdGhlbiB0aGlzIGlzIGZyb20gYW4gaW5oZXJpdGVkIGNsYXNzIHNvIG5ld1Byb3RvIGlzIHRoZSBiYXNlIHRvIHJldHVybiBzbyBzYXZlIGl0XHJcbiAgICAgICAgICAgIC8vIHNvIHdlIGNhbiBsb29rIGl0IHVwIHZhbHVlICh3aGljaCBmb3IgYSBtdWx0aXBsZSBoaWVyYXJjaHkgZHluYW1pY1Byb3RvIHdpbGwgYmUgdGhlIGJhc2UgY2xhc3MpXHJcbiAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXRbRHluUHJvdG9DdXJyZW50XTsgLy8gRGVsZXRlIGFueSBjdXJyZW50IHZhbHVlIGFsbG9jYXRlZCB0byB0aGlzIGluc3RhbmNlIHNvIHdlIHBpY2sgdXAgdGhlIHZhbHVlIGZyb20gcHJvdG90eXBlIGhpZXJhcmNoeVxyXG4gICAgICAgICAgICBuZXdQcm90byA9IHRhcmdldFtEeW5Qcm90b0Jhc2VQcm90b10gPSB0YXJnZXRbRHluUHJvdG9DdXJyZW50XSB8fCB0YXJnZXRbRHluUHJvdG9CYXNlUHJvdG9dO1xyXG4gICAgICAgICAgICB0YXJnZXRbRHluUHJvdG9DdXJyZW50XSA9IGN1clByb3RvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdQcm90bztcclxufVxyXG4vKipcclxuICogSGVscGVyIHRvIGdldCB0aGUgcHJvcGVydGllcyBvZiBhbiBvYmplY3QsIGluY2x1ZGluZyBub25lIGVudW1lcmFibGUgb25lcyBhcyBmdW5jdGlvbnMgb24gYSBwcm90b3R5cGUgaW4gRVM2XHJcbiAqIGFyZSBub3QgZW51bWVyYWJsZS5cclxuICogQHBhcmFtIHRhcmdldFxyXG4gKi9cclxuZnVuY3Rpb24gX2ZvckVhY2hQcm9wKHRhcmdldCwgZnVuYykge1xyXG4gICAgdmFyIHByb3BzID0gW107XHJcbiAgICBpZiAoX29iakdldE93blByb3BzKSB7XHJcbiAgICAgICAgcHJvcHMgPSBfb2JqR2V0T3duUHJvcHModGFyZ2V0KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGZvciAodmFyIG5hbWVfMSBpbiB0YXJnZXQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lXzEgPT09IFwic3RyaW5nXCIgJiYgX2hhc093blByb3BlcnR5KHRhcmdldCwgbmFtZV8xKSkge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMucHVzaChuYW1lXzEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzICYmIHByb3BzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgcHJvcHMubGVuZ3RoOyBscCsrKSB7XHJcbiAgICAgICAgICAgIGZ1bmMocHJvcHNbbHBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBuYW1lIGlzIGEgcG90ZW50aWFsIGNhbmRpZGF0ZSBmb3IgZHluYW1pY1xyXG4gKiBjYWxsYmFjayBhbmQgcHJvdG90eXBlIGdlbmVyYXRpb24uXHJcbiAqIEBwYXJhbSB0YXJnZXQgVGhlIHRhcmdldCBvYmplY3QsIG1heSBiZSBhIHByb3RvdHlwZSBvciBjbGFzcyBvYmplY3RcclxuICogQHBhcmFtIGZ1bmNOYW1lIFRoZSBmdW5jdGlvbiBuYW1lXHJcbiAqIEBwYXJhbSBza2lwT3duIFNraXBzIHRoZSBjaGVjayBmb3Igb3duIHByb3BlcnR5XHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF9pc0R5bmFtaWNDYW5kaWRhdGUodGFyZ2V0LCBmdW5jTmFtZSwgc2tpcE93bikge1xyXG4gICAgcmV0dXJuIChmdW5jTmFtZSAhPT0gQ29uc3RydWN0b3IgJiYgdHlwZW9mIHRhcmdldFtmdW5jTmFtZV0gPT09IHN0ckZ1bmN0aW9uICYmIChza2lwT3duIHx8IF9oYXNPd25Qcm9wZXJ0eSh0YXJnZXQsIGZ1bmNOYW1lKSkpO1xyXG59XHJcbi8qKlxyXG4gKiBIZWxwZXIgdG8gdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uXHJcbiAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF90aHJvd1R5cGVFcnJvcihtZXNzYWdlKSB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRHluYW1pY1Byb3RvOiBcIiArIG1lc3NhZ2UpO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIGEgY29sbGVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgZnVuY3Rpb25zIHRoYXQgYXJlIGRlZmluZWQgZGlyZWN0bHkgb24gdGhlIHRoaXNUYXJnZXQgb2JqZWN0LCBpdCBkb2VzXHJcbiAqIG5vdCByZXR1cm4gYW55IGluaGVyaXRlZCBmdW5jdGlvbnNcclxuICogQHBhcmFtIHRoaXNUYXJnZXQgVGhlIG9iamVjdCB0byBnZXQgdGhlIGluc3RhbmNlIGZ1bmN0aW9ucyBmcm9tXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF9nZXRJbnN0YW5jZUZ1bmNzKHRoaXNUYXJnZXQpIHtcclxuICAgIC8vIEdldCB0aGUgYmFzZSBwcm90b1xyXG4gICAgdmFyIGluc3RGdW5jcyA9IHt9O1xyXG4gICAgLy8gU2F2ZSBhbnkgZXhpc3RpbmcgaW5zdGFuY2UgZnVuY3Rpb25zXHJcbiAgICBfZm9yRWFjaFByb3AodGhpc1RhcmdldCwgZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAvLyBEb24ndCBpbmNsdWRlIGFueSBkeW5hbWljIHByb3RvdHlwZSBpbnN0YW5jZXMgLSBhcyB3ZSBvbmx5IHdhbnQgdGhlIHJlYWwgZnVuY3Rpb25zXHJcbiAgICAgICAgaWYgKCFpbnN0RnVuY3NbbmFtZV0gJiYgX2lzRHluYW1pY0NhbmRpZGF0ZSh0aGlzVGFyZ2V0LCBuYW1lLCBmYWxzZSkpIHtcclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIGNhbGxiYWNrIGZvciBwYXNzaW5nIHRoZSBiYXNlIGZ1bmN0aW9uIHRvIHRoZSBjYWxsZXJcclxuICAgICAgICAgICAgaW5zdEZ1bmNzW25hbWVdID0gdGhpc1RhcmdldFtuYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBpbnN0RnVuY3M7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgd2hldGhlciB0aGUgdmFsdWUgaXMgaW5jbHVkZWQgaW4gdGhlIGFycmF5XHJcbiAqIEBwYXJhbSB2YWx1ZXMgVGhlIGFycmF5IG9mIHZhbHVlc1xyXG4gKiBAcGFyYW0gdmFsdWUgIFRoZSB2YWx1ZVxyXG4gKi9cclxuZnVuY3Rpb24gX2hhc1Zpc2l0ZWQodmFsdWVzLCB2YWx1ZSkge1xyXG4gICAgZm9yICh2YXIgbHAgPSB2YWx1ZXMubGVuZ3RoIC0gMTsgbHAgPj0gMDsgbHAtLSkge1xyXG4gICAgICAgIGlmICh2YWx1ZXNbbHBdID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciBhbGwgXCJiYXNlL3N1cGVyXCIgZnVuY3Rpb25zLCB0aGlzIGlzIHVzZWQgdG8gXCJzYXZlXCJcclxuICogZW5hYmxpbmcgY2FsbGluZyBzdXBlci54eHgoKSBmdW5jdGlvbnMgd2l0aG91dCByZXF1aXJpbmcgdGhhdCB0aGUgYmFzZSBcImNsYXNzXCIgaGFzIGRlZmluZWQgYSBwcm90b3R5cGUgcmVmZXJlbmNlc1xyXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSBjdXJyZW50IGluc3RhbmNlXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbmZ1bmN0aW9uIF9nZXRCYXNlRnVuY3MoY2xhc3NQcm90bywgdGhpc1RhcmdldCwgaW5zdEZ1bmNzLCB1c2VCYXNlSW5zdCkge1xyXG4gICAgZnVuY3Rpb24gX2luc3RGdW5jUHJveHkodGFyZ2V0LCBmdW5jSG9zdCwgZnVuY05hbWUpIHtcclxuICAgICAgICB2YXIgdGhlRnVuYyA9IGZ1bmNIb3N0W2Z1bmNOYW1lXTtcclxuICAgICAgICBpZiAodGhlRnVuY1tEeW5Qcm94eVRhZ10gJiYgdXNlQmFzZUluc3QpIHtcclxuICAgICAgICAgICAgLy8gZ3JhYiBhbmQgcmV1c2UgdGhlIGhvc3RlZCBsb29raW5nIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUpIG90aGVyd2lzZSB0aGUgb3JpZ2luYWwgcGFzc2VkIGZ1bmN0aW9uXHJcbiAgICAgICAgICAgIHZhciBpbnN0RnVuY1RhYmxlID0gdGFyZ2V0W0R5bkluc3RGdW5jVGFibGVdIHx8IHt9O1xyXG4gICAgICAgICAgICBpZiAoaW5zdEZ1bmNUYWJsZVtEeW5BbGxvd0luc3RDaGtUYWddICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgdGhlRnVuYyA9IChpbnN0RnVuY1RhYmxlW2Z1bmNIb3N0W0R5bkNsYXNzTmFtZV1dIHx8IHt9KVtmdW5jTmFtZV0gfHwgdGhlRnVuYztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXHJcbiAgICAgICAgICAgIHJldHVybiB0aGVGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgLy8gU3RhcnQgY3JlYXRpbmcgYSBuZXcgYmFzZUZ1bmNzIGJ5IGNyZWF0aW5nIHByb3hpZXMgZm9yIHRoZSBpbnN0YW5jZSBmdW5jdGlvbnMgKGFzIHRoZXkgbWF5IGdldCByZXBsYWNlZClcclxuICAgIHZhciBiYXNlRnVuY3MgPSB7fTtcclxuICAgIF9mb3JFYWNoUHJvcChpbnN0RnVuY3MsIGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIGNhbGxiYWNrIGZvciBwYXNzaW5nIHRoZSBiYXNlIGZ1bmN0aW9uIHRvIHRoZSBjYWxsZXJcclxuICAgICAgICBiYXNlRnVuY3NbbmFtZV0gPSBfaW5zdEZ1bmNQcm94eSh0aGlzVGFyZ2V0LCBpbnN0RnVuY3MsIG5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICAvLyBHZXQgdGhlIGJhc2UgcHJvdG90eXBlIGZ1bmN0aW9uc1xyXG4gICAgdmFyIGJhc2VQcm90byA9IF9nZXRPYmpQcm90byhjbGFzc1Byb3RvKTtcclxuICAgIHZhciB2aXNpdGVkID0gW107XHJcbiAgICAvLyBEb24ndCBpbmNsdWRlIGJhc2Ugb2JqZWN0IGZ1bmN0aW9ucyBmb3IgT2JqZWN0LCBBcnJheSBvciBGdW5jdGlvblxyXG4gICAgd2hpbGUgKGJhc2VQcm90byAmJiAhX2lzT2JqZWN0QXJyYXlPckZ1bmN0aW9uUHJvdG90eXBlKGJhc2VQcm90bykgJiYgIV9oYXNWaXNpdGVkKHZpc2l0ZWQsIGJhc2VQcm90bykpIHtcclxuICAgICAgICAvLyBsb29rIGZvciBwcm90b3R5cGUgZnVuY3Rpb25zXHJcbiAgICAgICAgX2ZvckVhY2hQcm9wKGJhc2VQcm90bywgZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBhbnkgZHluYW1pYyBwcm90b3R5cGUgaW5zdGFuY2VzIC0gYXMgd2Ugb25seSB3YW50IHRoZSByZWFsIGZ1bmN0aW9uc1xyXG4gICAgICAgICAgICAvLyBGb3IgSUUgNy84IHRoZSBwcm90b3R5cGUgbG9va3VwIGRvZXNuJ3QgcHJvdmlkZSB0aGUgZnVsbCBjaGFpbiBzbyB3ZSBuZWVkIHRvIGJ5cGFzcyB0aGUgXHJcbiAgICAgICAgICAgIC8vIGhhc093blByb3BlcnR5IGNoZWNrIHdlIGdldCBhbGwgb2YgdGhlIG1ldGhvZHMsIG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IElFNy84IGRvZXNuJ3QgcmV0dXJuXHJcbiAgICAgICAgICAgIC8vIHRoZSBPYmplY3QgcHJvdG90eXBlIG1ldGhvZHMgd2hpbGUgYnlwYXNzaW5nIHRoZSBjaGVja1xyXG4gICAgICAgICAgICBpZiAoIWJhc2VGdW5jc1tuYW1lXSAmJiBfaXNEeW5hbWljQ2FuZGlkYXRlKGJhc2VQcm90bywgbmFtZSwgIV9vYmpHZXRQcm90b3R5cGVPZikpIHtcclxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBjYWxsYmFjayBmb3IgcGFzc2luZyB0aGUgYmFzZSBmdW5jdGlvbiB0byB0aGUgY2FsbGVyXHJcbiAgICAgICAgICAgICAgICBiYXNlRnVuY3NbbmFtZV0gPSBfaW5zdEZ1bmNQcm94eSh0aGlzVGFyZ2V0LCBiYXNlUHJvdG8sIG5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gV2UgbmVlZCB0byBmaW5kIGFsbCBwb3NzaWJsZSBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBvdmVybG9hZGVkIGJ5IHdhbGtpbmcgdGhlIGVudGlyZSBwcm90b3R5cGUgY2hhaW5cclxuICAgICAgICAvLyBUaGlzIGF2b2lkcyB0aGUgY2FsbGVyIGZyb20gbmVlZGluZyB0byBjaGVjayB3aGV0aGVyIGl0J3MgZGlyZWN0IGJhc2UgY2xhc3MgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb24gb3Igbm90XHJcbiAgICAgICAgLy8gYnkgd2Fsa2luZyB0aGUgZW50aXJlIGNoYWluIGl0IHNpbXBsaWZpZXMgdGhlIHVzYWdlIGFuZCBpc3N1ZXMgZnJvbSB1cGdyYWRpbmcgYW55IG9mIHRoZSBiYXNlIGNsYXNzZXMuXHJcbiAgICAgICAgdmlzaXRlZC5wdXNoKGJhc2VQcm90byk7XHJcbiAgICAgICAgYmFzZVByb3RvID0gX2dldE9ialByb3RvKGJhc2VQcm90byk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYmFzZUZ1bmNzO1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRJbnN0RnVuYyh0YXJnZXQsIGZ1bmNOYW1lLCBwcm90bywgY3VycmVudER5blByb3RvUHJveHkpIHtcclxuICAgIHZhciBpbnN0RnVuYyA9IG51bGw7XHJcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGNsYXNzIG5hbWUgaXMgZGVmaW5lZCBkaXJlY3RseSBvbiB0aGlzIHByb3RvdHlwZSBvdGhlcndpc2VcclxuICAgIC8vIGl0IHdpbGwgd2FsayB0aGUgcHJvdG8gY2hhaW4gYW5kIHJldHVybiBhbnkgcGFyZW50IHByb3RvIGNsYXNzbmFtZS5cclxuICAgIGlmICh0YXJnZXQgJiYgX2hhc093blByb3BlcnR5KHByb3RvLCBEeW5DbGFzc05hbWUpKSB7XHJcbiAgICAgICAgdmFyIGluc3RGdW5jVGFibGUgPSB0YXJnZXRbRHluSW5zdEZ1bmNUYWJsZV0gfHwge307XHJcbiAgICAgICAgaW5zdEZ1bmMgPSAoaW5zdEZ1bmNUYWJsZVtwcm90b1tEeW5DbGFzc05hbWVdXSB8fCB7fSlbZnVuY05hbWVdO1xyXG4gICAgICAgIGlmICghaW5zdEZ1bmMpIHtcclxuICAgICAgICAgICAgLy8gQXZvaWQgc3RhY2sgb3ZlcmZsb3cgZnJvbSByZWN1cnNpdmUgY2FsbGluZyB0aGUgc2FtZSBmdW5jdGlvblxyXG4gICAgICAgICAgICBfdGhyb3dUeXBlRXJyb3IoXCJNaXNzaW5nIFtcIiArIGZ1bmNOYW1lICsgXCJdIFwiICsgc3RyRnVuY3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBXZSBoYXZlIHRoZSBpbnN0YW5jZSBmdW5jdGlvbiwgbGV0cyBjaGVjayBpdCB3ZSBjYW4gc3BlZWQgdXAgZnVydGhlciBjYWxsc1xyXG4gICAgICAgIC8vIGJ5IGFkZGluZyB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gYmFjayBkaXJlY3RseSBvbiB0aGUgaW5zdGFuY2UgKGF2b2lkaW5nIHRoZSBkeW5hbWljIGZ1bmMgbG9va3VwKVxyXG4gICAgICAgIGlmICghaW5zdEZ1bmNbRHluSW5zdENoa1RhZ10gJiYgaW5zdEZ1bmNUYWJsZVtEeW5BbGxvd0luc3RDaGtUYWddICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGUgaW5zdGFuY2UgYWxyZWFkeSBoYXMgYW4gaW5zdGFuY2UgZnVuY3Rpb24gd2UgY2FuJ3QgcmVwbGFjZSBpdFxyXG4gICAgICAgICAgICB2YXIgY2FuQWRkSW5zdCA9ICFfaGFzT3duUHJvcGVydHkodGFyZ2V0LCBmdW5jTmFtZSk7XHJcbiAgICAgICAgICAgIC8vIEdldCBjdXJyZW50IHByb3RvdHlwZVxyXG4gICAgICAgICAgICB2YXIgb2JqUHJvdG8gPSBfZ2V0T2JqUHJvdG8odGFyZ2V0KTtcclxuICAgICAgICAgICAgdmFyIHZpc2l0ZWQgPSBbXTtcclxuICAgICAgICAgICAgLy8gTG9va3VwIHRoZSBmdW5jdGlvbiBzdGFydGluZyBhdCB0aGUgdG9wIChpbnN0YW5jZSBsZXZlbCBwcm90b3R5cGUpIGFuZCB0cmF2ZXJzZSBkb3duLCBpZiB0aGUgZmlyc3QgbWF0Y2hpbmcgZnVuY3Rpb25cclxuICAgICAgICAgICAgLy8gaWYgbm90aGluZyBpcyBmb3VuZCBvciBpZiB0aGUgZmlyc3QgaGl0IGlzIGEgZHluYW1pYyBwcm90byBpbnN0YW5jZSB0aGVuIHdlIGNhbiBzYWZlbHkgYWRkIGFuIGluc3RhbmNlIHNob3J0Y3V0XHJcbiAgICAgICAgICAgIHdoaWxlIChjYW5BZGRJbnN0ICYmIG9ialByb3RvICYmICFfaXNPYmplY3RBcnJheU9yRnVuY3Rpb25Qcm90b3R5cGUob2JqUHJvdG8pICYmICFfaGFzVmlzaXRlZCh2aXNpdGVkLCBvYmpQcm90bykpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwcm90b0Z1bmMgPSBvYmpQcm90b1tmdW5jTmFtZV07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvdG9GdW5jKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FuQWRkSW5zdCA9IChwcm90b0Z1bmMgPT09IGN1cnJlbnREeW5Qcm90b1Byb3h5KTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZmluZCBhbGwgcG9zc2libGUgaW5pdGlhbCBmdW5jdGlvbnMgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgYnlwYXNzIGEgdmFsaWQgb3ZlcnJpZGUgZnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIHZpc2l0ZWQucHVzaChvYmpQcm90byk7XHJcbiAgICAgICAgICAgICAgICBvYmpQcm90byA9IF9nZXRPYmpQcm90byhvYmpQcm90byk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChjYW5BZGRJbnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpbnN0YW5jZSBkb2Vzbid0IGhhdmUgYW4gaW5zdGFuY2UgZnVuYyBhbmQgdGhlIGNsYXNzIGhpZXJhcmNoeSBkb2VzIGhhdmUgYSBoaWdoZXIgbGV2ZWwgcHJvdG90eXBlIHZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgICAvLyBzbyBpdCdzIHNhZmUgdG8gZGlyZWN0bHkgYXNzaWduIGZvciBhbnkgc3Vic2VxdWVudCBjYWxscyAoZm9yIGJldHRlciBwZXJmb3JtYW5jZSlcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRbZnVuY05hbWVdID0gaW5zdEZ1bmM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBCbG9jayBmdXJ0aGVyIGF0dGVtcHRzIHRvIHNldCB0aGUgaW5zdGFuY2UgZnVuY3Rpb24gZm9yIGFueVxyXG4gICAgICAgICAgICAgICAgaW5zdEZ1bmNbRHluSW5zdENoa1RhZ10gPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBjcmFzaCBpZiB0aGUgb2JqZWN0IGlzIHJlYWRvbmx5IG9yIHRoZSBydW50aW1lIGRvZXNuJ3QgYWxsb3cgY2hhbmdpbmcgdGhpc1xyXG4gICAgICAgICAgICAgICAgLy8gQW5kIHNldCBhIGZsYWcgc28gd2UgZG9uJ3QgdHJ5IGFnYWluIGZvciBhbnkgZnVuY3Rpb25cclxuICAgICAgICAgICAgICAgIGluc3RGdW5jVGFibGVbRHluQWxsb3dJbnN0Q2hrVGFnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGluc3RGdW5jO1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRQcm90b0Z1bmMoZnVuY05hbWUsIHByb3RvLCBjdXJyZW50RHluUHJvdG9Qcm94eSkge1xyXG4gICAgdmFyIHByb3RvRnVuYyA9IHByb3RvW2Z1bmNOYW1lXTtcclxuICAgIC8vIENoZWNrIHRoYXQgdGhlIHByb3RvdHlwZSBmdW5jdGlvbiBpcyBub3QgYSBzZWxmIHJlZmVyZW5jZSAtLSB0cnkgdG8gYXZvaWQgc3RhY2sgb3ZlcmZsb3chXHJcbiAgICBpZiAocHJvdG9GdW5jID09PSBjdXJyZW50RHluUHJvdG9Qcm94eSkge1xyXG4gICAgICAgIC8vIEl0IGlzIHNvIGxvb2t1cCB0aGUgYmFzZSBwcm90b3R5cGVcclxuICAgICAgICBwcm90b0Z1bmMgPSBfZ2V0T2JqUHJvdG8ocHJvdG8pW2Z1bmNOYW1lXTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgcHJvdG9GdW5jICE9PSBzdHJGdW5jdGlvbikge1xyXG4gICAgICAgIF90aHJvd1R5cGVFcnJvcihcIltcIiArIGZ1bmNOYW1lICsgXCJdIGlzIG5vdCBhIFwiICsgc3RyRnVuY3Rpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb3RvRnVuYztcclxufVxyXG4vKipcclxuICogQWRkIHRoZSByZXF1aXJlZCBkeW5hbWljIHByb3RvdHlwZSBtZXRob2RzIHRvIHRoZSB0aGUgY2xhc3MgcHJvdG90eXBlXHJcbiAqIEBwYXJhbSBwcm90byAtIFRoZSBjbGFzcyBwcm90b3R5cGVcclxuICogQHBhcmFtIGNsYXNzTmFtZSAtIFRoZSBpbnN0YW5jZSBjbGFzc25hbWVcclxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgaW5zdGFuY2VcclxuICogQHBhcmFtIGJhc2VJbnN0RnVuY3MgLSBUaGUgYmFzZSBpbnN0YW5jZSBmdW5jdGlvbnNcclxuICogQHBhcmFtIHNldEluc3RhbmNlRnVuYyAtIEZsYWcgdG8gYWxsb3cgcHJvdG90eXBlIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZSBpbnN0YW5jZSBmdW5jdGlvbiBpZiBvbmUgZG9lcyBub3QgZXhpc3RcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZnVuY3Rpb24gX3BvcHVsYXRlUHJvdG90eXBlKHByb3RvLCBjbGFzc05hbWUsIHRhcmdldCwgYmFzZUluc3RGdW5jcywgc2V0SW5zdGFuY2VGdW5jKSB7XHJcbiAgICBmdW5jdGlvbiBfY3JlYXRlRHluYW1pY1Byb3RvdHlwZShwcm90bywgZnVuY05hbWUpIHtcclxuICAgICAgICB2YXIgZHluUHJvdG9Qcm94eSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8gVXNlIHRoZSBpbnN0YW5jZSBvciBwcm90b3R5cGUgZnVuY3Rpb25cclxuICAgICAgICAgICAgdmFyIGluc3RGdW5jID0gX2dldEluc3RGdW5jKHRoaXMsIGZ1bmNOYW1lLCBwcm90bywgZHluUHJvdG9Qcm94eSkgfHwgX2dldFByb3RvRnVuYyhmdW5jTmFtZSwgcHJvdG8sIGR5blByb3RvUHJveHkpO1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXJlc3QtcGFyYW1zXHJcbiAgICAgICAgICAgIHJldHVybiBpbnN0RnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gVGFnIHRoaXMgZnVuY3Rpb24gYXMgYSBwcm94eSB0byBzdXBwb3J0IHJlcGxhY2luZyBkeW5hbWljIHByb3h5IGVsZW1lbnRzIChwcmltYXJ5IHVzZSBjYXNlIGlzIGZvciB1bml0IHRlc3RpbmdcclxuICAgICAgICAvLyB2aWEgd2hpY2ggY2FuIGR5bmFtaWNhbGx5IHJlcGxhY2UgdGhlIHByb3RvdHlwZSBmdW5jdGlvbiByZWZlcmVuY2UpXHJcbiAgICAgICAgZHluUHJvdG9Qcm94eVtEeW5Qcm94eVRhZ10gPSAxO1xyXG4gICAgICAgIHJldHVybiBkeW5Qcm90b1Byb3h5O1xyXG4gICAgfVxyXG4gICAgaWYgKCFfaXNPYmplY3RPckFycmF5UHJvdG90eXBlKHByb3RvKSkge1xyXG4gICAgICAgIHZhciBpbnN0RnVuY1RhYmxlID0gdGFyZ2V0W0R5bkluc3RGdW5jVGFibGVdID0gdGFyZ2V0W0R5bkluc3RGdW5jVGFibGVdIHx8IHt9O1xyXG4gICAgICAgIHZhciBpbnN0RnVuY3NfMSA9IGluc3RGdW5jVGFibGVbY2xhc3NOYW1lXSA9IChpbnN0RnVuY1RhYmxlW2NsYXNzTmFtZV0gfHwge30pOyAvLyBmZXRjaCBhbmQgYXNzaWduIGlmIGFzIGl0IG1heSBub3QgZXhpc3QgeWV0XHJcbiAgICAgICAgLy8gU2V0IHdoZXRoZXIgd2UgYXJlIGFsbG93IHRvIGxvb2t1cCBpbnN0YW5jZXMsIGlmIHNvbWVvbmUgaGFzIHNldCB0byBmYWxzZSB0aGVuIGRvIG5vdCByZS1lbmFibGVcclxuICAgICAgICBpZiAoaW5zdEZ1bmNUYWJsZVtEeW5BbGxvd0luc3RDaGtUYWddICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBpbnN0RnVuY1RhYmxlW0R5bkFsbG93SW5zdENoa1RhZ10gPSAhIXNldEluc3RhbmNlRnVuYztcclxuICAgICAgICB9XHJcbiAgICAgICAgX2ZvckVhY2hQcm9wKHRhcmdldCwgZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAgICAgLy8gT25seSBhZGQgb3ZlcnJpZGRlbiBmdW5jdGlvbnNcclxuICAgICAgICAgICAgaWYgKF9pc0R5bmFtaWNDYW5kaWRhdGUodGFyZ2V0LCBuYW1lLCBmYWxzZSkgJiYgdGFyZ2V0W25hbWVdICE9PSBiYXNlSW5zdEZ1bmNzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBpbnN0YW5jZSBGdW5jdGlvbiB0byB0aGUgbG9va3VwIHRhYmxlIGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgaW5zdGFuY2UgYXMgaXQncyBub3QgYSBkeW5hbWljIHByb3RvIGZ1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICBpbnN0RnVuY3NfMVtuYW1lXSA9IHRhcmdldFtuYW1lXTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXRbbmFtZV07XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgYSBkeW5hbWljIHByb3RvIGlmIG9uZSBkb2Vzbid0IGV4aXN0IG9yIGlmIGEgcHJvdG90eXBlIGZ1bmN0aW9uIGV4aXN0cyBhbmQgaXQncyBub3QgYSBkeW5hbWljIG9uZVxyXG4gICAgICAgICAgICAgICAgaWYgKCFfaGFzT3duUHJvcGVydHkocHJvdG8sIG5hbWUpIHx8IChwcm90b1tuYW1lXSAmJiAhcHJvdG9bbmFtZV1bRHluUHJveHlUYWddKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3RvW25hbWVdID0gX2NyZWF0ZUR5bmFtaWNQcm90b3R5cGUocHJvdG8sIG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXNzZWQgcHJvdG90eXBlIG9iamVjdCBhcHBlYXJzIHRvIGJlIGNvcnJlY3QgYnkgd2Fsa2luZyB0aGUgcHJvdG90eXBlIGhpZXJhcmNoeSBvZiB0aGUgaW5zdGFuY2VcclxuICogQHBhcmFtIGNsYXNzUHJvdG8gVGhlIGNsYXNzIHByb3RvdHlwZSBpbnN0YW5jZVxyXG4gKiBAcGFyYW0gdGhpc1RhcmdldCBUaGUgY3VycmVudCBpbnN0YW5jZSB0aGF0IHdpbGwgYmUgY2hlY2tlZCB3aGV0aGVyIHRoZSBwYXNzZWQgcHJvdG90eXBlIGluc3RhbmNlIGlzIGluIHRoZSBoaWVyYXJjaHlcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZnVuY3Rpb24gX2NoZWNrUHJvdG90eXBlKGNsYXNzUHJvdG8sIHRoaXNUYXJnZXQpIHtcclxuICAgIC8vIFRoaXMgbWV0aG9kIGRvZXNuJ3QgZXhpc3RpbmcgaW4gb2xkZXIgYnJvd3NlcnMgKGUuZy4gSUU4KVxyXG4gICAgaWYgKF9vYmpHZXRQcm90b3R5cGVPZikge1xyXG4gICAgICAgIC8vIEFzIHRoaXMgaXMgcHJpbWFyaWx5IGEgY29kaW5nIHRpbWUgY2hlY2ssIGRvbid0IGJvdGhlciBjaGVja2luZyBpZiBydW5uaW5nIGluIElFOCBvciBsb3dlclxyXG4gICAgICAgIHZhciB2aXNpdGVkID0gW107XHJcbiAgICAgICAgdmFyIHRoaXNQcm90byA9IF9nZXRPYmpQcm90byh0aGlzVGFyZ2V0KTtcclxuICAgICAgICB3aGlsZSAodGhpc1Byb3RvICYmICFfaXNPYmplY3RBcnJheU9yRnVuY3Rpb25Qcm90b3R5cGUodGhpc1Byb3RvKSAmJiAhX2hhc1Zpc2l0ZWQodmlzaXRlZCwgdGhpc1Byb3RvKSkge1xyXG4gICAgICAgICAgICBpZiAodGhpc1Byb3RvID09PSBjbGFzc1Byb3RvKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBUaGlzIGF2b2lkcyB0aGUgY2FsbGVyIGZyb20gbmVlZGluZyB0byBjaGVjayB3aGV0aGVyIGl0J3MgZGlyZWN0IGJhc2UgY2xhc3MgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb24gb3Igbm90XHJcbiAgICAgICAgICAgIC8vIGJ5IHdhbGtpbmcgdGhlIGVudGlyZSBjaGFpbiBpdCBzaW1wbGlmaWVzIHRoZSB1c2FnZSBhbmQgaXNzdWVzIGZyb20gdXBncmFkaW5nIGFueSBvZiB0aGUgYmFzZSBjbGFzc2VzLlxyXG4gICAgICAgICAgICB2aXNpdGVkLnB1c2godGhpc1Byb3RvKTtcclxuICAgICAgICAgICAgdGhpc1Byb3RvID0gX2dldE9ialByb3RvKHRoaXNQcm90byk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIElmIG9iakdldFByb3RvdHlwZU9mIGRvZXNuJ3QgZXhpc3QgdGhlbiBqdXN0IGFzc3VtZSBldmVyeXRoaW5nIGlzIG9rLlxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuLyoqXHJcbiAqIEdldHMgdGhlIGN1cnJlbnQgcHJvdG90eXBlIG5hbWUgdXNpbmcgdGhlIEVTNiBuYW1lIGlmIGF2YWlsYWJsZSBvdGhlcndpc2UgZmFsbGluZyBiYWNrIHRvIGEgdXNlIHVua25vd24gYXMgdGhlIG5hbWUuXHJcbiAqIEl0J3Mgbm90IGNyaXRpY2FsIGZvciB0aGlzIHRvIHJldHVybiBhIG5hbWUsIGl0J3MgdXNlZCB0byBkZWNvcmF0ZSB0aGUgZ2VuZXJhdGVkIHVuaXF1ZSBuYW1lIGZvciBlYXNpZXIgZGVidWdnaW5nIG9ubHkuXHJcbiAqIEBwYXJhbSB0YXJnZXRcclxuICogQHBhcmFtIHVua25vd25WYWx1ZVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5mdW5jdGlvbiBfZ2V0T2JqTmFtZSh0YXJnZXQsIHVua25vd25WYWx1ZSkge1xyXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSh0YXJnZXQsIFByb3RvdHlwZSkpIHtcclxuICAgICAgICAvLyBMb29rIGxpa2UgYSBwcm90b3R5cGVcclxuICAgICAgICByZXR1cm4gdGFyZ2V0Lm5hbWUgfHwgdW5rbm93blZhbHVlIHx8IFVua25vd25WYWx1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiAoKCh0YXJnZXQgfHwge30pW0NvbnN0cnVjdG9yXSkgfHwge30pLm5hbWUgfHwgdW5rbm93blZhbHVlIHx8IFVua25vd25WYWx1ZTtcclxufVxyXG4vKipcclxuICogSGVscGVyIGZ1bmN0aW9uIHdoZW4gY3JlYXRpbmcgZHluYW1pYyAoaW5saW5lKSBmdW5jdGlvbnMgZm9yIGNsYXNzZXMsIHRoaXMgaGVscGVyIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3MgOi1cclxuICogLSBTYXZlcyByZWZlcmVuY2VzIHRvIGFsbCBkZWZpbmVkIGJhc2UgY2xhc3MgZnVuY3Rpb25zXHJcbiAqIC0gQ2FsbHMgdGhlIGRlbGVnYXRlRnVuYyB3aXRoIHRoZSBjdXJyZW50IHRhcmdldCAodGhpcykgYW5kIGEgYmFzZSBvYmplY3QgcmVmZXJlbmNlIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2FsbCBhbGwgXCJzdXBlclwiIGZ1bmN0aW9ucy5cclxuICogLSBXaWxsIHBvcHVsYXRlIHRoZSBjbGFzcyBwcm90b3R5cGUgZm9yIGFsbCBvdmVycmlkZGVuIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGNsYXNzIGV4dGVuc2lvbiB0aGF0IGNhbGwgdGhlIHByb3RvdHlwZSBpbnN0YW5jZS5cclxuICogQ2FsbGVycyBzaG91bGQgdXNlIHRoaXMgaGVscGVyIHdoZW4gZGVjbGFyaW5nIGFsbCBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGEgY2xhc3MsIGFzIG1lbnRpb25lZCBhYm92ZSB0aGUgZGVsZWdhdGVGdW5jIGlzXHJcbiAqIHBhc3NlZCBib3RoIHRoZSB0YXJnZXQgXCJ0aGlzXCIgYW5kIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNhbGwgYW55IGJhc2UgKHN1cGVyKSBmdW5jdGlvbnMsIHVzaW5nIHRoaXMgYmFzZWQgb2JqZWN0IGluIHBsYWNlIG9mXHJcbiAqIHN1cGVyLlhYWCgpICh3aGljaCBnZXRzIGV4cGFuZGVkIHRvIF9zdXBlci5wcm90b3R5cGUuWFhYKCkpIHByb3ZpZGVzIGEgYmV0dGVyIG1pbmlmaWNhdGlvbiBvdXRjb21lIGFuZCBhbHNvIGVuc3VyZXMgdGhlIGNvcnJlY3QgXCJ0aGlzXCJcclxuICogY29udGV4dCBpcyBtYWludGFpbmVkIGFzIFR5cGVTY3JpcHQgY3JlYXRlcyBpbmNvcnJlY3QgcmVmZXJlbmNlcyB1c2luZyBzdXBlci5YWFhYKCkgZm9yIGR5bmFtaWNhbGx5IGRlZmluZWQgZnVuY3Rpb25zIGkuZS4gRnVuY3Rpb25zXHJcbiAqIGRlZmluZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIHNvbWUgb3RoZXIgZnVuY3Rpb24gKHJhdGhlciB0aGFuIGRlY2xhcmVkIGFzIGNvbXBsZXRlIHR5cGVzY3JpcHQgZnVuY3Rpb25zKS5cclxuICogIyMjIFVzYWdlXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuICogY2xhc3MgRXhhbXBsZUNsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHtcclxuICogICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gKiAgICAgICAgIGR5bmFtaWNQcm90byhFeGFtcGxlQ2xhc3MsIHRoaXMsIChfc2VsZiwgYmFzZSkgPT4ge1xyXG4gKiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgZGVmaW5lIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIHByb3RvdHlwZSBmdW5jdGlvblxyXG4gKiAgICAgICAgICAgICBfc2VsZi5uZXdGdW5jID0gKCkgPT4ge1xyXG4gKiAgICAgICAgICAgICAgICAgLy8gQWNjZXNzIGFueSBcInRoaXNcIiBpbnN0YW5jZSBwcm9wZXJ0eVxyXG4gKiAgICAgICAgICAgICAgICAgaWYgKF9zZWxmLnNvbWVQcm9wZXJ0eSkge1xyXG4gKiAgICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICB9XHJcbiAqICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBkZWZpbmUgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgcHJvdG90eXBlIGZ1bmN0aW9uXHJcbiAqICAgICAgICAgICAgIF9zZWxmLm15RnVuY3Rpb24gPSAoKSA9PiB7XHJcbiAqICAgICAgICAgICAgICAgICAvLyBBY2Nlc3MgYW55IFwidGhpc1wiIGluc3RhbmNlIHByb3BlcnR5XHJcbiAqICAgICAgICAgICAgICAgICBpZiAoX3NlbGYuc29tZVByb3BlcnR5KSB7XHJcbiAqICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgYmFzZSB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB0aGF0IHdlIGFyZSBvdmVycmlkaW5nXHJcbiAqICAgICAgICAgICAgICAgICAgICAgYmFzZS5teUZ1bmN0aW9uKCk7XHJcbiAqICAgICAgICAgICAgICAgICB9XHJcbiAqICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICBfc2VsZi5pbml0aWFsaXplID0gKCkgPT4ge1xyXG4gKiAgICAgICAgICAgICAgICAgLi4uXHJcbiAqICAgICAgICAgICAgIH1cclxuICogICAgICAgICAgICAgLy8gV2FybmluZ3M6IFdoaWxlIHRoZSBmb2xsb3dpbmcgd2lsbCB3b3JrIGFzIF9zZWxmIGlzIHNpbXBseSBhIHJlZmVyZW5jZSB0b1xyXG4gKiAgICAgICAgICAgICAvLyB0aGlzLCBpZiBhbnlvbmUgb3ZlcnJpZGVzIG15RnVuY3Rpb24oKSB0aGUgb3ZlcnJpZGRlbiB3aWxsIGJlIGNhbGxlZCBmaXJzdFxyXG4gKiAgICAgICAgICAgICAvLyBhcyB0aGUgbm9ybWFsIEphdmFTY3JpcHQgbWV0aG9kIHJlc29sdXRpb24gd2lsbCBvY2N1ciBhbmQgdGhlIGRlZmluZWRcclxuICogICAgICAgICAgICAgLy8gX3NlbGYuaW5pdGlhbGl6ZSgpIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBpbnN0YW5jZSBhbmRcclxuICogICAgICAgICAgICAgLy8gYSBwcm94eSBwcm90b3R5cGUgdmVyc2lvbiBpcyBjcmVhdGVkIHRvIHJlZmVyZW5jZSB0aGUgY3JlYXRlZCBtZXRob2QuXHJcbiAqICAgICAgICAgICAgIF9zZWxmLmluaXRpYWxpemUoKTtcclxuICogICAgICAgICB9KTtcclxuICogICAgIH1cclxuICogfVxyXG4gKiBgYGBcclxuICogQHR5cGVwYXJhbSBEUFR5cGUgVGhpcyBpcyB0aGUgZ2VuZXJpYyB0eXBlIG9mIHRoZSBjbGFzcywgdXNlZCB0byBrZWVwIGludGVsbGlzZW5zZSB2YWxpZFxyXG4gKiBAdHlwZXBhcmFtIERQQ2xzIFRoZSB0eXBlIHRoYXQgY29udGFpbnMgdGhlIHByb3RvdHlwZSBvZiB0aGUgY3VycmVudCBjbGFzc1xyXG4gKiBAcGFyYW0gdGhlQ2xhc3MgLSBUaGlzIGlzIHRoZSBjdXJyZW50IGNsYXNzIGluc3RhbmNlIHdoaWNoIGNvbnRhaW5zIHRoZSBwcm90b3R5cGUgZm9yIHRoZSBjdXJyZW50IGNsYXNzXHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgY3VycmVudCBcInRoaXNcIiAodGFyZ2V0KSByZWZlcmVuY2UsIHdoZW4gdGhlIGNsYXNzIGhhcyBiZWVuIGV4dGVuZGVkIHRoaXMucHJvdG90eXBlIHdpbGwgbm90IGJlIHRoZSAndGhlQ2xhc3MnIHZhbHVlLlxyXG4gKiBAcGFyYW0gZGVsZWdhdGVGdW5jIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIChjbG9zdXJlKSB0aGF0IHdpbGwgY3JlYXRlIHRoZSBkeW5hbWljIGZ1bmN0aW9uXHJcbiAqIEBwYXJhbSBvcHRpb25zIC0gQWRkaXRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSBob3cgdGhlIGR5bmFtaWMgcHJvdG90eXBlIG9wZXJhdGVzXHJcbiAqL1xyXG5mdW5jdGlvbiBkeW5hbWljUHJvdG8odGhlQ2xhc3MsIHRhcmdldCwgZGVsZWdhdGVGdW5jLCBvcHRpb25zKSB7XHJcbiAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcGFzc2VkIHRoZUNsYXNzIGFyZ3VtZW50IGxvb2tzIGNvcnJlY3RcclxuICAgIGlmICghX2hhc093blByb3BlcnR5KHRoZUNsYXNzLCBQcm90b3R5cGUpKSB7XHJcbiAgICAgICAgX3Rocm93VHlwZUVycm9yKFwidGhlQ2xhc3MgaXMgYW4gaW52YWxpZCBjbGFzcyBkZWZpbml0aW9uLlwiKTtcclxuICAgIH1cclxuICAgIC8vIFF1aWNrIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYXNzZWQgdGhlQ2xhc3MgYXJndW1lbnQgbG9va3MgY29ycmVjdCAodGhpcyBpcyBhIGNvbW1vbiBjb3B5L3Bhc3RlIGVycm9yKVxyXG4gICAgdmFyIGNsYXNzUHJvdG8gPSB0aGVDbGFzc1tQcm90b3R5cGVdO1xyXG4gICAgaWYgKCFfY2hlY2tQcm90b3R5cGUoY2xhc3NQcm90bywgdGFyZ2V0KSkge1xyXG4gICAgICAgIF90aHJvd1R5cGVFcnJvcihcIltcIiArIF9nZXRPYmpOYW1lKHRoZUNsYXNzKSArIFwiXSBub3QgaW4gaGllcmFyY2h5IG9mIFtcIiArIF9nZXRPYmpOYW1lKHRhcmdldCkgKyBcIl1cIik7XHJcbiAgICB9XHJcbiAgICB2YXIgY2xhc3NOYW1lID0gbnVsbDtcclxuICAgIGlmIChfaGFzT3duUHJvcGVydHkoY2xhc3NQcm90bywgRHluQ2xhc3NOYW1lKSkge1xyXG4gICAgICAgIC8vIE9ubHkgZ3JhYiB0aGUgY2xhc3MgbmFtZSBpZiBpdCdzIGRlZmluZWQgb24gdGhpcyBwcm90b3R5cGUgKGkuZS4gZG9uJ3Qgd2FsayB0aGUgcHJvdG90eXBlIGNoYWluKVxyXG4gICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzUHJvdG9bRHluQ2xhc3NOYW1lXTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEFzIG5vdCBhbGwgYnJvd3NlciBzdXBwb3J0IG5hbWUgb24gdGhlIHByb3RvdHlwZSBjcmVhdGluZyBhIHVuaXF1ZSBkeW5hbWljIG9uZSBpZiB3ZSBoYXZlIG5vdCBhbHJlYWR5XHJcbiAgICAgICAgLy8gYXNzaWduZWQgb25lLCBzbyB3ZSBjYW4gdXNlIGEgc2ltcGxlIHN0cmluZyBhcyB0aGUgbG9va3VwIHJhdGhlciB0aGFuIGFuIG9iamVjdCBmb3IgdGhlIGR5bmFtaWMgaW5zdGFuY2VcclxuICAgICAgICAvLyBmdW5jdGlvbiB0YWJsZSBsb29rdXAuXHJcbiAgICAgICAgY2xhc3NOYW1lID0gRHluQ2xhc3NOYW1lUHJlZml4ICsgX2dldE9iak5hbWUodGhlQ2xhc3MsIFwiX1wiKSArIFwiJFwiICsgX2dibEluc3QubjtcclxuICAgICAgICBfZ2JsSW5zdC5uKys7XHJcbiAgICAgICAgY2xhc3NQcm90b1tEeW5DbGFzc05hbWVdID0gY2xhc3NOYW1lO1xyXG4gICAgfVxyXG4gICAgdmFyIHBlcmZPcHRpb25zID0gZHluYW1pY1Byb3RvW0R5blByb3RvRGVmYXVsdE9wdGlvbnNdO1xyXG4gICAgdmFyIHVzZUJhc2VJbnN0ID0gISFwZXJmT3B0aW9uc1tzdHJVc2VCYXNlSW5zdF07XHJcbiAgICBpZiAodXNlQmFzZUluc3QgJiYgb3B0aW9ucyAmJiBvcHRpb25zW3N0clVzZUJhc2VJbnN0XSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdXNlQmFzZUluc3QgPSAhIW9wdGlvbnNbc3RyVXNlQmFzZUluc3RdO1xyXG4gICAgfVxyXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IGluc3RhbmNlIGZ1bmN0aW9uc1xyXG4gICAgdmFyIGluc3RGdW5jcyA9IF9nZXRJbnN0YW5jZUZ1bmNzKHRhcmdldCk7XHJcbiAgICAvLyBHZXQgYWxsIG9mIHRoZSBmdW5jdGlvbnMgZm9yIGFueSBiYXNlIGluc3RhbmNlIChiZWZvcmUgdGhleSBhcmUgcG90ZW50aWFsbHkgb3ZlcnJpZGRlbilcclxuICAgIHZhciBiYXNlRnVuY3MgPSBfZ2V0QmFzZUZ1bmNzKGNsYXNzUHJvdG8sIHRhcmdldCwgaW5zdEZ1bmNzLCB1c2VCYXNlSW5zdCk7XHJcbiAgICAvLyBFeGVjdXRlIHRoZSBkZWxlZ2F0ZSBwYXNzaW5nIGluIGJvdGggdGhlIGN1cnJlbnQgdGFyZ2V0IFwidGhpc1wiIGFuZCBcImJhc2VcIiBmdW5jdGlvbiByZWZlcmVuY2VzXHJcbiAgICAvLyBOb3RlIGNhc3RpbmcgdGhlIHNhbWUgdHlwZSBhcyB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIHRoZSBiYXNlIGNsYXNzIGhlcmUgYW5kIHRoaXMgd2lsbCBwcm92aWRlIHNvbWUgaW50ZWxsaXNlbnNlIHN1cHBvcnRcclxuICAgIGRlbGVnYXRlRnVuYyh0YXJnZXQsIGJhc2VGdW5jcyk7XHJcbiAgICAvLyBEb24ndCBhbGxvdyBzZXR0aW5nIGluc3RhbmNlIGZ1bmN0aW9ucyBmb3Igb2xkZXIgSUUgaW5zdGFuY2VzXHJcbiAgICB2YXIgc2V0SW5zdGFuY2VGdW5jID0gISFfb2JqR2V0UHJvdG90eXBlT2YgJiYgISFwZXJmT3B0aW9uc1tzdHJTZXRJbnN0RnVuY3NdO1xyXG4gICAgaWYgKHNldEluc3RhbmNlRnVuYyAmJiBvcHRpb25zKSB7XHJcbiAgICAgICAgc2V0SW5zdGFuY2VGdW5jID0gISFvcHRpb25zW3N0clNldEluc3RGdW5jc107XHJcbiAgICB9XHJcbiAgICAvLyBQb3B1bGF0ZSB0aGUgUHJvdG90eXBlIGZvciBhbnkgb3ZlcnJpZGRlbiBpbnN0YW5jZSBmdW5jdGlvbnNcclxuICAgIF9wb3B1bGF0ZVByb3RvdHlwZShjbGFzc1Byb3RvLCBjbGFzc05hbWUsIHRhcmdldCwgaW5zdEZ1bmNzLCBzZXRJbnN0YW5jZUZ1bmMgIT09IGZhbHNlKTtcclxufVxyXG4vKipcclxuICogRXhwb3NlcyB0aGUgZGVmYXVsdCBnbG9iYWwgb3B0aW9ucyB0byBhbGxvdyBnbG9iYWwgY29uZmlndXJhdGlvbiwgaWYgdGhlIGdsb2JhbCB2YWx1ZXMgYXJlIGRpc2FibGVkIHRoZXNlIHdpbGwgb3ZlcnJpZGVcclxuICogYW55IHBhc3NlZCB2YWx1ZXMuIFRoaXMgaXMgcHJpbWFyaWx5IGV4cG9zZWQgdG8gc3VwcG9ydCB1bml0LXRlc3Rpbmcgd2l0aG91dCB0aGUgbmVlZCBmb3IgaW5kaXZpZHVhbCBjbGFzc2VzIHRvIGV4cG9zZVxyXG4gKiB0aGVpciBpbnRlcm5hbCB1c2FnZSBvZiBkeW5hbWljIHByb3RvLlxyXG4gKi9cclxuZHluYW1pY1Byb3RvW0R5blByb3RvRGVmYXVsdE9wdGlvbnNdID0gX2dibEluc3QubztcblxuZXhwb3J0IHsgZHluYW1pY1Byb3RvIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWR5bmFtaWNwcm90by1qcy5qcy5tYXBcbiIsIi8vIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbmV4cG9ydCB2YXIgc3RyU2hpbUZ1bmN0aW9uID0gXCJmdW5jdGlvblwiO1xyXG5leHBvcnQgdmFyIHN0clNoaW1PYmplY3QgPSBcIm9iamVjdFwiO1xyXG5leHBvcnQgdmFyIHN0clNoaW1VbmRlZmluZWQgPSBcInVuZGVmaW5lZFwiO1xyXG5leHBvcnQgdmFyIHN0clNoaW1Qcm90b3R5cGUgPSBcInByb3RvdHlwZVwiO1xyXG5leHBvcnQgdmFyIHN0clNoaW1IYXNPd25Qcm9wZXJ0eSA9IFwiaGFzT3duUHJvcGVydHlcIjtcclxuZXhwb3J0IHZhciBzdHJEZWZhdWx0ID0gXCJkZWZhdWx0XCI7XHJcbmV4cG9ydCB2YXIgT2JqQ2xhc3MgPSBPYmplY3Q7XHJcbmV4cG9ydCB2YXIgT2JqUHJvdG8gPSBPYmpDbGFzc1tzdHJTaGltUHJvdG90eXBlXTtcclxuZXhwb3J0IHZhciBPYmpBc3NpZ24gPSBPYmpDbGFzc1tcImFzc2lnblwiXTtcclxuZXhwb3J0IHZhciBPYmpDcmVhdGUgPSBPYmpDbGFzc1tcImNyZWF0ZVwiXTtcclxuZXhwb3J0IHZhciBPYmpEZWZpbmVQcm9wZXJ0eSA9IE9iakNsYXNzW1wiZGVmaW5lUHJvcGVydHlcIl07XHJcbmV4cG9ydCB2YXIgT2JqSGFzT3duUHJvcGVydHkgPSBPYmpQcm90b1tzdHJTaGltSGFzT3duUHJvcGVydHldO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db25zdGFudHMuanMubWFwIiwiLy8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuaW1wb3J0IHsgT2JqQ3JlYXRlLCBzdHJTaGltRnVuY3Rpb24sIHN0clNoaW1PYmplY3QsIHN0clNoaW1Qcm90b3R5cGUsIHN0clNoaW1VbmRlZmluZWQgfSBmcm9tIFwiLi9Db25zdGFudHNcIjtcclxudmFyIF9jYWNoZWRHbG9iYWwgPSBudWxsO1xyXG4vKipcclxuICogUmV0dXJucyB0aGUgY3VycmVudCBnbG9iYWwgc2NvcGUgb2JqZWN0LCBmb3IgYSBub3JtYWwgd2ViIHBhZ2UgdGhpcyB3aWxsIGJlIHRoZSBjdXJyZW50XHJcbiAqIHdpbmRvdywgZm9yIGEgV2ViIFdvcmtlciB0aGlzIHdpbGwgYmUgY3VycmVudCB3b3JrZXIgZ2xvYmFsIHNjb3BlIHZpYSBcInNlbGZcIi4gVGhlIGludGVybmFsXHJcbiAqIGltcGxlbWVudGF0aW9uIHJldHVybnMgdGhlIGZpcnN0IGF2YWlsYWJsZSBpbnN0YW5jZSBvYmplY3QgaW4gdGhlIGZvbGxvd2luZyBvcmRlclxyXG4gKiAtIGdsb2JhbFRoaXMgKE5ldyBzdGFuZGFyZClcclxuICogLSBzZWxmIChXaWxsIHJldHVybiB0aGUgY3VycmVudCB3aW5kb3cgaW5zdGFuY2UgZm9yIHN1cHBvcnRlZCBicm93c2VycylcclxuICogLSB3aW5kb3cgKGZhbGxiYWNrIGZvciBvbGRlciBicm93c2VyIGltcGxlbWVudGF0aW9ucylcclxuICogLSBnbG9iYWwgKE5vZGVKUyBzdGFuZGFyZClcclxuICogLSA8bnVsbD4gKFdoZW4gYWxsIGVsc2UgZmFpbHMpXHJcbiAqIFdoaWxlIHRoZSByZXR1cm4gdHlwZSBpcyBhIFdpbmRvdyBmb3IgdGhlIG5vcm1hbCBjYXNlLCBub3QgYWxsIGVudmlyb25tZW50cyB3aWxsIHN1cHBvcnQgYWxsXHJcbiAqIG9mIHRoZSBwcm9wZXJ0aWVzIG9yIGZ1bmN0aW9ucy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRHbG9iYWwodXNlQ2FjaGVkKSB7XHJcbiAgICBpZiAodXNlQ2FjaGVkID09PSB2b2lkIDApIHsgdXNlQ2FjaGVkID0gdHJ1ZTsgfVxyXG4gICAgdmFyIHJlc3VsdCA9IHVzZUNhY2hlZCA9PT0gZmFsc2UgPyBudWxsIDogX2NhY2hlZEdsb2JhbDtcclxuICAgIGlmICghcmVzdWx0KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBzdHJTaGltVW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGdsb2JhbFRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiBzZWxmICE9PSBzdHJTaGltVW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHNlbGY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghcmVzdWx0ICYmIHR5cGVvZiB3aW5kb3cgIT09IHN0clNoaW1VbmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gd2luZG93O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXJlc3VsdCAmJiB0eXBlb2YgZ2xvYmFsICE9PSBzdHJTaGltVW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGdsb2JhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgX2NhY2hlZEdsb2JhbCA9IHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHRocm93VHlwZUVycm9yKG1lc3NhZ2UpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IobWVzc2FnZSk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaGFzIHRoZSBzcGVjaWZpZWQgcHJvdG90eXBlLCBhbmQgdGhhdCBvcHRpb25hbGx5IGNvbnRhaW5zIHNwZWNpZmllZCBwcm9wZXJ0aWVzLiBUaGlzIGhlbHBlciBleGlzdHMgdG8gYXZvaWQgYWRkaW5nIGEgcG9seWZpbFxyXG4gKiBmb3Igb2xkZXIgYnJvd3NlcnMgdGhhdCBkbyBub3QgZGVmaW5lIE9iamVjdC5jcmVhdGUgZWcuIEVTMyBvbmx5LCBJRTgganVzdCBpbiBjYXNlIGFueSBwYWdlIGNoZWNrcyBmb3IgcHJlc2VuY2UvYWJzZW5jZSBvZiB0aGUgcHJvdG90eXBlIGltcGxlbWVudGF0aW9uLlxyXG4gKiBOb3RlOiBGb3IgY29uc2lzdGVuY3kgdGhpcyB3aWxsIG5vdCB1c2UgdGhlIE9iamVjdC5jcmVhdGUgaW1wbGVtZW50YXRpb24gaWYgaXQgZXhpc3RzIGFzIHRoaXMgd291bGQgY2F1c2UgYSB0ZXN0aW5nIHJlcXVpcmVtZW50IHRvIHRlc3Qgd2l0aCBhbmQgd2l0aG91dCB0aGUgaW1wbGVtZW50YXRpb25zXHJcbiAqIEBwYXJhbSBvYmogT2JqZWN0IHRvIHVzZSBhcyBhIHByb3RvdHlwZS4gTWF5IGJlIG51bGxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvYmpDcmVhdGVGbihvYmopIHtcclxuICAgIHZhciBmdW5jID0gT2JqQ3JlYXRlO1xyXG4gICAgLy8gVXNlIGJ1aWxkIGluIE9iamVjdC5jcmVhdGVcclxuICAgIGlmIChmdW5jKSB7XHJcbiAgICAgICAgLy8gVXNlIE9iamVjdCBjcmVhdGUgbWV0aG9kIGlmIGl0IGV4aXN0c1xyXG4gICAgICAgIHJldHVybiBmdW5jKG9iaik7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XHJcbiAgICBpZiAodHlwZSAhPT0gc3RyU2hpbU9iamVjdCAmJiB0eXBlICE9PSBzdHJTaGltRnVuY3Rpb24pIHtcclxuICAgICAgICB0aHJvd1R5cGVFcnJvcihcIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0OlwiICsgb2JqKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHRtcEZ1bmMoKSB7IH1cclxuICAgIHRtcEZ1bmNbc3RyU2hpbVByb3RvdHlwZV0gPSBvYmo7XHJcbiAgICByZXR1cm4gbmV3IHRtcEZ1bmMoKTtcclxufVxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1IZWxwZXJzLmpzLm1hcCIsIi8vIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXHJcbmltcG9ydCB7IE9iakFzc2lnbiwgT2JqQ2xhc3MsIE9iakNyZWF0ZSwgT2JqRGVmaW5lUHJvcGVydHksIE9iakhhc093blByb3BlcnR5LCBPYmpQcm90bywgc3RyRGVmYXVsdCwgc3RyU2hpbUZ1bmN0aW9uLCBzdHJTaGltSGFzT3duUHJvcGVydHksIHN0clNoaW1Qcm90b3R5cGUgfSBmcm9tIFwiLi9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2V0R2xvYmFsLCBvYmpDcmVhdGVGbiwgdGhyb3dUeXBlRXJyb3IgfSBmcm9tIFwiLi9IZWxwZXJzXCI7XHJcbi8vIE1vc3Qgb2YgdGhlc2UgZnVuY3Rpb25zIGhhdmUgYmVlbiBkaXJlY3RseSBzaGFtZWxlc3NseSBcImxpZnRlZFwiIGZyb20gdGhlIGh0dHBzOi8vZ2l0aHViLmNvbS9AbWljcm9zb2Z0L3RzbGliIGFuZFxyXG4vLyBtb2RpZmllZCB0byBiZSBFUzMgY29tcGF0aWJsZSBhbmQgYXBwbHlpbmcgc2V2ZXJhbCBtaW5pZmljYXRpb24gYW5kIHRyZWUtc2hha2luZyB0ZWNobmlxdWVzIHNvIHRoYXQgQXBwbGljYXRpb24gSW5zaWdodHNcclxuLy8gY2FuIHN1Y2Nlc3NmdWxseSB1c2UgVHlwZVNjcmlwdCBcImltcG9ydEhlbHBlcnNcIiB3aGljaCBpbXBvcnRzIHRzbGliIGR1cmluZyBjb21waWxhdGlvbiBidXQgaXQgd2lsbCB1c2UgdGhlc2UgYXQgcnVudGltZVxyXG4vLyBXaGljaCBpcyBhbHNvIHdoeSBhbGwgb2YgdGhlIGZ1bmN0aW9ucyBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGFzIEFwcGxpY2F0aW9uIEluc2lnaHRzIGN1cnJlbnRseSBkb2Vzbid0IHVzZSBvciByZXF1aXJlXHJcbi8vIHRoZW0uXHJcbmV4cG9ydCB2YXIgU3ltYm9sT2JqID0gKGdldEdsb2JhbCgpIHx8IHt9KVtcIlN5bWJvbFwiXTtcclxuZXhwb3J0IHZhciBSZWZsZWN0T2JqID0gKGdldEdsb2JhbCgpIHx8IHt9KVtcIlJlZmxlY3RcIl07XHJcbmV4cG9ydCB2YXIgX19oYXNTeW1ib2wgPSAhIVN5bWJvbE9iajtcclxuZXhwb3J0IHZhciBfX2hhc1JlZmxlY3QgPSAhIVJlZmxlY3RPYmo7XHJcbnZhciBzdHJEZWNvcmF0ZSA9IFwiZGVjb3JhdGVcIjtcclxudmFyIHN0ck1ldGFkYXRhID0gXCJtZXRhZGF0YVwiO1xyXG52YXIgc3RyR2V0T3duUHJvcGVydHlTeW1ib2xzID0gXCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHNcIjtcclxudmFyIHN0ckl0ZXJhdG9yID0gXCJpdGVyYXRvclwiO1xyXG5leHBvcnQgdmFyIF9fb2JqQXNzaWduRm5JbXBsID0gZnVuY3Rpb24gKHQpIHtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYmFuLWNvbW1hLW9wZXJhdG9yXHJcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gcykge1xyXG4gICAgICAgICAgICBpZiAoT2JqUHJvdG9bc3RyU2hpbUhhc093blByb3BlcnR5XS5jYWxsKHMsIHApKSB7XHJcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59O1xyXG5leHBvcnQgdmFyIF9fYXNzaWduRm4gPSBPYmpBc3NpZ24gfHwgX19vYmpBc3NpZ25GbkltcGw7XHJcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25seS1hcnJvdy1mdW5jdGlvbnNcclxudmFyIGV4dGVuZFN0YXRpY3NGbiA9IGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzRm4gPSBPYmpDbGFzc1tcInNldFByb3RvdHlwZU9mXCJdIHx8XHJcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7XHJcbiAgICAgICAgICAgIGQuX19wcm90b19fID0gYjtcclxuICAgICAgICB9KSB8fFxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25seS1hcnJvdy1mdW5jdGlvbnNcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIGIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChiW3N0clNoaW1IYXNPd25Qcm9wZXJ0eV0ocCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkW3BdID0gYltwXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljc0ZuKGQsIGIpO1xyXG59O1xyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzRm4oZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBzdHJTaGltRnVuY3Rpb24gJiYgYiAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRocm93VHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICB9XHJcbiAgICBleHRlbmRTdGF0aWNzRm4oZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHtcclxuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yID0gZDtcclxuICAgIH1cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogYmFuLWNvbW1hLW9wZXJhdG9yXHJcbiAgICBkW3N0clNoaW1Qcm90b3R5cGVdID0gYiA9PT0gbnVsbCA/IG9iakNyZWF0ZUZuKGIpIDogKF9fW3N0clNoaW1Qcm90b3R5cGVdID0gYltzdHJTaGltUHJvdG90eXBlXSwgbmV3IF9fKCkpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3RGbihzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgayBpbiBzKSB7XHJcbiAgICAgICAgaWYgKE9iakhhc093blByb3BlcnR5LmNhbGwocywgaykgJiYgZS5pbmRleE9mKGspIDwgMCkge1xyXG4gICAgICAgICAgICB0W2tdID0gc1trXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmpDbGFzc1tzdHJHZXRPd25Qcm9wZXJ0eVN5bWJvbHNdID09PSBzdHJTaGltRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iakNsYXNzW3N0ckdldE93blByb3BlcnR5U3ltYm9sc10ocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9ialByb3RvW1wicHJvcGVydHlJc0VudW1lcmFibGVcIl0uY2FsbChzLCBwW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZUZuKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqQ2xhc3NbXCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JcIl0odGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmIChfX2hhc1JlZmxlY3QgJiYgdHlwZW9mIFJlZmxlY3RPYmpbc3RyRGVjb3JhdGVdID09PSBzdHJTaGltRnVuY3Rpb24pIHtcclxuICAgICAgICByID0gUmVmbGVjdE9ialtzdHJEZWNvcmF0ZV0oZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXHJcbiAgICAgICAgICAgIGlmIChkID0gZGVjb3JhdG9yc1tpXSkge1xyXG4gICAgICAgICAgICAgICAgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLWNvbW1hLW9wZXJhdG9yXHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmpEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW1GbihwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcclxuICAgICAgICBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpO1xyXG4gICAgfTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YUZuKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAoX19oYXNSZWZsZWN0ICYmIFJlZmxlY3RPYmpbc3RyTWV0YWRhdGFdID09PSBzdHJTaGltRnVuY3Rpb24pIHtcclxuICAgICAgICByZXR1cm4gUmVmbGVjdE9ialtzdHJNZXRhZGF0YV0obWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXJGbihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIHtcclxuICAgICAgICBpZiAocCAhPT0gc3RyRGVmYXVsdCAmJiAhT2JqSGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkge1xyXG4gICAgICAgICAgICBfX2NyZWF0ZUJpbmRpbmdGbihvLCBtLCBwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY3JlYXRlQmluZGluZ0ZuKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGsyID0gaztcclxuICAgIH1cclxuICAgIGlmICghIU9iakNyZWF0ZSkge1xyXG4gICAgICAgIE9iakRlZmluZVByb3BlcnR5KG8sIGsyLCB7XHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ba107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIG9bazJdID0gbVtrXTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXNGbihvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2xPYmogPT09IHN0clNoaW1GdW5jdGlvbiAmJiBTeW1ib2xPYmpbc3RySXRlcmF0b3JdLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSB7XHJcbiAgICAgICAgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIH1cclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIHRocm93VHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZEZuKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbE9iaiA9PT0gc3RyU2hpbUZ1bmN0aW9uICYmIG9bU3ltYm9sT2JqW3N0ckl0ZXJhdG9yXV07XHJcbiAgICBpZiAoIW0pIHtcclxuICAgICAgICByZXR1cm4gbztcclxuICAgIH1cclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkge1xyXG4gICAgICAgICAgICBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGUgPSB7XHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uZGl0aW9uYWwtYXNzaWdubWVudFxyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIHtcclxuICAgICAgICAgICAgICAgIG0uY2FsbChpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnNhZmUtZmluYWxseVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZS5lcnJvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzRm4oKSB7XHJcbiAgICB2YXIgdGhlQXJncyA9IGFyZ3VtZW50cztcclxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdG90YWwgc2l6ZVxyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IHRoZUFyZ3MubGVuZ3RoOyBpIDwgaWw7IGkrKykge1xyXG4gICAgICAgIHMgKz0gdGhlQXJnc1tpXS5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICAvLyBDcmVhdGUgbmV3IGZ1bGwgYXJyYXlcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKykge1xyXG4gICAgICAgIGZvciAodmFyIGEgPSB0aGVBcmdzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKykge1xyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheUZuKHRvLCBmcm9tKSB7XHJcbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBmcm9tLmxlbmd0aCwgaiA9IHRvLmxlbmd0aDsgaSA8IGlsOyBpKyssIGorKykge1xyXG4gICAgICAgIHRvW2pdID0gZnJvbVtpXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3RGbihjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iakRlZmluZVByb3BlcnR5KSB7XHJcbiAgICAgICAgT2JqRGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb29rZWQucmF3ID0gcmF3O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyRm4obW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIG1vZDtcclxuICAgIH1cclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbW9kKSB7XHJcbiAgICAgICAgICAgIGlmIChrICE9PSBzdHJEZWZhdWx0ICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSB7XHJcbiAgICAgICAgICAgICAgICBfX2NyZWF0ZUJpbmRpbmdGbihyZXN1bHQsIG1vZCwgayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBTZXQgZGVmYXVsdCBtb2R1bGVcclxuICAgIGlmICghIU9iakNyZWF0ZSkge1xyXG4gICAgICAgIE9iakRlZmluZVByb3BlcnR5KHJlc3VsdCwgc3RyRGVmYXVsdCwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogbW9kIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0W3N0ckRlZmF1bHRdID0gbW9kO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0Rm4obW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IHN0ckRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRzTGliU2hpbXMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29yZSwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuLy8gQHNraXAtZmlsZS1taW5pZnlcclxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuLy8gQVVUTyBHRU5FUkFURUQgRklMRTogVGhpcyBmaWxlIGlzIEF1dG8gR2VuZXJhdGVkIGR1cmluZyBidWlsZC5cclxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gTm90ZTogRE9OJ1QgRXhwb3J0IHRoZXNlIGNvbnN0IGZyb20gdGhlIHBhY2thZ2UgYXMgd2UgYXJlIHN0aWxsIHRhcmdldGluZyBFUzMgdGhpcyB3aWxsIGV4cG9ydCBhIG11dGFibGUgdmFyaWFibGVzIHRoYXQgc29tZW9uZSBjb3VsZCBjaGFuZ2UhISFcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuZXhwb3J0IHZhciBfRFlOX0lOSVRJQUxJWkUgPSBcImluaXRpYWxpemVcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX05BTUUgPSBcIm5hbWVcIjsgLy8gQ291bnQ6IDExXHJcbmV4cG9ydCB2YXIgX0RZTl9HRVRfTk9USUZZX01HUiA9IFwiZ2V0Tm90aWZ5TWdyXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9JREVOVElGSUVSID0gXCJpZGVudGlmaWVyXCI7IC8vIENvdW50OiA4XHJcbmV4cG9ydCB2YXIgX0RZTl9QVVNIID0gXCJwdXNoXCI7IC8vIENvdW50OiAzMFxyXG5leHBvcnQgdmFyIF9EWU5fSVNfSU5JVElBTElaRUQgPSBcImlzSW5pdGlhbGl6ZWRcIjsgLy8gQ291bnQ6IDEwXHJcbmV4cG9ydCB2YXIgX0RZTl9DT05GSUcgPSBcImNvbmZpZ1wiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSA9IFwiaW5zdHJ1bWVudGF0aW9uS2V5XCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9MT0dHRVIgPSBcImxvZ2dlclwiOyAvLyBDb3VudDogOVxyXG5leHBvcnQgdmFyIF9EWU5fTEVOR1RIID0gXCJsZW5ndGhcIjsgLy8gQ291bnQ6IDQzXHJcbmV4cG9ydCB2YXIgX0RZTl9USU1FID0gXCJ0aW1lXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9QUk9DRVNTX05FWFQgPSBcInByb2Nlc3NOZXh0XCI7IC8vIENvdW50OiAyMVxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX1BST0NFU1NfVEVMX0NPTlQwID0gXCJnZXRQcm9jZXNzVGVsQ29udGV4dFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fQUREX05PVElGSUNBVElPTl9MSVMxID0gXCJhZGROb3RpZmljYXRpb25MaXN0ZW5lclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fUkVNT1ZFX05PVElGSUNBVElPTl8yID0gXCJyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fU1RPUF9QT0xMSU5HX0lOVEVSTkEzID0gXCJzdG9wUG9sbGluZ0ludGVybmFsTG9nc1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fT05fQ09NUExFVEUgPSBcIm9uQ29tcGxldGVcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9QTFVHSU4gPSBcImdldFBsdWdpblwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fRkxVU0ggPSBcImZsdXNoXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9fRVhURU5TSU9OUyA9IFwiX2V4dGVuc2lvbnNcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1NQTElDRSA9IFwic3BsaWNlXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9URUFSRE9XTiA9IFwidGVhcmRvd25cIjsgLy8gQ291bnQ6IDEwXHJcbmV4cG9ydCB2YXIgX0RZTl9NRVNTQUdFX0lEID0gXCJtZXNzYWdlSWRcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX01FU1NBR0UgPSBcIm1lc3NhZ2VcIjsgLy8gQ291bnQ6IDdcclxuZXhwb3J0IHZhciBfRFlOX0lTX0FTWU5DID0gXCJpc0FzeW5jXCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9fRE9fVEVBUkRPV04gPSBcIl9kb1RlYXJkb3duXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9VUERBVEUgPSBcInVwZGF0ZVwiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fR0VUX05FWFQgPSBcImdldE5leHRcIjsgLy8gQ291bnQ6IDEyXHJcbmV4cG9ydCB2YXIgX0RZTl9ESUFHX0xPRyA9IFwiZGlhZ0xvZ1wiOyAvLyBDb3VudDogOFxyXG5leHBvcnQgdmFyIF9EWU5fU0VUX05FWFRfUExVR0lOID0gXCJzZXROZXh0UGx1Z2luXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9DUkVBVEVfTkVXID0gXCJjcmVhdGVOZXdcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX0NPT0tJRV9DRkcgPSBcImNvb2tpZUNmZ1wiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fSU5ERVhfT0YgPSBcImluZGV4T2ZcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX1NVQlNUUklORyA9IFwic3Vic3RyaW5nXCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fVVNFUl9BR0VOVCA9IFwidXNlckFnZW50XCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9TUExJVCA9IFwic3BsaXRcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX1NFVF9FTkFCTEVEID0gXCJzZXRFbmFibGVkXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9TVUJTVFIgPSBcInN1YnN0clwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fTk9ERV9UWVBFID0gXCJub2RlVHlwZVwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fQVBQTFkgPSBcImFwcGx5XCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9SRVBMQUNFID0gXCJyZXBsYWNlXCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX0RFQlVHX0VYQ0VQVEk0ID0gXCJlbmFibGVEZWJ1Z0V4Y2VwdGlvbnNcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0xPR19JTlRFUk5BTF9NRVNTQUdFID0gXCJsb2dJbnRlcm5hbE1lc3NhZ2VcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX1RPX0xPV0VSX0NBU0UgPSBcInRvTG93ZXJDYXNlXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9DQUxMID0gXCJjYWxsXCI7IC8vIENvdW50OiAxOFxyXG5leHBvcnQgdmFyIF9EWU5fVFlQRSA9IFwidHlwZVwiOyAvLyBDb3VudDogMTRcclxuZXhwb3J0IHZhciBfRFlOX0hBTkRMRVIgPSBcImhhbmRsZXJcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0xJU1RFTkVSUyA9IFwibGlzdGVuZXJzXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9JU19DSElMRF9FVlQgPSBcImlzQ2hpbGRFdnRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9DVFggPSBcImdldEN0eFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fU0VUX0NUWCA9IFwic2V0Q3R4XCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fQ09NUExFVEUgPSBcImNvbXBsZXRlXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9UUkFDRV9JRCA9IFwidHJhY2VJZFwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fU1BBTl9JRCA9IFwic3BhbklkXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9UUkFDRV9GTEFHUyA9IFwidHJhY2VGbGFnc1wiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fVkVSU0lPTiA9IFwidmVyc2lvblwiOyAvLyBDb3VudDogNFxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1fX0R5bmFtaWNDb25zdGFudHMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29yZSwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gTm90ZTogRE9OJ1QgRXhwb3J0IHRoZXNlIGNvbnN0IGZyb20gdGhlIHBhY2thZ2UgYXMgd2UgYXJlIHN0aWxsIHRhcmdldGluZyBFUzMgdGhpcyB3aWxsIGV4cG9ydCBhIG11dGFibGUgdmFyaWFibGVzIHRoYXQgc29tZW9uZSBjb3VsZCBjaGFuZ2UhISFcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuZXhwb3J0IHZhciBTVFJfRU1QVFkgPSBcIlwiO1xyXG5leHBvcnQgdmFyIFNUUl9DSEFOTkVMUyA9IFwiY2hhbm5lbHNcIjtcclxuZXhwb3J0IHZhciBTVFJfQ09SRSA9IFwiY29yZVwiO1xyXG5leHBvcnQgdmFyIFNUUl9DUkVBVEVfUEVSRl9NR1IgPSBcImNyZWF0ZVBlcmZNZ3JcIjtcclxuZXhwb3J0IHZhciBTVFJfRElTQUJMRUQgPSBcImRpc2FibGVkXCI7XHJcbmV4cG9ydCB2YXIgU1RSX0VYVEVOU0lPTl9DT05GSUcgPSBcImV4dGVuc2lvbkNvbmZpZ1wiO1xyXG5leHBvcnQgdmFyIFNUUl9FWFRFTlNJT05TID0gXCJleHRlbnNpb25zXCI7XHJcbmV4cG9ydCB2YXIgU1RSX1BST0NFU1NfVEVMRU1FVFJZID0gXCJwcm9jZXNzVGVsZW1ldHJ5XCI7XHJcbmV4cG9ydCB2YXIgU1RSX1BSSU9SSVRZID0gXCJwcmlvcml0eVwiO1xyXG5leHBvcnQgdmFyIFNUUl9FVkVOVFNfU0VOVCA9IFwiZXZlbnRzU2VudFwiO1xyXG5leHBvcnQgdmFyIFNUUl9FVkVOVFNfRElTQ0FSREVEID0gXCJldmVudHNEaXNjYXJkZWRcIjtcclxuZXhwb3J0IHZhciBTVFJfRVZFTlRTX1NFTkRfUkVRVUVTVCA9IFwiZXZlbnRzU2VuZFJlcXVlc3RcIjtcclxuZXhwb3J0IHZhciBTVFJfUEVSRl9FVkVOVCA9IFwicGVyZkV2ZW50XCI7XHJcbmV4cG9ydCB2YXIgU1RSX0VSUk9SX1RPX0NPTlNPTEUgPSBcImVycm9yVG9Db25zb2xlXCI7XHJcbmV4cG9ydCB2YXIgU1RSX1dBUk5fVE9fQ09OU09MRSA9IFwid2FyblRvQ29uc29sZVwiO1xyXG5leHBvcnQgdmFyIFNUUl9HRVRfUEVSRl9NR1IgPSBcImdldFBlcmZNZ3JcIjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW50ZXJuYWxDb25zdGFudHMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29yZSwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgT2JqQXNzaWduLCBPYmpDbGFzcywgT2JqRGVmaW5lUHJvcGVydHksIE9iakhhc093blByb3BlcnR5LCBPYmpQcm90bywgc3RyU2hpbUZ1bmN0aW9uLCBzdHJTaGltT2JqZWN0LCBzdHJTaGltUHJvdG90eXBlLCBzdHJTaGltVW5kZWZpbmVkLCB0aHJvd1R5cGVFcnJvciB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtc2hpbXNcIjtcclxuaW1wb3J0IHsgX0RZTl9BUFBMWSwgX0RZTl9DQUxMLCBfRFlOX0lOREVYX09GLCBfRFlOX0xFTkdUSCwgX0RZTl9OQU1FLCBfRFlOX1BVU0gsIF9EWU5fUkVQTEFDRSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgU1RSX0VNUFRZIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuLy8gUkVTVFJJQ1QgYW5kIEFWT0lEIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB5b3Ugc2hvdWxkIG5vdCBpbXBvcnQgb3RoZXIgY29udGFpbmVkIG1vZHVsZXMgb3IgZXhwb3J0IHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgZGlyZWN0bHlcclxuLy8gQWRkZWQgdG8gaGVscCB3aXRoIG1pbmZpY2F0aW9uXHJcbnZhciBzdHJUb0lTT1N0cmluZyA9IFwidG9JU09TdHJpbmdcIjtcclxudmFyIGNTdHJFbmRzV2l0aCA9IFwiZW5kc1dpdGhcIjtcclxudmFyIGNTdHJTdGFydHNXaXRoID0gXCJzdGFydHNXaXRoXCI7XHJcbnZhciBzdHJJbmRleE9mID0gXCJpbmRleE9mXCI7XHJcbnZhciBzdHJNYXAgPSBcIm1hcFwiO1xyXG52YXIgc3RyUmVkdWNlID0gXCJyZWR1Y2VcIjtcclxudmFyIGNTdHJUcmltID0gXCJ0cmltXCI7XHJcbnZhciBzdHJUb1N0cmluZyA9IFwidG9TdHJpbmdcIjtcclxuLyoqXHJcbiAqIENvbnN0YW50IHN0cmluZyBkZWZpbmVkIHRvIHN1cHBvcnQgbWluaW1pemF0aW9uXHJcbiAqIEBpZ25vcmVcclxuICovXHJcbnZhciBzdHJfX1Byb3RvID0gXCJfX3Byb3RvX19cIjtcclxuLyoqXHJcbiAgKiBDb25zdGFudCBzdHJpbmcgZGVmaW5lZCB0byBzdXBwb3J0IG1pbmltaXphdGlvblxyXG4gICogQGlnbm9yZVxyXG4gICovXHJcbnZhciBzdHJDb25zdHJ1Y3RvciA9IFwiY29uc3RydWN0b3JcIjtcclxudmFyIF9vYmpEZWZpbmVQcm9wZXJ0eSA9IE9iakRlZmluZVByb3BlcnR5O1xyXG52YXIgX29iakZyZWV6ZSA9IE9iakNsYXNzLmZyZWV6ZTtcclxudmFyIF9vYmpTZWFsID0gT2JqQ2xhc3Muc2VhbDtcclxudmFyIF9vYmpLZXlzID0gT2JqQ2xhc3Mua2V5cztcclxudmFyIFN0cmluZ1Byb3RvID0gU3RyaW5nW3N0clNoaW1Qcm90b3R5cGVdO1xyXG52YXIgX3N0clRyaW0gPSBTdHJpbmdQcm90b1tjU3RyVHJpbV07XHJcbnZhciBfc3RyRW5kc1dpdGggPSBTdHJpbmdQcm90b1tjU3RyRW5kc1dpdGhdO1xyXG52YXIgX3N0clN0YXJ0c1dpdGggPSBTdHJpbmdQcm90b1tjU3RyU3RhcnRzV2l0aF07XHJcbnZhciBEYXRlUHJvdG8gPSBEYXRlW3N0clNoaW1Qcm90b3R5cGVdO1xyXG52YXIgX2RhdGFUb0lTT1N0cmluZyA9IERhdGVQcm90b1tzdHJUb0lTT1N0cmluZ107XHJcbnZhciBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XHJcbnZhciBfb2JqVG9TdHJpbmcgPSBPYmpQcm90b1tzdHJUb1N0cmluZ107XHJcbnZhciBfZm5Ub1N0cmluZyA9IE9iakhhc093blByb3BlcnR5W3N0clRvU3RyaW5nXTtcclxuLy8gQ2FjaGUgd2hhdCB0aGlzIGJyb3dzZXIgcmVwb3J0cyBhcyB0aGUgb2JqZWN0IGZ1bmN0aW9uIGNvbnN0cnVjdG9yIChhcyBhIHN0cmluZylcclxudmFyIF9vYmpGdW5jdGlvblN0cmluZyA9IF9mblRvU3RyaW5nW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKE9iakNsYXNzKTtcclxudmFyIHJDYW1lbENhc2UgPSAvLShbYS16XSkvZztcclxudmFyIHJOb3JtYWxpemVJbnZhbGlkID0gLyhbXlxcd1xcZF8kXSkvZztcclxudmFyIHJMZWFkaW5nTnVtZXJpYyA9IC9eKFxcZCtbXFx3XFxkXyRdKS87XHJcbi8qKlxyXG4gKiBQcmUtbG9va3VwIHRvIGNoZWNrIGlmIHdlIGFyZSBydW5uaW5nIG9uIGEgbW9kZXJuIGJyb3dzZXIgKGkuZS4gbm90IElFOClcclxuICogQGlnbm9yZVxyXG4gKi9cclxudmFyIF9vYmpHZXRQcm90b3R5cGVPZiA9IE9iamVjdFtcImdldFByb3RvdHlwZU9mXCJdO1xyXG4vKipcclxuICAqIEhlbHBlciB1c2VkIHRvIGdldCB0aGUgcHJvdG90eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0IGFzIGdldFByb3RvdHlwZU9mIGlzIG5vdCBhdmFpbGFibGUgaW4gYW4gRVMzIGVudmlyb25tZW50LlxyXG4gICogQGlnbm9yZVxyXG4gICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfZ2V0T2JqUHJvdG8odGFyZ2V0KSB7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgLy8gVGhpcyBtZXRob2QgZG9lc24ndCBleGlzdGluZyBpbiBvbGRlciBicm93c2VycyAoZS5nLiBJRTgpXHJcbiAgICAgICAgaWYgKF9vYmpHZXRQcm90b3R5cGVPZikge1xyXG4gICAgICAgICAgICByZXR1cm4gX29iakdldFByb3RvdHlwZU9mKHRhcmdldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRhcmdldFtDb25zdHJ1Y3Rvcl0gTWF5IGJyZWFrIGlmIHRoZSBjb25zdHJ1Y3RvciBoYXMgYmVlbiBjaGFuZ2VkIG9yIHJlbW92ZWRcclxuICAgICAgICB2YXIgbmV3UHJvdG8gPSB0YXJnZXRbc3RyX19Qcm90b10gfHwgdGFyZ2V0W3N0clNoaW1Qcm90b3R5cGVdIHx8IHRhcmdldFtzdHJDb25zdHJ1Y3Rvcl07XHJcbiAgICAgICAgaWYgKG5ld1Byb3RvKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdQcm90bztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gb2JqVG9TdHJpbmcob2JqKSB7XHJcbiAgICByZXR1cm4gX29ialRvU3RyaW5nW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKG9iaik7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZW9mKHZhbHVlLCB0aGVUeXBlKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSB0aGVUeXBlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlID09PSBzdHJTaGltVW5kZWZpbmVkO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc05vdFVuZGVmaW5lZCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICFpc1VuZGVmaW5lZCh2YWx1ZSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gKHZhbHVlID09PSBudWxsIHx8IGlzVW5kZWZpbmVkKHZhbHVlKSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XHJcbiAgICByZXR1cm4gISEob2JqICYmIE9iakhhc093blByb3BlcnR5W19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKG9iaiwgcHJvcCkpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xyXG4gICAgLy8gQ2hhbmdpbmcgdG8gaW5saW5lIGZvciBwZXJmb3JtYW5jZVxyXG4gICAgcmV0dXJuICEhKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gc3RyU2hpbU9iamVjdCk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcclxuICAgIC8vIENoYW5naW5nIHRvIGlubGluZSBmb3IgcGVyZm9ybWFuY2VcclxuICAgIHJldHVybiAhISh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IHN0clNoaW1GdW5jdGlvbik7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZUxpa2UodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSAmJiBpc0Z1bmN0aW9uKHZhbHVlLnRoZW4pO1xyXG59XHJcbi8qKlxyXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgc3RyaW5nIG5hbWUgY29uZm9ybXMgdG8gdGhlIEpTIElkZW50aWZpZXJOYW1lIHNwZWNpZmljYXRpb24gYW5kIGlmIG5vdFxyXG4gKiBub3JtYWxpemVzIHRoZSBuYW1lIHNvIHRoYXQgaXQgd291bGQuIFRoaXMgbWV0aG9kIGRvZXMgbm90IGlkZW50aWZ5IG9yIGNoYW5nZSBhbnkga2V5d29yZHNcclxuICogbWVhbmluZyB0aGF0IGlmIHlvdSBwYXNzIGluIGEga25vd24ga2V5d29yZCB0aGUgc2FtZSB2YWx1ZSB3aWxsIGJlIHJldHVybmVkLlxyXG4gKiBUaGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uXHJcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIHRvIHZhbGlkYXRlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSnNOYW1lKG5hbWUpIHtcclxuICAgIHZhciB2YWx1ZSA9IG5hbWU7XHJcbiAgICBpZiAodmFsdWUgJiYgaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgLy8gQ2FtZWxDYXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIFwiLVwiIGFuZCByZW1vdmUgdGhlIGRhc2hcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlW19EWU5fUkVQTEFDRSAvKiBAbWluOiUyZXJlcGxhY2UgKi9dKHJDYW1lbENhc2UsIGZ1bmN0aW9uIChfYWxsLCBsZXR0ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWVbX0RZTl9SRVBMQUNFIC8qIEBtaW46JTJlcmVwbGFjZSAqL10ock5vcm1hbGl6ZUludmFsaWQsIFwiX1wiKTtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlW19EWU5fUkVQTEFDRSAvKiBAbWluOiUyZXJlcGxhY2UgKi9dKHJMZWFkaW5nTnVtZXJpYywgZnVuY3Rpb24gKF9hbGwsIG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIl9cIiArIG1hdGNoO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciB0aGUgZXF1aXZhbGVudCBvZiBhckZvckVhY2gob2JqS2V5cyh0YXJnZXQpLCBjYWxsYmFja0ZuKSwgdGhpcyBpcyBhXHJcbiAqIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgYXJyYXkgZm9yIGxhcmdlIG9iamVjdHNcclxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdCB0byBmaW5kIGFuZCBwcm9jZXNzIHRoZSBrZXlzXHJcbiAqIEBwYXJhbSBjYWxsYmFja2ZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggdGhlIGRldGFpbHNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvYmpGb3JFYWNoS2V5KHRhcmdldCwgY2FsbGJhY2tmbikge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGZvciAodmFyIHByb3AgaW4gdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIGlmIChPYmpIYXNPd25Qcm9wZXJ0eVtfRFlOX0NBTEwgLyogQG1pbjolMmVjYWxsICovXSh0YXJnZXQsIHByb3ApKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFja2ZuW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKHRhcmdldCwgcHJvcCwgdGFyZ2V0W3Byb3BdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4vKipcclxuICogVGhlIHN0ckVuZHNXaXRoKCkgbWV0aG9kIGRldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nLCByZXR1cm5pbmcgdHJ1ZSBvciBmYWxzZSBhcyBhcHByb3ByaWF0ZS5cclxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIHdoZXRoZXIgaXQgZW5kcyB3aXRoIHRoZSBzZWFyY2ggdmFsdWUuXHJcbiAqIEBwYXJhbSBzZWFyY2ggLSBUaGUgY2hhcmFjdGVycyB0byBiZSBzZWFyY2hlZCBmb3IgYXQgdGhlIGVuZCBvZiB0aGUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNlYXJjaCB2YWx1ZSBpcyBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIG90aGVyd2lzZSBmYWxzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJFbmRzV2l0aCh2YWx1ZSwgc2VhcmNoKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBpZiAodmFsdWUgJiYgc2VhcmNoICYmICEocmVzdWx0ID0gdmFsdWUgPT09IHNlYXJjaCkpIHtcclxuICAgICAgICAvLyBGb3IgUGVyZm9ybWFuY2UgdHJ5IGFuZCB1c2UgdGhlIG5hdGl2ZSBpbnN0YW5jZSwgdXNpbmcgc3RyaW5nIGxvb2t1cCBvZiB0aGUgZnVuY3Rpb24gdG8gZWFzaWx5IHBhc3MgdGhlIEVTMyBidWlsZCBjaGVja3MgYW5kIG1pbmlmaWNhdGlvblxyXG4gICAgICAgIHJlc3VsdCA9IF9zdHJFbmRzV2l0aCA/IHZhbHVlW2NTdHJFbmRzV2l0aF0oc2VhcmNoKSA6IF9zdHJFbmRzV2l0aFBvbHkodmFsdWUsIHNlYXJjaCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBUaGUgX3N0ckVuZHNXaXRoKCkgbWV0aG9kIGRldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nLCByZXR1cm5pbmcgdHJ1ZSBvciBmYWxzZSBhcyBhcHByb3ByaWF0ZS5cclxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIHdoZXRoZXIgaXQgZW5kcyB3aXRoIHRoZSBzZWFyY2ggdmFsdWUuXHJcbiAqIEBwYXJhbSBzZWFyY2ggLSBUaGUgY2hhcmFjdGVycyB0byBiZSBzZWFyY2hlZCBmb3IgYXQgdGhlIGVuZCBvZiB0aGUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNlYXJjaCB2YWx1ZSBpcyBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIG90aGVyd2lzZSBmYWxzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfc3RyRW5kc1dpdGhQb2x5KHZhbHVlLCBzZWFyY2gpIHtcclxuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgIHZhciBzZWFyY2hMZW4gPSBzZWFyY2ggPyBzZWFyY2hbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dIDogMDtcclxuICAgIHZhciB2YWxMZW4gPSB2YWx1ZSA/IHZhbHVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA6IDA7XHJcbiAgICBpZiAoc2VhcmNoTGVuICYmIHZhbExlbiAmJiB2YWxMZW4gPj0gc2VhcmNoTGVuICYmICEocmVzdWx0ID0gdmFsdWUgPT09IHNlYXJjaCkpIHtcclxuICAgICAgICB2YXIgcG9zID0gdmFsTGVuIC0gMTtcclxuICAgICAgICBmb3IgKHZhciBscCA9IHNlYXJjaExlbiAtIDE7IGxwID49IDA7IGxwLS0pIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlW3Bvc10gIT0gc2VhcmNoW2xwXSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBvcy0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICogVGhlIHN0clN0YXJ0c1dpdGgoKSBtZXRob2QgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBjaGFyYWN0ZXJzIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5nLCByZXR1cm5pbmcgdHJ1ZSBvciBmYWxzZSBhcyBhcHByb3ByaWF0ZS5cclxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIHdoZXRoZXIgaXQgZW5kcyB3aXRoIHRoZSBzZWFyY2ggdmFsdWUuXHJcbiAqIEBwYXJhbSBjaGVja1ZhbHVlIC0gVGhlIGNoYXJhY3RlcnMgdG8gYmUgc2VhcmNoZWQgZm9yIGF0IHRoZSBzdGFydCBvZiB0aGUgdmFsdWUuXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNlYXJjaCB2YWx1ZSBpcyBmb3VuZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZywgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0clN0YXJ0c1dpdGgodmFsdWUsIGNoZWNrVmFsdWUpIHtcclxuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgIGlmICh2YWx1ZSAmJiBjaGVja1ZhbHVlICYmICEocmVzdWx0ID0gdmFsdWUgPT09IGNoZWNrVmFsdWUpKSB7XHJcbiAgICAgICAgLy8gRm9yIFBlcmZvcm1hbmNlIHRyeSBhbmQgdXNlIHRoZSBuYXRpdmUgaW5zdGFuY2UsIHVzaW5nIHN0cmluZyBsb29rdXAgb2YgdGhlIGZ1bmN0aW9uIHRvIGVhc2lseSBwYXNzIHRoZSBFUzMgYnVpbGQgY2hlY2tzIGFuZCBtaW5pZmljYXRpb25cclxuICAgICAgICByZXN1bHQgPSBfc3RyU3RhcnRzV2l0aCA/IHZhbHVlW2NTdHJTdGFydHNXaXRoXShjaGVja1ZhbHVlKSA6IF9zdHJTdGFydHNXaXRoUG9seSh2YWx1ZSwgY2hlY2tWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBUaGUgc3RyU3RhcnRzV2l0aCgpIG1ldGhvZCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmcsIHJldHVybmluZyB0cnVlIG9yIGZhbHNlIGFzIGFwcHJvcHJpYXRlLlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2sgd2hldGhlciBpdCBlbmRzIHdpdGggdGhlIHNlYXJjaCB2YWx1ZS5cclxuICogQHBhcmFtIGNoZWNrVmFsdWUgLSBUaGUgY2hhcmFjdGVycyB0byBiZSBzZWFyY2hlZCBmb3IgYXQgdGhlIHN0YXJ0IG9mIHRoZSB2YWx1ZS5cclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHZhbHVlIGlzIGZvdW5kIGF0IHRoZSBzdGFydCBvZiB0aGUgc3RyaW5nLCBvdGhlcndpc2UgZmFsc2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX3N0clN0YXJ0c1dpdGhQb2x5KHZhbHVlLCBjaGVja1ZhbHVlKSB7XHJcbiAgICAvLyBVc2luZyBoZWxwZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBiZWNhdXNlIHN0cmluZyBzdGFydHNXaXRoKCkgaXMgbm90IGF2YWlsYWJsZSBvbiBJRVxyXG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgdmFyIGNoa0xlbiA9IGNoZWNrVmFsdWUgPyBjaGVja1ZhbHVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA6IDA7XHJcbiAgICBpZiAodmFsdWUgJiYgY2hrTGVuICYmIHZhbHVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+PSBjaGtMZW4gJiYgIShyZXN1bHQgPSB2YWx1ZSA9PT0gY2hlY2tWYWx1ZSkpIHtcclxuICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgY2hrTGVuOyBscCsrKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtscF0gIT09IGNoZWNrVmFsdWVbbHBdKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIEEgc2ltcGxlIHdyYXBwZXIgKGZvciBtaW5pZmljYXRpb24gc3VwcG9ydCkgdG8gY2hlY2sgaWYgdGhlIHZhbHVlIGNvbnRhaW5zIHRoZSBzZWFyY2ggc3RyaW5nLlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgc3RyaW5nIHZhbHVlIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBzZWFyY2ggdmFsdWVcclxuICogQHBhcmFtIHNlYXJjaCAtIFRoZSB2YWx1ZSBzZWFyY2ggd2l0aGluIHRoZSB2YWx1ZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0ckNvbnRhaW5zKHZhbHVlLCBzZWFyY2gpIHtcclxuICAgIGlmICh2YWx1ZSAmJiBzZWFyY2gpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWVbX0RZTl9JTkRFWF9PRiAvKiBAbWluOiUyZWluZGV4T2YgKi9dKHNlYXJjaCkgIT09IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBEYXRlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKG9iaikge1xyXG4gICAgcmV0dXJuICEhKG9iaiAmJiBfb2JqVG9TdHJpbmdbX0RZTl9DQUxMIC8qIEBtaW46JTJlY2FsbCAqL10ob2JqKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBBcnJheSB3aXRoIG9wdGlvbmFsIGdlbmVyaWMgVCwgdGhlIGdlbmVyaWMgdHlwZSBpcyBub3QgdmFsaWRhdGVkXHJcbiAqIGFuZCBleGlzdHMgdG8gaGVscCB3aXRoIFR5cGVTY3JpcHQgdmFsaWRhdGlvbiBvbmx5LlxyXG4gKi9cclxuZXhwb3J0IHZhciBpc0FycmF5ID0gX2lzQXJyYXkgfHwgX2lzQXJyYXlQb2x5O1xyXG5mdW5jdGlvbiBfaXNBcnJheVBvbHkob2JqKSB7XHJcbiAgICByZXR1cm4gISEob2JqICYmIF9vYmpUb1N0cmluZ1tfRFlOX0NBTEwgLyogQG1pbjolMmVjYWxsICovXShvYmopID09PSBcIltvYmplY3QgQXJyYXldXCIpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBFcnJvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7XHJcbiAgICByZXR1cm4gISEob2JqICYmIF9vYmpUb1N0cmluZ1tfRFlOX0NBTEwgLyogQG1pbjolMmVjYWxsICovXShvYmopID09PSBcIltvYmplY3QgRXJyb3JdXCIpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgdGhlIHR5cGUgb2YgdmFsdWUgaXMgYSBzdHJpbmcuXHJcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZSAtIFZhbHVlIHRvIGJlIGNoZWNrZWQuXHJcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcclxuICAgIC8vIENoYW5naW5nIHRvIGlubGluZSBmb3IgcGVyZm9ybWFuY2VcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyBpZiB0aGUgdHlwZSBvZiB2YWx1ZSBpcyBhIG51bWJlci5cclxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gYmUgY2hlY2tlZC5cclxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXIsIGZhbHNlIG90aGVyd2lzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xyXG4gICAgLy8gQ2hhbmdpbmcgdG8gaW5saW5lIGZvciBwZXJmb3JtYW5jZVxyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIHRoZSB0eXBlIG9mIHZhbHVlIGlzIGEgYm9vbGVhbi5cclxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gYmUgY2hlY2tlZC5cclxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLCBmYWxzZSBvdGhlcndpc2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XHJcbiAgICAvLyBDaGFuZ2luZyB0byBpbmxpbmUgZm9yIHBlcmZvcm1hbmNlXHJcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIjtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIHRoZSB0eXBlIG9mIHZhbHVlIGlzIGEgU3ltYm9sLlxyXG4gKiBUaGlzIG9ubHkgcmV0dXJucyBhIGJvb2xlYW4gYXMgcmV0dXJuaW5nIHZhbHVlIGlzIFN5bWJvbCB3aWxsIGNhdXNlIGlzc3VlcyBmb3Igb2xkZXIgVHlwZVNjcmlwdCBjb25zdW1lcnNcclxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVmFsdWUgdG8gYmUgY2hlY2tlZC5cclxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBTeW1ib2wsIGZhbHNlIG90aGVyd2lzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzeW1ib2xcIjtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBpcyBhIG5vcm1hbCBwbGFpbiBvYmplY3QgKG5vdCBhIG51bGwgb3IgZGF0YSlcclxuICogQHBhcmFtIHZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xyXG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIC8vIElubGluaW5nIF9vYmpHZXRQcm90b3R5cGVPZiBmb3IgcGVyZm9ybWFuY2UgdG8gYXZvaWQgYW4gYWRkaXRpb25hbCBmdW5jdGlvbiBjYWxsXHJcbiAgICAgICAgdmFyIHByb3RvID0gX29iakdldFByb3RvdHlwZU9mID8gX29iakdldFByb3RvdHlwZU9mKHZhbHVlKSA6IF9nZXRPYmpQcm90byh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKCFwcm90bykge1xyXG4gICAgICAgICAgICAvLyBObyBwcm90b3R5cGUgZm91bmQgc28gdGhpcyBpcyBhIHBsYWluIE9iamVjdCBlZy4gJ09iamVjdC5jcmVhdGUobnVsbCknXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBPYmplY3RzIHRoYXQgaGF2ZSBhIHByb3RvdHlwZSBhcmUgcGxhaW4gb25seSBpZiB0aGV5IHdlcmUgY3JlYXRlZCB1c2luZyB0aGUgT2JqZWN0IGdsb2JhbCAobmF0aXZlKSBmdW5jdGlvblxyXG4gICAgICAgICAgICBpZiAocHJvdG9bc3RyQ29uc3RydWN0b3JdICYmIE9iakhhc093blByb3BlcnR5W19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKHByb3RvLCBzdHJDb25zdHJ1Y3RvcikpIHtcclxuICAgICAgICAgICAgICAgIHByb3RvID0gcHJvdG9bc3RyQ29uc3RydWN0b3JdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHR5cGVvZiBwcm90byA9PT0gc3RyU2hpbUZ1bmN0aW9uICYmIF9mblRvU3RyaW5nW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKHByb3RvKSA9PT0gX29iakZ1bmN0aW9uU3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIENvbnZlcnQgYSBkYXRlIHRvIEkuUy5PLiBmb3JtYXQgaW4gSUU4XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9JU09TdHJpbmcoZGF0ZSkge1xyXG4gICAgaWYgKGRhdGUpIHtcclxuICAgICAgICAvLyBGb3IgUGVyZm9ybWFuY2UgdHJ5IGFuZCB1c2UgdGhlIG5hdGl2ZSBpbnN0YW5jZSwgdXNpbmcgc3RyaW5nIGxvb2t1cCBvZiB0aGUgZnVuY3Rpb24gdG8gZWFzaWx5IHBhc3MgdGhlIEVTMyBidWlsZCBjaGVja3MgYW5kIG1pbmlmaWNhdGlvblxyXG4gICAgICAgIHJldHVybiBfZGF0YVRvSVNPU3RyaW5nID8gZGF0ZVtzdHJUb0lTT1N0cmluZ10oKSA6IF90b0lTT1N0cmluZ1BvbHkoZGF0ZSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENvbnZlcnQgYSBkYXRlIHRvIEkuUy5PLiBmb3JtYXQgaW4gSUU4XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX3RvSVNPU3RyaW5nUG9seShkYXRlKSB7XHJcbiAgICBpZiAoZGF0ZSAmJiBkYXRlLmdldFVUQ0Z1bGxZZWFyKSB7XHJcbiAgICAgICAgdmFyIHBhZCA9IGZ1bmN0aW9uIChudW0pIHtcclxuICAgICAgICAgICAgdmFyIHIgPSBTdHJpbmcobnVtKTtcclxuICAgICAgICAgICAgaWYgKHJbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByID0gXCIwXCIgKyByO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDRnVsbFllYXIoKVxyXG4gICAgICAgICAgICArIFwiLVwiICsgcGFkKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpXHJcbiAgICAgICAgICAgICsgXCItXCIgKyBwYWQoZGF0ZS5nZXRVVENEYXRlKCkpXHJcbiAgICAgICAgICAgICsgXCJUXCIgKyBwYWQoZGF0ZS5nZXRVVENIb3VycygpKVxyXG4gICAgICAgICAgICArIFwiOlwiICsgcGFkKGRhdGUuZ2V0VVRDTWludXRlcygpKVxyXG4gICAgICAgICAgICArIFwiOlwiICsgcGFkKGRhdGUuZ2V0VVRDU2Vjb25kcygpKVxyXG4gICAgICAgICAgICArIFwiLlwiICsgU3RyaW5nKChkYXRlLmdldFVUQ01pbGxpc2Vjb25kcygpIC8gMTAwMCkudG9GaXhlZCgzKSkuc2xpY2UoMiwgNSlcclxuICAgICAgICAgICAgKyBcIlpcIjtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogUGVyZm9ybXMgdGhlIHNwZWNpZmllZCBhY3Rpb24gZm9yIGVhY2ggZWxlbWVudCBpbiBhbiBhcnJheS4gVGhpcyBoZWxwZXIgZXhpc3RzIHRvIGF2b2lkIGFkZGluZyBhIHBvbHlmaWwgZm9yIG9sZGVyIGJyb3dzZXJzXHJcbiAqIHRoYXQgZG8gbm90IGRlZmluZSBBcnJheS5wcm90b3R5cGUueHh4eCAoZWcuIEVTMyBvbmx5LCBJRTgpIGp1c3QgaW4gY2FzZSBhbnkgcGFnZSBjaGVja3MgZm9yIHByZXNlbmNlL2Fic2VuY2Ugb2YgdGhlIHByb3RvdHlwZVxyXG4gKiBpbXBsZW1lbnRhdGlvbi4gTm90ZTogRm9yIGNvbnNpc3RlbmN5IHRoaXMgd2lsbCBub3QgdXNlIHRoZSBBcnJheS5wcm90b3R5cGUueHh4eCBpbXBsZW1lbnRhdGlvbiBpZiBpdCBleGlzdHMgYXMgdGhpcyB3b3VsZFxyXG4gKiBjYXVzZSBhIHRlc3RpbmcgcmVxdWlyZW1lbnQgdG8gdGVzdCB3aXRoIGFuZCB3aXRob3V0IHRoZSBpbXBsZW1lbnRhdGlvbnNcclxuICogQHBhcmFtIGNhbGxiYWNrZm4gIEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHVwIHRvIHRocmVlIGFyZ3VtZW50cy4gZm9yRWFjaCBjYWxscyB0aGUgY2FsbGJhY2tmbiBmdW5jdGlvbiBvbmUgdGltZSBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBhcnJheS4gSXQgY2FuIHJldHVybiAtMSB0byBicmVhayBvdXQgb2YgdGhlIGxvb3BcclxuICogQHBhcmFtIHRoaXNBcmcgIFtPcHRpb25hbF0gQW4gb2JqZWN0IHRvIHdoaWNoIHRoZSB0aGlzIGtleXdvcmQgY2FuIHJlZmVyIGluIHRoZSBjYWxsYmFja2ZuIGZ1bmN0aW9uLiBJZiB0aGlzQXJnIGlzIG9taXR0ZWQsIHVuZGVmaW5lZCBpcyB1c2VkIGFzIHRoZSB0aGlzIHZhbHVlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFyckZvckVhY2goYXJyLCBjYWxsYmFja2ZuLCB0aGlzQXJnKSB7XHJcbiAgICB2YXIgbGVuID0gYXJyW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgbGVuOyBpZHgrKykge1xyXG4gICAgICAgICAgICBpZiAoaWR4IGluIGFycikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrZm5bX0RZTl9DQUxMIC8qIEBtaW46JTJlY2FsbCAqL10odGhpc0FyZyB8fCBhcnIsIGFycltpZHhdLCBpZHgsIGFycikgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aXRoIHNvbWUgbmF0aXZlIGJyb3dzZXIgb2JqZWN0cywgYnV0IHNob3VsZCBub3QgaGFwcGVuIGZvciB0aGUgdHlwZSB3ZSBhcmUgY2hlY2tpbmcgZm9yXHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gYW4gYXJyYXkuIFRoaXMgaGVscGVyIGV4aXN0cyB0byBhdm9pZCBhZGRpbmcgYSBwb2x5ZmlsIGZvciBvbGRlciBicm93c2Vyc1xyXG4gKiB0aGF0IGRvIG5vdCBkZWZpbmUgQXJyYXkucHJvdG90eXBlLnh4eHggKGVnLiBFUzMgb25seSwgSUU4KSBqdXN0IGluIGNhc2UgYW55IHBhZ2UgY2hlY2tzIGZvciBwcmVzZW5jZS9hYnNlbmNlIG9mIHRoZSBwcm90b3R5cGVcclxuICogaW1wbGVtZW50YXRpb24uIE5vdGU6IEZvciBjb25zaXN0ZW5jeSB0aGlzIHdpbGwgbm90IHVzZSB0aGUgQXJyYXkucHJvdG90eXBlLnh4eHggaW1wbGVtZW50YXRpb24gaWYgaXQgZXhpc3RzIGFzIHRoaXMgd291bGRcclxuICogY2F1c2UgYSB0ZXN0aW5nIHJlcXVpcmVtZW50IHRvIHRlc3Qgd2l0aCBhbmQgd2l0aG91dCB0aGUgaW1wbGVtZW50YXRpb25zXHJcbiAqIEBwYXJhbSBzZWFyY2hFbGVtZW50IFRoZSB2YWx1ZSB0byBsb2NhdGUgaW4gdGhlIGFycmF5LlxyXG4gKiBAcGFyYW0gZnJvbUluZGV4IFRoZSBhcnJheSBpbmRleCBhdCB3aGljaCB0byBiZWdpbiB0aGUgc2VhcmNoLiBJZiBmcm9tSW5kZXggaXMgb21pdHRlZCwgdGhlIHNlYXJjaCBzdGFydHMgYXQgaW5kZXggMC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcnJJbmRleE9mKGFyciwgc2VhcmNoRWxlbWVudCwgZnJvbUluZGV4KSB7XHJcbiAgICBpZiAoYXJyKSB7XHJcbiAgICAgICAgLy8gRm9yIFBlcmZvcm1hbmNlIHRyeSBhbmQgdXNlIHRoZSBuYXRpdmUgaW5zdGFuY2UsIHVzaW5nIHN0cmluZyBsb29rdXAgb2YgdGhlIGZ1bmN0aW9uIHRvIGVhc2lseSBwYXNzIHRoZSBFUzMgYnVpbGQgY2hlY2tzIGFuZCBtaW5pZmljYXRpb25cclxuICAgICAgICBpZiAoYXJyW3N0ckluZGV4T2ZdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnJbc3RySW5kZXhPZl0oc2VhcmNoRWxlbWVudCwgZnJvbUluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGxlbiA9IGFycltfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgdmFyIGZyb20gPSBmcm9tSW5kZXggfHwgMDtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBscCA9IE1hdGgubWF4KGZyb20gPj0gMCA/IGZyb20gOiBsZW4gLSBNYXRoLmFicyhmcm9tKSwgMCk7IGxwIDwgbGVuOyBscCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobHAgaW4gYXJyICYmIGFycltscF0gPT09IHNlYXJjaEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbHA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdpdGggc29tZSBuYXRpdmUgYnJvd3NlciBvYmplY3RzLCBidXQgc2hvdWxkIG5vdCBoYXBwZW4gZm9yIHRoZSB0eXBlIHdlIGFyZSBjaGVja2luZyBmb3JcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gLTE7XHJcbn1cclxuLyoqXHJcbiAqIENhbGxzIGEgZGVmaW5lZCBjYWxsYmFjayBmdW5jdGlvbiBvbiBlYWNoIGVsZW1lbnQgb2YgYW4gYXJyYXksIGFuZCByZXR1cm5zIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHJlc3VsdHMuIFRoaXMgaGVscGVyIGV4aXN0c1xyXG4gKiB0byBhdm9pZCBhZGRpbmcgYSBwb2x5ZmlsIGZvciBvbGRlciBicm93c2VycyB0aGF0IGRvIG5vdCBkZWZpbmUgQXJyYXkucHJvdG90eXBlLnh4eHggKGVnLiBFUzMgb25seSwgSUU4KSBqdXN0IGluIGNhc2UgYW55IHBhZ2VcclxuICogY2hlY2tzIGZvciBwcmVzZW5jZS9hYnNlbmNlIG9mIHRoZSBwcm90b3R5cGUgaW1wbGVtZW50YXRpb24uIE5vdGU6IEZvciBjb25zaXN0ZW5jeSB0aGlzIHdpbGwgbm90IHVzZSB0aGUgQXJyYXkucHJvdG90eXBlLnh4eHhcclxuICogaW1wbGVtZW50YXRpb24gaWYgaXQgZXhpc3RzIGFzIHRoaXMgd291bGQgY2F1c2UgYSB0ZXN0aW5nIHJlcXVpcmVtZW50IHRvIHRlc3Qgd2l0aCBhbmQgd2l0aG91dCB0aGUgaW1wbGVtZW50YXRpb25zXHJcbiAqIEBwYXJhbSBjYWxsYmFja2ZuIEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHVwIHRvIHRocmVlIGFyZ3VtZW50cy4gVGhlIG1hcCBtZXRob2QgY2FsbHMgdGhlIGNhbGxiYWNrZm4gZnVuY3Rpb24gb25lIHRpbWUgZm9yIGVhY2ggZWxlbWVudCBpbiB0aGUgYXJyYXkuXHJcbiAqIEBwYXJhbSB0aGlzQXJnIEFuIG9iamVjdCB0byB3aGljaCB0aGUgdGhpcyBrZXl3b3JkIGNhbiByZWZlciBpbiB0aGUgY2FsbGJhY2tmbiBmdW5jdGlvbi4gSWYgdGhpc0FyZyBpcyBvbWl0dGVkLCB1bmRlZmluZWQgaXMgdXNlZCBhcyB0aGUgdGhpcyB2YWx1ZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcnJNYXAoYXJyLCBjYWxsYmFja2ZuLCB0aGlzQXJnKSB7XHJcbiAgICB2YXIgcmVzdWx0cztcclxuICAgIGlmIChhcnIpIHtcclxuICAgICAgICAvLyBGb3IgUGVyZm9ybWFuY2UgdHJ5IGFuZCB1c2UgdGhlIG5hdGl2ZSBpbnN0YW5jZSwgdXNpbmcgc3RyaW5nIGxvb2t1cCBvZiB0aGUgZnVuY3Rpb24gdG8gZWFzaWx5IHBhc3MgdGhlIEVTMyBidWlsZCBjaGVja3MgYW5kIG1pbmlmaWNhdGlvblxyXG4gICAgICAgIGlmIChhcnJbc3RyTWFwXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJyW3N0ck1hcF0oY2FsbGJhY2tmbiwgdGhpc0FyZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBsZW4gPSBhcnJbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXNBcmcgfHwgYXJyO1xyXG4gICAgICAgIHJlc3VsdHMgPSBuZXcgQXJyYXkobGVuKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgbGVuOyBscCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobHAgaW4gYXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1tscF0gPSBjYWxsYmFja2ZuW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKF90aGlzLCBhcnJbbHBdLCBhcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aXRoIHNvbWUgbmF0aXZlIGJyb3dzZXIgb2JqZWN0cywgYnV0IHNob3VsZCBub3QgaGFwcGVuIGZvciB0aGUgdHlwZSB3ZSBhcmUgY2hlY2tpbmcgZm9yXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbn1cclxuLyoqXHJcbiAqIENhbGxzIHRoZSBzcGVjaWZpZWQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGFsbCB0aGUgZWxlbWVudHMgaW4gYW4gYXJyYXkuIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIHRoZSBhY2N1bXVsYXRlZCByZXN1bHQsIGFuZCBpc1xyXG4gKiBwcm92aWRlZCBhcyBhbiBhcmd1bWVudCBpbiB0aGUgbmV4dCBjYWxsIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhpcyBoZWxwZXIgZXhpc3RzIHRvIGF2b2lkIGFkZGluZyBhIHBvbHlmaWwgZm9yIG9sZGVyIGJyb3dzZXJzIHRoYXQgZG8gbm90IGRlZmluZVxyXG4gKiBBcnJheS5wcm90b3R5cGUueHh4eCAoZWcuIEVTMyBvbmx5LCBJRTgpIGp1c3QgaW4gY2FzZSBhbnkgcGFnZSBjaGVja3MgZm9yIHByZXNlbmNlL2Fic2VuY2Ugb2YgdGhlIHByb3RvdHlwZSBpbXBsZW1lbnRhdGlvbi4gTm90ZTogRm9yIGNvbnNpc3RlbmN5XHJcbiAqIHRoaXMgd2lsbCBub3QgdXNlIHRoZSBBcnJheS5wcm90b3R5cGUueHh4eCBpbXBsZW1lbnRhdGlvbiBpZiBpdCBleGlzdHMgYXMgdGhpcyB3b3VsZCBjYXVzZSBhIHRlc3RpbmcgcmVxdWlyZW1lbnQgdG8gdGVzdCB3aXRoIGFuZCB3aXRob3V0IHRoZSBpbXBsZW1lbnRhdGlvbnNcclxuICogQHBhcmFtIGNhbGxiYWNrZm4gQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdXAgdG8gZm91ciBhcmd1bWVudHMuIFRoZSByZWR1Y2UgbWV0aG9kIGNhbGxzIHRoZSBjYWxsYmFja2ZuIGZ1bmN0aW9uIG9uZSB0aW1lIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIGFycmF5LlxyXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIElmIGluaXRpYWxWYWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGlzIHVzZWQgYXMgdGhlIGluaXRpYWwgdmFsdWUgdG8gc3RhcnQgdGhlIGFjY3VtdWxhdGlvbi4gVGhlIGZpcnN0IGNhbGwgdG8gdGhlIGNhbGxiYWNrZm4gZnVuY3Rpb24gcHJvdmlkZXMgdGhpcyB2YWx1ZSBhcyBhbiBhcmd1bWVudCBpbnN0ZWFkIG9mIGFuIGFycmF5IHZhbHVlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFyclJlZHVjZShhcnIsIGNhbGxiYWNrZm4sIGluaXRpYWxWYWx1ZSkge1xyXG4gICAgdmFyIHZhbHVlO1xyXG4gICAgaWYgKGFycikge1xyXG4gICAgICAgIC8vIEZvciBQZXJmb3JtYW5jZSB0cnkgYW5kIHVzZSB0aGUgbmF0aXZlIGluc3RhbmNlLCB1c2luZyBzdHJpbmcgbG9va3VwIG9mIHRoZSBmdW5jdGlvbiB0byBlYXNpbHkgcGFzcyB0aGUgRVMzIGJ1aWxkIGNoZWNrcyBhbmQgbWluaWZpY2F0aW9uXHJcbiAgICAgICAgaWYgKGFycltzdHJSZWR1Y2VdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnJbc3RyUmVkdWNlXShjYWxsYmFja2ZuLCBpbml0aWFsVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbGVuID0gYXJyW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICB2YXIgbHAgPSAwO1xyXG4gICAgICAgIC8vIFNwZWNpZmljYWxseSBjaGVja2luZyB0aGUgbnVtYmVyIG9mIHBhc3NlZCBhcmd1bWVudHMgYXMgdGhlIHZhbHVlIGNvdWxkIGJlIGFueXRoaW5nXHJcbiAgICAgICAgaWYgKGFyZ3VtZW50c1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPj0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGFyZ3VtZW50c1syXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHdoaWxlIChscCA8IGxlbiAmJiAhKGxwIGluIGFycikpIHtcclxuICAgICAgICAgICAgICAgIGxwKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFsdWUgPSBhcnJbbHArK107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChscCA8IGxlbikge1xyXG4gICAgICAgICAgICBpZiAobHAgaW4gYXJyKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbGxiYWNrZm4odmFsdWUsIGFycltscF0sIGxwLCBhcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxwKys7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbi8qKlxyXG4gKiBoZWxwZXIgbWV0aG9kIHRvIHRyaW0gc3RyaW5ncyAoSUU4IGRvZXMgbm90IGltcGxlbWVudCBTdHJpbmcucHJvdG90eXBlLnRyaW0pXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3RyVHJpbShzdHIpIHtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgICAvLyBGb3IgUGVyZm9ybWFuY2UgdHJ5IGFuZCB1c2UgdGhlIG5hdGl2ZSBpbnN0YW5jZSwgdXNpbmcgc3RyaW5nIGxvb2t1cCBvZiB0aGUgZnVuY3Rpb24gdG8gZWFzaWx5IHBhc3MgdGhlIEVTMyBidWlsZCBjaGVja3MgYW5kIG1pbmlmaWNhdGlvblxyXG4gICAgICAgIHN0ciA9IChfc3RyVHJpbSAmJiBzdHJbY1N0clRyaW1dKSA/IHN0cltjU3RyVHJpbV0oKSA6IChzdHJbX0RZTl9SRVBMQUNFIC8qIEBtaW46JTJlcmVwbGFjZSAqL10gPyBzdHJbX0RZTl9SRVBMQUNFIC8qIEBtaW46JTJlcmVwbGFjZSAqL10oL15cXHMrfCg/PVxccylcXHMrJC9nLCBTVFJfRU1QVFkpIDogc3RyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbn1cclxudmFyIF9vYmpLZXlzSGFzRG9udEVudW1CdWcgPSAhKHsgdG9TdHJpbmc6IG51bGwgfSkucHJvcGVydHlJc0VudW1lcmFibGUoXCJ0b1N0cmluZ1wiKTtcclxudmFyIF9vYmpLZXlzRG9udEVudW1zID0gW1xyXG4gICAgXCJ0b1N0cmluZ1wiLFxyXG4gICAgXCJ0b0xvY2FsZVN0cmluZ1wiLFxyXG4gICAgXCJ2YWx1ZU9mXCIsXHJcbiAgICBcImhhc093blByb3BlcnR5XCIsXHJcbiAgICBcImlzUHJvdG90eXBlT2ZcIixcclxuICAgIFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcclxuICAgIFwiY29uc3RydWN0b3JcIlxyXG5dO1xyXG4vKipcclxuICogUmV0dXJucyB0aGUgbmFtZXMgb2YgdGhlIGVudW1lcmFibGUgc3RyaW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2YgYW4gb2JqZWN0LiBUaGlzIGhlbHBlciBleGlzdHMgdG8gYXZvaWQgYWRkaW5nIGEgcG9seWZpbCBmb3Igb2xkZXIgYnJvd3NlcnNcclxuICogdGhhdCBkbyBub3QgZGVmaW5lIE9iamVjdC5rZXlzIGVnLiBFUzMgb25seSwgSUU4IGp1c3QgaW4gY2FzZSBhbnkgcGFnZSBjaGVja3MgZm9yIHByZXNlbmNlL2Fic2VuY2Ugb2YgdGhlIHByb3RvdHlwZSBpbXBsZW1lbnRhdGlvbi5cclxuICogTm90ZTogRm9yIGNvbnNpc3RlbmN5IHRoaXMgd2lsbCBub3QgdXNlIHRoZSBPYmplY3Qua2V5cyBpbXBsZW1lbnRhdGlvbiBpZiBpdCBleGlzdHMgYXMgdGhpcyB3b3VsZCBjYXVzZSBhIHRlc3RpbmcgcmVxdWlyZW1lbnQgdG8gdGVzdCB3aXRoIGFuZCB3aXRob3V0IHRoZSBpbXBsZW1lbnRhdGlvbnNcclxuICogQHBhcmFtIG9iaiBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydGllcyBhbmQgbWV0aG9kcy4gVGhpcyBjYW4gYmUgYW4gb2JqZWN0IHRoYXQgeW91IGNyZWF0ZWQgb3IgYW4gZXhpc3RpbmcgRG9jdW1lbnQgT2JqZWN0IE1vZGVsIChET00pIG9iamVjdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvYmpLZXlzKG9iaikge1xyXG4gICAgdmFyIG9ialR5cGUgPSB0eXBlb2Ygb2JqO1xyXG4gICAgaWYgKG9ialR5cGUgIT09IHN0clNoaW1GdW5jdGlvbiAmJiAob2JqVHlwZSAhPT0gc3RyU2hpbU9iamVjdCB8fCBvYmogPT09IG51bGwpKSB7XHJcbiAgICAgICAgdGhyb3dUeXBlRXJyb3IoXCJvYmpLZXlzIGNhbGxlZCBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgfVxyXG4gICAgLy8gRm9yIFBlcmZvcm1hbmNlIHRyeSBhbmQgdXNlIHRoZSBuYXRpdmUgaW5zdGFuY2UsIHVzaW5nIHN0cmluZyBsb29rdXAgb2YgdGhlIGZ1bmN0aW9uIHRvIGVhc2lseSBwYXNzIHRoZSBFUzMgYnVpbGQgY2hlY2tzIGFuZCBtaW5pZmljYXRpb25cclxuICAgIGlmICghX29iaktleXNIYXNEb250RW51bUJ1ZyAmJiBfb2JqS2V5cykge1xyXG4gICAgICAgIHJldHVybiBfb2JqS2V5cyhvYmopO1xyXG4gICAgfVxyXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gICAgZm9yICh2YXIgcHJvcCBpbiBvYmopIHtcclxuICAgICAgICBpZiAob2JqICYmIE9iakhhc093blByb3BlcnR5W19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKG9iaiwgcHJvcCkpIHtcclxuICAgICAgICAgICAgcmVzdWx0W19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHByb3ApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChfb2JqS2V5c0hhc0RvbnRFbnVtQnVnKSB7XHJcbiAgICAgICAgdmFyIGRvbnRFbnVtc0xlbmd0aCA9IF9vYmpLZXlzRG9udEVudW1zW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgZG9udEVudW1zTGVuZ3RoOyBscCsrKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmogJiYgT2JqSGFzT3duUHJvcGVydHlbX0RZTl9DQUxMIC8qIEBtaW46JTJlY2FsbCAqL10ob2JqLCBfb2JqS2V5c0RvbnRFbnVtc1tscF0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oX29iaktleXNEb250RW51bXNbbHBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIFRyeSB0byBkZWZpbmUgZ2V0L3NldCBvYmplY3QgcHJvcGVydHkgYWNjZXNzb3JzIGZvciB0aGUgdGFyZ2V0IG9iamVjdC9wcm90b3R5cGUsIHRoaXMgd2lsbCBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aFxyXG4gKiBleGlzdGluZyBBUEkgZGVmaW5pdGlvbiB3aGVuIHJ1biB3aXRoaW4gYW4gRVM1KyBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBhY2Nlc3NvcnMgYnV0IHN0aWxsIGVuYWJsZSB0aGUgY29kZSB0byBiZSBsb2FkZWRcclxuICogYW5kIGV4ZWN1dGVkIGluIGFuIEVTMyBjb250YWluZXIsIHByb3ZpZGluZyBiYXNpYyBJRTggY29tcGF0aWJpbGl0eS5cclxuICogQHBhcmFtIHRhcmdldCBUaGUgb2JqZWN0IG9uIHdoaWNoIHRvIGRlZmluZSB0aGUgcHJvcGVydHkuXHJcbiAqIEBwYXJhbSBwcm9wIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBkZWZpbmVkIG9yIG1vZGlmaWVkLlxyXG4gKiBAcGFyYW0gZ2V0UHJvcCBUaGUgZ2V0dGVyIGZ1bmN0aW9uIHRvIHdpcmUgYWdhaW5zdCB0aGUgZ2V0dGVyLlxyXG4gKiBAcGFyYW0gc2V0UHJvcCBUaGUgc2V0dGVyIGZ1bmN0aW9uIHRvIHdpcmUgYWdhaW5zdCB0aGUgc2V0dGVyLlxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0IHdhcyBhYmxlIHRvIGNyZWF0ZSB0aGUgYWNjZXNzb3JzIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG9iakRlZmluZUFjY2Vzc29ycyh0YXJnZXQsIHByb3AsIGdldFByb3AsIHNldFByb3ApIHtcclxuICAgIGlmIChfb2JqRGVmaW5lUHJvcGVydHkpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGdldFByb3ApIHtcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZ2V0ID0gZ2V0UHJvcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2V0UHJvcCkge1xyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5zZXQgPSBzZXRQcm9wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9vYmpEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3AsIGRlc2NyaXB0b3IpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gSUU4IERlZmluZXMgYSBkZWZpbmVQcm9wZXJ0eSBvbiBPYmplY3QgYnV0IGl0J3Mgb25seSBzdXBwb3J0ZWQgZm9yIERPTSBlbGVtZW50cyBzbyBpdCB3aWxsIHRocm93XHJcbiAgICAgICAgICAgIC8vIFdlIHdpbGwganVzdCBpZ25vcmUgdGhpcyBoZXJlLlxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBfZG9Ob3RoaW5nKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBGcmVlemUob2JqKSB7XHJcbiAgICBpZiAoX29iakZyZWV6ZSkge1xyXG4gICAgICAgIG9iakZvckVhY2hLZXkob2JqLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpIHx8IGlzT2JqZWN0KHZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgX29iakZyZWV6ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmpGcmVlemUob2JqKTtcclxufVxyXG5leHBvcnQgdmFyIG9iakZyZWV6ZSA9IF9vYmpGcmVlemUgfHwgX2RvTm90aGluZztcclxuZXhwb3J0IHZhciBvYmpTZWFsID0gX29ialNlYWwgfHwgX2RvTm90aGluZztcclxuLyoqXHJcbiAqIFJldHVybiB0aGUgY3VycmVudCB0aW1lIHZpYSB0aGUgRGF0ZSBub3coKSBmdW5jdGlvbiAoaWYgYXZhaWxhYmxlKSBhbmQgZmFsbHMgYmFjayB0byAobmV3IERhdGUoKSkuZ2V0VGltZSgpIGlmIG5vdygpIGlzIHVuYXZhaWxhYmxlIChJRTggb3IgbGVzcylcclxuICogaHR0cHM6Ly9jYW5pdXNlLmNvbS8jc2VhcmNoPURhdGUubm93XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGF0ZU5vdygpIHtcclxuICAgIHZhciBkdCA9IERhdGU7XHJcbiAgICByZXR1cm4gZHQubm93ID8gZHQubm93KCkgOiBuZXcgZHQoKS5nZXRUaW1lKCk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIG5hbWUgb2Ygb2JqZWN0IGlmIGl0J3MgYW4gRXJyb3IuIE90aGVyd2lzZSwgcmV0dXJucyBlbXB0eSBzdHJpbmcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXhjZXB0aW9uTmFtZShvYmplY3QpIHtcclxuICAgIGlmIChpc0Vycm9yKG9iamVjdCkpIHtcclxuICAgICAgICByZXR1cm4gb2JqZWN0W19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNUUl9FTVBUWTtcclxufVxyXG4vKipcclxuICogU2V0cyB0aGUgcHJvdmlkZWQgdmFsdWUgb24gdGhlIHRhcmdldCBpbnN0YW5jZSB1c2luZyB0aGUgZmllbGQgbmFtZSB3aGVuIHRoZSBwcm92aWRlZCBjaGsgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGUgY2hrXHJcbiAqIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlIG5ldyB2YWx1ZSBpcyBubyBlcXVhbCB0byB0aGUgb3JpZ2luYWwgdmFsdWUuXHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGQgLSBUaGUga2V5IG9mIHRoZSB0YXJnZXRcclxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldFxyXG4gKiBAcGFyYW0gdmFsQ2hrIC0gW09wdGlvbmFsXSBDYWxsYmFjayB0byBjaGVjayB0aGUgdmFsdWUgdGhhdCBpZiBzdXBwbGllZCB3aWxsIGJlIGNhbGxlZCBjaGVjayBpZiB0aGUgbmV3IHZhbHVlIGNhbiBiZSBzZXRcclxuICogQHBhcmFtIHNyY0NoayAtIFtPcHRpb25hbF0gQ2FsbGJhY2sgdG8gY2hlY2sgdG8gb3JpZ2luYWwgdmFsdWUgdGhhdCBpZiBzdXBwbGllZCB3aWxsIGJlIGNhbGxlZCBpZiB0aGUgbmV3IHZhbHVlIHNob3VsZCBiZSBzZXQgKGlmIGFsbG93ZWQpXHJcbiAqIEByZXR1cm5zIFRoZSBleGlzdGluZyBvciBuZXcgdmFsdWUsIGRlcGVuZGluZyB3aGF0IHdhcyBzZXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRWYWx1ZSh0YXJnZXQsIGZpZWxkLCB2YWx1ZSwgdmFsQ2hrLCBzcmNDaGspIHtcclxuICAgIHZhciB0aGVWYWx1ZSA9IHZhbHVlO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIHRoZVZhbHVlID0gdGFyZ2V0W2ZpZWxkXTtcclxuICAgICAgICBpZiAodGhlVmFsdWUgIT09IHZhbHVlICYmICghc3JjQ2hrIHx8IHNyY0Noayh0aGVWYWx1ZSkpICYmICghdmFsQ2hrIHx8IHZhbENoayh2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIHRoZVZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRhcmdldFtmaWVsZF0gPSB0aGVWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhlVmFsdWU7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmFsdWUgZnJvbSB0aGUgdGFyZ2V0IG9iamVjdCBpZiBub3QgbnVsbCBvciB1bmRlZmluZWQgb3RoZXJ3aXNlIHNldHMgdGhlIG5ldyB2YWx1ZSBhbmQgcmV0dXJucyBpdFxyXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gcmV0dXJuIG9yIHNldCB0aGUgZGVmYXVsdCB2YWx1ZVxyXG4gKiBAcGFyYW0gZmllbGQgLSBUaGUga2V5IGZvciB0aGUgZmllbGQgdG8gc2V0IG9uIHRoZSB0YXJnZXRcclxuICogQHBhcmFtIGRlZlZhbHVlIC0gW09wdGlvbmFsXSBUaGUgdmFsdWUgdG8gc2V0IGlmIG5vdCBhbHJlYWR5IHByZXNlbnQsIHdoZW4gbm90IHByb3ZpZGVkIGEgZW1wdHkgb2JqZWN0IHdpbGwgYmUgYWRkZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXRWYWx1ZSh0YXJnZXQsIGZpZWxkLCBkZWZWYWx1ZSkge1xyXG4gICAgdmFyIHRoZVZhbHVlO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIHRoZVZhbHVlID0gdGFyZ2V0W2ZpZWxkXTtcclxuICAgICAgICBpZiAoIXRoZVZhbHVlICYmIGlzTnVsbE9yVW5kZWZpbmVkKHRoZVZhbHVlKSkge1xyXG4gICAgICAgICAgICAvLyBTdXBwb3J0cyBoYXZpbmcgdGhlIGRlZmF1bHQgYXMgbnVsbFxyXG4gICAgICAgICAgICB0aGVWYWx1ZSA9ICFpc1VuZGVmaW5lZChkZWZWYWx1ZSkgPyBkZWZWYWx1ZSA6IHt9O1xyXG4gICAgICAgICAgICB0YXJnZXRbZmllbGRdID0gdGhlVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gRXhwYW5kZWQgZm9yIHBlcmZvcm1hbmNlIHNvIHdlIG9ubHkgY2hlY2sgZGVmVmFsdWUgaWYgcmVxdWlyZWRcclxuICAgICAgICB0aGVWYWx1ZSA9ICFpc1VuZGVmaW5lZChkZWZWYWx1ZSkgPyBkZWZWYWx1ZSA6IHt9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoZVZhbHVlO1xyXG59XHJcbi8qKlxyXG4gKiBHZXQgdGhlIG1hcHBlZCBjb25maWcgdmFsdWUsIGlmIG51bGwgb3IgdW5kZWZpbmVkIGFueSBzdXBwbGllZCBkZWZhdWx0VmFsdWUgd2lsbCBiZSByZXR1cm5lZC5cclxuICogQHBhcmFtIGZpZWxkIC0gVGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFzIHRoZSBuYW1lZCBlbnVtIHZhbHVlIChudW1iZXIpIG9yIHRoZSBzdHJpbmcgbmFtZS5cclxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHJldHVybiBpZiB0aGUgY29uZmlnIGZpZWxkIGlzIG5vdCBwcmVzZW50LCBudWxsIG9yIHVuZGVmaW5lZC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDZmdWYWx1ZSh0aGVWYWx1ZSwgZGVmYXVsdFZhbHVlKSB7XHJcbiAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHRoZVZhbHVlKSA/IHRoZVZhbHVlIDogZGVmYXVsdFZhbHVlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBpc05vdFRydXRoeSh2YWx1ZSkge1xyXG4gICAgcmV0dXJuICF2YWx1ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNUcnV0aHkodmFsdWUpIHtcclxuICAgIHJldHVybiAhIXZhbHVlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB0aHJvd0Vycm9yKG1lc3NhZ2UpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxufVxyXG5mdW5jdGlvbiBfY3JlYXRlUHJveHlGdW5jdGlvbihzb3VyY2UsIGZ1bmNOYW1lKSB7XHJcbiAgICB2YXIgc3JjRnVuYyA9IG51bGw7XHJcbiAgICB2YXIgc3JjID0gbnVsbDtcclxuICAgIGlmIChpc0Z1bmN0aW9uKHNvdXJjZSkpIHtcclxuICAgICAgICBzcmNGdW5jID0gc291cmNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgc3JjID0gc291cmNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBDYXB0dXJlIHRoZSBvcmlnaW5hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBtZXRob2RcclxuICAgICAgICB2YXIgb3JpZ2luYWxBcmd1bWVudHMgPSBhcmd1bWVudHM7XHJcbiAgICAgICAgaWYgKHNyY0Z1bmMpIHtcclxuICAgICAgICAgICAgc3JjID0gc3JjRnVuYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3JjKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzcmNbZnVuY05hbWVdW19EWU5fQVBQTFkgLyogQG1pbjolMmVhcHBseSAqL10oc3JjLCBvcmlnaW5hbEFyZ3VtZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vKipcclxuICogRWZmZWN0aXZlbHkgYXNzaWducyBhbGwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzIChub3QganVzdCBvd24gcHJvcGVydGllcykgYW5kIGZ1bmN0aW9ucyAoaW5jbHVkaW5nIGluaGVyaXRlZCBwcm90b3R5cGUpIGZyb21cclxuICogdGhlIHNvdXJjZSBvYmplY3QgdG8gdGhlIHRhcmdldCwgaXQgYXR0ZW1wdHMgdG8gdXNlIHByb3h5IGdldHRlcnMgLyBzZXR0ZXJzIChpZiBwb3NzaWJsZSkgYW5kIHByb3h5IGZ1bmN0aW9ucyB0byBhdm9pZCBwb3RlbnRpYWxcclxuICogaW1wbGVtZW50YXRpb24gaXNzdWVzIGJ5IGFzc2lnbmluZyBwcm90b3R5cGUgZnVuY3Rpb25zIGFzIGluc3RhbmNlIG9uZXNcclxuICpcclxuICogVGhpcyBtZXRob2QgaXMgdGhlIHByaW1hcnkgbWV0aG9kIHVzZWQgdG8gXCJ1cGRhdGVcIiB0aGUgc25pcHBldCBwcm94eSB3aXRoIHRoZSB1bHRpbWF0ZSBpbXBsZW1lbnRhdGlvbnMuXHJcbiAqXHJcbiAqIFNwZWNpYWwgRVMzIE5vdGVzOlxyXG4gKiBVcGRhdGVzIChzZXR0aW5nKSBvZiBkaXJlY3QgcHJvcGVydHkgdmFsdWVzIG9uIHRoZSB0YXJnZXQgb3IgaW5kaXJlY3RseSBvbiB0aGUgc291cmNlIG9iamVjdCBXSUxMIE5PVCBXT1JLIFBST1BFUkxZLCB1cGRhdGVzIHRvIHRoZVxyXG4gKiBwcm9wZXJ0aWVzIG9mIFwicmVmZXJlbmNlZFwiIG9iamVjdCB3aWxsIHdvcmsgKHRhcmdldC5jb250ZXh0Lm5ld1ZhbHVlID0gMTAgPT4gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNvdXJjZS5jb250ZXh0IGFzIGl0J3MgdGhlXHJcbiAqIHNhbWUgb2JqZWN0KS4gRVMzIEZhaWx1cmVzOiBhc3NpZ25pbmcgdGFyZ2V0Lm15UHJvcCA9IDMgLT4gV29uJ3QgY2hhbmdlIHNvdXJjZS5teVByb3AgPSAzLCBsaWtld2lzZSB0aGUgcmV2ZXJzZSB3b3VsZCBhbHNvIGZhaWwuXHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSBhc3NpZ25lZCB3aXRoIHRoZSBzb3VyY2UgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zXHJcbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB3aGljaCB3aWxsIGJlIGFzc2lnbmVkIC8gY2FsbGVkIGJ5IHNldHRpbmcgLyBjYWxsaW5nIHRoZSB0YXJnZXRzIHByb3hpZXNcclxuICogQHBhcmFtIGNoa1NldCAtIEFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc3BlY2lmaWMgcHJvcGVydHkvZnVuY3Rpb24gc2hvdWxkIGJlIHByb3hpZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm94eUFzc2lnbih0YXJnZXQsIHNvdXJjZSwgY2hrU2V0KSB7XHJcbiAgICBpZiAodGFyZ2V0ICYmIHNvdXJjZSAmJiBpc09iamVjdCh0YXJnZXQpICYmIGlzT2JqZWN0KHNvdXJjZSkpIHtcclxuICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChmaWVsZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNTdHJpbmcoZmllbGQpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2VbZmllbGRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGtTZXQgfHwgY2hrU2V0KGZpZWxkLCB0cnVlLCBzb3VyY2UsIHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgcHJveHkgZnVuY3Rpb24gcmF0aGVyIHRoYW4ganVzdCBjb3B5aW5nIHRoZSAocG9zc2libGUpIHByb3RvdHlwZSB0byB0aGUgbmV3IG9iamVjdCBhcyBhbiBpbnN0YW5jZSBmdW5jdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbZmllbGRdID0gX2NyZWF0ZVByb3h5RnVuY3Rpb24oc291cmNlLCBmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWNoa1NldCB8fCBjaGtTZXQoZmllbGQsIGZhbHNlLCBzb3VyY2UsIHRhcmdldCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkodGFyZ2V0LCBmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSBwcmV2aW91cyBpbnN0YW5jZSBwcm9wZXJ0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0W2ZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmpEZWZpbmVBY2Nlc3NvcnModGFyZ2V0LCBmaWVsZCwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlW2ZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAodGhlVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlW2ZpZWxkXSA9IHRoZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVuYWJsZSB0byBjcmVhdGUgYW4gYWNjZXNzb3IsIHNvIGp1c3QgYXNzaWduIHRoZSB2YWx1ZXMgYXMgYSBmYWxsYmFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAtLSB0aGlzIHdpbGwgKG1vc3RseSkgd29yayBmb3Igb2JqZWN0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAtLSBidXQgd2lsbCBmYWlsIGZvciBhY2Nlc3NpbmcgcHJpbWl0aXZlcyAoaWYgdGhlIHNvdXJjZSBjaGFuZ2VzIGl0KSBhbmQgYWxsIHR5cGVzIG9mIFwic2V0dGVyc1wiIGFzIHRoZSBzb3VyY2Ugd29uJ3QgYmUgbW9kaWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gZWZmZWN0aXZlbHkgYXBwbHkvcHJveHkgZnVsbCBzb3VyY2UgdG8gdGhlIHRhcmdldCBpbnN0YW5jZVxyXG4gICAgICAgIGZvciAodmFyIGZpZWxkIGluIHNvdXJjZSkge1xyXG4gICAgICAgICAgICBfbG9vcF8xKGZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGFyZ2V0O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgcHJveHkgZnVuY3Rpb24gb24gdGhlIHRhcmdldCB3aGljaCBpbnRlcm5hbGx5IHdpbGwgY2FsbCB0aGUgc291cmNlIHZlcnNpb24gd2l0aCBhbGwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgdGFyZ2V0IG1ldGhvZC5cclxuICpcclxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGJlIGFzc2lnbmVkIHdpdGggdGhlIHNvdXJjZSBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnNcclxuICogQHBhcmFtIG5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0aGF0IHdpbGwgYmUgYWRkZWQgb24gdGhlIHRhcmdldFxyXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3Qgd2hpY2ggd2lsbCBiZSBhc3NpZ25lZCAvIGNhbGxlZCBieSBzZXR0aW5nIC8gY2FsbGluZyB0aGUgdGFyZ2V0cyBwcm94aWVzXHJcbiAqIEBwYXJhbSB0aGVGdW5jIC0gVGhlIGZ1bmN0aW9uIG5hbWUgb24gdGhlIHNvdXJjZSB0aGF0IHdpbGwgYmUgcHJveGllZCBvbiB0aGUgdGFyZ2V0XHJcbiAqIEBwYXJhbSBvdmVyd3JpdGVUYXJnZXQgLSBJZiBgZmFsc2VgIHRoaXMgd2lsbCBub3QgcmVwbGFjZSBhbnkgcHJlLWV4aXN0aW5nIG5hbWUgb3RoZXJ3aXNlICh0aGUgZGVmYXVsdCkgaXQgd2lsbCBvdmVyd3JpdGUgYW55IGV4aXN0aW5nIG5hbWVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm94eUZ1bmN0aW9uQXModGFyZ2V0LCBuYW1lLCBzb3VyY2UsIHRoZUZ1bmMsIG92ZXJ3cml0ZVRhcmdldCkge1xyXG4gICAgaWYgKHRhcmdldCAmJiBuYW1lICYmIHNvdXJjZSkge1xyXG4gICAgICAgIGlmIChvdmVyd3JpdGVUYXJnZXQgIT09IGZhbHNlIHx8IGlzVW5kZWZpbmVkKHRhcmdldFtuYW1lXSkpIHtcclxuICAgICAgICAgICAgdGFyZ2V0W25hbWVdID0gX2NyZWF0ZVByb3h5RnVuY3Rpb24oc291cmNlLCB0aGVGdW5jKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgcHJveHkgZnVuY3Rpb25zIG9uIHRoZSB0YXJnZXQgd2hpY2ggaW50ZXJuYWxseSB3aWxsIGNhbGwgdGhlIHNvdXJjZSB2ZXJzaW9uIHdpdGggYWxsIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHRhcmdldCBtZXRob2QuXHJcbiAqXHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBiZSBhc3NpZ25lZCB3aXRoIHRoZSBzb3VyY2UgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zXHJcbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB3aGljaCB3aWxsIGJlIGFzc2lnbmVkIC8gY2FsbGVkIGJ5IHNldHRpbmcgLyBjYWxsaW5nIHRoZSB0YXJnZXRzIHByb3hpZXNcclxuICogQHBhcmFtIGZ1bmN0aW9uc1RvUHJveHkgLSBBbiBhcnJheSBvZiBmdW5jdGlvbiBuYW1lcyB0aGF0IHdpbGwgYmUgcHJveGllZCBvbiB0aGUgdGFyZ2V0XHJcbiAqIEBwYXJhbSBvdmVyd3JpdGVUYXJnZXQgLSBJZiBmYWxzZSB0aGlzIHdpbGwgbm90IHJlcGxhY2UgYW55IHByZS1leGlzdGluZyBuYW1lIG90aGVyd2lzZSAodGhlIGRlZmF1bHQpIGl0IHdpbGwgb3ZlcndyaXRlIGFueSBleGlzdGluZyBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcHJveHlGdW5jdGlvbnModGFyZ2V0LCBzb3VyY2UsIGZ1bmN0aW9uc1RvUHJveHksIG92ZXJ3cml0ZVRhcmdldCkge1xyXG4gICAgaWYgKHRhcmdldCAmJiBzb3VyY2UgJiYgaXNPYmplY3QodGFyZ2V0KSAmJiBpc0FycmF5KGZ1bmN0aW9uc1RvUHJveHkpKSB7XHJcbiAgICAgICAgYXJyRm9yRWFjaChmdW5jdGlvbnNUb1Byb3h5LCBmdW5jdGlvbiAodGhlRnVuY05hbWUpIHtcclxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHRoZUZ1bmNOYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgcHJveHlGdW5jdGlvbkFzKHRhcmdldCwgdGhlRnVuY05hbWUsIHNvdXJjZSwgdGhlRnVuY05hbWUsIG92ZXJ3cml0ZVRhcmdldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuLyoqXHJcbiAqIFNpbXBsZXIgaGVscGVyIHRvIGNyZWF0ZSBhIGR5bmFtaWMgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgYW5kIHBvcHVsYXRlcyB0aGUgdmFsdWVzIHdpdGggdGhlIGRlZmF1bHRzLlxyXG4gKiBPbmx5IGluc3RhbmNlIHByb3BlcnRpZXMgKGhhc093blByb3BlcnR5KSB2YWx1ZXMgYXJlIGNvcGllZCBmcm9tIHRoZSBkZWZhdWx0cyB0byB0aGUgbmV3IGluc3RhbmNlXHJcbiAqIEBwYXJhbSBkZWZhdWx0cyBTaW1wbGUgaGVscGVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2xhc3NGcm9tSW50ZXJmYWNlKGRlZmF1bHRzKSB7XHJcbiAgICByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGNsYXNzXzEoKSB7XHJcbiAgICAgICAgICAgIHZhciBfdGhpc18xID0gdGhpcztcclxuICAgICAgICAgICAgaWYgKGRlZmF1bHRzKSB7XHJcbiAgICAgICAgICAgICAgICBvYmpGb3JFYWNoS2V5KGRlZmF1bHRzLCBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3RoaXNfMVtmaWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjbGFzc18xO1xyXG4gICAgfSgpKTtcclxufVxyXG4vKipcclxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gYXNzaXN0IHdpdGggSklUIHBlcmZvcm1hbmNlIGZvciBvYmplY3RzIHRoYXQgaGF2ZSBwcm9wZXJ0aWVzIGFkZGVkIC8gcmVtb3ZlZCBkeW5hbWljYWxseVxyXG4gKiB0aGlzIGlzIHByaW1hcmlseSBmb3IgY2hyb21pdW0gYmFzZWQgYnJvd3NlcnMgYW5kIGhhcyBsaW1pdGVkIGVmZmVjdHMgb24gRmlyZWZveCBhbmQgbm9uZSBvZiBJRS4gT25seSBjYWxsIHRoaXNcclxuICogZnVuY3Rpb24gYWZ0ZXIgeW91IGhhdmUgZmluaXNoZWQgXCJ1cGRhdGluZ1wiIHRoZSBvYmplY3QsIGNhbGxpbmcgdGhpcyB3aXRoaW4gbG9vcHMgcmVkdWNlcyBvciBkZWZlYXRzIHRoZSBiZW5lZml0cy5cclxuICogVGhpcyBoZWxwcyB3aGVuIGl0ZXJhdGluZyB1c2luZyBmb3IuLmluLCBvYmpLZXlzKCkgYW5kIG9iakZvckVhY2goKVxyXG4gKiBAcGFyYW0gdGhlT2JqZWN0IC0gVGhlIG9iamVjdCB0byBiZSBvcHRpbWl6ZWQgaWYgcG9zc2libGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvcHRpbWl6ZU9iamVjdCh0aGVPYmplY3QpIHtcclxuICAgIC8vIFY4IE9wdGltaXphdGlvbiB0byBjYXVzZSB0aGUgSklUIGNvbXBpbGVyIHRvIGNyZWF0ZSBhIG5ldyBvcHRpbWl6ZWQgb2JqZWN0IGZvciBsb29raW5nIHVwIHRoZSBvd24gcHJvcGVydGllc1xyXG4gICAgLy8gcHJpbWFyaWx5IGZvciBvYmplY3Qgd2l0aCA8PSAxOSBwcm9wZXJ0aWVzIGZvciA+PSAyMCB0aGUgZWZmZWN0IGlzIHJlZHVjZWQgb3Igbm9uLWV4aXN0ZW50XHJcbiAgICBpZiAodGhlT2JqZWN0ICYmIE9iakFzc2lnbikge1xyXG4gICAgICAgIHRoZU9iamVjdCA9IE9iakNsYXNzKE9iakFzc2lnbih7fSwgdGhlT2JqZWN0KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhlT2JqZWN0O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBvYmpFeHRlbmQob2JqMSwgb2JqMiwgb2JqMywgb2JqNCwgb2JqNSwgb2JqNikge1xyXG4gICAgLy8gVmFyaWFibGVzXHJcbiAgICB2YXIgdGhlQXJncyA9IGFyZ3VtZW50cztcclxuICAgIHZhciBleHRlbmRlZCA9IHRoZUFyZ3NbMF0gfHwge307XHJcbiAgICB2YXIgYXJnTGVuID0gdGhlQXJnc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICB2YXIgZGVlcCA9IGZhbHNlO1xyXG4gICAgdmFyIGlkeCA9IDE7XHJcbiAgICAvLyBDaGVjayBmb3IgXCJEZWVwXCIgZmxhZ1xyXG4gICAgaWYgKGFyZ0xlbiA+IDAgJiYgaXNCb29sZWFuKGV4dGVuZGVkKSkge1xyXG4gICAgICAgIGRlZXAgPSBleHRlbmRlZDtcclxuICAgICAgICBleHRlbmRlZCA9IHRoZUFyZ3NbaWR4XSB8fCB7fTtcclxuICAgICAgICBpZHgrKztcclxuICAgIH1cclxuICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KVxyXG4gICAgaWYgKCFpc09iamVjdChleHRlbmRlZCkpIHtcclxuICAgICAgICBleHRlbmRlZCA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggcmVtYWluaW5nIG9iamVjdCBhbmQgY29uZHVjdCBhIG1lcmdlXHJcbiAgICBmb3IgKDsgaWR4IDwgYXJnTGVuOyBpZHgrKykge1xyXG4gICAgICAgIHZhciBhcmcgPSB0aGVBcmdzW2lkeF07XHJcbiAgICAgICAgdmFyIGlzQXJnQXJyYXkgPSBpc0FycmF5KGFyZyk7XHJcbiAgICAgICAgdmFyIGlzQXJnT2JqID0gaXNPYmplY3QoYXJnKTtcclxuICAgICAgICBmb3IgKHZhciBwcm9wIGluIGFyZykge1xyXG4gICAgICAgICAgICB2YXIgcHJvcE9rID0gKGlzQXJnQXJyYXkgJiYgKHByb3AgaW4gYXJnKSkgfHwgKGlzQXJnT2JqICYmIChPYmpIYXNPd25Qcm9wZXJ0eVtfRFlOX0NBTEwgLyogQG1pbjolMmVjYWxsICovXShhcmcsIHByb3ApKSk7XHJcbiAgICAgICAgICAgIGlmICghcHJvcE9rKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBhcmdbcHJvcF07XHJcbiAgICAgICAgICAgIHZhciBpc05ld0FycmF5ID0gdm9pZCAwO1xyXG4gICAgICAgICAgICAvLyBJZiBkZWVwIG1lcmdlIGFuZCBwcm9wZXJ0eSBpcyBhbiBvYmplY3QsIG1lcmdlIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgaWYgKGRlZXAgJiYgbmV3VmFsdWUgJiYgKChpc05ld0FycmF5ID0gaXNBcnJheShuZXdWYWx1ZSkpIHx8IGlzUGxhaW5PYmplY3QobmV3VmFsdWUpKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gR3JhYiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXh0ZW5kZWQgb2JqZWN0XHJcbiAgICAgICAgICAgICAgICB2YXIgY2xvbmUgPSBleHRlbmRlZFtwcm9wXTtcclxuICAgICAgICAgICAgICAgIGlmIChpc05ld0FycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5KGNsb25lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBcIm1lcmdlXCIgYW4gYXJyYXkgd2l0aCBhIG5vbi1hcnJheSBzbyBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzUGxhaW5PYmplY3QoY2xvbmUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgXCJtZXJnZVwiIGFuIG9iamVjdCB3aXRoIGEgbm9uLW9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgIGNsb25lID0ge307XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBOZXZlciBtb3ZlIHRoZSBvcmlnaW5hbCBvYmplY3RzIGFsd2F5cyBjbG9uZSB0aGVtXHJcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9iakV4dGVuZChkZWVwLCBjbG9uZSwgbmV3VmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgbmV3IChvciBwcmV2aW91cykgdmFsdWUgKHVubGVzcyB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBleHRlbmRlZFtwcm9wXSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGV4dGVuZGVkO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUhlbHBlckZ1bmNzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IG9iakZvckVhY2hLZXksIGRlZXBGcmVlemUgfSBmcm9tIFwiLi4vSmF2YVNjcmlwdFNESy9IZWxwZXJGdW5jc1wiO1xyXG4vKipcclxuICogQ3JlYXRlIGFuIGVudW0gc3R5bGUgb2JqZWN0IHdoaWNoIGhhcyBib3RoIHRoZSBrZXkgPT4gdmFsdWUgYW5kIHZhbHVlID0+IGtleSBtYXBwaW5nc1xyXG4gKiBAcGFyYW0gdmFsdWVzIC0gVGhlIHZhbHVlcyB0byBwb3B1bGF0ZSBvbiB0aGUgbmV3IG9iamVjdFxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudW1TdHlsZSh2YWx1ZXMpIHtcclxuICAgIHZhciBlbnVtQ2xhc3MgPSB7fTtcclxuICAgIG9iakZvckVhY2hLZXkodmFsdWVzLCBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XHJcbiAgICAgICAgZW51bUNsYXNzW2ZpZWxkXSA9IHZhbHVlO1xyXG4gICAgICAgIGVudW1DbGFzc1t2YWx1ZV0gPSBmaWVsZDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRlZXBGcmVlemUoZW51bUNsYXNzKTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIGEgMiBpbmRleCBtYXAgdGhhdCBtYXBzIGFuIGVudW0ncyBrZXkgYXMgYm90aCB0aGUga2V5IGFuZCB2YWx1ZSwgWFtcImtleVwiXSA9PiBcImtleVwiIGFuZCBYWzBdID0+IFwia2V5b2YgMFwiLlxyXG4gKiBAcGFyYW0gdmFsdWVzIC0gVGhlIHZhbHVlcyB0byBwb3B1bGF0ZSBvbiB0aGUgbmV3IG9iamVjdFxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudW1NYXAodmFsdWVzKSB7XHJcbiAgICB2YXIgbWFwQ2xhc3MgPSB7fTtcclxuICAgIG9iakZvckVhY2hLZXkodmFsdWVzLCBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XHJcbiAgICAgICAgbWFwQ2xhc3NbZmllbGRdID0gZmllbGQ7XHJcbiAgICAgICAgbWFwQ2xhc3NbdmFsdWVdID0gZmllbGQ7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkZWVwRnJlZXplKG1hcENsYXNzKTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIGEgMiBpbmRleCBtYXAgdGhhdCBtYXBzIGFuIGVudW0ncyBrZXkgYW5kIHZhbHVlIHRvIHRoZSBkZWZpbmVkIG1hcCB2YWx1ZSwgWFtcImtleVwiXSA9PiBtYXBWYWx1ZSBhbmQgWFswXSA9PiBtYXBWYWx1ZS5cclxuICogR2VuZXJpYyB2YWx1ZXNcclxuICogLSBFID0gdGhlIGNvbnN0IGVudW0gdHlwZSAodHlwZW9mIGVSZXF1ZXN0SGVhZGVycyk7XHJcbiAqIC0gViA9IElkZW50aWZpZXMgdGhlIHZhbGlkIHZhbHVlcyBmb3IgdGhlIGtleXMsIHRoaXMgc2hvdWxkIGluY2x1ZGUgYm90aCB0aGUgZW51bSBudW1lcmljIGFuZCBzdHJpbmcga2V5IG9mIHRoZSB0eXBlLiBUaGVcclxuICogcmVzdWx0aW5nIFwiVmFsdWVcIiBvZiBlYWNoIGVudHJ5IGlkZW50aWZpZXMgdGhlIHZhbGlkIHZhbHVlcyB3aXRoaW5nIHRoZSBhc3NpZ25tZW50cy5cclxuICogQHBhcmFtIHZhbHVlcyAtIFRoZSB2YWx1ZXMgdG8gcG9wdWxhdGUgb24gdGhlIG5ldyBvYmplY3RcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWYWx1ZU1hcCh2YWx1ZXMpIHtcclxuICAgIHZhciBtYXBDbGFzcyA9IHt9O1xyXG4gICAgb2JqRm9yRWFjaEtleSh2YWx1ZXMsIGZ1bmN0aW9uIChmaWVsZCwgdmFsdWUpIHtcclxuICAgICAgICBtYXBDbGFzc1tmaWVsZF0gPSB2YWx1ZVsxXTtcclxuICAgICAgICBtYXBDbGFzc1t2YWx1ZVswXV0gPSB2YWx1ZVsxXTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRlZXBGcmVlemUobWFwQ2xhc3MpO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudW1IZWxwZXJGdW5jcy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5cInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHsgZ2V0R2xvYmFsLCBzdHJTaGltT2JqZWN0LCBzdHJTaGltUHJvdG90eXBlLCBzdHJTaGltVW5kZWZpbmVkIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0NBTEwsIF9EWU5fSU5ERVhfT0YsIF9EWU5fTEVOR1RILCBfRFlOX05BTUUsIF9EWU5fU1BMSVQsIF9EWU5fVE9fTE9XRVJfQ0FTRSwgX0RZTl9VU0VSX0FHRU5UIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBpc1N0cmluZywgaXNVbmRlZmluZWQsIHN0ckNvbnRhaW5zIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0VNUFRZIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuLyoqXHJcbiAqIFRoaXMgZmlsZSBleGlzdHMgdG8gaG9sZCBlbnZpcm9ubWVudCB1dGlsaXRpZXMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gY2hlY2sgYW5kXHJcbiAqIHZhbGlkYXRlIHRoZSBjdXJyZW50IG9wZXJhdGluZyBlbnZpcm9ubWVudC4gVW5sZXNzIG90aGVyd2lzZSByZXF1aXJlZCwgcGxlYXNlXHJcbiAqIG9ubHkgdXNlIGRlZmluZWQgbWV0aG9kcyAoZnVuY3Rpb25zKSBpbiB0aGlzIGNsYXNzIHNvIHRoYXQgdXNlcnMgb2YgdGhlc2VcclxuICogZnVuY3Rpb25zL3Byb3BlcnRpZXMgb25seSBuZWVkIHRvIGluY2x1ZGUgdGhvc2UgdGhhdCBhcmUgdXNlZCB3aXRoaW4gdGhlaXIgb3duIG1vZHVsZXMuXHJcbiAqL1xyXG52YXIgc3RyV2luZG93ID0gXCJ3aW5kb3dcIjtcclxudmFyIHN0ckRvY3VtZW50ID0gXCJkb2N1bWVudFwiO1xyXG52YXIgc3RyRG9jdW1lbnRNb2RlID0gXCJkb2N1bWVudE1vZGVcIjtcclxudmFyIHN0ck5hdmlnYXRvciA9IFwibmF2aWdhdG9yXCI7XHJcbnZhciBzdHJIaXN0b3J5ID0gXCJoaXN0b3J5XCI7XHJcbnZhciBzdHJMb2NhdGlvbiA9IFwibG9jYXRpb25cIjtcclxudmFyIHN0ckNvbnNvbGUgPSBcImNvbnNvbGVcIjtcclxudmFyIHN0clBlcmZvcm1hbmNlID0gXCJwZXJmb3JtYW5jZVwiO1xyXG52YXIgc3RySlNPTiA9IFwiSlNPTlwiO1xyXG52YXIgc3RyQ3J5cHRvID0gXCJjcnlwdG9cIjtcclxudmFyIHN0ck1zQ3J5cHRvID0gXCJtc0NyeXB0b1wiO1xyXG52YXIgc3RyUmVhY3ROYXRpdmUgPSBcIlJlYWN0TmF0aXZlXCI7XHJcbnZhciBzdHJNc2llID0gXCJtc2llXCI7XHJcbnZhciBzdHJUcmlkZW50ID0gXCJ0cmlkZW50L1wiO1xyXG52YXIgc3RyWE1MSHR0cFJlcXVlc3QgPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XHJcbnZhciBfaXNUcmlkZW50ID0gbnVsbDtcclxudmFyIF9uYXZVc2VyQWdlbnRDaGVjayA9IG51bGw7XHJcbnZhciBfZW5hYmxlTW9ja3MgPSBmYWxzZTtcclxudmFyIF91c2VYRG9tYWluUmVxdWVzdCA9IG51bGw7XHJcbnZhciBfYmVhY29uc1N1cHBvcnRlZCA9IG51bGw7XHJcbmZ1bmN0aW9uIF9oYXNQcm9wZXJ0eSh0aGVDbGFzcywgcHJvcGVydHkpIHtcclxuICAgIHZhciBzdXBwb3J0ZWQgPSBmYWxzZTtcclxuICAgIGlmICh0aGVDbGFzcykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN1cHBvcnRlZCA9IHByb3BlcnR5IGluIHRoZUNsYXNzO1xyXG4gICAgICAgICAgICBpZiAoIXN1cHBvcnRlZCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHByb3RvID0gdGhlQ2xhc3Nbc3RyU2hpbVByb3RvdHlwZV07XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvdG8pIHtcclxuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBwcm9wZXJ0eSBpbiBwcm90bztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBEbyBOb3RoaW5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghc3VwcG9ydGVkKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdG1wID0gbmV3IHRoZUNsYXNzKCk7XHJcbiAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgPSAhaXNVbmRlZmluZWQodG1wW3Byb3BlcnR5XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIERvIE5vdGhpbmdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdXBwb3J0ZWQ7XHJcbn1cclxuLyoqXHJcbiAqIEVuYWJsZSB0aGUgbG9va3VwIG9mIHRlc3QgbW9jayBvYmplY3RzIGlmIHJlcXVlc3RlZFxyXG4gKiBAcGFyYW0gZW5hYmxlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNldEVuYWJsZUVudk1vY2tzKGVuYWJsZWQpIHtcclxuICAgIF9lbmFibGVNb2NrcyA9IGVuYWJsZWQ7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgbmFtZWQgZ2xvYmFsIG9iamVjdCBpZiBhdmFpbGFibGUsIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIG9iamVjdCBpcyBub3QgYXZhaWxhYmxlLlxyXG4gKiBAcGFyYW0gbmFtZSBUaGUgZ2xvYmFsbHkgbmFtZWQgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2xvYmFsSW5zdChuYW1lKSB7XHJcbiAgICB2YXIgZ2JsID0gZ2V0R2xvYmFsKCk7XHJcbiAgICBpZiAoZ2JsICYmIGdibFtuYW1lXSkge1xyXG4gICAgICAgIHJldHVybiBnYmxbbmFtZV07XHJcbiAgICB9XHJcbiAgICAvLyBUZXN0IHdvcmthcm91bmQsIGZvciBlbnZpcm9ubWVudHMgd2hlcmUgPGdsb2JhbD4ud2luZG93ICh3aGVuIGdsb2JhbCA9PSB3aW5kb3cpIGRvZXNuJ3QgcmV0dXJuIHRoZSBiYXNlIHdpbmRvd1xyXG4gICAgaWYgKG5hbWUgPT09IHN0cldpbmRvdyAmJiBoYXNXaW5kb3coKSkge1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW5nbGUtYnJhY2tldC10eXBlLWFzc2VydGlvblxyXG4gICAgICAgIHJldHVybiB3aW5kb3c7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIHdpbmRvdyBvYmplY3QgaXMgYXZhaWxhYmxlLCB0aGlzIGlzIHJlcXVpcmVkIGFzIHdlIHN1cHBvcnQgdGhlIEFQSSBydW5uaW5nIHdpdGhvdXQgYVxyXG4gKiB3aW5kb3cgL2RvY3VtZW50IChlZy4gTm9kZSBzZXJ2ZXIsIGVsZWN0cm9uIHdlYndvcmtlcnMpIGFuZCBpZiB3ZSBhdHRlbXB0IHRvIGFzc2lnbiBhIHdpbmRvd1xyXG4gKiBvYmplY3QgdG8gYSBsb2NhbCB2YXJpYWJsZSBvciBwYXNzIGFzIGFuIGFyZ3VtZW50IGFuIFwiVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHdpbmRvdyBpcyBub3QgZGVmaW5lZFwiXHJcbiAqIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cclxuICogRGVmaW5lZCBhcyBhIGZ1bmN0aW9uIHRvIHN1cHBvcnQgbGF6eSAvIGxhdGUgYmluZGluZyBlbnZpcm9ubWVudHMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGFzV2luZG93KCkge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZW9mIHdpbmRvdyA9PT0gc3RyU2hpbU9iamVjdCAmJiB3aW5kb3cpO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnbG9iYWwgd2luZG93IG9iamVjdCBpZiBpdCBpcyBwcmVzZW50IG90aGVyd2lzZSBudWxsLlxyXG4gKiBUaGlzIGhlbHBlciBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgd2luZG93IG9iamVjdCB3aXRob3V0IGNhdXNpbmcgYW4gZXhjZXB0aW9uXHJcbiAqIFwiVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IHdpbmRvdyBpcyBub3QgZGVmaW5lZFwiXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93KCkge1xyXG4gICAgaWYgKGhhc1dpbmRvdygpKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdztcclxuICAgIH1cclxuICAgIC8vIFJldHVybiB0aGUgZ2xvYmFsIGluc3RhbmNlIG9yIG51bGxcclxuICAgIHJldHVybiBnZXRHbG9iYWxJbnN0KHN0cldpbmRvdyk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyBpZiBkb2N1bWVudCBvYmplY3QgaXMgYXZhaWxhYmxlLCB0aGlzIGlzIHJlcXVpcmVkIGFzIHdlIHN1cHBvcnQgdGhlIEFQSSBydW5uaW5nIHdpdGhvdXQgYVxyXG4gKiB3aW5kb3cgL2RvY3VtZW50IChlZy4gTm9kZSBzZXJ2ZXIsIGVsZWN0cm9uIHdlYndvcmtlcnMpIGFuZCBpZiB3ZSBhdHRlbXB0IHRvIGFzc2lnbiBhIGRvY3VtZW50XHJcbiAqIG9iamVjdCB0byBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhc3MgYXMgYW4gYXJndW1lbnQgYW4gXCJVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogZG9jdW1lbnQgaXMgbm90IGRlZmluZWRcIlxyXG4gKiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uXHJcbiAqIERlZmluZWQgYXMgYSBmdW5jdGlvbiB0byBzdXBwb3J0IGxhenkgLyBsYXRlIGJpbmRpbmcgZW52aXJvbm1lbnRzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc0RvY3VtZW50KCkge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZW9mIGRvY3VtZW50ID09PSBzdHJTaGltT2JqZWN0ICYmIGRvY3VtZW50KTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2xvYmFsIGRvY3VtZW50IG9iamVjdCBpZiBpdCBpcyBwcmVzZW50IG90aGVyd2lzZSBudWxsLlxyXG4gKiBUaGlzIGhlbHBlciBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgZG9jdW1lbnQgb2JqZWN0IHdpdGhvdXQgY2F1c2luZyBhbiBleGNlcHRpb25cclxuICogXCJVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogZG9jdW1lbnQgaXMgbm90IGRlZmluZWRcIlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERvY3VtZW50KCkge1xyXG4gICAgaWYgKGhhc0RvY3VtZW50KCkpIHtcclxuICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0R2xvYmFsSW5zdChzdHJEb2N1bWVudCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyBpZiBuYXZpZ2F0b3Igb2JqZWN0IGlzIGF2YWlsYWJsZSwgdGhpcyBpcyByZXF1aXJlZCBhcyB3ZSBzdXBwb3J0IHRoZSBBUEkgcnVubmluZyB3aXRob3V0IGFcclxuICogd2luZG93IC9kb2N1bWVudCAoZWcuIE5vZGUgc2VydmVyLCBlbGVjdHJvbiB3ZWJ3b3JrZXJzKSBhbmQgaWYgd2UgYXR0ZW1wdCB0byBhc3NpZ24gYSBuYXZpZ2F0b3JcclxuICogb2JqZWN0IHRvIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFzcyBhcyBhbiBhcmd1bWVudCBhbiBcIlVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBuYXZpZ2F0b3IgaXMgbm90IGRlZmluZWRcIlxyXG4gKiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uXHJcbiAqIERlZmluZWQgYXMgYSBmdW5jdGlvbiB0byBzdXBwb3J0IGxhenkgLyBsYXRlIGJpbmRpbmcgZW52aXJvbm1lbnRzLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhhc05hdmlnYXRvcigpIHtcclxuICAgIHJldHVybiBCb29sZWFuKHR5cGVvZiBuYXZpZ2F0b3IgPT09IHN0clNoaW1PYmplY3QgJiYgbmF2aWdhdG9yKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2xvYmFsIG5hdmlnYXRvciBvYmplY3QgaWYgaXQgaXMgcHJlc2VudCBvdGhlcndpc2UgbnVsbC5cclxuICogVGhpcyBoZWxwZXIgaXMgdXNlZCB0byBhY2Nlc3MgdGhlIG5hdmlnYXRvciBvYmplY3Qgd2l0aG91dCBjYXVzaW5nIGFuIGV4Y2VwdGlvblxyXG4gKiBcIlVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBuYXZpZ2F0b3IgaXMgbm90IGRlZmluZWRcIlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdmlnYXRvcigpIHtcclxuICAgIGlmIChoYXNOYXZpZ2F0b3IoKSkge1xyXG4gICAgICAgIHJldHVybiBuYXZpZ2F0b3I7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0R2xvYmFsSW5zdChzdHJOYXZpZ2F0b3IpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3MgaWYgaGlzdG9yeSBvYmplY3QgaXMgYXZhaWxhYmxlLCB0aGlzIGlzIHJlcXVpcmVkIGFzIHdlIHN1cHBvcnQgdGhlIEFQSSBydW5uaW5nIHdpdGhvdXQgYVxyXG4gKiB3aW5kb3cgL2RvY3VtZW50IChlZy4gTm9kZSBzZXJ2ZXIsIGVsZWN0cm9uIHdlYndvcmtlcnMpIGFuZCBpZiB3ZSBhdHRlbXB0IHRvIGFzc2lnbiBhIGhpc3RvcnlcclxuICogb2JqZWN0IHRvIGEgbG9jYWwgdmFyaWFibGUgb3IgcGFzcyBhcyBhbiBhcmd1bWVudCBhbiBcIlVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBoaXN0b3J5IGlzIG5vdCBkZWZpbmVkXCJcclxuICogZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLlxyXG4gKiBEZWZpbmVkIGFzIGEgZnVuY3Rpb24gdG8gc3VwcG9ydCBsYXp5IC8gbGF0ZSBiaW5kaW5nIGVudmlyb25tZW50cy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoYXNIaXN0b3J5KCkge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZW9mIGhpc3RvcnkgPT09IHN0clNoaW1PYmplY3QgJiYgaGlzdG9yeSk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdsb2JhbCBoaXN0b3J5IG9iamVjdCBpZiBpdCBpcyBwcmVzZW50IG90aGVyd2lzZSBudWxsLlxyXG4gKiBUaGlzIGhlbHBlciBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvYmplY3Qgd2l0aG91dCBjYXVzaW5nIGFuIGV4Y2VwdGlvblxyXG4gKiBcIlVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBoaXN0b3J5IGlzIG5vdCBkZWZpbmVkXCJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRIaXN0b3J5KCkge1xyXG4gICAgaWYgKGhhc0hpc3RvcnkoKSkge1xyXG4gICAgICAgIHJldHVybiBoaXN0b3J5O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldEdsb2JhbEluc3Qoc3RySGlzdG9yeSk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIGdsb2JhbCBsb2NhdGlvbiBvYmplY3QgaWYgaXQgaXMgcHJlc2VudCBvdGhlcndpc2UgbnVsbC5cclxuICogVGhpcyBoZWxwZXIgaXMgdXNlZCB0byBhY2Nlc3MgdGhlIGxvY2F0aW9uIG9iamVjdCB3aXRob3V0IGNhdXNpbmcgYW4gZXhjZXB0aW9uXHJcbiAqIFwiVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGxvY2F0aW9uIGlzIG5vdCBkZWZpbmVkXCJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhdGlvbihjaGVja0Zvck1vY2spIHtcclxuICAgIGlmIChjaGVja0Zvck1vY2sgJiYgX2VuYWJsZU1vY2tzKSB7XHJcbiAgICAgICAgdmFyIG1vY2tMb2NhdGlvbiA9IGdldEdsb2JhbEluc3QoXCJfX21vY2tMb2NhdGlvblwiKTtcclxuICAgICAgICBpZiAobW9ja0xvY2F0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2NrTG9jYXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiA9PT0gc3RyU2hpbU9iamVjdCAmJiBsb2NhdGlvbikge1xyXG4gICAgICAgIHJldHVybiBsb2NhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXRHbG9iYWxJbnN0KHN0ckxvY2F0aW9uKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2xvYmFsIGNvbnNvbGUgb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uc29sZSgpIHtcclxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gc3RyU2hpbVVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBjb25zb2xlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldEdsb2JhbEluc3Qoc3RyQ29uc29sZSk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHBlcmZvcm1hbmNlIG9iamVjdCBpZiBpdCBpcyBwcmVzZW50IG90aGVyd2lzZSBudWxsLlxyXG4gKiBUaGlzIGhlbHBlciBpcyB1c2VkIHRvIGFjY2VzcyB0aGUgcGVyZm9ybWFuY2Ugb2JqZWN0IGZyb20gdGhlIGN1cnJlbnRcclxuICogZ2xvYmFsIGluc3RhbmNlIHdoaWNoIGNvdWxkIGJlIHdpbmRvdyBvciBnbG9iYWxUaGlzIGZvciBhIHdlYiB3b3JrZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQZXJmb3JtYW5jZSgpIHtcclxuICAgIHJldHVybiBnZXRHbG9iYWxJbnN0KHN0clBlcmZvcm1hbmNlKTtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIEpTT04gb2JqZWN0IGlzIGF2YWlsYWJsZSwgdGhpcyBpcyByZXF1aXJlZCBhcyB3ZSBzdXBwb3J0IHRoZSBBUEkgcnVubmluZyB3aXRob3V0IGFcclxuICogd2luZG93IC9kb2N1bWVudCAoZWcuIE5vZGUgc2VydmVyLCBlbGVjdHJvbiB3ZWJ3b3JrZXJzKSBhbmQgaWYgd2UgYXR0ZW1wdCB0byBhc3NpZ24gYSBoaXN0b3J5XHJcbiAqIG9iamVjdCB0byBhIGxvY2FsIHZhcmlhYmxlIG9yIHBhc3MgYXMgYW4gYXJndW1lbnQgYW4gXCJVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogSlNPTiBpcyBub3QgZGVmaW5lZFwiXHJcbiAqIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cclxuICogRGVmaW5lZCBhcyBhIGZ1bmN0aW9uIHRvIHN1cHBvcnQgbGF6eSAvIGxhdGUgYmluZGluZyBlbnZpcm9ubWVudHMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaGFzSlNPTigpIHtcclxuICAgIHJldHVybiBCb29sZWFuKCh0eXBlb2YgSlNPTiA9PT0gc3RyU2hpbU9iamVjdCAmJiBKU09OKSB8fCBnZXRHbG9iYWxJbnN0KHN0ckpTT04pICE9PSBudWxsKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB0aGUgZ2xvYmFsIEpTT04gb2JqZWN0IGlmIGl0IGlzIHByZXNlbnQgb3RoZXJ3aXNlIG51bGwuXHJcbiAqIFRoaXMgaGVscGVyIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBKU09OIG9iamVjdCB3aXRob3V0IGNhdXNpbmcgYW4gZXhjZXB0aW9uXHJcbiAqIFwiVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IEpTT04gaXMgbm90IGRlZmluZWRcIlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEpTT04oKSB7XHJcbiAgICBpZiAoaGFzSlNPTigpKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04gfHwgZ2V0R2xvYmFsSW5zdChzdHJKU09OKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBjcnlwdG8gb2JqZWN0IGlmIGl0IGlzIHByZXNlbnQgb3RoZXJ3aXNlIG51bGwuXHJcbiAqIFRoaXMgaGVscGVyIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBjcnlwdG8gb2JqZWN0IGZyb20gdGhlIGN1cnJlbnRcclxuICogZ2xvYmFsIGluc3RhbmNlIHdoaWNoIGNvdWxkIGJlIHdpbmRvdyBvciBnbG9iYWxUaGlzIGZvciBhIHdlYiB3b3JrZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDcnlwdG8oKSB7XHJcbiAgICByZXR1cm4gZ2V0R2xvYmFsSW5zdChzdHJDcnlwdG8pO1xyXG59XHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBjcnlwdG8gb2JqZWN0IGlmIGl0IGlzIHByZXNlbnQgb3RoZXJ3aXNlIG51bGwuXHJcbiAqIFRoaXMgaGVscGVyIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBjcnlwdG8gb2JqZWN0IGZyb20gdGhlIGN1cnJlbnRcclxuICogZ2xvYmFsIGluc3RhbmNlIHdoaWNoIGNvdWxkIGJlIHdpbmRvdyBvciBnbG9iYWxUaGlzIGZvciBhIHdlYiB3b3JrZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRNc0NyeXB0bygpIHtcclxuICAgIHJldHVybiBnZXRHbG9iYWxJbnN0KHN0ck1zQ3J5cHRvKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCBpcyByZXBvcnRpbmcgdGhhdCB3ZSBhcmUgcnVubmluZyBpbiBhIFJlYWN0IE5hdGl2ZSBFbnZpcm9ubWVudFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVhY3ROYXRpdmUoKSB7XHJcbiAgICAvLyBJZiBydW5uaW5nIGluIFJlYWN0IE5hdGl2ZSwgbmF2aWdhdG9yLnByb2R1Y3Qgd2lsbCBiZSBwb3B1bGF0ZWRcclxuICAgIHZhciBuYXYgPSBnZXROYXZpZ2F0b3IoKTtcclxuICAgIGlmIChuYXYgJiYgbmF2LnByb2R1Y3QpIHtcclxuICAgICAgICByZXR1cm4gbmF2LnByb2R1Y3QgPT09IHN0clJlYWN0TmF0aXZlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8qKlxyXG4gKiBJZGVudGlmaWVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQgYXBwZWFycyB0byBiZSBJRVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSUUoKSB7XHJcbiAgICB2YXIgbmF2ID0gZ2V0TmF2aWdhdG9yKCk7XHJcbiAgICBpZiAobmF2ICYmIChuYXZbX0RZTl9VU0VSX0FHRU5UIC8qIEBtaW46JTJldXNlckFnZW50ICovXSAhPT0gX25hdlVzZXJBZ2VudENoZWNrIHx8IF9pc1RyaWRlbnQgPT09IG51bGwpKSB7XHJcbiAgICAgICAgLy8gQWRkZWQgdG8gc3VwcG9ydCB0ZXN0IG1vY2tpbmcgb2YgdGhlIHVzZXIgYWdlbnRcclxuICAgICAgICBfbmF2VXNlckFnZW50Q2hlY2sgPSBuYXZbX0RZTl9VU0VSX0FHRU5UIC8qIEBtaW46JTJldXNlckFnZW50ICovXTtcclxuICAgICAgICB2YXIgdXNlckFnZW50ID0gKF9uYXZVc2VyQWdlbnRDaGVjayB8fCBTVFJfRU1QVFkpW19EWU5fVE9fTE9XRVJfQ0FTRSAvKiBAbWluOiUyZXRvTG93ZXJDYXNlICovXSgpO1xyXG4gICAgICAgIF9pc1RyaWRlbnQgPSAoc3RyQ29udGFpbnModXNlckFnZW50LCBzdHJNc2llKSB8fCBzdHJDb250YWlucyh1c2VyQWdlbnQsIHN0clRyaWRlbnQpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBfaXNUcmlkZW50O1xyXG59XHJcbi8qKlxyXG4gKiBHZXRzIElFIHZlcnNpb24gcmV0dXJuaW5nIHRoZSBkb2N1bWVudCBlbXVsYXRpb24gbW9kZSBpZiB3ZSBhcmUgcnVubmluZyBvbiBJRSwgb3IgbnVsbCBvdGhlcndpc2VcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRJRVZlcnNpb24odXNlckFnZW50U3RyKSB7XHJcbiAgICBpZiAodXNlckFnZW50U3RyID09PSB2b2lkIDApIHsgdXNlckFnZW50U3RyID0gbnVsbDsgfVxyXG4gICAgaWYgKCF1c2VyQWdlbnRTdHIpIHtcclxuICAgICAgICB2YXIgbmF2aWdhdG9yXzEgPSBnZXROYXZpZ2F0b3IoKSB8fCB7fTtcclxuICAgICAgICB1c2VyQWdlbnRTdHIgPSBuYXZpZ2F0b3JfMSA/IChuYXZpZ2F0b3JfMVtfRFlOX1VTRVJfQUdFTlQgLyogQG1pbjolMmV1c2VyQWdlbnQgKi9dIHx8IFNUUl9FTVBUWSlbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCkgOiBTVFJfRU1QVFk7XHJcbiAgICB9XHJcbiAgICB2YXIgdWEgPSAodXNlckFnZW50U3RyIHx8IFNUUl9FTVBUWSlbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICAvLyBBbHNvIGNoZWNrIGZvciBkb2N1bWVudE1vZGUgaW4gY2FzZSBYLVVBLUNvbXBhdGlibGUgbWV0YSB0YWcgd2FzIGluY2x1ZGVkIGluIEhUTUwuXHJcbiAgICBpZiAoc3RyQ29udGFpbnModWEsIHN0ck1zaWUpKSB7XHJcbiAgICAgICAgdmFyIGRvYyA9IGdldERvY3VtZW50KCkgfHwge307XHJcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KHBhcnNlSW50KHVhW19EWU5fU1BMSVQgLyogQG1pbjolMmVzcGxpdCAqL10oc3RyTXNpZSlbMV0pLCAoZG9jW3N0ckRvY3VtZW50TW9kZV0gfHwgMCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc3RyQ29udGFpbnModWEsIHN0clRyaWRlbnQpKSB7XHJcbiAgICAgICAgdmFyIHRyaWRlbnRWZXIgPSBwYXJzZUludCh1YVtfRFlOX1NQTElUIC8qIEBtaW46JTJlc3BsaXQgKi9dKHN0clRyaWRlbnQpWzFdKTtcclxuICAgICAgICBpZiAodHJpZGVudFZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJpZGVudFZlciArIDQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybnMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdCBzdWl0YWJsZSBmb3IgZGlhZ25vc3RpY3MgbG9nZ2luZy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkdW1wT2JqKG9iamVjdCkge1xyXG4gICAgdmFyIG9iamVjdFR5cGVEdW1wID0gT2JqZWN0W3N0clNoaW1Qcm90b3R5cGVdLnRvU3RyaW5nW19EWU5fQ0FMTCAvKiBAbWluOiUyZWNhbGwgKi9dKG9iamVjdCk7XHJcbiAgICB2YXIgcHJvcGVydHlWYWx1ZUR1bXAgPSBTVFJfRU1QVFk7XHJcbiAgICBpZiAob2JqZWN0VHlwZUR1bXAgPT09IFwiW29iamVjdCBFcnJvcl1cIikge1xyXG4gICAgICAgIHByb3BlcnR5VmFsdWVEdW1wID0gXCJ7IHN0YWNrOiAnXCIgKyBvYmplY3Quc3RhY2sgKyBcIicsIG1lc3NhZ2U6ICdcIiArIG9iamVjdC5tZXNzYWdlICsgXCInLCBuYW1lOiAnXCIgKyBvYmplY3RbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gKyBcIidcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGhhc0pTT04oKSkge1xyXG4gICAgICAgIHByb3BlcnR5VmFsdWVEdW1wID0gZ2V0SlNPTigpLnN0cmluZ2lmeShvYmplY3QpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iamVjdFR5cGVEdW1wICsgcHJvcGVydHlWYWx1ZUR1bXA7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmYXJpKHVzZXJBZ2VudFN0cikge1xyXG4gICAgaWYgKCF1c2VyQWdlbnRTdHIgfHwgIWlzU3RyaW5nKHVzZXJBZ2VudFN0cikpIHtcclxuICAgICAgICB2YXIgbmF2aWdhdG9yXzIgPSBnZXROYXZpZ2F0b3IoKSB8fCB7fTtcclxuICAgICAgICB1c2VyQWdlbnRTdHIgPSBuYXZpZ2F0b3JfMiA/IChuYXZpZ2F0b3JfMltfRFlOX1VTRVJfQUdFTlQgLyogQG1pbjolMmV1c2VyQWdlbnQgKi9dIHx8IFNUUl9FTVBUWSlbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCkgOiBTVFJfRU1QVFk7XHJcbiAgICB9XHJcbiAgICB2YXIgdWEgPSAodXNlckFnZW50U3RyIHx8IFNUUl9FTVBUWSlbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICByZXR1cm4gKHVhW19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShcInNhZmFyaVwiKSA+PSAwKTtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIEhUTUw1IEJlYWNvbnMgYXJlIHN1cHBvcnRlZCBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICogQHJldHVybnMgVHJ1ZSBpZiBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc0JlYWNvbnNTdXBwb3J0ZWQoKSB7XHJcbiAgICBpZiAoX2JlYWNvbnNTdXBwb3J0ZWQgPT09IG51bGwpIHtcclxuICAgICAgICBfYmVhY29uc1N1cHBvcnRlZCA9IGhhc05hdmlnYXRvcigpICYmIEJvb2xlYW4oZ2V0TmF2aWdhdG9yKCkuc2VuZEJlYWNvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX2JlYWNvbnNTdXBwb3J0ZWQ7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrcyBpZiB0aGUgRmV0Y2ggQVBJIGlzIHN1cHBvcnRlZCBpbiB0aGUgY3VycmVudCBlbnZpcm9ubWVudC5cclxuICogQHBhcmFtIHdpdGhLZWVwQWxpdmUgLSBbT3B0aW9uYWxdIElmIFRydWUsIGNoZWNrIGlmIGZldGNoIGlzIGF2YWlsYWJsZSBhbmQgaXQgc3VwcG9ydHMgdGhlIGtlZXBhbGl2ZSBmZWF0dXJlLCBvdGhlcndpc2Ugb25seSBjaGVjayBpZiBmZXRjaCBpcyBzdXBwb3J0ZWRcclxuICogQHJldHVybnMgVHJ1ZSBpZiBzdXBwb3J0ZWQsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzRmV0Y2hTdXBwb3J0ZWQod2l0aEtlZXBBbGl2ZSkge1xyXG4gICAgdmFyIGlzU3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlzU3VwcG9ydGVkID0gISFnZXRHbG9iYWxJbnN0KFwiZmV0Y2hcIik7XHJcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBnZXRHbG9iYWxJbnN0KFwiUmVxdWVzdFwiKTtcclxuICAgICAgICBpZiAoaXNTdXBwb3J0ZWQgJiYgd2l0aEtlZXBBbGl2ZSAmJiByZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gX2hhc1Byb3BlcnR5KHJlcXVlc3QsIFwia2VlcGFsaXZlXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gSnVzdCBTd2FsbG93IGFueSBmYWlsdXJlIGR1cmluZyBhdmFpbGFiaWxpdHkgY2hlY2tzXHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHVzZVhEb21haW5SZXF1ZXN0KCkge1xyXG4gICAgaWYgKF91c2VYRG9tYWluUmVxdWVzdCA9PT0gbnVsbCkge1xyXG4gICAgICAgIF91c2VYRG9tYWluUmVxdWVzdCA9ICh0eXBlb2YgWERvbWFpblJlcXVlc3QgIT09IHN0clNoaW1VbmRlZmluZWQpO1xyXG4gICAgICAgIGlmIChfdXNlWERvbWFpblJlcXVlc3QgJiYgaXNYaHJTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgICAgICBfdXNlWERvbWFpblJlcXVlc3QgPSBfdXNlWERvbWFpblJlcXVlc3QgJiYgIV9oYXNQcm9wZXJ0eShnZXRHbG9iYWxJbnN0KHN0clhNTEh0dHBSZXF1ZXN0KSwgXCJ3aXRoQ3JlZGVudGlhbHNcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIF91c2VYRG9tYWluUmVxdWVzdDtcclxufVxyXG4vKipcclxuICogQ2hlY2tzIGlmIFhNTEh0dHBSZXF1ZXN0IGlzIHN1cHBvcnRlZFxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHN1cHBvcnRlZCwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNYaHJTdXBwb3J0ZWQoKSB7XHJcbiAgICB2YXIgaXNTdXBwb3J0ZWQgPSBmYWxzZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgdmFyIHhtbEh0dHBSZXF1ZXN0ID0gZ2V0R2xvYmFsSW5zdChzdHJYTUxIdHRwUmVxdWVzdCk7XHJcbiAgICAgICAgaXNTdXBwb3J0ZWQgPSAhIXhtbEh0dHBSZXF1ZXN0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBKdXN0IFN3YWxsb3cgYW55IGZhaWx1cmUgZHVyaW5nIGF2YWlsYWJpbGl0eSBjaGVja3NcclxuICAgIH1cclxuICAgIHJldHVybiBpc1N1cHBvcnRlZDtcclxufVxyXG5mdW5jdGlvbiBfZ2V0TmFtZWRWYWx1ZSh2YWx1ZXMsIG5hbWUpIHtcclxuICAgIGlmICh2YWx1ZXMpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB2YWx1ZXNbaV07XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dID09PSBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHt9O1xyXG59XHJcbi8qKlxyXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmV0Y2ggdGhlIG5hbWVkIG1ldGEtdGFnIGZyb20gdGhlIHBhZ2UuXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZmluZE1ldGFUYWcobmFtZSkge1xyXG4gICAgdmFyIGRvYyA9IGdldERvY3VtZW50KCk7XHJcbiAgICBpZiAoZG9jICYmIG5hbWUpIHtcclxuICAgICAgICAvLyBMb29rIGZvciBhIG1ldGEtdGFnXHJcbiAgICAgICAgcmV0dXJuIF9nZXROYW1lZFZhbHVlKGRvYy5xdWVyeVNlbGVjdG9yQWxsKFwibWV0YVwiKSwgbmFtZSkuY29udGVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmV0Y2ggdGhlIG5hbWVkIHNlcnZlciB0aW1pbmcgdmFsdWUgZnJvbSB0aGUgcGFnZSByZXNwb25zZSAoZmlyc3QgbmF2aWdhdGlvbiBldmVudCkuXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZmluZE5hbWVkU2VydmVyVGltaW5nKG5hbWUpIHtcclxuICAgIHZhciB2YWx1ZTtcclxuICAgIHZhciBwZXJmID0gZ2V0UGVyZm9ybWFuY2UoKTtcclxuICAgIGlmIChwZXJmKSB7XHJcbiAgICAgICAgLy8gVHJ5IGxvb2tpbmcgZm9yIGEgc2VydmVyLXRpbWluZyBoZWFkZXJcclxuICAgICAgICB2YXIgbmF2UGVyZiA9IHBlcmYuZ2V0RW50cmllc0J5VHlwZShcIm5hdmlnYXRpb25cIikgfHwgW107XHJcbiAgICAgICAgdmFsdWUgPSBfZ2V0TmFtZWRWYWx1ZSgobmF2UGVyZltfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwID8gbmF2UGVyZlswXSA6IHt9KS5zZXJ2ZXJUaW1pbmcsIG5hbWUpLmRlc2NyaXB0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudlV0aWxzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IF9EWU5fQVBQTFksIF9EWU5fTEVOR1RIIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBnZXRHbG9iYWxJbnN0IH0gZnJvbSBcIi4vRW52VXRpbHNcIjtcclxudmFyIGxpc3RlbmVyRnVuY3MgPSBbXCJldmVudHNTZW50XCIsIFwiZXZlbnRzRGlzY2FyZGVkXCIsIFwiZXZlbnRzU2VuZFJlcXVlc3RcIiwgXCJwZXJmRXZlbnRcIl07XHJcbnZhciBfYWlOYW1lc3BhY2UgPSBudWxsO1xyXG52YXIgX2RlYnVnTGlzdGVuZXI7XHJcbmZ1bmN0aW9uIF9saXN0ZW5lclByb3h5RnVuYyhuYW1lLCBjb25maWcpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XHJcbiAgICAgICAgdmFyIGRiZ0V4dCA9IGdldERlYnVnRXh0KGNvbmZpZyk7XHJcbiAgICAgICAgaWYgKGRiZ0V4dCkge1xyXG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBkYmdFeHQubGlzdGVuZXI7XHJcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lcltuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgbGlzdGVuZXJbbmFtZV1bX0RZTl9BUFBMWSAvKiBAbWluOiUyZWFwcGx5ICovXShsaXN0ZW5lciwgYXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRFeHRlbnNpb25OYW1lc3BhY2UoKSB7XHJcbiAgICAvLyBDYWNoZSB0aGUgbG9va3VwIG9mIHRoZSBnbG9iYWwgbmFtZXNwYWNlIG9iamVjdFxyXG4gICAgdmFyIHRhcmdldCA9IGdldEdsb2JhbEluc3QoXCJNaWNyb3NvZnRcIik7XHJcbiAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgX2FpTmFtZXNwYWNlID0gdGFyZ2V0W1wiQXBwbGljYXRpb25JbnNpZ2h0c1wiXTtcclxuICAgIH1cclxuICAgIHJldHVybiBfYWlOYW1lc3BhY2U7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnRXh0KGNvbmZpZykge1xyXG4gICAgdmFyIG5zID0gX2FpTmFtZXNwYWNlO1xyXG4gICAgaWYgKCFucyAmJiBjb25maWcuZGlzYWJsZURiZ0V4dCAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIG5zID0gX2FpTmFtZXNwYWNlIHx8IF9nZXRFeHRlbnNpb25OYW1lc3BhY2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBucyA/IG5zW1wiQ2hyb21lRGJnRXh0XCJdIDogbnVsbDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdMaXN0ZW5lcihjb25maWcpIHtcclxuICAgIGlmICghX2RlYnVnTGlzdGVuZXIpIHtcclxuICAgICAgICBfZGVidWdMaXN0ZW5lciA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIGxwID0gMDsgbHAgPCBsaXN0ZW5lckZ1bmNzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTsgbHArKykge1xyXG4gICAgICAgICAgICBfZGVidWdMaXN0ZW5lcltsaXN0ZW5lckZ1bmNzW2xwXV0gPSBfbGlzdGVuZXJQcm94eUZ1bmMobGlzdGVuZXJGdW5jc1tscF0sIGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9kZWJ1Z0xpc3RlbmVyO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURiZ0V4dGVuc2lvblV0aWxzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0RJQUdfTE9HLCBfRFlOX0VOQUJMRV9ERUJVR19FWENFUFRJNCwgX0RZTl9MT0dHRVIsIF9EWU5fTE9HX0lOVEVSTkFMX01FU1NBR0UsIF9EWU5fTUVTU0FHRSwgX0RZTl9NRVNTQUdFX0lELCBfRFlOX1BVU0gsIF9EWU5fUkVQTEFDRSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2V0RGVidWdFeHQgfSBmcm9tIFwiLi9EYmdFeHRlbnNpb25VdGlsc1wiO1xyXG5pbXBvcnQgeyBkdW1wT2JqLCBnZXRDb25zb2xlLCBnZXRKU09OLCBoYXNKU09OIH0gZnJvbSBcIi4vRW52VXRpbHNcIjtcclxuaW1wb3J0IHsgZ2V0Q2ZnVmFsdWUsIGlzRnVuY3Rpb24sIGlzVW5kZWZpbmVkIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0VNUFRZLCBTVFJfRVJST1JfVE9fQ09OU09MRSwgU1RSX1dBUk5fVE9fQ09OU09MRSB9IGZyb20gXCIuL0ludGVybmFsQ29uc3RhbnRzXCI7XHJcbi8qKlxyXG4gKiBGb3IgdXNlciBub24gYWN0aW9uYWJsZSB0cmFjZXMgdXNlIEFJIEludGVybmFsIHByZWZpeC5cclxuICovXHJcbnZhciBBaU5vblVzZXJBY3Rpb25hYmxlUHJlZml4ID0gXCJBSSAoSW50ZXJuYWwpOiBcIjtcclxuLyoqXHJcbiAqIFByZWZpeCBvZiB0aGUgdHJhY2VzIGluIHBvcnRhbC5cclxuICovXHJcbnZhciBBaVVzZXJBY3Rpb25hYmxlUHJlZml4ID0gXCJBSTogXCI7XHJcbi8qKlxyXG4gKiAgU2Vzc2lvbiBzdG9yYWdlIGtleSBmb3IgdGhlIHByZWZpeCBmb3IgdGhlIGtleSBpbmRpY2F0aW5nIG1lc3NhZ2UgdHlwZSBhbHJlYWR5IGxvZ2dlZFxyXG4gKi9cclxudmFyIEFJSW50ZXJuYWxNZXNzYWdlUHJlZml4ID0gXCJBSVRSX1wiO1xyXG5mdW5jdGlvbiBfc2FuaXRpemVEaWFnbm9zdGljVGV4dCh0ZXh0KSB7XHJcbiAgICBpZiAodGV4dCkge1xyXG4gICAgICAgIHJldHVybiBcIlxcXCJcIiArIHRleHRbX0RZTl9SRVBMQUNFIC8qIEBtaW46JTJlcmVwbGFjZSAqL10oL1xcXCIvZywgU1RSX0VNUFRZKSArIFwiXFxcIlwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNUUl9FTVBUWTtcclxufVxyXG5mdW5jdGlvbiBfbG9nVG9Db25zb2xlKGZ1bmMsIG1lc3NhZ2UpIHtcclxuICAgIHZhciB0aGVDb25zb2xlID0gZ2V0Q29uc29sZSgpO1xyXG4gICAgaWYgKCEhdGhlQ29uc29sZSkge1xyXG4gICAgICAgIHZhciBsb2dGdW5jID0gXCJsb2dcIjtcclxuICAgICAgICBpZiAodGhlQ29uc29sZVtmdW5jXSkge1xyXG4gICAgICAgICAgICBsb2dGdW5jID0gZnVuYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhlQ29uc29sZVtsb2dGdW5jXSkpIHtcclxuICAgICAgICAgICAgdGhlQ29uc29sZVtsb2dGdW5jXShtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxudmFyIF9JbnRlcm5hbExvZ01lc3NhZ2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBfSW50ZXJuYWxMb2dNZXNzYWdlKG1zZ0lkLCBtc2csIGlzVXNlckFjdCwgcHJvcGVydGllcykge1xyXG4gICAgICAgIGlmIChpc1VzZXJBY3QgPT09IHZvaWQgMCkgeyBpc1VzZXJBY3QgPSBmYWxzZTsgfVxyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9NRVNTQUdFX0lEIC8qIEBtaW46JTJlbWVzc2FnZUlkICovXSA9IG1zZ0lkO1xyXG4gICAgICAgIF9zZWxmW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dID1cclxuICAgICAgICAgICAgKGlzVXNlckFjdCA/IEFpVXNlckFjdGlvbmFibGVQcmVmaXggOiBBaU5vblVzZXJBY3Rpb25hYmxlUHJlZml4KSArXHJcbiAgICAgICAgICAgICAgICBtc2dJZDtcclxuICAgICAgICB2YXIgc3RyUHJvcHMgPSBTVFJfRU1QVFk7XHJcbiAgICAgICAgaWYgKGhhc0pTT04oKSkge1xyXG4gICAgICAgICAgICBzdHJQcm9wcyA9IGdldEpTT04oKS5zdHJpbmdpZnkocHJvcGVydGllcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBkaWFnbm9zdGljVGV4dCA9IChtc2cgPyBcIiBtZXNzYWdlOlwiICsgX3Nhbml0aXplRGlhZ25vc3RpY1RleHQobXNnKSA6IFNUUl9FTVBUWSkgK1xyXG4gICAgICAgICAgICAocHJvcGVydGllcyA/IFwiIHByb3BzOlwiICsgX3Nhbml0aXplRGlhZ25vc3RpY1RleHQoc3RyUHJvcHMpIDogU1RSX0VNUFRZKTtcclxuICAgICAgICBfc2VsZltfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXSArPSBkaWFnbm9zdGljVGV4dDtcclxuICAgIH1cclxuICAgIF9JbnRlcm5hbExvZ01lc3NhZ2UuZGF0YVR5cGUgPSBcIk1lc3NhZ2VEYXRhXCI7XHJcbiAgICByZXR1cm4gX0ludGVybmFsTG9nTWVzc2FnZTtcclxufSgpKTtcclxuZXhwb3J0IHsgX0ludGVybmFsTG9nTWVzc2FnZSB9O1xyXG5leHBvcnQgZnVuY3Rpb24gc2FmZUdldExvZ2dlcihjb3JlLCBjb25maWcpIHtcclxuICAgIHJldHVybiAoY29yZSB8fCB7fSlbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dIHx8IG5ldyBEaWFnbm9zdGljTG9nZ2VyKGNvbmZpZyk7XHJcbn1cclxudmFyIERpYWdub3N0aWNMb2dnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBEaWFnbm9zdGljTG9nZ2VyKGNvbmZpZykge1xyXG4gICAgICAgIHRoaXMuaWRlbnRpZmllciA9IFwiRGlhZ25vc3RpY0xvZ2dlclwiO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoZSBpbnRlcm5hbCBsb2dnaW5nIHF1ZXVlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5xdWV1ZSA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENvdW50IG9mIGludGVybmFsIG1lc3NhZ2VzIHNlbnRcclxuICAgICAgICAgKi9cclxuICAgICAgICB2YXIgX21lc3NhZ2VDb3VudCA9IDA7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBtZXNzYWdlIHR5cGVzIHdlcmUgYWxyZWFkeSBsb2dnZWQgdG8gY29uc29sZSBvciBzZW50IHRvIHNlcnZlci5cclxuICAgICAgICAgKi9cclxuICAgICAgICB2YXIgX21lc3NhZ2VMb2dnZWQgPSB7fTtcclxuICAgICAgICB2YXIgX2xvZ2dpbmdMZXZlbENvbnNvbGU7XHJcbiAgICAgICAgdmFyIF9sb2dnaW5nTGV2ZWxUZWxlbWV0cnk7XHJcbiAgICAgICAgdmFyIF9tYXhJbnRlcm5hbE1lc3NhZ2VMaW1pdDtcclxuICAgICAgICB2YXIgX2VuYWJsZURlYnVnRXhjZXB0aW9ucztcclxuICAgICAgICBkeW5hbWljUHJvdG8oRGlhZ25vc3RpY0xvZ2dlciwgdGhpcywgZnVuY3Rpb24gKF9zZWxmKSB7XHJcbiAgICAgICAgICAgIF9zZXREZWZhdWx0c0Zyb21Db25maWcoY29uZmlnIHx8IHt9KTtcclxuICAgICAgICAgICAgX3NlbGYuY29uc29sZUxvZ2dpbmdMZXZlbCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9sb2dnaW5nTGV2ZWxDb25zb2xlOyB9O1xyXG4gICAgICAgICAgICBfc2VsZi50ZWxlbWV0cnlMb2dnaW5nTGV2ZWwgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfbG9nZ2luZ0xldmVsVGVsZW1ldHJ5OyB9O1xyXG4gICAgICAgICAgICBfc2VsZi5tYXhJbnRlcm5hbE1lc3NhZ2VMaW1pdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9tYXhJbnRlcm5hbE1lc3NhZ2VMaW1pdDsgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9FTkFCTEVfREVCVUdfRVhDRVBUSTQgLyogQG1pbjolMmVlbmFibGVEZWJ1Z0V4Y2VwdGlvbnMgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX2VuYWJsZURlYnVnRXhjZXB0aW9uczsgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgZXhjZXB0aW9ucyBpbiBkZWJ1ZyBtb2RlIG9yIGF0dGVtcHQgdG8gbG9nIHRoZSBlcnJvciBhcyBhIGNvbnNvbGUgd2FybmluZy5cclxuICAgICAgICAgICAgICogQHBhcmFtIHNldmVyaXR5IHtMb2dnaW5nU2V2ZXJpdHl9IC0gVGhlIHNldmVyaXR5IG9mIHRoZSBsb2cgbWVzc2FnZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gbWVzc2FnZSB7X0ludGVybmFsTG9nTWVzc2FnZX0gLSBUaGUgbG9nIG1lc3NhZ2UuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi50aHJvd0ludGVybmFsID0gZnVuY3Rpb24gKHNldmVyaXR5LCBtc2dJZCwgbXNnLCBwcm9wZXJ0aWVzLCBpc1VzZXJBY3QpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc1VzZXJBY3QgPT09IHZvaWQgMCkgeyBpc1VzZXJBY3QgPSBmYWxzZTsgfVxyXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBuZXcgX0ludGVybmFsTG9nTWVzc2FnZShtc2dJZCwgbXNnLCBpc1VzZXJBY3QsIHByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9lbmFibGVEZWJ1Z0V4Y2VwdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBkdW1wT2JqKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBsb2dnaW5nIGZ1bmN0aW9uIGFuZCBmYWxsYmFjayB0byB3YXJuVG9Db25zb2xlIG9mIGZvciBzb21lIHJlYXNvbiBlcnJvclRvQ29uc29sZSBkb2Vzbid0IGV4aXN0XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxvZ0Z1bmMgPSBzZXZlcml0eSA9PT0gMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovID8gU1RSX0VSUk9SX1RPX0NPTlNPTEUgOiBTVFJfV0FSTl9UT19DT05TT0xFO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQobWVzc2FnZVtfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVXNlckFjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBtZXNzYWdlIHR5cGUgd2FzIGFscmVhZHkgbG9nZ2VkIHRvIGNvbnNvbGUgZm9yIHRoaXMgcGFnZSB2aWV3IGFuZCBpZiBzbywgZG9uJ3QgbG9nIGl0IGFnYWluXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZUtleSA9ICttZXNzYWdlW19EWU5fTUVTU0FHRV9JRCAvKiBAbWluOiUyZW1lc3NhZ2VJZCAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9tZXNzYWdlTG9nZ2VkW21lc3NhZ2VLZXldICYmIF9sb2dnaW5nTGV2ZWxDb25zb2xlID49IHNldmVyaXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGZbbG9nRnVuY10obWVzc2FnZVtfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21lc3NhZ2VMb2dnZWRbbWVzc2FnZUtleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBsb2cgdHJhY2VzIGlmIHRoZSBjb25zb2xlIExvZ2dpbmcgTGV2ZWwgaXMgPj0gdGhlIHRocm93SW50ZXJuYWwgc2V2ZXJpdHkgbGV2ZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbG9nZ2luZ0xldmVsQ29uc29sZSA+PSBzZXZlcml0eSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW2xvZ0Z1bmNdKG1lc3NhZ2VbX0RZTl9NRVNTQUdFIC8qIEBtaW46JTJlbWVzc2FnZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9sb2dJbnRlcm5hbE1lc3NhZ2Uoc2V2ZXJpdHksIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2RlYnVnRXh0TXNnKFwidGhyb3dcIiArIChzZXZlcml0eSA9PT0gMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovID8gXCJDcml0aWNhbFwiIDogXCJXYXJuaW5nXCIpLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBUaGlzIHdpbGwgd3JpdGUgYSB3YXJuaW5nIHRvIHRoZSBjb25zb2xlIGlmIHBvc3NpYmxlXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9IC0gVGhlIHdhcm5pbmcgbWVzc2FnZVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbU1RSX1dBUk5fVE9fQ09OU09MRSAvKiBAbWluOiUyZXdhcm5Ub0NvbnNvbGUgKi9dID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIF9sb2dUb0NvbnNvbGUoXCJ3YXJuXCIsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgX2RlYnVnRXh0TXNnKFwid2FybmluZ1wiLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFRoaXMgd2lsbCB3cml0ZSBhbiBlcnJvciB0byB0aGUgY29uc29sZSBpZiBwb3NzaWJsZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gbWVzc2FnZSB7c3RyaW5nfSAtIFRoZSBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltTVFJfRVJST1JfVE9fQ09OU09MRSAvKiBAbWluOiUyZWVycm9yVG9Db25zb2xlICovXSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBfbG9nVG9Db25zb2xlKFwiZXJyb3JcIiwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICBfZGVidWdFeHRNc2coXCJlcnJvclwiLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFJlc2V0cyB0aGUgaW50ZXJuYWwgbWVzc2FnZSBjb3VudFxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGYucmVzZXRJbnRlcm5hbE1lc3NhZ2VDb3VudCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIF9tZXNzYWdlQ291bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgX21lc3NhZ2VMb2dnZWQgPSB7fTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIExvZ3MgYSBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBxdWV1ZS5cclxuICAgICAgICAgICAgICogQHBhcmFtIHNldmVyaXR5IHtMb2dnaW5nU2V2ZXJpdHl9IC0gVGhlIHNldmVyaXR5IG9mIHRoZSBsb2cgbWVzc2FnZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gbWVzc2FnZSB7X0ludGVybmFsTG9nTWVzc2FnZX0gLSBUaGUgbWVzc2FnZSB0byBsb2cuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0xPR19JTlRFUk5BTF9NRVNTQUdFIC8qIEBtaW46JTJlbG9nSW50ZXJuYWxNZXNzYWdlICovXSA9IF9sb2dJbnRlcm5hbE1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9sb2dJbnRlcm5hbE1lc3NhZ2Uoc2V2ZXJpdHksIG1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfYXJlSW50ZXJuYWxNZXNzYWdlc1Rocm90dGxlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyBtZXNzYWdlIHR5cGUgd2FzIGFscmVhZHkgbG9nZ2VkIGZvciB0aGlzIHNlc3Npb24gYW5kIGlmIHNvLCBkb24ndCBsb2cgaXQgYWdhaW5cclxuICAgICAgICAgICAgICAgIHZhciBsb2dNZXNzYWdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlS2V5ID0gQUlJbnRlcm5hbE1lc3NhZ2VQcmVmaXggKyBtZXNzYWdlW19EWU5fTUVTU0FHRV9JRCAvKiBAbWluOiUyZW1lc3NhZ2VJZCAqL107XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc2Vzc2lvbiBzdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUsIGxpbWl0IHRvIG9ubHkgb25lIG1lc3NhZ2UgdHlwZSBwZXIgcGFnZSB2aWV3XHJcbiAgICAgICAgICAgICAgICBpZiAoX21lc3NhZ2VMb2dnZWRbbWVzc2FnZUtleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dNZXNzYWdlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBfbWVzc2FnZUxvZ2dlZFttZXNzYWdlS2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobG9nTWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFB1c2ggdGhlIGV2ZW50IGluIHRoZSBpbnRlcm5hbCBxdWV1ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZXZlcml0eSA8PSBfbG9nZ2luZ0xldmVsVGVsZW1ldHJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLnF1ZXVlW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfbWVzc2FnZUNvdW50Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWJ1Z0V4dE1zZygoc2V2ZXJpdHkgPT09IDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLyA/IFwiZXJyb3JcIiA6IFwid2FyblwiKSwgbWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhyb3R0bGUgbGltaXQgcmVhY2hlZCwgc2VuZCBhIHNwZWNpYWwgZXZlbnRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX21lc3NhZ2VDb3VudCA9PT0gX21heEludGVybmFsTWVzc2FnZUxpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aHJvdHRsZUxpbWl0TWVzc2FnZSA9IFwiSW50ZXJuYWwgZXZlbnRzIHRocm90dGxlIGxpbWl0IHBlciBQYWdlVmlldyByZWFjaGVkIGZvciB0aGlzIGFwcC5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRocm90dGxlTWVzc2FnZSA9IG5ldyBfSW50ZXJuYWxMb2dNZXNzYWdlKDIzIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuTWVzc2FnZUxpbWl0UGVyUFZFeGNlZWRlZCAqLywgdGhyb3R0bGVMaW1pdE1lc3NhZ2UsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYucXVldWVbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10odGhyb3R0bGVNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldmVyaXR5ID09PSAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW1NUUl9FUlJPUl9UT19DT05TT0xFIC8qIEBtaW46JTJlZXJyb3JUb0NvbnNvbGUgKi9dKHRocm90dGxlTGltaXRNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW1NUUl9XQVJOX1RPX0NPTlNPTEUgLyogQG1pbjolMmV3YXJuVG9Db25zb2xlICovXSh0aHJvdHRsZUxpbWl0TWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3NldERlZmF1bHRzRnJvbUNvbmZpZyhjb25maWcpIHtcclxuICAgICAgICAgICAgICAgIF9sb2dnaW5nTGV2ZWxDb25zb2xlID0gZ2V0Q2ZnVmFsdWUoY29uZmlnLmxvZ2dpbmdMZXZlbENvbnNvbGUsIDApO1xyXG4gICAgICAgICAgICAgICAgX2xvZ2dpbmdMZXZlbFRlbGVtZXRyeSA9IGdldENmZ1ZhbHVlKGNvbmZpZy5sb2dnaW5nTGV2ZWxUZWxlbWV0cnksIDEpO1xyXG4gICAgICAgICAgICAgICAgX21heEludGVybmFsTWVzc2FnZUxpbWl0ID0gZ2V0Q2ZnVmFsdWUoY29uZmlnLm1heE1lc3NhZ2VMaW1pdCwgMjUpO1xyXG4gICAgICAgICAgICAgICAgX2VuYWJsZURlYnVnRXhjZXB0aW9ucyA9IGdldENmZ1ZhbHVlKGNvbmZpZ1tfRFlOX0VOQUJMRV9ERUJVR19FWENFUFRJNCAvKiBAbWluOiUyZWVuYWJsZURlYnVnRXhjZXB0aW9ucyAqL10sIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfYXJlSW50ZXJuYWxNZXNzYWdlc1Rocm90dGxlZCgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfbWVzc2FnZUNvdW50ID49IF9tYXhJbnRlcm5hbE1lc3NhZ2VMaW1pdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZGVidWdFeHRNc2cobmFtZSwgZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRiZ0V4dCA9IGdldERlYnVnRXh0KGNvbmZpZyB8fCB7fSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGJnRXh0ICYmIGRiZ0V4dFtfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICBkYmdFeHRbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKG5hbWUsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgRGlhZ25vc3RpY0xvZ2dlci5wcm90b3R5cGUuZW5hYmxlRGVidWdFeGNlcHRpb25zLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIERpYWdub3N0aWNMb2dnZXIucHJvdG90eXBlLmNvbnNvbGVMb2dnaW5nTGV2ZWwuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgRGlhZ25vc3RpY0xvZ2dlci5wcm90b3R5cGUudGVsZW1ldHJ5TG9nZ2luZ0xldmVsLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIERpYWdub3N0aWNMb2dnZXIucHJvdG90eXBlLm1heEludGVybmFsTWVzc2FnZUxpbWl0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIERpYWdub3N0aWNMb2dnZXIucHJvdG90eXBlLnRocm93SW50ZXJuYWwuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgRGlhZ25vc3RpY0xvZ2dlci5wcm90b3R5cGUud2FyblRvQ29uc29sZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBEaWFnbm9zdGljTG9nZ2VyLnByb3RvdHlwZS5lcnJvclRvQ29uc29sZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBEaWFnbm9zdGljTG9nZ2VyLnByb3RvdHlwZS5yZXNldEludGVybmFsTWVzc2FnZUNvdW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIERpYWdub3N0aWNMb2dnZXIucHJvdG90eXBlLmxvZ0ludGVybmFsTWVzc2FnZS5cclxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBJRTggYnVnIHdoZW4gdXNpbmcgZHluYW1pY1Byb3RvKCkgd2l0aCBjbGFzc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhbnlcbiAgICAvLyBub24tZHluYW1pYyBmdW5jdGlvbnMgb3Igc3RhdGljIHByb3BlcnRpZXMvZnVuY3Rpb25zIHdoZW4gdXNpbmcgdWdsaWZ5LWpzIHRvIG1pbmlmeSB0aGUgcmVzdWx0aW5nIGNvZGUuXG4gICAgLy8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiBFUzMgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgIERpYWdub3N0aWNMb2dnZXIuX19pZUR5bj0xO1xuXG4gICAgcmV0dXJuIERpYWdub3N0aWNMb2dnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IERpYWdub3N0aWNMb2dnZXIgfTtcclxuZnVuY3Rpb24gX2dldExvZ2dlcihsb2dnZXIpIHtcclxuICAgIHJldHVybiAobG9nZ2VyIHx8IG5ldyBEaWFnbm9zdGljTG9nZ2VyKCkpO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCB3aGljaCB3aWxsIGNhbGwgdGhyb3dJbnRlcm5hbCBvbiB0aGUgcGFzc2VkIGxvZ2dlciwgd2lsbCB0aHJvdyBleGNlcHRpb25zIGluXHJcbiAqIGRlYnVnIG1vZGUgb3IgYXR0ZW1wdCB0byBsb2cgdGhlIGVycm9yIGFzIGEgY29uc29sZSB3YXJuaW5nLiBUaGlzIGhlbHBlciBpcyBwcm92aWRlZCBtb3N0bHkgdG8gYmV0dGVyXHJcbiAqIHN1cHBvcnQgbWluaWZpY2F0aW9uIGFzIGxvZ2dlci50aHJvd0ludGVybmFsKCkgd2lsbCBub3QgY29tcHJlc3MgdGhlIHB1Ymxpc2ggXCJ0aHJvd0ludGVybmFsXCIgdXNlZCB0aHJvdWdob3V0XHJcbiAqIHRoZSBjb2RlLlxyXG4gKiBAcGFyYW0gbG9nZ2VyIC0gVGhlIERpYWdub3N0aWMgTG9nZ2VyIGluc3RhbmNlIHRvIHVzZS5cclxuICogQHBhcmFtIHNldmVyaXR5IHtMb2dnaW5nU2V2ZXJpdHl9IC0gVGhlIHNldmVyaXR5IG9mIHRoZSBsb2cgbWVzc2FnZVxyXG4gKiBAcGFyYW0gbWVzc2FnZSB7X0ludGVybmFsTG9nTWVzc2FnZX0gLSBUaGUgbG9nIG1lc3NhZ2UuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX3Rocm93SW50ZXJuYWwobG9nZ2VyLCBzZXZlcml0eSwgbXNnSWQsIG1zZywgcHJvcGVydGllcywgaXNVc2VyQWN0KSB7XHJcbiAgICBpZiAoaXNVc2VyQWN0ID09PSB2b2lkIDApIHsgaXNVc2VyQWN0ID0gZmFsc2U7IH1cclxuICAgIF9nZXRMb2dnZXIobG9nZ2VyKS50aHJvd0ludGVybmFsKHNldmVyaXR5LCBtc2dJZCwgbXNnLCBwcm9wZXJ0aWVzLCBpc1VzZXJBY3QpO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCB3aGljaCB3aWxsIGNhbGwgd2FyblRvQ29uc29sZSBvbiB0aGUgcGFzc2VkIGxvZ2dlciB3aXRoIHRoZSBwcm92aWRlZCBtZXNzYWdlLlxyXG4gKiBAcGFyYW0gbG9nZ2VyIC0gVGhlIERpYWdub3N0aWMgTG9nZ2VyIGluc3RhbmNlIHRvIHVzZS5cclxuICogQHBhcmFtIG1lc3NhZ2Uge19JbnRlcm5hbExvZ01lc3NhZ2V9IC0gVGhlIGxvZyBtZXNzYWdlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF93YXJuVG9Db25zb2xlKGxvZ2dlciwgbWVzc2FnZSkge1xyXG4gICAgX2dldExvZ2dlcihsb2dnZXIpW1NUUl9XQVJOX1RPX0NPTlNPTEUgLyogQG1pbjolMmV3YXJuVG9Db25zb2xlICovXShtZXNzYWdlKTtcclxufVxyXG4vKipcclxuICogTG9ncyBhIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIHF1ZXVlLlxyXG4gKiBAcGFyYW0gbG9nZ2VyIC0gVGhlIERpYWdub3N0aWMgTG9nZ2VyIGluc3RhbmNlIHRvIHVzZS5cclxuICogQHBhcmFtIHNldmVyaXR5IHtMb2dnaW5nU2V2ZXJpdHl9IC0gVGhlIHNldmVyaXR5IG9mIHRoZSBsb2cgbWVzc2FnZVxyXG4gKiBAcGFyYW0gbWVzc2FnZSB7X0ludGVybmFsTG9nTWVzc2FnZX0gLSBUaGUgbWVzc2FnZSB0byBsb2cuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX2xvZ0ludGVybmFsTWVzc2FnZShsb2dnZXIsIHNldmVyaXR5LCBtZXNzYWdlKSB7XHJcbiAgICBfZ2V0TG9nZ2VyKGxvZ2dlcilbX0RZTl9MT0dfSU5URVJOQUxfTUVTU0FHRSAvKiBAbWluOiUyZWxvZ0ludGVybmFsTWVzc2FnZSAqL10oc2V2ZXJpdHksIG1lc3NhZ2UpO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURpYWdub3N0aWNMb2dnZXIuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29yZSwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgX0RZTl9DT01QTEVURSwgX0RZTl9HRVRfQ1RYLCBfRFlOX0lTX0FTWU5DLCBfRFlOX0lTX0NISUxEX0VWVCwgX0RZTl9MRU5HVEgsIF9EWU5fTkFNRSwgX0RZTl9QVVNILCBfRFlOX1NFVF9DVFgsIF9EWU5fVElNRSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZGF0ZU5vdywgaXNBcnJheSwgaXNGdW5jdGlvbiwgb2JqRGVmaW5lQWNjZXNzb3JzIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0dFVF9QRVJGX01HUiwgU1RSX1BFUkZfRVZFTlQgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG52YXIgc3RyRXhlY3V0aW9uQ29udGV4dEtleSA9IFwiY3R4XCI7XHJcbnZhciBzdHJQYXJlbnRDb250ZXh0S2V5ID0gXCJQYXJlbnRDb250ZXh0S2V5XCI7XHJcbnZhciBzdHJDaGlsZHJlbkNvbnRleHRLZXkgPSBcIkNoaWxkcmVuQ29udGV4dEtleVwiO1xyXG52YXIgX2RlZmF1bHRQZXJmTWFuYWdlciA9IG51bGw7XHJcbnZhciBQZXJmRXZlbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQZXJmRXZlbnQobmFtZSwgcGF5bG9hZERldGFpbHMsIGlzQXN5bmMpIHtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xyXG4gICAgICAgIHZhciBhY2Nlc3NvckRlZmluZWQgPSBmYWxzZTtcclxuICAgICAgICBfc2VsZi5zdGFydCA9IGRhdGVOb3coKTtcclxuICAgICAgICBfc2VsZltfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSA9IG5hbWU7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9JU19BU1lOQyAvKiBAbWluOiUyZWlzQXN5bmMgKi9dID0gaXNBc3luYztcclxuICAgICAgICBfc2VsZltfRFlOX0lTX0NISUxEX0VWVCAvKiBAbWluOiUyZWlzQ2hpbGRFdnQgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH07XHJcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ocGF5bG9hZERldGFpbHMpKSB7XHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhY2Nlc3NvciB0byBtaW5pbWl6ZSB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdCBvZiBleGVjdXRpbmcgdGhlIHBheWxvYWREZXRhaWxzIGNhbGxiYWNrXHJcbiAgICAgICAgICAgIHZhciB0aGVEZXRhaWxzXzE7XHJcbiAgICAgICAgICAgIGFjY2Vzc29yRGVmaW5lZCA9IG9iakRlZmluZUFjY2Vzc29ycyhfc2VsZiwgXCJwYXlsb2FkXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIC8vIERlbGF5IHRoZSBleGVjdXRpb24gb2YgdGhlIHBheWxvYWREZXRhaWxzIHVudGlsIG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGVEZXRhaWxzXzEgJiYgaXNGdW5jdGlvbihwYXlsb2FkRGV0YWlscykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGVEZXRhaWxzXzEgPSBwYXlsb2FkRGV0YWlscygpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGl0IG91dCBub3cgc28gdGhlIHJlZmVyZW5jZWQgb2JqZWN0cyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWRcclxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkRGV0YWlscyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhlRGV0YWlsc18xO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3NlbGZbX0RZTl9HRVRfQ1RYIC8qIEBtaW46JTJlZ2V0Q3R4ICovXSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgaWYgKGtleSkge1xyXG4gICAgICAgICAgICAgICAgLy8gVGhlIHBhcmVudCBhbmQgY2hpbGQgbGlua3MgYXJlIGxvY2F0ZWQgZGlyZWN0bHkgb24gdGhlIG9iamVjdCAoZm9yIGJldHRlciB2aWV3aW5nIGluIHRoZSBEZWJ1Z1BsdWdpbilcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09IFBlcmZFdmVudFtzdHJQYXJlbnRDb250ZXh0S2V5XSB8fCBrZXkgPT09IFBlcmZFdmVudFtzdHJDaGlsZHJlbkNvbnRleHRLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9zZWxmW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKF9zZWxmW3N0ckV4ZWN1dGlvbkNvbnRleHRLZXldIHx8IHt9KVtrZXldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGZbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFB1dCB0aGUgcGFyZW50IGFuZCBjaGlsZCBsaW5rcyBkaXJlY3RseSBvbiB0aGUgb2JqZWN0IChmb3IgYmV0dGVyIHZpZXdpbmcgaW4gdGhlIERlYnVnUGx1Z2luKVxyXG4gICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gUGVyZkV2ZW50W3N0clBhcmVudENvbnRleHRLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2ltcGxlIGFzc3VtcHRpb24sIGlmIHdlIGFyZSBzZXR0aW5nIGEgcGFyZW50IHRoZW4gd2UgbXVzdCBiZSBhIGNoaWxkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfc2VsZltrZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fSVNfQ0hJTERfRVZUIC8qIEBtaW46JTJlaXNDaGlsZEV2dCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltrZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXkgPT09IFBlcmZFdmVudFtzdHJDaGlsZHJlbkNvbnRleHRLZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IF9zZWxmW3N0ckV4ZWN1dGlvbkNvbnRleHRLZXldID0gX3NlbGZbc3RyRXhlY3V0aW9uQ29udGV4dEtleV0gfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgY3R4W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGZbX0RZTl9DT01QTEVURSAvKiBAbWluOiUyZWNvbXBsZXRlICovXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdmFyIGNoaWxkVGltZSA9IDA7XHJcbiAgICAgICAgICAgIHZhciBjaGlsZEV2dHMgPSBfc2VsZltfRFlOX0dFVF9DVFggLyogQG1pbjolMmVnZXRDdHggKi9dKFBlcmZFdmVudFtzdHJDaGlsZHJlbkNvbnRleHRLZXldKTtcclxuICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2hpbGRFdnRzKSkge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbHAgPSAwOyBscCA8IGNoaWxkRXZ0c1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGxwKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRFdnQgPSBjaGlsZEV2dHNbbHBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZEV2dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFRpbWUgKz0gY2hpbGRFdnRbX0RZTl9USU1FIC8qIEBtaW46JTJldGltZSAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fVElNRSAvKiBAbWluOiUyZXRpbWUgKi9dID0gZGF0ZU5vdygpIC0gX3NlbGYuc3RhcnQ7XHJcbiAgICAgICAgICAgIF9zZWxmLmV4VGltZSA9IF9zZWxmW19EWU5fVElNRSAvKiBAbWluOiUyZXRpbWUgKi9dIC0gY2hpbGRUaW1lO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0NPTVBMRVRFIC8qIEBtaW46JTJlY29tcGxldGUgKi9dID0gZnVuY3Rpb24gKCkgeyB9O1xyXG4gICAgICAgICAgICBpZiAoIWFjY2Vzc29yRGVmaW5lZCAmJiBpc0Z1bmN0aW9uKHBheWxvYWREZXRhaWxzKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgd2UgY291bGRuJ3QgZGVmaW5lIHRoZSBwcm9wZXJ0eSBzZXQgZHVyaW5nIGNvbXBsZXRlIC0tIHRvIG1pbmltaXplIHRoZSBwZXJmIGltcGFjdCB1bnRpbCBhZnRlciB0aGUgdGltZVxyXG4gICAgICAgICAgICAgICAgX3NlbGYucGF5bG9hZCA9IHBheWxvYWREZXRhaWxzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgUGVyZkV2ZW50LlBhcmVudENvbnRleHRLZXkgPSBcInBhcmVudFwiO1xyXG4gICAgUGVyZkV2ZW50LkNoaWxkcmVuQ29udGV4dEtleSA9IFwiY2hpbGRFdnRzXCI7XHJcbiAgICByZXR1cm4gUGVyZkV2ZW50O1xyXG59KCkpO1xyXG5leHBvcnQgeyBQZXJmRXZlbnQgfTtcclxudmFyIFBlcmZNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUGVyZk1hbmFnZXIobWFuYWdlcikge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEdlbmVyYWwgYnVja2V0IHVzZWQgZm9yIGV4ZWN1dGlvbiBjb250ZXh0IHNldCBhbmQgcmV0cmlldmVkIHZpYSBzZXRDdHgoKSBhbmQgZ2V0Q3R4LlxyXG4gICAgICAgICAqIERlZmluZWQgYXMgcHJpdmF0ZSBzbyBpdCBjYW4gYmUgdmlzdWFsaXplZCB2aWEgdGhlIERlYnVnUGx1Z2luXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jdHggPSB7fTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oUGVyZk1hbmFnZXIsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICBfc2VsZi5jcmVhdGUgPSBmdW5jdGlvbiAoc3JjLCBwYXlsb2FkRGV0YWlscywgaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyAoQE1TTmV2KTogYXQgc29tZSBwb2ludCB3ZSB3aWxsIHdhbnQgdG8gYWRkIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiB0byBcInNlbGVjdFwiIHdoaWNoIGV2ZW50cyB0byBpbnN0cnVtZW50XHJcbiAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHRoaXMgaXMganVzdCBhIHNpbXBsZSBkbyBldmVyeXRoaW5nLlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQZXJmRXZlbnQoc3JjLCBwYXlsb2FkRGV0YWlscywgaXNBc3luYyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmZpcmUgPSBmdW5jdGlvbiAocGVyZkV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGVyZkV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGVyZkV2ZW50W19EWU5fQ09NUExFVEUgLyogQG1pbjolMmVjb21wbGV0ZSAqL10oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFuYWdlciAmJiBpc0Z1bmN0aW9uKG1hbmFnZXJbU1RSX1BFUkZfRVZFTlQgLyogQG1pbjolMmVwZXJmRXZlbnQgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyW1NUUl9QRVJGX0VWRU5UIC8qIEBtaW46JTJlcGVyZkV2ZW50ICovXShwZXJmRXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN0eCA9IF9zZWxmW3N0ckV4ZWN1dGlvbkNvbnRleHRLZXldID0gX3NlbGZbc3RyRXhlY3V0aW9uQ29udGV4dEtleV0gfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgY3R4W2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9HRVRfQ1RYIC8qIEBtaW46JTJlZ2V0Q3R4ICovXSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoX3NlbGZbc3RyRXhlY3V0aW9uQ29udGV4dEtleV0gfHwge30pW2tleV07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgUGVyZk1hbmFnZXIucHJvdG90eXBlLmNyZWF0ZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBQZXJmTWFuYWdlci5wcm90b3R5cGUuZmlyZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBQZXJmTWFuYWdlci5wcm90b3R5cGUuc2V0Q3R4LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFBlcmZNYW5hZ2VyLnByb3RvdHlwZS5nZXRDdHguXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBQZXJmTWFuYWdlci5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gUGVyZk1hbmFnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFBlcmZNYW5hZ2VyIH07XHJcbnZhciBkb1BlcmZBY3RpdmVLZXkgPSBcIkNvcmVVdGlscy5kb1BlcmZcIjtcclxuLyoqXHJcbiAqIEhlbHBlciBmdW5jdGlvbiB0byB3cmFwIGEgZnVuY3Rpb24gd2l0aCBhIHBlcmYgZXZlbnRcclxuICogQHBhcmFtIG1nclNvdXJjZSAtIFRoZSBQZXJmb3JtYW5jZSBNYW5hZ2VyIG9yIGEgUGVyZm9ybWFuY2UgcHJvdmlkZXIgc291cmNlIChtYXkgYmUgbnVsbClcclxuICogQHBhcmFtIGdldFNvdXJjZSAtIFRoZSBjYWxsYmFjayB0byBjcmVhdGUgdGhlIHNvdXJjZSBuYW1lIGZvciB0aGUgZXZlbnQgKGlmIHBlcmYgbW9uaXRvcmluZyBpcyBlbmFibGVkKVxyXG4gKiBAcGFyYW0gZnVuYyAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGFuZCBtZWFzdXJlXHJcbiAqIEBwYXJhbSBkZXRhaWxzIC0gQSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIHBheWxvYWQgZGV0YWlsc1xyXG4gKiBAcGFyYW0gaXNBc3luYyAtIElzIHRoZSBldmVudCAvIGZ1bmN0aW9uIGJlaW5nIGNhbGwgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hyb25vdXNseVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRvUGVyZihtZ3JTb3VyY2UsIGdldFNvdXJjZSwgZnVuYywgZGV0YWlscywgaXNBc3luYykge1xyXG4gICAgaWYgKG1nclNvdXJjZSkge1xyXG4gICAgICAgIHZhciBwZXJmTWdyID0gbWdyU291cmNlO1xyXG4gICAgICAgIGlmIChwZXJmTWdyW1NUUl9HRVRfUEVSRl9NR1JdKSB7XHJcbiAgICAgICAgICAgIC8vIExvb2tzIGxpa2UgYSBwZXJmIG1hbmFnZXIgcHJvdmlkZXIgb2JqZWN0XHJcbiAgICAgICAgICAgIHBlcmZNZ3IgPSBwZXJmTWdyW1NUUl9HRVRfUEVSRl9NR1JdKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwZXJmTWdyKSB7XHJcbiAgICAgICAgICAgIHZhciBwZXJmRXZ0ID0gdm9pZCAwO1xyXG4gICAgICAgICAgICB2YXIgY3VycmVudEFjdGl2ZSA9IHBlcmZNZ3JbX0RZTl9HRVRfQ1RYIC8qIEBtaW46JTJlZ2V0Q3R4ICovXShkb1BlcmZBY3RpdmVLZXkpO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcGVyZkV2dCA9IHBlcmZNZ3IuY3JlYXRlKGdldFNvdXJjZSgpLCBkZXRhaWxzLCBpc0FzeW5jKTtcclxuICAgICAgICAgICAgICAgIGlmIChwZXJmRXZ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRBY3RpdmUgJiYgcGVyZkV2dFtfRFlOX1NFVF9DVFggLyogQG1pbjolMmVzZXRDdHggKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZFdnRbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXShQZXJmRXZlbnRbc3RyUGFyZW50Q29udGV4dEtleV0sIGN1cnJlbnRBY3RpdmUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEFjdGl2ZVtfRFlOX0dFVF9DVFggLyogQG1pbjolMmVnZXRDdHggKi9dICYmIGN1cnJlbnRBY3RpdmVbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gY3VycmVudEFjdGl2ZVtfRFlOX0dFVF9DVFggLyogQG1pbjolMmVnZXRDdHggKi9dKFBlcmZFdmVudFtzdHJDaGlsZHJlbkNvbnRleHRLZXldKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRBY3RpdmVbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXShQZXJmRXZlbnRbc3RyQ2hpbGRyZW5Db250ZXh0S2V5XSwgY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5bX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10ocGVyZkV2dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoaXMgZXZlbnQgYXMgdGhlIGFjdGl2ZSBldmVudCBub3dcclxuICAgICAgICAgICAgICAgICAgICBwZXJmTWdyW19EWU5fU0VUX0NUWCAvKiBAbWluOiUyZXNldEN0eCAqL10oZG9QZXJmQWN0aXZlS2V5LCBwZXJmRXZ0KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyhwZXJmRXZ0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChwZXJmRXZ0ICYmIHBlcmZFdnRbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBlcmZFdnRbX0RZTl9TRVRfQ1RYIC8qIEBtaW46JTJlc2V0Q3R4ICovXShcImV4Y2VwdGlvblwiLCBleCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmaXJlIHRoZSBwZXJmIGV2ZW50XHJcbiAgICAgICAgICAgICAgICBpZiAocGVyZkV2dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBlcmZNZ3IuZmlyZShwZXJmRXZ0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBhY3RpdmUgZXZlbnQgdG8gdGhlIHByZXZpb3VzIHZhbHVlXHJcbiAgICAgICAgICAgICAgICBwZXJmTWdyW19EWU5fU0VUX0NUWCAvKiBAbWluOiUyZXNldEN0eCAqL10oZG9QZXJmQWN0aXZlS2V5LCBjdXJyZW50QWN0aXZlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jKCk7XHJcbn1cclxuLyoqXHJcbiAqIFNldCB0aGUgZ2xvYmFsIHBlcmZvcm1hbmNlIG1hbmFnZXIgdG8gdXNlIHdoZW4gdGhlcmUgaXMgbm8gY29yZSBpbnN0YW5jZSBvciBpdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LlxyXG4gKiBAcGFyYW0gcGVyZk1hbmFnZXIgLSBUaGUgSVBlcmZNYW5hZ2VyIGluc3RhbmNlIHRvIHVzZSB3aGVuIG5vIHBlcmZvcm1hbmNlIG1hbmFnZXIgaXMgc3VwcGxpZWQuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2V0R2JsUGVyZk1ncihwZXJmTWFuYWdlcikge1xyXG4gICAgX2RlZmF1bHRQZXJmTWFuYWdlciA9IHBlcmZNYW5hZ2VyO1xyXG59XHJcbi8qKlxyXG4gKiBHZXQgdGhlIGN1cnJlbnQgZ2xvYmFsIHBlcmZvcm1hbmNlIG1hbmFnZXIgdGhhdCB3aWxsIGJlIHVzZWQgd2l0aCBubyBwZXJmb3JtYW5jZSBtYW5hZ2VyIGlzIHN1cHBsaWVkLlxyXG4gKiBAcmV0dXJucyAtIFRoZSBjdXJyZW50IGRlZmF1bHQgbWFuYWdlclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEdibFBlcmZNZ3IoKSB7XHJcbiAgICByZXR1cm4gX2RlZmF1bHRQZXJmTWFuYWdlcjtcclxufVxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1QZXJmTWFuYWdlci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBfRFlOX0xFTkdUSCB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2V0Q3J5cHRvLCBnZXRNc0NyeXB0bywgaXNJRSB9IGZyb20gXCIuL0VudlV0aWxzXCI7XHJcbmltcG9ydCB7IGRhdGVOb3cgfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBTVFJfRU1QVFkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG52YXIgVUludDMyTWFzayA9IDB4MTAwMDAwMDAwO1xyXG52YXIgTWF4VUludDMyID0gMHhmZmZmZmZmZjtcclxuLy8gTVdDIGJhc2VkIFJhbmRvbSBnZW5lcmF0b3IgKGZvciBJRSlcclxudmFyIF9td2NTZWVkZWQgPSBmYWxzZTtcclxudmFyIF9td2NXID0gMTIzNDU2Nzg5O1xyXG52YXIgX213Y1ogPSA5ODc2NTQzMjE7XHJcbi8vIFRha2VzIGFueSBpbnRlZ2VyXHJcbmZ1bmN0aW9uIF9td2NTZWVkKHNlZWRWYWx1ZSkge1xyXG4gICAgaWYgKHNlZWRWYWx1ZSA8IDApIHtcclxuICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZW5kIHVwIHdpdGggYSBwb3NpdGl2ZSBudW1iZXIgYW5kIG5vdCAtdmUgb25lLlxyXG4gICAgICAgIHNlZWRWYWx1ZSA+Pj49IDA7XHJcbiAgICB9XHJcbiAgICBfbXdjVyA9ICgxMjM0NTY3ODkgKyBzZWVkVmFsdWUpICYgTWF4VUludDMyO1xyXG4gICAgX213Y1ogPSAoOTg3NjU0MzIxIC0gc2VlZFZhbHVlKSAmIE1heFVJbnQzMjtcclxuICAgIF9td2NTZWVkZWQgPSB0cnVlO1xyXG59XHJcbmZ1bmN0aW9uIF9hdXRvU2VlZE13YygpIHtcclxuICAgIC8vIFNpbXBsZSBpbml0aWFsaXphdGlvbiB1c2luZyBkZWZhdWx0IE1hdGgucmFuZG9tKCkgLSBTbyB3ZSBpbmhlcml0IGFueSBlbnRyb3B5IGZyb20gdGhlIGJyb3dzZXJcclxuICAgIC8vIGFuZCBiaXR3aXNlIFhPUiB3aXRoIHRoZSBjdXJyZW50IG1pbGxpc2Vjb25kc1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB2YXIgbm93ID0gZGF0ZU5vdygpICYgMHg3ZmZmZmZmZjtcclxuICAgICAgICBfbXdjU2VlZCgoKE1hdGgucmFuZG9tKCkgKiBVSW50MzJNYXNrKSBeIG5vdykgKyBub3cpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBEb24ndCBjcmFzaCBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZ1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSBhIHJhbmRvbSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIG1heFZhbHVlLCBtYXggdmFsdWUgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gYSAzMi1iaXQgbWF4aW11bS5cclxuICogU28gbWF4VmFsdWUoMTYpIHdpbGwgcHJvZHVjZSBhIG51bWJlciBmcm9tIDAuLjE2IChyYW5nZSBvZiAxNylcclxuICogQHBhcmFtIG1heFZhbHVlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tVmFsdWUobWF4VmFsdWUpIHtcclxuICAgIGlmIChtYXhWYWx1ZSA+IDApIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigocmFuZG9tMzIoKSAvIE1heFVJbnQzMikgKiAobWF4VmFsdWUgKyAxKSkgPj4+IDA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gMDtcclxufVxyXG4vKipcclxuICogZ2VuZXJhdGUgYSByYW5kb20gMzItYml0IG51bWJlciAoMHgwMDAwMDAuLjB4RkZGRkZGRkYpIG9yICgtMHg4MDAwMDAwMC4uMHg3RkZGRkZGRiksIGRlZmF1bHRzIHVuLXVuc2lnbmVkLlxyXG4gKiBAcGFyYW0gc2lnbmVkIC0gVHJ1ZSB0byByZXR1cm4gYSBzaWduZWQgMzItYml0IG51bWJlciAoLTB4ODAwMDAwMDAuLjB4N0ZGRkZGRkYpIG90aGVyd2lzZSBhbiB1bnNpZ25lZCBvbmUgKDB4MDAwMDAwLi4weEZGRkZGRkZGKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbTMyKHNpZ25lZCkge1xyXG4gICAgdmFyIHZhbHVlID0gMDtcclxuICAgIHZhciBjID0gZ2V0Q3J5cHRvKCkgfHwgZ2V0TXNDcnlwdG8oKTtcclxuICAgIGlmIChjICYmIGMuZ2V0UmFuZG9tVmFsdWVzKSB7XHJcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBudW1iZXIgaXMgY29udmVydGVkIGludG8gdGhlIHNwZWNpZmllZCByYW5nZSAoLTB4ODAwMDAwMDAuLjB4N0ZGRkZGRkYpXHJcbiAgICAgICAgdmFsdWUgPSBjLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMSkpWzBdICYgTWF4VUludDMyO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbHVlID09PSAwICYmIGlzSUUoKSkge1xyXG4gICAgICAgIC8vIEZvciBJRSA2LCA3LCA4IChlc3BlY2lhbGx5IG9uIFhQKSBNYXRoLnJhbmRvbSBpcyBub3QgdmVyeSByYW5kb21cclxuICAgICAgICBpZiAoIV9td2NTZWVkZWQpIHtcclxuICAgICAgICAgICAgLy8gU2V0IHRoZSBzZWVkIGZvciB0aGUgTXdjIGFsZ29yaXRobVxyXG4gICAgICAgICAgICBfYXV0b1NlZWRNd2MoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRG9uJ3QgdXNlIE1hdGgucmFuZG9tIGZvciBJRVxyXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIGlzIGNvbnZlcnRlZCBpbnRvIHRoZSBzcGVjaWZpZWQgcmFuZ2UgKC0weDgwMDAwMDAwLi4weDdGRkZGRkZGKVxyXG4gICAgICAgIHZhbHVlID0gbXdjUmFuZG9tMzIoKSAmIE1heFVJbnQzMjtcclxuICAgIH1cclxuICAgIGlmICh2YWx1ZSA9PT0gMCkge1xyXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIGlzIGNvbnZlcnRlZCBpbnRvIHRoZSBzcGVjaWZpZWQgcmFuZ2UgKC0weDgwMDAwMDAwLi4weDdGRkZGRkZGKVxyXG4gICAgICAgIHZhbHVlID0gTWF0aC5mbG9vcigoVUludDMyTWFzayAqIE1hdGgucmFuZG9tKCkpIHwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXNpZ25lZCkge1xyXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBlbmQgdXAgd2l0aCBhIHBvc2l0aXZlIG51bWJlciBhbmQgbm90IC12ZSBvbmUuXHJcbiAgICAgICAgdmFsdWUgPj4+PSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbi8qKlxyXG4gKiBTZWVkIHRoZSBNV0MgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Igd2l0aCB0aGUgc3BlY2lmaWVkIHNlZWQgb3IgYSByYW5kb20gdmFsdWVcclxuICogQHBhcmFtIHZhbHVlIC0gb3B0aW9uYWwgdGhlIG51bWJlciB0byB1c2VkIGFzIHRoZSBzZWVkLCBpZiB1bmRlZmluZWQsIG51bGwgb3IgemVybyBhIHJhbmRvbSB2YWx1ZSB3aWxsIGJlIGNob3NlblxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG13Y1JhbmRvbVNlZWQodmFsdWUpIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgICBfYXV0b1NlZWRNd2MoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIF9td2NTZWVkKHZhbHVlKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogR2VuZXJhdGUgYSByYW5kb20gMzItYml0IG51bWJlciBiZXR3ZWVuICgweDAwMDAwMC4uMHhGRkZGRkZGRikgb3IgKC0weDgwMDAwMDAwLi4weDdGRkZGRkZGKSwgdXNpbmcgTVdDIChNdWx0aXBseSB3aXRoIGNhcnJ5KVxyXG4gKiBpbnN0ZWFkIG9mIE1hdGgucmFuZG9tKCkgZGVmYXVsdHMgdG8gdW4tc2lnbmVkLlxyXG4gKiBVc2VkIGFzIGEgcmVwbGFjZW1lbnQgcmFuZG9tIGdlbmVyYXRvciBmb3IgSUUgdG8gYXZvaWQgaXNzdWVzIHdpdGggb2xkZXIgSUUgaW5zdGFuY2VzLlxyXG4gKiBAcGFyYW0gc2lnbmVkIC0gVHJ1ZSB0byByZXR1cm4gYSBzaWduZWQgMzItYml0IG51bWJlciAoLTB4ODAwMDAwMDAuLjB4N0ZGRkZGRkYpIG90aGVyd2lzZSBhbiB1bnNpZ25lZCBvbmUgKDB4MDAwMDAwLi4weEZGRkZGRkZGKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG13Y1JhbmRvbTMyKHNpZ25lZCkge1xyXG4gICAgX213Y1ogPSAoMzY5NjkgKiAoX213Y1ogJiAweEZGRkYpICsgKF9td2NaID4+IDE2KSkgJiBNYXhVSW50MzI7XHJcbiAgICBfbXdjVyA9ICgxODAwMCAqIChfbXdjVyAmIDB4RkZGRikgKyAoX213Y1cgPj4gMTYpKSAmIE1heFVJbnQzMjtcclxuICAgIHZhciB2YWx1ZSA9ICgoKF9td2NaIDw8IDE2KSArIChfbXdjVyAmIDB4RkZGRikpID4+PiAwKSAmIE1heFVJbnQzMiB8IDA7XHJcbiAgICBpZiAoIXNpZ25lZCkge1xyXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBlbmQgdXAgd2l0aCBhIHBvc2l0aXZlIG51bWJlciBhbmQgbm90IC12ZSBvbmUuXHJcbiAgICAgICAgdmFsdWUgPj4+PSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSByYW5kb20gYmFzZTY0IGlkIHN0cmluZy5cclxuICogVGhlIGRlZmF1bHQgbGVuZ3RoIGlzIDIyIHdoaWNoIGlzIDEzMi1iaXRzIHNvIGFsbW9zdCB0aGUgc2FtZSBhcyBhIEdVSUQgYnV0IGFzIGJhc2U2NCAodGhlIHByZXZpb3VzIGRlZmF1bHQgd2FzIDUpXHJcbiAqIEBwYXJhbSBtYXhMZW5ndGggLSBPcHRpb25hbCB2YWx1ZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YgdGhlIGlkIHRvIGJlIGdlbmVyYXRlZCwgZGVmYXVsdHMgdG8gMjJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBuZXdJZChtYXhMZW5ndGgpIHtcclxuICAgIGlmIChtYXhMZW5ndGggPT09IHZvaWQgMCkgeyBtYXhMZW5ndGggPSAyMjsgfVxyXG4gICAgdmFyIGJhc2U2NGNoYXJzID0gXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCI7XHJcbiAgICAvLyBTdGFydCB3aXRoIGFuIGluaXRpYWwgcmFuZG9tIG51bWJlciwgY29uc3VtaW5nIHRoZSB2YWx1ZSBpbiByZXZlcnNlIGJ5dGUgb3JkZXJcclxuICAgIHZhciBudW1iZXIgPSByYW5kb20zMigpID4+PiAwOyAvLyBNYWtlIHN1cmUgaXQncyBhICt2ZSBudW1iZXJcclxuICAgIHZhciBjaGFycyA9IDA7XHJcbiAgICB2YXIgcmVzdWx0ID0gU1RSX0VNUFRZO1xyXG4gICAgd2hpbGUgKHJlc3VsdFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPCBtYXhMZW5ndGgpIHtcclxuICAgICAgICBjaGFycysrO1xyXG4gICAgICAgIHJlc3VsdCArPSBiYXNlNjRjaGFycy5jaGFyQXQobnVtYmVyICYgMHgzRik7XHJcbiAgICAgICAgbnVtYmVyID4+Pj0gNjsgLy8gWmVybyBmaWxsIHdpdGggcmlnaHQgc2hpZnRcclxuICAgICAgICBpZiAoY2hhcnMgPT09IDUpIHtcclxuICAgICAgICAgICAgLy8gNSBiYXNlNjQgY2hhcmFjdGVycyA9PT0gMzAgYml0cyBzbyB3ZSBkb24ndCBoYXZlIGVub3VnaCBiaXRzIGZvciBhbm90aGVyIGJhc2U2NCBjaGFyXHJcbiAgICAgICAgICAgIC8vIFNvIGFkZCBvbiBhbm90aGVyIDMwIGJpdHMgYW5kIG1ha2Ugc3VyZSBpdCdzICt2ZVxyXG4gICAgICAgICAgICBudW1iZXIgPSAoKChyYW5kb20zMigpIDw8IDIpICYgMHhGRkZGRkZGRikgfCAobnVtYmVyICYgMHgwMykpID4+PiAwO1xyXG4gICAgICAgICAgICBjaGFycyA9IDA7IC8vIFdlIG5lZWQgdG8gcmVzZXQgdGhlIG51bWJlciBldmVyeSA1IGNoYXJzICgzMCBiaXRzKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UmFuZG9tSGVscGVyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IE9iakRlZmluZVByb3BlcnR5IH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgeyBfRFlOX05PREVfVFlQRSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgbm9ybWFsaXplSnNOYW1lIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0VNUFRZIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgbmV3SWQgfSBmcm9tIFwiLi9SYW5kb21IZWxwZXJcIjtcclxudmFyIF9vYmpEZWZpbmVQcm9wZXJ0eSA9IE9iakRlZmluZVByb3BlcnR5O1xyXG52YXIgdmVyc2lvbiA9ICcyLjguOSc7XHJcbnZhciBpbnN0YW5jZU5hbWUgPSBcIi5cIiArIG5ld0lkKDYpO1xyXG52YXIgX2RhdGFVaWQgPSAwO1xyXG5mdW5jdGlvbiBfY3JlYXRlQWNjZXNzb3IodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xyXG4gICAgaWYgKF9vYmpEZWZpbmVQcm9wZXJ0eSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIF9vYmpEZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3AsIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gSUU4IERlZmluZXMgYSBkZWZpbmVQcm9wZXJ0eSBvbiBPYmplY3QgYnV0IGl0J3Mgb25seSBzdXBwb3J0ZWQgZm9yIERPTSBlbGVtZW50cyBzbyBpdCB3aWxsIHRocm93XHJcbiAgICAgICAgICAgIC8vIFdlIHdpbGwganVzdCBpZ25vcmUgdGhpcyBoZXJlLlxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG4vLyBBY2NlcHRzIG9ubHk6XHJcbi8vICAtIE5vZGVcclxuLy8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxyXG4vLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxyXG4vLyAgLSBPYmplY3RcclxuLy8gICAgLSBBbnlcclxuZnVuY3Rpb24gX2NhbkFjY2VwdERhdGEodGFyZ2V0KSB7XHJcbiAgICByZXR1cm4gdGFyZ2V0W19EWU5fTk9ERV9UWVBFIC8qIEBtaW46JTJlbm9kZVR5cGUgKi9dID09PSAxIHx8IHRhcmdldFtfRFlOX05PREVfVFlQRSAvKiBAbWluOiUyZW5vZGVUeXBlICovXSA9PT0gOSB8fCAhKCt0YXJnZXRbX0RZTl9OT0RFX1RZUEUgLyogQG1pbjolMmVub2RlVHlwZSAqL10pO1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRDYWNoZShkYXRhLCB0YXJnZXQpIHtcclxuICAgIHZhciB0aGVDYWNoZSA9IHRhcmdldFtkYXRhLmlkXTtcclxuICAgIGlmICghdGhlQ2FjaGUpIHtcclxuICAgICAgICB0aGVDYWNoZSA9IHt9O1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChfY2FuQWNjZXB0RGF0YSh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9jcmVhdGVBY2Nlc3Nvcih0YXJnZXQsIGRhdGEuaWQsIHRoZUNhY2hlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVudmlyb25tZW50IGRvZXNuJ3Qgc3VwcG9ydCBhY2Nlc3Nvciwgc28ganVzdCB1c2UgZGlyZWN0IGFzc2lnbm1lbnRcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRbZGF0YS5pZF0gPSB0aGVDYWNoZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBOb3QgYWxsIGVudmlyb25tZW50cyBhbGxvdyBleHRlbmRpbmcgYWxsIG9iamVjdHMsIHNvIGp1c3QgaWdub3JlIHRoZSBjYWNoZSBpbiB0aG9zZSBjYXNlc1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGVDYWNoZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVW5pcXVlTmFtZXNwYWNlKG5hbWUsIGluY2x1ZGVWZXJzaW9uKSB7XHJcbiAgICBpZiAoaW5jbHVkZVZlcnNpb24gPT09IHZvaWQgMCkgeyBpbmNsdWRlVmVyc2lvbiA9IGZhbHNlOyB9XHJcbiAgICByZXR1cm4gbm9ybWFsaXplSnNOYW1lKG5hbWUgKyAoX2RhdGFVaWQrKykgKyAoaW5jbHVkZVZlcnNpb24gPyBcIi5cIiArIHZlcnNpb24gOiBTVFJfRU1QVFkpICsgaW5zdGFuY2VOYW1lKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRWxtTm9kZURhdGEobmFtZSkge1xyXG4gICAgdmFyIGRhdGEgPSB7XHJcbiAgICAgICAgaWQ6IGNyZWF0ZVVuaXF1ZU5hbWVzcGFjZShcIl9haURhdGEtXCIgKyAobmFtZSB8fCBTVFJfRU1QVFkpICsgXCIuXCIgKyB2ZXJzaW9uKSxcclxuICAgICAgICBhY2NlcHQ6IGZ1bmN0aW9uICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9jYW5BY2NlcHREYXRhKHRhcmdldCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlZlZhbHVlLCBhZGREZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIHZhciB0aGVDYWNoZSA9IHRhcmdldFtkYXRhLmlkXTtcclxuICAgICAgICAgICAgaWYgKCF0aGVDYWNoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFkZERlZmF1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTaWRlIGVmZmVjdCBpcyBhZGRzIHRoZSBjYWNoZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoZUNhY2hlID0gX2dldENhY2hlKGRhdGEsIHRhcmdldCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlQ2FjaGVbbm9ybWFsaXplSnNOYW1lKG5hbWUpXSA9IGRlZlZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZlZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGVDYWNoZVtub3JtYWxpemVKc05hbWUobmFtZSldO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAga2lsbDogZnVuY3Rpb24gKHRhcmdldCwgbmFtZSkge1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldFtuYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGFyZ2V0W25hbWVdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IGNsZWFuaW5nIHVwLCBzbyBpZiB0aGlzIGZhaWxzIC0tIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBkYXRhO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGFDYWNoZUhlbHBlci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgX0RZTl9DT09LSUVfQ0ZHLCBfRFlOX0lOREVYX09GLCBfRFlOX0xFTkdUSCwgX0RZTl9MT0dHRVIsIF9EWU5fU0VUX0VOQUJMRUQsIF9EWU5fU1BMSVQsIF9EWU5fU1VCU1RSSU5HLCBfRFlOX1VTRVJfQUdFTlQgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IF90aHJvd0ludGVybmFsIH0gZnJvbSBcIi4vRGlhZ25vc3RpY0xvZ2dlclwiO1xyXG5pbXBvcnQgeyBkdW1wT2JqLCBnZXREb2N1bWVudCwgZ2V0TG9jYXRpb24sIGdldE5hdmlnYXRvciwgaXNJRSB9IGZyb20gXCIuL0VudlV0aWxzXCI7XHJcbmltcG9ydCB7IGFyckZvckVhY2gsIGRhdGVOb3csIGdldEV4Y2VwdGlvbk5hbWUsIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzTm90TnVsbE9yVW5kZWZpbmVkLCBpc051bGxPclVuZGVmaW5lZCwgaXNTdHJpbmcsIGlzVHJ1dGh5LCBpc1VuZGVmaW5lZCwgb2JqRm9yRWFjaEtleSwgc2V0VmFsdWUsIHN0ckNvbnRhaW5zLCBzdHJFbmRzV2l0aCwgc3RyVHJpbSB9IGZyb20gXCIuL0hlbHBlckZ1bmNzXCI7XHJcbmltcG9ydCB7IFNUUl9FTVBUWSB9IGZyb20gXCIuL0ludGVybmFsQ29uc3RhbnRzXCI7XHJcbnZhciBzdHJUb0dNVFN0cmluZyA9IFwidG9HTVRTdHJpbmdcIjtcclxudmFyIHN0clRvVVRDU3RyaW5nID0gXCJ0b1VUQ1N0cmluZ1wiO1xyXG52YXIgc3RyQ29va2llID0gXCJjb29raWVcIjtcclxudmFyIHN0ckV4cGlyZXMgPSBcImV4cGlyZXNcIjtcclxudmFyIHN0ckVuYWJsZWQgPSBcImVuYWJsZWRcIjtcclxudmFyIHN0cklzQ29va2llVXNlRGlzYWJsZWQgPSBcImlzQ29va2llVXNlRGlzYWJsZWRcIjtcclxudmFyIHN0ckRpc2FibGVDb29raWVzVXNhZ2UgPSBcImRpc2FibGVDb29raWVzVXNhZ2VcIjtcclxudmFyIHN0ckNvbmZpZ0Nvb2tpZU1nciA9IFwiX2NrTWdyXCI7XHJcbnZhciBfc3VwcG9ydHNDb29raWVzID0gbnVsbDtcclxudmFyIF9hbGxvd1VhU2FtZVNpdGUgPSBudWxsO1xyXG52YXIgX3BhcnNlZENvb2tpZVZhbHVlID0gbnVsbDtcclxudmFyIF9kb2MgPSBnZXREb2N1bWVudCgpO1xyXG52YXIgX2Nvb2tpZUNhY2hlID0ge307XHJcbnZhciBfZ2xvYmFsQ29va2llQ29uZmlnID0ge307XHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqIERPIE5PVCBVU0Ugb3IgZXhwb3J0IGZyb20gdGhlIG1vZHVsZSwgdGhpcyBpcyBleHBvc2VkIGFzIHB1YmxpYyB0byBzdXBwb3J0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb2YgcHJldmlvdXMgc3RhdGljIHV0aWxpdHkgbWV0aG9kcyBvbmx5LlxyXG4gKiBJZiB5b3Ugd2FudCB0byBtYW5hZ2VyIGNvb2tpZXMgZWl0aGVyIHVzZSB0aGUgSUNvb2tpZU1nciBhdmFpbGFibGUgZnJvbSB0aGUgY29yZSBpbnN0YW5jZSB2aWEgZ2V0Q29va2llTWdyKCkgb3IgY3JlYXRlXHJcbiAqIHlvdXIgb3duIGluc3RhbmNlIG9mIHRoZSBDb29raWVNZ3IgYW5kIHVzZSB0aGF0LlxyXG4gKiBVc2luZyB0aGlzIGRpcmVjdGx5IGZvciBlbmFibGluZyAvIGRpc2FibGluZyBjb29raWUgaGFuZGxpbmcgd2lsbCBub3Qgb25seSBhZmZlY3QgeW91ciB1c2FnZSBidXQgRVZFUlkgdXNlciBvZiBjb29raWVzLlxyXG4gKiBFeGFtcGxlLCBpZiB5b3UgYXJlIHVzaW5nIGEgc2hhcmVkIGNvbXBvbmVudCB0aGF0IGlzIGFsc28gdXNpbmcgQXBwbGljYXRpb24gSW5zaWdodHMgeW91IHdpbGwgYWZmZWN0IHRoZWlyIGNvb2tpZSBoYW5kbGluZy5cclxuICogQHBhcmFtIGxvZ2dlciAtIFRoZSBEaWFnbm9zdGljTG9nZ2VyIHRvIHVzZSBmb3IgcmVwb3J0aW5nIGVycm9ycy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfZ2JsQ29va2llTWdyKGNvbmZpZywgbG9nZ2VyKSB7XHJcbiAgICAvLyBTdGFzaCB0aGUgZ2xvYmFsIGluc3RhbmNlIGFnYWluc3QgdGhlIEJhc2VDb29raWVNZ3IgY2xhc3NcclxuICAgIHZhciBpbnN0ID0gY3JlYXRlQ29va2llTWdyW3N0ckNvbmZpZ0Nvb2tpZU1ncl0gfHwgX2dsb2JhbENvb2tpZUNvbmZpZ1tzdHJDb25maWdDb29raWVNZ3JdO1xyXG4gICAgaWYgKCFpbnN0KSB7XHJcbiAgICAgICAgLy8gTm90ZTogbm90IHVzaW5nIHRoZSBnZXRTZXRWYWx1ZSgpIGhlbHBlciBhcyB0aGF0IHdvdWxkIHJlcXVpcmUgYWx3YXlzIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGNvb2tpZU1nclxyXG4gICAgICAgIC8vIHRoYXQgdWx0aW1hdGVseSBpcyBuZXZlciB1c2VkXHJcbiAgICAgICAgaW5zdCA9IGNyZWF0ZUNvb2tpZU1ncltzdHJDb25maWdDb29raWVNZ3JdID0gY3JlYXRlQ29va2llTWdyKGNvbmZpZywgbG9nZ2VyKTtcclxuICAgICAgICBfZ2xvYmFsQ29va2llQ29uZmlnW3N0ckNvbmZpZ0Nvb2tpZU1ncl0gPSBpbnN0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGluc3Q7XHJcbn1cclxuZnVuY3Rpb24gX2lzTWdyRW5hYmxlZChjb29raWVNZ3IpIHtcclxuICAgIGlmIChjb29raWVNZ3IpIHtcclxuICAgICAgICByZXR1cm4gY29va2llTWdyLmlzRW5hYmxlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuZnVuY3Rpb24gX2NyZWF0ZUNvb2tpZU1nckNvbmZpZyhyb290Q29uZmlnKSB7XHJcbiAgICB2YXIgY29va2llTWdyQ2ZnID0gcm9vdENvbmZpZ1tfRFlOX0NPT0tJRV9DRkcgLyogQG1pbjolMmVjb29raWVDZmcgKi9dID0gcm9vdENvbmZpZ1tfRFlOX0NPT0tJRV9DRkcgLyogQG1pbjolMmVjb29raWVDZmcgKi9dIHx8IHt9O1xyXG4gICAgLy8gU2V0cyB0aGUgdmFsdWVzIGZyb20gdGhlIHJvb3QgY29uZmlnIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQgb24gdGhlIGNvb2tpZU1nckNmZ1xyXG4gICAgc2V0VmFsdWUoY29va2llTWdyQ2ZnLCBcImRvbWFpblwiLCByb290Q29uZmlnLmNvb2tpZURvbWFpbiwgaXNOb3ROdWxsT3JVbmRlZmluZWQsIGlzTnVsbE9yVW5kZWZpbmVkKTtcclxuICAgIHNldFZhbHVlKGNvb2tpZU1nckNmZywgXCJwYXRoXCIsIHJvb3RDb25maWcuY29va2llUGF0aCB8fCBcIi9cIiwgbnVsbCwgaXNOdWxsT3JVbmRlZmluZWQpO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGNvb2tpZU1nckNmZ1tzdHJFbmFibGVkXSkpIHtcclxuICAgICAgICAvLyBTZXQgdGhlIGVuYWJsZWQgZnJvbSB0aGUgcHJvdmlkZWQgc2V0dGluZyBvciB0aGUgbGVnYWN5IHJvb3QgdmFsdWVzXHJcbiAgICAgICAgdmFyIGNvb2tpZUVuYWJsZWQgPSB2b2lkIDA7XHJcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChyb290Q29uZmlnW3N0cklzQ29va2llVXNlRGlzYWJsZWRdKSkge1xyXG4gICAgICAgICAgICBjb29raWVFbmFibGVkID0gIXJvb3RDb25maWdbc3RySXNDb29raWVVc2VEaXNhYmxlZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXNVbmRlZmluZWQocm9vdENvbmZpZ1tzdHJEaXNhYmxlQ29va2llc1VzYWdlXSkpIHtcclxuICAgICAgICAgICAgY29va2llRW5hYmxlZCA9ICFyb290Q29uZmlnW3N0ckRpc2FibGVDb29raWVzVXNhZ2VdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb29raWVNZ3JDZmdbc3RyRW5hYmxlZF0gPSBjb29raWVFbmFibGVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvb2tpZU1nckNmZztcclxufVxyXG5mdW5jdGlvbiBfaXNJZ25vcmVkQ29va2llKGNvb2tpZU1nckNmZywgbmFtZSkge1xyXG4gICAgaWYgKG5hbWUgJiYgY29va2llTWdyQ2ZnICYmIGlzQXJyYXkoY29va2llTWdyQ2ZnLmlnbm9yZUNvb2tpZXMpKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvb2tpZU1nckNmZy5pZ25vcmVDb29raWVzW19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShuYW1lKSAhPT0gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gX2lzQmxvY2tlZENvb2tpZShjb29raWVNZ3JDZmcsIG5hbWUpIHtcclxuICAgIGlmIChuYW1lICYmIGNvb2tpZU1nckNmZyAmJiBpc0FycmF5KGNvb2tpZU1nckNmZy5ibG9ja2VkQ29va2llcykpIHtcclxuICAgICAgICBpZiAoY29va2llTWdyQ2ZnLmJsb2NrZWRDb29raWVzW19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShuYW1lKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9pc0lnbm9yZWRDb29raWUoY29va2llTWdyQ2ZnLCBuYW1lKTtcclxufVxyXG4vKipcclxuICogSGVscGVyIHRvIHJldHVybiB0aGUgSUNvb2tpZU1nciBmcm9tIHRoZSBjb3JlIChpZiBub3QgbnVsbC91bmRlZmluZWQpIG9yIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvblxyXG4gKiBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3IgYSBsZWdhY3kgZGVmYXVsdC5cclxuICogQHBhcmFtIGNvcmVcclxuICogQHBhcmFtIGNvbmZpZ1xyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVHZXRDb29raWVNZ3IoY29yZSwgY29uZmlnKSB7XHJcbiAgICB2YXIgY29va2llTWdyO1xyXG4gICAgaWYgKGNvcmUpIHtcclxuICAgICAgICAvLyBBbHdheXMgcmV0dXJucyBhbiBpbnN0YW5jZVxyXG4gICAgICAgIGNvb2tpZU1nciA9IGNvcmUuZ2V0Q29va2llTWdyKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChjb25maWcpIHtcclxuICAgICAgICB2YXIgY29va2llQ2ZnID0gY29uZmlnW19EWU5fQ09PS0lFX0NGRyAvKiBAbWluOiUyZWNvb2tpZUNmZyAqL107XHJcbiAgICAgICAgaWYgKGNvb2tpZUNmZ1tzdHJDb25maWdDb29raWVNZ3JdKSB7XHJcbiAgICAgICAgICAgIGNvb2tpZU1nciA9IGNvb2tpZUNmZ1tzdHJDb25maWdDb29raWVNZ3JdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29va2llTWdyID0gY3JlYXRlQ29va2llTWdyKGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCFjb29raWVNZ3IpIHtcclxuICAgICAgICAvLyBHZXQgb3IgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBnbG9iYWwgKGxlZ2FjeSkgY29va2llIG1hbmFnZXIgaWYgd2UgY291bGRuJ3QgZmluZCBvbmVcclxuICAgICAgICBjb29raWVNZ3IgPSBfZ2JsQ29va2llTWdyKGNvbmZpZywgKGNvcmUgfHwge30pW19EWU5fTE9HR0VSIC8qIEBtaW46JTJlbG9nZ2VyICovXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29va2llTWdyO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb29raWVNZ3Iocm9vdENvbmZpZywgbG9nZ2VyKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICB2YXIgY29va2llTWdyQ29uZmlnID0gX2NyZWF0ZUNvb2tpZU1nckNvbmZpZyhyb290Q29uZmlnIHx8IF9nbG9iYWxDb29raWVDb25maWcpO1xyXG4gICAgdmFyIF9wYXRoID0gY29va2llTWdyQ29uZmlnLnBhdGggfHwgXCIvXCI7XHJcbiAgICB2YXIgX2RvbWFpbiA9IGNvb2tpZU1nckNvbmZpZy5kb21haW47XHJcbiAgICAvLyBFeHBsaWNpdGx5IGNoZWNraW5nIGFnYWluc3QgZmFsc2UsIHNvIHRoYXQgc2V0dGluZyB0byB1bmRlZmluZWQgd2lsbCA9PT0gdHJ1ZVxyXG4gICAgdmFyIF9lbmFibGVkID0gY29va2llTWdyQ29uZmlnW3N0ckVuYWJsZWRdICE9PSBmYWxzZTtcclxuICAgIHZhciBjb29raWVNZ3IgPSAoX2EgPSB7XHJcbiAgICAgICAgICAgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVuYWJsZWQgPSBfZW5hYmxlZCAmJiBhcmVDb29raWVzU3VwcG9ydGVkKGxvZ2dlcik7XHJcbiAgICAgICAgICAgICAgICAvLyBVc2luZyBhbiBpbmRpcmVjdCBsb29rdXAgZm9yIGFueSBnbG9iYWwgY29va2llIG1hbmFnZXIgdG8gc3VwcG9ydCB0cmVlIHNoYWtpbmcgZm9yIFNESydzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGF0IGRvbid0IHVzZSB0aGUgXCJhcHBsaWNhdGlvbmluc2lnaHRzLWNvcmVcIiB2ZXJzaW9uIG9mIHRoZSBkZWZhdWx0IGNvb2tpZSBmdW5jdGlvblxyXG4gICAgICAgICAgICAgICAgdmFyIGdibE1hbmFnZXIgPSBfZ2xvYmFsQ29va2llQ29uZmlnW3N0ckNvbmZpZ0Nvb2tpZU1ncl07XHJcbiAgICAgICAgICAgICAgICBpZiAoZW5hYmxlZCAmJiBnYmxNYW5hZ2VyICYmIGNvb2tpZU1nciAhPT0gZ2JsTWFuYWdlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgR2xvYmFsQ29va2llIE1hbmFnZXIgaW5zdGFuY2UgKGlmIG5vdCB0aGlzIGluc3RhbmNlKSBpcyBhbHNvIGVuYWJsZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXMgdGhlIGdsb2JhbCAoZGVwcmVjYXRlZCkgZnVuY3Rpb25zIG1heSBoYXZlIGJlZW4gY2FsbGVkIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgICAgICAgICAgICAgICAgICBlbmFibGVkID0gX2lzTWdyRW5hYmxlZChnYmxNYW5hZ2VyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBlbmFibGVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfYVtfRFlOX1NFVF9FTkFCTEVEIC8qIEBtaW46c2V0RW5hYmxlZCAqL10gPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgLy8gRXhwbGljaXRseSBjaGVja2luZyBhZ2FpbnN0IGZhbHNlLCBzbyB0aGF0IHNldHRpbmcgdG8gdW5kZWZpbmVkIHdpbGwgPT09IHRydWVcclxuICAgICAgICAgICAgX2VuYWJsZWQgPSB2YWx1ZSAhPT0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfYS5zZXQgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG1heEFnZVNlYywgZG9tYWluLCBwYXRoKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKF9pc01nckVuYWJsZWQoY29va2llTWdyKSAmJiAhX2lzQmxvY2tlZENvb2tpZShjb29raWVNZ3JDb25maWcsIG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0ge307XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlVmFsdWUgPSBzdHJUcmltKHZhbHVlIHx8IFNUUl9FTVBUWSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gdGhlVmFsdWVbX0RZTl9JTkRFWF9PRiAvKiBAbWluOiUyZWluZGV4T2YgKi9dKFwiO1wiKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlVmFsdWUgPSBzdHJUcmltKHZhbHVlW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgwLCBpZHgpKTtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBfZXh0cmFjdFBhcnRzKHZhbHVlW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXShpZHggKyAxKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSBkb21haW4gaWYgbm90IGFscmVhZHkgcHJlc2VudCAoaXNVbmRlZmluZWQpIGFuZCB0aGUgdmFsdWUgaXMgdHJ1dGh5IChub3QgbnVsbCwgdW5kZWZpbmVkIG9yIGVtcHR5IHN0cmluZylcclxuICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbHVlcywgXCJkb21haW5cIiwgZG9tYWluIHx8IF9kb21haW4sIGlzVHJ1dGh5LCBpc1VuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG1heEFnZVNlYykpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX2lzSUUgPSBpc0lFKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlc1tzdHJFeHBpcmVzXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vd01zID0gZGF0ZU5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFkZCBleHBpcmVzIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGlyZU1zID0gbm93TXMgKyAobWF4QWdlU2VjICogMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjaywgaWYgemVybyBvciAtdmUgdGhlbiBpZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGlyZU1zID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGV4cGlyeSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcnkuc2V0VGltZShleHBpcmVNcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh2YWx1ZXMsIHN0ckV4cGlyZXMsIF9mb3JtYXREYXRlKGV4cGlyeSwgIV9pc0lFID8gc3RyVG9VVENTdHJpbmcgOiBzdHJUb0dNVFN0cmluZykgfHwgX2Zvcm1hdERhdGUoZXhwaXJ5LCBfaXNJRSA/IHN0clRvR01UU3RyaW5nIDogc3RyVG9VVENTdHJpbmcpIHx8IFNUUl9FTVBUWSwgaXNUcnV0aHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX2lzSUUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSByZXBsYWNlIGlmIG5vdCBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodmFsdWVzLCBcIm1heC1hZ2VcIiwgU1RSX0VNUFRZICsgbWF4QWdlU2VjLCBudWxsLCBpc1VuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uXzEgPSBnZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uXzEgJiYgbG9jYXRpb25fMS5wcm90b2NvbCA9PT0gXCJodHRwczpcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbHVlcywgXCJzZWN1cmVcIiwgbnVsbCwgbnVsbCwgaXNVbmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgc2V0IHNhbWUgc2l0ZSBpZiBub3QgYWxzbyBzZWN1cmVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2FsbG93VWFTYW1lU2l0ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfYWxsb3dVYVNhbWVTaXRlID0gIXVhRGlzYWxsb3dzU2FtZVNpdGVOb25lKChnZXROYXZpZ2F0b3IoKSB8fCB7fSlbX0RZTl9VU0VSX0FHRU5UIC8qIEBtaW46JTJldXNlckFnZW50ICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfYWxsb3dVYVNhbWVTaXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbHVlcywgXCJTYW1lU2l0ZVwiLCBcIk5vbmVcIiwgbnVsbCwgaXNVbmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbHVlcywgXCJwYXRoXCIsIHBhdGggfHwgX3BhdGgsIG51bGwsIGlzVW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBzZXRDb29raWVGbiA9IGNvb2tpZU1nckNvbmZpZy5zZXRDb29raWUgfHwgX3NldENvb2tpZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgc2V0Q29va2llRm4obmFtZSwgX2Zvcm1hdENvb2tpZVZhbHVlKHRoZVZhbHVlLCB2YWx1ZXMpKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9hLmdldCA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IFNUUl9FTVBUWTtcclxuICAgICAgICAgICAgaWYgKF9pc01nckVuYWJsZWQoY29va2llTWdyKSAmJiAhX2lzSWdub3JlZENvb2tpZShjb29raWVNZ3JDb25maWcsIG5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IChjb29raWVNZ3JDb25maWcuZ2V0Q29va2llIHx8IF9nZXRDb29raWVWYWx1ZSkobmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2EuZGVsID0gZnVuY3Rpb24gKG5hbWUsIHBhdGgpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAoX2lzTWdyRW5hYmxlZChjb29raWVNZ3IpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPbmx5IHJlbW92ZSB0aGUgY29va2llIGlmIHRoZSBtYW5hZ2VyIGFuZCBjb29raWUgc3VwcG9ydCBoYXMgbm90IGJlZW4gZGlzYWJsZWRcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvb2tpZU1nci5wdXJnZShuYW1lLCBwYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2EucHVyZ2UgPSBmdW5jdGlvbiAobmFtZSwgcGF0aCkge1xyXG4gICAgICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGFyZUNvb2tpZXNTdXBwb3J0ZWQobG9nZ2VyKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2V0dGluZyB0aGUgZXhwaXJhdGlvbiBkYXRlIGluIHRoZSBwYXN0IGltbWVkaWF0ZWx5IHJlbW92ZXMgdGhlIGNvb2tpZVxyXG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IChfYSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgIF9hW1wicGF0aFwiXSA9IHBhdGggPyBwYXRoIDogXCIvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgX2Fbc3RyRXhwaXJlc10gPSBcIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgX2EpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc0lFKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgbWF4IGFnZSB0byBleHBpcmUgbm93XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzW1wibWF4LWFnZVwiXSA9IFwiMFwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGRlbENvb2tpZSA9IGNvb2tpZU1nckNvbmZpZy5kZWxDb29raWUgfHwgX3NldENvb2tpZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgZGVsQ29va2llKG5hbWUsIF9mb3JtYXRDb29raWVWYWx1ZShTVFJfRU1QVFksIHZhbHVlcykpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2EpO1xyXG4gICAgLy8gQXNzb2NpYXRlZCB0aGlzIGNvb2tpZSBtYW5hZ2VyIHdpdGggdGhlIGNvbmZpZ1xyXG4gICAgY29va2llTWdyW3N0ckNvbmZpZ0Nvb2tpZU1ncl0gPSBjb29raWVNZ3I7XHJcbiAgICByZXR1cm4gY29va2llTWdyO1xyXG59XHJcbi8qXHJcbiogSGVscGVyIG1ldGhvZCB0byB0ZWxsIGlmIGRvY3VtZW50LmNvb2tpZSBvYmplY3QgaXMgc3VwcG9ydGVkIGJ5IHRoZSBydW50aW1lXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcmVDb29raWVzU3VwcG9ydGVkKGxvZ2dlcikge1xyXG4gICAgaWYgKF9zdXBwb3J0c0Nvb2tpZXMgPT09IG51bGwpIHtcclxuICAgICAgICBfc3VwcG9ydHNDb29raWVzID0gZmFsc2U7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIGRvYyA9IF9kb2MgfHwge307XHJcbiAgICAgICAgICAgIF9zdXBwb3J0c0Nvb2tpZXMgPSBkb2Nbc3RyQ29va2llXSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA2OCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNhbm5vdEFjY2Vzc0Nvb2tpZSAqLywgXCJDYW5ub3QgYWNjZXNzIGRvY3VtZW50LmNvb2tpZSAtIFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9zdXBwb3J0c0Nvb2tpZXM7XHJcbn1cclxuZnVuY3Rpb24gX2V4dHJhY3RQYXJ0cyh0aGVWYWx1ZSkge1xyXG4gICAgdmFyIHZhbHVlcyA9IHt9O1xyXG4gICAgaWYgKHRoZVZhbHVlICYmIHRoZVZhbHVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSkge1xyXG4gICAgICAgIHZhciBwYXJ0cyA9IHN0clRyaW0odGhlVmFsdWUpW19EWU5fU1BMSVQgLyogQG1pbjolMmVzcGxpdCAqL10oXCI7XCIpO1xyXG4gICAgICAgIGFyckZvckVhY2gocGFydHMsIGZ1bmN0aW9uICh0aGVQYXJ0KSB7XHJcbiAgICAgICAgICAgIHRoZVBhcnQgPSBzdHJUcmltKHRoZVBhcnQgfHwgU1RSX0VNUFRZKTtcclxuICAgICAgICAgICAgaWYgKHRoZVBhcnQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpZHggPSB0aGVQYXJ0W19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShcIj1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1t0aGVQYXJ0XSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbc3RyVHJpbSh0aGVQYXJ0W19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgwLCBpZHgpKV0gPSBzdHJUcmltKHRoZVBhcnRbX0RZTl9TVUJTVFJJTkcgLyogQG1pbjolMmVzdWJzdHJpbmcgKi9dKGlkeCArIDEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxufVxyXG5mdW5jdGlvbiBfZm9ybWF0RGF0ZSh0aGVEYXRlLCBmdW5jKSB7XHJcbiAgICBpZiAoaXNGdW5jdGlvbih0aGVEYXRlW2Z1bmNdKSkge1xyXG4gICAgICAgIHJldHVybiB0aGVEYXRlW2Z1bmNdKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5mdW5jdGlvbiBfZm9ybWF0Q29va2llVmFsdWUodmFsdWUsIHZhbHVlcykge1xyXG4gICAgdmFyIGNvb2tpZVZhbHVlID0gdmFsdWUgfHwgU1RSX0VNUFRZO1xyXG4gICAgb2JqRm9yRWFjaEtleSh2YWx1ZXMsIGZ1bmN0aW9uIChuYW1lLCB0aGVWYWx1ZSkge1xyXG4gICAgICAgIGNvb2tpZVZhbHVlICs9IFwiOyBcIiArIG5hbWUgKyAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoZVZhbHVlKSA/IFwiPVwiICsgdGhlVmFsdWUgOiBTVFJfRU1QVFkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29va2llVmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gX2dldENvb2tpZVZhbHVlKG5hbWUpIHtcclxuICAgIHZhciBjb29raWVWYWx1ZSA9IFNUUl9FTVBUWTtcclxuICAgIGlmIChfZG9jKSB7XHJcbiAgICAgICAgdmFyIHRoZUNvb2tpZSA9IF9kb2Nbc3RyQ29va2llXSB8fCBTVFJfRU1QVFk7XHJcbiAgICAgICAgaWYgKF9wYXJzZWRDb29raWVWYWx1ZSAhPT0gdGhlQ29va2llKSB7XHJcbiAgICAgICAgICAgIF9jb29raWVDYWNoZSA9IF9leHRyYWN0UGFydHModGhlQ29va2llKTtcclxuICAgICAgICAgICAgX3BhcnNlZENvb2tpZVZhbHVlID0gdGhlQ29va2llO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb29raWVWYWx1ZSA9IHN0clRyaW0oX2Nvb2tpZUNhY2hlW25hbWVdIHx8IFNUUl9FTVBUWSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29va2llVmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gX3NldENvb2tpZVZhbHVlKG5hbWUsIGNvb2tpZVZhbHVlKSB7XHJcbiAgICBpZiAoX2RvYykge1xyXG4gICAgICAgIF9kb2Nbc3RyQ29va2llXSA9IG5hbWUgKyBcIj1cIiArIGNvb2tpZVZhbHVlO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1YURpc2FsbG93c1NhbWVTaXRlTm9uZSh1c2VyQWdlbnQpIHtcclxuICAgIGlmICghaXNTdHJpbmcodXNlckFnZW50KSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIENvdmVyIGFsbCBpT1MgYmFzZWQgYnJvd3NlcnMgaGVyZS4gVGhpcyBpbmNsdWRlczpcclxuICAgIC8vIC0gU2FmYXJpIG9uIGlPUyAxMiBmb3IgaVBob25lLCBpUG9kIFRvdWNoLCBpUGFkXHJcbiAgICAvLyAtIFdrV2VidmlldyBvbiBpT1MgMTIgZm9yIGlQaG9uZSwgaVBvZCBUb3VjaCwgaVBhZFxyXG4gICAgLy8gLSBDaHJvbWUgb24gaU9TIDEyIGZvciBpUGhvbmUsIGlQb2QgVG91Y2gsIGlQYWRcclxuICAgIC8vIEFsbCBvZiB3aGljaCBhcmUgYnJva2VuIGJ5IFNhbWVTaXRlPU5vbmUsIGJlY2F1c2UgdGhleSB1c2UgdGhlIGlPUyBuZXR3b3JraW5nIHN0YWNrXHJcbiAgICBpZiAoc3RyQ29udGFpbnModXNlckFnZW50LCBcIkNQVSBpUGhvbmUgT1MgMTJcIikgfHwgc3RyQ29udGFpbnModXNlckFnZW50LCBcImlQYWQ7IENQVSBPUyAxMlwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQ292ZXIgTWFjIE9TIFggYmFzZWQgYnJvd3NlcnMgdGhhdCB1c2UgdGhlIE1hYyBPUyBuZXR3b3JraW5nIHN0YWNrLiBUaGlzIGluY2x1ZGVzOlxyXG4gICAgLy8gLSBTYWZhcmkgb24gTWFjIE9TIFhcclxuICAgIC8vIFRoaXMgZG9lcyBub3QgaW5jbHVkZTpcclxuICAgIC8vIC0gSW50ZXJuYWwgYnJvd3NlciBvbiBNYWMgT1MgWFxyXG4gICAgLy8gLSBDaHJvbWUgb24gTWFjIE9TIFhcclxuICAgIC8vIC0gQ2hyb21pdW0gb24gTWFjIE9TIFhcclxuICAgIC8vIEJlY2F1c2UgdGhleSBkbyBub3QgdXNlIHRoZSBNYWMgT1MgbmV0d29ya2luZyBzdGFjay5cclxuICAgIGlmIChzdHJDb250YWlucyh1c2VyQWdlbnQsIFwiTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNFwiKSAmJiBzdHJDb250YWlucyh1c2VyQWdlbnQsIFwiVmVyc2lvbi9cIikgJiYgc3RyQ29udGFpbnModXNlckFnZW50LCBcIlNhZmFyaVwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQ292ZXIgTWFjIE9TIFggaW50ZXJuYWwgYnJvd3NlcnMgdGhhdCB1c2UgdGhlIE1hYyBPUyBuZXR3b3JraW5nIHN0YWNrLiBUaGlzIGluY2x1ZGVzOlxyXG4gICAgLy8gLSBJbnRlcm5hbCBicm93c2VyIG9uIE1hYyBPUyBYXHJcbiAgICAvLyBUaGlzIGRvZXMgbm90IGluY2x1ZGU6XHJcbiAgICAvLyAtIFNhZmFyaSBvbiBNYWMgT1MgWFxyXG4gICAgLy8gLSBDaHJvbWUgb24gTWFjIE9TIFhcclxuICAgIC8vIC0gQ2hyb21pdW0gb24gTWFjIE9TIFhcclxuICAgIC8vIEJlY2F1c2UgdGhleSBkbyBub3QgdXNlIHRoZSBNYWMgT1MgbmV0d29ya2luZyBzdGFjay5cclxuICAgIGlmIChzdHJDb250YWlucyh1c2VyQWdlbnQsIFwiTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNFwiKSAmJiBzdHJFbmRzV2l0aCh1c2VyQWdlbnQsIFwiQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKVwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gQ292ZXIgQ2hyb21lIDUwLTY5LCBiZWNhdXNlIHNvbWUgdmVyc2lvbnMgYXJlIGJyb2tlbiBieSBTYW1lU2l0ZT1Ob25lLCBhbmQgbm9uZSBpbiB0aGlzIHJhbmdlIHJlcXVpcmUgaXQuXHJcbiAgICAvLyBOb3RlOiB0aGlzIGNvdmVycyBzb21lIHByZS1DaHJvbWl1bSBFZGdlIHZlcnNpb25zLCBidXQgcHJlLUNocm9taW0gRWRnZSBkb2VzIG5vdCByZXF1aXJlIFNhbWVTaXRlPU5vbmUsIHNvIHRoaXMgaXMgZmluZS5cclxuICAgIC8vIE5vdGU6IHRoaXMgcmVnZXggYXBwbGllcyB0byBXaW5kb3dzLCBNYWMgT1MgWCwgYW5kIExpbnV4LCBkZWxpYmVyYXRlbHkuXHJcbiAgICBpZiAoc3RyQ29udGFpbnModXNlckFnZW50LCBcIkNocm9tZS81XCIpIHx8IHN0ckNvbnRhaW5zKHVzZXJBZ2VudCwgXCJDaHJvbWUvNlwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gVW5yZWFsIEVuZ2luZSBydW5zIENocm9taXVtIDU5LCBidXQgZG9lcyBub3QgYWR2ZXJ0aXNlIGFzIENocm9tZSB1bnRpbCA0LjIzLiBUcmVhdCB2ZXJzaW9ucyBvZiBVbnJlYWxcclxuICAgIC8vIHRoYXQgZG9uJ3Qgc3BlY2lmeSB0aGVpciBDaHJvbWUgdmVyc2lvbiBhcyBsYWNraW5nIHN1cHBvcnQgZm9yIFNhbWVTaXRlPU5vbmUuXHJcbiAgICBpZiAoc3RyQ29udGFpbnModXNlckFnZW50LCBcIlVucmVhbEVuZ2luZVwiKSAmJiAhc3RyQ29udGFpbnModXNlckFnZW50LCBcIkNocm9tZVwiKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gVUNCcm93c2VyIDwgMTIuMTMuMiBpZ25vcmVzIFNldC1Db29raWUgaGVhZGVycyB3aXRoIFNhbWVTaXRlPU5vbmVcclxuICAgIC8vIE5COiB0aGlzIHJ1bGUgaXNuJ3QgY29tcGxldGUgLSB5b3UgbmVlZCByZWdleCB0byBtYWtlIGEgY29tcGxldGUgcnVsZS5cclxuICAgIC8vIFNlZTogaHR0cHM6Ly93d3cuY2hyb21pdW0ub3JnL3VwZGF0ZXMvc2FtZS1zaXRlL2luY29tcGF0aWJsZS1jbGllbnRzXHJcbiAgICBpZiAoc3RyQ29udGFpbnModXNlckFnZW50LCBcIlVDQnJvd3Nlci8xMlwiKSB8fCBzdHJDb250YWlucyh1c2VyQWdlbnQsIFwiVUNCcm93c2VyLzExXCIpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Q29va2llTWdyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IF9EWU5fSEFORExFUiwgX0RZTl9MRU5HVEgsIF9EWU5fTkFNRSwgX0RZTl9QVVNILCBfRFlOX1JFUExBQ0UsIF9EWU5fU1BMSUNFLCBfRFlOX1NQTElULCBfRFlOX1RZUEUgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUVsbU5vZGVEYXRhLCBjcmVhdGVVbmlxdWVOYW1lc3BhY2UgfSBmcm9tIFwiLi9EYXRhQ2FjaGVIZWxwZXJcIjtcclxuaW1wb3J0IHsgZ2V0RG9jdW1lbnQsIGdldFdpbmRvdyB9IGZyb20gXCIuL0VudlV0aWxzXCI7XHJcbmltcG9ydCB7IGFyckZvckVhY2gsIGFyckluZGV4T2YsIGlzQXJyYXksIG9iakZvckVhY2hLZXksIG9iaktleXMgfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBTVFJfRU1QVFkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG4vLyBBZGRlZCB0byBoZWxwIHdpdGggbWluZmljYXRpb25cclxudmFyIHN0ck9uUHJlZml4ID0gXCJvblwiO1xyXG52YXIgc3RyQXR0YWNoRXZlbnQgPSBcImF0dGFjaEV2ZW50XCI7XHJcbnZhciBzdHJBZGRFdmVudEhlbHBlciA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiO1xyXG52YXIgc3RyRGV0YWNoRXZlbnQgPSBcImRldGFjaEV2ZW50XCI7XHJcbnZhciBzdHJSZW1vdmVFdmVudExpc3RlbmVyID0gXCJyZW1vdmVFdmVudExpc3RlbmVyXCI7XHJcbnZhciBzdHJFdmVudHMgPSBcImV2ZW50c1wiO1xyXG52YXIgc3RyVmlzaWJpbGl0eUNoYW5nZUV2dCA9IFwidmlzaWJpbGl0eWNoYW5nZVwiO1xyXG52YXIgc3RyUGFnZUhpZGUgPSBcInBhZ2VoaWRlXCI7XHJcbnZhciBzdHJQYWdlU2hvdyA9IFwicGFnZXNob3dcIjtcclxudmFyIHN0clVubG9hZCA9IFwidW5sb2FkXCI7XHJcbnZhciBzdHJCZWZvcmVVbmxvYWQgPSBcImJlZm9yZXVubG9hZFwiO1xyXG52YXIgc3RyUGFnZUhpZGVOYW1lc3BhY2UgPSBjcmVhdGVVbmlxdWVOYW1lc3BhY2UoXCJhaUV2dFBhZ2VIaWRlXCIpO1xyXG52YXIgc3RyUGFnZVNob3dOYW1lc3BhY2UgPSBjcmVhdGVVbmlxdWVOYW1lc3BhY2UoXCJhaUV2dFBhZ2VTaG93XCIpO1xyXG52YXIgclJlbW92ZUVtcHR5TnMgPSAvXFwuW1xcLl0rL2c7XHJcbnZhciByUmVtb3ZlVHJhaWxpbmdFbXB0eU5zID0gL1tcXC5dKyQvO1xyXG52YXIgX2d1aWQgPSAxO1xyXG52YXIgZWxtTm9kZURhdGEgPSBjcmVhdGVFbG1Ob2RlRGF0YShcImV2ZW50c1wiKTtcclxudmFyIGV2ZW50TmFtZXNwYWNlID0gL14oW14uXSopKD86XFwuKC4rKXwpLztcclxuZnVuY3Rpb24gX25vcm1hbGl6ZU5hbWVzcGFjZShuYW1lKSB7XHJcbiAgICBpZiAobmFtZSAmJiBuYW1lW19EWU5fUkVQTEFDRSAvKiBAbWluOiUyZXJlcGxhY2UgKi9dKSB7XHJcbiAgICAgICAgcmV0dXJuIG5hbWVbX0RZTl9SRVBMQUNFIC8qIEBtaW46JTJlcmVwbGFjZSAqL10oL15bXFxzXFwuXSt8KD89W1xcc1xcLl0pW1xcLlxcc10rJC9nLCBTVFJfRU1QVFkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5hbWU7XHJcbn1cclxuZnVuY3Rpb24gX2dldEV2dE5hbWVzcGFjZShldmVudE5hbWUsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgaWYgKGV2dE5hbWVzcGFjZSkge1xyXG4gICAgICAgIHZhciB0aGVOYW1lc3BhY2VfMSA9IFNUUl9FTVBUWTtcclxuICAgICAgICBpZiAoaXNBcnJheShldnROYW1lc3BhY2UpKSB7XHJcbiAgICAgICAgICAgIHRoZU5hbWVzcGFjZV8xID0gU1RSX0VNUFRZO1xyXG4gICAgICAgICAgICBhcnJGb3JFYWNoKGV2dE5hbWVzcGFjZSwgZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBfbm9ybWFsaXplTmFtZXNwYWNlKG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZVswXSAhPT0gXCIuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFwiLlwiICsgbmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlTmFtZXNwYWNlXzEgKz0gbmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGVOYW1lc3BhY2VfMSA9IF9ub3JtYWxpemVOYW1lc3BhY2UoZXZ0TmFtZXNwYWNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoZU5hbWVzcGFjZV8xKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGVOYW1lc3BhY2VfMVswXSAhPT0gXCIuXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoZU5hbWVzcGFjZV8xID0gXCIuXCIgKyB0aGVOYW1lc3BhY2VfMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBXZSBtYXkgb25seSBoYXZlIHRoZSBuYW1lc3BhY2UgYW5kIG5vdCBhbiBldmVudE5hbWVcclxuICAgICAgICAgICAgZXZlbnROYW1lID0gKGV2ZW50TmFtZSB8fCBTVFJfRU1QVFkpICsgdGhlTmFtZXNwYWNlXzE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdmFyIHBhcnNlZEV2ZW50ID0gKGV2ZW50TmFtZXNwYWNlLmV4ZWMoZXZlbnROYW1lIHx8IFNUUl9FTVBUWSkgfHwgW10pO1xyXG4gICAgcmV0dXJuIF9hID0ge30sXHJcbiAgICAgICAgX2FbX0RZTl9UWVBFIC8qIEBtaW46dHlwZSAqL10gPSBwYXJzZWRFdmVudFsxXSxcclxuICAgICAgICBfYS5ucyA9ICgocGFyc2VkRXZlbnRbMl0gfHwgU1RSX0VNUFRZKS5yZXBsYWNlKHJSZW1vdmVFbXB0eU5zLCBcIi5cIikucmVwbGFjZShyUmVtb3ZlVHJhaWxpbmdFbXB0eU5zLCBTVFJfRU1QVFkpW19EWU5fU1BMSVQgLyogQG1pbjolMmVzcGxpdCAqL10oXCIuXCIpLnNvcnQoKSkuam9pbihcIi5cIiksXHJcbiAgICAgICAgX2E7XHJcbn1cclxuLyoqXHJcbiAqIEdldCBhbGwgb2YgdGhlIHJlZ2lzdGVyZWQgZXZlbnRzIG9uIHRoZSB0YXJnZXQgb2JqZWN0LCB0aGlzIGlzIHByaW1hcmlseSB1c2VkIGZvciB0ZXN0aW5nIGNsZWFudXAgYnV0IG1heSBhbHNvIGJlIHVzZWQgYnlcclxuICogYXBwbGljYXRpb25zIHRvIHJlbW92ZSB0aGVpciBvd24gZXZlbnRzXHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgRXZlbnRUYXJnZXQgdGhhdCBoYXMgcmVnaXN0ZXJlZCBldmVudHNcclxuICogQHBhcmFtIGV2ZW50TmFtZSAtIFtPcHRpb25hbF0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIHJldHVybiB0aGUgcmVnaXN0ZXJlZCBoYW5kbGVycyBhbmQgZnVsbCBuYW1lICh3aXRoIG5hbWVzcGFjZXMpXHJcbiAqIEBwYXJhbSBldnROYW1lc3BhY2UgLSBbT3B0aW9uYWxdIEFkZGl0aW9uYWwgbmFtZXNwYWNlKHMpIHRvIGFwcGVuZCB0byB0aGUgZXZlbnQgbGlzdGVuZXJzIHNvIHRoZXkgY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQgYW5kIHJlbW92ZWQgYmFzZWQgb24gdGhpcyBuYW1lc3BhY2UsXHJcbiAqIGlmIHRoZSBldmVudE5hbWUgYWxzbyBpbmNsdWRlcyBhIG5hbWVzcGFjZSB0aGUgbmFtZXNwYWNlKHMpIGFyZSBtZXJnZWQgaW50byBhIHNpbmdsZSBuYW1lc3BhY2VcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dldFJlZ2lzdGVyZWRFdmVudHModGFyZ2V0LCBldmVudE5hbWUsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgdmFyIHRoZUV2ZW50cyA9IFtdO1xyXG4gICAgdmFyIGV2ZW50Q2FjaGUgPSBlbG1Ob2RlRGF0YS5nZXQodGFyZ2V0LCBzdHJFdmVudHMsIHt9LCBmYWxzZSk7XHJcbiAgICB2YXIgZXZ0TmFtZSA9IF9nZXRFdnROYW1lc3BhY2UoZXZlbnROYW1lLCBldnROYW1lc3BhY2UpO1xyXG4gICAgb2JqRm9yRWFjaEtleShldmVudENhY2hlLCBmdW5jdGlvbiAoZXZ0VHlwZSwgcmVnaXN0ZXJlZEV2ZW50cykge1xyXG4gICAgICAgIGFyckZvckVhY2gocmVnaXN0ZXJlZEV2ZW50cywgZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgaWYgKCFldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dIHx8IGV2dE5hbWVbX0RZTl9UWVBFIC8qIEBtaW46JTJldHlwZSAqL10gPT09IHZhbHVlLmV2dE5hbWVbX0RZTl9UWVBFIC8qIEBtaW46JTJldHlwZSAqL10pIHtcclxuICAgICAgICAgICAgICAgIGlmICghZXZ0TmFtZS5ucyB8fCBldnROYW1lLm5zID09PSBldnROYW1lLm5zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlRXZlbnRzW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKChfYSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX05BTUUgLyogQG1pbjpuYW1lICovXSA9IHZhbHVlLmV2dE5hbWVbX0RZTl9UWVBFIC8qIEBtaW46JTJldHlwZSAqL10gKyAodmFsdWUuZXZ0TmFtZS5ucyA/IFwiLlwiICsgdmFsdWUuZXZ0TmFtZS5ucyA6IFNUUl9FTVBUWSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmhhbmRsZXIgPSB2YWx1ZVtfRFlOX0hBTkRMRVIgLyogQG1pbjolMmVoYW5kbGVyICovXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2EpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhlRXZlbnRzO1xyXG59XHJcbi8vIEV4cG9ydGVkIGZvciBpbnRlcm5hbCB1bml0IHRlc3Rpbmcgb25seVxyXG5mdW5jdGlvbiBfZ2V0UmVnaXN0ZXJlZEV2ZW50cyh0YXJnZXQsIGV2dE5hbWUsIGFkZERlZmF1bHQpIHtcclxuICAgIGlmIChhZGREZWZhdWx0ID09PSB2b2lkIDApIHsgYWRkRGVmYXVsdCA9IHRydWU7IH1cclxuICAgIHZhciBhaUV2dHMgPSBlbG1Ob2RlRGF0YS5nZXQodGFyZ2V0LCBzdHJFdmVudHMsIHt9LCBhZGREZWZhdWx0KTtcclxuICAgIHZhciByZWdpc3RlcmVkRXZlbnRzID0gYWlFdnRzW2V2dE5hbWVdO1xyXG4gICAgaWYgKCFyZWdpc3RlcmVkRXZlbnRzKSB7XHJcbiAgICAgICAgcmVnaXN0ZXJlZEV2ZW50cyA9IGFpRXZ0c1tldnROYW1lXSA9IFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRFdmVudHM7XHJcbn1cclxuZnVuY3Rpb24gX2RvRGV0YWNoKG9iaiwgZXZ0TmFtZSwgaGFuZGxlclJlZiwgdXNlQ2FwdHVyZSkge1xyXG4gICAgaWYgKG9iaiAmJiBldnROYW1lICYmIGV2dE5hbWVbX0RZTl9UWVBFIC8qIEBtaW46JTJldHlwZSAqL10pIHtcclxuICAgICAgICBpZiAob2JqW3N0clJlbW92ZUV2ZW50TGlzdGVuZXJdKSB7XHJcbiAgICAgICAgICAgIG9ialtzdHJSZW1vdmVFdmVudExpc3RlbmVyXShldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dLCBoYW5kbGVyUmVmLCB1c2VDYXB0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob2JqW3N0ckRldGFjaEV2ZW50XSkge1xyXG4gICAgICAgICAgICBvYmpbc3RyRGV0YWNoRXZlbnRdKHN0ck9uUHJlZml4ICsgZXZ0TmFtZVtfRFlOX1RZUEUgLyogQG1pbjolMmV0eXBlICovXSwgaGFuZGxlclJlZik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIF9kb0F0dGFjaChvYmosIGV2dE5hbWUsIGhhbmRsZXJSZWYsIHVzZUNhcHR1cmUpIHtcclxuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgIGlmIChvYmogJiYgZXZ0TmFtZSAmJiBldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dICYmIGhhbmRsZXJSZWYpIHtcclxuICAgICAgICBpZiAob2JqW3N0ckFkZEV2ZW50SGVscGVyXSkge1xyXG4gICAgICAgICAgICAvLyBhbGwgYnJvd3NlcnMgZXhjZXB0IElFIGJlZm9yZSB2ZXJzaW9uIDlcclxuICAgICAgICAgICAgb2JqW3N0ckFkZEV2ZW50SGVscGVyXShldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dLCBoYW5kbGVyUmVmLCB1c2VDYXB0dXJlKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAob2JqW3N0ckF0dGFjaEV2ZW50XSkge1xyXG4gICAgICAgICAgICAvLyBJRSBiZWZvcmUgdmVyc2lvbiA5XHJcbiAgICAgICAgICAgIG9ialtzdHJBdHRhY2hFdmVudF0oc3RyT25QcmVmaXggKyBldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dLCBoYW5kbGVyUmVmKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmZ1bmN0aW9uIF9kb1VucmVnaXN0ZXIodGFyZ2V0LCBldmVudHMsIGV2dE5hbWUsIHVuUmVnRm4pIHtcclxuICAgIHZhciBpZHggPSBldmVudHNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgd2hpbGUgKGlkeC0tKSB7XHJcbiAgICAgICAgdmFyIHRoZUV2ZW50ID0gZXZlbnRzW2lkeF07XHJcbiAgICAgICAgaWYgKHRoZUV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmICghZXZ0TmFtZS5ucyB8fCBldnROYW1lLm5zID09PSB0aGVFdmVudC5ldnROYW1lLm5zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXVuUmVnRm4gfHwgdW5SZWdGbih0aGVFdmVudCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZG9EZXRhY2godGFyZ2V0LCB0aGVFdmVudC5ldnROYW1lLCB0aGVFdmVudFtfRFlOX0hBTkRMRVIgLyogQG1pbjolMmVoYW5kbGVyICovXSwgdGhlRXZlbnQuY2FwdHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSByZWdpc3RlcmVkIGV2ZW50XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzW19EWU5fU1BMSUNFIC8qIEBtaW46JTJlc3BsaWNlICovXShpZHgsIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIF91bnJlZ2lzdGVyRXZlbnRzKHRhcmdldCwgZXZ0TmFtZSwgdW5SZWdGbikge1xyXG4gICAgaWYgKGV2dE5hbWVbX0RZTl9UWVBFIC8qIEBtaW46JTJldHlwZSAqL10pIHtcclxuICAgICAgICBfZG9VbnJlZ2lzdGVyKHRhcmdldCwgX2dldFJlZ2lzdGVyZWRFdmVudHModGFyZ2V0LCBldnROYW1lW19EWU5fVFlQRSAvKiBAbWluOiUyZXR5cGUgKi9dKSwgZXZ0TmFtZSwgdW5SZWdGbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB2YXIgZXZlbnRDYWNoZSA9IGVsbU5vZGVEYXRhLmdldCh0YXJnZXQsIHN0ckV2ZW50cywge30pO1xyXG4gICAgICAgIG9iakZvckVhY2hLZXkoZXZlbnRDYWNoZSwgZnVuY3Rpb24gKGV2dFR5cGUsIGV2ZW50cykge1xyXG4gICAgICAgICAgICBfZG9VbnJlZ2lzdGVyKHRhcmdldCwgZXZlbnRzLCBldnROYW1lLCB1blJlZ0ZuKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBDbGVhbnVwXHJcbiAgICAgICAgaWYgKG9iaktleXMoZXZlbnRDYWNoZSlbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAwKSB7XHJcbiAgICAgICAgICAgIGVsbU5vZGVEYXRhLmtpbGwodGFyZ2V0LCBzdHJFdmVudHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VFdnROYW1lc3BhY2UodGhlTmFtZXNwYWNlLCBuYW1lc3BhY2VzKSB7XHJcbiAgICB2YXIgbmV3TmFtZXNwYWNlcztcclxuICAgIGlmIChuYW1lc3BhY2VzKSB7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkobmFtZXNwYWNlcykpIHtcclxuICAgICAgICAgICAgbmV3TmFtZXNwYWNlcyA9IFt0aGVOYW1lc3BhY2VdLmNvbmNhdChuYW1lc3BhY2VzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5ld05hbWVzcGFjZXMgPSBbdGhlTmFtZXNwYWNlLCBuYW1lc3BhY2VzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcmVzb3J0IHRoZSBuYW1lc3BhY2VzIHNvIHRoZXkgYXJlIGFsd2F5cyBpbiBvcmRlclxyXG4gICAgICAgIG5ld05hbWVzcGFjZXMgPSAoX2dldEV2dE5hbWVzcGFjZShcInh4XCIsIG5ld05hbWVzcGFjZXMpLm5zKVtfRFlOX1NQTElUIC8qIEBtaW46JTJlc3BsaXQgKi9dKFwiLlwiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIG5ld05hbWVzcGFjZXMgPSB0aGVOYW1lc3BhY2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3TmFtZXNwYWNlcztcclxufVxyXG4vKipcclxuICogQmluZHMgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiB0byBhbiBldmVudCwgc28gdGhhdCB0aGUgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGV2ZW50IGZpcmVzIG9uIHRoZSBvYmplY3RcclxuICogQHBhcmFtIG9iaiBPYmplY3QgdG8gYWRkIHRoZSBldmVudCB0b28uXHJcbiAqIEBwYXJhbSBldmVudE5hbWUgU3RyaW5nIHRoYXQgc3BlY2lmaWVzIGFueSBvZiB0aGUgc3RhbmRhcmQgREhUTUwgRXZlbnRzIHdpdGhvdXQgXCJvblwiIHByZWZpeCwgaWYgbWF5IGFsc28gaW5jbHVkZSBhbiBvcHRpb25hbCAoZG90IFwiLlwiIHByZWZpeGVkKVxyXG4gKiBuYW1lc3BhY2VzIFwiY2xpY2tcIiBcImNsaWNrLm15bmFtZXNwYWNlXCIgaW4gYWRkaXRpb24gdG8gc3BlY2lmaWMgbmFtZXNwYWNlcy5cclxuICogQHBhcmFtIGhhbmRsZXJSZWYgUG9pbnRlciB0aGF0IHNwZWNpZmllcyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGV2ZW50IGZpcmVzXHJcbiAqIEBwYXJhbSBldnROYW1lc3BhY2UgLSBbT3B0aW9uYWxdIEFkZGl0aW9uYWwgbmFtZXNwYWNlKHMpIHRvIGFwcGVuZCB0byB0aGUgZXZlbnQgbGlzdGVuZXJzIHNvIHRoZXkgY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQgYW5kIHJlbW92ZWQgYmFzZWQgb24gdGhpcyBuYW1lc3BhY2UsXHJcbiAqIGlmIHRoZSBldmVudE5hbWUgYWxzbyBpbmNsdWRlcyBhIG5hbWVzcGFjZSB0aGUgbmFtZXNwYWNlKHMpIGFyZSBtZXJnZWQgaW50byBhIHNpbmdsZSBuYW1lc3BhY2VcclxuICogQHBhcmFtIHVzZUNhcHR1cmUgW09wdGlvbmFsXSBEZWZhdWx0cyB0byBmYWxzZVxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBmdW5jdGlvbiB3YXMgYm91bmQgc3VjY2Vzc2Z1bGx5IHRvIHRoZSBldmVudCwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRPbih0YXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlclJlZiwgZXZ0TmFtZXNwYWNlLCB1c2VDYXB0dXJlKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICBpZiAodXNlQ2FwdHVyZSA9PT0gdm9pZCAwKSB7IHVzZUNhcHR1cmUgPSBmYWxzZTsgfVxyXG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBldnROYW1lID0gX2dldEV2dE5hbWVzcGFjZShldmVudE5hbWUsIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IF9kb0F0dGFjaCh0YXJnZXQsIGV2dE5hbWUsIGhhbmRsZXJSZWYsIHVzZUNhcHR1cmUpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ICYmIGVsbU5vZGVEYXRhLmFjY2VwdCh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVnaXN0ZXJlZEV2ZW50ID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBndWlkOiBfZ3VpZCsrLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBldnROYW1lOiBldnROYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX0hBTkRMRVIgLyogQG1pbjpoYW5kbGVyICovXSA9IGhhbmRsZXJSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgX2EuY2FwdHVyZSA9IHVzZUNhcHR1cmUsXHJcbiAgICAgICAgICAgICAgICAgICAgX2EpO1xyXG4gICAgICAgICAgICAgICAgX2dldFJlZ2lzdGVyZWRFdmVudHModGFyZ2V0LCBldnROYW1lLnR5cGUpW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHJlZ2lzdGVyZWRFdmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gSnVzdCBJZ25vcmUgYW55IGVycm9yIHNvIHRoYXQgd2UgZG9uJ3QgYnJlYWsgYW55IGV4ZWN1dGlvbiBwYXRoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKipcclxuICogUmVtb3ZlcyBhbiBldmVudCBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGV2ZW50XHJcbiAqIEBwYXJhbSBPYmplY3QgdG8gcmVtb3ZlIHRoZSBldmVudCBmcm9tXHJcbiAqIEBwYXJhbSBldmVudE5hbWUge3N0cmluZ30gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQsIHdpdGggb3B0aW9uYWwgbmFtZXNwYWNlcyBvciBqdXN0IHRoZSBuYW1lc3BhY2VzLFxyXG4gKiBzdWNoIGFzIFwiY2xpY2tcIiwgXCJjbGljay5teW5hbWVzcGFjZVwiIG9yIFwiLm15bmFtZXNwYWNlXCJcclxuICogQHBhcmFtIGhhbmRsZXJSZWYge2FueX0gLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGdpdmVuIGV2ZW50LCB3aGVuIHVzaW5nIGFcclxuICogbmFtZXNwYWNlICh3aXRoIG9yIHdpdGhvdXQgYSBxdWFsaWZ5aW5nIGV2ZW50KSB0aGlzIG1heSBiZSBudWxsIHRvIHJlbW92ZSBhbGwgcHJldmlvdXNseSBhdHRhY2hlZCBldmVudCBoYW5kbGVyc1xyXG4gKiBvdGhlcndpc2UgdGhpcyB3aWxsIG9ubHkgcmVtb3ZlIGV2ZW50cyB3aXRoIHRoaXMgc3BlY2lmaWMgaGFuZGxlci5cclxuICogQHBhcmFtIGV2dE5hbWVzcGFjZSAtIFtPcHRpb25hbF0gQWRkaXRpb25hbCBuYW1lc3BhY2UocykgdG8gYXBwZW5kIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZCBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZSxcclxuICogaWYgdGhlIGV2ZW50TmFtZSBhbHNvIGluY2x1ZGVzIGEgbmFtZXNwYWNlIHRoZSBuYW1lc3BhY2UocykgYXJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG5hbWVzcGFjZVxyXG4gKiBAcGFyYW0gdXNlQ2FwdHVyZSBbT3B0aW9uYWxdIERlZmF1bHRzIHRvIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRPZmYodGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXJSZWYsIGV2dE5hbWVzcGFjZSwgdXNlQ2FwdHVyZSkge1xyXG4gICAgaWYgKHVzZUNhcHR1cmUgPT09IHZvaWQgMCkgeyB1c2VDYXB0dXJlID0gZmFsc2U7IH1cclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgZXZ0TmFtZV8xID0gX2dldEV2dE5hbWVzcGFjZShldmVudE5hbWUsIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgIHZhciBmb3VuZF8xID0gZmFsc2U7XHJcbiAgICAgICAgICAgIF91bnJlZ2lzdGVyRXZlbnRzKHRhcmdldCwgZXZ0TmFtZV8xLCBmdW5jdGlvbiAocmVnRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIGlmICgoZXZ0TmFtZV8xLm5zICYmICFoYW5kbGVyUmVmKSB8fCByZWdFdmVudFtfRFlOX0hBTkRMRVIgLyogQG1pbjolMmVoYW5kbGVyICovXSA9PT0gaGFuZGxlclJlZikge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kXzEgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFmb3VuZF8xKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYWxsYmFjayB0byB0cnkgYW5kIHJlbW92ZSBhcyByZXF1ZXN0ZWRcclxuICAgICAgICAgICAgICAgIF9kb0RldGFjaCh0YXJnZXQsIGV2dE5hbWVfMSwgaGFuZGxlclJlZiwgdXNlQ2FwdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy8gSnVzdCBJZ25vcmUgYW55IGVycm9yIHNvIHRoYXQgd2UgZG9uJ3QgYnJlYWsgYW55IGV4ZWN1dGlvbiBwYXRoXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKiBCaW5kcyB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIHRvIGFuIGV2ZW50LCBzbyB0aGF0IHRoZSBmdW5jdGlvbiBnZXRzIGNhbGxlZCB3aGVuZXZlciB0aGUgZXZlbnQgZmlyZXMgb24gdGhlIG9iamVjdFxyXG4gKiBAcGFyYW0gb2JqIE9iamVjdCB0byBhZGQgdGhlIGV2ZW50IHRvby5cclxuICogQHBhcmFtIGV2ZW50TmFtZVdpdGhvdXRPbiBTdHJpbmcgdGhhdCBzcGVjaWZpZXMgYW55IG9mIHRoZSBzdGFuZGFyZCBESFRNTCBFdmVudHMgd2l0aG91dCBcIm9uXCIgcHJlZml4IGFuZCBvcHRpb25hbCAoZG90IFwiLlwiIHByZWZpeGVkKSBuYW1lc3BhY2VzIFwiY2xpY2tcIiBcImNsaWNrLm15bmFtZXNwYWNlXCIuXHJcbiAqIEBwYXJhbSBoYW5kbGVyUmVmIFBvaW50ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBldmVudCBmaXJlc1xyXG4gKiBAcGFyYW0gdXNlQ2FwdHVyZSBbT3B0aW9uYWxdIERlZmF1bHRzIHRvIGZhbHNlXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGZ1bmN0aW9uIHdhcyBib3VuZCBzdWNjZXNzZnVsbHkgdG8gdGhlIGV2ZW50LCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2hFdmVudChvYmosIGV2ZW50TmFtZVdpdGhvdXRPbiwgaGFuZGxlclJlZiwgdXNlQ2FwdHVyZSkge1xyXG4gICAgaWYgKHVzZUNhcHR1cmUgPT09IHZvaWQgMCkgeyB1c2VDYXB0dXJlID0gZmFsc2U7IH1cclxuICAgIHJldHVybiBldmVudE9uKG9iaiwgZXZlbnROYW1lV2l0aG91dE9uLCBoYW5kbGVyUmVmLCBudWxsLCB1c2VDYXB0dXJlKTtcclxufVxyXG4vKipcclxuICogUmVtb3ZlcyBhbiBldmVudCBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGV2ZW50XHJcbiAqIEBwYXJhbSBPYmplY3QgdG8gcmVtb3ZlIHRoZSBldmVudCBmcm9tXHJcbiAqIEBwYXJhbSBldmVudE5hbWVXaXRob3V0T24ge3N0cmluZ30gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQsIHdpdGggb3B0aW9uYWwgbmFtZXNwYWNlcyBvciBqdXN0IHRoZSBuYW1lc3BhY2VzLFxyXG4gKiBzdWNoIGFzIFwiY2xpY2tcIiwgXCJjbGljay5teW5hbWVzcGFjZVwiIG9yIFwiLm15bmFtZXNwYWNlXCJcclxuICogQHBhcmFtIGhhbmRsZXJSZWYge2FueX0gLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGdpdmVuIGV2ZW50LCB3aGVuIHVzaW5nIGFcclxuICogbmFtZXNwYWNlICh3aXRoIG9yIHdpdGhvdXQgYSBxdWFsaWZ5aW5nIGV2ZW50KSB0aGlzIG1heSBiZSBudWxsIHRvIHJlbW92ZSBhbGwgcHJldmlvdXNseSBhdHRhY2hlZCBldmVudCBoYW5kbGVyc1xyXG4gKiBvdGhlcndpc2UgdGhpcyB3aWxsIG9ubHkgcmVtb3ZlIGV2ZW50cyB3aXRoIHRoaXMgc3BlY2lmaWMgaGFuZGxlci5cclxuICogQHBhcmFtIHVzZUNhcHR1cmUgW09wdGlvbmFsXSBEZWZhdWx0cyB0byBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaEV2ZW50KG9iaiwgZXZlbnROYW1lV2l0aG91dE9uLCBoYW5kbGVyUmVmLCB1c2VDYXB0dXJlKSB7XHJcbiAgICBpZiAodXNlQ2FwdHVyZSA9PT0gdm9pZCAwKSB7IHVzZUNhcHR1cmUgPSBmYWxzZTsgfVxyXG4gICAgZXZlbnRPZmYob2JqLCBldmVudE5hbWVXaXRob3V0T24sIGhhbmRsZXJSZWYsIG51bGwsIHVzZUNhcHR1cmUpO1xyXG59XHJcbi8qKlxyXG4gKiBUcnlzIHRvIGFkZCBhbiBldmVudCBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGV2ZW50IHRvIHRoZSB3aW5kb3csIGJvZHkgYW5kIGRvY3VtZW50XHJcbiAqIEBwYXJhbSBldmVudE5hbWUge3N0cmluZ30gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRcclxuICogQHBhcmFtIGNhbGxiYWNrIHthbnl9IC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgZm9yIHRoZSBnaXZlbiBldmVudFxyXG4gKiBAcGFyYW0gZXZ0TmFtZXNwYWNlIC0gW09wdGlvbmFsXSBOYW1lc3BhY2UocykgdG8gYXBwZW5kIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZCBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZS5cclxuICogQHJldHVybiB7Ym9vbGVhbn0gLSB0cnVlIGlmIHRoZSBoYW5kbGVyIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRFdmVudEhhbmRsZXIoZXZlbnROYW1lLCBjYWxsYmFjaywgZXZ0TmFtZXNwYWNlKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICB2YXIgdyA9IGdldFdpbmRvdygpO1xyXG4gICAgaWYgKHcpIHtcclxuICAgICAgICByZXN1bHQgPSBldmVudE9uKHcsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgcmVzdWx0ID0gZXZlbnRPbih3W1wiYm9keVwiXSwgZXZlbnROYW1lLCBjYWxsYmFjaywgZXZ0TmFtZXNwYWNlKSB8fCByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcclxuICAgIGlmIChkb2MpIHtcclxuICAgICAgICByZXN1bHQgPSBldmVudE9uKGRvYywgZXZlbnROYW1lLCBjYWxsYmFjaywgZXZ0TmFtZXNwYWNlKSB8fCByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKlxyXG4gKiBUcnlzIHRvIHJlbW92ZSBldmVudCBoYW5kbGVyKHMpIGZvciB0aGUgc3BlY2lmaWVkIGV2ZW50L25hbWVzcGFjZSB0byB0aGUgd2luZG93LCBib2R5IGFuZCBkb2N1bWVudFxyXG4gKiBAcGFyYW0gZXZlbnROYW1lIHtzdHJpbmd9IC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LCB3aXRoIG9wdGlvbmFsIG5hbWVzcGFjZXMgb3IganVzdCB0aGUgbmFtZXNwYWNlcyxcclxuICogc3VjaCBhcyBcImNsaWNrXCIsIFwiY2xpY2subXluYW1lc3BhY2VcIiBvciBcIi5teW5hbWVzcGFjZVwiXHJcbiAqIEBwYXJhbSBjYWxsYmFjayB7YW55fSAtIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBnaXZlbiBldmVudCwgd2hlbiB1c2luZyBhXHJcbiAqIG5hbWVzcGFjZSAod2l0aCBvciB3aXRob3V0IGEgcXVhbGlmeWluZyBldmVudCkgdGhpcyBtYXkgYmUgbnVsbCB0byByZW1vdmUgYWxsIHByZXZpb3VzbHkgYXR0YWNoZWQgZXZlbnQgaGFuZGxlcnNcclxuICogb3RoZXJ3aXNlIHRoaXMgd2lsbCBvbmx5IHJlbW92ZSBldmVudHMgd2l0aCB0aGlzIHNwZWNpZmljIGhhbmRsZXIuXHJcbiAqIEBwYXJhbSBldnROYW1lc3BhY2UgLSBbT3B0aW9uYWxdIE5hbWVzcGFjZShzKSB0byBhcHBlbmQgdG8gdGhlIGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFuZCByZW1vdmVkIGJhc2VkIG9uIHRoaXMgbmFtZXNwYWNlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUV2ZW50SGFuZGxlcihldmVudE5hbWUsIGNhbGxiYWNrLCBldnROYW1lc3BhY2UpIHtcclxuICAgIHZhciB3ID0gZ2V0V2luZG93KCk7XHJcbiAgICBpZiAodykge1xyXG4gICAgICAgIGV2ZW50T2ZmKHcsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgZXZlbnRPZmYod1tcImJvZHlcIl0sIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGV2dE5hbWVzcGFjZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcclxuICAgIGlmIChkb2MpIHtcclxuICAgICAgICBldmVudE9mZihkb2MsIGV2ZW50TmFtZSwgY2FsbGJhY2ssIGV2dE5hbWVzcGFjZSk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIEJpbmQgdGhlIGxpc3RlbmVyIHRvIHRoZSBhcnJheSBvZiBldmVudHNcclxuICogQHBhcmFtIGV2ZW50cyBBbiBzdHJpbmcgYXJyYXkgb2YgZXZlbnQgbmFtZXMgdG8gYmluZCB0aGUgbGlzdGVuZXIgdG9cclxuICogQHBhcmFtIGxpc3RlbmVyIFRoZSBldmVudCBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZFxyXG4gKiBAcGFyYW0gZXhjbHVkZUV2ZW50cyAtIFtPcHRpb25hbF0gQW4gYXJyYXkgb2YgZXZlbnRzIHRoYXQgc2hvdWxkIG5vdCBiZSBob29rZWQgKGlmIHBvc3NpYmxlKSwgdW5sZXNzIG5vIG90aGVyIGV2ZW50cyBjYW4gYmUuXHJcbiAqIEBwYXJhbSBldnROYW1lc3BhY2UgLSBbT3B0aW9uYWxdIE5hbWVzcGFjZShzKSB0byBhcHBlbmQgdG8gdGhlIGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFuZCByZW1vdmVkIGJhc2VkIG9uIHRoaXMgbmFtZXNwYWNlLlxyXG4gKiBAcmV0dXJucyB0cnVlIC0gd2hlbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGV2ZW50cyB3YXMgcmVnaXN0ZXJlZCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIF9hZGRFdmVudExpc3RlbmVycyhldmVudHMsIGxpc3RlbmVyLCBleGNsdWRlRXZlbnRzLCBldnROYW1lc3BhY2UpIHtcclxuICAgIHZhciBhZGRlZCA9IGZhbHNlO1xyXG4gICAgaWYgKGxpc3RlbmVyICYmIGV2ZW50cyAmJiBldmVudHNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgIGFyckZvckVhY2goZXZlbnRzLCBmdW5jdGlvbiAobmFtZSkge1xyXG4gICAgICAgICAgICBpZiAobmFtZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlRXZlbnRzIHx8IGFyckluZGV4T2YoZXhjbHVkZUV2ZW50cywgbmFtZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkZWQgPSBhZGRFdmVudEhhbmRsZXIobmFtZSwgbGlzdGVuZXIsIGV2dE5hbWVzcGFjZSkgfHwgYWRkZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBhZGRlZDtcclxufVxyXG4vKipcclxuICogQmluZCB0aGUgbGlzdGVuZXIgdG8gdGhlIGFycmF5IG9mIGV2ZW50c1xyXG4gKiBAcGFyYW0gZXZlbnRzIEFuIHN0cmluZyBhcnJheSBvZiBldmVudCBuYW1lcyB0byBiaW5kIHRoZSBsaXN0ZW5lciB0b1xyXG4gKiBAcGFyYW0gbGlzdGVuZXIgVGhlIGV2ZW50IGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkXHJcbiAqIEBwYXJhbSBleGNsdWRlRXZlbnRzIC0gW09wdGlvbmFsXSBBbiBhcnJheSBvZiBldmVudHMgdGhhdCBzaG91bGQgbm90IGJlIGhvb2tlZCAoaWYgcG9zc2libGUpLCB1bmxlc3Mgbm8gb3RoZXIgZXZlbnRzIGNhbiBiZS5cclxuICogQHBhcmFtIGV2dE5hbWVzcGFjZSAtIFtPcHRpb25hbF0gTmFtZXNwYWNlKHMpIHRvIGFwcGVuZCB0byB0aGUgZXZlbnQgbGlzdGVuZXJzIHNvIHRoZXkgY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQgYW5kIHJlbW92ZWQgYmFzZWQgb24gdGhpcyBuYW1lc3BhY2UuXHJcbiAqIEByZXR1cm5zIHRydWUgLSB3aGVuIGF0IGxlYXN0IG9uZSBvZiB0aGUgZXZlbnRzIHdhcyByZWdpc3RlcmVkIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXJzKGV2ZW50cywgbGlzdGVuZXIsIGV4Y2x1ZGVFdmVudHMsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgdmFyIGFkZGVkID0gZmFsc2U7XHJcbiAgICBpZiAobGlzdGVuZXIgJiYgZXZlbnRzICYmIGlzQXJyYXkoZXZlbnRzKSkge1xyXG4gICAgICAgIGFkZGVkID0gX2FkZEV2ZW50TGlzdGVuZXJzKGV2ZW50cywgbGlzdGVuZXIsIGV4Y2x1ZGVFdmVudHMsIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgaWYgKCFhZGRlZCAmJiBleGNsdWRlRXZlbnRzICYmIGV4Y2x1ZGVFdmVudHNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAvLyBGYWlsZWQgdG8gYWRkIGFueSBsaXN0ZW5lcnMgYW5kIHdlIGV4Y2x1ZGVkIHNvbWUsIHNvIGp1c3QgYXR0ZW1wdCB0byBhZGQgdGhlIGV4Y2x1ZGVkIGV2ZW50c1xyXG4gICAgICAgICAgICBhZGRlZCA9IF9hZGRFdmVudExpc3RlbmVycyhldmVudHMsIGxpc3RlbmVyLCBudWxsLCBldnROYW1lc3BhY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhZGRlZDtcclxufVxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBsaXN0ZW5lciBmcm9tIHRoZSBhcnJheSBvZiBldmVudHNcclxuICogQHBhcmFtIGV2ZW50cyBBbiBzdHJpbmcgYXJyYXkgb2YgZXZlbnQgbmFtZXMgdG8gYmluZCB0aGUgbGlzdGVuZXIgdG9cclxuICogQHBhcmFtIGxpc3RlbmVyIFRoZSBldmVudCBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZFxyXG4gKiBAcGFyYW0gZXZ0TmFtZXNwYWNlIC0gW09wdGlvbmFsXSBOYW1lc3BhY2UocykgdG8gYXBwZW5kIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZCBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVycyhldmVudHMsIGxpc3RlbmVyLCBldnROYW1lc3BhY2UpIHtcclxuICAgIGlmIChldmVudHMgJiYgaXNBcnJheShldmVudHMpKSB7XHJcbiAgICAgICAgYXJyRm9yRWFjaChldmVudHMsIGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgICAgIGlmIChuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZW1vdmVFdmVudEhhbmRsZXIobmFtZSwgbGlzdGVuZXIsIGV2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogTGlzdGVuIHRvIHRoZSAnYmVmb3JldW5sb2FkJywgJ3VubG9hZCcgYW5kICdwYWdlaGlkZScgZXZlbnRzIHdoaWNoIGluZGljYXRlcyBhIHBhZ2UgdW5sb2FkIGlzIG9jY3VycmluZyxcclxuICogdGhpcyBkb2VzIE5PVCBsaXN0ZW4gdG8gdGhlICd2aXNpYmlsaXR5Y2hhbmdlJyBldmVudCBhcyB3aGlsZSBpdCBkb2VzIGluZGljYXRlIHRoYXQgdGhlIHBhZ2UgaXMgYmVpbmcgaGlkZGVuXHJcbiAqIGl0IGRvZXMgbm90ICpuZWNlc3NhcmlseSogbWVhbiB0aGF0IHRoZSBwYWdlIGlzIGJlaW5nIGNvbXBsZXRlbHkgdW5sb2FkZWQsIGl0IGNhbiBtZWFuIHRoYXQgdGhlIHVzZXIgaXNcclxuICoganVzdCBuYXZpZ2F0aW5nIHRvIGEgZGlmZmVyZW50IFRhYiBhbmQgbWF5IGNvbWUgYmFjayAod2l0aG91dCB1bmxvYWRpbmcgdGhlIHBhZ2UpLiBBcyBzdWNoIHlvdSBtYXkgYWxzb1xyXG4gKiBuZWVkIHRvIGxpc3RlbiB0byB0aGUgJ2FkZFBhZ2VIaWRlRXZlbnRMaXN0ZW5lcicgYW5kICdhZGRQYWdlU2hvd0V2ZW50TGlzdGVuZXInIGV2ZW50cy5cclxuICogQHBhcmFtIGxpc3RlbmVyIC0gVGhlIGV2ZW50IGNhbGxiYWNrIHRvIGNhbGwgd2hlbiBhIHBhZ2UgdW5sb2FkIGV2ZW50IGlzIHRyaWdnZXJlZFxyXG4gKiBAcGFyYW0gZXhjbHVkZUV2ZW50cyAtIFtPcHRpb25hbF0gQW4gYXJyYXkgb2YgZXZlbnRzIHRoYXQgc2hvdWxkIG5vdCBiZSBob29rZWQsIHVubGVzcyBubyBvdGhlciBldmVudHMgY2FuIGJlLlxyXG4gKiBAcGFyYW0gZXZ0TmFtZXNwYWNlIC0gW09wdGlvbmFsXSBOYW1lc3BhY2UocykgdG8gYXBwZW5kIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZCBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZS5cclxuICogQHJldHVybnMgdHJ1ZSAtIHdoZW4gYXQgbGVhc3Qgb25lIG9mIHRoZSBldmVudHMgd2FzIHJlZ2lzdGVyZWQgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRkUGFnZVVubG9hZEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGV4Y2x1ZGVFdmVudHMsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgLy8gSG9vayB0aGUgdW5sb2FkIGV2ZW50IGZvciB0aGUgZG9jdW1lbnQsIHdpbmRvdyBhbmQgYm9keSB0byBlbnN1cmUgdGhhdCB0aGUgY2xpZW50IGV2ZW50cyBhcmUgZmx1c2hlZCB0byB0aGUgc2VydmVyXHJcbiAgICAvLyBBcyBqdXN0IGhvb2tpbmcgdGhlIHdpbmRvdyBkb2VzIG5vdCBhbHdheXMgZmlyZSAob24gY2hyb21lKSBmb3IgcGFnZSBuYXZpZ2F0aW9uJ3MuXHJcbiAgICByZXR1cm4gYWRkRXZlbnRMaXN0ZW5lcnMoW3N0ckJlZm9yZVVubG9hZCwgc3RyVW5sb2FkLCBzdHJQYWdlSGlkZV0sIGxpc3RlbmVyLCBleGNsdWRlRXZlbnRzLCBldnROYW1lc3BhY2UpO1xyXG59XHJcbi8qKlxyXG4gKiBSZW1vdmUgYW55IG1hdGNoaW5nICdiZWZvcmV1bmxvYWQnLCAndW5sb2FkJyBhbmQgJ3BhZ2VoaWRlJyBldmVudHMgdGhhdCBtYXkgaGF2ZSBiZWVuIGFkZGVkIHZpYSBhZGRFdmVudExpc3RlbmVyLFxyXG4gKiBhZGRFdmVudExpc3RlbmVycywgYWRkUGFnZVVubG9hZEV2ZW50TGlzdGVuZXIgb3IgYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyLlxyXG4gKiBAcGFyYW0gbGlzdGVuZXIgLSBUaGUgc3BlY2lmaWMgZXZlbnQgY2FsbGJhY2sgdG8gdG8gYmUgcmVtb3ZlZFxyXG4gKiBAcGFyYW0gZXZ0TmFtZXNwYWNlIC0gW09wdGlvbmFsXSBOYW1lc3BhY2UocykgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZCBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZS5cclxuICogQHJldHVybnMgdHJ1ZSAtIHdoZW4gYXQgbGVhc3Qgb25lIG9mIHRoZSBldmVudHMgd2FzIHJlZ2lzdGVyZWQgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUGFnZVVubG9hZEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoW3N0ckJlZm9yZVVubG9hZCwgc3RyVW5sb2FkLCBzdHJQYWdlSGlkZV0sIGxpc3RlbmVyLCBldnROYW1lc3BhY2UpO1xyXG59XHJcbi8qKlxyXG4gKiBMaXN0ZW4gdG8gdGhlIHBhZ2VoaWRlIGFuZCB2aXNpYmlsaXR5IGNoYW5naW5nIHRvICdoaWRkZW4nIGV2ZW50cywgYmVjYXVzZSB0aGUgJ3Zpc2liaWxpdHljaGFuZ2UnIHVzZXNcclxuICogYW4gaW50ZXJuYWwgcHJveHkgdG8gZGV0ZWN0IHRoZSB2aXNpYmlsaXR5IHN0YXRlIHlvdSBTSE9VTEQgdXNlIGEgdW5pcXVlIG5hbWVzcGFjZSB3aGVuIGlmIHlvdSBwbGFuIHRvIGNhbGxcclxuICogcmVtb3ZlUGFnZVNob3dFdmVudExpc3RlbmVyIGFzIHRoZSByZW1vdmUgaWdub3JlcyB0aGUgbGlzdGVuZXIgYXJndW1lbnQgZm9yIHRoZSAndmlzaWJpbGl0eWNoYW5nZScgZXZlbnQuXHJcbiAqIEBwYXJhbSBsaXN0ZW5lciAtIFRoZSBldmVudCBjYWxsYmFjayB0byBjYWxsIHdoZW4gYSBwYWdlIGhpZGUgZXZlbnQgaXMgdHJpZ2dlcmVkXHJcbiAqIEBwYXJhbSBleGNsdWRlRXZlbnRzIC0gW09wdGlvbmFsXSBBbiBhcnJheSBvZiBldmVudHMgdGhhdCBzaG91bGQgbm90IGJlIGhvb2tlZCAoaWYgcG9zc2libGUpLCB1bmxlc3Mgbm8gb3RoZXIgZXZlbnRzIGNhbiBiZS5cclxuICogQHBhcmFtIGV2dE5hbWVzcGFjZSAtIFtPcHRpb25hbF0gQSBOYW1lc3BhY2UgdG8gYXBwZW5kIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMgc28gdGhleSBjYW4gYmUgdW5pcXVlbHkgaWRlbnRpZmllZCBhbmQgcmVtb3ZlZFxyXG4gKiBiYXNlZCBvbiB0aGlzIG5hbWVzcGFjZS4gVGhpcyBjYWxsIGFsc28gYWRkcyBhbiBhZGRpdGlvbmFsIHVuaXF1ZSBcInBhZ2VzaG93XCIgbmFtZXNwYWNlIHRvIHRoZSBldmVudHNcclxuICogc28gdGhhdCBvbmx5IHRoZSBtYXRjaGluZyBcInJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lclwiIGNhbiByZW1vdmUgdGhlc2UgZXZlbnRzLlxyXG4gKiBTdWdnZXN0aW9uOiBwYXNzIGFzIHRydWUgaWYgeW91IGFyZSBhbHNvIGNhbGxpbmcgYWRkUGFnZVVubG9hZEV2ZW50TGlzdGVuZXIgYXMgdGhhdCBhbHNvIGhvb2tzIHBhZ2VoaWRlXHJcbiAqIEByZXR1cm5zIHRydWUgLSB3aGVuIGF0IGxlYXN0IG9uZSBvZiB0aGUgZXZlbnRzIHdhcyByZWdpc3RlcmVkIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhZ2VIaWRlRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgZXhjbHVkZUV2ZW50cywgZXZ0TmFtZXNwYWNlKSB7XHJcbiAgICBmdW5jdGlvbiBfaGFuZGxlUGFnZVZpc2liaWxpdHkoZXZ0KSB7XHJcbiAgICAgICAgdmFyIGRvYyA9IGdldERvY3VtZW50KCk7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVyICYmIGRvYyAmJiBkb2MudmlzaWJpbGl0eVN0YXRlID09PSBcImhpZGRlblwiKSB7XHJcbiAgICAgICAgICAgIGxpc3RlbmVyKGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gYWRkIHRoZSB1bmlxdWUgcGFnZSBzaG93IG5hbWVzcGFjZSB0byBhbnkgcHJvdmlkZWQgbmFtZXNwYWNlIHNvIHdlIGNhbiBvbmx5IHJlbW92ZSB0aGUgb25lcyBhZGRlZCBieSBcInBhZ2VoaWRlXCJcclxuICAgIHZhciBuZXdOYW1lc3BhY2VzID0gbWVyZ2VFdnROYW1lc3BhY2Uoc3RyUGFnZUhpZGVOYW1lc3BhY2UsIGV2dE5hbWVzcGFjZSk7XHJcbiAgICB2YXIgcGFnZVVubG9hZEFkZGVkID0gX2FkZEV2ZW50TGlzdGVuZXJzKFtzdHJQYWdlSGlkZV0sIGxpc3RlbmVyLCBleGNsdWRlRXZlbnRzLCBuZXdOYW1lc3BhY2VzKTtcclxuICAgIGlmICghZXhjbHVkZUV2ZW50cyB8fCBhcnJJbmRleE9mKGV4Y2x1ZGVFdmVudHMsIHN0clZpc2liaWxpdHlDaGFuZ2VFdnQpID09PSAtMSkge1xyXG4gICAgICAgIHBhZ2VVbmxvYWRBZGRlZCA9IF9hZGRFdmVudExpc3RlbmVycyhbc3RyVmlzaWJpbGl0eUNoYW5nZUV2dF0sIF9oYW5kbGVQYWdlVmlzaWJpbGl0eSwgZXhjbHVkZUV2ZW50cywgbmV3TmFtZXNwYWNlcykgfHwgcGFnZVVubG9hZEFkZGVkO1xyXG4gICAgfVxyXG4gICAgaWYgKCFwYWdlVW5sb2FkQWRkZWQgJiYgZXhjbHVkZUV2ZW50cykge1xyXG4gICAgICAgIC8vIEZhaWxlZCB0byBhZGQgYW55IGxpc3RlbmVycyBhbmQgd2Ugd2hlcmUgcmVxdWVzdGVkIHRvIGV4Y2x1ZGUgc29tZSwgc28ganVzdCBjYWxsIGFnYWluIHdpdGhvdXQgZXhjbHVkaW5nIGFueXRoaW5nXHJcbiAgICAgICAgcGFnZVVubG9hZEFkZGVkID0gYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBudWxsLCBldnROYW1lc3BhY2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhZ2VVbmxvYWRBZGRlZDtcclxufVxyXG4vKipcclxuICogUmVtb3ZlcyB0aGUgcGFnZUhpZGUgZXZlbnQgbGlzdGVuZXJzIGFkZGVkIGJ5IGFkZFBhZ2VIaWRlRXZlbnRMaXN0ZW5lciwgYmVjYXVzZSB0aGUgJ3Zpc2liaWxpdHljaGFuZ2UnIHVzZXNcclxuICogYW4gaW50ZXJuYWwgcHJveHkgdG8gZGV0ZWN0IHRoZSB2aXNpYmlsaXR5IHN0YXRlIHlvdSBTSE9VTEQgdXNlIGEgdW5pcXVlIG5hbWVzcGFjZSB3aGVuIGNhbGxpbmcgYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyXHJcbiAqIGFzIHRoZSByZW1vdmUgaWdub3JlcyB0aGUgbGlzdGVuZXIgYXJndW1lbnQgZm9yIHRoZSAndmlzaWJpbGl0eWNoYW5nZScgZXZlbnQuXHJcbiAqIEBwYXJhbSBsaXN0ZW5lciAtIFRoZSBzcGVjaWZpYyBsaXN0ZW5lciB0byByZW1vdmUgZm9yIHRoZSAncGFnZXNob3cnIGV2ZW50IG9ubHkgKGlnbm9yZWQgZm9yICd2aXNpYmlsaXR5Y2hhbmdlJylcclxuICogQHBhcmFtIGV2dE5hbWVzcGFjZSAtIFRoZSB1bmlxdWUgbmFtZXNwYWNlIHVzZWQgd2hlbiBjYWxsaW5nIGFkZFBhZ2VTaG93RXZlbnRMaXN0ZW5lclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgZXZ0TmFtZXNwYWNlKSB7XHJcbiAgICAvLyBhZGQgdGhlIHVuaXF1ZSBwYWdlIHNob3cgbmFtZXNwYWNlIHRvIGFueSBwcm92aWRlZCBuYW1lc3BhY2Ugc28gd2Ugb25seSByZW1vdmUgdGhlIG9uZXMgYWRkZWQgYnkgXCJwYWdlaGlkZVwiXHJcbiAgICB2YXIgbmV3TmFtZXNwYWNlcyA9IG1lcmdlRXZ0TmFtZXNwYWNlKHN0clBhZ2VIaWRlTmFtZXNwYWNlLCBldnROYW1lc3BhY2UpO1xyXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoW3N0clBhZ2VIaWRlXSwgbGlzdGVuZXIsIG5ld05hbWVzcGFjZXMpO1xyXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoW3N0clZpc2liaWxpdHlDaGFuZ2VFdnRdLCBudWxsLCBuZXdOYW1lc3BhY2VzKTtcclxufVxyXG4vKipcclxuICogTGlzdGVuIHRvIHRoZSBwYWdlc2hvdyBhbmQgdmlzaWJpbGl0eSBjaGFuZ2luZyB0byAndmlzaWJsZScgZXZlbnRzLCBiZWNhdXNlIHRoZSAndmlzaWJpbGl0eWNoYW5nZScgdXNlc1xyXG4gKiBhbiBpbnRlcm5hbCBwcm94eSB0byBkZXRlY3QgdGhlIHZpc2liaWxpdHkgc3RhdGUgeW91IFNIT1VMRCB1c2UgYSB1bmlxdWUgbmFtZXNwYWNlIHdoZW4gaWYgeW91IHBsYW4gdG8gY2FsbFxyXG4gKiByZW1vdmVQYWdlU2hvd0V2ZW50TGlzdGVuZXIgYXMgdGhlIHJlbW92ZSBpZ25vcmVzIHRoZSBsaXN0ZW5lciBhcmd1bWVudCBmb3IgdGhlICd2aXNpYmlsaXR5Y2hhbmdlJyBldmVudC5cclxuICogQHBhcmFtIGxpc3RlbmVyIC0gVGhlIGV2ZW50IGNhbGxiYWNrIHRvIGNhbGwgd2hlbiBhIHBhZ2UgaXMgc2hvdyBldmVudCBpcyB0cmlnZ2VyZWRcclxuICogQHBhcmFtIGV4Y2x1ZGVFdmVudHMgLSBbT3B0aW9uYWxdIEFuIGFycmF5IG9mIGV2ZW50cyB0aGF0IHNob3VsZCBub3QgYmUgaG9va2VkIChpZiBwb3NzaWJsZSksIHVubGVzcyBubyBvdGhlciBldmVudHMgY2FuIGJlLlxyXG4gKiBAcGFyYW0gZXZ0TmFtZXNwYWNlIC0gW09wdGlvbmFsL1JlY29tbWVuZGVkXSBBIE5hbWVzcGFjZSB0byBhcHBlbmQgdG8gdGhlIGV2ZW50IGxpc3RlbmVycyBzbyB0aGV5IGNhbiBiZSB1bmlxdWVseVxyXG4gKiBpZGVudGlmaWVkIGFuZCByZW1vdmVkIGJhc2VkIG9uIHRoaXMgbmFtZXNwYWNlLiBUaGlzIGNhbGwgYWxzbyBhZGRzIGFuIGFkZGl0aW9uYWwgdW5pcXVlIFwicGFnZXNob3dcIiBuYW1lc3BhY2UgdG8gdGhlIGV2ZW50c1xyXG4gKiBzbyB0aGF0IG9ubHkgdGhlIG1hdGNoaW5nIFwicmVtb3ZlUGFnZVNob3dFdmVudExpc3RlbmVyXCIgY2FuIHJlbW92ZSB0aGVzZSBldmVudHMuXHJcbiAqIEByZXR1cm5zIHRydWUgLSB3aGVuIGF0IGxlYXN0IG9uZSBvZiB0aGUgZXZlbnRzIHdhcyByZWdpc3RlcmVkIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhZ2VTaG93RXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgZXhjbHVkZUV2ZW50cywgZXZ0TmFtZXNwYWNlKSB7XHJcbiAgICBmdW5jdGlvbiBfaGFuZGxlUGFnZVZpc2liaWxpdHkoZXZ0KSB7XHJcbiAgICAgICAgdmFyIGRvYyA9IGdldERvY3VtZW50KCk7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVyICYmIGRvYyAmJiBkb2MudmlzaWJpbGl0eVN0YXRlID09PSBcInZpc2libGVcIikge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcihldnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGFkZCB0aGUgdW5pcXVlIHBhZ2Ugc2hvdyBuYW1lc3BhY2UgdG8gYW55IHByb3ZpZGVkIG5hbWVzcGFjZSBzbyB3ZSBjYW4gb25seSByZW1vdmUgdGhlIG9uZXMgYWRkZWQgYnkgXCJwYWdlc2hvd1wiXHJcbiAgICB2YXIgbmV3TmFtZXNwYWNlcyA9IG1lcmdlRXZ0TmFtZXNwYWNlKHN0clBhZ2VTaG93TmFtZXNwYWNlLCBldnROYW1lc3BhY2UpO1xyXG4gICAgdmFyIHBhZ2VTaG93QWRkZWQgPSBfYWRkRXZlbnRMaXN0ZW5lcnMoW3N0clBhZ2VTaG93XSwgbGlzdGVuZXIsIGV4Y2x1ZGVFdmVudHMsIG5ld05hbWVzcGFjZXMpO1xyXG4gICAgcGFnZVNob3dBZGRlZCA9IF9hZGRFdmVudExpc3RlbmVycyhbc3RyVmlzaWJpbGl0eUNoYW5nZUV2dF0sIF9oYW5kbGVQYWdlVmlzaWJpbGl0eSwgZXhjbHVkZUV2ZW50cywgbmV3TmFtZXNwYWNlcykgfHwgcGFnZVNob3dBZGRlZDtcclxuICAgIGlmICghcGFnZVNob3dBZGRlZCAmJiBleGNsdWRlRXZlbnRzKSB7XHJcbiAgICAgICAgLy8gRmFpbGVkIHRvIGFkZCBhbnkgbGlzdGVuZXJzIGFuZCB3ZSB3aGVyZSByZXF1ZXN0ZWQgdG8gZXhjbHVkZSBzb21lLCBzbyBqdXN0IGNhbGwgYWdhaW4gd2l0aG91dCBleGNsdWRpbmcgYW55dGhpbmdcclxuICAgICAgICBwYWdlU2hvd0FkZGVkID0gYWRkUGFnZVNob3dFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBudWxsLCBldnROYW1lc3BhY2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhZ2VTaG93QWRkZWQ7XHJcbn1cclxuLyoqXHJcbiAqIFJlbW92ZXMgdGhlIHBhZ2VTaG93IGV2ZW50IGxpc3RlbmVycyBhZGRlZCBieSBhZGRQYWdlU2hvd0V2ZW50TGlzdGVuZXIsIGJlY2F1c2UgdGhlICd2aXNpYmlsaXR5Y2hhbmdlJyB1c2VzXHJcbiAqIGFuIGludGVybmFsIHByb3h5IHRvIGRldGVjdCB0aGUgdmlzaWJpbGl0eSBzdGF0ZSB5b3UgU0hPVUxEIHVzZSBhIHVuaXF1ZSBuYW1lc3BhY2Ugd2hlbiBjYWxsaW5nIGFkZFBhZ2VTaG93RXZlbnRMaXN0ZW5lclxyXG4gKiBhcyB0aGUgcmVtb3ZlIGlnbm9yZXMgdGhlIGxpc3RlbmVyIGFyZ3VtZW50IGZvciB0aGUgJ3Zpc2liaWxpdHljaGFuZ2UnIGV2ZW50LlxyXG4gKiBAcGFyYW0gbGlzdGVuZXIgLSBUaGUgc3BlY2lmaWMgbGlzdGVuZXIgdG8gcmVtb3ZlIGZvciB0aGUgJ3BhZ2VzaG93JyBldmVudCBvbmx5IChpZ25vcmVkIGZvciAndmlzaWJpbGl0eWNoYW5nZScpXHJcbiAqIEBwYXJhbSBldnROYW1lc3BhY2UgLSBUaGUgdW5pcXVlIG5hbWVzcGFjZSB1c2VkIHdoZW4gY2FsbGluZyBhZGRQYWdlU2hvd0V2ZW50TGlzdGVuZXJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQYWdlU2hvd0V2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGV2dE5hbWVzcGFjZSkge1xyXG4gICAgLy8gYWRkIHRoZSB1bmlxdWUgcGFnZSBzaG93IG5hbWVzcGFjZSB0byBhbnkgcHJvdmlkZWQgbmFtZXNwYWNlIHNvIHdlIG9ubHkgcmVtb3ZlIHRoZSBvbmVzIGFkZGVkIGJ5IFwicGFnZXNob3dcIlxyXG4gICAgdmFyIG5ld05hbWVzcGFjZXMgPSBtZXJnZUV2dE5hbWVzcGFjZShzdHJQYWdlU2hvd05hbWVzcGFjZSwgZXZ0TmFtZXNwYWNlKTtcclxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKFtzdHJQYWdlU2hvd10sIGxpc3RlbmVyLCBuZXdOYW1lc3BhY2VzKTtcclxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKFtzdHJWaXNpYmlsaXR5Q2hhbmdlRXZ0XSwgbnVsbCwgbmV3TmFtZXNwYWNlcyk7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXZlbnRIZWxwZXJzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgeyBvYmpDcmVhdGVGbiwgc3RyU2hpbVVuZGVmaW5lZCB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtc2hpbXNcIjtcclxuaW1wb3J0IHsgX0RZTl9MRU5HVEgsIF9EWU5fUFVTSCwgX0RZTl9TRVRfRU5BQkxFRCwgX0RZTl9TVUJTVFIsIF9EWU5fU1VCU1RSSU5HIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfZ2JsQ29va2llTWdyIH0gZnJvbSBcIi4vQ29va2llTWdyXCI7XHJcbmltcG9ydCB7IGdldFBlcmZvcm1hbmNlLCBpc0lFIH0gZnJvbSBcIi4vRW52VXRpbHNcIjtcclxuaW1wb3J0IHsgYWRkRXZlbnRIYW5kbGVyLCBhdHRhY2hFdmVudCwgZGV0YWNoRXZlbnQgfSBmcm9tIFwiLi9FdmVudEhlbHBlcnNcIjtcclxuaW1wb3J0IHsgYXJyRm9yRWFjaCwgYXJySW5kZXhPZiwgYXJyTWFwLCBhcnJSZWR1Y2UsIGRhdGVOb3csIGhhc093blByb3BlcnR5LCBpc0FycmF5LCBpc0Jvb2xlYW4sIGlzRGF0ZSwgaXNFcnJvciwgaXNGdW5jdGlvbiwgaXNOdWxsT3JVbmRlZmluZWQsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcsIGlzVHlwZW9mLCBpc1VuZGVmaW5lZCwgb2JqRGVmaW5lQWNjZXNzb3JzLCBvYmpLZXlzLCBzdHJUcmltLCB0b0lTT1N0cmluZyB9IGZyb20gXCIuL0hlbHBlckZ1bmNzXCI7XHJcbmltcG9ydCB7IFNUUl9FTVBUWSB9IGZyb20gXCIuL0ludGVybmFsQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IG13Y1JhbmRvbTMyLCBtd2NSYW5kb21TZWVkLCBuZXdJZCwgcmFuZG9tMzIsIHJhbmRvbVZhbHVlIH0gZnJvbSBcIi4vUmFuZG9tSGVscGVyXCI7XHJcbnZhciBfY29va2llTWdycyA9IG51bGw7XHJcbnZhciBfY2FuVXNlQ29va2llczsgLy8gbGVnYWN5IHN1cHBvcnRlZCBjb25maWdcclxuLy8gQWRkZWQgdG8gaGVscCB3aXRoIG1pbmZpY2F0aW9uXHJcbmV4cG9ydCB2YXIgVW5kZWZpbmVkID0gc3RyU2hpbVVuZGVmaW5lZDtcclxuZXhwb3J0IGZ1bmN0aW9uIG5ld0d1aWQoKSB7XHJcbiAgICB2YXIgdXVpZCA9IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgIHJldHVybiB1dWlkW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgwLCA4KSArIFwiLVwiICsgdXVpZFtfRFlOX1NVQlNUUklORyAvKiBAbWluOiUyZXN1YnN0cmluZyAqL10oOCwgMTIpICsgXCItXCIgKyB1dWlkW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgxMiwgMTYpICsgXCItXCIgKyB1dWlkW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgxNiwgMjApICsgXCItXCIgKyB1dWlkW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgyMCk7XHJcbn1cclxuLyoqXHJcbiAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgUGVyZm9ybWFuY2UgQXBpIG5vdygpIGZ1bmN0aW9uIChpZiBhdmFpbGFibGUpIGFuZCBmYWxsYmFjayB0byBkYXRlTm93KCkgaWYgaXQgaXMgdW5hdmFpbGFibGUgKElFOSBvciBsZXNzKVxyXG4gKiBodHRwczovL2Nhbml1c2UuY29tLyNzZWFyY2g9cGVyZm9ybWFuY2Uubm93XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGVyZk5vdygpIHtcclxuICAgIHZhciBwZXJmID0gZ2V0UGVyZm9ybWFuY2UoKTtcclxuICAgIGlmIChwZXJmICYmIHBlcmYubm93KSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcmYubm93KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZU5vdygpO1xyXG59XHJcbi8qKlxyXG4gKiBUaGUgc3RyRW5kc1dpdGgoKSBtZXRob2QgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgY2hhcmFjdGVycyBvZiBhIHNwZWNpZmllZCBzdHJpbmcsIHJldHVybmluZyB0cnVlIG9yIGZhbHNlIGFzIGFwcHJvcHJpYXRlLlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2sgd2hldGhlciBpdCBlbmRzIHdpdGggdGhlIHNlYXJjaCB2YWx1ZS5cclxuICogQHBhcmFtIHNlYXJjaCAtIFRoZSBjaGFyYWN0ZXJzIHRvIGJlIHNlYXJjaGVkIGZvciBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZS5cclxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHZhbHVlIGlzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN0ckVuZHNXaXRoKHZhbHVlLCBzZWFyY2gpIHtcclxuICAgIGlmICh2YWx1ZSAmJiBzZWFyY2gpIHtcclxuICAgICAgICB2YXIgbGVuID0gdmFsdWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgIHZhciBzdGFydCA9IGxlbiAtIHNlYXJjaFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlW19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXShzdGFydCA+PSAwID8gc3RhcnQgOiAwLCBsZW4pID09PSBzZWFyY2g7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuLyoqXHJcbiAqIGdlbmVyYXRlIFczQyB0cmFjZSBpZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVzNDSWQoKSB7XHJcbiAgICB2YXIgaGV4VmFsdWVzID0gW1wiMFwiLCBcIjFcIiwgXCIyXCIsIFwiM1wiLCBcIjRcIiwgXCI1XCIsIFwiNlwiLCBcIjdcIiwgXCI4XCIsIFwiOVwiLCBcImFcIiwgXCJiXCIsIFwiY1wiLCBcImRcIiwgXCJlXCIsIFwiZlwiXTtcclxuICAgIC8vIHJmYzQxMjIgdmVyc2lvbiA0IFVVSUQgd2l0aG91dCBkYXNoZXMgYW5kIHdpdGggbG93ZXJjYXNlIGxldHRlcnNcclxuICAgIHZhciBvY3QgPSBTVFJfRU1QVFksIHRtcDtcclxuICAgIGZvciAodmFyIGEgPSAwOyBhIDwgNDsgYSsrKSB7XHJcbiAgICAgICAgdG1wID0gcmFuZG9tMzIoKTtcclxuICAgICAgICBvY3QgKz1cclxuICAgICAgICAgICAgaGV4VmFsdWVzW3RtcCAmIDB4Rl0gK1xyXG4gICAgICAgICAgICAgICAgaGV4VmFsdWVzW3RtcCA+PiA0ICYgMHhGXSArXHJcbiAgICAgICAgICAgICAgICBoZXhWYWx1ZXNbdG1wID4+IDggJiAweEZdICtcclxuICAgICAgICAgICAgICAgIGhleFZhbHVlc1t0bXAgPj4gMTIgJiAweEZdICtcclxuICAgICAgICAgICAgICAgIGhleFZhbHVlc1t0bXAgPj4gMTYgJiAweEZdICtcclxuICAgICAgICAgICAgICAgIGhleFZhbHVlc1t0bXAgPj4gMjAgJiAweEZdICtcclxuICAgICAgICAgICAgICAgIGhleFZhbHVlc1t0bXAgPj4gMjQgJiAweEZdICtcclxuICAgICAgICAgICAgICAgIGhleFZhbHVlc1t0bXAgPj4gMjggJiAweEZdO1xyXG4gICAgfVxyXG4gICAgLy8gXCJTZXQgdGhlIHR3byBtb3N0IHNpZ25pZmljYW50IGJpdHMgKGJpdHMgNiBhbmQgNykgb2YgdGhlIGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWQgdG8gemVybyBhbmQgb25lLCByZXNwZWN0aXZlbHlcIlxyXG4gICAgdmFyIGNsb2NrU2VxdWVuY2VIaSA9IGhleFZhbHVlc1s4ICsgKHJhbmRvbTMyKCkgJiAweDAzKSB8IDBdO1xyXG4gICAgcmV0dXJuIG9jdFtfRFlOX1NVQlNUUiAvKiBAbWluOiUyZXN1YnN0ciAqL10oMCwgOCkgKyBvY3RbX0RZTl9TVUJTVFIgLyogQG1pbjolMmVzdWJzdHIgKi9dKDksIDQpICsgXCI0XCIgKyBvY3RbX0RZTl9TVUJTVFIgLyogQG1pbjolMmVzdWJzdHIgKi9dKDEzLCAzKSArIGNsb2NrU2VxdWVuY2VIaSArIG9jdFtfRFlOX1NVQlNUUiAvKiBAbWluOiUyZXN1YnN0ciAqL10oMTYsIDMpICsgb2N0W19EWU5fU1VCU1RSIC8qIEBtaW46JTJlc3Vic3RyICovXSgxOSwgMTIpO1xyXG59XHJcbi8qKlxyXG4gKiBQcm92aWRlcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0eSBmdW5jdGlvbnMsIGluY2x1ZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcmVsZWFzZXMuXHJcbiAqIEBkZXByZWNhdGVkIE1hcmtpbmcgdGhpcyBpbnN0YW5jZSBhcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGRpcmVjdCB1c2FnZSBvZiB0aGUgaGVscGVyIGZ1bmN0aW9uc1xyXG4gKiBhcyBkaXJlY3QgdXNhZ2UgcHJvdmlkZXMgYmV0dGVyIHRyZWUtc2hha2luZyBhbmQgbWluaWZpY2F0aW9uIGJ5IGF2b2lkaW5nIHRoZSBpbmNsdXNpb24gb2YgdGhlIHVudXNlZCBpdGVtc1xyXG4gKiBpbiB5b3VyIHJlc3VsdGluZyBjb2RlLlxyXG4gKi9cclxuZXhwb3J0IHZhciBDb3JlVXRpbHMgPSB7XHJcbiAgICBfY2FuVXNlQ29va2llczogdW5kZWZpbmVkLFxyXG4gICAgaXNUeXBlb2Y6IGlzVHlwZW9mLFxyXG4gICAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxyXG4gICAgaXNOdWxsT3JVbmRlZmluZWQ6IGlzTnVsbE9yVW5kZWZpbmVkLFxyXG4gICAgaGFzT3duUHJvcGVydHk6IGhhc093blByb3BlcnR5LFxyXG4gICAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcclxuICAgIGlzT2JqZWN0OiBpc09iamVjdCxcclxuICAgIGlzRGF0ZTogaXNEYXRlLFxyXG4gICAgaXNBcnJheTogaXNBcnJheSxcclxuICAgIGlzRXJyb3I6IGlzRXJyb3IsXHJcbiAgICBpc1N0cmluZzogaXNTdHJpbmcsXHJcbiAgICBpc051bWJlcjogaXNOdW1iZXIsXHJcbiAgICBpc0Jvb2xlYW46IGlzQm9vbGVhbixcclxuICAgIHRvSVNPU3RyaW5nOiB0b0lTT1N0cmluZyxcclxuICAgIGFyckZvckVhY2g6IGFyckZvckVhY2gsXHJcbiAgICBhcnJJbmRleE9mOiBhcnJJbmRleE9mLFxyXG4gICAgYXJyTWFwOiBhcnJNYXAsXHJcbiAgICBhcnJSZWR1Y2U6IGFyclJlZHVjZSxcclxuICAgIHN0clRyaW06IHN0clRyaW0sXHJcbiAgICBvYmpDcmVhdGU6IG9iakNyZWF0ZUZuLFxyXG4gICAgb2JqS2V5czogb2JqS2V5cyxcclxuICAgIG9iakRlZmluZUFjY2Vzc29yczogb2JqRGVmaW5lQWNjZXNzb3JzLFxyXG4gICAgYWRkRXZlbnRIYW5kbGVyOiBhZGRFdmVudEhhbmRsZXIsXHJcbiAgICBkYXRlTm93OiBkYXRlTm93LFxyXG4gICAgaXNJRTogaXNJRSxcclxuICAgIGRpc2FibGVDb29raWVzOiBkaXNhYmxlQ29va2llcyxcclxuICAgIG5ld0d1aWQ6IG5ld0d1aWQsXHJcbiAgICBwZXJmTm93OiBwZXJmTm93LFxyXG4gICAgbmV3SWQ6IG5ld0lkLFxyXG4gICAgcmFuZG9tVmFsdWU6IHJhbmRvbVZhbHVlLFxyXG4gICAgcmFuZG9tMzI6IHJhbmRvbTMyLFxyXG4gICAgbXdjUmFuZG9tU2VlZDogbXdjUmFuZG9tU2VlZCxcclxuICAgIG13Y1JhbmRvbTMyOiBtd2NSYW5kb20zMixcclxuICAgIGdlbmVyYXRlVzNDSWQ6IGdlbmVyYXRlVzNDSWRcclxufTtcclxudmFyIEd1aWRSZWdleCA9IC9beHldL2c7XHJcbmV4cG9ydCB2YXIgRXZlbnRIZWxwZXIgPSB7XHJcbiAgICBBdHRhY2g6IGF0dGFjaEV2ZW50LFxyXG4gICAgQXR0YWNoRXZlbnQ6IGF0dGFjaEV2ZW50LFxyXG4gICAgRGV0YWNoOiBkZXRhY2hFdmVudCxcclxuICAgIERldGFjaEV2ZW50OiBkZXRhY2hFdmVudFxyXG59O1xyXG4vKipcclxuICogSGVscGVyIHRvIHN1cHBvcnQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgdXNlcnMgdGhhdCB1c2UgdGhlIGxlZ2FjeSBjb29raWUgaGFuZGxpbmcgZnVuY3Rpb25zIGFuZCB0aGUgdXNlIHRoZSBpbnRlcm5hbFxyXG4gKiBDb3JlVXRpbHMuX2NhblVzZUNvb2tpZXMgZ2xvYmFsIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgY29va2llcyB1c2FnZS5cclxuICogTm90ZTogVGhpcyBoYXMgdGhlIGZvbGxvd2luZyBkZWxpYmVyYXRlIHNpZGUtZWZmZWN0c1xyXG4gKiAtIENyZWF0ZXMgdGhlIGdsb2JhbCAobGVnYWN5KSBjb29raWUgbWFuYWdlciBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0XHJcbiAqIC0gQXR0ZW1wdHMgdG8gYWRkIFwibGlzdGVuZXJzXCIgdG8gdGhlIENvcmVVdGlscy5fY2FuVXNlQ29va2llcyBwcm9wZXJ0eSB0byBzdXBwb3J0IHRoZSBsZWdhY3kgdXNhZ2VcclxuICogQHBhcmFtIGNvbmZpZ1xyXG4gKiBAcGFyYW0gbG9nZ2VyXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX2xlZ2FjeUNvb2tpZU1ncihjb25maWcsIGxvZ2dlcikge1xyXG4gICAgdmFyIGNvb2tpZU1nciA9IF9nYmxDb29raWVNZ3IoY29uZmlnLCBsb2dnZXIpO1xyXG4gICAgdmFyIGxlZ2FjeUNhblVzZUNvb2tpZXMgPSBDb3JlVXRpbHMuX2NhblVzZUNvb2tpZXM7XHJcbiAgICBpZiAoX2Nvb2tpZU1ncnMgPT09IG51bGwpIHtcclxuICAgICAgICBfY29va2llTWdycyA9IFtdO1xyXG4gICAgICAgIF9jYW5Vc2VDb29raWVzID0gbGVnYWN5Q2FuVXNlQ29va2llcztcclxuICAgICAgICAvLyBEeW5hbWljYWxseSBjcmVhdGUgZ2V0L3NldCBwcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIGVuYWJsaW5nIC8gZGlzYWJsaW5nIGNvb2tpZXNcclxuICAgICAgICAvLyB0aGlzIFdJTEwgTk9UIHdvcmsgZm9yIEVTMyBicm93c2VycyAoPCBJRTgpXHJcbiAgICAgICAgb2JqRGVmaW5lQWNjZXNzb3JzKENvcmVVdGlscywgXCJfY2FuVXNlQ29va2llc1wiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY2FuVXNlQ29va2llcztcclxuICAgICAgICB9LCBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICAgICAgX2NhblVzZUNvb2tpZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgYXJyRm9yRWFjaChfY29va2llTWdycywgZnVuY3Rpb24gKG1ncikge1xyXG4gICAgICAgICAgICAgICAgbWdyW19EWU5fU0VUX0VOQUJMRUQgLyogQG1pbjolMmVzZXRFbmFibGVkICovXSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGFyckluZGV4T2YoX2Nvb2tpZU1ncnMsIGNvb2tpZU1ncikgPT09IC0xKSB7XHJcbiAgICAgICAgX2Nvb2tpZU1ncnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oY29va2llTWdyKTtcclxuICAgIH1cclxuICAgIGlmIChpc0Jvb2xlYW4obGVnYWN5Q2FuVXNlQ29va2llcykpIHtcclxuICAgICAgICBjb29raWVNZ3JbX0RZTl9TRVRfRU5BQkxFRCAvKiBAbWluOiUyZXNldEVuYWJsZWQgKi9dKGxlZ2FjeUNhblVzZUNvb2tpZXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQm9vbGVhbihfY2FuVXNlQ29va2llcykpIHtcclxuICAgICAgICBjb29raWVNZ3JbX0RZTl9TRVRfRU5BQkxFRCAvKiBAbWluOiUyZXNldEVuYWJsZWQgKi9dKF9jYW5Vc2VDb29raWVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb29raWVNZ3I7XHJcbn1cclxuLyoqXHJcbiAqIEBkZXByZWNhdGVkIC0gVXNlIHRoZSBjb3JlLmdldENvb2tpZU1ncigpLmRpc2FibGUoKVxyXG4gKiBGb3JjZSB0aGUgU0RLIG5vdCB0byBzdG9yZSBhbmQgcmVhZCBhbnkgZGF0YSBmcm9tIGNvb2tpZXMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGlzYWJsZUNvb2tpZXMoKSB7XHJcbiAgICBfbGVnYWN5Q29va2llTWdyKClbX0RZTl9TRVRfRU5BQkxFRCAvKiBAbWluOiUyZXNldEVuYWJsZWQgKi9dKGZhbHNlKTtcclxufVxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGNvcmUuZ2V0Q29va2llTWdyKCkuaXNFbmFibGVkKClcclxuICogSGVscGVyIG1ldGhvZCB0byB0ZWxsIGlmIGRvY3VtZW50LmNvb2tpZSBvYmplY3QgaXMgYXZhaWxhYmxlIGFuZCB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNhblVzZUNvb2tpZXMobG9nZ2VyKSB7XHJcbiAgICByZXR1cm4gX2xlZ2FjeUNvb2tpZU1ncihudWxsLCBsb2dnZXIpLmlzRW5hYmxlZCgpO1xyXG59XHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCAtIFVzZSB0aGUgY29yZS5nZXRDb29raWVNZ3IoKS5nZXQoKVxyXG4gKiBoZWxwZXIgbWV0aG9kIHRvIGFjY2VzcyB1c2VySWQgYW5kIHNlc3Npb25JZCBjb29raWVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb29raWUobG9nZ2VyLCBuYW1lKSB7XHJcbiAgICByZXR1cm4gX2xlZ2FjeUNvb2tpZU1ncihudWxsLCBsb2dnZXIpLmdldChuYW1lKTtcclxufVxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGNvcmUuZ2V0Q29va2llTWdyKCkuc2V0KClcclxuICogaGVscGVyIG1ldGhvZCB0byBzZXQgdXNlcklkIGFuZCBzZXNzaW9uSWQgY29va2llXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29va2llKGxvZ2dlciwgbmFtZSwgdmFsdWUsIGRvbWFpbikge1xyXG4gICAgX2xlZ2FjeUNvb2tpZU1ncihudWxsLCBsb2dnZXIpLnNldChuYW1lLCB2YWx1ZSwgbnVsbCwgZG9tYWluKTtcclxufVxyXG4vKipcclxuICogQGRlcHJlY2F0ZWQgLSBVc2UgdGhlIGNvcmUuZ2V0Q29va2llTWdyKCkuZGVsKClcclxuICogRGVsZXRlcyBhIGNvb2tpZSBieSBzZXR0aW5nIGl0J3MgZXhwaXJhdGlvbiB0aW1lIGluIHRoZSBwYXN0LlxyXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgdG8gZGVsZXRlLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUNvb2tpZShsb2dnZXIsIG5hbWUpIHtcclxuICAgIHJldHVybiBfbGVnYWN5Q29va2llTWdyKG51bGwsIGxvZ2dlcikuZGVsKG5hbWUpO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvcmVVdGlscy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgX0RZTl9MRU5HVEgsIF9EWU5fU1BBTl9JRCwgX0RZTl9TVUJTVFIsIF9EWU5fVFJBQ0VfRkxBR1MsIF9EWU5fVFJBQ0VfSUQsIF9EWU5fVkVSU0lPTiB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZ2VuZXJhdGVXM0NJZCB9IGZyb20gXCIuL0NvcmVVdGlsc1wiO1xyXG5pbXBvcnQgeyBmaW5kTWV0YVRhZywgZmluZE5hbWVkU2VydmVyVGltaW5nIH0gZnJvbSBcIi4vRW52VXRpbHNcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNTdHJpbmcsIHN0clRyaW0gfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG4vLyB1c2luZyB7MCwxNn0gZm9yIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UganVzdCB0byBjb25zdHJhaW4gdGhlIHBvc3NpYmxlIHJ1bnRpbWUgb2YgYSByYW5kb20gc3RyaW5nXHJcbnZhciBUUkFDRV9QQVJFTlRfUkVHRVggPSAvXihbXFxkYS1mXXsyfSktKFtcXGRhLWZdezMyfSktKFtcXGRhLWZdezE2fSktKFtcXGRhLWZdezJ9KSgtW15cXHNdKik/JC87XHJcbnZhciBERUZBVUxUX1ZFUlNJT04gPSBcIjAwXCI7XHJcbnZhciBJTlZBTElEX1ZFUlNJT04gPSBcImZmXCI7XHJcbnZhciBJTlZBTElEX1RSQUNFX0lEID0gXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiO1xyXG52YXIgSU5WQUxJRF9TUEFOX0lEID0gXCIwMDAwMDAwMDAwMDAwMDAwXCI7XHJcbnZhciBTQU1QTEVEX0ZMQUcgPSAweDAxO1xyXG5mdW5jdGlvbiBfaXNWYWxpZCh2YWx1ZSwgbGVuLCBpbnZhbGlkVmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPT09IGxlbiAmJiB2YWx1ZSAhPT0gaW52YWxpZFZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuICEhdmFsdWUubWF0Y2goL15bXFxkYS1mXSokLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gX2Zvcm1hdFZhbHVlKHZhbHVlLCBsZW4sIGRlZlZhbHVlKSB7XHJcbiAgICBpZiAoX2lzVmFsaWQodmFsdWUsIGxlbikpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVmVmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gX2Zvcm1hdEZsYWdzKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDI1NSkge1xyXG4gICAgICAgIHZhbHVlID0gMHgwMTtcclxuICAgIH1cclxuICAgIHZhciByZXN1bHQgPSB2YWx1ZS50b1N0cmluZygxNik7XHJcbiAgICB3aGlsZSAocmVzdWx0W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA8IDIpIHtcclxuICAgICAgICByZXN1bHQgPSBcIjBcIiArIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZSBhIG5ldyBJVHJhY2VQYXJlbnQgaW5zdGFuY2UgdXNpbmcgdGhlIHByb3ZpZGVkIHZhbHVlcy5cclxuICogQHBhcmFtIHRyYWNlSWQgLSBUaGUgdHJhY2VJZCB0byB1c2UsIHdoZW4gaW52YWxpZCBhIG5ldyByYW5kb20gVzNDIGlkIHdpbGwgYmUgZ2VuZXJhdGVkLlxyXG4gKiBAcGFyYW0gc3BhbklkIC0gVGhlIHBhcmVudC9zcGFuIGlkIHRvIHVzZSwgYSBuZXcgcmFuZG9tIHZhbHVlIHdpbGwgYmUgZ2VuZXJhdGVkIGlmIGl0IGlzIGludmFsaWQuXHJcbiAqIEBwYXJhbSBmbGFncyAtIFRoZSB0cmFjZUZsYWdzIHRvIHVzZSwgZGVmYXVsdHMgdG8gemVybyAoMCkgaWYgbm90IHN1cHBsaWVkIG9yIGludmFsaWRcclxuICogQHBhcmFtIHZlcnNpb24gLSBUaGUgdmVyc2lvbiB0byB1c2VkLCBkZWZhdWx0cyB0byB2ZXJzaW9uIFwiMDFcIiBpZiBub3Qgc3VwcGxpZWQgb3IgaW52YWxpZC5cclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFjZVBhcmVudCh0cmFjZUlkLCBzcGFuSWQsIGZsYWdzLCB2ZXJzaW9uKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICByZXR1cm4gX2EgPSB7fSxcclxuICAgICAgICBfYVtfRFlOX1ZFUlNJT04gLyogQG1pbjp2ZXJzaW9uICovXSA9IF9pc1ZhbGlkKHZlcnNpb24sIDIsIElOVkFMSURfVkVSU0lPTikgPyB2ZXJzaW9uIDogREVGQVVMVF9WRVJTSU9OLFxyXG4gICAgICAgIF9hW19EWU5fVFJBQ0VfSUQgLyogQG1pbjp0cmFjZUlkICovXSA9IGlzVmFsaWRUcmFjZUlkKHRyYWNlSWQpID8gdHJhY2VJZCA6IGdlbmVyYXRlVzNDSWQoKSxcclxuICAgICAgICBfYS5zcGFuSWQgPSBpc1ZhbGlkU3BhbklkKHNwYW5JZCkgPyBzcGFuSWQgOiBnZW5lcmF0ZVczQ0lkKClbX0RZTl9TVUJTVFIgLyogQG1pbjolMmVzdWJzdHIgKi9dKDAsIDE2KSxcclxuICAgICAgICBfYS50cmFjZUZsYWdzID0gZmxhZ3MgPj0gMCAmJiBmbGFncyA8PSAweEZGID8gZmxhZ3MgOiAxLFxyXG4gICAgICAgIF9hO1xyXG59XHJcbi8qKlxyXG4gKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBwcm92aWRlZCBzdHJpbmcgYXMgYSBXM0MgVHJhY2VQYXJlbnQgaGVhZGVyIHZhbHVlIChodHRwczovL3d3dy53My5vcmcvVFIvdHJhY2UtY29udGV4dC8jdHJhY2VwYXJlbnQtaGVhZGVyKVxyXG4gKlxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRyYWNlUGFyZW50KHZhbHVlKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgLy8gRG9uJ3QgcGFzcyBhIG51bGwvdW5kZWZpbmVkIG9yIGVtcHR5IHN0cmluZ1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgLy8gVGhlIHZhbHVlIG1heSBoYXZlIGJlZW4gZW5jb2RlZCBvbiB0aGUgcGFnZSBpbnRvIGFuIGFycmF5IHNvIGhhbmRsZSB0aGlzIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlWzBdIHx8IFwiXCI7XHJcbiAgICB9XHJcbiAgICBpZiAoIXZhbHVlIHx8ICFpc1N0cmluZyh2YWx1ZSkgfHwgdmFsdWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gODE5Mikge1xyXG4gICAgICAgIC8vIGxpbWl0IHBvdGVudGlhbCBwcm9jZXNzaW5nIGJhc2VkIG9uIHRvdGFsIGxlbmd0aFxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi90cmFjZS1jb250ZXh0LyN2ZXJzaW9uaW5nLW9mLXRyYWNlcGFyZW50XHJcbiAgICB2YXIgbWF0Y2ggPSBUUkFDRV9QQVJFTlRfUkVHRVguZXhlYyhzdHJUcmltKHZhbHVlKSk7XHJcbiAgICBpZiAoIW1hdGNoIHx8IC8vIE5vIG1hdGNoXHJcbiAgICAgICAgbWF0Y2hbMV0gPT09IElOVkFMSURfVkVSU0lPTiB8fCAvLyB2ZXJzaW9uIGZmIGlzIGZvcmJpZGRlblxyXG4gICAgICAgIG1hdGNoWzJdID09PSBJTlZBTElEX1RSQUNFX0lEIHx8IC8vIEFsbCB6ZXJvcyBpcyBjb25zaWRlcmVkIHRvIGJlIGludmFsaWRcclxuICAgICAgICBtYXRjaFszXSA9PT0gSU5WQUxJRF9TUEFOX0lEKSB7IC8vIEFsbCB6ZXJvcyBpcyBjb25zaWRlcmVkIHRvIGJlIGludmFsaWRcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBfYSA9IHt9LFxyXG4gICAgICAgIF9hW19EWU5fVkVSU0lPTiAvKiBAbWluOnZlcnNpb24gKi9dID0gbWF0Y2hbMV0sXHJcbiAgICAgICAgX2FbX0RZTl9UUkFDRV9JRCAvKiBAbWluOnRyYWNlSWQgKi9dID0gbWF0Y2hbMl0sXHJcbiAgICAgICAgX2FbX0RZTl9TUEFOX0lEIC8qIEBtaW46c3BhbklkICovXSA9IG1hdGNoWzNdLFxyXG4gICAgICAgIF9hW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjp0cmFjZUZsYWdzICovXSA9IHBhcnNlSW50KG1hdGNoWzRdLCAxNiksXHJcbiAgICAgICAgX2E7XHJcbn1cclxuLyoqXHJcbiAqIElzIHRoZSBwcm92aWRlZCBXM2MgVHJhY2UgSWQgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGl0IG11c3QgYmUgYSAzMi1jaGFyYWN0ZXIgc3RyaW5nXHJcbiAqIG9mIGxvd2VyY2FzZSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzIGZvciBleGFtcGxlLCA0YmY5MmYzNTc3YjM0ZGE2YTNjZTkyOWQwZTBlNDczNi5cclxuICogSWYgYWxsIGNoYXJhY3RlcnMgYXMgemVybyAoMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDApIGl0IHdpbGwgYmUgY29uc2lkZXJlZCBhbiBpbnZhbGlkIHZhbHVlLlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgVzNjIHRyYWNlIElkIHRvIGJlIHZhbGlkYXRlZFxyXG4gKiBAcmV0dXJucyB0cnVlIGlmIHZhbGlkIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUcmFjZUlkKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gX2lzVmFsaWQodmFsdWUsIDMyLCBJTlZBTElEX1RSQUNFX0lEKTtcclxufVxyXG4vKipcclxuICogSXMgdGhlIHByb3ZpZGVkIFczYyBzcGFuIGlkIChha2EuIHBhcmVudCBpZCkgYSB2YWxpZCBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGl0IG11c3QgYmUgYSAxNi1jaGFyYWN0ZXJcclxuICogc3RyaW5nIG9mIGxvd2VyY2FzZSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzLCBmb3IgZXhhbXBsZSwgMDBmMDY3YWEwYmE5MDJiNy5cclxuICogSWYgYWxsIGNoYXJhY3RlcnMgYXJlIHplcm8gKDAwMDAwMDAwMDAwMDAwMDApIHRoaXMgaXMgY29uc2lkZXJlZCBhbiBpbnZhbGlkIHZhbHVlLlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgVzNjIHNwYW4gaWQgdG8gYmUgdmFsaWRhdGVkXHJcbiAqIEByZXR1cm5zIHRydWUgaWYgdmFsaWQgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFNwYW5JZCh2YWx1ZSkge1xyXG4gICAgcmV0dXJuIF9pc1ZhbGlkKHZhbHVlLCAxNiwgSU5WQUxJRF9TUEFOX0lEKTtcclxufVxyXG4vKipcclxuICogVmFsaWRhdGVzIHRoYXQgdGhlIHByb3ZpZGVkIElUcmFjZVBhcmVudCBpbnN0YW5jZSBjb25mb3JtcyB0byB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCBzcGVjaWZpY2F0aW9uc1xyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVHJhY2VQYXJlbnQodmFsdWUpIHtcclxuICAgIGlmICghdmFsdWUgfHxcclxuICAgICAgICAhX2lzVmFsaWQodmFsdWVbX0RZTl9WRVJTSU9OIC8qIEBtaW46JTJldmVyc2lvbiAqL10sIDIsIElOVkFMSURfVkVSU0lPTikgfHxcclxuICAgICAgICAhX2lzVmFsaWQodmFsdWVbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSWQgKi9dLCAzMiwgSU5WQUxJRF9UUkFDRV9JRCkgfHxcclxuICAgICAgICAhX2lzVmFsaWQodmFsdWVbX0RZTl9TUEFOX0lEIC8qIEBtaW46JTJlc3BhbklkICovXSwgMTYsIElOVkFMSURfU1BBTl9JRCkgfHxcclxuICAgICAgICAhX2lzVmFsaWQoX2Zvcm1hdEZsYWdzKHZhbHVlW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSksIDIpKSB7XHJcbiAgICAgICAgLy8gRWFjaCBrbm93biBmaWVsZCBtdXN0IGNvbnRhaW4gYSB2YWxpZCB2YWx1ZVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcbi8qKlxyXG4gKiBJcyB0aGUgcGFyc2VkIHRyYWNlUGFyZW50IGluZGljYXRpbmcgdGhhdCB0aGUgdHJhY2UgaXMgY3VycmVudGx5IHNhbXBsZWQuXHJcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBwYXJzZWQgdHJhY2VQYXJlbnQgdmFsdWVcclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBpc1NhbXBsZWRGbGFnKHZhbHVlKSB7XHJcbiAgICBpZiAoaXNWYWxpZFRyYWNlUGFyZW50KHZhbHVlKSkge1xyXG4gICAgICAgIHJldHVybiAodmFsdWVbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dICYgU0FNUExFRF9GTEFHKSA9PT0gU0FNUExFRF9GTEFHO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8qKlxyXG4gKiBGb3JtYXQgdGhlIElUcmFjZVBhcmVudCB2YWx1ZSBhcyBhIHN0cmluZyB1c2luZyB0aGUgc3VwcG9ydGVkIGFuZCBrbm93IHZlcnNpb24gZm9ybWF0cy5cclxuICogU28gZXZlbiBpZiB0aGUgcGFzc2VkIHRyYWNlUGFyZW50IGlzIGEgbGF0ZXIgdmVyc2lvbiB0aGUgc3RyaW5nIHZhbHVlIHJldHVybmVkIGZyb20gdGhpc1xyXG4gKiBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgaXQgdG8gb25seSB0aGUga25vd24gdmVyc2lvbiBmb3JtYXRzLlxyXG4gKiBUaGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHZlcnNpb24gXCIwMFwiIGFuZCBpbnZhbGlkIFwiZmZcIlxyXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgcGFyc2VkIHRyYWNlUGFyZW50IHZhbHVlXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VHJhY2VQYXJlbnQodmFsdWUpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIC8vIFNwZWNpYWwgTm90ZTogVGhpcyBvbmx5IHN1cHBvcnRzIGZvcm1hdHRpbmcgYXMgdmVyc2lvbiAwMCwgZnV0dXJlIHZlcnNpb25zIHNob3VsZCBlbmNvZGUgYW55IGtub3duIHN1cHBvcnRlZCB2ZXJzaW9uXHJcbiAgICAgICAgLy8gU28gcGFyc2luZyBhIGZ1dHVyZSB2ZXJzaW9uIHdpbGwgcG9wdWxhdGUgdGhlIGNvcnJlY3QgdmVyc2lvbiB2YWx1ZSBidXQgcmVmb3JtYXR0aW5nIHdpbGwgcmVkdWNlIGl0IHRvIHZlcnNpb24gMDAuXHJcbiAgICAgICAgdmFyIGZsYWdzID0gX2Zvcm1hdEZsYWdzKHZhbHVlW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSk7XHJcbiAgICAgICAgaWYgKCFfaXNWYWxpZChmbGFncywgMikpIHtcclxuICAgICAgICAgICAgZmxhZ3MgPSBcIjAxXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB2ZXJzaW9uID0gdmFsdWVbX0RZTl9WRVJTSU9OIC8qIEBtaW46JTJldmVyc2lvbiAqL10gfHwgREVGQVVMVF9WRVJTSU9OO1xyXG4gICAgICAgIGlmICh2ZXJzaW9uICE9PSBcIjAwXCIgJiYgdmVyc2lvbiAhPT0gXCJmZlwiKSB7XHJcbiAgICAgICAgICAgIC8vIFJlZHVjZSB2ZXJzaW9uIHRvIFwiMDBcIlxyXG4gICAgICAgICAgICB2ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBGb3JtYXQgYXMgdmVyc2lvbiAwMFxyXG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh2ZXJzaW9uLCBcIi1cIikuY29uY2F0KF9mb3JtYXRWYWx1ZSh2YWx1ZS50cmFjZUlkLCAzMiwgSU5WQUxJRF9UUkFDRV9JRCksIFwiLVwiKS5jb25jYXQoX2Zvcm1hdFZhbHVlKHZhbHVlLnNwYW5JZCwgMTYsIElOVkFMSURfU1BBTl9JRCksIFwiLVwiKS5jb25jYXQoZmxhZ3MpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiXCI7XHJcbn1cclxuLyoqXHJcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBmZXRjaCB0aGUgcGFzc2VkIHRyYWNlcGFyZW50IGZyb20gdGhlIHBhZ2UsIGxvb2tpbmcgZm9yIGl0IGFzIGEgbWV0YS10YWcgb3IgYSBTZXJ2ZXItVGltaW5nIGhlYWRlci5cclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmaW5kVzNjVHJhY2VQYXJlbnQoKSB7XHJcbiAgICB2YXIgbmFtZSA9IFwidHJhY2VwYXJlbnRcIjtcclxuICAgIHZhciB0cmFjZVBhcmVudCA9IHBhcnNlVHJhY2VQYXJlbnQoZmluZE1ldGFUYWcobmFtZSkpO1xyXG4gICAgaWYgKCF0cmFjZVBhcmVudCkge1xyXG4gICAgICAgIHRyYWNlUGFyZW50ID0gcGFyc2VUcmFjZVBhcmVudChmaW5kTmFtZWRTZXJ2ZXJUaW1pbmcobmFtZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyYWNlUGFyZW50O1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVczY1RyYWNlUGFyZW50LmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgeyBfRFlOX0NBTEwsIF9EWU5fR0VUX05FWFQsIF9EWU5fR0VUX1BMVUdJTiwgX0RZTl9JTklUSUFMSVpFLCBfRFlOX0lTX0lOSVRJQUxJWkVELCBfRFlOX0xFTkdUSCwgX0RZTl9OQU1FLCBfRFlOX1BVU0gsIF9EWU5fU0VUX05FWFRfUExVR0lOLCBfRFlOX1NQQU5fSUQsIF9EWU5fVEVBUkRPV04sIF9EWU5fVFJBQ0VfRkxBR1MsIF9EWU5fVFJBQ0VfSUQsIF9EWU5fX0RPX1RFQVJET1dOIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVFbG1Ob2RlRGF0YSB9IGZyb20gXCIuL0RhdGFDYWNoZUhlbHBlclwiO1xyXG5pbXBvcnQgeyBhcnJGb3JFYWNoLCBpc0Z1bmN0aW9uIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0NPUkUsIFNUUl9QUklPUklUWSwgU1RSX1BST0NFU1NfVEVMRU1FVFJZIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgaXNWYWxpZFNwYW5JZCwgaXNWYWxpZFRyYWNlSWQgfSBmcm9tIFwiLi9XM2NUcmFjZVBhcmVudFwiO1xyXG52YXIgcGx1Z2luU3RhdGVEYXRhID0gY3JlYXRlRWxtTm9kZURhdGEoXCJwbHVnaW5cIik7XHJcbmV4cG9ydCBmdW5jdGlvbiBfZ2V0UGx1Z2luU3RhdGUocGx1Z2luKSB7XHJcbiAgICByZXR1cm4gcGx1Z2luU3RhdGVEYXRhLmdldChwbHVnaW4sIFwic3RhdGVcIiwge30sIHRydWUpO1xyXG59XHJcbi8qKlxyXG4gKiBJbml0aWFsaXplIHRoZSBxdWV1ZSBvZiBwbHVnaW5zXHJcbiAqIEBwYXJhbSBwbHVnaW5zIC0gVGhlIGFycmF5IG9mIHBsdWdpbnMgdG8gaW5pdGlhbGl6ZSBhbmQgc2V0dGluZyBvZiB0aGUgbmV4dCBwbHVnaW5cclxuICogQHBhcmFtIGNvbmZpZyBUaGUgY3VycmVudCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxyXG4gKiBAcGFyYW0gY29yZSBUSGUgY3VycmVudCBjb3JlIGluc3RhbmNlXHJcbiAqIEBwYXJhbSBleHRlbnNpb25zIFRoZSBleHRlbnNpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZVBsdWdpbnMocHJvY2Vzc0NvbnRleHQsIGV4dGVuc2lvbnMpIHtcclxuICAgIC8vIFNldCB0aGUgbmV4dCBwbHVnaW4gYW5kIGlkZW50aWZpZWQgdGhlIHVuaW5pdGlhbGl6ZWQgcGx1Z2luc1xyXG4gICAgdmFyIGluaXRQbHVnaW5zID0gW107XHJcbiAgICB2YXIgbGFzdFBsdWdpbiA9IG51bGw7XHJcbiAgICB2YXIgcHJveHkgPSBwcm9jZXNzQ29udGV4dFtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKTtcclxuICAgIHZhciBwbHVnaW5TdGF0ZTtcclxuICAgIHdoaWxlIChwcm94eSkge1xyXG4gICAgICAgIHZhciB0aGVQbHVnaW4gPSBwcm94eVtfRFlOX0dFVF9QTFVHSU4gLyogQG1pbjolMmVnZXRQbHVnaW4gKi9dKCk7XHJcbiAgICAgICAgaWYgKHRoZVBsdWdpbikge1xyXG4gICAgICAgICAgICBpZiAobGFzdFBsdWdpbiAmJlxyXG4gICAgICAgICAgICAgICAgaXNGdW5jdGlvbihsYXN0UGx1Z2luW19EWU5fU0VUX05FWFRfUExVR0lOIC8qIEBtaW46JTJlc2V0TmV4dFBsdWdpbiAqL10pICYmXHJcbiAgICAgICAgICAgICAgICBpc0Z1bmN0aW9uKHRoZVBsdWdpbltTVFJfUFJPQ0VTU19URUxFTUVUUlkgLyogQG1pbjolMmVwcm9jZXNzVGVsZW1ldHJ5ICovXSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNldCB0aGlzIHBsdWdpbiBhcyB0aGUgbmV4dCBmb3IgdGhlIHByZXZpb3VzIG9uZVxyXG4gICAgICAgICAgICAgICAgbGFzdFBsdWdpbltfRFlOX1NFVF9ORVhUX1BMVUdJTiAvKiBAbWluOiUyZXNldE5leHRQbHVnaW4gKi9dKHRoZVBsdWdpbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhlUGx1Z2luW19EWU5fSVNfSU5JVElBTElaRUQgLyogQG1pbjolMmVpc0luaXRpYWxpemVkICovXSkpIHtcclxuICAgICAgICAgICAgICAgIGlzSW5pdGlhbGl6ZWQgPSB0aGVQbHVnaW5bX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBwbHVnaW5TdGF0ZSA9IF9nZXRQbHVnaW5TdGF0ZSh0aGVQbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgaXNJbml0aWFsaXplZCA9IHBsdWdpblN0YXRlW19EWU5fSVNfSU5JVElBTElaRUQgLyogQG1pbjolMmVpc0luaXRpYWxpemVkICovXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGluaXRQbHVnaW5zW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHRoZVBsdWdpbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGFzdFBsdWdpbiA9IHRoZVBsdWdpbjtcclxuICAgICAgICAgICAgcHJveHkgPSBwcm94eVtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBOb3cgaW5pdGlhbGl6ZSB0aGUgcGx1Z2luc1xyXG4gICAgYXJyRm9yRWFjaChpbml0UGx1Z2lucywgZnVuY3Rpb24gKHRoZVBsdWdpbikge1xyXG4gICAgICAgIHZhciBjb3JlID0gcHJvY2Vzc0NvbnRleHRbU1RSX0NPUkVdKCk7XHJcbiAgICAgICAgdGhlUGx1Z2luW19EWU5fSU5JVElBTElaRSAvKiBAbWluOiUyZWluaXRpYWxpemUgKi9dKHByb2Nlc3NDb250ZXh0LmdldENmZygpLCBjb3JlLCBleHRlbnNpb25zLCBwcm9jZXNzQ29udGV4dFtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKSk7XHJcbiAgICAgICAgcGx1Z2luU3RhdGUgPSBfZ2V0UGx1Z2luU3RhdGUodGhlUGx1Z2luKTtcclxuICAgICAgICAvLyBPbmx5IGFkZCB0aGUgY29yZSB0byB0aGUgc3RhdGUgaWYgdGhlIHBsdWdpbiBkaWRuJ3Qgc2V0IGl0IChkb2Vzbid0IGV4dGVudCBmcm9tIEJhc2VUZWxlbWV0cnlQbHVnaW4pXHJcbiAgICAgICAgaWYgKCF0aGVQbHVnaW5bU1RSX0NPUkVdICYmICFwbHVnaW5TdGF0ZVtTVFJfQ09SRV0pIHtcclxuICAgICAgICAgICAgcGx1Z2luU3RhdGVbU1RSX0NPUkVdID0gY29yZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGx1Z2luU3RhdGVbX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dID0gdHJ1ZTtcclxuICAgICAgICBkZWxldGUgcGx1Z2luU3RhdGVbX0RZTl9URUFSRE9XTiAvKiBAbWluOiUyZXRlYXJkb3duICovXTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBzb3J0UGx1Z2lucyhwbHVnaW5zKSB7XHJcbiAgICAvLyBTb3J0IGJ5IHByaW9yaXR5XHJcbiAgICByZXR1cm4gcGx1Z2lucy5zb3J0KGZ1bmN0aW9uIChleHRBLCBleHRCKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IDA7XHJcbiAgICAgICAgaWYgKGV4dEIpIHtcclxuICAgICAgICAgICAgdmFyIGJIYXNQcm9jZXNzID0gaXNGdW5jdGlvbihleHRCW1NUUl9QUk9DRVNTX1RFTEVNRVRSWV0pO1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihleHRBW1NUUl9QUk9DRVNTX1RFTEVNRVRSWV0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBiSGFzUHJvY2VzcyA/IGV4dEFbU1RSX1BSSU9SSVRZXSAtIGV4dEJbU1RSX1BSSU9SSVRZXSA6IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoYkhhc1Byb2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBleHRBID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgICAvLyBzb3J0IGNvbXBsZXRlXHJcbn1cclxuLyoqXHJcbiAqIFRlYXJkb3duIC8gVW5sb2FkIGhlbHBlciB0byBwZXJmb3JtIHRlYXJkb3duL3VubG9hZGluZyBvcGVyYXRpb25zIGZvciB0aGUgcHJvdmlkZWQgY29tcG9uZW50cyBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LCB0aGlzIHdpbGwgY2FsbCBhbnlcclxuICogX2RvVGVhcmRvd24oKSBvciBfZG9VbmxvYWQoKSBmdW5jdGlvbnMgb24gdGhlIHByb3ZpZGVkIGNvbXBvbmVudHMgdG8gYWxsb3cgdGhlbSB0byBmaW5pc2ggcmVtb3ZhbC5cclxuICogQHBhcmFtIGNvbXBvbmVudHMgLSBUaGUgY29tcG9uZW50cyB5b3Ugd2FudCB0byB1bmxvYWRcclxuICogQHBhcmFtIHVubG9hZEN0eCAtIFRoaXMgaXMgdGhlIGNvbnRleHQgdGhhdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgdW5sb2FkaW5nLlxyXG4gKiBAcGFyYW0gdW5sb2FkU3RhdGUgLSBUaGUgZGV0YWlscyAvIHN0YXRlIG9mIHRoZSB1bmxvYWQgcHJvY2VzcywgaXQgaG9sZHMgZGV0YWlscyBsaWtlIHdoZXRoZXIgaXQgc2hvdWxkIGJlIHVubG9hZGVkIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHkgYW5kIHRoZSByZWFzb24gZm9yIHRoZSB1bmxvYWQuXHJcbiAqIEBwYXJhbSBhc3luY0NhbGxiYWNrIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdGhhdCB0aGUgcGx1Z2luIG11c3QgY2FsbCBpZiBpdCByZXR1cm5zIHRydWUgdG8gaW5mb3JtIHRoZSBjYWxsZXIgdGhhdCBpdCBoYXMgY29tcGxldGVkIGFueSBhc3luYyB1bmxvYWQvdGVhcmRvd24gb3BlcmF0aW9ucy5cclxuICogQHJldHVybnMgYm9vbGVhbiAtIHRydWUgaWYgdGhlIHBsdWdpbiBoYXMgb3Igd2lsbCBjYWxsIGFzeW5jQ2FsbGJhY2ssIHRoaXMgYWxsb3dzIHRoZSBwbHVnaW4gdG8gcGVyZm9ybSBhbnkgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdW5sb2FkQ29tcG9uZW50cyhjb21wb25lbnRzLCB1bmxvYWRDdHgsIHVubG9hZFN0YXRlLCBhc3luY0NhbGxiYWNrKSB7XHJcbiAgICB2YXIgaWR4ID0gMDtcclxuICAgIGZ1bmN0aW9uIF9kb1VubG9hZCgpIHtcclxuICAgICAgICB3aGlsZSAoaWR4IDwgY29tcG9uZW50c1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10pIHtcclxuICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbaWR4KytdO1xyXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZnVuYyA9IGNvbXBvbmVudC5fZG9VbmxvYWQgfHwgY29tcG9uZW50W19EWU5fX0RPX1RFQVJET1dOIC8qIEBtaW46JTJlX2RvVGVhcmRvd24gKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oZnVuYykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY1tfRFlOX0NBTEwgLyogQG1pbjolMmVjYWxsICovXShjb21wb25lbnQsIHVubG9hZEN0eCwgdW5sb2FkU3RhdGUsIF9kb1VubG9hZCkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9kb1VubG9hZCgpO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgSURpc3RyaWJ1dGVkVHJhY2VDb250ZXh0IHdoaWNoIG9wdGlvbmFsbHkgYWxzbyBcInNldHNcIiB0aGUgdmFsdWUgb24gYSBwYXJlbnRcclxuICogQHBhcmFtIHBhcmVudEN0eCAtIEFuIG9wdGlvbmFsIHBhcmVudCBkaXN0cmlidXRlZCB0cmFjZSBpbnN0YW5jZVxyXG4gKiBAcmV0dXJucyBBIG5ldyBJRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHQgaW5zdGFuY2UgdGhhdCB1c2VzIGFuIGludGVybmFsIHRlbXBvcmFyeSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dChwYXJlbnRDdHgpIHtcclxuICAgIHZhciB0cmFjZSA9IHt9O1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBnZXROYW1lOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmFjZVtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldE5hbWU6IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICBwYXJlbnRDdHggJiYgcGFyZW50Q3R4LnNldE5hbWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICB0cmFjZVtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0VHJhY2VJZDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhY2VbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSWQgKi9dO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0VHJhY2VJZDogZnVuY3Rpb24gKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHBhcmVudEN0eCAmJiBwYXJlbnRDdHguc2V0VHJhY2VJZChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkVHJhY2VJZChuZXdWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNlW19EWU5fVFJBQ0VfSUQgLyogQG1pbjolMmV0cmFjZUlkICovXSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRTcGFuSWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYWNlW19EWU5fU1BBTl9JRCAvKiBAbWluOiUyZXNwYW5JZCAqL107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXRTcGFuSWQ6IGZ1bmN0aW9uIChuZXdWYWx1ZSkge1xyXG4gICAgICAgICAgICBwYXJlbnRDdHggJiYgcGFyZW50Q3R4LnNldFNwYW5JZChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkU3BhbklkKG5ld1ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdHJhY2VbX0RZTl9TUEFOX0lEIC8qIEBtaW46JTJlc3BhbklkICovXSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRUcmFjZUZsYWdzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cmFjZVtfRFlOX1RSQUNFX0ZMQUdTIC8qIEBtaW46JTJldHJhY2VGbGFncyAqL107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXRUcmFjZUZsYWdzOiBmdW5jdGlvbiAobmV3VHJhY2VGbGFncykge1xyXG4gICAgICAgICAgICBwYXJlbnRDdHggJiYgcGFyZW50Q3R4LnNldFRyYWNlRmxhZ3MobmV3VHJhY2VGbGFncyk7XHJcbiAgICAgICAgICAgIHRyYWNlW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSA9IG5ld1RyYWNlRmxhZ3M7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZWxlbWV0cnlIZWxwZXJzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgeyBfRFlOX0NBTEwsIF9EWU5fQ09ORklHLCBfRFlOX0NSRUFURV9ORVcsIF9EWU5fRElBR19MT0csIF9EWU5fR0VUX05FWFQsIF9EWU5fR0VUX1BMVUdJTiwgX0RZTl9JREVOVElGSUVSLCBfRFlOX0lTX0FTWU5DLCBfRFlOX0lTX0lOSVRJQUxJWkVELCBfRFlOX0xFTkdUSCwgX0RZTl9MT0dHRVIsIF9EWU5fUFJPQ0VTU19ORVhULCBfRFlOX1BVU0gsIF9EWU5fU0VUX05FWFRfUExVR0lOLCBfRFlOX1RFQVJET1dOLCBfRFlOX1VQREFURSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwsIHNhZmVHZXRMb2dnZXIgfSBmcm9tIFwiLi9EaWFnbm9zdGljTG9nZ2VyXCI7XHJcbmltcG9ydCB7IGR1bXBPYmogfSBmcm9tIFwiLi9FbnZVdGlsc1wiO1xyXG5pbXBvcnQgeyBhcnJGb3JFYWNoLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc051bGxPclVuZGVmaW5lZCwgaXNPYmplY3QsIGlzVW5kZWZpbmVkLCBvYmpFeHRlbmQsIG9iakZvckVhY2hLZXksIG9iakZyZWV6ZSwgb2JqS2V5cywgcHJveHlGdW5jdGlvbnMgfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBTVFJfQ09SRSwgU1RSX0RJU0FCTEVELCBTVFJfRU1QVFksIFNUUl9FWFRFTlNJT05fQ09ORklHLCBTVFJfUFJJT1JJVFksIFNUUl9QUk9DRVNTX1RFTEVNRVRSWSB9IGZyb20gXCIuL0ludGVybmFsQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGRvUGVyZiB9IGZyb20gXCIuL1BlcmZNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IF9nZXRQbHVnaW5TdGF0ZSB9IGZyb20gXCIuL1RlbGVtZXRyeUhlbHBlcnNcIjtcclxudmFyIHN0clRlbGVtZXRyeVBsdWdpbkNoYWluID0gXCJUZWxlbWV0cnlQbHVnaW5DaGFpblwiO1xyXG52YXIgc3RySGFzUnVuRmxhZ3MgPSBcIl9oYXNSdW5cIjtcclxudmFyIHN0ckdldFRlbEN0eCA9IFwiX2dldFRlbEN0eFwiO1xyXG52YXIgX2NoYWluSWQgPSAwO1xyXG5mdW5jdGlvbiBfZ2V0TmV4dFByb3h5U3RhcnQocHJveHksIGNvcmUsIHN0YXJ0QXQpIHtcclxuICAgIHdoaWxlIChwcm94eSkge1xyXG4gICAgICAgIGlmIChwcm94eVtfRFlOX0dFVF9QTFVHSU4gLyogQG1pbjolMmVnZXRQbHVnaW4gKi9dKCkgPT09IHN0YXJ0QXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3h5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm94eSA9IHByb3h5W19EWU5fR0VUX05FWFQgLyogQG1pbjolMmVnZXROZXh0ICovXSgpO1xyXG4gICAgfVxyXG4gICAgLy8gVGhpcyB3YXNuJ3QgZm91bmQgaW4gdGhlIGV4aXN0aW5nIGNoYWluIHNvIGNyZWF0ZSBhbiBpc29sYXRlZCBvbmUgd2l0aCBqdXN0IHRoaXMgcGx1Z2luXHJcbiAgICByZXR1cm4gY3JlYXRlVGVsZW1ldHJ5UHJveHlDaGFpbihbc3RhcnRBdF0sIGNvcmVbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dIHx8IHt9LCBjb3JlKTtcclxufVxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKiBAcGFyYW0gdGVsZW1ldHJ5Q2hhaW5cclxuICogQHBhcmFtIGNvbmZpZ1xyXG4gKiBAcGFyYW0gY29yZVxyXG4gKiBAcGFyYW0gc3RhcnRBdCAtIElkZW50aWZpZXMgdGhlIG5leHQgcGx1Z2luIHRvIGV4ZWN1dGUsIGlmIG51bGwgdGhlcmUgaXMgbm8gXCJuZXh0XCIgcGx1Z2luIGFuZCBpZiB1bmRlZmluZWQgaXQgc2hvdWxkIGFzc3VtZSB0aGUgc3RhcnQgb2YgdGhlIGNoYWluXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG5mdW5jdGlvbiBfY3JlYXRlSW50ZXJuYWxDb250ZXh0KHRlbGVtZXRyeUNoYWluLCBjb25maWcsIGNvcmUsIHN0YXJ0QXQpIHtcclxuICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzdGFydCBleGVjdXRpb24gZnJvbSB0aGlzIHNwZWNpZmljIHBsdWdpblxyXG4gICAgLy8gb3Igd2Ugc2ltcGx5IHJldXNlIHRoZSBleGlzdGluZyB0ZWxlbWV0cnkgcGx1Z2luIGNoYWluIChub3JtYWwgZXhlY3V0aW9uIGNhc2UpXHJcbiAgICB2YXIgX25leHRQcm94eSA9IG51bGw7IC8vIEJ5IERlZmF1bHQgc2V0IGFzIG5vIG5leHQgcGx1Z2luXHJcbiAgICB2YXIgX29uQ29tcGxldGUgPSBbXTtcclxuICAgIGlmIChzdGFydEF0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmV4dCBlbGVtZW50IChudWxsKSB2cyBub3QgZGVmaW5lZCAodW5kZWZpbmVkKSBzbyB1c2UgdGhlIGZ1bGwgY2hhaW5cclxuICAgICAgICBfbmV4dFByb3h5ID0gc3RhcnRBdCA/IF9nZXROZXh0UHJveHlTdGFydCh0ZWxlbWV0cnlDaGFpbiwgY29yZSwgc3RhcnRBdCkgOiB0ZWxlbWV0cnlDaGFpbjtcclxuICAgIH1cclxuICAgIHZhciBjb250ZXh0ID0ge1xyXG4gICAgICAgIF9uZXh0OiBfbW92ZU5leHQsXHJcbiAgICAgICAgY3R4OiB7XHJcbiAgICAgICAgICAgIGNvcmU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb3JlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkaWFnTG9nOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2FmZUdldExvZ2dlcihjb3JlLCBjb25maWcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRDZmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb25maWc7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldEV4dENmZzogX2dldEV4dENmZyxcclxuICAgICAgICAgICAgZ2V0Q29uZmlnOiBfZ2V0Q29uZmlnLFxyXG4gICAgICAgICAgICBoYXNOZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gISFfbmV4dFByb3h5O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXROZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX25leHRQcm94eTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V0TmV4dDogZnVuY3Rpb24gKG5leHRQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgIF9uZXh0UHJveHkgPSBuZXh0UGx1Z2luO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpdGVyYXRlOiBfaXRlcmF0ZUNoYWluLFxyXG4gICAgICAgICAgICBvbkNvbXBsZXRlOiBfYWRkT25Db21wbGV0ZVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBfYWRkT25Db21wbGV0ZShvbkNvbXBsZXRlLCB0aGF0KSB7XHJcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICBhcmdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25Db21wbGV0ZSkge1xyXG4gICAgICAgICAgICBfb25Db21wbGV0ZVtfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXSh7XHJcbiAgICAgICAgICAgICAgICBmdW5jOiBvbkNvbXBsZXRlLFxyXG4gICAgICAgICAgICAgICAgc2VsZjogIWlzVW5kZWZpbmVkKHRoYXQpID8gdGhhdCA6IGNvbnRleHQuY3R4LFxyXG4gICAgICAgICAgICAgICAgYXJnczogYXJnc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfbW92ZU5leHQoKSB7XHJcbiAgICAgICAgdmFyIG5leHRQcm94eSA9IF9uZXh0UHJveHk7XHJcbiAgICAgICAgLy8gQXV0b21hdGljYWxseSBtb3ZlIHRvIHRoZSBuZXh0IHBsdWdpblxyXG4gICAgICAgIF9uZXh0UHJveHkgPSBuZXh0UHJveHkgPyBuZXh0UHJveHlbX0RZTl9HRVRfTkVYVCAvKiBAbWluOiUyZWdldE5leHQgKi9dKCkgOiBudWxsO1xyXG4gICAgICAgIGlmICghbmV4dFByb3h5KSB7XHJcbiAgICAgICAgICAgIHZhciBvbkNvbXBsZXRlID0gX29uQ29tcGxldGU7XHJcbiAgICAgICAgICAgIGlmIChvbkNvbXBsZXRlICYmIG9uQ29tcGxldGVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYXJyRm9yRWFjaChvbkNvbXBsZXRlLCBmdW5jdGlvbiAoY29tcGxldGVEZXRhaWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVEZXRhaWxzLmZ1bmNbX0RZTl9DQUxMIC8qIEBtaW46JTJlY2FsbCAqL10oY29tcGxldGVEZXRhaWxzLnNlbGYsIGNvbXBsZXRlRGV0YWlscy5hcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoY29yZVtfRFlOX0xPR0dFUiAvKiBAbWluOiUyZWxvZ2dlciAqL10sIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA3MyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlBsdWdpbkV4Y2VwdGlvbiAqLywgXCJVbmV4cGVjdGVkIEV4Y2VwdGlvbiBkdXJpbmcgb25Db21wbGV0ZSAtIFwiICsgZHVtcE9iaihlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBfb25Db21wbGV0ZSA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXh0UHJveHk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfZ2V0RXh0Q2ZnKGlkZW50aWZpZXIsIGRlZmF1bHRWYWx1ZSwgbWVyZ2VEZWZhdWx0KSB7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwKSB7IGRlZmF1bHRWYWx1ZSA9IHt9OyB9XHJcbiAgICAgICAgaWYgKG1lcmdlRGVmYXVsdCA9PT0gdm9pZCAwKSB7IG1lcmdlRGVmYXVsdCA9IDAgLyogR2V0RXh0Q2ZnTWVyZ2VUeXBlLk5vbmUgKi87IH1cclxuICAgICAgICB2YXIgdGhlQ29uZmlnO1xyXG4gICAgICAgIGlmIChjb25maWcpIHtcclxuICAgICAgICAgICAgdmFyIGV4dENvbmZpZyA9IGNvbmZpZ1tTVFJfRVhURU5TSU9OX0NPTkZJRyAvKiBAbWluOiUyZWV4dGVuc2lvbkNvbmZpZyAqL107XHJcbiAgICAgICAgICAgIGlmIChleHRDb25maWcgJiYgaWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICAgICAgdGhlQ29uZmlnID0gZXh0Q29uZmlnW2lkZW50aWZpZXJdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhlQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIC8vIEp1c3QgdXNlIHRoZSBkZWZhdWx0c1xyXG4gICAgICAgICAgICB0aGVDb25maWcgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KGRlZmF1bHRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgaWYgKG1lcmdlRGVmYXVsdCAhPT0gMCAvKiBHZXRFeHRDZmdNZXJnZVR5cGUuTm9uZSAqLykge1xyXG4gICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGRlZmF1bHRzIGFuZCBjb25maWd1cmVkIHZhbHVlc1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld0NvbmZpZ18xID0gb2JqRXh0ZW5kKHRydWUsIGRlZmF1bHRWYWx1ZSwgdGhlQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb25maWcgJiYgbWVyZ2VEZWZhdWx0ID09PSAyIC8qIEdldEV4dENmZ01lcmdlVHlwZS5NZXJnZURlZmF1bHRGcm9tUm9vdE9yRGVmYXVsdCAqLykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVudW1lcmF0ZSBvdmVyIHRoZSBkZWZhdWx0VmFsdWVzIGFuZCBpZiBub3QgYWxyZWFkeSBwb3B1bGF0ZWQgYXR0ZW1wdCB0b1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgYSB2YWx1ZSBmcm9tIHRoZSByb290IGNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgICAgIG9iakZvckVhY2hLZXkoZGVmYXVsdFZhbHVlLCBmdW5jdGlvbiAoZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGVhY2ggdW5zcGVjaWZpZWQgZmllbGQsIHNldCB0aGUgZGVmYXVsdCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQobmV3Q29uZmlnXzFbZmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNmZ1ZhbHVlID0gY29uZmlnW2ZpZWxkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY2ZnVmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q29uZmlnXzFbZmllbGRdID0gY2ZnVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoZUNvbmZpZyA9IG5ld0NvbmZpZ18xO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGVDb25maWc7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfZ2V0Q29uZmlnKGlkZW50aWZpZXIsIGZpZWxkLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICBpZiAoZGVmYXVsdFZhbHVlID09PSB2b2lkIDApIHsgZGVmYXVsdFZhbHVlID0gZmFsc2U7IH1cclxuICAgICAgICB2YXIgdGhlVmFsdWU7XHJcbiAgICAgICAgdmFyIGV4dENvbmZpZyA9IF9nZXRFeHRDZmcoaWRlbnRpZmllciwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGV4dENvbmZpZyAmJiAhaXNOdWxsT3JVbmRlZmluZWQoZXh0Q29uZmlnW2ZpZWxkXSkpIHtcclxuICAgICAgICAgICAgdGhlVmFsdWUgPSBleHRDb25maWdbZmllbGRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjb25maWcgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKGNvbmZpZ1tmaWVsZF0pKSB7XHJcbiAgICAgICAgICAgIHRoZVZhbHVlID0gY29uZmlnW2ZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh0aGVWYWx1ZSkgPyB0aGVWYWx1ZSA6IGRlZmF1bHRWYWx1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9pdGVyYXRlQ2hhaW4oY2IpIHtcclxuICAgICAgICAvLyBLZWVwIHByb2Nlc3NpbmcgdW50aWwgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgY2hhaW5cclxuICAgICAgICB2YXIgbmV4dFBsdWdpbjtcclxuICAgICAgICB3aGlsZSAoISEobmV4dFBsdWdpbiA9IGNvbnRleHQuX25leHQoKSkpIHtcclxuICAgICAgICAgICAgdmFyIHBsdWdpbiA9IG5leHRQbHVnaW5bX0RZTl9HRVRfUExVR0lOIC8qIEBtaW46JTJlZ2V0UGx1Z2luICovXSgpO1xyXG4gICAgICAgICAgICBpZiAocGx1Z2luKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjYWxsYmFjayB3aXRoIHRoZSBjdXJyZW50IG9uXHJcbiAgICAgICAgICAgICAgICBjYihwbHVnaW4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHQ7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcgVGVsZW1ldHJ5IEl0ZW0gY29udGV4dCB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZywgY29yZSBhbmQgcGx1Z2luIGV4ZWN1dGlvbiBjaGFpblxyXG4gKiBAcGFyYW0gcGx1Z2lucyAtIFRoZSBwbHVnaW4gaW5zdGFuY2VzIHRoYXQgd2lsbCBiZSBleGVjdXRlZFxyXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGN1cnJlbnQgY29uZmlnXHJcbiAqIEBwYXJhbSBjb3JlIC0gVGhlIGN1cnJlbnQgY29yZSBpbnN0YW5jZVxyXG4gKiBAcGFyYW0gc3RhcnRBdCAtIElkZW50aWZpZXMgdGhlIG5leHQgcGx1Z2luIHRvIGV4ZWN1dGUsIGlmIG51bGwgdGhlcmUgaXMgbm8gXCJuZXh0XCIgcGx1Z2luIGFuZCBpZiB1bmRlZmluZWQgaXQgc2hvdWxkIGFzc3VtZSB0aGUgc3RhcnQgb2YgdGhlIGNoYWluXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQodGVsZW1ldHJ5Q2hhaW4sIGNvbmZpZywgY29yZSwgc3RhcnRBdCkge1xyXG4gICAgdmFyIGludGVybmFsQ29udGV4dCA9IF9jcmVhdGVJbnRlcm5hbENvbnRleHQodGVsZW1ldHJ5Q2hhaW4sIGNvbmZpZywgY29yZSwgc3RhcnRBdCk7XHJcbiAgICB2YXIgY29udGV4dCA9IGludGVybmFsQ29udGV4dC5jdHg7XHJcbiAgICBmdW5jdGlvbiBfcHJvY2Vzc05leHQoZW52KSB7XHJcbiAgICAgICAgdmFyIG5leHRQbHVnaW4gPSBpbnRlcm5hbENvbnRleHQuX25leHQoKTtcclxuICAgICAgICAvLyBSdW4gdGhlIG5leHQgcGx1Z2luIHdoaWNoIHdpbGwgY2FsbCBcInByb2Nlc3NOZXh0KClcIlxyXG4gICAgICAgIG5leHRQbHVnaW4gJiYgbmV4dFBsdWdpbltTVFJfUFJPQ0VTU19URUxFTUVUUlkgLyogQG1pbjolMmVwcm9jZXNzVGVsZW1ldHJ5ICovXShlbnYsIGNvbnRleHQpO1xyXG4gICAgICAgIHJldHVybiAhbmV4dFBsdWdpbjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9jcmVhdGVOZXcocGx1Z2lucywgc3RhcnRBdCkge1xyXG4gICAgICAgIGlmIChwbHVnaW5zID09PSB2b2lkIDApIHsgcGx1Z2lucyA9IG51bGw7IH1cclxuICAgICAgICBpZiAoaXNBcnJheShwbHVnaW5zKSkge1xyXG4gICAgICAgICAgICBwbHVnaW5zID0gY3JlYXRlVGVsZW1ldHJ5UHJveHlDaGFpbihwbHVnaW5zLCBjb25maWcsIGNvcmUsIHN0YXJ0QXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQocGx1Z2lucyB8fCBjb250ZXh0W19EWU5fR0VUX05FWFQgLyogQG1pbjolMmVnZXROZXh0ICovXSgpLCBjb25maWcsIGNvcmUsIHN0YXJ0QXQpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dFtfRFlOX1BST0NFU1NfTkVYVCAvKiBAbWluOiUyZXByb2Nlc3NOZXh0ICovXSA9IF9wcm9jZXNzTmV4dDtcclxuICAgIGNvbnRleHRbX0RZTl9DUkVBVEVfTkVXIC8qIEBtaW46JTJlY3JlYXRlTmV3ICovXSA9IF9jcmVhdGVOZXc7XHJcbiAgICByZXR1cm4gY29udGV4dDtcclxufVxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyBUZWxlbWV0cnkgSXRlbSBjb250ZXh0IHdpdGggdGhlIGN1cnJlbnQgY29uZmlnLCBjb3JlIGFuZCBwbHVnaW4gZXhlY3V0aW9uIGNoYWluIGZvciBoYW5kbGluZyB0aGUgdW5sb2FkaW5nIG9mIHRoZSBjaGFpblxyXG4gKiBAcGFyYW0gcGx1Z2lucyAtIFRoZSBwbHVnaW4gaW5zdGFuY2VzIHRoYXQgd2lsbCBiZSBleGVjdXRlZFxyXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGN1cnJlbnQgY29uZmlnXHJcbiAqIEBwYXJhbSBjb3JlIC0gVGhlIGN1cnJlbnQgY29yZSBpbnN0YW5jZVxyXG4gKiBAcGFyYW0gc3RhcnRBdCAtIElkZW50aWZpZXMgdGhlIG5leHQgcGx1Z2luIHRvIGV4ZWN1dGUsIGlmIG51bGwgdGhlcmUgaXMgbm8gXCJuZXh0XCIgcGx1Z2luIGFuZCBpZiB1bmRlZmluZWQgaXQgc2hvdWxkIGFzc3VtZSB0aGUgc3RhcnQgb2YgdGhlIGNoYWluXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQodGVsZW1ldHJ5Q2hhaW4sIGNvcmUsIHN0YXJ0QXQpIHtcclxuICAgIHZhciBjb25maWcgPSBjb3JlW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSB8fCB7fTtcclxuICAgIHZhciBpbnRlcm5hbENvbnRleHQgPSBfY3JlYXRlSW50ZXJuYWxDb250ZXh0KHRlbGVtZXRyeUNoYWluLCBjb25maWcsIGNvcmUsIHN0YXJ0QXQpO1xyXG4gICAgdmFyIGNvbnRleHQgPSBpbnRlcm5hbENvbnRleHQuY3R4O1xyXG4gICAgZnVuY3Rpb24gX3Byb2Nlc3NOZXh0KHVubG9hZFN0YXRlKSB7XHJcbiAgICAgICAgdmFyIG5leHRQbHVnaW4gPSBpbnRlcm5hbENvbnRleHQuX25leHQoKTtcclxuICAgICAgICBuZXh0UGx1Z2luICYmIG5leHRQbHVnaW4udW5sb2FkKGNvbnRleHQsIHVubG9hZFN0YXRlKTtcclxuICAgICAgICByZXR1cm4gIW5leHRQbHVnaW47XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfY3JlYXRlTmV3KHBsdWdpbnMsIHN0YXJ0QXQpIHtcclxuICAgICAgICBpZiAocGx1Z2lucyA9PT0gdm9pZCAwKSB7IHBsdWdpbnMgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocGx1Z2lucykpIHtcclxuICAgICAgICAgICAgcGx1Z2lucyA9IGNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4ocGx1Z2lucywgY29uZmlnLCBjb3JlLCBzdGFydEF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVbmxvYWRDb250ZXh0KHBsdWdpbnMgfHwgY29udGV4dFtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKSwgY29yZSwgc3RhcnRBdCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dID0gX3Byb2Nlc3NOZXh0O1xyXG4gICAgY29udGV4dFtfRFlOX0NSRUFURV9ORVcgLyogQG1pbjolMmVjcmVhdGVOZXcgKi9dID0gX2NyZWF0ZU5ldztcclxuICAgIHJldHVybiBjb250ZXh0O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbmV3IFRlbGVtZXRyeSBJdGVtIGNvbnRleHQgd2l0aCB0aGUgY3VycmVudCBjb25maWcsIGNvcmUgYW5kIHBsdWdpbiBleGVjdXRpb24gY2hhaW4gZm9yIHVwZGF0aW5nIHRoZSBjb25maWd1cmF0aW9uXHJcbiAqIEBwYXJhbSBwbHVnaW5zIC0gVGhlIHBsdWdpbiBpbnN0YW5jZXMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkXHJcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgY3VycmVudCBjb25maWdcclxuICogQHBhcmFtIGNvcmUgLSBUaGUgY3VycmVudCBjb3JlIGluc3RhbmNlXHJcbiAqIEBwYXJhbSBzdGFydEF0IC0gSWRlbnRpZmllcyB0aGUgbmV4dCBwbHVnaW4gdG8gZXhlY3V0ZSwgaWYgbnVsbCB0aGVyZSBpcyBubyBcIm5leHRcIiBwbHVnaW4gYW5kIGlmIHVuZGVmaW5lZCBpdCBzaG91bGQgYXNzdW1lIHRoZSBzdGFydCBvZiB0aGUgY2hhaW5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5VXBkYXRlQ29udGV4dCh0ZWxlbWV0cnlDaGFpbiwgY29yZSwgc3RhcnRBdCkge1xyXG4gICAgdmFyIGNvbmZpZyA9IGNvcmVbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dIHx8IHt9O1xyXG4gICAgdmFyIGludGVybmFsQ29udGV4dCA9IF9jcmVhdGVJbnRlcm5hbENvbnRleHQodGVsZW1ldHJ5Q2hhaW4sIGNvbmZpZywgY29yZSwgc3RhcnRBdCk7XHJcbiAgICB2YXIgY29udGV4dCA9IGludGVybmFsQ29udGV4dC5jdHg7XHJcbiAgICBmdW5jdGlvbiBfcHJvY2Vzc05leHQodXBkYXRlU3RhdGUpIHtcclxuICAgICAgICByZXR1cm4gY29udGV4dC5pdGVyYXRlKGZ1bmN0aW9uIChwbHVnaW4pIHtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocGx1Z2luW19EWU5fVVBEQVRFIC8qIEBtaW46JTJldXBkYXRlICovXSkpIHtcclxuICAgICAgICAgICAgICAgIHBsdWdpbltfRFlOX1VQREFURSAvKiBAbWluOiUyZXVwZGF0ZSAqL10oY29udGV4dCwgdXBkYXRlU3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfY3JlYXRlTmV3KHBsdWdpbnMsIHN0YXJ0QXQpIHtcclxuICAgICAgICBpZiAocGx1Z2lucyA9PT0gdm9pZCAwKSB7IHBsdWdpbnMgPSBudWxsOyB9XHJcbiAgICAgICAgaWYgKGlzQXJyYXkocGx1Z2lucykpIHtcclxuICAgICAgICAgICAgcGx1Z2lucyA9IGNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4ocGx1Z2lucywgY29uZmlnLCBjb3JlLCBzdGFydEF0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVcGRhdGVDb250ZXh0KHBsdWdpbnMgfHwgY29udGV4dFtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKSwgY29yZSwgc3RhcnRBdCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dID0gX3Byb2Nlc3NOZXh0O1xyXG4gICAgY29udGV4dFtfRFlOX0NSRUFURV9ORVcgLyogQG1pbjolMmVjcmVhdGVOZXcgKi9dID0gX2NyZWF0ZU5ldztcclxuICAgIHJldHVybiBjb250ZXh0O1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIGFuIGV4ZWN1dGlvbiBjaGFpbiBmcm9tIHRoZSBhcnJheSBvZiBwbHVnaW5zXHJcbiAqIEBwYXJhbSBwbHVnaW5zIC0gVGhlIGFycmF5IG9mIHBsdWdpbnMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoaXMgb3JkZXJcclxuICogQHBhcmFtIGRlZkl0ZW1DdHggLSBUaGUgZGVmYXVsdCBleGVjdXRpb24gY29udGV4dCB0byB1c2Ugd2hlbiBubyB0ZWxlbWV0cnkgY29udGV4dCBpcyBwYXNzZWQgdG8gcHJvY2Vzc1RlbGVtZXRyeSgpLCB0aGlzXHJcbiAqIHNob3VsZCBiZSBmb3IgbGVnYWN5IHBsdWdpbnMgb25seS4gQ3VycmVudGx5LCBvbmx5IHVzZWQgZm9yIHBhc3NpbmcgdGhlIGN1cnJlbnQgY29yZSBpbnN0YW5jZSBhbmQgdG8gcHJvdmlkZSBiZXR0ZXIgZXJyb3JcclxuICogcmVwb3J0aW5nIChoYXNSdW4pIHdoZW4gZXJyb3JzIG9jY3VyLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4ocGx1Z2lucywgY29uZmlnLCBjb3JlLCBzdGFydEF0KSB7XHJcbiAgICB2YXIgZmlyc3RQcm94eSA9IG51bGw7XHJcbiAgICB2YXIgYWRkID0gc3RhcnRBdCA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGlmIChpc0FycmF5KHBsdWdpbnMpICYmIHBsdWdpbnNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgIC8vIENyZWF0ZSB0aGUgcHJveGllcyBhbmQgd2lyZSB1cCB0aGUgbmV4dCBwbHVnaW4gY2hhaW5cclxuICAgICAgICB2YXIgbGFzdFByb3h5XzEgPSBudWxsO1xyXG4gICAgICAgIGFyckZvckVhY2gocGx1Z2lucywgZnVuY3Rpb24gKHRoZVBsdWdpbikge1xyXG4gICAgICAgICAgICBpZiAoIWFkZCAmJiBzdGFydEF0ID09PSB0aGVQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgIGFkZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGFkZCAmJiB0aGVQbHVnaW4gJiYgaXNGdW5jdGlvbih0aGVQbHVnaW5bU1RSX1BST0NFU1NfVEVMRU1FVFJZIC8qIEBtaW46JTJlcHJvY2Vzc1RlbGVtZXRyeSAqL10pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBPbmx5IGFkZCBwbHVnaW5zIHRoYXQgYXJlIHByb2Nlc3NvcnNcclxuICAgICAgICAgICAgICAgIHZhciBuZXdQcm94eSA9IGNyZWF0ZVRlbGVtZXRyeVBsdWdpblByb3h5KHRoZVBsdWdpbiwgY29uZmlnLCBjb3JlKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmlyc3RQcm94eSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0UHJveHkgPSBuZXdQcm94eTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChsYXN0UHJveHlfMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGlzIG5ldyBwcm94eSBhcyB0aGUgbmV4dCBmb3IgdGhlIHByZXZpb3VzIG9uZVxyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RQcm94eV8xLl9zZXROZXh0KG5ld1Byb3h5KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxhc3RQcm94eV8xID0gbmV3UHJveHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzdGFydEF0ICYmICFmaXJzdFByb3h5KSB7XHJcbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBcInN0YXJ0QXRcIiB3YXMgbm90IGluIHRoZSBvcmlnaW5hbCBsaXN0IG9mIHBsdWdpbnNcclxuICAgICAgICByZXR1cm4gY3JlYXRlVGVsZW1ldHJ5UHJveHlDaGFpbihbc3RhcnRBdF0sIGNvbmZpZywgY29yZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlyc3RQcm94eTtcclxufVxyXG4vKipcclxuICogQ3JlYXRlIHRoZSBwcm9jZXNzaW5nIHRlbGVtZXRyeSBwcm94eSBpbnN0YW5jZSwgdGhlIHByb3h5IGlzIHVzZWQgdG8gYWJzdHJhY3QgdGhlIGN1cnJlbnQgcGx1Z2luIHRvIGFsbG93IG1vbml0b3JpbmcgYW5kXHJcbiAqIGV4ZWN1dGlvbiBwbHVnaW5zIHdoaWxlIHBhc3NpbmcgYXJvdW5kIHRoZSBkeW5hbWljIGV4ZWN1dGlvbiBzdGF0ZSAoSVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KSwgdGhlIHByb3h5IGluc3RhbmNlIG5vIGxvbmdlclxyXG4gKiBjb250YWlucyBhbnkgZXhlY3V0aW9uIHN0YXRlIGFuZCBjYW4gYmUgcmV1c2VkIGJldHdlZW4gcmVxdWVzdHMgKHRoaXMgd2FzIG5vdCB0aGUgY2FzZSBmb3IgMi43LjIgYW5kIGVhcmxpZXIgd2l0aCB0aGVcclxuICogVGVsZW1ldHJ5UGx1Z2luQ2hhaW4gY2xhc3MpLlxyXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiBpbnN0YW5jZSB0byBwcm94eVxyXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGRlZmF1bHQgZXhlY3V0aW9uIGNvbnRleHQgdG8gdXNlIHdoZW4gbm8gdGVsZW1ldHJ5IGNvbnRleHQgaXMgcGFzc2VkIHRvIHByb2Nlc3NUZWxlbWV0cnkoKSwgdGhpc1xyXG4gKiBzaG91bGQgYmUgZm9yIGxlZ2FjeSBwbHVnaW5zIG9ubHkuIEN1cnJlbnRseSwgb25seSB1c2VkIGZvciBwYXNzaW5nIHRoZSBjdXJyZW50IGNvcmUgaW5zdGFuY2UgYW5kIHRvIHByb3ZpZGUgYmV0dGVyIGVycm9yXHJcbiAqIHJlcG9ydGluZyAoaGFzUnVuKSB3aGVuIGVycm9ycyBvY2N1ci5cclxuICogQHJldHVybnNcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZWxlbWV0cnlQbHVnaW5Qcm94eShwbHVnaW4sIGNvbmZpZywgY29yZSkge1xyXG4gICAgdmFyIG5leHRQcm94eSA9IG51bGw7XHJcbiAgICB2YXIgaGFzUHJvY2Vzc1RlbGVtZXRyeSA9IGlzRnVuY3Rpb24ocGx1Z2luW1NUUl9QUk9DRVNTX1RFTEVNRVRSWSAvKiBAbWluOiUyZXByb2Nlc3NUZWxlbWV0cnkgKi9dKTtcclxuICAgIHZhciBoYXNTZXROZXh0ID0gaXNGdW5jdGlvbihwbHVnaW5bX0RZTl9TRVRfTkVYVF9QTFVHSU4gLyogQG1pbjolMmVzZXROZXh0UGx1Z2luICovXSk7XHJcbiAgICB2YXIgY2hhaW5JZDtcclxuICAgIGlmIChwbHVnaW4pIHtcclxuICAgICAgICBjaGFpbklkID0gcGx1Z2luW19EWU5fSURFTlRJRklFUiAvKiBAbWluOiUyZWlkZW50aWZpZXIgKi9dICsgXCItXCIgKyBwbHVnaW5bU1RSX1BSSU9SSVRZIC8qIEBtaW46JTJlcHJpb3JpdHkgKi9dICsgXCItXCIgKyBfY2hhaW5JZCsrO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY2hhaW5JZCA9IFwiVW5rbm93bi0wLVwiICsgX2NoYWluSWQrKztcclxuICAgIH1cclxuICAgIHZhciBwcm94eUNoYWluID0ge1xyXG4gICAgICAgIGdldFBsdWdpbjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGx1Z2luO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0TmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV4dFByb3h5O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJvY2Vzc1RlbGVtZXRyeTogX3Byb2Nlc3NUZWxlbWV0cnksXHJcbiAgICAgICAgdW5sb2FkOiBfdW5sb2FkUGx1Z2luLFxyXG4gICAgICAgIHVwZGF0ZTogX3VwZGF0ZVBsdWdpbixcclxuICAgICAgICBfaWQ6IGNoYWluSWQsXHJcbiAgICAgICAgX3NldE5leHQ6IGZ1bmN0aW9uIChuZXh0UGx1Z2luKSB7XHJcbiAgICAgICAgICAgIG5leHRQcm94eSA9IG5leHRQbHVnaW47XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGZ1bmN0aW9uIF9nZXRUZWxDdHgoKSB7XHJcbiAgICAgICAgdmFyIGl0ZW1DdHg7XHJcbiAgICAgICAgLy8gTG9va3MgbGlrZSBhIHBsdWdpbiBkaWRuJ3QgcGFzcyB0aGUgKG9wdGlvbmFsKSBjb250ZXh0LCBzbyBjcmVhdGUgYSBuZXcgb25lXHJcbiAgICAgICAgaWYgKHBsdWdpbiAmJiBpc0Z1bmN0aW9uKHBsdWdpbltzdHJHZXRUZWxDdHhdKSkge1xyXG4gICAgICAgICAgICAvLyBUaGlzIHBsdWdpbiBleHRlbmRzIGZyb20gdGhlIEJhc2VUZWxlbWV0cnlQbHVnaW4gc28gbGV0cyB1c2UgaXRcclxuICAgICAgICAgICAgaXRlbUN0eCA9IHBsdWdpbltzdHJHZXRUZWxDdHhdKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3Jhcnkgb25lXHJcbiAgICAgICAgICAgIGl0ZW1DdHggPSBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dChwcm94eUNoYWluLCBjb25maWcsIGNvcmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbUN0eDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9wcm9jZXNzQ2hhaW4oaXRlbUN0eCwgcHJvY2Vzc1BsdWdpbkZuLCBuYW1lLCBkZXRhaWxzLCBpc0FzeW5jKSB7XHJcbiAgICAgICAgdmFyIGhhc1J1biA9IGZhbHNlO1xyXG4gICAgICAgIHZhciBpZGVudGlmaWVyID0gcGx1Z2luID8gcGx1Z2luW19EWU5fSURFTlRJRklFUiAvKiBAbWluOiUyZWlkZW50aWZpZXIgKi9dIDogc3RyVGVsZW1ldHJ5UGx1Z2luQ2hhaW47XHJcbiAgICAgICAgdmFyIGhhc1J1bkNvbnRleHQgPSBpdGVtQ3R4W3N0ckhhc1J1bkZsYWdzXTtcclxuICAgICAgICBpZiAoIWhhc1J1bkNvbnRleHQpIHtcclxuICAgICAgICAgICAgLy8gQXNzaWduIGFuZCBwb3B1bGF0ZVxyXG4gICAgICAgICAgICBoYXNSdW5Db250ZXh0ID0gaXRlbUN0eFtzdHJIYXNSdW5GbGFnc10gPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2Uga2VlcCB0aGUgY29udGV4dCBpbiBzeW5jXHJcbiAgICAgICAgaXRlbUN0eC5zZXROZXh0KG5leHRQcm94eSk7XHJcbiAgICAgICAgaWYgKHBsdWdpbikge1xyXG4gICAgICAgICAgICBkb1BlcmYoaXRlbUN0eFtTVFJfQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dKCksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIGlkZW50aWZpZXIgKyBcIjpcIiArIG5hbWU7IH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhpcyBjb21wb25lbnQgYXMgaGF2aW5nIHJ1blxyXG4gICAgICAgICAgICAgICAgaGFzUnVuQ29udGV4dFtjaGFpbklkXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBhIGZsYWcgb24gdGhlIG5leHQgcGx1Z2luIHNvIHdlIGtub3cgaWYgaXQgd2FzIGF0dGVtcHRlZCB0byBiZSBleGVjdXRlZFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0SWQgPSBuZXh0UHJveHkgPyBuZXh0UHJveHkuX2lkIDogU1RSX0VNUFRZO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzUnVuQ29udGV4dFtuZXh0SWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGhhc1J1biA9IHByb2Nlc3NQbHVnaW5GbihpdGVtQ3R4KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBoYXNOZXh0UnVuID0gbmV4dFByb3h5ID8gaGFzUnVuQ29udGV4dFtuZXh0UHJveHkuX2lkXSA6IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc05leHRSdW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgcGx1Z2luIGFmdGVyIHVzIGhhcyBhbHJlYWR5IHJ1biBzbyBzZXQgdGhpcyBvbmUgYXMgY29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzUnVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0UHJveHkgfHwgIWhhc05leHRSdW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRWl0aGVyIHdlIGhhdmUgbm8gbmV4dCBwbHVnaW4gb3IgdGhlIGN1cnJlbnQgb25lIGRpZCBub3QgYXR0ZW1wdCB0byBjYWxsIHRoZSBuZXh0IHBsdWdpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGljaCBtZWFucyB0aGUgY3VycmVudCBvbmUgaXMgdGhlIHJvb3Qgb2YgdGhlIGZhaWx1cmUgc28gbG9nL3JlcG9ydCB0aGlzIGZhaWx1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoaXRlbUN0eFtfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA3MyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlBsdWdpbkV4Y2VwdGlvbiAqLywgXCJQbHVnaW4gW1wiICsgaWRlbnRpZmllciArIFwiXSBmYWlsZWQgZHVyaW5nIFwiICsgbmFtZSArIFwiIC0gXCIgKyBkdW1wT2JqKGVycm9yKSArIFwiLCBydW4gZmxhZ3M6IFwiICsgZHVtcE9iaihoYXNSdW5Db250ZXh0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCBkZXRhaWxzLCBpc0FzeW5jKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc1J1bjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9wcm9jZXNzVGVsZW1ldHJ5KGVudiwgaXRlbUN0eCkge1xyXG4gICAgICAgIGl0ZW1DdHggPSBpdGVtQ3R4IHx8IF9nZXRUZWxDdHgoKTtcclxuICAgICAgICBmdW5jdGlvbiBfY2FsbFByb2Nlc3NUZWxlbWV0cnkoaXRlbUN0eCkge1xyXG4gICAgICAgICAgICBpZiAoIXBsdWdpbiB8fCAhaGFzUHJvY2Vzc1RlbGVtZXRyeSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBwbHVnaW5TdGF0ZSA9IF9nZXRQbHVnaW5TdGF0ZShwbHVnaW4pO1xyXG4gICAgICAgICAgICBpZiAocGx1Z2luU3RhdGVbX0RZTl9URUFSRE9XTiAvKiBAbWluOiUyZXRlYXJkb3duICovXSB8fCBwbHVnaW5TdGF0ZVtTVFJfRElTQUJMRURdKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2Uga2VlcCB0aGUgY29udGV4dCBpbiBzeW5jIChmb3IgcHJvY2Vzc05leHQoKSksIGp1c3QgaW4gY2FzZSBhIHBsdWdpblxyXG4gICAgICAgICAgICAvLyBkb2Vzbid0IGNhbGxzIHByb2Nlc3NUZWxlbWV0cnkoKSBpbnN0ZWFkIG9mIGl0ZW1Db250ZXh0LnByb2Nlc3NOZXh0KCkgb3Igc29tZVxyXG4gICAgICAgICAgICAvLyBvdGhlciBmb3JtIG9mIGVycm9yIG9jY3VycmVkXHJcbiAgICAgICAgICAgIGlmIChoYXNTZXROZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHNldHRpbmcgdGhlIG5leHQgcGx1Z2luIG9uIHRoZSBpbnN0YW5jZVxyXG4gICAgICAgICAgICAgICAgcGx1Z2luW19EWU5fU0VUX05FWFRfUExVR0lOIC8qIEBtaW46JTJlc2V0TmV4dFBsdWdpbiAqL10obmV4dFByb3h5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwbHVnaW5bU1RSX1BST0NFU1NfVEVMRU1FVFJZIC8qIEBtaW46JTJlcHJvY2Vzc1RlbGVtZXRyeSAqL10oZW52LCBpdGVtQ3R4KTtcclxuICAgICAgICAgICAgLy8gUHJvY2VzcyBUZWxlbWV0cnkgaXMgZXhwZWN0ZWQgdG8gY2FsbCBpdGVtQ3R4LnByb2Nlc3NOZXh0KCkgb3IgbmV4dFBsdWdpbi5wcm9jZXNzVGVsZW1ldHJ5KClcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghX3Byb2Nlc3NDaGFpbihpdGVtQ3R4LCBfY2FsbFByb2Nlc3NUZWxlbWV0cnksIFwicHJvY2Vzc1RlbGVtZXRyeVwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBpdGVtOiBlbnYgfSk7IH0sICEoZW52LnN5bmMpKSkge1xyXG4gICAgICAgICAgICAvLyBUaGUgdW5kZXJseWluZyBwbHVnaW4gaXMgZWl0aGVyIG5vdCBkZWZpbmVkLCBub3QgZW5hYmxlZCBvciBkb2VzIG5vdCBoYXZlIGEgcHJvY2Vzc1RlbGVtZXRyeSBpbXBsZW1lbnRhdGlvblxyXG4gICAgICAgICAgICAvLyBzbyB3ZSBzdGlsbCB3YW50IHRoZSBuZXh0IHBsdWdpbiB0byBiZSBleGVjdXRlZC5cclxuICAgICAgICAgICAgaXRlbUN0eFtfRFlOX1BST0NFU1NfTkVYVCAvKiBAbWluOiUyZXByb2Nlc3NOZXh0ICovXShlbnYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF91bmxvYWRQbHVnaW4odW5sb2FkQ3R4LCB1bmxvYWRTdGF0ZSkge1xyXG4gICAgICAgIGZ1bmN0aW9uIF9jYWxsVGVhcmRvd24oKSB7XHJcbiAgICAgICAgICAgIC8vIFNldHRpbmcgZGVmYXVsdCBvZiBoYXNSdW4gYXMgZmFsc2Ugc28gdGhlIHByb3h5UHJvY2Vzc0ZuKCkgaXMgY2FsbGVkIGFzIHRlYXJkb3duKCkgZG9lc24ndCBoYXZlIHRvIGV4aXN0IG9yIGNhbGwgdW5sb2FkTmV4dCgpLlxyXG4gICAgICAgICAgICB2YXIgaGFzUnVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChwbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgIHZhciBwbHVnaW5TdGF0ZSA9IF9nZXRQbHVnaW5TdGF0ZShwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgdmFyIHBsdWdpbkNvcmUgPSBwbHVnaW5bU1RSX0NPUkVdIHx8IHBsdWdpblN0YXRlW1NUUl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL107XHJcbiAgICAgICAgICAgICAgICAvLyBPbmx5IHRlYXJkb3duIHRoZSBwbHVnaW4gaWYgaXQgd2FzIGluaXRpYWxpemVkIGJ5IHRoZSBjdXJyZW50IGNvcmUgKGkuZS4gSXQncyBub3QgYSBzaGFyZWQgcGx1Z2luKVxyXG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbiAmJiAoIXBsdWdpbkNvcmUgfHwgcGx1Z2luQ29yZSA9PT0gdW5sb2FkQ3R4LmNvcmUoKSkgJiYgIXBsdWdpblN0YXRlW19EWU5fVEVBUkRPV04gLyogQG1pbjolMmV0ZWFyZG93biAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcGx1Z2lucyB0aGF0IGRvbid0IGV4dGVuZCBmcm9tIHRoZSBCYXNlVGVsZW1ldHJ5UGx1Z2luXHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luU3RhdGVbU1RSX0NPUkUgLyogQG1pbjolMmVjb3JlICovXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luU3RhdGVbX0RZTl9URUFSRE9XTiAvKiBAbWluOiUyZXRlYXJkb3duICovXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcGx1Z2luU3RhdGVbX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbltfRFlOX1RFQVJET1dOIC8qIEBtaW46JTJldGVhcmRvd24gKi9dICYmIHBsdWdpbltfRFlOX1RFQVJET1dOIC8qIEBtaW46JTJldGVhcmRvd24gKi9dKHVubG9hZEN0eCwgdW5sb2FkU3RhdGUpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBsdWdpbiB0b2xkIHVzIHRoYXQgaXQgd2FzIGdvaW5nIHRvIChvciBoYXMpIGNhbGwgdW5sb2FkQ3R4LnByb2Nlc3NOZXh0KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzUnVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhhc1J1bjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFfcHJvY2Vzc0NoYWluKHVubG9hZEN0eCwgX2NhbGxUZWFyZG93biwgXCJ1bmxvYWRcIiwgZnVuY3Rpb24gKCkgeyB9LCB1bmxvYWRTdGF0ZVtfRFlOX0lTX0FTWU5DIC8qIEBtaW46JTJlaXNBc3luYyAqL10pKSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgY2FsbGVkIGlmIHdlIGhhc1J1biB3YXMgbm90IHRydWVcclxuICAgICAgICAgICAgdW5sb2FkQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKHVubG9hZFN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfdXBkYXRlUGx1Z2luKHVwZGF0ZUN0eCwgdXBkYXRlU3RhdGUpIHtcclxuICAgICAgICBmdW5jdGlvbiBfY2FsbFVwZGF0ZSgpIHtcclxuICAgICAgICAgICAgLy8gU2V0dGluZyBkZWZhdWx0IG9mIGhhc1J1biBhcyBmYWxzZSBzbyB0aGUgcHJveHlQcm9jZXNzRm4oKSBpcyBjYWxsZWQgYXMgdGVhcmRvd24oKSBkb2Vzbid0IGhhdmUgdG8gZXhpc3Qgb3IgY2FsbCB1bmxvYWROZXh0KCkuXHJcbiAgICAgICAgICAgIHZhciBoYXNSdW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHBsdWdpbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBsdWdpblN0YXRlID0gX2dldFBsdWdpblN0YXRlKHBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGx1Z2luQ29yZSA9IHBsdWdpbltTVFJfQ09SRV0gfHwgcGx1Z2luU3RhdGVbU1RSX0NPUkUgLyogQG1pbjolMmVjb3JlICovXTtcclxuICAgICAgICAgICAgICAgIC8vIE9ubHkgdXBkYXRlIHRoZSBwbHVnaW4gaWYgaXQgd2FzIGluaXRpYWxpemVkIGJ5IHRoZSBjdXJyZW50IGNvcmUgKGkuZS4gSXQncyBub3QgYSBzaGFyZWQgcGx1Z2luKVxyXG4gICAgICAgICAgICAgICAgaWYgKHBsdWdpbiAmJiAoIXBsdWdpbkNvcmUgfHwgcGx1Z2luQ29yZSA9PT0gdXBkYXRlQ3R4LmNvcmUoKSkgJiYgIXBsdWdpblN0YXRlW19EWU5fVEVBUkRPV04gLyogQG1pbjolMmV0ZWFyZG93biAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luW19EWU5fVVBEQVRFIC8qIEBtaW46JTJldXBkYXRlICovXSAmJiBwbHVnaW5bX0RZTl9VUERBVEUgLyogQG1pbjolMmV1cGRhdGUgKi9dKHVwZGF0ZUN0eCwgdXBkYXRlU3RhdGUpID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBsdWdpbiB0b2xkIHVzIHRoYXQgaXQgd2FzIGdvaW5nIHRvIChvciBoYXMpIGNhbGwgdW5sb2FkQ3R4LnByb2Nlc3NOZXh0KClcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzUnVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhhc1J1bjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFfcHJvY2Vzc0NoYWluKHVwZGF0ZUN0eCwgX2NhbGxVcGRhdGUsIFwidXBkYXRlXCIsIGZ1bmN0aW9uICgpIHsgfSwgZmFsc2UpKSB7XHJcbiAgICAgICAgICAgIC8vIE9ubHkgY2FsbGVkIGlmIHdlIGhhc1J1biB3YXMgbm90IHRydWVcclxuICAgICAgICAgICAgdXBkYXRlQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKHVwZGF0ZVN0YXRlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqRnJlZXplKHByb3h5Q2hhaW4pO1xyXG59XHJcbi8qKlxyXG4gKiBUaGlzIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCFcclxuICogQGRlcHJlY2F0ZWQgdXNlIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KCkgaW5zdGVhZFxyXG4gKi9cclxudmFyIFByb2Nlc3NUZWxlbWV0cnlDb250ZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IFRlbGVtZXRyeSBJdGVtIGNvbnRleHQgd2l0aCB0aGUgY3VycmVudCBjb25maWcsIGNvcmUgYW5kIHBsdWdpbiBleGVjdXRpb24gY2hhaW5cclxuICAgICAqIEBwYXJhbSBwbHVnaW5zIC0gVGhlIHBsdWdpbiBpbnN0YW5jZXMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGN1cnJlbnQgY29uZmlnXHJcbiAgICAgKiBAcGFyYW0gY29yZSAtIFRoZSBjdXJyZW50IGNvcmUgaW5zdGFuY2VcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQocGx1Z2luQ2hhaW4sIGNvbmZpZywgY29yZSwgc3RhcnRBdCkge1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGNvbnRleHQgPSBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dChwbHVnaW5DaGFpbiwgY29uZmlnLCBjb3JlLCBzdGFydEF0KTtcclxuICAgICAgICAvLyBQcm94eSBhbGwgZnVuY3Rpb25zIG9mIHRoZSBjb250ZXh0IHRvIHRoaXMgb2JqZWN0XHJcbiAgICAgICAgcHJveHlGdW5jdGlvbnMoX3NlbGYsIGNvbnRleHQsIG9iaktleXMoY29udGV4dCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFByb2Nlc3NUZWxlbWV0cnlDb250ZXh0O1xyXG59KCkpO1xyXG5leHBvcnQgeyBQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Qcm9jZXNzVGVsZW1ldHJ5Q29udGV4dC5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcbi8vIFxyXG5pbXBvcnQgeyBfRFlOX0NPTkZJRywgX0RZTl9DUkVBVEVfTkVXLCBfRFlOX0ZMVVNILCBfRFlOX0lERU5USUZJRVIsIF9EWU5fTEVOR1RILCBfRFlOX09OX0NPTVBMRVRFLCBfRFlOX1BST0NFU1NfTkVYVCwgX0RZTl9QVVNIIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBhcnJGb3JFYWNoLCBpc0FycmF5LCBvYmpGcmVlemUsIHRocm93RXJyb3IgfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBTVFJfUFJJT1JJVFkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCwgY3JlYXRlVGVsZW1ldHJ5UHJveHlDaGFpbiB9IGZyb20gXCIuL1Byb2Nlc3NUZWxlbWV0cnlDb250ZXh0XCI7XHJcbmltcG9ydCB7IGluaXRpYWxpemVQbHVnaW5zIH0gZnJvbSBcIi4vVGVsZW1ldHJ5SGVscGVyc1wiO1xyXG5leHBvcnQgdmFyIENoYW5uZWxDb250cm9sbGVyUHJpb3JpdHkgPSA1MDA7XHJcbnZhciBDaGFubmVsVmFsaWRhdGlvbk1lc3NhZ2UgPSBcIkNoYW5uZWwgaGFzIGludmFsaWQgcHJpb3JpdHkgLSBcIjtcclxuZnVuY3Rpb24gX2FkZENoYW5uZWxRdWV1ZShjaGFubmVsUXVldWUsIHF1ZXVlLCBjb3JlKSB7XHJcbiAgICBpZiAocXVldWUgJiYgaXNBcnJheShxdWV1ZSkgJiYgcXVldWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgIHF1ZXVlID0gcXVldWUuc29ydChmdW5jdGlvbiAoYSwgYikge1xyXG4gICAgICAgICAgICByZXR1cm4gYVtTVFJfUFJJT1JJVFkgLyogQG1pbjolMmVwcmlvcml0eSAqL10gLSBiW1NUUl9QUklPUklUWSAvKiBAbWluOiUyZXByaW9yaXR5ICovXTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBhcnJGb3JFYWNoKHF1ZXVlLCBmdW5jdGlvbiAocXVldWVJdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChxdWV1ZUl0ZW1bU1RSX1BSSU9SSVRZIC8qIEBtaW46JTJlcHJpb3JpdHkgKi9dIDwgQ2hhbm5lbENvbnRyb2xsZXJQcmlvcml0eSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihDaGFubmVsVmFsaWRhdGlvbk1lc3NhZ2UgKyBxdWV1ZUl0ZW1bX0RZTl9JREVOVElGSUVSIC8qIEBtaW46JTJlaWRlbnRpZmllciAqL10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY2hhbm5lbFF1ZXVlW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHtcclxuICAgICAgICAgICAgcXVldWU6IG9iakZyZWV6ZShxdWV1ZSksXHJcbiAgICAgICAgICAgIGNoYWluOiBjcmVhdGVUZWxlbWV0cnlQcm94eUNoYWluKHF1ZXVlLCBjb3JlW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSwgY29yZSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbENvbnRyb2xsZXJQbHVnaW4oY2hhbm5lbFF1ZXVlLCBjb3JlKSB7XHJcbiAgICBmdW5jdGlvbiBfZ2V0VGVsQ3R4KCkge1xyXG4gICAgICAgIHJldHVybiBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dChudWxsLCBjb3JlW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSwgY29yZSwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfcHJvY2Vzc0NoYW5uZWxRdWV1ZSh0aGVDaGFubmVscywgaXRlbUN0eCwgcHJvY2Vzc0ZuLCBvbkNvbXBsZXRlKSB7XHJcbiAgICAgICAgdmFyIHdhaXRpbmcgPSB0aGVDaGFubmVscyA/ICh0aGVDaGFubmVsc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gKyAxKSA6IDE7XHJcbiAgICAgICAgZnVuY3Rpb24gX3J1bkNoYWluT25Db21wbGV0ZSgpIHtcclxuICAgICAgICAgICAgd2FpdGluZy0tO1xyXG4gICAgICAgICAgICBpZiAod2FpdGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgb25Db21wbGV0ZSAmJiBvbkNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAod2FpdGluZyA+IDApIHtcclxuICAgICAgICAgICAgYXJyRm9yRWFjaCh0aGVDaGFubmVscywgZnVuY3Rpb24gKGNoYW5uZWxzKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBwYXNzIG9uIHRvIGZpcnN0IGl0ZW0gaW4gcXVldWVcclxuICAgICAgICAgICAgICAgIGlmIChjaGFubmVscyAmJiBjaGFubmVscy5xdWV1ZVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYW5uZWxDaGFpbiA9IGNoYW5uZWxzLmNoYWluO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjaGFpbkN0eCA9IGl0ZW1DdHhbX0RZTl9DUkVBVEVfTkVXIC8qIEBtaW46JTJlY3JlYXRlTmV3ICovXShjaGFubmVsQ2hhaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYWluQ3R4W19EWU5fT05fQ09NUExFVEUgLyogQG1pbjolMmVvbkNvbXBsZXRlICovXShfcnVuQ2hhaW5PbkNvbXBsZXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBDYXVzZSB0aGlzIGNoYWluIHRvIHN0YXJ0IHByb2Nlc3NpbmdcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRm4oY2hhaW5DdHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2FpdGluZy0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3J1bkNoYWluT25Db21wbGV0ZSgpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX2RvVXBkYXRlKHVwZGF0ZUN0eCwgdXBkYXRlU3RhdGUpIHtcclxuICAgICAgICB2YXIgdGhlVXBkYXRlU3RhdGUgPSB1cGRhdGVTdGF0ZSB8fCB7XHJcbiAgICAgICAgICAgIHJlYXNvbjogMCAvKiBUZWxlbWV0cnlVcGRhdGVSZWFzb24uVW5rbm93biAqL1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3Byb2Nlc3NDaGFubmVsUXVldWUoY2hhbm5lbFF1ZXVlLCB1cGRhdGVDdHgsIGZ1bmN0aW9uIChjaGFpbkN0eCkge1xyXG4gICAgICAgICAgICBjaGFpbkN0eFtfRFlOX1BST0NFU1NfTkVYVCAvKiBAbWluOiUyZXByb2Nlc3NOZXh0ICovXSh0aGVVcGRhdGVTdGF0ZSk7XHJcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB1cGRhdGVDdHhbX0RZTl9QUk9DRVNTX05FWFQgLyogQG1pbjolMmVwcm9jZXNzTmV4dCAqL10odGhlVXBkYXRlU3RhdGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX2RvVGVhcmRvd24odW5sb2FkQ3R4LCB1bmxvYWRTdGF0ZSkge1xyXG4gICAgICAgIHZhciB0aGVVbmxvYWRTdGF0ZSA9IHVubG9hZFN0YXRlIHx8IHtcclxuICAgICAgICAgICAgcmVhc29uOiAwIC8qIFRlbGVtZXRyeVVubG9hZFJlYXNvbi5NYW51YWxUZWFyZG93biAqLyxcclxuICAgICAgICAgICAgaXNBc3luYzogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIF9wcm9jZXNzQ2hhbm5lbFF1ZXVlKGNoYW5uZWxRdWV1ZSwgdW5sb2FkQ3R4LCBmdW5jdGlvbiAoY2hhaW5DdHgpIHtcclxuICAgICAgICAgICAgY2hhaW5DdHhbX0RZTl9QUk9DRVNTX05FWFQgLyogQG1pbjolMmVwcm9jZXNzTmV4dCAqL10odGhlVW5sb2FkU3RhdGUpO1xyXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdW5sb2FkQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKHRoZVVubG9hZFN0YXRlKTtcclxuICAgICAgICAgICAgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX2dldENoYW5uZWwocGx1Z2luSWRlbnRpZmllcikge1xyXG4gICAgICAgIHZhciB0aGVQbHVnaW4gPSBudWxsO1xyXG4gICAgICAgIGlmIChjaGFubmVsUXVldWUgJiYgY2hhbm5lbFF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAgICAgYXJyRm9yRWFjaChjaGFubmVsUXVldWUsIGZ1bmN0aW9uIChjaGFubmVscykge1xyXG4gICAgICAgICAgICAgICAgLy8gcGFzcyBvbiB0byBmaXJzdCBpdGVtIGluIHF1ZXVlXHJcbiAgICAgICAgICAgICAgICBpZiAoY2hhbm5lbHMgJiYgY2hhbm5lbHMucXVldWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goY2hhbm5lbHMucXVldWUsIGZ1bmN0aW9uIChleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dFtfRFlOX0lERU5USUZJRVIgLyogQG1pbjolMmVpZGVudGlmaWVyICovXSA9PT0gcGx1Z2luSWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlUGx1Z2luID0gZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2F1c2UgYXJyRm9yRWFjaCB0byBzdG9wIGl0ZXJhdGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoZVBsdWdpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXVzZSBhcnJGb3JFYWNoIHRvIHN0b3AgaXRlcmF0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhlUGx1Z2luO1xyXG4gICAgfVxyXG4gICAgdmFyIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHZhciBjaGFubmVsQ29udHJvbGxlciA9IHtcclxuICAgICAgICBpZGVudGlmaWVyOiBcIkNoYW5uZWxDb250cm9sbGVyUGx1Z2luXCIsXHJcbiAgICAgICAgcHJpb3JpdHk6IENoYW5uZWxDb250cm9sbGVyUHJpb3JpdHksXHJcbiAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICAgICAgaXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGFyckZvckVhY2goY2hhbm5lbFF1ZXVlLCBmdW5jdGlvbiAoY2hhbm5lbHMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjaGFubmVscyAmJiBjaGFubmVscy5xdWV1ZVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVBsdWdpbnMoY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQoY2hhbm5lbHMuY2hhaW4sIGNvbmZpZywgY29yZSksIGV4dGVuc2lvbnMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGlzSW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGlzSW5pdGlhbGl6ZWQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcm9jZXNzVGVsZW1ldHJ5OiBmdW5jdGlvbiAoaXRlbSwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICBfcHJvY2Vzc0NoYW5uZWxRdWV1ZShjaGFubmVsUXVldWUsIGl0ZW1DdHggfHwgX2dldFRlbEN0eCgpLCBmdW5jdGlvbiAoY2hhaW5DdHgpIHtcclxuICAgICAgICAgICAgICAgIGNoYWluQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKGl0ZW0pO1xyXG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVwZGF0ZTogX2RvVXBkYXRlLFxyXG4gICAgICAgIHBhdXNlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIF9wcm9jZXNzQ2hhbm5lbFF1ZXVlKGNoYW5uZWxRdWV1ZSwgX2dldFRlbEN0eCgpLCBmdW5jdGlvbiAoY2hhaW5DdHgpIHtcclxuICAgICAgICAgICAgICAgIGNoYWluQ3R4Lml0ZXJhdGUoZnVuY3Rpb24gKHBsdWdpbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbi5wYXVzZSAmJiBwbHVnaW4ucGF1c2UoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCBudWxsKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3VtZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBfcHJvY2Vzc0NoYW5uZWxRdWV1ZShjaGFubmVsUXVldWUsIF9nZXRUZWxDdHgoKSwgZnVuY3Rpb24gKGNoYWluQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICBjaGFpbkN0eC5pdGVyYXRlKGZ1bmN0aW9uIChwbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBwbHVnaW4ucmVzdW1lICYmIHBsdWdpbi5yZXN1bWUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCBudWxsKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRlYXJkb3duOiBfZG9UZWFyZG93bixcclxuICAgICAgICBnZXRDaGFubmVsOiBfZ2V0Q2hhbm5lbCxcclxuICAgICAgICBmbHVzaDogZnVuY3Rpb24gKGlzQXN5bmMsIGNhbGxCYWNrLCBzZW5kUmVhc29uLCBjYlRpbWVvdXQpIHtcclxuICAgICAgICAgICAgLy8gU2V0dGluZyB3YWl0aW5nIHRvIG9uZSBzbyB0aGF0IHdlIGRvbid0IGNhbGwgdGhlIGNhbGxCYWNrIHVudGlsIHdlIGZpbmlzaCBpdGVyYXRpbmdcclxuICAgICAgICAgICAgdmFyIHdhaXRpbmcgPSAxO1xyXG4gICAgICAgICAgICB2YXIgZG9uZUl0ZXJhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YXIgY2JUaW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgIGNiVGltZW91dCA9IGNiVGltZW91dCB8fCA1MDAwO1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBkb0NhbGxiYWNrKCkge1xyXG4gICAgICAgICAgICAgICAgd2FpdGluZy0tO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvbmVJdGVyYXRpbmcgJiYgd2FpdGluZyA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYlRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjYlRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2JUaW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKGRvbmVJdGVyYXRpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfcHJvY2Vzc0NoYW5uZWxRdWV1ZShjaGFubmVsUXVldWUsIF9nZXRUZWxDdHgoKSwgZnVuY3Rpb24gKGNoYWluQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICBjaGFpbkN0eC5pdGVyYXRlKGZ1bmN0aW9uIChwbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luW19EWU5fRkxVU0ggLyogQG1pbjolMmVmbHVzaCAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGluZysrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlZF8xID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBhbGwgY2hhbm5lbHMgd2lsbCBjYWxsIHRoaXMgY2FsbGJhY2sgZm9yIGV2ZXJ5IHNjZW5hcmlvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGx1Z2luW19EWU5fRkxVU0ggLyogQG1pbjolMmVmbHVzaCAqL10oaXNBc3luYywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZF8xID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2VuZFJlYXNvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZF8xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW55IGNoYW5uZWwgZG9lc24ndCByZXR1cm4gdHJ1ZSBhbmQgaXQgZGlkbid0IGNhbGwgdGhlIGNhbGxiYWNrLCB0aGVuIHdlIHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgY2FsbGJhY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZCwgc28gdXNlIGEgdGltZW91dCB0byBhbGxvdyB0aGUgY2hhbm5lbChzKSBzb21lIHRpbWUgdG8gXCJmaW5pc2hcIiBiZWZvcmUgdHJpZ2dlcmluZyBhbnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb2xsb3d1cCBmdW5jdGlvbiAoc3VjaCBhcyB1bmxvYWRpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmMgJiYgY2JUaW1lciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiVGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9DYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjYlRpbWVvdXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9DYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBkb25lSXRlcmF0aW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX3NldFF1ZXVlOiBmdW5jdGlvbiAocXVldWUpIHtcclxuICAgICAgICAgICAgY2hhbm5lbFF1ZXVlID0gcXVldWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGFubmVsQ29udHJvbGxlcjtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbFF1ZXVlcyhjaGFubmVscywgZXh0ZW5zaW9ucywgY29yZSkge1xyXG4gICAgdmFyIGNoYW5uZWxRdWV1ZSA9IFtdO1xyXG4gICAgaWYgKGNoYW5uZWxzKSB7XHJcbiAgICAgICAgLy8gQWRkIGFuZCBzb3J0IHRoZSBjb25maWd1cmF0aW9uIGNoYW5uZWwgcXVldWVzXHJcbiAgICAgICAgYXJyRm9yRWFjaChjaGFubmVscywgZnVuY3Rpb24gKHF1ZXVlKSB7IHJldHVybiBfYWRkQ2hhbm5lbFF1ZXVlKGNoYW5uZWxRdWV1ZSwgcXVldWUsIGNvcmUpOyB9KTtcclxuICAgIH1cclxuICAgIGlmIChleHRlbnNpb25zKSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGNoYW5uZWwgcXVldWUgZm9yIGFueSBleHRlbnNpb25zIHdpdGggYSBwcmlvcml0eSA+IHRoZSBDaGFubmVsQ29udHJvbGxlclByaW9yaXR5XHJcbiAgICAgICAgdmFyIGV4dGVuc2lvblF1ZXVlXzEgPSBbXTtcclxuICAgICAgICBhcnJGb3JFYWNoKGV4dGVuc2lvbnMsIGZ1bmN0aW9uIChwbHVnaW4pIHtcclxuICAgICAgICAgICAgaWYgKHBsdWdpbltTVFJfUFJJT1JJVFkgLyogQG1pbjolMmVwcmlvcml0eSAqL10gPiBDaGFubmVsQ29udHJvbGxlclByaW9yaXR5KSB7XHJcbiAgICAgICAgICAgICAgICBleHRlbnNpb25RdWV1ZV8xW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHBsdWdpbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBfYWRkQ2hhbm5lbFF1ZXVlKGNoYW5uZWxRdWV1ZSwgZXh0ZW5zaW9uUXVldWVfMSwgY29yZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhbm5lbFF1ZXVlO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNoYW5uZWxDb250cm9sbGVyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IF9EWU5fRElBR19MT0csIF9EWU5fUFVTSCB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwgfSBmcm9tIFwiLi9EaWFnbm9zdGljTG9nZ2VyXCI7XHJcbmltcG9ydCB7IGR1bXBPYmogfSBmcm9tIFwiLi9FbnZVdGlsc1wiO1xyXG5pbXBvcnQgeyBhcnJGb3JFYWNoIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVubG9hZEhhbmRsZXJDb250YWluZXIoKSB7XHJcbiAgICB2YXIgaGFuZGxlcnMgPSBbXTtcclxuICAgIGZ1bmN0aW9uIF9hZGRIYW5kbGVyKGhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoaGFuZGxlcikge1xyXG4gICAgICAgICAgICBoYW5kbGVyc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShoYW5kbGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBfcnVuSGFuZGxlcnModW5sb2FkQ3R4LCB1bmxvYWRTdGF0ZSkge1xyXG4gICAgICAgIGFyckZvckVhY2goaGFuZGxlcnMsIGZ1bmN0aW9uIChoYW5kbGVyKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyKHVubG9hZEN0eCwgdW5sb2FkU3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCh1bmxvYWRDdHhbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA3MyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlBsdWdpbkV4Y2VwdGlvbiAqLywgXCJVbmV4cGVjdGVkIGVycm9yIGNhbGxpbmcgdW5sb2FkIGhhbmRsZXIgLSBcIiArIGR1bXBPYmooZSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaGFuZGxlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgYWRkOiBfYWRkSGFuZGxlcixcclxuICAgICAgICBydW46IF9ydW5IYW5kbGVyc1xyXG4gICAgfTtcclxufVxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1VbmxvYWRIYW5kbGVyQ29udGFpbmVyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0NSRUFURV9ORVcsIF9EWU5fRElBR19MT0csIF9EWU5fR0VUX05FWFQsIF9EWU5fR0VUX1BST0NFU1NfVEVMX0NPTlQwLCBfRFlOX0lOSVRJQUxJWkUsIF9EWU5fSVNfQVNZTkMsIF9EWU5fSVNfSU5JVElBTElaRUQsIF9EWU5fUFJPQ0VTU19ORVhULCBfRFlOX1BVU0gsIF9EWU5fU0VUX05FWFRfUExVR0lOLCBfRFlOX1RFQVJET1dOLCBfRFlOX1VQREFURSwgX0RZTl9fRE9fVEVBUkRPV04gfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGFyckZvckVhY2gsIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzTnVsbE9yVW5kZWZpbmVkLCBwcm94eUZ1bmN0aW9uQXMsIHNldFZhbHVlIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0NPUkUsIFNUUl9FWFRFTlNJT05fQ09ORklHLCBTVFJfUFJPQ0VTU19URUxFTUVUUlkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCwgY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQsIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVcGRhdGVDb250ZXh0IH0gZnJvbSBcIi4vUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHRcIjtcclxuaW1wb3J0IHsgY3JlYXRlVW5sb2FkSGFuZGxlckNvbnRhaW5lciB9IGZyb20gXCIuL1VubG9hZEhhbmRsZXJDb250YWluZXJcIjtcclxudmFyIHN0ckdldFBsdWdpbiA9IFwiZ2V0UGx1Z2luXCI7XHJcbi8qKlxyXG4gKiBCYXNlVGVsZW1ldHJ5UGx1Z2luIHByb3ZpZGVzIGEgYmFzaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlIElUZWxlbWV0cnlQbHVnaW4gaW50ZXJmYWNlIHNvIHRoYXQgcGx1Z2luc1xyXG4gKiBjYW4gYXZvaWQgaW1wbGVtZW50YXRpb24gdGhlIHNhbWUgc2V0IG9mIGJvaWxlciBwbGF0ZSBjb2RlIGFzIHdlbGwgYXMgcHJvdmlkZSBhIGJhc2VcclxuICogaW1wbGVtZW50YXRpb24gc28gdGhhdCBuZXcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGFkZGVkIHdpdGhvdXQgYnJlYWtpbmcgYWxsIHBsdWdpbnMuXHJcbiAqL1xyXG52YXIgQmFzZVRlbGVtZXRyeVBsdWdpbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJhc2VUZWxlbWV0cnlQbHVnaW4oKSB7XHJcbiAgICAgICAgdmFyIF9zZWxmID0gdGhpczsgLy8gU2V0dGluZyBfc2VsZiBoZXJlIGFzIGl0J3MgdXNlZCBvdXRzaWRlIG9mIHRoZSBkeW5hbWljUHJvdG8gYXMgd2VsbFxyXG4gICAgICAgIC8vIE5PVEUhOiBET04nVCBzZXQgZGVmYXVsdCB2YWx1ZXMgaGVyZSwgaW5zdGVhZCBzZXQgdGhlbSBpbiB0aGUgX2luaXREZWZhdWx0cygpIGZ1bmN0aW9uIGFzIGl0IGlzIGFsc28gY2FsbGVkIGR1cmluZyB0ZWFyZG93bigpXHJcbiAgICAgICAgdmFyIF9pc2luaXRpYWxpemVkO1xyXG4gICAgICAgIHZhciBfcm9vdEN0eDsgLy8gVXNlZCBhcyB0aGUgcm9vdCBjb250ZXh0LCBob2xkaW5nIHRoZSBjdXJyZW50IGNvbmZpZyBhbmQgaW5pdGlhbGl6ZWQgY29yZVxyXG4gICAgICAgIHZhciBfbmV4dFBsdWdpbjsgLy8gVXNlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVyZSBwbHVnaW5zIGRvbid0IGNhbGwgdGhlIG1haW4gcGlwZWxpbmVcclxuICAgICAgICB2YXIgX3VubG9hZEhhbmRsZXJDb250YWluZXI7XHJcbiAgICAgICAgdmFyIF9ob29rcztcclxuICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKEJhc2VUZWxlbWV0cnlQbHVnaW4sIF9zZWxmLCBmdW5jdGlvbiAoX3NlbGYpIHtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9JTklUSUFMSVpFIC8qIEBtaW46JTJlaW5pdGlhbGl6ZSAqL10gPSBmdW5jdGlvbiAoY29uZmlnLCBjb3JlLCBleHRlbnNpb25zLCBwbHVnaW5DaGFpbikge1xyXG4gICAgICAgICAgICAgICAgX3NldERlZmF1bHRzKGNvbmZpZywgY29yZSwgcGx1Z2luQ2hhaW4pO1xyXG4gICAgICAgICAgICAgICAgX2lzaW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1RFQVJET1dOIC8qIEBtaW46JTJldGVhcmRvd24gKi9dID0gZnVuY3Rpb24gKHVubG9hZEN0eCwgdW5sb2FkU3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgcGx1Z2luIGhhcyBhbHJlYWR5IGJlZW4gdG9ybiBkb3duIChub3Qgb3BlcmF0aW9uYWwpIG9yIGlzIG5vdCBpbml0aWFsaXplZCAoY29yZSBpcyBub3Qgc2V0KVxyXG4gICAgICAgICAgICAgICAgLy8gb3IgdGhlIGNvcmUgYmVpbmcgdXNlZCBmb3IgdW5sb2FkIHdhcyBub3QgdGhlIHNhbWUgY29yZSB1c2VkIGZvciBpbml0aWFsaXphdGlvbi5cclxuICAgICAgICAgICAgICAgIHZhciBjb3JlID0gX3NlbGZbU1RSX0NPUkUgLyogQG1pbjolMmVjb3JlICovXTtcclxuICAgICAgICAgICAgICAgIGlmICghY29yZSB8fCAodW5sb2FkQ3R4ICYmIGNvcmUgIT09IHVubG9hZEN0eFtTVFJfQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRG8gTm90aGluZyBhcyBlaXRoZXIgdGhlIHBsdWdpbiBpcyBub3QgaW5pdGlhbGl6ZWQgb3Igd2FzIG5vdCBpbml0aWFsaXplZCBieSB0aGUgY3VycmVudCBjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHZhciB1bmxvYWREb25lID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlVW5sb2FkQ3R4ID0gdW5sb2FkQ3R4IHx8IGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVbmxvYWRDb250ZXh0KG51bGwsIGNvcmUsIF9uZXh0UGx1Z2luICYmIF9uZXh0UGx1Z2luW3N0ckdldFBsdWdpbl0gPyBfbmV4dFBsdWdpbltzdHJHZXRQbHVnaW5dKCkgOiBfbmV4dFBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlVW5sb2FkU3RhdGUgPSB1bmxvYWRTdGF0ZSB8fCAoX2EgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogMCAvKiBUZWxlbWV0cnlVbmxvYWRSZWFzb24uTWFudWFsVGVhcmRvd24gKi9cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF9hW19EWU5fSVNfQVNZTkMgLyogQG1pbjppc0FzeW5jICovXSA9IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hKTtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF91bmxvYWRDYWxsYmFjaygpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXVubG9hZERvbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2FkRG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF91bmxvYWRIYW5kbGVyQ29udGFpbmVyLnJ1bih0aGVVbmxvYWRDdHgsIHVubG9hZFN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9sZEhvb2tzID0gX2hvb2tzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaG9va3MgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFsbCBpbnN0cnVtZW50YXRpb24gaG9va3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChvbGRIb29rcywgZnVuY3Rpb24gKGZuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi5ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlVW5sb2FkQ3R4W19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKHRoZVVubG9hZFN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFfc2VsZltfRFlOX19ET19URUFSRE9XTiAvKiBAbWluOiUyZV9kb1RlYXJkb3duICovXSB8fCBfc2VsZltfRFlOX19ET19URUFSRE9XTiAvKiBAbWluOiUyZV9kb1RlYXJkb3duICovXSh0aGVVbmxvYWRDdHgsIHRoZVVubG9hZFN0YXRlLCBfdW5sb2FkQ2FsbGJhY2spICE9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3VubG9hZENhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUZWxsIHRoZSBjYWxsZXIgdGhhdCB3ZSB3aWxsIGJlIGNhbGxpbmcgcHJvY2Vzc05leHQoKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1VQREFURSAvKiBAbWluOiUyZXVwZGF0ZSAqL10gPSBmdW5jdGlvbiAodXBkYXRlQ3R4LCB1cGRhdGVTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBwbHVnaW4gaGFzIGFscmVhZHkgYmVlbiB0b3JuIGRvd24gKG5vdCBvcGVyYXRpb25hbCkgb3IgaXMgbm90IGluaXRpYWxpemVkIChjb3JlIGlzIG5vdCBzZXQpXHJcbiAgICAgICAgICAgICAgICAvLyBvciB0aGUgY29yZSBiZWluZyB1c2VkIGZvciB1bmxvYWQgd2FzIG5vdCB0aGUgc2FtZSBjb3JlIHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLlxyXG4gICAgICAgICAgICAgICAgdmFyIGNvcmUgPSBfc2VsZltTVFJfQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb3JlIHx8ICh1cGRhdGVDdHggJiYgY29yZSAhPT0gdXBkYXRlQ3R4W1NUUl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10oKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBEbyBOb3RoaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIHZhciB1cGRhdGVEb25lID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlVXBkYXRlQ3R4ID0gdXBkYXRlQ3R4IHx8IGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVcGRhdGVDb250ZXh0KG51bGwsIGNvcmUsIF9uZXh0UGx1Z2luICYmIF9uZXh0UGx1Z2luW3N0ckdldFBsdWdpbl0gPyBfbmV4dFBsdWdpbltzdHJHZXRQbHVnaW5dKCkgOiBfbmV4dFBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlVXBkYXRlU3RhdGUgPSB1cGRhdGVTdGF0ZSB8fCB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAwIC8qIFRlbGVtZXRyeVVwZGF0ZVJlYXNvbi5Vbmtub3duICovXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZUNhbGxiYWNrKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdXBkYXRlRG9uZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEb25lID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NldERlZmF1bHRzKHRoZVVwZGF0ZUN0eC5nZXRDZmcoKSwgdGhlVXBkYXRlQ3R4LmNvcmUoKSwgdGhlVXBkYXRlQ3R4W19EWU5fR0VUX05FWFQgLyogQG1pbjolMmVnZXROZXh0ICovXSgpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9zZWxmLl9kb1VwZGF0ZSB8fCBfc2VsZi5fZG9VcGRhdGUodGhlVXBkYXRlQ3R4LCB0aGVVcGRhdGVTdGF0ZSwgX3VwZGF0ZUNhbGxiYWNrKSAhPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF91cGRhdGVDYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLl9hZGRIb29rID0gZnVuY3Rpb24gKGhvb2tzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaG9va3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShob29rcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2hvb2tzID0gX2hvb2tzLmNvbmNhdChob29rcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfaG9va3NbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oaG9va3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcHJveHlGdW5jdGlvbkFzKF9zZWxmLCBcIl9hZGRVbmxvYWRDYlwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBfdW5sb2FkSGFuZGxlckNvbnRhaW5lcjsgfSwgXCJhZGRcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gVGhlc2UgYXJlIGFkZGVkIGFmdGVyIHRoZSBkeW5hbWljUHJvdG8gc28gdGhhdCBhcmUgbm90IG1vdmVkIHRvIHRoZSBwcm90b3R5cGVcclxuICAgICAgICBfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10gPSBmdW5jdGlvbiAoaXRlbUN0eCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2dldFRlbEN0eChpdGVtQ3R4KVtfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIF9zZWxmW19EWU5fSVNfSU5JVElBTElaRUQgLyogQG1pbjolMmVpc0luaXRpYWxpemVkICovXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIF9pc2luaXRpYWxpemVkO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGYuc2V0SW5pdGlhbGl6ZWQgPSBmdW5jdGlvbiAoaXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBfaXNpbml0aWFsaXplZCA9IGlzSW5pdGlhbGl6ZWQ7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBfc2VsZi5nZXROZXh0UGx1Z2luID0gKCkgPT4gRE8gTk9UIElNUExFTUVOVFxyXG4gICAgICAgIC8vIFN1Yi1jbGFzc2VzIG9mIHRoaXMgYmFzZSBjbGFzcyAqc2hvdWxkKiBub3QgYmUgcmVseWluZyBvbiB0aGlzIHZhbHVlIGFuZCBpbnN0ZWFkXHJcbiAgICAgICAgLy8gc2hvdWxkIHVzZSBwcm9jZXNzTmV4dCgpIGZ1bmN0aW9uLiBJZiB5b3UgcmVxdWlyZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiB1c2UgdGhlXHJcbiAgICAgICAgLy8gSVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0LmdldE5leHQoKS5nZXRQbHVnaW4oKSB3aGlsZSBpbiB0aGUgcGlwZWxpbmUsIE5vdGUgZ2V0TmV4dCgpIG1heSByZXR1cm4gbnVsbC5cclxuICAgICAgICBfc2VsZltfRFlOX1NFVF9ORVhUX1BMVUdJTiAvKiBAbWluOiUyZXNldE5leHRQbHVnaW4gKi9dID0gZnVuY3Rpb24gKG5leHQpIHtcclxuICAgICAgICAgICAgX25leHRQbHVnaW4gPSBuZXh0O1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGZbX0RZTl9QUk9DRVNTX05FWFQgLyogQG1pbjolMmVwcm9jZXNzTmV4dCAqL10gPSBmdW5jdGlvbiAoZW52LCBpdGVtQ3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBOb3JtYWwgY29yZSBleGVjdXRpb24gc2VxdWVuY2VcclxuICAgICAgICAgICAgICAgIGl0ZW1DdHhbX0RZTl9QUk9DRVNTX05FWFQgLyogQG1pbjolMmVwcm9jZXNzTmV4dCAqL10oZW52KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChfbmV4dFBsdWdpbiAmJiBpc0Z1bmN0aW9uKF9uZXh0UGx1Z2luW1NUUl9QUk9DRVNTX1RFTEVNRVRSWSAvKiBAbWluOiUyZXByb2Nlc3NUZWxlbWV0cnkgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gTG9va3MgbGlrZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9yIG91dCBvZiBiYW5kIHByb2Nlc3NpbmcuIEFuZCBhcyBpdCBsb29rc1xyXG4gICAgICAgICAgICAgICAgLy8gbGlrZSBhIElUZWxlbWV0cnlQbHVnaW4gb3IgSVRlbGVtZXRyeVBsdWdpbkNoYWluLCBqdXN0IGNhbGwgcHJvY2Vzc1RlbGVtZXRyeVxyXG4gICAgICAgICAgICAgICAgX25leHRQbHVnaW5bU1RSX1BST0NFU1NfVEVMRU1FVFJZIC8qIEBtaW46JTJlcHJvY2Vzc1RlbGVtZXRyeSAqL10oZW52LCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGYuX2dldFRlbEN0eCA9IF9nZXRUZWxDdHg7XHJcbiAgICAgICAgZnVuY3Rpb24gX2dldFRlbEN0eChjdXJyZW50Q3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50Q3R4ID09PSB2b2lkIDApIHsgY3VycmVudEN0eCA9IG51bGw7IH1cclxuICAgICAgICAgICAgdmFyIGl0ZW1DdHggPSBjdXJyZW50Q3R4O1xyXG4gICAgICAgICAgICBpZiAoIWl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciByb290Q3R4ID0gX3Jvb3RDdHggfHwgY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQobnVsbCwge30sIF9zZWxmW1NUUl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBwcmVmZXItY29uZGl0aW9uYWwtZXhwcmVzc2lvblxyXG4gICAgICAgICAgICAgICAgaWYgKF9uZXh0UGx1Z2luICYmIF9uZXh0UGx1Z2luW3N0ckdldFBsdWdpbl0pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBMb29rcyBsaWtlIGEgY2hhaW4gb2JqZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbUN0eCA9IHJvb3RDdHhbX0RZTl9DUkVBVEVfTkVXIC8qIEBtaW46JTJlY3JlYXRlTmV3ICovXShudWxsLCBfbmV4dFBsdWdpbltzdHJHZXRQbHVnaW5dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1DdHggPSByb290Q3R4W19EWU5fQ1JFQVRFX05FVyAvKiBAbWluOiUyZWNyZWF0ZU5ldyAqL10obnVsbCwgX25leHRQbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtQ3R4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmdW5jdGlvbiBfc2V0RGVmYXVsdHMoY29uZmlnLCBjb3JlLCBwbHVnaW5DaGFpbikge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGV4dGVuc2lvbkNvbmZpZyBleGlzdHNcclxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGNvbmZpZywgU1RSX0VYVEVOU0lPTl9DT05GSUcsIFtdLCBudWxsLCBpc051bGxPclVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFwbHVnaW5DaGFpbiAmJiBjb3JlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpcnN0IHBsdWdpbiBmcm9tIHRoZSBjb3JlXHJcbiAgICAgICAgICAgICAgICBwbHVnaW5DaGFpbiA9IGNvcmVbX0RZTl9HRVRfUFJPQ0VTU19URUxfQ09OVDAgLyogQG1pbjolMmVnZXRQcm9jZXNzVGVsQ29udGV4dCAqL10oKVtfRFlOX0dFVF9ORVhUIC8qIEBtaW46JTJlZ2V0TmV4dCAqL10oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgbmV4dFBsdWdpbiA9IF9uZXh0UGx1Z2luO1xyXG4gICAgICAgICAgICBpZiAoX25leHRQbHVnaW4gJiYgX25leHRQbHVnaW5bc3RyR2V0UGx1Z2luXSkge1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgaXQgbG9va3MgbGlrZSBhIHByb3h5L2NoYWluIHRoZW4gZ2V0IHRoZSBwbHVnaW5cclxuICAgICAgICAgICAgICAgIG5leHRQbHVnaW4gPSBfbmV4dFBsdWdpbltzdHJHZXRQbHVnaW5dKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gU3VwcG9ydCBsZWdhY3kgcGx1Z2lucyB3aGVyZSBjb3JlIHdhcyBkZWZpbmVkIGFzIGEgcHJvcGVydHlcclxuICAgICAgICAgICAgX3NlbGZbU1RSX0NPUkUgLyogQG1pbjolMmVjb3JlICovXSA9IGNvcmU7XHJcbiAgICAgICAgICAgIF9yb290Q3R4ID0gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQocGx1Z2luQ2hhaW4sIGNvbmZpZywgY29yZSwgbmV4dFBsdWdpbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZ1bmN0aW9uIF9pbml0RGVmYXVsdHMoKSB7XHJcbiAgICAgICAgICAgIF9pc2luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIF9zZWxmW1NUUl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10gPSBudWxsO1xyXG4gICAgICAgICAgICBfcm9vdEN0eCA9IG51bGw7XHJcbiAgICAgICAgICAgIF9uZXh0UGx1Z2luID0gbnVsbDtcclxuICAgICAgICAgICAgX2hvb2tzID0gW107XHJcbiAgICAgICAgICAgIF91bmxvYWRIYW5kbGVyQ29udGFpbmVyID0gY3JlYXRlVW5sb2FkSGFuZGxlckNvbnRhaW5lcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlVGVsZW1ldHJ5UGx1Z2luLnByb3RvdHlwZS5pbml0aWFsaXplLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VUZWxlbWV0cnlQbHVnaW4ucHJvdG90eXBlLnRlYXJkb3duLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VUZWxlbWV0cnlQbHVnaW4ucHJvdG90eXBlLnVwZGF0ZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlVGVsZW1ldHJ5UGx1Z2luLnByb3RvdHlwZS5fYWRkVW5sb2FkQ2IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZVRlbGVtZXRyeVBsdWdpbi5wcm90b3R5cGUuX2FkZEhvb2suXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBCYXNlVGVsZW1ldHJ5UGx1Z2luLl9faWVEeW49MTtcblxuICAgIHJldHVybiBCYXNlVGVsZW1ldHJ5UGx1Z2luO1xyXG59KCkpO1xyXG5leHBvcnQgeyBCYXNlVGVsZW1ldHJ5UGx1Z2luIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VUZWxlbWV0cnlQbHVnaW4uanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29yZSwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cbi8vIFxyXG4vLyBcclxuaW1wb3J0IHsgX19leHRlbmRzRm4gYXMgX19leHRlbmRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0FQUExZLCBfRFlOX0RJQUdfTE9HLCBfRFlOX0xFTkdUSCwgX0RZTl9QUk9DRVNTX05FWFQsIF9EWU5fUFVTSCwgX0RZTl9TUExJQ0UsIF9EWU5fX0RPX1RFQVJET1dOIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBCYXNlVGVsZW1ldHJ5UGx1Z2luIH0gZnJvbSBcIi4vQmFzZVRlbGVtZXRyeVBsdWdpblwiO1xyXG5pbXBvcnQgeyBfdGhyb3dJbnRlcm5hbCB9IGZyb20gXCIuL0RpYWdub3N0aWNMb2dnZXJcIjtcclxuaW1wb3J0IHsgZHVtcE9iaiB9IGZyb20gXCIuL0VudlV0aWxzXCI7XHJcbmltcG9ydCB7IGFyckZvckVhY2gsIGdldEV4Y2VwdGlvbk5hbWUgfSBmcm9tIFwiLi9IZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBTVFJfUFJPQ0VTU19URUxFTUVUUlkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG52YXIgVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4sIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBUZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbigpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmlkZW50aWZpZXIgPSBcIlRlbGVtZXRyeUluaXRpYWxpemVyUGx1Z2luXCI7XHJcbiAgICAgICAgX3RoaXMucHJpb3JpdHkgPSAxOTk7XHJcbiAgICAgICAgLy8gTk9URSE6IERPTidUIHNldCBkZWZhdWx0IHZhbHVlcyBoZXJlLCBpbnN0ZWFkIHNldCB0aGVtIGluIHRoZSBfaW5pdERlZmF1bHRzKCkgZnVuY3Rpb24gYXMgaXQgaXMgYWxzbyBjYWxsZWQgZHVyaW5nIHRlYXJkb3duKClcclxuICAgICAgICB2YXIgX2lkO1xyXG4gICAgICAgIHZhciBfaW5pdGlhbGl6ZXJzO1xyXG4gICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4sIF90aGlzLCBmdW5jdGlvbiAoX3NlbGYsIF9iYXNlKSB7XHJcbiAgICAgICAgICAgIF9zZWxmLmFkZFRlbGVtZXRyeUluaXRpYWxpemVyID0gZnVuY3Rpb24gKHRlbGVtZXRyeUluaXRpYWxpemVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlSW5pdGlhbGl6ZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IF9pZCsrLFxyXG4gICAgICAgICAgICAgICAgICAgIGZuOiB0ZWxlbWV0cnlJbml0aWFsaXplclxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIF9pbml0aWFsaXplcnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10odGhlSW5pdGlhbGl6ZXIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goX2luaXRpYWxpemVycywgZnVuY3Rpb24gKGluaXRpYWxpemVyLCBpZHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsaXplci5pZCA9PT0gdGhlSW5pdGlhbGl6ZXIuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5pdGlhbGl6ZXJzW19EWU5fU1BMSUNFIC8qIEBtaW46JTJlc3BsaWNlICovXShpZHgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltTVFJfUFJPQ0VTU19URUxFTUVUUlkgLyogQG1pbjolMmVwcm9jZXNzVGVsZW1ldHJ5ICovXSA9IGZ1bmN0aW9uIChpdGVtLCBpdGVtQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZG9Ob3RTZW5kSXRlbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeUluaXRpYWxpemVyc0NvdW50ID0gX2luaXRpYWxpemVyc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbGVtZXRyeUluaXRpYWxpemVyc0NvdW50OyArK2kpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGVsZW1ldHJ5SW5pdGlhbGl6ZXIgPSBfaW5pdGlhbGl6ZXJzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZWxlbWV0cnlJbml0aWFsaXplcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbGVtZXRyeUluaXRpYWxpemVyLmZuW19EWU5fQVBQTFkgLyogQG1pbjolMmVhcHBseSAqL10obnVsbCwgW2l0ZW1dKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb05vdFNlbmRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9nIGVycm9yIGJ1dCBkb250IHN0b3AgZXhlY3V0aW5nIHJlc3Qgb2YgdGhlIHRlbGVtZXRyeSBpbml0aWFsaXplcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvTm90U2VuZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoaXRlbUN0eFtfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA2NCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRlbGVtZXRyeUluaXRpYWxpemVyRmFpbGVkICovLCBcIk9uZSBvZiB0ZWxlbWV0cnkgaW5pdGlhbGl6ZXJzIGZhaWxlZCwgdGVsZW1ldHJ5IGl0ZW0gd2lsbCBub3QgYmUgc2VudDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghZG9Ob3RTZW5kSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKGl0ZW0sIGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX19ET19URUFSRE9XTiAvKiBAbWluOiUyZV9kb1RlYXJkb3duICovXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBmdW5jdGlvbiBfaW5pdERlZmF1bHRzKCkge1xyXG4gICAgICAgICAgICBfaWQgPSAwO1xyXG4gICAgICAgICAgICBfaW5pdGlhbGl6ZXJzID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBUZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbi5wcm90b3R5cGUuYWRkVGVsZW1ldHJ5SW5pdGlhbGl6ZXIuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4ucHJvdG90eXBlLnByb2Nlc3NUZWxlbWV0cnkuXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBUZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbi5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW47XHJcbn0oQmFzZVRlbGVtZXRyeVBsdWdpbikpO1xyXG5leHBvcnQgeyBUZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbiB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbi5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5cInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHsgX19zcHJlYWRBcnJheUZuIGFzIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXNoaW1zXCI7XHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IG9iakNyZWF0ZUZuIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0FERF9OT1RJRklDQVRJT05fTElTMSwgX0RZTl9DT05GSUcsIF9EWU5fRkxVU0gsIF9EWU5fR0VUX05PVElGWV9NR1IsIF9EWU5fR0VUX1BMVUdJTiwgX0RZTl9HRVRfUFJPQ0VTU19URUxfQ09OVDAsIF9EWU5fSURFTlRJRklFUiwgX0RZTl9JTklUSUFMSVpFLCBfRFlOX0lOU1RSVU1FTlRBVElPTl9LRVksIF9EWU5fSVNfQVNZTkMsIF9EWU5fSVNfSU5JVElBTElaRUQsIF9EWU5fTEVOR1RILCBfRFlOX0xPR0dFUiwgX0RZTl9NRVNTQUdFLCBfRFlOX01FU1NBR0VfSUQsIF9EWU5fTkFNRSwgX0RZTl9PTl9DT01QTEVURSwgX0RZTl9QUk9DRVNTX05FWFQsIF9EWU5fUFVTSCwgX0RZTl9SRU1PVkVfTk9USUZJQ0FUSU9OXzIsIF9EWU5fU0VUX0VOQUJMRUQsIF9EWU5fU1BMSUNFLCBfRFlOX1NUT1BfUE9MTElOR19JTlRFUk5BMywgX0RZTl9URUFSRE9XTiwgX0RZTl9USU1FLCBfRFlOX19FWFRFTlNJT05TIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBDaGFubmVsQ29udHJvbGxlclByaW9yaXR5LCBjcmVhdGVDaGFubmVsQ29udHJvbGxlclBsdWdpbiwgY3JlYXRlQ2hhbm5lbFF1ZXVlcyB9IGZyb20gXCIuL0NoYW5uZWxDb250cm9sbGVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUNvb2tpZU1nciB9IGZyb20gXCIuL0Nvb2tpZU1nclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVVbmlxdWVOYW1lc3BhY2UgfSBmcm9tIFwiLi9EYXRhQ2FjaGVIZWxwZXJcIjtcclxuaW1wb3J0IHsgZ2V0RGVidWdMaXN0ZW5lciB9IGZyb20gXCIuL0RiZ0V4dGVuc2lvblV0aWxzXCI7XHJcbmltcG9ydCB7IERpYWdub3N0aWNMb2dnZXIsIF9JbnRlcm5hbExvZ01lc3NhZ2UsIF90aHJvd0ludGVybmFsLCBfd2FyblRvQ29uc29sZSB9IGZyb20gXCIuL0RpYWdub3N0aWNMb2dnZXJcIjtcclxuaW1wb3J0IHsgYXJyRm9yRWFjaCwgYXJySW5kZXhPZiwgZ2V0Q2ZnVmFsdWUsIGdldFNldFZhbHVlLCBpc0Z1bmN0aW9uLCBpc051bGxPclVuZGVmaW5lZCwgb2JqRXh0ZW5kLCBvYmpGcmVlemUsIHByb3h5RnVuY3Rpb25BcywgcHJveHlGdW5jdGlvbnMsIHRocm93RXJyb3IsIHRvSVNPU3RyaW5nIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0NIQU5ORUxTLCBTVFJfQ09SRSwgU1RSX0NSRUFURV9QRVJGX01HUiwgU1RSX0RJU0FCTEVELCBTVFJfRVZFTlRTX0RJU0NBUkRFRCwgU1RSX0VWRU5UU19TRU5EX1JFUVVFU1QsIFNUUl9FVkVOVFNfU0VOVCwgU1RSX0VYVEVOU0lPTlMsIFNUUl9FWFRFTlNJT05fQ09ORklHLCBTVFJfR0VUX1BFUkZfTUdSLCBTVFJfUFJJT1JJVFkgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBQZXJmTWFuYWdlciwgZ2V0R2JsUGVyZk1nciB9IGZyb20gXCIuL1BlcmZNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0LCBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5VW5sb2FkQ29udGV4dCwgY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVwZGF0ZUNvbnRleHQsIGNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4gfSBmcm9tIFwiLi9Qcm9jZXNzVGVsZW1ldHJ5Q29udGV4dFwiO1xyXG5pbXBvcnQgeyBfZ2V0UGx1Z2luU3RhdGUsIGNyZWF0ZURpc3RyaWJ1dGVkVHJhY2VDb250ZXh0LCBpbml0aWFsaXplUGx1Z2lucywgc29ydFBsdWdpbnMgfSBmcm9tIFwiLi9UZWxlbWV0cnlIZWxwZXJzXCI7XHJcbmltcG9ydCB7IFRlbGVtZXRyeUluaXRpYWxpemVyUGx1Z2luIH0gZnJvbSBcIi4vVGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW5cIjtcclxuaW1wb3J0IHsgY3JlYXRlVW5sb2FkSGFuZGxlckNvbnRhaW5lciB9IGZyb20gXCIuL1VubG9hZEhhbmRsZXJDb250YWluZXJcIjtcclxudmFyIHN0clZhbGlkYXRpb25FcnJvciA9IFwiUGx1Z2lucyBtdXN0IHByb3ZpZGUgaW5pdGlhbGl6ZSBtZXRob2RcIjtcclxudmFyIHN0ck5vdGlmaWNhdGlvbk1hbmFnZXIgPSBcIl9ub3RpZmljYXRpb25NYW5hZ2VyXCI7XHJcbnZhciBzdHJTZGtVbmxvYWRpbmdFcnJvciA9IFwiU0RLIGlzIHN0aWxsIHVubG9hZGluZy4uLlwiO1xyXG52YXIgc3RyU2RrTm90SW5pdGlhbGl6ZWQgPSBcIlNESyBpcyBub3QgaW5pdGlhbGl6ZWRcIjtcclxuLy8gY29uc3Qgc3RyUGx1Z2luVW5sb2FkRmFpbGVkID0gXCJGYWlsZWQgdG8gdW5sb2FkIHBsdWdpblwiO1xyXG52YXIgZGVmYXVsdEluaXRDb25maWcgPSB7XHJcbiAgICAvLyBIYXZlIHRoZSBEaWFnbm9zdGljIExvZ2dlciBkZWZhdWx0IHRvIGxvZyBjcml0aWNhbCBlcnJvcnMgdG8gdGhlIGNvbnNvbGVcclxuICAgIGxvZ2dpbmdMZXZlbENvbnNvbGU6IDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqL1xyXG59O1xyXG4vKipcclxuICogSGVscGVyIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBwZXJmb3JtYW5jZSBtYW5hZ2VyXHJcbiAqIEBwYXJhbSBjb3JlXHJcbiAqIEBwYXJhbSBub3RpZmljYXRpb25NZ3JcclxuICovXHJcbmZ1bmN0aW9uIF9jcmVhdGVQZXJmTWFuYWdlcihjb3JlLCBub3RpZmljYXRpb25NZ3IpIHtcclxuICAgIHJldHVybiBuZXcgUGVyZk1hbmFnZXIobm90aWZpY2F0aW9uTWdyKTtcclxufVxyXG5mdW5jdGlvbiBfdmFsaWRhdGVFeHRlbnNpb25zKGxvZ2dlciwgY2hhbm5lbFByaW9yaXR5LCBhbGxFeHRlbnNpb25zKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICAvLyBDb25jYXQgYWxsIGF2YWlsYWJsZSBleHRlbnNpb25zXHJcbiAgICB2YXIgY29yZUV4dGVuc2lvbnMgPSBbXTtcclxuICAgIC8vIENoZWNrIGlmIGFueSB0d28gZXh0ZW5zaW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LCB0aGVuIHdhcm4gdG8gY29uc29sZVxyXG4gICAgLy8gQW5kIGV4dHJhY3QgdGhlIGxvY2FsIGV4dGVuc2lvbnMgZnJvbSB0aGVcclxuICAgIHZhciBleHRQcmlvcml0aWVzID0ge307XHJcbiAgICAvLyBFeHRlbnNpb24gdmFsaWRhdGlvblxyXG4gICAgYXJyRm9yRWFjaChhbGxFeHRlbnNpb25zLCBmdW5jdGlvbiAoZXh0KSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGV4dC5pbml0aWFsaXplXHJcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGV4dCkgfHwgaXNOdWxsT3JVbmRlZmluZWQoZXh0W19EWU5fSU5JVElBTElaRSAvKiBAbWluOiUyZWluaXRpYWxpemUgKi9dKSkge1xyXG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0clZhbGlkYXRpb25FcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBleHRQcmlvcml0eSA9IGV4dFtTVFJfUFJJT1JJVFkgLyogQG1pbjolMmVwcmlvcml0eSAqL107XHJcbiAgICAgICAgdmFyIGlkZW50aWZpZXIgPSBleHRbX0RZTl9JREVOVElGSUVSIC8qIEBtaW46JTJlaWRlbnRpZmllciAqL107XHJcbiAgICAgICAgaWYgKGV4dCAmJiBleHRQcmlvcml0eSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGV4dFByaW9yaXRpZXNbZXh0UHJpb3JpdHldKSkge1xyXG4gICAgICAgICAgICAgICAgX3dhcm5Ub0NvbnNvbGUobG9nZ2VyLCBcIlR3byBleHRlbnNpb25zIGhhdmUgc2FtZSBwcmlvcml0eSAjXCIgKyBleHRQcmlvcml0eSArIFwiIC0gXCIgKyBleHRQcmlvcml0aWVzW2V4dFByaW9yaXR5XSArIFwiLCBcIiArIGlkZW50aWZpZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGEgdmFsdWVcclxuICAgICAgICAgICAgICAgIGV4dFByaW9yaXRpZXNbZXh0UHJpb3JpdHldID0gaWRlbnRpZmllcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTcGxpdCBleHRlbnNpb25zIHRvIGNvcmUgYW5kIGNoYW5uZWxDb250cm9sbGVyXHJcbiAgICAgICAgaWYgKCFleHRQcmlvcml0eSB8fCBleHRQcmlvcml0eSA8IGNoYW5uZWxQcmlvcml0eSkge1xyXG4gICAgICAgICAgICAvLyBBZGQgdG8gY29yZSBleHRlbnNpb24gdGhhdCB3aWxsIGJlIG1hbmFnZWQgYnkgQmFzZUNvcmVcclxuICAgICAgICAgICAgY29yZUV4dGVuc2lvbnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oZXh0KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfYSA9IHtcclxuICAgICAgICAgICAgYWxsOiBhbGxFeHRlbnNpb25zXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfYVtTVFJfQ09SRSAvKiBAbWluOmNvcmUgKi9dID0gY29yZUV4dGVuc2lvbnMsXHJcbiAgICAgICAgX2E7XHJcbn1cclxuZnVuY3Rpb24gX2lzUGx1Z2luUHJlc2VudCh0aGVQbHVnaW4sIHBsdWdpbnMpIHtcclxuICAgIHZhciBleGlzdHMgPSBmYWxzZTtcclxuICAgIGFyckZvckVhY2gocGx1Z2lucywgZnVuY3Rpb24gKHBsdWdpbikge1xyXG4gICAgICAgIGlmIChwbHVnaW4gPT09IHRoZVBsdWdpbikge1xyXG4gICAgICAgICAgICBleGlzdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXhpc3RzO1xyXG59XHJcbmZ1bmN0aW9uIF9jcmVhdGVEdW1teU5vdGlmaWNhdGlvbk1hbmFnZXIoKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICByZXR1cm4gb2JqQ3JlYXRlRm4oKF9hID0ge30sXHJcbiAgICAgICAgX2FbX0RZTl9BRERfTk9USUZJQ0FUSU9OX0xJUzEgLyogQG1pbjphZGROb3RpZmljYXRpb25MaXN0ZW5lciAqL10gPSBmdW5jdGlvbiAobGlzdGVuZXIpIHsgfSxcclxuICAgICAgICBfYVtfRFlOX1JFTU9WRV9OT1RJRklDQVRJT05fMiAvKiBAbWluOnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyICovXSA9IGZ1bmN0aW9uIChsaXN0ZW5lcikgeyB9LFxyXG4gICAgICAgIF9hW1NUUl9FVkVOVFNfU0VOVCAvKiBAbWluOmV2ZW50c1NlbnQgKi9dID0gZnVuY3Rpb24gKGV2ZW50cykgeyB9LFxyXG4gICAgICAgIF9hW1NUUl9FVkVOVFNfRElTQ0FSREVEIC8qIEBtaW46ZXZlbnRzRGlzY2FyZGVkICovXSA9IGZ1bmN0aW9uIChldmVudHMsIHJlYXNvbikgeyB9LFxyXG4gICAgICAgIF9hW1NUUl9FVkVOVFNfU0VORF9SRVFVRVNUIC8qIEBtaW46ZXZlbnRzU2VuZFJlcXVlc3QgKi9dID0gZnVuY3Rpb24gKHNlbmRSZWFzb24sIGlzQXN5bmMpIHsgfSxcclxuICAgICAgICBfYSkpO1xyXG59XHJcbnZhciBCYXNlQ29yZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJhc2VDb3JlKCkge1xyXG4gICAgICAgIC8vIE5PVEUhOiBET04nVCBzZXQgZGVmYXVsdCB2YWx1ZXMgaGVyZSwgaW5zdGVhZCBzZXQgdGhlbSBpbiB0aGUgX2luaXREZWZhdWx0cygpIGZ1bmN0aW9uIGFzIGl0IGlzIGFsc28gY2FsbGVkIGR1cmluZyB0ZWFyZG93bigpXHJcbiAgICAgICAgdmFyIF9jb25maWc7XHJcbiAgICAgICAgdmFyIF9pc0luaXRpYWxpemVkO1xyXG4gICAgICAgIHZhciBfZXZlbnRRdWV1ZTtcclxuICAgICAgICB2YXIgX25vdGlmaWNhdGlvbk1hbmFnZXI7XHJcbiAgICAgICAgdmFyIF9wZXJmTWFuYWdlcjtcclxuICAgICAgICB2YXIgX2NmZ1BlcmZNYW5hZ2VyO1xyXG4gICAgICAgIHZhciBfY29va2llTWFuYWdlcjtcclxuICAgICAgICB2YXIgX3BsdWdpbkNoYWluO1xyXG4gICAgICAgIHZhciBfY29uZmlnRXh0ZW5zaW9ucztcclxuICAgICAgICB2YXIgX2NvcmVFeHRlbnNpb25zO1xyXG4gICAgICAgIHZhciBfY2hhbm5lbENvbnRyb2w7XHJcbiAgICAgICAgdmFyIF9jaGFubmVsQ29uZmlnO1xyXG4gICAgICAgIHZhciBfY2hhbm5lbFF1ZXVlO1xyXG4gICAgICAgIHZhciBfaXNVbmxvYWRpbmc7XHJcbiAgICAgICAgdmFyIF90ZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbjtcclxuICAgICAgICB2YXIgX2ludGVybmFsTG9nc0V2ZW50TmFtZTtcclxuICAgICAgICB2YXIgX2V2dE5hbWVzcGFjZTtcclxuICAgICAgICB2YXIgX3VubG9hZEhhbmRsZXJzO1xyXG4gICAgICAgIHZhciBfZGVidWdMaXN0ZW5lcjtcclxuICAgICAgICB2YXIgX3RyYWNlQ3R4O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEludGVybmFsIGxvZyBwb2xsZXJcclxuICAgICAgICAgKi9cclxuICAgICAgICB2YXIgX2ludGVybmFsTG9nUG9sbGVyID0gMDtcclxuICAgICAgICBkeW5hbWljUHJvdG8oQmFzZUNvcmUsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIChhbHNvIGNhbGxlZCBkdXJpbmcgdGVhcmRvd24pXHJcbiAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX2lzSW5pdGlhbGl6ZWQ7IH07XHJcbiAgICAgICAgICAgIC8vIENyZWF0aW5nIHRoZSBzZWxmLmluaXRpYWxpemUgPSAoKVxyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0lOSVRJQUxJWkUgLyogQG1pbjolMmVpbml0aWFsaXplICovXSA9IGZ1bmN0aW9uIChjb25maWcsIGV4dGVuc2lvbnMsIGxvZ2dlciwgbm90aWZpY2F0aW9uTWFuYWdlcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9pc1VubG9hZGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioc3RyU2RrVW5sb2FkaW5nRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGNvcmUgaXMgb25seSBpbml0aWFsaXplZCBvbmNlXHJcbiAgICAgICAgICAgICAgICBpZiAoX3NlbGZbX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKFwiQ29yZSBzaG91bGQgbm90IGJlIGluaXRpYWxpemVkIG1vcmUgdGhhbiBvbmNlXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX2NvbmZpZyA9IGNvbmZpZyB8fCB7fTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSA9IF9jb25maWc7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoY29uZmlnW19EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSAvKiBAbWluOiUyZWluc3RydW1lbnRhdGlvbktleSAqL10pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihcIlBsZWFzZSBwcm92aWRlIGluc3RydW1lbnRhdGlvbiBrZXlcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfbm90aWZpY2F0aW9uTWFuYWdlciA9IG5vdGlmaWNhdGlvbk1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5XHJcbiAgICAgICAgICAgICAgICBfc2VsZltzdHJOb3RpZmljYXRpb25NYW5hZ2VyXSA9IG5vdGlmaWNhdGlvbk1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBfaW5pdERlYnVnTGlzdGVuZXIoKTtcclxuICAgICAgICAgICAgICAgIF9pbml0UGVyZk1hbmFnZXIoKTtcclxuICAgICAgICAgICAgICAgIC8vIGFkZCBub3RpZmljYXRpb24gdG8gdGhlIGV4dGVuc2lvbnMgaW4gdGhlIGNvbmZpZyBzbyBvdGhlciBwbHVnaW5zIGNhbiBhY2Nlc3MgaXRcclxuICAgICAgICAgICAgICAgIF9pbml0RXh0Q29uZmlnKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dID0gbG9nZ2VyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGNmZ0V4dGVuc2lvbnMgPSBnZXRTZXRWYWx1ZShfY29uZmlnLCBTVFJfRVhURU5TSU9OUywgW10pO1xyXG4gICAgICAgICAgICAgICAgLy8gRXh0ZW5zaW9uIHZhbGlkYXRpb25cclxuICAgICAgICAgICAgICAgIF9jb25maWdFeHRlbnNpb25zID0gW107XHJcbiAgICAgICAgICAgICAgICBfY29uZmlnRXh0ZW5zaW9uc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXS5hcHBseShfY29uZmlnRXh0ZW5zaW9ucywgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBleHRlbnNpb25zLCBmYWxzZSksIGNmZ0V4dGVuc2lvbnMsIGZhbHNlKSk7XHJcbiAgICAgICAgICAgICAgICBfY2hhbm5lbENvbmZpZyA9IGdldFNldFZhbHVlKF9jb25maWcsIFNUUl9DSEFOTkVMUywgW10pO1xyXG4gICAgICAgICAgICAgICAgX2luaXRQbHVnaW5DaGFpbihudWxsKTtcclxuICAgICAgICAgICAgICAgIGlmICghX2NoYW5uZWxRdWV1ZSB8fCBfY2hhbm5lbFF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoXCJObyBcIiArIFNUUl9DSEFOTkVMUyArIFwiIGF2YWlsYWJsZVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLnJlbGVhc2VRdWV1ZSgpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5nZXRUcmFuc21pc3Npb25Db250cm9scyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb250cm9scyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9jaGFubmVsUXVldWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKF9jaGFubmVsUXVldWUsIGZ1bmN0aW9uIChjaGFubmVscykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShjaGFubmVscy5xdWV1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JqRnJlZXplKGNvbnRyb2xzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYudHJhY2sgPSBmdW5jdGlvbiAodGVsZW1ldHJ5SXRlbSkge1xyXG4gICAgICAgICAgICAgICAgLy8gc2V0dXAgZGVmYXVsdCBpS2V5IGlmIG5vdCBwYXNzZWQgaW5cclxuICAgICAgICAgICAgICAgIHRlbGVtZXRyeUl0ZW0uaUtleSA9IHRlbGVtZXRyeUl0ZW0uaUtleSB8fCBfY29uZmlnW19EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSAvKiBAbWluOiUyZWluc3RydW1lbnRhdGlvbktleSAqL107XHJcbiAgICAgICAgICAgICAgICAvLyBhZGQgZGVmYXVsdCB0aW1lc3RhbXAgaWYgbm90IHBhc3NlZCBpblxyXG4gICAgICAgICAgICAgICAgdGVsZW1ldHJ5SXRlbVtfRFlOX1RJTUUgLyogQG1pbjolMmV0aW1lICovXSA9IHRlbGVtZXRyeUl0ZW1bX0RZTl9USU1FIC8qIEBtaW46JTJldGltZSAqL10gfHwgdG9JU09TdHJpbmcobmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAvLyBDb21tb24gU2NoZW1hIDQuMFxyXG4gICAgICAgICAgICAgICAgdGVsZW1ldHJ5SXRlbS52ZXIgPSB0ZWxlbWV0cnlJdGVtLnZlciB8fCBcIjQuMFwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfaXNVbmxvYWRpbmcgJiYgX3NlbGZbX0RZTl9JU19JTklUSUFMSVpFRCAvKiBAbWluOiUyZWlzSW5pdGlhbGl6ZWQgKi9dKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNzIHRoZSB0ZWxlbWV0cnkgcGx1Z2luIGNoYWluXHJcbiAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZVRlbEN0eCgpW19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKHRlbGVtZXRyeUl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUXVldWUgZXZlbnRzIHVudGlsIGFsbCBleHRlbnNpb25zIGFyZSBpbml0aWFsaXplZFxyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFF1ZXVlW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKHRlbGVtZXRyeUl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0dFVF9QUk9DRVNTX1RFTF9DT05UMCAvKiBAbWluOiUyZWdldFByb2Nlc3NUZWxDb250ZXh0ICovXSA9IF9jcmVhdGVUZWxDdHg7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fR0VUX05PVElGWV9NR1IgLyogQG1pbjolMmVnZXROb3RpZnlNZ3IgKi9dID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfbm90aWZpY2F0aW9uTWFuYWdlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBEdW1teSBub3RpZmljYXRpb24gbWFuYWdlclxyXG4gICAgICAgICAgICAgICAgICAgIF9ub3RpZmljYXRpb25NYW5hZ2VyID0gX2NyZWF0ZUR1bW15Tm90aWZpY2F0aW9uTWFuYWdlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHlcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltzdHJOb3RpZmljYXRpb25NYW5hZ2VyXSA9IF9ub3RpZmljYXRpb25NYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9ub3RpZmljYXRpb25NYW5hZ2VyO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQWRkcyBhIG5vdGlmaWNhdGlvbiBsaXN0ZW5lci4gVGhlIFNESyBjYWxscyBtZXRob2RzIG9uIHRoZSBsaXN0ZW5lciB3aGVuIGFuIGFwcHJvcHJpYXRlIG5vdGlmaWNhdGlvbiBpcyByYWlzZWQuXHJcbiAgICAgICAgICAgICAqIFRoZSBhZGRlZCBwbHVnaW5zIG11c3QgcmFpc2Ugbm90aWZpY2F0aW9ucy4gSWYgdGhlIHBsdWdpbnMgZG8gbm90IGltcGxlbWVudCB0aGUgbm90aWZpY2F0aW9ucywgdGhlbiBubyBtZXRob2RzIHdpbGwgYmVcclxuICAgICAgICAgICAgICogY2FsbGVkLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge0lOb3RpZmljYXRpb25MaXN0ZW5lcn0gbGlzdGVuZXIgLSBBbiBJTm90aWZpY2F0aW9uTGlzdGVuZXIgb2JqZWN0LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BRERfTk9USUZJQ0FUSU9OX0xJUzEgLyogQG1pbjolMmVhZGROb3RpZmljYXRpb25MaXN0ZW5lciAqL10gPSBmdW5jdGlvbiAobGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfbm90aWZpY2F0aW9uTWFuYWdlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIF9ub3RpZmljYXRpb25NYW5hZ2VyW19EWU5fQUREX05PVElGSUNBVElPTl9MSVMxIC8qIEBtaW46JTJlYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIgKi9dKGxpc3RlbmVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFJlbW92ZXMgYWxsIGluc3RhbmNlcyBvZiB0aGUgbGlzdGVuZXIuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7SU5vdGlmaWNhdGlvbkxpc3RlbmVyfSBsaXN0ZW5lciAtIElOb3RpZmljYXRpb25MaXN0ZW5lciB0byByZW1vdmUuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1JFTU9WRV9OT1RJRklDQVRJT05fMiAvKiBAbWluOiUyZXJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyICovXSA9IGZ1bmN0aW9uIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9ub3RpZmljYXRpb25NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX25vdGlmaWNhdGlvbk1hbmFnZXJbX0RZTl9SRU1PVkVfTk9USUZJQ0FUSU9OXzIgLyogQG1pbjolMmVyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lciAqL10obGlzdGVuZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5nZXRDb29raWVNZ3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9jb29raWVNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2Nvb2tpZU1hbmFnZXIgPSBjcmVhdGVDb29raWVNZ3IoX2NvbmZpZywgX3NlbGZbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBfY29va2llTWFuYWdlcjtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuc2V0Q29va2llTWdyID0gZnVuY3Rpb24gKGNvb2tpZU1ncikge1xyXG4gICAgICAgICAgICAgICAgX2Nvb2tpZU1hbmFnZXIgPSBjb29raWVNZ3I7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW1NUUl9HRVRfUEVSRl9NR1IgLyogQG1pbjolMmVnZXRQZXJmTWdyICovXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghX3BlcmZNYW5hZ2VyICYmICFfY2ZnUGVyZk1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0Q2ZnVmFsdWUoX2NvbmZpZy5lbmFibGVQZXJmTWdyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3JlYXRlUGVyZk1nciA9IGdldENmZ1ZhbHVlKF9jb25maWdbU1RSX0NSRUFURV9QRVJGX01HUiAvKiBAbWluOiUyZWNyZWF0ZVBlcmZNZ3IgKi9dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY3JlYXRlUGVyZk1ncikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jZmdQZXJmTWFuYWdlciA9IGNyZWF0ZVBlcmZNZ3IoX3NlbGYsIF9zZWxmW19EWU5fR0VUX05PVElGWV9NR1IgLyogQG1pbjolMmVnZXROb3RpZnlNZ3IgKi9dKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9wZXJmTWFuYWdlciB8fCBfY2ZnUGVyZk1hbmFnZXIgfHwgZ2V0R2JsUGVyZk1ncigpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5zZXRQZXJmTWdyID0gZnVuY3Rpb24gKHBlcmZNZ3IpIHtcclxuICAgICAgICAgICAgICAgIF9wZXJmTWFuYWdlciA9IHBlcmZNZ3I7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmV2ZW50Q250ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9ldmVudFF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYucmVsZWFzZVF1ZXVlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9pc0luaXRpYWxpemVkICYmIF9ldmVudFF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnRRdWV1ZSA9IF9ldmVudFF1ZXVlO1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFF1ZXVlID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChldmVudFF1ZXVlLCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2NyZWF0ZVRlbEN0eCgpW19EWU5fUFJPQ0VTU19ORVhUIC8qIEBtaW46JTJlcHJvY2Vzc05leHQgKi9dKGV2ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFBlcmlvZGljYWxseSBjaGVjayBsb2dnZXIucXVldWUgZm9yIGxvZyBtZXNzYWdlcyB0byBiZSBmbHVzaGVkXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi5wb2xsSW50ZXJuYWxMb2dzID0gZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgX2ludGVybmFsTG9nc0V2ZW50TmFtZSA9IGV2ZW50TmFtZSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgdmFyIGludGVydmFsID0gZ2V0Q2ZnVmFsdWUoX2NvbmZpZy5kaWFnbm9zdGljTG9nSW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnRlcnZhbCB8fCAhKGludGVydmFsID4gMCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKF9pbnRlcm5hbExvZ1BvbGxlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoX2ludGVybmFsTG9nUG9sbGVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9pbnRlcm5hbExvZ1BvbGxlciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZmx1c2hJbnRlcm5hbExvZ3MoKTtcclxuICAgICAgICAgICAgICAgIH0sIGludGVydmFsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfaW50ZXJuYWxMb2dQb2xsZXI7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBTdG9wIHBvbGxpbmcgbG9nIG1lc3NhZ2VzIGZyb20gbG9nZ2VyLnF1ZXVlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1NUT1BfUE9MTElOR19JTlRFUk5BMyAvKiBAbWluOiUyZXN0b3BQb2xsaW5nSW50ZXJuYWxMb2dzICovXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfaW50ZXJuYWxMb2dQb2xsZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKF9pbnRlcm5hbExvZ1BvbGxlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgX2ludGVybmFsTG9nUG9sbGVyID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBfZmx1c2hJbnRlcm5hbExvZ3MoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLy8gQWRkIGFkZFRlbGVtZXRyeUluaXRpYWxpemVyXHJcbiAgICAgICAgICAgIHByb3h5RnVuY3Rpb25zKF9zZWxmLCBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW47IH0sIFtcImFkZFRlbGVtZXRyeUluaXRpYWxpemVyXCJdKTtcclxuICAgICAgICAgICAgX3NlbGYudW5sb2FkID0gZnVuY3Rpb24gKGlzQXN5bmMsIHVubG9hZENvbXBsZXRlLCBjYlRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0FzeW5jID09PSB2b2lkIDApIHsgaXNBc3luYyA9IHRydWU7IH1cclxuICAgICAgICAgICAgICAgIGlmICghX2lzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgU0RLIGlzIG5vdCBpbml0aWFsaXplZFxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioc3RyU2RrTm90SW5pdGlhbGl6ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIFNESyBzdGlsbCB1bmxvYWRpbmcgc28gdGhyb3dcclxuICAgICAgICAgICAgICAgIGlmIChfaXNVbmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgU0RLIGlzIGFscmVhZHkgdW5sb2FkaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihzdHJTZGtVbmxvYWRpbmdFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgdW5sb2FkU3RhdGUgPSAoX2EgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogNTAgLyogVGVsZW1ldHJ5VW5sb2FkUmVhc29uLlNka1VubG9hZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgX2FbX0RZTl9JU19BU1lOQyAvKiBAbWluOmlzQXN5bmMgKi9dID0gaXNBc3luYyxcclxuICAgICAgICAgICAgICAgICAgICBfYS5mbHVzaENvbXBsZXRlID0gZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgX2EpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHByb2Nlc3NVbmxvYWRDdHggPSBjcmVhdGVQcm9jZXNzVGVsZW1ldHJ5VW5sb2FkQ29udGV4dChfZ2V0UGx1Z2luQ2hhaW4oKSwgX3NlbGYpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1VubG9hZEN0eFtfRFlOX09OX0NPTVBMRVRFIC8qIEBtaW46JTJlb25Db21wbGV0ZSAqL10oZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB1bmxvYWRDb21wbGV0ZSAmJiB1bmxvYWRDb21wbGV0ZSh1bmxvYWRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9LCBfc2VsZik7XHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfZG9VbmxvYWQoZmx1c2hDb21wbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVubG9hZFN0YXRlLmZsdXNoQ29tcGxldGUgPSBmbHVzaENvbXBsZXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIF9pc1VubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUnVuIGFsbCBvZiB0aGUgdW5sb2FkIGhhbmRsZXJzIGZpcnN0IChiZWZvcmUgdW5sb2FkaW5nIHRoZSBwbHVnaW5zKVxyXG4gICAgICAgICAgICAgICAgICAgIF91bmxvYWRIYW5kbGVycy5ydW4ocHJvY2Vzc1VubG9hZEN0eCwgdW5sb2FkU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFN0b3AgcG9sbGluZyB0aGUgaW50ZXJuYWwgbG9nc1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fU1RPUF9QT0xMSU5HX0lOVEVSTkEzIC8qIEBtaW46JTJlc3RvcFBvbGxpbmdJbnRlcm5hbExvZ3MgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU3RhcnQgdW5sb2FkaW5nIHRoZSBjb21wb25lbnRzLCBmcm9tIHRoaXMgcG9pbnQgb253YXJkcyB0aGUgU0RLIHNob3VsZCBiZSBjb25zaWRlcmVkIHRvIGJlIGluIGFuIHVuc3RhYmxlIHN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1VubG9hZEN0eFtfRFlOX1BST0NFU1NfTkVYVCAvKiBAbWluOiUyZXByb2Nlc3NOZXh0ICovXSh1bmxvYWRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9mbHVzaENoYW5uZWxzKGlzQXN5bmMsIF9kb1VubG9hZCwgNiAvKiBTZW5kUmVxdWVzdFJlYXNvbi5TZGtVbmxvYWQgKi8sIGNiVGltZW91dCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZG9VbmxvYWQoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0dFVF9QTFVHSU4gLyogQG1pbjolMmVnZXRQbHVnaW4gKi9dID0gX2dldFBsdWdpbjtcclxuICAgICAgICAgICAgX3NlbGYuYWRkUGx1Z2luID0gZnVuY3Rpb24gKHBsdWdpbiwgcmVwbGFjZUV4aXN0aW5nLCBpc0FzeW5jLCBhZGRDYikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRDYiAmJiBhZGRDYihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2xvZ09yVGhyb3dFcnJvcihzdHJWYWxpZGF0aW9uRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBleGlzdGluZ1BsdWdpbiA9IF9nZXRQbHVnaW4ocGx1Z2luW19EWU5fSURFTlRJRklFUiAvKiBAbWluOiUyZWlkZW50aWZpZXIgKi9dKTtcclxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1BsdWdpbiAmJiAhcmVwbGFjZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2IgJiYgYWRkQ2IoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9sb2dPclRocm93RXJyb3IoXCJQbHVnaW4gW1wiICsgcGx1Z2luW19EWU5fSURFTlRJRklFUiAvKiBAbWluOiUyZWlkZW50aWZpZXIgKi9dICsgXCJdIGlzIGFscmVhZHkgbG9hZGVkIVwiKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgdXBkYXRlU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAxNiAvKiBUZWxlbWV0cnlVcGRhdGVSZWFzb24uUGx1Z2luQWRkZWQgKi9cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBfYWRkUGx1Z2luKHJlbW92ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBfY29uZmlnRXh0ZW5zaW9uc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShwbHVnaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlLmFkZGVkID0gW3BsdWdpbl07XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmUtSW5pdGlhbGl6ZSB0aGUgcGx1Z2luIGNoYWluXHJcbiAgICAgICAgICAgICAgICAgICAgX2luaXRQbHVnaW5DaGFpbih1cGRhdGVTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2IgJiYgYWRkQ2IodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVtb3ZlZFBsdWdpbnNfMSA9IFtleGlzdGluZ1BsdWdpbi5wbHVnaW5dO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB1bmxvYWRTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uOiAyIC8qIFRlbGVtZXRyeVVubG9hZFJlYXNvbi5QbHVnaW5SZXBsYWNlICovLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0FzeW5jOiAhIWlzQXN5bmNcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVQbHVnaW5zKHJlbW92ZWRQbHVnaW5zXzEsIHVubG9hZFN0YXRlLCBmdW5jdGlvbiAocmVtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlbW92ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzIHBsdWdpbiB3YXMgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQgb3Igd2FzIG5vdCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENiICYmIGFkZENiKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlLnJlbW92ZWQgPSByZW1vdmVkUGx1Z2luc18xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGUucmVhc29uIHw9IDMyIC8qIFRlbGVtZXRyeVVwZGF0ZVJlYXNvbi5QbHVnaW5SZW1vdmVkICovO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FkZFBsdWdpbih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2FkZFBsdWdpbihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmV2dE5hbWVzcGFjZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfZXZ0TmFtZXNwYWNlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0ZMVVNIIC8qIEBtaW46JTJlZmx1c2ggKi9dID0gX2ZsdXNoQ2hhbm5lbHM7XHJcbiAgICAgICAgICAgIF9zZWxmLmdldFRyYWNlQ3R4ID0gZnVuY3Rpb24gKGNyZWF0ZU5ldykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfdHJhY2VDdHgpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdHJhY2VDdHggPSBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF90cmFjZUN0eDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuc2V0VHJhY2VDdHggPSBmdW5jdGlvbiAodHJhY2VDdHgpIHtcclxuICAgICAgICAgICAgICAgIF90cmFjZUN0eCA9IHRyYWNlQ3R4IHx8IG51bGw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgYWRkVW5sb2FkQ2JcclxuICAgICAgICAgICAgcHJveHlGdW5jdGlvbkFzKF9zZWxmLCBcImFkZFVubG9hZENiXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIF91bmxvYWRIYW5kbGVyczsgfSwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0RGVmYXVsdHMoKSB7XHJcbiAgICAgICAgICAgICAgICBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gVXNlIGEgZGVmYXVsdCBsb2dnZXIgc28gaW5pdGlhbGl6YXRpb24gZXJyb3JzIGFyZSBub3QgZHJvcHBlZCBvbiB0aGUgZmxvb3Igd2l0aCBmdWxsIGxvZ2dpbmdcclxuICAgICAgICAgICAgICAgIF9jb25maWcgPSBvYmpFeHRlbmQodHJ1ZSwge30sIGRlZmF1bHRJbml0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSA9IF9jb25maWc7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0xPR0dFUiAvKiBAbWluOiUyZWxvZ2dlciAqL10gPSBuZXcgRGlhZ25vc3RpY0xvZ2dlcihfY29uZmlnKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX0VYVEVOU0lPTlMgLyogQG1pbjolMmVfZXh0ZW5zaW9ucyAqL10gPSBbXTtcclxuICAgICAgICAgICAgICAgIF90ZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbiA9IG5ldyBUZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbigpO1xyXG4gICAgICAgICAgICAgICAgX2V2ZW50UXVldWUgPSBbXTtcclxuICAgICAgICAgICAgICAgIF9ub3RpZmljYXRpb25NYW5hZ2VyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9wZXJmTWFuYWdlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfY2ZnUGVyZk1hbmFnZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2Nvb2tpZU1hbmFnZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3BsdWdpbkNoYWluID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9jb3JlRXh0ZW5zaW9ucyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfY29uZmlnRXh0ZW5zaW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgX2NoYW5uZWxDb250cm9sID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9jaGFubmVsQ29uZmlnID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9jaGFubmVsUXVldWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2lzVW5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBfaW50ZXJuYWxMb2dzRXZlbnROYW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9ldnROYW1lc3BhY2UgPSBjcmVhdGVVbmlxdWVOYW1lc3BhY2UoXCJBSUJhc2VDb3JlXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgX3VubG9hZEhhbmRsZXJzID0gY3JlYXRlVW5sb2FkSGFuZGxlckNvbnRhaW5lcigpO1xyXG4gICAgICAgICAgICAgICAgX3RyYWNlQ3R4ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfY3JlYXRlVGVsQ3R4KCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KF9nZXRQbHVnaW5DaGFpbigpLCBfY29uZmlnLCBfc2VsZik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBvciBSZS1pbml0aWFsaXplIHRoZSBwbHVnaW5zXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0UGx1Z2luQ2hhaW4odXBkYXRlU3RhdGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIEV4dGVuc2lvbiB2YWxpZGF0aW9uXHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlRXh0ZW5zaW9ucyA9IF92YWxpZGF0ZUV4dGVuc2lvbnMoX3NlbGZbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dLCBDaGFubmVsQ29udHJvbGxlclByaW9yaXR5LCBfY29uZmlnRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBfY29yZUV4dGVuc2lvbnMgPSB0aGVFeHRlbnNpb25zW1NUUl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL107XHJcbiAgICAgICAgICAgICAgICBfcGx1Z2luQ2hhaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgLy8gU29ydCB0aGUgY29tcGxldGUgc2V0IG9mIGV4dGVuc2lvbnMgYnkgcHJpb3JpdHlcclxuICAgICAgICAgICAgICAgIHZhciBhbGxFeHRlbnNpb25zID0gdGhlRXh0ZW5zaW9ucy5hbGw7XHJcbiAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBDaGFubmVsIFF1ZXVlcyBhbmQgdGhlIGNoYW5uZWwgcGx1Z2lucyBmaXJzdFxyXG4gICAgICAgICAgICAgICAgX2NoYW5uZWxRdWV1ZSA9IG9iakZyZWV6ZShjcmVhdGVDaGFubmVsUXVldWVzKF9jaGFubmVsQ29uZmlnLCBhbGxFeHRlbnNpb25zLCBfc2VsZikpO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9jaGFubmVsQ29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIER1cmluZyBhZGQgLyByZW1vdmUgb2YgYSBwbHVnaW4gdGhpcyBtYXkgZ2V0IGNhbGxlZCBhZ2Fpbiwgc28gZG9uJ3QgcmUtYWRkIGlmIGFscmVhZHkgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBhbHNvIHdhbnQgdGhlIGNvbnRyb2xsZXIgYXMgdGhlIGxhc3QsIHNvIHJlbW92ZSBpZiBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBBbmQgcmV1c2luZyB0aGUgZXhpc3RpbmcgaW5zdGFuY2UsIGp1c3QgaW4gY2FzZSBhbiBpbnN0YWxsZWQgcGx1Z2luIGhhcyBhIHJlZmVyZW5jZSBhbmRcclxuICAgICAgICAgICAgICAgICAgICAvLyBpcyB1c2luZyBpdC5cclxuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gYXJySW5kZXhPZihhbGxFeHRlbnNpb25zLCBfY2hhbm5lbENvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEV4dGVuc2lvbnNbX0RZTl9TUExJQ0UgLyogQG1pbjolMmVzcGxpY2UgKi9dKGlkeCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlkeCA9IGFyckluZGV4T2YoX2NvcmVFeHRlbnNpb25zLCBfY2hhbm5lbENvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jb3JlRXh0ZW5zaW9uc1tfRFlOX1NQTElDRSAvKiBAbWluOiUyZXNwbGljZSAqL10oaWR4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX2NoYW5uZWxDb250cm9sLl9zZXRRdWV1ZShfY2hhbm5lbFF1ZXVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jaGFubmVsQ29udHJvbCA9IGNyZWF0ZUNoYW5uZWxDb250cm9sbGVyUGx1Z2luKF9jaGFubmVsUXVldWUsIF9zZWxmKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIEFkZCBvbiBcImNoYW5uZWxDb250cm9sbGVyXCIgYXMgdGhlIGxhc3QgXCJwbHVnaW5cIlxyXG4gICAgICAgICAgICAgICAgYWxsRXh0ZW5zaW9uc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShfY2hhbm5lbENvbnRyb2wpO1xyXG4gICAgICAgICAgICAgICAgX2NvcmVFeHRlbnNpb25zW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKF9jaGFubmVsQ29udHJvbCk7XHJcbiAgICAgICAgICAgICAgICAvLyBSZXF1aXJlZCB0byBhbGxvdyBwbHVnaW5zIHRvIGNhbGwgY29yZS5nZXRQbHVnaW4oKSBkdXJpbmcgdGhlaXIgb3duIGluaXRpYWxpemF0aW9uXHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19FWFRFTlNJT05TIC8qIEBtaW46JTJlX2V4dGVuc2lvbnMgKi9dID0gc29ydFBsdWdpbnMoYWxsRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBjb250cm9sc1xyXG4gICAgICAgICAgICAgICAgX2NoYW5uZWxDb250cm9sW19EWU5fSU5JVElBTElaRSAvKiBAbWluOiUyZWluaXRpYWxpemUgKi9dKF9jb25maWcsIF9zZWxmLCBhbGxFeHRlbnNpb25zKTtcclxuICAgICAgICAgICAgICAgIGluaXRpYWxpemVQbHVnaW5zKF9jcmVhdGVUZWxDdHgoKSwgYWxsRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgICAgICAvLyBOb3cgcmVzZXQgdGhlIGV4dGVuc2lvbnMgdG8ganVzdCB0aG9zZSBiZWluZyBtYW5hZ2VkIGJ5IEJhc2Vjb3JlXHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19FWFRFTlNJT05TIC8qIEBtaW46JTJlX2V4dGVuc2lvbnMgKi9dID0gb2JqRnJlZXplKHNvcnRQbHVnaW5zKF9jb3JlRXh0ZW5zaW9ucyB8fCBbXSkpLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlU3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZG9VcGRhdGUodXBkYXRlU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9nZXRQbHVnaW4ocGx1Z2luSWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRoZUV4dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlUGx1Z2luID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGFyckZvckVhY2goX3NlbGZbX0RZTl9fRVhURU5TSU9OUyAvKiBAbWluOiUyZV9leHRlbnNpb25zICovXSwgZnVuY3Rpb24gKGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleHRbX0RZTl9JREVOVElGSUVSIC8qIEBtaW46JTJlaWRlbnRpZmllciAqL10gPT09IHBsdWdpbklkZW50aWZpZXIgJiYgZXh0ICE9PSBfY2hhbm5lbENvbnRyb2wgJiYgZXh0ICE9PSBfdGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlUGx1Z2luID0gZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoZVBsdWdpbiAmJiBfY2hhbm5lbENvbnRyb2wpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGUgY2hhbm5lbCBDb250cm9sbGVyXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlUGx1Z2luID0gX2NoYW5uZWxDb250cm9sLmdldENoYW5uZWwocGx1Z2luSWRlbnRpZmllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhlUGx1Z2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhlRXh0ID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luOiB0aGVQbHVnaW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2FbX0RZTl9TRVRfRU5BQkxFRCAvKiBAbWluOnNldEVuYWJsZWQgKi9dID0gZnVuY3Rpb24gKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRQbHVnaW5TdGF0ZSh0aGVQbHVnaW4pW1NUUl9ESVNBQkxFRF0gPSAhZW5hYmxlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2EuaXNFbmFibGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsdWdpblN0YXRlID0gX2dldFBsdWdpblN0YXRlKHRoZVBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXBsdWdpblN0YXRlW19EWU5fVEVBUkRPV04gLyogQG1pbjolMmV0ZWFyZG93biAqL10gJiYgIXBsdWdpblN0YXRlW1NUUl9ESVNBQkxFRF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnJlbW92ZSA9IGZ1bmN0aW9uIChpc0FzeW5jLCByZW1vdmVDYikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXN5bmMgPT09IHZvaWQgMCkgeyBpc0FzeW5jID0gdHJ1ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsdWdpbnNUb1JlbW92ZSA9IFt0aGVQbHVnaW5dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVubG9hZFN0YXRlID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb246IDEgLyogVGVsZW1ldHJ5VW5sb2FkUmVhc29uLlBsdWdpblVubG9hZCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FbX0RZTl9JU19BU1lOQyAvKiBAbWluOmlzQXN5bmMgKi9dID0gaXNBc3luYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlUGx1Z2lucyhwbHVnaW5zVG9SZW1vdmUsIHVubG9hZFN0YXRlLCBmdW5jdGlvbiAocmVtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlLUluaXRpYWxpemUgdGhlIHBsdWdpbiBjaGFpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5pdFBsdWdpbkNoYWluKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogMzIgLyogVGVsZW1ldHJ5VXBkYXRlUmVhc29uLlBsdWdpblJlbW92ZWQgKi8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVkOiBwbHVnaW5zVG9SZW1vdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNiICYmIHJlbW92ZUNiKHJlbW92ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGVFeHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dldFBsdWdpbkNoYWluKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfcGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb3B5IHRoZSBjb2xsZWN0aW9uIG9mIGV4dGVuc2lvbnNcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0ZW5zaW9ucyA9IChfY29yZUV4dGVuc2lvbnMgfHwgW10pLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRHVyaW5nIGFkZCAvIHJlbW92ZSB0aGlzIG1heSBnZXQgY2FsbGVkIGFnYWluLCBzbyBkb24ndCByZWFkZCBpZiBhbHJlYWR5IHByZXNlbnRcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXJySW5kZXhPZihleHRlbnNpb25zLCBfdGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4pID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKF90ZWxlbWV0cnlJbml0aWFsaXplclBsdWdpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIF9wbHVnaW5DaGFpbiA9IGNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4oc29ydFBsdWdpbnMoZXh0ZW5zaW9ucyksIF9jb25maWcsIF9zZWxmKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBfcGx1Z2luQ2hhaW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3JlbW92ZVBsdWdpbnModGhlUGx1Z2lucywgdW5sb2FkU3RhdGUsIHJlbW92ZUNvbXBsZXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhlUGx1Z2lucyAmJiB0aGVQbHVnaW5zW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdW5sb2FkQ2hhaW4gPSBjcmVhdGVUZWxlbWV0cnlQcm94eUNoYWluKHRoZVBsdWdpbnMsIF9jb25maWcsIF9zZWxmKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdW5sb2FkQ3R4ID0gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQodW5sb2FkQ2hhaW4sIF9zZWxmKTtcclxuICAgICAgICAgICAgICAgICAgICB1bmxvYWRDdHhbX0RZTl9PTl9DT01QTEVURSAvKiBAbWluOiUyZW9uQ29tcGxldGUgKi9dKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbW92ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBsaXN0ZWQgY29uZmlnIGV4dGVuc2lvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld0NvbmZpZ0V4dGVuc2lvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfY29uZmlnRXh0ZW5zaW9ucywgZnVuY3Rpb24gKHBsdWdpbiwgaWR4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9pc1BsdWdpblByZXNlbnQocGx1Z2luLCB0aGVQbHVnaW5zKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NvbmZpZ0V4dGVuc2lvbnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10ocGx1Z2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ0V4dGVuc2lvbnMgPSBuZXdDb25maWdFeHRlbnNpb25zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZS1DcmVhdGUgdGhlIGNoYW5uZWwgY29uZmlnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXdDaGFubmVsQ29uZmlnID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfY2hhbm5lbENvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfY2hhbm5lbENvbmZpZywgZnVuY3Rpb24gKHF1ZXVlLCBpZHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3UXVldWUgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKHF1ZXVlLCBmdW5jdGlvbiAoY2hhbm5lbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9pc1BsdWdpblByZXNlbnQoY2hhbm5lbCwgdGhlUGx1Z2lucykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1F1ZXVlW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKGNoYW5uZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDaGFubmVsQ29uZmlnW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKG5ld1F1ZXVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoYW5uZWxDb25maWcgPSBuZXdDaGFubmVsQ29uZmlnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNvbXBsZXRlICYmIHJlbW92ZUNvbXBsZXRlKHJlbW92ZWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHVubG9hZEN0eFtfRFlOX1BST0NFU1NfTkVYVCAvKiBAbWluOiUyZXByb2Nlc3NOZXh0ICovXSh1bmxvYWRTdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDb21wbGV0ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2ZsdXNoSW50ZXJuYWxMb2dzKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0gX3NlbGZbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dID8gX3NlbGZbX0RZTl9MT0dHRVIgLyogQG1pbjolMmVsb2dnZXIgKi9dLnF1ZXVlIDogW107XHJcbiAgICAgICAgICAgICAgICBpZiAocXVldWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKHF1ZXVlLCBmdW5jdGlvbiAobG9nTWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gKF9hID0ge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX05BTUUgLyogQG1pbjpuYW1lICovXSA9IF9pbnRlcm5hbExvZ3NFdmVudE5hbWUgPyBfaW50ZXJuYWxMb2dzRXZlbnROYW1lIDogXCJJbnRlcm5hbE1lc3NhZ2VJZDogXCIgKyBsb2dNZXNzYWdlW19EWU5fTUVTU0FHRV9JRCAvKiBAbWluOiUyZW1lc3NhZ2VJZCAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5pS2V5ID0gZ2V0Q2ZnVmFsdWUoX2NvbmZpZ1tfRFlOX0lOU1RSVU1FTlRBVElPTl9LRVkgLyogQG1pbjolMmVpbnN0cnVtZW50YXRpb25LZXkgKi9dKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRpbWUgPSB0b0lTT1N0cmluZyhuZXcgRGF0ZSgpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmJhc2VUeXBlID0gX0ludGVybmFsTG9nTWVzc2FnZS5kYXRhVHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmJhc2VEYXRhID0geyBtZXNzYWdlOiBsb2dNZXNzYWdlW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLnRyYWNrKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2ZsdXNoQ2hhbm5lbHMoaXNBc3luYywgY2FsbEJhY2ssIHNlbmRSZWFzb24sIGNiVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9jaGFubmVsQ29udHJvbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY2hhbm5lbENvbnRyb2xbX0RZTl9GTFVTSCAvKiBAbWluOiUyZWZsdXNoICovXShpc0FzeW5jLCBjYWxsQmFjaywgc2VuZFJlYXNvbiB8fCA2IC8qIFNlbmRSZXF1ZXN0UmVhc29uLlNka1VubG9hZCAqLywgY2JUaW1lb3V0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0RGVidWdMaXN0ZW5lcigpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaXNhYmxlRGJnRXh0ID0gZ2V0Q2ZnVmFsdWUoX2NvbmZpZy5kaXNhYmxlRGJnRXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlRGJnRXh0ID09PSB0cnVlICYmIF9kZWJ1Z0xpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSBwcmV2aW91c2x5IGxvYWRlZCBkZWJ1ZyBsaXN0ZW5lclxyXG4gICAgICAgICAgICAgICAgICAgIF9ub3RpZmljYXRpb25NYW5hZ2VyW19EWU5fUkVNT1ZFX05PVElGSUNBVElPTl8yIC8qIEBtaW46JTJlcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIgKi9dKF9kZWJ1Z0xpc3RlbmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBfZGVidWdMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoX25vdGlmaWNhdGlvbk1hbmFnZXIgJiYgIV9kZWJ1Z0xpc3RlbmVyICYmIGRpc2FibGVEYmdFeHQgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfZGVidWdMaXN0ZW5lciA9IGdldERlYnVnTGlzdGVuZXIoX2NvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgX25vdGlmaWNhdGlvbk1hbmFnZXJbX0RZTl9BRERfTk9USUZJQ0FUSU9OX0xJUzEgLyogQG1pbjolMmVhZGROb3RpZmljYXRpb25MaXN0ZW5lciAqL10oX2RlYnVnTGlzdGVuZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0UGVyZk1hbmFnZXIoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW5hYmxlUGVyZk1nciA9IGdldENmZ1ZhbHVlKF9jb25maWcuZW5hYmxlUGVyZk1ncik7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVuYWJsZVBlcmZNZ3IgJiYgX2NmZ1BlcmZNYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBjb25maWcgYmFzZWQgcGVyZm9ybWFuY2UgbWFuYWdlclxyXG4gICAgICAgICAgICAgICAgICAgIF9jZmdQZXJmTWFuYWdlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZW5hYmxlUGVyZk1ncikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgcGVyZm9ybWFuY2UgbWFuYWdlciBjcmVhdGlvbiBmdW5jdGlvbiBpZiBub3QgZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgIGdldFNldFZhbHVlKF9jb25maWcsIFNUUl9DUkVBVEVfUEVSRl9NR1IsIF9jcmVhdGVQZXJmTWFuYWdlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luaXRFeHRDb25maWcoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXh0Q29uZmlnID0gZ2V0U2V0VmFsdWUoX2NvbmZpZywgU1RSX0VYVEVOU0lPTl9DT05GSUcsIHt9KTtcclxuICAgICAgICAgICAgICAgIGV4dENvbmZpZy5Ob3RpZmljYXRpb25NYW5hZ2VyID0gX25vdGlmaWNhdGlvbk1hbmFnZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2RvVXBkYXRlKHVwZGF0ZVN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdXBkYXRlQ3R4ID0gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVwZGF0ZUNvbnRleHQoX2dldFBsdWdpbkNoYWluKCksIF9zZWxmKTtcclxuICAgICAgICAgICAgICAgIGlmICghX3NlbGYuX3VwZGF0ZUhvb2sgfHwgX3NlbGYuX3VwZGF0ZUhvb2sodXBkYXRlQ3R4LCB1cGRhdGVTdGF0ZSkgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVDdHhbX0RZTl9QUk9DRVNTX05FWFQgLyogQG1pbjolMmVwcm9jZXNzTmV4dCAqL10odXBkYXRlU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9sb2dPclRocm93RXJyb3IobWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxvZ2dlciA9IF9zZWxmW19EWU5fTE9HR0VSIC8qIEBtaW46JTJlbG9nZ2VyICovXTtcclxuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgbG9nZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNzMgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5QbHVnaW5FeGNlcHRpb24gKi8sIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5pbml0aWFsaXplLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5nZXRUcmFuc21pc3Npb25Db250cm9scy5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUudHJhY2suXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmdldFByb2Nlc3NUZWxDb250ZXh0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5nZXROb3RpZnlNZ3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuZ2V0Q29va2llTWdyLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5zZXRDb29raWVNZ3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmdldFBlcmZNZ3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLnNldFBlcmZNZ3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmV2ZW50Q250LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5wb2xsSW50ZXJuYWxMb2dzLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5zdG9wUG9sbGluZ0ludGVybmFsTG9ncy5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuYWRkVGVsZW1ldHJ5SW5pdGlhbGl6ZXIuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLnVubG9hZC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuZ2V0UGx1Z2luLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5hZGRQbHVnaW4uXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmV2dE5hbWVzcGFjZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuYWRkVW5sb2FkQ2IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLmZsdXNoLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VDb3JlLnByb3RvdHlwZS5nZXRUcmFjZUN0eC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuc2V0VHJhY2VDdHguXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZUNvcmUucHJvdG90eXBlLnJlbGVhc2VRdWV1ZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlQ29yZS5wcm90b3R5cGUuX3VwZGF0ZUhvb2suXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBCYXNlQ29yZS5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gQmFzZUNvcmU7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEJhc2VDb3JlIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUJhc2VDb3JlLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvcmUsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IF9EWU5fQUREX05PVElGSUNBVElPTl9MSVMxLCBfRFlOX0lTX0FTWU5DLCBfRFlOX0lTX0NISUxEX0VWVCwgX0RZTl9MSVNURU5FUlMsIF9EWU5fUFVTSCwgX0RZTl9SRU1PVkVfTk9USUZJQ0FUSU9OXzIsIF9EWU5fU1BMSUNFIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBhcnJGb3JFYWNoLCBhcnJJbmRleE9mIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0VWRU5UU19ESVNDQVJERUQsIFNUUl9FVkVOVFNfU0VORF9SRVFVRVNULCBTVFJfRVZFTlRTX1NFTlQsIFNUUl9QRVJGX0VWRU5UIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuZnVuY3Rpb24gX3J1bkxpc3RlbmVycyhsaXN0ZW5lcnMsIG5hbWUsIGlzQXN5bmMsIGNhbGxiYWNrKSB7XHJcbiAgICBhcnJGb3JFYWNoKGxpc3RlbmVycywgZnVuY3Rpb24gKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgaWYgKGxpc3RlbmVyICYmIGxpc3RlbmVyW25hbWVdKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0FzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbGxiYWNrKGxpc3RlbmVyKTsgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGxpc3RlbmVyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2F0Y2ggZXJyb3JzIHRvIGVuc3VyZSB3ZSBkb24ndCBibG9jayBzZW5kaW5nIHRoZSByZXF1ZXN0c1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuLyoqXHJcbiAqIENsYXNzIHRvIG1hbmFnZSBzZW5kaW5nIG5vdGlmaWNhdGlvbnMgdG8gYWxsIHRoZSBsaXN0ZW5lcnMuXHJcbiAqL1xyXG52YXIgTm90aWZpY2F0aW9uTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIE5vdGlmaWNhdGlvbk1hbmFnZXIoY29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMgPSBbXTtcclxuICAgICAgICB2YXIgcGVyZkV2dHNTZW5kQWxsID0gISEoY29uZmlnIHx8IHt9KS5wZXJmRXZ0c1NlbmRBbGw7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKE5vdGlmaWNhdGlvbk1hbmFnZXIsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FERF9OT1RJRklDQVRJT05fTElTMSAvKiBAbWluOiUyZWFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyICovXSA9IGZ1bmN0aW9uIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYubGlzdGVuZXJzW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKGxpc3RlbmVyKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFJlbW92ZXMgYWxsIGluc3RhbmNlcyBvZiB0aGUgbGlzdGVuZXIuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7SU5vdGlmaWNhdGlvbkxpc3RlbmVyfSBsaXN0ZW5lciAtIEFXVE5vdGlmaWNhdGlvbkxpc3RlbmVyIHRvIHJlbW92ZS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fUkVNT1ZFX05PVElGSUNBVElPTl8yIC8qIEBtaW46JTJlcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIgKi9dID0gZnVuY3Rpb24gKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBhcnJJbmRleE9mKF9zZWxmW19EWU5fTElTVEVORVJTIC8qIEBtaW46JTJlbGlzdGVuZXJzICovXSwgbGlzdGVuZXIpO1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi5saXN0ZW5lcnNbX0RZTl9TUExJQ0UgLyogQG1pbjolMmVzcGxpY2UgKi9dKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGFyckluZGV4T2YoX3NlbGZbX0RZTl9MSVNURU5FUlMgLyogQG1pbjolMmVsaXN0ZW5lcnMgKi9dLCBsaXN0ZW5lcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBOb3RpZmljYXRpb24gZm9yIGV2ZW50cyBzZW50LlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge0lUZWxlbWV0cnlJdGVtW119IGV2ZW50cyAtIFRoZSBhcnJheSBvZiBldmVudHMgdGhhdCBoYXZlIGJlZW4gc2VudC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmW1NUUl9FVkVOVFNfU0VOVCAvKiBAbWluOiUyZWV2ZW50c1NlbnQgKi9dID0gZnVuY3Rpb24gKGV2ZW50cykge1xyXG4gICAgICAgICAgICAgICAgX3J1bkxpc3RlbmVycyhfc2VsZltfRFlOX0xJU1RFTkVSUyAvKiBAbWluOiUyZWxpc3RlbmVycyAqL10sIFNUUl9FVkVOVFNfU0VOVCwgdHJ1ZSwgZnVuY3Rpb24gKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJbU1RSX0VWRU5UU19TRU5UIC8qIEBtaW46JTJlZXZlbnRzU2VudCAqL10oZXZlbnRzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogTm90aWZpY2F0aW9uIGZvciBldmVudHMgYmVpbmcgZGlzY2FyZGVkLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge0lUZWxlbWV0cnlJdGVtW119IGV2ZW50cyAtIFRoZSBhcnJheSBvZiBldmVudHMgdGhhdCBoYXZlIGJlZW4gZGlzY2FyZGVkIGJ5IHRoZSBTREsuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSByZWFzb24gICAgICAgICAgIC0gVGhlIHJlYXNvbiBmb3Igd2hpY2ggdGhlIFNESyBkaXNjYXJkZWQgdGhlIGV2ZW50cy4gVGhlIEV2ZW50c0Rpc2NhcmRlZFJlYXNvblxyXG4gICAgICAgICAgICAgKiBjb25zdGFudCBzaG91bGQgYmUgdXNlZCB0byBjaGVjayB0aGUgZGlmZmVyZW50IHZhbHVlcy5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmW1NUUl9FVkVOVFNfRElTQ0FSREVEIC8qIEBtaW46JTJlZXZlbnRzRGlzY2FyZGVkICovXSA9IGZ1bmN0aW9uIChldmVudHMsIHJlYXNvbikge1xyXG4gICAgICAgICAgICAgICAgX3J1bkxpc3RlbmVycyhfc2VsZltfRFlOX0xJU1RFTkVSUyAvKiBAbWluOiUyZWxpc3RlbmVycyAqL10sIFNUUl9FVkVOVFNfRElTQ0FSREVELCB0cnVlLCBmdW5jdGlvbiAobGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcltTVFJfRVZFTlRTX0RJU0NBUkRFRCAvKiBAbWluOiUyZWV2ZW50c0Rpc2NhcmRlZCAqL10oZXZlbnRzLCByZWFzb24pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBbT3B0aW9uYWxdIEEgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGV2ZW50cyBoYXZlIGJlZW4gcmVxdWVzdGVkIHRvIGJlIHNlbnQgdG8gdGhlIHNldmVyLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VuZFJlYXNvbiAtIFRoZSByZWFzb24gd2h5IHRoZSBldmVudCBiYXRjaCBpcyBiZWluZyBzZW50LlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQXN5bmMgICAtIEEgZmxhZyB3aGljaCBpZGVudGlmaWVzIHdoZXRoZXIgdGhlIHJlcXVlc3RzIGFyZSBiZWluZyBzZW50IGluIGFuIGFzeW5jIG9yIHN5bmMgbWFubmVyLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbU1RSX0VWRU5UU19TRU5EX1JFUVVFU1QgLyogQG1pbjolMmVldmVudHNTZW5kUmVxdWVzdCAqL10gPSBmdW5jdGlvbiAoc2VuZFJlYXNvbiwgaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgX3J1bkxpc3RlbmVycyhfc2VsZltfRFlOX0xJU1RFTkVSUyAvKiBAbWluOiUyZWxpc3RlbmVycyAqL10sIFNUUl9FVkVOVFNfU0VORF9SRVFVRVNULCBpc0FzeW5jLCBmdW5jdGlvbiAobGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcltTVFJfRVZFTlRTX1NFTkRfUkVRVUVTVCAvKiBAbWluOiUyZWV2ZW50c1NlbmRSZXF1ZXN0ICovXShzZW5kUmVhc29uLCBpc0FzeW5jKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltTVFJfUEVSRl9FVkVOVCAvKiBAbWluOiUyZXBlcmZFdmVudCAqL10gPSBmdW5jdGlvbiAocGVyZkV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGVyZkV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VuZCBhbGwgZXZlbnRzIG9yIG9ubHkgcGFyZW50IGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwZXJmRXZ0c1NlbmRBbGwgfHwgIXBlcmZFdmVudFtfRFlOX0lTX0NISUxEX0VWVCAvKiBAbWluOiUyZWlzQ2hpbGRFdnQgKi9dKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3J1bkxpc3RlbmVycyhfc2VsZltfRFlOX0xJU1RFTkVSUyAvKiBAbWluOiUyZWxpc3RlbmVycyAqL10sIFNUUl9QRVJGX0VWRU5ULCBmYWxzZSwgZnVuY3Rpb24gKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVyZkV2ZW50W19EWU5fSVNfQVNZTkMgLyogQG1pbjolMmVpc0FzeW5jICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gbGlzdGVuZXJbU1RSX1BFUkZfRVZFTlQgLyogQG1pbjolMmVwZXJmRXZlbnQgKi9dKHBlcmZFdmVudCk7IH0sIDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJbU1RSX1BFUkZfRVZFTlQgLyogQG1pbjolMmVwZXJmRXZlbnQgKi9dKHBlcmZFdmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBOb3RpZmljYXRpb25NYW5hZ2VyLnByb3RvdHlwZS5hZGROb3RpZmljYXRpb25MaXN0ZW5lci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBOb3RpZmljYXRpb25NYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBOb3RpZmljYXRpb25NYW5hZ2VyLnByb3RvdHlwZS5ldmVudHNTZW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIE5vdGlmaWNhdGlvbk1hbmFnZXIucHJvdG90eXBlLmV2ZW50c0Rpc2NhcmRlZC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBOb3RpZmljYXRpb25NYW5hZ2VyLnByb3RvdHlwZS5ldmVudHNTZW5kUmVxdWVzdC5cclxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBJRTggYnVnIHdoZW4gdXNpbmcgZHluYW1pY1Byb3RvKCkgd2l0aCBjbGFzc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhbnlcbiAgICAvLyBub24tZHluYW1pYyBmdW5jdGlvbnMgb3Igc3RhdGljIHByb3BlcnRpZXMvZnVuY3Rpb25zIHdoZW4gdXNpbmcgdWdsaWZ5LWpzIHRvIG1pbmlmeSB0aGUgcmVzdWx0aW5nIGNvZGUuXG4gICAgLy8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiBFUzMgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIuX19pZUR5bj0xO1xuXG4gICAgcmV0dXJuIE5vdGlmaWNhdGlvbk1hbmFnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbk1hbmFnZXIgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Tm90aWZpY2F0aW9uTWFuYWdlci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzRm4gYXMgX19leHRlbmRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5cclxuXHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IF9EWU5fR0VUX05PVElGWV9NR1IsIF9EWU5fSU5JVElBTElaRSwgX0RZTl9OQU1FIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBCYXNlQ29yZSB9IGZyb20gXCIuL0Jhc2VDb3JlXCI7XHJcbmltcG9ydCB7IERpYWdub3N0aWNMb2dnZXIgfSBmcm9tIFwiLi9EaWFnbm9zdGljTG9nZ2VyXCI7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCB0aHJvd0Vycm9yIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgU1RSX0VWRU5UU19ESVNDQVJERUQsIFNUUl9HRVRfUEVSRl9NR1IgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25NYW5hZ2VyIH0gZnJvbSBcIi4vTm90aWZpY2F0aW9uTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBkb1BlcmYgfSBmcm9tIFwiLi9QZXJmTWFuYWdlclwiO1xyXG52YXIgQXBwSW5zaWdodHNDb3JlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKEFwcEluc2lnaHRzQ29yZSwgX3N1cGVyKTtcclxuICAgIGZ1bmN0aW9uIEFwcEluc2lnaHRzQ29yZSgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIGR5bmFtaWNQcm90byhBcHBJbnNpZ2h0c0NvcmUsIF90aGlzLCBmdW5jdGlvbiAoX3NlbGYsIF9iYXNlKSB7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fSU5JVElBTElaRSAvKiBAbWluOiUyZWluaXRpYWxpemUgKi9dID0gZnVuY3Rpb24gKGNvbmZpZywgZXh0ZW5zaW9ucywgbG9nZ2VyLCBub3RpZmljYXRpb25NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICBfYmFzZVtfRFlOX0lOSVRJQUxJWkUgLyogQG1pbjolMmVpbml0aWFsaXplICovXShjb25maWcsIGV4dGVuc2lvbnMsIGxvZ2dlciB8fCBuZXcgRGlhZ25vc3RpY0xvZ2dlcihjb25maWcpLCBub3RpZmljYXRpb25NYW5hZ2VyIHx8IG5ldyBOb3RpZmljYXRpb25NYW5hZ2VyKGNvbmZpZykpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi50cmFjayA9IGZ1bmN0aW9uICh0ZWxlbWV0cnlJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBkb1BlcmYoX3NlbGZbU1RSX0dFVF9QRVJGX01HUiAvKiBAbWluOiUyZWdldFBlcmZNZ3IgKi9dKCksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFwiQXBwSW5zaWdodHNDb3JlOnRyYWNrXCI7IH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVsZW1ldHJ5SXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfbm90aWZ5SW52YWxpZEV2ZW50KHRlbGVtZXRyeUl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKFwiSW52YWxpZCB0ZWxlbWV0cnkgaXRlbVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gYmFzaWMgdmFsaWRhdGlvbiBiZWZvcmUgc2VuZGluZyBpdCB0aHJvdWdoIHRoZSBwaXBlbGluZVxyXG4gICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZVRlbGVtZXRyeUl0ZW0odGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2Jhc2UudHJhY2sodGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBpdGVtOiB0ZWxlbWV0cnlJdGVtIH0pOyB9LCAhKHRlbGVtZXRyeUl0ZW0uc3luYykpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfdmFsaWRhdGVUZWxlbWV0cnlJdGVtKHRlbGVtZXRyeUl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0ZWxlbWV0cnlJdGVtW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9ub3RpZnlJbnZhbGlkRXZlbnQodGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcihcInRlbGVtZXRyeSBuYW1lIHJlcXVpcmVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9ub3RpZnlJbnZhbGlkRXZlbnQodGVsZW1ldHJ5SXRlbSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG1hbmFnZXIgPSBfc2VsZltfRFlOX0dFVF9OT1RJRllfTUdSIC8qIEBtaW46JTJlZ2V0Tm90aWZ5TWdyICovXSgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyW1NUUl9FVkVOVFNfRElTQ0FSREVEIC8qIEBtaW46JTJlZXZlbnRzRGlzY2FyZGVkICovXShbdGVsZW1ldHJ5SXRlbV0sIDIgLyogZUV2ZW50c0Rpc2NhcmRlZFJlYXNvbi5JbnZhbGlkRXZlbnQgKi8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFwcEluc2lnaHRzQ29yZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBcHBJbnNpZ2h0c0NvcmUucHJvdG90eXBlLnRyYWNrLlxyXG4gICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGFuIElFOCBidWcgd2hlbiB1c2luZyBkeW5hbWljUHJvdG8oKSB3aXRoIGNsYXNzZXMgdGhhdCBkb24ndCBoYXZlIGFueVxuICAgIC8vIG5vbi1keW5hbWljIGZ1bmN0aW9ucyBvciBzdGF0aWMgcHJvcGVydGllcy9mdW5jdGlvbnMgd2hlbiB1c2luZyB1Z2xpZnktanMgdG8gbWluaWZ5IHRoZSByZXN1bHRpbmcgY29kZS5cbiAgICAvLyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIEVTMyBzdXBwb3J0IGlzIGRyb3BwZWQuXG4gICAgQXBwSW5zaWdodHNDb3JlLl9faWVEeW49MTtcblxuICAgIHJldHVybiBBcHBJbnNpZ2h0c0NvcmU7XHJcbn0oQmFzZUNvcmUpKTtcclxuZXhwb3J0IHsgQXBwSW5zaWdodHNDb3JlIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwcEluc2lnaHRzQ29yZS5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb3JlLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBzdHJTaGltRnVuY3Rpb24sIHN0clNoaW1Qcm90b3R5cGUgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXNoaW1zXCI7XHJcbmltcG9ydCB7IF9EWU5fQVBQTFksIF9EWU5fTEVOR1RILCBfRFlOX05BTUUsIF9EWU5fUFVTSCwgX0RZTl9TUExJQ0UgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGdldEdsb2JhbEluc3QgfSBmcm9tIFwiLi9FbnZVdGlsc1wiO1xyXG5pbXBvcnQgeyBfZ2V0T2JqUHJvdG8sIGhhc093blByb3BlcnR5IH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxudmFyIGFpSW5zdHJ1bWVudEhvb2tzID0gXCJfYWlIb29rc1wiO1xyXG52YXIgY2JOYW1lcyA9IFtcclxuICAgIFwicmVxXCIsIFwicnNwXCIsIFwiaGtFcnJcIiwgXCJmbkVyclwiXHJcbl07XHJcbi8qKiBAaWdub3JlICovXHJcbmZ1bmN0aW9uIF9hcnJMb29wKGFyciwgZm4pIHtcclxuICAgIGlmIChhcnIpIHtcclxuICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgYXJyW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTsgbHArKykge1xyXG4gICAgICAgICAgICBpZiAoZm4oYXJyW2xwXSwgbHApKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4vKiogQGlnbm9yZSAqL1xyXG5mdW5jdGlvbiBfZG9DYWxsYmFja3MoaG9va3MsIGNhbGxEZXRhaWxzLCBjYkFyZ3MsIGhvb2tDdHgsIHR5cGUpIHtcclxuICAgIGlmICh0eXBlID49IDAgLyogQ2FsbGJhY2tUeXBlLlJlcXVlc3QgKi8gJiYgdHlwZSA8PSAyIC8qIENhbGxiYWNrVHlwZS5Ib29rRXJyb3IgKi8pIHtcclxuICAgICAgICBfYXJyTG9vcChob29rcywgZnVuY3Rpb24gKGhvb2ssIGlkeCkge1xyXG4gICAgICAgICAgICB2YXIgY2JrcyA9IGhvb2suY2JrcztcclxuICAgICAgICAgICAgdmFyIGNiID0gY2Jrc1tjYk5hbWVzW3R5cGVdXTtcclxuICAgICAgICAgICAgaWYgKGNiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHNwZWNpZmljIGhvb2sgY29udGV4dCBpbXBsZW1lbnRhdGlvbiB1c2luZyBhIGxhenkgY3JlYXRpb24gcGF0dGVyblxyXG4gICAgICAgICAgICAgICAgY2FsbERldGFpbHMuY3R4ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjdHggPSBob29rQ3R4W2lkeF0gPSAoaG9va0N0eFtpZHhdIHx8IHt9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3R4O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2JbX0RZTl9BUFBMWSAvKiBAbWluOiUyZWFwcGx5ICovXShjYWxsRGV0YWlscy5pbnN0LCBjYkFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmdFeCA9IGNhbGxEZXRhaWxzLmVycjtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBvcnQgSG9vayBlcnJvciB2aWEgdGhlIGNhbGxiYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBob29rRXJyb3JDYiA9IGNia3NbY2JOYW1lc1syIC8qIENhbGxiYWNrVHlwZS5Ib29rRXJyb3IgKi9dXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvb2tFcnJvckNiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRGV0YWlscy5lcnIgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob29rRXJyb3JDYltfRFlOX0FQUExZIC8qIEBtaW46JTJlYXBwbHkgKi9dKGNhbGxEZXRhaWxzLmluc3QsIGNiQXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IG11Y2ggd2UgY2FuIGRvIGhlcmUgLS0gc3dhbGxvd2luZyB0aGUgZXhjZXB0aW9uIHRvIGF2b2lkIGNyYXNoaW5nIHRoZSBob3N0aW5nIGFwcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIChpZiBhbnkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxEZXRhaWxzLmVyciA9IG9yZ0V4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbi8qKiBAaWdub3JlICovXHJcbmZ1bmN0aW9uIF9jcmVhdGVGdW5jdGlvbkhvb2soYWlIb29rKSB7XHJcbiAgICAvLyBEZWZpbmUgYSB0ZW1wb3JhcnkgbWV0aG9kIHRoYXQgcXVldWVzLXVwIGEgdGhlIHJlYWwgbWV0aG9kIGNhbGxcclxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHZhciBmdW5jVGhpcyA9IHRoaXM7XHJcbiAgICAgICAgLy8gQ2FwdHVyZSB0aGUgb3JpZ2luYWwgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgbWV0aG9kXHJcbiAgICAgICAgdmFyIG9yZ0FyZ3MgPSBhcmd1bWVudHM7XHJcbiAgICAgICAgdmFyIGhvb2tzID0gYWlIb29rLmg7XHJcbiAgICAgICAgdmFyIGZ1bmNBcmdzID0gKF9hID0ge30sXHJcbiAgICAgICAgICAgIF9hW19EWU5fTkFNRSAvKiBAbWluOm5hbWUgKi9dID0gYWlIb29rLm4sXHJcbiAgICAgICAgICAgIF9hLmluc3QgPSBmdW5jVGhpcyxcclxuICAgICAgICAgICAgX2EuY3R4ID0gbnVsbCxcclxuICAgICAgICAgICAgX2Euc2V0ID0gX3JlcGxhY2VBcmcsXHJcbiAgICAgICAgICAgIF9hKTtcclxuICAgICAgICB2YXIgaG9va0N0eCA9IFtdO1xyXG4gICAgICAgIHZhciBjYkFyZ3MgPSBfY3JlYXRlQXJncyhbZnVuY0FyZ3NdLCBvcmdBcmdzKTtcclxuICAgICAgICBmdW5jQXJncy5ldnQgPSBnZXRHbG9iYWxJbnN0KFwiZXZlbnRcIik7XHJcbiAgICAgICAgZnVuY3Rpb24gX2NyZWF0ZUFyZ3ModGFyZ2V0LCB0aGVBcmdzKSB7XHJcbiAgICAgICAgICAgIF9hcnJMb29wKHRoZUFyZ3MsIGZ1bmN0aW9uIChhcmcpIHtcclxuICAgICAgICAgICAgICAgIHRhcmdldFtfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShhcmcpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZnVuY3Rpb24gX3JlcGxhY2VBcmcoaWR4LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBvcmdBcmdzID0gX2NyZWF0ZUFyZ3MoW10sIG9yZ0FyZ3MpO1xyXG4gICAgICAgICAgICBvcmdBcmdzW2lkeF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgY2JBcmdzID0gX2NyZWF0ZUFyZ3MoW2Z1bmNBcmdzXSwgb3JnQXJncyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIENhbGwgdGhlIHByZS1yZXF1ZXN0IGhvb2tzXHJcbiAgICAgICAgX2RvQ2FsbGJhY2tzKGhvb2tzLCBmdW5jQXJncywgY2JBcmdzLCBob29rQ3R4LCAwIC8qIENhbGxiYWNrVHlwZS5SZXF1ZXN0ICovKTtcclxuICAgICAgICAvLyBDYWxsIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3YXMgY2FsbGVkXHJcbiAgICAgICAgdmFyIHRoZUZ1bmMgPSBhaUhvb2suZjtcclxuICAgICAgICBpZiAodGhlRnVuYykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZnVuY0FyZ3MucnNsdCA9IHRoZUZ1bmNbX0RZTl9BUFBMWSAvKiBAbWluOiUyZWFwcGx5ICovXShmdW5jVGhpcywgb3JnQXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVwb3J0IHRoZSByZXF1ZXN0IGNhbGxiYWNrXHJcbiAgICAgICAgICAgICAgICBmdW5jQXJncy5lcnIgPSBlcnI7XHJcbiAgICAgICAgICAgICAgICBfZG9DYWxsYmFja3MoaG9va3MsIGZ1bmNBcmdzLCBjYkFyZ3MsIGhvb2tDdHgsIDMgLyogQ2FsbGJhY2tUeXBlLkZ1bmN0aW9uRXJyb3IgKi8pO1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0aHJvdyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIHNvIGFueW9uZSBsaXN0ZW5pbmcgZm9yIGl0IGNhbiBjYXRjaCB0aGUgZXhjZXB0aW9uXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQ2FsbCB0aGUgcG9zdC1yZXF1ZXN0IGhvb2tzXHJcbiAgICAgICAgX2RvQ2FsbGJhY2tzKGhvb2tzLCBmdW5jQXJncywgY2JBcmdzLCBob29rQ3R4LCAxIC8qIENhbGxiYWNrVHlwZS5SZXNwb25zZSAqLyk7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmNBcmdzLnJzbHQ7XHJcbiAgICB9O1xyXG59XHJcbi8qKiBAaWdub3JlICovXHJcbmZ1bmN0aW9uIF9nZXRPd25lcih0YXJnZXQsIG5hbWUsIGNoZWNrUHJvdG90eXBlKSB7XHJcbiAgICB2YXIgb3duZXIgPSBudWxsO1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh0YXJnZXQsIG5hbWUpKSB7XHJcbiAgICAgICAgICAgIG93bmVyID0gdGFyZ2V0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjaGVja1Byb3RvdHlwZSkge1xyXG4gICAgICAgICAgICBvd25lciA9IF9nZXRPd25lcihfZ2V0T2JqUHJvdG8odGFyZ2V0KSwgbmFtZSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvd25lcjtcclxufVxyXG4vKipcclxuICogSW50ZXJjZXB0IHRoZSBuYW1lZCBwcm90b3R5cGUgZnVuY3Rpb25zIGZvciB0aGUgdGFyZ2V0IGNsYXNzIC8gb2JqZWN0XHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdFxyXG4gKiBAcGFyYW0gZnVuY05hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZVxyXG4gKiBAcGFyYW0gY2FsbGJhY2tzIC0gVGhlIGNhbGxiYWNrcyB0byBjb25maWd1cmUgYW5kIGNhbGwgd2hlbmV2ZXIgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEluc3RydW1lbnRQcm90byh0YXJnZXQsIGZ1bmNOYW1lLCBjYWxsYmFja3MpIHtcclxuICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICByZXR1cm4gSW5zdHJ1bWVudEZ1bmModGFyZ2V0W3N0clNoaW1Qcm90b3R5cGVdLCBmdW5jTmFtZSwgY2FsbGJhY2tzLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vKipcclxuICogSW50ZXJjZXB0IHRoZSBuYW1lZCBwcm90b3R5cGUgZnVuY3Rpb25zIGZvciB0aGUgdGFyZ2V0IGNsYXNzIC8gb2JqZWN0XHJcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdFxyXG4gKiBAcGFyYW0gZnVuY05hbWVzIC0gVGhlIGZ1bmN0aW9uIG5hbWVzIHRvIGludGVyY2VwdCBhbmQgY2FsbFxyXG4gKiBAcGFyYW0gY2FsbGJhY2tzIC0gVGhlIGNhbGxiYWNrcyB0byBjb25maWd1cmUgYW5kIGNhbGwgd2hlbmV2ZXIgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEluc3RydW1lbnRQcm90b3ModGFyZ2V0LCBmdW5jTmFtZXMsIGNhbGxiYWNrcykge1xyXG4gICAgaWYgKHRhcmdldCkge1xyXG4gICAgICAgIHJldHVybiBJbnN0cnVtZW50RnVuY3ModGFyZ2V0W3N0clNoaW1Qcm90b3R5cGVdLCBmdW5jTmFtZXMsIGNhbGxiYWNrcywgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuZnVuY3Rpb24gX2NyZWF0ZUluc3RydW1lbnRIb29rKG93bmVyLCBmdW5jTmFtZSwgZm4sIGNhbGxiYWNrcykge1xyXG4gICAgdmFyIGFpSG9vayA9IGZuICYmIGZuW2FpSW5zdHJ1bWVudEhvb2tzXTtcclxuICAgIGlmICghYWlIb29rKSB7XHJcbiAgICAgICAgLy8gT25seSBob29rIHRoZSBmdW5jdGlvbiBvbmNlXHJcbiAgICAgICAgYWlIb29rID0ge1xyXG4gICAgICAgICAgICBpOiAwLFxyXG4gICAgICAgICAgICBuOiBmdW5jTmFtZSxcclxuICAgICAgICAgICAgZjogZm4sXHJcbiAgICAgICAgICAgIGg6IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBPdmVycmlkZSAoaG9vaykgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uXHJcbiAgICAgICAgdmFyIG5ld0Z1bmMgPSBfY3JlYXRlRnVuY3Rpb25Ib29rKGFpSG9vayk7XHJcbiAgICAgICAgbmV3RnVuY1thaUluc3RydW1lbnRIb29rc10gPSBhaUhvb2s7IC8vIFRhZyBhbmQgc3RvcmUgdGhlIGZ1bmN0aW9uIGhvb2tzXHJcbiAgICAgICAgb3duZXJbZnVuY05hbWVdID0gbmV3RnVuYztcclxuICAgIH1cclxuICAgIHZhciB0aGVIb29rID0ge1xyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlOm9iamVjdC1saXRlcmFsLXNob3J0aGFuZFxyXG4gICAgICAgIGlkOiBhaUhvb2suaSxcclxuICAgICAgICBjYmtzOiBjYWxsYmFja3MsXHJcbiAgICAgICAgcm06IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgLy8gRE8gTk9UIFVzZSAoKSA9PiB7IHNob3J0aGFuZCBmb3IgdGhlIGZ1bmN0aW9uIGFzIHRoZSB0aGlzIGdldHMgcmVwbGFjZWRcclxuICAgICAgICAgICAgLy8gd2l0aCB0aGUgb3V0ZXIgdGhpcyBhbmQgbm90IHRoZSB0aGlzIGZvciB0aGVIb29rIGluc3RhbmNlLlxyXG4gICAgICAgICAgICB2YXIgaWQgPSB0aGlzLmlkO1xyXG4gICAgICAgICAgICBfYXJyTG9vcChhaUhvb2suaCwgZnVuY3Rpb24gKGhvb2ssIGlkeCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGhvb2suaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWlIb29rLmhbX0RZTl9TUExJQ0UgLyogQG1pbjolMmVzcGxpY2UgKi9dKGlkeCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0c2xpbnQ6ZW5hYmxlOm9iamVjdC1saXRlcmFsLXNob3J0aGFuZFxyXG4gICAgfTtcclxuICAgIGFpSG9vay5pKys7XHJcbiAgICBhaUhvb2suaFtfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXSh0aGVIb29rKTtcclxuICAgIHJldHVybiB0aGVIb29rO1xyXG59XHJcbi8qKlxyXG4gKiBJbnRlcmNlcHQgdGhlIG5hbWVkIHByb3RvdHlwZSBmdW5jdGlvbnMgZm9yIHRoZSB0YXJnZXQgY2xhc3MgLyBvYmplY3RcclxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBmdW5jTmFtZSAtIFRoZSBmdW5jdGlvbiBuYW1lXHJcbiAqIEBwYXJhbSBjYWxsYmFja3MgLSBUaGUgY2FsbGJhY2tzIHRvIGNvbmZpZ3VyZSBhbmQgY2FsbCB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXHJcbiAqIEBwYXJhbSBjaGVja1Byb3RvdHlwZSAtIElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGV4aXN0IG9uIHRoZSB0YXJnZXQgc2hvdWxkIGl0IGF0dGVtcHQgdG8gaG9vayB0aGUgcHJvdG90eXBlIGZ1bmN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSW5zdHJ1bWVudEZ1bmModGFyZ2V0LCBmdW5jTmFtZSwgY2FsbGJhY2tzLCBjaGVja1Byb3RvdHlwZSkge1xyXG4gICAgaWYgKGNoZWNrUHJvdG90eXBlID09PSB2b2lkIDApIHsgY2hlY2tQcm90b3R5cGUgPSB0cnVlOyB9XHJcbiAgICBpZiAodGFyZ2V0ICYmIGZ1bmNOYW1lICYmIGNhbGxiYWNrcykge1xyXG4gICAgICAgIHZhciBvd25lciA9IF9nZXRPd25lcih0YXJnZXQsIGZ1bmNOYW1lLCBjaGVja1Byb3RvdHlwZSk7XHJcbiAgICAgICAgaWYgKG93bmVyKSB7XHJcbiAgICAgICAgICAgIHZhciBmbiA9IG93bmVyW2Z1bmNOYW1lXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gc3RyU2hpbUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NyZWF0ZUluc3RydW1lbnRIb29rKG93bmVyLCBmdW5jTmFtZSwgZm4sIGNhbGxiYWNrcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vKipcclxuICogSW50ZXJjZXB0IHRoZSBuYW1lZCBmdW5jdGlvbnMgZm9yIHRoZSB0YXJnZXQgY2xhc3MgLyBvYmplY3RcclxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBmdW5jTmFtZXMgLSBUaGUgZnVuY3Rpb24gbmFtZXMgdG8gaW50ZXJjZXB0IGFuZCBjYWxsXHJcbiAqIEBwYXJhbSBjYWxsYmFja3MgLSBUaGUgY2FsbGJhY2tzIHRvIGNvbmZpZ3VyZSBhbmQgY2FsbCB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXHJcbiAqIEBwYXJhbSBjaGVja1Byb3RvdHlwZSAtIElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGV4aXN0IG9uIHRoZSB0YXJnZXQgc2hvdWxkIGl0IGF0dGVtcHQgdG8gaG9vayB0aGUgcHJvdG90eXBlIGZ1bmN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSW5zdHJ1bWVudEZ1bmNzKHRhcmdldCwgZnVuY05hbWVzLCBjYWxsYmFja3MsIGNoZWNrUHJvdG90eXBlKSB7XHJcbiAgICBpZiAoY2hlY2tQcm90b3R5cGUgPT09IHZvaWQgMCkgeyBjaGVja1Byb3RvdHlwZSA9IHRydWU7IH1cclxuICAgIHZhciBob29rcyA9IG51bGw7XHJcbiAgICBfYXJyTG9vcChmdW5jTmFtZXMsIGZ1bmN0aW9uIChmdW5jTmFtZSkge1xyXG4gICAgICAgIHZhciBob29rID0gSW5zdHJ1bWVudEZ1bmModGFyZ2V0LCBmdW5jTmFtZSwgY2FsbGJhY2tzLCBjaGVja1Byb3RvdHlwZSk7XHJcbiAgICAgICAgaWYgKGhvb2spIHtcclxuICAgICAgICAgICAgaWYgKCFob29rcykge1xyXG4gICAgICAgICAgICAgICAgaG9va3MgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBob29rc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShob29rKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBob29rcztcclxufVxyXG4vKipcclxuICogQWRkIGFuIGluc3RydW1lbnRhdGlvbiBob29rIHRvIHRoZSBwcm92aWRlZCBuYW1lZCBcImV2ZW50XCIgZm9yIHRoZSB0YXJnZXQgY2xhc3MgLyBvYmplY3QsIHRoaXMgZG9lc24ndCBjaGVjayB3aGV0aGVyIHRoZVxyXG4gKiBuYW1lZCBcImV2ZW50XCIgaXMgaW4gZmFjdCBhIGZ1bmN0aW9uIGFuZCBqdXN0IGFzc2lnbnMgdGhlIGluc3RydW1lbnRhdGlvbiBob29rIHRvIHRoZSB0YXJnZXRbZXZ0TmFtZV1cclxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0XHJcbiAqIEBwYXJhbSBldnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XHJcbiAqIEBwYXJhbSBjYWxsYmFja3MgLSBUaGUgY2FsbGJhY2tzIHRvIGNvbmZpZ3VyZSBhbmQgY2FsbCB3aGVuZXZlciB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkXHJcbiAqIEBwYXJhbSBjaGVja1Byb3RvdHlwZSAtIElmIHRoZSBmdW5jdGlvbiBkb2Vzbid0IGV4aXN0IG9uIHRoZSB0YXJnZXQgc2hvdWxkIGl0IGF0dGVtcHQgdG8gaG9vayB0aGUgcHJvdG90eXBlIGZ1bmN0aW9uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gSW5zdHJ1bWVudEV2ZW50KHRhcmdldCwgZXZ0TmFtZSwgY2FsbGJhY2tzLCBjaGVja1Byb3RvdHlwZSkge1xyXG4gICAgaWYgKHRhcmdldCAmJiBldnROYW1lICYmIGNhbGxiYWNrcykge1xyXG4gICAgICAgIHZhciBvd25lciA9IF9nZXRPd25lcih0YXJnZXQsIGV2dE5hbWUsIGNoZWNrUHJvdG90eXBlKSB8fCB0YXJnZXQ7XHJcbiAgICAgICAgaWYgKG93bmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBfY3JlYXRlSW5zdHJ1bWVudEhvb2sob3duZXIsIGV2dE5hbWUsIG93bmVyW2V2dE5hbWVdLCBjYWxsYmFja3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUluc3RydW1lbnRIb29rcy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIHByb3BlcnR5IHVzZWQgdG8gY2F1c2UgaW50ZXJuYWwgKHJlcG9ydGluZykgcmVxdWVzdHMgdG8gYmUgaWdub3JlZCBmcm9tIHJlcG9ydGluZ1xyXG4gKiBhZGRpdGlvbmFsIHRlbGVtZXRyeSwgdG8gaGFuZGxlIHBvbHlmaWwgaW1wbGVtZW50YXRpb25zIEFMTCB1cmxzIHVzZWQgd2l0aCBhIGRpc2FibGVkIHJlcXVlc3Qgd2lsbFxyXG4gKiBhbHNvIGJlIGlnbm9yZWQgZm9yIGZ1dHVyZSByZXF1ZXN0cyBldmVuIHdoZW4gdGhpcyBwcm9wZXJ0eSBpcyBub3QgcHJvdmlkZWQuXHJcbiAqIFRhZ2dpbmcgYXMgSWdub3JlIGFzIHRoaXMgaXMgYW4gaW50ZXJuYWwgdmFsdWUgYW5kIGlzIG5vdCBleHBlY3RlZCB0byBiZSB1c2VkIG91dHNpZGUgb2YgdGhlIFNES1xyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgdmFyIERpc2FibGVkUHJvcGVydHlOYW1lID0gXCJNaWNyb3NvZnRfQXBwbGljYXRpb25JbnNpZ2h0c19CeXBhc3NBamF4SW5zdHJ1bWVudGF0aW9uXCI7XHJcbmV4cG9ydCB2YXIgU2FtcGxlUmF0ZSA9IFwic2FtcGxlUmF0ZVwiO1xyXG5leHBvcnQgdmFyIFByb2Nlc3NMZWdhY3kgPSBcIlByb2Nlc3NMZWdhY3lcIjtcclxuZXhwb3J0IHZhciBIdHRwTWV0aG9kID0gXCJodHRwLm1ldGhvZFwiO1xyXG5leHBvcnQgdmFyIERFRkFVTFRfQlJFRVpFX0VORFBPSU5UID0gXCJodHRwczovL2RjLnNlcnZpY2VzLnZpc3VhbHN0dWRpby5jb21cIjtcclxuZXhwb3J0IHZhciBERUZBVUxUX0JSRUVaRV9QQVRIID0gXCIvdjIvdHJhY2tcIjtcclxuZXhwb3J0IHZhciBzdHJOb3RTcGVjaWZpZWQgPSBcIm5vdF9zcGVjaWZpZWRcIjtcclxuZXhwb3J0IHZhciBzdHJJa2V5ID0gXCJpS2V5XCI7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbnN0YW50cy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IGlzRnVuY3Rpb24sIGdldERvY3VtZW50IH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEb21FdmVudChldmVudE5hbWUpIHtcclxuICAgIHZhciBldmVudCA9IG51bGw7XHJcbiAgICBpZiAoaXNGdW5jdGlvbihFdmVudCkpIHsgLy8gVXNlIEV2ZW50IGNvbnN0cnVjdG9yIHdoZW4gYXZhaWxhYmxlXHJcbiAgICAgICAgZXZlbnQgPSBuZXcgRXZlbnQoZXZlbnROYW1lKTtcclxuICAgIH1cclxuICAgIGVsc2UgeyAvLyBFdmVudCBoYXMgbm8gY29uc3RydWN0b3IgaW4gSUVcclxuICAgICAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcclxuICAgICAgICBpZiAoZG9jICYmIGRvYy5jcmVhdGVFdmVudCkge1xyXG4gICAgICAgICAgICBldmVudCA9IGRvYy5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xyXG4gICAgICAgICAgICBldmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCB0cnVlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXZlbnQ7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RG9tSGVscGVyRnVuY3MuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG4vLyBAc2tpcC1maWxlLW1pbmlmeVxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyBBVVRPIEdFTkVSQVRFRCBGSUxFOiBUaGlzIGZpbGUgaXMgQXV0byBHZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkLlxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG4vLyBOb3RlOiBET04nVCBFeHBvcnQgdGhlc2UgY29uc3QgZnJvbSB0aGUgcGFja2FnZSBhcyB3ZSBhcmUgc3RpbGwgdGFyZ2V0aW5nIEVTMyB0aGlzIHdpbGwgZXhwb3J0IGEgbXV0YWJsZSB2YXJpYWJsZXMgdGhhdCBzb21lb25lIGNvdWxkIGNoYW5nZSEhIVxyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG5leHBvcnQgdmFyIF9EWU5fU1BMSVQgPSBcInNwbGl0XCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9MRU5HVEggPSBcImxlbmd0aFwiOyAvLyBDb3VudDogNDFcclxuZXhwb3J0IHZhciBfRFlOX1RPX0xPV0VSX0NBU0UgPSBcInRvTG93ZXJDYXNlXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9JTkdFU1RJT05FTkRQT0lOVCA9IFwiaW5nZXN0aW9uZW5kcG9pbnRcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1RPX1NUUklORyA9IFwidG9TdHJpbmdcIjsgLy8gQ291bnQ6IDEyXHJcbmV4cG9ydCB2YXIgX0RZTl9SRU1PVkVfSVRFTSA9IFwicmVtb3ZlSXRlbVwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fTkFNRSA9IFwibmFtZVwiOyAvLyBDb3VudDogMTFcclxuZXhwb3J0IHZhciBfRFlOX01FU1NBR0UgPSBcIm1lc3NhZ2VcIjsgLy8gQ291bnQ6IDEwXHJcbmV4cG9ydCB2YXIgX0RZTl9DT1VOVCA9IFwiY291bnRcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX1BSRV9UUklHR0VSX0RBVEUgPSBcInByZVRyaWdnZXJEYXRlXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFRCA9IFwiZGlzYWJsZWRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0RBVEUgPSBcImRhdGVcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9VVENEQVRFID0gXCJnZXRVVENEYXRlXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9NQVhfVElNRVNfUEVSX01PTlRIID0gXCJtYXhUaW1lc1Blck1vbnRoXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9TVFJJTkdJRlkgPSBcInN0cmluZ2lmeVwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fUEFUSE5BTUUgPSBcInBhdGhuYW1lXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9DT1JSRUxBVElPTl9IRUFERVJfRTAgPSBcImNvcnJlbGF0aW9uSGVhZGVyRXhjbHVkZVBhdHRlcm5zXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9JTkRFWF9PRiA9IFwiaW5kZXhPZlwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fRVhURU5TSU9OX0NPTkZJRyA9IFwiZXh0ZW5zaW9uQ29uZmlnXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9FWENFUFRJT05TID0gXCJleGNlcHRpb25zXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9QQVJTRURfU1RBQ0sgPSBcInBhcnNlZFN0YWNrXCI7IC8vIENvdW50OiAxMVxyXG5leHBvcnQgdmFyIF9EWU5fUFJPUEVSVElFUyA9IFwicHJvcGVydGllc1wiOyAvLyBDb3VudDogOVxyXG5leHBvcnQgdmFyIF9EWU5fTUVBU1VSRU1FTlRTID0gXCJtZWFzdXJlbWVudHNcIjsgLy8gQ291bnQ6IDlcclxuZXhwb3J0IHZhciBfRFlOX1NJWkVfSU5fQllURVMgPSBcInNpemVJbkJ5dGVzXCI7IC8vIENvdW50OiAxMVxyXG5leHBvcnQgdmFyIF9EWU5fVFlQRV9OQU1FID0gXCJ0eXBlTmFtZVwiOyAvLyBDb3VudDogMTFcclxuZXhwb3J0IHZhciBfRFlOX1NFVkVSSVRZX0xFVkVMID0gXCJzZXZlcml0eUxldmVsXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9QUk9CTEVNX0dST1VQID0gXCJwcm9ibGVtR3JvdXBcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0lTX01BTlVBTCA9IFwiaXNNYW51YWxcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX19DUkVBVEVfRlJPTV9JTlRFUkZBMSA9IFwiQ3JlYXRlRnJvbUludGVyZmFjZVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fSEFTX0ZVTExfU1RBQ0sgPSBcImhhc0Z1bGxTdGFja1wiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fTEVWRUwgPSBcImxldmVsXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9NRVRIT0QgPSBcIm1ldGhvZFwiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fQVNTRU1CTFkgPSBcImFzc2VtYmx5XCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9GSUxFX05BTUUgPSBcImZpbGVOYW1lXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9MSU5FID0gXCJsaW5lXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9EVVJBVElPTiA9IFwiZHVyYXRpb25cIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1JFQ0VJVkVEX1JFU1BPTlNFID0gXCJyZWNlaXZlZFJlc3BvbnNlXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9TVUJTVFJJTkcgPSBcInN1YnN0cmluZ1wiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fU0FOSVRJWkVfS0VZX0FORF9BREQyID0gXCJzYW5pdGl6ZUtleUFuZEFkZFVuaXF1ZW5lc3NcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX1NBTklUSVpFX0VYQ0VQVElPTiA9IFwic2FuaXRpemVFeGNlcHRpb25cIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX1NBTklUSVpFX1BST1BFUlRJRVMgPSBcInNhbml0aXplUHJvcGVydGllc1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fU0FOSVRJWkVfTUVBU1VSRU1FTlQzID0gXCJzYW5pdGl6ZU1lYXN1cmVtZW50c1wiOyAvLyBDb3VudDogMlxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1fX0R5bmFtaWNDb25zdGFudHMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBhcnJGb3JFYWNoLCBpc1N0cmluZyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBfRFlOX0xFTkdUSCwgX0RZTl9UT19MT1dFUl9DQVNFIH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBzdHJFbXB0eSA9IFwiXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0Jvb2xPckRlZmF1bHQoc3RyLCBkZWZhdWx0VmFsdWUpIHtcclxuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSBmYWxzZTsgfVxyXG4gICAgaWYgKHN0ciA9PT0gdW5kZWZpbmVkIHx8IHN0ciA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyLnRvU3RyaW5nKClbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCkgPT09IFwidHJ1ZVwiO1xyXG59XHJcbi8qKlxyXG4gKiBDb252ZXJ0IG1zIHRvIGMjIHRpbWUgc3BhbiBmb3JtYXRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBtc1RvVGltZVNwYW4odG90YWxtcykge1xyXG4gICAgaWYgKGlzTmFOKHRvdGFsbXMpIHx8IHRvdGFsbXMgPCAwKSB7XHJcbiAgICAgICAgdG90YWxtcyA9IDA7XHJcbiAgICB9XHJcbiAgICB0b3RhbG1zID0gTWF0aC5yb3VuZCh0b3RhbG1zKTtcclxuICAgIHZhciBtcyA9IHN0ckVtcHR5ICsgdG90YWxtcyAlIDEwMDA7XHJcbiAgICB2YXIgc2VjID0gc3RyRW1wdHkgKyBNYXRoLmZsb29yKHRvdGFsbXMgLyAxMDAwKSAlIDYwO1xyXG4gICAgdmFyIG1pbiA9IHN0ckVtcHR5ICsgTWF0aC5mbG9vcih0b3RhbG1zIC8gKDEwMDAgKiA2MCkpICUgNjA7XHJcbiAgICB2YXIgaG91ciA9IHN0ckVtcHR5ICsgTWF0aC5mbG9vcih0b3RhbG1zIC8gKDEwMDAgKiA2MCAqIDYwKSkgJSAyNDtcclxuICAgIHZhciBkYXlzID0gTWF0aC5mbG9vcih0b3RhbG1zIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpKTtcclxuICAgIG1zID0gbXNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAxID8gXCIwMFwiICsgbXMgOiBtc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPT09IDIgPyBcIjBcIiArIG1zIDogbXM7XHJcbiAgICBzZWMgPSBzZWNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dIDwgMiA/IFwiMFwiICsgc2VjIDogc2VjO1xyXG4gICAgbWluID0gbWluW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA8IDIgPyBcIjBcIiArIG1pbiA6IG1pbjtcclxuICAgIGhvdXIgPSBob3VyW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA8IDIgPyBcIjBcIiArIGhvdXIgOiBob3VyO1xyXG4gICAgcmV0dXJuIChkYXlzID4gMCA/IGRheXMgKyBcIi5cIiA6IHN0ckVtcHR5KSArIGhvdXIgKyBcIjpcIiArIG1pbiArIFwiOlwiICsgc2VjICsgXCIuXCIgKyBtcztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQnlOYW1lKGV4dGVuc2lvbnMsIGlkZW50aWZpZXIpIHtcclxuICAgIHZhciBleHRlbnNpb24gPSBudWxsO1xyXG4gICAgYXJyRm9yRWFjaChleHRlbnNpb25zLCBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICBpZiAodmFsdWUuaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xyXG4gICAgICAgICAgICBleHRlbnNpb24gPSB2YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGV4dGVuc2lvbjtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gaXNDcm9zc09yaWdpbkVycm9yKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvcikge1xyXG4gICAgcmV0dXJuICFlcnJvciAmJiBpc1N0cmluZyhtZXNzYWdlKSAmJiAobWVzc2FnZSA9PT0gXCJTY3JpcHQgZXJyb3IuXCIgfHwgbWVzc2FnZSA9PT0gXCJTY3JpcHQgZXJyb3JcIik7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGVscGVyRnVuY3MuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBjcmVhdGVWYWx1ZU1hcCB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5leHBvcnQgdmFyIFJlcXVlc3RIZWFkZXJzID0gY3JlYXRlVmFsdWVNYXAoe1xyXG4gICAgcmVxdWVzdENvbnRleHRIZWFkZXI6IFswIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlciAqLywgXCJSZXF1ZXN0LUNvbnRleHRcIl0sXHJcbiAgICByZXF1ZXN0Q29udGV4dFRhcmdldEtleTogWzEgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0VGFyZ2V0S2V5ICovLCBcImFwcElkXCJdLFxyXG4gICAgcmVxdWVzdENvbnRleHRBcHBJZEZvcm1hdDogWzIgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0QXBwSWRGb3JtYXQgKi8sIFwiYXBwSWQ9Y2lkLXYxOlwiXSxcclxuICAgIHJlcXVlc3RJZEhlYWRlcjogWzMgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RJZEhlYWRlciAqLywgXCJSZXF1ZXN0LUlkXCJdLFxyXG4gICAgdHJhY2VQYXJlbnRIZWFkZXI6IFs0IC8qIGVSZXF1ZXN0SGVhZGVycy50cmFjZVBhcmVudEhlYWRlciAqLywgXCJ0cmFjZXBhcmVudFwiXSxcclxuICAgIHRyYWNlU3RhdGVIZWFkZXI6IFs1IC8qIGVSZXF1ZXN0SGVhZGVycy50cmFjZVN0YXRlSGVhZGVyICovLCBcInRyYWNlc3RhdGVcIl0sXHJcbiAgICBzZGtDb250ZXh0SGVhZGVyOiBbNiAvKiBlUmVxdWVzdEhlYWRlcnMuc2RrQ29udGV4dEhlYWRlciAqLywgXCJTZGstQ29udGV4dFwiXSxcclxuICAgIHNka0NvbnRleHRIZWFkZXJBcHBJZFJlcXVlc3Q6IFs3IC8qIGVSZXF1ZXN0SGVhZGVycy5zZGtDb250ZXh0SGVhZGVyQXBwSWRSZXF1ZXN0ICovLCBcImFwcElkXCJdLFxyXG4gICAgcmVxdWVzdENvbnRleHRIZWFkZXJMb3dlckNhc2U6IFs4IC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlckxvd2VyQ2FzZSAqLywgXCJyZXF1ZXN0LWNvbnRleHRcIl1cclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVJlcXVlc3RSZXNwb25zZUhlYWRlcnMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBjcmVhdGVFbnVtU3R5bGUgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuZXhwb3J0IHZhciBTdG9yYWdlVHlwZSA9IGNyZWF0ZUVudW1TdHlsZSh7XHJcbiAgICBMb2NhbFN0b3JhZ2U6IDAgLyogZVN0b3JhZ2VUeXBlLkxvY2FsU3RvcmFnZSAqLyxcclxuICAgIFNlc3Npb25TdG9yYWdlOiAxIC8qIGVTdG9yYWdlVHlwZS5TZXNzaW9uU3RvcmFnZSAqL1xyXG59KTtcclxuZXhwb3J0IHZhciBEaXN0cmlidXRlZFRyYWNpbmdNb2RlcyA9IGNyZWF0ZUVudW1TdHlsZSh7XHJcbiAgICBBSTogMCAvKiBlRGlzdHJpYnV0ZWRUcmFjaW5nTW9kZXMuQUkgKi8sXHJcbiAgICBBSV9BTkRfVzNDOiAxIC8qIGVEaXN0cmlidXRlZFRyYWNpbmdNb2Rlcy5BSV9BTkRfVzNDICovLFxyXG4gICAgVzNDOiAyIC8qIGVEaXN0cmlidXRlZFRyYWNpbmdNb2Rlcy5XM0MgKi9cclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudW1zLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwsIGR1bXBPYmosIGdldEV4Y2VwdGlvbk5hbWUsIGdldEdsb2JhbCwgZ2V0R2xvYmFsSW5zdCwgaXNOdWxsT3JVbmRlZmluZWQsIG9iakZvckVhY2hLZXkgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVR5cGUgfSBmcm9tIFwiLi9FbnVtc1wiO1xyXG5pbXBvcnQgeyBfRFlOX1JFTU9WRV9JVEVNLCBfRFlOX1RPX1NUUklORyB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG52YXIgX2NhblVzZUxvY2FsU3RvcmFnZSA9IHVuZGVmaW5lZDtcclxudmFyIF9jYW5Vc2VTZXNzaW9uU3RvcmFnZSA9IHVuZGVmaW5lZDtcclxuLyoqXHJcbiAqIEdldHMgdGhlIGxvY2FsU3RvcmFnZSBvYmplY3QgaWYgYXZhaWxhYmxlXHJcbiAqIEByZXR1cm4ge1N0b3JhZ2V9IC0gUmV0dXJucyB0aGUgc3RvcmFnZSBvYmplY3QgaWYgYXZhaWxhYmxlIGVsc2UgcmV0dXJucyBudWxsXHJcbiAqL1xyXG5mdW5jdGlvbiBfZ2V0TG9jYWxTdG9yYWdlT2JqZWN0KCkge1xyXG4gICAgaWYgKHV0bENhblVzZUxvY2FsU3RvcmFnZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIF9nZXRWZXJpZmllZFN0b3JhZ2VPYmplY3QoU3RvcmFnZVR5cGUuTG9jYWxTdG9yYWdlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBUZXN0cyBzdG9yYWdlIG9iamVjdCAobG9jYWxTdG9yYWdlIG9yIHNlc3Npb25TdG9yYWdlKSB0byB2ZXJpZnkgdGhhdCBpdCBpcyB1c2FibGVcclxuICogTW9yZSBkZXRhaWxzIGhlcmU6IGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9sb2NhbHN0b3JhZ2UtcGF0dGVyblxyXG4gKiBAcGFyYW0gc3RvcmFnZVR5cGUgVHlwZSBvZiBzdG9yYWdlXHJcbiAqIEByZXR1cm4ge1N0b3JhZ2V9IFJldHVybnMgc3RvcmFnZSBvYmplY3QgdmVyaWZpZWQgdGhhdCBpdCBpcyB1c2FibGVcclxuICovXHJcbmZ1bmN0aW9uIF9nZXRWZXJpZmllZFN0b3JhZ2VPYmplY3Qoc3RvcmFnZVR5cGUpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGdldEdsb2JhbCgpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHVpZCA9IChuZXcgRGF0ZSlbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKTtcclxuICAgICAgICB2YXIgc3RvcmFnZSA9IGdldEdsb2JhbEluc3Qoc3RvcmFnZVR5cGUgPT09IFN0b3JhZ2VUeXBlLkxvY2FsU3RvcmFnZSA/IFwibG9jYWxTdG9yYWdlXCIgOiBcInNlc3Npb25TdG9yYWdlXCIpO1xyXG4gICAgICAgIHN0b3JhZ2Uuc2V0SXRlbSh1aWQsIHVpZCk7XHJcbiAgICAgICAgdmFyIGZhaWwgPSBzdG9yYWdlLmdldEl0ZW0odWlkKSAhPT0gdWlkO1xyXG4gICAgICAgIHN0b3JhZ2VbX0RZTl9SRU1PVkVfSVRFTSAvKiBAbWluOiUyZXJlbW92ZUl0ZW0gKi9dKHVpZCk7XHJcbiAgICAgICAgaWYgKCFmYWlsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleGNlcHRpb24pIHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBzZXNzaW9uU3RvcmFnZSBvYmplY3QgaWYgYXZhaWxhYmxlXHJcbiAqIEByZXR1cm4ge1N0b3JhZ2V9IC0gUmV0dXJucyB0aGUgc3RvcmFnZSBvYmplY3QgaWYgYXZhaWxhYmxlIGVsc2UgcmV0dXJucyBudWxsXHJcbiAqL1xyXG5mdW5jdGlvbiBfZ2V0U2Vzc2lvblN0b3JhZ2VPYmplY3QoKSB7XHJcbiAgICBpZiAodXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UoKSkge1xyXG4gICAgICAgIHJldHVybiBfZ2V0VmVyaWZpZWRTdG9yYWdlT2JqZWN0KFN0b3JhZ2VUeXBlLlNlc3Npb25TdG9yYWdlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbi8qKlxyXG4gKiBEaXNhYmxlcyB0aGUgZ2xvYmFsIFNESyB1c2FnZSBvZiBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UgaWYgYXZhaWxhYmxlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXRsRGlzYWJsZVN0b3JhZ2UoKSB7XHJcbiAgICBfY2FuVXNlTG9jYWxTdG9yYWdlID0gZmFsc2U7XHJcbiAgICBfY2FuVXNlU2Vzc2lvblN0b3JhZ2UgPSBmYWxzZTtcclxufVxyXG4vKipcclxuICogUmUtZW5hYmxlcyB0aGUgZ2xvYmFsIFNESyB1c2FnZSBvZiBsb2NhbCBvciBzZXNzaW9uIHN0b3JhZ2UgaWYgYXZhaWxhYmxlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdXRsRW5hYmxlU3RvcmFnZSgpIHtcclxuICAgIF9jYW5Vc2VMb2NhbFN0b3JhZ2UgPSB1dGxDYW5Vc2VMb2NhbFN0b3JhZ2UodHJ1ZSk7XHJcbiAgICBfY2FuVXNlU2Vzc2lvblN0b3JhZ2UgPSB1dGxDYW5Vc2VTZXNzaW9uU3RvcmFnZSh0cnVlKTtcclxufVxyXG4vKipcclxuICogUmV0dXJucyB3aGV0aGVyIExvY2FsU3RvcmFnZSBjYW4gYmUgdXNlZCwgaWYgdGhlIHJlc2V0IHBhcmFtZXRlciBpcyBwYXNzZWQgYSB0cnVlIHRoaXMgd2lsbCBvdmVycmlkZVxyXG4gKiBhbnkgcHJldmlvdXMgZGlzYWJsZSBjYWxscy5cclxuICogQHBhcmFtIHJlc2V0IC0gU2hvdWxkIHRoZSB1c2FnZSBiZSByZXNldCBhbmQgZGV0ZXJtaW5lZCBvbmx5IGJhc2VkIG9uIHdoZXRoZXIgTG9jYWxTdG9yYWdlIGlzIGF2YWlsYWJsZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHV0bENhblVzZUxvY2FsU3RvcmFnZShyZXNldCkge1xyXG4gICAgaWYgKHJlc2V0IHx8IF9jYW5Vc2VMb2NhbFN0b3JhZ2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIF9jYW5Vc2VMb2NhbFN0b3JhZ2UgPSAhIV9nZXRWZXJpZmllZFN0b3JhZ2VPYmplY3QoU3RvcmFnZVR5cGUuTG9jYWxTdG9yYWdlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBfY2FuVXNlTG9jYWxTdG9yYWdlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1dGxHZXRMb2NhbFN0b3JhZ2UobG9nZ2VyLCBuYW1lKSB7XHJcbiAgICB2YXIgc3RvcmFnZSA9IF9nZXRMb2NhbFN0b3JhZ2VPYmplY3QoKTtcclxuICAgIGlmIChzdG9yYWdlICE9PSBudWxsKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIHN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgX2NhblVzZUxvY2FsU3RvcmFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAxIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQnJvd3NlckNhbm5vdFJlYWRMb2NhbFN0b3JhZ2UgKi8sIFwiQnJvd3NlciBmYWlsZWQgcmVhZCBvZiBsb2NhbCBzdG9yYWdlLiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1dGxTZXRMb2NhbFN0b3JhZ2UobG9nZ2VyLCBuYW1lLCBkYXRhKSB7XHJcbiAgICB2YXIgc3RvcmFnZSA9IF9nZXRMb2NhbFN0b3JhZ2VPYmplY3QoKTtcclxuICAgIGlmIChzdG9yYWdlICE9PSBudWxsKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RvcmFnZS5zZXRJdGVtKG5hbWUsIGRhdGEpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgX2NhblVzZUxvY2FsU3RvcmFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAzIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQnJvd3NlckNhbm5vdFdyaXRlTG9jYWxTdG9yYWdlICovLCBcIkJyb3dzZXIgZmFpbGVkIHdyaXRlIHRvIGxvY2FsIHN0b3JhZ2UuIFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1dGxSZW1vdmVTdG9yYWdlKGxvZ2dlciwgbmFtZSkge1xyXG4gICAgdmFyIHN0b3JhZ2UgPSBfZ2V0TG9jYWxTdG9yYWdlT2JqZWN0KCk7XHJcbiAgICBpZiAoc3RvcmFnZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN0b3JhZ2VbX0RZTl9SRU1PVkVfSVRFTSAvKiBAbWluOiUyZXJlbW92ZUl0ZW0gKi9dKG5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgX2NhblVzZUxvY2FsU3RvcmFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA1IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQnJvd3NlckZhaWxlZFJlbW92YWxGcm9tTG9jYWxTdG9yYWdlICovLCBcIkJyb3dzZXIgZmFpbGVkIHJlbW92YWwgb2YgbG9jYWwgc3RvcmFnZSBpdGVtLiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gdXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UocmVzZXQpIHtcclxuICAgIGlmIChyZXNldCB8fCBfY2FuVXNlU2Vzc2lvblN0b3JhZ2UgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIF9jYW5Vc2VTZXNzaW9uU3RvcmFnZSA9ICEhX2dldFZlcmlmaWVkU3RvcmFnZU9iamVjdChTdG9yYWdlVHlwZS5TZXNzaW9uU3RvcmFnZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX2NhblVzZVNlc3Npb25TdG9yYWdlO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1dGxHZXRTZXNzaW9uU3RvcmFnZUtleXMoKSB7XHJcbiAgICB2YXIga2V5cyA9IFtdO1xyXG4gICAgaWYgKHV0bENhblVzZVNlc3Npb25TdG9yYWdlKCkpIHtcclxuICAgICAgICBvYmpGb3JFYWNoS2V5KGdldEdsb2JhbEluc3QoXCJzZXNzaW9uU3RvcmFnZVwiKSwgZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXlzO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1dGxHZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIG5hbWUpIHtcclxuICAgIHZhciBzdG9yYWdlID0gX2dldFNlc3Npb25TdG9yYWdlT2JqZWN0KCk7XHJcbiAgICBpZiAoc3RvcmFnZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdG9yYWdlLmdldEl0ZW0obmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIF9jYW5Vc2VTZXNzaW9uU3RvcmFnZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAyIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQnJvd3NlckNhbm5vdFJlYWRTZXNzaW9uU3RvcmFnZSAqLywgXCJCcm93c2VyIGZhaWxlZCByZWFkIG9mIHNlc3Npb24gc3RvcmFnZS4gXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gdXRsU2V0U2Vzc2lvblN0b3JhZ2UobG9nZ2VyLCBuYW1lLCBkYXRhKSB7XHJcbiAgICB2YXIgc3RvcmFnZSA9IF9nZXRTZXNzaW9uU3RvcmFnZU9iamVjdCgpO1xyXG4gICAgaWYgKHN0b3JhZ2UgIT09IG51bGwpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0obmFtZSwgZGF0YSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBfY2FuVXNlU2Vzc2lvblN0b3JhZ2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkJyb3dzZXJDYW5ub3RXcml0ZVNlc3Npb25TdG9yYWdlICovLCBcIkJyb3dzZXIgZmFpbGVkIHdyaXRlIHRvIHNlc3Npb24gc3RvcmFnZS4gXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHV0bFJlbW92ZVNlc3Npb25TdG9yYWdlKGxvZ2dlciwgbmFtZSkge1xyXG4gICAgdmFyIHN0b3JhZ2UgPSBfZ2V0U2Vzc2lvblN0b3JhZ2VPYmplY3QoKTtcclxuICAgIGlmIChzdG9yYWdlICE9PSBudWxsKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RvcmFnZVtfRFlOX1JFTU9WRV9JVEVNIC8qIEBtaW46JTJlcmVtb3ZlSXRlbSAqL10obmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBfY2FuVXNlU2Vzc2lvblN0b3JhZ2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNiAvKiBfZUludGVybmFsTWVzc2FnZUlkLkJyb3dzZXJGYWlsZWRSZW1vdmFsRnJvbVNlc3Npb25TdG9yYWdlICovLCBcIkJyb3dzZXIgZmFpbGVkIHJlbW92YWwgb2Ygc2Vzc2lvbiBzdG9yYWdlIGl0ZW0uIFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVN0b3JhZ2VIZWxwZXJGdW5jcy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbnZhciBfYTtcclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwsIGdldEpTT04sIGhhc0pTT04sIGlzT2JqZWN0LCBvYmpGb3JFYWNoS2V5LCBzdHJUcmltIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IF9EWU5fTEVOR1RILCBfRFlOX1NBTklUSVpFX0VYQ0VQVElPTiwgX0RZTl9TQU5JVElaRV9LRVlfQU5EX0FERDIsIF9EWU5fU0FOSVRJWkVfTUVBU1VSRU1FTlQzLCBfRFlOX1NBTklUSVpFX1BST1BFUlRJRVMsIF9EWU5fU1RSSU5HSUZZLCBfRFlOX1NVQlNUUklORywgX0RZTl9UT19TVFJJTkcgfSBmcm9tIFwiLi4vLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRhU2FuaXRpemVLZXlBbmRBZGRVbmlxdWVuZXNzKGxvZ2dlciwga2V5LCBtYXApIHtcclxuICAgIHZhciBvcmlnTGVuZ3RoID0ga2V5W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgIHZhciBmaWVsZCA9IGRhdGFTYW5pdGl6ZUtleShsb2dnZXIsIGtleSk7XHJcbiAgICAvLyB2YWxpZGF0aW9uIHRydW5jYXRlZCB0aGUgbGVuZ3RoLiAgV2UgbmVlZCB0byBhZGQgdW5pcXVlbmVzc1xyXG4gICAgaWYgKGZpZWxkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSAhPT0gb3JpZ0xlbmd0aCkge1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuICAgICAgICB2YXIgdW5pcXVlRmllbGQgPSBmaWVsZDtcclxuICAgICAgICB3aGlsZSAobWFwW3VuaXF1ZUZpZWxkXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICAgICAgdW5pcXVlRmllbGQgPSBmaWVsZFtfRFlOX1NVQlNUUklORyAvKiBAbWluOiUyZXN1YnN0cmluZyAqL10oMCwgMTUwIC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX05BTUVfTEVOR1RIICovIC0gMykgKyBkc1BhZE51bWJlcihpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmllbGQgPSB1bmlxdWVGaWVsZDtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWVsZDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVNhbml0aXplS2V5KGxvZ2dlciwgbmFtZSkge1xyXG4gICAgdmFyIG5hbWVUcnVuYztcclxuICAgIGlmIChuYW1lKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2VcclxuICAgICAgICBuYW1lID0gc3RyVHJpbShuYW1lW19EWU5fVE9fU1RSSU5HIC8qIEBtaW46JTJldG9TdHJpbmcgKi9dKCkpO1xyXG4gICAgICAgIC8vIHRydW5jYXRlIHRoZSBzdHJpbmcgdG8gMTUwIGNoYXJzXHJcbiAgICAgICAgaWYgKG5hbWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMTUwIC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX05BTUVfTEVOR1RIICovKSB7XHJcbiAgICAgICAgICAgIG5hbWVUcnVuYyA9IG5hbWVbX0RZTl9TVUJTVFJJTkcgLyogQG1pbjolMmVzdWJzdHJpbmcgKi9dKDAsIDE1MCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9OQU1FX0xFTkdUSCAqLyk7XHJcbiAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDU3IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuTmFtZVRvb0xvbmcgKi8sIFwibmFtZSBpcyB0b28gbG9uZy4gIEl0IGhhcyBiZWVuIHRydW5jYXRlZCB0byBcIiArIDE1MCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9OQU1FX0xFTkdUSCAqLyArIFwiIGNoYXJhY3RlcnMuXCIsIHsgbmFtZTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmFtZVRydW5jIHx8IG5hbWU7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIHZhbHVlLCBtYXhMZW5ndGgpIHtcclxuICAgIGlmIChtYXhMZW5ndGggPT09IHZvaWQgMCkgeyBtYXhMZW5ndGggPSAxMDI0IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX1NUUklOR19MRU5HVEggKi87IH1cclxuICAgIHZhciB2YWx1ZVRydW5jO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgbWF4TGVuZ3RoID0gbWF4TGVuZ3RoID8gbWF4TGVuZ3RoIDogMTAyNCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9TVFJJTkdfTEVOR1RIICovOyAvLyBpbiBjYXNlIGRlZmF1bHQgcGFyYW1ldGVycyBkb250IHdvcmtcclxuICAgICAgICB2YWx1ZSA9IHN0clRyaW0odmFsdWUpO1xyXG4gICAgICAgIGlmICh2YWx1ZS50b1N0cmluZygpW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IG1heExlbmd0aCkge1xyXG4gICAgICAgICAgICB2YWx1ZVRydW5jID0gdmFsdWVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKVtfRFlOX1NVQlNUUklORyAvKiBAbWluOiUyZXN1YnN0cmluZyAqL10oMCwgbWF4TGVuZ3RoKTtcclxuICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNjEgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5TdHJpbmdWYWx1ZVRvb0xvbmcgKi8sIFwic3RyaW5nIHZhbHVlIGlzIHRvbyBsb25nLiBJdCBoYXMgYmVlbiB0cnVuY2F0ZWQgdG8gXCIgKyBtYXhMZW5ndGggKyBcIiBjaGFyYWN0ZXJzLlwiLCB7IHZhbHVlOiB2YWx1ZSB9LCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVUcnVuYyB8fCB2YWx1ZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVNhbml0aXplVXJsKGxvZ2dlciwgdXJsKSB7XHJcbiAgICByZXR1cm4gZGF0YVNhbml0aXplSW5wdXQobG9nZ2VyLCB1cmwsIDIwNDggLyogRGF0YVNhbml0aXplclZhbHVlcy5NQVhfVVJMX0xFTkdUSCAqLywgNjYgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5VcmxUb29Mb25nICovKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVNhbml0aXplTWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UpIHtcclxuICAgIHZhciBtZXNzYWdlVHJ1bmM7XHJcbiAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChtZXNzYWdlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX01FU1NBR0VfTEVOR1RIICovKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2VUcnVuYyA9IG1lc3NhZ2VbX0RZTl9TVUJTVFJJTkcgLyogQG1pbjolMmVzdWJzdHJpbmcgKi9dKDAsIDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX01FU1NBR0VfTEVOR1RIICovKTtcclxuICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNTYgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5NZXNzYWdlVHJ1bmNhdGVkICovLCBcIm1lc3NhZ2UgaXMgdG9vIGxvbmcsIGl0IGhhcyBiZWVuIHRydW5jYXRlZCB0byBcIiArIDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX01FU1NBR0VfTEVOR1RIICovICsgXCIgY2hhcmFjdGVycy5cIiwgeyBtZXNzYWdlOiBtZXNzYWdlIH0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBtZXNzYWdlVHJ1bmMgfHwgbWVzc2FnZTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVNhbml0aXplRXhjZXB0aW9uKGxvZ2dlciwgZXhjZXB0aW9uKSB7XHJcbiAgICB2YXIgZXhjZXB0aW9uVHJ1bmM7XHJcbiAgICBpZiAoZXhjZXB0aW9uKSB7XHJcbiAgICAgICAgLy8gTWFrZSBzdXJ0ZSBpdHMgYSBzdHJpbmdcclxuICAgICAgICB2YXIgdmFsdWUgPSBcIlwiICsgZXhjZXB0aW9uO1xyXG4gICAgICAgIGlmICh2YWx1ZVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAzMjc2OCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9FWENFUFRJT05fTEVOR1RIICovKSB7XHJcbiAgICAgICAgICAgIGV4Y2VwdGlvblRydW5jID0gdmFsdWVbX0RZTl9TVUJTVFJJTkcgLyogQG1pbjolMmVzdWJzdHJpbmcgKi9dKDAsIDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX0VYQ0VQVElPTl9MRU5HVEggKi8pO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA1MiAvKiBfZUludGVybmFsTWVzc2FnZUlkLkV4Y2VwdGlvblRydW5jYXRlZCAqLywgXCJleGNlcHRpb24gaXMgdG9vIGxvbmcsIGl0IGhhcyBiZWVuIHRydW5jYXRlZCB0byBcIiArIDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX0VYQ0VQVElPTl9MRU5HVEggKi8gKyBcIiBjaGFyYWN0ZXJzLlwiLCB7IGV4Y2VwdGlvbjogZXhjZXB0aW9uIH0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBleGNlcHRpb25UcnVuYyB8fCBleGNlcHRpb247XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMobG9nZ2VyLCBwcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAocHJvcGVydGllcykge1xyXG4gICAgICAgIHZhciB0ZW1wUHJvcHNfMSA9IHt9O1xyXG4gICAgICAgIG9iakZvckVhY2hLZXkocHJvcGVydGllcywgZnVuY3Rpb24gKHByb3AsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkgJiYgaGFzSlNPTigpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTdHJpbmdpZnkgYW55IHBhcnQgQyBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0SlNPTigpW19EWU5fU1RSSU5HSUZZIC8qIEBtaW46JTJlc3RyaW5naWZ5ICovXSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQ5IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQ2Fubm90U2VyaWFsaXplT2JqZWN0Tm9uU2VyaWFsaXphYmxlICovLCBcImN1c3RvbSBwcm9wZXJ0eSBpcyBub3QgdmFsaWRcIiwgeyBleGNlcHRpb246IGUgfSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFsdWUgPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCB2YWx1ZSwgODE5MiAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9QUk9QRVJUWV9MRU5HVEggKi8pO1xyXG4gICAgICAgICAgICBwcm9wID0gZGF0YVNhbml0aXplS2V5QW5kQWRkVW5pcXVlbmVzcyhsb2dnZXIsIHByb3AsIHRlbXBQcm9wc18xKTtcclxuICAgICAgICAgICAgdGVtcFByb3BzXzFbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBwcm9wZXJ0aWVzID0gdGVtcFByb3BzXzE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJvcGVydGllcztcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzKGxvZ2dlciwgbWVhc3VyZW1lbnRzKSB7XHJcbiAgICBpZiAobWVhc3VyZW1lbnRzKSB7XHJcbiAgICAgICAgdmFyIHRlbXBNZWFzdXJlbWVudHNfMSA9IHt9O1xyXG4gICAgICAgIG9iakZvckVhY2hLZXkobWVhc3VyZW1lbnRzLCBmdW5jdGlvbiAobWVhc3VyZSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgbWVhc3VyZSA9IGRhdGFTYW5pdGl6ZUtleUFuZEFkZFVuaXF1ZW5lc3MobG9nZ2VyLCBtZWFzdXJlLCB0ZW1wTWVhc3VyZW1lbnRzXzEpO1xyXG4gICAgICAgICAgICB0ZW1wTWVhc3VyZW1lbnRzXzFbbWVhc3VyZV0gPSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtZWFzdXJlbWVudHMgPSB0ZW1wTWVhc3VyZW1lbnRzXzE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbWVhc3VyZW1lbnRzO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRhU2FuaXRpemVJZChsb2dnZXIsIGlkKSB7XHJcbiAgICByZXR1cm4gaWQgPyBkYXRhU2FuaXRpemVJbnB1dChsb2dnZXIsIGlkLCAxMjggLyogRGF0YVNhbml0aXplclZhbHVlcy5NQVhfSURfTEVOR1RIICovLCA2OSAvKiBfZUludGVybmFsTWVzc2FnZUlkLklkVG9vTG9uZyAqLylbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKSA6IGlkO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRhU2FuaXRpemVJbnB1dChsb2dnZXIsIGlucHV0LCBtYXhMZW5ndGgsIF9tc2dJZCkge1xyXG4gICAgdmFyIGlucHV0VHJ1bmM7XHJcbiAgICBpZiAoaW5wdXQpIHtcclxuICAgICAgICBpbnB1dCA9IHN0clRyaW0oaW5wdXQpO1xyXG4gICAgICAgIGlmIChpbnB1dFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiBtYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgaW5wdXRUcnVuYyA9IGlucHV0W19EWU5fU1VCU1RSSU5HIC8qIEBtaW46JTJlc3Vic3RyaW5nICovXSgwLCBtYXhMZW5ndGgpO1xyXG4gICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCBfbXNnSWQsIFwiaW5wdXQgaXMgdG9vIGxvbmcsIGl0IGhhcyBiZWVuIHRydW5jYXRlZCB0byBcIiArIG1heExlbmd0aCArIFwiIGNoYXJhY3RlcnMuXCIsIHsgZGF0YTogaW5wdXQgfSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlucHV0VHJ1bmMgfHwgaW5wdXQ7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGRzUGFkTnVtYmVyKG51bSkge1xyXG4gICAgdmFyIHMgPSBcIjAwXCIgKyBudW07XHJcbiAgICByZXR1cm4gcy5zdWJzdHIoc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gLSAzKTtcclxufVxyXG4vKipcclxuICogUHJvdmlkZXMgdGhlIERhdGFTYW5pdGl6ZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgcHJldmlvdXMgbmFtZXNwYWNlLlxyXG4gKi9cclxuZXhwb3J0IHZhciBEYXRhU2FuaXRpemVyID0gKF9hID0ge1xyXG4gICAgICAgIE1BWF9OQU1FX0xFTkdUSDogMTUwIC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX05BTUVfTEVOR1RIICovLFxyXG4gICAgICAgIE1BWF9JRF9MRU5HVEg6IDEyOCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9JRF9MRU5HVEggKi8sXHJcbiAgICAgICAgTUFYX1BST1BFUlRZX0xFTkdUSDogODE5MiAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9QUk9QRVJUWV9MRU5HVEggKi8sXHJcbiAgICAgICAgTUFYX1NUUklOR19MRU5HVEg6IDEwMjQgLyogRGF0YVNhbml0aXplclZhbHVlcy5NQVhfU1RSSU5HX0xFTkdUSCAqLyxcclxuICAgICAgICBNQVhfVVJMX0xFTkdUSDogMjA0OCAvKiBEYXRhU2FuaXRpemVyVmFsdWVzLk1BWF9VUkxfTEVOR1RIICovLFxyXG4gICAgICAgIE1BWF9NRVNTQUdFX0xFTkdUSDogMzI3NjggLyogRGF0YVNhbml0aXplclZhbHVlcy5NQVhfTUVTU0FHRV9MRU5HVEggKi8sXHJcbiAgICAgICAgTUFYX0VYQ0VQVElPTl9MRU5HVEg6IDMyNzY4IC8qIERhdGFTYW5pdGl6ZXJWYWx1ZXMuTUFYX0VYQ0VQVElPTl9MRU5HVEggKi9cclxuICAgIH0sXHJcbiAgICBfYVtfRFlOX1NBTklUSVpFX0tFWV9BTkRfQUREMiAvKiBAbWluOnNhbml0aXplS2V5QW5kQWRkVW5pcXVlbmVzcyAqL10gPSBkYXRhU2FuaXRpemVLZXlBbmRBZGRVbmlxdWVuZXNzLFxyXG4gICAgX2Euc2FuaXRpemVLZXkgPSBkYXRhU2FuaXRpemVLZXksXHJcbiAgICBfYS5zYW5pdGl6ZVN0cmluZyA9IGRhdGFTYW5pdGl6ZVN0cmluZyxcclxuICAgIF9hLnNhbml0aXplVXJsID0gZGF0YVNhbml0aXplVXJsLFxyXG4gICAgX2Euc2FuaXRpemVNZXNzYWdlID0gZGF0YVNhbml0aXplTWVzc2FnZSxcclxuICAgIF9hW19EWU5fU0FOSVRJWkVfRVhDRVBUSU9OIC8qIEBtaW46c2FuaXRpemVFeGNlcHRpb24gKi9dID0gZGF0YVNhbml0aXplRXhjZXB0aW9uLFxyXG4gICAgX2FbX0RZTl9TQU5JVElaRV9QUk9QRVJUSUVTIC8qIEBtaW46c2FuaXRpemVQcm9wZXJ0aWVzICovXSA9IGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMsXHJcbiAgICBfYVtfRFlOX1NBTklUSVpFX01FQVNVUkVNRU5UMyAvKiBAbWluOnNhbml0aXplTWVhc3VyZW1lbnRzICovXSA9IGRhdGFTYW5pdGl6ZU1lYXN1cmVtZW50cyxcclxuICAgIF9hLnNhbml0aXplSWQgPSBkYXRhU2FuaXRpemVJZCxcclxuICAgIF9hLnNhbml0aXplSW5wdXQgPSBkYXRhU2FuaXRpemVJbnB1dCxcclxuICAgIF9hLnBhZE51bWJlciA9IGRzUGFkTnVtYmVyLFxyXG4gICAgX2EudHJpbSA9IHN0clRyaW0sXHJcbiAgICBfYSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURhdGFTYW5pdGl6ZXIuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBnZXREb2N1bWVudCwgaXNTdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9MRU5HVEgsIF9EWU5fUEFUSE5BTUUsIF9EWU5fVE9fTE9XRVJfQ0FTRSB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG52YXIgX2RvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKSB8fCB7fTtcclxudmFyIF9odG1sQW5jaG9ySWR4ID0gMDtcclxuLy8gVXNlIGFuIGFycmF5IG9mIHRlbXBvcmFyeSB2YWx1ZXMgYXMgaXQncyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgY2FsbHMgdG8gcGFyc2VVcmwoKSB3aWxsIGJlIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBVUkxzXHJcbi8vIFVzaW5nIGEgY2FjaGUgc2l6ZSBvZiA1IGZvciBub3cgYXMgaXQgY3VycmVudCBkZXB0aCB1c2FnZSBpcyBhdCBsZWFzdCAyLCBzbyBhZGRpbmcgYSBtaW5vciBidWZmZXIgdG8gaGFuZGxlIGZ1dHVyZSB1cGRhdGVzXHJcbnZhciBfaHRtbEFuY2hvckVsZW1lbnQgPSBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbF07XHJcbmV4cG9ydCBmdW5jdGlvbiB1cmxQYXJzZVVybCh1cmwpIHtcclxuICAgIHZhciBhbmNob3JJZHggPSBfaHRtbEFuY2hvcklkeDtcclxuICAgIHZhciBhbmNob3JDYWNoZSA9IF9odG1sQW5jaG9yRWxlbWVudDtcclxuICAgIHZhciB0ZW1wQW5jaG9yID0gYW5jaG9yQ2FjaGVbYW5jaG9ySWR4XTtcclxuICAgIGlmICghX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQpIHtcclxuICAgICAgICAvLyBBbHdheXMgY3JlYXRlIHRoZSB0ZW1wIGluc3RhbmNlIGlmIGNyZWF0ZUVsZW1lbnQgaXMgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgIHRlbXBBbmNob3IgPSB7IGhvc3Q6IHVybFBhcnNlSG9zdCh1cmwsIHRydWUpIH07XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghYW5jaG9yQ2FjaGVbYW5jaG9ySWR4XSkge1xyXG4gICAgICAgIC8vIENyZWF0ZSBhbmQgY2FjaGUgdGhlIHVuYXR0YWNoZWQgYW5jaG9yIGluc3RhbmNlXHJcbiAgICAgICAgdGVtcEFuY2hvciA9IGFuY2hvckNhY2hlW2FuY2hvcklkeF0gPSBfZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XHJcbiAgICB9XHJcbiAgICB0ZW1wQW5jaG9yLmhyZWYgPSB1cmw7XHJcbiAgICAvLyBNb3ZlIHRoZSBjYWNoZSBpbmRleCBmb3J3YXJkXHJcbiAgICBhbmNob3JJZHgrKztcclxuICAgIGlmIChhbmNob3JJZHggPj0gYW5jaG9yQ2FjaGVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dKSB7XHJcbiAgICAgICAgYW5jaG9ySWR4ID0gMDtcclxuICAgIH1cclxuICAgIF9odG1sQW5jaG9ySWR4ID0gYW5jaG9ySWR4O1xyXG4gICAgcmV0dXJuIHRlbXBBbmNob3I7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHVybEdldEFic29sdXRlVXJsKHVybCkge1xyXG4gICAgdmFyIHJlc3VsdDtcclxuICAgIHZhciBhID0gdXJsUGFyc2VVcmwodXJsKTtcclxuICAgIGlmIChhKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gYS5ocmVmO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gdXJsR2V0UGF0aE5hbWUodXJsKSB7XHJcbiAgICB2YXIgcmVzdWx0O1xyXG4gICAgdmFyIGEgPSB1cmxQYXJzZVVybCh1cmwpO1xyXG4gICAgaWYgKGEpIHtcclxuICAgICAgICByZXN1bHQgPSBhW19EWU5fUEFUSE5BTUUgLyogQG1pbjolMmVwYXRobmFtZSAqL107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiB1cmxHZXRDb21wbGV0ZVVybChtZXRob2QsIGFic29sdXRlVXJsKSB7XHJcbiAgICBpZiAobWV0aG9kKSB7XHJcbiAgICAgICAgcmV0dXJuIG1ldGhvZC50b1VwcGVyQ2FzZSgpICsgXCIgXCIgKyBhYnNvbHV0ZVVybDtcclxuICAgIH1cclxuICAgIHJldHVybiBhYnNvbHV0ZVVybDtcclxufVxyXG4vLyBGYWxsYmFjayBtZXRob2QgdG8gZ3JhYiBob3N0IGZyb20gdXJsIGlmIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGVcclxuZXhwb3J0IGZ1bmN0aW9uIHVybFBhcnNlSG9zdCh1cmwsIGluY2xQb3J0KSB7XHJcbiAgICB2YXIgZnVsbEhvc3QgPSB1cmxQYXJzZUZ1bGxIb3N0KHVybCwgaW5jbFBvcnQpIHx8IFwiXCI7XHJcbiAgICBpZiAoZnVsbEhvc3QpIHtcclxuICAgICAgICB2YXIgbWF0Y2ggPSBmdWxsSG9zdC5tYXRjaCgvKHd3d1xcZHswLDV9XFwuKT8oW15cXC86XXsxLDI1Nn0pKDpcXGR7MSwyMH0pPy9pKTtcclxuICAgICAgICBpZiAobWF0Y2ggIT0gbnVsbCAmJiBtYXRjaFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAzICYmIGlzU3RyaW5nKG1hdGNoWzJdKSAmJiBtYXRjaFsyXVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaFsyXSArIChtYXRjaFszXSB8fCBcIlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnVsbEhvc3Q7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIHVybFBhcnNlRnVsbEhvc3QodXJsLCBpbmNsUG9ydCkge1xyXG4gICAgdmFyIHJlc3VsdCA9IG51bGw7XHJcbiAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgdmFyIG1hdGNoID0gdXJsLm1hdGNoKC8oXFx3ezEsMTUwfSk6XFwvXFwvKFteXFwvOl17MSwyNTZ9KSg6XFxkezEsMjB9KT8vaSk7XHJcbiAgICAgICAgaWYgKG1hdGNoICE9IG51bGwgJiYgbWF0Y2hbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMiAmJiBpc1N0cmluZyhtYXRjaFsyXSkgJiYgbWF0Y2hbMl1bX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBtYXRjaFsyXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAoaW5jbFBvcnQgJiYgbWF0Y2hbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHByb3RvY29sID0gKG1hdGNoWzFdIHx8IFwiXCIpW19EWU5fVE9fTE9XRVJfQ0FTRSAvKiBAbWluOiUyZXRvTG93ZXJDYXNlICovXSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHBvcnQgPSBtYXRjaFszXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgLy8gSUUgaW5jbHVkZXMgdGhlIHN0YW5kYXJkIHBvcnQgc28gcGFzcyBpdCBvZmYgaWYgaXQncyB0aGUgc2FtZSBhcyB0aGUgcHJvdG9jb2xcclxuICAgICAgICAgICAgICAgIGlmIChwcm90b2NvbCA9PT0gXCJodHRwXCIgJiYgcG9ydCA9PT0gXCI6ODBcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvdG9jb2wgPT09IFwiaHR0cHNcIiAmJiBwb3J0ID09PSBcIjo0NDNcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHBvcnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVybEhlbHBlckZ1bmNzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgYXJyRm9yRWFjaCwgYXJySW5kZXhPZiwgYXR0YWNoRXZlbnQsIGNhblVzZUNvb2tpZXMgYXMgY29yZUNhblVzZUNvb2tpZXMsIGRhdGVOb3csIGRlbGV0ZUNvb2tpZSBhcyBjb3JlRGVsZXRlQ29va2llLCBkaXNhYmxlQ29va2llcyBhcyBjb3JlRGlzYWJsZUNvb2tpZXMsIGR1bXBPYmosIGdlbmVyYXRlVzNDSWQsIGdldENvb2tpZSBhcyBjb3JlR2V0Q29va2llLCBnZXRFeGNlcHRpb25OYW1lIGFzIGNvcmVHZXRFeGNlcHRpb25OYW1lLCBnZXRJRVZlcnNpb24sIGdldFBlcmZvcm1hbmNlLCBpc0FycmF5LCBpc0JlYWNvbnNTdXBwb3J0ZWQsIGlzRGF0ZSwgaXNFcnJvciwgaXNOdWxsT3JVbmRlZmluZWQsIGlzVmFsaWRTcGFuSWQsIGlzVmFsaWRUcmFjZUlkLCBuZXdJZCwgcmFuZG9tMzIsIHNldENvb2tpZSBhcyBjb3JlU2V0Q29va2llLCBzdHJUcmltLCB0b0lTT1N0cmluZywgdWFEaXNhbGxvd3NTYW1lU2l0ZU5vbmUgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgREVGQVVMVF9CUkVFWkVfRU5EUE9JTlQsIERFRkFVTFRfQlJFRVpFX1BBVEgsIHN0ck5vdFNwZWNpZmllZCB9IGZyb20gXCIuL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVEb21FdmVudCB9IGZyb20gXCIuL0RvbUhlbHBlckZ1bmNzXCI7XHJcbmltcG9ydCB7IGdldEV4dGVuc2lvbkJ5TmFtZSwgaXNDcm9zc09yaWdpbkVycm9yLCBtc1RvVGltZVNwYW4sIHN0cmluZ1RvQm9vbE9yRGVmYXVsdCB9IGZyb20gXCIuL0hlbHBlckZ1bmNzXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RIZWFkZXJzIH0gZnJvbSBcIi4vUmVxdWVzdFJlc3BvbnNlSGVhZGVyc1wiO1xyXG5pbXBvcnQgeyB1dGxDYW5Vc2VMb2NhbFN0b3JhZ2UsIHV0bENhblVzZVNlc3Npb25TdG9yYWdlLCB1dGxEaXNhYmxlU3RvcmFnZSwgdXRsR2V0TG9jYWxTdG9yYWdlLCB1dGxHZXRTZXNzaW9uU3RvcmFnZSwgdXRsR2V0U2Vzc2lvblN0b3JhZ2VLZXlzLCB1dGxSZW1vdmVTZXNzaW9uU3RvcmFnZSwgdXRsUmVtb3ZlU3RvcmFnZSwgdXRsU2V0TG9jYWxTdG9yYWdlLCB1dGxTZXRTZXNzaW9uU3RvcmFnZSB9IGZyb20gXCIuL1N0b3JhZ2VIZWxwZXJGdW5jc1wiO1xyXG5pbXBvcnQgeyBkYXRhU2FuaXRpemVTdHJpbmcgfSBmcm9tIFwiLi9UZWxlbWV0cnkvQ29tbW9uL0RhdGFTYW5pdGl6ZXJcIjtcclxuaW1wb3J0IHsgdXJsR2V0QWJzb2x1dGVVcmwsIHVybEdldENvbXBsZXRlVXJsLCB1cmxHZXRQYXRoTmFtZSwgdXJsUGFyc2VGdWxsSG9zdCwgdXJsUGFyc2VIb3N0LCB1cmxQYXJzZVVybCB9IGZyb20gXCIuL1VybEhlbHBlckZ1bmNzXCI7XHJcbmltcG9ydCB7IF9EWU5fQ09SUkVMQVRJT05fSEVBREVSX0UwLCBfRFlOX0lOREVYX09GLCBfRFlOX0xFTkdUSCwgX0RZTl9OQU1FLCBfRFlOX1BBVEhOQU1FLCBfRFlOX1NQTElULCBfRFlOX1RPX0xPV0VSX0NBU0UgfSBmcm9tIFwiLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuLy8gbGlzdGluZyBvbmx5IG5vbi1nZW8gc3BlY2lmaWMgbG9jYXRpb25zXHJcbnZhciBfaW50ZXJuYWxFbmRwb2ludHMgPSBbXHJcbiAgICBERUZBVUxUX0JSRUVaRV9FTkRQT0lOVCArIERFRkFVTFRfQlJFRVpFX1BBVEgsXHJcbiAgICBcImh0dHBzOi8vYnJlZXplLmFpbW9uLmFwcGxpY2F0aW9uaW5zaWdodHMuaW9cIiArIERFRkFVTFRfQlJFRVpFX1BBVEgsXHJcbiAgICBcImh0dHBzOi8vZGMtaW50LnNlcnZpY2VzLnZpc3VhbHN0dWRpby5jb21cIiArIERFRkFVTFRfQlJFRVpFX1BBVEhcclxuXTtcclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQoZW5kcG9pbnRVcmwpIHtcclxuICAgIHJldHVybiBhcnJJbmRleE9mKF9pbnRlcm5hbEVuZHBvaW50cywgZW5kcG9pbnRVcmxbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCkpICE9PSAtMTtcclxufVxyXG5leHBvcnQgdmFyIFV0aWwgPSB7XHJcbiAgICBOb3RTcGVjaWZpZWQ6IHN0ck5vdFNwZWNpZmllZCxcclxuICAgIGNyZWF0ZURvbUV2ZW50OiBjcmVhdGVEb21FdmVudCxcclxuICAgIGRpc2FibGVTdG9yYWdlOiB1dGxEaXNhYmxlU3RvcmFnZSxcclxuICAgIGlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQ6IGlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQsXHJcbiAgICBjYW5Vc2VMb2NhbFN0b3JhZ2U6IHV0bENhblVzZUxvY2FsU3RvcmFnZSxcclxuICAgIGdldFN0b3JhZ2U6IHV0bEdldExvY2FsU3RvcmFnZSxcclxuICAgIHNldFN0b3JhZ2U6IHV0bFNldExvY2FsU3RvcmFnZSxcclxuICAgIHJlbW92ZVN0b3JhZ2U6IHV0bFJlbW92ZVN0b3JhZ2UsXHJcbiAgICBjYW5Vc2VTZXNzaW9uU3RvcmFnZTogdXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UsXHJcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUtleXM6IHV0bEdldFNlc3Npb25TdG9yYWdlS2V5cyxcclxuICAgIGdldFNlc3Npb25TdG9yYWdlOiB1dGxHZXRTZXNzaW9uU3RvcmFnZSxcclxuICAgIHNldFNlc3Npb25TdG9yYWdlOiB1dGxTZXRTZXNzaW9uU3RvcmFnZSxcclxuICAgIHJlbW92ZVNlc3Npb25TdG9yYWdlOiB1dGxSZW1vdmVTZXNzaW9uU3RvcmFnZSxcclxuICAgIGRpc2FibGVDb29raWVzOiBjb3JlRGlzYWJsZUNvb2tpZXMsXHJcbiAgICBjYW5Vc2VDb29raWVzOiBjb3JlQ2FuVXNlQ29va2llcyxcclxuICAgIGRpc2FsbG93c1NhbWVTaXRlTm9uZTogdWFEaXNhbGxvd3NTYW1lU2l0ZU5vbmUsXHJcbiAgICBzZXRDb29raWU6IGNvcmVTZXRDb29raWUsXHJcbiAgICBzdHJpbmdUb0Jvb2xPckRlZmF1bHQ6IHN0cmluZ1RvQm9vbE9yRGVmYXVsdCxcclxuICAgIGdldENvb2tpZTogY29yZUdldENvb2tpZSxcclxuICAgIGRlbGV0ZUNvb2tpZTogY29yZURlbGV0ZUNvb2tpZSxcclxuICAgIHRyaW06IHN0clRyaW0sXHJcbiAgICBuZXdJZDogbmV3SWQsXHJcbiAgICByYW5kb20zMjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiByYW5kb20zMih0cnVlKTtcclxuICAgIH0sXHJcbiAgICBnZW5lcmF0ZVczQ0lkOiBnZW5lcmF0ZVczQ0lkLFxyXG4gICAgaXNBcnJheTogaXNBcnJheSxcclxuICAgIGlzRXJyb3I6IGlzRXJyb3IsXHJcbiAgICBpc0RhdGU6IGlzRGF0ZSxcclxuICAgIHRvSVNPU3RyaW5nRm9ySUU4OiB0b0lTT1N0cmluZyxcclxuICAgIGdldElFVmVyc2lvbjogZ2V0SUVWZXJzaW9uLFxyXG4gICAgbXNUb1RpbWVTcGFuOiBtc1RvVGltZVNwYW4sXHJcbiAgICBpc0Nyb3NzT3JpZ2luRXJyb3I6IGlzQ3Jvc3NPcmlnaW5FcnJvcixcclxuICAgIGR1bXA6IGR1bXBPYmosXHJcbiAgICBnZXRFeGNlcHRpb25OYW1lOiBjb3JlR2V0RXhjZXB0aW9uTmFtZSxcclxuICAgIGFkZEV2ZW50SGFuZGxlcjogYXR0YWNoRXZlbnQsXHJcbiAgICBJc0JlYWNvbkFwaVN1cHBvcnRlZDogaXNCZWFjb25zU3VwcG9ydGVkLFxyXG4gICAgZ2V0RXh0ZW5zaW9uOiBnZXRFeHRlbnNpb25CeU5hbWVcclxufTtcclxuZXhwb3J0IHZhciBVcmxIZWxwZXIgPSB7XHJcbiAgICBwYXJzZVVybDogdXJsUGFyc2VVcmwsXHJcbiAgICBnZXRBYnNvbHV0ZVVybDogdXJsR2V0QWJzb2x1dGVVcmwsXHJcbiAgICBnZXRQYXRoTmFtZTogdXJsR2V0UGF0aE5hbWUsXHJcbiAgICBnZXRDb21wbGV0ZVVybDogdXJsR2V0Q29tcGxldGVVcmwsXHJcbiAgICBwYXJzZUhvc3Q6IHVybFBhcnNlSG9zdCxcclxuICAgIHBhcnNlRnVsbEhvc3Q6IHVybFBhcnNlRnVsbEhvc3RcclxufTtcclxuZXhwb3J0IHZhciBDb3JyZWxhdGlvbklkSGVscGVyID0ge1xyXG4gICAgY29ycmVsYXRpb25JZFByZWZpeDogXCJjaWQtdjE6XCIsXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhIHJlcXVlc3QgdXJsIGlzIG5vdCBvbiBhIGV4Y2x1ZGVkIGRvbWFpbiBsaXN0IGFuZCBpZiBpdCBpcyBzYWZlIHRvIGFkZCBjb3JyZWxhdGlvbiBoZWFkZXJzLlxyXG4gICAgICogSGVhZGVycyBhcmUgYWx3YXlzIGluY2x1ZGVkIGlmIHRoZSBjdXJyZW50IGRvbWFpbiBtYXRjaGVzIHRoZSByZXF1ZXN0IGRvbWFpbi4gSWYgdGhleSBkbyBub3QgbWF0Y2ggKENPUlMpLFxyXG4gICAgICogdGhleSBhcmUgcmVnZXgtZWQgYWNyb3NzIGNvcnJlbGF0aW9uSGVhZGVyRG9tYWlucyBhbmQgY29ycmVsYXRpb25IZWFkZXJFeGNsdWRlZERvbWFpbnMgdG8gZGV0ZXJtaW5lIGlmIGhlYWRlcnMgYXJlIGluY2x1ZGVkLlxyXG4gICAgICogU29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgZ2l2ZSBpbmZvcm1hdGlvbiBvbiBjdXJyZW50SG9zdCB2aWEgd2luZG93LmxvY2F0aW9uLmhvc3QgKGUuZy4gQ29yZG92YSkuIEluIHRoZXNlIGNhc2VzLCB0aGUgdXNlciBtdXN0XHJcbiAgICAgKiBtYW51YWxseSBzdXBwbHkgZG9tYWlucyB0byBpbmNsdWRlIGNvcnJlbGF0aW9uIGhlYWRlcnMgb24uIEVsc2UsIG5vIGhlYWRlcnMgd2lsbCBiZSBpbmNsdWRlZCBhdCBhbGwuXHJcbiAgICAgKi9cclxuICAgIGNhbkluY2x1ZGVDb3JyZWxhdGlvbkhlYWRlcjogZnVuY3Rpb24gKGNvbmZpZywgcmVxdWVzdFVybCwgY3VycmVudEhvc3QpIHtcclxuICAgICAgICBpZiAoIXJlcXVlc3RVcmwgfHwgKGNvbmZpZyAmJiBjb25maWcuZGlzYWJsZUNvcnJlbGF0aW9uSGVhZGVycykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZ1tfRFlOX0NPUlJFTEFUSU9OX0hFQURFUl9FMCAvKiBAbWluOiUyZWNvcnJlbGF0aW9uSGVhZGVyRXhjbHVkZVBhdHRlcm5zICovXSkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5jb3JyZWxhdGlvbkhlYWRlckV4Y2x1ZGVQYXR0ZXJuc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZ1tfRFlOX0NPUlJFTEFUSU9OX0hFQURFUl9FMCAvKiBAbWluOiUyZWNvcnJlbGF0aW9uSGVhZGVyRXhjbHVkZVBhdHRlcm5zICovXVtpXS50ZXN0KHJlcXVlc3RVcmwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByZXF1ZXN0SG9zdCA9IHVybFBhcnNlVXJsKHJlcXVlc3RVcmwpLmhvc3RbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICAgICAgaWYgKHJlcXVlc3RIb3N0ICYmIChyZXF1ZXN0SG9zdFtfRFlOX0lOREVYX09GIC8qIEBtaW46JTJlaW5kZXhPZiAqL10oXCI6NDQzXCIpICE9PSAtMSB8fCByZXF1ZXN0SG9zdFtfRFlOX0lOREVYX09GIC8qIEBtaW46JTJlaW5kZXhPZiAqL10oXCI6ODBcIikgIT09IC0xKSkge1xyXG4gICAgICAgICAgICAvLyBbQnVnICMxMjYwXSBJRSBjYW4gaW5jbHVkZSB0aGUgcG9ydCBldmVuIGZvciBodHRwIGFuZCBodHRwcyBVUkxzIHNvIGlmIHByZXNlbnRcclxuICAgICAgICAgICAgLy8gdHJ5IGFuZCBwYXJzZSBpdCB0byByZW1vdmUgaWYgaXQgbWF0Y2hlcyB0aGUgZGVmYXVsdCBwcm90b2NvbCBwb3J0XHJcbiAgICAgICAgICAgIHJlcXVlc3RIb3N0ID0gKHVybFBhcnNlRnVsbEhvc3QocmVxdWVzdFVybCwgdHJ1ZSkgfHwgXCJcIilbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgoIWNvbmZpZyB8fCAhY29uZmlnLmVuYWJsZUNvcnNDb3JyZWxhdGlvbikgJiYgKHJlcXVlc3RIb3N0ICYmIHJlcXVlc3RIb3N0ICE9PSBjdXJyZW50SG9zdCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaW5jbHVkZWREb21haW5zID0gY29uZmlnICYmIGNvbmZpZy5jb3JyZWxhdGlvbkhlYWRlckRvbWFpbnM7XHJcbiAgICAgICAgaWYgKGluY2x1ZGVkRG9tYWlucykge1xyXG4gICAgICAgICAgICB2YXIgbWF0Y2hFeGlzdHNfMTtcclxuICAgICAgICAgICAgYXJyRm9yRWFjaChpbmNsdWRlZERvbWFpbnMsIGZ1bmN0aW9uIChkb21haW4pIHtcclxuICAgICAgICAgICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoZG9tYWluLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIi4qXCIpKTtcclxuICAgICAgICAgICAgICAgIG1hdGNoRXhpc3RzXzEgPSBtYXRjaEV4aXN0c18xIHx8IHJlZ2V4LnRlc3QocmVxdWVzdEhvc3QpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFtYXRjaEV4aXN0c18xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGV4Y2x1ZGVkRG9tYWlucyA9IGNvbmZpZyAmJiBjb25maWcuY29ycmVsYXRpb25IZWFkZXJFeGNsdWRlZERvbWFpbnM7XHJcbiAgICAgICAgaWYgKCFleGNsdWRlZERvbWFpbnMgfHwgZXhjbHVkZWREb21haW5zW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9PT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleGNsdWRlZERvbWFpbnNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleGNsdWRlZERvbWFpbnNbaV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIikucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiLipcIikpO1xyXG4gICAgICAgICAgICBpZiAocmVnZXgudGVzdChyZXF1ZXN0SG9zdCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB3ZSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IHRoZSByZXF1ZXN0SG9zdCwgcmVxdWlyZSB0aGUgdXNlciB0byB1c2UgaW5jbHVkZWQvZXhjbHVkZWREb21haW5zLlxyXG4gICAgICAgIC8vIFByZXZpb3VzbHkgd2UgYWx3YXlzIHJldHVybmVkIGZhbHNlIGZvciBhIGZhbHN5IHJlcXVlc3RIb3N0XHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3RIb3N0ICYmIHJlcXVlc3RIb3N0W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDA7XHJcbiAgICB9LFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21iaW5lcyB0YXJnZXQgYXBwSWQgYW5kIHRhcmdldCByb2xlIG5hbWUgZnJvbSByZXNwb25zZSBoZWFkZXIuXHJcbiAgICAgKi9cclxuICAgIGdldENvcnJlbGF0aW9uQ29udGV4dDogZnVuY3Rpb24gKHJlc3BvbnNlSGVhZGVyKSB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlSGVhZGVyKSB7XHJcbiAgICAgICAgICAgIHZhciBjb3JyZWxhdGlvbklkID0gQ29ycmVsYXRpb25JZEhlbHBlci5nZXRDb3JyZWxhdGlvbkNvbnRleHRWYWx1ZShyZXNwb25zZUhlYWRlciwgUmVxdWVzdEhlYWRlcnNbMSAvKiBlUmVxdWVzdEhlYWRlcnMucmVxdWVzdENvbnRleHRUYXJnZXRLZXkgKi9dKTtcclxuICAgICAgICAgICAgaWYgKGNvcnJlbGF0aW9uSWQgJiYgY29ycmVsYXRpb25JZCAhPT0gQ29ycmVsYXRpb25JZEhlbHBlci5jb3JyZWxhdGlvbklkUHJlZml4KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29ycmVsYXRpb25JZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvKipcclxuICAgICAqIEdldHMga2V5IGZyb20gY29ycmVsYXRpb24gcmVzcG9uc2UgaGVhZGVyXHJcbiAgICAgKi9cclxuICAgIGdldENvcnJlbGF0aW9uQ29udGV4dFZhbHVlOiBmdW5jdGlvbiAocmVzcG9uc2VIZWFkZXIsIGtleSkge1xyXG4gICAgICAgIGlmIChyZXNwb25zZUhlYWRlcikge1xyXG4gICAgICAgICAgICB2YXIga2V5VmFsdWVzID0gcmVzcG9uc2VIZWFkZXJbX0RZTl9TUExJVCAvKiBAbWluOiUyZXNwbGl0ICovXShcIixcIik7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5VmFsdWVzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTsgKytpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIga2V5VmFsdWUgPSBrZXlWYWx1ZXNbaV1bX0RZTl9TUExJVCAvKiBAbWluOiUyZXNwbGl0ICovXShcIj1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5VmFsdWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAyICYmIGtleVZhbHVlWzBdID09PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5VmFsdWVbMV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmV4cG9ydCBmdW5jdGlvbiBBamF4SGVscGVyUGFyc2VEZXBlbmRlbmN5UGF0aChsb2dnZXIsIGFic29sdXRlVXJsLCBtZXRob2QsIGNvbW1hbmROYW1lKSB7XHJcbiAgICB2YXIgdGFyZ2V0LCBuYW1lID0gY29tbWFuZE5hbWUsIGRhdGEgPSBjb21tYW5kTmFtZTtcclxuICAgIGlmIChhYnNvbHV0ZVVybCAmJiBhYnNvbHV0ZVVybFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgdmFyIHBhcnNlZFVybCA9IHVybFBhcnNlVXJsKGFic29sdXRlVXJsKTtcclxuICAgICAgICB0YXJnZXQgPSBwYXJzZWRVcmwuaG9zdDtcclxuICAgICAgICBpZiAoIW5hbWUpIHtcclxuICAgICAgICAgICAgaWYgKHBhcnNlZFVybFtfRFlOX1BBVEhOQU1FIC8qIEBtaW46JTJlcGF0aG5hbWUgKi9dICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwYXRoTmFtZSA9IChwYXJzZWRVcmwucGF0aG5hbWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAwKSA/IFwiL1wiIDogcGFyc2VkVXJsW19EWU5fUEFUSE5BTUUgLyogQG1pbjolMmVwYXRobmFtZSAqL107XHJcbiAgICAgICAgICAgICAgICBpZiAocGF0aE5hbWUuY2hhckF0KDApICE9PSBcIi9cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGhOYW1lID0gXCIvXCIgKyBwYXRoTmFtZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRhdGEgPSBwYXJzZWRVcmxbX0RZTl9QQVRITkFNRSAvKiBAbWluOiUyZXBhdGhuYW1lICovXTtcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCBtZXRob2QgPyBtZXRob2QgKyBcIiBcIiArIHBhdGhOYW1lIDogcGF0aE5hbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmFtZSA9IGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIGFic29sdXRlVXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRhcmdldCA9IGNvbW1hbmROYW1lO1xyXG4gICAgICAgIG5hbWUgPSBjb21tYW5kTmFtZTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICB9O1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVV0aWxzTm93KCkge1xyXG4gICAgLy8gcmV0dXJucyB0aGUgd2luZG93IG9yIHdlYndvcmtlciBwZXJmb3JtYW5jZSBvYmplY3RcclxuICAgIHZhciBwZXJmID0gZ2V0UGVyZm9ybWFuY2UoKTtcclxuICAgIGlmIChwZXJmICYmIHBlcmYubm93ICYmIHBlcmYudGltaW5nKSB7XHJcbiAgICAgICAgdmFyIG5vdyA9IHBlcmYubm93KCkgKyBwZXJmLnRpbWluZy5uYXZpZ2F0aW9uU3RhcnQ7XHJcbiAgICAgICAgLy8gS25vd24gaXNzdWUgd2l0aCBJRSB3aGVyZSB0aGlzIGNhbGN1bGF0aW9uIGNhbiBiZSBuZWdhdGl2ZSwgc28gaWYgaXQgaXMgdGhlbiBpZ25vcmUgYW5kIGZhbGxiYWNrXHJcbiAgICAgICAgaWYgKG5vdyA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vdztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZU5vdygpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVV0aWxzRHVyYXRpb24oc3RhcnQsIGVuZCkge1xyXG4gICAgdmFyIHJlc3VsdCA9IG51bGw7XHJcbiAgICBpZiAoc3RhcnQgIT09IDAgJiYgZW5kICE9PSAwICYmICFpc051bGxPclVuZGVmaW5lZChzdGFydCkgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKGVuZCkpIHtcclxuICAgICAgICByZXN1bHQgPSBlbmQgLSBzdGFydDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqXHJcbiAqIEEgdXRpbGl0eSBjbGFzcyB0aGF0IGhlbHBzIGdldHRpbmcgdGltZSByZWxhdGVkIHBhcmFtZXRlcnNcclxuICovXHJcbmV4cG9ydCB2YXIgRGF0ZVRpbWVVdGlscyA9IHtcclxuICAgIE5vdzogZGF0ZVRpbWVVdGlsc05vdyxcclxuICAgIEdldER1cmF0aW9uOiBkYXRlVGltZVV0aWxzRHVyYXRpb25cclxufTtcclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBJRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHQgZnJvbSBhbiBvcHRpb25hbCB0ZWxlbWV0cnlUcmFjZVxyXG4gKiBAcGFyYW0gdGVsZW1ldHJ5VHJhY2UgLSBUaGUgdGVsZW1ldHJ5VHJhY2UgaW5zdGFuY2UgdGhhdCBpcyBiZWluZyB3cmFwcGVkXHJcbiAqIEBwYXJhbSBwYXJlbnRDdHggLSBBbiBvcHRpb25hbCBwYXJlbnQgZGlzdHJpYnV0ZWQgdHJhY2UgaW5zdGFuY2UsIGFsbW9zdCBhbHdheXMgdW5kZWZpbmVkIGFzIHRoaXMgc2NlbmFyaW8gaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIG9mIG11bHRpcGxlIHByb3BlcnR5IGhhbmRsZXJzLlxyXG4gKiBAcmV0dXJucyBBIG5ldyBJRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHQgaW5zdGFuY2UgdGhhdCBpcyBiYWNrZWQgYnkgdGhlIHRlbGVtZXRyeVRyYWNlIG9yIHRlbXBvcmFyeSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dEZyb21UcmFjZSh0ZWxlbWV0cnlUcmFjZSwgcGFyZW50Q3R4KSB7XHJcbiAgICB2YXIgdHJhY2UgPSB0ZWxlbWV0cnlUcmFjZSB8fCB7fTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhY2VbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXROYW1lOiBmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgcGFyZW50Q3R4ICYmIHBhcmVudEN0eC5zZXROYW1lKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgdHJhY2VbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gPSBuZXdWYWx1ZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldFRyYWNlSWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnRyYWNlSUQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXRUcmFjZUlkOiBmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgcGFyZW50Q3R4ICYmIHBhcmVudEN0eC5zZXRUcmFjZUlkKG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGlzVmFsaWRUcmFjZUlkKG5ld1ZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgdHJhY2UudHJhY2VJRCA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRTcGFuSWQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnBhcmVudElEO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0U3BhbklkOiBmdW5jdGlvbiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgcGFyZW50Q3R4ICYmIHBhcmVudEN0eC5zZXRTcGFuSWQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNWYWxpZFNwYW5JZChuZXdWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRyYWNlLnBhcmVudElEID0gbmV3VmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGdldFRyYWNlRmxhZ3M6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRyYWNlLnRyYWNlRmxhZ3M7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzZXRUcmFjZUZsYWdzOiBmdW5jdGlvbiAobmV3VHJhY2VGbGFncykge1xyXG4gICAgICAgICAgICBwYXJlbnRDdHggJiYgcGFyZW50Q3R4LnNldFRyYWNlRmxhZ3MobmV3VHJhY2VGbGFncyk7XHJcbiAgICAgICAgICAgIHRyYWNlLnRyYWNlRmxhZ3MgPSBuZXdUcmFjZUZsYWdzO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VXRpbC5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IGFyclJlZHVjZSwgb2JqS2V5cyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBERUZBVUxUX0JSRUVaRV9FTkRQT0lOVCB9IGZyb20gXCIuL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfRFlOX0lOR0VTVElPTkVORFBPSU5ULCBfRFlOX0xFTkdUSCwgX0RZTl9TUExJVCwgX0RZTl9UT19MT1dFUl9DQVNFIH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBfRklFTERTX1NFUEFSQVRPUiA9IFwiO1wiO1xyXG52YXIgX0ZJRUxEX0tFWV9WQUxVRV9TRVBBUkFUT1IgPSBcIj1cIjtcclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29ubmVjdGlvblN0cmluZyhjb25uZWN0aW9uU3RyaW5nKSB7XHJcbiAgICBpZiAoIWNvbm5lY3Rpb25TdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgICB2YXIga3ZQYWlycyA9IGNvbm5lY3Rpb25TdHJpbmdbX0RZTl9TUExJVCAvKiBAbWluOiUyZXNwbGl0ICovXShfRklFTERTX1NFUEFSQVRPUik7XHJcbiAgICB2YXIgcmVzdWx0ID0gYXJyUmVkdWNlKGt2UGFpcnMsIGZ1bmN0aW9uIChmaWVsZHMsIGt2KSB7XHJcbiAgICAgICAgdmFyIGt2UGFydHMgPSBrdltfRFlOX1NQTElUIC8qIEBtaW46JTJlc3BsaXQgKi9dKF9GSUVMRF9LRVlfVkFMVUVfU0VQQVJBVE9SKTtcclxuICAgICAgICBpZiAoa3ZQYXJ0c1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPT09IDIpIHsgLy8gb25seSBzYXZlIGZpZWxkcyB3aXRoIHZhbGlkIGZvcm1hdHNcclxuICAgICAgICAgICAgdmFyIGtleSA9IGt2UGFydHNbMF1bX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGt2UGFydHNbMV07XHJcbiAgICAgICAgICAgIGZpZWxkc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWVsZHM7XHJcbiAgICB9LCB7fSk7XHJcbiAgICBpZiAob2JqS2V5cyhyZXN1bHQpW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAvLyB0aGlzIGlzIGEgdmFsaWQgY29ubmVjdGlvbiBzdHJpbmcsIHNvIHBhcnNlIHRoZSByZXN1bHRzXHJcbiAgICAgICAgaWYgKHJlc3VsdC5lbmRwb2ludHN1ZmZpeCkge1xyXG4gICAgICAgICAgICAvLyB1c2UgZW5kcG9pbnQgc3VmZml4IHdoZXJlIG92ZXJyaWRlcyBhcmUgbm90IHByb3ZpZGVkXHJcbiAgICAgICAgICAgIHZhciBsb2NhdGlvblByZWZpeCA9IHJlc3VsdC5sb2NhdGlvbiA/IHJlc3VsdC5sb2NhdGlvbiArIFwiLlwiIDogXCJcIjtcclxuICAgICAgICAgICAgcmVzdWx0W19EWU5fSU5HRVNUSU9ORU5EUE9JTlQgLyogQG1pbjolMmVpbmdlc3Rpb25lbmRwb2ludCAqL10gPSByZXN1bHRbX0RZTl9JTkdFU1RJT05FTkRQT0lOVCAvKiBAbWluOiUyZWluZ2VzdGlvbmVuZHBvaW50ICovXSB8fCAoXCJodHRwczovL1wiICsgbG9jYXRpb25QcmVmaXggKyBcImRjLlwiICsgcmVzdWx0LmVuZHBvaW50c3VmZml4KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYXBwbHkgdGhlIGRlZmF1bHQgZW5kcG9pbnRzXHJcbiAgICAgICAgcmVzdWx0W19EWU5fSU5HRVNUSU9ORU5EUE9JTlQgLyogQG1pbjolMmVpbmdlc3Rpb25lbmRwb2ludCAqL10gPSByZXN1bHRbX0RZTl9JTkdFU1RJT05FTkRQT0lOVCAvKiBAbWluOiUyZWluZ2VzdGlvbmVuZHBvaW50ICovXSB8fCBERUZBVUxUX0JSRUVaRV9FTkRQT0lOVDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuZXhwb3J0IHZhciBDb25uZWN0aW9uU3RyaW5nUGFyc2VyID0ge1xyXG4gICAgcGFyc2U6IHBhcnNlQ29ubmVjdGlvblN0cmluZ1xyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db25uZWN0aW9uU3RyaW5nUGFyc2VyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgdG9JU09TdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgc3RyTm90U3BlY2lmaWVkIH0gZnJvbSBcIi4uLy4uL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfRFlOX05BTUUgfSBmcm9tIFwiLi4vLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGRhdGFTYW5pdGl6ZVN0cmluZyB9IGZyb20gXCIuL0RhdGFTYW5pdGl6ZXJcIjtcclxudmFyIEVudmVsb3BlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRlbGVtZXRyeSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBFbnZlbG9wZShsb2dnZXIsIGRhdGEsIG5hbWUpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYudmVyID0gMTtcclxuICAgICAgICBfc2VsZi5zYW1wbGVSYXRlID0gMTAwLjA7XHJcbiAgICAgICAgX3NlbGYudGFncyA9IHt9O1xyXG4gICAgICAgIF9zZWxmW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dID0gZGF0YVNhbml0aXplU3RyaW5nKGxvZ2dlciwgbmFtZSkgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgICAgIF9zZWxmLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIF9zZWxmLnRpbWUgPSB0b0lTT1N0cmluZyhuZXcgRGF0ZSgpKTtcclxuICAgICAgICBfc2VsZi5haURhdGFDb250cmFjdCA9IHtcclxuICAgICAgICAgICAgdGltZTogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIGlLZXk6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBuYW1lOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgc2FtcGxlUmF0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChfdGhpcy5zYW1wbGVSYXRlID09PSAxMDApID8gNCAvKiBGaWVsZFR5cGUuSGlkZGVuICovIDogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi87XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRhZ3M6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBkYXRhOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqL1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gRW52ZWxvcGU7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEVudmVsb3BlIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUVudmVsb3BlLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgc3RyTm90U3BlY2lmaWVkIH0gZnJvbSBcIi4uL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfRFlOX01FQVNVUkVNRU5UUywgX0RZTl9OQU1FLCBfRFlOX1BST1BFUlRJRVMgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGRhdGFTYW5pdGl6ZU1lYXN1cmVtZW50cywgZGF0YVNhbml0aXplUHJvcGVydGllcywgZGF0YVNhbml0aXplU3RyaW5nIH0gZnJvbSBcIi4vQ29tbW9uL0RhdGFTYW5pdGl6ZXJcIjtcclxudmFyIEV2ZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBFdmVudFRlbGVtZXRyeSBvYmplY3RcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRXZlbnQobG9nZ2VyLCBuYW1lLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMpIHtcclxuICAgICAgICB0aGlzLmFpRGF0YUNvbnRyYWN0ID0ge1xyXG4gICAgICAgICAgICB2ZXI6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBuYW1lOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgcHJvcGVydGllczogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgbWVhc3VyZW1lbnRzOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovXHJcbiAgICAgICAgfTtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xyXG4gICAgICAgIF9zZWxmLnZlciA9IDI7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCBuYW1lKSB8fCBzdHJOb3RTcGVjaWZpZWQ7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gPSBkYXRhU2FuaXRpemVQcm9wZXJ0aWVzKGxvZ2dlciwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9NRUFTVVJFTUVOVFMgLyogQG1pbjolMmVtZWFzdXJlbWVudHMgKi9dID0gZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzKGxvZ2dlciwgbWVhc3VyZW1lbnRzKTtcclxuICAgIH1cclxuICAgIEV2ZW50LmVudmVsb3BlVHlwZSA9IFwiTWljcm9zb2Z0LkFwcGxpY2F0aW9uSW5zaWdodHMuezB9LkV2ZW50XCI7XHJcbiAgICBFdmVudC5kYXRhVHlwZSA9IFwiRXZlbnREYXRhXCI7XHJcbiAgICByZXR1cm4gRXZlbnQ7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEV2ZW50IH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUV2ZW50LmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgX19hc3NpZ25GbiBhcyBfX2Fzc2lnbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtc2hpbXNcIjtcclxuaW1wb3J0IHsgYXJyRm9yRWFjaCwgYXJyTWFwLCBpc0FycmF5LCBpc0Vycm9yLCBpc0Z1bmN0aW9uLCBpc051bGxPclVuZGVmaW5lZCwgaXNPYmplY3QsIGlzU3RyaW5nLCBzdHJUcmltIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IHN0ck5vdFNwZWNpZmllZCB9IGZyb20gXCIuLi9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgX0RZTl9BU1NFTUJMWSwgX0RZTl9FWENFUFRJT05TLCBfRFlOX0ZJTEVfTkFNRSwgX0RZTl9IQVNfRlVMTF9TVEFDSywgX0RZTl9JTkRFWF9PRiwgX0RZTl9JU19NQU5VQUwsIF9EWU5fTEVOR1RILCBfRFlOX0xFVkVMLCBfRFlOX0xJTkUsIF9EWU5fTUVBU1VSRU1FTlRTLCBfRFlOX01FU1NBR0UsIF9EWU5fTUVUSE9ELCBfRFlOX05BTUUsIF9EWU5fUEFSU0VEX1NUQUNLLCBfRFlOX1BST0JMRU1fR1JPVVAsIF9EWU5fUFJPUEVSVElFUywgX0RZTl9TRVZFUklUWV9MRVZFTCwgX0RZTl9TSVpFX0lOX0JZVEVTLCBfRFlOX1NQTElULCBfRFlOX1NUUklOR0lGWSwgX0RZTl9UT19TVFJJTkcsIF9EWU5fVFlQRV9OQU1FLCBfRFlOX19DUkVBVEVfRlJPTV9JTlRFUkZBMSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZGF0YVNhbml0aXplRXhjZXB0aW9uLCBkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMsIGRhdGFTYW5pdGl6ZU1lc3NhZ2UsIGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMsIGRhdGFTYW5pdGl6ZVN0cmluZyB9IGZyb20gXCIuL0NvbW1vbi9EYXRhU2FuaXRpemVyXCI7XHJcbnZhciBOb01ldGhvZCA9IFwiPG5vX21ldGhvZD5cIjtcclxudmFyIHN0ckVycm9yID0gXCJlcnJvclwiO1xyXG52YXIgc3RyU3RhY2sgPSBcInN0YWNrXCI7XHJcbnZhciBzdHJTdGFja0RldGFpbHMgPSBcInN0YWNrRGV0YWlsc1wiO1xyXG52YXIgc3RyRXJyb3JTcmMgPSBcImVycm9yU3JjXCI7XHJcbnZhciBzdHJNZXNzYWdlID0gXCJtZXNzYWdlXCI7XHJcbnZhciBzdHJEZXNjcmlwdGlvbiA9IFwiZGVzY3JpcHRpb25cIjtcclxuZnVuY3Rpb24gX3N0cmluZ2lmeSh2YWx1ZSwgY29udmVydFRvU3RyaW5nKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gdmFsdWU7XHJcbiAgICBpZiAocmVzdWx0ICYmICFpc1N0cmluZyhyZXN1bHQpKSB7XHJcbiAgICAgICAgaWYgKEpTT04gJiYgSlNPTltfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10pIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gSlNPTltfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10odmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoY29udmVydFRvU3RyaW5nICYmICghcmVzdWx0IHx8IHJlc3VsdCA9PT0gXCJ7fVwiKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odmFsdWVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFwiXCIgKyB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gXCJcIiArIHZhbHVlICsgXCIgLSAoTWlzc2luZyBKU09OLnN0cmluZ2lmeSlcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0IHx8IFwiXCI7XHJcbn1cclxuZnVuY3Rpb24gX2Zvcm1hdE1lc3NhZ2UodGhlRXZlbnQsIGVycm9yVHlwZSkge1xyXG4gICAgdmFyIGV2dE1lc3NhZ2UgPSB0aGVFdmVudDtcclxuICAgIGlmICh0aGVFdmVudCkge1xyXG4gICAgICAgIGlmIChldnRNZXNzYWdlICYmICFpc1N0cmluZyhldnRNZXNzYWdlKSkge1xyXG4gICAgICAgICAgICBldnRNZXNzYWdlID0gdGhlRXZlbnRbc3RyTWVzc2FnZV0gfHwgdGhlRXZlbnRbc3RyRGVzY3JpcHRpb25dIHx8IGV2dE1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBpcyBhIHN0cmluZ1xyXG4gICAgICAgIGlmIChldnRNZXNzYWdlICYmICFpc1N0cmluZyhldnRNZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1jb25kaXRpb25hbC1leHByZXNzaW9uXHJcbiAgICAgICAgICAgIGV2dE1lc3NhZ2UgPSBfc3RyaW5naWZ5KGV2dE1lc3NhZ2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhlRXZlbnRbXCJmaWxlbmFtZVwiXSkge1xyXG4gICAgICAgICAgICAvLyBMb29rcyBsaWtlIGFuIGV2ZW50IG9iamVjdCB3aXRoIGZpbGVuYW1lXHJcbiAgICAgICAgICAgIGV2dE1lc3NhZ2UgPSBldnRNZXNzYWdlICsgXCIgQFwiICsgKHRoZUV2ZW50W1wiZmlsZW5hbWVcIl0gfHwgXCJcIikgKyBcIjpcIiArICh0aGVFdmVudFtcImxpbmVub1wiXSB8fCBcIj9cIikgKyBcIjpcIiArICh0aGVFdmVudFtcImNvbG5vXCJdIHx8IFwiP1wiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBBdXRvbWF0aWNhbGx5IGFkZCB0aGUgZXJyb3IgdHlwZSB0byB0aGUgbWVzc2FnZSBpZiBpdCBkb2VzIGFscmVhZHkgYXBwZWFyIHRvIGJlIHByZXNlbnRcclxuICAgIGlmIChlcnJvclR5cGUgJiYgZXJyb3JUeXBlICE9PSBcIlN0cmluZ1wiICYmIGVycm9yVHlwZSAhPT0gXCJPYmplY3RcIiAmJiBlcnJvclR5cGUgIT09IFwiRXJyb3JcIiAmJiAoZXZ0TWVzc2FnZSB8fCBcIlwiKVtfRFlOX0lOREVYX09GIC8qIEBtaW46JTJlaW5kZXhPZiAqL10oZXJyb3JUeXBlKSA9PT0gLTEpIHtcclxuICAgICAgICBldnRNZXNzYWdlID0gZXJyb3JUeXBlICsgXCI6IFwiICsgZXZ0TWVzc2FnZTtcclxuICAgIH1cclxuICAgIHJldHVybiBldnRNZXNzYWdlIHx8IFwiXCI7XHJcbn1cclxuZnVuY3Rpb24gX2lzRXhjZXB0aW9uRGV0YWlsc0ludGVybmFsKHZhbHVlKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiaGFzRnVsbFN0YWNrXCIgaW4gdmFsdWUgJiYgXCJ0eXBlTmFtZVwiIGluIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdpdGggc29tZSBuYXRpdmUgYnJvd3NlciBvYmplY3RzLCBidXQgc2hvdWxkIG5vdCBoYXBwZW4gZm9yIHRoZSB0eXBlIHdlIGFyZSBjaGVja2luZyBmb3JcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBfaXNFeGNlcHRpb25JbnRlcm5hbCh2YWx1ZSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXCJ2ZXJcIiBpbiB2YWx1ZSAmJiBcImV4Y2VwdGlvbnNcIiBpbiB2YWx1ZSAmJiBcInByb3BlcnRpZXNcIiBpbiB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2l0aCBzb21lIG5hdGl2ZSBicm93c2VyIG9iamVjdHMsIGJ1dCBzaG91bGQgbm90IGhhcHBlbiBmb3IgdGhlIHR5cGUgd2UgYXJlIGNoZWNraW5nIGZvclxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcbmZ1bmN0aW9uIF9pc1N0YWNrRGV0YWlscyhkZXRhaWxzKSB7XHJcbiAgICByZXR1cm4gZGV0YWlscyAmJiBkZXRhaWxzLnNyYyAmJiBpc1N0cmluZyhkZXRhaWxzLnNyYykgJiYgZGV0YWlscy5vYmogJiYgaXNBcnJheShkZXRhaWxzLm9iaik7XHJcbn1cclxuZnVuY3Rpb24gX2NvbnZlcnRTdGFja09iaihlcnJvclN0YWNrKSB7XHJcbiAgICB2YXIgc3JjID0gZXJyb3JTdGFjayB8fCBcIlwiO1xyXG4gICAgaWYgKCFpc1N0cmluZyhzcmMpKSB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHNyY1tzdHJTdGFja10pKSB7XHJcbiAgICAgICAgICAgIHNyYyA9IHNyY1tzdHJTdGFja107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzcmMgPSBcIlwiICsgc3JjO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciBpdGVtcyA9IHNyY1tfRFlOX1NQTElUIC8qIEBtaW46JTJlc3BsaXQgKi9dKFwiXFxuXCIpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBzcmM6IHNyYyxcclxuICAgICAgICBvYmo6IGl0ZW1zXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRPcGVyYVN0YWNrKGVycm9yTWVzc2FnZSkge1xyXG4gICAgdmFyIHN0YWNrID0gW107XHJcbiAgICB2YXIgbGluZXMgPSBlcnJvck1lc3NhZ2VbX0RZTl9TUExJVCAvKiBAbWluOiUyZXNwbGl0ICovXShcIlxcblwiKTtcclxuICAgIGZvciAodmFyIGxwID0gMDsgbHAgPCBsaW5lc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGxwKyspIHtcclxuICAgICAgICB2YXIgZW50cnkgPSBsaW5lc1tscF07XHJcbiAgICAgICAgaWYgKGxpbmVzW2xwICsgMV0pIHtcclxuICAgICAgICAgICAgZW50cnkgKz0gXCJAXCIgKyBsaW5lc1tscCArIDFdO1xyXG4gICAgICAgICAgICBscCsrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzdGFjay5wdXNoKGVudHJ5KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc3JjOiBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgb2JqOiBzdGFja1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBfZ2V0U3RhY2tGcm9tRXJyb3JPYmooZXJyb3JPYmopIHtcclxuICAgIHZhciBkZXRhaWxzID0gbnVsbDtcclxuICAgIGlmIChlcnJvck9iaikge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8qIFVzaW5nIGJyYWNrZXQgbm90YXRpb24gaXMgc3VwcG9ydCBvbGRlciBicm93c2VycyAoSUUgNy84IC0tIGRvbnQgcmVtZW1iZXIgdGhlIHZlcnNpb24pIHRoYXQgdGhyb3cgd2hlbiB1c2luZyBkb3RcclxuICAgICAgICAgICAgbm90YXRpb24gZm9yIHVuZGVmaW5lZCBvYmplY3RzIGFuZCB3ZSBkb24ndCB3YW50IHRvIGxvb3NlIHRoZSBlcnJvciBmcm9tIGJlaW5nIHJlcG9ydGVkICovXHJcbiAgICAgICAgICAgIGlmIChlcnJvck9ialtzdHJTdGFja10pIHtcclxuICAgICAgICAgICAgICAgIC8vIENocm9tZS9GaXJlZm94XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gX2NvbnZlcnRTdGFja09iaihlcnJvck9ialtzdHJTdGFja10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yT2JqW3N0ckVycm9yXSAmJiBlcnJvck9ialtzdHJFcnJvcl1bc3RyU3RhY2tdKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBFZGdlIGVycm9yIGV2ZW50IHByb3ZpZGVzIHRoZSBzdGFjayBhbmQgZXJyb3Igb2JqZWN0XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gX2NvbnZlcnRTdGFja09iaihlcnJvck9ialtzdHJFcnJvcl1bc3RyU3RhY2tdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChlcnJvck9ialtcImV4Y2VwdGlvblwiXSAmJiBlcnJvck9iai5leGNlcHRpb25bc3RyU3RhY2tdKSB7XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gX2NvbnZlcnRTdGFja09iaihlcnJvck9iai5leGNlcHRpb25bc3RyU3RhY2tdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChfaXNTdGFja0RldGFpbHMoZXJyb3JPYmopKSB7XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gZXJyb3JPYmo7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoX2lzU3RhY2tEZXRhaWxzKGVycm9yT2JqW3N0clN0YWNrRGV0YWlsc10pKSB7XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gZXJyb3JPYmpbc3RyU3RhY2tEZXRhaWxzXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aW5kb3cgJiYgd2luZG93W1wib3BlcmFcIl0gJiYgZXJyb3JPYmpbc3RyTWVzc2FnZV0pIHtcclxuICAgICAgICAgICAgICAgIC8vIE9wZXJhXHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzID0gX2dldE9wZXJhU3RhY2soZXJyb3JPYmpbX0RZTl9NRVNTQUdFIC8qIEBtaW46JTJlbWVzc2FnZSAqL10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVycm9yT2JqW1wicmVhc29uXCJdICYmIGVycm9yT2JqLnJlYXNvbltzdHJTdGFja10pIHtcclxuICAgICAgICAgICAgICAgIC8vIFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25cclxuICAgICAgICAgICAgICAgIGRldGFpbHMgPSBfY29udmVydFN0YWNrT2JqKGVycm9yT2JqLnJlYXNvbltzdHJTdGFja10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzU3RyaW5nKGVycm9yT2JqKSkge1xyXG4gICAgICAgICAgICAgICAgZGV0YWlscyA9IF9jb252ZXJ0U3RhY2tPYmooZXJyb3JPYmopO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGV2dE1lc3NhZ2UgPSBlcnJvck9ialtzdHJNZXNzYWdlXSB8fCBlcnJvck9ialtzdHJEZXNjcmlwdGlvbl0gfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhlcnJvck9ialtzdHJFcnJvclNyY10pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2dE1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZ0TWVzc2FnZSArPSBcIlxcblwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBldnRNZXNzYWdlICs9IFwiIGZyb20gXCIgKyBlcnJvck9ialtzdHJFcnJvclNyY107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZ0TWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHMgPSBfY29udmVydFN0YWNrT2JqKGV2dE1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIHNvbWV0aGluZyB1bmV4cGVjdGVkIGhhcHBlbmVkIHNvIHRvIGF2b2lkIGZhaWxpbmcgdG8gcmVwb3J0IGFueSBlcnJvciBsZXRzIHN3YWxsb3cgdGhlIGV4Y2VwdGlvblxyXG4gICAgICAgICAgICAvLyBhbmQgZmFsbGJhY2sgdG8gdGhlIGNhbGxlZS9jYWxsZXIgbWV0aG9kXHJcbiAgICAgICAgICAgIGRldGFpbHMgPSBfY29udmVydFN0YWNrT2JqKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkZXRhaWxzIHx8IHtcclxuICAgICAgICBzcmM6IFwiXCIsXHJcbiAgICAgICAgb2JqOiBudWxsXHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIF9mb3JtYXRTdGFja1RyYWNlKHN0YWNrRGV0YWlscykge1xyXG4gICAgdmFyIHN0YWNrID0gXCJcIjtcclxuICAgIGlmIChzdGFja0RldGFpbHMpIHtcclxuICAgICAgICBpZiAoc3RhY2tEZXRhaWxzLm9iaikge1xyXG4gICAgICAgICAgICBhcnJGb3JFYWNoKHN0YWNrRGV0YWlscy5vYmosIGZ1bmN0aW9uIChlbnRyeSkge1xyXG4gICAgICAgICAgICAgICAgc3RhY2sgKz0gZW50cnkgKyBcIlxcblwiO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YWNrID0gc3RhY2tEZXRhaWxzLnNyYyB8fCBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdGFjaztcclxufVxyXG5mdW5jdGlvbiBfcGFyc2VTdGFjayhzdGFjaykge1xyXG4gICAgdmFyIHBhcnNlZFN0YWNrO1xyXG4gICAgdmFyIGZyYW1lcyA9IHN0YWNrLm9iajtcclxuICAgIGlmIChmcmFtZXMgJiYgZnJhbWVzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICBwYXJzZWRTdGFjayA9IFtdO1xyXG4gICAgICAgIHZhciBsZXZlbF8xID0gMDtcclxuICAgICAgICB2YXIgdG90YWxTaXplSW5CeXRlc18xID0gMDtcclxuICAgICAgICBhcnJGb3JFYWNoKGZyYW1lcywgZnVuY3Rpb24gKGZyYW1lKSB7XHJcbiAgICAgICAgICAgIHZhciB0aGVGcmFtZSA9IGZyYW1lW19EWU5fVE9fU1RSSU5HIC8qIEBtaW46JTJldG9TdHJpbmcgKi9dKCk7XHJcbiAgICAgICAgICAgIGlmIChfU3RhY2tGcmFtZS5yZWdleC50ZXN0KHRoZUZyYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlZEZyYW1lID0gbmV3IF9TdGFja0ZyYW1lKHRoZUZyYW1lLCBsZXZlbF8xKyspO1xyXG4gICAgICAgICAgICAgICAgdG90YWxTaXplSW5CeXRlc18xICs9IHBhcnNlZEZyYW1lW19EWU5fU0laRV9JTl9CWVRFUyAvKiBAbWluOiUyZXNpemVJbkJ5dGVzICovXTtcclxuICAgICAgICAgICAgICAgIHBhcnNlZFN0YWNrLnB1c2gocGFyc2VkRnJhbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gRFAgQ29uc3RyYWludCAtIGV4Y2VwdGlvbiBwYXJzZWQgc3RhY2sgbXVzdCBiZSA8IDMyS0JcclxuICAgICAgICAvLyByZW1vdmUgZnJhbWVzIGZyb20gdGhlIG1pZGRsZSB0byBtZWV0IHRoZSB0aHJlc2hvbGRcclxuICAgICAgICB2YXIgZXhjZXB0aW9uUGFyc2VkU3RhY2tUaHJlc2hvbGQgPSAzMiAqIDEwMjQ7XHJcbiAgICAgICAgaWYgKHRvdGFsU2l6ZUluQnl0ZXNfMSA+IGV4Y2VwdGlvblBhcnNlZFN0YWNrVGhyZXNob2xkKSB7XHJcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gMDtcclxuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gcGFyc2VkU3RhY2tbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dIC0gMTtcclxuICAgICAgICAgICAgdmFyIHNpemUgPSAwO1xyXG4gICAgICAgICAgICB2YXIgYWNjZXB0ZWRMZWZ0ID0gbGVmdDtcclxuICAgICAgICAgICAgdmFyIGFjY2VwdGVkUmlnaHQgPSByaWdodDtcclxuICAgICAgICAgICAgd2hpbGUgKGxlZnQgPCByaWdodCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgc2l6ZVxyXG4gICAgICAgICAgICAgICAgdmFyIGxTaXplID0gcGFyc2VkU3RhY2tbbGVmdF1bX0RZTl9TSVpFX0lOX0JZVEVTIC8qIEBtaW46JTJlc2l6ZUluQnl0ZXMgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJTaXplID0gcGFyc2VkU3RhY2tbcmlnaHRdW19EWU5fU0laRV9JTl9CWVRFUyAvKiBAbWluOiUyZXNpemVJbkJ5dGVzICovXTtcclxuICAgICAgICAgICAgICAgIHNpemUgKz0gbFNpemUgKyByU2l6ZTtcclxuICAgICAgICAgICAgICAgIGlmIChzaXplID4gZXhjZXB0aW9uUGFyc2VkU3RhY2tUaHJlc2hvbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZXh0cmEgZnJhbWVzIGZyb20gdGhlIG1pZGRsZVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBob3dNYW55ID0gYWNjZXB0ZWRSaWdodCAtIGFjY2VwdGVkTGVmdCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkU3RhY2suc3BsaWNlKGFjY2VwdGVkTGVmdCwgaG93TWFueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgcG9pbnRlcnNcclxuICAgICAgICAgICAgICAgIGFjY2VwdGVkTGVmdCA9IGxlZnQ7XHJcbiAgICAgICAgICAgICAgICBhY2NlcHRlZFJpZ2h0ID0gcmlnaHQ7XHJcbiAgICAgICAgICAgICAgICBsZWZ0Kys7XHJcbiAgICAgICAgICAgICAgICByaWdodC0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcnNlZFN0YWNrO1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRFcnJvclR5cGUoZXJyb3JUeXBlKSB7XHJcbiAgICAvLyBHZXRzIHRoZSBFcnJvciBUeXBlIGJ5IHBhc3NpbmcgdGhlIGNvbnN0cnVjdG9yICh1c2VkIHRvIGdldCB0aGUgdHJ1ZSB0eXBlIG9mIG5hdGl2ZSBlcnJvciBvYmplY3QpLlxyXG4gICAgdmFyIHR5cGVOYW1lID0gXCJcIjtcclxuICAgIGlmIChlcnJvclR5cGUpIHtcclxuICAgICAgICB0eXBlTmFtZSA9IGVycm9yVHlwZS50eXBlTmFtZSB8fCBlcnJvclR5cGVbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gfHwgXCJcIjtcclxuICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZnVuY05hbWVSZWdleCA9IC9mdW5jdGlvbiAoLnsxLDIwMH0pXFwoLztcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gKGZ1bmNOYW1lUmVnZXgpLmV4ZWMoKGVycm9yVHlwZSkuY29uc3RydWN0b3JbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKSk7XHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZSA9IChyZXN1bHRzICYmIHJlc3VsdHNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMSkgPyByZXN1bHRzWzFdIDogXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5IC0tIElnbm9yaW5nIGFueSBmYWlsdXJlcyBhcyBub3RoaW5nIHdlIGNhbiBkb1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHR5cGVOYW1lO1xyXG59XHJcbi8qKlxyXG4gKiBGb3JtYXRzIHRoZSBwcm92aWRlZCBlcnJvck9iaiBmb3IgZGlzcGxheSBhbmQgcmVwb3J0aW5nLCBpdCBtYXkgYmUgYSBTdHJpbmcsIE9iamVjdCwgaW50ZWdlciBvciB1bmRlZmluZWQgZGVwZW5kaW5nIG9uIHRoZSBicm93c2VyLlxyXG4gKiBAcGFyYW0gZXJyb3JPYmogVGhlIHN1cHBsaWVkIGVycm9yT2JqXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX2Zvcm1hdEVycm9yQ29kZShlcnJvck9iaikge1xyXG4gICAgaWYgKGVycm9yT2JqKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKCFpc1N0cmluZyhlcnJvck9iaikpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlcnJvclR5cGUgPSBfZ2V0RXJyb3JUeXBlKGVycm9yT2JqKTtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBfc3RyaW5naWZ5KGVycm9yT2JqLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQgPT09IFwie31cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvck9ialtzdHJFcnJvcl0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9va3MgbGlrZSBhbiBNUyBFcnJvciBFdmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck9iaiA9IGVycm9yT2JqW3N0ckVycm9yXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JUeXBlID0gX2dldEVycm9yVHlwZShlcnJvck9iaik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9zdHJpbmdpZnkoZXJyb3JPYmosIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtfRFlOX0lOREVYX09GIC8qIEBtaW46JTJlaW5kZXhPZiAqL10oZXJyb3JUeXBlKSAhPT0gMCAmJiBlcnJvclR5cGUgIT09IFwiU3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JUeXBlICsgXCI6XCIgKyByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eSAtLSBJZ25vcmluZyBhbnkgZmFpbHVyZXMgYXMgbm90aGluZyB3ZSBjYW4gZG9cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBGYWxsYmFjayB0byBqdXN0IGxldHRpbmcgdGhlIG9iamVjdCBmb3JtYXQgaXRzZWxmIGludG8gYSBzdHJpbmdcclxuICAgIHJldHVybiBcIlwiICsgKGVycm9yT2JqIHx8IFwiXCIpO1xyXG59XHJcbnZhciBFeGNlcHRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEV4Y2VwdGlvblRlbGVtZXRyeSBvYmplY3RcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRXhjZXB0aW9uKGxvZ2dlciwgZXhjZXB0aW9uLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMsIHNldmVyaXR5TGV2ZWwsIGlkKSB7XHJcbiAgICAgICAgdGhpcy5haURhdGFDb250cmFjdCA9IHtcclxuICAgICAgICAgICAgdmVyOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgZXhjZXB0aW9uczogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIHNldmVyaXR5TGV2ZWw6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50czogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqL1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFyIF9zZWxmID0gdGhpcztcclxuICAgICAgICBfc2VsZi52ZXIgPSAyOyAvLyBUT0RPOiBoYW5kbGUgdGhlIENTXCI0LjBcIiA9PT4gYnJlZXplIDIgY29udmVyc2lvbiBpbiBhIGJldHRlciB3YXlcclxuICAgICAgICBpZiAoIV9pc0V4Y2VwdGlvbkludGVybmFsKGV4Y2VwdGlvbikpIHtcclxuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge307XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9FWENFUFRJT05TIC8qIEBtaW46JTJlZXhjZXB0aW9ucyAqL10gPSBbbmV3IF9FeGNlcHRpb25EZXRhaWxzKGxvZ2dlciwgZXhjZXB0aW9uLCBwcm9wZXJ0aWVzKV07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dID0gZGF0YVNhbml0aXplUHJvcGVydGllcyhsb2dnZXIsIHByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX01FQVNVUkVNRU5UUyAvKiBAbWluOiUyZW1lYXN1cmVtZW50cyAqL10gPSBkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMobG9nZ2VyLCBtZWFzdXJlbWVudHMpO1xyXG4gICAgICAgICAgICBpZiAoc2V2ZXJpdHlMZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9TRVZFUklUWV9MRVZFTCAvKiBAbWluOiUyZXNldmVyaXR5TGV2ZWwgKi9dID0gc2V2ZXJpdHlMZXZlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmlkID0gaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fRVhDRVBUSU9OUyAvKiBAbWluOiUyZWV4Y2VwdGlvbnMgKi9dID0gZXhjZXB0aW9uW19EWU5fRVhDRVBUSU9OUyAvKiBAbWluOiUyZWV4Y2VwdGlvbnMgKi9dIHx8IFtdO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSA9IGV4Y2VwdGlvbltfRFlOX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9NRUFTVVJFTUVOVFMgLyogQG1pbjolMmVtZWFzdXJlbWVudHMgKi9dID0gZXhjZXB0aW9uW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXTtcclxuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbltfRFlOX1NFVkVSSVRZX0xFVkVMIC8qIEBtaW46JTJlc2V2ZXJpdHlMZXZlbCAqL10pIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fU0VWRVJJVFlfTEVWRUwgLyogQG1pbjolMmVzZXZlcml0eUxldmVsICovXSA9IGV4Y2VwdGlvbltfRFlOX1NFVkVSSVRZX0xFVkVMIC8qIEBtaW46JTJlc2V2ZXJpdHlMZXZlbCAqL107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbi5pZCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuaWQgPSBleGNlcHRpb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbltfRFlOX1BST0JMRU1fR1JPVVAgLyogQG1pbjolMmVwcm9ibGVtR3JvdXAgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX1BST0JMRU1fR1JPVVAgLyogQG1pbjolMmVwcm9ibGVtR3JvdXAgKi9dID0gZXhjZXB0aW9uW19EWU5fUFJPQkxFTV9HUk9VUCAvKiBAbWluOiUyZXByb2JsZW1Hcm91cCAqL107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gYm9vbC9pbnQgdHlwZXMsIHVzZSBpc051bGxPclVuZGVmaW5lZFxyXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGV4Y2VwdGlvbltfRFlOX0lTX01BTlVBTCAvKiBAbWluOiUyZWlzTWFudWFsICovXSkpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fSVNfTUFOVUFMIC8qIEBtaW46JTJlaXNNYW51YWwgKi9dID0gZXhjZXB0aW9uW19EWU5fSVNfTUFOVUFMIC8qIEBtaW46JTJlaXNNYW51YWwgKi9dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgRXhjZXB0aW9uLkNyZWF0ZUF1dG9FeGNlcHRpb24gPSBmdW5jdGlvbiAobWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVycm9yLCBldnQsIHN0YWNrLCBlcnJvclNyYykge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICB2YXIgZXJyb3JUeXBlID0gX2dldEVycm9yVHlwZShlcnJvciB8fCBldnQgfHwgbWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIF9hID0ge30sXHJcbiAgICAgICAgICAgIF9hW19EWU5fTUVTU0FHRSAvKiBAbWluOm1lc3NhZ2UgKi9dID0gX2Zvcm1hdE1lc3NhZ2UobWVzc2FnZSwgZXJyb3JUeXBlKSxcclxuICAgICAgICAgICAgX2EudXJsID0gdXJsLFxyXG4gICAgICAgICAgICBfYS5saW5lTnVtYmVyID0gbGluZU51bWJlcixcclxuICAgICAgICAgICAgX2EuY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyLFxyXG4gICAgICAgICAgICBfYS5lcnJvciA9IF9mb3JtYXRFcnJvckNvZGUoZXJyb3IgfHwgZXZ0IHx8IG1lc3NhZ2UpLFxyXG4gICAgICAgICAgICBfYS5ldnQgPSBfZm9ybWF0RXJyb3JDb2RlKGV2dCB8fCBtZXNzYWdlKSxcclxuICAgICAgICAgICAgX2FbX0RZTl9UWVBFX05BTUUgLyogQG1pbjp0eXBlTmFtZSAqL10gPSBlcnJvclR5cGUsXHJcbiAgICAgICAgICAgIF9hLnN0YWNrRGV0YWlscyA9IF9nZXRTdGFja0Zyb21FcnJvck9iaihzdGFjayB8fCBlcnJvciB8fCBldnQpLFxyXG4gICAgICAgICAgICBfYS5lcnJvclNyYyA9IGVycm9yU3JjLFxyXG4gICAgICAgICAgICBfYTtcclxuICAgIH07XHJcbiAgICBFeGNlcHRpb24uQ3JlYXRlRnJvbUludGVyZmFjZSA9IGZ1bmN0aW9uIChsb2dnZXIsIGV4Y2VwdGlvbiwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKSB7XHJcbiAgICAgICAgdmFyIGV4Y2VwdGlvbnMgPSBleGNlcHRpb25bX0RZTl9FWENFUFRJT05TIC8qIEBtaW46JTJlZXhjZXB0aW9ucyAqL11cclxuICAgICAgICAgICAgJiYgYXJyTWFwKGV4Y2VwdGlvbltfRFlOX0VYQ0VQVElPTlMgLyogQG1pbjolMmVleGNlcHRpb25zICovXSwgZnVuY3Rpb24gKGV4KSB7IHJldHVybiBfRXhjZXB0aW9uRGV0YWlsc1tfRFlOX19DUkVBVEVfRlJPTV9JTlRFUkZBMSAvKiBAbWluOiUyZUNyZWF0ZUZyb21JbnRlcmZhY2UgKi9dKGxvZ2dlciwgZXgpOyB9KTtcclxuICAgICAgICB2YXIgZXhjZXB0aW9uRGF0YSA9IG5ldyBFeGNlcHRpb24obG9nZ2VyLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXhjZXB0aW9uKSwgeyBleGNlcHRpb25zOiBleGNlcHRpb25zIH0pLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMpO1xyXG4gICAgICAgIHJldHVybiBleGNlcHRpb25EYXRhO1xyXG4gICAgfTtcclxuICAgIEV4Y2VwdGlvbi5wcm90b3R5cGUudG9JbnRlcmZhY2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHZhciBfYiA9IHRoaXMsIGV4Y2VwdGlvbnMgPSBfYi5leGNlcHRpb25zLCBwcm9wZXJ0aWVzID0gX2IucHJvcGVydGllcywgbWVhc3VyZW1lbnRzID0gX2IubWVhc3VyZW1lbnRzLCBzZXZlcml0eUxldmVsID0gX2Iuc2V2ZXJpdHlMZXZlbCwgcHJvYmxlbUdyb3VwID0gX2IucHJvYmxlbUdyb3VwLCBpZCA9IF9iLmlkLCBpc01hbnVhbCA9IF9iLmlzTWFudWFsO1xyXG4gICAgICAgIHZhciBleGNlcHRpb25EZXRhaWxzSW50ZXJmYWNlID0gZXhjZXB0aW9ucyBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgICAgICAgICYmIGFyck1hcChleGNlcHRpb25zLCBmdW5jdGlvbiAoZXhjZXB0aW9uKSB7IHJldHVybiBleGNlcHRpb24udG9JbnRlcmZhY2UoKTsgfSlcclxuICAgICAgICAgICAgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybiBfYSA9IHtcclxuICAgICAgICAgICAgICAgIHZlcjogXCI0LjBcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBfYVtfRFlOX0VYQ0VQVElPTlMgLyogQG1pbjpleGNlcHRpb25zICovXSA9IGV4Y2VwdGlvbkRldGFpbHNJbnRlcmZhY2UsXHJcbiAgICAgICAgICAgIF9hLnNldmVyaXR5TGV2ZWwgPSBzZXZlcml0eUxldmVsLFxyXG4gICAgICAgICAgICBfYS5wcm9wZXJ0aWVzID0gcHJvcGVydGllcyxcclxuICAgICAgICAgICAgX2EubWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnRzLFxyXG4gICAgICAgICAgICBfYS5wcm9ibGVtR3JvdXAgPSBwcm9ibGVtR3JvdXAsXHJcbiAgICAgICAgICAgIF9hLmlkID0gaWQsXHJcbiAgICAgICAgICAgIF9hLmlzTWFudWFsID0gaXNNYW51YWwsXHJcbiAgICAgICAgICAgIF9hO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHNpbXBsZSBleGNlcHRpb24gd2l0aCAxIHN0YWNrIGZyYW1lLiBVc2VmdWwgZm9yIG1hbnVhbCBjb25zdHJhY3Rpbmcgb2YgZXhjZXB0aW9uLlxyXG4gICAgICovXHJcbiAgICBFeGNlcHRpb24uQ3JlYXRlU2ltcGxlRXhjZXB0aW9uID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHR5cGVOYW1lLCBhc3NlbWJseSwgZmlsZU5hbWUsIGRldGFpbHMsIGxpbmUpIHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZXhjZXB0aW9uczogW1xyXG4gICAgICAgICAgICAgICAgKF9hID0ge30sXHJcbiAgICAgICAgICAgICAgICAgICAgX2FbX0RZTl9IQVNfRlVMTF9TVEFDSyAvKiBAbWluOmhhc0Z1bGxTdGFjayAqL10gPSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hLm1lc3NhZ2UgPSBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hLnN0YWNrID0gZGV0YWlscyxcclxuICAgICAgICAgICAgICAgICAgICBfYS50eXBlTmFtZSA9IHR5cGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hKVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICBFeGNlcHRpb24uZW52ZWxvcGVUeXBlID0gXCJNaWNyb3NvZnQuQXBwbGljYXRpb25JbnNpZ2h0cy57MH0uRXhjZXB0aW9uXCI7XHJcbiAgICBFeGNlcHRpb24uZGF0YVR5cGUgPSBcIkV4Y2VwdGlvbkRhdGFcIjtcclxuICAgIEV4Y2VwdGlvbi5mb3JtYXRFcnJvciA9IF9mb3JtYXRFcnJvckNvZGU7XHJcbiAgICByZXR1cm4gRXhjZXB0aW9uO1xyXG59KCkpO1xyXG5leHBvcnQgeyBFeGNlcHRpb24gfTtcclxudmFyIF9FeGNlcHRpb25EZXRhaWxzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gX0V4Y2VwdGlvbkRldGFpbHMobG9nZ2VyLCBleGNlcHRpb24sIHByb3BlcnRpZXMpIHtcclxuICAgICAgICB0aGlzLmFpRGF0YUNvbnRyYWN0ID0ge1xyXG4gICAgICAgICAgICBpZDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgb3V0ZXJJZDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgdHlwZU5hbWU6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgaGFzRnVsbFN0YWNrOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBzdGFjazogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgcGFyc2VkU3RhY2s6IDIgLyogRmllbGRUeXBlLkFycmF5ICovXHJcbiAgICAgICAgfTtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xyXG4gICAgICAgIGlmICghX2lzRXhjZXB0aW9uRGV0YWlsc0ludGVybmFsKGV4Y2VwdGlvbikpIHtcclxuICAgICAgICAgICAgdmFyIGVycm9yID0gZXhjZXB0aW9uO1xyXG4gICAgICAgICAgICB2YXIgZXZ0ID0gZXJyb3IgJiYgZXJyb3IuZXZ0O1xyXG4gICAgICAgICAgICBpZiAoIWlzRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICAgICAgICBlcnJvciA9IGVycm9yW3N0ckVycm9yXSB8fCBldnQgfHwgZXJyb3I7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9UWVBFX05BTUUgLyogQG1pbjolMmV0eXBlTmFtZSAqL10gPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCBfZ2V0RXJyb3JUeXBlKGVycm9yKSkgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXSA9IGRhdGFTYW5pdGl6ZU1lc3NhZ2UobG9nZ2VyLCBfZm9ybWF0TWVzc2FnZShleGNlcHRpb24gfHwgZXJyb3IsIF9zZWxmW19EWU5fVFlQRV9OQU1FIC8qIEBtaW46JTJldHlwZU5hbWUgKi9dKSkgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgICAgICAgICB2YXIgc3RhY2sgPSBleGNlcHRpb25bc3RyU3RhY2tEZXRhaWxzXSB8fCBfZ2V0U3RhY2tGcm9tRXJyb3JPYmooZXhjZXB0aW9uKTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9QQVJTRURfU1RBQ0sgLyogQG1pbjolMmVwYXJzZWRTdGFjayAqL10gPSBfcGFyc2VTdGFjayhzdGFjayk7XHJcbiAgICAgICAgICAgIF9zZWxmW3N0clN0YWNrXSA9IGRhdGFTYW5pdGl6ZUV4Y2VwdGlvbihsb2dnZXIsIF9mb3JtYXRTdGFja1RyYWNlKHN0YWNrKSk7XHJcbiAgICAgICAgICAgIF9zZWxmLmhhc0Z1bGxTdGFjayA9IGlzQXJyYXkoX3NlbGYucGFyc2VkU3RhY2spICYmIF9zZWxmLnBhcnNlZFN0YWNrW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDA7XHJcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW19EWU5fVFlQRV9OQU1FIC8qIEBtaW46JTJldHlwZU5hbWUgKi9dID0gcHJvcGVydGllc1tfRFlOX1RZUEVfTkFNRSAvKiBAbWluOiUyZXR5cGVOYW1lICovXSB8fCBfc2VsZltfRFlOX1RZUEVfTkFNRSAvKiBAbWluOiUyZXR5cGVOYW1lICovXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9UWVBFX05BTUUgLyogQG1pbjolMmV0eXBlTmFtZSAqL10gPSBleGNlcHRpb25bX0RZTl9UWVBFX05BTUUgLyogQG1pbjolMmV0eXBlTmFtZSAqL107XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dID0gZXhjZXB0aW9uW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dO1xyXG4gICAgICAgICAgICBfc2VsZltzdHJTdGFja10gPSBleGNlcHRpb25bc3RyU3RhY2tdO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1BBUlNFRF9TVEFDSyAvKiBAbWluOiUyZXBhcnNlZFN0YWNrICovXSA9IGV4Y2VwdGlvbltfRFlOX1BBUlNFRF9TVEFDSyAvKiBAbWluOiUyZXBhcnNlZFN0YWNrICovXSB8fCBbXTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9IQVNfRlVMTF9TVEFDSyAvKiBAbWluOiUyZWhhc0Z1bGxTdGFjayAqL10gPSBleGNlcHRpb25bX0RZTl9IQVNfRlVMTF9TVEFDSyAvKiBAbWluOiUyZWhhc0Z1bGxTdGFjayAqL107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX0V4Y2VwdGlvbkRldGFpbHMucHJvdG90eXBlLnRvSW50ZXJmYWNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xyXG4gICAgICAgIHZhciBwYXJzZWRTdGFjayA9IF9zZWxmW19EWU5fUEFSU0VEX1NUQUNLIC8qIEBtaW46JTJlcGFyc2VkU3RhY2sgKi9dIGluc3RhbmNlb2YgQXJyYXlcclxuICAgICAgICAgICAgJiYgYXJyTWFwKF9zZWxmW19EWU5fUEFSU0VEX1NUQUNLIC8qIEBtaW46JTJlcGFyc2VkU3RhY2sgKi9dLCBmdW5jdGlvbiAoZnJhbWUpIHsgcmV0dXJuIGZyYW1lLnRvSW50ZXJmYWNlKCk7IH0pO1xyXG4gICAgICAgIHZhciBleGNlcHRpb25EZXRhaWxzSW50ZXJmYWNlID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IF9zZWxmLmlkLFxyXG4gICAgICAgICAgICAgICAgb3V0ZXJJZDogX3NlbGYub3V0ZXJJZCxcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOiBfc2VsZltfRFlOX1RZUEVfTkFNRSAvKiBAbWluOiUyZXR5cGVOYW1lICovXSxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF9zZWxmW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dLFxyXG4gICAgICAgICAgICAgICAgaGFzRnVsbFN0YWNrOiBfc2VsZltfRFlOX0hBU19GVUxMX1NUQUNLIC8qIEBtaW46JTJlaGFzRnVsbFN0YWNrICovXSxcclxuICAgICAgICAgICAgICAgIHN0YWNrOiBfc2VsZltzdHJTdGFja11cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9QQVJTRURfU1RBQ0sgLyogQG1pbjpwYXJzZWRTdGFjayAqL10gPSBwYXJzZWRTdGFjayB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIF9hKTtcclxuICAgICAgICByZXR1cm4gZXhjZXB0aW9uRGV0YWlsc0ludGVyZmFjZTtcclxuICAgIH07XHJcbiAgICBfRXhjZXB0aW9uRGV0YWlscy5DcmVhdGVGcm9tSW50ZXJmYWNlID0gZnVuY3Rpb24gKGxvZ2dlciwgZXhjZXB0aW9uKSB7XHJcbiAgICAgICAgdmFyIHBhcnNlZFN0YWNrID0gKGV4Y2VwdGlvbltfRFlOX1BBUlNFRF9TVEFDSyAvKiBAbWluOiUyZXBhcnNlZFN0YWNrICovXSBpbnN0YW5jZW9mIEFycmF5XHJcbiAgICAgICAgICAgICYmIGFyck1hcChleGNlcHRpb25bX0RZTl9QQVJTRURfU1RBQ0sgLyogQG1pbjolMmVwYXJzZWRTdGFjayAqL10sIGZ1bmN0aW9uIChmcmFtZSkgeyByZXR1cm4gX1N0YWNrRnJhbWVbX0RZTl9fQ1JFQVRFX0ZST01fSU5URVJGQTEgLyogQG1pbjolMmVDcmVhdGVGcm9tSW50ZXJmYWNlICovXShmcmFtZSk7IH0pKVxyXG4gICAgICAgICAgICB8fCBleGNlcHRpb25bX0RZTl9QQVJTRURfU1RBQ0sgLyogQG1pbjolMmVwYXJzZWRTdGFjayAqL107XHJcbiAgICAgICAgdmFyIGV4Y2VwdGlvbkRldGFpbHMgPSBuZXcgX0V4Y2VwdGlvbkRldGFpbHMobG9nZ2VyLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXhjZXB0aW9uKSwgeyBwYXJzZWRTdGFjazogcGFyc2VkU3RhY2sgfSkpO1xyXG4gICAgICAgIHJldHVybiBleGNlcHRpb25EZXRhaWxzO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBfRXhjZXB0aW9uRGV0YWlscztcclxufSgpKTtcclxuZXhwb3J0IHsgX0V4Y2VwdGlvbkRldGFpbHMgfTtcclxudmFyIF9TdGFja0ZyYW1lID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gX1N0YWNrRnJhbWUoc291cmNlRnJhbWUsIGxldmVsKSB7XHJcbiAgICAgICAgdGhpcy5haURhdGFDb250cmFjdCA9IHtcclxuICAgICAgICAgICAgbGV2ZWw6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBtZXRob2Q6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBhc3NlbWJseTogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgZmlsZU5hbWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIGxpbmU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi9cclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9TSVpFX0lOX0JZVEVTIC8qIEBtaW46JTJlc2l6ZUluQnl0ZXMgKi9dID0gMDtcclxuICAgICAgICAvLyBOb3QgY29udmVydGluZyB0aGlzIHRvIGlzU3RyaW5nKCkgYXMgdHlwZXNjcmlwdCB1c2VzIHRoaXMgbG9naWMgdG8gXCJ1bmRlcnN0YW5kXCIgdGhlIGRpZmZlcmVudFxyXG4gICAgICAgIC8vIHR5cGVzIGZvciB0aGUgMiBkaWZmZXJlbnQgY29kZSBwYXRoc1xyXG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlRnJhbWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgdmFyIGZyYW1lID0gc291cmNlRnJhbWU7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fTEVWRUwgLyogQG1pbjolMmVsZXZlbCAqL10gPSBsZXZlbDtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9NRVRIT0QgLyogQG1pbjolMmVtZXRob2QgKi9dID0gTm9NZXRob2Q7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQVNTRU1CTFkgLyogQG1pbjolMmVhc3NlbWJseSAqL10gPSBzdHJUcmltKGZyYW1lKTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9GSUxFX05BTUUgLyogQG1pbjolMmVmaWxlTmFtZSAqL10gPSBcIlwiO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0xJTkUgLyogQG1pbjolMmVsaW5lICovXSA9IDA7XHJcbiAgICAgICAgICAgIHZhciBtYXRjaGVzID0gZnJhbWUubWF0Y2goX1N0YWNrRnJhbWUucmVnZXgpO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+PSA1KSB7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10gPSBzdHJUcmltKG1hdGNoZXNbMl0pIHx8IF9zZWxmW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fRklMRV9OQU1FIC8qIEBtaW46JTJlZmlsZU5hbWUgKi9dID0gc3RyVHJpbShtYXRjaGVzWzRdKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fTElORSAvKiBAbWluOiUyZWxpbmUgKi9dID0gcGFyc2VJbnQobWF0Y2hlc1s1XSkgfHwgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9MRVZFTCAvKiBAbWluOiUyZWxldmVsICovXSA9IHNvdXJjZUZyYW1lW19EWU5fTEVWRUwgLyogQG1pbjolMmVsZXZlbCAqL107XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXSA9IHNvdXJjZUZyYW1lW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BU1NFTUJMWSAvKiBAbWluOiUyZWFzc2VtYmx5ICovXSA9IHNvdXJjZUZyYW1lW19EWU5fQVNTRU1CTFkgLyogQG1pbjolMmVhc3NlbWJseSAqL107XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fRklMRV9OQU1FIC8qIEBtaW46JTJlZmlsZU5hbWUgKi9dID0gc291cmNlRnJhbWVbX0RZTl9GSUxFX05BTUUgLyogQG1pbjolMmVmaWxlTmFtZSAqL107XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fTElORSAvKiBAbWluOiUyZWxpbmUgKi9dID0gc291cmNlRnJhbWVbX0RZTl9MSU5FIC8qIEBtaW46JTJlbGluZSAqL107XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fU0laRV9JTl9CWVRFUyAvKiBAbWluOiUyZXNpemVJbkJ5dGVzICovXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9zZWxmLnNpemVJbkJ5dGVzICs9IF9zZWxmLm1ldGhvZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgX3NlbGYuc2l6ZUluQnl0ZXMgKz0gX3NlbGYuZmlsZU5hbWVbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgIF9zZWxmLnNpemVJbkJ5dGVzICs9IF9zZWxmLmFzc2VtYmx5W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICAvLyB0b2RvOiB0aGVzZSBtaWdodCBuZWVkIHRvIGJlIHJlbW92ZWQgZGVwZW5kaW5nIG9uIGhvdyB0aGUgYmFjay1lbmQgc2V0dGxlcyBvbiB0aGVpciBzaXplIGNhbGN1bGF0aW9uXHJcbiAgICAgICAgX3NlbGZbX0RZTl9TSVpFX0lOX0JZVEVTIC8qIEBtaW46JTJlc2l6ZUluQnl0ZXMgKi9dICs9IF9TdGFja0ZyYW1lLmJhc2VTaXplO1xyXG4gICAgICAgIF9zZWxmLnNpemVJbkJ5dGVzICs9IF9zZWxmLmxldmVsLnRvU3RyaW5nKClbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgIF9zZWxmLnNpemVJbkJ5dGVzICs9IF9zZWxmLmxpbmUudG9TdHJpbmcoKVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICB9XHJcbiAgICBfU3RhY2tGcmFtZS5DcmVhdGVGcm9tSW50ZXJmYWNlID0gZnVuY3Rpb24gKGZyYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBfU3RhY2tGcmFtZShmcmFtZSwgbnVsbCAvKiBsZXZlbCBpcyBhdmFpbGFibGUgaW4gZnJhbWUgaW50ZXJmYWNlICovKTtcclxuICAgIH07XHJcbiAgICBfU3RhY2tGcmFtZS5wcm90b3R5cGUudG9JbnRlcmZhY2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIF9zZWxmID0gdGhpcztcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBsZXZlbDogX3NlbGZbX0RZTl9MRVZFTCAvKiBAbWluOiUyZWxldmVsICovXSxcclxuICAgICAgICAgICAgbWV0aG9kOiBfc2VsZltfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10sXHJcbiAgICAgICAgICAgIGFzc2VtYmx5OiBfc2VsZltfRFlOX0FTU0VNQkxZIC8qIEBtaW46JTJlYXNzZW1ibHkgKi9dLFxyXG4gICAgICAgICAgICBmaWxlTmFtZTogX3NlbGZbX0RZTl9GSUxFX05BTUUgLyogQG1pbjolMmVmaWxlTmFtZSAqL10sXHJcbiAgICAgICAgICAgIGxpbmU6IF9zZWxmW19EWU5fTElORSAvKiBAbWluOiUyZWxpbmUgKi9dXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICAvLyByZWdleCB0byBtYXRjaCBzdGFjayBmcmFtZXMgZnJvbSBpZS9jaHJvbWUvZmZcclxuICAgIC8vIG1ldGhvZE5hbWU9JDIsIGZpbGVOYW1lPSQ0LCBsaW5lTm89JDUsIGNvbHVtbj0kNlxyXG4gICAgX1N0YWNrRnJhbWUucmVnZXggPSAvXihbXFxzXSthdCk/W1xcc117MCw1MH0oW15cXEBcXCgpXSs/KVtcXHNdezAsNTB9KFxcQHxcXCgpKFteXFwoXFxuXSspOihbMC05XSspOihbMC05XSspKFxcKT8pJC87XHJcbiAgICBfU3RhY2tGcmFtZS5iYXNlU2l6ZSA9IDU4OyAvLyAne1wibWV0aG9kXCI6XCJcIixcImxldmVsXCI6LFwiYXNzZW1ibHlcIjpcIlwiLFwiZmlsZU5hbWVcIjpcIlwiLFwibGluZVwiOn0nLmxlbmd0aFxyXG4gICAgcmV0dXJuIF9TdGFja0ZyYW1lO1xyXG59KCkpO1xyXG5leHBvcnQgeyBfU3RhY2tGcmFtZSB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1FeGNlcHRpb24uanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG52YXIgRGF0YVBvaW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gRGF0YVBvaW50KCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoZSBkYXRhIGNvbnRyYWN0IGZvciBzZXJpYWxpemluZyB0aGlzIG9iamVjdC5cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmFpRGF0YUNvbnRyYWN0ID0ge1xyXG4gICAgICAgICAgICBuYW1lOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAga2luZDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgdmFsdWU6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBjb3VudDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgbWluOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBtYXg6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHN0ZERldjogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqL1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogTWV0cmljIHR5cGUuIFNpbmdsZSBtZWFzdXJlbWVudCBvciB0aGUgYWdncmVnYXRlZCB2YWx1ZS5cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmtpbmQgPSAwIC8qIERhdGFQb2ludFR5cGUuTWVhc3VyZW1lbnQgKi87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gRGF0YVBvaW50O1xyXG59KCkpO1xyXG5leHBvcnQgeyBEYXRhUG9pbnQgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGF0YVBvaW50LmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgc3RyTm90U3BlY2lmaWVkIH0gZnJvbSBcIi4uL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfRFlOX0NPVU5ULCBfRFlOX01FQVNVUkVNRU5UUywgX0RZTl9OQU1FLCBfRFlOX1BST1BFUlRJRVMgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IERhdGFQb2ludCB9IGZyb20gXCIuL0NvbW1vbi9EYXRhUG9pbnRcIjtcclxuaW1wb3J0IHsgZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzLCBkYXRhU2FuaXRpemVQcm9wZXJ0aWVzLCBkYXRhU2FuaXRpemVTdHJpbmcgfSBmcm9tIFwiLi9Db21tb24vRGF0YVNhbml0aXplclwiO1xyXG52YXIgTWV0cmljID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBNZXRyaWNUZWxlbWV0cnkgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIE1ldHJpYyhsb2dnZXIsIG5hbWUsIHZhbHVlLCBjb3VudCwgbWluLCBtYXgsIHN0ZERldiwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKSB7XHJcbiAgICAgICAgdGhpcy5haURhdGFDb250cmFjdCA9IHtcclxuICAgICAgICAgICAgdmVyOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgbWV0cmljczogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi9cclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYudmVyID0gMjtcclxuICAgICAgICB2YXIgZGF0YVBvaW50ID0gbmV3IERhdGFQb2ludCgpO1xyXG4gICAgICAgIGRhdGFQb2ludFtfRFlOX0NPVU5UIC8qIEBtaW46JTJlY291bnQgKi9dID0gY291bnQgPiAwID8gY291bnQgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgZGF0YVBvaW50Lm1heCA9IGlzTmFOKG1heCkgfHwgbWF4ID09PSBudWxsID8gdW5kZWZpbmVkIDogbWF4O1xyXG4gICAgICAgIGRhdGFQb2ludC5taW4gPSBpc05hTihtaW4pIHx8IG1pbiA9PT0gbnVsbCA/IHVuZGVmaW5lZCA6IG1pbjtcclxuICAgICAgICBkYXRhUG9pbnRbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCBuYW1lKSB8fCBzdHJOb3RTcGVjaWZpZWQ7XHJcbiAgICAgICAgZGF0YVBvaW50LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgZGF0YVBvaW50LnN0ZERldiA9IGlzTmFOKHN0ZERldikgfHwgc3RkRGV2ID09PSBudWxsID8gdW5kZWZpbmVkIDogc3RkRGV2O1xyXG4gICAgICAgIF9zZWxmLm1ldHJpY3MgPSBbZGF0YVBvaW50XTtcclxuICAgICAgICBfc2VsZltfRFlOX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSA9IGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMobG9nZ2VyLCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICBfc2VsZltfRFlOX01FQVNVUkVNRU5UUyAvKiBAbWluOiUyZW1lYXN1cmVtZW50cyAqL10gPSBkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMobG9nZ2VyLCBtZWFzdXJlbWVudHMpO1xyXG4gICAgfVxyXG4gICAgTWV0cmljLmVudmVsb3BlVHlwZSA9IFwiTWljcm9zb2Z0LkFwcGxpY2F0aW9uSW5zaWdodHMuezB9Lk1ldHJpY1wiO1xyXG4gICAgTWV0cmljLmRhdGFUeXBlID0gXCJNZXRyaWNEYXRhXCI7XHJcbiAgICByZXR1cm4gTWV0cmljO1xyXG59KCkpO1xyXG5leHBvcnQgeyBNZXRyaWMgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TWV0cmljLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgc3RyTm90U3BlY2lmaWVkIH0gZnJvbSBcIi4uL0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBtc1RvVGltZVNwYW4gfSBmcm9tIFwiLi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgX0RZTl9EVVJBVElPTiwgX0RZTl9NRUFTVVJFTUVOVFMsIF9EWU5fTkFNRSwgX0RZTl9QUk9QRVJUSUVTIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBkYXRhU2FuaXRpemVJZCwgZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzLCBkYXRhU2FuaXRpemVQcm9wZXJ0aWVzLCBkYXRhU2FuaXRpemVTdHJpbmcsIGRhdGFTYW5pdGl6ZVVybCB9IGZyb20gXCIuL0NvbW1vbi9EYXRhU2FuaXRpemVyXCI7XHJcbnZhciBQYWdlVmlldyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgUGFnZUV2ZW50VGVsZW1ldHJ5IG9iamVjdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBQYWdlVmlldyhsb2dnZXIsIG5hbWUsIHVybCwgZHVyYXRpb25NcywgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzLCBpZCkge1xyXG4gICAgICAgIHRoaXMuYWlEYXRhQ29udHJhY3QgPSB7XHJcbiAgICAgICAgICAgIHZlcjogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIG5hbWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHVybDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgZHVyYXRpb246IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50czogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgaWQ6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi9cclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYudmVyID0gMjtcclxuICAgICAgICBfc2VsZi5pZCA9IGRhdGFTYW5pdGl6ZUlkKGxvZ2dlciwgaWQpO1xyXG4gICAgICAgIF9zZWxmLnVybCA9IGRhdGFTYW5pdGl6ZVVybChsb2dnZXIsIHVybCk7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCBuYW1lKSB8fCBzdHJOb3RTcGVjaWZpZWQ7XHJcbiAgICAgICAgaWYgKCFpc05hTihkdXJhdGlvbk1zKSkge1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0RVUkFUSU9OIC8qIEBtaW46JTJlZHVyYXRpb24gKi9dID0gbXNUb1RpbWVTcGFuKGR1cmF0aW9uTXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBfc2VsZltfRFlOX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSA9IGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMobG9nZ2VyLCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICBfc2VsZltfRFlOX01FQVNVUkVNRU5UUyAvKiBAbWluOiUyZW1lYXN1cmVtZW50cyAqL10gPSBkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMobG9nZ2VyLCBtZWFzdXJlbWVudHMpO1xyXG4gICAgfVxyXG4gICAgUGFnZVZpZXcuZW52ZWxvcGVUeXBlID0gXCJNaWNyb3NvZnQuQXBwbGljYXRpb25JbnNpZ2h0cy57MH0uUGFnZXZpZXdcIjtcclxuICAgIFBhZ2VWaWV3LmRhdGFUeXBlID0gXCJQYWdldmlld0RhdGFcIjtcclxuICAgIHJldHVybiBQYWdlVmlldztcclxufSgpKTtcclxuZXhwb3J0IHsgUGFnZVZpZXcgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFnZVZpZXcuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBtc1RvVGltZVNwYW4gfSBmcm9tIFwiLi4vSGVscGVyRnVuY3NcIjtcclxuaW1wb3J0IHsgQWpheEhlbHBlclBhcnNlRGVwZW5kZW5jeVBhdGggfSBmcm9tIFwiLi4vVXRpbFwiO1xyXG5pbXBvcnQgeyBfRFlOX0RVUkFUSU9OLCBfRFlOX01FQVNVUkVNRU5UUywgX0RZTl9OQU1FLCBfRFlOX1BST1BFUlRJRVMgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IGRhdGFTYW5pdGl6ZU1lYXN1cmVtZW50cywgZGF0YVNhbml0aXplUHJvcGVydGllcywgZGF0YVNhbml0aXplU3RyaW5nLCBkYXRhU2FuaXRpemVVcmwgfSBmcm9tIFwiLi9Db21tb24vRGF0YVNhbml0aXplclwiO1xyXG52YXIgUmVtb3RlRGVwZW5kZW5jeURhdGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJlbW90ZURlcGVuZGVuY3lEYXRhIG9iamVjdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZW1vdGVEZXBlbmRlbmN5RGF0YShsb2dnZXIsIGlkLCBhYnNvbHV0ZVVybCwgY29tbWFuZE5hbWUsIHZhbHVlLCBzdWNjZXNzLCByZXN1bHRDb2RlLCBtZXRob2QsIHJlcXVlc3RBUEksIGNvcnJlbGF0aW9uQ29udGV4dCwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKSB7XHJcbiAgICAgICAgaWYgKHJlcXVlc3RBUEkgPT09IHZvaWQgMCkgeyByZXF1ZXN0QVBJID0gXCJBamF4XCI7IH1cclxuICAgICAgICB0aGlzLmFpRGF0YUNvbnRyYWN0ID0ge1xyXG4gICAgICAgICAgICBpZDogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIHZlcjogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIG5hbWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHJlc3VsdENvZGU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBkYXRhOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICB0YXJnZXQ6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHR5cGU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIG1lYXN1cmVtZW50czogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAga2luZDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgdmFsdWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIGNvdW50OiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBtaW46IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIG1heDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgc3RkRGV2OiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBkZXBlbmRlbmN5S2luZDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgZGVwZW5kZW5jeVNvdXJjZTogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgY29tbWFuZE5hbWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIGRlcGVuZGVuY3lUeXBlTmFtZTogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqL1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdmFyIF9zZWxmID0gdGhpcztcclxuICAgICAgICBfc2VsZi52ZXIgPSAyO1xyXG4gICAgICAgIF9zZWxmLmlkID0gaWQ7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXSA9IG1zVG9UaW1lU3Bhbih2YWx1ZSk7XHJcbiAgICAgICAgX3NlbGYuc3VjY2VzcyA9IHN1Y2Nlc3M7XHJcbiAgICAgICAgX3NlbGYucmVzdWx0Q29kZSA9IHJlc3VsdENvZGUgKyBcIlwiO1xyXG4gICAgICAgIF9zZWxmLnR5cGUgPSBkYXRhU2FuaXRpemVTdHJpbmcobG9nZ2VyLCByZXF1ZXN0QVBJKTtcclxuICAgICAgICB2YXIgZGVwZW5kZW5jeUZpZWxkcyA9IEFqYXhIZWxwZXJQYXJzZURlcGVuZGVuY3lQYXRoKGxvZ2dlciwgYWJzb2x1dGVVcmwsIG1ldGhvZCwgY29tbWFuZE5hbWUpO1xyXG4gICAgICAgIF9zZWxmLmRhdGEgPSBkYXRhU2FuaXRpemVVcmwobG9nZ2VyLCBjb21tYW5kTmFtZSkgfHwgZGVwZW5kZW5jeUZpZWxkcy5kYXRhOyAvLyBnZXQgYSB2YWx1ZSBmcm9tIGhvc3R1cmwgaWYgY29tbWFuZE5hbWUgbm90IGF2YWlsYWJsZVxyXG4gICAgICAgIF9zZWxmLnRhcmdldCA9IGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIGRlcGVuZGVuY3lGaWVsZHMudGFyZ2V0KTtcclxuICAgICAgICBpZiAoY29ycmVsYXRpb25Db250ZXh0KSB7XHJcbiAgICAgICAgICAgIF9zZWxmLnRhcmdldCA9IFwiXCIuY29uY2F0KF9zZWxmLnRhcmdldCwgXCIgfCBcIikuY29uY2F0KGNvcnJlbGF0aW9uQ29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIF9zZWxmW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dID0gZGF0YVNhbml0aXplU3RyaW5nKGxvZ2dlciwgZGVwZW5kZW5jeUZpZWxkc1tfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSk7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gPSBkYXRhU2FuaXRpemVQcm9wZXJ0aWVzKGxvZ2dlciwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgX3NlbGZbX0RZTl9NRUFTVVJFTUVOVFMgLyogQG1pbjolMmVtZWFzdXJlbWVudHMgKi9dID0gZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzKGxvZ2dlciwgbWVhc3VyZW1lbnRzKTtcclxuICAgIH1cclxuICAgIFJlbW90ZURlcGVuZGVuY3lEYXRhLmVudmVsb3BlVHlwZSA9IFwiTWljcm9zb2Z0LkFwcGxpY2F0aW9uSW5zaWdodHMuezB9LlJlbW90ZURlcGVuZGVuY3lcIjtcclxuICAgIFJlbW90ZURlcGVuZGVuY3lEYXRhLmRhdGFUeXBlID0gXCJSZW1vdGVEZXBlbmRlbmN5RGF0YVwiO1xyXG4gICAgcmV0dXJuIFJlbW90ZURlcGVuZGVuY3lEYXRhO1xyXG59KCkpO1xyXG5leHBvcnQgeyBSZW1vdGVEZXBlbmRlbmN5RGF0YSB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1SZW1vdGVEZXBlbmRlbmN5RGF0YS5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IHN0ck5vdFNwZWNpZmllZCB9IGZyb20gXCIuLi9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgX0RZTl9NRUFTVVJFTUVOVFMsIF9EWU5fTUVTU0FHRSwgX0RZTl9QUk9QRVJUSUVTLCBfRFlOX1NFVkVSSVRZX0xFVkVMIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMsIGRhdGFTYW5pdGl6ZU1lc3NhZ2UsIGRhdGFTYW5pdGl6ZVByb3BlcnRpZXMgfSBmcm9tIFwiLi9Db21tb24vRGF0YVNhbml0aXplclwiO1xyXG52YXIgVHJhY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFRyYWNlVGVsZW1ldHJ5IG9iamVjdFxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBUcmFjZShsb2dnZXIsIG1lc3NhZ2UsIHNldmVyaXR5TGV2ZWwsIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cykge1xyXG4gICAgICAgIHRoaXMuYWlEYXRhQ29udHJhY3QgPSB7XHJcbiAgICAgICAgICAgIHZlcjogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovLFxyXG4gICAgICAgICAgICBzZXZlcml0eUxldmVsOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovXHJcbiAgICAgICAgfTtcclxuICAgICAgICB2YXIgX3NlbGYgPSB0aGlzO1xyXG4gICAgICAgIF9zZWxmLnZlciA9IDI7XHJcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgICAgIF9zZWxmW19EWU5fTUVTU0FHRSAvKiBAbWluOiUyZW1lc3NhZ2UgKi9dID0gZGF0YVNhbml0aXplTWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UpO1xyXG4gICAgICAgIF9zZWxmW19EWU5fUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dID0gZGF0YVNhbml0aXplUHJvcGVydGllcyhsb2dnZXIsIHByb3BlcnRpZXMpO1xyXG4gICAgICAgIF9zZWxmW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXSA9IGRhdGFTYW5pdGl6ZU1lYXN1cmVtZW50cyhsb2dnZXIsIG1lYXN1cmVtZW50cyk7XHJcbiAgICAgICAgaWYgKHNldmVyaXR5TGV2ZWwpIHtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9TRVZFUklUWV9MRVZFTCAvKiBAbWluOiUyZXNldmVyaXR5TGV2ZWwgKi9dID0gc2V2ZXJpdHlMZXZlbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBUcmFjZS5lbnZlbG9wZVR5cGUgPSBcIk1pY3Jvc29mdC5BcHBsaWNhdGlvbkluc2lnaHRzLnswfS5NZXNzYWdlXCI7XHJcbiAgICBUcmFjZS5kYXRhVHlwZSA9IFwiTWVzc2FnZURhdGFcIjtcclxuICAgIHJldHVybiBUcmFjZTtcclxufSgpKTtcclxuZXhwb3J0IHsgVHJhY2UgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9VHJhY2UuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBzdHJOb3RTcGVjaWZpZWQgfSBmcm9tIFwiLi4vQ29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IF9EWU5fRFVSQVRJT04sIF9EWU5fTUVBU1VSRU1FTlRTLCBfRFlOX05BTUUsIF9EWU5fUFJPUEVSVElFUywgX0RZTl9SRUNFSVZFRF9SRVNQT05TRSB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzLCBkYXRhU2FuaXRpemVQcm9wZXJ0aWVzLCBkYXRhU2FuaXRpemVTdHJpbmcsIGRhdGFTYW5pdGl6ZVVybCB9IGZyb20gXCIuL0NvbW1vbi9EYXRhU2FuaXRpemVyXCI7XHJcbnZhciBQYWdlVmlld1BlcmZvcm1hbmNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBQYWdlRXZlbnRUZWxlbWV0cnkgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFBhZ2VWaWV3UGVyZm9ybWFuY2UobG9nZ2VyLCBuYW1lLCB1cmwsIHVudXNlZCwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzLCBjczRCYXNlRGF0YSkge1xyXG4gICAgICAgIHRoaXMuYWlEYXRhQ29udHJhY3QgPSB7XHJcbiAgICAgICAgICAgIHZlcjogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICAgICAgICAgIG5hbWU6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHVybDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgZHVyYXRpb246IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHBlcmZUb3RhbDogMCAvKiBGaWVsZFR5cGUuRGVmYXVsdCAqLyxcclxuICAgICAgICAgICAgbmV0d29ya0Nvbm5lY3Q6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICAgICAgICAgIHNlbnRSZXF1ZXN0OiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICByZWNlaXZlZFJlc3BvbnNlOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBkb21Qcm9jZXNzaW5nOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiAwIC8qIEZpZWxkVHlwZS5EZWZhdWx0ICovLFxyXG4gICAgICAgICAgICBtZWFzdXJlbWVudHM6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi9cclxuICAgICAgICB9O1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYudmVyID0gMjtcclxuICAgICAgICBfc2VsZi51cmwgPSBkYXRhU2FuaXRpemVVcmwobG9nZ2VyLCB1cmwpO1xyXG4gICAgICAgIF9zZWxmW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dID0gZGF0YVNhbml0aXplU3RyaW5nKGxvZ2dlciwgbmFtZSkgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgICAgIF9zZWxmW19EWU5fUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dID0gZGF0YVNhbml0aXplUHJvcGVydGllcyhsb2dnZXIsIHByb3BlcnRpZXMpO1xyXG4gICAgICAgIF9zZWxmW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXSA9IGRhdGFTYW5pdGl6ZU1lYXN1cmVtZW50cyhsb2dnZXIsIG1lYXN1cmVtZW50cyk7XHJcbiAgICAgICAgaWYgKGNzNEJhc2VEYXRhKSB7XHJcbiAgICAgICAgICAgIF9zZWxmLmRvbVByb2Nlc3NpbmcgPSBjczRCYXNlRGF0YS5kb21Qcm9jZXNzaW5nO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0RVUkFUSU9OIC8qIEBtaW46JTJlZHVyYXRpb24gKi9dID0gY3M0QmFzZURhdGFbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXTtcclxuICAgICAgICAgICAgX3NlbGYubmV0d29ya0Nvbm5lY3QgPSBjczRCYXNlRGF0YS5uZXR3b3JrQ29ubmVjdDtcclxuICAgICAgICAgICAgX3NlbGYucGVyZlRvdGFsID0gY3M0QmFzZURhdGEucGVyZlRvdGFsO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1JFQ0VJVkVEX1JFU1BPTlNFIC8qIEBtaW46JTJlcmVjZWl2ZWRSZXNwb25zZSAqL10gPSBjczRCYXNlRGF0YVtfRFlOX1JFQ0VJVkVEX1JFU1BPTlNFIC8qIEBtaW46JTJlcmVjZWl2ZWRSZXNwb25zZSAqL107XHJcbiAgICAgICAgICAgIF9zZWxmLnNlbnRSZXF1ZXN0ID0gY3M0QmFzZURhdGEuc2VudFJlcXVlc3Q7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgUGFnZVZpZXdQZXJmb3JtYW5jZS5lbnZlbG9wZVR5cGUgPSBcIk1pY3Jvc29mdC5BcHBsaWNhdGlvbkluc2lnaHRzLnswfS5QYWdldmlld1BlcmZvcm1hbmNlXCI7XHJcbiAgICBQYWdlVmlld1BlcmZvcm1hbmNlLmRhdGFUeXBlID0gXCJQYWdldmlld1BlcmZvcm1hbmNlRGF0YVwiO1xyXG4gICAgcmV0dXJuIFBhZ2VWaWV3UGVyZm9ybWFuY2U7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFBhZ2VWaWV3UGVyZm9ybWFuY2UgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UGFnZVZpZXdQZXJmb3JtYW5jZS5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbnZhciBEYXRhID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRlbGVtZXRyeSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBEYXRhKGJhc2VUeXBlLCBkYXRhKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGhlIGRhdGEgY29udHJhY3QgZm9yIHNlcmlhbGl6aW5nIHRoaXMgb2JqZWN0LlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYWlEYXRhQ29udHJhY3QgPSB7XHJcbiAgICAgICAgICAgIGJhc2VUeXBlOiAxIC8qIEZpZWxkVHlwZS5SZXF1aXJlZCAqLyxcclxuICAgICAgICAgICAgYmFzZURhdGE6IDEgLyogRmllbGRUeXBlLlJlcXVpcmVkICovXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmJhc2VUeXBlID0gYmFzZVR5cGU7XHJcbiAgICAgICAgdGhpcy5iYXNlRGF0YSA9IGRhdGE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gRGF0YTtcclxufSgpKTtcclxuZXhwb3J0IHsgRGF0YSB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1EYXRhLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IHsgX19leHRlbmRzRm4gYXMgX19leHRlbmRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDbGFzc0Zyb21JbnRlcmZhY2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuZnVuY3Rpb24gX2FpTmFtZUZ1bmMoYmFzZU5hbWUpIHtcclxuICAgIHZhciBhaU5hbWUgPSBcImFpLlwiICsgYmFzZU5hbWUgKyBcIi5cIjtcclxuICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xyXG4gICAgICAgIHJldHVybiBhaU5hbWUgKyBuYW1lO1xyXG4gICAgfTtcclxufVxyXG52YXIgX2FpQXBwbGljYXRpb24gPSBfYWlOYW1lRnVuYyhcImFwcGxpY2F0aW9uXCIpO1xyXG52YXIgX2FpRGV2aWNlID0gX2FpTmFtZUZ1bmMoXCJkZXZpY2VcIik7XHJcbnZhciBfYWlMb2NhdGlvbiA9IF9haU5hbWVGdW5jKFwibG9jYXRpb25cIik7XHJcbnZhciBfYWlPcGVyYXRpb24gPSBfYWlOYW1lRnVuYyhcIm9wZXJhdGlvblwiKTtcclxudmFyIF9haVNlc3Npb24gPSBfYWlOYW1lRnVuYyhcInNlc3Npb25cIik7XHJcbnZhciBfYWlVc2VyID0gX2FpTmFtZUZ1bmMoXCJ1c2VyXCIpO1xyXG52YXIgX2FpQ2xvdWQgPSBfYWlOYW1lRnVuYyhcImNsb3VkXCIpO1xyXG52YXIgX2FpSW50ZXJuYWwgPSBfYWlOYW1lRnVuYyhcImludGVybmFsXCIpO1xyXG52YXIgQ29udGV4dFRhZ0tleXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoQ29udGV4dFRhZ0tleXMsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBDb250ZXh0VGFnS2V5cygpIHtcclxuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcclxuICAgIH1cclxuICAgIHJldHVybiBDb250ZXh0VGFnS2V5cztcclxufShjcmVhdGVDbGFzc0Zyb21JbnRlcmZhY2Uoe1xyXG4gICAgYXBwbGljYXRpb25WZXJzaW9uOiBfYWlBcHBsaWNhdGlvbihcInZlclwiKSxcclxuICAgIGFwcGxpY2F0aW9uQnVpbGQ6IF9haUFwcGxpY2F0aW9uKFwiYnVpbGRcIiksXHJcbiAgICBhcHBsaWNhdGlvblR5cGVJZDogX2FpQXBwbGljYXRpb24oXCJ0eXBlSWRcIiksXHJcbiAgICBhcHBsaWNhdGlvbklkOiBfYWlBcHBsaWNhdGlvbihcImFwcGxpY2F0aW9uSWRcIiksXHJcbiAgICBhcHBsaWNhdGlvbkxheWVyOiBfYWlBcHBsaWNhdGlvbihcImxheWVyXCIpLFxyXG4gICAgZGV2aWNlSWQ6IF9haURldmljZShcImlkXCIpLFxyXG4gICAgZGV2aWNlSXA6IF9haURldmljZShcImlwXCIpLFxyXG4gICAgZGV2aWNlTGFuZ3VhZ2U6IF9haURldmljZShcImxhbmd1YWdlXCIpLFxyXG4gICAgZGV2aWNlTG9jYWxlOiBfYWlEZXZpY2UoXCJsb2NhbGVcIiksXHJcbiAgICBkZXZpY2VNb2RlbDogX2FpRGV2aWNlKFwibW9kZWxcIiksXHJcbiAgICBkZXZpY2VGcmllbmRseU5hbWU6IF9haURldmljZShcImZyaWVuZGx5TmFtZVwiKSxcclxuICAgIGRldmljZU5ldHdvcms6IF9haURldmljZShcIm5ldHdvcmtcIiksXHJcbiAgICBkZXZpY2VOZXR3b3JrTmFtZTogX2FpRGV2aWNlKFwibmV0d29ya05hbWVcIiksXHJcbiAgICBkZXZpY2VPRU1OYW1lOiBfYWlEZXZpY2UoXCJvZW1OYW1lXCIpLFxyXG4gICAgZGV2aWNlT1M6IF9haURldmljZShcIm9zXCIpLFxyXG4gICAgZGV2aWNlT1NWZXJzaW9uOiBfYWlEZXZpY2UoXCJvc1ZlcnNpb25cIiksXHJcbiAgICBkZXZpY2VSb2xlSW5zdGFuY2U6IF9haURldmljZShcInJvbGVJbnN0YW5jZVwiKSxcclxuICAgIGRldmljZVJvbGVOYW1lOiBfYWlEZXZpY2UoXCJyb2xlTmFtZVwiKSxcclxuICAgIGRldmljZVNjcmVlblJlc29sdXRpb246IF9haURldmljZShcInNjcmVlblJlc29sdXRpb25cIiksXHJcbiAgICBkZXZpY2VUeXBlOiBfYWlEZXZpY2UoXCJ0eXBlXCIpLFxyXG4gICAgZGV2aWNlTWFjaGluZU5hbWU6IF9haURldmljZShcIm1hY2hpbmVOYW1lXCIpLFxyXG4gICAgZGV2aWNlVk1OYW1lOiBfYWlEZXZpY2UoXCJ2bU5hbWVcIiksXHJcbiAgICBkZXZpY2VCcm93c2VyOiBfYWlEZXZpY2UoXCJicm93c2VyXCIpLFxyXG4gICAgZGV2aWNlQnJvd3NlclZlcnNpb246IF9haURldmljZShcImJyb3dzZXJWZXJzaW9uXCIpLFxyXG4gICAgbG9jYXRpb25JcDogX2FpTG9jYXRpb24oXCJpcFwiKSxcclxuICAgIGxvY2F0aW9uQ291bnRyeTogX2FpTG9jYXRpb24oXCJjb3VudHJ5XCIpLFxyXG4gICAgbG9jYXRpb25Qcm92aW5jZTogX2FpTG9jYXRpb24oXCJwcm92aW5jZVwiKSxcclxuICAgIGxvY2F0aW9uQ2l0eTogX2FpTG9jYXRpb24oXCJjaXR5XCIpLFxyXG4gICAgb3BlcmF0aW9uSWQ6IF9haU9wZXJhdGlvbihcImlkXCIpLFxyXG4gICAgb3BlcmF0aW9uTmFtZTogX2FpT3BlcmF0aW9uKFwibmFtZVwiKSxcclxuICAgIG9wZXJhdGlvblBhcmVudElkOiBfYWlPcGVyYXRpb24oXCJwYXJlbnRJZFwiKSxcclxuICAgIG9wZXJhdGlvblJvb3RJZDogX2FpT3BlcmF0aW9uKFwicm9vdElkXCIpLFxyXG4gICAgb3BlcmF0aW9uU3ludGhldGljU291cmNlOiBfYWlPcGVyYXRpb24oXCJzeW50aGV0aWNTb3VyY2VcIiksXHJcbiAgICBvcGVyYXRpb25Db3JyZWxhdGlvblZlY3RvcjogX2FpT3BlcmF0aW9uKFwiY29ycmVsYXRpb25WZWN0b3JcIiksXHJcbiAgICBzZXNzaW9uSWQ6IF9haVNlc3Npb24oXCJpZFwiKSxcclxuICAgIHNlc3Npb25Jc0ZpcnN0OiBfYWlTZXNzaW9uKFwiaXNGaXJzdFwiKSxcclxuICAgIHNlc3Npb25Jc05ldzogX2FpU2Vzc2lvbihcImlzTmV3XCIpLFxyXG4gICAgdXNlckFjY291bnRBY3F1aXNpdGlvbkRhdGU6IF9haVVzZXIoXCJhY2NvdW50QWNxdWlzaXRpb25EYXRlXCIpLFxyXG4gICAgdXNlckFjY291bnRJZDogX2FpVXNlcihcImFjY291bnRJZFwiKSxcclxuICAgIHVzZXJBZ2VudDogX2FpVXNlcihcInVzZXJBZ2VudFwiKSxcclxuICAgIHVzZXJJZDogX2FpVXNlcihcImlkXCIpLFxyXG4gICAgdXNlclN0b3JlUmVnaW9uOiBfYWlVc2VyKFwic3RvcmVSZWdpb25cIiksXHJcbiAgICB1c2VyQXV0aFVzZXJJZDogX2FpVXNlcihcImF1dGhVc2VySWRcIiksXHJcbiAgICB1c2VyQW5vbnltb3VzVXNlckFjcXVpc2l0aW9uRGF0ZTogX2FpVXNlcihcImFub25Vc2VyQWNxdWlzaXRpb25EYXRlXCIpLFxyXG4gICAgdXNlckF1dGhlbnRpY2F0ZWRVc2VyQWNxdWlzaXRpb25EYXRlOiBfYWlVc2VyKFwiYXV0aFVzZXJBY3F1aXNpdGlvbkRhdGVcIiksXHJcbiAgICBjbG91ZE5hbWU6IF9haUNsb3VkKFwibmFtZVwiKSxcclxuICAgIGNsb3VkUm9sZTogX2FpQ2xvdWQoXCJyb2xlXCIpLFxyXG4gICAgY2xvdWRSb2xlVmVyOiBfYWlDbG91ZChcInJvbGVWZXJcIiksXHJcbiAgICBjbG91ZFJvbGVJbnN0YW5jZTogX2FpQ2xvdWQoXCJyb2xlSW5zdGFuY2VcIiksXHJcbiAgICBjbG91ZEVudmlyb25tZW50OiBfYWlDbG91ZChcImVudmlyb25tZW50XCIpLFxyXG4gICAgY2xvdWRMb2NhdGlvbjogX2FpQ2xvdWQoXCJsb2NhdGlvblwiKSxcclxuICAgIGNsb3VkRGVwbG95bWVudFVuaXQ6IF9haUNsb3VkKFwiZGVwbG95bWVudFVuaXRcIiksXHJcbiAgICBpbnRlcm5hbE5vZGVOYW1lOiBfYWlJbnRlcm5hbChcIm5vZGVOYW1lXCIpLFxyXG4gICAgaW50ZXJuYWxTZGtWZXJzaW9uOiBfYWlJbnRlcm5hbChcInNka1ZlcnNpb25cIiksXHJcbiAgICBpbnRlcm5hbEFnZW50VmVyc2lvbjogX2FpSW50ZXJuYWwoXCJhZ2VudFZlcnNpb25cIiksXHJcbiAgICBpbnRlcm5hbFNuaXBwZXQ6IF9haUludGVybmFsKFwic25pcHBldFwiKSxcclxuICAgIGludGVybmFsU2RrU3JjOiBfYWlJbnRlcm5hbChcInNka1NyY1wiKVxyXG59KSkpO1xyXG5leHBvcnQgeyBDb250ZXh0VGFnS2V5cyB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250ZXh0VGFnS2V5cy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDb21tb24sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCBvYmpGb3JFYWNoS2V5LCB0aHJvd0Vycm9yLCB0b0lTT1N0cmluZyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBzdHJJa2V5LCBzdHJOb3RTcGVjaWZpZWQgfSBmcm9tIFwiLi9Db25zdGFudHNcIjtcclxuaW1wb3J0IHsgZGF0YVNhbml0aXplU3RyaW5nIH0gZnJvbSBcIi4vVGVsZW1ldHJ5L0NvbW1vbi9EYXRhU2FuaXRpemVyXCI7XHJcbmltcG9ydCB7IF9EWU5fTkFNRSB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG4vKipcclxuICogQ3JlYXRlIGEgdGVsZW1ldHJ5IGl0ZW0gdGhhdCB0aGUgMURTIGNoYW5uZWwgdW5kZXJzdGFuZHNcclxuICogQHBhcmFtIGl0ZW0gZG9tYWluIHNwZWNpZmljIHByb3BlcnRpZXM7IHBhcnQgQlxyXG4gKiBAcGFyYW0gYmFzZVR5cGUgdGVsZW1ldHJ5IGl0ZW0gdHlwZS4gaWUgUGFnZVZpZXdEYXRhXHJcbiAqIEBwYXJhbSBlbnZlbG9wZU5hbWUgbmFtZSBvZiB0aGUgZW52ZWxvcGUuIGllIE1pY3Jvc29mdC5BcHBsaWNhdGlvbkluc2lnaHRzLjxpbnN0cnVtZW50YXRpb24ga2V5Pi5QYWdlVmlld1xyXG4gKiBAcGFyYW0gY3VzdG9tUHJvcGVydGllcyB1c2VyIGRlZmluZWQgY3VzdG9tIHByb3BlcnRpZXM7IHBhcnQgQ1xyXG4gKiBAcGFyYW0gc3lzdGVtUHJvcGVydGllcyBzeXN0ZW0gcHJvcGVydGllcyB0aGF0IGFyZSBhZGRlZCB0byB0aGUgY29udGV4dDsgcGFydCBBXHJcbiAqIEByZXR1cm5zIElUZWxlbWV0cnlJdGVtIHRoYXQgaXMgc2VudCB0byBjaGFubmVsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGVsZW1ldHJ5SXRlbShpdGVtLCBiYXNlVHlwZSwgZW52ZWxvcGVOYW1lLCBsb2dnZXIsIGN1c3RvbVByb3BlcnRpZXMsIHN5c3RlbVByb3BlcnRpZXMpIHtcclxuICAgIHZhciBfYTtcclxuICAgIGVudmVsb3BlTmFtZSA9IGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIGVudmVsb3BlTmFtZSkgfHwgc3RyTm90U3BlY2lmaWVkO1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0ZW0pIHx8XHJcbiAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoYmFzZVR5cGUpIHx8XHJcbiAgICAgICAgaXNOdWxsT3JVbmRlZmluZWQoZW52ZWxvcGVOYW1lKSkge1xyXG4gICAgICAgIHRocm93RXJyb3IoXCJJbnB1dCBkb2Vzbid0IGNvbnRhaW4gYWxsIHJlcXVpcmVkIGZpZWxkc1wiKTtcclxuICAgIH1cclxuICAgIHZhciBpS2V5ID0gXCJcIjtcclxuICAgIGlmIChpdGVtW3N0cklrZXldKSB7XHJcbiAgICAgICAgaUtleSA9IGl0ZW1bc3RySWtleV07XHJcbiAgICAgICAgZGVsZXRlIGl0ZW1bc3RySWtleV07XHJcbiAgICB9XHJcbiAgICB2YXIgdGVsZW1ldHJ5SXRlbSA9IChfYSA9IHt9LFxyXG4gICAgICAgIF9hW19EWU5fTkFNRSAvKiBAbWluOm5hbWUgKi9dID0gZW52ZWxvcGVOYW1lLFxyXG4gICAgICAgIF9hLnRpbWUgPSB0b0lTT1N0cmluZyhuZXcgRGF0ZSgpKSxcclxuICAgICAgICBfYS5pS2V5ID0gaUtleSxcclxuICAgICAgICBfYS5leHQgPSBzeXN0ZW1Qcm9wZXJ0aWVzID8gc3lzdGVtUHJvcGVydGllcyA6IHt9LFxyXG4gICAgICAgIF9hLnRhZ3MgPSBbXSxcclxuICAgICAgICBfYS5kYXRhID0ge30sXHJcbiAgICAgICAgX2EuYmFzZVR5cGUgPSBiYXNlVHlwZSxcclxuICAgICAgICBfYS5iYXNlRGF0YSA9IGl0ZW0gLy8gUGFydCBCXHJcbiAgICAsXHJcbiAgICAgICAgX2EpO1xyXG4gICAgLy8gUGFydCBDXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVByb3BlcnRpZXMpKSB7XHJcbiAgICAgICAgb2JqRm9yRWFjaEtleShjdXN0b21Qcm9wZXJ0aWVzLCBmdW5jdGlvbiAocHJvcCwgdmFsdWUpIHtcclxuICAgICAgICAgICAgdGVsZW1ldHJ5SXRlbS5kYXRhW3Byb3BdID0gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGVsZW1ldHJ5SXRlbTtcclxufVxyXG52YXIgVGVsZW1ldHJ5SXRlbUNyZWF0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUZWxlbWV0cnlJdGVtQ3JlYXRvcigpIHtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGEgdGVsZW1ldHJ5IGl0ZW0gdGhhdCB0aGUgMURTIGNoYW5uZWwgdW5kZXJzdGFuZHNcclxuICAgICAqIEBwYXJhbSBpdGVtIGRvbWFpbiBzcGVjaWZpYyBwcm9wZXJ0aWVzOyBwYXJ0IEJcclxuICAgICAqIEBwYXJhbSBiYXNlVHlwZSB0ZWxlbWV0cnkgaXRlbSB0eXBlLiBpZSBQYWdlVmlld0RhdGFcclxuICAgICAqIEBwYXJhbSBlbnZlbG9wZU5hbWUgbmFtZSBvZiB0aGUgZW52ZWxvcGUuIGllIE1pY3Jvc29mdC5BcHBsaWNhdGlvbkluc2lnaHRzLjxpbnN0cnVtZW50YXRpb24ga2V5Pi5QYWdlVmlld1xyXG4gICAgICogQHBhcmFtIGN1c3RvbVByb3BlcnRpZXMgdXNlciBkZWZpbmVkIGN1c3RvbSBwcm9wZXJ0aWVzOyBwYXJ0IENcclxuICAgICAqIEBwYXJhbSBzeXN0ZW1Qcm9wZXJ0aWVzIHN5c3RlbSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFkZGVkIHRvIHRoZSBjb250ZXh0OyBwYXJ0IEFcclxuICAgICAqIEByZXR1cm5zIElUZWxlbWV0cnlJdGVtIHRoYXQgaXMgc2VudCB0byBjaGFubmVsXHJcbiAgICAgKi9cclxuICAgIFRlbGVtZXRyeUl0ZW1DcmVhdG9yLmNyZWF0ZSA9IGNyZWF0ZVRlbGVtZXRyeUl0ZW07XHJcbiAgICByZXR1cm4gVGVsZW1ldHJ5SXRlbUNyZWF0b3I7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFRlbGVtZXRyeUl0ZW1DcmVhdG9yIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRlbGVtZXRyeUl0ZW1DcmVhdG9yLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENvbW1vbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7IENvbnRleHRUYWdLZXlzIH0gZnJvbSBcIi4vQ29udHJhY3RzL0NvbnRleHRUYWdLZXlzXCI7XHJcbmV4cG9ydCB2YXIgRXh0ZW5zaW9ucyA9IHtcclxuICAgIFVzZXJFeHQ6IFwidXNlclwiLFxyXG4gICAgRGV2aWNlRXh0OiBcImRldmljZVwiLFxyXG4gICAgVHJhY2VFeHQ6IFwidHJhY2VcIixcclxuICAgIFdlYkV4dDogXCJ3ZWJcIixcclxuICAgIEFwcEV4dDogXCJhcHBcIixcclxuICAgIE9TRXh0OiBcIm9zXCIsXHJcbiAgICBTZXNzaW9uRXh0OiBcInNlc1wiLFxyXG4gICAgU0RLRXh0OiBcInNka1wiXHJcbn07XHJcbmV4cG9ydCB2YXIgQ3R4VGFnS2V5cyA9IG5ldyBDb250ZXh0VGFnS2V5cygpO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1QYXJ0QUV4dGVuc2lvbnMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ29tbW9uLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZVxyXG5leHBvcnQgeyBVdGlsLCBDb3JyZWxhdGlvbklkSGVscGVyLCBEYXRlVGltZVV0aWxzLCBkYXRlVGltZVV0aWxzTm93LCBkYXRlVGltZVV0aWxzRHVyYXRpb24sIFVybEhlbHBlciwgaXNJbnRlcm5hbEFwcGxpY2F0aW9uSW5zaWdodHNFbmRwb2ludCwgY3JlYXRlRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHRGcm9tVHJhY2UgfSBmcm9tIFwiLi9VdGlsXCI7XHJcbmV4cG9ydCB7IFRocm90dGxlTWdyIH0gZnJvbSBcIi4vVGhyb3R0bGVNZ3JcIjtcclxuZXhwb3J0IHsgcGFyc2VDb25uZWN0aW9uU3RyaW5nLCBDb25uZWN0aW9uU3RyaW5nUGFyc2VyIH0gZnJvbSBcIi4vQ29ubmVjdGlvblN0cmluZ1BhcnNlclwiO1xyXG5leHBvcnQgeyBSZXF1ZXN0SGVhZGVycyB9IGZyb20gXCIuL1JlcXVlc3RSZXNwb25zZUhlYWRlcnNcIjtcclxuZXhwb3J0IHsgRGlzYWJsZWRQcm9wZXJ0eU5hbWUsIFByb2Nlc3NMZWdhY3ksIFNhbXBsZVJhdGUsIEh0dHBNZXRob2QsIERFRkFVTFRfQlJFRVpFX0VORFBPSU5ULCBERUZBVUxUX0JSRUVaRV9QQVRILCBzdHJOb3RTcGVjaWZpZWQgfSBmcm9tIFwiLi9Db25zdGFudHNcIjtcclxuZXhwb3J0IHsgRW52ZWxvcGUgfSBmcm9tIFwiLi9UZWxlbWV0cnkvQ29tbW9uL0VudmVsb3BlXCI7XHJcbmV4cG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4vVGVsZW1ldHJ5L0V2ZW50XCI7XHJcbmV4cG9ydCB7IEV4Y2VwdGlvbiB9IGZyb20gXCIuL1RlbGVtZXRyeS9FeGNlcHRpb25cIjtcclxuZXhwb3J0IHsgTWV0cmljIH0gZnJvbSBcIi4vVGVsZW1ldHJ5L01ldHJpY1wiO1xyXG5leHBvcnQgeyBQYWdlVmlldyB9IGZyb20gXCIuL1RlbGVtZXRyeS9QYWdlVmlld1wiO1xyXG5leHBvcnQgeyBSZW1vdGVEZXBlbmRlbmN5RGF0YSB9IGZyb20gXCIuL1RlbGVtZXRyeS9SZW1vdGVEZXBlbmRlbmN5RGF0YVwiO1xyXG5leHBvcnQgeyBUcmFjZSB9IGZyb20gXCIuL1RlbGVtZXRyeS9UcmFjZVwiO1xyXG5leHBvcnQgeyBQYWdlVmlld1BlcmZvcm1hbmNlIH0gZnJvbSBcIi4vVGVsZW1ldHJ5L1BhZ2VWaWV3UGVyZm9ybWFuY2VcIjtcclxuZXhwb3J0IHsgRGF0YSB9IGZyb20gXCIuL1RlbGVtZXRyeS9Db21tb24vRGF0YVwiO1xyXG5leHBvcnQgeyBTZXZlcml0eUxldmVsIH0gZnJvbSBcIi4vSW50ZXJmYWNlcy9Db250cmFjdHMvU2V2ZXJpdHlMZXZlbFwiO1xyXG5leHBvcnQgeyBDb25maWd1cmF0aW9uTWFuYWdlciB9IGZyb20gXCIuL0ludGVyZmFjZXMvSUNvbmZpZ1wiO1xyXG5leHBvcnQgeyBDb250ZXh0VGFnS2V5cyB9IGZyb20gXCIuL0ludGVyZmFjZXMvQ29udHJhY3RzL0NvbnRleHRUYWdLZXlzXCI7XHJcbmV4cG9ydCB7IERhdGFTYW5pdGl6ZXIsIGRhdGFTYW5pdGl6ZUtleUFuZEFkZFVuaXF1ZW5lc3MsIGRhdGFTYW5pdGl6ZUtleSwgZGF0YVNhbml0aXplU3RyaW5nLCBkYXRhU2FuaXRpemVVcmwsIGRhdGFTYW5pdGl6ZU1lc3NhZ2UsIGRhdGFTYW5pdGl6ZUV4Y2VwdGlvbiwgZGF0YVNhbml0aXplUHJvcGVydGllcywgZGF0YVNhbml0aXplTWVhc3VyZW1lbnRzLCBkYXRhU2FuaXRpemVJZCwgZGF0YVNhbml0aXplSW5wdXQsIGRzUGFkTnVtYmVyIH0gZnJvbSBcIi4vVGVsZW1ldHJ5L0NvbW1vbi9EYXRhU2FuaXRpemVyXCI7XHJcbmV4cG9ydCB7IFRlbGVtZXRyeUl0ZW1DcmVhdG9yLCBjcmVhdGVUZWxlbWV0cnlJdGVtIH0gZnJvbSBcIi4vVGVsZW1ldHJ5SXRlbUNyZWF0b3JcIjtcclxuZXhwb3J0IHsgQ3R4VGFnS2V5cywgRXh0ZW5zaW9ucyB9IGZyb20gXCIuL0ludGVyZmFjZXMvUGFydEFFeHRlbnNpb25zXCI7XHJcbmV4cG9ydCB7IERpc3RyaWJ1dGVkVHJhY2luZ01vZGVzIH0gZnJvbSBcIi4vRW51bXNcIjtcclxuZXhwb3J0IHsgc3RyaW5nVG9Cb29sT3JEZWZhdWx0LCBtc1RvVGltZVNwYW4sIGdldEV4dGVuc2lvbkJ5TmFtZSwgaXNDcm9zc09yaWdpbkVycm9yIH0gZnJvbSBcIi4vSGVscGVyRnVuY3NcIjtcclxuZXhwb3J0IHsgaXNCZWFjb25zU3VwcG9ydGVkIGFzIGlzQmVhY29uQXBpU3VwcG9ydGVkLCBjcmVhdGVUcmFjZVBhcmVudCwgcGFyc2VUcmFjZVBhcmVudCwgaXNWYWxpZFRyYWNlSWQsIGlzVmFsaWRTcGFuSWQsIGlzVmFsaWRUcmFjZVBhcmVudCwgaXNTYW1wbGVkRmxhZywgZm9ybWF0VHJhY2VQYXJlbnQsIGZpbmRXM2NUcmFjZVBhcmVudCB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5leHBvcnQgeyBjcmVhdGVEb21FdmVudCB9IGZyb20gXCIuL0RvbUhlbHBlckZ1bmNzXCI7XHJcbmV4cG9ydCB7IHV0bERpc2FibGVTdG9yYWdlLCB1dGxFbmFibGVTdG9yYWdlLCB1dGxDYW5Vc2VMb2NhbFN0b3JhZ2UsIHV0bEdldExvY2FsU3RvcmFnZSwgdXRsU2V0TG9jYWxTdG9yYWdlLCB1dGxSZW1vdmVTdG9yYWdlLCB1dGxDYW5Vc2VTZXNzaW9uU3RvcmFnZSwgdXRsR2V0U2Vzc2lvblN0b3JhZ2VLZXlzLCB1dGxHZXRTZXNzaW9uU3RvcmFnZSwgdXRsU2V0U2Vzc2lvblN0b3JhZ2UsIHV0bFJlbW92ZVNlc3Npb25TdG9yYWdlIH0gZnJvbSBcIi4vU3RvcmFnZUhlbHBlckZ1bmNzXCI7XHJcbmV4cG9ydCB7IHVybFBhcnNlVXJsLCB1cmxHZXRBYnNvbHV0ZVVybCwgdXJsR2V0UGF0aE5hbWUsIHVybEdldENvbXBsZXRlVXJsLCB1cmxQYXJzZUhvc3QsIHVybFBhcnNlRnVsbEhvc3QgfSBmcm9tIFwiLi9VcmxIZWxwZXJGdW5jc1wiO1xyXG5leHBvcnQgdmFyIFByb3BlcnRpZXNQbHVnaW5JZGVudGlmaWVyID0gXCJBcHBJbnNpZ2h0c1Byb3BlcnRpZXNQbHVnaW5cIjtcclxuZXhwb3J0IHZhciBCcmVlemVDaGFubmVsSWRlbnRpZmllciA9IFwiQXBwSW5zaWdodHNDaGFubmVsUGx1Z2luXCI7XHJcbmV4cG9ydCB2YXIgQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllciA9IFwiQXBwbGljYXRpb25JbnNpZ2h0c0FuYWx5dGljc1wiO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbi5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBXZWIgQW5hbHl0aWNzLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG4vLyBAc2tpcC1maWxlLW1pbmlmeVxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyBBVVRPIEdFTkVSQVRFRCBGSUxFOiBUaGlzIGZpbGUgaXMgQXV0byBHZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkLlxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG4vLyBOb3RlOiBET04nVCBFeHBvcnQgdGhlc2UgY29uc3QgZnJvbSB0aGUgcGFja2FnZSBhcyB3ZSBhcmUgc3RpbGwgdGFyZ2V0aW5nIEVTMyB0aGlzIHdpbGwgZXhwb3J0IGEgbXV0YWJsZSB2YXJpYWJsZXMgdGhhdCBzb21lb25lIGNvdWxkIGNoYW5nZSEhIVxyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG5leHBvcnQgdmFyIF9EWU5fVE9fU1RSSU5HID0gXCJ0b1N0cmluZ1wiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fRElTQUJMRV9FWENFUFRJT05fVFIwID0gXCJkaXNhYmxlRXhjZXB0aW9uVHJhY2tpbmdcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0FVVE9fVFJBQ0tfUEFHRV9WSVNJMSA9IFwiYXV0b1RyYWNrUGFnZVZpc2l0VGltZVwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fT1ZFUlJJREVfUEFHRV9WSUVXX0QyID0gXCJvdmVycmlkZVBhZ2VWaWV3RHVyYXRpb25cIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0VOQUJMRV9VTkhBTkRMRURfUFJPMyA9IFwiZW5hYmxlVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvblRyYWNraW5nXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9TQU1QTElOR19QRVJDRU5UQUdFID0gXCJzYW1wbGluZ1BlcmNlbnRhZ2VcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0lTX1NUT1JBR0VfVVNFX0RJU0FCNCA9IFwiaXNTdG9yYWdlVXNlRGlzYWJsZWRcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0lTX0JST1dTRVJfTElOS19UUkFDNSA9IFwiaXNCcm93c2VyTGlua1RyYWNraW5nRW5hYmxlZFwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX0FVVE9fUk9VVEVfVFI2ID0gXCJlbmFibGVBdXRvUm91dGVUcmFja2luZ1wiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fTkFNRV9QUkVGSVggPSBcIm5hbWVQcmVmaXhcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0RJU0FCTEVfRkxVU0hfT05fQkVGNyA9IFwiZGlzYWJsZUZsdXNoT25CZWZvcmVVbmxvYWRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0RJU0FCTEVfRkxVU0hfT05fVU5MOCA9IFwiZGlzYWJsZUZsdXNoT25VbmxvYWRcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0NPUkUgPSBcImNvcmVcIjsgLy8gQ291bnQ6IDdcclxuZXhwb3J0IHZhciBfRFlOX0RBVEFfVFlQRSA9IFwiZGF0YVR5cGVcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX0VOVkVMT1BFX1RZUEUgPSBcImVudmVsb3BlVHlwZVwiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fRElBR19MT0cgPSBcImRpYWdMb2dcIjsgLy8gQ291bnQ6IDEzXHJcbmV4cG9ydCB2YXIgX0RZTl9UUkFDSyA9IFwidHJhY2tcIjsgLy8gQ291bnQ6IDdcclxuZXhwb3J0IHZhciBfRFlOX1RSQUNLX1BBR0VfVklFVyA9IFwidHJhY2tQYWdlVmlld1wiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fVFJBQ0tfUFJFVklPVVNfUEFHRV85ID0gXCJ0cmFja1ByZXZpb3VzUGFnZVZpc2l0XCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9TRU5EX1BBR0VfVklFV19JTlRFUjEwID0gXCJzZW5kUGFnZVZpZXdJbnRlcm5hbFwiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fU0VORF9QQUdFX1ZJRVdfUEVSRk8xMSA9IFwic2VuZFBhZ2VWaWV3UGVyZm9ybWFuY2VJbnRlcm5hbFwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fUE9QVUxBVEVfUEFHRV9WSUVXX1AxMiA9IFwicG9wdWxhdGVQYWdlVmlld1BlcmZvcm1hbmNlRXZlbnRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0hSRUYgPSBcImhyZWZcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX1NFTkRfRVhDRVBUSU9OX0lOVEVSMTMgPSBcInNlbmRFeGNlcHRpb25JbnRlcm5hbFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRVhDRVBUSU9OID0gXCJleGNlcHRpb25cIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0VSUk9SID0gXCJlcnJvclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fX09ORVJST1IgPSBcIl9vbmVycm9yXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9FUlJPUl9TUkMgPSBcImVycm9yU3JjXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9MSU5FX05VTUJFUiA9IFwibGluZU51bWJlclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fQ09MVU1OX05VTUJFUiA9IFwiY29sdW1uTnVtYmVyXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9NRVNTQUdFID0gXCJtZXNzYWdlXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9fQ1JFQVRFX0FVVE9fRVhDRVBUSTE0ID0gXCJDcmVhdGVBdXRvRXhjZXB0aW9uXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9BRERfVEVMRU1FVFJZX0lOSVRJQTE1ID0gXCJhZGRUZWxlbWV0cnlJbml0aWFsaXplclwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fRFVSQVRJT04gPSBcImR1cmF0aW9uXCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fTEVOR1RIID0gXCJsZW5ndGhcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTYgPSBcImlzUGVyZm9ybWFuY2VUaW1pbmdTdXBwb3J0ZWRcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9QRVJGT1JNQU5DRV9USU1JMTcgPSBcImdldFBlcmZvcm1hbmNlVGltaW5nXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9OQVZJR0FUSU9OX1NUQVJUID0gXCJuYXZpZ2F0aW9uU3RhcnRcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1NIT1VMRF9DT0xMRUNUX0RVUkFUMTggPSBcInNob3VsZENvbGxlY3REdXJhdGlvblwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fSVNfUEVSRk9STUFOQ0VfVElNSU4xOSA9IFwiaXNQZXJmb3JtYW5jZVRpbWluZ0RhdGFSZWFkeVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX0VOVFJJRVNfQllfVFlQRSA9IFwiZ2V0RW50cmllc0J5VHlwZVwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fUkVTUE9OU0VfU1RBUlQgPSBcInJlc3BvbnNlU3RhcnRcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX1JFUVVFU1RfU1RBUlQgPSBcInJlcXVlc3RTdGFydFwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fTE9BRF9FVkVOVF9FTkQgPSBcImxvYWRFdmVudEVuZFwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fUkVTUE9OU0VfRU5EID0gXCJyZXNwb25zZUVuZFwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fQ09OTkVDVF9FTkQgPSBcImNvbm5lY3RFbmRcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1BBR0VfVklTSVRfU1RBUlRfVElNMjAgPSBcInBhZ2VWaXNpdFN0YXJ0VGltZVwiOyAvLyBDb3VudDogMlxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1fX0R5bmFtaWNDb25zdGFudHMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gV2ViIEFuYWx5dGljcywgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgZGF0ZVRpbWVVdGlsc0R1cmF0aW9uIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb25cIjtcclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwsIGFyckZvckVhY2gsIGR1bXBPYmosIGdldERvY3VtZW50LCBnZXRFeGNlcHRpb25OYW1lLCBnZXRMb2NhdGlvbiwgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9EVVJBVElPTiwgX0RZTl9HRVRfUEVSRk9STUFOQ0VfVElNSTE3LCBfRFlOX0hSRUYsIF9EWU5fSVNfUEVSRk9STUFOQ0VfVElNSU4xNiwgX0RZTl9JU19QRVJGT1JNQU5DRV9USU1JTjE5LCBfRFlOX0xFTkdUSCwgX0RZTl9OQVZJR0FUSU9OX1NUQVJULCBfRFlOX1BPUFVMQVRFX1BBR0VfVklFV19QMTIsIF9EWU5fU0VORF9QQUdFX1ZJRVdfSU5URVIxMCwgX0RZTl9TRU5EX1BBR0VfVklFV19QRVJGTzExLCBfRFlOX1NIT1VMRF9DT0xMRUNUX0RVUkFUMTgsIF9EWU5fVFJBQ0tfUEFHRV9WSUVXIH0gZnJvbSBcIi4uLy4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG4vKipcclxuICogQ2xhc3MgZW5jYXBzdWxhdGVzIHNlbmRpbmcgcGFnZSB2aWV3cyBhbmQgcGFnZSB2aWV3IHBlcmZvcm1hbmNlIHRlbGVtZXRyeS5cclxuICovXHJcbnZhciBQYWdlVmlld01hbmFnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBQYWdlVmlld01hbmFnZXIoYXBwSW5zaWdodHMsIG92ZXJyaWRlUGFnZVZpZXdEdXJhdGlvbiwgY29yZSwgcGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIpIHtcclxuICAgICAgICBkeW5hbWljUHJvdG8oUGFnZVZpZXdNYW5hZ2VyLCB0aGlzLCBmdW5jdGlvbiAoX3NlbGYpIHtcclxuICAgICAgICAgICAgdmFyIGludGVydmFsSGFuZGxlID0gbnVsbDtcclxuICAgICAgICAgICAgdmFyIGl0ZW1RdWV1ZSA9IFtdO1xyXG4gICAgICAgICAgICB2YXIgcGFnZVZpZXdQZXJmb3JtYW5jZVNlbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdmFyIF9sb2dnZXI7XHJcbiAgICAgICAgICAgIGlmIChjb3JlKSB7XHJcbiAgICAgICAgICAgICAgICBfbG9nZ2VyID0gY29yZS5sb2dnZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2ZsdXNoQ2hhbm5lbHMoaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvcmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb3JlLmZsdXNoKGlzQXN5bmMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9hZGRRdWV1ZShjYikge1xyXG4gICAgICAgICAgICAgICAgaXRlbVF1ZXVlLnB1c2goY2IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpbnRlcnZhbEhhbmRsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGludGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbEl0ZW1zID0gaXRlbVF1ZXVlLnNsaWNlKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG9GbHVzaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUXVldWUgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChhbGxJdGVtcywgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IHByb2Nlc3NlZCBzbyByZXNjaGVkdWxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1RdWV1ZS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9GbHVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVF1ZXVlW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbEhhbmRsZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvRmx1c2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHByb2Nlc3MgYXQgbGVhc3Qgb25lIGl0ZW0gc28gZmx1c2ggdGhlIHF1ZXVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmx1c2hDaGFubmVscyh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pLCAxMDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fVFJBQ0tfUEFHRV9WSUVXIC8qIEBtaW46JTJldHJhY2tQYWdlVmlldyAqL10gPSBmdW5jdGlvbiAocGFnZVZpZXcsIGN1c3RvbVByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcGFnZVZpZXcubmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChuYW1lKSB8fCB0eXBlb2YgbmFtZSAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwYWdlVmlldy5uYW1lID0gZG9jICYmIGRvYy50aXRsZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHVyaSA9IHBhZ2VWaWV3LnVyaTtcclxuICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh1cmkpIHx8IHR5cGVvZiB1cmkgIT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25fMSA9IGdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJpID0gcGFnZVZpZXcudXJpID0gbG9jYXRpb25fMSAmJiBsb2NhdGlvbl8xW19EWU5fSFJFRiAvKiBAbWluOiUyZWhyZWYgKi9dIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBjYXNlIDFhLiBpZiBwZXJmb3JtYW5jZSB0aW1pbmcgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlciwgc2VuZCB0aGUgcGFnZSB2aWV3IHRlbGVtZXRyeSB3aXRoIHRoZSBkdXJhdGlvbiBwcm92aWRlZCBieSB0aGUgdXNlci4gSWYgdGhlIHVzZXJcclxuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBwcm92aWRlIHRoZSBkdXJhdGlvbiwgc2V0IGR1cmF0aW9uIHRvIHVuZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgLy8gQWxzbyB0aGlzIGlzIGNhc2UgNFxyXG4gICAgICAgICAgICAgICAgaWYgKCFwYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlcltfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTYgLyogQG1pbjolMmVpc1BlcmZvcm1hbmNlVGltaW5nU3VwcG9ydGVkICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSW5zaWdodHNbX0RZTl9TRU5EX1BBR0VfVklFV19JTlRFUjEwIC8qIEBtaW46JTJlc2VuZFBhZ2VWaWV3SW50ZXJuYWwgKi9dKHBhZ2VWaWV3LCBjdXN0b21Qcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgICAgICBfZmx1c2hDaGFubmVscyh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBubyBuYXZpZ2F0aW9uIHRpbWluZyAoSUUgOCwgaU9TIFNhZmFyaSA4LjQsIE9wZXJhIE1pbmkgOCAtIHNlZSBodHRwOi8vY2FuaXVzZS5jb20vI2ZlYXQ9bmF2LXRpbWluZylcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfbG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgMjUgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5OYXZpZ2F0aW9uVGltaW5nTm90U3VwcG9ydGVkICovLCBcInRyYWNrUGFnZVZpZXc6IG5hdmlnYXRpb24gdGltaW5nIEFQSSB1c2VkIGZvciBjYWxjdWxhdGlvbiBvZiBwYWdlIGR1cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLiBUaGlzIHBhZ2UgdmlldyB3aWxsIGJlIGNvbGxlY3RlZCB3aXRob3V0IGR1cmF0aW9uIGFuZCB0aW1pbmcgaW5mby5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHBhZ2VWaWV3U2VudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1c3RvbUR1cmF0aW9uO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIHBlcmZvcm1hbmNlIHRpbWluZyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXIsIGNhbGN1bGF0ZSB0aGUgY3VzdG9tIGR1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBwYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlcltfRFlOX0dFVF9QRVJGT1JNQU5DRV9USU1JMTcgLyogQG1pbjolMmVnZXRQZXJmb3JtYW5jZVRpbWluZyAqL10oKVtfRFlOX05BVklHQVRJT05fU1RBUlQgLyogQG1pbjolMmVuYXZpZ2F0aW9uU3RhcnQgKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUR1cmF0aW9uID0gZGF0ZVRpbWVVdGlsc0R1cmF0aW9uKHN0YXJ0LCArbmV3IERhdGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXJbX0RZTl9TSE9VTERfQ09MTEVDVF9EVVJBVDE4IC8qIEBtaW46JTJlc2hvdWxkQ29sbGVjdER1cmF0aW9uICovXShjdXN0b21EdXJhdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhlIHVzZXIgaGFzIHByb3ZpZGVkIGR1cmF0aW9uLCBzZW5kIGEgcGFnZSB2aWV3IHRlbGVtZXRyeSB3aXRoIHRoZSBwcm92aWRlZCBkdXJhdGlvbi4gT3RoZXJ3aXNlLCBpZlxyXG4gICAgICAgICAgICAgICAgLy8gb3ZlcnJpZGVQYWdlVmlld0R1cmF0aW9uIGlzIHNldCB0byB0cnVlLCBzZW5kIGEgcGFnZSB2aWV3IHRlbGVtZXRyeSB3aXRoIHRoZSBjdXN0b20gZHVyYXRpb24gY2FsY3VsYXRlZCBlYXJsaWVyXHJcbiAgICAgICAgICAgICAgICB2YXIgZHVyYXRpb247XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVByb3BlcnRpZXMpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVByb3BlcnRpZXNbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbiA9IGN1c3RvbVByb3BlcnRpZXNbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZVBhZ2VWaWV3RHVyYXRpb24gfHwgIWlzTmFOKGR1cmF0aW9uKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihkdXJhdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VzdG9tUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXNbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXSA9IGN1c3RvbUR1cmF0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIDJcclxuICAgICAgICAgICAgICAgICAgICBhcHBJbnNpZ2h0c1tfRFlOX1NFTkRfUEFHRV9WSUVXX0lOVEVSMTAgLyogQG1pbjolMmVzZW5kUGFnZVZpZXdJbnRlcm5hbCAqL10ocGFnZVZpZXcsIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9mbHVzaENoYW5uZWxzKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3U2VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBub3cgdHJ5IHRvIHNlbmQgdGhlIHBhZ2UgdmlldyBwZXJmb3JtYW5jZSB0ZWxlbWV0cnlcclxuICAgICAgICAgICAgICAgIHZhciBtYXhEdXJhdGlvbkxpbWl0ID0gNjAwMDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWN1c3RvbVByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzID0ge307XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBRdWV1ZSB0aGUgZXZlbnQgZm9yIHByb2Nlc3NpbmdcclxuICAgICAgICAgICAgICAgIF9hZGRRdWV1ZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb2Nlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlcltfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTkgLyogQG1pbjolMmVpc1BlcmZvcm1hbmNlVGltaW5nRGF0YVJlYWR5ICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhZ2VWaWV3UGVyZm9ybWFuY2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IHVyaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyW19EWU5fUE9QVUxBVEVfUEFHRV9WSUVXX1AxMiAvKiBAbWluOiUyZXBvcHVsYXRlUGFnZVZpZXdQZXJmb3JtYW5jZUV2ZW50ICovXShwYWdlVmlld1BlcmZvcm1hbmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFnZVZpZXdQZXJmb3JtYW5jZS5pc1ZhbGlkICYmICFwYWdlVmlld1NlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBuYXZpZ2F0aW9uIHRpbWluZyBnaXZlcyBpbnZhbGlkIG51bWJlcnMsIHRoZW4gZ28gYmFjayB0byBcIm92ZXJyaWRlIHBhZ2UgdmlldyBkdXJhdGlvblwiIG1vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhhdCdzIHRoZSBiZXN0IHZhbHVlIHdlIGNhbiBnZXQgdGhhdCBtYWtlcyBzZW5zZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzW19EWU5fRFVSQVRJT04gLyogQG1pbjolMmVkdXJhdGlvbiAqL10gPSBjdXN0b21EdXJhdGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBJbnNpZ2h0c1tfRFlOX1NFTkRfUEFHRV9WSUVXX0lOVEVSMTAgLyogQG1pbjolMmVzZW5kUGFnZVZpZXdJbnRlcm5hbCAqL10ocGFnZVZpZXcsIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlVmlld1NlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllc1tfRFlOX0RVUkFUSU9OIC8qIEBtaW46JTJlZHVyYXRpb24gKi9dID0gcGFnZVZpZXdQZXJmb3JtYW5jZS5kdXJhdGlvbk1zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBJbnNpZ2h0c1tfRFlOX1NFTkRfUEFHRV9WSUVXX0lOVEVSMTAgLyogQG1pbjolMmVzZW5kUGFnZVZpZXdJbnRlcm5hbCAqL10ocGFnZVZpZXcsIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhZ2VWaWV3UGVyZm9ybWFuY2VTZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluc2lnaHRzW19EWU5fU0VORF9QQUdFX1ZJRVdfUEVSRk8xMSAvKiBAbWluOiUyZXNlbmRQYWdlVmlld1BlcmZvcm1hbmNlSW50ZXJuYWwgKi9dKHBhZ2VWaWV3UGVyZm9ybWFuY2UsIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmlld1BlcmZvcm1hbmNlU2VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID4gMCAmJiBkYXRlVGltZVV0aWxzRHVyYXRpb24oc3RhcnQsICtuZXcgRGF0ZSkgPiBtYXhEdXJhdGlvbkxpbWl0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwZXJmb3JtYW5jZSB0aW1pbmdzIGFyZSBub3QgcmVhZHkgYnV0IHdlIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGR1cmF0aW9uIGxpbWl0LCBqdXN0IGxvZyBhIHBhZ2UgdmlldyB0ZWxlbWV0cnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIG1heGltdW0gZHVyYXRpb24gbGltaXQuIE90aGVyd2lzZSwga2VlcCB3YWl0aW5nIHVudGlsIHBlcmZvcm1hbmNlIHRpbWluZ3MgYXJlIHJlYWR5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlVmlld1NlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzW19EWU5fRFVSQVRJT04gLyogQG1pbjolMmVkdXJhdGlvbiAqL10gPSBtYXhEdXJhdGlvbkxpbWl0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluc2lnaHRzW19EWU5fU0VORF9QQUdFX1ZJRVdfSU5URVIxMCAvKiBAbWluOiUyZXNlbmRQYWdlVmlld0ludGVybmFsICovXShwYWdlVmlldywgY3VzdG9tUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX2xvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCAzOCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYWNrUFZGYWlsZWRDYWxjICovLCBcInRyYWNrUGFnZVZpZXcgZmFpbGVkIG9uIHBhZ2UgbG9hZCBjYWxjdWxhdGlvbjogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi50ZWFyZG93biA9IGZ1bmN0aW9uICh1bmxvYWRDdHgsIHVubG9hZFN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWxIYW5kbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSGFuZGxlKTtcclxuICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbEhhbmRsZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFsbEl0ZW1zID0gaXRlbVF1ZXVlLnNsaWNlKDApO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkb0ZsdXNoXzEgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUXVldWUgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKGFsbEl0ZW1zLCBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb0ZsdXNoXzEgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgUGFnZVZpZXdNYW5hZ2VyLnByb3RvdHlwZS50cmFja1BhZ2VWaWV3LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFBhZ2VWaWV3TWFuYWdlci5wcm90b3R5cGUudGVhcmRvd24uXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBQYWdlVmlld01hbmFnZXIuX19pZUR5bj0xO1xuXG4gICAgcmV0dXJuIFBhZ2VWaWV3TWFuYWdlcjtcclxufSgpKTtcclxuZXhwb3J0IHsgUGFnZVZpZXdNYW5hZ2VyIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2VWaWV3TWFuYWdlci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBXZWIgQW5hbHl0aWNzLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBkYXRlVGltZVV0aWxzRHVyYXRpb24sIG1zVG9UaW1lU3BhbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF90aHJvd0ludGVybmFsLCBnZXROYXZpZ2F0b3IsIGdldFBlcmZvcm1hbmNlLCBzYWZlR2V0TG9nZ2VyIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IF9EWU5fQ09OTkVDVF9FTkQsIF9EWU5fRFVSQVRJT04sIF9EWU5fR0VUX0VOVFJJRVNfQllfVFlQRSwgX0RZTl9HRVRfUEVSRk9STUFOQ0VfVElNSTE3LCBfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTYsIF9EWU5fSVNfUEVSRk9STUFOQ0VfVElNSU4xOSwgX0RZTl9MRU5HVEgsIF9EWU5fTE9BRF9FVkVOVF9FTkQsIF9EWU5fTkFWSUdBVElPTl9TVEFSVCwgX0RZTl9QT1BVTEFURV9QQUdFX1ZJRVdfUDEyLCBfRFlOX1JFUVVFU1RfU1RBUlQsIF9EWU5fUkVTUE9OU0VfRU5ELCBfRFlOX1JFU1BPTlNFX1NUQVJULCBfRFlOX1NIT1VMRF9DT0xMRUNUX0RVUkFUMTggfSBmcm9tIFwiLi4vLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBNQVhfRFVSQVRJT05fQUxMT1dFRCA9IDM2MDAwMDA7IC8vIDFoXHJcbnZhciBib3RBZ2VudE5hbWVzID0gW1wiZ29vZ2xlYm90XCIsIFwiYWRzYm90LWdvb2dsZVwiLCBcImFwaXMtZ29vZ2xlXCIsIFwibWVkaWFwYXJ0bmVycy1nb29nbGVcIl07XHJcbmZ1bmN0aW9uIF9pc1BlcmZvcm1hbmNlVGltaW5nU3VwcG9ydGVkKCkge1xyXG4gICAgdmFyIHBlcmYgPSBnZXRQZXJmb3JtYW5jZSgpO1xyXG4gICAgcmV0dXJuIHBlcmYgJiYgISFwZXJmLnRpbWluZztcclxufVxyXG5mdW5jdGlvbiBfaXNQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmdTdXBwb3J0ZWQoKSB7XHJcbiAgICB2YXIgcGVyZiA9IGdldFBlcmZvcm1hbmNlKCk7XHJcbiAgICByZXR1cm4gcGVyZiAmJiBwZXJmLmdldEVudHJpZXNCeVR5cGUgJiYgcGVyZi5nZXRFbnRyaWVzQnlUeXBlKFwibmF2aWdhdGlvblwiKVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwO1xyXG59XHJcbmZ1bmN0aW9uIF9pc1BlcmZvcm1hbmNlVGltaW5nRGF0YVJlYWR5KCkge1xyXG4gICAgdmFyIHBlcmYgPSBnZXRQZXJmb3JtYW5jZSgpO1xyXG4gICAgdmFyIHRpbWluZyA9IHBlcmYgPyBwZXJmLnRpbWluZyA6IDA7XHJcbiAgICByZXR1cm4gdGltaW5nXHJcbiAgICAgICAgJiYgdGltaW5nLmRvbWFpbkxvb2t1cFN0YXJ0ID4gMFxyXG4gICAgICAgICYmIHRpbWluZ1tfRFlOX05BVklHQVRJT05fU1RBUlQgLyogQG1pbjolMmVuYXZpZ2F0aW9uU3RhcnQgKi9dID4gMFxyXG4gICAgICAgICYmIHRpbWluZ1tfRFlOX1JFU1BPTlNFX1NUQVJUIC8qIEBtaW46JTJlcmVzcG9uc2VTdGFydCAqL10gPiAwXHJcbiAgICAgICAgJiYgdGltaW5nW19EWU5fUkVRVUVTVF9TVEFSVCAvKiBAbWluOiUyZXJlcXVlc3RTdGFydCAqL10gPiAwXHJcbiAgICAgICAgJiYgdGltaW5nW19EWU5fTE9BRF9FVkVOVF9FTkQgLyogQG1pbjolMmVsb2FkRXZlbnRFbmQgKi9dID4gMFxyXG4gICAgICAgICYmIHRpbWluZ1tfRFlOX1JFU1BPTlNFX0VORCAvKiBAbWluOiUyZXJlc3BvbnNlRW5kICovXSA+IDBcclxuICAgICAgICAmJiB0aW1pbmdbX0RZTl9DT05ORUNUX0VORCAvKiBAbWluOiUyZWNvbm5lY3RFbmQgKi9dID4gMFxyXG4gICAgICAgICYmIHRpbWluZy5kb21Mb2FkaW5nID4gMDtcclxufVxyXG5mdW5jdGlvbiBfZ2V0UGVyZm9ybWFuY2VUaW1pbmcoKSB7XHJcbiAgICBpZiAoX2lzUGVyZm9ybWFuY2VUaW1pbmdTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIHJldHVybiBnZXRQZXJmb3JtYW5jZSgpLnRpbWluZztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcbmZ1bmN0aW9uIF9nZXRQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcoKSB7XHJcbiAgICBpZiAoX2lzUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICByZXR1cm4gZ2V0UGVyZm9ybWFuY2UoKVtfRFlOX0dFVF9FTlRSSUVTX0JZX1RZUEUgLyogQG1pbjolMmVnZXRFbnRyaWVzQnlUeXBlICovXShcIm5hdmlnYXRpb25cIilbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4vKipcclxuKiBUaGlzIG1ldGhvZCB0ZWxscyBpZiBnaXZlbiBkdXJhdGlvbnMgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gY29sbGVjdGlvbi5cclxuKi9cclxuZnVuY3Rpb24gX3Nob3VsZENvbGxlY3REdXJhdGlvbigpIHtcclxuICAgIHZhciBkdXJhdGlvbnMgPSBbXTtcclxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgZHVyYXRpb25zW19pXSA9IGFyZ3VtZW50c1tfaV07XHJcbiAgICB9XHJcbiAgICB2YXIgX25hdmlnYXRvciA9IGdldE5hdmlnYXRvcigpIHx8IHt9O1xyXG4gICAgLy8gYSBmdWxsIGxpc3Qgb2YgR29vZ2xlIGNyYXdsZXJzIHVzZXIgYWdlbnQgc3RyaW5ncyAtIGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL3dlYm1hc3RlcnMvYW5zd2VyLzEwNjE5NDM/aGw9ZW5cclxuICAgIHZhciB1c2VyQWdlbnQgPSBfbmF2aWdhdG9yLnVzZXJBZ2VudDtcclxuICAgIHZhciBpc0dvb2dsZUJvdCA9IGZhbHNlO1xyXG4gICAgaWYgKHVzZXJBZ2VudCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm90QWdlbnROYW1lc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGkrKykge1xyXG4gICAgICAgICAgICBpc0dvb2dsZUJvdCA9IGlzR29vZ2xlQm90IHx8IHVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoYm90QWdlbnROYW1lc1tpXSkgIT09IC0xO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChpc0dvb2dsZUJvdCkge1xyXG4gICAgICAgIC8vIERvbid0IHJlcG9ydCBkdXJhdGlvbnMgZm9yIEdvb2dsZUJvdCwgaXQgaXMgcmV0dXJuaW5nIGludmFsaWQgdmFsdWVzIGluIHBlcmZvcm1hbmNlLnRpbWluZyBBUEkuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgLy8gZm9yIG90aGVyIHBhZ2Ugdmlld3MsIGRvbid0IHJlcG9ydCBpZiBpdCdzIG91dHNpZGUgb2YgYSByZWFzb25hYmxlIHJhbmdlXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkdXJhdGlvbnNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGR1cmF0aW9uc1tpXSA8IDAgfHwgZHVyYXRpb25zW2ldID49IE1BWF9EVVJBVElPTl9BTExPV0VEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxufVxyXG4vKipcclxuICogQ2xhc3MgZW5jYXBzdWxhdGVzIHNlbmRpbmcgcGFnZSB2aWV3IHBlcmZvcm1hbmNlIHRlbGVtZXRyeS5cclxuICovXHJcbnZhciBQYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyKGNvcmUpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBfbG9nZ2VyID0gc2FmZUdldExvZ2dlcihjb3JlKTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oUGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1BPUFVMQVRFX1BBR0VfVklFV19QMTIgLyogQG1pbjolMmVwb3B1bGF0ZVBhZ2VWaWV3UGVyZm9ybWFuY2VFdmVudCAqL10gPSBmdW5jdGlvbiAocGFnZVZpZXdQZXJmb3JtYW5jZSkge1xyXG4gICAgICAgICAgICAgICAgcGFnZVZpZXdQZXJmb3JtYW5jZS5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgICAgICogaHR0cDovL3d3dy53My5vcmcvVFIvbmF2aWdhdGlvbi10aW1pbmcvI3Byb2Nlc3NpbmctbW9kZWxcclxuICAgICAgICAgICAgICAgICAqICB8LW5hdmlnYXRpb25TdGFydFxyXG4gICAgICAgICAgICAgICAgICogIHwgICAgICAgICAgICAgfC1jb25uZWN0RW5kXHJcbiAgICAgICAgICAgICAgICAgKiAgfCAgICAgICAgICAgICB8fC1yZXF1ZXN0U3RhcnRcclxuICAgICAgICAgICAgICAgICAqICB8ICAgICAgICAgICAgIHx8ICAgICAgICAgICAgIHwtcmVzcG9uc2VTdGFydFxyXG4gICAgICAgICAgICAgICAgICogIHwgICAgICAgICAgICAgfHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfC1yZXNwb25zZUVuZFxyXG4gICAgICAgICAgICAgICAgICogIHwgICAgICAgICAgICAgfHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfFxyXG4gICAgICAgICAgICAgICAgICogIHwgICAgICAgICAgICAgfHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgIHwtbG9hZEV2ZW50RW5kXHJcbiAgICAgICAgICAgICAgICAgKiAgfC0tLW5ldHdvcmstLS18fC0tLXJlcXVlc3QtLS18LS0tcmVzcG9uc2UtLS18LS0tZG9tLS0tfFxyXG4gICAgICAgICAgICAgICAgICogIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXRvdGFsLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcclxuICAgICAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAgICAgKiAgdG90YWwgPSBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb2FkIGV2ZW50IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGlzIGNvbXBsZXRlZCBhbmQgdGhlIGZpcnN0IHJlY29yZGVkIHRpbWVzdGFtcCBvZiB0aGUgcGVyZm9ybWFuY2UgZW50cnkgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9QZXJmb3JtYW5jZS9OYXZpZ2F0aW9uX2FuZF9yZXNvdXJjZV90aW1pbmdzI2R1cmF0aW9uXHJcbiAgICAgICAgICAgICAgICAgKiAgbmV0d29yayA9IFJlZGlyZWN0IHRpbWUgKyBBcHAgQ2FjaGUgKyBETlMgbG9va3VwIHRpbWUgKyBUQ1AgY29ubmVjdGlvbiB0aW1lXHJcbiAgICAgICAgICAgICAgICAgKiAgcmVxdWVzdCA9IFJlcXVlc3QgdGltZSA6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1BlcmZvcm1hbmNlL05hdmlnYXRpb25fYW5kX3Jlc291cmNlX3RpbWluZ3MjcmVxdWVzdF90aW1lXHJcbiAgICAgICAgICAgICAgICAgKiAgcmVzcG9uc2UgPSBSZXNwb25zZSB0aW1lXHJcbiAgICAgICAgICAgICAgICAgKiAgZG9tID0gRG9jdW1lbnQgbG9hZCB0aW1lIDogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9jdW1lbnQtbG9hZC10aW1pbmctaW5mb1xyXG4gICAgICAgICAgICAgICAgICogICAgICA9IERvY3VtZW50IHByb2Nlc3NpbmcgdGltZSA6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYi9mdW5kYW1lbnRhbHMvcGVyZm9ybWFuY2UvbmF2aWdhdGlvbi1hbmQtcmVzb3VyY2UtdGltaW5nLyNkb2N1bWVudF9wcm9jZXNzaW5nXHJcbiAgICAgICAgICAgICAgICAgKiAgICAgICsgTG9hZGluZyB0aW1lIDogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vd2ViL2Z1bmRhbWVudGFscy9wZXJmb3JtYW5jZS9uYXZpZ2F0aW9uLWFuZC1yZXNvdXJjZS10aW1pbmcvI2xvYWRpbmdcclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIG5hdmlnYXRpb25UaW1pbmcgPSBfZ2V0UGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltaW5nID0gX2dldFBlcmZvcm1hbmNlVGltaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdG90YWwgPSAwO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ldHdvcmsgPSAwO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSAwO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gMDtcclxuICAgICAgICAgICAgICAgIHZhciBkb20gPSAwO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25UaW1pbmcgfHwgdGltaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25UaW1pbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgPSBuYXZpZ2F0aW9uVGltaW5nW19EWU5fRFVSQVRJT04gLyogQG1pbjolMmVkdXJhdGlvbiAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBzdXBwb3J0IGJvdGggY2FzZXM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIC0gc3RhcnRUaW1lIGlzIGFsd2F5cyB6ZXJvOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIC0gZm9yIG9sZGVyIGJyb3dzZXJzIHdoZXJlIHRoZSBzdGFydFRpbWUgaXMgbm90IHplcm9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgPSBuYXZpZ2F0aW9uVGltaW5nLnN0YXJ0VGltZSA9PT0gMCA/IG5hdmlnYXRpb25UaW1pbmdbX0RZTl9DT05ORUNUX0VORCAvKiBAbWluOiUyZWNvbm5lY3RFbmQgKi9dIDogZGF0ZVRpbWVVdGlsc0R1cmF0aW9uKG5hdmlnYXRpb25UaW1pbmcuc3RhcnRUaW1lLCBuYXZpZ2F0aW9uVGltaW5nW19EWU5fQ09OTkVDVF9FTkQgLyogQG1pbjolMmVjb25uZWN0RW5kICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBkYXRlVGltZVV0aWxzRHVyYXRpb24obmF2aWdhdGlvblRpbWluZy5yZXF1ZXN0U3RhcnQsIG5hdmlnYXRpb25UaW1pbmdbX0RZTl9SRVNQT05TRV9TVEFSVCAvKiBAbWluOiUyZXJlc3BvbnNlU3RhcnQgKi9dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBkYXRlVGltZVV0aWxzRHVyYXRpb24obmF2aWdhdGlvblRpbWluZ1tfRFlOX1JFU1BPTlNFX1NUQVJUIC8qIEBtaW46JTJlcmVzcG9uc2VTdGFydCAqL10sIG5hdmlnYXRpb25UaW1pbmdbX0RZTl9SRVNQT05TRV9FTkQgLyogQG1pbjolMmVyZXNwb25zZUVuZCAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb20gPSBkYXRlVGltZVV0aWxzRHVyYXRpb24obmF2aWdhdGlvblRpbWluZy5yZXNwb25zZUVuZCwgbmF2aWdhdGlvblRpbWluZ1tfRFlOX0xPQURfRVZFTlRfRU5EIC8qIEBtaW46JTJlbG9hZEV2ZW50RW5kICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCA9IGRhdGVUaW1lVXRpbHNEdXJhdGlvbih0aW1pbmdbX0RZTl9OQVZJR0FUSU9OX1NUQVJUIC8qIEBtaW46JTJlbmF2aWdhdGlvblN0YXJ0ICovXSwgdGltaW5nW19EWU5fTE9BRF9FVkVOVF9FTkQgLyogQG1pbjolMmVsb2FkRXZlbnRFbmQgKi9dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayA9IGRhdGVUaW1lVXRpbHNEdXJhdGlvbih0aW1pbmdbX0RZTl9OQVZJR0FUSU9OX1NUQVJUIC8qIEBtaW46JTJlbmF2aWdhdGlvblN0YXJ0ICovXSwgdGltaW5nW19EWU5fQ09OTkVDVF9FTkQgLyogQG1pbjolMmVjb25uZWN0RW5kICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBkYXRlVGltZVV0aWxzRHVyYXRpb24odGltaW5nLnJlcXVlc3RTdGFydCwgdGltaW5nW19EWU5fUkVTUE9OU0VfU1RBUlQgLyogQG1pbjolMmVyZXNwb25zZVN0YXJ0ICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gZGF0ZVRpbWVVdGlsc0R1cmF0aW9uKHRpbWluZ1tfRFlOX1JFU1BPTlNFX1NUQVJUIC8qIEBtaW46JTJlcmVzcG9uc2VTdGFydCAqL10sIHRpbWluZ1tfRFlOX1JFU1BPTlNFX0VORCAvKiBAbWluOiUyZXJlc3BvbnNlRW5kICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbSA9IGRhdGVUaW1lVXRpbHNEdXJhdGlvbih0aW1pbmcucmVzcG9uc2VFbmQsIHRpbWluZ1tfRFlOX0xPQURfRVZFTlRfRU5EIC8qIEBtaW46JTJlbG9hZEV2ZW50RW5kICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3RhbCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfbG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgMTAgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5FcnJvclBWQ2FsYyAqLywgXCJlcnJvciBjYWxjdWxhdGluZyBwYWdlIHZpZXcgcGVyZm9ybWFuY2UuXCIsIHsgdG90YWw6IHRvdGFsLCBuZXR3b3JrOiBuZXR3b3JrLCByZXF1ZXN0OiByZXF1ZXN0LCByZXNwb25zZTogcmVzcG9uc2UsIGRvbTogZG9tIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghX3RoaXNbX0RZTl9TSE9VTERfQ09MTEVDVF9EVVJBVDE4IC8qIEBtaW46JTJlc2hvdWxkQ29sbGVjdER1cmF0aW9uICovXSh0b3RhbCwgbmV0d29yaywgcmVxdWVzdCwgcmVzcG9uc2UsIGRvbSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX2xvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQ1IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuSW52YWxpZER1cmF0aW9uVmFsdWUgKi8sIFwiSW52YWxpZCBwYWdlIGxvYWQgZHVyYXRpb24gdmFsdWUuIEJyb3dzZXIgcGVyZiBkYXRhIHdvbid0IGJlIHNlbnQuXCIsIHsgdG90YWw6IHRvdGFsLCBuZXR3b3JrOiBuZXR3b3JrLCByZXF1ZXN0OiByZXF1ZXN0LCByZXNwb25zZTogcmVzcG9uc2UsIGRvbTogZG9tIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b3RhbCA8IE1hdGguZmxvb3IobmV0d29yaykgKyBNYXRoLmZsb29yKHJlcXVlc3QpICsgTWF0aC5mbG9vcihyZXNwb25zZSkgKyBNYXRoLmZsb29yKGRvbSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc29tZSBicm93c2VycyBtYXkgcmVwb3J0IGluZGl2aWR1YWwgY29tcG9uZW50cyBpbmNvcnJlY3RseSBzbyB0aGF0IHRoZSBzdW0gb2YgdGhlIHBhcnRzIHdpbGwgYmUgYmlnZ2VyIHRoYW4gdG90YWwgUExUXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSwgZG9uJ3QgcmVwb3J0IGNsaWVudCBwZXJmb3JtYW5jZSBmcm9tIHRoaXMgcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfbG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgOCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNsaWVudFBlcmZvcm1hbmNlTWF0aEVycm9yICovLCBcImNsaWVudCBwZXJmb3JtYW5jZSBtYXRoIGVycm9yLlwiLCB7IHRvdGFsOiB0b3RhbCwgbmV0d29yazogbmV0d29yaywgcmVxdWVzdDogcmVxdWVzdCwgcmVzcG9uc2U6IHJlc3BvbnNlLCBkb206IGRvbSB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2UuZHVyYXRpb25NcyA9IHRvdGFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAvLyBjb252ZXJ0IHRvIHRpbWVzcGFuc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmlld1BlcmZvcm1hbmNlLnBlcmZUb3RhbCA9IHBhZ2VWaWV3UGVyZm9ybWFuY2VbX0RZTl9EVVJBVElPTiAvKiBAbWluOiUyZWR1cmF0aW9uICovXSA9IG1zVG9UaW1lU3Bhbih0b3RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2UubmV0d29ya0Nvbm5lY3QgPSBtc1RvVGltZVNwYW4obmV0d29yayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2Uuc2VudFJlcXVlc3QgPSBtc1RvVGltZVNwYW4ocmVxdWVzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2UucmVjZWl2ZWRSZXNwb25zZSA9IG1zVG9UaW1lU3BhbihyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VWaWV3UGVyZm9ybWFuY2UuZG9tUHJvY2Vzc2luZyA9IG1zVG9UaW1lU3Bhbihkb20pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmlld1BlcmZvcm1hbmNlLmlzVmFsaWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9HRVRfUEVSRk9STUFOQ0VfVElNSTE3IC8qIEBtaW46JTJlZ2V0UGVyZm9ybWFuY2VUaW1pbmcgKi9dID0gX2dldFBlcmZvcm1hbmNlVGltaW5nO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTYgLyogQG1pbjolMmVpc1BlcmZvcm1hbmNlVGltaW5nU3VwcG9ydGVkICovXSA9IF9pc1BlcmZvcm1hbmNlVGltaW5nU3VwcG9ydGVkO1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0lTX1BFUkZPUk1BTkNFX1RJTUlOMTkgLyogQG1pbjolMmVpc1BlcmZvcm1hbmNlVGltaW5nRGF0YVJlYWR5ICovXSA9IF9pc1BlcmZvcm1hbmNlVGltaW5nRGF0YVJlYWR5O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1NIT1VMRF9DT0xMRUNUX0RVUkFUMTggLyogQG1pbjolMmVzaG91bGRDb2xsZWN0RHVyYXRpb24gKi9dID0gX3Nob3VsZENvbGxlY3REdXJhdGlvbjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBQYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlci5wcm90b3R5cGUucG9wdWxhdGVQYWdlVmlld1BlcmZvcm1hbmNlRXZlbnQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgUGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIucHJvdG90eXBlLmdldFBlcmZvcm1hbmNlVGltaW5nLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyLnByb3RvdHlwZS5pc1BlcmZvcm1hbmNlVGltaW5nU3VwcG9ydGVkLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyLnByb3RvdHlwZS5pc1BlcmZvcm1hbmNlVGltaW5nRGF0YVJlYWR5LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyLnByb3RvdHlwZS5zaG91bGRDb2xsZWN0RHVyYXRpb24uXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBQYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlci5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gUGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFdlYiBBbmFseXRpY3MsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IHV0bENhblVzZVNlc3Npb25TdG9yYWdlLCB1dGxHZXRTZXNzaW9uU3RvcmFnZSwgdXRsUmVtb3ZlU2Vzc2lvblN0b3JhZ2UsIHV0bFNldFNlc3Npb25TdG9yYWdlIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb25cIjtcclxuaW1wb3J0IHsgX3dhcm5Ub0NvbnNvbGUsIGRhdGVOb3csIGR1bXBPYmosIGdldEpTT04sIGhhc0pTT04sIG9iakRlZmluZUFjY2Vzc29ycywgdGhyb3dFcnJvciB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBfRFlOX1BBR0VfVklTSVRfU1RBUlRfVElNMjAsIF9EWU5fVFJBQ0tfUFJFVklPVVNfUEFHRV85IH0gZnJvbSBcIi4uLy4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG4vKipcclxuICogVXNlZCB0byB0cmFjayBwYWdlIHZpc2l0IGR1cmF0aW9uc1xyXG4gKi9cclxudmFyIFBhZ2VWaXNpdFRpbWVNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFBhZ2VWaXNpdFRpbWVNYW5hZ2VyXHJcbiAgICAgKiBAcGFyYW0gcGFnZVZpc2l0VGltZVRyYWNraW5nSGFuZGxlciBEZWxlZ2F0ZSB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIHNlbmQgdGVsZW1ldHJ5IGRhdGEgdG8gQUkgKHdoZW4gdHJhY2tQcmV2aW91c1BhZ2VWaXNpdCBpcyBjYWxsZWQpXHJcbiAgICAgKiBAcmV0dXJucyB7fVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBQYWdlVmlzaXRUaW1lTWFuYWdlcihsb2dnZXIsIHBhZ2VWaXNpdFRpbWVUcmFja2luZ0hhbmRsZXIpIHtcclxuICAgICAgICB2YXIgcHJldlBhZ2VWaXNpdERhdGFLZXlOYW1lID0gXCJwcmV2UGFnZVZpc2l0RGF0YVwiO1xyXG4gICAgICAgIGR5bmFtaWNQcm90byhQYWdlVmlzaXRUaW1lTWFuYWdlciwgdGhpcywgZnVuY3Rpb24gKF9zZWxmKSB7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fVFJBQ0tfUFJFVklPVVNfUEFHRV85IC8qIEBtaW46JTJldHJhY2tQcmV2aW91c1BhZ2VWaXNpdCAqL10gPSBmdW5jdGlvbiAoY3VycmVudFBhZ2VOYW1lLCBjdXJyZW50UGFnZVVybCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBSZXN0YXJ0IHRpbWVyIGZvciBuZXcgcGFnZSB2aWV3XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZQYWdlVmlzaXRUaW1lRGF0YSA9IHJlc3RhcnRQYWdlVmlzaXRUaW1lcihjdXJyZW50UGFnZU5hbWUsIGN1cnJlbnRQYWdlVXJsKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYSBwYWdlIGFscmVhZHkgYmVpbmcgdGltZWQsIHRyYWNrIHRoZSB2aXNpdCB0aW1lIGZvciBpdCBub3cuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZQYWdlVmlzaXRUaW1lRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmlzaXRUaW1lVHJhY2tpbmdIYW5kbGVyKHByZXZQYWdlVmlzaXRUaW1lRGF0YS5wYWdlTmFtZSwgcHJldlBhZ2VWaXNpdFRpbWVEYXRhLnBhZ2VVcmwsIHByZXZQYWdlVmlzaXRUaW1lRGF0YS5wYWdlVmlzaXRUaW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF93YXJuVG9Db25zb2xlKGxvZ2dlciwgXCJBdXRvIHRyYWNrIHBhZ2UgdmlzaXQgdGltZSBmYWlsZWQsIG1ldHJpYyB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQ6IFwiICsgZHVtcE9iaihlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBTdG9wcyB0aW1pbmcgb2YgY3VycmVudCBwYWdlIChpZiBleGlzdHMpIGFuZCBzdGFydHMgdGltaW5nIGZvciBkdXJhdGlvbiBvZiB2aXNpdCB0byBwYWdlTmFtZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGFnZU5hbWUgTmFtZSBvZiBwYWdlIHRvIGJlZ2luIHRpbWluZyB2aXNpdCBkdXJhdGlvblxyXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7UGFnZVZpc2l0RGF0YX0gUGFnZSB2aXNpdCBkYXRhIChpbmNsdWRpbmcgZHVyYXRpb24pIG9mIHBhZ2VOYW1lIGZyb20gbGFzdCBjYWxsIHRvIHN0YXJ0IG9yIHJlc3RhcnQsIGlmIGV4aXN0cy4gTnVsbCBpZiBub3QuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiByZXN0YXJ0UGFnZVZpc2l0VGltZXIocGFnZU5hbWUsIHBhZ2VVcmwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwcmV2UGFnZVZpc2l0RGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZQYWdlVmlzaXREYXRhID0gc3RvcFBhZ2VWaXNpdFRpbWVyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRQYWdlVmlzaXRUaW1lcihwYWdlTmFtZSwgcGFnZVVybCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF93YXJuVG9Db25zb2xlKGxvZ2dlciwgXCJDYWxsIHRvIHJlc3RhcnQgZmFpbGVkOiBcIiArIGR1bXBPYmooZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHByZXZQYWdlVmlzaXREYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2UGFnZVZpc2l0RGF0YTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU3RhcnRzIHRpbWluZyB2aXNpdCBkdXJhdGlvbiBvZiBwYWdlTmFtZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGFnZU5hbWVcclxuICAgICAgICAgICAgICogQHJldHVybnMge31cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0UGFnZVZpc2l0VGltZXIocGFnZU5hbWUsIHBhZ2VVcmwpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHV0bENhblVzZVNlc3Npb25TdG9yYWdlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHV0bEdldFNlc3Npb25TdG9yYWdlKGxvZ2dlciwgcHJldlBhZ2VWaXNpdERhdGFLZXlOYW1lKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKFwiQ2Fubm90IGNhbGwgc3RhcnRQYWdlVmlzaXQgY29uc2VjdXRpdmVseSB3aXRob3V0IGZpcnN0IGNhbGxpbmcgc3RvcFBhZ2VWaXNpdFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3VyclBhZ2VWaXNpdERhdGEgPSBuZXcgUGFnZVZpc2l0RGF0YShwYWdlTmFtZSwgcGFnZVVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyUGFnZVZpc2l0RGF0YVN0ciA9IGdldEpTT04oKS5zdHJpbmdpZnkoY3VyclBhZ2VWaXNpdERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1dGxTZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIHByZXZQYWdlVmlzaXREYXRhS2V5TmFtZSwgY3VyclBhZ2VWaXNpdERhdGFTdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgY2F0Y2ggaW4gbmV4dCBwaGFzZSwgc2luY2UgaWYgc3RhcnQgaXMgY2FsbGVkIHR3aWNlIGluIGEgcm93IHRoZSBleGNlcHRpb24gbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCBvdXRcclxuICAgICAgICAgICAgICAgICAgICBfd2FyblRvQ29uc29sZShsb2dnZXIsIFwiQ2FsbCB0byBzdGFydCBmYWlsZWQ6IFwiICsgZHVtcE9iaihlKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFN0b3BzIHRpbWluZyBvZiBjdXJyZW50IHBhZ2UsIGlmIGV4aXN0cy5cclxuICAgICAgICAgICAgICogQHJldHVybnMge1BhZ2VWaXNpdERhdGF9IFBhZ2UgdmlzaXQgZGF0YSAoaW5jbHVkaW5nIGR1cmF0aW9uKSBvZiBwYWdlTmFtZSBmcm9tIGNhbGwgdG8gc3RhcnQsIGlmIGV4aXN0cy4gTnVsbCBpZiBub3QuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBzdG9wUGFnZVZpc2l0VGltZXIoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJldlBhZ2VWaXNpdERhdGEgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmUgZW5kIHRpbWUgb2YgcGFnZSdzIHZpc2l0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYWdlVmlzaXRFbmRUaW1lID0gZGF0ZU5vdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gcmV0cmlldmUgIHBhZ2UgbmFtZSBhbmQgc3RhcnQgdGltZSBmcm9tIHNlc3Npb24gc3RvcmFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFnZVZpc2l0RGF0YUpzb25TdHIgPSB1dGxHZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIHByZXZQYWdlVmlzaXREYXRhS2V5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWdlVmlzaXREYXRhSnNvblN0ciAmJiBoYXNKU09OKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHByZXZpb3VzIHBhZ2UgZGF0YSBleGlzdHMsIHNldCBlbmQgdGltZSBvZiB2aXNpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2VWaXNpdERhdGEgPSBnZXRKU09OKCkucGFyc2UocGFnZVZpc2l0RGF0YUpzb25TdHIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlBhZ2VWaXNpdERhdGEucGFnZVZpc2l0VGltZSA9IHBhZ2VWaXNpdEVuZFRpbWUgLSBwcmV2UGFnZVZpc2l0RGF0YVtfRFlOX1BBR0VfVklTSVRfU1RBUlRfVElNMjAgLyogQG1pbjolMmVwYWdlVmlzaXRTdGFydFRpbWUgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGRhdGEgZnJvbSBzdG9yYWdlIHNpbmNlIHdlIGFscmVhZHkgdXNlZCBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRsUmVtb3ZlU2Vzc2lvblN0b3JhZ2UobG9nZ2VyLCBwcmV2UGFnZVZpc2l0RGF0YUtleU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfd2FyblRvQ29uc29sZShsb2dnZXIsIFwiU3RvcCBwYWdlIHZpc2l0IHRpbWVyIGZhaWxlZDogXCIgKyBkdW1wT2JqKGUpKTtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2UGFnZVZpc2l0RGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldlBhZ2VWaXNpdERhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuICAgICAgICAgICAgb2JqRGVmaW5lQWNjZXNzb3JzKF9zZWxmLCBcIl9sb2dnZXJcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gbG9nZ2VyOyB9KTtcclxuICAgICAgICAgICAgb2JqRGVmaW5lQWNjZXNzb3JzKF9zZWxmLCBcInBhZ2VWaXNpdFRpbWVUcmFja2luZ0hhbmRsZXJcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFnZVZpc2l0VGltZVRyYWNraW5nSGFuZGxlcjsgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgUGFnZVZpc2l0VGltZU1hbmFnZXIucHJvdG90eXBlLnRyYWNrUHJldmlvdXNQYWdlVmlzaXQuXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBQYWdlVmlzaXRUaW1lTWFuYWdlci5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gUGFnZVZpc2l0VGltZU1hbmFnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFBhZ2VWaXNpdFRpbWVNYW5hZ2VyIH07XHJcbnZhciBQYWdlVmlzaXREYXRhID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gUGFnZVZpc2l0RGF0YShwYWdlTmFtZSwgcGFnZVVybCkge1xyXG4gICAgICAgIHRoaXNbX0RZTl9QQUdFX1ZJU0lUX1NUQVJUX1RJTTIwIC8qIEBtaW46JTJlcGFnZVZpc2l0U3RhcnRUaW1lICovXSA9IGRhdGVOb3coKTtcclxuICAgICAgICB0aGlzLnBhZ2VOYW1lID0gcGFnZU5hbWU7XHJcbiAgICAgICAgdGhpcy5wYWdlVXJsID0gcGFnZVVybDtcclxuICAgIH1cclxuICAgIHJldHVybiBQYWdlVmlzaXREYXRhO1xyXG59KCkpO1xyXG5leHBvcnQgeyBQYWdlVmlzaXREYXRhIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVBhZ2VWaXNpdFRpbWVNYW5hZ2VyLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFdlYiBBbmFseXRpY3MsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IGRhdGVUaW1lVXRpbHNEdXJhdGlvbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF90aHJvd0ludGVybmFsIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbi8qKlxyXG4gKiBVc2VkIHRvIHJlY29yZCB0aW1lZCBldmVudHMgYW5kIHBhZ2Ugdmlld3MuXHJcbiAqL1xyXG52YXIgVGltaW5nID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gVGltaW5nKGxvZ2dlciwgbmFtZSkge1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdmFyIF9ldmVudHMgPSB7fTtcclxuICAgICAgICBfc2VsZi5zdGFydCA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgX2V2ZW50c1tuYW1lXSAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNjIgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5TdGFydENhbGxlZE1vcmVUaGFuT25jZSAqLywgXCJzdGFydCB3YXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGZvciB0aGlzIGV2ZW50IHdpdGhvdXQgY2FsbGluZyBzdG9wLlwiLCB7IG5hbWU6IG5hbWUsIGtleTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfZXZlbnRzW25hbWVdID0gK25ldyBEYXRlO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgX3NlbGYuc3RvcCA9IGZ1bmN0aW9uIChuYW1lLCB1cmwsIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cykge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBfZXZlbnRzW25hbWVdO1xyXG4gICAgICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA2MyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlN0b3BDYWxsZWRXaXRob3V0U3RhcnQgKi8sIFwic3RvcCB3YXMgY2FsbGVkIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHN0YXJ0LlwiLCB7IG5hbWU6IG5hbWUsIGtleTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbmQgPSArbmV3IERhdGU7XHJcbiAgICAgICAgICAgICAgICB2YXIgZHVyYXRpb24gPSBkYXRlVGltZVV0aWxzRHVyYXRpb24oc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5hY3Rpb24obmFtZSwgdXJsLCBkdXJhdGlvbiwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkZWxldGUgX2V2ZW50c1tuYW1lXTtcclxuICAgICAgICAgICAgX2V2ZW50c1tuYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFRpbWluZztcclxufSgpKTtcclxuZXhwb3J0IHsgVGltaW5nIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRpbWluZy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBXZWIgQW5hbHl0aWNzLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuLyoqXHJcbiogQXBwbGljYXRpb25JbnNpZ2h0cy50c1xyXG4qIEBjb3B5cmlnaHQgTWljcm9zb2Z0IDIwMThcclxuKi9cclxuaW1wb3J0IHsgX19hc3NpZ25GbiBhcyBfX2Fzc2lnbiwgX19leHRlbmRzRm4gYXMgX19leHRlbmRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NQbHVnaW5JZGVudGlmaWVyLCBFdmVudCBhcyBFdmVudFRlbGVtZXRyeSwgRXhjZXB0aW9uLCBNZXRyaWMsIFBhZ2VWaWV3LCBQYWdlVmlld1BlcmZvcm1hbmNlLCBQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllciwgUmVtb3RlRGVwZW5kZW5jeURhdGEsIFRyYWNlLCBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dEZyb21UcmFjZSwgY3JlYXRlRG9tRXZlbnQsIGNyZWF0ZVRlbGVtZXRyeUl0ZW0sIGRhdGFTYW5pdGl6ZVN0cmluZywgaXNDcm9zc09yaWdpbkVycm9yLCBzdHJOb3RTcGVjaWZpZWQsIHN0cmluZ1RvQm9vbE9yRGVmYXVsdCwgdXRsRGlzYWJsZVN0b3JhZ2UsIHV0bEVuYWJsZVN0b3JhZ2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBCYXNlVGVsZW1ldHJ5UGx1Z2luLCBJbnN0cnVtZW50RXZlbnQsIGFyckZvckVhY2gsIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0LCBjcmVhdGVVbmlxdWVOYW1lc3BhY2UsIGR1bXBPYmosIGV2ZW50T2ZmLCBldmVudE9uLCBnZW5lcmF0ZVczQ0lkLCBnZXREb2N1bWVudCwgZ2V0RXhjZXB0aW9uTmFtZSwgZ2V0SGlzdG9yeSwgZ2V0TG9jYXRpb24sIGdldFdpbmRvdywgaGFzSGlzdG9yeSwgaGFzV2luZG93LCBpc0Z1bmN0aW9uLCBpc051bGxPclVuZGVmaW5lZCwgaXNTdHJpbmcsIGlzVW5kZWZpbmVkLCBtZXJnZUV2dE5hbWVzcGFjZSwgb2JqRGVmaW5lQWNjZXNzb3JzLCBvYmpGb3JFYWNoS2V5LCBzYWZlR2V0Q29va2llTWdyLCBzdHJVbmRlZmluZWQsIHRocm93RXJyb3IgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9BRERfVEVMRU1FVFJZX0lOSVRJQTE1LCBfRFlOX0FVVE9fVFJBQ0tfUEFHRV9WSVNJMSwgX0RZTl9DT0xVTU5fTlVNQkVSLCBfRFlOX0NPUkUsIF9EWU5fREFUQV9UWVBFLCBfRFlOX0RJQUdfTE9HLCBfRFlOX0RJU0FCTEVfRVhDRVBUSU9OX1RSMCwgX0RZTl9ESVNBQkxFX0ZMVVNIX09OX0JFRjcsIF9EWU5fRU5BQkxFX0FVVE9fUk9VVEVfVFI2LCBfRFlOX0VOQUJMRV9VTkhBTkRMRURfUFJPMywgX0RZTl9FTlZFTE9QRV9UWVBFLCBfRFlOX0VSUk9SLCBfRFlOX0VSUk9SX1NSQywgX0RZTl9FWENFUFRJT04sIF9EWU5fSFJFRiwgX0RZTl9JU19CUk9XU0VSX0xJTktfVFJBQzUsIF9EWU5fSVNfU1RPUkFHRV9VU0VfRElTQUI0LCBfRFlOX0xFTkdUSCwgX0RZTl9MSU5FX05VTUJFUiwgX0RZTl9NRVNTQUdFLCBfRFlOX05BTUVfUFJFRklYLCBfRFlOX09WRVJSSURFX1BBR0VfVklFV19EMiwgX0RZTl9QT1BVTEFURV9QQUdFX1ZJRVdfUDEyLCBfRFlOX1NBTVBMSU5HX1BFUkNFTlRBR0UsIF9EWU5fU0VORF9FWENFUFRJT05fSU5URVIxMywgX0RZTl9TRU5EX1BBR0VfVklFV19JTlRFUjEwLCBfRFlOX1NFTkRfUEFHRV9WSUVXX1BFUkZPMTEsIF9EWU5fVE9fU1RSSU5HLCBfRFlOX1RSQUNLLCBfRFlOX1RSQUNLX1BBR0VfVklFVywgX0RZTl9UUkFDS19QUkVWSU9VU19QQUdFXzksIF9EWU5fX0NSRUFURV9BVVRPX0VYQ0VQVEkxNCwgX0RZTl9fT05FUlJPUiB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgUGFnZVZpZXdNYW5hZ2VyIH0gZnJvbSBcIi4vVGVsZW1ldHJ5L1BhZ2VWaWV3TWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlciB9IGZyb20gXCIuL1RlbGVtZXRyeS9QYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBQYWdlVmlzaXRUaW1lTWFuYWdlciB9IGZyb20gXCIuL1RlbGVtZXRyeS9QYWdlVmlzaXRUaW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBUaW1pbmcgfSBmcm9tIFwiLi9UaW1pbmdcIjtcclxudmFyIHN0ckV2ZW50ID0gXCJldmVudFwiO1xyXG5mdW5jdGlvbiBfZGlzcGF0Y2hFdmVudCh0YXJnZXQsIGV2bnQpIHtcclxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmRpc3BhdGNoRXZlbnQgJiYgZXZudCkge1xyXG4gICAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGV2bnQpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIF9nZXRSZWFzb24oZXJyb3IpIHtcclxuICAgIGlmIChlcnJvciAmJiBlcnJvci5yZWFzb24pIHtcclxuICAgICAgICB2YXIgcmVhc29uID0gZXJyb3IucmVhc29uO1xyXG4gICAgICAgIGlmICghaXNTdHJpbmcocmVhc29uKSAmJiBpc0Z1bmN0aW9uKHJlYXNvbltfRFlOX1RPX1NUUklORyAvKiBAbWluOiUyZXRvU3RyaW5nICovXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlYXNvbltfRFlOX1RPX1NUUklORyAvKiBAbWluOiUyZXRvU3RyaW5nICovXSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZHVtcE9iaihyZWFzb24pO1xyXG4gICAgfVxyXG4gICAgLy8gUGFzcyB0aGUgb3JpZ2luYWwgb2JqZWN0IGRvd24gd2hpY2ggd2lsbCBldmVudHVhbGx5IGdldCBldmFsdWF0ZWQgZm9yIGFueSBtZXNzYWdlIG9yIGRlc2NyaXB0aW9uXHJcbiAgICByZXR1cm4gZXJyb3IgfHwgXCJcIjtcclxufVxyXG52YXIgTWluTWlsbGlTZWNvbmRzID0gNjAwMDA7XHJcbmZ1bmN0aW9uIF9jb25maWdNaWxsaXNlY29uZHModmFsdWUsIGRlZlZhbHVlKSB7XHJcbiAgICB2YWx1ZSA9IHZhbHVlIHx8IGRlZlZhbHVlO1xyXG4gICAgaWYgKHZhbHVlIDwgTWluTWlsbGlTZWNvbmRzKSB7XHJcbiAgICAgICAgdmFsdWUgPSBNaW5NaWxsaVNlY29uZHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuZnVuY3Rpb24gX2dldERlZmF1bHRDb25maWcoY29uZmlnKSB7XHJcbiAgICBpZiAoIWNvbmZpZykge1xyXG4gICAgICAgIGNvbmZpZyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVzXHJcbiAgICBjb25maWcuc2Vzc2lvblJlbmV3YWxNcyA9IF9jb25maWdNaWxsaXNlY29uZHMoY29uZmlnLnNlc3Npb25SZW5ld2FsTXMsIDMwICogNjAgKiAxMDAwKTtcclxuICAgIGNvbmZpZy5zZXNzaW9uRXhwaXJhdGlvbk1zID0gX2NvbmZpZ01pbGxpc2Vjb25kcyhjb25maWcuc2Vzc2lvbkV4cGlyYXRpb25NcywgMjQgKiA2MCAqIDYwICogMTAwMCk7XHJcbiAgICBjb25maWdbX0RZTl9ESVNBQkxFX0VYQ0VQVElPTl9UUjAgLyogQG1pbjolMmVkaXNhYmxlRXhjZXB0aW9uVHJhY2tpbmcgKi9dID0gc3RyaW5nVG9Cb29sT3JEZWZhdWx0KGNvbmZpZ1tfRFlOX0RJU0FCTEVfRVhDRVBUSU9OX1RSMCAvKiBAbWluOiUyZWRpc2FibGVFeGNlcHRpb25UcmFja2luZyAqL10pO1xyXG4gICAgY29uZmlnW19EWU5fQVVUT19UUkFDS19QQUdFX1ZJU0kxIC8qIEBtaW46JTJlYXV0b1RyYWNrUGFnZVZpc2l0VGltZSAqL10gPSBzdHJpbmdUb0Jvb2xPckRlZmF1bHQoY29uZmlnW19EWU5fQVVUT19UUkFDS19QQUdFX1ZJU0kxIC8qIEBtaW46JTJlYXV0b1RyYWNrUGFnZVZpc2l0VGltZSAqL10pO1xyXG4gICAgY29uZmlnW19EWU5fT1ZFUlJJREVfUEFHRV9WSUVXX0QyIC8qIEBtaW46JTJlb3ZlcnJpZGVQYWdlVmlld0R1cmF0aW9uICovXSA9IHN0cmluZ1RvQm9vbE9yRGVmYXVsdChjb25maWdbX0RZTl9PVkVSUklERV9QQUdFX1ZJRVdfRDIgLyogQG1pbjolMmVvdmVycmlkZVBhZ2VWaWV3RHVyYXRpb24gKi9dKTtcclxuICAgIGNvbmZpZ1tfRFlOX0VOQUJMRV9VTkhBTkRMRURfUFJPMyAvKiBAbWluOiUyZWVuYWJsZVVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25UcmFja2luZyAqL10gPSBzdHJpbmdUb0Jvb2xPckRlZmF1bHQoY29uZmlnW19EWU5fRU5BQkxFX1VOSEFORExFRF9QUk8zIC8qIEBtaW46JTJlZW5hYmxlVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvblRyYWNraW5nICovXSk7XHJcbiAgICBpZiAoaXNOYU4oY29uZmlnW19EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSAvKiBAbWluOiUyZXNhbXBsaW5nUGVyY2VudGFnZSAqL10pIHx8IGNvbmZpZ1tfRFlOX1NBTVBMSU5HX1BFUkNFTlRBR0UgLyogQG1pbjolMmVzYW1wbGluZ1BlcmNlbnRhZ2UgKi9dIDw9IDAgfHwgY29uZmlnW19EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSAvKiBAbWluOiUyZXNhbXBsaW5nUGVyY2VudGFnZSAqL10gPj0gMTAwKSB7XHJcbiAgICAgICAgY29uZmlnW19EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSAvKiBAbWluOiUyZXNhbXBsaW5nUGVyY2VudGFnZSAqL10gPSAxMDA7XHJcbiAgICB9XHJcbiAgICBjb25maWdbX0RZTl9JU19TVE9SQUdFX1VTRV9ESVNBQjQgLyogQG1pbjolMmVpc1N0b3JhZ2VVc2VEaXNhYmxlZCAqL10gPSBzdHJpbmdUb0Jvb2xPckRlZmF1bHQoY29uZmlnW19EWU5fSVNfU1RPUkFHRV9VU0VfRElTQUI0IC8qIEBtaW46JTJlaXNTdG9yYWdlVXNlRGlzYWJsZWQgKi9dKTtcclxuICAgIGNvbmZpZ1tfRFlOX0lTX0JST1dTRVJfTElOS19UUkFDNSAvKiBAbWluOiUyZWlzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQgKi9dID0gc3RyaW5nVG9Cb29sT3JEZWZhdWx0KGNvbmZpZ1tfRFlOX0lTX0JST1dTRVJfTElOS19UUkFDNSAvKiBAbWluOiUyZWlzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQgKi9dKTtcclxuICAgIGNvbmZpZ1tfRFlOX0VOQUJMRV9BVVRPX1JPVVRFX1RSNiAvKiBAbWluOiUyZWVuYWJsZUF1dG9Sb3V0ZVRyYWNraW5nICovXSA9IHN0cmluZ1RvQm9vbE9yRGVmYXVsdChjb25maWdbX0RZTl9FTkFCTEVfQVVUT19ST1VURV9UUjYgLyogQG1pbjolMmVlbmFibGVBdXRvUm91dGVUcmFja2luZyAqL10pO1xyXG4gICAgY29uZmlnW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSA9IGNvbmZpZ1tfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10gfHwgXCJcIjtcclxuICAgIGNvbmZpZy5lbmFibGVEZWJ1ZyA9IHN0cmluZ1RvQm9vbE9yRGVmYXVsdChjb25maWcuZW5hYmxlRGVidWcpO1xyXG4gICAgY29uZmlnW19EWU5fRElTQUJMRV9GTFVTSF9PTl9CRUY3IC8qIEBtaW46JTJlZGlzYWJsZUZsdXNoT25CZWZvcmVVbmxvYWQgKi9dID0gc3RyaW5nVG9Cb29sT3JEZWZhdWx0KGNvbmZpZ1tfRFlOX0RJU0FCTEVfRkxVU0hfT05fQkVGNyAvKiBAbWluOiUyZWRpc2FibGVGbHVzaE9uQmVmb3JlVW5sb2FkICovXSk7XHJcbiAgICBjb25maWcuZGlzYWJsZUZsdXNoT25VbmxvYWQgPSBzdHJpbmdUb0Jvb2xPckRlZmF1bHQoY29uZmlnLmRpc2FibGVGbHVzaE9uVW5sb2FkLCBjb25maWdbX0RZTl9ESVNBQkxFX0ZMVVNIX09OX0JFRjcgLyogQG1pbjolMmVkaXNhYmxlRmx1c2hPbkJlZm9yZVVubG9hZCAqL10pO1xyXG4gICAgcmV0dXJuIGNvbmZpZztcclxufVxyXG5mdW5jdGlvbiBfdXBkYXRlU3RvcmFnZVVzYWdlKGV4dENvbmZpZykge1xyXG4gICAgLy8gTm90IHJlc2V0dGluZyB0aGUgc3RvcmFnZSB1c2FnZSBhcyBzb21lb25lIG1heSBoYXZlIG1hbnVhbGx5IGNhbGxlZCB1dGxEaXNhYmxlU3RvcmFnZSwgc28gdGhpcyB3aWxsIG9ubHlcclxuICAgIC8vIHJlc2V0IGJhc2VkIGlmIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBwcm92aWRlZFxyXG4gICAgaWYgKCFpc1VuZGVmaW5lZChleHRDb25maWdbX0RZTl9JU19TVE9SQUdFX1VTRV9ESVNBQjQgLyogQG1pbjolMmVpc1N0b3JhZ2VVc2VEaXNhYmxlZCAqL10pKSB7XHJcbiAgICAgICAgaWYgKGV4dENvbmZpZ1tfRFlOX0lTX1NUT1JBR0VfVVNFX0RJU0FCNCAvKiBAbWluOiUyZWlzU3RvcmFnZVVzZURpc2FibGVkICovXSkge1xyXG4gICAgICAgICAgICB1dGxEaXNhYmxlU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdXRsRW5hYmxlU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG52YXIgQW5hbHl0aWNzUGx1Z2luID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKEFuYWx5dGljc1BsdWdpbiwgX3N1cGVyKTtcclxuICAgIGZ1bmN0aW9uIEFuYWx5dGljc1BsdWdpbigpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xyXG4gICAgICAgIF90aGlzLmlkZW50aWZpZXIgPSBBbmFseXRpY3NQbHVnaW5JZGVudGlmaWVyOyAvLyBkbyBub3QgY2hhbmdlIG5hbWUgb3IgcHJpb3JpdHlcclxuICAgICAgICBfdGhpcy5wcmlvcml0eSA9IDE4MDsgLy8gdGFrZSBmcm9tIHJlc2VydmVkIHByaW9yaXR5IHJhbmdlIDEwMC0gMjAwXHJcbiAgICAgICAgX3RoaXMuYXV0b1JvdXRlUFZEZWxheSA9IDUwMDsgLy8gbXM7IFRpbWUgdG8gd2FpdCBhZnRlciBhIHJvdXRlIGNoYW5nZSBiZWZvcmUgdHJpZ2dlcmluZyBhIHBhZ2V2aWV3IHRvIGFsbG93IERPTSBjaGFuZ2VzIHRvIHRha2UgcGxhY2VcclxuICAgICAgICB2YXIgX2V2ZW50VHJhY2tpbmc7XHJcbiAgICAgICAgdmFyIF9wYWdlVHJhY2tpbmc7XHJcbiAgICAgICAgdmFyIF9wYWdlVmlld01hbmFnZXI7XHJcbiAgICAgICAgdmFyIF9wYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlcjtcclxuICAgICAgICB2YXIgX3BhZ2VWaXNpdFRpbWVNYW5hZ2VyO1xyXG4gICAgICAgIHZhciBfcHJlSW5pdFRlbGVtZXRyeUluaXRpYWxpemVycztcclxuICAgICAgICB2YXIgX2lzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQ7XHJcbiAgICAgICAgdmFyIF9icm93c2VyTGlua0luaXRpYWxpemVyQWRkZWQ7XHJcbiAgICAgICAgdmFyIF9lbmFibGVBdXRvUm91dGVUcmFja2luZztcclxuICAgICAgICB2YXIgX2hpc3RvcnlMaXN0ZW5lckFkZGVkO1xyXG4gICAgICAgIHZhciBfZGlzYWJsZUV4Y2VwdGlvblRyYWNraW5nO1xyXG4gICAgICAgIHZhciBfYXV0b0V4Y2VwdGlvbkluc3RydW1lbnRlZDtcclxuICAgICAgICB2YXIgX2VuYWJsZVVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25UcmFja2luZztcclxuICAgICAgICB2YXIgX2F1dG9VbmhhbmRsZWRQcm9taXNlSW5zdHJ1bWVudGVkO1xyXG4gICAgICAgIC8vIENvdW50cyBudW1iZXIgb2YgdHJhY2tBamF4IGludm9jYXRpb25zLlxyXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQgd2Ugb25seSBtb25pdG9yIFggYWpheCBjYWxsIHBlciB2aWV3IHRvIGF2b2lkIHRvbyBtdWNoIGxvYWQuXHJcbiAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gY29uZmlnLlxyXG4gICAgICAgIC8vIFRoaXMgY291bnRlciBrZWVwcyBpbmNyZWFzaW5nIGV2ZW4gYWZ0ZXIgdGhlIGxpbWl0IGlzIHJlYWNoZWQuXHJcbiAgICAgICAgdmFyIF90cmFja0FqYXhBdHRlbXB0cyA9IDA7XHJcbiAgICAgICAgLy8gYXJyYXkgd2l0aCBtYXggbGVuZ3RoIG9mIDIgdGhhdCBzdG9yZSBjdXJyZW50IHVybCBhbmQgcHJldmlvdXMgdXJsIGZvciBTUEEgcGFnZSByb3V0ZSBjaGFuZ2UgdHJhY2tQYWdldmlldyB1c2UuXHJcbiAgICAgICAgdmFyIF9wcmV2VXJpOyAvLyBBc3NpZ25lZCBpbiB0aGUgY29uc3RydWN0b3JcclxuICAgICAgICB2YXIgX2N1cnJVcmk7XHJcbiAgICAgICAgdmFyIF9ldnROYW1lc3BhY2U7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKEFuYWx5dGljc1BsdWdpbiwgX3RoaXMsIGZ1bmN0aW9uIChfc2VsZiwgX2Jhc2UpIHtcclxuICAgICAgICAgICAgdmFyIF9hZGRIb29rID0gX2Jhc2UuX2FkZEhvb2s7XHJcbiAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgX3NlbGYuZ2V0Q29va2llTWdyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNhZmVHZXRDb29raWVNZ3IoX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5wcm9jZXNzVGVsZW1ldHJ5ID0gZnVuY3Rpb24gKGVudiwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYucHJvY2Vzc05leHQoZW52LCBpdGVtQ3R4KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYudHJhY2tFdmVudCA9IGZ1bmN0aW9uIChldmVudCwgY3VzdG9tUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGVsZW1ldHJ5SXRlbSA9IGNyZWF0ZVRlbGVtZXRyeUl0ZW0oZXZlbnQsIEV2ZW50VGVsZW1ldHJ5W19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBFdmVudFRlbGVtZXRyeVtfRFlOX0VOVkVMT1BFX1RZUEUgLyogQG1pbjolMmVlbnZlbG9wZVR5cGUgKi9dLCBfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgY3VzdG9tUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL11bX0RZTl9UUkFDSyAvKiBAbWluOiUyZXRyYWNrICovXSh0ZWxlbWV0cnlJdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDM5IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuVHJhY2tUcmFjZUZhaWxlZCAqLywgXCJ0cmFja1RyYWNlIGZhaWxlZCwgdHJhY2Ugd2lsbCBub3QgYmUgY29sbGVjdGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU3RhcnQgdGltaW5nIGFuIGV4dGVuZGVkIGV2ZW50LiBDYWxsIGBzdG9wVHJhY2tFdmVudGAgdG8gbG9nIHRoZSBldmVudCB3aGVuIGl0IGVuZHMuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSAgIG5hbWUgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoaXMgZXZlbnQgdW5pcXVlbHkgd2l0aGluIHRoZSBkb2N1bWVudC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLnN0YXJ0VHJhY2tFdmVudCA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFRyYWNraW5nLnN0YXJ0KG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCgxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDI5IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU3RhcnRUcmFja0V2ZW50RmFpbGVkICovLCBcInN0YXJ0VHJhY2tFdmVudCBmYWlsZWQsIGV2ZW50IHdpbGwgbm90IGJlIGNvbGxlY3RlZDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIExvZyBhbiBleHRlbmRlZCBldmVudCB0aGF0IHlvdSBzdGFydGVkIHRpbWluZyB3aXRoIGBzdGFydFRyYWNrRXZlbnRgLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gICBuYW1lICAgIFRoZSBzdHJpbmcgeW91IHVzZWQgdG8gaWRlbnRpZnkgdGhpcyBldmVudCBpbiBgc3RhcnRUcmFja0V2ZW50YC5cclxuICAgICAgICAgICAgICogQHBhcmFtICAgcHJvcGVydGllcyAgbWFwW3N0cmluZywgc3RyaW5nXSAtIGFkZGl0aW9uYWwgZGF0YSB1c2VkIHRvIGZpbHRlciBldmVudHMgYW5kIG1ldHJpY3MgaW4gdGhlIHBvcnRhbC4gRGVmYXVsdHMgdG8gZW1wdHkuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSAgIG1lYXN1cmVtZW50cyAgICBtYXBbc3RyaW5nLCBudW1iZXJdIC0gbWV0cmljcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBldmVudCwgZGlzcGxheWVkIGluIE1ldHJpY3MgRXhwbG9yZXIgb24gdGhlIHBvcnRhbC4gRGVmYXVsdHMgdG8gZW1wdHkuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi5zdG9wVHJhY2tFdmVudCA9IGZ1bmN0aW9uIChuYW1lLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2V2ZW50VHJhY2tpbmcuc3RvcChuYW1lLCB1bmRlZmluZWQsIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgMzAgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5TdG9wVHJhY2tFdmVudEZhaWxlZCAqLywgXCJzdG9wVHJhY2tFdmVudCBmYWlsZWQsIGV2ZW50IHdpbGwgbm90IGJlIGNvbGxlY3RlZDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBMb2cgYSBkaWFnbm9zdGljIG1lc3NhZ2VcclxuICAgICAgICAgICAgICogQHBhcmFtIHtJVHJhY2VUZWxlbWV0cnl9IHRyYWNlXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBJQ3VzdG9tUHJvcGVydGllcy5cclxuICAgICAgICAgICAgICogQG1lbWJlcm9mIEFwcGxpY2F0aW9uSW5zaWdodHNcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLnRyYWNrVHJhY2UgPSBmdW5jdGlvbiAodHJhY2UsIGN1c3RvbVByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeUl0ZW0gPSBjcmVhdGVUZWxlbWV0cnlJdGVtKHRyYWNlLCBUcmFjZVtfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSwgVHJhY2VbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dW19EWU5fVFJBQ0sgLyogQG1pbjolMmV0cmFjayAqL10odGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAzOSAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYWNrVHJhY2VGYWlsZWQgKi8sIFwidHJhY2tUcmFjZSBmYWlsZWQsIHRyYWNlIHdpbGwgbm90IGJlIGNvbGxlY3RlZDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBkZXNjcmlwdGlvbiBMb2cgYSBudW1lcmljIHZhbHVlIHRoYXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGV2ZW50LiBUeXBpY2FsbHlcclxuICAgICAgICAgICAgICogdXNlZCB0byBzZW5kIHJlZ3VsYXIgcmVwb3J0cyBvZiBwZXJmb3JtYW5jZSBpbmRpY2F0b3JzLiBUbyBzZW5kIHNpbmdsZSBtZWFzdXJlbWVudCwganVzdFxyXG4gICAgICAgICAgICAgKiB1c2UgdGhlIG5hbWUgYW5kIGF2ZXJhZ2UgZmllbGRzIG9mIHtAbGluayBJTWV0cmljVGVsZW1ldHJ5fS4gSWYgeW91IHRha2UgbWVhc3VyZW1lbnRzXHJcbiAgICAgICAgICAgICAqIGZyZXF1ZW50bHksIHlvdSBjYW4gcmVkdWNlIHRoZSB0ZWxlbWV0cnkgYmFuZHdpZHRoIGJ5IGFnZ3JlZ2F0aW5nIG11bHRpcGxlIG1lYXN1cmVtZW50c1xyXG4gICAgICAgICAgICAgKiBhbmQgc2VuZGluZyB0aGUgcmVzdWx0aW5nIGF2ZXJhZ2UgYXQgaW50ZXJ2YWxzXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7SU1ldHJpY1RlbGVtZXRyeX0gbWV0cmljIGlucHV0IG9iamVjdCBhcmd1bWVudC4gT25seSBuYW1lIGFuZCBhdmVyYWdlIGFyZSBtYW5kYXRvcnkuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7e1trZXk6IHN0cmluZ106IGFueX19IGN1c3RvbVByb3BlcnRpZXMgYWRkaXRpb25hbCBkYXRhIHVzZWQgdG8gZmlsdGVyIG1ldHJpY3MgaW4gdGhlXHJcbiAgICAgICAgICAgICAqIHBvcnRhbC4gRGVmYXVsdHMgdG8gZW1wdHkuXHJcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBBcHBsaWNhdGlvbkluc2lnaHRzXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi50cmFja01ldHJpYyA9IGZ1bmN0aW9uIChtZXRyaWMsIGN1c3RvbVByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeUl0ZW0gPSBjcmVhdGVUZWxlbWV0cnlJdGVtKG1ldHJpYywgTWV0cmljW19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBNZXRyaWNbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dW19EWU5fVFJBQ0sgLyogQG1pbjolMmV0cmFjayAqL10odGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgMzYgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UcmFja01ldHJpY0ZhaWxlZCAqLywgXCJ0cmFja01ldHJpYyBmYWlsZWQsIG1ldHJpYyB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQ6IFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBMb2dzIHRoYXQgYSBwYWdlIG9yIG90aGVyIGl0ZW0gd2FzIHZpZXdlZC5cclxuICAgICAgICAgICAgICogQHBhcmFtIElQYWdlVmlld1RlbGVtZXRyeSBUaGUgc3RyaW5nIHlvdSB1c2VkIGFzIHRoZSBuYW1lIGluIHN0YXJ0VHJhY2tQYWdlLiBEZWZhdWx0cyB0byB0aGUgZG9jdW1lbnQgdGl0bGUuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBjdXN0b21Qcm9wZXJ0aWVzIEFkZGl0aW9uYWwgZGF0YSB1c2VkIHRvIGZpbHRlciBldmVudHMgYW5kIG1ldHJpY3MuIERlZmF1bHRzIHRvIGVtcHR5LlxyXG4gICAgICAgICAgICAgKiBJZiBhIHVzZXIgd2FudHMgdG8gcHJvdmlkZSBkdXJhdGlvbiBmb3IgcGFnZUxvYWQsIGl0J2xsIGhhdmUgdG8gYmUgaW4gcGFnZVZpZXcucHJvcGVydGllcy5kdXJhdGlvblxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9UUkFDS19QQUdFX1ZJRVcgLyogQG1pbjolMmV0cmFja1BhZ2VWaWV3ICovXSA9IGZ1bmN0aW9uIChwYWdlVmlldywgY3VzdG9tUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5QdiA9IHBhZ2VWaWV3IHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIF9wYWdlVmlld01hbmFnZXJbX0RZTl9UUkFDS19QQUdFX1ZJRVcgLyogQG1pbjolMmV0cmFja1BhZ2VWaWV3ICovXShpblB2LCBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgaW5Qdi5wcm9wZXJ0aWVzKSwgaW5Qdi5tZWFzdXJlbWVudHMpLCBjdXN0b21Qcm9wZXJ0aWVzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9zZWxmLmNvbmZpZ1tfRFlOX0FVVE9fVFJBQ0tfUEFHRV9WSVNJMSAvKiBAbWluOiUyZWF1dG9UcmFja1BhZ2VWaXNpdFRpbWUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wYWdlVmlzaXRUaW1lTWFuYWdlcltfRFlOX1RSQUNLX1BSRVZJT1VTX1BBR0VfOSAvKiBAbWluOiUyZXRyYWNrUHJldmlvdXNQYWdlVmlzaXQgKi9dKGluUHYubmFtZSwgaW5Qdi51cmkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCAzNyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYWNrUFZGYWlsZWQgKi8sIFwidHJhY2tQYWdlVmlldyBmYWlsZWQsIHBhZ2UgdmlldyB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQ6IFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBDcmVhdGUgYSBwYWdlIHZpZXcgdGVsZW1ldHJ5IGl0ZW0gYW5kIHNlbmQgaXQgdG8gdGhlIFNESyBwaXBlbGluZSB0aHJvdWdoIHRoZSBjb3JlLnRyYWNrIEFQSVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGFnZVZpZXcgUGFnZSB2aWV3IGl0ZW0gdG8gYmUgc2VudFxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBDdXN0b20gcHJvcGVydGllcyAoUGFydCBDKSB0aGF0IGEgdXNlciBjYW4gYWRkIHRvIHRoZSB0ZWxlbWV0cnkgaXRlbVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gc3lzdGVtUHJvcGVydGllcyBTeXN0ZW0gbGV2ZWwgcHJvcGVydGllcyAoUGFydCBBKSB0aGF0IGEgdXNlciBjYW4gYWRkIHRvIHRoZSB0ZWxlbWV0cnkgaXRlbVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9TRU5EX1BBR0VfVklFV19JTlRFUjEwIC8qIEBtaW46JTJlc2VuZFBhZ2VWaWV3SW50ZXJuYWwgKi9dID0gZnVuY3Rpb24gKHBhZ2VWaWV3LCBwcm9wZXJ0aWVzLCBzeXN0ZW1Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZG9jID0gZ2V0RG9jdW1lbnQoKTtcclxuICAgICAgICAgICAgICAgIGlmIChkb2MpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlVmlldy5yZWZVcmkgPSBwYWdlVmlldy5yZWZVcmkgPT09IHVuZGVmaW5lZCA/IGRvYy5yZWZlcnJlciA6IHBhZ2VWaWV3LnJlZlVyaTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciB0ZWxlbWV0cnlJdGVtID0gY3JlYXRlVGVsZW1ldHJ5SXRlbShwYWdlVmlldywgUGFnZVZpZXdbX0RZTl9EQVRBX1RZUEUgLyogQG1pbjolMmVkYXRhVHlwZSAqL10sIFBhZ2VWaWV3W19EWU5fRU5WRUxPUEVfVFlQRSAvKiBAbWluOiUyZWVudmVsb3BlVHlwZSAqL10sIF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCBwcm9wZXJ0aWVzLCBzeXN0ZW1Qcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dW19EWU5fVFJBQ0sgLyogQG1pbjolMmV0cmFjayAqL10odGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgICAgICAvLyByZXNldCBhamF4ZXMgY291bnRlclxyXG4gICAgICAgICAgICAgICAgX3RyYWNrQWpheEF0dGVtcHRzID0gMDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEBpZ25vcmUgSU5URVJOQUwgT05MWVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGFnZVZpZXdQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcHJvcGVydGllc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9TRU5EX1BBR0VfVklFV19QRVJGTzExIC8qIEBtaW46JTJlc2VuZFBhZ2VWaWV3UGVyZm9ybWFuY2VJbnRlcm5hbCAqL10gPSBmdW5jdGlvbiAocGFnZVZpZXdQZXJmb3JtYW5jZSwgcHJvcGVydGllcywgc3lzdGVtUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeUl0ZW0gPSBjcmVhdGVUZWxlbWV0cnlJdGVtKHBhZ2VWaWV3UGVyZm9ybWFuY2UsIFBhZ2VWaWV3UGVyZm9ybWFuY2VbX0RZTl9EQVRBX1RZUEUgLyogQG1pbjolMmVkYXRhVHlwZSAqL10sIFBhZ2VWaWV3UGVyZm9ybWFuY2VbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIHByb3BlcnRpZXMsIHN5c3RlbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL11bX0RZTl9UUkFDSyAvKiBAbWluOiUyZXRyYWNrICovXSh0ZWxlbWV0cnlJdGVtKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFNlbmQgYnJvd3NlciBwZXJmb3JtYW5jZSBtZXRyaWNzLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGFnZVZpZXdQZXJmb3JtYW5jZVxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gY3VzdG9tUHJvcGVydGllc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGYudHJhY2tQYWdlVmlld1BlcmZvcm1hbmNlID0gZnVuY3Rpb24gKHBhZ2VWaWV3UGVyZm9ybWFuY2UsIGN1c3RvbVByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpblB2cCA9IHBhZ2VWaWV3UGVyZm9ybWFuY2UgfHwge307XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9wYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlcltfRFlOX1BPUFVMQVRFX1BBR0VfVklFV19QMTIgLyogQG1pbjolMmVwb3B1bGF0ZVBhZ2VWaWV3UGVyZm9ybWFuY2VFdmVudCAqL10oaW5QdnApO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fU0VORF9QQUdFX1ZJRVdfUEVSRk8xMSAvKiBAbWluOiUyZXNlbmRQYWdlVmlld1BlcmZvcm1hbmNlSW50ZXJuYWwgKi9dKGluUHZwLCBjdXN0b21Qcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCAzNyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYWNrUFZGYWlsZWQgKi8sIFwidHJhY2tQYWdlVmlld1BlcmZvcm1hbmNlIGZhaWxlZCwgcGFnZSB2aWV3IHdpbGwgbm90IGJlIGNvbGxlY3RlZDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFN0YXJ0cyB0aGUgdGltZXIgZm9yIHRyYWNraW5nIGEgcGFnZSBsb2FkIHRpbWUuIFVzZSB0aGlzIGluc3RlYWQgb2YgYHRyYWNrUGFnZVZpZXdgIGlmIHlvdSB3YW50IHRvIGNvbnRyb2wgd2hlbiB0aGUgcGFnZSB2aWV3IHRpbWVyIHN0YXJ0cyBhbmQgc3RvcHMsXHJcbiAgICAgICAgICAgICAqIGJ1dCBkb24ndCB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgZHVyYXRpb24geW91cnNlbGYuIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2VuZCBhbnkgdGVsZW1ldHJ5LiBDYWxsIGBzdG9wVHJhY2tQYWdlYCB0byBsb2cgdGhlIGVuZCBvZiB0aGUgcGFnZSB2aWV3XHJcbiAgICAgICAgICAgICAqIGFuZCBzZW5kIHRoZSBldmVudC5cclxuICAgICAgICAgICAgICogQHBhcmFtIG5hbWUgQSBzdHJpbmcgdGhhdCBpZGVuZml0aWVzIHRoaXMgaXRlbSwgdW5pcXVlIHdpdGhpbiB0aGlzIEhUTUwgZG9jdW1lbnQuIERlZmF1bHRzIHRvIHRoZSBkb2N1bWVudCB0aXRsZS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLnN0YXJ0VHJhY2tQYWdlID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gZG9jICYmIGRvYy50aXRsZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfcGFnZVRyYWNraW5nLnN0YXJ0KG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCgxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDMxIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU3RhcnRUcmFja0ZhaWxlZCAqLywgXCJzdGFydFRyYWNrUGFnZSBmYWlsZWQsIHBhZ2UgdmlldyBtYXkgbm90IGJlIGNvbGxlY3RlZDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFN0b3BzIHRoZSB0aW1lciB0aGF0IHdhcyBzdGFydGVkIGJ5IGNhbGxpbmcgYHN0YXJ0VHJhY2tQYWdlYCBhbmQgc2VuZHMgdGhlIHBhZ2V2aWV3IGxvYWQgdGltZSB0ZWxlbWV0cnkgd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMgYW5kIG1lYXN1cmVtZW50cy5cclxuICAgICAgICAgICAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSBwYWdlIHZpZXcgd2lsbCBiZSB0aGUgdGltZSBiZXR3ZWVuIGNhbGxpbmcgYHN0YXJ0VHJhY2tQYWdlYCBhbmQgYHN0b3BUcmFja1BhZ2VgLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gICBuYW1lICBUaGUgc3RyaW5nIHlvdSB1c2VkIGFzIHRoZSBuYW1lIGluIHN0YXJ0VHJhY2tQYWdlLiBEZWZhdWx0cyB0byB0aGUgZG9jdW1lbnQgdGl0bGUuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSAgIHVybCAgIFN0cmluZyAtIGEgcmVsYXRpdmUgb3IgYWJzb2x1dGUgVVJMIHRoYXQgaWRlbnRpZmllcyB0aGUgcGFnZSBvciBvdGhlciBpdGVtLiBEZWZhdWx0cyB0byB0aGUgd2luZG93IGxvY2F0aW9uLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gICBwcm9wZXJ0aWVzICBtYXBbc3RyaW5nLCBzdHJpbmddIC0gYWRkaXRpb25hbCBkYXRhIHVzZWQgdG8gZmlsdGVyIHBhZ2VzIGFuZCBtZXRyaWNzIGluIHRoZSBwb3J0YWwuIERlZmF1bHRzIHRvIGVtcHR5LlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gICBtZWFzdXJlbWVudHMgICAgbWFwW3N0cmluZywgbnVtYmVyXSAtIG1ldHJpY3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFnZSwgZGlzcGxheWVkIGluIE1ldHJpY3MgRXhwbG9yZXIgb24gdGhlIHBvcnRhbC4gRGVmYXVsdHMgdG8gZW1wdHkuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi5zdG9wVHJhY2tQYWdlID0gZnVuY3Rpb24gKG5hbWUsIHVybCwgcHJvcGVydGllcywgbWVhc3VyZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb2MgPSBnZXREb2N1bWVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gZG9jICYmIGRvYy50aXRsZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHVybCAhPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jID0gZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gbG9jICYmIGxvY1tfRFlOX0hSRUYgLyogQG1pbjolMmVocmVmICovXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfcGFnZVRyYWNraW5nLnN0b3AobmFtZSwgdXJsLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9zZWxmLmNvbmZpZ1tfRFlOX0FVVE9fVFJBQ0tfUEFHRV9WSVNJMSAvKiBAbWluOiUyZWF1dG9UcmFja1BhZ2VWaXNpdFRpbWUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wYWdlVmlzaXRUaW1lTWFuYWdlcltfRFlOX1RSQUNLX1BSRVZJT1VTX1BBR0VfOSAvKiBAbWluOiUyZXRyYWNrUHJldmlvdXNQYWdlVmlzaXQgKi9dKG5hbWUsIHVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCgxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDMyIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU3RvcFRyYWNrRmFpbGVkICovLCBcInN0b3BUcmFja1BhZ2UgZmFpbGVkLCBwYWdlIHZpZXcgd2lsbCBub3QgYmUgY29sbGVjdGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgKiBAaWdub3JlIElOVEVSTkFMIE9OTFlcclxuICAgICAgICAgICAgKiBAcGFyYW0gZXhjZXB0aW9uXHJcbiAgICAgICAgICAgICogQHBhcmFtIHByb3BlcnRpZXNcclxuICAgICAgICAgICAgKiBAcGFyYW0gc3lzdGVtUHJvcGVydGllc1xyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1NFTkRfRVhDRVBUSU9OX0lOVEVSMTMgLyogQG1pbjolMmVzZW5kRXhjZXB0aW9uSW50ZXJuYWwgKi9dID0gZnVuY3Rpb24gKGV4Y2VwdGlvbiwgY3VzdG9tUHJvcGVydGllcywgc3lzdGVtUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRoZUVycm9yID0gZXhjZXB0aW9uW19EWU5fRVhDRVBUSU9OIC8qIEBtaW46JTJlZXhjZXB0aW9uICovXSB8fCBleGNlcHRpb25bX0RZTl9FUlJPUiAvKiBAbWluOiUyZWVycm9yICovXSB8fCBuZXcgRXJyb3Ioc3RyTm90U3BlY2lmaWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBleGNlcHRpb25QYXJ0QiA9IG5ldyBFeGNlcHRpb24oX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIHRoZUVycm9yLCBleGNlcHRpb24ucHJvcGVydGllcyB8fCBjdXN0b21Qcm9wZXJ0aWVzLCBleGNlcHRpb24ubWVhc3VyZW1lbnRzLCBleGNlcHRpb24uc2V2ZXJpdHlMZXZlbCwgZXhjZXB0aW9uLmlkKS50b0ludGVyZmFjZSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeUl0ZW0gPSBjcmVhdGVUZWxlbWV0cnlJdGVtKGV4Y2VwdGlvblBhcnRCLCBFeGNlcHRpb25bX0RZTl9EQVRBX1RZUEUgLyogQG1pbjolMmVkYXRhVHlwZSAqL10sIEV4Y2VwdGlvbltfRFlOX0VOVkVMT1BFX1RZUEUgLyogQG1pbjolMmVlbnZlbG9wZVR5cGUgKi9dLCBfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgY3VzdG9tUHJvcGVydGllcywgc3lzdGVtUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXVtfRFlOX1RSQUNLIC8qIEBtaW46JTJldHJhY2sgKi9dKHRlbGVtZXRyeUl0ZW0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogTG9nIGFuIGV4Y2VwdGlvbiB5b3UgaGF2ZSBjYXVnaHQuXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7SUV4Y2VwdGlvblRlbGVtZXRyeX0gZXhjZXB0aW9uICAgT2JqZWN0IHdoaWNoIGNvbnRhaW5zIGV4Y2VwdGlvbiB0byBiZSBzZW50XHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7e1trZXk6IHN0cmluZ106IGFueX19IGN1c3RvbVByb3BlcnRpZXMgICBBZGRpdGlvbmFsIGRhdGEgdXNlZCB0byBmaWx0ZXIgcGFnZXMgYW5kIG1ldHJpY3MgaW4gdGhlIHBvcnRhbC4gRGVmYXVsdHMgdG8gZW1wdHkuXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIEFueSBwcm9wZXJ0eSBvZiB0eXBlIGRvdWJsZSB3aWxsIGJlIGNvbnNpZGVyZWQgYSBtZWFzdXJlbWVudCwgYW5kIHdpbGwgYmUgdHJlYXRlZCBieSBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBhcyBhIG1ldHJpYy5cclxuICAgICAgICAgICAgICogQG1lbWJlcm9mIEFwcGxpY2F0aW9uSW5zaWdodHNcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLnRyYWNrRXhjZXB0aW9uID0gZnVuY3Rpb24gKGV4Y2VwdGlvbiwgY3VzdG9tUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiAmJiAhZXhjZXB0aW9uW19EWU5fRVhDRVBUSU9OIC8qIEBtaW46JTJlZXhjZXB0aW9uICovXSAmJiBleGNlcHRpb25bX0RZTl9FUlJPUiAvKiBAbWluOiUyZWVycm9yICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbltfRFlOX0VYQ0VQVElPTiAvKiBAbWluOiUyZWV4Y2VwdGlvbiAqL10gPSBleGNlcHRpb25bX0RZTl9FUlJPUiAvKiBAbWluOiUyZWVycm9yICovXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9TRU5EX0VYQ0VQVElPTl9JTlRFUjEzIC8qIEBtaW46JTJlc2VuZEV4Y2VwdGlvbkludGVybmFsICovXShleGNlcHRpb24sIGN1c3RvbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCgxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDM1IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuVHJhY2tFeGNlcHRpb25GYWlsZWQgKi8sIFwidHJhY2tFeGNlcHRpb24gZmFpbGVkLCBleGNlcHRpb24gd2lsbCBub3QgYmUgY29sbGVjdGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBlcnJvciBoYW5kbGVyIGZvciBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBBbmFseXRpY3NcclxuICAgICAgICAgICAgICogQHBhcmFtIHtJQXV0b0V4Y2VwdGlvblRlbGVtZXRyeX0gZXhjZXB0aW9uXHJcbiAgICAgICAgICAgICAqIEBtZW1iZXJvZiBBcHBsaWNhdGlvbkluc2lnaHRzXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX19PTkVSUk9SIC8qIEBtaW46JTJlX29uZXJyb3IgKi9dID0gZnVuY3Rpb24gKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZXhjZXB0aW9uICYmIGV4Y2VwdGlvbltfRFlOX0VSUk9SIC8qIEBtaW46JTJlZXJyb3IgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIGV2dCA9IGV4Y2VwdGlvbiAmJiBleGNlcHRpb24uZXZ0O1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWV2dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3dpbmRvdyA9IGdldFdpbmRvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3dpbmRvdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZ0ID0gX3dpbmRvd1tzdHJFdmVudF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IChleGNlcHRpb24gJiYgZXhjZXB0aW9uLnVybCkgfHwgKGdldERvY3VtZW50KCkgfHwge30pLlVSTDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyBlcnJvciBzb3VyY2UgaXMgcHJvdmlkZWQgYXNzdW1lIHRoZSBkZWZhdWx0IHdpbmRvdy5vbmVycm9yIGhhbmRsZXJcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JTcmMgPSBleGNlcHRpb25bX0RZTl9FUlJPUl9TUkMgLyogQG1pbjolMmVlcnJvclNyYyAqL10gfHwgXCJ3aW5kb3cub25lcnJvckBcIiArIHVybCArIFwiOlwiICsgKGV4Y2VwdGlvbltfRFlOX0xJTkVfTlVNQkVSIC8qIEBtaW46JTJlbGluZU51bWJlciAqL10gfHwgMCkgKyBcIjpcIiArIChleGNlcHRpb25bX0RZTl9DT0xVTU5fTlVNQkVSIC8qIEBtaW46JTJlY29sdW1uTnVtYmVyICovXSB8fCAwKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JTcmM6IGVycm9yU3JjLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcjogZXhjZXB0aW9uW19EWU5fTElORV9OVU1CRVIgLyogQG1pbjolMmVsaW5lTnVtYmVyICovXSB8fCAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5OdW1iZXI6IGV4Y2VwdGlvbltfRFlOX0NPTFVNTl9OVU1CRVIgLyogQG1pbjolMmVjb2x1bW5OdW1iZXIgKi9dIHx8IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGV4Y2VwdGlvbltfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5FcnJvcihleGNlcHRpb24ubWVzc2FnZSwgZXhjZXB0aW9uLnVybCwgZXhjZXB0aW9uLmxpbmVOdW1iZXIsIGV4Y2VwdGlvbi5jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbltfRFlOX0VSUk9SIC8qIEBtaW46JTJlZXJyb3IgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VuZENPUlNFeGNlcHRpb24oRXhjZXB0aW9uW19EWU5fX0NSRUFURV9BVVRPX0VYQ0VQVEkxNCAvKiBAbWluOiUyZUNyZWF0ZUF1dG9FeGNlcHRpb24gKi9dKFwiU2NyaXB0IGVycm9yOiBUaGUgYnJvd3NlcidzIHNhbWUtb3JpZ2luIHBvbGljeSBwcmV2ZW50cyB1cyBmcm9tIGdldHRpbmcgdGhlIGRldGFpbHMgb2YgdGhpcyBleGNlcHRpb24uIENvbnNpZGVyIHVzaW5nIHRoZSAnY3Jvc3NvcmlnaW4nIGF0dHJpYnV0ZS5cIiwgdXJsLCBleGNlcHRpb25bX0RZTl9MSU5FX05VTUJFUiAvKiBAbWluOiUyZWxpbmVOdW1iZXIgKi9dIHx8IDAsIGV4Y2VwdGlvbltfRFlOX0NPTFVNTl9OVU1CRVIgLyogQG1pbjolMmVjb2x1bW5OdW1iZXIgKi9dIHx8IDAsIGVycm9yLCBldnQsIG51bGwsIGVycm9yU3JjKSwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvbltfRFlOX0VSUk9SX1NSQyAvKiBAbWluOiUyZWVycm9yU3JjICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uW19EWU5fRVJST1JfU1JDIC8qIEBtaW46JTJlZXJyb3JTcmMgKi9dID0gZXJyb3JTcmM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYudHJhY2tFeGNlcHRpb24oeyBleGNlcHRpb246IGV4Y2VwdGlvbiwgc2V2ZXJpdHlMZXZlbDogMyAvKiBlU2V2ZXJpdHlMZXZlbC5FcnJvciAqLyB9LCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvclN0cmluZyA9IGVycm9yID8gKGVycm9yLm5hbWUgKyBcIiwgXCIgKyBlcnJvcltfRFlOX01FU1NBR0UgLyogQG1pbjolMmVtZXNzYWdlICovXSkgOiBcIm51bGxcIjtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbCgxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDExIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRXhjZXB0aW9uV2hpbGVMb2dnaW5nRXJyb3IgKi8sIFwiX29uRXJyb3IgdGhyZXcgZXhjZXB0aW9uIHdoaWxlIGxvZ2dpbmcgZXJyb3IsIGVycm9yIHdpbGwgbm90IGJlIGNvbGxlY3RlZDogXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSwgZXJyb3JTdHJpbmc6IGVycm9yU3RyaW5nIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FERF9URUxFTUVUUllfSU5JVElBMTUgLyogQG1pbjolMmVhZGRUZWxlbWV0cnlJbml0aWFsaXplciAqL10gPSBmdW5jdGlvbiAodGVsZW1ldHJ5SW5pdGlhbGl6ZXIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEp1c3QgYWRkIHRvIHRoZSBjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dW19EWU5fQUREX1RFTEVNRVRSWV9JTklUSUExNSAvKiBAbWluOiUyZWFkZFRlbGVtZXRyeUluaXRpYWxpemVyICovXSh0ZWxlbWV0cnlJbml0aWFsaXplcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgXCJwcmUtaW5pdGlhbGl6YXRpb25cIiB0ZWxlbWV0cnkgaW5pdGlhbGl6ZXJzIChmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcclxuICAgICAgICAgICAgICAgIGlmICghX3ByZUluaXRUZWxlbWV0cnlJbml0aWFsaXplcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBfcHJlSW5pdFRlbGVtZXRyeUluaXRpYWxpemVycyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX3ByZUluaXRUZWxlbWV0cnlJbml0aWFsaXplcnMucHVzaCh0ZWxlbWV0cnlJbml0aWFsaXplcik7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmluaXRpYWxpemUgPSBmdW5jdGlvbiAoY29uZmlnLCBjb3JlLCBleHRlbnNpb25zLCBwbHVnaW5DaGFpbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLmlzSW5pdGlhbGl6ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChjb3JlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3IoXCJFcnJvciBpbml0aWFsaXppbmdcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfYmFzZS5pbml0aWFsaXplKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBfZXZ0TmFtZXNwYWNlID0gbWVyZ2VFdnROYW1lc3BhY2UoY3JlYXRlVW5pcXVlTmFtZXNwYWNlKF9zZWxmLmlkZW50aWZpZXIpLCBjb3JlLmV2dE5hbWVzcGFjZSAmJiBjb3JlLmV2dE5hbWVzcGFjZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3ByZUluaXRUZWxlbWV0cnlJbml0aWFsaXplcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfcHJlSW5pdFRlbGVtZXRyeUluaXRpYWxpemVycywgZnVuY3Rpb24gKGluaXRpYWxpemVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlW19EWU5fQUREX1RFTEVNRVRSWV9JTklUSUExNSAvKiBAbWluOiUyZWFkZFRlbGVtZXRyeUluaXRpYWxpemVyICovXShpbml0aWFsaXplcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfcHJlSW5pdFRlbGVtZXRyeUluaXRpYWxpemVycyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBleHRDb25maWcgPSBfcG9wdWxhdGVEZWZhdWx0cyhjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF91cGRhdGVTdG9yYWdlVXNhZ2UoZXh0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICBfcGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIgPSBuZXcgUGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIoX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgIF9wYWdlVmlld01hbmFnZXIgPSBuZXcgUGFnZVZpZXdNYW5hZ2VyKF90aGlzLCBleHRDb25maWdbX0RZTl9PVkVSUklERV9QQUdFX1ZJRVdfRDIgLyogQG1pbjolMmVvdmVycmlkZVBhZ2VWaWV3RHVyYXRpb24gKi9dLCBfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXSwgX3BhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyKTtcclxuICAgICAgICAgICAgICAgICAgICBfcGFnZVZpc2l0VGltZU1hbmFnZXIgPSBuZXcgUGFnZVZpc2l0VGltZU1hbmFnZXIoX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIGZ1bmN0aW9uIChwYWdlTmFtZSwgcGFnZVVybCwgcGFnZVZpc2l0VGltZSkgeyByZXR1cm4gdHJhY2tQYWdlVmlzaXRUaW1lKHBhZ2VOYW1lLCBwYWdlVXJsLCBwYWdlVmlzaXRUaW1lKTsgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZUJyb3dzZXJMaW5rVHJhY2tpbmcoZXh0Q29uZmlnLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFRyYWNraW5nID0gbmV3IFRpbWluZyhfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgXCJ0cmFja0V2ZW50XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFRyYWNraW5nLmFjdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChuYW1lLCB1cmwsIGR1cmF0aW9uLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWVhc3VyZW1lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLmR1cmF0aW9uID0gZHVyYXRpb25bX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLnRyYWNrRXZlbnQoeyBuYW1lOiBuYW1lLCBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHM6IG1lYXN1cmVtZW50cyB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIHBhZ2UgdmlldyB0aW1pbmdcclxuICAgICAgICAgICAgICAgICAgICBfcGFnZVRyYWNraW5nID0gbmV3IFRpbWluZyhfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgXCJ0cmFja1BhZ2VWaWV3XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9wYWdlVHJhY2tpbmcuYWN0aW9uID0gZnVuY3Rpb24gKG5hbWUsIHVybCwgZHVyYXRpb24sIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkdXJhdGlvbiBtdXN0IGJlIGEgY3VzdG9tIHByb3BlcnR5IGluIG9yZGVyIGZvciB0aGUgY29sbGVjdG9yIHRvIGV4dHJhY3QgaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5kdXJhdGlvbiA9IGR1cmF0aW9uW19EWU5fVE9fU1RSSU5HIC8qIEBtaW46JTJldG9TdHJpbmcgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYWdlVmlld0l0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZW1lbnRzOiBtZWFzdXJlbWVudHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9TRU5EX1BBR0VfVklFV19JTlRFUjEwIC8qIEBtaW46JTJlc2VuZFBhZ2VWaWV3SW50ZXJuYWwgKi9dKHBhZ2VWaWV3SXRlbSwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzV2luZG93KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZUV4Y2VwdGlvblRyYWNraW5nKGV4dENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF91cGRhdGVMb2NhdGlvbkNoYW5nZShleHRDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXR0aW5nIHRoZSBpbml0aWFsaXplZCBzdGF0ZSBiZWNhdXNlIG9mIGZhaWx1cmVcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZi5zZXRJbml0aWFsaXplZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuX2RvVGVhcmRvd24gPSBmdW5jdGlvbiAodW5sb2FkQ3R4LCB1bmxvYWRTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgX3BhZ2VWaWV3TWFuYWdlciAmJiBfcGFnZVZpZXdNYW5hZ2VyLnRlYXJkb3duKHVubG9hZEN0eCwgdW5sb2FkU3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgLy8gSnVzdCByZWdpc3RlciB0byByZW1vdmUgYWxsIGV2ZW50cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lc3BhY2VcclxuICAgICAgICAgICAgICAgIGV2ZW50T2ZmKHdpbmRvdywgbnVsbCwgbnVsbCwgX2V2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9wb3B1bGF0ZURlZmF1bHRzKGNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KG51bGwsIGNvbmZpZywgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlkZW50aWZpZXIgPSBfc2VsZi5pZGVudGlmaWVyO1xyXG4gICAgICAgICAgICAgICAgLy8gbG9hZCBkZWZhdWx0IHZhbHVlcyBpZiBzcGVjaWZpZWRcclxuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0cyA9IF9nZXREZWZhdWx0Q29uZmlnKGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXh0Q29uZmlnID0gX3NlbGYuY29uZmlnID0gY3R4LmdldEV4dENmZyhpZGVudGlmaWVyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0cyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JqRm9yRWFjaEtleShkZWZhdWx0cywgZnVuY3Rpb24gKGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCB1bnNwZWNpZmllZCBmaWVsZCwgc2V0IHRoZSBkZWZhdWx0IHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dENvbmZpZ1tmaWVsZF0gPSBjdHguZ2V0Q29uZmlnKGlkZW50aWZpZXIsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRDb25maWdbZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dENvbmZpZyA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZXh0Q29uZmlnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF91cGRhdGVCcm93c2VyTGlua1RyYWNraW5nKGV4dENvbmZpZywgY29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICBfaXNCcm93c2VyTGlua1RyYWNraW5nRW5hYmxlZCA9IGV4dENvbmZpZ1tfRFlOX0lTX0JST1dTRVJfTElOS19UUkFDNSAvKiBAbWluOiUyZWlzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQgKi9dIHx8IGNvbmZpZ1tfRFlOX0lTX0JST1dTRVJfTElOS19UUkFDNSAvKiBAbWluOiUyZWlzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQgKi9dO1xyXG4gICAgICAgICAgICAgICAgX2FkZERlZmF1bHRUZWxlbWV0cnlJbml0aWFsaXplcnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogTG9nIGEgcGFnZSB2aXNpdCB0aW1lXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSAgICBwYWdlTmFtZSAgICBOYW1lIG9mIHBhZ2VcclxuICAgICAgICAgICAgICogQHBhcmFtICAgIHBhZ2VWaXNpdER1cmF0aW9uIER1cmF0aW9uIG9mIHZpc2l0IHRvIHRoZSBwYWdlIGluIG1pbGxlc2Vjb25kc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tQYWdlVmlzaXRUaW1lKHBhZ2VOYW1lLCBwYWdlVXJsLCBwYWdlVmlzaXRUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHsgUGFnZU5hbWU6IHBhZ2VOYW1lLCBQYWdlVXJsOiBwYWdlVXJsIH07XHJcbiAgICAgICAgICAgICAgICBfc2VsZi50cmFja01ldHJpYyh7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJQYWdlVmlzaXRUaW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgYXZlcmFnZTogcGFnZVZpc2l0VGltZSxcclxuICAgICAgICAgICAgICAgICAgICBtYXg6IHBhZ2VWaXNpdFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWluOiBwYWdlVmlzaXRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZUNvdW50OiAxXHJcbiAgICAgICAgICAgICAgICB9LCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfYWRkRGVmYXVsdFRlbGVtZXRyeUluaXRpYWxpemVycygpIHtcclxuICAgICAgICAgICAgICAgIGlmICghX2Jyb3dzZXJMaW5rSW5pdGlhbGl6ZXJBZGRlZCAmJiBfaXNCcm93c2VyTGlua1RyYWNraW5nRW5hYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBicm93c2VyTGlua1BhdGhzXzEgPSBbXCIvYnJvd3NlckxpbmtTaWduYWxSL1wiLCBcIi9fX2Jyb3dzZXJMaW5rL1wiXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZHJvcEJyb3dzZXJMaW5rUmVxdWVzdHMgPSBmdW5jdGlvbiAoZW52ZWxvcGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc0Jyb3dzZXJMaW5rVHJhY2tpbmdFbmFibGVkICYmIGVudmVsb3BlLmJhc2VUeXBlID09PSBSZW1vdGVEZXBlbmRlbmN5RGF0YVtfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlbW90ZURhdGEgPSBlbnZlbG9wZS5iYXNlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdGVEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicm93c2VyTGlua1BhdGhzXzFbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW90ZURhdGEudGFyZ2V0ICYmIHJlbW90ZURhdGEudGFyZ2V0LmluZGV4T2YoYnJvd3NlckxpbmtQYXRoc18xW2ldKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0FERF9URUxFTUVUUllfSU5JVElBMTUgLyogQG1pbjolMmVhZGRUZWxlbWV0cnlJbml0aWFsaXplciAqL10oZHJvcEJyb3dzZXJMaW5rUmVxdWVzdHMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9icm93c2VyTGlua0luaXRpYWxpemVyQWRkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9zZW5kQ09SU0V4Y2VwdGlvbihleGNlcHRpb24sIHByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciB0ZWxlbWV0cnlJdGVtID0gY3JlYXRlVGVsZW1ldHJ5SXRlbShleGNlcHRpb24sIEV4Y2VwdGlvbltfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSwgRXhjZXB0aW9uW19EWU5fRU5WRUxPUEVfVFlQRSAvKiBAbWluOiUyZWVudmVsb3BlVHlwZSAqL10sIF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCBwcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dW19EWU5fVFJBQ0sgLyogQG1pbjolMmV0cmFjayAqL10odGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZUV4Y2VwdGlvblRyYWNraW5nKGV4dENvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIF93aW5kb3cgPSBnZXRXaW5kb3coKTtcclxuICAgICAgICAgICAgICAgIHZhciBsb2NuID0gZ2V0TG9jYXRpb24odHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBfZGlzYWJsZUV4Y2VwdGlvblRyYWNraW5nID0gZXh0Q29uZmlnW19EWU5fRElTQUJMRV9FWENFUFRJT05fVFIwIC8qIEBtaW46JTJlZGlzYWJsZUV4Y2VwdGlvblRyYWNraW5nICovXTtcclxuICAgICAgICAgICAgICAgIGlmICghX2Rpc2FibGVFeGNlcHRpb25UcmFja2luZyAmJiAhX2F1dG9FeGNlcHRpb25JbnN0cnVtZW50ZWQgJiYgIWV4dENvbmZpZy5hdXRvRXhjZXB0aW9uSW5zdHJ1bWVudGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBlbmFibGUgZXhjZXB0aW9uIGF1dG8gY29sbGVjdGlvbiBhbmQgaXQgaGFzIG5vdCBiZWVuIGRvbmUgc28geWV0XHJcbiAgICAgICAgICAgICAgICAgICAgX2FkZEhvb2soSW5zdHJ1bWVudEV2ZW50KF93aW5kb3csIFwib25lcnJvclwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5zOiBfZXZ0TmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByc3A6IGZ1bmN0aW9uIChjYWxsRGV0YWlscywgbWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9kaXNhYmxlRXhjZXB0aW9uVHJhY2tpbmcgJiYgY2FsbERldGFpbHMucnNsdCAhPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09ORVJST1IgLyogQG1pbjolMmVfb25lcnJvciAqL10oRXhjZXB0aW9uW19EWU5fX0NSRUFURV9BVVRPX0VYQ0VQVEkxNCAvKiBAbWluOiUyZUNyZWF0ZUF1dG9FeGNlcHRpb24gKi9dKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvciwgY2FsbERldGFpbHMuZXZ0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9hdXRvRXhjZXB0aW9uSW5zdHJ1bWVudGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9hZGRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcoZXh0Q29uZmlnLCBfd2luZG93LCBsb2NuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfdXBkYXRlTG9jYXRpb25DaGFuZ2UoZXh0Q29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgd2luID0gZ2V0V2luZG93KCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbG9jbiA9IGdldExvY2F0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgX2VuYWJsZUF1dG9Sb3V0ZVRyYWNraW5nID0gZXh0Q29uZmlnW19EWU5fRU5BQkxFX0FVVE9fUk9VVEVfVFI2IC8qIEBtaW46JTJlZW5hYmxlQXV0b1JvdXRlVHJhY2tpbmcgKi9dID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAgICAgKiBDcmVhdGUgYSBjdXN0b20gXCJsb2NhdGlvbmNoYW5nZVwiIGV2ZW50IHdoaWNoIGlzIHRyaWdnZXJlZCBlYWNoIHRpbWUgdGhlIGhpc3Rvcnkgb2JqZWN0IGlzIGNoYW5nZWRcclxuICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpbiAmJiBfZW5hYmxlQXV0b1JvdXRlVHJhY2tpbmcgJiYgaGFzSGlzdG9yeSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9oaXN0b3J5ID0gZ2V0SGlzdG9yeSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKF9oaXN0b3J5LnB1c2hTdGF0ZSkgJiYgaXNGdW5jdGlvbihfaGlzdG9yeS5yZXBsYWNlU3RhdGUpICYmIHR5cGVvZiBFdmVudCAhPT0gc3RyVW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hZGRIaXN0b3J5TGlzdGVuZXIoZXh0Q29uZmlnLCB3aW4sIF9oaXN0b3J5LCBsb2NuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dldERpc3RyaWJ1dGVkVHJhY2VDdHgoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGlzdHJpYnV0ZWRUcmFjZUN0eCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10gJiYgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10uZ2V0VHJhY2VDdHgpIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRlZFRyYWNlQ3R4ID0gX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10uZ2V0VHJhY2VDdHgoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkaXN0cmlidXRlZFRyYWNlQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgd2hlbiB1c2luZyBhbiBvbGRlciBDb3JlIGFuZCBQcm9wZXJ0aWVzUGx1Z2luXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXS5nZXRQbHVnaW4oUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gcHJvcGVydGllcy5wbHVnaW4uY29udGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkVHJhY2VDdHggPSBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dEZyb21UcmFjZShjb250ZXh0LnRlbGVtZXRyeVRyYWNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBkaXN0cmlidXRlZFRyYWNlQ3R4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBDcmVhdGUgYSBjdXN0b20gXCJsb2NhdGlvbmNoYW5nZVwiIGV2ZW50IHdoaWNoIGlzIHRyaWdnZXJlZCBlYWNoIHRpbWUgdGhlIGhpc3Rvcnkgb2JqZWN0IGlzIGNoYW5nZWRcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9hZGRIaXN0b3J5TGlzdGVuZXIoZXh0Q29uZmlnLCB3aW4sIGhpc3RvcnksIGxvY24pIHtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lUHJlZml4ID0gZXh0Q29uZmlnW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX3BvcHN0YXRlSGFuZGxlcigpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZUF1dG9Sb3V0ZVRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHdpbiwgY3JlYXRlRG9tRXZlbnQobmFtZVByZWZpeCArIFwibG9jYXRpb25jaGFuZ2VcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9sb2NhdGlvbkNoYW5nZUhhbmRsZXIoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHRyYWNrIHRoZSBjaGFuZ2VzIChpZiB0aGUgaGFuZGxlciBpcyBpbnN0YWxsZWQpIHRvIGhhbmRsZSB0aGUgZmVhdHVyZSBiZWluZyBkaXNhYmxlZCBiZXR3ZWVuIGxvY2F0aW9uIGNoYW5nZXNcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2N1cnJVcmkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3ByZXZVcmkgPSBfY3VyclVyaTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2N1cnJVcmkgPSBsb2NuICYmIGxvY25bX0RZTl9IUkVGIC8qIEBtaW46JTJlaHJlZiAqL10gfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jdXJyVXJpID0gbG9jbiAmJiBsb2NuW19EWU5fSFJFRiAvKiBAbWluOiUyZWhyZWYgKi9dIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfZW5hYmxlQXV0b1JvdXRlVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpc3RyaWJ1dGVkVHJhY2VDdHggPSBfZ2V0RGlzdHJpYnV0ZWRUcmFjZUN0eCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdHJpYnV0ZWRUcmFjZUN0eCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWRUcmFjZUN0eC5zZXRUcmFjZUlkKGdlbmVyYXRlVzNDSWQoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhY2VMb2NhdGlvbk5hbWUgPSBcIl91bmtub3duX1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY24gJiYgbG9jbi5wYXRobmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlTG9jYXRpb25OYW1lID0gbG9jbi5wYXRobmFtZSArIChsb2NuLmhhc2ggfHwgXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHBvcHVsYXRlcyB0aGUgYWkub3BlcmF0aW9uLm5hbWUgd2hpY2ggaGFzIGEgbWF4aW11bSBzaXplIG9mIDEwMjQgc28gd2UgbmVlZCB0byBzYW5pdGl6ZSBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZWRUcmFjZUN0eC5zZXROYW1lKGRhdGFTYW5pdGl6ZVN0cmluZyhfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgdHJhY2VMb2NhdGlvbk5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbiAodXJpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0b2RvOiBvdmVycmlkZSBzdGFydCB0aW1lIHNvIHRoYXQgaXQgaXMgbm90IGFmZmVjdGVkIGJ5IGF1dG9Sb3V0ZVBWRGVsYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fVFJBQ0tfUEFHRV9WSUVXIC8qIEBtaW46JTJldHJhY2tQYWdlVmlldyAqL10oeyByZWZVcmk6IHVyaSwgcHJvcGVydGllczogeyBkdXJhdGlvbjogMCB9IH0pOyAvLyBTUEEgcm91dGUgY2hhbmdlIGxvYWRpbmcgZHVyYXRpb25zIGFyZSB1bmRlZmluZWQsIHNvIHNlbmQgMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KS5iaW5kKHRoaXMsIF9wcmV2VXJpKSwgX3NlbGYuYXV0b1JvdXRlUFZEZWxheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFfaGlzdG9yeUxpc3RlbmVyQWRkZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBfYWRkSG9vayhJbnN0cnVtZW50RXZlbnQoaGlzdG9yeSwgXCJwdXNoU3RhdGVcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuczogX2V2dE5hbWVzcGFjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcnNwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZUF1dG9Sb3V0ZVRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQod2luLCBjcmVhdGVEb21FdmVudChuYW1lUHJlZml4ICsgXCJwdXNoU3RhdGVcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHdpbiwgY3JlYXRlRG9tRXZlbnQobmFtZVByZWZpeCArIFwibG9jYXRpb25jaGFuZ2VcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9hZGRIb29rKEluc3RydW1lbnRFdmVudChoaXN0b3J5LCBcInJlcGxhY2VTdGF0ZVwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5zOiBfZXZ0TmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByc3A6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZW5hYmxlQXV0b1JvdXRlVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh3aW4sIGNyZWF0ZURvbUV2ZW50KG5hbWVQcmVmaXggKyBcInJlcGxhY2VTdGF0ZVwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQod2luLCBjcmVhdGVEb21FdmVudChuYW1lUHJlZml4ICsgXCJsb2NhdGlvbmNoYW5nZVwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCB0cnVlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRPbih3aW4sIG5hbWVQcmVmaXggKyBcInBvcHN0YXRlXCIsIF9wb3BzdGF0ZUhhbmRsZXIsIF9ldnROYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50T24od2luLCBuYW1lUHJlZml4ICsgXCJsb2NhdGlvbmNoYW5nZVwiLCBfbG9jYXRpb25DaGFuZ2VIYW5kbGVyLCBfZXZ0TmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgICAgICBfaGlzdG9yeUxpc3RlbmVyQWRkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9hZGRVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcoZXh0Q29uZmlnLCBfd2luZG93LCBfbG9jYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIF9lbmFibGVVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcgPSBleHRDb25maWdbX0RZTl9FTkFCTEVfVU5IQU5ETEVEX1BSTzMgLyogQG1pbjolMmVlbmFibGVVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcgKi9dID09PSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9lbmFibGVVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcgJiYgIV9hdXRvVW5oYW5kbGVkUHJvbWlzZUluc3RydW1lbnRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdG8gZW5hYmxlIGV4Y2VwdGlvbiBhdXRvIGNvbGxlY3Rpb24gYW5kIGl0IGhhcyBub3QgYmVlbiBkb25lIHNvIHlldFxyXG4gICAgICAgICAgICAgICAgICAgIF9hZGRIb29rKEluc3RydW1lbnRFdmVudChfd2luZG93LCBcIm9udW5oYW5kbGVkcmVqZWN0aW9uXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnM6IF9ldnROYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJzcDogZnVuY3Rpb24gKGNhbGxEZXRhaWxzLCBlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcgJiYgY2FsbERldGFpbHMucnNsdCAhPT0gdHJ1ZSkgeyAvLyBoYW5kbGVkIGNvdWxkIGJlIHR5cGVvZiBmdW5jdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09ORVJST1IgLyogQG1pbjolMmVfb25lcnJvciAqL10oRXhjZXB0aW9uW19EWU5fX0NSRUFURV9BVVRPX0VYQ0VQVEkxNCAvKiBAbWluOiUyZUNyZWF0ZUF1dG9FeGNlcHRpb24gKi9dKF9nZXRSZWFzb24oZXJyb3IpLCBfbG9jYXRpb24gPyBfbG9jYXRpb25bX0RZTl9IUkVGIC8qIEBtaW46JTJlaHJlZiAqL10gOiBcIlwiLCAwLCAwLCBlcnJvciwgY2FsbERldGFpbHMuZXZ0KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9hdXRvVW5oYW5kbGVkUHJvbWlzZUluc3RydW1lbnRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0Q29uZmlnLmF1dG9VbmhhbmRsZWRQcm9taXNlSW5zdHJ1bWVudGVkID0gX2F1dG9VbmhhbmRsZWRQcm9taXNlSW5zdHJ1bWVudGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRocm93IGV4Y2VwdGlvbnMgaW4gZGVidWcgbW9kZSBvciBhdHRlbXB0IHRvIGxvZyB0aGUgZXJyb3IgYXMgYSBjb25zb2xlIHdhcm5pbmcuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBzZXZlcml0eSB7ZUxvZ2dpbmdTZXZlcml0eX0gLSBUaGUgc2V2ZXJpdHkgb2YgdGhlIGxvZyBtZXNzYWdlXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBtZXNzYWdlIHtfSW50ZXJuYWxMb2dNZXNzYWdlfSAtIFRoZSBsb2cgbWVzc2FnZS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF90aHJvd0ludGVybmFsKHNldmVyaXR5LCBtc2dJZCwgbXNnLCBwcm9wZXJ0aWVzLCBpc1VzZXJBY3QpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLnRocm93SW50ZXJuYWwoc2V2ZXJpdHksIG1zZ0lkLCBtc2csIHByb3BlcnRpZXMsIGlzVXNlckFjdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luaXREZWZhdWx0cygpIHtcclxuICAgICAgICAgICAgICAgIF9ldmVudFRyYWNraW5nID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9wYWdlVHJhY2tpbmcgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3BhZ2VWaWV3TWFuYWdlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfcGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3BhZ2VWaXNpdFRpbWVNYW5hZ2VyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9wcmVJbml0VGVsZW1ldHJ5SW5pdGlhbGl6ZXJzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9pc0Jyb3dzZXJMaW5rVHJhY2tpbmdFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBfYnJvd3NlckxpbmtJbml0aWFsaXplckFkZGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBfZW5hYmxlQXV0b1JvdXRlVHJhY2tpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF9oaXN0b3J5TGlzdGVuZXJBZGRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX2Rpc2FibGVFeGNlcHRpb25UcmFja2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX2F1dG9FeGNlcHRpb25JbnN0cnVtZW50ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF9lbmFibGVVbmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uVHJhY2tpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF9hdXRvVW5oYW5kbGVkUHJvbWlzZUluc3RydW1lbnRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gQ291bnRzIG51bWJlciBvZiB0cmFja0FqYXggaW52b2NhdGlvbnMuXHJcbiAgICAgICAgICAgICAgICAvLyBCeSBkZWZhdWx0IHdlIG9ubHkgbW9uaXRvciBYIGFqYXggY2FsbCBwZXIgdmlldyB0byBhdm9pZCB0b28gbXVjaCBsb2FkLlxyXG4gICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZSBpcyBzZXQgaW4gY29uZmlnLlxyXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBjb3VudGVyIGtlZXBzIGluY3JlYXNpbmcgZXZlbiBhZnRlciB0aGUgbGltaXQgaXMgcmVhY2hlZC5cclxuICAgICAgICAgICAgICAgIF90cmFja0FqYXhBdHRlbXB0cyA9IDA7XHJcbiAgICAgICAgICAgICAgICAvLyBhcnJheSB3aXRoIG1heCBsZW5ndGggb2YgMiB0aGF0IHN0b3JlIGN1cnJlbnQgdXJsIGFuZCBwcmV2aW91cyB1cmwgZm9yIFNQQSBwYWdlIHJvdXRlIGNoYW5nZSB0cmFja1BhZ2V2aWV3IHVzZS5cclxuICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IGdldExvY2F0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgX3ByZXZVcmkgPSBsb2NhdGlvbiAmJiBsb2NhdGlvbltfRFlOX0hSRUYgLyogQG1pbjolMmVocmVmICovXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgX2N1cnJVcmkgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2V2dE5hbWVzcGFjZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcclxuICAgICAgICAgICAgb2JqRGVmaW5lQWNjZXNzb3JzKF9zZWxmLCBcIl9wYWdlVmlld01hbmFnZXJcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gX3BhZ2VWaWV3TWFuYWdlcjsgfSk7XHJcbiAgICAgICAgICAgIG9iakRlZmluZUFjY2Vzc29ycyhfc2VsZiwgXCJfcGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXJcIiwgZnVuY3Rpb24gKCkgeyByZXR1cm4gX3BhZ2VWaWV3UGVyZm9ybWFuY2VNYW5hZ2VyOyB9KTtcclxuICAgICAgICAgICAgb2JqRGVmaW5lQWNjZXNzb3JzKF9zZWxmLCBcIl9wYWdlVmlzaXRUaW1lTWFuYWdlclwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBfcGFnZVZpc2l0VGltZU1hbmFnZXI7IH0pO1xyXG4gICAgICAgICAgICBvYmpEZWZpbmVBY2Nlc3NvcnMoX3NlbGYsIFwiX2V2dE5hbWVzcGFjZVwiLCBmdW5jdGlvbiAoKSB7IHJldHVybiBcIi5cIiArIF9ldnROYW1lc3BhY2U7IH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBbmFseXRpY3NQbHVnaW4ucHJvdG90eXBlLmdldENvb2tpZU1nci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBbmFseXRpY3NQbHVnaW4ucHJvdG90eXBlLnByb2Nlc3NUZWxlbWV0cnkuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS50cmFja0V2ZW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuc3RhcnRUcmFja0V2ZW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuc3RvcFRyYWNrRXZlbnQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS50cmFja1RyYWNlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUudHJhY2tNZXRyaWMuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS50cmFja1BhZ2VWaWV3LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuc2VuZFBhZ2VWaWV3SW50ZXJuYWwuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS5zZW5kUGFnZVZpZXdQZXJmb3JtYW5jZUludGVybmFsLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUudHJhY2tQYWdlVmlld1BlcmZvcm1hbmNlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuc3RhcnRUcmFja1BhZ2UuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS5zdG9wVHJhY2tQYWdlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuc2VuZEV4Y2VwdGlvbkludGVybmFsLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUudHJhY2tFeGNlcHRpb24uXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQW5hbHl0aWNzUGx1Z2luLnByb3RvdHlwZS5fb25lcnJvci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBbmFseXRpY3NQbHVnaW4ucHJvdG90eXBlLmFkZFRlbGVtZXRyeUluaXRpYWxpemVyLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFuYWx5dGljc1BsdWdpbi5wcm90b3R5cGUuaW5pdGlhbGl6ZS5cclxuICAgIEFuYWx5dGljc1BsdWdpbi5WZXJzaW9uID0gJzIuOC45JzsgLy8gTm90IGN1cnJlbnRseSB1c2VkIGFueXdoZXJlXHJcbiAgICBBbmFseXRpY3NQbHVnaW4uZ2V0RGVmYXVsdENvbmZpZyA9IF9nZXREZWZhdWx0Q29uZmlnO1xyXG4gICAgcmV0dXJuIEFuYWx5dGljc1BsdWdpbjtcclxufShCYXNlVGVsZW1ldHJ5UGx1Z2luKSk7XHJcbmV4cG9ydCB7IEFuYWx5dGljc1BsdWdpbiB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1BbmFseXRpY3NQbHVnaW4uanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ2hhbm5lbCwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gTm90ZTogRE9OJ1QgRXhwb3J0IHRoZXNlIGNvbnN0IGZyb20gdGhlIHBhY2thZ2UgYXMgd2UgYXJlIHN0aWxsIHRhcmdldGluZyBFUzMgdGhpcyB3aWxsIGV4cG9ydCBhIG11dGFibGUgdmFyaWFibGVzIHRoYXQgc29tZW9uZSBjb3VsZCBjaGFuZ2UhISFcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gR2VuZXJhbGx5IHlvdSBzaG91bGQgb25seSBwdXQgdmFsdWVzIHRoYXQgYXJlIHVzZWQgbW9yZSB0aGFuIDIgdGltZXMgYW5kIHRoZW4gb25seSBpZiBub3QgYWxyZWFkeSBleHBvc2VkIGFzIGEgY29uc3RhbnQgKHN1Y2ggYXMgU2RrQ29yZU5hbWVzKVxyXG4vLyBhcyB3aGVuIHVzaW5nIFwic2hvcnRcIiBuYW1lZCB2YWx1ZXMgZnJvbSBoZXJlIHRoZXkgd2lsbCBiZSB3aWxsIGJlIG1pbmlmaWVkIHNtYWxsZXIgdGhhbiB0aGUgU2RrQ29yZU5hbWVzW2VTZGtDb3JlTmFtZXMueHh4eF0gdmFsdWUuXHJcbmV4cG9ydCB2YXIgU1RSX0RVUkFUSU9OID0gXCJkdXJhdGlvblwiO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1JbnRlcm5hbENvbnN0YW50cy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDaGFubmVsLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG4vLyBAc2tpcC1maWxlLW1pbmlmeVxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyBBVVRPIEdFTkVSQVRFRCBGSUxFOiBUaGlzIGZpbGUgaXMgQXV0byBHZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkLlxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG4vLyBOb3RlOiBET04nVCBFeHBvcnQgdGhlc2UgY29uc3QgZnJvbSB0aGUgcGFja2FnZSBhcyB3ZSBhcmUgc3RpbGwgdGFyZ2V0aW5nIEVTMyB0aGlzIHdpbGwgZXhwb3J0IGEgbXV0YWJsZSB2YXJpYWJsZXMgdGhhdCBzb21lb25lIGNvdWxkIGNoYW5nZSEhIVxyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG5leHBvcnQgdmFyIF9EWU5fVEFHUyA9IFwidGFnc1wiOyAvLyBDb3VudDogMTdcclxuZXhwb3J0IHZhciBfRFlOX0RFVklDRV9UWVBFID0gXCJkZXZpY2VUeXBlXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9EQVRBID0gXCJkYXRhXCI7IC8vIENvdW50OiAxM1xyXG5leHBvcnQgdmFyIF9EWU5fTkFNRSA9IFwibmFtZVwiOyAvLyBDb3VudDogOFxyXG5leHBvcnQgdmFyIF9EWU5fVFJBQ0VfSUQgPSBcInRyYWNlSURcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0xFTkdUSCA9IFwibGVuZ3RoXCI7IC8vIENvdW50OiAzNlxyXG5leHBvcnQgdmFyIF9EWU5fU1RSSU5HSUZZID0gXCJzdHJpbmdpZnlcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX01FQVNVUkVNRU5UUyA9IFwibWVhc3VyZW1lbnRzXCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9EQVRBX1RZUEUgPSBcImRhdGFUeXBlXCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fRU5WRUxPUEVfVFlQRSA9IFwiZW52ZWxvcGVUeXBlXCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9UT19TVFJJTkcgPSBcInRvU3RyaW5nXCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9PTl9MSU5FID0gXCJvbkxpbmVcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0VOUVVFVUUgPSBcImVucXVldWVcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0NPVU5UID0gXCJjb3VudFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fUFVTSCA9IFwicHVzaFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fRU1JVF9MSU5FX0RFTElNSVRFRF8wID0gXCJlbWl0TGluZURlbGltaXRlZEpzb25cIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0NMRUFSID0gXCJjbGVhclwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fQkFUQ0hfUEFZTE9BRFMgPSBcImJhdGNoUGF5bG9hZHNcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX01BUktfQVNfU0VOVCA9IFwibWFya0FzU2VudFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fQ0xFQVJfU0VOVCA9IFwiY2xlYXJTZW50XCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9fQlVGRkVSX19LRVkgPSBcIkJVRkZFUl9LRVlcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX19TRU5UX19CVUZGRVJfX0tFWSA9IFwiU0VOVF9CVUZGRVJfS0VZXCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9fTUFYX19CVUZGRVJfX1NJWkUgPSBcIk1BWF9CVUZGRVJfU0laRVwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fTkFNRV9QUkVGSVggPSBcIm5hbWVQcmVmaXhcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX01BWF9CQVRDSF9TSVpFX0lOX0JZMSA9IFwibWF4QmF0Y2hTaXplSW5CeXRlc1wiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fVFJJR0dFUl9TRU5EID0gXCJ0cmlnZ2VyU2VuZFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fRElBR19MT0cgPSBcImRpYWdMb2dcIjsgLy8gQ291bnQ6IDE1XHJcbmV4cG9ydCB2YXIgX0RZTl9PTlVOTE9BRF9ESVNBQkxFX0JFQTIgPSBcIm9udW5sb2FkRGlzYWJsZUJlYWNvblwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fSVNfQkVBQ09OX0FQSV9ESVNBQkwzID0gXCJpc0JlYWNvbkFwaURpc2FibGVkXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9fU0VOREVSID0gXCJfc2VuZGVyXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9fU0VOREVSX0NPTkZJRyA9IFwiX3NlbmRlckNvbmZpZ1wiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fX0JVRkZFUiA9IFwiX2J1ZmZlclwiOyAvLyBDb3VudDogN1xyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX1NFU1NJT05fU1RPUkE0ID0gXCJlbmFibGVTZXNzaW9uU3RvcmFnZUJ1ZmZlclwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSA9IFwic2FtcGxpbmdQZXJjZW50YWdlXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9JTlNUUlVNRU5UQVRJT05fS0VZID0gXCJpbnN0cnVtZW50YXRpb25LZXlcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0VORFBPSU5UX1VSTCA9IFwiZW5kcG9pbnRVcmxcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX0NVU1RPTV9IRUFERVJTID0gXCJjdXN0b21IZWFkZXJzXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX1hIUiA9IFwiZGlzYWJsZVhoclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fT05VTkxPQURfRElTQUJMRV9GRVQ1ID0gXCJvbnVubG9hZERpc2FibGVGZXRjaFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRElTQUJMRV9URUxFTUVUUlkgPSBcImRpc2FibGVUZWxlbWV0cnlcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0JBU0VfVFlQRSA9IFwiYmFzZVR5cGVcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1NBTVBMRV9SQVRFID0gXCJzYW1wbGVSYXRlXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9DT05WRVJUX1VOREVGSU5FRCA9IFwiY29udmVydFVuZGVmaW5lZFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fX1hIUl9SRUFEWV9TVEFURV9DSEE2ID0gXCJfeGhyUmVhZHlTdGF0ZUNoYW5nZVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fX09OX0VSUk9SID0gXCJfb25FcnJvclwiOyAvLyBDb3VudDogMTFcclxuZXhwb3J0IHZhciBfRFlOX19PTl9QQVJUSUFMX1NVQ0NFU1MgPSBcIl9vblBhcnRpYWxTdWNjZXNzXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9fT05fU1VDQ0VTUyA9IFwiX29uU3VjY2Vzc1wiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fSVRFTVNfQUNDRVBURUQgPSBcIml0ZW1zQWNjZXB0ZWRcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0lURU1TX1JFQ0VJVkVEID0gXCJpdGVtc1JlY2VpdmVkXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9JU19SRVRSWV9ESVNBQkxFRCA9IFwiaXNSZXRyeURpc2FibGVkXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9TRVRfUkVRVUVTVF9IRUFERVIgPSBcInNldFJlcXVlc3RIZWFkZXJcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX01BWF9CQVRDSF9JTlRFUlZBTCA9IFwibWF4QmF0Y2hJbnRlcnZhbFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRVZFTlRTX1NFTkRfUkVRVUVTVCA9IFwiZXZlbnRzU2VuZFJlcXVlc3RcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0RJU0FCTEVfSU5TVFJVTUVOVEFUNyA9IFwiZGlzYWJsZUluc3RydW1lbnRhdGlvbktleVZhbGlkYXRpb25cIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9TQU1QTElOR19TQ09SRSA9IFwiZ2V0U2FtcGxpbmdTY29yZVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX0hBU0hfQ09ERV9TQ09SRSA9IFwiZ2V0SGFzaENvZGVTY29yZVwiOyAvLyBDb3VudDogNFxyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1fX0R5bmFtaWNDb25zdGFudHMuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gQ2hhbm5lbCwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7IF9fYXNzaWduRm4gYXMgX19hc3NpZ24gfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXNoaW1zXCI7XHJcbmltcG9ydCB7IEN0eFRhZ0tleXMsIERhdGEsIEVudmVsb3BlLCBFdmVudCwgRXhjZXB0aW9uLCBIdHRwTWV0aG9kLCBNZXRyaWMsIFBhZ2VWaWV3LCBQYWdlVmlld1BlcmZvcm1hbmNlLCBSZW1vdGVEZXBlbmRlbmN5RGF0YSwgU2FtcGxlUmF0ZSwgVHJhY2UsIGRhdGFTYW5pdGl6ZVN0cmluZyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF90aHJvd0ludGVybmFsLCBfd2FyblRvQ29uc29sZSwgZ2V0SlNPTiwgaGFzSlNPTiwgaXNOdWxsT3JVbmRlZmluZWQsIGlzTnVtYmVyLCBpc1N0cmluZywgaXNUcnV0aHksIG9iakZvckVhY2hLZXksIG9wdGltaXplT2JqZWN0LCBzZXRWYWx1ZSwgdG9JU09TdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgU1RSX0RVUkFUSU9OIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgX0RZTl9EQVRBLCBfRFlOX0RBVEFfVFlQRSwgX0RZTl9ERVZJQ0VfVFlQRSwgX0RZTl9FTlZFTE9QRV9UWVBFLCBfRFlOX0xFTkdUSCwgX0RZTl9NRUFTVVJFTUVOVFMsIF9EWU5fTkFNRSwgX0RZTl9TVFJJTkdJRlksIF9EWU5fVEFHUywgX0RZTl9UT19TVFJJTkcsIF9EWU5fVFJBQ0VfSUQgfSBmcm9tIFwiLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuLy8gdGhlc2UgdHdvIGNvbnN0YW50cyBhcmUgdXNlZCB0byBmaWx0ZXIgb3V0IHByb3BlcnRpZXMgbm90IG5lZWRlZCB3aGVuIHRyeWluZyB0byBleHRyYWN0IGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCBtZWFzdXJlbWVudHMgZnJvbSB0aGUgaW5jb21pbmcgcGF5bG9hZFxyXG52YXIgc3RyQmFzZVR5cGUgPSBcImJhc2VUeXBlXCI7XHJcbnZhciBzdHJCYXNlRGF0YSA9IFwiYmFzZURhdGFcIjtcclxudmFyIHN0clByb3BlcnRpZXMgPSBcInByb3BlcnRpZXNcIjtcclxudmFyIHN0clRydWUgPSBcInRydWVcIjtcclxuZnVuY3Rpb24gX3NldFZhbHVlSWYodGFyZ2V0LCBmaWVsZCwgdmFsdWUpIHtcclxuICAgIHJldHVybiBzZXRWYWx1ZSh0YXJnZXQsIGZpZWxkLCB2YWx1ZSwgaXNUcnV0aHkpO1xyXG59XHJcbi8qXHJcbiAqIE1hcHMgUGFydCBBIGRhdGEgZnJvbSBDUyA0LjBcclxuICovXHJcbmZ1bmN0aW9uIF9leHRyYWN0UGFydEFFeHRlbnNpb25zKGxvZ2dlciwgaXRlbSwgZW52KSB7XHJcbiAgICAvLyB0b2RvOiBzd2l0Y2ggdG8ga2V5cyBmcm9tIGNvbW1vbiBpbiB0aGlzIG1ldGhvZFxyXG4gICAgdmFyIGVudlRhZ3MgPSBlbnZbX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gPSBlbnZbX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gfHwge307XHJcbiAgICB2YXIgaXRtRXh0ID0gaXRlbS5leHQgPSBpdGVtLmV4dCB8fCB7fTtcclxuICAgIHZhciBpdG1UYWdzID0gaXRlbVtfRFlOX1RBR1MgLyogQG1pbjolMmV0YWdzICovXSA9IGl0ZW1bX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gfHwgW107XHJcbiAgICB2YXIgZXh0VXNlciA9IGl0bUV4dC51c2VyO1xyXG4gICAgaWYgKGV4dFVzZXIpIHtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzLnVzZXJBdXRoVXNlcklkLCBleHRVc2VyLmF1dGhJZCk7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52VGFncywgQ3R4VGFnS2V5cy51c2VySWQsIGV4dFVzZXIuaWQgfHwgZXh0VXNlci5sb2NhbElkKTtcclxuICAgIH1cclxuICAgIHZhciBleHRBcHAgPSBpdG1FeHQuYXBwO1xyXG4gICAgaWYgKGV4dEFwcCkge1xyXG4gICAgICAgIF9zZXRWYWx1ZUlmKGVudlRhZ3MsIEN0eFRhZ0tleXMuc2Vzc2lvbklkLCBleHRBcHAuc2VzSWQpO1xyXG4gICAgfVxyXG4gICAgdmFyIGV4dERldmljZSA9IGl0bUV4dC5kZXZpY2U7XHJcbiAgICBpZiAoZXh0RGV2aWNlKSB7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52VGFncywgQ3R4VGFnS2V5cy5kZXZpY2VJZCwgZXh0RGV2aWNlLmlkIHx8IGV4dERldmljZS5sb2NhbElkKTtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzW19EWU5fREVWSUNFX1RZUEUgLyogQG1pbjolMmVkZXZpY2VUeXBlICovXSwgZXh0RGV2aWNlLmRldmljZUNsYXNzKTtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzLmRldmljZUlwLCBleHREZXZpY2UuaXApO1xyXG4gICAgICAgIF9zZXRWYWx1ZUlmKGVudlRhZ3MsIEN0eFRhZ0tleXMuZGV2aWNlTW9kZWwsIGV4dERldmljZS5tb2RlbCk7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52VGFncywgQ3R4VGFnS2V5c1tfRFlOX0RFVklDRV9UWVBFIC8qIEBtaW46JTJlZGV2aWNlVHlwZSAqL10sIGV4dERldmljZVtfRFlOX0RFVklDRV9UWVBFIC8qIEBtaW46JTJlZGV2aWNlVHlwZSAqL10pO1xyXG4gICAgfVxyXG4gICAgdmFyIHdlYiA9IGl0ZW0uZXh0LndlYjtcclxuICAgIGlmICh3ZWIpIHtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzLmRldmljZUxhbmd1YWdlLCB3ZWIuYnJvd3NlckxhbmcpO1xyXG4gICAgICAgIF9zZXRWYWx1ZUlmKGVudlRhZ3MsIEN0eFRhZ0tleXMuZGV2aWNlQnJvd3NlclZlcnNpb24sIHdlYi5icm93c2VyVmVyKTtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzLmRldmljZUJyb3dzZXIsIHdlYi5icm93c2VyKTtcclxuICAgICAgICB2YXIgZW52RGF0YSA9IGVudltfRFlOX0RBVEEgLyogQG1pbjolMmVkYXRhICovXSA9IGVudltfRFlOX0RBVEEgLyogQG1pbjolMmVkYXRhICovXSB8fCB7fTtcclxuICAgICAgICB2YXIgZW52QmFzZURhdGEgPSBlbnZEYXRhW3N0ckJhc2VEYXRhXSA9IGVudkRhdGFbc3RyQmFzZURhdGFdIHx8IHt9O1xyXG4gICAgICAgIHZhciBlbnZQcm9wcyA9IGVudkJhc2VEYXRhW3N0clByb3BlcnRpZXNdID0gZW52QmFzZURhdGFbc3RyUHJvcGVydGllc10gfHwge307XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52UHJvcHMsIFwiZG9tYWluXCIsIHdlYi5kb21haW4pO1xyXG4gICAgICAgIF9zZXRWYWx1ZUlmKGVudlByb3BzLCBcImlzTWFudWFsXCIsIHdlYi5pc01hbnVhbCA/IHN0clRydWUgOiBudWxsKTtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZQcm9wcywgXCJzY3JlZW5SZXNcIiwgd2ViLnNjcmVlblJlcyk7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52UHJvcHMsIFwidXNlckNvbnNlbnRcIiwgd2ViLnVzZXJDb25zZW50ID8gc3RyVHJ1ZSA6IG51bGwpO1xyXG4gICAgfVxyXG4gICAgdmFyIGV4dE9zID0gaXRtRXh0Lm9zO1xyXG4gICAgaWYgKGV4dE9zKSB7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52VGFncywgQ3R4VGFnS2V5cy5kZXZpY2VPUywgZXh0T3NbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10pO1xyXG4gICAgfVxyXG4gICAgLy8gTm8gc3VwcG9ydCBmb3IgbWFwcGluZyBUcmFjZS50cmFjZVN0YXRlIHRvIDIuMCBhcyBpdCBpcyBjdXJyZW50bHkgZW1wdHlcclxuICAgIHZhciBleHRUcmFjZSA9IGl0bUV4dC50cmFjZTtcclxuICAgIGlmIChleHRUcmFjZSkge1xyXG4gICAgICAgIF9zZXRWYWx1ZUlmKGVudlRhZ3MsIEN0eFRhZ0tleXMub3BlcmF0aW9uUGFyZW50SWQsIGV4dFRyYWNlLnBhcmVudElEKTtcclxuICAgICAgICBfc2V0VmFsdWVJZihlbnZUYWdzLCBDdHhUYWdLZXlzLm9wZXJhdGlvbk5hbWUsIGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIGV4dFRyYWNlW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dKSk7XHJcbiAgICAgICAgX3NldFZhbHVlSWYoZW52VGFncywgQ3R4VGFnS2V5cy5vcGVyYXRpb25JZCwgZXh0VHJhY2VbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSUQgKi9dKTtcclxuICAgIH1cclxuICAgIC8vIFNhbXBsZSA0LjAgc2NoZW1hXHJcbiAgICAvLyAge1xyXG4gICAgLy8gICAgIFwidGltZVwiIDogXCIyMDE4LTA5LTA1VDIyOjUxOjIyLjQ5MzZaXCIsXHJcbiAgICAvLyAgICAgXCJuYW1lXCIgOiBcIk1ldHJpY1dpdGhOYW1lc3BhY2VcIixcclxuICAgIC8vICAgICBcImlLZXlcIiA6IFwiQUJDLTVhNGNiZDIwLWU2MDEtNGVmNS1hM2M2LTVkNjU3N2U0Mzk4ZVwiLFxyXG4gICAgLy8gICAgIFwiZXh0XCI6IHsgIFwiY2xvdWRcIjoge1xyXG4gICAgLy8gICAgICAgICAgXCJyb2xlXCI6IFwiV0FUU09OM1wiLFxyXG4gICAgLy8gICAgICAgICAgXCJyb2xlSW5zdGFuY2VcIjogXCJDTzRBRUFQMDAwMDAyNjBcIlxyXG4gICAgLy8gICAgICB9LFxyXG4gICAgLy8gICAgICBcImRldmljZVwiOiB7fSwgXCJjb3JyZWxhdGlvblwiOiB7fSB9LFxyXG4gICAgLy8gICAgICBcInRhZ3NcIjogW1xyXG4gICAgLy8gICAgICAgIHsgXCJhbWF6b24ucmVnaW9uXCIgOiBcImVhc3QyXCIgfSxcclxuICAgIC8vICAgICAgICB7IFwib3MuZXhwaWRcIiA6IFwid3A6MDJkZjIzOVwiIH1cclxuICAgIC8vICAgICBdXHJcbiAgICAvLyAgIH1cclxuICAgIHZhciB0Z3MgPSB7fTtcclxuICAgIC8vIGRlYWxzIHdpdGggdGFncy5wdXNoKHtvYmplY3R9KVxyXG4gICAgZm9yICh2YXIgaSA9IGl0bVRhZ3NbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgdGcgPSBpdG1UYWdzW2ldO1xyXG4gICAgICAgIG9iakZvckVhY2hLZXkodGcsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRnc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaXRtVGFncy5zcGxpY2UoaSwgMSk7XHJcbiAgICB9XHJcbiAgICAvLyBkZWFscyB3aXRoIHRhZ3Nba2V5XT12YWx1ZSAoYW5kIGhhbmRsZXMgaGFzT3duUHJvcGVydHkpXHJcbiAgICBvYmpGb3JFYWNoS2V5KGl0bVRhZ3MsIGZ1bmN0aW9uICh0ZywgdmFsdWUpIHtcclxuICAgICAgICB0Z3NbdGddID0gdmFsdWU7XHJcbiAgICB9KTtcclxuICAgIHZhciB0aGVUYWdzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGVudlRhZ3MpLCB0Z3MpO1xyXG4gICAgaWYgKCF0aGVUYWdzW0N0eFRhZ0tleXMuaW50ZXJuYWxTZGtWZXJzaW9uXSkge1xyXG4gICAgICAgIC8vIEFwcGVuZCBhIHZlcnNpb24gaW4gY2FzZSBpdCBpcyBub3QgYWxyZWFkeSBzZXRcclxuICAgICAgICB0aGVUYWdzW0N0eFRhZ0tleXMuaW50ZXJuYWxTZGtWZXJzaW9uXSA9IFwiamF2YXNjcmlwdDpcIi5jb25jYXQoRW52ZWxvcGVDcmVhdG9yLlZlcnNpb24pO1xyXG4gICAgfVxyXG4gICAgZW52W19EWU5fVEFHUyAvKiBAbWluOiUyZXRhZ3MgKi9dID0gb3B0aW1pemVPYmplY3QodGhlVGFncyk7XHJcbn1cclxuZnVuY3Rpb24gX2V4dHJhY3RQcm9wc0FuZE1lYXN1cmVtZW50cyhkYXRhLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMpIHtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoZGF0YSkpIHtcclxuICAgICAgICBvYmpGb3JFYWNoS2V5KGRhdGEsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmIChpc051bWJlcih2YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50c1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChoYXNKU09OKCkpIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGdldEpTT04oKVtfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10odmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gX2NvbnZlcnRQcm9wc1VuZGVmaW5lZFRvQ3VzdG9tRGVmaW5lZFZhbHVlKHByb3BlcnRpZXMsIGN1c3RvbVVuZGVmaW5lZFZhbHVlKSB7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHByb3BlcnRpZXMpKSB7XHJcbiAgICAgICAgb2JqRm9yRWFjaEtleShwcm9wZXJ0aWVzLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB2YWx1ZSB8fCBjdXN0b21VbmRlZmluZWRWYWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4vLyBUT0RPOiBEbyB3ZSB3YW50IHRoaXMgdG8gdGFrZSBsb2dnZXIgYXMgYXJnIG9yIHVzZSB0aGlzLl9sb2dnZXIgYXMgbm9uc3RhdGljP1xyXG5mdW5jdGlvbiBfY3JlYXRlRW52ZWxvcGUobG9nZ2VyLCBlbnZlbG9wZVR5cGUsIHRlbGVtZXRyeUl0ZW0sIGRhdGEpIHtcclxuICAgIHZhciBlbnZlbG9wZSA9IG5ldyBFbnZlbG9wZShsb2dnZXIsIGRhdGEsIGVudmVsb3BlVHlwZSk7XHJcbiAgICBfc2V0VmFsdWVJZihlbnZlbG9wZSwgXCJzYW1wbGVSYXRlXCIsIHRlbGVtZXRyeUl0ZW1bU2FtcGxlUmF0ZV0pO1xyXG4gICAgaWYgKCh0ZWxlbWV0cnlJdGVtW3N0ckJhc2VEYXRhXSB8fCB7fSkuc3RhcnRUaW1lKSB7XHJcbiAgICAgICAgZW52ZWxvcGUudGltZSA9IHRvSVNPU3RyaW5nKHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdLnN0YXJ0VGltZSk7XHJcbiAgICB9XHJcbiAgICBlbnZlbG9wZS5pS2V5ID0gdGVsZW1ldHJ5SXRlbS5pS2V5O1xyXG4gICAgdmFyIGlLZXlOb0Rhc2hlcyA9IHRlbGVtZXRyeUl0ZW0uaUtleS5yZXBsYWNlKC8tL2csIFwiXCIpO1xyXG4gICAgZW52ZWxvcGVbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10gPSBlbnZlbG9wZVtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXS5yZXBsYWNlKFwiezB9XCIsIGlLZXlOb0Rhc2hlcyk7XHJcbiAgICAvLyBleHRyYWN0IGFsbCBleHRlbnNpb25zIGZyb20gY3R4XHJcbiAgICBfZXh0cmFjdFBhcnRBRXh0ZW5zaW9ucyhsb2dnZXIsIHRlbGVtZXRyeUl0ZW0sIGVudmVsb3BlKTtcclxuICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgZW52ZWxvcGUgdGFncyAoZXh0ZW5zaW9uIG9mIFBhcnQgQSkgYW5kIHBpY2sgb3V0IHRoZSBvbmVzIHRoYXQgc2hvdWxkIGdvIGluIG91dGdvaW5nIGVudmVsb3BlIHRhZ3NcclxuICAgIHRlbGVtZXRyeUl0ZW1bX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gPSB0ZWxlbWV0cnlJdGVtW19EWU5fVEFHUyAvKiBAbWluOiUyZXRhZ3MgKi9dIHx8IFtdO1xyXG4gICAgcmV0dXJuIG9wdGltaXplT2JqZWN0KGVudmVsb3BlKTtcclxufVxyXG5mdW5jdGlvbiBFbnZlbG9wZUNyZWF0b3JJbml0KGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSkge1xyXG4gICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdKSkge1xyXG4gICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA0NiAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRlbGVtZXRyeUVudmVsb3BlSW52YWxpZCAqLywgXCJ0ZWxlbWV0cnlJdGVtLmJhc2VEYXRhIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIH1cclxufVxyXG5leHBvcnQgdmFyIEVudmVsb3BlQ3JlYXRvciA9IHtcclxuICAgIFZlcnNpb246ICcyLjguOSdcclxufTtcclxuZXhwb3J0IGZ1bmN0aW9uIERlcGVuZGVuY3lFbnZlbG9wZUNyZWF0b3IobG9nZ2VyLCB0ZWxlbWV0cnlJdGVtLCBjdXN0b21VbmRlZmluZWRWYWx1ZSkge1xyXG4gICAgRW52ZWxvcGVDcmVhdG9ySW5pdChsb2dnZXIsIHRlbGVtZXRyeUl0ZW0pO1xyXG4gICAgdmFyIGN1c3RvbU1lYXN1cmVtZW50cyA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXSB8fCB7fTtcclxuICAgIHZhciBjdXN0b21Qcm9wZXJ0aWVzID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV1bc3RyUHJvcGVydGllc10gfHwge307XHJcbiAgICBfZXh0cmFjdFByb3BzQW5kTWVhc3VyZW1lbnRzKHRlbGVtZXRyeUl0ZW1bX0RZTl9EQVRBIC8qIEBtaW46JTJlZGF0YSAqL10sIGN1c3RvbVByb3BlcnRpZXMsIGN1c3RvbU1lYXN1cmVtZW50cyk7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVVuZGVmaW5lZFZhbHVlKSkge1xyXG4gICAgICAgIF9jb252ZXJ0UHJvcHNVbmRlZmluZWRUb0N1c3RvbURlZmluZWRWYWx1ZShjdXN0b21Qcm9wZXJ0aWVzLCBjdXN0b21VbmRlZmluZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgYmQgPSB0ZWxlbWV0cnlJdGVtW3N0ckJhc2VEYXRhXTtcclxuICAgIGlmIChpc051bGxPclVuZGVmaW5lZChiZCkpIHtcclxuICAgICAgICBfd2FyblRvQ29uc29sZShsb2dnZXIsIFwiSW52YWxpZCBpbnB1dCBmb3IgZGVwZW5kZW5jeSBkYXRhXCIpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIG1ldGhvZCA9IGJkW3N0clByb3BlcnRpZXNdICYmIGJkW3N0clByb3BlcnRpZXNdW0h0dHBNZXRob2RdID8gYmRbc3RyUHJvcGVydGllc11bSHR0cE1ldGhvZF0gOiBcIkdFVFwiO1xyXG4gICAgdmFyIHJlbW90ZURlcERhdGEgPSBuZXcgUmVtb3RlRGVwZW5kZW5jeURhdGEobG9nZ2VyLCBiZC5pZCwgYmQudGFyZ2V0LCBiZFtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSwgYmRbU1RSX0RVUkFUSU9OIC8qIEBtaW46JTJlZHVyYXRpb24gKi9dLCBiZC5zdWNjZXNzLCBiZC5yZXNwb25zZUNvZGUsIG1ldGhvZCwgYmQudHlwZSwgYmQuY29ycmVsYXRpb25Db250ZXh0LCBjdXN0b21Qcm9wZXJ0aWVzLCBjdXN0b21NZWFzdXJlbWVudHMpO1xyXG4gICAgdmFyIGRhdGEgPSBuZXcgRGF0YShSZW1vdGVEZXBlbmRlbmN5RGF0YVtfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSwgcmVtb3RlRGVwRGF0YSk7XHJcbiAgICByZXR1cm4gX2NyZWF0ZUVudmVsb3BlKGxvZ2dlciwgUmVtb3RlRGVwZW5kZW5jeURhdGFbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgdGVsZW1ldHJ5SXRlbSwgZGF0YSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEV2ZW50RW52ZWxvcGVDcmVhdG9yKGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSwgY3VzdG9tVW5kZWZpbmVkVmFsdWUpIHtcclxuICAgIEVudmVsb3BlQ3JlYXRvckluaXQobG9nZ2VyLCB0ZWxlbWV0cnlJdGVtKTtcclxuICAgIHZhciBjdXN0b21Qcm9wZXJ0aWVzID0ge307XHJcbiAgICB2YXIgY3VzdG9tTWVhc3VyZW1lbnRzID0ge307XHJcbiAgICBpZiAodGVsZW1ldHJ5SXRlbVtzdHJCYXNlVHlwZV0gIT09IEV2ZW50W19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dKSB7XHJcbiAgICAgICAgY3VzdG9tUHJvcGVydGllc1tcImJhc2VUeXBlU291cmNlXCJdID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlVHlwZV07IC8vIHNhdmUgdGhlIHBhc3NlZCBpbiBiYXNlIHR5cGUgYXMgYSBwcm9wZXJ0eVxyXG4gICAgfVxyXG4gICAgaWYgKHRlbGVtZXRyeUl0ZW1bc3RyQmFzZVR5cGVdID09PSBFdmVudFtfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSkgeyAvLyB0YWtlIGNvbGxlY3Rpb25cclxuICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV1bc3RyUHJvcGVydGllc10gfHwge307XHJcbiAgICAgICAgY3VzdG9tTWVhc3VyZW1lbnRzID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV1bX0RZTl9NRUFTVVJFTUVOVFMgLyogQG1pbjolMmVtZWFzdXJlbWVudHMgKi9dIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7IC8vIGlmIGl0cyBub3QgYSBrbm93biB0eXBlLCBjb252ZXJ0IHRvIGN1c3RvbSBldmVudFxyXG4gICAgICAgIGlmICh0ZWxlbWV0cnlJdGVtW3N0ckJhc2VEYXRhXSkge1xyXG4gICAgICAgICAgICBfZXh0cmFjdFByb3BzQW5kTWVhc3VyZW1lbnRzKHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdLCBjdXN0b21Qcm9wZXJ0aWVzLCBjdXN0b21NZWFzdXJlbWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEV4dHJhY3Qgcm9vdCBsZXZlbCBwcm9wZXJ0aWVzIGZyb20gcGFydCBDIHRlbGVtZXRyeUl0ZW0uZGF0YVxyXG4gICAgX2V4dHJhY3RQcm9wc0FuZE1lYXN1cmVtZW50cyh0ZWxlbWV0cnlJdGVtW19EWU5fREFUQSAvKiBAbWluOiUyZWRhdGEgKi9dLCBjdXN0b21Qcm9wZXJ0aWVzLCBjdXN0b21NZWFzdXJlbWVudHMpO1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChjdXN0b21VbmRlZmluZWRWYWx1ZSkpIHtcclxuICAgICAgICBfY29udmVydFByb3BzVW5kZWZpbmVkVG9DdXN0b21EZWZpbmVkVmFsdWUoY3VzdG9tUHJvcGVydGllcywgY3VzdG9tVW5kZWZpbmVkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdmFyIGV2ZW50TmFtZSA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdW19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dO1xyXG4gICAgdmFyIGV2ZW50RGF0YSA9IG5ldyBFdmVudChsb2dnZXIsIGV2ZW50TmFtZSwgY3VzdG9tUHJvcGVydGllcywgY3VzdG9tTWVhc3VyZW1lbnRzKTtcclxuICAgIHZhciBkYXRhID0gbmV3IERhdGEoRXZlbnRbX0RZTl9EQVRBX1RZUEUgLyogQG1pbjolMmVkYXRhVHlwZSAqL10sIGV2ZW50RGF0YSk7XHJcbiAgICByZXR1cm4gX2NyZWF0ZUVudmVsb3BlKGxvZ2dlciwgRXZlbnRbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgdGVsZW1ldHJ5SXRlbSwgZGF0YSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIEV4Y2VwdGlvbkVudmVsb3BlQ3JlYXRvcihsb2dnZXIsIHRlbGVtZXRyeUl0ZW0sIGN1c3RvbVVuZGVmaW5lZFZhbHVlKSB7XHJcbiAgICBFbnZlbG9wZUNyZWF0b3JJbml0KGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAvLyBFeHRyYWN0IHJvb3QgbGV2ZWwgcHJvcGVydGllcyBmcm9tIHBhcnQgQyB0ZWxlbWV0cnlJdGVtLmRhdGFcclxuICAgIHZhciBjdXN0b21NZWFzdXJlbWVudHMgPSB0ZWxlbWV0cnlJdGVtW3N0ckJhc2VEYXRhXVtfRFlOX01FQVNVUkVNRU5UUyAvKiBAbWluOiUyZW1lYXN1cmVtZW50cyAqL10gfHwge307XHJcbiAgICB2YXIgY3VzdG9tUHJvcGVydGllcyA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdW3N0clByb3BlcnRpZXNdIHx8IHt9O1xyXG4gICAgX2V4dHJhY3RQcm9wc0FuZE1lYXN1cmVtZW50cyh0ZWxlbWV0cnlJdGVtW19EWU5fREFUQSAvKiBAbWluOiUyZWRhdGEgKi9dLCBjdXN0b21Qcm9wZXJ0aWVzLCBjdXN0b21NZWFzdXJlbWVudHMpO1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChjdXN0b21VbmRlZmluZWRWYWx1ZSkpIHtcclxuICAgICAgICBfY29udmVydFByb3BzVW5kZWZpbmVkVG9DdXN0b21EZWZpbmVkVmFsdWUoY3VzdG9tUHJvcGVydGllcywgY3VzdG9tVW5kZWZpbmVkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdmFyIGJkID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV07XHJcbiAgICB2YXIgZXhEYXRhID0gRXhjZXB0aW9uLkNyZWF0ZUZyb21JbnRlcmZhY2UobG9nZ2VyLCBiZCwgY3VzdG9tUHJvcGVydGllcywgY3VzdG9tTWVhc3VyZW1lbnRzKTtcclxuICAgIHZhciBkYXRhID0gbmV3IERhdGEoRXhjZXB0aW9uW19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBleERhdGEpO1xyXG4gICAgcmV0dXJuIF9jcmVhdGVFbnZlbG9wZShsb2dnZXIsIEV4Y2VwdGlvbltfRFlOX0VOVkVMT1BFX1RZUEUgLyogQG1pbjolMmVlbnZlbG9wZVR5cGUgKi9dLCB0ZWxlbWV0cnlJdGVtLCBkYXRhKTtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gTWV0cmljRW52ZWxvcGVDcmVhdG9yKGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSwgY3VzdG9tVW5kZWZpbmVkVmFsdWUpIHtcclxuICAgIEVudmVsb3BlQ3JlYXRvckluaXQobG9nZ2VyLCB0ZWxlbWV0cnlJdGVtKTtcclxuICAgIHZhciBiYXNlRGF0YSA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdO1xyXG4gICAgdmFyIHByb3BzID0gYmFzZURhdGFbc3RyUHJvcGVydGllc10gfHwge307XHJcbiAgICB2YXIgbWVhc3VyZW1lbnRzID0gYmFzZURhdGFbX0RZTl9NRUFTVVJFTUVOVFMgLyogQG1pbjolMmVtZWFzdXJlbWVudHMgKi9dIHx8IHt9O1xyXG4gICAgX2V4dHJhY3RQcm9wc0FuZE1lYXN1cmVtZW50cyh0ZWxlbWV0cnlJdGVtW19EWU5fREFUQSAvKiBAbWluOiUyZWRhdGEgKi9dLCBwcm9wcywgbWVhc3VyZW1lbnRzKTtcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY3VzdG9tVW5kZWZpbmVkVmFsdWUpKSB7XHJcbiAgICAgICAgX2NvbnZlcnRQcm9wc1VuZGVmaW5lZFRvQ3VzdG9tRGVmaW5lZFZhbHVlKHByb3BzLCBjdXN0b21VbmRlZmluZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgYmFzZU1ldHJpY0RhdGEgPSBuZXcgTWV0cmljKGxvZ2dlciwgYmFzZURhdGFbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10sIGJhc2VEYXRhLmF2ZXJhZ2UsIGJhc2VEYXRhLnNhbXBsZUNvdW50LCBiYXNlRGF0YS5taW4sIGJhc2VEYXRhLm1heCwgYmFzZURhdGEuc3RkRGV2LCBwcm9wcywgbWVhc3VyZW1lbnRzKTtcclxuICAgIHZhciBkYXRhID0gbmV3IERhdGEoTWV0cmljW19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBiYXNlTWV0cmljRGF0YSk7XHJcbiAgICByZXR1cm4gX2NyZWF0ZUVudmVsb3BlKGxvZ2dlciwgTWV0cmljW19EWU5fRU5WRUxPUEVfVFlQRSAvKiBAbWluOiUyZWVudmVsb3BlVHlwZSAqL10sIHRlbGVtZXRyeUl0ZW0sIGRhdGEpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBQYWdlVmlld0VudmVsb3BlQ3JlYXRvcihsb2dnZXIsIHRlbGVtZXRyeUl0ZW0sIGN1c3RvbVVuZGVmaW5lZFZhbHVlKSB7XHJcbiAgICBFbnZlbG9wZUNyZWF0b3JJbml0KGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSk7XHJcbiAgICAvLyBTaW5jZSBkdXJhdGlvbiBpcyBub3QgcGFydCBvZiB0aGUgZG9tYWluIHByb3BlcnRpZXMgaW4gQ29tbW9uIFNjaGVtYSwgZXh0cmFjdCBpdCBmcm9tIHBhcnQgQ1xyXG4gICAgdmFyIGR1cmF0aW9uO1xyXG4gICAgdmFyIGJhc2VEYXRhID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV07XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGJhc2VEYXRhKSAmJlxyXG4gICAgICAgICFpc051bGxPclVuZGVmaW5lZChiYXNlRGF0YVtzdHJQcm9wZXJ0aWVzXSkgJiZcclxuICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQoYmFzZURhdGFbc3RyUHJvcGVydGllc11bU1RSX0RVUkFUSU9OXSkpIHsgLy8gZnJvbSBwYXJ0IEIgcHJvcGVydGllc1xyXG4gICAgICAgIGR1cmF0aW9uID0gYmFzZURhdGFbc3RyUHJvcGVydGllc11bU1RSX0RVUkFUSU9OXTtcclxuICAgICAgICBkZWxldGUgYmFzZURhdGFbc3RyUHJvcGVydGllc11bU1RSX0RVUkFUSU9OXTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0ZWxlbWV0cnlJdGVtW19EWU5fREFUQSAvKiBAbWluOiUyZWRhdGEgKi9dKSAmJlxyXG4gICAgICAgICFpc051bGxPclVuZGVmaW5lZCh0ZWxlbWV0cnlJdGVtW19EWU5fREFUQSAvKiBAbWluOiUyZWRhdGEgKi9dW1NUUl9EVVJBVElPTl0pKSB7IC8vIGZyb20gY3VzdG9tIHByb3BlcnRpZXNcclxuICAgICAgICBkdXJhdGlvbiA9IHRlbGVtZXRyeUl0ZW1bX0RZTl9EQVRBIC8qIEBtaW46JTJlZGF0YSAqL11bU1RSX0RVUkFUSU9OXTtcclxuICAgICAgICBkZWxldGUgdGVsZW1ldHJ5SXRlbVtfRFlOX0RBVEEgLyogQG1pbjolMmVkYXRhICovXVtTVFJfRFVSQVRJT05dO1xyXG4gICAgfVxyXG4gICAgdmFyIGJkID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV07XHJcbiAgICAvLyBzcGVjaWFsIGNhc2U6IHBhZ2V2aWV3LmlkIGlzIGdyYWJiZWQgZnJvbSBjdXJyZW50IG9wZXJhdGlvbiBpZC4gQW5hbHl0aWNzIHBsdWdpbiBpcyBkZWNvdXBsZWQgZnJvbSBwcm9wZXJ0aWVzIHBsdWdpbiwgc28gdGhpcyBpcyBkb25lIGhlcmUgaW5zdGVhZC4gVGhpcyBjYW4gYmUgbWFkZSBhIGRlZmF1bHQgdGVsZW1ldHJ5IGludGlhbGl6ZXIgaW5zdGVhZCBpZiBuZWVkZWQgdG8gYmUgZGVjb3VwbGVkIGZyb20gY2hhbm5lbFxyXG4gICAgdmFyIGN1cnJlbnRDb250ZXh0SWQ7XHJcbiAgICBpZiAoKCh0ZWxlbWV0cnlJdGVtLmV4dCB8fCB7fSkudHJhY2UgfHwge30pW19EWU5fVFJBQ0VfSUQgLyogQG1pbjolMmV0cmFjZUlEICovXSkge1xyXG4gICAgICAgIGN1cnJlbnRDb250ZXh0SWQgPSB0ZWxlbWV0cnlJdGVtLmV4dC50cmFjZVtfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL107XHJcbiAgICB9XHJcbiAgICB2YXIgaWQgPSBiZC5pZCB8fCBjdXJyZW50Q29udGV4dElkO1xyXG4gICAgdmFyIG5hbWUgPSBiZFtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXTtcclxuICAgIHZhciB1cmwgPSBiZC51cmk7XHJcbiAgICB2YXIgcHJvcGVydGllcyA9IGJkW3N0clByb3BlcnRpZXNdIHx8IHt9O1xyXG4gICAgdmFyIG1lYXN1cmVtZW50cyA9IGJkW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXSB8fCB7fTtcclxuICAgIC8vIHJlZlVyaSBpcyBhIGZpZWxkIHRoYXQgQnJlZXplIHN0aWxsIGRvZXMgbm90IHJlY29nbml6ZSBhcyBwYXJ0IG9mIFBhcnQgQi4gRm9yIG5vdywgcHV0IGl0IGluIFBhcnQgQyB1bnRpbCBpdCBzdXBwb3J0cyBpdCBhcyBhIGRvbWFpbiBwcm9wZXJ0eVxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChiZC5yZWZVcmkpKSB7XHJcbiAgICAgICAgcHJvcGVydGllc1tcInJlZlVyaVwiXSA9IGJkLnJlZlVyaTtcclxuICAgIH1cclxuICAgIC8vIHBhZ2VUeXBlIGlzIGEgZmllbGQgdGhhdCBCcmVlemUgc3RpbGwgZG9lcyBub3QgcmVjb2duaXplIGFzIHBhcnQgb2YgUGFydCBCLiBGb3Igbm93LCBwdXQgaXQgaW4gUGFydCBDIHVudGlsIGl0IHN1cHBvcnRzIGl0IGFzIGEgZG9tYWluIHByb3BlcnR5XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGJkLnBhZ2VUeXBlKSkge1xyXG4gICAgICAgIHByb3BlcnRpZXNbXCJwYWdlVHlwZVwiXSA9IGJkLnBhZ2VUeXBlO1xyXG4gICAgfVxyXG4gICAgLy8gaXNMb2dnZWRJbiBpcyBhIGZpZWxkIHRoYXQgQnJlZXplIHN0aWxsIGRvZXMgbm90IHJlY29nbml6ZSBhcyBwYXJ0IG9mIFBhcnQgQi4gRm9yIG5vdywgcHV0IGl0IGluIFBhcnQgQyB1bnRpbCBpdCBzdXBwb3J0cyBpdCBhcyBhIGRvbWFpbiBwcm9wZXJ0eVxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChiZC5pc0xvZ2dlZEluKSkge1xyXG4gICAgICAgIHByb3BlcnRpZXNbXCJpc0xvZ2dlZEluXCJdID0gYmQuaXNMb2dnZWRJbltfRFlOX1RPX1NUUklORyAvKiBAbWluOiUyZXRvU3RyaW5nICovXSgpO1xyXG4gICAgfVxyXG4gICAgLy8gcGFnZVRhZ3MgaXMgYSBmaWVsZCB0aGF0IEJyZWV6ZSBzdGlsbCBkb2VzIG5vdCByZWNvZ25pemUgYXMgcGFydCBvZiBQYXJ0IEIuIEZvciBub3csIHB1dCBpdCBpbiBQYXJ0IEMgdW50aWwgaXQgc3VwcG9ydHMgaXQgYXMgYSBkb21haW4gcHJvcGVydHlcclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoYmRbc3RyUHJvcGVydGllc10pKSB7XHJcbiAgICAgICAgdmFyIHBhZ2VUYWdzID0gYmRbc3RyUHJvcGVydGllc107XHJcbiAgICAgICAgb2JqRm9yRWFjaEtleShwYWdlVGFncywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgcHJvcGVydGllc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfZXh0cmFjdFByb3BzQW5kTWVhc3VyZW1lbnRzKHRlbGVtZXRyeUl0ZW1bX0RZTl9EQVRBIC8qIEBtaW46JTJlZGF0YSAqL10sIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cyk7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVVuZGVmaW5lZFZhbHVlKSkge1xyXG4gICAgICAgIF9jb252ZXJ0UHJvcHNVbmRlZmluZWRUb0N1c3RvbURlZmluZWRWYWx1ZShwcm9wZXJ0aWVzLCBjdXN0b21VbmRlZmluZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgcGFnZVZpZXdEYXRhID0gbmV3IFBhZ2VWaWV3KGxvZ2dlciwgbmFtZSwgdXJsLCBkdXJhdGlvbiwgcHJvcGVydGllcywgbWVhc3VyZW1lbnRzLCBpZCk7XHJcbiAgICB2YXIgZGF0YSA9IG5ldyBEYXRhKFBhZ2VWaWV3W19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBwYWdlVmlld0RhdGEpO1xyXG4gICAgcmV0dXJuIF9jcmVhdGVFbnZlbG9wZShsb2dnZXIsIFBhZ2VWaWV3W19EWU5fRU5WRUxPUEVfVFlQRSAvKiBAbWluOiUyZWVudmVsb3BlVHlwZSAqL10sIHRlbGVtZXRyeUl0ZW0sIGRhdGEpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBQYWdlVmlld1BlcmZvcm1hbmNlRW52ZWxvcGVDcmVhdG9yKGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSwgY3VzdG9tVW5kZWZpbmVkVmFsdWUpIHtcclxuICAgIEVudmVsb3BlQ3JlYXRvckluaXQobG9nZ2VyLCB0ZWxlbWV0cnlJdGVtKTtcclxuICAgIHZhciBiZCA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdO1xyXG4gICAgdmFyIG5hbWUgPSBiZFtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXTtcclxuICAgIHZhciB1cmwgPSBiZC51cmkgfHwgYmQudXJsO1xyXG4gICAgdmFyIHByb3BlcnRpZXMgPSBiZFtzdHJQcm9wZXJ0aWVzXSB8fCB7fTtcclxuICAgIHZhciBtZWFzdXJlbWVudHMgPSBiZFtfRFlOX01FQVNVUkVNRU5UUyAvKiBAbWluOiUyZW1lYXN1cmVtZW50cyAqL10gfHwge307XHJcbiAgICBfZXh0cmFjdFByb3BzQW5kTWVhc3VyZW1lbnRzKHRlbGVtZXRyeUl0ZW1bX0RZTl9EQVRBIC8qIEBtaW46JTJlZGF0YSAqL10sIHByb3BlcnRpZXMsIG1lYXN1cmVtZW50cyk7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVVuZGVmaW5lZFZhbHVlKSkge1xyXG4gICAgICAgIF9jb252ZXJ0UHJvcHNVbmRlZmluZWRUb0N1c3RvbURlZmluZWRWYWx1ZShwcm9wZXJ0aWVzLCBjdXN0b21VbmRlZmluZWRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgYmFzZURhdGEgPSBuZXcgUGFnZVZpZXdQZXJmb3JtYW5jZShsb2dnZXIsIG5hbWUsIHVybCwgdW5kZWZpbmVkLCBwcm9wZXJ0aWVzLCBtZWFzdXJlbWVudHMsIGJkKTtcclxuICAgIHZhciBkYXRhID0gbmV3IERhdGEoUGFnZVZpZXdQZXJmb3JtYW5jZVtfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSwgYmFzZURhdGEpO1xyXG4gICAgcmV0dXJuIF9jcmVhdGVFbnZlbG9wZShsb2dnZXIsIFBhZ2VWaWV3UGVyZm9ybWFuY2VbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgdGVsZW1ldHJ5SXRlbSwgZGF0YSk7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIFRyYWNlRW52ZWxvcGVDcmVhdG9yKGxvZ2dlciwgdGVsZW1ldHJ5SXRlbSwgY3VzdG9tVW5kZWZpbmVkVmFsdWUpIHtcclxuICAgIEVudmVsb3BlQ3JlYXRvckluaXQobG9nZ2VyLCB0ZWxlbWV0cnlJdGVtKTtcclxuICAgIHZhciBtZXNzYWdlID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV0ubWVzc2FnZTtcclxuICAgIHZhciBzZXZlcml0eUxldmVsID0gdGVsZW1ldHJ5SXRlbVtzdHJCYXNlRGF0YV0uc2V2ZXJpdHlMZXZlbDtcclxuICAgIHZhciBwcm9wcyA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdW3N0clByb3BlcnRpZXNdIHx8IHt9O1xyXG4gICAgdmFyIG1lYXN1cmVtZW50cyA9IHRlbGVtZXRyeUl0ZW1bc3RyQmFzZURhdGFdW19EWU5fTUVBU1VSRU1FTlRTIC8qIEBtaW46JTJlbWVhc3VyZW1lbnRzICovXSB8fCB7fTtcclxuICAgIF9leHRyYWN0UHJvcHNBbmRNZWFzdXJlbWVudHModGVsZW1ldHJ5SXRlbVtfRFlOX0RBVEEgLyogQG1pbjolMmVkYXRhICovXSwgcHJvcHMsIG1lYXN1cmVtZW50cyk7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGN1c3RvbVVuZGVmaW5lZFZhbHVlKSkge1xyXG4gICAgICAgIF9jb252ZXJ0UHJvcHNVbmRlZmluZWRUb0N1c3RvbURlZmluZWRWYWx1ZShwcm9wcywgY3VzdG9tVW5kZWZpbmVkVmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdmFyIGJhc2VEYXRhID0gbmV3IFRyYWNlKGxvZ2dlciwgbWVzc2FnZSwgc2V2ZXJpdHlMZXZlbCwgcHJvcHMsIG1lYXN1cmVtZW50cyk7XHJcbiAgICB2YXIgZGF0YSA9IG5ldyBEYXRhKFRyYWNlW19EWU5fREFUQV9UWVBFIC8qIEBtaW46JTJlZGF0YVR5cGUgKi9dLCBiYXNlRGF0YSk7XHJcbiAgICByZXR1cm4gX2NyZWF0ZUVudmVsb3BlKGxvZ2dlciwgVHJhY2VbX0RZTl9FTlZFTE9QRV9UWVBFIC8qIEBtaW46JTJlZW52ZWxvcGVUeXBlICovXSwgdGVsZW1ldHJ5SXRlbSwgZGF0YSk7XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RW52ZWxvcGVDcmVhdG9yLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENoYW5uZWwsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5pbXBvcnQgeyBjcmVhdGVVbmlxdWVOYW1lc3BhY2UsIGV2ZW50T2ZmLCBldmVudE9uLCBnZXREb2N1bWVudCwgZ2V0TmF2aWdhdG9yLCBnZXRXaW5kb3csIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1VuZGVmaW5lZCwgbWVyZ2VFdnROYW1lc3BhY2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9PTl9MSU5FIH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbmZ1bmN0aW9uIF9kaXNhYmxlRXZlbnRzKHRhcmdldCwgZXZ0TmFtZXNwYWNlKSB7XHJcbiAgICBldmVudE9mZih0YXJnZXQsIG51bGwsIG51bGwsIGV2dE5hbWVzcGFjZSk7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZSBhIG5ldyBPZmZsaW5lTGlzdGVuZXIgaW5zdGFuY2UgdG8gbW9uaXRvciBicm93c2VyIG9ubGluZSAvIG9mZmxpbmUgZXZlbnRzXHJcbiAqIEBwYXJhbSBwYXJlbnRFdnROYW1lc3BhY2UgLSBUaGUgcGFyZW50IGV2ZW50IG5hbWVzcGFjZSB0byBhcHBlbmQgdG8gYW55IHNwZWNpZmljIGV2ZW50cyBmb3IgdGhpcyBpbnN0YW5jZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9mZmxpbmVMaXN0ZW5lcihwYXJlbnRFdnROYW1lc3BhY2UpIHtcclxuICAgIHZhciBfZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xyXG4gICAgdmFyIF9uYXZpZ2F0b3IgPSBnZXROYXZpZ2F0b3IoKTsgLy8gR2V0cyB0aGUgd2luZG93Lm5hdmlnYXRvciBvciB3b3JrZXJOYXZpZ2F0b3IgZGVwZW5kaW5nIG9uIHRoZSBnbG9iYWxcclxuICAgIHZhciBfaXNMaXN0ZW5pbmcgPSBmYWxzZTtcclxuICAgIHZhciBfb25saW5lU3RhdHVzID0gdHJ1ZTtcclxuICAgIHZhciBfZXZ0TmFtZXNwYWNlID0gbWVyZ2VFdnROYW1lc3BhY2UoY3JlYXRlVW5pcXVlTmFtZXNwYWNlKFwiT2ZmbGluZUxpc3RlbmVyXCIpLCBwYXJlbnRFdnROYW1lc3BhY2UpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBpZiAoX2VuYWJsZUV2ZW50cyhnZXRXaW5kb3coKSkpIHtcclxuICAgICAgICAgICAgX2lzTGlzdGVuaW5nID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKF9kb2N1bWVudCkge1xyXG4gICAgICAgICAgICAvLyBBbHNvIGF0dGFjaCB0byB0aGUgZG9jdW1lbnQuYm9keSBvciBkb2N1bWVudFxyXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gX2RvY3VtZW50LmJvZHkgfHwgX2RvY3VtZW50O1xyXG4gICAgICAgICAgICBpZiAodGFyZ2V0Lm9ub25saW5lKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZUV2ZW50cyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2lzTGlzdGVuaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoX2lzTGlzdGVuaW5nKSB7XHJcbiAgICAgICAgICAgIC8vIFdlIGFyZSBsaXN0ZW5pbmcgdG8gZXZlbnRzIHNvIGxldHMgc2V0IHRoZSBjdXJyZW50IHN0YXR1cyByYXRoZXIgdGhhbiBhc3N1bWluZyB3ZSBhcmUgb25saW5lICMxNTM4XHJcbiAgICAgICAgICAgIGlmIChfbmF2aWdhdG9yICYmICFpc051bGxPclVuZGVmaW5lZChfbmF2aWdhdG9yW19EWU5fT05fTElORSAvKiBAbWluOiUyZW9uTGluZSAqL10pKSB7IC8vIG5hdmlnYXRvci5vbkxpbmUgaXMgdW5kZWZpbmVkIGluIHJlYWN0LW5hdGl2ZVxyXG4gICAgICAgICAgICAgICAgX29ubGluZVN0YXR1cyA9IF9uYXZpZ2F0b3JbX0RZTl9PTl9MSU5FIC8qIEBtaW46JTJlb25MaW5lICovXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgLy8gdGhpcyBtYWtlcyByZWFjdC1uYXRpdmUgbGVzcyBhbmdyeVxyXG4gICAgICAgIF9pc0xpc3RlbmluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX2VuYWJsZUV2ZW50cyh0YXJnZXQpIHtcclxuICAgICAgICB2YXIgZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0YXJnZXQpIHtcclxuICAgICAgICAgICAgZW5hYmxlZCA9IGV2ZW50T24odGFyZ2V0LCBcIm9ubGluZVwiLCBfc2V0T25saW5lLCBfZXZ0TmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50T24odGFyZ2V0LCBcIm9mZmxpbmVcIiwgX3NldE9mZmxpbmUsIF9ldnROYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlbmFibGVkO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gX3NldE9ubGluZSgpIHtcclxuICAgICAgICBfb25saW5lU3RhdHVzID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9zZXRPZmZsaW5lKCkge1xyXG4gICAgICAgIF9vbmxpbmVTdGF0dXMgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF9pc09ubGluZSgpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgICBpZiAoX2lzTGlzdGVuaW5nKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IF9vbmxpbmVTdGF0dXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKF9uYXZpZ2F0b3IgJiYgIWlzTnVsbE9yVW5kZWZpbmVkKF9uYXZpZ2F0b3JbX0RZTl9PTl9MSU5FIC8qIEBtaW46JTJlb25MaW5lICovXSkpIHsgLy8gbmF2aWdhdG9yLm9uTGluZSBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IF9uYXZpZ2F0b3JbX0RZTl9PTl9MSU5FIC8qIEBtaW46JTJlb25MaW5lICovXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIF91bmxvYWQoKSB7XHJcbiAgICAgICAgdmFyIHdpbiA9IGdldFdpbmRvdygpO1xyXG4gICAgICAgIGlmICh3aW4gJiYgX2lzTGlzdGVuaW5nKSB7XHJcbiAgICAgICAgICAgIF9kaXNhYmxlRXZlbnRzKHdpbiwgX2V2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgIGlmIChfZG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEFsc28gYXR0YWNoIHRvIHRoZSBkb2N1bWVudC5ib2R5IG9yIGRvY3VtZW50XHJcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gX2RvY3VtZW50LmJvZHkgfHwgX2RvY3VtZW50O1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0YXJnZXQub25vbmxpbmUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2Rpc2FibGVFdmVudHModGFyZ2V0LCBfZXZ0TmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfaXNMaXN0ZW5pbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGlzT25saW5lOiBfaXNPbmxpbmUsXHJcbiAgICAgICAgaXNMaXN0ZW5pbmc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9pc0xpc3RlbmluZzsgfSxcclxuICAgICAgICB1bmxvYWQ6IF91bmxvYWRcclxuICAgIH07XHJcbn1cclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9T2ZmbGluZS5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDaGFubmVsLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuaW1wb3J0IHsgX19leHRlbmRzRm4gYXMgX19leHRlbmRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1zaGltc1wiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyB1dGxHZXRTZXNzaW9uU3RvcmFnZSwgdXRsU2V0U2Vzc2lvblN0b3JhZ2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBfdGhyb3dJbnRlcm5hbCwgYXJyRm9yRWFjaCwgYXJySW5kZXhPZiwgZHVtcE9iaiwgZ2V0RXhjZXB0aW9uTmFtZSwgZ2V0SlNPTiwgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNTdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9CQVRDSF9QQVlMT0FEUywgX0RZTl9DTEVBUiwgX0RZTl9DTEVBUl9TRU5ULCBfRFlOX0NPVU5ULCBfRFlOX0VNSVRfTElORV9ERUxJTUlURURfMCwgX0RZTl9FTlFVRVVFLCBfRFlOX0xFTkdUSCwgX0RZTl9NQVJLX0FTX1NFTlQsIF9EWU5fTkFNRV9QUkVGSVgsIF9EWU5fUFVTSCwgX0RZTl9TVFJJTkdJRlksIF9EWU5fX0JVRkZFUl9fS0VZLCBfRFlOX19NQVhfX0JVRkZFUl9fU0laRSwgX0RZTl9fU0VOVF9fQlVGRkVSX19LRVkgfSBmcm9tIFwiLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxudmFyIEJhc2VTZW5kQnVmZmVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmFzZVNlbmRCdWZmZXIobG9nZ2VyLCBjb25maWcpIHtcclxuICAgICAgICB2YXIgX2J1ZmZlciA9IFtdO1xyXG4gICAgICAgIHZhciBfYnVmZmVyRnVsbE1lc3NhZ2VTZW50ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZ2V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gX2J1ZmZlcjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuX3NldCA9IGZ1bmN0aW9uIChidWZmZXIpIHtcclxuICAgICAgICAgICAgX2J1ZmZlciA9IGJ1ZmZlcjtcclxuICAgICAgICAgICAgcmV0dXJuIF9idWZmZXI7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oQmFzZVNlbmRCdWZmZXIsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0VOUVVFVUUgLyogQG1pbjolMmVlbnF1ZXVlICovXSA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3NlbGZbX0RZTl9DT1VOVCAvKiBAbWluOiUyZWNvdW50ICovXSgpID49IGNvbmZpZy5ldmVudHNMaW1pdEluTWVtKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzZW50IGludGVybmFsIGxvZyBvbmx5IG9uY2UgcGVyIHBhZ2Ugdmlld1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX2J1ZmZlckZ1bGxNZXNzYWdlU2VudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAxMDUgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5Jbk1lbW9yeVN0b3JhZ2VCdWZmZXJGdWxsICovLCBcIk1heGltdW0gaW4tbWVtb3J5IGJ1ZmZlciBzaXplIHJlYWNoZWQ6IFwiICsgX3NlbGZbX0RZTl9DT1VOVCAvKiBAbWluOiUyZWNvdW50ICovXSgpLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2J1ZmZlckZ1bGxNZXNzYWdlU2VudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9idWZmZXJbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQ09VTlQgLyogQG1pbjolMmVjb3VudCAqL10gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2J1ZmZlcltfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLnNpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IF9idWZmZXJbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbHAgPSAwOyBscCA8IF9idWZmZXJbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dOyBscCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBfYnVmZmVyW2xwXVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ1tfRFlOX0VNSVRfTElORV9ERUxJTUlURURfMCAvKiBAbWluOiUyZWVtaXRMaW5lRGVsaW1pdGVkSnNvbiAqL10oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNpemUgKz0gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBzaXplO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0NMRUFSIC8qIEBtaW46JTJlY2xlYXIgKi9dID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX2J1ZmZlciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgX2J1ZmZlckZ1bGxNZXNzYWdlU2VudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5nZXRJdGVtcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfYnVmZmVyLnNsaWNlKDApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0JBVENIX1BBWUxPQURTIC8qIEBtaW46JTJlYmF0Y2hQYXlsb2FkcyAqL10gPSBmdW5jdGlvbiAocGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBheWxvYWQgJiYgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhdGNoID0gY29uZmlnW19EWU5fRU1JVF9MSU5FX0RFTElNSVRFRF8wIC8qIEBtaW46JTJlZW1pdExpbmVEZWxpbWl0ZWRKc29uICovXSgpID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5qb2luKFwiXFxuXCIpIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJbXCIgKyBwYXlsb2FkLmpvaW4oXCIsXCIpICsgXCJdXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZVNlbmRCdWZmZXIucHJvdG90eXBlLmVucXVldWUuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZVNlbmRCdWZmZXIucHJvdG90eXBlLmNvdW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VTZW5kQnVmZmVyLnByb3RvdHlwZS5zaXplLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEJhc2VTZW5kQnVmZmVyLnByb3RvdHlwZS5jbGVhci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBCYXNlU2VuZEJ1ZmZlci5wcm90b3R5cGUuZ2V0SXRlbXMuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgQmFzZVNlbmRCdWZmZXIucHJvdG90eXBlLmJhdGNoUGF5bG9hZHMuXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBCYXNlU2VuZEJ1ZmZlci5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gQmFzZVNlbmRCdWZmZXI7XHJcbn0oKSk7XHJcbi8qXHJcbiAqIEFuIGFycmF5IGJhc2VkIHNlbmQgYnVmZmVyLlxyXG4gKi9cclxudmFyIEFycmF5U2VuZEJ1ZmZlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcclxuICAgIF9fZXh0ZW5kcyhBcnJheVNlbmRCdWZmZXIsIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBBcnJheVNlbmRCdWZmZXIobG9nZ2VyLCBjb25maWcpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBsb2dnZXIsIGNvbmZpZykgfHwgdGhpcztcclxuICAgICAgICBkeW5hbWljUHJvdG8oQXJyYXlTZW5kQnVmZmVyLCBfdGhpcywgZnVuY3Rpb24gKF9zZWxmLCBfYmFzZSkge1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX01BUktfQVNfU0VOVCAvKiBAbWluOiUyZW1hcmtBc1NlbnQgKi9dID0gZnVuY3Rpb24gKHBheWxvYWQpIHtcclxuICAgICAgICAgICAgICAgIF9iYXNlW19EWU5fQ0xFQVIgLyogQG1pbjolMmVjbGVhciAqL10oKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9DTEVBUl9TRU5UIC8qIEBtaW46JTJlY2xlYXJTZW50ICovXSA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBub3Qgc3VwcG9ydGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFycmF5U2VuZEJ1ZmZlci5wcm90b3R5cGUubWFya0FzU2VudC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBcnJheVNlbmRCdWZmZXIucHJvdG90eXBlLmNsZWFyU2VudC5cclxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBJRTggYnVnIHdoZW4gdXNpbmcgZHluYW1pY1Byb3RvKCkgd2l0aCBjbGFzc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhbnlcbiAgICAvLyBub24tZHluYW1pYyBmdW5jdGlvbnMgb3Igc3RhdGljIHByb3BlcnRpZXMvZnVuY3Rpb25zIHdoZW4gdXNpbmcgdWdsaWZ5LWpzIHRvIG1pbmlmeSB0aGUgcmVzdWx0aW5nIGNvZGUuXG4gICAgLy8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiBFUzMgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgIEFycmF5U2VuZEJ1ZmZlci5fX2llRHluPTE7XG5cbiAgICByZXR1cm4gQXJyYXlTZW5kQnVmZmVyO1xyXG59KEJhc2VTZW5kQnVmZmVyKSk7XHJcbmV4cG9ydCB7IEFycmF5U2VuZEJ1ZmZlciB9O1xyXG4vKlxyXG4gKiBTZXNzaW9uIHN0b3JhZ2UgYnVmZmVyIGhvbGRzIGEgY29weSBvZiBhbGwgdW5zZW50IGl0ZW1zIGluIHRoZSBicm93c2VyIHNlc3Npb24gc3RvcmFnZS5cclxuICovXHJcbnZhciBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyKGxvZ2dlciwgY29uZmlnKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbG9nZ2VyLCBjb25maWcpIHx8IHRoaXM7XHJcbiAgICAgICAgdmFyIF9idWZmZXJGdWxsTWVzc2FnZVNlbnQgPSBmYWxzZTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLCBfdGhpcywgZnVuY3Rpb24gKF9zZWxmLCBfYmFzZSkge1xyXG4gICAgICAgICAgICB2YXIgYnVmZmVySXRlbXMgPSBfZ2V0QnVmZmVyKFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcltfRFlOX19CVUZGRVJfX0tFWSAvKiBAbWluOiUyZUJVRkZFUl9LRVkgKi9dKTtcclxuICAgICAgICAgICAgdmFyIG5vdERlbGl2ZXJlZEl0ZW1zID0gX2dldEJ1ZmZlcihTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fU0VOVF9fQlVGRkVSX19LRVkgLyogQG1pbjolMmVTRU5UX0JVRkZFUl9LRVkgKi9dKTtcclxuICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IF9zZWxmLl9zZXQoYnVmZmVySXRlbXMuY29uY2F0KG5vdERlbGl2ZXJlZEl0ZW1zKSk7XHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBidWZmZXIgaGFzIHRvbyBtYW55IGl0ZW1zLCBkcm9wIGl0ZW1zIGZyb20gdGhlIGVuZC5cclxuICAgICAgICAgICAgaWYgKGJ1ZmZlcltfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fTUFYX19CVUZGRVJfX1NJWkUgLyogQG1pbjolMmVNQVhfQlVGRkVSX1NJWkUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICBidWZmZXJbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID0gU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyW19EWU5fX01BWF9fQlVGRkVSX19TSVpFIC8qIEBtaW46JTJlTUFYX0JVRkZFUl9TSVpFICovXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfc2V0QnVmZmVyKFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcltfRFlOX19TRU5UX19CVUZGRVJfX0tFWSAvKiBAbWluOiUyZVNFTlRfQlVGRkVSX0tFWSAqL10sIFtdKTtcclxuICAgICAgICAgICAgX3NldEJ1ZmZlcihTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fQlVGRkVSX19LRVkgLyogQG1pbjolMmVCVUZGRVJfS0VZICovXSwgYnVmZmVyKTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9FTlFVRVVFIC8qIEBtaW46JTJlZW5xdWV1ZSAqL10gPSBmdW5jdGlvbiAocGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmW19EWU5fQ09VTlQgLyogQG1pbjolMmVjb3VudCAqL10oKSA+PSBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fTUFYX19CVUZGRVJfX1NJWkUgLyogQG1pbjolMmVNQVhfQlVGRkVSX1NJWkUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VudCBpbnRlcm5hbCBsb2cgb25seSBvbmNlIHBlciBwYWdlIHZpZXdcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIV9idWZmZXJGdWxsTWVzc2FnZVNlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNjcgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5TZXNzaW9uU3RvcmFnZUJ1ZmZlckZ1bGwgKi8sIFwiTWF4aW11bSBidWZmZXIgc2l6ZSByZWFjaGVkOiBcIiArIF9zZWxmW19EWU5fQ09VTlQgLyogQG1pbjolMmVjb3VudCAqL10oKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9idWZmZXJGdWxsTWVzc2FnZVNlbnQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfYmFzZVtfRFlOX0VOUVVFVUUgLyogQG1pbjolMmVlbnF1ZXVlICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIF9zZXRCdWZmZXIoU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyW19EWU5fX0JVRkZFUl9fS0VZIC8qIEBtaW46JTJlQlVGRkVSX0tFWSAqL10sIF9zZWxmLl9nZXQoKSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQ0xFQVIgLyogQG1pbjolMmVjbGVhciAqL10gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBfYmFzZVtfRFlOX0NMRUFSIC8qIEBtaW46JTJlY2xlYXIgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICBfc2V0QnVmZmVyKFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcltfRFlOX19CVUZGRVJfX0tFWSAvKiBAbWluOiUyZUJVRkZFUl9LRVkgKi9dLCBfc2VsZi5fZ2V0KCkpO1xyXG4gICAgICAgICAgICAgICAgX3NldEJ1ZmZlcihTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fU0VOVF9fQlVGRkVSX19LRVkgLyogQG1pbjolMmVTRU5UX0JVRkZFUl9LRVkgKi9dLCBbXSk7XHJcbiAgICAgICAgICAgICAgICBfYnVmZmVyRnVsbE1lc3NhZ2VTZW50ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fTUFSS19BU19TRU5UIC8qIEBtaW46JTJlbWFya0FzU2VudCAqL10gPSBmdW5jdGlvbiAocGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3NldEJ1ZmZlcihTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fQlVGRkVSX19LRVkgLyogQG1pbjolMmVCVUZGRVJfS0VZICovXSwgX3NlbGYuX3NldChfcmVtb3ZlUGF5bG9hZHNGcm9tQnVmZmVyKHBheWxvYWQsIF9zZWxmLl9nZXQoKSkpKTtcclxuICAgICAgICAgICAgICAgIHZhciBzZW50RWxlbWVudHMgPSBfZ2V0QnVmZmVyKFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcltfRFlOX19TRU5UX19CVUZGRVJfX0tFWSAvKiBAbWluOiUyZVNFTlRfQlVGRkVSX0tFWSAqL10pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNlbnRFbGVtZW50cyBpbnN0YW5jZW9mIEFycmF5ICYmIHBheWxvYWQgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbnRFbGVtZW50cyA9IHNlbnRFbGVtZW50cy5jb25jYXQocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbnRFbGVtZW50c1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fTUFYX19CVUZGRVJfX1NJWkUgLyogQG1pbjolMmVNQVhfQlVGRkVSX1NJWkUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHNlbmQgdGVsZW1ldHJ5IG5vcm1hbGx5LiBJZiB0aGUgU0VOVF9CVUZGRVIgaXMgdG9vIGJpZyB3ZSBkb24ndCBhZGQgbmV3IGVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVudGlsIHdlIHJlY2VpdmUgYSByZXNwb25zZSBmcm9tIHRoZSBiYWNrZW5kIGFuZCB0aGUgYnVmZmVyIGhhcyBmcmVlIHNwYWNlIGFnYWluIChzZWUgY2xlYXJTZW50IG1ldGhvZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDY3IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU2Vzc2lvblN0b3JhZ2VCdWZmZXJGdWxsICovLCBcIlNlbnQgYnVmZmVyIHJlYWNoZWQgaXRzIG1heGltdW0gc2l6ZTogXCIgKyBzZW50RWxlbWVudHNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VudEVsZW1lbnRzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9IFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcltfRFlOX19NQVhfX0JVRkZFUl9fU0laRSAvKiBAbWluOiUyZU1BWF9CVUZGRVJfU0laRSAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIF9zZXRCdWZmZXIoU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyW19EWU5fX1NFTlRfX0JVRkZFUl9fS0VZIC8qIEBtaW46JTJlU0VOVF9CVUZGRVJfS0VZICovXSwgc2VudEVsZW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9DTEVBUl9TRU5UIC8qIEBtaW46JTJlY2xlYXJTZW50ICovXSA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VudEVsZW1lbnRzID0gX2dldEJ1ZmZlcihTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXJbX0RZTl9fU0VOVF9fQlVGRkVSX19LRVkgLyogQG1pbjolMmVTRU5UX0JVRkZFUl9LRVkgKi9dKTtcclxuICAgICAgICAgICAgICAgIHNlbnRFbGVtZW50cyA9IF9yZW1vdmVQYXlsb2Fkc0Zyb21CdWZmZXIocGF5bG9hZCwgc2VudEVsZW1lbnRzKTtcclxuICAgICAgICAgICAgICAgIF9zZXRCdWZmZXIoU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyW19EWU5fX1NFTlRfX0JVRkZFUl9fS0VZIC8qIEBtaW46JTJlU0VOVF9CVUZGRVJfS0VZICovXSwgc2VudEVsZW1lbnRzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZnVuY3Rpb24gX3JlbW92ZVBheWxvYWRzRnJvbUJ1ZmZlcihwYXlsb2FkcywgYnVmZmVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVtYWluaW5nID0gW107XHJcbiAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKGJ1ZmZlciwgZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKHZhbHVlKSAmJiBhcnJJbmRleE9mKHBheWxvYWRzLCB2YWx1ZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXSh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9nZXRCdWZmZXIoa2V5KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJlZml4ZWRLZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeGVkS2V5ID0gY29uZmlnW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSAmJiBjb25maWdbX0RZTl9OQU1FX1BSRUZJWCAvKiBAbWluOiUyZW5hbWVQcmVmaXggKi9dKCkgPyBjb25maWdbX0RZTl9OQU1FX1BSRUZJWCAvKiBAbWluOiUyZW5hbWVQcmVmaXggKi9dKCkgKyBcIl9cIiArIHByZWZpeGVkS2V5IDogcHJlZml4ZWRLZXk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1ZmZlckpzb24gPSB1dGxHZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIHByZWZpeGVkS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVySnNvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyXzEgPSBnZXRKU09OKCkucGFyc2UoYnVmZmVySnNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1N0cmluZyhidWZmZXJfMSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdXNpbmcgc29tZSB2ZXJzaW9uIHByb3RvdHlwZS5qcyB0aGUgc3RyaW5naWZ5IC8gcGFyc2UgY3ljbGUgZG9lcyBub3QgZGVjb2RlIGFycmF5J3MgY29ycmVjdGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfMSA9IGdldEpTT04oKS5wYXJzZShidWZmZXJfMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlcl8xICYmIGlzQXJyYXkoYnVmZmVyXzEpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyXzE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA0MiAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZFRvUmVzdG9yZVN0b3JhZ2VCdWZmZXIgKi8sIFwiIHN0b3JhZ2Uga2V5OiBcIiArIHByZWZpeGVkS2V5ICsgXCIsIFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3NldEJ1ZmZlcihrZXksIGJ1ZmZlcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHByZWZpeGVkS2V5ID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZEtleSA9IGNvbmZpZ1tfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10gJiYgY29uZmlnW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSgpID8gY29uZmlnW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSgpICsgXCJfXCIgKyBwcmVmaXhlZEtleSA6IHByZWZpeGVkS2V5O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBidWZmZXJKc29uID0gSlNPTltfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10oYnVmZmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB1dGxTZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIHByZWZpeGVkS2V5LCBidWZmZXJKc29uKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgd2FzIGFuIGVycm9yLCBjbGVhciB0aGUgYnVmZmVyXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGVsZW1ldHJ5IGlzIHN0b3JlZCBpbiB0aGUgX2J1ZmZlciBhcnJheSBzbyB3ZSB3b24ndCBsb29zZSBhbnkgaXRlbXNcclxuICAgICAgICAgICAgICAgICAgICB1dGxTZXRTZXNzaW9uU3RvcmFnZShsb2dnZXIsIHByZWZpeGVkS2V5LCBKU09OW19EWU5fU1RSSU5HSUZZIC8qIEBtaW46JTJlc3RyaW5naWZ5ICovXShbXSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQxIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkVG9TZXRTdG9yYWdlQnVmZmVyICovLCBcIiBzdG9yYWdlIGtleTogXCIgKyBwcmVmaXhlZEtleSArIFwiLCBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSkgKyBcIi4gQnVmZmVyIGNsZWFyZWRcIiwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLnByb3RvdHlwZS5lbnF1ZXVlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlci5wcm90b3R5cGUuY2xlYXIuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLnByb3RvdHlwZS5tYXJrQXNTZW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlci5wcm90b3R5cGUuY2xlYXJTZW50LlxyXG4gICAgU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLkJVRkZFUl9LRVkgPSBcIkFJX2J1ZmZlclwiO1xyXG4gICAgU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyLlNFTlRfQlVGRkVSX0tFWSA9IFwiQUlfc2VudEJ1ZmZlclwiO1xyXG4gICAgLy8gTWF4aW11bSBudW1iZXIgb2YgcGF5bG9hZHMgc3RvcmVkIGluIHRoZSBidWZmZXIuIElmIHRoZSBidWZmZXIgaXMgZnVsbCwgbmV3IGVsZW1lbnRzIHdpbGwgYmUgZHJvcHBlZC5cclxuICAgIFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlci5NQVhfQlVGRkVSX1NJWkUgPSAyMDAwO1xyXG4gICAgcmV0dXJuIFNlc3Npb25TdG9yYWdlU2VuZEJ1ZmZlcjtcclxufShCYXNlU2VuZEJ1ZmZlcikpO1xyXG5leHBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXIgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VuZEJ1ZmZlci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDaGFubmVsLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgX3Rocm93SW50ZXJuYWwsIGdldEpTT04sIGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzT2JqZWN0LCBvYmpGb3JFYWNoS2V5IH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IF9EWU5fTEVOR1RILCBfRFlOX1BVU0gsIF9EWU5fU1RSSU5HSUZZLCBfRFlOX1RPX1NUUklORyB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG52YXIgU2VyaWFsaXplciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFNlcmlhbGl6ZXIobG9nZ2VyKSB7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKFNlcmlhbGl6ZXIsIHRoaXMsIGZ1bmN0aW9uIChfc2VsZikge1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU2VyaWFsaXplcyB0aGUgY3VycmVudCBvYmplY3QgdG8gYSBKU09OIHN0cmluZy5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG91dHB1dCA9IF9zZXJpYWxpemVPYmplY3QoaW5wdXQsIFwicm9vdFwiKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEpTT04oKVtfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10ob3V0cHV0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgc2VyaWFsaXphdGlvbiBmYWlscyByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwobG9nZ2VyLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDQ4IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQ2Fubm90U2VyaWFsaXplT2JqZWN0ICovLCAoZSAmJiBpc0Z1bmN0aW9uKGVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10pKSA/IGVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10oKSA6IFwiRXJyb3Igc2VyaWFsaXppbmcgb2JqZWN0XCIsIG51bGwsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfc2VyaWFsaXplT2JqZWN0KHNvdXJjZSwgbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNpcmN1bGFyUmVmZXJlbmNlQ2hlY2sgPSBcIl9fYWlDaXJjdWxhclJlZkNoZWNrXCI7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3V0cHV0ID0ge307XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA0OCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNhbm5vdFNlcmlhbGl6ZU9iamVjdCAqLywgXCJjYW5ub3Qgc2VyaWFsaXplIG9iamVjdCBiZWNhdXNlIGl0IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIsIHsgbmFtZTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtjaXJjdWxhclJlZmVyZW5jZUNoZWNrXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDUwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuQ2lyY3VsYXJSZWZlcmVuY2VEZXRlY3RlZCAqLywgXCJDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgd2hpbGUgc2VyaWFsaXppbmcgb2JqZWN0XCIsIHsgbmFtZTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UuYWlEYXRhQ29udHJhY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIG1lYXN1cmVtZW50cy9wcm9wZXJ0aWVzL3RhZ3NcclxuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gXCJtZWFzdXJlbWVudHNcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBfc2VyaWFsaXplU3RyaW5nTWFwKHNvdXJjZSwgXCJudW1iZXJcIiwgbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT09IFwicHJvcGVydGllc1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IF9zZXJpYWxpemVTdHJpbmdNYXAoc291cmNlLCBcInN0cmluZ1wiLCBuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmFtZSA9PT0gXCJ0YWdzXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gX3NlcmlhbGl6ZVN0cmluZ01hcChzb3VyY2UsIFwic3RyaW5nXCIsIG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gX3NlcmlhbGl6ZUFycmF5KHNvdXJjZSwgbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA0OSAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNhbm5vdFNlcmlhbGl6ZU9iamVjdE5vblNlcmlhbGl6YWJsZSAqLywgXCJBdHRlbXB0aW5nIHRvIHNlcmlhbGl6ZSBhbiBvYmplY3Qgd2hpY2ggZG9lcyBub3QgaW1wbGVtZW50IElTZXJpYWxpemFibGVcIiwgeyBuYW1lOiBuYW1lIH0sIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmVyaWZ5IHRoYXQgdGhlIG9iamVjdCBjYW4gYmUgc3RyaW5naWZpZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEpTT04oKVtfRFlOX1NUUklOR0lGWSAvKiBAbWluOiUyZXN0cmluZ2lmeSAqL10oc291cmNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHNvdXJjZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgc2VyaWFsaXphdGlvbiBmYWlscyByZXR1cm4gYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNDggLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5DYW5ub3RTZXJpYWxpemVPYmplY3QgKi8sIChlICYmIGlzRnVuY3Rpb24oZVtfRFlOX1RPX1NUUklORyAvKiBAbWluOiUyZXRvU3RyaW5nICovXSkpID8gZVtfRFlOX1RPX1NUUklORyAvKiBAbWluOiUyZXRvU3RyaW5nICovXSgpIDogXCJFcnJvciBzZXJpYWxpemluZyBvYmplY3RcIiwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHNvdXJjZVtjaXJjdWxhclJlZmVyZW5jZUNoZWNrXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBvYmpGb3JFYWNoS2V5KHNvdXJjZS5haURhdGFDb250cmFjdCwgZnVuY3Rpb24gKGZpZWxkLCBjb250cmFjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc1JlcXVpcmVkID0gKGlzRnVuY3Rpb24oY29udHJhY3QpKSA/IChjb250cmFjdCgpICYgMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8pIDogKGNvbnRyYWN0ICYgMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0hpZGRlbiA9IChpc0Z1bmN0aW9uKGNvbnRyYWN0KSkgPyAoY29udHJhY3QoKSAmIDQgLyogRmllbGRUeXBlLkhpZGRlbiAqLykgOiAoY29udHJhY3QgJiA0IC8qIEZpZWxkVHlwZS5IaWRkZW4gKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0FycmF5ID0gY29udHJhY3QgJiAyIC8qIEZpZWxkVHlwZS5BcnJheSAqLztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaXNQcmVzZW50ID0gc291cmNlW2ZpZWxkXSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc09iaiA9IGlzT2JqZWN0KHNvdXJjZVtmaWVsZF0pICYmIHNvdXJjZVtmaWVsZF0gIT09IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVxdWlyZWQgJiYgIWlzUHJlc2VudCAmJiAhaXNBcnJheSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgMjQgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5NaXNzaW5nUmVxdWlyZWRGaWVsZFNwZWNpZmljYXRpb24gKi8sIFwiTWlzc2luZyByZXF1aXJlZCBmaWVsZCBzcGVjaWZpY2F0aW9uLiBUaGUgZmllbGQgaXMgcmVxdWlyZWQgYnV0IG5vdCBwcmVzZW50IG9uIHNvdXJjZVwiLCB7IGZpZWxkOiBmaWVsZCwgbmFtZTogbmFtZSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90IGluIGRlYnVnIG1vZGUsIGNvbnRpbnVlIGFuZCBob3BlIHRoZSBlcnJvciBpcyBwZXJtaXNzaWJsZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNIaWRkZW4pIHsgLy8gRG9uJ3Qgc2VyaWFsaXplIGhpZGRlbiBmaWVsZHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gdm9pZCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOyByZWN1cnNlIG9uIGVhY2ggb2JqZWN0IGluIHRoZSBzb3VyY2UgYXJyYXlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9zZXJpYWxpemVBcnJheShzb3VyY2VbZmllbGRdLCBmaWVsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWN1cnNlIG9uIHRoZSBzb3VyY2Ugb2JqZWN0IGluIHRoaXMgZmllbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IF9zZXJpYWxpemVPYmplY3Qoc291cmNlW2ZpZWxkXSwgZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzaWduIHRoZSBzb3VyY2UgZmllbGQgdG8gdGhlIG91dHB1dCBldmVuIGlmIHVuZGVmaW5lZCBvciByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2VbZmllbGRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgZW1pdCB0aGlzIGZpZWxkIGlmIHRoZSB2YWx1ZSBpcyBkZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbZmllbGRdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2VbY2lyY3VsYXJSZWZlcmVuY2VDaGVja107XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9zZXJpYWxpemVBcnJheShzb3VyY2VzLCBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3V0cHV0O1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhc291cmNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNBcnJheShzb3VyY2VzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChsb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNTQgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5JdGVtTm90SW5BcnJheSAqLywgXCJUaGlzIGZpZWxkIHdhcyBzcGVjaWZpZWQgYXMgYW4gYXJyYXkgaW4gdGhlIGNvbnRyYWN0IGJ1dCB0aGUgaXRlbSBpcyBub3QgYW4gYXJyYXkuXFxyXFxuXCIsIHsgbmFtZTogbmFtZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZXNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc2VyaWFsaXplT2JqZWN0KHNvdXJjZSwgbmFtZSArIFwiW1wiICsgaSArIFwiXVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3NlcmlhbGl6ZVN0cmluZ01hcChtYXAsIGV4cGVjdGVkVHlwZSwgbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG91dHB1dDtcclxuICAgICAgICAgICAgICAgIGlmIChtYXApIHtcclxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBvYmpGb3JFYWNoS2V5KG1hcCwgZnVuY3Rpb24gKGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRUeXBlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtmaWVsZF0gPSBcInVuZGVmaW5lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbZmllbGRdID0gXCJudWxsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdmFsdWVbX0RZTl9UT19TVFJJTkcgLyogQG1pbjolMmV0b1N0cmluZyAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbZmllbGRdID0gXCJpbnZhbGlkIGZpZWxkOiB0b1N0cmluZygpIGlzIG5vdCBkZWZpbmVkLlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2ZpZWxkXSA9IHZhbHVlW19EWU5fVE9fU1RSSU5HIC8qIEBtaW46JTJldG9TdHJpbmcgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtmaWVsZF0gPSBcInVuZGVmaW5lZFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbZmllbGRdID0gXCJudWxsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbnVtID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKG51bSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2ZpZWxkXSA9IFwiTmFOXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbZmllbGRdID0gbnVtO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtmaWVsZF0gPSBcImludmFsaWQgZmllbGQ6IFwiICsgbmFtZSArIFwiIGlzIG9mIHVua25vd24gdHlwZS5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGxvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCBvdXRwdXRbZmllbGRdLCBudWxsLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlcmlhbGl6ZXIucHJvdG90eXBlLnNlcmlhbGl6ZS5cclxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBJRTggYnVnIHdoZW4gdXNpbmcgZHluYW1pY1Byb3RvKCkgd2l0aCBjbGFzc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhbnlcbiAgICAvLyBub24tZHluYW1pYyBmdW5jdGlvbnMgb3Igc3RhdGljIHByb3BlcnRpZXMvZnVuY3Rpb25zIHdoZW4gdXNpbmcgdWdsaWZ5LWpzIHRvIG1pbmlmeSB0aGUgcmVzdWx0aW5nIGNvZGUuXG4gICAgLy8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiBFUzMgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgIFNlcmlhbGl6ZXIuX19pZUR5bj0xO1xuXG4gICAgcmV0dXJuIFNlcmlhbGl6ZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFNlcmlhbGl6ZXIgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2VyaWFsaXplci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDaGFubmVsLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBfRFlOX0xFTkdUSCB9IGZyb20gXCIuLi8uLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuLy8gKE1hZ2ljIG51bWJlcikgREpCIGFsZ29yaXRobSBjYW4ndCB3b3JrIG9uIHNob3J0ZXIgc3RyaW5ncyAocmVzdWx0cyBpbiBwb29yIGRpc3RyaWJ1dGlvblxyXG52YXIgTUlOX0lOUFVUX0xFTkdUSCA9IDg7XHJcbnZhciBIYXNoQ29kZVNjb3JlR2VuZXJhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gSGFzaENvZGVTY29yZUdlbmVyYXRvcigpIHtcclxuICAgIH1cclxuICAgIEhhc2hDb2RlU2NvcmVHZW5lcmF0b3IucHJvdG90eXBlLmdldEhhc2hDb2RlU2NvcmUgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIHNjb3JlID0gdGhpcy5nZXRIYXNoQ29kZShrZXkpIC8gSGFzaENvZGVTY29yZUdlbmVyYXRvci5JTlRfTUFYX1ZBTFVFO1xyXG4gICAgICAgIHJldHVybiBzY29yZSAqIDEwMDtcclxuICAgIH07XHJcbiAgICBIYXNoQ29kZVNjb3JlR2VuZXJhdG9yLnByb3RvdHlwZS5nZXRIYXNoQ29kZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xyXG4gICAgICAgIGlmIChpbnB1dCA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGlucHV0W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA8IE1JTl9JTlBVVF9MRU5HVEgpIHtcclxuICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5jb25jYXQoaW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyA1MzgxIGlzIGEgbWFnaWMgbnVtYmVyOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNjk2MjIzL3JlYXNvbi1mb3ItNTM4MS1udW1iZXItaW4tZGpiLWhhc2gtZnVuY3Rpb25cclxuICAgICAgICB2YXIgaGFzaCA9IDUzODE7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107ICsraSkge1xyXG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpICsgaGFzaCkgKyBpbnB1dC5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAvLyAnaGFzaCcgaXMgb2YgbnVtYmVyIHR5cGUgd2hpY2ggbWVhbnMgNTMgYml0IGludGVnZXIgKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzLW51bWJlci10eXBlKVxyXG4gICAgICAgICAgICAvLyAnaGFzaCAmIGhhc2gnIHdpbGwga2VlcCBpdCAzMiBiaXQgaW50ZWdlciAtIGp1c3QgdG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQgdGhlIHJlc3VsdCBpcy5cclxuICAgICAgICAgICAgaGFzaCA9IGhhc2ggJiBoYXNoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTWF0aC5hYnMoaGFzaCk7XHJcbiAgICB9O1xyXG4gICAgLy8gV2UncmUgdXNpbmcgMzIgYml0IG1hdGgsIGhlbmNlIG1heCB2YWx1ZSBpcyAoMl4zMSAtIDEpXHJcbiAgICBIYXNoQ29kZVNjb3JlR2VuZXJhdG9yLklOVF9NQVhfVkFMVUUgPSAyMTQ3NDgzNjQ3O1xyXG4gICAgcmV0dXJuIEhhc2hDb2RlU2NvcmVHZW5lcmF0b3I7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEhhc2hDb2RlU2NvcmVHZW5lcmF0b3IgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SGFzaENvZGVTY29yZUdlbmVyYXRvci5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBDaGFubmVsLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBDb250ZXh0VGFnS2V5cyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF9EWU5fR0VUX0hBU0hfQ09ERV9TQ09SRSwgX0RZTl9HRVRfU0FNUExJTkdfU0NPUkUsIF9EWU5fVEFHUywgX0RZTl9UUkFDRV9JRCB9IGZyb20gXCIuLi8uLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSGFzaENvZGVTY29yZUdlbmVyYXRvciB9IGZyb20gXCIuL0hhc2hDb2RlU2NvcmVHZW5lcmF0b3JcIjtcclxudmFyIFNhbXBsaW5nU2NvcmVHZW5lcmF0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBTYW1wbGluZ1Njb3JlR2VuZXJhdG9yKCkge1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGhhc2hDb2RlR2VuZXJhdG9yID0gbmV3IEhhc2hDb2RlU2NvcmVHZW5lcmF0b3IoKTtcclxuICAgICAgICB2YXIga2V5cyA9IG5ldyBDb250ZXh0VGFnS2V5cygpO1xyXG4gICAgICAgIF9zZWxmW19EWU5fR0VUX1NBTVBMSU5HX1NDT1JFIC8qIEBtaW46JTJlZ2V0U2FtcGxpbmdTY29yZSAqL10gPSBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgICB2YXIgc2NvcmUgPSAwO1xyXG4gICAgICAgICAgICBpZiAoaXRlbVtfRFlOX1RBR1MgLyogQG1pbjolMmV0YWdzICovXSAmJiBpdGVtW19EWU5fVEFHUyAvKiBAbWluOiUyZXRhZ3MgKi9dW2tleXMudXNlcklkXSkgeyAvLyBzZWFyY2ggaW4gdGFncyBmaXJzdCwgdGhlbiBleHRcclxuICAgICAgICAgICAgICAgIHNjb3JlID0gaGFzaENvZGVHZW5lcmF0b3IuZ2V0SGFzaENvZGVTY29yZShpdGVtW19EWU5fVEFHUyAvKiBAbWluOiUyZXRhZ3MgKi9dW2tleXMudXNlcklkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5leHQgJiYgaXRlbS5leHQudXNlciAmJiBpdGVtLmV4dC51c2VyLmlkKSB7XHJcbiAgICAgICAgICAgICAgICBzY29yZSA9IGhhc2hDb2RlR2VuZXJhdG9yW19EWU5fR0VUX0hBU0hfQ09ERV9TQ09SRSAvKiBAbWluOiUyZWdldEhhc2hDb2RlU2NvcmUgKi9dKGl0ZW0uZXh0LnVzZXIuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGl0ZW1bX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gJiYgaXRlbVtfRFlOX1RBR1MgLyogQG1pbjolMmV0YWdzICovXVtrZXlzLm9wZXJhdGlvbklkXSkgeyAvLyBzZWFyY2ggaW4gdGFncyBmaXJzdCwgdGhlbiBleHRcclxuICAgICAgICAgICAgICAgIHNjb3JlID0gaGFzaENvZGVHZW5lcmF0b3IuZ2V0SGFzaENvZGVTY29yZShpdGVtW19EWU5fVEFHUyAvKiBAbWluOiUyZXRhZ3MgKi9dW2tleXMub3BlcmF0aW9uSWRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChpdGVtLmV4dCAmJiBpdGVtLmV4dC50ZWxlbWV0cnlUcmFjZSAmJiBpdGVtLmV4dC50ZWxlbWV0cnlUcmFjZVtfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL10pIHtcclxuICAgICAgICAgICAgICAgIHNjb3JlID0gaGFzaENvZGVHZW5lcmF0b3IuZ2V0SGFzaENvZGVTY29yZShpdGVtLmV4dC50ZWxlbWV0cnlUcmFjZVtfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmluc2VjdXJlLXJhbmRvbVxyXG4gICAgICAgICAgICAgICAgc2NvcmUgPSAoTWF0aC5yYW5kb20oKSAqIDEwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHNjb3JlO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU2FtcGxpbmdTY29yZUdlbmVyYXRvcjtcclxufSgpKTtcclxuZXhwb3J0IHsgU2FtcGxpbmdTY29yZUdlbmVyYXRvciB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TYW1wbGluZ1Njb3JlR2VuZXJhdG9yLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENoYW5uZWwsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCB7IE1ldHJpYyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IHNhZmVHZXRMb2dnZXIgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9EQVRBX1RZUEUsIF9EWU5fR0VUX1NBTVBMSU5HX1NDT1JFLCBfRFlOX1NBTVBMRV9SQVRFIH0gZnJvbSBcIi4uL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBTYW1wbGluZ1Njb3JlR2VuZXJhdG9yIH0gZnJvbSBcIi4vU2FtcGxpbmdTY29yZUdlbmVyYXRvcnMvU2FtcGxpbmdTY29yZUdlbmVyYXRvclwiO1xyXG52YXIgU2FtcGxlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gU2FtcGxlKHNhbXBsZVJhdGUsIGxvZ2dlcikge1xyXG4gICAgICAgIC8vIFdlJ3JlIHVzaW5nIDMyIGJpdCBtYXRoLCBoZW5jZSBtYXggdmFsdWUgaXMgKDJeMzEgLSAxKVxyXG4gICAgICAgIHRoaXMuSU5UX01BWF9WQUxVRSA9IDIxNDc0ODM2NDc7XHJcbiAgICAgICAgdmFyIF9sb2dnZXIgPSBsb2dnZXIgfHwgc2FmZUdldExvZ2dlcihudWxsKTtcclxuICAgICAgICBpZiAoc2FtcGxlUmF0ZSA+IDEwMCB8fCBzYW1wbGVSYXRlIDwgMCkge1xyXG4gICAgICAgICAgICBfbG9nZ2VyLnRocm93SW50ZXJuYWwoMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDU4IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU2FtcGxlUmF0ZU91dE9mUmFuZ2UgKi8sIFwiU2FtcGxpbmcgcmF0ZSBpcyBvdXQgb2YgcmFuZ2UgKDAuLjEwMCkuIFNhbXBsaW5nIHdpbGwgYmUgZGlzYWJsZWQsIHlvdSBtYXkgYmUgc2VuZGluZyB0b28gbXVjaCBkYXRhIHdoaWNoIG1heSBhZmZlY3QgeW91ciBBSSBzZXJ2aWNlIGxldmVsLlwiLCB7IHNhbXBsaW5nUmF0ZTogc2FtcGxlUmF0ZSB9LCB0cnVlKTtcclxuICAgICAgICAgICAgc2FtcGxlUmF0ZSA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpc1tfRFlOX1NBTVBMRV9SQVRFIC8qIEBtaW46JTJlc2FtcGxlUmF0ZSAqL10gPSBzYW1wbGVSYXRlO1xyXG4gICAgICAgIHRoaXMuc2FtcGxpbmdTY29yZUdlbmVyYXRvciA9IG5ldyBTYW1wbGluZ1Njb3JlR2VuZXJhdG9yKCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICogRGV0ZXJtaW5lcyBpZiBhbiBlbnZlbG9wZSBpcyBzYW1wbGVkIGluIChpLmUuIHdpbGwgYmUgc2VudCkgb3Igbm90IChpLmUuIHdpbGwgYmUgZHJvcHBlZCkuXHJcbiAgICAqL1xyXG4gICAgU2FtcGxlLnByb3RvdHlwZS5pc1NhbXBsZWRJbiA9IGZ1bmN0aW9uIChlbnZlbG9wZSkge1xyXG4gICAgICAgIHZhciBzYW1wbGluZ1BlcmNlbnRhZ2UgPSB0aGlzW19EWU5fU0FNUExFX1JBVEUgLyogQG1pbjolMmVzYW1wbGVSYXRlICovXTsgLy8gMCAtIDEwMFxyXG4gICAgICAgIHZhciBpc1NhbXBsZWRJbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChzYW1wbGluZ1BlcmNlbnRhZ2UgPT09IG51bGwgfHwgc2FtcGxpbmdQZXJjZW50YWdlID09PSB1bmRlZmluZWQgfHwgc2FtcGxpbmdQZXJjZW50YWdlID49IDEwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZW52ZWxvcGUuYmFzZVR5cGUgPT09IE1ldHJpY1tfRFlOX0RBVEFfVFlQRSAvKiBAbWluOiUyZWRhdGFUeXBlICovXSkge1xyXG4gICAgICAgICAgICAvLyBleGNsdWRlIE1ldHJpY0RhdGEgdGVsZW1ldHJ5IGZyb20gc2FtcGxpbmdcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlzU2FtcGxlZEluID0gdGhpcy5zYW1wbGluZ1Njb3JlR2VuZXJhdG9yW19EWU5fR0VUX1NBTVBMSU5HX1NDT1JFIC8qIEBtaW46JTJlZ2V0U2FtcGxpbmdTY29yZSAqL10oZW52ZWxvcGUpIDwgc2FtcGxpbmdQZXJjZW50YWdlO1xyXG4gICAgICAgIHJldHVybiBpc1NhbXBsZWRJbjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gU2FtcGxlO1xyXG59KCkpO1xyXG5leHBvcnQgeyBTYW1wbGUgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9U2FtcGxlLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIENoYW5uZWwsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG52YXIgX2E7XHJcbmltcG9ydCB7IF9fYXNzaWduRm4gYXMgX19hc3NpZ24sIF9fZXh0ZW5kc0ZuIGFzIF9fZXh0ZW5kcyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtc2hpbXNcIjtcclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgQnJlZXplQ2hhbm5lbElkZW50aWZpZXIsIERFRkFVTFRfQlJFRVpFX0VORFBPSU5ULCBERUZBVUxUX0JSRUVaRV9QQVRILCBEaXNhYmxlZFByb3BlcnR5TmFtZSwgRXZlbnQsIEV4Y2VwdGlvbiwgTWV0cmljLCBQYWdlVmlldywgUGFnZVZpZXdQZXJmb3JtYW5jZSwgUHJvY2Vzc0xlZ2FjeSwgUmVtb3RlRGVwZW5kZW5jeURhdGEsIFJlcXVlc3RIZWFkZXJzLCBTYW1wbGVSYXRlLCBUcmFjZSwgaXNJbnRlcm5hbEFwcGxpY2F0aW9uSW5zaWdodHNFbmRwb2ludCwgdXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBCYXNlVGVsZW1ldHJ5UGx1Z2luLCBfdGhyb3dJbnRlcm5hbCwgX3dhcm5Ub0NvbnNvbGUsIGFyckZvckVhY2gsIGNyZWF0ZVVuaXF1ZU5hbWVzcGFjZSwgZGF0ZU5vdywgZHVtcE9iaiwgZ2V0RXhjZXB0aW9uTmFtZSwgZ2V0SUVWZXJzaW9uLCBnZXRKU09OLCBnZXROYXZpZ2F0b3IsIGdldFdpbmRvdywgaXNBcnJheSwgaXNCZWFjb25zU3VwcG9ydGVkLCBpc0ZldGNoU3VwcG9ydGVkLCBpc051bGxPclVuZGVmaW5lZCwgaXNYaHJTdXBwb3J0ZWQsIG1lcmdlRXZ0TmFtZXNwYWNlLCBvYmpGb3JFYWNoS2V5LCBvYmpLZXlzLCB1c2VYRG9tYWluUmVxdWVzdCB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBEZXBlbmRlbmN5RW52ZWxvcGVDcmVhdG9yLCBFdmVudEVudmVsb3BlQ3JlYXRvciwgRXhjZXB0aW9uRW52ZWxvcGVDcmVhdG9yLCBNZXRyaWNFbnZlbG9wZUNyZWF0b3IsIFBhZ2VWaWV3RW52ZWxvcGVDcmVhdG9yLCBQYWdlVmlld1BlcmZvcm1hbmNlRW52ZWxvcGVDcmVhdG9yLCBUcmFjZUVudmVsb3BlQ3JlYXRvciB9IGZyb20gXCIuL0VudmVsb3BlQ3JlYXRvclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVPZmZsaW5lTGlzdGVuZXIgfSBmcm9tIFwiLi9PZmZsaW5lXCI7XHJcbmltcG9ydCB7IEFycmF5U2VuZEJ1ZmZlciwgU2Vzc2lvblN0b3JhZ2VTZW5kQnVmZmVyIH0gZnJvbSBcIi4vU2VuZEJ1ZmZlclwiO1xyXG5pbXBvcnQgeyBTZXJpYWxpemVyIH0gZnJvbSBcIi4vU2VyaWFsaXplclwiO1xyXG5pbXBvcnQgeyBTYW1wbGUgfSBmcm9tIFwiLi9UZWxlbWV0cnlQcm9jZXNzb3JzL1NhbXBsZVwiO1xyXG5pbXBvcnQgeyBfRFlOX0JBU0VfVFlQRSwgX0RZTl9CQVRDSF9QQVlMT0FEUywgX0RZTl9DTEVBUiwgX0RZTl9DTEVBUl9TRU5ULCBfRFlOX0NPTlZFUlRfVU5ERUZJTkVELCBfRFlOX0NPVU5ULCBfRFlOX0NVU1RPTV9IRUFERVJTLCBfRFlOX0RJQUdfTE9HLCBfRFlOX0RJU0FCTEVfSU5TVFJVTUVOVEFUNywgX0RZTl9ESVNBQkxFX1RFTEVNRVRSWSwgX0RZTl9ESVNBQkxFX1hIUiwgX0RZTl9FTUlUX0xJTkVfREVMSU1JVEVEXzAsIF9EWU5fRU5BQkxFX1NFU1NJT05fU1RPUkE0LCBfRFlOX0VORFBPSU5UX1VSTCwgX0RZTl9FTlFVRVVFLCBfRFlOX0VWRU5UU19TRU5EX1JFUVVFU1QsIF9EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSwgX0RZTl9JU19CRUFDT05fQVBJX0RJU0FCTDMsIF9EWU5fSVNfUkVUUllfRElTQUJMRUQsIF9EWU5fSVRFTVNfQUNDRVBURUQsIF9EWU5fSVRFTVNfUkVDRUlWRUQsIF9EWU5fTEVOR1RILCBfRFlOX01BUktfQVNfU0VOVCwgX0RZTl9NQVhfQkFUQ0hfSU5URVJWQUwsIF9EWU5fTUFYX0JBVENIX1NJWkVfSU5fQlkxLCBfRFlOX05BTUVfUFJFRklYLCBfRFlOX09OVU5MT0FEX0RJU0FCTEVfQkVBMiwgX0RZTl9PTlVOTE9BRF9ESVNBQkxFX0ZFVDUsIF9EWU5fUFVTSCwgX0RZTl9TQU1QTEVfUkFURSwgX0RZTl9TQU1QTElOR19QRVJDRU5UQUdFLCBfRFlOX1NFVF9SRVFVRVNUX0hFQURFUiwgX0RZTl9UQUdTLCBfRFlOX1RSSUdHRVJfU0VORCwgX0RZTl9fQlVGRkVSLCBfRFlOX19PTl9FUlJPUiwgX0RZTl9fT05fUEFSVElBTF9TVUNDRVNTLCBfRFlOX19PTl9TVUNDRVNTLCBfRFlOX19TRU5ERVIsIF9EWU5fX1NFTkRFUl9DT05GSUcsIF9EWU5fX1hIUl9SRUFEWV9TVEFURV9DSEE2IH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBGZXRjaFN5bmNSZXF1ZXN0U2l6ZUxpbWl0Qnl0ZXMgPSA2NTAwMDsgLy8gYXBwcm94IDY0a2IgKHRoZSBjdXJyZW50IEVkZ2UsIEZpcmVmb3ggYW5kIENocm9tZSBtYXggbGltaXQpXHJcbmZ1bmN0aW9uIF9nZXRSZXNwb25zZVRleHQoeGhyKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0O1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBCZXN0IGVmZm9ydCwgYXMgWEhSIG1heSB0aHJvdyB3aGlsZSBYRFIgd29udCBzbyBqdXN0IGlnbm9yZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuZnVuY3Rpb24gX2dldERlZmF1bHRBcHBJbnNpZ2h0c0NoYW5uZWxDb25maWcoKSB7XHJcbiAgICB2YXIgX2E7XHJcbiAgICB2YXIgZGVmYXVsdFZhbHVlO1xyXG4gICAgdmFyIGRlZmF1bHRDdXN0b21IZWFkZXJzO1xyXG4gICAgLy8gc2V0IGRlZmF1bHQgdmFsdWVzXHJcbiAgICByZXR1cm4gX2EgPSB7XHJcbiAgICAgICAgICAgIGVuZHBvaW50VXJsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBERUZBVUxUX0JSRUVaRV9FTkRQT0lOVCArIERFRkFVTFRfQlJFRVpFX1BBVEg7IH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9hW19EWU5fRU1JVF9MSU5FX0RFTElNSVRFRF8wIC8qIEBtaW46ZW1pdExpbmVEZWxpbWl0ZWRKc29uICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LFxyXG4gICAgICAgIF9hW19EWU5fTUFYX0JBVENIX0lOVEVSVkFMIC8qIEBtaW46bWF4QmF0Y2hJbnRlcnZhbCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAxNTAwMDsgfSxcclxuICAgICAgICBfYVtfRFlOX01BWF9CQVRDSF9TSVpFX0lOX0JZMSAvKiBAbWluOm1heEJhdGNoU2l6ZUluQnl0ZXMgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMTAyNDAwOyB9LFxyXG4gICAgICAgIF9hW19EWU5fRElTQUJMRV9URUxFTUVUUlkgLyogQG1pbjpkaXNhYmxlVGVsZW1ldHJ5ICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LFxyXG4gICAgICAgIF9hW19EWU5fRU5BQkxFX1NFU1NJT05fU1RPUkE0IC8qIEBtaW46ZW5hYmxlU2Vzc2lvblN0b3JhZ2VCdWZmZXIgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfSxcclxuICAgICAgICBfYVtfRFlOX0lTX1JFVFJZX0RJU0FCTEVEIC8qIEBtaW46aXNSZXRyeURpc2FibGVkICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LFxyXG4gICAgICAgIF9hW19EWU5fSVNfQkVBQ09OX0FQSV9ESVNBQkwzIC8qIEBtaW46aXNCZWFjb25BcGlEaXNhYmxlZCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9LFxyXG4gICAgICAgIF9hW19EWU5fRElTQUJMRV9YSFIgLyogQG1pbjpkaXNhYmxlWGhyICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LFxyXG4gICAgICAgIF9hW19EWU5fT05VTkxPQURfRElTQUJMRV9GRVQ1IC8qIEBtaW46b251bmxvYWREaXNhYmxlRmV0Y2ggKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH0sXHJcbiAgICAgICAgX2FbX0RZTl9PTlVOTE9BRF9ESVNBQkxFX0JFQTIgLyogQG1pbjpvbnVubG9hZERpc2FibGVCZWFjb24gKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH0sXHJcbiAgICAgICAgX2FbX0RZTl9JTlNUUlVNRU5UQVRJT05fS0VZIC8qIEBtaW46aW5zdHJ1bWVudGF0aW9uS2V5ICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfSxcclxuICAgICAgICBfYVtfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46bmFtZVByZWZpeCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0sXHJcbiAgICAgICAgX2FbX0RZTl9TQU1QTElOR19QRVJDRU5UQUdFIC8qIEBtaW46c2FtcGxpbmdQZXJjZW50YWdlICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDEwMDsgfSxcclxuICAgICAgICBfYVtfRFlOX0NVU1RPTV9IRUFERVJTIC8qIEBtaW46Y3VzdG9tSGVhZGVycyAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWZhdWx0Q3VzdG9tSGVhZGVyczsgfSxcclxuICAgICAgICBfYVtfRFlOX0NPTlZFUlRfVU5ERUZJTkVEIC8qIEBtaW46Y29udmVydFVuZGVmaW5lZCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0sXHJcbiAgICAgICAgX2EuZXZlbnRzTGltaXRJbk1lbSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDEwMDAwOyB9LFxyXG4gICAgICAgIF9hO1xyXG59XHJcbnZhciBFbnZlbG9wZVR5cGVDcmVhdG9yID0gKF9hID0ge30sXHJcbiAgICBfYVtFdmVudC5kYXRhVHlwZV0gPSBFdmVudEVudmVsb3BlQ3JlYXRvcixcclxuICAgIF9hW1RyYWNlLmRhdGFUeXBlXSA9IFRyYWNlRW52ZWxvcGVDcmVhdG9yLFxyXG4gICAgX2FbUGFnZVZpZXcuZGF0YVR5cGVdID0gUGFnZVZpZXdFbnZlbG9wZUNyZWF0b3IsXHJcbiAgICBfYVtQYWdlVmlld1BlcmZvcm1hbmNlLmRhdGFUeXBlXSA9IFBhZ2VWaWV3UGVyZm9ybWFuY2VFbnZlbG9wZUNyZWF0b3IsXHJcbiAgICBfYVtFeGNlcHRpb24uZGF0YVR5cGVdID0gRXhjZXB0aW9uRW52ZWxvcGVDcmVhdG9yLFxyXG4gICAgX2FbTWV0cmljLmRhdGFUeXBlXSA9IE1ldHJpY0VudmVsb3BlQ3JlYXRvcixcclxuICAgIF9hW1JlbW90ZURlcGVuZGVuY3lEYXRhLmRhdGFUeXBlXSA9IERlcGVuZGVuY3lFbnZlbG9wZUNyZWF0b3IsXHJcbiAgICBfYSk7XHJcbnZhciBTZW5kZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XHJcbiAgICBfX2V4dGVuZHMoU2VuZGVyLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gU2VuZGVyKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMucHJpb3JpdHkgPSAxMDAxO1xyXG4gICAgICAgIF90aGlzLmlkZW50aWZpZXIgPSBCcmVlemVDaGFubmVsSWRlbnRpZmllcjtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzZW5kZXIgaW5zdGFuY2VcclxuICAgICAgICAgKi9cclxuICAgICAgICBfdGhpcy5fc2VuZGVyQ29uZmlnID0gX2dldERlZmF1bHRBcHBJbnNpZ2h0c0NoYW5uZWxDb25maWcoKTtcclxuICAgICAgICAvLyBEb24ndCBzZXQgdGhlIGRlZmF1bHRzIGhlcmUsIHNldCB0aGVtIGluIHRoZSBfaW5pdERlZmF1bHRzKCkgYXMgdGhpcyBpcyBhbHNvIGNhbGxlZCBkdXJpbmcgdW5sb2FkXHJcbiAgICAgICAgdmFyIF9jb25zZWN1dGl2ZUVycm9yczsgLy8gSG93IG1hbnkgdGltZXMgaW4gYSByb3cgYSByZXRyeWFibGUgZXJyb3IgY29uZGl0aW9uIGhhcyBvY2N1cnJlZC5cclxuICAgICAgICB2YXIgX3JldHJ5QXQ7IC8vIFRoZSB0aW1lIHRvIHJldHJ5IGF0IGluIG1pbGxpc2Vjb25kcyBmcm9tIDE5NzAvMDEvMDEgKHRoaXMgbWFrZXMgdGhlIHRpbWVyIGNhbGN1bGF0aW9uIGVhc3kpLlxyXG4gICAgICAgIHZhciBfbGFzdFNlbmQ7IC8vIFRoZSB0aW1lIG9mIHRoZSBsYXN0IHNlbmQgb3BlcmF0aW9uLlxyXG4gICAgICAgIHZhciBfcGF1c2VkOyAvLyBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgc2VuZGluZyBzaG91bGQgYmUgcGF1c2VkXHJcbiAgICAgICAgdmFyIF90aW1lb3V0SGFuZGxlOyAvLyBIYW5kbGUgdG8gdGhlIHRpbWVyIGZvciBkZWxheWVkIHNlbmRpbmcgb2YgYmF0Y2hlcyBvZiBkYXRhLlxyXG4gICAgICAgIHZhciBfc2VyaWFsaXplcjtcclxuICAgICAgICB2YXIgX3N0YW1wX3NwZWNpZmljX3JlZGlyZWN0cztcclxuICAgICAgICB2YXIgX2hlYWRlcnM7XHJcbiAgICAgICAgdmFyIF9zeW5jRmV0Y2hQYXlsb2FkID0gMDsgLy8gS2VlcCB0cmFjayBvZiB0aGUgb3V0c3RhbmRpbmcgc3luYyBmZXRjaCBwYXlsb2FkIHRvdGFsIChhcyBzeW5jIGZldGNoIGhhcyBsaW1pdHMpXHJcbiAgICAgICAgdmFyIF9mYWxsYmFja1NlbmRlcjsgLy8gVGhlIHNlbmRlciB0byB1c2UgaWYgdGhlIHBheWxvYWQgc2l6ZSBpcyB0b28gbGFyZ2VcclxuICAgICAgICB2YXIgX3N5bmNVbmxvYWRTZW5kZXI7IC8vIFRoZSBpZGVudGlmaWVkIHNlbmRlciB0byB1c2UgZm9yIHRoZSBzeW5jaHJvbm91cyB1bmxvYWQgc3RhZ2VcclxuICAgICAgICB2YXIgX29mZmxpbmVMaXN0ZW5lcjtcclxuICAgICAgICB2YXIgX2V2dE5hbWVzcGFjZTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oU2VuZGVyLCBfdGhpcywgZnVuY3Rpb24gKF9zZWxmLCBfYmFzZSkge1xyXG4gICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgIF9zZWxmLnBhdXNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX2NsZWFyU2NoZWR1bGVkVGltZXIoKTtcclxuICAgICAgICAgICAgICAgIF9wYXVzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3BhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9wYXVzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBfcmV0cnlBdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZmx1c2ggaWYgd2UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4LXNpemUgYWxyZWFkeVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfc2VsZi5fYnVmZmVyLnNpemUoKSA+IF9zZWxmLl9zZW5kZXJDb25maWdbX0RZTl9NQVhfQkFUQ0hfU0laRV9JTl9CWTEgLyogQG1pbjolMmVtYXhCYXRjaFNpemVJbkJ5dGVzICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fVFJJR0dFUl9TRU5EIC8qIEBtaW46JTJldHJpZ2dlclNlbmQgKi9dKHRydWUsIG51bGwsIDEwIC8qIFNlbmRSZXF1ZXN0UmVhc29uLk1heEJhdGNoU2l6ZSAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIF9zZXR1cFRpbWVyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmZsdXNoID0gZnVuY3Rpb24gKGlzQXN5bmMsIGNhbGxCYWNrLCBzZW5kUmVhc29uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNBc3luYyA9PT0gdm9pZCAwKSB7IGlzQXN5bmMgPSB0cnVlOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9wYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgbm9ybWFsIHNjaGVkdWxlIHRpbWVyIGFzIHdlIGFyZSBnb2luZyB0byB0cnkgYW5kIGZsdXNoIEFTQVBcclxuICAgICAgICAgICAgICAgICAgICBfY2xlYXJTY2hlZHVsZWRUaW1lcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fVFJJR0dFUl9TRU5EIC8qIEBtaW46JTJldHJpZ2dlclNlbmQgKi9dKGlzQXN5bmMsIG51bGwsIHNlbmRSZWFzb24gfHwgMSAvKiBTZW5kUmVxdWVzdFJlYXNvbi5NYW51YWxGbHVzaCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDIyIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmx1c2hGYWlsZWQgKi8sIFwiZmx1c2ggZmFpbGVkLCB0ZWxlbWV0cnkgd2lsbCBub3QgYmUgY29sbGVjdGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYub251bmxvYWRGbHVzaCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghX3BhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoX3NlbGYuX3NlbmRlckNvbmZpZ1tfRFlOX09OVU5MT0FEX0RJU0FCTEVfQkVBMiAvKiBAbWluOiUyZW9udW5sb2FkRGlzYWJsZUJlYWNvbiAqL10oKSA9PT0gZmFsc2UgfHwgX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fSVNfQkVBQ09OX0FQSV9ESVNBQkwzIC8qIEBtaW46JTJlaXNCZWFjb25BcGlEaXNhYmxlZCAqL10oKSA9PT0gZmFsc2UpICYmIGlzQmVhY29uc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX1RSSUdHRVJfU0VORCAvKiBAbWluOiUyZXRyaWdnZXJTZW5kICovXSh0cnVlLCBfZG9VbmxvYWRTZW5kLCAyIC8qIFNlbmRSZXF1ZXN0UmVhc29uLlVubG9hZCAqLyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDIwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkVG9TZW5kUXVldWVkVGVsZW1ldHJ5ICovLCBcImZhaWxlZCB0byBmbHVzaCB3aXRoIGJlYWNvbiBzZW5kZXIgb24gcGFnZSB1bmxvYWQsIHRlbGVtZXRyeSB3aWxsIG5vdCBiZSBjb2xsZWN0ZWQ6IFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLmZsdXNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5hZGRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIF9oZWFkZXJzW25hbWVdID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmluaXRpYWxpemUgPSBmdW5jdGlvbiAoY29uZmlnLCBjb3JlLCBleHRlbnNpb25zLCBwbHVnaW5DaGFpbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLmlzSW5pdGlhbGl6ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDI4IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU2VuZGVyTm90SW5pdGlhbGl6ZWQgKi8sIFwiU2VuZGVyIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfYmFzZS5pbml0aWFsaXplKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pO1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IF9zZWxmLl9nZXRUZWxDdHgoKTtcclxuICAgICAgICAgICAgICAgIHZhciBpZGVudGlmaWVyID0gX3NlbGYuaWRlbnRpZmllcjtcclxuICAgICAgICAgICAgICAgIF9zZXJpYWxpemVyID0gbmV3IFNlcmlhbGl6ZXIoY29yZS5sb2dnZXIpO1xyXG4gICAgICAgICAgICAgICAgX2NvbnNlY3V0aXZlRXJyb3JzID0gMDtcclxuICAgICAgICAgICAgICAgIF9yZXRyeUF0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9sYXN0U2VuZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19TRU5ERVIgLyogQG1pbjolMmVfc2VuZGVyICovXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfc3RhbXBfc3BlY2lmaWNfcmVkaXJlY3RzID0gMDtcclxuICAgICAgICAgICAgICAgIHZhciBkaWFnTG9nID0gX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICBfZXZ0TmFtZXNwYWNlID0gbWVyZ2VFdnROYW1lc3BhY2UoY3JlYXRlVW5pcXVlTmFtZXNwYWNlKFwiU2VuZGVyXCIpLCBjb3JlLmV2dE5hbWVzcGFjZSAmJiBjb3JlLmV2dE5hbWVzcGFjZSgpKTtcclxuICAgICAgICAgICAgICAgIF9vZmZsaW5lTGlzdGVuZXIgPSBjcmVhdGVPZmZsaW5lTGlzdGVuZXIoX2V2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHYzLng6IENoYW5nZSB0aGUgSVNlbmRlckNvbmZpZyB0byBub3QgYmUgZnVuY3Rpb24gY2FsbHNcclxuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0Q29uZmlnID0gX2dldERlZmF1bHRBcHBJbnNpZ2h0c0NoYW5uZWxDb25maWcoKTtcclxuICAgICAgICAgICAgICAgIG9iakZvckVhY2hLZXkoZGVmYXVsdENvbmZpZywgZnVuY3Rpb24gKGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtmaWVsZF0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGVWYWx1ZSA9IGN0eC5nZXRDb25maWcoaWRlbnRpZmllciwgZmllbGQsIHZhbHVlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoZVZhbHVlICYmIGZpZWxkID09PSBcImVuZHBvaW50VXJsXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgZGVmYXVsdCB2YWx1ZSAoaGFuZGxlcyBlbXB0eSBzdHJpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVWYWx1ZSA9IHZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZVZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9idWZmZXIgPSAoX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fRU5BQkxFX1NFU1NJT05fU1RPUkE0IC8qIEBtaW46JTJlZW5hYmxlU2Vzc2lvblN0b3JhZ2VCdWZmZXIgKi9dKCkgJiYgdXRsQ2FuVXNlU2Vzc2lvblN0b3JhZ2UoKSlcclxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXIoZGlhZ0xvZywgX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dKSA6IG5ldyBBcnJheVNlbmRCdWZmZXIoZGlhZ0xvZywgX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9zYW1wbGUgPSBuZXcgU2FtcGxlKF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX1NBTVBMSU5HX1BFUkNFTlRBR0UgLyogQG1pbjolMmVzYW1wbGluZ1BlcmNlbnRhZ2UgKi9dKCksIGRpYWdMb2cpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfdmFsaWRhdGVJbnN0cnVtZW50YXRpb25LZXkoY29uZmlnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGRpYWdMb2csIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgMTAwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuSW52YWxpZEluc3RydW1lbnRhdGlvbktleSAqLywgXCJJbnZhbGlkIEluc3RydW1lbnRhdGlvbiBrZXkgXCIgKyBjb25maWdbX0RZTl9JTlNUUlVNRU5UQVRJT05fS0VZIC8qIEBtaW46JTJlaW5zdHJ1bWVudGF0aW9uS2V5ICovXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQoX3NlbGYuX3NlbmRlckNvbmZpZy5lbmRwb2ludFVybCgpKSAmJiBfc2VsZi5fc2VuZGVyQ29uZmlnLmN1c3RvbUhlYWRlcnMoKSAmJiBfc2VsZi5fc2VuZGVyQ29uZmlnLmN1c3RvbUhlYWRlcnMoKVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9DVVNUT01fSEVBREVSUyAvKiBAbWluOiUyZWN1c3RvbUhlYWRlcnMgKi9dKCksIGZ1bmN0aW9uIChjdXN0b21IZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuYWRkSGVhZGVyKGN1c3RvbUhlYWRlci5oZWFkZXIsIGN1c3RvbUhlYWRlci52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VuZGVyQ29uZmlnID0gX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlbmRQb3N0RnVuYyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlbmRlckNvbmZpZ1tfRFlOX0RJU0FCTEVfWEhSIC8qIEBtaW46JTJlZGlzYWJsZVhociAqL10oKSAmJiB1c2VYRG9tYWluUmVxdWVzdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZFBvc3RGdW5jID0gX3hkclNlbmRlcjsgLy8gSUUgOCBhbmQgOVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXNlbmRlckNvbmZpZ1tfRFlOX0RJU0FCTEVfWEhSIC8qIEBtaW46JTJlZGlzYWJsZVhociAqL10oKSAmJiBpc1hoclN1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VuZFBvc3RGdW5jID0gX3hoclNlbmRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghc2VuZFBvc3RGdW5jICYmIGlzRmV0Y2hTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbmRQb3N0RnVuYyA9IF9mZXRjaFNlbmRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGFsd2F5cyBmYWxsYmFjayB0byBYSFJcclxuICAgICAgICAgICAgICAgIF9mYWxsYmFja1NlbmRlciA9IHNlbmRQb3N0RnVuYyB8fCBfeGhyU2VuZGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZW5kZXJDb25maWdbX0RZTl9JU19CRUFDT05fQVBJX0RJU0FCTDMgLyogQG1pbjolMmVpc0JlYWNvbkFwaURpc2FibGVkICovXSgpICYmIGlzQmVhY29uc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uZmlnIGlzIHNldCB0byBhbHdheXMgdXNlZCBiZWFjb24gc2VuZGluZ1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbmRQb3N0RnVuYyA9IF9iZWFjb25TZW5kZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19TRU5ERVIgLyogQG1pbjolMmVfc2VuZGVyICovXSA9IHNlbmRQb3N0RnVuYyB8fCBfeGhyU2VuZGVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZW5kZXJDb25maWdbX0RZTl9PTlVOTE9BRF9ESVNBQkxFX0ZFVDUgLyogQG1pbjolMmVvbnVubG9hZERpc2FibGVGZXRjaCAqL10oKSAmJiBpc0ZldGNoU3VwcG9ydGVkKHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJ5IGFuZCB1c2UgdGhlIGZldGNoIHdpdGgga2VlcGFsaXZlXHJcbiAgICAgICAgICAgICAgICAgICAgX3N5bmNVbmxvYWRTZW5kZXIgPSBfZmV0Y2hLZWVwQWxpdmVTZW5kZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0JlYWNvbnNTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRyeSBhbmQgdXNlIHNlbmRCZWFjb25cclxuICAgICAgICAgICAgICAgICAgICBfc3luY1VubG9hZFNlbmRlciA9IF9iZWFjb25TZW5kZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghc2VuZGVyQ29uZmlnW19EWU5fRElTQUJMRV9YSFIgLyogQG1pbjolMmVkaXNhYmxlWGhyICovXSgpICYmIHVzZVhEb21haW5SZXF1ZXN0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBfc3luY1VubG9hZFNlbmRlciA9IF94ZHJTZW5kZXI7IC8vIElFIDggYW5kIDlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzZW5kZXJDb25maWdbX0RZTl9ESVNBQkxFX1hIUiAvKiBAbWluOiUyZWRpc2FibGVYaHIgKi9dKCkgJiYgaXNYaHJTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zeW5jVW5sb2FkU2VuZGVyID0gX3hoclNlbmRlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zeW5jVW5sb2FkU2VuZGVyID0gX2ZhbGxiYWNrU2VuZGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5wcm9jZXNzVGVsZW1ldHJ5ID0gZnVuY3Rpb24gKHRlbGVtZXRyeUl0ZW0sIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW1DdHggPSBfc2VsZi5fZ2V0VGVsQ3R4KGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpYWdMb2dnZXIgPSBpdGVtQ3R4W19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBtYXN0ZXIgb2ZmIHN3aXRjaCBpcyBzZXQsIGRvbid0IHNlbmQgYW55IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fRElTQUJMRV9URUxFTUVUUlkgLyogQG1pbjolMmVkaXNhYmxlVGVsZW1ldHJ5ICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBzZW5kL3NhdmUgZGF0YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRlIGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZWxlbWV0cnlJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGRpYWdMb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNyAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNhbm5vdFNlbmRFbXB0eVRlbGVtZXRyeSAqLywgXCJDYW5ub3Qgc2VuZCBlbXB0eSB0ZWxlbWV0cnlcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWRhdGUgZXZlbnRcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVsZW1ldHJ5SXRlbS5iYXNlRGF0YSAmJiAhdGVsZW1ldHJ5SXRlbVtfRFlOX0JBU0VfVFlQRSAvKiBAbWluOiUyZWJhc2VUeXBlICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChkaWFnTG9nZ2VyLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDcwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuSW52YWxpZEV2ZW50ICovLCBcIkNhbm5vdCBzZW5kIHRlbGVtZXRyeSB3aXRob3V0IGJhc2VEYXRhIGFuZCBiYXNlVHlwZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRlbGVtZXRyeUl0ZW1bX0RZTl9CQVNFX1RZUEUgLyogQG1pbjolMmViYXNlVHlwZSAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZWxlbWV0cnlJdGVtW19EWU5fQkFTRV9UWVBFIC8qIEBtaW46JTJlYmFzZVR5cGUgKi9dID0gXCJFdmVudERhdGFcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZW5zdXJlIGEgc2VuZGVyIHdhcyBjb25zdHJ1Y3RlZFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX3NlbGZbX0RZTl9fU0VOREVSIC8qIEBtaW46JTJlX3NlbmRlciAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoZGlhZ0xvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCAyOCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlNlbmRlck5vdEluaXRpYWxpemVkICovLCBcIlNlbmRlciB3YXMgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgaXRlbSBzaG91bGQgYmUgc2FtcGxlZCBpbiwgZWxzZSBhZGQgc2FtcGxlUmF0ZSB0YWdcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIV9pc1NhbXBsZWRJbih0ZWxlbWV0cnlJdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJdGVtIGlzIHNhbXBsZWQgb3V0LCBkbyBub3Qgc2VuZCBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChkaWFnTG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgMzMgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UZWxlbWV0cnlTYW1wbGVkQW5kTm90U2VudCAqLywgXCJUZWxlbWV0cnkgaXRlbSB3YXMgc2FtcGxlZCBvdXQgYW5kIG5vdCBzZW50XCIsIHsgU2FtcGxlUmF0ZTogX3NlbGYuX3NhbXBsZVtfRFlOX1NBTVBMRV9SQVRFIC8qIEBtaW46JTJlc2FtcGxlUmF0ZSAqL10gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbGVtZXRyeUl0ZW1bU2FtcGxlUmF0ZV0gPSBfc2VsZi5fc2FtcGxlW19EWU5fU0FNUExFX1JBVEUgLyogQG1pbjolMmVzYW1wbGVSYXRlICovXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnZlcnRVbmRlZmluZWQgPSBfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9DT05WRVJUX1VOREVGSU5FRCAvKiBAbWluOiUyZWNvbnZlcnRVbmRlZmluZWQgKi9dKCkgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBhbiBlbnZlbG9wZSB0aGF0IEFwcGxpY2F0aW9uIEluc2lnaHRzIGVuZHBvaW50IGNhbiB1bmRlcnN0YW5kXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgaWtleSBvZiB0ZWxlbWV0cnkgaXMgcHJvdmlkZWQgYW5kIG5vdCBlbXB0eSwgZW52ZWxvcGUgd2lsbCB1c2UgdGhpcyBpS2V5IGluc3RlYWQgb2Ygc2VuZGVyQ29uZmlnIGlLZXlcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdEVudmVsb3BlSWtleSA9IHRlbGVtZXRyeUl0ZW0uaUtleSB8fCBfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9JTlNUUlVNRU5UQVRJT05fS0VZIC8qIEBtaW46JTJlaW5zdHJ1bWVudGF0aW9uS2V5ICovXSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhaUVudmVsb3BlXzEgPSBTZW5kZXIuY29uc3RydWN0RW52ZWxvcGUodGVsZW1ldHJ5SXRlbSwgZGVmYXVsdEVudmVsb3BlSWtleSwgZGlhZ0xvZ2dlciwgY29udmVydFVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhaUVudmVsb3BlXzEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoZGlhZ0xvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCA0NyAvKiBfZUludGVybmFsTWVzc2FnZUlkLkNyZWF0ZUVudmVsb3BlRXJyb3IgKi8sIFwiVW5hYmxlIHRvIGNyZWF0ZSBhbiBBcHBJbnNpZ2h0cyBlbnZlbG9wZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB2YXIgZG9Ob3RTZW5kSXRlbV8xID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBmb3IgcnVubmluZyBpbiBsZWdhY3kgbW9kZSwgd2hlcmUgY3VzdG9tZXIgbWF5IGFscmVhZHkgaGF2ZSBhIGN1c3RvbSBpbml0aWFsaXplciBwcmVzZW50XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbGVtZXRyeUl0ZW1bX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL10gJiYgdGVsZW1ldHJ5SXRlbVtfRFlOX1RBR1MgLyogQG1pbjolMmV0YWdzICovXVtQcm9jZXNzTGVnYWN5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKHRlbGVtZXRyeUl0ZW1bX0RZTl9UQUdTIC8qIEBtaW46JTJldGFncyAqL11bUHJvY2Vzc0xlZ2FjeV0sIGZ1bmN0aW9uIChjYWxsQmFjaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEJhY2sgJiYgY2FsbEJhY2soYWlFbnZlbG9wZV8xKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9Ob3RTZW5kSXRlbV8xID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dhcm5Ub0NvbnNvbGUoZGlhZ0xvZ2dlciwgXCJUZWxlbWV0cnkgcHJvY2Vzc29yIGNoZWNrIHJldHVybnMgZmFsc2VcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2cgZXJyb3IgYnV0IGRvbnQgc3RvcCBleGVjdXRpbmcgcmVzdCBvZiB0aGUgdGVsZW1ldHJ5IGluaXRpYWxpemVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvTm90U2VuZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGRpYWdMb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNjQgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UZWxlbWV0cnlJbml0aWFsaXplckZhaWxlZCAqLywgXCJPbmUgb2YgdGVsZW1ldHJ5IGluaXRpYWxpemVycyBmYWlsZWQsIHRlbGVtZXRyeSBpdGVtIHdpbGwgbm90IGJlIHNlbnQ6IFwiICsgZ2V0RXhjZXB0aW9uTmFtZShlKSwgeyBleGNlcHRpb246IGR1bXBPYmooZSkgfSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGVsZW1ldHJ5SXRlbVtfRFlOX1RBR1MgLyogQG1pbjolMmV0YWdzICovXVtQcm9jZXNzTGVnYWN5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvTm90U2VuZEl0ZW1fMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGRvIG5vdCBzZW5kLCBubyBuZWVkIHRvIGV4ZWN1dGUgbmV4dCBwbHVnaW5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGluY29taW5nIHBheWxvYWQgaXMgdG9vIGxhcmdlLCB0cnVuY2F0ZSBpZiBuZWNlc3NhcnlcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZCA9IF9zZXJpYWxpemVyLnNlcmlhbGl6ZShhaUVudmVsb3BlXzEpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGZsdXNoIGlmIHdlIHdvdWxkIGV4Y2VlZCB0aGUgbWF4LXNpemUgbGltaXQgYnkgYWRkaW5nIHRoaXMgaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBfc2VsZltfRFlOX19CVUZGRVIgLyogQG1pbjolMmVfYnVmZmVyICovXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyU2l6ZSA9IGJ1ZmZlci5zaXplKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChidWZmZXJTaXplICsgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10pID4gX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fTUFYX0JBVENIX1NJWkVfSU5fQlkxIC8qIEBtaW46JTJlbWF4QmF0Y2hTaXplSW5CeXRlcyAqL10oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX1RSSUdHRVJfU0VORCAvKiBAbWluOiUyZXRyaWdnZXJTZW5kICovXSh0cnVlLCBudWxsLCAxMCAvKiBTZW5kUmVxdWVzdFJlYXNvbi5NYXhCYXRjaFNpemUgKi8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBlbnF1ZXVlIHRoZSBwYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyW19EWU5fRU5RVUVVRSAvKiBAbWluOiUyZWVucXVldWUgKi9dKHBheWxvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVuc3VyZSBhbiBpbnZvY2F0aW9uIHRpbWVvdXQgaXMgc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgX3NldHVwVGltZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoZGlhZ0xvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDEyIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkQWRkaW5nVGVsZW1ldHJ5VG9CdWZmZXIgKi8sIFwiRmFpbGVkIGFkZGluZyB0ZWxlbWV0cnkgdG8gdGhlIHNlbmRlcidzIGJ1ZmZlciwgc29tZSB0ZWxlbWV0cnkgd2lsbCBiZSBsb3N0OiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gaGFuZCBvZmYgdGhlIHRlbGVtZXRyeSBpdGVtIHRvIHRoZSBuZXh0IHBsdWdpblxyXG4gICAgICAgICAgICAgICAgX3NlbGYucHJvY2Vzc05leHQodGVsZW1ldHJ5SXRlbSwgaXRlbUN0eCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiB4aHIgc3RhdGUgY2hhbmdlc1xyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9fWEhSX1JFQURZX1NUQVRFX0NIQTYgLyogQG1pbjolMmVfeGhyUmVhZHlTdGF0ZUNoYW5nZSAqL10gPSBmdW5jdGlvbiAoeGhyLCBwYXlsb2FkLCBjb3VudE9mSXRlbXNJblBheWxvYWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jaGVja1Jlc3BvbnNTdGF0dXMoeGhyLnN0YXR1cywgcGF5bG9hZCwgeGhyLnJlc3BvbnNlVVJMLCBjb3VudE9mSXRlbXNJblBheWxvYWQsIF9mb3JtYXRFcnJvck1lc3NhZ2VYaHIoeGhyKSwgX2dldFJlc3BvbnNlVGV4dCh4aHIpIHx8IHhoci5yZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBJbW1lZGlhdGVseSBzZW5kIGJ1ZmZlcmVkIGRhdGFcclxuICAgICAgICAgICAgICogQHBhcmFtIGFzeW5jIHtib29sZWFufSAtIEluZGljYXRlcyBpZiB0aGUgZXZlbnRzIHNob3VsZCBiZSBzZW50IGFzeW5jaHJvbm91c2x5XHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBmb3JjZWRTZW5kZXIge1NlbmRlckZ1bmN0aW9ufSAtIEluZGljYXRlcyB0aGUgZm9yY2VkU2VuZGVyLCB1bmRlZmluZWQgaWYgbm90IHBhc3NlZFxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9UUklHR0VSX1NFTkQgLyogQG1pbjolMmV0cmlnZ2VyU2VuZCAqL10gPSBmdW5jdGlvbiAoYXN5bmMsIGZvcmNlZFNlbmRlciwgc2VuZFJlYXNvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFzeW5jID09PSB2b2lkIDApIHsgYXN5bmMgPSB0cnVlOyB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIV9wYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gX3NlbGZbX0RZTl9fQlVGRkVSIC8qIEBtaW46JTJlX2J1ZmZlciAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbmQgZGF0YSBvbmx5IGlmIGRpc2FibGVUZWxlbWV0cnkgaXMgZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9ESVNBQkxFX1RFTEVNRVRSWSAvKiBAbWluOiUyZWRpc2FibGVUZWxlbWV0cnkgKi9dKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJbX0RZTl9DT1VOVCAvKiBAbWluOiUyZWNvdW50ICovXSgpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXlsb2FkID0gYnVmZmVyLmdldEl0ZW1zKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25vdGlmeVNlbmRSZXF1ZXN0KHNlbmRSZWFzb24gfHwgMCAvKiBTZW5kUmVxdWVzdFJlYXNvbi5VbmRlZmluZWQgKi8sIGFzeW5jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnZva2Ugc2VuZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JjZWRTZW5kZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VkU2VuZGVyLmNhbGwoX3RoaXMsIHBheWxvYWQsIGFzeW5jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX1NFTkRFUiAvKiBAbWluOiUyZV9zZW5kZXIgKi9dKHBheWxvYWQsIGFzeW5jKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgbGFzdFNlbmQgdGltZSB0byBlbmFibGUgdGhyb3R0bGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xhc3RTZW5kID0gK25ldyBEYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW19EWU5fQ0xFQVIgLyogQG1pbjolMmVjbGVhciAqL10oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfY2xlYXJTY2hlZHVsZWRUaW1lcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmUgdGhpcyBlcnJvciBmb3IgSUUgdW5kZXIgdjEwICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZVZlciA9IGdldElFVmVyc2lvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWllVmVyIHx8IGllVmVyID4gOSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNDAgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UcmFuc21pc3Npb25GYWlsZWQgKi8sIFwiVGVsZW1ldHJ5IHRyYW5zbWlzc2lvbiBmYWlsZWQsIHNvbWUgdGVsZW1ldHJ5IHdpbGwgYmUgbG9zdDogXCIgKyBnZXRFeGNlcHRpb25OYW1lKGUpLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuX2RvVGVhcmRvd24gPSBmdW5jdGlvbiAodW5sb2FkQ3R4LCB1bmxvYWRTdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYub251bmxvYWRGbHVzaCgpO1xyXG4gICAgICAgICAgICAgICAgX29mZmxpbmVMaXN0ZW5lci51bmxvYWQoKTtcclxuICAgICAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIGVycm9yIGhhbmRsZXJcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fX09OX0VSUk9SIC8qIEBtaW46JTJlX29uRXJyb3IgKi9dID0gZnVuY3Rpb24gKHBheWxvYWQsIG1lc3NhZ2UsIGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDI2IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuT25FcnJvciAqLywgXCJGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnkuXCIsIHsgbWVzc2FnZTogbWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9idWZmZXJbX0RZTl9DTEVBUl9TRU5UIC8qIEBtaW46JTJlY2xlYXJTZW50ICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHBhcnRpYWwgc3VjY2VzcyBoYW5kbGVyXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX19PTl9QQVJUSUFMX1NVQ0NFU1MgLyogQG1pbjolMmVfb25QYXJ0aWFsU3VjY2VzcyAqL10gPSBmdW5jdGlvbiAocGF5bG9hZCwgcmVzdWx0cykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZhaWxlZCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJldHJ5ID0gW107XHJcbiAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIHJldmVyc2VkIGFycmF5IG9mIGVycm9ycyBzbyB0aGF0IHNwbGljaW5nIGRvZXNuJ3QgaGF2ZSBpbnZhbGlkIGluZGV4ZXMgYWZ0ZXIgdGhlIGZpcnN0IGl0ZW0uXHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyb3JzID0gcmVzdWx0cy5lcnJvcnMucmV2ZXJzZSgpO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBlcnJvcnNfMSA9IGVycm9yczsgX2kgPCBlcnJvcnNfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBlcnJvcnNfMVtfaV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dHJhY3RlZCA9IHBheWxvYWQuc3BsaWNlKGVycm9yLmluZGV4LCAxKVswXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2lzUmV0cmlhYmxlKGVycm9yLnN0YXR1c0NvZGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5W19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKGV4dHJhY3RlZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwgb3RoZXIgZXJyb3JzLCBpbmNsdWRpbmc6IDQwMiAoTW9udGhseSBxdW90YSBleGNlZWRlZCkgYW5kIDQzOSAoVG9vIG1hbnkgcmVxdWVzdHMgYW5kIHJlZnJlc2ggY2FjaGUpLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oZXh0cmFjdGVkKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9fT05fU1VDQ0VTUyAvKiBAbWluOiUyZV9vblN1Y2Nlc3MgKi9dKHBheWxvYWQsIHJlc3VsdHNbX0RZTl9JVEVNU19BQ0NFUFRFRCAvKiBAbWluOiUyZWl0ZW1zQWNjZXB0ZWQgKi9dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmYWlsZWRbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09OX0VSUk9SIC8qIEBtaW46JTJlX29uRXJyb3IgKi9dKGZhaWxlZCwgX2Zvcm1hdEVycm9yTWVzc2FnZVhocihudWxsLCBbXCJwYXJ0aWFsIHN1Y2Nlc3NcIiwgcmVzdWx0c1tfRFlOX0lURU1TX0FDQ0VQVEVEIC8qIEBtaW46JTJlaXRlbXNBY2NlcHRlZCAqL10sIFwib2ZcIiwgcmVzdWx0cy5pdGVtc1JlY2VpdmVkXS5qb2luKFwiIFwiKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHJldHJ5W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBfcmVzZW5kUGF5bG9hZChyZXRyeSk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA0MCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYW5zbWlzc2lvbkZhaWxlZCAqLywgXCJQYXJ0aWFsIHN1Y2Nlc3MuIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWxpdmVyZWQ6IFwiICsgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gKyBcIiwgRmFpbGVkOiBcIiArIGZhaWxlZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIi4gV2lsbCByZXRyeSB0byBzZW5kIFwiICsgcmV0cnlbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dICsgXCIgb3VyIG9mIFwiICsgcmVzdWx0c1tfRFlOX0lURU1TX1JFQ0VJVkVEIC8qIEBtaW46JTJlaXRlbXNSZWNlaXZlZCAqL10gKyBcIiBpdGVtc1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIHN1Y2Nlc3MgaGFuZGxlclxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9fT05fU1VDQ0VTUyAvKiBAbWluOiUyZV9vblN1Y2Nlc3MgKi9dID0gZnVuY3Rpb24gKHBheWxvYWQsIGNvdW50T2ZJdGVtc0luUGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuX2J1ZmZlcltfRFlOX0NMRUFSX1NFTlQgLyogQG1pbjolMmVjbGVhclNlbnQgKi9dKHBheWxvYWQpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogeGRyIHN0YXRlIGNoYW5nZXNcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLl94ZHJPbkxvYWQgPSBmdW5jdGlvbiAoeGRyLCBwYXlsb2FkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VUZXh0ID0gX2dldFJlc3BvbnNlVGV4dCh4ZHIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHhkciAmJiAocmVzcG9uc2VUZXh0ICsgXCJcIiA9PT0gXCIyMDBcIiB8fCByZXNwb25zZVRleHQgPT09IFwiXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NvbnNlY3V0aXZlRXJyb3JzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9TVUNDRVNTIC8qIEBtaW46JTJlX29uU3VjY2VzcyAqL10ocGF5bG9hZCwgMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IF9wYXJzZVJlc3BvbnNlKHJlc3BvbnNlVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMgJiYgcmVzdWx0cy5pdGVtc1JlY2VpdmVkICYmIHJlc3VsdHMuaXRlbXNSZWNlaXZlZCA+IHJlc3VsdHNbX0RZTl9JVEVNU19BQ0NFUFRFRCAvKiBAbWluOiUyZWl0ZW1zQWNjZXB0ZWQgKi9dXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmICFfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9JU19SRVRSWV9ESVNBQkxFRCAvKiBAbWluOiUyZWlzUmV0cnlEaXNhYmxlZCAqL10oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9QQVJUSUFMX1NVQ0NFU1MgLyogQG1pbjolMmVfb25QYXJ0aWFsU3VjY2VzcyAqL10ocGF5bG9hZCwgcmVzdWx0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9FUlJPUiAvKiBAbWluOiUyZV9vbkVycm9yICovXShwYXlsb2FkLCBfZm9ybWF0RXJyb3JNZXNzYWdlWGRyKHhkcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZnVuY3Rpb24gX2lzU2FtcGxlZEluKGVudmVsb3BlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX3NlbGYuX3NhbXBsZS5pc1NhbXBsZWRJbihlbnZlbG9wZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2NoZWNrUmVzcG9uc1N0YXR1cyhzdGF0dXMsIHBheWxvYWQsIHJlc3BvbnNlVXJsLCBjb3VudE9mSXRlbXNJblBheWxvYWQsIGVycm9yTWVzc2FnZSwgcmVzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfc2VsZi5fYXBwSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9wYXJzZVJlc3BvbnNlKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmFwcElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmLl9hcHBJZCA9IHJlc3BvbnNlLmFwcElkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICgoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+PSAzMDApICYmIHN0YXR1cyAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBFbmQgUG9pbnQgdXJsIGlmIHBlcm1hbmVudCByZWRpcmVjdCBvciBtb3ZlZCBwZXJtYW5lbnRseVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZXMgdGhlIGVuZCBwb2ludCB1cmwgYmVmb3JlIHJldHJ5XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gMzAxIHx8IHN0YXR1cyA9PT0gMzA3IHx8IHN0YXR1cyA9PT0gMzA4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2NoZWNrQW5kVXBkYXRlRW5kUG9pbnRVcmwocmVzcG9uc2VVcmwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9FUlJPUiAvKiBAbWluOiUyZV9vbkVycm9yICovXShwYXlsb2FkLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fSVNfUkVUUllfRElTQUJMRUQgLyogQG1pbjolMmVpc1JldHJ5RGlzYWJsZWQgKi9dKCkgJiYgX2lzUmV0cmlhYmxlKHN0YXR1cykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Jlc2VuZFBheWxvYWQocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgNDAgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UcmFuc21pc3Npb25GYWlsZWQgKi8sIFwiLiBcIiArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJlc3BvbnNlIGNvZGUgXCIgKyBzdGF0dXMgKyBcIi4gV2lsbCByZXRyeSB0byBzZW5kIFwiICsgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gKyBcIiBpdGVtcy5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9FUlJPUiAvKiBAbWluOiUyZV9vbkVycm9yICovXShwYXlsb2FkLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9vZmZsaW5lTGlzdGVuZXIgJiYgIV9vZmZsaW5lTGlzdGVuZXIuaXNPbmxpbmUoKSkgeyAvLyBvZmZsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogRG9uJ3QgY2hlY2sgZm9yIHN0YXR1cyA9PSAwLCBzaW5jZSBhZGJsb2NrIGdpdmVzIHRoaXMgY29kZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fSVNfUkVUUllfRElTQUJMRUQgLyogQG1pbjolMmVpc1JldHJ5RGlzYWJsZWQgKi9dKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9mZmxpbmVCYWNrT2ZmTXVsdGlwbGllciA9IDEwOyAvLyBhcmJyaXRyYXJ5IG51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfcmVzZW5kUGF5bG9hZChwYXlsb2FkLCBvZmZsaW5lQmFja09mZk11bHRpcGxpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuVHJhbnNtaXNzaW9uRmFpbGVkICovLCBcIi4gT2ZmbGluZSAtIFJlc3BvbnNlIENvZGU6IFwiLmNvbmNhdChzdGF0dXMsIFwiLiBPZmZsaW5lIHN0YXR1czogXCIpLmNvbmNhdCghX29mZmxpbmVMaXN0ZW5lci5pc09ubGluZSgpLCBcIi4gV2lsbCByZXRyeSB0byBzZW5kIFwiKS5jb25jYXQocGF5bG9hZC5sZW5ndGgsIFwiIGl0ZW1zLlwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlIHhocidzIHJlc3BvbnNlVVJMIG9yIGZldGNoJ3MgcmVzcG9uc2UudXJsIGlzIHNhbWUgYXMgZW5kcG9pbnQgdXJsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyBhZnRlciAxMCByZWRpcmVjdHMgZm9yY2Ugc2VuZCB0ZWxlbWV0cnkgd2l0aCAncmVkaXJlY3Q9ZmFsc2UnIGFzIHF1ZXJ5IHBhcmFtZXRlci5cclxuICAgICAgICAgICAgICAgICAgICBfY2hlY2tBbmRVcGRhdGVFbmRQb2ludFVybChyZXNwb25zZVVybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gMjA2KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX3BhcnNlUmVzcG9uc2UocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgIV9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX0lTX1JFVFJZX0RJU0FCTEVEIC8qIEBtaW46JTJlaXNSZXRyeURpc2FibGVkICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19PTl9QQVJUSUFMX1NVQ0NFU1MgLyogQG1pbjolMmVfb25QYXJ0aWFsU3VjY2VzcyAqL10ocGF5bG9hZCwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9fT05fRVJST1IgLyogQG1pbjolMmVfb25FcnJvciAqL10ocGF5bG9hZCwgZXJyb3JNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnNlY3V0aXZlRXJyb3JzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9fT05fU1VDQ0VTUyAvKiBAbWluOiUyZV9vblN1Y2Nlc3MgKi9dKHBheWxvYWQsIGNvdW50T2ZJdGVtc0luUGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9jaGVja0FuZFVwZGF0ZUVuZFBvaW50VXJsKHJlc3BvbnNlVXJsKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBNYXhpbXVtIHN0YW1wIHNwZWNpZmljIHJlZGlyZWN0cyBhbGxvd2VkKHVuY29tbWVudCB0aGlzIHdoZW4gYnJlZXplIGlzIHJlYWR5IHdpdGggbm90IGFsbG93aW5nIHJlZGlyZWN0cyBmZWF0dXJlKVxyXG4gICAgICAgICAgICAgICAgaWYgKF9zdGFtcF9zcGVjaWZpY19yZWRpcmVjdHMgPj0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgX3NlbGYuX3NlbmRlckNvbmZpZy5lbmRwb2ludFVybCA9ICgpID0+IFNlbmRlci5fZ2V0RGVmYXVsdEFwcEluc2lnaHRzQ2hhbm5lbENvbmZpZygpLmVuZHBvaW50VXJsKCkrXCIvP3JlZGlyZWN0PWZhbHNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gIF9zdGFtcF9zcGVjaWZpY19yZWRpcmVjdHMgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQocmVzcG9uc2VVcmwpICYmIHJlc3BvbnNlVXJsICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlVXJsICE9PSBfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9FTkRQT0lOVF9VUkwgLyogQG1pbjolMmVlbmRwb2ludFVybCAqL10oKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19TRU5ERVJfQ09ORklHIC8qIEBtaW46JTJlX3NlbmRlckNvbmZpZyAqL11bX0RZTl9FTkRQT0lOVF9VUkwgLyogQG1pbjolMmVlbmRwb2ludFVybCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNwb25zZVVybDsgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKytfc3RhbXBfc3BlY2lmaWNfcmVkaXJlY3RzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2RvVW5sb2FkU2VuZChwYXlsb2FkLCBpc0FzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3N5bmNVbmxvYWRTZW5kZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgdW5sb2FkaW5nIHNvIGFsd2F5cyBjYWxsIHRoZSBzZW5kZXIgd2l0aCBzeW5jIHNldCB0byBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIF9zeW5jVW5sb2FkU2VuZGVyKHBheWxvYWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBwcmV2aW91cyBiZWFjb24gU2VuZGVyICh3aGljaCBjYXVzZXMgYSBDT1JCIHdhcm5pbmcgb24gY2hyb21lIG5vdylcclxuICAgICAgICAgICAgICAgICAgICBfYmVhY29uU2VuZGVyKHBheWxvYWQsIGlzQXN5bmMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9kb0JlYWNvblNlbmQocGF5bG9hZCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIG5hdiA9IGdldE5hdmlnYXRvcigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IF9zZWxmW19EWU5fX0JVRkZFUiAvKiBAbWluOiUyZV9idWZmZXIgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX0VORFBPSU5UX1VSTCAvKiBAbWluOiUyZWVuZHBvaW50VXJsICovXSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJhdGNoID0gX3NlbGYuX2J1ZmZlcltfRFlOX0JBVENIX1BBWUxPQURTIC8qIEBtaW46JTJlYmF0Y2hQYXlsb2FkcyAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICAvLyBDaHJvbWUgb25seSBhbGxvd3MgQ09SUy1zYWZlbGlzdGVkIHZhbHVlcyBmb3IgdGhlIHNlbmRCZWFjb24gZGF0YSBhcmd1bWVudFxyXG4gICAgICAgICAgICAgICAgLy8gc2VlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD03MjAyODNcclxuICAgICAgICAgICAgICAgIHZhciBwbGFpblRleHRCYXRjaCA9IG5ldyBCbG9iKFtiYXRjaF0sIHsgdHlwZTogXCJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLThcIiB9KTtcclxuICAgICAgICAgICAgICAgIC8vIFRoZSBzZW5kQmVhY29uIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzdWNjZXNzZnVsbHkgcXVldWUgdGhlIGRhdGEgZm9yIHRyYW5zZmVyLiBPdGhlcndpc2UgaXQgcmV0dXJucyBmYWxzZS5cclxuICAgICAgICAgICAgICAgIHZhciBxdWV1ZWQgPSBuYXYuc2VuZEJlYWNvbih1cmwsIHBsYWluVGV4dEJhdGNoKTtcclxuICAgICAgICAgICAgICAgIGlmIChxdWV1ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBidWZmZXJbX0RZTl9NQVJLX0FTX1NFTlQgLyogQG1pbjolMmVtYXJrQXNTZW50ICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBubyByZXNwb25zZSBmcm9tIGJlYWNvblNlbmRlciwgY2xlYXIgYnVmZmVyXHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuX29uU3VjY2VzcyhwYXlsb2FkLCBwYXlsb2FkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcXVldWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBTZW5kIEJlYWNvbiBBUEkgcmVxdWVzdFxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGF5bG9hZCB7c3RyaW5nfSAtIFRoZSBkYXRhIHBheWxvYWQgdG8gYmUgc2VudC5cclxuICAgICAgICAgICAgICogQHBhcmFtIGlzQXN5bmMge2Jvb2xlYW59IC0gbm90IHVzZWRcclxuICAgICAgICAgICAgICogTm90ZTogQmVhY29uIEFQSSBkb2VzIG5vdCBzdXBwb3J0IGN1c3RvbSBoZWFkZXJzIGFuZCB3ZSBhcmUgbm90IGFibGUgdG8gZ2V0XHJcbiAgICAgICAgICAgICAqIGFwcElkIGZyb20gdGhlIGJhY2tlbmQgZm9yIHRoZSBjb3JyZWN0IGNvcnJlbGF0aW9uLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2JlYWNvblNlbmRlcihwYXlsb2FkLCBpc0FzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXlsb2FkKSAmJiBwYXlsb2FkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgc2VuZEJlYWNvbiBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGFnZW50IGlzIGFibGUgdG8gc3VjY2Vzc2Z1bGx5IHF1ZXVlIHRoZSBkYXRhIGZvciB0cmFuc2Zlci4gT3RoZXJ3aXNlIGl0IHJldHVybnMgZmFsc2UuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfZG9CZWFjb25TZW5kKHBheWxvYWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhaWxlZCB0byBzZW5kIGVudGlyZSBwYXlsb2FkIHNvIHRyeSBhbmQgc3BsaXQgZGF0YSBhbmQgdHJ5IHRvIHNlbmQgYXMgbXVjaCBldmVudHMgYXMgcG9zc2libGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRyb3BwZWRQYXlsb2FkID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxwID0gMDsgbHAgPCBwYXlsb2FkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTsgbHArKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoZVBheWxvYWQgPSBwYXlsb2FkW2xwXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2RvQmVhY29uU2VuZChbdGhlUGF5bG9hZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3Qgc2VuZCBhbnltb3JlLCBzbyBzcGxpdCB0aGUgYmF0Y2ggYW5kIGRyb3AgdGhlIHJlc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wcGVkUGF5bG9hZFtfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXSh0aGVQYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHJvcHBlZFBheWxvYWRbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZhbGxiYWNrU2VuZGVyICYmIF9mYWxsYmFja1NlbmRlcihkcm9wcGVkUGF5bG9hZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuVHJhbnNtaXNzaW9uRmFpbGVkICovLCBcIi4gXCIgKyBcIkZhaWxlZCB0byBzZW5kIHRlbGVtZXRyeSB3aXRoIEJlYWNvbiBBUEksIHJldHJpZWQgd2l0aCBub3JtYWwgc2VuZGVyLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU2VuZCBYTUxIdHRwUmVxdWVzdFxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGF5bG9hZCB7c3RyaW5nfSAtIFRoZSBkYXRhIHBheWxvYWQgdG8gYmUgc2VudC5cclxuICAgICAgICAgICAgICogQHBhcmFtIGlzQXN5bmMge2Jvb2xlYW59IC0gSW5kaWNhdGVzIGlmIHRoZSByZXF1ZXN0IHNob3VsZCBiZSBzZW50IGFzeW5jaHJvbm91c2x5XHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfeGhyU2VuZGVyKHBheWxvYWQsIGlzQXN5bmMpIHtcclxuICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmRQb2ludFVybCA9IF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX0VORFBPSU5UX1VSTCAvKiBAbWluOiUyZWVuZHBvaW50VXJsICovXSgpO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB4aHJbRGlzYWJsZWRQcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGVudmlyb25tZW50IGhhcyBsb2NrZWQgZG93biB0aGUgWE1MSHR0cFJlcXVlc3QgKHByZXZlbnRFeHRlbnNpb25zIGFuZC9vciBmcmVlemUpLCB0aGlzIHdvdWxkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2UgdGhlIHJlcXVlc3QgdG8gZmFpbCBhbmQgd2Ugbm8gdGVsZW1ldHJ5IHdvdWxkIGJlIHNlbnRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHhoci5vcGVuKFwiUE9TVFwiLCBlbmRQb2ludFVybCwgaXNBc3luYyk7XHJcbiAgICAgICAgICAgICAgICB4aHJbX0RZTl9TRVRfUkVRVUVTVF9IRUFERVIgLyogQG1pbjolMmVzZXRSZXF1ZXN0SGVhZGVyICovXShcIkNvbnRlbnQtdHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb25cIik7XHJcbiAgICAgICAgICAgICAgICAvLyBhcHBlbmQgU2RrLUNvbnRleHQgcmVxdWVzdCBoZWFkZXIgb25seSBpbiBjYXNlIG9mIGJyZWV6ZSBlbmRwb2ludFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQoZW5kUG9pbnRVcmwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeGhyW19EWU5fU0VUX1JFUVVFU1RfSEVBREVSIC8qIEBtaW46JTJlc2V0UmVxdWVzdEhlYWRlciAqL10oUmVxdWVzdEhlYWRlcnNbNiAvKiBlUmVxdWVzdEhlYWRlcnMuc2RrQ29udGV4dEhlYWRlciAqL10sIFJlcXVlc3RIZWFkZXJzWzcgLyogZVJlcXVlc3RIZWFkZXJzLnNka0NvbnRleHRIZWFkZXJBcHBJZFJlcXVlc3QgKi9dKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFyckZvckVhY2gob2JqS2V5cyhfaGVhZGVycyksIGZ1bmN0aW9uIChoZWFkZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeGhyW19EWU5fU0VUX1JFUVVFU1RfSEVBREVSIC8qIEBtaW46JTJlc2V0UmVxdWVzdEhlYWRlciAqL10oaGVhZGVyTmFtZSwgX2hlYWRlcnNbaGVhZGVyTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3NlbGYuX3hoclJlYWR5U3RhdGVDaGFuZ2UoeGhyLCBwYXlsb2FkLCBwYXlsb2FkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSk7IH07XHJcbiAgICAgICAgICAgICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uIChldmVudCkgeyByZXR1cm4gX3NlbGZbX0RZTl9fT05fRVJST1IgLyogQG1pbjolMmVfb25FcnJvciAqL10ocGF5bG9hZCwgX2Zvcm1hdEVycm9yTWVzc2FnZVhocih4aHIpLCBldmVudCk7IH07XHJcbiAgICAgICAgICAgICAgICAvLyBjb21wb3NlIGFuIGFycmF5IG9mIHBheWxvYWRzXHJcbiAgICAgICAgICAgICAgICB2YXIgYmF0Y2ggPSBfc2VsZi5fYnVmZmVyW19EWU5fQkFUQ0hfUEFZTE9BRFMgLyogQG1pbjolMmViYXRjaFBheWxvYWRzICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIHhoci5zZW5kKGJhdGNoKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9idWZmZXJbX0RZTl9NQVJLX0FTX1NFTlQgLyogQG1pbjolMmVtYXJrQXNTZW50ICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZmV0Y2hLZWVwQWxpdmVTZW5kZXIocGF5bG9hZCwgaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkocGF5bG9hZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcGF5bG9hZFNpemUgPSBwYXlsb2FkW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBscCA9IDA7IGxwIDwgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL107IGxwKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZFNpemUgKz0gcGF5bG9hZFtscF1bX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoKF9zeW5jRmV0Y2hQYXlsb2FkICsgcGF5bG9hZFNpemUpIDw9IEZldGNoU3luY1JlcXVlc3RTaXplTGltaXRCeXRlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZG9GZXRjaFNlbmRlcihwYXlsb2FkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQmVhY29uc1N1cHBvcnRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGJlYWNvbiBzZW5kZXIgYXMgd2UgYXQgbGVhc3QgZ2V0IHRvbGQgd2hpY2ggZXZlbnRzIGNhbid0IGJlIHNjaGVkdWxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfYmVhY29uU2VuZGVyKHBheWxvYWQsIGlzQXN5bmMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF5bG9hZCBpcyBnb2luZyB0byBiZSB0b28gYmlnIHNvIGp1c3QgdHJ5IGFuZCBzZW5kIHZpYSBYSFJcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2ZhbGxiYWNrU2VuZGVyICYmIF9mYWxsYmFja1NlbmRlcihwYXlsb2FkLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX3NlbGZbX0RZTl9ESUFHX0xPRyAvKiBAbWluOiUyZWRpYWdMb2cgKi9dKCksIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA0MCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlRyYW5zbWlzc2lvbkZhaWxlZCAqLywgXCIuIFwiICsgXCJGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnkgd2l0aCBCZWFjb24gQVBJLCByZXRyaWVkIHdpdGggeGhyU2VuZGVyLlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFNlbmQgZmV0Y2ggQVBJIHJlcXVlc3RcclxuICAgICAgICAgICAgICogQHBhcmFtIHBheWxvYWQge3N0cmluZ30gLSBUaGUgZGF0YSBwYXlsb2FkIHRvIGJlIHNlbnQuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBpc0FzeW5jIHtib29sZWFufSAtIG5vdCB1c2VkXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZmV0Y2hTZW5kZXIocGF5bG9hZCwgaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgX2RvRmV0Y2hTZW5kZXIocGF5bG9hZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFNlbmQgZmV0Y2ggQVBJIHJlcXVlc3RcclxuICAgICAgICAgICAgICogQHBhcmFtIHBheWxvYWQge3N0cmluZ30gLSBUaGUgZGF0YSBwYXlsb2FkIHRvIGJlIHNlbnQuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBpc0FzeW5jIHtib29sZWFufSAtIEZvciBmZXRjaCB0aGlzIGlkZW50aWZpZXMgd2hldGhlciB3ZSBhcmUgXCJ1bmxvYWRpbmdcIiAoZmFsc2UpIG9yIGEgbm9ybWFsIHJlcXVlc3RcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9kb0ZldGNoU2VuZGVyKHBheWxvYWQsIGlzQXN5bmMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmRQb2ludFVybCA9IF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX0VORFBPSU5UX1VSTCAvKiBAbWluOiUyZWVuZHBvaW50VXJsICovXSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGJhdGNoID0gX3NlbGYuX2J1ZmZlcltfRFlOX0JBVENIX1BBWUxPQURTIC8qIEBtaW46JTJlYmF0Y2hQYXlsb2FkcyAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgcGxhaW5UZXh0QmF0Y2ggPSBuZXcgQmxvYihbYmF0Y2hdLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiIH0pO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlcXVlc3RIZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcclxuICAgICAgICAgICAgICAgIHZhciBiYXRjaExlbmd0aCA9IGJhdGNoW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgICAgICAgICAgICAgIHZhciBpZ25vcmVSZXNwb25zZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlSGFuZGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gYXBwZW5kIFNkay1Db250ZXh0IHJlcXVlc3QgaGVhZGVyIG9ubHkgaW4gY2FzZSBvZiBicmVlemUgZW5kcG9pbnRcclxuICAgICAgICAgICAgICAgIGlmIChpc0ludGVybmFsQXBwbGljYXRpb25JbnNpZ2h0c0VuZHBvaW50KGVuZFBvaW50VXJsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIZWFkZXJzLmFwcGVuZChSZXF1ZXN0SGVhZGVyc1s2IC8qIGVSZXF1ZXN0SGVhZGVycy5zZGtDb250ZXh0SGVhZGVyICovXSwgUmVxdWVzdEhlYWRlcnNbNyAvKiBlUmVxdWVzdEhlYWRlcnMuc2RrQ29udGV4dEhlYWRlckFwcElkUmVxdWVzdCAqL10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYXJyRm9yRWFjaChvYmpLZXlzKF9oZWFkZXJzKSwgZnVuY3Rpb24gKGhlYWRlck5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVycy5hcHBlbmQoaGVhZGVyTmFtZSwgX2hlYWRlcnNbaGVhZGVyTmFtZV0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdCA9IChfYSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHBsYWluVGV4dEJhdGNoXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBfYVtEaXNhYmxlZFByb3BlcnR5TmFtZV0gPSB0cnVlIC8vIE1hcmsgc28gd2UgZG9uJ3QgYXR0ZW1wdCB0byB0cmFjayB0aGlzIHJlcXVlc3RcclxuICAgICAgICAgICAgICAgICxcclxuICAgICAgICAgICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXN5bmMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpbml0LmtlZXBhbGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXMgYSBzeW5jIHJlcXVlc3QgKGR1cmluZyB1bmxvYWQpLCBpdCBpcyB1bmxpa2VseSB0aGF0IHdlIHdpbGwgZ2V0IGEgY2hhbmNlIHRvIHByb2Nlc3MgdGhlIHJlc3BvbnNlIHNvXHJcbiAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBsaWtlIGJlYWNvbiBzZW5kIGFzc3VtZSB0aGF0IHRoZSBldmVudHMgaGF2ZSBiZWVuIGFjY2VwdGVkIGFuZCBwcm9jZXNzZWRcclxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVSZXNwb25zZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgX3N5bmNGZXRjaFBheWxvYWQgKz0gYmF0Y2hMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGVuZFBvaW50VXJsLCBpbml0KTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbyB0cnkgYW5kIHRhZyB0aGUgcmVxdWVzdCAoanVzdCBpbiBjYXNlIHRoZSB2YWx1ZSBpbiBpbml0IGlzIG5vdCBjb3BpZWQgb3ZlcilcclxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0W0Rpc2FibGVkUHJvcGVydHlOYW1lXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbnZpcm9ubWVudCBoYXMgbG9ja2VkIGRvd24gdGhlIFhNTEh0dHBSZXF1ZXN0IChwcmV2ZW50RXh0ZW5zaW9ucyBhbmQvb3IgZnJlZXplKSwgdGhpcyB3b3VsZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhdXNlIHRoZSByZXF1ZXN0IHRvIGZhaWwgYW5kIHdlIG5vIHRlbGVtZXRyeSB3b3VsZCBiZSBzZW50XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5fYnVmZmVyW19EWU5fTUFSS19BU19TRU5UIC8qIEBtaW46JTJlbWFya0FzU2VudCAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZldGNoKHJlcXVlc3QpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3N5bmNGZXRjaFBheWxvYWQgLT0gYmF0Y2hMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaExlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZUhhbmRsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGFuZGxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoZSBQcm9taXNlIHJldHVybmVkIGZyb20gZmV0Y2goKSB3b27igJl0IHJlamVjdCBvbiBIVFRQIGVycm9yIHN0YXR1cyBldmVuIGlmIHRoZSByZXNwb25zZSBpcyBhbiBIVFRQIDQwNCBvciA1MDAuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbnN0ZWFkLCBpdCB3aWxsIHJlc29sdmUgbm9ybWFsbHkgKHdpdGggb2sgc3RhdHVzIHNldCB0byBmYWxzZSksIGFuZCBpdCB3aWxsIG9ubHkgcmVqZWN0IG9uIG5ldHdvcmsgZmFpbHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogb3IgaWYgYW55dGhpbmcgcHJldmVudGVkIHRoZSByZXF1ZXN0IGZyb20gY29tcGxldGluZy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09OX0VSUk9SIC8qIEBtaW46JTJlX29uRXJyb3IgKi9dKHBheWxvYWQsIHJlc3BvbnNlLnN0YXR1c1RleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4oZnVuY3Rpb24gKHRleHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrUmVzcG9uc1N0YXR1cyhyZXNwb25zZS5zdGF0dXMsIHBheWxvYWQsIHJlc3BvbnNlLnVybCwgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10sIHJlc3BvbnNlLnN0YXR1c1RleHQsIHRleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlbXCJjYXRjaFwiXShmdW5jdGlvbiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3luY0ZldGNoUGF5bG9hZCAtPSBiYXRjaExlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoTGVuZ3RoID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlSGFuZGxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VIYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09OX0VSUk9SIC8qIEBtaW46JTJlX29uRXJyb3IgKi9dKHBheWxvYWQsIGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2VIYW5kbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fX09OX0VSUk9SIC8qIEBtaW46JTJlX29uRXJyb3IgKi9dKHBheWxvYWQsIGR1bXBPYmooZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpZ25vcmVSZXNwb25zZSAmJiAhcmVzcG9uc2VIYW5kbGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXNzdW1lIHN1Y2Nlc3MgZHVyaW5nIHVubG9hZCBwcm9jZXNzaW5nIGFzIHdlIG1vc3QgbGlrZWx5IHdvbid0IGdldCB0aGUgcmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZUhhbmRsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLl9vblN1Y2Nlc3MocGF5bG9hZCwgcGF5bG9hZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBQYXJzZXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGJhY2tlbmQuXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSByZXNwb25zZSAtIFhNTEh0dHBSZXF1ZXN0IG9yIFhEb21haW5SZXF1ZXN0IHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfcGFyc2VSZXNwb25zZShyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGdldEpTT04oKS5wYXJzZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lml0ZW1zUmVjZWl2ZWQgJiYgcmVzdWx0Lml0ZW1zUmVjZWl2ZWQgPj0gcmVzdWx0W19EWU5fSVRFTVNfQUNDRVBURUQgLyogQG1pbjolMmVpdGVtc0FjY2VwdGVkICovXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lml0ZW1zUmVjZWl2ZWQgLSByZXN1bHQuaXRlbXNBY2NlcHRlZCA9PT0gcmVzdWx0LmVycm9yc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDQzIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuSW52YWxpZEJhY2tlbmRSZXNwb25zZSAqLywgXCJDYW5ub3QgcGFyc2UgdGhlIHJlc3BvbnNlLiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogUmVzZW5kIHBheWxvYWQuIEFkZHMgcGF5bG9hZCBiYWNrIHRvIHRoZSBzZW5kIGJ1ZmZlciBhbmQgc2V0dXAgYSBzZW5kIHRpbWVyICh3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmYpLlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gcGF5bG9hZFxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3Jlc2VuZFBheWxvYWQocGF5bG9hZCwgbGluZWFyRmFjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGluZWFyRmFjdG9yID09PSB2b2lkIDApIHsgbGluZWFyRmFjdG9yID0gMTsgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkIHx8IHBheWxvYWRbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IF9zZWxmW19EWU5fX0JVRkZFUiAvKiBAbWluOiUyZV9idWZmZXIgKi9dO1xyXG4gICAgICAgICAgICAgICAgYnVmZmVyW19EWU5fQ0xFQVJfU0VOVCAvKiBAbWluOiUyZWNsZWFyU2VudCAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICBfY29uc2VjdXRpdmVFcnJvcnMrKztcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgcGF5bG9hZF8xID0gcGF5bG9hZDsgX2kgPCBwYXlsb2FkXzEubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBwYXlsb2FkXzFbX2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltfRFlOX0VOUVVFVUUgLyogQG1pbjolMmVlbnF1ZXVlICovXShpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHNldHVwIHRpbWVyXHJcbiAgICAgICAgICAgICAgICBfc2V0UmV0cnlUaW1lKGxpbmVhckZhY3Rvcik7XHJcbiAgICAgICAgICAgICAgICBfc2V0dXBUaW1lcigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBDYWxjdWxhdGVzIHRoZSB0aW1lIHRvIHdhaXQgYmVmb3JlIHJldHJ5aW5nIGluIGNhc2Ugb2YgYW4gZXJyb3IgYmFzZWQgb25cclxuICAgICAgICAgICAgICogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBvbmVudGlhbF9iYWNrb2ZmXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfc2V0UmV0cnlUaW1lKGxpbmVhckZhY3Rvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIFNsb3REZWxheUluU2Vjb25kcyA9IDEwO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlbGF5SW5TZWNvbmRzO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9jb25zZWN1dGl2ZUVycm9ycyA8PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXlJblNlY29uZHMgPSBTbG90RGVsYXlJblNlY29uZHM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFja09mZlNsb3QgPSAoTWF0aC5wb3coMiwgX2NvbnNlY3V0aXZlRXJyb3JzKSAtIDEpIC8gMjtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6aW5zZWN1cmUtcmFuZG9tXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhY2tPZmZEZWxheSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGJhY2tPZmZTbG90ICogU2xvdERlbGF5SW5TZWNvbmRzKSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja09mZkRlbGF5ID0gbGluZWFyRmFjdG9yICogYmFja09mZkRlbGF5O1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5SW5TZWNvbmRzID0gTWF0aC5tYXgoTWF0aC5taW4oYmFja09mZkRlbGF5LCAzNjAwKSwgU2xvdERlbGF5SW5TZWNvbmRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IExvZyB0aGUgYmFja29mZiB0aW1lIGxpa2UgdGhlIEMjIHZlcnNpb24gZG9lcy5cclxuICAgICAgICAgICAgICAgIHZhciByZXRyeUFmdGVyVGltZVNwYW4gPSBkYXRlTm93KCkgKyAoZGVsYXlJblNlY29uZHMgKiAxMDAwKTtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IExvZyB0aGUgcmV0cnkgYXQgdGltZSBsaWtlIHRoZSBDIyB2ZXJzaW9uIGRvZXMuXHJcbiAgICAgICAgICAgICAgICBfcmV0cnlBdCA9IHJldHJ5QWZ0ZXJUaW1lU3BhbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU2V0cyB1cCB0aGUgdGltZXIgd2hpY2ggdHJpZ2dlcnMgYWN0dWFsbHkgc2VuZGluZyB0aGUgZGF0YS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9zZXR1cFRpbWVyKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFfdGltZW91dEhhbmRsZSAmJiAhX3BhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXRyeUludGVydmFsID0gX3JldHJ5QXQgPyBNYXRoLm1heCgwLCBfcmV0cnlBdCAtIGRhdGVOb3coKSkgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lclZhbHVlID0gTWF0aC5tYXgoX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fTUFYX0JBVENIX0lOVEVSVkFMIC8qIEBtaW46JTJlbWF4QmF0Y2hJbnRlcnZhbCAqL10oKSwgcmV0cnlJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3RpbWVvdXRIYW5kbGUgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3RpbWVvdXRIYW5kbGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX1RSSUdHRVJfU0VORCAvKiBAbWluOiUyZXRyaWdnZXJTZW5kICovXSh0cnVlLCBudWxsLCAxIC8qIFNlbmRSZXF1ZXN0UmVhc29uLk5vcm1hbFNjaGVkdWxlICovKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCB0aW1lclZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfY2xlYXJTY2hlZHVsZWRUaW1lcigpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChfdGltZW91dEhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICBfdGltZW91dEhhbmRsZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfcmV0cnlBdCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIENoZWNrcyBpZiB0aGUgU0RLIHNob3VsZCByZXNlbmQgdGhlIHBheWxvYWQgYWZ0ZXIgcmVjZWl2aW5nIHRoaXMgc3RhdHVzIGNvZGUgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgICAgICAgICAgICogQHBhcmFtIHN0YXR1c0NvZGVcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pc1JldHJpYWJsZShzdGF0dXNDb2RlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzQ29kZSA9PT0gNDAxIC8vIFVuYXV0aG9yaXplZFxyXG4gICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c0NvZGUgPT09IDQwMyAvLyBGb3JiaWRkZW5cclxuICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNDb2RlID09PSA0MDggLy8gVGltZW91dFxyXG4gICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c0NvZGUgPT09IDQyOSAvLyBUb28gbWFueSByZXF1ZXN0cy5cclxuICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNDb2RlID09PSA1MDAgLy8gSW50ZXJuYWwgc2VydmVyIGVycm9yLlxyXG4gICAgICAgICAgICAgICAgICAgIHx8IHN0YXR1c0NvZGUgPT09IDUwMiAvLyBCYWQgR2F0ZXdheS5cclxuICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNDb2RlID09PSA1MDMgLy8gU2VydmljZSB1bmF2YWlsYWJsZS5cclxuICAgICAgICAgICAgICAgICAgICB8fCBzdGF0dXNDb2RlID09PSA1MDQ7IC8vIEdhdGV3YXkgdGltZW91dC5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZm9ybWF0RXJyb3JNZXNzYWdlWGhyKHhociwgbWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHhocikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlhNTEh0dHBSZXF1ZXN0LFN0YXR1czpcIiArIHhoci5zdGF0dXMgKyBcIixSZXNwb25zZTpcIiArIF9nZXRSZXNwb25zZVRleHQoeGhyKSB8fCB4aHIucmVzcG9uc2UgfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBTZW5kIFhEb21haW5SZXF1ZXN0XHJcbiAgICAgICAgICAgICAqIEBwYXJhbSBwYXlsb2FkIHtzdHJpbmd9IC0gVGhlIGRhdGEgcGF5bG9hZCB0byBiZSBzZW50LlxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gaXNBc3luYyB7Ym9vbGVhbn0gLSBJbmRpY2F0ZXMgaWYgdGhlIHJlcXVlc3Qgc2hvdWxkIGJlIHNlbnQgYXN5bmNocm9ub3VzbHlcclxuICAgICAgICAgICAgICpcclxuICAgICAgICAgICAgICogTm90ZTogWERvbWFpblJlcXVlc3QgZG9lcyBub3Qgc3VwcG9ydCBzeW5jIHJlcXVlc3RzLiBUaGlzICdpc0FzeW5jJyBwYXJhbWV0ZXIgaXMgYWRkZWRcclxuICAgICAgICAgICAgICogdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0aGUgeGhyU2VuZGVyJ3MgY29udHJhY3RcclxuICAgICAgICAgICAgICogTm90ZTogWERvbWFpblJlcXVlc3QgZG9lcyBub3Qgc3VwcG9ydCBjdXN0b20gaGVhZGVycyBhbmQgd2UgYXJlIG5vdCBhYmxlIHRvIGdldFxyXG4gICAgICAgICAgICAgKiBhcHBJZCBmcm9tIHRoZSBiYWNrZW5kIGZvciB0aGUgY29ycmVjdCBjb3JyZWxhdGlvbi5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF94ZHJTZW5kZXIocGF5bG9hZCwgaXNBc3luYykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGJ1ZmZlciA9IF9zZWxmW19EWU5fX0JVRkZFUiAvKiBAbWluOiUyZV9idWZmZXIgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIF93aW5kb3cgPSBnZXRXaW5kb3coKTtcclxuICAgICAgICAgICAgICAgIHZhciB4ZHIgPSBuZXcgWERvbWFpblJlcXVlc3QoKTtcclxuICAgICAgICAgICAgICAgIHhkci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfc2VsZi5feGRyT25Mb2FkKHhkciwgcGF5bG9hZCk7IH07XHJcbiAgICAgICAgICAgICAgICB4ZHIub25lcnJvciA9IGZ1bmN0aW9uIChldmVudCkgeyByZXR1cm4gX3NlbGZbX0RZTl9fT05fRVJST1IgLyogQG1pbjolMmVfb25FcnJvciAqL10ocGF5bG9hZCwgX2Zvcm1hdEVycm9yTWVzc2FnZVhkcih4ZHIpLCBldmVudCk7IH07XHJcbiAgICAgICAgICAgICAgICAvLyBYRG9tYWluUmVxdWVzdCByZXF1aXJlcyB0aGUgc2FtZSBwcm90b2NvbCBhcyB0aGUgaG9zdGluZyBwYWdlLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHByb3RvY29sIGRvZXNuJ3QgbWF0Y2gsIHdlIGNhbid0IHNlbmQgdGhlIHRlbGVtZXRyeSA6KC5cclxuICAgICAgICAgICAgICAgIHZhciBob3N0aW5nUHJvdG9jb2wgPSBfd2luZG93ICYmIF93aW5kb3cubG9jYXRpb24gJiYgX3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmW19EWU5fX1NFTkRFUl9DT05GSUcgLyogQG1pbjolMmVfc2VuZGVyQ29uZmlnICovXVtfRFlOX0VORFBPSU5UX1VSTCAvKiBAbWluOiUyZWVuZHBvaW50VXJsICovXSgpLmxhc3RJbmRleE9mKGhvc3RpbmdQcm90b2NvbCwgMCkgIT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfc2VsZltfRFlOX0RJQUdfTE9HIC8qIEBtaW46JTJlZGlhZ0xvZyAqL10oKSwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDQwIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuVHJhbnNtaXNzaW9uRmFpbGVkICovLCBcIi4gXCIgK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNhbm5vdCBzZW5kIFhEb21haW4gcmVxdWVzdC4gVGhlIGVuZHBvaW50IFVSTCBwcm90b2NvbCBkb2Vzbid0IG1hdGNoIHRoZSBob3N0aW5nIHBhZ2UgcHJvdG9jb2wuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltfRFlOX0NMRUFSIC8qIEBtaW46JTJlY2xlYXIgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGVuZHBvaW50VXJsID0gX3NlbGZbX0RZTl9fU0VOREVSX0NPTkZJRyAvKiBAbWluOiUyZV9zZW5kZXJDb25maWcgKi9dW19EWU5fRU5EUE9JTlRfVVJMIC8qIEBtaW46JTJlZW5kcG9pbnRVcmwgKi9dKCkucmVwbGFjZSgvXihodHRwcz86KS8sIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgeGRyLm9wZW4oXCJQT1NUXCIsIGVuZHBvaW50VXJsKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbXBvc2UgYW4gYXJyYXkgb2YgcGF5bG9hZHNcclxuICAgICAgICAgICAgICAgIHZhciBiYXRjaCA9IGJ1ZmZlcltfRFlOX0JBVENIX1BBWUxPQURTIC8qIEBtaW46JTJlYmF0Y2hQYXlsb2FkcyAqL10ocGF5bG9hZCk7XHJcbiAgICAgICAgICAgICAgICB4ZHIuc2VuZChiYXRjaCk7XHJcbiAgICAgICAgICAgICAgICBidWZmZXJbX0RZTl9NQVJLX0FTX1NFTlQgLyogQG1pbjolMmVtYXJrQXNTZW50ICovXShwYXlsb2FkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZm9ybWF0RXJyb3JNZXNzYWdlWGRyKHhkciwgbWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHhkcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlhEb21haW5SZXF1ZXN0LFJlc3BvbnNlOlwiICsgX2dldFJlc3BvbnNlVGV4dCh4ZHIpIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBVc2luZyBmdW5jdGlvbiBsb29rdXBzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHRoZSBnZXROb3RpZnlNZ3IoKSBkaWQgbm90IGV4aXN0IHVudGlsIGFmdGVyIHYyLjUuNlxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZ2V0Tm90aWZ5TWdyKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZ1bmMgPSBcImdldE5vdGlmeU1nclwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLmNvcmVbZnVuY10pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NlbGYuY29yZVtmdW5jXSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gdXNpbmcgX3NlbGYuY29yZVsnX25vdGlmaWNhdGlvbk1hbmFnZXInXSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9zZWxmLmNvcmVbXCJfbm90aWZpY2F0aW9uTWFuYWdlclwiXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfbm90aWZ5U2VuZFJlcXVlc3Qoc2VuZFJlcXVlc3QsIGlzQXN5bmMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBtYW5hZ2VyID0gX2dldE5vdGlmeU1ncigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hbmFnZXIgJiYgbWFuYWdlcltfRFlOX0VWRU5UU19TRU5EX1JFUVVFU1QgLyogQG1pbjolMmVldmVudHNTZW5kUmVxdWVzdCAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyW19EWU5fRVZFTlRTX1NFTkRfUkVRVUVTVCAvKiBAbWluOiUyZWV2ZW50c1NlbmRSZXF1ZXN0ICovXShzZW5kUmVxdWVzdCwgaXNBc3luYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9zZWxmW19EWU5fRElBR19MT0cgLyogQG1pbjolMmVkaWFnTG9nICovXSgpLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDc0IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuTm90aWZpY2F0aW9uRXhjZXB0aW9uICovLCBcInNlbmQgcmVxdWVzdCBub3RpZmljYXRpb24gZmFpbGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogVmFsaWRhdGUgVVVJRCBGb3JtYXRcclxuICAgICAgICAgICAgICogU3BlY3MgdGFrZW4gZnJvbSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDEyMiBhbmQgYnJlZXplIHJlcG9cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF92YWxpZGF0ZUluc3RydW1lbnRhdGlvbktleShjb25maWcpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaXNhYmxlSUtleVZhbGlkYXRpb25GbGFnID0gaXNOdWxsT3JVbmRlZmluZWQoY29uZmlnW19EWU5fRElTQUJMRV9JTlNUUlVNRU5UQVQ3IC8qIEBtaW46JTJlZGlzYWJsZUluc3RydW1lbnRhdGlvbktleVZhbGlkYXRpb24gKi9dKSA/IGZhbHNlIDogY29uZmlnW19EWU5fRElTQUJMRV9JTlNUUlVNRU5UQVQ3IC8qIEBtaW46JTJlZGlzYWJsZUluc3RydW1lbnRhdGlvbktleVZhbGlkYXRpb24gKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVJS2V5VmFsaWRhdGlvbkZsYWcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBVVUlEX1JlZ2V4ID0gXCJeWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JFwiO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IG5ldyBSZWdFeHAoVVVJRF9SZWdleCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVnZXhwLnRlc3QoY29uZmlnW19EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSAvKiBAbWluOiUyZWluc3RydW1lbnRhdGlvbktleSAqL10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0RGVmYXVsdHMoKSB7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19TRU5ERVIgLyogQG1pbjolMmVfc2VuZGVyICovXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX19CVUZGRVIgLyogQG1pbjolMmVfYnVmZmVyICovXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5fYXBwSWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuX3NhbXBsZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfaGVhZGVycyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgX29mZmxpbmVMaXN0ZW5lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfY29uc2VjdXRpdmVFcnJvcnMgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3JldHJ5QXQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2xhc3RTZW5kID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9wYXVzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF90aW1lb3V0SGFuZGxlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9zZXJpYWxpemVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9zdGFtcF9zcGVjaWZpY19yZWRpcmVjdHMgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3N5bmNGZXRjaFBheWxvYWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgX2ZhbGxiYWNrU2VuZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9zeW5jVW5sb2FkU2VuZGVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9ldnROYW1lc3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4gICAgU2VuZGVyLmNvbnN0cnVjdEVudmVsb3BlID0gZnVuY3Rpb24gKG9yaWcsIGlLZXksIGxvZ2dlciwgY29udmVydFVuZGVmaW5lZCkge1xyXG4gICAgICAgIHZhciBlbnZlbG9wZTtcclxuICAgICAgICBpZiAoaUtleSAhPT0gb3JpZy5pS2V5ICYmICFpc051bGxPclVuZGVmaW5lZChpS2V5KSkge1xyXG4gICAgICAgICAgICBlbnZlbG9wZSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcmlnKSwgeyBpS2V5OiBpS2V5IH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZW52ZWxvcGUgPSBvcmlnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY3JlYXRvciA9IEVudmVsb3BlVHlwZUNyZWF0b3JbZW52ZWxvcGUuYmFzZVR5cGVdIHx8IEV2ZW50RW52ZWxvcGVDcmVhdG9yO1xyXG4gICAgICAgIHJldHVybiBjcmVhdG9yKGxvZ2dlciwgZW52ZWxvcGUsIGNvbnZlcnRVbmRlZmluZWQpO1xyXG4gICAgfTtcclxuLy8gUmVtb3ZlZCBTdHViIGZvciBTZW5kZXIucHJvdG90eXBlLnBhdXNlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlbmRlci5wcm90b3R5cGUucmVzdW1lLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlbmRlci5wcm90b3R5cGUuZmx1c2guXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2VuZGVyLnByb3RvdHlwZS5vbnVubG9hZEZsdXNoLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlbmRlci5wcm90b3R5cGUuaW5pdGlhbGl6ZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBTZW5kZXIucHJvdG90eXBlLnByb2Nlc3NUZWxlbWV0cnkuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2VuZGVyLnByb3RvdHlwZS5feGhyUmVhZHlTdGF0ZUNoYW5nZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBTZW5kZXIucHJvdG90eXBlLnRyaWdnZXJTZW5kLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlbmRlci5wcm90b3R5cGUuX29uRXJyb3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2VuZGVyLnByb3RvdHlwZS5fb25QYXJ0aWFsU3VjY2Vzcy5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBTZW5kZXIucHJvdG90eXBlLl9vblN1Y2Nlc3MuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgU2VuZGVyLnByb3RvdHlwZS5feGRyT25Mb2FkLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFNlbmRlci5wcm90b3R5cGUuYWRkSGVhZGVyLlxyXG4gICAgcmV0dXJuIFNlbmRlcjtcclxufShCYXNlVGVsZW1ldHJ5UGx1Z2luKSk7XHJcbmV4cG9ydCB7IFNlbmRlciB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZW5kZXIuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gRGVwZW5kZW5jaWVzIFBsdWdpbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gTm90ZTogRE9OJ1QgRXhwb3J0IHRoZXNlIGNvbnN0IGZyb20gdGhlIHBhY2thZ2UgYXMgd2UgYXJlIHN0aWxsIHRhcmdldGluZyBFUzMgdGhpcyB3aWxsIGV4cG9ydCBhIG11dGFibGUgdmFyaWFibGVzIHRoYXQgc29tZW9uZSBjb3VsZCBjaGFuZ2UhISFcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gR2VuZXJhbGx5IHlvdSBzaG91bGQgb25seSBwdXQgdmFsdWVzIHRoYXQgYXJlIHVzZWQgbW9yZSB0aGFuIDIgdGltZXMgYW5kIHRoZW4gb25seSBpZiBub3QgYWxyZWFkeSBleHBvc2VkIGFzIGEgY29uc3RhbnQgKHN1Y2ggYXMgU2RrQ29yZU5hbWVzKVxyXG4vLyBhcyB3aGVuIHVzaW5nIFwic2hvcnRcIiBuYW1lZCB2YWx1ZXMgZnJvbSBoZXJlIHRoZXkgd2lsbCBiZSB3aWxsIGJlIG1pbmlmaWVkIHNtYWxsZXIgdGhhbiB0aGUgU2RrQ29yZU5hbWVzW2VTZGtDb3JlTmFtZXMueHh4eF0gdmFsdWUuXHJcbmV4cG9ydCB2YXIgU1RSX0RVUkFUSU9OID0gXCJkdXJhdGlvblwiO1xyXG5leHBvcnQgdmFyIFNUUl9QUk9QRVJUSUVTID0gXCJwcm9wZXJ0aWVzXCI7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUludGVybmFsQ29uc3RhbnRzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIERlcGVuZGVuY2llcyBQbHVnaW4sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbi8vIEBza2lwLWZpbGUtbWluaWZ5XHJcbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcbi8vIEFVVE8gR0VORVJBVEVEIEZJTEU6IFRoaXMgZmlsZSBpcyBBdXRvIEdlbmVyYXRlZCBkdXJpbmcgYnVpbGQuXHJcbi8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcbi8vICEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhXHJcbi8vIE5vdGU6IERPTidUIEV4cG9ydCB0aGVzZSBjb25zdCBmcm9tIHRoZSBwYWNrYWdlIGFzIHdlIGFyZSBzdGlsbCB0YXJnZXRpbmcgRVMzIHRoaXMgd2lsbCBleHBvcnQgYSBtdXRhYmxlIHZhcmlhYmxlcyB0aGF0IHNvbWVvbmUgY291bGQgY2hhbmdlISEhXHJcbi8vICEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhXHJcbmV4cG9ydCB2YXIgX0RZTl9SRVFVRVNUX1VSTCA9IFwicmVxdWVzdFVybFwiOyAvLyBDb3VudDogMTJcclxuZXhwb3J0IHZhciBfRFlOX0lOU1QgPSBcImluc3RcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0xFTkdUSCA9IFwibGVuZ3RoXCI7IC8vIENvdW50OiAxMFxyXG5leHBvcnQgdmFyIF9EWU5fVFJBQ0VfSUQgPSBcInRyYWNlSURcIjsgLy8gQ291bnQ6IDlcclxuZXhwb3J0IHZhciBfRFlOX1NQQU5fSUQgPSBcInNwYW5JRFwiOyAvLyBDb3VudDogOFxyXG5leHBvcnQgdmFyIF9EWU5fVFJBQ0VfRkxBR1MgPSBcInRyYWNlRmxhZ3NcIjsgLy8gQ291bnQ6IDEzXHJcbmV4cG9ydCB2YXIgX0RZTl9DT05URVhUID0gXCJjb250ZXh0XCI7IC8vIENvdW50OiA3XHJcbmV4cG9ydCB2YXIgX0RZTl9UUkFDRV9JRDAgPSBcInRyYWNlSWRcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX1NQQU5fSUQxID0gXCJzcGFuSWRcIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0NPUkUgPSBcImNvcmVcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX0lOQ0xVREVfQ09SUkVMQVRJT05fMiA9IFwiaW5jbHVkZUNvcnJlbGF0aW9uSGVhZGVyc1wiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fQ0FOX0lOQ0xVREVfQ09SUkVMQVQzID0gXCJjYW5JbmNsdWRlQ29ycmVsYXRpb25IZWFkZXJcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9BQlNPTFVURV9VUkwgPSBcImdldEFic29sdXRlVXJsXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9IRUFERVJTID0gXCJoZWFkZXJzXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9SRVFVRVNUX0hFQURFUlMgPSBcInJlcXVlc3RIZWFkZXJzXCI7IC8vIENvdW50OiAxM1xyXG5leHBvcnQgdmFyIF9EWU5fQVBQX0lEID0gXCJhcHBJZFwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fU0VUX1JFUVVFU1RfSEVBREVSID0gXCJzZXRSZXF1ZXN0SGVhZGVyXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9UUkFDS19ERVBFTkRFTkNZX0RBVDQgPSBcInRyYWNrRGVwZW5kZW5jeURhdGFJbnRlcm5hbFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRElTVFJJQlVURURfVFJBQ0lOR181ID0gXCJkaXN0cmlidXRlZFRyYWNpbmdNb2RlXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9TVEFSVF9USU1FID0gXCJzdGFydFRpbWVcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX1RPX0xPV0VSX0NBU0UgPSBcInRvTG93ZXJDYXNlXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9FTkFCTEVfUkVRVUVTVF9IRUFERTYgPSBcImVuYWJsZVJlcXVlc3RIZWFkZXJUcmFja2luZ1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX0FKQVhfRVJST1JfU1Q3ID0gXCJlbmFibGVBamF4RXJyb3JTdGF0dXNUZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9FTkFCTEVfQUpBWF9QRVJGX1RSQTggPSBcImVuYWJsZUFqYXhQZXJmVHJhY2tpbmdcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX01BWF9BSkFYX0NBTExTX1BFUl9WOSA9IFwibWF4QWpheENhbGxzUGVyVmlld1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX1JFU1BPTlNFX0hFQUQxMCA9IFwiZW5hYmxlUmVzcG9uc2VIZWFkZXJUcmFja2luZ1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRVhDTFVERV9SRVFVRVNUX0ZST00xMSA9IFwiZXhjbHVkZVJlcXVlc3RGcm9tQXV0b1RyYWNraW5nUGF0dGVybnNcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0FERF9SRVFVRVNUX0NPTlRFWFQgPSBcImFkZFJlcXVlc3RDb250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0FKQVhfVFJBQ0tJTjEyID0gXCJkaXNhYmxlQWpheFRyYWNraW5nXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0ZFVENIX1RSQUNLSTEzID0gXCJkaXNhYmxlRmV0Y2hUcmFja2luZ1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fU1RBVFVTID0gXCJzdGF0dXNcIjsgLy8gQ291bnQ6IDEwXHJcbmV4cG9ydCB2YXIgX0RZTl9TVEFUVVNfVEVYVCA9IFwic3RhdHVzVGV4dFwiOyAvLyBDb3VudDogOFxyXG5leHBvcnQgdmFyIF9EWU5fSEVBREVSX01BUCA9IFwiaGVhZGVyTWFwXCI7IC8vIENvdW50OiA4XHJcbmV4cG9ydCB2YXIgX0RZTl9PUEVOX0RPTkUgPSBcIm9wZW5Eb25lXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9TRU5EX0RPTkUgPSBcInNlbmREb25lXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9SRVFVRVNUX1NFTlRfVElNRSA9IFwicmVxdWVzdFNlbnRUaW1lXCI7IC8vIENvdW50OiA5XHJcbmV4cG9ydCB2YXIgX0RZTl9BQk9SVF9ET05FID0gXCJhYm9ydERvbmVcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9UUkFDRV9JRCA9IFwiZ2V0VHJhY2VJZFwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fR0VUX1RSQUNFX0ZMQUdTID0gXCJnZXRUcmFjZUZsYWdzXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9NRVRIT0QgPSBcIm1ldGhvZFwiOyAvLyBDb3VudDogMTBcclxuZXhwb3J0IHZhciBfRFlOX0VSUk9SX1NUQVRVU19URVhUID0gXCJlcnJvclN0YXR1c1RleHRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX1NUQVRFX0NIQU5HRV9BVFRBQ0hFMTQgPSBcInN0YXRlQ2hhbmdlQXR0YWNoZWRcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX1JFU1BPTlNFX1RFWFQgPSBcInJlc3BvbnNlVGV4dFwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fUkVTUE9OU0VfRklOSVNIRURfVEkxNSA9IFwicmVzcG9uc2VGaW5pc2hlZFRpbWVcIjsgLy8gQ291bnQ6IDdcclxuZXhwb3J0IHZhciBfRFlOX19DUkVBVEVfVFJBQ0tfSVRFTSA9IFwiQ3JlYXRlVHJhY2tJdGVtXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9SRVNQT05TRSA9IFwicmVzcG9uc2VcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0dFVF9BTExfUkVTUE9OU0VfSEVBMTYgPSBcImdldEFsbFJlc3BvbnNlSGVhZGVyc1wiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX1BBUlRfQVBST1BTID0gXCJnZXRQYXJ0QVByb3BzXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9HRVRfQ09SUkVMQVRJT05fQ09OVDE3ID0gXCJnZXRDb3JyZWxhdGlvbkNvbnRleHRcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX1BFUkZfTUFSSyA9IFwicGVyZk1hcmtcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0FKQVhfUEVSRl9MT09LVVBfREVMMTggPSBcImFqYXhQZXJmTG9va3VwRGVsYXlcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX05BTUUgPSBcIm5hbWVcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX1BFUkZfVElNSU5HID0gXCJwZXJmVGltaW5nXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9BSkFYX0RJQUdOT1NUSUNTX01FUzE5ID0gXCJhamF4RGlhZ25vc3RpY3NNZXNzYWdlXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9DT1JSRUxBVElPTl9DT05URVhUID0gXCJjb3JyZWxhdGlvbkNvbnRleHRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0FKQVhfVE9UQUxfRFVSQVRJT04gPSBcImFqYXhUb3RhbER1cmF0aW9uXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9FVkVOVF9UUkFDRV9DVFggPSBcImV2ZW50VHJhY2VDdHhcIjsgLy8gQ291bnQ6IDNcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9X19EeW5hbWljQ29uc3RhbnRzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIERlcGVuZGVuY2llcyBQbHVnaW4sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IEV4dGVuc2lvbnMsIGRhdGFTYW5pdGl6ZVVybCwgZGF0ZVRpbWVVdGlsc0R1cmF0aW9uLCBtc1RvVGltZVNwYW4sIHVybEdldEFic29sdXRlVXJsLCB1cmxHZXRDb21wbGV0ZVVybCB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IGFyckZvckVhY2gsIGlzTnVsbE9yVW5kZWZpbmVkLCBpc051bWJlciwgaXNTdHJpbmcsIG5vcm1hbGl6ZUpzTmFtZSwgb2JqRm9yRWFjaEtleSwgb2JqS2V5cyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBTVFJfRFVSQVRJT04sIFNUUl9QUk9QRVJUSUVTIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgX0RZTl9BQk9SVF9ET05FLCBfRFlOX0FKQVhfVE9UQUxfRFVSQVRJT04sIF9EWU5fQ09SUkVMQVRJT05fQ09OVEVYVCwgX0RZTl9FVkVOVF9UUkFDRV9DVFgsIF9EWU5fR0VUX0FCU09MVVRFX1VSTCwgX0RZTl9HRVRfUEFSVF9BUFJPUFMsIF9EWU5fR0VUX1RSQUNFX0ZMQUdTLCBfRFlOX0dFVF9UUkFDRV9JRCwgX0RZTl9IRUFERVJfTUFQLCBfRFlOX0xFTkdUSCwgX0RZTl9NRVRIT0QsIF9EWU5fTkFNRSwgX0RZTl9PUEVOX0RPTkUsIF9EWU5fUEVSRl9NQVJLLCBfRFlOX1BFUkZfVElNSU5HLCBfRFlOX1JFUVVFU1RfSEVBREVSUywgX0RZTl9SRVFVRVNUX1NFTlRfVElNRSwgX0RZTl9SRVFVRVNUX1VSTCwgX0RZTl9SRVNQT05TRSwgX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1LCBfRFlOX1NFTkRfRE9ORSwgX0RZTl9TUEFOX0lELCBfRFlOX1NQQU5fSUQxLCBfRFlOX1NUQVJUX1RJTUUsIF9EWU5fU1RBVEVfQ0hBTkdFX0FUVEFDSEUxNCwgX0RZTl9TVEFUVVMsIF9EWU5fU1RBVFVTX1RFWFQsIF9EWU5fVFJBQ0VfRkxBR1MsIF9EWU5fVFJBQ0VfSUQsIF9EWU5fVFJBQ0VfSUQwLCBfRFlOX19DUkVBVEVfVFJBQ0tfSVRFTSB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG4vKiogQGlnbm9yZSAqL1xyXG5mdW5jdGlvbiBfY2FsY1BlcmZEdXJhdGlvbihyZXNvdXJjZUVudHJ5LCBzdGFydCwgZW5kKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gMDtcclxuICAgIHZhciBmcm9tID0gcmVzb3VyY2VFbnRyeVtzdGFydF07XHJcbiAgICB2YXIgdG8gPSByZXNvdXJjZUVudHJ5W2VuZF07XHJcbiAgICBpZiAoZnJvbSAmJiB0bykge1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGVUaW1lVXRpbHNEdXJhdGlvbihmcm9tLCB0byk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKiBAaWdub3JlICovXHJcbmZ1bmN0aW9uIF9zZXRQZXJmRHVyYXRpb24ocHJvcHMsIG5hbWUsIHJlc291cmNlRW50cnksIHN0YXJ0LCBlbmQpIHtcclxuICAgIHZhciByZXN1bHQgPSAwO1xyXG4gICAgdmFyIHZhbHVlID0gX2NhbGNQZXJmRHVyYXRpb24ocmVzb3VyY2VFbnRyeSwgc3RhcnQsIGVuZCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICByZXN1bHQgPSBfc2V0UGVyZlZhbHVlKHByb3BzLCBuYW1lLCBtc1RvVGltZVNwYW4odmFsdWUpKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuLyoqIEBpZ25vcmUgKi9cclxuZnVuY3Rpb24gX3NldFBlcmZWYWx1ZShwcm9wcywgbmFtZSwgdmFsdWUpIHtcclxuICAgIHZhciBzdHJQZXJmID0gXCJhamF4UGVyZlwiO1xyXG4gICAgdmFyIHJlc3VsdCA9IDA7XHJcbiAgICBpZiAocHJvcHMgJiYgbmFtZSAmJiB2YWx1ZSkge1xyXG4gICAgICAgIHZhciBwZXJmRGF0YSA9IHByb3BzW3N0clBlcmZdID0gKHByb3BzW3N0clBlcmZdIHx8IHt9KTtcclxuICAgICAgICBwZXJmRGF0YVtuYW1lXSA9IHZhbHVlO1xyXG4gICAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKiBAaWdub3JlICovXHJcbmZ1bmN0aW9uIF9wb3B1bGF0ZVBlcmZEYXRhKGFqYXhEYXRhLCBkZXBlbmRlbmN5KSB7XHJcbiAgICAvKlxyXG4gICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUmVzb3VyY2VfVGltaW5nX0FQSS9Vc2luZ190aGVfUmVzb3VyY2VfVGltaW5nX0FQSVxyXG4gICAgKiAgfCAtc3RhcnRUaW1lXHJcbiAgICAqICB8IC1yZWRpcmVjdFN0YXJ0XHJcbiAgICAqICB8ICAgICAgICAgICAgfCAtcmVkaXJlY3RFbmRcclxuICAgICogIHwgICAgICAgICAgICB8IHwgLWZldGNoU3RhcnRcclxuICAgICogIHwgICAgICAgICAgICB8IHwgICB8IC1kb21haW5Mb29rdXBTdGFydFxyXG4gICAgKiAgfCAgICAgICAgICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgfC0gZG9tYWluTG9va3VwRW5kXHJcbiAgICAqICB8ICAgICAgICAgICAgfCB8ICAgfCAgICAgICAgICAgICAgICB8IHwgLWNvbm5lY3RTdGFydFxyXG4gICAgKiAgfCAgICAgICAgICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgfCB8ICB8IC1zZWN1cmVDb25uZWN0aW9uU3RhcnRcclxuICAgICogIHwgICAgICAgICAgICB8IHwgICB8ICAgICAgICAgICAgICAgIHwgfCAgfCAgICAgICAgfCAtY29ubmVjdEVuZFxyXG4gICAgKiAgfCAgICAgICAgICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgfCB8ICB8ICAgICAgICB8IHwgLXJlcXVlc3RTdGFydFxyXG4gICAgKiAgfCAgICAgICAgICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgfCB8ICB8ICAgICAgICB8IHwgICAgICAgICAgIHwgfCAtcmVzcG9uc2VTdGFydFxyXG4gICAgKiAgfCAgICAgICAgICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgfCB8ICB8ICAgICAgICB8IHwgICAgICAgICAgIHwgfCAgICAgICAgICAgIHwgfCAtcmVzcG9uc2VFbmRcclxuICAgICogICstLS0tLS0tLS0tLS0rLSstLS0rLS0tLS0tLS0tLS0tLS0tLSstKy0tKy0tLS0tLS0tKy0rLS0tLS0tLS0tLS0rLSstLS0tLS0tLS0tLS0rLStcclxuICAgICogIHwtLXJlZGlyZWN0LS18IHwtLS18LS1kb21haW5Mb29rdXAtLXwgfC0tY29ubmVjdC0tfCB8LS1yZXF1ZXN0LS18IHwtLXJlc3BvbnNlLS18IHxcclxuICAgICogIHwtLS0tLS0tLS0tLS0tLS0tLS0tbmV0d29ya0Nvbm5lY3QtLS0tLS0tLS0tLS0tLS0tfFxyXG4gICAgKiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS1zZW50UmVxdWVzdC0tLS0tLS0tfFxyXG4gICAgKiAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXBlcmZUb3RhbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxyXG4gICAgKi9cclxuICAgIHZhciByZXNvdXJjZUVudHJ5ID0gYWpheERhdGFbX0RZTl9QRVJGX1RJTUlORyAvKiBAbWluOiUyZXBlcmZUaW1pbmcgKi9dO1xyXG4gICAgdmFyIHByb3BzID0gZGVwZW5kZW5jeVtTVFJfUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dIHx8IHt9O1xyXG4gICAgdmFyIHByb3BzU2V0ID0gMDtcclxuICAgIHZhciBzdHJOYW1lID0gXCJuYW1lXCI7XHJcbiAgICB2YXIgc3RyU3RhcnQgPSBcIlN0YXJ0XCI7XHJcbiAgICB2YXIgc3RyRW5kID0gXCJFbmRcIjtcclxuICAgIHZhciBzdHJEb21haW5Mb29rdXAgPSBcImRvbWFpbkxvb2t1cFwiO1xyXG4gICAgdmFyIHN0ckNvbm5lY3QgPSBcImNvbm5lY3RcIjtcclxuICAgIHZhciBzdHJSZWRpcmVjdCA9IFwicmVkaXJlY3RcIjtcclxuICAgIHZhciBzdHJSZXF1ZXN0ID0gXCJyZXF1ZXN0XCI7XHJcbiAgICB2YXIgc3RyUmVzcG9uc2UgPSBcInJlc3BvbnNlXCI7XHJcbiAgICB2YXIgc3RyU3RhcnRUaW1lID0gXCJzdGFydFRpbWVcIjtcclxuICAgIHZhciBzdHJEb21haW5Mb29rdXBTdGFydCA9IHN0ckRvbWFpbkxvb2t1cCArIHN0clN0YXJ0O1xyXG4gICAgdmFyIHN0ckRvbWFpbkxvb2t1cEVuZCA9IHN0ckRvbWFpbkxvb2t1cCArIHN0ckVuZDtcclxuICAgIHZhciBzdHJDb25uZWN0U3RhcnQgPSBzdHJDb25uZWN0ICsgc3RyU3RhcnQ7XHJcbiAgICB2YXIgc3RyQ29ubmVjdEVuZCA9IHN0ckNvbm5lY3QgKyBzdHJFbmQ7XHJcbiAgICB2YXIgc3RyUmVxdWVzdFN0YXJ0ID0gc3RyUmVxdWVzdCArIHN0clN0YXJ0O1xyXG4gICAgdmFyIHN0clJlcXVlc3RFbmQgPSBzdHJSZXF1ZXN0ICsgc3RyRW5kO1xyXG4gICAgdmFyIHN0clJlc3BvbnNlU3RhcnQgPSBzdHJSZXNwb25zZSArIHN0clN0YXJ0O1xyXG4gICAgdmFyIHN0clJlc3BvbnNlRW5kID0gc3RyUmVzcG9uc2UgKyBzdHJFbmQ7XHJcbiAgICB2YXIgc3RyUmVkaXJlY3RTdGFydCA9IHN0clJlZGlyZWN0ICsgc3RyU3RhcnQ7XHJcbiAgICB2YXIgc3RyUmVkaXJlY3RFbmQgPSBzdHJSZWRpcmVjdCA9IHN0ckVuZDtcclxuICAgIHZhciBzdHJUcmFuc2ZlclNpemUgPSBcInRyYW5zZmVyU2l6ZVwiO1xyXG4gICAgdmFyIHN0ckVuY29kZWRCb2R5U2l6ZSA9IFwiZW5jb2RlZEJvZHlTaXplXCI7XHJcbiAgICB2YXIgc3RyRGVjb2RlZEJvZHlTaXplID0gXCJkZWNvZGVkQm9keVNpemVcIjtcclxuICAgIHZhciBzdHJTZXJ2ZXJUaW1pbmcgPSBcInNlcnZlclRpbWluZ1wiO1xyXG4gICAgaWYgKHJlc291cmNlRW50cnkpIHtcclxuICAgICAgICAvLyByZWRpcmVjdFxyXG4gICAgICAgIHByb3BzU2V0IHw9IF9zZXRQZXJmRHVyYXRpb24ocHJvcHMsIHN0clJlZGlyZWN0LCByZXNvdXJjZUVudHJ5LCBzdHJSZWRpcmVjdFN0YXJ0LCBzdHJSZWRpcmVjdEVuZCk7XHJcbiAgICAgICAgLy8gZG9tYWluTG9va3VwXHJcbiAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZEdXJhdGlvbihwcm9wcywgc3RyRG9tYWluTG9va3VwLCByZXNvdXJjZUVudHJ5LCBzdHJEb21haW5Mb29rdXBTdGFydCwgc3RyRG9tYWluTG9va3VwRW5kKTtcclxuICAgICAgICAvLyBjb25uZWN0XHJcbiAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZEdXJhdGlvbihwcm9wcywgc3RyQ29ubmVjdCwgcmVzb3VyY2VFbnRyeSwgc3RyQ29ubmVjdFN0YXJ0LCBzdHJDb25uZWN0RW5kKTtcclxuICAgICAgICAvLyByZXF1ZXN0XHJcbiAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZEdXJhdGlvbihwcm9wcywgc3RyUmVxdWVzdCwgcmVzb3VyY2VFbnRyeSwgc3RyUmVxdWVzdFN0YXJ0LCBzdHJSZXF1ZXN0RW5kKTtcclxuICAgICAgICAvLyByZXNwb25zZVxyXG4gICAgICAgIHByb3BzU2V0IHw9IF9zZXRQZXJmRHVyYXRpb24ocHJvcHMsIHN0clJlc3BvbnNlLCByZXNvdXJjZUVudHJ5LCBzdHJSZXNwb25zZVN0YXJ0LCBzdHJSZXNwb25zZUVuZCk7XHJcbiAgICAgICAgLy8gTmV0d29yayBjb25uZWN0aW9uIHRpbWVcclxuICAgICAgICBwcm9wc1NldCB8PSBfc2V0UGVyZkR1cmF0aW9uKHByb3BzLCBcIm5ldHdvcmtDb25uZWN0XCIsIHJlc291cmNlRW50cnksIHN0clN0YXJ0VGltZSwgc3RyQ29ubmVjdEVuZCk7XHJcbiAgICAgICAgLy8gU2VudCBSZXF1ZXN0XHJcbiAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZEdXJhdGlvbihwcm9wcywgXCJzZW50UmVxdWVzdFwiLCByZXNvdXJjZUVudHJ5LCBzdHJSZXF1ZXN0U3RhcnQsIHN0clJlc3BvbnNlRW5kKTtcclxuICAgICAgICAvLyBQZXJmVG90YWwgLyBEdXJhdGlvblxyXG4gICAgICAgIHZhciBkdXJhdGlvbiA9IHJlc291cmNlRW50cnlbU1RSX0RVUkFUSU9OIC8qIEBtaW46JTJlZHVyYXRpb24gKi9dO1xyXG4gICAgICAgIGlmICghZHVyYXRpb24pIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSBfY2FsY1BlcmZEdXJhdGlvbihyZXNvdXJjZUVudHJ5LCBzdHJTdGFydFRpbWUsIHN0clJlc3BvbnNlRW5kKSB8fCAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwcm9wc1NldCB8PSBfc2V0UGVyZlZhbHVlKHByb3BzLCBTVFJfRFVSQVRJT04sIGR1cmF0aW9uKTtcclxuICAgICAgICBwcm9wc1NldCB8PSBfc2V0UGVyZlZhbHVlKHByb3BzLCBcInBlcmZUb3RhbFwiLCBkdXJhdGlvbik7XHJcbiAgICAgICAgdmFyIHNlcnZlclRpbWluZyA9IHJlc291cmNlRW50cnlbc3RyU2VydmVyVGltaW5nXTtcclxuICAgICAgICBpZiAoc2VydmVyVGltaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciBzZXJ2ZXJfMSA9IHt9O1xyXG4gICAgICAgICAgICBhcnJGb3JFYWNoKHNlcnZlclRpbWluZywgZnVuY3Rpb24gKHZhbHVlLCBpZHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbm9ybWFsaXplSnNOYW1lKHZhbHVlW3N0ck5hbWVdIHx8IFwiXCIgKyBpZHgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG5ld1ZhbHVlID0gc2VydmVyXzFbbmFtZV0gfHwge307XHJcbiAgICAgICAgICAgICAgICBvYmpGb3JFYWNoS2V5KHZhbHVlLCBmdW5jdGlvbiAoa2V5LCB2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBzdHJOYW1lICYmIGlzU3RyaW5nKHZhbCkgfHwgaXNOdW1iZXIodmFsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWVba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gbmV3VmFsdWVba2V5XSArIFwiO1wiICsgdmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgfHwgIWlzU3RyaW5nKHZhbCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgc2V0IHRoZSB2YWx1ZSBpZiBpdCBoYXMgYSB2YWx1ZSBhbmQgaXQncyBub3QgYW4gZW1wdHkgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZVtrZXldID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzZXJ2ZXJfMVtuYW1lXSA9IG5ld1ZhbHVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZWYWx1ZShwcm9wcywgc3RyU2VydmVyVGltaW5nLCBzZXJ2ZXJfMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHByb3BzU2V0IHw9IF9zZXRQZXJmVmFsdWUocHJvcHMsIHN0clRyYW5zZmVyU2l6ZSwgcmVzb3VyY2VFbnRyeVtzdHJUcmFuc2ZlclNpemVdKTtcclxuICAgICAgICBwcm9wc1NldCB8PSBfc2V0UGVyZlZhbHVlKHByb3BzLCBzdHJFbmNvZGVkQm9keVNpemUsIHJlc291cmNlRW50cnlbc3RyRW5jb2RlZEJvZHlTaXplXSk7XHJcbiAgICAgICAgcHJvcHNTZXQgfD0gX3NldFBlcmZWYWx1ZShwcm9wcywgc3RyRGVjb2RlZEJvZHlTaXplLCByZXNvdXJjZUVudHJ5W3N0ckRlY29kZWRCb2R5U2l6ZV0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKGFqYXhEYXRhW19EWU5fUEVSRl9NQVJLIC8qIEBtaW46JTJlcGVyZk1hcmsgKi9dKSB7XHJcbiAgICAgICAgICAgIHByb3BzU2V0IHw9IF9zZXRQZXJmVmFsdWUocHJvcHMsIFwibWlzc2luZ1wiLCBhamF4RGF0YS5wZXJmQXR0ZW1wdHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wc1NldCkge1xyXG4gICAgICAgIGRlcGVuZGVuY3lbU1RSX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSA9IHByb3BzO1xyXG4gICAgfVxyXG59XHJcbnZhciBYSFJNb25pdG9yaW5nU3RhdGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBYSFJNb25pdG9yaW5nU3RhdGUoKSB7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIHNlbGZbX0RZTl9PUEVOX0RPTkUgLyogQG1pbjolMmVvcGVuRG9uZSAqL10gPSBmYWxzZTtcclxuICAgICAgICBzZWxmLnNldFJlcXVlc3RIZWFkZXJEb25lID0gZmFsc2U7XHJcbiAgICAgICAgc2VsZltfRFlOX1NFTkRfRE9ORSAvKiBAbWluOiUyZXNlbmREb25lICovXSA9IGZhbHNlO1xyXG4gICAgICAgIHNlbGZbX0RZTl9BQk9SVF9ET05FIC8qIEBtaW46JTJlYWJvcnREb25lICovXSA9IGZhbHNlO1xyXG4gICAgICAgIC8vIDxzdW1tYXJ5PlRydWUsIGlmIG9ucmVhZHlTdGF0ZUNoYW5nZUNhbGxiYWNrIGZ1bmN0aW9uIGF0dGFjaGVkIHRvIHhociwgb3RoZXJ3aXNlIGZhbHNlPC9zdW1tYXJ5PlxyXG4gICAgICAgIHNlbGZbX0RZTl9TVEFURV9DSEFOR0VfQVRUQUNIRTE0IC8qIEBtaW46JTJlc3RhdGVDaGFuZ2VBdHRhY2hlZCAqL10gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBYSFJNb25pdG9yaW5nU3RhdGU7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFhIUk1vbml0b3JpbmdTdGF0ZSB9O1xyXG52YXIgYWpheFJlY29yZCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIGFqYXhSZWNvcmQodHJhY2VJZCwgc3BhbklkLCBsb2dnZXIsIHRyYWNlQ3R4KSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB2YXIgX2xvZ2dlciA9IGxvZ2dlcjtcclxuICAgICAgICB2YXIgc3RyUmVzcG9uc2VUZXh0ID0gXCJyZXNwb25zZVRleHRcIjtcclxuICAgICAgICAvLyBBc3NpZ25pbmcgdGhlIGluaXRpYWwvZGVmYXVsdCB2YWx1ZXMgd2l0aGluIHRoZSBjb25zdHJ1Y3RvciB0byBhdm9pZCB0eXBlc2NyaXB0IGZyb20gY3JlYXRpbmcgYSBidW5jaCBvZlxyXG4gICAgICAgIC8vIHRoaXMuWFhYWCA9IG51bGxcclxuICAgICAgICBzZWxmW19EWU5fUEVSRl9NQVJLIC8qIEBtaW46JTJlcGVyZk1hcmsgKi9dID0gbnVsbDtcclxuICAgICAgICBzZWxmLmNvbXBsZXRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHNlbGYucmVxdWVzdEhlYWRlcnNTaXplID0gbnVsbDtcclxuICAgICAgICBzZWxmW19EWU5fUkVRVUVTVF9IRUFERVJTIC8qIEBtaW46JTJlcmVxdWVzdEhlYWRlcnMgKi9dID0gbnVsbDtcclxuICAgICAgICBzZWxmLnJlc3BvbnNlUmVjZWl2aW5nRHVyYXRpb24gPSBudWxsO1xyXG4gICAgICAgIHNlbGYuY2FsbGJhY2tEdXJhdGlvbiA9IG51bGw7XHJcbiAgICAgICAgc2VsZltfRFlOX0FKQVhfVE9UQUxfRFVSQVRJT04gLyogQG1pbjolMmVhamF4VG90YWxEdXJhdGlvbiAqL10gPSBudWxsO1xyXG4gICAgICAgIHNlbGYuYWJvcnRlZCA9IDA7XHJcbiAgICAgICAgc2VsZi5wYWdlVXJsID0gbnVsbDtcclxuICAgICAgICBzZWxmW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSA9IG51bGw7XHJcbiAgICAgICAgc2VsZi5yZXF1ZXN0U2l6ZSA9IDA7XHJcbiAgICAgICAgc2VsZltfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10gPSBudWxsO1xyXG4gICAgICAgIHNlbGZbX0RZTl9TVEFUVVMgLyogQG1pbjolMmVzdGF0dXMgKi9dID0gbnVsbDtcclxuICAgICAgICBzZWxmW19EWU5fUkVRVUVTVF9TRU5UX1RJTUUgLyogQG1pbjolMmVyZXF1ZXN0U2VudFRpbWUgKi9dID0gbnVsbDtcclxuICAgICAgICBzZWxmLnJlc3BvbnNlU3RhcnRlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgIHNlbGZbX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1IC8qIEBtaW46JTJlcmVzcG9uc2VGaW5pc2hlZFRpbWUgKi9dID0gbnVsbDtcclxuICAgICAgICBzZWxmLmNhbGxiYWNrRmluaXNoZWRUaW1lID0gbnVsbDtcclxuICAgICAgICBzZWxmLmVuZFRpbWUgPSBudWxsO1xyXG4gICAgICAgIHNlbGYueGhyTW9uaXRvcmluZ1N0YXRlID0gbmV3IFhIUk1vbml0b3JpbmdTdGF0ZSgpO1xyXG4gICAgICAgIHNlbGYuY2xpZW50RmFpbHVyZSA9IDA7XHJcbiAgICAgICAgc2VsZltfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL10gPSB0cmFjZUlkO1xyXG4gICAgICAgIHNlbGZbX0RZTl9TUEFOX0lEIC8qIEBtaW46JTJlc3BhbklEICovXSA9IHNwYW5JZDtcclxuICAgICAgICBzZWxmW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSA9IHRyYWNlQ3R4ID09PSBudWxsIHx8IHRyYWNlQ3R4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0cmFjZUN0eC5nZXRUcmFjZUZsYWdzKCk7XHJcbiAgICAgICAgaWYgKHRyYWNlQ3R4KSB7XHJcbiAgICAgICAgICAgIHNlbGZbX0RZTl9FVkVOVF9UUkFDRV9DVFggLyogQG1pbjolMmVldmVudFRyYWNlQ3R4ICovXSA9IChfYSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgX2FbX0RZTl9UUkFDRV9JRDAgLyogQG1pbjp0cmFjZUlkICovXSA9IHRyYWNlQ3R4W19EWU5fR0VUX1RSQUNFX0lEIC8qIEBtaW46JTJlZ2V0VHJhY2VJZCAqL10oKSxcclxuICAgICAgICAgICAgICAgIF9hW19EWU5fU1BBTl9JRDEgLyogQG1pbjpzcGFuSWQgKi9dID0gdHJhY2VDdHguZ2V0U3BhbklkKCksXHJcbiAgICAgICAgICAgICAgICBfYVtfRFlOX1RSQUNFX0ZMQUdTIC8qIEBtaW46dHJhY2VGbGFncyAqL10gPSB0cmFjZUN0eFtfRFlOX0dFVF9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZWdldFRyYWNlRmxhZ3MgKi9dKCksXHJcbiAgICAgICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxmW19EWU5fRVZFTlRfVFJBQ0VfQ1RYIC8qIEBtaW46JTJlZXZlbnRUcmFjZUN0eCAqL10gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkeW5hbWljUHJvdG8oYWpheFJlY29yZCwgc2VsZiwgZnVuY3Rpb24gKHNlbGYpIHtcclxuICAgICAgICAgICAgc2VsZi5nZXRBYnNvbHV0ZVVybCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSA/IHVybEdldEFic29sdXRlVXJsKHNlbGZbX0RZTl9SRVFVRVNUX1VSTCAvKiBAbWluOiUyZXJlcXVlc3RVcmwgKi9dKSA6IG51bGw7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHNlbGYuZ2V0UGF0aE5hbWUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZltfRFlOX1JFUVVFU1RfVVJMIC8qIEBtaW46JTJlcmVxdWVzdFVybCAqL10gPyBkYXRhU2FuaXRpemVVcmwoX2xvZ2dlciwgdXJsR2V0Q29tcGxldGVVcmwoc2VsZltfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10sIHNlbGZbX0RZTl9SRVFVRVNUX1VSTCAvKiBAbWluOiUyZXJlcXVlc3RVcmwgKi9dKSkgOiBudWxsO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWxmW19EWU5fX0NSRUFURV9UUkFDS19JVEVNIC8qIEBtaW46JTJlQ3JlYXRlVHJhY2tJdGVtICovXSA9IGZ1bmN0aW9uIChhamF4VHlwZSwgZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nLCBnZXRSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgICAgICAgICAgLy8gcm91bmQgdG8gMyBkZWNpbWFsIHBvaW50c1xyXG4gICAgICAgICAgICAgICAgc2VsZi5hamF4VG90YWxEdXJhdGlvbiA9IE1hdGgucm91bmQoZGF0ZVRpbWVVdGlsc0R1cmF0aW9uKHNlbGYucmVxdWVzdFNlbnRUaW1lLCBzZWxmLnJlc3BvbnNlRmluaXNoZWRUaW1lKSAqIDEwMDApIC8gMTAwMDtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmW19EWU5fQUpBWF9UT1RBTF9EVVJBVElPTiAvKiBAbWluOiUyZWFqYXhUb3RhbER1cmF0aW9uICovXSA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBkZXBlbmRlbmN5ID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJ8XCIgKyBzZWxmW19EWU5fVFJBQ0VfSUQgLyogQG1pbjolMmV0cmFjZUlEICovXSArIFwiLlwiICsgc2VsZltfRFlOX1NQQU5fSUQgLyogQG1pbjolMmVzcGFuSUQgKi9dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHNlbGZbX0RZTl9HRVRfQUJTT0xVVEVfVVJMIC8qIEBtaW46JTJlZ2V0QWJzb2x1dGVVcmwgKi9dKClcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF9hW19EWU5fTkFNRSAvKiBAbWluOm5hbWUgKi9dID0gc2VsZi5nZXRQYXRoTmFtZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hLnR5cGUgPSBhamF4VHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX1NUQVJUX1RJTUUgLyogQG1pbjpzdGFydFRpbWUgKi9dID0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBfYS5kdXJhdGlvbiA9IHNlbGZbX0RZTl9BSkFYX1RPVEFMX0RVUkFUSU9OIC8qIEBtaW46JTJlYWpheFRvdGFsRHVyYXRpb24gKi9dLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hLnN1Y2Nlc3MgPSAoKyhzZWxmW19EWU5fU1RBVFVTIC8qIEBtaW46JTJlc3RhdHVzICovXSkpID49IDIwMCAmJiAoKyhzZWxmW19EWU5fU1RBVFVTIC8qIEBtaW46JTJlc3RhdHVzICovXSkpIDwgNDAwLFxyXG4gICAgICAgICAgICAgICAgICAgIF9hLnJlc3BvbnNlQ29kZSA9ICgrKHNlbGZbX0RZTl9TVEFUVVMgLyogQG1pbjolMmVzdGF0dXMgKi9dKSksXHJcbiAgICAgICAgICAgICAgICAgICAgX2EubWV0aG9kID0gc2VsZltfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgX2FbU1RSX1BST1BFUlRJRVNdID0geyBIdHRwTWV0aG9kOiBzZWxmW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF9hKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmW19EWU5fUkVRVUVTVF9TRU5UX1RJTUUgLyogQG1pbjolMmVyZXF1ZXN0U2VudFRpbWUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBjb3JyZWN0IGRlcGVuZGVuY3kgc3RhcnQgdGltZVxyXG4gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3lbX0RZTl9TVEFSVF9USU1FIC8qIEBtaW46JTJlc3RhcnRUaW1lICovXSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeVtfRFlOX1NUQVJUX1RJTUUgLyogQG1pbjolMmVzdGFydFRpbWUgKi9dLnNldFRpbWUoc2VsZltfRFlOX1JFUVVFU1RfU0VOVF9USU1FIC8qIEBtaW46JTJlcmVxdWVzdFNlbnRUaW1lICovXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgQWpheCBwZXJmIGRldGFpbHMgaWYgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgICAgICBfcG9wdWxhdGVQZXJmRGF0YShzZWxmLCBkZXBlbmRlbmN5KTtcclxuICAgICAgICAgICAgICAgIGlmIChlbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob2JqS2V5cyhzZWxmLnJlcXVlc3RIZWFkZXJzKVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IGRlcGVuZGVuY3lbU1RSX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSA9IGRlcGVuZGVuY3lbU1RSX1BST1BFUlRJRVMgLyogQG1pbjolMmVwcm9wZXJ0aWVzICovXSB8fCB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHNbX0RZTl9SRVFVRVNUX0hFQURFUlMgLyogQG1pbjolMmVyZXF1ZXN0SGVhZGVycyAqL10gPSBzZWxmW19EWU5fUkVRVUVTVF9IRUFERVJTIC8qIEBtaW46JTJlcmVxdWVzdEhlYWRlcnMgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChnZXRSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSA9IGdldFJlc3BvbnNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVucmljaCBkZXBlbmRlbmN5IHRhcmdldCB3aXRoIGNvcnJlbGF0aW9uIGNvbnRleHQgZnJvbSB0aGUgc2VydmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3JyZWxhdGlvbkNvbnRleHQgPSByZXNwb25zZVtfRFlOX0NPUlJFTEFUSU9OX0NPTlRFWFQgLyogQG1pbjolMmVjb3JyZWxhdGlvbkNvbnRleHQgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29ycmVsYXRpb25Db250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5LmNvcnJlbGF0aW9uQ29udGV4dCA9IC8qIGRlcGVuZGVuY3kudGFyZ2V0ICsgXCIgfCBcIiArICovIGNvcnJlbGF0aW9uQ29udGV4dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VbX0RZTl9IRUFERVJfTUFQIC8qIEBtaW46JTJlaGVhZGVyTWFwICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iaktleXMocmVzcG9uc2UuaGVhZGVyTWFwKVtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BzID0gZGVwZW5kZW5jeVtTVFJfUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dID0gZGVwZW5kZW5jeVtTVFJfUFJPUEVSVElFUyAvKiBAbWluOiUyZXByb3BlcnRpZXMgKi9dIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlW19EWU5fSEVBREVSX01BUCAvKiBAbWluOiUyZWhlYWRlck1hcCAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZXJyb3JTdGF0dXNUZXh0ICYmIHNlbGZbX0RZTl9TVEFUVVMgLyogQG1pbjolMmVzdGF0dXMgKi9dID49IDQwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSBkZXBlbmRlbmN5W1NUUl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gPSBkZXBlbmRlbmN5W1NUUl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSBcIlwiIHx8IHJlc3BvbnNlVHlwZSA9PT0gXCJ0ZXh0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZXNwb25zZVRleHQgPSByZXNwb25zZS5yZXNwb25zZVRleHQgPyByZXNwb25zZVtfRFlOX1NUQVRVU19URVhUIC8qIEBtaW46JTJlc3RhdHVzVGV4dCAqL10gKyBcIiAtIFwiICsgcmVzcG9uc2Vbc3RyUmVzcG9uc2VUZXh0XSA6IHJlc3BvbnNlW19EWU5fU1RBVFVTX1RFWFQgLyogQG1pbjolMmVzdGF0dXNUZXh0ICovXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09IFwianNvblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVzcG9uc2VUZXh0ID0gcmVzcG9uc2UucmVzcG9uc2UgPyByZXNwb25zZVtfRFlOX1NUQVRVU19URVhUIC8qIEBtaW46JTJlc3RhdHVzVGV4dCAqL10gKyBcIiAtIFwiICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2VbX0RZTl9SRVNQT05TRSAvKiBAbWluOiUyZXJlc3BvbnNlICovXSkgOiByZXNwb25zZVtfRFlOX1NUQVRVU19URVhUIC8qIEBtaW46JTJlc3RhdHVzVGV4dCAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVwZW5kZW5jeTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgc2VsZltfRFlOX0dFVF9QQVJUX0FQUk9QUyAvKiBAbWluOiUyZWdldFBhcnRBUHJvcHMgKi9dID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhcnRBID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHZhciB0cmFjZUN0eCA9IHNlbGZbX0RZTl9FVkVOVF9UUkFDRV9DVFggLyogQG1pbjolMmVldmVudFRyYWNlQ3R4ICovXTtcclxuICAgICAgICAgICAgICAgIGlmICh0cmFjZUN0eCAmJiAodHJhY2VDdHhbX0RZTl9UUkFDRV9JRDAgLyogQG1pbjolMmV0cmFjZUlkICovXSB8fCB0cmFjZUN0eFtfRFlOX1NQQU5fSUQxIC8qIEBtaW46JTJlc3BhbklkICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBwYXJ0QSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFjZUV4dCA9IHBhcnRBW0V4dGVuc2lvbnMuVHJhY2VFeHRdID0gKF9hID0ge30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hW19EWU5fVFJBQ0VfSUQgLyogQG1pbjp0cmFjZUlEICovXSA9IHRyYWNlQ3R4W19EWU5fVFJBQ0VfSUQwIC8qIEBtaW46JTJldHJhY2VJZCAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnBhcmVudElEID0gdHJhY2VDdHhbX0RZTl9TUEFOX0lEMSAvKiBAbWluOiUyZXNwYW5JZCAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRyYWNlQ3R4W19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VFeHRbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dID0gdHJhY2VDdHhbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0QTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBhamF4UmVjb3JkLnByb3RvdHlwZS5nZXRBYnNvbHV0ZVVybC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBhamF4UmVjb3JkLnByb3RvdHlwZS5nZXRQYXRoTmFtZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBhamF4UmVjb3JkLnByb3RvdHlwZS5DcmVhdGVUcmFja0l0ZW0uXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgYWpheFJlY29yZC5wcm90b3R5cGUuZ2V0UGFydEFQcm9wcy5cclxuICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBJRTggYnVnIHdoZW4gdXNpbmcgZHluYW1pY1Byb3RvKCkgd2l0aCBjbGFzc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhbnlcbiAgICAvLyBub24tZHluYW1pYyBmdW5jdGlvbnMgb3Igc3RhdGljIHByb3BlcnRpZXMvZnVuY3Rpb25zIHdoZW4gdXNpbmcgdWdsaWZ5LWpzIHRvIG1pbmlmeSB0aGUgcmVzdWx0aW5nIGNvZGUuXG4gICAgLy8gdGhpcyB3aWxsIGJlIHJlbW92ZWQgd2hlbiBFUzMgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgIGFqYXhSZWNvcmQuX19pZUR5bj0xO1xuXG4gICAgcmV0dXJuIGFqYXhSZWNvcmQ7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IGFqYXhSZWNvcmQgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWpheFJlY29yZC5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBEZXBlbmRlbmNpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBfX2Fzc2lnbkZuIGFzIF9fYXNzaWduLCBfX2V4dGVuZHNGbiBhcyBfX2V4dGVuZHMgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXNoaW1zXCI7XHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IENvcnJlbGF0aW9uSWRIZWxwZXIsIERpc2FibGVkUHJvcGVydHlOYW1lLCBQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllciwgUmVtb3RlRGVwZW5kZW5jeURhdGEsIFJlcXVlc3RIZWFkZXJzLCBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dEZyb21UcmFjZSwgY3JlYXRlVGVsZW1ldHJ5SXRlbSwgY3JlYXRlVHJhY2VQYXJlbnQsIGRhdGVUaW1lVXRpbHNOb3csIGZvcm1hdFRyYWNlUGFyZW50LCBpc0ludGVybmFsQXBwbGljYXRpb25JbnNpZ2h0c0VuZHBvaW50IH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb25cIjtcclxuaW1wb3J0IHsgQmFzZVRlbGVtZXRyeVBsdWdpbiwgSW5zdHJ1bWVudEZ1bmMsIEluc3RydW1lbnRQcm90bywgX3Rocm93SW50ZXJuYWwsIGFyckZvckVhY2gsIGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0LCBjcmVhdGVVbmlxdWVOYW1lc3BhY2UsIGRlZXBGcmVlemUsIGR1bXBPYmosIGV2ZW50T24sIGdlbmVyYXRlVzNDSWQsIGdldEV4Y2VwdGlvbk5hbWUsIGdldEdsb2JhbCwgZ2V0SUVWZXJzaW9uLCBnZXRMb2NhdGlvbiwgZ2V0UGVyZm9ybWFuY2UsIGlzRnVuY3Rpb24sIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1N0cmluZywgaXNYaHJTdXBwb3J0ZWQsIG1lcmdlRXZ0TmFtZXNwYWNlLCBvYmpGb3JFYWNoS2V5LCBzdHJQcm90b3R5cGUsIHN0clRyaW0gfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgU1RSX1BST1BFUlRJRVMgfSBmcm9tIFwiLi9JbnRlcm5hbENvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBfRFlOX0FCT1JUX0RPTkUsIF9EWU5fQUREX1JFUVVFU1RfQ09OVEVYVCwgX0RZTl9BSkFYX0RJQUdOT1NUSUNTX01FUzE5LCBfRFlOX0FKQVhfUEVSRl9MT09LVVBfREVMMTgsIF9EWU5fQVBQX0lELCBfRFlOX0NBTl9JTkNMVURFX0NPUlJFTEFUMywgX0RZTl9DT05URVhULCBfRFlOX0NPUkUsIF9EWU5fQ09SUkVMQVRJT05fQ09OVEVYVCwgX0RZTl9ESVNBQkxFX0FKQVhfVFJBQ0tJTjEyLCBfRFlOX0RJU0FCTEVfRkVUQ0hfVFJBQ0tJMTMsIF9EWU5fRElTVFJJQlVURURfVFJBQ0lOR181LCBfRFlOX0VOQUJMRV9BSkFYX0VSUk9SX1NUNywgX0RZTl9FTkFCTEVfQUpBWF9QRVJGX1RSQTgsIF9EWU5fRU5BQkxFX1JFUVVFU1RfSEVBREU2LCBfRFlOX0VOQUJMRV9SRVNQT05TRV9IRUFEMTAsIF9EWU5fRVJST1JfU1RBVFVTX1RFWFQsIF9EWU5fRVhDTFVERV9SRVFVRVNUX0ZST00xMSwgX0RZTl9HRVRfQUJTT0xVVEVfVVJMLCBfRFlOX0dFVF9BTExfUkVTUE9OU0VfSEVBMTYsIF9EWU5fR0VUX0NPUlJFTEFUSU9OX0NPTlQxNywgX0RZTl9HRVRfUEFSVF9BUFJPUFMsIF9EWU5fR0VUX1RSQUNFX0ZMQUdTLCBfRFlOX0dFVF9UUkFDRV9JRCwgX0RZTl9IRUFERVJTLCBfRFlOX0hFQURFUl9NQVAsIF9EWU5fSU5DTFVERV9DT1JSRUxBVElPTl8yLCBfRFlOX0lOU1QsIF9EWU5fTEVOR1RILCBfRFlOX01BWF9BSkFYX0NBTExTX1BFUl9WOSwgX0RZTl9NRVRIT0QsIF9EWU5fTkFNRSwgX0RZTl9PUEVOX0RPTkUsIF9EWU5fUEVSRl9NQVJLLCBfRFlOX1BFUkZfVElNSU5HLCBfRFlOX1JFUVVFU1RfSEVBREVSUywgX0RZTl9SRVFVRVNUX1NFTlRfVElNRSwgX0RZTl9SRVFVRVNUX1VSTCwgX0RZTl9SRVNQT05TRSwgX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1LCBfRFlOX1JFU1BPTlNFX1RFWFQsIF9EWU5fU0VORF9ET05FLCBfRFlOX1NFVF9SRVFVRVNUX0hFQURFUiwgX0RZTl9TUEFOX0lELCBfRFlOX1NQQU5fSUQxLCBfRFlOX1NUQVJUX1RJTUUsIF9EWU5fU1RBVEVfQ0hBTkdFX0FUVEFDSEUxNCwgX0RZTl9TVEFUVVMsIF9EWU5fU1RBVFVTX1RFWFQsIF9EWU5fVE9fTE9XRVJfQ0FTRSwgX0RZTl9UUkFDRV9GTEFHUywgX0RZTl9UUkFDRV9JRCwgX0RZTl9UUkFDRV9JRDAsIF9EWU5fVFJBQ0tfREVQRU5ERU5DWV9EQVQ0LCBfRFlOX19DUkVBVEVfVFJBQ0tfSVRFTSB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBhamF4UmVjb3JkIH0gZnJvbSBcIi4vYWpheFJlY29yZFwiO1xyXG52YXIgQUpBWF9NT05JVE9SX1BSRUZJWCA9IFwiYWkuYWp4bW4uXCI7XHJcbnZhciBzdHJEaWFnTG9nID0gXCJkaWFnTG9nXCI7XHJcbnZhciBzdHJBamF4RGF0YSA9IFwiYWpheERhdGFcIjtcclxudmFyIHN0ckZldGNoID0gXCJmZXRjaFwiO1xyXG52YXIgRVJST1JfSEVBREVSID0gXCJGYWlsZWQgdG8gbW9uaXRvciBYTUxIdHRwUmVxdWVzdFwiO1xyXG52YXIgRVJST1JfUFJFRklYID0gXCIsIG1vbml0b3JpbmcgZGF0YSBmb3IgdGhpcyBhamF4IGNhbGwgXCI7XHJcbnZhciBFUlJPUl9QT1NURklYID0gRVJST1JfUFJFRklYICsgXCJtYXkgYmUgaW5jb3JyZWN0LlwiO1xyXG52YXIgRVJST1JfTk9UX1NFTlQgPSBFUlJPUl9QUkVGSVggKyBcIndvbid0IGJlIHNlbnQuXCI7XHJcbnZhciBDT1JSRUxBVElPTl9IRUFERVJfRVJST1IgPSBcIkZhaWxlZCB0byBnZXQgUmVxdWVzdC1Db250ZXh0IGNvcnJlbGF0aW9uIGhlYWRlciBhcyBpdCBtYXkgYmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSBvciBub3QgYWNjZXNzaWJsZS5cIjtcclxudmFyIENVU1RPTV9SRVFVRVNUX0NPTlRFWFRfRVJST1IgPSBcIkZhaWxlZCB0byBhZGQgY3VzdG9tIGRlZmluZWQgcmVxdWVzdCBjb250ZXh0IGFzIGNvbmZpZ3VyZWQgY2FsbCBiYWNrIG1heSBtaXNzaW5nIGEgbnVsbCBjaGVjay5cIjtcclxudmFyIEZBSUxFRF9UT19DQUxDVUxBVEVfRFVSQVRJT05fRVJST1IgPSBcIkZhaWxlZCB0byBjYWxjdWxhdGUgdGhlIGR1cmF0aW9uIG9mIHRoZSBcIjtcclxuLy8gVXNpbmcgYSBnbG9iYWwgdmFsdWUgc28gdGhhdCB0byBoYW5kbGUgc2FtZSBpS2V5IHdpdGggbXVsdGlwbGUgYXBwIGluc2lnaHRzIGluc3RhbmNlcyAobW9zdGx5IGZvciB0ZXN0aW5nKVxyXG52YXIgX21hcmtDb3VudCA9IDA7XHJcbi8qKiBASWdub3JlICovXHJcbmZ1bmN0aW9uIF9zdXBwb3J0c0ZldGNoKCkge1xyXG4gICAgdmFyIF9nbG9iYWwgPSBnZXRHbG9iYWwoKTtcclxuICAgIGlmICghX2dsb2JhbCB8fFxyXG4gICAgICAgIGlzTnVsbE9yVW5kZWZpbmVkKF9nbG9iYWwuUmVxdWVzdCkgfHxcclxuICAgICAgICBpc051bGxPclVuZGVmaW5lZChfZ2xvYmFsLlJlcXVlc3Rbc3RyUHJvdG90eXBlXSkgfHxcclxuICAgICAgICBpc051bGxPclVuZGVmaW5lZChfZ2xvYmFsW3N0ckZldGNoXSkpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiBfZ2xvYmFsW3N0ckZldGNoXTtcclxufVxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGFqYXggbW9uaXRvcmluZyBjYW4gYmUgZW5hYmxlZCBvbiB0aGlzIGRvY3VtZW50XHJcbiAqIEByZXR1cm5zIFRydWUgaWYgQWpheCBtb25pdG9yaW5nIGlzIHN1cHBvcnRlZCBvbiB0aGlzIHBhZ2UsIG90aGVyd2lzZSBmYWxzZVxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5mdW5jdGlvbiBfc3VwcG9ydHNBamF4TW9uaXRvcmluZyhhamF4TW9uaXRvckluc3RhbmNlKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBpZiAoaXNYaHJTdXBwb3J0ZWQoKSkge1xyXG4gICAgICAgIHZhciBwcm90byA9IFhNTEh0dHBSZXF1ZXN0W3N0clByb3RvdHlwZV07XHJcbiAgICAgICAgcmVzdWx0ID0gIWlzTnVsbE9yVW5kZWZpbmVkKHByb3RvKSAmJlxyXG4gICAgICAgICAgICAhaXNOdWxsT3JVbmRlZmluZWQocHJvdG8ub3BlbikgJiYgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzZWN1cml0eS9kZXRlY3Qtbm9uLWxpdGVyYWwtZnMtZmlsZW5hbWUgLS0gZmFsc2UgcG9zaXRpdmVcclxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKHByb3RvLnNlbmQpICYmXHJcbiAgICAgICAgICAgICFpc051bGxPclVuZGVmaW5lZChwcm90by5hYm9ydCk7XHJcbiAgICB9XHJcbiAgICB2YXIgaWVWZXIgPSBnZXRJRVZlcnNpb24oKTtcclxuICAgIGlmIChpZVZlciAmJiBpZVZlciA8IDkpIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAvLyBEaXNhYmxlIGlmIHRoZSBYbWxIdHRwUmVxdWVzdCBjYW4ndCBiZSBleHRlbmRlZCBvciBob29rZWRcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgICAgICAgIHhocltzdHJBamF4RGF0YV0gPSB7fTtcclxuICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gdXBkYXRlIHRoZSBwcm90b3R5cGVcclxuICAgICAgICAgICAgdmFyIHRoZU9wZW4gPSBYTUxIdHRwUmVxdWVzdFtzdHJQcm90b3R5cGVdLm9wZW47XHJcbiAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0W3N0clByb3RvdHlwZV0ub3BlbiA9IHRoZU9wZW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIFdlIGNhbid0IGRlY29yYXRlIHRoZSB4aHIgb2JqZWN0IHNvIGRpc2FibGUgbW9uaXRvcmluZ1xyXG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgX3Rocm93SW50ZXJuYWxDcml0aWNhbChhamF4TW9uaXRvckluc3RhbmNlLCAxNSAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZE1vbml0b3JBamF4T3BlbiAqLywgXCJGYWlsZWQgdG8gZW5hYmxlIFhNTEh0dHBSZXF1ZXN0IG1vbml0b3JpbmcsIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkXCIsIHtcclxuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbjogZHVtcE9iaihlKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcbi8qKiBASWdub3JlICovXHJcbmZ1bmN0aW9uIF9nZXRGYWlsZWRBamF4RGlhZ25vc3RpY3NNZXNzYWdlKHhocikge1xyXG4gICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlmICh4aHIgJiYgeGhyW3N0ckFqYXhEYXRhXSAmJiB4aHJbc3RyQWpheERhdGFdW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSkge1xyXG4gICAgICAgICAgICByZXN1bHQgKz0gXCIodXJsOiAnXCIgKyB4aHJbc3RyQWpheERhdGFdW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSArIFwiJylcIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4vKiogQGlnbm9yZSAqL1xyXG5mdW5jdGlvbiBfdGhyb3dJbnRlcm5hbENyaXRpY2FsKGFqYXhNb25pdG9ySW5zdGFuY2UsIG1zZ0lkLCBtZXNzYWdlLCBwcm9wZXJ0aWVzLCBpc1VzZXJBY3QpIHtcclxuICAgIF90aHJvd0ludGVybmFsKGFqYXhNb25pdG9ySW5zdGFuY2Vbc3RyRGlhZ0xvZ10oKSwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCBtc2dJZCwgbWVzc2FnZSwgcHJvcGVydGllcywgaXNVc2VyQWN0KTtcclxufVxyXG4vKiogQGlnbm9yZSAqL1xyXG5mdW5jdGlvbiBfdGhyb3dJbnRlcm5hbFdhcm5pbmcoYWpheE1vbml0b3JJbnN0YW5jZSwgbXNnSWQsIG1lc3NhZ2UsIHByb3BlcnRpZXMsIGlzVXNlckFjdCkge1xyXG4gICAgX3Rocm93SW50ZXJuYWwoYWpheE1vbml0b3JJbnN0YW5jZVtzdHJEaWFnTG9nXSgpLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgbXNnSWQsIG1lc3NhZ2UsIHByb3BlcnRpZXMsIGlzVXNlckFjdCk7XHJcbn1cclxuLyoqIEBJZ25vcmUgKi9cclxuZnVuY3Rpb24gX2NyZWF0ZUVycm9yQ2FsbGJhY2tGdW5jKGFqYXhNb25pdG9ySW5zdGFuY2UsIGludGVybmFsTWVzc2FnZSwgbWVzc2FnZSkge1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcclxuICAgICAgICBfdGhyb3dJbnRlcm5hbENyaXRpY2FsKGFqYXhNb25pdG9ySW5zdGFuY2UsIGludGVybmFsTWVzc2FnZSwgbWVzc2FnZSwge1xyXG4gICAgICAgICAgICBhamF4RGlhZ25vc3RpY3NNZXNzYWdlOiBfZ2V0RmFpbGVkQWpheERpYWdub3N0aWNzTWVzc2FnZShhcmdzW19EWU5fSU5TVCAvKiBAbWluOiUyZWluc3QgKi9dKSxcclxuICAgICAgICAgICAgZXhjZXB0aW9uOiBkdW1wT2JqKGFyZ3MuZXJyKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBfaW5kZXhPZih2YWx1ZSwgbWF0Y2gpIHtcclxuICAgIGlmICh2YWx1ZSAmJiBtYXRjaCkge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKG1hdGNoKTtcclxuICAgIH1cclxuICAgIHJldHVybiAtMTtcclxufVxyXG5mdW5jdGlvbiBfYWRkSGFuZGxlcihjb250YWluZXIsIGlkLCB0aGVGdW5jKSB7XHJcbiAgICB2YXIgdGhlSGFuZGxlciA9IHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgZm46IHRoZUZ1bmNcclxuICAgIH07XHJcbiAgICBjb250YWluZXIucHVzaCh0aGVIYW5kbGVyKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGFyckZvckVhY2goY29udGFpbmVyLCBmdW5jdGlvbiAoaW5pdGlhbGl6ZXIsIGlkeCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxpemVyLmlkID09PSB0aGVIYW5kbGVyLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiBfcHJvY2Vzc0RlcGVuZGVuY3lDb250YWluZXIoY29yZSwgY29udGFpbmVyLCBkZXRhaWxzLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcclxuICAgIGFyckZvckVhY2goY29udGFpbmVyLCBmdW5jdGlvbiAodGhlRnVuYywgaWR4KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHRoZUZ1bmMuZm4uY2FsbChudWxsLCBkZXRhaWxzKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIF90aHJvd0ludGVybmFsKGNvcmUgJiYgY29yZS5sb2dnZXIsIDEgLyogZUxvZ2dpbmdTZXZlcml0eS5DUklUSUNBTCAqLywgNjQgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5UZWxlbWV0cnlJbml0aWFsaXplckZhaWxlZCAqLywgXCJEZXBlbmRlbmN5IFwiICsgbWVzc2FnZSArIFwiIFsjXCIgKyBpZHggKyBcIl0gZmFpbGVkOiBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5mdW5jdGlvbiBfcHJvY2Vzc0RlcGVuZGVuY3lMaXN0ZW5lcnMobGlzdGVuZXJzLCBjb3JlLCBhamF4RGF0YSwgeGhyLCBpbnB1dCwgaW5pdCkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgdmFyIGluaXRpYWxpemVyc0NvdW50ID0gbGlzdGVuZXJzW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXTtcclxuICAgIGlmIChpbml0aWFsaXplcnNDb3VudCA+IDApIHtcclxuICAgICAgICB2YXIgZGV0YWlscyA9IChfYSA9IHt9LFxyXG4gICAgICAgICAgICBfYVtfRFlOX0NPUkUgLyogQG1pbjpjb3JlICovXSA9IGNvcmUsXHJcbiAgICAgICAgICAgIF9hLnhociA9IHhocixcclxuICAgICAgICAgICAgX2EuaW5wdXQgPSBpbnB1dCxcclxuICAgICAgICAgICAgX2EuaW5pdCA9IGluaXQsXHJcbiAgICAgICAgICAgIF9hLnRyYWNlSWQgPSBhamF4RGF0YVtfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL10sXHJcbiAgICAgICAgICAgIF9hLnNwYW5JZCA9IGFqYXhEYXRhW19EWU5fU1BBTl9JRCAvKiBAbWluOiUyZXNwYW5JRCAqL10sXHJcbiAgICAgICAgICAgIF9hLnRyYWNlRmxhZ3MgPSBhamF4RGF0YVtfRFlOX1RSQUNFX0ZMQUdTIC8qIEBtaW46JTJldHJhY2VGbGFncyAqL10sXHJcbiAgICAgICAgICAgIF9hLmNvbnRleHQgPSBhamF4RGF0YVtfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXSB8fCB7fSxcclxuICAgICAgICAgICAgX2EpO1xyXG4gICAgICAgIF9wcm9jZXNzRGVwZW5kZW5jeUNvbnRhaW5lcihjb3JlLCBsaXN0ZW5lcnMsIGRldGFpbHMsIFwibGlzdGVuZXJcIik7XHJcbiAgICAgICAgYWpheERhdGFbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSUQgKi9dID0gZGV0YWlsc1tfRFlOX1RSQUNFX0lEMCAvKiBAbWluOiUyZXRyYWNlSWQgKi9dO1xyXG4gICAgICAgIGFqYXhEYXRhW19EWU5fU1BBTl9JRCAvKiBAbWluOiUyZXNwYW5JRCAqL10gPSBkZXRhaWxzW19EWU5fU1BBTl9JRDEgLyogQG1pbjolMmVzcGFuSWQgKi9dO1xyXG4gICAgICAgIGFqYXhEYXRhW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXSA9IGRldGFpbHNbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dO1xyXG4gICAgICAgIGFqYXhEYXRhW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dID0gZGV0YWlsc1tfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXTtcclxuICAgIH1cclxufVxyXG52YXIgQkxPQl9DT1JFID0gXCIqLmJsb2IuY29yZS5cIjtcclxuZXhwb3J0IHZhciBEZmx0QWpheENvcnJlbGF0aW9uSGVhZGVyRXhEb21haW5zID0gZGVlcEZyZWV6ZShbXHJcbiAgICBCTE9CX0NPUkUgKyBcIndpbmRvd3MubmV0XCIsXHJcbiAgICBCTE9CX0NPUkUgKyBcImNoaW5hY2xvdWRhcGkuY25cIixcclxuICAgIEJMT0JfQ09SRSArIFwiY2xvdWRhcGkuZGVcIixcclxuICAgIEJMT0JfQ09SRSArIFwidXNnb3ZjbG91ZGFwaS5uZXRcIlxyXG5dKTtcclxudmFyIF9pbnRlcm5hbEV4Y2x1ZGVFbmRwb2ludHMgPSBbXHJcbiAgICAvaHR0cHM6XFwvXFwvW15cXC9dKihcXC5waXBlXFwuYXJpYXxhcmlhXFwucGlwZXxldmVudHNcXC5kYXRhfGNvbGxlY3RvclxcLmF6dXJlKVxcLlteXFwvXStcXC8oT25lQ29sbGVjdG9yXFwvMXxDb2xsZWN0b3JcXC8zKVxcLjAvaVxyXG5dO1xyXG5mdW5jdGlvbiBfZ2V0RGVmYXVsdENvbmZpZygpIHtcclxuICAgIHZhciBfYTtcclxuICAgIHZhciBjb25maWcgPSAoX2EgPSB7fSxcclxuICAgICAgICBfYVtfRFlOX01BWF9BSkFYX0NBTExTX1BFUl9WOSAvKiBAbWluOm1heEFqYXhDYWxsc1BlclZpZXcgKi9dID0gNTAwLFxyXG4gICAgICAgIF9hW19EWU5fRElTQUJMRV9BSkFYX1RSQUNLSU4xMiAvKiBAbWluOmRpc2FibGVBamF4VHJhY2tpbmcgKi9dID0gZmFsc2UsXHJcbiAgICAgICAgX2FbX0RZTl9ESVNBQkxFX0ZFVENIX1RSQUNLSTEzIC8qIEBtaW46ZGlzYWJsZUZldGNoVHJhY2tpbmcgKi9dID0gZmFsc2UsXHJcbiAgICAgICAgX2FbX0RZTl9FWENMVURFX1JFUVVFU1RfRlJPTTExIC8qIEBtaW46ZXhjbHVkZVJlcXVlc3RGcm9tQXV0b1RyYWNraW5nUGF0dGVybnMgKi9dID0gdW5kZWZpbmVkLFxyXG4gICAgICAgIF9hLmRpc2FibGVDb3JyZWxhdGlvbkhlYWRlcnMgPSBmYWxzZSxcclxuICAgICAgICBfYS5kaXN0cmlidXRlZFRyYWNpbmdNb2RlID0gMSAvKiBlRGlzdHJpYnV0ZWRUcmFjaW5nTW9kZXMuQUlfQU5EX1czQyAqLyxcclxuICAgICAgICBfYS5jb3JyZWxhdGlvbkhlYWRlckV4Y2x1ZGVkRG9tYWlucyA9IERmbHRBamF4Q29ycmVsYXRpb25IZWFkZXJFeERvbWFpbnMsXHJcbiAgICAgICAgX2EuY29ycmVsYXRpb25IZWFkZXJEb21haW5zID0gdW5kZWZpbmVkLFxyXG4gICAgICAgIF9hLmNvcnJlbGF0aW9uSGVhZGVyRXhjbHVkZVBhdHRlcm5zID0gdW5kZWZpbmVkLFxyXG4gICAgICAgIF9hW19EWU5fQVBQX0lEIC8qIEBtaW46YXBwSWQgKi9dID0gdW5kZWZpbmVkLFxyXG4gICAgICAgIF9hLmVuYWJsZUNvcnNDb3JyZWxhdGlvbiA9IGZhbHNlLFxyXG4gICAgICAgIF9hW19EWU5fRU5BQkxFX1JFUVVFU1RfSEVBREU2IC8qIEBtaW46ZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nICovXSA9IGZhbHNlLFxyXG4gICAgICAgIF9hW19EWU5fRU5BQkxFX1JFU1BPTlNFX0hFQUQxMCAvKiBAbWluOmVuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmcgKi9dID0gZmFsc2UsXHJcbiAgICAgICAgX2FbX0RZTl9FTkFCTEVfQUpBWF9FUlJPUl9TVDcgLyogQG1pbjplbmFibGVBamF4RXJyb3JTdGF0dXNUZXh0ICovXSA9IGZhbHNlLFxyXG4gICAgICAgIF9hW19EWU5fRU5BQkxFX0FKQVhfUEVSRl9UUkE4IC8qIEBtaW46ZW5hYmxlQWpheFBlcmZUcmFja2luZyAqL10gPSBmYWxzZSxcclxuICAgICAgICBfYS5tYXhBamF4UGVyZkxvb2t1cEF0dGVtcHRzID0gMyxcclxuICAgICAgICBfYVtfRFlOX0FKQVhfUEVSRl9MT09LVVBfREVMMTggLyogQG1pbjphamF4UGVyZkxvb2t1cERlbGF5ICovXSA9IDI1LFxyXG4gICAgICAgIF9hLmlnbm9yZUhlYWRlcnMgPSBbXHJcbiAgICAgICAgICAgIFwiQXV0aG9yaXphdGlvblwiLFxyXG4gICAgICAgICAgICBcIlgtQVBJLUtleVwiLFxyXG4gICAgICAgICAgICBcIldXVy1BdXRoZW50aWNhdGVcIlxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgX2FbX0RZTl9BRERfUkVRVUVTVF9DT05URVhUIC8qIEBtaW46YWRkUmVxdWVzdENvbnRleHQgKi9dID0gdW5kZWZpbmVkLFxyXG4gICAgICAgIF9hLmFkZEludEVuZHBvaW50cyA9IHRydWUsXHJcbiAgICAgICAgX2EpO1xyXG4gICAgcmV0dXJuIGNvbmZpZztcclxufVxyXG5mdW5jdGlvbiBfZ2V0RW1wdHlDb25maWcoKSB7XHJcbiAgICB2YXIgZW1wdHlDb25maWcgPSBfZ2V0RGVmYXVsdENvbmZpZygpO1xyXG4gICAgb2JqRm9yRWFjaEtleShlbXB0eUNvbmZpZywgZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICAgICAgZW1wdHlDb25maWdbdmFsdWVdID0gdW5kZWZpbmVkO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZW1wdHlDb25maWc7XHJcbn1cclxudmFyIEFqYXhNb25pdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKEFqYXhNb25pdG9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gQWpheE1vbml0b3IoKSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcclxuICAgICAgICBfdGhpcy5pZGVudGlmaWVyID0gQWpheE1vbml0b3IuaWRlbnRpZmllcjtcclxuICAgICAgICBfdGhpcy5wcmlvcml0eSA9IDEyMDtcclxuICAgICAgICB2YXIgX2ZldGNoSW5pdGlhbGl6ZWQ7IC8vIGZldGNoIG1vbml0b3JpbmcgaW5pdGlhbGl6ZWRcclxuICAgICAgICB2YXIgX3hockluaXRpYWxpemVkOyAvLyBYSFIgbW9uaXRvcmluZyBpbml0aWFsaXplZFxyXG4gICAgICAgIHZhciBfY3VycmVudFdpbmRvd0hvc3Q7XHJcbiAgICAgICAgdmFyIF9jb25maWc7XHJcbiAgICAgICAgdmFyIF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmc7XHJcbiAgICAgICAgdmFyIF9lbmFibGVBamF4RXJyb3JTdGF0dXNUZXh0O1xyXG4gICAgICAgIHZhciBfdHJhY2tBamF4QXR0ZW1wdHM7XHJcbiAgICAgICAgdmFyIF9jb250ZXh0O1xyXG4gICAgICAgIHZhciBfaXNVc2luZ1czQ0hlYWRlcnM7XHJcbiAgICAgICAgdmFyIF9pc1VzaW5nQUlIZWFkZXJzO1xyXG4gICAgICAgIHZhciBfbWFya1ByZWZpeDtcclxuICAgICAgICB2YXIgX2VuYWJsZUFqYXhQZXJmVHJhY2tpbmc7XHJcbiAgICAgICAgdmFyIF9tYXhBamF4Q2FsbHNQZXJWaWV3O1xyXG4gICAgICAgIHZhciBfZW5hYmxlUmVzcG9uc2VIZWFkZXJUcmFja2luZztcclxuICAgICAgICB2YXIgX2Rpc2FibGVkVXJscztcclxuICAgICAgICB2YXIgX2Rpc2FibGVBamF4VHJhY2tpbmc7XHJcbiAgICAgICAgdmFyIF9kaXNhYmxlRmV0Y2hUcmFja2luZztcclxuICAgICAgICB2YXIgX2V4Y2x1ZGVSZXF1ZXN0RnJvbUF1dG9UcmFja2luZ1BhdHRlcm5zO1xyXG4gICAgICAgIHZhciBfYWRkUmVxdWVzdENvbnRleHQ7XHJcbiAgICAgICAgdmFyIF9ldnROYW1lc3BhY2U7XHJcbiAgICAgICAgdmFyIF9kZXBlbmRlbmN5SGFuZGxlcklkO1xyXG4gICAgICAgIHZhciBfZGVwZW5kZW5jeUxpc3RlbmVycztcclxuICAgICAgICB2YXIgX2RlcGVuZGVuY3lJbml0aWFsaXplcnM7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKEFqYXhNb25pdG9yLCBfdGhpcywgZnVuY3Rpb24gKF9zZWxmLCBfYmFzZSkge1xyXG4gICAgICAgICAgICB2YXIgX2FkZEhvb2sgPSBfYmFzZS5fYWRkSG9vaztcclxuICAgICAgICAgICAgX2luaXREZWZhdWx0cygpO1xyXG4gICAgICAgICAgICBfc2VsZi5pbml0aWFsaXplID0gZnVuY3Rpb24gKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICAgICAgICAgIGlmICghX3NlbGYuaXNJbml0aWFsaXplZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2Jhc2UuaW5pdGlhbGl6ZShjb25maWcsIGNvcmUsIGV4dGVuc2lvbnMsIHBsdWdpbkNoYWluKTtcclxuICAgICAgICAgICAgICAgICAgICBfZXZ0TmFtZXNwYWNlID0gbWVyZ2VFdnROYW1lc3BhY2UoY3JlYXRlVW5pcXVlTmFtZXNwYWNlKFwiYWpheFwiKSwgY29yZSAmJiBjb3JlLmV2dE5hbWVzcGFjZSAmJiBjb3JlLmV2dE5hbWVzcGFjZSgpKTtcclxuICAgICAgICAgICAgICAgICAgICBfcG9wdWxhdGVEZWZhdWx0cyhjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9pbnN0cnVtZW50WGhyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX2luc3RydW1lbnRGZXRjaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9wb3B1bGF0ZUNvbnRleHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuX2RvVGVhcmRvd24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLnRyYWNrRGVwZW5kZW5jeURhdGEgPSBmdW5jdGlvbiAoZGVwZW5kZW5jeSwgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgX3JlcG9ydERlcGVuZGVuY3lJbnRlcm5hbChfZGVwZW5kZW5jeUluaXRpYWxpemVycywgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10sIG51bGwsIGRlcGVuZGVuY3ksIHByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0lOQ0xVREVfQ09SUkVMQVRJT05fMiAvKiBAbWluOiUyZWluY2x1ZGVDb3JyZWxhdGlvbkhlYWRlcnMgKi9dID0gZnVuY3Rpb24gKGFqYXhEYXRhLCBpbnB1dCwgaW5pdCwgeGhyKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUZXN0IEhvb2sgdG8gYWxsb3cgdGhlIG92ZXJyaWRpbmcgb2YgdGhlIGxvY2F0aW9uIGhvc3RcclxuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50V2luZG93SG9zdCA9IF9zZWxmW1wiX2N1cnJlbnRXaW5kb3dIb3N0XCJdIHx8IF9jdXJyZW50V2luZG93SG9zdDtcclxuICAgICAgICAgICAgICAgIF9wcm9jZXNzRGVwZW5kZW5jeUxpc3RlbmVycyhfZGVwZW5kZW5jeUxpc3RlbmVycywgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10sIGFqYXhEYXRhLCB4aHIsIGlucHV0LCBpbml0KTtcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgeyAvLyBGZXRjaFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChDb3JyZWxhdGlvbklkSGVscGVyW19EWU5fQ0FOX0lOQ0xVREVfQ09SUkVMQVQzIC8qIEBtaW46JTJlY2FuSW5jbHVkZUNvcnJlbGF0aW9uSGVhZGVyICovXShfY29uZmlnLCBhamF4RGF0YVtfRFlOX0dFVF9BQlNPTFVURV9VUkwgLyogQG1pbjolMmVnZXRBYnNvbHV0ZVVybCAqL10oKSwgY3VycmVudFdpbmRvd0hvc3QpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5pdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluaXQgaGVhZGVycyBvdmVycmlkZSBvcmlnaW5hbCByZXF1ZXN0IGhlYWRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28sIGlmIHRoZXkgZXhpc3QgdXNlIG9ubHkgdGhlbSwgb3RoZXJ3aXNlIHVzZSByZXF1ZXN0J3MgYmVjYXVzZSB0aGV5IHNob3VsZCBoYXZlIGJlZW4gYXBwbGllZCBpbiB0aGUgZmlyc3QgcGxhY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHVzaW5nIG9yaWdpbmFsIHJlcXVlc3QgaGVhZGVycyB3aWxsIHJlc3VsdCBpbiB0aGVtIGJlaW5nIGxvc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0W19EWU5fSEVBREVSUyAvKiBAbWluOiUyZWhlYWRlcnMgKi9dIHx8IChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QgPyAoaW5wdXRbX0RZTl9IRUFERVJTIC8qIEBtaW46JTJlaGVhZGVycyAqL10gfHwge30pIDoge30pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc1VzaW5nQUlIZWFkZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBcInxcIiArIGFqYXhEYXRhW19EWU5fVFJBQ0VfSUQgLyogQG1pbjolMmV0cmFjZUlEICovXSArIFwiLlwiICsgYWpheERhdGFbX0RZTl9TUEFOX0lEIC8qIEBtaW46JTJlc3BhbklEICovXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMuc2V0KFJlcXVlc3RIZWFkZXJzWzMgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RJZEhlYWRlciAqL10sIGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9SRVFVRVNUX0hFQURFUlMgLyogQG1pbjolMmVyZXF1ZXN0SGVhZGVycyAqL11bUmVxdWVzdEhlYWRlcnNbMyAvKiBlUmVxdWVzdEhlYWRlcnMucmVxdWVzdElkSGVhZGVyICovXV0gPSBpZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXBwSWQgPSBfY29uZmlnW19EWU5fQVBQX0lEIC8qIEBtaW46JTJlYXBwSWQgKi9dIHx8IChfY29udGV4dCAmJiBfY29udGV4dFtfRFlOX0FQUF9JRCAvKiBAbWluOiUyZWFwcElkICovXSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnNldChSZXF1ZXN0SGVhZGVyc1swIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlciAqL10sIFJlcXVlc3RIZWFkZXJzWzIgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0QXBwSWRGb3JtYXQgKi9dICsgYXBwSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfSEVBREVSUyAvKiBAbWluOiUyZXJlcXVlc3RIZWFkZXJzICovXVtSZXF1ZXN0SGVhZGVyc1swIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlciAqL11dID0gUmVxdWVzdEhlYWRlcnNbMiAvKiBlUmVxdWVzdEhlYWRlcnMucmVxdWVzdENvbnRleHRBcHBJZEZvcm1hdCAqL10gKyBhcHBJZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzVXNpbmdXM0NIZWFkZXJzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhY2VGbGFncyA9IGFqYXhEYXRhW19EWU5fVFJBQ0VfRkxBR1MgLyogQG1pbjolMmV0cmFjZUZsYWdzICovXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0cmFjZUZsYWdzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlRmxhZ3MgPSAweDAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRyYWNlUGFyZW50ID0gZm9ybWF0VHJhY2VQYXJlbnQoY3JlYXRlVHJhY2VQYXJlbnQoYWpheERhdGFbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSUQgKi9dLCBhamF4RGF0YVtfRFlOX1NQQU5fSUQgLyogQG1pbjolMmVzcGFuSUQgKi9dLCB0cmFjZUZsYWdzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnNldChSZXF1ZXN0SGVhZGVyc1s0IC8qIGVSZXF1ZXN0SGVhZGVycy50cmFjZVBhcmVudEhlYWRlciAqL10sIHRyYWNlUGFyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9SRVFVRVNUX0hFQURFUlMgLyogQG1pbjolMmVyZXF1ZXN0SGVhZGVycyAqL11bUmVxdWVzdEhlYWRlcnNbNCAvKiBlUmVxdWVzdEhlYWRlcnMudHJhY2VQYXJlbnRIZWFkZXIgKi9dXSA9IHRyYWNlUGFyZW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRbX0RZTl9IRUFERVJTIC8qIEBtaW46JTJlaGVhZGVycyAqL10gPSBoZWFkZXJzO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhocikgeyAvLyBYSFJcclxuICAgICAgICAgICAgICAgICAgICBpZiAoQ29ycmVsYXRpb25JZEhlbHBlcltfRFlOX0NBTl9JTkNMVURFX0NPUlJFTEFUMyAvKiBAbWluOiUyZWNhbkluY2x1ZGVDb3JyZWxhdGlvbkhlYWRlciAqL10oX2NvbmZpZywgYWpheERhdGFbX0RZTl9HRVRfQUJTT0xVVEVfVVJMIC8qIEBtaW46JTJlZ2V0QWJzb2x1dGVVcmwgKi9dKCksIGN1cnJlbnRXaW5kb3dIb3N0KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzVXNpbmdBSUhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IFwifFwiICsgYWpheERhdGFbX0RZTl9UUkFDRV9JRCAvKiBAbWluOiUyZXRyYWNlSUQgKi9dICsgXCIuXCIgKyBhamF4RGF0YVtfRFlOX1NQQU5fSUQgLyogQG1pbjolMmVzcGFuSUQgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyW19EWU5fU0VUX1JFUVVFU1RfSEVBREVSIC8qIEBtaW46JTJlc2V0UmVxdWVzdEhlYWRlciAqL10oUmVxdWVzdEhlYWRlcnNbMyAvKiBlUmVxdWVzdEhlYWRlcnMucmVxdWVzdElkSGVhZGVyICovXSwgaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfSEVBREVSUyAvKiBAbWluOiUyZXJlcXVlc3RIZWFkZXJzICovXVtSZXF1ZXN0SGVhZGVyc1szIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0SWRIZWFkZXIgKi9dXSA9IGlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcHBJZCA9IF9jb25maWdbX0RZTl9BUFBfSUQgLyogQG1pbjolMmVhcHBJZCAqL10gfHwgKF9jb250ZXh0ICYmIF9jb250ZXh0W19EWU5fQVBQX0lEIC8qIEBtaW46JTJlYXBwSWQgKi9dKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhocltfRFlOX1NFVF9SRVFVRVNUX0hFQURFUiAvKiBAbWluOiUyZXNldFJlcXVlc3RIZWFkZXIgKi9dKFJlcXVlc3RIZWFkZXJzWzAgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0SGVhZGVyICovXSwgUmVxdWVzdEhlYWRlcnNbMiAvKiBlUmVxdWVzdEhlYWRlcnMucmVxdWVzdENvbnRleHRBcHBJZEZvcm1hdCAqL10gKyBhcHBJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZVJlcXVlc3RIZWFkZXJUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fUkVRVUVTVF9IRUFERVJTIC8qIEBtaW46JTJlcmVxdWVzdEhlYWRlcnMgKi9dW1JlcXVlc3RIZWFkZXJzWzAgLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0SGVhZGVyICovXV0gPSBSZXF1ZXN0SGVhZGVyc1syIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEFwcElkRm9ybWF0ICovXSArIGFwcElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNVc2luZ1czQ0hlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFjZUZsYWdzID0gYWpheERhdGFbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRyYWNlRmxhZ3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VGbGFncyA9IDB4MDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhY2VQYXJlbnQgPSBmb3JtYXRUcmFjZVBhcmVudChjcmVhdGVUcmFjZVBhcmVudChhamF4RGF0YVtfRFlOX1RSQUNFX0lEIC8qIEBtaW46JTJldHJhY2VJRCAqL10sIGFqYXhEYXRhW19EWU5fU1BBTl9JRCAvKiBAbWluOiUyZXNwYW5JRCAqL10sIHRyYWNlRmxhZ3MpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhocltfRFlOX1NFVF9SRVFVRVNUX0hFQURFUiAvKiBAbWluOiUyZXNldFJlcXVlc3RIZWFkZXIgKi9dKFJlcXVlc3RIZWFkZXJzWzQgLyogZVJlcXVlc3RIZWFkZXJzLnRyYWNlUGFyZW50SGVhZGVyICovXSwgdHJhY2VQYXJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfSEVBREVSUyAvKiBAbWluOiUyZXJlcXVlc3RIZWFkZXJzICovXVtSZXF1ZXN0SGVhZGVyc1s0IC8qIGVSZXF1ZXN0SGVhZGVycy50cmFjZVBhcmVudEhlYWRlciAqL11dID0gdHJhY2VQYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhocjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fVFJBQ0tfREVQRU5ERU5DWV9EQVQ0IC8qIEBtaW46JTJldHJhY2tEZXBlbmRlbmN5RGF0YUludGVybmFsICovXSA9IGZ1bmN0aW9uIChkZXBlbmRlbmN5LCBwcm9wZXJ0aWVzLCBzeXN0ZW1Qcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX21heEFqYXhDYWxsc1BlclZpZXcgPT09IC0xIHx8IF90cmFja0FqYXhBdHRlbXB0cyA8IF9tYXhBamF4Q2FsbHNQZXJWaWV3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFjayBzaW5jZSBleHBlY3RlZCBmb3JtYXQgaW4gdzNjIG1vZGUgaXMgfGFiYy5kZWYuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTm9uLXczYyBmb3JtYXQgaXMgfGFiYy5kZWZcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdG9kbyBSZW1vdmUgaWYgYmV0dGVyIHNvbHV0aW9uIGlzIGF2YWlsYWJsZSwgZS5nLiBoYW5kbGUgaW4gcG9ydGFsXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChfY29uZmlnW19EWU5fRElTVFJJQlVURURfVFJBQ0lOR181IC8qIEBtaW46JTJlZGlzdHJpYnV0ZWRUcmFjaW5nTW9kZSAqL10gPT09IDIgLyogZURpc3RyaWJ1dGVkVHJhY2luZ01vZGVzLlczQyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBfY29uZmlnW19EWU5fRElTVFJJQlVURURfVFJBQ0lOR181IC8qIEBtaW46JTJlZGlzdHJpYnV0ZWRUcmFjaW5nTW9kZSAqL10gPT09IDEgLyogZURpc3RyaWJ1dGVkVHJhY2luZ01vZGVzLkFJX0FORF9XM0MgKi8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5cGVvZiBkZXBlbmRlbmN5LmlkID09PSBcInN0cmluZ1wiICYmIGRlcGVuZGVuY3kuaWRbZGVwZW5kZW5jeS5pZFtfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gLSAxXSAhPT0gXCIuXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeS5pZCArPSBcIi5cIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGRlcGVuZGVuY3lbX0RZTl9TVEFSVF9USU1FIC8qIEBtaW46JTJlc3RhcnRUaW1lICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jeVtfRFlOX1NUQVJUX1RJTUUgLyogQG1pbjolMmVzdGFydFRpbWUgKi9dID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBjcmVhdGVUZWxlbWV0cnlJdGVtKGRlcGVuZGVuY3ksIFJlbW90ZURlcGVuZGVuY3lEYXRhLmRhdGFUeXBlLCBSZW1vdGVEZXBlbmRlbmN5RGF0YS5lbnZlbG9wZVR5cGUsIF9zZWxmW3N0ckRpYWdMb2ddKCksIHByb3BlcnRpZXMsIHN5c3RlbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dLnRyYWNrKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoX3RyYWNrQWpheEF0dGVtcHRzID09PSBfbWF4QWpheENhbGxzUGVyVmlldykge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsQ3JpdGljYWwoX3NlbGYsIDU1IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuTWF4QWpheFBlclBWRXhjZWVkZWQgKi8sIFwiTWF4aW11bSBhamF4IHBlciBwYWdlIHZpZXcgbGltaXQgcmVhY2hlZCwgYWpheCBtb25pdG9yaW5nIGlzIHBhdXNlZCB1bnRpbCB0aGUgbmV4dCB0cmFja1BhZ2VWaWV3KCkuIEluIG9yZGVyIHRvIGluY3JlYXNlIHRoZSBsaW1pdCBzZXQgdGhlIG1heEFqYXhDYWxsc1BlclZpZXcgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKytfdHJhY2tBamF4QXR0ZW1wdHM7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmFkZERlcGVuZGVuY3lMaXN0ZW5lciA9IGZ1bmN0aW9uIChkZXBlbmRlbmN5TGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfYWRkSGFuZGxlcihfZGVwZW5kZW5jeUxpc3RlbmVycywgX2RlcGVuZGVuY3lIYW5kbGVySWQrKywgZGVwZW5kZW5jeUxpc3RlbmVyKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuYWRkRGVwZW5kZW5jeUluaXRpYWxpemVyID0gZnVuY3Rpb24gKGRlcGVuZGVuY3lJbml0aWFsaXplcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9hZGRIYW5kbGVyKF9kZXBlbmRlbmN5SW5pdGlhbGl6ZXJzLCBfZGVwZW5kZW5jeUhhbmRsZXJJZCsrLCBkZXBlbmRlbmN5SW5pdGlhbGl6ZXIpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfaW5pdERlZmF1bHRzKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIF9mZXRjaEluaXRpYWxpemVkID0gZmFsc2U7IC8vIGZldGNoIG1vbml0b3JpbmcgaW5pdGlhbGl6ZWRcclxuICAgICAgICAgICAgICAgIF94aHJJbml0aWFsaXplZCA9IGZhbHNlOyAvLyBYSFIgbW9uaXRvcmluZyBpbml0aWFsaXplZFxyXG4gICAgICAgICAgICAgICAgX2N1cnJlbnRXaW5kb3dIb3N0ID0gbG9jYXRpb24gJiYgbG9jYXRpb24uaG9zdCAmJiBsb2NhdGlvbi5ob3N0W19EWU5fVE9fTE9XRVJfQ0FTRSAvKiBAbWluOiUyZXRvTG93ZXJDYXNlICovXSgpO1xyXG4gICAgICAgICAgICAgICAgX2NvbmZpZyA9IEFqYXhNb25pdG9yLmdldEVtcHR5Q29uZmlnKCk7XHJcbiAgICAgICAgICAgICAgICBfZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBfZW5hYmxlQWpheEVycm9yU3RhdHVzVGV4dCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX3RyYWNrQWpheEF0dGVtcHRzID0gMDtcclxuICAgICAgICAgICAgICAgIF9jb250ZXh0ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9pc1VzaW5nVzNDSGVhZGVycyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX2lzVXNpbmdBSUhlYWRlcnMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF9tYXJrUHJlZml4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9lbmFibGVBamF4UGVyZlRyYWNraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBfbWF4QWpheENhbGxzUGVyVmlldyA9IDA7XHJcbiAgICAgICAgICAgICAgICBfZW5hYmxlUmVzcG9uc2VIZWFkZXJUcmFja2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX2Rpc2FibGVkVXJscyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgX2Rpc2FibGVBamF4VHJhY2tpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIF9kaXNhYmxlRmV0Y2hUcmFja2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgX2V4Y2x1ZGVSZXF1ZXN0RnJvbUF1dG9UcmFja2luZ1BhdHRlcm5zID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9hZGRSZXF1ZXN0Q29udGV4dCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfZXZ0TmFtZXNwYWNlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9kZXBlbmRlbmN5SGFuZGxlcklkID0gMDtcclxuICAgICAgICAgICAgICAgIF9kZXBlbmRlbmN5TGlzdGVuZXJzID0gW107XHJcbiAgICAgICAgICAgICAgICBfZGVwZW5kZW5jeUluaXRpYWxpemVycyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9wb3B1bGF0ZURlZmF1bHRzKGNvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KG51bGwsIGNvbmZpZywgX3NlbGZbX0RZTl9DT1JFIC8qIEBtaW46JTJlY29yZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdG8gdGhlIGVtcHR5IGNvbmZpZ1xyXG4gICAgICAgICAgICAgICAgX2NvbmZpZyA9IF9nZXRFbXB0eUNvbmZpZygpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRDb25maWcgPSBfZ2V0RGVmYXVsdENvbmZpZygpO1xyXG4gICAgICAgICAgICAgICAgb2JqRm9yRWFjaEtleShkZWZhdWx0Q29uZmlnLCBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ1tmaWVsZF0gPSBjdHguZ2V0Q29uZmlnKEFqYXhNb25pdG9yLmlkZW50aWZpZXIsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHZhciBkaXN0cmlidXRlZFRyYWNpbmdNb2RlID0gX2NvbmZpZ1tfRFlOX0RJU1RSSUJVVEVEX1RSQUNJTkdfNSAvKiBAbWluOiUyZWRpc3RyaWJ1dGVkVHJhY2luZ01vZGUgKi9dO1xyXG4gICAgICAgICAgICAgICAgX2VuYWJsZVJlcXVlc3RIZWFkZXJUcmFja2luZyA9IF9jb25maWdbX0RZTl9FTkFCTEVfUkVRVUVTVF9IRUFERTYgLyogQG1pbjolMmVlbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcgKi9dO1xyXG4gICAgICAgICAgICAgICAgX2VuYWJsZUFqYXhFcnJvclN0YXR1c1RleHQgPSBfY29uZmlnW19EWU5fRU5BQkxFX0FKQVhfRVJST1JfU1Q3IC8qIEBtaW46JTJlZW5hYmxlQWpheEVycm9yU3RhdHVzVGV4dCAqL107XHJcbiAgICAgICAgICAgICAgICBfZW5hYmxlQWpheFBlcmZUcmFja2luZyA9IF9jb25maWdbX0RZTl9FTkFCTEVfQUpBWF9QRVJGX1RSQTggLyogQG1pbjolMmVlbmFibGVBamF4UGVyZlRyYWNraW5nICovXTtcclxuICAgICAgICAgICAgICAgIF9tYXhBamF4Q2FsbHNQZXJWaWV3ID0gX2NvbmZpZ1tfRFlOX01BWF9BSkFYX0NBTExTX1BFUl9WOSAvKiBAbWluOiUyZW1heEFqYXhDYWxsc1BlclZpZXcgKi9dO1xyXG4gICAgICAgICAgICAgICAgX2VuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmcgPSBfY29uZmlnW19EWU5fRU5BQkxFX1JFU1BPTlNFX0hFQUQxMCAvKiBAbWluOiUyZWVuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmcgKi9dO1xyXG4gICAgICAgICAgICAgICAgX2V4Y2x1ZGVSZXF1ZXN0RnJvbUF1dG9UcmFja2luZ1BhdHRlcm5zID0gW10uY29uY2F0KF9jb25maWdbX0RZTl9FWENMVURFX1JFUVVFU1RfRlJPTTExIC8qIEBtaW46JTJlZXhjbHVkZVJlcXVlc3RGcm9tQXV0b1RyYWNraW5nUGF0dGVybnMgKi9dIHx8IFtdLCBfY29uZmlnLmFkZEludEVuZHBvaW50cyAhPT0gZmFsc2UgPyBfaW50ZXJuYWxFeGNsdWRlRW5kcG9pbnRzIDogW10pO1xyXG4gICAgICAgICAgICAgICAgX2FkZFJlcXVlc3RDb250ZXh0ID0gX2NvbmZpZ1tfRFlOX0FERF9SRVFVRVNUX0NPTlRFWFQgLyogQG1pbjolMmVhZGRSZXF1ZXN0Q29udGV4dCAqL107XHJcbiAgICAgICAgICAgICAgICBfaXNVc2luZ0FJSGVhZGVycyA9IGRpc3RyaWJ1dGVkVHJhY2luZ01vZGUgPT09IDAgLyogZURpc3RyaWJ1dGVkVHJhY2luZ01vZGVzLkFJICovIHx8IGRpc3RyaWJ1dGVkVHJhY2luZ01vZGUgPT09IDEgLyogZURpc3RyaWJ1dGVkVHJhY2luZ01vZGVzLkFJX0FORF9XM0MgKi87XHJcbiAgICAgICAgICAgICAgICBfaXNVc2luZ1czQ0hlYWRlcnMgPSBkaXN0cmlidXRlZFRyYWNpbmdNb2RlID09PSAxIC8qIGVEaXN0cmlidXRlZFRyYWNpbmdNb2Rlcy5BSV9BTkRfVzNDICovIHx8IGRpc3RyaWJ1dGVkVHJhY2luZ01vZGUgPT09IDIgLyogZURpc3RyaWJ1dGVkVHJhY2luZ01vZGVzLlczQyAqLztcclxuICAgICAgICAgICAgICAgIGlmIChfZW5hYmxlQWpheFBlcmZUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpS2V5ID0gY29uZmlnLmluc3RydW1lbnRhdGlvbktleSB8fCBcInVua3duXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlLZXlbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfbWFya1ByZWZpeCA9IEFKQVhfTU9OSVRPUl9QUkVGSVggKyBpS2V5LnN1YnN0cmluZyhpS2V5W19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSAtIDUpICsgXCIuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfbWFya1ByZWZpeCA9IEFKQVhfTU9OSVRPUl9QUkVGSVggKyBpS2V5ICsgXCIuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX2Rpc2FibGVBamF4VHJhY2tpbmcgPSAhIV9jb25maWdbX0RZTl9ESVNBQkxFX0FKQVhfVFJBQ0tJTjEyIC8qIEBtaW46JTJlZGlzYWJsZUFqYXhUcmFja2luZyAqL107XHJcbiAgICAgICAgICAgICAgICBfZGlzYWJsZUZldGNoVHJhY2tpbmcgPSAhIV9jb25maWdbX0RZTl9ESVNBQkxFX0ZFVENIX1RSQUNLSTEzIC8qIEBtaW46JTJlZGlzYWJsZUZldGNoVHJhY2tpbmcgKi9dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9wb3B1bGF0ZUNvbnRleHQoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHJvcEV4dCA9IF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dLmdldFBsdWdpbihQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllcik7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvcEV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9jb250ZXh0ID0gcHJvcEV4dC5wbHVnaW5bX0RZTl9DT05URVhUIC8qIEBtaW46JTJlY29udGV4dCAqL107IC8vIHdlIGNvdWxkIG1vdmUgSVByb3BlcnRpZXNQbHVnaW4gdG8gY29tbW9uIGFzIHdlbGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBkaXNjYXJkIHRoZSBoZWFkZXIgaWYgaXQncyBkZWZpbmVkIGFzIGlnbm9yZUhlYWRlcnMgaW4gSUNvcnJlbGF0aW9uQ29uZmlnXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9jYW5JbmNsdWRlSGVhZGVycyhoZWFkZXIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBybHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlciB8fCBfY29uZmlnLmlnbm9yZUhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKF9jb25maWcuaWdub3JlSGVhZGVycywgKGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleVtfRFlOX1RPX0xPV0VSX0NBU0UgLyogQG1pbjolMmV0b0xvd2VyQ2FzZSAqL10oKSA9PT0gaGVhZGVyW19EWU5fVE9fTE9XRVJfQ0FTRSAvKiBAbWluOiUyZXRvTG93ZXJDYXNlICovXSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBybHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBybHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRmV0Y2ggU3R1ZmZcclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luc3RydW1lbnRGZXRjaCgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBmZXRjaCA9IF9zdXBwb3J0c0ZldGNoKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZldGNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGdsb2JhbCA9IGdldEdsb2JhbCgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlzUG9seWZpbGwgPSBmZXRjaC5wb2x5ZmlsbDtcclxuICAgICAgICAgICAgICAgIGlmICghX2Rpc2FibGVGZXRjaFRyYWNraW5nICYmICFfZmV0Y2hJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9hZGRIb29rKEluc3RydW1lbnRGdW5jKGdsb2JhbCwgc3RyRmV0Y2gsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnM6IF9ldnROYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCByZXF1ZXN0IGhvb2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxOiBmdW5jdGlvbiAoY2FsbERldGFpbHMsIGlucHV0LCBpbml0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmV0Y2hEYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfZGlzYWJsZUZldGNoVHJhY2tpbmcgJiYgX2ZldGNoSW5pdGlhbGl6ZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhX2lzRGlzYWJsZWRSZXF1ZXN0KG51bGwsIGlucHV0LCBpbml0KSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5ZmlsIGFuZCBYSFIgaW5zdHJ1bWVudGVkIHRoZW4gbGV0IFhIUiByZXBvcnQgb3RoZXJ3aXNlIHdlIGdldCBkdXBsaWNhdGVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShpc1BvbHlmaWxsICYmIF94aHJJbml0aWFsaXplZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY2FsbERldGFpbHMuY3R4KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hEYXRhID0gX2NyZWF0ZUZldGNoUmVjb3JkKGlucHV0LCBpbml0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3SW5pdCA9IF9zZWxmW19EWU5fSU5DTFVERV9DT1JSRUxBVElPTl8yIC8qIEBtaW46JTJlaW5jbHVkZUNvcnJlbGF0aW9uSGVhZGVycyAqL10oZmV0Y2hEYXRhLCBpbnB1dCwgaW5pdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0luaXQgIT09IGluaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbERldGFpbHMuc2V0KDEsIG5ld0luaXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHguZGF0YSA9IGZldGNoRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcnNwOiBmdW5jdGlvbiAoY2FsbERldGFpbHMsIGlucHV0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9kaXNhYmxlRmV0Y2hUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmZXRjaERhdGFfMSA9IGNhbGxEZXRhaWxzLmN0eCgpLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoRGF0YV8xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHJlc3VsdCB3aXRoIHRoZSBuZXcgcHJvbWlzZSBmcm9tIHRoaXMgY29kZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsRGV0YWlscy5yc2x0ID0gY2FsbERldGFpbHMucnNsdC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlcG9ydEZldGNoTWV0cmljcyhjYWxsRGV0YWlscywgKHJlc3BvbnNlIHx8IHt9KVtfRFlOX1NUQVRVUyAvKiBAbWluOiUyZXN0YXR1cyAqL10sIGlucHV0LCByZXNwb25zZSwgZmV0Y2hEYXRhXzEsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFqYXhSZXNwb25zZSA9IChfYSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlW19EWU5fU1RBVFVTX1RFWFQgLyogQG1pbjolMmVzdGF0dXNUZXh0ICovXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX0hFQURFUl9NQVAgLyogQG1pbjpoZWFkZXJNYXAgKi9dID0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FbX0RZTl9DT1JSRUxBVElPTl9DT05URVhUIC8qIEBtaW46Y29ycmVsYXRpb25Db250ZXh0ICovXSA9IF9nZXRGZXRjaENvcnJlbGF0aW9uQ29udGV4dChyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlSGVhZGVyTWFwXzEgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jYW5JbmNsdWRlSGVhZGVycyhuYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyTWFwXzFbbmFtZV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhSZXNwb25zZVtfRFlOX0hFQURFUl9NQVAgLyogQG1pbjolMmVoZWFkZXJNYXAgKi9dID0gcmVzcG9uc2VIZWFkZXJNYXBfMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFqYXhSZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVtcImNhdGNoXCJdKGZ1bmN0aW9uIChyZWFzb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXBvcnRGZXRjaE1ldHJpY3MoY2FsbERldGFpbHMsIDAsIGlucHV0LCBudWxsLCBmZXRjaERhdGFfMSwgbnVsbCwgeyBlcnJvcjogcmVhc29uLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZWFzb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGVycm9yIGNhbGxiYWNrIHRvIHJlcG9ydCBhbnkgaG9vayBlcnJvcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGtFcnI6IF9jcmVhdGVFcnJvckNhbGxiYWNrRnVuYyhfc2VsZiwgMTUgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5GYWlsZWRNb25pdG9yQWpheE9wZW4gKi8sIFwiRmFpbGVkIHRvIG1vbml0b3IgV2luZG93LmZldGNoXCIgKyBFUlJPUl9QT1NURklYKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICBfZmV0Y2hJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc1BvbHlmaWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZmV0Y2ggaXMgYSBwb2x5ZmlsbCB3ZSBuZWVkIHRvIGNhcHR1cmUgdGhlIHJlcXVlc3QgdG8gZW5zdXJlIHRoYXQgd2UgY29ycmVjdGx5IHRyYWNrXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZGlzYWJsZWQgcmVxdWVzdCBVUkxTIChpLmUuIGludGVybmFsIHVybHMpIHRvIGVuc3VyZSB3ZSBkb24ndCBlbmQgdXAgaW4gYSBjb25zdGFudCBsb29wXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gb2YgcmVwb3J0aW5nIG91cnNlbHZlcywgZm9yIGV4YW1wbGUgUmVhY3QgTmF0aXZlIHVzZXMgYSBwb2x5ZmlsbCBmb3IgZmV0Y2hcclxuICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBQb2x5ZmlsbCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBcInBveXlmaWxsXCIgdGFnIGFyZSBub3Qgc3VwcG9ydGVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdvcmthcm91bmQgaXMgdG8gYWRkIGEgcG9seWZpbGwgcHJvcGVydHkgdG8geW91ciBmZXRjaCBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwIEluc2lnaHRzXHJcbiAgICAgICAgICAgICAgICAgICAgX2FkZEhvb2soSW5zdHJ1bWVudEZ1bmMoZ2xvYmFsLCBzdHJGZXRjaCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuczogX2V2dE5hbWVzcGFjZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxOiBmdW5jdGlvbiAoY2FsbERldGFpbHMsIGlucHV0LCBpbml0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IGNhbGwgc28gdGhhdCB3ZSByZWNvcmQgYW55IGRpc2FibGVkIFVSTFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lzRGlzYWJsZWRSZXF1ZXN0KG51bGwsIGlucHV0LCBpbml0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc1BvbHlmaWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0YWcgdGhlIGluc3RydW1lbnRlZCBmZXRjaCB3aXRoIHRoZSBzYW1lIHBvbHlmaWxsIHNldHRpbmdzIHRoaXMgaXMgbW9zdGx5IGZvciB0ZXN0aW5nXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQnV0IGFsc28gc3VwcG9ydHMgbXVsdGlwbGUgQXBwIEluc2lnaHRzIHVzYWdlc1xyXG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbFtzdHJGZXRjaF0ucG9seWZpbGwgPSBpc1BvbHlmaWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9ob29rUHJvdG8odGFyZ2V0LCBmdW5jTmFtZSwgY2FsbGJhY2tzKSB7XHJcbiAgICAgICAgICAgICAgICBfYWRkSG9vayhJbnN0cnVtZW50UHJvdG8odGFyZ2V0LCBmdW5jTmFtZSwgY2FsbGJhY2tzKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luc3RydW1lbnRYaHIoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3N1cHBvcnRzQWpheE1vbml0b3JpbmcoX3NlbGYpICYmICFfZGlzYWJsZUFqYXhUcmFja2luZyAmJiAhX3hockluaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5zdHJ1bWVudCBvcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgX2hvb2tQcm90byhYTUxIdHRwUmVxdWVzdCwgXCJvcGVuXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnM6IF9ldnROYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcTogZnVuY3Rpb24gKGFyZ3MsIG1ldGhvZCwgdXJsLCBhc3luYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfZGlzYWJsZUFqYXhUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBhcmdzW19EWU5fSU5TVCAvKiBAbWluOiUyZWluc3QgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhamF4RGF0YSA9IHhocltzdHJBamF4RGF0YV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfaXNEaXNhYmxlZFJlcXVlc3QoeGhyLCB1cmwpICYmIF9pc01vbml0b3JlZFhockluc3RhbmNlKHhociwgdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhamF4RGF0YSB8fCAhYWpheERhdGEueGhyTW9uaXRvcmluZ1N0YXRlW19EWU5fT1BFTl9ET05FIC8qIEBtaW46JTJlb3BlbkRvbmUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNyZWF0ZSBhIHNpbmdsZSBhamF4RGF0YSAoZXZlbiB3aGVuIG11bHRpcGxlIEFJIGluc3RhbmNlcyBhcmUgcnVubmluZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vcGVuSGFuZGxlcih4aHIsIG1ldGhvZCwgdXJsLCBhc3luYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIGF0dGFjaCB0byB0aGUgb24gcmVhZHkgc3RhdGUgY2hhbmdlIChyZXF1aXJlZCBmb3IgaGFuZGxpbmcgbXVsdGlwbGUgaW5zdGFuY2VzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYXR0YWNoVG9PblJlYWR5U3RhdGVDaGFuZ2UoeGhyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhrRXJyOiBfY3JlYXRlRXJyb3JDYWxsYmFja0Z1bmMoX3NlbGYsIDE1IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkTW9uaXRvckFqYXhPcGVuICovLCBFUlJPUl9IRUFERVIgKyBcIi5vcGVuXCIgKyBFUlJPUl9QT1NURklYKVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEluc3RydW1lbnQgc2VuZFxyXG4gICAgICAgICAgICAgICAgICAgIF9ob29rUHJvdG8oWE1MSHR0cFJlcXVlc3QsIFwic2VuZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5zOiBfZXZ0TmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXE6IGZ1bmN0aW9uIChhcmdzLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9kaXNhYmxlQWpheFRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhociA9IGFyZ3NbX0RZTl9JTlNUIC8qIEBtaW46JTJlaW5zdCAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFqYXhEYXRhID0geGhyW3N0ckFqYXhEYXRhXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzTW9uaXRvcmVkWGhySW5zdGFuY2UoeGhyKSAmJiAhYWpheERhdGEueGhyTW9uaXRvcmluZ1N0YXRlW19EWU5fU0VORF9ET05FIC8qIEBtaW46JTJlc2VuZERvbmUgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jcmVhdGVNYXJrSWQoXCJ4aHJcIiwgYWpheERhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfU0VOVF9USU1FIC8qIEBtaW46JTJlcmVxdWVzdFNlbnRUaW1lICovXSA9IGRhdGVUaW1lVXRpbHNOb3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9JTkNMVURFX0NPUlJFTEFUSU9OXzIgLyogQG1pbjolMmVpbmNsdWRlQ29ycmVsYXRpb25IZWFkZXJzICovXShhamF4RGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHhocik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhLnhock1vbml0b3JpbmdTdGF0ZVtfRFlOX1NFTkRfRE9ORSAvKiBAbWluOiUyZXNlbmREb25lICovXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoa0VycjogX2NyZWF0ZUVycm9yQ2FsbGJhY2tGdW5jKF9zZWxmLCAxNyAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZE1vbml0b3JBamF4U2VuZCAqLywgRVJST1JfSEVBREVSICsgRVJST1JfUE9TVEZJWClcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJbnN0cnVtZW50IGFib3J0XHJcbiAgICAgICAgICAgICAgICAgICAgX2hvb2tQcm90byhYTUxIdHRwUmVxdWVzdCwgXCJhYm9ydFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5zOiBfZXZ0TmFtZXNwYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXE6IGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9kaXNhYmxlQWpheFRyYWNraW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhociA9IGFyZ3NbX0RZTl9JTlNUIC8qIEBtaW46JTJlaW5zdCAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFqYXhEYXRhID0geGhyW3N0ckFqYXhEYXRhXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2lzTW9uaXRvcmVkWGhySW5zdGFuY2UoeGhyKSAmJiAhYWpheERhdGEueGhyTW9uaXRvcmluZ1N0YXRlW19EWU5fQUJPUlRfRE9ORSAvKiBAbWluOiUyZWFib3J0RG9uZSAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheERhdGEuYWJvcnRlZCA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhLnhock1vbml0b3JpbmdTdGF0ZVtfRFlOX0FCT1JUX0RPTkUgLyogQG1pbjolMmVhYm9ydERvbmUgKi9dID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhrRXJyOiBfY3JlYXRlRXJyb3JDYWxsYmFja0Z1bmMoX3NlbGYsIDEzIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkTW9uaXRvckFqYXhBYm9ydCAqLywgRVJST1JfSEVBREVSICsgXCIuYWJvcnRcIiArIEVSUk9SX1BPU1RGSVgpXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5zdHJ1bWVudCBzZXRSZXF1ZXN0SGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgX2hvb2tQcm90byhYTUxIdHRwUmVxdWVzdCwgXCJzZXRSZXF1ZXN0SGVhZGVyXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnM6IF9ldnROYW1lc3BhY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcTogZnVuY3Rpb24gKGFyZ3MsIGhlYWRlciwgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghX2Rpc2FibGVBamF4VHJhY2tpbmcgJiYgX2VuYWJsZVJlcXVlc3RIZWFkZXJUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBhcmdzW19EWU5fSU5TVCAvKiBAbWluOiUyZWluc3QgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNNb25pdG9yZWRYaHJJbnN0YW5jZSh4aHIpICYmIF9jYW5JbmNsdWRlSGVhZGVycyhoZWFkZXIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhocltzdHJBamF4RGF0YV1bX0RZTl9SRVFVRVNUX0hFQURFUlMgLyogQG1pbjolMmVyZXF1ZXN0SGVhZGVycyAqL11baGVhZGVyXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGtFcnI6IF9jcmVhdGVFcnJvckNhbGxiYWNrRnVuYyhfc2VsZiwgNzEgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5GYWlsZWRNb25pdG9yQWpheFNldFJlcXVlc3RIZWFkZXIgKi8sIEVSUk9SX0hFQURFUiArIFwiLnNldFJlcXVlc3RIZWFkZXJcIiArIEVSUk9SX1BPU1RGSVgpXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3hockluaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfaXNEaXNhYmxlZFJlcXVlc3QoeGhyLCByZXF1ZXN0LCBpbml0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaXNEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRoZVVybCA9ICgoIWlzU3RyaW5nKHJlcXVlc3QpID8gKHJlcXVlc3QgfHwge30pLnVybCB8fCBcIlwiIDogcmVxdWVzdCkgfHwgXCJcIilbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBleGNsdWRlUmVxdWVzdEZyb21BdXRvVHJhY2tpbmdQYXR0ZXJucyBiZWZvcmUgc3RyaXBwaW5nIG9mZiBhbnkgcXVlcnkgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKF9leGNsdWRlUmVxdWVzdEZyb21BdXRvVHJhY2tpbmdQYXR0ZXJucywgZnVuY3Rpb24gKHJlZ2V4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoZVJlZ2V4ID0gcmVnZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHJlZ2V4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVSZWdleCA9IG5ldyBSZWdFeHAocmVnZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHRoZVJlZ2V4LnRlc3QodGhlVXJsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vIGlmIHJlcXVlc3QgdXJsIG1hdGNoZXMgd2l0aCBleGNsdWRlIHJlZ2V4IHBhdHRlcm4sIHJldHVybiB0cnVlIGFuZCBubyBuZWVkIHRvIGNoZWNrIGZvciBoZWFkZXJzXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0Rpc2FibGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IF9pbmRleE9mKHRoZVVybCwgXCI/XCIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlkeDIgPSBfaW5kZXhPZih0aGVVcmwsIFwiI1wiKTtcclxuICAgICAgICAgICAgICAgIGlmIChpZHggPT09IC0xIHx8IChpZHgyICE9PSAtMSAmJiBpZHgyIDwgaWR4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlkeCA9IGlkeDI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaWR4ICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFN0cmlwIG9mZiBhbnkgUXVlcnkgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgdGhlVXJsID0gdGhlVXJsLnN1YnN0cmluZygwLCBpZHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCB0aGlzIGluc3RhbmNlIGlzIG5vdCBub3QgdXNlZCBieSBhamF4IGNhbGwgcGVyZm9ybWVkIGluc2lkZSBjbGllbnQgc2lkZSBtb25pdG9yaW5nIHRvIHNlbmQgZGF0YSB0byBjb2xsZWN0b3JcclxuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoeGhyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgb24gdGhlIFhNTEh0dHBSZXF1ZXN0IG9mIHRoZSBVUkwgc3RyaW5nIHZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHhocltEaXNhYmxlZFByb3BlcnR5TmFtZV0gPT09IHRydWUgfHwgdGhlVXJsW0Rpc2FibGVkUHJvcGVydHlOYW1lXSA9PT0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmaW5lZChyZXF1ZXN0KSkgeyAvLyBmZXRjaFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIERpc2FibGVkUHJvcGVydHlOYW1lIGluIGVpdGhlciBSZXF1ZXN0IG9yIFJlcXVlc3RJbml0XHJcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9ICh0eXBlb2YgcmVxdWVzdCA9PT0gXCJvYmplY3RcIiA/IHJlcXVlc3RbRGlzYWJsZWRQcm9wZXJ0eU5hbWVdID09PSB0cnVlIDogZmFsc2UpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbml0ID8gaW5pdFtEaXNhYmxlZFByb3BlcnR5TmFtZV0gPT09IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBBbHNvIGFkZCBleHRyYSBjaGVjayBqdXN0IGluIGNhc2UgdGhlIFhIUiBvciBmZXRjaCBvYmplY3RzIHdoZXJlIG5vdCBkZWNvcmF0ZWQgd2l0aCB0aGUgRGlzYWJsZVByb3BlcnR5IGR1ZSB0byBzZWFsaW5nIG9yIGZyZWV6aW5nXHJcbiAgICAgICAgICAgICAgICBpZiAoIWlzRGlzYWJsZWQgJiYgdGhlVXJsICYmIGlzSW50ZXJuYWxBcHBsaWNhdGlvbkluc2lnaHRzRW5kcG9pbnQodGhlVXJsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGRpc2FibGVkIHVybCBpZiBub3QgcHJlc2VudFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX2Rpc2FibGVkVXJsc1t0aGVVcmxdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kaXNhYmxlZFVybHNbdGhlVXJsXSA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB1cmwgaXMgbGlzdGVkIGFzIGRpc2FibGVkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kaXNhYmxlZFVybHNbdGhlVXJsXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNEaXNhYmxlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLy8gPHN1bW1hcnk+VmVyaWZpZXMgdGhhdCBwYXJ0aWNhbGFyIGluc3RhbmNlIG9mIFhNTEh0dHBSZXF1ZXN0IG5lZWRzIHRvIGJlIG1vbml0b3JlZDwvc3VtbWFyeT5cclxuICAgICAgICAgICAgLy8vIDxwYXJhbSBuYW1lPVwiZXhjbHVkZUFqYXhEYXRhVmFsaWRhdGlvblwiPk9wdGlvbmFsIHBhcmFtZXRlci4gVHJ1ZSBpZiBhamF4RGF0YSBtdXN0IGJlIGV4Y2x1ZGVkIGZyb20gdmVyaWZpY2F0aW9uPC9wYXJhbT5cclxuICAgICAgICAgICAgLy8vIDxyZXR1cm5zIHR5cGU9XCJib29sXCI+VHJ1ZSBpZiBpbnN0YW5jZSBuZWVkcyB0byBiZSBtb25pdG9yZWQsIG90aGVyd2lzZSBmYWxzZTwvcmV0dXJucz5cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2lzTW9uaXRvcmVkWGhySW5zdGFuY2UoeGhyLCBleGNsdWRlQWpheERhdGFWYWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYWpheFZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGluaXRpYWxpemVkID0gX3hockluaXRpYWxpemVkO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh4aHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWpheFZhbGlkYXRpb24gPSBleGNsdWRlQWpheERhdGFWYWxpZGF0aW9uID09PSB0cnVlIHx8ICFpc051bGxPclVuZGVmaW5lZCh4aHJbc3RyQWpheERhdGFdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNoZWNraW5nIHRvIHNlZSB0aGF0IGFsbCBpbnRlcmVzdGVkIGZ1bmN0aW9ucyBvbiB4aHIgd2VyZSBpbnN0cnVtZW50ZWRcclxuICAgICAgICAgICAgICAgIHJldHVybiBpbml0aWFsaXplZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNraW5nIG9uIGFqYXhEYXRhIHRvIHNlZSB0aGF0IGl0IHdhcyBub3QgcmVtb3ZlZCBpbiB1c2VyIGNvZGVcclxuICAgICAgICAgICAgICAgICAgICAmJiBhamF4VmFsaWRhdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZ2V0RGlzdHJpYnV0ZWRUcmFjZUN0eCgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkaXN0cmlidXRlZFRyYWNlQ3R4ID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGlmIChfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXSAmJiBfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXS5nZXRUcmFjZUN0eCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkVHJhY2VDdHggPSBfc2VsZltfRFlOX0NPUkUgLyogQG1pbjolMmVjb3JlICovXS5nZXRUcmFjZUN0eChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBGYWxsIGJhY2tcclxuICAgICAgICAgICAgICAgIGlmICghZGlzdHJpYnV0ZWRUcmFjZUN0eCAmJiBfY29udGV4dCAmJiBfY29udGV4dC50ZWxlbWV0cnlUcmFjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVkVHJhY2VDdHggPSBjcmVhdGVEaXN0cmlidXRlZFRyYWNlQ29udGV4dEZyb21UcmFjZShfY29udGV4dC50ZWxlbWV0cnlUcmFjZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlzdHJpYnV0ZWRUcmFjZUN0eDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfb3BlbkhhbmRsZXIoeGhyLCBtZXRob2QsIHVybCwgYXN5bmMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIHZhciBkaXN0cmlidXRlZFRyYWNlQ3R4ID0gX2dldERpc3RyaWJ1dGVkVHJhY2VDdHgoKTtcclxuICAgICAgICAgICAgICAgIHZhciB0cmFjZUlEID0gKGRpc3RyaWJ1dGVkVHJhY2VDdHggJiYgZGlzdHJpYnV0ZWRUcmFjZUN0eFtfRFlOX0dFVF9UUkFDRV9JRCAvKiBAbWluOiUyZWdldFRyYWNlSWQgKi9dKCkpIHx8IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgICAgICAgICAgICAgIHZhciBzcGFuSUQgPSBnZW5lcmF0ZVczQ0lkKCkuc3Vic3RyKDAsIDE2KTtcclxuICAgICAgICAgICAgICAgIHZhciBhamF4RGF0YSA9IG5ldyBhamF4UmVjb3JkKHRyYWNlSUQsIHNwYW5JRCwgX3NlbGZbc3RyRGlhZ0xvZ10oKSwgKF9hID0gX3NlbGYuY29yZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFRyYWNlQ3R4KCkpO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dID0gZGlzdHJpYnV0ZWRUcmFjZUN0eCAmJiBkaXN0cmlidXRlZFRyYWNlQ3R4W19EWU5fR0VUX1RSQUNFX0ZMQUdTIC8qIEBtaW46JTJlZ2V0VHJhY2VGbGFncyAqL10oKTtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXSA9IG1ldGhvZDtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSA9IHVybDtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhLnhock1vbml0b3JpbmdTdGF0ZVtfRFlOX09QRU5fRE9ORSAvKiBAbWluOiUyZW9wZW5Eb25lICovXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfSEVBREVSUyAvKiBAbWluOiUyZXJlcXVlc3RIZWFkZXJzICovXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGEuYXN5bmMgPSBhc3luYztcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fRVJST1JfU1RBVFVTX1RFWFQgLyogQG1pbjolMmVlcnJvclN0YXR1c1RleHQgKi9dID0gX2VuYWJsZUFqYXhFcnJvclN0YXR1c1RleHQ7XHJcbiAgICAgICAgICAgICAgICB4aHJbc3RyQWpheERhdGFdID0gYWpheERhdGE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2F0dGFjaFRvT25SZWFkeVN0YXRlQ2hhbmdlKHhocikge1xyXG4gICAgICAgICAgICAgICAgeGhyW3N0ckFqYXhEYXRhXS54aHJNb25pdG9yaW5nU3RhdGVbX0RZTl9TVEFURV9DSEFOR0VfQVRUQUNIRTE0IC8qIEBtaW46JTJlc3RhdGVDaGFuZ2VBdHRhY2hlZCAqL10gPSBldmVudE9uKHhociwgXCJyZWFkeXN0YXRlY2hhbmdlXCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhociAmJiB4aHIucmVhZHlTdGF0ZSA9PT0gNCAmJiBfaXNNb25pdG9yZWRYaHJJbnN0YW5jZSh4aHIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb25BamF4Q29tcGxldGUoeGhyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXhjZXB0aW9uVGV4dCA9IGR1bXBPYmooZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBtZXNzYWdlcyB3aXRoIGMwMGMwMjNmLCBhcyB0aGlzIGEga25vd24gSUU5IFhIUiBhYm9ydCBpc3N1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvblRleHQgfHwgX2luZGV4T2YoZXhjZXB0aW9uVGV4dFtfRFlOX1RPX0xPV0VSX0NBU0UgLyogQG1pbjolMmV0b0xvd2VyQ2FzZSAqL10oKSwgXCJjMDBjMDIzZlwiKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsQ3JpdGljYWwoX3NlbGYsIDE2IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkTW9uaXRvckFqYXhSU0MgKi8sIEVSUk9SX0hFQURFUiArIFwiICdyZWFkeXN0YXRlY2hhbmdlJyBldmVudCBoYW5kbGVyXCIgKyBFUlJPUl9QT1NURklYLCAoX2EgPSB7fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX0FKQVhfRElBR05PU1RJQ1NfTUVTMTkgLyogQG1pbjphamF4RGlhZ25vc3RpY3NNZXNzYWdlICovXSA9IF9nZXRGYWlsZWRBamF4RGlhZ25vc3RpY3NNZXNzYWdlKHhociksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EuZXhjZXB0aW9uID0gZXhjZXB0aW9uVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgX2V2dE5hbWVzcGFjZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dldFJlc3BvbnNlVGV4dCh4aHIpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlVHlwZSA9IHhoci5yZXNwb25zZVR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gXCJcIiB8fCByZXNwb25zZVR5cGUgPT09IFwidGV4dFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiByZXNwb25zZVRleHQgaXMgb25seSB2YWxpZCBpZiB0aGUgdHlwZSBpcyBhbiBlbXB0eSBzdHJpbmcgb3IgXCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhocltfRFlOX1JFU1BPTlNFX1RFWFQgLyogQG1pbjolMmVyZXNwb25zZVRleHQgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2Ugb2YgdGhlIGFib3ZlIGNoZWNrIC0tIGJ1dCBqdXN0IGluIGNhc2UsIHNvIGp1c3QgaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfb25BamF4Q29tcGxldGUoeGhyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYWpheERhdGEgPSB4aHJbc3RyQWpheERhdGFdO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1IC8qIEBtaW46JTJlcmVzcG9uc2VGaW5pc2hlZFRpbWUgKi9dID0gZGF0ZVRpbWVVdGlsc05vdygpO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9TVEFUVVMgLyogQG1pbjolMmVzdGF0dXMgKi9dID0geGhyW19EWU5fU1RBVFVTIC8qIEBtaW46JTJlc3RhdHVzICovXTtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9yZXBvcnRYaHJFcnJvcihlLCBmYWlsZWRQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvclByb3BzID0gZmFpbGVkUHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JQcm9wc1tcImFqYXhEaWFnbm9zdGljc01lc3NhZ2VcIl0gPSBfZ2V0RmFpbGVkQWpheERpYWdub3N0aWNzTWVzc2FnZSh4aHIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yUHJvcHNbXCJleGNlcHRpb25cIl0gPSBkdW1wT2JqKGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbFdhcm5pbmcoX3NlbGYsIDE0IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkTW9uaXRvckFqYXhEdXIgKi8sIEZBSUxFRF9UT19DQUxDVUxBVEVfRFVSQVRJT05fRVJST1IgKyBcImFqYXggY2FsbFwiICsgRVJST1JfTk9UX1NFTlQsIGVycm9yUHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX2ZpbmRQZXJmUmVzb3VyY2VFbnRyeShcInhtbGh0dHByZXF1ZXN0XCIsIGFqYXhEYXRhLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBhamF4RGF0YVtfRFlOX19DUkVBVEVfVFJBQ0tfSVRFTSAvKiBAbWluOiUyZUNyZWF0ZVRyYWNrSXRlbSAqL10oXCJBamF4XCIsIF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhamF4UmVzcG9uc2UgPSAoX2EgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHhocltfRFlOX1NUQVRVU19URVhUIC8qIEBtaW46JTJlc3RhdHVzVGV4dCAqL11cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hW19EWU5fSEVBREVSX01BUCAvKiBAbWluOmhlYWRlck1hcCAqL10gPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hW19EWU5fQ09SUkVMQVRJT05fQ09OVEVYVCAvKiBAbWluOmNvcnJlbGF0aW9uQ29udGV4dCAqL10gPSBfZ2V0QWpheENvcnJlbGF0aW9uQ29udGV4dCh4aHIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnR5cGUgPSB4aHIucmVzcG9uc2VUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hW19EWU5fUkVTUE9OU0VfVEVYVCAvKiBAbWluOnJlc3BvbnNlVGV4dCAqL10gPSBfZ2V0UmVzcG9uc2VUZXh0KHhociksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EucmVzcG9uc2UgPSB4aHJbX0RZTl9SRVNQT05TRSAvKiBAbWluOiUyZXJlc3BvbnNlICovXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2VuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVycyA9IHhocltfRFlOX0dFVF9BTExfUkVTUE9OU0VfSEVBMTYgLyogQG1pbjolMmVnZXRBbGxSZXNwb25zZUhlYWRlcnMgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIG1ldGhvZCByZXR1cm5zIGFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nIG9yIG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlZ2V4IGNvbnZlcnRzIHRoZSBoZWFkZXIgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBoZWFkZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcnIgPSBzdHJUcmltKGhlYWRlcnMpLnNwbGl0KC9bXFxyXFxuXSsvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlSGVhZGVyTWFwXzIgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChhcnIsIGZ1bmN0aW9uIChsaW5lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KFwiOiBcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVyID0gcGFydHMuc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oXCI6IFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfY2FuSW5jbHVkZUhlYWRlcnMoaGVhZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlSGVhZGVyTWFwXzJbaGVhZGVyXSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheFJlc3BvbnNlW19EWU5fSEVBREVSX01BUCAvKiBAbWluOiUyZWhlYWRlck1hcCAqL10gPSByZXNwb25zZUhlYWRlck1hcF8yO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhamF4UmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIV9hZGRSZXF1ZXN0Q29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBfYWRkUmVxdWVzdENvbnRleHQoeyBzdGF0dXM6IHhocltfRFlOX1NUQVRVUyAvKiBAbWluOiUyZXN0YXR1cyAqL10sIHhocjogeGhyIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbFdhcm5pbmcoX3NlbGYsIDEwNCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZEFkZGluZ0N1c3RvbURlZmluZWRSZXF1ZXN0Q29udGV4dCAqLywgQ1VTVE9NX1JFUVVFU1RfQ09OVEVYVF9FUlJPUik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcGVuZGVuY3kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5W1NUUl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVwZW5kZW5jeS5wcm9wZXJ0aWVzKSwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3lzUHJvcGVydGllcyA9IGFqYXhEYXRhW19EWU5fR0VUX1BBUlRfQVBST1BTIC8qIEBtaW46JTJlZ2V0UGFydEFQcm9wcyAqL10oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXBvcnREZXBlbmRlbmN5SW50ZXJuYWwoX2RlcGVuZGVuY3lJbml0aWFsaXplcnMsIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dLCBhamF4RGF0YSwgZGVwZW5kZW5jeSwgbnVsbCwgc3lzUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVwb3J0WGhyRXJyb3IobnVsbCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTZW50VGltZTogYWpheERhdGFbX0RZTl9SRVFVRVNUX1NFTlRfVElNRSAvKiBAbWluOiUyZXJlcXVlc3RTZW50VGltZSAqL10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGaW5pc2hlZFRpbWU6IGFqYXhEYXRhW19EWU5fUkVTUE9OU0VfRklOSVNIRURfVEkxNSAvKiBAbWluOiUyZXJlc3BvbnNlRmluaXNoZWRUaW1lICovXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFudXAgdGVsZW1ldHJ5IGRhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhocltzdHJBamF4RGF0YV0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXkgdGhyb3cgaW4gZW52aXJvbm1lbnRzIHRoYXQgcHJldmVudCBleHRlbnNpb24gb3IgZnJlZXplIHhoclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfcmVwb3J0WGhyRXJyb3IoZSwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZ2V0QWpheENvcnJlbGF0aW9uQ29udGV4dCh4aHIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlSGVhZGVyc1N0cmluZyA9IHhocltfRFlOX0dFVF9BTExfUkVTUE9OU0VfSEVBMTYgLyogQG1pbjolMmVnZXRBbGxSZXNwb25zZUhlYWRlcnMgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlSGVhZGVyc1N0cmluZyAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBfaW5kZXhPZihyZXNwb25zZUhlYWRlcnNTdHJpbmdbX0RZTl9UT19MT1dFUl9DQVNFIC8qIEBtaW46JTJldG9Mb3dlckNhc2UgKi9dKCksIFJlcXVlc3RIZWFkZXJzWzggLyogZVJlcXVlc3RIZWFkZXJzLnJlcXVlc3RDb250ZXh0SGVhZGVyTG93ZXJDYXNlICovXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZUhlYWRlciA9IHhoci5nZXRSZXNwb25zZUhlYWRlcihSZXF1ZXN0SGVhZGVyc1swIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlciAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvcnJlbGF0aW9uSWRIZWxwZXJbX0RZTl9HRVRfQ09SUkVMQVRJT05fQ09OVDE3IC8qIEBtaW46JTJlZ2V0Q29ycmVsYXRpb25Db250ZXh0ICovXShyZXNwb25zZUhlYWRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsV2FybmluZyhfc2VsZiwgMTggLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5GYWlsZWRNb25pdG9yQWpheEdldENvcnJlbGF0aW9uSGVhZGVyICovLCBDT1JSRUxBVElPTl9IRUFERVJfRVJST1IsIChfYSA9IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfYVtfRFlOX0FKQVhfRElBR05PU1RJQ1NfTUVTMTkgLyogQG1pbjphamF4RGlhZ25vc3RpY3NNZXNzYWdlICovXSA9IF9nZXRGYWlsZWRBamF4RGlhZ25vc3RpY3NNZXNzYWdlKHhociksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmV4Y2VwdGlvbiA9IGR1bXBPYmooZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2NyZWF0ZU1hcmtJZCh0eXBlLCBhamF4RGF0YSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFqYXhEYXRhW19EWU5fUkVRVUVTVF9VUkwgLyogQG1pbjolMmVyZXF1ZXN0VXJsICovXSAmJiBfbWFya1ByZWZpeCAmJiBfZW5hYmxlQWpheFBlcmZUcmFja2luZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJmb3JtYW5jZV8xID0gZ2V0UGVyZm9ybWFuY2UoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocGVyZm9ybWFuY2VfMSAmJiBpc0Z1bmN0aW9uKHBlcmZvcm1hbmNlXzEubWFyaykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX21hcmtDb3VudCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFya0lkID0gX21hcmtQcmVmaXggKyB0eXBlICsgXCIjXCIgKyBfbWFya0NvdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZV8xLm1hcmsobWFya0lkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJpZXMgPSBwZXJmb3JtYW5jZV8xLmdldEVudHJpZXNCeU5hbWUobWFya0lkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fUEVSRl9NQVJLIC8qIEBtaW46JTJlcGVyZk1hcmsgKi9dID0gZW50cmllc1swXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZmluZFBlcmZSZXNvdXJjZUVudHJ5KGluaXRpYXRvclR5cGUsIGFqYXhEYXRhLCB0cmFja0NhbGxiYWNrLCByZXBvcnRFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIHBlcmZNYXJrID0gYWpheERhdGFbX0RZTl9QRVJGX01BUksgLyogQG1pbjolMmVwZXJmTWFyayAqL107XHJcbiAgICAgICAgICAgICAgICB2YXIgcGVyZm9ybWFuY2UgPSBnZXRQZXJmb3JtYW5jZSgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heEF0dGVtcHRzID0gX2NvbmZpZy5tYXhBamF4UGVyZkxvb2t1cEF0dGVtcHRzO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJldHJ5RGVsYXkgPSBfY29uZmlnW19EWU5fQUpBWF9QRVJGX0xPT0tVUF9ERUwxOCAvKiBAbWluOiUyZWFqYXhQZXJmTG9va3VwRGVsYXkgKi9dO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlcXVlc3RVcmwgPSBhamF4RGF0YVtfRFlOX1JFUVVFU1RfVVJMIC8qIEBtaW46JTJlcmVxdWVzdFVybCAqL107XHJcbiAgICAgICAgICAgICAgICB2YXIgYXR0ZW1wdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAoZnVuY3Rpb24gbG9jYXRlUmVzb3VyY2VUaW1pbmcoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlcmZvcm1hbmNlICYmIHBlcmZNYXJrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRlbXB0Kys7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGVyZlRpbWluZyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGxwID0gZW50cmllc1tfRFlOX0xFTkdUSCAvKiBAbWluOiUyZWxlbmd0aCAqL10gLSAxOyBscCA+PSAwOyBscC0tKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tscF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS5lbnRyeVR5cGUgPT09IFwicmVzb3VyY2VcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmluaXRpYXRvclR5cGUgPT09IGluaXRpYXRvclR5cGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2luZGV4T2YoZW50cnlbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10sIHJlcXVlc3RVcmwpICE9PSAtMSB8fCBfaW5kZXhPZihyZXF1ZXN0VXJsLCBlbnRyeVtfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSkgIT09IC0xKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZUaW1pbmcgPSBlbnRyeTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS5lbnRyeVR5cGUgPT09IFwibWFya1wiICYmIGVudHJ5W19EWU5fTkFNRSAvKiBAbWluOiUyZW5hbWUgKi9dID09PSBwZXJmTWFya1tfRFlOX05BTUUgLyogQG1pbjolMmVuYW1lICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGl0IHRoZSBzdGFydCBldmVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9QRVJGX1RJTUlORyAvKiBAbWluOiUyZXBlcmZUaW1pbmcgKi9dID0gcGVyZlRpbWluZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeVtfRFlOX1NUQVJUX1RJTUUgLyogQG1pbjolMmVzdGFydFRpbWUgKi9dIDwgcGVyZk1hcmtbX0RZTl9TVEFSVF9USU1FIC8qIEBtaW46JTJlc3RhcnRUaW1lICovXSAtIDEwMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSB0aW1lIHNwZW50IGxvb2tpbmcgZm9yIHRoZSBwZXJmIGVudHJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBlcmZNYXJrIHx8IC8vIC0gd2UgZG9uJ3QgaGF2ZSBhIHBlcmZNYXJrIG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1BFUkZfVElNSU5HIC8qIEBtaW46JTJlcGVyZlRpbWluZyAqL10gfHwgLy8gLSB3ZSBoYXZlIG5vdCBmb3VuZCB0aGUgcGVyZiBlbnRyeSBvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdCA+PSBtYXhBdHRlbXB0cyB8fCAvLyAtIHdlIGhhdmUgdHJpZWQgdG9vIG1hbnkgYXR0ZW1wdHMgb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhEYXRhLmFzeW5jID09PSBmYWxzZSkgeyAvLyAtIHRoaXMgaXMgYSBzeW5jIHJlcXVlc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZXJmTWFyayAmJiBpc0Z1bmN0aW9uKHBlcmZvcm1hbmNlLmNsZWFyTWFya3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBtYXJrIHNvIHdlIGRvbid0IGZpbGwgdXAgdGhlIHBlcmZvcm1hbmNlIHJlc291cmNlcyB0b28gbXVjaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1hbmNlLmNsZWFyTWFya3MocGVyZk1hcmtbX0RZTl9OQU1FIC8qIEBtaW46JTJlbmFtZSAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheERhdGEucGVyZkF0dGVtcHRzID0gYXR0ZW1wdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgY29udGludWUgYW5kIHJlcG9ydCB0aGUgdHJhY2sgZXZlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGJyb3dzZXIgdG8gcG9wdWxhdGUgdGhlIHdpbmRvdy5wZXJmb3JtYW5jZSBlbnRyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBhdCBsZWFzdCAxbXMgYXMgd2FpdGluZyA8PSAxIChvbiBmaXJlZm94KSBpcyBub3QgZW5vdWdoIHRpbWUgZm9yIGZldGNoIG9yIHhocixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBzY2hlZHVsaW5nIGlzc3VlIGZvciB0aGUgYnJvd3NlciBpbXBsZW1lbnRhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChsb2NhdGVSZXNvdXJjZVRpbWluZywgcmV0cnlEZWxheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfY3JlYXRlRmV0Y2hSZWNvcmQoaW5wdXQsIGluaXQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfYTtcclxuICAgICAgICAgICAgICAgIHZhciBkaXN0cmlidXRlZFRyYWNlQ3R4ID0gX2dldERpc3RyaWJ1dGVkVHJhY2VDdHgoKTtcclxuICAgICAgICAgICAgICAgIHZhciB0cmFjZUlEID0gKGRpc3RyaWJ1dGVkVHJhY2VDdHggJiYgZGlzdHJpYnV0ZWRUcmFjZUN0eFtfRFlOX0dFVF9UUkFDRV9JRCAvKiBAbWluOiUyZWdldFRyYWNlSWQgKi9dKCkpIHx8IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgICAgICAgICAgICAgIHZhciBzcGFuSUQgPSBnZW5lcmF0ZVczQ0lkKCkuc3Vic3RyKDAsIDE2KTtcclxuICAgICAgICAgICAgICAgIHZhciBhamF4RGF0YSA9IG5ldyBhamF4UmVjb3JkKHRyYWNlSUQsIHNwYW5JRCwgX3NlbGZbc3RyRGlhZ0xvZ10oKSwgKF9hID0gX3NlbGYuY29yZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldFRyYWNlQ3R4KCkpO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9UUkFDRV9GTEFHUyAvKiBAbWluOiUyZXRyYWNlRmxhZ3MgKi9dID0gZGlzdHJpYnV0ZWRUcmFjZUN0eCAmJiBkaXN0cmlidXRlZFRyYWNlQ3R4W19EWU5fR0VUX1RSQUNFX0ZMQUdTIC8qIEBtaW46JTJlZ2V0VHJhY2VGbGFncyAqL10oKTtcclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fUkVRVUVTVF9TRU5UX1RJTUUgLyogQG1pbjolMmVyZXF1ZXN0U2VudFRpbWUgKi9dID0gZGF0ZVRpbWVVdGlsc05vdygpO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9FUlJPUl9TVEFUVVNfVEVYVCAvKiBAbWluOiUyZWVycm9yU3RhdHVzVGV4dCAqL10gPSBfZW5hYmxlQWpheEVycm9yU3RhdHVzVGV4dDtcclxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfVVJMIC8qIEBtaW46JTJlcmVxdWVzdFVybCAqL10gPSBpbnB1dCA/IGlucHV0LnVybCA6IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBhamF4RGF0YVtfRFlOX1JFUVVFU1RfVVJMIC8qIEBtaW46JTJlcmVxdWVzdFVybCAqL10gPSBpbnB1dDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBtZXRob2QgPSBcIkdFVFwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluaXQgJiYgaW5pdFtfRFlOX01FVEhPRCAvKiBAbWluOiUyZW1ldGhvZCAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSBpbml0W19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlucHV0ICYmIGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IGlucHV0W19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fTUVUSE9EIC8qIEBtaW46JTJlbWV0aG9kICovXSA9IG1ldGhvZDtcclxuICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IHt9O1xyXG4gICAgICAgICAgICAgICAgaWYgKF9lbmFibGVSZXF1ZXN0SGVhZGVyVHJhY2tpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKChpbml0ID8gaW5pdFtfRFlOX0hFQURFUlMgLyogQG1pbjolMmVoZWFkZXJzICovXSA6IDApIHx8IChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QgPyAoaW5wdXRbX0RZTl9IRUFERVJTIC8qIEBtaW46JTJlaGVhZGVycyAqL10gfHwge30pIDoge30pKTtcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9jYW5JbmNsdWRlSGVhZGVycyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGFqYXhEYXRhW19EWU5fUkVRVUVTVF9IRUFERVJTIC8qIEBtaW46JTJlcmVxdWVzdEhlYWRlcnMgKi9dID0gcmVxdWVzdEhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICBfY3JlYXRlTWFya0lkKFwiZmV0Y2hcIiwgYWpheERhdGEpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFqYXhEYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9nZXRGYWlsZWRGZXRjaERpYWdub3N0aWNzTWVzc2FnZShpbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGlucHV0KSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFwiKHVybDogJ1wiLmNvbmNhdChpbnB1dCwgXCInKVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBcIih1cmw6ICdcIi5jb25jYXQoaW5wdXQudXJsLCBcIicpXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbENyaXRpY2FsKF9zZWxmLCAxNSAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZE1vbml0b3JBamF4T3BlbiAqLywgXCJGYWlsZWQgdG8gZ3JhYiBmYWlsZWQgZmV0Y2ggZGlhZ25vc3RpY3MgbWVzc2FnZVwiLCB7IGV4Y2VwdGlvbjogZHVtcE9iaihlKSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3JlcG9ydEZldGNoTWV0cmljcyhjYWxsRGV0YWlscywgc3RhdHVzLCBpbnB1dCwgcmVzcG9uc2UsIGFqYXhEYXRhLCBnZXRSZXNwb25zZSwgcHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFhamF4RGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIF9yZXBvcnRGZXRjaEVycm9yKG1zZ0lkLCBlLCBmYWlsZWRQcm9wcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvclByb3BzID0gZmFpbGVkUHJvcHMgfHwge307XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JQcm9wc1tcImZldGNoRGlhZ25vc3RpY3NNZXNzYWdlXCJdID0gX2dldEZhaWxlZEZldGNoRGlhZ25vc3RpY3NNZXNzYWdlKGlucHV0KTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclByb3BzW1wiZXhjZXB0aW9uXCJdID0gZHVtcE9iaihlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWxXYXJuaW5nKF9zZWxmLCBtc2dJZCwgRkFJTEVEX1RPX0NBTENVTEFURV9EVVJBVElPTl9FUlJPUiArIFwiZmV0Y2ggY2FsbFwiICsgRVJST1JfTk9UX1NFTlQsIGVycm9yUHJvcHMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1IC8qIEBtaW46JTJlcmVzcG9uc2VGaW5pc2hlZFRpbWUgKi9dID0gZGF0ZVRpbWVVdGlsc05vdygpO1xyXG4gICAgICAgICAgICAgICAgYWpheERhdGFbX0RZTl9TVEFUVVMgLyogQG1pbjolMmVzdGF0dXMgKi9dID0gc3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgX2ZpbmRQZXJmUmVzb3VyY2VFbnRyeShcImZldGNoXCIsIGFqYXhEYXRhLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBhamF4RGF0YVtfRFlOX19DUkVBVEVfVFJBQ0tfSVRFTSAvKiBAbWluOiUyZUNyZWF0ZVRyYWNrSXRlbSAqL10oXCJGZXRjaFwiLCBfZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nLCBnZXRSZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhX2FkZFJlcXVlc3RDb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gX2FkZFJlcXVlc3RDb250ZXh0KHsgc3RhdHVzOiBzdGF0dXMsIHJlcXVlc3Q6IGlucHV0LCByZXNwb25zZTogcmVzcG9uc2UgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWxXYXJuaW5nKF9zZWxmLCAxMDQgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5GYWlsZWRBZGRpbmdDdXN0b21EZWZpbmVkUmVxdWVzdENvbnRleHQgKi8sIENVU1RPTV9SRVFVRVNUX0NPTlRFWFRfRVJST1IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVwZW5kZW5jeSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5W1NUUl9QUk9QRVJUSUVTIC8qIEBtaW46JTJlcHJvcGVydGllcyAqL10gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVwZW5kZW5jeS5wcm9wZXJ0aWVzKSwgcHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN5c1Byb3BlcnRpZXMgPSBhamF4RGF0YVtfRFlOX0dFVF9QQVJUX0FQUk9QUyAvKiBAbWluOiUyZWdldFBhcnRBUHJvcHMgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9yZXBvcnREZXBlbmRlbmN5SW50ZXJuYWwoX2RlcGVuZGVuY3lJbml0aWFsaXplcnMsIF9zZWxmW19EWU5fQ09SRSAvKiBAbWluOiUyZWNvcmUgKi9dLCBhamF4RGF0YSwgZGVwZW5kZW5jeSwgbnVsbCwgc3lzUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfcmVwb3J0RmV0Y2hFcnJvcigxNCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZE1vbml0b3JBamF4RHVyICovLCBudWxsLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U2VudFRpbWU6IGFqYXhEYXRhW19EWU5fUkVRVUVTVF9TRU5UX1RJTUUgLyogQG1pbjolMmVyZXF1ZXN0U2VudFRpbWUgKi9dLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VGaW5pc2hlZFRpbWU6IGFqYXhEYXRhW19EWU5fUkVTUE9OU0VfRklOSVNIRURfVEkxNSAvKiBAbWluOiUyZXJlc3BvbnNlRmluaXNoZWRUaW1lICovXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9yZXBvcnRGZXRjaEVycm9yKDE4IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkTW9uaXRvckFqYXhHZXRDb3JyZWxhdGlvbkhlYWRlciAqLywgZSwgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZ2V0RmV0Y2hDb3JyZWxhdGlvbkNvbnRleHQocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZVtfRFlOX0hFQURFUlMgLyogQG1pbjolMmVoZWFkZXJzICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZUhlYWRlciA9IHJlc3BvbnNlW19EWU5fSEVBREVSUyAvKiBAbWluOiUyZWhlYWRlcnMgKi9dLmdldChSZXF1ZXN0SGVhZGVyc1swIC8qIGVSZXF1ZXN0SGVhZGVycy5yZXF1ZXN0Q29udGV4dEhlYWRlciAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29ycmVsYXRpb25JZEhlbHBlcltfRFlOX0dFVF9DT1JSRUxBVElPTl9DT05UMTcgLyogQG1pbjolMmVnZXRDb3JyZWxhdGlvbkNvbnRleHQgKi9dKHJlc3BvbnNlSGVhZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWxXYXJuaW5nKF9zZWxmLCAxOCAvKiBfZUludGVybmFsTWVzc2FnZUlkLkZhaWxlZE1vbml0b3JBamF4R2V0Q29ycmVsYXRpb25IZWFkZXIgKi8sIENPUlJFTEFUSU9OX0hFQURFUl9FUlJPUiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hEaWFnbm9zdGljc01lc3NhZ2U6IF9nZXRGYWlsZWRGZXRjaERpYWdub3N0aWNzTWVzc2FnZShyZXNwb25zZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb246IGR1bXBPYmooZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9yZXBvcnREZXBlbmRlbmN5SW50ZXJuYWwoaW5pdGlhbGl6ZXJzLCBjb3JlLCBhamF4RGF0YSwgZGVwZW5kZW5jeSwgcHJvcGVydGllcywgc3lzdGVtUHJvcGVydGllcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdGlhbGl6ZXJzQ291bnQgPSBpbml0aWFsaXplcnNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxpemVyc0NvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxzID0gKF9hID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogZGVwZW5kZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfYVtTVFJfUFJPUEVSVElFUyAvKiBAbWluOnByb3BlcnRpZXMgKi9dID0gcHJvcGVydGllcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc3lzUHJvcGVydGllcyA9IHN5c3RlbVByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmNvbnRleHQgPSBhamF4RGF0YSA/IGFqYXhEYXRhW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2EpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9wcm9jZXNzRGVwZW5kZW5jeUNvbnRhaW5lcihjb3JlLCBpbml0aWFsaXplcnMsIGRldGFpbHMsIFwiaW5pdGlhbGl6ZXJcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9UUkFDS19ERVBFTkRFTkNZX0RBVDQgLyogQG1pbjolMmV0cmFja0RlcGVuZGVuY3lEYXRhSW50ZXJuYWwgKi9dKGRlcGVuZGVuY3ksIHByb3BlcnRpZXMsIHN5c3RlbVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIF90aGlzO1xyXG4gICAgfVxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFqYXhNb25pdG9yLnByb3RvdHlwZS5pbml0aWFsaXplLlxyXG4gICAgQWpheE1vbml0b3IucHJvdG90eXBlLnByb2Nlc3NUZWxlbWV0cnkgPSBmdW5jdGlvbiAoaXRlbSwgaXRlbUN0eCkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc05leHQoaXRlbSwgaXRlbUN0eCk7XHJcbiAgICB9O1xyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFqYXhNb25pdG9yLnByb3RvdHlwZS50cmFja0RlcGVuZGVuY3lEYXRhLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFqYXhNb25pdG9yLnByb3RvdHlwZS5pbmNsdWRlQ29ycmVsYXRpb25IZWFkZXJzLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEFqYXhNb25pdG9yLnByb3RvdHlwZS5hZGREZXBlbmRlbmN5TGlzdGVuZXIuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBhbiBkZXBlbmRlbmN5IHRlbGVtZXRyeSBpbml0aWFsaXplciBjYWxsYmFjayBmdW5jdGlvbiB0byBhbGxvdyBwb3B1bGF0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBvciBkcm9wIHRoZSByZXF1ZXN0LlxyXG4gICAgICogSXQgaXMgY2FsbGVkIGFmdGVyIHRoZSBkZXBlbmRlbmN5IGNhbGwgaGFzIGNvbXBsZXRlZCBhbmQgYW55IGF2YWlsYWJsZSBwZXJmb3JtYW5jZSBkZXRhaWxzIGFyZSBhdmFpbGFibGUuIEEgZGVwZW5kZW5jeVxyXG4gICAgICogaW5pdGlhbGl6ZXIgaXMgc2ltaWxhciB0byB0aGUgVGVsZW1ldHJ5SW5pdGlhbGl6ZXIgZnVuY3Rpb24gYnV0IGl0IGFsbG93cyB5b3UgdG8gYmxvY2sgdGhlIHJlcG9ydGluZyBvZiB0aGUgZGVwZW5kZW5jeVxyXG4gICAgICogcmVxdWVzdCBzbyB0aGF0IGl0IGRvZXNuJ3QgY291bnQgYWdhaW5zdCB0aGUgYG1heEFqYXhDYWxsc1BlclZpZXdgLlxyXG4gICAgICogQHBhcmFtIGRlcGVuZGVuY3lJbml0aWFsaXplciAtIFRoZSBEZXBlbmRlbmN5IFRlbGVtZXRyeSBJbml0aWFsaXplciBmdW5jdGlvblxyXG4gICAgICogQHJldHVybnMgLSBBIElEZXBlbmRlbmN5SW5pdGlhbGl6ZXJIYW5kbGVyIHRvIGVuYWJsZSB0aGUgaW5pdGlhbGl6ZXIgdG8gYmUgcmVtb3ZlZFxyXG4gICAgICovXHJcbiAgICBBamF4TW9uaXRvci5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeUluaXRpYWxpemVyID0gZnVuY3Rpb24gKGRlcGVuZGVuY3lJbml0aWFsaXplcikge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuLy8gUmVtb3ZlZCBTdHViIGZvciBBamF4TW9uaXRvci5wcm90b3R5cGUudHJhY2tEZXBlbmRlbmN5RGF0YUludGVybmFsLlxyXG4gICAgQWpheE1vbml0b3IuaWRlbnRpZmllciA9IFwiQWpheERlcGVuZGVuY3lQbHVnaW5cIjtcclxuICAgIEFqYXhNb25pdG9yLmdldERlZmF1bHRDb25maWcgPSBfZ2V0RGVmYXVsdENvbmZpZztcclxuICAgIEFqYXhNb25pdG9yLmdldEVtcHR5Q29uZmlnID0gX2dldEVtcHR5Q29uZmlnO1xyXG4gICAgcmV0dXJuIEFqYXhNb25pdG9yO1xyXG59KEJhc2VUZWxlbWV0cnlQbHVnaW4pKTtcclxuZXhwb3J0IHsgQWpheE1vbml0b3IgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YWpheC5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBQcm9wZXJ0aWVzIFBsdWdpbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxudmFyIEFwcGxpY2F0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQXBwbGljYXRpb24oKSB7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQXBwbGljYXRpb247XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEFwcGxpY2F0aW9uIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwcGxpY2F0aW9uLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFByb3BlcnRpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG52YXIgRGV2aWNlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBEZXZpY2UgY2xhc3NcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gRGV2aWNlKCkge1xyXG4gICAgICAgIC8vIGRvbid0IGF0dGVtcHQgdG8gZmluZ2VycHJpbnQgYnJvd3NlcnNcclxuICAgICAgICB0aGlzLmlkID0gXCJicm93c2VyXCI7XHJcbiAgICAgICAgLy8gRGV2aWNlIHR5cGUgaXMgYSBkaW1lbnNpb24gaW4gb3VyIGRhdGEgcGxhdGZvcm1cclxuICAgICAgICAvLyBTZXR0aW5nIGl0IHRvICdCcm93c2VyJyBhbGxvd3MgdG8gc2VwYXJhdGUgY2xpZW50IGFuZCBzZXJ2ZXIgZGVwZW5kZW5jaWVzL2V4Y2VwdGlvbnNcclxuICAgICAgICB0aGlzLmRldmljZUNsYXNzID0gXCJCcm93c2VyXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gRGV2aWNlO1xyXG59KCkpO1xyXG5leHBvcnQgeyBEZXZpY2UgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RGV2aWNlLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFByb3BlcnRpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG4vLyBAc2tpcC1maWxlLW1pbmlmeVxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyBBVVRPIEdFTkVSQVRFRCBGSUxFOiBUaGlzIGZpbGUgaXMgQXV0byBHZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkLlxyXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG4vLyBOb3RlOiBET04nVCBFeHBvcnQgdGhlc2UgY29uc3QgZnJvbSB0aGUgcGFja2FnZSBhcyB3ZSBhcmUgc3RpbGwgdGFyZ2V0aW5nIEVTMyB0aGlzIHdpbGwgZXhwb3J0IGEgbXV0YWJsZSB2YXJpYWJsZXMgdGhhdCBzb21lb25lIGNvdWxkIGNoYW5nZSEhIVxyXG4vLyAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIVxyXG5leHBvcnQgdmFyIF9EWU5fU0VTU0lPTl9NQU5BR0VSID0gXCJzZXNzaW9uTWFuYWdlclwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fVVBEQVRFID0gXCJ1cGRhdGVcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0lTX1VTRVJfQ09PS0lFX1NFVCA9IFwiaXNVc2VyQ29va2llU2V0XCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9JU19ORVdfVVNFUiA9IFwiaXNOZXdVc2VyXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9HRVRfVFJBQ0VfQ1RYID0gXCJnZXRUcmFjZUN0eFwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fVEVMRU1FVFJZX1RSQUNFID0gXCJ0ZWxlbWV0cnlUcmFjZVwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fQVBQTFlfU0VTU0lPTl9DT05URVgwID0gXCJhcHBseVNlc3Npb25Db250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9BUFBMSUNBVElPTl9DTzEgPSBcImFwcGx5QXBwbGljYXRpb25Db250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9ERVZJQ0VfQ09OVEVYVCA9IFwiYXBwbHlEZXZpY2VDb250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9PUEVSQVRJT05fQ09OVDIgPSBcImFwcGx5T3BlcmF0aW9uQ29udGV4dFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fQVBQTFlfVVNFUl9DT05URVhUID0gXCJhcHBseVVzZXJDb250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9PUEVSQVRJTkdfU1lTVDMgPSBcImFwcGx5T3BlcmF0aW5nU3lzdGVtQ29udHh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9MT0NBVElPTl9DT05URTQgPSBcImFwcGx5TG9jYXRpb25Db250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBMWV9JTlRFUk5BTF9DT05URTUgPSBcImFwcGx5SW50ZXJuYWxDb250ZXh0XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BQ0NPVU5UX0lEID0gXCJhY2NvdW50SWRcIjsgLy8gQ291bnQ6IDhcclxuZXhwb3J0IHZhciBfRFlOX1NES19FWFRFTlNJT04gPSBcInNka0V4dGVuc2lvblwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX1NFU1NJT05fSUQgPSBcImdldFNlc3Npb25JZFwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fTkFNRV9QUkVGSVggPSBcIm5hbWVQcmVmaXhcIjsgLy8gQ291bnQ6IDdcclxuZXhwb3J0IHZhciBfRFlOX1NFU1NJT05fQ09PS0lFX1BPU1RGNiA9IFwic2Vzc2lvbkNvb2tpZVBvc3RmaXhcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX1VTRVJfQ09PS0lFX1BPU1RGSVggPSBcInVzZXJDb29raWVQb3N0Zml4XCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9JRF9MRU5HVEggPSBcImlkTGVuZ3RoXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9HRVRfTkVXX0lEID0gXCJnZXROZXdJZFwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fTEVOR1RIID0gXCJsZW5ndGhcIjsgLy8gQ291bnQ6IDRcclxuZXhwb3J0IHZhciBfRFlOX0FVVE9NQVRJQ19TRVNTSU9OID0gXCJhdXRvbWF0aWNTZXNzaW9uXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9BVVRIRU5USUNBVEVEX0lEID0gXCJhdXRoZW50aWNhdGVkSWRcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX1NFU1NJT05fRVhQSVJBVElPTl9NNyA9IFwic2Vzc2lvbkV4cGlyYXRpb25Nc1wiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fU0VTU0lPTl9SRU5FV0FMX01TID0gXCJzZXNzaW9uUmVuZXdhbE1zXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9DT05GSUcgPSBcImNvbmZpZ1wiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fQUNRVUlTSVRJT05fREFURSA9IFwiYWNxdWlzaXRpb25EYXRlXCI7IC8vIENvdW50OiA1XHJcbmV4cG9ydCB2YXIgX0RZTl9SRU5FV0FMX0RBVEUgPSBcInJlbmV3YWxEYXRlXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9DT09LSUVfRE9NQUlOID0gXCJjb29raWVEb21haW5cIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0pPSU4gPSBcImpvaW5cIjsgLy8gQ291bnQ6IDVcclxuZXhwb3J0IHZhciBfRFlOX0NPT0tJRV9TRVBBUkFUT1IgPSBcImNvb2tpZVNlcGFyYXRvclwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fQVVUSF9VU0VSX0NPT0tJRV9OQU04ID0gXCJhdXRoVXNlckNvb2tpZU5hbWVcIjsgLy8gQ291bnQ6IDNcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9X19EeW5hbWljQ29uc3RhbnRzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFByb3BlcnRpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBfRFlOX1NES19FWFRFTlNJT04gfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBWZXJzaW9uID0gJzIuOC45JztcclxudmFyIEludGVybmFsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBpbnRlcm5hbCB0ZWxlbWV0cnkgZGF0YSBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gSW50ZXJuYWwoY29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy5zZGtWZXJzaW9uID0gKGNvbmZpZ1tfRFlOX1NES19FWFRFTlNJT04gLyogQG1pbjolMmVzZGtFeHRlbnNpb24gKi9dICYmIGNvbmZpZ1tfRFlOX1NES19FWFRFTlNJT04gLyogQG1pbjolMmVzZGtFeHRlbnNpb24gKi9dKCkgPyBjb25maWdbX0RZTl9TREtfRVhURU5TSU9OIC8qIEBtaW46JTJlc2RrRXh0ZW5zaW9uICovXSgpICsgXCJfXCIgOiBcIlwiKSArIFwiamF2YXNjcmlwdDpcIiArIFZlcnNpb247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSW50ZXJuYWw7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEludGVybmFsIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUludGVybmFsLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFByb3BlcnRpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG52YXIgTG9jYXRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBMb2NhdGlvbigpIHtcclxuICAgIH1cclxuICAgIHJldHVybiBMb2NhdGlvbjtcclxufSgpKTtcclxuZXhwb3J0IHsgTG9jYXRpb24gfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TG9jYXRpb24uanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gUHJvcGVydGllcyBQbHVnaW4sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IHV0bENhblVzZUxvY2FsU3RvcmFnZSwgdXRsR2V0TG9jYWxTdG9yYWdlLCB1dGxTZXRMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBfdGhyb3dJbnRlcm5hbCwgZGF0ZU5vdywgZHVtcE9iaiwgZ2V0RXhjZXB0aW9uTmFtZSwgaXNGdW5jdGlvbiwgbmV3SWQsIHNhZmVHZXRDb29raWVNZ3IsIHNhZmVHZXRMb2dnZXIgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9BQ1FVSVNJVElPTl9EQVRFLCBfRFlOX0FVVE9NQVRJQ19TRVNTSU9OLCBfRFlOX0NPTkZJRywgX0RZTl9DT09LSUVfRE9NQUlOLCBfRFlOX0dFVF9ORVdfSUQsIF9EWU5fSURfTEVOR1RILCBfRFlOX0pPSU4sIF9EWU5fTEVOR1RILCBfRFlOX05BTUVfUFJFRklYLCBfRFlOX1JFTkVXQUxfREFURSwgX0RZTl9TRVNTSU9OX0NPT0tJRV9QT1NURjYsIF9EWU5fU0VTU0lPTl9FWFBJUkFUSU9OX003LCBfRFlOX1NFU1NJT05fUkVORVdBTF9NUywgX0RZTl9VUERBVEUgfSBmcm9tIFwiLi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBjb29raWVOYW1lQ29uc3QgPSBcImFpX3Nlc3Npb25cIjtcclxudmFyIFNlc3Npb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBTZXNzaW9uKCkge1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFNlc3Npb247XHJcbn0oKSk7XHJcbmV4cG9ydCB7IFNlc3Npb24gfTtcclxudmFyIF9TZXNzaW9uTWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIF9TZXNzaW9uTWFuYWdlcihjb25maWcsIGNvcmUpIHtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgdmFyIF9zdG9yYWdlTmFtZVByZWZpeDtcclxuICAgICAgICB2YXIgX2Nvb2tpZVVwZGF0ZWRUaW1lc3RhbXA7XHJcbiAgICAgICAgdmFyIF9sb2dnZXIgPSBzYWZlR2V0TG9nZ2VyKGNvcmUpO1xyXG4gICAgICAgIHZhciBfY29va2llTWFuYWdlciA9IHNhZmVHZXRDb29raWVNZ3IoY29yZSk7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKF9TZXNzaW9uTWFuYWdlciwgc2VsZiwgZnVuY3Rpb24gKF9zZWxmKSB7XHJcbiAgICAgICAgICAgIGlmICghY29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWcgPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIWlzRnVuY3Rpb24oY29uZmlnW19EWU5fU0VTU0lPTl9FWFBJUkFUSU9OX003IC8qIEBtaW46JTJlc2Vzc2lvbkV4cGlyYXRpb25NcyAqL10pKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWdbX0RZTl9TRVNTSU9OX0VYUElSQVRJT05fTTcgLyogQG1pbjolMmVzZXNzaW9uRXhwaXJhdGlvbk1zICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9TZXNzaW9uTWFuYWdlci5hY3F1aXNpdGlvblNwYW47IH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uKGNvbmZpZ1tfRFlOX1NFU1NJT05fUkVORVdBTF9NUyAvKiBAbWluOiUyZXNlc3Npb25SZW5ld2FsTXMgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgY29uZmlnW19EWU5fU0VTU0lPTl9SRU5FV0FMX01TIC8qIEBtaW46JTJlc2Vzc2lvblJlbmV3YWxNcyAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfU2Vzc2lvbk1hbmFnZXIucmVuZXdhbFNwYW47IH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dID0gY29uZmlnO1xyXG4gICAgICAgICAgICAvLyBzZXNzaW9uQ29va2llUG9zdGZpeCB0YWtlcyB0aGUgcHJlZmVyZW5jZSBpZiBpdCBpcyBjb25maWd1cmVkLCBvdGhlcndpc2UgdGFrZXMgbmFtZVByZWZpeCBpZiBjb25maWd1cmVkLlxyXG4gICAgICAgICAgICB2YXIgc2Vzc2lvbkNvb2tpZVBvc3RmaXggPSAoX3NlbGYuY29uZmlnW19EWU5fU0VTU0lPTl9DT09LSUVfUE9TVEY2IC8qIEBtaW46JTJlc2Vzc2lvbkNvb2tpZVBvc3RmaXggKi9dICYmIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXVtfRFlOX1NFU1NJT05fQ09PS0lFX1BPU1RGNiAvKiBAbWluOiUyZXNlc3Npb25Db29raWVQb3N0Zml4ICovXSgpKSA/XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5jb25maWdbX0RZTl9TRVNTSU9OX0NPT0tJRV9QT1NURjYgLyogQG1pbjolMmVzZXNzaW9uQ29va2llUG9zdGZpeCAqL10oKSA6XHJcbiAgICAgICAgICAgICAgICAoKF9zZWxmLmNvbmZpZ1tfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10gJiYgX3NlbGZbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjolMmVuYW1lUHJlZml4ICovXSgpKSA/IF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXVtfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10oKSA6IFwiXCIpO1xyXG4gICAgICAgICAgICBfc3RvcmFnZU5hbWVQcmVmaXggPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb29raWVOYW1lQ29uc3QgKyBzZXNzaW9uQ29va2llUG9zdGZpeDsgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BVVRPTUFUSUNfU0VTU0lPTiAvKiBAbWluOiUyZWF1dG9tYXRpY1Nlc3Npb24gKi9dID0gbmV3IFNlc3Npb24oKTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9VUERBVEUgLyogQG1pbjolMmV1cGRhdGUgKi9dID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgLy8gQWx3YXlzIHVzaW5nIERhdGUgZ2V0VGltZSgpIGFzIHRoZXJlIGlzIGEgYnVnIGluIG9sZGVyIElFIGluc3RhbmNlcyB0aGF0IGNhdXNlcyB0aGUgcGVyZm9ybWFuY2UgdGltaW5ncyB0byBoYXZlIHRoZSBoaS1iaXQgc2V0IGVnIDB4ODAwMDAwMDAwIGNhdXNpbmdcclxuICAgICAgICAgICAgICAgIC8vIHRoZSBudW1iZXIgdG8gYmUgaW5jb3JyZWN0LlxyXG4gICAgICAgICAgICAgICAgdmFyIG5vd01zID0gZGF0ZU5vdygpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlzRXhwaXJlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlc3Npb24gPSBfc2VsZltfRFlOX0FVVE9NQVRJQ19TRVNTSU9OIC8qIEBtaW46JTJlYXV0b21hdGljU2Vzc2lvbiAqL107XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb24uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpc0V4cGlyZWQgPSAhX2luaXRpYWxpemVBdXRvbWF0aWNTZXNzaW9uKHNlc3Npb24sIG5vd01zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBzZXNzaW9uRXhwaXJhdGlvbk1zID0gX3NlbGYuY29uZmlnW19EWU5fU0VTU0lPTl9FWFBJUkFUSU9OX003IC8qIEBtaW46JTJlc2Vzc2lvbkV4cGlyYXRpb25NcyAqL10oKTtcclxuICAgICAgICAgICAgICAgIGlmICghaXNFeHBpcmVkICYmIHNlc3Npb25FeHBpcmF0aW9uTXMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlc3Npb25SZW5ld2FsTXMgPSBfc2VsZi5jb25maWdbX0RZTl9TRVNTSU9OX1JFTkVXQUxfTVMgLyogQG1pbjolMmVzZXNzaW9uUmVuZXdhbE1zICovXSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lU2luY2VBY3FNcyA9IG5vd01zIC0gc2Vzc2lvbltfRFlOX0FDUVVJU0lUSU9OX0RBVEUgLyogQG1pbjolMmVhY3F1aXNpdGlvbkRhdGUgKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lU2luY2VSZW5ld2FsTXMgPSBub3dNcyAtIHNlc3Npb25bX0RZTl9SRU5FV0FMX0RBVEUgLyogQG1pbjolMmVyZW5ld2FsRGF0ZSAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgaXNFeHBpcmVkID0gdGltZVNpbmNlQWNxTXMgPCAwIHx8IHRpbWVTaW5jZVJlbmV3YWxNcyA8IDA7IC8vIGV4cGlyZWQgaWYgdGhlIGFjcXVpc2l0aW9uIG9yIGxhc3QgcmVuZXdhbCBhcmUgaW4gdGhlIGZ1dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgIGlzRXhwaXJlZCA9IGlzRXhwaXJlZCB8fCB0aW1lU2luY2VBY3FNcyA+IHNlc3Npb25FeHBpcmF0aW9uTXM7IC8vIGV4cGlyZWQgaWYgdGhlIHRpbWUgc2luY2UgYWNxdWlzaXRpb24gaXMgbW9yZSB0aGFuIHNlc3Npb24gRXhwaXJhdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGlzRXhwaXJlZCA9IGlzRXhwaXJlZCB8fCB0aW1lU2luY2VSZW5ld2FsTXMgPiBzZXNzaW9uUmVuZXdhbE1zOyAvLyBleHBpcmVkIGlmIHRoZSB0aW1lIHNpbmNlIGxhc3QgcmVuZXdhbCBpcyBtb3JlIHRoYW4gcmVuZXdhbCBwZXJpb2RcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIHJlbmV3IGlmIGFjcXVpc2l0aW9uU3BhbiBvciByZW5ld2FsU3BhbiBoYXMgZWxhcHNlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGlzRXhwaXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBhdXRvbWF0aWNTZXNzaW9uIHNvIHNlc3Npb24gc3RhdGUgaGFzIGNvcnJlY3QgaWRcclxuICAgICAgICAgICAgICAgICAgICBfcmVuZXcobm93TXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHVwZGF0ZSB0aGUgY29va2llIG1vcmUgb2Z0ZW4gdGhhbiBjb29raWVVcGRhdGVJbnRlcnZhbFxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghX2Nvb2tpZVVwZGF0ZWRUaW1lc3RhbXAgfHwgbm93TXMgLSBfY29va2llVXBkYXRlZFRpbWVzdGFtcCA+IF9TZXNzaW9uTWFuYWdlci5jb29raWVVcGRhdGVJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2V0Q29va2llKHNlc3Npb24sIG5vd01zKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiAgUmVjb3JkIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhdXRvbWF0aWMgc2Vzc2lvbiBhbmQgc3RvcmUgaXQgaW4gb3VyIGNvb2tpZSBzdHJpbmcgZm9ybWF0XHJcbiAgICAgICAgICAgICAqICBpbnRvIHRoZSBicm93c2VyJ3MgbG9jYWwgc3RvcmFnZS4gVGhpcyBpcyB1c2VkIHRvIHJlc3RvcmUgdGhlIHNlc3Npb24gZGF0YSB3aGVuIHRoZSBjb29raWVcclxuICAgICAgICAgICAgICogIGV4cGlyZXMuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi5iYWNrdXAgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2Vzc2lvbiA9IF9zZWxmW19EWU5fQVVUT01BVElDX1NFU1NJT04gLyogQG1pbjolMmVhdXRvbWF0aWNTZXNzaW9uICovXTtcclxuICAgICAgICAgICAgICAgIF9zZXRTdG9yYWdlKHNlc3Npb24uaWQsIHNlc3Npb25bX0RZTl9BQ1FVSVNJVElPTl9EQVRFIC8qIEBtaW46JTJlYWNxdWlzaXRpb25EYXRlICovXSwgc2Vzc2lvbltfRFlOX1JFTkVXQUxfREFURSAvKiBAbWluOiUyZXJlbmV3YWxEYXRlICovXSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBVc2UgY29uZmlnLm5hbWVQcmVmaXggKyBhaV9zZXNzaW9uIGNvb2tpZSBkYXRhIG9yIGxvY2FsIHN0b3JhZ2UgZGF0YSAod2hlbiB0aGUgY29va2llIGlzIHVuYXZhaWxhYmxlKSB0b1xyXG4gICAgICAgICAgICAgKiBpbml0aWFsaXplIHRoZSBhdXRvbWF0aWMgc2Vzc2lvbi5cclxuICAgICAgICAgICAgICogQHJldHVybnMgdHJ1ZSBpZiB2YWx1ZXMgc2V0IG90aGVyd2lzZSBmYWxzZVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luaXRpYWxpemVBdXRvbWF0aWNTZXNzaW9uKHNlc3Npb24sIG5vdykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHZhciBjb29raWVWYWx1ZSA9IF9jb29raWVNYW5hZ2VyLmdldChfc3RvcmFnZU5hbWVQcmVmaXgoKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29va2llVmFsdWUgJiYgaXNGdW5jdGlvbihjb29raWVWYWx1ZS5zcGxpdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gX2luaXRpYWxpemVBdXRvbWF0aWNTZXNzaW9uV2l0aERhdGEoc2Vzc2lvbiwgY29va2llVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUncyBubyBjb29raWUsIGJ1dCB3ZSBtaWdodCBoYXZlIHNlc3Npb24gZGF0YSBpbiBsb2NhbCBzdG9yYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBzZXNzaW9uIGV4cGlyZWQgb3IgdGhlIHVzZXIgYWN0aXZlbHkgZGVsZXRlZCB0aGUgY29va2llXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHJlY292ZXIgZGF0YSBpZiB0aGUgY29va2llIGlzIG1pc3NpbmcgZnJvbSBleHBpcnkuIFdlIHNob3VsZCByZXNwZWN0IHRoZSB1c2VyJ3Mgd2lzaGVzIGlmIHRoZSBjb29raWUgd2FzIGRlbGV0ZWQgYWN0aXZlbHkuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIFVzZXIgY2xhc3MgaGFuZGxlcyB0aGlzIGZvciB1cyBhbmQgZGVsZXRlcyBvdXIgbG9jYWwgc3RvcmFnZSBvYmplY3QgaWYgdGhlIHBlcnNpc3RlbnQgdXNlciBjb29raWUgd2FzIHJlbW92ZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JhZ2VWYWx1ZSA9IHV0bEdldExvY2FsU3RvcmFnZShfbG9nZ2VyLCBfc3RvcmFnZU5hbWVQcmVmaXgoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JhZ2VWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gX2luaXRpYWxpemVBdXRvbWF0aWNTZXNzaW9uV2l0aERhdGEoc2Vzc2lvbiwgc3RvcmFnZVZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZCB8fCAhIXNlc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEV4dHJhY3QgaWQsIGFjcXVpc2l0aW9uRGF0ZSwgYW5kIHJlbmV3YWxEYXRlIGZyb20gYW4gYWlfc2Vzc2lvbiBwYXlsb2FkIHN0cmluZyBhbmRcclxuICAgICAgICAgICAgICogdXNlIHRoaXMgZGF0YSB0byBpbml0aWFsaXplIGF1dG9tYXRpY1Nlc3Npb24uXHJcbiAgICAgICAgICAgICAqXHJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uRGF0YSAtIFRoZSBzdHJpbmcgc3RvcmVkIGluIGFuIGFpX3Nlc3Npb24gY29va2llIG9yIGxvY2FsIHN0b3JhZ2UgYmFja3VwXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHRydWUgaWYgdmFsdWVzIHNldCBvdGhlcndpc2UgZmFsc2VcclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9pbml0aWFsaXplQXV0b21hdGljU2Vzc2lvbldpdGhEYXRhKHNlc3Npb24sIHNlc3Npb25EYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaXNWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNlc3Npb25SZXNldCA9IFwiLCBzZXNzaW9uIHdpbGwgYmUgcmVzZXRcIjtcclxuICAgICAgICAgICAgICAgIHZhciB0b2tlbnMgPSBzZXNzaW9uRGF0YS5zcGxpdChcInxcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAodG9rZW5zW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFjcU1zID0gK3Rva2Vuc1sxXSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVuZXdhbE1zID0gK3Rva2Vuc1syXSB8fCAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oYWNxTXMpIHx8IGFjcU1zIDw9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9sb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCAyNyAvKiBfZUludGVybmFsTWVzc2FnZUlkLlNlc3Npb25SZW5ld2FsRGF0ZUlzWmVybyAqLywgXCJBSSBzZXNzaW9uIGFjcXVpc2l0aW9uIGRhdGUgaXMgMFwiICsgc2Vzc2lvblJlc2V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc05hTihyZW5ld2FsTXMpIHx8IHJlbmV3YWxNcyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfbG9nZ2VyLCAyIC8qIGVMb2dnaW5nU2V2ZXJpdHkuV0FSTklORyAqLywgMjcgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5TZXNzaW9uUmVuZXdhbERhdGVJc1plcm8gKi8sIFwiQUkgc2Vzc2lvbiByZW5ld2FsIGRhdGUgaXMgMFwiICsgc2Vzc2lvblJlc2V0KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbnNbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZXJ5dGhpbmcgbG9va3MgdmFsaWQgc28gc2V0IHRoZSB2YWx1ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24uaWQgPSB0b2tlbnNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uW19EWU5fQUNRVUlTSVRJT05fREFURSAvKiBAbWluOiUyZWFjcXVpc2l0aW9uRGF0ZSAqL10gPSBhY3FNcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bX0RZTl9SRU5FV0FMX0RBVEUgLyogQG1pbjolMmVyZW5ld2FsRGF0ZSAqL10gPSByZW5ld2FsTXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChfbG9nZ2VyLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDkgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5FcnJvclBhcnNpbmdBSVNlc3Npb25Db29raWUgKi8sIFwiRXJyb3IgcGFyc2luZyBhaV9zZXNzaW9uIHZhbHVlIFtcIiArIChzZXNzaW9uRGF0YSB8fCBcIlwiKSArIFwiXVwiICsgc2Vzc2lvblJlc2V0ICsgXCIgLSBcIiArIGdldEV4Y2VwdGlvbk5hbWUoZSksIHsgZXhjZXB0aW9uOiBkdW1wT2JqKGUpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIF9yZW5ldyhub3dNcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRoZUNvbmZpZyA9IChfc2VsZltfRFlOX0NPTkZJRyAvKiBAbWluOiUyZWNvbmZpZyAqL10gfHwge30pO1xyXG4gICAgICAgICAgICAgICAgdmFyIGdldE5ld0lkID0gKHRoZUNvbmZpZ1tfRFlOX0dFVF9ORVdfSUQgLyogQG1pbjolMmVnZXROZXdJZCAqL10gPyB0aGVDb25maWdbX0RZTl9HRVRfTkVXX0lEIC8qIEBtaW46JTJlZ2V0TmV3SWQgKi9dKCkgOiBudWxsKSB8fCBuZXdJZDtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmF1dG9tYXRpY1Nlc3Npb24uaWQgPSBnZXROZXdJZCh0aGVDb25maWdbX0RZTl9JRF9MRU5HVEggLyogQG1pbjolMmVpZExlbmd0aCAqL10gPyB0aGVDb25maWdbX0RZTl9JRF9MRU5HVEggLyogQG1pbjolMmVpZExlbmd0aCAqL10oKSA6IDIyKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQVVUT01BVElDX1NFU1NJT04gLyogQG1pbjolMmVhdXRvbWF0aWNTZXNzaW9uICovXVtfRFlOX0FDUVVJU0lUSU9OX0RBVEUgLyogQG1pbjolMmVhY3F1aXNpdGlvbkRhdGUgKi9dID0gbm93TXM7XHJcbiAgICAgICAgICAgICAgICBfc2V0Q29va2llKF9zZWxmW19EWU5fQVVUT01BVElDX1NFU1NJT04gLyogQG1pbjolMmVhdXRvbWF0aWNTZXNzaW9uICovXSwgbm93TXMpO1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgbG9jYWwgc3RvcmFnZSwgZmlyZSBhbiBpbnRlcm5hbCBsb2cgdG8ga2VlcCB0cmFjayBvZiBpdCBhdCB0aGlzIHBvaW50XHJcbiAgICAgICAgICAgICAgICBpZiAoIXV0bENhblVzZUxvY2FsU3RvcmFnZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX2xvZ2dlciwgMiAvKiBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcgKi8sIDAgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5Ccm93c2VyRG9lc05vdFN1cHBvcnRMb2NhbFN0b3JhZ2UgKi8sIFwiQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGxvY2FsIHN0b3JhZ2UuIFNlc3Npb24gZHVyYXRpb25zIHdpbGwgYmUgaW5hY2N1cmF0ZS5cIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3NldENvb2tpZShzZXNzaW9uLCBub3dNcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFjcSA9IHNlc3Npb25bX0RZTl9BQ1FVSVNJVElPTl9EQVRFIC8qIEBtaW46JTJlYWNxdWlzaXRpb25EYXRlICovXTtcclxuICAgICAgICAgICAgICAgIHNlc3Npb25bX0RZTl9SRU5FV0FMX0RBVEUgLyogQG1pbjolMmVyZW5ld2FsRGF0ZSAqL10gPSBub3dNcztcclxuICAgICAgICAgICAgICAgIHZhciBjb25maWcgPSBfc2VsZltfRFlOX0NPTkZJRyAvKiBAbWluOiUyZWNvbmZpZyAqL107XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVuZXdhbFBlcmlvZE1zID0gY29uZmlnW19EWU5fU0VTU0lPTl9SRU5FV0FMX01TIC8qIEBtaW46JTJlc2Vzc2lvblJlbmV3YWxNcyAqL10oKTtcclxuICAgICAgICAgICAgICAgIC8vIFNldCBjb29raWUgdG8gZXhwaXJlIGFmdGVyIHRoZSBzZXNzaW9uIGV4cGlyeSB0aW1lIHBhc3NlcyBvciB0aGUgc2Vzc2lvbiByZW5ld2FsIGRlYWRsaW5lLCB3aGljaGV2ZXIgaXMgc29vbmVyXHJcbiAgICAgICAgICAgICAgICAvLyBFeHBpcmluZyB0aGUgY29va2llIHdpbGwgY2F1c2UgdGhlIHNlc3Npb24gdG8gZXhwaXJlIGV2ZW4gaWYgdGhlIHVzZXIgaXNuJ3Qgb24gdGhlIHBhZ2VcclxuICAgICAgICAgICAgICAgIHZhciBhY3FUaW1lTGVmdE1zID0gKGFjcSArIGNvbmZpZ1tfRFlOX1NFU1NJT05fRVhQSVJBVElPTl9NNyAvKiBAbWluOiUyZXNlc3Npb25FeHBpcmF0aW9uTXMgKi9dKCkpIC0gbm93TXM7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29va2llID0gW3Nlc3Npb24uaWQsIGFjcSwgbm93TXNdO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1heEFnZVNlYyA9IDA7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWNxVGltZUxlZnRNcyA8IHJlbmV3YWxQZXJpb2RNcykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1heEFnZVNlYyA9IGFjcVRpbWVMZWZ0TXMgLyAxMDAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF4QWdlU2VjID0gcmVuZXdhbFBlcmlvZE1zIC8gMTAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBjb29raWVEb21haW4gPSBjb25maWdbX0RZTl9DT09LSUVfRE9NQUlOIC8qIEBtaW46JTJlY29va2llRG9tYWluICovXSA/IGNvbmZpZ1tfRFlOX0NPT0tJRV9ET01BSU4gLyogQG1pbjolMmVjb29raWVEb21haW4gKi9dKCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgc2Vzc2lvbkV4cGlyYXRpb25NcyBpcyBzZXQgdG8gMCwgaXQgbWVhbnMgdGhlIGV4cGlyeSBpcyBzZXQgdG8gMCBmb3IgdGhpcyBzZXNzaW9uIGNvb2tpZVxyXG4gICAgICAgICAgICAgICAgLy8gQSBjb29raWUgd2l0aCAwIGV4cGlyeSBpbiB0aGUgc2Vzc2lvbiBjb29raWUgd2lsbCBuZXZlciBleHBpcmUgZm9yIHRoYXQgYnJvd3NlciBzZXNzaW9uLiAgSWYgdGhlIGJyb3dzZXIgaXMgY2xvc2VkIHRoZSBjb29raWUgZXhwaXJlcy5cclxuICAgICAgICAgICAgICAgIC8vIERlcGVuZGluZyBvbiB0aGUgYnJvd3NlciwgYW5vdGhlciBpbnN0YW5jZSBkb2VzIG5vdCBpbmhlcml0IHRoaXMgY29va2llLCBob3dldmVyLCBhbm90aGVyIHRhYiB3aWxsXHJcbiAgICAgICAgICAgICAgICBfY29va2llTWFuYWdlci5zZXQoX3N0b3JhZ2VOYW1lUHJlZml4KCksIGNvb2tpZS5qb2luKFwifFwiKSwgY29uZmlnW19EWU5fU0VTU0lPTl9FWFBJUkFUSU9OX003IC8qIEBtaW46JTJlc2Vzc2lvbkV4cGlyYXRpb25NcyAqL10oKSA+IDAgPyBtYXhBZ2VTZWMgOiBudWxsLCBjb29raWVEb21haW4pO1xyXG4gICAgICAgICAgICAgICAgX2Nvb2tpZVVwZGF0ZWRUaW1lc3RhbXAgPSBub3dNcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfc2V0U3RvcmFnZShndWlkLCBhY3EsIHJlbmV3YWwpIHtcclxuICAgICAgICAgICAgICAgIC8vIEtlZXAgZGF0YSBpbiBsb2NhbCBzdG9yYWdlIHRvIHJldGFpbiB0aGUgbGFzdCBzZXNzaW9uIGlkLCBhbGxvd2luZyB1cyB0byBjbGVhbmx5IGVuZCB0aGUgc2Vzc2lvbiB3aGVuIGl0IGV4cGlyZXNcclxuICAgICAgICAgICAgICAgIC8vIEJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBsb2NhbCBzdG9yYWdlIHdvbid0IGJlIGFibGUgdG8gZW5kIHNlc3Npb25zIGNsZWFubHkgZnJvbSB0aGUgY2xpZW50XHJcbiAgICAgICAgICAgICAgICAvLyBUaGUgc2VydmVyIHdpbGwgbm90aWNlIHRoaXMgYW5kIGVuZCB0aGUgc2Vzc2lvbnMgaXRzZWxmLCB3aXRoIGxvc3Mgb2YgYWNjdXJhdGUgc2Vzc2lvbiBkdXJhdGlvblxyXG4gICAgICAgICAgICAgICAgdXRsU2V0TG9jYWxTdG9yYWdlKF9sb2dnZXIsIF9zdG9yYWdlTmFtZVByZWZpeCgpLCBbZ3VpZCwgYWNxLCByZW5ld2FsXVtfRFlOX0pPSU4gLyogQG1pbjolMmVqb2luICovXShcInxcIikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgX1Nlc3Npb25NYW5hZ2VyLnByb3RvdHlwZS51cGRhdGUuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgX1Nlc3Npb25NYW5hZ2VyLnByb3RvdHlwZS5iYWNrdXAuXHJcbiAgICBfU2Vzc2lvbk1hbmFnZXIuYWNxdWlzaXRpb25TcGFuID0gODY0MDAwMDA7IC8vIDI0IGhvdXJzIGluIG1zXHJcbiAgICBfU2Vzc2lvbk1hbmFnZXIucmVuZXdhbFNwYW4gPSAxODAwMDAwOyAvLyAzMCBtaW51dGVzIGluIG1zXHJcbiAgICBfU2Vzc2lvbk1hbmFnZXIuY29va2llVXBkYXRlSW50ZXJ2YWwgPSA2MDAwMDsgLy8gMSBtaW51dGUgaW4gbXNcclxuICAgIHJldHVybiBfU2Vzc2lvbk1hbmFnZXI7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IF9TZXNzaW9uTWFuYWdlciB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1TZXNzaW9uLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFByb3BlcnRpZXMgUGx1Z2luLCAyLjguOVxuICogQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgYW5kIGNvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXHJcblxyXG5pbXBvcnQgeyBkYXRhU2FuaXRpemVTdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZVczQ0lkLCBnZXRMb2NhdGlvbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG52YXIgVGVsZW1ldHJ5VHJhY2UgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUZWxlbWV0cnlUcmFjZShpZCwgcGFyZW50SWQsIG5hbWUsIGxvZ2dlcikge1xyXG4gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgX3NlbGYudHJhY2VJRCA9IGlkIHx8IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgICAgICBfc2VsZi5wYXJlbnRJRCA9IHBhcmVudElkO1xyXG4gICAgICAgIHZhciBsb2NhdGlvbiA9IGdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKCFuYW1lICYmIGxvY2F0aW9uICYmIGxvY2F0aW9uLnBhdGhuYW1lKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgX3NlbGYubmFtZSA9IGRhdGFTYW5pdGl6ZVN0cmluZyhsb2dnZXIsIG5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFRlbGVtZXRyeVRyYWNlO1xyXG59KCkpO1xyXG5leHBvcnQgeyBUZWxlbWV0cnlUcmFjZSB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1UZWxlbWV0cnlUcmFjZS5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBQcm9wZXJ0aWVzIFBsdWdpbiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgdXRsUmVtb3ZlU3RvcmFnZSB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF90aHJvd0ludGVybmFsLCBuZXdJZCwgc2FmZUdldENvb2tpZU1nciwgc2FmZUdldExvZ2dlciwgdG9JU09TdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgX0RZTl9BQ0NPVU5UX0lELCBfRFlOX0FVVEhFTlRJQ0FURURfSUQsIF9EWU5fQVVUSF9VU0VSX0NPT0tJRV9OQU04LCBfRFlOX0NPTkZJRywgX0RZTl9DT09LSUVfU0VQQVJBVE9SLCBfRFlOX0dFVF9ORVdfSUQsIF9EWU5fSURfTEVOR1RILCBfRFlOX0lTX05FV19VU0VSLCBfRFlOX0lTX1VTRVJfQ09PS0lFX1NFVCwgX0RZTl9KT0lOLCBfRFlOX0xFTkdUSCwgX0RZTl9OQU1FX1BSRUZJWCwgX0RZTl9VUERBVEUsIF9EWU5fVVNFUl9DT09LSUVfUE9TVEZJWCB9IGZyb20gXCIuLi9fX0R5bmFtaWNDb25zdGFudHNcIjtcclxuZnVuY3Rpb24gX3ZhbGlkYXRlVXNlcklucHV0KGlkKSB7XHJcbiAgICAvLyBWYWxpZGF0ZTpcclxuICAgIC8vIDEuIElkIGlzIGEgbm9uLWVtcHR5IHN0cmluZy5cclxuICAgIC8vIDIuIEl0IGRvZXMgbm90IGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzIGZvciBjb29raWVzLlxyXG4gICAgaWYgKHR5cGVvZiBpZCAhPT0gXCJzdHJpbmdcIiB8fFxyXG4gICAgICAgICFpZCB8fFxyXG4gICAgICAgIGlkLm1hdGNoKC8sfDt8PXwgfFxcfC8pKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxudmFyIFVzZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBVc2VyKGNvbmZpZywgY29yZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyByZXByZXNlbnRzIGEgbmV3IHVzZXJcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmlzTmV3VXNlciA9IGZhbHNlO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHVzZXIgY29va2llIGhhcyBiZWVuIHNldFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuaXNVc2VyQ29va2llU2V0ID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIF9sb2dnZXIgPSBzYWZlR2V0TG9nZ2VyKGNvcmUpO1xyXG4gICAgICAgIHZhciBfY29va2llTWFuYWdlciA9IHNhZmVHZXRDb29raWVNZ3IoY29yZSk7XHJcbiAgICAgICAgdmFyIF9zdG9yYWdlTmFtZVByZWZpeDtcclxuICAgICAgICBkeW5hbWljUHJvdG8oVXNlciwgdGhpcywgZnVuY3Rpb24gKF9zZWxmKSB7XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXSA9IGNvbmZpZztcclxuICAgICAgICAgICAgdmFyIHVzZXJDb29raWVQb3N0Zml4ID0gKF9zZWxmLmNvbmZpZ1tfRFlOX1VTRVJfQ09PS0lFX1BPU1RGSVggLyogQG1pbjolMmV1c2VyQ29va2llUG9zdGZpeCAqL10gJiYgX3NlbGZbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dW19EWU5fVVNFUl9DT09LSUVfUE9TVEZJWCAvKiBAbWluOiUyZXVzZXJDb29raWVQb3N0Zml4ICovXSgpKSA/IF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXVtfRFlOX1VTRVJfQ09PS0lFX1BPU1RGSVggLyogQG1pbjolMmV1c2VyQ29va2llUG9zdGZpeCAqL10oKSA6IFwiXCI7XHJcbiAgICAgICAgICAgIF9zdG9yYWdlTmFtZVByZWZpeCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFVzZXIudXNlckNvb2tpZU5hbWUgKyB1c2VyQ29va2llUG9zdGZpeDsgfTtcclxuICAgICAgICAgICAgLy8gZ2V0IHVzZXJJZCBvciBjcmVhdGUgbmV3IG9uZSBpZiBub25lIGV4aXN0c1xyXG4gICAgICAgICAgICB2YXIgY29va2llID0gX2Nvb2tpZU1hbmFnZXIuZ2V0KF9zdG9yYWdlTmFtZVByZWZpeCgpKTtcclxuICAgICAgICAgICAgaWYgKGNvb2tpZSkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9JU19ORVdfVVNFUiAvKiBAbWluOiUyZWlzTmV3VXNlciAqL10gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSBjb29raWUuc3BsaXQoVXNlcltfRFlOX0NPT0tJRV9TRVBBUkFUT1IgLyogQG1pbjolMmVjb29raWVTZXBhcmF0b3IgKi9dKTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJhbXNbX0RZTl9MRU5HVEggLyogQG1pbjolMmVsZW5ndGggKi9dID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLmlkID0gcGFyYW1zWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBhIGNvb2tpZVxyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fSVNfVVNFUl9DT09LSUVfU0VUIC8qIEBtaW46JTJlaXNVc2VyQ29va2llU2V0ICovXSA9ICEhX3NlbGYuaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dlbmVyYXRlTmV3SWQoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGhlQ29uZmlnID0gKGNvbmZpZyB8fCB7fSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ2V0TmV3SWQgPSAodGhlQ29uZmlnW19EWU5fR0VUX05FV19JRCAvKiBAbWluOiUyZWdldE5ld0lkICovXSA/IHRoZUNvbmZpZ1tfRFlOX0dFVF9ORVdfSUQgLyogQG1pbjolMmVnZXROZXdJZCAqL10oKSA6IG51bGwpIHx8IG5ld0lkO1xyXG4gICAgICAgICAgICAgICAgdmFyIGlkID0gZ2V0TmV3SWQodGhlQ29uZmlnW19EWU5fSURfTEVOR1RIIC8qIEBtaW46JTJlaWRMZW5ndGggKi9dID8gY29uZmlnW19EWU5fSURfTEVOR1RIIC8qIEBtaW46JTJlaWRMZW5ndGggKi9dKCkgOiAyMik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dlbmVyYXRlTmV3Q29va2llKHVzZXJJZCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFjcVN0ciA9IHRvSVNPU3RyaW5nKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuYWNjb3VudEFjcXVpc2l0aW9uRGF0ZSA9IGFjcVN0cjtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fSVNfTkVXX1VTRVIgLyogQG1pbjolMmVpc05ld1VzZXIgKi9dID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdDb29raWUgPSBbdXNlcklkLCBhY3FTdHJdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Nvb2tpZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfc2V0VXNlckNvb2tpZShjb29raWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIHdpdGhvdXQgZXhwaXJhdGlvbiwgY29va2llcyBleHBpcmUgYXQgdGhlIGVuZCBvZiB0aGUgc2Vzc2lvblxyXG4gICAgICAgICAgICAgICAgLy8gc2V0IGl0IHRvIDM2NSBkYXlzIGZyb20gbm93XHJcbiAgICAgICAgICAgICAgICAvLyAzNjUgKiAyNCAqIDYwICogNjAgPSAzMTUzNjAwMFxyXG4gICAgICAgICAgICAgICAgdmFyIG9uZVllYXIgPSAzMTUzNjAwMDtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fSVNfVVNFUl9DT09LSUVfU0VUIC8qIEBtaW46JTJlaXNVc2VyQ29va2llU2V0ICovXSA9IF9jb29raWVNYW5hZ2VyLnNldChfc3RvcmFnZU5hbWVQcmVmaXgoKSwgY29va2llLCBvbmVZZWFyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIV9zZWxmLmlkKSB7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5pZCA9IF9nZW5lcmF0ZU5ld0lkKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3Q29va2llID0gX2dlbmVyYXRlTmV3Q29va2llKF9zZWxmLmlkKTtcclxuICAgICAgICAgICAgICAgIF9zZXRVc2VyQ29va2llKG5ld0Nvb2tpZVtfRFlOX0pPSU4gLyogQG1pbjolMmVqb2luICovXShVc2VyW19EWU5fQ09PS0lFX1NFUEFSQVRPUiAvKiBAbWluOiUyZWNvb2tpZVNlcGFyYXRvciAqL10pKTtcclxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gY29uZmlnLm5hbWVQcmVmaXgoKSArIGFpX3Nlc3Npb24gaW4gbG9jYWwgc3RvcmFnZSB0aGlzIG1lYW5zIHRoZSB1c2VyIGFjdGl2ZWx5IHJlbW92ZWQgb3VyIGNvb2tpZXMuXHJcbiAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgcmVzcGVjdCB0aGVpciB3aXNoZXMgYW5kIGNsZWFyIG91cnNlbHZlcyBmcm9tIGxvY2FsIHN0b3JhZ2VcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lXzEgPSBjb25maWdbX0RZTl9OQU1FX1BSRUZJWCAvKiBAbWluOiUyZW5hbWVQcmVmaXggKi9dICYmIGNvbmZpZ1tfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10oKSA/IGNvbmZpZ1tfRFlOX05BTUVfUFJFRklYIC8qIEBtaW46JTJlbmFtZVByZWZpeCAqL10oKSArIFwiYWlfc2Vzc2lvblwiIDogXCJhaV9zZXNzaW9uXCI7XHJcbiAgICAgICAgICAgICAgICB1dGxSZW1vdmVTdG9yYWdlKF9sb2dnZXIsIG5hbWVfMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gV2Ugc3RpbGwgdGFrZSB0aGUgYWNjb3VudCBpZCBmcm9tIHRoZSBjdG9yIHBhcmFtIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxyXG4gICAgICAgICAgICAvLyBCdXQgaWYgdGhlIHRoZSBjdXN0b21lciBzZXQgdGhlIGFjY291bnRJZCB0aHJvdWdoIHRoZSBuZXdlciBzZXRBdXRoZW50aWNhdGVkVXNlckNvbnRleHQgQVBJLCB3ZSB3aWxsIG92ZXJyaWRlIGl0LlxyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FDQ09VTlRfSUQgLyogQG1pbjolMmVhY2NvdW50SWQgKi9dID0gY29uZmlnW19EWU5fQUNDT1VOVF9JRCAvKiBAbWluOiUyZWFjY291bnRJZCAqL10gPyBjb25maWdbX0RZTl9BQ0NPVU5UX0lEIC8qIEBtaW46JTJlYWNjb3VudElkICovXSgpIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGF1dGggdXNlciBpZCBhbmQgYWNjb3VudCBpZCBmcm9tIHRoZSBjb29raWUgaWYgZXhpc3RzXHJcbiAgICAgICAgICAgIC8vIENvb2tpZSBpcyBpbiB0aGUgcGF0dGVybjogPGF1dGhlbnRpY2F0ZWRJZD58PGFjY291bnRJZD5cclxuICAgICAgICAgICAgdmFyIGF1dGhDb29raWUgPSBfY29va2llTWFuYWdlci5nZXQoVXNlcltfRFlOX0FVVEhfVVNFUl9DT09LSUVfTkFNOCAvKiBAbWluOiUyZWF1dGhVc2VyQ29va2llTmFtZSAqL10pO1xyXG4gICAgICAgICAgICBpZiAoYXV0aENvb2tpZSkge1xyXG4gICAgICAgICAgICAgICAgYXV0aENvb2tpZSA9IGRlY29kZVVSSShhdXRoQ29va2llKTtcclxuICAgICAgICAgICAgICAgIHZhciBhdXRoQ29va2llU3RyaW5nID0gYXV0aENvb2tpZS5zcGxpdChVc2VyW19EWU5fQ09PS0lFX1NFUEFSQVRPUiAvKiBAbWluOiUyZWNvb2tpZVNlcGFyYXRvciAqL10pO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhDb29raWVTdHJpbmdbMF0pIHtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0FVVEhFTlRJQ0FURURfSUQgLyogQG1pbjolMmVhdXRoZW50aWNhdGVkSWQgKi9dID0gYXV0aENvb2tpZVN0cmluZ1swXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChhdXRoQ29va2llU3RyaW5nW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA+IDEgJiYgYXV0aENvb2tpZVN0cmluZ1sxXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQUNDT1VOVF9JRCAvKiBAbWluOiUyZWFjY291bnRJZCAqL10gPSBhdXRoQ29va2llU3RyaW5nWzFdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9zZWxmLnNldEF1dGhlbnRpY2F0ZWRVc2VyQ29udGV4dCA9IGZ1bmN0aW9uIChhdXRoZW50aWNhdGVkVXNlcklkLCBhY2NvdW50SWQsIHN0b3JlSW5Db29raWUpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdG9yZUluQ29va2llID09PSB2b2lkIDApIHsgc3RvcmVJbkNvb2tpZSA9IGZhbHNlOyB9XHJcbiAgICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSBpbnB1dHMgdG8gZW5zdXJlIG5vIGNvb2tpZSBjb250cm9sIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgICAgICB2YXIgaXNJbnZhbGlkSW5wdXQgPSAhX3ZhbGlkYXRlVXNlcklucHV0KGF1dGhlbnRpY2F0ZWRVc2VySWQpIHx8IChhY2NvdW50SWQgJiYgIV92YWxpZGF0ZVVzZXJJbnB1dChhY2NvdW50SWQpKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc0ludmFsaWRJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9sb2dnZXIsIDIgLyogZUxvZ2dpbmdTZXZlcml0eS5XQVJOSU5HICovLCA2MCAvKiBfZUludGVybmFsTWVzc2FnZUlkLlNldEF1dGhDb250ZXh0RmFpbGVkQWNjb3VudE5hbWUgKi8sIFwiU2V0dGluZyBhdXRoIHVzZXIgY29udGV4dCBmYWlsZWQuIFwiICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJVc2VyIGF1dGgvYWNjb3VudCBpZCBzaG91bGQgYmUgb2YgdHlwZSBzdHJpbmcsIGFuZCBub3QgY29udGFpbiBjb21tYXMsIHNlbWktY29sb25zLCBlcXVhbCBzaWducywgc3BhY2VzLCBvciB2ZXJ0aWNhbC1iYXJzLlwiLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgY29va2llIHN0cmluZy5cclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQVVUSEVOVElDQVRFRF9JRCAvKiBAbWluOiUyZWF1dGhlbnRpY2F0ZWRJZCAqL10gPSBhdXRoZW50aWNhdGVkVXNlcklkO1xyXG4gICAgICAgICAgICAgICAgdmFyIGF1dGhDb29raWUgPSBfc2VsZltfRFlOX0FVVEhFTlRJQ0FURURfSUQgLyogQG1pbjolMmVhdXRoZW50aWNhdGVkSWQgKi9dO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjY291bnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQUNDT1VOVF9JRCAvKiBAbWluOiUyZWFjY291bnRJZCAqL10gPSBhY2NvdW50SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYXV0aENvb2tpZSA9IFtfc2VsZltfRFlOX0FVVEhFTlRJQ0FURURfSUQgLyogQG1pbjolMmVhdXRoZW50aWNhdGVkSWQgKi9dLCBfc2VsZi5hY2NvdW50SWRdW19EWU5fSk9JTiAvKiBAbWluOiUyZWpvaW4gKi9dKFVzZXJbX0RZTl9DT09LSUVfU0VQQVJBVE9SIC8qIEBtaW46JTJlY29va2llU2VwYXJhdG9yICovXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RvcmVJbkNvb2tpZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgY29va2llLiBObyBleHBpcmF0aW9uIGRhdGUgYmVjYXVzZSB0aGlzIGlzIGEgc2Vzc2lvbiBjb29raWUgKGV4cGlyZXMgd2hlbiBicm93c2VyIGNsb3NlZCkuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gRW5jb2RpbmcgdGhlIGNvb2tpZSB0byBoYW5kbGUgdW5leHBlY3RlZCB1bmljb2RlIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgICAgICAgICAgICAgX2Nvb2tpZU1hbmFnZXIuc2V0KFVzZXJbX0RZTl9BVVRIX1VTRVJfQ09PS0lFX05BTTggLyogQG1pbjolMmVhdXRoVXNlckNvb2tpZU5hbWUgKi9dLCBlbmNvZGVVUkkoYXV0aENvb2tpZSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogQ2xlYXJzIHRoZSBhdXRoZW50aWNhdGVkIHVzZXIgaWQgYW5kIHRoZSBhY2NvdW50IGlkIGZyb20gdGhlIHVzZXIgY29udGV4dC5cclxuICAgICAgICAgICAgICogQHJldHVybnMge31cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIF9zZWxmLmNsZWFyQXV0aGVudGljYXRlZFVzZXJDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9BVVRIRU5USUNBVEVEX0lEIC8qIEBtaW46JTJlYXV0aGVudGljYXRlZElkICovXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0FDQ09VTlRfSUQgLyogQG1pbjolMmVhY2NvdW50SWQgKi9dID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9jb29raWVNYW5hZ2VyLmRlbChVc2VyW19EWU5fQVVUSF9VU0VSX0NPT0tJRV9OQU04IC8qIEBtaW46JTJlYXV0aFVzZXJDb29raWVOYW1lICovXSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fVVBEQVRFIC8qIEBtaW46JTJldXBkYXRlICovXSA9IGZ1bmN0aW9uICh1c2VySWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIE9wdGltaXphdGlvbnMgdG8gYXZvaWQgc2V0dGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgY29va2llIHdoZW4gbm90IG5lZWRlZFxyXG4gICAgICAgICAgICAgICAgaWYgKF9zZWxmLmlkICE9PSB1c2VySWQgfHwgIV9zZWxmW19EWU5fSVNfVVNFUl9DT09LSUVfU0VUIC8qIEBtaW46JTJlaXNVc2VyQ29va2llU2V0ICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB1c2VyX2lkID0gdXNlcklkID8gdXNlcklkIDogX2dlbmVyYXRlTmV3SWQoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXNlcl9jb29raWUgPSBfZ2VuZXJhdGVOZXdDb29raWUodXNlcl9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3NldFVzZXJDb29raWUodXNlcl9jb29raWVbX0RZTl9KT0lOIC8qIEBtaW46JTJlam9pbiAqL10oVXNlcltfRFlOX0NPT0tJRV9TRVBBUkFUT1IgLyogQG1pbjolMmVjb29raWVTZXBhcmF0b3IgKi9dKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVXNlci5wcm90b3R5cGUuc2V0QXV0aGVudGljYXRlZFVzZXJDb250ZXh0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFVzZXIucHJvdG90eXBlLmNsZWFyQXV0aGVudGljYXRlZFVzZXJDb250ZXh0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFVzZXIucHJvdG90eXBlLnVwZGF0ZS5cclxuICAgIFVzZXIuY29va2llU2VwYXJhdG9yID0gXCJ8XCI7XHJcbiAgICBVc2VyLnVzZXJDb29raWVOYW1lID0gXCJhaV91c2VyXCI7XHJcbiAgICBVc2VyLmF1dGhVc2VyQ29va2llTmFtZSA9IFwiYWlfYXV0aFVzZXJcIjtcclxuICAgIHJldHVybiBVc2VyO1xyXG59KCkpO1xyXG5leHBvcnQgeyBVc2VyIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVVzZXIuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gUHJvcGVydGllcyBQbHVnaW4sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG4vKipcclxuKiBUZWxlbWV0cnlDb250ZXh0LnRzXHJcbiogQGNvcHlyaWdodCBNaWNyb3NvZnQgMjAxOFxyXG4qL1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBDdHhUYWdLZXlzLCBFeHRlbnNpb25zLCBQYWdlVmlldyB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7IF9JbnRlcm5hbExvZ01lc3NhZ2UsIGdldFNldFZhbHVlLCBoYXNXaW5kb3csIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1N0cmluZywgb2JqS2V5cywgc2V0VmFsdWUgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IHsgQXBwbGljYXRpb24gfSBmcm9tIFwiLi9Db250ZXh0L0FwcGxpY2F0aW9uXCI7XHJcbmltcG9ydCB7IERldmljZSB9IGZyb20gXCIuL0NvbnRleHQvRGV2aWNlXCI7XHJcbmltcG9ydCB7IEludGVybmFsIH0gZnJvbSBcIi4vQ29udGV4dC9JbnRlcm5hbFwiO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gXCIuL0NvbnRleHQvTG9jYXRpb25cIjtcclxuaW1wb3J0IHsgU2Vzc2lvbiwgX1Nlc3Npb25NYW5hZ2VyIH0gZnJvbSBcIi4vQ29udGV4dC9TZXNzaW9uXCI7XHJcbmltcG9ydCB7IFRlbGVtZXRyeVRyYWNlIH0gZnJvbSBcIi4vQ29udGV4dC9UZWxlbWV0cnlUcmFjZVwiO1xyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIi4vQ29udGV4dC9Vc2VyXCI7XHJcbmltcG9ydCB7IF9EWU5fQUNDT1VOVF9JRCwgX0RZTl9BUFBMWV9BUFBMSUNBVElPTl9DTzEsIF9EWU5fQVBQTFlfREVWSUNFX0NPTlRFWFQsIF9EWU5fQVBQTFlfSU5URVJOQUxfQ09OVEU1LCBfRFlOX0FQUExZX0xPQ0FUSU9OX0NPTlRFNCwgX0RZTl9BUFBMWV9PUEVSQVRJTkdfU1lTVDMsIF9EWU5fQVBQTFlfT1BFUkFUSU9OX0NPTlQyLCBfRFlOX0FQUExZX1NFU1NJT05fQ09OVEVYMCwgX0RZTl9BUFBMWV9VU0VSX0NPTlRFWFQsIF9EWU5fQVVUSEVOVElDQVRFRF9JRCwgX0RZTl9BVVRPTUFUSUNfU0VTU0lPTiwgX0RZTl9HRVRfU0VTU0lPTl9JRCwgX0RZTl9MRU5HVEgsIF9EWU5fU0VTU0lPTl9NQU5BR0VSLCBfRFlOX1RFTEVNRVRSWV9UUkFDRSB9IGZyb20gXCIuL19fRHluYW1pY0NvbnN0YW50c1wiO1xyXG52YXIgc3RyRXh0ID0gXCJleHRcIjtcclxudmFyIHN0clRhZ3MgPSBcInRhZ3NcIjtcclxuZnVuY3Rpb24gX3JlbW92ZUVtcHR5KHRhcmdldCwgbmFtZSkge1xyXG4gICAgaWYgKHRhcmdldCAmJiB0YXJnZXRbbmFtZV0gJiYgb2JqS2V5cyh0YXJnZXRbbmFtZV0pW19EWU5fTEVOR1RIIC8qIEBtaW46JTJlbGVuZ3RoICovXSA9PT0gMCkge1xyXG4gICAgICAgIGRlbGV0ZSB0YXJnZXRbbmFtZV07XHJcbiAgICB9XHJcbn1cclxudmFyIFRlbGVtZXRyeUNvbnRleHQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBUZWxlbWV0cnlDb250ZXh0KGNvcmUsIGRlZmF1bHRDb25maWcsIHByZXZpb3VzVHJhY2VDdHgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHZhciBsb2dnZXIgPSBjb3JlLmxvZ2dlcjtcclxuICAgICAgICB0aGlzLmFwcElkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcclxuICAgICAgICB0aGlzW19EWU5fR0VUX1NFU1NJT05fSUQgLyogQG1pbjolMmVnZXRTZXNzaW9uSWQgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcclxuICAgICAgICBkeW5hbWljUHJvdG8oVGVsZW1ldHJ5Q29udGV4dCwgdGhpcywgZnVuY3Rpb24gKF9zZWxmKSB7XHJcbiAgICAgICAgICAgIF9zZWxmLmFwcGxpY2F0aW9uID0gbmV3IEFwcGxpY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIF9zZWxmLmludGVybmFsID0gbmV3IEludGVybmFsKGRlZmF1bHRDb25maWcpO1xyXG4gICAgICAgICAgICBpZiAoaGFzV2luZG93KCkpIHtcclxuICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fU0VTU0lPTl9NQU5BR0VSIC8qIEBtaW46JTJlc2Vzc2lvbk1hbmFnZXIgKi9dID0gbmV3IF9TZXNzaW9uTWFuYWdlcihkZWZhdWx0Q29uZmlnLCBjb3JlKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmRldmljZSA9IG5ldyBEZXZpY2UoKTtcclxuICAgICAgICAgICAgICAgIF9zZWxmLmxvY2F0aW9uID0gbmV3IExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi51c2VyID0gbmV3IFVzZXIoZGVmYXVsdENvbmZpZywgY29yZSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdHJhY2VJZCA9IHZvaWQgMDtcclxuICAgICAgICAgICAgICAgIHZhciBwYXJlbnRJZCA9IHZvaWQgMDtcclxuICAgICAgICAgICAgICAgIHZhciBuYW1lXzE7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNUcmFjZUN0eCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNlSWQgPSBwcmV2aW91c1RyYWNlQ3R4LmdldFRyYWNlSWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBwYXJlbnRJZCA9IHByZXZpb3VzVHJhY2VDdHguZ2V0U3BhbklkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZV8xID0gcHJldmlvdXNUcmFjZUN0eC5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfc2VsZltfRFlOX1RFTEVNRVRSWV9UUkFDRSAvKiBAbWluOiUyZXRlbGVtZXRyeVRyYWNlICovXSA9IG5ldyBUZWxlbWV0cnlUcmFjZSh0cmFjZUlkLCBwYXJlbnRJZCwgbmFtZV8xLCBsb2dnZXIpO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuc2Vzc2lvbiA9IG5ldyBTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9HRVRfU0VTU0lPTl9JRCAvKiBAbWluOiUyZWdldFNlc3Npb25JZCAqL10gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2Vzc2lvbiA9IF9zZWxmLnNlc3Npb247XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VzSWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgY3VzdG9tZXIgc2V0IHNlc3Npb24gaW5mbywgYXBwbHkgdGhlaXIgY29udGV4dDsgb3RoZXJ3aXNlIGFwcGx5IGNvbnRleHQgYXV0b21hdGljYWxseSBnZW5lcmF0ZWRcclxuICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uICYmIGlzU3RyaW5nKHNlc3Npb24uaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VzSWQgPSBzZXNzaW9uLmlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gR2V0cyB0aGUgYXV0b21hdGljIHNlc3Npb24gaWYgaXQgZXhpc3RzIG9yIGFuIGVtcHR5IG9iamVjdFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhdXRvU2Vzc2lvbiA9IChfc2VsZltfRFlOX1NFU1NJT05fTUFOQUdFUiAvKiBAbWluOiUyZXNlc3Npb25NYW5hZ2VyICovXSB8fCB7fSlbX0RZTl9BVVRPTUFUSUNfU0VTU0lPTiAvKiBAbWluOiUyZWF1dG9tYXRpY1Nlc3Npb24gKi9dO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlc0lkID0gYXV0b1Nlc3Npb24gJiYgaXNTdHJpbmcoYXV0b1Nlc3Npb24uaWQpID8gYXV0b1Nlc3Npb24uaWQgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlc0lkO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FQUExZX1NFU1NJT05fQ09OVEVYMCAvKiBAbWluOiUyZWFwcGx5U2Vzc2lvbkNvbnRleHQgKi9dID0gZnVuY3Rpb24gKGV2dCwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoZ2V0U2V0VmFsdWUoZXZ0LmV4dCwgRXh0ZW5zaW9ucy5BcHBFeHQpLCBcInNlc0lkXCIsIF9zZWxmW19EWU5fR0VUX1NFU1NJT05fSUQgLyogQG1pbjolMmVnZXRTZXNzaW9uSWQgKi9dKCksIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BUFBMWV9PUEVSQVRJTkdfU1lTVDMgLyogQG1pbjolMmVhcHBseU9wZXJhdGluZ1N5c3RlbUNvbnR4dCAqL10gPSBmdW5jdGlvbiAoZXZ0LCBpdGVtQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZShldnQuZXh0LCBFeHRlbnNpb25zLk9TRXh0LCBfc2VsZi5vcyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQVBQTFlfQVBQTElDQVRJT05fQ08xIC8qIEBtaW46JTJlYXBwbHlBcHBsaWNhdGlvbkNvbnRleHQgKi9dID0gZnVuY3Rpb24gKGV2dCwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGFwcGxpY2F0aW9uID0gX3NlbGYuYXBwbGljYXRpb247XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwbGljYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBldnQuZXh0LmFwcFxyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0YWdzID0gZ2V0U2V0VmFsdWUoZXZ0LCBzdHJUYWdzKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZSh0YWdzLCBDdHhUYWdLZXlzLmFwcGxpY2F0aW9uVmVyc2lvbiwgYXBwbGljYXRpb24udmVyLCBpc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy5hcHBsaWNhdGlvbkJ1aWxkLCBhcHBsaWNhdGlvbi5idWlsZCwgaXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FQUExZX0RFVklDRV9DT05URVhUIC8qIEBtaW46JTJlYXBwbHlEZXZpY2VDb250ZXh0ICovXSA9IGZ1bmN0aW9uIChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBkZXZpY2UgPSBfc2VsZi5kZXZpY2U7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGV2aWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gZXZ0LmV4dC5kZXZpY2VcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0RGV2aWNlID0gZ2V0U2V0VmFsdWUoZ2V0U2V0VmFsdWUoZXZ0LCBzdHJFeHQpLCBFeHRlbnNpb25zLkRldmljZUV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZXh0RGV2aWNlLCBcImxvY2FsSWRcIiwgZGV2aWNlLmlkLCBpc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZXh0RGV2aWNlLCBcImlwXCIsIGRldmljZS5pcCwgaXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGV4dERldmljZSwgXCJtb2RlbFwiLCBkZXZpY2UubW9kZWwsIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShleHREZXZpY2UsIFwiZGV2aWNlQ2xhc3NcIiwgZGV2aWNlLmRldmljZUNsYXNzLCBpc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQVBQTFlfSU5URVJOQUxfQ09OVEU1IC8qIEBtaW46JTJlYXBwbHlJbnRlcm5hbENvbnRleHQgKi9dID0gZnVuY3Rpb24gKGV2dCwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGludGVybmFsID0gX3NlbGYuaW50ZXJuYWw7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFncyA9IGdldFNldFZhbHVlKGV2dCwgc3RyVGFncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy5pbnRlcm5hbEFnZW50VmVyc2lvbiwgaW50ZXJuYWwuYWdlbnRWZXJzaW9uLCBpc1N0cmluZyk7IC8vIG5vdCBtYXBwZWQgaW4gQ1MgNC4wXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy5pbnRlcm5hbFNka1ZlcnNpb24sIGludGVybmFsLnNka1ZlcnNpb24sIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZ0LmJhc2VUeXBlID09PSBfSW50ZXJuYWxMb2dNZXNzYWdlLmRhdGFUeXBlIHx8IGV2dC5iYXNlVHlwZSA9PT0gUGFnZVZpZXcuZGF0YVR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy5pbnRlcm5hbFNuaXBwZXQsIGludGVybmFsLnNuaXBwZXRWZXIsIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy5pbnRlcm5hbFNka1NyYywgaW50ZXJuYWwuc2RrU3JjLCBpc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX0FQUExZX0xPQ0FUSU9OX0NPTlRFNCAvKiBAbWluOiUyZWFwcGx5TG9jYXRpb25Db250ZXh0ICovXSA9IGZ1bmN0aW9uIChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IF90aGlzLmxvY2F0aW9uO1xyXG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZ2V0U2V0VmFsdWUoZXZ0LCBzdHJUYWdzLCBbXSksIEN0eFRhZ0tleXMubG9jYXRpb25JcCwgbG9jYXRpb24uaXAsIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BUFBMWV9PUEVSQVRJT05fQ09OVDIgLyogQG1pbjolMmVhcHBseU9wZXJhdGlvbkNvbnRleHQgKi9dID0gZnVuY3Rpb24gKGV2dCwgaXRlbUN0eCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRlbGVtZXRyeVRyYWNlID0gX3NlbGZbX0RZTl9URUxFTUVUUllfVFJBQ0UgLyogQG1pbjolMmV0ZWxlbWV0cnlUcmFjZSAqL107XHJcbiAgICAgICAgICAgICAgICBpZiAodGVsZW1ldHJ5VHJhY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0VHJhY2UgPSBnZXRTZXRWYWx1ZShnZXRTZXRWYWx1ZShldnQsIHN0ckV4dCksIEV4dGVuc2lvbnMuVHJhY2VFeHQsIHsgdHJhY2VJRDogdW5kZWZpbmVkLCBwYXJlbnRJRDogdW5kZWZpbmVkIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGV4dFRyYWNlLCBcInRyYWNlSURcIiwgdGVsZW1ldHJ5VHJhY2UudHJhY2VJRCwgaXNTdHJpbmcsIGlzTnVsbE9yVW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShleHRUcmFjZSwgXCJuYW1lXCIsIHRlbGVtZXRyeVRyYWNlLm5hbWUsIGlzU3RyaW5nLCBpc051bGxPclVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZXh0VHJhY2UsIFwicGFyZW50SURcIiwgdGVsZW1ldHJ5VHJhY2UucGFyZW50SUQsIGlzU3RyaW5nLCBpc051bGxPclVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmFwcGx5V2ViQ29udGV4dCA9IGZ1bmN0aW9uIChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciB3ZWIgPSBfdGhpcy53ZWI7XHJcbiAgICAgICAgICAgICAgICBpZiAod2ViKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoZ2V0U2V0VmFsdWUoZXZ0LCBzdHJFeHQpLCBFeHRlbnNpb25zLldlYkV4dCwgd2ViKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BUFBMWV9VU0VSX0NPTlRFWFQgLyogQG1pbjolMmVhcHBseVVzZXJDb250ZXh0ICovXSA9IGZ1bmN0aW9uIChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciB1c2VyID0gX3NlbGYudXNlcjtcclxuICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhZ3MgPSBnZXRTZXRWYWx1ZShldnQsIHN0clRhZ3MsIFtdKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBzdGF5cyBpbiB0YWdzXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUodGFncywgQ3R4VGFnS2V5cy51c2VyQWNjb3VudElkLCB1c2VyW19EWU5fQUNDT1VOVF9JRCAvKiBAbWluOiUyZWFjY291bnRJZCAqL10sIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBDUyA0LjBcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXh0VXNlciA9IGdldFNldFZhbHVlKGdldFNldFZhbHVlKGV2dCwgc3RyRXh0KSwgRXh0ZW5zaW9ucy5Vc2VyRXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShleHRVc2VyLCBcImlkXCIsIHVzZXIuaWQsIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShleHRVc2VyLCBcImF1dGhJZFwiLCB1c2VyW19EWU5fQVVUSEVOVElDQVRFRF9JRCAvKiBAbWluOiUyZWF1dGhlbnRpY2F0ZWRJZCAqL10sIGlzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGYuY2xlYW5VcCA9IGZ1bmN0aW9uIChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBleHQgPSBldnQuZXh0O1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVFbXB0eShleHQsIEV4dGVuc2lvbnMuRGV2aWNlRXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlRW1wdHkoZXh0LCBFeHRlbnNpb25zLlVzZXJFeHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9yZW1vdmVFbXB0eShleHQsIEV4dGVuc2lvbnMuV2ViRXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlRW1wdHkoZXh0LCBFeHRlbnNpb25zLk9TRXh0KTtcclxuICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlRW1wdHkoZXh0LCBFeHRlbnNpb25zLkFwcEV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgX3JlbW92ZUVtcHR5KGV4dCwgRXh0ZW5zaW9ucy5UcmFjZUV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVGVsZW1ldHJ5Q29udGV4dC5wcm90b3R5cGUuYXBwbHlTZXNzaW9uQ29udGV4dC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBUZWxlbWV0cnlDb250ZXh0LnByb3RvdHlwZS5hcHBseU9wZXJhdGluZ1N5c3RlbUNvbnR4dC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBUZWxlbWV0cnlDb250ZXh0LnByb3RvdHlwZS5hcHBseUFwcGxpY2F0aW9uQ29udGV4dC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBUZWxlbWV0cnlDb250ZXh0LnByb3RvdHlwZS5hcHBseURldmljZUNvbnRleHQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVGVsZW1ldHJ5Q29udGV4dC5wcm90b3R5cGUuYXBwbHlJbnRlcm5hbENvbnRleHQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVGVsZW1ldHJ5Q29udGV4dC5wcm90b3R5cGUuYXBwbHlMb2NhdGlvbkNvbnRleHQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgVGVsZW1ldHJ5Q29udGV4dC5wcm90b3R5cGUuYXBwbHlPcGVyYXRpb25Db250ZXh0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFRlbGVtZXRyeUNvbnRleHQucHJvdG90eXBlLmFwcGx5V2ViQ29udGV4dC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBUZWxlbWV0cnlDb250ZXh0LnByb3RvdHlwZS5hcHBseVVzZXJDb250ZXh0LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFRlbGVtZXRyeUNvbnRleHQucHJvdG90eXBlLmNsZWFuVXAuXHJcbiAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gSUU4IGJ1ZyB3aGVuIHVzaW5nIGR5bmFtaWNQcm90bygpIHdpdGggY2xhc3NlcyB0aGF0IGRvbid0IGhhdmUgYW55XG4gICAgLy8gbm9uLWR5bmFtaWMgZnVuY3Rpb25zIG9yIHN0YXRpYyBwcm9wZXJ0aWVzL2Z1bmN0aW9ucyB3aGVuIHVzaW5nIHVnbGlmeS1qcyB0byBtaW5pZnkgdGhlIHJlc3VsdGluZyBjb2RlLlxuICAgIC8vIHRoaXMgd2lsbCBiZSByZW1vdmVkIHdoZW4gRVMzIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICBUZWxlbWV0cnlDb250ZXh0Ll9faWVEeW49MTtcblxuICAgIHJldHVybiBUZWxlbWV0cnlDb250ZXh0O1xyXG59KCkpO1xyXG5leHBvcnQgeyBUZWxlbWV0cnlDb250ZXh0IH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVRlbGVtZXRyeUNvbnRleHQuanMubWFwIiwiLypcbiAqIEFwcGxpY2F0aW9uIEluc2lnaHRzIEphdmFTY3JpcHQgU0RLIC0gUHJvcGVydGllcyBQbHVnaW4sIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG4vKipcclxuKiBQcm9wZXJ0aWVzUGx1Z2luLnRzXHJcbiogQGNvcHlyaWdodCBNaWNyb3NvZnQgMjAxOFxyXG4qL1xyXG5pbXBvcnQgeyBfX2V4dGVuZHNGbiBhcyBfX2V4dGVuZHMgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXNoaW1zXCI7XHJcbmltcG9ydCBkeW5hbWljUHJvdG8gZnJvbSBcIkBtaWNyb3NvZnQvZHluYW1pY3Byb3RvLWpzXCI7XHJcbmltcG9ydCB7IEJyZWV6ZUNoYW5uZWxJZGVudGlmaWVyLCBQYWdlVmlldywgUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIsIGNyZWF0ZURpc3RyaWJ1dGVkVHJhY2VDb250ZXh0RnJvbVRyYWNlIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb25cIjtcclxuaW1wb3J0IHsgQmFzZVRlbGVtZXRyeVBsdWdpbiwgX0ludGVybmFsTG9nTWVzc2FnZSwgX2xvZ0ludGVybmFsTWVzc2FnZSwgY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQsIGdldE5hdmlnYXRvciwgZ2V0U2V0VmFsdWUsIGlzTnVsbE9yVW5kZWZpbmVkLCBvYmpGb3JFYWNoS2V5IH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IFRlbGVtZXRyeUNvbnRleHQgfSBmcm9tIFwiLi9UZWxlbWV0cnlDb250ZXh0XCI7XHJcbmltcG9ydCB7IF9EWU5fQUNDT1VOVF9JRCwgX0RZTl9BUFBMWV9BUFBMSUNBVElPTl9DTzEsIF9EWU5fQVBQTFlfREVWSUNFX0NPTlRFWFQsIF9EWU5fQVBQTFlfSU5URVJOQUxfQ09OVEU1LCBfRFlOX0FQUExZX0xPQ0FUSU9OX0NPTlRFNCwgX0RZTl9BUFBMWV9PUEVSQVRJTkdfU1lTVDMsIF9EWU5fQVBQTFlfT1BFUkFUSU9OX0NPTlQyLCBfRFlOX0FQUExZX1NFU1NJT05fQ09OVEVYMCwgX0RZTl9BUFBMWV9VU0VSX0NPTlRFWFQsIF9EWU5fQ09PS0lFX0RPTUFJTiwgX0RZTl9HRVRfTkVXX0lELCBfRFlOX0dFVF9TRVNTSU9OX0lELCBfRFlOX0dFVF9UUkFDRV9DVFgsIF9EWU5fSURfTEVOR1RILCBfRFlOX0lTX05FV19VU0VSLCBfRFlOX0lTX1VTRVJfQ09PS0lFX1NFVCwgX0RZTl9OQU1FX1BSRUZJWCwgX0RZTl9TREtfRVhURU5TSU9OLCBfRFlOX1NFU1NJT05fQ09PS0lFX1BPU1RGNiwgX0RZTl9TRVNTSU9OX01BTkFHRVIsIF9EWU5fVEVMRU1FVFJZX1RSQUNFLCBfRFlOX1VQREFURSwgX0RZTl9VU0VSX0NPT0tJRV9QT1NURklYIH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBQcm9wZXJ0aWVzUGx1Z2luID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKFByb3BlcnRpZXNQbHVnaW4sIF9zdXBlcik7XHJcbiAgICBmdW5jdGlvbiBQcm9wZXJ0aWVzUGx1Z2luKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMucHJpb3JpdHkgPSAxMTA7XHJcbiAgICAgICAgX3RoaXMuaWRlbnRpZmllciA9IFByb3BlcnRpZXNQbHVnaW5JZGVudGlmaWVyO1xyXG4gICAgICAgIHZhciBfZXh0ZW5zaW9uQ29uZmlnO1xyXG4gICAgICAgIHZhciBfZGlzdHJpYnV0ZWRUcmFjZUN0eDtcclxuICAgICAgICB2YXIgX3ByZXZpb3VzVHJhY2VDdHg7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKFByb3BlcnRpZXNQbHVnaW4sIF90aGlzLCBmdW5jdGlvbiAoX3NlbGYsIF9iYXNlKSB7XHJcbiAgICAgICAgICAgIF9pbml0RGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgX3NlbGYuaW5pdGlhbGl6ZSA9IGZ1bmN0aW9uIChjb25maWcsIGNvcmUsIGV4dGVuc2lvbnMsIHBsdWdpbkNoYWluKSB7XHJcbiAgICAgICAgICAgICAgICBfYmFzZS5pbml0aWFsaXplKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pO1xyXG4gICAgICAgICAgICAgICAgX3BvcHVsYXRlRGVmYXVsdHMoY29uZmlnKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEFkZCBQYXJ0IEEgZmllbGRzIHRvIHRoZSBldmVudFxyXG4gICAgICAgICAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBfc2VsZi5wcm9jZXNzVGVsZW1ldHJ5ID0gZnVuY3Rpb24gKGV2ZW50LCBpdGVtQ3R4KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhiYXJ1c3R1bSk6IHRocm93IGFuIGludGVybmFsIGV2ZW50IG9uY2Ugd2UgaGF2ZSBzdXBwb3J0IGZvciBpbnRlcm5hbCBsb2dnaW5nXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtQ3R4ID0gX3NlbGYuX2dldFRlbEN0eChpdGVtQ3R4KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZW52ZWxvcGUgaXMgUGFnZVZpZXcsIHJlc2V0IHRoZSBpbnRlcm5hbCBtZXNzYWdlIGNvdW50IHNvIHRoYXQgd2UgY2FuIHNlbmQgaW50ZXJuYWwgdGVsZW1ldHJ5IGZvciB0aGUgbmV3IHBhZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50Lm5hbWUgPT09IFBhZ2VWaWV3LmVudmVsb3BlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtQ3R4LmRpYWdMb2coKS5yZXNldEludGVybmFsTWVzc2FnZUNvdW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGVDb250ZXh0ID0gKF9zZWxmLmNvbnRleHQgfHwge30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGVDb250ZXh0LnNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY3VzdG9tZXIgZGlkIG5vdCBwcm92aWRlIGN1c3RvbSBzZXNzaW9uIGlkIHVwZGF0ZSB0aGUgc2Vzc2lvbiBtYW5hZ2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgX3NlbGYuY29udGV4dC5zZXNzaW9uLmlkICE9PSBcInN0cmluZ1wiICYmIHRoZUNvbnRleHRbX0RZTl9TRVNTSU9OX01BTkFHRVIgLyogQG1pbjolMmVzZXNzaW9uTWFuYWdlciAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUNvbnRleHRbX0RZTl9TRVNTSU9OX01BTkFHRVIgLyogQG1pbjolMmVzZXNzaW9uTWFuYWdlciAqL11bX0RZTl9VUERBVEUgLyogQG1pbjolMmV1cGRhdGUgKi9dKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVzZXJDdHggPSB0aGVDb250ZXh0LnVzZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJDdHggJiYgIXVzZXJDdHhbX0RZTl9JU19VU0VSX0NPT0tJRV9TRVQgLyogQG1pbjolMmVpc1VzZXJDb29raWVTZXQgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJDdHhbX0RZTl9VUERBVEUgLyogQG1pbjolMmV1cGRhdGUgKi9dKHRoZUNvbnRleHQudXNlci5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIF9wcm9jZXNzVGVsZW1ldHJ5SW50ZXJuYWwoZXZlbnQsIGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyQ3R4ICYmIHVzZXJDdHhbX0RZTl9JU19ORVdfVVNFUiAvKiBAbWluOiUyZWlzTmV3VXNlciAqL10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlckN0eFtfRFlOX0lTX05FV19VU0VSIC8qIEBtaW46JTJlaXNOZXdVc2VyICovXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IG5ldyBfSW50ZXJuYWxMb2dNZXNzYWdlKDcyIC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuU2VuZEJyb3dzZXJJbmZvT25Vc2VySW5pdCAqLywgKChnZXROYXZpZ2F0b3IoKSB8fCB7fSkudXNlckFnZW50IHx8IFwiXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2xvZ0ludGVybmFsTWVzc2FnZShpdGVtQ3R4LmRpYWdMb2coKSwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYucHJvY2Vzc05leHQoZXZlbnQsIGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5fZG9UZWFyZG93biA9IGZ1bmN0aW9uICh1bmxvYWRDdHgsIHVubG9hZFN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29yZSA9ICh1bmxvYWRDdHggfHwge30pLmNvcmUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjb3JlICYmIGNvcmVbX0RZTl9HRVRfVFJBQ0VfQ1RYIC8qIEBtaW46JTJlZ2V0VHJhY2VDdHggKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRyYWNlQ3R4ID0gY29yZVtfRFlOX0dFVF9UUkFDRV9DVFggLyogQG1pbjolMmVnZXRUcmFjZUN0eCAqL10oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmFjZUN0eCA9PT0gX2Rpc3RyaWJ1dGVkVHJhY2VDdHgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29yZS5zZXRUcmFjZUN0eChfcHJldmlvdXNUcmFjZUN0eCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgX2luaXREZWZhdWx0cygpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmdW5jdGlvbiBfaW5pdERlZmF1bHRzKCkge1xyXG4gICAgICAgICAgICAgICAgX2V4dGVuc2lvbkNvbmZpZyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfZGlzdHJpYnV0ZWRUcmFjZUN0eCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfcHJldmlvdXNUcmFjZUN0eCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3BvcHVsYXRlRGVmYXVsdHMoY29uZmlnKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWRlbnRpZmllciA9IF9zZWxmLmlkZW50aWZpZXI7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29yZSA9IF9zZWxmLmNvcmU7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3R4ID0gY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQobnVsbCwgY29uZmlnLCBjb3JlKTtcclxuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0Q29uZmlnID0gUHJvcGVydGllc1BsdWdpbi5nZXREZWZhdWx0Q29uZmlnKCk7XHJcbiAgICAgICAgICAgICAgICBfZXh0ZW5zaW9uQ29uZmlnID0gX2V4dGVuc2lvbkNvbmZpZyB8fCB7fTtcclxuICAgICAgICAgICAgICAgIG9iakZvckVhY2hLZXkoZGVmYXVsdENvbmZpZywgZnVuY3Rpb24gKGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9leHRlbnNpb25Db25maWdbZmllbGRdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3R4LmdldENvbmZpZyhpZGVudGlmaWVyLCBmaWVsZCwgdmFsdWUoKSk7IH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIF9wcmV2aW91c1RyYWNlQ3R4ID0gY29yZVtfRFlOX0dFVF9UUkFDRV9DVFggLyogQG1pbjolMmVnZXRUcmFjZUN0eCAqL10oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuY29udGV4dCA9IG5ldyBUZWxlbWV0cnlDb250ZXh0KGNvcmUsIF9leHRlbnNpb25Db25maWcsIF9wcmV2aW91c1RyYWNlQ3R4KTtcclxuICAgICAgICAgICAgICAgIF9kaXN0cmlidXRlZFRyYWNlQ3R4ID0gY3JlYXRlRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHRGcm9tVHJhY2UoX3NlbGYuY29udGV4dFtfRFlOX1RFTEVNRVRSWV9UUkFDRSAvKiBAbWluOiUyZXRlbGVtZXRyeVRyYWNlICovXSwgX3ByZXZpb3VzVHJhY2VDdHgpO1xyXG4gICAgICAgICAgICAgICAgY29yZS5zZXRUcmFjZUN0eChfZGlzdHJpYnV0ZWRUcmFjZUN0eCk7XHJcbiAgICAgICAgICAgICAgICBfc2VsZi5jb250ZXh0LmFwcElkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBicmVlemVDaGFubmVsID0gY29yZS5nZXRQbHVnaW4oQnJlZXplQ2hhbm5lbElkZW50aWZpZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBicmVlemVDaGFubmVsID8gYnJlZXplQ2hhbm5lbC5wbHVnaW5bXCJfYXBwSWRcIl0gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIC8vIFRlc3QgaG9vayB0byBhbGxvdyBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHZhbHVlcyAtLSBleHBsaWNpdGx5IG5vdCBkZWZpbmVkIGFzIGFuIGF2YWlsYWJsZSBwcm9wZXJ0eSBvbiB0aGUgY2xhc3NcclxuICAgICAgICAgICAgICAgIF9zZWxmW1wiX2V4dENvbmZpZ1wiXSA9IF9leHRlbnNpb25Db25maWc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX3Byb2Nlc3NUZWxlbWV0cnlJbnRlcm5hbChldnQsIGl0ZW1DdHgpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNldCBQYXJ0IEEgZmllbGRzXHJcbiAgICAgICAgICAgICAgICBnZXRTZXRWYWx1ZShldnQsIFwidGFnc1wiLCBbXSk7XHJcbiAgICAgICAgICAgICAgICBnZXRTZXRWYWx1ZShldnQsIFwiZXh0XCIsIHt9KTtcclxuICAgICAgICAgICAgICAgIHZhciBjdHggPSBfc2VsZi5jb250ZXh0O1xyXG4gICAgICAgICAgICAgICAgY3R4W19EWU5fQVBQTFlfU0VTU0lPTl9DT05URVgwIC8qIEBtaW46JTJlYXBwbHlTZXNzaW9uQ29udGV4dCAqL10oZXZ0LCBpdGVtQ3R4KTtcclxuICAgICAgICAgICAgICAgIGN0eFtfRFlOX0FQUExZX0FQUExJQ0FUSU9OX0NPMSAvKiBAbWluOiUyZWFwcGx5QXBwbGljYXRpb25Db250ZXh0ICovXShldnQsIGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgY3R4W19EWU5fQVBQTFlfREVWSUNFX0NPTlRFWFQgLyogQG1pbjolMmVhcHBseURldmljZUNvbnRleHQgKi9dKGV2dCwgaXRlbUN0eCk7XHJcbiAgICAgICAgICAgICAgICBjdHhbX0RZTl9BUFBMWV9PUEVSQVRJT05fQ09OVDIgLyogQG1pbjolMmVhcHBseU9wZXJhdGlvbkNvbnRleHQgKi9dKGV2dCwgaXRlbUN0eCk7XHJcbiAgICAgICAgICAgICAgICBjdHhbX0RZTl9BUFBMWV9VU0VSX0NPTlRFWFQgLyogQG1pbjolMmVhcHBseVVzZXJDb250ZXh0ICovXShldnQsIGl0ZW1DdHgpO1xyXG4gICAgICAgICAgICAgICAgY3R4W19EWU5fQVBQTFlfT1BFUkFUSU5HX1NZU1QzIC8qIEBtaW46JTJlYXBwbHlPcGVyYXRpbmdTeXN0ZW1Db250eHQgKi9dKGV2dCwgaXRlbUN0eCk7XHJcbiAgICAgICAgICAgICAgICBjdHguYXBwbHlXZWJDb250ZXh0KGV2dCwgaXRlbUN0eCk7XHJcbiAgICAgICAgICAgICAgICBjdHhbX0RZTl9BUFBMWV9MT0NBVElPTl9DT05URTQgLyogQG1pbjolMmVhcHBseUxvY2F0aW9uQ29udGV4dCAqL10oZXZ0LCBpdGVtQ3R4KTsgLy8gbGVnYWN5IHRhZ3NcclxuICAgICAgICAgICAgICAgIGN0eFtfRFlOX0FQUExZX0lOVEVSTkFMX0NPTlRFNSAvKiBAbWluOiUyZWFwcGx5SW50ZXJuYWxDb250ZXh0ICovXShldnQsIGl0ZW1DdHgpOyAvLyBsZWdhY3kgdGFnc1xyXG4gICAgICAgICAgICAgICAgY3R4LmNsZWFuVXAoZXZ0LCBpdGVtQ3R4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBfdGhpcztcclxuICAgIH1cclxuICAgIFByb3BlcnRpZXNQbHVnaW4uZ2V0RGVmYXVsdENvbmZpZyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX2E7XHJcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB2YXIgbnVsbFZhbHVlID0gbnVsbDtcclxuICAgICAgICB2YXIgZGVmYXVsdENvbmZpZyA9IChfYSA9IHtcclxuICAgICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbktleTogZnVuY3Rpb24gKCkgeyByZXR1cm4gZGVmYXVsdFZhbHVlOyB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF9hW19EWU5fQUNDT1VOVF9JRCAvKiBAbWluOmFjY291bnRJZCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsVmFsdWU7IH0sXHJcbiAgICAgICAgICAgIF9hLnNlc3Npb25SZW5ld2FsTXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAzMCAqIDYwICogMTAwMDsgfSxcclxuICAgICAgICAgICAgX2Euc2FtcGxpbmdQZXJjZW50YWdlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMTAwOyB9LFxyXG4gICAgICAgICAgICBfYS5zZXNzaW9uRXhwaXJhdGlvbk1zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMjQgKiA2MCAqIDYwICogMTAwMDsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9DT09LSUVfRE9NQUlOIC8qIEBtaW46Y29va2llRG9tYWluICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGxWYWx1ZTsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9TREtfRVhURU5TSU9OIC8qIEBtaW46c2RrRXh0ZW5zaW9uICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGxWYWx1ZTsgfSxcclxuICAgICAgICAgICAgX2EuaXNCcm93c2VyTGlua1RyYWNraW5nRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9LFxyXG4gICAgICAgICAgICBfYS5hcHBJZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGxWYWx1ZTsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9HRVRfU0VTU0lPTl9JRCAvKiBAbWluOmdldFNlc3Npb25JZCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsVmFsdWU7IH0sXHJcbiAgICAgICAgICAgIF9hW19EWU5fTkFNRV9QUkVGSVggLyogQG1pbjpuYW1lUHJlZml4ICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9TRVNTSU9OX0NPT0tJRV9QT1NURjYgLyogQG1pbjpzZXNzaW9uQ29va2llUG9zdGZpeCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0sXHJcbiAgICAgICAgICAgIF9hW19EWU5fVVNFUl9DT09LSUVfUE9TVEZJWCAvKiBAbWluOnVzZXJDb29raWVQb3N0Zml4ICovXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9JRF9MRU5HVEggLyogQG1pbjppZExlbmd0aCAqL10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAyMjsgfSxcclxuICAgICAgICAgICAgX2FbX0RZTl9HRVRfTkVXX0lEIC8qIEBtaW46Z2V0TmV3SWQgKi9dID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbFZhbHVlOyB9LFxyXG4gICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25maWc7XHJcbiAgICB9O1xyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIFByb3BlcnRpZXNQbHVnaW4ucHJvdG90eXBlLmluaXRpYWxpemUuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgUHJvcGVydGllc1BsdWdpbi5wcm90b3R5cGUucHJvY2Vzc1RlbGVtZXRyeS5cclxuICAgIHJldHVybiBQcm9wZXJ0aWVzUGx1Z2luO1xyXG59KEJhc2VUZWxlbWV0cnlQbHVnaW4pKTtcclxuZXhwb3J0IGRlZmF1bHQgUHJvcGVydGllc1BsdWdpbjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UHJvcGVydGllc1BsdWdpbi5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBXZWIsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcbi8vICEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhXHJcbi8vIE5vdGU6IERPTidUIEV4cG9ydCB0aGVzZSBjb25zdCBmcm9tIHRoZSBwYWNrYWdlIGFzIHdlIGFyZSBzdGlsbCB0YXJnZXRpbmcgRVMzIHRoaXMgd2lsbCBleHBvcnQgYSBtdXRhYmxlIHZhcmlhYmxlcyB0aGF0IHNvbWVvbmUgY291bGQgY2hhbmdlISEhXHJcbi8vICEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhXHJcbi8vIEdlbmVyYWxseSB5b3Ugc2hvdWxkIG9ubHkgcHV0IHZhbHVlcyB0aGF0IGFyZSB1c2VkIG1vcmUgdGhhbiAyIHRpbWVzIGFuZCB0aGVuIG9ubHkgaWYgbm90IGFscmVhZHkgZXhwb3NlZCBhcyBhIGNvbnN0YW50IChzdWNoIGFzIFNka0NvcmVOYW1lcylcclxuLy8gYXMgd2hlbiB1c2luZyBcInNob3J0XCIgbmFtZWQgdmFsdWVzIGZyb20gaGVyZSB0aGV5IHdpbGwgYmUgd2lsbCBiZSBtaW5pZmllZCBzbWFsbGVyIHRoYW4gdGhlIFNka0NvcmVOYW1lc1tlU2RrQ29yZU5hbWVzLnh4eHhdIHZhbHVlLlxyXG52YXIgX0FVVEhFTlRJQ0FURURfVVNFUl9DT05URVhUID0gXCJBdXRoZW50aWNhdGVkVXNlckNvbnRleHRcIjtcclxudmFyIF9UUkFDSyA9IFwidHJhY2tcIjtcclxuZXhwb3J0IHZhciBTVFJfRU1QVFkgPSBcIlwiO1xyXG5leHBvcnQgdmFyIFNUUl9TTklQUEVUID0gXCJzbmlwcGV0XCI7XHJcbmV4cG9ydCB2YXIgU1RSX0dFVF9DT09LSUVfTUdSID0gXCJnZXRDb29raWVNZ3JcIjtcclxuZXhwb3J0IHZhciBTVFJfU1RBUlRfVFJBQ0tfUEFHRSA9IFwic3RhcnRUcmFja1BhZ2VcIjtcclxuZXhwb3J0IHZhciBTVFJfU1RPUF9UUkFDS19QQUdFID0gXCJzdG9wVHJhY2tQYWdlXCI7XHJcbmV4cG9ydCB2YXIgU1RSX0ZMVVNIID0gXCJmbHVzaFwiO1xyXG5leHBvcnQgdmFyIFNUUl9TVEFSVF9UUkFDS19FVkVOVCA9IFwic3RhcnRUcmFja0V2ZW50XCI7XHJcbmV4cG9ydCB2YXIgU1RSX1NUT1BfVFJBQ0tfRVZFTlQgPSBcInN0b3BUcmFja0V2ZW50XCI7XHJcbmV4cG9ydCB2YXIgU1RSX0FERF9URUxFTUVUUllfSU5JVElBTElaRVIgPSBcImFkZFRlbGVtZXRyeUluaXRpYWxpemVyXCI7XHJcbmV4cG9ydCB2YXIgU1RSX0FERF9URUxFTUVUUllfSU5JVElBTElaRVJTID0gU1RSX0FERF9URUxFTUVUUllfSU5JVElBTElaRVIgKyBcInNcIjtcclxuZXhwb3J0IHZhciBTVFJfUE9MTF9JTlRFUk5BTF9MT0dTID0gXCJwb2xsSW50ZXJuYWxMb2dzXCI7XHJcbmV4cG9ydCB2YXIgU1RSX0dFVF9QTFVHSU4gPSBcImdldFBsdWdpblwiO1xyXG5leHBvcnQgdmFyIFNUUl9FVlRfTkFNRVNQQUNFID0gXCJldnROYW1lc3BhY2VcIjtcclxuZXhwb3J0IHZhciBTVFJfVFJBQ0tfRVZFTlQgPSBfVFJBQ0sgKyBcIkV2ZW50XCI7XHJcbmV4cG9ydCB2YXIgU1RSX1RSQUNLX1RSQUNFID0gX1RSQUNLICsgXCJUcmFjZVwiO1xyXG5leHBvcnQgdmFyIFNUUl9UUkFDS19NRVRSSUMgPSBfVFJBQ0sgKyBcIk1ldHJpY1wiO1xyXG5leHBvcnQgdmFyIFNUUl9UUkFDS19QQUdFX1ZJRVcgPSBfVFJBQ0sgKyBcIlBhZ2VWaWV3XCI7XHJcbmV4cG9ydCB2YXIgU1RSX1RSQUNLX0VYQ0VQVElPTiA9IF9UUkFDSyArIFwiRXhjZXB0aW9uXCI7XHJcbmV4cG9ydCB2YXIgU1RSX1RSQUNLX0RFUEVOREVOQ1lfREFUQSA9IF9UUkFDSyArIFwiRGVwZW5kZW5jeURhdGFcIjtcclxuZXhwb3J0IHZhciBTVFJfU0VUX0FVVEhFTlRJQ0FURURfVVNFUl9DT05URVhUID0gXCJzZXRcIiArIF9BVVRIRU5USUNBVEVEX1VTRVJfQ09OVEVYVDtcclxuZXhwb3J0IHZhciBTVFJfQ0xFQVJfQVVUSEVOVElDQVRFRF9VU0VSX0NPTlRFWFQgPSBcImNsZWFyXCIgKyBfQVVUSEVOVElDQVRFRF9VU0VSX0NPTlRFWFQ7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUludGVybmFsQ29uc3RhbnRzLmpzLm1hcCIsIi8qXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBKYXZhU2NyaXB0IFNESyAtIFdlYiwgMi44LjlcbiAqIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IGFuZCBjb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKi9cblxyXG5cclxuLy8gQHNraXAtZmlsZS1taW5pZnlcclxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuLy8gQVVUTyBHRU5FUkFURUQgRklMRTogVGhpcyBmaWxlIGlzIEF1dG8gR2VuZXJhdGVkIGR1cmluZyBidWlsZC5cclxuLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuLy8gTm90ZTogRE9OJ1QgRXhwb3J0IHRoZXNlIGNvbnN0IGZyb20gdGhlIHBhY2thZ2UgYXMgd2UgYXJlIHN0aWxsIHRhcmdldGluZyBFUzMgdGhpcyB3aWxsIGV4cG9ydCBhIG11dGFibGUgdmFyaWFibGVzIHRoYXQgc29tZW9uZSBjb3VsZCBjaGFuZ2UhISFcclxuLy8gISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISFcclxuZXhwb3J0IHZhciBfRFlOX1VQREFURV9TTklQUEVUX0RFRklOMCA9IFwidXBkYXRlU25pcHBldERlZmluaXRpb25zXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9MT0FEX0FQUF9JTlNJR0hUUyA9IFwibG9hZEFwcEluc2lnaHRzXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9FTkRQT0lOVF9VUkwgPSBcImVuZHBvaW50VXJsXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9NQVhfQkFUQ0hfU0laRV9JTl9CWTEgPSBcIm1heEJhdGNoU2l6ZUluQnl0ZXNcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX01BWF9CQVRDSF9JTlRFUlZBTCA9IFwibWF4QmF0Y2hJbnRlcnZhbFwiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fRElTQUJMRV9FWENFUFRJT05fVFIyID0gXCJkaXNhYmxlRXhjZXB0aW9uVHJhY2tpbmdcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0RJU0FCTEVfVEVMRU1FVFJZID0gXCJkaXNhYmxlVGVsZW1ldHJ5XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9FTUlUX0xJTkVfREVMSU1JVEVEXzMgPSBcImVtaXRMaW5lRGVsaW1pdGVkSnNvblwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRElBR05PU1RJQ19MT0dfSU5URVI0ID0gXCJkaWFnbm9zdGljTG9nSW50ZXJ2YWxcIjsgLy8gQ291bnQ6IDZcclxuZXhwb3J0IHZhciBfRFlOX0FVVE9fVFJBQ0tfUEFHRV9WSVNJNSA9IFwiYXV0b1RyYWNrUGFnZVZpc2l0VGltZVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSA9IFwic2FtcGxpbmdQZXJjZW50YWdlXCI7IC8vIENvdW50OiA0XHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0FKQVhfVFJBQ0tJTjYgPSBcImRpc2FibGVBamF4VHJhY2tpbmdcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX01BWF9BSkFYX0NBTExTX1BFUl9WNyA9IFwibWF4QWpheENhbGxzUGVyVmlld1wiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fSVNfQkVBQ09OX0FQSV9ESVNBQkw4ID0gXCJpc0JlYWNvbkFwaURpc2FibGVkXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0NPUlJFTEFUSU9OXzkgPSBcImRpc2FibGVDb3JyZWxhdGlvbkhlYWRlcnNcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0NPUlJFTEFUSU9OX0hFQURFUl9FMTAgPSBcImNvcnJlbGF0aW9uSGVhZGVyRXhjbHVkZWREb21haW5zXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0ZMVVNIX09OX0JFRjExID0gXCJkaXNhYmxlRmx1c2hPbkJlZm9yZVVubG9hZFwiOyAvLyBDb3VudDogNFxyXG5leHBvcnQgdmFyIF9EWU5fRElTQUJMRV9GTFVTSF9PTl9VTkwxMiA9IFwiZGlzYWJsZUZsdXNoT25VbmxvYWRcIjsgLy8gQ291bnQ6IDNcclxuZXhwb3J0IHZhciBfRFlOX0VOQUJMRV9TRVNTSU9OX1NUT1JBMTMgPSBcImVuYWJsZVNlc3Npb25TdG9yYWdlQnVmZmVyXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9JU19DT09LSUVfVVNFX0RJU0FCTDE0ID0gXCJpc0Nvb2tpZVVzZURpc2FibGVkXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9JU19TVE9SQUdFX1VTRV9ESVNBQjE1ID0gXCJpc1N0b3JhZ2VVc2VEaXNhYmxlZFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fSVNfQlJPV1NFUl9MSU5LX1RSQUMxNiA9IFwiaXNCcm93c2VyTGlua1RyYWNraW5nRW5hYmxlZFwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fRU5BQkxFX0NPUlNfQ09SUkVMQVQxNyA9IFwiZW5hYmxlQ29yc0NvcnJlbGF0aW9uXCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9DT05GSUcgPSBcImNvbmZpZ1wiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fQ09OVEVYVCA9IFwiY29udGV4dFwiOyAvLyBDb3VudDogOFxyXG5leHBvcnQgdmFyIF9EWU5fUFVTSCA9IFwicHVzaFwiOyAvLyBDb3VudDogNVxyXG5leHBvcnQgdmFyIF9EWU5fVkVSU0lPTiA9IFwidmVyc2lvblwiOyAvLyBDb3VudDogNlxyXG5leHBvcnQgdmFyIF9EWU5fUVVFVUUgPSBcInF1ZXVlXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9DT05ORUNUSU9OX1NUUklORyA9IFwiY29ubmVjdGlvblN0cmluZ1wiOyAvLyBDb3VudDogM1xyXG5leHBvcnQgdmFyIF9EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSA9IFwiaW5zdHJ1bWVudGF0aW9uS2V5XCI7IC8vIENvdW50OiAyXHJcbmV4cG9ydCB2YXIgX0RZTl9BUFBfSU5TSUdIVFMgPSBcImFwcEluc2lnaHRzXCI7IC8vIENvdW50OiAzXHJcbmV4cG9ydCB2YXIgX0RZTl9ESVNBQkxFX0lLRVlfREVQUkVDQTE4ID0gXCJkaXNhYmxlSWtleURlcHJlY2F0aW9uTWVzc2FnZVwiOyAvLyBDb3VudDogMlxyXG5leHBvcnQgdmFyIF9EWU5fR0VUX1RSQU5TTUlTU0lPTl9DT04xOSA9IFwiZ2V0VHJhbnNtaXNzaW9uQ29udHJvbHNcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX09OVU5MT0FEX0ZMVVNIID0gXCJvbnVubG9hZEZsdXNoXCI7IC8vIENvdW50OiA2XHJcbmV4cG9ydCB2YXIgX0RZTl9BRERfSE9VU0VLRUVQSU5HX0JFRjIwID0gXCJhZGRIb3VzZWtlZXBpbmdCZWZvcmVVbmxvYWRcIjsgLy8gQ291bnQ6IDJcclxuZXhwb3J0IHZhciBfRFlOX0lOREVYX09GID0gXCJpbmRleE9mXCI7IC8vIENvdW50OiA0XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9fRHluYW1pY0NvbnN0YW50cy5qcy5tYXAiLCIvKlxuICogQXBwbGljYXRpb24gSW5zaWdodHMgSmF2YVNjcmlwdCBTREsgLSBXZWIsIDIuOC45XG4gKiBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBhbmQgY29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICovXG5cclxuXHJcblwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQgZHluYW1pY1Byb3RvIGZyb20gXCJAbWljcm9zb2Z0L2R5bmFtaWNwcm90by1qc1wiO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NQbHVnaW4gfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWFuYWx5dGljcy1qc1wiO1xyXG5pbXBvcnQgeyBTZW5kZXIgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNoYW5uZWwtanNcIjtcclxuaW1wb3J0IHsgQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllciwgQnJlZXplQ2hhbm5lbElkZW50aWZpZXIsIENvbmZpZ3VyYXRpb25NYW5hZ2VyLCBDb25uZWN0aW9uU3RyaW5nUGFyc2VyLCBDb250ZXh0VGFnS2V5cywgQ29ycmVsYXRpb25JZEhlbHBlciwgQ3R4VGFnS2V5cywgREVGQVVMVF9CUkVFWkVfRU5EUE9JTlQsIERFRkFVTFRfQlJFRVpFX1BBVEgsIERhdGEsIERhdGFTYW5pdGl6ZXIsIERhdGVUaW1lVXRpbHMsIERpc2FibGVkUHJvcGVydHlOYW1lLCBEaXN0cmlidXRlZFRyYWNpbmdNb2RlcywgRW52ZWxvcGUsIEV2ZW50LCBFeGNlcHRpb24sIEV4dGVuc2lvbnMsIEh0dHBNZXRob2QsIE1ldHJpYywgUGFnZVZpZXcsIFBhZ2VWaWV3UGVyZm9ybWFuY2UsIFByb2Nlc3NMZWdhY3ksIFByb3BlcnRpZXNQbHVnaW5JZGVudGlmaWVyLCBSZW1vdGVEZXBlbmRlbmN5RGF0YSwgUmVxdWVzdEhlYWRlcnMsIFNhbXBsZVJhdGUsIFNldmVyaXR5TGV2ZWwsIFRlbGVtZXRyeUl0ZW1DcmVhdG9yLCBUcmFjZSwgVXJsSGVscGVyLCBVdGlsLCBwYXJzZUNvbm5lY3Rpb25TdHJpbmcgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vblwiO1xyXG5pbXBvcnQgeyBBcHBJbnNpZ2h0c0NvcmUsIF90aHJvd0ludGVybmFsLCBhZGRQYWdlSGlkZUV2ZW50TGlzdGVuZXIsIGFkZFBhZ2VVbmxvYWRFdmVudExpc3RlbmVyLCBhcnJGb3JFYWNoLCBhcnJJbmRleE9mLCBjcmVhdGVVbmlxdWVOYW1lc3BhY2UsIGRvUGVyZiwgaGFzRG9jdW1lbnQsIGhhc1dpbmRvdywgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdWxsT3JVbmRlZmluZWQsIGlzUmVhY3ROYXRpdmUsIGlzU3RyaW5nLCBtZXJnZUV2dE5hbWVzcGFjZSwgb2JqRm9yRWFjaEtleSwgcHJveHlBc3NpZ24sIHByb3h5RnVuY3Rpb25zLCByZW1vdmVQYWdlSGlkZUV2ZW50TGlzdGVuZXIsIHJlbW92ZVBhZ2VVbmxvYWRFdmVudExpc3RlbmVyLCB0aHJvd0Vycm9yIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb3JlLWpzXCI7XHJcbmltcG9ydCB7IEFqYXhQbHVnaW4gYXMgRGVwZW5kZW5jaWVzUGx1Z2luIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1kZXBlbmRlbmNpZXMtanNcIjtcclxuaW1wb3J0IHsgUHJvcGVydGllc1BsdWdpbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qc1wiO1xyXG5pbXBvcnQgeyBTVFJfQUREX1RFTEVNRVRSWV9JTklUSUFMSVpFUiwgU1RSX0NMRUFSX0FVVEhFTlRJQ0FURURfVVNFUl9DT05URVhULCBTVFJfRVZUX05BTUVTUEFDRSwgU1RSX0ZMVVNILCBTVFJfR0VUX0NPT0tJRV9NR1IsIFNUUl9HRVRfUExVR0lOLCBTVFJfUE9MTF9JTlRFUk5BTF9MT0dTLCBTVFJfU0VUX0FVVEhFTlRJQ0FURURfVVNFUl9DT05URVhULCBTVFJfU05JUFBFVCwgU1RSX1NUQVJUX1RSQUNLX0VWRU5ULCBTVFJfU1RBUlRfVFJBQ0tfUEFHRSwgU1RSX1NUT1BfVFJBQ0tfRVZFTlQsIFNUUl9TVE9QX1RSQUNLX1BBR0UsIFNUUl9UUkFDS19ERVBFTkRFTkNZX0RBVEEsIFNUUl9UUkFDS19FVkVOVCwgU1RSX1RSQUNLX0VYQ0VQVElPTiwgU1RSX1RSQUNLX01FVFJJQywgU1RSX1RSQUNLX1BBR0VfVklFVywgU1RSX1RSQUNLX1RSQUNFIH0gZnJvbSBcIi4vSW50ZXJuYWxDb25zdGFudHNcIjtcclxuaW1wb3J0IHsgX0RZTl9BRERfSE9VU0VLRUVQSU5HX0JFRjIwLCBfRFlOX0FQUF9JTlNJR0hUUywgX0RZTl9DT05GSUcsIF9EWU5fQ09OTkVDVElPTl9TVFJJTkcsIF9EWU5fQ09OVEVYVCwgX0RZTl9ESUFHTk9TVElDX0xPR19JTlRFUjQsIF9EWU5fRElTQUJMRV9GTFVTSF9PTl9CRUYxMSwgX0RZTl9ESVNBQkxFX0ZMVVNIX09OX1VOTDEyLCBfRFlOX0RJU0FCTEVfSUtFWV9ERVBSRUNBMTgsIF9EWU5fRU5EUE9JTlRfVVJMLCBfRFlOX0dFVF9UUkFOU01JU1NJT05fQ09OMTksIF9EWU5fSU5ERVhfT0YsIF9EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSwgX0RZTl9MT0FEX0FQUF9JTlNJR0hUUywgX0RZTl9PTlVOTE9BRF9GTFVTSCwgX0RZTl9QVVNILCBfRFlOX1FVRVVFLCBfRFlOX1VQREFURV9TTklQUEVUX0RFRklOMCwgX0RZTl9WRVJTSU9OIH0gZnJvbSBcIi4vX19EeW5hbWljQ29uc3RhbnRzXCI7XHJcbnZhciBfaW50ZXJuYWxTZGtTcmM7XHJcbi8vIFRoaXMgaXMgYW4gZXhjbHVkZSBsaXN0IG9mIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHVwZGF0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uXHJcbi8vIFRoZXkgaW5jbHVkZSBhIGNvbWJpbmF0aW9uIG9mIHByaXZhdGUgYW5kIGludGVybmFsIHByb3BlcnR5IG5hbWVzXHJcbnZhciBfaWdub3JlVXBkYXRlU25pcHBldFByb3BlcnRpZXMgPSBbXHJcbiAgICBTVFJfU05JUFBFVCwgXCJkZXBlbmRlbmNpZXNcIiwgXCJwcm9wZXJ0aWVzXCIsIFwiX3NuaXBwZXRWZXJzaW9uXCIsIFwiYXBwSW5zaWdodHNOZXdcIiwgXCJnZXRTS1VEZWZhdWx0c1wiXHJcbl07XHJcbi8vIFJlLWV4cG9zaW5nIHRoZSBDb21tb24gY2xhc3NlcyBhcyBUZWxlbWV0cnksIHRoZSBsaXN0IHdhcyB0YWtlbiBieSByZXZpZXdpbmcgdGhlIGdlbmVyYXRlZCBjb2RlIGZvciB0aGUgYnVpbGQgd2hpbGUgdXNpbmdcclxuLy8gdGhlIHByZXZpb3VzIGNvbmZpZ3VyYXRpb24gOi1cclxuLy8gaW1wb3J0ICogYXMgQ29tbW9uIGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCJcclxuLy8gZXhwb3J0IGNvbnN0IFRlbGVtZXRyeSA9IENvbW1vbjtcclxudmFyIGZpZWxkVHlwZSA9IHtcclxuICAgIERlZmF1bHQ6IDAgLyogRmllbGRUeXBlLkRlZmF1bHQgKi8sXHJcbiAgICBSZXF1aXJlZDogMSAvKiBGaWVsZFR5cGUuUmVxdWlyZWQgKi8sXHJcbiAgICBBcnJheTogMiAvKiBGaWVsZFR5cGUuQXJyYXkgKi8sXHJcbiAgICBIaWRkZW46IDQgLyogRmllbGRUeXBlLkhpZGRlbiAqL1xyXG59O1xyXG4vKipcclxuICogVGVsZW1ldHJ5IHR5cGUgY2xhc3NlcywgZS5nLiBQYWdlVmlldywgRXhjZXB0aW9uLCBldGNcclxuICovXHJcbmV4cG9ydCB2YXIgVGVsZW1ldHJ5ID0ge1xyXG4gICAgX19wcm90b19fOiBudWxsLFxyXG4gICAgUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXI6IFByb3BlcnRpZXNQbHVnaW5JZGVudGlmaWVyLFxyXG4gICAgQnJlZXplQ2hhbm5lbElkZW50aWZpZXI6IEJyZWV6ZUNoYW5uZWxJZGVudGlmaWVyLFxyXG4gICAgQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllcjogQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllcixcclxuICAgIFV0aWw6IFV0aWwsXHJcbiAgICBDb3JyZWxhdGlvbklkSGVscGVyOiBDb3JyZWxhdGlvbklkSGVscGVyLFxyXG4gICAgVXJsSGVscGVyOiBVcmxIZWxwZXIsXHJcbiAgICBEYXRlVGltZVV0aWxzOiBEYXRlVGltZVV0aWxzLFxyXG4gICAgQ29ubmVjdGlvblN0cmluZ1BhcnNlcjogQ29ubmVjdGlvblN0cmluZ1BhcnNlcixcclxuICAgIEZpZWxkVHlwZTogZmllbGRUeXBlLFxyXG4gICAgUmVxdWVzdEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLFxyXG4gICAgRGlzYWJsZWRQcm9wZXJ0eU5hbWU6IERpc2FibGVkUHJvcGVydHlOYW1lLFxyXG4gICAgUHJvY2Vzc0xlZ2FjeTogUHJvY2Vzc0xlZ2FjeSxcclxuICAgIFNhbXBsZVJhdGU6IFNhbXBsZVJhdGUsXHJcbiAgICBIdHRwTWV0aG9kOiBIdHRwTWV0aG9kLFxyXG4gICAgREVGQVVMVF9CUkVFWkVfRU5EUE9JTlQ6IERFRkFVTFRfQlJFRVpFX0VORFBPSU5ULFxyXG4gICAgRW52ZWxvcGU6IEVudmVsb3BlLFxyXG4gICAgRXZlbnQ6IEV2ZW50LFxyXG4gICAgRXhjZXB0aW9uOiBFeGNlcHRpb24sXHJcbiAgICBNZXRyaWM6IE1ldHJpYyxcclxuICAgIFBhZ2VWaWV3OiBQYWdlVmlldyxcclxuICAgIFJlbW90ZURlcGVuZGVuY3lEYXRhOiBSZW1vdGVEZXBlbmRlbmN5RGF0YSxcclxuICAgIFRyYWNlOiBUcmFjZSxcclxuICAgIFBhZ2VWaWV3UGVyZm9ybWFuY2U6IFBhZ2VWaWV3UGVyZm9ybWFuY2UsXHJcbiAgICBEYXRhOiBEYXRhLFxyXG4gICAgU2V2ZXJpdHlMZXZlbDogU2V2ZXJpdHlMZXZlbCxcclxuICAgIENvbmZpZ3VyYXRpb25NYW5hZ2VyOiBDb25maWd1cmF0aW9uTWFuYWdlcixcclxuICAgIENvbnRleHRUYWdLZXlzOiBDb250ZXh0VGFnS2V5cyxcclxuICAgIERhdGFTYW5pdGl6ZXI6IERhdGFTYW5pdGl6ZXIsXHJcbiAgICBUZWxlbWV0cnlJdGVtQ3JlYXRvcjogVGVsZW1ldHJ5SXRlbUNyZWF0b3IsXHJcbiAgICBDdHhUYWdLZXlzOiBDdHhUYWdLZXlzLFxyXG4gICAgRXh0ZW5zaW9uczogRXh0ZW5zaW9ucyxcclxuICAgIERpc3RyaWJ1dGVkVHJhY2luZ01vZGVzOiBEaXN0cmlidXRlZFRyYWNpbmdNb2Rlc1xyXG59O1xyXG4vKipcclxuICogQXBwbGljYXRpb24gSW5zaWdodHMgQVBJXHJcbiAqIEBjbGFzcyBJbml0aWFsaXphdGlvblxyXG4gKiBAaW1wbGVtZW50cyB7SUFwcGxpY2F0aW9uSW5zaWdodHN9XHJcbiAqL1xyXG52YXIgSW5pdGlhbGl6YXRpb24gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBJbml0aWFsaXphdGlvbihzbmlwcGV0KSB7XHJcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgICAgICAvLyBOT1RFITogRE9OJ1Qgc2V0IGRlZmF1bHQgdmFsdWVzIGhlcmUsIGluc3RlYWQgc2V0IHRoZW0gaW4gdGhlIF9pbml0RGVmYXVsdHMoKSBmdW5jdGlvbiBhcyBpdCBpcyBhbHNvIGNhbGxlZCBkdXJpbmcgdGVhcmRvd24oKVxyXG4gICAgICAgIHZhciBkZXBlbmRlbmNpZXM7XHJcbiAgICAgICAgdmFyIHByb3BlcnRpZXM7XHJcbiAgICAgICAgdmFyIF9zZW5kZXI7XHJcbiAgICAgICAgdmFyIF9zbmlwcGV0VmVyc2lvbjtcclxuICAgICAgICB2YXIgX2V2dE5hbWVzcGFjZTtcclxuICAgICAgICB2YXIgX2hvdXNlS2VlcGluZ05hbWVzcGFjZTtcclxuICAgICAgICB2YXIgX2NvcmU7XHJcbiAgICAgICAgZHluYW1pY1Byb3RvKEluaXRpYWxpemF0aW9uLCB0aGlzLCBmdW5jdGlvbiAoX3NlbGYpIHtcclxuICAgICAgICAgICAgX2luaXREZWZhdWx0cygpO1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIHRoZSBxdWV1ZSBhbmQgY29uZmlnIGluIGNhc2UgdGhleSBhcmUgdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIF9zbmlwcGV0VmVyc2lvbiA9IFwiXCIgKyAoc25pcHBldC5zdiB8fCBzbmlwcGV0W19EWU5fVkVSU0lPTiAvKiBAbWluOiUyZXZlcnNpb24gKi9dIHx8IFwiXCIpO1xyXG4gICAgICAgICAgICBzbmlwcGV0W19EWU5fUVVFVUUgLyogQG1pbjolMmVxdWV1ZSAqL10gPSBzbmlwcGV0W19EWU5fUVVFVUUgLyogQG1pbjolMmVxdWV1ZSAqL10gfHwgW107XHJcbiAgICAgICAgICAgIHNuaXBwZXRbX0RZTl9WRVJTSU9OIC8qIEBtaW46JTJldmVyc2lvbiAqL10gPSBzbmlwcGV0W19EWU5fVkVSU0lPTiAvKiBAbWluOiUyZXZlcnNpb24gKi9dIHx8IDIuMDsgLy8gRGVmYXVsdCB0byBuZXcgdmVyc2lvblxyXG4gICAgICAgICAgICB2YXIgY29uZmlnID0gc25pcHBldFtfRFlOX0NPTkZJRyAvKiBAbWluOiUyZWNvbmZpZyAqL10gfHwge307XHJcbiAgICAgICAgICAgIGlmIChjb25maWdbX0RZTl9DT05ORUNUSU9OX1NUUklORyAvKiBAbWluOiUyZWNvbm5lY3Rpb25TdHJpbmcgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3MgPSBwYXJzZUNvbm5lY3Rpb25TdHJpbmcoY29uZmlnW19EWU5fQ09OTkVDVElPTl9TVFJJTkcgLyogQG1pbjolMmVjb25uZWN0aW9uU3RyaW5nICovXSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5nZXN0ID0gY3MuaW5nZXN0aW9uZW5kcG9pbnQ7XHJcbiAgICAgICAgICAgICAgICBjb25maWdbX0RZTl9FTkRQT0lOVF9VUkwgLyogQG1pbjolMmVlbmRwb2ludFVybCAqL10gPSBpbmdlc3QgPyAoaW5nZXN0ICsgREVGQVVMVF9CUkVFWkVfUEFUSCkgOiBjb25maWdbX0RZTl9FTkRQT0lOVF9VUkwgLyogQG1pbjolMmVlbmRwb2ludFVybCAqL107IC8vIG9ubHkgYWRkIC92Mi90cmFjayB3aGVuIGZyb20gY29ubmVjdGlvbnN0cmluZ1xyXG4gICAgICAgICAgICAgICAgY29uZmlnW19EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSAvKiBAbWluOiUyZWluc3RydW1lbnRhdGlvbktleSAqL10gPSBjcy5pbnN0cnVtZW50YXRpb25rZXkgfHwgY29uZmlnW19EWU5fSU5TVFJVTUVOVEFUSU9OX0tFWSAvKiBAbWluOiUyZWluc3RydW1lbnRhdGlvbktleSAqL107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9BUFBfSU5TSUdIVFMgLyogQG1pbjolMmVhcHBJbnNpZ2h0cyAqL10gPSBuZXcgQW5hbHl0aWNzUGx1Z2luKCk7XHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllc1BsdWdpbigpO1xyXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMgPSBuZXcgRGVwZW5kZW5jaWVzUGx1Z2luKCk7XHJcbiAgICAgICAgICAgIF9zZW5kZXIgPSBuZXcgU2VuZGVyKCk7XHJcbiAgICAgICAgICAgIF9jb3JlID0gbmV3IEFwcEluc2lnaHRzQ29yZSgpO1xyXG4gICAgICAgICAgICBfc2VsZi5jb3JlID0gX2NvcmU7XHJcbiAgICAgICAgICAgIHZhciBpc0Vyck1lc3NhZ2VEaXNhYmxlZCA9IGlzTnVsbE9yVW5kZWZpbmVkKGNvbmZpZ1tfRFlOX0RJU0FCTEVfSUtFWV9ERVBSRUNBMTggLyogQG1pbjolMmVkaXNhYmxlSWtleURlcHJlY2F0aW9uTWVzc2FnZSAqL10pID8gdHJ1ZSA6IGNvbmZpZ1tfRFlOX0RJU0FCTEVfSUtFWV9ERVBSRUNBMTggLyogQG1pbjolMmVkaXNhYmxlSWtleURlcHJlY2F0aW9uTWVzc2FnZSAqL107XHJcbiAgICAgICAgICAgIGlmICghY29uZmlnW19EWU5fQ09OTkVDVElPTl9TVFJJTkcgLyogQG1pbjolMmVjb25uZWN0aW9uU3RyaW5nICovXSAmJiAhaXNFcnJNZXNzYWdlRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIF90aHJvd0ludGVybmFsKF9jb3JlLmxvZ2dlciwgMSAvKiBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMICovLCAxMDYgLyogX2VJbnRlcm5hbE1lc3NhZ2VJZC5JbnN0cnVtZW50YXRpb25LZXlEZXByZWNhdGlvbiAqLywgXCJJbnN0cnVtZW50YXRpb24ga2V5IHN1cHBvcnQgd2lsbCBlbmQgc29vbiwgc2VlIGFrYS5tcy9Ja2V5TWlncmF0ZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfc2VsZltTVFJfU05JUFBFVCAvKiBAbWluOiUyZXNuaXBwZXQgKi9dID0gc25pcHBldDtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dID0gY29uZmlnO1xyXG4gICAgICAgICAgICBfZ2V0U0tVRGVmYXVsdHMoKTtcclxuICAgICAgICAgICAgX3NlbGZbU1RSX0ZMVVNIIC8qIEBtaW46JTJlZmx1c2ggKi9dID0gZnVuY3Rpb24gKGFzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXN5bmMgPT09IHZvaWQgMCkgeyBhc3luYyA9IHRydWU7IH1cclxuICAgICAgICAgICAgICAgIGRvUGVyZihfY29yZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gXCJBSVNLVS5mbHVzaFwiOyB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfY29yZVtfRFlOX0dFVF9UUkFOU01JU1NJT05fQ09OMTkgLyogQG1pbjolMmVnZXRUcmFuc21pc3Npb25Db250cm9scyAqL10oKSwgZnVuY3Rpb24gKGNoYW5uZWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goY2hhbm5lbHMsIGZ1bmN0aW9uIChjaGFubmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW1NUUl9GTFVTSCAvKiBAbWluOiUyZWZsdXNoICovXShhc3luYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgbnVsbCwgYXN5bmMpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX09OVU5MT0FEX0ZMVVNIIC8qIEBtaW46JTJlb251bmxvYWRGbHVzaCAqL10gPSBmdW5jdGlvbiAoYXN5bmMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChhc3luYyA9PT0gdm9pZCAwKSB7IGFzeW5jID0gdHJ1ZTsgfVxyXG4gICAgICAgICAgICAgICAgYXJyRm9yRWFjaChfY29yZVtfRFlOX0dFVF9UUkFOU01JU1NJT05fQ09OMTkgLyogQG1pbjolMmVnZXRUcmFuc21pc3Npb25Db250cm9scyAqL10oKSwgZnVuY3Rpb24gKGNoYW5uZWxzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyRm9yRWFjaChjaGFubmVscywgZnVuY3Rpb24gKGNoYW5uZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxbX0RZTl9PTlVOTE9BRF9GTFVTSCAvKiBAbWluOiUyZW9udW5sb2FkRmx1c2ggKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW19EWU5fT05VTkxPQURfRkxVU0ggLyogQG1pbjolMmVvbnVubG9hZEZsdXNoICovXSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFtTVFJfRkxVU0ggLyogQG1pbjolMmVmbHVzaCAqL10oYXN5bmMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgX3NlbGZbX0RZTl9MT0FEX0FQUF9JTlNJR0hUUyAvKiBAbWluOiUyZWxvYWRBcHBJbnNpZ2h0cyAqL10gPSBmdW5jdGlvbiAobGVnYWN5TW9kZSwgbG9nZ2VyLCBub3RpZmljYXRpb25NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGVnYWN5TW9kZSA9PT0gdm9pZCAwKSB7IGxlZ2FjeU1vZGUgPSBmYWxzZTsgfVxyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZVNuaXBwZXRQcm9wZXJ0aWVzKHNuaXBwZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc25pcHBldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc25pcHBldFZlciA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoX3NuaXBwZXRWZXJzaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pcHBldFZlciArPSBfc25pcHBldFZlcnNpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlZ2FjeU1vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaXBwZXRWZXIgKz0gXCIubGdcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3NlbGZbX0RZTl9DT05URVhUIC8qIEBtaW46JTJlY29udGV4dCAqL10gJiYgX3NlbGZbX0RZTl9DT05URVhUIC8qIEBtaW46JTJlY29udGV4dCAqL10uaW50ZXJuYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dLmludGVybmFsLnNuaXBwZXRWZXIgPSBzbmlwcGV0VmVyIHx8IFwiLVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFwcGx5IHVwZGF0ZWQgcHJvcGVydGllcyB0byB0aGUgZ2xvYmFsIGluc3RhbmNlIChzbmlwcGV0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpGb3JFYWNoS2V5KF9zZWxmLCBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcoZmllbGQpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzRnVuY3Rpb24odmFsdWUpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQgJiYgZmllbGRbMF0gIT09IFwiX1wiICYmIC8vIERvbid0IGNvcHkgXCJpbnRlcm5hbFwiIHZhbHVlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckluZGV4T2YoX2lnbm9yZVVwZGF0ZVNuaXBwZXRQcm9wZXJ0aWVzLCBmaWVsZCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pcHBldFtmaWVsZF0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gZG9udCBhbGxvdyBhZGRpdGlvbmFsIGNoYW5uZWxzL290aGVyIGV4dGVuc2lvbnMgZm9yIGxlZ2FjeSBtb2RlOyBsZWdhY3kgbW9kZSBpcyBvbmx5IHRvIGFsbG93IHVzZXJzIHRvIHN3aXRjaCB3aXRoIG5vIGNvZGUgY2hhbmdlcyFcclxuICAgICAgICAgICAgICAgIGlmIChsZWdhY3lNb2RlICYmIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXS5leHRlbnNpb25zICYmIF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXS5leHRlbnNpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKFwiRXh0ZW5zaW9ucyBub3QgYWxsb3dlZCBpbiBsZWdhY3kgbW9kZVwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRvUGVyZihfc2VsZi5jb3JlLCBmdW5jdGlvbiAoKSB7IHJldHVybiBcIkFJU0tVLmxvYWRBcHBJbnNpZ2h0c1wiOyB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbnMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zW19EWU5fUFVTSCAvKiBAbWluOiUyZXB1c2ggKi9dKF9zZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10ocHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uc1tfRFlOX1BVU0ggLyogQG1pbjolMmVwdXNoICovXShkZXBlbmRlbmNpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnNbX0RZTl9QVVNIIC8qIEBtaW46JTJlcHVzaCAqL10oX3NlbGZbX0RZTl9BUFBfSU5TSUdIVFMgLyogQG1pbjolMmVhcHBJbnNpZ2h0cyAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgY29yZVxyXG4gICAgICAgICAgICAgICAgICAgIF9jb3JlLmluaXRpYWxpemUoX3NlbGZbX0RZTl9DT05GSUcgLyogQG1pbjolMmVjb25maWcgKi9dLCBleHRlbnNpb25zLCBsb2dnZXIsIG5vdGlmaWNhdGlvbk1hbmFnZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dID0gcHJvcGVydGllc1tfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2ludGVybmFsU2RrU3JjICYmIF9zZWxmW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9zZWxmW19EWU5fQ09OVEVYVCAvKiBAbWluOiUyZWNvbnRleHQgKi9dLmludGVybmFsLnNka1NyYyA9IF9pbnRlcm5hbFNka1NyYztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX3VwZGF0ZVNuaXBwZXRQcm9wZXJ0aWVzKF9zZWxmW1NUUl9TTklQUEVUIC8qIEBtaW46JTJlc25pcHBldCAqL10pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVtcHR5IHF1ZXVlIG9mIGFsbCBhcGkgY2FsbHMgbG9nZ2VkIHByaW9yIHRvIHNkayBkb3dubG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIF9zZWxmLmVtcHR5UXVldWUoKTtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltTVFJfUE9MTF9JTlRFUk5BTF9MT0dTIC8qIEBtaW46JTJlcG9sbEludGVybmFsTG9ncyAqL10oKTtcclxuICAgICAgICAgICAgICAgICAgICBfc2VsZltfRFlOX0FERF9IT1VTRUtFRVBJTkdfQkVGMjAgLyogQG1pbjolMmVhZGRIb3VzZWtlZXBpbmdCZWZvcmVVbmxvYWQgKi9dKF90aGlzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9zZWxmO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZltfRFlOX1VQREFURV9TTklQUEVUX0RFRklOMCAvKiBAbWluOiUyZXVwZGF0ZVNuaXBwZXREZWZpbml0aW9ucyAqL10gPSBmdW5jdGlvbiAoc25pcHBldCkge1xyXG4gICAgICAgICAgICAgICAgLy8gYXBwbHkgZnVsbCBhcHBJbnNpZ2h0cyB0byB0aGUgZ2xvYmFsIGluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBsb2FkQXBwSW5zaWdodHMgaXMgY2FsbGVkXHJcbiAgICAgICAgICAgICAgICBwcm94eUFzc2lnbihzbmlwcGV0LCBfc2VsZiwgZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBOb3QgZXhjbHVkaW5nIG5hbWVzIHByZWZpeGVkIHdpdGggXCJfXCIgYXMgd2UgbmVlZCB0byBwcm94eSBzb21lIGZ1bmN0aW9ucyBsaWtlIF9vbkVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgJiYgYXJySW5kZXhPZihfaWdub3JlVXBkYXRlU25pcHBldFByb3BlcnRpZXMsIG5hbWUpID09PSAtMTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi5lbXB0eVF1ZXVlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY2FsbCBmdW5jdGlvbnMgdGhhdCB3ZXJlIHF1ZXVlZCBiZWZvcmUgdGhlIG1haW4gc2NyaXB0IHdhcyBsb2FkZWRcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoX3NlbGYuc25pcHBldFtfRFlOX1FVRVVFIC8qIEBtaW46JTJlcXVldWUgKi9dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3RlOiBkbyBub3QgY2hlY2sgbGVuZ3RoIGluIHRoZSBmb3ItbG9vcCBjb25kaXRpb25hbCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nIGFuZCB0aGUgc3R1YiBtZXRob2RzIGFyZSBub3Qgb3ZlcnJpZGRlbi5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlbmd0aF8xID0gX3NlbGYuc25pcHBldFtfRFlOX1FVRVVFIC8qIEBtaW46JTJlcXVldWUgKi9dLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGhfMTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FsbCA9IF9zZWxmLnNuaXBwZXRbX0RZTl9RVUVVRSAvKiBAbWluOiUyZXF1ZXVlICovXVtpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi5zbmlwcGV0W19EWU5fUVVFVUUgLyogQG1pbjolMmVxdWV1ZSAqL10gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfc2VsZi5zbmlwcGV0W19EWU5fUVVFVUUgLyogQG1pbjolMmVxdWV1ZSAqL107XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0aWVzXzEgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uICYmIGlzRnVuY3Rpb24oZXhjZXB0aW9uLnRvU3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzXzEuZXhjZXB0aW9uID0gZXhjZXB0aW9uLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgZnJvbSBjb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gTWljcm9zb2Z0LkFwcGxpY2F0aW9uSW5zaWdodHMuX0ludGVybmFsTG9nZ2luZy50aHJvd0ludGVybmFsKFxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBlTG9nZ2luZ1NldmVyaXR5LldBUk5JTkcsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkVG9TZW5kUXVldWVkVGVsZW1ldHJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBcIkZhaWxlZCB0byBzZW5kIHF1ZXVlZCB0ZWxlbWV0cnlcIixcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgcHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmW19EWU5fQUREX0hPVVNFS0VFUElOR19CRUYyMCAvKiBAbWluOiUyZWFkZEhvdXNla2VlcGluZ0JlZm9yZVVubG9hZCAqL10gPSBmdW5jdGlvbiAoYXBwSW5zaWdodHNJbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQWRkIGNhbGxiYWNrIHRvIHB1c2ggZXZlbnRzIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIGF3YXlcclxuICAgICAgICAgICAgICAgIGlmIChoYXNXaW5kb3coKSB8fCBoYXNEb2N1bWVudCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmZvcm1Ib3VzZWtlZXBpbmcgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZHMgdGhlIGFiaWxpdHkgdG8gZmx1c2ggYWxsIGRhdGEgYmVmb3JlIHRoZSBwYWdlIHVubG9hZHMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgYXBwcm9hY2ggdHJpZXMgdG8gcHVzaCBhIHN5bmMgcmVxdWVzdCB3aXRoIGFsbCB0aGUgcGVuZGluZyBldmVudHMgb25iZWZvcmV1bmxvYWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcmVmb3ggZG9lcyBub3QgcmVzcGVjdCB0aGlzLk90aGVyIGJyb3dzZXJzIERPIHB1c2ggb3V0IHRoZSBjYWxsIHdpdGggPCAxMDAlIGhpdCByYXRlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZWxlbWV0cnkgaGVyZSB3aWxsIGhlbHAgdXMgYW5hbHl6ZSBob3cgZWZmZWN0aXZlIHRoaXMgYXBwcm9hY2ggaXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFub3RoZXIgYXBwcm9hY2ggd291bGQgYmUgdG8gbWFrZSB0aGlzIGNhbGwgc3luYyB3aXRoIGEgYWNjZXB0YWJsZSB0aW1lb3V0IHRvIHJlZHVjZSB0aGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wYWN0IG9uIHVzZXIgZXhwZXJpZW5jZS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXBwSW5zaWdodHNJbnN0YW5jZS5jb250ZXh0Ll9zZW5kZXIudHJpZ2dlclNlbmQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwSW5zaWdodHNJbnN0YW5jZVtfRFlOX09OVU5MT0FEX0ZMVVNIIC8qIEBtaW46JTJlb251bmxvYWRGbHVzaCAqL10oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBCYWNrIHVwIHRoZSBjdXJyZW50IHNlc3Npb24gdG8gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGxldHMgdXMgY2xvc2UgZXhwaXJlZCBzZXNzaW9ucyBhZnRlciB0aGUgY29va2llcyB0aGVtc2VsdmVzIGV4cGlyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihfdGhpcy5jb3JlW1NUUl9HRVRfUExVR0lOIC8qIEBtaW46JTJlZ2V0UGx1Z2luICovXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb2FkZWRQbHVnaW4gPSBfdGhpcy5jb3JlW1NUUl9HRVRfUExVR0lOIC8qIEBtaW46JTJlZ2V0UGx1Z2luICovXShQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9hZGVkUGx1Z2luKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BlcnRpZXNQbHVnaW4gPSBsb2FkZWRQbHVnaW4ucGx1Z2luO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzUGx1Z2luICYmIHByb3BlcnRpZXNQbHVnaW5bX0RZTl9DT05URVhUIC8qIEBtaW46JTJlY29udGV4dCAqL10gJiYgcHJvcGVydGllc1BsdWdpbltfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXS5fc2Vzc2lvbk1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1BsdWdpbltfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXS5fc2Vzc2lvbk1hbmFnZXIuYmFja3VwKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYWRkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXhjbHVkZVBhZ2VVbmxvYWRFdmVudHMgPSBhcHBJbnNpZ2h0c0luc3RhbmNlLmFwcEluc2lnaHRzW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXS5kaXNhYmxlUGFnZVVubG9hZEV2ZW50cztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIV9ob3VzZUtlZXBpbmdOYW1lc3BhY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2hvdXNlS2VlcGluZ05hbWVzcGFjZSA9IG1lcmdlRXZ0TmFtZXNwYWNlKF9ldnROYW1lc3BhY2UsIF9jb3JlW1NUUl9FVlRfTkFNRVNQQUNFIC8qIEBtaW46JTJlZXZ0TmFtZXNwYWNlICovXSAmJiBfY29yZVtTVFJfRVZUX05BTUVTUEFDRSAvKiBAbWluOiUyZWV2dE5hbWVzcGFjZSAqL10oKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYXBwSW5zaWdodHNJbnN0YW5jZS5hcHBJbnNpZ2h0cy5jb25maWdbX0RZTl9ESVNBQkxFX0ZMVVNIX09OX0JFRjExIC8qIEBtaW46JTJlZGlzYWJsZUZsdXNoT25CZWZvcmVVbmxvYWQgKi9dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhvb2sgdGhlIHVubG9hZCBldmVudCBmb3IgdGhlIGRvY3VtZW50LCB3aW5kb3cgYW5kIGJvZHkgdG8gZW5zdXJlIHRoYXQgdGhlIGNsaWVudCBldmVudHMgYXJlIGZsdXNoZWQgdG8gdGhlIHNlcnZlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcyBqdXN0IGhvb2tpbmcgdGhlIHdpbmRvdyBkb2VzIG5vdCBhbHdheXMgZmlyZSAob24gY2hyb21lKSBmb3IgcGFnZSBuYXZpZ2F0aW9uJ3MuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRQYWdlVW5sb2FkRXZlbnRMaXN0ZW5lcihwZXJmb3JtSG91c2VrZWVwaW5nLCBleGNsdWRlUGFnZVVubG9hZEV2ZW50cywgX2hvdXNlS2VlcGluZ05hbWVzcGFjZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaG9vayB0aGUgcGFnZWhpZGUgYW5kIHZpc2liaWxpdHljaGFuZ2UgZXZlbnRzIGFzIG5vdCBhbGwgdmVyc2lvbnMgb2YgU2FmYXJpIHN1cHBvcnQgbG9hZC91bmxvYWQgZXZlbnRzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyKHBlcmZvcm1Ib3VzZWtlZXBpbmcsIGV4Y2x1ZGVQYWdlVW5sb2FkRXZlbnRzLCBfaG91c2VLZWVwaW5nTmFtZXNwYWNlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgcmVhY3ROYXRpdmUgYXBwIG1heSBub3QgaGF2ZSBhIHdpbmRvdyBhbmQgdGhlcmVmb3JlIHRoZSBiZWZvcmV1bmxvYWQvcGFnZWhpZGUgZXZlbnRzIC0tIHNvIGRvbid0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZyB0aGUgZmFpbHVyZSBpbiB0aGlzIGNhc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRlZCAmJiAhaXNSZWFjdE5hdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhyb3dJbnRlcm5hbChhcHBJbnNpZ2h0c0luc3RhbmNlW19EWU5fQVBQX0lOU0lHSFRTIC8qIEBtaW46JTJlYXBwSW5zaWdodHMgKi9dLmNvcmUubG9nZ2VyLCAxIC8qIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwgKi8sIDE5IC8qIF9lSW50ZXJuYWxNZXNzYWdlSWQuRmFpbGVkVG9BZGRIYW5kbGVyRm9yT25CZWZvcmVVbmxvYWQgKi8sIFwiQ291bGQgbm90IGFkZCBoYW5kbGVyIGZvciBiZWZvcmV1bmxvYWQgYW5kIHBhZ2VoaWRlXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWRkZWQgJiYgIWFwcEluc2lnaHRzSW5zdGFuY2UuYXBwSW5zaWdodHMuY29uZmlnW19EWU5fRElTQUJMRV9GTFVTSF9PTl9VTkwxMiAvKiBAbWluOiUyZWRpc2FibGVGbHVzaE9uVW5sb2FkICovXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgYWRkIHRoZSBub3JtYWwgc2V0IHRoZW4gYXR0ZW1wdCB0byBhZGQgdGhlIHBhZ2VoaWRlIGFuZCB2aXNpYmlsaXR5Y2hhbmdlIG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyKHBlcmZvcm1Ib3VzZWtlZXBpbmcsIGV4Y2x1ZGVQYWdlVW5sb2FkRXZlbnRzLCBfaG91c2VLZWVwaW5nTmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIF9zZWxmLmdldFNlbmRlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBfc2VuZGVyO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBfc2VsZi51bmxvYWQgPSBmdW5jdGlvbiAoaXNBc3luYywgdW5sb2FkQ29tcGxldGUsIGNiVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbX0RZTl9PTlVOTE9BRF9GTFVTSCAvKiBAbWluOiUyZW9udW5sb2FkRmx1c2ggKi9dKGlzQXN5bmMpO1xyXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXJzXHJcbiAgICAgICAgICAgICAgICBpZiAoX2hvdXNlS2VlcGluZ05hbWVzcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVBhZ2VVbmxvYWRFdmVudExpc3RlbmVyKG51bGwsIF9ob3VzZUtlZXBpbmdOYW1lc3BhY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVBhZ2VIaWRlRXZlbnRMaXN0ZW5lcihudWxsLCBfaG91c2VLZWVwaW5nTmFtZXNwYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF9jb3JlLnVubG9hZCAmJiBfY29yZS51bmxvYWQoaXNBc3luYywgdW5sb2FkQ29tcGxldGUsIGNiVGltZW91dCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHByb3h5RnVuY3Rpb25zKF9zZWxmLCBfc2VsZltfRFlOX0FQUF9JTlNJR0hUUyAvKiBAbWluOiUyZWFwcEluc2lnaHRzICovXSwgW1xyXG4gICAgICAgICAgICAgICAgU1RSX0dFVF9DT09LSUVfTUdSLFxyXG4gICAgICAgICAgICAgICAgU1RSX1RSQUNLX0VWRU5ULFxyXG4gICAgICAgICAgICAgICAgU1RSX1RSQUNLX1BBR0VfVklFVyxcclxuICAgICAgICAgICAgICAgIFwidHJhY2tQYWdlVmlld1BlcmZvcm1hbmNlXCIsXHJcbiAgICAgICAgICAgICAgICBTVFJfVFJBQ0tfRVhDRVBUSU9OLFxyXG4gICAgICAgICAgICAgICAgXCJfb25lcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgU1RSX1RSQUNLX1RSQUNFLFxyXG4gICAgICAgICAgICAgICAgU1RSX1RSQUNLX01FVFJJQyxcclxuICAgICAgICAgICAgICAgIFNUUl9TVEFSVF9UUkFDS19QQUdFLFxyXG4gICAgICAgICAgICAgICAgU1RSX1NUT1BfVFJBQ0tfUEFHRSxcclxuICAgICAgICAgICAgICAgIFNUUl9TVEFSVF9UUkFDS19FVkVOVCxcclxuICAgICAgICAgICAgICAgIFNUUl9TVE9QX1RSQUNLX0VWRU5UXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICBwcm94eUZ1bmN0aW9ucyhfc2VsZiwgX2dldEN1cnJlbnREZXBlbmRlbmNpZXMsIFtcclxuICAgICAgICAgICAgICAgIFNUUl9UUkFDS19ERVBFTkRFTkNZX0RBVEEsXHJcbiAgICAgICAgICAgICAgICBcImFkZERlcGVuZGVuY3lMaXN0ZW5lclwiLFxyXG4gICAgICAgICAgICAgICAgXCJhZGREZXBlbmRlbmN5SW5pdGlhbGl6ZXJcIlxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgcHJveHlGdW5jdGlvbnMoX3NlbGYsIF9jb3JlLCBbXHJcbiAgICAgICAgICAgICAgICBTVFJfQUREX1RFTEVNRVRSWV9JTklUSUFMSVpFUixcclxuICAgICAgICAgICAgICAgIFNUUl9QT0xMX0lOVEVSTkFMX0xPR1MsXHJcbiAgICAgICAgICAgICAgICBcInN0b3BQb2xsaW5nSW50ZXJuYWxMb2dzXCIsXHJcbiAgICAgICAgICAgICAgICBTVFJfR0VUX1BMVUdJTixcclxuICAgICAgICAgICAgICAgIFwiYWRkUGx1Z2luXCIsXHJcbiAgICAgICAgICAgICAgICBTVFJfRVZUX05BTUVTUEFDRSxcclxuICAgICAgICAgICAgICAgIFwiYWRkVW5sb2FkQ2JcIixcclxuICAgICAgICAgICAgICAgIFwiZ2V0VHJhY2VDdHhcIlxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgcHJveHlGdW5jdGlvbnMoX3NlbGYsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gcHJvcGVydGllc1tfRFlOX0NPTlRFWFQgLyogQG1pbjolMmVjb250ZXh0ICovXTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0ID8gY29udGV4dC51c2VyIDogbnVsbDtcclxuICAgICAgICAgICAgfSwgW1xyXG4gICAgICAgICAgICAgICAgU1RSX1NFVF9BVVRIRU5USUNBVEVEX1VTRVJfQ09OVEVYVCxcclxuICAgICAgICAgICAgICAgIFNUUl9DTEVBUl9BVVRIRU5USUNBVEVEX1VTRVJfQ09OVEVYVFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgZnVuY3Rpb24gX2dldFNLVURlZmF1bHRzKCkge1xyXG4gICAgICAgICAgICAgICAgX3NlbGYuY29uZmlnW19EWU5fRElBR05PU1RJQ19MT0dfSU5URVI0IC8qIEBtaW46JTJlZGlhZ25vc3RpY0xvZ0ludGVydmFsICovXSA9XHJcbiAgICAgICAgICAgICAgICAgICAgX3NlbGYuY29uZmlnW19EWU5fRElBR05PU1RJQ19MT0dfSU5URVI0IC8qIEBtaW46JTJlZGlhZ25vc3RpY0xvZ0ludGVydmFsICovXSAmJiBfc2VsZltfRFlOX0NPTkZJRyAvKiBAbWluOiUyZWNvbmZpZyAqL11bX0RZTl9ESUFHTk9TVElDX0xPR19JTlRFUjQgLyogQG1pbjolMmVkaWFnbm9zdGljTG9nSW50ZXJ2YWwgKi9dID4gMCA/IF9zZWxmW19EWU5fQ09ORklHIC8qIEBtaW46JTJlY29uZmlnICovXVtfRFlOX0RJQUdOT1NUSUNfTE9HX0lOVEVSNCAvKiBAbWluOiUyZWRpYWdub3N0aWNMb2dJbnRlcnZhbCAqL10gOiAxMDAwMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBVc2luZyBhIGZ1bmN0aW9uIHRvIHN1cHBvcnQgdGhlIGR5bmFtaWMgYWRkaW5nIC8gcmVtb3ZhbCBvZiBwbHVnaW5zLCBzbyB0aGlzIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgY3VycmVudCB2YWx1ZVxyXG4gICAgICAgICAgICBmdW5jdGlvbiBfZ2V0Q3VycmVudERlcGVuZGVuY2llcygpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkZXBlbmRlbmNpZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gX2luaXREZWZhdWx0cygpIHtcclxuICAgICAgICAgICAgICAgIF9ldnROYW1lc3BhY2UgPSBjcmVhdGVVbmlxdWVOYW1lc3BhY2UoXCJBSVNLVVwiKTtcclxuICAgICAgICAgICAgICAgIF9ob3VzZUtlZXBpbmdOYW1lc3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3NlbmRlciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBfc25pcHBldFZlcnNpb24gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBBbmFseXRpY3MgUGx1Z2luXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmdldENvb2tpZU1nci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUudHJhY2tFdmVudC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUudHJhY2tQYWdlVmlldy5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUudHJhY2tQYWdlVmlld1BlcmZvcm1hbmNlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS50cmFja0V4Y2VwdGlvbi5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuX29uZXJyb3IuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLnRyYWNrVHJhY2UuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLnRyYWNrTWV0cmljLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5zdGFydFRyYWNrUGFnZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuc3RvcFRyYWNrUGFnZS5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuc3RhcnRUcmFja0V2ZW50LlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5zdG9wVHJhY2tFdmVudC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuYWRkVGVsZW1ldHJ5SW5pdGlhbGl6ZXIuXHJcbiAgICAvLyBQcm9wZXJ0aWVzIFBsdWdpblxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5zZXRBdXRoZW50aWNhdGVkVXNlckNvbnRleHQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmNsZWFyQXV0aGVudGljYXRlZFVzZXJDb250ZXh0LlxyXG4gICAgLy8gRGVwZW5kZW5jaWVzIFBsdWdpblxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS50cmFja0RlcGVuZGVuY3lEYXRhLlxyXG4gICAgLy8gTWlzY1xyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5mbHVzaC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUub251bmxvYWRGbHVzaC5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUubG9hZEFwcEluc2lnaHRzLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS51cGRhdGVTbmlwcGV0RGVmaW5pdGlvbnMuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmVtcHR5UXVldWUuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLnBvbGxJbnRlcm5hbExvZ3MuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLnN0b3BQb2xsaW5nSW50ZXJuYWxMb2dzLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5hZGRIb3VzZWtlZXBpbmdCZWZvcmVVbmxvYWQuXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmdldFNlbmRlci5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUudW5sb2FkLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5nZXRQbHVnaW4uXHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmFkZFBsdWdpbi5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuZXZ0TmFtZXNwYWNlLlxyXG4vLyBSZW1vdmVkIFN0dWIgZm9yIEluaXRpYWxpemF0aW9uLnByb3RvdHlwZS5hZGRVbmxvYWRDYi5cclxuLy8gUmVtb3ZlZCBTdHViIGZvciBJbml0aWFsaXphdGlvbi5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeUxpc3RlbmVyLlxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgYW4gZGVwZW5kZW5jeSB0ZWxlbWV0cnkgaW5pdGlhbGl6ZXIgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWxsb3cgcG9wdWxhdGluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgb3IgZHJvcCB0aGUgcmVxdWVzdC5cclxuICAgICAqIEl0IGlzIGNhbGxlZCBhZnRlciB0aGUgZGVwZW5kZW5jeSBjYWxsIGhhcyBjb21wbGV0ZWQgYW5kIGFueSBhdmFpbGFibGUgcGVyZm9ybWFuY2UgZGV0YWlscyBhcmUgYXZhaWxhYmxlLiBBIGRlcGVuZGVuY3lcclxuICAgICAqIGluaXRpYWxpemVyIGlzIHNpbWlsYXIgdG8gdGhlIFRlbGVtZXRyeUluaXRpYWxpemVyIGZ1bmN0aW9uIGJ1dCBpdCBhbGxvd3MgeW91IHRvIGJsb2NrIHRoZSByZXBvcnRpbmcgb2YgdGhlIGRlcGVuZGVuY3lcclxuICAgICAqIHJlcXVlc3Qgc28gdGhhdCBpdCBkb2Vzbid0IGNvdW50IGFnYWluc3QgdGhlIGBtYXhBamF4Q2FsbHNQZXJWaWV3YC5cclxuICAgICAqIEBwYXJhbSBkZXBlbmRlbmN5SW5pdGlhbGl6ZXIgLSBUaGUgRGVwZW5kZW5jeSBUZWxlbWV0cnkgSW5pdGlhbGl6ZXIgZnVuY3Rpb25cclxuICAgICAqIEByZXR1cm5zIC0gQSBJRGVwZW5kZW5jeUluaXRpYWxpemVySGFuZGxlciB0byBlbmFibGUgdGhlIGluaXRpYWxpemVyIHRvIGJlIHJlbW92ZWRcclxuICAgICAqL1xyXG4gICAgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmFkZERlcGVuZGVuY3lJbml0aWFsaXplciA9IGZ1bmN0aW9uIChkZXBlbmRlbmN5SW5pdGlhbGl6ZXIpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbi8vIFJlbW92ZWQgU3R1YiBmb3IgSW5pdGlhbGl6YXRpb24ucHJvdG90eXBlLmdldFRyYWNlQ3R4LlxyXG4gICAgcmV0dXJuIEluaXRpYWxpemF0aW9uO1xyXG59KCkpO1xyXG5leHBvcnQgeyBJbml0aWFsaXphdGlvbiB9O1xyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcclxuKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBzZGtTcmMgPSBudWxsO1xyXG4gICAgdmFyIGlzTW9kdWxlID0gZmFsc2U7XHJcbiAgICB2YXIgY2RucyA9IFtcclxuICAgICAgICBcIjovL2pzLm1vbml0b3IuYXp1cmUuY29tL1wiLFxyXG4gICAgICAgIFwiOi8vYXo0MTY0MjYudm8ubXNlY25kLm5ldC9cIlxyXG4gICAgXTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8gVHJ5IGFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2RrIGlzIGJlaW5nIGxvYWRlZCBmcm9tIHRoZSBDRE5cclxuICAgICAgICAvLyBjdXJyZW50U2NyaXB0IGlzIG9ubHkgdmFsaWQgZHVyaW5nIGluaXRpYWwgcHJvY2Vzc2luZ1xyXG4gICAgICAgIHZhciBzY3JwdCA9IChkb2N1bWVudCB8fCB7fSkuY3VycmVudFNjcmlwdDtcclxuICAgICAgICBpZiAoc2NycHQpIHtcclxuICAgICAgICAgICAgc2RrU3JjID0gc2NycHQuc3JjO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdG8gYXQgbGVhc3QgdHlwZXNjcmlwdCAyLjkgZm9yIHRoaXMgdG8gd29yayA6LShcclxuICAgICAgICAgICAgLy8gICAgIC8vIExlYXZpbmcgYXMgYSBzdHViIGZvciBub3cgc28gYWZ0ZXIgd2UgdXBncmFkZSB0aGlzIGJyZWFkY3J1bWIgaXMgYXZhaWxhYmxlXHJcbiAgICAgICAgICAgIC8vICAgICBsZXQgbWV0YSA9IGltcG9ydC5tZXRhO1xyXG4gICAgICAgICAgICAvLyAgICAgc2RrU3JjID0gKG1ldGEgfHwge30pLnVybDtcclxuICAgICAgICAgICAgLy8gICAgIGlzTW9kdWxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgfVxyXG4gICAgaWYgKHNka1NyYykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciB1cmwgPSBzZGtTcmMudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNyYyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBjZG5zLmxlbmd0aDsgaWR4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsW19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShjZG5zW2lkeF0pICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmMgPSBcImNkblwiICsgKGlkeCArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsW19EWU5fSU5ERVhfT0YgLyogQG1pbjolMmVpbmRleE9mICovXShcIi9zY3JpcHRzL1wiKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmxbX0RZTl9JTkRFWF9PRiAvKiBAbWluOiUyZWluZGV4T2YgKi9dKFwiL25leHQvXCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyArPSBcIi1uZXh0XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh1cmxbX0RZTl9JTkRFWF9PRiAvKiBAbWluOiUyZWluZGV4T2YgKi9dKFwiL2JldGEvXCIpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyArPSBcIi1iZXRhXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVybmFsU2RrU3JjID0gc3JjICsgKGlzTW9kdWxlID8gXCIubW9kXCIgOiBcIlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSkoKTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SW5pdGlhbGl6YXRpb24uanMubWFwIiwiaW1wb3J0IHsgUmVkdWNlciB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBEZWZhdWx0Um9vdFN0YXRlIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XHJcbmltcG9ydCBwcm9kdWNlLCB7IERyYWZ0IH0gZnJvbSBcImltbWVyXCI7XHJcbmltcG9ydCB7IE1vY2tBdXRoZW50aWNhdGVkVXNlciB9IGZyb20gXCIuL01vY2tEYXRhL01vY2tBdXRoZW50aWNhdGVkVXNlclwiO1xyXG5pbXBvcnQgeyBQQUdFUyB9IGZyb20gXCIuL0hvb2tzL3VzZVBhZ2VOYXZpZ2F0aW9uXCI7XHJcbmltcG9ydCB7IGdldFVzZXJNZXRhZGF0YSB9IGZyb20gXCIuL0hvb2tzL3VzZVVzZXJNZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBuZXdHdWlkIH0gZnJvbSBcIi4vSGVscGVycy9uZXdHdWlkXCI7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5zaWdodHMgfSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXdlYlwiO1xyXG5cclxuLy8gVGhpcyB2YWx1ZSBpcyBzZXQgdmlhIHRoZSAnU2luZ2xlIFBhZ2UgQXBwbGljYXRpb24nIFdlYiBUZW1wbGF0ZVxyXG5kZWNsYXJlIGNvbnN0IEFQUF9JTlNJR0hUU19JTlNUUlVNRU5UQVRJT05fS0VZOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4vKiogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIFNQQSBpcyBiZWluZyBydW4gb24gYSBsb2NhbGhvc3QgKi9cclxuY29uc3QgaXNMb2NhbE1vZGUgPSB3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKFwibG9jYWxob3N0XCIpIHx8IHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoXCIxMjcuXCIpO1xyXG5cclxuLyoqIERlc2NyaXB0aW9uIG9mIGFsbCB0aGUgQWN0aW9ucyB0YWtlbiB0aGF0IGNhbiBhZmZlY3QgdGhlIHN0YXRlICovXHJcbmV4cG9ydCB0eXBlIEFjdGlvbiA9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0QWN0aXZlSW5jaWRlbnRzXCI7XHJcbiAgICAgICAgICBhY3RpdmVJbmNpZGVudHM6IERlZmF1bHRSb290U3RhdGVbXCJpbmNpZGVudHNcIl1bXCJhY3RpdmVJbmNpZGVudHNcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRDbG9zZWRJbmNpZGVudHNcIjtcclxuICAgICAgICAgIGNsb3NlZEluY2lkZW50czogRGVmYXVsdFJvb3RTdGF0ZVtcImluY2lkZW50c1wiXVtcImNsb3NlZEluY2lkZW50c1wiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldE1ham9ySW5jaWRlbnRzXCI7XHJcbiAgICAgICAgICBhY3RpdmVNYWpvckluY2lkZW50czogRGVmYXVsdFJvb3RTdGF0ZVtcImluY2lkZW50c1wiXVtcImFjdGl2ZU1ham9ySW5jaWRlbnRzXCJdO1xyXG4gICAgICAgICAgcmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzOiBEZWZhdWx0Um9vdFN0YXRlW1wiaW5jaWRlbnRzXCJdW1wicmVjZW50bHlSZXNvbHZlZE1ham9ySW5jaWRlbnRzXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0Q29udGFjdHNcIjtcclxuICAgICAgICAgIGNvbnRhY3RzOiBEZWZhdWx0Um9vdFN0YXRlW1wiY29udGFjdHNcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRBY2NvdW50c1wiO1xyXG4gICAgICAgICAgYWNjb3VudHM6IERlZmF1bHRSb290U3RhdGVbXCJhY2NvdW50c1wiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldFByb2R1Y3RzXCI7XHJcbiAgICAgICAgICBwcm9kdWN0czogRGVmYXVsdFJvb3RTdGF0ZVtcInByb2R1Y3RzXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0T3JkZXJzXCI7XHJcbiAgICAgICAgICBvcmRlcnM6IERlZmF1bHRSb290U3RhdGVbXCJvcmRlcnNcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRJbnZvaWNlc1wiO1xyXG4gICAgICAgICAgaW52b2ljZXM6IERlZmF1bHRSb290U3RhdGVbXCJpbnZvaWNlc1wiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldE5ldHdvcmtPcmRlcnNcIjtcclxuICAgICAgICAgIG5ldHdvcmtPcmRlcnM6IERlZmF1bHRSb290U3RhdGVbXCJuZXR3b3JrT3JkZXJzXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0UHJvamVjdHNcIjtcclxuICAgICAgICAgIHByb2plY3RzOiBEZWZhdWx0Um9vdFN0YXRlW1wicHJvamVjdHNcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRDdXN0b21lckFzc2V0c1wiO1xyXG4gICAgICAgICAgY3VzdG9tZXJBc3NldHM6IERlZmF1bHRSb290U3RhdGVbXCJjdXN0b21lckFzc2V0c1wiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldEJsb2dQb3N0c1wiO1xyXG4gICAgICAgICAgYmxvZ1Bvc3RzOiBEZWZhdWx0Um9vdFN0YXRlW1wiYmxvZ1Bvc3RzXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0Q3VycmVudFBhZ2VcIjtcclxuICAgICAgICAgIGN1cnJlbnRQYWdlOiBEZWZhdWx0Um9vdFN0YXRlW1wiY3VycmVudFBhZ2VcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRJc0RpcnR5XCI7XHJcbiAgICAgICAgICBpc0RpcnR5OiBEZWZhdWx0Um9vdFN0YXRlW1wiaXNEaXJ0eVwiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldFNhdmVEaXJ0eVBhZ2VcIjtcclxuICAgICAgICAgIHNhdmVEaXJ0eVBhZ2U6IERlZmF1bHRSb290U3RhdGVbXCJzYXZlRGlydHlQYWdlXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiU2V0VGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGVcIjtcclxuICAgICAgICAgIHRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlOiBEZWZhdWx0Um9vdFN0YXRlW1widGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGVcIl07XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJTZXRGZWVkYmFja1BhbmVJc1Nob3duXCI7XHJcbiAgICAgICAgICBmZWVkYmFja1BhbmVJc1Nob3duOiBEZWZhdWx0Um9vdFN0YXRlW1wiZmVlZGJhY2tQYW5lSXNTaG93blwiXTtcclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgICB0eXBlOiBcIlNldFBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzXCI7XHJcbiAgICAgICAgICBwb3J0YWxNYWpvckluY2lkZW50VXBkYXRlczogRGVmYXVsdFJvb3RTdGF0ZVtcInBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiQWRkTGF0ZXN0RXJyb3JcIjtcclxuICAgICAgICAgIGVycm9yOiBEZWZhdWx0Um9vdFN0YXRlW1wibGF0ZXN0RXJyb3JzXCJdWzBdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiQWRkTm90aWZpY2F0aW9uXCI7XHJcbiAgICAgICAgICBub3RpZmljYXRpb246IE9taXQ8RGVmYXVsdFJvb3RTdGF0ZVtcIm5vdGlmaWNhdGlvbnNcIl1bMF0sIFwiaWRcIj47XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgICAgdHlwZTogXCJSZW1vdmVOb3RpZmljYXRpb25cIjtcclxuICAgICAgICAgIGlkOiBEZWZhdWx0Um9vdFN0YXRlW1wibm90aWZpY2F0aW9uc1wiXVswXVtcImlkXCJdO1xyXG4gICAgICB9XHJcbiAgICB8IHtcclxuICAgICAgICAgIHR5cGU6IFwiQ2xlYXJMYXRlc3RFcnJvcnNcIjtcclxuICAgICAgfTtcclxuXHJcbmNvbnN0IHVzZXJNZXRhZGF0YSA9IGdldEluaXRpYWxVc2VyTWV0YWRhdGEoKTtcclxuXHJcbmNvbnN0IHVzZXJJZCA9IGlzTG9jYWxNb2RlID8gTW9ja0F1dGhlbnRpY2F0ZWRVc2VyLmNvbnRhY3RpZCA6IHVzZXJNZXRhZGF0YS5jb250YWN0SWQ7XHJcblxyXG4vKiogR2V0cyB0aGUgaW5pdGlhbCBtZXRhZGF0YSBvZiB0aGUgbG9nZ2VkLWluIHVzZXIsIGR5bmFtaWNhbGx5IGNob29zaW5nIGJldHdlZW4gbW9jayBhbmQgXCJsaXZlXCIgZGF0YSAqL1xyXG5mdW5jdGlvbiBnZXRJbml0aWFsVXNlck1ldGFkYXRhKCkge1xyXG4gICAgaWYgKGlzTG9jYWxNb2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZ2V0VXNlck1ldGFkYXRhKCksXHJcbiAgICAgICAgICAgIHRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlOiBNb2NrQXV0aGVudGljYXRlZFVzZXIubXNkeW5fcG9ydGFsdGVybXNhZ3JlZW1lbnRkYXRlXHJcbiAgICAgICAgICAgICAgICA/IG5ldyBEYXRlKE1vY2tBdXRoZW50aWNhdGVkVXNlci5tc2R5bl9wb3J0YWx0ZXJtc2FncmVlbWVudGRhdGUpXHJcbiAgICAgICAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGdldFVzZXJNZXRhZGF0YSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBJZiB0aGUgdXNlciBpcyBub3QgbG9nZ2VkIGluXHJcbmlmICghdXNlcklkKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VXJsUGF0aCA9IGVuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xyXG4gICAgY29uc3QgY3VycmVudFVybFF1ZXJ5ID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgLy8gUmVkaXJlY3QgdXNlciB0byBTaWduIEluIHBhZ2VcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7UEFHRVMuU2lnbkluLnBhdGh9P1JldHVyblVybD0ke2N1cnJlbnRVcmxQYXRofSR7Y3VycmVudFVybFF1ZXJ5fWA7XHJcbn1cclxuXHJcbi8qKiBJbml0aWFsIGFwcGxpY2F0aW9uIHN0YXRlLiAqL1xyXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlOiBEZWZhdWx0Um9vdFN0YXRlID0ge1xyXG4gICAgLyoqIEluZGljYXRpb24gb2YgdGhlIGN1cnJlbnQgcnVuIG1vZGUgKi9cclxuICAgIGlzTG9jYWxNb2RlOiBpc0xvY2FsTW9kZSxcclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgcGFnZSBoYXMgdW5zYXZlZCBjaGFuZ2VzICovXHJcbiAgICBpc0RpcnR5OiBmYWxzZSxcclxuXHJcbiAgICAvKiogRGVmaW5lIGEgZnVuY3Rpb24gdG8gc2F2ZSBhIGRpcnR5IHBhZ2UuICovXHJcbiAgICBzYXZlRGlydHlQYWdlOiB1bmRlZmluZWQsXHJcblxyXG4gICAgLyoqIFRoZSBJZCBvZiB0aGUgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWQgdXNlciAqL1xyXG4gICAgdXNlcklkLFxyXG5cclxuICAgIC8qKiBDYXNlcyAqL1xyXG4gICAgaW5jaWRlbnRzOiB7XHJcbiAgICAgICAgYWN0aXZlSW5jaWRlbnRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9LFxyXG4gICAgICAgIGNsb3NlZEluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSxcclxuICAgICAgICBhY3RpdmVNYWpvckluY2lkZW50czogeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSxcclxuICAgICAgICByZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHM6IHsgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiIH0sXHJcbiAgICB9LFxyXG5cclxuICAgIC8qKiBBY2NvdW50cyAqL1xyXG4gICAgYWNjb3VudHM6IHsgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiIH0sXHJcblxyXG4gICAgLyoqIENvbnRhY3RzICovXHJcbiAgICBjb250YWN0czogeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSxcclxuXHJcbiAgICAvKiogUHJvZHVjdHMgKi9cclxuICAgIHByb2R1Y3RzOiB7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9LFxyXG5cclxuICAgIC8qKiBPcmRlcnMgKi9cclxuICAgIG9yZGVyczogeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSxcclxuXHJcbiAgICAvKiogSW52b2ljZXMgKi9cclxuICAgIGludm9pY2VzOiB7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9LFxyXG5cclxuICAgIC8qKiBOZXR3b3JrIE9yZGVycyAqL1xyXG4gICAgbmV0d29ya09yZGVyczogeyBsb2FkaW5nU3RhdHVzOiBcIm5vdC1zdGFydGVkXCIgfSxcclxuXHJcbiAgICAvKiogUHJvamVjdHMgKi9cclxuICAgIHByb2plY3RzOiB7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9LFxyXG5cclxuICAgIC8qKiBDdXN0b21lciBBc3NldHMgKi9cclxuICAgIGN1c3RvbWVyQXNzZXRzOiB7IGxvYWRpbmdTdGF0dXM6IFwibm90LXN0YXJ0ZWRcIiB9LFxyXG5cclxuICAgIC8qKiBCbG9nIFBvc3RzICovXHJcbiAgICBibG9nUG9zdHM6IHsgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiIH0sXHJcblxyXG4gICAgLyoqIFBvcnRhbCBtYWpvciBJbmNpZGVudCBVcGRhdGUgZGF0YSAqL1xyXG4gICAgcG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXM6IHsgbG9hZGluZ1N0YXR1czogXCJub3Qtc3RhcnRlZFwiIH0sXHJcblxyXG4gICAgLyoqIEluZGljYXRpb24gb2YgdGhlIHZpc2liaWxpdHkgb2YgdGhlIEZlZWRiYWNrIFBhbmUgKi9cclxuICAgIGZlZWRiYWNrUGFuZUlzU2hvd246IGZhbHNlLFxyXG5cclxuICAgIC8qKiBMYXRlc3QgZXJyb3JzIHRoYXQgaGF2ZSBvY2N1cnJlZCAqL1xyXG4gICAgbGF0ZXN0RXJyb3JzOiBbXSxcclxuXHJcbiAgICAvKiogTm90aWZpY2F0aW9ucyB0byBkaXNwbGF5ICovXHJcbiAgICBub3RpZmljYXRpb25zOiBbXSxcclxuXHJcbiAgICAvKiogVGVybXMgYW5kIENvbmRpdGlvbnMgYWNjZXB0YW5jZSBzdGF0dXMgKi9cclxuICAgIHRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlOiB1c2VyTWV0YWRhdGEudGVybXNBbmRDb25kaXRpb25zQWNjZXB0YW5jZURhdGUsXHJcblxyXG4gICAgLyoqIEN1cnJlbnQgcGFnZSAqL1xyXG4gICAgY3VycmVudFBhZ2U6IE9iamVjdC52YWx1ZXMoUEFHRVMpLmZpbmQoKHBhZ2UpID0+IHBhZ2UucGF0aCA9PT0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lKSB8fCBQQUdFUy5Ib21lLFxyXG5cclxuICAgIC8qKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyAqL1xyXG4gICAgYXBwSW5zaWdodHM6ICgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGlzTG9jYWxNb2RlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFBUFBfSU5TSUdIVFNfSU5TVFJVTUVOVEFUSU9OX0tFWSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJBcHAgSW5zaWdodHMgSW5zdHJ1bWVudGF0aW9uIEtleSB3YXMgbm90IGZvdW5kXCIpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhcHBJbnNpZ2h0cyA9IG5ldyBBcHBsaWNhdGlvbkluc2lnaHRzKHtcclxuICAgICAgICAgICAgY29uZmlnOiB7IGluc3RydW1lbnRhdGlvbktleTogQVBQX0lOU0lHSFRTX0lOU1RSVU1FTlRBVElPTl9LRVkgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYXBwSW5zaWdodHMubG9hZEFwcEluc2lnaHRzKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBhcHBJbnNpZ2h0cztcclxuICAgIH0pKCksXHJcbn07XHJcblxyXG4vKipcclxuICogVXBkYXRlcyB0aGUgQXBwIHN0YXRlIGZyb20gYWN0aW9ucy5cclxuICogQHBhcmFtIGN1cnJlbnRTdGF0ZSBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgQXBwXHJcbiAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB0byB1cGRhdGUgdGhlIHN0YXRlXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgcm9vdFJlZHVjZXI6IFJlZHVjZXI8RGVmYXVsdFJvb3RTdGF0ZSwgQWN0aW9uPiA9IChjdXJyZW50U3RhdGUsIGFjdGlvbik6IERlZmF1bHRSb290U3RhdGUgPT5cclxuICAgIHByb2R1Y2U8RGVmYXVsdFJvb3RTdGF0ZSwgRHJhZnQ8RGVmYXVsdFJvb3RTdGF0ZT4+KGN1cnJlbnRTdGF0ZSwgKGRyYWZ0U3RhdGUpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3Igc2V0dGluZyB0aGUgYWN0aXZlIEluY2lkZW50IGRhdGEgKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldEFjdGl2ZUluY2lkZW50c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmluY2lkZW50cyA9IHsgLi4uZHJhZnRTdGF0ZS5pbmNpZGVudHMsIGFjdGl2ZUluY2lkZW50czogYWN0aW9uLmFjdGl2ZUluY2lkZW50cyB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgdGhlIGFjdGl2ZSBJbmNpZGVudCBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRDbG9zZWRJbmNpZGVudHNcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5pbmNpZGVudHMgPSB7IC4uLmRyYWZ0U3RhdGUuaW5jaWRlbnRzLCBjbG9zZWRJbmNpZGVudHM6IGFjdGlvbi5jbG9zZWRJbmNpZGVudHMgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBzZXR0aW5nIHRoZSBNYWpvciBJbmNpZGVudCBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRNYWpvckluY2lkZW50c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmluY2lkZW50cyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5kcmFmdFN0YXRlLmluY2lkZW50cyxcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVNYWpvckluY2lkZW50czogYWN0aW9uLmFjdGl2ZU1ham9ySW5jaWRlbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50czogYWN0aW9uLnJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cyxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3Igc2V0dGluZyB0aGUgQWNjb3VudCBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRBY2NvdW50c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmFjY291bnRzID0gYWN0aW9uLmFjY291bnRzO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgdGhlIENvbnRhY3QgZGF0YSAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiU2V0Q29udGFjdHNcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5jb250YWN0cyA9IGFjdGlvbi5jb250YWN0cztcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBzZXR0aW5nIHRoZSBQcm9kdWN0cyBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRQcm9kdWN0c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLnByb2R1Y3RzID0gYWN0aW9uLnByb2R1Y3RzO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgdGhlIE9yZGVycyBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRPcmRlcnNcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5vcmRlcnMgPSBhY3Rpb24ub3JkZXJzO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgdGhlIE5ldHdvcmsgT3JkZXJzIGRhdGEgKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldE5ldHdvcmtPcmRlcnNcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5uZXR3b3JrT3JkZXJzID0gYWN0aW9uLm5ldHdvcmtPcmRlcnM7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBzZXR0aW5nIHRoZSBQcm9qZWN0cyBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRQcm9qZWN0c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLnByb2plY3RzID0gYWN0aW9uLnByb2plY3RzO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3Igc2V0dGluZyB0aGUgQ3VzdG9tZXIgQXNzZXRzIGRhdGEgKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldEN1c3RvbWVyQXNzZXRzXCI6IHtcclxuICAgICAgICAgICAgICAgIGRyYWZ0U3RhdGUuY3VzdG9tZXJBc3NldHMgPSBhY3Rpb24uY3VzdG9tZXJBc3NldHM7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBzZXR0aW5nIHRoZSBJbnZvaWNlcyBkYXRhICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRJbnZvaWNlc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmludm9pY2VzID0gYWN0aW9uLmludm9pY2VzO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKiBBY3Rpb24gZm9yIFNldHRpbmcgQmxvZyBQb3N0cy4gKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldEJsb2dQb3N0c1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmJsb2dQb3N0cyA9IGFjdGlvbi5ibG9nUG9zdHM7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKiBBY3Rpb24gZm9yIHNldHRpbmcgUG9ydGFsIE1ham9yIEluY2lkZW50IFVwZGF0ZXMuICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlc1wiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLnBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzID0gYWN0aW9uLnBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVzO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgd2hldGhlciB0aGUgVGVybXMgYW5kIENvbmRpdGlvbnMgaGF2ZSBiZWVuIGFjY2VwdGVkICovXHJcbiAgICAgICAgICAgIGNhc2UgXCJTZXRUZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZVwiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLnRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlID0gYWN0aW9uLnRlcm1zQW5kQ29uZGl0aW9uc0FjY2VwdGFuY2VEYXRlO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIHNldHRpbmcgd2hldGhlciB0aGUgRmVlZGJhY2sgUGFuZSBpcyBzaG93biAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiU2V0RmVlZGJhY2tQYW5lSXNTaG93blwiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLmZlZWRiYWNrUGFuZUlzU2hvd24gPSBhY3Rpb24uZmVlZGJhY2tQYW5lSXNTaG93bjtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBzZXR0aW5nIHRoZSBjdXJyZW50IHBhZ2UgKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldEN1cnJlbnRQYWdlXCI6IHtcclxuICAgICAgICAgICAgICAgIGRyYWZ0U3RhdGUuY3VycmVudFBhZ2UgPSBhY3Rpb24uY3VycmVudFBhZ2U7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3Igc2V0dGluZyB0aGUgZGlydHkgc3RhdGUgb2YgdGhlIHBhZ2UgKi9cclxuICAgICAgICAgICAgY2FzZSBcIlNldElzRGlydHlcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5pc0RpcnR5ID0gYWN0aW9uLmlzRGlydHk7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3Igc2V0dGluZyB0aGUgZnVuY3Rpb24gdGhhdCBzYXZlcyB0aGUgY29uZW50IG9mIGEgZ2l2ZW4gXCJlZGl0XCIgcGFnZSAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiU2V0U2F2ZURpcnR5UGFnZVwiOiB7XHJcbiAgICAgICAgICAgICAgICBkcmFmdFN0YXRlLnNhdmVEaXJ0eVBhZ2UgPSBhY3Rpb24uc2F2ZURpcnR5UGFnZTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciBhZGRpbmcgYW4gZXJyb3IgKi9cclxuICAgICAgICAgICAgY2FzZSBcIkFkZExhdGVzdEVycm9yXCI6IHtcclxuICAgICAgICAgICAgICAgIGRyYWZ0U3RhdGUubGF0ZXN0RXJyb3JzID0gWy4uLmRyYWZ0U3RhdGUubGF0ZXN0RXJyb3JzLCBhY3Rpb24uZXJyb3JdO1xyXG5cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBBY3Rpb24gZm9yIGFkZGluZyBhIG5vdGlmaWNhdGlvbiAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiQWRkTm90aWZpY2F0aW9uXCI6IHtcclxuICAgICAgICAgICAgICAgIGRyYWZ0U3RhdGUubm90aWZpY2F0aW9ucyA9IFsuLi5kcmFmdFN0YXRlLm5vdGlmaWNhdGlvbnMsIHsgLi4uYWN0aW9uLm5vdGlmaWNhdGlvbiwgaWQ6IG5ld0d1aWQoKSB9XTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogQWN0aW9uIGZvciByZW1vdmluZyBhIG5vdGlmaWNhdGlvbiAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiUmVtb3ZlTm90aWZpY2F0aW9uXCI6IHtcclxuICAgICAgICAgICAgICAgIGRyYWZ0U3RhdGUubm90aWZpY2F0aW9ucyA9IGRyYWZ0U3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKG5vdGlmaWNhdGlvbikgPT4gbm90aWZpY2F0aW9uLmlkICE9PSBhY3Rpb24uaWRcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qIEFjdGlvbiBmb3IgY2xlYXJpbmcgYWxsIGVycm9ycyAqL1xyXG4gICAgICAgICAgICBjYXNlIFwiQ2xlYXJMYXRlc3RFcnJvcnNcIjoge1xyXG4gICAgICAgICAgICAgICAgZHJhZnRTdGF0ZS5sYXRlc3RFcnJvcnMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBiZWhhdmlvdXIgZm9yIHRoZSBhY3Rpb24gdHlwZSAnJHthY3Rpb259JyBoYXMgYmVlbiBkZWZpbmVkIGluIHRoZSByZWR1Y2VyYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcclxuaW1wb3J0IHsgQnJvd3NlclJvdXRlciB9IGZyb20gXCJyZWFjdC1yb3V0ZXItZG9tXCI7XHJcbmltcG9ydCBcIi4vaW5kZXguc2Nzc1wiO1xyXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9BcHBcIjtcclxuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwicmVkdXhcIjtcclxuaW1wb3J0IHsgQWN0aW9uLCBpbml0aWFsU3RhdGUsIHJvb3RSZWR1Y2VyIH0gZnJvbSBcIi4vUmVkdWNlcnNcIjtcclxuaW1wb3J0IHsgRGVmYXVsdFJvb3RTdGF0ZSwgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcclxuaW1wb3J0IHsgaW5pdGlhbGl6ZUljb25zIH0gZnJvbSBcIkBmbHVlbnR1aS9yZWFjdFwiO1xyXG5cclxuY29uc3Qgcm9vdCA9IFJlYWN0RE9NLmNyZWF0ZVJvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyb290XCIpIGFzIEhUTUxFbGVtZW50KTtcclxuaW5pdGlhbGl6ZUljb25zKCk7XHJcblxyXG5jb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKChwcmV2U3RhdGUsIGFjdGlvbjogQWN0aW9uKSA9PiB7XHJcbiAgICBpZiAocHJldlN0YXRlKSB7XHJcbiAgICAgICAgcmV0dXJuIHJvb3RSZWR1Y2VyKHByZXZTdGF0ZSBhcyBEZWZhdWx0Um9vdFN0YXRlLCBhY3Rpb24gYXMgQWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xyXG59LCAod2luZG93IGFzIGFueSkuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXz8uKCkpO1xyXG5cclxucm9vdC5yZW5kZXIoXHJcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cclxuICAgICAgICA8UmVhY3QuU3RyaWN0TW9kZT5cclxuICAgICAgICAgICAgPEJyb3dzZXJSb3V0ZXIgd2luZG93PXt3aW5kb3d9PlxyXG4gICAgICAgICAgICAgICAgPEFwcCAvPlxyXG4gICAgICAgICAgICA8L0Jyb3dzZXJSb3V0ZXI+XHJcbiAgICAgICAgPC9SZWFjdC5TdHJpY3RNb2RlPlxyXG4gICAgPC9Qcm92aWRlcj5cclxuKTtcclxuIl0sIm5hbWVzIjpbImwiLCJuIiwicCIsInEiLCJyIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsIkEiLCJhIiwiQiIsIkMiLCJEIiwiRSIsImIiLCJlIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJkIiwiYyIsImsiLCJoIiwiZyIsImYiLCJtIiwiTiIsIk8iLCJlc2NhcGUiLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsInJlYWN0X3Byb2R1Y3Rpb25fbWluIiwibW9kdWxlIiwicmVxdWlyZSQkMCIsInJlYWN0SnN4UnVudGltZV9wcm9kdWN0aW9uX21pbiIsImV4cG9ydHMiLCJhYSIsImNhIiwicmVxdWlyZSQkMSIsImRhIiwiZWEiLCJmYSIsImhhIiwiaWEiLCJqYSIsImthIiwibGEiLCJtYSIsIm9hIiwicGEiLCJxYSIsInJhIiwic2EiLCJ0YSIsInVhIiwidmEiLCJ3YSIsInlhIiwiemEiLCJBYSIsIkJhIiwiQ2EiLCJEYSIsIkVhIiwiRmEiLCJHYSIsIkhhIiwiSWEiLCJKYSIsIkthIiwiTGEiLCJNYSIsIk5hIiwiT2EiLCJQYSIsIlFhIiwiUmEiLCJTYSIsIlRhIiwiVWEiLCJWYSIsIldhIiwiWGEiLCJZYSIsIlphIiwiYWIiLCJiYiIsImNiIiwiZGIiLCJlYiIsImZiIiwiZ2IiLCJoYiIsImliIiwiamIiLCJrYiIsImxiIiwibWIiLCJuYiIsIm9iIiwicGIiLCJxYiIsInJiIiwic2IiLCJ0YiIsInViIiwidmIiLCJ3YiIsInhiIiwieWIiLCJ6YiIsIkFiIiwiQmIiLCJDYiIsIkRiIiwiRWIiLCJGYiIsIkdiIiwiSGIiLCJJYiIsIkpiIiwiS2IiLCJMYiIsIk1iIiwiTmIiLCJPYiIsIlBiIiwiUWIiLCJSYiIsIlNiIiwiVGIiLCJVYiIsIlZiIiwiV2IiLCJYYiIsIlliIiwiWmIiLCIkYiIsImFjIiwiYmMiLCJjYyIsImRjIiwiZWMiLCJmYyIsImdjIiwiaGMiLCJpYyIsImpjIiwia2MiLCJsYyIsIm1jIiwib2MiLCJuYyIsInBjIiwicWMiLCJyYyIsInNjIiwidGMiLCJ1YyIsInZjIiwid2MiLCJ4YyIsInljIiwiemMiLCJBYyIsIkJjIiwiQ2MiLCJEYyIsIkVjIiwiRmMiLCJHYyIsIkhjIiwiSWMiLCJKYyIsIktjIiwiTGMiLCJNYyIsIk5jIiwiT2MiLCJQYyIsIlFjIiwiUmMiLCJTYyIsIlRjIiwiVWMiLCJWYyIsIldjIiwiWGMiLCJZYyIsIlpjIiwiJGMiLCJhZCIsImJkIiwiY2QiLCJkZCIsImVkIiwiZmQiLCJnZCIsImhkIiwiaWQiLCJqZCIsImtkIiwibGQiLCJtZCIsIm5kIiwib2QiLCJwZCIsInFkIiwicmQiLCJzZCIsInRkIiwidWQiLCJ2ZCIsIndkIiwieGQiLCJ5ZCIsIkFkIiwiemQiLCJCZCIsIkNkIiwiRGQiLCJFZCIsIkZkIiwiR2QiLCJIZCIsIklkIiwiSmQiLCJLZCIsIkxkIiwiTWQiLCJOZCIsIk9kIiwiUGQiLCJRZCIsIlJkIiwiU2QiLCJUZCIsIlVkIiwiVmQiLCJXZCIsIlhkIiwiWWQiLCJaZCIsIiRkIiwiYWUiLCJiZSIsImNlIiwiZGUiLCJlZSIsImZlIiwiZ2UiLCJoZSIsImllIiwiamUiLCJrZSIsImxlIiwibWUiLCJuZSIsIm9lIiwicGUiLCJxZSIsInJlIiwic2UiLCJ0ZSIsInVlIiwidmUiLCJ3ZSIsInhlIiwieWUiLCJ6ZSIsIkFlIiwiQmUiLCJDZSIsIkRlIiwiRWUiLCJGZSIsIkdlIiwiSGUiLCJJZSIsIkplIiwiS2UiLCJMZSIsIk1lIiwiTmUiLCJPZSIsIlBlIiwiUWUiLCJSZSIsIlNlIiwiVGUiLCJVZSIsIlZlIiwiV2UiLCJYZSIsIlllIiwiWmUiLCIkZSIsImFmIiwiYmYiLCJjZiIsImRmIiwiZWYiLCJmZiIsImdmIiwiaGYiLCJqZiIsImtmIiwibGYiLCJtZiIsIm5mIiwib2YiLCJwZiIsInFmIiwicmYiLCJzZiIsInRmIiwidWYiLCJ2ZiIsIndmIiwibmEiLCJ4YSIsIiRhIiwiYmEiLCJ4ZiIsInlmIiwiemYiLCJBZiIsIkJmIiwiQ2YiLCJEZiIsIkVmIiwiRmYiLCJHZiIsIkhmIiwiSmYiLCJJZiIsIktmIiwiTGYiLCJNZiIsIk5mIiwiT2YiLCJQZiIsIlFmIiwiUmYiLCJTZiIsIlRmIiwiVWYiLCJWZiIsIldmIiwiWGYiLCJZZiIsIlpmIiwiJGYiLCJhZyIsImJnIiwiY2ciLCJkZyIsImVnIiwiZmciLCJnZyIsImhnIiwiaWciLCJqZyIsImtnIiwibGciLCJtZyIsIm5nIiwib2ciLCJwZyIsInFnIiwicmciLCJzZyIsInRnIiwidWciLCJ2ZyIsIndnIiwieGciLCJ5ZyIsInpnIiwiQWciLCJCZyIsIkNnIiwiRGciLCJFZyIsIkZnIiwiR2ciLCJIZyIsIklnIiwiSmciLCJLZyIsIkxnIiwiTWciLCJOZyIsIk9nIiwiUGciLCJRZyIsIlJnIiwiU2ciLCJUZyIsIlVnIiwiVmciLCJXZyIsIlhnIiwiWWciLCJaZyIsIiRnIiwiYWgiLCJiaCIsImNoIiwiZGgiLCJlaCIsImZoIiwiZ2giLCJoaCIsImloIiwiamgiLCJraCIsIm5oIiwibGgiLCJtaCIsIm9oIiwicGgiLCJxaCIsInJoIiwic2giLCJ0aCIsInVoIiwidmgiLCJ3aCIsInhoIiwieWgiLCJ6aCIsIkFoIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJGaCIsIkdoIiwiSGgiLCJJaCIsIkpoIiwiS2giLCJMaCIsIk1oIiwiTmgiLCJPaCIsIlBoIiwiUWgiLCJSaCIsIlNoIiwiVGgiLCJVaCIsIlZoIiwiV2giLCJYaCIsIlloIiwiWmgiLCIkaCIsImFpIiwiYmkiLCJjaSIsImRpIiwiZWkiLCJmaSIsImdpIiwiaGkiLCJpaSIsImppIiwia2kiLCJsaSIsIm1pIiwibmkiLCJvaSIsInBpIiwicWkiLCJyaSIsInNpIiwidGkiLCJ1aSIsInZpIiwid2kiLCJ4aSIsInlpIiwiemkiLCJBaSIsIkJpIiwiQ2kiLCJEaSIsIkVpIiwiRmkiLCJHaSIsIkhpIiwiSWkiLCJKaSIsIktpIiwiTGkiLCJNaSIsIk5pIiwiT2kiLCJQaSIsIlFpIiwiUmkiLCJTaSIsIlRpIiwiVWkiLCJWaSIsIldpIiwiWGkiLCJZaSIsIlppIiwiJGkiLCJhaiIsImJqIiwiY2oiLCJkaiIsImVqIiwiZmoiLCJnaiIsImhqIiwiaWoiLCJqaiIsImtqIiwibGoiLCJtaiIsIm5qIiwib2oiLCJwaiIsInFqIiwicmoiLCJzaiIsInRqIiwidWoiLCJ2aiIsIndqIiwieGoiLCJ5aiIsInpqIiwiQWoiLCJCaiIsIkNqIiwiRGoiLCJFaiIsIkZqIiwiR2oiLCJIaiIsIklqIiwiSmoiLCJLaiIsIkxqIiwiTWoiLCJOaiIsIk9qIiwiUGoiLCJRaiIsIlJqIiwiU2oiLCJUaiIsIlVqIiwiVmoiLCJXaiIsIlhqIiwiWCIsIllqIiwiWmoiLCJhayIsImJrIiwiY2siLCJkayIsImVrIiwiZmsiLCJnayIsImhrIiwiaWsiLCJqayIsImtrIiwibGsiLCJtayIsIm5rIiwib2siLCJwayIsIlkiLCJaIiwicWsiLCJyayIsInNrIiwidGsiLCJ1ayIsInZrIiwid2siLCJ4ayIsInlrIiwiemsiLCJBayIsIkJrIiwiQ2siLCJEayIsIkVrIiwiRmsiLCJHayIsIkhrIiwiSWsiLCJKayIsIktrIiwiTGsiLCJNayIsIk5rIiwiT2siLCJQayIsIlFrIiwiUmsiLCJTayIsIlRrIiwiVWsiLCJWayIsIldrIiwiWGsiLCJZayIsIlprIiwiJGsiLCJhbCIsImJsIiwiY2wiLCJkbCIsImVsIiwiZmwiLCJnbCIsImhsIiwiaWwiLCJqbCIsImtsIiwibGwiLCJtbCIsIm5sIiwib2wiLCJwbCIsInFsIiwicmwiLCJzbCIsInRsIiwidWwiLCJ2bCIsIndsIiwicmVhY3REb21fcHJvZHVjdGlvbl9taW4iLCJjaGVja0RDRSIsImVyciIsImNsaWVudCIsIl9leHRlbmRzIiwidGFyZ2V0IiwiaSIsInNvdXJjZSIsImtleSIsIkFjdGlvbiIsInJlYWRPbmx5Iiwib2JqIiwiQmVmb3JlVW5sb2FkRXZlbnRUeXBlIiwiSGFzaENoYW5nZUV2ZW50VHlwZSIsIlBvcFN0YXRlRXZlbnRUeXBlIiwiY3JlYXRlQnJvd3Nlckhpc3RvcnkiLCJvcHRpb25zIiwiX29wdGlvbnMiLCJfb3B0aW9ucyR3aW5kb3ciLCJ3aW5kb3ciLCJnbG9iYWxIaXN0b3J5IiwiZ2V0SW5kZXhBbmRMb2NhdGlvbiIsIl93aW5kb3ckbG9jYXRpb24iLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giLCJzdGF0ZSIsImJsb2NrZWRQb3BUeCIsImhhbmRsZVBvcCIsImJsb2NrZXJzIiwibmV4dEFjdGlvbiIsIl9nZXRJbmRleEFuZExvY2F0aW9uIiwibmV4dEluZGV4IiwibmV4dExvY2F0aW9uIiwiZGVsdGEiLCJpbmRleCIsImdvIiwiYXBwbHlUeCIsImFjdGlvbiIsIl9nZXRJbmRleEFuZExvY2F0aW9uMiIsImxvY2F0aW9uIiwibGlzdGVuZXJzIiwiY3JlYXRlRXZlbnRzIiwiY3JlYXRlSHJlZiIsInRvIiwiY3JlYXRlUGF0aCIsImdldE5leHRMb2NhdGlvbiIsInBhcnNlUGF0aCIsImNyZWF0ZUtleSIsImdldEhpc3RvcnlTdGF0ZUFuZFVybCIsImFsbG93VHgiLCJyZXRyeSIsIl9nZXRJbmRleEFuZExvY2F0aW9uMyIsInB1c2giLCJfZ2V0SGlzdG9yeVN0YXRlQW5kVXIiLCJoaXN0b3J5U3RhdGUiLCJ1cmwiLCJyZXBsYWNlIiwiX2dldEhpc3RvcnlTdGF0ZUFuZFVyMiIsImhpc3RvcnkiLCJsaXN0ZW5lciIsImJsb2NrZXIiLCJ1bmJsb2NrIiwicHJvbXB0QmVmb3JlVW5sb2FkIiwiY3JlYXRlSGFzaEhpc3RvcnkiLCJfb3B0aW9uczIiLCJfb3B0aW9uczIkd2luZG93IiwiX3BhcnNlUGF0aCIsIl9wYXJzZVBhdGgkcGF0aG5hbWUiLCJfcGFyc2VQYXRoJHNlYXJjaCIsIl9wYXJzZVBhdGgkaGFzaCIsIl9nZXRJbmRleEFuZExvY2F0aW9uNCIsIl9nZXRJbmRleEFuZExvY2F0aW9uNSIsIl9nZXRJbmRleEFuZExvY2F0aW9uNiIsImdldEJhc2VIcmVmIiwiYmFzZSIsImhyZWYiLCJoYXNoSW5kZXgiLCJfZ2V0SW5kZXhBbmRMb2NhdGlvbjciLCJfZ2V0SGlzdG9yeVN0YXRlQW5kVXIzIiwiX2dldEhpc3RvcnlTdGF0ZUFuZFVyNCIsImNyZWF0ZU1lbW9yeUhpc3RvcnkiLCJfb3B0aW9uczMiLCJfb3B0aW9uczMkaW5pdGlhbEVudHIiLCJpbml0aWFsRW50cmllcyIsImluaXRpYWxJbmRleCIsImVudHJpZXMiLCJlbnRyeSIsImNsYW1wIiwibG93ZXJCb3VuZCIsInVwcGVyQm91bmQiLCJldmVudCIsImhhbmRsZXJzIiwiZm4iLCJoYW5kbGVyIiwiYXJnIiwiX3JlZiIsIl9yZWYkcGF0aG5hbWUiLCJfcmVmJHNlYXJjaCIsIl9yZWYkaGFzaCIsInBhdGgiLCJwYXJzZWRQYXRoIiwic2VhcmNoSW5kZXgiLCJOYXZpZ2F0aW9uQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJMb2NhdGlvbkNvbnRleHQiLCJSb3V0ZUNvbnRleHQiLCJpbnZhcmlhbnQiLCJjb25kIiwibWVzc2FnZSIsImdlbmVyYXRlUGF0aCIsInBhcmFtcyIsIl8iLCJtYXRjaFJvdXRlcyIsInJvdXRlcyIsImxvY2F0aW9uQXJnIiwiYmFzZW5hbWUiLCJzdHJpcEJhc2VuYW1lIiwiYnJhbmNoZXMiLCJmbGF0dGVuUm91dGVzIiwicmFua1JvdXRlQnJhbmNoZXMiLCJtYXRjaGVzIiwibWF0Y2hSb3V0ZUJyYW5jaCIsInBhcmVudHNNZXRhIiwicGFyZW50UGF0aCIsInJvdXRlIiwibWV0YSIsImpvaW5QYXRocyIsInJvdXRlc01ldGEiLCJjb21wdXRlU2NvcmUiLCJjb21wYXJlSW5kZXhlcyIsInBhcmFtUmUiLCJkeW5hbWljU2VnbWVudFZhbHVlIiwiaW5kZXhSb3V0ZVZhbHVlIiwiZW1wdHlTZWdtZW50VmFsdWUiLCJzdGF0aWNTZWdtZW50VmFsdWUiLCJzcGxhdFBlbmFsdHkiLCJpc1NwbGF0IiwicyIsInNlZ21lbnRzIiwiaW5pdGlhbFNjb3JlIiwic2NvcmUiLCJzZWdtZW50IiwiYnJhbmNoIiwibWF0Y2hlZFBhcmFtcyIsIm1hdGNoZWRQYXRobmFtZSIsImVuZCIsInJlbWFpbmluZ1BhdGhuYW1lIiwibWF0Y2giLCJtYXRjaFBhdGgiLCJub3JtYWxpemVQYXRobmFtZSIsInBhdHRlcm4iLCJtYXRjaGVyIiwicGFyYW1OYW1lcyIsImNvbXBpbGVQYXRoIiwicGF0aG5hbWVCYXNlIiwiY2FwdHVyZUdyb3VwcyIsIm1lbW8iLCJwYXJhbU5hbWUiLCJzcGxhdFZhbHVlIiwic2FmZWx5RGVjb2RlVVJJQ29tcG9uZW50IiwiY2FzZVNlbnNpdGl2ZSIsInJlZ2V4cFNvdXJjZSIsInZhbHVlIiwicmVzb2x2ZVBhdGgiLCJmcm9tUGF0aG5hbWUiLCJ0b1BhdGhuYW1lIiwicmVzb2x2ZVBhdGhuYW1lIiwibm9ybWFsaXplU2VhcmNoIiwibm9ybWFsaXplSGFzaCIsInJlbGF0aXZlUGF0aCIsInJlc29sdmVUbyIsInRvQXJnIiwicm91dGVQYXRobmFtZXMiLCJsb2NhdGlvblBhdGhuYW1lIiwiZnJvbSIsInJvdXRlUGF0aG5hbWVJbmRleCIsInRvU2VnbWVudHMiLCJnZXRUb1BhdGhuYW1lIiwibmV4dENoYXIiLCJwYXRocyIsInVzZUhyZWYiLCJ1c2VJblJvdXRlckNvbnRleHQiLCJuYXZpZ2F0b3IiLCJ1c2VDb250ZXh0IiwidXNlUmVzb2x2ZWRQYXRoIiwiam9pbmVkUGF0aG5hbWUiLCJlbmRzV2l0aFNsYXNoIiwidXNlTG9jYXRpb24iLCJ1c2VOYXZpZ2F0aW9uVHlwZSIsInVzZU1hdGNoIiwidXNlTWVtbyIsInVzZU5hdmlnYXRlIiwicm91dGVQYXRobmFtZXNKc29uIiwiYWN0aXZlUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlQ2FsbGJhY2siLCJPdXRsZXRDb250ZXh0IiwidXNlT3V0bGV0Q29udGV4dCIsInVzZU91dGxldCIsImNvbnRleHQiLCJvdXRsZXQiLCJjcmVhdGVFbGVtZW50IiwidXNlUGFyYW1zIiwicm91dGVNYXRjaCIsInVzZVJvdXRlcyIsInBhcmVudE1hdGNoZXMiLCJwYXJlbnRQYXJhbXMiLCJwYXJlbnRQYXRobmFtZUJhc2UiLCJsb2NhdGlvbkZyb21Db250ZXh0IiwiX3BhcnNlZExvY2F0aW9uQXJnJHBhIiwicGFyc2VkTG9jYXRpb25BcmciLCJfcmVuZGVyTWF0Y2hlcyIsIk1lbW9yeVJvdXRlciIsImNoaWxkcmVuIiwiaGlzdG9yeVJlZiIsInNldFN0YXRlIiwidXNlU3RhdGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJSb3V0ZXIiLCJOYXZpZ2F0ZSIsIl9yZWYyIiwibmF2aWdhdGUiLCJPdXRsZXQiLCJwcm9wcyIsIlJvdXRlIiwiX3Byb3BzIiwiX3JlZjMiLCJiYXNlbmFtZVByb3AiLCJsb2NhdGlvblByb3AiLCJuYXZpZ2F0aW9uVHlwZSIsInN0YXRpY1Byb3AiLCJuYXZpZ2F0aW9uQ29udGV4dCIsInRyYWlsaW5nUGF0aG5hbWUiLCJSb3V0ZXMiLCJfcmVmNCIsImNyZWF0ZVJvdXRlc0Zyb21DaGlsZHJlbiIsIkNoaWxkcmVuIiwiZWxlbWVudCIsImlzVmFsaWRFbGVtZW50IiwiRnJhZ21lbnQiLCJyZW5kZXJNYXRjaGVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiQnJvd3NlclJvdXRlciIsIkhhc2hSb3V0ZXIiLCJIaXN0b3J5Um91dGVyIiwiaXNNb2RpZmllZEV2ZW50IiwiTGluayIsImZvcndhcmRSZWYiLCJyZWYiLCJvbkNsaWNrIiwicmVsb2FkRG9jdW1lbnQiLCJyZXN0IiwiaW50ZXJuYWxPbkNsaWNrIiwidXNlTGlua0NsaWNrSGFuZGxlciIsImhhbmRsZUNsaWNrIiwiTmF2TGluayIsIl9yZWY1IiwiYXJpYUN1cnJlbnRQcm9wIiwiY2xhc3NOYW1lUHJvcCIsInN0eWxlUHJvcCIsImlzQWN0aXZlIiwiYXJpYUN1cnJlbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsIl90ZW1wIiwicmVwbGFjZVByb3AiLCJ1c2VTZWFyY2hQYXJhbXMiLCJkZWZhdWx0SW5pdCIsImRlZmF1bHRTZWFyY2hQYXJhbXNSZWYiLCJjcmVhdGVTZWFyY2hQYXJhbXMiLCJzZWFyY2hQYXJhbXMiLCJzZXRTZWFyY2hQYXJhbXMiLCJuZXh0SW5pdCIsIm5hdmlnYXRlT3B0aW9ucyIsImluaXQiLCJyZWFjdFJvdXRlclByb21wdF9janNfcHJvZHVjdGlvbl9taW4iLCJvIiwiaiIsInVzZVN5bmNFeHRlcm5hbFN0b3JlU2hpbV9wcm9kdWN0aW9uX21pbiIsIndpdGhTZWxlY3Rvcl9wcm9kdWN0aW9uX21pbiIsImRlZmF1bHROb29wQmF0Y2giLCJjYWxsYmFjayIsImJhdGNoIiwic2V0QmF0Y2giLCJuZXdCYXRjaCIsImdldEJhdGNoIiwiUmVhY3RSZWR1eENvbnRleHQiLCJSZWFjdCIsInVzZVJlZHV4Q29udGV4dCIsIm5vdEluaXRpYWxpemVkIiwidXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3IiLCJpbml0aWFsaXplVXNlU2VsZWN0b3IiLCJyZWZFcXVhbGl0eSIsImNyZWF0ZVNlbGVjdG9ySG9vayIsInVzZURlZmF1bHRSZWR1eENvbnRleHQiLCJzZWxlY3RvciIsImVxdWFsaXR5Rm4iLCJzdG9yZSIsInN1YnNjcmlwdGlvbiIsImdldFNlcnZlclN0YXRlIiwic2VsZWN0ZWRTdGF0ZSIsInVzZURlYnVnVmFsdWUiLCJ1c2VTZWxlY3RvciIsInJlYWN0SXNfcHJvZHVjdGlvbl9taW4iLCJyZWFjdElzIiwiRk9SV0FSRF9SRUZfU1RBVElDUyIsIk1FTU9fU1RBVElDUyIsIlRZUEVfU1RBVElDUyIsImNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbiIsImZpcnN0IiwibGFzdCIsImlzU3Vic2NyaWJlZCIsIm51bGxMaXN0ZW5lcnMiLCJjcmVhdGVTdWJzY3JpcHRpb24iLCJwYXJlbnRTdWIiLCJ1bnN1YnNjcmliZSIsImFkZE5lc3RlZFN1YiIsInRyeVN1YnNjcmliZSIsIm5vdGlmeU5lc3RlZFN1YnMiLCJoYW5kbGVDaGFuZ2VXcmFwcGVyIiwidHJ5VW5zdWJzY3JpYmUiLCJjYW5Vc2VET00iLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiUHJvdmlkZXIiLCJzZXJ2ZXJTdGF0ZSIsImNvbnRleHRWYWx1ZSIsInByZXZpb3VzU3RhdGUiLCJDb250ZXh0IiwiY3JlYXRlU3RvcmVIb29rIiwidXNlU3RvcmUiLCJjcmVhdGVEaXNwYXRjaEhvb2siLCJ1c2VEZWZhdWx0U3RvcmUiLCJ1c2VEaXNwYXRjaCIsIkJhc2VQZXJtaXNzaW9uTGV2ZWwiLCJDb250YWN0U3RhdGVDb2RlIiwiUG9ydGFsQ29udGFjdFR5cGUiLCJBY2NvdW50U2l0ZVR5cGUiLCJBY2NvdW50U3RhdGVDb2RlIiwiTW9ja0FjY291bnREYXRhIiwiQ2FzZVBlcm1pc3Npb25MZXZlbCIsIkNvbnRhY3RQZXJtaXNzaW9uTGV2ZWwiLCJPcmRlclBlcm1pc3Npb25MZXZlbCIsIkludm9pY2VQZXJtaXNzaW9uTGV2ZWwiLCJNb2NrQ29udGFjdERhdGEiLCJNb2NrQXV0aGVudGljYXRlZFVzZXIiLCJnZXRVc2VyTWV0YWRhdGEiLCJjb250YWN0SWQiLCJjb250YWN0TmFtZSIsImFjY291bnRJZCIsImFjY291bnROYW1lIiwicGVybWlzc2lvbkxldmVsIiwiY2FzZVBlcm1pc3Npb25MZXZlbCIsImNvbnRhY3RQZXJtaXNzaW9uTGV2ZWwiLCJvcmRlclBlcm1pc3Npb25MZXZlbCIsImludm9pY2VQZXJtaXNzaW9uTGV2ZWwiLCJ0ZXJtc0FuZENvbmRpdGlvbnNBY2NlcHRhbmNlRGF0ZSIsIm1ldGFkYXRhS2V5IiwidXNlVXNlck1ldGFkYXRhIiwiaXNMb2NhbE1vZGUiLCJtZXRhZGF0YSIsIkltYWdlIiwic3JjIiwiaGVpZ2h0Iiwid2lkdGgiLCJpbWFnZVVybCIsImpzeCIsIkhlYWRlciIsImlzU2hvd24iLCJkaXNwYXRjaCIsImpzeHMiLCJQcm9kdWN0UG9ydGFsVGlsZU1hcHBpbmciLCJDYXNlVHlwZSIsIkluY2lkZW50U3RhdHVzQ29kZSIsIkNhc2VQcmlvcml0eUNvZGUiLCJCcmVhZGNydW1iIiwiY3VycmVudFBhdGhOYW1lIiwicGFnZXMiLCJQQUdFUyIsInBhZ2UiLCJpc0xhc3RQYWdlIiwiRGVmYXVsdENvbnRleHQiLCJJY29uQ29udGV4dCIsIl9fYXNzaWduIiwidGhpcyIsIl9fcmVzdCIsIlRyZWUyRWxlbWVudCIsInRyZWUiLCJub2RlIiwiR2VuSWNvbiIsImRhdGEiLCJJY29uQmFzZSIsImVsZW0iLCJjb25mIiwiYXR0ciIsInNpemUiLCJ0aXRsZSIsInN2Z1Byb3BzIiwiY29tcHV0ZWRTaXplIiwiQmlDaGV2cm9uRG93biIsIkJpRW52ZWxvcGUiLCJCaUVycm9yIiwiQmlMaW5rRXh0ZXJuYWwiLCJCaVBlbmNpbCIsInVzZUFwcEluc2lnaHRzQ3VzdG9tUHJvcGVydGllcyIsInVzZXJNZXRhZGF0YSIsInVzZUFwcEluc2lnaHRzIiwiYXBwSW5zaWdodHNDdXN0b21Qcm9wZXJ0aWVzIiwiYXBwSW5zaWdodHMiLCJ0cmFja0V4Y2VwdGlvbldpdGhCaXN0ZWNoTWV0YWRhdGEiLCJlcnJvciIsInRyYWNrRXZlbnRXaXRoQmlzdGVjaE1ldGFkYXRhIiwidHJhY2tSZW5kZXJFeGNlcHRpb25XaXRoQmlzdGVjaE1ldGFkYXRhIiwiZXJyb3JJbmZvIiwiSW5mb0NhcmQiLCJFcnJvckJvdW5kYXJ5IiwiRXJyb3JCb3VuZGFyeUlubmVyIiwiX2EiLCJfYiIsIkRlZmF1bHRFcnJvckZhbGxiYWNrIiwiaXNIb3ZlcmVkIiwic2V0SXNIb3ZlcmVkIiwiX2MiLCJfZCIsIl9mIiwiX2UiLCJwYWNrYWdlc0NhY2hlIiwiX3dpbiIsInNldFZlcnNpb24iLCJwYWNrYWdlTmFtZSIsInBhY2thZ2VWZXJzaW9uIiwicGFja2FnZXMiLCJ2ZXJzaW9ucyIsImV4dGVuZFN0YXRpY3MiLCJfX2V4dGVuZHMiLCJfXyIsIl9fZGVjb3JhdGUiLCJkZWNvcmF0b3JzIiwiZGVzYyIsIl9fc3ByZWFkQXJyYXkiLCJwYWNrIiwiYXIiLCJJbmplY3Rpb25Nb2RlIiwiU1RZTEVTSEVFVF9TRVRUSU5HIiwiUkVVU0VfU1RZTEVfTk9ERSIsIl9nbG9iYWwiLCJfc3R5bGVzaGVldCIsIlN0eWxlc2hlZXQiLCJjb25maWciLCJzZXJpYWxpemVkU3R5bGVzaGVldCIsImZhYnJpY0NvbmZpZyIsInN0eWxlc2hlZXQiLCJfdGhpcyIsImRpc3BsYXlOYW1lIiwibmFtZXNwYWNlIiwicHJlZml4IiwiYXJncyIsInJ1bGVzIiwicnVsZSIsInByZXNlcnZlIiwiaW5qZWN0aW9uTW9kZSIsInNoZWV0IiwiaW5jbHVkZVByZXNlcnZlZFJ1bGVzIiwiaGVhZCIsInN0eWxlRWxlbWVudCIsIm5vZGVUb0luc2VydEJlZm9yZSIsImNzcFNldHRpbmdzIiwicGxhY2Vob2xkZXJTdHlsZVRhZyIsImV4dHJhY3RTdHlsZVBhcnRzIiwiX2kiLCJjbGFzc2VzIiwib2JqZWN0cyIsIl9wcm9jZXNzQXJncyIsImFyZ3NMaXN0IiwiYXJnc0xpc3RfMSIsInRyYW5zbGF0ZWRBcmdzIiwic2V0UlRMIiwiaXNSVEwiLCJfcnRsIiwiZ2V0UlRMIiwiZ2V0U3R5bGVPcHRpb25zIiwia2ViYWJSdWxlcyIsInJ1bGVQYWlycyIsIl92ZW5kb3JTZXR0aW5ncyIsImdldFZlbmRvclNldHRpbmdzIiwiZG9jIiwibmF2IiwidXNlckFnZW50IiwiYXV0b1ByZWZpeE5hbWVzIiwicHJlZml4UnVsZXMiLCJ2ZW5kb3JTZXR0aW5ncyIsIm5hbWUiLCJOT05fUElYRUxfTlVNQkVSX1BST1BTIiwicHJvdmlkZVVuaXRzIiwiaXNOb25QaXhlbFByb3AiLCJpc1ZhcmlhYmxlT3JQcmVmaXhlZCIsInVuaXQiLCJMRUZUIiwiUklHSFQiLCJOT19GTElQIiwiTkFNRV9SRVBMQUNFTUVOVFMiLCJWQUxVRV9SRVBMQUNFTUVOVFMiLCJydGxpZnlSdWxlcyIsIm5hbWVfMSIsImZsaXBRdWFkIiwibmVnYXRlTnVtIiwicGFydEluZGV4IiwicGFydHMiLCJudW1iZXJWYWwiLCJ0b2tlbml6ZVdpdGhQYXJlbnRoZXNlcyIsInBhcnRTdGFydCIsInBhcmVucyIsIkRJU1BMQVlfTkFNRSIsImdldERpc3BsYXlOYW1lIiwicm9vdFN0eWxlIiwiZ2xvYmFsU2VsZWN0b3JSZWdFeHAiLCJleHBhbmRDb21tYVNlcGFyYXRlZEdsb2JhbHMiLCJzZWxlY3RvcldpdGhHbG9iYWxzIiwicmVwbGFjZW1lbnRJbmZvIiwiZmluZEdsb2JhbCIsIm1hdGNoSW5kZXgiLCJtYXRjaEVuZEluZGV4IiwicmVwbGFjZW1lbnQiLCJzdWZmaXgiLCJleHBhbmRTZWxlY3RvciIsIm5ld1NlbGVjdG9yIiwiY3VycmVudFNlbGVjdG9yIiwiZXh0cmFjdFNlbGVjdG9yIiwiZXh0cmFjdFJ1bGVzIiwic2VwYXJhdGVkU2VsZWN0b3IiLCJjdXJyZW50UnVsZXMiLCJhcmdzXzEiLCJleHBhbmRlZFJ1bGVzIiwicHJvcCIsInByb3BWYWx1ZSIsInNlbGVjdG9ycyIsImV4cGFuZFF1YWRzIiwiZ2V0S2V5Rm9yUnVsZXMiLCJzZXJpYWxpemVkIiwiaGFzUHJvcHMiLCJydWxlc0ZvclNlbGVjdG9yIiwicHJvcE5hbWUiLCJyZXBlYXRTdHJpbmciLCJjb3VudCIsInNlcmlhbGl6ZVJ1bGVFbnRyaWVzIiwicnVsZUVudHJpZXMiLCJhbGxFbnRyaWVzIiwic3R5bGVUb1JlZ2lzdHJhdGlvbiIsInJlZ2lzdHJhdGlvbiIsInJ1bGVzVG9JbnNlcnQiLCJhcHBseVJlZ2lzdHJhdGlvbiIsInNwZWNpZmljaXR5TXVsdGlwbGllciIsInByb2Nlc3NlZFJ1bGUiLCJzdHlsZVRvQ2xhc3NOYW1lIiwibWVyZ2VTdHlsZXMiLCJtZXJnZUNzcyIsInN0eWxlQXJncyIsImNvbmNhdFN0eWxlU2V0cyIsInN0eWxlU2V0cyIsIm1lcmdlZFNldCIsIndvcmtpbmdTdWJjb21wb25lbnRTdHlsZXMiLCJzdHlsZVNldHNfMSIsImN1cnJlbnRTZXQiLCJjdXJyZW50Q29tcG9uZW50U3R5bGVzIiwic3ViQ29tcFByb3AiLCJtZXJnZWRWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsIm1lcmdlZFN1YlN0eWxlcyIsIl9sb29wXzEiLCJ3b3JraW5nU2V0XzEiLCJzdHlsZVByb3BzIiwic3R5bGVGdW5jdGlvbk9yT2JqZWN0IiwibWVyZ2VTdHlsZVNldHMiLCJtZXJnZUNzc1NldHMiLCJjbGFzc05hbWVTZXQiLCJzdHlsZVNldCIsImNvbmNhdGVuYXRlZFN0eWxlU2V0IiwicmVnaXN0cmF0aW9ucyIsInN0eWxlU2V0QXJlYSIsInN0eWxlcyIsInJlZ2lzdHJhdGlvbnNfMSIsImNvbmNhdFN0eWxlU2V0c1dpdGhQcm9wcyIsImFsbFN0eWxlcyIsInJlc3VsdCIsImFsbFN0eWxlc18xIiwiZm9udEZhY2UiLCJmb250Iiwia2V5ZnJhbWVzIiwidGltZWxpbmUiLCJydWxlc0FycmF5IiwiYnVpbGRDbGFzc01hcCIsInN0eWxlTmFtZSIsImNsYXNzTmFtZV8xIiwiX3dpbmRvdyIsImdldFdpbmRvdyIsInJvb3RFbGVtZW50IiwiQXN5bmMiLCJwYXJlbnQiLCJvbkVycm9yIiwiZHVyYXRpb24iLCJ0aW1lb3V0SWQiLCJ0YXJnZXRFbGVtZW50IiwiaW1tZWRpYXRlSWQiLCJ3aW4iLCJzZXRJbW1lZGlhdGVDYWxsYmFjayIsImludGVydmFsSWQiLCJmdW5jIiwid2FpdCIsIndhaXRNUyIsImxlYWRpbmciLCJ0cmFpbGluZyIsImxhc3RFeGVjdXRlVGltZSIsImxhc3RSZXN1bHQiLCJsYXN0QXJncyIsInVzZXJDYWxsIiwibm93Iiwid2FpdExlbmd0aCIsInJlc3VsdEZ1bmN0aW9uIiwibm9PcEZ1bmN0aW9uIiwibWF4V2FpdCIsImxhc3RDYWxsVGltZSIsIm1hcmtFeGVjdXRlZCIsInRpbWUiLCJpbnZva2VGdW5jdGlvbiIsImV4ZWN1dGVJbW1lZGlhdGVseSIsIm1heFdhaXREZWx0YSIsIm1heFdhaXRFeHBpcmVkIiwicGVuZGluZyIsImNhbmNlbCIsImZsdXNoIiwiYW5pbWF0aW9uRnJhbWVJZCIsImFuaW1hdGlvbkZyYW1lQ2FsbGJhY2siLCJzaGFsbG93Q29tcGFyZSIsImFzc2lnbiIsImZpbHRlcmVkQXNzaWduIiwiaXNBbGxvd2VkIiwic291cmNlT2JqZWN0IiwiRXZlbnRHcm91cCIsImV2ZW50TmFtZSIsImV2ZW50QXJncyIsImJ1YmJsZUV2ZW50IiwicmV0VmFsIiwiZXYiLCJldk9iaiIsImV2ZW50cyIsImV2ZW50UmVjb3JkcyIsImV2ZW50UmVjb3JkTGlzdCIsImxpc3RJbmRleCIsInJlY29yZCIsImRlY2xhcmVkRXZlbnRzIiwidXNlQ2FwdHVyZSIsInBhcmVudF8xIiwiZXZlbnRSZWNvcmQiLCJwcm9jZXNzRWxlbWVudEV2ZW50IiwicHJvY2Vzc09iamVjdEV2ZW50IiwidGFyZ2V0QXJyYXlMb29rdXAiLCJ0YXJnZXRBcnJheSIsImdldERvY3VtZW50IiwiX3Njcm9sbGJhcldpZHRoIiwiX2JvZHlTY3JvbGxEaXNhYmxlZENvdW50IiwiRGlzYWJsZWRTY3JvbGxDbGFzc05hbWUiLCJEQVRBX0lTX1NDUk9MTEFCTEVfQVRUUklCVVRFIiwiYWxsb3dTY3JvbGxPbkVsZW1lbnQiLCJfcHJldmlvdXNDbGllbnRZIiwiX2VsZW1lbnQiLCJfc2F2ZUNsaWVudFkiLCJfcHJldmVudE92ZXJzY3JvbGxpbmciLCJjbGllbnRZIiwic2Nyb2xsYWJsZVBhcmVudCIsImZpbmRTY3JvbGxhYmxlUGFyZW50IiwiYWxsb3dPdmVyc2Nyb2xsT25FbGVtZW50IiwiX2FsbG93RWxlbWVudFNjcm9sbCIsIl9kaXNhYmxlSW9zQm9keVNjcm9sbCIsImRpc2FibGVCb2R5U2Nyb2xsIiwiZW5hYmxlQm9keVNjcm9sbCIsImdldFNjcm9sbGJhcldpZHRoIiwic2Nyb2xsRGl2Iiwic3RhcnRpbmdFbGVtZW50IiwiY29tcHV0ZWRTdHlsZXMiLCJvdmVyZmxvd1kiLCJfd2FybmluZ0NhbGxiYWNrIiwid2FybiIsIndhcm5Db25kaXRpb25hbGx5UmVxdWlyZWRQcm9wcyIsImNvbXBvbmVudE5hbWUiLCJyZXF1aXJlZFByb3BzIiwiY29uZGl0aW9uYWxQcm9wTmFtZSIsImNvbmRpdGlvbiIsInJlcXVpcmVkUHJvcHNfMSIsInJlcXVpcmVkUHJvcE5hbWUiLCJfc3VwZXIiLCJCYXNlQ29tcG9uZW50IiwiX21ha2VBbGxTYWZlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwibGVuIiwiZGlzcG9zYWJsZSIsImZ1bmNOYW1lUmVnZXgiLCJyZXN1bHRzIiwicmVmTmFtZSIsImN1cnJlbnRQcm9wcyIsIm5ld1Byb3BzIiwiZGVwcmVjYXRpb25NYXAiLCJtdXR1YWxseUV4Y2x1c2l2ZU1hcCIsIlJlYWN0LkNvbXBvbmVudCIsInByb3RvdHlwZSIsIm1ldGhvZE5hbWVzIiwiX21ha2VTYWZlIiwibWV0aG9kTmFtZSIsImNsYXNzTWV0aG9kIiwicHJvdG90eXBlTWV0aG9kIiwibnVsbFJlbmRlciIsIkRlbGF5ZWRSZW5kZXIiLCJkZWxheSIsIlJlYWN0LkNoaWxkcmVuIiwiR0xPQkFMX1NFVFRJTkdTX1BST1BfTkFNRSIsIkNBTExCQUNLX1NUQVRFX1BST1BfTkFNRSIsIl9jb3VudGVyIiwiR2xvYmFsU2V0dGluZ3MiLCJkZWZhdWx0VmFsdWUiLCJnbG9iYWxTZXR0aW5ncyIsIl9nZXRHbG9iYWxTZXR0aW5ncyIsImNhbGxiYWNrcyIsIm9sZFZhbHVlIiwiY2hhbmdlRGVzY3JpcHRpb24iLCJfZ2V0Q2FsbGJhY2tzIiwiZ2xvYmFsT2JqIiwiS2V5Q29kZXMiLCJSZWN0YW5nbGUiLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJyZWN0IiwiYXBwZW5kRnVuY3Rpb24iLCJmdW5jdGlvbnMiLCJtZXJnZUFyaWFBdHRyaWJ1dGVWYWx1ZXMiLCJhcmlhQXR0cmlidXRlcyIsIm1lcmdlZEF0dHJpYnV0ZSIsImFkZEVsZW1lbnRBdEluZGV4IiwiYXJyYXkiLCJpdGVtVG9BZGQiLCJjb3B5IiwiYXJyYXlzRXF1YWwiLCJhcnJheTEiLCJhcnJheTIiLCJnZXRJdGVtIiwic2V0SXRlbSIsIlJUTF9MT0NBTF9TVE9SQUdFX0tFWSIsIl9pc1JUTCIsInRoZW1lIiwic2F2ZWRSVEwiLCJtZXJnZVN0eWxlc1NldFJUTCIsInBlcnNpc3RTZXR0aW5nIiwiaXNWaXJ0dWFsRWxlbWVudCIsImdldFZpcnR1YWxQYXJlbnQiLCJjaGlsZCIsImdldFBhcmVudCIsImFsbG93VmlydHVhbFBhcmVudHMiLCJlbGVtZW50Q29udGFpbnMiLCJpc0NvbnRhaW5lZCIsIm5leHRQYXJlbnQiLCJmaW5kRWxlbWVudFJlY3Vyc2l2ZSIsIm1hdGNoRnVuY3Rpb24iLCJlbGVtZW50Q29udGFpbnNBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJlbGVtZW50TWF0Y2giLCJ0ZXN0RWxlbWVudCIsIkRBVEFfUE9SVEFMX0FUVFJJQlVURSIsInNldFBvcnRhbEF0dHJpYnV0ZSIsInBvcnRhbENvbnRhaW5zRWxlbWVudCIsInNldFZpcnR1YWxQYXJlbnQiLCJ2aXJ0dWFsQ2hpbGQiLCJ2aXJ0dWFsUGFyZW50Iiwib2xkUGFyZW50IiwiSVNfRk9DVVNBQkxFX0FUVFJJQlVURSIsIklTX1ZJU0lCTEVfQVRUUklCVVRFIiwiRk9DVVNaT05FX0lEX0FUVFJJQlVURSIsIkZPQ1VTWk9ORV9TVUJfQVRUUklCVVRFIiwiZ2V0Rmlyc3RGb2N1c2FibGUiLCJjdXJyZW50RWxlbWVudCIsImluY2x1ZGVFbGVtZW50c0luRm9jdXNab25lcyIsImdldE5leHRFbGVtZW50IiwiZ2V0TGFzdEZvY3VzYWJsZSIsImdldFByZXZpb3VzRWxlbWVudCIsImdldEZpcnN0VGFiYmFibGUiLCJjaGVja05vZGUiLCJnZXRMYXN0VGFiYmFibGUiLCJmb2N1c0ZpcnN0Q2hpbGQiLCJieXBhc3NIaWRkZW5FbGVtZW50cyIsImZvY3VzQXN5bmMiLCJzdXBwcmVzc1BhcmVudFRyYXZlcnNhbCIsInRyYXZlcnNlQ2hpbGRyZW4iLCJhbGxvd0ZvY3VzUm9vdCIsInRhYmJhYmxlIiwiaXNDdXJyZW50RWxlbWVudFZpc2libGUiLCJpc0VsZW1lbnRWaXNpYmxlIiwiaXNFbGVtZW50Rm9jdXNab25lIiwiaXNFbGVtZW50Rm9jdXNTdWJab25lIiwiY2hpbGRNYXRjaCIsImlzRWxlbWVudFRhYmJhYmxlIiwiY2hpbGRNYXRjaFNpYmxpbmdNYXRjaCIsImNoaWxkTWF0Y2hQYXJlbnQiLCJjaGlsZE1hdGNoUGFyZW50TWF0Y2giLCJzaWJsaW5nTWF0Y2giLCJzdXBwcmVzc0NoaWxkVHJhdmVyc2FsIiwiY2hlY2tFbGVtZW50VmlzaWJpbGl0eSIsImlzRWxlbWVudFZpc2libGVBbmROb3RIaWRkZW4iLCJ2aXNpYmlsaXR5QXR0cmlidXRlIiwiY2hlY2tUYWJJbmRleCIsInRhYkluZGV4IiwidGFiSW5kZXhBdHRyaWJ1dGVWYWx1ZSIsImlzRm9jdXNhYmxlQXR0cmlidXRlIiwiaXNUYWJJbmRleFNldCIsImRvZXNFbGVtZW50Q29udGFpbkZvY3VzIiwiZG9jdW1lbnQiLCJjdXJyZW50QWN0aXZlRWxlbWVudCIsInNob3VsZFdyYXBGb2N1cyIsIm5vV3JhcERhdGFBdHRyaWJ1dGUiLCJ0YXJnZXRUb0ZvY3VzT25OZXh0UmVwYWludCIsImdldEZvY3VzYWJsZUJ5SW5kZXhQYXRoIiwicGF0aF8xIiwibmV4dENoaWxkIiwiZ2V0RWxlbWVudEluZGV4UGF0aCIsImZyb21FbGVtZW50IiwidG9FbGVtZW50Iiwib24iLCJNQVhfQ0FDSEVfQ09VTlQiLCJERUZBVUxUX1NQRUNJRklDSVRZX01VTFRJUExJRVIiLCJfbWVtb2l6ZWRDbGFzc05hbWVzIiwiY2xhc3NOYW1lc0Z1bmN0aW9uIiwibWFwIiwic3R5bGVDYWxjQ291bnQiLCJnZXRDbGFzc05hbWVzQ291bnQiLCJjdXJyZW50TWVtb2l6ZWRDbGFzc05hbWVzIiwiZ2V0Q2xhc3NOYW1lcyIsImN1cnJlbnQiLCJydGwiLCJkaXNhYmxlQ2FjaGluZyIsIl90cmF2ZXJzZU1hcCIsIl90cmF2ZXJzZUVkZ2UiLCJfbm9ybWFsaXplVmFsdWUiLCJpbnB1dHMiLCJjYWNoZWRJbnB1dHNGcm9tU3R5bGVkIiwiaW5wdXQiLCJfaW5pdGlhbGl6ZWRTdHlsZXNoZWV0UmVzZXRzIiwiX3Jlc2V0Q291bnRlciIsIl9lbXB0eU9iamVjdCIsIl9kaWN0aW9uYXJ5IiwiX3dlYWtNYXAiLCJyZXNldE1lbW9pemF0aW9ucyIsIm1lbW9pemVGdW5jdGlvbiIsIm1heENhY2hlU2l6ZSIsImlnbm9yZU51bGxPclVuZGVmaW5lZFJlc3VsdCIsInJvb3ROb2RlIiwiY2FjaGVTaXplIiwibG9jYWxSZXNldENvdW50ZXIiLCJjdXJyZW50Tm9kZSIsIl9jcmVhdGVOb2RlIiwiX25vcm1hbGl6ZUFyZyIsImNyZWF0ZU1lbW9pemVyIiwiZ2V0VmFsdWUiLCJjYWNoZSIsIm1lbW9pemVkR2V0VmFsdWUiLCJ2YWwiLCJjcmVhdGVDb21wb3NlZENvbXBvbmVudCIsIm91dGVyIiwiT3V0ZXIiLCJvdXRlck1lbW9pemVyIiwiaW5uZXIiLCJJbm5lciIsImlubmVyTWVtb2l6ZXIiLCJkZWZhdWx0UmVuZGVyIiwiSW5uZXJXaXRoRGVmYXVsdFJlbmRlciIsImlubmVyUHJvcHMiLCJSZWFjdC5jcmVhdGVFbGVtZW50IiwiT3V0ZXJXaXRoRGVmYXVsdFJlbmRlciIsIm91dGVyUHJvcHMiLCJjb21wb25lbnRBc01lbW9pemVyIiwiY29tcG9zZUNvbXBvbmVudEFzIiwiaXNDb250cm9sbGVkIiwidmFsdWVQcm9wIiwiY3NzIiwiQ3VzdG9taXphdGlvbnNHbG9iYWxLZXkiLCJOT19DVVNUT01JWkFUSU9OUyIsIl9hbGxTZXR0aW5ncyIsIl9ldmVudHMiLCJDdXN0b21pemF0aW9ucyIsInNldHRpbmdzIiwic2NvcGVOYW1lIiwicHJvcGVydGllcyIsImxvY2FsU2V0dGluZ3MiLCJsb2NhbFNjb3BlZFNldHRpbmdzIiwiZ2xvYmFsU2NvcGVkU2V0dGluZ3MiLCJwcm9wZXJ0aWVzXzEiLCJwcm9wZXJ0eSIsImNvZGUiLCJzdXBwcmVzc1VwZGF0ZSIsIm9uQ2hhbmdlIiwiQ3VzdG9taXplckNvbnRleHQiLCJSZWFjdC5jcmVhdGVDb250ZXh0IiwibWVyZ2VTZXR0aW5ncyIsIm9sZFNldHRpbmdzIiwibmV3U2V0dGluZ3MiLCJtZXJnZVNldHRpbmdzV2l0aCIsIl9pc1NldHRpbmdzRnVuY3Rpb24iLCJfc2V0dGluZ3NNZXJnZVdpdGgiLCJtZXJnZVNjb3BlZFNldHRpbmdzIiwiX3Njb3BlZFNldHRpbmdzTWVyZ2VXaXRoIiwic2NvcGVkU2V0dGluZ3NGcm9tUHJvcHMiLCJvbGRTY29wZWRTZXR0aW5ncyIsIm5ld1Njb3BlZFNldHRpbmdzIiwibWVyZ2VDdXN0b21pemF0aW9ucyIsInBhcmVudENvbnRleHQiLCJjdXN0b21pemF0aW9ucyIsIkN1c3RvbWl6ZXIiLCJjb250ZXh0VHJhbnNmb3JtIiwibmV3Q29udGV4dCIsImhvaXN0U3RhdGljcyIsImRlc3QiLCJjdXN0b21pemFibGUiLCJzY29wZSIsImZpZWxkcyIsImNvbmNhdFN0eWxlcyIsIkNvbXBvc2VkQ29tcG9uZW50IiwicmVzdWx0Q2xhc3MiLCJDb21wb25lbnRXaXRoSW5qZWN0ZWRQcm9wcyIsImRlZmF1bHRQcm9wcyIsImNvbXBvbmVudFByb3BzIiwibWVyZ2VkU3R5bGVzIiwidXNlQ3VzdG9taXphdGlvblNldHRpbmdzIiwiZm9yY2VVcGRhdGUiLCJ1c2VGb3JjZVVwZGF0ZSIsIlJlYWN0LnVzZUNvbnRleHQiLCJpbkN1c3RvbWl6ZXJDb250ZXh0IiwiUmVhY3QudXNlRWZmZWN0IiwiUmVhY3QudXNlU3RhdGUiLCJzZXRWYWx1ZSIsImV4dGVuZENvbXBvbmVudCIsIm1ldGhvZHMiLCJDVVJSRU5UX0lEX1BST1BFUlRZIiwiREVGQVVMVF9JRF9TVFJJTkciLCJnZXRJZCIsInJlc2V0SWRzIiwiY291bnRlciIsInRvT2JqZWN0TWFwIiwiaXRlbXMiLCJpdGVtc18xIiwiaXRlbSIsImtleXMiLCJrZXlzXzEiLCJiYXNlRWxlbWVudEV2ZW50cyIsImJhc2VFbGVtZW50UHJvcGVydGllcyIsImh0bWxFbGVtZW50UHJvcGVydGllcyIsImF1ZGlvUHJvcGVydGllcyIsImFuY2hvclByb3BlcnRpZXMiLCJidXR0b25Qcm9wZXJ0aWVzIiwiaW5wdXRQcm9wZXJ0aWVzIiwidGV4dEFyZWFQcm9wZXJ0aWVzIiwiaW1nUHJvcGVydGllcyIsImRpdlByb3BlcnRpZXMiLCJnZXROYXRpdmVQcm9wcyIsImFsbG93ZWRQcm9wTmFtZXMiLCJleGNsdWRlZFByb3BOYW1lcyIsImlzQXJyYXkiLCJrZXlzXzIiLCJpc05hdGl2ZVByb3AiLCJpbml0aWFsaXplQ29tcG9uZW50UmVmIiwiX29uTW91bnQiLCJfb25VcGRhdGUiLCJfb25Vbm1vdW50IiwiX3NldENvbXBvbmVudFJlZiIsImNvbXBvbmVudFJlZiIsIkRpcmVjdGlvbmFsS2V5Q29kZXMiLCJpc0RpcmVjdGlvbmFsS2V5Q29kZSIsIndoaWNoIiwiSXNGb2N1c1Zpc2libGVDbGFzc05hbWUiLCJJc0ZvY3VzSGlkZGVuQ2xhc3NOYW1lIiwidXBkYXRlQ2xhc3NMaXN0IiwiZW5hYmxlZCIsInNldEZvY3VzVmlzaWJpbGl0eSIsInJlZ2lzdGVyZWRQcm92aWRlcnMiLCJtb3VudENvdW50ZXJzIiwiY2FsbGJhY2tNYXAiLCJzZXRNb3VudENvdW50ZXJzIiwibmV3VmFsdWUiLCJjdXJyVmFsdWUiLCJzZXRDYWxsYmFja01hcCIsIm9uTW91c2VEb3duIiwiX29uTW91c2VEb3duIiwib25Qb2ludGVyRG93biIsIl9vblBvaW50ZXJEb3duIiwib25LZXlEb3duIiwiX29uS2V5RG93biIsIm9uS2V5VXAiLCJfb25LZXlVcCIsIkZvY3VzUmVjdHNDb250ZXh0IiwidXNlRm9jdXNSZWN0cyIsInJvb3RSZWYiLCJGb2N1c1JlY3RzIiwiRm9jdXNSZWN0c1Byb3ZpZGVyIiwicHJvdmlkZXJSZWYiLCJsYXllclJvb3QiLCJpbmhlcml0UGFyZW50Q29udGV4dCIsIlJlYWN0LnVzZU1lbW8iLCJSZWFjdC5GcmFnbWVudCIsIl9sYW5ndWFnZSIsIlNUT1JBR0VfS0VZIiwiZ2V0TGFuZ3VhZ2UiLCJwZXJzaXN0ZW5jZVR5cGUiLCJzYXZlZExhbmd1YWdlIiwibG9jYWxTdG9yYWdlLmdldEl0ZW0iLCJzZXNzaW9uU3RvcmFnZS5nZXRJdGVtIiwibWVyZ2UiLCJfbWVyZ2UiLCJjaXJjdWxhclJlZmVyZW5jZXMiLCJpc0NpcmN1bGFyUmVmZXJlbmNlIiwiaXNJT1MiLCJ0YWdzVG9JZ25vcmUiLCJtb2RhbGl6ZSIsInRhcmdldERvY3VtZW50IiwiYWZmZWN0ZWROb2RlcyIsInNpYmxpbmciLCJhcmlhSGlkZGVuIiwidW5tb2RhbGl6ZSIsIm9yaWdpbmFsVmFsdWUiLCJpc01hY1Jlc3VsdCIsImlzTWFjIiwicmVzZXQiLCJjcmVhdGVDb21wb3NlZFJlbmRlckZ1bmN0aW9uIiwibWVtb2l6ZXIiLCJjb21wb3NlUmVuZGVyRnVuY3Rpb24iLCJEZWZhdWx0RmllbGRzIiwic3R5bGVkIiwiQ29tcG9uZW50IiwiYmFzZVN0eWxlcyIsImdldFByb3BzIiwicHVyZSIsIldyYXBwZWQiLCJSZWFjdC5mb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwiUmVhY3QudXNlUmVmIiwiY3VzdG9taXplZFN0eWxlcyIsImFkZGl0aW9uYWxQcm9wcyIsInByb3BTdHlsZXMiLCJjb25jYXRlbmF0ZWRTdHlsZXMiLCJwdXJlQ29tcG9uZW50IiwiUmVhY3QubWVtbyIsImlzSUUxMSIsImdldFByb3BzV2l0aERlZmF1bHRzIiwicHJvcHNXaXRob3V0RGVmYXVsdHMiLCJjcmVhdGVSZXNvbHZlciIsImxvY2FsIiwiY3JlYXRlTWVyZ2VkUmVmIiwibmV3UmVmcyIsIlJlYWN0LnVzZUxheW91dEVmZmVjdCIsIklDT05fU0VUVElOR19OQU1FIiwiX2ljb25TZXR0aW5ncyIsIm5vcm1hbGl6ZUljb25OYW1lIiwicmVnaXN0ZXJJY29ucyIsImljb25TdWJzZXQiLCJzdWJzZXQiLCJpY29ucyIsImljb25OYW1lIiwibm9ybWFsaXplZEljb25OYW1lIiwiX3dhcm5EdXBsaWNhdGVJY29uIiwicmVnaXN0ZXJJY29uQWxpYXMiLCJtYXBwZWRUb05hbWUiLCJnZXRJY29uIiwiaWNvbiIsIl9taXNzaW5nSWNvbnMiLCJfbWlzc2luZ0ljb25zVGltZXIiLCJ3YXJuaW5nRGVsYXkiLCJtYXhJY29uc0luTWVzc2FnZSIsIm1ha2VTZW1hbnRpY0NvbG9ycyIsImlzSW52ZXJ0ZWQiLCJkZXBDb21tZW50cyIsInNlbWFudGljQ29sb3JzIiwiZnVsbFNlbWFudGljQ29sb3JzIiwiZ2V0U2VtYW50aWNDb2xvcnMiLCJfZml4RGVwcmVjYXRlZFNsb3RzIiwid2hpdGUiLCJibGFjayIsInRoZW1lUHJpbWFyeSIsInRoZW1lRGFyayIsInRoZW1lRGFya2VyIiwidGhlbWVEYXJrQWx0IiwidGhlbWVMaWdodGVyIiwibmV1dHJhbExpZ2h0IiwibmV1dHJhbExpZ2h0ZXIiLCJuZXV0cmFsRGFyayIsIm5ldXRyYWxRdWF0ZXJuYXJ5IiwibmV1dHJhbFF1YXRlcm5hcnlBbHQiLCJuZXV0cmFsUHJpbWFyeSIsIm5ldXRyYWxTZWNvbmRhcnkiLCJuZXV0cmFsU2Vjb25kYXJ5QWx0IiwibmV1dHJhbFRlcnRpYXJ5IiwibmV1dHJhbFRlcnRpYXJ5QWx0IiwibmV1dHJhbExpZ2h0ZXJBbHQiLCJhY2NlbnQiLCJkZXAiLCJtZXJnZVRoZW1lcyIsInBhcnRpYWxUaGVtZSIsIm1lcmdlZFRoZW1lIiwiZm9udFN0eWxlIiwiRGVmYXVsdFBhbGV0dGUiLCJEZXB0aHMiLCJEZWZhdWx0RWZmZWN0cyIsIkRlZmF1bHRTcGFjaW5nIiwiRUFTSU5HX0ZVTkNUSU9OXzEiLCJFQVNJTkdfRlVOQ1RJT05fMiIsIkRVUkFUSU9OXzEiLCJEVVJBVElPTl8yIiwiRFVSQVRJT05fMyIsIkRVUkFUSU9OXzQiLCJGQURFX0lOIiwiRkFERV9PVVQiLCJTTElERV9SSUdIVF9JTjEwIiwiX2NyZWF0ZVNsaWRlSW5YIiwiU0xJREVfUklHSFRfSU4yMCIsIlNMSURFX1JJR0hUX0lONDAiLCJTTElERV9SSUdIVF9JTjQwMCIsIlNMSURFX0xFRlRfSU4xMCIsIlNMSURFX0xFRlRfSU4yMCIsIlNMSURFX0xFRlRfSU40MCIsIlNMSURFX0xFRlRfSU40MDAiLCJTTElERV9VUF9JTjEwIiwiX2NyZWF0ZVNsaWRlSW5ZIiwiU0xJREVfVVBfSU4yMCIsIlNMSURFX0RPV05fSU4xMCIsIlNMSURFX0RPV05fSU4yMCIsIlNMSURFX1JJR0hUX09VVDEwIiwiX2NyZWF0ZVNsaWRlT3V0WCIsIlNMSURFX1JJR0hUX09VVDIwIiwiU0xJREVfUklHSFRfT1VUNDAiLCJTTElERV9SSUdIVF9PVVQ0MDAiLCJTTElERV9MRUZUX09VVDEwIiwiU0xJREVfTEVGVF9PVVQyMCIsIlNMSURFX0xFRlRfT1VUNDAiLCJTTElERV9MRUZUX09VVDQwMCIsIlNMSURFX1VQX09VVDEwIiwiX2NyZWF0ZVNsaWRlT3V0WSIsIlNMSURFX1VQX09VVDIwIiwiU0xJREVfRE9XTl9PVVQxMCIsIlNMSURFX0RPV05fT1VUMjAiLCJTQ0FMRV9VUDEwMCIsIlNDQUxFX0RPV045OCIsIlNDQUxFX0RPV04xMDAiLCJTQ0FMRV9VUDEwMyIsIlJPVEFURTkwIiwiUk9UQVRFX045MCIsIkFuaW1hdGlvblZhcmlhYmxlcyIsIkFuaW1hdGlvblN0eWxlcyIsIl9jcmVhdGVBbmltYXRpb24iLCJhbmltYXRpb25OYW1lIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJhbmltYXRpb25UaW1pbmdGdW5jdGlvbiIsImZyb21YIiwiZnJvbVkiLCJ0b1giLCJ0b1kiLCJMb2NhbGl6ZWRGb250TmFtZXMiLCJMb2NhbGl6ZWRGb250RmFtaWxpZXMiLCJGb250U2l6ZXMiLCJGb250V2VpZ2h0cyIsIkljb25Gb250U2l6ZXMiLCJGb250RmFtaWx5RmFsbGJhY2tzIiwiZGVmYXVsdEZvbnRGYW1pbHkiLCJMYW5ndWFnZVRvRm9udE1hcCIsIl9mb250RmFtaWx5V2l0aEZhbGxiYWNrcyIsImZvbnRGYW1pbHkiLCJfZ2V0TG9jYWxpemVkRm9udEZhbWlseSIsImxhbmd1YWdlIiwibGFuZyIsIl9jcmVhdGVGb250Iiwid2VpZ2h0IiwiY3JlYXRlRm9udFN0eWxlcyIsImxvY2FsZUNvZGUiLCJsb2NhbGl6ZWRGb250IiwiZm9udEZhbWlseVdpdGhGYWxsYmFjayIsImZvbnRTdHlsZXMiLCJEZWZhdWx0QmFzZVVybCIsIkRlZmF1bHRGb250U3R5bGVzIiwiX3JlZ2lzdGVyRm9udEZhY2UiLCJmb250V2VpZ2h0IiwibG9jYWxGb250TmFtZSIsImxvY2FsRm9udFNyYyIsIl9yZWdpc3RlckZvbnRGYWNlU2V0IiwiYmFzZVVybCIsImNkbkZvbGRlciIsImNkbkZvbnROYW1lIiwidXJsQmFzZSIsInJlZ2lzdGVyRGVmYXVsdEZvbnRGYWNlcyIsImZvbnRVcmwiLCJfZ2V0Rm9udEJhc2VVcmwiLCJjcmVhdGVUaGVtZSIsImJhc2VUaGVtZSIsIkhpZ2hDb250cmFzdFNlbGVjdG9yIiwiSGlnaENvbnRyYXN0U2VsZWN0b3JXaGl0ZSIsIlNjcmVlbldpZHRoTWluTWVkaXVtIiwiU2NyZWVuV2lkdGhNaW5MYXJnZSIsIlNjcmVlbldpZHRoTWF4U21hbGwiLCJTY3JlZW5XaWR0aE1heE1lZGl1bSIsImdldFNjcmVlblNlbGVjdG9yIiwibWluIiwibWF4IiwibWluU2VsZWN0b3IiLCJtYXhTZWxlY3RvciIsImdldEhpZ2hDb250cmFzdE5vQWRqdXN0U3R5bGUiLCJaSW5kZXhlcyIsImdldEZvY3VzU3R5bGUiLCJpbnNldE9yT3B0aW9ucyIsInBvc2l0aW9uIiwiaGlnaENvbnRyYXN0U3R5bGUiLCJib3JkZXJDb2xvciIsIm91dGxpbmVDb2xvciIsImlzRm9jdXNlZE9ubHkiLCJib3JkZXJSYWRpdXMiLCJfZ2V0Rm9jdXNTdHlsZUludGVybmFsIiwiaW5zZXQiLCJfZyIsIl9oIiwicG9pbnRlckV2ZW50cyIsImZvY3VzQ2xlYXIiLCJnZXRJbnB1dEZvY3VzU3R5bGUiLCJib3JkZXJUeXBlIiwiYm9yZGVyUG9zaXRpb24iLCJpc0JvcmRlckJvdHRvbSIsImhpZGRlbkNvbnRlbnRTdHlsZSIsIl9nZXRHbG9iYWxDbGFzc05hbWVzIiwiY2xhc3NOYW1lcyIsImRpc2FibGVHbG9iYWxDbGFzc05hbWVzIiwic3R5bGVTaGVldCIsImFjYyIsImdldEdsb2JhbENsYXNzTmFtZXMiLCJfcm9vdCIsIl9zdHlsZU5vbmNlIiwiX3RoZW1lU3RhdGUiLCJpbml0aWFsaXplVGhlbWVTdGF0ZSIsImFwcGx5VGhlbWFibGVTdHlsZXMiLCJzdHlsZXNBcnJheSIsInN0eWxlUmVjb3JkIiwicmVzb2x2ZVRoZW1hYmxlQXJyYXkiLCJyZWdpc3RlclN0eWxlcyIsImxvYWRUaGVtZSIsInJlbG9hZFN0eWxlcyIsImNsZWFyU3R5bGVzIiwib3B0aW9uIiwiY2xlYXJTdHlsZXNJbnRlcm5hbCIsInJlY29yZHMiLCJ0aGVtYWJsZVN0eWxlcyIsInNwbGl0U3R5bGVBcnJheSIsInRoZW1hYmxlIiwicmVzb2x2ZWRBcnJheSIsInRoZW1lU2xvdCIsInRoZW1lZFZhbHVlIiwic3R5bGVBcnJheSIsInN0eWxlU3RyaW5nIiwiX3RoZW1lIiwiX29uVGhlbWVDaGFuZ2VDYWxsYmFja3MiLCJUaGVtZVNldHRpbmdOYW1lIiwiaW5pdGlhbGl6ZVRoZW1lSW5DdXN0b21pemF0aW9ucyIsImdldFRoZW1lIiwibGVnYWN5TG9hZFRoZW1lIiwiX2xvYWRGb250cyIsImxpbmVzIiwiZm9udE5hbWUiLCJub3JtYWxpemUiLCJnZXRQbGFjZWhvbGRlclN0eWxlcyIsIkFuaW1hdGlvbkNsYXNzTmFtZXMiLCJGTFVFTlRfQ0ROX0JBU0VfVVJMIiwiRGlyZWN0aW9uYWxIaW50IiwiUmVjdGFuZ2xlRWRnZSIsIlBvc2l0aW9uIiwiX2NyZWF0ZVBvc2l0aW9uRGF0YSIsInRhcmdldEVkZ2UiLCJhbGlnbm1lbnRFZGdlIiwiaXNBdXRvIiwiRGlyZWN0aW9uYWxEaWN0aW9uYXJ5IiwiX2lzUmVjdGFuZ2xlV2l0aGluQm91bmRzIiwiYm91bmRpbmdSZWN0IiwiX2dldE91dE9mQm91bmRzRWRnZXMiLCJvdXRPZkJvdW5kcyIsIl9nZXRFZGdlVmFsdWUiLCJlZGdlIiwiX3NldEVkZ2VWYWx1ZSIsIl9nZXRDZW50ZXJWYWx1ZSIsImVkZ2VzIiwiX2dldEZsYW5raW5nRWRnZXMiLCJfZ2V0UmVsYXRpdmVFZGdlVmFsdWUiLCJfZ2V0UmVsYXRpdmVSZWN0RWRnZVZhbHVlIiwiX2dldFJlbGF0aXZlRWRnZURpZmZlcmVuY2UiLCJob3N0UmVjdCIsImVkZ2VEaWZmZXJlbmNlIiwiX21vdmVFZGdlIiwibWFpbnRhaW5TaXplIiwiZGlmZmVyZW5jZSIsInJldHVyblJlY3QiLCJfYWxpZ25FZGdlcyIsImdhcCIsIl9hbGlnbk9wcG9zaXRlRWRnZXMiLCJvcHBvc2l0ZUVkZ2UiLCJhZGp1c3RlZEdhcCIsIl9pc0VkZ2VJbkJvdW5kcyIsImJvdW5kcyIsImFkanVzdGVkUmVjdFZhbHVlIiwiX2dldE91dE9mQm91bmRzRGVncmVlIiwiYnJlYWtpbmdFZGdlcyIsInRvdGFsIiwiYnJlYWtpbmdFZGdlc18xIiwiX2ZsaXBUb0ZpdCIsImJvdW5kaW5nIiwicG9zaXRpb25EYXRhIiwiZGlyZWN0aW9ucyIsImN1cnJlbnRFc3RpbWF0ZSIsImN1cnJlbnRFZGdlIiwiY3VycmVudEFsaWdubWVudCIsIm9vYkRlZ3JlZSIsImJlc3RFZGdlIiwiYmVzdEFsaWdubWVudCIsImN1cnJlbnRPT0JEZWdyZWUiLCJfZXN0aW1hdGVQb3NpdGlvbiIsIl9mbGlwQWxpZ25tZW50RWRnZSIsImVsZW1lbnRFc3RpbWF0ZSIsImNvdmVyVGFyZ2V0IiwiZWxlbWVudFJlY3RhbmdsZSIsIm5ld0VzdGltYXRlIiwiX2FkanVzdEZpdFdpdGhpbkJvdW5kcyIsImRpcmVjdGlvbmFsSGludEZpeGVkIiwiYWxpZ25UYXJnZXRFZGdlIiwiZml4ZWRFZGdlIiwiZmxpcHBlZEVsZW1lbnRFc3RpbWF0ZSIsIl9hbGlnbk91dE9mQm91bmRzRWRnZXMiLCJvdXRPZkJvdW5kc0VkZ2VzIiwicHJlc2VydmVFZGdlIiwib3V0T2ZCb3VuZHNFZGdlc18xIiwiZGlyZWN0aW9uIiwiZWRnZUF0dGVtcHQiLCJpbkJvdW5kcyIsIl9jZW50ZXJFZGdlVG9Qb2ludCIsInBvaW50IiwicG9zaXRpdmVFZGdlIiwiZWxlbWVudE1pZGRsZSIsImRpc3RhbmNlVG9NaWRkbGUiLCJlbGVtZW50VG9Qb3NpdGlvbiIsImVzdGltYXRlZEVsZW1lbnRQb3NpdGlvbiIsImVsZW1lbnRFZGdlIiwidGFyZ2V0TWlkZGxlUG9pbnQiLCJfZmluYWxpemVSZXR1cm5FZGdlIiwicmV0dXJuRWRnZSIsIl9pc0VkZ2VPbkJvdW5kcyIsIl9maW5hbGl6ZUVsZW1lbnRQb3NpdGlvbiIsImhvc3RFbGVtZW50IiwiZG9Ob3RGaW5hbGl6ZVJldHVybkVkZ2UiLCJmb3JjZVdpdGhpbkJvdW5kcyIsInJldHVyblZhbHVlIiwiX2dldFJlY3RhbmdsZUZyb21FbGVtZW50IiwiZ2V0T3Bwb3NpdGVFZGdlIiwiX2NhbGN1bGF0ZUFjdHVhbEJlYWtXaWR0aEluUGl4ZWxzIiwiYmVha1dpZHRoIiwiX2dldFBvc2l0aW9uRGF0YSIsImRpcmVjdGlvbmFsSGludCIsImRpcmVjdGlvbmFsSGludEZvclJUTCIsInByZXZpb3VzUG9zaXRpb25zIiwicG9zaXRpb25JbmZvcm1hdGlvbiIsIl9nZXRBbGlnbm1lbnREYXRhIiwiZ2V0Q2xvc2VzdEVkZ2UiLCJ0YXJnZXRDZW50ZXIiLCJib3VuZGluZ0NlbnRlciIsIm5lZ2F0aXZlRWRnZSIsIl9wb3NpdGlvbkVsZW1lbnRXaXRoaW5Cb3VuZHMiLCJfZmluYWxpemVCZWFrUG9zaXRpb24iLCJlbGVtZW50UG9zaXRpb24iLCJwb3NpdGlvbmVkQmVhayIsImFjdHVhbEVsZW1lbnQiLCJiZWFrRWRnZURpZmZlcmVuY2UiLCJzaG93QmVhayIsIl9wb3NpdGlvbkJlYWsiLCJiZWFrVGFyZ2V0UG9pbnQiLCJlbGVtZW50Qm91bmRzIiwiYmVha1Bvc2l0aW9uIiwiY2xpZW50UmVjdCIsIl9nZXRSZWN0YW5nbGVGcm9tSVJlY3QiLCJfZ2V0VGFyZ2V0UmVjdCIsInRhcmdldFJlY3RhbmdsZSIsInJlY3RPclBvaW50IiwidG9wXzEiLCJvdXRPZkJvdW5kc18xIiwiX3Bvc2l0aW9uRWxlbWVudFJlbGF0aXZlIiwidGFyZ2V0UmVjdCIsInBvc2l0aW9uZWRFbGVtZW50IiwiX2ZpbmFsaXplUG9zaXRpb25EYXRhIiwiZmluYWxpemVkRWxlbWVudCIsIl9wb3NpdGlvbkNhbGxvdXQiLCJjYWxsb3V0IiwicG9zaXRpb25Qcm9wcyIsImJlYWtQb3NpdGlvbmVkIiwiZmluYWxpemVkQmVha1Bvc2l0aW9uIiwiX3Bvc2l0aW9uQ2FyZCIsInBvc2l0aW9uQ2FsbG91dCIsInBvc2l0aW9uQ2FyZCIsIl9nZXRCb3VuZHNGcm9tVGFyZ2V0V2luZG93IiwidGFyZ2V0V2luZG93Iiwic2VnbWVudHNfMSIsImdldEJvdW5kc0Zyb21UYXJnZXRXaW5kb3ciLCJ1c2VBc3luYyIsImFzeW5jUmVmIiwidXNlQ29uc3QiLCJpbml0aWFsVmFsdWUiLCJ1c2VCb29sZWFuIiwiaW5pdGlhbFN0YXRlIiwic2V0VHJ1ZSIsInNldEZhbHNlIiwidG9nZ2xlIiwidXNlRXZlbnRDYWxsYmFjayIsImNhbGxiYWNrUmVmIiwidXNlSWQiLCJwcm92aWRlZElkIiwidXNlTWVyZ2VkUmVmcyIsInJlZnMiLCJtZXJnZWRDYWxsYmFjayIsIlJlYWN0LnVzZUNhbGxiYWNrIiwicmVmc18xIiwidXNlT25FdmVudCIsImRpc3Bvc2UiLCJ1c2VQcmV2aW91cyIsInVzZVNldFRpbWVvdXQiLCJ0aW1lb3V0SWRzIiwiV2luZG93Q29udGV4dCIsInVzZVdpbmRvdyIsInVzZURvY3VtZW50IiwidXNlVGFyZ2V0IiwicHJldmlvdXNUYXJnZXRQcm9wIiwidGFyZ2V0UmVmIiwiY3VycmVudERvYyIsInVzZVVubW91bnQiLCJ1bm1vdW50UmVmIiwidXNlU2Nyb2xsYmFyQXN5bmMiLCJyb290IiwiYXN5bmMiLCJuZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyU3RhdGUiLCJzZXROZWVkc1ZlcnRpY2FsU2Nyb2xsQmFyIiwibmVlZHNWZXJ0aWNhbFNjcm9sbEJhciIsInJvb3RIZWlnaHQiLCJmaXJzdENoaWxkSGVpZ2h0IiwiZGVmYXVsdEZvY3VzUmVzdG9yZXIiLCJvcmlnaW5hbEVsZW1lbnQiLCJjb250YWluc0ZvY3VzIiwidXNlUmVzdG9yZUZvY3VzIiwib25SZXN0b3JlRm9jdXMiLCJvcmlnaW5hbEZvY3VzZWRFbGVtZW50IiwidXNlSGlkZVNpYmxpbmdOb2RlcyIsInNob3VsZEhpZGVTaWJsaW5ncyIsIlBvcHVwIiwibWVyZ2VkUm9vdFJlZiIsInJvbGUiLCJhcmlhTGFiZWwiLCJhcmlhTGFiZWxsZWRCeSIsImFyaWFEZXNjcmliZWRCeSIsIm9uRGlzbWlzcyIsIkNPTVBPTkVOVF9OQU1FIiwiQU5JTUFUSU9OUyIsIkJFQUtfT1JJR0lOX1BPU0lUSU9OIiwiT0ZGX1NDUkVFTl9TVFlMRSIsIkFSSUFfUk9MRV9BVFRSSUJVVEVTIiwiREVGQVVMVF9QUk9QUyIsInVzZUJvdW5kcyIsIm1pblBhZ2VQYWRkaW5nIiwidGFyZ2V0V2luZG93UmVzaXplZCIsInNldFRhcmdldFdpbmRvd1Jlc2l6ZWQiLCJjYWNoZWRCb3VuZHMiLCJnZXRCb3VuZHMiLCJjdXJyZW50Qm91bmRzIiwidXNlTWF4SGVpZ2h0IiwicG9zaXRpb25zIiwiY2FsbG91dE1heEhlaWdodCIsImZpbmFsSGVpZ2h0IiwiaGlkZGVuIiwibWF4SGVpZ2h0Iiwic2V0TWF4SGVpZ2h0IiwidG9wQm91bmRzIiwiYm90dG9tQm91bmRzIiwiY2FsY3VsYXRlZEhlaWdodCIsInVzZVBvc2l0aW9ucyIsImNhbGxvdXRFbGVtZW50Iiwic2V0UG9zaXRpb25zIiwicG9zaXRpb25BdHRlbXB0cyIsInByZXZpb3VzVGFyZ2V0Iiwib25Qb3NpdGlvbmVkIiwidGltZXJJZF8xIiwiZHVwZUNhbGxvdXRFbGVtZW50IiwibmV3UG9zaXRpb25zIiwiYXJlUG9zaXRpb25zRXF1YWwiLCJ1c2VBdXRvRm9jdXMiLCJzZXRJbml0aWFsRm9jdXMiLCJoYXNQb3NpdGlvbnMiLCJ0aW1lcklkXzIiLCJ1c2VEaXNtaXNzSGFuZGxlcnMiLCJwcmV2ZW50RGlzbWlzc09uU2Nyb2xsIiwicHJldmVudERpc21pc3NPblJlc2l6ZSIsInByZXZlbnREaXNtaXNzT25Mb3N0Rm9jdXMiLCJkaXNtaXNzT25UYXJnZXRDbGljayIsInNob3VsZERpc21pc3NPbldpbmRvd0ZvY3VzIiwicHJldmVudERpc21pc3NPbkV2ZW50IiwiaXNNb3VzZURvd25PblBvcHVwIiwibW91c2VEb3duSGFuZGxlcnMiLCJwb3NpdGlvbnNFeGlzdHMiLCJkaXNtaXNzT25TY3JvbGwiLCJkaXNtaXNzT25DbGlja09yU2Nyb2xsIiwiZGlzbWlzc09uUmVzaXplIiwiZGlzbWlzc09uTG9zdEZvY3VzIiwiZXZlbnRQYXRocyIsImlzRXZlbnRUYXJnZXRPdXRzaWRlQ2FsbG91dCIsImRpc21pc3NPblRhcmdldFdpbmRvd0JsdXIiLCJkaXNwb3NhYmxlc1Byb21pc2UiLCJyZXNvbHZlIiwiZGlzcG9zYWJsZXNfMSIsIkNhbGxvdXRDb250ZW50QmFzZSIsImlzQmVha1Zpc2libGUiLCJjYWxsb3V0V2lkdGgiLCJjYWxsb3V0TWF4V2lkdGgiLCJjYWxsb3V0TWluV2lkdGgiLCJkb05vdExheWVyIiwiaGlkZU92ZXJmbG93IiwiYmFja2dyb3VuZENvbG9yIiwib25TY3JvbGwiLCJzaG91bGRSZXN0b3JlRm9jdXMiLCJvbkxheWVyTW91bnRlZCIsInBvcHVwUHJvcHMiLCJzZXRDYWxsb3V0RWxlbWVudCIsImNhbGxvdXRDYWxsYmFjayIsImNhbGxvdXRFbCIsIm1vdXNlRG93bk9uUG9wdXAiLCJtb3VzZVVwT25Qb3B1cCIsImlzRm9yY2VkSW5Cb3VuZHMiLCJjc3NQb3NpdGlvbnMiLCJvdmVyZmxvd1lIaWRkZW4iLCJiZWFrVmlzaWJsZSIsIm92ZXJmbG93U3R5bGUiLCJ2aXNpYmlsaXR5U3R5bGUiLCJnZXRCZWFrUG9zaXRpb24iLCJwcmV2aW91c1Byb3BzIiwibmV4dFByb3BzIiwiYmVha1Bvc2l0aW9uU3R5bGUiLCJwcmV2RWxlbWVudFBvc2l0aW9ucyIsIm5ld0VsZW1lbnRQb3NpdGlvbiIsImNvbXBhcmVQb3NpdGlvbnMiLCJuZXdFbGVtZW50UG9zaXRpb25zIiwib2xkUG9zaXRpb25FZGdlIiwibmV3UG9zaXRpb25FZGdlIiwiZ2V0QmVha1N0eWxlIiwiR2xvYmFsQ2xhc3NOYW1lcyIsImdldFN0eWxlcyIsImVmZmVjdHMiLCJDYWxsb3V0Q29udGVudCIsIlBvcnRhbENvbXBhdENvbnRleHQiLCJwb3J0YWxDb21wYXRDb250ZXh0RGVmYXVsdFZhbHVlIiwidXNlUG9ydGFsQ29tcGF0IiwiX1JlYWN0X3VzZUNvbnRleHQiLCJnZXRGYWJyaWNUaGVtZSIsImdldERpciIsImRpciIsImNvbnRleHREaXIiLCJwYWdlRGlyIiwiY29tcG9uZW50RGlyIiwiRmFicmljQmFzZSIsImFwcGx5VGhlbWUiLCJhcHBseVRoZW1lVG9Cb2R5IiwidXNlQXBwbHlUaGVtZVRvQm9keSIsInVzZVJlbmRlcmVkQ29udGVudCIsIlJvb3QiLCJkaXZQcm9wcyIsInJvb3REaXIiLCJuZWVkc1RoZW1lIiwicmVuZGVyZWRDb250ZW50IiwiYm9keVRoZW1lZCIsImN1cnJlbnREb2NfMSIsImluaGVyaXRGb250IiwicHJldmVudEJsYW5rZXRGb250SW5oZXJpdGFuY2UiLCJGYWJyaWMiLCJfbGF5ZXJzQnlIb3N0SWQiLCJfbGF5ZXJIb3N0c0J5SWQiLCJkZWZhdWx0SG9zdElkIiwiX2RlZmF1bHRIb3N0U2VsZWN0b3IiLCJyZWdpc3RlckxheWVyIiwiaG9zdElkIiwibGF5ZXJIb3N0cyIsImxheWVySG9zdHNfMSIsImxheWVySG9zdCIsInVucmVnaXN0ZXJMYXllciIsImxheWVycyIsImlkeCIsImxheWVySG9zdHNfMiIsImdldExheWVySG9zdCIsImNyZWF0ZURlZmF1bHRMYXllckhvc3QiLCJob3N0IiwiZ2V0RGVmYXVsdFRhcmdldCIsImdldEZvY3VzVmlzaWJpbGl0eSIsIkxheWVyQmFzZSIsInJlZ2lzdGVyUG9ydGFsRWwiLCJtZXJnZWRSZWYiLCJsYXllclJlZiIsImZhYnJpY0VsZW1lbnRSZWYiLCJmb2N1c0NvbnRleHQiLCJuZWVkUmFpc2VMYXllck1vdW50Iiwic2V0TmVlZFJhaXNlTGF5ZXJNb3VudCIsImZvY3VzUmVjdHNSZWYiLCJpc0ZvY3VzVmlzaWJsZSIsImV2ZW50QnViYmxpbmdFbmFibGVkIiwiZmFicmljUHJvcHMiLCJpbnNlcnRGaXJzdCIsIm9uTGF5ZXJEaWRNb3VudCIsIm9uTGF5ZXJXaWxsVW5tb3VudCIsImZhYnJpY1JlZiIsImdldEhvc3QiLCJkZWZhdWx0SG9zdFNlbGVjdG9yIiwicmVtb3ZlTGF5ZXJFbGVtZW50IiwiY3JlYXRlTGF5ZXJFbGVtZW50IiwidW5yZWdpc3RlclBvcnRhbEVsIiwiUmVhY3RET00uY3JlYXRlUG9ydGFsIiwiZ2V0RmlsdGVyZWRFdmVudHMiLCJmaWx0ZXJlZEV2ZW50UHJvcHMiLCJvbkZpbHRlckV2ZW50IiwiaXNOb3RIb3N0IiwiTGF5ZXIiLCJDYWxsb3V0IiwibGF5ZXJQcm9wcyIsImNvbnRlbnQiLCJ1c2VDb21wb25lbnRSZWYiLCJwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQiLCJmb2N1c0ZUWiIsIlJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUiLCJGb2N1c1RyYXBab25lIiwiZmlyc3RCdW1wZXIiLCJsYXN0QnVtcGVyIiwiaXNGaXJzdFJlbmRlciIsImludGVybmFsU3RhdGUiLCJkaXNhYmxlZCIsImRpc2FibGVGaXJzdEZvY3VzIiwiZm9yY2VGb2N1c0luc2lkZVRyYXAiLCJmb2N1c1ByZXZpb3VzbHlGb2N1c2VkSW5uZXJFbGVtZW50IiwiZmlyc3RGb2N1c2FibGVTZWxlY3RvciIsImZpcnN0Rm9jdXNhYmxlVGFyZ2V0IiwiZGlzYWJsZVJlc3RvcmVGb2N1cyIsImlzQ2xpY2thYmxlT3V0c2lkZUZvY3VzVHJhcCIsImVuYWJsZUFyaWFIaWRkZW5TaWJsaW5ncyIsImJ1bXBlclByb3BzIiwiZm9jdXNFbGVtZW50QXN5bmMiLCJwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnRJblRyYXBab25lIiwiZmlyc3RGb2N1c2FibGVDaGlsZCIsImZvY3VzU2VsZWN0b3IiLCJmb2N1c0J1bXBlciIsImlzRmlyc3RCdW1wZXIiLCJuZXh0Rm9jdXNhYmxlIiwib25Sb290Qmx1ckNhcHR1cmUiLCJyZWxhdGVkVGFyZ2V0Iiwib25Sb290Rm9jdXNDYXB0dXJlIiwicmV0dXJuRm9jdXNUb0luaXRpYXRvciIsImVsZW1lbnRUb0ZvY3VzT25EaXNtaXNzIiwiYWN0aXZlRWxlbWVudCIsImZvcmNlRm9jdXNPckNsaWNrSW5UcmFwIiwiZGlzcG9zYWJsZXMiLCJJY29uVHlwZSIsIkltYWdlRml0IiwiSW1hZ2VDb3ZlclN0eWxlIiwiSW1hZ2VMb2FkU3RhdGUiLCJTVkdfUkVHRVgiLCJLRVlfUFJFRklYIiwidXNlTG9hZFN0YXRlIiwiaW1hZ2VFbGVtZW50Iiwib25Mb2FkaW5nU3RhdGVDaGFuZ2UiLCJvbkxvYWQiLCJsb2FkU3RhdGUiLCJzZXRMb2FkU3RhdGUiLCJpc0xvYWRlZCIsIm9uSW1hZ2VMb2FkZWQiLCJvbkltYWdlRXJyb3IiLCJJbWFnZUJhc2UiLCJmcmFtZUVsZW1lbnQiLCJpbWFnZVByb3BzIiwiYWx0Iiwic2hvdWxkRmFkZUluIiwic2hvdWxkU3RhcnRWaXNpYmxlIiwiaW1hZ2VGaXQiLCJtYXhpbWl6ZUZyYW1lIiwibG9hZGluZyIsImNvdmVyU3R5bGUiLCJ1c2VDb3ZlclN0eWxlIiwicHJldmlvdXNMb2FkU3RhdGUiLCJjb21wdXRlQ292ZXJTdHlsZSIsImRlc2lyZWRSYXRpbyIsIm5hdHVyYWxSYXRpbyIsImlzTGFuZHNjYXBlIiwiaXNDZW50ZXIiLCJpc0NvbnRhaW4iLCJpc0NvdmVyIiwiaXNDZW50ZXJDb250YWluIiwiaXNDZW50ZXJDb3ZlciIsImlzTm9uZSIsImlzRXJyb3IiLCJpc05vdEltYWdlRml0IiwiSW1hZ2VGaXRTdHlsZXMiLCJzdXBwb3J0c09iamVjdEZpdCIsImZhbGxiYWNrT2JqZWN0Rml0U3R5bGVzIiwiTVNfSUNPTiIsImljb25DbGFzc05hbWUiLCJpc1BsYWNlaG9sZGVyIiwiaXNJbWFnZSIsImdldEljb25Db250ZW50IiwiRm9udEljb24iLCJpY29uQ29udGVudCIsIm1lcmdlSW1hZ2VQcm9wcyIsIm5hdGl2ZVByb3BzIiwiYWNjZXNzaWJsZU5hbWUiLCJjb250YWluZXJQcm9wcyIsImZpbmFsQ2hpbGRyZW4iLCJSZWFjdC5jbG9uZUVsZW1lbnQiLCJpbWFnZUVycm9yQXMiLCJpY29uQ29udGVudENoaWxkcmVuIiwiUm9vdFR5cGUiLCJpbWFnZUxvYWRFcnJvciIsIkltYWdlVHlwZSIsImhhc05hbWUiLCJmaW5hbEljb25Db250ZW50Q2hpbGRyZW4iLCJJY29uIiwiSW1hZ2VJY29uIiwiYWx0VGV4dCIsImltYWdlTmFtZVByb3BzIiwiRm9jdXNab25lVGFiYmFibGVFbGVtZW50cyIsIkZvY3VzWm9uZURpcmVjdGlvbiIsIklTX0VOVEVSX0RJU0FCTEVEX0FUVFJJQlVURSIsIlRBQklOREVYIiwiTk9fVkVSVElDQUxfV1JBUCIsIk5PX0hPUklaT05UQUxfV1JBUCIsIkxBUkdFX0RJU1RBTkNFX0ZST01fQ0VOVEVSIiwiTEFSR0VfTkVHQVRJVkVfRElTVEFOQ0VfRlJPTV9DRU5URVIiLCJmb2N1c1pvbmVTdHlsZXMiLCJmb2N1c1pvbmVDbGFzcyIsInJhaXNlQ2xpY2tGcm9tS2V5Ym9hcmRFdmVudCIsImdldFJvb3RDbGFzcyIsIl9hbGxJbnN0YW5jZXMiLCJfb3V0ZXJab25lcyIsIkFMTE9XRURfSU5QVVRfVFlQRVMiLCJBTExPV19WSVJUVUFMX0VMRU1FTlRTIiwiRm9jdXNab25lIiwiUmVhY3QuY3JlYXRlUmVmIiwib25BY3RpdmVFbGVtZW50Q2hhbmdlZCIsImRvTm90QWxsb3dGb2N1c0V2ZW50VG9Qcm9wYWdhdGUiLCJzdG9wRm9jdXNQcm9wYWdhdGlvbiIsIm9uRm9jdXNOb3RpZmljYXRpb24iLCJvbkZvY3VzIiwic2hvdWxkRm9jdXNJbm5lckVsZW1lbnRXaGVuUmVjZWl2ZWRGb2N1cyIsImRlZmF1bHRUYWJiYWJsZUVsZW1lbnQiLCJpc0ltbWVkaWF0ZURlc2NlbmRhbnQiLCJuZXdBY3RpdmVFbGVtZW50IiwicGFyZW50RWxlbWVudCIsIm1heWJlRWxlbWVudFRvRm9jdXMiLCJpbml0aWFsRWxlbWVudEZvY3VzZWQiLCJpc0lubmVyWm9uZUtleXN0cm9rZSIsInBhZ2luZ1N1cHBvcnREaXNhYmxlZCIsInNob3VsZEVudGVySW5uZXJab25lIiwiaW5uZXJab25lIiwiZm9jdXNDaGFuZ2VkIiwidGFiV2l0aERpcmVjdGlvbiIsImZpcnN0Q2hpbGQiLCJsYXN0Q2hpbGQiLCJpc0ZvcndhcmQiLCJhY3RpdmVSZWN0IiwibGVmdEFsaWdubWVudCIsInRhcmdldFJlY3RUb3AiLCJhY3RpdmVSZWN0Qm90dG9tIiwidGFyZ2V0UmVjdEJvdHRvbSIsImFjdGl2ZVJlY3RUb3AiLCJpc1ZhbGlkQ2FuZGlkYXRlT25wYWdpbmdEb3duIiwiaXNWYWxpZENhbmRpZGF0ZU9ucGFnaW5nVXAiLCJzaG91bGRSYWlzZUNsaWNrc0ZhbGxiYWNrIiwiem9uZSIsImVsZW1lbnRUb0ZvY3VzIiwidGFnIiwiZWxlbWVudFR5cGUiLCJyb290UHJvcHMiLCJUYWciLCJmb3JjZUludG9GaXJzdEVsZW1lbnQiLCJvd25lclpvbmVFbGVtZW50Iiwib3duZXJab25lIiwiZm9yY2VBbGlnbm1lbnQiLCJvbkJlZm9yZUZvY3VzIiwic2hvdWxkUmVjZWl2ZUZvY3VzIiwiZm9jdXNlZEVsZW1lbnQiLCJpc1BhcmtlZCIsInByZXZpb3VzQWN0aXZlRWxlbWVudCIsImdldERpc3RhbmNlRnJvbUNlbnRlciIsInVzZURlZmF1bHRXcmFwIiwiY2FuZGlkYXRlRGlzdGFuY2UiLCJjYW5kaWRhdGVFbGVtZW50IiwiY2hhbmdlZEZvY3VzIiwiaXNCaWRpcmVjdGlvbmFsIiwiZWxlbWVudERpc3RhbmNlIiwidGFyZ2V0VG9wIiwiZGlzdGFuY2UiLCJzaG91bGRXcmFwIiwidG9wQm90dG9tQ29tcGFyaXNvbiIsInRhcmdldEJvdHRvbSIsInBhZ2VzaXplIiwiaXNFbGVtZW50UGFzc2VkUGFnZVNpemVPblBhZ2luZ0Rvd24iLCJpc0VsZW1lbnRQYXNzZWRQYWdlU2l6ZU9uUGFnaW5nVXAiLCJpc0hvcml6b250YWwiLCJpc1ZlcnRpY2FsIiwiY2hpbGROb2RlcyIsImNoaWxkSW5kZXgiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsImlzUmFuZ2VTZWxlY3RlZCIsImlucHV0VmFsdWUiLCJpc1JlYWRvbmx5IiwiQ29udGV4dHVhbE1lbnVJdGVtVHlwZSIsImdldElzQ2hlY2tlZCIsImhhc1N1Ym1lbnUiLCJpc0l0ZW1EaXNhYmxlZCIsImdldE1lbnVJdGVtQXJpYVJvbGUiLCJpc0NoZWNrZWQiLCJjYW5DaGVjayIsImRlZmF1bHRJY29uUmVuZGVyZXIiLCJpY29uUHJvcHMiLCJyZW5kZXJJdGVtSWNvbiIsImhhc0ljb25zIiwicmVuZGVyQ2hlY2tNYXJrSWNvbiIsIm9uQ2hlY2ttYXJrQ2xpY2siLCJpc0l0ZW1DaGVja2VkIiwicmVuZGVySXRlbU5hbWUiLCJyZW5kZXJTZWNvbmRhcnlUZXh0IiwicmVuZGVyU3ViTWVudUljb24iLCJDb250ZXh0dWFsTWVudUl0ZW1CYXNlIiwib3BlblN1Yk1lbnUiLCJnZXRTdWJtZW51VGFyZ2V0Iiwic3VibWVudVRhcmdldCIsImRpc21pc3NTdWJNZW51IiwiZGlzbWlzc0FsbCIsImRpc21pc3NNZW51IiwicmVuZGVyQ29udGVudCIsImRlZmF1bHRSZW5kZXJzIiwiZ2V0RGl2aWRlckNsYXNzTmFtZXMiLCJDT05URVhUVUFMX01FTlVfSVRFTV9IRUlHSFQiLCJNZWRpdW1TY3JlZW5TZWxlY3RvciIsImdldE1lbnVJdGVtU3R5bGVzIiwiZm9udHMiLCJwYWxldHRlIiwiQ29udGV4dHVhbE1lbnVJdGVtQmFja2dyb3VuZEhvdmVyQ29sb3IiLCJDb250ZXh0dWFsTWVudUl0ZW1UZXh0SG92ZXJDb2xvciIsIkNvbnRleHR1YWxNZW51SXRlbUJhY2tncm91bmRTZWxlY3RlZENvbG9yIiwiQ29udGV4dHVhbE1lbnVJdGVtRGl2aWRlckNvbG9yIiwibWVudUl0ZW1TdHlsZXMiLCJDT05URVhUVUFMX1NQTElUX01FTlVfTUlOV0lEVEgiLCJnZXRTcGxpdEJ1dHRvblZlcnRpY2FsRGl2aWRlckNsYXNzTmFtZXMiLCJnZXRJdGVtQ2xhc3NOYW1lcyIsImV4cGFuZGVkIiwiY2hlY2tlZCIsImlzQW5jaG9yTGluayIsImtub3duSWNvbiIsIml0ZW1DbGFzc05hbWUiLCJkaXZpZGVyQ2xhc3NOYW1lIiwic3ViTWVudUNsYXNzTmFtZSIsInByaW1hcnlEaXNhYmxlZCIsImdldEl0ZW1TdHlsZXMiLCJDb250ZXh0dWFsTWVudUl0ZW0iLCJDb250ZXh0dWFsTWVudUl0ZW1XcmFwcGVyIiwib25JdGVtTW91c2VFbnRlciIsIm9uSXRlbUNsaWNrQmFzZSIsIm9uSXRlbU1vdXNlTGVhdmUiLCJvbkl0ZW1LZXlEb3duIiwib25JdGVtTW91c2VNb3ZlIiwiS1RQX1BSRUZJWCIsIktUUF9TRVBBUkFUT1IiLCJEQVRBS1RQX1RBUkdFVCIsIkRBVEFLVFBfRVhFQ1VURV9UQVJHRVQiLCJLVFBfTEFZRVJfSUQiLCJLZXl0aXBFdmVudHMiLCJLZXl0aXBNYW5hZ2VyIiwiZGVsYXlVcGRhdGluZ0tleXRpcENoYW5nZSIsImtleXRpcFByb3BzIiwicGVyc2lzdGVkIiwidW5pcXVlS2V5dGlwIiwiZXZlbnRfMSIsInVuaXF1ZUlEIiwibmV3S2V5dGlwUHJvcHMiLCJvbGRLZXlUaXAiLCJrZXl0aXBUb1JlbW92ZSIsImZ1bGxTZXF1ZW5jZSIsInBhcmVudEtleXRpcCIsIm92ZXJmbG93QnV0dG9uU2VxdWVuY2VzIiwia2V5dGlwU2VxdWVuY2VzIiwic2VxdWVuY2VzVG9JRCIsImtleVNlcXVlbmNlcyIsInByZXZWYWx1ZSIsImtleVNlcXVlbmNlIiwibWVyZ2VPdmVyZmxvd3MiLCJvdmVyZmxvd0tleVNlcXVlbmNlcyIsIm92ZXJmbG93U2VxdWVuY2VMZW4iLCJvdmVyZmxvd1NlcXVlbmNlIiwibmV3S2V5U2VxdWVuY2VzIiwiZ2V0QXJpYURlc2NyaWJlZEJ5IiwiZGVzY3JpYmVkYnkiLCJ1c2VLZXl0aXBEYXRhIiwidW5pcXVlSWQiLCJrZXl0aXBNYW5hZ2VyIiwicHJldk9wdGlvbnMiLCJuYXRpdmVLZXl0aXBQcm9wcyIsImdldEtleXRpcERhdGEiLCJkZXNjcmliZWRCeVByZXBlbmQiLCJrZXl0aXBJZCIsIktleXRpcERhdGEiLCJrZXl0aXBEYXRhUHJvcHMiLCJDb250ZXh0dWFsTWVudUFuY2hvciIsIm9uSXRlbUNsaWNrIiwiYXJpYURlc2NyaXB0aW9uIiwiZm9jdXNhYmxlRWxlbWVudEluZGV4IiwidG90YWxJdGVtQ291bnQiLCJoYXNDaGVja21hcmtzIiwiQ2hpbGRyZW5SZW5kZXJlciIsImV4cGFuZGVkTWVudUl0ZW1LZXkiLCJhbmNob3JSZWwiLCJpdGVtSGFzU3VibWVudSIsIml0ZW1Qcm9wcyIsImFyaWFEZXNjcmliZWRCeUlkcyIsImFkZGl0aW9uYWxJdGVtUHJvcGVydGllcyIsImtleXRpcEF0dHJpYnV0ZXMiLCJDb250ZXh0dWFsTWVudUJ1dHRvbiIsIm9uSXRlbU1vdXNlRG93biIsImRlZmF1bHRSb2xlIiwiYnV0dG9uTmF0aXZlUHJvcGVydGllcyIsIml0ZW1Sb2xlIiwiaXRlbUJ1dHRvblByb3BlcnRpZXMiLCJuYW1lcyIsIlZlcnRpY2FsRGl2aWRlckJhc2UiLCJkZXByZWNhdGVkR2V0Q2xhc3NOYW1lcyIsIlZlcnRpY2FsRGl2aWRlciIsIlRvdWNoSWRsZURlbGF5IiwiQ29udGV4dHVhbE1lbnVTcGxpdEJ1dHRvbiIsImV4ZWN1dGVJdGVtQ2xpY2siLCJhcmlhQ2hlY2tlZCIsInNwbGl0QnV0dG9uIiwiaXRlbUNvbXBvbmVudFByb3BzIiwiYnV0dG9uUHJvcHMiLCJvblRhcCIsIlJlc3BvbnNpdmVNb2RlIiwiUkVTUE9OU0lWRV9NQVhfQ09OU1RSQUlOVCIsIl9kZWZhdWx0TW9kZSIsIl9sYXN0TW9kZSIsImdldEluaXRpYWxSZXNwb25zaXZlTW9kZSIsImdldFdpZHRoT2ZDdXJyZW50V2luZG93IiwiY3VycmVudFdpbmRvdyIsImdldFJlc3BvbnNpdmVNb2RlIiwicmVzcG9uc2l2ZU1vZGUiLCJ1c2VSZXNwb25zaXZlTW9kZSIsImVsZW1lbnRSZWYiLCJvdmVycmlkZVJlc3BvbnNpdmVNb2RlIiwibGFzdFJlc3BvbnNpdmVNb2RlIiwic2V0TGFzdFJlc3BvbnNpdmVNb2RlIiwib25SZXNpemUiLCJuZXdSZXNwb25zaXZlTW9kZSIsIk1lbnVDb250ZXh0IiwiZ2V0Q29udGV4dHVhbE1lbnVJdGVtQ2xhc3NOYW1lcyIsImdldEl0ZW1Db3VudCIsIml0ZW1Db3VudCIsImdldFN1Ym1lbnVJdGVtcyIsIm92ZXJyaWRlSXRlbXMiLCJpdGVtc18yIiwic3ViSXRlbSIsImNvbnRleHRJdGVtIiwiZ2V0T25DbGlja1dpdGhPdmVycmlkZVRhcmdldCIsImNhbkFueU1lbnVJdGVtc0NoZWNrIiwic3VibWVudUl0ZW0iLCJOYXZpZ2F0aW9uSWRsZURlbGF5IiwiX2dldE1lbnVJdGVtU3R5bGVzRnVuY3Rpb24iLCJ1c2VWaXNpYmlsaXR5Iiwib25NZW51RGlzbWlzc2VkIiwib25NZW51T3BlbmVkIiwicHJldmlvdXNIaWRkZW4iLCJvbk1lbnVPcGVuZWRSZWYiLCJvbk1lbnVDbG9zZWRSZWYiLCJwcm9wc1JlZiIsInVzZVN1Yk1lbnVTdGF0ZSIsImRpc21pc3MiLCJtZW51VGFyZ2V0Iiwic2V0RXhwYW5kZWRNZW51SXRlbUtleSIsInNldFN1Ym1lbnVUYXJnZXQiLCJzaG91bGRGb2N1c09uQ29udGFpbmVyIiwic2V0U2hvdWxkRm9jdXNPbkNvbnRhaW5lciIsInN1Yk1lbnVJZCIsImNsb3NlU3ViTWVudSIsImZvY3VzQ29udGFpbmVyIiwic3VibWVudUl0ZW1LZXkiLCJvblN1Yk1lbnVEaXNtaXNzIiwidXNlT25TdWJtZW51RGlzbWlzcyIsImdldFN1Ym1lbnVQcm9wcyIsImZpbmRJdGVtQnlLZXlGcm9tSXRlbXMiLCJzdWJtZW51UHJvcHMiLCJ1c2VTaG91bGRVcGRhdGVGb2N1c09uTW91c2VNb3ZlIiwiZGVsYXlVcGRhdGVGb2N1c09uSG92ZXIiLCJzaG91bGRVcGRhdGVGb2N1c09uTW91c2VFdmVudCIsImdvdE1vdXNlTW92ZSIsIm9uTWVudUZvY3VzQ2FwdHVyZSIsInVzZVByZXZpb3VzQWN0aXZlRWxlbWVudCIsInRyeUZvY3VzUHJldmlvdXNBY3RpdmVFbGVtZW50IiwibmV3RWxlbWVudCIsInVzZUtleUhhbmRsZXJzIiwiaXNTdWJNZW51IiwiY2hlY2tGb3JOb1dyYXAiLCJmb2N1c1pvbmVEaXJlY3Rpb24iLCJsYXN0S2V5RG93bldhc0FsdE9yTWV0YSIsImtleUhhbmRsZXIiLCJzaG91bGRIYW5kbGVLZXkiLCJkaXNtaXNzQWxsTWVudXMiLCJoYW5kbGVkIiwic2hvdWxkQ2xvc2VTdWJNZW51Iiwic3VibWVudUNsb3NlS2V5Iiwic2hvdWxkSGFuZGxlS2V5RG93biIsImlzQWx0T3JNZXRhIiwic2hvdWxkSGFuZGxlS2V5VXAiLCJrZXlQcmVzc0lzQWx0T3JNZXRhQWxvbmUiLCJvbk1lbnVLZXlEb3duIiwiaGFzTW9kaWZpZXIiLCJpc1VwIiwiaXNEb3duIiwib3BlbktleSIsInVzZVNjcm9sbEhhbmRsZXIiLCJhc3luY1RyYWNrZXIiLCJpc1Njcm9sbElkbGUiLCJzY3JvbGxJZGxlVGltZW91dElkIiwiaXNNb3VudGVkUmVmIiwidXNlU3VibWVudUVudGVyVGltZXIiLCJzdWJNZW51SG92ZXJEZWxheSIsImVudGVyVGltZXJSZWYiLCJjYW5jZWxTdWJNZW51VGltZXIiLCJzdGFydFN1Ym1lbnVUaW1lciIsIm9uVGltZXJFeHBpcmVkIiwidXNlTW91c2VIYW5kbGVycyIsInN1Yk1lbnVFbnRyeVRpbWVyIiwib25JdGVtTW91c2VFbnRlckJhc2UiLCJzaG91bGRJZ25vcmVNb3VzZUV2ZW50IiwidXBkYXRlRm9jdXNPbk1vdXNlRXZlbnQiLCJvbkl0ZW1Nb3VzZU1vdmVCYXNlIiwib25Nb3VzZUl0ZW1MZWF2ZSIsIm9uQW5jaG9yQ2xpY2siLCJvdmVycmlkZVRhcmdldCIsInNob3VsZERpc21pc3MiLCJDb250ZXh0dWFsTWVudUJhc2UiLCJtZW51SWQiLCJfaiIsIm9uRGVmYXVsdFJlbmRlck1lbnVMaXN0IiwibWVudUxpc3RQcm9wcyIsIm1lbnVDbGFzc05hbWVzIiwiaW5kZXhDb3JyZWN0aW9uIiwibWVudUl0ZW0iLCJyZW5kZXJNZW51SXRlbSIsImluZGV4SW5jcmVhc2UiLCJyZW5kZXJGb2N1c1pvbmUiLCJhZGp1c3RlZEZvY3VzWm9uZVByb3BzIiwicmVuZGVyZWRJdGVtcyIsInN1Yk1lbnVJY29uQ2xhc3NOYW1lIiwiaXRlbUNsYXNzTmFtZXMiLCJpdGVtU3R5bGVQcm9wcyIsInJlbmRlclNlcGFyYXRvciIsImhlYWRlckl0ZW0iLCJyZW5kZXJIZWFkZXJNZW51SXRlbSIsInJlbmRlckxpc3RJdGVtIiwicmVuZGVyU2VjdGlvbkl0ZW0iLCJkZWZhdWx0UmVuZGVyTm9ybWFsSXRlbSIsInJlbmRlck5vcm1hbEl0ZW0iLCJkZWZhdWx0TWVudUl0ZW1SZW5kZXJlciIsInNlY3Rpb25JdGVtIiwic2VjdGlvblByb3BzIiwiZ3JvdXBQcm9wcyIsImhlYWRlckNvbnRleHR1YWxNZW51SXRlbSIsImFyaWFMYWJlbGxlZGJ5IiwiaWRfMSIsImlkXzIiLCJjb3JyZWN0ZWRJbmRleF8xIiwiY29udGV4dHVhbE1lbnVJdGVtIiwiaXRlbXNJbmRleCIsImZyb21TZWN0aW9uIiwiY29udGV4dHVhbE1lbnVJdGVtQXMiLCJjb21tb25Qcm9wcyIsImRpdkh0bWxQcm9wZXJ0aWVzIiwibGFiZWxFbGVtZW50SWQiLCJnYXBTcGFjZSIsInVzZVRhcmdldFdpZHRoIiwidXNlVGFyZ2V0QXNNaW5XaWR0aCIsInNob3VsZEZvY3VzT25Nb3VudCIsImNhbGxvdXRQcm9wcyIsIl9rIiwib25SZW5kZXJTdWJNZW51Iiwib25EZWZhdWx0UmVuZGVyU3ViTWVudSIsIl9sIiwib25SZW5kZXJNZW51TGlzdCIsImZvY3VzWm9uZVByb3BzIiwiZ2V0TWVudUNsYXNzTmFtZXMiLCJpdGVtc0hhdmVJY29ucyIsImNvbnRleHR1YWxNZW51SXRlbXMiLCJjb250ZXh0dWFsTWVudUl0ZW1zXzEiLCJjb250ZXh0TWVudVN0eWxlIiwidGFyZ2V0QXNIdG1sRWxlbWVudCIsInRhcmdldEJvdW5kaW5nUmVjdCIsInRhcmdldFdpZHRoIiwidG90YWxJdGVtQ291bnRfMSIsImNhbGxvdXRTdHlsZXNfMSIsIm1lbnVDb250ZXh0Iiwic3ViTWVudVByb3BzIiwiaXRlbXNfMyIsIkxvY2FsQ29udGV4dHVhbE1lbnUiLCJDb250ZXh0dWFsTWVudSIsIkJ1dHRvbkdsb2JhbENsYXNzTmFtZXMiLCJnZXRCYXNlQnV0dG9uQ2xhc3NOYW1lcyIsInZhcmlhbnRDbGFzc05hbWUiLCJtZW51SWNvbkNsYXNzTmFtZSIsImhhc01lbnUiLCJpc1NwbGl0IiwiaXNFeHBhbmRlZCIsImdldFNwbGl0QnV0dG9uQ2xhc3NOYW1lcyIsIkJhc2VCdXR0b24iLCJ0ZXh0Iiwic2Vjb25kYXJ5VGV4dCIsIm9uUmVuZGVyVGV4dCIsIm9uUmVuZGVyRGVzY3JpcHRpb24iLCJtZW51SWNvblByb3BzIiwibWVudVByb3BzIiwiTWVudVR5cGUiLCJjb250YWluZXIiLCJzaW5nbGVUb3VjaFRhcmdldCIsIm9uTWVudUNsaWNrIiwiY3VycmVudFNob3VsZEZvY3VzT25Nb3VudCIsImFsbG93RGlzYWJsZWRGb2N1cyIsIm1lbnVIaWRkZW4iLCJpc1ByaW1hcnlCdXR0b25EaXNhYmxlZCIsIl9hcmlhRGVzY3JpcHRpb25JZCIsIl9sYWJlbElkIiwiX2Rlc2NyaXB0aW9uSWQiLCJyZW5kZXJBc0FuY2hvciIsInJlc29sdmVkQXJpYUxhYmVsIiwiZGF0YUlzRm9jdXNhYmxlIiwiaXNDaGVja2JveFR5cGVSb2xlIiwiY2hlY2tlZE9yUHJlc3NlZFZhbHVlIiwib25SZW5kZXJJY29uIiwib25SZW5kZXJBcmlhRGVzY3JpcHRpb24iLCJvblJlbmRlckNoaWxkcmVuIiwib25SZW5kZXJNZW51Iiwib25SZW5kZXJNZW51SWNvbiIsIkJ1dHRvbiIsIkNvbnRlbnQiLCJwZXJzaXN0TWVudSIsInJlbmRlclBlcnNpc3RlZE1lbnVIaWRkZW5Pbk1vdW50IiwicHJpbWFyeUFjdGlvbkJ1dHRvblByb3BzIiwiZ2V0QmFzZVNwbGl0QnV0dG9uQ2xhc3NOYW1lcyIsIlNwbGl0QnV0dG9uIiwic3BsaXRCdXR0b25NZW51UHJvcHMiLCJzcGxpdEJ1dHRvbkFyaWFMYWJlbCIsInNwbGl0QnV0dG9uUHJvcHMiLCJub091dGxpbmUiLCJpY29uU3R5bGUiLCJmb250U2l6ZSIsImJvcmRlciIsImRpc2FibGVkQmFja2dyb3VuZCIsImRpc2FibGVkVGV4dCIsImJ1dHRvbkhpZ2hDb250cmFzdEZvY3VzIiwiY3VzdG9tU3R5bGVzIiwiX20iLCJfbyIsInNwbGl0QnV0dG9uRGl2aWRlckJhc2VTdHlsZXMiLCJzcGxpdEJ1dHRvblN0eWxlcyIsInN0YW5kYXJkU3R5bGVzIiwiYnV0dG9uQmFja2dyb3VuZCIsImJ1dHRvbkJhY2tncm91bmRQcmVzc2VkIiwiYnV0dG9uQmFja2dyb3VuZEhvdmVyZWQiLCJidXR0b25CYWNrZ3JvdW5kRGlzYWJsZWQiLCJidXR0b25UZXh0IiwiYnV0dG9uVGV4dEhvdmVyZWQiLCJidXR0b25UZXh0RGlzYWJsZWQiLCJidXR0b25UZXh0Q2hlY2tlZCIsImJ1dHRvblRleHRDaGVja2VkSG92ZXJlZCIsInByaW1hcnlTdHlsZXMiLCJERUZBVUxUX0JVVFRPTl9IRUlHSFQiLCJERUZBVUxUX0JVVFRPTl9NSU5fV0lEVEgiLCJwcmltYXJ5IiwiYmFzZUJ1dHRvblN0eWxlcyIsImdldEJhc2VCdXR0b25TdHlsZXMiLCJnZXRTcGxpdEJ1dHRvblN0eWxlcyIsImRlZmF1bHRCdXR0b25TdHlsZXMiLCJEZWZhdWx0QnV0dG9uIiwiaWNvbkJ1dHRvblN0eWxlcyIsIkljb25CdXR0b24iLCJQcmltYXJ5QnV0dG9uIiwiTGFiZWxCYXNlIiwicmVxdWlyZWQiLCJsYWJlbEZvbnRXZWlnaHQiLCJsYWJlbENvbG9yIiwibGFiZWxEaXNhYmxlZENvbG9yIiwibGFiZWxSZXF1aXJlZFN0YXJDb2xvciIsIkxhYmVsIiwiREVGQVVMVF9TVEFURV9WQUxVRSIsIlJFVkVBTF9JQ09OX05BTUUiLCJISURFX0lDT05fTkFNRSIsIlRleHRGaWVsZEJhc2UiLCJsYWJlbCIsImxhYmVsU3R5bGVzIiwicHJldmlvdXNWYWx1ZSIsIl9nZXRWYWx1ZSIsInNuYXBzaG90Iiwic2VsZWN0aW9uIiwic3RhcnQiLCJfc2hvdWxkVmFsaWRhdGVBbGxDaGFuZ2VzIiwiYm9yZGVybGVzcyIsImludmFsaWQiLCJpbnB1dENsYXNzTmFtZSIsIm11bHRpbGluZSIsInVuZGVybGluZWQiLCJyZXNpemFibGUiLCJhdXRvQWRqdXN0SGVpZ2h0IiwiY2FuUmV2ZWFsUGFzc3dvcmQiLCJyZXZlYWxQYXNzd29yZEFyaWFMYWJlbCIsInR5cGUiLCJvblJlbmRlclByZWZpeCIsIm9uUmVuZGVyU3VmZml4Iiwib25SZW5kZXJMYWJlbCIsImlzRm9jdXNlZCIsImlzUmV2ZWFsaW5nUGFzc3dvcmQiLCJlcnJvck1lc3NhZ2UiLCJpc0ludmFsaWQiLCJoYXNSZXZlYWxCdXR0b24iLCJfYnJvd3Nlck5lZWRzUmV2ZWFsQnV0dG9uIiwidGV4dEFyZWFQcm9wcyIsImxhYmVsSWRzIiwiaW5wdXRQcm9wcyIsInVwZGF0ZWRJbnB1dFByb3BzIiwib25SZW5kZXJJbnB1dCIsIm9uR2V0RXJyb3JNZXNzYWdlIiwiY3VycmVudFZhbGlkYXRpb25fMSIsInRleHRGaWVsZCIsIl9fYnJvd3Nlck5lZWRzUmV2ZWFsQnV0dG9uIiwiaXNFZGdlIiwiZ2xvYmFsQ2xhc3NOYW1lcyIsImdldExhYmVsU3R5bGVzIiwiZm9jdXNlZCIsImhhc0xhYmVsIiwiaGFzSWNvbiIsImhhc0Vycm9yTWVzc2FnZSIsImZpZWxkUHJlZml4U3VmZml4IiwicGxhY2Vob2xkZXJTdHlsZXMiLCJkaXNhYmxlZFBsYWNlaG9sZGVyU3R5bGVzIiwiVGV4dEZpZWxkIiwiY29udGFpbmVyQ2xhc3NOYW1lIiwic2Nyb2xsYWJsZUNvbnRlbnRDbGFzc05hbWUiLCJpc09wZW4iLCJpc1Zpc2libGUiLCJoYXNCZWVuT3BlbmVkIiwibW9kYWxSZWN0YW5nbGVUb3AiLCJ0b3BPZmZzZXRGaXhlZCIsImlzTW9kZWxlc3MiLCJsYXllckNsYXNzTmFtZSIsImlzRGVmYXVsdERyYWdIYW5kbGUiLCJ3aW5kb3dJbm5lckhlaWdodCIsIk92ZXJsYXlCYXNlIiwiYWxsb3dUb3VjaEJvZHlTY3JvbGwiLCJpc0RhcmsiLCJPdmVybGF5IiwiaXNEcmFnZ2luZyIsImV2ZW50TWFwcGluZyIsIkRyYWdnYWJsZVpvbmUiLCJvbk1vdXNlVXAiLCJvblRvdWNoU3RhcnQiLCJvblRvdWNoRW5kIiwiZHJhZ0RhdGEiLCJ1cGRhdGVkRGF0YSIsInVwZGF0ZWRQb3NpdGlvbiIsImJhc2VEcmFnRGF0YSIsInN0YXRlUG9zaXRpb24iLCJ0b3VjaE9iaiIsImV2ZW50VG9HZXRPZmZzZXQiLCJ0b3VjaCIsIm1hdGNoZXNTZWxlY3RvckZuIiwidG91Y2hMaXN0IiwibGFzdFBvc2l0aW9uIiwiWkVSTyIsImdldE1vdmVEZWx0YSIsImZvY3VzVHJhcFpvbmUiLCJNb2RhbEJhc2UiLCJmb2N1c1RyYXBab25lUHJvcHMiLCJpc0Jsb2NraW5nIiwiaXNBbGVydCIsImlzRGFya092ZXJsYXkiLCJvdmVybGF5IiwidGl0bGVBcmlhSWQiLCJzdWJ0aXRsZUFyaWFJZCIsImRyYWdPcHRpb25zIiwib25EaXNtaXNzZWQiLCJmb2N1c1RyYXBab25lUmVmIiwiZm9jdXNUcmFwWm9uZUVsbSIsIm1vZGFsUmVzcG9uc2l2ZU1vZGUiLCJmb2N1c1RyYXBab25lSWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiaXNNb2RhbE9wZW4iLCJzZXRJc01vZGFsT3BlbiIsInNldElzVmlzaWJsZSIsImNvb3JkaW5hdGVzIiwic2V0Q29vcmRpbmF0ZXMiLCJzZXRNb2RhbFJlY3RhbmdsZVRvcCIsImlzTW9kYWxNZW51T3BlbiIsInRvZ2dsZU1vZGFsTWVudU9wZW4iLCJzZXRNb2RhbE1lbnVDbG9zZSIsImtlZXBJbkJvdW5kcyIsImlzQWxlcnRSb2xlIiwibWVyZ2VkTGF5ZXJQcm9wcyIsImFsbG93U2Nyb2xsT25Nb2RhbCIsImVsdCIsInJlZ2lzdGVySW5pdGlhbE1vZGFsUG9zaXRpb24iLCJkaWFsb2dNYWluIiwibW9kYWxSZWN0YW5nbGUiLCJnZXRDbGFtcGVkQXhpcyIsImF4aXMiLCJtaW5Qb3NpdGlvbiIsIm1heFBvc2l0aW9uIiwiaGFuZGxlTW9kYWxDbG9zZSIsImhhbmRsZURyYWdTdGFydCIsImhhbmRsZURyYWciLCJoYW5kbGVEcmFnU3RvcCIsImhhbmRsZUVudGVyS2V5Ym9hcmRNb3ZlTW9kZSIsImhhbmRsZUtleURvd24iLCJuZXdMb2NhbCIsImhhbmRsZWRFdmVudCIsImRlbHRhXzEiLCJoYW5kbGVFeGl0S2V5Ym9hcmRNb3ZlTW9kZSIsInJlZ2lzdGVyRm9yS2V5VXAiLCJoYW5kbGVLZXlVcCIsIm1vZGFsQ29udGVudCIsIk1vZGFsIiwiaW5pdGlhbGl6ZUljb25zIiwicmVnaXN0ZXJJY29uQWxpYXNlcyIsIkRFRkFVTFRfQkFTRV9VUkwiLCJpMCIsImkxIiwiaTIiLCJpMyIsImk0IiwiaTUiLCJpNiIsImk3IiwiaTgiLCJpOSIsImkxMCIsImkxMSIsImkxMiIsImkxMyIsImkxNCIsImkxNSIsImkxNiIsImkxNyIsImluaXRpYWxpemUiLCJNZXNzYWdlQmFyVHlwZSIsIklDT05fTUFQIiwiZ2V0QW5ub3VuY2VtZW50UHJpb3JpdHkiLCJtZXNzYWdlQmFyVHlwZSIsImdldFJvbGUiLCJNZXNzYWdlQmFyQmFzZSIsImV4cGFuZFNpbmdsZUxpbmUiLCJ0b2dnbGVFeHBhbmRTaW5nbGVMaW5lIiwibGFiZWxJZCIsImFjdGlvbnMiLCJvdmVyZmxvd0J1dHRvbkFyaWFMYWJlbCIsImRpc21pc3NJY29uUHJvcHMiLCJpc011bHRpbGluZSIsInRydW5jYXRlZCIsImRpc21pc3NCdXR0b25BcmlhTGFiZWwiLCJtZXNzYWdlQmFySWNvblByb3BzIiwiZGVsYXllZFJlbmRlciIsImV4cGFuZEJ1dHRvblByb3BzIiwiZXhwYW5kSWNvblByb3BzIiwicmVnaW9uUHJvcHMiLCJhY3Rpb25zRGl2IiwiZGlzbWlzc0J1dHRvbiIsImljb25Db2xvciIsImhpZ2hDb250cmFzdEJvcmRlckNvbG9yIiwiaGlnaENvbnRyYXN0V2hpdGVCb3JkZXJDb2xvciIsIlNtYWxsU2NyZWVuU2VsZWN0b3IiLCJkaXNtaXNzYWxBbmRFeHBhbmRJY29uU3R5bGUiLCJkaXNtaXNzYWxBbmRFeHBhbmRTdHlsZSIsIk1lc3NhZ2VCYXIiLCJ3aXRoU2xvdHMiLCJzbG90VHlwZSIsImNyZWF0ZUZhY3RvcnkiLCJEZWZhdWx0Q29tcG9uZW50IiwiZGVmYXVsdFByb3AiLCJ1c2VyUHJvcHMiLCJ1c2VyU2xvdE9wdGlvbnMiLCJkZWZhdWx0U3R5bGVzIiwiUmVhY3QuaXNWYWxpZEVsZW1lbnQiLCJmbGF0dGVuZWRVc2VyUHJvcHMiLCJfdHJhbnNsYXRlU2hvcnRoYW5kIiwiZmluYWxQcm9wcyIsIl9jb25zdHJ1Y3RGaW5hbFByb3BzIiwiVXNlckNvbXBvbmVudCIsImRlZmF1bHRGYWN0b3J5IiwiZ2V0U2xvdHMiLCJzbG90cyIsIm1peGVkUHJvcHMiLCJzbG90IiwiX3JlbmRlclNsb3QiLCJzbG90UHJvcHMiLCJ0cmFuc2Zvcm1lZFByb3BzIiwiYWxsUHJvcHMiLCJhbGxQcm9wc18xIiwiQ29tcG9uZW50VHlwZSIsInNsb3RPcHRpb25zIiwiY3JlYXRlQ29tcG9uZW50IiwidmlldyIsImZhY3RvcnlPcHRpb25zIiwiUmVzdWx0Q29tcG9uZW50IiwiX2dldEN1c3RvbWl6YXRpb25zIiwic3RhdGVSZWR1Y2VyIiwidG9rZW5zIiwiX3Jlc29sdmVUb2tlbnMiLCJfcmVzb2x2ZVN0eWxlcyIsInZpZXdQcm9wcyIsImFsbFRva2VucyIsImFsbFRva2Vuc18xIiwiY3VycmVudFRva2VucyIsImFsaWduTWFwIiwiU3RhY2tJdGVtU3R5bGVzIiwiZ3JvdyIsInNocmluayIsImRpc2FibGVTaHJpbmsiLCJhbGlnbiIsInZlcnRpY2FsRmlsbCIsIm9yZGVyIiwiYmFzaXMiLCJTdGFja0l0ZW1WaWV3IiwiU2xvdHMiLCJTdGFja0l0ZW0iLCJfZ2V0VGhlbWVkU3BhY2luZyIsInNwYWNlIiwiX2dldFZhbHVlVW5pdEdhcCIsIm51bWVyaWNhbFBhcnQiLCJudW1lcmljYWxWYWx1ZSIsIm51bWVyaWNhbFN0cmluZyIsInVuaXRQYXJ0IiwicGFyc2VHYXAiLCJzcGxpdEdhcCIsImNhbGN1bGF0ZWRHYXAiLCJwYXJzZVBhZGRpbmciLCJwYWRkaW5nIiwicGFkZGluZ1ZhbHVlcyIsInBhZGRpbmcxIiwicGFkZGluZzIiLCJuYW1lTWFwIiwiZW5hYmxlU2NvcGVkU2VsZWN0b3JzIiwiaG9yaXpvbnRhbCIsImhvcml6b250YWxBbGlnbiIsInJldmVyc2VkIiwidmVydGljYWxBbGlnbiIsIndyYXAiLCJjaGlsZHJlbkdhcCIsIm1heFdpZHRoIiwiX3AiLCJyb3dHYXAiLCJjb2x1bW5HYXAiLCJob3Jpem9udGFsTWFyZ2luIiwidmVydGljYWxNYXJnaW4iLCJjaGlsZFN0eWxlcyIsImNoaWxkU2VsZWN0b3IiLCJkaXNhYmxlU2hyaW5rU3R5bGVzIiwiU3RhY2tJdGVtR2xvYmFsQ2xhc3NOYW1lcyIsIlN0YWNrVmlldyIsImRvTm90UmVuZGVyRmFsc3lWYWx1ZXMiLCJzdGFja0NoaWxkcmVuIiwiX3Byb2Nlc3NTdGFja0NoaWxkcmVuIiwiY2hpbGRyZW5BcnJheSIsImNoaWxkQXNSZWFjdEVsZW1lbnQiLCJkZWZhdWx0SXRlbVByb3BzIiwiX2lzU3RhY2tJdGVtIiwiY2hpbGRDbGFzc05hbWUiLCJTdGFja0dsb2JhbENsYXNzTmFtZXMiLCJTdGFja1N0YXRpY3MiLCJTdGFjayIsInJvb3RFbGVtZW50UmVmIiwiVGVhY2hpbmdCdWJibGVDb250ZW50QmFzZSIsImRvY3VtZW50UmVmIiwiYXJpYURlc2NyaWJlZEJ5SWQiLCJhcmlhTGFiZWxsZWRCeUlkIiwiaWxsdXN0cmF0aW9uSW1hZ2UiLCJwcmltYXJ5QnV0dG9uUHJvcHMiLCJzZWNvbmRhcnlCdXR0b25Qcm9wcyIsImhlYWRsaW5lIiwiaGFzQ29uZGVuc2VkSGVhZGxpbmUiLCJoYXNDbG9zZUJ1dHRvbiIsImNsb3NlQnV0dG9uQXJpYUxhYmVsIiwiaGFzU21hbGxIZWFkbGluZSIsImlzV2lkZSIsImN1c3RvbUZvb3RlckNvbnRlbnQiLCJpbWFnZUNvbnRlbnQiLCJoZWFkZXJDb250ZW50IiwiYm9keUNvbnRlbnQiLCJmb290ZXJDb250ZW50IiwiY2xvc2VCdXR0b24iLCJIZWFkZXJXcmFwcGVyQXMiLCJCb2R5Q29udGVudFdyYXBwZXJBcyIsIm9wYWNpdHlGYWRlSW4iLCJoZWFkZXJTdHlsZSIsImhhc0hlYWRsaW5lIiwicHJpbWFyeUJ1dHRvbkNsYXNzTmFtZSIsInNlY29uZGFyeUJ1dHRvbkNsYXNzTmFtZSIsImhhc0xhcmdlSGVhZGxpbmUiLCJoaWRlRGVmYXVsdEZvY3VzUmluZyIsIlRlYWNoaW5nQnViYmxlQ29udGVudCIsImRlZmF1bHRDYWxsb3V0UHJvcHMiLCJUZWFjaGluZ0J1YmJsZUJhc2UiLCJzZXRDYWxsb3V0UHJvcHMiLCJzdHlsZXNQcm9wcyIsImNhbGxvdXRTdHlsZXMiLCJUZWFjaGluZ0J1YmJsZSIsIlRleHRWaWV3IiwiVGV4dFN0eWxlcyIsImFzIiwiYmxvY2siLCJub3dyYXAiLCJ2YXJpYW50IiwidmFyaWFudE9iamVjdCIsIlRleHQiLCJJbVNwaW5uZXIyIiwiSW1DaGVja21hcmsiLCJJbUFycm93UmlnaHQyIiwiSW1BcnJvd0xlZnQyIiwiZW52aXJvbm1lbnRzIiwiaXNQcm9kdWN0aW9uIiwiRW52aXJvbm1lbnRCYW5uZXIiLCJlbnZpcm9ubWVudCIsIk5vdGlmaWNhdGlvbnMiLCJsYXRlc3RFcnJvcnMiLCJub3RpZmljYXRpb25zIiwiY3VycmVudFBhZ2UiLCJpc0RpcnR5Iiwic2F2ZURpcnR5UGFnZSIsInN1Ym1pc3Npb25TdGF0ZSIsInNldFN1Ym1pc3Npb25TdGF0ZSIsImFwcGxpY2FibGVOb3RpZmljYXRpb25zIiwibm90aWZpY2F0aW9uIiwiU0hPV19NQVhfRVJST1JTIiwiU0hPV19NQVhfTk9USUZJQ0FUSU9OUyIsImludmFsaWRTdWJtaXNzaW9uUHJlcmVxdWlzaXRlcyIsInByZXJlcXVpc2l0IiwiZ2V0V2luZG93V2lkdGgiLCJ1c2VXaW5kb3dXaWR0aCIsIndpbmRvd1dpZHRoIiwic2V0d2luZG93V2lkdGgiLCJoYW5kbGVSZXNpemUiLCJCYXNlUGFnZSIsIkRhdGVIZWxwZXIiLCJkYXRlIiwidG9kYXlEYXRlQ29tcG9uZW50Iiwic2Vjb25kcyIsIkZhQXJyb3dSaWdodCIsIkZhQ2lyY2xlIiwiRmFFeGNsYW1hdGlvblRyaWFuZ2xlIiwiRmFIb21lIiwiRmFJbmZvQ2lyY2xlIiwiRmFTZWFyY2giLCJGYVVzZXIiLCJCc0ZpbGxRdWVzdGlvbkNpcmNsZUZpbGwiLCJCc0FzdGVyaXNrIiwiQnNDaGVja0xnIiwiQnNDaGV2cm9uRG93biIsIkJzQ2hldnJvblVwIiwiQnNTb3J0RG93biIsIkJzU29ydFVwIiwiVG9vbHRpcCIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiUmVhY3RQcm9wVHlwZXNTZWNyZXRfMSIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwiZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zIiwic2hpbSIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsInByb3BUeXBlc01vZHVsZSIsIiQiLCJpZENvdW50ZXIiLCJjYlRvQ2IiLCJub29wIiwic2Nyb2xsSW50b1ZpZXciLCJtZW51Tm9kZSIsImNvbXB1dGVTY3JvbGxJbnRvVmlldyIsImlzT3JDb250YWluc05vZGUiLCJkZWJvdW5jZSIsIndyYXBwZXIiLCJfbGVuIiwiX2tleSIsImNhbGxBbGxFdmVudEhhbmRsZXJzIiwiX2xlbjIiLCJmbnMiLCJfa2V5MiIsIl9sZW4zIiwiX2tleTMiLCJoYW5kbGVSZWZzIiwiX2xlbjQiLCJfa2V5NCIsImdlbmVyYXRlSWQiLCJnZXRBMTF5U3RhdHVzTWVzc2FnZSQxIiwicmVzdWx0Q291bnQiLCJwcmV2aW91c1Jlc3VsdENvdW50IiwidW53cmFwQXJyYXkiLCJpc0RPTUVsZW1lbnQiLCJnZXRFbGVtZW50UHJvcHMiLCJzdGF0ZUtleXMiLCJwaWNrU3RhdGUiLCJnZXRTdGF0ZSIsImlzQ29udHJvbGxlZFByb3AiLCJub3JtYWxpemVBcnJvd0tleSIsImtleUNvZGUiLCJnZXROZXh0V3JhcHBpbmdJbmRleCIsIm1vdmVBbW91bnQiLCJiYXNlSW5kZXgiLCJnZXRJdGVtTm9kZUZyb21JbmRleCIsImNpcmN1bGFyIiwiaXRlbXNMYXN0SW5kZXgiLCJuZXdJbmRleCIsIm5vbkRpc2FibGVkTmV3SW5kZXgiLCJnZXROZXh0Tm9uRGlzYWJsZWRJbmRleCIsImN1cnJlbnRFbGVtZW50Tm9kZSIsInRhcmdldFdpdGhpbkRvd25zaGlmdCIsImRvd25zaGlmdEVsZW1lbnRzIiwiY2hlY2tBY3RpdmVFbGVtZW50IiwiY29udGV4dE5vZGUiLCJjbGVhbnVwU3RhdHVzIiwiZG9jdW1lbnRQcm9wIiwiZ2V0U3RhdHVzRGl2Iiwic2V0U3RhdHVzIiwic3RhdHVzIiwiZGl2Iiwic3RhdHVzRGl2IiwidW5rbm93biIsIm1vdXNlVXAiLCJpdGVtTW91c2VFbnRlciIsImtleURvd25BcnJvd1VwIiwia2V5RG93bkFycm93RG93biIsImtleURvd25Fc2NhcGUiLCJrZXlEb3duRW50ZXIiLCJrZXlEb3duSG9tZSIsImtleURvd25FbmQiLCJjbGlja0l0ZW0iLCJibHVySW5wdXQiLCJjaGFuZ2VJbnB1dCIsImtleURvd25TcGFjZUJ1dHRvbiIsImNsaWNrQnV0dG9uIiwiYmx1ckJ1dHRvbiIsImNvbnRyb2xsZWRQcm9wVXBkYXRlZFNlbGVjdGVkSXRlbSIsInRvdWNoRW5kIiwic3RhdGVDaGFuZ2VUeXBlcyQzIiwiRG93bnNoaWZ0IiwiaGlnaGxpZ2h0ZWRJbmRleCIsIm90aGVyU3RhdGVUb1NldCIsIml0ZW1JbmRleCIsInN0YXRlVG9TZXQiLCJpc0l0ZW1TZWxlY3RlZCIsIm9uQ2hhbmdlQXJnIiwib25TdGF0ZUNoYW5nZUFyZyIsImlzU3RhdGVUb1NldEZ1bmN0aW9uIiwibmV3U3RhdGVUb1NldCIsIm5leHRTdGF0ZSIsIl90ZW1wMiIsInJlZktleSIsInN1cHByZXNzUmVmRXJyb3IiLCJhbW91bnQiLCJuZXh0SGlnaGxpZ2h0ZWRJbmRleCIsIml0ZW1Ob2RlIiwibmV3SGlnaGxpZ2h0ZWRJbmRleCIsIl90ZW1wMyIsIm9uUHJlc3MiLCJvbkJsdXIiLCJlbmFibGVkRXZlbnRIYW5kbGVycyIsImV2ZW50SGFuZGxlcnMiLCJibHVyVGFyZ2V0IiwiX3RlbXA0Iiwib25JbnB1dCIsIm9uQ2hhbmdlVGV4dCIsIm9uQ2hhbmdlS2V5IiwiZG93bnNoaWZ0QnV0dG9uSXNBY3RpdmUiLCJfdGVtcDUiLCJfdGVtcDYiLCJfdGVtcDciLCJvbk1vdXNlTW92ZSIsIm9uU2VsZWN0S2V5IiwiY3VzdG9tQ2xpY2tIYW5kbGVyIiwic2VsZWN0ZWRJdGVtIiwiZGVmYXVsdEhpZ2hsaWdodGVkSW5kZXgiLCJfaGlnaGxpZ2h0ZWRJbmRleCIsImRlZmF1bHRJc09wZW4iLCJfaXNPcGVuIiwiX2lucHV0VmFsdWUiLCJfc2VsZWN0ZWRJdGVtIiwiX3N0YXRlIiwic3RhdGVUb01lcmdlIiwiaXRlbVRvU3RyaW5nIiwiZ2V0Um9vdFByb3BzIiwiZ2V0VG9nZ2xlQnV0dG9uUHJvcHMiLCJnZXRMYWJlbFByb3BzIiwiZ2V0TWVudVByb3BzIiwiZ2V0SW5wdXRQcm9wcyIsImdldEl0ZW1Qcm9wcyIsIm9wZW5NZW51IiwiY2xvc2VNZW51IiwidG9nZ2xlTWVudSIsInNlbGVjdEl0ZW0iLCJzZWxlY3RJdGVtQXRJbmRleCIsInNlbGVjdEhpZ2hsaWdodGVkSXRlbSIsInNldEhpZ2hsaWdodGVkSW5kZXgiLCJjbGVhclNlbGVjdGlvbiIsImNsZWFySXRlbXMiLCJzZXRJdGVtQ291bnQiLCJ1bnNldEl0ZW1Db3VudCIsIm9uVG91Y2hNb3ZlIiwiY29udGV4dFdpdGhpbkRvd25zaGlmdCIsImN1cnJlbnRIaWdobGlnaHRlZEluZGV4IiwicHJldkhpZ2hsaWdodGVkSW5kZXgiLCJjbG9uZUVsZW1lbnQiLCJwcmV2SXRlbSIsIkRvd25zaGlmdCQxIiwiZ2V0QTExeVNlbGVjdGlvbk1lc3NhZ2UiLCJzZWxlY3Rpb25QYXJhbWV0ZXJzIiwiaXRlbVRvU3RyaW5nTG9jYWwiLCJnZXRBMTF5TWVzc2FnZSIsImRlZmF1bHRQcm9wcyQzIiwiUHJvcFR5cGVzIiwiZ2V0QTExeVN0YXR1c01lc3NhZ2UiLCJnZXRBMTF5UmVtb3ZhbE1lc3NhZ2UiLCJyZW1vdmVkU2VsZWN0ZWRJdGVtIiwiTG9va3VwRmllbGQiLCJzZWFyY2hUZXJtSW5wdXRSZWYiLCJjbGVhckJ1dHRvblJlZiIsImFkZGl0aW9uYWxJbnB1dFByb3BzIiwic2VhcmNoVGVybSIsInNldFNlYXJjaFRlcm0iLCJzZXRJc0ZvY3VzZWQiLCJpc1NlbGVjdGVkT3B0aW9uSG92ZXJlZCIsInNldElzU2VsZWN0ZWRPcHRpb25Ib3ZlcmVkIiwiTUFYX1JFU1VMVFNfU0hPV04iLCJmaWx0ZXJlZE9wdGlvbnMiLCJwaWNrYWJsZU9wdGlvbnMiLCJ3b3JkIiwibWF0Y2hDb3VudCIsImhhbmRsZUtleVByZXNzIiwib3ZlcmxheUNhcmQiLCJzZWxlY3RlZE9wdGlvbiIsImluZm8iLCJnZXRDdXJyZW50VGlsZUxheW91dCIsInBhZ2VXaWR0aCIsIkFkdmFuY2VkRmlsdGVyUGFuZWwiLCJyZXNldEtleSIsInNldFJlc2V0S2V5IiwicmVzZXRDcmVhdGVkQnlGaWVsZCIsInRpbGVHcmlkTGF5b3V0Iiwic2V0VGlsZUdyaWRMYXlvdXQiLCJyZXNldEFkdmFuY2VkU2VhcmNoRmlsdGVycyIsImZpbHRlclRvRGlzcGxheSIsImRldGVybWluZUZpbHRlclR5cGUiLCJmaWx0ZXJPYmplY3QiLCJmaWx0ZXJUeXBlIiwiT3B0aW9uU2V0RmlsdGVyIiwiTG9va3VwRmlsdGVyIiwic2VsZWN0ZWRPcHRpb25JZCIsInNldFNlbGVjdGVkT3B0aW9uSWQiLCJmaWx0ZXIiLCJGaWx0ZXJUaWxlIiwib25DbGlja1RpbGUiLCJhdHRyaWJ1dGVzIiwiTWFuYWdlbWVudFBhbmVsIiwic2VhcmNoSW5wdXQiLCJzZXRTZWFyY2hJbnB1dCIsInNob3dBZHZhbmNlZEZpbHRlcnMiLCJzZXRTaG93QWR2YW5jZWRGaWx0ZXJzIiwiaW5pdGlhbEZpbHRlckdyb3VwcyIsInJlbmRlclRpbGVDb250ZW50Iiwic3VtbWFyeVNlY3Rpb24iLCJmaWx0ZXJHcm91cCIsInRpbGUiLCJpZHMiLCJmaWx0ZXJHcm91cEluZGV4IiwidGlsZUluZGV4IiwidG9Mb2FkaW5nRGF0YSIsImxvYWRpbmdEYXRhIiwiaWZMb2FkZWQiLCJnZXRDYXNlc0ZpbHRlckdyb3VwcyIsImZpbHRlcmVkSW5jaWRlbnRzIiwic2VsZWN0ZWRTdGF0dXNUaWxlSWRzIiwic2V0U2VsZWN0ZWRTdGF0dXNUaWxlSWRzIiwic2VsZWN0ZWRUeXBlVGlsZUlkcyIsInNldFNlbGVjdGVkVHlwZVRpbGVJZHMiLCJpbmNpZGVudCIsImluY2lkZW50cyIsIlRhYmxlSGVhZGVyQ2VsbCIsInNvcnRpbmdQcm9wcyIsImlzU29ydGVkIiwib25DbGlja0NvbHVtbiIsInNvcnRJY29uIiwiZ2V0Q2FzZVRhYmxlSGVhZGVyQ2VsbHMiLCJnZXRDYXNlc1N1bW1hcnlTZWN0aW9ucyIsIm51bWJlck9mQWN0aXZlQ2FzZXMiLCJpc0FkdmFuY2VkRmlsdGVyc1Nob3duIiwiRGF0ZVNpbmNlIiwiTWFqb3JJbmNpZGVudEJhbm5lciIsIkxvYWRpbmdTcGlubmVyIiwiQ2FzZXMiLCJjb250YWN0cyIsInNvcnRlZENvbHVtbiIsInNldFNvcnRlZENvbHVtbiIsImlzU29ydGVkQXNjZW5kaW5nIiwic2V0SXNTb3J0ZWRBc2NlbmRpbmciLCJzZWFyY2hCYXJDb250ZW50Iiwic2V0U2VhcmNoQmFyQ29udGVudCIsImFkdmFuY2VkU2VhcmNoRmlsdGVycyIsInNldEFkdmFuY2VkU2VhcmNoRmlsdGVycyIsInVwZGF0ZUNyZWF0ZWRCeUNvbnRhY3QiLCJjcmVhdGVkQnlJZCIsInVwZGF0ZVNlbGVjdGVkSW5jaWRlbnRUeXBlcyIsImluY2lkZW50U3RhdHVzRW51bVZhbHVlIiwidXBkYXRlU2VsZWN0ZWRDYXNlVHlwZXMiLCJjYXNlRW51bVZhbHVlIiwidXBkYXRlQ3JlYXRlZE9uRGF0ZSIsImRhdGVTaW5jZSIsImZyb21EYXRlIiwidG9EYXRlIiwic29ydGVkSW5jaWRlbnRzIiwic29ydGVkRGF0YSIsImluY2lkZW50QSIsImluY2lkZW50QiIsImNhc2VzRmlsdGVyR3JvdXBzIiwiYXBwbGljYWJsZVN0YXR1c0ZpbHRlcnMiLCJhcHBsaWNhYmxlVHlwZUZpbHRlcnMiLCJnZXRTdW1tYXJ5U2VjdGlvbnMiLCJhY3RpdmVNYWpvckluY2lkZW50VGV4dCIsInJlc29sdmVkTWFqb3JJbmNpZGVudFRleHQiLCJoZWFkZXJDZWxscyIsImdldENvbHVtbkhlYWRlciIsImZpZWxkTmFtZSIsImhlYWRlckNlbGwiLCJtYXRjaGluZ0luY2lkZW50cyIsInRleHRWYWx1ZSIsImNvbnRhY3QiLCJjcmVhdGVkT25EYXRlIiwicmVsYXRlZE5vblJlc29sdmVkQWN0aXZlTWFqb3JJbmNpZGVudHMiLCJtYWpvckluY2lkZW50IiwiY2VsbCIsIkludGVybmFsTW9kZWwkdCIsIlJFVFJJRVZFX01VTFRJUExFX0lOQ0lERU5UX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCIsIm5ld0d1aWQiLCJsZXR0ZXIiLCJ1c2VMaXZlQ3J1ZFNlcnZpY2UiLCJjcmVhdGUiLCJwbHVyYWxMb2dpY2FsTmFtZSIsImJvZHkiLCJ0b2tlbiIsInJlc3BvbnNlIiwicmVjb3JkSWQiLCJidWlsZFVwc2VydEJvZHkiLCJ0aHJvd0Vycm9yRnJvbVJlc3BvbnNlIiwiZXh0cmFjdGVkUmVjb3JkSWQiLCJyZXRyaWV2ZU11bHRpcGxlIiwiZmlsdGVycyIsInNlbGVjdFF1ZXJ5IiwiZm9ybWF0U2VsZWN0UXVlcnkiLCJmaWx0ZXJRdWVyeSIsImZvcm1hdEZpbHRlclF1ZXJ5IiwiZXhwYW5kZWRQcm9wZXJ0aWVzUXVlcnkiLCJmb3JtYXRFeHBhbmRlZFByb3BlcnRpZXNRdWVyeSIsInJlcXVlc3RVcmwiLCJyZXRyaWV2ZSIsInVwZGF0ZSIsImV4ZWN1dGVGZWVkYmFja1BvcnRhbEFjdGlvbiIsImZlZWRiYWNrRGVzY3JpcHRpb24iLCJmZWVkYmFja0NhdGVnb3J5IiwiZXhlY3V0ZVBvcnRhbEFjdGlvbiIsImV4ZWN1dGVSZXF1ZXN0Q2xvc3VyZVBvcnRhbEFjdGlvbiIsImluY2lkZW50SWQiLCJleGVjdXRlUmVxdWVzdFJlb3BlblBvcnRhbEFjdGlvbiIsImV4ZWN1dGVTZW5kSW52aXRhdGlvblBvcnRhbEFjdGlvbiIsInN1Ym1pc3Npb25EYXRhIiwianNvblN0cmluZyIsInVybFN0cmluZyIsImV4cGVjdGVkU3RhdHVzIiwiZ2VuZXJpY0Vycm9yTWVzc2FnZSIsInBvc3NpYmxlRXJyb3JPYmplY3QiLCJpc09EYXRhRXJyb3IiLCJlcnJvclBhcnQiLCJvYmplY3QiLCJvYmplY3RBc09EYXRhRXJyb3JSZXNwb25zZSIsImNvbHVtbk5hbWVzIiwiY29sdW1uIiwicXVlcnlTdHJpbmciLCJjb2x1bW5OYW1lIiwibmVzdGVkUHJvcCIsIm1hcE5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibWFwcGluZyIsImV4cGFuZGVkUHJvcGVydGllcyIsIkFjdGl2aXR5U3RhdGVDb2RlIiwiRGlyZWN0aW9uQ29kZSIsIlBvcnRhbENvbW1lbnRTdGF0dXNDb2RlIiwiTW9ja1BvcnRhbENvbW1lbnREYXRhIiwiTW9ja01ham9ySW5jaWRlbnRVcGRhdGVEYXRhIiwiTW9ja1BvcnRhbEVtYWlsRGF0YSIsIkNhc2VVcmdlbmN5IiwiQ2FzZVNldmVyaXR5Q29kZSIsIkNhc2VPcmlnaW5Db2RlIiwiTW9ja0luY2lkZW50RGF0YSIsIk1vY2tQcm9kdWN0RGF0YSIsIk9yZGVyU3RhdGVDb2RlIiwiT3JkZXJTdGF0dXNDb2RlIiwiTW9ja0Jhc2U2NE9yZGVyRm9ybVBERiIsIk1vY2tPcmRlckZvcm1EYXRhIiwiUHJvZHVjdFR5cGVDb2RlIiwiUHJvamVjdFN0YXRlQ29kZSIsIlByb2plY3RTdGF0dXNDb2RlIiwiTW9ja1Byb2plY3REYXRhIiwiTW9ja09yZGVyTGluZURhdGEiLCJNb2NrT3JkZXJEYXRhIiwiUG9ydGFsSW52aXRhdGlvbkF1dGhlbnRpY2F0aW9uVHlwZSIsIlBvcnRhbEludml0YXRpb25TdGF0dXNDb2RlIiwiTW9ja1BvcnRhbEludml0YXRpb25EYXRhIiwiTW9ja1BvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhIiwiTW9ja0Jsb2dQb3N0RGF0YSIsIk5ldHdvcmtPcmRlclN0YXRlQ29kZSIsIk5ldHdvcmtPcmRlclN0YXR1c0NvZGUiLCJDdXN0b21lckFzc2V0U3RhdGVDb2RlIiwiTW9ja0N1c3RvbWVyQXNzZXREYXRhIiwiTmV0d29ya09yZGVyU3RhZ2VTdGF0ZUNvZGUiLCJOZXR3b3JrT3JkZXJTdGFnZVN0YXR1c0NvZGUiLCJOZXR3b3JrT3JkZXJTdGFnZVR5cGUiLCJNb2NrTmV0d29ya09yZGVyU3RhZ2VEYXRhIiwiTW9ja05ldHdvcmtPcmRlckRhdGEiLCJNb2NrSW52b2ljZURhdGEiLCJ1c2VNb2NrQ3J1ZFNlcnZpY2UiLCJjdXN0b21lckFzc2V0RGF0YSIsInNldEN1c3RvbWVyQXNzZXREYXRhIiwiY29udGFjdERhdGEiLCJzZXRDb250YWN0RGF0YSIsImluY2lkZW50RGF0YSIsInNldEluY2lkZW50RGF0YSIsInByb2R1Y3REYXRhIiwic2V0UHJvZHVjdERhdGEiLCJpbnZvaWNlRGF0YSIsInNldEludm9pY2VEYXRhIiwib3JkZXJEYXRhIiwic2V0T3JkZXJEYXRhIiwibmV0d29ya09yZGVyRGF0YSIsInNldE5ldHdvcmtPcmRlckRhdGEiLCJwcm9qZWN0RGF0YSIsInNldFByb2plY3REYXRhIiwib3JkZXJGb3JtRGF0YSIsInNldE9yZGVyRm9ybURhdGEiLCJwb3J0YWxFbWFpbERhdGEiLCJzZXRQb3J0YWxFbWFpbERhdGEiLCJwb3J0YWxDb21tZW50RGF0YSIsInNldFBvcnRhbENvbW1lbnREYXRhIiwicG9ydGFsSW52aXRhdGlvbkRhdGEiLCJzZXRQb3J0YWxJbnZpdGF0aW9uRGF0YSIsImFjY291bnREYXRhIiwic2V0QWNjb3VudERhdGEiLCJibG9nUG9zdERhdGEiLCJzZXRCbG9nUG9zdERhdGEiLCJtYWpvckluY2lkZW50VXBkYXRlRGF0YSIsInNldE1ham9ySW5jaWRlbnRVcGRhdGVEYXRhIiwicG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZURhdGEiLCJzZXRQb3J0YWxNYWpvckluY2lkZW50VXBkYXRlRGF0YSIsImlkQ29sdW1uTmFtZSIsInNldHRlciIsIm1vY2tDcmVhdGlvbkJlaGF2aW91ciIsImdldERhdGFTZXRJbmZvIiwiY3JlYXRlZFJlY29yZCIsImRlbGF5VGltZSIsImV4aXN0aW5nUmVjb3JkIiwidXBkYXRlZFJlY29yZCIsImZpbHRlckRhdGEiLCJmaWx0ZXJSZWNvcmQiLCJtcyIsInJlcyIsIkludGVybmFsTW9kZWwkcyIsIlBST0RVQ1RfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJHIiLCJDVVNUT01FUl9BU1NFVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkcSIsIlJFVFJJRVZBTF9DT05UQUNUX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCRwIiwiQUNUSVZJVFlfUEFSVFlfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJG8iLCJDUkVBVEVfUE9SVEFMX0NPTU1FTlRfSU5DSURFTlRfTUVUQURBVEEiLCJDUkVBVEVfUE9SVEFMX0NPTU1FTlRfTkVUV09SS19PUkRFUl9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkbiIsIlVQREFURV9QT1JUQUxfQ09NTUVOVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkbSIsIlJFVFJJRVZBTF9QT1JUQUxfQ09NTUVOVF9JTkNJREVOVF9NRVRBREFUQSIsIlJFVFJJRVZBTF9QT1JUQUxfQ09NTUVOVF9ORVRXT1JLX09SREVSX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCRsIiwiQUNDT1VOVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkayIsIlBPUlRBTF9NQUpPUl9JTkNJREVOVF9VUERBVEVfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJGoiLCJQT1JUQUxfSU5WSVRFX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCRpIiwiQkxPR19QT1NUX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCRoIiwiQU5OT1RBVElPTl9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkZyIsIk9SREVSRk9STV9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkZiIsIk9SREVSTElORV9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkZSIsIk9SREVSX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCRkIiwiUFJPSkVDVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkYyIsIkNSRUFURV9JTkNJREVOVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkYiIsIk1BSk9SX0lOQ0lERU5UX1VQREFURV9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkYSIsIlBPUlRBTF9FTUFJTF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkOSIsIlJFVFJJRVZBTF9JTkNJREVOVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkOCIsIlVQREFURV9JTkNJREVOVF9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkNyIsIkNSRUFURV9DT05UQUNUX01FVEFEQVRBIiwiSW50ZXJuYWxNb2RlbCQ2IiwiVVBEQVRFX0NPTlRBQ1RfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJDUiLCJVUERBVEVfTkVUV09SS19PUkRFUl9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkNCIsIk5FVFdPUktfT1JERVJfU1RBR0VfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJDMiLCJSRVRSSUVWQUxfTkVUV09SS19PUkRFUl9NRVRBREFUQSIsIkludGVybmFsTW9kZWwkMiIsIlJFVFJJRVZFX01VTFRJUExFX05FVFdPUktfT1JERVJfTUVUQURBVEEiLCJJbnRlcm5hbE1vZGVsJDEiLCJVUERBVEVfVEVSTVNfQU5EX0NPTkRJVElPTlNfQ09OVEFDVF9NRVRBREFUQSIsIklOVk9JQ0VfTUVUQURBVEEiLCJ1c2VEYXRhU2VydmljZSIsInVzZXJJZCIsImxpdmVDcnVkU2VydmljZSIsIm1vY2tDcnVkU2VydmljZSIsImNydWRTZXJ2aWNlIiwiY3JlYXRlSW5jaWRlbnQiLCJjcmVhdGVkSW5jaWRlbnRJZCIsImNyZWF0ZUNvbnRhY3QiLCJjcmVhdGVkQ29udGFjdElkIiwidXBkYXRlSW5jaWRlbnQiLCJwYXJ0aWFsVXBkYXRlIiwidXBkYXRlQ29udGFjdCIsInVwZGF0ZUFjY291bnQiLCJhY2NvdW50IiwidXBkYXRlT3JkZXIiLCJvcmRlcmlkIiwidXBkYXRlTmV0d29ya09yZGVyIiwibmV0d29ya09yZGVySWQiLCJuZXR3b3JrT3JkZXIiLCJzZW5kUG9ydGFsQ29tbWVudCIsInBvcnRhbENvbW1lbnQiLCJlbnRpdHlUeXBlIiwiY3JlYXRlZFBvcnRhbENvbW1lbnRJZCIsInNldFBvcnRhbFRlcm1zT2ZBZ3JlZW1lbnREYXRlIiwicmV0cmlldmVPcmRlckZvcm1JbmZvIiwib3JkZXJmb3JtaWQiLCJyZXRyaWV2ZUFjdGl2ZUluY2lkZW50cyIsInJldHJpZXZlSW5jaWRlbnQiLCJyZXRyaWV2ZUNvbnRhY3QiLCJyZXRyaWV2ZU9yZGVyIiwic2FsZXNPcmRlcklkIiwicmV0cmlldmVJbnZvaWNlIiwiaW52b2ljZUlkIiwicmV0cmlldmVOZXR3b3JrT3JkZXIiLCJyZXRyaWV2ZUN1c3RvbWVyQXNzZXQiLCJjdXN0b21lckFzc2V0SWQiLCJyZXRyaWV2ZVJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cyIsInJldHJpZXZlQ2xvc2VkSW5jaWRlbnRzIiwicmV0cmlldmVBY2NvdW50cyIsInJldHJpZXZlQ29udGFjdHMiLCJyZXRyaWV2ZVByb2R1Y3RzIiwiY3VzdG9tZXJBc3NldCIsInByb2R1Y3QiLCJyZXRyaWV2ZU9yZGVycyIsInJldHJpZXZlSW52b2ljZXMiLCJyZXRyaWV2ZU5ldHdvcmtPcmRlcnMiLCJyZXRyaWV2ZVByb2plY3RzIiwicmV0cmlldmVDdXN0b21lckFzc2V0cyIsInJldHJpZXZlUG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNSZWdhcmRpbmdBY3RpdmVBbmRSZWNlbnRseVJlc29sdmVkTWFqb3JJbmNpZGVudHMiLCJyZXRyaWV2ZVBvcnRhbEludml0YXRpb25zIiwicmV0cmlldmVCbG9nUG9zdFJlY29yZHMiLCJ1c2VDbG9zZWRDYXNlcyIsImRhdGFTZXJ2aWNlIiwiQ2FzZXNDbG9zZWQiLCJEcm9wZG93bkZpZWxkIiwic2VsZWN0RWxlbWVudFJlZiIsImFkZGl0aW9uYWxTZWxlY3RQcm9wcyIsIk11bHRpTGluZVN0cmluZ0ZpZWxkIiwidGV4dEFyZWFSZWYiLCJhZGRpdGlvbmFsVGV4dEFyZWFQcm9wcyIsIlN0cmluZ0ZpZWxkIiwiaW5wdXRFbGVtZW50UmVmIiwiQ2FzZXNDcmVhdGUiLCJzZXRJbmNpZGVudCIsInByaW9yaXR5IiwiY2FsY3VsYXRlUHJpb3JpdHkiLCJmb3JtU3VibWl0QXR0ZW1wdGVkIiwic2V0Rm9ybVN1Ym1pdEF0dGVtcHRlZCIsInNldElzTG9hZGVkIiwib25TdWJtaXQiLCJjcmVhdGVkSW5jaWRlbnQiLCJlZGl0Q2FzZVVybCIsInN1Ym1pdERpc2FibGVkUmVhc29ucyIsImJpc3RlY2hfY3VzdG9tZXJyZWZlcmVuY2UiLCJfcHJpbWFyeWNvbnRhY3RpZF92YWx1ZSIsImJpc3RlY2hfdXJnZW5jeSIsInNldmVyaXR5Y29kZSIsIlByaW9yaXR5RGVzY3JpcHRvciIsImRlc2NyaXB0aW9uIiwiUFJJT1JJVFlfREVTQ1JJUFRJT05TIiwicHJpb3JpdHlDb2RlIiwidXJnZW5jeSIsInNldmVyaXR5IiwiZ2V0Q29udGFjdHNGaWx0ZXJHcm91cHMiLCJmaWx0ZXJlZENvbnRhY3RzIiwiZ2V0Q29udGFjdHNTdW1tYXJ5U2VjdGlvbnMiLCJwcmltYXJ5Q29udGFjdCIsImdldENvbnRhY3RUYWJsZUhlYWRlckNlbGxzIiwiQ29udGFjdHMiLCJhY2NvdW50cyIsInNvcnRlZENvbnRhY3RzIiwiY29udGFjdEEiLCJjb250YWN0QiIsImNvbnRhY3RzRmlsdGVyR3JvdXBzIiwidXNlclBhcmVudEFjY291bnRJZCIsImNvbm5lY3RlZEFjY291bnQiLCJrZXlTZXJ2aWNlQ29udGFjdCIsInN1bW1hcnlTZWN0aW9ucyIsIm1hdGNoaW5nQ29udGFjdHMiLCJDYXNlc01ham9ySW5jaWRlbnRzIiwicG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXMiLCJyZWxldmFudE1ham9ySW5jaWRlbnRzIiwicG9ydGFsTWFqb3JJbmNpZGVudFVwZGF0ZXNCeVBhcmVudENhc2UiLCJjYXNlcyIsInBvcnRhbE1ham9ySW5jaWRlbnRVcGRhdGUiLCJtYXRjaGluZ0VudHJ5IiwiY2hpbGRyZW5VcGRhdGVzIiwiZ2V0TWFqb3JJbmNpZGVudFVwZGF0ZVR5cGUiLCJzdWJqZWN0IiwiUmFkaW9CdXR0b25Cb29sZWFuRmllbGQiLCJUZWxlcGhvbmVGaWVsZCIsInZhbGlkaXR5IiwiUG9wdXBMaW5rRmllbGQiLCJUZWFjaGluZ0J1YmJsZU11bHRpU3RlcCIsInNob3VsZFNob3dTcGlubmVyIiwic2V0U2hvdWxkU2hvd1NwaW5uZXIiLCJtb2RhbFN1Ym1pc3Npb25TdGF0ZSIsInNldE1vZGFsU3VibWlzc2lvblN0YXRlIiwib25DbG9zZU1vZGFsIiwiaXNNb2RhbFNob3duIiwic2V0SXNNb2RhbFNob3duIiwicmF3RXJyb3IiLCJDYWxsVG9BY3Rpb25CYXNlUGFnZSIsImJ1dHRvbkluZm8iLCJOb3RGb3VuZCIsInRvUGFydGlhbERpZmYiLCJpbml0aWFsIiwidXBkYXRlZCIsInBhcnRpYWwiLCJ1cGRhdGVkVmFsdWUiLCJEaXNtaXNzQ2lyY2xlUmVndWxhciIsIlBlb3BsZUNvbW11bml0eVJlZ3VsYXIiLCJQZXJzb25SZWd1bGFyIiwiUEVSTUlTU0lPTlMiLCJTdWJMZXZlbFBlcm1pc3Npb25DYXRlZ29yeSIsImlzRW5hYmxlZCIsIlBFUk1JU1NJT05fTEVWRUxfVEVBQ0hJTkdfQlVCQkxFX1NIT1dOX0lEIiwiVG9wTGV2ZWxQZXJtaXNzaW9uQ2F0ZWdvcnkiLCJoYXNMb2FkZWQiLCJzZXRIYXNMb2FkZWQiLCJzdWJDYXRlZ29yeSIsIlBlcm1pc3Npb25zUGFuZWwiLCJzZXRDb250YWN0IiwicGVybWlzc2lvbiIsImNvbnRhY3RUb1VwZGF0ZSIsIlBlcm1pc3Npb25MZXZlbFN1bW1hcnkiLCJDb250YWN0c0VkaXRDb250ZW50IiwiX24iLCJfcSIsIl9yIiwiX3MiLCJfdCIsInNhdmVQcmVyZXF1aXNpdGVzIiwiY2FsbFRvQWN0aW9uSW5mb3JtYXRpb24iLCJzZXRDYWxsVG9BY3Rpb25JbmZvcm1hdGlvbiIsIm1vc3RSZWNlbnRQb3J0YWxJbnZpdGF0aW9uIiwic2V0TW9zdFJlY2VudFBvcnRhbEludml0YXRpb24iLCJjYWxsVG9BY3Rpb25UaXRsZSIsInNldENhbGxUb0FjdGlvblRpdGxlIiwiY2FsbFRvQWN0aW9uRGVzY3JpcHRpb24iLCJzZXRDYWxsVG9BY3Rpb25EZXNjcmlwdGlvbiIsImNhbGxUb0FjdGlvbkljb24iLCJzZXRDYWxsVG9BY3Rpb25JY29uIiwiaXNQb3B1cE9wZW4iLCJzZXRJc1BvcHVwT3BlbiIsInRlYWNoaW5nQnViYmxlU3RhdGUiLCJzZXRUZWFjaGluZ0J1YmJsZVN0YXRlIiwic3RhdGVjb2RlIiwiY29udGFjdFRvVmFsaWRhdGUiLCJoYXNVbnNhdmVkQ2hhbmdlcyIsInNldENhbGxUb0FjdGlvbkluZm8iLCJhY3RpdmF0ZUNvbnRhY3QiLCJ1cGRhdGVkQ29udGFjdCIsImRlYWN0aXZhdGVDb250YWN0IiwibGVnYWxFbnRpdHkiLCJzZW5kSW52aXRlIiwic2V0QXNLZXlDb250YWN0QnV0dG9uIiwidXBkYXRlZEFjY291bnQiLCJub0VtYWlsQWRkcmVzc1NlbmRJbnZpdGVFcnJvciIsIm5vQWNjZXNzU2VuZEludml0ZUVycm9yIiwiaXNEZWFjdGl2YXRlQnV0dG9uRGlzcGxheWVkIiwiaXNDdXJyZW50VXNlciIsImlzQWN0aXZhdGVCdXR0b25EaXNwbGF5ZWQiLCJpc0luYWN0aXZlIiwiaXNTZW5kSW52aXRlQnV0dG9uRGlzcGxheWVkIiwiaGFzUGVuZGluZ0ludml0ZSIsImlzU2V0QXNLZXlDb250YWN0QnV0dG9uRGlzcGxheWVkIiwiaXNBZG1pbmlzdHJhdG9yIiwiaXNLZXlDb250YWN0IiwiaXNDaGFuZ2VQYXNzd29yZEJ1dHRvbkRpc3BsYXllZCIsImlzTG9jYWxBdXRoIiwic2VuZEludml0ZUJ1dHRvbiIsImNoYW5nZVBhc3N3b3JkQnV0dG9uIiwicG9ydGFsSW52aXRhdGlvbiIsInNvcnRlZFBvcnRhbEludml0YXRpb25zIiwiaW52aXRhdGlvbkEiLCJpbnZpdGF0aW9uQiIsInBlcm1pc3Npb25MZXZlbEZpZWxkUmVmIiwiZmlyc3RuYW1lIiwibGFzdG5hbWUiLCJqb2J0aXRsZSIsIl9iaXN0ZWNoX3ByaW1hcnlzaXRlX3ZhbHVlIiwiZW1haWxhZGRyZXNzMSIsIl91IiwidGVsZXBob25lMSIsIm1vYmlsZXBob25lIiwiYmlzdGVjaF9yZWNlaXZlYWxlcnRub3RpZmljYXRpb25zIiwiYmlzdGVjaF9yZWNlaXZlcGV3bm90aWZpY2F0aW9ucyIsImJpc3RlY2hfcmVjZWl2ZW1ham9yaW5jaWRlbnR1cGRhdGVzIiwiYmlzdGVjaF9yZWNlaXZlc2VjdXJpdHl1cGRhdGVzIiwiYmlzdGVjaF9yZWNlaXZlY3VzdG9tZXJuZXdzbGV0dGVyIiwiYmlzdGVjaF9yZWNlaXZlcHJvZHVjdHVwZGF0ZXMiLCJjb250YWN0UGVybWlzc2lvbnMiLCJDb250YWN0c0NyZWF0ZSIsImNyZWF0ZWRDb250YWN0IiwiZWRpdENvbnRhY3RVcmwiLCJiaXN0ZWNoX3BvcnRhbGNvbnRhY3R0eXBlIiwiQ29udGFjdHNFZGl0RnJvbUlkIiwic2F2ZUtleSIsInNldFNhdmVLZXkiLCJyZXRyaWV2ZWRDb250YWN0Iiwic2V0UmV0cmlldmVkQ29udGFjdCIsImluaXRpYWxDb250YWN0IiwibWF0Y2hpbmdDb250YWN0IiwiQ29udGFjdHNFZGl0IiwiSURfUVVFUllfU1RSSU5HX1BBUkFNRVRFUl9OQU1FIiwiSG9tZVBhZ2VUaWxlIiwiaW1hZ2VQYXRoIiwibW9kYWxNZXNzYWdlIiwicHJvZHVjdHMiLCJ1c2VyTGluayIsInNldFVzZXJMaW5rIiwibW9kYWxJc09wZW4iLCJzZXRNb2RhbElzT3BlbiIsInBhZ2VMaW5rIiwidGlsZUxpbmsiLCJvcGVuSW5mb3JtYXRpb25Nb2RhbCIsIm1vZGFsSW5mbyIsIm5ld1dpbmRvdyIsImhvbWVQYWdlV2lkdGgiLCJIb21lIiwic2Nyb2xsYmFyU2l6ZSIsIm5hdmlnYXRpb25QYW5lV2lkdGgiLCJQcm9maWxlIiwiRGlhbG9nIiwiYmFja2dyb3VuZEltYWdlVXJsIiwiVGVybXNBbmRDb25kaXRpb25zIiwiYWNjZXB0VGVybXNBbmRDb25kaXRpb25zIiwiYWNjZXB0ZWREYXRlIiwiRGV2TW9kZUxpbWl0YXRpb24iLCJGb3JiaWRkZW4iLCJiYXNlUGVybWlzc2lvbkxldmVsIiwiVGltZWxpbmVDYXJkRGF0ZSIsIm1vbnRoQW5kWWVhciIsImhvdXJzQW5kTWludXRlcyIsIlRpbWVsaW5lQ2FyZCIsImJpc3RlY2hQYXJ0eSIsImN1c3RvbWVyUGFydHkiLCJDb21tZW50RmllbGQiLCJQYXJ0aWNpcGF0aW9uVHlwZU1hc2siLCJUaW1lbGluZUNvbW1lbnRDYXJkIiwiZW50aXR5SWQiLCJzZXRJc0V4cGFuZGVkIiwic2V0UG9ydGFsQ29tbWVudCIsImNyZWF0ZWRQb3J0YWxDb21tZW50IiwiVGltZWxpbmUiLCJlbWFpbFRpbWVsaW5lUmVjb3JkcyIsImVtYWlsIiwiY29tbWVudFRpbWVsaW5lUmVjb3JkcyIsImNvbW1lbnQiLCJtYWpvckluY2lkZW50VGltZWxpbmVSZWNvcmRzIiwibWFqb3JJbmNpZGVudFVwZGF0ZSIsInNvcnRlZFRpbWVsaW5lUmVjb3JkcyIsInJlY29yZEEiLCJyZWNvcmRCIiwidGltZWxpbmVSZWNvcmQiLCJDYXNlc0VkaXRDb250ZW50IiwiaW5jaWRlbnRUb1VwZGF0ZSIsInN1Ym1pc3Npb25SZWFzb24iLCJzZXRTdWJtaXNzaW9uUmVhc29uIiwicG9ydGFsQ29tbWVudHMiLCJzZXRQb3J0YWxDb21tZW50cyIsInVwZGF0ZWRJbmNpZGVudCIsImdldENhbGxUb0FjdGlvbkluZm9ybWF0aW9uIiwiY29tbWVudERlc2NyaXB0aW9uIiwiY3JlYXRlZENvbW1lbnQiLCJyZXF1ZXN0Q2xvc3VyZUJ1dHRvbiIsInVwZGF0ZWRDYXNlIiwicmVxdWVzdFJlb3BlbkJ1dHRvbiIsImNvbmZpcm1DbG9zdXJlQnV0dG9uIiwic2hvdWxkU2hvd1JlcXVlc3RDbG9zdXJlQnV0dG9uIiwic2hvdWxkU2hvd1JlcXVlc3RSZW9wZW5CdXR0b24iLCJzaG91bGRTaG93Q29uZmlybUNsb3N1cmVCdXR0b24iLCJnZXRDb3JyZWN0Q2FzZURlc2NyaXB0aW9uIiwiZ2V0Q29ycmVjdENhc2VTdGF0dXNJY29uIiwiY2FzZVN0YXR1cyIsImlzUmVhZE9ubHkiLCJDYXNlc0VkaXRGcm9tSWQiLCJhY3RpdmVJbmNpZGVudHMiLCJjbG9zZWRJbmNpZGVudHMiLCJyZXRyaWV2ZWRJbmNpZGVudCIsInNldFJldHJpZXZlZEluY2lkZW50IiwiaW5pdGlhbEluY2lkZW50IiwiQ2FzZXNFZGl0IiwiY2FzZUlkIiwiZ2V0T3JkZXJUYWJsZUhlYWRlckNlbGxzIiwiZ2V0T3JkZXJzRmlsdGVyR3JvdXAiLCJmaWx0ZXJlZE9yZGVycyIsIm9yZGVycyIsIk9yZGVycyIsImFzU29ydGVkTG9hZGluZ0RhdGEiLCJzb3J0ZWRPcmRlcnMiLCJzbGljZWRPcmRlckRhdGEiLCJvcmRlckEiLCJvcmRlckIiLCJvcmRlcnNGaWx0ZXJHcm91cHMiLCJvcmRlcnNUb0Rpc3BsYXkiLCJzdGF0dXNUaWxlcyIsInN0YXR1c0xhYmVsIiwiRm9ybWF0dGluZ0hlbHBlciIsIm1vbmV5IiwicGF5bWVudE1ldGhvZENvZGUiLCJnZXRPcmRlcmxpbmVUYWJsZUhlYWRlckNlbGxzIiwiUGxhY2Vob2xkZXIiLCJjb250ZW50U3R5bGVzIiwiUHJvamVjdERldGFpbHNNb2RhbCIsInByb2plY3QiLCJwcm9qZWN0RGV0YWlsc0lzU2hvd24iLCJzZXRQcm9qZWN0RGV0YWlsc0lzU2hvd24iLCJjYW5jZWxJY29uIiwiT3JkZXJzRWRpdENvbnRlbnQiLCJjdXJyZW50bHlTZWxlY3RlZE9yZGVyIiwibmV0d29ya09yZGVycyIsInByb2plY3RzIiwib3JkZXJDb250YWN0Iiwic2V0T3JkZXJDb250YWN0IiwibGF0ZXN0QW5ub3RhdGlvbiIsInNldExhdGVzdEFubm90YXRpb24iLCJjYWxsVG9BY3Rpb25EZXRhaWxzIiwic2V0Q2FsbFRvQWN0aW9uRGV0YWlscyIsIm1heGltdW1QYWdpbmF0aW9ucyIsImN1cnJlbnRseVNlbGVjdGVkUGFnZSIsInNldEN1cnJlbnRseVNlbGVjdGVkUGFnZSIsIm9yZGVyRm9ybUlzU2hvd24iLCJzZXRPcmRlckZvcm1Jc1Nob3duIiwic29ydGVkQW5kUGFnaW5hdGVkTGluZXMiLCJzZXRTb3J0ZWRBbmRQYWdpbmF0ZWRMaW5lcyIsImdldFNvcnRlZENvbHVtblZhbHVlIiwib3JkZXJsaW5lIiwiaXRlbUJhc2VkT3JkZXJMaW5lcyIsImxpbmUiLCJwcm9qZWN0QmFzZWRPcmRlckxpbmVzIiwiaGFuZGxlU29ydGluZ0ZvclR5cGUiLCJvcmRlcmxpbmVBIiwib3JkZXJsaW5lQiIsImFWYWwiLCJiVmFsIiwib3JkZXJMaW5lc1RvU2hvdyIsIm1vc3RSZWNlbnRBbm5vdGF0aW9uIiwiaXNMYXRlc3RPcmRlckZvcm1Bbm5vdGF0aW9uVmFsaWQiLCJpbmNyZW1lbnRTZWxlY3RlZFBhZ2UiLCJkZWNyZW1lbnRTZWxlY3RlZFBhZ2UiLCJzZWxmIiwibGluZU5ldHdvcmtPcmRlciIsIm5vIiwibGluZVByb2plY3QiLCJudW1iZXIiLCJPcmRlcnNFZGl0RnJvbUlkIiwicmV0cmlldmVkT3JkZXIiLCJzZXRSZXRyaWV2ZWRPcmRlciIsImluaXRpYWxPcmRlciIsIm1hdGNoaW5nT3JkZXIiLCJPcmRlcnNFZGl0Iiwib3JkZXJJZCIsInVzZXJIYXNQb3J0YWxBY2Nlc3MiLCJoYXNQb3J0YWxDYXNlQWNjZXNzIiwiaGFzUG9ydGFsQ29udGFjdEFjY2VzcyIsImhhc1BvcnRhbG9yZGVyQWNjZXNzIiwiaGFzUG9ydGFsSW52b2ljZUFjY2VzcyIsIk5ldHdvcmtPcmRlclN0YWdlQ29tcG9uZW50IiwibmV0d29ya09yZGVyU3RhZ2UiLCJzaG91bGRTaG93UG9wdXAiLCJzZXRTaG91bGRTaG93UG9wdXAiLCJpbnN0YWxsTWVzc2FnZSIsImluc3RhbGxUeXBlIiwic3RhZ2VNYXBwaW5ncyIsInN0YWdlIiwidXNlU3dpcGVMaXN0ZW5lciIsIm9uU3dpcGUiLCJzdGFydFRvdWNoIiwic2V0U3RhcnRUb3VjaCIsImVuZFRvdWNoIiwieERpc3RhbmNlIiwieURpc3RhbmNlIiwiZGV0ZWN0ZWRTd2lwZURpcmVjdGlvbiIsInJlZkN1cnJlbnQiLCJBbmltYXRlIiwic3dpcGVEaXJlY3Rpb24iLCJNb2JpbGVDYXJvdXNlbCIsImN1cnJlbnRJbmRleCIsInVwZGF0ZUluZGV4Iiwic2V0U3dpcGVEaXJlY3Rpb24iLCJoYW5kbGVDbGlja1VwZGF0ZSIsIk5ldHdvcmtPcmRlcnNFZGl0Q29udGVudCIsImN1cnJlbnRseVNlbGVjdGVkTmV0d29ya09yZGVyIiwibmV0d29ya09yZGVyU3RhZ2VzIiwiY3VzdG9tZXJBc3NldHMiLCJsaW5lV2lkdGgiLCJzZXRMaW5lV2lkdGgiLCJyZWxhdGVkT3JkZXIiLCJyZWxhdGVkQ3VzdG9tZXJBc3NldCIsInJlbGF0ZWRTaXRlIiwic2V0UmVsYXRlZFNpdGUiLCJzZWxlY3RlZFN0YWdlIiwic2V0U2VsZWN0ZWRTdGFnZSIsIm5ldHdvcmtPcmRlclRvVXBkYXRlIiwic2V0TmV0d29ya09yZGVyIiwic2hvd1JlcXVlc3RPcmRlckJ1dHRvbiIsInJlcXVlc3RPcmRlckJ1dHRvbiIsInVwZGF0ZWROZXR3b3JrT3JkZXIiLCJnZXRDYWxsVG9BY3Rpb25EZXRhaWxzIiwidG90YWxTdGFnZXNXaWR0aCIsIm5ldHdvcmtPcmRlclN0YWdlc0NvbnRhaW5lcldpZHRoIiwiZXZlbmx5RGlzdHJpYnV0ZWRMaW5lV2lkdGgiLCJub3MiLCJfYmlzdGVjaF9jb250YWN0X3ZhbHVlIiwiTmV0d29ya09yZGVyc0VkaXRGcm9tSWQiLCJyZXRyaWV2ZWROZXR3b3JrT3JkZXIiLCJzZXRSZXRyaWV2ZWROZXR3b3JrT3JkZXIiLCJpbml0aWFsTmV0d29ya09yZGVyIiwiTmV0d29ya09yZGVyc0VkaXQiLCJnZXRJbnZvaWNlVGFibGVIZWFkZXJDZWxscyIsIkludm9pY2VzIiwiaW52b2ljZXMiLCJzb3J0ZWRJbnZvaWNlcyIsInNsaWNlZEludm9pY2VEYXRhIiwiaW52b2ljZUEiLCJpbnZvaWNlQiIsImludm9pY2VzVG9EaXNwbGF5IiwiaW52b2ljZSIsIkludm9pY2VzVmlld0NvbnRlbnQiLCJpbml0aWFsSW52b2ljZSIsImFubm90YXRpb24iLCJJbnZvaWNlc1ZpZXdGcm9tSWQiLCJyZXRyaWV2ZWRJbnZvaWNlIiwic2V0UmV0cmlldmVkSW52b2ljZSIsIm1hdGNoaW5nSW52b2ljZSIsIkludm9pY2VzVmlldyIsImludm9pY2VpZCIsImdldEZvcmJpZGRlbkVycm9yTWVzc2FnZSIsInBvcnRhbENhc2VQZXJtaXNzaW9uTGV2ZWwiLCJwb3J0YWxDb250YWN0UGVybWlzc2lvbkxldmVsIiwicG9ydGFsT3JkZXJQZXJtaXNzaW9uTGV2ZWwiLCJwb3J0YWxJbnZvaWNlUGVybWlzc2lvbkxldmVsIiwidXNlUGFnZU5hdmlnYXRpb24iLCJwYWdlSW5mbyIsInJlbW92ZVRyYWlsaW5nU2xhc2hlcyIsInN0ciIsIk5hdmlnYXRpb25MaW5rIiwiaWNvblBhdGgiLCJpc1NpbmdsZVBhZ2VBcHBMaW5rIiwiaXNDdXJyZW50UGFnZSIsIk5hdmlnYXRpb25NZW51R3JvdXAiLCJuYXZpZ2F0aW9uTWVudUdyb3VwIiwic2V0TW9kYWxJbmZvIiwicHJvZHVjdExpbmtzIiwibmF2aWdhdGlvbk1lbnVHcm91cEl0ZW0iLCJOYXZpZ2F0aW9uUGFuZWwiLCJuYXZpZ2F0aW9uTWVudUdyb3VwcyIsIkFERF9OQVZJR0FUSU9OX01FTlVfR1JPVVBTX0FGVEVSX1BBR0VfVElUTEUiLCJGZWVkYmFja1BhbmUiLCJmZWVkYmFja1BhbmVJc1Nob3duIiwic2V0RXJyb3JNZXNzYWdlIiwic2V0RmVlZGJhY2tDYXRlZ29yeSIsInNldEZlZWRiYWNrTWVzc2FnZSIsInNldFN1Ym1pc3Npb25BcmVhU2hvd25BbmRUeXBlIiwiaGFuZGxlTWVzc2FnZUNoYW5nZSIsInNlbmRQb3J0YWxGZWVkYmFjayIsInVzZURhdGFSZXRyaWV2YWxzIiwiYmxvZ1Bvc3RzIiwiYWN0aXZlTWFqb3JJbmNpZGVudHMiLCJub25NYWpvckluY2lkZW50cyIsInJlY2VudGx5UmVzb2x2ZWRNYWpvckluY2lkZW50cyIsIkFwcCIsImlzTmF2aWdhdGlvblBhbmVsRXhwYW5kZWQiLCJzZXROYXZpZ2F0aW9uUGFuZWxFeHBhbmRlZCIsInByb21wdEtleSIsInNldFByb21wdEtleSIsIlJlYWN0Um91dGVyUHJvbXB0Iiwib25Db25maXJtIiwib25DYW5jZWwiLCJmb3JtYXRQcm9kRXJyb3JNZXNzYWdlIiwiJCRvYnNlcnZhYmxlIiwicmFuZG9tU3RyaW5nIiwiQWN0aW9uVHlwZXMiLCJpc1BsYWluT2JqZWN0IiwicHJvdG8iLCJjcmVhdGVTdG9yZSIsInJlZHVjZXIiLCJwcmVsb2FkZWRTdGF0ZSIsImVuaGFuY2VyIiwiY3VycmVudFJlZHVjZXIiLCJjdXJyZW50U3RhdGUiLCJjdXJyZW50TGlzdGVuZXJzIiwibmV4dExpc3RlbmVycyIsImlzRGlzcGF0Y2hpbmciLCJlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzIiwic3Vic2NyaWJlIiwicmVwbGFjZVJlZHVjZXIiLCJuZXh0UmVkdWNlciIsIm9ic2VydmFibGUiLCJvdXRlclN1YnNjcmliZSIsIm9ic2VydmVyIiwib2JzZXJ2ZVN0YXRlIiwibm4iLCJybiIsInRuIiwiZW4iLCJ1biIsImFuIiwiVU5ERUZJTkVEIiwiQ29uc3RydWN0b3IiLCJQcm90b3R5cGUiLCJzdHJGdW5jdGlvbiIsIkR5bkluc3RGdW5jVGFibGUiLCJEeW5Qcm94eVRhZyIsIkR5bkNsYXNzTmFtZSIsIkR5bkNsYXNzTmFtZVByZWZpeCIsIkR5bkluc3RDaGtUYWciLCJEeW5BbGxvd0luc3RDaGtUYWciLCJEeW5Qcm90b0RlZmF1bHRPcHRpb25zIiwiVW5rbm93blZhbHVlIiwic3RyX19Qcm90byIsIkR5blByb3RvQmFzZVByb3RvIiwiRHluUHJvdG9HbG9iYWxTZXR0aW5ncyIsIkR5blByb3RvQ3VycmVudCIsInN0clVzZUJhc2VJbnN0Iiwic3RyU2V0SW5zdEZ1bmNzIiwiT2JqIiwiX29iakdldFByb3RvdHlwZU9mIiwiX29iakdldE93blByb3BzIiwiX2dldEdsb2JhbCIsIl9nYmwiLCJfZ2JsSW5zdCIsIl9oYXNPd25Qcm9wZXJ0eSIsIl9pc09iamVjdE9yQXJyYXlQcm90b3R5cGUiLCJfaXNPYmplY3RBcnJheU9yRnVuY3Rpb25Qcm90b3R5cGUiLCJfZ2V0T2JqUHJvdG8iLCJuZXdQcm90byIsImN1clByb3RvIiwiX2ZvckVhY2hQcm9wIiwibHAiLCJfaXNEeW5hbWljQ2FuZGlkYXRlIiwiZnVuY05hbWUiLCJza2lwT3duIiwiX3Rocm93VHlwZUVycm9yIiwiX2dldEluc3RhbmNlRnVuY3MiLCJ0aGlzVGFyZ2V0IiwiaW5zdEZ1bmNzIiwiX2hhc1Zpc2l0ZWQiLCJ2YWx1ZXMiLCJfZ2V0QmFzZUZ1bmNzIiwiY2xhc3NQcm90byIsInVzZUJhc2VJbnN0IiwiX2luc3RGdW5jUHJveHkiLCJmdW5jSG9zdCIsInRoZUZ1bmMiLCJpbnN0RnVuY1RhYmxlIiwiYmFzZUZ1bmNzIiwiYmFzZVByb3RvIiwidmlzaXRlZCIsIl9nZXRJbnN0RnVuYyIsImN1cnJlbnREeW5Qcm90b1Byb3h5IiwiaW5zdEZ1bmMiLCJjYW5BZGRJbnN0Iiwib2JqUHJvdG8iLCJwcm90b0Z1bmMiLCJfZ2V0UHJvdG9GdW5jIiwiX3BvcHVsYXRlUHJvdG90eXBlIiwiYmFzZUluc3RGdW5jcyIsInNldEluc3RhbmNlRnVuYyIsIl9jcmVhdGVEeW5hbWljUHJvdG90eXBlIiwiZHluUHJvdG9Qcm94eSIsImluc3RGdW5jc18xIiwiX2NoZWNrUHJvdG90eXBlIiwidGhpc1Byb3RvIiwiX2dldE9iak5hbWUiLCJ1bmtub3duVmFsdWUiLCJkeW5hbWljUHJvdG8iLCJ0aGVDbGFzcyIsImRlbGVnYXRlRnVuYyIsInBlcmZPcHRpb25zIiwic3RyU2hpbUZ1bmN0aW9uIiwic3RyU2hpbU9iamVjdCIsInN0clNoaW1VbmRlZmluZWQiLCJzdHJTaGltUHJvdG90eXBlIiwic3RyU2hpbUhhc093blByb3BlcnR5IiwiT2JqQ2xhc3MiLCJPYmpQcm90byIsIk9iakFzc2lnbiIsIk9iakNyZWF0ZSIsIk9iakRlZmluZVByb3BlcnR5IiwiT2JqSGFzT3duUHJvcGVydHkiLCJfY2FjaGVkR2xvYmFsIiwiZ2V0R2xvYmFsIiwidXNlQ2FjaGVkIiwidGhyb3dUeXBlRXJyb3IiLCJvYmpDcmVhdGVGbiIsInRtcEZ1bmMiLCJfX29iakFzc2lnbkZuSW1wbCIsIl9fYXNzaWduRm4iLCJleHRlbmRTdGF0aWNzRm4iLCJfX2V4dGVuZHNGbiIsIl9fc3ByZWFkQXJyYXlGbiIsIl9EWU5fSU5JVElBTElaRSIsIl9EWU5fTkFNRSIsIl9EWU5fR0VUX05PVElGWV9NR1IiLCJfRFlOX0lERU5USUZJRVIiLCJfRFlOX1BVU0giLCJfRFlOX0lTX0lOSVRJQUxJWkVEIiwiX0RZTl9DT05GSUciLCJfRFlOX0lOU1RSVU1FTlRBVElPTl9LRVkiLCJfRFlOX0xPR0dFUiIsIl9EWU5fTEVOR1RIIiwiX0RZTl9USU1FIiwiX0RZTl9QUk9DRVNTX05FWFQiLCJfRFlOX0dFVF9QUk9DRVNTX1RFTF9DT05UMCIsIl9EWU5fQUREX05PVElGSUNBVElPTl9MSVMxIiwiX0RZTl9SRU1PVkVfTk9USUZJQ0FUSU9OXzIiLCJfRFlOX1NUT1BfUE9MTElOR19JTlRFUk5BMyIsIl9EWU5fT05fQ09NUExFVEUiLCJfRFlOX0dFVF9QTFVHSU4iLCJfRFlOX0ZMVVNIIiwiX0RZTl9fRVhURU5TSU9OUyIsIl9EWU5fU1BMSUNFIiwiX0RZTl9URUFSRE9XTiIsIl9EWU5fTUVTU0FHRV9JRCIsIl9EWU5fTUVTU0FHRSIsIl9EWU5fSVNfQVNZTkMiLCJfRFlOX19ET19URUFSRE9XTiIsIl9EWU5fVVBEQVRFIiwiX0RZTl9HRVRfTkVYVCIsIl9EWU5fRElBR19MT0ciLCJfRFlOX1NFVF9ORVhUX1BMVUdJTiIsIl9EWU5fQ1JFQVRFX05FVyIsIl9EWU5fQ09PS0lFX0NGRyIsIl9EWU5fSU5ERVhfT0YiLCJfRFlOX1NVQlNUUklORyIsIl9EWU5fVVNFUl9BR0VOVCIsIl9EWU5fU1BMSVQiLCJfRFlOX1NFVF9FTkFCTEVEIiwiX0RZTl9TVUJTVFIiLCJfRFlOX05PREVfVFlQRSIsIl9EWU5fQVBQTFkiLCJfRFlOX1JFUExBQ0UiLCJfRFlOX0VOQUJMRV9ERUJVR19FWENFUFRJNCIsIl9EWU5fTE9HX0lOVEVSTkFMX01FU1NBR0UiLCJfRFlOX1RPX0xPV0VSX0NBU0UiLCJfRFlOX0NBTEwiLCJfRFlOX1RZUEUiLCJfRFlOX0hBTkRMRVIiLCJfRFlOX0xJU1RFTkVSUyIsIl9EWU5fSVNfQ0hJTERfRVZUIiwiX0RZTl9HRVRfQ1RYIiwiX0RZTl9TRVRfQ1RYIiwiX0RZTl9DT01QTEVURSIsIl9EWU5fVFJBQ0VfSUQiLCJfRFlOX1NQQU5fSUQiLCJfRFlOX1RSQUNFX0ZMQUdTIiwiX0RZTl9WRVJTSU9OIiwiU1RSX0VNUFRZIiwiU1RSX0NIQU5ORUxTIiwiU1RSX0NPUkUiLCJTVFJfQ1JFQVRFX1BFUkZfTUdSIiwiU1RSX0RJU0FCTEVEIiwiU1RSX0VYVEVOU0lPTl9DT05GSUciLCJTVFJfRVhURU5TSU9OUyIsIlNUUl9QUk9DRVNTX1RFTEVNRVRSWSIsIlNUUl9QUklPUklUWSIsIlNUUl9FVkVOVFNfU0VOVCIsIlNUUl9FVkVOVFNfRElTQ0FSREVEIiwiU1RSX0VWRU5UU19TRU5EX1JFUVVFU1QiLCJTVFJfUEVSRl9FVkVOVCIsIlNUUl9FUlJPUl9UT19DT05TT0xFIiwiU1RSX1dBUk5fVE9fQ09OU09MRSIsIlNUUl9HRVRfUEVSRl9NR1IiLCJzdHJUb0lTT1N0cmluZyIsImNTdHJFbmRzV2l0aCIsInN0ckluZGV4T2YiLCJzdHJNYXAiLCJzdHJSZWR1Y2UiLCJjU3RyVHJpbSIsInN0clRvU3RyaW5nIiwic3RyQ29uc3RydWN0b3IiLCJfb2JqRGVmaW5lUHJvcGVydHkiLCJfb2JqRnJlZXplIiwiX29iaktleXMiLCJTdHJpbmdQcm90byIsIl9zdHJUcmltIiwiX3N0ckVuZHNXaXRoIiwiRGF0ZVByb3RvIiwiX2RhdGFUb0lTT1N0cmluZyIsIl9pc0FycmF5IiwiX29ialRvU3RyaW5nIiwiX2ZuVG9TdHJpbmciLCJfb2JqRnVuY3Rpb25TdHJpbmciLCJyQ2FtZWxDYXNlIiwick5vcm1hbGl6ZUludmFsaWQiLCJyTGVhZGluZ051bWVyaWMiLCJpc1VuZGVmaW5lZCIsImlzTnVsbE9yVW5kZWZpbmVkIiwiaXNOb3ROdWxsT3JVbmRlZmluZWQiLCJoYXNPd25Qcm9wZXJ0eSIsImlzT2JqZWN0IiwiaXNGdW5jdGlvbiIsIm5vcm1hbGl6ZUpzTmFtZSIsImlzU3RyaW5nIiwiX2FsbCIsIm9iakZvckVhY2hLZXkiLCJjYWxsYmFja2ZuIiwic3RyRW5kc1dpdGgiLCJfc3RyRW5kc1dpdGhQb2x5Iiwic2VhcmNoTGVuIiwidmFsTGVuIiwicG9zIiwic3RyQ29udGFpbnMiLCJfaXNBcnJheVBvbHkiLCJpc051bWJlciIsImlzQm9vbGVhbiIsInRvSVNPU3RyaW5nIiwiX3RvSVNPU3RyaW5nUG9seSIsInBhZCIsIm51bSIsImFyckZvckVhY2giLCJhcnIiLCJ0aGlzQXJnIiwiYXJySW5kZXhPZiIsInNlYXJjaEVsZW1lbnQiLCJmcm9tSW5kZXgiLCJhcnJNYXAiLCJhcnJSZWR1Y2UiLCJzdHJUcmltIiwiX29iaktleXNIYXNEb250RW51bUJ1ZyIsIl9vYmpLZXlzRG9udEVudW1zIiwib2JqS2V5cyIsIm9ialR5cGUiLCJkb250RW51bXNMZW5ndGgiLCJvYmpEZWZpbmVBY2Nlc3NvcnMiLCJnZXRQcm9wIiwic2V0UHJvcCIsImRlc2NyaXB0b3IiLCJfZG9Ob3RoaW5nIiwiZGVlcEZyZWV6ZSIsIm9iakZyZWV6ZSIsImRhdGVOb3ciLCJkdCIsImdldEV4Y2VwdGlvbk5hbWUiLCJmaWVsZCIsInZhbENoayIsInNyY0NoayIsInRoZVZhbHVlIiwiZ2V0U2V0VmFsdWUiLCJkZWZWYWx1ZSIsImdldENmZ1ZhbHVlIiwiaXNUcnV0aHkiLCJ0aHJvd0Vycm9yIiwiX2NyZWF0ZVByb3h5RnVuY3Rpb24iLCJzcmNGdW5jIiwib3JpZ2luYWxBcmd1bWVudHMiLCJwcm94eUFzc2lnbiIsImNoa1NldCIsInByb3h5RnVuY3Rpb25BcyIsIm92ZXJ3cml0ZVRhcmdldCIsInByb3h5RnVuY3Rpb25zIiwiZnVuY3Rpb25zVG9Qcm94eSIsInRoZUZ1bmNOYW1lIiwiY3JlYXRlQ2xhc3NGcm9tSW50ZXJmYWNlIiwiZGVmYXVsdHMiLCJjbGFzc18xIiwiX3RoaXNfMSIsIm9wdGltaXplT2JqZWN0IiwidGhlT2JqZWN0Iiwib2JqRXh0ZW5kIiwib2JqMSIsIm9iajIiLCJvYmozIiwib2JqNCIsIm9iajUiLCJvYmo2IiwidGhlQXJncyIsImV4dGVuZGVkIiwiYXJnTGVuIiwiZGVlcCIsImlzQXJnQXJyYXkiLCJpc0FyZ09iaiIsInByb3BPayIsImlzTmV3QXJyYXkiLCJjbG9uZSIsImNyZWF0ZUVudW1TdHlsZSIsImVudW1DbGFzcyIsImNyZWF0ZVZhbHVlTWFwIiwibWFwQ2xhc3MiLCJzdHJXaW5kb3ciLCJzdHJEb2N1bWVudCIsInN0ckRvY3VtZW50TW9kZSIsInN0ck5hdmlnYXRvciIsInN0ckhpc3RvcnkiLCJzdHJMb2NhdGlvbiIsInN0ckNvbnNvbGUiLCJzdHJQZXJmb3JtYW5jZSIsInN0ckpTT04iLCJzdHJDcnlwdG8iLCJzdHJNc0NyeXB0byIsInN0clJlYWN0TmF0aXZlIiwic3RyTXNpZSIsInN0clRyaWRlbnQiLCJzdHJYTUxIdHRwUmVxdWVzdCIsIl9pc1RyaWRlbnQiLCJfbmF2VXNlckFnZW50Q2hlY2siLCJfZW5hYmxlTW9ja3MiLCJfdXNlWERvbWFpblJlcXVlc3QiLCJfYmVhY29uc1N1cHBvcnRlZCIsIl9oYXNQcm9wZXJ0eSIsInN1cHBvcnRlZCIsInRtcCIsImdldEdsb2JhbEluc3QiLCJnYmwiLCJoYXNXaW5kb3ciLCJoYXNEb2N1bWVudCIsImhhc05hdmlnYXRvciIsImdldE5hdmlnYXRvciIsImhhc0hpc3RvcnkiLCJnZXRIaXN0b3J5IiwiZ2V0TG9jYXRpb24iLCJjaGVja0Zvck1vY2siLCJtb2NrTG9jYXRpb24iLCJnZXRDb25zb2xlIiwiZ2V0UGVyZm9ybWFuY2UiLCJoYXNKU09OIiwiZ2V0SlNPTiIsImdldENyeXB0byIsImdldE1zQ3J5cHRvIiwiaXNSZWFjdE5hdGl2ZSIsImlzSUUiLCJnZXRJRVZlcnNpb24iLCJ1c2VyQWdlbnRTdHIiLCJuYXZpZ2F0b3JfMSIsInRyaWRlbnRWZXIiLCJkdW1wT2JqIiwib2JqZWN0VHlwZUR1bXAiLCJwcm9wZXJ0eVZhbHVlRHVtcCIsImlzQmVhY29uc1N1cHBvcnRlZCIsImlzRmV0Y2hTdXBwb3J0ZWQiLCJ3aXRoS2VlcEFsaXZlIiwiaXNTdXBwb3J0ZWQiLCJyZXF1ZXN0IiwidXNlWERvbWFpblJlcXVlc3QiLCJpc1hoclN1cHBvcnRlZCIsInhtbEh0dHBSZXF1ZXN0IiwibGlzdGVuZXJGdW5jcyIsIl9haU5hbWVzcGFjZSIsIl9kZWJ1Z0xpc3RlbmVyIiwiX2xpc3RlbmVyUHJveHlGdW5jIiwiZGJnRXh0IiwiZ2V0RGVidWdFeHQiLCJfZ2V0RXh0ZW5zaW9uTmFtZXNwYWNlIiwibnMiLCJnZXREZWJ1Z0xpc3RlbmVyIiwiQWlOb25Vc2VyQWN0aW9uYWJsZVByZWZpeCIsIkFpVXNlckFjdGlvbmFibGVQcmVmaXgiLCJBSUludGVybmFsTWVzc2FnZVByZWZpeCIsIl9zYW5pdGl6ZURpYWdub3N0aWNUZXh0IiwiX2xvZ1RvQ29uc29sZSIsInRoZUNvbnNvbGUiLCJsb2dGdW5jIiwiX0ludGVybmFsTG9nTWVzc2FnZSIsIm1zZ0lkIiwibXNnIiwiaXNVc2VyQWN0IiwiX3NlbGYiLCJzdHJQcm9wcyIsImRpYWdub3N0aWNUZXh0Iiwic2FmZUdldExvZ2dlciIsImNvcmUiLCJEaWFnbm9zdGljTG9nZ2VyIiwiX21lc3NhZ2VDb3VudCIsIl9tZXNzYWdlTG9nZ2VkIiwiX2xvZ2dpbmdMZXZlbENvbnNvbGUiLCJfbG9nZ2luZ0xldmVsVGVsZW1ldHJ5IiwiX21heEludGVybmFsTWVzc2FnZUxpbWl0IiwiX2VuYWJsZURlYnVnRXhjZXB0aW9ucyIsIl9zZXREZWZhdWx0c0Zyb21Db25maWciLCJfZGVidWdFeHRNc2ciLCJtZXNzYWdlS2V5IiwiX2xvZ0ludGVybmFsTWVzc2FnZSIsIl9hcmVJbnRlcm5hbE1lc3NhZ2VzVGhyb3R0bGVkIiwibG9nTWVzc2FnZSIsInRocm90dGxlTGltaXRNZXNzYWdlIiwidGhyb3R0bGVNZXNzYWdlIiwiX2dldExvZ2dlciIsImxvZ2dlciIsIl90aHJvd0ludGVybmFsIiwiX3dhcm5Ub0NvbnNvbGUiLCJzdHJFeGVjdXRpb25Db250ZXh0S2V5Iiwic3RyUGFyZW50Q29udGV4dEtleSIsInN0ckNoaWxkcmVuQ29udGV4dEtleSIsIl9kZWZhdWx0UGVyZk1hbmFnZXIiLCJQZXJmRXZlbnQiLCJwYXlsb2FkRGV0YWlscyIsImlzQXN5bmMiLCJhY2Nlc3NvckRlZmluZWQiLCJ0aGVEZXRhaWxzXzEiLCJjdHgiLCJjaGlsZFRpbWUiLCJjaGlsZEV2dHMiLCJjaGlsZEV2dCIsIlBlcmZNYW5hZ2VyIiwibWFuYWdlciIsInBlcmZFdmVudCIsImRvUGVyZkFjdGl2ZUtleSIsImRvUGVyZiIsIm1nclNvdXJjZSIsImdldFNvdXJjZSIsImRldGFpbHMiLCJwZXJmTWdyIiwicGVyZkV2dCIsImN1cnJlbnRBY3RpdmUiLCJleCIsImdldEdibFBlcmZNZ3IiLCJVSW50MzJNYXNrIiwiTWF4VUludDMyIiwiX213Y1NlZWRlZCIsIl9td2NXIiwiX213Y1oiLCJfbXdjU2VlZCIsInNlZWRWYWx1ZSIsIl9hdXRvU2VlZE13YyIsInJhbmRvbTMyIiwic2lnbmVkIiwibXdjUmFuZG9tMzIiLCJuZXdJZCIsIm1heExlbmd0aCIsImJhc2U2NGNoYXJzIiwiY2hhcnMiLCJ2ZXJzaW9uIiwiaW5zdGFuY2VOYW1lIiwiX2RhdGFVaWQiLCJfY3JlYXRlQWNjZXNzb3IiLCJfY2FuQWNjZXB0RGF0YSIsIl9nZXRDYWNoZSIsInRoZUNhY2hlIiwiY3JlYXRlVW5pcXVlTmFtZXNwYWNlIiwiaW5jbHVkZVZlcnNpb24iLCJjcmVhdGVFbG1Ob2RlRGF0YSIsImFkZERlZmF1bHQiLCJzdHJUb0dNVFN0cmluZyIsInN0clRvVVRDU3RyaW5nIiwic3RyQ29va2llIiwic3RyRXhwaXJlcyIsInN0ckVuYWJsZWQiLCJzdHJJc0Nvb2tpZVVzZURpc2FibGVkIiwic3RyRGlzYWJsZUNvb2tpZXNVc2FnZSIsInN0ckNvbmZpZ0Nvb2tpZU1nciIsIl9zdXBwb3J0c0Nvb2tpZXMiLCJfYWxsb3dVYVNhbWVTaXRlIiwiX3BhcnNlZENvb2tpZVZhbHVlIiwiX2RvYyIsIl9jb29raWVDYWNoZSIsIl9nbG9iYWxDb29raWVDb25maWciLCJfZ2JsQ29va2llTWdyIiwiaW5zdCIsImNyZWF0ZUNvb2tpZU1nciIsIl9pc01nckVuYWJsZWQiLCJjb29raWVNZ3IiLCJfY3JlYXRlQ29va2llTWdyQ29uZmlnIiwicm9vdENvbmZpZyIsImNvb2tpZU1nckNmZyIsImNvb2tpZUVuYWJsZWQiLCJfaXNJZ25vcmVkQ29va2llIiwiX2lzQmxvY2tlZENvb2tpZSIsInNhZmVHZXRDb29raWVNZ3IiLCJjb29raWVDZmciLCJjb29raWVNZ3JDb25maWciLCJfcGF0aCIsIl9kb21haW4iLCJfZW5hYmxlZCIsImFyZUNvb2tpZXNTdXBwb3J0ZWQiLCJnYmxNYW5hZ2VyIiwibWF4QWdlU2VjIiwiZG9tYWluIiwiX2V4dHJhY3RQYXJ0cyIsIl9pc0lFIiwibm93TXMiLCJleHBpcmVNcyIsImV4cGlyeSIsIl9mb3JtYXREYXRlIiwibG9jYXRpb25fMSIsInVhRGlzYWxsb3dzU2FtZVNpdGVOb25lIiwic2V0Q29va2llRm4iLCJfc2V0Q29va2llVmFsdWUiLCJfZm9ybWF0Q29va2llVmFsdWUiLCJfZ2V0Q29va2llVmFsdWUiLCJkZWxDb29raWUiLCJ0aGVQYXJ0IiwidGhlRGF0ZSIsImNvb2tpZVZhbHVlIiwidGhlQ29va2llIiwic3RyT25QcmVmaXgiLCJzdHJBdHRhY2hFdmVudCIsInN0ckFkZEV2ZW50SGVscGVyIiwic3RyRGV0YWNoRXZlbnQiLCJzdHJSZW1vdmVFdmVudExpc3RlbmVyIiwic3RyRXZlbnRzIiwic3RyVmlzaWJpbGl0eUNoYW5nZUV2dCIsInN0clBhZ2VIaWRlIiwic3RyVW5sb2FkIiwic3RyQmVmb3JlVW5sb2FkIiwic3RyUGFnZUhpZGVOYW1lc3BhY2UiLCJyUmVtb3ZlRW1wdHlOcyIsInJSZW1vdmVUcmFpbGluZ0VtcHR5TnMiLCJfZ3VpZCIsImVsbU5vZGVEYXRhIiwiZXZlbnROYW1lc3BhY2UiLCJfbm9ybWFsaXplTmFtZXNwYWNlIiwiX2dldEV2dE5hbWVzcGFjZSIsImV2dE5hbWVzcGFjZSIsInRoZU5hbWVzcGFjZV8xIiwicGFyc2VkRXZlbnQiLCJfZ2V0UmVnaXN0ZXJlZEV2ZW50cyIsImV2dE5hbWUiLCJhaUV2dHMiLCJyZWdpc3RlcmVkRXZlbnRzIiwiX2RvRGV0YWNoIiwiaGFuZGxlclJlZiIsIl9kb0F0dGFjaCIsIl9kb1VucmVnaXN0ZXIiLCJ1blJlZ0ZuIiwidGhlRXZlbnQiLCJfdW5yZWdpc3RlckV2ZW50cyIsImV2ZW50Q2FjaGUiLCJldnRUeXBlIiwibWVyZ2VFdnROYW1lc3BhY2UiLCJ0aGVOYW1lc3BhY2UiLCJuYW1lc3BhY2VzIiwibmV3TmFtZXNwYWNlcyIsImV2ZW50T24iLCJyZWdpc3RlcmVkRXZlbnQiLCJldmVudE9mZiIsImV2dE5hbWVfMSIsImZvdW5kXzEiLCJyZWdFdmVudCIsImFkZEV2ZW50SGFuZGxlciIsInJlbW92ZUV2ZW50SGFuZGxlciIsIl9hZGRFdmVudExpc3RlbmVycyIsImV4Y2x1ZGVFdmVudHMiLCJhZGRlZCIsImFkZEV2ZW50TGlzdGVuZXJzIiwicmVtb3ZlRXZlbnRMaXN0ZW5lcnMiLCJhZGRQYWdlVW5sb2FkRXZlbnRMaXN0ZW5lciIsInJlbW92ZVBhZ2VVbmxvYWRFdmVudExpc3RlbmVyIiwiYWRkUGFnZUhpZGVFdmVudExpc3RlbmVyIiwiX2hhbmRsZVBhZ2VWaXNpYmlsaXR5IiwiZXZ0IiwicGFnZVVubG9hZEFkZGVkIiwicmVtb3ZlUGFnZUhpZGVFdmVudExpc3RlbmVyIiwiZ2VuZXJhdGVXM0NJZCIsImhleFZhbHVlcyIsIm9jdCIsImNsb2NrU2VxdWVuY2VIaSIsIkRFRkFVTFRfVkVSU0lPTiIsIklOVkFMSURfVkVSU0lPTiIsIklOVkFMSURfVFJBQ0VfSUQiLCJJTlZBTElEX1NQQU5fSUQiLCJfaXNWYWxpZCIsImludmFsaWRWYWx1ZSIsIl9mb3JtYXRWYWx1ZSIsIl9mb3JtYXRGbGFncyIsImNyZWF0ZVRyYWNlUGFyZW50IiwidHJhY2VJZCIsInNwYW5JZCIsImZsYWdzIiwiaXNWYWxpZFRyYWNlSWQiLCJpc1ZhbGlkU3BhbklkIiwiZm9ybWF0VHJhY2VQYXJlbnQiLCJwbHVnaW5TdGF0ZURhdGEiLCJfZ2V0UGx1Z2luU3RhdGUiLCJwbHVnaW4iLCJpbml0aWFsaXplUGx1Z2lucyIsInByb2Nlc3NDb250ZXh0IiwiZXh0ZW5zaW9ucyIsImluaXRQbHVnaW5zIiwibGFzdFBsdWdpbiIsInByb3h5IiwicGx1Z2luU3RhdGUiLCJ0aGVQbHVnaW4iLCJpc0luaXRpYWxpemVkIiwic29ydFBsdWdpbnMiLCJwbHVnaW5zIiwiZXh0QSIsImV4dEIiLCJiSGFzUHJvY2VzcyIsImNyZWF0ZURpc3RyaWJ1dGVkVHJhY2VDb250ZXh0IiwicGFyZW50Q3R4IiwidHJhY2UiLCJuZXdUcmFjZUZsYWdzIiwic3RyVGVsZW1ldHJ5UGx1Z2luQ2hhaW4iLCJzdHJIYXNSdW5GbGFncyIsInN0ckdldFRlbEN0eCIsIl9jaGFpbklkIiwiX2dldE5leHRQcm94eVN0YXJ0Iiwic3RhcnRBdCIsImNyZWF0ZVRlbGVtZXRyeVByb3h5Q2hhaW4iLCJfY3JlYXRlSW50ZXJuYWxDb250ZXh0IiwidGVsZW1ldHJ5Q2hhaW4iLCJfbmV4dFByb3h5IiwiX29uQ29tcGxldGUiLCJfbW92ZU5leHQiLCJfZ2V0RXh0Q2ZnIiwiX2dldENvbmZpZyIsIm5leHRQbHVnaW4iLCJfaXRlcmF0ZUNoYWluIiwiX2FkZE9uQ29tcGxldGUiLCJvbkNvbXBsZXRlIiwidGhhdCIsIm5leHRQcm94eSIsImNvbXBsZXRlRGV0YWlscyIsImlkZW50aWZpZXIiLCJtZXJnZURlZmF1bHQiLCJ0aGVDb25maWciLCJleHRDb25maWciLCJuZXdDb25maWdfMSIsImNmZ1ZhbHVlIiwiY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQiLCJpbnRlcm5hbENvbnRleHQiLCJfcHJvY2Vzc05leHQiLCJlbnYiLCJfY3JlYXRlTmV3IiwiY3JlYXRlUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQiLCJ1bmxvYWRTdGF0ZSIsImNyZWF0ZVByb2Nlc3NUZWxlbWV0cnlVcGRhdGVDb250ZXh0IiwidXBkYXRlU3RhdGUiLCJmaXJzdFByb3h5IiwiYWRkIiwibGFzdFByb3h5XzEiLCJuZXdQcm94eSIsImNyZWF0ZVRlbGVtZXRyeVBsdWdpblByb3h5IiwiaGFzUHJvY2Vzc1RlbGVtZXRyeSIsImhhc1NldE5leHQiLCJjaGFpbklkIiwicHJveHlDaGFpbiIsIl9wcm9jZXNzVGVsZW1ldHJ5IiwiX3VubG9hZFBsdWdpbiIsIl91cGRhdGVQbHVnaW4iLCJfZ2V0VGVsQ3R4IiwiaXRlbUN0eCIsIl9wcm9jZXNzQ2hhaW4iLCJwcm9jZXNzUGx1Z2luRm4iLCJoYXNSdW4iLCJoYXNSdW5Db250ZXh0IiwibmV4dElkIiwiaGFzTmV4dFJ1biIsIl9jYWxsUHJvY2Vzc1RlbGVtZXRyeSIsInVubG9hZEN0eCIsIl9jYWxsVGVhcmRvd24iLCJwbHVnaW5Db3JlIiwidXBkYXRlQ3R4IiwiX2NhbGxVcGRhdGUiLCJDaGFubmVsQ29udHJvbGxlclByaW9yaXR5IiwiQ2hhbm5lbFZhbGlkYXRpb25NZXNzYWdlIiwiX2FkZENoYW5uZWxRdWV1ZSIsImNoYW5uZWxRdWV1ZSIsInF1ZXVlIiwicXVldWVJdGVtIiwiY3JlYXRlQ2hhbm5lbENvbnRyb2xsZXJQbHVnaW4iLCJfcHJvY2Vzc0NoYW5uZWxRdWV1ZSIsInRoZUNoYW5uZWxzIiwicHJvY2Vzc0ZuIiwid2FpdGluZyIsIl9ydW5DaGFpbk9uQ29tcGxldGUiLCJjaGFubmVscyIsImNoYW5uZWxDaGFpbiIsImNoYWluQ3R4IiwiX2RvVXBkYXRlIiwidGhlVXBkYXRlU3RhdGUiLCJfZG9UZWFyZG93biIsInRoZVVubG9hZFN0YXRlIiwiX2dldENoYW5uZWwiLCJwbHVnaW5JZGVudGlmaWVyIiwiZXh0IiwiY2hhbm5lbENvbnRyb2xsZXIiLCJwbHVnaW5DaGFpbiIsImNhbGxCYWNrIiwic2VuZFJlYXNvbiIsImNiVGltZW91dCIsImRvbmVJdGVyYXRpbmciLCJjYlRpbWVyIiwiZG9DYWxsYmFjayIsImhhbmRsZWRfMSIsImNyZWF0ZUNoYW5uZWxRdWV1ZXMiLCJleHRlbnNpb25RdWV1ZV8xIiwiY3JlYXRlVW5sb2FkSGFuZGxlckNvbnRhaW5lciIsIl9hZGRIYW5kbGVyIiwiX3J1bkhhbmRsZXJzIiwic3RyR2V0UGx1Z2luIiwiQmFzZVRlbGVtZXRyeVBsdWdpbiIsIl9pc2luaXRpYWxpemVkIiwiX3Jvb3RDdHgiLCJfbmV4dFBsdWdpbiIsIl91bmxvYWRIYW5kbGVyQ29udGFpbmVyIiwiX2hvb2tzIiwiX2luaXREZWZhdWx0cyIsIl9zZXREZWZhdWx0cyIsInVubG9hZERvbmUiLCJ0aGVVbmxvYWRDdHgiLCJfdW5sb2FkQ2FsbGJhY2siLCJvbGRIb29rcyIsInVwZGF0ZURvbmUiLCJ0aGVVcGRhdGVDdHgiLCJfdXBkYXRlQ2FsbGJhY2siLCJob29rcyIsIm5leHQiLCJjdXJyZW50Q3R4Iiwicm9vdEN0eCIsIlRlbGVtZXRyeUluaXRpYWxpemVyUGx1Z2luIiwiX2lkIiwiX2luaXRpYWxpemVycyIsIl9iYXNlIiwidGVsZW1ldHJ5SW5pdGlhbGl6ZXIiLCJ0aGVJbml0aWFsaXplciIsImluaXRpYWxpemVyIiwiZG9Ob3RTZW5kSXRlbSIsInRlbGVtZXRyeUluaXRpYWxpemVyc0NvdW50Iiwic3RyVmFsaWRhdGlvbkVycm9yIiwic3RyTm90aWZpY2F0aW9uTWFuYWdlciIsInN0clNka1VubG9hZGluZ0Vycm9yIiwic3RyU2RrTm90SW5pdGlhbGl6ZWQiLCJkZWZhdWx0SW5pdENvbmZpZyIsIl9jcmVhdGVQZXJmTWFuYWdlciIsIm5vdGlmaWNhdGlvbk1nciIsIl92YWxpZGF0ZUV4dGVuc2lvbnMiLCJjaGFubmVsUHJpb3JpdHkiLCJhbGxFeHRlbnNpb25zIiwiY29yZUV4dGVuc2lvbnMiLCJleHRQcmlvcml0aWVzIiwiZXh0UHJpb3JpdHkiLCJfaXNQbHVnaW5QcmVzZW50IiwiZXhpc3RzIiwiX2NyZWF0ZUR1bW15Tm90aWZpY2F0aW9uTWFuYWdlciIsInJlYXNvbiIsIkJhc2VDb3JlIiwiX2NvbmZpZyIsIl9pc0luaXRpYWxpemVkIiwiX2V2ZW50UXVldWUiLCJfbm90aWZpY2F0aW9uTWFuYWdlciIsIl9wZXJmTWFuYWdlciIsIl9jZmdQZXJmTWFuYWdlciIsIl9jb29raWVNYW5hZ2VyIiwiX3BsdWdpbkNoYWluIiwiX2NvbmZpZ0V4dGVuc2lvbnMiLCJfY29yZUV4dGVuc2lvbnMiLCJfY2hhbm5lbENvbnRyb2wiLCJfY2hhbm5lbENvbmZpZyIsIl9jaGFubmVsUXVldWUiLCJfaXNVbmxvYWRpbmciLCJfdGVsZW1ldHJ5SW5pdGlhbGl6ZXJQbHVnaW4iLCJfaW50ZXJuYWxMb2dzRXZlbnROYW1lIiwiX2V2dE5hbWVzcGFjZSIsIl91bmxvYWRIYW5kbGVycyIsIl90cmFjZUN0eCIsIl9pbnRlcm5hbExvZ1BvbGxlciIsIm5vdGlmaWNhdGlvbk1hbmFnZXIiLCJfaW5pdERlYnVnTGlzdGVuZXIiLCJfaW5pdFBlcmZNYW5hZ2VyIiwiX2luaXRFeHRDb25maWciLCJjZmdFeHRlbnNpb25zIiwiX2luaXRQbHVnaW5DaGFpbiIsImNvbnRyb2xzIiwidGVsZW1ldHJ5SXRlbSIsIl9jcmVhdGVUZWxDdHgiLCJjcmVhdGVQZXJmTWdyIiwiZXZlbnRRdWV1ZSIsImludGVydmFsIiwiX2ZsdXNoSW50ZXJuYWxMb2dzIiwidW5sb2FkQ29tcGxldGUiLCJwcm9jZXNzVW5sb2FkQ3R4IiwiX2dldFBsdWdpbkNoYWluIiwiX2RvVW5sb2FkIiwiZmx1c2hDb21wbGV0ZSIsIl9mbHVzaENoYW5uZWxzIiwiX2dldFBsdWdpbiIsInJlcGxhY2VFeGlzdGluZyIsImFkZENiIiwiX2xvZ09yVGhyb3dFcnJvciIsImV4aXN0aW5nUGx1Z2luIiwiX2FkZFBsdWdpbiIsInJlbW92ZWQiLCJyZW1vdmVkUGx1Z2luc18xIiwiX3JlbW92ZVBsdWdpbnMiLCJjcmVhdGVOZXciLCJ0cmFjZUN0eCIsInRoZUV4dGVuc2lvbnMiLCJ0aGVFeHQiLCJyZW1vdmVDYiIsInBsdWdpbnNUb1JlbW92ZSIsInRoZVBsdWdpbnMiLCJyZW1vdmVDb21wbGV0ZSIsInVubG9hZENoYWluIiwibmV3Q29uZmlnRXh0ZW5zaW9ucyIsIm5ld0NoYW5uZWxDb25maWciLCJuZXdRdWV1ZSIsImNoYW5uZWwiLCJkaXNhYmxlRGJnRXh0IiwiZW5hYmxlUGVyZk1nciIsIl9ydW5MaXN0ZW5lcnMiLCJOb3RpZmljYXRpb25NYW5hZ2VyIiwicGVyZkV2dHNTZW5kQWxsIiwiQXBwSW5zaWdodHNDb3JlIiwiX25vdGlmeUludmFsaWRFdmVudCIsIl92YWxpZGF0ZVRlbGVtZXRyeUl0ZW0iLCJhaUluc3RydW1lbnRIb29rcyIsImNiTmFtZXMiLCJfYXJyTG9vcCIsIl9kb0NhbGxiYWNrcyIsImNhbGxEZXRhaWxzIiwiY2JBcmdzIiwiaG9va0N0eCIsImhvb2siLCJjYmtzIiwib3JnRXgiLCJob29rRXJyb3JDYiIsIl9jcmVhdGVGdW5jdGlvbkhvb2siLCJhaUhvb2siLCJmdW5jVGhpcyIsIm9yZ0FyZ3MiLCJmdW5jQXJncyIsIl9yZXBsYWNlQXJnIiwiX2NyZWF0ZUFyZ3MiLCJfZ2V0T3duZXIiLCJjaGVja1Byb3RvdHlwZSIsIm93bmVyIiwiSW5zdHJ1bWVudFByb3RvIiwiSW5zdHJ1bWVudEZ1bmMiLCJfY3JlYXRlSW5zdHJ1bWVudEhvb2siLCJuZXdGdW5jIiwidGhlSG9vayIsIkluc3RydW1lbnRFdmVudCIsIkRpc2FibGVkUHJvcGVydHlOYW1lIiwiU2FtcGxlUmF0ZSIsIlByb2Nlc3NMZWdhY3kiLCJIdHRwTWV0aG9kIiwiREVGQVVMVF9CUkVFWkVfRU5EUE9JTlQiLCJERUZBVUxUX0JSRUVaRV9QQVRIIiwic3RyTm90U3BlY2lmaWVkIiwic3RySWtleSIsImNyZWF0ZURvbUV2ZW50IiwiX0RZTl9JTkdFU1RJT05FTkRQT0lOVCIsIl9EWU5fVE9fU1RSSU5HIiwiX0RZTl9SRU1PVkVfSVRFTSIsIl9EWU5fQ09VTlQiLCJfRFlOX1NUUklOR0lGWSIsIl9EWU5fUEFUSE5BTUUiLCJfRFlOX0NPUlJFTEFUSU9OX0hFQURFUl9FMCIsIl9EWU5fRVhDRVBUSU9OUyIsIl9EWU5fUEFSU0VEX1NUQUNLIiwiX0RZTl9QUk9QRVJUSUVTIiwiX0RZTl9NRUFTVVJFTUVOVFMiLCJfRFlOX1NJWkVfSU5fQllURVMiLCJfRFlOX1RZUEVfTkFNRSIsIl9EWU5fU0VWRVJJVFlfTEVWRUwiLCJfRFlOX1BST0JMRU1fR1JPVVAiLCJfRFlOX0lTX01BTlVBTCIsIl9EWU5fX0NSRUFURV9GUk9NX0lOVEVSRkExIiwiX0RZTl9IQVNfRlVMTF9TVEFDSyIsIl9EWU5fTEVWRUwiLCJfRFlOX01FVEhPRCIsIl9EWU5fQVNTRU1CTFkiLCJfRFlOX0ZJTEVfTkFNRSIsIl9EWU5fTElORSIsIl9EWU5fRFVSQVRJT04iLCJfRFlOX1JFQ0VJVkVEX1JFU1BPTlNFIiwiX0RZTl9TQU5JVElaRV9LRVlfQU5EX0FERDIiLCJfRFlOX1NBTklUSVpFX0VYQ0VQVElPTiIsIl9EWU5fU0FOSVRJWkVfUFJPUEVSVElFUyIsIl9EWU5fU0FOSVRJWkVfTUVBU1VSRU1FTlQzIiwic3RyRW1wdHkiLCJzdHJpbmdUb0Jvb2xPckRlZmF1bHQiLCJtc1RvVGltZVNwYW4iLCJ0b3RhbG1zIiwic2VjIiwiaG91ciIsImRheXMiLCJpc0Nyb3NzT3JpZ2luRXJyb3IiLCJsaW5lTnVtYmVyIiwiY29sdW1uTnVtYmVyIiwiUmVxdWVzdEhlYWRlcnMiLCJTdG9yYWdlVHlwZSIsIl9jYW5Vc2VMb2NhbFN0b3JhZ2UiLCJfY2FuVXNlU2Vzc2lvblN0b3JhZ2UiLCJfZ2V0TG9jYWxTdG9yYWdlT2JqZWN0IiwidXRsQ2FuVXNlTG9jYWxTdG9yYWdlIiwiX2dldFZlcmlmaWVkU3RvcmFnZU9iamVjdCIsInN0b3JhZ2VUeXBlIiwidWlkIiwic3RvcmFnZSIsImZhaWwiLCJfZ2V0U2Vzc2lvblN0b3JhZ2VPYmplY3QiLCJ1dGxDYW5Vc2VTZXNzaW9uU3RvcmFnZSIsInV0bERpc2FibGVTdG9yYWdlIiwidXRsRW5hYmxlU3RvcmFnZSIsInV0bEdldExvY2FsU3RvcmFnZSIsInV0bFNldExvY2FsU3RvcmFnZSIsInV0bFJlbW92ZVN0b3JhZ2UiLCJ1dGxHZXRTZXNzaW9uU3RvcmFnZSIsInV0bFNldFNlc3Npb25TdG9yYWdlIiwidXRsUmVtb3ZlU2Vzc2lvblN0b3JhZ2UiLCJkYXRhU2FuaXRpemVLZXlBbmRBZGRVbmlxdWVuZXNzIiwib3JpZ0xlbmd0aCIsImRhdGFTYW5pdGl6ZUtleSIsInVuaXF1ZUZpZWxkIiwiZHNQYWROdW1iZXIiLCJuYW1lVHJ1bmMiLCJkYXRhU2FuaXRpemVTdHJpbmciLCJ2YWx1ZVRydW5jIiwiZGF0YVNhbml0aXplVXJsIiwiZGF0YVNhbml0aXplSW5wdXQiLCJkYXRhU2FuaXRpemVNZXNzYWdlIiwibWVzc2FnZVRydW5jIiwiZGF0YVNhbml0aXplRXhjZXB0aW9uIiwiZXhjZXB0aW9uIiwiZXhjZXB0aW9uVHJ1bmMiLCJkYXRhU2FuaXRpemVQcm9wZXJ0aWVzIiwidGVtcFByb3BzXzEiLCJkYXRhU2FuaXRpemVNZWFzdXJlbWVudHMiLCJtZWFzdXJlbWVudHMiLCJ0ZW1wTWVhc3VyZW1lbnRzXzEiLCJtZWFzdXJlIiwiZGF0YVNhbml0aXplSWQiLCJfbXNnSWQiLCJpbnB1dFRydW5jIiwiX2RvY3VtZW50IiwiX2h0bWxBbmNob3JJZHgiLCJfaHRtbEFuY2hvckVsZW1lbnQiLCJ1cmxQYXJzZVVybCIsImFuY2hvcklkeCIsImFuY2hvckNhY2hlIiwidGVtcEFuY2hvciIsInVybFBhcnNlSG9zdCIsInVybEdldEFic29sdXRlVXJsIiwidXJsR2V0Q29tcGxldGVVcmwiLCJtZXRob2QiLCJhYnNvbHV0ZVVybCIsImluY2xQb3J0IiwiZnVsbEhvc3QiLCJ1cmxQYXJzZUZ1bGxIb3N0IiwicHJvdG9jb2wiLCJwb3J0IiwiX2ludGVybmFsRW5kcG9pbnRzIiwiaXNJbnRlcm5hbEFwcGxpY2F0aW9uSW5zaWdodHNFbmRwb2ludCIsImVuZHBvaW50VXJsIiwiQ29ycmVsYXRpb25JZEhlbHBlciIsImN1cnJlbnRIb3N0IiwicmVxdWVzdEhvc3QiLCJpbmNsdWRlZERvbWFpbnMiLCJtYXRjaEV4aXN0c18xIiwicmVnZXgiLCJleGNsdWRlZERvbWFpbnMiLCJyZXNwb25zZUhlYWRlciIsImNvcnJlbGF0aW9uSWQiLCJrZXlWYWx1ZXMiLCJrZXlWYWx1ZSIsIkFqYXhIZWxwZXJQYXJzZURlcGVuZGVuY3lQYXRoIiwiY29tbWFuZE5hbWUiLCJwYXJzZWRVcmwiLCJwYXRoTmFtZSIsImRhdGVUaW1lVXRpbHNOb3ciLCJwZXJmIiwiZGF0ZVRpbWVVdGlsc0R1cmF0aW9uIiwiY3JlYXRlRGlzdHJpYnV0ZWRUcmFjZUNvbnRleHRGcm9tVHJhY2UiLCJ0ZWxlbWV0cnlUcmFjZSIsIl9GSUVMRFNfU0VQQVJBVE9SIiwiX0ZJRUxEX0tFWV9WQUxVRV9TRVBBUkFUT1IiLCJwYXJzZUNvbm5lY3Rpb25TdHJpbmciLCJjb25uZWN0aW9uU3RyaW5nIiwia3ZQYWlycyIsImt2Iiwia3ZQYXJ0cyIsImxvY2F0aW9uUHJlZml4IiwiRW52ZWxvcGUiLCJFdmVudCIsIk5vTWV0aG9kIiwic3RyRXJyb3IiLCJzdHJTdGFjayIsInN0clN0YWNrRGV0YWlscyIsInN0ckVycm9yU3JjIiwic3RyTWVzc2FnZSIsInN0ckRlc2NyaXB0aW9uIiwiX3N0cmluZ2lmeSIsImNvbnZlcnRUb1N0cmluZyIsIl9mb3JtYXRNZXNzYWdlIiwiZXJyb3JUeXBlIiwiZXZ0TWVzc2FnZSIsIl9pc0V4Y2VwdGlvbkRldGFpbHNJbnRlcm5hbCIsIl9pc0V4Y2VwdGlvbkludGVybmFsIiwiX2lzU3RhY2tEZXRhaWxzIiwiX2NvbnZlcnRTdGFja09iaiIsImVycm9yU3RhY2siLCJfZ2V0T3BlcmFTdGFjayIsInN0YWNrIiwiX2dldFN0YWNrRnJvbUVycm9yT2JqIiwiZXJyb3JPYmoiLCJfZm9ybWF0U3RhY2tUcmFjZSIsInN0YWNrRGV0YWlscyIsIl9wYXJzZVN0YWNrIiwicGFyc2VkU3RhY2siLCJmcmFtZXMiLCJsZXZlbF8xIiwidG90YWxTaXplSW5CeXRlc18xIiwiZnJhbWUiLCJ0aGVGcmFtZSIsIl9TdGFja0ZyYW1lIiwicGFyc2VkRnJhbWUiLCJleGNlcHRpb25QYXJzZWRTdGFja1RocmVzaG9sZCIsImFjY2VwdGVkTGVmdCIsImFjY2VwdGVkUmlnaHQiLCJsU2l6ZSIsInJTaXplIiwiaG93TWFueSIsIl9nZXRFcnJvclR5cGUiLCJ0eXBlTmFtZSIsIl9mb3JtYXRFcnJvckNvZGUiLCJFeGNlcHRpb24iLCJzZXZlcml0eUxldmVsIiwiX0V4Y2VwdGlvbkRldGFpbHMiLCJlcnJvclNyYyIsImV4Y2VwdGlvbnMiLCJleGNlcHRpb25EYXRhIiwicHJvYmxlbUdyb3VwIiwiaXNNYW51YWwiLCJleGNlcHRpb25EZXRhaWxzSW50ZXJmYWNlIiwiYXNzZW1ibHkiLCJmaWxlTmFtZSIsImV4Y2VwdGlvbkRldGFpbHMiLCJzb3VyY2VGcmFtZSIsImxldmVsIiwiRGF0YVBvaW50IiwiTWV0cmljIiwic3RkRGV2IiwiZGF0YVBvaW50IiwiUGFnZVZpZXciLCJkdXJhdGlvbk1zIiwiUmVtb3RlRGVwZW5kZW5jeURhdGEiLCJzdWNjZXNzIiwicmVzdWx0Q29kZSIsInJlcXVlc3RBUEkiLCJjb3JyZWxhdGlvbkNvbnRleHQiLCJkZXBlbmRlbmN5RmllbGRzIiwiVHJhY2UiLCJQYWdlVmlld1BlcmZvcm1hbmNlIiwidW51c2VkIiwiY3M0QmFzZURhdGEiLCJEYXRhIiwiYmFzZVR5cGUiLCJfYWlOYW1lRnVuYyIsImJhc2VOYW1lIiwiYWlOYW1lIiwiX2FpQXBwbGljYXRpb24iLCJfYWlEZXZpY2UiLCJfYWlMb2NhdGlvbiIsIl9haU9wZXJhdGlvbiIsIl9haVNlc3Npb24iLCJfYWlVc2VyIiwiX2FpQ2xvdWQiLCJfYWlJbnRlcm5hbCIsIkNvbnRleHRUYWdLZXlzIiwiY3JlYXRlVGVsZW1ldHJ5SXRlbSIsImVudmVsb3BlTmFtZSIsImN1c3RvbVByb3BlcnRpZXMiLCJzeXN0ZW1Qcm9wZXJ0aWVzIiwiaUtleSIsIkV4dGVuc2lvbnMiLCJDdHhUYWdLZXlzIiwiUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIiLCJCcmVlemVDaGFubmVsSWRlbnRpZmllciIsIkFuYWx5dGljc1BsdWdpbklkZW50aWZpZXIiLCJfRFlOX0RJU0FCTEVfRVhDRVBUSU9OX1RSMCIsIl9EWU5fQVVUT19UUkFDS19QQUdFX1ZJU0kxIiwiX0RZTl9PVkVSUklERV9QQUdFX1ZJRVdfRDIiLCJfRFlOX0VOQUJMRV9VTkhBTkRMRURfUFJPMyIsIl9EWU5fU0FNUExJTkdfUEVSQ0VOVEFHRSIsIl9EWU5fSVNfU1RPUkFHRV9VU0VfRElTQUI0IiwiX0RZTl9JU19CUk9XU0VSX0xJTktfVFJBQzUiLCJfRFlOX0VOQUJMRV9BVVRPX1JPVVRFX1RSNiIsIl9EWU5fTkFNRV9QUkVGSVgiLCJfRFlOX0RJU0FCTEVfRkxVU0hfT05fQkVGNyIsIl9EWU5fQ09SRSIsIl9EWU5fREFUQV9UWVBFIiwiX0RZTl9FTlZFTE9QRV9UWVBFIiwiX0RZTl9UUkFDSyIsIl9EWU5fVFJBQ0tfUEFHRV9WSUVXIiwiX0RZTl9UUkFDS19QUkVWSU9VU19QQUdFXzkiLCJfRFlOX1NFTkRfUEFHRV9WSUVXX0lOVEVSMTAiLCJfRFlOX1NFTkRfUEFHRV9WSUVXX1BFUkZPMTEiLCJfRFlOX1BPUFVMQVRFX1BBR0VfVklFV19QMTIiLCJfRFlOX0hSRUYiLCJfRFlOX1NFTkRfRVhDRVBUSU9OX0lOVEVSMTMiLCJfRFlOX0VYQ0VQVElPTiIsIl9EWU5fRVJST1IiLCJfRFlOX19PTkVSUk9SIiwiX0RZTl9FUlJPUl9TUkMiLCJfRFlOX0xJTkVfTlVNQkVSIiwiX0RZTl9DT0xVTU5fTlVNQkVSIiwiX0RZTl9fQ1JFQVRFX0FVVE9fRVhDRVBUSTE0IiwiX0RZTl9BRERfVEVMRU1FVFJZX0lOSVRJQTE1IiwiX0RZTl9JU19QRVJGT1JNQU5DRV9USU1JTjE2IiwiX0RZTl9HRVRfUEVSRk9STUFOQ0VfVElNSTE3IiwiX0RZTl9OQVZJR0FUSU9OX1NUQVJUIiwiX0RZTl9TSE9VTERfQ09MTEVDVF9EVVJBVDE4IiwiX0RZTl9JU19QRVJGT1JNQU5DRV9USU1JTjE5IiwiX0RZTl9HRVRfRU5UUklFU19CWV9UWVBFIiwiX0RZTl9SRVNQT05TRV9TVEFSVCIsIl9EWU5fUkVRVUVTVF9TVEFSVCIsIl9EWU5fTE9BRF9FVkVOVF9FTkQiLCJfRFlOX1JFU1BPTlNFX0VORCIsIl9EWU5fQ09OTkVDVF9FTkQiLCJfRFlOX1BBR0VfVklTSVRfU1RBUlRfVElNMjAiLCJQYWdlVmlld01hbmFnZXIiLCJvdmVycmlkZVBhZ2VWaWV3RHVyYXRpb24iLCJwYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlciIsImludGVydmFsSGFuZGxlIiwiaXRlbVF1ZXVlIiwicGFnZVZpZXdQZXJmb3JtYW5jZVNlbnQiLCJfbG9nZ2VyIiwiX2FkZFF1ZXVlIiwiYWxsSXRlbXMiLCJkb0ZsdXNoIiwicGFnZVZpZXciLCJ1cmkiLCJwYWdlVmlld1NlbnQiLCJjdXN0b21EdXJhdGlvbiIsIm1heER1cmF0aW9uTGltaXQiLCJwcm9jZXNzZWQiLCJwYWdlVmlld1BlcmZvcm1hbmNlIiwiTUFYX0RVUkFUSU9OX0FMTE9XRUQiLCJib3RBZ2VudE5hbWVzIiwiX2lzUGVyZm9ybWFuY2VUaW1pbmdTdXBwb3J0ZWQiLCJfaXNQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmdTdXBwb3J0ZWQiLCJfaXNQZXJmb3JtYW5jZVRpbWluZ0RhdGFSZWFkeSIsInRpbWluZyIsIl9nZXRQZXJmb3JtYW5jZVRpbWluZyIsIl9nZXRQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmciLCJfc2hvdWxkQ29sbGVjdER1cmF0aW9uIiwiZHVyYXRpb25zIiwiX25hdmlnYXRvciIsImlzR29vZ2xlQm90IiwiUGFnZVZpZXdQZXJmb3JtYW5jZU1hbmFnZXIiLCJuYXZpZ2F0aW9uVGltaW5nIiwibmV0d29yayIsImRvbSIsIlBhZ2VWaXNpdFRpbWVNYW5hZ2VyIiwicGFnZVZpc2l0VGltZVRyYWNraW5nSGFuZGxlciIsInByZXZQYWdlVmlzaXREYXRhS2V5TmFtZSIsImN1cnJlbnRQYWdlTmFtZSIsImN1cnJlbnRQYWdlVXJsIiwicHJldlBhZ2VWaXNpdFRpbWVEYXRhIiwicmVzdGFydFBhZ2VWaXNpdFRpbWVyIiwicGFnZU5hbWUiLCJwYWdlVXJsIiwicHJldlBhZ2VWaXNpdERhdGEiLCJzdG9wUGFnZVZpc2l0VGltZXIiLCJzdGFydFBhZ2VWaXNpdFRpbWVyIiwiY3VyclBhZ2VWaXNpdERhdGEiLCJQYWdlVmlzaXREYXRhIiwiY3VyclBhZ2VWaXNpdERhdGFTdHIiLCJwYWdlVmlzaXRFbmRUaW1lIiwicGFnZVZpc2l0RGF0YUpzb25TdHIiLCJUaW1pbmciLCJzdHJFdmVudCIsIl9kaXNwYXRjaEV2ZW50IiwiZXZudCIsIl9nZXRSZWFzb24iLCJNaW5NaWxsaVNlY29uZHMiLCJfY29uZmlnTWlsbGlzZWNvbmRzIiwiX2dldERlZmF1bHRDb25maWciLCJfdXBkYXRlU3RvcmFnZVVzYWdlIiwiQW5hbHl0aWNzUGx1Z2luIiwiX2V2ZW50VHJhY2tpbmciLCJfcGFnZVRyYWNraW5nIiwiX3BhZ2VWaWV3TWFuYWdlciIsIl9wYWdlVmlld1BlcmZvcm1hbmNlTWFuYWdlciIsIl9wYWdlVmlzaXRUaW1lTWFuYWdlciIsIl9wcmVJbml0VGVsZW1ldHJ5SW5pdGlhbGl6ZXJzIiwiX2lzQnJvd3NlckxpbmtUcmFja2luZ0VuYWJsZWQiLCJfYnJvd3NlckxpbmtJbml0aWFsaXplckFkZGVkIiwiX2VuYWJsZUF1dG9Sb3V0ZVRyYWNraW5nIiwiX2hpc3RvcnlMaXN0ZW5lckFkZGVkIiwiX2Rpc2FibGVFeGNlcHRpb25UcmFja2luZyIsIl9hdXRvRXhjZXB0aW9uSW5zdHJ1bWVudGVkIiwiX2VuYWJsZVVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25UcmFja2luZyIsIl9hdXRvVW5oYW5kbGVkUHJvbWlzZUluc3RydW1lbnRlZCIsIl9wcmV2VXJpIiwiX2N1cnJVcmkiLCJfYWRkSG9vayIsIkV2ZW50VGVsZW1ldHJ5IiwibWV0cmljIiwiaW5QdiIsImluUHZwIiwibWVhc3VyZW1lbnQiLCJsb2MiLCJ0aGVFcnJvciIsImV4Y2VwdGlvblBhcnRCIiwiX3NlbmRDT1JTRXhjZXB0aW9uIiwiZXJyb3JTdHJpbmciLCJfcG9wdWxhdGVEZWZhdWx0cyIsInBhZ2VWaXNpdFRpbWUiLCJ0cmFja1BhZ2VWaXNpdFRpbWUiLCJfdXBkYXRlQnJvd3NlckxpbmtUcmFja2luZyIsInBhZ2VWaWV3SXRlbSIsIl91cGRhdGVFeGNlcHRpb25UcmFja2luZyIsIl91cGRhdGVMb2NhdGlvbkNoYW5nZSIsIl9hZGREZWZhdWx0VGVsZW1ldHJ5SW5pdGlhbGl6ZXJzIiwiYnJvd3NlckxpbmtQYXRoc18xIiwiZHJvcEJyb3dzZXJMaW5rUmVxdWVzdHMiLCJlbnZlbG9wZSIsInJlbW90ZURhdGEiLCJsb2NuIiwiX2FkZFVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25UcmFja2luZyIsIl9oaXN0b3J5Iiwic3RyVW5kZWZpbmVkIiwiX2FkZEhpc3RvcnlMaXN0ZW5lciIsIl9nZXREaXN0cmlidXRlZFRyYWNlQ3R4IiwiZGlzdHJpYnV0ZWRUcmFjZUN0eCIsIm5hbWVQcmVmaXgiLCJfcG9wc3RhdGVIYW5kbGVyIiwiX2xvY2F0aW9uQ2hhbmdlSGFuZGxlciIsInRyYWNlTG9jYXRpb25OYW1lIiwiX2xvY2F0aW9uIiwiU1RSX0RVUkFUSU9OIiwiX0RZTl9UQUdTIiwiX0RZTl9ERVZJQ0VfVFlQRSIsIl9EWU5fREFUQSIsIl9EWU5fT05fTElORSIsIl9EWU5fRU5RVUVVRSIsIl9EWU5fRU1JVF9MSU5FX0RFTElNSVRFRF8wIiwiX0RZTl9DTEVBUiIsIl9EWU5fQkFUQ0hfUEFZTE9BRFMiLCJfRFlOX01BUktfQVNfU0VOVCIsIl9EWU5fQ0xFQVJfU0VOVCIsIl9EWU5fX0JVRkZFUl9fS0VZIiwiX0RZTl9fU0VOVF9fQlVGRkVSX19LRVkiLCJfRFlOX19NQVhfX0JVRkZFUl9fU0laRSIsIl9EWU5fTUFYX0JBVENIX1NJWkVfSU5fQlkxIiwiX0RZTl9UUklHR0VSX1NFTkQiLCJfRFlOX09OVU5MT0FEX0RJU0FCTEVfQkVBMiIsIl9EWU5fSVNfQkVBQ09OX0FQSV9ESVNBQkwzIiwiX0RZTl9fU0VOREVSIiwiX0RZTl9fU0VOREVSX0NPTkZJRyIsIl9EWU5fX0JVRkZFUiIsIl9EWU5fRU5BQkxFX1NFU1NJT05fU1RPUkE0IiwiX0RZTl9FTkRQT0lOVF9VUkwiLCJfRFlOX0NVU1RPTV9IRUFERVJTIiwiX0RZTl9ESVNBQkxFX1hIUiIsIl9EWU5fT05VTkxPQURfRElTQUJMRV9GRVQ1IiwiX0RZTl9ESVNBQkxFX1RFTEVNRVRSWSIsIl9EWU5fQkFTRV9UWVBFIiwiX0RZTl9TQU1QTEVfUkFURSIsIl9EWU5fQ09OVkVSVF9VTkRFRklORUQiLCJfRFlOX19YSFJfUkVBRFlfU1RBVEVfQ0hBNiIsIl9EWU5fX09OX0VSUk9SIiwiX0RZTl9fT05fUEFSVElBTF9TVUNDRVNTIiwiX0RZTl9fT05fU1VDQ0VTUyIsIl9EWU5fSVRFTVNfQUNDRVBURUQiLCJfRFlOX0lURU1TX1JFQ0VJVkVEIiwiX0RZTl9JU19SRVRSWV9ESVNBQkxFRCIsIl9EWU5fU0VUX1JFUVVFU1RfSEVBREVSIiwiX0RZTl9NQVhfQkFUQ0hfSU5URVJWQUwiLCJfRFlOX0VWRU5UU19TRU5EX1JFUVVFU1QiLCJfRFlOX0RJU0FCTEVfSU5TVFJVTUVOVEFUNyIsIl9EWU5fR0VUX1NBTVBMSU5HX1NDT1JFIiwiX0RZTl9HRVRfSEFTSF9DT0RFX1NDT1JFIiwic3RyQmFzZVR5cGUiLCJzdHJCYXNlRGF0YSIsInN0clByb3BlcnRpZXMiLCJzdHJUcnVlIiwiX3NldFZhbHVlSWYiLCJfZXh0cmFjdFBhcnRBRXh0ZW5zaW9ucyIsImVudlRhZ3MiLCJpdG1FeHQiLCJpdG1UYWdzIiwiZXh0VXNlciIsImV4dEFwcCIsImV4dERldmljZSIsIndlYiIsImVudkRhdGEiLCJlbnZCYXNlRGF0YSIsImVudlByb3BzIiwiZXh0T3MiLCJleHRUcmFjZSIsInRncyIsInRoZVRhZ3MiLCJFbnZlbG9wZUNyZWF0b3IiLCJfZXh0cmFjdFByb3BzQW5kTWVhc3VyZW1lbnRzIiwiX2NvbnZlcnRQcm9wc1VuZGVmaW5lZFRvQ3VzdG9tRGVmaW5lZFZhbHVlIiwiY3VzdG9tVW5kZWZpbmVkVmFsdWUiLCJfY3JlYXRlRW52ZWxvcGUiLCJlbnZlbG9wZVR5cGUiLCJpS2V5Tm9EYXNoZXMiLCJFbnZlbG9wZUNyZWF0b3JJbml0IiwiRGVwZW5kZW5jeUVudmVsb3BlQ3JlYXRvciIsImN1c3RvbU1lYXN1cmVtZW50cyIsInJlbW90ZURlcERhdGEiLCJFdmVudEVudmVsb3BlQ3JlYXRvciIsImV2ZW50RGF0YSIsIkV4Y2VwdGlvbkVudmVsb3BlQ3JlYXRvciIsImV4RGF0YSIsIk1ldHJpY0VudmVsb3BlQ3JlYXRvciIsImJhc2VEYXRhIiwiYmFzZU1ldHJpY0RhdGEiLCJQYWdlVmlld0VudmVsb3BlQ3JlYXRvciIsImN1cnJlbnRDb250ZXh0SWQiLCJwYWdlVGFncyIsInBhZ2VWaWV3RGF0YSIsIlBhZ2VWaWV3UGVyZm9ybWFuY2VFbnZlbG9wZUNyZWF0b3IiLCJUcmFjZUVudmVsb3BlQ3JlYXRvciIsIl9kaXNhYmxlRXZlbnRzIiwiY3JlYXRlT2ZmbGluZUxpc3RlbmVyIiwicGFyZW50RXZ0TmFtZXNwYWNlIiwiX2lzTGlzdGVuaW5nIiwiX29ubGluZVN0YXR1cyIsIl9lbmFibGVFdmVudHMiLCJfc2V0T25saW5lIiwiX3NldE9mZmxpbmUiLCJfaXNPbmxpbmUiLCJfdW5sb2FkIiwiQmFzZVNlbmRCdWZmZXIiLCJfYnVmZmVyIiwiX2J1ZmZlckZ1bGxNZXNzYWdlU2VudCIsImJ1ZmZlciIsInBheWxvYWQiLCJBcnJheVNlbmRCdWZmZXIiLCJTZXNzaW9uU3RvcmFnZVNlbmRCdWZmZXIiLCJidWZmZXJJdGVtcyIsIl9nZXRCdWZmZXIiLCJub3REZWxpdmVyZWRJdGVtcyIsIl9zZXRCdWZmZXIiLCJfcmVtb3ZlUGF5bG9hZHNGcm9tQnVmZmVyIiwic2VudEVsZW1lbnRzIiwicGF5bG9hZHMiLCJyZW1haW5pbmciLCJwcmVmaXhlZEtleSIsImJ1ZmZlckpzb24iLCJidWZmZXJfMSIsIlNlcmlhbGl6ZXIiLCJvdXRwdXQiLCJfc2VyaWFsaXplT2JqZWN0IiwiY2lyY3VsYXJSZWZlcmVuY2VDaGVjayIsIl9zZXJpYWxpemVTdHJpbmdNYXAiLCJfc2VyaWFsaXplQXJyYXkiLCJjb250cmFjdCIsImlzUmVxdWlyZWQiLCJpc0hpZGRlbiIsImlzUHJlc2VudCIsImlzT2JqIiwic291cmNlcyIsImV4cGVjdGVkVHlwZSIsIk1JTl9JTlBVVF9MRU5HVEgiLCJIYXNoQ29kZVNjb3JlR2VuZXJhdG9yIiwiU2FtcGxpbmdTY29yZUdlbmVyYXRvciIsImhhc2hDb2RlR2VuZXJhdG9yIiwiU2FtcGxlIiwic2FtcGxlUmF0ZSIsInNhbXBsaW5nUGVyY2VudGFnZSIsImlzU2FtcGxlZEluIiwiRmV0Y2hTeW5jUmVxdWVzdFNpemVMaW1pdEJ5dGVzIiwiX2dldFJlc3BvbnNlVGV4dCIsInhociIsIl9nZXREZWZhdWx0QXBwSW5zaWdodHNDaGFubmVsQ29uZmlnIiwiZGVmYXVsdEN1c3RvbUhlYWRlcnMiLCJFbnZlbG9wZVR5cGVDcmVhdG9yIiwiU2VuZGVyIiwiX2NvbnNlY3V0aXZlRXJyb3JzIiwiX3JldHJ5QXQiLCJfbGFzdFNlbmQiLCJfcGF1c2VkIiwiX3RpbWVvdXRIYW5kbGUiLCJfc2VyaWFsaXplciIsIl9zdGFtcF9zcGVjaWZpY19yZWRpcmVjdHMiLCJfaGVhZGVycyIsIl9zeW5jRmV0Y2hQYXlsb2FkIiwiX2ZhbGxiYWNrU2VuZGVyIiwiX3N5bmNVbmxvYWRTZW5kZXIiLCJfb2ZmbGluZUxpc3RlbmVyIiwiX2NsZWFyU2NoZWR1bGVkVGltZXIiLCJfc2V0dXBUaW1lciIsIl9kb1VubG9hZFNlbmQiLCJkaWFnTG9nIiwiZGVmYXVsdENvbmZpZyIsIl92YWxpZGF0ZUluc3RydW1lbnRhdGlvbktleSIsImN1c3RvbUhlYWRlciIsInNlbmRlckNvbmZpZyIsInNlbmRQb3N0RnVuYyIsIl94ZHJTZW5kZXIiLCJfeGhyU2VuZGVyIiwiX2ZldGNoU2VuZGVyIiwiX2JlYWNvblNlbmRlciIsIl9mZXRjaEtlZXBBbGl2ZVNlbmRlciIsImRpYWdMb2dnZXIiLCJfaXNTYW1wbGVkSW4iLCJjb252ZXJ0VW5kZWZpbmVkIiwiZGVmYXVsdEVudmVsb3BlSWtleSIsImFpRW52ZWxvcGVfMSIsImRvTm90U2VuZEl0ZW1fMSIsImJ1ZmZlclNpemUiLCJjb3VudE9mSXRlbXNJblBheWxvYWQiLCJfY2hlY2tSZXNwb25zU3RhdHVzIiwiX2Zvcm1hdEVycm9yTWVzc2FnZVhociIsImZvcmNlZFNlbmRlciIsIl9ub3RpZnlTZW5kUmVxdWVzdCIsImllVmVyIiwiZmFpbGVkIiwiZXJyb3JzIiwiZXJyb3JzXzEiLCJleHRyYWN0ZWQiLCJfaXNSZXRyaWFibGUiLCJfcmVzZW5kUGF5bG9hZCIsInhkciIsInJlc3BvbnNlVGV4dCIsIl9wYXJzZVJlc3BvbnNlIiwiX2Zvcm1hdEVycm9yTWVzc2FnZVhkciIsInJlc3BvbnNlVXJsIiwiX2NoZWNrQW5kVXBkYXRlRW5kUG9pbnRVcmwiLCJvZmZsaW5lQmFja09mZk11bHRpcGxpZXIiLCJfZG9CZWFjb25TZW5kIiwicGxhaW5UZXh0QmF0Y2giLCJxdWV1ZWQiLCJkcm9wcGVkUGF5bG9hZCIsInRoZVBheWxvYWQiLCJlbmRQb2ludFVybCIsImhlYWRlck5hbWUiLCJwYXlsb2FkU2l6ZSIsIl9kb0ZldGNoU2VuZGVyIiwicmVxdWVzdEhlYWRlcnMiLCJiYXRjaExlbmd0aCIsImlnbm9yZVJlc3BvbnNlIiwicmVzcG9uc2VIYW5kbGVkIiwibGluZWFyRmFjdG9yIiwicGF5bG9hZF8xIiwiX3NldFJldHJ5VGltZSIsIlNsb3REZWxheUluU2Vjb25kcyIsImRlbGF5SW5TZWNvbmRzIiwiYmFja09mZlNsb3QiLCJiYWNrT2ZmRGVsYXkiLCJyZXRyeUFmdGVyVGltZVNwYW4iLCJyZXRyeUludGVydmFsIiwidGltZXJWYWx1ZSIsInN0YXR1c0NvZGUiLCJob3N0aW5nUHJvdG9jb2wiLCJfZ2V0Tm90aWZ5TWdyIiwic2VuZFJlcXVlc3QiLCJkaXNhYmxlSUtleVZhbGlkYXRpb25GbGFnIiwiVVVJRF9SZWdleCIsInJlZ2V4cCIsIm9yaWciLCJjcmVhdG9yIiwiU1RSX1BST1BFUlRJRVMiLCJfRFlOX1JFUVVFU1RfVVJMIiwiX0RZTl9JTlNUIiwiX0RZTl9DT05URVhUIiwiX0RZTl9UUkFDRV9JRDAiLCJfRFlOX1NQQU5fSUQxIiwiX0RZTl9JTkNMVURFX0NPUlJFTEFUSU9OXzIiLCJfRFlOX0NBTl9JTkNMVURFX0NPUlJFTEFUMyIsIl9EWU5fR0VUX0FCU09MVVRFX1VSTCIsIl9EWU5fSEVBREVSUyIsIl9EWU5fUkVRVUVTVF9IRUFERVJTIiwiX0RZTl9BUFBfSUQiLCJfRFlOX1RSQUNLX0RFUEVOREVOQ1lfREFUNCIsIl9EWU5fRElTVFJJQlVURURfVFJBQ0lOR181IiwiX0RZTl9TVEFSVF9USU1FIiwiX0RZTl9FTkFCTEVfUkVRVUVTVF9IRUFERTYiLCJfRFlOX0VOQUJMRV9BSkFYX0VSUk9SX1NUNyIsIl9EWU5fRU5BQkxFX0FKQVhfUEVSRl9UUkE4IiwiX0RZTl9NQVhfQUpBWF9DQUxMU19QRVJfVjkiLCJfRFlOX0VOQUJMRV9SRVNQT05TRV9IRUFEMTAiLCJfRFlOX0VYQ0xVREVfUkVRVUVTVF9GUk9NMTEiLCJfRFlOX0FERF9SRVFVRVNUX0NPTlRFWFQiLCJfRFlOX0RJU0FCTEVfQUpBWF9UUkFDS0lOMTIiLCJfRFlOX0RJU0FCTEVfRkVUQ0hfVFJBQ0tJMTMiLCJfRFlOX1NUQVRVUyIsIl9EWU5fU1RBVFVTX1RFWFQiLCJfRFlOX0hFQURFUl9NQVAiLCJfRFlOX09QRU5fRE9ORSIsIl9EWU5fU0VORF9ET05FIiwiX0RZTl9SRVFVRVNUX1NFTlRfVElNRSIsIl9EWU5fQUJPUlRfRE9ORSIsIl9EWU5fR0VUX1RSQUNFX0lEIiwiX0RZTl9HRVRfVFJBQ0VfRkxBR1MiLCJfRFlOX0VSUk9SX1NUQVRVU19URVhUIiwiX0RZTl9TVEFURV9DSEFOR0VfQVRUQUNIRTE0IiwiX0RZTl9SRVNQT05TRV9URVhUIiwiX0RZTl9SRVNQT05TRV9GSU5JU0hFRF9USTE1IiwiX0RZTl9fQ1JFQVRFX1RSQUNLX0lURU0iLCJfRFlOX1JFU1BPTlNFIiwiX0RZTl9HRVRfQUxMX1JFU1BPTlNFX0hFQTE2IiwiX0RZTl9HRVRfUEFSVF9BUFJPUFMiLCJfRFlOX0dFVF9DT1JSRUxBVElPTl9DT05UMTciLCJfRFlOX1BFUkZfTUFSSyIsIl9EWU5fQUpBWF9QRVJGX0xPT0tVUF9ERUwxOCIsIl9EWU5fUEVSRl9USU1JTkciLCJfRFlOX0FKQVhfRElBR05PU1RJQ1NfTUVTMTkiLCJfRFlOX0NPUlJFTEFUSU9OX0NPTlRFWFQiLCJfRFlOX0FKQVhfVE9UQUxfRFVSQVRJT04iLCJfRFlOX0VWRU5UX1RSQUNFX0NUWCIsIl9jYWxjUGVyZkR1cmF0aW9uIiwicmVzb3VyY2VFbnRyeSIsIl9zZXRQZXJmRHVyYXRpb24iLCJfc2V0UGVyZlZhbHVlIiwic3RyUGVyZiIsInBlcmZEYXRhIiwiX3BvcHVsYXRlUGVyZkRhdGEiLCJhamF4RGF0YSIsImRlcGVuZGVuY3kiLCJwcm9wc1NldCIsInN0ck5hbWUiLCJzdHJTdGFydCIsInN0ckVuZCIsInN0ckRvbWFpbkxvb2t1cCIsInN0ckNvbm5lY3QiLCJzdHJSZWRpcmVjdCIsInN0clJlcXVlc3QiLCJzdHJSZXNwb25zZSIsInN0clN0YXJ0VGltZSIsInN0ckRvbWFpbkxvb2t1cFN0YXJ0Iiwic3RyRG9tYWluTG9va3VwRW5kIiwic3RyQ29ubmVjdFN0YXJ0Iiwic3RyQ29ubmVjdEVuZCIsInN0clJlcXVlc3RTdGFydCIsInN0clJlcXVlc3RFbmQiLCJzdHJSZXNwb25zZVN0YXJ0Iiwic3RyUmVzcG9uc2VFbmQiLCJzdHJSZWRpcmVjdFN0YXJ0Iiwic3RyUmVkaXJlY3RFbmQiLCJzdHJUcmFuc2ZlclNpemUiLCJzdHJFbmNvZGVkQm9keVNpemUiLCJzdHJEZWNvZGVkQm9keVNpemUiLCJzdHJTZXJ2ZXJUaW1pbmciLCJzZXJ2ZXJUaW1pbmciLCJzZXJ2ZXJfMSIsIlhIUk1vbml0b3JpbmdTdGF0ZSIsImFqYXhSZWNvcmQiLCJzdHJSZXNwb25zZVRleHQiLCJhamF4VHlwZSIsImVuYWJsZVJlcXVlc3RIZWFkZXJUcmFja2luZyIsImdldFJlc3BvbnNlIiwicmVzcG9uc2VUeXBlIiwicGFydEEiLCJ0cmFjZUV4dCIsIkFKQVhfTU9OSVRPUl9QUkVGSVgiLCJzdHJEaWFnTG9nIiwic3RyQWpheERhdGEiLCJzdHJGZXRjaCIsIkVSUk9SX0hFQURFUiIsIkVSUk9SX1BSRUZJWCIsIkVSUk9SX1BPU1RGSVgiLCJFUlJPUl9OT1RfU0VOVCIsIkNPUlJFTEFUSU9OX0hFQURFUl9FUlJPUiIsIkNVU1RPTV9SRVFVRVNUX0NPTlRFWFRfRVJST1IiLCJGQUlMRURfVE9fQ0FMQ1VMQVRFX0RVUkFUSU9OX0VSUk9SIiwiX21hcmtDb3VudCIsIl9zdXBwb3J0c0ZldGNoIiwic3RyUHJvdG90eXBlIiwiX3N1cHBvcnRzQWpheE1vbml0b3JpbmciLCJhamF4TW9uaXRvckluc3RhbmNlIiwidGhlT3BlbiIsIl90aHJvd0ludGVybmFsQ3JpdGljYWwiLCJfZ2V0RmFpbGVkQWpheERpYWdub3N0aWNzTWVzc2FnZSIsIl90aHJvd0ludGVybmFsV2FybmluZyIsIl9jcmVhdGVFcnJvckNhbGxiYWNrRnVuYyIsImludGVybmFsTWVzc2FnZSIsIl9pbmRleE9mIiwidGhlSGFuZGxlciIsIl9wcm9jZXNzRGVwZW5kZW5jeUNvbnRhaW5lciIsIl9wcm9jZXNzRGVwZW5kZW5jeUxpc3RlbmVycyIsImluaXRpYWxpemVyc0NvdW50IiwiQkxPQl9DT1JFIiwiRGZsdEFqYXhDb3JyZWxhdGlvbkhlYWRlckV4RG9tYWlucyIsIl9pbnRlcm5hbEV4Y2x1ZGVFbmRwb2ludHMiLCJfZ2V0RW1wdHlDb25maWciLCJlbXB0eUNvbmZpZyIsIkFqYXhNb25pdG9yIiwiX2ZldGNoSW5pdGlhbGl6ZWQiLCJfeGhySW5pdGlhbGl6ZWQiLCJfY3VycmVudFdpbmRvd0hvc3QiLCJfZW5hYmxlUmVxdWVzdEhlYWRlclRyYWNraW5nIiwiX2VuYWJsZUFqYXhFcnJvclN0YXR1c1RleHQiLCJfdHJhY2tBamF4QXR0ZW1wdHMiLCJfY29udGV4dCIsIl9pc1VzaW5nVzNDSGVhZGVycyIsIl9pc1VzaW5nQUlIZWFkZXJzIiwiX21hcmtQcmVmaXgiLCJfZW5hYmxlQWpheFBlcmZUcmFja2luZyIsIl9tYXhBamF4Q2FsbHNQZXJWaWV3IiwiX2VuYWJsZVJlc3BvbnNlSGVhZGVyVHJhY2tpbmciLCJfZGlzYWJsZWRVcmxzIiwiX2Rpc2FibGVBamF4VHJhY2tpbmciLCJfZGlzYWJsZUZldGNoVHJhY2tpbmciLCJfZXhjbHVkZVJlcXVlc3RGcm9tQXV0b1RyYWNraW5nUGF0dGVybnMiLCJfYWRkUmVxdWVzdENvbnRleHQiLCJfZGVwZW5kZW5jeUhhbmRsZXJJZCIsIl9kZXBlbmRlbmN5TGlzdGVuZXJzIiwiX2RlcGVuZGVuY3lJbml0aWFsaXplcnMiLCJfaW5zdHJ1bWVudFhociIsIl9pbnN0cnVtZW50RmV0Y2giLCJfcG9wdWxhdGVDb250ZXh0IiwiX3JlcG9ydERlcGVuZGVuY3lJbnRlcm5hbCIsImN1cnJlbnRXaW5kb3dIb3N0IiwiaGVhZGVycyIsImFwcElkIiwidHJhY2VGbGFncyIsInRyYWNlUGFyZW50IiwiZGVwZW5kZW5jeUxpc3RlbmVyIiwiZGVwZW5kZW5jeUluaXRpYWxpemVyIiwiZGlzdHJpYnV0ZWRUcmFjaW5nTW9kZSIsInByb3BFeHQiLCJfY2FuSW5jbHVkZUhlYWRlcnMiLCJoZWFkZXIiLCJybHQiLCJmZXRjaCIsImdsb2JhbCIsImlzUG9seWZpbGwiLCJmZXRjaERhdGEiLCJfaXNEaXNhYmxlZFJlcXVlc3QiLCJfY3JlYXRlRmV0Y2hSZWNvcmQiLCJuZXdJbml0IiwiZmV0Y2hEYXRhXzEiLCJfcmVwb3J0RmV0Y2hNZXRyaWNzIiwiYWpheFJlc3BvbnNlIiwiX2dldEZldGNoQ29ycmVsYXRpb25Db250ZXh0IiwicmVzcG9uc2VIZWFkZXJNYXBfMSIsIl9ob29rUHJvdG8iLCJfaXNNb25pdG9yZWRYaHJJbnN0YW5jZSIsIl9vcGVuSGFuZGxlciIsIl9hdHRhY2hUb09uUmVhZHlTdGF0ZUNoYW5nZSIsIl9jcmVhdGVNYXJrSWQiLCJpc0Rpc2FibGVkIiwidGhlVXJsIiwidGhlUmVnZXgiLCJpZHgyIiwiZXhjbHVkZUFqYXhEYXRhVmFsaWRhdGlvbiIsImFqYXhWYWxpZGF0aW9uIiwiaW5pdGlhbGl6ZWQiLCJ0cmFjZUlEIiwic3BhbklEIiwiX29uQWpheENvbXBsZXRlIiwiZXhjZXB0aW9uVGV4dCIsIl9yZXBvcnRYaHJFcnJvciIsImZhaWxlZFByb3BzIiwiZXJyb3JQcm9wcyIsIl9maW5kUGVyZlJlc291cmNlRW50cnkiLCJfZ2V0QWpheENvcnJlbGF0aW9uQ29udGV4dCIsInJlc3BvbnNlSGVhZGVyTWFwXzIiLCJzeXNQcm9wZXJ0aWVzIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicGVyZm9ybWFuY2VfMSIsIm1hcmtJZCIsImluaXRpYXRvclR5cGUiLCJ0cmFja0NhbGxiYWNrIiwicmVwb3J0RXJyb3IiLCJwZXJmTWFyayIsInBlcmZvcm1hbmNlIiwibWF4QXR0ZW1wdHMiLCJyZXRyeURlbGF5IiwiYXR0ZW1wdCIsImxvY2F0ZVJlc291cmNlVGltaW5nIiwicGVyZlRpbWluZyIsIl9nZXRGYWlsZWRGZXRjaERpYWdub3N0aWNzTWVzc2FnZSIsIl9yZXBvcnRGZXRjaEVycm9yIiwiaW5pdGlhbGl6ZXJzIiwiQXBwbGljYXRpb24iLCJEZXZpY2UiLCJfRFlOX1NFU1NJT05fTUFOQUdFUiIsIl9EWU5fSVNfVVNFUl9DT09LSUVfU0VUIiwiX0RZTl9JU19ORVdfVVNFUiIsIl9EWU5fR0VUX1RSQUNFX0NUWCIsIl9EWU5fVEVMRU1FVFJZX1RSQUNFIiwiX0RZTl9BUFBMWV9TRVNTSU9OX0NPTlRFWDAiLCJfRFlOX0FQUExZX0FQUExJQ0FUSU9OX0NPMSIsIl9EWU5fQVBQTFlfREVWSUNFX0NPTlRFWFQiLCJfRFlOX0FQUExZX09QRVJBVElPTl9DT05UMiIsIl9EWU5fQVBQTFlfVVNFUl9DT05URVhUIiwiX0RZTl9BUFBMWV9PUEVSQVRJTkdfU1lTVDMiLCJfRFlOX0FQUExZX0xPQ0FUSU9OX0NPTlRFNCIsIl9EWU5fQVBQTFlfSU5URVJOQUxfQ09OVEU1IiwiX0RZTl9BQ0NPVU5UX0lEIiwiX0RZTl9TREtfRVhURU5TSU9OIiwiX0RZTl9HRVRfU0VTU0lPTl9JRCIsIl9EWU5fU0VTU0lPTl9DT09LSUVfUE9TVEY2IiwiX0RZTl9VU0VSX0NPT0tJRV9QT1NURklYIiwiX0RZTl9JRF9MRU5HVEgiLCJfRFlOX0dFVF9ORVdfSUQiLCJfRFlOX0FVVE9NQVRJQ19TRVNTSU9OIiwiX0RZTl9BVVRIRU5USUNBVEVEX0lEIiwiX0RZTl9TRVNTSU9OX0VYUElSQVRJT05fTTciLCJfRFlOX1NFU1NJT05fUkVORVdBTF9NUyIsIl9EWU5fQUNRVUlTSVRJT05fREFURSIsIl9EWU5fUkVORVdBTF9EQVRFIiwiX0RZTl9DT09LSUVfRE9NQUlOIiwiX0RZTl9KT0lOIiwiX0RZTl9DT09LSUVfU0VQQVJBVE9SIiwiX0RZTl9BVVRIX1VTRVJfQ09PS0lFX05BTTgiLCJWZXJzaW9uIiwiSW50ZXJuYWwiLCJMb2NhdGlvbiIsImNvb2tpZU5hbWVDb25zdCIsIlNlc3Npb24iLCJfU2Vzc2lvbk1hbmFnZXIiLCJfc3RvcmFnZU5hbWVQcmVmaXgiLCJfY29va2llVXBkYXRlZFRpbWVzdGFtcCIsInNlc3Npb25Db29raWVQb3N0Zml4IiwiaXNFeHBpcmVkIiwic2Vzc2lvbiIsIl9pbml0aWFsaXplQXV0b21hdGljU2Vzc2lvbiIsInNlc3Npb25FeHBpcmF0aW9uTXMiLCJzZXNzaW9uUmVuZXdhbE1zIiwidGltZVNpbmNlQWNxTXMiLCJ0aW1lU2luY2VSZW5ld2FsTXMiLCJfcmVuZXciLCJfc2V0Q29va2llIiwiX3NldFN0b3JhZ2UiLCJpc1ZhbGlkIiwiX2luaXRpYWxpemVBdXRvbWF0aWNTZXNzaW9uV2l0aERhdGEiLCJzdG9yYWdlVmFsdWUiLCJzZXNzaW9uRGF0YSIsInNlc3Npb25SZXNldCIsImFjcU1zIiwicmVuZXdhbE1zIiwiZ2V0TmV3SWQiLCJhY3EiLCJyZW5ld2FsUGVyaW9kTXMiLCJhY3FUaW1lTGVmdE1zIiwiY29va2llIiwiY29va2llRG9tYWluIiwiZ3VpZCIsInJlbmV3YWwiLCJUZWxlbWV0cnlUcmFjZSIsInBhcmVudElkIiwiX3ZhbGlkYXRlVXNlcklucHV0IiwiVXNlciIsInVzZXJDb29raWVQb3N0Zml4IiwiX2dlbmVyYXRlTmV3SWQiLCJfZ2VuZXJhdGVOZXdDb29raWUiLCJhY3FTdHIiLCJuZXdDb29raWUiLCJfc2V0VXNlckNvb2tpZSIsIm9uZVllYXIiLCJhdXRoQ29va2llIiwiYXV0aENvb2tpZVN0cmluZyIsImF1dGhlbnRpY2F0ZWRVc2VySWQiLCJzdG9yZUluQ29va2llIiwiaXNJbnZhbGlkSW5wdXQiLCJ1c2VyX2lkIiwidXNlcl9jb29raWUiLCJzdHJFeHQiLCJzdHJUYWdzIiwiX3JlbW92ZUVtcHR5IiwiVGVsZW1ldHJ5Q29udGV4dCIsInByZXZpb3VzVHJhY2VDdHgiLCJzZXNJZCIsImF1dG9TZXNzaW9uIiwiYXBwbGljYXRpb24iLCJ0YWdzIiwiZGV2aWNlIiwiaW50ZXJuYWwiLCJ1c2VyIiwiUHJvcGVydGllc1BsdWdpbiIsIl9leHRlbnNpb25Db25maWciLCJfZGlzdHJpYnV0ZWRUcmFjZUN0eCIsIl9wcmV2aW91c1RyYWNlQ3R4IiwidGhlQ29udGV4dCIsInVzZXJDdHgiLCJfcHJvY2Vzc1RlbGVtZXRyeUludGVybmFsIiwiYnJlZXplQ2hhbm5lbCIsIm51bGxWYWx1ZSIsIlByb3BlcnRpZXNQbHVnaW4kMSIsIl9BVVRIRU5USUNBVEVEX1VTRVJfQ09OVEVYVCIsIl9UUkFDSyIsIlNUUl9TTklQUEVUIiwiU1RSX0dFVF9DT09LSUVfTUdSIiwiU1RSX1NUQVJUX1RSQUNLX1BBR0UiLCJTVFJfU1RPUF9UUkFDS19QQUdFIiwiU1RSX0ZMVVNIIiwiU1RSX1NUQVJUX1RSQUNLX0VWRU5UIiwiU1RSX1NUT1BfVFJBQ0tfRVZFTlQiLCJTVFJfQUREX1RFTEVNRVRSWV9JTklUSUFMSVpFUiIsIlNUUl9QT0xMX0lOVEVSTkFMX0xPR1MiLCJTVFJfR0VUX1BMVUdJTiIsIlNUUl9FVlRfTkFNRVNQQUNFIiwiU1RSX1RSQUNLX0VWRU5UIiwiU1RSX1RSQUNLX1RSQUNFIiwiU1RSX1RSQUNLX01FVFJJQyIsIlNUUl9UUkFDS19QQUdFX1ZJRVciLCJTVFJfVFJBQ0tfRVhDRVBUSU9OIiwiU1RSX1RSQUNLX0RFUEVOREVOQ1lfREFUQSIsIlNUUl9TRVRfQVVUSEVOVElDQVRFRF9VU0VSX0NPTlRFWFQiLCJTVFJfQ0xFQVJfQVVUSEVOVElDQVRFRF9VU0VSX0NPTlRFWFQiLCJfRFlOX1VQREFURV9TTklQUEVUX0RFRklOMCIsIl9EWU5fTE9BRF9BUFBfSU5TSUdIVFMiLCJfRFlOX0RJQUdOT1NUSUNfTE9HX0lOVEVSNCIsIl9EWU5fRElTQUJMRV9GTFVTSF9PTl9CRUYxMSIsIl9EWU5fRElTQUJMRV9GTFVTSF9PTl9VTkwxMiIsIl9EWU5fUVVFVUUiLCJfRFlOX0NPTk5FQ1RJT05fU1RSSU5HIiwiX0RZTl9BUFBfSU5TSUdIVFMiLCJfRFlOX0RJU0FCTEVfSUtFWV9ERVBSRUNBMTgiLCJfRFlOX0dFVF9UUkFOU01JU1NJT05fQ09OMTkiLCJfRFlOX09OVU5MT0FEX0ZMVVNIIiwiX0RZTl9BRERfSE9VU0VLRUVQSU5HX0JFRjIwIiwiX2ludGVybmFsU2RrU3JjIiwiX2lnbm9yZVVwZGF0ZVNuaXBwZXRQcm9wZXJ0aWVzIiwiSW5pdGlhbGl6YXRpb24iLCJzbmlwcGV0IiwiZGVwZW5kZW5jaWVzIiwiX3NlbmRlciIsIl9zbmlwcGV0VmVyc2lvbiIsIl9ob3VzZUtlZXBpbmdOYW1lc3BhY2UiLCJfY29yZSIsImNzIiwiaW5nZXN0IiwiRGVwZW5kZW5jaWVzUGx1Z2luIiwiaXNFcnJNZXNzYWdlRGlzYWJsZWQiLCJfZ2V0U0tVRGVmYXVsdHMiLCJsZWdhY3lNb2RlIiwiX3VwZGF0ZVNuaXBwZXRQcm9wZXJ0aWVzIiwic25pcHBldFZlciIsImxlbmd0aF8xIiwiY2FsbCIsImFwcEluc2lnaHRzSW5zdGFuY2UiLCJwZXJmb3JtSG91c2VrZWVwaW5nIiwibG9hZGVkUGx1Z2luIiwicHJvcGVydGllc1BsdWdpbiIsImV4Y2x1ZGVQYWdlVW5sb2FkRXZlbnRzIiwiX2dldEN1cnJlbnREZXBlbmRlbmNpZXMiLCJzZGtTcmMiLCJpc01vZHVsZSIsImNkbnMiLCJzY3JwdCIsImdldEluaXRpYWxVc2VyTWV0YWRhdGEiLCJjdXJyZW50VXJsUGF0aCIsImN1cnJlbnRVcmxRdWVyeSIsIkFwcGxpY2F0aW9uSW5zaWdodHMiLCJyb290UmVkdWNlciIsInByb2R1Y2UiLCJkcmFmdFN0YXRlIiwiUmVhY3RET00iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0dBU2EsSUFBSUEsR0FBRSxPQUFPLElBQUksZUFBZSxFQUFFQyxHQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUVDLEdBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFFQyxHQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRUMsR0FBRSxPQUFPLElBQUksZ0JBQWdCLEVBQUVDLEdBQUUsT0FBTyxJQUFJLGdCQUFnQixFQUFFQyxHQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUVDLEdBQUUsT0FBTyxJQUFJLG1CQUFtQixFQUFFQyxHQUFFLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRUMsR0FBRSxPQUFPLElBQUksWUFBWSxFQUFFQyxHQUFFLE9BQU8sSUFBSSxZQUFZLEVBQUVDLEdBQUUsT0FBTyxTQUFT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VUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxrQ0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSx1RUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxzREFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxxRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSx5Q0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSwyRkFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSwwRkFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxtRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxnRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFDSSxrSEFDSixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxnRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksc0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxrQ0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSw4REFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxzRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxzQ0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxnR0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSw0Q0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxvREFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSw0RUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxxQ0FDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxpRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0QsR0FBa0IsVUFDN0IsV0FBWUUsR0FBd0IsSUFDeEMsRUFDQSxDQUNJLFdBQVksd0NBQ1oseUJBQTBCLHVDQUMxQiwrQkFBZ0NELEdBQWMsU0FDOUMsWUFBYSxtRUFDYixVQUFXLDJCQUNYLFdBQVksMkJBQ1osVUFBV0Qs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Q1gsV0FBWUMsR0FBMkIsUUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFNBQVMsVUFDbkQsMkJBQTRCbWhGLEdBQW1DLE1BQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsUUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFVBQVUsVUFDcEQsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsUUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFVBQVUsVUFDcEQsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsT0FDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFlBQVksVUFDdEQsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsUUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFlBQVksVUFDdEQsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsT0FDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLEtBQUssVUFDL0MsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsTUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLEtBQUssVUFDL0MsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsT0FDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFVBQVUsVUFDcEQsMkJBQTRCbWhGLEdBQW1DLFVBQy9ELFVBQVcsMkJBQ1gsV0FBWUMsR0FBMkIsTUFDM0MsRUFDQSxDQUNJLGlCQUFrQix1Q0FDbEIseUJBQTBCcGhGLEdBQWdCLFVBQVUsVUFDcEQsMkJBQTRCbWhGLEdB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LFlBQStDLEVBRW5ENC9CLEdBQUssT0FDQS9pQyxFQUFBMUMsR0FBQSxDQUFTLE1BQUExQixHQUNOLFNBQUFvRSxFQUFDOUUsR0FBTSxXQUFOLENBQ0csU0FBQzhFLEVBQUEzSCxHQUFBLENBQWMsT0FDWCxTQUFBMkgsRUFBQ3VsRyxHQUFJLEVBQUEsQ0FBQSxDQUNULENBQ0osQ0FBQSxFQUNKLENBQ0oiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCw1NSw1Niw1Nyw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxMjcsMTI4LDEyOSwxMzAsMTMxLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDksMzEwLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCw0ODEsNDgyLDQ4Myw0ODQsNDg1LDQ4Niw0ODcsNDg4LDQ4OSw0OTAsNDkxLDQ5Miw0OTMsNDk0LDQ5NSw0OTYsNDk3LDQ5OCw0OTksNTAwLDUwMSw1MDIsNTAzLDUwNCw1MDUsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTEyLDUxMyw1MTQsNTE1LDUxNiw1MTcsNTE4LDUxOSw1MjAsNTIxLDUyMiw1MjMsNTI0LDUyNSw1MjYsNTI3LDUyOCw1MjksNTMwLDUzMSw1MzIsNTMzLDUzNCw1MzUsNTM2LDUzNyw1MzgsNTM5LDU0MCw1NDEsNTQyLDU0Myw1NDQsNTQ1LDU0Niw1NDcsNTQ4LDU0OSw1NTAsNTUxLDU1Miw1NTMsNTU0LDU1NSw1NTYsNTU3LDU1OCw1NTksNTYwLDU2MSw1NjIsNTYzLDU2NCw1NjUsNTY2LDU2Nyw1NjhdfQ==